体系结构笔记------流水线冲突处理
结构冲突
由于硬件资源有限导致的,多个指令执行阶段对同一硬件提出访问请求,导致的冲突。
插入暂停周期
比如在运行时同时有两个指令对资源提出访问请求,一个指令在取指阶段提出取指令的请求访问内存,一个指令在运算阶段提出对数据的访存,这时会产生访存冲突,这时可以暂停一个周期,等待上一条指令的访存结束,之后进行下一条指令的执行,进行取指操作,这样去除了结构相关,但是对应暂停的那一周期内无指令完成执行。
设置备用硬件资源
同样,对于上面情况中,有同时对内存的访问来获取数据和指令,我们可以将数据与指令进行分开存储,设置相互独立的指令存储器与数据存储器。推广一下就是对于其他的硬件资源都可以通过设置多个备用的硬件资源来防止结构冲突,但是这样会导致成本的提升。
数据冲突
暂停等待
如果出现指令的运行依赖于上一条指令的结果的情况,就暂停指令的执行,直到上一条指令的写回周期结束,再继续运行当前指令的读数据操作,也就是第二阶段,这一阶段一共浪费了三个时间周期。
这样的效率就大大降低了。
定向技术(数据旁路)
在某条指令产生计算结果之前,其他指令并不真正立即需要该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令需要它的