|
INTEL的控制器会尽力克服这样的情况,因此它的随机写入性能仍然很好。三星的控制器就没有针对这种情况处理的机制(算法)了。
现在你可以明白对整盘执行持续写入会修复碎片区块带来的不利影响了,这样的操作可以把零碎的小文件串联成一个或几个大型的“连续文件”。这同时也解释了为什么固态硬盘的性能会随着时间下降的问题。你不用担心一定要向SSD中写入连续的大文件,实际上,你对SSD操作的文件有大有小,有连续也有分散,最后你的操作都会被控制器进行合并然后再真正写入到SSD上。
写入寿命
还有个因素影响着SSD的性能:写入均衡。
每个文明用语C NAND闪存单元可写入的次数大约为1万次,超过这个次数,写入的数据就会变得不那么可靠。当然也可以使用SLC NAND闪存单元,它们可以提供10万次的写入,但价格会立马上升到2倍。
1万次的写入次数并不多,不过SSD厂商都宣称自己的产品使用寿命为1~10年。最重要的是,全部SSD厂商都宣称自己的产品比传统的机械式硬盘更可靠。
唯一的办法是赋予SSD非常聪明的算法,以及基于大量调查收集的事实:台式机用户并不总是在硬盘上进行非常大量的写入操作。
想想你现在用的硬盘吧,你多久把它们全部塞满、删除,然后重新塞满一次?INTEL估计,即便你每天向硬盘中写入20GB的数据,X25-M还可以使用至少5年的时间。实际上,20GB的写入量大大高于你日常使用中的情况。
例如:在个人电脑中,操作系统和其他的一些程序占用了不到100GB的空间(基于过去两周的统计结果),然后就是每天大约7GB写入的各种数据,让我们看看下面这些数据:如果我不再安装其他的程序,只是保持系统目前的样子,我的硬盘空间还剩余203.4GB可以用于每天7GB的写入。这意味着,大约29天后(假设SSD中的写入分配是完美的),我会把这个SSD填满。再假设我会用7天来备份这个SSD上的所有数据和程序。那么就是说,大约36天的时间,我会用掉这1万次写入寿命中的一次。简单的乘法算一下,就知道大约是36万天后这个SSD会挂掉。假设控制器对写入操作是完美的均衡操作,那么就是986年。实际上,NAND闪存中的数据最多只可以保存10年左右。
这是假定了一个具有完美写入均衡算法的SSD,但正如你猜到的那样——这是不完全可能的。
写入放大因子决定了,写入的虽然是7GB的内容,但真正写入的超过了7GB的SSD区块容量。请记住,对整个区块的写入是读取/修改/写入的过程。最坏的情况下,我只写入了4KB
的文件,控制器读取了512KB的整个区块,修改其中4KB的内容,然后再写入512KB的区块,并清理掉旧的512KB区块。虽然我只使用了262,144个区块中的一个进行写入,却同时影响到其他262,143个区块的写入寿命。
当然可以对写入均衡进行深入优化以确保每个区块都得到平均的写入,不过却是以牺牲性能为代价的。
备用空间
INTEL 80GB版本的X25-M具有85,899,345,920个字节的存储空间(80×1024^3)。硬盘制造商却将80GB认为是800亿字节,因为他们使用了1GB=10亿字节的定义。因此,SSD厂商也使用相同的定义。现在,800亿字节其实等于74.5GB,这就是在你的固态硬盘上能够使用的空间。操作系统只能使用800亿个字节,实际具有85,899,345,920个字节
固态硬盘实际有多少空间?80GB。操作系统让你使用多少空间?74.5GB,多出来的5.5GB哪里去了?控制器将它们作为备用空间。
INTEL的控制器是动态的,它使用剩余空间作为后备空间,直到你的文件膨胀占用更多的剩余空间。它只将非用户空间的7.5%作为自己临时的“写入均衡”(实际就是动态的备用
空间),所以可以获得更好的性能。其它的控制器也许不是动态的,但它们也可以在固态硬盘接近塞满时提供较小的性能损失。不过,即将推出的TRIM指令使得INTEL大费周章设计的优秀算法很快变得过时和无用。
TRIM
TRIM是Windows 7中引入的专门针对SSD的新指令,这个指令很有趣,它实际上是让SSD的清理操作具有优先级的概念。在前面的那个极端例子中,当写入时只有很少的几个区块可
用时,才会将那些只有部分数据的区块清理并合并写入,操作过程中甚至动用了备用空间。当具有TRIM指令时,操作系统只是从LBA表中清理掉相关的信息,并不执行真正的清理
操作。TRIM指令告诉SSD控制器,可以排序并“规划”这些无用区块的清理工作,并将这些区块的地址信息添加到“替换区块池”中。
一个使用中的SSD会使用备用空间来“中转”数据,大多数情况下,这个比例是7%左右。下面的图来自IBM苏黎世研究实验室:
请注意,当增大备用空间比例时,写入放大因子随之下降。为了使写入放大因子等于1,我们的备用空间需要保持在10%~30%之间,具体取决于硬盘上有多少数据是静态的。
还记得我们刚刚说过的替换区块池?下面这张图其实是假设我们有多个替换区块池,并加入了动态数据进行对比(静态数据例如安装上的程序、生成的文档等等;动态数据例如
交换文件、其它随机写入等等)。如果固态硬盘只使用了单块的替换区块池,那么对备用空间的要求也越来越高。
备用空间在30%左右时,写入放大因子甚至下降到1.0了,这是最理想的情况。
不过请记住,现在的消费级固态硬盘仅有6~7%左右的备用空间,甚至比我们在例子中的最小值10%还要小。相比之下,INTEL企业级的固态硬盘——X25-E系列,具有更多的备用
空间,大约是20%左右。
TRIM指令可以帮助控制器达到类似X25-E那样较多备用空间的好处。固态硬盘上未使用的空间现在都已经被TRIM指令接管了,作为“替换区块池”使用。就像IBM的研究揭示的那
样,这可以根据你的文件性质(动态或静态)大大提高固态硬盘的性能。
性能退化
更多的备用空间可以提供更好的随机读写性能,不过桌面台式机的随机工作量还没有大到能够使更多的备用空间产生明显好处的地步。而且,目前对SSD的评测都没有测试使用中
的状态,只是新盘跑跑分而已。这使得越来越多的用户只将目光盯紧SSD的价格,想从SSD产品中挑出每GB价格最低的型号。
使用TRIM指令可以把使用过的SSD性能恢复一部分,不过取决于你使用的SSD型号:
根据不同的情况,所有三种控制器都可以从TRIM指令中获得好处,不过随机写入性能仍然出现下降,最糟糕的是三星的RBB控制器,几乎丧失了70%的性能,三星看来更需要TRIM
。
INTEL从G1到G2取得了一些显著的改善,测试的固态硬盘几乎没有丧失随机写入性能。这是因为INTEL对固件进行了微调并具有两倍大的缓存:更大的缓存使得控制器可以更好地
跟踪、组织、管理和执行清理。单纯从性能上来说,G2完全具备挑战企业级X25-E的能力。不过,X25-E的寿命更长。
Indilinx控制器的性能差距也很明显,持续写入测试下降明显,但它们却是在PCMark Vantage HDD测试中唯一没有出现性能下降的产品。其实,PCMark Vantage总分的差距更小
一些。这可能意味着在现实世界中,Indilinx从TRIM指令中并没有得到多少的好处。这可能是由于Indilinx使用了静态的LBA映射方案,并且只在额外的空间中保留了单一的
6.25%的备用空间的缘故。
三星和INTEL在TRIM指令上获得了很大的好处。三星的表现从难堪到可以接受(这并不是指它的价格),INTEL的表现从领先到更优秀。是的,更优秀。
旧事重提
当新买的SSD投入使用的时候,一切都是那么美好:所有的区块中都没有任何数据,每次写入都是全速进行,一切都和想像的一样美好。随着时间的推移,有些区块中已经填充了
数据(有效或无效),现在再对区块中写入数据,控制器就不得不执行读取/修改/写入/清理的繁琐过程了。
较早前,我曾经模拟过最坏的情况:首先将SSD中塞满了各种数据,然后删除整个分区,再重新安装操作系统和运行测试软件。这很接近实际使用中的情况,因为它的所有区块都
被写入,操作系统安装和运行测试软件则增加了一些随机写入的数据,这使得所有区块中数据的分布更接近长期使用SSD的情况,也使得SSD控制器的工作量大大上升,我喜欢这
么折磨它。
问题在于,如果一个SSD正确支持TRIM指令,格式化操作会擦除掉所有我故意塞进去的各种数据。我的关于测试使用后的支持TRIM指令的SSD就会变成和测试新的SSD没有两样了。
为了证明这一点,我找了个支持TRIM的SSD,把它填满,然后格式化,再测试性能,
性能并没有真正改变,清理操作需要较长的时间,不过性能基本是一样的。
所以,我需要新的方式来测试。以前那种大压力的测试情况并不能得到它们真正的性能表现。毕竟,我不希望用不严谨的数据来误导群众。
一旦可以在所有驱动器上启用TRIM,我就会在系统启动后将它们填满各种数据,有有效数据,也有无效数据,然后我会删除无效数据,并在整个过程中测试它们的性能。这将测
试它们处理数据的方式以及TRIM的工作方式。
遗憾的是,还有驱动器不能正确地支持TRIM。测试版Indilinx固件与TRIM运作良好,不过当系统进入休眠模式,重新唤醒后可能会丢失数据。囧。同时,这也与INTEL Matrix
Storage Manager有点冲突,可能造成TRIM指令不能发送到驱动器。不过据说这些问题都会在年底前得到解决,现在就为TRIM欣喜若狂有点为时尚早。
测试的第一阶段,我们需要转换我们的思路。为了模拟普通用户使用中的情况,我们将测试用的SSD首先进行安全的全盘删除,然后全新安装Windows 7 x64操作系统(非镜像方
式),然后安装所有的驱动和程序,把剩余空间全部塞满各种文件,再删除这些无用的文件。在这个填充和删除的过程中,控制器必须跟踪所有区块中的数据变化,我们以此来
尽量逼真地重现普通用户的使用方式和使用情况。
我们使用了最新的IMSM驱动,所以TRIM不会对驱动器有效。这些可怜的SSD。
接下来我们就将看看全新和使用过的性能数据。如果驱动器强制使用TRIM指令,我们不会手动将其关闭。
INTEL新的34nm SSD:没你想像的那么大突破
我花了一段时间才弄明白INTEL最近投放市场的SSD,主要是因为INTEL并没有公开的文档。INTEL一直刻意模糊有关的重要细节,只能通过测试得到的数字来猜测它们之间的不同
。不过,经过几个星期,我想我已经明白了。
G1--第一代基于50nm工艺的X25-M
G2--第二代基于34nm工艺的X25-M
进化到34nm让INTEL X25-M的价格竞争力大大增强。新的制程也使得INTEL可以改进控制器的性能。控制器的基本架构并没有变,但在技术上并不是另一块硅片那么简单(不仅仅
是无卤素),是固件本身的改进。
新的X25-M还具有两倍大的集成缓存。旧款的型号使用了16MB的三星166MHz缓存(CAS 3)。
新的160GB G2使用了32MB美光133MHz缓存(CAS 3)。
更多的缓存意味着控制器可以同时跟踪更多的数据,可以更好地整理和重组数据。我们看到这体现在4KB文件的随机写入性能上,大约提高了50%的水平。
INTEL使用了16GB的闪存颗粒代替了旧工艺的8GB颗粒。一旦34nm工艺进入批量生产阶段,INTEL可能会在PCB的背面再集成十颗颗粒,提供320GB的型号。我相信这个时间会很快。
34nm新工艺的驱动器在性能上相比旧工艺并没有明显的改进。 |
|