Skip to content

错题

二、数值系统

1.

float 类型变量用 IEEE754 标准表示。若其机器数为 8020 0000H,则其值为()

  • A. 2128

  • B. 1.01×2127

  • C. 1.01×2126

  • D. NaN

  • 答案:A

  • 我的:B

  • 解析:考点为 IEEE754 浮点数的特殊形式(规格化、无穷大,NaN,机器 0)。见下表。

    阶码尾数情况
    全 0全 0机器 0
    全 0非全 0非规格化数
    非全 0 且非全 1任意普通情况,规格化数
    全 1全 0无穷大 inf
    全 1非全 0无效数 NaN
    • 对于非规格化数,取消隐含 1 规则,且指数固定为 -126。即实际值为 (0.M)×20126。本题中 M=(0.01)2S=1。所以真值为 (0.01)×2126=1×2128
    • Why:1)非规格化数和机器 0 的表示法相同,但和普通情况的表示法不同(隐含 1)。2)非规格化和机器 0 用来表示很接近 0 的数和 0。3)非规格化数的表示范围要和普通情况连起来(不能有间隔)。
    • 考虑正数,普通情况最小值 M=0,j=1,真值 21127=2126。对于机器 0,因为其表示的值为 0,所以隐含 1 不能生效。否则 (1.M)×2j127 不可能得到 0。综合这两种情况可知,非规格化数没有隐含 1,且为了和 2126 接轨,其指数也固定为 2126所以非规格化数的真值为 (0.M)×2126

2.

R1, R2, R3 为 32 位寄存器。执行指令 (R1) - (R2) -> R3。若 R1 = FFFF FFFFHR2 = FFFF FFF0H,则执行指令后,状态位的 CF 和 OF 值分别为()

  • A. CF = 0, OF = 0;
  • B. CF = 1, OF = 0;
  • C. CF = 0, OF = 1;
  • D. CF = 1, OF = 1;
  • 我的:B
  • 答案:A
  • 解析:考点:CF 进位标志的作用,CF 在加法和减法下的不同作用
    • CF 只看无符号意义下的加减法(有符的也看成无符)。且 CF 在加法和减法下为 1 的情况不同
    • 算术意义上
      • 加法情况下,最高位进位时 CF = 1。
      • 减法情况下,最高位借位时 CF = 1。借位即被减数小于减数。和进位判断不同。
    • 电路实现意义上
      • 对于无符号数减法,AB 在模 2n 意义下同余 A+2nB2nB 就是 B 的二进制补码形式。因此,无符号数 AB 也可以用 A 加上 B 的补码实现。此时最高位也是数据位而非符号位。
      • 电路实现:利用全加器的低位进位输入 Cin。当 Cin=0 时表示加法。Cin=1 时表示减法。此时 Cin 会作为第三个加数参与加法,且 B=BxorCin,按位异或 1 等价于取反。再加上低位进位,所以 A+BA+B¯+1。利用取反和加 1 实现取补码。
      • 进位输出 Cout 和 CF:CF = Cout。减法时,CF = NOT(Cout)。即 Cout 取反得到 CF。因为减法时溢出表示 AB,不溢出表示 A<B。所以原进位输出取反得到借位标志
    • 回到本题,也可以从两个方面判断。
      • 算术意义上,有符看成无符。无符下 R1 > R2,所以不会借位,CF = 0
      • 电路意义上,R1 加 R2 的补码会产生进位(最高位变化),因此 CF = NOT(Cout) = 0
    • 将 CF 视为加法意义下的 "进位标志",则会认为产生进位,从而认为 CF = 1 导致错误。

3.

8 位加法器中计算无符号数 X - Y。X = 130,Y = 45。则加法器的两个输入以及低位进位输入 Cin 分别为

XYCin
A1000 00100010 11010
B1000 00101101 00101
C1000 00101101 00110
D1000 00100010 11011
  • 答案:B。
  • 解析:同 2.

三、存储器系统

1.

在对破坏性读出的存储器进行读写操作时,为维持原存信息不变,必须辅以的操作是()

  • A. 刷新;

  • B. 再生;

  • C. 写保护;

  • D. 主存校验;

  • 答案:B;

  • 我的:A;

  • 解析:区分 DRAM 存储器的刷新、再生、重写三个操作:

    操作刷新再生重写
    原因电容电荷自然泄漏读操作会导致电荷丢失用户主动修改数据
    执行时机周期性(存取周期)每次读操作后用户或程序触发
    范围全局逐行刷新局部 (仅被读取的单元)局部 (目标地址单元)
    用户干预由硬件自动完成由硬件自动完成由用户或程序主动发起
    对数据的影响维持原有数据不变维持原有数据不变覆盖原数据为新值

2.

下列关于主存储器的描述中,正确的是()

Ⅰ.CPU 访存时间由存储器容量决定 Ⅱ.ROM 和RAM 在存储器中是统一编址的 Ⅲ.ROM 中任意一个单元可以随机访问 Ⅳ.DRAM 是破坏性读出,因此需要读后重写

  • 答案:Ⅱ Ⅲ;
  • 我的:Ⅱ Ⅲ Ⅳ;
  • 解析:见题 1,Ⅳ 应该是读后再生

3.

Cache 分为指令区和数据区。读写时间 20ns,主存 120ns。取指令的命中率为98%,取数据的命中率为95%。在执行程序时,约有1/5的指令需要存取一个操作数。假设指令流水线在任何时刻都不阻塞,Cache 不命中时才启动主存。问设置Cache后,与无Cache比较,运算速度可提高多少倍?

  • 答案:4.22;
  • 我的:4.33;
  • 解析
    • 主要是错在 (1) 对平均指令访存时间的理解。误把存取操作数的一条指令当作两条来计算,导致结果偏大,(2) "Cache 不命中时才启动主存" 说明二者不是同时访存,套公式时不能用 htC 而要用 tC
    • 我的思路:程序约有 1/5 的指令带一个存取操作数,所以总共有 5/6 的指令是取指,有 1/6 的是取数。这里把指令附带的取数单独算成一条指令,导致指令总数增多,导致错误
    • 正确思路:指令总数不变。先计算带 Cache 取指和取数的平均访存时间 tItN,可以套命中率公式求得;
      • 带 Cache 情况下,平均访存时间 tC=tI+1/5tN=27.6 ns;
      • 不带 Cache 情况下,平均访存时间 t=tM×(1+1/5)=144 ns;
      • 所以加速比 144/27.61,约为 4.22;

4.

下图是某存储芯片的引脚图,请回答:(1) 这个存储芯片的类型 (是RAM 还是ROM) ? 这个存储芯片的容量?(2) 若地址线增加一根,存储芯片的容量将变为多少?

image-20250322214245885

  • 答案:(1) DRAM,容量 64K;(2) 变为 256K;
  • 我的:(1) 容量 256,(2) 容量512;
  • 解析:主要是错在没有考虑 DRAM 的重合法地址译码,即行列地址复用方式,导致容量判断偏小;
    • 判断该芯片为 DRAM:图中 CAS 为列地址选通 (Column Address Strobe) ,RAS 为行地址选通 (Row ...),所以该芯片是行列地址分时复用的编址方式,是典型的 DRAM 芯片
    • RAS 和 CAS 的作用:通过使能 RAS 和 CAS 前后分别传送行列地址,使得仅需 n 位地址线就可操作 2n 位地址数量的内存单元,因此 DRAM 芯片的地址线数量是同样单元数量 SRAM 的一半
    • 反推之,若 DRAM 芯片有 n 位地址线,则其单元数量为 N=22n
    • 1)图中地址线数量为 8,所以容量 N=216=64K,MDR 为 1 位;
    • 2)若地址线加一根,则容量 N=22×9=218=256K

5.

image-20250809102256596

  • 答案:B,C,B
  • 解析:考点:多体模块(低位交叉)存储器的计算(带宽),分为两种
    • 1)连续读 m 个字(m 等于体数),问带宽。
    • 2)连续读 m 个字(m 远大于体数),问带宽。或直接问最大带宽
    • 基本公式:带宽 = 数据量 / 传输时间。数据量显然很好计算。关键是传输时间 t
    • 情况 1,传输时间定义为:存储器开始读第一个字,到最后一个字读出所经历的时间。
      • 按流水线分析可得,t=T+(m1)t0T 为每个体存储周期,t0 为总线周期。
      • 因此,带宽为 D/(T+(m1)t0)D 为连续读出 m 个字的数据量。
    • 情况 2,因为 m 远大于体数,存储系统几乎是以流水线满载方式运行。最大带宽的含义亦同
      • 流水线满载时,每经过一个总线周期 t0 就能读出一个字。
      • 流水线刚启动时空缺造成的额外耗时可以忽略不计。
      • 因此,带宽为 D0/t0D0 为每个存储体一次能读出的数据量(字)。
    • 此外,对于顺序访问的带宽,也不计算总线时间。直接 B=D/T
    • 分析:
      • 第 6 题,A 应为 3.2×108,B 正确,C, D 显然错误。
      • 第 7 题,情况 2 即流水线满载。每 100ns 读出 16 位。所以 A 错。B 应该是整个存储器,而不是每个存储体。单个存储体仍需一个存储周期才能读出 16 位。D 和 B 一样。C 正确。
      • 第 8 题,情况 2。带宽 D0/t0=4B/(10×109s)=400MB/s

6.

image-20250809103902514

  • 答案:C
  • 我的:B
  • 分析:考点:数据的对齐存储。
    • 交叉编址,即相邻地址的字节存在相邻的体中。4 个 8 位存储体扩展为 32 位存储器,为位扩展。因此每个存储体会同时读写
    • double 类型 x 占 8 字节。首地址 0x804001A,模 4 余数为 2。即 8 个字节所在体号分别为 2, 3, 0, 1, 2, 3, 0, 1。
    • 主存每次读 32 位,即每次驱动 0, 1, 2, 3 号存储体同时读取一次。x 的 8 个字节跨了 3 个周期,因此需要 3 个存储周期来读取
    • NOTE:这种多体位扩展的存储器可以解释为什么数据要对齐存储和对齐读出。本题也可以直接按数据对齐存储和对齐读出来计算。x 的 8 个字节跨 3 行,因此需要 3 次读取。

7.

image-20250809104652909

  • 答案:D
  • 我的:B
  • 解析:考点:固态硬盘 SSD 常识。
    • A 和 B 说反了。静态磨损均衡是监测并调整数据分配。动态是自动选择新块。
    • C 写比读快显然错误。

8.

image-20250809104849519

  • 答案:D
  • 我的:C
  • 解析:考点:机械硬盘 HDD 的容量计算。一个盘片通常是 2 个记录面
    • HDD 容量 = 记录面数量 × 每个记录面的柱面数 × 每个磁道的扇区数 × 每个扇区的大小。
    • 套公式:2×4×2000×3000×51224GB

9.

image-20250809105157786

  • 答案:C D
  • 我的:A
  • 解析:考点:Cache 行的位数计算。直接映射法无替换算法位
    • Cache 行的组成:有效位 1 + 主存标志位 n + 脏位 1 + 替换算法位 1 + 数据部分。
      • 直接映射法没有替换位。默认 LRU 算法,若题目给了替换位数就用题目的。
      • 直写法没有脏位。
      • 地址映射表即不包含数据部分。
    • 主存容量 / Cache 容量为 8192,因此标记为 13 位。直接映射无替换位。说最大即考虑脏位。所以每行总位数 1+13+1=15

10.

image-20250809105619097

  • 答案:A
  • 我的:C
  • 解析:考点:比较器和相联存储器
    • 相联存储器需要按内容查找,所以才需要比较器。其他 Cache 部分用不到比较器。
    • 全相联则有 n 行就有 n 个比较器。
    • 组相联因为只有组内是全相联映射。所以 N 路组相联只需要 N 个比较器。和组数无关。

11.

  • 答案:D
  • 我的:B
  • 解析:考点:分段式和分页式内存管理。
    • B,"每页可以映射到任何一个空闲页框中" 是对的。通过页表和 TLB 来实现。全相联映射指的是定义上的任意对应。而不是一定要采用全相联存储器实现。
    • D,分段式更利于内存保护。分段式将相关数据连续存放在一个段里,数据保护更容易。分页会使得相关数据分散,从而数据保护更困难。

12.

image-20250809113428467

  • 答案:C
  • 我的:A
  • 解析:坑!!!!注意虚页号从 129 变到 130 暗示了这是 10 进制索引。所以提取出虚页号 0x00082 要转为 10 进制页号 130 再查表!!!
    • 类似题型,如 Cache 查表,TLB 查表也要注意索引是 10 进制还是 16 进制!!!!!!

四、指令系统

1.

一台模型机有 8 位和 16 位两种指令字长,采用2—4扩展操作码。8 位字长指令为寄存器—寄存器 (R—R) 二地址类型,16位字长指令为寄存器—存储器 (R—M) 二地址变址类型 (地址码范围在-128~127之间)。

  • 4.1. 设计该机器的两种指令格式,给出各字段的位长;

  • 4.2. 该机器最多有多少个通用寄存器,多少个变址寄存器?

  • 答案:(1) 8 位指令为 2+3+3,16 位指令为 4+1+3+8(1 为变址寄存器编号);(2) 8 个和 2 个;

  • 我的:(1) 8 位指令为 4+2+2,16 位指令为 4+4+8(4 为变址寄存器号);(2) 4 个和 16 个;

  • 解析:两个关键点:1)理解 2—4 扩展操作码的意思,2)第一小题和第二小题是相互联系的,第一小题的寄存器在第二小题也要考虑(毕竟都是一个机器);

    • 2—4 扩展操作码:在本题中指,短指令采用 2 位操作码,长指令采用 4 位操作码,可以将地址码扩展为操作码;
    • 所以对于 8 位短指令,2 位操作码 + 2 段寄存器地址码,即寄存器地址码为 3 位,最多 8 个;
    • 第二小问是在第一小问的基础上,即第一小问的 8 个寄存器在第二小问也要体现,因此要预留 3 位作为寄存器地址码
    • 长指令 4 位操作码,存储器地址码 8 位,所以变址寄存器地址码只有 16-8-4-3 = 1 位,最多 2 个;

五、CPU 系统

1.

在CPU 的寄存器中,对用户透明的是()

  • A. 程序计数器;
  • B. 状态寄存器;
  • C. 指令寄存器;
  • D. 通用寄存器;
  • 答案:C;
  • 我的:D;
  • 解析透明的意思就是用户不可见,不可操作,而不是可见和可操作!!,看第一节 3.7 的表即可得出答案;

2.

以下说法中错误的是()

  • A. 指令执行过程中的第一步就是取指令操作
  • B. 为了进行取指令操作,控制器需要得到相应的指令
  • C. 取指令操作是控制器自动进行的
  • D. 在指令长度相同的情况下,所有取指令的操作都是相同的
  • 答案:B;
  • 我的:C;
  • 解析:取指令操作确实是控制器自动进行的,不需要得到相应的指令,所以选 B;

3.

在组合逻辑控制器中,微操作控制信号的形成主要与()信号有关

  • A. 指令操作码和地址码
  • B. 指令译码信号和时钟
  • C. 操作码和条件码
  • D. 状态信号和条件
  • 答案:B
  • 我的:C
  • 解析
    • A. 地址码不需要;
    • C. 条件码主要是对状态位进行判断,影响的是控制器宏观的行为(即形成哪些微操作信号),和如何形成无关;

4.

某模型机 CPU 主要部件如图

img

拟出指令 SUB(R1), -(R2) 的执行流程 (含取指过程与确定后继指令地址)。

该指令的含义是:进行减法操作,源操作数地址和目的操作数地址分别在寄存器 R1 和 R2 中,目的操作数寻址方式为自减型寄存器间接寻址。

  • 答案:宏观上,这条指令的操作为:(R2)-1 -> R2((R1)) - ((R2)) -> M(R2),数据通路为

    取指: (PC) -> MAR; M(MAR) -> MDR, (MDR) -> IR, (PC)+1 -> PC;
    取被减数: (R1) -> MAR, M(MAR) -> MDR, (MDR) -> C;
    取减数: (R2)-1 -> R2, (R2) -> MAR, M(MAR) -> MDR, (MDR) -> D;
    减法: (C)-(D) -> MDR;
    写回: (MDR) -> M(MAR);
  • 我的:减完没有写回存储器;

  • 解析:注意以下几点

    • 自减型:指从 R2 得到 EA 后,要先自减,再拿去主存寻址(读和写都是一样);
    • ALU 运算可以写简单一点,不用把 ALU 控制信号赋值也写进来;
    • 注意题目中说的 目的操作数地址存放在 R2 中,目的操作数寻址方式为自减型寄存器间接寻址
      • 目的操作数即减法完成后写回的目标;
      • 此处说了是寄存器间接寻址,所以减法完了要写回存储器,因为前面已经自减并把地址放到 MAR,就不用再放一遍了;

5.

某 CPU 执行指令 LOAD R0, (X) 的流程图如图所示

img

X 自身也是间接寻址,给出新的流程图;

  • 答案

    img

  • 我的:直接在原来的流程图上加了三步 (R0) -> MAR, M(MAR) -> MDR, (MDR) ->R0,比答案多了一步

  • 解析:变为二次间接寻址,而且是连续寻址,故可以简化,MDR 读出来之后直接送 MAR 即可,不需要再经过 R0

6.

单总线CPU 结构以及数据通路如下图所示,其中MAR为地址寄存器,MDR为数据寄存器,MEM 为主存储器,R0~R3为通用寄存器。PSW 为状态寄存器,Y、Z为暂存寄存器,PC为程序计数器,IR为指令寄存器。请用寄存器级传送形式设计下列指令执行的分步流程(包括取指令阶段)。

img

  • 注意:图中 ALU 只连了暂存器 Z,所以算术运算完要先存到 Z,不能直接存回 R!

7.

采用超流水线技术的CPU,增加流水段数带来的影响是()

  • A. 缩短时钟周期
  • B. 降低 CPI
  • C. 减少程序包含的指令数
  • D. 一个时钟周期内可以有多条指令完成
  • 答案:A
  • 我的:D
  • 解析:考点:超流水线定义、CPU 时钟周期取决于各流水段中最长的一个
    • 超流水线:指将流水线各段再次细分增加段数,但是每段所耗时间降低
    • A. 由一个时钟周期完成一段的原则,CPU 时钟频率受到最长的流水段时间限制。现在细分流水段后,虽然段数变多,但是每段操作简化,所需时间减少。因此 CPU 时钟频率可以取得更高。也就缩短了时钟周期
    • B. 时钟频率变短,但是段数变多,所以 CPI 不能确定。
    • C. 和指令设计、编译有关,和流水线无关。
    • D. 超流水线除了细分各流水段外,也会配置多个功能部件和译码电路等。使得多道流水线可以并行。在一个机器周期里可以有多条指令完成。但不是时钟周期

8.

硬布线控制器与微程序控制器相比

  • A. 硬布线控制器的时序系统比较简单
  • B. 微程序控制器的时序系统比较简单
  • C. 两者的时序系统复杂程度相同
  • D. 可能是硬布线控制器的时序系统比较简单,也可能是微程序控制器的时序系统比较简单
  • 答案:B
  • 我的:D
  • 解析:这是从总体设计上来看的。硬布线的时序复杂度随着要支持指令条数的增加呈指数级增长。而微控制器就是模拟 CPU 指令周期的时序。从总体上来看是硬布线更复杂。不要钻牛角尖用极端情况对比(无意义)。

六、总线系统

1.

image-20250816212402879

  • 答案:B
  • 我的:A
  • 解析:三通道就是指内存控制器和内存条之间有三条独立的数据通路并行工作。最终的总带宽将是单个通道带宽的三倍。所以算出来要乘以 3.

2.

image-20250816212528462

  • 答案:B

  • 我的:A

  • 解析:考点:总线的平均传输速率最大传输速率

    • 平均传输速率:指的是一个完整周期内,发送的数据与所花时间比值。

    • 最大传输速率:指的是只考虑传送数据所花的时间,得到的发送的数据与所花时间的比值。

    • 本题中,一个完整总线周期为 7 个时钟周期,只考虑传输数据则只算后面 4 个时钟周期。每个总线周期能传 8×8=64B 数据,所以

      • 平均速率:420M/7×64=3.84GB/s
      • 最大速率:420M/4×64=6.72GB/s

      所以选 B。

    • 总线带宽:一般提到总线带宽都是指最大数据传输速率。当题目明确提到 "有效带宽","有效吞吐率" 等词时,才会按照平均速率来算。

七、IO 系统

1.

在下列问题中,哪一个不是设备分配中应考虑的问题( )?

  • A. 及时性
  • B. 设备的固有属性
  • C. 设备无关性
  • D. 安全性
  • 答案:A
  • 我的:C
  • 解析
    • A. 及时性是设备之间通信应该实现的,和分配没关系;
    • B. 要考虑;
    • C. 为实现设备无关系,OS 要分配逻辑设备,建立物理设备和逻辑设备的对应关系;
    • D. 要考虑;

2.

在调试程序过程中,可以把所有输出结果送到屏幕显示,而不必正式输出到打印设备,其运用了( )技术?

  • A. Spooling
  • B. IO重定向
  • C. 共享
  • D. 缓冲
  • 答案:B;
  • 我的:A;
  • 解析
    • C, D 显然不对;
    • A. Spooling 通常是采用缓冲区实现独占设备的共享(实现一个物理设备虚拟出多个逻辑设备),和打印到屏幕无关;
    • B. 这里将输出从打印机控制进程改到了其他进程(如控制台),显示到屏幕上,属于 IO 重定向;

3.

在某计算机系统中,其屏幕显示分辨率为1280×900,采用RGB彩色模型显示,若要存储一屏256彩色的图像,需要多少显存?若采用32位真彩色显示,需要多少显存?

  • 答案:1152000B,4608000B;
  • 我的:3375KB,13500KB(3 倍);
  • 解析:错误理解了 RGB 的存储方式。题目中说 256 彩色的意思是,一个像素点由 256 位表示,而不是 3 通道 256 位
    • 3 通道 256 位叫做 24 位真彩色

4.

某操作系统中采用单缓冲传送外设数据。设从外设将数据传送到缓冲区所用时间为T1,将缓冲区数据传送到用户进程内存所用时间为T2,CPU处理数据所用时间为T3,问系统处理该数据所用总时间为多少?

  • 答案max(T1,T3)+T2
  • 我的2T1+2T2+T3
  • 解析:见操作系统第五章第二节 1.2(单缓冲区),此处回忆一下
    • 缓冲区机制:1)缓冲区空时,不能取,可以存,但是必须存满之后才能开始读取,2)缓冲区非空时,不能存,可以取,必须取出所有数据,清空缓冲区,才能再次存入
    • 由缓冲区机制可知
      • 读写数据时不一定是一整块,而是以缓冲区大小为单位的
      • 缓冲区向 CPU 传输数据时,CPU 不能处理数据,外设也不能向缓冲区放入数据
      • CPU 处理数据时,不会读缓冲区,所以外设可以同步进行写缓冲区(并行);
    • 所以
      • T2 必须完整花费,因为缓冲区向 CPU 写数据不能并行;
      • T1<T3即外设传输数据的速度比 CPU 处理速度快,则每个缓冲存取周期,外设都会等 CPU 一段时间(CPU 处理完之后才能从缓冲区读数据,读完之后外设才能接着写数据),此时外设存数据是包含在 CPU 处理数据之内的,所以总时间为 T2+T3
      • T1>T3,则反之亦然。CPU 会等外设把缓冲区写满,然后才开始读取和处理。CPU 读完开始处理后,外设才能接着写,CPU 处理数据的时间包含在外设存数据的时间之内,所以总时间 T1+T2
    • 总结:总时间 max(T1,T3)+T2,单缓冲区结论;

5.

image-20250816214310156

  • 答案:D
  • 我的:A
  • 解析:考点:IO 总线的作用。IO 总线分为数据总线、地址总线和控制总线:
    • 数据总线:传输数据,但是也传输 IO 接口的命令字、状态字等,这些对 CPU 来说都是数据。
    • 地址总线:顾名思义传输地址的。
    • 控制总线:传输总线读/写信号,时序信号和总线请求信号。这是整个总线范围内的控制信号,而不是特定于一个 IO 设备。
    • 例如,CPU 通过控制线送总线写信号,再将 IO 接口的命令字通过数据线送 IO 接口的命令寄存器,就可以给 IO 接口发送命令。
    • 为什么有中断类型号:中断类型号是 CPU 响应该 IO 设备请求后,执行中断服务程序所需要知道的数据。
      • 中断流程:IO 设备向控制器发送中断请求 控制器向 CPU 发送中断信号 CPU 回复中断响应信号 控制器收到响应,将预先设置好的中断类型号通过数据线发给 CPU CPU 读取类型号,找到服务程序执行中断。
      • 预先设置好: IO 设备根据硬件跳线(早期)来获得,或者由高级可编程中断控制器(现代)在一开始连接时就分配