自作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ビットの論理回路として実現する
CPUは$\cos$や$\sin$のような複雑な数式を,四則演算に分解することで計算可能にしています.さらに四則演算を加算の組み合わせに分解し,加算は1ビットごとの処理に変換されます.
加算器と論理回路
CPUが処理する最小単位は「1ビット」です.1ビットの加算は,次のような論理回路で表現できます.
- ANDゲート:2つの入力が1のときに1を出力する回路
- ORゲート:2つの入力のいずれかが1のときに1を出力する回路
- NANDゲート:2つの入力がともに1のときだけ0を出力する回路
これらの論理回路を組み合わせて1ビットの加算器が作られ,その加算器を積み重ねることでCPUは32ビットや64ビットのデータ処理が可能になります.
メモリ・アドレスとポインタ
CPUがメモリに保存されたデータを読み取り,計算結果を書き戻すしくみには「ポインタ」が重要です.ポインタは「どのメモリアドレスのデータを扱っているか」を示す値です.次の手順で計算が進みます.
- メモリの特定アドレスにデータを格納する
- 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や高位合成を活用している
著書
- [VOD/KIT]一緒に動かそう!Lチカから始めるFPGA開発【基礎編&実践編】,ZEPエンジニアリング株式会社.
- [VOD/KIT]Xilinx製FPGAで始めるHDL回路設計入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]一緒に動かそう!Lチカから始めるFPGA開発【基礎編】,ZEPエンジニアリング株式会社.
- [VOD/KIT]Zynqで初めてのFPGA×Linux I/O搭載カスタムSoC製作,ZEPエンジニアリング株式会社.
- [VOD/KIT]Tiny FPGA実習!高校生から始めるHDLプログラミング,ZEPエンジニアリング株式会社.
- [VOD/Pi KIT]カメラ×ラズパイで一緒に!初めての画像処理プログラミング,ZEPエンジニアリング株式会社.
- スパコンでも破れない!高セキュリティ・マイコン・プログラミング,ZEPエンジニアリング株式会社.
- [YouTube]宇宙軌道ロケット 成功の方程式
- [YouTube]宇宙ロケットの電子回路開発
- FPGA/Zynqで作るカスタム・コンピュータ・チップ,ZEPエンジニアリング株式会社.
- Lチカ入門!ソフトウェア屋のためのHDL事はじめ,ZEPエンジニアリング株式会社.
- USBカメラの動画キャプチャ&描画用 Pythonプログラム,ZEPエンジニアリング株式会社.
- ライブラリ完備!組立式ラズパイI/O増設ボード MCC DAQ HATSファミリ誕生,ZEPエンジニアリング株式会社.
参考文献
- [VOD/KIT] 実習キットで一緒に作る!オープンソースCPU RISC-V入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]ARM Cortex-A9&FPGA内蔵SoC Zynqで初体験!オリジナル・プロセッサ開発入門,ZEPエンジニアリング株式会社.