4

次の命令を正しく実行するには、何回のストールが必要ですか。私は自分がしたことに少し混乱しているので、専門家の回答を見るためにここにいます。

lw $1,0($2);

$1,$2,ラベル;

分岐が発生するかどうかのチェックは、デコード段階で行われることに注意してください。rsただし、この場合の beqのソース レジスタは$1、lw 命令のライトバック ステージの後に更新されます。そのため、新しいデータをメモリ ステージのメモリから beq 命令のデコード ステージに転送する必要があります。

データ パスの図は次のとおりです。

ここに画像の説明を入力

4

1 に答える 1

1

メモリからフェッチされた値は、パイプラインのライトバック ステージでレジスタ ファイルに書き込まれます。レジスタ ファイルへの書き込みはクロック サイクルの前半で行われ、レジスタ ファイルからの読み出しはクロック サイクルの後半で行われます。

したがって、レジスタ ファイルに書き込まれる値は、レジスタ ファイルに書き込まれるのと同じクロック サイクルで読み取ることができます。したがって、転送はここでは有効ではありません

必要なストールの数については、命令がデコード ステージにあるlwときに命令がライト バック ステージにある必要があるため、パイプラインに 2 つのバブルを挿入する必要があります。beq

これがあなたの質問に答えることを願っています。

于 2013-01-24T09:45:51.823 に答える