主記憶とは何か
CPU がプログラムを実行するための「作業台」である。03.1 で見たフォン・ノイマン型の構成要素のうち、ここを詳しく開けていく。
CPU のレジスタは数十個しかない。プログラムのコードもデータもすべて主記憶に置かれ、CPU が必要なものを都度読み書きする。電源を切ると消えるため「一時記憶」とも呼ばれる。
フォン・ノイマン型では命令とデータを同じメモリに共存させる。OS カーネル・実行中のプログラムコード・スタック・ヒープ・グローバル変数が、それぞれのアドレス領域に配置される。
レジスタ(約1ns)→ キャッシュ(約5ns)→ 主記憶(約60–100ns)→ SSD(約100µs)→ HDD(約10ms)。主記憶は容量と速度の現実的なバランス点にある。
1つのプログラムから見たメモリは、次のように区画分けされている。 アドレスの高いほうから低いほうへ並べたのが下の図である。
アドレスはどう作られるか
メモリの「番地」は、アドレスバスの本数だけで決まる。n 本あれば 2n 通りの番地を指せる——それだけの話である。
CPU 側でアドレスとデータを保持するのが、この2つのレジスタである。
CPU がメモリにアクセスするとき、まず読み書きしたい番地を MAR に入れる。MAR の内容がアドレスバスに出力され、メモリ側で対象の番地が選ばれる。
実際に転送されるデータを一時保持するバッファである。読み出しではメモリからデータが MDR に入り、書き込みでは MDR の内容がメモリへ送られる。
CPU → メモリの一方向。MAR の内容を運ぶ。ビット幅がアドレス空間の広さを決める(32bit → 4GB、64bit → 16EB)。
CPU ↔ メモリの双方向。実際のデータ(命令や値)を運ぶ。バス幅が一度に運べる量を決める(64bit → 8バイト/回)。
読み出し・書き込み・メモリセレクトなどの制御信号を運ぶ。誰がバスを使うかの仲裁(アービトレーション)もここである。
- アドレスバスに目的の番地を出力する(MAR → アドレスバス)
- 制御バスに「読み出し」信号を出力する
- メモリがアドレスをデコードし、該当セルのデータを準備する(アクセスタイム分の待ち)
- データバスに値が現れる(メモリ → MDR)
- CPU が MDR を読み、レジスタに格納してトランザクション完了
メモリの分類体系
半導体メモリは「電源を切ると消えるか」で大きく2つに分かれる。そこから先が、SRAM / DRAM / ROM / フラッシュである。
SRAM — Static Random Access Memory
各ビットをフリップフロップ(6個のトランジスタ)で保持する。電源がある限りデータを保ち続け、リフレッシュ操作が要らないので「Static(静的)」と呼ばれる。
- アクセス時間:0.5〜5 ns(非常に高速)
- 1ビットあたりの回路:6トランジスタ(面積が大きく高価)
- 消費電力:スタンバイ時は少ないが、面積あたりの容量が小さい
- 用途:CPU の L1 / L2 / L3 キャッシュ、レジスタファイル
6T-SRAM
DRAM — Dynamic Random Access Memory
各ビットをコンデンサ1個+トランジスタ1個で保持する(1T-1C 構造)。コンデンサは自然に放電するため、定期的なリフレッシュ(再書き込み)が必要である。これが「Dynamic(動的)」の由来である。
- アクセス時間:60〜100 ns(SRAM より遅い)
- 1ビットあたり:1トランジスタ+1コンデンサ(面積が小さく安価・大容量)
- リフレッシュ:64 ms 以内に全行を再書き込み
- 用途:PC の主記憶(DIMM)、グラフィックメモリ(GDDR)
DRAM はアドレスを行アドレス(RAS)と列アドレス(CAS)に分けて送る。同じピン数でより広いアドレス空間を扱えるようにするためである(05 節で動かす)。
1T-1C DRAM
ROM 系 — Read Only Memory(読み出し専用メモリ)
製造時に配線パターンでデータを焼き付ける。変更不可であるが、大量生産のコストが最も安い。家庭用ゲームのカートリッジなどに使われた。
PROM は一度だけ電気的に書き込み可能。EPROM は紫外線照射で消去して再書き込みできる。窓の付いたパッケージで有名である。
電気的に消去・再書き込みが可能で、バイト単位で書き換えられる。PC の BIOS / UEFI チップに使われる、フラッシュメモリの前身である。
フラッシュメモリ — EEPROM の進化形
フローティングゲート(または電荷トラップ)にトンネル効果で電荷を出し入れしてビットを表す。不揮発性なので、電源を切ってもデータが残る。
セルを直列に接続。大容量・低コストで、SSD・USB メモリ・SD カードに使われる。書き換えの単位はページ/ブロック。
セルを並列に接続。ランダムアクセスが速く、マイコンのプログラム格納(XIP 実行)に向く。容量は小さめ。
1セルに詰め込むビット数を増やすほど容量が増えコストは下がるが、耐久性と速度は落ちる。
DRAM と SRAM を比べる
「Dynamic(動的)」と「Static(静的)」——この名前の違いが、そのまま両者の本質を表している。
1ビットをコンデンサ+トランジスタ(1T-1C)で記憶するが、コンデンサの電荷は自然に漏れる。データを保つには定期的なリフレッシュ(再書き込み)が要る。
充電されている = 1/放電している = 0。放っておくと電荷が漏れる → だからリフレッシュが必要。
1ビットを6個のトランジスタ(フリップフロップ回路)で記憶する。電源が入っている限りデータが安定して保たれ、リフレッシュ不要で非常に高速である。
2つのインバータが互いの出力を保持し合う。電源がある限りデータを維持 → リフレッシュ不要。
| 項目 | DRAM | SRAM |
|---|---|---|
| 構造(1ビット) | Tr × 1 + コンデンサ × 11T-1C | Tr × 6(フリップフロップ)6T |
| リフレッシュ | 必要64 ms 以内に全行 | 不要電源 ON 中は安定保持 |
| アクセス速度 | 遅い60〜100 ns | 速い0.5〜5 ns |
| 集積度(密度) | 高い1T-1C で面積が小さい | 低い6T で面積が大きい |
| 製造コスト | 安い | 高い(約6倍) |
| 大容量化 | 容易主記憶に採用 | 困難回路構造が複雑 |
| 主な用途 | 主記憶(DIMM)GDDR(GPU の VRAM) | CPU キャッシュ(L1/L2/L3)レジスタファイル |
| 揮発性 | 揮発性(電源 OFF で消える) | 揮発性(電源 OFF で消える) |
DRAM も SRAM もどちらも揮発性である。「電源を切っても消えない」のはフラッシュメモリ(ROM 系)のほうである。
超高速
高速・小容量
低速・大容量
- CPU がデータを要求 → まず SRAM(キャッシュ)を確認。ヒットすれば数クロックで完了する。
- キャッシュに無い場合(キャッシュミス)→ DRAM(主記憶)へアクセス。60〜100 ns(200クロック以上)の待ちが発生する。
- DRAM から取ったデータをキャッシュにも入れて(次回のために)、CPU に渡す。
もっともな疑問である。リフレッシュ不要で高速なら、主記憶も全部 SRAM にすれば解決しそうに思える。しかし現実はそうなっていない。理由は3つある。
SRAM の1ビットは DRAM の約6倍のトランジスタが要る。同じ予算では DRAM の 1/6 以下の容量しか作れない。
6T 構造は回路が複雑でダイ面積が大きく、同じ面積なら 1/6〜1/10 の容量しか実現できない。
大容量 SRAM はスタンバイ時の漏れ電流が多く、バッテリー駆動の機器に向かない。モバイルで LPDDR が使われる理由でもある。
DRAM の内部:行列アドレッシング
なぜアドレスを「行」と「列」に分けて送るのか。実際に1つのセルを取り出すところを動かしてみましょう。
DRAM チップの内部は巨大な行列(アレイ)である。たとえば 256 Mbit のチップなら 16,384 行 × 16,384 列 × 1 bit という構成になる。
アドレスピンを多重化し、行アドレスと列アドレスを時分割で送ることで、ピン数を約半分に減らせる。 これが RAS(Row Address Strobe)/ CAS(Column Address Strobe)の仕組みである。
例:「DDR5-6000 CL30-38-38-96」= CL 30、tRCD 38、tRP 38、tRAS 96。
メモリ階層
速さ・容量・コストは同時に満たせない。だから性質の違う記憶装置を積み重ねる。各層をクリックすると実際の数字が出る。
現代のメモリ規格
店頭で見る「DDR5-6000」のような表記が何を意味するのか。世代ごとに何が変わってきたのかを見る。
| 世代 | 最大転送速度 | 動作電圧 | バースト長 | 登場時期 |
|---|---|---|---|---|
| DDR1 | 3.2 GB/s | 2.5 V | 2〜8 | 2000年 |
| DDR2 | 8.5 GB/s | 1.8 V | 4〜8 | 2003年 |
| DDR3 | 17 GB/s | 1.5 V | 8 | 2007年 |
| DDR4 | 51 GB/s | 1.2 V | 8 | 2014年 |
| DDR5 | 89+ GB/s | 1.1 V | 16 | 2020年〜現在 |
転送速度はデュアルチャネル構成の理論最大値である。世代が進むごとに速度は上がり、電圧は下がっていることに注目してください。
DRAM をシリコンインターポーザー上に3次元積層して GPU の近くに置く。1024 ビット以上の広いバス幅で超高帯域を実現。AI・HPC 用 GPU(NVIDIA H100、AMD Instinct)で採用。
モバイル向けに消費電力を最適化した DDR 派生規格。電圧とクロックの動的調整で帯域と省電力を両立。スマートフォン・タブレット・ノート PC(Apple Silicon 含む)に搭載。
GPU のビデオメモリ専用。レイテンシより広帯域を優先し、ピンあたりの転送速度を高めている。ゲーミング GPU の VRAM として広く使われる。
デスクトップ・サーバー向け。240〜288 ピン。DDR4 / DDR5 用で、両面に独立したピン配列を持つ。
ノート PC 向けの小型版。幅が約半分であるが、電気的な仕様は DIMM と同等である。
メモリを2枚(4枚)組で使い、メモリコントローラとのバス幅を2倍(4倍)にする技術である。DDR5-6000 のシングルチャネルが 48 GB/s なら、デュアルチャネルで 96 GB/s。マザーボードの同色スロットに同一仕様の DIMM を挿すのが基本である。
サーバー向けの ECC メモリは1ビット誤り訂正・2ビット誤り検出の機能を持ち、データセンターや金融システムの信頼性に不可欠である。
メモリウォール
03.2 で「メモリの壁」という言葉が出てきた。ここでその中身を見る。 1980年から現在まで、CPU とメモリはまったく違う速さで進化してきた。
CPU の演算性能は約 ×50,000(ムーアの法則 + IPC 向上)。一方 DRAM の帯域は約 ×500、 レイテンシにいたっては ×10 しか改善していない。
- スケーリング(ムーアの法則):微細化するほどクロックが上がり消費電力が下がる
- IPC の向上:パイプライン・スーパースカラー・OoO 実行で1クロックに複数命令
- マルチコア化:2005年以降、コア数を増やして見かけの性能を伸ばす
- SRAM キャッシュの拡大:ダイ上に面積を確保し、メモリへのアクセス自体を減らす
- 物理的な RC 遅延:配線抵抗 × コンデンサの充放電時間は微細化しても比例して縮まない
- センスアンプの動作時間:微弱な電荷を増幅する時間には物理的な限界がある
- 基板上の距離:CPU と DIMM が別パッケージなので、信号の伝送距離が縮まらない
- 容量優先の設計:DRAM は速度より容量を優先してきた
FLOPS では毎年 50〜100% 速くなる(AI 加速器を含む)
ボトルネック
レイテンシは40年で10倍しか改善していない
演算強度(FLOP ÷ Byte)を横軸に取ると、そのプログラムのボトルネックがどちらにあるかが一目で分かる。
従来のアーキテクチャでは CPU が「データを引き取ってから演算」する。In-Memory Computing はその逆で、 メモリアレイの内部やすぐ近くで直接演算する。データ移動量を大きく減らせるので、 エネルギー効率と速度を同時に改善できる。AI とビッグデータの時代の重要な研究テーマである。
DRAM チップの一部に演算ユニットを集積する。Samsung の HBM-PIM、SK hynix の AiM が代表例。メモリ内部バスは外部バスの 100〜1000 倍の帯域があるため、転送律速を根本から解消できる。
SRAM / RRAM / PCM のセルアレイに重みを格納したまま行列積を実行する。電圧と電流の重ね合わせでオームの法則を使い、多値の積和演算を一度に行う。ニューラルネット推論に特化。
演算コアをメモリパッケージと同じインターポーザー上に近接配置する(3D 積層など)。HBM + Logic Die 構成が典型で、NVIDIA H100 や AMD の 3D V-Cache もこの思想に近い中間アプローチである。
| 方式 | データ移動削減 | 精度 | 主なターゲット | 成熟度 |
|---|---|---|---|---|
| 従来 CPU + DRAM | 基準 | 64bit 浮動小数点 | 汎用 | 製品 |
| GPU + HBM | ×5〜10 | BF16 / FP32 | AI 学習・推論・HPC | 製品 |
| Near-Memory (HBM-PIM) | ×20〜50 | FP16 / INT16 | AI 推論・DB 解析 | 初期製品 |
| Analog CIM (SRAM) | ×100〜 | 低精度 INT4 / INT8 | エッジ AI・IoT 推論 | 研究〜試作 |
理解度チェック
7問ある。選ぶと解説が出る。間違えても、なぜそうなるかを読めば十分である。