> HDDs and SSDs are quite complex, and these days contain quite complex hardware which is even capable of running an entire operating system (by this, we mean that the drive itself is capable of running its own embedded OS), even GNU/Linux or BusyBox/Linux. Some proof of concepts have been demonstrated.
Thanks, fantastic talk. I never knew.
Well actually, not far off the complexity of an SSD: apparently SD cards even use wear levelling algorithms, and so forth, and some SD cards have ARM microcontrollers.
I have been involved with SSD development for many years. The thing is flash memory is no longer a near ideal memory device like RAM. You start to see a lot of the physics behind how the transistors behave and interact. The companies spend lots of time and money characterizing them and developing algorithms that are trade secrets. You may figure it out yourself but by that time that part is already EOL. And if you don't do it right your SSD will be unreliable.
Typing from phone so being brief for now. One time you could write NAND flash pages and have no read errors for months on end. No longer the case now. You need massive amounts of hardware error correction. You have to worry about adjacent cell interactions. You have to use signal processing to read degraded bits. Then there are weird eratta that will not be disclosed to you unless you have an NDA and beg to them. This is just a few things that come to mind but there are tons more.
A more actively-developed framework is LightNVM for Open-Channel SSDs. The kernel bits have been upstreamed into mainline kernel as well:
http://lightnvm.io/
I met the project architects at a conference earlier this year, and they are on the right track IMO. If only more vendors would support the notion of open-channel SSDs which allow for custom FTLs from outside the device.
Also, per the LightNVM supported hardware list:
"Other platform such as OpenSSD Jasmine and OpenSSD Cosmos are able to support LightNVM. However, there are no compatible firmwares yet."
This has been around for a couple of years and the wiki is kind of dead, as seems to be most of the project looking at the activity around it? This probably warrants a (2011) update to the title as it seems that's when this project was truly active.
The price is equivalent to about $2000 USD, though, and the controller is completely obsolete nowadays. (I'd be surprised if the Barefoot controller is still in production; it's SATA2 only, and OCZ - parent company of Indilinx - went bankrupt in 2014.)
I'm not sure how public this is, but there were many more Barefoot controllers made and tested and a number of the later-generation OCZ drives were based on a much newer Barefoot-based controller.
I think the later Barefoot controllers were public enough, with the two different speed grades of Barefoot 3 being used in the OCZ Arc 100 and Vector 180 (which still exists as the VT180): http://www.anandtech.com/show/9009/ocz-vector-180-240gb-480g...
But it's a dead end and last I heard Toshiba doesn't plan on doing another revision of the silicon to update it with anything like support for SATA link power saving modes.
> HDDs and SSDs are quite complex, and these days contain quite complex hardware which is even capable of running an entire operating system (by this, we mean that the drive itself is capable of running its own embedded OS), even GNU/Linux or BusyBox/Linux. Some proof of concepts have been demonstrated.
> For HDDs: https://spritesmods.com/?art=hddhack&page=1
> For SSDs: http://www.bunniestudios.com/blog/?p=3554