E203数据冲突处理OITF


      流水线的数据冲突分为三类:WAR,RAW,WAW

       https://wenku.baidu.com/view/e066926d48d7c1c708a14508.html

  • WAR: write after read 相关性,又称先读后写相关性。比如下面的指令序列,第一条指令会读取x4,第二条指令会写x4。在流水线中,如果第二条指令比第一条指令先写x4,则第一条指令就会读出错误的值。

           add x5, x4,x6

           add x4, x3, x2

  • WAW: write after write 相关性,又称先写后写相关性。比如下面的指令序列,两条指令都会写x5。在流水线中,如果第二条指令比第一条指令先写x5,就会引起逻辑错误。

           add x5, x4,x6

           add x5, x3, x2

  • RAW:read after write相关性,又称先写后读相关性。比如下面指令序列,如果第二条指令,在第一条指令读取x4之前,第二条指令先写x4,就会引起逻辑错误。

           add x5, x4,x6

           add x4, x5, x2


      由于蜂鸟E200系列是按序派遣,按顺序写回的微架构,在指令派遣时候就已经从通用寄存器数组中读取了源操作数。后续执行的指令写回regfile的操作不可能影响到前面指令的读取,所以不可能发生WAR相关性造成的数据冲突。

      正在派遣的指令处在流水线的第二级,假设之前派遣的指令是单周期指令,则前序指令肯定已经完成了执行且将结果写回了Regfile。因此正在派遣的指令不可能会发生RAW数据冲突。但是假设之前派遣的指令是多周期指令,由于指令需要多个周期才能写回结果。因此正在派遣的指令可能会产生于前序相关的RAW相关性。

     正在派遣的指令处在流水线的第二级,假设之前派遣的指令是单周期指令,则前序指令肯定已经完成了执行且将结果写回了Regfile。因此正在派遣的指令不可能会发生WAW数据冲突。但是假设之前派遣的指令是多周期指令,由于指令需要多个周期才能写回结果。因此正在派遣的指令可能会产生于前序相关的WAW相关性。

     












猜你喜欢

转载自www.cnblogs.com/mikewolf2002/p/11349957.html
203