Idle Time Garbage Collection and Firmware Updates
Idle Time Garbage Collection
<img src="http://images.hardwarecanucks.com/image/akg/Storage/P64/cleaner.jpg" border="0" alt="" />
So what is this Idle Time Garbage Collection we have been hearing about? It is a new technology that was added with much fanfare to firmware 18C1 of Samsung’s latest SSD controller and thus by extension the Corsair P line. What exactly ITGC does and how it does it is actually not totally known and is considered a trade secret. However we can give a good broad overview of what it does.
To be breif, what ITGC does is automatically restore previously used (but now containing invalid data) blocks back to an empty state. To put it even more simply, when the drive “gets bored” it goes through its tables, looks for data which is no longer valid (i.e. marked by the OS for deletion) and then does a preemptive erase on them. Given enough time it will clean ALL the used blocks back to a squeaky clean'ish “virgin state”. The key to understanding why ITGC is needed let alone a big deal is actually fairly simple yet three fold:
1) Wear leveling technology built into ALL SSDs means that data is written across the entire drive but
2) While an SSD reads and writes at the cell level, and while these cells arranged into 4KB pages of data, the drive can only erase an entire block of pages at a time (i.e. 512KB of data!)
3) When you run out of "free" blocks your speeds go down the shitter.
Caution! Technical jargon ahead!
Here is what's really going on behind the scenes: When even one page of data in a given block is marked as deleted by the OS (i.e. becomes invalid), and since a TRIM command cannot yet be initiated, this invalid data hangs around and the controller ignores the entire block of cells it is located in and moves unto other free and unused blocks. This is all well and fine while the drive is new and has free unused blocks to waste, but over time the drive runs out of free blocks. It is only when the controller runs out of free blocks that things get slow, as it has to do a garbage collection in real time and free up blocks before the new writes can happen.
When the SSD runs out of free blocks and a new write is initiated, an entire block of data which has invalid data pages in it has to be first read into memory, then the block erased along with the the old valid data and the new data rewritten to the entire block (the invalid is thrown away via a lookup on all the data to see what is valid and invalid). This is a LOT slower than a normal write and this situation is what is called a “used state” condition. This used state is something which should be avoided at all costs as it will turn your speedy SSD in an embarrassingly slow brick. Luckily, programs like wiper.exe and the Idle Time Garbage Collection feature go a long way in taking care of these issues.
Since Samsung didn’t have a wiper.exe program they thought up this data consolidation and invalid data cell re-freshener as a stop gap measure. It runs automatically whenever it senses an extended idle period or to put it another way they took the emergency “OH MY GOD WE HAVE NO FREE BLOCKS LEFT….MAKE SOME RIGHT NOW!!” procedure and got it to run when ever the drive is idle.
At this point I am sure you are asking “OK, that sounds good but what does it DO!?” Basically, during idle / low IO times it reclaims invalid data blocks BEFORE the drive runs out. When your SSD is idling it does a lookup in its mapping table for any data which has been marked as “invalid” and it then copies the good data in that block into memory. Then it does a preemptive erase and then via its wear leveling algorithms finds an empty block of cells with the lowest wear on them (which is also free and available) and writes the data to it. Rinse and repeat for as long as the idle time lasts and what you end up with is a drive with no invalid blocks…in theory.
In reality some tests have shown that a full recovery of speed is not going to happen. The really interesting thing is this happens at the device level and not the OS level so in theory it should work on RAID’ed and even non Windows formatted drives; however some people not running a Windows OS have reported it "not working" and it is speculated that this works (as of now) on NTFS formatted drives only. This is only speculation as unless your drive is slow to begin with you probably won’t notice any difference.
<img src="http://images.hardwarecanucks.com/image/akg/Storage/P64/SANGSUNG_logo.jpg" border="0" alt="" />
We could get into a technical argument over Sasmung’s Idle Time Garbage Collection vs. Indilinx’s Wiper.exe and which is better, but the truth of the matter ITGC is better than nothing and it's all that Samsung has right now. It does work, albeit slowly, and while it may not work as well as a TRIM command sent via the OS, it is a good interim stopgap. With Native OS Trim support (ATA T13 TRIM) just around the corner (Windows 7 seems to be when most SSD controller manufacturers will release a firmware update), it would seem like a better idea to get it added into the firmware rather than ITGC.
However the big reason this was added now and TRIM will be added later, is this is part of a one-upmanship battle going on between Samsung and their ex-employees at Indilinx. Indilinx changed the rules of the game with the introduction of the wiper.exe program and it did leave Samsung in a bad position PR wise. For the first time ever, Samsung drives were being considered (rightly or wrongly) as being inferior to the Indilinx SSDs.
Firmware updates
<img src="http://images.hardwarecanucks.com/image/akg/Storage/P64/corsair.jpg" border="0" alt="" />
In these changing times the inability of ANY SSD to not be flashed to a later firmware does mean that, that drive is going to be obsolete LONG before it should be. For example if this Corsair SSD had come with the older 1801 firmware it would not have ITGC and that would have been a crying shame. Unfortunately, if there is one thing Samsung SSDs have been known for in the past, it is their lack of enthusiasm for end user firmware updates. They usually only let the big OEMs have access to this feature so it was with some trepidation we decided to find out what was happening on this front with Corsair.
In another example of Corsair’s commitment to their customers they informed us that about when Windows 7 is released, Samsung WILL be to the best of their knowledge releasing an updated firmware to give ATA T13 Native OS TRIM support to these drives. Here is the pertinent quote from the email we received:
“it's our understanding that Samsung will be releasing a firmware upgrade utility that we can roll out to the general public around the time of the Windows 7 launch.”