一般來說。cpu需要0個週期來訪問其暫存器,1-30個週期來訪問快取記憶體,50-200個週期來訪問主存。
對於intel core i7來說。這個值可以很具體。intel core i7的主頻約在2-3ghz。可以計算出。
l1—指令快取
l1-資料快取
l2-快取
l3-快取
記憶體訪問週期44
1130-40
50-200
快取大小
32kb
32kb
256kb
8mb若干gb
訪問時間
2ns2ns
5ns14-18ns
24-93ns
也就是說,訪問記憶體的時間是ns級別的。
再來看看磁碟。
磁碟的訪問時間=尋道時間+旋轉延遲+資料傳輸時間。對於普通的7200轉stat磁碟。這個值是:9ms+4ms+0.02ms=13.02ms。
也就是說,如果從磁碟隨機訪問乙個位元組,需要13.02ms,比從記憶體獲取的時間24-93ns,至少要多14萬倍。相差5個資料級,何其巨大的差距。
順序讀寫磁碟會快一些。 假設乙個碟片有1000個扇區,每個扇區512位元組,7200轉。順序讀可以忽略掉尋道的時間。所以吞吐量是 扇區數×扇區大小×轉速=1000*512/(60/7200)=58mb/s。這個資料似乎不咋樣。如果使用多盤系統。stat ii的介面,吞吐量可以達到300mb/s。追求極限效能可以mount裸盤直接操作多盤。
儲存器山
《深入理解計算機系統》一書中提到了乙個儲存器山的概念。教授先生別出心裁的將儲存器的吞吐量,畫成了一座山。
儲存器山的測試程式是這樣的:
kernel_loop(elems, stride):for (i = 0; i < elems; i += stride)x軸表示的是讀取步長,y軸是吞吐量,z軸是資料總量的大小。result = data[i];
可以看出來步長越小,資料資料總量越小。效能越好。
很明顯,山是不是平滑的,是成階梯狀。紅色部分為l1快取,綠色為l2快取,淺藍是l3快取,深藍是記憶體。我們可以得一些資料。
l1-資料快取
l2-快取
l3-快取
記憶體磁碟
ssd快取大小
32kb
256kb
8mb十幾gb
幾tb幾百gb
訪問時間
2ns5ns
14-18ns
24-93ns
13.0ms
30-300us
吞吐量6500mb/s
3300mb/s
2200mb/s
800mb/s
60mb/s
250mb/s
也就是說,去除快取記憶體的記憶體,吞吐量效能只有800mb/s而已。比起磁碟的300mb/s,網路的100mb/s。也只是快了幾倍。平時說記憶體比磁碟快許多,其實沒有那麼多,如果不好好操作記憶體,記憶體的頻繁讀寫,也可以成為系統瓶頸。
總結
現在處理器的主頻已經停止了增長。但是快取記憶體仍然以摩爾定律的速度增長的。長久的看,快取記憶體頻率逐漸會追上處理器的效能,容量也會越來越大。但是記憶體則不容樂觀,雖然容量增加了許多,但是效能確沒有大的提公升,磁碟的狀況也是類似;ssd剛剛開始普及,趨勢不明顯。
但可以看到,ssd的吞吐量和記憶體的吞吐量相去並不大。也就是說在未來,當ssd完全替代了磁碟。我們要像現在操作磁碟一樣小心翼翼地操作記憶體,才有可能寫出符合那個時代計算機效能的程式。相比之下,ssd的使用比磁碟要輕鬆一些,畢竟隨機讀寫的速度在一兩個數量級上。
SAP ABAP雜湊表讀數究竟有多快
以下資料 為abap程式 測速工具 對照組取開發機也有的域值表dd07t 資料量為138萬 取值語句select from dd07t into corresponding fields of table gt data 測速程式執行時間單位為微秒 1秒 1000毫秒 1000000微秒,測速程式執...
資料驅動創新的速度究竟有多快
在過去,大資料是關於收集大量資訊,希望找到一些方法來收集對趨勢 潛在問題等的洞察力。但是,越來越多的企業在領域中正超越這種強調積累資料,並集中在 現在 的資料上,當資訊流入組織以建立直接的商業機會時,對資訊起作用並作出反應。這是乙個快速資料時代,它正在改變企業對顛覆和創新的看法。這種變化並不只是預期...
美文 遠方究竟有多遠
遠方究竟有多遠 青春是一縷煙在懵懵懂懂之間溜走,年華是指間沙也在猶豫不決之中流逝。太多的夢想,最終也只是夢想,反倒是現實的殘酷才顯示出夢想的價值,而遠方終究是遠方,沒有勇氣,沒有嘗試,沒有努力,遠方便也成為了永遠的遠方。曾經的夢想,隨著晝夜交替 四季更迭而化為散落的玉珠,一串串的記憶都到了終點,而我...