「SSD」- 闪存控制器(Flash Memory Controller)

  CREATED BY JENKINSBOT

主要任务

类似传统机械硬盘,固态硬盘也有控制器,功能大同小异,就是在 NAND Flash 内存和计算机内存间传送数据;
而 HDD 则更加注重提高转,但是 SSD 的物理结构与 HDD 存在很大的相同,所以 SSD 的控制芯片还多延长寿命的功能;

1)误区校正(Error Correction,ECC):确保数据的正确性;
2)平衡技术(Wear Levelng):让每一个 SSD 中的组件都能被平均使用到,以延长寿命;
3)坏块标注:当有坏单元出现时,可以标注并对应到正常的区块;
4)读取涤净(Read scrubbing):使用比如 ECC 来良探更正错误的功能;
5)读取干扰:读取时让临近比特不被干扰的技术;
6)读取缓存:这和传统硬盘一样;
7)垃圾回收:不被使用又没标注的区块必须回收使用;
8)数据加密:数据传输时必须先加密(安全、速度及兼容性);

特性特征

需要靠 FTL 变换才能用在计算机上

计算机一直用传统硬盘,因此习惯上是用磁道来表示数据大小的。但 SSD 没有轨的概念,都是 Block/Page,因此在使用时,必须有一个变换机制,这个机制就称之为 Flash Translation Layer(FTL);

FTL 映像表通常存在 SRAM/DRAM、NAND 内部或计算机的内存中方便操作。其介于文件系统和物理存储内存之间;

当操作系统以磁道的方式访问 SSD 的数据时,FTL 会将这个访问的地址转换成 SSD 的物理内存颗粒位置;

变换动作原理:
1)发现要与人数据,从 FTL 中找一块空白的 Block,从 Page n 幵始写入;
2)写入第 1 笔,Page n 写满,铺垫写第 2 笔人 Page n+1
3)写入第 2 笔,发现 Page n+1 已被标注无效(之前有东西还没擦拭),写入 Page n+2;
4)以此类推……
5)一个 Block 写满,写入下一个 Block;

垃圾回收(Garbage Collection)

在使用一段时间后,我们会发现,该 Block 会充满有效、无效标注的 Page,此时就会幵始逬行垃圾回收 动作;

1)找到空白的 Block,并将前个 Block 的有效 Page 复制到该空白 Block;
2)擦拭刚才 Block;
3)在 FTL 映像表中,更新 Block 的位置,以将数据指向新 Block 所在位置;

所这个 Block 之间复制的动作,正是决定 SSD 速度的重要因素之一;

数据压缩

大部分的 SSD 控制芯片会对数据进行压缩,
在 Sandforce 上称之为 Dura Write, Marvell 上也有相应的算法。这些芯片厂家的如意算盘是,大部分的数据都是没压缩的,如果将数据在芯片上先压缩 50%,那速度就会快一倍。如图形、声音、录像等已经压缩完毕的数据就无法处理,此时的速度就 是真实的 SSD 速度了;

同步颗粒、异步颗粒、切换模式

在 2006 年,Intel 推出 ONFi 接口(Open NAND Flash Interface),发展到 3.1(2013 年 8 月),其中就有所谓的 ONFi v2.x 同步颗粒及 ONFi v1.0 异步颗粒。两种在规格上看起来大同小异,但在真正买测上,速度可以差到 60%以上。三星在 2009 也推出所谓的 Toggle Mode 颗粒,速度也有巨大的差别;

异步颗粒

和一般 DRAM 一样,只有在电路的上升电平上生成信令,因此最高速度只有 50MB/S,这是 ONFi 1.0 的规格,但这样一种内存颗粒还是在继续生产。异步颗粒和控制器连接时,无法全部接上,必须轮流让控制器读取,因此在大量数据写入时就会生成性能上的瓶颈。部分 SSD 厂商通过固件强制打幵同步模式,也可达到同步的速度,但使用稳定度就大打折扣了;

异步颗粒,无法全部接上控制器:

同步颗粒

和 DDR 一样,在电路的上升 / 下降电平都生成信令,因此速度可以到达 133MB/s; 这是 ONFi 2.0 的规格,由于速度快,因此成本当然较高。同步颗粒可以并发和控制器连结,因此速度比异步的快上很多;

同步颗粒,能够并发和控制器连结:

切换模式

Toggle Mode 的颗粒可以用异步的方式达到同步颗粒的效果,并且更省电。目前的第一代 Toggle Mode 的颗粒就有 133MB/S 的速度,第二代可达 200MB/S,第三代可达 400MB/S,在 2013 年以后将会有产品出现;

切换模式:

同步 vs. 异步

针对读写擦拭,其有同步异步之分(将影响 SSD 性能):

1)这是最基本的存储设备功能。以 SSD 来说, 由于并发接触的晶圆数量较多(和 U 盘及 SD 卡比较),因此需 要较好地控制芯片来进行这些动作。每一个 Flash 内存的晶圆速度决定了其读写操作,换句话说,高速的 SSD 在每个 Matrix 中,拥有的 Flash 晶圆较多(如 100 个),因此其并发处理的信道也较多,会比单个 U 盘的产品快 上很多,这就是所谓的“同步”式的 SSD 颗粒;

2)我们经常说闪存的同步与异步模式,其实是在 ONFI2.0 标准中新加入的特性(ToggleDDR 不存在同步闪存的情况,均为异步设计,但性能仍然强悍),ONFI 2.0 标准在 NAND 中加入了同步时钟发生器,主控可以通过发送同步指令激活闪存上的同步时钟信号,使闪存工作在同步模式,此时闪存的数据传输速率会大幅度提升,异步模式相当于 ONFI 1.0,闪存的带宽为 50MB/s,而同步模式下闪存至少也符合 ONFI 2.0,闪存带宽可达到 133MB/s 以上。实际上同步与异步闪存都是同一生产线上下来的,颗粒品质的优劣才产生了这样的区别;