原文檔下載:https://download.csdn.net/download/weixin_56213139/87384692
一、 實(shí)驗(yàn)?zāi)康?/span>
(1)加深對Cache基本概念、基本組織結(jié)構(gòu)以及工作原理的理解。
(2)掌握Cache容量、相關(guān)度、塊大小對Cache性能的影響
(3)掌握降低Cache不命中率的各種方法以及它們對提高Cache性能的好處
(4)理解LRU與隨機(jī)法的基本思想以及對Cache性能的影響。
二、 實(shí)驗(yàn)設(shè)備
PC、Cache模擬器
三、 實(shí)驗(yàn)原理
Cache有三種不同類型的不命中,分別為:
1、強(qiáng)制不命中:第一次訪問一個(gè)塊時(shí),該塊不在Cache中,需從下一級存儲器中調(diào)入Cache。
2、容量不命中:程序執(zhí)行時(shí)所需的塊不能全部調(diào)入Cache中,則當(dāng)某些塊被替換后,若又重新被訪問,就會發(fā)生不命中。
3、沖突不命中:在組相聯(lián)或直接映象Cache中,若太多的塊映象到同一組(塊)中,則該組中某個(gè)塊被別的塊替換(即使別的組或塊有空閑位置),然后又被重新訪問的情況。
想要提高Cache的性能就得提高其命中率,其中有如下規(guī)則:
1、相聯(lián)度越高,沖突不命中就越少
2、強(qiáng)制性不命中和容量不命中不受相聯(lián)度的影響
3、強(qiáng)制性不命中不受Cache容量的影響,但容量不命中卻隨著容量的增加而減少。
對應(yīng)每種類型的不命中分別有如下解決方案:
1、強(qiáng)制性不命中:增加塊大小,預(yù)取
2、容量不命中:增加容量
3、沖突不命中:提高相聯(lián)度
不同替換算法對不命中率的影響:
(1) 隨機(jī)法(RAND法)
隨機(jī)替換算法就是用隨機(jī)數(shù)發(fā)生器產(chǎn)生一個(gè)要替換的塊號,將該塊替換出去,此算法簡單、易于實(shí)現(xiàn),而且它不考慮Cache塊過去、現(xiàn)在及將來的使用情況,但是沒有利用上層存儲器使用的“歷史信息”、沒有根據(jù)訪存的局部性原理,故不能提高Cache的命中率,命中率較低。
(2) 先進(jìn)先出法(Firs-In-First-Out,F(xiàn)IFO法)
就是將最先進(jìn)入Cache的信息塊替換出去。FIFO算法按調(diào)入Cache的先后決定淘汰的順序,選擇最早調(diào)入Cache的字塊進(jìn)行替換,它不需要記錄各字塊的使用情況,比較容易實(shí)現(xiàn),系統(tǒng)開銷小,其缺點(diǎn)是可能會把一些需要經(jīng)常使用的程序塊(如循環(huán)程序)也作為最早進(jìn)入Cache的塊替換掉,而且沒有根據(jù)訪存的局部性原理,故不能提高Cache的命中率。因?yàn)樽钤缯{(diào)入的信息可能以后還要用到,或者經(jīng)常要用到,如循環(huán)程序。此法簡單、方便,利用了主存的“歷史信息”,但并不能說最先進(jìn)入的就不經(jīng)常使用,其缺點(diǎn)是不能正常反映程序局部性原理,命中率不高,可能出現(xiàn)一種異常現(xiàn)象。
(3) 近期最少適用法(LeastRecently Used,LRU法)
這種方法是將近期最少使用的Cache中的信息塊替換出去。該算法較先進(jìn)先出算法要好一些。但此法也不能保證過去不常用將來也不常用。LRU法是依據(jù)各塊使用的情況,總是選擇那個(gè)最近最少使用的塊被替換。這種方法雖然比較好地反映了程序局部性規(guī)律,但是這種替換方法需要隨時(shí)記錄Cache中各塊的使用情況,以便確定哪個(gè)塊是近期最少使用的塊。LRU算法相對合理,但實(shí)現(xiàn)起來比較復(fù)雜,系統(tǒng)開銷較大。通常需要對每一塊設(shè)置一個(gè)稱為計(jì)數(shù)器的硬件或軟件模塊,用以記錄其被使用的情況。
四、 實(shí)驗(yàn)操作及運(yùn)行結(jié)果
1、Cache容量對不命中率的影響
(1)啟動MyCache
(2)單擊“復(fù)位”按鈕,把各參數(shù)設(shè)置為默認(rèn)值。
(3)選擇地址流文件all.din。方法:選擇“訪問地址”→“地址流文件”選項(xiàng),然后單擊“瀏覽”按鈕,從本模擬器所在的文件夾下的“地址流”文件夾中選取。
(4)選擇不同的Cache容量,分別執(zhí)行模擬器(單擊“執(zhí)行到底”),在表1.1中記錄各種情況下的不命中率。
表1.1 不同容量下Cache的不命中率
容量KB |
2 |
4 |
8 |
16 |
32 |
64 |
128 |
256 |
不命中率 |
9.87% |
7.19% |
4.48% |
2.65% |
1.42% |
0.89% |
0.60% |
0.49% |
(5)以容量為橫坐標(biāo),畫出不命中率隨Cache容量變化的曲線。

(6)根據(jù)該模擬結(jié)果,你能得出什么結(jié)論?
Cache的不命中率隨著Cache容量的增大而降低,但當(dāng)容量增大到一定程度后如128KB,再增大Cache的容量變化就不會那么顯著。
2、相聯(lián)度對不命中率的影響
(1)單擊“復(fù)位“按鈕,把各參數(shù)設(shè)置為默認(rèn)值。
(2)選擇地址流文件all.din。
(3)選擇不同的Cache相聯(lián)度,分別執(zhí)行模擬器,在下表記錄各種情況的不命中率。
表1.2 當(dāng)Cache容量為64KB時(shí),不同相聯(lián)度下Cache的不命中率
相聯(lián)度 |
1 |
2 |
4 |
8 |
16 |
32 |
不命中率 |
0.89% |
0.53% |
0.47% |
0.45% |
0.44% |
0.44% |
(4)把Cache容量改為256KB,重復(fù)(3)中工作,并填表1.3
表1.3 當(dāng)Cache容量為256KB時(shí),不同相聯(lián)度下Cache的不命中率
相聯(lián)度 |
1 |
2 |
4 |
8 |
16 |
32 |
不命中率 |
0.49% |
0.38% |
0.36% |
0.36% |
0.35% |
0.35% |
(5)以容量為橫坐標(biāo),畫出在容量為64KB和256KB情況下,不命中率隨Cache相聯(lián)度變化的曲線。

(6)根據(jù)該模擬結(jié)果,你能得出什么結(jié)論?
在Cache容量大小相同的情況下,提高相聯(lián)度可以降低Cache不命中率,且Cache的容量越小,提升效果越顯著。但隨著相聯(lián)度提到到一定程度后(8路相聯(lián)),再提高相聯(lián)度Cache的不命中率就不顯著。
3、Cache塊大小對不命中率的影響
(1)單擊復(fù)位按鈕,把參數(shù)設(shè)置為默認(rèn)值。
(2)選擇地址流文件all.din。
(3)選擇不同的Cache塊大小,不同的Cache容量,分別執(zhí)行模擬器,記錄各種情況下的不命中率。
表1.4 各種情況下Cache的不命中率
塊大?。˙) |
Cache容量(KB) |
|||||
2 |
8 |
32 |
64 |
128 |
512 |
|
16 |
12.02% |
5.79% |
1.86% |
1.26% |
0.95% |
0.71% |
32 |
9.87% |
4.48% |
1.42% |
0.89% |
0.60% |
0.42% |
64 |
9.36% |
4.03% |
1.20% |
0.71% |
0.43% |
0.27% |
128 |
10.49% |
4.60% |
1.08% |
0.64% |
0.35% |
0.20% |
256 |
13.45% |
5.35% |
1.19% |
0.67% |
0.34% |
0.16% |
(4)分析Cache塊大小對不命中率的影響。
當(dāng)Cache容量一定的時(shí)候且容量小于等于64KB,若增大Cache塊大小,Cache的不命中率先是下降,然后反升。而大于64KB后增加塊大小會讓不命中率一直下降。這是因?yàn)樵黾訅K大小會產(chǎn)生雙重作用:
(1)增加了空間局部性,減少了強(qiáng)制性不命中
(2)另一方面,由于增加塊大小會減少Cache中塊的數(shù)目所以有可能會增加沖突不命中。
當(dāng)Cache容量比較大時(shí),第(1)種作用會超過(2)種作用,使不命中率持續(xù)下降:而當(dāng)容量比較小時(shí),第(2)種作用效果會超過第(1)種作用,反而使不命中率上升。
4、替換算法對Cache不命中率的影響
(1)單擊復(fù)位按鈕,把參數(shù)設(shè)置為默認(rèn)值。
(2)選擇地址流文件all.din。
(3)對于不同的替換算法、Cache容量和相聯(lián)度,分別執(zhí)行模擬器,記錄各種情況下的的不命中率。
表1.5 LRU和隨機(jī)替換算法的不命中率比較
Cache 容量 |
相聯(lián)度 |
|||||
2路 |
4路 |
8路 |
||||
LRU |
隨機(jī)算法 |
LRU |
隨機(jī)算法 |
LRU |
隨機(jī)算法 |
|
16KB |
1.71% |
2.30% |
1.33% |
2.37% |
1.21% |
2.81% |
64KB |
0.53% |
0.78% |
0.47% |
0.82% |
0.45% |
0.91% |
256KB |
0.38% |
0.41% |
0.36% |
0.37% |
0.36% |
0.36% |
1MB |
0.35% |
0.35% |
0.35% |
0.35% |
0.35% |
0.35% |
(4)分析不同替換算法對Cache不命中率的影響。
無論相聯(lián)度是多大,在Cache容量比較小時(shí),LRU法的不命中率低于隨機(jī)法,但當(dāng)Cache容量增加到一定程度之后(256KB), LRU法和隨機(jī)法幾乎差不多。
五、 實(shí)驗(yàn)中出現(xiàn)的問題和解決方法文章來源:http://www.zghlxwxcb.cn/news/detail-439187.html
出現(xiàn)的問題:實(shí)驗(yàn)較為簡單沒有碰到問題。文章來源地址http://www.zghlxwxcb.cn/news/detail-439187.html
到了這里,關(guān)于【計(jì)算機(jī)體系結(jié)構(gòu)】Cache性能分析實(shí)驗(yàn)報(bào)告的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!