计算机组成与体系结构第2版习题答案补完计划赵姝陈洁主编-第2章存储系统 - 安徽大学出版社

写这些答案的目的,是不希望以后看这本破书的人有连答案都没有学不下去的那种绝望心情了,这些答案是我一题一题搜出来的,有些实在是搜不到就空出来了。

1.

2.简述Cache、主存、辅存三者之间的关系。 

(Chat生成,看看就行)

解;

Cache(高速缓存)、主存(内存)和辅存(外存)是计算机系统中不同层次的存储器,它们之间有着紧密的关系。这些存储器层次被设计用来在性能和存储容量之间找到平衡。

1). Cache(高速缓存):

Cache是位于CPU和主存之间的一层存储器,它的作用是缓存主存中的数据和指令,以提高访问速度。Cache存储了CPU经常访问的数据和指令,因此可以更快地满足CPU的访问需求。Cache分为多级(L1、L2、L3等)并具有不同容量和访问速度。Cache的存储速度远高于主存和辅存,但容量有限,因此它只能存储一部分主存中的数据。

2). 主存(内存):

主存是计算机系统中的主要存储器,用于存储运行中的程序和数据。它具有较大的容量,但相对于Cache来说访问速度较慢。CPU需要从主存中获取指令和数据进行处理。主存的容量相对较大,但访问速度较慢,因此Cache的引入可以减少CPU访问主存的次数,提高系统性能。

3). 辅存(外存):

辅存是指计算机系统中的外部存储介质,如硬盘、固态硬盘(SSD)等。辅存容量很大,但访问速度相对较慢。它用于永久性地存储程序、数据和文件,当程序不在运行时,数据可以被存储在辅存中,而不会丢失。

三者之间的关系:

Cache、主存和辅存形成了存储器层次结构,这种层次结构充分利用了不同存储器的特点来平衡性能和存储容量。当CPU需要数据或指令时,首先会在Cache中查找,如果找到了就可以更快地进行访问,如果Cache中没有需要的数据,则会从主存中获取。如果主存中也没有,则需要从辅存中加载数据到主存中,再由主存传递给CPU。这个过程中,数据从辅存到主存再到Cache的传递称为数据的“移动”或“传输”。

总之,Cache、主存和辅存之间的关系是在性能和存储容量之间寻求平衡,通过不同层次的存储器来提高计算机系统的整体性能。

3.简述Cache和虚拟存储器的区别与联系。 

(1)Cache和虚拟存储器的实现是基于程序的局部性原理。

(2) Cache是为了解快CPU和主存之间的速度不匹配,功能由硬件实现,对各类程序员是透明的。(3)虚拟存储器是为了解决主存容量的不足,功能由软,硬件相结合实现,对设计存储管理软件的系统程序员是不透明的,对应用程序员是透明的。

解;

区别:

1). 定义和作用:

   - Cache:Cache是位于CPU和主存之间的高速缓存存储器,用于存储CPU经常访问的数据和指令,以提高访问速度。

   - 虚拟存储器:虚拟存储器是一种将主存和辅存结合使用的技术,它允许程序使用比主存更大的地址空间,将不常用的数据从主存移至辅存,从而扩展了可用的内存空间。

2). 存储容量:

   - Cache:Cache的容量相对较小,一般只能存储主存中的一部分数据。

   - 虚拟存储器:虚拟存储器允许程序使用比主存更大的地址空间,可以超出主存容量。

3). 目的:

   - Cache:Cache的目标是提高CPU的访问速度,减少CPU等待主存的时间。

   - 虚拟存储器:虚拟存储器的目标是扩展可用内存空间,使得程序可以使用更大的地址空间,而不受实际主存容量的限制。

联系:

1). 提高访问速度:Cache和虚拟存储器都是为了提高数据访问的速度。Cache通过缓存常用的数据和指令,减少CPU访问主存的次数。虚拟存储器通过将不常用的数据放在辅存中,使得主存中可以留出更多空间供常用数据使用。

2). 存储层次:Cache可以被看作是主存和CPU之间的一个高速缓存层次,而虚拟存储器则扩展了主存的可用空间,利用辅存作为备用存储。

3). 数据迁移:Cache中的数据可能会根据使用情况进行替换或迁移。虚拟存储器中的数据也会根据需要从辅存加载到主存,或者根据页面置换算法进行调度。

总的来说,Cache和虚拟存储器在存储器管理中有不同的角色和功能,但它们都是为了提高系统性能和可用内存空间而设计的技术。

4.主存储器的地址寄存器和数据寄存器各自的作用是什么?设有一个1MB 容量的存储器,字长为32位,问:

(1)按字节编址,地址寄存器和数据寄存器各几位?编址范围为多大? 

(2)按字编址,地址寄存器和数据寄存器各几位?编址范围为多大? 

解;

在主存储器中,地址寄存器MAR用来存放当前CPU访问的内存单元地址,或者存放CPU写入内存的内存单元地址。数据寄存器MDR用来存放由内存中读出的信息,或者写入内存的信息。

 (1)按字节编址,1MB=2^{23}bit=2^{20}×8位,地址寄存器为20位,数据寄存器为8位,编址范围为00000H~FFFFFH(FFFFFH-00000H+1=100000H=2^{20})。

   (2)按字编址,1MB=2^{23}bit=2^{18}×32位,地址寄存器为18位,数据寄存器为32位,编址范围为00000H~3FFFFH(3FFFFH-00000H+1=40000H=2^{18})。

5.用64K×1位的DRAM芯片构成256K×8位的存储器,假定芯片内部只有一个位平面。回答以下问题: 

(1)所需芯片数是多少? 

(2)采用异步刷新方式,如每单元刷新间隔不超过2ms,则刷新信号周期是多少? 

(3)如采用集中刷新方式,存储器刷新一遍最少用多少读/写周期? 

解;

(1)该存储器所需芯片数=(256K×8)/(64K×1)=32片。

(2)DRAM芯片的容量为64K×1位,由于芯片内部存储阵列只有一个位平面(即1位),则存储阵列的结构为256×256(2⁸×2⁸=2¹⁶=64K),则存储器刷新一遍至少需要256次刷新操作。若采用异步刷新方式,则相邻两次刷新的时间间隔为2ms/256≈7.8μs,所以,刷新信号周期应为7.8μs。

(3)在与(2)同样的假定条件下,若采用集中刷新方式,则存储器刷新一遍最少需要256个读/写周期,在这个过程中,存储器不能进行读写操作。

6.某16K×1位的DRAM存储芯片的读/写周期t_{M}=0.1 μs,芯片的最大刷 新间隔不允许超过2ms(1ms=10^{3}μs),否则有可能丢失信息。问: 

(1)刷新周期是多少?将DRAM存储芯片刷新一遍需要多少个刷新周期? 

(2)若采用分散刷新方式,则刷新信号周期是多少? 

(3)若采用集中刷新方式,则将DRAM芯片刷新一遍需要多少时间?不能提 供读写服务的百分比是多少? 

解;

(1)所谓刷新操作就是周期性地按行对所有的存储单元进行读操作,但不输出。将读出数据再写回原存储单元。显然刷新操作等于一次读操作加上一次写操作,所以刷新周期=2×读/写周期=2×0.1μs=0.2μs。由于存储芯片内一般采用行、列两维译码,而且当行、列根数相同时,译码阵列最简单。若DRAM芯片的地址线为N根,则行数为2^{N/2}。一个16K×1位芯片共有14(2¹⁴=16K)根地址线,按行数=列数计算,片内共有2⁷=128行。由于刷新是按行进行,同一行的各存储单元的刷新同时进行,所以刷新一遍共需128个刷新周期。

(2)分散刷新就是把刷新平均分散在2ms的间隔时间内,刷新周期就是相邻两行刷新间隔时间,即刷新信号周期=允许的最大刷新间隔时间/行数,在2ms内把128行刷新一遍,故刷新信号的周期为:2ms/128=15.625μs,可取刷新信号周期为16μs。

(3)集中刷新就是在2ms的时间间隔内,留出一段时问,集中对RAM进行刷新,刷新期内不对外提供读/写服务。采用集中刷新方式,将DRAM芯片全部存储单元刷新一遍所需的时间是:存储器行数×刷新周期=128×0.2μs=25.6μs。存储器不能提供读/写服务的时间就是将全部存储单元刷新一遍所需的时间,所以主存不能提供读写服务的百分比=25.6μs/2ms×100%=1.28%。

7.有一个16K×16位的存储器,由1K×4位的DRAM芯片构成(芯片内是 64×64结构),问: 

(1)总共需要多少DRAM芯片? 

(2)采用异步刷新方式,如果单元刷新间隔不超过2ms,则刷新信号周期是多少? 

(3)若采用集中刷新方式,存储器刷新一遍最少用多少个读/写周期? 

解;

(1)所需DRAM芯片数=(16K×16)/(1K×4)=64片。

(2)若采用异步刷新方式,则需要在2ms时间内分散地把芯片的64行刷新一遍,所以刷新的时问间隔2ms/64=31.25μs,即刷新周期约为31μs。

(3)若采用集中刷新方式,设T为刷新周期,DRAM芯片中所有行同时进行刷新,则所需刷新时间=64T。若存储器的刷新周期为0.5μs,则所需刷新时间为64T=64×0.5μs=32μs。

8.某16位某系统,扩展8 KB ROM和4 KB RAM,ROM用2732(4K×8),RAM 用6116(2K×8),使用地址为0000~2FFFH,要求地址唯一,画出电路连接图。 

解;

搜不到

9.为某系统扩展16KB ROM和8 KB RAM,ROM用2764(8K×8),RAM 用6264(8K×8),其地址范围为FA000H~FFFFFH,用74LS138译码,要求地址 唯一,且地址连续(设CPU系统提供R/W信号)。 

解;

搜不到

10.设CPU有20根地址线,8根数据线。用IO/M作访存控制信号。RD为 读命令,WR为写命令。现有2764EPROM(8K×8位),外特性如图2-57所示。 用74LS138译码器及其他门电路(门电路自定)画出CPU和2764的连接图,要求 地址为FO000H~FFFFFH,并写出每片2764的地址范围。 

解;

搜不到

11.设CPU的地址总线16根(A_{15}A_{0}。,A_{0}为低位),双向数据总线8根(D_{7}~ D_{0}),控制总线中与主存有关的信号有\overline{MREQ}(访存控制信号,低电平有效),\overline{WE}(高 电平为读命令,低电平为写命令)。主存地址空间分配如下(均按字节编址):

 0000H~3FFFH为系统程序区,由只读存储芯片组成;

 4000H~4FFFH为系统程序工作区,由SRAM组成;

 6000H~9FFFH为用户程序区,也由SRAM组成。

现有如下存储芯片若干:

 EPROM,8K×8位(控制端仅有CS);

 SRAM,16K×1位,2K×8位,4K×8位,8K×8位。

 请从上述芯片中选择适当芯片设计该计算机主存储器。可另外选用门电路 和3/8译码器。 

解:

系统程序区需2片8K×8位的EPROM芯片,系统程序工作区需1片4K×8位的SRAM芯片,用户程序区需2片8K×8位的SRAM芯片。使用A15、A14、A13完成3-8译码,用000、001输出接2片EPROM芯片,010配合A12为0接1片4K×8位SRAM,011、100输出接2片8K×8位的SRAM芯片。

12.设CPU有16根地址线,8根数据线,并用MREQ作为访存控制信号,用 WE作为读/写控制信号(高电平为读,低电平为写)。现有以下存储芯片:1KX4 位RAM、4K×8位RAM、8K×8位RAM、2K×8位ROM、4K×8位ROM、8K× 8位ROM及3/8译码器和各种门电路。要求设计2KB的系统程序区,地址范围 为6000H~67FFH,2KB的用户程序区,地址范围为6800H~6BFFH,给出CPU 与存储器的连接图。 

解;

(原题目有误,将“2KB的用户程序区”改为“1KB的用户程序区”)

1、将十六进制地址范围写成二进制地址码,并确定其总容量,如下图所示。

2、根据地址范围的容量以及该范围在计算机系统中的作用,选择存储芯片。

由于6000H~67FFH为系统程序区的范围,故应选1片2K×8位的ROM芯片;

由于6800H~6BFFH为用户程序区的范围,故应选2片1K×4位的RAM芯片。

3、存储芯片的片选逻辑图如下图所示。      

 ①由6000H~67FFH为系统程序区的范围,选1片2K×8位的ROM芯片。故0~10地址线应用来选择ROM芯片。那么能用来作为74LS138译码器输入的只能是11~15地址线。    ②由6800H~6BFFH为用户程序区的范围,选2片1K×4位的RAM芯片。故0~9地址线应用来选择RAM芯片。那么能用来作为74LS138译码器输入的只能是10~15地址线。  ①与②取交集,则只能取11~15地址线。故取11、12与13这3位分别作为A、B与C的输入端。    

ROM芯片的13、12、11号线分别为1、0、0,十进制值为4,故取74LS138的4号输出端﹁Y₄。    

RAM芯片的13、12、11号线分别为1、0、1,十进制值为5,故取74LS138的5号输出端﹁Y₅;又因为10号线为0时才选中RAM芯片,故根据题目条件,本题选用了与非门。若不用与非门,而直接用74LS138的5号输出端作为片选端,则会错误导致下列地址也选中RAM芯片。    

13.设有8个模块组成的八体存储器结构,每个模块的存取周期为400 ns,存储字长为32位。数据总线宽度为32位,总线传输周期为50ns,求顺序存储(高位交叉)和交叉存储(低位交叉)的存储器带宽。 

解;

8体存储器的总信息量:32位×8=256位。

对于8体高位交叉存储器,连续读出8个字所花的总时间:

t₁=mT=8×400ns=3200ns=32×10⁻⁷S

对于8体低位交叉存储器,连续读出8个字所花费的总时间:

t₂=T+(m-1)\tau=400ns+(8-1)×50ns=750ns=7.5×10⁻⁷S

因此,高位交叉存储器的带宽=256/(32×10⁻⁷)=8×10⁷bps。

低位交叉存储器的带宽=256/(7.5×10⁻⁷)=34×10⁷bps。

14.若低位交叉的8体并行主存按字节编址,每个模块的读写宽度为两个字 节,请图示8体交叉并行主存的编址情况,若每个模块的读写周期均为250 ns,求 8体交叉并行主存的带宽。若读操作所涉及的8个单元地址为下列两种情况,试 分别计算这两种情况时8体交叉并行主存的实际带宽。 

(1)8880H,8881H,8882H,8883H,8884H,8885H,8886H,8887H。 

(2)8880H,8884H,8888H,888CH,8890H,8894H,8898H,889CH。 

解;

8体主存的编址如下图所示。每个方框代表一个模块,框内的十六进制数代表该模块的编址。由于按字节编址,每个模块每次读写两个字节,所以各模块的地址均是偶数,8个主存模块按低位交叉进行编址,所以各模块的最低一位十六进制数分别是0、2、4、6、8、A、C、E,体现了编址特点,其中X代表任意一位十六进制数。

8体交叉并行主存带宽应当是单个模块带宽的8倍:8×(2B/250ns)=64MB/s。

        情况(1)的8个地址是连续的,涉及8体交叉并行主存储器的U0~U3共4个模块,U4~U7的读出没有意义,所以在这种情况下,并行主存的实际带宽为:4×(2B/250ns)=32MB/s。

        情况(2)的8个字节地址不连续,仅涉及U0、U2、U4和U6共4个模块,而且每个模块中仅有1个字节的读出是有意义的,所以每次只能读出4个需要读的字节,4个字节的带宽为:4×(1B/250ns)=16MB/s。

15.CPU执行一段程序时,Cache完成存取的次数为5000次,主存完成存取 的次数为200次。已知Cache存取周期tc为40ns,主存的存取周期tw为160ns。 分别求(当Cache不命中时才启动主存): 

(1)Cache的命中率h。 

(2)平均访问时间t_{A}。 

(3)Cache一主存系统的访问效率e。 

解;

(1)h=N_{c}/(N_{c}+N_{M})=5000/(5000+200)=96.15%。

(2)tₐ=h×t_{c}+(1-h)t_{M}=96.15%×40+(1-96.15%)×160=44.62ns。

(3)e=t_{c}/tₐ×100%=40/44.62=89.64%。

※注意:如果Cache访问和主存访问是同时启动,则公式就改为:Tₐ=h×t_{c}+(1-h)t_{M}

16.假设机器周期为10ns,Cache访问时间为1个周期,主存访问时间是20 个周期,回答以下问题:

(1)设命中率为95%,求平均访存时间。 

(2)如果Cache容量增加一倍而使命中率提高到97%,然而因此使机器周期 延长到12 ns,这样的改动方案是否值得采取?为什么? 

解;

(1)考虑Cache命中和不命中的两种情况,由命中率可知,机器的平均访存时间=95%×10+(1-95%)×20×10=19.5ns。

(2)改动后的平均访存时间=97%×12+(1-97%)×20×12=18.84ns。仅减少了0.66ns,但Cache的成本上升了,是否值得采用还得综合考虑。

17.设有一个Cache的容量为2K字,每个块为16字,求: 

(1)该Cache 可容纳多少个块? 

(2)如果主存的容量是256K字,则有多少个块? 

(3)主存的字地址有多少位?Cache字地址有多少位? 

(4)在直接映像方式下,主存中的第198块映像到Cache中哪一个块中? 

(5)进行地址映像时,存储器的地址分成哪几段?各段分别有多少位? 

解;

解:(1) cache中有2K/16=2¹¹/2⁴=128个块。                               

(2) 主存有256K/16=2¹⁸/2⁴=2¹⁴=16384个块。                             

(3)主存容量为256K=2¹⁸字,所以主存的地址有18位。

cache容量为2K=2¹¹字,所以cache字地址为11位。               

(4) 主存中的第i块映象到cache中第 i mod 128个块中。

即第198映射到198mod128=70块中。              

(5)

题目说明不详细,按照(2)中的主存大小,可得出如下分段:

字块内标记即每个块大小16=2⁴,即4位,Cache字块标记=2K/16=2⁷,即7位,其余相减可得出,二路组组地址=Cache块数/2路=2⁷/2=2⁶,即6位,同样四路组=2⁷/4=2⁵,即5位。

18.在组相联映像方式下,主存与Cache按相同大小分块,Cache被分成8组, 每组有两块。主存的15块可以映像到Cache中的哪一个字块中?

解;

Cache组号=主存块号mod组数

第i个Cache块号=Cache组号×每组中的块数+0或1(这里是二路组,若为四路组,则为0或1或2或3)

15 mod 8=7

i=7×2+0或1=14或15

即主存的第15块可以映射到Cache中的第14个字块或第15个字块中。

19.设某机主存容量为16MB,Cache容量为8KB。每字块有8个字,每字32 位。设计一个四路组相联映像的Cache组织。回答以下问题:

 (1)画出主存地址字段中各段的位数。

 (2)设Cache初态为空,CPU依次从主存第0,1,2,…,99号单元读出100字 (主存一次读一个字),并重复此次序读10次,问命中率为多少? 

(3)若Cache的速度是主存的5倍,则有Cache和无Cache相比,速度提高多 少倍? 

(4)系统的效率为多少? 

解:

(1)主存地址字段如图5-21所示。根据每个字32位(4B),每个字块8个字,得出块内地址5位。根据Cache容量8KB,字块大小32B,得出Cache共256块。根据4路组相联,共分64组(256÷4)。

(2)由于Cache初态为空,CPU读0号单元时不命中,必须访存,同时将该字所在的主存块调入Cache,接着CPU读1~7号单元均命中(每个字块有8个字)。同理,CPU读8,16,…,96号单元均不命中。可见CPU在连续读100个字中共有13次未命中,而后9次循环读100个字全部命中,命中率为

(100×10-13)/(100×10)×100%=98.7%

(3)设主存存取周期为5t,Cache存取周期为t,没有Cache的访问时间是5t×1000,Cache的访问时间是t×(1000-13)+5t×13,则有Cache和无Cache相比,速度提高的倍数为

[(5t ×1000)/(t×(1000-13)+5t×13)]-1≈3.75

(4)系统的效率为

t/(0.987×t+(1-0.987)×5t)×100%=95%

20.若主存为1MB,Cache为2KB,按256B分块。

回答以下问题: 

(1)若Cache一主存层次采用全相联映像,则主存、Cache各分多少块?并画 出主存与Cache 的地址格式。 

(2)若由相联存储器实现主存一Cache地址变换,问该相联存储器应包含几 个单元,每单元几位? 

(3)若Cache读写周期为25ns,主存读写周期为250ns,平均命中率98%,求 平均访问时间。 

解;

(1)全相联映射将主存和Cache都分成大小相同的块。主存容量为1MB,Cache容量是2KB,按256B分块,所以:主存分为1MB/256B=4096块,因此主存块号为log₂(4096)=12位。Cache分为2KB/256B=8块,因此Cache块号为log₂8=3位。块大小是256B,所以块内地址为log₂256=8位,因此主存和Cache格式如下。

(2)全相联映射的特点是主存的任何一块都可以放入Cache的任何一个块中。为了实现高速地址变换,地址变换机构应由相联存储器实现。地址变换表的表项(单元数)应当与Cache的块数对应,这里为8个单元。由于要与主存的块号进行比较,所以每个表项应包含12位(等于主存块号的位数)。

(3)设Cache的读写周期用t_{c}表示,主存的读写周期用t_{M}表示,平均访问时间用t_{0}表示,由于CPU可以直接访问内存,所以平均访问时间t_{0}为:

t_{A}=t_{c}×h+t_{M}×(1-h)=25ns×98%+250ns×(1-98%)=29.5ns。

21.一个由Cache与主存组成的两级存储系统,按字编址,已知主存容量为 1M字,Cache容量为32K字。采用组相联地址映像,Cache共分为8组,主存与 Cache 的块大小为64字。回答以下问题: 

(1)写出主存与Cache的地址格式,要求说明各字段名称与位数。 

(2)假设Cache的存取周期为20ns,命中率为95%,希望采用Cache后提速 10倍,那么要求主存的存取周期是多少? 

解;

(1)主存按字节编址, 块大小为 64B=26 B, 故字块内地址 6 位; 缓冲共分 8(2³) 组, 故组地址 3 位;

Cache 地址格式如下表所示:

组地址(3位)    组内块号(6位)  字块内地址(6位)      

主存容量为 1MB, 故主存地址为 20 位, 主存地址格式中主存字块标记位数为20-3-6= 11 位, 主存地址格式如下表所示:       

  

主存字块标记(11位)    组地址(3位)    字块内地址(6位)     

(2)设主存存取周期为 T,则Cache一主存系统的平均存取时间 T₁为:

T₁=20μs×0. 95+T×(1-0. 95)

根据题意, 希望 Cache 的加速比大于 10, 则应满足 T>10T₁, 代入上式解得,T>380μs, 即要求主存储器的存取周期应大于 380μs。

22.有3个Cache,每个Cache由4个块组成,第1个Cache采用全相联映像, 第2个Cache采用2路组相联映像,第3个Cache采用直接映像。主存由12个块组成(块号为0~11)。若程序访存的块地址流为:0、8、0、6、8,计算该程序对这3 种结构的Cache访问的缺失次数。

 解;

(1)Cache采用全相联映射,则主存中的任何块可以装入到Cache的任何块位置上。程序访存的块地址流对Cache的块位置(块号为0~3)的命中情况如下表所示。

从中看到,5次访存,命中Cache的次数为2次,缺失次数为3次。

(2)Cache采用2组相联映射方式(采用相联映射方式2)。主存按Cache大小分为3(12/4)个区,每个区分为2个组,每组分为2块。主存的组到Cache的组之间是直接映射,对应组的块之间是全相联映射,如下图所示,因此,主存块0~11与Cache块0~3之间的映射关系如下:

        ·主存块0、1、4、5、8、9只能装入到Cache块0、1(第0组)的位置上。

        ·主存块2、3、6、7、10、11只能装入到Cache块2、3(第0组)的位置上。

程序访存的块地址流对Cache的块位置(0~3)的命中情况如下表所示。

从中看到,5次访存,命中Cache的次数为2,缺失次数为3。

(3)Cache采用直接映射方式。主存按Cache大小分为3(12/4)个区,每个区分为4个块。各区的4个块与Cache的4个块是一一对应的关系,如下图所示。因此,主存块0~11与Cache块0~3之间的映射关系如下。

·主存块0、4、8只能装入到Cache块0的块位置上。

·主存块1、5、9只能装入到Cache块1的块位置上。

·主存块2、6、10只能装入到Cache块2的块位置上。

·主存块3、7、11只能装入到Cache块3的块位置上。

程序访存的块地址流对Cache的块位置(0~3)的命令情况如下表所示。

从中看到,5次访存,命中Cache的次数为0,缺失5次。

23.有一个直接映像Cache,其容量为16字,由4字组成一块,开始时Cache 为空,每次访问主存取出4字,请回答每次访问后Cache的内容及命中率。给出 的访问主存的字地址如下:1、4、8、11、20、17、18、19、9、16、4、43、19、60、61、62、 17、63。 

解;

Cache容量为16字,4字组成一块,所以共有4块,块的编号为0~3。将主存分为若干字块,每块大小为4字,这样每个字地址对应块号为j=└字地址/4┘(└ ┘表示向下取整),所以,字地址0~3为第0块,字地址4~7为第1块,依次类推。

由于采用直接映射方式,其主存块j到Cache块i的映射关系为i=j MOD 4。

每次访存后Cache块中的内容如下表所示,

从中看到,共命中10次,所以命中率=10/18=56%。

24.某页式虚拟存储器共8个页面,每页为1024个字,主存仅有4096个字, 页表如表2-8所示。

 

(1)列出会发生缺页的全部虚页号。 

(2)按以下虚地址计算主存实地址:0、3278、1023、2055、7800、4096、6800。 

25.一个段页式虚拟存储器,虚地址有2位段号、2位虚页号、11位页内偏移 地址(按字编址),主存容量为32K字,各段、页内容分布情况如表2-9所示。

(1)该主存共计有多少实页?共装入多少虚页? 

(2)当程序执行过程中遇到表2-10中情况时,写出虚地址计算出的实地址。 说明哪些会发生缺段、缺页。

解;

(1)由于虚地址有11位页内偏移地址,按字编址,那么每个页面的大小为2^11=2048字。

由于主存容量为32K字,那么主存可以划分为32*1024/2048=16个实页。

 由于表2-9中有9个虚页所在位置实际在主存中,那么共装入了9个虚页。

(2)

----------------------------------------------------------------------------------------------------------------------

其他私货多余的练习题,可看可不看:

1。

2。

3。

4。

5。

有一个Cache一主存存储层次,主存共8个块(0~7),Cache有4个块(0~3),采用组相联映像,组内块数为2块,替换算法为LRU算法。

1、画出主存、Cache空间块的映像对应关系示意图。

2、对于如下主存块地址流:0、3、5、7、0、1、3、2、7、0、6、4,画出Cache内各块的实际替换过程图,并计算此期间的Cache命中率H_{c}

答案:

1、主存—Cache空间块的映象关系如下图所示。

     

  主存的第0、1、4、5块只可映像装入或替换Cache中的第0、1块内容。主存的第2、3、6、7块只可映像装入或替换Cache中的第2、3块内容。

2、实际替换过程如下所示。

 Cache的块命中率为H_{c}=3/12=0.25。

  关注微信公众号,回复“计算机组成”获取答案的word文档下载

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值