タグ付きコマンドキューイング(TCQ)は、特定のATAおよびSCSI [1]ハードドライブに組み込まれている技術です。これにより、オペレーティングシステムはハードドライブに複数の読み取りおよび書き込み要求を送信できます。ATA TCQは、 SATAドライブで使用されるより効率的なネイティブコマンドキューイング(NCQ)とは機能的に同一ではありません。[2] SCSI TCQには、ATA TCQと同じ制限はありません。
TCQ がない場合、オペレーティング システムは一度に 1 つの要求しか送信できません。パフォーマンスを向上させるために、OS はハード ドライブのアクティビティに関する独自の (おそらくは誤った) 見解に基づいて要求の順序を決定する必要がありました ( I/O スケジューリングとも呼ばれます)。TCQ を使用すると、ドライブは要求の順序を独自に決定できます (その結果、オペレーティング システムが順序を決定する必要がなくなります)。したがって、TCQ は正しく実装されていれば、ハード ドライブの全体的なパフォーマンスを向上させることができます。
概要
効率を上げるには、セクターは受信順ではなく、現在のヘッド位置に近い順に処理する必要があります。キューは、常に新しい要求を受信し、既存の要求を実行または削除し、現在保留中の読み取り/書き込み要求とヘッドの位置の変化に応じてキューを並べ替えます。正確な並べ替えアルゴリズムは、コントローラとドライブ自体によって異なりますが、ホスト コンピュータは必要に応じて要求を行うだけで、詳細の処理はコントローラに任せます。
このキューイング メカニズムは、「エレベーター シーキング」と呼ばれることもあります。これは、建物内の最新のエレベーターが複数の呼び出しに対応し、移動を最小限に抑えるために処理するというイメージがその考え方をよく表しているからです。
エレベーターが 1 階から出発し、5、2、4 階のボタンをこの順序で押すと、古いエレベーターは要求された順序で各階に移動します。最新のエレベーターは、不必要な移動をすることなく、論理的な順序である 2、4、5 階で停止するように要求を処理します。非キューイング ディスク ドライブは、古いエレベーターのように、受信した順序で要求を処理します。キューイング ドライブは、最も効率的な順序で要求を処理します。これにより、単一のユーザーが使用するシステムではパフォーマンスがわずかに向上しますが、多くのユーザーがディスク サーフェスに対して多種多様な要求を行うシステムでは、パフォーマンスが大幅に向上します。
SCSI TCQ、ATA TCQ、SATA NCQ の比較
SCSI TCQ
SCSI TCQはTCQの最初の人気バージョンであり、現在でも人気があります。タスクを3つの異なるモードのいずれかを使用してキューに入れることができます。[3]
- 先頭
- 注文した
- 単純
SCSI TCQに特有のヘッドオブキューモードでは、タスクは他の保留中のヘッドオブキュータスクを含む他のすべてのタスクよりも先にキューの先頭にプッシュされます。[2] [3] [4]このモードは、乱用するとリソース不足を引き起こす可能性があるため、あまり使用されません。
順序付きモードでは、タスクはすべての古いタスクが完了した後、すべての新しいタスクの実行が開始される前に実行されなければなりません(新しいキューの先頭のタスクは除く)。[3]
シンプルモードでは、他の2つのモードのタスクの制約に違反しない限り、タスクを任意の順序で実行できます。[3]タスク内のコマンドが完了すると、コマンドを完了したデバイスからホストバスアダプタに通知が送信されます。[3]
SCSI TCQ が大きな割り込みオーバーヘッドを引き起こすかどうかは、SCSI ホストバスアダプタの接続に使用されているバスによって異なります。従来の PCI、PCI-X、PCI Express、およびそれを許可するその他のバスでは、ファーストパーティDMAによって割り込みオーバーヘッドが低く抑えられます。古い ISA バスでは、SCSI ホストアダプタが割り込みを生成して CPU がサードパーティの DMA エンジンをプログラムして転送を実行する必要があり、その後、キュー内のタスクが完了したことを CPU に通知するために別の割り込みが必要だったため、[2] CPU オーバーヘッドが高くなっていました。
SCSI TCQ タグの長さ
SCSI-3 プロトコルでは、タグ フィールドで 64 ビットの使用が許可されているため、1 つのタスク セットで最大 2 64 個のタスクを発行してから、それらのいくつかが完了してからでないと、それ以上のコマンドを発行できません。[3]ただし、SCSI プロトコルを実装するさまざまなプロトコルでは、64 ビットすべてを使用できない場合があります。たとえば、古いパラレル SCSI では 8 ビットのタグ ビットが許可され、iSCSI では最大 32 ビットのタグ ビットが許可され、ファイバー チャネルでは最大 16 ビットのタグが許可され、タグ0xFFFFが予約されています。この柔軟性により、プロトコルの設計者は、キューイング機能とコストをトレードオフできます。iSCSI ネットワークなどの大規模になる可能性があるネットワークでは、ネットワーク内のディスクの数が多くなり、このような大規模ネットワークで発生するレイテンシが大きくなるため、タグ ビットを増やすことでメリットが得られます。一方、パラレル SCSI チェーンなどの小規模ネットワークでは、多くのタグ ビットを必要とするほどのディスク数やレイテンシがないため、サポートするビット数が少ないシステムを使用することでコストを節約できます。
ATA TCQ
ATA TCQ は、SCSI と同じ利点を ATA ドライブにもたらすことを目的として開発されました。パラレル ATA とシリアル ATA の両方で利用できます。
この取り組みはあまり成功しませんでした。ATAバスはピン数を減らしたISAバスとして始まったからです。ソフトウェア互換性の要件により、ATAホストバスアダプタはファーストパーティDMAのないISAバスデバイスのように動作しました。ドライブが転送の準備ができると、CPUに割り込んで、CPUがディスクにどのコマンドを実行する準備ができているかを尋ねるのを待ち、実行準備ができたというコマンドで応答し、そのコマンドの結果に基づいてCPUがホストバスアダプタのサードパーティDMAエンジンをプログラムするのを待ち、サードパーティDMAエンジンがコマンドを実行するのを待ち、次にDMAエンジンがタスクを終了したことをCPUがタスクを要求したスレッドに通知できるように、CPUに再度割り込んで通知する必要がありました。[2]割り込みへの応答にはCPU時間が使用されるため、ATA TCQが有効になっているとCPU使用率が急速に上昇しました。[2]また、割り込みサービス時間は予測できないため、ディスクがデータ転送の準備ができていても、CPUが割り込みに応答してサードパーティのDMAエンジンをプログラムする必要があることをCPUが認識するまで待たなければならないため、データ転送ができない場合があります。[2]
そのため、この規格は、CPU使用率が高くなるだけで、十分なパフォーマンス向上が得られなかったため、ほとんど実装されませんでした。[2] この規格では、デバイスごとに最大32個の未処理コマンドが許可されます。[4]
SATA NCQ
SATA NCQ は、ATA TCQ と比較して必要な CPU 割り込みの数を大幅に削減する最新の標準です。ATA TCQ と同様に、デバイスごとに最大 32 個の未処理コマンドを許可しますが[2]、パラレル ATA の動作をエミュレートしていない SATA ホスト バス アダプタの機能を利用してファースト パーティ DMA をサポートするように設計されています。[2]タスクの前に CPU に割り込んでホスト バス アダプタの DMA エンジンをプログラムさせる代わりに、ハード ドライブはホスト バス アダプタに実行するコマンドを伝えます。これにより、ホスト バス アダプタは、ハード ドライブが最初に発行したときに選択したコマンドに含まれていたパラメータを使用して、統合されたファースト パーティ DMA エンジンをプログラムし、次に DMA エンジンはコマンドの実行に必要なデータを移動します。[2]割り込みのオーバーヘッドをさらに削減するために、ドライブはタスク完了メッセージによる割り込みを、一度に送信できるメッセージが多数集まるまで保留することができます。これにより、オペレーティング システムは、タスクが完了したことを多くのスレッドに同時に通知できます。 [ 2]このような割り込みが送信された後に別のタスクが完了した場合、最初の完了メッセージ セットが CPU に送信されていない場合、ホスト バス アダプタは完了メッセージを連結できます。[2]これにより、ハード ディスクのファームウェア設計では、完了メッセージを保留するタイミングと送信するタイミングを決定することで、ディスクのパフォーマンスと CPU 使用率をトレードオフできます。[2]
参考文献
- ^ パラレル SCSI、シリアル接続 SCSI、およびファイバー チャネルドライブの形式
- ^ abcdefghijklm Dees, Brian (2005 年 11 月 - 12 月)。「ネイティブ コマンド キューイング - デスクトップ ストレージの高度なパフォーマンス」IEEE Potentials . 24 (4): 4–7. doi :10.1109/MP.2005.1549750. S2CID 36264057。
- ^ abcdef 「SCSIアーキテクチャモデル - 3 (SAM-3)」(PDF) 。 2012年3月17日時点のオリジナル(PDF)からアーカイブ。2007年2月24日閲覧。
- ^ ab "1532D: AT Attachment with Packet Interface - 7 Volume 1" (PDF) . 1532D: AT Attachment with Packet Interface - 7 . 2012-02-06 のオリジナル(PDF)からアーカイブ。 2007-01-02に取得。
外部リンク
- コマンド キューイングは SATA をターボ チャージできるか? (Patrick Schmid、Achim Roos (Tom's Hardware Guide) 著)
