TRIM指令:告诉SSD哪些数据是无效的
宁道奇 发表于:11年06月17日 12:00 [转载] 小熊在线
TRIM指令:告诉SSD哪些数据是无效的
SSD并非天生丽质完美无瑕,这里小编先讲述一个长期损害SSD性能的一个诟病——区块重写损失。在固态硬盘长期使用时,会产生许多磁盘碎片,其存取性能会远不如从前。这是因为在闪存芯片中,4KB的页会组成512KB的块。另外也可以直接对页进行写入,但他们必须是空的。在写入操作时,如果一个块中被一个页所占据,那么驱动器就会重写整个块。当读取较大区块的时候,它会被直接放在缓存中,然后在缓冲中进行修改,最后在将整个块进行回写操作。这样繁琐的存储区块操作需要占用更多的时间,同时也会消耗缓存的写入性能。
有读者会发问,固态硬盘中有许多空闲的存储区域,这里有大量的未被占用的页,可以直接对其操作,这样不就行了?但小编我很遗憾的告诉你,这不可能。当Windows删除一个文件的时候,它并不会真的从驱动器上抹去这个文件。在闪存芯片中也是如此。它会被标记成“已删除”,但是其内容不会真的被抹掉。从技术角度而言它仍然霸占着这些存储空间。这也就是为什么通常我们的SD、CF卡在数码相机中,不小心将照片删除后,仍然可以完美恢复的原因。因此闪存控制芯片会发现这些被“存储”着的已删除文件,并且将这些块视为大容量区块,并频繁的在缓冲中挪移。
史上率先支持TRIM的Intel X25-M固态硬盘
在SSD的世界中,要想得到有效的空闲空间,必须复制所有的有效页到新的空闲块里。SSD需要使用垃圾回收机制擦除旧块中的信息才能写入新的数据。TRIM指令可以帮助SSD区分哪些块是被标记“无效”,哪些是可以被用于直接写入数据。由此可以让主控芯片对于不同状态的NAND空间区别对待。这样就减少了“写入放大”,减少了不必要的P/E周期。同时主控芯片对于“有效”页的处理任务量也变少了,这样也可以大大提高垃圾回收的效率。
Windows 7中开始支持这项技术,但令人遗憾的是目前的Mac OS X并不支持这项技术。据说苹果在6月新发布的Mac OS X 10.7 Lion中将会进一步对TRIM进行支持。或者如果消费者等不及Lion,还可以冒险使用第三方的TRIM支持插件来实现。