ALUで計算する命令のWB状態について、前回以下のように書きました。
「WB状態においては、ALUで計算する命令ならばレジスタファイルへの書き込みはイネーブルにされるので、EX状態で書き込み値を保存しておいたレジスタの値がすぐレジスタファイルに書き込まれます。その後、クロックのpositive edgeのタイミングで再びIF状態に遷移します。」
考えて見るとここは間違いでした。
レジスタファイルへの入力信号(書き込む値、書き込みイネーブル信号)はこの通り早々に設定されていますが、レジスタファイル自体がクロックのpositive edgeのタイミングで書き込みイネーブルならば書き込む制御をしているので、書き込み動作はWB状態の最後になります。
書き込みに必要な信号は、実際に書き込むタイミングより前であれば様々なタイミングでばらばらに準備が整っても構わないということですね。
「WB状態においては、ALUで計算する命令ならばレジスタファイルへの書き込みはイネーブルにされるので、EX状態で書き込み値を保存しておいたレジスタの値がすぐレジスタファイルに書き込まれます。その後、クロックのpositive edgeのタイミングで再びIF状態に遷移します。」
考えて見るとここは間違いでした。
レジスタファイルへの入力信号(書き込む値、書き込みイネーブル信号)はこの通り早々に設定されていますが、レジスタファイル自体がクロックのpositive edgeのタイミングで書き込みイネーブルならば書き込む制御をしているので、書き込み動作はWB状態の最後になります。
書き込みに必要な信号は、実際に書き込むタイミングより前であれば様々なタイミングでばらばらに準備が整っても構わないということですね。