図1●Native Command Queuing有効時の基本性能
英SiSoftware社のベンチマーク・ソフト「Sandra 2005」の「File System Benchmark」のテスト結果。連続したアドレスのデータを読み書きするシーケンシャル・リード/ライトおよび不連続なアドレスのデータを読み書きするランダム・リード/ライトのデータ転送速度を測定した。
図2●Native Command Queuing有効時の実アプリケーション性能
米Futuremark社の「PCMark04」の「Hard Disk Drive Test Suite」のテスト結果。Hard Disk Drive Test SuiteはOSやアプリケーションの起動,ファイルのコピーといったディスク・アクセスをエミュレートするアプリケーション・ベンチマーク・ソフト。
 米Seagate Technology社のSerial ATAハードディスク「ST3400832AS」は,読み書きコマンドの実行順を最適化する機能を備えている。SCSIハードディスクでは一般的な,「Native Command Queuing(NCQ)」だ。具体的には,パソコンが発行した読み書き要求を最大32個までハードディスク・コントローラのバッファ・メモリーにためておき,その読み書き要求をヘッドの動きが最小になる順番に並べ替えて処理する。所望のデータのあるトラックにヘッドを移動させ,目的のデータがヘッドの下に来るまでディスクが回転するのを待つ,というハードディスクの機械動作にかかる時間を減らすのが目的である。

 例えば,同じトラックにデータAとデータC,別のトラックにデータBがあるとする。NCQ非対応のハードディスクでは,A-B-Cの順番で書き込み要求があった場合,Aを書いてから別のトラックに移ってBを書き,さらに最初のトラックを戻ってCを書く。これに対しNCQ対応のハードディスクは,A-C-Bに書き込みの順番を並べ替えるため,トラックを移るのは1回で済む。

ファイルコピーで効果

 NCQは読み書きコマンドの並べ替えの巧拙で,効果に違いが出る。NCQの有効/無効を切り替えながら,二つのベンチマーク・テストを行った。

 まず最初に,英SiSoftware社のベンチマーク・ソフト「Sandra 2005」の「File System Benchmark」を使い,連続したアドレスのデータを読み書きするシーケンシャル読み出し/書き込み,不連続なアドレスのデータを読み書きするランダム読み出し/書き込みのデータ転送速度を測定した(図1[拡大表示])。

 結果を見ると,ランダム書き込みのみ,NCQ有効時のデータ転送速度が,無効の場合より1Mバイト/秒ほど低くなった。File System Benchmarkが作業領域として使ったのは約500Mバイト。ヘッドとトラック,そしてトラック上のデータの位置関係を解析しながら書き込み要求を並べ替える作業がオーバーヘッドになっているようだ。

 続いて実アプリケーションに近い性能を見るため,OSやアプリケーションの起動,ファイルのコピーといったディスク・アクセスをエミュレートする米Futuremark社の「PCMark04」の「Hard Disk Drive Test Suite」を用いて測定した(図2[拡大表示])。こちらはファイル・コピーのベンチマーク・テスト「File Copying」において,NCQ有効時で約1Mバイト/秒高速になった。File Copyingは,約800Mバイトの作業領域を利用するテストだ。読み書きが多発するため,NCQによるコマンドの並べ替えの選択肢が多い。このため最適化の効果が出たようだ。

 全体を通して,NCQによる高速化はまだチューニングの余地があると言える。ランダム・アクセスで何らかの効果が出るものの,速い場合もあれば遅い場合もある。差は3%前後にとどまっており,体感できるほどではない。

(高橋 秀和)