瀏覽單個文章
Weja
Basic Member
 

加入日期: Jan 2001
文章: 10
這個....不必扯到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考慮進去。
舊 2002-01-13, 12:49 AM #13
回應時引用此文章
Weja離線中