首页 > 试题广场 >

回答下面问题

[问答题]

某计算机的主存地址空间大小为256M B ,按字节编址 , 指令Cache 和数据 Cache ,均有8个Cache行,每个Cache行大小为64B,数据Cache采用直接映射 方式。 现有两个功能相同的程序A和B,其伪代码如下 所示:

假定int类型数据用32位补码表示,程序编译时i,j,sum均分配在寄存器中,数组a按行优先 方式 存放,其地址为320(十进制 )。请回答 下列问题 ,要求说明理由或给出计算过程。
(1)若不考虑用于Cache一致维护和替换算法的控制位,则数据Cache的总容量为多少?
⑵数组元素a[0][31]和a[1][1]各自所在的主存块对应的Cache行号分别是多少(Cache行号从0开始)
(3)程序A和B 数据访问命中率各是多少?哪个程序的执行时间短?

我给大家解释一下吧 主存有256MB,按照字节编址,主存地址的单元个数就是256MB/1B=256M,等于2^28,所以主存的地址位数为28,***位数与主存位数一样的为28 ***由(标志位,块号,块内地址组成),***有8行,等于2^3,所以块号有3位,***的行大小64B=2^6B,可以得出块内地址有6位,那么标志位就是28-3-6等于19位,数据***容量就等于(标志位+有效位+修改位+控制位+每行的大小)×行数 题目中,因为不考虑一致性,可以理解为内存的内容和***内容保持一致,所以不用修改位,控制位也不考虑,所有只有有效位,所以容量为(19b it+1bit+64B)×8=532B 注意bit和B的换算 第二问,因为地址是从320开始的,一行***有64B,在地址0-319***320B,可以装5个***行,那么320就是第6个***行的开始位置。 一行***可以64B可以装int类型16个,比如a[0][0] - a[0][15],所以a[0][0] - a[0][15],在第6行,那么a[0][16] - a[0][31]就在第七行,编号为6 a[1][1做法相似]
发表于 2019-11-20 19:06:52 回复(0)

(1)数据 Cache 的总容量为 4256 位( 532 字节)。

(2)数组 a 在主存的存放位置及其与 Cache 之间的映射关系如下图所示。

a[0][31]所在主存块映射到 Cache 第 6 行, a[1][1]所在主存块映射到 Cache 第 5 行。

(3)编译时, i、 j、 sum 均分配在寄存器中,故数据访问命中率仅考虑数组 a 的情况。
① 程序 A 的数据访问命中率为 93.75%;
② 程序 B 的数据访问命中率为 0。
根据上述计算出的命中率,得知程序B 每次取数都要访问主存,所以程序 A 的执行比程序B 快得多

发表于 2016-11-19 16:16:37 回复(0)