体系结构实验报告实验目的通过程序,模拟cache存储过程,并通过控制变量法模拟分析Cache性能实验步骤:我们要通过老师所给程序进行模拟,并通过操作系统试验中老师所给算法生成出project.txt,并通过project.txt里面的数据来模拟程序的局部性等特性。一、实验结果1、比较关联方式,控制blockSize,CacheSize不变:(1)、Direct_mapped:(2)、Set_associate:(3)、Fully_associate通过上述三个比较可以看出,各种映射有自己的优点。但是不难看出,增大关联度会减小missrate,但是增加到一定程度又会有抑制作用。2.比较Cache大小对于性能的影响。(1)、Direct_mapped,Cache容量为64时:(2)、Direct_mapped,Cache容量为128时:(3)、Direct_mapped,Cache容量为256时:对比实验结果,不难发现,随着Cache容量的增加,Cache的命中率一直在提升。分析原因发现,虽然Cache容量大了,但并不等于其预存的内容增多,所以命中率会上升。3、比较Cache大小对于性能的影响。(1)、Direct_mapped,关联度为1时:(2)、Direct_mapped,关联度为2时:(3)、Direct_mapped,关联度为4时:(4)、Direct_mapped,关联度为8时:(5)、Direct_mapped,关联度为16时:可以看出,随着关联度的提高,命中率也有所增加。4、比较blockNumber对于Cache性能影响。(1)、Direct_mapped,blocknumber为1时:(2)、Direct_mapped,blocknumber为2时:(1)、Direct_mapped,blocknumber为4时:通过以上三组数据不难看出,当blocknumber增加时,命中率明显增高了。分析原因可知,这是由于程序局部性原理所造成的,当一次性多拿些附近的数据,会有效的预测为下次用到的。通过程序可以看出,这种方法会增加程序运行时间。习题:利用Cache模拟器CacheSimulator程序分析解决:ThefollowingCprogramisrun(withnooptimizations)onamachinewithacachethathasfour-word(16-byte)blocksandholds256bytesofdata:inti,j,c,stride,array[256];…for(i=0;i10000;i++)for(j=0;j256;j=j+stride)c=array[j]+5;ifweconsideronlythecacheactivitygeneratedbyreferencestothearrayandweassumethatintegersarewords,whatistheexpectedmissratewhenthecacheisdirect-mappedandstride=132?Howaboutifstride=131?Wouldeitherofthesechangeifthecacheweretwo-waysetassociative?截取实验结果屏幕,分析实验结果,写出实验报告和实验心得。1、当stride=132时:Cache容量大小为256B,每个块大小为16B,所以Cacheblocks一共有16个。当访问array[0]和array[132]时,分别映射到Cacheblock第0个和第1个块,因为(132/4)mod16=1。所以当第一次方位array[0]时,它会产生一次miss,并将其从memory中取出放入cache,第一次访问array[132]时也会产生一次miss,并将其从memory中取出放入cache。以后访问时都可从cache中找到,所以不论访问几次,都是2个miss。1、当stride=131时:分析:Cache容量大小为256B,每个块大小为16B,所以Cacheblocks一共有16个。当访问array[0]和array[132]时,都将映射到Cacheblock第0个块,因为(132/4)mod16=0。所以当第一次方位array[0]时,它会产生一次miss,将其从memory中取出存入cache,而当其第一次访问array[131]时又产生一次miss,又将memory中的存入到cache中,所以之后每次都会miss。实验总结:通过此次实验,让我对Cache的原理有了更深的理解。Cache性能的影响是综合性的,其大小,关联度,块大小都可能影响着其最终性能。但是同时我们还发现这几种映射每个都有自己的优缺点,最终我们要通过实验证明权衡最好的组合。