|
Basic Member
|
這個....不必扯到VIA的南橋吧
回到原發問者的標題
我們來算算"硬碟實際傳輸速度"
已知:
1:windows在沒有特殊外掛或設定下每一筆read/write是64K
2:7200RPM的典型seek time :9ms ,latency 4.16ms
先來算磁頭「移動」的時間:
一筆100MB資料要分成100*1024/64=1600次read/write。因為是在同一顆硬碟上,所以同一個磁頭每次在A處read完後又要跑到B處write。每一筆acees time都不能忽略。
由於不知道資料實際擺放位置,我們以平均access time來估計(可能會偏高):
約等於9+4.16=13.16ms
假設每一次read/write做一次access(如果fragmented嚴重的話,access次數還要更多)
access花的時間是1600*13.16ms=21.056s
然後再來算read/write的時間
7200RPM硬碟多半都有讀取30MB/s,寫入 20MB/s的能耐。
我們保守一點,用20MB/s來算
因為是在同一顆硬碟上,讀取寫入不能同時進行而要輪流來。就像上面講的一樣,硬碟要在A處讀完64K再到B處寫入64K,再到C處讀取64K...
所以讀取加寫入資料量是200MB,花費時間約200/20=10s
所以最後計算出來的總時間是21+10=31s
這就是理論"硬碟傳輸時間"
實際上OS和硬碟都有很多機制如prefetch,buffer等等能降低access time,
然後才能得到您的20s"優異"的實際值。
那麼2XMB/s的數據又是怎麼來的呢?如果是在兩顆硬碟或是RAM/HDD之間傳送,資料又排放得很整齊,不必讓磁頭跑來跑去,access time幾乎可以忽略,得到的數據自然漂亮。
總之,一般看到的XX頻寬多半是burst rate
結果PCI傳不到133MB/s,SDRAM頻寬只有500MB/s,DDR上不了2.1GB/s...
其實都很正常。
真要計算傳輸速度,不管是理論也好,實際也罷,請把latency考慮進去。
|