1、计算机学科专业基础综合组成原理-存储器层次结构(三)及答案解析(总分:100.00,做题时间:90 分钟)一、B综合应用题/B(总题数:12,分数:100.00)某 8 位微型机地址码为 18 位,若使用 4K4 位的 RAM 芯片组成模块板结构的存储器,试问:(分数:15.00)(1).该机所允许的最大主存空间是多少?(分数:3.00)_(2).若每个模块板为 32K8 位,共需几个模块板?(分数:3.00)_(3).每个模块板内共有几片 RAM 芯片?(分数:3.00)_(4).共有多少片 RAM?(分数:3.00)_(5).CPU 如何选择各模块板?(分数:3.00)_有一 Cache
2、系统,字长为 16 位,主存容量为 16 字256 块,Cache 的容量为16 字8 块。采用全相联映射,求:(分数:7.50)(1).主存和 Cache 的容量各为多少字节?主存和 Cache 的字地址各为多少位?(分数:2.50)_(2).如果原先已经依次装入了 5 块的数据,问字地址为 338H 所在的主存块将装入 Cache 块的块号及在Cache 中的字地址是多少?(用二进制表示)(分数:2.50)_(3).如果块表中地址为 1 的行中标记着 36H 的主存块号标志,Cache 块号标志为 5H,则在 CPU 送来主存的字地址为 368H 时是否命中?如果命中,此时 Cache 的
3、字地址为多少?(分数:2.50)_设某机主存容量为 16MB,按字节寻址。Cache 容量为 16KB。每字块有 8 个字,每个字 32 位。设计一个 4 路组相联映射(即 Cache 每组内共有 4 个字块)的Cache 组织,要求如下:(分数:7.50)(1).画出主存地址字段中各段的位数。(分数:2.50)_(2).设 Cache 的初态为空,CPU 依次从主存的第 0,1,2,99 号单元读出 100 个字(主存依次读出一个字),并重复此次序读 8 次,问命中率是多少?(分数:2.50)_(3).若 Cache 的速度是主存速度的 6 倍,试问对于上面的情况,有 Cache 的速度是无
4、 Cache 的速度的多少倍?(保留小数点后两位)(分数:2.50)_设主存容量为 256K 字,Cache 容量为 2K 字,块长为 4 字。(分数:10.00)(1).设计 Cache 地址格式,Cache 中可装入多少块数据?(分数:2.50)_(2).在直接映射方式下,设计主存地址格式。(分数:2.50)_(3).在 4 路组相联映射方式下,设计主存地址格式。(分数:2.50)_(4).在全相联映射方式下,设计主存地址格式。(分数:2.50)_设主存容量为 1GB,虚存容量为 4GB,页面大小为 4KB。(分数:7.50)(1).写出主存地址格式。(分数:2.50)_(2).写出逻辑地
5、址格式。(分数:2.50)_(3).计算页表长度。(分数:2.50)_屏幕保护程序 Sim Aquarium 的核心就是一个紧密循环(tight loop),它可以计算出 256 个海藻(algae)的平均位置。在一台具有块大小为 16 字节(B=16)、整个大小为 1024 字节的直接映射数据缓存的机器上测量它的高速缓存性能。定义如下:1 struct algae_position2 int x;3 int y;4 ;56 struct slgae_position grid 1616;7 int total_x=0,total_y=0;8 int i, j;还有如下假设:sizeof(in
6、t)=4。grid 从存储器地址 0 开始。这个高速缓存开始时是空的。唯一的存储器访问是对数组 grid 的元素访问。变量 i、j、total_x 和total_y 存放在寄存器中。确定下面代码的高速缓存性能:1 for(i=0; i16; i+)2 for(j=0; j16; j+)3 total_x+=gridij.x;4 5 67 for(i=0; i16; i+)8 for(j=0; j16; j+)9 total_y+=gridij.y;10 11 (分数:7.50)(1).不命中率是多少?(分数:2.50)_(2).如果高速缓存有两倍大,那么不命中率是多少?(分数:2.50)_(3
7、).高速缓存大小不变情况下,通过修改代码,是否能降低不命中率?如果能,请写出具体代码,并给出新代码的不命中率。(分数:2.50)_设某计算机中,CPU 的地址总线为 A15A 0,数据总线为 D7D 0(A0、D 0为最低位)。存储器地址空间为 3000H67FFH。其中,3000H4FFFH 为 ROM 区,选用 4K2位的 ROM 芯片;5000H67FFH 为 RAM 区,选用 2K4 位的 SRAM 芯片。请问:(分数:7.50)(1).组成该存储器需要多少片 ROM 芯片和 SRAM 芯片?(分数:2.50)_(2).ROM 芯片、SRAM 芯片各需连接 CPU 的哪几根地址线和数据
8、线?(分数:2.50)_(3).应如何设置片选信号?分别写出各片选信号的逻辑表达式。(分数:2.50)_某计算机主存地址空间大小为 1GB,按字节编址。Cache 可存放 64KB 数据,主存块大小为 128 字节,采用直接映射和全写(Write-Through)方式。问:(分数:5.00)(1).主存地址如何划分?要求说明每个字段的含义、位数和在主存地址中的位置。(分数:2.50)_(2).Cache 的总容量为多少位?(分数:2.50)_有一个 16K16 位的存储器,由 1K4 位的动态 RAM 芯片构成(芯片内是6464 结构),问:(分数:7.50)(1).总共需要多少块 RAM 芯
9、片?(分数:2.50)_(2).采用异步刷新方式,如果存储单元刷新间隔不超过 2ms,那么刷新信号周期是多少?(分数:2.50)_(3).如果采用集中式刷新方式,存储器读写周期为 0.5s,存储器刷新一遍最少用多长时间?(分数:2.50)_设 RAM 存储器芯片的容量为 16K8 位,ROM 存储器芯片的容量为 32K8 位。若用这两种芯片构成 128K16 位的存储器,其中 RAM 为 64K16 位,起始地址为 0000H。请问:(分数:7.50)(1).至少需要多少位地址线?(分数:2.50)_(2).ROM 芯片和 RAM 芯片各需多少片?(分数:2.50)_(3).若存储器的地址是按
10、字连续编址的,ROM 的起始地址是多少?(分数:2.50)_某 8 位微型机的地址码为 20 位(按字节寻址),现需要为该微型机设计满足其地址空间的存储器,若使用 16K4 位的 RAM 芯片组成模块板结构的存储器,则:(分数:7.50)(1).每个模板块为 64K8 位,共需多少个模板块?(分数:2.50)_(2).每个模板块内,需多少片 16K4 位的 RAM 芯片?(分数:2.50)_(3).CPU20 位地址线为 A0A19,CPU 如何通过这些地址线选择各模板块,模块块内的芯片及芯片中的存储单元?(分数:2.50)_假设某磁盘存储器转速为 3000 转/分钟,共有 4 个盘面,每 m
11、m 有 4 个道,每道记录信息达 10KB,最小磁道直径为 200mm,共有 256 道。计算:(分数:10.00)(1).磁盘存储器的容量。(分数:2.50)_(2).最高位密度(最小磁道的位密度)和最低位密度。(分数:2.50)_(3).磁盘数据传输率。(分数:2.50)_(4).平均等待时间。(分数:2.50)_计算机学科专业基础综合组成原理-存储器层次结构(三)答案解析(总分:100.00,做题时间:90 分钟)一、B综合应用题/B(总题数:12,分数:100.00)某 8 位微型机地址码为 18 位,若使用 4K4 位的 RAM 芯片组成模块板结构的存储器,试问:(分数:15.00)
12、(1).该机所允许的最大主存空间是多少?(分数:3.00)_正确答案:(2 18=256K,则该机所允许的最大主存空间是 256K8 位(或 256KB)。)解析:(2).若每个模块板为 32K8 位,共需几个模块板?(分数:3.00)_正确答案:(模块板总数=(256K8 位)/(32K8 位)=8 块。)解析:(3).每个模块板内共有几片 RAM 芯片?(分数:3.00)_正确答案:(板内片数=(32K8 位)/(4K4 位)=82=16 片,同时字扩充和位扩充。)解析:(4).共有多少片 RAM?(分数:3.00)_正确答案:(总片数=16 片8=128 片。)解析:(5).CPU 如何
13、选择各模块板?(分数:3.00)_正确答案:(CPU 通过最高 3 位地址译码选板,次高 3 位地址译码选片。地址格式分配如下图所示。*地址格式分配注意:选片时,同时要选中用于位扩充的两片 RAM 芯片,因为要先将两片位扩展为 8 位,然后再字扩展。故而先是 12 根地址线并联,数据线串联,然后再通过 3 根地址线选定某个组合(两片一组合,共 8 个组合16 片构成一个模板块),最后模板通过 3 位来选即可。)解析:有一 Cache 系统,字长为 16 位,主存容量为 16 字256 块,Cache 的容量为16 字8 块。采用全相联映射,求:(分数:7.50)(1).主存和 Cache 的容
14、量各为多少字节?主存和 Cache 的字地址各为多少位?(分数:2.50)_正确答案:(字长为 16bit=2B,主存容量即为 16 字256 块=162B256=8196B。 Cache 容量即为 16 字8 块=162B8=256B。 主存字地址由 8 位块号和 4 位块内字地址组成,即主存字地址为 12 位。 Cache 地址由 3 位块号和 4 位块内字地址组成,即 Cache 字地址为 7 位。)解析:(2).如果原先已经依次装入了 5 块的数据,问字地址为 338H 所在的主存块将装入 Cache 块的块号及在Cache 中的字地址是多少?(用二进制表示)(分数:2.50)_正确答
15、案:(由于是全相联映射,原先已经装入 Cache 的 5 个块依次在 04 号块,因此主存的第 338H 的块将装入 Cache 的第 6 块,其块号为 101B。块内地址为 338H 对 8H 求余,即块内地址为 1000B。)解析:(3).如果块表中地址为 1 的行中标记着 36H 的主存块号标志,Cache 块号标志为 5H,则在 CPU 送来主存的字地址为 368H 时是否命中?如果命中,此时 Cache 的字地址为多少?(分数:2.50)_正确答案:(块表中地址为 1 的行中标记着 36H 的主存块号标志,则当 CPU 送来主存的字地址为 368H 时,其主存块号为 36H,所以命中
16、。此时的 Cache 字地址为 58H(5 为块号,8 为块内字地址)。 知识点回顾: 全相联允许主存中每个字块映射到 Cache 中的任何一块的位置上。 全相联简单地说就是“有位置就可以坐”,所以减少了块的冲突率,进而提高了 Cache 的利用率。)解析:设某机主存容量为 16MB,按字节寻址。Cache 容量为 16KB。每字块有 8 个字,每个字 32 位。设计一个 4 路组相联映射(即 Cache 每组内共有 4 个字块)的Cache 组织,要求如下:(分数:7.50)(1).画出主存地址字段中各段的位数。(分数:2.50)_正确答案:(根据每个字块有 8 个字,每个字 32 位,则每
17、个字块大小为 32B。根据 Cache 的容量为 16KB,字块大小为 32B,得出 Cache 共有 16K/32=512 块。又因为是 4 路组相联,即每组共有 4 个字块,所以组数=512/4=128。根据主存容量为 16MB=224B,得出主存地址位数为 24。组相联映射中,主存地址高位到低位划分为 3 部分:标记、组号、块内字地址(解答最后有附加解释),该3 个字段位数分别为块内字地址=log 2(块大小)=log 2(32)=5组号=log 2(Cache 组数)=log 2(128)=7标记=主存地址的其余位=24-5-7=12主存地址字段各段格式如图 1 所示。*图 1 主存地
18、址字段各段格式)解析:(2).设 Cache 的初态为空,CPU 依次从主存的第 0,1,2,99 号单元读出 100 个字(主存依次读出一个字),并重复此次序读 8 次,问命中率是多少?(分数:2.50)_正确答案:(由于每个字块中有 8 个字,而且初态 Cache 为空,因此 CPU 读第 0 号单元时,未命中,必须访问主存,同时将该字所在的主存块调入 Cache 第 0 组中的任一块内,接着 CPU 读 17 号单元时,均命中。同理,CPU 读第 8,16,96 号单元时均未命中。可见,CPU 在连续读第 100 个字中共有 13 次未命中,而后 7 次循环读 100 个字全部命中,命中
19、率为 (1008-13)/(1008)100%=98.375%)解析:(3).若 Cache 的速度是主存速度的 6 倍,试问对于上面的情况,有 Cache 的速度是无 Cache 的速度的多少倍?(保留小数点后两位)(分数:2.50)_正确答案:(由题意,设主存存取周期为 6t,Cache 的存取周期为 t,没有 Cache 的访问时间为 6t800,有 Cache 的访问时间为 t(800-13)+6t13,则有 Cache 和无 Cache 相比,时间开销比为t(800-13)+6t13/(6t800)。速度为其倒数,即(6t800)/t(800-13)+6t135.55 倍。可能的疑问
20、:有考生可能会对于标记位为什么是主存地址的其余位有疑问,拿本题举例,标记位的作用是为了唯一标识同一组内的块,即如果有 2“个块可以映射到该组,就要求有 n 个位来做标记位。那么这 n 位如何求呢?这道题的例子中,主存 16MB,每块 32B,即主存有 512K 块;Cache16KB,每块 32B,即 Cache 有 512 块,然后给 Cache 分组,Cache 每组是 4 块,也就是分为 128 个组。然后组相联要做的就是把这 512K 块映射到这 128 个组去,也就是一个组对应主存中的 4K 个块。为了标记这些块,肯定就需要 12 位的标记位。而映射到同一组的主存块的块号的后 7 位
21、肯定是相同的,因为当时求其分组就是对 128 求余得到的,相同的余数才会分到同一组,而这高 12 位其实就是对 128 求商得出的,这个商就可以唯一标识出同一组内的块。)解析:设主存容量为 256K 字,Cache 容量为 2K 字,块长为 4 字。(分数:10.00)(1).设计 Cache 地址格式,Cache 中可装入多少块数据?(分数:2.50)_正确答案:(Cache 容量为 2K 字,块长为 4=22字,则 Cache 块数为 2K/4=512=29。所以表示块号需要 9 位,表示块内地址需要 2 位。地址格式如图 2 所示。*图 2 Cache 地址格式分析:主存容量为 256K
22、=218字,那么所需主存地址长度为 18 位。组相联映射中,主存地址低位到高位划分为 3 部分:块内字地址、组号、标记,该 3 个字段位数分别为块内字地址=log 2(块大小)组号=log 2(Cache 组数)标记=主存地址的其余位)解析:(2).在直接映射方式下,设计主存地址格式。(分数:2.50)_正确答案:(直接映射方式可以看作组相联映射中的一种极端情况,即一个块就是一个组。所以组数=块数=512,则块内字地址=log 2(块大小)=log 2(4)=2组号=log 2(Cache 组数)=log 2(512)=9标记=主存地址的其余位=18-9-2=7直接映射方式地址格式如下图 3
23、所示。*图 3 直接映射方式地址格式)解析:(3).在 4 路组相联映射方式下,设计主存地址格式。(分数:2.50)_正确答案:(4 路组相联,即每组 4 块,又由 1)知一共有 512 块,则组数=512/4=128。那么块内字地址=log 2(块大小)=log 2(4)=2组号=log 2(Cache 组数)=log 2(128)=7标记=主存地址的其余位=18-7-2=94 路组相联地址格式如图 4 所示。*图 4 4 路组相联接地址格式)解析:(4).在全相联映射方式下,设计主存地址格式。(分数:2.50)_正确答案:(全相联映射方式也可以看成组相联映射中的一种极端情况,即只有一个组。
24、则块内字地址=log 2(块大小)=log 2(4)=2组号=log 2(Cache 组数)=log 2(1)=0标记=主存地址的其余位=18-0-2=16全相联映射方式地址格式如图 5 所示。*图 5 全相联映射方式地址格式)解析:设主存容量为 1GB,虚存容量为 4GB,页面大小为 4KB。(分数:7.50)(1).写出主存地址格式。(分数:2.50)_正确答案:(主存地址格式如图 1 所示。*图 1 主存地址格式)解析:(2).写出逻辑地址格式。(分数:2.50)_正确答案:(逻辑地址格式如图 2 所示。*图 2 逻辑地址格式)解析:(3).计算页表长度。(分数:2.50)_正确答案:(
25、页表长度为 220=2M,即有 2M 个页面项。)解析:屏幕保护程序 Sim Aquarium 的核心就是一个紧密循环(tight loop),它可以计算出 256 个海藻(algae)的平均位置。在一台具有块大小为 16 字节(B=16)、整个大小为 1024 字节的直接映射数据缓存的机器上测量它的高速缓存性能。定义如下:1 struct algae_position2 int x;3 int y;4 ;56 struct slgae_position grid 1616;7 int total_x=0,total_y=0;8 int i, j;还有如下假设:sizeof(int)=4。gr
26、id 从存储器地址 0 开始。这个高速缓存开始时是空的。唯一的存储器访问是对数组 grid 的元素访问。变量 i、j、total_x 和total_y 存放在寄存器中。确定下面代码的高速缓存性能:1 for(i=0; i16; i+)2 for(j=0; j16; j+)3 total_x+=gridij.x;4 5 67 for(i=0; i16; i+)8 for(j=0; j16; j+)9 total_y+=gridij.y;10 11 (分数:7.50)(1).不命中率是多少?(分数:2.50)_正确答案:(块大小为 16B,高速缓存大小为 1024B,所以高速缓存一共分为 64 个
27、块。 grid 的每个algae_position 结构,包含两个 int 变量,共 8B,即每个 16B 的高速缓存行包含着两个连续的algae_position 结构。每个循环按照存储器顺序访问这些结构,每次读一个整数元素。 所以,第一个for 语句的每个循环的模式就是不命中命中不命中命中,以此类推。所以对于这个问题,不必实际列举出读和不命中的总数,就能预测出不命中率。 又 grid 数组在主存中占用 128 个块,当前 64 个块换入到高速缓存后,第 65 个块会将其第 1 个块驱逐出高速缓存。 所以,第二个 for 语句访问 grid00时,grid 已不在高速缓存中,所以其循环的模式
28、还是不命中命中不命中命中。 综上所述,不命中率为 256/512=50%。)解析:(2).如果高速缓存有两倍大,那么不命中率是多少?(分数:2.50)_正确答案:(如果高速缓存有两倍大,第一个 for 语句跟 1)相同(128 次不命中),但第二个 for 语句全部命中。因为高速缓存能够保存整个 grid 数组,第二个 for 语句开始循环时,这个 grid 数组都已经在高速缓存中了,所以全部命中。 综上所述,不命中率为 128/512=25%。)解析:(3).高速缓存大小不变情况下,通过修改代码,是否能降低不命中率?如果能,请写出具体代码,并给出新代码的不命中率。(分数:2.50)_正确答案
29、:(通过修改代码可以降低不命中率。因为两个 for 循环的步长为 2,且一个 algae_position 结构拥有两个 int 变量,但每个 for 循环却只访问其中的一个 int 变量。正确的代码应该是步长为 1 的。代码如下: 1 for(i=0; i16; i+) 2 for(j=0; j16; j+) 3 total_x+=gridij.x; 4 total_y+=gridij.y; 5 6 for 语句的循环模式就是不命中、命中、命中、命中,以此类推,所以不命中率为 128/512=25%。)解析:设某计算机中,CPU 的地址总线为 A15A 0,数据总线为 D7D 0(A0、D
30、0为最低位)。存储器地址空间为 3000H67FFH。其中,3000H4FFFH 为 ROM 区,选用 4K2位的 ROM 芯片;5000H67FFH 为 RAM 区,选用 2K4 位的 SRAM 芯片。请问:(分数:7.50)(1).组成该存储器需要多少片 ROM 芯片和 SRAM 芯片?(分数:2.50)_正确答案:(根据各个存储区所要求的容量和选定的存储芯片的容量,就可以计算出各种芯片的数目,即总片数=总容量/每片的容量。 将多个芯片组合起来常采用位扩展法、字扩展法、字和位同时扩展法。位扩展是指只在位数方向扩展(加大字长),而芯片的字数和存储器的字数是一致的;字扩展是指仅在字数方向扩展,而位数不变,字扩展将芯片的地址线、数据线、读写线并联,由片选信号来区分各个芯片。本题需采用字和位同时扩展,即在字数方向和位数方向上同时扩展。 已知数据总线为 8 位,ROM 区为3000H4FFFFH,故 ROM 的容量为 8K8 位,ROM 芯片数=(8K8 位)/(4K2 位)=8 片(分为 2 组,每组 4片)。RAM 区为 5000H67FFH,故 RAM 的容量为 6K8 位,SRAM 芯片数=(6K8 位)/(2K4 位)=6 片(分为3 组,每组 2 片)。)解析:(2).ROM 芯片、SRAM 芯片各需连接 CPU 的哪几根地址线和数据线?(分数:2.50)_