(57)【要約】  本発明は、ストレージシステムにおけるメインメモリとストレージ装置との間のデータの転送を表す装置及び方法に関する。本発明は、データ転送に関連するストレージ装置及びメインメモリの両方のデータエリアを記述するため、ＳＧＬ（Ｓｃａｔｔｅｒ  Ｇａｔｈｅｒ  Ｌｉｓｔ）を利用する。さらに、ディスク位置がソースであるか、メインメモリの一部が宛先である、あるいはその反対であるか表示する方向表示が利用される。このようにして、読出し、書き込み及び／または変更プロセスの効率的な方法が可能となる。さらに、データ、すなわち、ペアの参照のみがＳＧＬ間でコピーされるため、ＣＰＵ処理中には実データは移動されず、格納及び帯域幅要求を大きく低減することができる。さらに、本発明はまた、ＳＧＬを用いたセクタアライメントを効率的に実行する方法に関し、これにより、ＣＰＵの依存性ははるかに低速なディスク／ストレージ入出力から切断される。
2007501473.tif 000002
【特許請求の範囲】
【請求項１】
ストレージシステムにおけるストレージ装置とメインメモリとの間のデータの転送を表す方法であって、
前記ストレージシステムは、
転送対象となる前記データのソースまたは宛先であるディスク位置を参照する０以上の分散収集リスト要素を有するよう構成される第１分散収集リストデータ構造と、
転送対象となる前記データのソースまたは宛先である前記メインメモリの一部を参照する０以上の分散収集リスト要素を有するよう構成される第２分散収集リストデータ構造と、
前記第１分散収集リストデータ構造または前記第２分散収集リストデータ構造の各分散収集リスト要素に対する方向表示と、
を有し、
前記方向表示は、前記ディスク位置がソースであり、前記メインメモリの一部が宛先であるか表示するか、あるいは、前記ディスク位置が宛先であり、前記メインメモリの一部がソースであるか表示し、
当該方法は、第１及び第２分散収集リストデータ構造を生成するステップを有する、
ことを特徴とする方法。
【請求項２】
請求項１記載の方法であって、
前記第１分散収集リストデータ構造は前記方向表示を有し、
前記第２分散収集リストデータ構造は前記方向表示を有する、
ことを特徴とする方法。
【請求項３】
請求項１記載の方法であって、さらに、読出しまたは書き込み処理の実行時に、
宛先データエリア、ソースデータエリア及び方向を受付けるステップと、
前記方向に応じた前記宛先データエリアを有する少なくとも１つの分散収集リスト要素を前記第１分散収集リストデータ構造にキュー入力するステップと、
前記方向に応じた前記ソースデータエリアを有する少なくとも１つの分散収集リスト要素を前記第２分散収集リストデータ構造にキュー入力するステップと、
前記メインメモリ及び前記ストレージ装置の何れがソース及び宛先であるか表示するよう前記方向表示を設定するステップと、
を有することを特徴とする方法。
【請求項４】
請求項１記載の方法であって、
前記ストレージシステムはさらに、
第５分散収集リストデータ構造と、
第６分散収集リストデータ構造と、
を有し、
当該方法はさらに、前記ストレージ装置へのアラインされていない書き込み前に転送されるデータのセクタアライメントを実行するステップを有し、
該ステップは、
前記転送対象となるデータがセクタ境界において始まらない場合、前記ストレージ装置からヘッドセクタを読出し、該ヘッドセクタを一時的ヘッドセクタに格納し、
前記転送対象となるデータがセクタ境界において終わらない場合、前記ストレージ装置からテールセクタを読出し、該テールセクタを一時的テールセクタに格納し、
前記ヘッドセクタと前記テールセクタが読み出された後、
前記転送対象となるデータがセクタ境界において始まらない場合、前記ヘッドセクタのヘッドを書き込み、
前記転送対象となるデータを書き込み、
前記転送対象となるデータがセクタ境界において終わらない場合、前記テールセクタのテールを書き込む、
ことを有し、
前記読み出しと書き込みは、前記第５及び第６データ構造の分散収集リスト要素により表される、
ことを特徴とする方法。
【請求項５】
請求項１記載の方法であって、
前記第１分散収集リストデータ構造は、ディスク位置の単一のセクタ内に転送されるデータを参照する１つの分散収集リスト要素を有し、
前記ストレージシステムは、第５分散収集リストデータ構造と第６分散収集リストデータ構造とを有し、
当該方法はさらに、前記ストレージ装置へのアラインされていない書き込み前に転送されるデータのセクタアライメントを実行するステップを有し、
該ステップは、
前記ストレージ装置から単一のセクタを読出し、該セクタを一時的セクタに格納し、
前記単一のセクタが読み出された後、
前記転送対象となるデータがセクタ境界において始まらない場合、前記単一のセクタのヘッドを書き込み、
前記転送対象となるデータを書き込み、
前記転送対象となるデータがセクタ境界において終わらない場合、前記単一のセクタのテールを書き込む、
ことを有し、
前記読み出しと書き込みは、前記第５及び第６データ構造の分散収集リスト要素により表される、
ことを特徴とする方法。
【請求項６】
請求項１記載の方法であって、
前記ストレージシステムはさらに、第５分散収集リストデータ構造と第６分散収集リストデータ構造とを有し、
当該方法はさらに、前記ストレージ装置から転送されるデータのアラインされていない読出しを実行するステップを有し、
該ステップは、
前記ストレージ装置からすべてのセクタを読み出し、
前記転送対象となるデータがセクタ境界において始まらない場合、前記転送対象となるデータの何れも有しない前記ヘッドセクタの一部を破棄し、
前記転送対象となるデータがセクタ境界において終わらない場合、前記転送対象となるデータの何れも有しない前記テールセクタの一部を破棄する、
ことを有し、
前記読み出しと書き込みは、前記第５及び第６データ構造の分散収集リスト要素により表される、
ことを特徴とする方法。
【請求項７】
請求項１記載の方法であって、
前記ストレージシステムはさらに、
前記転送対象となるデータのソースまたは宛先である前記メインメモリの一部を参照する１以上の分散収集リスト要素を有する第３分散収集リストデータ構造と、
前記転送対象となるデータのソースまたは宛先であるディスク位置を参照する１以上の分散収集リスト要素を有する第４分散収集リストデータ構造と、
を有し、
当該方法はさらに、転送の一部が実行されたとき、前記第６データ構造から前記第３データ構造に前記一部のデータの参照を転送し、前記第５データ構造から前記第４データ構造に前記一部のデータを転送するステップを有する、
ことを特徴とする方法。
【請求項８】
請求項７記載の方法であって、
前記ストレージシステムはさらに、
前記転送対象となるデータのソースまたは宛先である前記メインメモリの一部を参照する１以上の分散収集リスト要素を有する第７分散収集リストデータ構造と、
前記転送対象となるデータのソースまたは宛先であるディスク位置を参照する１以上の分散収集リスト要素を有する第８分散収集リストデータ構造と、
を有し、
当該方法はさらに、
前記一時的ヘッドセクタ及び／または前記一時的テールセクタの前記一時的メモリをリサイクルするため、前記第３及び第４分散収集リストデータ構造に対し反対処理を実行するステップと、
前記反対処理に基づき、前記第２分散収集リストデータ構造と整合させるため、前記第７分散収集リストデータ構造を生成するステップと、
前記反対処理に基づき、前記第１分散収集リストデータ構造と整合させるため、前記第８分散収集リストデータ構造を生成するステップと、
を有することを特徴とする方法。
【請求項９】
請求項１記載の方法であって、
前記方向表示は、ＡＴＡ６によるディスクアドレスのコンピュータ表現のビットの中の単一の余剰ビットとして実現されることを特徴とする方法。
【請求項１０】
請求項１記載の方法であって、
前記ストレージシステムは、リアルタイムストレージシステムであることを特徴とする方法。
【請求項１１】
ストレージシステムにおけるストレージ装置とメインメモリとの間のデータの転送を表す装置であって、
前記ストレージシステムは、
転送対象となる前記データのソースまたは宛先であるディスク位置を参照する０以上の分散収集リスト要素を有するよう構成される第１分散収集リストデータ構造と、
転送対象となる前記データのソースまたは宛先である前記メインメモリの一部を参照する０以上の分散収集リスト要素を有するよう構成される第２分散収集リストデータ構造と、
前記第１分散収集リストデータ構造または前記第２分散収集リストデータ構造の各分散収集リスト要素に対する方向表示と、
を有し、
前記方向表示は、前記ディスク位置がソースであり、前記メインメモリの一部が宛先であるか表示するか、あるいは、前記ディスク位置が宛先であり、前記メインメモリの一部がソースであるか表示する、
ことを特徴とする装置。
【請求項１２】
請求項１１記載の装置であって、
前記第１分散収集リストデータ構造は前記方向表示を有し、
前記第２分散収集リストデータ構造は前記方向表示を有する、
ことを特徴とする装置。
【請求項１３】
請求項１１記載の装置であって、
当該装置は読出しまたは書き込み処理の実行時に、
宛先データエリア、ソースデータエリア及び方向を受付け、
前記方向に応じた前記宛先データエリアを有する少なくとも１つの分散収集リスト要素を前記第１分散収集リストデータ構造にキュー入力し、
前記方向に応じた前記ソースデータエリアを有する少なくとも１つの分散収集リスト要素を前記第２分散収集リストデータ構造にキュー入力し、
前記メインメモリ及び前記ストレージ装置の何れがソース及び宛先であるか表示するよう前記方向表示を設定する、
よう構成されることを特徴とする装置。
【請求項１４】
請求項１１記載の装置であって、
前記ストレージシステムはさらに、
第５分散収集リストデータ構造と、
第６分散収集リストデータ構造と、
を有し、
当該装置はさらに、前記ストレージ装置へのアラインされていない書き込み前に転送されるデータのセクタアライメントを実行するよう構成され、
該ステップは、
前記転送対象となるデータがセクタ境界において始まらない場合、前記ストレージ装置からヘッドセクタを読出し、該ヘッドセクタを一時的ヘッドセクタに格納し、
前記転送対象となるデータがセクタ境界において終わらない場合、前記ストレージ装置からテールセクタを読出し、該テールセクタを一時的テールセクタに格納し、
前記ヘッドセクタと前記テールセクタが読み出された後、
前記転送対象となるデータがセクタ境界において始まらない場合、前記ヘッドセクタのヘッドを書き込み、
前記転送対象となるデータを書き込み、
前記転送対象となるデータがセクタ境界において終わらない場合、前記テールセクタのテールを書き込む、
ことを有し、
前記読み出しと書き込みは、前記第５及び第６データ構造の分散収集リスト要素により表される、
ことを特徴とする装置。
【請求項１５】
請求項１１記載の装置であって、
前記第１分散収集リストデータ構造は、ディスク位置の単一のセクタ内に転送されるデータを参照する１つの分散収集リスト要素を有し、
前記ストレージシステムは、第５分散収集リストデータ構造と第６分散収集リストデータ構造とを有し、
当該装置はさらに、前記ストレージ装置へのアラインされていない書き込み前に転送されるデータのセクタアライメントを実行するよう構成され、
該ステップは、
前記ストレージ装置から単一のセクタを読出し、該セクタを一時的セクタに格納し、
前記単一のセクタが読み出された後、
前記転送対象となるデータがセクタ境界において始まらない場合、前記単一のセクタのヘッドを書き込み、
前記転送対象となるデータを書き込み、
前記転送対象となるデータがセクタ境界において終わらない場合、前記単一のセクタのテールを書き込む、
ことを有し、
前記読み出しと書き込みは、前記第５及び第６データ構造の分散収集リスト要素により表される、
ことを特徴とする装置。
【請求項１６】
請求項１１記載の装置であって、
当該方法はさらに、前記ストレージ装置から転送されるデータのアラインされていない読出しを実行するステップを有するよう構成され、
該ステップは、
前記ストレージ装置からすべてのセクタを読み出し、
前記転送対象となるデータがセクタ境界において始まらない場合、前記転送対象となるデータの何れも有しない前記ヘッドセクタの一部を破棄し、
前記転送対象となるデータがセクタ境界において終わらない場合、前記転送対象となるデータの何れも有しない前記テールセクタの一部を破棄する、
ことを有し、
前記読み出しと書き込みは、前記第５及び第６データ構造の分散収集リスト要素により表される、
ことを特徴とする装置。
【請求項１７】
請求項１１記載の装置であって、
前記ストレージシステムはさらに、
前記転送対象となるデータのソースまたは宛先である前記メインメモリの一部を参照する１以上の分散収集リスト要素を有する第３分散収集リストデータ構造と、
前記転送対象となるデータのソースまたは宛先であるディスク位置を参照する１以上の分散収集リスト要素を有する第４分散収集リストデータ構造と、
を有し、
当該装置はさらに、転送の一部が実行されたとき、前記第１データ構造から前記第３データ構造に前記一部のデータの参照を転送し、前記第２データ構造から前記第４データ構造に前記一部のデータを転送するよう構成される、
ことを特徴とする装置。
【請求項１８】
請求項１７記載の装置であって、
前記ストレージシステムはさらに、
前記転送対象となるデータのソースまたは宛先である前記メインメモリの一部を参照する１以上の分散収集リスト要素を有する第７分散収集リストデータ構造と、
前記転送対象となるデータのソースまたは宛先であるディスク位置を参照する１以上の分散収集リスト要素を有する第８分散収集リストデータ構造と、
を有し、
当該装置はさらに、
前記一時的ヘッドセクタ及び／または前記一時的テールセクタの前記一時的メモリをリサイクルするため、前記第３及び第４分散収集リストデータ構造に対し反対処理を実行し、
前記反対処理に基づき、前記第２分散収集リストデータ構造と整合させるため、前記第７分散収集リストデータ構造を生成し、
前記反対処理に基づき、前記第１分散収集リストデータ構造と整合させるため、前記第８分散収集リストデータ構造を生成する、
よう構成されることを特徴とする装置。
【請求項１９】
請求項１１記載の装置であって、
前記方向表示は、ＡＴＡ６によるディスクアドレスのコンピュータ表現のビットの中の単一の余剰ビットとして実現されることを特徴とする装置。
【請求項２０】
請求項１１記載の装置であって、
前記ストレージシステムは、リアルタイムストレージシステムであることを特徴とする装置。
【請求項２１】
請求項１乃至１０何れか一項記載の方法を１以上の処理ユニットに実行させる命令を格納したコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メインメモリとストレージ装置との間のデータ転送を行うための方法及び対応する装置に関する。
【背景技術】
【０００２】
ストレージ装置とは、典型的には、データブロックの読み込みとおそらく書き込みが可能な任意の記憶装置である。このようなストレージ装置は、通常はブロックまたはセクタベースのものであり、すなわち、ブロックやセクタなどの一部しか要求されていないときでも、それ全体が読み出されなければならず、ブロックやセクタなどの一部しか更新／書き込みがされないときでも、まずそれ全体が読み出され、全体が変更及び書き込みされなければならない。
【０００３】
大多数のコンピュータベースシステムでは、データバッファのメモリは、連続的でなく「分散（ｓｃａｔｔｅｒ）」されている可能性がある。すなわち、バッファの各「フラグメント（ｆｒａｇｍｅｎｔ）」は、異なるメモリ位置に物理的に存在する。例えば、ホストコンピュータのメインメモリから二次的なストレージ装置に「分散」されたバッファデータを転送するとき、好ましくは連続的に二次的ストレージ装置に転送できるように、バッファの各フラグメントを「収集（ｇａｔｈｅｒ）」する必要がある。このため、ＳＧＬ（Ｓｃａｔｔｅｒ−Ｇａｔｈｅｒ  Ｌｉｓｔ）と呼ばれるデータ構造を利用することが一般に知られている。ＳＧＬの各要素は、各バッファフラグメントを指定または参照し、当該リストは要求される転送のため、フラグメントを効果的に「収集」する。このとき、ＤＭＡ（Ｄｉｒｅｃｔ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）コントローラなどのメモリコントローラが、ＳＧＬの連続する各要素に指定されるような転送を実行する。
【０００４】
従来のファイル／ストレージシステムでは、セクタアライメント（ｓｅｃｔｏｒ  ａｌｉｇｎｍｅｎｔ）制限なしにファイル／ストレージシステムに格納されているデータとのアクセスを可能にするバッファキャッシュが、典型的には利用可能である。しかしながら、従来のファイル／ストレージシステムでは、典型的には分散されているデータが格納されることは可能でない。例外は、ＵＮＩＸ（登録商標）系ファイルシステムの「ｖｗｒｉｔｅ」及び「ｖｒｅａｄ」コマンドである。
【０００５】
パフォーマンスの点から、リアルタイムファイル／ストレージシステム（ＲＴＦＳ）は、通常はバッファキャッシュを備えず、ｓｅｃｔｏｒ−ｕｎａｌｉｇｎｅｄな書き込みは、セクタ全体の読出し−変更−書き込み処理として通常は実現される。セクタアライメントは、ストレージ装置に対しセクタ全体でしか読み書きできず、各バイトを個別に読み書きすることはできないという事実である。上述のように、ＳＧＬは典型的には、ＤＭＡ対応装置などによるディスクまたはメインメモリ位置との間のデータ転送に関して、メインメモリスペースに分散されているデータ位置を記述するのに利用される。
【０００６】
ＲＴＦＳでは、部分的なブロック／セクタの書き込みは、典型的には電力故障中に失われたデータ量に関する制限及び／または時間制限など、データの永続性（ｐｅｒｓｉｓｔｅｎｃｙ）に関する要求から生じたものである。データストリームと、特にＣＰＩ（Ｃｈａｒａｃｔｅｒｉｓｔｉｃ  Ｐｏｉｎｔ  Ｉｎｆｏｒｍａｔｉｏｎ）や他のタイプのメタデータなどの極めて薄いデータストリームに関して、これは部分的なブロックの更新を生じさせる可能性がある。他の部分的書き込みのソースは、ディスク記憶装置に基づくＰＶＲ（Ｐｅｒｓｏｎａｌ  Ｖｉｄｅｏ  Ｒｅｃｏｒｄｅｒ）アプリケーションにおける記録など、添付データから既存データに至るまで可能である。部分的読み出しは、ＰＶＲアプリケーションを用いたトリックプレイシナリオなどでは一般的なものである。データストリームは、典型的には連続するデータフローである。スタートすると、ミドルウェアからの制御は不要である。データ転送は、それを利用しているコンポーネントにより規制される。通常、ストリームのシンクとソースとの間には「ラバーバンディング（ｒｕｂｂｅｒ  ｂａｎｄｉｎｇ）」を提供するバッファ機構が存在する。バッファの取扱いは、ストリーミングデータを利用するコンポーネント間の主要なインタフェースである。
【０００７】
部分的なセクタ更新を行う従来方法は、ブロック全体を読み出すコマンドを実行し、ブロック全体の読み出しが完了するまで待機するというものである。
【０００８】
その後、読み出されたデータを新たなデータにより変更／合成し、最後に更新されたブロックを書き込むコマンドが実行される。上記３つのステップは、通常は同一コンテクストの一部であり、すなわち、スレッド、プロセス、タスクなどであり、これにより、求められるコンテクストスイッチングのためＣＰＵの使用は非効率なものとなり、ストレージ装置の使用も非効率なものとなる。ディスクＩ／Ｏは、ＣＰＵと比較して低速であり、これにより、ＣＰＵは典型的には次のステップを処理する前に、ディスクが各ステップを完了させるのを待機する。この待機状態において、待機中のＣＰＵは他のスレッド、プロセス、タスクなどに割込みされ、これにより、コンテクストスイッチングが行われる。さらに、ＣＰＵでは１つのスレッド、プロセス、タスクなどしか利用可能でない場合、低速なディスクＩ／Ｏに対するＣＰＵの待機は、１秒あたりのセクタ書き込み数を良好に制限することができるであろう。同一のブロックの読出しコマンド及び書き込みコマンドは装置により確認されるようにアトミックなものであり、これにより、装置のスループットは非効率なＣＰＵの使用により影響を受けるため、あるいは、アトミックではなく、このため、他のディスクリクエストが介入し得るため、非効率なストレージ装置の使用が発生する。アトミックでないため、追加的なシークオーバヘッドが、この同一のディスクブロック位置に対し生ずる。
【０００９】
一部のケースでは、スループットに対する影響はまた遅延に依存し、大きな遅延はスループットに大きな影響を及ぼす。より大きな遅延が、ＩＥＥＥ１３９４あるいはイーサネット（登録商標）ベースのネットワーク上のＳＢＰ−２などのネットワーク対応ストレージ装置に与えられる。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明の課題は、上述の問題を解決するデータ転送方法（及び対応する装置）を提供することである。さらなる課題は、当該方法をシンプルかつ効率的な方法により提供することである。他の課題は、分散されたデータがストレージ装置のディスクに対し読み書きされることを可能にすることである。さらなる課題は、従来のＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）／ＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）読出しコマンド及び／または書き込みコマンドとの他のインタフェースを提供することである。
【課題を解決するための手段】
【００１１】
これは、ストレージシステムにおけるストレージ装置とメインメモリとの間のデータの転送を表す方法であって、前記ストレージシステムは、転送対象となる前記データのソースまたは宛先であるディスク位置を参照する０以上の分散収集リスト要素を有するよう構成される第１分散収集リストデータ構造と、転送対象となる前記データのソースまたは宛先である前記メインメモリの一部を参照する０以上の分散収集リスト要素を有するよう構成される第２分散収集リストデータ構造と、前記第１分散収集リストデータ構造または前記第２分散収集リストデータ構造の各分散収集リスト要素に対する方向表示とを有し、前記方向表示は、前記ディスク位置がソースであり、前記メインメモリの一部が宛先であるか表示するか、あるいは、前記ディスク位置が宛先であり、前記メインメモリの一部がソースであるか表示し、当該方法は、第１及び第２分散収集リストデータ構造を生成するステップを有することを特徴とする方法（及び対応する装置）により達成される。
【００１２】
このように、読み書き動作を処理するシンプルかつ効率的な方法が提供される。特にリアルタイムストレージシステムにおいてである。さらに、データ、すなわち、ペアの参照のみがＳＧＬ間においてコピーされるため、ＣＰＵ処理中には実データは移動されず、格納及び帯域幅要求を大きく低減することができる。
【００１３】
本発明による方法の効果的な実施例が、従属クレームにおいて規定される。
【００１４】
本発明はまた、本発明による方法に対応する装置に関する。
【００１５】
より詳細には、本発明は、ストレージシステムにおけるストレージ装置とメインメモリとの間のデータの転送を表す装置であって、前記ストレージシステムは、転送対象となる前記データのソースまたは宛先であるディスク位置を参照する０以上の分散収集リスト要素を有するよう構成される第１分散収集リストデータ構造と、転送対象となる前記データのソースまたは宛先である前記メインメモリの一部を参照する０以上の分散収集リスト要素を有するよう構成される第２分散収集リストデータ構造と、前記第１分散収集リストデータ構造または前記第２分散収集リストデータ構造の各分散収集リスト要素に対する方向表示とを有し、前記方向表示は、前記ディスク位置がソースであり、前記メインメモリの一部が宛先であるか表示するか、あるいは、前記ディスク位置が宛先であり、前記メインメモリの一部がソースであるか表示することを特徴とする装置に関する。
【００１６】
本発明による装置の効果的な実施例が、従属クレームにおいて規定される。
【００１７】
さらに、本発明はまた、本発明による方法を１以上の処理ユニットに実行させる命令を格納したコンピュータ可読媒体に関する。
【００１８】
以下において、第１分散収集リストデータ構造は、ディスク入力ＳＧＬ（２０１）／ＳＧＬ１と記され、第２分散収集リストデータ構造は、メモリ入力ＳＧＬ（２０２）／ＳＧＬ２と記され、第３分散収集リストデータ構造は、出力メモリＳＧＬ（２３０）／ＳＧＬ７と記され、第４分散収集リストデータ構造は、出力ディスクＳＧＬ（２３１）／ＳＧＬ８と記され、第５分散収集リストデータ構造は、ディスク入力ＳＧＬ（２０８）／ＳＧＬ５と記され、第６分散収集リストデータ構造は、メモリ入力ＳＧＬ（２０９）／ＳＧＬ６と記され、第７分散収集リストデータ構造は、ディスク出力ＳＧＬ（２３２）／ＳＧＬ４と記され、第８分散収集リストデータ構造は、メモリ出力ＳＧＬ（２３３）／ＳＧＬ３と記される。
【発明を実施するための最良の形態】
【００１９】
図１は、ＳＧＬ（Ｓｃａｔｔｅｒ−Ｇａｔｈｅｒ  Ｌｉｓｔ）を概略的に示す。ＳＧＬ（１０１）は、矢印（１０２）により示されるような論理データシーケンスを記述するのに利用される。当該データシーケンスは、メインメモリ（１０３）または本発明によるとストレージ装置（１０３）のディスク上に分散されているかもしれない。ＳＧＬ（１０１）により記述されるデータは、同一または異なるサイズのデータエリアに配置されてもよい。メモリ／ディスクアドレスの順序は、矢印（１０４）により示される。
【００２０】
この図のＳＧＬの具体例（１０１）は、「Ａ」、「Ｂ」、「Ｃ」、「Ｄ」及び「Ｅ」により示される一定数の分散収集ユニット（１０５、１０５’）を有し、メモリ／ディスク位置Ｍｅｍ３、Ｍｅｍ２、Ｍｅｍ４及びＭｅｍ１にこの順序で格納される論理データシーケンスを記述する。ＳＧＬの具体例（１０１）は、追加的な連続するデータが添付可能であるため、ＳＧユニット「Ｅ」（１０５’）において完全には充填されていない。論理データ（「Ａ」、「Ｂ」、「Ｃ」、「Ｄ」）の順序は、メモリ／ディスクアドレスの順序（１０４）と同一である必要はないということに留意されたい。さらに、図示されたユニット「Ａ」〜「Ｅ」はＳＧＬ（１０１）の内部にあるということに留意されたい。
【００２１】
本発明によると、ＳＧＬは、各ユニットが連続的なメモリ部分であり、メモリ／ディスク位置のスタートアドレス（ポインタ、アドレスオフセットなどを利用することにより）への参照を有し、通常はバイト単位で表されるメモリ／ディスク位置に格納されているデータのサイズまたは長さなどを指定するＳＧユニット（１０５、１０５’）を有するＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）キューとして実現される。ＳＧユニットは、シンプルなペア（ａ，ｌ）である。ここで、「ａ」はスタートアドレス、「ｌ」は長さを示す。ＳＧＬのアドレス及び／または長さにはアライメントの制約はない。
【００２２】
メモリ／ディスク位置の実データは、ＳＧＬには格納されないか、あるいはＳＧＬ間では転送されない。当該ペアのみが格納または転送されるため、格納及び帯域幅の要求を大きく低下させることができる。
【００２３】
すなわち、ＳＧＬは、データが分散／不連続であったとしても、メモリまたは本発明によるディスクに格納されるデータを参照する効率的な方法である。
【００２４】
以下において、小文字はメインメモリに関するペアに用いられ、大文字はディスク／ストレージメモリに関するペアに用いられる。すなわち、それぞれ（ａｉ，ｌｉ）及び（Ａｊ，Ｂｊ）のように用いられる。
【００２５】
本発明によると、ディスク位置がソースであり、メインメモリの当該部分が宛先であるか、あるいはその反対であるか示すのに用いられる方向表示（図示せず）が指定される必要がある。好ましくは、ディスクのＳＧＬの各ペアは、以下でより詳細に説明されるように、当該ペアにより記述される転送方向を指定する方向表示（図示せず）を有する。好ましくは、方向表示は、単一のビットにより実現される。好ましくは、６４ビットディスクアドレスの１つのビットが使用されるようにしてもよい。それらが使用されず、例えばＡＴＡ６では、ＬＢＡのサイズは４８ビットであり、１セクタは５１２バイトであるためである。これにより、６４−４８−９＝７ビットが残り、このうちの１ビットが与えられたディスクＳＧＬのペアに対する方向表示として使用されてもよい。あるいは、他の未使用ビットが、ＳＣＳＩなどの他のファイルコントローラなどのため利用されてもよい。他の例として、方向表示はまた独立したＳＧＬとしてなど他の方法によりメインメモリＳＧＬなどの各ペアに格納されてもよい。
【００２６】
図２は、本発明による転送の一部として用いられるＳＧＬを示す。メモリ入力ＳＧＬ（２０２）（図４のＳＧＬ２に対応する）とディスク入力ＳＧＬ（２０１）（図４のＳＧＬ１に対応する）が示されている。メモリ入力ＳＧＬ（２０２）は、ペア（ａ１，ｌ１）及び（ａ２，ｌ２）を含み、これにより、長さｌ１を有するアドレスａ１及び長さｌ２を有するアドレスａ２において、メインメモリ（２０４）にデータを格納するため（ディスクからの読み出しの場合）、あるいはメインメモリ（２０４）から読み出すため（ディスクへの書き込みの場合）、（分散された）データエリア（２０７）を参照する。
【００２７】
ディスク入力ＳＧＬ（２０１）は、ペア（Ａ１，Ｌ１）を有し、これにより、メモリ入力ＳＧＬ（２０２）により参照されるデータが格納され（ディスクへの書き込みの場合）、あるいはデータが配置され、参照されているメモリ入力ＳＧＬ（２０２）であるデータエリアに格納される（ディスクからの読み出しの場合）ストレージ装置（２０３）のデータエリア（２０６）を参照する。ディスク入力ＳＧＬ（２０１）のデータは、本例では連続しているが、本発明の一特徴によると分散されていてもよい。ディスク入力ＳＧＬ（２０１）はまた、ディスク入力ＳＧＬ（２０１）に格納されている各ペアに対し本発明による「方向表示」（２０５）、すなわち、本例では１を有する。好ましくは、この方向表示（２０５）は、ディスクＳＧＬの与えられたペアにより参照されるデータが、ストレージ装置（２０３）からメインメモリ（２０４）に転送、あるいはその反対にメインメモリ（２０４）からストレージ装置（２０３）に転送されるべきか指示する。このようにして、以下に説明されるように、各ペアに対する既存の剰余ビットのみを使用し、効率的なセクタアライメントを可能にすることにより、転送方向のシンプルかつコンパクトな表示が取得される。
【００２８】
また、セクタ境界（Ｓ．Ｂ．）の表示が、ストレージ装置（２０３）に関して示される。このシンプルな例では、（方向表示（２０５）により与えられるような）読み書きに用いられるストレージ装置（２０３）のデータエリア（２０６）は、セクタ境界において開始及び終了し、すなわち、部分的なブロックの読み書きは必要とされない。
【００２９】
処理中、読出し、書き込み及び変更（読み書きを合成したものである）コマンドは、ペアをディスク入力ＳＧＬ（２０１）及びメモリ入力ＳＧＬ（２０２）にキュー処理し、メインメモリ及びディスクのソース及び宛先を指定するため、ディスク入力ＳＧＬ（２０１）の各ペアに対し方向表示（２０５）を設定することにより単に処理される。
【００３０】
メモリ及びディスクＳＧＬにおいて「十分」となった後、実際の転送、すなわち、物理的なデータ転送がＩＤＥ、ＡＴＡなどのインタフェース及び／またはストレージ制御レイヤの制御の下で非同期的に行うことが可能である。ＳＧＬ（２０１、２０２）のペアは、標準的なＡＴＡ／ＩＤＥコマンドに変換する必要がある。「十分」とは、例えば、最後の実際の転送以降の経過した与えられた期間及び／またはＳＧＬなどにより表されるトータルのデータ量の与えられたサイズなどの少なくとも１つの所定の基準に好ましくは従属する。本発明によるＳＧＬの使用は、メインメモリとストレージ装置との間の「仮想的」な転送のタイプを記述し、「十分」なデータが存在するとき、実際の物理的転送が行われる。
【００３１】
このシンプルな例では、メインメモリのデータエリアのコンテンツ（ａ１，ｌ１及びａ２，ｌ２により与えられる）を指定されたストレージ装置のデータエリア（２０６）（Ａ１から始まり、Ｌ１の長さを有する）に転送する転送コマンド、すなわち、従来の意味での書き込みコマンドは、ディスク入力ＳＧＬのペア（Ａ１，Ｌ１）の方向表示が、上述のように単にビットを設定することにより（あるいはクリアすることにより）、当該方向がメインメモリからストレージ装置に向いていることを指定するよう設定される一方、２つのペア（ａ１，ｌ１）と（ａ２，ｌ２）をメモリ入力ＳＧＬに配置し、ペア（Ａ１，Ｌ１）をディスク入力ＳＧＬに配置する。本例では、Ｌ１はｌ１＋ｌ２に等しい。
【００３２】
実際の転送が行われるとき、例えば、他の書き込み、読出し及び／または変更コマンドがさらなるペアをＳＧＬに追加させた後など、メインメモリのデータエリア（２０７）の具体的コンテンツが、ストレージ装置のデータエリア（２０６）に格納される。本発明によるＳＧＬの特有のＦＩＦＯ構造は、各種コマンドが正確な順序で処理されることを保証する。
【００３３】
その反対の各コンテンツをストレージ装置からメインメモリに転送することを指示する転送コマンドでは（従来の意味での読出しコマンド）、ペア（Ａ１，Ｌ１）の方向指示（２０５）の値のみが変更される。同一のペアがＳＧＬに配置されるべきである。
【００３４】
すなわち、ストレージ装置のデータエリア（２０６）を指定し（好ましくは、ディスク入力ＳＧＬの１以上のペアを利用し）、メインメモリのデータエリア（２０７）及びディスク入力ＳＧＬの各ペアに好ましくは格納されている方向表示の値を指定することにより（メモリ入力ＳＧＬの１以上のペアを利用し）、読出しまたは書き込みプロセスが処理される。ここで、方向表示の具体的値は、それがディスク入力ＳＧＬ（２０１）の１以上のペア及びメモリ入力ＳＧＬ（２０２）の１以上の対応するペアに対する読出しプロセス（すなわち、ストレージ装置からメインメモリへの転送）か、あるいは書き込みプロセス（すなわち、メインメモリからストレージ装置への転送）を指定する。
【００３５】
このように、ストレージシステムにおいて、大変シンプルかつ効率的な方法により読出し／書き込み処理を可能にすることができる。図３ａ及び３ｂに関して説明されるように、これらの処理が部分的なブロック／セクタに基づくものであっても可能である。
【００３６】
図３ａ及び３ｂは、部分的ブロックの読み書きに関する本発明による転送の一部として用いられるＳＧＬを示す。
【００３７】
図３ａは、本発明によるセクタアライメント実行前のＳＧＬを示す。他の一例となる状況を除き、メモリ入力ＳＧＬ（２０１）（図２のメモリ入力ＳＧＬに対応する）と、ディスク入力ＳＧＬ（２０１）（図２のディスク入力ＳＧＬに対応する）が示されている。この一例となる状況は、部分的ブロック読み書き処理を示す。この具体例では、方向表示（２０５）により示されるような転送方向は、メインメモリ（２０４）からディスク／ストレージ装置（２０３）へと向いており、すなわち書き込み処理となっている。この書き込みは、他の部分的ブロック（２１３）が後続する２つのフルブロックが後続する部分的ブロック（２１０）に関するものであり、これらのブロック（２１０−２１３）のすべては、ストレージ装置上で連続し、アドレスＡから始まり、ディスク入力ＳＧＬ（２０１）のペア（Ａ１，Ｌ１）により与えられるようなトータルでＬ１の長さを有する。ソースメインメモリの位置は分散し、メモリ入力ＳＧＬ（２０２）のペア（ａ１，ｌ１）、（ａ２，ｌ２）及び（ａ３，ｌ３）により与えられるような３つのユニット（２１４、２１５、２１６）から構成される。このため、破線エリアは入力ＳＧＬ（２０１、２０２）により記述され、セクタ境界のアライメントはない。この場合、ソースと宛先の長さはストレージ装置にアクセスするため同一でなければならないため、Ｌ１はｌ１、ｌ２及びｌ３の和に等しい。入力ＳＧＬ（２０１、２０２）は上述のように、さらなるデータを有するかもしれないが、例を簡単化するため、そのようなデータは図示または説明されない。
【００３８】
上述のように、ＳＧＬは基本的にはそのようなペアのキューとして実現され、追加的処理及び最適化を提供する。
【００３９】
Ａ１は、２つのセクタ境界間のセクタの何処かを指し示し、当該セクタの第１部分はタッチされず、第２部分が破線エリアにより示されるように変更される。上述のように、ディスクからの読出し（及び書き込み）は、いくつかのセクタ全体でのみ実行可能である。アドレスａ１、ａ２及びａ３は、メインメモリが転送を行うハードウェア及び／またはソフトウェアにアクセス可能である場合、メインメモリの何れかを指し示すことができる。
【００４０】
セクタアライメントの処理が、図３ｂに関してさらに説明される。
【００４１】
図３ｂは、本発明によるセクタアライメント実行後のＳＧＬを示す。セクタアライメントの実行後のメモリ入力ＳＧＬ（２０９）（図４のＳＧＬ６に対応する）、ディスク入力ＳＧＬ（２０８）（図４のＳＧＬ５に対応する）及びそれぞれに関連するメモリ（２０３、２０４）が示され、ディスクメモリ（２０３）はもはや部分的ブロックのアクセスを含まない。この図において、ディスク入力ＳＧＬ（２０８）とメモリ入力ＳＧＬ（２０９）は、ディスク入力ＳＧＬ（図３ａでは２０１）及びメモリ入力ＳＧＬ（図３ａでは２０２）に基づき、本発明によるセクタアライメントレイヤ／アプリケーションにより生成される。図３ａに関して示されるように、本例ではメインメモリのデータコンテンツは、ディスクに転送される。読み出された部分的ブロックは、処理がはるかに容易であり、以降において説明される。
【００４２】
また、メインメモリの一部であり、セクタアライメントプロセスにおいて用いられる一時的なメモリブロック（２１７、２１８）が示される。一時的なメモリブロック（２１７、２１８）は、ストレージ装置のブロック／セクタと少なくとも同じサイズを有し、以下で説明されるように部分的ブロックの「ヘッド」と「テール」に用いられる。
【００４３】
セクタアライメントは、転送の始めと終わりに追加されたセクタ部分（２１９、２２０）を生じさせ、これにより、完全なブロック／セクタを与える。
【００４４】
ディスク入力ＳＧＬ（２０８）とメモリ入力ＳＧＬ（２０９）は、セクタアライメントを実行するため、以下に従って図３ａのディスク入力ＳＧＬ（図３ａの２０１）及びメモリ入力ＳＧＬ（図３ａの２０２）に基づき生成される。
【００４５】
まず、ディスクの先頭セクタが、書き込み／変更ステップによりタッチされないデータ（２１９）を含むため（転送対象のデータがセクタ境界において始まらない場合）、書き込み実行前にプリフェッチ／読み出しされる。これは、メモリ入力ＳＧＬ（２０９）のペア（ａ１’，ｌ１’）をキューに入力し、ディスク入力ＳＧＬ（２０８）にペア（Ａ２，Ｌ２）をキューに入力し、読み出す（Ａ２，Ｌ２）を方向表示に示すことにより行われる（すなわち、ディスクがソースであり、メインメモリは（Ａ２，Ｌ２）／（ａ１’，ｌ１’）により参照されるデータの宛先である）。当該ペア（ａ１’，ｌ１’）は、一時的メモリブロック（２１７）のデータを参照する。
【００４６】
その後、本実施例では、ディスクのテールセクタがタッチされないデータ（２２０）を有するとき、書き込みの実行前にプリフェッチ／読み出しされる（転送対象のデータがセクタ境界で終わらない場合）。
【００４７】
これは、メモリ入力ＳＧＬ（２０９）のペア（ａ２’，ｌ２’）をキューに入力し、ディスク入力ＳＧＬ（２０８）のペア（Ａ３，Ｌ３）をキューに入力し、方向表示に読出す（Ａ３，Ｌ３）を指定することにより行われる（すなわち、ディスクがソースであり、メインメモリは（Ａ３，Ｌ３）／（ａ２’，ｌ２’）により参照されるデータの宛先である）。当該ペア（ａ２’，ｌ２’）は、一時的なメモリブロック（２１７）のデータを参照する。
【００４８】
一般に、テールセクタの読み出しは、テールセクタへのデータの書き込み前に実行される必要がある。ペア（ａ２’，ｌ２’）及び（Ａ３，Ｌ３）は、テールセクタへの書き込みを規定するペアはキューに入力される前にキューに入力されている限り、ペア（ａ１’，ｌ１’）及び（Ａ２，Ｌ２）の前後でキューに入力されているかどうかは問題ではなく、これにより、ヘッドのデータ（２１９）とタッチされていないテールのデータ（２２０）は、書き込み後もその状態を維持することが保証される。
【００４９】
この後、ヘッドセクタのヘッド（２１９）、すなわち、アラインされていない書き込みによってはタッチされないヘッドセクタの一部が書き込まれる。
【００５０】
これは、メモリ入力ＳＧＬ（２０９）のペア（ａ３’，ｌ３’）をキューに入力することにより行われる。ここで、ａ３’はａ１’に等しく、ｌ３’＜ｌ１’である。より詳細には、ｌ３’は、セクタ長から書き込み対象となるヘッダセクタのデータ長を引いたものに等しい。あるいは、ｌ３’はＡ１（図３ａのディスク入力ＳＧＬから）からＡ２を引いたものとして決定されてもよい。
【００５１】
この後、新しい／変更されたデータ（２１４、２１５、２１６）が書き込みされる。
【００５２】
これは、図３ａのメモリ入力ＳＧＬ（２０２）からメモリ入力ＳＧＬ（２０９）のペア（ａ１，ｌ１）、（ａ２，ｌ２）及び（ａ３，ｌ３）をキューに入力することにより行われる。
【００５３】
最終的には、テールセクタ（２２０）のテール、すなわち、アラインされない書き込みによりタッチされないテールセクタの一部が書き込まれる。
【００５４】
これは、ｌ４’がセクタ長から書き込みされるテールセクタのデータ長を引いたものに等しいメモリ入力ＳＧＬ（２０９）の（ａ４’，ｌ４’）をキューに入力することにより行われる。ａ４’は、ａ２’に書き込みされるテールセクタのデータの長さを加えたものに等しい。ここで、ａ２’＋ｌ２’は、ａ４’＋ｌ４’に等しく、それらは共にテールセクタの終わりで終了することに留意されたい。
【００５５】
ペア（ａ３’，ｌ３’）、（ａ１，ｌ１）、（ａ２，ｌ２）、（ａ３，ｌ３）及び（ａ４’，ｌ４’）は、ペア（Ａ４，Ｌ４）をキューに入力することによりディスク入力ＳＧＬ（図３ａの２０１）のペア（Ａ１，Ｌ１）を変更することによりディスクと関連付けされる。ここえｄ、Ａ４はＡ２に等しく、Ｌ４はｌ３’＋ｌ１＋ｌ２＋ｌ３＋ｌ４’、すなわち、書き込み／変更対象のデータ（２１４、２１５、２１６）、タッチされないヘッドの部分（２１９）及びタッチされないテールの部分（２２０）の長さの和に等しい。（Ａ４，Ｌ４）の方向表示は、書き込みを指示するよう設定される。
【００５６】
この後、ディスクに関するペアは、ブロック／セクタストレージ装置への転送準備がされたセクタアラインデータエリアを参照／規定する。その後、ＳＧＬ（２０８、２０９）は、適切な変換機構に対する入力として、各自のコンテンツをＩＤＥインタフェースなどのストレージ装置インタフェースに対するコマンドに変換するのに用いられてもよい。
【００５７】
部分的ブロックの読み出しのため、追加された部分的セクタ（２１９、２２０）は、それらがフェッチされると単に破棄される。読み出された部分的ブロック（同一のデータエリアを使用して）に対し、ＳＧＬのヘッドは、（Ａ４，Ｌ４）と（ａ３’，ｌ３’）、（ａ１，ｌ１）、（ａ２，ｌ２）、（ａ３，ｌ３）及び（ａ４’，ｌ４’）になるであろう。しかしながらこれに対し、ヘッド及びテールのプリフェッチ／読み出しは、必要とされない。読み出された後、ヘッドセクタ（２１９）のヘッドのデータとテールセクタ（２２０）のテールのデータは単に破棄される。言い換えると、ストレージ装置（５０６）からすべてのセクタ（２１９＋２１０、２１１、２１２、２１３＋２２０）を（任意の適切な順序により）読出し、転送対象のデータがセクタ境界（Ｓ．Ｂ．）において開始されない場合に転送対象のデータの何れも有しないテールセクタ（２１３＋２２０）の一部を破棄し、転送対象のデータがセクタ境界（Ｓ．Ｂ．）において終了しない場合に転送対象のデータの何れも有しないテールセクタ（２１３＋２２０）の一部（２２０）を破棄する。読み出しは、ディスク入力ＳＧＬ（２０８）とメモリ入力ＳＧＬ（２０９）の分散収集リスト要素により表される。
【００５８】
転送対象のデータがセクタ境界において始まる場合、（Ａ２；Ｌ２）、（ａ１’，ｌ１’）及び（ａ３’，ｌ３’）は省略されるか、あるいは生成されず、Ａ４＝Ａ１となる。
【００５９】
転送対象のデータがセクタ境界において終わる場合、（Ａ３；Ｌ３）、（ａ２’，ｌ２’）及び（ａ４’，ｌ４’）は省略されるか、あるいは生成されず、Ａ４＋Ｌ４＝Ａ１＋Ｌ１となり、それらは同じ位置で終わる。
【００６０】
説明されたセクタアライメントプロセスは、上述の従来技術による処理の場合と同様にＣＰＵをブロックしない。なぜなら、ＣＰＵのタスクは従来技術による３つのステップと反対に、ディスクＩ／Ｏが各ステップの後に必要とされる場合、相対的に低速なディスクＩ／Ｏから切断されるためである。
【００６１】
さらに、データ、すなわちペアへの参照のみが格納及び帯域幅要求を大きく減少させるＳＧＬ間において複製されるため、実データはコピーされない。
【００６２】
本発明によるセクタアライメントでは、メインメモリは書き込みコマンドだけでなく、読出しコマンドの一部であるため、「変更」部が「自動的に」起動する。唯一の制限は、読み出しが要求されたメモリ位置に要求されたデータを生じさせた後にのみ、書き込み可能となるということである。このような制限は、既に知られているように、ストレージ装置の上のディスクスケジューラにより容易に処理される。当該スケジューラは、ストレージ装置のスループットを容易に最適化することができる。
【００６３】
ディスク入力ＳＧＬ（図３ａの２０１）のペアにより参照されるデータエリア全体が単一のセクタの範囲内にある状況では、当該セクタはヘッドとテール両方であるため、上述のように二度でなく一度のみプリフェッチを行いさえすればよい。この状況では、プリフェッチは書き込み前に実行される必要がある。このとき、セクタアライメントプロセスは、ストレージ装置から単一のセクタを読出し、それを一時的セクタ（２１７；２１８）に格納するようにしてもよく、当該セクタの読出し後、転送対象のデータがセクタ境界（Ｓ．Ｂ．）において始まらない場合には当該セクタのヘッドを書き込み、転送対象のデータを書き込み、転送対象のデータがセクタ境界（Ｓ．Ｂ．）において終わらない場合には単一のセクタのテールを書き込む。
【００６４】
各種ペアの機能が以下のテーブルにまとめられている。
【００６５】
【表１】
2007501473.tif 000003
図４は、本発明の一実施例によるインタフェースのレイヤを概略的に示す。ストレージスステムのレイヤ／ファイル管理レイヤ、セクタアライメントレイヤ、ディスクインタフェース／ＩＤＥレイヤ、ＤＭＡエンジンなどが示される。さらに、図２及び３ａのものに対応するディスク入力ＳＧＬ／ＳＧＬ１（２０１）、図２及び３ａに示されるものに対応するメモリ入力ＳＧＬ／ＳＧＬ２（２０２）、図３ｂに示されるものに対応する他のディスク入力ＳＧＬ（２０８）／ＳＧＬ５、及び図３ｂに示されるものに対応する他のメモリ入力ＳＧＬ（２０９）／ＳＧＬ６が示される。
【００６６】
好適な実施例では、既に実際の転送の一部となった、すなわち、必要に応じてセクタアライメントの後にメインメモリを記述するのに用いられる追加的な出力メモリＳＧＬ（２３０）が利用される。各転送は、入力メモリＳＧＬ（２０９）から出力メモリＳＧＬ／ＳＧＬ７（２３０）にメモリを「移動」する。データ自体は移動されず、その記述のみ、すなわち、関連するペアのみが移動される。さらに、同様にすでに実際の転送の一部となったディスク位置を記述するのに、追加的な出力ディスクＳＧＬ／ＳＧＬ８（図４の２３１）が利用される。
【００６７】
言い換えると、転送の一部が実行された後、当該部分は入力ＳＧＬ（２０８、２０９）から対応する出力ＳＧＬ（２３１、２３０）、すなわち、図４に示されるようにＳＧＬ５からＳＧＬ８へ、またはＳＧＬ６からＳＧＬ７へ移動される。これにより、実行された転送プロセスの容易かつシンプルなモニタリングが可能となり、各種アプリケーション、他のプロセスなどに有用であるかもしれない。
【００６８】
さらなる実施例では、セクタアライメントレイヤはまた、一時的ヘッド及びテールセクタ（図３ｂの２１７及び２１８）の一時的メモリをリサイクルし、それの出力ＳＧＬ３（２３３）及びＳＧＬ４（２３２）をもとの入力ＳＧＬ２（２０２）及びＳＧＬ１（２０１）と整合させるため、出力ＳＧＬ７（２３０）及びＳＧＬ８（２３１）上で実行される反対の処理を有する。これにより、極めてシンプルな方法により使用されているメモリの再利用を容易にする。
【００６９】
ＡＴＡ６では、ＬＢＡのサイズは４８ビットであり、１セクタは５１２バイトであるため、６４ビットディスクアドレスの一部のビットは利用されていない。これにより、６４−４８−９＝７ビットが放置され、前述のように当該ビットの１つは方向表示として使用されてもよい。アラインされていない書き込みアクセスは、図３ａ及び３ｂに関して説明されたように、アラインされた書き込みアクセスに先行する（アラインされた）読出しアクセス（ヘッド及びテールセクタ）に変換される。それをシンプルなものに保つため、このような変換の結果は再び単一のＳＧＬであるが、一実施例では、読出しリクエストは使用されていないビットセット（クリアされたビットは書き込みを示す）。あるいは、クリアされたビットは、読出しリクエストを表すかもしれない。ＩＤＥ／ディスクレイヤは、読出しリクエストがちょうど読み出されたデータをディスクに書き込む前に終了したことを確実にする。ＳＧＬ５（２０８）及び／またはＳＧＬ６（２０９）の方向表示が変更するときは常に、それらが同じメモリ位置にアクセスしているときは常に書き込み前に読み出しが終了していることが確実にされるべきである。これは、特にネットワーク対応のストレージ装置に対して重要であるかもしれない。
【００７０】
ハードウェア要求により存在するハーフワード（ｈａｌｆ−ｗｏｒｄ）アライメント要求は、通常通り処理される。
【００７１】
図５は、本発明の一実施例による装置の一例を概略的に示す。本発明の一実施例により示される装置は、内部のデータ／アドレスバス（５０４）などを介しメインメモリ（５０２）及び少なくとも１つのストレージ装置（５０６）に接続される１以上のマイクロプロセッサ（５０１）を有する。さらに、当該装置（５００）はまた、ネットワークを介し１以上のリモートシステムと通信するための通信手段（５０１）及び／またはディスプレイ（５０７）に接続されるか、あるいは有するようにしてもよい。メモリ（５０２）及び／またはストレージ装置（５０６）が、本発明による機能を提供するための実行可能なコンピュータコードと共に、関連するデータを格納及び抽出するのに利用される。マイクロプロセッサ（５０１）は、本発明によるＳＧＬの生成、処理などのためのものである。
【００７２】
ストレージ装置（５０６）は、ＤＶＤ、ＣＤ、光ディスク、ＰＶＲ、プレーヤー／レコーダ、ハードディスク（ＩＤＥ、ＡＴＡなど）、フロッピー（登録商標）ディスク、スマートカード、ＰＣＭＣＩＡカードなど、データブロックの読出し及びおそらく書き込みが可能な１以上の記憶装置からなる。当該ストレージ装置は、ネットワーク対応のディスクであってもよい。
【００７３】
請求項において、かっこ内の任意の参照記号は、請求項を限定するものと解釈されるべきではない。「有する」という用語は、請求項に列挙された以外の要素またはステップの存在を排除するものではない。要素に前置される「ある」という用語は、当該要素が複数存在することを排除するものではない。
【００７４】
本発明は、複数の相異なる要素を有するハードウェア、及び適切にプログラムされたコンピュータにより実現することが可能である。複数の手段を列挙した装置クレームでは、これらの手段のいくつかが同一のハードウェアアイテムにより実現可能である。ある手段が相互に異なる従属クレームに記載されているという事実は、これらの手段の組み合わせが効果的に利用可能でないということを示すものではない。
【図面の簡単な説明】
【００７５】
【図１】図１は、ＳＧＬ（Ｓｃａｔｔｅｒ−Ｇａｔｈｅｒ  Ｌｉｓｔ）を概略的に示す。
【図２】図２は、本発明による転送の一部として用いられるＳＧＬを示す。
【図３ａ】図３ａは、本発明の一実施例によるセクタアライメント前のＳＧＬを示す。
【図３ｂ】図３ｂは、本発明の一実施例によるセクタアライメント後のＳＧＬを示す。
【図４】図４は、本発明の一実施例によるインタフェースのレイヤを概略的に示す。
【図５】図５は、本発明の一実施例による装置の一例を概略的に示す。
【図１】
2007501473.tif 000004
【図２】
2007501473.tif 000005
【図３ａ】
2007501473.tif 000006
【図３ｂ】
2007501473.tif 000007
【図４】
2007501473.tif 000008
【図５】
2007501473.tif 000009
【国際調査報告】
2007501473.tif 000010
2007501473.tif 000011
2007501473.tif 000012