在我们平时选购硬盘时,经常会了解硬盘的一些参数,而且很多杂志的相关文章也对此进行了不少的解释。不过,很多情况下,这种介绍并不细致甚至会带有一些误导的成分。今天,我们就聊聊这方面的话题,希望能对硬盘选购者提供应有的帮助。
首先,我们来了解一下硬盘的内部结构,它将有助于理解本文的相关内容。
图为:硬盘的内部结构
工作时,磁盘在中轴马达的带动下,高速旋转,而磁头臂在音圈马达的控制下,在磁盘上方进行径向的移动进行寻址
硬盘常见的技术指标有以下几种:
1、每分钟转速(RPM,Revolutions Per Minute):这一指标代表了硬盘主轴马达(带动磁盘)的转速,比如5400RPM就代表该硬盘中的主轴转速为每分钟5400转。
2、平均寻道时间(Average Seek Time):如果没有特殊说明一般指读取时的寻道时间,单位为ms(毫秒)。这一指标的含义是指硬盘接到读/写指令后到磁头移到指定的磁道(应该是柱面,但对于具体磁头来说就是磁道)上方所需要的平均时间。除了平均寻道时间外,还有道间寻道时间(Track to Track或Cylinder Switch Time)与全程寻道时间(Full Track或Full Stroke),前者是指磁头从当前磁道上方移至相邻磁道上方所需的时间,后者是指磁头从最外(或最内)圈磁道上方移至最内(或最外)圈磁道上方所需的时间,基本上比平均寻道时间多一倍。出于实际的工作情况,我们一般只关心平均寻道时间。
3、平均潜伏期(Average Latency):这一指标是指当磁头移动到指定磁道后,要等多长时间指定的读/写扇区会移动到磁头下方(盘片是旋转的),盘片转得越快,潜伏期越短。平均潜伏期是指磁盘转动半圈所用的时间。显然,同一转速的硬盘的平均潜伏期是固定的。7200RPM时约为4.167ms,5400RPM时约为5.556ms。
4、平均访问时间(Average Access Time):又称平均存取时间,一般在厂商公布的规格中不会提供,这一般是测试成绩中的一项,其含义是指从读/写指令发出到第一笔数据读/写时所用的平均时间,包括了平均寻道时间、平均潜伏期与相关的内务操作时间(如指令处理),由于内务操作时间一般很短(一般在0.2ms左右),可忽略不计,所以平均访问时间可近似等于平均寻道时间+平均潜伏期,因而又称平均寻址时间。如果一个5400RPM硬盘的平均寻道时间是9ms,那么理论上它的平均访问时间就是14.556ms。
5、数据传输率(DTR,Data Transfer Rate):单位为MB/s(兆字节每秒,又称MBPS)或Mbits/s(兆位每秒,又称Mbps)。DTR分为最大(Maximum)与持续(Sustained)两个指标,根据数据交接方的不同又分外部与内部数据传输率。内部DTR是指磁头与缓冲区之间的数据传输率,外部DTR是指缓冲区与主机(即内存)之间的数据传输率。外部DTR上限取决于硬盘的接口,目前流行的Ultra ATA-100接口即代表外部DTR最高理论值可达100MB/s,持续DTR则要看内部持续DTR的水平。内部DTR则是硬盘的真正数据传输能力,为充分发挥内部DTR,外部DTR理论值都会比内部DTR高,但内部DTR决定了外部DTR的实际表现。由于磁盘中最外圈的磁道最长,可以让磁头在单位时间内比内圈的磁道划过更多的扇区,所以磁头在最外圈时内部DTR最大,在最内圈时内部DTR最小。
6、缓冲区容量(Buffer Size):很多人也称之为缓存(Cache)容量,单位为MB。在一些厂商资料中还被写作Cache Buffer。缓冲区的基本要作用是平衡内部与外部的DTR。为了减少主机的等待时间,硬盘会将读取的资料先存入缓冲区,等全部读完或缓冲区填满后再以接口速率快速向主机发送。随着技术的发展,厂商们后来为SCSI硬盘缓冲区增加了缓存功能(这也是为什么笔者仍然坚持说其是缓冲区的原因)。这主要体现在三个方面:预取(Prefetch),实验表明在典型情况下,至少50%的读取操作是连续读取。预取功能简单地说就是硬盘“私自”扩大读取范围,在缓冲区向主机发送指定扇区数据(即磁头已经读完指定扇区)之后,磁头接着读取相邻的若干个扇区数据并送入缓冲区,如果后面的读操作正好指向已预取的相邻扇区,即从缓冲区中读取而不用磁头再寻址,提高了访问速度。写缓存(Write Cache),通常情况下在写入操作时,也是先将数据写入缓冲区再发送到磁头,等磁头写入完毕后再报告主机写入完毕,主机才开始处理下一任务。具备写缓存的硬盘则在数据写入缓区后即向主机报告写入完毕,让主机提前“解放”处理其他事务(剩下的磁头写入操作主机不用等待),提高了整体效率。为了进一步提高效能,现在的厂商基本都应用了分段式缓存技术(Multiple Segment Cache),将缓冲区划分成多个小块,存储不同的写入数据,而不必为小数据浪费整个缓冲区空间,同时还可以等所有段写满后统一写入,性能更好。读缓存(Read Cache),将读取过的数据暂时保存在缓冲区中,如果主机再次需要时可直接从缓冲区提供,加快速度。读缓存同样也可以利用分段技术,存储多个互不相干的数据块,缓存多个已读数据,进一步提高缓存命中率。
图为:经常能看到的硬盘参数指标,正确理解它们的含义对选购会有帮助
7、噪音与温度(Noise & Temperature):这两个属于非性能指标。对于噪音,以前厂商们并不在意,但从2000年开始,出于市场的需要(比如OEM厂商希望生产更安静的电脑以增加卖点)厂商通过各种手段来降低硬盘的工作噪音,ATA-5规范第三版也加入了自动声学(噪音)管理子集(AAM,Automatic Acoustic Management),因此目前的所有新硬盘都支持AAM功能。硬盘的噪音主要来源于主轴马达与音圈马达,降噪也是从这两点入手(盘片的增多也会增加噪音,但这没有办法)。除了AAM外,厂商的努力在上文的厂商介绍中已经讲到,在此就不多说了。至于热量,其实每个厂商都有自己的标准,并声称硬盘的表现是他们预料之中的,完全在安全范围之内,没有问题。这一点倒的是不用担心,不过关键在于硬盘是机箱中的一个组成部分,它的高热会提高机箱的整体温度,也许硬盘本身没事,但可能周围的配件却经受不了,别的不说,如果是两个高热的硬盘安装得很紧密,那么它还能承受近乎于双倍的热量吗?所以硬盘的热量仍需厂商们注意。
对硬盘认识的常见误区(一)
1、转速与寻道时间:
现在不少人都认为硬盘转速越快寻道时间就越快,但这是最常见的错误认识,事实上寻道速度根本不决定于转速,因为两者的控制设备就不一样。转速是由主轴马达控制,寻道则由音圈马达控制。寻道时间说白了就是体现了磁头臂径向运动的速度与控制能力,音圈马达与相应的伺服系统起着重要作用。另外,磁头的高灵敏度也有助于在高密度磁盘上准确捕获伺服标记,进而快速定位。很多情况下,我们都可以看到5400RPM硬盘的寻道时间与7200RPM硬盘一样(如三星的V40与P40)。之所以有些高速硬盘(如SCSI硬盘)的寻道时间更快,是因为厂商的有意设计,就好像一台Pentium4电脑只配32MB内存让人觉得不平衡一样,厂商也会给高速硬盘配上更快的寻道时间(也意味着更好的元件与更高的成本,显然厂商要根据市场的需要权衡利弊)。实际上,通过上文有关平均访问时间的解释,大家应该明白,提高转速的主用意就是减少平均潜伏期,进而加快整体的访问速度,也许很多人不认同这是它最重要的用意,由此就又引出了下一个误区。
2、转速与数据传输率:
在很多人的印象和厂商的宣传中,更高的转速的主要用意在于提高数据传输率,但这并不正确。持续数据传输率决定于很多指标,并不光只是转速。当然,有人会说转速更高,磁头单位时间划过的扇区就越多,不错,但前提是线密度一样。线密度可理解为每磁道扇区数(SPT,Sectors Per Track)。低速硬盘完全可以通过提高SPT来加大数据传输率,SCSI硬盘就是追求SPT的典型。事实上,很多厂商在相同单碟容量上对于不同的转速采用了不同的SPT设计,如金钻七的最外圈磁道扇区数为837个,而星钻三代则为896个。有人可能会问,那如何保证容量一致呢?这就涉及到每英寸磁道数(TPI,Tracks Per Inch),它代表了磁道密度。SPT高则TPI就会相应减少,如金钻七为60000TPI,星钻三代则是57000TPI。本次测试最典型的例子是Caviar系列硬盘,WinBench测得的数据传输率与某些7200RPM产品相当。虽然我没有该系列硬盘最外圈SPT资料,但肯定不会低于1000(若转速实为5400RPM),即使转速真的是6000RPM,也在900之上。因此5400RPM硬盘完全可以通过提高33%(7200RPM比5400RPM转速高33%)的SPT来得到相同的数据传输率。
综上所述,7200RPM相对于5400RPM硬盘的最大优势就在于更短的平均潜伏期,进而减少平均访问时间。毕竟转速是死的,5400RPM永远处于劣势。
3、真正的内部数据传输率:
随着硬盘知识的普及,硬盘DTR这一指标也逐渐被人们所认识,但又出现了新的误区——拿以Mbps为单位的最高内部DTR说事,这其中某些厂商与所谓高手的误导有着不可推卸的责任,后果也是相当严重。由于内部DTR决定了硬盘的实际数据传输性能,所以很多人都在关心硬盘的内部DTR,而厂商也投其所好,在产品资料中基本都公布了最大内部传输率,但多是以Mbps为单位,不少人因此拿这个数值来预测硬盘的性能,甚至分析到接口速率的瓶颈(这些人通常将其换算成MBPS,而目前最高的数值将近80MBPS,离Ultra ATA-100的最大速率已相差不远了)。但是,它恰恰不能通过除8来换算成MBPS,因为这个数值是磁头处理二进制0/1信号(即bit)的纯理论性能,而磁头处理的信号很大部分并不是用户需要的数据(存入的数据都是经过编码的,包含许多辅助信息),因此不能以字节为单位。很多硬盘这一数值都是相当高的,如以前的富士通硬盘,指标很好,但实际性能却是另一码事。完全可以说,这个Mbps值没有什么实际价值,给人的是一种假象。
在硬盘中,真正重要的是内部持续DTR,它分为单磁道瞬间DTR与持续DTR两个指标,单磁道瞬间DTR的计算公式是“512字节×SPT×磁盘每秒所转圈数”或“512字节×SPT÷磁盘转一圈所用时间”,由于磁盘转一圈所用时间一般不能除尽,所以经常用前一种公式。持续DTR的计算公式则为“512字节×SPT×磁头数/总耗时”,其中“总耗时=(磁头数-1)×磁头切换时间+道间寻道时间+磁头数×磁盘转一圈的时间”。磁头切换时间一般在产品的用户手册中有标注,大约在1ms左右。单磁道瞬间DTR表明了硬盘实际上所能达到的最大内部DTR,持续DTR则体现了硬盘真正的数据传输能力。很遗憾的是,目前只有迈拓和IBM提供了内部持续DTR数据,其他厂商仍然用Mbps数值迷惑普通大众。但是,厂商心里是明白的,他们自己也不会混淆概念(只是没事偷着乐),在数据的说法上也是非常严谨,如果你哪天发现厂商公布的内部DTR使用了MB/s为单位,那么这很可能就是我们所真正需要的数据,而不要再用Mbps去除8了。
图为:IBM 120GXP 其中有两个内部DTR 我们只需关心第二个
4、缓冲区容量与性能:
上文说过内部DTR决定了外部DTR的实际表现,但为了将内部DTR对外部DTR的影响降至最低,产生了缓冲区设计。理论上讲,缓冲区越大,即使内部DTR不变,硬盘的性能也会更好,这就好比CPU中的缓存一样。不过,要做到缓冲区容量的增加并提高性能还是有一定难度的。这主要体现在缓存功能管理与数据安全两个方面。缓存功能管理决定了缓冲区智能化与缓存效果,简单的说就是一种管理算法与替换策略,负责这一任务的就是缓存控制器。上文已经讲到目前都将缓冲区做分段处理,并且是动态的,根据数据流情况自动划分。以120GXP为例,在读操作时可最多划分12个数据段(平均容量约155KB),在写操作时数据段可高达52个(平均容量约35KB)。那么怎么去动态的划分区段,怎么去选择最不常用的区段以替换成新的数据,都将影响最终的性能表现。比如区段划分不合理将影响缓冲区空间的利用率和预读效果,数据替换不合理将影响缓存命中率,这样一来说不定与小容量缓冲区性能差不多。讲到这,大家肯定会想到了CPU缓存的算法(比如N路级联与更新策略等),的确两者有相同之处。对于更大容量的缓冲区,肯定就不能照搬小容量缓冲区的缓存管理算法。因此,缓冲区越大性能越好是有前提的,这对厂商的缓存管理技术水平提出了更高的要求。
大容量缓冲区的数据安全性主要是指在突然断电的情况下,缓冲区中的待写数据将如何处理的问题。这方面笔记本电脑硬盘就有了得天独厚的优势,因为有电池为后盾,笔记本电脑硬盘的缓冲区容量已经提升到了16MB。但对于台式机,这是个不小的考验。WD公司在这方面做出了有意义的探索,主要方法是通过将数据暂时保存在最外圈暂存区(因为最外圈的写入速度最快),下次开机再写入原目的地址的方法来保证缓冲区中待写数据的安全,显然这需要特殊的管理机制,也是厂商的自由发挥了。
最后我们再谈谈目前普遍流行的说法——大容量缓冲区对零散数据非常有利,这是很片面的认识。当然,这种说法可以理解,也没有什么根本性错误,但容易误导人们对大容量缓冲区的认识。从分段式缓存结构可以看出,更大的缓冲区理论上可以划分出更多的数据段,能容纳更多的互不相干的小数据块。而这种随机的、不连贯的、小数据量的读取行为在Web服务、数据库服务与日常办公应用中很常见。如在Web服务中,经常出现对一个网页同时有多个请求的情况,而一个网页的大小也就是几十到几百KB的容量,如果缓冲区能缓存更多的页面,那么服务器的表现也会越好。因此大容量缓冲区在这方面的贡献,我们完全肯定。但另一方面,对于大容量,连续读写的数据操作,大容量缓冲区同样能发挥重要的作用。更大的缓冲区此时意味可一次缓冲更多的数据(硬盘会根据数据量将区段合并),即能在相同的时间内向主机或磁头发送更多的数据,而磁头的连续读写扇区的能力更容易发挥。所以,在音频、视频处理等经常用到大数据量连续读写的场合,大容量缓冲区硬盘是最佳之选。在下面的测试中,大家也会发现8MB缓冲区硬盘相对于2MB缓冲区硬盘的整体优势。