文档介绍:
Cache存储器的直接映像与变换
1.直接映像的映像规则
在Cache存储器的直接映像中,Cache的块内地址就是主存地址格式中的块内地址,Cache的块号等于主存块号除以Cache的总块数取余。设主存块号为i,Cache块号为j,Cache块号的位数为x位,则主存的第i块将映像到Cache中第i mod 2x块的位置,即j=i mod 2x。
2.直接映像的主存地址、Cache地址格式及设计方法
主存地址格式为:
Cache地址格式为:
Cache地址格式中各段位数的确定方法:
在采用Cache存储器的存储系统中,主存采用多模块交叉存储器,块的大小等于多模块交叉存储器中模块的个数,即若主存有2x个模块,则块内地址占x位;块号的位数等于Cache地址的位数减去块内地址的位数。
主存地址格式中各段位数的确定方法:
主存地址格式中块号的位数、块内地址的位数分别与Cache地址格式中块号的位数、块内地址的位数相同;区号的位数等于主存地址的位数减去块号的位数和块内地址的位数。
3.举例
[例1]有一个“Cache-主存”存储层次。主存共分为8个块(0~7),Cache为4个块(0~3),采用直接映象方式。
(1)对于如下主存块地址流:1,2,4,1,3,7,0,1,2,5,4,6,4,7,2,如主存中内容一开始未装入Cache,请列出每次访问后Cache中各块的分配情况;
(2)对于(1),指出既发生块失效又发生块争用的时刻;
(3)对于(1),求出此期间的Cache命中率。
解:(1)随时间变化Cache中各块的使用状况如下图所示:
(2)既发生块失效又发生块争用的时刻依次为6、7、10、11、12、15。
(3)Cache的命中率为0.33。
[例2]某计算机的主存地址空间大小为256MB,按字节编址,指令Cache和数据Cache分离,均有8个Cache行,每个Cache行大小为64B。数据Cache采用直接映射方式,现有两个功能相同的程序A和B,其伪代码如下所示:
假定int类型数据用32位补码表示,程序编译时i、j、sum均分配在寄存器中,数组a按行优先方式存放,其首地址为320(十进制数)。请回答下列问题,要求说明理由或给出计算过程。
(1)若不考虑Cache一致性维护和替换算法的控制位,则数据Cache的总容量为多少?
(2)数组元素a[0][31]和a[1][1]各自所在的主存块对应的Cache行号分别是多少(Cache行号从0开始)?
(3)程序A和B的数据访问命中率各是多少?哪个程序的执行时间更短?
解:(1)主存地址格式为:
Cache地址格式为:
若不考虑用于Cache一致性维护和替换算法的控制位,则每个Cache行要占用1位的有效位、19位的行标记和64B(即512位)的数据位,因此数据Cache的总容量为:
8×
内容来自淘豆网www.taodocs.com转载请标明出处.