完全披露:这与家庭作业问题有关,但本身并不是一个家庭作业问题(如果有意义的话)。
假设我有以下MIPS代码:
100 addi $1, $0, 1
104 nop
108 addi $2, $0, 2
112 addi $3, $0, 3
我在超标量数据路径上运行它,每个循环加载两条指令。根据我对超标量流水线的了解,我想说在第一周期,处理器将获取指令100和104.
我还会说在100/104执行完之前的某个时刻,CPU会获取指令108和112.现在,如果指令104不是nop
,我会说这会发生在第2周期(抛开复杂性,如停滞)。但是,它是一个nop
的事实让我停下来。
我有两个问题:
我是否正确处理器将在同一周期内同时获取100和104?换句话说,超标量处理器通常在获取nop
指令方面有任何特殊处理吗?
假设我的假设是正确的:将在第2周期或第3周期中取出指令108和112吗?
我怀疑答案是第2周期。虽然nop
的意图是延迟执行下一条指令,但它只是做了一些空的工作。我怀疑该过程只是与指令100并行执行指令,然后在下一个周期中取指令108和112.