自作CPU入門5:ミニマムCPUの命令セット


回路をシンプルに,かつプログラムを記述しやすく


[Webinar/KIT/data]新人技術者のためのRISC-V CPU設計 初めの一歩(5月31日~6月7日,2日コース)


最小限必要な3つの命令

図1 CPUの命令セットを設計するときは,データの入出力,ジャンプ,レジスタの活用を考慮し,回路をシンプルに,そしてプログラムを記述しやすくする必要がある.画像クリックで動画を見る.または記事を読む

CPUの命令セットを設計する際には,データの入出力,ジャンプ,レジスタの活用といった要素を考慮し,かつ,回路をシンプルに,そしてプログラムを記述しやすくする工夫が求められます.特に,自作CPUではソフトウェアの記述負担を軽減するため,適切な命令処理回路を組み込むことが重要です.

CPUを自作する際には,まず命令セット(インストラクション・セット)を決めることが重要です.命令セットとは,CPUが実行できる基本的な動作の集合であり,プログラムの動作を決定します.特に最小限の命令セットを考えることで,シンプルな回路設計と効率的なプログラミングが可能になります.

CPUを設計するうえで,最低限必要な命令は以下の3種類です.

  1. データをメモリやI/Oから読み込む操作(LOAD):メモリやI/Oポートからデータを取得し,レジスタに格納する
  2. データをメモリやI/Oに書き込む操作(STORE):レジスタのデータをメモリやI/Oポートに保存する
  3. プログラムの実行位置を変更する操作(JUMP):プログラム・カウンタを変更し,分岐やループ処理を可能にする

これら3つの命令があれば,基本的な計算処理が可能です.データの入出力を行い,条件によって処理を分岐させることができます.逆に,この3つの命令がなければ,CPUとしての機能を果たすことができません.

レジスタの役割と命令セットの関係

CPUの動作を効率化するために,レジスタを適切に配置することが重要です.レジスタとは,CPU内部にある高速な記憶装置で,データの一時的な保存に用いられます.レジスタを活用することで,以下のメリットがあります.

  1. メモリへのアクセス回数を削減できる
  2. 演算処理を高速化できる
  3. ソフトウェアの記述を簡潔にできる

レジスタの数が増えると,CPUの回路が複雑になりますが,ソフトウェアの記述が容易になります.そのため,自作CPUではバランスを考慮しながら適切なレジスタ数を決めることが重要です.

アキュムレータ型CPU

アキュムレータ型CPUとは,1つのレジスタ(アキュムレータ)を中心に処理を行うシンプルなCPUアーキテクチャです.一般的な特徴は以下のとおりです.

  1. ほとんどの演算がアキュムレータを介して行われる
  2. 命令セットが単純で,回路設計が容易
  3. メモリ・アクセスが多くなりがち

初期のコンピュータや教育用CPU設計では,この方式がよく用いられます.〈著:ZEPマガジン〉

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

チャプタ・リスト

  • 1:04 今回の内容
  • 3:36 データを数値の集まりとして扱う
  • 4:55 データ処理を分解する様子
  • 7:33 トリビア
  • 8:46 CPUによる計算実行の例
  • 11:50 1命令ぶんのCPUの動きの例
  • 12:59 おまけ:自作CPU派に!お勧め開発キット

著者紹介

  • NTT,IBM,Sony,NECの各研究所において高性能回路IPやハイレベル・シンセシスの研究,およびプレイステーションなどの製品用SoC開発に従事した後,現職にて民間宇宙ロケットの飛行制御コンピュータの研究開発に従事.FPGAや高位合成を活用している

著書

  1. [VOD/KIT]一緒に動かそう!Lチカから始めるFPGA開発【基礎編&実践編】,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]Xilinx製FPGAで始めるHDL回路設計入門,ZEPエンジニアリング株式会社.
  3. [VOD/KIT]一緒に動かそう!Lチカから始めるFPGA開発【基礎編】,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]Zynqで初めてのFPGA×Linux I/O搭載カスタムSoC製作,ZEPエンジニアリング株式会社.
  5. [VOD/KIT]Tiny FPGA実習!高校生から始めるHDLプログラミング,ZEPエンジニアリング株式会社.
  6. [VOD/Pi KIT]カメラ×ラズパイで一緒に!初めての画像処理プログラミング,ZEPエンジニアリング株式会社.
  7. スパコンでも破れない!高セキュリティ・マイコン・プログラミング,ZEPエンジニアリング株式会社.
  8. [YouTube]宇宙軌道ロケット 成功の方程式
  9. [YouTube]宇宙ロケットの電子回路開発
  10. FPGA/Zynqで作るカスタム・コンピュータ・チップ,ZEPエンジニアリング株式会社.
  11. Lチカ入門!ソフトウェア屋のためのHDL事はじめ,ZEPエンジニアリング株式会社.
  12. USBカメラの動画キャプチャ&描画用 Pythonプログラム,ZEPエンジニアリング株式会社.
  13. ライブラリ完備!組立式ラズパイI/O増設ボード MCC DAQ HATSファミリ誕生,ZEPエンジニアリング株式会社.

参考文献

  1. [VOD/KIT] 実習キットで一緒に作る!オープンソースCPU RISC-V入門,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]ARM Cortex-A9&FPGA内蔵SoC Zynqで初体験!オリジナル・プロセッサ開発入門,ZEPエンジニアリング株式会社.