第9回: 乗算器(その2)

ブースのアルゴリズムの例

ブースのアルゴリズムを使って、乗算を実際にやってみましょう。 たとえば6桁で、X = -9, Y = +25 の積を求めてみましょう。

まずX, Yを2進数で求めると次のようになります。

いまの場合、N=6ですから、j は0〜(N-2)/2、つまり0〜2まで 求めればよく、Yjは次のようになるでしょう。
jy2j+1y2jy2j-1YjZj
00101X・20
1100-2-2X・22
201122X・24
このZjをすべて加算すると、次のようになるでしょう。
Z0 =                  11111110111 (11桁にあわせる)
Z1 = -2・  11011100 = 00001001000 (11桁にあわせる)
Z2 =  2・1101110000 = 11011100000
----------------------------------
                      11100011111
この求められた結果は、2進数で2の補数の00011100001 = 225の 負の数=-225ですから、たしかに-9×25 = -225となっていることが わかります。

ブースのアルゴリズムを使った乗算器の設計

ブースのアルゴリズムによるQ1, Q2, QNの生成

ブースのアルゴリズムでは、まずYjの値からZjを求めるときに、 Yjの値、つまりy2j, y2j+1, y2j-1の値に応じて、 被乗数Xに対して、2jビットのシフト(Q1)、(2j+1)ビットのシフト(Q2)、 2の補数を求める(QN)、のいずれかの演算を組み合わせて Zjを求めました。 これは、逆に言えばy2j, y2j+1, y2j-1の値の組(8通り)に対して Q1, Q2, QNが0か1かを、組み合わせ論理回路で求めればよいわけです。 つまり次のような真理値表の組み合わせ論理回路を求めればよいわけです。
y(2j+1) y(2j) y(2j-1) Y(j) | Q1 Q2 QN
---------------------------+---------
  0       0      0     0   |  0  0  0
  0       0      1     1   |  1  0  0
  0       1      0     1   |  1  0  0
  0       1      1     2   |  0  1  0
  1       0      0    -2   |  0  1  1
  1       0      1    -1   |  1  0  1
  1       1      0    -1   |  1  0  1
  1       1      1     0   |  0  0  0
これから、次のような論理式が導かれるでしょう。 この論理回路を、BTDセルと名づけて、次のような記号で かくことにしましょう。

部分積Zjの生成

続いて、部分積Zjの生成を行います。 と書くと、乗算の結果Zは と書くことができるのでした。 このZjを、X・Yjの部分を書き直して、次のように書くことにしましょう。 つまりANjが符号をあらわし、Aijがi桁目の数、であるわけです。

まずANjは符号ですから、QN=0のときにはZjの符号はXの符号と同じであり、 逆にQN=1のときにはYjが負となるためにXの符号を反転させる必要があります。

同様に、Q1=1のときにはXを2jビットシフトさせるのですが、 このZjの式には、2jビットシフトさせる22jがすでにありますから、 i桁目、つまりAijは、Xのi桁目xiと同じになります。 しかしQ2=1のときには、Xを(2j+1)ビットシフトさせる必要があるので、 結果としてi桁目のAijは、Xの(i-1)桁目xi-1と同じになります。

さらにQN=1のとには、Aijを求めるのに 2の補数をとらなければなりませんから、Aijを反転させ(1の補数)、 全体に1を加える必要があります。

以上から、Q1, Q2, QNとANj, Aij, Cjは 次のような関係になるでしょう。
Q1 Q2 QN ANj Aij Cj
0 0 0 0 0 0
1 0 0 xN-1 xi 0
0 1 0 xN-1 xi-1 0
0 1 1 /xN-1 /xi-1 1
1 0 1 /xN-1 /xi 1
これから、ANj, Aij, Cjは次のような論理式になるでしょう。

このような論理回路のうち、符号をつくるANjをSIBセル、 残りをSELセルと名づけ、それぞれ次のような記号でかくことにしましょう。

(ブースのアルゴリズムを使った乗算器の続きは次回へ)
ここの「(続)ブースのアルゴリズム」の部分の抜粋
この回のソボクな疑問集
戻る