PCEVA,PC绝对领域,探寻真正的电脑知识
开启左侧

Anobit Genesis T 系列企业级SATA SSD评测

  [复制链接]
neeyuese 发表于 2012-2-3 19:02 | 显示全部楼层 |阅读模式
点击数:16254|回复数:20
引言



这次PCEVA测试的SSD来自以色列Anobit公司。产品型号为“Genesis T25-400 SSD SATA 400GB”

Genesis T系列属于企业级,盘体为2.5英寸,SATA 6Gb/s接口,采用高质量25nm MLC NAND颗粒搭配Anobit公司的专利MSP技术,相比只采用标准MLC颗粒方案,极大的提升了性能和耐久度。

大家可能会对这家公司比较陌生,因此在测试产品之前,我们先来了解一下Anobit公司的发展历程:

Anobit是一个基于NAND的解决方案供应商,成立于2006年。它的产品范围是MSP组件和企业级固态硬盘。Anobit公司与全球顶尖的闪存生产商、电子消费零售商与存储系统服务商都有着亲密合作。苹果iPhone手机、iPad平板电脑与MacBook Air笔记本以及其它系列产品,均要在技术上依赖该公司的解决方案。

2010年6月 - Anobit进入SSD控制器市场,并且宣布采用其专利的内存信号处理技术(MSP)的SSD样品,基于此技术的MLC SSD产品,可以提高20倍以上的耐久度,以应用于需要高耐久度和高IOPS的苛刻服务器环境。它的主要竞争对手是SandForce(SSD控制器)和STEC(SSD产品),因为这两家公司都是针对2.5英寸高IOPS市场的。

Anobit公司表示,该公司的技术由信号处理算法组成,信号算法会弥补NAND闪存的部分物理意义上的局限。Anobit的MSP使3000 P/E的MLC NAND延长到了50,000 P/E,相当于保证了在每天写入10倍全盘容量的完全随机数据情况下,也可以达到5年的使用寿命。


Anobit Genesis第一代SSD的持续读写性能为220MB/s和180MB/s,随机读写的IOPS分别为30,000和20,000。

2010年8月 - 海力士公司宣布,它已经选定Anobit的SSD控制器技术与自己的20nm工艺颗粒搭配在新的SSD设计方案内。

2010年12月 - Anobit的首席科学家纳夫塔利索默写了一篇文章 - 信号处理和NAND快闪记忆体的演变。介绍了DSP的作用,是在于改善了从闪存单元中读取的逻辑状态的完整性。

2011年3月 - Anobit宣布,它已经与海力士半导体合作开始大批量生产其MSP2020 NAND快闪记忆体控制器。 MSP2020控制器可以支持所有的最新工艺MLC和TLC NAND,使用在耐力和性能密集型的嵌入式计算应用上。 MSP2020控制器支持ONFI 2标准的NAND接口到主机处理器,单颗支持到128GB。

2011年9月 - Anobit宣布了当时最快的2.5英寸SATA固态硬盘,基于其自己的控制器设计,新的Genesis固态硬盘(高达400GB)搭配使用2xnm MLC NAND闪存,可提供高达70,000/ 40,000 IOPS(4K块大小)非压缩数据的随机读/写和510 MB/s的持续读写传输率。

2011年12月 - 业界盛传讨论苹果可能以4~5亿美元收购Anobit公司。苹果似乎是对Anobit公司MSP技术支持的MSP20xx内置闪存控制器颇有兴趣,该系列控制器内置于智能手机与平板电脑,能够显著改善设备运行状况。



企业级环境下的耐久度需求计算,出现的问题和MSP(Memory Signal Processing) 技术解析


MSP ™  Technology

延长NAND闪存耐久度限制是今后推动嵌入式设计创新的关键点。信号处理技术的应用则像一块坚实的踏脚石,把NAND FLASH的使用层面带入到了一个新的高度。

2011年12月,业界盛传讨论苹果可能以4~5亿美元收购Anobit公司的技术。是什么原因促使苹果会为一个只有5年历史的公司花钱?由于苹果是当前NAND颗粒的最大消费者,这显然是一个战略性的收购。就像由美光科技在2010年收购的Storage Genetics公司一样。Anobit和Storage Genetics都是发展高级ECC和信号处理技术的公司。

随着向2xnm之后的NAND工艺技术过渡,位错误增加导致如BCH,RS和汉明码等纠错码将不再有足够的能力纠正传统的错误。继续使用这些代码会明显增加编码冗余方面的开销,而纠正错误的数量增加造成的读取延迟增加也是另一个问题。此外随着每一代存储单元中存储的电荷数量逐渐减少,降低了信噪比,因此需要加强闪存控制器的信号灵敏度,在使用更高等级的ECC算法同时,信号处理技术的应用势在必行。

我们知道SSD相比传统机械硬盘带来了突破性的存储IO性能。但是在性能大幅度提升的同时,另一方面企业级数据中心一直受到NAND颗粒底层稳定性带来的困扰。在最高操作压力下,需要保证写入操作后的数据完整性在存储介质降级后依然可以达到规定的要求。缓存区的使用就显得尤其重要,当数据不断被写入存储介质时,写入缓存自然是最重要的减缓磨损的操作方法,而读缓存虽然重要性比写入缓存低,但也取决于缓存管理算法来建立和维护缓存数据的相关性。

NAND颗粒的耐久度一般是用每个闪存单元能够写入/擦除的次数计算,我们把一次写入/擦除定义为P/E。而SSD硬盘的耐久度则取决于全盘NAND颗粒容量和耐久度的总合。如果要把颗粒耐久度换算成SSD耐久度,我们需要知道一些基本的SSD系统观念。首先,让我们考虑写入放大,写入放大是实际写入物理介质数据量和用户写入数据量之比。造成写入放大的主要原因是闪存写入的最小单位是页,而擦除最小单位是块。写入放大会明显受到写入的数据形态、磨损平衡的考虑和垃圾回收算法的影响。另外一个明显影响写入放大的因素是预留空间(Over-Provisioning),大容量的预留空间可以大大的减少写入放大,而缺点则是大容量的预留空间势必带来更多的花费。目前已知的还有一个可以减少写入放大的技术是压缩,但是也会有小问题,例如市场上的SandForce主控由于没有支持外置缓存,因此内部采用了2级映射,造成万一文件压缩率低的话,垃圾回收时的写放大会明显增大。



增加30%预留空间可以降低最差情况下的垃圾回收造成的写入放大


那么企业级环境下到底需要多少耐久度呢?一般来说,企业级的环境下要保证5年的寿命,而每天可以写入至少10倍于SSD全盘容量的随机不可压缩数据。在一个拥有20%预留空间的SSD下,一般最坏情况下的写入放大为2.7(典型),所需要的耐久度就是10X 365 X 5 X2.7 X 80% = 40000 P/E

SLC和MLC

SLC在每个单元内存储1比特数据,而MLC存储2比特数据。2xnm工艺的SLC能够做到50000 P/E(典型),因此完全够满足企业级耐久度需求。相对的最新工艺的MLC颗粒只能做到3000 P/E或者更少(典型),完全达不到企业级耐久度需求。MLC相比SLC能够便宜3~5倍价格,因此当前市场上MLC的占有率达到了约90%,成本低那么多,自然大大的刺激了在企业级环境下使用的需求。

eMLC和ECC

前面已经说过了,MLC只有3000 P/E,无法满足企业级耐久度需求,但是MLC的低价格吸引力实在强大,因此厂商就在MLC的内部参数和筛选里做了些许手脚,让MLC达到企业级的耐久度要求,那就是Enterprise MLC,也就是eMLC。

eMLC和MLC是在同一片晶圆上生产的,区别是厂商会先对晶片进行筛选(特挑),然后适当调节内部的参数(性能上为耐久度妥协),使得最终成品eMLC可以达到10000~30000 P/E的耐久度(典型)。这些特挑的eMLC颗粒价格比主流的MLC颗粒贵不少(2~3倍附近),而且性能上也不如MLC,如果靠增加OP容量减少写入放大的话可以勉强达到企业级耐久度需求。但是按照目前趋势,工艺提升到1xnm后,eMLC的耐久度进一步下降的话,即使靠增加OP容量也会经受不住企业级耐久度考验。

影响闪存耐久度最常见的地方就是ECC算法,靠着校验位来对数据位进行纠错。如果想让数据位的纠错能力提升,相同算法下就需要更多的校验位,而随着闪存的工艺越来越先进,需要的纠错能力越高,之前的算法已经无法满足新的ECC要求。(校验位占用的容量大到超过备用空间,不然影响到用户数据存放的容量,而且过多的校验数据处理也会明显增加延迟,自然会影响SSD的综合性能)因此ECC也在逐步改进,从最初针对SLC的Hamming ECC,而后针对MLC的Reed-Solomon(RS),目前最常用的是Bose –Chaudhuri-Hocquenghem (BCH)算法,随着近几年的发展,BCH的纠错区块能力需求从最初的针对512B发展到了如今的1KB甚至2KB。随着2xnm工艺之后的MLC甚至TLC的出现,需要更多的纠错能力,则BCH也不能够满足需求了,所以下一代的ECC算法则需要使用low-density parity-check(LDPC)或者Turbo-Code。这类纠错算法使用更好的循环解码来减少校验位的消耗并提升ECC效率。另外最重要的一点,不像BCH算法只支持硬判决解码,LDPC或者Turbo ECC纠错算法还支持软判决解码,软判决能够评估每个位的可靠性,从这些信息针对性的对容易出问题的数据位进行纠错,相比硬判决来说显著提升纠错力,高效率下也减少校验位容量开销。

不管如何,在错误位太多的情况下即使用上最有效率的ECC算法也无济于事。打个比方,一个512B的数据区出现了100多个Bit的错误,根据香农信息论的说法,在这种情况下没有任何ECC算法能够做到高效低开销来纠错,当然你如果用大量的校验位来纠错,自然是没问题,但是这样就显得没有任何实际意义。


NAND的物理磨损

闪存结构内部是由许多的存储单元阵列组成,每个单元包含有一定量的电荷,而电荷的多少是判断存储信息的依据(0或1),早期的SLC一个单元里存1个bit数据,只有2个状态,如今的MLC存2个bit数据,拥有4个状态,内部的氧化层用来防止电荷泄露来保证一定的数据掉电后保存时间。

闪存在使用中会遭受许多种类的物理磨损,其中一个关键点就是电荷泄露,指的是保存的电荷随着时间流逝,从氧化层中流出。另一个关键点是干扰,指的是当存储单元信息发生改变的时候(读/写),它周边的存储单元会因为这次充放电造成干扰(导致内部Bit出错)另外擦除时的高压也会大大减少闪存的耐久度,加速内部氧化层的破坏,减少数据掉电保存期。随着闪存工艺越来越先进,存储单元内的电荷数量也在减少,在最新工艺的TLC颗粒上,不同数据bit的电荷表示等级之间甚至还不到100个左右的电子,这个导致了情况更加恶化。那么既不想用昂贵的SLC,又要达到企业级要求怎么办?那就要靠MSP - Memory Signal Processing 技术了。


MSP存储器信号处理技术,是利用专用处理器对闪存颗粒进行信号采集,滤波,估值,微调,识别等处理,加强了抗读写干扰,延长数据保存期,对有缺陷的单元进行前期校正或者后期补偿修复,自然也就大大提升了颗粒的耐久度(P/E)。MSP存储器信号技术利用闪存独特的性质和架构,弥补了闪存的物理限制。打个比方,闪存存储单元里的悬浮栅极出现耦合变形就可以靠存储器信号处理技术测量和补偿。相比传统的做法,信号处理技术和软判决解码ECC的结合需要在主控制器和闪存之间传递更多的信息,在算法和系统设计上需要考虑到这一层,不然SSD整体性能会受到影响。





MSP技术,已经在当前最先进的智能手机、平板电脑和媒体播放器上大量采用(技术整合进了设备中的闪存控制器里)。上图就是MSP控制器的主要组成部分,最特别的部分就是那个信号处理器,包含了完整的闪存信号过滤和物理结构缺损补偿的硬件加速(如前面说的补偿悬浮栅极耦合变形,读写干扰等等,需要大量的专利技术和闪存厂商的内参支持),而最靠近这个信号处理引擎的是高级ECC引擎(采用了LDPC软、硬判决的ECC算法,已经可以支持到1xnm工艺的ECC需求),2个组件相结合(前者计算信号并进行前期校正或者后期补偿,后者负责纠错)成特别的”组合式“闪存转换层(FTL),这个”组合式“闪存转换层设计就是MSP技术提升耐久度的关键(LDPC的优势在于软判决,而软判决的准确性取决于信息量的多少)。使用MSP技术,主流MLC闪存的耐久度可以提升约20倍达到50000 P/E以上,让MLC的耐久度达到企业级耐久度和稳定性需求(数据保存期也跟着提升),真正的取代昂贵的SLC颗粒,随着闪存市场的快速更新换代,信号处理技术是支持下一代工艺的必不可少的技术之一。

总结:MSP技术和LDPC技术的搭配保证了MLC拥有企业级需求的耐久度需要,在耐久度达标的前提下,再来谈下一步的数据完整性需求。


企业级数据完整性(Data Integrity)的需求

机械硬盘在空闲的扇区里写入数据然后在同样的扇区里读取出数据,如果数据需要改动,那么机械硬盘的控制器只需要简单的覆盖原来的扇区即可,然后指派一个新的CRC值即可。如果是SSD的话,则必须在每次写入新的信息前擦除整个Block的数据,因此一般是会使用另一个之前被擦除过的Block里来保存改动后的数据,并不改动原来是旧数据的Block。正是因为这样,如果固件设计不当则可能返回老数据,这就是SSD的数据完整性问题。

一般来说,SSD的数据完整性保证至少需要保证以下4点:(基本要求)

1.ECC(Error Correction Code)的实施 - 保证了当数据从闪存颗粒里读出时产生的错误能够被即时纠正。根据ECC的算法和校验位预留等级,SSD主控制器能够在读取碰到错误时进行纠错,保证了用户拿到的数据为正确数据。

2.CRC(Cyclic Redundancy Check)的实施 - 端对端的数据保护,保证了用户写入和读取的数据在主机和存储介质上是相同的。例如数据在进入接口后,SSD控制器生成CRC值并与用户数据中的元数据合并,当数据需要取出的时候,控制器会进行CRC值的校验来保证当前数据是否还是原本的数据。CRC只能检测错误,并不能修复错误,但是CRC避免了“静默数据错误”

3.L2P关联 -  用来保证数据是从正确的地址里取出的。对于机械硬盘来说,逻辑扇区和物理扇区是固定对应的,而SSD则是逻辑和物理闪存的映射。

4.数据版本确认 - 用来保证当前的数据为最终的版本而不是旧数据。机械硬盘没有这个烦恼,因为它是直接覆盖旧数据的操作方式。


ECC

无法纠正的位错误率(UBER)指的是当从存储介质里取出数据的时候出现一个无法纠正的错误。对于企业级环境来说,这个指标必须保证至少在每读取10e16 bit数据时只出现一次扇区的错误。这个概率之所以适用于机械硬盘是因为可以保证即使24小时开机也最多只会在1年里出现1次错误。(假设传统机械盘传输率典型50~100MB/s的话) 但是我们知道SSD的传输率非常快,几倍于机械硬盘,所以UBER必须达到更高要求,企业级需求自然提高到10e17 bit。原本SSD的ECC的需求就比HDD高(SSD的传输率更高),而固件的复杂度,颗粒工艺的进步则更大的提高了SSD对ECC的需求。而且厂家们在ECC实施的时候还要考虑到主控对当前ECC算法处理时间和耗电。(ECC算法类型,校验位设置很关键)

CRC

根据之前的说明我们知道机械硬盘或者SSD能够通过ECC来纠正发现的错误。但是PCB上的内存(缓存),固件(FW),或者硬盘上其它的元件甚至软件呢?它们可能会在数据写入缓存前改动用户数据或者在读取数据后改动数据并发送给用户。这种非常严重的问题叫做“静默错误”,因为用户并不知道错误已经产生。假设在金融类行业出现这种静默错误,一直拖到审计对账时候才发现,可能已经拖了几周或者几个月了,造成的损失可能是难以估量的。在企业级应用中出现这类错误是无法让人接受的,所以CRC被用来解决这个问题。CRC设计是发现静默错误,它并不能纠正错误,所以如果数据已经出错,要恢复的话,必须靠RAIN类似技术来恢复。(RAID类似的阵列冗余恢复)家用级SSD里一般不带恢复功能,只带基本的检测。


L2P地址关联和数据版本确认

可能对于机械盘来说,靠ECC和CRC就能保证数据完整性了,但是对SSD来说却不行,因为之前说的SSD无法覆盖操作,必须擦除才能写入。因此在更新数据的时候,旧数据依然留存在闪存颗粒上,如何保证我们请求的数据一定为最后更新的数据版本呢?(在用户n次更新数据后,SSD中可能包含了n多个旧版本的数据)这就需要L2P(逻辑到物理映射)关联不能出错。设想一下,如果L2P关联出错的话,ECC会正常处理旧数据(ECC只是负责数据纠错),CRC无法判定出数据有问题。(确实是原始数据,只不过版本不对)那么最后导致用户拿到了旧数据而SSD认为是最新的数据。这导致了另一种“静默错误”问题。要避免这类情况发生的话只有靠SSD主控开发商多做测试,大多数是由于固件上的算法bug造成的。当然还有一种可能就是忽然掉电引起的,比如LBA映射表正在更新的时候掉电或者MLC出现lower page错误,因此企业级掉电保护的设计也很重要。


RAIN(Redundant array of independent NAND)类似技术的应用

之前的MSP技术保证了在企业级环境下闪存的耐久度,那么用户数据的安全性又如何保证呢?企业级SSD自然要有保护数据的方法,这里就介绍下这个RAIN技术。大家都知道RAID 5能够在损坏1颗硬盘的情况下保护数据,因此成为了最普遍的存储性能、数据安全和存储成本兼顾的存储解决方法,在讲解前我们先来看下RAID 5的实施。



如图所示,这是机械硬盘上的RAID 5 模型,RAID 5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个硬盘上,当RAID5的一个硬盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。这里4块硬盘的总容量上有一块的容量做了奇偶校验,因此可使用容量只有3块盘,接下来我们开始想像在SSD里实施类似的保护技术,由于奇偶校验数据是分散保存的,因此SSD比机械盘在原始设计架构上更有优势。


只靠ECC已经无法保护SSD上的闪存颗粒了




和机械盘一样,SSD内部也有数据丢失甚至挂盘的风险,原始的保护数据方法是靠着单纯的增加所要求的标称ECC能力来纠错,类似早期的机械硬盘产品一样,早期的SSD确实光靠简单的ECC纠错就足够了。但是随着闪存颗粒做的越来越小和控制器的复杂度越来越高,为了数据安全则必须要超越简单的ECC纠错,就像机械硬盘的RAID使用一样。

机械硬盘的RAID 5成为了当今最普遍的性能成本兼顾的保护措施。日渐成熟的SSD市场也采用了类似的解决方案,但没有像机械硬盘那样采用特定的RAID形态,目前市场上不同的SSD解决方案采用的RAIN技术由于各自算法架构导致互相不通用的局面。(SandForce的"RAISE"类似RAID 5,Intel 320里的类似RAID 4的技术等等)下面我会稍微介绍下目前厂家在运用的RAIN例子



SSD架构介绍

为了显示SSD的设计对RAIN技术实施有利和它与RAID 5的相关性,需要先了解下SSD内部数据是如何分配存储的。SSD不像传统机械盘拥有磁头,磁道,扇区,SSD内部使用闪存存储数据,因此设计上复杂的多。




上图中,一块SSD PCB上包含了许多的颗粒,因此给只靠单盘即做成类似RAID 5数据保护架构成为了可能。SSD主控制器在操作中靠着尽可能的使用并行模式来提升整体的性能,就类似RAID 0架构使用的条带数据。
知道了外部架构后,我们再来看颗粒的内部数据架构,不同的控制器架构和固件设计也会带来完全不同的数据架构,而设计中的关键点之一就是尽可能最少的移动数据,这样会带来整体性能的提升,吸引更多的用户。





上图中展示的就是数据是如何存储进颗粒的,基本上所有的SSD,内部都是设计成类似RAID 0的条带架构。如图所示,主控把SSD分解成以LUN为单位,然后数个LUN组合成一个超级LUN。(在SSD中,LUN为最小的可操作单位)




如图所示,主控再把超级LUN里面的Block条带起来(RAID 0)并组合成超级Block,然后再把超级Block里的Page条带起来(RAID 0)并组合成超级Page。





如图,要使用RAIN技术,则必须牺牲一部分容量做校验位。比如我们在一个SSD上留下了37%的OP,那么使用RAIN技术后,需要再牺牲约8%的容量。(取决于保护数据的多少和不同的RAIN设计)下面来说说RAIN技术是如何恢复数据的。





为了保证数据的可管理性,必须是固定通道数的设计,例如图中每7个数据Page和1个校验Page搭配。





当数据写入颗粒时,新的校验位就会被生成,如果读取的时候只靠ECC即可纠错的话,则无需使用校验位纠错,RAIN也就不必要实施。




当数据从闪存中读取出,经过RAIN引擎后,如果发现这个超级Block发生错误,RAIN引擎就会执行并靠着校验位来恢复数据(XOR),而此时这个数据错误只是读取错误而已,而新的恢复出来的数据会写入到新的超级Block中去、(为了避免不必要的磨损,新超级Block中的其他数据可以是正常磨损平衡需要消耗的数据)。




为了避免不必要的磨损浪费和写放大(影响性能),错误的超级块并不会在恢复完后立马擦除并换个地方重新写入,而是在内部逻辑上做个标记,并完全锁住(擦写保护)直到下一次最合理的时机上再次完整擦写。(这样即可保证RAIN恢复操作基本无损性能)

上面的是美光P320h PCIe SSD中采用的方法,因为PCIe SSD不是很方便做多盘冗余,即使牺牲一点点性能也要保证企业级数据安全。

端对端数据总线保护类似技术的应用


用户写入的数据称为“用户数据”,而用来定义“用户数据”地址的LBA(逻辑块地址)数据叫做“元数据”(Metadata)。数据是从主机接口到缓存控制到闪存接口到闪存控制器到闪存颗粒来回传输的,这条路径可以通过完整的硬件或者软件方案来保护。





上图为典型的SATA SSD数据总线



按图所示,主机写入数据的路径以蓝色表示,而主机从闪存中读取出数据路径则以绿色表示。

1.从SATA传输的数据移动到主机FIFO。
2.从主机FIFO出来后,又进入了缓存管理器
3.之后缓存管理器又把数据发送到下一个FIFO中。
4.从第二个FIFO中出来后,数据进入了闪存FIFO中。
5.从闪存FIFO中出来后,进入闪存控制器中。
6.最终数据从闪存控制器中出来并写入闪存颗粒中。

上面是写入数据的路径顺序,读取则正好相反。

目前不是太差的SSD至少会有些基本的数据路径保护功能,拿美光的SSD来说,不管是什么型号,都支持下面2个保护功能:

1.DRAM的L2P表校验。
2.用户数据合并LBA后和读取Page LBA的检查。

Intel的所有消费级SSD系列和企业级710系列也有类似LBA标的检查。(第二个功能,做法不同)



DRAM里的L2P(Logical-to-physical 逻辑到物理)表检查

采用NAND闪存介质的SSD写入以Page为单位,而我们的操作系统是以扇区为写入单位的(文件系统)。而且Page同时为最小的可以被标记位置的单位,一般Page大小为4KB或者8KB,随着工艺提升,今后会变成16KB甚至32KB。



如图所示,蓝色的为PCB,单个金色的块为Page,垂直的金色块组成Block,具体的Page和Block数量则取决于颗粒的工艺和设计。黑色的为SSD的接口,可以是SATA,SAS,PCIe或者别的。




我们的操作系统把存储设备按照扇区为单位操作,传统的机械硬盘有磁道和扇区,每个扇区为512KB,SSD效仿着这种逻辑地址方式。(为了和当前文件系统无缝结合)

由于Page和主机扇区大小不同,所以SSD内部必须要有自己的数据结构来保证主机读写数据的可操作性。SSD内部靠着创建虚拟扇区,模拟着类似机械硬盘物理扇区的方式来操作。这种模拟需要映射表架构,而映射表一般是在SSD的缓存里进行更新和维护,速度越快的SSD,映射表需要更新的也更频繁,映射表里保存了所有的逻辑-物理地址的映射数据,保证了SSD和传统机械硬盘的相同操作方式。


如图,这个数据结构被称为L2P表。

由于L2P是在缓存里处理的,所以表本身也有资料损坏的潜在可能,这导致的后果是非常严重的,因此要在DRAM里加入L2P表校验功能。

用户数据合并LBA后和读取Page LBA的检查


当主机写入数据到SSD时,2个关键要素会整合起来:实际写入的用户数据和数据原本地址的LBA数据逻辑合并。

打个比方,如果用户数据是房子的话,那么LBA就是这个房子所在街道的地址,所有写入SSD的用户数据都需要指派一个地址来表示,如图表示把用户数据和LBA逻辑合并并写入SSD。

当主机需要读取用户数据时,就会先去读取L2P里的LBA数据。例如:当主机读取数据时,就会先去找L2P里对应这个数据的LBA数据,并在读取LBA数据时进行校验,确认用户数据地址是正确的。



消费级的基本数据路径保护



在上面的2个基本功能基础上,某些SSD还会有更多的保护做法,比如再加入各FIFO的CRC检测和用户数据的ECC检测。

如上图所示,写入操作的话是SATA数据传输到主机FIFO前进行用户数据校验生成,出来后进行用户数据校验检查,接下来CRC和ECC纠错码产生并和用户数据逻辑合并,在进入闪存FIFO前再生成一次CRC,然后送进闪存FIFO,从闪存FIFO中出来时候再进行CRC校验并送进闪存控制器之后到闪存颗粒,读取操作则是完全相反的路径,这种频繁的CRC生成和校验操作保证了数据路径下的数据完整性,避免了静默错误。



企业级的完整数据路径保护


相比消费级的基础数据路径保护上,主要增加了缓存路径的纠错保护。(MPECC)



和SSD闪存控制器的ECC不同,当数据写入时首先会在主机SATA物理层里生成一个用户数据MPECC,这个MPECC进入在缓存管理区之后,和当前数据相关联的元数据也会靠着缓存管理区另外再生成一个新的元数据MPECC,并在进入闪存FIFO前会进行一次MPECC的校验,那么在缓存中的用户数据和元数据就都得到了保护。读取的操作就完全相反的路径即可。



数据缓存掉电保护类似技术的应用


虽然企业级环境下,不管是内部的电源或者外围的组件,稳定性都比消费级来的高档,但是还是不能保证忽然掉电的情况,而由于这类情况而造成的数据丢失更是不可容忍的。企业级SSD就是为这部分突发情况而设计的,一般内部都加上了超级电容之类的保护。

掉电分为间歇性和持续性掉电,主要是因为电源保险丝,线材问题,UPS问题,SSD电压管理模块出错,PCB问题,机械故障或者接口问题甚至环境因素。

当出现掉电问题后,SSD一般会出现以下3种数据丢失甚至坏盘的问题:(掉电保护的到底是什么?)

1)丢失用户数据:这个情况大多是因为用户数据还在写缓冲区里的关系,之前也说了,写缓冲区是为了提高峰值性能用的。在这个情况下,当SSD主控制器掉电后,写缓冲区里的数据还没有被写入到NAND里,这样就会造成了数据丢失。之后再次开机的话,主控制器可能会报告数据错误(取决于主控制器的算法设计)或者它会给主机之前的过期数据(掉电影响的“扇区”数据),后面这个操作就会出现静默数据错误,因为主控制器并不知道这些“扇区”内的数据是错误的,所以用户在操作系统里看到的文件虽然存在(例如视频和音乐图片等),但是当双击要播放使用时,却很可能报错了。
        
2)丢失映射表信息(LBA元数据错误):所有的SSD主控制器都是用映射表信息来操作相对应的逻辑地址和物理NAND位置的。当SSD内的数据需要读取时,必须有相对应的之前生成的并且更新维护过的正确映射表信息,而当数据写入之前写入过的逻辑地址时,映射表信息必须被更新。如果正确的映射表信息因为掉电而丢失了,那么SSD硬盘就会报数据出错,或者数据是“旧”的甚至在下一次上电后整个SSD硬盘都不识别了。
        
3)低位Page出错:MLC或者eMLC的NAND因为在每个物理Page里存放了2个逻辑Page的数据(每个存储单元里可以保存2bit数据。)当进行编程时候,低位Page(逻辑Page低的那个)是先编程的,之后才对高位Page(逻辑地址高的那个)再进行编程。当编程高位Page时,编程所需要的电压同时冲击同一单元下之前已经被编程过有效数据的低位Page上。如果这时候出现掉电,高位Page自然会出错,但是之前已经编程过正确数据的低位Page也会因为这次掉电而造成出错。(高、低位Page保存的数据可能是2个不同的文件,所以用户不知不觉中在对其中1个文件操作时,因为掉电把之前的另一个文件搞挂了,如果是关键数据,轻则系统文件挂,重则SSD整个因为元数据挂并无法修复造成不识别)当低位Page在之后的操作中需要被主机访问时,SSD会报告这个数据是不可恢复的错误。




企业级SSD大部分都带有掉电保护功能,允许在出现忽然掉电的情况下通过自带的电容供电来保证缓存里的数据能够完整的写回到闪存颗粒上。下次上机的时候电容会自动充电,为了避免充电中再次掉电造成资料损失,充电中的SSD一般工作在安全模式下(写入缓存临时禁用),充电时间一般都比较快,最多几分钟内即可完成。正常的SSD通电后首先读取ROM里的FW配置信息,然后跳转到闪存颗粒特定位置找到对应的最新版FTL数据地址,加载到缓存中来识别全盘用户数据,如果因为掉电造成FTL元数据损坏,大部分企业级SSD都带有重建元数据的能力(但是可能需要较长时间),当然最好是避免出现这种情况。(如果FTL元数据无法通过主控自带的能力恢复,则用户数据逻辑上就会因为关联问题导致全部丢失,甚至整块SSD无法识别。)

我们再来看看没有掉电保护的SSD掉电后出现的逻辑坏块图。(低位Page出错等问题)



Intel X25-M Gen2 80GB



海盗船Performance 3 128GB ( 等于浦科特M2S)

这种盘表现出来的形态就是用起来一切正常,不过系统里肯定有用户数据已经损坏了,当你下次访问的时候就会报错了。掉电造成的逻辑坏块(无法纠正错误)如果SSD固件设计的良好,一般不会自动加入新增坏块列表里,否则的话备用块很容易就被用完了,而当用户进行全盘Secure Erase或者覆盖到坏块区域的时候,即可在Erase操作后修复这种逻辑坏块。文件系统扫描是无法修复的,因为这是实际数据出错,文件系统并没出错。

记得在我测试美光m4 256GB稳定态的时候(连续IOMETER 2008 4KB随机写 QD32下跑了12小时以上),我们这个区域忽然停电(凌晨1点多)。第二天我重新开机,果然BIOS里无法检测到m4 SSD了,然后我就用大家都知道的”30分钟大法“,只接m4电源线,不接数据线让他挂那里通电10分钟左右,再接上数据线,认出盘后直接跑HDtune扫描,结果如下图:



这就是为啥SSD之前在BIOS里识别不到的原因,稳定态测试压力很大的时候忽然掉电,缓存里的数据还来不及写入到颗粒中,造成元数据和用户数据挂掉,开机后主板检测SSD,SSD的FTL表正在进行重建(损坏严重则可能重建失败),因此无法识别,而图中这个扫描出的那么多逻辑坏块,其实只是用户数据损坏的部分,实际元数据已经靠”恢复大法“重建完成,因此SSD能够被重新识别。(如果形容下就是被洗劫过的房子花了时间重新整理到洗劫前的样子,但是丢了东西的位置自然还是找不回来那个东西了。) Intel 320的RAID 4类似RAIN能力可以靠校验块数据恢复这里的逻辑坏块(用户数据),因此不太容易出现图中的”红点“,但是它并不支持元数据重建,如果那部分损伤严重,则开机都点不亮或者直接出现”8MB“,元数据的完整性前面说过了,和SSD固件的稳定性,主机内存稳定性甚至兼容性,数据通道的完整性,SSD内部的错误检测方式息息相关,一般只有高端的产品才能做到盘内尽可能完全的保护。

解释下: 元数据 + 用户数据 合并 -》保存进颗粒, 访问的时候需要先有元数据,才能访问到对应的用户数据。  
突发掉电: 元数据由于在缓存来不及更新到颗粒,下次开机需要重建,不然可能造成数据出错甚至无法访问SSD,重建和保护元数据的方式各厂商不同。(因为元数据是形容数据的数据,必不可少)
                  用户数据由于在缓存来不及更新到颗粒,下次开机元数据重建后,虽然地址正确,但是用户数据还是出错。(地址对了,房子却面目全非,出现上面HDtune的红点)

总结:ECC负责纠正用户数据错误, CRC防止非固件缺陷或忽然掉电等引起的静默错误,RAIN技术可以在CRC发现静默错误后进行纠正,另外能够保证DIE挂掉后的数据安全。



产品图片和看点




CNC外壳和品牌LOGO




型号和工作电压,以色列制造






很多高端企业级的SSD产品一般都喜欢三明治造型,把主控PCB和颗粒PCB分开,然后用数据通道连起来,按需搭配颗粒PCB板。




如图,我们在其中一块PCB的一面上看到一颗Anobit MSP-2040-A1 芯片,旁边一个空焊颗粒位,从针脚看是通用几种封装形态的颗粒的。(本盘采用的是TSOP封装)PCB另一边是8颗Intel的29F32B08JCME1(32GB单颗,4Die封装,Intel 320 SSD中采用)

另一块的PCB上的一面看到不少供电元件和一颗非常大的控制器的背部引脚,边上是3颗串一起的掉电保护电容。2块PCB之间用特殊的数据接口连接。


电容板连接的这块PCB从壳子上拆下来后的样子。



翻过来看,果然是一颗好大的主控哦,旁边是3颗美光D9 DDR3 -1333 CL=9 缓存,每颗256MB,总容量达到768MB。



大主控型号为MSP-6001-A0,内部参数资料未知,不过从搭配的缓存为DDR3来看,主频应该在1Ghz以上。



3颗电容串着历历在目,每颗是4F 2.7V,型号TPL-4.0/6X20,底部有PCB连接,属于可更换配件,有SN和配件型号。


主控和SATA接口处。



颗粒板拆下壳子后的样子,8颗32GB Intel 25nm MLC和1颗MSP-2040


翻过来是另外4颗MSP-2040和9颗32GB Intel 25nm MLC,每颗MSP-2040负责正反4颗32GB颗粒,总计128GB,而边上那棵MSP-2040单独控制一颗32GB的颗粒。



MSP-2040和颗粒



拆完后壳子上留下的导热贴和主控硅脂部分。



这个拓扑图中看到,那个只连接了一个颗粒的MSP-2040主要是用来做恢复备用区的,在没使用前他是起到OP作用。

Anobit 认为企业级部署里针对单盘SSD做内部冗余是一个既浪费钱又性能低的决策(不管如何优化,性能损失和耐久度消耗都是在所难免的),而且对固件开发要求高,复杂度也大,俗话说东西复杂了问题也会多。因此他并没有内部做冗余,而是通过自己的MSP技术大幅度提高整盘的稳定性前提下,增加一定量的备用颗粒(没出错恢复数据前就是OP),并通过由外部阵列卡的冗余恢复数据到备用颗粒的方法。这样在数据安全的前提下,又可以保证高性能和耐久度,这种做法非常适合企业级的SAN系统部署,但是对高级工作站之类的单机或者简单环境下则显得保护不周。






从基本跑分图来看,单盘的成绩并不是非常夸张,不支持压缩,主控有识别重复数据的能力并用数据缓存优化。




从PCMARK 7的跑分来看,成绩属于当前中端消费级SSD附近。(由于PCMARK 7的压力太小,纯家用环境下根本无法显示出这块SSD的并发强项)




2块盘组成RAID 0后,成绩看上去也基本翻倍了。




不过跑PCMARK 7还是不如我们消费级高端单盘,估计很多人都要大跌眼镜了,很失望么?


企业级的强项就是稳定,这个稳定表现在数据完整性的稳定,另一个就是性能的稳定哦,下面来看下稳定态下的性能:




单盘稳定态性能分布图



RAID 0稳定态性能分布图

随机性能在稳定态下只下跌到了1/3附近,一般好一点的消费级SSD,一般会跌到1/8甚至1/16附近。


下面引用下Pcinlife的几个稳定态的图,和上面我跑的测试一样,不过硬件配置和驱动设置不同:(源文连接:http://pc.pcinlife.com/Storage/20111115/95.html



Crucial m4 128GB 稳定态性能分布图



浦科特M2P 128GB 稳定态性能分布图



海盗船Force GT 120GB 稳定态性能分布图



OCZ VERTEX 3 MAX IOPS 稳定态性能分布图

从上面4个消费级高端SSD的稳定态性能分布图中可以发现,m4的表现最好,IOPS按照读写分布也跟着平滑过渡,浦科特这个尖顶图,说明了它非常不适合负载高的服务器应用,而海盗船Force GT采用的SandForce主控由于在这里跑的数据为全随机无法被压缩,IOPS被完全限制在了30000附近,如果数据可以压缩,相信表现会非常不错,OCZ的VERTEX 3 MAX IOPS靠着颗粒上的优势硬是把表现拉高了一个档次。不管如何,从上面的图中来看,和真正的企业级SSD来比较,这些消费级差的还非常遥远。(其中影响最大的应该是OP的关系)


全文总结:这是我第一次测试企业级SSD,做完测试后想说句心里话,最近几年消费级存储发展的非常快速,特别是5年前固态硬盘的大量引入消除了用户体验上的瓶颈。这之后一发不可收拾,大厂小厂们一轮轮的加入或消失,就像十多年前显卡市场的疯狂,各大厂商各种技术百花齐放。但是从3年前开始,我却注意到一个现象,当时并没在意,现在看来问题正在逐渐显现,那就是大家都喜欢用IOPS来评价一块SSD的好坏,却忽视了产品的稳定性。确实对于企业级应用来说,无可否认IOPS是一个很关键的参数,但是企业级SSD在注重IOPS的同时更注重数据的完整性,消费级SSD其实并不需要过高的IOPS,但是厂商们却想着在有限的成本下尽可能的突出产品的性能,往往忽视了产品的稳定性。从另一方面来说这也是盲目的消费者和夸大宣传的厂商销售策略造成的,可苦了那帮真正搞技术的RD朋友了,我这里就经常听到他们的抱怨。一个产品的稳定性不是短时间能够看出来的,销售们往往要求RD们尽可能的拉高性能表现和缩短测试的周期来增加产品竞争力,消费者则被各种宣传伎俩看花了眼,认为那些华丽的数字越大越好,这兜里的钱就哗啦哗啦出去了。有了这第一次的邂逅,相信今后PCEVA会测试到更多的企业级SSD,我们希望带给广大消费者更多真正的优秀评测和产品。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 4活跃度 +19 收起 理由
Tommy1992 + 4 希望能早日完工
mmokdtmj + 5 很给力!
风雨阿贤 + 5 很给力!
submarine + 5 赞一个!

查看全部评分

submarine 发表于 2012-2-6 18:33 | 显示全部楼层
本帖最后由 submarine 于 2012-2-6 19:06 编辑

看颗粒编号,和G3 600G的一样,体质会不会好些?

PS:坐等稳定态测试和SMART截图,希望还能有稳定态异常掉电的测试
Liuxudong926 发表于 2012-2-6 19:17 | 显示全部楼层
感谢版主的评测!

看测试没什么特别的,不过做工很不错好大的电容啊。
另外缓存颗粒也很不错,外壳带散热片设计看来发热量不会小。
具体价格多少?如果价格合适多个选择对消费者来说总是好事。

点评

真正企业级的东西再便宜也会是普通消费类的好几倍,个人消费者还是玩消费级的吧  发表于 2012-2-16 23:36
建议你还是仔细看过文章再回比较好。  发表于 2012-2-6 19:30
98118 发表于 2012-2-6 19:32 | 显示全部楼层
本帖最后由 98118 于 2012-2-6 20:28 编辑

前排!!!~~~回复再重
比较关心掉电保护的问题?目前有哪些家用的SSD有掉电保护?
好像M4 M3 830都没有?

点评

科美COMAY就有掉电保护的产品。  发表于 2012-3-31 23:04
提醒下,记得补充编辑具体内容,否则只能当灌水回复删除,谢谢。  发表于 2012-2-6 19:46
cherbim 发表于 2012-2-6 19:51 | 显示全部楼层
这个不就是水果收购的那个公司么
ggxuelei 发表于 2012-2-6 20:24 | 显示全部楼层
不希望苹果的收购....他收购走的话,这技术估计很难再有其他人能利用了。
MLC搭配这技术制造企业级产品,对个人用户来说,更期待这技术能更进一步开发,让TLC的耐久度与可靠性达到民用级产品的水平,这样SSD的价格估计还能再降,直至逐步取代机械硬盘。
从性能上说,感觉对普通人来说,M4这样的性能已经满足了哈哈。

点评

我和你想的差不多,我多么希望消费级的质量上能有些长足的长进啊,可惜是用户选择了目前的局面,大家只看跑分,却不关心稳定性。  发表于 2012-2-6 20:27
mmdvcn 发表于 2012-2-6 20:35 | 显示全部楼层
本帖最后由 mmdvcn 于 2012-2-6 20:37 编辑

今天和一固态硬盘厂商的人聊天,得知EMLC的确良品率很差,价格控制不下来,很多家排队拿颗粒的厂商很无奈,不过25NM的SLC颗粒倒是批量出货了,很多厂商在加紧测试准备推向市场。
对于民用级,ANOBIT这个技术真的是解渴,如果能授权给其它厂商解决方案就好了,离我们就不会遥远。
还有个人希望东芝和三星也开发EMLC颗粒,虽然可能性很低。
kinno 发表于 2012-2-6 23:08 | 显示全部楼层
本帖最后由 kinno 于 2012-2-6 23:20 编辑

后排围观
这货价格上怎么样?先不论成本,这玩意销量上不去估计就便宜不了
我不是说我需要买这种货,我是希望这货越做越便宜怎么说也能带动消费级ssd降价吧
唉,说来说去还是得自己挣钱
mitsuhide 发表于 2012-2-6 23:40 | 显示全部楼层
eMLC和MLC是在同一片晶元上生产的

晶元----------是错误的

应该叫晶圆才准确,,,大陆半导体行业一般都叫晶片,台湾人才叫晶圆
dvcam 发表于 2012-2-7 03:15 | 显示全部楼层
有点搞不懂MSP的原理,它是对闪存颗粒和主控之间的信号进行处理?
但普通的闪存颗粒和主控之间跑的是数字信号,线上是高低电平,对这些信号“滤波,估值,微调,识别等处理”,就能延长P/E次数?
换句话说,如果闪存颗粒里面某些存储空间出现了物理磨损,闪存颗粒的I/O口线上跑的信号的某些属性(电压,时序,频率等)就会变化么?

点评

你可以仔细再研究斟酌下浴室的说法,然后再去翻M4测试了解NAND闪存存储数据的原理,应该就大致能想通了。  发表于 2012-2-7 10:41
nand的pe应该是固有属性,晶圆生产后应该不能再改变了吧?这个msp还是很神奇的,坐等高人解释  发表于 2012-2-7 09:18
okko 发表于 2012-2-7 13:35 | 显示全部楼层
回楼上,你的问题很有深度。
的确闪存颗粒和主控直接是数字信号,这个是不会变的(IO上不会有电压频率变化)
Flash内部每个cell上的电压是模拟信号,闪存提供命令允许主控读模拟信号,叫做读soft data,就是把实际的cell上的电压值回给host。
比如原本4k page,每个bit代表1个cell的电压,现在就会换成比如说4个bit代表1个cell,可以表达16个不同的电压值。
读soft data需要Flash厂商的内部spec,不是标准flash命令。

所谓PE,更加准确的表述是在该寿命下,数据错误率和数据保存期都还在可控范围内。
Flash 的cell与cell之间会有干扰,PE越高时,干扰越严重,严重到本来是1的地方电压降到0了,这就造成错误率。
如果对相邻的cell得到原始电压值进行信号处理,就能很大程度上消除干扰,得到正确的原始值,间接延长PE。

回kinno, 晶圆生产后,还有很多参数可以调,举个最简单的例子,擦除block的时间延长一点,那么就能保证更多的0恢复到1,那么cell的状态就更好一些。同理读和写都有很多参数可以调,甚至哪个block是SLC,哪个是MLC都能改,这样PE就可以得到控制,一般来说提高PE和降低性能是伴生的。

评分

参与人数 1活跃度 +5 收起 理由
neeyuese + 5 感谢解惑。

查看全部评分

ph3203485 发表于 2012-2-13 23:49 | 显示全部楼层
我们公司现在还在用BCH,而且还在想方设法costdown,差距太大了
mmokdtmj 发表于 2012-2-16 10:49 | 显示全部楼层
ggxuelei 发表于 2012-2-6 20:24
不希望苹果的收购....他收购走的话,这技术估计很难再有其他人能利用了。
MLC搭配这技术制造企业级产品,对 ...

已经收购了
---------------------------------------------------------------------------------------------------------------------------------------
2012/01/12

Apple官方本周二证实买下以色列快闪记忆体大厂Anobit,不过该公司拒绝公布交易的内容,包括收购金额和未来计划。

Apple将专注在技术整合上
在传言多时后,Apple的发言人Steve Dowling向Bloomberg BusinessWeek证实,公司在近期买下Anobit。

"Apple随时都会购买较小的科技公司,我们也不会讨论背后的意义或计划。"

外传Apple花了5亿美元买下Anobit,并且会在以色列成立半导体研发中心,这很可能是Apple开始整合重要技术的第一步,希望能在专利大战和技术大战上取得先机。

Anobit被最重视的技术「MSP(Memory Signal Processing)」将可以改善快闪记忆体的稳定性、性能和效率。同时快闪记忆体也被视为未来3C商品重要的零件。根据研究报告,iPhone在上一季消耗全球23%的快闪记忆体。
sunhui_hust 发表于 2012-2-17 10:42 | 显示全部楼层
首先,非常感谢版主。
再次,我想问一个问题,就是MSP2040 和MSP6001在整个板子上的作用分别是什么,MSP6001是主控,但是MSP2040是具体用来做什么的,请楼主讲解,谢谢
s9121240 发表于 2012-2-25 18:00 | 显示全部楼层
浴室大的測試文真讚,多方面分析,不知MSP技術用在TLC顆粒會是如何,或有其他廠商有類似技術,真期待1TB的SSD在消費級普及
neeyuese  楼主| 发表于 2012-2-25 18:55 | 显示全部楼层
目前来看,随着TLC在SSD上的使用,信号处理是必不可少的一步,所以2013年消费级产品上应该会看到信号处理技术,而直到那时搭配上了信号处理,TLC才算真正的能够在SSD上放心的使用。

苹果等大公司看准时机收购这类有技术的公司,保证了自己今后几年在闪存工艺提升和耐久度降低的环境下一帆风顺,不得不说是一个非常有前瞻的饿做法。
kinno 发表于 2012-2-26 21:47 | 显示全部楼层
okko 发表于 2012-2-7 13:35
回楼上,你的问题很有深度。
的确闪存颗粒和主控直接是数字信号,这个是不会变的(IO上不会有电压频率变化 ...

还是不能理解。
我提一个看法:可否把nand的“体质”看作斜面的摩擦系数?想让一个东西从斜面滑下来的时间长点(想让nand寿命变长),可以把斜面放的平缓一些(降低nand的写入速度),而为了让物体快速从斜面滑下,可以把斜面放置的陡一些(提升nand写入速度,不惜牺牲寿命),不管如何放置,斜面的摩擦系数是不会变的。我想问的是,nand的天生体质(暂且理解为速度与寿命的乘积,因为速度和寿命不容易兼顾),可以靠后期调整来干预?
lhb1300 发表于 2012-3-2 13:53 | 显示全部楼层
果然ssd的稳定性第一,性能第二.
果然mlc颗粒到了寿命后期会变得不够稳定.
果然2xnm的mlc稳定性不如3xnm的mlc,同理1xnm的不及2xnm的.
还是庆幸一直坚持买3xnm的ssd,虽然性能不够高,但也能满足日用.

点评

偶也买3X NM 的SSD。平均一天写入10G,空余空间还可以写入130年。那就随便用啦。  发表于 2012-3-31 23:07
star_xin 发表于 2012-3-26 23:21 | 显示全部楼层
企业级的产品的确和民用的着重点不同
pako 发表于 2012-3-27 23:54 | 显示全部楼层
可惜啊给收购了.......这个MSP技术真真普及的话,1TSSD 能降到民用价格指日可待~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部