図3.4のブロックダイヤの中のレジスタファイル1は、オペランドを読み出すポートが2つあるマルチポートのレジスタである。しかし、図3.4では、ストアデータ用のもう一つのオペランドを読み出すために同一内容を書き込むレジスタファイル2を追加している。レジスタファイル2をまるまる追加するより、レジスタファイル1に読み出しポートを1個追加すれば良いのではないかという疑問を持たれた方が居られると思う。ということで、マルチポートレジスタはどういう風に作るのか、ポート追加とレジスタファイルの追加の損得勘定はどうなるのかを見てみよう。

図3.6:6トランジスタのSRAMセル

図3.6に示したのは、SRAMに用いられるトランジスタ6個で構成される、いわゆる6Tr記憶セルである。P1、N1とP2、N2で構成されるインバータがループとなるよう接続されて、状態を記憶するラッチを構成している。そして、 WordlineがHigh状態では、N3とN4のパストランジスタがOnとなり、BitとBitの否定の線を互いに反転したレベルにしておくとラッチが反転し、書き込みが行われる。一方、Bitとその否定のラインを同一電位としてWordlineをHighにすると、ラッチに記憶された状態がN3、N4を経由してビット線に読み出される。このビットセルを、データの語長のビット数だけ横方向に並べ、それを縦方向にレジスタ数だけ並べ、周辺回路をつけると図3.7のようにレジスタファイル(あるいはRAM)が出来上がる。

図3.7:1RWレジスタファイルの回路

この図で、Wordlineデコーダは、入力されたアドレスに従って、一つのワード線を選択してHighにする回路であり、Sense Ampは、セルから読み出された差動信号を検出して出力する回路である。また、Write Ampは書込みデータ信号から差動のビット線信号に変換する回路である。

図3.6の回路は読み書きが可能なポートが1つの構成であるが、これを2ポート化すると図3.8の回路となる。

図3.8:デュアルポート記憶セルの回路

この回路では、図3.6のシングルポートの記憶セルと比較すると、N5、N6の第二のパストランジスタのペアとBit 2とその否定の2本のデータ線、そしてWordline 2のワード線が追加になっている。この回路は、ReadもWriteもできるポートが2個あるので、2RW型と呼ばれる。

奇妙に思われるかも知れないが、トランジスタより配線の方が面積を食い、一般に記憶セルのサイズはトランジスタの数ではなく、水平と垂直の配線の本数でサイズが決まる。つまり、図3.6の記憶セルではワード線が1本、ビット線が2本で面積は2単位であるが、図3.8のセルではワード線が2本、ビット線が4本で、面積は8単位に増加してしまう。

詳細に言うと、セルは、実際にはVddとVssという電源線があり、かつ、トランジスタが面積の制約になる場合もあるので、1ポートから2ポートの場合は4倍までは大きくならないが、ポート数が多くなると、このポート数の二乗という面積の関係はほぼ正しい。

また、マルチポートにすると、図3.7に示した周辺回路のWordlineデコーダはポート数分必要であるし、RWポートの場合は、Sense Amp、Write Ampもポート数だけ必要となる。つまり、ポート数が増加するとセルのサイズが大きくなるだけでなく、周辺回路の幅と高さもポート数に比例して大きくなるので、マルチポートのレジスタファイル全体の面積も、おおよそポート数の二乗に比例する。

この図3.8の差動ビット線方式で、記憶セルを3ポートにすると、ビット線が3ペアで6本、ワード線が3本となり、面積は18単位になってしまう。この場合は、次の図3.9のようなシングルエンドビット線方式の回路を用いた方が効率が良い。

図3.9の回路の記憶セルは、P1、N1、P2、N2がラッチを構成するのは図3.8と同じであるが、DinがLowの場合はN3が記憶ノードをプルダウンし、DinがHighの場合は、N4、N5 が反対側の記憶ノードをプルダウンして書き込みを行う。そしてRead Wordline1がHighになるとトランジスタN6がOnとなり、N7を経由してラッチに記憶されたデータを読み出す。そして、Read Wordline2がHighとなるとN8がOnとなり、ラッチの状態をDout2に読み出す。また、Dout3の回路もDout2と同様である。

図3.9:シングルエンドのデュアルポート記憶セル回路。赤で書かれた部分が第二、第三のリードポートを構成する。

この回路は、1ビットの記憶セルに13トランジスタを必要とし、差動ビット線方式で3ポート化した場合に必要な10トランジスタに較べて3個多くのトランジスタを必要とするが、信号は差動ではなくシングルエンドなので、4本のビット線と4本のワード線で済み、面積は16単位となり、差動型の3RWセルよりも若干小さくなる。

但し、差動ビット線方式の回路を3ポート化したものと図3.9の回路の機能は同じではない。前者は3つの独立のポートがあり、それぞれがReadまたはWriteを行える3RWという構造であるが、後者は1つのRead Writeポートと3つのReadポートがある3R1Wという構造になっている。つまり、前者では3つの異なるアドレスのレジスタへの書き込みが同時に行えるが、後者の回路では、書込みは1ポートであり、一時には1つのアドレスにしか書き込めない。

しかし、後者は、ワードラインでコーダを4個実装する必要があるが、1ポートの書込みに加えて3ポートの読み出しが並行して実行できるという利点がある。