インターフェースの転送速度に比べると、HDDの円盤からデータを読み出すスピードはずっと遅い。現在の7200回転/分の3.5インチHDDでは、円盤の最外周でも理論上の転送速度は90MB/秒程度。Ultra ATA/133の133MB/秒や第2世代Serial ATAの300MB/秒よりもはるかに遅い。

 そこで、HDDの開発には、途切れなくデータを転送する工夫が必要になる。その解決方法の目玉と言えるのが「NCQ(Native Command Queuing)」だ。

 Command QueuingはSCSIの世界で一足先に取り入れられたが、実はUltra ATAでも規格化されていた。しかし、手順が複雑なためか普及に至らず、Serial ATA Revision 2.5で新たにNCQが規定された。

合理的に処理できる順番を HDD自身が探して実行する

 HDD内部のどこに必要なセクターがあるかを知っているのはHDDのファームウエアだけだ。そこでホストは、コマンドを一通り先にHDDに知らせてしまい、HDD自身に最も合理的な順番でコマンドを処理させる。これがNCQの基本原理だ(図1)。

 コマンドを合理的な順番に並べ直す作業をコマンドの「Re-ordering」と呼ぶ。一度に受け取れるコマンドが増えると、Re-orderingの幅が広がり、効率も上がる。この受け取れる数が「Queue Depth(キューデプス)」だ。最大32コマンドのキューができ、性能向上に貢献している(図2)。

 NCQでは、ドライブ内部の無駄な動作を減らす仕組みに加え、インターフェース上でも無駄を省く工夫をしている。

 まず、一般的なコマンドのやり取りを理解しておこう。ホストは細かな付随情報とともにリードやライトのコマンドをHDDに伝える。コマンドを受けたHDDは必要なデータを転送し、最後にコマンドが完了したことをホストに通知する。この「コマンド受領」→「データ転送」→「ステータス通知」がやり取りの単位となっており、順番は崩せない。

 一方、NCQでは同時に複数のコマンドを実行する。1つひとつのコマンドはパラレルATAと同様に、コマンド受領・データ転送・ステータス通知の順序を保っているが、全体では複数のコマンドが入り乱れ、行き交うように見える。

この先は会員の登録が必要です。今なら有料会員(月額プラン)は12月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら