在我們平時選購硬盤時,經常會了解硬盤的一些參數,而且很多雜志的相關文章也對此進行了不少的解釋。不過,很多情況下,這種介紹并不細致甚至會帶有一些誤導的成分。今天,我們就聊聊這方面的話題,希望能對硬盤選購者提供應有的幫助。
首先,我們來了解一下硬盤的內部結構,它將有助于理解本文的相關內容。
圖為:硬盤的內部結構
工作時,磁盤在中軸馬達的帶動下,高速旋轉,而磁頭臂在音圈馬達的控制下,在磁盤上方進行徑向的移動進行尋址
硬盤常見的技術指標有以下幾種:
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緩沖區硬盤的整體優勢。