Static Random Access Memory
Static RAM・SRAM(スタティックラム・エスラム)は、半導体メモリの一種である。DRAM(ダイナミック(動的)RAM)に対して、「スタティック(静的)な回路方式により情報を記憶するもの」であることからその名がある。詳しくは概要を参照。
読み書き可能という意味で慣用的に名前にRAM(ランダムアクセスメモリ、Random Access Memory)が入っているが、厳密には本来の意味とは異なるため、当該項目を参照されたい。これはDRAMも同様である。
SRAMは内部構造的に記憶部にフリップフロップ回路を用いているため、ダイナミックRAM(DRAM)と比較して、下記の特徴がある。
定期的なリフレッシュ(回復動作)が不要
内部構造が複雑であるため、高密度に実装できず、大容量メモリには向かないため、記憶容量あたりの単価が高い
制御が容易(インタフェースが単純)で、より真の「ランダムアクセス性」があると言える
「データ残留現象」といった性質が無いわけでもないが、基本的に電力の供給がなくなると記憶内容が失われる揮発性メモリ(volatile memory)である
なお、現在では従来のDRAMの記憶セルを用いながら、消費電力を低減してSRAMと同じインターフェースを持つ疑似SRAMもある。
SRAM内の各ビットは4つのトランジスタで構成される2つの交差接続されたインバータに格納される。その記憶セルは2つの安定状態があり、それぞれを 0 と 1 に対応させる。さらに読み出しと書き込みアクセスのために2つのトランジスタを必要とする。したがって、典型的なSRAMでは1ビットを格納するのに6個のMOSFET(6T)を使用する。
他にも8Tや10Tで記憶セルを構成するものもあるが、これは読み書きポートを複数実装する(マルチポート型SRAM回路)ために使われる。これは、ある種のビデオメモリやレジスタファイルなどに使われる。
一般的に、セル当たりのトランジスタ数が少ないほど個々のセルを小さくできる。シリコンウェハーの製造コストは比較的一定であるため、セルが小さくなれば単位面積により多くのビットを格納でき、メモリのビット当たりのコストも低減される。
6Tよりも少ないトランジスタ数で記憶セルを構成することも可能だが、そのような3Tや1Tのセルは実際にはDRAMであり、SRAMではない。例えば1T-SRAMと呼ばれるものがある。
セルへのアクセスは、ワード線(図ではWL)でイネーブルとなり、それによって2つのアクセス用トランジスタ M5 と M6 を制御し、次いでセル本体をビット線(図ではBLとBL)に接続すべきか否かを制御する。ビット線は読み取り操作と書き込み操作でのデータ転送に使われる。厳密にはビット線を2本持つ必要はないが、その信号と反転信号を同時に提供することでノイズマージンを改善している。
読み取りアクセスでは、SRAMのセルが能動的にビット線を High または Low に駆動する。それに対して、DRAMでは、ビット線がコンデンサと繋がっており、電荷共有(charge sharing)によって、ビット線がHighまたはLowとなるまでに少し時間がかかる。そのため、SRAMの方が帯域幅が大きくなる。SRAMのセルは対称形となっているため、差動信号処理が可能であり、小さな電圧の変化を容易に検出できる。また、DRAMと比べて、SRAMが高速動作できる他の要因として、商用のSRAMチップがアドレスを表す全ビットを同時に受け付けるという点も挙げられる。DRAMは、ピン数を減らして小型大容量化するためにアドレスビットが多重化されており、一度に全アドレスビットを受け付けられない。
アドレス線が m 本でデータ線が n 本のSRAMの大きさは、2m ワード または 2m × n ビットである。
SRAMセルは3種類の異なる状態をとりうる。回路が何もしていない「スタンバイ」モード、データの読み取り要求に対応する「読み取り」モード、内容の更新をする際の「書き込み」モードである。読み取りモードと書き込みモードのSRAMはそれぞれ「読み取り可能性 (readability)」と「書き込み安定性 (write stability)」がなけれはならない。ここではそれら3つの状態を解説する。
ワード線がアサートされていないとき、アクセス用トランジスタ M5 と M6 がセル本体とビット線を切り離した状態となっている。交差接続された2つのインバータ(M1 から M4 で構成)はその間、状態を保持し続ける。
図のQに格納されているセルの内容が 1 だとする。読み取りサイクルでは両方のビット線が 1 に事前充電され、次いでワード線 WL をアサートすることで両方のアクセス用トランジスタをイネーブル状態とする。次にQとQに保持されている値がビット線に転送される。Qが 1 なので、BLは事前充電された値のままとなり、BLはM1とM5を通して 0 に放電される。BLの側ではトランジスタM4とM6がビット線をVDDすなわち 1 にする。メモリ内容が 0 だった場合、逆のことが起こり、BLが 1 となり、BLが 0 となる。BLとBLの電位差は小さくても、センスアンプがそれらの線のうちどちらの電位が高いかを判別し、格納されているメモリの値が 1 なのか 0 なのかを決定する。センスアンプの感度が高いほど、読み取り操作の速度が速くなる。
書き込みサイクルは、まず書き込むべき値をビット線に印加することで始まる。0 を書き込みたい場合、ビット線には 0 を入力する。つまり、BLを 1、BLを 0 とする。これはRS型フリップフロップにリセットパルスを与えるのと同じであり、それによってフリップは状態を変化させる。ビット線に与える入力を逆転させると 1 が書き込まれる。次にWLをアサートすると、格納すべき値がラッチされる。これがうまく機能するには、ビット線の入力ドライバが相対的に弱いセル内のトランジスタよりも強く、交差接続されたインバータの状態を上書きできるよう設計する必要がある。SRAMセル内のトランジスタの大きさは慎重に決定する必要があり、それによって正しい動作を保証する。
アクセス時間が70nsとされるメモリは、アドレス線群に正しいアドレス信号が送られてから70ナノ秒以内に対応するデータが出力される。しかし、データはある時間(5nsから10ns)だけ保持され続ける。また信号の0と1の間での遷移に要する時間も考慮する必要があり、約5nsと見積もられる。アドレスの下位ビットを順次変えながらある範囲のメモリを読み取る場合、アクセス時間はもっと短くなる(30nsなど)。
DRAMと比べて下記の特徴と用途が見られる。
内部構造が複雑であるため、DRAMほど高密度に実装できず、大容量メモリには向かないため、記憶容量あたりの単価が高く、比較的データ量の少ない用途によく用いられる。パーソナルコンピュータの主記憶装置のような低コストが要求される用途には使われていない。
高速な情報の出し入れが可能な点を生かしてキャッシュメモリに用いられる。
SRAMの電力消費は、どの程度頻繁にアクセスされるかに依存する。頻繁にアクセスされる用途ではDRAMと同程度に電力を消費し、一部のICは最大帯域幅で使用すると何ワットも消費する。一方でアクセス頻度が小さい場合、例えばやや低いクロック周波数で駆動したマイクロプロセッサで利用する場合などは極めて消費電力が低くなり、アクセスがないアイドル状態ではほとんど無視できる程度の電力消費(数マイクロワット)となる。
そのため、電池交換中程度の短時間の電源喪失であれば比較的大容量のキャパシタで駆動できる。
また、保存性のよい小さな電池を内蔵あるいは外部に配置することで不揮発メモリ(NVRAM, コンピュータの時計やBIOS設定情報の保持など)のようにも利用できる(バッテリーバックアップ機能)。フラッシュメモリが一般化する以前には、ゲーム機などのカートリッジ内のセーブデータ用に多用された。
SRAMには主に次のようなものがある。
「非同期」インタフェース。28ピンの32k×8ビットのチップ(XXC256 などの名称)や類似の製品。最大16Mビットのチップまである。
「同期」インタフェース。キャッシュメモリなどバースト転送を要求される用途で使用される。最大18Mビット(256k×72ビット)のチップまである。
RAMまたはキャッシュとしてマイクロコントローラに搭載(通常、32バイトから128KBの容量)
一次キャッシュとしてx86ファミリーや他の高性能マイクロプロセッサに搭載(8KBから数MB)
マイクロプロセッサなどのレジスタの実装に使われている。レジスタファイルを参照。
特殊なICやASICに搭載(一般に数KBのオーダー)
プログラマブルロジックデバイスへの応用は、SRAMの高速動作を利用したものであり、記憶セルの状態によってマトリクス状の配線を接続・切断することにより、ゲートアレイとして機能させる。プログラマブルロジックデバイスの一種であるFPGAは、配線だけでなく論理セルの構造もSRAMによるLUT(ルックアップテーブル)で構成されているものもある。
産業システム、科学技術システム、自動車の車載エレクトロニクスなどによく遣われている。最近の電子機器や電子玩具には、ある程度の量(数KBかそれ以下)のSRAMがほとんど必ず搭載されている。デジタルカメラや携帯電話、シンセサイザーなどの複雑な製品には数MBのSRAMが搭載されている。
デュアルポート型のSRAMは、リアルタイム方式のデジタル信号処理回路に使われることもある。
SRAMは、パーソナルコンピュータ、ワークステーション、ルーター、その他周辺機器にも使われている。CPU内蔵のキャッシュメモリ、外付けのバーストモードのSRAMキャッシュ、ハードディスクドライブのバッファ、ルーターのバッファなどである。液晶ディスプレイやプリンターも表示(印刷)する画像を保持するのにSRAMを使っていることが多い。CD-ROMドライブやCD-RWドライブでも256KB程度のバッファをSRAMで構成しており、ブロック単位でデータをバッファリングするのに使っている。同様にケーブルモデムなどの機器もSRAMをバッファとして使っている。
インタフェースが単純ということで趣味でデジタル回路を作る際にはSRAMが好まれることが多い。DRAMに比べてリフレッシュサイクルがなく、アドレスバスとデータバスを多重化せずに直接アクセスでき、回路設計が単純である。バスや電源供給以外にSRAMが必要とする制御は  Chip Enable (CE)、Write Enable (WE)、Output Enable (OE) の3種類だけである。同期SRAMでは Clock (CLK) も必要となる。
nvSRAMはSRAMを内蔵しているが、主電源が切れた状態でも重要なデータを保持することができる不揮発性メモリである。nvSRAMの用途は幅広く、ネットワーク、航空宇宙、医療などで利用されている。電池を内蔵する方式のBBSRAM (Battery Backup SRAM) もnvSRAMと呼ばれることがあるが、大容量コンデンサと不揮発性メモリセルを内蔵していて、主電源が切れるとコンデンサに蓄えた電力を使って自動的にSRAMから不揮発性メモリにデータを転送して保持する方式のnvSRAMもある。
非同期SRAMは4Kbから32Mbのものがある。アクセス速度が高速であるため、キャッシュを持たない組み込みプロセッサの主記憶装置としてよく使われており、パワーエレクトロニクスなどの制御装置(自動車の車載エレクトロニクスなど)、計測システム(ICテスタ)、ハードディスクドライブ、ネットワーク機器(スイッチ、ルーター、IP電話、DSLAM)など様々な機器に使われている。