计算机组成原理--cache存储器的直接映像与变换.docVIP

计算机组成原理--cache存储器的直接映像与变换.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机组成原理--cache存储器的直接映像与变换

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×(1+19+512)=4256位=532字节 ??? (2)数组元素a[0][31]所在的主存块对应的Cache行号为: ???????? ((320+(0×256+31)×4)div 26)mod 23=6 ??? 数组元素a[1][1]所在的主存块对应的Cache行号为: ???????? ((320+(1×256+1)×4)div 26)mod 23=5 ??? (3)每个Cache行包含16个用32位补码表示的整数并且按行优先方式存放,对于程序A,每次Cache不命中时,将从主存中调入一个Cache行,由于数组元素按行的方式访问,则接下来对该Cache行中的其它15个元素的访问均会命中,所有Cache行均会被依次访问16个元素且不重复(一次不命中),则访问数据Cache的命中率为:15/16=93.75%。 ???? 对于程序B,每次Cache不命中时,将从主存中调入一个Cache行,由于数组元素按列的方式访问,依次访问的元素均位于不同的Cache行中,由于Cache空间只能存放8个Cache行,每次访问Cache不命中时调入Cache的行还没等到第二次访问就被其它的Cache行所替换,则访问数据Cache的命中率为:0。 ???? 由于执行程序A时Cache的命中率高,因此程序A的执行时间更短。

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档