(57)【要約】【課題】ダイレクト・メモリ・アクセスを使用する装置によるアクセスを受け得るデータを移動させるコンピュータ実行される方法、データ処理システム、およびコンピュータ使用可能なプログラム・コードを提供する。【解決手段】データを移動させるリクエストが受け取られる。そのデータを移動させるリクエストに応答して、そのデータはソース・ページから宛先ページに移動される。ダイレクト・メモリ・アクセスのための読み出しデータがソース・ページからフェッチされる。ダイレクト・メモリ・アクセスのための書き込みデータはソース・ページおよび宛先ページの両方に格納される【選択図】図６
2009534767.tif 000002
【特許請求の範囲】
【請求項１】
ダイレクト・メモリ・アクセスを用いる装置によりアクセス可能なデータを移動させるためのコンピュータにより実行される方法であって、このコンピュータにより実行される方法は、
ソース・ページ中のデータを移動させるリクエストに応答して前記データを前記ソース・ページから宛先ページに移動させるステップと、
前記ソース・ページから前記宛先ページへの前記データの移動中に、任意のダイレクト・メモリ・アクセスのための読み出しデータを前記ソース・ページからフェッチするステップと、
前記ソース・ページから前記宛先ページへの前記データの移動中に、任意のダイレクト・メモリ・アクセスのための書き込みデータを前記ソース・ページと前記宛先ページとの両方に格納するステップと、
を含む、コンピュータにより実行される方法。
【請求項２】
前記データを移動させる前記リクエストを受け取ったことに応答して、移動ディスクリプタを移動ブロックにセットするステップと、
前記移動ブロックを指すようにエントリをセットするステップと、
前記宛先ページを指すように前記エントリを向けるステップと、
をさらに含む、請求項１に記載のコンピュータにより実行される方法。
【請求項３】
前記データを前記ソース・ページから前記宛先ページに移動させる前記ステップは、
前記ソース・ページ・データをロードするステップと、
前記ソース・ページ・データを前記宛先ページに格納するステップと、
再ロードされたソース・ページ・データを形成するために前記ソース・ページ・データを再ロードするステップと、
前記再ロードされたソース・ページ・データを前記格納された宛先ページ・データに対して確認するステップと、
前記確認が一致することに応答して、前記データ移動を終了するステップと、
をさらに含む、請求項１に記載のコンピュータにより実行される方法。
【請求項４】
前記確認が失敗したことに応答して、前記再ロードされたソース・ページ・データを前記宛先ページに格納するステップと、
新しい再ロードされたソース・ページ・データを形成するために前記ソース・ページ・データを再ロードするステップと、
前記新しい再ロードされたソース・ページ・データを前記格納された宛先ページ・データに対して確認するステップと、
前記確認が一致することに応答して、前記データ移動を終了するステップと、
をさらに含む、請求項３に記載のコンピュータにより実行される方法。
【請求項５】
前記ダイレクト・メモリ・アクセスのための書き込みデータが前記ソース・ページと前記宛先ページとの両方に格納されることを保証するステップは、
エントリにおいて移動モード・ビットをセットするステップと、
前記エントリをフェッチするステップと、
前記移動モード・ビットを検出するステップと、
ダイレクト・メモリ・アクセス書込み操作を受けるステップと、
移動ディスクリプタをフェッチするステップと、
前記ソース・ページと前記宛先ページとにデータをコヒーレントに書き込むステップと、
をさらに含む、請求項１に記載のコンピュータにより実行される方法。
【請求項６】
前記移動モード・ビットは１レベルのインダイレクションをフェッチ・プロセスに挿入する、請求項５に記載のコンピュータにより実行される方法。
【請求項７】
前記ダイレクト・メモリ・アクセスのための読み出しデータが前記ソース・ページからフェッチされることを保証するステップは、
エントリにおいて移動モード・ビットをセットするステップと、
前記エントリをフェッチするステップと、
前記移動モード・ビットを検出するステップと、
ダイレクト・メモリ・アクセス読み出し操作を受けるステップと、
移動ディスクリプタの一部分をフェッチするステップと、
前記ソース・ページからデータをコヒーレントに読み出すステップと、
をさらに含む、請求項１に記載のコンピュータにより実行される方法。
【請求項８】
前記移動モード・ビットは１レベルのインダイレクションをフェッチ・プロセスに挿入する、請求項７に記載のコンピュータにより実行される方法。
【請求項９】
前記移動ディスクリプタは前記ソース・ページの実アドレスと前記宛先ページの実アドレスとを提供する、請求項２に記載のコンピュータにより実行される方法。
【請求項１０】
エントリはトランスレーション・コントロール・エントリである、請求項１に記載のコンピュータにより実行される方法。
【請求項１１】
バス・システムと、
前記バス・システムに接続された通信システムと、
命令のセットを包含し、前記バス・システムに接続されたメモリと、
前記バス・システムに接続された処理装置とを含むデータ処理システムであって、前記処理装置は、ソース・ページ中のデータを移動させるリクエストに応答して前記データを前記ソース・ページから宛先ページに移動させ、前記ソース・ページから前記宛先ページへの前記データの移動中に任意のダイレクト・メモリ・アクセスのための読み出しデータを前記ソース・ページからフェッチし、前記ソース・ページから前記宛先ページへの前記データの移動中に任意のダイレクト・メモリ・アクセスのための書き込みデータを前記ソース・ページおよび前記宛先ページの両方に格納するために前記命令のセットを実行する、データ処理システム。
【請求項１２】
前記処理装置は、前記データを移動させる前記リクエストを受け取ったことに応答して移動ディスクリプタを移動ブロックにおいてセットし、前記移動ブロックを指すようにエントリをセットし、前記宛先ページを指すように前記エントリを向けるために前記命令のセットを実行する、請求項１１に記載のデータ処理システム。
【請求項１３】
前記ソース・ページから前記宛先ページに前記データを移動させるために前記処理装置が前記命令のセットを実行することは、前記ソース・ページ・データをロードし、前記ソース・ページ・データを前記宛先ページに格納し、再ロードされたソース・ページ・データを形成するために前記ソース・ページ・データを再ロードし、前記再ロードされたソース・ページ・データを前記格納された宛先ページ・データに対して確認し、前記確認が一致することに応答して前記データ移動を終了するために前記処理装置が前記命令のセットを実行することを含む、請求項１１に記載のデータ処理システム。
【請求項１４】
前記処理装置は、前記確認が失敗したことに応答して前記再ロードされたソース・ページ・データを前記宛先ページに格納し、新しい再ロードされたソース・ページ・データを形成するために前記ソース・ページ・データを再ロードし、前記新しい再ロードされたソース・ページ・データを前記格納された宛先ページ・データに対して確認し、前記確認が一致したことに応答して前記移動を終了するために、前記命令のセットを実行する、請求項１３に記載のデータ処理システム。
【請求項１５】
前記移動ディスクリプタは前記ソース・ページの実アドレスと前記宛先ページの実アドレスとを提供する、請求項１２に記載のデータ処理システム。
【請求項１６】
ダイレクト・メモリ・アクセスを用いる装置によりアクセス可能なデータを移動させるためのコンピュータ実行可能なプログラム・コードを含むコンピュータ読み取り可能な記録媒体を含むコンピュータ・プログラムであって、前記コンピュータ・プログラムは、
ソース・ページ中のデータを移動させるリクエストに応答して前記データを前記ソース・ページから宛先ページに移動させるためのコンピュータ実行可能なプログラム・コードと、
前記ソース・ページから前記宛先ページへの前記データの移動中に、任意のダイレクト・メモリ・アクセスのための読み出しデータを前記ソース・ページからフェッチするためのコンピュータ実行可能なプログラム・コードと、
前記ソース・ページから前記宛先ページへの前記データの移動中に、任意のダイレクト・メモリ・アクセスのための書き込みデータを前記ソース・ページと前記宛先ページとの両方に格納するためのコンピュータ実行可能なプログラム・コードと、
を含む、コンピュータ・プログラム。
【請求項１７】
前記データを移動させる前記リクエストを受け取ったことに応答して、移動ディスクリプタを移動ブロックにセットするためのコンピュータ実行可能なプログラム・コードと、
前記移動ブロックを指すようにエントリをセットするためのコンピュータ実行可能なプログラム・コードと、
前記宛先ページを指すように前記エントリを向けるためのコンピュータ実行可能なプログラム・コードと、
をさらに含む、請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
前記データを前記ソース・ページから前記宛先ページに移動させるための前記コンピュータ実行可能なプログラム・コードは、
前記ソース・ページ・データをロードするためのコンピュータ実行可能なプログラム・コードと、
前記ソース・ページ・データを前記宛先ページに格納するためのコンピュータ実行可能なプログラム・コードと、
再ロードされたソース・ページ・データを形成するために前記ソース・ページ・データを再ロードするためのコンピュータ実行可能なプログラム・コードと、
前記再ロードされたソース・ページ・データを前記格納された宛先ページ・データに対して確認するためのコンピュータ実行可能なプログラム・コードと、
前記確認が一致することに応答して、前記データ移動を終了するためのコンピュータ実行可能なプログラム・コードと
をさらに含む、請求項１６に記載のコンピュータ・プログラム。
【請求項１９】
前記確認が失敗したことに応答して、前記再ロードされたソース・ページ・データを前記宛先ページに格納するためのコンピュータ実行可能なプログラム・コードと、
新しい再ロードされたソース・ページ・データを形成するために前記ソース・ページ・データを再ロードするためのコンピュータ実行可能なプログラム・コードと、
前記新しい再ロードされたソース・ページ・データを前記格納された宛先ページ・データに対して確認するためのコンピュータ実行可能なプログラム・コードと、
前記確認が一致することに応答して、前記データ移動を終了するためのコンピュータ実行可能なプログラム・コードと、
をさらに含む、請求項１８に記載のコンピュータ・プログラム。
【請求項２０】
前記移動ディスクリプタは前記ソース・ページの１実アドレスと前記宛先ページの１実アドレスとを提供する、請求項１７に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は一般的にデータ処理分野に関する。特に、本出願は入出力装置によるアクセスを受けるデータを移動させることに関する。
【背景技術】
【０００２】
コンピュータ・システムの再コンフィギュレーションは、コンピュータ・システムが動作している間に実行され得る。しかし、そうするためには、データ処理操作を中断することがしばしば必要とされる。例えば、１つのコンピュータ上で複数のオペレーティング・システムが動作している場合、第１のオペレーティング・システムにより使用されているメモリの１つのブロックを、それが第２のオペレーティング・システムにより使用され得るように、再割り当てする必要があり得る。従来、この事態は、第１オペレーティング・システムが物理的メモリのそのブロックの使用を、それが再割り当てされる前に終了することを必要とする。他の１つの例として、物理的メモリの１つのブロックで問題が発見されたときには、そのメモリを交換できるように、そのメモリをオペレーションから取り除くことが望ましいかもしれない。この場合にも、メモリのそのブロックを使用していたオペレーティング・システムは、交換処理中、その使用をやめなければならない。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
コンピュータ・システムは、しばしば、現在のオペレーティング・システムで利用し得る仮想記憶管理メカニズムを用いることにより、データ処理操作を中断せずに再コンフィギュレーションされ得る。しかし、これらのメカニズムは、移されるべきメモリのブロックが一般にダイレクト・メモリ・アクセス（ＤＭＡ）と称される入出力（Ｉ／Ｏ）装置によるアクセスを受けるとき、満足できるものではない。特に、Ｉ／Ｏ装置によるアクセスを受けるメモリのブロックは従来は“ピン止め”されている、すなわち、移動を免除されている。なぜならば、それらへのアクセスは、オペレーティング・システムが動作している限りは動作する本質的にエンドレスのＩ／Ｏプログラムにより維持され、その様なＩ／Ｏプログラムを止めることはシステムに混乱を生じさせるからである。
【０００４】
移動されるべきメモリのブロック（“ページ”とも称される）のためのＩ／Ｏアドレス変換エントリを無効にすることが可能である。その後、もしＩ／Ｏ装置がそのページにアクセスしようとしたならば、無効な変換エントリはＩ／Ｏページ・フォールトを報告させ、Ｉ／Ｏ装置ドライバは応答しなければならない。すなわち、ドライバは、そのページが再び利用可能になった後にＩ／Ｏ操作を再開する。しかし、この手続きがうまくいくためには、該ページへのアクセスを持つ可能性のある全てのＩ／Ｏ装置の装置ドライバはＩ／Ｏページ・フォールト回復コードを実行しなければならず、それは実際的な解決策ではない。
【０００５】
Ｉ／Ｏ装置によるアクセスを受けるデータを移動させるための従来のメカニズムの不十分な点を認識して、１つの解決策はデータを移動させるためのメカニズムを含み、そのメカニズムでは移動されるデータにアクセスするＩ／ＯアダプタのためのＤＭＡ操作が短時間にわたってディスエーブルされる。このメカニズムは多くのアプリケーションで有効であるが、業界標準ＰＣＩ−Ｅバスは、Ｉ／Ｏアダプタへの／からの他の転送に悪影響を及ぼさずにＤＭＡ操作を一時的にディスエーブルするためのメカニズムを含んでいない。
【課題を解決するための手段】
【０００６】
種々の実施例は、ダイレクト・メモリ・アクセスを使用する装置によるアクセスを受け得るデータを移動させるコンピュータにより実行される方法、データ処理システム、およびコンピュータ実行可能なプログラム・コードを提供する。実施例は、データを移動させるリクエストを受け取り、そのリクエストに応答して、そのデータをソース・ページから宛先ページへ移動させる。実施例は、ダイレクト・メモリ・アクセスのための読み出しデータがソース・ページからフェッチされることを保証する。実施例は、ダイレクト・メモリ・アクセスのための書き込みデータがソース・ページおよび宛先ページの両方に格納されることも保証する。
【０００７】
添付図面を参照し、単に例を挙げて、本発明を説明する。
【発明を実施するための最良の形態】
【０００８】
実施例は、入出力装置によるアクセスを受けるデータを移動させることに配慮する。ここで図を、特に図１−２を参照すると、実施態様がその中で実現されるデータ処理環境の代表的線図が提供されている。図１−２は、単に代表的であるに過ぎず、種々の実施態様がその中で実現され得る環境に関して何らかの限定を主張しあるいは示唆するように意図されてはいないことが理解されるべきである。描かれている環境に対して多くの改変がなされ得る。
【０００９】
ここで図を参照すると、図１は、実施例をその中で実現できるデータ処理システムのネットワークの絵画図を描いている。ネットワーク・データ処理システム１００は、実施態様をその中で実現できるコンピュータのネットワークである。ネットワーク・データ処理システム１００はネットワーク１０２を含み、これは、データ処理システム１００の中で相互に接続された種々の装置およびコンピュータの間に通信リンクを提供するために使われる媒体である。ネットワーク１０２は、ワイヤ、無線通信リンク、あるいは光ファイバ・ケーブルのような接続を含むことができる。
【００１０】
描かれている例では、サーバ１０４およびサーバ１０６が記憶装置１０８と共にネットワーク１０２に接続している。さらに、クライアント１１０，１１２、１１４がネットワーク１０２に接続している。これらのクライアント１１０，１１２、１１４は、例えば、パーソナル・コンピュータまたはネットワーク・コンピュータであり得る。
【００１１】
描かれている例では、サーバ１０４は、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションのようなデータをクライアント１１０，１１２、１１４に提供する。クライアント１１０，１１２、１１４は、この例ではサーバ１０４に対してクライアントである。ネットワーク・データ処理システム１００は、図示されていない付加的なサーバ、クライアントおよび他の装置を含むことができる。
【００１２】
描かれている例では、ネットワーク・データ処理システム１００はインターネットであり、ネットワーク１０２は、相互に通信するためにプロトコルのＴＣＰ／ＩＰスイートを使用するネットワークおよびゲートウェイの世界的規模の集合を表す。インターネットの心臓部には、データおよびメッセージをルーティングする数千の商業用の、行政機関の、教育上の、およびその他のコンピュータ・システムから成る主要なノードまたはホスト・コンピュータ間の高速データ通信回線のバックボーンがある。もちろん、ネットワーク・データ処理システム１００は、例えば、イントラネット、ローカル・エリア・ネットワーク（ＬＡＮ）、あるいはワイド・エリア・ネットワーク（ＷＡＮ）などの幾つかの他のタイプのネットワークとしても実現され得る。図１は、例として意図されたものであって、種々の実施態様のためのアーキテクチャ限定として意図されてはいない。
【００１３】
ここで図２を参照すると、実施例をその中で実現できるデータ処理システムのブロック図が示されている。データ処理システム２００は、図１のサーバ１０４またはクライアント１１０のようなコンピュータの例であり、その中に、実施例のためにプロセスを実行するコンピュータ使用可能なコードまたは命令を配置することができる。
【００１４】
描かれている例では、データ処理システム２００は、ノース・ブリッジ・アンド・メモリ・コントローラ・ハブ（ＭＣＨ）２０２と、サウス・ブリッジ・アンド・インプット／アウトプット（Ｉ／Ｏ）コントローラ・ハブ（ＩＣＨ）２０４とを含むハブ・アーキテクチャを採用している。プロセッサ２０６、メイン・メモリ２０８、およびグラフィックス・プロセッサ２１０は、ノース・ブリッジ・アンド・メモリ・コントローラ・ハブ２０２に結合されている。グラフィックス・プロセッサ２１０は、例えばアクセラレーテッド・グラフィックス・ポート（ＡＧＰ）を通してＭＣＨに結合され得る。
【００１５】
描かれている例では、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ２１２はサウス・ブリッジ・アンドＩ／Ｏコントローラ・ハブ２０４に結合され、オーディオ・アダプタ２１６、キーボードおよびマウス・アダプタ２２０、モデム２２２、読み出し専用メモリ（ＲＯＭ）２２４、ユニバーサル・シリアル・バス（ＵＳＢ）ポートおよび他の通信ポート２３２、およびＰＣＩ／ＰＣＩｅ装置２３４はバス２３８を通してサウス・ブリッジ・アンドＩ／Ｏコントローラ・ハブ２０４に結合され、ハード・ディスク・ドライブ（ＨＤＤ）２２６およびＣＤ−ＲＯＭドライブ２３０はバス２４０を通してサウス・ブリッジ・アンドＩ／Ｏコントローラ・ハブ２０４に結合されている。ＰＣＩ／ＰＣＩｅ装置は、例えば、イーサネット・アダプタ、アドイン・カード、およびノートブック・コンピュータのためのＰＣカードを含むことができる。ＰＣＩはカード・バス・コントローラを使用するが、ＰＣＩｅは使用しない。ＲＯＭ２２４は、例えば、フラッシュ・バイナリ入出力システム（ＢＩＯＳ）であり得る。ハード・ディスク・ドライブ２２６およびＣＤ−ＲＯＭドライブ２３０は、例えば、インテグレーテッド・ドライブ・エレクトロニクス（ＩＤＥ）またはシリアル・アドバンスト・テクノロジー・アタッチメント（ＳＡＴＡ）インターフェースを使用することができる。スーパーＩ／Ｏ（ＳＩＯ）装置２３６は、サウス・ブリッジ・アンドＩ／Ｏコントローラ・ハブ２０４に結合され得る。
【００１６】
オペレーティング・システムは、プロセッサ２０６上で動作して、図２のデータ処理システム２００の中の種々のコンポーネントを調整し、その制御を提供する。オペレーティング・システムは、マイクロソフト（登録商標）ウィンドウズ（登録商標）ＸＰ（マイクロソフトとウィンドウズとはマイクロソフト社の米国、他の国、あるいはその両方における商標である）のような、商業的に利用可能なオペレーティング・システムであり得る。ジャバ（商標）プログラミング・システムのようなオブジェクト指向プログラミング・システムが、オペレーティング・システムと関連して動作することができて、データ処理システム２００上で実行しているジャバ・プログラムまたはアプリケーションからオペレーティング・システムにコールを提供する（ジャバと全てのジャバ・ベースの商標はサン・マイクロシステムズ社の米国、他の国、あるいはその両方における商標である）。
【００１７】
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムのための命令は、ハード・ディスク・ドライブ２２６のような記憶装置上に置かれ、プロセッサ２０６により実行されるべくメイン・メモリ２０８にロードされ得る。実施例のプロセスは、例えばメイン・メモリ２０８、読み出し専用メモリ２２４などのメモリに、または１つ以上の周辺装置などに置かれることのできるコンピュータ実行される命令を用いるプロセッサ２０６により実行され得る。
【００１８】
図１−２のハードウェアは、インプリメンテーションにより異なり得る。フラッシュ・メモリ、同等の不揮発性メモリ、または光ディスク・ドライブなどのような他の内部ハードウェアまたは周辺装置が、図１−２に描かれているハードウェアに加えてあるいはその代わりとして使用され得る。また、実施例のプロセスはマルチプロセッサ・データ処理システムに応用され得る。
【００１９】
或る例では、データ処理システム２００はパーソナル・デジタル・アシスタント（ＰＤＡ）であり得、これは、一般に、オペレーティング・システム・ファイルまたはユーザ生成されたデータあるいはその両方を記憶するために不揮発性メモリを提供するフラッシュ・メモリで構成される。バス・システムは、システム・バス、Ｉ／ＯバスおよびＰＣＩバスのような１つ以上のバスから構成され得る。もちろん、バス・システムは、そのファブリックまたはアーキテクチャに取り付けられた種々のコンポーネントまたは装置の間のデータ転送を提供する任意のタイプの通信ファブリックまたはアーキテクチャを用いて実現され得る。通信装置は、モデムまたはネットワーク・アダプタなど、データを送信し受信するために使用される１つ以上の装置を含み得る。メモリは、例えば、メイン・メモリ２０８、またはノース・ブリッジ・アンド・メモリ・コントローラ・ハブ２０２に見出されるようなキャッシュであり得る。処理装置は１つ以上のプロセッサまたはＣＰＵを含み得る。図１−２に描かれている例と上記の例とは、アーキテクチャに関しての限定事項を示唆するように意図されてはいない。例えば、データ処理システム２００は、ＰＤＡの形をとるほか、タブレット・コンピュータ、ラップトップ・コンピュータまたは電話装置でもあり得る。
【００２０】
図３は、１つの実施例に従うデータ処理システムの関連細部を示すブロック図を描いている。該システムは、一般的に参照番号３００で示されており、図２のデータ処理システム２００において実現され得る。データ処理システム３００は、一般的に、処理装置３０２、揮発性メモリ３０４、複数のＩ／Ｏ装置３０６，３０８、３１０、およびＩ／Ｏブリッジ３１２を含む。図３に示されている代表的実施態様では、データ処理システム３００はＰＣＩｅアーキテクチャを採用しており、Ｉ／Ｏブリッジ３１２はＰＣＩホスト・ブリッジ（ＰＨＢ）を含む。
【００２１】
本書で使われる“Ｉ／Ｏ装置”という用語は、コンピュータ・システムとインターフェースして該システムに情報を提供し、かつ、または、該システムから情報を受け取る種々の装置のうちの任意のものを含み得る。Ｉ／Ｏ装置の例は、メモリ、マウス、キーボード、ディスプレイ、プリンタ、光学式スキャナなどを含む。図３に示されている代表的実施態様では、Ｉ／Ｏ装置３０６は、データ３１６のブロック３１４を記憶するディスク記憶装置のような不揮発性メモリを含む。
【００２２】
データ３１６のブロック３１４は、Ｉ／Ｏ装置３０６から揮発性メモリ３０４に書き込まれ得る。ブロック３１４は、揮発性メモリ３０４におけるその実際の物理的位置に関連して“物理ページ”３１８と称される。揮発性メモリ３０４も、時には“物理メモリ”と称される。
【００２３】
揮発性メモリ３０４内の物理ページ３１８は、Ｉ／Ｏ装置３０６，３０８，３１０により、またデータ処理システム３００の処理装置（“ＣＰＵ”）３０２により、アクセスされ得る。より具体的には、物理ページ３１８はバス３２０によりＩ／Ｏブリッジ３１２に結合され、Ｉ／Ｏ装置３０６，３０８，３１０は、それぞれＩ／Ｏアダプタ３２２，３２４，３２６およびＩ／Ｏバス３３４のセグメント３２８，３３０，３３２によりＩ／Ｏブリッジ３１２に結合されている。
【００２４】
Ｉ／Ｏブリッジ３１２はＩ／Ｏブリッジ・ロジック３３６を含み、これは、Ｉ／Ｏ装置間の調整を行う、すなわち、Ｉ／Ｏ装置にＩ／Ｏバス３３４へのアクセスを一度に一つ認め、またＩ／Ｏバス３３４からバス３２０へのアクセスを認める。Ｉ／Ｏブリッジ３１２は、Ｉ／Ｏ装置によるリクエストに応答して、物理ページ３１８からの、あるいはＩ／Ｏ装置３０６などのＩ／Ｏ装置からのデータ３１６をキャッシュに入れるために、Ｉ／Ｏデータ・バッファ３３８も含む。Ｉ／Ｏブリッジ・ロジック３３６は、データ・バッファリングを処理するためのロジックを含む。図示されている実施態様では、Ｉ／Ｏブリッジ・ロジック３３６は、Ｉ／Ｏプロセッサとも称されるＩ／Ｏコントローラ３４０も含む。
【００２５】
データ処理システム３０２はオペレーティング・システムおよびファームウェア命令を実行し、そのイメージは図３においてデータ処理システムの中にオペレーティング・システム３４４およびファームウェア３４６として表されている。データ処理システム３０２により実行されるべき命令は、ファームウェア３４６からの命令と、ファームウェア３４６にサポートされて動作するオペレーティング・システム３４４からの命令と、ファームウェア３４６およびオペレーティング・システム３４４にサポートされて動作するアプリケーション命令（図示されていない）とを含む。ファームウェア３４６がデータ処理システム３０２上で実質的にオペレーティング・システム３４４と無関係に動作し、データ処理システム３０２などのハードウェア・コンポーネントに対してオペレーティング・システム３４４が提供するそれよりも低いレベルのインターフェースを、従ってより大きなアクセスを提供するということが理解されるべきである。
【００２６】
或る側面において、データが揮発性メモリ３０４の中にあるかあるいは例えばＩ／Ｏ装置３０６の中にあるかに関わらずにデータ３１６の実際の位置がかなりトランスペアレントであるように、オペレーティング・システム３４４は、データ処理システム３０２上で動作するアプリケーションにデータ３１６のブロック３１４のビューを仮想メモリ３４８のページとして提示する。従って、オペレーティング・システム３４４は、データ３１６を揮発性メモリ３０４に多少トランスペアレントに出し入れするためにページング・メカニズム３５０およびページ・テーブル３５２を含む。
【００２７】
Ｉ／Ｏ装置仮想メモリ３５４に関して、オペレーティング・システム３４４は、トランスレーション・コントロール・エントリ（“ＴＣＥ”）テーブル３５６中のエントリを介してデータ３１６のブロック３１４を物理ページ３１８にマッピングするようにＩ／Ｏブリッジ・ロジック３３６に命令する。該実施例では、第１ページが異なるサービスに当てられるかあるいはアイドルにされ得るように、ファームウェア３４６は、物理ページ３１８のうちの１つの物理ページから物理ページ３１８のうちの他の１つの物理ページへデータを移動させるために使用されるサービスを提供する。この機能を実行するために、オペレーティング・システム３４４は、ＴＣＥテーブル３５６において物理ページ３１８のうちの第１の物理ページについての１つ以上のエントリのセットを発見する。その後、オペレーティング・システム３４４は、Ｉ／Ｏ装置仮想メモリ３５４内の所与のページと関連付けられた物理ページ３１８のうちの第１の物理ページからデータを物理ページ３１８のうちの第２の物理ページへコピーし、その後に、Ｉ／Ｏ装置仮想メモリ３５４への将来のアクセスがその第２の物理ページへ向けられることとなるようにＴＣＥテーブル３５６中の関連するマッピングを変更するように、ページ・コピー・ソフトウェア３５８のようなファームウェア３４６コンポーネントに命令する。ページ・コピー・ソフトウェア３５８は、以下で詳述される幾つかの機能を持っている。
【００２８】
ＴＣＥテーブル３５６を理解するために、Ｉ／Ｏ装置３０６，３０８，３１０の各々が、データ３１６の自分自身のビューを、データ処理システム３０２の仮想メモリ・ビューと同様に、Ｉ／Ｏ装置仮想メモリ３５４のページとして持っていると考える。Ｉ／Ｏブリッジ・ロジック３３６は、このビューをＩ／Ｏ装置３０６，３０８，３１０に与える。このビューを維持するために、ＴＣＥテーブル３５６のエントリ（図３には示されていない）はデータ３１６のブロック３１４をＩ／Ｏ装置仮想メモリ３５４内のページにマッピングする。従って、Ｉ／Ｏ装置は、データの実際の位置に関わらず、すなわち、現在どの物理ページ３１８がデータを記憶しているかに関わらずに、Ｉ／Ｏ装置仮想メモリ３５４内のページへの参照によってデータ３１６を参照することができる。
【００２９】
Ｉ／Ｏブリッジ３１２は、バス３２０とＩ／Ｏバス３３４との間に位置するＩ／Ｏブリッジ・ロジック３３６を提供する。Ｉ／Ｏバス３３４上のメモリ・リクエストは、Ｉ／Ｏ装置仮想メモリ３５４を反映する仮想アドレスと共にＩ／Ｏ装置から入ってくる。アドレス変換ロジック３６０は、Ｉ／Ｏバス３３４からのメモリ・リクエストと関連する物理ページ３１８のうちの正しい物理ページにアクセスするために、自分がバス３２０に適用するべき物理ページ・アドレスを決定するべくＴＣＥテーブル３５６（これはＩ／Ｏ装置仮想ページ順に維持されている）に効果的にアクセスする。
【００３０】
図４は、１つの実施例に従う移動前のデータ移動の例を概略的に示す線図を描いている。１つの実施例に従う、物理ページ４０４のうちの第１の物理ページからデータを移動させることの例を示すために、ＴＣＥテーブル４０２と、幾つかの物理ページ４０４と、Ｉ／Ｏ装置仮想メモリ・ページ４０６とが詳しく示されている。ＴＣＥテーブル４０２は図３のＴＣＥテーブル３５６のようなＴＣＥテーブルであることができ、物理ページ４０４は図３の物理ページ３１８のような物理ページであることができ、Ｉ／Ｏ装置仮想メモリ・ページ４０６は図３のＩ／Ｏ装置仮想メモリ３５４の中のページのようなページであることができる。特に、図４に示されているように、物理ページ４０４のうちの個々の物理ページは４０４．１，４０４．２等と称され得る。
【００３１】
図示されている例では、ページ４０４．３からのデータが移動させられるべきターゲットとされる。Ｉ／Ｏ装置仮想メモリ・ページ４０６は、それぞれのＩ／Ｏ装置等の観点から示されている。すなわち、Ｉ／Ｏ装置仮想メモリ・ページの第１セット４０６．１は図３のディスク３０６のような第１のＩ／Ｏ装置のためのものであり、ページの第２セット４０６．２は図３の装置３０８のような第２のＩ／Ｏ装置のためのものであり、第３セット４０６．３は図３のＩ／Ｏ装置３１０のような第３のＩ／Ｏ装置のために示されている。
【００３２】
セクション４０８，４１０，４１２は、ＴＣＥテーブル４０２のために示されている各セクションの中に特定のエントリ４０８．Ｘ、４１０．Ｘ、４１２．Ｘを含む。セクション４０８，４１０，４１２は、図３のＩ／Ｏ装置３０６，３０８，３１０のような、それぞれのＩ／Ｏ装置に対応する。この様に、エントリが置かれているテーブル４０２内のセクションは、そのエントリに対応する物理ページにアクセスできるＩ／Ｏ装置を示す。図示されている例では、ターゲットとされた物理ページ４０４．３は第１のＩ／Ｏ装置によりＩ／Ｏ装置仮想メモリ・ページ４０６．１．５として見られ、それは第３のＩ／Ｏ装置によりＩ／Ｏ装置仮想メモリ・ページ４０６．３．２として見られる。ページ４０４．３についてテーブル４０２の第２セクション４１０にエントリが無いことに基づいて、図３のページ・コピー・ソフトウェア３５８のようなページ・コピー・ソフトウェアは、第２のＩ／Ｏ装置がページ４０４．３へのマッピングを持っていないと判定する。すなわち、ページ４０４．３は第２のＩ／Ｏ装置によるアクセスを受けない。
【００３３】
叙上を要約すると、ページ・コピー・ソフトウェアは、テーブル４０２の中の物理ページ４０４．３についてのエントリを見出すことによって、ページ４０４．３にアクセスするかもしれないＩ／Ｏ装置（および、アクセスしないかもしれないもの）を特定している。特に、この例では、ページ・コピー・ソフトウェアは、第１のＩ／Ｏ装置と第３のＩ／Ｏ装置とがページ４０４．３にアクセスするかもしれないと判定している。
【００３４】
ダイレクト・メモリ・アクセス（ＤＭＡ）操作を可能にするために、図３のＩ／Ｏ装置３０６のようなＩ／Ｏアダプタは、ページ４０４．３にデータを書き込み、あるいはそれからデータを読み出し、該実施例は、ダイレクト・メモリ・アクセス読み出しデータがソース移動ページからフェッチされダイレクト・メモリ・アクセス書き込みデータが移動ソース・ページと移動宛先ページとの両方に格納される限りプロセッサが移動ソース・ページを移動宛先ページにコピーする時間の間ダイレクト・メモリ・アクセス操作が続くかもしれないことを認識する。
【００３５】
該実施例は、プロセッサが移動ソース・ページを移動宛先ページにコピーするときにソース・ページ中のデータが静的でないかもしれないことをさらに認識する。従って、データ・コピー操作は、ソースから宛先にデータの最小ピースをコピーし、その後にソース位置にある該データがなお同じであることを確かめなければならない。
【００３６】
１つの代表的実施態様では、移動モード・ビットがＴＣＥテーブルにおいて定義される。ＴＣＥテーブルにおいて下位１２ビットが制御目的のために確保される。移動モード・ビットは、１レベルのインダイレクションをＴＣＥフェッチ・プロセスに挿入する。オリジナルＴＣＥの実アドレス部分は１６バイト移動ディスクリプタを指す。１６バイト移動ディスクリプタの第１の８バイトはソース・ページの実アドレスをＴＣＥフォーマットで提供し、第２の８バイトは宛先ページの実アドレスをまたＴＣＥフォーマットで提供する。
【００３７】
移動モード・ビットに頼ることは、ＤＭＡ操作のプロセッサ・ホスト・ブリッジ（ＰＨＢ）処理を下記のように変更する：
Ａ．  ＤＭＡ読み出し操作：
１．  ＴＣＥをフェッチし、移動ビットがオンにセットされていると判定する；
２．  移動ディスクリプタの第１の８バイトをフェッチするが、それは１サイクルのインダイレクションだけを提供する；
３．  ソース・ページＴＣＥにより指定されるＤＭＡ読み出しデータをフェッチする；
４．  ＤＭＡ読み出しデータがソース・ページにより供給される。
Ｂ．  ＤＭＡ書込み操作：
１．  ＴＣＥをフェッチし、移動ビットがオンにセットされていると判定する；
２．  １６バイト移動ディスクリプタ全体をフェッチする；
３．  ソースＴＣＥごとに、データをソース・ページにコヒーレントに書き込む（注：  キャッシュに入れられたコピーは、次の書き込みの前に無効にされなければならない）；
４．  宛先ＴＣＥごとに、データを宛先ページにコヒーレントに書き込む（注：  キャッシュに入れられたコピーは、次の書き込みの前に無効にされなければならない）。
【００３８】
データを１つの物理メモリ位置から他の物理メモリ位置へ移動させるために、ページ・コピー・ソフトウェアは下記の機能を実行する：
Ａ．  移動ディスクリプタをセットし、移動するブロックの中に一意にマッピングされる各物理ブロックのために１つの移動ディスクリプタが必要とされる；
Ｂ．  適切な移動ディスクリプタにアクセスするために、移動ブロックの中にマッピングするＴＣＥをセットする；
Ｃ．  ＤＭＡ書込みがコピー動作中にデータを変化させる事態を捉えるためにソース・ワードが記憶後に同じになるまで、ソース・ページを通って巡回する、例えば、ソース・ページ・ワードごとにソース・ページを通って巡回する：
ａ．  ソース・ワードをロードする；
ｂ．  該ワードをターゲット・ページに格納する；
ｃ．  ソース・ワードを試験のために再ロードする；
ｄ．  ループを終了する；
Ｄ．  ＴＣＥを移動ディスクリプタの宛先ページ・フィールドの中の値にセットする。
【００３９】
ここで図５を参照すると、１つの実施例に従う移動後の移動されたデータの例を概略的に示す線図が描かれている。図５に示されているように、ページ・コピー・ソフトウェアはデータを第１物理ページ４０４．３から第２物理ページ４０４．５に移動させた。データが移動されると、ページ・コピー・ソフトウェアはＴＣＥテーブル４０２のエントリのセットを更新する。図示されているように、その更新の後、エントリ４０８．４は仮想ページ４０６．１．５に新しい物理ページ４０４．５への参照指示を付け、エントリ４１２．１は仮想ページ４０６．３．２に新しい物理ページ４０４．５への参照指示を付ける。
【００４０】
図６は、１つの実施例に従う、Ｉ／Ｏ装置によるアクセスを受けるデータを移動させる操作を示すフローチャートを描いている。これらの例においてプロセスは図３のページ・コピー・ソフトウェア３５８のようなコンポーネントにおいて実行され得る。
【００４１】
操作が始まると、データを物理ページ“Ｘ”から物理ページ“Ｙ”に移動させるリクエストが受け取られる（ステップ５０２）。ページ・コピー・ソフトウェアは、移動ソース・ページと移動宛先ページとに参照指示を付ける移動ディスクリプタをトランスレーションコントロール・エントリ移動ブロックにおいてセットする（ステップ５０４）。移動ディスクリプタは、移動される各物理ページのために必要とされる。その後、ＴＣＥが移動ディスクリプタにアクセスできるように、ページ・コピー・ソフトウェアは１つ以上のＴＣＥを、移動ブロックを指すようにセットする（ステップ５０６）。その後、ページ・コピー・ソフトウェアは移動ソース・ページを通るループを開始する（ステップ５０８）。
【００４２】
ページ・コピー・ソフトウェアは、もしＤＭＡ書込みが移動中に発生したならば行われ得る変更を捉えるために、移動記憶が同じであるように移動ソース・ページを通って一度にｎバイトずつ巡回する。従って、ページ・コピー・ソフトウェアは、移動ソース・ページ・データを一度にｎバイトずつロードする（ステップ５１０）。該ｎバイトを移動宛先ページに格納する（ステップ５１２）。移動が有効であることを明らかにするために移動ソース・ページ・データを再ロードする（ステップ５１４）。もし格納されている宛先ページが異なるならば、再ロードされた移動ソース・ページ・データが宛先ページに格納され、確認プロセスが反復する。移動ソース・ページからのデータがすべて移動宛先ページに移されたならば、ループは終了する（ステップ５１６）。従って、移動が始まったならば、どの様なＤＭＡ書き込みも移動ソース・ページと移動宛先ページとの両方に対して行われるが、巡回プロセスは、移動ソース・ページ・データが移動宛先ページ・データと同じであることを保証する。最後に、ページ・コピー・ソフトウェアはＴＣＥテーブル中のＴＣＥを、移動ディスクリプタで明示されている宛先ページ値にセットし（ステップ５１８）、操作はその後に終了する。
【００４３】
この様に、実施例はデータを移動させるリクエストを受け取り、このリクエストに応答してデータをソース・ページから宛先ページに移動させる。実施例は、ダイレクト・メモリ・アクセスのための読み出しデータがソース・ページからフェッチされることを保証すると共に、ダイレクト・メモリ・アクセスのための書き込みデータがソース・ページと宛先ページとの両方に格納されることを保証する。
【００４４】
本発明は、完全にハードウェアの実施態様、完全にソフトウェアの実施態様、あるいはハードウェア要素とソフトウェア要素との両方を含む実施態様の形をとることができる。１つの好ましい実施態様では、本発明はソフトウェアで実施され、それはファームウェア、常駐ソフトウェア、マイクロコードなどを含むけれども、それらに限定されない。
【００４５】
さらに、本発明は、コンピュータまたは任意の命令実行システムによりあるいはそれらと関連して使用されるプログラム・コードを提供するコンピュータ使用可能なまたはコンピュータ可読の媒体からアクセスできるコンピュータ・プログラムの形をとることができる。この記述の目的上、コンピュータ使用可能なまたはコンピュータ可読の媒体は、命令実行システム、装置、またはデバイスにより、あるいはそれらと関連して、使用されるプログラムを包含し、記憶し、伝達し、伝播し、あるいは運ぶことのできる任意の有形装置であり得る。
【００４６】
該媒体は、電子、磁気、光学、電磁、赤外線、あるいは半導体のシステム（あるいは装置またはデバイス）または伝播媒体であり得る。コンピュータ可読媒体の例は、半導体または固体メモリ、磁気テープ、取り外し可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、リジッド磁気ディスクおよび光ディスクを含む。光ディスクの現在の例は、コンパクト・ディスク−読み出し専用メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク−読み出し／書き込み（ＣＤ−Ｒ／Ｗ）およびＤＶＤを含む。
【００４７】
プログラム・コードを記憶し、かつ、または、実行するために適するデータ処理システムは、メモリ素子に直接にあるいはシステム・バスを通して間接的に結合される少なくとも１つのプロセッサを含むであろう。メモリ素子は、プログラム・コードの現実の実行時に使用されるローカル・メモリ、大容量記憶装置、および、実行中にコードが大容量記憶装置から取り出されなければならない回数を減らすために少なくとも多少のプログラム・コードの一時記憶を提供するキャッシュ・メモリを含み得る。
【００４８】
入出力あるいはＩ／Ｏ装置（キーボード、ディスプレイ、ポインティング・デバイスなどを含むが、これらに限定されない）は、直接に、あるいは介在するＩ／Ｏコントローラを通して、システムに結合され得る。
【００４９】
データ処理システムが、介在する構内ネットワークまたは公衆網を通して他のデータ処理システムまたはリモート・プリンタまたは記憶装置に結合され得るようにネットワーク・アダプタをシステムに結合させることもできる。モデム、ケーブル・モデムおよびイーサネット・カードは、ほんの幾つかの現在利用可能なタイプのネットワーク・アダプタである。
【００５０】
本発明の記述は、例証および記述の目的で提示されており、網羅的であることや、開示された形の発明に限定されることは意図されていない。多くの改変および変化形が当業者にとっては明らかであろう。実施態様は、本発明の原理、実際的応用を最善に説明し、意図されている特定の用途に適する種々の改変を伴う種々の実施態様を目的として他の当業者が本発明を理解できるように、選択され記述された。
【図面の簡単な説明】
【００５１】
【図１】実施例をその中で実現できるデータ処理システムのネットワークの絵画図を描いている。
【図２】実施例をその中で実現できるデータ処理システムのブロック図を描いている。
【図３】一実施例に従うデータ処理システムの関連する詳細を示すブロック図を描いている。
【図４】一実施例に従う、移動前のデータ移動の例を概略的に示す線図を描いている。
【図５】一実施例に従う、移動後の移動されたデータの例を概略的に示す線図を描いている。
【図６】一実施例に従う、Ｉ／Ｏ装置によるアクセスを受けるデータを移動させる操作を示すフローチャートを描いている。
【図１】
2009534767.tif 000003
【図２】
2009534767.tif 000004
【図３】
2009534767.tif 000005
【図４】
2009534767.tif 000006
【図５】
2009534767.tif 000007
【図６】
2009534767.tif 000008
【手続補正書】
【提出日】平成21年3月13日(2009.3.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ダイレクト・メモリ・アクセスを用いる装置によりアクセス可能なデータを移動させるためのコンピュータにより実行される方法であって、このコンピュータにより実行される方法は、
ソース・ページ中のデータを移動させるリクエストに応答して前記データを前記ソース・ページから宛先ページに移動させるステップと、
前記ソース・ページから前記宛先ページへの前記データの移動中に、任意のダイレクト・メモリ・アクセスのための読み出しデータを前記ソース・ページからフェッチするステップと、
前記ソース・ページから前記宛先ページへの前記データの移動中に、任意のダイレクト・メモリ・アクセスのための書き込みデータを前記ソース・ページと前記宛先ページとの両方に格納するステップと、
を含む、コンピュータにより実行される方法。
【請求項２】
前記データを移動させる前記リクエストを受け取ったことに応答して、移動ディスクリプタを移動ブロックにセットするステップと、
前記移動ブロックを指すようにエントリをセットするステップと、
前記宛先ページを指すように前記エントリを向けるステップと、
をさらに含む、請求項１に記載のコンピュータにより実行される方法。
【請求項３】
前記データを前記ソース・ページから前記宛先ページに移動させる前記ステップは、
前記ソース・ページ・データをロードするステップと、
前記ソース・ページ・データを前記宛先ページに格納するステップと、
再ロードされたソース・ページ・データを形成するために前記ソース・ページ・データを再ロードするステップと、
前記再ロードされたソース・ページ・データを前記格納された宛先ページ・データに対して確認するステップと、
前記確認が一致することに応答して、前記データ移動を終了するステップと、
をさらに含む、請求項１に記載のコンピュータにより実行される方法。
【請求項４】
前記確認が失敗したことに応答して、前記再ロードされたソース・ページ・データを前記宛先ページに格納するステップと、
新しい再ロードされたソース・ページ・データを形成するために前記ソース・ページ・データを再ロードするステップと、
前記新しい再ロードされたソース・ページ・データを前記格納された宛先ページ・データに対して確認するステップと、
前記確認が一致することに応答して、前記データ移動を終了するステップと、
をさらに含む、請求項３に記載のコンピュータにより実行される方法。
【請求項５】
前記ダイレクト・メモリ・アクセスのための書き込みデータが前記ソース・ページと前記宛先ページとの両方に格納されることを保証するステップは、
エントリにおいて移動モード・ビットをセットするステップと、
前記エントリをフェッチするステップと、
前記移動モード・ビットを検出するステップと、
ダイレクト・メモリ・アクセス書込み操作を受けるステップと、
移動ディスクリプタをフェッチするステップと、
前記ソース・ページと前記宛先ページとにデータをコヒーレントに書き込むステップと、
をさらに含む、請求項１に記載のコンピュータにより実行される方法。
【請求項６】
前記移動モード・ビットは１レベルのインダイレクションをフェッチ・プロセスに挿入する、請求項５に記載のコンピュータにより実行される方法。
【請求項７】
前記ダイレクト・メモリ・アクセスのための読み出しデータが前記ソース・ページからフェッチされることを保証するステップは、
エントリにおいて移動モード・ビットをセットするステップと、
前記エントリをフェッチするステップと、
前記移動モード・ビットを検出するステップと、
ダイレクト・メモリ・アクセス読み出し操作を受けるステップと、
移動ディスクリプタの一部分をフェッチするステップと、
前記ソース・ページからデータをコヒーレントに読み出すステップと、
をさらに含む、請求項１に記載のコンピュータにより実行される方法。
【請求項８】
前記移動モード・ビットは１レベルのインダイレクションをフェッチ・プロセスに挿入する、請求項７に記載のコンピュータにより実行される方法。
【請求項９】
前記移動ディスクリプタは前記ソース・ページの実アドレスと前記宛先ページの実アドレスとを提供する、請求項２に記載のコンピュータにより実行される方法。
【請求項１０】
エントリはトランスレーション・コントロール・エントリである、請求項１に記載のコンピュータにより実行される方法。
【請求項１１】
バス・システムと、
前記バス・システムに接続された通信システムと、
命令のセットを包含し、前記バス・システムに接続されたメモリと、
前記バス・システムに接続された処理装置とを含むデータ処理システムであって、前記処理装置は、ソース・ページ中のデータを移動させるリクエストに応答して前記データを前記ソース・ページから宛先ページに移動させ、前記ソース・ページから前記宛先ページへの前記データの移動中に任意のダイレクト・メモリ・アクセスのための読み出しデータを前記ソース・ページからフェッチし、前記ソース・ページから前記宛先ページへの前記データの移動中に任意のダイレクト・メモリ・アクセスのための書き込みデータを前記ソース・ページおよび前記宛先ページの両方に格納するために前記命令のセットを実行する、データ処理システム。
【請求項１２】
前記処理装置は、前記データを移動させる前記リクエストを受け取ったことに応答して移動ディスクリプタを移動ブロックにおいてセットし、前記移動ブロックを指すようにエントリをセットし、前記宛先ページを指すように前記エントリを向けるために前記命令のセットを実行する、請求項１１に記載のデータ処理システム。
【請求項１３】
前記ソース・ページから前記宛先ページに前記データを移動させるために前記処理装置が前記命令のセットを実行することは、前記ソース・ページ・データをロードし、前記ソース・ページ・データを前記宛先ページに格納し、再ロードされたソース・ページ・データを形成するために前記ソース・ページ・データを再ロードし、前記再ロードされたソース・ページ・データを前記格納された宛先ページ・データに対して確認し、前記確認が一致することに応答して前記データ移動を終了するために前記処理装置が前記命令のセットを実行することを含む、請求項１１に記載のデータ処理システム。
【請求項１４】
前記処理装置は、前記確認が失敗したことに応答して前記再ロードされたソース・ページ・データを前記宛先ページに格納し、新しい再ロードされたソース・ページ・データを形成するために前記ソース・ページ・データを再ロードし、前記新しい再ロードされたソース・ページ・データを前記格納された宛先ページ・データに対して確認し、前記確認が一致したことに応答して前記移動を終了するために、前記命令のセットを実行する、請求項１３に記載のデータ処理システム。
【請求項１５】
前記移動ディスクリプタは前記ソース・ページの実アドレスと前記宛先ページの実アドレスとを提供する、請求項１２に記載のデータ処理システム。
【請求項１６】
ダイレクト・メモリ・アクセスを用いる装置によりアクセス可能なデータを移動させるためのコンピュータ読み取り可能なプログラム・コードを含むコンピュータ使用可能な媒体を含むコンピュータ・プログラムであって、前記コンピュータ・プログラムは、
ソース・ページ中のデータを移動させるリクエストに応答して前記データを前記ソース・ページから宛先ページに移動させるためのコンピュータ読み取り可能なプログラム・コードと、
前記ソース・ページから前記宛先ページへの前記データの移動中に、任意のダイレクト・メモリ・アクセスのための読み出しデータを前記ソース・ページからフェッチするためのコンピュータ読み取り可能なプログラム・コードと、
前記ソース・ページから前記宛先ページへの前記データの移動中に、任意のダイレクト・メモリ・アクセスのための書き込みデータを前記ソース・ページと前記宛先ページとの両方に格納するためのコンピュータ読み取り可能なプログラム・コードと、
を含む、コンピュータ・プログラム。
【請求項１７】
前記データを移動させる前記リクエストを受け取ったことに応答して、移動ディスクリプタを移動ブロックにセットするためのコンピュータ読み取り可能なプログラム・コードと、
前記移動ブロックを指すようにエントリをセットするためのコンピュータ読み取り可能なプログラム・コードと、
前記宛先ページを指すように前記エントリを向けるためのコンピュータ読み取り可能なプログラム・コードと、
をさらに含む、請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
前記データを前記ソース・ページから前記宛先ページに移動させるための前記コンピュータ読み取り可能なプログラム・コードは、
前記ソース・ページ・データをロードするためのコンピュータ読み取り可能なプログラム・コードと、
前記ソース・ページ・データを前記宛先ページに格納するためのコンピュータ読み取り可能なプログラム・コードと、
再ロードされたソース・ページ・データを形成するために前記ソース・ページ・データを再ロードするためのコンピュータ読み取り可能なプログラム・コードと、
前記再ロードされたソース・ページ・データを前記格納された宛先ページ・データに対して確認するためのコンピュータ読み取り可能なプログラム・コードと、
前記確認が一致することに応答して、前記データ移動を終了するためのコンピュータ読み取り可能なプログラム・コードと
をさらに含む、請求項１６に記載のコンピュータ・プログラム。
【請求項１９】
前記確認が失敗したことに応答して、前記再ロードされたソース・ページ・データを前記宛先ページに格納するためのコンピュータ読み取り可能なプログラム・コードと、
新しい再ロードされたソース・ページ・データを形成するために前記ソース・ページ・データを再ロードするためのコンピュータ読み取り可能なプログラム・コードと、
前記新しい再ロードされたソース・ページ・データを前記格納された宛先ページ・データに対して確認するためのコンピュータ読み取り可能なプログラム・コードと、
前記確認が一致することに応答して、前記データ移動を終了するためのコンピュータ読み取り可能なプログラム・コードと、
をさらに含む、請求項１８に記載のコンピュータ・プログラム。
【請求項２０】
前記移動ディスクリプタは前記ソース・ページの１実アドレスと前記宛先ページの１実アドレスとを提供する、請求項１７に記載のコンピュータ・プログラム。
【国際調査報告】
2009534767.tif 000009
2009534767.tif 000010