こんにちは、以下の命令があるとします:
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 を実行できます。したがって、バイパス方法では、EX1 と EX2 レベルの後に R1 と R2 の値をバッファに格納します。
しかし...バイパス方法では、EX1 の後、どうすればレジスタ R1 値を取得できますか?? WB1 値に達していません。なぜバッファが必要なのか、R1を直接読み取らないのはなぜですか??