固态硬盘之惑
2016-09-10刘宗凡
刘宗凡
编者按:从2010年到2016年,高手论技栏目伴随大家走过了一个又一个春秋,多年来,我们关注技术与应用的初衷从未改变。如今,在“互联网+”的浪潮中,对新技术的探索、对成熟技术的创新应用、对不同技术的关联性思考……我们仍在继续。新年伊始,主持人和嘉宾将分两期探讨固态硬盘的前世今生。
为什么会有固态硬盘出现
1965年,美国《电子学》杂志发表了摩尔的论文《让集成电路填满更多的组件》,文中预言半导体芯片上集成的晶体管和电阻数量将每年增加一倍,这就是IT界著名的“摩尔定律”的雏形。在随后的时间,这个定律经过不断的修正,有了一个通俗的说法,即电脑的性能每18个月提高一倍,价格下降一半。半个世纪以来,摩尔定律都神奇而准确地起着作用。
但2010年以后,集成电路的发展却在不断放缓,CPU的频率不再一味冲高,电脑性能也无法在一年半之内翻番。出现这样的结果有很多原因,当然除了集成电路发展的局限外,还有一个更重要的瓶颈就是硬盘。
传统的温氏硬盘在存储体系中起着非常重要的作用。温氏硬盘是一种机械硬盘,当硬盘需要读写数据时,磁头会移动到相应位置,盘片也会转动以便让发生数据操作的区域到达指定位置。这些动作所需要的时间就是寻道时间和潜伏周期。由于发生装置要移动,所以这些过程都需要几毫秒的时间。此外,机械硬盘采用了随机写入方式,增加了机械硬盘的读写工作量,在最极端的情况下,磁头和盘片会进行多次移动和转动,最后的工作时间也会成倍增加。
机械硬盘很容易就达到了发展的极限,台式机硬盘(3.5寸)的转速长期以来都以每分钟7200转工作,而笔记本硬盘(2.5寸)基本上都以每分钟5400转工作。即使在对性能要求很高的服务器领域,SCSI硬盘也只能达到每分钟10000转。芯片领域在摩尔定律的见证下一路狂奔,CPU、内存等产业日新月异,电脑部件里只有硬盘迈着蜗牛般的步伐更新,甚至停滞不前。
固态硬盘的出现,让硬盘突破瓶颈成为可能。固态硬盘(SSD,Solid State Drive)是用固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元(Flash芯片、Dram芯片)组成,其中没有任何机械组件,和机械硬盘的工作原理完全不同。固态硬盘是用充、放电的方式读写硬盘,这个寻道时间基本上可以视为0。正是因为不需要机械动作,所以固态硬盘一出生,其速度上体现出来的优势就非同一般,现在硬盘也有望跟上摩尔定律的步伐。上页图1为机械硬盘的内部结构图,上页图2为固态硬盘的内部结构图。
固态硬盘和机械硬盘有什么区别
因为固态硬盘和机械硬盘工作的原理不同,所以两者优缺点都非常明显,我将通过上面的表格来对比它们的不同。
从上表可以看出,固态硬盘最大的优势体现在它的读写速度上,一般可以达到机械硬盘的4~5倍,特别是在随机读写和小文件读写上,固态硬盘的优势更突出。机械硬盘的最大优势是便宜,以1TB机械硬盘的价格,基本上只能买到128G的固态硬盘。所以现在我们组装电脑最常见的是用小容量的固态硬盘做系统工作盘,大容量的机械硬盘做数据存储盘,混合模式能较好地解决容量与价格之间的矛盾。
固态硬盘还有一个很容易被垢病的缺点,就是它的寿命问题。使用SLC作为储存介质的硬盘可以擦写10万次,MLC只有1万次擦写,而机械硬盘理论上是没有擦写次数限制的。当然,如果正确地使用固态硬盘,则可以大大延长它的寿命。
不过,如果从其他方面对比,固态硬盘就具有较大的优势,无论是抗震能力、功耗、噪音、发热等,固态硬盘天生就比机械硬盘优越。特别要注意的是,因为固态硬盘在工作时不停地根据需要进行数据的读写,所以删除或丢失的数据是很难找回来的,而机械硬盘则不会主动对丢失的数据进行覆盖,只要用户在删除或丢失数据后不在相应分区写入新的数据,一般是可以通过技术手段来恢复的。当然Windows的各种临时文件也会在硬盘写入数据,所以最安全的办法是发现数据丢失以后,立即停用当前硬盘。
哪些因素影响固态硬盘性能
有意思的是,虽然固态硬盘领域风起云涌,但全球两大机械硬盘制造商希捷和西部数据却按兵不动,迟迟不见发布固态硬盘。现在生产固态硬盘的厂商很多,产品又良莠不齐,同样容量的固态硬盘的价格却相差很大。是什么影响了固态硬盘的品质呢?
固态硬盘由主控、闪存、缓存三大核心部件组成,其中主控对性能影响最大,其次是闪存。和U盘类似,在固态硬盘中,最核心的功能部件是主控。主控其实就是一个处理器,主要是基于ARM架构,它的运算能力决定了固态硬盘的性能。现在主流的固态硬盘主要采用以下四个级别的主控。
1.旗舰级SSD主控:Marvell 88SS9189
旗舰级SSD的主控和闪存相辅相成,主控起到更大的作用。旗舰级SSD的主控至少是“大双核”级别,往往一颗主控用于处理闪存的数据,另一颗主控处理SATA3.0接口数据。这造就了旗舰级SSD突出且均衡的读写速度、随机读写IOPS值。
2.高端SSD主控:Barefoot3 M10
这类SSD主控和旗舰级SSD的主控在能力上不分伯仲,厂家为了区分档次,拉低了高端SSD的主控频率,或者搭配性能稍逊的闪存。
3.中端SSD主控:SM2246EN
SSD根据就低不就高的水桶原则,由两个小型的ARM内核或者单核RISC架构,它追求性能和成本之间的平衡。
4.入门级SSD:JMF667H
入门级SSD主打低价,兼顾主流性能。它的闪存和主控的采购成本受到严格限制,该级别SSD的闪存谈不上具有尖端性能,却要保证基本的闪存P/E寿命,匹配强力主控更是白搭。因此像JMF667H这类结构简单、采购价格便宜、性能不弱的主控,备受SSD厂家的青睐。
和其他厂商不同的是,三星的所有部件基本上都自己生产,固态硬盘不管是主控、闪存颗粒还是缓存芯片都采用自家研制的产品,在稳定性上很有保障。三星840系列固态硬盘采用自主研发的全新Cortex-R4的第四代MDX主控S4LJ204X01-8030,该主控采用三核心MDX控制器,可同时执行读取数据、写入数据和优化处理的命令,搭配三星自家优化的非压缩算法,使其在多线程调度下的IOPS能力更具优势。
除了主控,闪存类型对固态硬盘性能影响也不小。从性能上来说,从高到低分别是SLC、MLC、TLC三种闪存,当然这三种闪存的价格寿命长短也是从高往低排列的。性能更好,寿命更长,也意味着价格更昂贵。
固态硬盘特有的垃圾回收和TRIM指令是什么
固态硬盘与机械硬盘工作原理有一个很大的区别,即固态硬盘在写入数据时不能直接覆盖原来的数据,必须先把原来的数据擦除才能再写入。随着时间的推移,用户在固态硬盘不断写入数据,剩余空间越来越少,于是必须擦除以前的无用数据才能继续写入。
一块固态硬盘中的闪存可以被分为许多个块(block),每个块(block)又可以分成不同的页面(pages)。数据可以直接以页面为单位写入,但是要想删除数据却需要以块为单位。因此要删除无用的数据,固态硬盘首先需要把一个块内包含的有用的数据先复制粘贴到全新的块中的页面内,这样原来块中包含的无用数据才能够以块为单位删除,删除后,才能够写入新的数据。硬盘不断进行数据的移动,将有用数据集中到某些块中,将无用数据块擦除,以便以后写入,这个过程就是固态硬盘的垃圾回收机制。
那么垃圾回收的最好时机是什么时候呢?现在主要有两种思想:一种是利用空闲时间回收。另一种是实时回收。利用空闲时间进行垃圾回收最大的好处是提高了效率,当操作系统要在硬盘写入数据时,硬盘已经做好了优化,可以直接在空闲块写入。它的缺点是有些数据可能很快就会被删除,如一些临时文件,也被写入了有用数据块,但其实很快就要被删除,因此导致了一些无用的写入操作,加速了硬盘的磨损。实时垃圾回收不会对数据即时进行移动,减少了对硬盘写入的次数,但这需要固态移动有很高的读写速度,否则用户会有延迟感。
对于操作系统来说,它对硬盘的管理是逻辑上的。也就是说,它只知道删除了硬盘上的某个文件,却不理解硬盘的物理结构。而硬盘只知道某个地址的某个块有没有数据,却不知道它们是有用的还是无用的。因而硬盘在进行垃圾回收的时候,就会把所有数据不分青红皂白都当成有用数据归集,这不仅耽误了时间,还大大增加了硬盘的磨损。于是微软联合各大固态硬盘厂商开发了TRIM技术,简单来说就是操作系统告诉固态硬盘主控哪些数据占据的地址是“无效”的。这是固态硬盘最重要的技术,它减少了数据被重写的次数,更多的空闲空间可以回收,需要移动的数据减少,提高了硬盘的性能,同时也延长了硬盘的寿命。目前Windwos 7及Windows Server 2008以上的操作系统才支持TRIM指令,古老的Windows XP已经被微软放弃了。
固态硬盘特殊的垃圾回收机制会导致固态硬盘在使用一段时间后变慢。有一个最简单的办法会让固态硬盘恢复到出厂时的速度,那就是将它格式化。当然作为系统盘存在的分区,用户是不能进行格式化的,但可以使用TRIM重置。英特尔固态硬盘工具箱(Intel SSD Toolbox)可以在Windows下执行,操作简单,效果显著。当然要注意TRIM重置要对硬盘进行一次完整的擦写操作,这对硬盘的寿命是有一定影响的,所以建议不要频繁进行TRIM操作。
固态硬盘寿命问题有那么可怕吗
固态硬盘使用的闪存有擦写次数限制,所以大家对固态硬盘有一个疑问:它的寿命到底有多长?会不会用两三年就报废?
目前常用的闪存芯片从好到坏分为SLC、EMLC、MLC、TLC,它们的寿命也各自不同。①SLC:写入寿命最长,速度最快,据估测大概有100000次擦写寿命。但是成本过高,现在已经基本不用在固态硬盘了。②EMLC:写入寿命仅次于SLC,成本也很高,一般作为服务器级固态硬盘使用。③MLC:大约有3000~10000次擦写寿命,现在的主流固态硬盘基本上使用它。④TLC:寿命最差,只有1000~2000次。在攻克寿命难题以后,现在也逐渐走上了主流舞台,很多物美价廉的固态硬盘都使用了TLC闪存。
固态硬盘在工作时,并不会在一个块长期进行读写操作,主控会根据某些算法将读写区域尽量分布在硬盘的各个位置,这就是硬盘的磨损平衡。闪存完全擦写一次叫做一次P/E,主流闪存的寿命达到了3000~5000P/E。通常一个人每天写入的数据在5G左右,假如用户是一个数据狂人,每天产生50G的数据擦写,对一个128G容量的固态硬盘来说,2天左右完成一次P/E,那么即使3000P/E,也足够我们无故障使用16年左右。对于家用电脑来说,用户能坚持使用8年恐怕已经达到极限了,16年后估计用户早就把这个硬盘丢到爪哇国去了。
当然,如果用户是一个完美主义者,要尽可能延长硬盘的寿命,有些方面还是要注意的。
1.不影响工作效率的数据尽量写入机械硬盘
例如,我们下载电影、歌曲等,完全可以将其放在机械硬盘内,减少固态硬盘的读写。程序可以安装在固态硬盘,以体现它的速度。
2.不使用磁盘碎片整理
机械硬盘在使用一段时间后,由于反复写入和删除文件,磁盘中的空闲扇区会分散到整个磁盘中不连续的物理位置上,从而使文件不能存储在连续的扇区里。这样,再读写文件时就需要到不同的地方去读取,增加了磁头的来回移动,降低了磁盘的访问速度。进行磁盘碎片整理以后可以提高磁盘的访问速度。但这个经验千万不要延续到固态硬盘。固态硬盘没有磁头驱动机构,它的电子读写原理能够非常快速地找到任何一块中的数据,寻址时间几乎可以忽略不计,不需要进行碎片整理。另外,磁盘碎片整理会对硬盘进行频繁地擦写,会减少闪存寿命。用户不仅不要手动整理碎片,还要在计划任务中将碎片整理关闭。
3.禁用Windows的预读功能
Windows的预读功能(Prefetch)和超级预读功能(Superfetch),会在用户运行常用应用程序或功能操作前,事先将这些项目所涉及的页面缓存到内存,这样当用户运行页面被提前缓存到内存的项目时,系统就可以直接将内存中已有的页面调入应用程序对应的内存数据空间,从而减少日常应用对硬盘的随机访问频率,大幅度提升应用程序启动速度。但对固态硬盘的读取速度来说,这个操作意义不大,可以禁用这一功能,减少大量预读文件产生。
4.取消休眠功能
机械硬盘时代,电脑冷启动需要的时间比较长,休眠能使下次开机速度大大加快。但使用固态硬盘作为启动盘,启动速度往往可以达到10秒左右,和休眠不相上下了,所以休眠从功能上来说意义也不大了。电脑休眠要将内存镜像写入硬盘,对大内存用户来说写入数据也是可观的,特别是对用处不大的功能来说完全是一种浪费,可以在电源管理里把休眠功能关闭。
5.移动或关闭虚拟内存
虚拟内存要占用内存的1.5~2.5倍左右的硬盘空间,对于大内存用户来说,可以把虚拟内存放到机械硬盘,甚至将虚拟内存关闭。如果内存达8G甚至16G,用户完全可以拿出一部分内存用RamDisk模拟一个硬盘分区,将虚拟内存放在这个分区。因为内存的极速是固态硬盘无法比拟的,在性能上也会有所提升。当然,到底是牺牲效率把虚拟内存放在机械硬盘还是牺牲内存把虚拟内存放在内存模拟的硬盘,这需要用户权衡。
6.其他方式
关闭系统还原、磁盘索引、Windows搜索优化、8.3命名规则、系统日志等,都可以在一定程序上减少硬盘的读写操作。
从目前固态硬盘损坏的案例来看,基本上是主控固件损坏,或者是固件设计不合理,而因为闪存芯片寿命问题损坏的还很少。
不过,考虑到SSD固态硬盘也存在售价昂贵、硬件损坏后数据较难恢复等问题,如果能利用新型的技术使得其寿命无限延长,那么降低用户的消费成本以及确保数据能完好保存将变为现实。目前正在研究的一项名为NRAM的新型技术将取代现有的NAND闪存技术,有可能无限延长固态硬盘的使用寿命。
固态硬盘你用好了吗
虽然换了固态硬盘以后,电脑的性能会得到一定提升,但却并不一定能把固态硬盘的潜能都发挥出来。要使固态硬盘发挥出它的全部威力,需要注意以下事项。
1.操作系统
Windows 7和Windows Server 2008及以上操作系统才支持TRIM指令,对家用来说Windows 7无疑是首选,Windows XP就不要去浪费硬件了。
2.硬盘接口
目前主流的硬盘接口主要有SATA2和SATA3。SATA3属于SATA2下一代升级版,往下完全兼容,也就是说固态硬盘在SATA2和SATA3接口上都可以使用。它们的区别在于SATA2只支持理论上最快3GB/s的传输速率,也就是实际每秒传输数据一般低于300MB,这对于现在读写达到500MB的固态硬盘来说是一种极大的浪费。SATA3接口理论上支持6GB/s的传输速率,完全可以满足目前固态硬盘的吞吐。
3.硬盘模式
现在的硬盘主要工作在IDE和AHCI模式。
IDE(Integrated Drive Electronics),即电子集成驱动器,指把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器。
AHCI(Serial ATA Advanced Host Controller Interface),即串行ATA高级主控接口/高级主机控制器接口。AHCI通过包含一个PCI BAR(基址寄存器),来实现原生SATA功能,允许存储驱动程序启用高级串行ATA功能。AHCI模式是专门为SATA接口而设计的,支持SATA接口特性,如本机命令队列(NCQ)和热插拔。NCQ使硬盘从一个程序跳转到另一个程序时能加快速度,在理论上可以提高SATA硬盘约30%的性能。
IDE模式可以将SATA盘映射模拟成普通IDE硬盘,无需额外加载SATA驱动(但不支持任何SATA接口的新特性),兼容性很强,可以用于Windows XP及以上的所有操作系统。为了保持高兼容性,克隆版的操作系统常常会选择IDE模式来制作镜像。如果在BIOS开启AHCI模式,可能会导致系统蓝屏。在使用机械硬盘时,两种模式的性能差别并不明显,在Windows XP时代IDE模式基本占据了统治地位。但是使用固态硬盘时,两者差距明显,所以一定要在BIOS里开启AHCI模式才能充分体现出固态硬盘的性能来。
4.分区
根据固态硬盘的垃圾回收机制,当分区剩余的容量很少时,会频繁地进行垃圾回收,系统满负荷工作,加剧了某些地方的磨损。因此在分区时,可以适当保留部分空间不用,用于固态硬盘的优化操作,如磨损平衡、坏块映射、垃圾回收等。当然,有些硬盘厂商已经提前将部分空间留出来,市场上有些标记为120G的固态硬盘,就是厂家隐藏了8G的空间。在使用时也尽量不要让分区装满数据,以确保固态硬盘能高效工作。因为每个分区都要留一些空间,所以分区时也要少分区,避免过于浪费。
5.4K对齐
硬盘在进行高级格式化时,会默认为每个扇区分配512个字节。随着硬盘容量不断增大,这个方案就出现了很多缺点,于是厂商又将每个扇区扩展为4096个字节,也就是4K扇区。所谓“4K对齐”就是符合“4K扇区”定义格式化过的硬盘,并且按照“4K扇区”的规则写入数据。在NTFS6.x以前的规范中,数据的写入点正好会介于两个4K扇区之间,也就是说即使是写入最小量的数据,也会使用到两个4K扇区,这样对写入速度和读取速度都会造成很大的影响,还会增加固态硬盘不必要的写入次数,减少固态硬盘的寿命。
对于新硬盘来说,要做到4K对齐很简单,就是使用Windows 7安装时系统自带的工具格式化分区,默认就是4K对齐的。如果因为某些原因必须使用Windows XP系统,则可以使用DiskGenius进行硬盘分区,分区时要选中“对齐到下列扇区数的整数倍”(如图3)。
如果已经用克隆版安装了系统或安装了windows XP又不想重装,可以用AS SSD Benchmark检查一下4K对齐情况,软件打开后左上角会显示检查结果,图4显示4K已对齐。如果没有4K对齐,又不想重新安装系统,可以用Paragon Alignment Tool实现无损对齐。
6.固件
对硬盘进行操作的软件固化在硬盘中,称为固件。这和主板中的BIOS有些类似。有些厂商在硬盘发布后可能对固件进行升级,以进一步优化硬盘的操作,提高性能,延长寿命。所以用户要关注相关厂商的升级信息,及时升级,让硬盘能在最佳的环境中工作。
7.驱动程序
Windows 7开始已经具备对固态硬盘的比较优秀的支持,使用自带的驱动程序也能较好地工作。Intel开发的RST驱动更能提升固态硬盘的性能,很多固态硬盘更新RST驱动以后都能获得比较明显的性能提升。但要注意也有少数固态硬盘在使用RST驱动以后性能会降低,用户要注意使用适当的驱动程序。
安装了固态硬盘,可能有些人潜意识里会认为整机性能会有很大的提升。确实,用了固态硬盘以后,系统启动速度会快很多,很多程序在打开时都无需等待,上网时打开网页也秒开了,给人的感觉是电脑性能好了很多。其实,固态硬盘所提升的,肯定是和硬盘读写密切相关的操作。因为硬盘速度以前是制约整台电脑的瓶颈,所以换了固态硬盘后会给人焕然一新的感觉。那些不太依赖硬盘速度的软件,如大型游戏,在载入时会快一些,但在运行时并不会有脱胎换骨的感觉,因为游戏最依赖的是显卡和CPU的计算能力。我们不能奢望固态硬盘成为万能良药,能解决所有的电脑性能问题,因为电脑性能还适用木桶理论,当硬盘成为最短的那块木板时,固态硬盘就是补齐这个缺陷的最好手段。如果硬盘这块短板已经增强,但用户还是觉得电脑不够用,那就该换新电脑了。