HNU計算機系統實驗快取7 快取8

2021-09-29 10:58:49 字數 2952 閱讀 4594

一、test-trans 64x64矩陣轉置實驗:

1、64×64矩陣,每行64元素,每8一組32位分8個組,故cache每4行填滿整個cache。

2、測試傳統8分塊,結果如圖,發塊與不分快結果一樣,沒有優化。

這是因為a陣列8x8讀取資料的時候與之前一樣,都是每組第乙個miss以後hit,但是b陣列按列存的時候,因為每四行乙個塊,在訪問後四行的時候將前四行驅逐miss,然後訪問第二列的時候又把第一列後四行驅逐miss,於是整個b陣列均會miss。

2、設計新的8x8分塊優化**:

盡可能利用同一組的資料讀取加大hit率,在8分塊裡細分成4塊,結果如圖:只有1179次miss,符合條件。

二、分析上述**以及優化過程

1、優化**及注釋(包括具體過程):

2、組索引追蹤與優化過程(根據上圖):

第一步利用b陣列右上角紅色部分,先將a右上角轉置到這裡,b在讀取時與藍色部分組索引相同都是7-31,不會miss,第二步a先讀取黃色部分,b讀取此時b的右上角部分,然後a還原回b的右上角,b則將剛才存的右上角資料還原存回黃色左下角7-31索引處

最後將第四塊綠色部分轉置,而此時因為b黃色部分與綠色部分都是7-31索引,不會miss,最終只有b的冷miss存在,沒有發生衝突,成功減少了大量miss數。

三、嘗試61x67矩陣分塊比較

1、分析61x67矩陣

該矩陣在cache引數為32位即8位資料一組的情況下不滿足分塊後一行就是一組的情況,會有分塊之間的交疊之前的32x32及64x64都是8的倍數,容易達到分塊效果。

2、記錄多分塊資料

16x16的結果如圖:

根據大量測試得到下表所示的結果:

實際上一開始分塊數增加miss大量減少,但是趨勢在逐漸平緩,直到17分塊以後反而miss增多,分析可以得知實際上塊太大導致有組的重疊,且重疊數量會逐漸增大,此時17分塊已經是最優結果。

一、cache實驗資訊整理

1、實驗目標:學會cache的儲存原理,利用part a編寫cache模擬器進一步學習miss,hit與eviction的原理,利用part b理解c語言程式對於cache儲存的影響與實際的cache優化方法,理解cache執行過程。

2、實驗資源:windows 10 64 bit pro,ubuntu 19.04 kylin

3、實驗步驟:

1)、安裝實驗環境:sudo apt-get install valgrind安裝valgrind。

2)、part a:編寫乙個cache模擬器csim.c,該模擬器可以模擬資料讀(l)寫(s)中cache的命中、不命中與犧牲行的情況,需要犧牲行時,用lru演算法進行替換並實現相關lru,set,tag資訊顯示及cache執行過程。

命令2:模擬器獲取對應cache引數在trace檔案讀取內容的命中情況:./csim-ref -v/h -s -e -b -t +trace :-s組索引的位數 -e:每一組的行數; -b:偏移位寬度。可以跟蹤cache運**況,可用來檢驗模擬器是否正常執行。

命令3:./test-csim:展示自帶的參考模擬器與自己寫的模擬器執行對比情況檢視是否正確。

3)、part b:寫4 x4,8x8分塊以及對角線優化實現32x32,64x64矩陣轉置的函式使函式呼叫過程中對cache的不命中數miss盡可能少。包括對於61x67矩陣分塊的分析。

命令:./test-trans -m t -n t:生成t x t的矩陣作為cache測試樣例(引數-s 5 -e 1 -s 5),得出trans.c檔案中自己寫的轉置優化分塊函式命中結果。

二、實驗結果

因為ubuntu 19.04自帶python環境,不需要重新安裝,直接使用命令./driver.py即可觀察檢驗報告

結果解釋:

1、part a是./test-csim的結果與分數,自己的模擬器與實驗自帶的參考模擬器在所有測試模型中都有一樣的資料,即相同的miss,hit,eviction數量,表示模擬器的正確設計,得分27分。

2、part b即./test-trans -m t -n t命令的總結,**中設計的函式達到了所有情況的標準,32x32,64x64以及61x67矩陣都比標準miss數少,即滿分。

最終,一共獲得53分,實驗正確完成。

三、實驗總結

1、學習的新知識:

由於實驗比課堂早接觸cache,相當於為課堂學習打下了基礎。cache模擬器的設計加深了我們隊cache運**況的理解,了解了cache的讀取、miss、hit、eviction與lru演算法。part b的實現讓我了解到如何利用cache來提高c語言**執行速度,這對於以後的程式設計也有很大的幫助,使程式cache親和性更好,更適應現代處理器特色。

2、學習方法:

實驗中參考了許多資料學習cache知識,因為一開始課堂上並沒有講過相應知識。最重要的學習方法這次獲得的還是對**的優化與修改,用合理的方法找到**遺漏的地方。

3、獲得技能:

本次實驗獲得的主要技能是對於實現同乙個目的**的優化,逐步想辦法更進一步減少miss次數。同時,根據課程提示實現了cache模擬器,所以其實很多測試程式、模擬程式都可以作為輔助工具幫助理解或者是debug主要部分程式,這些工具都可以自行設計。

4、心得體會:

對cache理解不同,所得到的結果不同,但是經過深入討論後我和我的搭檔還是得到了一些統一的結論,這對於實驗的順利進行起到了莫大的幫助。

HNU計算機系統試驗perflab1

void rotate1 int dim,pixel src,pixel dst 一文字描述 這裡是書上的第乙個方法,消除迴圈的低效率。通過觀察源 可以發現在迴圈中對dim 1 j這個資料進行了重複的呼叫,所以這裡可以對迴圈進行修改,將計算時的行列進行調換,可以提前計算dim 1 j,這樣就可以省去...

計算機系統

一陰一陽之為道。早在幾千年我國古人就知道天地萬物皆由正反兩個東西組成的。自從人類進入電氣時代,隨著電子元件的快速發展,各種裝置隨之誕生了。一些元件 例如閘流體 可以根據電壓的高低變化自行導 通或者關斷。如果是高電壓導通,就規定是1 低電壓導通規定是0,那麼眾多的這些元件組成的乙個整體就可以0 和1來...

計算機系統

做加法時,主要判斷是否溢位 無符號加溢位條件 cf 1 帶符號加溢位條件 of 1 舉例 若n 8,計算107 46 107 0110 1011 46 0010 1110 01001 1001 溢位標誌of 1 零標誌zf 0 符號標誌sf 1 進製標誌cf 0 無符號 sum 153,因為cf 0...