理論極限值是可以計算的:1333MHz * 64bit(單通道,雙通道則128bit) / 8(位到字節單位轉換) = 10.664GB/s。這只是理論,實際發揮還要看內存控制器,實際上1333單條跑出來的數據在7~9GB/s差不多了。
首先,實際中我沒見過內存速度超過10GB/s的情況,不知道是不是題主你把單位弄錯了?實際見過的像RamDisk之類的軟件,連續讀寫能達到的速度也不過5~8GB/s左右,如果是隨機讀寫,性能大概還要下降接近十分之一。
所以內存沒你想的那么快。
其次,內存檢測不是把內存讀寫一遍就完事,讀寫完還要檢測讀寫數據是否一致,這些都是要通過CPU的ALU完成,CPU的負載會非常重,而且很多時候也並非是大塊讀寫,而是4字節甚至單字節讀寫,這樣算下來,為了檢測一個字節的內存單元,CPU可能需要十幾個到幾十指令,這里還包含不少算數指令,速度很慢。
這樣最終算下來,內存檢測的速度大概在100MB/s或者更慢,這還沒完,為了檢測內存的每個bit是否正確,通常來說要擦寫很多中不同的數據,比如uboot里的內存檢測就寫了好幾次,如果以4字節16進制數來看,那么寫入的東西包括:全0,全1,全5,全A,全F,基於地址的移位,地址值,地址值求反……
這還沒完,還要檢測物理地址的地址線是否有效,地址線可能會斷開、互繞、短路等等,還有一堆堆的數字要寫進去、讀出來,有些地址線還可能把同一個內存位置錯誤的映射成兩個不同的地址,因此寫入的次序也有要求。
所以最終的結果就是內存檢測的時間非常漫長,不亞於壓縮一部像內存那么大的片子。
補充:以上僅限於用專門的內存檢測工具測試的效果,PC機開機自檢一般只做很簡單的測試,速度很快。
首先SDR時代,只有SDR-133是PC-133的標准,核心頻率為133,由於SRD為單向傳送所以等效頻率也是133,帶寬為1.06GB/S
然后是大家所熟悉的DDR時代,由於DDR的特性是雙向傳送,也就是說在讀的同時也可以寫,這樣就等於帶寬加大了一倍,所以DDR的等效頻率就需要核心頻率X2,就拿133MHZ的DDR來說吧,他的等效頻率就是266,也就是DDR 266HMZ,當然帶寬也就提升了一倍為2.1GB/S。
接着是DDR2時代,DDR2是擴充了數據預取,從DDR1的2bit擴大到了4bit,再加上數據上下行同行,(在這里我引入一個數據預期技術,這要從DDR開始講,因為DDR是雙向的,所以他需要數據預取,再讀寫的同時預取數據,這樣才能達到2倍的核心頻率而達到等效頻率),接着來講DDR2,剛才說到DDR2的數據預取擴大了,因此I/O控制器滿足不了4bit,所以I/O頻率就必須翻倍,所以DDR2的等效頻率=核心頻率X2X2,比如PC2-6400(DDR2 800MHZ)的算法就是200(核心頻率)X2X2=800MHZ,數據帶寬是6.4GB/S。
最后來說說DDR3,這個就更容易理解了,因為數據預取又擴大了,從DDR2的4bit翻倍成了8bit,所以I/O頻率又翻倍了,所以DDR3等效頻率=核心頻率X4X2,因此DDR3的等效頻率可以達到驚人的1600HMZ。內存數據帶寬就=12.8GB/S
最后再說說,帶寬的算法,內存帶寬=內存等效頻率X64/8,舉例DDR3 1600HMZ的內存帶寬速度就=1600HMZX64/8=12.8GB/S。