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讀取快取...