電子計算機概論I講義日記



4/13

初回。教室に入ったら予想以上に受講生が多い。 40部用意していったプリントが足りなくなった。 後で演習の時間を取る予定なので、その間に追加印刷することにして、 取り敢えず開始。能書きプリントとアンケートとを配る。 4年生以上11名+3年生27名+他学科4名の42人。

プロジェクタ資料を仕込んでいって映しながらの授業。 去年と大体同じだが、計算機の種類の紹介のアナログ計算機の所で、 図式計算(計算図表・ノモグラム)のごく簡単な紹介を入れた。 等間隔の平行線に同じ目盛を振っておくと、 定規で合わせるだけで2数の平均値が読みとれる、という程度だが。 計算尺も現物を見せて紹介。

本題は「計算の実現(計算機の仕組み)」から。 全てのデータ(プログラム内蔵方式なのでプログラムもですが)は ビット列で表される、ってことで、 正整数の二進表記の話をしてから、 去年は2回目に行なった二進表記の筆算の演習を、今年は初回に行なった。 論理回路の構成に向けて、 基本となる二進各桁の計算を積み重ねて計算が実行される、 という手続きを実感してもらうのが主眼。 十進←→二進の変換は説明不要かと思ったら、 手が止まっている人も数名いた模様。 上の桁から決めていく方法と下の桁から決めていく方法とを紹介。 理屈は十進と同じで、2で桁上がりして、数字が0・1しかないだけだよね、と。

二進だと桁数多いよね、てんで十六進表記に触れてから、 負の整数を表すにはどうしたら良いだろう、というネタ振りをして初回終了。 順調に進んだが、早過ぎた訳でもあるまい。

4/20

ざっと前回の思い出しから入って、演習の答案返却。 続いて"2の補数表示"の話。 この辺から単に数学の話なだけでなくて実装の工夫とかそゆことが入ってくる。 ただ「数学的にあるべき姿を追求すると、実装上の良い姿も見えてくる」 という辺りは伝えたい所。一見するとピンと来ないかも知れないが、 良く考えるとmod 2^8での計算・表記だから自然であって、 従って演算にも都合が良くって、 それが簡潔な回路構成とか性能向上とかに繋がっている。

筆算の練習を前回に行なったので、ここでもう一度、 正負の整数の筆算とその際の桁溢れの観察の演習をすることが出来た。 この後で実際の論理回路の構成を考える準備として、 筆算演習は沢山やっておきたい所だし、 桁溢れについては今までレポート課題に回していたが、 きちんとした解答が少なかったので、ここでやっといた方が良かろう。

演習の後は論理回路の話の導入。基本的な論理素子の紹介くらいまで。 もう少し進めたかったが、演習に時間が掛かり過ぎたか。

演習の答案を見てみると、桁溢れ「判定」の意味が通じ難いみたいですね。 計算結果が -2^7〜2^7-1 の範囲に入らなかった時、 というのでは殆ど答えになってない。 だって「計算結果」が正しいかどうかを判定するんだから、 上の言い方では殆ど「計算結果が正しければ正しい」と言っているようなもの。 大体、「計算結果」として得られるものは二進8桁のbit列に過ぎないので、 それを2の補数表示で読んだら必ず -2^7〜2^7-1 の範囲な訳です。 それが正しいとか正しくないとか、我々は別途計算してるから判る訳で、 それを計算機が自動的に判定するには (要はoverflow flagにbitを正しく立てるには) どういう回路を組めば良いか、という話なんですがね。 余り伝わってなかった模様。

4/27

前回の演習の補足から。前回の項の最後に書いたようなことですが、 それが論理回路の前振りでもあるので少し強調。

で、論理回路の話。 回路図を書いてみる段階にならないと何を言ってるか判らないんじゃないか、 という気が、話していて感じてくる。 Boole関数などの話を後回しにして、 何はともあれ回路図を書くのを早めにした方が良いのかな。 論理和標準形の話も回路図を書いてみてからの方が判り易いかも知れない。

XORや半加算器をNOT・OR・ANDで作ってみせたが、 演習でやらせたらどれくらい出来るんだろうか。 この辺りを例として演示してからでないと結局何も手が動かないかも。 とにかく演習問題として、全加算器を作るという課題プリントを最後に配って終了。 残り5分を切るくらいではこの時間で演習→提出までは行けない。 Boole関数や論理和標準形の話を後回しにして、回路図作りを先にすれば、 この時間で演習→提出まで行けたのかも。 まぁ来週は大型連休で休みなので、次回までの宿題を出せて丁度良かったかも知れん。 宿題に回したら逆に余裕を持って終わることになった。

問題: 全加算器(full adder)を、NOT, OR, AND を用いて構成せよ。

5/11

前回提示の課題(全加算器)の板書発表者を募ったら1人手を挙げてくれたので 板書してもらう。連休で1回空いているので、前回の復習を軽く流してから解説。 板書してくれたのは、 3つの足し算なので半加算器2つ組合わせて足し算を2回行なう、という方法。 2回とも繰上がることはない、という点に注意すれば良い。 その他の方法として、真理値表をドライに実装しに行く方法を紹介。 論理和標準形に対応する回路構成で、 この方法ならどんなBoole関数でも機械的に実装できる(効率の問題は別)。

続いて順序回路。ここはややややこしい所だと思うのだが、 SR-フリップフロップから始めて、D-フリップフロップの説明まで終わってしまった。 例年は1回ではそこまで進んでいないので、ちょっと速かったかも知れない。 ぐるぐる回っちゃいけない、タイミングを合わせる、 というような所は判り難かったようで、授業後に質問を受ける。 計算機の動作クロックの何Hzというのは、 学生にはどれくらい馴染みがあるのかな。