(57)【要約】  単一のコマンドにより複数の非連続アドレス範囲の転送のキューイングの方法、及びシステムが開示されている。システムの実施例は、システムプロセッサ、データ、及び実行可能ソフトウェアを記憶するメモリ、及びシステムメモリに記憶された転送コマンドを受信する記憶装置を含む。ホストコントローラ・インタフェース・ドライバは、一つ以上のシステムプロセッサによって実行され、対応する複数の記憶装置転送要求から、複数の非連続アドレス範囲を収集し、複数の非連続アドレス範囲の各々のために、転送するデータの開始アドレス及び量を、タグ付きコマンドリストに記録する。前記タグ付きコマンドリストに記録された非連続アドレス範囲の数のカウント、及びコマンドのタグ付き転送オペコードを記録し、前記コマンド、及び前記タグ付きコマンドリストを、前記記憶装置のための前記システムメモリのコマンドテーブルに記憶する。これは、メモリの前記コマンドテーブルのためのベースアドレス、及びコマンドキューに記憶されたコマンドヘッダの前記タグ付きコマンドリストのためのオフセット、を記録する。
2012508428.tif 000002
【特許請求の範囲】
【請求項１】
単一のコマンドに関連づけられた複数の転送をキューイングする方法であって：
複数の非連続アドレス範囲を転送するよう、記憶装置に要求するために、インターフェース上で単一のコマンドを送信するステップと；
前記複数の非連続アドレス範囲の転送の完了の後に、単一の割り込みを受信するステップと；
を有する方法。
【請求項２】
前記インターフェースがシリアルＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）バスインタフェースである、請求項１記載の方法。
【請求項３】
前記インターフェースがＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）である請求項１記載の方法。
【請求項４】
前記インターフェースがＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）インターフェースである請求項１記載の方法。
【請求項５】
前記インターフェースがＡＨＣＩ（Ａｄｖａｎｃｅｄ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）である請求項１記載の方法。
【請求項６】
前記インターフェースがシリアルＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）記憶装置のためのものである請求項５記載の方法。
【請求項７】
前記インターフェースがＮＶＭＨＣＩ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）である請求項１記載の方法。
【請求項８】
前記インターフェースがＮＡＮＤフラッシュメモリ記憶装置のためのものである請求項６記載の方法。
【請求項９】
前記インターフェースがフェーズチェンジメモリ記憶デバイスのためのものである請求項６記載の方法。
【請求項１０】
記憶装置の複数の非連続アドレス範囲の転送を要求する方法であって：
複数の非連続アドレス範囲の各々のために、タグ付きコマンドリストに、転送するデータの開始アドレス及び量を記録するステップと；
前記タグ付きコマンドリストに記録された非連続アドレス範囲の数のカウント、及び、コマンドの前記タグ付き転送オペコード、を記録するステップであって、前記コマンド、及び前記タグ付きコマンドリストは、メモリのコマンドテーブルに記憶されている、ステップと；
メモリの前記コマンドテーブルのためのベースアドレス、及び、コマンドヘッダの前記タグ付きコマンドリストのためのオフセットを記録するステップであって、前記コマンドヘッダは、コマンドキューに記憶された複数のコマンドヘッダのうちの１つである、ステップと；
を有する方法。
【請求項１１】
少なくともメモリの前記コマンドテーブルのための前記記録されたベースアドレス及び前記コマンドヘッダの前記タグ付きコマンドリストのためのオフセットから、かつ、前記コマンドの非連続アドレス範囲の数の前記記録されたカウントから、シリアルＡＴＡバスインタフェースのためのコマンドパケットを生成するステップ；
を有する請求項１０記載の方法。
【請求項１２】
前記コマンドキューがＡＨＣＩ（Ａｄｖａｎｃｅｄ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）のためのものである請求項１０記載の方法。
【請求項１３】
前記コマンドキューがＮＶＭＨＣＩ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）のためのものである請求項１０記載の方法。
【請求項１４】
前記コマンドキューがＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）インターフェースのためのものである請求項１０記載の方法。
【請求項１５】
対応する複数の転送要求から、複数の非連続アドレス範囲を収集するステップと；
前記複数の非連続アドレス範囲の各々のために、タグ付きコマンドリストに、転送するデータの開始アドレス、及び量を記録するステップと；
前記タグ付きコマンドリストに記録された非連続アドレス範囲の数のカウント、コマンドのタグ付き転送オペコード、前記コマンド、及び、メモリのコマンドテーブルに記憶されている前記タグ付きコマンドリストを記録するステップと；
メモリの前記コマンドテーブルのためのベースアドレス、及び、コマンドヘッダの前記タグ付きコマンドリストのためのオフセットを記録するステップであって、前記コマンドヘッダは、コマンドキューに記憶された複数のコマンドヘッダのうちの１つである、ステップと；
を１つ以上のコンピュータに実行させる命令を有するプログラム。
【請求項１６】
少なくともメモリの前記コマンドテーブルのための前記記録されたベースアドレス、及び、前記コマンドヘッダの前記タグ付きコマンドリストのためのオフセットから、かつ、前記コマンドの非連続アドレス範囲の数の前記記録されたカウントから、シリアルＡＴＡバスインタフェースのためのコマンドパケットを生成するステップ；
をコンピュータに更に実行させる命令を有するプログラム。
【請求項１７】
前記コマンドキューがＡＨＣＩ（Ａｄｖａｎｃｅｄ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）のためのものである請求項１５記載のプログラム。
【請求項１８】
前記コマンドキューがＮＶＭＨＣＩ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）のためのものである請求項１０記載のプログラム。
【請求項１９】
前記コマンドキューがＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）インターフェースのためのものである請求項１０記載のプログラム。
【請求項２０】
単一のコマンドにより複数の非連続アドレス範囲の転送を要求するシステムであって：
一つ以上のシステムプロセッサと；
データ及び実行可能ソフトウェアを記憶するシステムメモリと；
前記システムメモリに記憶された転送コマンドを受信するための、前記システムメモリに接続された記憶装置と；
前記システムメモリに記憶されたプロセッサ実行可能なホストコントローラ・インタフェース・ドライバであって：
対応する複数の記憶装置転送要求から、複数の非連続アドレス範囲を収集するステップと；
複数の非連続アドレス範囲の各々のために、転送するデータの開始アドレス及び量を、タグ付きコマンドリストに記録するステップと；
前記タグ付きコマンドリストに記録された非連続アドレス範囲の数のカウント、及びコマンドのタグ付き転送オペコードを記録するステップであって、前記コマンド、及び前記タグ付きコマンドリストは、前記記憶装置のための前記システムメモリのコマンドテーブルに記憶されている、ステップと；
メモリの前記コマンドテーブルのためのベースアドレス、及びコマンドヘッダの前記タグ付きコマンドリストのためのオフセット、を記録するステップであって、前記コマンドヘッダは、コマンドキューに記憶された複数のコマンドヘッダのうちの１つである、ステップと；
を１つ以上のプロセッサに実行させるホストコントローラ・インタフェース・ドライバと；
を有するシステム。
【請求項２１】
前記ホストコントローラ・インターフェースが、シリアルＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）のためのＡＨＣＩ（Ａｄｖａｎｃｅｄ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）である請求項２０記載のシステム。
【請求項２２】
前記プロセッサ実行可能なホストコントローラ・インタフェース・ドライバは、
少なくともメモリの前記コマンドテーブルのための前記記録されたベースアドレス及び前記コマンドヘッダの前記タグ付きコマンドリストのためのオフセットから、かつ、前記コマンドの非連続アドレス範囲の数の前記記録されたカウントから、シリアルＡＴＡバスインタフェースのためのコマンドパケットを生成するステップ；
を１つ以上のプロセッサに更に実行させる、
請求項２０記載のシステム。
【請求項２３】
前記ホストコントローラ・インターフェースが、ＮＶＭＨＣＩ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）である請求項２０記載のシステム。
【請求項２４】
前記ホストコントローラ・インターフェースがＮＡＮＤフラッシュメモリ記憶装置のためのものである請求項２３記載のシステム。
【請求項２５】
前記ホストコントローラ・インターフェースがフェーズチェンジメモリ記憶デバイスのためのものである請求項２３記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、一般に、ハードディスク及び／又は不揮発性メモリへアクセスする分野に関する。より詳細には、単一のコマンドにより複数の非連続アドレス範囲の転送をキューイングするための方法及びシステムに関する。
【背景技術】
【０００２】
現代のコンピューティング・システムにおいて、種々の記憶装置が、記憶するために、及び、ソフトウェア及び／又はデータにアクセスするために利用されている。通常これらには、磁気記憶装置（例えばハードディスクドライブ（ＨＤＤ）、コンパクトディスク（ＣＤ）のような光学記憶ディスク、及び固体ドライブ（ＳＳＤ）フラッシュメモリ）が含まれ得る。
【０００３】
ＨＤＤにおいて、情報は、高速で回転している磁気プラッタに記憶され、読出し／書込みヘッドの１ブロックによって、読み書きされる。マイクロコントローラは、プラッタと関連してヘッドの動きを制御し、外部インターフェースと通信し、かつディスク・キャッシュ・バッファと共に動作する。データはプラッタの異なる部分に記憶されている場合があるため、ワークロードがランダムか、ほとんどランダムな場合には、プラッタ上でヘッドを必要な事位置へ移動するのにかなりの時間を要することになる。書込み要求の順番の入替え、及び先読みの制御によって、ＨＤＤシステムのパフォーマンスをかなり向上させることができる。
【０００４】
論理ブロック・アドレッシング（ＬＢＡ）は、記憶装置のデータブロックの位置を規定するために共通して使われている。ＬＢＡはアドレス、又はブロックを参照する。例えば、最初はＬＢＡ＝０であり、次がＬＢＡ＝１のようなアドレッシングが行われる。ＬＢＡ方式は、記憶装置の物理的な詳細をオペレーティングシステムソフトウェアに認識させるシリンダ・ヘッド・セクタ（ＣＨＳ：ｃｙｌｉｎｄｅｒ−ｈｅａｄ−ｓｅｃｔｏｒ）方式のような以前のアドレシングに取って代わるものである。論理ブロックは、通常は、５１２又は１０２４バイトであってもよい（ＩＳＯ  ９６６０  ＣＤは、２０４８バイトのブロックを使用する）。ブロックレベルＩ／Ｏを必要とするシステムコールは、記憶デバイスドライバにＬＢＡの定義を渡す。一部の単純なケースでは、論理的ブロック・サイズは、読み書きされる最も小さい物理的なセクタと同一サイズであってもよい。
【０００５】
ＮＡＮＤ（又はＮＯＲ）ロジックに基づくフラッシュメモリのＳＳＤにおいて、マイクロコントローラによって制御され、幾つかのチップにデータを記憶する。ＳＳＤは、より速い読取り時間を有し（すなわち、必要なセル又は複数のセルを見つけ、かつ読み込むだけである）、比較的より遅い書き込み時間を有する（すなわち、新しいデータを書き込む前に、既存のデータがセル又は複数のセルから消去されなければならない）。ＨＤＤのように、ディスクの回転、リード／ライトヘッドがないため、待ち時間に関する問題は少ない。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Serial  ATA  Advanced  Host  Controller  Interface  (AHCI)  1.3
【非特許文献２】Serial  ATA  International  Organization:  Serial  ATA  Revision  2.6
【非特許文献３】Non-Volatile  Memory  Host  Controller  Interface  (NVMHCI)  1.0
【発明の概要】
【発明が解決しようとする課題】
【０００７】
データ転送キューの順番を入れ替えることによって、さらなるハイパフォーマンスを得るために、（ＮＣＱ：Ｎａｔｉｖｅ  Ｃｏｍｍａｎｄ  Ｑｕｅｕｉｎｇ）のようなキューイング技術が用いられる。これによって、リード、ライト・コマンドの実行の順序が最適化される。ＳＳＤのためのキューイングの１つの効果は、複数のコマンドを、デバイスに与えることができ、このコマンドを処理するときに、ストールが発生しないことである。更に、大規模な並列的なインプリメンテーションが可能であり、より複数のデータを転送することができる。
【０００８】
ホストコントローラ・インターフェース（例えば、ＳＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ）デバイスのためのＡＨＣＩ（Ａｄｖａｎｃｅｄ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）又はフラッシュメモリ記憶装置のためのＮＶＭＨＣＩ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）は、ハードウェアのメカニズムである。そして、これは、例えばＮＣＱの技術の恩恵を得るために、ソフトウェアが、システムメモリ構造によって、デバイス（例えばホスト・バスアダプタ）と通信することを可能とする。
【０００９】
例えば、マイクロソフト（登録商標）Ｗｉｎｄｏｗｓ（登録商標）、バークレイソフトウェアディストリビューション（ＢＳＤ（しばしば、バークレーＵｎｉｘ（登録商標）と呼ばれている））、及びＬｉｎｕｘ（登録商標）、ＡＨＣＩのような、現代のオペレーティングシステムは、ホストコントローラ・インターフェースをサポートする。しかし、この種のインターフェースは容量の限られた（すなわち３２）コマンドキューのインフライト（ｉｎ−ｆｌｉｇｈｔ）コマンドしかサポートせず、要求が完了する毎にシステム例外（ｉｎｔｅｒｒｕｐｔ）を発生させる。特に、複数の要求又はコマンドは、自然に満足され、完了する。そして、デバイスのパフォーマンスが増加するにつれて、これらは、更に複数のコマンドを使うようになる。一方、ＳＣＳＩプロトコルは、２６４のコマンドをキューイングすることができる。しかし、このような長いキューをインプリメントすることは、高価であり、かつプロトコルのオーバーヘッドもＡＨＣＩより非常に大きくなり得る。
【課題を解決するための手段】
【００１０】
現在においても、多数の記憶デバイス転送要求をサービスする、より良い方法、構成、及びシステムは、完璧には探求されていなかった。本発明は、これらの問題点を解決するためになされたものである。
【００１１】
本発明は、添付の図面を参照して説明するが、この例に限られるものではない。
【図面の簡単な説明】
【００１２】
【図１】単一のコマンドによって、複数の非連続アドレス範囲を記憶装置に転送要求するシステムの一実施例を示す図である。
【図２】記憶装置に単一のコマンドによって複数の非連続アドレス範囲の転送を要求する方法の一実施例のフローチャートを示す図である。
【図３】記憶装置に単一のコマンドによって複数の非連続アドレス範囲の転送を要求する方法の他の実施例のフローチャートを示す図である。
【図４ａ】記憶装置転送のためのアドレス範囲を規定するためのデータ構造の実施例を示す図である。
【図４ｂ】タグ付き転送コマンド及び非連続アドレス範囲のタグ付きコマンドリストを含むコマンドテーブルのデータ構造の実施例を示す図である。
【図４ｃ】記憶装置に対するタグ付き転送コマンドのデータ構造の実施例を示す図である。
【図４ｄ】記憶装置に対するタグ付き転送コマンドのデータ構造の別の実施例を示す図である。
【図４ｅ】メモリのコマンドテーブルのためのベースアドレス、及び非連続アドレス範囲のタグ付きコマンドリストのためのオフセットを含む記憶装置コマンドヘッダを規定するためのデータ構造の実施例を示す図である。
【図４ｆ】複数のコマンドヘッダを含む記憶装置コマンドキューを規定するためのデータ構造の実施例を示す図である。
【図４ｇ】記憶装置に対するタグ付き転送コマンドを規定するためのデータ構造の別の実施例を示す図である。
【発明を実施するための形態】
【００１３】
単一のコマンドにより複数の非連続アドレス範囲の転送をキューイングするための方法、及びシステムが開示されている。いくつかの実施例では、システムは、一つ以上のシステムプロセッサ、データと実行可能ソフトウェアとを記憶するシステムメモリ、及びシステムメモリに記憶された転送コマンドを受信する記憶装置を含んでもよい。いくつかの実施例では、システムメモリに記憶されたホストコントローラ・インタフェース・ドライバ（例えば、Ｓｅｒｉａｌ  ＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）デバイスのためのＡｄｖａｎｃｅｄ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ（ＡＨＣＩ）、又はＮＡＮＤフラッシュメモリ記憶装置のためのＮＶＭＨＣＩ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ））が、一つ以上のシステムプロセッサによって実行された場合、それは、複数の非連続アドレス範囲を、記憶装置に対する転送要求から収集し、かつ、開始アドレス及び各々の非連続アドレス範囲に対するデータ量を、タグ付きコマンドリスト（ｔａｇｇｅｄ−ｃｏｍｍａｎｄ  ｌｉｓｔ）に記録する。それは、また、タグ付きコマンドリストに存在する非連続アドレス範囲の数のカウントと、コマンドタグ付き転送オペコードとを記録する。そして、コマンド及びタグ付きコマンドリストを記憶デバイスのシステムメモリのコマンドテーブルに記憶してもよい。それは、コマンドテーブルのためのベースメモリアドレスと、タグ付きコマンドリストのためのオフセットとを、コマンドヘッダに記録してもよい。コマンドヘッダは、特定のホストコントローラ・インターフェースに従ってコマンドキューに記憶される。一部の別の実施例において、タグ付き転送コマンドは、ホスト−トゥ−デバイスレジスタ（ｈｏｓｔ−ｔｏ−ｄｅｖｉｃｅ  ｒｅｇｉｓｔｅｒ）ＦＩＳ（ｆｒａｍｅ  ｉｎｆｏｒｍａｔｉｏｎ  ｓｔｒｕｃｔｕｒｅ）の物理的な転送メカニズム（例えばＳＡＴＡコマンドにおける、ＡＴＡＰＩ（ＡＴＡ  Ｐａｃｋｅｔ  Ｉｎｔｅｒｆａｃｅ）コマンド及び／又はＳＡＴＡ  ＮＣＱコマンド））にしたがって、記憶装置に通信されてもよい。タグ付き転送コマンドは、複数の非連続アドレス範囲を記憶するタグ付きコマンドリストの利用可能性（ａｖａｉｌａｂｉｌｉｔｙ）を示してもよい。そして、記憶装置は、それをデータＦＩＳ（すなわちデータパケット又は複数のパケット）として要求してもよい。
【００１４】
したがって、単一のコマンドにより複数の非連続アドレス範囲の転送のキューイングは、より効率的で、かつ費用対効果の高い方法で、複数の記憶装置転送要求のための構造及びシステムを提供してもよい。
【００１５】
以下の説明では、多数の具体的な詳細を記載する。なお、本発明の実施例がこれらの具体的な詳細がなくても実施され得ることが、理解されなければならない。他の例において、周知の回路、構造、及び技術は、この説明を理解することをかえって不明瞭にしないようにするため、詳細には説明しない。本発明のこれらの、そして他の実施例は以下の説明に従って実現されてもよい。そして、さまざまな変更態様と改変がより広い本発明の精神と範囲から逸脱することなく、以下の教示においてなされてもよいことは言うまでもない。したがって、明細書及び図面は、説明のためのものであって、限定をするためのものではない。発明は、請求項及びその均等物によってのみ判断される。
【実施例】
【００１６】
図１は、単一のコマンドにより複数の非連続アドレス範囲の転送を記憶装置に要求するためのシステム１０１の一実施例を示す図である。システム１０１は、ＣＰＵ１１１、メモリ制御プロセッサ１１２、Ｉ／Ｏ制御プロセッサ１１３、グラフィックプロセッサ１１４、及びＤＭＡ（ダイレクトメモリアクセス）プロセッサを含む、複数のシステムプロセッサを含んでもよい。加えて、システム１０１は、特定の記憶装置、例えばＳＳＤ１２０、ディスク駆動装置１２１、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）デバイス１２２及び／又はＰＣＩ−Ｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）及び／又はフラッシュメモリ記憶１２６を含む。システム１０１は、また、データ及び実行可能なソフトウェアを記憶するシステムメモリ１１５、オーディオＩ／Ｏ  １２３、汎用シリアルバスＩ／Ｏ  １２４、ローカル・エリア・ネットワークＩ／Ｏ  １２５、ＢＩＯＳ１１７、キーパッド・インターフェース１１８、及びマウス・インターフェース１１９を含む。ＳＳＤ  １２０、ディスク駆動装置１２１、ＰＣＩデバイス１２２及び／又はフラッシュメモリ記憶１２６のような記憶装置は、記憶装置転送要求に応答して、システムメモリ１１５に記憶された、さまざまなアドレス範囲のデータの転送を送受信する、転送コマンドを受信するためのシステムメモリ１１５に接続されてもよい。
【００１７】
システムメモリ１１５は、また、プロセッサが実行可能なホストコントローラ・インタフェース・ドライバ１１６を記憶する。システム１０１の一部の実施例においてドライバ１１６は、ＳＡＴＡデバイス（例えばＳＳＤ１２０又はディスク駆動装置１２１）用のＡＨＣＩドライバ及び／又はＮＡＮＤフラッシュメモリ記憶装置（例えばフラッシュメモリ記憶１２６）のためのＮＶＭＨＣＩを含んでもよい。ドライバ１１６は、一つ以上のシステムプロセッサによって実行されるときに、一つ以上のシステムプロセッサが、複数の非連続アドレス範囲を、対応する記憶装置への転送要求から収集し、各々の非連続アドレス範囲に対する転送のためのデータ、開始アドレス及び量を、タグ付きコマンドリストに記録させるようにしてもよい。ドライバ１１６を実行するシステムプロセッサは、また、コマンドに、タグ付き転送オペコード、タグ付きコマンドリストの非連続アドレス範囲の数を記録してもよい。コマンド及びタグ付きコマンドリストは、特定の記憶装置のシステムメモリ１１５のコマンドテーブルに記憶されている。システムメモリ１１５のコマンドテーブルのためのベースアドレス、及びタグ付きコマンドリストのオフセットは、記憶装置のためのコマンドキューに記憶されたコマンドヘッダのうちの１つに記録されてもよい。
【００１８】
システム１０１は、各々のタグ付き転送コマンドのためのタグ付きコマンドリストの複数の非連続アドレス範囲の記憶装置に対する転送要求に係る本願明細書における方法に従って使用し得ることはいうまでもない。
【００１９】
図２は、単一のコマンドにより複数の非連続アドレス範囲の転送を記憶装置に要求する一実施例の方法２０１を示すフローチャートである。本願明細書に開示されている方法２０１等の方法は、専用ハードウェア又は機械可読型媒体に格納されかつ汎用機械によって又は特殊目的の機械によって又は両方の組合せによって実行可能なソフトウェア又はファームウェア・オペレーションコードを含み得る処理ブロックで実行される。
【００２０】
処理ブロック２１１において、複数の非連続アドレス範囲のリストが、対応する記憶装置に対する転送要求から特定される。処理ブロック２１３において、複数の非連続アドレス範囲のリストの転送を要求する単一のコマンドが、ホストコントローラ・インターフェースを通じて記憶装置に送られる。方法２０１の一部の実施例は、ホスト−トゥ−デバイスレジスタＦＩＳの物理的な転送メカニズム（ＳＡＴＡコマンドでは、例えばＡＴＡＰＩコマンド及び／又はＳＡＴＡ  ＮＣＱコマンド）に従って記憶装置に通信するために、タグ付き転送コマンドを提供する。タグ付き転送コマンドは、複数の非連続アドレス範囲を記憶しているタグ付きコマンドリストの利用可能性を示してもよい。記憶デバイスは、データＦＩＳ（すなわち一つ以上のデータパケット）として、タグ付きコマンドリストを要求またはＤＭＡを行ってもよい。次に処理ブロック２１５で、方法２０１は、要求されたデータ転送が完了するのを待つ。そして、完了した場合には、処理は処理ブロック２１７へ進む。処理ブロック２１７において、記憶装置に複数の非連続アドレス範囲のリストを転送することを要求する単一のコマンドの完了に対応した単一の割り込みが受信される。そして、処理ブロック２１９で、その一つの割り込みが処理される。
【００２１】
図３は、単一のコマンドによって記憶装置に複数の非連続アドレス範囲の転送を要求する方法３０１の別の実施例のためのフローチャートを示す図である。処理ブロック３１１において、複数の非連続アドレス範囲のリストが、対応する記憶装置に対する転送要求から特定される。処理ブロック３１２において、特定された非連続アドレス範囲のリストの各々に対して、開始アドレス、及び転送するデータの量が、タグ付きコマンドリストに記録される。処理ブロック３１３において、タグ付きコマンドリストの非連続アドレス範囲の数のカウント、及びタグ付き転送オペコードが単一のコマンドに記録される。このコマンドは、タグ付きコマンドリストとともにメモリのコマンドテーブルに記憶される。処理ブロック３１４において、メモリのコマンドテーブルのベースアドレス及びタグ付きコマンドリストのオフセットが、コマンドキューに記憶されたコマンドヘッダに記録される
処理ブロック３１５において、方法３０１は、要求された転送の完了を待つ。そして、完了した場合に、処理は処理ブロック３１７へ進む。処理ブロック３１７において、単一の割り込みが受信される。この割り込みは、記憶装置が複数の非連続アドレス範囲のリストを転送することを要求する単一のコマンドの完了に対応している。そして、処理ブロック３１９で、その一つの割り込みが処理される。記憶装置に対して特定のホストコントローラ・インターフェースに従って転送を要求することに関する補足的な詳細は、例えば、その特定のホストコントローラ・インターフェースに関する非特許文献１乃至３に記載されている。非特許文献１乃至３は、インテルのウエブサイトより入手できる。
【００２２】
図４ａは、記憶装置の転送のためのアドレス範囲４０１を特定するための３２ビットフィールドのシーケンスを有するデータ構造の実施例を示す図である。アドレス範囲４０１は、ＬＢＡ又は開始セクタ・アドレス４１１ａ及び４１１ｂ、並びに転送するデータセクタの量４１２を含む。アドレス範囲４０１は、処理ブロック３１２にて示したように、タグ付きコマンドリストに記録されてもよい。この種のタグ付きコマンドリストは、一種のスキャッタ／ギャザリスト（ｓｃａｔｔｅｒ／ｇａｔｈｅｒ  ｌｉｓｔ）を示してもよいことはいうまでもない。典型的なスキャッタ／ギャザリストが、物理アドレスと仮想アドレスとの間の変換に用いられてもよい。タグ付きコマンドリストは、分散された（ｓｃａｔｔｅｒｅｄ）仮想アドレスマップによる複数の読み出し又は複数の書き込みを、１つのコマンド（例えば、後述のコマンド４０３、４０４又は４０８）に統合する。
【００２３】
図４ｂは、タグ付き転送コマンド４２１を含むコマンドテーブルデータ構造４０２の実施例を示す図である。そして、それは適切な長さ（例えば最高３２又は６４バイト）であり、かつ、非連続アドレス範囲（例えばアドレス範囲４０１と同様の）のタグ付きコマンドリスト４２３を含んでもよい。コマンドテーブルデータ構造４０２は、他のデータセクション、及び／又は、例えば、ホストコントローラ・インターフェースによって定義される物理領域ディスクリプタ（ＰＲＤ）テーブル４２２、メタデータ、ＰＲＤインデックス等の表、を含んでもよいことはいうまでもない。コマンドテーブルデータ構造４０２は、処理ブロック３１３に従って、メモリ（例えばシステムメモリ１１５）に記憶されてもよい。
【００２４】
図４ｃは、記憶装置タグ付き転送コマンド４０３を規定するための３２ビットフィールドのシーケンスを含むデータ構造の実施例を示す図である。そして、これは、タグ付きコマンドリストの非連続アドレス範囲の数のカウント４３２、及びタグ付き転送オペコード４３１を含む。タグ付き転送コマンド４０３は、処理ブロック３１３に従ってコマンドテーブル（例えばコマンドテーブルデータ構造４０２）に記憶されてもよい。さまざまなタグ付き転送オペコード４３１は、読み込みのために、又は書き込みのために使用されてもよいことはいうまでもない。また、コマンド４０３は、ホストコントローラ・インターフェース（例えばＡＨＣＩ及び／又はＮＶＭＨＣＩ）によって、及び／又は、バスインタフェース（例えばＳＡＴＡ）によって特定される、アドレス・データ、パラメータ、属性等を記憶する他のフィールドを含んでもよいことはいうまでもない。
【００２５】
図４ｄは、記憶装置に対するタグ付き転送コマンド４０４を規定する、３２ビットフィールドシーケンスを含むデータ構造の別の実施例を示す図である。このタグ付き転送コマンド４０４は、タグ付きコマンドリスト及びタグ付き転送オペコード４４１の非連続アドレス範囲の数のカウント４４２を含む。コマンド４０４の実施例において、タグ付きコマンドリストの非連続アドレス範囲の数のカウント４４２は、既存のホストコントローラ・インターフェースの、既に定義されたフィールド（例えばセクタの合計数）を置き換えてもよい。
【００２６】
図４ｅは、記憶装置コマンドヘッダ４５０を規定するデータ構造４０５の実施例を例示している。記憶装置コマンドヘッダ４５０は、３２ビットフィールドのシーケンスを含む。３２ビットフィールドは、メモリ（例えばシステムメモリ１１５）のコマンドテーブル（例えばコマンドテーブルデータ構造４０２）のベースアドレス４５１ａ及び４５１ｂ、並びに非連続アドレス範囲（例えばアドレス範囲４０１）のタグ付きコマンドリスト（例えばタグ付きコマンドリスト４２３）のオフセット４５２を含む。コマンドヘッダ４５０は、処理ブロック３１４に従ってメモリに記憶されてもよい。
【００２７】
図４ｆは、複数のコマンドヘッダ４６０−４６３（例えばコマンドヘッダ４５０）を含む記憶装置コマンドキュー４０６を規定するデータ構造４０７の実施例を示す。これは、対応するコマンドテーブル４７０−４７３（例えばコマンドテーブルデータ構造４０２）を特定し、かつ、処理ブロック３１４に従って記憶されてもよい。コマンドキュー４０６に対するメモリ（例えばシステムメモリ１１５）のベースアドレスは、ポートレジスタ４６５によって記憶装置に対して特定されてもよい。メモリの付加的なベースアドレスが、ポートレジスタ４６６で特定されてもよい。
【００２８】
図４ｇは、記憶装置タグ付き転送コマンド４０８のパケットを規定する８ビット・レジスタのシーケンスを含む構造に係る他の実施例を示す図である。記憶装置タグ付き転送コマンド４０８は、タグ付きコマンドリストの非連続アドレス範囲の数のカウント４８２、及びタグ付き転送オペコード４８１を含む。コマンド４０８の一部の実施例において、既存の（例えばＳＡＴＡ  ＡＴＡＰＩ及び／又はＳＡＴＡ  ＮＣＱのような）バスインタフェースの線形ブロック・アドレス（ＬＢＡ）の代わりに、タグ付きコマンドリスト・アドレス／オフセット４８３ａ−ｃ又は４８３ａ−ｆ（例えば定義されたＰＲＤ又はコマンドテーブルによって）ＤＭＡのために特定されてもよい。
【００２９】
上述の説明は、本発明の好ましい実施例を例示することを目的としている。技術進歩が急速であるこの種の技術の領域において、上述の説明から、更なる発展は容易に予知できない。本発明は添付の請求の範囲に係る発明、及びそれらの均等物の原理から逸脱することなく、当業者によって実施例、及びその詳細が修正されてもよい。
【図１】
2012508428.tif 000003
【図２】
2012508428.tif 000004
【図３】
2012508428.tif 000005
【図４ａ】
2012508428.tif 000006
【図４ｂ】
2012508428.tif 000007
【図４ｃ】
2012508428.tif 000008
【図４ｄ】
2012508428.tif 000009
【図４ｅ】
2012508428.tif 000010
【図４ｆ】
2012508428.tif 000011
【図４ｇ】
2012508428.tif 000012
【国際調査報告】
2012508428.tif 000013
2012508428.tif 000014