レジスタ(register)とはデータを一時的に蓄えておくメモリーのことである。 各バスとはスイッチを経由して入出力の授受ができるようになっているが, バスの線間の情報のやりとりはしないので, 線ごとにデータのビット幅だけのメモリーを配置すればよい。 また,当然メモリーの内容は書換え可能でなければならない。
図 9.3に1bit分のレジスタ回路の構成を示す。 基本的には前に示した図 5.8の簡易型と同じであるが, 2バスに接続可能なことだけが異なる。 この回路をデータ幅の個数だけ用意したものをレジスタ1個とする。 簡易型のレジスタを採用したのは,回路規模が小さくなることに加え, 読み込んだデータを同じバスへ戻すことはないこと, AバスからBバスへ直ちに移動するような作業も滅多にないことによる。
この内容を書き換えるには,
のクロックでいずれかのバスの値に設定する。
このとき,
のため,ループは開いているので,書換えは容易である。
また,レジスタの内容をバスに出力したいときには,
同じく
のタイミングで出力側のスイッチをバスに接続する。
つまり,
のタイミングはデータの移動など主たる動作に充てられている。
はリフレッシュに用いられる。
レジスタは多いほど便利がよいが,その分チップ面積をとるので,数個に抑える。
この例の場合には16個のレジスタを考えよう。
データ幅を16bitとすると,
上記の回路と同じものが
あることになる。
なお,ALUの入力レジスタは,データをバスから
で受領して,
でALU本体に渡さねばならない。
この場合には,図 9.3の右側の
などを外したものを利用する。
で動くゲートはALU出力レジスタ側に用意することにする。
ALUは,この出力のNOTも必要とするが,
それは二つのNOTの間から出力を取り出すことで達成する。
同様にALUの出力レジスタは,データをALUより
で受領して,
でバスに渡さねばならない。
この場合には,
同図左側の
などを一つにしてALU本体出力に接続し,
に置き換え,
さらに中央の
を
に変更することで達成する。