第7回分

ALUでAND演算を実現するとき、A+Kとは違う方法で実現できないのですか。

他にも方法はありそうな気はします。 ぜひ考えてみてください。

ALUでORをつくるとき、A'=A+Bとおいてしまうということですか。

結局はそういうことになります。

以前アセンブラを使ったとき、シフト演算は1クロック命令だったのですが、セレクタが多段になっているシフト演算回路を1クロックで動かせるのでしょうか。

多段になっていても、その最後の段から結果が出てくるところまでを 1クロックになるようにする、ということで、1クロックでシフト演算を 終わらせることができます。

A>>4のような回路はどうするのですか。

4ビット分シフトするセレクタの段を増やせばよいでしょう。

ALUに、FAを用いるのは速度上なのですか、FAを設計上多用したいからなのですか。セレクタを用いると規模が大きくなるため避けたいのですか。

せっかく加算をするためのFAがあるから、有効活用しよう、という発想です。

実際に使っているコンピュータはFAを利用した構造になっているのでしょうか。

ALUは、そうなっているものも多いようですね。

ALUのB'は勝手に決めたものですか。

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

Cin=0として設計しましたが、Cinの入力も利用して設計できないのですか。

もちろん可能ですが、あまりうまい使い道はなさそうです。

ALUのところのセレクタとバレルシフタのところのセレクタの機能が違うのはなぜですか。

いえ、同じものですよ。

ALUにも、高速化させるアルゴリズムなどが考えられているのですか。

いろいろとありそうですね。 残念ながら、私はそれほど詳しくないのですが、 興味のある人は調べてみると面白いんじゃないかと思います。

A'=A+/Bとおけば、S=A・Bとなるのを導くのがわかりませんでした。

論理式をいじっていくとそうなる、ということです。

算術論理演算の回路の仕組みが複雑だったのでまだ完全に理解できなかった。

セレクタというものの使い方がわからなかった。

ぜひ復習を。

講義のはじめの方の話で、(S1,S0,B',Cin)=(1,1,1,*)のとき、(Cout,S)に(-1)が出ますが、この(-1)が出る説明がうまくわかりませんでした。

「1」の2の補数の話、ですかね。

シフト演算とはどのような場合に用いられるのですか、意味があるのですか。バレルシフタはどのようなところで使うのですか。

シフト演算は、2のべき乗の乗算(×2、×4、×8、・・・)そのものですので、 乗算の一部として使うことができます。

他のシフト演算回路について詳しく知りたいです。

ぜひ興味がある人は調べてみると面白いと思います。

右シフト専用の回路がバレルシフタなのですか。それとも接続を変えて左シフトにしてもバレルシフタなのでしょうか。

左シフトの時はどのようになるのですか。右シフトより複雑になるのですか。

双方向バレルシフタというものもあるのでしょうか。

もちろんあります。 というかバレルシフタは、双方向できるようにつないでおくのが 一般的です。

接続していないところはなぜ0になるのですか。

実際には、0になるように、GNDに落としておく、ことになります。

セレクタを増やしたらいくらでもシフトできそうですが、どれくらいが一般的ですか。

それは必要なビット数分、でしょうね。 ただシフト対象の変数が例えば8ビットであれば、8ビット以上のシフトは 不要です。

バレルシフタは、S1S0ビットシフトすると考えていいのですか。(S1,S0)=(1,1)だと11(2)bit→3bitシフトのように。

まったくその通りです。

質問カードで書いた解答をお願いします。あと、質問カードをはじめに欲しいです。

すいません、だいぶ溜め込んでいましたが、すべてまとめました。 また質問カードですが、はじめのときは、人がかなり少ないので、 途中で配るようにしていますが、2回ぐらいにわけましょうかね。

教室が暑くて、少し気分が悪くなりました。

温度調整が難しいですね・・・

A+BとA(EXOR)Bの差がわかりません。

それは論理和と排他的論理和・・・

天下り式の考え方が多く感じますが仕方ないことなのでしょうか、少しつまらないです。

そうですね、それは私も感じていました。 ちょっと進め方を見直そうと思います。

加算と論理和はどう見分けることができるのか。

残念ながら式だけをみてもわからないので、 厳密に区別したいときは、式の前か後に断り書きを入れるぐらいしか 手はなさそうです。 ただ、論理式の中に算術和(加算)が出てくることはありませんので、 そのあたりで、だいたいは区別できそうです。
戻る