单选题 以下有关流水线相关的叙述中,正确的是______。
  • A.所有数据相关都能通过转发得到解决
  • B.可以通过调整指令顺序和插入nop指令消除所有的数据相关
  • C.五段流水线中Load-Use数据相关不会引起一个时钟周期的阻塞
  • D.一条分支指令与紧随其后的一条ALU运算指令肯定会发生数据相关
【正确答案】 B
【答案解析】相邻两条ALU运算指令之间,相隔一条的两条ALU运算指令之间和相隔一条的Load指令与ALU运算指令之间的数据冒险能通过转发解决。单纯依靠“插入nop指令”就能消除所有数据相关,但是这样做效率太低。如果通过调整指令顺序,再加上插入nop指令,则能提高流水线的效率。Load-Use数据相关是由于Load指令的目的寄存器等于后一条指令的源寄存器而导致的。对于五段流水线(取指、译码、执行、访存、写回),Load指令在最后一段写入目的寄存器,而后继指令在第三段读寄存器源,所以Load-Use数据相关至少要引起一个时钟周期的阻塞。通常,分支指令并不改变任何寄存器的值,所以与紧随其后的ALU运算指令根本不会发生数据相关。