● 高速缓存Cache与主存间采用全相联的地址影像方式,高速缓存的容量为4MB,分为4块,每块1MB,主存容量为256MB,若主存读写时间为30ns,高速缓存的读写时间为3ns,平均读写时间为3.27ns,则该高速缓存的命中率为 (1) %。若地址更换表如下所示,则主存地址为8888888H时,高速缓存地址为 (2) H。
(1)A.90 B.95 C.97 D.99
(2)A.488888 B.388888 C.288888 D.188888
试题解析:
设该高速缓存的命中率为x,则3x+30×(1-x)=3.27,解得x=99%。
主存容量为256MB,每块1MB,则主存可以分为256/1=256=28块,即块号为8位,则主存地址的高8位是88H,对应地址更换表,高速缓存地址为188888H。
主存容量为 256MB表示由28个二进制数地址也对应由7个十六进制数8888888H ,每块 IMB说明块内地址是20位二进制数也就是5位十六进制数88888,剩下的2位十六进制数88H代表块地址,查表可知主存地址88H对应高速缓存地址1,所以高速缓存地址为188888H(1MB=2^20,8888888H右移20位(5位16进制)得88H, 查表1-> 88H 得地址188888H)解析:(1)D 这是一道命中率的计算题.设命中率为x,根据题意可以得到3x+30(1-x)=3.27得出:x=0.99
(2).D这道题一个是考查直接映像、全相联、组相联,以及在具体映射时候是如何实现的。这里有个基本的计算,那就是1M=10 00 00H
这样是不是就比较醒目了:
内存地址范围 Cache地址范围
3800000H-38FFFFFH 000000H-0FFFFFH
8800000H-88FFFFFH 100000H-1FFFFFH
5900000H-59FFFFFH 200000H-2FFFFFH
6700000H-67FFFFFH 300000H-3FFFFFH问题:
已知某高速缓存Cache采用组相联映射方式,即组间直接映射。组内全相联映射。假设主存容量为4096块,每块256字节,高速缓存包含32块,分8组,每组4块。高速缓存的地址变换表应包含 ? 个存储单元,每个存储单元应能存放? 为二进制数,每次参与比较的是? 个存储单元
[试题分析]:
高速缓存的地址变换表存储器的容量与Cache的块数相等(原因就是采用组相联方式时,采用组内相联查询),字长为主存地址中的区号、组内块号与Cache地址中组内块号三者长度之和。
此题中,Cache中共有32块,因此需要32个存储单元。主存中的块和Cache中的块大小一样,又因为4096/32=128=2^7,所以主存区号有7位。主存的组号位数与Cache组号的位数一样,Cache一共有8=2^3组,所以主存组号占3位。Cache一组有4=2^2块,所以Cache组内块号占2位。将上面三者加起来7+3+2=12位,因此,高速缓存的地址变换表存储器每个存储单元长12位。
高速缓存的地址变换表存储器是一个相联存储器,每一个存储块都具有额外的存储信息,称为标签(Tag)。当访问相联存储器时,将地址和每一个标签同时进行比较,从而对标签相同的存储块进行访问。因此每次全部32个单元都参加比较。
直接解析:
主存地址=cache区号+块号+块内地址=直接映象
主存地址=cache区号+块内地址=全相联
主存地址=cache区号+组号+块号+块内地址=组相联