←講義のツボメニューへ
第7回、第8回
【2003, 10,
23】
4 プログラム&データの記憶
(フォンノイマン型コンピュータの基本構造)の続き
4,2,2 レジスタとは(Register)
レジスタとは1語の命令やデータを保持するところである。
(スーパーやコンビ二でのレジと同じ言葉である。スーパーでのレジは現金を登録し保存するところの意味である)
CPU内には目的に応じて複数個のレジスタが存在する。
例えば、CPUは主メモリに対して読み出したい番地を送り出すために、その16ビット番地数値を発信し保持する信号送信源が要る。
それがメモリ番地レジスタである。またCPUは主メモリから受け取った命令を、その命令の実行サイクルの期間中保持するための場所が要る。
それが命令レジスタである。
4,2,3 レジスタの機能
レジスタの具体的な目的は種々あるが、共通の機能はデータや命令を保持(記憶)することである。
また当然のことながら、保持すべきデータを外部からレジスタへ送り込む(セットする、ロードする)こと、
保持しているデータを外部へ信号として示すことも不可欠である。
コンピュータの5大機能においてCPUは『演算』と『制御』であるが、これは大きく区分した場合であり
ミクロに調べていくと演算や制御を行う以前の基本的大前提として、レジスタの存在すなわち「記憶機能」の存在が不可欠である。
4,2,4 レジスタの構成
レジスタには1語のデータや命令が記憶される。
1語は32ビットのものが多いが、ここでは以後の説明が簡単にするために1語16ビットとする。
その場合は1個のレジスタは16ビットのデータを記憶せねばならない。
1個の回路素子FFを使えば、1ビットの記憶及び表示できる。したがって、1個のレジスタは16個のFFで構成される。
4,2,5 FFの原理とクロックパルス
16ビットレジスタは16個のFFで構成される。FFは道路の信号機に似た動作をする。
FFがCPUのレジスタの構成素子として満足に働くためには、FFとしては次の動作を行わねばならない。
(1) FFは、必要があれば外部からの入力信号を受け取って"1"状態になったり"0"状態になったりする。
(2) FFは、外部からの入力信号がない場合、自己の状態(1or0)を維持保存できる。
(3) FFは、外部に対して自己の状態を伝える事ができる。
実際に電子回路を考案して、(1)と(2)を同時に成立させようとしてもなかなか難しい。
これを解決するために考案されたのがクロックパルスある。
クロックパルスは正確な時間周期で発生する+5vの繰り返しパルスであり、CPUの全てのレジスタの全てのFFに加えられる。
クロックパルスが到来している期間にのみ外部信号から影響を受け、それが1か0かに対応してパルスが落ちる瞬間に”1”状態に
なったり”0”状態になったりする。
また、クロックパルスが来ない期間は、FFは外部入力信号をシャットアウトし、自己伝播は別段止まるわけではない。このように
時間帯によって動作をはっきり区分する事でFFは安定して動作するようになり、コンピュータの基本素子、いわばコンピュータの
細胞として役割を果たすようになった。
4,2,6 FFの動作
レジスタを構成するFF素子には大きく2種類ある。ここではJK-FFを説明する。
JK-FFには5つの端子があるが、入力信号にはJ,K,CLKであり、出力信号にはQ 、Q・となっている。
JK-FFの順出力と逆出力とは常に1と0とが逆に出るようになっている。
つまり、順出力と逆出力はシーソーのようなメカニズムで逆位相になる。
シーソー部分は、クロックパルスが入ったときに中央垂直位置に戻り、
クロックパルスが消滅する瞬間(パルスの後ろエッジ、後縁)に必ずどちらかへ傾く。
一旦どちらかへ傾くと、次のクロックパルスが入るまではしーそーは傾いた位置に固定されている。
また、クロックパルスの後縁の瞬間にどちらへ傾くか?それは、その直前で、J入力K入力が、1か0かによって決まる。
4,2,7 クロック同期 Clock Synchronous
FFはクロックパルスが入ったときのみ動作(状態変化)をする。もっと詳しく言うとクロックパルスの立ち上がりエッジ(前縁)
もしくは立ち下がりエッジ(後縁)のいずれかで動作する。前ページの模型は後縁で動作する。
ただし、「動作する」と言っても必ず状態(1,0)が反転するとは限らない。それは、クロックパルスが入ったときに入力信号が
J,Kいずれに入っているかによって決める。もし、入力信号がいずれもにも入っていなっかたら一般にFFは直前状態を続行する。
FF1個は1ビットの信号を受け取り、記憶する事ができる。FFを16個集めると16ビット=1語の信号を受け取り、それを記憶できる。
よって16個のFFで1個のレジスタを構成できる。
例えば、CPUに10個のレジスタがあるとすると、FFは160個である。この160個のFFはすべてが同じタイミングで一斉
にクロックパルスが入る。すると、160個のFFは一斉に動作する。(状態変化する)また、その時の入力信号の如何により、1→0,0→1,1→1,0→0
の4種類の変化がありうる。変化の種類4つだが、変化する時刻は揃っている。
このようにクロックパルスの時刻に一斉に揃って動作するやり方をクロック同期式と呼ぶ。
CPU内部に存在するデータ(含む命令語)は全ていずれかのレジスタに乗っている。つまり、記憶されている、保持されている、待機中である、
表示している等々そのときの動作状況によって微妙な意味合いがあるが、基本的には「記憶」されている。
これらのデータが1クロックすすむ都度、ほかのレジスタへ移動したり、その途中経路で加工されたりして1個の命令の指示する演算動作を達成する。
一般にCPUの内部の動作は1クロックでは単純な動作しかやらない。それを数クロック積み上げて1つのまとまった演算動作へ仕上げる。