4.23设CPU共有16根地址线,8根数据线,并用M/-IO作为访问存储器或I/O的控制信号(高电平为访存,低电平为访I/O),-WR(低电平有效)为写命令,-RD(低电平有效)为读命令。设计一个容量为64KB的采用低位交叉编址的8体并行结构存储器。现有如图所示的存储芯片及138译码器。
Ai A0 -OE 允许读 -WE 允许写 -CE 片选 … -OE RAM -CE -WE Dn … D0
画出CPU和存储芯片(芯片容量自定)的连接图,并写出图中每个存储芯片的地址范围(用十六进制数表示)。
解:芯片容量=64KB/8=8KB
每个芯片(体)的地址范围以8为模低位交叉分布如下:
Y0 8Kx8 RAM 0000H, 0008H, ,……, Y1 8Kx8 RAM 0001H, 0009H, ,……, Y2 8Kx8 RAM 0002H, 000AH, ,……, Y3 8Kx8 RAM 0003H, 000BH, ,……, Y4 8Kx8 RAM 0004H, 000CH, ,……, Y5 8Kx8 RAM 0005H, 000DH, ,……, Y6 8Kx8 RAM 0006H, 000EH, ,……, Y7 8Kx8 RAM 0007H, 000FH, ,……, CPU和存储芯片的连接图如图4.5所示。
FFF8H FFF9H FFFAH FFFBH FFFCH FFFDH FFFEH FFFFH
图4.5 CPU和存储芯片的连接图
4.24一个4体低位交叉的存储器,假设存取周期为T,CPU每隔1/4存取周期启动一个存储体,试问依次访问64个字需多少个存取周期?
解:本题中,只有访问第一个字需一个存取周期,从第二个字开始,每隔1/4存取周期即可访问一个字,因此,依次访问64个字需: 存取周期个数 = T + (64-1)×(1/4)T =(63/4+1)T =15.75+1 =16.75T 与常规存储器的速度相比,加快了:(64-16.75)T =47.25T
注:4体交叉存取虽然从理论上讲可将存取速度提高到4倍,但实现时由于并行存取的分时启动需要一定的时间,故实际上只能提高到接近4倍。
4.25什么是“程序访问的局部性”?存储系统中哪一级采用了程序访问的局部性原理?
解:所谓程序访问的局部性即在一小段时间内,最近被访问过的程序和数据很可能再次被访问;在空间上,这些被访问的程序和数据往往集中在一小片存储区;在访问顺序上,指令顺序执行比转移执行的可能性大 (大约 5:1 )。
存储系统的Cache—主存级和主存—辅存级都用到程序访问的局部性原理。对Cache—主存级而言,把CPU最近期执行的程序放在容量较小速度较高的Cache中。对主存—辅存级而言,把程序中访问频度高、比较活跃的部分放在主存中,这样既提高了访存速度又扩大了存储器容量。
4.26计算机中设置Cache的作用是什么?能不能把Cache的容量扩大,最后取代主存,为什么?
解:计算机中设置Cache主要是根据程序访问的局部性原理,加快CPU访存速度。 不能把Cache的容量扩大到最后取代主存,主要因为Cache和主存的结构原理以及访问机制不同(主存是按地址访问,Cache是按内容及地址访问),虽然Cache的容量越大,其CPU的命中率就越高,但容量太大会增加成本,而且当Cache容量达到一定值时,命中率已不因容量的增大而有明显的提高。
4.27 Cache制作在CPU芯片内有什么好处?将指令Cache和数据Cache分开又有什么好处?
解:Cache制作在CPU芯片内主要有下面几个好处:
(1)可提高外部总线的利用率。因为Cache在CPU芯片内,CPU访问Cache时不必占用外部总线。
(2)Cache不占用外部总线就意味着外部总线可更多地支持I/O设备与主存的信息传输,增强了系统的整体效率。
(3)可提高存取速度。因为Cache与CPU之间的数据通路大大缩短,故存取速度得以提高。 将指令Cache和数据Cache分开有如下好处:
(1)可支持超前控制和流水线控制,有利于这类控制方式下指令预取操作的完成。 (2)指令Cache可用ROM实现,以提高指令存取的可靠性。
(3)数据Cache对不同数据类型的支持更为灵活,既可支持整数(例32位),也可支持浮点数据(如64位)。
补充:
Cache结构改进的第三个措施是分级实现,如二级缓存结构,即在片内Cache(L1)和主存之间再设一个片外Cache(L2),片外缓存既可以弥补片内缓存容量不够大的缺点,又可在主存与片内缓存间起到平滑速度差的作用,加速片内缓存的调入调出速度。
4.28设主存容量为256K字,Cache容量为2K字,块长为4。 (1)设计Cache地址格式,Cache中可装入多少块数据? (2)在直接映射方式下,设计主存地址格式。
(3)在四路组相联映射方式下,设计主存地址格式。 (4)在全相联映射方式下,设计主存地址格式。
(5)若存储字长为32位,存储器按字节寻址,写出上述三种映射方式下主存的地址格式。
解:根据Cache容量为2K=2字,得Cache字地址11位。根据快长为4,且访存地址
11918
为字地址,得字块内地址为2位,即b=2,且Cache共有2/4=2块,即c=9。根据256K=2字,得主存字地址为18位。
(1)Cache中可装入512块数据。
(2)在直接映射方式下主存字块标记为18-11=7。主存地址格式如下: 主存字块标记(7位) Cache字块地址(9位) 字块内地址(2位) (3)在四路组相联映射方式下,根据四路组相联的条件,一组内有4块,得Cache共
7
分512/4=128=2组,即q=7。主存字块标记为18-q-b=18-7-2=9位,主存地址格式如下:
主存字块标记(9位) 组地址(7位) 字块内地址(2位) (4)在全相联映射方式下,主存字块标记为18-b=18-2=16位,主存地址格式如下: 主存字块标记(16位) 字块内地址(2位) (5)若存储字长为32位,存储器按字节寻址,得主存字节地址为256K=256×2×4B=2
字。
在直接映射方式下主存字块标记为20-11=9。主存地址格式如下: 主存字块标记(7位) Cache字块地址(9位) 字块内地址(4位) 在四路组相联映射方式下,主存字块标记为20-q-b=20-7-4=9位,主存地址格式如下: 主存字块标记(9位) 组地址(7位) 字块内地址(4位) 在全相联映射方式下,主存字块标记为20-b=20-4=16位,主存地址格式如下: 主存字块标记(16位) 字块内地址(4位) 10
20
11
4.29假设CPU执行某段程序时共访问Cache命中4800次,访问主存200次,已知Cache的存取周期是30ns,主存的存取周期是150ns,求Cache的命中率以及
Cache-主存系统的平均访问时间和效率,试问该系统的性能提高了多少?
解:(1)Cache的命中率为4800/(4800+200)=0.96
(2)平均访问时间为30ns×0.96+150ns×(1-0.96)=34.8ns
(3)由题意可知,访问主存的时间是访问Cache时间的5倍(150ns/30ns=5)
设访问Cache的时间为t,访问主存的时间为5t,Cache-主存系统的访问效率为e,则
e=t/[0.96×t+(1-0.96)×5t]=86.2%
(4)设无Cache时访主存需时5000*5t,加入Cache后需时: 4800t +200*5t =5800t
则:5000*5t /5800t ?4.31倍
有Cache和无Cache相比,速度提高了4.31倍左右。
4.30一个组相连映射的CACHE由64块组成,每组内包含4块。主存包含4096块,每块由128字组成,访存地址为字地址。试问主存和高速存储器的地址各为几位?画出主存地址格式。
解:Cache组数:64/4=16 ,Cache容量为:64*128=2字,Cache地址13位 主存共分4096/16=256区,每区16块
19
主存容量为:4096*128=2字,主存地址19位,地址格式如下: 主存字块标记(8位) 组地址(4位) 字块内地址(7位) 13
4.31设主存容量为1MB,采用直接映射方式的Cache容量为16KB,块长为4,每字32位。试问主存地址为ABCDEH的存储单元在Cache中的什么位置?
解:根据Cache容量为16KB,Cache地址为14位。由于每字32位,则Cache共有16KB/4B=4K字。因每个字块4个字,故Cache中有4K/4=1k块。
根据主存容量为1MB,主存地址为20位。由于每字32位,则主存共有1MB /4B=256K字。因每个字块4个字,故主存中有256K/4=64k块。
在直接映射方式下,主存地址字段的各段位数分配如下:其中字块内地址为4位(2位表示4个字,2位表示每字32位),缓存共1K块,故缓存字块地址为10位,主存字块标记为主存地址长度与Cache地址长度之差,即20-14=6位
主存字块标记(6位) Cache字块地址(10位) 字块内地址(4位)
在直接映射方式下,由于Cache中有1k块,主存中有64k块,因此主存地址为ABCDEH的存储单元在Cache中的973(1010 1011 1100 1101 1110)块中。
4.32设某机主存容量为4MB,Cache容量为16KB,每字块有8个字,每字32位,设计一个四路组相联映射(即Cache每组内共有4个字块)的Cache组织。 (1)画出主存地址字段中各段的位数;
(2)设Cache的初态为空,CPU依次从主存第0、1、2……89号单元读出90个字(主存一次读出一个字),并重复按此次序读8次,问命中率是多少?
(3)若Cache的速度是主存的6倍,试问有Cache和无Cache相比,速度约提高多少倍?
解:(1)根据Cache容量为16KB,Cache地址为14位。由于每字32位,则Cache共有16KB/4B=4K字。因每个字块8个字,故Cache中有4K/8=512块。
根据主存容量为4MB,主存地址为22位。由于每字32位,则主存共有4MB /4B=1M字。因每个字块8个字,故主存中有1M /8=128k块。
根据四路组相联映射,得Cache共分512/4=128=2组,即q=7。该映射方式下,主存地址字段的各段位数分配如下:其中字块内地址为5位(3位表示8个字,2位表示每字32
7
位),缓存共2组,故缓存组地址为7位,主存字块标记=22-7-5=10位。
7
8 7 2 3 2
Cache组号 组内块号 块内字地址 字节地址 主存字块标记
(2)由于题意中给出的字地址是连续的,故(1)中地址格式的最低2位不参加字的读
出操作。当主存读0号字单元时,将主存0号字块(0-7)调入Cache(0组0号块),主存读8号字单元时,将1号块(8-15)调入Cache(1组0号块)?? 主存读89号单元时,将11号块(88-89)调入Cache(11组0号块)。
共需调90/8 ?12次,就把主存中的90个字调入Cache。除读第1遍时CPU需访问主存12次外,以后重复读时不需再访问主存。则在90×8 =720个读操作中:
访Cache次数 =(90-12)+630 =708次 Cache命中率 =708/720 ?0.98 ?98%
(3)设无Cache时访主存需时720T(T为主存周期),加入Cache后需时: 708?T/6+12T =(118+12)T=130T 则:720T/130T ?5.54倍
有Cache和无Cache相比,速度提高了5.54倍左右。
4.33 简要说明提高访存速度可采取的措施。
解:提高访存速度可采取的措施:
(1) 采用高速器件,选取存取周期短的芯片,可提高存储器的速度;
(2) 采用Cache,CPU将最近期要用的信息先调入Cache,而Cache的速度比主存快
得多,这样CPU每次只需从Cache中取出或存入信息,从而缩短了访存时间,提高了访存速度。
(3) 调整主存结构,如采用单体多字结构(在一个存取周期内读出多个存储字,可增
加存储器的带宽),或采用多体结构存储器。
4.34 反映主存和外存的速度指标有何不同?
答:主存的速度指标用存储周期表示,因为主存是随机存取存储器,存取周期不随存储
单元的地址不同而改变。
外存的速度指标,以磁盘为例,一般包括寻道时间,等待时间和数据传输时间三个量。磁盘存储器属磁表面存储器,其存取周期与存储单元的位置有关,不同位置所需的寻道时间和等待时间不同,故不能以一个物理量来衡量。
4.35 画出RZ、NRZ、NRZ1、PE、FM写入数字串1011001的写电流波形图。
解:如图4.6所示。