分享

固态硬盘傻傻问系列(第11期:SSD外置缓存是做什么用的?)

 东邪101 2016-05-20
本帖最后由 James007ss 于 2012-5-11 14:34 编辑

本期主要内容依然由jeffxl版编辑,我编辑后发布。

上俩期我们聊过了操作系统中的缓存设置对SSD(存储设备)的影响,这期开始聊曾经有相当多网友都关心的SSD内的外置缓存,都用来干些什么,是像网上的某些说法一样,主要用来放我们的用户数据吗?

在这边混过一段时间并且关心SSD的坛友大多都应该知道,SSD因为工作原理跟HDD不同,而采用了FTL的机制,以让现有的操作系统可以把SSD当成普通HDD那样去操作。

当然FTL的作用并不仅止于此,由于有FTL的存在,操作系统仅对逻辑地址(LBA)操作,而物理地址(PBA)的操作被FTL所完全隔离,因此当SSD需要进行一些内部的性能优化、寿命管理等等的操作时,对用户来说就是完全透明的(即用户使用时根本不知道这些操作是否在进行中)。而且由于这些操作是直接针对PBA进行,LBA上则完全没有变化,所以操作系统也不需要针对这些操作作出特定的改动,更进一步来说,这为SSD增加额外的产品特性提供了广大的空间(SandForc的压缩特性就是个好例子)。



大家只需要明白,FTL以动态转换地址的方式,提供了内部隔离NAND物理特性、内部优化管理、寿命管理等操作。另外隔离NAND的特性令SSD能在控制器外部接口(如SATA接口)上透明传输ATA指令,不需要主板ATA接口或其它层面有所改动的情况下,作为一个标准ATA存储设备,这是必不可少的功能!



既然FTL会动态转换LBA和PBA的对应关系,那么就代表肯定存在着一个表格,这个表格记录了LBA和PBA之间的关系,一般会叫这个表格做FTL表。既然FTL表是记录着SSD内LBA和PBA关系的表格,大家也应该想到了,这表格肯定跟SSD的容量成正比,也就是SSD的容量越大,FTL表也会越大。

说到这里就出现了一个问题,所有的用户系统数据都是以LBA来访问的,但现在我们都知道,LBA都是被动态映射为PBA,每次需要访问的数据的真实地址,操作系统并不知道在什么地方,SSD接收操作系统的指令后,主控才会去查FTL表来得知需要访问哪个实际位置获得数据,也就是说每次IO(数据存取操作)都必须要先查FTL表。

说到这里应该很多人都明白了,查FTL表的性能会严重影响SSD的性能表现,特别是随机操作,由于数据地址极为分散,肯定会引起大量的查表操作。在第9期我们知道了关闭系统缓存后,SSD的性能会产生极大的变化,同理这里的查表操作若是都在NAND颗粒里进行,必定严重影响SSD的性能而成为瓶颈(毕竟相对于内存,NAND颗粒的速度还是有相当大的差距)。

这要怎么办,很多人现在都知道了吧?! 就是把FTL表放进缓存里(例如用内存颗粒做的外置缓存)。那么查表的操作就不会成为SSD性能的瓶颈了。

目前市面主流SSD产品主控,Marvell、SandForce、Intel、Samsung等。相关的系列产品除了SandForce较为特殊,采取了无外置缓存而依靠二级映射表分区交换的方式来提供FTL的访问操作外,其他的主控产品都最大化地利用了外置内存(DRAM)颗粒容量做FTL表的缓存,相关细节在浴室最新的“变砖”一文中有详细描述,SSD版区的很多文章也有涉及这些相关知识,希望了解的网友可以去看这些文章来详细了解。



固态硬盘傻傻问系列(第10期:关闭缓存刷新选项的作用)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多