ALUの基本 その1
ALUとはArithmetic Logic Unit(算術論理演算装置)の頭文字で論理積、論理和、加算、減算を行う装置である。まず1bitの論理積・論理和と加算のみを行うALUを考えてみる。それは以下の図のようになる。入力をa, bとする。
構造としては単純でAND, ORゲートと全加算器の出力をMuxで選択して出力しているだけである。入力はa, bのほかにCarry in(下位桁からの繰り上がり)とMuxの選択信号Sが必要になる。出力はoutputとCarry out(上位桁への繰り上がり)となる。
このALUを組み合わせて32bitの演算を行うALUを作る。それは以下のようになる。
32bitの入力A, Bのそれぞれの桁をとし、それぞれのALUのCarry outを次の桁のCarry inに入力することで実現する。
さて、先程の1bit ALUに減算機能を追加する。とはという意味である。つまり引く方の正負を反転すれば良い。2進数において、正負を反転することには2の補数表現が利用できる。つまり、各桁のbitを反転させて1を加えればよい。まず、入力bを反転させるには最初の入力と反転させた信号を選択するMuxを追加する。
bitを反転させたあとは1を加えなければならない。これは1bit ALUであるが、実際は先程みたように複数個組み合わせて使う。そのとき、最下位bitに入力されるCarry inは本質的には意味がないものなので通常は0が入力される。しかし、補数表現をとるときに(Invert Bでbit反転を選択するとき)、1を入力するようにするととなり、1加えることができる。これによって負の補数表現を実現することができ、減算が可能になる。