タグ付きコマンドキューイング

タグ・コマンド・キューイング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ホストバスアダプタの接続に使用されているバスによって異なります。従来のPCIPCI-XPCI Express、およびそれを可能にするその他のバスでは、ファーストパーティDMAにより割り込みオーバーヘッドが低く抑えられます。従来のISAバスでは、SCSIホストアダプタが割り込みを生成してCPUにサードパーティDMAエンジンをプログラムさせ、転送を実行させる必要がありました。さらに、キュー内のタスクが完了したことをCPUに通知するために別の割り込みが必要であり、[ 2 ] CPUオーバーヘッドが高くなっていました。

SCSI TCQタグ長

SCSI-3 プロトコルでは、タグ フィールドで 64 ビットの使用が許可されているため、1 つのタスク セットで最大 264 個のタスクを発行してから、それらのタスクの一部を完了してからでないと、さらにコマンドを発行できません。[ 3 ]ただし、SCSI プロトコルを実装するさまざまなプロトコルでは、64 ビットすべてを使用できない場合があります。たとえば、古いパラレル SCSI では 8 ビットのタグ ビット、SAS では9 ビット、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 ]

参考文献

  1. ^パラレル SCSIシリアル接続 SCSI、およびファイバ チャネルドライブの形式
  2. ^ a b c d e f g h i j k l m Dees, Brian (2005年11月~12月). 「ネイティブコマンドキューイング - デスクトップストレージの高度なパフォーマンス」. IEEE Potentials . 24 (4): 4– 7. doi : 10.1109/MP.2005.1549750 . S2CID  36264057 .
  3. ^ a b c d e f「SCSIアーキテクチャモデル-3(SAM-3)」(PDF)2012年3月17日時点のオリジナル(PDF)からアーカイブ。 2007年2月24日閲覧
  4. ^ a b「1532D: AT Attachment with Packet Interface - 7 Volume 1」(PDF)。1532D : AT Attachment with Packet Interface - 72012年2月6日時点のオリジナル(PDF)からアーカイブ。 2007年1月2日閲覧