跳到主要内容

408模拟选择题 · 计算机组成原理 · 第3章 存储系统

3.1 存储器概述

3.1.1 存储器的分类

  1. 【竟成·模拟七-16】 下列存储器中,属于易失性存储器的是()。
A. Cache    B. EPROM    C. Flash Memory    D. CD-ROM
查看答案与解析

答案: A

解析: 易失性存储器是指断电后所存信息会丢失的存储器。Cache 通常采用 SRAM 实现,SRAM 需要持续供电维持存储内容,断电后数据消失,因此属于易失性存储器。

  • EPROM 属于可擦除可编程只读存储器,断电后信息仍可保存。
  • Flash Memory 属于非易失性半导体存储器。
  • CD-ROM 属于光盘只读存储器,也具有非易失性。

所以选择 A。


3.2 主存储器

3.2.1 半导体随机存取存储器

  1. 【竟成·模拟四-15】 下列同时具有行地址选通和列地址选通引脚的存储器芯片是()。
A. EPROM    B. SRAM    C. SDRAM    D. Flash
查看答案与解析

答案: C

解析: DRAM 为减少地址引脚数量,通常将行地址和列地址分时复用同一组地址引脚,并分别使用:

  • 行地址选通信号 RAS;
  • 列地址选通信号 CAS。

SDRAM 属于同步动态随机存取存储器,本质上仍是 DRAM,具有行地址选通和列地址选通信号,因此选择 C。

SRAM 通常不采用行、列地址分时复用,不需要 RAS/CAS;EPROM 和 Flash 也不以这种 DRAM 行列选通方式工作。


3.2.3 多模块存储器

  1. 【王道·卷八-Q15】 有一个八体低位交叉存储器,每个存储体的容量为 256M×64\displaystyle 256M\times64 位,若每个存储体的存储周期为 80ns\displaystyle 80ns,采用轮流启动的方式,则该存储器能提供的最大带宽是( )。
A. 426.67MB/s    B. 800MB/s    C. 213.33MB/s    D. 400MB/s
查看答案与解析

答案: B

解析: 八体低位交叉存储器采用轮流启动时,相邻存储体的启动时间间隔为:

Δt=80ns8=10ns\displaystyle \Delta t=\dfrac{80ns}{8}=10ns

每次访问一个存储体可传送 64 位,即:

64=8B\displaystyle 64\text{位}=8B

稳定流水传输时,每 10ns\displaystyle 10ns 可输出 8B,因此最大带宽为:

8B10ns=8×108B/s=800MB/s\displaystyle \dfrac{8B}{10ns}=8\times10^8B/s=800MB/s

所以选择 B。

也可用公式:

Bmax=mWT=8×8B80ns=800MB/s\displaystyle B_{\max}=\dfrac{mW}{T}=\dfrac{8\times8B}{80ns}=800MB/s

其中 m=8\displaystyle m=8 为存储体数,W=8B\displaystyle W=8B 为每体一次传输的数据量,T=80ns\displaystyle T=80ns 为存储周期。


  1. 【竟成·模拟一-16】 某计算机采用4体低位交叉编址存储器。存取周期T=80ns,总线启动访问间隔Δt=20ns。CPU访问的主存地址序列为0,3,9,17,2,4,8,67,51,10。该序列访问过程中,若发生体冲突则后续访问都要随之延后,则发生体冲突的总次数是()。
A. 1    B. 2    C. 3    D. 4
查看答案与解析

答案: C

解析: 4 体低位交叉编址时,主存地址对应的存储体号为:

体号=地址mod4\displaystyle \text{体号}=\text{地址}\bmod 4

因此地址序列对应的存储体序列为:

0,3,1,1,2,0,0,3,3,2\displaystyle 0,3,1,1,2,0,0,3,3,2

每个存储体启动一次后,需要经过完整存取周期 80ns\displaystyle 80ns 才能再次启动。总线原本每隔 20ns\displaystyle 20ns 发起一次访问;若出现冲突,则本次及后续访问整体延后。

逐次分析如下:

  1. 地址 0、3、9 分别访问体 0、3、1,启动时刻为 0ns\displaystyle 0ns20ns\displaystyle 20ns40ns\displaystyle 40ns,均无冲突。
  2. 地址 17 仍访问体 1,原计划在 60ns\displaystyle 60ns 启动,但体 1 从 40ns\displaystyle 40ns 起需忙到 120ns\displaystyle 120ns,发生第 1 次冲突,本次延后到 120ns\displaystyle 120ns
  3. 后续地址 2、4 分别访问体 2、0,无冲突。
  4. 地址 8 再次访问体 0,原计划启动时体 0 尚未完成上一访问,发生第 2 次冲突。
  5. 地址 67 访问体 3,无冲突;地址 51 又访问体 3,发生第 3 次冲突。
  6. 最后地址 10 访问体 2,无冲突。

因此总共发生 3 次体冲突,选择 C。


  1. 【竟成·模拟二-15】 某八体低位交叉存储器由容量为128M×32位的存储体组成,每个存储体的存储周期为800ns,存取时间为100ns,则该存储器提供的最大带宽为()。
A. 40MB/s    B. 320MB/s    C. 5120TB/s    D. 5MB/s
查看答案与解析

答案: A

解析: 八体低位交叉存储器在理想情况下可轮流启动各存储体,相邻两次启动的最短间隔为:

Δt=800ns8=100ns\displaystyle \Delta t=\dfrac{800ns}{8}=100ns

这与题给存取时间 100ns\displaystyle 100ns 一致,说明可以形成连续流水访问。

每次传送的数据宽度为 32 位,即:

32=4B\displaystyle 32\text{位}=4B

因此最大带宽为:

Bmax=4B100ns=4×107B/s=40MB/s\displaystyle B_{\max}=\dfrac{4B}{100ns}=4\times10^7B/s=40MB/s

所以选择 A。

容量 128M×32\displaystyle 128M\times32 位只说明每个存储体的存储规模,并不直接决定连续传输带宽。


  1. 【竟成·模拟七-17】 一个八体低位交叉存储器,每个存储体的容量为256M×64位,若每个体的存储周期为80ns,那么该存储器能提供的最大带宽是()。
A. 426.67MB/s    B. 800MB/s    C. 213.33MB/s    D. 400MB/s
查看答案与解析

答案: B

解析: 八个存储体轮流启动时,相邻两次启动的时间间隔为:

Δt=80ns8=10ns\displaystyle \Delta t=\dfrac{80ns}{8}=10ns

每个存储体一次传送 64 位,即 8B,因此最大带宽为:

Bmax=8B10ns=8×108B/s=800MB/s\displaystyle B_{\max}=\dfrac{8B}{10ns}=8\times10^8B/s=800MB/s

也可直接使用:

Bmax=mWT=8×8B80ns=800MB/s\displaystyle B_{\max}=\dfrac{mW}{T}=\dfrac{8\times8B}{80ns}=800MB/s

所以选择 B。


3.3 主存储器与CPU的连接

3.3.2 主存容量的扩展

  1. 【王道·卷一-Q15】 某DDR3 SDRAM芯片内部的核心频率为133.25MHz,通过芯片内部的 I/O\displaystyle I/O 缓冲可以实现预取功能,芯片总线上每秒传输数据的次数达到芯片内部核心频率的8倍。存储器总线在时钟信号CLK的上升沿与下降沿共进行两次数据传输,每次传输8B,则下列说法中错误的是( )。
A. 芯片内部的I/O缓冲采用8位预取技术    B. 存储器总线每秒传输 1066M\displaystyle 1066M 次数据
C. 存储器总线的时钟频率为 1066MHz\displaystyle 1066\mathrm{MHz}    D. 存储器总线的带宽约为 8.5GB/s\displaystyle 8.5GB/s
查看答案与解析

答案: C

解析: 芯片总线的数据传输率为核心频率的 8 倍:

133.25MHz×8=1066MT/s\displaystyle 133.25MHz\times8=1066MT/s

因而:

  • I/O 缓冲采用 8n 预取,A 正确;
  • 每秒传输约 1066M\displaystyle 1066M 次数据,B 正确。

DDR 在时钟上升沿和下降沿各传输一次数据,因此每个总线时钟周期完成两次传输。总线实际时钟频率为:

fCLK=1066MHz2=533MHz\displaystyle f_{CLK}=\dfrac{1066MHz}{2}=533MHz

所以 C 将“有效数据传输率”误写成“时钟频率”,错误。

每次传输 8B,带宽为:

1066×106×8B/s8.528GB/s\displaystyle 1066\times10^6\times8B/s\approx8.528GB/s

约为 8.5GB/s\displaystyle 8.5GB/s,D 正确。因此选择 C。


  1. 【王道·卷一-Q16】 假定用若干 8K×8\displaystyle 8K\times 8 位的芯片组成一个 32K×32\displaystyle 32K\times 32 位的存储器,存储字长为32位,内存按字编址,则地址 41F0H\displaystyle 41F0H 所在芯片的最大地址是( )。
A. 0000H    B. 4FFFH    C. 5FFFH    D. 7FFFH
查看答案与解析

答案: C

解析: 目标存储器为 32K×32\displaystyle 32K\times32 位,单片为 8K×8\displaystyle 8K\times8 位:

  • 位扩展倍数为 32/8=4\displaystyle 32/8=4,即每组需 4 片并行组成 32 位字长;
  • 字扩展倍数为 32K/8K=4\displaystyle 32K/8K=4,共形成 4 个地址区间。

每个地址区间包含 8K=213=2000H\displaystyle 8K=2^{13}=2000H 个字地址,因此 4 组地址范围依次为:

0000H1FFFH2000H3FFFH4000H5FFFH6000H7FFFH\displaystyle \begin{aligned} &0000H\sim1FFFH\\ &2000H\sim3FFFH\\ &4000H\sim5FFFH\\ &6000H\sim7FFFH \end{aligned}

地址 41F0H\displaystyle 41F0H 落在第三组 4000H5FFFH\displaystyle 4000H\sim5FFFH 中,因此与该地址对应的芯片组的最大地址为 5FFFH\displaystyle 5FFFH。选择 C。


  1. 【王道·卷二-Q15】 某计算机的字长为64位,采用64位定长指令字,存储器总线的宽度为64位,若用8个 64M×8\displaystyle 64M\times 8 位的DRAM芯片扩展构成一个 64M×64\displaystyle 64M\times 64 位的内存条,支持突发传输方式,则下列说法中正确的是( )。 I. 在该内存条中,所有芯片行缓冲的总大小为 64KB\displaystyle 64KB II. 采用多模块交叉编址方式 III. 每代DRAM芯片如果地址引脚数增加1个,那么容量至少增加4倍 IV. 该计算机的主存数据寄存器(MDR)的宽度为8位
A. I、III    B. I、II、III    C. II、III    D. I、II、III、IV
查看答案与解析

答案: A

解析: 逐项判断:

I 正确。 单片容量为 64M×8\displaystyle 64M\times8 位,其中 64M=226\displaystyle 64M=2^{26}。DRAM 通常将 26 位地址均分为 13 位行地址和 13 位列地址。选中一行后,单片行缓冲可保存:

213×8=8KB\displaystyle 2^{13}\times8\text{位}=8KB

8 片并行,所有芯片行缓冲总大小为:

8×8KB=64KB\displaystyle 8\times8KB=64KB

II 错误。 8 个芯片同时接收同一地址,每片提供 8 位,合起来构成一个 64 位存储字。这属于位扩展,而不是多模块交叉编址。交叉编址要求不同模块存放连续地址并轮流启动。

III 正确。 DRAM 的行地址和列地址复用同一组地址引脚。若地址引脚增加 1 根,则行地址和列地址通常都可各增加 1 位,存储单元数扩大为:

2×2=4\displaystyle 2\times2=4

即容量至少扩大 4 倍。

IV 错误。 MDR 的宽度通常与一次主存读写的数据宽度或存储器总线宽度一致,本题应为 64 位,而不是单个芯片的 8 位。

因此正确的是 I、III,选择 A。


  1. 【竟成·模拟三-15】 某存储器按字节编址,地址0000H~FFFFH为RAM区,若采用16K×2位的RAM芯片进行设计,则在字方向和位方向上分别扩展了()倍。
A. 4和2    B. 4和4    C. 2和4    D. 8和4
查看答案与解析

答案: B

解析: 地址范围为 0000HFFFFH\displaystyle 0000H\sim FFFFH,共包含:

FFFFH0000H+1=10000H=64K\displaystyle FFFFH-0000H+1=10000H=64K

个字节地址。因此目标 RAM 的组织形式为:

64K×8\displaystyle 64K\times8\text{位}

单片容量为 16K×2\displaystyle 16K\times2 位:

  • 字方向扩展倍数为:
64K16K=4\displaystyle \dfrac{64K}{16K}=4
  • 位方向扩展倍数为:
82=4\displaystyle \dfrac{8}{2}=4

所以字方向和位方向均扩展 4 倍,选择 B。


  1. 【竟成·模拟五-15】 某容量为16K×8bit的存储器由若干4K×4bit的SRAM芯片通过字位扩展构成,则该存储器正常工作所需的最少输入地址线位数为()。
A. 11    B. 12    C. 13    D. 14
查看答案与解析

答案: D

解析: 目标存储器共有 16K=214\displaystyle 16K=2^{14} 个可寻址存储字,因此从整个存储器的外部看,必须使用 14 根地址线才能唯一选择其中一个字:

log2(16K)=log2(214)=14\displaystyle \log_2(16K)=\log_2(2^{14})=14

单片 4K×4\displaystyle 4K\times4 位芯片内部需要 12 根地址线;目标存储器在字方向上扩展 4 倍,还需用额外 2 位高位地址进行片选。故总地址输入位数为:

12+2=14\displaystyle 12+2=14

位方向扩展只增加并行芯片数量,不增加地址线。因此选择 D。


3.4 外部存储器

3.4.1 磁盘存储器

  1. 【王道·卷三-Q16】 下列关于磁盘术语的说法中,错误的是( )。
A. 沿磁道方向单位长度记录的二进制信息位称为位密度,可以采用固定位密度方式,这样磁盘不同柱面的磁道上存储的信息量是不一样的
B. 沿磁盘半径方向单位长度的磁道数称为道密度,道密度是相邻磁道间距的倒数
C. 传输一个扇区数据的时间只取决于扇区大小和磁盘所允许的最大转速
D. 磁盘控制器是指用来控制磁盘读/写以及控制磁盘和主存之间传输数据的部件
查看答案与解析

答案: C

解析: 逐项判断:

  • A 正确。位密度是沿磁道圆周方向单位长度上记录的位数。采用固定位密度时,外圈磁道周长更长,因此可记录的信息量更多。
  • B 正确。道密度是沿半径方向单位长度内的磁道数,等于相邻磁道间距的倒数。
  • C 错误。一个扇区的传输时间不仅与扇区大小和转速有关,还与每条磁道包含的扇区数、磁盘实际数据传输率等有关,不能只由题述两个因素决定。
  • D 正确。磁盘控制器负责控制磁盘的读写操作,并协调磁盘与主存之间的数据传送。

因此选择 C。


  1. 【王道·卷三-Q22】 假设磁盘采用DMA方式与主机交换信息,其数据传输率为 8Mb/s\displaystyle 8Mb/s,平均传输的数据块大小为4KB,若忽略预处理时间,则该磁盘机向CPU发出中断请求的时间间隔最少是( )。
A. 500μs\displaystyle 500\mu s    B. 512μs\displaystyle 512\mu s    C. 4000μs\displaystyle 4000\mu s    D. 4096μs\displaystyle 4096\mu s
查看答案与解析

答案: D

解析: DMA 每传送完一个数据块,才向 CPU 发出一次中断请求。因此最小中断间隔等于传送一个平均数据块所需的时间。

数据块大小为:

4KB=4×1024B=4096B=32768b\displaystyle 4KB=4\times1024B=4096B=32768b

数据传输率为 8Mb/s=8×106b/s\displaystyle 8Mb/s=8\times10^6b/s,故传输时间为:

t=327688×106s=0.004096s=4096μs\displaystyle t=\dfrac{32768}{8\times10^6}s=0.004096s=4096\mu s

所以选择 D。

DMA 方式虽然减少了 CPU 对每个字节或字的干预,但每完成一个数据块仍需通过中断通知 CPU,因此中断间隔由块传输时间决定。


  1. 【王道·卷五-Q15】 磁盘阵列(RAID)做不到的是( )。
A. 让多个磁盘并行工作    B. 加快数据的输入/输出    C. 提高存储器的可靠性    D. 减少数据冗余
查看答案与解析

答案: D

解析: RAID 的基本思想是将多个独立磁盘组织成一个逻辑磁盘,通过并行访问、数据条带化、镜像或校验信息等方式改善性能与可靠性。

  • A 正确。RAID 可将数据分散到多个磁盘上,使多个磁盘并行读写。
  • B 正确。采用条带化后,多块磁盘可同时传输数据,从而提高 I/O 吞吐率。
  • C 正确。RAID 1、RAID 5 等通过镜像或校验信息提供数据恢复能力,可提高可靠性。
  • D 错误。多数具有容错能力的 RAID 恰恰需要增加冗余数据,而不是减少数据冗余。RAID 0 虽然没有冗余,但也不能提供可靠性提升。

因此选择 D。


  1. 【王道·卷六-Q14】 一个磁盘的转速为 6000rpm\displaystyle 6000rpm(转/分),平均寻道时间为 5ms\displaystyle 5ms,平均数据传输率为 4096000B/s\displaystyle 4096000B/s,不考虑排队等待时间,则读一个 512B\displaystyle 512B 扇区的平均时间约为( )。
A. 5.125ms\displaystyle 5.125ms    B. 10.125ms\displaystyle 10.125ms    C. 15.125ms\displaystyle 15.125ms    D. 20.125ms\displaystyle 20.125ms
查看答案与解析

答案: B

解析: 读取一个扇区的平均访问时间由三部分组成:

T=T寻道+T旋转延迟+T传输\displaystyle T=T_{寻道}+T_{旋转延迟}+T_{传输}

磁盘转速为 6000rpm\displaystyle 6000rpm,即每秒转数为:

600060=100转/秒\displaystyle \dfrac{6000}{60}=100\text{转/秒}

因此旋转一周所需时间为:

1100s=10ms\displaystyle \dfrac{1}{100}s=10ms

平均旋转延迟为半周时间:

T旋转延迟=102=5ms\displaystyle T_{旋转延迟}=\dfrac{10}{2}=5ms

传输一个 512B\displaystyle 512B 扇区所需时间为:

T传输=5124096000s=0.000125s=0.125ms\displaystyle T_{传输}=\dfrac{512}{4096000}s=0.000125s=0.125ms

所以平均访问时间为:

T=5+5+0.125=10.125ms\displaystyle T=5+5+0.125=10.125ms

因此选择 B。


  1. 【竟成·模拟五-16】 下列关于RAID说法正确的是()。
A. RAID0通过条带化来提高磁盘阵列可靠性    B. RAID1的读写性能在所有RAID中最高
C. RAID1采用奇偶校验来提高磁盘阵列可靠性    D. RAID1通过镜像存储来提高磁盘阵列可靠性
查看答案与解析

答案: D

解析: RAID 1 的核心机制是镜像:同一份数据同时写入两块或多块磁盘。当其中一块磁盘故障时,仍可从镜像盘读取完整数据,因此能够提高可靠性。

  • A 错误。RAID 0 采用条带化,可提升并行读写性能,但没有冗余信息,任一磁盘故障都可能导致整个阵列的数据丢失。
  • B 错误。RAID 1 的读性能可能因并行读取而提高,但写操作需要同时写入镜像盘,不能笼统地说其读写性能在所有 RAID 中最高。
  • C 错误。奇偶校验主要用于 RAID 3、RAID 4、RAID 5、RAID 6 等,RAID 1 不使用奇偶校验。
  • D 正确。RAID 1 通过镜像保存数据副本,以冗余换取可靠性。

因此选择 D。


3.4.2 固态硬盘

  1. 【王道·卷四-Q15】 在下列关于固态硬盘的说法中,错误的是( )。
A. 固态硬盘的写速度慢,读速度快    B. 固态硬盘支持随机访问
C. 固态硬盘重复写同一个块可能会缩短寿命    D. 磨损均衡机制的目的是加快硬盘读/写速度
查看答案与解析

答案: D

解析: 固态硬盘通常采用闪存作为存储介质,没有机械磁头和旋转盘片,因此支持快速随机访问。不过,闪存单元可擦写次数有限,写入前通常还需要先擦除相应块。

  • A 正确。相较于读取,闪存写入尤其是擦除操作通常更慢,因此一般表现为读快、写相对较慢。
  • B 正确。固态硬盘可直接按地址访问闪存页,不需要机械寻道和旋转等待,支持随机访问。
  • C 正确。若持续擦写同一物理块,会更快耗尽该块的擦写寿命。
  • D 错误。磨损均衡的主要目的是将写操作尽量均匀地分布到各闪存块,避免少数块过早损坏,从而延长固态硬盘的使用寿命;提高读写速度并不是其根本目的。

因此选择 D。


3.5 高速缓冲存储器

3.5.2 Cache的基本工作原理

  1. 【王道·卷四-Q16】 对于存储器层次结构,在下列描述中,属于Cache-主存和主存-辅存这两个层次结构的不同点的是( )。
A. 一个必须考虑慢速存储器和快速存储器之间的映射问题,另一个不需要
B. 二者的引入目的不同,一个是加快速度,另一个是增加系统的存储容量
C. 一个需要考虑将哪一块从快速存储器中替换出来,另一个不需要考虑替换
D. 当在快速存储器中找不到信息时,一个从慢速存储器中找,另一个直接从其他层次找
查看答案与解析

答案: B

解析: Cache—主存层次与主存—辅存层次都利用程序的局部性,将近期可能访问的信息保存在较快的存储层中,但二者的主要目的不同。

  • Cache—主存层次主要用于弥补 CPU 与主存之间的速度差距,提高访存速度。
  • 主存—辅存层次通过虚拟存储器机制,为程序提供比实际主存更大的逻辑地址空间,主要目的是扩大可用存储容量。

逐项判断:

  • A 错误。两个层次都需要建立快、慢存储器之间的映射关系。
  • B 正确。二者的主要引入目的分别是提高速度和扩大容量。
  • C 错误。Cache 需要替换算法,虚拟存储器在主存页框不足时也需要页面置换算法。
  • D 错误。快速层未命中时,二者都需要到相应的较慢层查找并调入信息。

因此选择 B。


  1. 【王道·卷六-Q16】 在下列关于Cache与TLB的描述中,说法错误的是( )。
A. TLB与Cache中保存的数据是不同的    B. TLB缺失后,有可能直接在Cache中找到页表内容
C. TLB缺失会导致程序执行出错,但Cache缺失不会    D. TLB和Cache的命中率都与程序的局部性有关
查看答案与解析

答案: C

解析: TLB 是页表项的高速缓存,保存虚拟页号到物理页框号等地址转换信息;Cache 保存的是主存中指令或数据块的副本。

  • A 正确。TLB 保存页表项,Cache 保存普通存储数据或指令,二者内容和作用不同。
  • B 正确。TLB 未命中后,处理器需要访问主存中的页表。由于页表本身也位于主存,其页表项可能恰好已缓存在 Cache 中,因此可能直接命中 Cache。
  • C 错误。TLB 未命中并不等于地址转换失败,更不会必然导致程序出错;系统只需进行页表查询并将结果填入 TLB。只有查页表后发现页面不在主存时,才会产生缺页异常。Cache 未命中同样只是需要从下一级存储器取数。
  • D 正确。页表项和数据、指令访问都具有时间局部性和空间局部性,因此 TLB 与 Cache 的命中率都受程序局部性影响。

因此选择 C。


  1. 【王道·卷七-Q14】 某计算机的存储系统由Cache—主存系统构成,Cache的存取周期为 10ms\displaystyle 10\mathrm{ms},主存的存取周期为 50ms\displaystyle 50\mathrm{ms}。当CPU执行一段程序时,Cache完成存取的次数为4800次,主存完成存取的次数为200次,则该Cache—主存系统的效率是( )。(设Cache和主存不能同时访问。)
A. 0.833    B. 0.856    C. 0.958    D. 0.862
查看答案与解析

答案: A

解析: 总访存次数为:

4800+200=5000\displaystyle 4800+200=5000

Cache 命中率为:

h=48005000=0.96\displaystyle h=\dfrac{4800}{5000}=0.96

因为 Cache 和主存不能同时访问,所以:

  • 命中时耗时为 10ms\displaystyle 10ms
  • 未命中时先访问 Cache,再访问主存,耗时为 10+50=60ms\displaystyle 10+50=60ms

平均访问时间为:

Ta=0.96×10+0.04×60=12ms\displaystyle T_a=0.96\times10+0.04\times60=12ms

Cache—主存系统效率定义为理想 Cache 访问时间与实际平均访问时间之比:

e=1012=0.833\displaystyle e=\dfrac{10}{12}=0.833

因此选择 A。


3.5.3 Cache和主存的映射方式

  1. 【竟成·模拟二-16】 某计算机按字节编址,内部Cache由64组构成,每组包括4个Cache行,内存块大小为32B,主存共有8192个内存块,则主存地址中标记位长度为()位。
A. 7    B. 8    C. 9    D. 10
查看答案与解析

答案: A

解析: Cache 共有 64 组,因此组号需要:

log264=6\displaystyle \log_2 64=6\text{位}

主存块大小为 32B=25B\displaystyle 32B=2^5B,且按字节编址,因此块内地址需要 5 位。

主存共有 8192=213\displaystyle 8192=2^{13} 个内存块,所以主存块号共需要 13 位。采用组相联映射时,主存块号由“标记位 + 组号”组成,因此标记位长度为:

136=7\displaystyle 13-6=7\text{位}

每组有 4 个 Cache 行只说明这是 4 路组相联,不会增加组号位数。

因此选择 A。


3.5.4 Cache中主存块的替换算法

  1. 【王道·卷二-Q17】 Cache缺失会导致系统需要额外的时间开销去获取数据,通常以时钟周期为单位来衡量Cache缺失的开销,下列关于Cache缺失引起的开销的说法中,正确的是( )。
A. 若Cache1比Cache2的缺失率高,则Cache1的总缺失开销一定比Cache2的大
B. 提高Cache的关联度一定能降低Cache的缺失率
C. 无论是直接映射还是组相联映射,都可能发生刚被替换出的数据又被访问的情况,导致缺失率为 100%\displaystyle 100\%
D. Cache缺失所引起的时间开销只和Cache本身的结构有关
查看答案与解析

答案: C

解析: Cache 的总缺失开销不仅取决于缺失率,还取决于访存次数和单次缺失代价,可概括为:

总缺失开销=访存次数×缺失率×单次缺失代价\displaystyle \text{总缺失开销}=\text{访存次数}\times\text{缺失率}\times\text{单次缺失代价}
  • A 错误。即使 Cache1 缺失率更高,如果访问次数更少或单次缺失代价更低,其总缺失开销仍可能更小。
  • B 错误。提高关联度通常能减少冲突缺失,但并不保证缺失率一定降低;缺失率还受容量、块大小、替换算法及访问序列影响,结果也可能不变。
  • C 正确。若访问序列反复访问会映射到同一组而该组容纳不下的若干块,就可能发生“刚换出又访问”的抖动现象。直接映射和组相联映射都可能因此每次访问均不命中,使缺失率达到 100%\displaystyle 100\%
  • D 错误。缺失代价还取决于下一级存储器的访问时间、总线宽度、块大小和传输方式等,并非只由 Cache 本身结构决定。

因此选择 C。


  1. 【王道·卷七-Q16】 在下列关于Cache和虚拟存储器的说法中,错误的有( )。 I. 当Cache失效(不命中)时,处理器将切换进程,以更新Cache中的内容 II. 当虚拟存储器失效(如缺页)时,处理器将切换进程,以更新主存中的内容 III. Cache和虚拟存储器由硬件和OS共同实现,对应用程序员均是透明的 IV. 虚拟存储器的容量等于主存和辅存的容量之和
A. I和IV    B. III和IV    C. I、II和III    D. I、III和IV
查看答案与解析

答案: D

解析: 逐项判断:

  • I 错误。Cache 不命中时,通常由硬件自动从下一级存储器取回相应块并更新 Cache,不需要切换进程。
  • II 正确。发生缺页时,需要由操作系统从辅存调入所需页面。由于磁盘 I/O 耗时较长,当前进程通常会阻塞,处理器可切换执行其他就绪进程。
  • III 错误。虚拟存储器由硬件和操作系统共同实现;而 Cache 的查找、映射、替换和填充主要由硬件完成,通常不由操作系统参与。二者对应用程序员一般都透明,但前半句不正确,因此该项整体错误。
  • IV 错误。虚拟存储器的容量由虚拟地址空间、辅存可用空间以及系统结构共同限制,并不等于主存容量与辅存容量的简单相加。

因此错误的是 I、III、IV,选择 D。


  1. 【竟成·模拟五-17】 假设某计算机按字编址,Cache有4个行,Cache和主存之间交换的块大小为1个字。若Cache的内容初始为空,采用2路组相联映射方式和LFU替换策略。访问的主存地址依次为:0、4、9、0、2、6、0、5、5、2时,则命中Cache的次数是()。
A. 1    B. 2    C. 3    D. 4
查看答案与解析

答案: C

解析: Cache 共 4 行,采用 2 路组相联,因此共有:

42=2\displaystyle \dfrac{4}{2}=2\text{组}

块大小为 1 个字,且按字编址,所以主存地址本身就是主存块号。映射组号为:

组号=主存块号mod2\displaystyle \text{组号}=\text{主存块号}\bmod 2

逐次访问过程如下:

访问地址所在组命中情况访问后的主要状态
00未命中组 0 装入 0,频次为 1
40未命中组 0 装入 4,频次为 1
91未命中组 1 装入 9,频次为 1
00命中0 的频次变为 2
20未命中4 的频次最低,被 2 替换
60未命中2 的频次最低,被 6 替换
00命中0 的频次变为 3
51未命中组 1 尚有空行,装入 5
51命中5 的频次变为 2
20未命中6 的频次最低,被 2 替换

命中发生在第 4、7、9 次访问,共 3 次,因此选择 C。


3.5.6 Cache容量的计算举例

  1. 【竟成·模拟四-16】 某计算机采用一级全相联Cache进行主存和CPU之间的数据交换,Cache采用写回方式和随机替换策略。计算机按照字节编址,主存地址为32位,主存块大小为16B,则包含16KB数据的Cache总容量至少有()位。
A. 156K    B. 157K    C. 158K    D. 159K
查看答案与解析

答案: C

解析: Cache 数据区容量为 16KB,每个主存块为 16B,因此 Cache 行数为:

16KB16B=1024=210\displaystyle \dfrac{16\text{KB}}{16\text{B}}=1024=2^{10}\text{行}

主存按字节编址,块大小为 16B=24B\displaystyle 16\text{B}=2^4\text{B},块内偏移需要 4 位。采用全相联映射,没有组号位,因此标记位长度为:

324=28\displaystyle 32-4=28\text{位}

每个 Cache 行需要保存:

  • 数据:16B=128\displaystyle 16\text{B}=128\text{位}
  • 标记位:28 位;
  • 有效位:1 位;
  • 写回方式所需的脏位:1 位。

随机替换不需要为每行设置额外的替换状态位,所以每行总位数为:

128+28+1+1=158\displaystyle 128+28+1+1=158\text{位}

Cache 总容量为:

1024×158=158K位\displaystyle 1024\times158=158\text{K位}

因此选择 C。


  1. 【竟成·模拟六-15】 假定主存地址为32位,按字节编址,主存和Cache之间采用全相联映射方式,主存块大小为1个字,每字32位,采用回写(Write Back)方式和随机替换策略,则能存放128KB数据的Cache的总容量至少应有()位。
A. 1536K    B. 1568K    C. 2016K    D. 2048K
查看答案与解析

答案: D

解析: 每字 32 位,即:

1=4B=22B\displaystyle 1\text{字}=4\text{B}=2^2\text{B}

Cache 数据区为 128KB,因此 Cache 行数为:

128KB4B=32768=215\displaystyle \dfrac{128\text{KB}}{4\text{B}}=32768=2^{15}\text{行}

采用全相联映射,不含组号字段。块内偏移为 2 位,所以标记位为:

322=30\displaystyle 32-2=30\text{位}

每行需要:

  • 数据位:32 位;
  • 标记位:30 位;
  • 有效位:1 位;
  • 脏位:1 位。

因此每行总位数为:

32+30+1+1=64\displaystyle 32+30+1+1=64\text{位}

Cache 总容量为:

215×64=221=2048K位\displaystyle 2^{15}\times64=2^{21}\text{位}=2048\text{K位}

因此选择 D。


3.5.7 Cache的应用

  1. 【竟成·模拟二-17】 二维数组a的定义为:int a[32][64]。数组a在内存中按行优先存储,在16题所述计算机中执行下述程序段访问数组a。假设Cache初始为空,则访问a的Cache命中率为()。
C
for(int j = 0; j < 64; j++)
for(int i = 0; i < 32; i++)
a[i][j] = 1;
A. 0%    B. 12.5%    C. 75%    D. 87.5%
查看答案与解析

答案: D

解析: 第 16 题中的 Cache 共有 64 组,每组 4 行,主存块大小为 32B。一个 int 占 4B,因此每个主存块可以容纳:

32B4B=8个int\displaystyle \dfrac{32\text{B}}{4\text{B}}=8\text{个int}

数组按行优先存储,每行有 64 个元素,即每行占:

64×4B=256B=8个主存块\displaystyle 64\times4\text{B}=256\text{B}=8\text{个主存块}

对于固定的 j\displaystyle j,程序依次访问 32 行中的第 j\displaystyle j 个元素。令:

g=j8\displaystyle g=\left\lfloor\dfrac{j}{8}\right\rfloor

则第 i\displaystyle i 行所访问元素所在的主存块号为:

8i+g\displaystyle 8i+g

其映射到的 Cache 组号为:

(8i+g)mod64\displaystyle (8i+g)\bmod64

i=031\displaystyle i=0\sim31 时,同一个组中恰好映入 4 个不同主存块,正好等于 4 路组相联的容量,因此不会发生冲突替换。

同一主存块中的 8 个数组元素会在连续的 8 个外层循环中被访问。第一次访问该块时未命中,后续 7 次均命中,所以每 8 次访问中有 7 次命中:

h=78=87.5%\displaystyle h=\dfrac{7}{8}=87.5\%

因此选择 D。


  1. 【竟成·模拟三-21】 假定采用多模块交叉存储器组织方式,存储器芯片和总线支持突发传送,总线时钟频率500MHz,CPU通过存储器总线读取数据的过程为:发送首地址和读命令需1个时钟周期,存储器准备第一个数据需8个时钟周期(即CAS潜伏期为8),随后每个时钟周期总线上传送1个数据,可连续传送8个数据(即突发长度为8)。若主存和Cache之间交换的主存块大小为64B,存取宽度和总线宽度都为8B,则Cache的一次缺失处理至少用时()。
A. 17ns    B. 34ns    C. 66ns    D. 130ns
查看答案与解析

答案: B

解析: 总线频率为 500MHz,因此一个总线时钟周期为:

T=1500MHz=2ns\displaystyle T=\dfrac{1}{500\text{MHz}}=2\text{ns}

主存块大小为 64B,总线每次传送 8B,因此需要传送:

64B8B=8次数据\displaystyle \dfrac{64\text{B}}{8\text{B}}=8\text{次数据}

一次 Cache 缺失处理至少包括:

  • 发送首地址和读命令:1 个周期;
  • CAS 潜伏期:8 个周期;
  • 突发传送 8 个数据:8 个周期。

总周期数为:

1+8+8=17个周期\displaystyle 1+8+8=17\text{个周期}

因而总时间为:

17×2ns=34ns\displaystyle 17\times2\text{ns}=34\text{ns}

因此选择 B。


  1. 【竟成·模拟四-17】 某计算机的主存采用8体交叉存储的方式,每个存储体的存储字长为4B,存储器总线宽度为32位。Cache与主存间的数据交互支持突发传送方式,每次突发传送总数据量为32B,过程包括送地址和读命令(耗时1总线时钟周期)、存储器准备和发送数据(存储器准备第1个存储体的数据耗时8个总线时钟周期,之后每个总线时钟周期完成一个存储体的数据传输)。若主存与Cache间每次交换的主存块大小为32B,则一次Cache缺失的时间最少是()个总线时钟周期。
A. 16    B. 17    C. 18    D. 73
查看答案与解析

答案: B

解析: 总线宽度为 32 位,即每个总线时钟周期可传送:

32=4B\displaystyle 32\text{位}=4\text{B}

主存块大小为 32B,因此共需传送:

32B4B=8个数据\displaystyle \dfrac{32\text{B}}{4\text{B}}=8\text{个数据}

一次突发传送需要:

  • 发送地址和读命令:1 个周期;
  • 准备第一个存储体的数据:8 个周期;
  • 连续传送 8 个存储体的数据:8 个周期。

因此最少需要:

1+8+8=17个总线时钟周期\displaystyle 1+8+8=17\text{个总线时钟周期}

8 体交叉存储使各存储体可以流水启动,从而做到之后每周期传送一个数据,但不能省略首个数据的准备时间和 8 次实际传输时间。因此选择 B。


  1. 【竟成·模拟五-19】 某计算机主频为1GHz,Cache命中时CPI为10,单次Cache未命中时的额外开销总共为100ns。该计算机需要执行100条指令,平均每条指令需进行1.5次访存,Cache缺失率为10%,则该计算机执行这100条指令一共耗时()。
A. 2500ns    B. 2850ns    C. 3000ns    D. 11000ns
查看答案与解析

答案: A

解析: 主频为 1GHz,因此一个时钟周期为:

T=11GHz=1ns\displaystyle T=\dfrac{1}{1\text{GHz}}=1\text{ns}

Cache 全部命中时,100 条指令的基本执行时间为:

100×10×1ns=1000ns\displaystyle 100\times10\times1\text{ns}=1000\text{ns}

总访存次数为:

100×1.5=150\displaystyle 100\times1.5=150\text{次}

Cache 缺失次数为:

150×10%=15\displaystyle 150\times10\%=15\text{次}

缺失带来的额外时间为:

15×100ns=1500ns\displaystyle 15\times100\text{ns}=1500\text{ns}

因而总执行时间为:

1000+1500=2500ns\displaystyle 1000+1500=2500\text{ns}

因此选择 A。


3.6 虚拟存储器

3.6.2 页式虚拟存储器

  1. 【王道·卷五-Q17】 某虚拟存储系统采用页式存储管理,只有 a\displaystyle ab\displaystyle bc\displaystyle c 三个页框,页面访问顺序为 0,1,2,4,2,3,0,2,1,3,2,3,0,1,4。若采用 FIFO 算法,则命中率为( )。
A. 20%    B. 26.7%    C. 15%    D. 50%
查看答案与解析

答案: B

解析: 系统有 3 个页框,采用 FIFO 算法。命中时不改变页面进入内存的先后顺序。逐次访问如下:

访问页面页框内容(从最早进入到最晚进入)是否命中
00
10,1
20,1,2
41,2,4
21,2,4
32,4,3
04,3,0
23,0,2
10,2,1
32,1,3
22,1,3
32,1,3
01,3,0
11,3,0
43,0,4

共访问 15 次,其中命中 4 次,因此命中率为:

415×100%26.7%\displaystyle \dfrac{4}{15}\times100\%\approx26.7\%

因此选择 B。


  1. 【竟成·模拟一-17】 某系统依次进行4次访存读数据操作,这4次访存操作情况如下:第1次:TLB命中,未发生缺页,Cache命中;第2次:TLB未命中,未发生缺页,Cache未命中;第3次:TLB未命中,发生缺页,Cache未命中;第4次:TLB命中,未发生缺页,Cache未命中。已知缺页处理过程中会同时更新TLB和页表,并将整个缺页处理过程只视作一次访存,则这4次访存操作的总访存次数是()。
A. 5    B. 6    C. 7    D. 8
查看答案与解析

答案: C

解析: 分别统计 4 次读数据操作引起的访存次数:

  1. TLB 命中、Cache 命中:不需要访问页表,直接完成数据访问,共 1 次访存。
  2. TLB 未命中、未缺页、Cache 未命中:需要访问页表完成地址转换,再访问数据,共 2 次访存。
  3. TLB 未命中、发生缺页、Cache 未命中:先访问页表发现缺页;题目规定整个缺页处理过程只按 1 次访存计算;页面调入并更新 TLB、页表后,还需重新访问目标数据,共 3 次访存。
  4. TLB 命中、Cache 未命中:地址转换不需查页表,直接访问目标数据,共 1 次访存。

因此总访存次数为:

1+2+3+1=7\displaystyle 1+2+3+1=7

Cache 是否命中只决定数据来自 Cache 还是下一级存储器,并不会在这里将一次数据访问重复计数。因此选择 C。