從Cache學習卓越程式設計

2021-04-13 01:33:02 字數 1112 閱讀 1373

「不了解計算機系統,就不能寫出卓越程式!」這是《程式設計卓越之道》系列叢書的主要思想。實際上也是如此!那麼,怎麼去了解系統呢?我是從快取(cache,發音同cash)這個概念入手的。之前看到個經典的程式:libsvm

。其中使用了cache,於是就對它產生濃厚的興趣。

cpu-z是一款免費綠色軟體,用於測量cpu、快取、記憶體、主機板等核心硬體的引數!我們要看的是cpu和快取,因為我最關心的cache在這裡嘛。先看看cpu頁的時鐘-核心速度,它就是通常說的cpu 的主頻了,多為2.4ghz、1.4ghz。這裡要說明的是,主頻並不直接代表cpu的運算速度,但和運算速度有關。主頻= 倍頻x 外頻。外頻是cpu和主機板之間的同步執行的速度,此時可以理解為cpu的外頻直接與記憶體相通,目前以133mhz外頻的cpu為主流。前端匯流排一般被認為是外頻的另乙個名字,其實它是資料傳輸的速度。如果資料傳輸的極限速度不能滿足cpu的運算速度,則過度提高倍頻是沒有意義的,一般倍頻在5~8倍之間cpu的效能會得到充分發揮,極限為10倍。

暫存器-> 一級cache -> 二級cache -> 主存-> 磁碟。這是現代計算機的儲存層次。暫存器和一級(l1)cache都在cpu上,大多數奔騰2、3、4 cpu 都提供二級(l2)cache,但是有些賽揚晶元沒有,訪問他們所需時鐘週期(主頻的倒數)的個數分別為2~3,7~10,70~100,10e6~10e7。每個時鐘週期內cpu處理的指令數目根據資料依賴關係和資源約束而變化。關於cpu-z中的cache,l1有資料和跟蹤兩項,前者叫資料cache,用於儲存資料,一般的intel cpu 該值為4~32 kb(一般為8 kb),後者用於儲存指令,所以也叫指令cache。針對cache的訪問決定程式的速度,如果頻繁呼叫其中的資料(叫cache命中,cache hit),則程式速度較快,否則造成cache缺失(cache miss),到二級cache甚至是主存和磁碟訪問資料,則速度大打折扣,這就是上文說的資料傳輸的問題。

參考資料

1、cpu的主頻、外頻、倍頻、前端匯流排祥解

2、計算機核心部件名詞解釋

3、《現代編譯原理c語言描述》(書)

4、《程式設計卓越之道.第一卷,深入理解計算機》(書)

Cache學習小結

今天在做axi4匯流排傳輸協議的時候,遇到awcache和arcache訊號需要給賦值,發現有write through write back和no allocate read allocate write allocate read and write allocate分別排列組合等8種模式 還有...

Cache學習小結

轉至 今天在做axi4匯流排傳輸協議的時候,遇到awcache和arcache訊號需要給賦值,發現有write through write back和no allocate read allocate write allocate read and write allocate分別排列組合等8種模式...

從平庸走向卓越的最佳策略(通向財富自由學習筆記十)

在日常生活中,我們經常會不自覺的和別人比較,當收入 長相 地位等比別人更好的時候,就會感覺到比較幸福 反之,幸福感就會大打折扣。通過比較獲得的快和和幸福是很難長久的,就如同曇花一現一樣,因為總會有人比它們更加年輕美貌 英俊瀟灑 收入更高 權利更大 地位更尊貴 財富更雄厚。從某種意義上說,我們的成長就...