第2回分

リプルキャリー加算器の"FA"の意味が分からない

全加算器(Full Adder)、ですね。

リプルキャリー加算器の"C-1=0"の意味が分からない、C-1には常に0が入っているという解釈でよいのか?

1の位の、さらに下の桁からの繰り上がりは、整数の加算ではありませんから、 C-1=0と考えればよい、という理解でよいと思います。 ただし固定小数点の演算の場合は、この限りではありません。

RCAとCLA、現在多く使われているのはどちらか

それぞれの長短所に応じて、場合に応じて、ということろでしょうか。

CLAはせいぜい4桁程度の演算にしか向かない、とのことだったが、それだとCLAの存在意義が分からない

4桁だけであれば、RCAよりも非常に高速なので、存在意義はあります。 もっと多くの桁、たとえば16桁でも、RCAであればFAの16段分の 演算時間がかかりますが、4桁CLAを4段つなぐのであれば、 理想的には4段分の組み合わせ論理回路の遅延時間で演算が終わることになります。

この講義では、回路をトランジスタレベルで見た方がよいのか?

ケースバイケースで、トランジスタレベルで見たほうがよい場合もあります。 講義中、適宜、使い分けようと思います。

CLAの長所で”理想的には”とあったが、ゲート数が増えると遅くなる、という理由からなのか?また他にも理由があるのか?

遅くなるのはどういった理屈でなるのか?

CLAの桁数が多い場合の話ですかね。 CLAは桁数が多くなるほど、多入力の論理ゲートが必要になりますが、 その遅延時間は、入力数が多くなるほど急速に大きくなる、というのが 原因です。

桁上げ先見加算器の式が長くて混乱した

ぜひ復習しておいてください。

論理回路に近い講義だったが、集積化などの講義もするのか?

もちろん、それはこれから追々。

実際にFAを作る場合、HAを組み合わせるものと、論理回路をFA用に構成するものと、どちらが使われるのか?

ケースバイケースですが、性能(速度・回路規模)がほしい場合は 専用に設計するのが一般的かと思います。

キャリーが無いとどうして早くなるのか?

RCAでは、下の桁から上の桁へのキャリーの伝播が、 全体の加算の演算時間を決める要因になります。 CLAは、そのようなキャリーを下の桁から上の桁へ順次求めるのではなく、 入力(A, B)から、すぐに求めてします方式です。

いまの加算器は規則性と速さ、どちらが重要視されるのか?

これもケースバイケース、でしょうね。

加算器の”器”はなぜ”機”という漢字を当てないのか?

これは、私も以前から不思議なんですよね。 なんででしょう? ちなみに計算機は、昔は歯車で作られていた機械だから、 「機」という字をあてる、というのは、計算機トリビアです。

回路が複雑なのに、演算速くなる、というのは、何となく不思議というか、パラドックスのような気がする

まあそういう気もしますね。 入力から出力にいたる、もっとも時間がかかる経路(通る論理ゲートの 数が多い経路=クリティカル・パスと呼ぶ)を考えてみると、 よくわかるかと思います。 RCAでは、桁数に比例したキャリーの伝播経路が、 クリティカルパスになります。

CLAの速度の桁数依存性についてもう少し詳しく知りたい

前述のように、多入力論理ゲートの遅延時間が主な要因ですので、 理論的な解析は難しそうですね。 回路シミュレーションをすると、よくわかりそうです。

FAの式で、Qn = An(+)BnとPn=An+Bnの置きかえがよく分からない

置き換え、といいますか、全加算器の出力Cnの値としては、 伝播項にどちらを使ってても同じ結果になる、ということです。 ぜひ計算してみてください。

感覚的に、CLAはRCAと比べてどの程度速いのか?

4桁なら4倍、というところでしょうか。 (RCAは1個のFAの4倍、CLAはFAと同程度)

CLAの長所の「理想的に桁数によらない」という部分が分からない

各桁のキャリーCnと、それをつかって求める和Snが、 入力An・Bnだけの論理式として書かれていますから、 どの桁のCn・Snも、同時に求められる、という意味です。

RCAとCLA以外にどんな加算器があるのか?

派生系はいろいろありますよ。 講義では触れませんが、二進桁上げ先見加算器、などが有名です。

4桁のCLAをRCAでつなぐことは可能なのか?

RCA的に、ということでしょうか。 それであれば、できますね。 4桁CLAのキャリー出力を、次の4桁CLAのキャリー入力につなげばOKです。

FAの式で、Gn=An・Bn、Qn=An(+)Bnより、Cn=An・Bn+An(+)Bn・Cn-1 という書き方は正しいのか?

代入すればそういうことになります。

リプルキャリー加算器と桁上げ先見加算器はコスト的にはどちらが安くすむか?

回路規模だけでは、間違いなくRCAのほうが小さいでしょう。

3つの2進数の演算を、A+(B+C)ではなく、A+B+Cで実現する方法で、実用的なものはあるのか?

うまくつくると回路規模は小さくできそうですね。 詳しくは次回触れます。

リプルキャリー加算器がFAのみで作れるのはわかるが、素子数が増えるので、HAも使った方がよいと思う

実際に設計してみるとわかるのですが、 やはり「規則的」なのは、「楽チン」で「間違いが少ない」のです。 また、加算器のビット数が多くなるほど、 最初の1桁がFAかHAか、というのは、ほとんど回路規模上でも気にならなくなります。

”伝搬”とという字はWebページには”伝播”とあるが、どちらが正しいのか?

同じ意味の言葉のようですので、どちらでもよいです。

FAのCn-1=0とすればHAはいらないのでは?どうしてHAを使用する場合があるのか?

そのとおりです。 まあ加算器を考えていく上で、順番に紹介した、ということで。

An=Bn=Cn-1=1のときは生成なのか?伝搬なのか?

生成ともいえるし、伝播ともいえますね。 どちらにしても、Cn=1となりますから、気にしなくてもよいかと。

Qn=An(+)BnをPn=An+Bnに置き換える、とあるが、Snを求めるときにAn(+)Bnを使うので置き換える必要はないのでは?

まあたしかにそうですね。

理解が深まった、分かりやすかった

どうもありがとうございます。

他の講義(計算機アーキテクチャ)で習ったので質問はない

そうでしたね、もう少しはしょってもよかったですね。
戻る