わかりやすく ALU とは
前のレッスンで「足せ」という命令を見ました。では、その足し算は実際にだれがしているのでしょうか。引き算や比較はどうでしょう。CPUの中で計算だけを受け持つ働き手、ALUに会ってみましょう。
計算だけを受け持つ部分
CPUの中には、計算だけを受け持つ部分があります。名前はALUです。
二つの数と「何の計算をするか」を受け取ると、その計算をして結果を出します。
電卓の心臓のようなところです。
二つの数が上から入り、計算の結果が下から出てきます。
ALUは「算術論理演算装置」の略です。
名前はおおげさですが、仕事ははっきりしています。
受け取った二つの数で、言われた計算をすること。それだけをします。
ダイヤルで計算の種類を選ぶ
ALUが役に立つのは、一種類の計算しかしないわけではないからです。
「何の計算」というダイヤルを回して足し算・引き算・掛け算のどれかを選ぶと、同じ二つの数でも違う結果が出ます。
下では、二つの数を入れてダイヤルを切り替えられます。
二つの数を入れて、計算の種類を選びます。
ダイヤルを変えただけなのに、同じ働き手が違う計算をしました。
この「何の計算」は、じつは前のレッスンの命令が決める値なのです。
第6回の加算器はここにいる
ALUを開けてみると、見覚えのあるものがあります。第6回で作った加算器です。
足し算はその加算器が受け持ち、引き算や比較、それにANDやORのような論理演算まで、小さな計算回路が一か所に集まっています。
ALUの中に集まった計算回路。
第5回と第6回で一つずつ作った小さな回路は、じつはこのALUを形づくる部品だったのです。
小さなものが集まって、計算の働き手が一人できあがったわけです。
「どちらが大きいか」にもALUが答える
ALUの仕事のうち、計算と同じくらい大切なのが比較です。
「この数はあの数より大きいか」「二つの数は等しいか」といった問いに、真か偽で答えます。
この真偽一つが、のちに「もし」という分かれ道の種になります。
真は1、偽は0。コンピュータにとっては、これも結局0と1です。
「10は7より大きいか」の答えは真です。
この単純な判断が、とても大切なのです。
プログラムが状況を見て道を選ぶことは、すべてこの比較から始まるからです。
命令がダイヤルを回す
ここで二つの話が出会います。
前のレッスンで見た命令の前の部分、つまりオペコードが、まさにALUのダイヤルを回します。
「足せ」なら足し算に、「引け」なら引き算にダイヤルが合わせられます。
つまり、ALUがする計算の種類が命令の中に書かれているのです。
命令のオペコード → ALUのダイヤル。
命令が何をするかを決め、ALUがその計算をやってのけます。
これでCPUの二つの中心部品がそろいました。
次のレッスンでは、この二つがどうやって一体となって働くのか、CPU全体をのぞいてみます。