CPU 快取學習

2021-10-07 20:21:37 字數 1128 閱讀 1994

1 . cpu快取描述

對於密集型應用提高cpu處理速度。核心提公升快取利用

2. 理解cpu架構

l3 +記憶體是共享,l2+l1(分開資料與指令)cpu獨享

大約時鐘週期l14

l212

l330

記憶體100

我的電腦3.3ghz ,1個時鐘週期大約0.33納秒。如果cpu操作的資料或指令都在快取中則直接讀取,會帶來倍極大的效能提公升。所以對於cpu效能的提公升核心 是提公升cpu快取的命中率。

3. cache line

空間區域性性原理:通常使用了a,隔壁的b,c,c都較大概率使用。所以cpu快取一次載入abcd。。。等後續的元素。 通常cacle line 64k 可配置coherency_line_size。載入a,後續的元素補足。這是為什麼順序讀取會較快。同理,int 比float 少一倍位元組,理論速度也是比float快很多。 cache line 的特性有很多應用, 比如nginx  hash表存放網域名稱。 桶大小就是cache line的大小。disruptor 是為了最求cpu效能極致的乙個併發框架,前後加7個long ,jdk 8 也有專門的註解@sun.misc.contended+-xx:-restrictcontended,jdk9廢棄

public class data
4.提公升指令快取命中率

cpu含有分支**器。借用別人例子:

int array[n];for (i = 0; i < testn; i++) array[i] = rand() % 256;

//寫法1

for(i = 0; i < n; i++)

sort(array, array +n);

//寫法2

sort(array, array +n);

for(i = 0; i < n; i++)

先排序會快很多。原因操作指令快取,cpu含有分支**提高速度。

5.多執行緒情況下的快取應用

多執行緒情況下,執行緒排程會將快取失效,解決辦法執行緒或程序繫結cpu。減少cpu 核心遷移的次數。

CPU多級快取

l1 cache是cpu第一級快取,分為資料快取和指令快取.以幫伺服器cpu的l1快取的容量通常在21 4906kb.l2 cache由於l1級快取記憶體容量限制,為了再次提高cpu的運算速度在cpu外部放置已高速儲存器,即二級快取。l3 cache現在都是內建的,而他可以進一步降低記憶體延遲,同時...

cpu快取偽共享

描述 引數 返回值 建立人 yufeng.lin ucarinc.com 建立時間 修改人和其它資訊 public class fadeshare implements runnable public fadeshare int i 設計4個執行緒,執行同乙個計算量 計算前後時間 param arg...

CPU快取的工作原理

當cpu要讀取乙個資料時,首先會從快取 cache 中查詢,如果找到就立即讀取並送給cpu處理 如果沒有找到,就用相對慢的速度從記憶體中讀取並送給cpu處理,同時把這個資料所在的資料塊調入快取中,可以使得以後對整塊資料的讀取都從快取中進行,不必再呼叫記憶體。通過優化的的讀取機制,可以使cpu讀取快取...