(57)【要約】【課題】メモリにおいて第１ブロック（Ａ）から第２ブロック（Ｂ）へデータを移動する仮想メモリ・マネージャを含む装置を提供する。【解決手段】仮想メモリ・マネージャがデータを第１ブロックから第２ブロックへ何時でも転送できるとき、メモリの第３の一時的ブロック（Ｃ）が画定される。ＤＭＡコントローラ内の変換テーブルは、第１ブロックを目標とするＤＭＡ転送を一時的ブロックを目標とするように向けるために変更される。仮想メモリ・マネージャは、その後、データを第１ブロックから第２ブロックに転送する。転送が完了したとき、第１ブロックからのデータが第２ブロックに書き込まれていた間にＤＭＡがデータを一時的ブロックに転送したか否かが判定される。肯定であれば、一時的ブロックに書き込まれたデータは第２ブロックに書き込まれる。一時的ブロックに対する変更を効率よく検出するためにハードウェア・レジスタが好ましくは使用される。【選択図】図１
2009512004.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに結合されたダイレクト・メモリ・アクセス（ＤＭＡ）コントローラと、
前記ＤＭＡコントローラ及び前記少なくとも１つのプロセッサに結合されたメモリと、
前記メモリ内に存在して前記少なくとも１つのプロセッサにより実行される仮想メモリ・マネージャとを含む装置であって、前記仮想メモリ・マネージャは、前記メモリ内に一時的ブロックを作り、前記ＤＭＡコントローラによる将来の書込みが前記一時的ブロックに書き込まれるように前記ＤＭＡコントローラ内のアドレス変換テーブルを変更し、データを前記メモリ内の第１ブロックから第２ブロックに移動し、前記第１ブロックから前記第２ブロックへの前記データ移動の後に、前記ＤＭＡコントローラによる前記一時的ブロックへの書込みが前記仮想メモリ・マネージャによる前記第１ブロックから前記第２ブロックへの前記データ移動の間に行われたか否かを判定し、もし前記判定が肯定ならば、前記第１ブロックから前記第２ブロックへの前記データ移動中に前記ＤＭＡコントローラによって一時的場所に書き込まれたデータを前記一時的場所から前記第２ブロックに書き込む、
前記装置。
【請求項２】
前記装置は複数のビットを含むハードウェア・レジスタを更に含んでおり、各ビットは前記メモリの画定されたブロックに対応し、各ビットの値は、そのビットに対応する前記画定されたブロックに前記ＤＭＡコントローラがデータを書き込んだならば１であり、そのビットに対応する前記画定されたブロックに前記ＤＭＡコントローラがデータを書き込まなかったならば０である、請求項１の装置。
【請求項３】
前記ハードウェア・レジスタは改変記録レジスタを含む、請求項２の装置。
【請求項４】
前記ハードウェア・レジスタは前記ＤＭＡコントローラ内に存在する、請求項２の装置。
【請求項５】
前記ハードウェア・レジスタの１である各ビットは、メモリの対応するブロックの中のデータが前記第２ブロックに書き込まれたときに０に変更される、請求項２の装置。
【請求項６】
メモリにおいて第１ブロックから第２ブロックにデータを移動する、コンピュータにより実行される方法であって、
（Ａ）前記メモリ内に一時的ブロックを作るステップと、
（Ｂ）ＤＭＡコントローラ内のアドレス変換テーブルを、前記ＤＭＡコントローラによる将来の書込みが前記一時的ブロックに書き込まれるように、変更するステップと、
（Ｃ）データを前記メモリ内の第１ブロックから第２ブロックに移動するステップと、
（Ｄ）ステップ（Ｃ）における前記データ移動の後に、前記ＤＭＡコントローラによる前記一時的ブロックへの書込みがステップ（Ｃ）における前記データ移動の間に行われたか否かを判定するステップと、
（Ｅ）前記ＤＭＡコントローラによる前記一時的ブロックへの書込みがステップ（Ｃ）における前記データ移動の間に行われたならば、ステップ（Ｃ）における前記データ移動の間に前記ＤＭＡコントローラによって書き込まれた前記データを一時的場所から前記第２ブロックに書き込むステップと、
を含む、前記方法。
【請求項７】
（Ｆ）ステップ（Ｅ）における前記データの前記書き込みの間に前記ＤＭＡコントローラにより前記一時的ブロックへの書込みが行われたならば、ステップ（Ｅ）における前記データの前記書き込みの間に前記ＤＭＡコントローラにより書き込まれた前記データを前記一時的場所から前記第２ブロックに書きこむステップを更に含む、請求項６の方法。
【請求項８】
（Ｇ）ステップ（Ｆ）における前記データの前記書き込みの間に前記ＤＭＡコントローラが前記一時的場所にデータを書き込まなくなるまでステップ（Ｆ）を反復するステップを更に含む、請求項７の方法。
【請求項９】
ステップ（Ｄ）は、前記ＤＭＡコントローラによる前記一時的ブロックの変更を反映するハードウェア・レジスタの状態を調べることによって実行される、請求項８の方法。
【請求項１０】
前記ハードウェア・レジスタは前記ＤＭＡコントローラ内に存在する、請求項９の方法。
【請求項１１】
前記ハードウェア・レジスタは複数のビットを含み、各ビットは前記メモリの画定されたブロックに対応し、各ビットの値は、そのビットに対応する前記画定されたブロックに前記ＤＭＡコントローラがデータを書き込んだならば１であり、そのビットに対応する前記画定されたブロックに前記ＤＭＡコントローラがデータを書き込まなかったならば０である、請求項９の方法。
【請求項１２】
前記ハードウェア・レジスタの１である各ビットは、メモリの対応するブロックの中のデータが前記第２ブロックに書き込まれたときに０に変更される、請求項１１の方法。
【請求項１３】
仮想メモリ・マネージャを提供するようにデータ処理装置の動作を制御するためのコンピュータ可読プログラム・コードにおいて実現される命令のセットを含むコンピュータ・プログラムであって、前記仮想メモリ・マネージャは、
メモリ内に一時的ブロックを作り、
ＤＭＡコントローラによる将来の書込みが前記一時的ブロックに書き込まれるように前記ＤＭＡコントローラ内のアドレス変換テーブルを変更し、
データを前記メモリ内の第１ブロックから第２ブロックに移動し、
前記第１ブロックから前記第２ブロックへの前記データ移動の後に、前記ＤＭＡコントローラによる前記一時的ブロックへの書込みが前記仮想メモリ・マネージャによる前記第１ブロックから前記第２ブロックへの前記データ移動の間に行われたか否かを判定し、
もし前記判定が肯定ならば、前記第１ブロックから前記第２ブロックへの前記データ移動中に前記ＤＭＡコントローラによって一時的場所に書き込まれたデータを前記一時的場所から前記第２ブロックに書き込む、
前記コンピュータ・プログラム。
【請求項１４】
（Ａ）請求項１３のコンピュータ・プログラムと、
（Ｂ）前記コンピュータ・プログラムを担持するコンピュータ可読信号担持媒体と、
を含むコンピュータ・プログラム製品。
【請求項１５】
前記コンピュータ可読信号担持媒体は記録可能な媒体を含む、請求項１４のコンピュータ・プログラム製品。
【請求項１６】
前記コンピュータ可読信号担持媒体は伝送媒体を含む、請求項１４のコンピュータ・プログラム製品。
【請求項１７】
前記仮想メモリ・マネージャは、前記第１ブロックから前記第２ブロックへの前記データ移動の後に、ハードウェア・レジスタを読むことによって、前記仮想メモリ・マネージャによる前記第１ブロックから前記第２ブロックへの前記データ移動の間に前記ＤＭＡコントローラによる前記一時的ブロックへの書込みが行われたか否かを判定し、前記ハードウェア・レジスタは複数のビットを含み、各ビットは前記メモリ内のデータの画定されたブロックに対応し、各ビットの値は、そのビットに対応する前記画定されたブロックに前記ＤＭＡコントローラがデータを書き込んだならば１であり、そのビットに対応する前記画定されたブロックに前記ＤＭＡコントローラがデータを書き込まなかったならば０である、請求項１３のコンピュータ・プログラム製品。
【請求項１８】
前記ハードウェア・レジスタは改変記録レジスタを含む、請求項１７のコンピュータ・プログラム製品。
【請求項１９】
前記ハードウェア・レジスタは前記ＤＭＡコントローラ内に存在する、請求項１７のコンピュータ・プログラム製品。
【請求項２０】
前記ハードウェア・レジスタの１である各ビットは、メモリの対応するブロックの中のデータが前記第２ブロックに書き込まれたときに０に変更される、請求項１７のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムに関し、特に仮想メモリ環境を提供するコンピュータ・システムにおけるダイレクト・メモリ・アクセス（ＤＭＡ）リクエストの処理に関する。
【背景技術】
【０００２】
多くのコンピュータ・システムは仮想メモリ環境を有し、その環境では仮想アドレスがメモリ内の物理アドレスにマッピングされる。１つの特定のタイプの仮想メモリ環境は、単一のプラットフォーム上に複数の論理パーティションを画定し、これにより各論理パーティションがクライアントの観点からは独立のユニークなコンピュータ・システムであるように見えることを可能にする。論理的に分割されたコンピュータ・システムにおいては、ハード・ディスク・ドライブのようなＩ／Ｏ装置がメモリに書き込みを行う必要がしばしばある。ハード・ディスク・ドライブとメモリとの間のその様な転送は、しばしば、バス・チップセット内のダイレクト・メモリ・アクセス（ＤＭＡ）コントローラを介して行われる。ＤＭＡ転送はプロセッサ・イベントとは非同期に行われるので、その様なＤＭＡ転送はコヒーレンシー問題を引き起こす可能性を有する。例えば、仮想メモリ・マネージャがメモリにおいてデータをブロックＡからブロックＢに移動することを決定したと仮定すると、従来技術では、ブロックＡからブロックＢへの移動が完了する前にＤＭＡコントローラがブロックＡに書き込むことがあり得る。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
もしブロックＡへの書込みが既にブロックＢにコピーされた場所に行われたならば、ブロックＢは今はステイル・データ（ｓｔａｌｅ  ｄａｔａ）を持っているのであり、それはバス又はシステムのクラッシュをもたらし得る。ＤＭＡコントローラ及び仮想メモリ・システムを含むコンピュータ・システムにおいてデータ・コヒーレンシーを保証する方法が無ければ、コンピュータ産業はデータ・コヒーレンシー問題に起因する潜在的クラッシュ及びその他の問題に悩み続けるであろう。
【課題を解決するための手段】
【０００４】
本発明の第１の側面は、少なくとも１つのプロセッサと、少なくとも１つのプロセッサに結合されたダイレクト・メモリ・アクセス（ＤＭＡ）コントローラと、ＤＭＡコントローラ及び少なくとも１つのプロセッサに結合されたメモリと、メモリ内に存在して少なくとも１つのプロセッサにより実行される仮想メモリ・マネージャとを含む装置を提供する。仮想メモリ・マネージャは、メモリ内に一時的ブロックを作り、ＤＭＡコントローラによる将来の書込みが一時的ブロックに書き込まれるようにＤＭＡコントローラ内のアドレス変換テーブルを変更し、データをメモリ内の第１ブロックから第２ブロックに移動し、第１ブロックから第２ブロックへのデータ移動の後に、ＤＭＡコントローラによる一時的ブロックへの書込みが仮想メモリ・マネージャによる第１ブロックから第２ブロックへのデータ移動の間に行われたか否かを判定する。この判定が肯定ならば、仮想メモリ・マネージャは、データ移動中にＤＭＡコントローラによって一時的場所に書き込まれたデータを一時的場所から第２ブロックに書き込む。
【０００５】
本発明の第２の側面はメモリにおいて第１ブロックから第２ブロックにデータを移動する方法を提供し、この方法は、
（Ａ）メモリ内に一時的ブロックを作るステップと、
（Ｂ）ＤＭＡコントローラ内のアドレス変換テーブルを、ＤＭＡコントローラによる将来の書込みが一時的ブロックに書き込まれるように、変更するステップと、
（Ｃ）データをメモリ内の第１ブロックから第２ブロックに移動するステップと、
（Ｄ）ステップ（Ｃ）におけるデータの移動の後に、ＤＭＡコントローラによる一時的ブロックへの書込みがステップ（Ｃ）におけるデータの移動の間に行われたか否かを判定するステップと、
（Ｅ）ＤＭＡコントローラによる一時的ブロックへの書込みがステップ（Ｃ）におけるデータの移動の間に行われたならば、ステップ（Ｃ）におけるデータの移動の間にＤＭＡコントローラによって書き込まれたデータを一時的場所から第２ブロックに書き込むステップと、
を含む。
【０００６】
好ましい実施態様によれば、装置は、メモリにおいて第１ブロックから第２ブロックへデータを移動する仮想メモリ・マネージャを含む。仮想メモリ・マネージャがデータを第１ブロックから第２ブロックへ何時でも転送できるとき、一時的ブロックであるメモリの第３ブロックが画定される。ＤＭＡコントローラ内の変換テーブルは、ＤＭＡ転送を第３ブロックに向けるように変更される。仮想メモリ・マネージャは、その後、データを第１ブロックから第２ブロックに転送する。転送が完了したとき、第１ブロックからのデータが第２ブロックに書き込まれていた間にＤＭＡがデータを一時的ブロックに転送したか否かが判定される。肯定であれば、一時的ブロックに書き込まれたデータは第２ブロックに書き込まれる。一時的ブロックに対する変更を効率よく検出するために１つのハードウェアである改変記録レジスタ（ＭＲＲ）が好ましくは使用される。ＭＲＲは複数のビットを含み、各ビットはメモリの画定されたブロックに対応し、各ビットの値は、もしそのビットに対応する画定されたブロックにＤＭＡコントローラがデータを書き込んだならば１であり、そのビットに対応する画定されたブロックにＤＭＡコントローラがデータを書き込まなかったならば０である。もしＭＲＲが０でなければ、ＭＲＲは一度に１ビットずつ調べられて該レジスタ内の１のビットに対応するメモリ・ブロックを一時的ブロックから第２ブロックに書き込み、それらのメモリ・ブロックが第２ブロックに書き込まれた後に１のビットを０にクリアする。全てのビットがクリアされたならば（全ての対応するメモリ・ブロックが第２ブロックに書き込まれたことを意味する）、前のパスでＭＲＲをクリアしている間に付加的なＤＭＡ転送が行われなかったことを確かめるためにＭＲＲのチェックがもう一度行われる。全てのＭＲＲビットが０になって、ＭＲＲの最後のチェックの後にＤＭＡ転送が行われなかったことを示すまで、このプロセスは続行される。
【０００７】
本発明の他の側面は、上記方法を実行するようにデータ処理装置を制御するためのプログラム・コード命令のセットを含むコンピュータ・プログラムを含む。
【０００８】
本発明の上記の及び他の特徴及び利点は、添付図面に示されている本発明の好ましい実施態様についての以下の詳細な記述から明らかになるであろう。
【０００９】
添付図面を参照して、本発明の実施態様が例として以下でより詳しく記述される。添付図面では、同様の名称は同様の要素を示す。
【発明を実施するための最良の形態】
【００１０】
本発明の実施態様は、メモリへのＤＭＡ転送が許される仮想メモリ・マネージャを走らせるシステムにおいてデータ完全性を保証する方法を提供する。メモリ内のデータ・ブロックが第１場所から第２場所に移動されなければならないとき、ＤＭＡ転送は一時的場所へリダイレクトされる。そのデータ・ブロックは移動され、その後に、その移動中に一時的場所への書込みが行われたか否かを判定するチェックが行われる。もし肯定ならば、一時的場所に書き込まれたデータは第２場所に書き込まれ、一時的場所への書込みが行われたか否かを判定するために別のチェックが行われる。最も好ましいインプリメンテーションでは、一時的場所への書込みが行われる時をハードウェア・レジスタが追跡し、一時的場所から第２場所にデータがコピーされなければならないか否かをこのレジスタの状態から容易に判定することを可能にする。
【００１１】
図１を参照すると、コンピュータ・システム１００は、本発明の好ましい実施態様に従う装置の１つの適切なインプリメンテーションである。コンピュータ・システム１００は、ｅＳｅｒｖｅｒ  ｉＳｅｒｉｅｓ（ＩＢＭ社の登録商標）コンピュータ・システムである。しかし、コンピュータ・システムが複雑なマルチ・ユーザ計算装置であるか、シングル・ユーザ・ワークステーションであるか、或いは埋め込み制御システムであるかに関わらず、本発明のメカニズム及び装置がどのようなコンピュータ・システムにも同様に適用されることを当業者は認めるであろう。図１に示されているように、コンピュータ・システム１００はプロセッサ１１０と、メイン・メモリ１２０と、大容量記憶装置インターフェース１３０と、表示装置インターフェース１４０と、ネットワーク・インターフェース１５０とを含む。プロセッサ１１０は、プロセッサ・バス１６２を介してバス・コントローラ・チップセット１８０に結合されている。バス・コントローラ・チップセット１８０は、システム・バス１６４を介してメイン・メモリ１２０、大容量記憶装置インターフェース１３０、表示装置インターフェース１４０、及びネットワーク・インターフェース１５０に結合されている。大容量記憶装置インターフェース１３０は、ダイレクト・アクセス記憶装置１５５のような大容量記憶装置をコンピュータ・システム１００に接続するために使用される。１つの特定のタイプのダイレクト・アクセス記憶装置１５５は読み出し可能で書き換え可能なＣＤ  ＲＷドライブであり、それはＣＤ  ＲＷ１９５にデータを格納し、それからデータを読み出すことができる。他の１つの特定のタイプのダイレクト・アクセス記憶装置１５５はハード・ディスク・ドライブである。
【００１２】
好ましい実施態様に従うメイン・メモリ１２０は、データ１２１、オペレーティング・システム１２２、仮想メモリ・マネージャ１２３、及び画定されたメモリのブロック１２４，１２５及び１２６を含む。データ１２１は、コンピュータ・システム１００内のプログラムへの入力又は該プログラムからの出力として役立つ任意のデータを表す。オペレーティング・システム１２２は、当該産業においてｉ５／ＯＳとして知られているマルチタスキング・オペレーティング・システムであるが、本発明が１つのオペレーティング・システムに限定されないことを当業者は認めるであろう。メモリのブロック１２４−１２６は仮想メモリ・マネージャにより管理される。別々の論理パーティションのための別々の論理ドライブとして見えるように単一のハード・ディスク・ドライブが分割され得るので、仮想メモリ・マネージャは複数の論理パーティション間でのディスク・ドライブの共有を管理しなければならない。複数の論理パーティションの間でのハードウェア・リソースのこの共有は、しばしば、複数の記憶場所の間でデータをコピーする動作を必要とする。従って、仮想メモリ・マネージャ１２３は、定期的にメモリ１２０内の１つのブロックからメモリ内の他のブロックへデータを移動させることができる。メモリ・ブロック１２４−１２６は、仮想メモリ・マネージャ１２３により管理され得るメモリの任意のブロックとして示されている。
【００１３】
コンピュータ・システム１００は、コンピュータ・システム１００のプログラムがメイン・メモリ１２０及びＤＡＳＤ装置１５５のような複数の小さな記憶エンティティーへのアクセスの代わりに大きな単一の記憶エンティティーへのアクセスを有するに過ぎないかのように振舞うことを可能にする良く知られた仮想アドレス指定メカニズムを利用する。従って、データ１２１、オペレーティング・システム１２２、及び仮想メモリ管理メカニズム１２３はメイン・メモリ１２０に存在するように示されているけれども、これらのアイテムが必ずしも全て完全にメイン・メモリ１２０に同時には含まれないことを認めるであろう。“メモリ”という用語が本書においてコンピュータ・システム１００の仮想メモリ全体を包括的に指すために使用されており、またコンピュータ・システム１００に結合された他のコンピュータ・システムの仮想メモリを含み得るということにも留意するべきである。
【００１４】
プロセッサ１１０は、１つ以上のマイクロプロセッサ又は集積回路或いはその両方から構成され得る。プロセッサ１１０は、メイン・メモリ１２０に格納されているプログラム命令を実行する。メイン・メモリ１２０は、プロセッサ１１０がアクセスすることのできるプログラム及びデータを記憶する。コンピュータ・システム１００がスタート・アップするとき、プロセッサ１１０は、始めに、オペレーティング・システム１２２を構成するプログラム命令を実行する。オペレーティング・システム１２２は、コンピュータ・システム１００のリソースを管理する精巧なプログラムである。それらのリソースのうちの幾つかは、プロセッサ１１０、メイン・メモリ１２０、大容量記憶装置インターフェース１３０、表示装置インターフェース１４０、ネットワーク・インターフェース１５０、及びシステム・バス１６０である。
【００１５】
コンピュータ・システム１００は単一のプロセッサと単一のシステム・バスとを含むように示されているけれども、複数のプロセッサ又は複数のバス或いはその両方を有するコンピュータ・システムを用いて本発明を実施し得ることを当業者は認めるであろう。更に、好ましい実施態様において使用されるインターフェースは、夫々、プロセッサ１１０から計算集約的処理をオフロードするために使われる別々の、完全にプログラムされたマイクロプロセッサを含む。しかし、同様の機能を実行するために単にＩ／Ｏアダプタを使用するコンピュータ・システムにも本発明が同様に適用されることを当業者は認めるであろう。
【００１６】
表示装置インターフェース１４０は、１つ以上の表示装置１６５をコンピュータ・システム１００に直接接続するために使用される。これらの表示装置１６５は、非インテリジェントな（すなわち、情報処理能力を持たない）端末装置或いはフォリー・プログラマブルな（ｆｏｌｌｙ  ｐｒｏｇｒａｍｍａｂｌｅ）ワークステーションであって良くて、システム管理者及びユーザがコンピュータ・システム１００と情報などを交換することを可能にするために使用される。しかし、１つ以上の表示装置１６５との情報交換をサポートするために表示装置インターフェース１４０が設けられているけれども、ユーザ及び他のプロセスとの全ての所要の相互作用はネットワーク・インターフェース１５０を介して行われ得るのでコンピュータ・システム１００は必ずしも表示装置１６５を必要としないということに留意しなければならない。
【００１７】
ネットワーク・インターフェース１５０は、他のコンピュータ・システム又はワークステーション（例えば、図１の１７５）或いはその両方をネットワーク１７０を介してコンピュータ・システム１００に接続するために使われる。ネットワーク接続１７０が今日のアナログ技術又はデジタル技術或いはその両方を用いてなされるか、それとも将来の何らかのネットワーク構築メカニズムを介してなされるかに関わらず、コンピュータ・システム１００が他のコンピュータ・システム又はワークステーション或いはその両方にどの様に接続されるとしても、本発明は同様に適用される。更に、ネットワークを実現するために多様なネットワーク・プロトコルが使用され得る。それらのプロトコルは、コンピュータがネットワーク１７０を介して通信することを可能にする専用コンピュータ・プログラムである。ＴＣＰ／ＩＰ（伝送制御プロトコル／インターネット・プロトコル）は、適切なネットワーク・プロトコルの例である。
【００１８】
バス・コントローラ・チップセット１８０は、限定無しにＰＣＩ、ＰＣＩ−Ｘ及びＰＣＩ  Ｅｘｐｒｅｓｓを含む任意の適切なバスの機能を制御することができる。これらのバスは、ＤＭＡ転送をどの様に処理するかという点において異なるということに留意されたい。ＰＣＩバス又はＰＣＩ−Ｘバスの場合には、ＤＭＡ転送を実行したい装置は、待つように命令され得る。しかし、ＰＣＩ  Ｅｘｐｒｅｓｓバスの場合には、装置に待つように命令する方法は無い。従って、もし仮想メモリ・マネージャが第１ブロックから第２ブロックへのデータの移動を行っているならば、ＤＭＡコントローラは第１ブロックのその部分が既に移動された後にデータを第１ブロックに書き込むことができて、第２ブロック内に間違ったデータが存在するという結果をもたらすデータ・コヒーレンシー問題を引き起こす。なぜならば、ＤＭＡコントローラによって転送されるデータは第２ブロックの代わりに第１ブロックに書き込まれるからである。
【００１９】
バス・コントローラ・チップセット１８０は、装置がプロセッサ介入無しにデータを直接転送することを可能にするＤＭＡコントローラ１８２を含む。ＤＭＡコントローラ１８２は、仮想アドレスについてメモリ内の対応する物理アドレスへの変換を提供する変換テーブル１８４を含む。ＤＭＡコントローラ１８２は、改変記録レジスタ（ＭＲＲ）１８６も含む。ＭＲＲ１８６は多くのビットを有し、その各ビットは、メモリの画定されたブロックに対応する。もしＤＭＡコントローラがＭＲＲにより追跡されているメモリのブロックに書き込めば、ＭＲＲ内の対応するビットは１にセットされて、そのメモリ・ブロックに対して変更が加えられたことを示す。ＭＲＲレジスタ１８６の形でのこのハードウェア・サポートは、以下で図３及び４を参照してより詳しく説明される。
【００２０】
バス・コントローラ・チップセット１８０は図１においてプロセッサ１１０とは別に示されている。しかし、好ましい実施態様は、バス・コントローラ機能がプロセッサ自体に統合されているインプリメンテーションにも明確に及ぶ。
【００２１】
ここで、本発明は完全に機能し得るコンピュータ・システムの文脈でこれまで記載され、そして記載続けるであろうけれども、本発明はプログラム製品として多様な形で頒布され得るということ、また実際に頒布を行うために使用されるコンピュータ可読信号担持媒体の具体的なタイプに関わらずに同様に適用されるということを当業者は認めるであろうということに留意することは重要である。適切なコンピュータ可読信号担持媒体の例は、フロッピー(登録商標）・ディスク及びＣＤ  ＲＷ（例えば、図１の１９５）のような記録可能なタイプの媒体、及びデジタル及びアナログの通信リンクのような伝送タイプの媒体を含む。好ましい信号担持媒体は有形であることに留意されたい。
【００２２】
図２を参照すると、好ましい実施態様に従う方法２００はブロックＡ  １２４内のデータがブロックＢ  １２５に書き込まれなければならないときに図１の仮想メモリ・マネージャ１２３により実行される。始めに、ブロックＣ  １２６と称する一時的場所が画定される（ステップ２１０）。仮想メモリ・マネージャ１２３は、通常ならばブロックＡに書き込まれる将来のＤＭＡ書込みが代わりにブロックＣに書き込まれることになるようにＤＭＡ変換テーブル１８４に書き込む（ステップ２２０）。仮想メモリ・マネージャは、その後、データをブロックＡからブロックＢに移動する（ステップ２３０）。ＤＭＡ転送は仮想メモリ・マネージャ１２３を実行しているプロセッサ１１０とは非同期であるから、ステップ２３０におけるブロックＡからブロックＢへのデータの移動の間にＤＭＡ転送が行われる可能性がある。それ故に、方法２００はＤＭＡ書込みがこの移動中に行われたか否かを判定しなければならない。それは、ブロックＣにデータが書き込まれたか否かを判定することにより行われ得る（ステップ２４０）。否定ならば（ステップ２４０＝いいえ）、ブロックＣへのＤＭＡ転送は行われなかったことが分かり、方法２００は終了する。もしデータがブロックＣに書き込まれたならば（ステップ２４０＝はい）、ブロックＣ内の新しいデータはブロックＢに移される（ステップ２５０）。その後、ブロックＢへの書込みがまだ行われていないブロックＣへの別の書込みが行われたか否かを調べる（ステップ２４０）ために方法２００はステップ２４０にループ・バックする。このプロセスは、ブロックＢへの書込みが行われていないブロックＣへの書込みが無くなる（ステップ２４０＝いいえ）まで続く。新しい一時的ブロックＣを画定することにより、方法２００は、メモリ内のデータのブロックが移動されるのと同時にＤＭＡ転送が行われることを可能にする。
【００２３】
図２のステップ２４０でブロックＣに書込みが行われたか否かを判定する１つの方法は、ブロックＣ内の各場所をゼロのような何らかの初期値に初期化し、ブロックＡからブロックＢへのデータの移動の後にブロックＣを読み取ってブロックＣ内のどの場所がゼロでないか調べることである。この解決策はソフトウェアによる解決策であり、有効ではあるが割合に低速である。性能を改善するために、ＤＭＡコントローラ１８２によりデータがブロックＣに書き込まれたときを示すハードウェア・レジスタが画定され得る。このレジスタは本書では改変記録レジスタ（ＭＲＲ）１８６と称され、図３にいっそう詳しく示されている。ＭＲＲは複数のビットを含み、各ビットはメモリの画定されたブロックに対応する。図３から、ＭＲＲのビット０はメモリ・ブロック０に対応し、ＭＲＲのビット１はメモリ・ブロック１に対応し、以降はメモリ・ブロックＮに対応する最後のビットに至るまで同様であることが分かる。ＭＲＲは最初に全てゼロにクリアされる。ＭＲＲ内に対応するビットを有するメモリ・ブロックのうちの１つに対してＤＭＡコントローラによる書込みが行われたとき、対応するビットは１にセットされて、そのブロック内の何かがＤＭＡコントローラによって改変されたことを示す。ＭＲＲビットに対応するメモリ・ブロックが任意の適切な粒状度を持ち得ることに留意されたい。ＩＢＭにより開発されたｉＳｅｒｉｅｓ（商標）コンピュータ・システムのための１つのインプリメンテーション例では、各メモリ・セグメントは１ページ、或いは４ｋバイトである。各ページへの書き込みはキャッシュ・ライン単位で行われ、それは１２８バイトである。ページ内のキャッシュ・ラインのいずれかがＤＭＡコントローラによって改変されると、そのページに対応するビットは１にセットされる。図２のステップ２３０でデータがブロックＡからブロックＢに移された後、ＭＲＲをスキャンしてどのビットが１にセットされているかを判定することができる。最も好ましいインプリメンテーションでは、ＭＲＲは一度に１ビットずつスキャンされる。１に遭遇したならば、対応するデータ・ブロックがブロックＢに書き込まれ、その後にそのビットは０にクリアされる。これは、ＭＲＲ内の全ての１のビットに対応するデータがブロックＢにコピーされ終わるまで、一度に１ビットずつ、連続的に行われる。ＭＲＲをクリアするプロセスの間にＤＭＡ転送が行われ得、それは、既にスキャンされた１のビットをセットし得るということに留意されたい。それ故に、ＭＲＲ内の全ての１のビットがクリアされた後、ＭＲＲの処理中にＤＭＡ転送が行われなかったことを確かめるためにＭＲＲは再びスキャンされる。いずれかのビットが１ならば、対応するデータ・ブロックがブロックＢに書き込まれる。ＭＲＲが全部０で、ＭＲＲが最後にチェックされてからＤＭＡ転送が行われていないことを示すまで、このプロセスが反復する。この様にして、好ましい実施態様は、ＤＭＡアクセスが可能にされている状態で仮想メモリ・マネージャを走らせるときにデータ・コヒーレンシーを保証する。
【００２４】
図４を参照すると、方法２４０は、図３に示されているＭＲＲ１８６を用いるときの図２のステップ２４０のための１つの適切なインプリメンテーションを表す。ブロックＣへの各書込みについて、書き込まれた場所に対応するＭＲＲビットに１が書き込まれる（ステップ４１０）。ＭＲＲが全部０であれば（ステップ４２０＝はい）、ＤＭＡコントローラによるブロックＣへの書き込みはなかったので、Ｃへの書き込みは偽にセットされる（ステップ４３０）。ＭＲＲが全部０ではなければ（ステップ４２０＝いいえ）、ＤＭＡコントローラによるブロックＣへの書込みがあったので、Ｃへの書き込みは真にセットされる（ステップ４４０）。その後、方法２４０は終了する。ＭＲＲ１８６は、仮想メモリ・マネージャによるブロックＡからブロックＢへのデータの移動の間にＤＭＡコントローラがブロックＣへの書き込みを行ったか否かを判定する迅速で効率的な方法を提供する。図１を再び参照すると、ＤＭＡコントローラ１８２内のハードウェアは、変換テーブル１８４におけるアドレスの変更を可能にする前にＭＲＲ１８６が全部０であることを強制する。
【００２５】
好ましい実施態様は、仮想メモリ・マネージャがメモリ内のデータのブロックを、そのデータがＤＭＡ転送により壊されることを心配せずに、移す方法を提供する。一時的ブロックが画定され、将来の書込みがその一時的ブロックに対して行われるようにＤＭＡコントローラ内の変換テーブルが変更される。その後、メモリ内のデータが移動され、その後に、その移動中にＤＭＡコントローラがその一時的ブロックに書き込んだか否かを確かめるためにチェックが行われる。書き込みが行われたのであれば、一時的ブロックに書き込まれたデータも移動されて、ＤＭＡコントローラが一時的ブロックに書き込みを行わなくなるまでこのプロセスが続く。この様にして、ＤＭＡアクセスが可能にされている状態で仮想メモリ・マネージャを走らせるシステムにおいてデータ・コヒーレンシーが反映・保証される。
【００２６】
本発明の範囲内で多くのバリエーションが可能であることを当業者は認めるであろう。本発明は好ましい実施態様に関連して特に図示され記述されたけれども、本発明の範囲から逸脱せずに形及び細部に関するこれらの及び他の変更がなされ得ることが当業者に理解されるであろう。
【図面の簡単な説明】
【００２７】
【図１】好ましい実施態様に従う装置のブロック図である。
【図２】好ましい実施態様に従う方法の流れ図である。
【図３】好ましい実施態様に従う改変記録レジスタ（ＭＲＲ）及び対応するメモリ・ブロックのブロック図である。
【図４】好ましい実施態様に従って図３に示されているＭＲＲを使用する図２のステップ２４０についての１つの特定のインプリメンテーションのための方法の流れ図である。
【図１】
2009512004.tif 000003
【図２】
2009512004.tif 000004
【図３】
2009512004.tif 000005
【図４】
2009512004.tif 000006
【手続補正書】
【提出日】平成21年1月21日(2009.1.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
仮想メモリ環境においてＤＭＡリクエストを処理するための装置であって、
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに結合されたダイレクト・メモリ・アクセス（ＤＭＡ）コントローラと、
前記ＤＭＡコントローラ及び前記少なくとも１つのプロセッサに結合されたメモリと、
前記メモリ内に存在して前記少なくとも１つのプロセッサにより実行される仮想メモリ・マネージャとを含み、
前記仮想メモリ・マネージャは、前記メモリ内に一時的ブロックを作り、前記ＤＭＡコントローラによる将来の書込みが前記一時的ブロックに書き込まれるように前記ＤＭＡコントローラ内のアドレス変換テーブルを変更し、データを前記メモリ内の第１ブロックから第２ブロックに移動し、前記第１ブロックから前記第２ブロックへの前記データ移動の後に、前記ＤＭＡコントローラによる前記一時的ブロックへの書込みが前記仮想メモリ・マネージャによる前記第１ブロックから前記第２ブロックへの前記データ移動の間に行われたか否かを判定し、もし前記判定が肯定ならば、前記第１ブロックから前記第２ブロックへの前記データ移動中に前記ＤＭＡコントローラによって一時的場所に書き込まれたデータを前記一時的場所から前記第２ブロックに書き込む、
前記装置。
【請求項２】
前記装置は複数のビットを含むハードウェア・レジスタを更に含んでおり、各ビットは前記メモリの画定されたブロックに対応し、各ビットの値は、そのビットに対応する前記画定されたブロックに前記ＤＭＡコントローラがデータを書き込んだならば１であり、そのビットに対応する前記画定されたブロックに前記ＤＭＡコントローラがデータを書き込まなかったならば０である、請求項１の装置。
【請求項３】
前記ハードウェア・レジスタは改変記録レジスタを含む、請求項２の装置。
【請求項４】
前記ハードウェア・レジスタは前記ＤＭＡコントローラ内に存在する、請求項２の装置。
【請求項５】
前記ハードウェア・レジスタの１である各ビットは、メモリの対応するブロックの中のデータが前記第２ブロックに書き込まれたときに０に変更される、請求項２の装置。
【請求項６】
メモリの第１ブロックから第２ブロックにデータを移動する、コンピュータにより実行される方法であって、
（Ａ）前記メモリ内に一時的ブロックを作るステップと、
（Ｂ）ＤＭＡコントローラ内のアドレス変換テーブルを、前記ＤＭＡコントローラによる将来の書込みが前記一時的ブロックに書き込まれるように、変更するステップと、
（Ｃ）データを前記メモリ内の第１ブロックから第２ブロックに移動するステップと、
（Ｄ）ステップ（Ｃ）における前記データ移動の後に、前記ＤＭＡコントローラによる前記一時的ブロックへの書込みがステップ（Ｃ）における前記データ移動の間に行われたか否かを判定するステップと、
（Ｅ）前記ＤＭＡコントローラによる前記一時的ブロックへの書込みがステップ（Ｃ）における前記データ移動の間に行われたならば、ステップ（Ｃ）における前記データ移動の間に前記ＤＭＡコントローラによって書き込まれた前記データを一時的場所から前記第２ブロックに書き込むステップと、
を含む、方法。
【請求項７】
（Ｆ）前記ステップ（Ｅ）における前記データの前記書き込みの間に前記ＤＭＡコントローラにより前記一時的ブロックへの書込みが行われたならば、前記ステップ（Ｅ）における前記データの前記書き込みの間に前記ＤＭＡコントローラにより書き込まれた前記データを前記一時的場所から前記第２ブロックに書きこむステップを更に含む、請求項６の方法。
【請求項８】
（Ｇ）前記ステップ（Ｆ）における前記データの前記書き込みの間に前記ＤＭＡコントローラが前記一時的場所にデータを書き込まなくなるまで前記ステップ（Ｆ）を反復するステップを更に含む、請求項７の方法。
【請求項９】
前記ステップ（Ｄ）は、前記ＤＭＡコントローラによる前記一時的ブロックの変更を反映するハードウェア・レジスタの状態を調べることによって実行される、請求項８の方法。
【請求項１０】
前記ハードウェア・レジスタは複数のビットを含み、各ビットは前記メモリの画定されたブロックに対応し、各ビットの値は、そのビットに対応する前記画定されたブロックに前記ＤＭＡコントローラがデータを書き込んだならば１であり、そのビットに対応する前記画定されたブロックに前記ＤＭＡコントローラがデータを書き込まなかったならば０である、請求項９の方法。
【請求項１１】
前記ハードウェア・レジスタの１である各ビットは、メモリの対応するブロックの中のデータが前記第２ブロックに書き込まれたときに０に変更される、請求項１０の方法。
【請求項１２】
仮想メモリ・マネージャ機能を提供するようにデータ処理装置の動作を制御するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、前記仮想メモリ・マネージャをして、
メモリ内に一時的ブロックを作り、
ＤＭＡコントローラによる将来の書込みが前記一時的ブロックに書き込まれるように前記ＤＭＡコントローラ内のアドレス変換テーブルを変更し、
データを前記メモリ内の第１ブロックから第２ブロックに移動し、
前記第１ブロックから前記第２ブロックへの前記データ移動の後に、前記ＤＭＡコントローラによる前記一時的ブロックへの書込みが前記仮想メモリ・マネージャによる前記第１ブロックから前記第２ブロックへの前記データ移動の間に行われたか否かを判定し、
もし前記判定が肯定ならば、前記第１ブロックから前記第２ブロックへの前記データ移動中に前記ＤＭＡコントローラによって一時的場所に書き込まれたデータを前記一時的場所から前記第２ブロックに書き込む、
前記コンピュータ・プログラム。
【請求項１３】
前記仮想メモリ・マネージャが、前記第１ブロックから前記第２ブロックへの前記データ移動の後に、ハードウェア・レジスタを読むことによって、前記仮想メモリ・マネージャによる前記第１ブロックから前記第２ブロックへの前記データ移動の間に前記ＤＭＡコントローラによる前記一時的ブロックへの書込みが行われたか否かを判定し、前記ハードウェア・レジスタは複数のビットを含み、各ビットは前記メモリ内のデータの画定されたブロックに対応し、各ビットの値は、そのビットに対応する前記画定されたブロックに前記ＤＭＡコントローラがデータを書き込んだならば１であり、そのビットに対応する前記画定されたブロックに前記ＤＭＡコントローラがデータを書き込まなかったならば０であるるように動作させる、請求項１２のコンピュータ・プログラム。
【請求項１４】
前記ハードウェア・レジスタは改変記録レジスタを含む、請求項１２のコンピュータ・プログラム。
【請求項１５】
前記ハードウェア・レジスタの１である各ビットは、メモリの対応するブロックの中のデータが前記第２ブロックに書き込まれたときに０に変更される、請求項１２のコンピュータ・プログラム。
【国際調査報告】
2009512004.tif 000007
2009512004.tif 000008