CPUの基本:命令は3ステップ処理


1.フェッチ,2.デコード,3.実行

命令実行の具体的な流れ

図1 CPUが命令を処理する最初のステップは命令フェッチ,次が命令デコード,最後が命令実行.画像クリックで動画を見る.または記事を読む.[著]圓山宗智
詳細[VOD]新人技術者のためのRISC-V CPU設計初めの一歩~C言語完全対応!HDLソース500行のミニCPUを一緒に作る~

CPUが命令を処理する際,基本的には3つのステップで行われます.最初のステップは命令フェッチです.命令コードをプログラム・メモリから読み出し,CPU内に取り込みます.次に命令デコードのステップで,フェッチした命令コードの意味を解釈し,どの汎用レジスタやメモリ・アドレスを使用するかを決定します.最後に命令実行で,解釈結果にしたがって演算やメモリ・アクセスが行われます.

命令実行の具体的な流れ

命令実行は,いくつかの種類にわかれます.主に汎用レジスタ間の演算,データ・メモリへの書き込み,データ・メモリからの読み込みです.どのレジスタを使用するかは命令コード内に指定され,データ・メモリのアクセス先アドレスは汎用レジスタの値から生成されます.

  1. 汎用レジスタと汎用レジスタの間で演算して,結果を汎用レジスタに格納する
  2. データ・メモリに汎用レジスタの内容をライトする
  3. データ・メモリをリードして汎用レジスタに格納する

命令の実行タイミングとパイプライン

CPUの動作タイミングは,非パイプライン動作とパイプライン動作に分けられます.非パイプライン動作では,命令は順番にフェッチ→デコード→実行の3ステップを完了してから次の命令に進みます.この場合,1命令の完了に3サイクルが必要です.パイプライン動作では,各ステップのハードウェア・リソースが競合していなければ,命令ステージをオーバーラップさせることが可能です.その結果,1サイクルごとに命令が完結するように見え,CPUの性能が向上します.

CPU内リソースと命令セット

本CPUでは,プログラム・カウンタPC(32bit)を1本,汎用レジスタ$x_0$~$x_{31}$(32bit)を32本搭載しています.命令セットはRV32Iで37命令が用意されており,レジスタ間の算術演算や論理演算,無条件分岐,条件分岐,ロード・ストア命令を含みます.外部バスとして命令バスCPUIとデータ・バスCPUDがあり,CPUはこれらを介してメモリや周辺機器にアクセスします.

命令の処理を理解することで,CPU内部のデータ・フローやパイプライン動作の効率を把握でき,性能最適化や設計理解に役立ちます.フェッチ,デコード,実行の3ステップがCPUの基本であり,これを正確に理解することがCPU設計やプログラム実行の基礎になります.

〈著:ZEPマガジン〉

動画を見る,または記事を読む

参考文献

  1. Lチカ入門!ソフトウェア屋のためのHDL事はじめ,ZEPエンジニアリング株式会社.
  2. Zynqで作るカスタム・コンピュータ・チップ,ZEPエンジニアリング株式会社.
  3. [VOD/KIT]一緒に動かそう!Lチカから始めるFPGA開発【基礎編&実践編】,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]Xilinx製FPGAで始めるHDL回路設計入門,ZEPエンジニアリング株式会社.
  5. [VOD/KIT]Zynqで初めてのFPGA×Linux I/O搭載カスタムSoC製作,ZEPエンジニアリング株式会社.
  6. [VOD]カメラ×ラズパイで一緒に!初めての画像処理プログラミング
  7. [VOD/KIT] 実習キットで一緒に作る!オープンソースCPU RISC-V入門,ZEPエンジニアリング株式会社.
  8. [VOD/KIT]ARM Cortex-A9&FPGA内蔵SoC Zynqで初体験!オリジナル・プロセッサ開発入門,ZEPエンジニアリング株式会社.