第7回

ALUのA+B+1やA-B-1などの無駄な部分は何かに使えないのか

残念ながら、どうしようもないっぽいですね。

ALUで信号を選択する回路が複雑だがもっと簡単には出来ないのか

前回見たように、論理演算だけならばなんとかなるのですが、 算術演算が入ると、たぶん今回見た構成が最もシンプルかと思います。

ALUでCoutが伝わらないとなっているが、次のbitのALUがどのようになっているのか気になった。算術演算時はCoutはどうするのか

Coutが伝わらない、ということは、言い換えれば、 次の桁のCinを常に0にする、と考えればよいです。

ALUの構成のところで、AとA'がどうなっているのかが混乱した。加算器を使ったALUでCin→Cin'とするには入力S2、S1、S0、Cin→出力Cin'でいいのか

Aの方は、論理演算のときだけ切り替わるので、ちょっとややこしいですね。 Cinは、算術演算のときは、0や1とする必要がありますが、 論理演算のときは常に0になるため、実際にはS2によってのみ決まる 回路となります。

ALUを作るときCinを判定する回路ではS2だけをいれてS1、S0を入れなくても良いのか

上記の通り、実はそうなります。

全加算器をもちいたALUにおいてS=A+B'=A(XOR)BでBのダッシュが消えるのはなぜなのか。

すいません、板書のミスですね。B'のままです。

全加算器をもちいたALUにおいて加算器はRCAになるということだったが、CLAなどにするときは構成が変わるのか

CLAは、上位の桁へのキャリーの伝播だけを先に求める方式ですから、 加算の結果S自体は、全加算器から出てくるそのまま、でかまいません。 キャリーのところだけ、論理演算のときは0に、算術演算のときは CLA構成とする、ということで可能ですね。

ANDを作る際にS=A(XOR)B'→A''B'でS=A''B+/A''*/Bとしたが、その時B'=/Bだからとかいてあったのだが、なぜ今B'=/Bなのですか

B→B'とする回路の真理値表で、AND演算を埋め込もうとしていたのは S1=1, S0=0のときで、そのときは、B'=/Bとなっているから、です。

論理回路でANDにつくるときK=/Bはどこからでてきましたか

こうするとうまくいくなあ、という、「思いつき」です。

Cinの入力にS2、S1、S0のうちS2はいらないのか。黒板ではS1から2本出てつながってますか

すいません、板書のミスです。

課題の真理値表で、A+B(加算)とA+B(OR)とあるが、同じ物なのか

いえ、記号が違うだけで、前者は算術和(普通の足し算)、後者は論理和、です。 (まぎらわしいんですよね>「+」の記号)

今日習ったALUが実際に用いられているALUなのか

使っているものが多いかと思います。

A'を構成する回路の制御信号はS0、S1、S2でいいのか

そうなるはずです。

複雑な演算器が沢山出てきて分からなくなってきた。課題の2bitALUも難しいと思う

BとB'の真理値表の使い分けが分かりにくい

そう思ったので、自分で整理してもらいないと思い、課題としました。

A'、B'などの上付き符号を使われると、元のA,Bと混同して分かりにくい

すいません、そうですね。ちょっと表記方法を考えてみます。

シフト演算はどんな時に用いるのか。どのくらい高速化できるのか

シフト演算は2n倍する時に便利なのは分かったが、それがシフト演算回路を用意するほどの物なのか。

バレルシフタの実用性があまり見えない

一部の乗算としても使えますし、プログラム中で1ビット単位で データを使うこともよくありますが、そのときにもビットシフトは必須です。 いずれにしても、高速演算を目指すDSPではバレルシフタを搭載しているものも 多いようですが、一般のマイクロプロセッサでは少ないようですね。

左シフトはどのようにやるのか

右シフトの逆にするだけです。

2の倍数をかけるときは論理シフトを使い、奇数をかけるときは他の方法を使うのか

例えば5倍は、4倍+1倍と、シフト演算と加算を併用するか、 あるいは次回から見ていく、乗算気を使うことになります。

バレルシフタ以外で良いシフト演算器はあるのか

ないでしょう。

バレルシフタが分からない

もう一度整理しながら見てみてください。

例でやったバレルシフタは2段なのか

そういうことになります。

n bit×m段のセレクタのnは何に使われているのか

横に並んでいるセレクタの個数、ですね。

ALUを使う場合の問題点は何か

?問題点?
ソボクな疑問集に戻る / 講義資料のページに戻る