演算論理装置
出典: フリー百科事典『ウィキペディア(Wikipedia)』
![ALUを表す記号。AとBは入力(オペランド)でRが演算結果。Fは制御部からの入力で、Dは出力ステータス。](../../../upload/shared/thumb/8/82/ALU_symbol.svg/200px-ALU_symbol.svg.png)
演算論理装置(えんざんろんりそうち)は、ALU(Arithmetic Logic Unit)とも呼ばれ、コンピュータに搭載されるマイクロプロセッサ(CPU)を構成する部品の1つ。
ALUはCPUの中核である実行ユニットの一部である。 ALUは様々な四則演算や論理演算などを処理する。
現在のコンピュータのALUは2の補数表現を使っている(初期のコンピュータには1の補数を使ったり符号-仮数部形式を使ったりした)。
目次 |
[編集] フォン・ノイマンの提案
1945年、数学者ジョン・フォン・ノイマンはEDVACと呼ばれる新しいコンピュータの基礎的レポートでALUの概念を提案した。1946年、彼はその提案を発展させてプリンストン高等研究所(IAS)でコンピュータの設計に従事し、そのIASマシンが後の多くのコンピュータの原型となった。その提案の中で、ALUなどの彼が必要と信じたものについて概説したのである。フォン・ノイマンは、コンピュータを四則演算を含む基本的な数学の計算をするものと定義し、そのための専用の器官(ALU)が必須であると述べた。
[編集] ALUの動作
多くのALUは以下のような動作をする。
- 整数演算操作 (加算、減算、乗算)
- 論理演算 (AND、NOT、OR、XOR)
- ビットシフト操作 (ワードを指定されたビット数ぶんだけ右(または左)にシフト(またはローテート)する。符号拡張をする場合もある)
典型的なALUでは整数の除算や浮動小数点数の処理を行わない。これらの演算の処理を行う方法としては以下のようなものがある。
- ソフトウェアによるエミュレーション(一般にアセンブラコードでライブラリに実装される) (最も性能が低い)
- マイクロコードでALUが存在しない操作をエミュレーションする (中くらいの性能)
- 除算器や浮動小数点ユニット(FPU)のような別のハードウェア部品で実現する。時にはコプロセッサという形をとる (最も高性能)
[編集] 入力と出力
ALUは入力として処理すべきデータ(オペランドと呼ぶ)を受け取り、制御装置からのコードで実行すべき処理(演算)の種類を認識する。 出力はその演算の結果である。
多くのALUのデザインでは、入力としてステータスレジスタ上の条件フラグを取ってきたり、逆に演算の結果としてステータスレジスタの条件フラグを変更したりする。 例えば、キャリーを入力としたり、キャリーを出力したり、算術オーバーフローをステータスレジスタに表示したり、ゼロ除算をステータスレジスタに表示したりといったことを行う。