In the Computational Storage community there’s a difference of opinion about how much computing power belongs inside of an SSD. The Micron example used the hardware that the SSD already contained. SSDs from NGD and ScaleFlux use more powerful processors and boost the available DRAM...A completely opposite school of thought was expressed at SDC by Alibaba, CNEX, and Western Digital. These companies argued that the processing normally done in an SSD might be better managed by the host server’s CPU. There’s validity to this argument as well.
SSD housekeeping functions are performed asynchronously to the server’s application program, and this can create troublesome conflicts. An SSD that encounters too much write traffic might enter
a garbage collection process that cannot be interrupted at a time when the host requires immediate access...A lot of thought has been dedicated to addressing this problem, including the Trim Command, which helps the host to manage obsolete blocks, and other controls that can be used to disallow garbage collection at specific times.
Baidu did some groundbreaking work in moving control of a number of basic SSD functions outside of the drive to allow application programs to control exactly when an SSD would perform its housekeeping. This lets the application program determine the least painful time to perform such functions. This only works in systems where the hardware and software can be designed to complement each other, a luxury available to few entities other than hyperscale Internet firms.
Like the other approach, this one avails itself of the higher bandwidth within the SSD, but in a different way:
The application program can be crafted to better match the number of internal channels in the SSD. SSDs typically have multiple internal flash channels (4-32, for many, but some have more or fewer) and if the number of concurrent processes in the application program is made to match the number of SSD flash channels, and if each I/O stream in the application program is assigned its own flash channel in the SSD, the performance of the entire system will be optimized.
This approach is generally known as the OpenChannel SSD, and is favored by hyperscale companies, not only because they have the
ability to optimize their applications around specific hardware, but also because it reduces the cost of the SSD controller, and this is very important to companies that are deploying millions of new SSDs every year.
The Computational Storage approach also requires some change to the application software, but this will be supported by libraries supplied by the SSD manufacturers. The libraries provide calls that invoke the SSD’s help as an alternative to performing certain functions in the processor. This approach to streamlining the application is significantly simpler than dividing the application into multiple streams. While there’s no standard way to do this, leading advocates of Computational Storage have joined forces to create standards that will allow a hardware + software ecosystem to be developed for this new architecture. Even without this support, many eager buyers are already using these companies’ products and are willing to work with non-standard hardware to benefit from the competitive edge that they offer.