公開日:2026/01/17
title.png

37th Season


#37-8 Nihoniumパイプライン実装(Who)

 Cmod A7ボード(FPGA)を使って開発しているオリジナル32ビットCPUコアNihoniumの実装方式として、パイプライン方式を採用してみたいと思います。

 前回、Nihoniumをパイプライン方式で実装するに当たり、4段パイプラインを適用すると決めましたので、続きの考察を進めます。

4段パイプラインの設計

 改めて、4段パイプラインの実行図を描いて見ましょう。

a378_pipe_4stage.png

 縦方向/横方向とも、時間の経過を示しています。

 併せて、左上方から右下方の斜め方向へ時間が経過します(青色点線矢印)。

 縦に見て、赤枠のような瞬間に、IF/ID/EA/WBの4ステージが同時に実行されています。
 横に見て、各ステージ枠内の時間は左から右へ向かって進んでいるので、各ステージの開始時は枠の左端、終了時は枠の右端、となります。また、CPUクロックの立ち上がりエッジが、各枠の左右端に位置します。つまり、1枠の横幅が1クロック(1サイクル)に相当します。

 続いて、各ステージの動作をブロック図を描きながら解説して行きます。

IFステージ

 IFステージのブロック図を以下に示し、解説を続けます。

a378_stg_if.png

IDステージ

 IDステージのブロック図を以下に示し、解説を続けます。

a378_stg_id.png

EX(EA)ステージ

 EX(EA)ステージのブロック図を以下に示し、解説を続けます。

a378_stg_ex.png

MA(EA)ステージ

 MA(EA)ステージのブロック図を以下に示し、解説を続けます。

a378_stg_ma.png

WBステージ

 WBステージのブロック図を以下に示し、解説を続けます。

a378_stg_wb.png


 4段パイプラインの各ステージでどのような仕事を担当するのか、ブロック図を作成して検討が終了しました。各ステージは同時並列に処理を実行するので、次回以降、共有資源の競合などについて検討を広げます。


btn_arduino.png

btn_prev.png btn_next.png

home