2016
05-31

PCIe SSD介绍及其应用(一)

SATA/SAS接口的SSD已经面世十几年了,目前已普遍应用于个人消费领域,但其性能仍无法充分满足企业用户对高吞吐、低延时的要求,数年前世界上第一块PCIe接口SSD问世,以其惊人的读写吞吐能力、超低延时迅速获得企业用户的青睐。互联网行业是PCIe SSD的最初拥趸,经过多年的实践已经验证PCIe SSD的稳定性完全可以胜任企业的24x7工作模式,目前PCIe SSD应用正迅速从互联网行业延伸至传统行业,甚至进入对安全稳定性要求苛刻的金融行业,可以预期在不久的将来,PCIe SSD很有可能成为服务器存储的标准配置。
PCIe SSD基本原理
下图为宝存科技PCIe SSD硬件逻辑结构:

PCIe SSD存储颗粒使用NAND Flash(以下简称Flash),生活中我们无时无刻不在使用Flash,例如手机的存储、SD卡、平板电脑、U盘等都是基于Flash设计的存储,相较于这些低速设备,PCIe SSD将数十甚至数百片Flash组成可并行操作的阵列以提高读写吞吐能力、降低延时。下图为一典型的闪存颗粒逻辑结构:

Flash由块(block)组成、块由页(page)组成、页存数据,Flash具有如下特性:
- Flash出厂时就会存在不能使用的坏块,使用过程中会动态增加坏块;
- 读写Flash必须以page为单位;
- 不可覆盖写入数据,必须擦除后才可再次写入,擦除以block为单位;
- block擦除次数有限制,MLC Flash一般在3000至10000次;
- 写入数据存在bit翻转,必须采用ECC加以纠正。
用户自不必关心这些问题,PCIe SSD软件算法屏蔽了这些特点,使用户看到的就是一块通用的存储设备,原来怎么使用硬盘的就怎样使用SSD,换句说可以直接替换掉原来的硬盘,不会存在兼容性问题。这个软件算法有个专有名词叫做Flash Translation Layer(FTL),这也是PCIe SSD的核心价值所在。Flash的这些特性带来一些对开发者和用户都比较有意义的概念:
- Over Provision(OP):开发者必须保留一部分容量以实现FTL算法,保留容量除以物理容量即是OP值,例如一块按照1GB=1024*1024*1024B计算的3.2T的SSD,板载Flash物理容量是4T,那么OP等于(4-3.2)/4即20%,但是根据IDEMA(国际磁盘设备制造商协会)的规范,存储设备的容量是按照大约1GB=1000*1000*1000B来计算的,所以一块标称3.2T的SSD卡OP大概在27%左右,对开发者和用户来说这个值一般越大越好;
- 写放大系数WA(Write Amplification):Flash不能覆盖写的特点决定了用户在写入一笔数据时,FTL可能需要搬运写入数笔数据,FTL实际写入数据量除以用户写入数据量即是WA,例如用户写入16KB数据导致FTL实际写入32KB数据,那么WA就等于2。这个值越小意味着更好的性能,理论极限是无限接近1、不可能小于或等于1,优秀的FTL算法可降低这个值;
- ECC纠错能力:写入数据存在bit翻转决定开发者必须使用ECC纠错算法,ECC算法一般由FPGA逻辑实现,这个值越大越好;
- 磨损均衡与使用寿命:Flash块擦除次数限制决定了FTL必须努力保证使用过程中每个块擦除次数大致相当,这将影响SSD的寿命,宝存科技设计的ECC与RAID双重保护,以及FTL可动态替换坏块的能力和磨损均衡算法,保证SSD的寿命在每天更新数据5遍的条件下(例如一块3.2T的卡每天写入16TB数据)可达到4至6年,在实际使用中可以产生这么大数据量的业务是很少见的。
PCIe SSD性能参数
同一般的存储设备类似,PCIe SSD主要有如下几种性能参数:
- 读写带宽(Bandwidth):读写速度;
- 读写IOPS(nput/Outputs Per Seccond):一般是指每秒最大可随机读写多少个4KB;
- 读写延时(Latency):读写4KB数据最短完成时间。
一般而言,高带宽或高IOPS是可以通过增加RAID磁盘组数目来拼接出来,但是传统磁盘存储采用机械装置寻址,Latency很大是它无法逾越的障碍,一般而言由磁盘组成的存储,读写Latency都在毫秒或者数十毫秒级,同PCIeSSD相差3个数量级。更为重要的是,对于大多数企业数据库而言,Latency恰恰是影响性能的重要参数。下表是宝存科技PCIe SSD各种容量规格的技术参数,供参考。

敬请期待下期内容:PCIe SSD介绍及其应用(二)