自作CPU入門4:CPUが演算を処理するメカニズム


jpegデータを解凍する複雑な数式を解いて画像を再現するしくみ


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


CPUが三角関数を演算する仕組み

図1 CPUは複雑な三角関数の計算やデータ処理を,加算や論理回路といった単純な動作に分解して実現する.画像クリックで動画を見る.または記事を読む

コンピュータは複雑な計算を行いますが,これらの計算はすべて単純な処理に分解され,CPUが処理できる形に変換されます.

三角関数の計算とコーディック手法

三角関数($\sin$や$\cos$)の計算には,特別な近似手法が使われます.有名なのが「コーディック CORDIC(COordinate Rotation DIgital Computer)」という手法です.コーディックは以下の手順で計算されます.

  1. 三角関数の計算を加算,減算,乗算,除算といった四則演算に分解する
  2. 四則演算をさらに単純な加算処理に分解する
  3. 加算処理を1ビットの論理回路として実現する

CPUは$\cos$や$\sin$のような複雑な数式を,四則演算に分解することで計算可能にしています.さらに四則演算を加算の組み合わせに分解し,加算は1ビットごとの処理に変換されます.

加算器と論理回路

CPUが処理する最小単位は「1ビット」です.1ビットの加算は,次のような論理回路で表現できます.

  1. ANDゲート:2つの入力が1のときに1を出力する回路
  2. ORゲート:2つの入力のいずれかが1のときに1を出力する回路
  3. NANDゲート:2つの入力がともに1のときだけ0を出力する回路

これらの論理回路を組み合わせて1ビットの加算器が作られ,その加算器を積み重ねることでCPUは32ビットや64ビットのデータ処理が可能になります.

メモリ・アドレスとポインタ

CPUがメモリに保存されたデータを読み取り,計算結果を書き戻すしくみには「ポインタ」が重要です.ポインタは「どのメモリアドレスのデータを扱っているか」を示す値です.次の手順で計算が進みます.

  1. メモリの特定アドレスにデータを格納する
  2. CPUはそのアドレスを指示された順に読み出してデータを加算する
  3. 合計値は特定のアドレスに保存される

このしくみを繰り返すことで,複雑な処理もシンプルな処理に分解して実行できます.〈著: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エンジニアリング株式会社.