- 「情報処理を構成する要素的作業」としての演算(operation)
- 算術演算(四則演算)- 加算、減算、乗算、除算、インクリメント処理、デクリメント処理
- 論理演算 - AND(論理積)、OR(論理和)、NOT(否定)、XOR(排他的論理和)、その他のビット演算(NAND、NOR、XNORなど)
- 比較演算 - 等しいかどうかの判定(==)、大小比較(<、>、<=、>=)
- シフト演算 - 左シフト、右シフト、算術シフト(符号を維持するシフト)、論理シフト(符号を無視)
- 「演算(operation)処理を担うハードウェア」としてのALU(算術論理演算装置、Arithmetic Logic Unit)
算術演算・論理演算を実行するハードウェア要素で、CPU(中央処理装置、Central Processing Unit)やGPU(Graphics Processing Unit)の中核をなす部分である。
ALUは、制御ユニットからの指示を受けて各種の演算を実行し、その計算結果をレジスタやメモリに書き込むといった処理を行う装置である。- ALU(算術論理演算装置、Arithmetic Logic Unit)のハードウェア的内部構成
- 入力レジスタ- 演算対象のデータを一時的に保持。
- 演算回路- 加算器や論理ゲートなど、実際に演算を実行する回路。
- フラグレジスタ- 演算結果に基づいてフラグを設定(例: ゼロフラグ、キャリーフラグ、オーバーフローフラグ)。
- 2種類の算術演算(四則演算)- 「整数」演算 vs 「浮動小数点」演算
a.「整数」演算-アドレス計算(メモリ管理など)、データカウント、ループ処理、状態管理、暗号化などの用途で用いられる演算処理整数値を対象とした演算で、小数点は明示的には取り扱わない。
演算は高速だが、取り扱うことが可能な数値範囲に制限があり、演算処理の結果としてオーバーフロー(取り扱い可能範囲を超えた数値となること)が生じて、演算処理が継続できない可能性がある。
加算・減算が高速。乗算・除算も浮動小数点よりは軽量。
暗号化作業では、データのAND,OR,XOR論理演算といったビット演算を多数回利用することが多い。b.「浮動小数点」演算- AI、グラフィックス処理(画像処理、VR[Virtual Reality,仮想現実]処理など)、数値シミュレーション(気象シミュレーションなど)や数値解析といった科学技術計算などの用途で用いられる演算処理浮動小数点数(floating-point number)とは、小数点を含む実数値の表現形式であり、符号ビット(正または負)、仮数部(正規化された有効桁)、指数部から構成される。
単精度(32ビット)で約7桁の精度、倍精度(64ビット)で約16桁の精度。有効桁数内を超えた部分では、「丸め誤差」が存在する。
浮動小数点演算は複雑で、整数演算よりも計算コストが高い。特に、乗算や除算の処理で計算コストが高い。- 「整数演算」専用ALU vs 「浮動小数点演算」専用ALU
「浮動小数点」計算処理それ自体は、「整数演算」専用ALUでも実行できるが、実行速度は遅い。そのため「浮動小数点」計算処理のためには、「浮動小数点演算」専用ALUが用いられている。現代のCPUには、「整数演算」専用ALU装置と「浮動小数点演算」専用ALU装置=FPU(Floating Point Unit)が統合されていることが多い。ただしコストの関係で、浮動小数点演算専用ALU装置はさほど多くは搭載されてはいない。
これに対してGPUには、大量の「浮動小数点演算」専用ALUが搭載されている。
機械学習やグラフィックス処理ではテンソル計算を大量に処理する必要があるため、「浮動小数点」演算に強いGPUが利用される。関連参考文献