存储 频道

SSD固态硬盘2012终极横评及选购指南

  【IT168 评测】“随着闪存价格的滑落,SSD已经不再是遥不可及的奢侈品,SSD固态硬盘的好处已深入民心,本文是如何选择2011至2012市面所售各种SSD固态硬盘的终极指南,发烧玩家必看!”

  在过去 30 多年,硬盘驱动器一直是电脑中占统治地位的存储媒体,相关的主要开发主要由 IBM(硬盘部门后来被日立收购)、希捷、西部数据等大型公司参与及推动,期间还有 Conner(康纳)、Quantum(昆腾)、Maxtor(迈拓)、Micropolis(活跃于 80~90 年代)等但是大都退出历史舞台,目前在亚洲方面还有三星、富士通等公司依然保留着对硬盘领域的坚守。

  机械硬盘行业的参与者一直以来也就寥寥数家,究其原因是机械硬盘制造业务需要占用极高的资源,硬盘驱动器所涉及的元件和装配需要极为先进复杂的制造设备,要求具备电子行业和机械行业最精密的工程技术和生产线。

SSD固态硬盘2012终极横评及选购指南
拆掉电路板和外壳后显露的机械硬盘内部构造

  例如机械硬盘里表面旋转速度达到每小时 100 公里的盘片离不开造价高昂的无尘室进行装配和维修,硬盘驱动器制造商要生存下去必须要有强大的资本和管理水平,中小企业要参与其中并获得持续发展的机会已经不存在了,能玩的就是买个盘体回来然后再套一个壳当成是移动硬盘卖。

  不过到了 2006 年,存储市场出现了新的景象,被称作 NAND 闪存的新式存储媒体开始有大展拳脚的迹象,除了 U 盘外,经过像 SimpleTech 这类小型公司十多年耕耘的 NAND 闪存 SSD 开始受到业界巨头的重视。

  在 2008 年,所有厂商生产的 NAND 闪存产品首次超越了 DRAM 产品,而到了 2009 年,已经生产的 NAND 闪存产品位元数全面超过历史上所生产的所有 DRAM 产品位元数总和,强大的产能使得 NAND 闪存制造成本降低到一个相对合理的水平,市场上大量的 U 盘蜂拥而至,再也没有多少人念叨是否需要给 PC 安装软驱,甚至光驱也因为 U 盘、互联网的出现而受到很大的挤压。

SSD固态硬盘2012终极横评及选购指南
美光 Crucial M4 SSD 拆解图

  生产 SSD 所需要的资源对许多中小企业来说并不算很大的投资,只要能从半导体制造商那里获得 NAND 闪存、BOM(物料清单,例如闪存控制器、固件、PCB 及周边电子元件等),一家小作坊也能推出自己品牌的 SSD。

  由于 SSD 是一个还没有出现垄断而且被视作可以带来巨大成长空间的市场,一时间大量的厂商参与其中,给近年来增长乏力的 PC 市场中带来了久违的热闹。

  固态硬盘完全没有运动部件,机械硬盘所特有的寻道时间、马达转速都和它无关,但是另一方面由于闪存本身与生俱来的一些特性,使得闪存 SSD 并未能像 DRAM SSD 一样成为一个完全的随机存储驱动器,在极端个别的情况下性能甚至会比机械硬盘更糟糕。

  在数据安全性上,SSD 和硬盘相比也是既有利的一面也有不足,例如由于没有运动部件,抗震能力要高出不少,尤其是移动存储领域这是非常大的优势;在防止数据泄密方面,SSD 可以透过快速的内部安全擦除指令彻底删除掉数据;另一方面 NAND 闪存存在着其他问题会导致可靠性降低,这些问题我们会在下面介绍。

  NAND FLASH SSD 的前身——RAM SSD

  SSD 现在主要是指基于 NAND FLASH(与非闪存)的半导体存储驱动器,由于被认为可以替代传统机械硬盘,我们又将其翻译为固态硬盘,尽管这个东西里不存在任何盘片。

  当下其实已经有一些诸如相变内存(PRAM)、磁变阻内存(MRAM)、电阻内存(RRAM)、 有机内存(ORAM)、纳米通道内存(NRAM)以及 NOR 闪存等非易失性存储新兴技术,但是由于成本、技术成熟度、容量等因素,目前的 SSD 都几乎毫不例外地采用 NAND 闪存。

  NAND 闪存具备一些非常诱人的特质使它非常适合于 SSD,但是另一方面它也存在若干缺点使人们无法可以在毫无顾虑的情况下将其作为机械硬盘的取代者。

  在电子计算机还是大型机当道的年代,人们把可以无需依照顺序来存取的存储设备称作 DASD(直接访问存取设备),例如硬盘就属于 DASD,磁带机则不属于 DASD。

  在 NAND FLASH 问世之前,已经有一些能模拟机械硬盘的半导体式存储驱动器可以充当 DASD。

  例如 StorageTek 公司(也就是 STK 或者 Storage Technology Corporation)在 1979 年就推出了容量为 90MB 的 RAM SSD(随机存储固态驱动器),每 MB 的价格高达 8800 美元,这个 RAM SSD 的主要作用是虚拟内存。同年,德克萨斯内存系统(Texas Memory System)公司也向石油公司推广容量为 16KB的 RAM SSD。虽然 SSD 问世了,但是这时候的 SSD 更多的是作为系统内存的扩展。

  采用高密度 DRAM 芯片的 SSD 作为 DASD,可以避免旋转盘片媒体和移动读写头造成的可变寻道时间、盘片旋转时间,实现非常快的 I/O 操作,一般情况下 SSD 的 I/O 操作能达到旋转式硬盘 30 到 40 倍的速度,而且除了掉电意外,整个 RAM SSD 存储系统都能实现完备的容错能力。

  NAND FLASH 技术

  1984 年,在日本东芝公司工作的舛岡富士雄博士在 IEDM 大会上正式公布了他称作为 FLASH EEPROM 的新式存储器,而 FLASH 这个名称的来源是舛岡认为这种存储器的擦写过程类似于相机的闪光灯放闪。FLASH 最初的用途是用来替代 EPROM 的,但是现在它已经成为最常见的存储媒体。

  CMOS(互补式金属氧化物半导体,Complementary Metal-Oxide-Semiconductor)内存一般分为两类,一类称作 RAM,而另一类称作 ROM。

  RAM 的特点之一是易失性,一旦供电断掉,RAM 内保存的信息就会丢失。

  与之相反的 ROM 则是非易失性,即使供电断掉后,ROM 内保存的信息依然能维持很长的一段时间,例如 EPROM。EEPROM 和 EPROM 的不同点在于前者可以使用电子方式进行擦除,而后者需要紫外线。FLASH 闪存属于一种 EEPROM。

NAND Flash闪存技术

  FLASH 主要有两种类型,即 NOR 型和 NAND 型(由东芝公司于 1988 年首先推出产品)虽然 NOR 可以实现同时读写故而具备较快的随机性能,但是由于后者具备更快的持续性能、更多的可擦除次数、更高的存储密度,因此 NAND 型成为低成本存储中最常使用的闪存。

  其实早在 1985 年Intel的实验室里已经有一个能运作的 64-KB闪存,但是让人惊讶的是当时Intel对这个闪存的商用化并不感兴趣,如果不是 Gordon Moore(戈登.摩尔)和一群非常果敢的先行者(例如 Pashley 博士以及他的团队),Intel根本不会进入闪存市场。

  到了 1986 年,Intel专门成立了一个独立的闪存业务部门,两年后(1988年 4 月),Intel推出了一款 256-KB闪存(基于 1.5 微米工艺,面积是 36 平方毫米)。与此同时,一家位于巴黎的公司——Eiffel Tower 公司推出了采用闪存作为媒体的“胶卷卡”式数码相机,而后来更名为 SanDisk 的 SunDisk 公司也在这一年成立。

  在 1987 年,舛岡富士雄博士在日本东北大学期间发明了 NAND 构造的 EEPROM 存储单元,不过直到上世纪 90 年代中期之前,NAND FLASH 都由于若干个问题未必广泛采用,在此期间市场的主流是Intel发明的 NOR 型闪存,像早期的 CF 卡就是采用 NOR 闪存的。

  但是随着 MP3 播放器开始崭露头角以及数码相机迅速获得消费者青睐后,NAND 闪存开始迎来辉煌,到了 2005 年 NAND 闪存终于超越了 NOR 闪存成为市场的领导者,也是在这一年Intel和美光成立 IMFT 公司专门合作生产 NAND 闪存(在这年之前这两家公司都没有 NAND 产品)、微软首次提出了混合硬盘的构想。

  两年后即 2008 年,Intel将其 NOR 闪存业务部门剥离掉,后者成了一家独立的公司——Numonyx,这标志着从这一年开始Intel全力开拓 NAND 闪存,不过比较搞笑的是,美光在 2010 年亿 12.7 亿美元收购了 Numonyx,再次体现了美光和Intel一直以来的耐人寻味的基情。

NAND Flash闪存技术

  上图是 MOSFET(金属氧化物半导体场效应)晶体管的示意图,其中包括了源极、栅极、漏极三个端以及第四端的衬底。

NAND Flash闪存技术
当我们对 MOS 管栅极施加一定电压值后,源极漏极之间会形成可让电流通过的沟道
这个形成导电沟道所需的栅极电压值被称作阀值电压(Vt)

NAND Flash闪存技术
当晶体管的电压达到阀值电压(Vt)后,源极的电子就可以透过沟道跑向漏极

  栅极在这里的作用就相当于水管上的开关,用来制造和消除源极与漏极之间的沟道,透过控制栅极电压,实现允许或者阻碍源极至漏极之间电子的通过。

  那么源极和漏极形成电流沟道又和闪存能断电保存信息有什么关系呢?这就涉及到另一种形态的 MOS 管:浮栅 MOS(FGMOS)晶体管。

NAND Flash闪存技术

  浮栅 MOS 晶体管其实就是栅氧化层和基底之间增加了一个浮栅和一层浮栅氧化层,数据保存的位置就是这个新增的浮栅内,包括 NAND 闪存在内的非易失性半导体存储器都有这个浮栅的存在。

  执行数据写入操作的过程其实就是将电子充进被绝缘体包裹着的浮栅内,而将数据擦除就是将电子从浮栅中抽空,这其中电子在隧穿氧化层跑来跑去的现象被称作隧穿(对浮栅 MOS 管来说,有多种的电子注入、抽离方式,例如 NOR 闪存采用的是热电子注入来注入电子,不过我们这里主要讨论的是 NAND 闪存,所以以 NAND FLASH 最常使用的隧穿方式),是一种量子学现象。

NAND Flash闪存技术
图中的电流坐标是指漏极的电流,而栅极电压坐标是指栅极与源极之间的电压

  浮栅在这里充当一个电子陷阱,当达到阀值电压后源极至漏极之间跑过的电子就会被捕获进浮栅内,不过当浮栅被充电(写入)后,晶体管的栅极阀值电压会比写入之前更高,这意味着浮栅有信息写入后,源极与漏极之间搭建沟道所需要的电压更高了。

  在这里我们将充电前的阀值电压称作 Vt1,充电(浮栅写入)后的阀值电压称作 Vt2。

  存储单元的读取操作

  对 FGMOS 管的读取操作其实就是要想办法区分存储单元中的浮栅是否已经写入还是被擦除了,或者说区分其中存放的是 0 还是 1,这就涉及到两种情形:已经被擦除和已经被写入。

  我们知道,当存储单元(Memory Cell)被擦除或者说浮栅内不存在电子后,栅极阀值电压是相对较低的,源极和漏极之间可以在较低的电压(Vt1)下形成沟道让电流通过。

  例如 Vt1 为 3 伏特的话,我们就对晶体管的栅极施加 3 伏电压,漏极和栅极就能有电流通过。

存储单元的读写、擦除操作
如果浮栅已经写入,栅极施加 Vt1(3 伏)后源极与漏极是无法形成沟道的

  但是如果施加了 3 伏特电压后,漏极和源极依然没有电流通过,就意味着浮栅中存放着电子,是被写入了的。

  如此一来,通过施加 Vgt1 我们就能区分存储单元是否已经被写入或者被擦除,既然能区分,也就能完成读取操作获知这个存储单元里的位元状态到底是“1”还是“0”了。

  存储单元的写入操作

  对 FGMOS 执行写入或者说编程动作的目的其实就是将电子移动到浮栅内,我们前面说过这个过程其实就是一个穿隧现象。

存储单元的读写、擦除操作
闪存存储单元的写入操作动画展示(红色圆点为负极电子)

  在源极不连接电源,漏极为 0 伏特的情况下,我们透过对栅极施加 20 伏特电压(这个电压要比打通源极漏极之间沟道的阀值电压高得多,也就是我们前面所说的 Vt2),就能将第四端或者说衬底处的电子俘获进浮栅内,而后这些电子将会被困在浮栅内从而让信息得以保存。

  由于二氧化硅构成的氧化层绝缘性能较佳,因此一旦电子进入到浮栅内,泄露出来的速度会非常慢,可以在不断电的情况下保存接近 10 年。

  存储单元的擦除操作

  把浮栅内的电子拉出来的其实就是写入动作的逆向操作:

  在源极、漏极均不连接电源,栅极为 0 伏特的情况下,我们透过对第四端(衬底)施加 20 伏特电压,就能将浮栅内的电子移动到第四端(衬底)。

  和闪存相比,机械硬盘的数据重写并不需要进行擦除这个步骤,只需要直接覆盖即可,而闪存必须执行此动作后才能重写。

  如果按照具体的东西来比喻,闪存就好像打孔卡,写入操作就是对卡片进行打孔,但是写入新数据的话却不能理所当然的那样换一片新卡片来打,而是要先把原先打掉的孔位粘补好然后再继续打孔。

  虽然打孔卡经过粘补可以再使用,但是这样的粘补操作是存在次数限制不可能永远都可以粘补下去的。

  闪存也一样,随着写入、擦除的次数增多,用来困住电子防止跑进、跑出的隧穿氧化层中陷落的电子数量也会增加,为了拔掉这些电子所需要的擦除周期也就越久,慢慢地氧化层积累的电子越来越多,最终会导致擦除动作难以将浮栅恢复为没有电子的状态,这个存储单元也就寿终正寝了。

  氧化层电子陷落积聚导致闪存失效和我们超频时提心吊胆的电子迁移是完全两回事情,当然电子迁移本身也是会导致闪存失效的潜在原因之一,但是影响相对来说低不少。

  闪存的写入动作+擦除动作可以称作一次放闪周期或者编程/擦除周期(P/E Cycle),不同类型、制程、工厂的闪存能实现的编程/擦除周期次数会存在差别,以 SLC 和 MLC 为例,前者的可编程/擦除周期可以达到 100,000 次,而 MLC 则只有 3,000 到 10,000 次。

  此外,除了上面所说为了保存信息而执行的写入操作外,NOR 型闪存还有另外一种写入动作:Compaction,即回补或者软编程。

  在执行擦除操作的时候,从浮栅拔出过多的电子,使得浮栅内的电荷超出了正常情况下“零电荷”的状态,这相当于浮栅内被充入了正电子。

  为了让浮栅恢复“零电荷”状态,就需要执行“回补”动作。不过 NAND 闪存作为一种 EEPROM,本身就是被设计成擦除后阀值电压是负值,因此 NAND 闪存不需要像 NOR 闪存那样执行 Compaction。

  SLC 与 MLC的区别

  这里突然提到的 SLC 和 MLC 是什么一回事呢?其实 SLC 就是我们上面所举的闪存存储单元那样,依靠阀值(已擦除)电压下源极-漏极是否有电流通过作为判断存储单元存放的信息到底是“1”还是“0”,因此每个 SLC 闪存晶体管可以存放一个二进制位元的信息。

  其实单个晶体管存放一个二进制位元已经是不错的了,要知道 SRAM(静态随机存储器,例如 cache 就是属于 SRAM)需要 6 个晶体管(或者说 4 晶体管加两个电阻)才能存放一个二进制位元。

  但是闪存市场这边的发展极快,如果能实现更高的存储密度,意味着能拿下更多的市场(通常也意味着更多的营收、利润),因此在 1992 年的时候,Intel就开始着手 MLC NOR 闪存的开发并在 1997 年正式推出产品。

  MLC 的中文翻译是多电平存储单元或者多比特存储单元,是采用不同的阀值电压来控制浮栅内存放的电子电荷(电荷就是指电子所携带的电量),然后依据精确的电压控制和电流感应技术实现源极、漏极沟道导通判断,藉此获知这个存储单元内存放的两个或者更多个存储位元信息状态,这时候的闪存存储单元其实就是一个模拟器件 而非数字器件。

NAND闪存芯片构成、SLC/MLC区别
双位元 MLC 存储单元的位元信息与阀值电压判定分布
图中虚线与实线之间的部分代表了读取裕度
对于双位元 MLC 来说裕度一般在 0.8 伏特左右
如果是四位元 MLC,读取裕度会缩小到 0.15 伏特

  在双位元 MLC 中,设置了三个电荷阀值分界点,共计可以有 4 个状态,这就可以实现单个存储单元(对闪存来说,一个晶体管就是相当于一个存储单元)存放两个二进制位元了。

  通俗地说,浮栅相当于一个酒桶(或者你能想象的其它容器),电子电荷就相当于酒桶内的酒量,我们要知道还有没有酒的话,只需要在酒桶底部或者你认为的最低处安装一个水龙头,然后拧一下开关看看有没有酒出来就知道了,这就相当于 SLC 的情况。

  对于一个 MLC 酒桶,能存放的酒量(电荷)没有增加,但是我们会在酒桶中部多安装一个水龙头,要知道酒桶上部有没有酒,那就先开上面的阀门,藉此就能知道酒桶不同部分的存酒状况,当然这也意味着需要额外的动作和更多的机关,故此 MLC 闪存的性能和可靠性也要低于 SLC。

  MLC 闪存不仅仅可以实现单晶体管双位元,而且可以实现三位元乃至四位元,但是相对的放闪周期也会随之下降,这是因为放闪后隧穿氧化层中的电荷增加会导致识别电荷量的阀值电压分界逐渐偏离设计值,MLC 具有更多的阀值分界,因此出现识别分界偏离的时间要比 SLC 更短。

  此外,温度变化、应力感应漏电流等也会导致界线偏移或者电荷量减少,这些问题导致存储单元失效的情况在 MLC 上都要比 SLC 更多、更早出现。

  因此即使在上个世纪 90 年代末双位元 MLC(2LC)闪存商业化发布的同时实验室中已经有三位元 MLC,由于人们对其耐久度的担心,直到现在也很少有三位元 MLC(8LC)闪存产品大量上市 。

  MLC 需要比 SLC 更复杂的控制电路技术以获得精确的电荷放置、电荷感知、电荷保持及纠错,而且放闪周期(双位元 MLC)只有 SLC 的 1/10,但是由于存储容量的倍增,双位元的 MLC 单位价格要比 SLC 便宜许多,配合错误纠正、阀值/边界余度控制技术(Intel称之为 HET 或者高耐久度技术)等可以提升 MLC SSD 的耐久度,因此现在企业级的 SSD 也都已经开始使用 MLC,这类 MLC NAND 闪存被称作 eMLC NAND 闪存。

  NAND 闪存芯片的构成

  正如我们前面所说的那样,NAND 闪存是基于存储块(block)为单位进行擦除动作的,不过除了存储块这个单位外,NAND 闪存还有存储页(page)这个单位,闪存的每次读写操作都是对整个存储页进行的。

NAND闪存芯片构成、SLC/MLC区别
美光 MT29F64G08CFACBWP-12 的 LUN、PLANE、BLOCK、PAGE 层次关系

  以Intel和美光共同组建的 IMFT 公司出品的 25nm NAND 64Gb(8 GB)闪存(美光出品的芯片编号为 MT29F64G08CFACBWP-12)为例:

  1、每枚闪存芯片中包含有两个物理管芯(die,也被称作是 LUN,即逻辑单元)。

NAND闪存芯片构成、SLC/MLC区别
25nm IMFT NAND FLASH 64Gb(8GB)闪存管芯 167mm^2

NAND闪存芯片构成、SLC/MLC区别

  2、每个管芯内有两个存储平面(plane,也可以称作存储矩阵即 Memory Array),可以实现 Two-Plane 操作,即同时对奇、偶存储平面的存储页(相当于两个)执行读取操作、或者两个存储块执行擦除动作或者两个存储页执行写入动作,下面三张图所示的分别是写入、读取、擦除三类操作的单、双存储平面对比:

  3、每个物理存储平面有 2048 个存储块(Block)。

NAND闪存芯片构成、SLC/MLC区别

NAND闪存芯片构成、SLC/MLC区别

NAND闪存芯片构成、SLC/MLC区别

  4、每个存储块内有 256 个存储页(page),每个存储页内有 4320 个字节(4KB+224bytes),这里额外的 224 字节被称作备用空间,用于执行 ECC、系统指针等作用。

  因此该芯片的物理容量为:

  2dies*2planes*2048blocks*256pages*4320Byte=9,059,696,640Byte=8.4GB

  不同制造工艺、不同容量的 NAND 闪存芯片的存储页、存储块大小可能会有不同,通常更精密制程的存储页会更大,更高密度的芯片存储页会更大。例如同样是 IMFT 25nm 的闪存芯片,256Gb 或者更大容量的存储页就是 8KB 而非 128Gb(以及 64Gb、32Gb)的 4KB。

  闪存逻辑转换层(FTL)

  为了使 SSD 让操作系统看起来一个标准的硬盘设备,就需要将 ATA 指令(以 ATA-8 为例,有超过 50 条指令,其中还有一些 SSD 根本不会用到的指令,例如 PIO 模式的读写指令)转换为闪存芯片能明白的指令,这就需要在 SSD 中引入被称作 FTL(闪存转换层)的界面,这个界面目前由闪存主控芯片实现,不过以后可能会被直接跳过,例如 NVM Express 标准接口的 SSD。

  现在的操作系统其实大都属于“DOS”,即磁盘操作系统,操作系统本身被设计为存放在“旋转”盘体的存储器上,电脑经过 BIOS 引导、初始化后,才会启动操作系统。

  操作系统每次存储的最小尺寸单位是一个“块”(在 MS-DOS、Windows 中,这个“块”的名称是“扇区”(sector)),存储设备因此也被称作存储块设备(block device)。扇区的大小一般为 512 个字节,但是这个尺寸的管理相当不便,特别对大文件来说更是如此。因此在实际中扇区会被打包成一个被称作“簇”的分配单位,对 FAT 文件系统来说,簇的大小取决于文件结构及驱动器的容量,而对 NTFS 文件系统来说簇的大小一般是 4KB(相当于 8 个扇区)。

  而 NAND 闪存这边是以存储块(Block)、存储页(page)、存储列(columns,8 个位元)来组织的,这取决于制造工艺,例如上面所说的 25nm IMFT 64Gb 闪存芯片里,存储页大小是 4KB,每个存储块有 256 个页面或者说 1MB。

  闪存需要透过 FTL 将自己模拟成一个基于扇区的设备,使得操作系统的逻辑地址(LBA)重新映射成闪存的物理地址(PBA)。经过 FTL 后,SSD 里各个前后物理页面对应的逻辑地址不一定是连续的。当然,像 JFFS、YAFFS 等文件系统是可以直接跳过 FTL 直达下一层的 MTD。

  对操作系统来说,FTL 的作用就是从文件系统在指定的位置(扇区)取得、写入数据;

  对闪存来说 FTL 的首要功能是把数据存放在闪存中空闲或者已被擦除的位置并标记出真实的数据位置,在数据更新了的时候将包含旧数据的存储块标记为无效,这步被称作 “Garbage Collection(废物回收或者更简单一点:清除)”。地址转换和 GC 是所有 FTL 必备的特性。

  除此以外,FTL 还需要实现掉电恢复、坏块管理、损耗平衡、错误码纠正等任务。

闪存逻辑转换层、写入放大率

  上图就是美光 NFTL 4.60 的架构图。

  常见的闪存闪存管理机制有三种:FTL、BL、NFTL。

  FTL 是依靠一个地址转换表来映射任何给定的 LBA 到 SSD 里的 PBA,属于细粒度的地址转换。

  BL 则是采用块级别的粗粒度地址转换机制,在 BL 中的 LBA 会成为一个虚拟块地址(VBA)的若干部分,偏移量就是闪存的存储页,转换表中存放的是来自每个给定 VBA 至对应 PBA 的映射信息,数据会被写入到 PBA 中对应的块偏移地址中,如果对应的页已经被使用,数据就会被安排到一个新的块中,原块中的有效数据和更新的数据也会复制到新块中。

  NFTL 采用 BL 的映射机制,但是 NFTL 采用了一个更换块来处理后续的写入请求。重写请求的内容会被持续地写入到一个更换块中,因此在 NFTL 中的地址表存放着两个物理块地址入口,即元块和更换块。当更换块写满后,更换块和它对应的元块会合并到一个新的元块中,在这个合并操作中,更换块和元块中的所有有效数据都会分配到新的元块中,原来的更换块和元块都会被擦除掉。

  写入放大率(主机写入 vs. NAND 写入)

  闪存芯片的位宽一般都是 8 位,以美光 MT29F64G08CFACBWP-12 为例,它支持两种运作模式,即同步模式(数据包之间的时间片是固定的)和异步模式(数据包之间的时间片并不固定),传输速率分别为最高 166MT/s 和最高 50MT/s,理论带宽分别为最高 166MB/s 和 50MB/s。

  不过受制于当前大多数 SSD 采用 SATA 界面的限制以及异步模式采用多通道等带宽延伸技术,实际应用中两者的带宽并无多大区别。例如 Crucial M4 128GB 采用的是 8 条存储通道,同步模式和异步模式的理论带宽分别为 1328MB/s 和 400MB/s,但是 Crucial M4 采用的界面不过是最高 6Gbps 的 SATA 3.0,即使运行于同步模式下顶多也就是 750MB/s,远低于 166MB/s*8 vs 50MB/s*8 的差别。除此以外,闪存控制器等环节本身也会吃掉一部分的性能。当然,同步模式的性能优势的确是存在的,而且从芯片本身来说这个优势是免费的。

  有些早期的 SSD 采用固定通道存取系统,也就是说如果 SSD 的闪存通道是 8 条,那么这些 SSD 每次存取操作的大小都是固定的 4KB*8 = 32KB,或者说不管是读取还是写入,最小的存储块都是 32KB大小。

  如果这个操作中的部分数据是空白的,这些空白数据对应的位址会被写入以“FF”,而这个“FF”在 NAND FLASH 中是“已擦除”的标记,这将导致一次擦除动作:一个包含有空白数据的写入操作,会导致至少一个存储块或者说 8MB 字节(1MB per Block*8Block)的擦除操作。

  这样的设计无论是对控制器、闪存矩阵都是存在浪费问题的,更重要的是这样的设计会对整个驱动器(而不仅仅是某个闪存芯片)的耐用性产生严重的影响,因此现在的闪存控制器都采用了独立的读写通道控制器来尽量将每次存取操作中发生的擦除操作最小化。

  有一个和最小可擦除尺寸类似的尺度被称作写入放大率(Write Amplification),当然两者不不一样。写入放大率本身只是指文件系统对存储设备的写入操作大小和存储设备向存储媒体实际写入操作大小之间的比率,并不仅仅限于描述某种存储机制下的情况。

  比如闪存控制器足够聪明的话,在操作系统向 SSD 只写入 1KB数据的情况下时,应该只会占用一条通道,但是 MLC NAND FLASH 的最小写入单位是 page,如果 page 的大小是 4KB,那么写入放大率就是 4 倍,如果 page 是 8KB,那么写入放大率就是 8 倍。

  SLC 闪存允许局部页写入,所以在这样的情况下可以将写入放大倍率降低 50%;MLC 虽然是同一个晶体管存放两个位元,但是这两个位元其实是分属不同的存储页(如果是 3 位元的 MLC,则每个晶体管内存放的三个位元其实分属三个不同的 Page,可避免出现 6KB 这类看上去有些古怪的 Page 大小),所以无法做到局部页写入。

  此外如果写入的数据是可压缩并且 SSD 主控支持压缩写入的话,写入放大倍率也能有所缩小,例如 SandForce 的主控器。

  但是像上面举的早期固定式存储通道设计,那就是 32 倍的写入放大倍率,操作系统每写入一个字节,就会导致 32 个字节的存储媒体实际写入操作。

  闪存的损耗平衡与过量配置

  在前面我们提到,NAND 闪存采用了浮栅存放电子的方式来保存信息,电子进出浮栅的方式为量子学中的隧穿效应,隧穿的时候,电子会被浮栅和衬底之间的隧穿氧化层捕获,随着陷落于氧化层中的电子增多,闪存单元将会因此失效。

  不过氧化层内的电子其实并非一定会永远都陷落其中,随着温度的提升,氧化层中的一部分电子将有机会逃逸(挤?)出来,使得闪存单元获得重生,这样的情况被称作自愈。

  在 Flash Memory Summit 2011 上来自纽约伦斯勒理工学院张同的一个幻灯片,提出了和闪存管芯叠加一个专门的加热管芯,能够以 1.5~5.1 瓦的耗电将芯片的温度提升至 110~250 摄氏度,当将温度加至 200 摄氏度(过高的温度可能导致芯片变形)保持大约 35 分钟(还得加上冷却时需要加热时间的 3 倍),在保守估计能将 80% 的界面陷阱恢复的情况下,能实现将闪存放闪周期从 3,000 次提升到 17,400 次。

  不过在类似疯狂想法真正在产品实现之前,现在的 SSD 都采用了一些技术来确保存储单元的耐用度不至于被过快消耗掉,例如损耗平衡(Wear Leveling)就能够透过将写入操作尽可能地平均分布于闪存各个存储块,使得芯片各处的放闪次数趋于一致,从而“延长”SSD 的使用寿命。

  损耗平衡的做法有动态和静态两种。

  动态损耗平衡就是依据物理地址映射表中存放的放闪次数,决定将数据存放到较少放闪次数的存储块中,对于不是执行数据更新的存储块或者说静态数据存储块则不会被动态损耗平衡盯上,例如一个存放有 50GB mp3 音乐等静态数据的 120GB SSD 可以有 70 GB 的空间用于动态损耗平衡。

  静态损耗平衡会对所有的存储块执行损耗平衡,包括那些没有需要数据更新的存储块,这样的好处是可以用于损耗平衡的存储块数将可能更多,减少存放静态数据(例如 mp3)存储块和存放动态数据(例如日志文件)存储块之间的不平均损耗问题,增加(维持?)整个 SSD 的耐久度。

  损耗平衡的概念其实并不复杂,但是需要 SSD 厂商在算法上尽量地减少执行损耗平衡所带来的性能损失,例如采用专门的 DRAM 内存作为缓存等。

  提升耐用度的另一个办法是采用过量配置(Over-Provisioning),损耗平衡的概念是需要尽量地将闪存的擦除平均地分布于 SSD 的各个闪存角落,容量愈大,同样擦除量所产生的平均放闪周期自然越少,不过如果还是出现了存储块失效的情况,就需要将该存储块标记为不可用,然后从 SSD 预留的冗余区中重新分配一块存储块到相应的逻辑地址,这个冗余区就是过量配置的空间。

  过量配置当然不是免费的,根据 SSD 本身等级、销售目标市场的不同,过量配置的空间也不尽相同,一般来说企业级的 SSD 会分配 20% 的过量配置,而桌面级的是 6% 左右,用户自己也可以使用 ATA 指令来调整 LBA 空间大小从而改变过量配置大小,牺牲更多的可用空间来换取耐久度。

  Garbage Collection 和 Trim

  前面我们已经说过,NAND 闪存不能直接对一个已经写入了数据的 Page 马上进行重写,它必须等待到这个 Page 所在的 Block 被擦除后才能进行,而且每次擦除都是一整个 Block 而不只是单独的某个 Page。

  为了对闪存中的数据重新放置、删除掉陈旧数据并腾出空白 Block 来存放新数据,NAND 闪存需要执行被称作 Garbage Collection(或者 Merges,合并)的操作,而 SSD 的损耗平衡操作也主要在这个时候执行。

  见下图中“情形三”的介绍:

损耗均衡、垃圾回收、TRIM

  在 Windows XP 中,删除文件的时候操作系统会把对应的逻辑空间标记为已经删除,但是 SSD 并不会知道有这么一回事。

损耗均衡、垃圾回收、TRIM

  在写入新数据的时候,操作系统有可能向之前逻辑表中用过但是标记为已删除的空间写入数据,只有在这时,SSD 才能透过操作系统向它发出的逻辑地址知道原本这个地址对应的数据是被删除不再有用了的。

损耗均衡、垃圾回收、TRIM

  而在 Windows 7(以及 Windows Server R2、Linux 2.6.33、FreeBSD 8.2、OpenSolaris、Mac OS X Lion)中引入了 Trim 指令的支持(见上图),会在删除了文件的同时向 SSD 发出 Trim 指令,让 SSD 可以在自身的逻辑地址表中也将对应的文件标记为已删除,如此一来就能避免 GC 的时候把无效数据也读取、复制到其他存储块,让 SSD 知道增加了空白空间。

  Trim 不能在 RIAD 的时候使用,在这个时候就得依赖 ITGC(idle-time Garbage Collection,闲置时废物回收,又被称作后台 GC(BGC))。

  前面所说的标准 GC 过程是系统要写入新数据的之前,需要先读取出整个 Block,然后把 Block 中的有效数据和新数据写入到另一个空白的 Block 里,最后将原来的 Block 擦除掉。而 ITGC 则是利用 SSD 闲置时间在系统写入新数据之前就进行类似碎片整理的动作,将各个未写满的 Block 进行统合成尽可能写满的 Block,从而腾出更多的空 Block。这样的做法虽然可以在写入操作较为空闲的情形下提升性能,但是代价是牺牲了 SSD 耐用度。

  SSD 分区的 4KB 对齐问题

  硬盘驱动器的扇区大小一般是 512 字节,也就是说它的最小存储空间尺度是 0.5 KB,故此目前所有的操作系统都是采用 512 字节来对虚拟存储空间进行划切。理论上我们是不需要对 512 字节粒度转换为 4 KB 粒度过分关注的,特别是现在人们正在使用的大多数文件系统例如 Windows NTFS 就是采用 4KB 作为簇(Cluster)的大小。

  不过在现实情况会有点出入,原因是 10 年前开发的 Windows XP 内建磁盘工具在分区的时候由于设计上并没有考虑到 SSD 的情况,采用了一个 63 个扇区(相当于 7 + 7/8 个 4KB Page)的偏移量,这将导致每个从操作系统写入的 Page 会覆盖 SSD 的两个物理 Page,而且会导致两个 Page 的空间未能充分使用。

  由于 Page 是 SSD 的最小写入粒度,因此即使操作系统只是要求更新一个 Page 的数据,也会导致两个物理 Page 被执行写入操作。

  在读取的时候,特别是大文件的话,影响并不大,但是写入的话分区不对齐会很快导致性能衰减。

  不同的应用负荷产生的文件尺寸不尽相同,像富媒体(例如视频、静态图像)和科学或者财经应用程序的文件大小是存在差别的,后者的文件写入操作中 60%~70% 都是 4 KB。

  如果你是在 Windows 7 或者 Vista 下执行分区的,逻辑块会对齐至 SSD 的 Page 界线,因此不会发生 Windows XP 内建分区工具导致的不对齐问题。

  虽然 Windows XP 下有其他工具能实现创建对齐分区,但是这也只是克服了 Windows XP 使用 SSD 时候众多不足之一,光是缺乏前面所说缺乏原生 Trim 支持就应摒弃掉 Windows XP(当然,目前有一些可以“手工”向 SSD 发出 Trim 指令的 工具:http://www.ocztechnologyforum.com/forum/showthread.php?73888-Here-s-a-tool-to-force-TRIM-your-entire-drive

  SSD 错误纠正码(ECC)技术和成本

  和硬件损坏导致的硬错误(HEC)不同的是,软错误是由于地球低强度背景辐射的带电粒子所引起的,这些带电粒子有可能来自宇宙射线,也可能来自大多数材料 中的微量放射性元素,这些都可能会干扰依靠粒子运作的半导体芯片,例如带电粒子撞击闪存芯片存储单元造成位元翻转,就会导致数据错误。

  不过按照香农的信息论,只要采用一定的编码,就能将数据错误的几率弄到无限小,因此各种各样的错误纠正码(ECC)应运而生,数据错误原因远远不至于辐射带电粒子的闪存自然也毫不例外的引入了 ECC。

SSD分区4KB对齐、ECC技术和成本

  早期(指的是 Page 大小只有 512 字节的年代,这是差不多 20 年前了)在 NAND 闪存中常用的 ECC 方式是加权平均 ECC(Hamming ECC),能够纠正 1 个位元的错误或者侦测出 两个位元的错误,可以看做是 DRAM 中应用的 SEC/DED(单位元错误纠正/双位元错误侦测)的简单版本,只不过 NAND FLASH 的 Hamming ECC 是对整个 Block 的数据(因此也称作 Block Code),而 DRAM 的 Hamming ECC 是针对双字(Dualword)的。

  但是随着 Page 大小增加,一个 Page 中出现多个位元错误的机会也随之增加,Hamming ECC 已经无法应付这样的情况。于是乎工程师们开始采用在通信领域(例如 DSL、WiMAX)和其他存储技术(例如 CD-ROM、Blu-Ray、RAID6)中采用的 Reed-Solomon code(理德-所罗门码),一个可能是迄今为止最赚钱的编码技术。此时,2 KB 或者 4 KB的 Page 和 MLC (70nm 时代)设备需要 4 位错误纠正能力。

SSD分区4KB对齐、ECC技术和成本

  常见的 RS 码执行方式是把 512 个字节(选择这个大小是因为和传统存储的最小单位扇区一样大,当然具体的可能也有不同,取决于具体厂商和型号)的纠正块切开成多个符号(注意,这里说的是符号是位于一个有限域内的,而不是二进制数),提供 N 符号纠正。如果符号中的任何位元出错,RS 码都能将整个符号纠正。

  随着 MLC 每 512 字节纠正块的错误纠正能力需求增加到 8 个位元后(制程越先进,错误校正能力要求越高),RS 码校验位所占用的空间超出了 NAND 闪存芯片中的备用空间。为了将校验位最少化,NAND 闪存厂商开始推荐采用 BCH 码作纠正。

SSD分区4KB对齐、ECC技术和成本

  人们认为 NAND 闪存的错误不会一整片地出现,而是随机的分布于 Page 的各处,而 RS 码的强项是成片错误的纠正,非常适合于光盘的划花或者错乱的通信通道。

  而 BCH 在类似闪存这类偶尔出现单个位元错误的情况下能做得更加高效,在同样数量的校验字节数下,BCH 能做到比 RS 码更多个位元的错误纠正。

  随着 NAND 闪存错误率的持续增长和所需的 BCH ECC 级别提升,BCH 的纠正码块大小未来将会增加到 1 KB 以确保进一步改善纠正效率。

  例如同样是 1024KB 大小,在遇到高低位区各 9 + 5 = 14 位元错误的时候,分别采用两个 512B-ECC8 和 1 个 1024B-ECC16 纠正块的话,1024B-ECC16 能将这 14 个位元的错误全部纠正,而 512-ECC8 则无法应付高位区的 9 个错误。

SSD分区4KB对齐、ECC技术和成本
在 Windows 的计算器里的 log 其实是 lg
所以这里的 log2(512byte*8bit+12bit) 在
计算器里要用 lg(512*8+12)/lg2 来算
其中的 12 代表可以纠正的位数

  要满足多少位校正能力所需要的纠正码大小可以用一定的算式求出来,例如上面的 1024B-ECC16:

  需要纠错的数据块字节长度 k = 1024 Byte

  可以被纠错的位数 t = 16 bit

  需要增加的纠正码位数 P = m*t

  而 m=upper{log2(1024byte*8bit+16bit)}

  也就是要满足不等式:1024*8bit+m*16bit<2^m-1。

  用比较原始一点的办法求 m 值:

  请忽略->如果 m= 0->12,左边等于 ...,右边等于 ...-1=..,左边大于右边,不成立

  如果 m=13,左边等于 8400,右边等于 8192-1=8191,左边大于右边,不成立

  如果 m=14, 左边等于 8416,右边等于 16384-1=16383,左边小于右边,成立

  故此如果一个以 1024 字节为单位配置 BCH 码作 ECC 的话,所需要的纠正码位数 P 是 14*16 = 224bit 或者说 28 byte。

  现在很多厂商都在使用的 SandForce SSD 控制器号称可以实现 512B-ECC55,即可以对 512 字节块中的 55 个错误进行纠正,传统固定代码字长度下相当于需要为这 512 字节额外配备 90 个校验字节(因为(13*55bit)/8= 89.375 字节)。

  如果是 4KB 的 Page,这就相当于需要 715 个字节,目前没(未来也不可能)有任何闪存有这么大的备用空间比例(美光的 4KB Page 是 224 字节备用空间,尚欠 419 字节),所以 SandForce 在这里其实是以切出更多闪存空间作为二级备用空间存放多出来的 419 字节,配合 SandForce 独有的实时压缩技术以及自适应字长 ECC,应该还能在不牺牲性能的情况下显著缩少这些校验位占用的空间。

  根据 OCZ 的计划,该公司将会在 2012 年推出基于 TLC(单晶体管存放 3 位元数据)的 SSD,而 TLC 本身比目前的 MLC(TLC 也是属于 MLC,不过当下一般是指单晶体管存放两个位元的闪存为 MLC,TLC 有些时候被归类为 XLC)有更高的错误纠正需求。

  在将来,BCH 将会让位于 LDPC 码技术直到有比 NAND 闪存更先进的存储技术为止。

  现在的 SSD 除了闪存铁定需要采用 ECC 技术外,整个数据通道上的总线、先进先去缓存以及可能集成的 DRAM 都要视乎需要采用 ECC 技术,当然这都不是免费(性能、价钱)的。

  不过...我们的 SATA-2 总线上每 512B 只有 6-bit ECC 校验码,为了数据完整性万无一失,理论上...可以...考虑回传一次做 CRC。

  IOMeter 和预训练测试

  对大容量驱动器的性能测试业界有不少备受肯定的专业测试工具,例如 SQLIO、FIO、IOMeter,其中 IOMeter 出自上个世纪,由Intel公司于 1998 年 IDF 大会上公布,在 2001 年的时候Intel公司停止了 IOMeter 的继续开发并将源代码公开,使其成为了一个开源项目,只要在 Google 搜索输入 IOMeter 就能搜索到该项目网站。

  IOMeter 支持 Raw 盘(未分区)和格式化分区的测试,前者主要适合于机械硬盘的本机原始性能测试,后者主要用于填充不同大小、模板数据后的驱动器性能测试,当然 IOMeter 还能用于网络环境的测试(也是 IOMeter 的另一重要测试功能),不过这并非本文关注的部分。

  和机械硬盘不同的是,SSD 需要对无效数据执行 Garbage Collection,一般来说,随着使用时间的延伸,Garbage Collection 就会逐渐对性能构成影响,最终会让 SSD 的写入性能下降到峰值状况下的 1/2 不到的水平(取决于 SSD 本身的各项设计),在使用 IOMeter 测试的时候,为了能反映真实应用下的性能状况,有必要对 SSD 执行一个较严格的测试步骤:

  1、对 SSD 执行净化处理,例如对 SSD 执行 ATA 安全擦除指令,将 SSD 恢复至接近未启用状态。

  2、对 SSD 执行标准的分区格式化。

  3、在 IOMeter 中执行 25 个循环的测试脚本,在 SNIA 的 SSS Client PTS 1.0 中要求先对 SSD 执行两倍于 SSD 容量的 128KB 持续写操作,然后采用混合了不同大小传输块、不同读写比例的脚本(取决于测试的目标,如果是需要随机性能的就是随机脚本,如果是要获得持续性能的,就用持续性能脚本)对 SSD 执行预训练。

  SNIA 将跑完一遍所有所有组合的预训练脚本称之为一个回合,每个测试组合必须需运行 1 分钟,SNIA PTS Client 1.0 中提供的随机预训练脚本样例包括了 56 个组合,因此完成一个回合所需要的时间至少是 56 分钟,而一次完全的预训练需要执行 25 个回合,这意味着至少需要跑 1400 分钟,几乎就是一整天。

  整理预训练的测试结果,当最后 5 个回合数据高低差别都落在平均值正负 10% 以内、斜率在正负 5% 以内的情况下才会视作 SSD 进入了所谓的稳态或者说此时的测试结果是能反映真实应用性能的。

  如果最后 5 个回合的测试结果高低超出正负 10% 或者斜率超出正负 5%,则会视作 SSD 未能进入稳态,测试人员需要再执行 25 个回合同样脚本组合测试,直到进入稳态。

  在测试随机性能的时候,这样的预训练需要执行两次,首先是负载不相依的预训练,而后是负 载相依的预训练,两者的测试脚本其实都是一样,但是后者会引入分段式活跃区域的测试,需要将 LBA 切成 2048 个活跃区,每个活跃区的大小为 SSD 的 LBA 大小除以 2048。

  5、在 SNIA SSS Client PTS 1.0 中规定,当负载相依的预训练测试完成并进入稳态后,取最后一个回合的测试结果为最终的测试结果。

  基本上,单单是完成 SNIA SSS Client PTS 1.0 中的随机测试项目就需要持续地进行两天时间,目前来说这对 SSD 的耐用度是比较苛刻的考验,测试下来掉几个百分比的耐用度甚至导致 SSD 即使经过安全擦除也无法让性能达到全新状态也并不奇怪。

  不过另一方面,如果只是将 SSD 写满而不进行预训练就进行测试的话,就无法根据预训练结果来判断是否进入稳态,测试结果反映的到底是什么阶段的性能根本无从谈起。

  PCINLIFE 在使用 IOMETER 进行随机性能测试的时候会比 SNIA Client PTS 1.0 简化一些,因为 IOMeter 只提供了控制 LBA 大小的设置,缺乏分段活跃区的设置,因此 SNIA Client PTS 1.0 提到的负载相依预训练及其测试结果也就无法提供了。

  事实上完全的 SNIA Client PTS 1.0 测试是有专门的设备和软件来执行,我们在这里只是用 IOMeter 尽量仿照着来做,最主要参考的是它的测试规范和步骤,确保测试结果具有较高的参考价值。

  IOMeter 测试步骤和设置

  1、使用 Parted Magic v6.6 中 Disk Eraser 的 Secure Erase(其实是 hdparm 的图形化界面)对待测的 SSD 执行安全擦除,让 SSD 恢复至未使用状态。

  Secure Erase 和 Windows 7 的快速格式化并非一回事,只有 Secure Erase 才能真正将 SSD 恢复至 FOB(首次开盒)状态。

IOMeter及其测试步骤

  2、使用 Windows 7 内建的分区工具对 SSD 进行分区,大小为 100%。

  3、打开 IOMeter,设置写入模板为完全随机,执行一次 idle 任务,目的是让 IOMeter 向 SSD 写入和 SSD LBA 容量一样的测试文件。

  由于不同的 SSD 容量不尽相同,为了做到一致的测试结果,我们选择全盘空间来测试。

IOMeter及其测试步骤

IOMeter及其测试步骤

IOMeter及其测试步骤

  4、执行两倍于 SSD 容量的 128KB 连续写操作。

  首先执行一次 1 分钟的 128KB 连续写操作,获得测试结果。

  然后将 SSD 容量除以这个测试结果,获得执行两倍于 SSD 容量的 128KB 持续写操作所需要的时间。

  例如一个 128GB SSD 的测试结果是 188MB/s,就用 (128GB*1000)/188=688 秒,(688*2)/60= 22 分钟。

  测试脚本的存储规格设置如下:

IOMeter及其测试步骤

  5、执行 25 个回合、每回合包含多种读写比例(包括 0%、5%、35%、65%、95%、100% 写入)、传输块大小(包括 0.5KB、4KB、8KB、16KB、32KB、64KB、128KB、1024KB)组合、每个组合各 1 分钟时长的随机读写测试作为预训练。

  测试脚本的存储组合设置示例(图中是 1024KB、5% 写入)如下。

IOMeter及其测试步骤

  为了减少 icf 大小,我们将 .icf 设置为一个回合的测试脚本,然后以命令行方式执行 25 次即可实现 25 回合测试(需要等待 1400 分钟),以 Plextor PX-128M2P 的测试结果整理出其中 100% 写入的测试结果为例,见下图(x 坐标轴的标签是代表回合数,不是分钟数)。

IOMeter及其测试步骤

IOMeter及其测试步骤

  上图是我们在 Plextor PX-128M2P 128GB 执行 25 回合 100% 随机读写后汇总的测试结果而绘制的图表,可以看到最后 5 回合(第 21 回至第 25 回)的测试结果之间差别都在正负各 10%、斜率线位于正负 5% 的范围内(都是 2892 IOPS 附近),故此我们认为此时 SSD 已经属于稳态。

  6、整理最后一个回合的数据,制作出各类图表,例如下面的三维图表:

IOMeter及其测试步骤

  PCINLIFE Storage Benchmark 2011 2.0

  IOMeter 理论上可以透过 Windows 性能监控器记录的存储操作信息来再现执行同样操作时候的性能,例如早期的 IOMeter 1998 版就提供了诸如 filer server(文件服务器)、Database(数据库)等存取测试模版,而后还有 StorageReview 提供的 Workstation(工作站)以及一个来历不是很清楚但是大家都在使用的 Web Server(万维网服务器)存取测试模版。

  不过这样的测试依然只是“模版”,而非真实存取的重现,不能像游戏测试的录像回放那样每一帧画面都可以做到极高的再现能力。

  其实在 IOMeter 出来的同期,Intel还提供了一个名为 ipeak spt 的工具,可以实现 I/O 轨迹的录制和重放,这是最理想的测试方式,因为只有这样才能接近 100% 在不同的系统、存储设备上执行同样的 I/O 操作测试、分析。

  现在包括 Anandtech、StorageReview(印象中是最早采用这样技术的网站)、TechReport、Tom's HWG、xbitlabs 以及一些德国媒体都采用了自行录制的 I/O 轨迹重放测试。

  现在 PCINLIFE 也引入了这样的测试技术,推出国内第一个 I/O 轨迹重放测试:PCINLIFE Storage Benchmark。

  PCINLIFE Storage Benchmark 目前的最新版本为 PCINLIFE Storage Benchmark 2011 2.0,由 PCINLIFE Office Storage Benchmark 2011 2.0 和 PCINLIFE Gaming Storage Benchmark 2011 2.0 组成。

  其中 PCINLIFE Office Storage Benchmark 2011 2.0 所涉及的办公软件包括了:

  1、微软 Word 2010,测试的事件是打开多个 .doc、docx 文件,然后人工逐个翻阅。

  2、微软 Excel 2010,测试的事件是打开多个 .xls 文件。

  3、微软 PowerPoint 2010,测试的事件为打开多个 .ppt、pptx、pps 文件,然后人工逐个翻阅。

  4、微软 Expression Web 4,测试的事件为打开多个本地 .htm 文件,然后人工逐个文件、逐页翻阅,测试的 .htm 文件是 PCINLIFE 评测室过往所写的若干篇文章的原文(我一直都是用 Frontpage 等 html 编辑器写文章,所以文章都是原生的 html,现在改用 Expression Web。Dreamwaver 的界面响应太慢,所以我一直都弃用)。

  4、Internet Explorer 9,测试的事件为打开多个本地 .htm 文件,然后人工逐个文件、逐页翻阅、并点击放大其中的若干个图片。

  5、Acrobat Pro 9,测试的事件为打开多个 .pdf,然后人工逐个文件、逐页翻阅。

  6、FastStone Image Viewer 4.4,测试的事件为浏览数十张 .png 格式照片,这些照片都是 PCINLIFE 评测室平时拍摄后处理好的成品照。

  7、PhotoShop CS5,测试的事件为打开两个极高分辨率的 png 图片然后另存为 .bmp。

  8、Foxmail 7.0,测试的事件为关键字搜索。

  每个测试完成后都关闭掉软件,然后马上执行另一个测试,所以 Office Benchmark 重放的是包括了 8 个软件使用、工作流程产生的 I/O 轨迹,下图就是测试过程所涉及的文件:

PCINLIFE Storage Benchmark 2011 2.0

  根据我们录得的 PCINLIFE OSB 2011 2.0 轨迹文件,可以分析出下面这个传输块分布图:

PCINLIFE Storage Benchmark 2011 2.0

  PCINLIFE Gaming Storage Benchmark 2011 2.0 由三个游戏的 I/O 轨迹组成,这三个游戏分别是 Crysis 2 1.9 的 DX11 Town Benchmark、Battlefield 3 的雷电关卡实际游戏、Total War Shogun 2 的官方性能测试录像回放。

  进行这三个游戏的 I/O 轨迹记录时所设置的画面品质均为最高,分辨率为 1920x1200(分辨率纹理尺寸 mipmap lod相关)。

  以下是 PCINLIFE GSB 2011 2.0 的读写块传输分布图:

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 2011 2.0

  其实在我们原本的计划中还准备纳入 id Software 的新作—— Rage 的 I/O 轨迹,但是可能是由于游戏本身采用的 MegaTexturing 技术缘故,执行 I/O 预备操作时的生成的文件极为巨大,最后不得不再这次测试中先放弃掉,也许以后测试更大容量硬盘的时候可以搬出这个家伙。

  由于操作系统会对硬盘数据进行缓存,因此我们的 PCINLIFE Benchmark 2011 测试都是系统冷启动后跑第一次后直接录取结果,每个子项目的测试都需要重复三次冷启动和各运行一次测试,在确定误差低于 3% 的情况下取最高得分。

  PCINLIFE Storage Bencmark 是作为 PCINLIFE 评测室内部使用的测试工具,并不打算公开,不过如果你感兴趣的话,可以透过讨论区短信或者电子邮件等方式询问更多的细节,我很乐意回答相关的问题。

  参测产品介绍——美光 Crucial M4 128GB/64GB

  美光 Crucial M4 64GB 和 128GB 都采用 MT29F64G08CFACBWP-12 闪存颗粒,控制器分别是 Marvell 的 88S9174-BLD2 和 88S9174-BKK2 控制器,SSD 控制器的相关资料其实各个厂商都控制得很严格,Marvell 索性连个像样的网页介绍都没有,不过这不代表这个控制器的水平高低,更多的是一些保密上的考量或者营销部的重视度不足。

  Crucial M4 都集成一枚 DRAM 芯片用作缓存,其中 128GB 采用的是 D9LGQ 即 MT41J128M16HA-15E:D(DDR3-1333 128MB)颗粒,64GB 则是 D9MBJ 即 MT41J64M16JT-15E(DDR3-1333 64MB)的颗粒,估计是以数据高速缓冲的方式实现减少写入放大倍率等性能优化。

  Crucial M4 128GB 格式化为单 NTFS 分区后的容量是 128,033,222,656 字节(119GB),而按照配置来看它的物理容量应该是 137,438,953,472 字节(128GB),这意味着有大约 6.8% 的空间用于过量配置。

  这里 128GB 的标称其实也是比较正常,因为所有的硬盘厂商多年一来都是沿用 10 进制容量标注方式,Crucial M4 128GB 的“128GB”的标称符合格式化后的十进制容量(如果你有留意的话,你会发现我们通篇文章都有 KB、GB 这样的容量标注方式,这其实是美国政府的标准与技术研究院或者说 NIST 对二进制容量标记的标准方式)。

  Crucial M4 都采用了 6Gbps 作为传输界面,在实际测试中,两者的持续读取性能都能超过 500MB/s,不过 128GB 的写入性能比 64GB 高出一些。

  在附件方面 Crucial M4 比较简单,特别是缺乏其他厂商付配的 3.5 英寸转 2.5 英寸支架。

美光Crucial M4 128GB/64GB SSD拆卸

美光Crucial M4 128GB/64GB SSD拆卸

美光Crucial M4 128GB/64GB SSD拆卸

美光Crucial M4 128GB/64GB SSD拆卸

美光Crucial M4 128GB/64GB SSD拆卸

美光Crucial M4 128GB/64GB SSD拆卸

美光Crucial M4 128GB/64GB SSD拆卸

美光Crucial M4 128GB/64GB SSD拆卸

美光Crucial M4 128GB/64GB SSD拆卸

美光Crucial M4 128GB/64GB SSD拆卸

美光Crucial M4 128GB/64GB SSD拆卸

美光Crucial M4 128GB/64GB SSD拆卸

  参测产品介绍——海盗船 Corsair Force GT 120GB

  海盗船 Cosair Force GT 系列都采用 SATA 6Gbps 界面,由于采用了 Sandforce 的 SF-2281 控制器,我们这里测试的是它的 120GB 版本,能够在写入可高度压缩数据的时候实现高达 85K IOPS(传输块大小为 4KB 尺寸)的性能。

海盗Force GT 120GB

  Force GT 120GB 采用美光的 MT29F64G08CBAABWP-12, 和 Crucial M4 128GB/64GB 采用的 MT29F64G08CFACBWP-12 一样,都是基于 25nm 的 MLC NAND 闪存,耐久度均为 3000 次放闪周期,但是它们有一个重要的不同之处:前者的 Page 大小增加了一倍达到了 8KB+448Byte,Page 越大理论上性能就越高。

海盗Force GT 120GB

  Force GT 120GB 提供了二十多个 SMART 状态 ID,其中包括了擦除、写入错误计数、剩余使用寿命等重要的信息,用户可以依据状态信息在 SSD 尽量出现异常之前之前备份好重要的数据。

  Force GT 120GB 的外壳采用了醒目的鲜红色,配件方面提供了一个 3.5/2.5 金属转接支架。

海盗Force GT 120GB

海盗Force GT 120GB

海盗Force GT 120GB

  影驰 Galaxy Laser GT 120GB

  和海盗船 Force GT 类似,影驰 Laser GT 120GB 是采用Intel的 29F64G08ACME2(PCB 双面各 8 枚,共计16枚)同步闪存,耐久度为 3000 次放闪周期,主控芯片同样是 SandForce SF-2281。

  和本次测试的其他产品相比,影驰 Laser GT 120GB 是唯一一块提供了 SATA 信号线的 SSD,此外还有一个 3.5/2.5 的转接支架。

  影驰的 SSD 依据产品等级划分保修时间,GT 系列提供和 3 年的保修(和其他公司的大多数保修时间相当),而更高的 EX 系列提供六年保修。

  饥饿鲨 OCZ Vertex 3 Max IOPS 120GB/Vertex 60GB

  OCZ Vertex 3 Max IOPS 采用了 SandForce 2281 控制器,而闪存芯片则是来自东芝的 16 颗 TH58TAG7D2FBAS9,支持 Toggle 传输模式,制程为 32nm 而非 IMFT 阵营的 25nm + 同步传输模式。

影驰 Galaxy Laser GT 120GB

  Toggle 传输模式和同步模式相比减少了同步时钟,理论上耗电、成本更低,不过这对于台式机用户来说感受会微乎其微。

影驰 Galaxy Laser GT 120GB

  和 Vertex 3 MI 120GB 采用东芝 Toggle NAND 不同的是,Vertex 3 60 GB 则是采用 8 颗Intel(其实是 IMFT 生产后划给 Intel)的 29F64G08AAME1 25nm 异步 MLC 闪存颗粒。

影驰 Galaxy Laser GT 120GB

  两款 Vertex 3 系列 SSD 都采用了完全一样的薄盒包装,其中除了 SSD 本体以外还有一个 3.5/2.5 转接支架。

影驰 Galaxy Laser GT 120GB

影驰 Galaxy Laser GT 120GB

影驰 Galaxy Laser GT 120GB

影驰 Galaxy Laser GT 120GB

  浦科特 Plextor PX-128M2P 128GB

  PX-128M2P 128GB 属于目前 Plextor 最高端的 M2P 系列,采用 8 颗来自东芝公司 32nm 制程的 TH58TVG7D2FBA89 Toggle DDR 1.0(133MT/s)NAND 闪存颗粒(page 大小是 8KB),控制芯片是 Marvell 公司代号“梵高”的 88S9174-BKK2,搭载两枚南亚 70 nm 制程的 NT5CB128M16BP-CG DDR3-1333 内存颗粒,容量为 2Gb(256MB),按理说应该是合计 512MB,不过 Plextor 的官方网页倒说是 256MB。

  PX-128M2P 128GB 支持 Global Wear Leveling(即静态损耗平衡),对全盘所有块依据放闪次数进行存取、擦写安排,PX-128M2P 的 512MB 内存可以缓存更大的单区逻辑物理转存表,提高闪存存储块回收的效率。

  Plextor 表示 PX-128M2P 具备“Instant Restore”技术可以在 SSD 非全新状态下依然保持较高的速度,不过依据我们的测试来看,这并非独家的技术,其他厂商的这一代产品都能在驱动器只有部分空间被使用(或者至少保留测试软件所需空间多一点,例如 AS SSD Bench 一般是需要占用 3GB 空间,Crystal DiskMark 一般是最多 9GB)的情况下依然保持接近全新状态的性能。

  此外,如果在非分区的情况下进行全盘填充式的随机写入外加数小时的随机 4KB 写入后, PX-128M2P 可以在每完成一次全盘线性写入后恢复大约 6.8% (相当于过量配置空间大小)的连续 LBA 空间写入性能,基本上连续完成相当于 15 倍左右的全盘 LBA 线性空间写入后,PX-128M2P 就能恢复到 80% 的持续写入性能水平,相比之下基于 SandForce 的 SSD 无法做到这点。

  例如下面的 HDtune 线性写入测试的第三次和第四次之间我们特意间隔了 1 小时,而其他的次数间隔基本都在 5 分钟左右,但是恢复的区间间隔都是非常接近。

  这里使用 HDTuner 的原因是它完成写入的时间基本上是固定的 5 分钟,而其他可以执行线性空间测试的工具,例如 AIDA 2.0 在全盘写满+持续随机写入后,需要花费一小时才能完成。

浦科特 Plextor PX-128M2P 128GB

浦科特 Plextor PX-128M2P 128GB

浦科特 Plextor PX-128M2P 128GB

浦科特 Plextor PX-128M2P 128GB

浦科特 Plextor PX-128M2P 128GB

未格式化持续写入性能
未格式化持续写入性能

未格式化持续写入性能
经过全盘空间持续写入+ 75 分钟随机 4KB 写入后
的 HDTune 第一次线性写入性能

未格式化持续写入性能
第二次执行线性写入性能(可以看到性能恢复的空间大约在 7% 左右)

未格式化持续写入性能
执行第三次线性写入

未格式化持续写入性能

执行第四次线性写入

未格式化持续写入性能
执行第六次线性写入

未格式化持续写入性能
执行第十次线性写入

未格式化持续写入性能
执行第十一次线性写入

未格式化持续写入性能

执行第十二次线性写入

未格式化持续写入性能
执行第十三次线性写入

未格式化持续写入性能
执行第十四次线性写入

  根据观察,除了第十一次难以判断外,每执行完一次线性写入后恢复的区间非常接近于过量配置的 6.8 % 空间,这也是桌面型 SSD 通常的过量配置空间,如果是企业级 SSD 的话,过量配置空间会达到 20% 的水平,那么完全恢复整个 LBA 区间持续写入性能的回填次数可能会更短也不定(5 次就可以了?)。

  根据 Plextor 官网的产品介绍,每块 PX-128M2P 128GB SSD 都经过 Flexstar 提供的专业测试系统模拟 20 小时真实世界的严格测试,目前录得的 PX-128M2P 128GB 年均出错率是 0.59%,号称业界最出色的水平。

  PX-128M2P 128GB 的包装内除了 SSD 本体外,还有一个 3.5 英寸支架和名为 Acronis True Image 的硬盘备份克隆软件以及配套的中文版软件使用说明书,是这次测试中唯一随包装提供了软件的产品。

  测试平台及方法介绍

  系统配置

测试平台及方法介绍

  测试软件:

  AS SSD Benchmark 1.6.4237.30508

  Crystal DiskMark 3.0.1

  Anvil Pro Beta 8

  IOMeter 1.10rc1

  Sysmark 2012

  PCMARK 7

  PCINLIFE Storage Benchmark 2011 2.0

  AS SSD Benchmark、Crystal DiskMark 、Anvil Pro Beta 都是比较相似的软件,适合作为快餐类的一般测试,测试人员不需要看什么手册,点击运行即可。

  当然 Anvil Pro 相对复杂一些,例如测试文件的大小设定比较宽松,提供了类似于 IOMeter 的 I/O 测试,但是它不支持自定义存储模版,只有一个读、写、混合读写三种。此外 Anvil Pro 提供给了不同压缩比例的写入数据模板,包括全 0、8%(数据库)、25%、46%(应用程序)、67%、100%(不可压缩)。

  IOMeter 1.10rc1 是 IOMeter 的较新版本(最新版本为一周前的 1.10a),属于开发中的版本,而最近的稳定版是 2006-07-27,但是稳定版的年代 SSD 尚未流行,SSD 时代出现的实时数据压缩技术带来了测试技术的挑战,直到后来有人递交了 2010q2rnd 的补丁后,IOMeter 终于可以选择完全随机数写入模板,避免因为实时压缩技术带来的测试数据失真状况。

  作为 BAPCo 的媒体成员之一,PCINLIFE 这次也引入了 Sysmark 2012 进行测试。Sysmark 2012 是一个基于用户脚本回放的测试套装,主要是用于了解 64 位系统(Sysmark 2012 要求 64-bit 操作系统)下的办公和创作应用性能,完成一个完整的测试需要三个回合,共计 6 小时。

  Sysmark 2012 的包装中有两张 DVD,达到了空前的规模,其中包含的软件有:

  ABBYY® FineReader pro 10.0 Adobe® Acrobat® Pro 9 Adobe® After Effects® CS5 Adobe® Dreamweaver® CS5 Adobe® Photoshop® CS5 Extended Adobe® Premiere® Pro CS5 Adobe® Flash® player 10.1 AutoDesk® 3DS Max® 2011 AutoDesk® AutoCAD® 2011 Google Sketchup™ Pro 8 Microsoft® Internet Explorer® 8 Microsoft® Office® 2010 Mozilla® Firefox® Installer Mozilla® Firefox® 3.6.8 Winzip® Pro 14.5

测试平台及方法介绍

  和 Sysmark 2007 相比,Sysmark 2012 更新了大部分的软件,但是比较受人关注的是已经有多家公司退出了 BAPCo,而 AMD 公司也专门在官方 Blog 上发文批评 Sysmark 2012 缺乏 GPU 硬件加速应用软件(例如没有集成 IE9、Firefox 4+ 等)。

测试平台及方法介绍

测试平台及方法介绍

  不管怎样,我们是在同一个平台上测试大容量存储媒体性能,而非处理器之间的横向比较,所以这些所谓的争议而实际上是处理器公司间商业利益的纠纷并不会对这次测试构成影响。

  PCINLIFE Store Benchamrk 2011 2.0 在前面我们已经有所介绍,它是基于 I/O 轨迹的回放测试,和各类上面的各类测试相比,它再现了“使用者-应用程序-操作系统-硬件-SSD”的完整工作流环节,而 Sysmark、IOMeter 等只能做到“应用程序-操作系统-硬件-SSD”等环节的测试,是终极的理想性能测试方式。

  AS SSD Benchmark 测试结果

  AS SSD Benchmark 是 Alex Schepeljanski 开发的 SSD 性能测试工具,作为一个快餐类的测试软件,AS SSD Benchmark 在 SSD 用户中广为使用,其中的 64 线程测试主要用于测试程序启动和控制器优化。

  和 CDM 相比它提供了更多的测试选项以及一个清晰明了的测试结果得分。

  浦科特 Plextor PX-128M2P 在这个测试中获得了第一,总分为 844,而紧随其后的是更新固件为 0009 的美光 M4 128GB,得分是 818。

  总括而言,基于 Marvel 控制器的三款 SSD 都有不错的表现,浦科特 PX-128M2P 的写入访问时间结果更是相当的惊艳。

  基于 SandForce 的 SSD 中只有 OCZ Vertex3 MAX IOPS 略高于 Crucial M4 64GB,其余的表现比较一般。

AS SSD Benchmark 测试结果

AS SSD Benchmark 测试结果

AS SSD Benchmark 测试结果

AS SSD Benchmark 测试结果

AS SSD Benchmark 测试结果

AS SSD Benchmark 测试结果

AS SSD Benchmark 测试结果

AS SSD Benchmark 测试结果

AS SSD Benchmark 测试结果

AS SSD Benchmark 测试结果

AS SSD Benchmark 测试结果

AS SSD Benchmark 测试结果

AS SSD Benchmark 测试结果

AS SSD Benchmark 测试结果

AS SSD Benchmark 测试结果

  Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

 

Crystal DiskMark

 

Crystal DiskMark

 

Crystal DiskMark

 

Crystal DiskMark

 

Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

 

Crystal DiskMark

 

Crystal DiskMark

 

Crystal DiskMark

 

Crystal DiskMark

 

Crystal DiskMark

 

Crystal DiskMark

  CDM 的历史比 AS SSD Benchmark 更早,以使用简单著称,从 3.x 版起 CDM 默认采用随机数模板。

  在 4KB 随机读取测试中,OCZ Vertex 3 60GB 取得第一,有点出人意表,不过差别其实都不是很大。

  Anvil SSD Benchmark

  Anvil Storage Utilities 是 The SSD Review 开发的 SSD 测试工具,其中包括了类似 AS SSD Benchmark 测试结果汇总得分功能,不过它还有更多强大的地方,例如有不同压缩率的随机数据模板、多种传输块、QD 数量、LBA 大小、测试时长甚至还有一个耐久度测试等,某种程度它上比 IOMeter 更丰富,但是缺乏 IOMeter 的自动批处理以及其他一些特色。Anvil Storage Utilities 有一个灰色不可使用的 IOMeter 测试数据导入功能,根据开发者说法,这个功能尚未完成。

  打开 Anvil Storage Utilities 后是 SSD Benchmark 界面,其中有多种测试结果显示,例如响应时间、数据吞吐量、指令吞吐率、数据吞吐率等,使用很简单,点右边的 Run 按钮即可。和 AS SSD Benchmark、CDM 类似,Anvil SSD Benchmark 只支持已格式化分区的测试,不支持原始盘测试。

  我们在这个测试中,采用了 100% 不可压缩随机数和 0-Fill 的测试结果,所以你会在条形图中看到每个 SSD 有两组测试结果。

  正如你所看到的那样,基于 SandForce 的 OCZ Vertex 3/MI、影驰 Laser GT、海盗船 ForceGT 在 0-Fill 写入测试中有非常出色的表现。

  但是当遇到不可压缩数据的时候,测试结果更偏向 Marvell 的三款 SSD。

  比较有意思的是,在 QD1 的时候,OCZ Vertex 3 的 4KB 随机写入测试结果 0Fill 比不可压缩快了一倍,而其他的三款 SandForce 此时并没有表现出特别惊艳之处,到了 QD4、QD16 后,它们才表现出了比较夸张的 0-Fill 测试结果。

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

  IOMeter 设备级性能测试结果

  在采用完全随机写入模板(文档上说是以 16MB 为单位,所以还是存在着一点被压缩的可能,但是依据我试图对 IOMeter 生成的测试文件再压缩来看,已经没啥再压缩的余地)测试下,基于 SandForce 的 4 款 SSD 在 4KB 写入测试中只有 1300~1800 IOPS 的成绩,其中 OCZ Vertex3 60GB 大约是 1800IOPS 而其余的都死 1300~1500 IOPS。

  相比之下,基于 Marvell 控制器的 M4 128GB、PX-128M2P 4KB 写入测试结果分别是 277x、28xx IOPS,M4 64GB 则是 17xx IOPS。

  在小传输块读取测试测试方面,SandForce 明显不敌 Marvell。

IOMeter 设备级性能测试结果

IOMeter 设备级性能测试结果

IOMeter 设备级性能测试结果

IOMeter 设备级性能测试结果

IOMeter 设备级性能测试结果

IOMeter 设备级性能测试结果

IOMeter 设备级性能测试结果

  IOMeter 模拟特定负载模板测试

  在数据存储模板模拟测试中,PX-128M2P 是明显的赢家,这可能和它有较大的板载 DDR3 内存作为缓存有关系,实际上拥有 DRAM 作为板载缓存的 Marvell 阵营这这个测试中的表现都比较好。

IOMeter 模拟特定负载模板测试

IOMeter 模拟特定负载模板测试

IOMeter 模拟特定负载模板测试

IOMeter 模拟特定负载模板测试

IOMeter 模拟特定负载模板测试

IOMeter 模拟特定负载模板测试

IOMeter 模拟特定负载模板测试

IOMeter 模拟特定负载模板测试

IOMeter 模拟特定负载模板测试

IOMeter 模拟特定负载模板测试

IOMeter 模拟特定负载模板测试

IOMeter 模拟特定负载模板测试

  PCMARK 07 存储系统

  PCMark 07 的存储子系统测试是基于 I/O 轨迹回放的模式,在 Futuremark 提供的 PCMARK07 白皮书中,有 70% 的内容是介绍存储系统的测试细节,远远多于其余测试子项目。

  从总分来看的话,PX-128M2P 获得了第一,第二名是 OCZ Vertex 3 MAX IOPS,第三名是 Crucial M4 128GB。

  从各个子项目的测试,出现明显差别是图片导入和启动应用程序这两个,前者模拟从 USB 盘向 Windows Live Photo Gallery 导入 68 张图片(434MB),后者模拟在桌面上打开用 PCMark 07 1.0 规格书和 IE。

PCMARK 07 存储系统

PCMARK 07 存储系统

PCMARK 07 存储系统

PCMARK 07 存储系统

PCMARK 07 存储系统

PCMARK 07 存储系统

PCMARK 07 存储系统

  Sysmark 2012 整机系统测试

  我们花费了数天时间来运行 Sysmark 2012,不过从测试结果来看,7 款 SSD 并没有在这个测试中表现出什么差别,根据 Sysmark 2012 的白皮书,这的确不是一个 I/O 敏感型的测试套装,和 HDD 相比,SSD 只能为 Sysmark 2012 带来 20% 左右的提升。

Sysmark 2012 整机系统测试

Sysmark 2012 整机系统测试

Sysmark 2012 整机系统测试

Sysmark 2012 整机系统测试

Sysmark 2012 整机系统测试

Sysmark 2012 整机系统测试

Sysmark 2012 整机系统测试

Sysmark 2012 整机系统测试

Sysmark 2012 整机系统测试

Sysmark 2012 整机系统测试

Sysmark 2012 整机系统测试

Sysmark 2012 整机系统测试

Sysmark 2012 整机系统测试

  PCINLIFE Storage Benchmark 2011 2.0

  PCINLIFE Storage Benchmark 是国内首个基于

PCINLIFE Storage Benchmark 2011 2.0

 

PCINLIFE Storage Benchmark 2011 2.0

 

PCINLIFE Storage Benchmark 2011 2.0

 

PCINLIFE Storage Benchmark 2011 2.0

 

PCINLIFE Storage Benchmark 2011 2.0

 

PCINLIFE Storage Benchmark 2011 2.0

 

PCINLIFE Storage Benchmark 2011 2.0

 

PCINLIFE Storage Benchmark 2011 2.0

 

PCINLIFE Storage Benchmark 2011 2.0

 

PCINLIFE Storage Benchmark 2011 2.0

 

PCINLIFE Storage Benchmark 2011 2.0

 

PCINLIFE Storage Benchmark 2011 2.0

 

PCINLIFE Storage Benchmark 2011 2.0

I/O 轨迹捕获、回放的存储测试,目前的版本是 PCINLIFE Storage Benchmark 2011 2.0,包括了办公应用、游戏测试两大项目,其中游戏部分有三个最新游戏:Crysis 2、Battlefield3、Total War Shugon 2 的启动、场景载入以及退出,而办公应用包括了 Office 2010、IE9、Foxmail 7、Photoshop CS5、Adobe Acrobat 9 Pro、FastStone Image Viewer 等软件,重播 I/O 轨迹而生成的沙盘文件有 1312 个,216 个目录,总容量达到 32 GB 以上。

  这次我们提供的测试结果包括了吞吐率、平均服务响应时间、最长服务响应时间三个,服务响应时间是指数据请求发出到完成传输所消耗的时间。为了防止操作系统的内存缓存对测试成绩构成过多的干扰,我们的测试结果选自冷启动后的第一次运行,每个 SSD 都要完成三次完整的测试,在确定误差低于 3% 的情况下取成绩最高的一次为最终的测试结果。

  从测试结果来看,OCZ Vertex MAX IOPS、Crucial M4 64GB 办公应用录得了最快的性能,而 Battlefield 3、Total War Shugon 2、Crysis 的第一名均是 Crucial M4 64GB,紧随其后的是 Crucial M4 128GB。

  Plextor PX-128M2P 在办公应用测试中出现了 32.7 ms 的最高延迟,远高于其他 SSD,根据测试后的轨迹文件分析,是“optimizing_gpu_performance.ppt”这个文件上出现的。

  测试总结

  在 SATA II 问世之时,曾经有不少人提出疑问,硬盘的持续传输速率也就是 100MB/s 出头,3Gbps 的带宽根本用不上呀。不过到了现在,一些高端的插卡式 SSD 已经向 PCIE 2.0 x8 的峰值带宽提出挑战,如果不是出于耗电、成本的考量,现在的 2.5 英寸 SSD 可能已经轻松突破 6Gbps 的关口。

  在我们这次测试中,所有的 SSD 都能实现 450MB/s 以上的大数据块持续读取性能,有些还达到了 530MB/s 的水平,离 SATA 3.0 6Gps 的理论带宽 750MB/s 虽然还有一些距离,但是这个界面在现实其实也就是 575~600MB/s 的水平,基本上只要再推一下,6Gbps 界面成为潜在瓶颈并不奇怪。

  依据我们的 PCINLIFE Storage Benchmark 2011 轨迹分析,日常的应用绝大部分操作都是读取操作,读写比例一般是 20:1 以上,对基于 NAND 闪存的 SSD 来说是不错的操作环境。

  从上面的多个测试来分析,我们认为这次的优胜者是 Plextor PX-128M2P 和 Crucial M4 128MB,SandForce 阵营虽然在设备级测试中表现一般,但是在应用级测试中也有较好的表现,例如 OCZ Vertex3 MAX IOPS。

测试结果分析

测试结果分析

  SDD 的容量是非常关键的指标,虽然 128GB 和 120GB 的 SSD 在物理容量上其实都是 128GB,但是对用户来说 LBA 才是他们真正可以使用的,为了节省 DRAM 缓存、PCB 成本而保留的闪存物理空间看不见摸不着,更重要的是,从容量/价格性价比的图表来看,SandForce 阵营在缓存上节省的成本并没有在价格上得到体现。

  综合测试成绩和价格、技术支持等因素,我们决定给予美光 Crucial M4 128GB 和浦科特 PX-128M2P 非常好的推荐奖,读者应该依据各人的应用需求、预算等因素作自行判断,我们的奖项仅供参考。

0
相关文章