計算機アーキテクチャ特論 レポート課題 (ヒント)


以下に課題実現のためのヒントを示す。
※質問・疑問は随時受け付ける。

課題1. 命令パイプラインシミュレータの作成

以下の作業を行い、データハザードに対応できるようにする。
  1. データフォワーディング機能の実装
    EXステージの処理において、先行する命令(つまり、MAステージおよび WBステージで処理中の命令)のデスティネーションレジスタの値を 入力データとして使っている場合に、 パイプラインレジスタ中の変数 A, B の代わりに、 後続のパイプラインレジスタ中の変数 ALUOutputLMD の値を使うように変更する。
    (EXステージの最初の方で 実際に使われる値を A, B に代入しておくとよい)
    具体的にどのパイプラインレジスタのどの変数の値を 使えばよいかについては、配付資料 図A.22, A.23を参考にすること。

    注意:
    データフォワーディングの対象となるレジスタ番号に書込みを行なう命令が MAステージおよびWBステージの両方に存在する場合は、 近い方のステージの命令の結果(つまり、MAステージで処理中の命令側の結果)を フォワーディングすること。

    例えば、以下のような実装を行う。

  2. パイプラインインタロック機能の実装
    パイプラインのインタロック条件を調べて、 パイプラインを止める必要がある場合に、当該ステージの処理結果を次のステージに 受け渡さないようにする。
    そこで、各ステージの処理を保留する必要があるかどうかを示すフラグを用意 することで、インタロックの制御を行えるように変更を行う。

    例えば、以下のような実装を行う。

ここまで出来たところで、データハザードに対応できるか動作テストを行う。
以下のテストプログラム test2 を使うとよい。
アセンブリソース/ 逆アセンブルリスト/ ダンプテキストファイル


文責:大津