沟通让世界更美好:谈TRIM命令

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

在日常生活、学习和工作当中,我们都少不了沟通。别的不说,就拿我们工作团队来说。如果没有领导者与成员之间的沟通,没有团队成员彼此之间的沟通,成员各行其是,那么团队就是一盘散沙,不能称为一个团队。很难想象这样的团队会有所作为。沟通的重要性不言而喻,人的世界不能缺乏沟通。

其实,计算机的世界也是如此。一个计算机体系,是由软硬件协同构成,而软硬件又有各自的功能模块协同完成。一个独立的功能模块,如果不与其它功能模块协作,那么它就很难甚至不能发挥其作用。比如一块SSD,如果不挂载在计算机上面,就发挥不出它作为存储介质的功能。计算机读写SSD,其实就是一个计算机与SSD沟通的过程。主机通过发送读命令告诉SSD,我需要读数据;SSD接收到读命令后,响应主机的请求,把数据从FLASH里面读出来,然后把数据传给主机。当然,主机与SSD还有很多类似的沟通。

言归正传,回到我们的主题TRIM。在说TRIM之前,先说说文件系统的相关知识。当我们删除一个文件的时候,我们并没有真正删除HDD或者SSD里面的文件数据,它只是把这些数据占用的地址标记为”空”,即可以覆盖写。但这只是在文件系统层面的操作,HDD或者SSD并不知道哪些地址的数据无效,除非HOST重新在这些地址写入新的数据。

对一个文件File A来说,用户看到的是文件,操作系统把文件划分为若干个Host Page,然后写入SSD的FLASH空间。当用户删除掉文件File A时,其实它只是切断用户与操作系统的联系,即用户访问不到这些地址空间;而在SSD内部,HOST Page与Physical Page的映射关系还在,文件数据在FLASH当中也是有效的。

由于FLASH不能覆盖写,当一个Block写满后,必须挑选一个新的空闲Block来写。当没有足够的空闲Block时,垃圾回收就会被触发。(请参考《SSD基本工作原理》)在没有TRIM之前,SSD无法知道那些被删除的数据页是否无效,必须等到系统要求在相同的地方(指用户空间,逻辑空间)写入数据时才知道那些数据是无效的,才可以放心的删除。由于SSD不知道这些删除的数据已经无效,在做垃圾回收的时候,仍把它当做有效数据进行数据的搬移,不仅影响到SSD的性能,又影响SSD的寿命 (写放大增大)。

Trim,是一个ATA命令,当用户删除一个文件时,操作系统会发TRIM命令给SSD,告诉SSD哪些HOST PAGE对应的数据无效了。一旦SSD知道哪些数据是无效后,在做垃圾回收的时候就可以把这些删除掉的数据抛弃掉,不做无谓的数据搬移。这样不仅增强SSD性能,又延长SSD寿命。

HOST与SSD多一个沟通,就能增强SSD性能,延长SSD寿命。多么美好的事情。

要实现TRIM,需要两方面的支持,一是需要支持TRIM的操作系统,Windows Vista是第一个支持TRIM命令的操作系统;二是需要SSD能处理TRIM命令,如果SSD对发下来的TRIM命令置若罔闻,也是起不到TRIM期望的作用。沟通是双向的。

 

 

 

分类目录 SSD, 技术文章.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。