您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页计算机学科专业基础综合组成原理-存储器层次结构(三)

计算机学科专业基础综合组成原理-存储器层次结构(三)

来源:华佗小知识
计算机学科专业基础综合组成原理-存储器层次结构(三)

(总分:100.00,做题时间:90分钟)

一、{{B}}综合应用题{{/B}}(总题数:12,分数:100.00)

某8位微型机地址码为18位,若使用4K×4位的RAM芯片组成模块板结构的存储器,试问:(分数:15.00)

(1).该机所允许的最大主存空间是多少?(分数:3.00)

__________________________________________________________________________________________ 正确答案:(2=256K,则该机所允许的最大主存空间是256K×8位(或256KB)。) 解析:

(2).若每个模块板为32K×8位,共需几个模块板?(分数:3.00)

__________________________________________________________________________________________ 正确答案:(模块板总数=(256K×8位)/(32K×8位)=8块。) 解析:

(3).每个模块板内共有几片RAM芯片?(分数:3.00)

__________________________________________________________________________________________ 正确答案:(板内片数=(32K×8位)/(4K×4位)=8×2=16片,同时字扩充和位扩充。) 解析:

(4).共有多少片RAM?(分数:3.00)

__________________________________________________________________________________________ 正确答案:(总片数=16片×8=128片。) 解析:

(5).CPU如何选择各模块板?(分数:3.00)

__________________________________________________________________________________________ 正确答案:(CPU通过最高3位地址译码选板,次高3位地址译码选片。地址格式分配如下图所示。

[*]

地址格式分配

注意:选片时,同时要选中用于位扩充的两片RAM芯片,因为要先将两片位扩展为8位,然后再字扩展。故而先是12根地址线并联,数据线串联,然后再通过3根地址线选定某个组合(两片一组合,共8个组合16片构成一个模板块),最后模板通过3位来选即可。) 解析:

18

有一Cache系统,字长为16位,主存容量为16字×256块,Cache的容量为16字×8块。采用全相联映射,求:(分数:7.50)

(1).主存和Cache的容量各为多少字节?主存和Cache的字地址各为多少位?(分数:2.50)

__________________________________________________________________________________________ 正确答案:(字长为16bit=2B,主存容量即为16字×256块=16×2B×256=8196B。 Cache容量即为16字×8块=16×2B×8=256B。 主存字地址由8位块号和4位块内字地址组成,即主存字地址为12位。 Cache地址由3位块号和4位块内字地址组成,即Cache字地址为7位。) 解析:

(2).如果原先已经依次装入了5块的数据,问字地址为338H所在的主存块将装入Cache块的块号及在Cache中的字地址是多少?(用二进制表示)(分数:2.50)

__________________________________________________________________________________________ 正确答案:(由于是全相联映射,原先已经装入Cache的5个块依次在0~4号块,因此主存的第338H的块将装入Cache的第6块,其块号为101B。块内地址为338H对8H求余,即块内地址为1000B。)

解析:

(3).如果块表中地址为1的行中标记着36H的主存块号标志,Cache块号标志为5H,则在CPU送来主存的字地址为368H时是否命中?如果命中,此时Cache的字地址为多少?(分数:2.50)

__________________________________________________________________________________________ 正确答案:(块表中地址为1的行中标记着36H的主存块号标志,则当CPU送来主存的字地址为368H时,其主存块号为36H,所以命中。此时的Cache字地址为58H(5为块号,8为块内字地址)。 知识点回顾: ①全相联允许主存中每个字块映射到Cache中的任何一块的位置上。 ②全相联简单地说就是“有位置就可以坐”,所以减少了块的冲突率,进而提高了Cache的利用率。) 解析:

设某机主存容量为16MB,按字节寻址。Cache容量为16KB。每字块有8个字,每个字32位。设计一个4路组相联映射(即Cache每组内共有4个字块)的Cache组织,要求如下:(分数:7.50)

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

__________________________________________________________________________________________ 正确答案:(根据每个字块有8个字,每个字32位,则每个字块大小为32B。

根据Cache的容量为16KB,字块大小为32B,得出Cache共有16K/32=512块。又因为是4路组相联,即每组共有4个字块,所以组数=512/4=128。

根据主存容量为16MB=2B,得出主存地址位数为24。

组相联映射中,主存地址高位到低位划分为3部分:标记、组号、块内字地址(解答最后有附加解释),该3个字段位数分别为

块内字地址=log2(块大小)=log2(32)=5 组号=log2(Cache组数)=log2(128)=7 标记=主存地址的其余位=24-5-7=12 主存地址字段各段格式如图1所示。

[*]

图1 主存地址字段各段格式

) 解析:

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

__________________________________________________________________________________________ 正确答案:(由于每个字块中有8个字,而且初态Cache为空,因此CPU读第0号单元时,未命中,必须访问主存,同时将该字所在的主存块调入Cache第0组中的任一块内,接着CPU读1~7号单元时,均命中。同理,CPU读第8,16,…,96号单元时均未命中。可见,CPU在连续读第100个字有13次未命中,而后7次循环读100个字全部命中,命中率为 (100×8-13)/(100×8)×100%=98.375%) 解析:

(3).若Cache的速度是主存速度的6倍,试问对于上面的情况,有Cache的速度是无Cache的速度的多少倍?(保留小数点后两位)(分数:2.50)

__________________________________________________________________________________________ 正确答案:(由题意,设主存存取周期为6t,Cache的存取周期为t,没有Cache的访问时间为6t×800,有Cache的访问时间为t×(800-13)+6t×13,则有Cache和无Cache相比,时间开销比为

[t×(800-13)+6t×13]/(6t×800)。速度为其倒数,即(6t×800)/[t×(800-13)+6t×13]≈5.55倍。 可能的疑问:

有考生可能会对于标记位为什么是主存地址的其余位有疑问,拿本题举例,标记位的作用是为了唯一标识同一组内的块,即如果有2“个块可以映射到该组,就要求有n个位来做标记位。那么这n位如何求呢?这道题的例子中,主存16MB,每块32B,即主存有512K块;Cache16KB,每块32B,即Cache有512块,然后给Cache分组,Cache每组是4块,也就是分为128个组。然后组相联要做的就是把这512K块映射到这

24

128个组去,也就是一个组对应主存中的4K个块。为了标记这些块,肯定就需要12位的标记位。而映射到同一组的主存块的块号的后7位肯定是相同的,因为当时求其分组就是对128求余得到的,相同的余数才会分到同一组,而这高12位其实就是对128求商得出的,这个商就可以唯一标识出同一组内的块。) 解析:

设主存容量为256K字,Cache容量为2K字,块长为4字。(分数:10.00)

(1).设计Cache地址格式,Cache中可装入多少块数据?(分数:2.50)

__________________________________________________________________________________________ 正确答案:(Cache容量为2K字,块长为4=2字,则Cache块数为2K/4=512=2。所以表示块号需要9位,表示块内地址需要2位。地址格式如图2所示。

[*]

图2 Cache地址格式

分析:主存容量为256K=2字,那么所需主存地址长度为18位。

组相联映射中,主存地址低位到高位划分为3部分:块内字地址、组号、标记,该3个字段位数分别为 块内字地址=log2(块大小) 组号=log2(Cache组数) 标记=主存地址的其余位) 解析:

(2).在直接映射方式下,设计主存地址格式。(分数:2.50)

__________________________________________________________________________________________ 正确答案:(直接映射方式可以看作组相联映射中的一种极端情况,即一个块就是一个组。所以组数=块数=512,则

块内字地址=log2(块大小)=log2(4)=2 组号=log2(Cache组数)=log2(512)=9 标记=主存地址的其余位=18-9-2=7 直接映射方式地址格式如下图3所示。

[*]

图3 直接映射方式地址格式

) 解析:

(3).在4路组相联映射方式下,设计主存地址格式。(分数:2.50)

__________________________________________________________________________________________ 正确答案:(4路组相联,即每组4块,又由1)知一共有512块,则组数=512/4=128。那么 块内字地址=log2(块大小)=log2(4)=2 组号=log2(Cache组数)=log2(128)=7 标记=主存地址的其余位=18-7-2=9 4路组相联地址格式如图4所示。

[*]

图4 4路组相联接地址格式

) 解析:

(4).在全相联映射方式下,设计主存地址格式。(分数:2.50)

__________________________________________________________________________________________ 正确答案:(全相联映射方式也可以看成组相联映射中的一种极端情况,即只有一个组。则 块内字地址=log2(块大小)=log2(4)=2 组号=log2(Cache组数)=log2(1)=0

18

2

9

标记=主存地址的其余位=18-0-2=16 全相联映射方式地址格式如图5所示。

[*]

图5 全相联映射方式地址格式

) 解析:

设主存容量为1GB,虚存容量为4GB,页面大小为4KB。(分数:7.50)

(1).写出主存地址格式。(分数:2.50)

__________________________________________________________________________________________ 正确答案:(主存地址格式如图1所示。

[*]

图1 主存地址格式

) 解析:

(2).写出逻辑地址格式。(分数:2.50)

__________________________________________________________________________________________ 正确答案:(逻辑地址格式如图2所示。

[*]

图2 逻辑地址格式

) 解析:

(3).计算页表长度。(分数:2.50)

__________________________________________________________________________________________ 正确答案:(页表长度为2=2M,即有2M个页面项。) 解析:

20

屏幕保护程序Sim Aquarium的核心就是一个紧密循环(tight loop),它可以计算出256个海藻(algae)的平均位置。在一台具有块大小为16字节(B=16)、整个大小为1024字节的直接映射数据缓存的机器上测量它的高速缓存性能。定义如下:

1 struct algae_position{ 2 int x; 3 int y; 4 }; 5

6 struct slgae_position grid [16][16]; 7 int total_x=0,total_y=0; 8 int i, j; 还有如下假设: ·sizeof(int)==4。

·grid从存储器地址0开始。 ·这个高速缓存开始时是空的。

·唯一的存储器访问是对数组grid的元素访问。变量i、j、total_x和total_y存放在寄存器中。

确定下面代码的高速缓存性能: 1 for(i=0; i<16; i++){ 2 for(j=0; j<16; j++){ 3 total_x+=grid[i][j].x; 4 } 5 } 6

7 for(i=0; i<16; i++){ 8 for(j=0; j<16; j++){ 9 total_y+=grid[i][j].y; 10 }

11 }(分数:7.50)

(1).不命中率是多少?(分数:2.50)

__________________________________________________________________________________________ 正确答案:(块大小为16B,高速缓存大小为1024B,所以高速缓存一共分为个块。 grid的每个algae_position结构,包含两个int变量,共8B,即每个16B的高速缓存行包含着两个连续的

algae_position结构。每个循环按照存储器顺序访问这些结构,每次读一个整数元素。 所以,第一个for语句的每个循环的模式就是不命中→命中→不命中→命中,以此类推。所以对于这个问题,不必实际列举出读和不命中的总数,就能预测出不命中率。 又grid数组在主存中占用128个块,当前个块换入到高速缓存后,第65个块会将其第1个块驱逐出高速缓存。 所以,第二个for语句访问grid[0][0]时,grid已不在高速缓存中,所以其循环的模式还是不命中→命中→不命中→命中。 综上所述,不命中率为256/512=50%。) 解析:

(2).如果高速缓存有两倍大,那么不命中率是多少?(分数:2.50)

__________________________________________________________________________________________ 正确答案:(如果高速缓存有两倍大,第一个for语句跟1)相同(128次不命中),但第二个for语句全部命中。因为高速缓存能够保存整个grid数组,第二个for语句开始循环时,这个grid数组都已经在高速缓存中了,所以全部命中。 综上所述,不命中率为128/512=25%。) 解析:

(3).高速缓存大小不变情况下,通过修改代码,是否能降低不命中率?如果能,请写出具体代码,并给出新代码的不命中率。(分数:2.50)

__________________________________________________________________________________________ 正确答案:(通过修改代码可以降低不命中率。因为两个for循环的步长为2,且一个algae_position结构拥有两个int变量,但每个for循环却只访问其中的一个int变量。正确的代码应该是步长为1的。代码如下: 1 for(i=0; i<16; i++){ 2 for(j=0; j<16; j++){ 3 total_x+=grid[i][j].x; 4

total_y+=grid[i][j].y; 5 } 6 } for语句的循环模式就是不命中、命中、命中、命中,以此类推,所以不命中率为128/512=25%。) 解析:

设某计算机中,CPU的地址总线为A15~A0,数据总线为D7~D0(A0、D0为最低位)。存储器地址空间为3000H~67FFH。其中,3000H~4FFFH为ROM区,选用4K×2位的ROM芯片;5000H~67FFH为RAM区,选用2K×4位的SRAM芯片。请问:(分

数:7.50)

(1).组成该存储器需要多少片ROM芯片和SRAM芯片?(分数:2.50)

__________________________________________________________________________________________ 正确答案:(根据各个存储区所要求的容量和选定的存储芯片的容量,就可以计算出各种芯片的数目,即总片数=总容量/每片的容量。 将多个芯片组合起来常采用位扩展法、字扩展法、字和位同时扩展法。位扩展是指只在位数方向扩展(加大字长),而芯片的字数和存储器的字数是一致的;字扩展是指仅在字数方向扩展,而位数不变,字扩展将芯片的地址线、数据线、读写线并联,由片选信号来区分各个芯片。本题需采用字和位同时扩展,即在字数方向和位数方向上同时扩展。 已知数据总线为8位,ROM区为3000H~4FFFFH,故ROM的容量为8K×8位,ROM芯片数=(8K×8位)/(4K×2位)=8片(分为2组,每组4片)。RAM区为5000H~67FFH,故RAM的容量为6K×8位,SRAM芯片数=(6K×8位)/(2K×4位)=6片(分为3组,每组2片)。) 解析:

(2).ROM芯片、SRAM芯片各需连接CPU的哪几根地址线和数据线?(分数:2.50)

__________________________________________________________________________________________ 正确答案:(ROM芯片的容量为4K×2位,具有12根地址线和两根数据线,因此ROM芯片的地址线连接CPU地址线的低12位A11~A0,每组ROM内的4片芯片分别连接CPU数据线的D7D6、D5D4、D3D2、D1D0。SRAM芯片的容量为2K×4位,具有11根地址线、4根数据线,因此SRAM芯片的地址线连接CPU地址线的低11位A10~A0,每组SRAM内的2片芯片分别连接CPU数据线的D7D6D5D4、D3D2D1D0。) 解析:

(3).应如何设置片选信号?分别写出各片选信号的逻辑表达式。(分数:2.50)

__________________________________________________________________________________________ 正确答案:(ROM区有2个片选信号,RAM区有3个片选信号,共需5个片选信号,根据地址分配的要求,各片选信号的逻辑表达式为 [*]) 解析:

某计算机主存地址空间大小为1GB,按字节编址。Cache可存放KB数据,主存块大小为128字节,采用直接映射和全写(Write-Through)方式。问:(分数:5.00)

(1).主存地址如何划分?要求说明每个字段的含义、位数和在主存地址中的位置。(分数:2.50) __________________________________________________________________________________________ 正确答案:(采用直接映射方式,主存地址的划分如下图1所示。

[*]

图1 主存地址的划分(一)

由于按字节编址,主存地址空间大小为1GB,主存单元数为1G,所以地址位数为log2(1G)=30。 直接映射方式中,组数等于Cache的行数=KB/128B=512,那么组号位数=log2(512)=9。 由于按字节编址,主存块的单元数=128,因此块内地址位数=log2(128)=7。 标记位数有=30-9-7=14位。综上所述,主存地址的划分如图2所示。

[*]

图2 主存地址的划分(二)

) 解析:

(2).Cache的总容量为多少位?(分数:2.50)

__________________________________________________________________________________________ 正确答案:(因为直接映射不考虑替换算法,所以Cache行中没有用于替换的控制位。又因为采用全写方式,所以,Cache行中也没有修改位,即每个Cache行中包含1位有效位、14位标记位和128B的数据,因此Cache的总容量=512×(1bit+14bit+128×8bit)=519.5Kbit。) 解析:

有一个16K×16位的存储器,由1K×4位的动态RAM芯片构成(芯片内是×结构),问:(分数:7.50)

(1).总共需要多少块RAM芯片?(分数:2.50)

__________________________________________________________________________________________ 正确答案:(总共需要16K×16位/(1K×4)=块1K×4位的动态RAM芯片。) 解析:

(2).采用异步刷新方式,如果存储单元刷新间隔不超过2ms,那么刷新信号周期是多少?(分数:2.50) __________________________________________________________________________________________ 正确答案:(采用异步刷新方式,在2ms时间分散地把芯片行刷新一遍,故刷新信号的时间间隔为2ms/=31.25μs,即可取刷新信号周期为30μs。) 解析:

(3).如果采用集中式刷新方式,存储器读写周期为0.5μs,存储器刷新一遍最少用多长时间?(分数:2.50) __________________________________________________________________________________________ 正确答案:(如果采用集中式刷新方式,假定T为读/写周期,如组集中进行刷新,则所需刷新时间为T=×0.5μs=32μs。) 解析:

设RAM存储器芯片的容量为16K×8位,ROM存储器芯片的容量为32K×8位。若用这两种芯片构成128K×16位的存储器,其中RAM为K×16位,起始地址为0000H。请问:(分数:7.50)

(1).至少需要多少位地址线?(分数:2.50)

__________________________________________________________________________________________ 正确答案:(地址线位数=log2(总存储单元数)=log2(128K)=log2(2)=17,所以至少需要17位地址线。) 解析:

(2).ROM芯片和RAM芯片各需多少片?(分数:2.50)

__________________________________________________________________________________________ 正确答案:(RAM芯片为K×16位,则所需的RAM芯片数=(K×16位)/(16K×8位)=8片 ROM的容量=总容量-RAM容量=128K×16位-K×16位=K×16位 则所需的ROM芯片数为(K×16位)/(32K×8位)=4片。) 解析:

(3).若存储器的地址是按字连续编址的,ROM的起始地址是多少?(分数:2.50)

__________________________________________________________________________________________ 正确答案:(因为RAM的起始地址为0000H,共有K个存储单元,则RAM地址范围为0000H E3FFH。那么ROM的起始地址是E400H。) 解析:

17

某8位微型机的地址码为20位(按字节寻址),现需要为该微型机设计满足其地址空间的存储器,若使用16K×4位的RAM芯片组成模块板结构的存储器,则:

(分数:7.50)

(1).每个模板块为K×8位,共需多少个模板块?(分数:2.50)

__________________________________________________________________________________________ 正确答案:(由于主存地址给定20位,则最大存储单元数为2,又按字节寻址,故最大的存储容量为2B=1MB。 每个模板为K×8位=KB,则需要模板块数=1MB/KB=16块模板。) 解析:

(2).每个模板块内,需多少片16K×4位的RAM芯片?(分数:2.50)

__________________________________________________________________________________________ 正确答案:(每个模板块的存储容量为KB,则需要的RAM芯片数=KB/(16K×4位)=8块RAM芯片。) 解析:

(3).CPU20位地址线为A0~A19,CPU如何通过这些地址线选择各模板块,模块块内的芯片及芯片中的存储单元?(分数:2.50)

__________________________________________________________________________________________ 正确答案:(在每个模板块内,每两片RAM芯片为并联的方式,构成16K×8位的存储体(两片RAM芯片),

20

20

该存储体内部地址需要14位,CPU通过A0~A13这14位地址线用于该存储体(两片RAM芯片)的存储单元的选择。 又用4组这样的存储体构成一个K×8位的模板块。CPU通过A14、A15用于存储体(两片RAM芯片)的选择。 最后需要16块模板块,来组成1MB的存储器。CPU通过A16~A19通过4-16译码器产生片选信号用于模块的选择。) 解析:

假设某磁盘存储器转速为3000转/分钟,共有4个盘面,每mm有4个道,每道记录信息达10KB,最小磁道直径为200mm,共有256道。计算:(分数:10.00)

(1).磁盘存储器的容量。(分数:2.50)

__________________________________________________________________________________________ 正确答案:(已知每道记录信息容量为10KB,每个记录面信息容量为10KB×256=2560KB,又共有4个盘面,那么磁盘存储器的总容量=2560KB×4=10240KB=10MB。) 解析:

(2).最高位密度(最小磁道的位密度)和最低位密度。(分数:2.50)

__________________________________________________________________________________________ 正确答案:(最高位密度按最小磁道半径100mm计算, D高=10KB/(2π×100mm)=16.3B/mm。

最低位密度按最大磁道半径100mm+256/4mm=1mm。 D低=10KB/(2π×1mm)=9.94B/mm。) 解析:

(3).磁盘数据传输率。(分数:2.50)

__________________________________________________________________________________________ 正确答案:(磁盘存储器转速为3000转/分钟,不妨假设磁盘存储器传输一分钟,传输的数据量为10KB×3000=30000KB,所花费时间为60s。那么数据传输率为30000KB/60s=500KB/s。) 解析:

(4).平均等待时间。(分数:2.50)

__________________________________________________________________________________________ 正确答案:(平均等待时间,就是磁盘转半圈的时间。 磁盘转一圈需要60s/3000=20ms,转半圈就是10ms。) 解析:

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务