问答题 某Cache采用全相联映射,且此Cache有16块,每块8个字,主存容量为216个字(按字寻址),Cache开始为空。Cache存取时间为40ns;主存与Cache间传送8个字需要1μs。
问答题 计算Cache地址中标记位数和块内地址位数。
【正确答案】Cache地址中块内地址位数为3位(23=8)。由于采用的是全相联映射,因此除去块内地址剩下的就是标记位数。主存的标记位数为16-3=13,故Cache的标记位数为13位。
【答案解析】
问答题 程序首先访问主存单元20,21,22,…,45,然后重复访问主存单元28,29,30,…,45四次(假设没有命中Cache,将主存对应块一次全部读入Cache中,且第一块从0开始计数),试计算Cache的命中率。
【正确答案】首先,每块包含8个字(也就是8个主存单元),先访问20号单元,如果Cache不命中(因为Cache开始时为空),那么Cache就调入包含此单元的块,此块包含20、21、22、23单元,当接下来访问21~23单元时都命中。其次,访问24号单元时又不命中,以此类推。当访问20、24、32、40号单元时,不命中。也就是说,一共访问次数为26+18×4=98次,其中有4次不命中,Cache的命中率为 [*]
【答案解析】
问答题 计算上述程序总的存取时间。
【正确答案】已知Cache命中率、访问Cache的时间、主存与Cache交换块的时间,总的存取时间就很容易计算了,如下: 40ns×98+4×1μs=7920ns 有些考生认为答案应该是40ns×94+4×1μs=7760ns,因为有4次没有命中Cache,故没有存取操作,仅仅是对比了标记位而已,所以只需乘以94。解释一下,如果Cache没有命中,则CPU将会去主存取数据,并且将数据从主存送往Cache,所以最终CPU还是得对Cache进行98次的存取。
【答案解析】
问答题 现有一64K×2位的存储器芯片,欲设计具有同样存储容量的存储器,应如何安排地址线和数据线引脚的数目,使两者之和最小,并说明有几种解法。
【正确答案】不妨设地址线和数据线的数目分别为x和y。只需要满足2x×y=64K×2,有
如下方案:
当y=1时,x=17;
当y=2时,x=16;
当y=4时,x=15;
当y=8时,x=14。
(可不用讨论y等于3、5、6这些情况,不然x就没法计算了)
后面的就不用计算了,肯定比前面的引脚数目多。
从以上分析可以看出,当数据线为1或2时,地址线和数据线引脚的数目之和为18,达到最小,并且有两种解答。
【答案解析】
问答题 用16K×16位的SRAM芯片构成64K×32位的存储器。要求画出该存储器的组成逻辑框图。
【正确答案】所需芯片总数(64K×32)/(16K×l6)=8片,因此存储器可分为4个模块(图中用椭圆标示出来了),每个模块16K×32位,各模块通过A15、A14进行2:4译码,如下图所示。
[*]
图 64K×32位存储器的组成逻辑框图
【答案解析】
问答题 一个Cache-主存系统,采用50MHz的时钟,存储器以每一个时钟周期传输一个字的速率连续传输8个字,以支持块长为8个字的Cache,且每个字长为32位。假设读操作所花费的时间:1个周期接收地址,3个周期延迟,8个周期传输8个字;写操作所花费的时间:1个周期接收地址,2个周期延迟,8个周期传输8个字,3个周期恢复和写入纠错码。求下述几种情况下的存储器的带宽。 1)全部访问为读操作。 2)全部访问为写操作。 3)65%的访问为读操作,35%的访问为写操作。
【正确答案】由于存储系统采用50MHz的时钟,因此每一个时钟周期为1/(50MHz)=20ns。
1)当全部访问为读操作时,一次读操作所花费的时间为
Tr=(1+3+8)×20ns=240ns
故存储器的带宽为
Br=8/Tr=8/(240×10-9)≈33.3×106字/s≈133.2MB/s
2)当全部访问为写操作时,一次写操作所花费的时间为
Tw=(1+2+8+3)×20ns=280ns
故存储器的带宽为:
Bw=8/Tw=8/(280×10-9)≈28.6×106字/s≈114.4MB/s
3)读/写操作合在一起的加权时间为
T=240ns×0.65+280ns×0.35=254ns
故存储器的带宽为
B=8/T=8/(254×10-9)≈31.5×106字/s≈126MB/s
【答案解析】
问答题 某机器中,配有一个ROM芯片,地址空间为0000H~3FFFH。现在再用若干个16K×8位的RAM芯片构成一个32K×8位的RAM区域,使其地址空间为8000H~FFFFH。假设此RAM芯片有CS和WE信号控制端。CPU地址总线为A15~A0,数据总线为D7~D0,控制信号为RD(读)、WR(写)、MREQ(存储器请求信号),当且仅当MREQ和RD(或WR)同时有效时,CPU才能对存储器进行读(或写),试画出此CPU与上述ROM芯片、RAM芯片的连接图。
【正确答案】答案如下图所示。选用两片16K×8位的RAM芯片即可构成一个32K×8位的RAM区域。下面说明应该注意的一些细节问题。
[*]
图 CPU与ROM芯片、RAM芯片的连接图

1)ROM芯片不要连接在[*]信号线上,RAM芯片一定要连。
2)关于RAM的片选信号:
由于地址范围应该是8000H~BFFFH({{U}}10{{/U}}00 0000 0000 0000~{{U}}10{{/U}}11 1111 1111 1111),C000H~FFFFH({{U}}11{{/U}}00 0000 0000 0000~{{U}}11{{/U}}11 1111 1111 1111),因此两片RAM的A15、A14分别是10和11(加粗和加下画线的部分),也就是对应了Y2和Y3
【答案解析】