← 一覧へ
ハードウェア・半導体
#SSD#낸드플래시#FTL#웨어레벨링#가비지컬렉션
最終更新 · 2026-10-02

NANDフラッシュベースのSSD(FTL・ウェアレベリング・ガベージコレクション)

1. 概要

A. 定義

SSD(Solid State Drive) は、回転磁気ディスクの代わりに NANDフラッシュメモリ(NAND Flash) を記憶媒体として用い、ホストの論理アドレスとフラッシュの物理アドレスを仲介するソフトウェア層 FTL(Flash Translation Layer) を通じてブロックデバイスのように動作する半導体記憶装置である。フラッシュセルの物理的制約(上書き不可、限られた寿命)をFTLが覆い隠し、OSには従来のディスクと同一のインタフェースを提供する。

SSDを理解する出発点は、「NANDフラッシュはディスクのようにその場で上書きできない」 という物理的事実である。ハードディスクは特定のセクタに新しい値を直接重ね書きできるが、NANDフラッシュは 書き込み(program)はページ単位 で行う一方 消去(erase)ははるかに大きいブロック単位 でしか行えず、すでに値が入ったページはブロック全体を消去する前には再び書けない。この非対称性(ページ書き込み vs ブロック消去)がSSDのほぼすべての設計的難題 — ガベージコレクション、ウェアレベリング、書き込み増幅 — の根源である。SSDの性能と寿命は結局、この制約をFTLがどれほど巧みに隠すかにかかっている。

B. 登場背景および必要性

2000年代後半以降、CPU・メモリ性能は着実に向上したが、記憶装置は磁気ディスクの 機械的探索遅延(seek time、数ms) に縛られてI/Oボトルネックが深刻化した。データセンターのデータベース・仮想化・分析ワークロードは大量の ランダムI/O を要求するが、回転ディスクはヘッドが物理的に移動せねばならないためランダムアクセスで特に脆弱であった。NANDフラッシュは機械的部品がなく マイクロ秒単位のアクセス遅延 と 並列チャネルを通じた高いIOPS を提供するため、このボトルネックを解消する手段として定着した。ただしフラッシュセルは 書き込み・消去を繰り返すほど絶縁膜が劣化して寿命が有限 であるため、寿命を管理し制約を隠すコントローラ・ファームウェア技術が共に成熟して初めて実用的な記憶装置となった。今日SSDはノートPCからオールフラッシュアレイ・AI学習用ストレージまで事実上の標準媒体となった。これに加えてSSDは機械式ディスクの構造的制約 — 騒音・振動・衝撃への脆弱性・高い待機電力 — から自由であるという付加的利点があり、モバイル・エッジ機器から高密度サーバラックまで適用範囲が広い。ただしこれらすべての利点の前提が「フラッシュの物理制約を隠すファームウェア」である点が、SSDを単なる部品ではなく ハードウェア・ソフトウェア協調設計(co-design)の産物 にしており、ゆえに同じNANDを使ってもコントローラ・FTLの品質によって性能・寿命・信頼性が大きく分かれる。

2. SSDの構造と中核構成要素

SSDは大きく ホストインタフェース — コントローラ(FTL・ECC・チャネル管理) — DRAMキャッシュ — NANDフラッシュアレイ の四つの部分で構成される。各構成要素はフラッシュの物理的制約を緩衝しつつ性能と信頼性を引き上げる役割を分担する。

flowchart TB
  Host["ホスト(OS/ファイルシステム)"] -->|"NVMe/SATAコマンド"| IF["ホストインタフェース"]
  IF --> CTRL["SSDコントローラ"]
  subgraph CTRL["SSDコントローラ"]
    FTL["FTL(アドレスマッピング)"]
    GC["ガベージコレクションエンジン"]
    WL["ウェアレベリング"]
    ECC["ECC/LDPCエンジン"]
  end
  CTRL <--> DRAM["DRAMキャッシュ(マッピングテーブル)"]
  CTRL -->|"多チャネル並列"| NAND["NANDフラッシュアレイ"]
  subgraph NAND["NANDフラッシュアレイ"]
    CH0["チャネル0: ダイ・ブロック・ページ"]
    CH1["チャネル1: ダイ・ブロック・ページ"]
    CHn["チャネルN: ダイ・ブロック・ページ"]
  end
  style CTRL fill:#e8f0fe,stroke:#2f6fed,stroke-width:2px
  style NAND fill:#fef7e8,stroke:#e0a500,stroke-width:1px

ホストインタフェース はSSDとシステムをつなぐ通路である。初期のSSDはハードディスク用の SATA(AHCI) をそのまま使ったが、AHCIは単一キュー・低いキュー深度で設計されておりフラッシュの並列性を活かせなかった。これを解消するために NVMe(NVM Express) がPCIe上に登場し、多数のキュー(最大64Kキュー×64Kコマンド)を支援してマルチコアCPUが同時にコマンドを注ぎ込んでもボトルネックがない。実際にSATA SSDが約550MB/sで飽和する一方、PCIe 4.0 NVMe SSDはシーケンシャル読み出し7,000MB/s以上を出す。インタフェースの選択が体感性能を左右する代表的な例である。

コントローラ はSSDの頭脳であり、内部にFTL・ガベージコレクション・ウェアレベリング・ECCエンジンを抱える。コントローラはホストの論理ブロックアドレス(LBA)を受け取ってFTLマッピングテーブルを参照し物理アドレスに変換し、複数のチャネル・ダイに書き込みを分散(インタリーブ)して並列性を引き出す。チャネルが多いほど同時にアクセス可能なフラッシュバンクが増え帯域幅が大きくなる。

DRAMキャッシュ は主に FTLマッピングテーブル を常駐させる空間である。テーブルがDRAMにあってこそアドレス変換が速いが、その大きさはおおよそ 容量の1/1000(1TBあたり約1GB)の水準である。低価格の DRAM-less SSD はこのテーブルの一部をホストメモリに置く HMB(Host Memory Buffer) で代替するが、ランダム性能が下がるトレードオフがある。

NANDフラッシュアレイ はダイ → プレーン(plane) → ブロック → ページの階層で構成される。書き込み・読み出しはページ(例: 16KB)単位、消去はブロック(例: 数百~数千ページ)単位という非対称がまさにここから生じる。下の表はこの階層と各単位で可能な演算を整理したもので、なぜ消去単位が書き込み単位より大きいのか がすべての設計の出発点である。

階層単位 おおよそのサイズ 可能な演算 含意
セル(cell) 1~5bit 電荷蓄積 多段ほど誤り・摩耗↑
ページ(page) 4~16KB 読み出し・書き込み(program) 書き込み最小単位
ブロック(block) 数百~数千ページ 消去(erase) 消去最小単位 → 上書き不可の根源
プレーン/ダイ ブロック多数 並列アクセス インタリーブで帯域幅↑

SSDが回転ディスクを圧倒する性能はこの階層の 並列性(parallelism) から来る。コントローラは一つの大きな書き込みを複数のチャネル・ダイ・プレーンに細かく分けて 同時に 記録するインタリーブを行うため、単一フラッシュダイの遅い書き込み(数百μs)にもかかわらず全体の帯域幅は数GB/sに達する。言い換えればSSDの性能は個々のセル速度ではなく どれだけ多くのバンクを同時に叩くか に左右され、ゆえに空きブロックが潤沢で並列書き込みが可能な新品状態と、GCが忙しい老朽・高占有状態とで性能の差が大きく開く。

3. FTL動作とガベージコレクション・ウェアレベリング

FTLはSSDの心臓部であり、フラッシュの制約をホストから隠す中核ファームウェアである。下の図は「その場上書き禁止」という制約をFTLが ログ構造(log-structured)記録 と ガベージコレクション でどのように回避するかを示す。

flowchart LR
  W["LBA 10再書き込み要求"] --> M["FTL: 新しい物理ページに記録"]
  M --> O["既存物理ページを無効(stale)と表示"]
  O --> MAP["マッピングテーブル更新(LBA10 to 新PPA)"]
  MAP --> CHK{"空きブロック不足?"}
  CHK -->|"いいえ"| DONE["完了"]
  CHK -->|"はい"| GC["ガベージコレクション開始"]
  GC --> V["有効ページのみ新ブロックへコピー"]
  V --> E["元ブロック消去(erase)"]
  E --> FREE["空きブロック確保"]
  FREE --> DONE
  style GC fill:#fdecec,stroke:#d33,stroke-width:2px

A. アドレスマッピング(Address Mapping)

FTLの最も基本的な機能は、ホストの 論理アドレス(LBA) とフラッシュの 物理アドレス(PPA) をつなぐマッピングである。マッピング単位によって ページマッピング(細かいがテーブルが大きい)、ブロックマッピング(テーブルは小さいが柔軟性が低い)、両者を折衷した ハイブリッドマッピング に分かれる。ほとんどの高性能SSDは性能のためページマッピングに近く動作し、ゆえに先に述べた「容量の1/1000」ほどのDRAMが必要になる。

中核的な設計原理は 「その場更新(update-in-place)を行わない」 点である。LBA 10の値を変えよという要求が来ると、FTLは既存ページを上書きする代わりに 空きページに新しく記録 し、マッピングテーブルだけを新しい物理アドレスに更新する。こうすると書き込みが常にシーケンシャル(ログ構造)に起こりフラッシュ特性に合致するが、既存ページが 無効データ(garbage) として積み重なるという副作用が生じる。この無効ページを回収することがガベージコレクションである。

またマッピングテーブルは 突然の電源断 でも失われてはならないため、FTLはマッピング変更の履歴をフラッシュに周期的に保存し、電源復旧時にこれを再構成する。エンタープライズSSDがキャパシタ(PLP, Power-Loss Protection)を搭載し、電源が切れてもDRAMの未反映データをフラッシュへ押し込むのも、このマッピング・データ整合性を守るためである。すなわちFTLは単なるアドレス変換器ではなく 原子性・耐久性を担うミニストレージエンジン に近い。

B. ガベージコレクション(Garbage Collection, GC)

無効ページが混ざったブロックはそのままでは再利用できない。消去はブロック単位であるため、そのブロック内に残る 有効ページをまず別の空きブロックへコピー した後に元ブロック全体を消去して初めて空きブロックになる。この過程がGCである。GCは ホストが要求していない内部書き込み(コピー) を誘発するため、実際にフラッシュに記録されるデータ量がホストの要求した量より多くなる。この比率が 書き込み増幅(WAF, Write Amplification Factor) であり、WAFが2ならホストが1GBを書いてもフラッシュには2GBが記録され、寿命と性能を共に削る。

GCがいつ、どのブロックを対象に回るかが性能の要である。暇なときにあらかじめ回る バックグラウンドGC はユーザー体感遅延を減らすが、書き込み殺到時に空きブロックが枯渇すると フォアグラウンドGC がユーザーI/Oを塞いで遅延スパイクを誘発する。GC対象ブロックの選定には 無効ページ比率の高いブロックを優先回収(greedy)するか、摩耗均衡まで共に考慮する費用便益ベースの方針が用いられる。無効ページが多いほどコピーすべき有効ページが少なく回収効率が良いためである。

これを緩和するためにユーザーに見えない余裕空間である オーバープロビジョニング(OP, Over-Provisioning) を置く。通常728%のOPを確保するとGCがコピーすべき有効ページ比率が下がりWAFが減少する。単純な直観として、装置がほぼ満杯の状態(余裕空間が希薄)ではGCが消去するブロックごとに有効ページが満ちていてコピー量が爆発しWAFが跳ね上がる一方、OPが潤沢なら平均的により'空いた'ブロックを選んで消去できるためコピー量が減る。エンタープライズSSDが消費者用よりOPを大きく(例: 消費者用7%に対しエンタープライズ20~28%)取る理由がここにある。実務ではユーザーが パーティションをわざと少なく割り当て(short-stroking類似) てOPを増やし、書き込み寿命・遅延を改善することもある。

C. ウェアレベリング(Wear Leveling)

NANDセルは P/E(Program/Erase)サイクル 回数に限界がある(下表)。特定のブロックにのみ書き込みが集中するとそのブロックが先に摩耗して全体寿命が短くなる。ウェアレベリングは 書き込み・消去回数をブロック全般に均等に分散 し特定ブロックの早期死滅を防ぐ。頻繁に変わるデータ(hot)とほとんど変わらないデータ(cold)を区分して配置し、長く変わらないブロックのデータをわざと移して(static wear leveling)そのブロックにも消去の機会を与える、という具合である。ウェアレベリングのおかげで数百~数千サイクルのセルでも数年間安定して使える。

D. ECC・信頼性補正

フラッシュは微細化・多段蓄積が進むほどセルに蓄えられた電荷が漏洩・干渉で揺らぎ読み出し誤り率が高くなる。特にセルが長く放置されると電荷が徐々に抜ける リテンション(retention) 低下、隣接セルを繰り返し読むときに生じる リードディスターブ(read disturb)、P/E累積による絶縁膜劣化が重なる。これを正すのが ECC(Error Correction Code) であり、過去のBCHを超え今日の高密度NANDは LDPC(Low-Density Parity-Check) を使う。LDPCは軟判定(soft-decision)復号でより多くの誤りを復元でき、TLC・QLCのように誤りに脆弱なセルを商用化する前提条件となった。すなわちセルの物理的信頼性低下を信号処理で補償する構造であり、コントローラは誤り率が閾値を超えると該当データを別のブロックへあらかじめ移す データリフレッシュ(scrub) まで行って完全性を維持する。

4. セル種別・インタフェース比較と適用事例

セルが一つのマスに何ビットを収めるかによって容量・単価・寿命・性能が体系的に変わる。一つのマスにより多くのビットを入れるほど(電圧区間をより細かく分けるほど)容量当たり単価は下がるが電圧マージンが狭まって誤り・摩耗に脆弱 になるというトレードオフが一貫して働く。

セル種別 ビット/セル おおよそのP/E寿命 特性・用途
SLC 1 数万~10万 最高の耐久性・速度、高価 → キャッシュ・産業用
MLC 2 数千~1万 バランス型 → 過去のエンタープライズ
TLC 3 数百~3千 主流の消費者・データセンター
QLC 4 数百~1千 大容量・読み出し中心(アーカイブ)
PLC 5 実験・初期 超低価格志向、信頼性が課題

上の数値は工程・世代によって偏差が大きいため おおよその傾向 として見るべきである。実際の製品はQLCドライブでも一部領域を SLCのように使うpSLCキャッシュ で運用し書き込みバースト性能を引き上げる。たとえば消費者用QLC SSDは空き領域が多いときはSLCキャッシュで速やかに受け止めるが、キャッシュが満ちるとQLC本領域に直接書きながら速度がぐっと落ちる現象を見せる。これはベンチマーク数値と実使用の体感が異なる代表的な原因である。

インタフェース自体の世代差も体感性能に直接反映される。下の表は主要インタフェースのおおよその特性を比較したもので、フラッシュの内部並列性を外へ引き出すには キューモデルと物理帯域幅 が共に支えねばならないことを示す。

インタフェース プロトコル おおよそのシーケンシャル帯域幅 キューモデル 備考
SATA 3 AHCI ~550 MB/s 単一キュー・32 レガシー互換
PCIe 3.0 ×4 NVMe ~3,500 MB/s 多キュー 普及型NVMe
PCIe 4.0 ×4 NVMe ~7,000 MB/s 多キュー 主流の高性能
PCIe 5.0 ×4 NVMe ~14,000 MB/s 多キュー 最新・高発熱

インタフェース面の適用事例として、データベースOLTPサーバはランダム書き込み・低遅延が重要であるため OPを大きく取ったエンタープライズTLC NVMe を使い、コールドデータのアーカイブは読み出し中心であるため 大容量QLC が経済的である。一方、ログ・ジャーナルのように書き込みが極端な用途は依然として 高耐久のSLC/pSLC が適する。たとえば大型CDN・動画サービスのキャッシュノードは「一度書いて何度も読む」パターンが明瞭であるため大容量QLCでコストを下げ、逆に金融取引ログの保管庫は極端な書き込み耐久性が要求されDWPDの高い製品を選定する。同じ「SSD」でもワークロードに合わせたセル・OP・インタフェースの選択が総所有コスト(TCO)を左右する。

5. 深化 — 最新動向とホスト協調型アーキテクチャ

NAND産業の最近の流れは 水平微細化の限界を垂直積層で突破 することである。平面(2D)微細化がセル間干渉で限界に達すると、セルを垂直に積む 3D NAND が主流となり、積層段数は数十段から 200段以上 へ急速に増えている。積層は面積当たり容量を増やすが、深い穴(チャネルホール)のエッチング・均一性の確保という新たな工程難題を生み、製造社ごとの技術格差を作る。最近は二つのウェハを別々に作って接合する ボンディング・ストリングスタッキング 技法で段数をさらに上げ、セル密度を高めるCBA(Cell-over-Bonded-Array)のような構造で集積度と性能を共に引き上げる競争が激しい。

これらの動向は次のように要約される。

  • 密度: 2D→3D積層、200段+の高積層、ウェハボンディングで容量当たり単価が持続的に下落
  • インタフェース: SATA→NVMe、PCIe世代の引き上げ(4.0→5.0→6.0)で帯域幅拡大
  • 役割分担: ZNS・FDPでFTL機能をホストと共有、WAFを最小化
  • 演算の近接化: 演算ストレージ・CXL・GPU直結でデータ移動を最小化

ソフトウェア・アーキテクチャ面では FTLの役割をホストと分担 しようとする流れが明瞭である。ZNS(Zoned Namespace)SSD は記憶空間をシーケンシャル書き込みのみを許すゾーン(zone)に分け、ホスト(ファイルシステム・DB)がデータ配置を直接統制できるようにする。こうすると装置内部のGCとホストのデータ寿命管理が食い違って生じていた書き込み増幅が減り、WAFを1に近く下げOPも減らせる。同様に FDP(Flexible Data Placement) はホストがデータの寿命ヒントを与えて同じ寿命同士をまとめて書かせる。両アプローチとも「装置が一人ですべて隠していた」従来のFTLから脱し ホスト・装置協調 へ移る共通の方向を示す。

メモリ階層面では CXL(Compute Express Link) ベースのメモリ拡張、そして記憶装置の中で演算を行う 演算ストレージ(Computational Storage) が台頭する。大容量データをCPUへ引き寄せずSSD内部でフィルタリング・圧縮・検索を処理すればデータ移動量と電力を減らせるため、AI・分析パイプラインのI/Oボトルネック緩和策として研究・商用化が進行中である。これはPIMと共に「演算をデータの近くへ移す」という大きな流れの記憶装置版である。

AI学習・推論の需要もSSD設計を変えている。GPUが数百GB~数TBのデータセット・チェックポイントを繰り返し読み込む過程で記憶帯域幅が新たなボトルネックとして浮上すると、GPUがCPUを経ずSSDから直接データを読み込む経路(例: GPUDirect Storage系) と、希少な埋め込み・ベクトルをフラッシュに置き必要な部分だけ読む KVキャッシュ・ベクトルオフロード 設計が注目される。要するにSSDはもはや受動的な記憶媒体ではなく データパイプラインの能動的構成要素 として再定義されており、これはベクトルデータベース・大規模埋め込みサービングとも直接接する。

6. 考慮事項および示唆点

SSDの導入・運用は単なる媒体の置き換えではなく 性能・寿命・コストの多次元最適化 の問題である。技術士の観点から次を考慮すべきである。

  • ワークロードベースのセル・OP選択(適用戦略): 書き込み集約(DBジャーナル・ログ)には高耐久のTLC/SLCと大きいOPを、読み出し中心のアーカイブにはQLCを配置する。DWPD(Drive Writes Per Day)・TBW をワークロードの書き込み量と対比して寿命マージンを定量設計し、調達時の保証基準とする。
  • 性能安定性 vs ベンチマーク(トレードオフ): SLCキャッシュの消尽・GCフォアグラウンド動作による 遅延スパイク(tail latency) を勘案し、ピーク数値ではなく 持続性能(sustained)とp99遅延 で検証する。OPを増やすとWAFと遅延は良くなるが使用可能容量と単価が悪くなる相反を調整する。
  • データセキュリティ・廃棄: フラッシュはその場上書きがなく過去データの残存(remnant)リスクがあるため、単純な削除ではなく 暗号化ベースの即時廃棄(Instant Secure Erase)・Sanitize を採用する。自己暗号化(SED)・全寿命暗号化は廃棄だけでなく紛失・返却時の情報漏洩防止にも必須である。
  • 連携技術・展望: NVMeネームスペース・OP・ZNS/FDPをファイルシステム・DBと 垂直統合 してWAFを下げる設計がTCOを左右する。中長期的には CXLメモリプーリング・演算ストレージ との連携で記憶・メモリの境界が曖昧になる見通しであるため、記憶層を固定された媒体ではなく 階層型データ配置(hot/warm/cold)方針 の対象として設計する観点が求められる。

参考資料


一言まとめ: SSDは「その場上書き不可・ブロック単位消去・有限寿命」というNANDフラッシュの制約をFTLのログ構造マッピング、ガベージコレクション、ウェアレベリング、ECCで隠してブロックデバイスとして提供する半導体記憶装置であり、ワークロードに合わせたセル・OP・インタフェースの選択とZNS・演算ストレージのようなホスト協調型アーキテクチャが性能・寿命・TCOを左右する。