---恢复内容开始---
pipeline control:看ppt
流水线不会改变lantency,但是会提高through put。
dependence:当前指令的data,下一个指令要用。
hazards:
structural hazards:两个指令要用一个resource
每一个stage的resource要不一样
data hazards:有两类 forwarding/stalls
前三个都是错的:
1.write然后是read write还没写进去,read就开始读了,哔!hazard!MIPS会发生!
2.read然后write,write抢先,read读到错误的资料,哔!hazard!MIPS不会发生,因为设计中write永远在第5个stage,read在第二个stage
3.后面的先写进去了,哔!hazard!MIPS不会发生,因为设计中write永远在第5个stage
举例说明:
解决办法:
nop会浪费时间;stall是停;forwarding要注意两点:datapath的设计和什么时候要control
ALU要计算的值可能要用到不同pipeline里暂存的值:
这一部分书上写得更清楚一点,206页
·
load指令后面是R型指令就要stall,加一个nop;因为alu计算的是memory的地址,从EX/MEM流水线寄存器中拿到的是memory的地址而不是里面存储的值,所以要在memory之后才能拿到值
control hazards:
#computer architecture#如何设计一个处理器3
原文:https://www.cnblogs.com/zhanghaha-zzz/p/11418279.html