ストレージのメモ(ハードウェアのインターフェースいろいろ)

Wikipediaより
基礎知識(IT系)

インターフェースの種類が多いので、ストレージの利用に焦点を絞って整理した。

主な参考:福田昭のストレージ通信

そもそもハードウェアのインターフェースとは?

コンピュータなどの情報機器ハードウェア間の通信を行う際のコネクタ形状や、信号の送受信の方法(プロトコル)などを決めたものであり、おもにシリアル通信/パラレル通信で大別される(参考:wikipeida)。ストレージの場合は、さらに、種類(HDD/SDD)、接続台数(数十台/数百台)、接続環境(ローカル/リモート)が分類の基準になる(と思う)。

パラレル転送

複数の伝送線をひとまとめにしたケーブルを使い、並行してデータを転送する規格であり、CPUの動作周波数(クロック)が低いころに主流だった。クロックあたりの転送力が高いが、複数の伝送線をひとまとめにする分、ケーブル自体が大きくなる(=ホスト機器の送風冷却を妨げる)。

シリアル転送

単線の伝送線を使い、連続してデータを転送する規格であり、CPUのクロックが高い現在では主流の方式である。パラレル方式のように外部機器とホストコンピュータ間で同期をとる必要がないので、安定して転送できる。また、ケーブルが細いため、ホスト機器の送風冷却を妨げない。

HDDのホスト・コントローラ・インターフェース

IDE(Integrated Drive Electronics)

SATA以前の規格であり、パラレル転送方式である。転送速度は規格に依るが、100 or 133MB/s。

SATA

細いケーブルを用いるシリアル転送方式であり。転送速度は規格に依るが、1.5Gbps or 3Gbps。

AHCI (Advanced Host Controller Interface)

AHCIはSATAインタフェースのストレージに向けて策定された規格仕様で、HDDでそれまで使われてきたIDEインタフェースを置き換えるものである。

ホストのインターフェースとSSDの関係

類似記事:ストレージのメモ(SSDのフォームファクタとインターフェース)

SSDのインタフェースは当初、HDDのインタフェース(AHCI)を流用していたが、SSDの高速化により、SATAとSASがともにSSDの速度を制約するボトルネックとなる場合が増えてきた。

クライアントSSDは「SATAインタフェース」
エンタープライズSSDは「SASインタフェース」

ー>PCIeが登場

※SSDのインタフェースがPCIeになっただけでは、SSDの性能を最大化できるわけではなく、ホスト・コントローラとのレジスタ・レベルのインタフェースが最適化されている必要がある。

AHCIとNVMeの違い

NVMeは、PCIe SSDの性能を引き出す規格仕様である。HDD向けのAHCIとの主な違いは以下のとおり。

  • 想定するストレージの台数
    AHCIが多くても数台のローカルなストレージ(それもHDD)で構成したシステムを想定しているのに対し、NVMeは十数台〜数十台以上のPCIe SSDを並列に動かすシステムを想定している。
  • マルチタスク
    AHCIはコマンドのキューの数が1つ(格納するコマンド最大数:32個)なのに対して、NVMeは、最大で64K個のコマンドキューを用意するとともに、1個のコマンドキューに最大で64K個のコマンドを格納できる。原理的には最大で4G個のコマンドを格納できることになる。また、マルチタスク化に伴って、割り込みの処理と、アンキャッシュ可能なレジスタアクセスが改良された。

NVMe Over Fabrics

ネットワークに接続されたSDDにアクセスする(リモートアクセスする)ための技術仕様の1つである。リモートアクセスが可能なネットワーク(スイッチドファブリックともいう)を経由して、NVMeのホストとNVMeのデバイスを接続するためのものである。

(背景)

PCIe以外の高速なネットワーク内で、SDDへの接続する場合は、リモートアクセス(Remote Direct Memory Access)することが重要になる。リモートDMAでは、両コンピュータのオペレーティングシステム(OS)に入ることなく(CPUを経由することなく)転送が行われる。

普通の反射と脊髄反射くらいの違いじゃないかと思う。※根拠なし

これにより高スループット、低レイテンシの通信を行うことができるため、特に大規模並列のコンピュータ・クラスターにおいて有用である。