There is bad news in SSDville, it seems that Intel X25 SSD may get slower after prolonged use.
According to an article over at PCPerspective, it would appear that combined writes in conjunction with wear leveling are causing an almost irreversible type of fragmentation that the drive controllers and most OSes are unable to account for.
Wear Leveling is a measure to prevent flash cells from reaching end of life out of order. To accomplish this (in over simplified terms) almost all SSDs use an algorithm to continually rotate the places data is written too. The use of a lookup table allows the OS to ask for the data from the expected place. (E.g. the OS asks for something from sector0 but it might not be at the beginning of the actual drive.)
The problem lies in the fact that Intel is trying to make the most of the flash cells. SSDs are capable of writing much smaller data pages (around 4k) but have to erase complete blocks (512k). As such Intel uses a process called Write Amplification to combine small files into one to fill up individual cells. This makes the write and rewrite times significantly faster than they would be if you had to erase a 512k block for a 10k file.
The problem with all of this is that the actual files and fragments are separated from the OS by the lookup table the OS is completely unable to defragment the actual drive. Meaning that over time your SSD will become more and more fragmented and there is no way for your OS to correct it.
But all hope is not lost; PCPer did try some of Intel's suggestions for correcting this. With the most successful being HDDerase3.3. Unfortunately this process involves imaging your software off and back onto the drive. PCPerspective also have a few suggestions on how to help avoid this in the first place. I wonder if it is really worth the effort even with the massive performance gain.
Read more here at PCPerspective.
While Intel reportedly has something in the works, there is currently no 'easy' way to defragment the sub-block level fragmentation that occurs as a result of write combining. In addition, we found that running the Windows defragmenter on the X25-M would rapidly Swiss Cheese the crap out of it, defeating the purpose entirely. All is not lost, however, as the ATA spec is being updated to include special commands such as "TRIM", "DISCARD", and "UNMAP" (a SCSI command). The new protocol lingo will let the Operating System tell the SSD when areas are no longer in use, such as when files are deleted. This will speed up the process of writing data to flash blocks no longer containing valid data, as the wear leveling routine doesn't have to play musical chairs with data that is no longer relevant.
Windows 7 will support some variation of these commands, and firmware flashable drives like the X25-M should have the ability to be brought up to speed as well. This will not completely solve the problem - It falls short on some RAID configurations (i.e. RAID 5), since all data must remain 'valid' for parity calculations to work properly in the case of a drive failure. Data recovery also becomes more complicated, since deleted files could be overwritten by the wear leveling routine even if the OS did not specifically write over the addresses where those files were originally stored.
Further Reading: Read and find more Storage news at our Storage news index page.