计算机组成原理第四章 存储器-cache篇
一.单选题(共5题,55.5分)
1
假设Cache容量为16KB,每个字块16个字,每个字16位,则___
-
A、
此Cache可容纳512个字块
-
B、
此Cache地址有10位
-
C、
此Cache可容纳1K个字块
-
D、
此Cache地址有6位
正确答案: A 我的答案:A
2的8次方,2的4次方,2的10次方,2的3次方
2的9次方=512个字块,
2的13次方,地址有13位
2
在Cache的地址映射中,若主存中的任意一块均可映射到Cache内的任意一快的位置上,则这种方法称为() .
-
A、
全相联映射
-
B、
直接映射
-
C、
组相联映射
-
D、
混合映射
正确答案: A 我的答案:A
3
Cache主要由Cache存储体,地址映射变换机构,Cache替换机构几大模块组成。其中,地址映射变换机构的作用是
-
A、
按一定的替换算法来确定应从Cache内移出哪个块返回主存,把新的主存块调入Cache
-
B、
以块为单位存储与主存交换的信息
-
C、
将CPU送来的主存地址转换为Cache地址
-
D、
将Cache地址转换为主存地址送到地址总线
正确答案: C 我的答案:C
4
Cache的读操作的过程可用如下流程图来描述。当CPU发出主存地址后,首先判断该存储字是否在Cache中。若命中,直接访问Cache,将该字送至CPU;若未命中,则执行操作
-
A、
Cache向CPU发出中断,通知其读操作不合法
-
B、
只访问主存取出信息送CPU
-
C、
一方面要访问主存,将该字传送给CPU,与此同时,要将该字所在的主存块装入Cache,如果此时Cache已满,就要执行替换算法,腾出空位
-
D、
将该字所在的主存装入Cache(由Cache是否已满,决定是否执行替换算法腾出空位),然后再次访问Cache存取出信息送CPU
正确答案: C 我的答案:C
5
某计算机字长32位,存储容量是16MB ,若按双字编址,它的寻址范围是:
-
A、
0~256K-1
-
B、
0~512K-1
-
C、
0-1M-1
-
D、
0~2M-1
正确答案: D 我的答案:D
双字节编址,字为64位,存储容量为16x2的20次方x8=2的21次方x16x4,地址寄存器位数为21,寻址范围为0~2的21次方bit -1,0~2M-1
二.简答题(共2题,22.2分)
1
一个组相联映象Cache由64个存储块构成,每组包含4个存储块。主存包含4096个存储块,每块由128字组成。访存地址为字地址。
(1) 求一个主存地址有多少位?一个cache地址有多少位?
(2) 计算主存地址格式中,区号、组号、块号和块内地址字段的位数。
Cache的组数为64/4=16组,主存每区中的块数=16,主存区数=4096/16=256区,主存地址的组成为8位区号+4位的区内块号+7位的块内地址
Cache地址的组成为4位组号+2位每组中块号+7位块内地址
正确答案:
Cache组数为64/4=16组主存每区内的块数=Cache的组数,则主存的区数为4096/16=256区,每区内有16个存储块那么主存地址的组成为8位区号(256区)+4位区内块号(16个存储块)+7位块内地址(一块128字,按字编址)Cache地址为4位组号(16组)+2位组内块号(每组4快)+7位块内地址(一共128字,按字编址)
我的答案:
批语
2
一台计算机的主存容量为1MB,字长为32位,cache的容量为512字。确定下列情况下的地址格式。
(1) 直接映象的cache,块长为1字
Cache块长为1字,Cache的容量为512字=512x32bit=512x4B,区号=1MB/ 512x4B=2的9次方,块号=512字/1字=2的9次方,主存容量为1MB=2的20次方个字节地址,20-9-9=2位表示块内1个字(4字节)的字节地址
主存 区号 块号 块内字节地址
9 9 2
Cache 块号 块内字节地址
9 2
(2) 直接映象的cache,块长为4字
Cache块长为4字,Cache的容量为512字=512x32bit=512x4B,区号=1MB/ 512x4B=2的9次方,块号=512字/4字=2的7次方,主存容量为1MB=2的20次方个字节地址,20-9-7=4位表示块内4个字(4字节)的字节地址(问过老师)
老师:估计写错了,是块内四个字。
主存 区号 块号 块内字节地址
9 7 4
Cache 块号 块内字节地址
7 4
(3) 组相联映象的cache,块长为1字,组内8块
Cache的容量为512字=512x32bit=512x4B,组数=512字/8=2的9/2的3=2的6,块号2的3,区号 =1MB / 64*4B =2^12
正确答案:
(1) Cache块长为1字 主存为1MB, Cache的容量为512字= 512 ×4 B ,所以 区号 =1MB / 512×4B = 512=2^9 ,区号用9位表示; Cache的块长为1字 , 块号 = 512字/ 1字 = 512=2^9 ,块号用9位表示,主存容量为1MB表示有1M=2^20 个字节地址,20-9-9=2位用来表示块内1个字(4字节)的字节地址。因此 主存的地址格式 区号 块号 块内字节地址 9位 9位 2位 Cache的地址格式 块号 块内字节地址 9位 2位(2) Cache块长为4字 主存为1MB, Cache的容量为512字= 512 ×4 B ,所以 区号 =1MB / 512×4B = 512=2^9 ,区号用9位表示; Cache的块长为4字 , 块号 = 512字 / 4字 =128 =2^7, 块号用7位表示。 主存容量为1MB表示有1M=2^20 个字节地址,20-9-7=4位用来表示块内8个字(4字节)的字节地址。因此 主存的地址格式 区号 块号 块内字节地址 9位 7位 4位 Cache的地址格式 块号 块内字节地址 7位 4位 (3)组相联映像的Cache,块长1字,组内8块 Cache的容量为512字,块长1字,每组8块,每组8字 Cache的组数为512字/8字=64组=2^6 ,组号用6位表示 ,一组8块=2^3 ,块号用3位表示 ; 主存为1MB,所以区号 =1MB / 64*4B =2^12 ,区号用12位表示;主存容量为1MB表示有1M=2^20 个字节地址,20—12-6=2位用来表示块内1个字(4字节)的字节地址。因此 主存的地址格式 区号 组地址 块内字节地址 12位 6位 2位 Cache的地址格式 组号 组内块号 块内字节地址 6位 3位 2位
我的答案:
(1)Cache容量为512字=51232=5124B,区号=1MB/5124B=2的9次方,区号:9位块号:512字/1字=512=2的9次方,块号:9位块内字节地址:32位/1字节=32位/8位=2位,块内字节地址:2位 (2)Cache容量为512字=51232=5124B,区号=1MB/5124B=2的9次方,区号:9位块号:512字/4字=128=2的7次方,块号:7位块内字节地址:1MB=2的20次方,20-9-7=4,块内字节地址:4位
Cache的容量为512字 512字/4字=128块=2^7块
1组=4块=2^2块
主存地址格式:标记 11
组号 5
块内地址 2
Cache地址格式:
组号 5
块内地址 2
(3)
批语
三.计算题(共2题,22.3分)
1
假设某计算机的cache采用直接映象,容量为4096字.若CPU依次从主存单元0,1,…,99和4096,4097,…,4195交替取指令,循环执行10次,试求此时的命中率为多少?为什么?
正确答案:
此时CPU的命中率为0.
我的答案:
0,出现块冲突
批语
命中率为0,因为直接映像是主存根据cache的容量分配区内块数,导致每个区内的单元数为4096个,而交替取指令使得主存每次交替访问的位置都在被上一次访问所占据,例如两个区的第0个单元访问相同位置,每次都会存入cache,然后下一次读入的数据在cache中无法命中。
2
某计算机系统的内存由Cache和主存构成,Cache的存取周期为45ns,主存的存取周期为200ns.已知在一段给定的时间内,CPU共访问内存4500次,其中340次访问主存,求:
(1)Cache的命中率是多少
Cache的命中率=(4500-340)/4500=0.92
(2)CPU访问内存的平均访问时间是多少
0.92x45ns+(1-0.92)x200ns=57.4ns
(3)Cache-主存系统的效率是多少
Cache-主存系统的效率=45/57.4ns
正确答案:
解:⑴ 命中率H=(4500-340)/ 4500=0.92.⑵ CPU访存的平均时间T=0.92×45+(1-0.92)×200=57.4ns⑶ cache-主存系统的效率e=45/57.4=78℅
我的答案:
(1)命中率:(4500-340)/ 4500=92%(2)CPU访存的平均时间:0.92×45+(1-0.92)×200=57.4ns(3)Cache-主存系统的效率:45/57.4=78%