next up previous contents index
Next: セレクタ回路 Up: シークエンス回路 Previous: 遅延回路   Contents   Index

レジスタ

パストランジスタ(pass transistor)を利用した回路には, D-FF以外にもいくつか面白いものがある。 その一つは,何らかの記憶機能を持つメモリー(memory)関係の回路である。 メモリーも過去を記憶するので,当然シークエンス回路の仲間であるから, 当然のことながら,同じような要素を持つのである。

先の章で示すように,コンピュータは, プロセッサとメモリーと周辺回路で構成される。 しかし,プロセッサ内部にも若干のメモリーが存在する。 このため,プロセッサ外のメモリーを外部メモリー(external memory), プロセッサ内のメモリーを内部メモリー(internal memory)と呼ぶ。 外部メモリーは大容量のものが多く, 応答速度よりは集積度を重視して設計される。 これに対し,内部メモリーは集積度よりは応答速度を重視する。

内部メモリーはレジスタ(register)5.2とも呼ばれ, 任意のときにデータを入れ,任意のときにそれを取り出すことができる。 基本的にはD-FFの出力を入力に直接接続しループを構成することで, 永久記憶を実現することができるが, 図 5.8の上図に示すように, 書き込みをしたいときには$ \phi _1$のタイミングでループを開けて, 書き込み信号の方を導入する。 出力はループを構成したままでも読み出すことができる。

Figure 5.8: レジスタ回路(上図はD-FF型,下図は簡易型。$ Wt$は書き込み, $ Rd$は読み出し信号)
\begin{figure}\centering
%
\unitlength 1pt
\begin{picture}(203,126)
\put(0,0){\...
...(0,0)[b]{{\footnotesize$\phi_1\cdot\overline{Wt}$}}}
\end{picture}
\end{figure}

図 5.8の下図には上図の簡易型を示すが, ループが全体としてNOTを構成しないため, ラットレーシングが発生しないことが保証されているので, パナマ運河方式はとっていない。 しかし,最初のインバータの前の電位が長時間経過すると, 正確な1や0の値から動いていってしまう危険がある。 このため,$ \phi _2$のタイミングで毎周期ごとにループを構成し, きちんとした電位に戻すリフレッシュ(refresh)という作業を行っている。

問題3
図 5.8の上図の場合,書き込みと読み出しのデータが異なっていても, これら二つの動作を同時に実行できることを確かめよ。

普通のレジスタでは,1個のデータしか記憶できないが, 複数のデータを記憶する方法として,複数のレジスタを直列に配置し, 新しいデータを入れると古いデータはより奥へ押し込まれていく形式の シフトレジスタ(shift register)というものがある。 データは押し込まれていくだけなので, データの内容は一番奥,つまり最後の出口でしか見られない。 このため,最初に入れたデータが最初に現れてくるので, こうした機能はFIFO(first-in-first-out)と呼ばれる。

Figure 5.9: シフトレジスタ回路($ Sh$はシフト信号)
\begin{figure}\centering
%
\unitlength 1pt
\begin{picture}(298,56)
\put(0,0){\s...
...){\makebox(0,0)[b]{{\footnotesize$\phi_1\cdot Sh$}}}
\end{picture}
\end{figure}

シフトレジスタの回路を図 5.9に示す。 この場合には,各レジスタ間のデータがすべて異なりうることから, ちゃんと運河方式を採用したD-FFの連続したようなものでなければならない。 ただし,D-FFではクロックのくるたびに,データは右へ移動していくが, この回路では一番左に書き込みを行ったときにだけ,データ移動が起こる。 新しいデータが入ってこない場合には,それぞれループを構成して, リフレッシュを繰り返すことになる。

Figure 5.10: スタックレジスタ回路
\begin{figure}\centering
%
\unitlength 1pt
\begin{picture}(200,134)
\put(0,0){\...
...{\makebox(0,0)[b]{{\footnotesize$\phi_1\cdot Pop$}}}
\end{picture}
\end{figure}

同じように複数のデータを記憶するが,データを入れる側でしか データを取り出さない形式のレジスタがあり,スタックレジスタ(stack register)と呼ぶ。 この場合にはデータは左右に動かせる必要がある。 最後に入れたデータが最初に出てくることから,この機能はLIFO(last-in-first-out)と呼ばれる。 回路を図 5.10に示す。 新しいデータを入れることをプッシュ(push), 最後に入れたデータを取り出すことをポップ(pop)と言う。 この回路ではD-FF的な基本回路の間を繋ぐゲートが2種類あり, プッシュの際は右シフト信号$ Push$がONし, ポップの際は左シフト信号$ Pop$がONする。 シフトレジスタの場合には,一番右のデータはいつでも読めるが, スタックレジスタの場合には,ポップしたデータを再び読むことはできない。


next up previous contents index
Next: セレクタ回路 Up: シークエンス回路 Previous: 遅延回路   Contents   Index
Yoichi OKABE 2010-04-20