第6回分

ブースのデコーダ

ANj、Aij、X、Xj など、似たような変数名が多くてややこしい。

まあそうですね。

前回に引き続き、ブースの乗算器には多くの工夫があることが分かった。

ですね。

ブースのアルゴリズムを用いた乗算器の説明がよく理解できなかった。例をふまえてもう一度説明してほしい。

A=y2j-1, y2j, y2j+1の式のところが何を言っているのかよく分からなかった。

ぜひ資料を読み返して復習してみてください。

ブースのデコーダはなぜ記号にA、B、Mを使うのか?

A, Bは、やっつけ感が強いですね。MはMinus、でしょうか。

BTD, SIB, SELとは何の略語か?

BooTh Decoder, SIgnBit, SELector、あたりでしょうね。

SIBを使わなくともSELだけでよいのではないのか?

Xの符号(最上位ビット)が必要ですので、必要なはずです。

SIBの図の点線部分は、入力がそのまま出力になる、という意味なのか?

そういうことです。スルー(素通り)してあります。 並べるときにつなぎやすいように、という工夫ですね。

Aijのiは何のことか?ANjのNは何のことか?

X・Yjのiビット目、です。ANjはその最上位ビット、ということです。

シフトの数は何に依存するのか?シフトをする理由がよく分からない。

ブースのアルゴリズムによれば、j=0, 1, 2, ...に対して、 2ビットずつシフトして部分積を加算するこtになっています。

Aijが/xi, /xi-1 でいいのはなぜか?

資料では否定(/xi)を出すようにしてありますが、 これは、あとでつないで全体を作るときにつなぎやすいから、という便宜で、 あまり深い意味はありません。

ブースのアルゴリズムにおいて、Zのiビット目は Ai0 + Ai1 + … + Aij ということでよいのか?

いえ、2ビットずつずらして加算しますので、 Ai,0 + Ai-2,1 + Ai-4,2 + ...となります。

Cjはどこから出力されているのか?プリントを見るとSELから出力されているが、M=Cjと考えればよいのか?

結果としてそのようになります。

ブースのアルゴリズムにおいて、ANj=xN-1(M=0), ANj=xN-1(M=1) のNとN-1の関係が納得いかない。最上位ビットはxN-1ではないのか?

XはNビットですが、X・Yjは、Yj=±2のときに(N+1)ビットになるため、 全体を(N+1)ビットとして考えておき、最上位ビットはxNとなります。

ブースのアルゴリズムと同様の方法でもっと高速化できるのでしょうか?

今回紹介したものは2次のブースのアルゴリズム、と呼ばれる方法です。 もっと次数の高いブースのアルゴリズムもありますが、 回路規模との兼ね合いから2次が現実的のようです。

段数より前処理の方が速いってことですか?

ブースのアルゴリズムの前処理は、単純な組み合わせ論理回路ですので、 十分高速である、というのがポイントです。

ワレスツリー

ワレスとは人名のことか?

はい、そのようです。

ワレスツリーを使うことでデメリットはあるのか?

あまりないでしょうね。

ワレスツリーは加算以外の演算には利用されるのか?

基本的には多数の加算を行うための回路構成です。

ワレスツリーでは加算の段数を減らしているが、加算回数は変化しないはずなのに、段数を減らしただけで速度が上がるものなのか?

それがワレスツリーのポイントなんですね。 ぜひ構成をよく追いかけてみてください。

ワレスツリーでI1~I4はそれぞれが数bitを表すのか?

いえ、加算対象の部分積の1ビットずつ、です。

ワレスの木の2段目のFAでできたCはどこにかかるのか?

次のケタの部分積の加算をするワレスツリーのキャリー入力につながっていき、 結果としてリプルキャリー加算器(というよりキャリー保存加算器)に 似た構成になります。

講義の感想

講義の速さに理解がついていけなかった。途中から何をしているか終えなくなってしまった。

いろいろなことで頭がごちゃごちゃなので、きちんと整理したい。

覚える必要はありませんが、ぜひ一通り、復習しておいてください。

板書の赤色が見にくいので、赤を使うときはもう少し濃く書いてほしい。

なるほど。気をつけてみます。

質問票の回答がすべてWeb上に載っていることにこの間気づき、すごいと思った。

そうですよー

0と1ばかり扱っているためケアレスミスを起こしそう。

気をつけてやる必要がありそうですね。

全体的な質問

実際に回路を使うときは、実験のように7447ICのようなブロック単位で使うのか?

ケースバイケースではないですかね。 7447のような論理ICのブロック、というより、Nビット加算器、のような 単位で全体構成(アーキテクチャ)を考えるのが一般的のように思います。

ここで勉強していることは、どこで生きてくるのか気になった。

コンピュータや、それに類するシステムを自分で作るときの 生きた道具に、必ずなるはずです。

ワレスツリーやブースのアルゴリズムはどの程度のビット数で効率的かを知りたい。

このあたりは、演算器や論理ゲートの遅延時間とも関係するので、 シミュレーション等を行いながら決めていくのが現実的でしょうね。

ワレスツリーとブースのアルゴリズムを組み合わせた乗算器もあるのか?

はい、もちろんこの両者は独立の手法ですので、併用できます。
戻る