【コラム】
次に、インデックスレジスタに使用する16個の4ビットレジスタからなるレジスタファイルを設計してみよう。このレジスタファイルには、それぞれ4個のラッチからなる16個のレジスタと、それらの一つを選択して書き込みを行ったり、読み出しを行ったりする機能が必要である。
次の図では、ペアとなるレジスタ0とレジスタ1のビット3の部分だけを詳しく書き、その他の部分は、以下同様であるので、省略して箱だけを書いている。
レジスタファイルはビット数が多いので、トランジスタ数を節約し、チップ上の面積を小さくするため、FFでは無くラッチを用いる設計が一般的であるので、この設計でも記憶素子はラッチとした。そして、読み出しは、この設計では、トライステートゲートを用いてバスに接続している。読み出しを行うレジスタのトライステートゲートだけがエネーブルされてバスに信号を送り、その他のレジスタの出力はHigh-Z状態とすることにより、一つのレジスタを選択する。
どのレジスタを選択するかは図の左側のデコーダ(DEC0、1~DEC14、15)で決定する。デコーダの回路は、第40回のタイミング発生回路のところで説明したデコードとほぼ同じであり、レジスタ番号を保持するRSレジスタのQ、*Q信号の適当な極性のものをANDすることにより16個の4入力AND回路のうちの一つだけの出力が"1"となる。これにより選択されたレジスタに対して、書き込みを行うWE(Write Enable)が2入力AND回路を通してラッチのG入力に供給され、選択されたレジスタだけにBUS上のデータが書き込まれる。また、RE(Read Enable)信号が対応する2入力ANDゲートを通してトライステートゲートをエネーブルし、選択されたレジスタの内容をバスに出力する。
以上がレジスタファイルの本体であるが、レジスタファイルとして機能するためには、選択するレジスタ番号を供給するRSレジスタやRE、WE信号を生成する回路が必要である。このレジスタ番号を作る回路を次の図に示す。
この図の4個のエネーブル付きFFが選択するレジスタの番号を記憶するRSレジスタを構成しており、RSレジスタへの書き込みはバス制御表において、デスティネーションがRSレジスタになっている場合であり、DST-RS信号をエネーブル端子に接続すれば良い。
通常は、単にこの4ビットの信号をレジスタファイルのデコーダに接続すれば良い。しかし、FIM、SRC、FIN、JINの4命令では3ビットでレジスタペアを指定しているので、偶数、奇数レジスタの指定を制御回路で作り出してやる必要がある。単独にレジスタを使う場合はDST-Reg、あるいは、SRC-Reg信号が"1"となり、RSレジスタのFFの出力値をそのままRS0に出力するが、レジスタペアとして使用する場合は、DST-RegOddとSRC-RegOddという奇数側のレジスタを使用する条件をORして、RS0を強制的に"1"としている。この論理回路には、偶数側のレジスタを使用する条件は明には組み込まれていないが、この場合はDST-RegとSRC-Reg、DST-RegOddとSRC-RegOddのいずれも"1"になっていないので、自動的にRS0は"0"になりEven側のレジスタが選択される。
レジスタファイルのRE、WEを生成する回路図を次に示す。
![]() |
|
レジスタファイルのRE、WE信号生成回路 |
レジスタファイルからの読み出しは、4ビット内部バスのソースがレジスタとなっている場合であり、SRC-Reg、SRC-RegOdd、SRC-RegEven信号をORして、RE信号として使用すれば良い。
一方、レジスタファイルへの書き込みは、そのサイクルにALUで演算を行い、その結果をバスを経由してレジスタに送り、書き込みを行うようなケースがあり、書き込むべきデータはサイクルの終わり頃のタイミングで到着するのが普通である。従って、WE信号は、DST(デスティネーション)がレジスタファイルとなっていることを示すORされたDST-Reg信号とΦ2クロックを反転した信号のANDを取って生成する。4004の実行サイクルの図に示したように、Φ2クロックは各サイクルの終わりに立ち上がりを持つ負方向のパルスであり、これを反転することにより、各ラッチへのG入力はサイクルの終了前に"1"となりサイクル終了時点で"0"になるので、サイクル終了時点における入力データを保持するという動作を行うことが出来る。
なお、このレジスタファイルの回路図では、各レジスタがトライステートゲートを介して直接4ビット内部バスに接続されるように描かれているが、このようにすると16個のトライステートバッファの寄生容量がバスに接続され、バスの動作が遅くなるという問題がある。これを解決するには、レジスタファイルのBUS0~3を直接4ビット内部バスに接続するのではなく、外部ピンをドライブするデータバスバッファのような双方向のトライステートバッファ介して、4ビット内部バスに接続するという構成とすれば良い。そして、ORされたDST-Reg信号と、ORされたSRC-Reg信号でこのバスとレジスタファイルの間のトライステートバッファのエネーブルを制御することにより、レジスタファイルとプロセサ全体の4ビット内部バスのBit-0~3の間で必要なタイミングでデータを中継することができ、かつ、バスに接続される寄生容量を減らすことが出来る。
| セメント鉱物の一種が高温用圧電センサ材料に - 東工大などが発見 [18:13 6/19] |
| 九大、植物の気孔開口に必要なK+チャネルの働きに必要な転写因子を発見 [17:59 6/19] |
| NICTなど、酸化ガリウムを用いたMOSトランジスタを開発 [16:57 6/19] |
| NIBBなど、分裂時の植物細胞内の仕切りができる様子を高解像度で撮影 [16:23 6/19] |
| 筑波大など、眠気は起きている間の経験で変動することなどを発見 [15:57 6/19] |
|
田園都市線に特化したオフィス物件検索サイト、その名も「DT-OFFICE」! [19:58 6/19] 旅行 |
|
アドビ、「Photoshop CC」など最新バージョンの体験版ダウンロードを開始 [19:45 6/19] クリエイティブ |
|
モリサワの「UD書体」がNTT西日本のインターネット端末「光BOX+」に採用 [19:38 6/19] クリエイティブ |
|
ノートン、AR対応シューティングゲーム「ウイルス スカウター」を公開 - 「アプリでネットの平和を守れ!」キャンペーン [19:30 6/19] パソコン |
|
【コラム】くまにっぽう - マイナビベアの日々 第86回 コロポックル [19:30 6/19] ホビー |