达思数据恢复带你深入硬盘内部技术

深入硬盘内部的性能分析
现今的计算机应用中,人们越来越关注硬盘的数据传输速率以及硬盘的安全性问题。最初的硬盘,仅仅是被用来存储大量的多媒体相关信息而准备的,人们对于它的性能要求并不是非常的苛刻。若在20多年前个人计算机刚刚处于起步阶段,硬盘的性能足够保证当时的应用需求。现今由于Internet已经越来越普及,并且在整个电子架构的数据通信网络中,服务器需要更为强大的数据存储能力。那么现在对于存储媒体的整个体系来说,硬盘的能力成为了最大的瓶颈之一。人们越来越对硬盘的性能提出要求。
硬盘性能分析
是什么决定了硬盘的性能?这是一个相当有争议的话题。这需要考虑用户对于计算机的应用需求。同样的一个问题,向不同阶层的人询问会有很多不同的答案。硬盘的性能问题包括很多不同的标准,并且有很多各种各样的技术。它大致包括:内部传输性能、寻道潜伏时间、数据传输速率、响应时间、单碟容量、线缆类型、接口、磁介质等等因素。并且按照传输的方式还可以分为:突发传输速率、实际主机的传输速率等等。
平常我们经常讨论的仅仅是一个单独的硬盘驱动器的性能。如果计算机的存储子系统采用的是RAID架构,那么对于硬盘性能的分析将变得更为复杂。再加上各种芯片组之间磁盘控制器性能的差异,各种测试标准和测试平台的不统一,也就很难得出一个让人信服的结论。
在这篇文章中,我们首次讨论硬盘的性能。我们仅仅讨论那些具备基本存储能力的硬盘的性能,并且最后我们将讨论如何确定某一类硬盘,应该采用何种评测软件。你也将看到一些评测的数据,因为其中我们并不是使用主流的硬盘驱动器,所以他们的测试得分也许不会给你留下太深刻的印象。
什么是硬盘的性能?
在我们讨论硬盘的寻址、架构的细节和数据传输性能的测量之前,我们还是有必要来说说究竟什么是硬盘的真正的性能。为了让读者能够更好的理解硬盘的工作机理,在下文中我们会将硬盘的整个工作模式比喻成超级市场。它同硬盘在存储上有很多相似的特点。
超市是供应商品的一种自选商店,很多人都有去超市购物的体验。但是很多人在去超市购物的时候都觉得虽然手里拿着购物的清单,但在购买商品的时候还是非常的麻烦。
第一个原因是,超市各类的商品的储藏仅仅有一个大致的位置,超市并没有对每一种商品给出确切位置的列表。因此对于这些含糊不清的商品摆放,消费者很难迅速的找到商品的位置。硬盘的数据存储结构也是如此,磁头需要花费很大力气从浩瀚的数据中寻找到所需。
第二个原因是,消费者在寻找商品时,需要做出太多的选择。对于同一类的商品具有多种的品牌、各种各样的包装、不同的价格和各色的促销活动。消费者很难根据他们的自身需要快速的挑选到自己满意的商品。在硬盘中有很多的逻辑地址块、扇区、磁道。要想检索到所需的信息也并不轻松。
最后,当消费者选择完所有的商品之后,还要在超市的出口排队付款。遇到人多的高峰期,队伍会排的很长,花很多时间去等待。硬盘受限于缓存容量、端口速率、总线传输速率等瓶颈的影响,并不能十分流畅的传输数据。
通常,一个性能出色的超市(或者是硬盘驱动器),应该使用最少的时间就能找到所需的商品(数据)的存放地点。在最短的时间内,传输或者交易更多的商品(传输更多的数据)。这就是你所听说过的硬盘平均数据传输性能么?我敢肯定不仅仅是这么简单的问题,其中还是有很多值得我们推敲的。
一些厂商的蓄意夸大他们未来的新产品的那些文章,将硬盘性能测试的重点转移到了突发数据传输速率和持续数据传输速率上来。我们大家都知道,在硬盘中存放的数据,就像超市中货架上的物品一样,是分散开来零散的存放的。而很多测试软件所模拟出的情景是,很多消费者在货架之间快速的奔跑,连续的任意的抓取每一行货价的商品。这种情况就相当于持续数据传输速率。并且在短时间内,如此疯狂的任意抓取周围货价上的商品,就好比是突发数据传输速率。然而测试软件模拟出的这种情况真的同我们超市中实际的消费者购买商品的情况相同么?也就是说,测试软件很难模拟出真实情况下我们对于硬盘数据的存储情况。
硬盘的体系结构
一般电脑的硬盘,都是一个大容量的存储设备。它使用表面涂有磁性物质的圆盘来记录数据信息。马达会带动磁盘作高速的自转,不同制造商所生产的硬盘的磁盘转动方向也不一样,有些是顺时针转动,有些则是逆时针转动。而在一旁的横杆上的磁头则通过磁盘的自转来做物理运动,对磁盘上存储的信息进行读写操作。
扇区
每一片磁盘都有一定的存储介质密度,或者称为粒子密度。它会直接影响到硬盘所存储信息的密度。也就是我们经常所说的单碟容量。由此数据存储的密度与在磁头下方高速运动的磁盘碟片的自转速度,联合起来决定了硬盘内部数据迁移的速率。一般来说,硬盘马达的转速与磁盘上存储介质的密度是恒定不变的。硬盘碟片上的最外一圈(OD,外部磁道)的周长,就要长于最内一圈(ID,内部磁道)的周长。因此OD磁道上存储的信息要比ID磁道上的信息多得多。然而碟片上的每一条磁道上的自转速度都是一样的。因此,当磁头在磁盘碟片上的最外一圈进行读写操作时,显然要快于磁盘碟片内部最内一圈。在实际的应用环境中,硬盘上所有的磁道都被分割成了一个个的逻辑地址块。每一个最小的存储单元的容量为512Byte。硬盘的磁道也不是成螺旋型排列的,而是成同心圆形式排列的。当硬盘的磁头从最外一圈向最内的一圈读取数据的时候。数据传送的曲线也不是非常平滑的。因此,在同一磁道上的一段磁盘空间我们就把它叫做扇区。在每一个扇区里包含了很多逻辑地址块。

如图1
这是我们采用Winbench99 2.0来测试两块WesternDigital Raptor WD360GD硬盘在RAID下连续读取数据的曲线图。RAID采用Level
0方式,(两块硬盘组阵,数据传输速率加倍)控制芯片为ASUS SK8N主板上的一颗Promise公司制造的PDC20378芯片。当磁头在硬盘最外圈时,持续数据传输速度曾经达到117MB/s。尽管如此,硬盘的持续传输速率已经直逼PCI总线的突发数据传输极限。由于PCI总线传输速度的原因,限制了硬盘最外圈那些硬盘中最快的扇区的数据传输。此后,磁头滑动到了一条新的直径略小一点的磁道时,数据传输的速率才稳定在了115MB/s。当磁头滑动到硬盘碟片的最内一圈磁道时,驱动器仍然设法维持35MB/s的传输速率,两块硬盘的传输速率加起来就是70MB/s。
实际内部传输速率(TxD)
许多硬盘厂商在宣传自己的硬盘产品的时候,都会提到内部传输速率。他们都会吹嘘自己生产的硬盘内部传输速率达到了数百MB/s的级别。这个内部传输速率是硬盘磁头每秒钟读取的所有数据的总和。在大多数情况下,很多厂商列出的数值都远远超越实际的测试软件结果。例如Seagate
Barracuda 7200.7,官方提供的内部传输性能为683 Mbits/s根据8bit=1Byte换算过来后,硬盘的内部传输速率大约为85.4
MB/s,这是硬盘中最外圈的磁道的数据传输速率。这个传输性能要比大多数SCSI的硬盘还好。但是,如果我们采用HDTach或者SiSoft
Sandra来测试Barracuda 7的话,在很多测试平台所显示的结果往往低于官方的评测数据。
内部传输速度 VS. 连续数据传输速率
硬盘生产厂商所标称的硬盘的"内部传输速率"与我们采用测试软件进行评测得到的结果所产生的差异,主要是由两方面的因素所产生的。第一,一般在硬盘内部是采用10bit/Byte的换算公式来进行转化的。因此很有可能是在硬盘最外一圈磁道达到了数据传输的顶点时,检测到的内部的传输速率大约是68MB/s,而不是85.4
MB/s。第二,更重要的是,在现代硬盘驱动器中磁道上并不仅仅包含了数据信息。在数据磁道上也包含了一些用来隔离数据的区域,这些区域被称作"伺服脉?quot;(Servo
Bursts),或者又叫做"伺服楔"(Servo Wedges)。使用伺服脉冲可以更好的对硬盘进行物理规划。他们并不是真实的数据,只是用他们来通知读取信号的顺序。因此在硬盘实际的读写操作时,读取伺服脉冲的也会影响硬盘实际效能的发挥。

如图2
伺服脉冲包含了数据存储的位置信息。他们隔行交错的插入在数据信息内。为了精确的为每个磁头分配单独的磁道,伺服控制器会让磁头反复读取在硬盘碟片上的那些呈闭环排列的磁头位置信息。
伺服脉冲
简单的说伺服脉冲是在硬盘碟片上的一个楔形扇区,它包含了数据保护的位置信息。当磁头要读取硬盘中的数据时,它会首先读取伺服脉冲的信息。并且将这些信号传送给伺服控制系统的闭环反馈电路。这样系统就可以调节磁头的位置,寻找到目标磁道。这意味着我们硬盘碟片上的数据区被伺服脉冲区域分割成一个个的小块,其中有一小部分的存储空间用来存储磁头位置信息。这些伺服脉冲是硬盘在出场前被厂商加载上去的,其中使用了非常复杂的保护技术。对于我们一般的用户而言,是不能删除和更改上面的信息的。而早期的硬盘并没有伺服脉冲这项功能。硬盘厂商使用一整块硬盘碟片来专门存储伺服脉冲的信息。因此所有磁头的移动都是协调一致的。这种解决方案对于磁道密度(TPI,tracks
per inch,每英尺宽度内的磁道数)较低的硬盘来说比较适合。对于单碟容量较低的硬盘的磁头来说位置信息并不要求的十分精确。

如图3
在硬盘碟片的数据区中加入伺服脉冲具有很多优势。它可以不中断逻辑地址块的排列。在现代硬盘中,对于磁道的密度越来越高。在硬盘的实际读取过程中,磁头经常会重新定位。采用伺服脉冲技术的硬盘,其伺服反馈回路可以更好的对磁头在磁道或者柱面上进行定位。
伺服脉冲就存储在逻辑地址块中。由于这个特点,硬盘的数据传输性能会有略微损失。尽管如此,由于硬盘寻址的速度得到了大幅提升,单一逻辑地址块的传输速提高了很多。因此相对于硬盘整体的性能提高来说,这点性能损失是微不足道的。最终,这些在硬盘碟片上不能读取数据的区域就用来记录磁道与磁道之间的磁头位置信息。
偏移排列
每一个磁道或者柱面只能存储一定量的数据信息。当一个磁道或者柱面的存储空间已满时,硬盘会连续或者逻辑连续的写下磁道的分界线。这标志着将这些数据划分为一个磁道。并且继续在另一个磁道上进行读写操作。非常典型的就是从硬盘磁头从最外一圈向硬盘最内一圈移动。从磁头OD到ID的移动的写入逻辑地址快时,每一条磁道上的分界线都会呈偏移状排列。这样作是为了避免当碟片充分的转动时所有磁道同时发出的响应。

如图4
磁头会把上一个磁道或者柱面的分界线作比较,滞后一段磁道再写入数据。当硬盘要读取碟片上的数据时,是由最外圈开始寻找。磁头每次写入的滞后,会使每一条磁道的分界线也滞后于前一条磁道。这种数据结构会给下次磁头跨磁道读取数据时预留出足够的重新定位的时间,保持磁头能够高速的连续的读取碟片上的数据。
如果所有的磁道分界线都在同一个位置,那么除非磁头从一个磁道到另一个磁道的过渡中,所用的时间为零。不然磁头将错过逻辑地址块的分界线,必须等到硬盘自转一周之后,才能继续读取逻辑地址块的内容。因此所有磁道上的逻辑地址块的分界线必须是呈螺旋型偏移排列的。
需要注意的是,硬盘磁头在读取和写入数据时,所需要的定位信息精密度是不一样的。并且当硬盘进行偏移的读写数据或者进行磁道转换时,也会略微影响磁盘的性能。尽管如此,这些都要比硬盘磁头错过逻辑地址块的分界线硬盘重新自转一周时所损失的性能小。
平均寻道时间的争论
上面我门已经揭示了一些关于硬盘驱动器的内部数据传输性能的最基本的参数,即硬盘存储媒介的相关知识。虽然你看到的是实际的持续传输速率,但是这仅仅是基于磁头读取方面的性能分析,而不是基于既读又写的工作方式。要知道读与写是两种完全不同的处理操作。另外,还有一个术语叫做"平均持续数据传输性能",他们大概是最容易让你混淆的硬盘参数了。
平均持续数据传输性能
上述我们讲到的那些一般决定硬盘内部传输性能的参数都是基于对硬盘碟片的读取的。即从速度最快的最外一圈磁道,到性能最慢的最内一圈磁道。如果这个观点是正确的,那么测试软件将可以根据一定的公式测量出在硬盘碟片上的每一个逻辑地址块的速度。不过这要取决于硬盘的性能。曾经有一种说法,测量一个容量为20GB的硬盘,平均速度为40MB/s,大约用时500秒。而某些测试软件测试一个120GB的硬盘,却至少长达1小时。其实许多测试软件都走了很多捷径。比如H2Dbench,它在硬盘碟片上会抽样采纳1000个测试点。H2Dbench测试一块硬盘的一个面的抽样点文件大约有
65532 kByte。并且每一个碟片的面都要测试一次。而碟片内部的柱面的传输速率显然会比碟片外部的柱面低,尽管测试软件采用了很多智能算法均衡采样的结果,但不幸的是这样作的本身就存在很多严重的问题。
一个非常好的例子就是Seagate的Barracuda V硬盘,在不同容量封装的硬盘中的表现。这里是一款容量为80GB版本的Barracuda
V硬盘,另一个则是120GB容量的版本。前者使用了三个磁头,而后者使用了4个磁头。通过计算我们可以估量到,总容量为80GB的硬盘平均每个磁头担负着大约26GB磁盘空间的读写任务。而总容量120GB的硬盘,每个磁头大约要担负30GB磁盘空间的读写任务。硬盘碟片的制造工艺是一样的,也就是说他们的单碟容量是一样的。在我们的测试结果中80GB的硬盘显然得分低一些,那是因为在它中间很多柱面中的采样点都被忽略了。
请看我们采用WB99对120GB硬盘的一个碟片的面进行的测试。(这仅仅是一个磁头在对一个面进行读写)你可以明显从下面的图中看到在26GB以后的空间(也就是碟片的最内侧的部分),数据的传输效能非常低下。这意味着120GB硬盘的碟片上除了那些较快的磁道之外,也包含许多低速的磁道。如果我们现在测量所有扇区的持续传输速度,那么显然测试的结果要低于测试软件"平均"出来的结果。

如图5
此后我们又对一款Seagate的Barracuda SATA-V进行了测试。同样采用从最外圈磁道到最内圈磁道的单磁头的连续数据传输效能测试。该款串行硬盘的单碟容量为30GB,虽然它与120GB的硬盘单碟容量相同,但是它和80GB版本的硬盘类似,每个碟片仅有26.6GB的空间。因为在测试的过程中,测试软件会忽略最内侧一部分硬盘空间。这也就意味着硬盘测试软件会忽略最拖累硬盘性能的这一部份磁盘空间。在图5中你会看到红线和黄线分别代表两块单碟容量为26.6GB和30GB的硬盘。你可以很容易的辨别出,黄线所显示的硬盘性能更快一些。但是这两块硬盘实际的性能是一样的。仅仅是因为硬盘屏蔽了内侧最拖累性能的一小部分磁盘空间,而绝非是因为采用了SATA窜行端口而提升的性能。
这条红线是采用算术平均计算法计算出的所有扇区的平均性能。这仅仅是硬盘体系结构上的差异,绝对不会影响到硬盘实际的性能表现。并且这些完全与磁盘控制器的处理效能无关。即使在相同制造厂商的同一代产品中,不同容量的硬盘也会有不同的平均性能。这仅仅反映出了是否使用了硬盘最内侧的一部分磁盘空间而已。
读VS.写 性能
从理论上来说,对于硬盘的连续读取操作和连续写入操作在性能上应该没有什么不同。磁头都是在遍布微小粒子的盘片上作线性运动。但事实上会有另外一些因素起决定作用。第一个因素就是要用何种方式测量硬盘的性能,此外硬盘会工作在何种模式下。
试验证明,如果读取连续的较大一些的文件块,在同样单碟容量的碟片上的话,磁盘的读写操作性能大致相当。但是如果测试的文件是随意分布到硬盘碟片的每个角落,那么写入数据的性能要优于读取数据的性能。这是因为在硬盘内的cache高速缓存会首先安排出最为高效的运行模式,将数据更流畅的写入硬盘的碟片上。而在磁头进行读取数据的时候,并没有什么特殊的优化。它仅仅是简单的实现了读取硬盘碟片上的逻辑地址块的功能。因此读与写的操作就会在这种文件分散存放的情况中产生一些性能上的差异。

如图6
我们采用一块IBM 120GXP硬盘,容量为123GB,使用HDTach对其进行连续读取和写入性能的测试。测试显示,连续写入的性能仅有连续读取数据的性能的一半。如果这是真的,那么硬盘碟片在读取数据时的自转速率应该是写入数据时的两倍,但我们知道硬盘读取和写入时碟片的转速是相同的。换句话说,我们看到的并不是硬盘的连续读写性能,但是硬盘测试软件是不会说谎的。稍后我们将作进一步分析。

如图7
这里我们采用ATTO Disk测试软件对一个双Seagate Barracuda 7200.7硬盘的RAID 0系统作一个实际的测试。其中RAID芯片采用的是ASUS
P4P800上内置的Intel ICH5R磁盘控制芯片。在这里大家可以看到在体积较小的测试数据块写入时,其速度要略快一些。而当测试的数据块体积较大时,读写数据的性能差异就不那么明显了。那么对于实际的硬盘内部性能来说,HDTach与ATTO
Disk的测试结果,哪一个才算正确的呢?
这就需要考虑到你的操作系统的问题了。在Windows XP中,为了防止因断电而造成传输数据的丢失,操作系统会在磁盘高速缓存(cache)中,将一些无用的数据标记为无效,从而代替以前强制访问单元(FUA,forced
unit access )。在这种情况中,某些磁盘测试软件的版本较低,他们不能真正的测量出硬盘实际的连续读取和写入的速度。由此测试结果就显示出某些硬盘驱动器中的写入性能略低于读取性能。在多数情况下,磁盘的写入速度都要优于磁盘的读取速度,至少他们的性能会非常接近。如果写入速度明显低于读取速度,那么一定是在你的硬盘或者测试软件中出了问题。
随机存取
在硬盘随机存取数据时,涉及到了磁道转换时间、寻道潜伏期、碟片转动潜伏期等相关参数。如果说数据真的被随机的写入在了硬盘上,那么其响应的时间应该是硬盘平均碟片转动一周所用时间的1/2。举例来说,一个7200
rpm的硬盘,碟片平均转动一周大约需要0至8.33ms。那么他的随机存取响应时间就大约在4.17ms。对于每分钟1万的SCSI硬盘来说,其平均碟片转动的潜伏期大约为3ms。那么随机读取响应时间大约在1.5ms左右。
除了碟片转动的潜伏期之外,硬盘的寻道响应时间也会影响到随机存储的性能。寻道响应时间是指磁头在磁道之间寻找数据时的移动速度。对于磁头来说这有两个关键的位置,一个是磁头的启动位置,另一个是磁头的降落位置,也就是数据所在的位置。这只是磁头移动位置时的响应速度,磁头的运动范围是最外一圈磁道与最内一圈磁道之间。磁头启动位置和磁头移动的距离都是随机的。当然也不排除从最外一圈磁道到最内一圈磁道这样较长的跨度。最终,Gaussian
Bell实验室发布了一个三角形的可能性分析概率结果,用来计算在现在高性能的硬盘中单一的磁道位置转换所需要的时间。磁头平均移动长度是硬盘最大半径的1/3。

如图8
当系统执行磁盘寻道时,对于读与写的命令也是有很大区别的。因为数据的写入操作需要对磁头提供更高的位置精密度,而数据读取的时候对磁头的位置精密度要求却不高。也就是说,磁头在读取过程中比写入过程需要较少的电能。此外,磁头在写入时也需要更高的电流来破坏以前磁盘上的数据信息。
以前在硬盘进行寻道的时候,系统会发出两个基本的命令,加载写入模式的磁头位置精密度和加载读取模式的磁头位置精密度。为了磁头更好的进行寻道,硬盘制造商们使用了很多控制算法。即为了更快的执行寻道操作,要让系统更快的判断出读写操作各需要怎样的位置信息精密度。由此就诞生了第三种命令--"忽略位置精密度"。这种计算方法允许在进行批量的数据处理中,磁头会重复上一次的位置精密度操作。这样就可以加速磁头指令的执行。但这种指令是随机发生的,最终要取决于硬盘的实际使用情况。
长期寻道与短期寻道的优化
不同种类的硬盘,将会出现不同类型的寻道模式。举例来说,一个文件服务器,尤其是那种在多用户环境下工作的服务器。其平均的随机存取数据的操作就会更多。磁头运动的频率相对于桌面台式电脑来说,会更加的频繁。当然,这仅仅是个假设的例子。因为平常我们运行像PCMagazine的Winstone测试软件最多只是占用了100MB的磁盘空间。与那些总容量为60GB~100GB的大硬盘来说,这点空间的利用率几乎可以忽略。
由此,在桌面台式电脑中的硬盘,大多情况下都是采用简单短期寻道优化,在磁头处使用的都是弱磁磁铁。而在服务器中的硬盘通常使用强磁磁铁作为硬盘的磁头,这样对于经常频繁寻道的硬盘来说比较稳定。然而经过长期寻道磁头的优化也有一定的缺陷。由于磁头磁性较强,它的寻道位置精密度会有所下降。也就是说强磁磁头只能适用于单碟容量较低的硬盘,很难将其用于高密度的碟片上。而通常台式机使用的都是弱磁磁头,他们可以提供很高的寻道位置精密度,可以将其用在很高单碟容量的硬盘上。正是由此我们通常看到的服务器级别的SCSI硬盘单碟容量一般都很少有超越40GB的。而现在主流的台式机硬盘的单碟容量都在80GB左右。
如图9
由于强磁磁头的磁性较强,磁头可以更快速的寻址。而弱磁磁头虽然磁头的位置精密度高,但是它的寻址速度却相对较慢。也正是这个原因,在服务器级别的硬盘需要更高的磁盘性能,所以都是采用的强磁磁头。
实际数据传输速率分析
上面我们已经向大家介绍了很多关于硬盘内部性能的参数,下面我们介绍一些关于硬盘电动机械部分的相关知识。众所周知,硬盘是一种电子芯片与机械传动相结合的硬件设备。机械部分的潜伏期是任何硬盘主要的性能瓶颈。主要是因为硬盘的机械部分存在物理惯性。比如硬盘的磁头、马达的锭子和机械传动装置。
基本接口速度分类
在硬盘的发展史上曾经出现过很多各式各样的接口规范标准。台式机的硬盘的接口规范包括:PIO,Ultra DMA,UltraATA,Parallel
ATA和Serial ATA。而在高端服务器级别的硬盘还包括了SCSI接口。我们将精力集中在台式机应用最为广泛的UltraDMA
和 Ultra ATA 接口技术上来。下面我们就来讨论一下他们的实际数据传输速率。
ATA技术发展简史
ATA是Advanced Technology Attachment的缩写,意思是高级技术设备。它是定义了计算机系统中很多外围连接设备的接口规范。基本上,当前流行的界面接口规格大都是基于ATA
/ ATAPI (ATA Packet Interface,ATA封装界面)规范定义的。对于目前的并行ATA设备一共有7个标准。从最初的ATA标准到最后一个仅是Maxtor自己支持的ATA/ATAPI-7标准。
ATA (仅仅支持硬盘的ATA模式)
ATAPI (加入了对光驱的ATA模式的支持)
ATA-2 (支持更快的PI/O模式和PnP即插即用支持)
ATA-3 (加入了电源管理和S.M.A.R.T自我监测、分析和报告技术)
ATA/ATAPI-4 (将ATA与ATAPI技术合并,提出了UDMA-33)
ATA/ATAPI-5 (提出了采用80针线缆的Ultra ATA-66标准,逻辑地址块提升到了48-bit)
ATA/ATAPI-6 (Ultra ATA-100)
ATA/ATAPI-7 (Ultra ATA-133)
在ATA的发展史上,ATA / ATAPI-4是最重大的里程碑,它集成了UDMA传输总线管理器。另外ATA/ATAPI-5也有着非常巨大的革新,它在数据传输的线缆中加入了屏蔽层,削减了交叉串扰现象的发生。
本机数据传输速率和实际本机数据传输速率
我们再回到ATA/ATAPI标准上来。在这些标准后面的数字后缀其实就指明了该接口最高的数据传输速率。比如UATA-133,这里就是说它的接口最高速度为133MB/s。这也是PCI总线的数据传输的极限速度,它是目前为止最快的ATA控制器。因此,如果我们无法突破PCI总线的传输瓶颈,就没办法引入更快速度的ATA传输接口。并且传输总线的工作频率也决定了它的数据传输性能。在设备控制器和设备之间,他们采用的是握手协议。在传输数据之前,他们会商定一个合适的传输速率。因此一块UATA-66的硬盘仍然可以运行在一颗UATA-133的控制器上。另一项重大的革新是从Windows95开始,它摒弃了对于DOS和Windows16-bit的那种实时数据传输模式的支持。在Unix
和 Linux 操作系统中也可以使用保护模式。这意味着内部所有数据传输的控制都交给了操作系统来管理。这样让操作系统来智能的决定采用何种经济方式管理本机总线适配器(HBA,host
bus adapter )。
理论上说,如果没有其他设备和任务占用CPU和PCI系统总线。那么UATA 133控制器可以完成133 MB/s的数据传输速率。尽管如此,在电缆和设备控制器中传输的bit流也不仅仅只是数据。在这其中还包括数据、地址信息、控制命令等等。这表明数据和命令在任何数据传输的过程中都是同时并发传输的。因此整合了地址信息的这种信息传递方式又叫做"帧信息结构"(FIS,frame
information structure)任何FIS方式的信息传输过程中都夹杂了地址信息或者控制命令。
这种数据传输方式与其他的总线是有所区别的,比如我们熟知的内存和AGP子系统。内存子系统采用三条独立的传输总线分别传输不同的内容。其中一条总线负责传输控制命令,一条总线负责传输内存地址信息,最后一条总线才用来传输内存中的数据。数据总线是独立工作的,因此不会受到其他总线的影响。虽然AGP总线属于共享总线,但是在数据传输的过程中,它也使用了边带寻址技术。(在AGP
3.0规范中)数据的地址信息与数据之间,本质上是分开的。但是由于硬盘线缆的长度问题,太长会增加线路之间的串扰,所以对于硬盘来说这种数据与指令的共享传输方式仍然是不错的选择。
这是不同数据和指令的传输方式的比较。控制命令被首先发送,此后是地址信息,数据信息被最后发送。尽管如此,因为数据和命令的总线并不是共享的,因此他们几乎可以无缝的没有延时的传递信息。控制协议可以优化数据总线和控制总线的协同性,防止信息的混乱或者延迟。而硬盘使用的是共享数据和CMD总线。这意味着数据和命令在一条线路上是交替传输的。智能的硬盘控制器会发送命令头信息或读取头信息,并且将这些控制命令映射到硬盘的高速缓存中。这样当硬盘进行读写操作时并不会出现过多的延时。
FIS控制指令与内部传输速率的限制
典型的FIS控制指令大约长8KByte,但是可以控制传输很长一段数据流。最小的数据传输是对一个逻辑地址块的传输。这个逻辑地址块通常有512Byte或者是1/2kByte。如果一个单一的地址块请求传输,(这种情况相当普通,很多文件和内存碎片都小于1/2kByte)由于FIS会加载指令信息,通常会传输16被的真实数据,即8KByte。另外,在并行的PATA传输过程中,所有数据访问都是并发进行的,他们会分别发送两个FIS请求,这样最终将要传输32被的真实数据。
如果我们现在关闭硬盘的UATA-133协议支持,再仅仅传输单一的逻辑地址块。那么实际的传输速率仅仅为133 MB/s的1/33,也就是大约4
MB/s。在这平均效能只有4 MB/s的情况下,完成单独逻辑地址块连续传输的测试,这种数据传输的速率在业界就叫做实际本机传输速率。
使用SATA连接界面,FIS的指令长度仅有我们上面看到的PATA传输界面的1/2。并且从理论上来说,实际本机传输的速率能达到150MB/s的1/17,大约为8.8MB/s。传输单个逻辑地址块也不用考虑是单个的硬盘,还是RAID组成的多块硬盘阵列。
而实际的数据传输速率还会更低一些。这要取决于硬盘对于突发数据的持续传输能力。举例来说,一块Seagate的Barracuda
V系列的硬盘,按照我们自己的测试方法检测,它的最大数据突发传输性能大约为90 MB/s,再加上控制指令的容量,总共传输的数据大约为105MB/s。最终由于存储媒介的限制,硬盘的传输速率才会稳定下来。
如图10
在ATTO的测试结果中,我们可以看到每一个文件块的尺寸所对应的读写速度的结果。在这里我们禁止了直接I/O访问系统缓冲区的功能。系统设备不能直接访问硬盘缓存中的数据或者命令。你可以非常明显的看到,当写入数据包大于128kByte的时候,由于受到了内部传输速率的瓶颈影响,写入速率总不能超越63MB/s。
总结
DST达思国际数据恢复机构多年以来深入研究硬盘的底层原理,形成了较有针对性的技术积累。在处理众多疑难硬盘数据恢复的案例中DST达思国际深厚的技术功底表现的淋漓尽致,在赢得用户认可的同时,也通过了市场的检验。尤其针对当今国内SCSI和SAS硬盘数据恢复技术薄弱的现象,投入大量的财力和人力进行技术研发,使此项技术保持国内领先。
正像我们比喻的那样,硬盘就像一个大型超级市场,它工作的效能是需要其中很多部件协同工作来实现的。并不仅仅是生产厂商所吹嘘出来的内部传输速率的值。在大多数情况下,最直接决定硬盘性能的因素应该是单碟容量和每分钟的转速。我们也不应该轻信某一两款评测软件的危言。因为硬盘技术总在发展,没有一款软件能胜任所有的硬盘测试工作。并且当我们在测试之后,应该冷静的分析一下测试的结果,对于我们实际的应用环境来说是否有意义。并且在测试的最后能够找到在我们的测试中,哪里成为了系统的瓶颈。最终能够发现瓶颈和解决瓶颈,提高系统的运行效率才算是真正有意义。