Skip to content

2010年 408 计算机组成原理 第 19 题

计算机组成原理2010年选择题2分

题目

下列选项中,不会引起指令流水线阻塞的是( )。

错因

B

把"数据相关"和"数据旁路"混了——可能误读为"数据相关 = 数据通路相关 = 旁路"。但数据相关(data dependency)就是数据冒险的源头——前一条指令写某寄存器、后一条指令读它,没有转发的情况下后者必须等前者写回完成,会阻塞。题问"不会引起阻塞",B 反了。

C

条件转移属于控制冒险——分支条件要到 EX(甚至 MEM)阶段才能判定,在那之前 CPU 不知道下一条指令的地址。无延迟槽 / 无分支预测时,后续指令必须阻塞等待分支决议;即使有预测,预测错了也要把推测执行的指令清掉重发,本质上仍是阻塞。

D

资源冲突 = 结构冒险——多条指令在同一周期争用同一硬件单元(如单端口存储器同时被取指和取数访问),无法并行通过,必然有一条要阻塞或停顿。比如经典的"IF 和 MEM 都要访问主存"冲突。

总解析

核心区分

流水线阻塞的来源就是经典三大冒险:

冒险类型触发原因是否阻塞
数据冒险前后指令对同一寄存器的"写后读 / 写后写 / 读后写"(无转发时)
控制冒险分支/跳转的目标地址要等到执行阶段才确定(无预测时)
结构冒险同一周期多个流水段争用同一硬件资源

数据旁路(forwarding/bypass)不是冒险,是解决冒险的技术——把 ALU/MEM 输出直接接回到下一条指令的 EX 输入,绕过寄存器堆的"写回-读取"延迟。它的存在就是为了让上一条指令的结果能尽快被下一条用到,消除或减少阻塞

逐项判定

选项性质是否引起阻塞
A. 数据旁路(转发)解决方案(反而消除阻塞)
B. 数据相关数据冒险源头
C. 条件转移控制冒险源头
D. 资源冲突结构冒险

例外提醒:转发并非万能。load-use 冒险(load 指令的结果立刻被下一条用作 EX 输入)连转发都救不了——load 的数据要到 MEM 阶段末才有效,下一条指令的 EX 阶段开始时还没拿到——这种情况仍要插入 1 个 stall。但这个 stall 是"数据冒险无法被转发完全消除"导致的,不是转发本身引起的。题面问"哪种引起阻塞"——转发本身的作用方向是消除阻塞,所以仍然是 A。

最终答案是 A(数据旁路转发)

记忆要点:流水线题里看到"会引起阻塞"四字,先把答案往冒险源头(数据/控制/结构相关)找;看到"减少/避免阻塞",往优化技术(转发、分支预测、动态调度、超标量)找。两类正好相反。

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数