SRAM セルの原理(6T・ビットセル安定性)
なぜ SRAM は速くてリフレッシュ不要なのに容量を増やしにくいのか。6トランジスタの双安定ラッチと SNM の仕組みから、キャッシュ容量が縛られる本当の理由が腑に落ちます。
- 1.SRAM の1ビットは2個のインバータを交差結合した双安定ラッチで、電源がある限り0/1を保持し続けるためリフレッシュが不要で高速です。
- 2.読み出しと書き込みでセルに求められる安定性は正反対で、読み出しでは値を壊さない安定性(SNM)、書き込みでは確実に反転させる弱さの両立がセル設計の核心です。
- 3.1ビットに6トランジスタを使うためセル面積が大きく、これが SRAM の高速・低密度という性格と、オンチップキャッシュ容量の上限を決めます。
SRAM が「電荷を溜めず、状態で覚える」という選択
SRAM(Static Random Access Memory)の本質は、1ビットを電荷の量ではなく回路の安定状態として保持することにあります。/semiconductor/dram-cell/ がキャパシタに溜めた微小電荷の有無で1ビットを表し、漏れるたびにリフレッシュするのに対し、SRAM は2個のインバータを向かい合わせにしたラッチで0か1のどちらかに張り付かせ続けます。電源が供給される限り状態は崩れないため、リフレッシュが不要で、これが「Static」の名の由来です。
代償はセル面積です。1ビットに**6トランジスタ(6T)**を要するため、1T1C の DRAM に比べてセルが桁違いに大きく、同じ面積に詰め込めるビット数が少ない。だから SRAM は高速・低密度・高ビット単価という性格を持ち、CPU の L1/L2/L3 キャッシュのようにごく一部の最速領域に使われます。各種メモリの位置づけは /semiconductor/memory-types-taxonomy/ を参照。
6T セルの構造 ── 交差結合インバータと2つのアクセストランジスタ
6T セルは、4個のトランジスタで作る2個の CMOS インバータと、外部とつなぐ2個のアクセストランジスタからなります。インバータの単体動作は /semiconductor/cmos-inverter/ を前提とします。
WL(ワード線, 行選択)
| |
BL ─[ M5 ]─ Q ───────── /Q ─[ M6 ]─ /BL
(ビット線) | | (相補ビット線)
[INV1] [INV2]
Q を出力 /Q を出力
入力は /Q 入力は Q ← 互いの出力を相手の入力へ交差結合
INV1 = pMOS(M2)+nMOS(M1), INV2 = pMOS(M4)+nMOS(M3)
M5,M6 = アクセストランジスタ(ゲート=WL)
- 交差結合(クロスカップル):INV1 の出力ノード
Qが INV2 の入力に、INV2 の出力ノード/Qが INV1 の入力に戻る。この正帰還ループが双安定性を生む。 - アクセストランジスタ M5/M6:ワード線 WL がゲートを制御し、WL を上げると内部ノード
Q//Qがビット線対{BL, /BL}につながる。WL が下がっている間はセルは外界から切り離され、ラッチが状態を保持する。
ノード Q と /Q は常に互いに反転した値(一方が High なら他方は Low)を取ります。Q=High・/Q=Low を論理1、その逆を論理0と定義します。
交差結合した2つのインバータは、片方の出力が他方の入力を強める正帰還ループを作ります。仮に Q がわずかに上がると INV2 が /Q を下げ、下がった /Q を受けた INV1 が Q をさらに上げる ── この自己強化で Q は VDD、/Q は GND へ一気に飛び、そこで安定します。両ノードが中間電位で釣り合う点(メタステーブル点)は理論上存在しますが、利得が1を超える正帰還のため不安定で、ごく小さな揺らぎで必ず0側か1側のどちらかへ落ちます。結果として安定状態は0と1の2つだけになります。
読み出し ── 値を壊さずにビット線へ差を作る
読み出しは次の手順で行います。
読み出し:
1. BL と /BL を両方 VDD(または VDD/2)へプリチャージしておく
2. WL を上げ、M5/M6 をオン → Q/ /Q がビット線対につながる
3. Low 側のノード(例: Q=0)が、つながった BL をわずかに放電し始める
→ BL と /BL の間に微小な電圧差 ΔV が生じる
4. センスアンプが ΔV を検出・増幅して 0/1 を確定
ここで決定的な危険があります。読み出し中、プリチャージで High に保たれたビット線が、アクセストランジスタを通じて Low 側の内部ノードを押し上げてしまうのです。Low 側ノードはアクセストランジスタ(M5/M6)と、そのノードを GND に引くドライバ nMOS(M1/M3)との分圧で決まる中間電位まで持ち上がります。この電位が反対側インバータのしきい値を越えると、ラッチが誤って反転し読み出しでデータが壊れる。これがリードディスターブです。
読み出し時に Low 側ノードの持ち上がりを小さく抑える鍵は、ドライバ nMOS をアクセストランジスタより強くすることです。両者の駆動力の比を**セル比(β比=ドライバ幅/アクセス幅)**と呼び、これを大きく取るほどノードの持ち上がりが小さくなり読み出しが安定します。一般にセル比は1より大きく設計され、これが「アクセストランジスタを強くしすぎてはいけない」という後述の書き込みとの矛盾を生みます。
書き込み ── ラッチを外から強制反転させる
書き込みは、保持しようとするラッチの正帰還に逆らって状態をねじ伏せる操作です。
書き込み(例: Q=1, /Q=0 のセルに 0 を書く → Q=0, /Q=1 へ反転させたい):
1. BL=0, /BL=1 をドライバが強く駆動してビット線対をセットする
2. WL を上げて M5/M6 をオン
3. BL(=0) が M5 を通じて High だった Q を引き下げにかかる
→ Q が反対側インバータのしきい値を割ると正帰還が反転を加速
4. ラッチが Q=0, /Q=1 へ反転して書き込み完了
書き込みで Q を引き下げるには、その Q を High に保とうとしているプルアップ pMOS(M2)の力に、アクセストランジスタ M5 経由の力が打ち勝つ必要があります。つまりアクセストランジスタはプルアップ pMOS より強くなければ書き込めない。両者の比を**プルアップ比(PR)**と呼びます。
読み出しの安定(リードディスターブ耐性)はアクセストランジスタが弱いほど良く、書き込みの容易さはアクセストランジスタが強いほど良い ── この2つは正面から矛盾します。6T セルの寸法設計は、ドライバ・アクセス・プルアップの3種の駆動力比を、読めて・書けて・保持できる狭い窓に同時に収める綱渡りです。プロセスばらつきで個々のセルの比が揺らぐため、この窓は微細化が進むほど狭くなります。
SNM(静的雑音余裕)── 安定性を1つの数値で測る
セルがどれだけ頑健に状態を保てるかを定量化する指標が SNM(Static Noise Margin、静的雑音余裕) です。SNM は「内部ノードに加わってもラッチが反転しない雑音電圧の最大値」を表します。
可視化には2つのインバータの電圧伝達特性(VTC)を重ねたバタフライカーブを使います。
バタフライカーブ(INV1 の VTC と INV2 の VTC を軸を入れ替えて重ねる):
/Q
┤ ╭──────╮ 2本の曲線が囲む「目」が2つできる
┤ │ ■ │ 各「目」に内接する最大正方形の一辺が SNM
┤ ╰──────╯
└──────────── Q
■ = 内接正方形 → 一辺が大きいほど安定
・保持/読み出し時の SNM = 目が大きい = 雑音に強い
・「目」が潰れて正方形が入らない → SNM=0 → そのモードで不安定
2本の VTC が囲む2つの領域(目)それぞれに内接する最大正方形を描き、小さい方の正方形の一辺を SNM とします。目が大きく開いているほど SNM が大きく、雑音やばらつきに対して安定です。重要なのは動作モードごとに SNM が違うことです。
| 局面 | ビット線の状態 | SNM の呼び名 | 効くパラメータ |
|---|---|---|---|
| 保持(WLオフ) | 切り離し | ホールド SNM(最大) | インバータの利得 |
| 読み出し(WLオン) | High にプリチャージ | リード SNM(最小・最重要) | セル比(β比) |
| 書き込み(WLオン) | 片側を 0 に駆動 | ライトマージン | プルアップ比(PR) |
最も厳しいのはリード SNMです。読み出し中はアクセストランジスタがビット線とノードをつなぎ、Low 側ノードが持ち上がってバタフライカーブの目が小さくなるため、保持時より SNM が大幅に縮みます。セルが壊れずに読めるかどうかは、ほぼこのリード SNM で決まります。
SNM はおおむね電源電圧 VDD に比例して大きくなります。逆に省電力のため VDD を下げると目が小さくなり、しきい値電圧のばらつきが相対的に効いてリード SNM が急速に痩せます。これが SRAM の最低動作電圧(Vmin)を決め、ロジックほど電圧を下げられない原因です。低電圧で読み出し安定性を確保するため、読み出し経路を保持ラッチから分離する8T セル(読み出し専用ポートを追加)などの対策が使われます。電圧スケーリングの一般論は /semiconductor/cmos-inverter/ も参照。
なぜセル面積がキャッシュ容量を縛るのか
SRAM が高速なのにキャッシュ容量を大きくしにくい根本理由は、1ビットあたりのセル面積にあります。
| 比較軸 | SRAM(6T) | DRAM(1T1C) |
|---|---|---|
| 1ビットの素子数 | トランジスタ6個 | トランジスタ1個+キャパシタ1個 |
| 相対セル面積 | 大きい(数倍〜十数倍) | 小さい |
| リフレッシュ | 不要 | 必須 |
| 速度 | 高速(数百ps級アクセス) | 相対的に低速 |
| 主な用途 | オンチップキャッシュ・レジスタ | メインメモリ |
6T セルは6個のトランジスタと、それらをつなぐ配線・コンタクトを1ビットごとに敷き詰める必要があり、面積が大きい。CPU のキャッシュはこの SRAM をダイ上に直接載せるため、容量を増やすほどダイ面積が線形に膨らみ、コストと歩留まりに直撃します。だからキャッシュは「全データを置く」のではなく、局所性を頼りに一部だけ高速に保持する小容量の階層として設計されます。
加えて微細化が進むとセル内トランジスタのしきい値ばらつきが相対的に拡大し、前述の読めて書けて保持できる SNM の窓が痩せて、低電圧での歩留まりが落ちます。面積(容量)と SNM(安定性)と電圧(電力)が三つ巴のトレードオフにあることが、SRAM 容量を素直に増やせない正体です。
「SRAM はなぜリフレッシュ不要か」には交差結合インバータの正帰還ラッチが電源のある限り状態を保持するからと答えます。「読み出しで何が危険か」にはプリチャージしたビット線が Low 側ノードを持ち上げてラッチを反転させうる(リードディスターブ)、それを抑えるのがセル比とリード SNMと即答できると良い。「なぜキャッシュは小容量か」には6T でセル面積が大きく、容量増がダイ面積・コストに直結するから。DRAM との対比(6T 高速低密度 / 1T1C 低速高密度)も定番です。
まとめ
- SRAM の1ビットは交差結合した2個のインバータ+2個のアクセストランジスタ(6T)で構成され、正帰還ラッチが0/1のどちらかに張り付くためリフレッシュ不要・高速。
- 読み出しは値を壊さない安定性、書き込みは確実に反転させる弱さという相反する要求を、ドライバ・アクセス・プルアップの**駆動力比(セル比・プルアップ比)**で同時に満たす綱渡りで成り立つ。
- 安定性は SNM(静的雑音余裕) で定量化し、バタフライカーブの内接正方形で測る。最も厳しいのは読み出し中のリード SNMで、VDD を下げると痩せて最低動作電圧を決める。
- 1ビットに6トランジスタを使う大きなセル面積が SRAM の高密度化を阻み、これがオンチップキャッシュ容量の上限を縛る根本理由。面積・安定性・電圧は三つ巴のトレードオフにある。
- 前提となるインバータ動作は /semiconductor/cmos-inverter/、対極にある高密度メモリは /semiconductor/dram-cell/、メモリ全体の位置づけは /semiconductor/memory-types-taxonomy/ も参照。
半導体 Article
SRAM セルの原理(6T・ビットセル安定性)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
SRAM
比較で見る軸
難易度: advanced / カテゴリ: 半導体 / タグ数: 6
導入後に効く点
読み出しと書き込みでセルに求められる安定性は正反対で、読み出しでは値を壊さない安定性(SNM)、書き込みでは確実に反転させる弱さの両立がセル設計の核心です。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- 半導体
- タグ数
- 6
判断チェックリスト
- 自社の用途が「SRAM / メモリ」に近いか確認する。
- 強みである「SRAM の1ビットは2個のインバータを交差結合した双安定ラッチで、電源がある限り0/1を保持し続けるためリフレッシュが不要で高速です。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。