JP2007272885A - 代替ページのプールを使用してdma書込みページ障害をコンピュータにより管理するための方法、装置、及びコンピュータ・プログラム - Google Patents

代替ページのプールを使用してdma書込みページ障害をコンピュータにより管理するための方法、装置、及びコンピュータ・プログラム Download PDF

Info

Publication number
JP2007272885A
JP2007272885A JP2007071774A JP2007071774A JP2007272885A JP 2007272885 A JP2007272885 A JP 2007272885A JP 2007071774 A JP2007071774 A JP 2007071774A JP 2007071774 A JP2007071774 A JP 2007071774A JP 2007272885 A JP2007272885 A JP 2007272885A
Authority
JP
Japan
Prior art keywords
page
data
location
flag
dma
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
JP2007071774A
Other languages
English (en)
Other versions
JP5063152B2 (ja
Inventor
Richard Louis Arndt
リチャード・ルイス・アルント
Steve Mark Thurber
スティーブン・マーク・サーバー
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 JP2007272885A publication Critical patent/JP2007272885A/ja
Application granted granted Critical
Publication of JP5063152B2 publication Critical patent/JP5063152B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]

Landscapes

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

Abstract

【課題】代替ページのプールを使用してDMA書込みページ障害をコンピュータにより管理するための方法、装置、及びコンピュータ・プログラムを提供する。
【解決手段】コンピュータ・システムのプラットフォームが、I/Oアダプタに専用のページに対するDMA書込みページ障害を解決する。I/Oアダプタは、そのページにDMAデータの書込みを試み、そのページが書込みに使用可能でないという決定がなされ、DMAデータは、代用ページのプールから選択されたその代用ページにおけるデータ・ロケーションに書込まれる。次に、それらのデータ・ロケーションの各ロケーションに対するフラッグ・ロケーションに、フラッグがセットされる。フラッグ・ロケーションはデータ・ロケーションに対応し、フラッグがセットされるとき、フラッグは、そのフラッグのフラッグ・ロケーションに対応するデータ・ロケーションにDMAデータが存在することを表す。
【選択図】図1

Description

本発明は、一般的には、データ処理システムに関し、詳しく云えば、代替の書込みバッファ・ページのプールを使ってDMA書込みページ障害をコンピュータにより管理するための方法、装置、及びコンピュータ・プログラムに関するものである。
コンピュータ・システムに関する動向によれば、システムは、データ処理を妨げることなく実行中に再構成することが可能である。例えば、複数のオペレーティング・システムがコンピュータにおいて稼動する場合、第1のオペレーティング・システムが特定のメモリ・ブロックを使用しているとき、第2のオペレーティング・システムによる使用のためにそのメモリ・ブロックを再割振りする必要が生じることがある。この場合、第1のオペレーティング・システムは、先ず、メモリが再割振りされる前にその物理メモリのブロックの使用を停止しなければならない。或いは、例えば、物理メモリの或るブロックにおいて問題が検出されることがあり、その場合、そのメモリが置換されるよう、そのメモリをオペレーションから除くことが望ましい。更に、どのオペレーティング・システムがメモリ・ブロックを使用していても、そのメモリ・ブロックはそれの使用を停止しなければならない。
或る点では、物理メモリにおける1つのブロックの使用を停止して他のブロックの使用を開始することは比較的簡単なことである。というのは、このメモリに対するオペレーティング・システムのアクセスに関連したこの問題の局面を処理するために、仮想メモリ管理に関連する機構が一般的なオペレーティング・システムに既に存在するためである。しかし、これらの機構は、オペレーティング・システムによるアクセスを受けるがI/O装置によるアクセスを受けないプログラム・データのためにのみそのメモリ・ブロックが使用されるということに依存する。そのメモリ・ブロックがI/O装置によるアクセスを受ける場合、その問題は更に難しくなる。I/O装置によるこのアクセスは、一般にダイレクト・メモリ・アクセス(DMA)であるが、これがいつもそのとおりであるわけではない。
I/O装置のI/Oアダプタを介してそのI/O装置によるアクセスを受けるメモリ・ブロックは、一般に、オペレーティング・システムが稼動している限り稼動する本質的にはエンドレスのI/Oプログラムによってそのメモリ・ブロックへのアクセスが制限されるので、「拘束される(pinned)」、即ち、移動しないようにされる。メモリを拘束するそのようなI/Oプログラムを停止することは、システムにとって破滅的である。これらのメモリ・ブロックを拘束することによって、それらのメモリ・ブロックは、本来、メモリを拘束したI/O装置による使用に専用のものである。1つ又は複数の個々のメモリ・ブロックを拘束することによって、特定の個々のI/O装置による使用のために、それらのメモリ・ブロックを確保することが可能である。
しかし、メモリ・ブロックを拘束することは、メモリをそれの使用のために拘束しているI/O装置を含むコンピュータ・システムにとって特に効率的であるというわけではない。これらのメモリ・ブロックは、一般に、十分利用されてない。I/O装置は、ある点では、そのメモリに書込むことによってそれの拘束されたメモリを使用する必要があることもあるが、多くの場合、メモリは未使用のままになっている。
本発明の目的は、代替ページのプールを使用して、DMA書込みページ障害をコンピュータにより管理するための方法、装置、及びコンピュータ・プログラムを提供することにある。
コンピュータ・システムのプラットフォームが、I/Oアダプタに専用のページに対するDMA書込みページ障害を解決する。I/Oアダプタは、そのページにDMAデータを書込むことを試みる。そのページが書込みのためには使用可能でないという決定が行われる。そこで、DMAデータは、代替ページのプールから選択されたその代替ページにおけるデータ・ロケーションに書込まれる。次に、データが書込まれたデータ・ロケーションの各ロケーションに対するフラッグ・ロケーションに、フラッグがセットされる。フラッグ・ロケーションは、データが書込まれたデータ・ロケーションに対応する。フラッグは、それがセットされているとき、そのフラッグのフラッグ・ロケーションに対応するデータ・ロケーションにDMAデータが存在することを表す。
本発明の実施例は、I/O装置に専用のページに対する、DMA書込みページ障害のようなI/O書込みページ障害を、それらの装置のI/Oアダプタを通してコンピュータ・システムのプラットフォームが解決することを可能にするための方法、装置、及びコンピュータ・プログラムである。プラットフォームは、それがI/O書込みページ障害を解決することができるので、I/OアダプタがそのI/Oアダプタに専用のページに書込むことを必要とするまで、その専用のページを他の目的で一時的に使用することができる。
プラットフォームのI/Oサブシステムは、仮想メモリ・サブシステムによってページ・アウトされたターゲット・ページに記憶されることを意図されたDMA書込みデータのための一時的な代替ページを提供する。一時的な代替ページは、DMA書込みデータが、復元されたページ・アウト・データと仮想メモリ・サブシステムによって再統合されるとき、使用される1バイト当たりの使用インジケータ(本明細書ではフラッグと呼ばれる)を組み込む。
DMA書込みページ障害は、I/O装置が、それのI/Oアダプタを介して、特定のターゲット・ページにDMAデータを書込む試みを行い、I/O装置が仮想メモリにおいてそのターゲット・ページを見つけることができないときに生じる。DMA書込みページ障害が生じるとき、あたかも代替ページがオリジナル・ターゲット・ペ−ジであるかのように、プラットフォームはその代替ページにおけるデータ・ロケーションに書込みデータを記憶する。代替ページにおけるデータ・ロケーションは、オリジナル・ターゲット・ページが仮想メモリからページ・アウトされなかった場合のそのオリジナル・ターゲット・ページにおけるロケーションに対応する。
そこで、フラッグが特定のフラッグ・ロケーションにおいてセットされる。これらの特定のフラッグ・ロケーションは、DMA書込みデータが代替ページにおいて記憶されるデータ・ロケーションに対応する。
1つの実施例では、単一の代替ページが使用され、データ・ロケーション及びフラッグ・ロケーションの両方を含む。DMA書込みデータが、これらのデータ・ロケーションの特定のロケーションに記憶される。この同じ代替ページに記憶されたフラッグが次にセットされる。それらのセットされるフラッグは、DMA書込みデータが記憶されるデータ・ロケーションに対応するフラッグ・ロケーションに記憶される。残りのフラッグ・ロケーションにおけるフラッグはセットされない。
もう1つの実施例では、2つの代替ページが使用される。第1の代替ページはデータ・ロケーションだけを含み、第2の代替ページはフラッグ・ロケーションだけを含む。DMA書込みデータは、第1の代替ページにおけるデータ・ロケーションの特定のロケーションに記憶される。次に、フラッグが第2の代替ページにセットされる。第2の代替ページにおける各フラッグ・ロケーションは第1の代替ページにおけるデータ・ロケーションに対応する。DMA書込みデータが記憶される第1の代替ページにおけるデータ・ロケーションに対応する第2の代替ページにおけるフラッグ・ロケーションに記憶されるフラッグがセットされる。
特定のフラッグ・ロケーションにおけるフラッグがセットされる場合、それの対応するデータ・ロケーションは有効なDMA書込みデータを含む。特定のフラッグ・ロケーションにおけるフラッグがセットされない場合、それの対応するデータ・ロケーションは有効なDMA書込みデータを含まない。
代替ページは一時的なページである。オリジナル・ターゲット・ページが再びメモリにおいて見つかり、もはやページ・アウトされないとき、DMA書込みデータは、DMA書込みの時間に、オリジナル・ターゲット・ページに記憶されたデータと再統合され得る。そのデータ及びフラッグはDMA書込みデータを復元するために使用される。フラッグは、どのデータ・ロケーションがDMA書込みデータを含むかを決定するために使用される。一旦そのDMA書込みデータが見つけられると、それは、復元されたページを作成するためにオリジナル・ターゲット・ページからのデータと再統合される。
コンピュータ・システムは、一般に、物理ページを特定のI/Oアダプタと関連付けるために使用されるアドレス検証及び変換テーブルを含む。そのテーブルにおける各エントリは特定の物理ページと関連付けられている。このテーブルは、DMAオペレーションのアドレスを使用してインデックスされる。本発明の実施例は、このテーブルに制御フィールドを加える。制御フィールドは、各物理ページに対する現在のステータスを表すために使用される。
コンピュータ・システムのプラットフォームは、I/Oオペレーションを遂行するときにアドレス検証及び変換テーブルを使用するI/O変換ソフトウェアを含む。本発明の実施例によれば、I/O変換ソフトウェアは、更に、本明細書において説明されるように、使用される代替ページのリストを維持する。リンクされたリスト、マルチレベル・テーブル、待ち行列、又は任意の他の適当なタイプのリストのような任意の形式のリストを使用することが可能である。このリストは、使用可能な代替ページのプールを形成する。
代替ページが必要とされるとき、I/O変換ハードウェアはこのリストからページを選択する。そのリストに含まれた代替ページの数が所定の閾値よりも小さくなるとき、割り込みが発生される。この実施例では、割り込みは、I/O変換ハードウェア又は機構のようなハードウェアによって発生される。プラットフォームのメモリ仮想化ソフトウェアが、代替ページとして使用可能な追加のページを割り振ることによってその割り込みに応答する。
アドレス検証及び変換テーブルにおける各エントリに対して、そのエントリと関連する物理ページの現在のステータスを表すために、制御フィールド設定が使用される。第1の制御フィールド設定は、正規のDMA書込み処理がその物理ページに対して生じ得ることを表す。この場合、ターゲットの物理ページがメモリにおいて見つかり、ページ・アウトされない。
第2の制御フィールド設定は、DMA書込み処理が行われなければならないということを表す。この設定は、物理ページがページ・アウトされてしまい、代替ページが使用されたときに使用される。この場合、この物理ページに対する代替ページは、オリジナル・ターゲット・ページのデータと再統合されるという過程にある。
第3の制御フィールド設定は、DMA書込みを実行する前に代替ページが得られなければならないことを表す。この場合、物理ページがページ・アウトされ、DMA書込みデータを一時的に記憶するために使用される代替ページは未だ選択されていない。データ及びフラッグ・ロケーションの両方を含む単一の代替ページが使用される場合、一旦代替ページが選択されると、その代替ページのアドレスが、ターゲット・ページと関連するアドレス検証及び変換テーブルにおけるエントリに記憶される。2つの代替ページが使用される場合、一旦代替ページが選択されると、その代替ページのアドレスを含む記述子のアドレスが、ターゲット・ページと関連するアドレス検証及び変換テーブルにおけるエントリに記憶される。
第4の制御フィールド設定は、DMA書込みは処理され得るがターゲット・ページへのDMA書込みの代わりに、選択された代替ページへのDMA書込みが処理されなければならないことを表す。制御フィールド設定が第4の制御フィールド設定である場合、DMA書込みデータが適切なデータ・ロケーションに記憶された後、対応するフラッグ・ロケーションにおけるフラッグがセットされる。そのページにおける残りのフラッグ・ロケーションにおけるすべての他のフラッグはセットされないままである。
プラットフォームのメモリ仮想化ソフトウェアが、DMA書込みのためのターゲットであるページを強制使用することを決定するとき、即ち、そのページがページ・アウトされるとき、プラットフォームのメモリ仮想化ソフトウェアは、アドレス検証及び変換テーブルのこのページのエントリにおける制御フィールドを第3の制御フィールド設定にセットする。そこで、プラットフォームのメモリ仮想化ソフトウェアはそのエントリのアドレス・フィールドをクリアする。
その後、このページが復元される前に、このページがDMA書込みオペレーションのターゲットになる場合、プラットフォームのI/O変換ハードウェア/機構は、制御フィールド設定が第3の設定であることを知る。その設定が第3の設定であるので、プラットフォームのI/O変換ハードウェア/機構は代替ページのそれのリストから代替ページを選択する。そこで、I/O変換ハードウェアは、そのデータ・ロケーションを含む代替ページのアドレスをアドレス検証及び変換テーブルのアドレス・フィールドに入れる。I/O変換ハードウェア/機構は更に制御フィールドを第4の設定にセットする。そこで、DMA書込みデータが特定のデータ・ロケーションに書き込まれる。DMA書込みデータが記憶されたデータ・ロケーションに対応するフラッグ・ロケーションにおいてフラッグがセットされる。
オリジナル・ターゲット・ページが再びメモリにおいて見つけられ、もはやページ・アウトされないとき、現在代替ページに記憶されているデータを、現在オリジナル・ターゲット・ページに記憶されているデータと再統合することが可能である。再統合プロセスが始まるとき、仮想メモリ・ソフトウェアは、代替ページ書込みのエンドレス・シーケンスを回避するために、この特定の物理ページに対するエントリのための制御フィールドを第3の設定にセットする。第3の設定は、この再統合プロセスの間、他のDMA書込みの処理を延期させる。
そこで、代替ページが復元ページとして使用するために選択される。そこで、特定のデータ・ロケーションからのデータが、そのデータ・ロケーションに対応するその復元ページにおけるロケーションに記憶される。フラッグは、どのデータ・ロケーションが、有効なDMA書込みデータを含む特定のロケーションであるかを識別するために使用される。そこで、この復元ページのアドレスが、アドレス検証及び変換テーブル・エントリおけるアドレス・フィールドに記憶される。
このとき、そのページは再び仮想メモリ内にあり、正規のDMA書込み処理のために使用することが可能である。従って、このエントリに対する制御フィールドが第1の設定にセットされる。
当業者が認めるように、代替ページにおけるフィールドの物理サイズは、本発明の実施例の新規性に影響を与えることなく記憶セル使用率を最適化するように大きさを設定される。ほとんどの場合、データ・ロケーションはほとんどのI/Oバスの特性に適合するようにバイト・レベルで書込み可能でなければならないが、DMA生成装置の特性に適合し得る他の方法を使用することも可能であろう。
更に、フラッグ・ロケーションは単一のデータ・ロケーション・バイトのみに対する情報を含み得るし、あるいは複数のバイトに対する情報も含み得る。
特定の機能を遂行するメモリ仮想化ソフトウェア及びI/O変換ハードウェア/機構を説明したが、いずれの適当なプラットフォーム・ソフトウェアも上記の機能を遂行し得るであろう。
図1は、本発明の実施例を含むコンピュータ・システム100を示す。コンピュータ・システム100はプラットフォーム101を含む。コンピュータ・システム100は、複数のプロセッサ102及び104を含む対称マルチプロセッサ(SMP)システムであってもよい。それとは別に、シングル・プロセッサ・システムが使用されてもよい。
システム100では、命令を含むデータ106が不揮発性メモリ、例えば、ディスク記憶装置135に記憶され、データ106のブロック108がその不揮発性メモリから揮発性メモリ110に書き込まれる。揮発性メモリにおけるそれらの実物理ロケーションに関して、データ106のブロック108は、データ106が仮想メモリ・マップの視点を有する基準と区別するために、データの「物理ページ」115と呼ばれる。従って、揮発性メモリ110は、時には「物理メモリ」と呼ばれることもある。
揮発性メモリ110にデータのブロックがあれば、それらはシステム100のI/O装置135、140、145及び中央処理ユニット(CPU)104によるアクセスが可能である。本明細書において使用されるように、用語「I/O装置」は、コンピュータ・システム100にインターフェースする種々の装置のいずれかを指し、システムに情報を提供するか又はシステムから情報を受ける。I/O装置の例は、不揮発性ディスク記憶装置135のようなメモリ、マウス、トラック・ボール、タッチ・パッドまたは同様のもの、キーボード、ディスプレイ、プリンタ、カメラ、モデム、光学的スキャナ、マイクロフォン、およびオーディオ・スピーカを含む。
更に詳しく言えば、物理ページ115が第1バス125によってI/Oブリッジ130に結合され、I/O装置135、140、145の各々が、対応するI/Oアダプタ136、141、146及びI/Oバス176のセグメント137、142、147によってI/Oブリッジ130に結合される。
他のコンピュータに対する通信リンクがモデム148及び/又は通信アダプタ149を介して提供される。
I/Oブリッジ130は、I/O装置135等の間を調停する、即ち、I/Oバス176への及びI/Oバス176から第1バス125への一時に1つのI/O装置アクセスを許容するバス・ロジックを含むロジック150も有する。I/Oブリッジ130は、物理ページ115からのデータ、又はI/O装置による要求に応答して不揮発性メモリ135のようなI/O装置からのデータをキャッシュするためのI/Oデータ・バッファ155も含み、ロジック150は、データ・バッファリングを処理するロジックを含む。図示の実施例では、I/Oブリッジ・ロジック150はI/Oプロセッサ154を含む。
CPU104は、オペレーティング・システム160及びファームウェア165のようなそのCPUにおけるオペレーティング・システム及びファームウェア命令を実行する。なお、図1にはそれらの命令のイメージが示される。CPU104による実行のための命令は、ファームウェア165の命令、ファームウェア165のサポートにより実行されるオペレーティング・システム160の命令、及びファームウェア165、オペレーティング・システム160のサポートにより実行されるアプリケーション(図示されていない)の命令を含む。ファームウェア165がオペレーティング・システム160とは実質的に無関係にプロセッサ上で稼動して低レベルのインターフェースを提供し、従って、プロセッサ104のようなハードウェア・コンポーネントに対してオペレーティング・システム160よりも多くのアクセスを提供する。或る点では、オペレーティング・システム160は、データ106のブロック108のビューを仮想メモリ162のページとして、CPU104において実行中のアプリケーションに与え、従って、データ106の実際のロケーションは、データが、例えば、揮発性メモリ110にあるか又はディスク記憶装置135にあるかに関係なくまったく透明である。従って、オペレーティング・システム160は、揮発性メモリ110内に又はそこからデータを多少透明に移動させるためのページング機構163及びページ・テーブル164を含む。
I/O装置仮想メモリ152に関して、オペレーティング・システム160は、データ106のブロック108を、変換制御エントリ(Translation Control Entry - TCE)テーブル175におけるエントリを介して物理ページ115にマップするよう、I/Oロジック150に指示する。図示の実施例では、ファームウェア165が、物理ページ115の第1のページから物理ページ115の第2のページにデータを移動させるために利用されるサービスを提供し、従って、第1のページは異なるサービスに使われるか又はアイドリングされる。これを行うために、オペレーティング・システム160はTCEテーブル175における物理ページ115の第1のページに対する1つ又は複数のエントリを見つける。しかる後、オペレーティング・システム160は、所与のI/O装置仮想メモリ・ページ152と関連した第1の物理ページ115から第2の物理ページ115にそのデータをコピーするようにファームウェア165のコンポーネント、即ち、ハイパーバイザ170に指示し、I/O装置仮想メモリ・ページ152に対するその後のアクセスが第2の物理ページに向けられるようにTCEテーブル175における関連のマッピングを変更する。ハイパーバイザ170は、装置間でTCEテーブル175を更新状態に保持すること及びI/Oオペレーションに関してメモリ・コヒーレンシを維持することを含む多数の機能を有する。
メモリの物理ページは入出力(I/O)アダプタによるアクセスを受ける。TCEテーブル175は物理ページをI/Oアダプタと関連付けるエントリを含む。各エントリは特定の物理ページを特定のI/Oアダプタに関連付ける。
TCEテーブル175を理解するために、I/O装置135が、CPU104の仮想メモリ・ビューと同様に、データ106の自身のビューを仮想メモリ152のページとして有するものと考えてほしい。I/Oブリッジ・ロジック150は、このビューをI/O装置135に与える。別の実施例では、I/Oプロセッサ154及びファームウェア165がこのビューをI/O装置135に与える。このビューを維持するために、TCEテーブル175におけるエントリ(図1には示されない)がデータ106のブロック108をI/O装置仮想メモリ・ページ152にマップする。従って、I/O装置135は、データの実際のロケーションに関係なく、即ち、どの物理ページ115が現在データを記憶しようとしているか関係なく、仮想ページ152への参照によってデータ106を参照することが可能である。
I/Oブリッジ130は、バス125及びバス176の間にあるロジック150を提供する。バス176におけるメモリ要求が、I/O装置仮想メモリ・ページ152を反映するように仮想アドレスと共にI/O装置から到来する。そのメモリ要求と関連する正しい物理ページ115をバス176からアクセスするためにそれがバス125に適用しなければならない物理ページ・アドレスを決定するために、I/O変換ハードウェア(アドレス変換ロジック)156がTCEテーブル175(I/O装置仮想ページの順序で保持されている)を効果的にアクセスする。(上記の用語「効果的に」が使用されたのは、プロセスがスピード・アップされるよう、実際にロジック150がTCEテーブル175の関連セクションのキャッシュされたコピーを含むためである)。
TCEテーブル175は、DMAオペレーションのI/Oバス・アドレスによってインデックスされるI/Oアドレス検証及び変換テーブルである。このテーブルは、I/Oアダプタが割り当てられた記憶ロケーションのみをそのI/Oアダプタがアクセスすることを保証するために、及びプラットフォーム・ソフトウェアが、I/Oアダプタの装置ドライバによって発生されたI/Oコマンドに含まれたDMAアドレスに関する物理記憶ブロックをリロケートすることを可能にするために使用される。
プラットフォーム101は、上述のようなハードウェアを含み、更に、オペレーティング・システム177、ドライバ178、アプリケーション179、及び他のソフトウェア180を含む。
図2は、本発明の実施例に従って、各エントリに対する制御フィールドを含むTCEテーブルとも呼ばれるアドレス検証及び変換テーブルの一部を示す。テーブル182は、各物理ページに対するアドレス・フィールド183及び制御フィールド184を含む。本発明の実施例によれば、追加のフィールド、即ち、フィールド184が、図1に示されるTCEテーブル175に加えられる。
例えば、エントリ185は、物理ページ「a」及び物理ページ「a」に対する現在の制御設定をアクセスするために使用すべきアドレスを含む。物理ページ「a」をアクセスするために使用すべきアドレスがエントリ185のフィールド183aに記憶される。物理ページ「a」に対する現在の制御設定がフィールド184aに記憶される。
エントリ186は、物理ページ「b」及び物理ページ「b」に対する現在の制御設定をアクセスするために使用すべきアドレスを含む。物理ページ「b」をアクセスするために使用すべきアドレスがエントリ186のフィールド183bに記憶される。物理ページ「b」に対する現在の制御設定がフィールド184bに記憶される。
図3は、本発明の実施例に従ってDMA書込みデータを記憶するために使用される代替データ・ページ187を示す。DMA書込みデータは、オリジナル・ターゲット・ページにおけるロケーションXXXからロケーションYYYまでのデータ・ロケーションにおいてそのページに記憶されるようにターゲットされた。従って、このDMA書込みデータは、ロケーションXXXからロケーションYYYまでのデータ・ロケーションにおいて代替ページ187に記憶される。ロケーション0からロケーションXXXまで及びロケーションYYYからロケーションZZZまでのデータ・ロケーションはデータをまったく含まないか又は無関係のデータを含む。
図4は、本発明の実施例に従って、フラッグを記憶するために使用される代替フラッグ・ページ188を示す。フラッグ・ページ188は、フラッグ・ロケーション0乃至ZZZを含む。フラッグ・ページ188における各フラッグ・ロケーションがデータ・ページ187内に対応するデータ・ロケーションを有する。
各フラッグ・ロケーションには、フラッグが記憶される。特定のフラッグ・ロケーションにおけるフラッグがセットされる場合、そのフラッグ・ロケーションに対応するデータ・ページ内のデータ・ロケーションにおけるデータが、復元される必要がある有効なDMA書込みデータである。特定のフラッグ・ロケーションにおけるフラッグがセットされない場合、そのフラッグ・ロケーションに対応するデータ・ロケーションにおけるデータは有効なDMA書込みデータではなく、無視されなければならない。
従って、ロケーション0乃至XXX及びロケーションYYYからZZZまでのロケーションにおけるフラッグはセットされず、一方、ロケーションXXX乃至YYYにおけるフラッグがセットされる。
図5は、本発明の実施例に従って、DMA書込み時にオリジナル・ターゲット・ページに記憶されたオリジナル・データをDMA書込みデータと統合するために使用される復元ページ189を示す。オリジナル・データはオリジナル・ターゲット・ページから検索され、オリジナル・ターゲット・ページにおけるそれらのオリジナル・ロケーションに対応する復元ページ189内のデータ・ロケーションにコピーされる。
そこで、DMA書込みデータがデータ・ページ187から検索され、フラッグ・ページ188からのフラッグを使ってオリジナル・データに重畳される。DMA書込みデータを重畳するプロセスは、フラッグ・ページ188における各ロケーションに対して、そのロケーションにおけるフラッグがセットされているかどうかを決定することによって完成する。フラッグがセットされている場合、そのデータ・ページにおける対応するデータ・ロケーションに記憶されているデータが復元ページ189における対応するロケーションに記憶される。フラッグがセットされていない場合、そのデータ・ページにおける対応するデータ・ロケーションに記憶されているいずれのデータも無視され、復元ページにおける対応するロケーションには記憶されない。
図6は、本発明の実施例に従って、データ・ロケーション及びフラッグ・ロケーションの両方を含む単一の代替ページ190を示す。図6に示されるように、データ・ロケーション及びフラッグ・ロケーションはページ190を通して交互にされる。従って、ページ190における第1のロケーションはフラッグ・ロケーションaである。次にロケーションは、フラッグ・ロケーションaに対応するデータ・ロケーションaである。代替ページ187及び188の代わりに単一の代替ページ190を使用することが可能である。
代替ページ190は上記のような方法で使用される。DMA書込みデータを重畳するプロセスは、ページ190における各フラッグ・ロケーションに対してフラッグがセットされているかどうかを決定することによって完成する。フラッグがフラッグ・ロケーションにおいてセットされている場合、対応するデータ・ロケーションに記憶されるデータは、復元ページにおける対応するロケーションに記憶される。フラッグがセットされていない場合、対応するデータ・ロケーションに記憶されている如何なるデータも無視され、復元ページにおける対応するロケーションには記憶されない。
図7及び図8は、本発明の実施例に従って、DMA書込みを実行する方法を決定するために制御設定を利用すること及び、オリジナル・ターゲット・ページがページ・アウトされるとき、代替ページを利用することを示す高レベルのフローチャートを示す。プロセスは、ブロック200によって示されるように開始し、しかる後、ブロック202に進む。ブロック202は、I/O装置が特定のターゲット・ページへのDMA書込みを実行しようとすることを表す。
次に、ブロック204が、この特定のページと関連するエントリをアドレス検証及び変換テーブルに設けることを示す。アドレス検証及び変換テーブルは、それがメモリ・コントローラ、I/Oブリッジ、PCIバス・ブリッジ、I/Oアダプタ、又は同様のものに設けられてもよいが、メイン・メモリに設けられることが望ましい。
次に、ブロック206が、このエントリの制御フィールドの現在の設定を読取ることを表す。そこで、プロセスはブロック208に進む。ブロック208は、制御フィールド設定が「a」であるか否かの決定を示す。制御フィールド設定「a」は第1の制御フィールド設定である。制御フィールド設定が「a」であるという決定が行われる場合、プロセスは、正規のDMA処理の継続を表すブロック210に進む。そこで、プロセスはブロック202に戻る。
ブロック208を再び参照すると、制御フィールド設定が「a」ではないという決定が行われる場合、プロセスはブロック212に進む。ブロック212は、制御フィールド設定が「b」であるか否かの決定を示す。制御フィールド設定「b」は第2の制御フィールド設定である。制御フィールド設定が「b」であるという決定が行われる場合、プロセスはブロック206に戻る。
ブロック212を再び参照すると、制御フィールド設定が「b」ではないという決定が行われる場合、プロセスはブロック214に進む。ブロック214は、制御フィールド設定が「c」であるか否かの決定を示す。制御フィールド設定「c」は第3の制御フィールド設定である。制御フィールド設定が「c」であるという決定が行われる場合、プロセスはブロック216に進む。ブロック216は、使用可能な代替ページのリストから2つの代替ページを選択することを表す。1つのページはデータ代替ページであろうし、他のページはフラッグ代替ページであろう。これらの2つのページは相互に関連付けられる。
2つのページを関連付けるための1つの方法は、それらを実メモリにおける2つの連続したページにさせることである。通常、これは偶数/奇数アドレスのペアによって行われる。
これらのページを構成するためのいくつかの方法がある。1つの方法では、偶数ページがDMAデータを含み、一方、奇数ページがフラッグを含む。
2つの別々のページを使用する代わりに、データ及びフラッグの両方を含む単一の代替ページを使用することも可能である。例えば、DMAバイト0が第1ページのバイト0、即ち、第1バイトに入り、それの対応するフラッグ・バイトが第1ページのバイト1に入る。これは、第2048のフラッグ・バイトが第2ページの第2バイトにあることによって継続する。DMA及び対応するフラッグ・バイトの間の幾つかの他のマッピングが可能であり、当業者には容易に明らかである。
次に、ブロック218は、データ・ロケーションを含む選択されたデータ代替ページのアドレスでもってアドレス検証及び変換テーブルのエントリを更新すること及び制御フィールドを「d」にセットすることを示す。そこで、プロセスはブロック206に進む。
ブロック214を再び参照すると、制御フィールド設定が「c」ではないという決定が行われる場合、プロセスはブロック220に進む。ブロック220は、制御フィールド設定が「d」であるか否かに関する決定を示す。制御フィールド設定「d」は第4の制御フィールド設定である。制御フィールド設定が「d」であるという決定が行われる場合、プロセスは、接続符号Aによって示されるように図8におけるブロック230に進む。
ブロック230は、アドレス検証及び変換テーブルのエントリのアドレス部分に記憶されたアドレスによって識別されるデータ・ページにDMA書込みデータを記憶することを示す。次に、ブロック232が、このデータ・ページに関連するフラッグ・ページを見つけること示す。しかる後、ブロック234が、DMA書込み中にデータが記憶されたデータ・ページにおける各データ・ロケーションに対応するフラッグ・ページ内の各フラッグ・ロケーションにフラッグをセットすることを示す。そこで、プロセスは、接続符号Bによって示されるように図7のブロック202に戻る。
図7におけるブロック220を再び参照すると、制御フィールド設定が「d」ではないという決定が行われる場合、プロセスは、エラーをレポートすることを示すブロック222に進む。しかる後、プロセスはブロック202に戻る。
図9は、本発明の実施例に従って、使用可能な代替ページの数が所定の閾値よりも小さくなったときに割込みを発生することを表す高レベルのフローチャートを示す。プロセスはブロック300によって示されるように開始し、しかる後、代替ページのリスト、即ち、プールを監視することを示すブロック302に進む。これらのリストされたページは、代替ページとして使用されるよう利用可能である。次に,ブロック304が、そのリストにおけるページの数が所定の閾値よりも大きいか否かに関する決定を示す。リストされた代替ページの数がその閾値よりも大きいという決定が行われる場合、プロセスはブロック302に戻る。リストされた代替ページの数がその閾値よりも大きくないという決定が行われる場合、プロセスはブロック306に進む。ブロック306は、「ランニング・ロー(running low)」割込みを発生することを示す。そこで、プロセスはブロック302に戻る。
図10は、本発明の実施例に従って、更なる代替ページの割振りを示す高レベルのフローチャートを示す。プロセスはブロック400によって示されるように開始し、しかる後、ブロック402に進む。ブロック402は、メモリ仮想化ソフトウェアが「ランニング・ロー」割込みを受けたか否かに関する決定を示す。メモリ仮想化ソフトウェアが「ランニング・ロー」割込みを受けてないという決定が行われる場合、プロセスはブロック402に戻る。メモリ仮想化ソフトウェアが「ランニング・ロー」割込みを受けたという決定が行われる場合、プロセスはブロック404に進む。ブロック404は、メモリ仮想化ソフトウェアが更なるページを代替ページとして使用するためにそれらを割り振ることを示す。これらの新たに割り振られたページは利用可能な代替ページとしてリストされ、従って、利用可能な代替ページのプールの一部となる。そこで、プロセスはブロック402に戻る。
図11は、本発明の実施例に従って、ページ・アウトされた物理ページに対するエントリをプラットフォームが更新する操作を表す高レベルのフローチャートを示す。プロセスはブロック500によって示されるように開始し、しかる後、ブロック502に進む。ブロック502は、メモリ仮想化ソフトウェアが、他のプロセスのために使用すべきI/Oアダプタに専用のページを選択することを表す。次に、ブロック504は、特定のページがDMA書込みのターゲットであるか否かを決定することを示す。メモリ仮想化ソフトウェアは、すべてのDMAオペレーションを検証するために使用されるアドレス検証及び変換テーブルをチェックして、この特定のページがDMA書込みのターゲットであるかどうかを決定する。アドレス検証及び変換テーブルは、書込み許可フラッグと共に、DMAオペレーションのターゲットとなり得るすべてのページのアドレスを含む。
ブロック504を再び参照すると、その特定のページがDMA書込みのターゲットではないという決定が行われる場合、プロセスはブロック512によって示されるように終了する。その特定のページがDMA書込みのターゲットであるという決定が行われる場合、プロセスはブロック506に進む。ブロック506は、この特定のページと関連するエントリをアドレス検証及び変換テーブルにおいて見つけることを表す。
次にブロック508は、このエントリに対する制御フィールドを「c」に設定することによってその制御フィールドを更新することを示す。しかる後、ブロック510はこのエントリに対するフィールドのアドレス部分をクリアすることを示す。そこでプロセスは、ブロック512によって示されるように終了する。
図12は、本発明の実施例に従って、復元されたページを形成するために、代替ページにおけるデータ・ロケーションからのデータをオリジナル・ターゲット・ページからのデータと再統合することを表す高レベルのフローチャートを示す。
プロセスはブロック600によって示されるように開始し、しかる後、ブロック602に進む。ブロック602は、特定のページが復元される必要があることを示す。例えば、1つのページに書込んでいたI/Oオペレーションが終了するとき、そのページは復元される必要がある。その書込みを行っていたI/Oアダプタは、それが制御するオペレーティング・システムに割込みを送る。オリジナルI/Oを要求したエンド・ユーザは、最終的には、そのオペレーションが終了したことを通知される。エンド・ユーザがそのページにおけるデータをアクセスしようとするとき、仮想メモリ・ページは物理的にはメイン・メモリ内にないので、その試みられたアクセスはページ・デフォルトをもたらすであろう。そこで、これは、そのページを復元するという要求をトリガする。
次に、ブロック604が、復元ページとして使用するための代替ページを代替ページのリストから選択することを示す。しかる後、ブロック606が、補助記憶装置から、復元ページとして使用されている代替ページにページ・アウトされたデータを読み込むことを表す。従って、DMA書込み時にオリジナル・ターゲット・ページに記憶されたデータが今や復元ページに記憶される。このデータは、そのデータがオリジナル・ターゲット・ページに記憶されたロケーションに対応するその復元ページ内のロケーションに記憶される。
補助記憶装置は、オリジナル・ターゲット・ページがページ・アウトされたとき、オリジナル・データが記憶された記憶装置である。オリジナル・データは、今や、復元ペーにおけるそれらのオリジナル・データ・ロケーションに記憶される。従って、この時点では、その復元ページは、ページ・アウトされる直前に存在したオリジナル・ページと同じである。
次に、プロセスはブロック608に進む。ブロック608は、オリジナル・ページがDMA書込みのターゲットであったか否かを決定することを示す。オリジナル・ページがDMA書込みのターゲットではなかったという決定が行われる場合、プロセスはブロック624によって示されるように終了する。ブロック608を再び参照すると、オリジナル・ページがDMA書込みのターゲットであったという決定が行われる場合、プロセスはブロック610に進む。ブロック610は、この代替ページのアドレスと関連するエントリをアドレス検証及び変換テーブルにおいて見つけることを示している。
次に、ブロック612が、このエントリに対する制御フィールドが「d」に設定されているか否かを決定することを示す。これは、オリジナル・ページはページ・アウトされたがそのオリジナル・ページへのDMA書込みが処理されたか否かを決定することである。DMA書込みが処理された場合、データは、意図されたオリジナルDMAページの代わりに代替データ・ページに書込まれた。制御フィールドが「d」に設定されてないという決定が行われる場合、即ち、オリジナル・ページはページ・アウトされたがそのオリジナル・ページへのDMA書込みが処理されなかったという決定が行われる場合、処理はブロック620に進む。制御フィールドが「d」に設定されているという決定が行われる場合、即ち、オリジナル・ページはページ・アウトされたがそのオリジナル・ページへのDMA書込みが処理されたという決定が行われる場合、処理はブロック614に進む。ブロック614は、制御フィールドを「b」に設定することによってこのエントリの制御フィールドを更新すること示す。しかる後、ブロック616が、有効なDMA書込みデータを識別するために、フラッグ・ロケーションに記憶されたフラッグを対応するデータ・ロケーションに記憶されているデータに比較することを表す。
次に、プロセスはブロック618に進む。ブロック618は、有効なDMA書込みデータが記憶されたデータ・ロケーションに対応する復元ページにおける各ロケーションにデータを記憶することを示す。この方法では、代替ページからのデータがオリジナル・データの上に重畳される。次に、プロセスはブロック619に進む。ブロック619は、代替データ・ページ及びフラッグ・ページを、それらがもう一度代替ページのリストに含まれるように解放することを表す。この方法では、これらの解放されたページは、再び代替ページのプールの一部となる。次に、ブロック620がこのエントリのアドレス部分に復元ページのアドレスを記憶することを表す。次に、ブロック622が、制御フィールドを「a」に設定することによってこのエントリの制御エントリ・フィールドを更新することを示す。そこで、プロセスは、ブロック624によって表されるように終了する。
本発明は、全体的にハードウェアの実施例、全体的にソフトウェアの実施例、またはハードウェア要素およびソフトウェア要素の両方を含む実施例の形を取ることが可能である。好適な実施例では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコード等を含むがそれに限定されないハードウェアおよびソフトウェアの結合体として具現化される。
更に、本発明は、コンピュータ又は任意の命令実行システムによって、またはそれに関連して、使用するためのプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセスし得るコンピュータ・プログラムの形を取ることが可能である。この説明のためには、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによってまたはそれと関連して使用するためのプログラムを内蔵、記憶、通信、伝播、または搬送することが可能な任意の実体的な装置であってもよい。
その媒体は、電子的、磁気的、光学的、電磁的、赤外線、または半導体システム(または装置またはデバイス)あるいは伝播媒体であってもよい。コンピュータ可読媒体の例は、半導体またはソリッド・ステート・メモリ、磁気テープ、取外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、固定磁気ディスク、および光ディスクを含む。光ディスクの現用の例は、コンパクト・ディスク・リード・オンリ・メモリ(CD−ROM)、コンパクト・ディスク読取り/書込み(CD−R/W)、およびDVDを含む。
プログラム・コードを記憶および/または実行するために適したデータ処理システムは、システム・バスを通してメモリ素子に直接的または間接的に結合された少なくとも1つのプロセッサを含むであろう。メモリ素子は、プログラム・コードの実際の実行時に使用されるローカル・メモリ、大容量記憶装置、および、キャッシュ・メモリを含んでもよく、特に、キャッシュ・メモリは、コードが実行時に大容量記憶装置から検索されなければならない回数を少なくするために少なくとも幾つかのプログラム・コードの一時的な記憶装置を提供する。
入出力またはI/O装置(キーボード、ディスプレイ、ポインティング装置等を含むがそれに限定されない)は、I/Oコントローラを直接的にまたはそれを介在してシステムに結合することが可能である。
ネットワーク・アダプタは、データ処理システムが、私設または公衆のネットワークの介在によって他のデータ処理システムまたはリモート・プリンタまたは記憶装置に結合されることを可能にするようにシステムに結合されてもよい。モデム、ケーブル・モデム、およびイーサネット(登録商標)・カードは、現在使用可能なタイプのネットワーク・アダプタのほんの一部に過ぎない。
例示および説明を目的として本発明の説明を行ったが、それは、網羅的であること、または開示された形式に発明を限定することを意図するものではない。当業者には多くの修正および変更が明らかであろう。発明の原理および実用的な応用例を最もよく説明するために、および特定の意図された用途に適した種々の修正を伴う種々の実施例に関して当業者が発明を理解することを可能にするために、実施例を選択および説明した。
本発明の実施例を含むコンピュータ・システムのブロック図である。 本発明の実施例に従って、各エントリに対する制御フィールドを含むアドレス検証及び変換テーブルの一部分を示す概略図である。 本発明の実施例に従って、DMA書込みデータを記憶するために使用される代替データ・ページを示す概略図である。 本発明の実施例に従って、フラッグを記憶するために使用される代替フラッグ・ページを示す概略図である。 本発明の実施例に従って、オリジナル・ターゲット・ページに記憶されたオリジナル・データをDMA書込みデータと統合するために使用される復元ページを示す概略図である。 本発明の実施例に従って、データ・ロケーションおよびフラッグ・ロケーションの両方を含む代替ページを示す概略図である。 DMA書込みを実行する方法を決定するために制御設定を利用すること、およびオリジナル・ターゲット・ページがページ・アウトされるときに代替ページを利用することを表す高レベルのフローチャートの一部である。 図7のフローチャートに結合される残りの部分である。 本発明の実施例に従って、使用可能な代替ページの数が所定の閾値よりも小さくなるとき、割り込みを発生することを示す高レベルのフローチャートである。 本発明の実施例に従って、更なる代替ページを割振ることを示す高レベルのフローチャートである。 本発明の実施例に従って、ページ・アウトされた物理ページに対するアドレス検証及び変換テーブルのエントリをプラットフォームが更新することを示す高レベルのフローチャートである。 本発明の実施例に従って、復元されたページを形成するために、代替ケージにおけるデータ・ロケーションからのデータを、オリジナル・ターゲット・ページからのデータと再統合することを示す高レベルのフローチャートである。
符号の説明
100 コンピュータ・システム
110 揮発性メモリ
135 I/O装置
150 ロジック
155 I/Oデータ・バッファ
160 オペレーティング・システム
165 ファームウェア

Claims (20)

  1. 入出力アダプタに専用のページに対するDMA書込みページ障害をコンピュータにより解決するための方法であって、
    前記入出力アダプタにより、DMAデータを前記ページに書込むための試みを行うステップと、
    前記ページが利用可能でないことを決定するステップと、
    前記DMAデータを代替ページにおけるデータ・ロケーションに書込むステップと、
    前記データ・ロケーションの各ロケーションに対応するフラッグ・ロケーションにフラッグをセットするステップであって、特定のフラッグが特定のフラッグ・ロケーションにおいてセットされているとき、前記特定のフラッグは、前記特定のフラッグ・ロケーションに対応する特定のデータ・ロケーションにDMA書込みデータが存在することを表す、ステップと、
    を含む、方法。
  2. DMA書込みページの障害に対して使用するための代替ページのプールを維持するステップと、
    前記プールから前記代替ページを選択するステップと、
    を更に含む、請求項1に記載の方法。
  3. 前記ページが仮想メモリにおいて見つかるとき、前記ページは利用可能であり、
    前記ページが仮想メモリの外に移動していたとき、前記ページは利用可能でない、
    請求項1に記載の方法。
  4. 前記入出力アダプタが前記ページにDMAデータを書込むための試みを行うことに応答して、前記ページと関連するアドレス検証及び変換テーブルにおけるエントリを識別するステップと、
    前記ページと関連する現在の制御設定を前記エントリから読取るステップと、
    前記現在の制御設定に従って、前記ページにDMAデータを書込むための前記試みを処理するステップと、
    を更に含む、請求項1に記載の方法。
  5. 前記現在の制御設定が第1の設定であることに応答して、前記ページが利用可能であることを決定し、前記DMAデータを前記ページに書込むステップを更に含む、請求項4に記載の方法。
  6. 前記現在の制御設定が第2の設定であることに応答して、前記現在の制御設定がもはや前記第2の設定ではなくなるまで、前記DMAデータを前記ページに書込むことを延期するステップを更に含む、請求項4に記載の方法。
  7. 前記現在の制御設定が第3の設定であることに応答して、前記ページが利用可能でないことを決定するステップと、
    前記代替ページを選択するステップと、
    前記ページの前記アドレスを前記代替ページのアドレスでもって置換するように前記エントリを更新するステップと、
    を更に含む、請求項4に記載の方法。
  8. 前記現在の制御設定が第4の設定であることに応答して、前記DMAデータを前記代替ページにおけるデータ・ロケーションに書込むステップと、
    前記データ・ロケーションに対応するフラッグ・ロケーションにフラッグをセットするステップと、
    を更に含む、請求項4に記載の方法。
  9. 前記ページが利用可能にされる必要があることを決定するステップと、
    復元ページとなるための代替ページを選択するステップと、
    前記ページからのオリジナルデータを前記復元ページに記憶するステップと、
    セットされているフラッグを含むフラッグ・ロケーションと関連するデータ・ロケーションに記憶されるデータを選択するステップと、
    前記選択されたデータを前記復元ページにコピーするステップであって、前記選択されたデータが前記データ・ロケーションに対応する前記復元ページにおけるロケーションに記憶される、ステップと、
    を更に含む、請求項1に記載の方法。
  10. 入出力アダプタに専用のページに対するDMA書込みページ障害を解決するための前記入出力アダプタに結合されたプラットフォームを含むデータ処理システムにおける装置であって、
    前記入出力アダプタがDMAデータを前記ページに書込むための試みを行い、
    前記ページが利用可能でないことを前記プラットフォームが決定し、
    前記プラットフォームが前記DMAデータを代替ページにおけるデータ・ロケーションに書込み、
    前記データ・ロケーションの各ロケーションに対応するフラッグ・ロケーションにフラッグをセットし、特定のフラッグが特定のフラッグ・ロケーションにおいてセットさていれるとき、前記特定のフラッグは、前記特定のフラッグ・ロケーションに対応する特定のデータ・ロケーションにDMA書込みデータが存在することを表す、
    装置。
  11. 前記プラットフォームがDMA書込みページの障害に対して使用するための代替ページのプールを維持し、
    前記プラットフォームが前記プールから前記代替ページを選択する、
    請求項10に記載の装置。
  12. 前記ページが仮想メモリにおいて見つかるとき、前記ページは利用可能であり、
    前記ページが仮想メモリの外に移動していたとき、前記ページは利用可能でない、
    請求項10に記載の装置。
  13. 前記入出力アダプタが前記ページにDMAデータを書込むための試みを行うことに応答して、前記プラットフォームが、前記ページと関連するアドレス検証及び変換テーブルにおけるエントリを識別し、
    前記プラットフォームが、前記ページと関連する現在の制御設定を前記エントリから読取り、
    前記プラットフォームが、前記現在の制御設定に従って、前記ページにDMAデータを書込むための前記試みを処理する、
    請求項10に記載の装置。
  14. 前記現在の制御設定が第1の設定であることに応答して、前記プラットフォームが、前記ページが利用可能であることを決定し、前記DMAデータを前記ページに書込む、請求項13に記載の装置。
  15. 前記現在の制御設定が第2の設定であることに応答して、前記現在の制御設定がもはや前記第2の設定ではなくなるまで、前記プラットフォームが、前記DMAデータを前記ページに書込むことを延期する、請求項13に記載の装置。
  16. 前記現在の制御設定が第3の設定であることに応答して、前記プラットフォームが、前記ページが利用可能でないことを決定し、
    前記プラットフォームが前記代替ページを選択し、
    前記プラットフォームが、前記ページの前記アドレスを前記代替ページのアドレスでもって置換するように前記エントリを更新する、
    請求項13に記載の装置。
  17. 前記現在の制御設定が第4の設定であることに応答して、前記プラットフォームが前記DMAデータを前記代替ページにおけるデータ・ロケーションに書込み、
    前記プラットフォームが、前記データ・ロケーションに対応するフラッグ・ロケーションにフラッグをセットする、
    請求項13に記載の装置。
  18. 前記プラットフォームが、前記ページが利用可能にされる必要があることを決定し、
    前記プラットフォームが、復元ページとなるための代替ページを選択し、
    前記プラットフォームが、前記ページからのオリジナル・データを前記復元ページに記憶し、
    前記プラットフォームが、セットされているフラッグを含むフラッグ・ロケーションと関連するデータ・ロケーションに記憶されるデータを選択し、
    前記プラットフォームが、前記選択されたデータを前記復元ページにコピーし、従って、前記選択されたデータが、前記データ・ロケーションに対応する前記復元ページにおけるロケーションに記憶される、
    請求項10に記載の装置。
  19. 入出力アダプタに専用のページに対するDMA書込みページ障害を解決するためのコンピュータ使用可能プログラム・コードを含むコンピュータ・プログラムであって、
    前記入出力アダプタにより、DMAデータを前記ページに書込むための試みを行うためのコンピュータ使用可能プログラム・コードと、
    前記ページが利用可能でないことを決定するためのコンピュータ使用可能プログラム・コードと、
    前記DMAデータを代替ページにおけるデータ・ロケーションに書込むためのコンピュータ使用可能プログラム・コードと、
    前記データ・ロケーションの各ロケーションに対応するフラッグ・ロケーションにフラッグをセットするためのコンピュータ使用可能プログラム・コードであって、特定のフラッグが特定のフラッグ・ロケーションにおいてセットされているとき、前記特定のフラッグは、前記特定のフラッグ・ロケーションに対応する特定のデータ・ロケーションにDMA書込みデータが存在することを表す、コンピュータ使用可能プログラム・コードと、
    コンピュータ・プログラム。
  20. DMA書込みページの障害に対して使用するための代替ページのプールを維持するためのコンピュータ使用可能プログラム・コードと、
    前記プールから前記代替ページを選択するためのコンピュータ使用可能プログラム・コードと、
    を更に含む、請求項19に記載のコンピュータ・プログラム。
JP2007071774A 2006-03-28 2007-03-20 代替ページのプールを使用してdma書込みページ障害をコンピュータにより管理するための方法、装置、及びコンピュータ・プログラム Active JP5063152B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/390,790 2006-03-28
US11/390,790 US7734842B2 (en) 2006-03-28 2006-03-28 Computer-implemented method, apparatus, and computer program product for managing DMA write page faults using a pool of substitute pages

Publications (2)

Publication Number Publication Date
JP2007272885A true JP2007272885A (ja) 2007-10-18
JP5063152B2 JP5063152B2 (ja) 2012-10-31

Family

ID=38662427

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007071774A Active JP5063152B2 (ja) 2006-03-28 2007-03-20 代替ページのプールを使用してdma書込みページ障害をコンピュータにより管理するための方法、装置、及びコンピュータ・プログラム

Country Status (4)

Country Link
US (1) US7734842B2 (ja)
JP (1) JP5063152B2 (ja)
CN (1) CN100576190C (ja)
TW (1) TWI417724B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013500524A (ja) * 2009-07-24 2013-01-07 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 周辺相互接続におけるi/o及び計算負荷軽減デバイスのための2レベルのアドレストランスレーションを用いるiommu
JP2013500525A (ja) * 2009-07-24 2013-01-07 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド I/oのための多重レベルアドレストランスレーションを含むi/oメモリ管理ユニット及び計算負荷軽減

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8973144B2 (en) 2011-10-13 2015-03-03 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US9069586B2 (en) 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
CN103309619A (zh) * 2012-03-16 2013-09-18 国民技术股份有限公司 一种闪存数据存储方法
US20160019168A1 (en) * 2014-07-18 2016-01-21 Qualcomm Incorporated On-Demand Shareability Conversion In A Heterogeneous Shared Virtual Memory
US9658918B2 (en) * 2015-02-20 2017-05-23 Dell Products, Lp User prompted volume recovery
US10216533B2 (en) * 2015-10-01 2019-02-26 Altera Corporation Efficient virtual I/O address translation
US10528476B2 (en) * 2016-05-24 2020-01-07 International Business Machines Corporation Embedded page size hint for page fault resolution
CN106775477B (zh) * 2016-12-19 2021-01-01 湖南国科微电子股份有限公司 Ssd主控数据传输管理装置及方法
US12026098B1 (en) * 2022-02-10 2024-07-02 Apple Inc. Hardware-assisted page pool grow operation

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04308953A (ja) * 1991-04-05 1992-10-30 Kyocera Corp 仮想アドレス計算機装置
JPH05173930A (ja) * 1991-12-19 1993-07-13 Yokogawa Electric Corp Dma制御回路
JPH0997214A (ja) * 1995-09-29 1997-04-08 Internatl Business Mach Corp <Ibm> 補助プロセッサのためのアドレス変換を含む情報処理システム
JP2002067405A (ja) * 2000-07-31 2002-03-05 Hewlett Packard Co <Hp> プリンタ内でデータを転送するシステム
JP2004127291A (ja) * 2002-09-30 2004-04-22 Internatl Business Mach Corp <Ibm> 連続したメモリ・アドレスを提供する方法、システムおよびコンピュータ・ソフトウェア

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5423335A (en) 1977-07-22 1979-02-21 Nec Corp Page detection mechanism
US4277826A (en) * 1978-10-23 1981-07-07 Collins Robert W Synchronizing mechanism for page replacement control
USRE37305E1 (en) * 1982-12-30 2001-07-31 International Business Machines Corporation Virtual memory address translation mechanism with controlled data persistence
US4868738A (en) * 1985-08-15 1989-09-19 Lanier Business Products, Inc. Operating system independent virtual memory computer system
US5123101A (en) * 1986-11-12 1992-06-16 Xerox Corporation Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss
US5295258A (en) * 1989-12-22 1994-03-15 Tandem Computers Incorporated Fault-tolerant computer system with online recovery and reintegration of redundant components
JP2774862B2 (ja) * 1990-07-16 1998-07-09 株式会社日立製作所 Dma制御装置および情報処理装置
JP3590075B2 (ja) * 1992-01-20 2004-11-17 株式会社東芝 仮想記憶方式のデータ処理装置及び方法
US5440710A (en) * 1994-03-08 1995-08-08 Exponential Technology, Inc. Emulation of segment bounds checking using paging with sub-page validity
US5729710A (en) * 1994-06-22 1998-03-17 International Business Machines Corporation Method and apparatus for management of mapped and unmapped regions of memory in a microkernel data processing system
US5842225A (en) * 1995-02-27 1998-11-24 Sun Microsystems, Inc. Method and apparatus for implementing non-faulting load instruction
US6061773A (en) * 1996-05-03 2000-05-09 Digital Equipment Corporation Virtual memory system with page table space separating a private space and a shared space in a virtual memory
US6055619A (en) * 1997-02-07 2000-04-25 Cirrus Logic, Inc. Circuits, system, and methods for processing multiple data streams
US6338119B1 (en) * 1999-03-31 2002-01-08 International Business Machines Corporation Method and apparatus with page buffer and I/O page kill definition for improved DMA and L1/L2 cache performance
US6622263B1 (en) * 1999-06-30 2003-09-16 Jack Justin Stiffler Method and apparatus for achieving system-directed checkpointing without specialized hardware assistance
US6745306B1 (en) * 1999-07-29 2004-06-01 Microsoft Corporation Method and system for restricting the load of physical address translations of virtual addresses
US6804729B2 (en) * 2002-09-30 2004-10-12 International Business Machines Corporation Migrating a memory page by modifying a page migration state of a state machine associated with a DMA mapper based on a state notification from an operating system kernel

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04308953A (ja) * 1991-04-05 1992-10-30 Kyocera Corp 仮想アドレス計算機装置
JPH05173930A (ja) * 1991-12-19 1993-07-13 Yokogawa Electric Corp Dma制御回路
JPH0997214A (ja) * 1995-09-29 1997-04-08 Internatl Business Mach Corp <Ibm> 補助プロセッサのためのアドレス変換を含む情報処理システム
JP2002067405A (ja) * 2000-07-31 2002-03-05 Hewlett Packard Co <Hp> プリンタ内でデータを転送するシステム
JP2004127291A (ja) * 2002-09-30 2004-04-22 Internatl Business Mach Corp <Ibm> 連続したメモリ・アドレスを提供する方法、システムおよびコンピュータ・ソフトウェア

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013500524A (ja) * 2009-07-24 2013-01-07 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 周辺相互接続におけるi/o及び計算負荷軽減デバイスのための2レベルのアドレストランスレーションを用いるiommu
JP2013500525A (ja) * 2009-07-24 2013-01-07 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド I/oのための多重レベルアドレストランスレーションを含むi/oメモリ管理ユニット及び計算負荷軽減

Also Published As

Publication number Publication date
TW200821833A (en) 2008-05-16
US20070260769A1 (en) 2007-11-08
CN100576190C (zh) 2009-12-30
JP5063152B2 (ja) 2012-10-31
CN101046774A (zh) 2007-10-03
TWI417724B (zh) 2013-12-01
US7734842B2 (en) 2010-06-08

Similar Documents

Publication Publication Date Title
JP5063152B2 (ja) 代替ページのプールを使用してdma書込みページ障害をコンピュータにより管理するための方法、装置、及びコンピュータ・プログラム
US9471507B2 (en) System and device for page replacement control between virtual and real memory spaces
JP5484117B2 (ja) ハイパーバイザ及びサーバ装置
US20080235477A1 (en) Coherent data mover
JP5085180B2 (ja) 情報処理装置およびアクセス制御方法
EP2221830A1 (en) Memory device and wear leveling method thereof
US10331568B2 (en) Locking a cache line for write operations on a bus
JP2008015768A (ja) 記憶システム並びにこれを用いたデータの管理方法
JP2009032252A (ja) クラッシュダンプ用のメモリアロケーション
JPWO2008099786A1 (ja) メモリ障害復旧方法、情報処理装置およびプログラム
JP3872968B2 (ja) コンピュータ・システムにおいてメモリを動的に再割当てするシステムおよび方法
WO2015015589A1 (ja) 情報処理装置、メモリダンプ方法、およびメモリダンププログラム
US20120226832A1 (en) Data transfer device, ft server and data transfer method
US6931471B2 (en) Method, apparatus, and computer program product for migrating data subject to access by input/output devices
CN113722131A (zh) 用于促进存储设备中的快速崩溃恢复的方法和系统
JP4792065B2 (ja) データ記憶方法
JP5795418B2 (ja) キャッシュ装置、及び記憶システム
JP5627754B2 (ja) 仮想記憶管理装置及び記憶管理装置
EP4033346B1 (en) Affinity-based cache operation for a persistent storage device
JP4164452B2 (ja) 情報処理方法及び装置
JP2019168952A (ja) メモリ管理装置、メモリ管理方法、及びプログラム
JP2004171469A (ja) キャッシュメモリシステムおよびキャッシュメモリ制御方法
JP2018010507A (ja) メモリ管理プログラム、メモリ管理方法及びメモリ管理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120501

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: 20120710

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: 20120807

R150 Certificate of patent or registration of utility model

Ref document number: 5063152

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3