Привет Предположим, ниже инструкция:
R1<-M1
R2<-M2
R3<-R1*R2
M3<-R3
Теперь мы создадим конвейер, как показано ниже, без обхода: [XXX: пузырь]
IF1 ID1 EX1 ME1 WB1
IF2 ID2 EX2 ME2 WB2
IF3 XXX XXX XXX ID3 EX3 WB3
XXX XXX XXX XXX IF4 ID4 EX4 WB4
И мы создадим конвейер с обходом, как показано ниже: [XXX: пузырь]
IF1 ID1 EX1 ME1 WB1
IF2 ID2 EX2 ME2 WB2
IF3 XXX ID3 EX3 WB3
XXX XXX IF4 ID4 EX4 WB4
Мы должны подождать, пока WB1 и WB2 не будут выполнены, тогда мы можем выполнить инструкцию 3.
Таким образом, в обход метода мы будем хранить значения R1 и R2 после уровней EX1 и EX2 в буфере.
Но ...
В обход, после EX1, как мы можем получить значение регистра R1 ?? мы не достигли значения WB1. Зачем нам нужен буфер, почему бы не прочитать R1 напрямую ??