“芯”跳的秘密:细谈SSD主控芯片技术

技术讲坛

电脑上用SSD仅需8秒可以启动Windows 7,这是何等快的速度啊,传统的机械硬盘只能望尘莫及。毫无疑问,SSD可以带来更高的存储性能,当然这要归功于SSD最核心的主控芯片。

42-d4-1-1.jpg
SSD的大脑:主控芯片

主控芯片的工作原理

主控芯片在SSD中的地位就相当于电脑中的CPU,其作用一是合理调配数据在各个闪存芯片上的负荷,作用二则是承担了整个数据中转,连接闪存芯片和外部SATA接口。那么这颗“大脑”又是如何计算的呢?

在SSD中,Page为最小的读写单位,Block为最小的擦除/编程单位,其中1个Page为4KB,1个Block由256个Page组成,1个Plane由2048个Block组成,2个Plane组成1个Die,也就是最小的芯片(4GB)。

我们首先来假设一个主控和闪存颗粒的环境:1个8通道8位的主控连接到8个Die上,为了解释方便,假设了每个Die里就一个Block(实际要复杂很多)。当主机要进行写入操作时,会首先发送一条要求写入命令,比如写入4KB。当主控接到主机发来的指令后,往颗粒1的Block1里写入了1个4KB(占1Page)。如果主机需要再写入8KB,那么主控会往颗粒2的Block1和颗粒3的Block1里各写入4KB。如果写入的是32KB,那么主控就会一下子往每个颗粒的Block1里写入4KB,这样就能发挥出这个SSD主控理论最大的写入带宽,相对4KB来说最好情况下可以得到8倍的速度(取决于主控对通道的优化、颗粒当前的文件状况等)。一般来说SSD可采用多通道技术以提高SSD的读写速度。

42-d4-1-2.jpg
主控往每个颗粒的Block里写入4KB

三大SSD主控点评

来看看各家的主控芯片,目前最主流的有Intel、SandForce、Marvell等几家。Intel作为芯片业的巨头无需多说,SandForce作为后起之秀,其口碑和影响力甚至不逊色于Intel,它新一代的主控均支持SATA 6Gbps。至于HDD主控最大提供商Marvell,它的SSD主控整体性能也相当不错。

1. Intel主控

42-d4-1-4.jpg
Marvell的88SS9174主控

由于在南桥芯片的开发过程中积累了丰富的磁盘控制器经验,Intel的SSD主控产品异常优秀,算法和固件都很先进,实际性能也很强。

Intel是最先在SSD中引入写入放大指标的厂商,其专门为写入放大控制配备DRAM缓存:缓存用来作为储存数据的短期内存,从而比传统SSD主控能更有效率地执行写入操作。而传统控制器每一次都触发写入动作,即使储存小数据区块时也会写入放大到较大容量的存储块中。借助优秀的算法,Intel主控的写入放大率仅为1.1×,读写值已经很接近文档读写的真实值。需要说明的是,考虑到产品寿命,Intel的主控限制了写入速度,这会影响突发写入速度,但持续写入性能更平衡、优秀,所以Intel主控在性能测试上的成绩也许并不是最高的,但读写稳定性绝对是一流的。

目前Intel的主打主控产品为PC29AS21BAO,这是采用34nm制程工艺的第二代产品,带有32MB缓存,随机4KB读写性能超过35000/6000IOPS。目前Intel的X25系列、320系列均使用该主控方案。

2. SandForce主控

42-d4-1-5.jpg
SandForce的SF-1000主控

从2009年推出SF-1000系列SSD控制器开始,SandForce迅速成为了固态存储领域的生力军,之所以能独霸一方,一个关键的因素就是它的DuraWrite技术。

DuraWrite技术采用了实时压缩和重复的数据算法,从而减小了操作系统传输给控制器的数据的大小。根据厂方的说法,这并不仅仅是压缩这么简单,而是一套多种多样的数据缩量算法。比如当数据存在重复时,仅写入特殊部分;当数据可压缩时,即进行压缩再存储,从而大大降低数据写入量。

如果你需要往SSD写入10MB的文件,那在文件进入硬盘之前SandForce主控会对文件进行压缩处理,可能被压缩到5MB甚至更低,而文件最终写入NAND颗粒的大小也就是压缩后的容量。但是在操作系统里仍然看到的是10MB占用率,因为操作系统记录的LBA还是10MB地址。然后从SSD里打开这个文件时,主控会对此文件先进行解压再送进系统内存。假设系统花了20ms读取了这个5MB的文件,那么就是250MB/s的读取速度(1s=50个20ms),但是在主控里它被解压成了10MB,也就是数据量增大了1倍,看上去就变成了500MB/s的传输速度。DuraWrite技术使得主控的写入放大能够达到0.5×,由于写入数据变少,主控不需要使用外部DRAM缓存,而是在芯片内直接集成了较大容量的缓存。

在去年10月,SandForce推出了第二代SF主控。针对主流民用市场的SF-2200系列,相较上一代产品在性能方面有了显著的提升:SATA 6Gbps接口、60000 IOPS随机读写、500MB/s连续读写等,这样的性能绝对是目前的SATA SSD的巅峰表现。

3. Marvell主控

42-d4-1-6.jpg
Marvell的88SS9174主控

说起Marvell,大家不可能不熟悉。目前大家常用的机械硬盘的主控芯片基本上都是它的芯片。面对日益火爆的SSD市场,Marvell怎么忍心缺席呢?于是,Marvell也针对SSD推出了一款全新的主控芯片88SS9174。

这是一款支持SATA 6Gbps的芯片,它具有355MB/s的读取能力,连续写入性能也超过200MB/s,这些可都是实打实的规格,不像SandForce那样标称的是在数据可以被即时压缩的环境下的最佳性能。由于Marvell的旗舰产品主要面向企业级用户,虽然性能无比强大,但是其价格远非一般个人用户所能接受的。

总结

可以说,不同主控之间的能力相差非常大,在主控算法、数据处理能力、对闪存芯片的读取写入控制上会有非常大的不同,直接会导致SSD产品在性能上差距高达数十倍。一款优秀的主控芯片即便配上相对廉价的MLC闪存,其性能也要优于较差的主控芯片搭配SLC闪存。因此,大家选择SSD时不妨用心留意一下SSD的“芯”!

延伸阅读:鲜为人智的SSD知识

各个厂商都有很多策略来防止SSD写性能下降,这里面就涉及到主控芯片的一些性能参数和算法技术。

1.写入放大

写入放大系数是SSD主控实际写入区块的容量总和与实际文件大小的比值。写入放大为1时是最合适的,写入放大系数越高意味着SSD的性能越低、使用寿命越短。因此,写入放大是衡量主控性能的重要指标,目前主控大多数算法优化技术都是为了降低写入放大。Intel的SSD把写入放大率降低到了1.1×左右,而SandForce可以达到0.5×。

也许有读者会问,SSD中有许多空闲的存储区域,直接对未被占用的页操作不就可以了吗?这是不可能的。当Windows删除一个文件的时候,只是将此文件标记成“已删除”,但是其内容不会真的被抹掉。从技术角度而言文件仍然霸占着这些存储空间。无论是机械硬盘,还是SSD都存在这样的情况——占着位置不干活的人总是有的!只不过系统并不会显现出被“删除”的文件,而SSD主控却会发现这些被“存储”着的已删除文件,并且将这些块视为大容量区块,并频繁地在缓冲中挪移。

2.磨损平衡技术

磨损平衡技术的大致含义就是通过主控芯片的调配,将读写操作平均分配给不同的闪存芯片,以避免频繁对某一区块进行读写而造成该区块寿命减少。

该技术分为两种:动态损耗均衡和静态损耗均衡,两者的原理一致,区别在于动态算法只会处理动态数据,比如数据改写时才会触发数据迁移的动作,对静态数据不起作用。而静态算法则可以均衡静态数据,当后台任务发现损耗很低的静态数据块时,将其迁移到其他数据块上,并将这些块放入空闲池中使用。从均衡的效果来看,静态算法要好于动态算法,因为几乎所有的Block都可以被均衡地使用。但是静态算法的缺点是当数据迁移时,可能会导致写性能下降。目前SandForce和Marvell的主控方案都支持静态磨损算法。

3.闪存转换层

谈到SSD主控,我们还需要关注一下闪存转换层技术。闪存转换层也叫“FTL”,是一种页面映射技术。

FLT的算法非常巧妙。如果要写入一个数据,SSD并不会先擦除某个页的数据再进行写入。而是将需要写入的信息写入不同的空闲的物理页中,然后再通过FTL映射,将闪存芯片上的这个页标记为无效,由此这个存储空间就被释放了。FTL的算法是否科学,直接决定着SSD的性能。为实现这一映射,Intel需要在主控外使用DRAM缓存来保存映射表:当SSD为空盘时,缓存会直接返回FTL闪存转换层映射的地址,并不会真正映射到对应的闪存地址中。而SandForce则完全不需要外置缓存,因为在他们的方案中,实际写入闪存的数据比操作系统传输给控制器的数据要少。