緩存行和cpu緩存實例

併發框架Disruptor譯文html

  1. 剖析Disruptor:爲何會這麼快?(一)鎖的缺點
  2. 剖析Disruptor:爲何會這麼快?(二)神奇的緩存行填充
  3. 剖析Disruptor:爲何會這麼快?(三)僞共享
  4. 剖析Disruptor:爲何會這麼快?(四)揭祕內存屏障

七個例子幫你更好地理解 CPU 緩存緩存

緩存行

爲了簡化與RAM之間的通訊,高速緩存控制器是針對數據塊,而不是字節進行操做的。
從程序設計的角度講,高速緩存其實就是一組稱之爲緩存行(cache line)的固定大小的數據塊,其大小是以突發讀或者突發寫週期的大小爲基礎的。
每一個高速緩存行徹底是在一個突發讀操做週期中進行填充或者下載的。
即便處理器只存取一個字節的存儲器,高速緩存控制器也啓動整個存取器訪問週期並請求整個數據塊。
緩存行第一個字節的地址老是突發週期尺寸的倍數。緩存行的起始位置老是與突發週期的開頭保持一致。
現代處理器有專門的功能單元來執行加載和存儲操做。
加載單元每一個時鐘週期只有啓動一條加載操做;與加載操做同樣,在大多數狀況下,存儲操做可以在完整流水線化的模式中工做,每一個週期開始一條新的存儲。

共享內存的並行計算,有可能會出現"僞共享"問題.併發

好比,兩個處理器各要訪問一個word,這兩個word卻存在於同一個cache line大小的區域裏,這時,從應用邏輯層面說,這兩個處理器並無共享內存,由於他們訪問的是不一樣的內容(不一樣的word)。可是由於cache line的存在和限制,這兩個CPU要訪問這兩個不一樣的word時,卻必定要訪問同一個cache line塊,產生了事實上的「共享」。顯然,因爲cache line大小限制帶來的這種「僞共享」是咱們不想要的,會浪費系統資源。
相關文章
相關標籤/搜索