(57)【特許請求の範囲】
【請求項１】
方法であって、
ドライブが、１若しくはそれ以上のコマンドをホスト装置から受信する工程であって、前記ホスト装置と前記ドライブは直接メモリアクセス（ＤＭＡ）データフェーズを有するストレージプロトコルを介して通信するものであり、前記ドライブは前記ホスト装置による１若しくはそれ以上の追加のコマンドの送信を阻止することができるものである、前記受信する工程と、
情報をキューに入れ前記ホスト装置に送信する工程と、
前記ホスト装置からコマンドの送信終了信号を受信するかによらず専ら前記ドライブの状態を示す関数に基づき、前記情報にギャップを挿入し前記ホスト装置に送信するかを決定する工程であって、前記ＤＭＡデータフェーズの連続する２つのデータ間に前記ギャップが挿入されて前記ホスト装置から前記ドライブに前記１若しくはそれ以上の追加のコマンドが送信されるように前記情報にギャップを挿入し前記ホスト装置に送信するかを決定するものである、前記決定する工程と、
前記決定する工程の決定に基づいて前記ギャップを挿入する、あるいは前記決定する工程の決定に基づいて前記ギャップを挿入しない工程と
を有し、
前記ドライブの状態を示す関数は前記ドライブの現在のキュー長の関数を含むものである
方法。
【請求項２】
請求項１記載の方法において、前記ホストに送信する情報は、セットアップ情報および前記１若しくはそれ以上のコマンドのうちの少なくとも１つに関連付けられたデータを含むものである方法。
【請求項３】
請求項２記載の方法において、前記セットアップ情報は、直接メモリアクセス（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ：ＤＭＡ）フレーム情報構造（ｆｒａｍｅ  ｉｎｆｏｒｍａｔｉｏｎ  ｓｔｒｕｃｔｕｒｅ：ＦＩＳ）を含むものである方法。
【請求項４】
請求項２記載の方法において、前記セットアップ情報は、セット・デバイス・ビットＦＩＳを含むものである方法。
【請求項５】
請求項２記載の方法において、時間遅延が、前記セットアップ情報を送信する前に挿入されるものである方法。
【請求項６】
請求項２記載の方法において、時間遅延が、前記セットアップ情報を送信した後に挿入されるものである方法。
【請求項７】
請求項１記載の方法において、さらに、
前記ドライブが、時間遅延の間に前記追加のコマンドを前記ホスト装置から受信する工程を有するものである方法。
【請求項８】
請求項１記載の方法において、前記ギャップを挿入する工程は、前記情報が前記ホスト装置に送信されている間に時間遅延を挿入する工程を含むものである方法。
【請求項９】
請求項１記載の方法において、前記ギャップは、アクティブな待機コマンドが存在しないと判別された場合、挿入されないものである方法。
【請求項１０】
請求項１記載の方法において、前記ドライブの状態を示す関数は、前のコマンドを受信してからの経過時間の関数を含むものである方法。
【請求項１１】
請求項８記載の方法において、前記時間遅延の時間長は、前記ドライブの現在のキュー長に基づくものである方法。
【請求項１２】
請求項８記載の方法において、前記時間遅延の時間長は、前記ドライブが前のコマンドを受信してからの経過時間に基づくものである方法。
【請求項１３】
請求項１記載の方法において、時間遅延の時間長または前記時間遅延が挿入される時点のうちの少なくとも１つは、リアルタイムで決定されるものである方法。
【請求項１４】
請求項１記載の方法において、時間遅延の時間長または前記時間遅延が挿入される時点のうちの少なくとも１つは、所定値である方法。
【請求項１５】
請求項１記載の方法において、前記ホストに送信する前記情報はセットアップ情報を含み、このセットアップ情報は時間遅延が当該セットアップ情報に後続することを示す追加の情報を含むものである方法。
【請求項１６】
請求項１記載の方法において、ホストに送信する前記情報はステータス情報を含み、時間遅延が当該ステータス情報を送信する前に挿入されるものである方法。
【請求項１７】
請求項１記載の方法において、前記ギャップを挿入する工程は、追加情報を挿入する工程を含むものである方法。
【請求項１８】
請求項１記載の方法において、前記ホスト装置は、前記ギャップに先立って前記ギャップについて通知されるものである方法。
【請求項１９】
請求項１記載の方法において、前記ドライブはシリアルＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ：ＳＡＴＡ）ドライブを含むものである方法。
【請求項２０】
コンピュータ可読媒体に組み込まれたコンピュータプログラム製品であって、
ドライブが１若しくはそれ以上のコマンドをホスト装置から受信するコンピュータコードであって、前記ホスト装置と前記ドライブがＤＭＡデータフェーズを有するストレージプロトコルを介して通信するものであり、前記ドライブは前記ホスト装置による１若しくはそれ以上の追加のコマンドの送信を阻止することができるものである、前記受信するコンピュータコードと、
情報をキューに入れ前記ホスト装置に送るコンピュータコードと、
前記ホスト装置からコマンドの送信終了信号を受信するかによらず専ら前記ドライブの現在のキュー長の関数に基づき、前記情報にギャップを挿入し前記ホスト装置に送信するかを決定するコンピュータコードであって、前記ＤＭＡデータフェーズの連続する２つのデータ間に前記ギャップが挿入されて前記ホスト装置から前記ドライブに前記１若しくはそれ以上の追加のコマンドが送信されるように前記情報にギャップを挿入し前記ホスト装置に送信するかを決定するものである、前記決定するコンピュータコードと、
前記決定される条件に基づいて前記ギャップを挿入する、あるいは前記決定する条件に基づいて前記ギャップを挿入しないコンピュータコードと
を有するコンピュータプログラム製品。
【請求項２１】
１若しくはそれ以上のコマンドをホスト装置から受信するドライブであって、前記ホスト装置と前記ドライブはＤＭＡデータフェーズを有するストレージプロトコルを介して通信するものであり、前記ドライブは前記ホスト装置による１若しくはそれ以上の追加のコマンドの送信を阻止することができるものである、前記ドライブと、
情報をキューに入れ前記ホスト装置に送るバッファーと、
前記ホスト装置からコマンドの送信終了信号を受信するかによらず専ら前記バッファーの現在のキュー長の関数に基づき、前記情報にギャップを挿入し前記ホスト装置に送信するかを決定するコントローラであって、前記ＤＭＡデータフェーズの連続する２つのデータ間に前記ギャップが挿入されて前記ホスト装置から前記ドライブに前記１若しくはそれ以上の追加のコマンドが送信されるように前記情報にギャップを挿入し前記ホスト装置に送信するかを決定するものであり、前記コントローラは、さらに、前記決定される条件に基づいて前記ギャップを挿入する、あるいは前記決定される条件に基づいて前記ギャップを挿入しないものであるコントローラと
を有する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリシステムに関し、より具体的には、ドライブがデータ転送を開始した後、ホスト装置から当該ドライブがコマンドを受信する方法に関する。
【背景技術】
【０００２】
多くのストレージシステムにおいて、ターゲット装置は、フレームをホストに転送しているときにコリジョンが発生した場合の優先順位を有する。これらの場合、コマンドがキュー（待ち行列）に入っているとき（例えば、ファーストパーティ直接メモリアクセス（Ｆｉｒｓｔ  Ｐａｒｔｙ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）などを使用して）、いったん前記ターゲットが直接メモリアクセス（ｐａｒｔｙ  ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ：ＤＭＡ）セットアップフレーム情報構造（ｆｒａｍｅ  ｉｎｆｏｒｍａｔｉｏｎ  ｓｔｒｕｃｔｕｒｅ：ＦＩＳ）を送信してデータフェーズに入ると、前記ホストは通常いかなるコマンドも前記ターゲット装置に送信できなくなる。
前記ドライブが速くデータをフェッチ（取得）することができる場合、次に前記ホストは最大キュー長と同等の数のいくつかのコマンドを前記ドライブに送信することができ得る。前記ドライブは、次にＤＭＡセットアップ、データ、ＤＭＡセットアップ、データなどを前記フレーム間に全くブレークを入れずに戻す。これにより、前記ホストはこれ以上のコマンドを送信することができなくなる。
これらの場合、前記ドライブのキュー長は、最大キュー長からゼロへ、ゼロから最大キュー長に戻り、そして再びゼロへと振動する。これはパフォーマンスに悪影響を及ぼす。このように、従来技術に関連するこれらおよび／またはその他の問題に対処する必要性が存在する。
この出願の発明に関連する先行技術文献情報としては、以下のものがある（国際出願日以降国際段階で引用された文献及び他国に国内移行した際に引用された文献を含む）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】  米国特許第５８８１２２９号明細書
【特許文献２】  米国特許第７１２０７２９号明細書
【特許文献３】  米国特許第７１０３７３２号明細書
【特許文献４】  米国特許第７０９６３１３号明細書
【特許文献５】  米国特許第７０３５９６７号明細書
【特許文献６】  米国特許第６９８５９９２号明細書
【特許文献７】  米国特許第６９７３５３１号明細書
【特許文献８】  米国特許第６８３１８６５号明細書
【特許文献９】  米国特許第６０００００６号明細書
【特許文献１０】  米国特許第５９５６４７３号明細書
【特許文献１１】  米国特許第５６２１６８７号明細書
【特許文献１２】  米国特許第５５６８４２３号明細書
【特許文献１３】  米国特許第７０３２０８７号明細書
【特許文献１４】  米国特許第７００００６３号明細書
【特許文献１５】  米国特許第６９４８０２６号明細書
【特許文献１６】  米国特許第６９２５５２３号明細書
【特許文献１７】  米国特許第６９１４８５３号明細書
【特許文献１８】  米国特許第６７３２２２１号明細書
【特許文献１９】  米国特許第６６９４４０２号明細書
【特許文献２０】  米国特許第６５３９４５３号明細書
【特許文献２１】  米国特許第６４０５２９５号明細書
【特許文献２２】  米国特許第６２３０２３３号明細書
【特許文献２３】  米国特許第６１５４８０８号明細書
【特許文献２４】  米国特許第５９６３９７０号明細書
【特許文献２５】  米国特許第５８３５９３５号明細書
【特許文献２６】  米国特許第５８１９３０７号明細書
【特許文献２７】  米国特許第５５６８６２６号明細書
【特許文献２８】  米国特許第５５４４３５６号明細書
【特許文献２９】  米国特許第５４８５５９５号明細書
【特許文献３０】  米国特許第７７４７８１３号明細書
【特許文献３１】  米国特許第７８０９９００号明細書
【特許文献３２】  米国特許第７８４９２７５号明細書
【特許文献３３】  米国特許第７９０３４８６号明細書
【特許文献３４】  米国特許第７６２０７４７号明細書
【特許文献３５】  米国特許第７９０４６１９号明細書
【特許文献３６】  米国特許第７５４９０１３号明細書
【特許文献３７】  米国特許第７９０４６７２号明細書
【特許文献３８】  米国特許第７００３６２３号明細書
【特許文献３９】  米国特許第７９０４７６４号明細書
【特許文献４０】  米国特許第７２２２２１４号明細書
【特許文献４１】  米国特許第６６００６１４号明細書
【特許文献４２】  米国特許第７８２７３２０号明細書
【特許文献４３】  米国特許第６０８５２４８号明細書
【特許文献４４】  米国特許第６９２８４９４号明細書
【特許文献４５】  米国特許第７６３１１２８号明細書
【特許文献４６】  米国特許第７８２７３２０号明細書
【特許文献４７】  米国特許出願公開第２００５／０１６６０１４号明細書
【特許文献４８】  米国特許出願公開第２００６／０２１８４３７号明細書
【特許文献４９】  米国特許出願公開第２００８／０２９４８０１号明細書
【特許文献５０】  米国特許出願公開第２００３／００４１２１４号明細書
【特許文献５１】  米国特許出願公開第２００８／０２８２０３１号明細書
【特許文献５２】  米国特許出願公開第２００８／００９００２１号明細書
【特許文献５３】  米国特許出願公開第２０１０／０２５０８３０号明細書
【特許文献５４】  米国特許出願公開第２００８／０２３３７９８号明細書
【特許文献５５】  米国特許出願公開第２００８／０２９４８１３号明細書
【特許文献５６】  米国特許出願公開第２０１１／００４１０３９号明細書
【特許文献５７】  米国特許出願公開第２００９／００９４４０９号明細書
【特許文献５８】  米国特許出願公開第２０１１／００４１００５号明細書
【特許文献５９】  米国特許出願公開第２０１１／００１６２３９号明細書
【特許文献６０】  米国特許出願公開第２００９／０１２５６４５号明細書
【特許文献６１】  米国特許出願公開第２００８／０２８２０３１号明細書
【特許文献６２】  米国特許出願公開第２０１１／００２２７６５号明細書
【特許文献６３】  米国特許出願公開第２０１０／０１１５１８９号明細書
【特許文献６４】  米国特許出願公開第２００９／０３００２５９号明細書
【特許文献６５】  米国特許出願公開第２００３／００４１２１４号明細書
【特許文献６６】  米国特許出願公開第２０１１／００８３０４７号明細書
【特許文献６７】  米国特許出願公開第２０１０／０１０６９０５号明細書
【特許文献６８】  米国特許出願公開第２０１０／００１７６５０号明細書
【特許文献６９】  米国特許出願公開第２００８／０２９４８０１号明細書
【特許文献７０】  米国特許出願公開第２０１１／０１２５９５６号明細書
【特許文献７１】  米国特許出願公開第２０１０／００６７１３３号明細書
【特許文献７２】  米国特許出願公開第２０１０／００３７００１号明細書
【特許文献７３】  米国特許出願公開第２００６／０２１８４３７号明細書
【特許文献７４】  米国特許出願公開第２００９／０１３８６７１号明細書
【特許文献７５】  米国特許出願公開第２０１０／００１７５８８号明細書
【特許文献７６】  米国特許出願公開第２０１０／００１７８０７号明細書
【特許文献７７】  米国特許出願公開第２０１０／００１７５６６号明細書
【特許文献７８】  米国特許出願公開第２０１１／０００４７２２号明細書
【特許文献７９】  米国特許出願公開第２０１０／００６４０９３号明細書
【特許文献８０】  米国特許出願公開第２０１０／０１４６２３６号明細書
【特許文献８１】  米国特許出願公開第２０１０／０２５１００９号明細書
【特許文献８２】  米国特許出願公開第２００８／０１４１０５４号明細書
【特許文献８３】  米国特許出願公開第２０１１／０１６７１９９号明細書
【特許文献８４】  米国特許出願公開第２０１０／００６４０９６号明細書
【特許文献８５】  米国特許出願公開第２００８／０００５３９８号明細書
【特許文献８６】  米国特許出願公開第２００６／０２０９６８４号明細書
【特許文献８７】  米国特許出願公開第２００５／０１６６０１４号明細書
【特許文献８８】  米国特許出願公開第２０１０／０２５０８２９号明細書
【特許文献８９】  米国特許出願公開第２０１０／０２５０８３０号明細書
【特許文献９０】  米国特許出願公開第２０１１／００４１０３９号明細書
【特許文献９１】  米国特許出願公開第２０１１／０００４７２２号明細書
【特許文献９２】  米国特許出願公開第２０１０／００１７６５０号明細書
【特許文献９３】  米国特許出願公開第２００９／００９４４０９号明細書
【特許文献９４】  米国特許出願公開第２００８／０２９４８１３号明細書
【特許文献９５】  米国特許出願公開第２００８／０２９４８０１号明細書
【特許文献９６】  米国特許出願公開第２００８／０００５３９８号明細書
【特許文献９７】  米国特許出願公開第２００６／０２１８４３７号明細書
【特許文献９８】  米国特許出願公開第２００５／０１６６０１４号明細書
【特許文献９９】  国際公開第２０１１／００８９６３号
【特許文献１００】  国際公開第２０１１／００８９６３号
【非特許文献】
【０００４】
【非特許文献１】  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｅａｒｃｈ  Ｒｅｐｏｒｔ  ｆｏｒ  ＰＣＴｌＵＳ２０１０／０４２１４７，  ｍａｉｌｅｄ  Ｍａｒｃｈ  ２４，  ２０１１，９  ｐａｇｅｓ
【非特許文献２】  Ｉｎｔｅｌ  Ｘ２５−Ｅ  ＳＡＴＡ  Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ，  Ｍａｙ  ２００９，  Ｄｏｃｕｍｅｎｔ  Ｏｒｄｅｒ  Ｎｏ．  ３１９９８４−００５ＵＳ，  Ｉｎｔｅｌ，  ａｓ  ｃｉｔｅｄ  ｂｙ  ｔｈｅ  Ｅｘａｍｉｎｅｒ  ｉｎ  ａ  Ｊｕｎｅ  ７，  ２０１１  ｏｆｆｉｃｅ  ａｃｔｉｏｎ  ｉｎ  Ｕ．Ｓ．  Ｐａｔｅｎｔ  Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｉａｌ  Ｎｏ．  １２５７３７９２，  ２４  ｐａｇｅｓ
【非特許文献３】  ＲＥＮ，  Ｊｉｎ  ａｎｄ  ＹＡＮＧ，  Ｑｉｎｇ；  "Ｉ−ＣＡＳＨ：  Ｉｎｔｅｌｌｉｇｅｎｔｌｙ  Ｃｏｕｐｌｅｄ  Ａｒｒａｙ  ｏｆ  ＳＳＤ  ａｎｄ  ＨＤＤ"  ｉｎ  Ｔｈｅ  １７ｔｈ  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ
【非特許文献４】  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ，  ２０１１  （ＨＰＣＡ'ＩＩ），  Ｓａｎ  Ａｎｔｏｎｉｏ，  ＴＸ，  ＵＳＡ  Ｆｅｂ  ２０１１，  １２  ｐａｇｅｓ，  ｐｐ  ２７８−２９８
【非特許文献５】  Ｓｅｒｉａｌ  ＡＴＡ  ＮＳＳＤ  （ＮＡＮＤ  ｂａｓｅｄ  Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ），  Ｊｕｌｙ  ２００８，  Ｓａｍｓｕｎｇ，ａｓ  ｃｉｔｅｄ  ｂｙ  ｔｈｅ  Ｅｘａｍｉｎｅｒ  ｉｎ  ａ  Ｊｕｎｅ  ７，２０１１  ｏｆｆｉｃｅ  ａｃｔｉｏｎ  ｉｎ  Ｕ．Ｓ．  Ｐａｔｅｎｔ  Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｉａｌ  Ｎｏ．  １２５７３７９２  Ｒｅｖｉｓｉｏｎ  １．０，  ３９  ｐａｇｅｓ
【非特許文献６】  ＨＵＦＦＭＡＮ，  Ａｍｂｅｒ  ａｎｄ  ＣＬＡＲＫ，  Ｊｏｎｉ；  "Ｓｅｒｉａｌ  ＡＴＡ  Ｎａｔｉｖｅ  Ｃｏｍｍａｎｄ  Ｑｕｅｕｉｎｇ，  Ａｎ  Ｅｘｃｉｔｉｎｇ  Ｎｅｗ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｆｅａｔｕｒｅ  ｆｏｒ  Ｓｅｒｉａｌ  ＡＴＡ"，  Ａ  Ｊｏｉｎｔ  Ｗｈｉｔｅｐａｐｅｒ  Ｂｙ：  Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ  ａｎｄ  Ｓｅａｇａｔｅ  Ｔｅｃｈｎｏｌｏｇｙ，  Ｊｕｌｙ  ２００３，  Ｕｎｉｔｅｄ  Ｓｔａｔｅｓ，  １２  ｐａｇｅｓ
【非特許文献７】  ＯＬＳＯＮ．  Ａｌａｎ  Ｒａｎｄ  Ｄｅｎｉｓ  Ｊ  Ｌａｎｇｌｏｉｓ．  Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅｓ  Ｄａｔａ  Ｒｅｌｉａｂｉｌｉｔｙ  ａｎｄ  Ｌｉｆｅｔｉｍｅ，  Ａｐｒｉｌ  ７，  ２００８，  Ｉｍａｔｉｏｎ，  ２７  ｐａｇｅｓ
【非特許文献８】  "Ｓｅｒｉａｌ  ＡＴＡ  ＩＩ  Ｎａｔｉｖｅ  Ｃｏｍｍａｎｄ  Ｑｕｅｕｉｎｇ  Ｏｖｅｒｖｉｅｗ"，  Ａｐｐｌｉｃａｔｉｏｎ  Ｎｏｔｅ，  Ａｐｒｉｌ  ２００３，  Ｏｒｄｅｒ  Ｎｏ．  ２５２６６４−００２，  Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ，  Ｕｎｉｔｅｄ  Ｓｔａｔｅｓ，  ２１  ｐａｇｅｓ
【非特許文献９】  Ｏｃｔｏｂｅｒ  ７，２０１１  Ｌｉｓｔ  ｏｆ  Ａｒｔ  Ｒｅｊｅｃｔｉｏｎｓ  ｉｎ  Ｃａｓｅｓ  Ｒｅｌａｔｅｄ  ｔｏ  Ｄｏｃｋｅｔ  Ｎｏ．  ＳＡＦＩ  Ｐ０３１，  １  ｐａｇｅ
【発明の概要】
【課題を解決するための手段】
【０００５】
ドライブからホスト装置に送信される情報にギャップを挿入するシステム、方法、およびコンピュータプログラム製品が提供されている。動作中、ドライブは１若しくはそれ以上のコマンドをホスト装置から受信する。さらに、前記ホスト装置に送信される情報がキュー（待ち行列）に入れられる。さらにまた、ギャップが前記ホスト装置に送信される前記情報に挿入されることにより、前記ホスト装置が前記ドライブに追加コマンドを送信することができるようになる。
【図面の簡単な説明】
【０００６】
【図１】図１は、１つの実施形態に従った、ドライブからホスト装置に送信される情報にギャップを挿入する方法を示す。
【図２】図２は、１つの実施形態に従った、ドライブからホスト装置に送信される情報にギャップを挿入するシステムを示す。
【図３】図３は、別つの実施形態に従った、ドライブからホスト装置に送信される情報にギャップを挿入する方法を示す。
【図４】図４は、例示した様々な実施形態の様々なアーキテクチャおよび／または機能性が実行される例示的なシステムを図示する。
【発明を実施するための形態】
【０００７】
本発明の１若しくはそれ以上の実施形態の詳細な説明を、本発明の選り抜かれた、詳細を図示する添付の図面とともに以下に提供する。前記実施形態と関連させて本発明を説明する。本発明の実施形態は単に例示的なもであることが理解され、本発明が本明細書の実施形態にまたは任意の若しくは全ての実施形態によって明確に限定されるものではなく、本発明は多数の変更、修正、および均等物を包含する。説明における単調さを避けるため、様々な単語ラベル（これに限定されるものではないが、第１に、最後の、特定の、様々な、更に、他の、特別な、選択の、幾つかの、および著しい）が個別のセットの実施形態に適用されており、このように本明細書で使用されるラベルは、質または好適な若しくは不利益なあらゆる形態を伝達することを明示的に意味しているのではなく、単に個別のセットを便利なように識別することを目的としている。記載の方法における幾つかの工程の順序は本発明の範囲内において変更可能である。本発明への十分な理解を助けるため、以下の記載において多数の具体的詳細が示されている。この詳細は実施例の目的のために提供され、本発明は一部あるいは全ての詳細に関係なく特許請求の範囲に従って実行されるものである。明確さのため、本発明に関する技術分野で知られている技工物については、本発明が不必要に曖昧にならないように、詳細に記載していない。
【０００８】
前書き
この前書を含める目的は、発明の詳細な説明のより迅速な理解を促すためであり、本発明は前書きで提供されている概念に限定されるものではなく（例えあったとしても明示的な実施例を含むのみ）、全ての前書きの段落は、必ずしも全体の発明の内容を簡略したものではなく、また包括的または限定的に説明することを目的とするものでもない。例えば、以下の前書きは、空間的または組織的にいくつかの実施形態にのみ限定される概括的情報を提供する。特許請求の範囲から最終的に引き出されるものを含み、明細書の部分を通して検討されるその他多くの実施形態がある。
【０００９】
ドライブからホスト装置に送信される情報にギャップを挿入するシステム、方法、およびコンピュータプログラム製品が提供されている。動作中、ドライブは１若しくはそれ以上のコマンドをホスト装置から受信する。さらに、前記ホスト装置に送信される情報がキュー（待ち行列）に入れられる。さらにまた、ギャップが前記ホスト装置に送信される前記情報に挿入されることにより、前記ホスト装置が前記ドライブに追加コマンドを送信することができるようになる。
【００１０】
例示的な実施形態
詳細な説明に対する前書きの結論として、以下は例示的な実施形態の収集物であって、「ＥＣ」（例示的組み合わせ（Ｅｘａｍｐｌｅ  Ｃｏｍｂｉｎａｔｉｏｎｓ））として明示的に列挙した少なくとも幾つかのものを含み、本明細書に記載された概念に従った様々な実施形態のタイプの追加的説明を提供し、これらの実施例は相互排他的、包括的、または限定的なことを意味するものではなく、本発明はこれらの例示的な実施形態に限定されるものでもなく、むしろ添付の特許請求の範囲の範囲内で可能な全ての修正および変更を包含するものである。
【００１１】
ＥＣ１．  方法であって、
ドライブが、１若しくはそれ以上のコマンドをホスト装置から受信する工程と、
前記ホスト装置に送信する情報をキュー（待ち行列）に入れる工程と、
前記ホスト装置に送信する前記情報にギャップを挿入する工程であって、これにより前記ホスト装置は追加のコマンドを前記ドライブに送信することができるものである、前記挿入する工程と
を有する方法。
【００１２】
ＥＣ２．  ＥＣ１記載の方法において、前記ギャップを挿入する工程は、時間遅延を挿入する工程を含むものである方法。
【００１３】
ＥＣ３．  ＥＣ２記載の方法において、前記情報は、セットアップ情報および前記１若しくはそれ以上のコマンドのうちの少なくとも１つに関連付けられたデータを含むものである方法。
【００１４】
ＥＣ４．  ＥＣ３記載の方法において、前記セットアップ情報は、直接メモリアクセス（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ：ＤＭＡ）フレーム情報構造（ｆｒａｍｅ  ｉｎｆｏｒｍａｔｉｏｎ  ｓｔｒｕｃｔｕｒｅ：ＦＩＳ）を含むものである方法。
【００１５】
ＥＣ５．  ＥＣ３記載の方法において、前記セットアップ情報は、セット・デバイス・ビットＦＩＳを含むものである方法。
【００１６】
ＥＣ６．  ＥＣ３記載の方法において、前記時間遅延は、前記セットアップ情報を送信する前に挿入されるものである方法。
【００１７】
ＥＣ７．  ＥＣ３記載の方法において、前記時間遅延は、前記セットアップ情報を送信した後に挿入されるものである方法。
【００１８】
ＥＣ８．  ＥＣ２記載の方法において、さらに、
前記ドライブが、前記時間遅延の間に前記追加のコマンドを前記ホスト装置から受信する工程を有するものである方法。
【００１９】
ＥＣ９．  ＥＣ２記載の方法において、前記時間遅延を挿入する工程は、前記情報が前記ホスト装置に送信されている間に前記時間遅延を挿入する工程を含むものである方法。
【００２０】
ＥＣ１０．  ＥＣ９記載の方法において、前記時間遅延は、前記ドライブの現在のキュー（待ち行列）長に基づいて挿入される工程を含むものである方法。
【００２１】
ＥＣ１１．  ＥＣ９記載の方法において、前記時間遅延は、前のコマンドを受信してからの経過時間に基づいて挿入される工程を含むものである方法。
【００２２】
ＥＣ１２．  ＥＣ９記載の方法において、前記時間遅延の時間長は、前記ドライブのキュー長に基づくものである方法。
【００２３】
ＥＣ１３．  ＥＣ９記載の方法において、前記時間遅延の時間長は、前記ドライブが前のコマンドを受信してからの経過時間に基づくものである方法。
【００２４】
ＥＣ１４．  ＥＣ２記載の方法において、前記時間遅延の時間長または前記時間遅延が挿入される時点のうちの少なくとも１つは、リアルタイムで決定されるものである方法。
【００２５】
ＥＣ１５．  ＥＣ２記載の方法において、前記時間遅延の時間長または前記時間遅延が挿入される時点のうちの少なくとも１つは、所定値である方法。
【００２６】
ＥＣ１６．  ＥＣ２記載の方法において、前記情報はセットアップ情報を含み、このセットアップ情報は前記時間遅延が当該セットアップ情報に後続することを示す情報を含むものである方法。
【００２７】
ＥＣ１７．  ＥＣ２記載の方法において、前記情報はステータス情報を含み、前記時間遅延は当該ステータス情報を送信する前に挿入されるものである方法。
【００２８】
ＥＣ１８．  ＥＣ１記載の方法において、前記ギャップを挿入する工程は、追加情報を挿入する工程を含むものである方法。
【００２９】
ＥＣ１９．  ＥＣ１記載の方法において、前記ホスト装置は、前記ギャップに先立って前記ギャップについて通知されるものである方法。
【００３０】
ＥＣ２０．  ＥＣ１記載の方法において、前記ドライブはシリアルＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ：ＳＡＴＡ）ドライブを含むものである方法。
【００３１】
ＥＣ２１．  コンピュータ可読媒体に組み込まれたコンピュータプログラム製品であって、
ドライブが、１若しくはそれ以上のコマンドをホスト装置から受信するコンピュータコードと、
前記ホスト装置に送る情報をキュー（待ち行列）に入れるコンピュータコードと、
前記ホスト装置に送る前記情報にギャップを挿入するコンピュータコードであって、これにより前記ホスト装置は前記ドライブに追加のコマンドを送信することができるものである、前記ギャップを挿入するコンピュータコードと
を有するコンピュータプログラム製品。
【００３２】
ＥＣ２２．  装置であって、
１若しくはそれ以上のコマンドをホスト装置から受信するドライブと、
前記ホスト装置に送る情報をキュー（待ち行列）に入れるバッファーと、
前記ホスト装置に送る前記情報にギャップを挿入するコントローラであって、これにより前記ホスト装置は前記ドライブに追加のコマンドを送信することができるものである、前記コントローラと
を有する装置。
【００３３】
ＥＣ２３．  システムであって、
コマンドをホスト装置から受信することが可能なドライブであって、当該ホスト装置は、当該ドライブが前記ホストによる追加のコマンドの送信を阻止することを可能とするストレージプロトコルを使用して当該ドライブと通信可能であり、前記ドライブは、
コントローラと、
バッファーと
を有し、
前記ドライブは、コリジョンが発生したとき前記ホスト装置より優先され、
前記バッファーは、前記ホスト装置に送信する情報をキュー（待ち行列）に入れることが可能であり、
前記コントローラは前記情報にギャップを挿入することが可能であり、これにより、前記ホスト装置が前記追加のコマンドを前記ドライブに送信することを可能にするものである
システム。
【００３４】
ＥＣ２４．  ＥＣ２３記載のシステムにおいて、前記コントローラはさらに、少なくとも部分的にセットアップ情報を前記ホスト装置へ送信する工程によって、前記情報を前記ホスト装置へ送信する工程を開始した後においても、前記ギャップを挿入することが可能であり、これにより、前記ホスト装置が前記追加のコマンドを前記ドライブに送信することを可能にするものであるシステム。
【００３５】
ＥＣ２５．  ＥＣ２４記載のシステムにおいて、前記セットアップ情報は直接メモリアクセス（ＤＭＡ）セットアップを有するものであるシステム。
【００３６】
ＥＣ２６．  ＥＣ２３記載のシステムにおいて、前記ドライブは、
シリアルＡＴＡ（ＳＡＴＡ）ドライブ、
シリアル接続ＳＣＳＩ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ：ＳＡＳ）ドライブ、
ファイバーチャンネル（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ：ＦＣ）ドライブ、および
ユニバーサル・シリアル・バス（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ：ＵＳＢ）ドライブ
のうちの少なくとも１つを有するものであるシステム。
【００３７】
ＥＣ２７．  ＥＣ２３記載のシステムにおいて、前記コマンドは、
転送要求、
データ転送コマンド、
前記ドライブに関連付けられたメモリの一部にアクセスするコマンド、および
データ検索コマンド、
のうちの少なくとも１つを有するものであるシステム。
【００３８】
ＥＣ２８．  ＥＣ２３記載のシステムにおいて、前記情報は、
データ情報、
データ構造情報、
直接メモリアクセス（ＤＭＡ）フレーム情報構造（ＦＩＳ）、
セット・デバイス・ビットＦＩＳ、および
前記コマンドの少なくとも１つに関連付けられたデータ
のうちの少なくとも１つを有するものであるシステム。
【００３９】
ＥＣ２９．  ＥＣ２３記載のシステムにおいて、前記ギャップは、
ブレーク、
割込み、および
遅延
のうちの少なくとも１つを有するものであるシステム。
【００４０】
ＥＣ３０．  ＥＣ２３記載のシステムにおいて、前記ギャップは、
時間遅延、
追加情報、
前記ギャップの長さ、
ベンダー固有の情報、および
前記ギャップに関連付けられた情報
のうちの少なくとも１つを有するものであるシステム。
【００４１】
ＥＣ３１．  ＥＣ２３記載のシステムにおいて、前記コントローラはさらに、前記ドライブの現在のコマンドのキュー長に少なくとも部分的に基づいて前記ギャップを挿入することが可能であるシステム。
【００４２】
ＥＣ３２．  ＥＣ２３記載のシステムにおいて、前記コントローラはさらに、前のコマンドが受信されてからの時間に少なくとも部分的に基づいて前記ギャップを挿入することが可能であるシステム。
【００４３】
ＥＣ３３．  ＥＣ２３記載のシステムにおいて、前記ギャップは時間遅延を有し、前記コントローラはリアルタイムで当該時間遅延の長さを決定することができるものであるシステム。
【００４４】
ＥＣ３４．  ＥＣ２３記載のシステムにおいて、前記ギャップは時間遅延を有し、前記コントローラはリアルタイムで当該時間遅延が挿入される時点を決定することができるものであるシステム。
【００４５】
ＥＣ３５．  方法であって、
ドライブが、１若しくはそれ以上のコマンドをホスト装置から受信する工程であって、当該ホスト装置は、当該ドライブが前記ホストによる追加のコマンドの送信を阻止することを可能とするストレージプロトコルを使用して当該ドライブと通信可能なものである、前記受信する工程と、
前記ホスト装置に送信する情報をキュー（待ち行列）に入れる工程であって、前記ホスト装置への送信は少なくとも部分的にセットアップ情報を介して行われるものである、前記キューに入れる工程と、
時間遅延を挿入するかを決定する工程と、
前記決定する工程に基づいて、条件付きで前記時間遅延を挿入し、前記ホスト装置が前記追加のコマンドを前記ドライブに送信することを可能にする工程と
を有する方法。
【００４６】
ＥＣ３６．  ＥＣ３５記載の方法において、前記セットアップ情報は、直接メモリアクセス（ＤＭＡ）セットアップを有するものである方法。
【００４７】
ＥＣ３７．  ＥＣ３５記載の方法において、さらに、
前記ドライブに関連付けられたバッファーを検査して、アクティブな待機コマンドが存在するかを決定し、存在する場合は、次に前記決定する工程を実行する工程を有するものである方法。
【００４８】
ＥＣ３８．  ＥＣ３５記載の方法において、前記ドライブは、
シリアルＡＴＡ（ＳＡＴＡ）ドライブ、
シリアル接続ＳＣＳＩ（ＳＡＳ）ドライブ、
ファイバーチャンネル（ＦＣ）ドライブ、および
ユニバーサル・シリアル・バス（ＵＳＢ）ドライブ
のうちの少なくとも１つを有するものである方法。
【００４９】
ＥＣ３９．  ＥＣ３５記載の方法において、前記コマンドは、
転送要求、
データ転送コマンド、
前記ドライブに関連付けられたメモリの一部にアクセスするコマンド、および
データ検索コマンド、
のうちの少なくとも１つを有するものである方法。
【００５０】
ＥＣ４０．  ＥＣ３５記載の方法において、前記情報は、
データ情報、
データ構造情報、
直接メモリアクセス（ＤＭＡ）フレーム情報構造（ＦＩＳ）、
セット・デバイス・ビットＦＩＳ、および
前記コマンドの少なくとも１つに関連付けられたデータ
のうちの少なくとも１つを有するものである方法。
【００５１】
ＥＣ４１．  ＥＣ３５記載の方法において、前記決定する工程は、前記ドライブの現在のコマンドのキュー長に少なくとも部分的に基づくものである方法。
【００５２】
ＥＣ４２．  ＥＣ３５記載の方法において、前記決定する工程は、前のコマンドが受信されてからの時間に少なくとも部分的に基づくものである方法。
【００５３】
ＥＣ４３．  ＥＣ３５記載の方法において、さらに、
リアルタイムで前記時間遅延の長さを決定する工程を有するものである方法。
【００５４】
ＥＣ４４．  ＥＣ３５記載の方法において、さらに、
リアルタイムで前記時間遅延が挿入される時点を決定する工程を有するものである方法。
【００５５】
ＥＣ４５．  システムであって、
ドライブが、１若しくはそれ以上のコマンドをホスト装置から受信する手段であって、当該ホスト装置は、当該ドライブが前記ホスト装置による追加のコマンドの送信を阻止することを可能とするストレージプロトコルを使用して当該ドライブと通信可能なものである、前記受信する手段と、
前記ホスト装置に送信する情報をキュー（待ち行列）に入れる手段であって、前記ホスト装置への送信は少なくとも部分的にセットアップ情報を介して行われるものである、前記キューに入れる手段と、
時間遅延を挿入するかを決定する手段と、
前記決定する手段に基づいて、条件付きで前記時間遅延を挿入し、前記ホスト装置が前記追加のコマンドを前記ドライブに送信することを可能にする手段と
を有するシステム。
【００５６】
ＥＣ４６．  ＥＣ４５記載のシステムにおいて、前記セットアップ情報は、直接メモリアクセス（ＤＭＡ）セットアップを有するものであるシステム。
【００５７】
ＥＣ４７．  ＥＣ４５記載のシステムにおいて、さらに、
前記ドライブに関連付けられたバッファーを検査して、アクティブな待機コマンドが存在するかを決定する手段を有し、前記決定する手段は当該検査する手段の結果に基づく条件付のものであるシステム。
【００５８】
ＥＣ４８．  ＥＣ４５記載のシステムにおいて、前記ドライブは、
シリアルＡＴＡ（ＳＡＴＡ）ドライブ、
シリアル接続ＳＣＳＩ（ＳＡＳ）ドライブ、
ファイバーチャンネル（ＦＣ）ドライブ、および
ユニバーサル・シリアル・バス（ＵＳＢ）ドライブ
のうちの少なくとも１つを有するものであるシステム。
【００５９】
ＥＣ４９．  ＥＣ４５記載のシステムにおいて、前記コマンドは、
転送要求、
データ転送コマンド、
前記ドライブに関連付けられたメモリの一部にアクセスするコマンド、および
データ検索コマンド、
のうちの少なくとも１つを有するものであるシステム。
【００６０】
ＥＣ５０．  ＥＣ４５記載のシステムにおいて、前記情報は、
データ情報、
データ構造情報、
直接メモリアクセス（ＤＭＡ）フレーム情報構造（ＦＩＳ）、
セット・デバイス・ビットＦＩＳ、および
前記コマンドの少なくとも１つに関連付けられたデータ
のうちの少なくとも１つを有するものであるシステム。
【００６１】
ＥＣ５１．  ＥＣ４５記載のシステムにおいて、前記決定する手段は、前記ドライブの現在のコマンドのキュー長に少なくとも部分的に基づくものであるシステム。
【００６２】
ＥＣ５２．  ＥＣ４５記載のシステムにおいて、前記決定する手段は、前のコマンドが受信されてからの時間に少なくとも部分的に基づくものであるシステム。
【００６３】
ＥＣ５３．  ＥＣ４５記載のシステムにおいて、さらに、
リアルタイムで前記時間遅延の長さを決定する工程を有するものであるシステム。
【００６４】
ＥＣ５４．  ＥＣ４５記載のシステムにおいて、さらに、
リアルタイムで前記時間遅延が挿入される時点を決定する工程を有するものであるシステム。
【００６５】
ＥＣ５５．  命令セットを格納する有形コンピュータ可読媒体であって、コンピュータによって当該命令が実行されると、当該コンピュータにより、
ドライブが、１若しくはそれ以上のコマンドをホスト装置から受信する工程であって、当該ホスト装置は、当該ドライブが前記ホスト装置による追加のコマンドの送信を阻止することを可能とするストレージプロトコルを使用して当該ドライブと通信可能なものである、前記受信する工程と、
前記ホスト装置に送信する情報をキュー（待ち行列）に入れる工程であって、前記ホスト装置への送信は少なくとも部分的にセットアップ情報を介して行われるものである、前記キューに入れる工程と、
前記決定する工程に基づいて、条件付きで前記時間遅延を挿入し、前記ホスト装置が前記追加のコマンドを前記ドライブに送信することを可能にする工程と
を有する機能を実行させるものである
有形コンピュータ可読媒体。
【００６６】
ＥＣ５６．  ＥＣ５５記載の有形コンピュータ可読媒体において、前記条件付きで挿入する工程は、前記時間遅延を挿入するかを決定する工程に少なくとも部分的に基づくものである有形コンピュータ可読媒体。
【００６７】
ＥＣ５７．  ＥＣ５６記載の有形コンピュータ可読媒体において、前記決定する工程は、前記ドライブの現在のコマンドのキュー長に少なくとも部分的に基づくものである有形コンピュータ可読媒体。
【００６８】
ＥＣ５８．  ＥＣ５６記載の有形コンピュータ可読媒体において、前記決定する工程は、前のコマンドが受信されてからの時間に少なくとも部分的に基づくものである有形コンピュータ可読媒体。
【００６９】
ＥＣ５９．  ＥＣ５５記載の有形コンピュータ可読媒体において、前記機能はさらに、リアルタイムで前記時間遅延を決定する工程を有するものである有形コンピュータ可読媒体。
【００７０】
ＥＣ６０．  ＥＣ５５記載の有形コンピュータ可読媒体において、前記機能はさらに、リアルタイムで前記時間遅延が挿入される時点を決定する工程有するものである有形コンピュータ可読媒体。
【００７１】
ＥＣ６１．  ＥＣ５５記載の有形コンピュータ可読媒体において、前記ドライブは、
シリアルＡＴＡ（ＳＡＴＡ）ドライブ、
シリアル接続ＳＣＳＩ（ＳＡＳ）ドライブ、
ファイバーチャンネル（ＦＣ）ドライブ、および
ユニバーサル・シリアル・バス（ＵＳＢ）ドライブ
のうちの少なくとも１つを有するものである有形コンピュータ可読媒体。
【００７２】
ＥＣ６２．  ＥＣ５５記載の有形コンピュータ可読媒体において、前記コマンドは、
転送要求、
データ転送コマンド、
前記ドライブに関連付けられたメモリの一部にアクセスするコマンド、および
データ検索コマンド、
のうちの少なくとも１つを有するものである有形コンピュータ可読媒体。
【００７３】
ＥＣ６３．  ＥＣ５５記載の有形コンピュータ可読媒体において、前記情報は、
データ情報、
データ構造情報、
直接メモリアクセス（ＤＭＡ）フレーム情報構造（ＦＩＳ）、
セット・デバイス・ビットＦＩＳ、および
前記コマンドの少なくとも１つに関連付けられたデータ
のうちの少なくとも１つを有するものである有形コンピュータ可読媒体。
【００７４】
様々な実施形態の説明
１つの実施形態に従った、ドライブからホスト装置に送信される情報にギャップを挿入する方法１００を示す。図示するように、ドライブが１若しくはそれ以上のコマンドをホスト装置から受信する。工程１０２を参照。
【００７５】
前記コマンドは、前記ホスト装置から前記ドライブへの送信を可能にするあらゆるコマンドまたは命令を含む。例えば、１つの実施形態において、前記コマンドはデータを転送する（例えば、転送要求など）コマンドを含む。別の実施形態において、前記コマンドは、前記ドライブに関連付けられたメモリの一部にアクセスするコマンドを含む。
【００７６】
前記ドライブは、データを格納することが可能な任意のドライブを含む。例えば、１つの実施形態において、前記ドライブは、シリアルＡＴＡ（ＳＡＴＡ）を含む。様々な他の実施形態において、前記ドライブは、これに限定されるものではないが、シリアル接続ＳＣＳＩ（ＳＡＳ）ドライブ、ファイバーチャンネル（ＦＣ）、またはユニバーサル・シリアル・バス（ＵＳＢ）、および／または他のあらゆるストレージデバイス若しくはドライブを含む。
【００７７】
さらに、前記ホスト装置は、コマンドをドライブに送信できる任意の装置を含む。例えば、様々な実施形態において、前記ホスト装置は、デスクトップコンピュータ、ラップトップコンピュータ、および／または他のあらゆるタイプの論理回路を含むものである。またさらに、前記ホスト装置は、これに限定されるものではないが、携帯情報端末（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ：ＰＤＡ）装置、携帯電話装置などを含む。
【００７８】
図１にさらに示すように、前記ホスト装置に送る情報がキューに入れられる。工程１０４を参照。１つの実施形態において、前記情報は、データをキューに入れることが可能なバッファーまたはデバイスによってキューに入れられる。
【００７９】
前記情報は、前記データに関連付けられたあらゆるデータまたは情報（例えば、データタイプ情報、データ構造情報など）を含む。１つの実施形態において、前記情報は、セットアップ情報および前記コマンドのうちの少なくとも１つに関連付けられたデータを含む。例えば、前記ホスト装置が送信して前記ドライブで受信されるコマンドは、データを検索するコマンドを含む。
【００８０】
前記ドライブは、次に前記データおよびセットアップ情報をキューに入れる。１つの実施形態において、前記セットアップ情報は、直接メモリアクセス（ＤＭＡ）フレーム情報構造（ＦＩＳ）を含む。別の実施形態において、前記セットアップ情報は、セット・デバイス・ビットＦＩＳを含む。様々な実施において、前記ギャップは時間ベースまたはコマンド閾値ベースまたはこれら両方の組み合わせであることに注意すべきである。前記閾値はまた、コマンドの数およびキュー長または他のパラメータに基づく。
【００８１】
さらに、前記ホスト装置に送信する情報の中にギャップが挿入され、これにより前記ホスト装置は追加のコマンドを前記ドライブに送信することが可能となる。工程１０６を参照。本発明の記載の内容において、ギャップは前記ホスト装置がコマンドを前記ドライブに送信できる中断、割込み、または遅延について言及する。
【００８２】
様々な実施形態において、前記ギャップは時間遅延（または追加情報など）を含む。例えば、１つの実施形態において、前記ギャップを挿入することは、時間遅延を挿入することを含む。別の実施形態において、前記ギャップは追加情報を挿入することを含む。
【００８３】
前記追加情報はあらゆるタイプの情報を含む。例えば、１つの実施形態において、前記前記追加情報は前記ギャップの長さを示す情報を含む。別の実施形態において、前記追加情報は、ベンダー固有の情報を含む。さらに別の実施形態において、前記追加情報は前記ギャップに関連付けられた情報を含む。
【００８４】
さらに別の実施形態において、前記情報はセットアップ情報を含み、これは前記時間遅延が当該セットアップ情報の後に起こることを示す情報を含む。この場合前記情報は、ステータス情報を含み、前記時間遅延が前記ステータス情報を送信する前にまたは前記ステータス情報の送信後に挿入される。
【００８５】
前記ギャップは前記情報を送信するどの時点であっても挿入されることに、注意すべきである。例えば、前記ギャップが時間遅延を含む場合、当該時間遅延は前記セットアップ情報を送信する前に挿入される。別の実施形態において、前記時間遅延は、前記セットアップ情報を送信した後に挿入される。
【００８６】
いずれの場合も、前記時間遅延の期間の間前記ドライブは前記追加情報を前記ホスト装置から受信する。１つの実施形態において、前記ギャップを挿入する工程は、前記情報が前記ホスト装置に送信されている期間の時点で当該ギャップを挿入する工程を含む。
【００８７】
前記ギャップが挿入される時点は様々なパラメータに基づくことに、注意すべきである。例えば、１つの実施形態において、前記ギャップは、前記ドライブの現在のキュー長に基づいて挿入される。別の実施形態において、前記ギャップは、前のコマンドが受信されてからの経過時間に基づいて挿入される。
【００８８】
さらにまた、前記ギャップの長さまたはサイズは様々なパラメータに基づいている。例えば、１つの実施形態において、前記時間遅延の時間の長さは、前記ドライブの現在のキュー長に基づく。別の実施形態において、前記時間遅延の時間の長さは、前のコマンドが受信されてからの経過時間に基づく。
【００８９】
いずれかの場合において、任意選択的に、前記時間遅延の時間の長さまたは前記時間遅延が挿入される時点のいずれか１つがリアルタイムで決定される。別の任意選択として、前記時間遅延の時間の長さまたは前記時間遅延が挿入される時点のいずれか１つは、所定値である。この場合、前記所定値は、ハードフェアまたはソフトフェアで設定される値である。
【００９０】
ユーザーの望みによって前述のフレームワークが共に実装される若しくは実装されない様々な任意のアーキテクチャおよび特性に関するより例示的な情報について、これから説明する。以下の情報は例証目的のために説明するものであり、いかなる方法においても限定されるものとして解釈すべきでないことに、特に注意すべきである。以下の特性のいずれかが、記載の他の特性を除いてまたは除かないで随意に組み込まれる。
【００９１】
図２はドライブからホスト装置に送信される情報にギャップを挿入するシステム２００を示す。任意選択として、前記システム２００は、図１の方法１００を実行するために実装される。しかし、当然のことながら、前記システム２００は、望ましいあらゆる環境で実装される。前述の定義は、本明細書の説明のすべてにおいて適用されることにも、注意すべきである。
【００９２】
図示するように、前記システム２００は、ホスト装置２０４から１若しくはそれ以上のコマンドを受信するドライブ２０２を含む。さらに、前記システム２００は、前記ホスト装置２０４に送信する情報をキューに入れるバッファー２０６を含む。さらにまた、前記システム２００は、前記ホスト装置２０４に送信する前記情報にギャップを挿入するコントローラ２０８を含む、これにより前記ホスト装置２０４は、前記ドライブ２０２が前記ホスト装置２０４へ前記情報の送信を開始した後、追加情報を前記ドライブ２０２に送信することができる。
【００９３】
前記ドライブ２０２は、例えばＳＡＴＡドライブ、ＳＡＳドライブ、ＦＣドライブおよび／または他のストレージデバイス若しくはドライブなどの様々なタイプのドライブを含むことに注意すべきである。非常に速くデータをフェッチするドライブは、前記情報にギャップを挿入することによって当該ドライブがデータ転送を開始するとき最大キュー長からゼロまで振動しないように構成される。
【００９４】
例えば、ＳＡＴＡにおいて、前記ターゲットは通常、フレームを前記ホストに転送しているときにコリジョンが発生した場合の優先順位を有する。また、ＳＡＴＡは通常、コマンドがキューに入っているとき（例えば、ファーストパーティ直接メモリアクセスなどを使用して）、いったん前記ターゲットがＤＭＡセットアップＦＩＳを送信して前記データフェーズに入ると、前記ホストは前記ターゲットにいかなるコマンドも送信できなくなる。
【００９５】
前記ドライブが非常に速くフェッチできる場合、次にホストは最大キュー長（例えば、３２など）と同等の数のいくつかのコマンドを前記ドライブに送信することができ得る。通常、前記ドライブはＤＭＡセットアップ、データ、ＤＭＡセットアップ、データなどを前記フレーム間のギャップなしに戻す。これにより、前記ホストはこれ以上のコマンドを送信することができなくなる。
【００９６】
前記ドライブのキュー長は、最大キュー長（例えば、３２など）からゼロにおよびゼロから最大キュー長（例えば、３２など）に戻ったりというように振動する。これはパフォーマンスに悪影響を及ぼす。一部の例では、ハードディスクドライブ（ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅｓ：ＨＤＤｓ）がとても遅いために前記データにギャップが生じる場合、この振動は発生しない。しかしながら、より速いドライブでは、前記振動が発生する。
【００９７】
このように、１つの実施形態において、ＤＭＡセットアップを前記ホスト装置２０４に発信する前に１若しくはそれ以上のギャップが挿入されることによって、前記ホスト装置２０４はさらにコマンドを前記ドライブ２０２に送信することができる。前記ギャップが挿入される時点は、前記ドライブ２０２の現在のキュー長または最後のコマンドからの経過時間を含む様々なパラメータに基づく。１つの実施形態において、前記ギャップが挿入される時点は、前記ドライブ２０２の現在のキュー長、最後のコマンドからの経過時間、またはこれらの若しくは他のパラメータの組み合わせに基づく。
【００９８】
さらに、コマンドが前記ホスト装置２０４から送信されるのを許可する前記ギャップの長さはまた、様々なパラメータに基づく。例えば、前記ギャップの長さは、前記キュー長、時間、または他のパラメータに基づく。様々な実施形態において、これらのパラメータは、リアルタイムで前記ホスト装置２０４または前記ドライブ２０２のいずれかによって調整される。任意選択として、前記パラメータはまた、固定値で設定される。
【００９９】
１つの実施形態において、前記ドライブ２０２は、ＤＭＡセットアップにこのＤＭＡセットアップの後にギャップあることを示す情報を追加することによって、前記ホスト装置２０４に信号を送る。任意選択として、前記ホスト装置２０４は、前記コマンドに情報を追加することによってコマンド送信の終了を信号で伝える。また、１つの実施形態において、前記ギャップがまた、ステータスを送信する前に挿入されることに注意するべきである。これは、前記ＤＭＡセットアップＦＩＳの前に前記ギャップを挿入する代わりにまたは前記ＤＭＡセットアップＦＩＳの前に前記ギャップを挿入するのに加えて実行される。
【０１００】
図３は、別の実施形態に従った、ドライブからホスト装置に送信される情報にギャップを挿入する方法３００を示す。任意選択として、この方法３００は、図１〜２の機能性およびアーキテクチャとの関連で実行することもできる。しかし、当然のことながら、前記方法３００は、望ましいあらゆる環境で実行される。再び、前述の定義は、本明細書の説明すべてに適用される。
【０１０１】
図に示すように、アクティブな待機コマンドが存在するかが決定される。工程３０２を参照。この場合、前記アクティブな待機コマンドは、ドライブに関連付けられたバッファー内のアクティブな待機コマンドである。
【０１０２】
アクティブな待機コマンドが存在する場合、時間遅延を挿入するかが決定される。１つの実施形態において、前記時間遅延を挿入するために、タイマーが使用される。
【０１０３】
前記時間遅延の挿入が決定された場合、前記時間遅延が挿入される。工程３０６を参照。次に、前記システムがデータ転送可能な状態かが決定される。工程３０８を参照。
【０１０４】
前記システムがデータ転送可能な状態の場合、ＤＭＡセットアップＦＩＳが送信される。工程３１０を参照。いったん前記ＤＭＡセットアップＦＩＳが送信されると、前記データ転送は完了する。工程３１２を参照。前記ＤＭＡセットアップは、コマンドに関連付けられたたった一片のデータであることに注意すべきである。いったんこの一片のデータが転送を完了すると、その後ギャップが挿入される。
【０１０５】
こうして、次に再び、時間遅延を挿入するかが決定される。工程３１４を参照。前記時間遅延の挿入が決定されると、前記時間遅延が挿入される。工程３１６を参照。
【０１０６】
さらに図に示すように、セット・デバイス・ビットＦＩＳを送信するかが決定される。前記セット・デバイス・ビットＦＩＳの送信が決定されると、前記セット・デバイス・ビットＦＩＳが送信される。工程３２０を参照。
【０１０７】
このような方法で、前記ホスト装置は、たとえ前記ドライブがデータ送信を開始していても、前記ドライブにコマンドを送信することができる。図３に図示されていないが、前記時間遅延の期間の間、情報は前記ホスト装置へ送信される。例えば、前記時間遅延の期間に関する情報またはベンダー固有の情報が挿入される。
【０１０８】
図４は、上述の様々な実施形態の様々なアーキテクチャおよび／または機能性が実行される例示的なシステム４００を図示する。図示するように、システム４００はコミュニケーションバス４０２に接続される少なくとも１つのホスト処理装置４０１を含むように提供される。前記システム４００はまた、主記憶装置４０４を含む。制御論理（ソフトウェア）およびデータは、ランダム・アクセス・メモリ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＲＡＭ）の形態を取る前記主記憶装置４０４に格納される。
【０１０９】
前記システム４００はまた、グラフィックプロセッサ４０６と表示装置４０８（例えば、コンピュータモニタ）とを含む。１つの実施形態において、前記グラフィックプロセッサ４０６は複数のシェーダモジュール、ラスタライゼーションモジュールなどを含む。前述のモジュールの各々は、実に単一半導体プラットフォーム上に配置され、グラフックス・プロセッシング・ユニット（ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ：ＧＰＵ）を形成する。
【０１１０】
本明細書の記載において、単一半導体プラットフォームはたった一つの単一半導体ベースの集積回路またはチップについて言及している。前記用語の単一半導体プラットフォームはまた、増大した接続性を備えたマルチチップモジュールについて言及し、オンチップ動作をシミュレーションし、且つ従来の中央処理装置（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ：ＣＰＵ）およびバス導入の利用を実質的に改善する。言うまでもなく、様々なモジュールはまた、ユーザーの望みに応じて別々に或いは半導体プラットフォームの様々な組み合わせで据えられる。
【０１１１】
前記システム４００はまた、二次記憶装置４１０を含む。前記二次記憶装置４１０は、ハードディスクドライブおよび／または例えばフロッピー（登録商標）ディスクドライブ、磁気テープ装置、コンパクトディスクドライブなどを代表とする着脱可能なストレージデバイスを含む。前記着脱可能なストレージデバイスは、周知の方法で着脱可能なストレージユニットから読み出すおよび／またはに書き込む。
【０１１２】
コンピュータプログラム（またはコンピュータ制御論理アルゴリズム）が前記主記憶装置４０４および／または前記二次記憶装置４１０に格納される。このようなコンピュータプログラムは、実行時に前記システム４００に様々機能を実行させることができる。記憶装置（メモリ）４０４、記憶装置（ストレージ）４１０および／または他のあらゆるストレージがコンピュータ可読媒体の可能な実施例である。
【０１１３】
１つの実施形態において、前出の様々な図面のアーキテクチャおよび／または機能性は、前記ホスト処理装置４０１、グラフィックプロセッサ４０６、前記ホスト処理装置４０１および前記グラフィックプロセッサ４０６の両方の能力の少なくとも一部の能力を持つ集積回路（図示せず）、チップセット（例えば、関連付けられた機能を実行するためのユニットとして動作するように設計され且つ販売される一群の集積回路）、および／またはその点に関する他のあらゆる集積回路において実施される。
【０１１４】
さらにまた、前出の前記様々な図面のアーキテクチャおよび／または機能性は、一般的なコンピュータシステム、回路基板システム、娯楽としての用途専用のゲーム機システム、特定用途向けシステム、および／または他のあらゆる望ましいシステムにおいて実施される。例えば、前記システム４００は、デスクトップコンピュータ、ラップトップコンピュータ、および／または他のあらゆるタイプの論理回路の形を取る。また更に、前記システム４００は、これに限定されるものではないが、携帯情報端末（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ：ＰＤＡ）装置、携帯電話装置、テレビなどを含む他の様々なデバイスの形を取る。
【０１１５】
さらに、図示していないが、前記システム４００は通信目的のためにネットワーク［例えば、電気通信網、ローカルエリア・ネットワーク、（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ：ＬＡＮ）、ワイヤレス・ネットワーク、および例えばインターネット、ピアツーピアネットワーク、ケーブルネットワークなどの広域ネットワーク（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ：ＷＡＮ）］につながれる。
【０１１６】
様々な実施形態を上記で説明してきたが、これらはほんの一例として記載したに過ぎず、これらに限定されるものでないことは理解されるべきでる。このように、好ましい実施形態の広さおよび範囲は上記の例示的な実施形態のいずれによっても限定されるべきではなく、以下の特許請求の範囲およびこの均等物によってのみ定義されるべきものである。
【０１１７】
結論
前記記載において、文章および図面を準備するに当たって単に便宜上特定の選択がなされたものであり、そして、それと反対のことが示されていない限り、前記選択は、記載の実施形態の構成および動作に関する追加情報を伝達するものとしてそれ自体解釈されるべきではない。前記選択の例としては、前記図の番号付けの使用に指定される特定の組織または割当と、前記実施形態の特徴および要素を特定および参照するのに使用される要素識別子（例えば、付記または数の指示子）の特定の組織または割当とを含む。
【０１１８】
単語「含む（ｉｎｃｌｕｄｅｓ）」または「含んでいる（ｉｎｃｌｕｄｉｎｇ）」は、無制限の範囲の論理的組み合わせを説明する抽象的概念として解釈されることを特に意図しており、その後に「の中で（に）（ｗｉｔｈｉｎ）」が明確に続かない限り物理的束縛を伝えることを意味するものではない。
【０１１９】
前述の実施形態を説明の明確さと理解のために少し詳しく説明してきたが、本発明は記載の詳細に限定されるものではない。本発明には多くの実施形態が存在する。記載の実施形態は例示的なものであり、これに限定されるものではない。
【０１２０】
構成、配置、および使用における様々な変化が、本明細書とできるだけ一致し、且つ交付済み特許の特許請求の範囲の範囲内であることは理解されるであろう。例えば、相互接続および機能ユニットビット幅、クロック速度、並びに使用される技術タイプは、各コンポーネントブロックの様々な実施形態に従って変化する。相互接続およぼ論理回路に与えられる名称は単に例示的なものであり、記載の概念を限定するものと解釈されるべきではない。フローチャートおよびフローダイヤグラムプロセスの順序および配置、動作、並びに機能要素は、様々な実施形態に従って変化する。また、その反対のことが特に述べられていない限り、特定の値範囲、使用される最大値および最小値、または記載の実施形態に単に存在する他の特定の仕様（例えば、フラッシュメモリ技術タイプのような、レジスタおよびバッファーの入力またはステージの数）は、導入技術の改善および変化を追うことが期待され、それは限定として解釈されるべきではない。
【０１２１】
本技術分野で知られている機能的に等価な技術は、様々なコンポーネント、サブシステム、動作、機能、ルーティン、サブルーティン、インラインルーティン、手順、マクロ、またはそれらの一部を実行するように記載されたものを除いて、使用可能である。実施形態の多くの機能面は、設計制約と、より速い処理手続き（以前はハードウェアであった機能をソフトウェアに移行するのを促進する）およびより高い集積密度（以前はソフトウェアにあった機能をハードウェアに移行するのを促進する）の技術動向とに依存する実施形態の機能として、ハードウェア（すなわち、一般の専用回路）またはソフトウェア（すなわち、プログラムされたコントローラまたはプロセッサのある方法を介し）のいずれかで選択的に実現可能である。様々な実施形態の特定の変化は、これに限定されるものではないが：パーティション分割の相違の程度；異なるフォームファクタおよび機器構成；異なるオペレーティングシステムおよび他のシステムソフトウェアの使用；異なるインターフェース規格、ネットワークプロトコル、または通信リンクの使用；および、特定の用途に限定される特有の工学およびビジネスに従った、本明細書に記載される概念を実行するとき予測されるその他の変化を含む。
【０１２２】
前記実施形態を詳細に、および記載の実施形態の多くの態様の最小限の実施に必要とされるのをはるかに超える環境状況で説明してきた。当業者であれば、幾つかの実施形態で開示の構成要素または特徴が残りの要素との間の基本的な協働を変えないで省略されていることを理解するであろう。このようにして、記載された詳細の多くが記載の実施形態の様々な態様を実施するのに必要とされていないことは、理解されるであろう。残りの要素が従来技術と見分けられる限りにおいて、省略される構成要素および特徴は本明細書に記載の概念を制限しない。
【０１２３】
このような全ての設計上の変更は、前記記載の実施形態によって伝達される技術に関するごくわずかな変更である。本明細書に記載の実施形態は、他のコンピューティングアプリケーションおよびネットワーキングアプリケーションに対する幅広い適用性があり、記載の実施形態の特定の用途または産業に限定されるものではない。このようにして、本発明は交付済み特許の特許請求の範囲の範囲内に包含される全ての可能な修正および変更を含むと解釈されるものである。
【図１】
0005658250.tif 000002
【図２】
0005658250.tif 000003
【図３】
0005658250.tif 000004
【図４】
0005658250.tif 000005