Intel SSD DC S3500企业级固态硬盘评测

时间:2013年09月10日 来源:ZDnet 作者:火舞耀扬

【CBSi企业解决方案中心】我们知道在数年前,Intel英特尔开始使用三位数字如320、520、710、910来标识其固态硬盘产品线,这一点倒是与其处理器系列的命名有异曲同工之处。不过例外总是会出现,在上一年末,Intel推出了新定义的型号系列,从以往的三位数字变成了四位数字,首先推出的为SSDDCS3700,中央的DC是Datacenter数据中心的意思——在以往,消费类市场的3系5系跟企业级的7系和9系没有太明确的界限。

  从印象上我们可以感受到更高数字系列的产品会更高端,然而其确实不是很清晰,因此我们可以看到很多企业用户在服务器上使用SSD320。现在,企业级的固态硬盘产品将会和消费类的固态硬盘产品得到了明显的区分。除了DC系列之外,Intel还推出了Pro系列的固态硬盘产品,就是在同样的DC系列当中,还有S子系列和P子系列的划分。


Intel7系固态硬盘的第一款产品SSD710,7系是Intel的企业级固态硬盘产品线;710采用了25nmHETMLC,发布日期2011年Q3,代号Lyndonville


IntelSSD910固态硬盘,是Intel的第一款PCIExpress插卡式固态硬盘,25nmHETMLC,发布日期2012年Q2,代号Ramsdale

  上一年年末推出的IntelSSDDCS3700采用的NAND为25nmHETMLC,和之前的SSD710和SSD910保持了一致,不过,在很多方面有些新的改进,其具有顶级的性能以及相符合的价格。遗憾的是,我们尚未能拿到测试样品。幸运的是,我们现在拿到了其兄弟版本:SSDDCS3500。不过,S3500并不是S3700的缩水版本,实际上,它和S3700具有截然不同的特性。

IntelSSDDCS3500固态硬盘,20nmMLC,发布日期2013年Q2,代号Wolfsville

  首先,DCS3500采用的NAND颗粒明显不同,它基于普通的、不搭载HET技术的MLC芯片,并且,它采用了更进一步工艺的20nm芯片。HET(HighEnduranceTechnology,高耐久技术)是Intel一套包含多种用来增强MLC芯片的耐久性的技术,这预示了S3500的定位和S3700很不相同。进一步地,我们知道随着工艺的提升,NAND芯片的P/E(擦写)次数会有所降低,S350020nm工艺的NAND芯片让耐久度进一步降低。

  显然,S3500并不擅长写入,实际上,它是用来跟其它产品组成读写搭配的,如果你的应用读写比很高,写入的数据项相对较少的话,那么它只有S3700大约一半的价格将会提供很高的性价比。接下来我们会稍微详细地介绍IntelSSDDCS3500这款产品。

  可以概括起来,IntelSSDDCS3500企业级固态硬盘有两个很鲜明的特点:20nmMLC芯片、Intel第三代主控,此外,还有一个不算非常突出的:完整的保护功能。它们对了解SSDDCS3500的特性表现非常重要,接下来我们将对它们进行分别介绍。

20nmMLC芯片:针对非写入密集应用


IntelSSDDCS3500上面使用的20nmMLCNAND颗粒,型号Intel29F32B08MCMF2ES

  首先是使用20nmMLC芯片,这很好理解,和前面说过的类似:由于采用了它导致了耐久度的降低(特别低,S3500采用的是普通的MLC而不是Intel的HETMLC),P/E周期大约为3000次;20nmMLC的优点则是新的工艺带来功耗和成本下降,因此我们可以看到,同等容量DCS3500要比DCS3700便宜不少。作为对比,根据JESD218耐久度规范,800GB的S3700,耐久度为14.6PB,800GB的S3500只有450TB,300GB的SSD710耐久度也能达到1PB。显而易见,S3500并非面向高强度写入应用。

Intel第三代主控:解决延迟问题

  而在明白Intel的新主控带来的变化之前,我们得先复习一下SSD的存储原理。我们都知道,和HDD天生的不同,SSD的读写单位为页(Page),页的一般大小为4KiB或8KiB;HDD的读写单位为扇区(Sector),一般大小为512B或者4KiB。而在擦除NAND的时候,则使用块(Block)为单位,一个块一般包含着128或256个Pages;HDD则没有这个概念。对于Intel的25nmNAND来说,一次擦除就是2MiB(8KiB每页)。

  OK,这就是在处理上SSD和HDD的根本不同,由此衍生出一大堆不同的性能差异来。通常,为了保持上层操作系统/文件系统的一致性,SSD通过主控来隐藏了这个不同处理过程的区别,这个工作引入的就是FTL(FlashTranslationLayer,闪存转换层),FTL将操作系统熟悉的LBA(LogicalBlockAddress,逻辑块地址)转换到SSD的PBA(PhysicalBlockAddress,物理块地址)。LBA到PBA显然是一张映射表,在HDD上,它是1:1对应关系,除了缺陷管理之外不会变更,而在SSD上,由于磨损平衡的关系,同一个LBA对应的PBA并不是固定不变的,因此,这个映射表是动态变化的。显然,FTL的转换性能影响着SSD的性能,这也是我们关注SSD主控的原因之一。


按查找方式划分的数据结构。FTL就是在一个数据结构中进行查找或其它操作以维持一个LBA到PBA的映射关系

  FTL维护着动态变化的映射关系,这个映射关系通常是用一个叫Btree的数据结构来保存,这个数据结构保存在SSD上面,但是通常会让FTL主控保存在一个Cache当中,以加快处理速度。注意Btree的B是Balance,而不是Binary,前者是平衡多叉树,后者是二叉树。区别在于,前者不限制二个分叉,因此,Btree树的高度通常比后者的要低,操作效率更高。


Btree示例,可以看出,Btree是一个有序集合,查询从树根开始一直到某一结点;通过Btree,FTL可以以最低O(log2N)的效率进行LBA到PBA的映射查找

  Btree的如B+tree、B*tree、FDtree等等的改进型广泛应用于存储相关的部件当中,如在文件系统中的应用就非常多。类Btree的一个重要的问题就是其查找性能良好,然而其分裂、插入结点的操作相对缓慢。在FTL进行读取操作时需要的就是对Btree进行查找,而写入则需要进行分裂、插入;对SSD连续的写入可以让一个结点包含一大块地址来解决,而随机写入则只能让Btree变大,这会带来很明显的延迟,因此SSD的随机写入性能通常都比读取要慢。


第一代IntelSSD主控:PC29AS21AA0,来自IntelSSDX25E,Cache为16MiBDRAM


第二代IntelSSD主控:PC29AS21BA0,来自IntelSSD710,Cache容量为64MiBDRAM

  这个Btree——映射表通常保存在Cache当中(再一次:这点跟CPU当中的TLB很像),在Intel的第一第二代上,搭配了一个容量相对较小的Cache,分别为16MiB和64MiB,Intel引以为豪的是这个Cache完全不保存用户数据,仅保存映射表,因此掉电保护只需要很小的电容就能达到。和其它SSD相对较小的Cache是IntelSSD的一个特点,不过这带来了一个问题:映射表不能完全载入Cache当中,并且,映射表也需要不停地对进行压缩、重平衡,这带来了进一步的延迟。


4KiB随机读取延迟对比:低队列深度下,SSD710的延迟较低,然而随着队列深度增加,其延迟增长比SSD520明显要快;SF2281主控内置SRAM,容量不明


4KiB随机写入延迟对比:在1队列深度下,SSD710的延迟是SSD520的1.55倍在256下飙升到10.7倍;测试基于非对齐的重复数据,因此SF2281可以启动其硬件压缩引擎

  按照映射表在DRAMCache中缓冲多寡来分的话,SSD可以分为DRAM完全缓冲DRAM部分缓冲DRAM完全不缓冲型,还有一种主机内存完全缓冲型(映射表保存在系统内存中,由驱动维护)。显然,IntelPC29AS21AA0和IntelPC29AS21BA0属于DRAM部分缓冲型,而SandForceSF2281则属于DRAM完全不缓冲型——不过SF2281内置SRAM进行了部分缓冲,两种方案可以看做有些相似。在上面的对比中我们可以看到,Intel的第二代主控延迟表现不甚理想,特别是4KiB随机写入,比SF2281要慢很多。需要说明的是,背后的因素有些复杂,在我们的例子当中,使用的测试数据是重复数据,因此在SF2281硬件压缩引擎的作用下,可以有充分的带宽去读取Flash芯片上的映射表。


第三代IntelSSD主控:PC29AS21CA0,来自IntelSSDDCS3500,Cache容量为1GiBDRAM

  到了第三代主控,Intel使用了完全不同的做法:它取消了Btree使用了一种平面1:1映射表,并完全装载入新的1GiB大容量DRAM当中,因此不再需要动态维护Btree。因此PC29AS21CA0的随机操作延迟特别是写入延迟理论上会有很明显的降低,此外,延迟的时间不均衡性也会得到降低,Intel宣称SSDDCS3500可以提供75K/11K的4K随机读写延迟,并且提供了一致性的IO延迟——也就是说,提供一致性的IOPS,不会因为长时间的使用或者边界条件而导致很差的性能。


IntelSSDDCS3500的随机读写一致性,Intel保证提供在99.9%的情况下可以达到90%的读IOPS和75%的写入IOPS

完整的数据保护:面向数据中心

  使用新的映射表架构的代价是需要针对1GiB容量的DRAM进行掉电保护,Intel的做法和此前没有什么不同,都是采用了大电容来进行保护,不过具体实现不太一样:


IntelSSD710上的6个KEMET基美的T520系聚合钽贴片电容,规格为6V470uF


IntelSSDDCS3500上具有两个35V47uF的NCC(日本化工)ChemiconKZH系列黑金刚铝电解电容

  可见,不知为何,相比SSD710,SSDDCS3500的储电能力有所下降,这样的变化一定有其原因。

  除了掉电保护之外,SSDDCS3500还具有完整的端到端数据保护,包括SRAMCache、DRAMCache、FlashNAND等全部都具有ECC保护,并且S3500提供AES256数据加密保护,而IntelSSD710和IntelSSD520都只支持AES128。

概括

还有一些值得一提的要点是:新的控制器支持SATA6Gb/s,提供7mm2.5"和5mm1.8"两种外形因子,可靠性为200万MTBF小时
 看完对SSDDCS3500的特点介绍,我们接下来来实际看看这个产品的样子:


Intel SSDDCS3500只有这样的环保纸盒包装,没有零售版本


我很怀疑企业用户是否会需要背后那张SPEEDDEMON贴纸,除了贴纸之外,S3500完全没有其它附件


IntelSSDDCS3500固态硬盘,7mm2.5“外形因子


和一般固态硬盘稍微不太一样的是,它同时能接受+5V和+12V输入,额定电流分别为1.44A和0.6A,简单计算可以得到一样的标称功耗数值:7.2W


另一面是一如既往的粗糙……


如果你想要拆解的话,需要把正面的贴纸掀起一角,这一点也和之前的型号不同

  除了一个螺丝孔被遮住这一点之外,S3500的拆解丝毫不成问题:


拆开来首先看到的是非主控那一侧,此外,拆下来的盖子可以看到有塑料膜保护层,企业级产品还是讲究一点

  这无主控的一面另有玄机:仔细观察,第二排最右一个NAND芯片与其他七片很不相同,它的型号为Intel29F16B08LCMF2,其它为Intel29F32B08MCMF2ES


企业级SSD的讲究:防震加固PCB的几个小部件


IntelSSDDCS3500的主控侧

  除了FTL闪存转换层的改变之外,PC29AS21CA0还是Intel首个基于SATA3.0的控制器,它支持SATA6Gb/s速率,支持ATA8ACS2和SCT指令集,支持SMART、NCQ和Trim。PC29AS21CA0是一个8通道的主控,之前的BA0、AA0均为10通道。它搭配了两块Micron的D9PCPDDR31600ECCDRAM。

  此外,跟另一面对比,SSDS3500主控这一面的NAND芯片也有玄机:第二排最后一个NAND与众不同,它的型号为Intel29F64B08NCMF2ES,其它为Intel29F32B08MCMF2ES,结合另一面,可以看到S3500总共用了14片32GiB的29F32B08MCMF2ES、1片32GiB的29F64B08NCMF2ES、1片16GiB的29F16B08LCMF2。总容量为528GiB,提供给用户的则是480GB,注意到GiB和GB的差异,有约15.3%的总容量用于存放映射表、ECC以及OverProvisioning和WearLeveling。这样不对称的搭配有些诡异,它表明映射表可能是保存在固定的NAND芯片上面。

  两个35V47uF的NCC(日本化工)ChemiconKZH系列黑金刚铝电解电容。


IntelSSDDCS3500总拆解图

  看完拆解,接下来我们就开始准备测试了。

  我们使用了一台IntelSandyBridgeE+X79平台来进行测试,SandyBridgeE是Intel顶端的桌面平台(直到最近被IvyBridgeE替代)。平台采用Corei73960X处理器,主频3.33GHz,搭配的芯片组为IntelPatsburg,也就是PCHX79。CPU提供了40个PCIExpressGen3Lanes,PCH额外提供了8个PCIExpressGen2Lanes。PCHX79提供了6个SATA接口:2个SATA6Gb/s、4个SATA3Gb/s,IntelSSDDCS3500接在第二个SATA6Gb/s接口上。测试使用的操作系统是WindowsServer2012Datacenter,安装了最新的IntelRapidStorageTechnology12.8.0.1016驱动。使用的测试软件为Iometer1.1.0rc1。

测试平台、测试环境 测试分组 类别 IntelSandyBridge+X79测试平台
IntelCorei73960X
32GiBRAM
处理器子系统 处理器 IntelCorei73960X 处理器架构 Intel32nmSandyBridgeE 处理器封装 2011FCLGA
45.0mmx52.5mm
2270MTransistor 处理器规格 六核
TDP:130W 处理器指令集 MMX,SSE(1,2,3,3S,4.1,4.2),EM64T,VTx,AES,AVX L3Cache 20MiB@CoreSpeed
20路组关联 内存控制器 每CPU集成四通道DDR31600 内存 4GiBDDR31600SDRAMx8
@DDR31600 IO子系统 PCIExpress CPU:40LanesPCIExpress3.0
PCH:8LanesPCIExpress2.0 SATA SATA6Gb/sx2
SATA3Gb/sx4 存储子系统 SSD IntelSSDDCS3500480GB 控制器 IntelPC29AS21CA0 接口 SATA6Gb/s 软件环境 操作系统 WindowsServer2012Datacenterx64 驱动程序 IntelRapidStorageTechnology12.8.0.1016 测试软件 Iometer1.1.0rc1

  我们首先测试了IntelSSDDCS3500的基准性能指标,并对其延迟进行了重点测试,接着进行应用性能指标测试。测试结果与IntelSSD710和SSD520进行对比。最后,我们还进行了一些特别的测试。在阅读接下来的测试前,我们再来复习一下二进制词头:

  IEC(InternationalElectrotechnicalCommission)在1998年提出了新的二进制词头,在通常的SI十进制词头后面增加了一个字母i,i表示的是binary,例如,1KiB=1024B,依次类推,这套记法被称为IEC600272单位制,后来演变成ISO/IECIEC8000013:2008规范。

  在后面我们可以看到4KiB、1MiB等容量,可有4KiB=4096B、1MiB=1024KiB=1048576B=1048.576KB=1.048576MB,请加以注意。

  首先进行的是基准指标测试:4KiB和1MiB下的性能:

  结果可能不令人惊讶,IntelSSDDCS3500提供了92.8K的4KiB连续读取IOps和84.3K的4KiB随机读取IOps,比IntelSSD710分别要高108%88.6%

  IntelSSDDCS3500的4KiB连续写入和随机写入可以达到约62.8K63.7K,其中随机写入要比SSD710高出很多,和默认的标称值11K也有明显的差距,这个是怎么回事呢?下一页我们再详细介绍。

  使用1MiB的块大小,IntelSSDDCS3500可以获得546MiB/s的连续读取传输速率,注意MiB和MB的分别,换算过去可以达到572MB/s,很接近SATA6Gb/s接口600MB/s的上限了。写入则大约在410MiB/s左右,峰值为423MiB/s
 前面说过,第三代IntelSSD主控采用了完全不同的FTL逻辑,因此其延迟会有提升,接下来我们就来看看这个提升:

  相比710,S3500在32队列深度降低了47.2%的延迟,在256队列深度降低了46.8%的延迟;在256队列深度,S3500对比SSD520也要低27%

  写入有两种情况:4KiB块对齐和不对齐,不对齐写入会有什么影响?这意味着4KiB的写入会跨越两个4KiB的Pages,这会很大地降低写入性能。根据测试,对齐和不对齐,S3500的延迟数值变化有5.9倍。不对齐写入,在高队列深度下,SSDS3500的延迟是SSD520的3倍,改为对齐写入的话,延迟则反而只有SSD520的42.8%(256队列深度);至于SSD710的延迟……在256队列深度下达到了103ms,是S3500的25倍

  因此,根据对齐和不对齐,我们具有两个IOps曲线,4KiB对齐随机写入为63.7KIOps,4KiB不对齐随机写入为14.7KIOps,后者和标称的11K接近,因此我们知道了,Intel给出的标称值是不对齐情况下的。

  重新做了一个包含对齐和不对齐的IOps图。现在很多HDD都已经迈向了4KiB扇区,而很多SSD也已经开始使用4KiB对齐读写作为指标,Intel应该顺应潮流才对。

  我们的测试表明,Intel的第三代控制器具有着非凡的表现,在256队列深度下,读取延迟降低了46.8%,写入延迟降低了96.0%!在32队列深度下,读取延迟降低为47.1%,写入延迟降低为95.4%,效果显著,随机读写IOps也随着明显提升。
 测试完基准性能指标之后,我们再来看看企业应用脚本下的性能:

  文件服务器:17.4KIOps

  网站服务器:25.6KIOps

  数据库服务器:23.6KIOps

  工作站:29.4KIOps。 

  对比使用第二代控制器的IntelSSD710,IntelSSDDCS3500在各种应用中提升的幅度在1倍到3.8倍左右。

  我们对IntelSSDDCS3500使用的电容比较在意,正好笔者手上有一个UNITUT61E万用表,预示就进行了一个额外的小测试:

  电路板上的两个35V47uF的NCC(日本化工)ChemiconKZH系列黑金刚铝电解电容:

  工作时电容上的电压高达33.29V,注意人体安全电压是36V,因此这个固态硬盘可不能随意乱碰!也因此SSD内部添加了塑料内衬以起保护作用。为何要浪费大量的PCB来添加DCDC升压线路将电压从+5V/+12V升到33.29V,而不是使用IntelSSD710上面的贴片方案呢?可能是为了维持PCB的电气性能。不过,尽管使用了较高的电压,不过其储存电量经过计算仍然不及SSD710,这个应该就如前面所说的,第三代Intel控制器的映射表保存在特定的NAND芯片上,这个很可能跟S3500采用的非对称NAND芯片方案(14个32GiB芯片、1个64GiB、1个16GiB)有关——电容只需要对该NAND芯片供电即可。


IntelSSD710上的6个KEMET基美的T520系聚合钽贴片电容,规格为6V470uF

【CBSi企业解决方案中心】IntelSSDDCS3500采用了Intel的第三代SSD主控:PC29AS21CA0,其FTL映射表抛弃了以往的Btree结构而转用1:1的平面结构,并通过高达1GiB的DDR31600DRAM(较低容量的型号使用512MiB的DRAM)将整个映射表缓冲,从而达到了极为出色的随机访问性能,根据我们的测试,IntelSSDDCS3500480GB在256队列深度下,读取延迟降低了46.8%,写入延迟降低了96.0%,它可以提供84.3K的4KiB随机读取IOps以及63.7K的4KiB随机写入IOps,远比基于第二代主控的IntelSSD710要高。


第三代IntelSSD主控:PC29AS21CA0,来自IntelSSDDCS3500,Cache容量为1GiBDRAM

  只是需要注意的是63.7K的4KiB随机写入数值需要4KiB块对齐,在不对齐的情况下,S3500只能达到14K的4KiB随机IOps。


IntelSSDDCS3500总拆解图

  经过实际检测,我们还发现了SSDDCS3500内部使用两个35V47uF的电解电容,储存了高达33.29V的电压,这样的结构可能跟S3500采用的非对称NAND芯片方案(14个32GiB芯片、1个64GiB、1个16GiB)有关联。 


IntelSSDDCS3500固态硬盘,20nmMLC,发布日期2013年Q2,代号Wolfsville

  还有一项未来得及表现的是IOps稳定性,在我们的测试当中,IntelSSDDCS3500表现很稳定,包括SSD710的固态硬盘在经过笔者的测试脚本测试数次之后,性能都有较明显的降低,S3500则没有。除了不太耐写之外,IntelSSDDCS3500是一个让人十分满意的产品,这让笔者对IntelSSDDCS3700的兴趣变得更大了。


IntelSSDDCS3500拥有比标称值高4.5倍的4KiB随机写入性能,只要你的操作是4KiB对齐的