通过题目来讲一讲指令流水线相关知识 1 | 计算机组成与系统结构专题

题目1

下面是一段指令序列:

add $t1, $s1, $s0

sub $t2, $s0, $s3

add $t1, $t1, $t2

以上指令序列中,哪一条指令发生数据相关?

假定采用”取指、译码/取数、执行、访存、写回”这种五段流水线方式,那么不用”转发”技术的话,需要在发生数据相关的指令前加入几条nop指令才能使这段程序避免数据冒险?

如果采用”转发”是否可以完全解决数据冒险?不行的话,需要在发生数据相关的指令前加入几条nop指令才能使这段程序不发生数据冒险?

题目1 解答

sub $t2, $s0, $s3 取指 译码/取数 执行 访存 写回
nop 取指 译码/取数 执行 访存 写回
nop 取指 译码/取数 执行 访存 写回
nop 取指 译码/取数 执行 访存 写回
add $t1, $t1, $t2 取指 译码/取数 执行 访存 写回

所以需要加入3条nop指令。

如果采用“转发”,可以完全解决数据冒险。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享