TL

ストレージ階層とインターフェース系統図(SATA/SAS/NVMe/CXL)

なぜNVMeは速く、CXLは何が違うのか。ATA/SCSIの系譜からSATA・SAS・NVMe・CXLまでをプロトコル層と帯域で対比する系統図として整理し、各規格を選ぶ判断軸が掴めます。

応用SATASASNVMeCXLストレージインターフェースPCIe最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.ストレージ接続は古いパラレルバス(PATA/パラレルSCSI)から差動シリアル化したSATA/SASへ進み、さらにPCIe直結のNVMe、メモリセマンティクスのCXLへと「コマンド層とリンク層の分離」を進めながら分岐してきた。
  • 2.SATAはATAコマンド由来で安価・単純、SASはSCSIコマンド由来で多重化やデュアルポートなどエンタープライズ機能を持ち、両者はAHCI経由の単一キュー(最大32)で頭打ちになる。
  • 3.NVMeはPCIeレーン上に最大65535本×深さ最大65536のキューを多数並べてSSDの並列性を解放し、CXLはPCIe物理層を共有しつつメモリとしてロード/ストアでアクセスする別系統として枝分かれした。

系統図を読む前提:コマンド層とリンク層を分ける

ストレージインターフェースの系統を辿るとき、混同しやすい2層をまず分けます。コマンド層は、ホストがデバイスへ「このセクタを読め/書け」と伝える論理的な命令体系――ATAコマンドセットやSCSIコマンドセットです。**リンク層(物理転送)**は、その命令を実際にビット列として運ぶ電気的な経路――パラレルバスか、差動シリアルか、PCIeレーンかです。

系統図の分岐点の多くは「どのコマンド層を、どのリンク層に載せ替えたか」で説明できます。たとえばSATAは古いATAコマンドを新しいシリアルリンクへ載せ替えた規格であり、NVMeは逆に新しいコマンド層を既存のPCIeリンクへ載せたものです。この2軸を意識すると、似た名前の規格が整理されます。

2つの源流:ATAとSCSI

1980年代に2つのコマンド体系が定着しました。ATA(IDE)はPC向けに安価・単純で、ホスト側に多くを任せる設計。SCSIはワークステーション/サーバー向けで、複数デバイスの多重化・エラー処理・タグ付きキューイングなど高機能を備えました。この「安さのATA」「高機能のSCSI」という性格差が、後のSATA対SASの対立構図へそのまま受け継がれます。

パラレルからシリアルへ:PATA/SCSIの限界

初期のATAとSCSIはどちらもパラレルバスでした。複数の信号線を並べて一度に多ビットを送る方式です。しかし高速化に伴い、線間の到達時間のばらつき(スキュー)とクロストークが致命的になり、クロックを上げられなくなりました。これはPCIeがパラレルバスを捨てたのと同じ壁です。

パラレルの限界
  - 複数線のスキュー: 高クロックで各ビットの到達タイミングが揃わない
  - クロストーク: 隣接線の干渉でノイズが増える
  - 配線本数: コネクタ・ケーブルが太く取り回しが悪い
解決 = 差動シリアル
  - 1ペアの差動信号で高クロック化し、束ねて帯域を稼ぐ

その解として、PATA(パラレルATA)はSATA(Serial ATA)へ、パラレルSCSIはSAS(Serial Attached SCSI)へと、それぞれ差動シリアル化されました。重要なのは、シリアル化されてもコマンド層は引き継がれた点です。SATAはATAコマンドを、SASはSCSIコマンドを運び続けます。系統樹で言えば「リンク層だけが世代交代し、血統(コマンド)は残った」分岐です。

SATAとSAS:同じシリアル化でも性格が逆

SATAとSASは見た目が似た差動シリアルですが、出自どおり役割が分かれます。

SATASAS
コマンド源流ATA(PC向け・単純)SCSI(サーバー向け・高機能)
代表リンク速度SATA 3.0 = 6GbpsSAS-3 = 12Gbps / SAS-4 = 24Gbps
ポートシングルポートデュアルポート(冗長経路)
多重化1対1接続エクスパンダで多数デバイスを扱える
想定用途クライアント・安価な大容量HDDエンタープライズ・高信頼サーバー

SASがエンタープライズで選ばれるのは、SCSIコマンド層が持つ機能がそのまま効くからです。デュアルポートで経路を冗長化でき、エクスパンダで1ホストから多数のドライブをツリー状に接続でき、エラー回復も堅牢です。興味深い非対称性として、SASコントローラはSATAドライブも扱えます(STPというトンネリングでATAコマンドを通す)が、その逆――SATAコントローラでSASドライブを扱うことはできません。高機能側が低機能側を内包する関係です。

AHCIという共通のボトルネック

SATAもSAS(の多く)も、ホスト側ドライバは長くAHCIを前提にしてきました。AHCIはコマンドキューが1本、深さ最大32という設計です。これはHDD時代――1本のヘッドが順番にアクセスする前提――では十分でした。しかしSSDの内部は多数のNANDチップを並列に叩けるため、キュー1本では並列性を出し切れません。この頭打ちこそ、次のNVMeが生まれた直接の動機です。

NVMe:コマンド層をPCIeへ載せ替えた飛躍

NVMe(NVM Express)は、ATAでもSCSIでもない新しいコマンド層を一から定義し、それをPCIeリンクへ直接載せた規格です。系統図では「リンクを変えた」のではなく「コマンド層を新設した」枝として位置づけると本質が見えます。HDD前提の遺産を捨て、フラッシュSSDの並列性を解放するために設計されました。

NVMeの核心は多数の深いキューです。AHCIが1本×深さ32だったのに対し、NVMeは仕様上最大65535本のキュー、各深さ最大65536を持てます。さらにキューを各CPUコアに割り当て、ロックなしで投入できます。

AHCI:  [ 全コア ] -> ロックを奪い合う -> 1キュー(深さ32) -> デバイス
NVMe:  コア0 -> SQ/CQ0  ┐
       コア1 -> SQ/CQ1  ├ 多数の独立キューを並列投入(ロックフリー)
       コア2 -> SQ/CQ2  ┘
       SQ=送信キュー, CQ=完了キュー(コアごとにペアで持てる)

各キューは**送信キュー(SQ)と完了キュー(CQ)**の対で、ホストはメモリ上のリングへコマンドを書き、デバイスへ「ドアベル」レジスタで通知するだけです。割り込みもMSI-Xでコアごとに分散できます。結果、NANDフラッシュSSDの内部並列性――多数のチップ・プレーンを同時に動かす能力――を、ホスト側のキュー構造が初めて受け止められるようになりました。帯域もPCIeレーンに比例し、x4リンクならSATAの数倍~十数倍に達します。

フォームファクタやプロトコルと混同しない

NVMeはあくまでコマンド層プロトコルです。M.2U.2はフォームファクタ(形状・コネクタ)であり、M.2スロットにはSATA接続のSSDもNVMe接続のSSDも存在します。スロット形状が同じでも、その先がAHCI(SATA)かNVMe(PCIe)かで速度が桁違いになります。さらにNVMeはローカルPCIeだけでなく、ネットワーク越しに運ぶNVMe-oF(over Fabrics)へも拡張されており、コマンド層とトランスポートが分離している設計が効いています。

CXL:ストレージから「メモリ」へ枝分かれする系統

CXL(Compute Express Link)は、ここまでとは異なる方向へ伸びた枝です。CXLはPCIeの物理層(同じレーン・電気・コネクタ)を共有しつつ、その上に新しいプロトコル群を載せます。注目すべきは、ストレージのように「ブロックを読み書きするコマンド」ではなく、メモリと同じロード/ストア(メモリセマンティクス)でアクセスできる点です。

CXLの3サブプロトコル(PCIe物理層を共有)
  CXL.io     : PCIeと同等のI/O(デバイス検出・設定)
  CXL.cache  : デバイスがホストメモリをキャッシュコヒーレントに参照
  CXL.mem    : ホストがデバイス側メモリをロード/ストアで直接アクセス

ブロックI/O(NVMe)では、データはいったんブロック単位でメインメモリへコピーされてからCPUが触ります。CXL.memでは、デバイス上のメモリがCPUのメモリ階層の一員として見え、キャッシュラインの粒度で直接アクセスできます。これによりメモリ容量の拡張(メモリプーリング)やアクセラレータとのコヒーレント共有が可能になります。つまりCXLは「より速いストレージ」ではなく、ストレージとメインメモリの境界そのものを溶かす系統だと理解するのが正確です。

NVMeとCXLは競合ではなく層が違う

「CXLはNVMeの後継で上位互換」という理解は誤りです。NVMeはブロックストレージ(永続化・大容量・ブロック単位)、CXLはメモリ拡張/コヒーレント共有(揮発も含む・バイト/キャッシュライン単位・低レイテンシ)と、解く問題が異なります。両者は同じPCIe物理層を共有しつつ、コマンド/アクセス意味論のレイヤーで別系統に分かれているのです。

系統図を一望する

最後に、各規格がどのコマンド/アクセス層を、どのリンク層へ、いつ載せたのかを整理します。

規格源流・登場期リンク層アクセス意味論主な狙い
PATA / SCSI1980年代パラレルバスブロック(ATA/SCSI)初期のディスク接続
SATA2003頃〜差動シリアルブロック(ATA由来)安価・単純なクライアント
SAS2004頃〜差動シリアルブロック(SCSI由来)高信頼・多重化のサーバー
NVMe2011頃〜PCIeレーンブロック(新規定義)SSDの並列性を解放
CXL2019頃〜PCIe物理層共有メモリ(ロード/ストア)メモリ拡張・コヒーレント共有

系統の分岐を貫く原理は3つです。第一にリンク層のシリアル化――パラレルの限界を差動シリアルで突破し、SATA/SASが生まれました。第二にコマンド層の刷新――HDD前提のAHCIを捨て、PCIe上に深いキューを多数持つNVMeが飛躍しました。第三にアクセス意味論の転換――ブロックI/Oからメモリセマンティクスへ踏み出したCXLが、ストレージとメモリの境界に新しい枝を伸ばしました。CPUのISA系統樹が互換戦略で枝を分けたのと同様、ストレージ系統も「何を引き継ぎ、何を捨てたか」で太い枝と分岐が決まってきた、というのが全体像です。

試験のポイント

「SATA=ATA由来・安価、SAS=SCSI由来・デュアルポート/エクスパンダで高機能」「AHCIは1キュー深さ32が上限でSSDで頭打ち」「NVMeはPCIe直結で多数の深いキュー(最大65535本・各深さ最大65536)をコアごとに持ちロックフリー投入」「CXLはPCIe物理層を共有しCXL.io/.cache/.memでメモリをロード/ストアアクセス、NVMeとは層が異なる」の4点が頻出です。NVMeはプロトコルでM.2/U.2はフォームファクタという区別も問われます。

まとめ

  • 系統図はコマンド/アクセス層リンク層の2軸で読む。分岐の多くは「どのコマンド層をどのリンク層へ載せ替えたか」で説明できる。
  • 源流はPC向けのATAとサーバー向けのSCSI。その性格差がそのままSATA(安価・単純)対SAS(デュアルポート・エクスパンダ・高信頼)の対立に受け継がれた。
  • 両者はAHCIの1キュー深さ32で頭打ちになり、これを打破するためPCIe直結で多数の深いキューを持つNVMeが新コマンド層として登場した。
  • CXLはPCIe物理層を共有しつつ、ブロックではなくメモリセマンティクス(ロード/ストア)でアクセスする別系統で、ストレージとメインメモリの境界を溶かす方向へ枝分かれしている。

CPU/メモリ/ディスク Article

ストレージ階層とインターフェース系統図(SATA/SAS/NVMe/CXL)を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

SATA

比較で見る軸

難易度: advanced / カテゴリ: CPU/メモリ/ディスク / タグ数: 6

導入後に効く点

SATAはATAコマンド由来で安価・単純、SASはSCSIコマンド由来で多重化やデュアルポートなどエンタープライズ機能を持ち、両者はAHCI経由の単一キュー(最大32)で頭打ちになる。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
CPU/メモリ/ディスク
タグ数
6

判断チェックリスト

  • 自社の用途が「SATA / SAS」に近いか確認する。
  • 強みである「ストレージ接続は古いパラレルバス(PATA/パラレルSCSI)から差動シリアル化したSATA/SASへ進み、さらにPCIe直結のNVMe、メモリセマンティクスのCXLへと「コマンド層とリンク層の分離」を進めながら分岐してきた。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

SATASASNVMeCXLストレージインターフェースSATASASNVMe
参考: 公式情報