技术分析(5)SandForce速度的奥秘
高效率的NAND块管理直接影响到SSD的性能,内部数据的保存期和寿命。对于要让MLC的NAND使用在企业级环境下,这类高效率的智能块管理算法更是必不可少的。
1)块的利用:
SandForce主控制器能够高效率的优化NAND上存放的数据管理,我们知道数据的寻址有2个概念:逻辑(用一个扇区定义相关联的另一个扇区),物理(NAND上的芯片,Block,Page)。主机发出的地址皆为逻辑地址LBA,最终存取数据的时候是对物理地址PBA做操作。SandForce主控制器可以在不经过主机的指令,在后台智能的移动物理地址上的数据到其他位置,来防止读取数据产生的干扰,提升数据的保存期,最佳化数据的垃圾回收效率,或者是从RAISE里恢复正确数据。SandForce使用映射表来管理着这些物理地址上信息之间的关联,而要想最好的提升块的利用率,需要在操作当前块时就对接下来的操作提前做了最佳预判。
2)垃圾回收块的筛选:
经过写入操作后的SSD,在NAND上的同一个块里有部分Page会包含有效的用户数据,另一部分Page则包含了陈旧的数据(可以被擦除),那么如何把这部分陈旧的数据空间给挪出来并再次使用这部分空间哪?这就需要做垃圾回收操作了。所谓垃圾回收操作就是移动当前块里的有效用户数据到新的空闲块里,并擦除之前整个块的数据(NAND擦除操作最小单位为块)。那咋样做垃圾回收操作最有效率,速度最快哪?做垃圾回收的块选择又有哪些学问哪?做垃圾回收操作又会和哪些因素造成矛盾哪?请看下面这个图。
这个图里,绿色的代表容易做垃圾回收的块(块里包含的有效数据越少),代表需要移动到新的空闲块的数据少,垃圾回收操作时间更短,效率高,体现出来就是速度更快。红色代表很难做垃圾回收的块(块里包含有效数据多)。X轴代表的是P/E次数由低到高,应该来说为了保证寿命,都会选择优先处理P/E消耗低的块来做垃圾回收,但是很可能这部分块的垃圾回收效率却不高(Y轴)。如何在P/E次数和垃圾回收效率上做平衡就显得尤为重要,这是一个矛盾(要寿命还是要速度),SandForce在这里因为有之前第一点块的利用优势(每次操作都为下一次垃圾回收做了事先的预判优化),所以能够做到最大限度的保证寿命的前提下来提高垃圾回收效率。
3) DuraWrite(数据模型处理)
这个指的就是各大网站常提到的SandForce主控特有的压缩算法,号称写入放大低于1的那个。如下图,安装VISTA和OFFICE 2007主机请求写入了25GB数据,实际物理闪存上只写入了11GB数据,大大增加了闪存的耐久度。
如果你有个10MB的Excel文件,这个文档我假设能压缩到原本的50%,也就是压缩到5MB。你现在决定复制这个文件到你的SandForce主控的SSD里,随着你的“复制“命令,当这个10MB的文件进入了SSD主控后,被压缩到了5MB,然后这个5MB的数据被写入了NAND颗粒。但是在操作系统里仍然看到的是10MB的占用率,因为操作系统记录的LBA还是10MB地址,其实SSD只用了5MB的NAND颗粒存储了这个数据。如果之后,你准备从SSD里打开这个文件时,从NAND颗粒里读出5MB的数据,进入主控里解压缩然后送进系统内存,让我们假设我们花了20ms读取了这个5MB的文件,那么就是250MB/s的读取速度(1s=50个20ms),但是在主控里,他被解压成了10MB,也就是数据量增大了1倍,看上去就变成了500MB/s的传输速度。如果你把这个10MB的Excel文档编辑后再保存回SSD里去的话,也会因为可以压缩成原本50%容量的道理,写入传输速度翻倍。
小结:SandForce主控的技术,以耐久度为先,随机性能为辅,2者相辅相成,就像一个围棋选手,很早就会为之后的落子想好了方位,当性能和耐久度之间产生矛盾时,以耐久度优先。SandForce不做主动垃圾回收,只做被动垃圾回收,Trim只会影响耐久度和长远的性能,不像别家的主控那样效果会立马体现。
|