快取著色技術(Cache Coloring)

2021-06-01 01:19:29 字數 1291 閱讀 3772

作者:welkin

簡單說來,整個記憶體被分為n個cache page,每個cache page包含數量固定的cache line。

整個cache被分為m個cache way,每個cache way有相同數量的cache line。

記憶體中的資料依據自己在記憶體中的cache line索引[getcachelineindex(addr)]只能被放入某乙個cache way中相對應的cache line裡面。假設已經從位址中提取出cache line的索引i,那麼硬體會同時訪問所有cache way的第i塊cache line,找出乙個擁有空閒行i的cache way,隨後資料就可以放到這個空閒行中。如果m個cache way中都沒有找到空閒的地i行,則啟動淘汰策略,淘出乙個空行~

比如乙個cache有4個cache way(4路cache),每個cache way有16個cache line。某個資料結構的記憶體位址的cache line索引為2,則它只能被放入的某個cache way ( one of the 4 cache ways ) 的第2個cache line中。假使所有的cache way的第二個cache line都被使用,則必須換出某乙個。

因此如果多個資料位址的cache line相同,即使cache中還有很大的空間,還是競爭激烈。

總結:(1)多路cache(組相連cache),路間可選,路內固定

(2)對於m路n行cache,當cache line索引為i(0<=i

為了避免cache替換,不同的資料結構的位址對應的cache line索引最好不要相同,否則衝突的概率增大。

而使用slab的資料結構都是分配和釋放頻繁的小的資料結構,而且數目很多,比如dentry,如果沒有color,他們在記憶體中相對於頁的偏移量很可能相同,則其cache line索引也相同,對於x86這種2way 的cache結構,即使cache size很大,也一樣使用率低下。color則將不同slab中的同樣的資料結構的位址進行乙個偏移,因此這些資料結構的cache line索引就錯開了。從而能更好的利用cache

使用儲存著色器

glshadermanager是gltools的c 類 glshadermanager 預定義的識別符號 p62 表3.1 uniform glshadermanager usestockshader glenum shader.選擇乙個儲存著色器並提供這個著色器的uniform值,這些工作通過一次...

OpenGL入門第二課 常用的固定儲存著色器

在說儲存著色器的種類之前,我們先來大致看一下opengl的基本渲染架構,這樣有助於我們對整個渲染流程的理解。圖 opengl 渲染架構圖 從上圖中我們可以看出整個管線分為2個部分,客戶端 client 和服務端 server 客戶端就是我們編寫的程式 以及opengl api,這部分 執行在cpu上...

php快取技術

一 引論 php,一門最近幾年興起的web設計指令碼語言,由於它的強大和可伸縮性,近幾年來得到長足的發展,php相比傳統的asp 在速度上有絕對的優勢,想 mssql轉6萬條資料php如需要40秒,asp不下2分鐘.但是,由於 的資料越來越多,我們渴求能更快速的呼叫資料,不必要每次都從資料庫掉,我們...