If you've been following this blog, you've probably noticed a lot of discussion and analysis around eMMC. We've written about the reasons we are so excited about eMMC, but also why the Write Amplification issues caused by eMMC parts are a problem that needs more attention by the industry.
As more and more device manufacturers use eMMC in their devices, product reviews are beginning to highlight some of the limitations of eMMC that we have been discussing. A case in point is this recent review of Google Nexus 7 by Anand Lal Shimpi and Brian Klurg.
As the review points out, the performance downside of using eMMC parts is that they are "optimized for reading and writing large images as if they were used in a camera." Also, eMMC was never designed to be used by a "full blown multitasking OS," and therefore can cause major problems with device responsiveness. This is mainly because multi-tasking (i.e. any other action performed while download is in progress) effectively "turns the IO stream from purely sequential to pseudo-random." This corroborates with our view that many eMMC parts are not equipped for optimal performance for random reads and writes.
So, how can device manufacturers get better performance from their eMMC parts, and continue to leverage the simplicity of programming and consistency of design parameters that eMMC offers?
Simplistically put, the eMMC driver is responsible for flash-aware allocation of data to flash memory. The combined layers of the driver and the file system, sometimes known as the flash file system, is the level at which hardware behavior can be translated to software behavior in a way that enhances performance without compromising the endurance and data integrity. Also, the complementary interaction between the driver and the file system layer can bring further benefits to the device performance, endurance and reliability. Getting this part of the system right goes a long way to solving eMMC's write amplification problem.
Here at Datalight, we have been researching the most efficient way of doing this, drawing on our decades of experience of developing driver and file system software for a wide array of flash parts. Stay tuned for more in-depth explanations on how we're doing it, but for now we are very excited about the early test results we're seeing in our lab, especially enhancements combining an optimized file system with our new eMMC driver.