计算机组成原理之Cache模拟器的实现Word下载.docx
《计算机组成原理之Cache模拟器的实现Word下载.docx》由会员分享,可在线阅读,更多相关《计算机组成原理之Cache模拟器的实现Word下载.docx(15页珍藏版)》请在冰点文库上搜索。
程序和数据具有局限性,即在一个较短的时间内,程序或数据往往集中在很小的存储器地址范围内。
因此,在主存和CPU之间可设置一个速度很快而容量相对较小的存储器,在其中存放CPU当前正在使用以及一个较短的时间内将要使用的程序和数据,这样,可大大加快CPU访问存储器的速度,提高机器的运行效率
3、依次输入以下参数:
Cache容量、块容量、映射方式、替换策略和写策略。
Cache容量
块容量
映射方式
替换策略
写策略
8
32
全相联映射
先进先出算法
写回法
(1)Cache容量:
启动CacheSim,提示请输入Cache容量,例如1、2、4、8......。
此处选择输入4。
(2)块容量:
如下图所示,提示输入块容量,例如1、2、4、8......。
此处选择输入16。
(3)映射方式:
如下图所示,提示输入主存储器和高速缓存之间的assoiativity方法(主存地址到Cache地址之间的映射方式),1代表直接映射(固定的映射关系)、2代表组相联映射(直接映射与全相联映射的折中)、3代表全相联映射(灵活性大的映射关系)。
此处选择全相联映射。
(4)替换策略:
如下图所示,提示输入替换策略,1代表先进先出(First-In-First-Out,FIFO)算法、2代表近期最少使用(LeastRecentlyUsed,LRU)算法、3代表最不经常使用(LeastFrequentlyUsed,LFU)、4代表随机法(Random)。
此处选择先进
先出。
(5)写策略:
如下图所示,提示输入Cache的读写操作,1代表写直达法(存直达法)即写操作时数据既写入Cache又写入主存、2代表写回法(拷回法)即写操作时只把数据写入Cache而不写入主存,但当Cache数据被替换出去时才写回主存。
此处选写回法
4、读取cache-traces.zip中的trace文件。
如下图所示,提示输入要测试的路径及名称,此处输入Cache-trace.zip的路径,以及需要读取的trace文件名,此处选择读取mcf.trace。
5、运行程序,观察cache的访问次数、读/写次数、平均命中率、读/写命中率。
如下图所示,读取mcf.trace文件,程序运行结果如下:
访问次数
读出次数
写入次数
平均命中率
读出命中率
写入命中率
727230
5972
721258
74.8615%
60.6999%
74.9787%
(1)高速缓存访问次数:
(2)高速缓存次数:
5972
(3)cache存储次数:
721258
(4)平均缓存命中率:
74.8615%
(5)高速缓存命中率:
60.6999%
(6)缓存命中率:
74.9787%
思考:
1、Cache的命中率与其容量大小有何关系?
(1)当Cache块容量为8B、Cache容量为8KB时,平均命中率为1.02017%.
(2)当Cache块容量为8B、Cache容量为16KB时,平均命中率为1.02334%.
(3)当Cache块容量为8B、Cache容量为32KB时,平均命中率为1.03695%.
(4)当Cache块容量为8B、Cache容量为64KB时,平均命中率为1.0375%.
(5)当Cache块容量为8B、Cache容量为128KB时,平均命中率为1.03791%.
当Cache块容量为8B时,不同Cache容量下的命中率如下图所示:
16
64
128
1.02017%
1.02334%
1.03695%
1.0375%
1.03791%
由上述图中数据及表格数据可知,当Cache块容量一定时,Cache容量越大,其cache的命中率越高。
2、Cache块大小对不命中率有何影响?
(1)当Cache块容量为8KB、Cache容量为8B时,平均命中率为1.02017%.
(2)当Cache块容量为16KB、Cache容量为8B时,平均命中率为50.4872%.
(3)当Cache块容量为32KB、Cache容量为8B时,平均命中率为75.2232%.
(4)当Cache块容量为64KB、Cache容量为8B时,平均命中率为87.5903%.
(5)当Cache块容量为128KB、Cache容量为8B时,平均命中率为93.768%.
当Cache容量为8kB时,不同Cache容量下的命中率如下图所示:
Cache块容量
50.4872%
75.2232%
87.5903%
93.768%
由上述图中数据及表格数据可知,当Cache容量一定时,Cache块容量越大,其cache的命中率越高。
则其不命中率越低。
3、替换算法和相联度大小对不命中率有何影响?
(1)当相联度大小保持一致,均为二路组相联映射时
替换策略为先进先出算法时:
当相联度为二路组相联映射,替换策略为先进先出算法时,此时cache平均命中率为0.0912598%。
替换策略为近期最少使用算法时:
当相联度为二路组相联映射,替换策略为近期最少使用算法时,此时cache平均命中率为66.6438%。
(2)当替换算法保持一致,均为先进先出算法时:
相联度大小为二路:
当替换策略为先进先出算法时,相联度大小为二路组相联映射时,此时cache平均命中率为0.0912598%。
相联度大小为四路:
当替换策略为先进先出算法时,相联度大小为四路组相联映射时,此时cache平均命中率为0.0904283%。
当替换策略为近期最少使用时,相联度大小为四路组相联映射时,此时cache平均命中率为0.0904283%
由上述数据可知,当保持相联度大小一致时,替换策略为近期最少使用算法的命中率高于先进先出算法的命中率。
当保持替换策略一致时,相联度大小为二路组相联的命中率高于四路组相联的命中率。
三.实验结果分析
根据实验内容及上述数据结果可知:
1.Cache容量不同时它的命中率也会随之改变;
当Cache块容量一定时,Cache容量越大,其CPU的平均命中率越高
2.Cache块大小不同时对命中率也会有影响。
Cache块容量越大,其不命中率越低
3.替换算法和相联度对命中率也有影响.
由实验数据可知,当保持相联度大小一致时,替换策略为近期最少使用算法的命中率高于先进先出算法的命中率。
其中替换算法对命中率的影响比较大,而相联度大小对命中率的影响小一些,在实际工作中为了提高命中率我们应该选择合适的算法。
具体实验数据如下表所示:
(1)当输入cache容量为8b,cache块容量为32kb时出现以下数据:
(2)当Cache块容量为8B时,不同Cache容量下的命中率如下图所示:
(3)当Cache容量为8kB时,不同Cache容量下的命中率如下图所示:
(4)当控制相联度为2或4时,改变替换策略cache的命中率如下图:
相联度
替换策略
先进先出
近期最少使用
2
0.0912598%
66.6438%
4
0.0904283%
四.实验心得
1.通过此次的实验我发现当输入的cache容量一定时,改变cache块容量的大小则cache的命中率会改变,规律是cache块容量的值越大,则cache命中率越高,反之亦然。
2.当cache块容量一定时,cache命中率因为cache容量变大而变大。
3.通过这次的试验我发现书本上的很多理论都是要自己做,这样才会对实验结果及的更加牢固。
以后要好好学习多做实验争取发现书本上没有写的东西这样才可以将这门课学好。
4.准备越充分,实验越顺利。
古人云,磨刀不误砍柴工。
前期的知识储备、文献储备、材料准备、方法准备可以避免手忙脚乱,充分的预实验使你充满信心。
一步一个脚印,就不必“从头再来”。
最不能容忍的是在开始的几步偷懒,造成后面总有一些无法排除的障碍。