分析报告影响cache命中率地因素

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

分析影响cache命中率的因素

摘要:

存储器是计算机的核心部件之一。由于CPU和主存在速度上的存在着巨大差异,现代计算机都在CPU和主存之间设置一个高速、小容量的缓冲存储器cache。而它完全是是由硬件实现,所以它不但对应用程序员透明,而且对系统程序员也是透明的。Cache对于提高整个计算机系统的性能有着重要的意义,几乎是一个不可缺少的部件。

关键字:cache容量;失效率;块大小;相联度;替换策略。

一、概述

存储器是计算机的核心部件之一。其性能直接关系到整个计算机系统性能的高低。如何以合理的价格,设计容量和速度都满足计算机系统要求的存储器系统,始终是计算机系统结构设计的中关键的问题之一。

计算机软件设计者和计算机用户对于存储器容量的需没有止境的,他们希望容量越大越好,而且要求速度快、价格低。仅用单一的存储器是很难达到这一需求目标的。较好的方法是采用存储层次,用多种存储器构成存储器的层次结构。

其中“cache-主存”和“主存-辅存”层次是常见的两种层次结构,几乎所有现代的计算机都同时具有这两种层次。我们都知道,程序在执行前,需先调入主存。在这里主要讨论的是“cache-主存”层次。

“cache-主存”是在为了弥补主存速度的不足,这个层次的工作一般来说,完全是由硬件实现,所以它不但对应用程序员透明,而且对系统程序员也是透明的。

如前所述,为了弥补CPU和主存在速度上的巨大差异,现代计算机都在CPU和主存之间设置一个高速、小容量的缓冲存储器cache。Cache对于提高整个计算机系统的性能有着重要的意义,几乎是一个不可缺少的部件。

Cache是按块进行管理的。Cache和主存均被分割成大小相同的块。信息以块为单位调入cache。相应的,CPU的访存地址被分割成两部分:块地址和块位移。

在这里的cache专指CPU和主存之间的cache。对Cache的性能分析可以从三个方面进行:降低失效率、减少失效开销、减少Cache命中时间。这里主要是用实验数据分析影响cache命中率的因素。

1.按照产生失效的原因不同,可以把Cache失效分为三类:

(1)强制性失效(Compulsory miss)

当第一次访问一个块时,该块不在Cache中,需从下一级存储器中调入Cache,这就是强制性失效。这种失效也称为冷启动失效或首次访问失效。

(2)容量失效(Capacity miss)

如果程序执行时所需的块不能全部调入Cache中,则当某些块被替换后,若又重新被访问,就会发生失效。这种失效称为容量失效。

(3)冲突失效(Conflict miss)

在组相联或直接映象Cache中,若太多的块映象到同一组(块)中,则会出现该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情况。这就是发生了冲突失效。这种失效也称为碰撞失效(collision)或干扰失效(interference)。

降低Cache失效率的方法:增加Cache块大小、提高相联度、Victim Cache、伪相联Cache、硬件预取技术、由编译器控制的预取和编译器优化。

2.替换算法:

(1)先进先出法(FIFO);

(2)随机法:为了均匀使用一组中的各块,这种方法随机地选择被替换的块。(3)最近最少使用法LRU(Least Recently Used):选择近期最少被访问的块作为被替换的块。但由于实现比较困难,现在实际上实现的LRU都只是选择最久没有被访问过的块作为被替换的块。

二、对影响Cache失效率因素的分析

1.对矩阵200*200的乘法进行测试,源代码test.c如下:

#include

#define r 200

#define l 200

main()

{ int i=0,j=0,k=0,m=1,n=1;

int a[r][l],b[l][r],c[r][r];

for(int i=0;i

for(int j=0;j

{

a[i][j]=1;

b[i][j]=n;

n++;

}

for(int k=0;k

{

c[i][j]=c[i][j]+a[i][k]*b[k][j];

}

}

注意:必须将代码存储在SimpleScalar的文件下。

运行命令:./.bin/sslittle-na-sstrix-gcc test.c

./simplesim-3.0/sim-cache a.out

2. Cache容量对性能影响

(1)容量配置

在命令行对SimpleScalar模拟器的一级数据的容量进行配置,在配置的过程中,保证cache块大小、相联度、替换策略参数不变。通过改变组数来改变Cache的容量大小,执行程序,具体运行结果及相应的配置参数如下表1所示。

表1: Cache容量对性能影响

上表相应的折线图如下所示:

各种容量情况下cache的失效率

0.021

0.02150.0220.02250.0230.02358KB

16KB 32KB 64KB 容量

失效率块大小为32B

图1:Cache 容量对性能影响

(2)结果分析

从图1中我们可以看出,随着Cache 的容量不断增加,程序的失效率不断降低。由此可见,Cache 的容量对于Cache 性能有着重要影响。一般来说,容量越大,Cache 性能越好,发生失效的概率就越低。

3.Cache 块大小对性能的影响

(1)块大小配置

在命令行对SimpleScalar 模拟器的一级数据的块大小进行配置,在配置过程中,相联度、替换策略等参数,对于容量固定为8k 、16k 、32k ,64k ,分别改变cache 块大小,执行程序,具体运行结果及配置参数如下表表2—6所示

表2: Cache 块大小对性能影响

相关文档
最新文档