JP2009512004A - 仮想メモリ環境においてdmaリクエストを処理するための装置、方法、及び、コンピュータ・プログラム - Google Patents

仮想メモリ環境においてdmaリクエストを処理するための装置、方法、及び、コンピュータ・プログラム Download PDF

Info

Publication number
JP2009512004A
JP2009512004A JP2008534001A JP2008534001A JP2009512004A JP 2009512004 A JP2009512004 A JP 2009512004A JP 2008534001 A JP2008534001 A JP 2008534001A JP 2008534001 A JP2008534001 A JP 2008534001A JP 2009512004 A JP2009512004 A JP 2009512004A
Authority
JP
Japan
Prior art keywords
block
data
dma controller
written
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008534001A
Other languages
English (en)
Other versions
JP4629779B2 (ja
JP2009512004A5 (ja
Inventor
バートレイ、ジェラルド、キース
ボーケンヘイゲン、ジョン、マイケル
ホービス、ウィリアム、ポール
コルツ、ダニエル、ポール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2009512004A publication Critical patent/JP2009512004A/ja
Publication of JP2009512004A5 publication Critical patent/JP2009512004A5/ja
Application granted granted Critical
Publication of JP4629779B2 publication Critical patent/JP4629779B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)

Abstract

【課題】メモリにおいて第1ブロック(A)から第2ブロック(B)へデータを移動する仮想メモリ・マネージャを含む装置を提供する。
【解決手段】仮想メモリ・マネージャがデータを第1ブロックから第2ブロックへ何時でも転送できるとき、メモリの第3の一時的ブロック(C)が画定される。DMAコントローラ内の変換テーブルは、第1ブロックを目標とするDMA転送を一時的ブロックを目標とするように向けるために変更される。仮想メモリ・マネージャは、その後、データを第1ブロックから第2ブロックに転送する。転送が完了したとき、第1ブロックからのデータが第2ブロックに書き込まれていた間にDMAがデータを一時的ブロックに転送したか否かが判定される。肯定であれば、一時的ブロックに書き込まれたデータは第2ブロックに書き込まれる。一時的ブロックに対する変更を効率よく検出するためにハードウェア・レジスタが好ましくは使用される。
【選択図】図1

Description

本発明は、コンピュータ・システムに関し、特に仮想メモリ環境を提供するコンピュータ・システムにおけるダイレクト・メモリ・アクセス(DMA)リクエストの処理に関する。
多くのコンピュータ・システムは仮想メモリ環境を有し、その環境では仮想アドレスがメモリ内の物理アドレスにマッピングされる。1つの特定のタイプの仮想メモリ環境は、単一のプラットフォーム上に複数の論理パーティションを画定し、これにより各論理パーティションがクライアントの観点からは独立のユニークなコンピュータ・システムであるように見えることを可能にする。論理的に分割されたコンピュータ・システムにおいては、ハード・ディスク・ドライブのようなI/O装置がメモリに書き込みを行う必要がしばしばある。ハード・ディスク・ドライブとメモリとの間のその様な転送は、しばしば、バス・チップセット内のダイレクト・メモリ・アクセス(DMA)コントローラを介して行われる。DMA転送はプロセッサ・イベントとは非同期に行われるので、その様なDMA転送はコヒーレンシー問題を引き起こす可能性を有する。例えば、仮想メモリ・マネージャがメモリにおいてデータをブロックAからブロックBに移動することを決定したと仮定すると、従来技術では、ブロックAからブロックBへの移動が完了する前にDMAコントローラがブロックAに書き込むことがあり得る。
もしブロックAへの書込みが既にブロックBにコピーされた場所に行われたならば、ブロックBは今はステイル・データ(stale data)を持っているのであり、それはバス又はシステムのクラッシュをもたらし得る。DMAコントローラ及び仮想メモリ・システムを含むコンピュータ・システムにおいてデータ・コヒーレンシーを保証する方法が無ければ、コンピュータ産業はデータ・コヒーレンシー問題に起因する潜在的クラッシュ及びその他の問題に悩み続けるであろう。
本発明の第1の側面は、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに結合されたダイレクト・メモリ・アクセス(DMA)コントローラと、DMAコントローラ及び少なくとも1つのプロセッサに結合されたメモリと、メモリ内に存在して少なくとも1つのプロセッサにより実行される仮想メモリ・マネージャとを含む装置を提供する。仮想メモリ・マネージャは、メモリ内に一時的ブロックを作り、DMAコントローラによる将来の書込みが一時的ブロックに書き込まれるようにDMAコントローラ内のアドレス変換テーブルを変更し、データをメモリ内の第1ブロックから第2ブロックに移動し、第1ブロックから第2ブロックへのデータ移動の後に、DMAコントローラによる一時的ブロックへの書込みが仮想メモリ・マネージャによる第1ブロックから第2ブロックへのデータ移動の間に行われたか否かを判定する。この判定が肯定ならば、仮想メモリ・マネージャは、データ移動中にDMAコントローラによって一時的場所に書き込まれたデータを一時的場所から第2ブロックに書き込む。
本発明の第2の側面はメモリにおいて第1ブロックから第2ブロックにデータを移動する方法を提供し、この方法は、
(A)メモリ内に一時的ブロックを作るステップと、
(B)DMAコントローラ内のアドレス変換テーブルを、DMAコントローラによる将来の書込みが一時的ブロックに書き込まれるように、変更するステップと、
(C)データをメモリ内の第1ブロックから第2ブロックに移動するステップと、
(D)ステップ(C)におけるデータの移動の後に、DMAコントローラによる一時的ブロックへの書込みがステップ(C)におけるデータの移動の間に行われたか否かを判定するステップと、
(E)DMAコントローラによる一時的ブロックへの書込みがステップ(C)におけるデータの移動の間に行われたならば、ステップ(C)におけるデータの移動の間にDMAコントローラによって書き込まれたデータを一時的場所から第2ブロックに書き込むステップと、
を含む。
好ましい実施態様によれば、装置は、メモリにおいて第1ブロックから第2ブロックへデータを移動する仮想メモリ・マネージャを含む。仮想メモリ・マネージャがデータを第1ブロックから第2ブロックへ何時でも転送できるとき、一時的ブロックであるメモリの第3ブロックが画定される。DMAコントローラ内の変換テーブルは、DMA転送を第3ブロックに向けるように変更される。仮想メモリ・マネージャは、その後、データを第1ブロックから第2ブロックに転送する。転送が完了したとき、第1ブロックからのデータが第2ブロックに書き込まれていた間にDMAがデータを一時的ブロックに転送したか否かが判定される。肯定であれば、一時的ブロックに書き込まれたデータは第2ブロックに書き込まれる。一時的ブロックに対する変更を効率よく検出するために1つのハードウェアである改変記録レジスタ(MRR)が好ましくは使用される。MRRは複数のビットを含み、各ビットはメモリの画定されたブロックに対応し、各ビットの値は、もしそのビットに対応する画定されたブロックにDMAコントローラがデータを書き込んだならば1であり、そのビットに対応する画定されたブロックにDMAコントローラがデータを書き込まなかったならば0である。もしMRRが0でなければ、MRRは一度に1ビットずつ調べられて該レジスタ内の1のビットに対応するメモリ・ブロックを一時的ブロックから第2ブロックに書き込み、それらのメモリ・ブロックが第2ブロックに書き込まれた後に1のビットを0にクリアする。全てのビットがクリアされたならば(全ての対応するメモリ・ブロックが第2ブロックに書き込まれたことを意味する)、前のパスでMRRをクリアしている間に付加的なDMA転送が行われなかったことを確かめるためにMRRのチェックがもう一度行われる。全てのMRRビットが0になって、MRRの最後のチェックの後にDMA転送が行われなかったことを示すまで、このプロセスは続行される。
本発明の他の側面は、上記方法を実行するようにデータ処理装置を制御するためのプログラム・コード命令のセットを含むコンピュータ・プログラムを含む。
本発明の上記の及び他の特徴及び利点は、添付図面に示されている本発明の好ましい実施態様についての以下の詳細な記述から明らかになるであろう。
添付図面を参照して、本発明の実施態様が例として以下でより詳しく記述される。添付図面では、同様の名称は同様の要素を示す。
本発明の実施態様は、メモリへのDMA転送が許される仮想メモリ・マネージャを走らせるシステムにおいてデータ完全性を保証する方法を提供する。メモリ内のデータ・ブロックが第1場所から第2場所に移動されなければならないとき、DMA転送は一時的場所へリダイレクトされる。そのデータ・ブロックは移動され、その後に、その移動中に一時的場所への書込みが行われたか否かを判定するチェックが行われる。もし肯定ならば、一時的場所に書き込まれたデータは第2場所に書き込まれ、一時的場所への書込みが行われたか否かを判定するために別のチェックが行われる。最も好ましいインプリメンテーションでは、一時的場所への書込みが行われる時をハードウェア・レジスタが追跡し、一時的場所から第2場所にデータがコピーされなければならないか否かをこのレジスタの状態から容易に判定することを可能にする。
図1を参照すると、コンピュータ・システム100は、本発明の好ましい実施態様に従う装置の1つの適切なインプリメンテーションである。コンピュータ・システム100は、eServer iSeries(IBM社の登録商標)コンピュータ・システムである。しかし、コンピュータ・システムが複雑なマルチ・ユーザ計算装置であるか、シングル・ユーザ・ワークステーションであるか、或いは埋め込み制御システムであるかに関わらず、本発明のメカニズム及び装置がどのようなコンピュータ・システムにも同様に適用されることを当業者は認めるであろう。図1に示されているように、コンピュータ・システム100はプロセッサ110と、メイン・メモリ120と、大容量記憶装置インターフェース130と、表示装置インターフェース140と、ネットワーク・インターフェース150とを含む。プロセッサ110は、プロセッサ・バス162を介してバス・コントローラ・チップセット180に結合されている。バス・コントローラ・チップセット180は、システム・バス164を介してメイン・メモリ120、大容量記憶装置インターフェース130、表示装置インターフェース140、及びネットワーク・インターフェース150に結合されている。大容量記憶装置インターフェース130は、ダイレクト・アクセス記憶装置155のような大容量記憶装置をコンピュータ・システム100に接続するために使用される。1つの特定のタイプのダイレクト・アクセス記憶装置155は読み出し可能で書き換え可能なCD RWドライブであり、それはCD RW195にデータを格納し、それからデータを読み出すことができる。他の1つの特定のタイプのダイレクト・アクセス記憶装置155はハード・ディスク・ドライブである。
好ましい実施態様に従うメイン・メモリ120は、データ121、オペレーティング・システム122、仮想メモリ・マネージャ123、及び画定されたメモリのブロック124,125及び126を含む。データ121は、コンピュータ・システム100内のプログラムへの入力又は該プログラムからの出力として役立つ任意のデータを表す。オペレーティング・システム122は、当該産業においてi5/OSとして知られているマルチタスキング・オペレーティング・システムであるが、本発明が1つのオペレーティング・システムに限定されないことを当業者は認めるであろう。メモリのブロック124−126は仮想メモリ・マネージャにより管理される。別々の論理パーティションのための別々の論理ドライブとして見えるように単一のハード・ディスク・ドライブが分割され得るので、仮想メモリ・マネージャは複数の論理パーティション間でのディスク・ドライブの共有を管理しなければならない。複数の論理パーティションの間でのハードウェア・リソースのこの共有は、しばしば、複数の記憶場所の間でデータをコピーする動作を必要とする。従って、仮想メモリ・マネージャ123は、定期的にメモリ120内の1つのブロックからメモリ内の他のブロックへデータを移動させることができる。メモリ・ブロック124−126は、仮想メモリ・マネージャ123により管理され得るメモリの任意のブロックとして示されている。
コンピュータ・システム100は、コンピュータ・システム100のプログラムがメイン・メモリ120及びDASD装置155のような複数の小さな記憶エンティティーへのアクセスの代わりに大きな単一の記憶エンティティーへのアクセスを有するに過ぎないかのように振舞うことを可能にする良く知られた仮想アドレス指定メカニズムを利用する。従って、データ121、オペレーティング・システム122、及び仮想メモリ管理メカニズム123はメイン・メモリ120に存在するように示されているけれども、これらのアイテムが必ずしも全て完全にメイン・メモリ120に同時には含まれないことを認めるであろう。“メモリ”という用語が本書においてコンピュータ・システム100の仮想メモリ全体を包括的に指すために使用されており、またコンピュータ・システム100に結合された他のコンピュータ・システムの仮想メモリを含み得るということにも留意するべきである。
プロセッサ110は、1つ以上のマイクロプロセッサ又は集積回路或いはその両方から構成され得る。プロセッサ110は、メイン・メモリ120に格納されているプログラム命令を実行する。メイン・メモリ120は、プロセッサ110がアクセスすることのできるプログラム及びデータを記憶する。コンピュータ・システム100がスタート・アップするとき、プロセッサ110は、始めに、オペレーティング・システム122を構成するプログラム命令を実行する。オペレーティング・システム122は、コンピュータ・システム100のリソースを管理する精巧なプログラムである。それらのリソースのうちの幾つかは、プロセッサ110、メイン・メモリ120、大容量記憶装置インターフェース130、表示装置インターフェース140、ネットワーク・インターフェース150、及びシステム・バス160である。
コンピュータ・システム100は単一のプロセッサと単一のシステム・バスとを含むように示されているけれども、複数のプロセッサ又は複数のバス或いはその両方を有するコンピュータ・システムを用いて本発明を実施し得ることを当業者は認めるであろう。更に、好ましい実施態様において使用されるインターフェースは、夫々、プロセッサ110から計算集約的処理をオフロードするために使われる別々の、完全にプログラムされたマイクロプロセッサを含む。しかし、同様の機能を実行するために単にI/Oアダプタを使用するコンピュータ・システムにも本発明が同様に適用されることを当業者は認めるであろう。
表示装置インターフェース140は、1つ以上の表示装置165をコンピュータ・システム100に直接接続するために使用される。これらの表示装置165は、非インテリジェントな(すなわち、情報処理能力を持たない)端末装置或いはフォリー・プログラマブルな(folly programmable)ワークステーションであって良くて、システム管理者及びユーザがコンピュータ・システム100と情報などを交換することを可能にするために使用される。しかし、1つ以上の表示装置165との情報交換をサポートするために表示装置インターフェース140が設けられているけれども、ユーザ及び他のプロセスとの全ての所要の相互作用はネットワーク・インターフェース150を介して行われ得るのでコンピュータ・システム100は必ずしも表示装置165を必要としないということに留意しなければならない。
ネットワーク・インターフェース150は、他のコンピュータ・システム又はワークステーション(例えば、図1の175)或いはその両方をネットワーク170を介してコンピュータ・システム100に接続するために使われる。ネットワーク接続170が今日のアナログ技術又はデジタル技術或いはその両方を用いてなされるか、それとも将来の何らかのネットワーク構築メカニズムを介してなされるかに関わらず、コンピュータ・システム100が他のコンピュータ・システム又はワークステーション或いはその両方にどの様に接続されるとしても、本発明は同様に適用される。更に、ネットワークを実現するために多様なネットワーク・プロトコルが使用され得る。それらのプロトコルは、コンピュータがネットワーク170を介して通信することを可能にする専用コンピュータ・プログラムである。TCP/IP(伝送制御プロトコル/インターネット・プロトコル)は、適切なネットワーク・プロトコルの例である。
バス・コントローラ・チップセット180は、限定無しにPCI、PCI−X及びPCI Expressを含む任意の適切なバスの機能を制御することができる。これらのバスは、DMA転送をどの様に処理するかという点において異なるということに留意されたい。PCIバス又はPCI−Xバスの場合には、DMA転送を実行したい装置は、待つように命令され得る。しかし、PCI Expressバスの場合には、装置に待つように命令する方法は無い。従って、もし仮想メモリ・マネージャが第1ブロックから第2ブロックへのデータの移動を行っているならば、DMAコントローラは第1ブロックのその部分が既に移動された後にデータを第1ブロックに書き込むことができて、第2ブロック内に間違ったデータが存在するという結果をもたらすデータ・コヒーレンシー問題を引き起こす。なぜならば、DMAコントローラによって転送されるデータは第2ブロックの代わりに第1ブロックに書き込まれるからである。
バス・コントローラ・チップセット180は、装置がプロセッサ介入無しにデータを直接転送することを可能にするDMAコントローラ182を含む。DMAコントローラ182は、仮想アドレスについてメモリ内の対応する物理アドレスへの変換を提供する変換テーブル184を含む。DMAコントローラ182は、改変記録レジスタ(MRR)186も含む。MRR186は多くのビットを有し、その各ビットは、メモリの画定されたブロックに対応する。もしDMAコントローラがMRRにより追跡されているメモリのブロックに書き込めば、MRR内の対応するビットは1にセットされて、そのメモリ・ブロックに対して変更が加えられたことを示す。MRRレジスタ186の形でのこのハードウェア・サポートは、以下で図3及び4を参照してより詳しく説明される。
バス・コントローラ・チップセット180は図1においてプロセッサ110とは別に示されている。しかし、好ましい実施態様は、バス・コントローラ機能がプロセッサ自体に統合されているインプリメンテーションにも明確に及ぶ。
ここで、本発明は完全に機能し得るコンピュータ・システムの文脈でこれまで記載され、そして記載続けるであろうけれども、本発明はプログラム製品として多様な形で頒布され得るということ、また実際に頒布を行うために使用されるコンピュータ可読信号担持媒体の具体的なタイプに関わらずに同様に適用されるということを当業者は認めるであろうということに留意することは重要である。適切なコンピュータ可読信号担持媒体の例は、フロッピー(登録商標)・ディスク及びCD RW(例えば、図1の195)のような記録可能なタイプの媒体、及びデジタル及びアナログの通信リンクのような伝送タイプの媒体を含む。好ましい信号担持媒体は有形であることに留意されたい。
図2を参照すると、好ましい実施態様に従う方法200はブロックA 124内のデータがブロックB 125に書き込まれなければならないときに図1の仮想メモリ・マネージャ123により実行される。始めに、ブロックC 126と称する一時的場所が画定される(ステップ210)。仮想メモリ・マネージャ123は、通常ならばブロックAに書き込まれる将来のDMA書込みが代わりにブロックCに書き込まれることになるようにDMA変換テーブル184に書き込む(ステップ220)。仮想メモリ・マネージャは、その後、データをブロックAからブロックBに移動する(ステップ230)。DMA転送は仮想メモリ・マネージャ123を実行しているプロセッサ110とは非同期であるから、ステップ230におけるブロックAからブロックBへのデータの移動の間にDMA転送が行われる可能性がある。それ故に、方法200はDMA書込みがこの移動中に行われたか否かを判定しなければならない。それは、ブロックCにデータが書き込まれたか否かを判定することにより行われ得る(ステップ240)。否定ならば(ステップ240=いいえ)、ブロックCへのDMA転送は行われなかったことが分かり、方法200は終了する。もしデータがブロックCに書き込まれたならば(ステップ240=はい)、ブロックC内の新しいデータはブロックBに移される(ステップ250)。その後、ブロックBへの書込みがまだ行われていないブロックCへの別の書込みが行われたか否かを調べる(ステップ240)ために方法200はステップ240にループ・バックする。このプロセスは、ブロックBへの書込みが行われていないブロックCへの書込みが無くなる(ステップ240=いいえ)まで続く。新しい一時的ブロックCを画定することにより、方法200は、メモリ内のデータのブロックが移動されるのと同時にDMA転送が行われることを可能にする。
図2のステップ240でブロックCに書込みが行われたか否かを判定する1つの方法は、ブロックC内の各場所をゼロのような何らかの初期値に初期化し、ブロックAからブロックBへのデータの移動の後にブロックCを読み取ってブロックC内のどの場所がゼロでないか調べることである。この解決策はソフトウェアによる解決策であり、有効ではあるが割合に低速である。性能を改善するために、DMAコントローラ182によりデータがブロックCに書き込まれたときを示すハードウェア・レジスタが画定され得る。このレジスタは本書では改変記録レジスタ(MRR)186と称され、図3にいっそう詳しく示されている。MRRは複数のビットを含み、各ビットはメモリの画定されたブロックに対応する。図3から、MRRのビット0はメモリ・ブロック0に対応し、MRRのビット1はメモリ・ブロック1に対応し、以降はメモリ・ブロックNに対応する最後のビットに至るまで同様であることが分かる。MRRは最初に全てゼロにクリアされる。MRR内に対応するビットを有するメモリ・ブロックのうちの1つに対してDMAコントローラによる書込みが行われたとき、対応するビットは1にセットされて、そのブロック内の何かがDMAコントローラによって改変されたことを示す。MRRビットに対応するメモリ・ブロックが任意の適切な粒状度を持ち得ることに留意されたい。IBMにより開発されたiSeries(商標)コンピュータ・システムのための1つのインプリメンテーション例では、各メモリ・セグメントは1ページ、或いは4kバイトである。各ページへの書き込みはキャッシュ・ライン単位で行われ、それは128バイトである。ページ内のキャッシュ・ラインのいずれかがDMAコントローラによって改変されると、そのページに対応するビットは1にセットされる。図2のステップ230でデータがブロックAからブロックBに移された後、MRRをスキャンしてどのビットが1にセットされているかを判定することができる。最も好ましいインプリメンテーションでは、MRRは一度に1ビットずつスキャンされる。1に遭遇したならば、対応するデータ・ブロックがブロックBに書き込まれ、その後にそのビットは0にクリアされる。これは、MRR内の全ての1のビットに対応するデータがブロックBにコピーされ終わるまで、一度に1ビットずつ、連続的に行われる。MRRをクリアするプロセスの間にDMA転送が行われ得、それは、既にスキャンされた1のビットをセットし得るということに留意されたい。それ故に、MRR内の全ての1のビットがクリアされた後、MRRの処理中にDMA転送が行われなかったことを確かめるためにMRRは再びスキャンされる。いずれかのビットが1ならば、対応するデータ・ブロックがブロックBに書き込まれる。MRRが全部0で、MRRが最後にチェックされてからDMA転送が行われていないことを示すまで、このプロセスが反復する。この様にして、好ましい実施態様は、DMAアクセスが可能にされている状態で仮想メモリ・マネージャを走らせるときにデータ・コヒーレンシーを保証する。
図4を参照すると、方法240は、図3に示されているMRR186を用いるときの図2のステップ240のための1つの適切なインプリメンテーションを表す。ブロックCへの各書込みについて、書き込まれた場所に対応するMRRビットに1が書き込まれる(ステップ410)。MRRが全部0であれば(ステップ420=はい)、DMAコントローラによるブロックCへの書き込みはなかったので、Cへの書き込みは偽にセットされる(ステップ430)。MRRが全部0ではなければ(ステップ420=いいえ)、DMAコントローラによるブロックCへの書込みがあったので、Cへの書き込みは真にセットされる(ステップ440)。その後、方法240は終了する。MRR186は、仮想メモリ・マネージャによるブロックAからブロックBへのデータの移動の間にDMAコントローラがブロックCへの書き込みを行ったか否かを判定する迅速で効率的な方法を提供する。図1を再び参照すると、DMAコントローラ182内のハードウェアは、変換テーブル184におけるアドレスの変更を可能にする前にMRR186が全部0であることを強制する。
好ましい実施態様は、仮想メモリ・マネージャがメモリ内のデータのブロックを、そのデータがDMA転送により壊されることを心配せずに、移す方法を提供する。一時的ブロックが画定され、将来の書込みがその一時的ブロックに対して行われるようにDMAコントローラ内の変換テーブルが変更される。その後、メモリ内のデータが移動され、その後に、その移動中にDMAコントローラがその一時的ブロックに書き込んだか否かを確かめるためにチェックが行われる。書き込みが行われたのであれば、一時的ブロックに書き込まれたデータも移動されて、DMAコントローラが一時的ブロックに書き込みを行わなくなるまでこのプロセスが続く。この様にして、DMAアクセスが可能にされている状態で仮想メモリ・マネージャを走らせるシステムにおいてデータ・コヒーレンシーが反映・保証される。
本発明の範囲内で多くのバリエーションが可能であることを当業者は認めるであろう。本発明は好ましい実施態様に関連して特に図示され記述されたけれども、本発明の範囲から逸脱せずに形及び細部に関するこれらの及び他の変更がなされ得ることが当業者に理解されるであろう。
好ましい実施態様に従う装置のブロック図である。 好ましい実施態様に従う方法の流れ図である。 好ましい実施態様に従う改変記録レジスタ(MRR)及び対応するメモリ・ブロックのブロック図である。 好ましい実施態様に従って図3に示されているMRRを使用する図2のステップ240についての1つの特定のインプリメンテーションのための方法の流れ図である。

Claims (20)

  1. 少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサに結合されたダイレクト・メモリ・アクセス(DMA)コントローラと、
    前記DMAコントローラ及び前記少なくとも1つのプロセッサに結合されたメモリと、
    前記メモリ内に存在して前記少なくとも1つのプロセッサにより実行される仮想メモリ・マネージャとを含む装置であって、前記仮想メモリ・マネージャは、前記メモリ内に一時的ブロックを作り、前記DMAコントローラによる将来の書込みが前記一時的ブロックに書き込まれるように前記DMAコントローラ内のアドレス変換テーブルを変更し、データを前記メモリ内の第1ブロックから第2ブロックに移動し、前記第1ブロックから前記第2ブロックへの前記データ移動の後に、前記DMAコントローラによる前記一時的ブロックへの書込みが前記仮想メモリ・マネージャによる前記第1ブロックから前記第2ブロックへの前記データ移動の間に行われたか否かを判定し、もし前記判定が肯定ならば、前記第1ブロックから前記第2ブロックへの前記データ移動中に前記DMAコントローラによって一時的場所に書き込まれたデータを前記一時的場所から前記第2ブロックに書き込む、
    前記装置。
  2. 前記装置は複数のビットを含むハードウェア・レジスタを更に含んでおり、各ビットは前記メモリの画定されたブロックに対応し、各ビットの値は、そのビットに対応する前記画定されたブロックに前記DMAコントローラがデータを書き込んだならば1であり、そのビットに対応する前記画定されたブロックに前記DMAコントローラがデータを書き込まなかったならば0である、請求項1の装置。
  3. 前記ハードウェア・レジスタは改変記録レジスタを含む、請求項2の装置。
  4. 前記ハードウェア・レジスタは前記DMAコントローラ内に存在する、請求項2の装置。
  5. 前記ハードウェア・レジスタの1である各ビットは、メモリの対応するブロックの中のデータが前記第2ブロックに書き込まれたときに0に変更される、請求項2の装置。
  6. メモリにおいて第1ブロックから第2ブロックにデータを移動する、コンピュータにより実行される方法であって、
    (A)前記メモリ内に一時的ブロックを作るステップと、
    (B)DMAコントローラ内のアドレス変換テーブルを、前記DMAコントローラによる将来の書込みが前記一時的ブロックに書き込まれるように、変更するステップと、
    (C)データを前記メモリ内の第1ブロックから第2ブロックに移動するステップと、
    (D)ステップ(C)における前記データ移動の後に、前記DMAコントローラによる前記一時的ブロックへの書込みがステップ(C)における前記データ移動の間に行われたか否かを判定するステップと、
    (E)前記DMAコントローラによる前記一時的ブロックへの書込みがステップ(C)における前記データ移動の間に行われたならば、ステップ(C)における前記データ移動の間に前記DMAコントローラによって書き込まれた前記データを一時的場所から前記第2ブロックに書き込むステップと、
    を含む、前記方法。
  7. (F)ステップ(E)における前記データの前記書き込みの間に前記DMAコントローラにより前記一時的ブロックへの書込みが行われたならば、ステップ(E)における前記データの前記書き込みの間に前記DMAコントローラにより書き込まれた前記データを前記一時的場所から前記第2ブロックに書きこむステップを更に含む、請求項6の方法。
  8. (G)ステップ(F)における前記データの前記書き込みの間に前記DMAコントローラが前記一時的場所にデータを書き込まなくなるまでステップ(F)を反復するステップを更に含む、請求項7の方法。
  9. ステップ(D)は、前記DMAコントローラによる前記一時的ブロックの変更を反映するハードウェア・レジスタの状態を調べることによって実行される、請求項8の方法。
  10. 前記ハードウェア・レジスタは前記DMAコントローラ内に存在する、請求項9の方法。
  11. 前記ハードウェア・レジスタは複数のビットを含み、各ビットは前記メモリの画定されたブロックに対応し、各ビットの値は、そのビットに対応する前記画定されたブロックに前記DMAコントローラがデータを書き込んだならば1であり、そのビットに対応する前記画定されたブロックに前記DMAコントローラがデータを書き込まなかったならば0である、請求項9の方法。
  12. 前記ハードウェア・レジスタの1である各ビットは、メモリの対応するブロックの中のデータが前記第2ブロックに書き込まれたときに0に変更される、請求項11の方法。
  13. 仮想メモリ・マネージャを提供するようにデータ処理装置の動作を制御するためのコンピュータ可読プログラム・コードにおいて実現される命令のセットを含むコンピュータ・プログラムであって、前記仮想メモリ・マネージャは、
    メモリ内に一時的ブロックを作り、
    DMAコントローラによる将来の書込みが前記一時的ブロックに書き込まれるように前記DMAコントローラ内のアドレス変換テーブルを変更し、
    データを前記メモリ内の第1ブロックから第2ブロックに移動し、
    前記第1ブロックから前記第2ブロックへの前記データ移動の後に、前記DMAコントローラによる前記一時的ブロックへの書込みが前記仮想メモリ・マネージャによる前記第1ブロックから前記第2ブロックへの前記データ移動の間に行われたか否かを判定し、
    もし前記判定が肯定ならば、前記第1ブロックから前記第2ブロックへの前記データ移動中に前記DMAコントローラによって一時的場所に書き込まれたデータを前記一時的場所から前記第2ブロックに書き込む、
    前記コンピュータ・プログラム。
  14. (A)請求項13のコンピュータ・プログラムと、
    (B)前記コンピュータ・プログラムを担持するコンピュータ可読信号担持媒体と、
    を含むコンピュータ・プログラム製品。
  15. 前記コンピュータ可読信号担持媒体は記録可能な媒体を含む、請求項14のコンピュータ・プログラム製品。
  16. 前記コンピュータ可読信号担持媒体は伝送媒体を含む、請求項14のコンピュータ・プログラム製品。
  17. 前記仮想メモリ・マネージャは、前記第1ブロックから前記第2ブロックへの前記データ移動の後に、ハードウェア・レジスタを読むことによって、前記仮想メモリ・マネージャによる前記第1ブロックから前記第2ブロックへの前記データ移動の間に前記DMAコントローラによる前記一時的ブロックへの書込みが行われたか否かを判定し、前記ハードウェア・レジスタは複数のビットを含み、各ビットは前記メモリ内のデータの画定されたブロックに対応し、各ビットの値は、そのビットに対応する前記画定されたブロックに前記DMAコントローラがデータを書き込んだならば1であり、そのビットに対応する前記画定されたブロックに前記DMAコントローラがデータを書き込まなかったならば0である、請求項13のコンピュータ・プログラム製品。
  18. 前記ハードウェア・レジスタは改変記録レジスタを含む、請求項17のコンピュータ・プログラム製品。
  19. 前記ハードウェア・レジスタは前記DMAコントローラ内に存在する、請求項17のコンピュータ・プログラム製品。
  20. 前記ハードウェア・レジスタの1である各ビットは、メモリの対応するブロックの中のデータが前記第2ブロックに書き込まれたときに0に変更される、請求項17のコンピュータ・プログラム製品。
JP2008534001A 2005-10-07 2006-10-03 仮想メモリ環境においてdmaリクエストを処理するための装置、方法、及び、コンピュータ・プログラム Active JP4629779B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/246,824 US7725620B2 (en) 2005-10-07 2005-10-07 Handling DMA requests in a virtual memory environment
PCT/EP2006/066999 WO2007042428A2 (en) 2005-10-07 2006-10-03 Apparatus and method for handling dma requests in a virtual memory environment

Publications (3)

Publication Number Publication Date
JP2009512004A true JP2009512004A (ja) 2009-03-19
JP2009512004A5 JP2009512004A5 (ja) 2010-08-12
JP4629779B2 JP4629779B2 (ja) 2011-02-09

Family

ID=37912128

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008534001A Active JP4629779B2 (ja) 2005-10-07 2006-10-03 仮想メモリ環境においてdmaリクエストを処理するための装置、方法、及び、コンピュータ・プログラム

Country Status (7)

Country Link
US (2) US7725620B2 (ja)
EP (1) EP1934762B1 (ja)
JP (1) JP4629779B2 (ja)
CN (1) CN100589089C (ja)
AT (1) ATE450831T1 (ja)
DE (1) DE602006010893D1 (ja)
WO (1) WO2007042428A2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4770602B2 (ja) * 2006-06-23 2011-09-14 株式会社デンソー 電子機器
US20080229053A1 (en) * 2007-03-13 2008-09-18 Edoardo Campini Expanding memory support for a processor using virtualization
US8751738B2 (en) 2010-02-08 2014-06-10 Microsoft Corporation Background migration of virtual storage
US9092149B2 (en) * 2010-11-03 2015-07-28 Microsoft Technology Licensing, Llc Virtualization and offload reads and writes
US9146765B2 (en) 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
US8903966B2 (en) * 2011-06-01 2014-12-02 International Business Machines Corporation Re-programming programmable hardware devices without system downtime
US9817582B2 (en) 2012-01-09 2017-11-14 Microsoft Technology Licensing, Llc Offload read and write offload provider
WO2014068607A1 (en) * 2012-10-30 2014-05-08 Hitachi, Ltd. Computer system and method for updating configuration information
US9071585B2 (en) 2012-12-12 2015-06-30 Microsoft Technology Licensing, Llc Copy offload for disparate offload providers
US9251201B2 (en) 2012-12-14 2016-02-02 Microsoft Technology Licensing, Llc Compatibly extending offload token size
US9582223B2 (en) 2014-04-14 2017-02-28 International Business Machines Corporation Efficient reclamation of pre-allocated direct memory access (DMA) memory

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040064601A1 (en) * 2002-09-30 2004-04-01 International Business Machines Corporation Atomic memory migration apparatus and method
JP2005322243A (ja) * 2004-04-30 2005-11-17 Microsoft Corp Vex−仮想エクステンションフレームワーク
JP2005322242A (ja) * 2004-04-30 2005-11-17 Microsoft Corp 仮想環境からのハードウェアへの直接アクセスの提供

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4590467A (en) * 1983-10-13 1986-05-20 Rockwell International Corporation Local area network interface controller
US4658351A (en) * 1984-10-09 1987-04-14 Wang Laboratories, Inc. Task control means for a multi-tasking data processing system
EP0348628A3 (en) * 1988-06-28 1991-01-02 International Business Machines Corporation Cache storage system
US5463739A (en) * 1992-12-22 1995-10-31 International Business Machines Corporation Apparatus for vetoing reallocation requests during a data transfer based on data bus latency and the number of received reallocation requests below a threshold
US5640527A (en) * 1993-07-14 1997-06-17 Dell Usa, L.P. Apparatus and method for address pipelining of dynamic random access memory utilizing transparent page address latches to reduce wait states
US5778427A (en) * 1995-07-07 1998-07-07 Sun Microsystems, Inc. Method and apparatus for selecting a way of a multi-way associative cache by storing waylets in a translation structure
US6931471B2 (en) * 2002-04-04 2005-08-16 International Business Machines Corporation Method, apparatus, and computer program product for migrating data subject to access by input/output devices
US20060069818A1 (en) * 2004-09-27 2006-03-30 Cliff Mather Synchronizing direct memory access and evacuation operations in a computer system
US20060181949A1 (en) * 2004-12-31 2006-08-17 Kini M V Operating system-independent memory power management
US20070074067A1 (en) * 2005-09-29 2007-03-29 Rothman Michael A Maintaining memory reliability

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040064601A1 (en) * 2002-09-30 2004-04-01 International Business Machines Corporation Atomic memory migration apparatus and method
JP2005322243A (ja) * 2004-04-30 2005-11-17 Microsoft Corp Vex−仮想エクステンションフレームワーク
JP2005322242A (ja) * 2004-04-30 2005-11-17 Microsoft Corp 仮想環境からのハードウェアへの直接アクセスの提供

Also Published As

Publication number Publication date
JP4629779B2 (ja) 2011-02-09
CN101278270A (zh) 2008-10-01
EP1934762B1 (en) 2009-12-02
EP1934762A2 (en) 2008-06-25
US20080244112A1 (en) 2008-10-02
ATE450831T1 (de) 2009-12-15
US20070083681A1 (en) 2007-04-12
US7725620B2 (en) 2010-05-25
DE602006010893D1 (de) 2010-01-14
WO2007042428A2 (en) 2007-04-19
WO2007042428A3 (en) 2007-06-28
CN100589089C (zh) 2010-02-10

Similar Documents

Publication Publication Date Title
JP4629779B2 (ja) 仮想メモリ環境においてdmaリクエストを処理するための装置、方法、及び、コンピュータ・プログラム
TWI779325B (zh) 實施用於雲端遊戲資料儲存及擷取之高速資料通信組構之系統及方法
US7533198B2 (en) Memory controller and method for handling DMA operations during a page copy
US7089391B2 (en) Managing a codec engine for memory compression/decompression operations using a data movement engine
JP4398463B2 (ja) インクリメンタル仮想コピーのための方法、システム、及びプログラム
US7617372B1 (en) Avoiding copy on first write
JP5813375B2 (ja) ストレージシステムにおける要求に対する応答に関連した待ち時間削減
US6772290B1 (en) System and method for providing safe data movement using third party copy techniques
US7000145B2 (en) Method, system, and program for reverse restore of an incremental virtual copy
US9092426B1 (en) Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing
KR20070024670A (ko) 집적 dma 엔진을 사용하는 고성능 휘발성 디스크드라이브 메모리 액세스 장치 및 방법
KR20060044631A (ko) 지속성 메모리 액세스 시스템, 지속성 메모리의 직접액세스 방법 및 지속성 메모리 시스템을 액세스하는 시스템
JP2007094994A (ja) Raidシステム及びそのリビルド/コピーバック処理方法
JP2002117002A (ja) 共用型ペリフェラルアーキテクチャ
US7197599B2 (en) Method, system, and program for managing data updates
JP2002123424A (ja) コンピュータ・システムにおいてメモリを動的に再割当てするシステムおよび方法
US7725654B2 (en) Affecting a caching algorithm used by a cache of storage system
US7937548B2 (en) System and method for improved snapclone performance in a virtualized storage system
US7188303B2 (en) Method, system, and program for generating parity data
US7035978B2 (en) Method, system, and program for policies for improving throughput in remote mirroring systems
CN112445425A (zh) 多层级存储
JP4965456B2 (ja) システムと共有バッファ内のストレージとの間でデータを転送する方法、システム、及びコンピュータ・プログラム(システムと共有バッファ内ストレージとの間のデータ転送)
US6513142B1 (en) System and method for detecting of unchanged parity data
JP2013011971A (ja) 分散共有メモリ管理システム、分散共有メモリ管理方法、および分散共有メモリ管理プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090121

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090618

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100621

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20100621

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20100712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100720

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20100730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101015

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101109

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20101109

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131119

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4629779

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250