JP2004110812A - マルチプロセッサ・ホスト上でのマルチプロセッサ・アドレス変換の効率のよいエミュレーションのための方法およびシステム - Google Patents

マルチプロセッサ・ホスト上でのマルチプロセッサ・アドレス変換の効率のよいエミュレーションのための方法およびシステム Download PDF

Info

Publication number
JP2004110812A
JP2004110812A JP2003302167A JP2003302167A JP2004110812A JP 2004110812 A JP2004110812 A JP 2004110812A JP 2003302167 A JP2003302167 A JP 2003302167A JP 2003302167 A JP2003302167 A JP 2003302167A JP 2004110812 A JP2004110812 A JP 2004110812A
Authority
JP
Japan
Prior art keywords
target
host
memory address
virtual memory
page table
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.)
Pending
Application number
JP2003302167A
Other languages
English (en)
Inventor
Erik Richter Altman
エリック・リヒター・アルトマン
Ravi Nair
ラヴィ・ナイア
John Kevin Obrien
ジョン・ケヴィン・オブライエン
Kathryn Mary O'brien
キャスリン・メアリー・オブライエン
Peter Howland Oden
ピーター・ハウランド・オーデン
Daniel Arthur Prener
ダニエル・アーサー・プレナー
Sumedh Wasudeo Sathaye
スメード・ワスデオ・サタイエ
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 JP2004110812A publication Critical patent/JP2004110812A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • 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

Landscapes

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

Abstract

【課題】 他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定を効果的にマッピングすることができる方法および構造を提供すること。
【解決手段】 ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするための方法(およびシステム)は、ターゲット仮想メモリ・アドレスをシミュレート済みページ・テーブルに入力してホスト仮想メモリ・アドレスを入手するステップを含む。ターゲット・システムは、それが動作しているソフトウェアに認識されない。
【選択図】 図10



Description

 本発明は、一般に、コンピュータ・システムの分野に関し、より具体的には、他のマルチプロセッシング・コンピューティング・システム上でシミュレートしたときに、あるマルチプロセッシング・コンピュータ・システムの共用メモリをマッピングするための方法に関する。
 コンピューティング・システムは、プロセッサと、メモリと、入出力装置とを含む、いくつかの部分を含んでいる。あるコンピューティング・システムの挙動を他のコンピューティング・システム上でエミュレートすることが必要である場合が多い。
 エミュレーションの主な理由の1つは、あるシステム(たとえば、「ターゲット・コンピューティング・システム」)用に作成されたプログラムを他のシステム(たとえば、「ホスト・コンピューティング・システム」)上で実行して同じ結果が得られるようにすることである。他のプロセッサの命令セットを使用してあるプロセッサの命令セットをエミュレートするためのいくつかの技法が記載されている(たとえば、1998年2月発表のStephen A. Herrodの「Using CompleteMachine Simulation to Understand Computer System Behavior」というスタンフォード大学博士論文により開示されたSIMOS、または1987年10月4〜8日にオーランドで開催されたObject Oriented Programming Systems Languages and ApplicationsConference (OOPSLA)の会議録ならびにSpecialIssue of Sigplan Notices, vol. 22, No. 12, Dec. 1987, vol. 22, No. 7, Jun. 24におけるCathy Mayによる「Mimic: A Fast System/370 Simulator」という論文に開示されているMIMIC)。
 エミュレーションを忠実に実行するためには、このようなシステム内のメモリの挙動をエミュレートすることも必要である。通常、この挙動には、プログラム指定アドレスによるメモリ内の位置の読取りおよび書込み以上のものが含まれる。
 より具体的には、通常のことであるが、ターゲット・システム上で仮想メモリを実現する場合、あるメモリ位置へのアクセスには、要求側タスクがアクセス動作を実行するための権利を有するかどうかを検証することを伴う可能性がある。また、それがまだメモリ内にない場合には要求した位置を含むページをメモリに持ち込むことを伴う可能性もある。
 このような機能は通常、図1に示すシステム100に示すように実行されるが、その場合、計算したオペランド・アドレスがターゲット仮想メモリ・アドレスとしてターゲット・ページ・マッピング・テーブル110に入力される。
 したがって、図1では、テーブル110内のアドレス指定位置を含むページをチェックして、(a)それがすでにメモリ(たとえば、ターゲット実メモリ120)内にあるかどうか、(b)それが所望のアクセスを許可するかどうか、(c)どの物理メモリ位置が所望のページに対応するかを確認する。この場合も、このような動作のそれぞれがターゲット・システムの実際のハードウェアで実行されることに留意されたい。
 このようなアクセスを効率のよいものにするため、これらのチェックはエミュレーティング・マシン内のハードウェアで実行され、多くの場合、実際のメモリ・アクセスと同時に実行され、アクセスが拒否された場合はアクセスの結果が廃棄される。ターゲット実メモリ120の出力はオペランド値であり、これはLOADなどに対応する可能性がある(STOREはホストを通って反対方向へ進むものと思われることに留意されたい)。
 通常、ホスト・コンピューティング・システムは、このような仮想アドレス指定を容易にするためのハードウェアも提供する。Scalzi他に交付された米国特許第6075937号に開示されているような実現例では、ホスト仮想アドレス指定ハードウェアがサポートするプリミティブに関してターゲット・アクセスを解釈する。これは、シミュレート済みページ・マッピング・テーブル210とホスト実メモリ220を使用する図2のシステム200に示されている。
 ページ・マッピング・テーブル210により行われる仮想アドレスからホスト実メモリ220内の実アドレスへのマッピングは、ターゲット・システム上の各仮想アドレス空間(「プロセス」に関連する場合が多い)ごとに固有のものである。
 オペレーティング・システムは仮想ページをホスト実メモリの実ページにマッピングするページ・マッピング・テーブルをそこに備えているので、シミュレート済みページ・マッピング・テーブル210はターゲット・ページ・マッピング・テーブル110とは異なることに留意されたい。しかし、図2では、実メモリはターゲット実メモリではなくホスト実メモリをアドレス指定しなければならないので、これは動作不能になる(たとえば、機能しなくなる)。このため、このマップは、ホスト実メモリへマッピング中の実メモリがどこにあるかを示す、もう1つのフィールドを含まなければならない。
 ホスト・システムが仮想メモリも実現し、各ホスト・プロセスごとに許容される仮想アドレス空間がターゲット上で許容されるアドレス空間と少なくとも同じ大きさである場合、ターゲット/ホスト仮想アドレス・マッパ310と、ホスト・ページ・マッピング・テーブル320と、ホスト実メモリ330とを有する図3の構造300に示すようにプロセス・レベルでエミュレーションを実行することができる。
 図3の方式では、マッパ310によりターゲット仮想アドレス空間がホスト仮想アドレス空間にマッピングされ、次にそれが、ホストのページ・マッピング・テーブル・メカニズム320を使用してホスト実アドレス空間に変換される。
 したがって、図3のフロント・エンドでは、シミュレート済みページ・マッピング・テーブル(たとえば、図2のテーブル210)を備える代わりに、ターゲット仮想アドレスをホスト仮想アドレスに変換できるようにターゲット/ホスト仮想アドレス・マッパ310が設けられ、それがホストのオペレーティング・システムを使用してマッピングの残りを実行する。
 基本的に、図3の背後にある方式は、ホストのオペレーティング・システム上で図2の機能ブロックを実行できないことを認識している。このため、図3は、ターゲット仮想メモリ・アドレスを取り、それを、ホスト・システム上で動作しているオペレーティング・システムが使用できるもの(たとえば、ホスト仮想メモリ・アドレス)に変換することを目指している。ホスト上で動作するオペレーティング・システムは、その環境(たとえば、ホスト仮想メモリ・アドレス)内の仮想メモリ・アドレスのみを認識して理解することができる、それ専用のページ・マッピング・テーブルを備えている。したがって、いったんホスト仮想メモリ・アドレスを入手すると、マッピングの残りをホスト内で実行することができる。
 しかし、いずれの方式も、IBMの整理番号YOR920019533US1を有し、本出願と同時に出願され、「マルチプロセッサ・ホスト・システム上でのマルチプロセッサ・エミュレーションのための方法およびシステム」という名称の米国特許出願第10/244414号に記載されているようなエミュレーション環境では不十分であることが分かっている。このような環境では、ターゲット・マルチプロセッシング・システム内のプロセッサのシミュレーションは、ホスト・マルチプロセッシング・システム内の固有のプロセッサによって直接実行されるわけではない。
 むしろ、プロセッサをエミュレートするタスクは、ホスト上で必要な他の補助タスクとともにプールされ、ホスト上のスケジューラがこれらのタスクを使用可能プロセッサに割り振る。この方式の長所は、ホスト上で使用可能なプロセッサより多いプロセッサを有する可能性のあるシステムをエミュレートできる可能性があることである。
 Scalzi他に交付された米国特許第6075937号に開示されている方式では、各ターゲット・プロセッサを1つのホスト・プロセッサにマッピングすることを必要としている。すなわち、このようなシステムでは1対1の対応関係が必要であり、このため、このようなエミュレーションには適切ではない。
 仮想マッピング方式は考えられる候補の1つであるが、例外として、ターゲット・システム内のタスクを複数プロセスに区分化することについてエミュレーション・ソフトウェアが把握していることが必要である。これは、システム・ソフトウェアがエミュレート中であることをエミュレーション・システムが理解していない限り、不可能である場合が多い。
 すなわち、ターゲット(ゲスト)のページ・マッピング・テーブルはターゲット/ホスト仮想アドレス・マッパ310などに再生されるので、図3の方式を機能させるためにターゲット(ゲスト)上で動作しているオペレーティング・システムで何が行われているかを正確に把握していなければならない。しかし、あるシステムのシステム・エミュレーションを実行する際に、動作中のソフトウェアを制御することは滅多にないので、これは滅多に行われない。
 しかも、ターゲットの64ビット仮想アドレス指定空間を、たとえば、ホストの32ビット仮想アドレス指定空間にマッピングすることは直接的に可能であるわけではない。前述の通り、エミュレーションに関連する他の機能のためにもメモリを予約しなければならない場合が多く、このため、このようなエミュレーションはホスト用の64ビット仮想アドレス空間でも困難である可能性がある。
 したがって、(たとえば、多対多のマッピングが存在するマルチプロセッシング環境において)エミュレート中のターゲット・プロセッサとその挙動を再生するホスト・プロセッサとの間の厳密な対応関係をエミュレーション環境が備えていない場合、ならびにエミュレーション・ソフトウェアがターゲット・システムのページ・テーブル・マッピングを認識しているが、ターゲット・システム上で実行されるタスクの性質を認識していない場合(たとえば、ターゲット上で動作しているソフトウェアに対する実際の厳密な制御が存在しない場合)に、メモリ・マッピング問題の解決策を見つけることが望ましい。
 本発明以前には、このような解決策は開発はおろか認識もされていなかった。
1998年2月発表のStephenA. Herrodの「Using Complete MachineSimulation to Understand Computer System Behavior」というスタンフォード大学博士論文 1987年10月4〜8日にオーランドで開催されたObject Oriented Programming Systems Languages and ApplicationsConference (OOPSLA)の会議録ならびにSpecialIssue of Sigplan Notices, vol. 22, No. 12, Dec. 1987, vol. 22, No. 7, Jun. 24におけるCathy Mayによる「Mimic: A Fast System/370 Simulator」という論文 米国特許第6075937号
 従来の方法および構造の上記その他の問題、欠点、短所を考慮して、本発明の一目的は、他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定を効果的にマッピングすることができる方法および構造を提供することにある。
 本発明の第1の態様では、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするための方法(およびシステム)は、ターゲット仮想メモリ・アドレスをシミュレート済みページ・テーブルに入力してホスト仮想メモリ・アドレスを入手するステップを含む。ターゲット・システムは、それが動作しているソフトウェアに認識されない。
 本発明の第2の態様では、他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングする方法は、ターゲット仮想メモリ・アドレスによりターゲット・プロセッサ上のローカル・ルックアサイド・テーブル(LLT)にアクセスするステップと、LLTに「ミス」があるかどうかを判定するステップと、LLTで判定されたミスにより、グローバル・ページ・テーブル用のロックを入手するステップとを含む。
 本発明の第3の態様では、ターゲット・システムの動作を表現する1つまたは複数のスレッドの実行によりターゲット・nプロセッサ・システム(n≧1)の動作をエミュレートするためのホスト・マルチプロセッサ・システムにおいて、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするための方法は、(a)ターゲット・システム仮想メモリ・アドレス(ATV)を読み取るステップと、(b)ATVをターゲット実アドレス(ATR)にマッピングするステップと、(c)ATRをホスト仮想メモリ・アドレス(AHV)にマッピングするステップと、(d)AHVをホスト実メモリ・アドレスにマッピングするステップとを含み、ターゲット・システムのメモリ・アドレス指定のエミュレーションがホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われる。
 本発明の第4の態様では、ターゲット・システムのメモリ・アドレス指定をエミュレートするためのシステムは、ターゲット・システムからのターゲット仮想メモリ・アドレスをホスト仮想メモリ・アドレスおよびページ・アクセス権にマッピングするためのページ・テーブルを含み、ターゲット・システムは、それが動作しているソフトウェアに認識されない。
 本発明の第5の態様では、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするためのシステムは、ターゲット仮想メモリ・アドレスを受け取り、ターゲット仮想メモリ・アドレスに関する情報がLLTに記憶された場合にホスト仮想メモリ・アドレスおよびページ・アクセス権を出力するためのローカル・ルックアサイド・テーブル(LLT)を含む。
 本発明の第6の態様では、他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングするためのシステムは、ターゲット仮想メモリ・アドレスとそれに対応するホスト仮想メモリ・アドレスとを記憶するためのターゲット・プロセッサ上のローカル・ルックアサイド・テーブル(LLT)と、ターゲット仮想メモリ・アドレスによりLLTにアクセスするための手段と、LLTに「ミス」があるかどうかを判定するための手段と、判定手段からの入力に基づいて、グローバル・ページ・テーブル用のロックを入手するための手段とを含む。
 本発明の第7の態様では、ターゲット・システムの動作を表現する1つまたは複数のスレッドの実行によりターゲット・nプロセッサ・システム(n≧1)の動作のマルチプロセッサ・エミュレーションのためのシステムは、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするための手段を含み、そのエミュレーティング手段は、(a)ターゲット・システム仮想メモリ・アドレス(ATV)を読み取るための手段と、(b)ATVをターゲット実アドレス(ATR)にマッピングするための手段と、(c)ATRをホスト仮想メモリ・アドレス(AHV)にマッピングするための手段と、(d)AHVをホスト実メモリ・アドレスにマッピングするための手段とを含み、ターゲット・システムのメモリ・アドレス指定のエミュレーションがホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われる。
 本発明の第8の態様では、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートする方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体であって、その方法は、ターゲット仮想メモリ・アドレスをシミュレート済みページ・テーブルに入力してホスト仮想メモリ・アドレスを入手するステップを含み、ターゲット・システムは、それが動作しているソフトウェアに認識されない。
 本発明の第9の態様では、他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングする方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体であって、その方法は、ターゲット仮想メモリ・アドレスによりターゲット・プロセッサ上のローカル・ルックアサイド・テーブル(LLT)にアクセスするステップと、LLTに「ミス」があるかどうかを判定するステップと、LLTで判定されたミスにより、ページ・テーブル用のロックを入手するステップとを含む。
 本発明の第10の態様では、ターゲット・システムの動作を表現する1つまたは複数のスレッドの実行によりターゲット・nプロセッサ・システム(n≧1)の動作をエミュレートするホスト・マルチプロセッサ・システムにおいて、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするための方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体であって、その方法は、(a)ターゲット・システム仮想メモリ・アドレス(ATV)を読み取るステップと、(b)ATVをターゲット実アドレス(ATR)にマッピングするステップと、(c)ATRをホスト仮想メモリ・アドレス(AHV)にマッピングするステップと、(d)AHVをホスト実メモリ・アドレスにマッピングするステップとを含み、ターゲット・システムのメモリ・アドレス指定のエミュレーションがホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われる。
 本発明の固有かつ自明ではない諸態様により、他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定を効率よくマッピングすることができる。
 すなわち、本発明は、多対多のマッピングが存在し、ターゲット上で動作しているソフトウェアに対する実際の厳密な制御が存在しないマルチプロセッシング環境においてメモリ・マッピング問題に対する固有の解決策を提供している。
 さらに、本発明は、共有メモリを効率よくマッピングするエミュレーションを可能にし、特に、動作だけでなく、メモリ、アクセス機能などもエミュレートすることによりエミュレーションを強化するものである。実際は、本発明では、いかなるマッピングでも、ある位置から実位置へのマッピングと、その位置にアクセスする際の特権のマッピングの両方を必要とすることを認識(かつ考慮)している。本発明では、これらの両方を考慮に入れている。
 このため、本発明は、他のシステムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるシステムのメモリ・アドレスをより効率よくしかもより最適にマッピングすることができる。他のシステムの仮想メモリ・アドレス指定を使用することは、本発明の主な特徴の1つである。
 すなわち、他のマルチプロセッシング・システムの実アドレスへの直接的なマッピングを実行することが可能な技法が存在する可能性がある。しかし、本発明は、他のシステムの仮想メモリ・アドレス指定システムをエミュレーションに使用することを可能にする。実メモリ・アドレスは、制限される(たとえば、空間/容量が小さい)可能性のある物理的な「もの」(構造)なので、この技法は前述の直接マッピングよりかなり優れている。しかし、仮想メモリの使用は、マッピングを行うときのより大きい空間を見込んでいる。したがって、ターゲット(ゲスト)の64ビット仮想メモリをホストの64ビット仮想メモリに向ける(マッピングする)ことができるが、同じメモリを実メモリにマッピングする場合は、32ビットのみが可能になる。
 この方式は、カーネル・プログラムではなく、アプリケーション・プログラムが享受するすべての長所を含んでいる。たとえば、同時に動作する複数のエミュレータを備えることは、より容易なことである。また、エミュレータの正確さを検証するかまたはエミュレータのパフォーマンスを調整するために、デバッグまたはモニタあるいはその両方を行うためのツールを利用することも可能である。
 上記その他の目的、態様、および長所は、添付図面に関連して以下に示す本発明の好ましい実施形態の詳細な説明からより十分に理解されるだろう。
 次に、添付図面、より具体的には図4〜12を参照すると、本発明による方法および構造の好ましい実施形態が示されている。
 詳細な説明に取りかかる前に、ターゲットのオペレーティング・システム・ソフトウェアがすでにターゲット仮想アドレスをターゲット実アドレスに変換するためのメカニズムを有するものと想定する。
 このようなマッピングは、ターゲット・システム上の物理実メモリに依存することになる。ページ・テーブル自体を記憶する位置は、エミュレーション・システムに把握されているものと想定する。
 エミュレーション・システムは、エミュレートしたターゲット・システムの実アドレスより適度に大きい仮想アドレス空間を有するプロセスであると想定する。これにより、ターゲットの実アドレス空間をエミュレートするために、ホストのまとまった連続仮想アドレス空間を予約することができる。
 したがって、図4に転じ、一般的かつ非常に単純化して述べると、本発明者らは、ターゲット・ページ・マッピング・テーブル410はすでにターゲット・システム・ソフトウェア内に存在するが放置されていることと、ホスト・ページ・マッピング・テーブル430およびホスト実メモリ440(ホスト上で動作しているオペレーティング・システムを示唆するもの)はホスト上で動作しており、同様に放置されていることを認識していた。
 しかし、本発明は、テーブル410、430およびホスト実メモリ440(およびホスト上で動作しているオペレーティング・システム)の諸機能を利用するが、ターゲット・システムとホスト・システムとの間に両者間のインタフェースとして機能するターゲット実/ホスト仮想マッパ420(たとえば、ターゲット実アドレスをホスト仮想アドレスにマッピングするもの)を入れる。
 したがって、図4に示すように、ホストのオペレーティング・システムは、この空間内の任意のアドレスをそれ専用の実アドレス空間内の実アドレスに変換する。
 具体的には、計算したオペランド・アドレスはターゲット仮想メモリ・アドレスとしてターゲット・ページ・マッピング・テーブル410に入力され、これがターゲット実メモリ・アドレスを生成する。ターゲット実メモリ・アドレスはターゲット実/ホスト仮想マッパ420に入力され、これがターゲット実メモリ・アドレスをホスト仮想アドレスにマッピングする。ホスト仮想メモリ・アドレスはホスト・ページ・マッピング・テーブル430(すでに存在し、ホストにより連続的に更新される)に入力され、これがホスト実メモリ・アドレスを生成する。ホスト実メモリ・アドレスはホスト実メモリ440に入力され、これがオペランド値(たとえば、LOADなど)を生成する(STOREはホスト実メモリ440を通って反対方向へ進むものと思われることに留意されたい)。
 この方式では、ホストの実アドレス空間とターゲットの実アドレス空間が一致する必要がないことに留意されたい。ホストの実アドレス空間がターゲットのものより小さい場合、ホストの仮想アドレス指定により、ページが適切にスワップインおよびスワップアウトされることになる。したがって、ホストの実アドレス空間よりかなり大きいターゲットの実アドレス空間を有することは特に不利益ではないが、ターゲット・ページ・テーブル410のサイズをいくらか大きくすることは可能である。
 したがって、ターゲット・マルチプロセッシング・システムのパラメータは、その実メモリ・サイズが物理的に可能なものよりかなり大きくなるように設定することができるだろう。
 これは図5に示されているが、同図では、ターゲット・アドレスのマッピングはエミュレートしたオペレーティング・システムの一機能であり、このため、エミュレーション・システムにより変更または理解する必要はないことも示している。
 すなわち、図5のシステム500は、ターゲット・オペレーティング・システム機能500Aとホスト・オペレーティング・システム機能500Bがシミュレートした実/ホスト仮想マッパ520によって分離されていることを示している。図5は、主にターゲット・システムが所与の量の実メモリを有する可能性があるという点で図4とは異なっており、エミュレート中のシステムでは、それがホスト上に存在する実メモリではなく、ホスト上に存在するものよりかなり大きい実メモリであると想像(想定)することができる。したがって、このような動作は、ターゲットの実メモリがホスト上で使用可能な(物理的に可能な)ものよりかなり大きいときに有用になるだろう。
 したがって、図5に戻ると、ターゲット・ページ・マッピング・テーブル510は、ターゲット仮想メモリ・アドレスを受け取り、ターゲットのシミュレートした実メモリ・アドレスをシミュレートした実/ホスト仮想マッパ520に渡すことになる。マッパ520は図4のマッパ420と同様のものであるが、ターゲットの実メモリがホスト上で物理的に使用可能なものより大きい状況を処理するものである。
 この状況(たとえば、ターゲットの実メモリの方が大きい)はあまり頻繁に発生するわけではなく、アプリケーションが十分な空間を備えていない場合にアプリケーションが「仮想メモリを大いに使用」し始め、したがって、ホストの仮想メモリを大いに使用し始める可能性があり、それにより、「スラッシング」(すなわち、システム内のページの断続的置換)に至る可能性があるので、この状況は好ましいことではないことに留意されたい。最適なパフォーマンスのために、ターゲットの実メモリのサイズは好ましくはホスト上で使用可能なものより小さくなっている。しかし、図5は、ターゲットの実メモリがホスト・システムのものより大きい状況で本発明を使用できることを示している。
 ターゲット仮想アドレスをターゲット実アドレスにマッピングするポリシーをエミュレータが理解する必要はないが、それは、実際のマッピングを含むテーブルにアクセスできなければならず、それが変更された時期を把握していなければならない。これを行うための1つの方法は、図6に示すように、ページ・テーブルのシミュレート済みコピー610を保持することである。
 元のページ・テーブルに含まれる情報に加え、シミュレート済みページ・テーブル610は、そのアドレスからホスト仮想メモリ・アドレスへのマッピングを容易にする追加情報を保持することもできるだろう。このようなシミュレート済みページ・テーブル610は、図5のターゲット・ページ・マッピング・テーブル510と、シミュレートしたターゲット実/ホスト仮想マッパ520を含むことができる。たとえば、連続してまとまったホスト仮想メモリがターゲットの実メモリ全体をマッピングするという、ありふれたケースでは、ターゲット実アドレスからホスト仮想アドレスへのマッピングは単純に一定のオフセットの追加を必要とするだけである。
 そのうえ、シミュレート済みページ・テーブル610は、エミュレーション・システムが各ページへのアクセス権を執行することを容易にする形式でこのようなアクセス権に関する情報を含むことができるだろう。
 このため、図6では、テーブル510とマッパ520の両方の機能を1つの機能ブロック(2つの層とは対照的に唯一の層)にマージし、それにより、エミュレーションを単純化し、その動作速度を増加する。すなわち、これらのテーブルのそれぞれを別々に通過するには、LOADおよびSTORE命令(命令の総数の約1/3以上を構成するもの)を変換するときに余分なソフトウェア命令を必要とする。したがって、1つのテーブルのみを通過することにより、処理が必要な各変換ごとの命令の数量(たとえば、おそらく5〜6つの命令)を最小限にする。
 本発明はすべてのタイプの命令に関係するが、LOADおよびSTORE用に最適化されており、前述の通り、それらがすべての命令セットの大部分を構成することに留意されたい。すなわち、本発明はこれらのタイプの命令の処理を最適化し、最も効率よくこれらのタイプの命令を扱うので、パフォーマンスが強化される。
 図7の構造700に示すように、シミュレート済みページ・テーブル710(たとえば、テーブル610と同様のもの)の機能を、アドレスを含むページへのホスト・アクセス特権とともに、ターゲット仮想アドレスをホスト仮想アドレスにマッピングする機能と見なすことができる。
 したがって、図7は、図6のより一般的な図を示しているが、特権情報のマッピング(および記憶とアクセス)も示している。一般に、特権情報は、各ページ(たとえば、約4000バイト程度を有する各ページ)に関連する情報である。ある位置へのアクセスが行われると、そのページへのアクセスを対象とする特権情報を含むので、ページ・テーブル710が参照される。このため、ページ・テーブル710に含まれる特権情報は各ページに関連付けられている。
 図4〜7はターゲット・マシン内の各アクセスが取る経路を示しているが、いくつかのアクセスについて1回だけシミュレート済みページ・テーブル・アクセスが必要になるように、いくつかのアドレスをまとめて分析し、それらを分類することが可能な場合が多いことを理解しなければならないことに留意されたい。たとえば、ターゲット・コードからホスト・コードへの変換の最適化フェーズにおいて、これを実行することができる。単一命令(たとえば、CISCのRX命令)の変換についてもこのような最適化を実行することが可能な場合もあるが、複数命令のグループ、たとえば、基本ブロック内の複数命令を変換するときに、このタイプの機会がより多く発生する。
 次に図8の構造800に転じると、一般に2通りのアクセス(変換)方式のうちの一方が実行されるので、ページ・テーブルはかなり大きくなる可能性があることに留意されたい。
 たとえば、ホストのページ・テーブル、たとえば、逆ページ・テーブルをシミュレートするときに、実アドレスから索引を付けて、仮想アドレスを取得する。別法として、正規ページ・テーブルが仮想アドレスを取得し、次に実アドレスを取得するために複数の階層テーブルを通過する。
 したがって、これらのテーブルは非常に大きくなるので、その情報のアクセスは長い時間を要する可能性があり、さらにすべての情報を中央位置に有するということは、これらのアクセスすべてに関する情報を取得するにはあるプロセッサから他のプロセッサに移行することを必要とする可能性があり、したがって、情報のキャッシュを実行しなければならないことを意味する。より具体的には、各プロセッサ(たとえば、ターゲット・プロセッサ)にとってローカルの情報をキャッシュすることは、動作全体の速度を上げるために有利なことと思われる。
 さらに、複数のターゲット・プロセッサがメモリ内の複数の位置に同時にアクセスしている可能性があるので、あるプロセッサがシミュレート済みページ・テーブルの内容を変更している間に他のプロセッサがそれにアクセスする必要がある場合も起こり得ることに留意されたい。したがって、正確さのため、ロックを使用してページ・テーブルへのすべてのアクセスを保護しなければならない。しかし、これにより、アクセス・オーバヘッドはかなり大きなものになる。
 上記を考慮して、オーバヘッドを削減するために、図8の本発明では、シミュレートしたプロセッサ当たりキャッシュを1つずつの割合でページ・テーブル810内の全項目からなるローカル・キャッシュを提供する。図8のローカル・ルックアサイド・テーブル(LLT)820として示すこのキャッシュは、対応するターゲット・プロセッサがアクセスした最近のページのみに関する情報を含んでいる。
 このプロセッサをシミュレートするスレッドからLLTへのアクセスはロックする必要がない。というのは、他のプロセッサをエミュレートするスレッドがこのLLT820にアクセスすることがないからである。しかし、たとえば、グローバル・テーブル810内の1つの項目が削除されたときに、LLT820に対して更新を行うことが必要になる場合がある。この状況は滅多にないものと予想されるので、そのLLT820を変更している間にプロセッサをエミュレートするスレッドをブロックすれば十分である。グローバル・テーブルの項目は、妨害されたスレッドの数を最小限にするためにその項目のコピーを有する、複数プロセッサ・スレッドのリストを保持することができるだろう。
 このため、動作時にターゲット・プロセッサでは、ターゲット仮想メモリ・アドレスが生成され、バッファ(ANDゲート)830とLLT820に同時に入力される(たとえば、この場合も「ローカル」はターゲット・プロセッサ上を意味する)。この情報がLLT820に存在する場合、LLT820はホスト仮想メモリ・アドレスと位置(ページ)アクセス権を送る。
 LLT820に「ミス」がある場合、バッファ830に信号が送られ、次にそのバッファがグローバル・シミュレート済みページ・テーブル810に対して情報を要求する信号を発行する。テーブル810は、かなり大きいものであり、要求された情報を有する所望のページを見つけ、その情報(および特権)とともにそのページをLLT820に送り、それにより、LLT820を更新する。次にLLT820は、ホスト仮想メモリ・アドレスと位置(ページ)アクセス権(特権)を要求側に送る。
 要求側が要求されたページに関する特権を備えていない場合、ホスト仮想メモリ・アドレスは依然としてLLT820によって出力することができるが、要求側に戻されることはないことに留意されたい。
 図9は、この情報を取り入れたグローバル・ページ・テーブル810内のサンプル・ページ・テーブル項目900を示し、テーブルそのものと、その諸項目の詳細を示している。テーブル900は、妥当性/状況ビット910、プロセスID920、仮想アドレス930、実アドレス940、保護ビット950、ルックアサイド・マスク960に関する情報を含むことに留意されたい。ルックアサイド・マスク960は、システム内のどのプロセッサが所望の情報の一部分をキャッシュしたかを示すビット・パターンである。
 したがって、たとえば、図9は、0・・・7という番号が付いた8つのシミュレートしたターゲット・プロセッサがあるものと想定すると、第1の項目はプロセッサ1、2、6のLLTにキャッシュされ、第2の項目はプロセッサ3のLLTのみにキャッシュされることを示している。
 LLT820でアクセスがミスした場合、これは、対応する項目がLLT820にコピーされていないか、または対応するページが現在、ホスト仮想アドレスにマッピングされていないためである可能性がある。ミスしたエミュレータ・スレッドは、ロックを介してグローバル・ページ・テーブル810にアクセスし、それがどのケースであるかを判定する。
 対応する項目がすでにグローバル・テーブル810内に存在する場合、これはLLT820の上にコピーされ、おそらく、そこにある行のうちの1つを置き換える。その項目がグローバル・テーブル810内に存在しない場合、ターゲット・システム内のページ不在がシミュレートされる。これにより、シミュレート中のマシンのオペレーティング・システム内のページ不在ハンドラが呼び出され、必要なページが持ち込まれる。
 図10は、上記のプロセスを記述する方法1000の諸ステップを示している。実マシンでは、ページ不在を処理すると、通常、そのページを要求したターゲット・プロセッサでコンテキスト・スイッチが発生し、実行のために他のタスクをスケジューリングする。同様に、エミュレートしたマシンでは、ページ不在は、そのページ不在を引き起こしたプロセッサをエミュレートするスレッドをブロックしない。
 方法1000に転じる(とともに図8の構造800を参照する)と、ステップ1005では、LLT820へのアクセスが行われる(たとえば、ターゲット仮想メモリ・アドレスが入力される)。
 ステップ1010では、LLT820に「ミス」があるかどうかが判定される。「ミス」がない場合(たとえば、「ヒット」)、プロセスは終了する。
 「ミス」がある場合、ステップ1020では、グローバル・テーブル810用のロックを入手する。コヒーレンスのために、このようなロックを使用して、複数プロセッサが同時にアクセスする(とともにクリアする)のを回避する。
 ステップ1025では、ページ・テーブルがアクセスされ、ステップ1030では、グローバル・ページ・テーブル810にミスがあるかどうかが判定される。
 グローバル・ページ・テーブルに「ミス」がない場合(たとえば、「ヒット」)、ステップ1035では、グローバル・ページ項目がLLT820にコピーされる。ステップ1040でページ・テーブル・ロックが解除され、ステップ1045でプロセスが終了する。本発明の文脈における「終了」は、たとえば、正常な変換を遂行すること(たとえば、LOADまたはSTOREなどの場合)を意味することに留意されたい。同様の理由で、これは依然としてキャッシュ内でミスする可能性がある。
 逆に、グローバル・ページ・テーブル810に「ミス」がある場合(たとえば、ステップ1030で「YES」)、ステップ1050でページ・テーブル・ロックが解除される。すなわち、どのプロセッサもその要求(たとえば、ロック要求)に「とどまる」時間が長すぎないようにロックが解除される。というのは、このようにすることにより、テーブルおよびLLTのリソースが拘束され、他のプロセッサがこのようなリソースにアクセスできなくなる恐れがあるからである。このため、ミスがある場合、他のユーザがテーブル820を比較的直ちに使用できるようにするためにロックが解除される。
 次に、ステップ1055では、シミュレートしたプロセッサがチェックポイント付き状態にリセットされる。すなわち、このステップが実行されるのは、シミュレートしたプロセッサがそれ自体より先に進んでいる(たとえば、ページ不在を超えている)可能性があるためであり、システムは、シミュレートしたプロセッサを、そのシミュレートしたプロセッサが正確に動作していた最後のチェックポイント付き状態に戻す必要がある。
 ステップ1060では、ホスト・オペレーティング・システム内でページ不在ハンドラが呼び出され、チェックポイント付き状態から始めてページ不在を判定する。
 ステップ1065では、ページ不在ハンドラは欠落ページを検索しようと試み、それにより、欠落ページを見つけ、それをグローバル・ページ・テーブル820に入れる。
 次にこの方法はステップ1005にループバックし、上記のエミュレーション方法がもう一度実行される。おそらく、この後続時点では、ステップ1030で「ヒット」が発生することになる(たとえば、ステップ1030の「NO」)。
 図11は、本発明で使用するためのものであり、好ましくは少なくとも1つのプロセッサまたは中央演算処理装置(CPU)1111を有する情報処理/コンピュータ・システムの典型的なハードウェア構成を示している。
 CPU1111は、システム・バス1112を介して、ランダム・アクセス・メモリ(RAM)1114、読取専用メモリ(ROM)1116、入出力(I/O)アダプタ1118(ディスク装置1121およびテープ・ドライブ1140などの周辺装置をバス1112に接続するためのもの)、ユーザ・インタフェース・アダプタ1122(キーボード1124、マウス1126、スピーカ1128、マイクロホン1132、またはその他のユーザ・インタフェース装置、あるいはそれらの組合せをバス1112に接続するためのもの)、情報処理システムをデータ処理ネットワーク、インターネット、イントラネット、パーソナル・エリア・ネットワーク(PAN)などに接続するための通信アダプタ1134、バス1112をディスプレイ装置1138またはプリンタあるいはその両方に接続するためのディスプレイ・アダプタ1136に相互接続されている。
 上記のハードウェア/ソフトウェア環境に加え、本発明の他の態様では、上記の方法を実行するためのコンピュータ実現方法を含む。一例として、この方法は前述の特定の環境で実現することができる。
 このような方法は、たとえば、ディジタル・データ処理装置によって実施されるように、一連の機械可読命令を実行するようにコンピュータを操作することにより実現することができる。このような命令は、様々なタイプの信号運搬媒体に存在することができる。
 この信号運搬媒体は、たとえば高速アクセス記憶装置によって代表されるように、たとえばCPU1111内に含まれるRAMを含むことができる。別法として、CPU1111によって直接または間接的にアクセス可能な磁気データ記憶ディスケット1200(図12)などの他の信号運搬媒体に命令を含めることもできる。
 ディスケット1200に含まれるか、コンピュータ/CPU1111またはその他の場所に含まれるかにかかわらず、DASD記憶装置(たとえば、従来の「ハード・ドライブ」またはRAIDアレイ)、磁気テープ、電子読取専用メモリ(たとえば、ROM、EPROM、またはEEPROM)、光学記憶装置(たとえば、CD−ROM、WORM、DVD、ディジタル光学テープなど)、紙の「パンチ」カードなどの様々な機械可読データ記憶媒体、またはディジタルおよびアナログ通信リンクならびに無線などの伝送媒体を含むその他の適当な信号運搬媒体上に命令を記憶することができる。本発明の例証となる一実施形態では、機械可読命令は、「C」などの言語からコンパイルされたソフトウェア・オブジェクト・コードを含むことができる。
 したがって、前述の通り、本発明により、他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定を効果的にマッピングすることができる。
 すなわち、本発明は、多対多のマッピングが存在し、ターゲット上で動作しているソフトウェアに対する実際の厳密な制御が存在しないマルチプロセッシング環境においてメモリ・マッピング問題に対する固有の解決策を提供している。
 さらに、本発明は、共有メモリを効率よくマッピングするエミュレーションを可能にし、特に、動作だけでなく、メモリ、アクセス機能などもエミュレートすることによりエミュレーションを強化するものである。実際は、本発明では、いかなるマッピングでも、ある位置から実位置へのマッピングと、その位置にアクセスする際の特権のマッピングの両方を必要とすることを認識(かつ考慮)している。本発明では、これらの両方を考慮に入れている。
 このため、本発明は、他のシステムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるシステムのメモリ・アドレスをより効率よくしかもより最適にマッピングすることができる。他のシステムの仮想メモリ・アドレス指定をエミュレーションに使用することは、本発明の主な特徴の1つである。前述の通り、仮想メモリの使用は、マッピングを行うときのより大きい空間を見込んでいる。したがって、ターゲット(ゲスト)の64ビット仮想メモリをホストの64ビット仮想メモリに向ける(マッピングする)ことができるが、同じメモリを実メモリにマッピングする場合は、32ビットのみが可能になる。
 いくつかの好ましい実施形態に関して本発明を説明してきたが、当業者であれば、特許請求の範囲の精神および範囲内で変更を加えて本発明を実施できることが分かるだろう。
 さらに、本出願人の意図は、権利請求中に後日補正された場合でも、すべての特許請求の範囲と同等のものを包含することであることに留意されたい。
 まとめとして、本発明の構成に関して以下の事項を開示する。
 (1)ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートする方法において、
 ターゲット仮想メモリ・アドレスをページ・テーブルに入力してホスト仮想メモリ・アドレスを入手するステップを具備し、
 前記ターゲット・システムが、それが動作しているソフトウェアに認識されない方法。
 (2)前記ページ・テーブルがシミュレート済みページ・テーブルを具備し、前記方法が、
 前記ホスト仮想メモリ・アドレスにより前記シミュレート済みページ・テーブルから特権情報を入手するステップをさらに具備する、上記(1)に記載の方法。
 (3)前記ページ・テーブルにより、いくつかのアドレスをまとめて分析し、前記ページ・テーブル・アクセスが複数のアクセスについて1回行われるようにそれらを分類するステップをさらに具備する、上記(1)に記載の方法。
 (4)前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレスを前記ターゲット・システム上でローカルにキャッシュするステップをさらに具備する、上記(1)に記載の方法。
 (5)それに対するアクセスを行うときに、前記ページ・テーブルをロックするステップをさらに具備する、上記(1)に記載の方法。
 (6)前記ターゲット・プロセッサ用のページ・テーブル内の諸項目からなるローカル・キャッシュを提供するステップをさらに具備する、上記(1)に記載の方法。
 (7)前記マルチプロセッサ・システムにおいて、前記マルチプロセッサ・システムのシミュレートした各プロセッサごとに1つのキャッシュが設けられ、前記キャッシュが対応するターゲット・プロセッサによってアクセスされた最近のページに関する情報を含むステップをさらに具備する、上記(6)に記載の方法。
 (8)前記ターゲット・プロセッサをシミュレートするスレッドによる前記ローカル・キャッシュへのアクセスがロックされず、前記マルチプロセッサ・システム内の他のプロセッサをエミュレートするスレッドが前記ローカル・キャッシュにアクセスしない、上記(6)に記載の方法。
 (9)前記ターゲット・プロセッサにおいて、バッファおよび前記ローカル・キャッシュにターゲット仮想メモリ・アドレスを同時に入力するステップをさらに具備し、
 前記ターゲット仮想メモリ・アドレスが前記ローカル・キャッシュに存在する場合に、前記ローカル・キャッシュが前記ホスト仮想メモリ・アドレスと前記位置アクセス権を前記ホスト・システムに送る、上記(6)に記載の方法。
 (10)前記ローカル・キャッシュに「ミス」がある場合に、前記バッファに信号が送られ、
 前記バッファが前記情報を要求する信号を前記ページ・テーブルに発行する、上記(9)に記載の方法。
 (11)前記ページ・テーブルが、前記要求された情報を有する所望のページを見つけ、前記要求された情報および特権とともに前記ページを前記ローカル・キャッシュに送り、
 前記ローカル・キャッシュが、前記ホスト仮想メモリ・アドレスとページ・アクセス権を要求側に送る、上記(10)に記載の方法。
 (12)妥当性/状況ビット、プロセスID、仮想アドレス、前記仮想アドレスに対応する実アドレス、保護ビット、ルックアサイド・マスクに関する情報を含む項目を前記ページ・テーブルに提供するステップをさらに具備し、
 前記ルックアサイド・マスクが、前記システム内のどのプロセッサが所望の情報の一部分をキャッシュしたかを示すビット・パターンである、上記(1)に記載の方法。
 (13)対応する項目がすでに前記ページ・テーブル内に存在する場合に、前記対応する項目が前記ローカル・キャッシュにコピーされる、上記(6)に記載の方法。
 (14)前記項目が前記ページ・テーブル内に存在しない場合に、前記ターゲット・システム内のページ不在がシミュレートされ、シミュレート中の前記ターゲット・プロセッサのオペレーティング・システム内のページ不在ハンドラを呼び出し、必要なページが持ち込まれる、上記(13)に記載の方法。
 (15)エミュレートした命令が、LOAD命令およびSTORE命令のうちの少なくとも一方を具備する、上記(1)に記載の方法。
 (16)他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングする方法において、
 ターゲット仮想メモリ・アドレスによりターゲット・プロセッサ上のローカル・ルックアサイド・テーブル(LLT)にアクセスするステップと、
 前記LLTに「ミス」があるかどうかを判定するステップと、
 前記LLTで判定された前記ミスにより、グローバル・ページ・テーブル用のロックを入手するステップとを具備する方法。
 (17)前記グローバル・ページ・テーブルにアクセスするステップと、
 前記グローバル・ページ・テーブルにミスがあるかどうかを判定するステップとをさらに具備する、上記(16)に記載の方法。
 (18)前記グローバル・ページ・テーブルで前記ミスが判定されないときに、前記グローバル・ページ項目を前記LLTにコピーするステップと、
 前記ページ・テーブル・ロックを解除するステップとをさらに具備する、上記(17)に記載の方法。
 (19)前記ページ・テーブルで前記ミスが判定されたことにより、前記ページ・テーブル・ロックを解除するステップと、
 シミュレート中の前記ターゲット・プロセッサをチェックポイント付き状態にリセットするステップと、
 前記ホスト・オペレーティング・システム内のページ不在ハンドラを呼び出して、前記チェックポイント付き状態から始めて、前記ページ不在を判定するステップと、
 前記欠落ページを検索し、前記欠落ページを前記グローバル・ページ・テーブルに入れるステップとをさらに具備する、上記(17)に記載の方法。
 (20)エミュレートした命令が、LOAD命令およびSTORE命令のうちの少なくとも一方を具備する、上記(16)に記載の方法。
 (21)ターゲット・システムの動作を表現する1つまたは複数のスレッドの実行によりターゲット・nプロセッサ・システム(n≧1)の動作をエミュレートするためのホスト・マルチプロセッサ・システムにおいて、前記ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用して前記ターゲット・システムのメモリ・アドレス指定をエミュレートするための方法であって、
 (a)ターゲット・システム仮想メモリ・アドレス(ATV)を読み取るステップと、
 (b)前記ATVをターゲット実アドレス(ATR)にマッピングするステップと、
 (c)前記ATRをホスト仮想メモリ・アドレス(AHV)にマッピングするステップと、
 (d)前記AHVをホスト実メモリ・アドレスにマッピングするステップとを具備し、
 前記ターゲット・システムのメモリ・アドレス指定のエミュレーションが前記ホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われる方法。
 (22)ターゲット・システムのメモリ・アドレス指定をエミュレートするためのシステムにおいて、
 ターゲット・システムからのターゲット仮想メモリ・アドレスをホスト仮想メモリ・アドレスおよびページ・アクセス権にマッピングするためのページ・テーブルを具備し、
 前記ターゲット・システムが、それが動作しているソフトウェアに認識されないシステム。
 (23)前記ページ・テーブルが、いくつかのアドレスをまとめて分析し、前記シミュレートしたページ・テーブル・アクセスが複数のアクセスについて1回行われるようにそれらを分類するための手段を含む、上記(22)に記載のシステム。
 (24)前記ターゲット・システムが、前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレスを前記ターゲット・システム上でローカルにキャッシュするためのローカル・ルックアサイド・テーブル(LLT)を含む、上記(22)に記載のシステム。
 (25)それに対するアクセスを行うときに、前記ページ・テーブルをロックするためのロックをさらに具備する、上記(22)に記載のシステム。
 (26)前記マルチプロセッサ・システムにおいて、前記マルチプロセッサ・システムのシミュレートした各プロセッサごとに1つの前記LLTが設けられ、前記LLTが対応するターゲット・プロセッサによってアクセスされた最近のページに関する情報を含むことをさらに具備する、上記(22)に記載のシステム。
 (27)前記プロセッサをシミュレートするスレッドによる前記LLTへのアクセスがロックされず、
 前記マルチプロセッサ・システム内の他のプロセッサをエミュレートするスレッドが前記LLTにアクセスしない、上記(26)に記載のシステム。
 (28)前記LLTにより前記ターゲット仮想メモリ・アドレスが受け取られるのと実質的に同時に前記ターゲット仮想メモリ・アドレスを受け取るためのバッファをさらに具備し、
 前記ターゲット仮想メモリ・アドレスが前記LLTに存在する場合に、前記LLTが前記ホスト仮想メモリ・アドレスと前記位置アクセス権を前記ホスト・システムに送る、上記(26)に記載のシステム。
 (29)前記LLTに「ミス」がある場合に、バッファに信号が送られ、
 前記バッファが前記情報を要求する信号を前記ページ・テーブルに発行する、上記(26)に記載のシステム。
 (30)前記ページ・テーブルが、要求された情報を有する所望のページを見つけ、前記情報および特権とともに前記ページを前記LLTに送り、
 前記LLTが、前記ホスト仮想メモリ・アドレスとページ・アクセス権を前記要求側に送る、上記(29)に記載のシステム。
 (31)前記ページ・テーブルが、妥当性/状況ビット、プロセスID、仮想アドレス、前記仮想アドレスに対応する実アドレス、保護ビット、ルックアサイド・マスクに関する情報を含む項目を含み、
 前記ルックアサイド・マスクが、前記システム内のどのプロセッサが所望の情報の一部分をキャッシュしたかを示すビット・パターンである、上記(22)に記載のシステム。
 (32)ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするためのシステムにおいて、
 ターゲット仮想メモリ・アドレスを受け取り、前記ターゲット仮想メモリ・アドレスに関する情報が前記LLTに記憶された場合にホスト仮想メモリ・アドレスおよびページ・アクセス権を出力するためのローカル・ルックアサイド・テーブル(LLT)を具備するシステム。
 (33)前記ターゲット仮想メモリ・アドレスを受け取り、前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレスを提供するためのページ・テーブルをさらに具備する、上記(32)に記載のシステム。
 (34)前記ターゲット・システムが、それが動作しているソフトウェアに認識されない、上記(32)に記載のシステム。
 (35)それが前記LLTで見つからないときに、前記ページ・テーブルが前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレス情報で前記LLTを更新する、上記(33)に記載のシステム。
 (36)他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングするためのシステムにおいて、
 ターゲット仮想メモリ・アドレスとそれに対応するホスト仮想メモリ・アドレスとを記憶するためのターゲット・プロセッサ上のローカル・ルックアサイド・テーブル(LLT)と、
 ターゲット仮想メモリ・アドレスにより前記LLTにアクセスするための手段と、
 前記LLTに「ミス」があるかどうかを判定するための手段と、
 前記判定手段からの入力に基づいて、グローバル・ページ・テーブル用のロックを入手するための手段とを具備するシステム。
 (37)ターゲット・システムの動作を表現する1つまたは複数のスレッドの実行によりターゲット・nプロセッサ・システム(n≧1)の動作のマルチプロセッサ・エミュレーションのためのシステムにおいて、
 ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用して前記ターゲット・システムのメモリ・アドレス指定をエミュレートするための手段を具備し、前記エミュレーティング手段が、
  (a)ターゲット・システム仮想メモリ・アドレス(ATV)を読み取るための手段と、
  (b)前記ATVをターゲット実アドレス(ATR)にマッピングするための手段と、
  (c)前記ATRをホスト仮想メモリ・アドレス(AHV)にマッピングするための手段と、
  (d)前記AHVをホスト実メモリ・アドレスにマッピングするための手段とを具備し、
 前記ターゲット・システムのメモリ・アドレス指定のエミュレーションが前記ホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われるシステム。
 (38)ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートする方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
 ターゲット仮想メモリ・アドレスをシミュレート済みページ・テーブルに入力してホスト仮想メモリ・アドレスを入手するステップを具備し、
 前記ターゲット・システムが、それが動作しているソフトウェアに認識されない信号運搬媒体。
 (39)他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングする方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
 ターゲット仮想メモリ・アドレスによりターゲット・プロセッサ上のローカル・ルックアサイド・テーブル(LLT)にアクセスするステップと、
 前記LLTに「ミス」があるかどうかを判定するステップと、
 前記LLTで判定された前記ミスにより、前記ページ・テーブル用のロックを入手するステップとを具備する信号運搬媒体。
 (40)ターゲット・システムの動作を表現する1つまたは複数のスレッドの実行によりターゲット・nプロセッサ・システム(n≧1)の動作をエミュレートするホスト・マルチプロセッサ・システムにおいて、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするための方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
 (a)ターゲット・システム仮想メモリ・アドレス(ATV)を読み取るステップと、
 (b)前記ATVをターゲット実アドレス(ATR)にマッピングするステップと、
 (c)前記ATRをホスト仮想メモリ・アドレス(AHV)にマッピングするステップと、
 (d)前記AHVをホスト実メモリ・アドレスにマッピングするステップとを具備し、
 前記ターゲット・システムのメモリ・アドレス指定のエミュレーションが前記ホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われる信号運搬媒体。
典型的な仮想メモリ・システム100におけるアドレス・マッピングを示す図である。 従来技術の仮想アドレス・シミュレーション方式200を示す図である。 ターゲット・システム内のプロセスの知識を必要とするマッピング方式300を示す図である。 ターゲット実アドレスをホスト仮想アドレスにマッピングする方式400を示す図である。 ターゲット上のオペレーティング・システムとホスト上のオペレーティング・システムとの間のマッピング機能の区分化を示す構造500を示す図である。 シミュレート済みページ・テーブル610のマッピング機能を示す構造600を示す図である。 シミュレート済みページ・テーブル710が提供するマッピングおよび保護情報を示す構造700を示す図である。 ローカル・ルックアサイド・テーブル820(LLT)ならびにそれとグローバル・ページ・テーブル810との関係を示す構造800を示す図である。 その項目のコピーを有するシミュレート済みプロセッサをリストするための追加フィールドを含み、グローバル・ページ・テーブル項目内の各種フィールドを含むテーブル900を示す図である。 ページ・テーブル項目にアクセスする際に必要とする諸ステップを含む方法1000を示す図である。 そこに本発明を取り入れるための例示的なハードウェア/情報処理システム1100を示す図である。 本発明による方法のプログラムの諸ステップを記憶するための信号運搬媒体1200(たとえば、記憶媒体)を示す図である。
符号の説明
110、410、510 ターゲット・ページ・マッピング・テーブル
120 ターゲット実メモリ
210 シミュレート済みページ・マッピング・テーブル
220、330、440、540 ホスト実メモリ
310 ターゲット/ホスト仮想アドレス・マッパ
320、410、420、430、530 ホスト・ページ・マッピング・テーブル
420 ターゲット実/ホスト仮想マッパ
500A ターゲットOS機能
500B ホストOS機能
520 シミュレートした実/ホスト仮想マッパ
600 710 シミュレート済みページ・テーブル
810 グローバル・シミュレート済みページ・テーブル
820 ローカル・ルックアサイド・テーブル(シミュレートしたターゲット・プロセッサ1)
910 妥当性/状況ビット
920 プロセスID
930 仮想アドレス
940 実アドレス
950 保護ビット
960 ルックアサイド・マスク
1118 I/Oアダプタ
1122 ユーザ・インタフェース・アダプタ
1134 通信アダプタ
1136 ディスプレイ・アダプタ
1139 プリンタ

Claims (40)

  1.  ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートする方法において、
     ターゲット仮想メモリ・アドレスをページ・テーブルに入力してホスト仮想メモリ・アドレスを入手するステップを具備し、
     前記ターゲット・システムが、それが動作しているソフトウェアに認識されない方法。
  2.  前記ページ・テーブルがシミュレート済みページ・テーブルを具備し、前記方法が、
     前記ホスト仮想メモリ・アドレスにより前記シミュレート済みページ・テーブルから特権情報を入手するステップをさらに具備する、請求項1に記載の方法。
  3.  前記ページ・テーブルにより、いくつかのアドレスをまとめて分析し、前記ページ・テーブル・アクセスが複数のアクセスについて1回行われるようにそれらを分類するステップをさらに具備する、請求項1に記載の方法。
  4.  前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレスを前記ターゲット・システム上でローカルにキャッシュするステップをさらに具備する、請求項1に記載の方法。
  5.  それに対するアクセスを行うときに、前記ページ・テーブルをロックするステップをさらに具備する、請求項1に記載の方法。
  6.  前記ターゲット・プロセッサ用のページ・テーブル内の諸項目からなるローカル・キャッシュを提供するステップをさらに具備する、請求項1に記載の方法。
  7.  前記マルチプロセッサ・システムにおいて、前記マルチプロセッサ・システムのシミュレートした各プロセッサごとに1つのキャッシュが設けられ、前記キャッシュが対応するターゲット・プロセッサによってアクセスされた最近のページに関する情報を含むステップをさらに具備する、請求項6に記載の方法。
  8.  前記ターゲット・プロセッサをシミュレートするスレッドによる前記ローカル・キャッシュへのアクセスがロックされず、前記マルチプロセッサ・システム内の他のプロセッサをエミュレートするスレッドが前記ローカル・キャッシュにアクセスしない、請求項6に記載の方法。
  9.  前記ターゲット・プロセッサにおいて、バッファおよび前記ローカル・キャッシュにターゲット仮想メモリ・アドレスを同時に入力するステップをさらに具備し、
     前記ターゲット仮想メモリ・アドレスが前記ローカル・キャッシュに存在する場合に、前記ローカル・キャッシュが前記ホスト仮想メモリ・アドレスと前記位置アクセス権を前記ホスト・システムに送る、請求項6に記載の方法。
  10.  前記ローカル・キャッシュに「ミス」がある場合に、前記バッファに信号が送られ、
     前記バッファが前記情報を要求する信号を前記ページ・テーブルに発行する、請求項9に記載の方法。
  11.  前記ページ・テーブルが、前記要求された情報を有する所望のページを見つけ、前記要求された情報および特権とともに前記ページを前記ローカル・キャッシュに送り、
     前記ローカル・キャッシュが、前記ホスト仮想メモリ・アドレスとページ・アクセス権を要求側に送る、請求項10に記載の方法。
  12.  妥当性/状況ビット、プロセスID、仮想アドレス、前記仮想アドレスに対応する実アドレス、保護ビット、ルックアサイド・マスクに関する情報を含む項目を前記ページ・テーブルに提供するステップをさらに具備し、
     前記ルックアサイド・マスクが、前記システム内のどのプロセッサが所望の情報の一部分をキャッシュしたかを示すビット・パターンである、請求項1に記載の方法。
  13.  対応する項目がすでに前記ページ・テーブル内に存在する場合に、前記対応する項目が前記ローカル・キャッシュにコピーされる、請求項6に記載の方法。
  14.  前記項目が前記ページ・テーブル内に存在しない場合に、前記ターゲット・システム内のページ不在がシミュレートされ、シミュレート中の前記ターゲット・プロセッサのオペレーティング・システム内のページ不在ハンドラを呼び出し、必要なページが持ち込まれる、請求項13に記載の方法。
  15.  エミュレートした命令が、LOAD命令およびSTORE命令のうちの少なくとも一方を具備する、請求項1に記載の方法。
  16.  他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングする方法において、
     ターゲット仮想メモリ・アドレスによりターゲット・プロセッサ上のローカル・ルックアサイド・テーブル(LLT)にアクセスするステップと、
     前記LLTに「ミス」があるかどうかを判定するステップと、
     前記LLTで判定された前記ミスにより、グローバル・ページ・テーブル用のロックを入手するステップとを具備する方法。
  17.  前記グローバル・ページ・テーブルにアクセスするステップと、
     前記グローバル・ページ・テーブルにミスがあるかどうかを判定するステップとをさらに具備する、請求項16に記載の方法。
  18.  前記グローバル・ページ・テーブルで前記ミスが判定されないときに、前記グローバル・ページ項目を前記LLTにコピーするステップと、
     前記ページ・テーブル・ロックを解除するステップとをさらに具備する、請求項17に記載の方法。
  19.  前記ページ・テーブルで前記ミスが判定されたことにより、前記ページ・テーブル・ロックを解除するステップと、
     シミュレート中の前記ターゲット・プロセッサをチェックポイント付き状態にリセットするステップと、
     前記ホスト・オペレーティング・システム内のページ不在ハンドラを呼び出して、前記チェックポイント付き状態から始めて、前記ページ不在を判定するステップと、
     前記欠落ページを検索し、前記欠落ページを前記グローバル・ページ・テーブルに入れるステップとをさらに具備する、請求項17に記載の方法。
  20.  エミュレートした命令が、LOAD命令およびSTORE命令のうちの少なくとも一方を具備する、請求項16に記載の方法。
  21.  ターゲット・システムの動作を表現する1つまたは複数のスレッドの実行によりターゲット・nプロセッサ・システム(n≧1)の動作をエミュレートするためのホスト・マルチプロセッサ・システムにおいて、前記ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用して前記ターゲット・システムのメモリ・アドレス指定をエミュレートするための方法であって、
     (a)ターゲット・システム仮想メモリ・アドレス(ATV)を読み取るステップと、
     (b)前記ATVをターゲット実アドレス(ATR)にマッピングするステップと、
     (c)前記ATRをホスト仮想メモリ・アドレス(AHV)にマッピングするステップと、
     (d)前記AHVをホスト実メモリ・アドレスにマッピングするステップとを具備し、
     前記ターゲット・システムのメモリ・アドレス指定のエミュレーションが前記ホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われる方法。
  22.  ターゲット・システムのメモリ・アドレス指定をエミュレートするためのシステムにおいて、
     ターゲット・システムからのターゲット仮想メモリ・アドレスをホスト仮想メモリ・アドレスおよびページ・アクセス権にマッピングするためのページ・テーブルを具備し、
     前記ターゲット・システムが、それが動作しているソフトウェアに認識されないシステム。
  23.  前記ページ・テーブルが、いくつかのアドレスをまとめて分析し、前記シミュレートしたページ・テーブル・アクセスが複数のアクセスについて1回行われるようにそれらを分類するための手段を含む、請求項22に記載のシステム。
  24.  前記ターゲット・システムが、前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレスを前記ターゲット・システム上でローカルにキャッシュするためのローカル・ルックアサイド・テーブル(LLT)を含む、請求項22に記載のシステム。
  25.  それに対するアクセスを行うときに、前記ページ・テーブルをロックするためのロックをさらに具備する、請求項22に記載のシステム。
  26.  前記マルチプロセッサ・システムにおいて、前記マルチプロセッサ・システムのシミュレートした各プロセッサごとに1つの前記LLTが設けられ、前記LLTが対応するターゲット・プロセッサによってアクセスされた最近のページに関する情報を含むことをさらに具備する、請求項22に記載のシステム。
  27.  前記プロセッサをシミュレートするスレッドによる前記LLTへのアクセスがロックされず、
     前記マルチプロセッサ・システム内の他のプロセッサをエミュレートするスレッドが前記LLTにアクセスしない、請求項26に記載のシステム。
  28.  前記LLTにより前記ターゲット仮想メモリ・アドレスが受け取られるのと実質的に同時に前記ターゲット仮想メモリ・アドレスを受け取るためのバッファをさらに具備し、
     前記ターゲット仮想メモリ・アドレスが前記LLTに存在する場合に、前記LLTが前記ホスト仮想メモリ・アドレスと前記位置アクセス権を前記ホスト・システムに送る、請求項26に記載のシステム。
  29.  前記LLTに「ミス」がある場合に、バッファに信号が送られ、
     前記バッファが前記情報を要求する信号を前記ページ・テーブルに発行する、請求項26に記載のシステム。
  30.  前記ページ・テーブルが、要求された情報を有する所望のページを見つけ、前記情報および特権とともに前記ページを前記LLTに送り、
     前記LLTが、前記ホスト仮想メモリ・アドレスとページ・アクセス権を前記要求側に送る、請求項29に記載のシステム。
  31.  前記ページ・テーブルが、妥当性/状況ビット、プロセスID、仮想アドレス、前記仮想アドレスに対応する実アドレス、保護ビット、ルックアサイド・マスクに関する情報を含む項目を含み、
     前記ルックアサイド・マスクが、前記システム内のどのプロセッサが所望の情報の一部分をキャッシュしたかを示すビット・パターンである、請求項22に記載のシステム。
  32.  ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするためのシステムにおいて、
     ターゲット仮想メモリ・アドレスを受け取り、前記ターゲット仮想メモリ・アドレスに関する情報が前記LLTに記憶された場合にホスト仮想メモリ・アドレスおよびページ・アクセス権を出力するためのローカル・ルックアサイド・テーブル(LLT)を具備するシステム。
  33.  前記ターゲット仮想メモリ・アドレスを受け取り、前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレスを提供するためのページ・テーブルをさらに具備する、請求項32に記載のシステム。
  34.  前記ターゲット・システムが、それが動作しているソフトウェアに認識されない、請求項32に記載のシステム。
  35.  それが前記LLTで見つからないときに、前記ページ・テーブルが前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレス情報で前記LLTを更新する、請求項33に記載のシステム。
  36.  他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングするためのシステムにおいて、
     ターゲット仮想メモリ・アドレスとそれに対応するホスト仮想メモリ・アドレスとを記憶するためのターゲット・プロセッサ上のローカル・ルックアサイド・テーブル(LLT)と、
     ターゲット仮想メモリ・アドレスにより前記LLTにアクセスするための手段と、
     前記LLTに「ミス」があるかどうかを判定するための手段と、
     前記判定手段からの入力に基づいて、グローバル・ページ・テーブル用のロックを入手するための手段とを具備するシステム。
  37.  ターゲット・システムの動作を表現する1つまたは複数のスレッドの実行によりターゲット・nプロセッサ・システム(n≧1)の動作のマルチプロセッサ・エミュレーションのためのシステムにおいて、
     ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用して前記ターゲット・システムのメモリ・アドレス指定をエミュレートするための手段を具備し、前記エミュレーティング手段が、
      (a)ターゲット・システム仮想メモリ・アドレス(ATV)を読み取るための手段と、
      (b)前記ATVをターゲット実アドレス(ATR)にマッピングするための手段と、
      (c)前記ATRをホスト仮想メモリ・アドレス(AHV)にマッピングするための手段と、
      (d)前記AHVをホスト実メモリ・アドレスにマッピングするための手段とを具備し、
     前記ターゲット・システムのメモリ・アドレス指定のエミュレーションが前記ホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われるシステム。
  38.  ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートする方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
     ターゲット仮想メモリ・アドレスをシミュレート済みページ・テーブルに入力してホスト仮想メモリ・アドレスを入手するステップを具備し、
     前記ターゲット・システムが、それが動作しているソフトウェアに認識されない信号運搬媒体。
  39.  他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングする方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
     ターゲット仮想メモリ・アドレスによりターゲット・プロセッサ上のローカル・ルックアサイド・テーブル(LLT)にアクセスするステップと、
     前記LLTに「ミス」があるかどうかを判定するステップと、
     前記LLTで判定された前記ミスにより、前記ページ・テーブル用のロックを入手するステップとを具備する信号運搬媒体。
  40.  ターゲット・システムの動作を表現する1つまたは複数のスレッドの実行によりターゲット・nプロセッサ・システム(n≧1)の動作をエミュレートするホスト・マルチプロセッサ・システムにおいて、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想/実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするための方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
     (a)ターゲット・システム仮想メモリ・アドレス(ATV)を読み取るステップと、
     (b)前記ATVをターゲット実アドレス(ATR)にマッピングするステップと、
     (c)前記ATRをホスト仮想メモリ・アドレス(AHV)にマッピングするステップと、
     (d)前記AHVをホスト実メモリ・アドレスにマッピングするステップとを具備し、
     前記ターゲット・システムのメモリ・アドレス指定のエミュレーションが前記ホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われる信号運搬媒体。
JP2003302167A 2002-09-17 2003-08-26 マルチプロセッサ・ホスト上でのマルチプロセッサ・アドレス変換の効率のよいエミュレーションのための方法およびシステム Pending JP2004110812A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/244,559 US7953588B2 (en) 2002-09-17 2002-09-17 Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host

Publications (1)

Publication Number Publication Date
JP2004110812A true JP2004110812A (ja) 2004-04-08

Family

ID=31991913

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003302167A Pending JP2004110812A (ja) 2002-09-17 2003-08-26 マルチプロセッサ・ホスト上でのマルチプロセッサ・アドレス変換の効率のよいエミュレーションのための方法およびシステム

Country Status (3)

Country Link
US (2) US7953588B2 (ja)
JP (1) JP2004110812A (ja)
CN (1) CN100495341C (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006196005A (ja) * 2005-01-14 2006-07-27 Intel Corp バーチャルマシーンシステムの物理的メモリのバーチャル化
KR100763846B1 (ko) * 2005-12-20 2007-10-05 삼성전자주식회사 변환테이블 에뮬레이션을 이용한 데이터 처리 시스템 및데이터 처리 방법
JP2008527508A (ja) * 2004-12-29 2008-07-24 インテル・コーポレーション 仮想化グラフィックスアドレスのワンステップアドレス変換
JP2009282774A (ja) * 2008-05-22 2009-12-03 Fujitsu Ltd エミュレーションプログラム、エミュレーション装置およびエミュレーション方法
JP2010257049A (ja) * 2009-04-22 2010-11-11 Fujitsu Ltd 仮想化プログラム、仮想化処理方法及び装置
US7873507B2 (en) 2005-04-12 2011-01-18 Fujitsu Limited Multi-core model simulator
JP2011513808A (ja) * 2008-02-26 2011-04-28 インターナショナル・ビジネス・マシーンズ・コーポレーション 変換例外修飾子を用いる動的アドレス変換

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030105617A1 (en) * 2001-12-05 2003-06-05 Nec Usa, Inc. Hardware acceleration system for logic simulation
US6895491B2 (en) * 2002-09-26 2005-05-17 Hewlett-Packard Development Company, L.P. Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching
GB2424092A (en) * 2005-03-11 2006-09-13 Transitive Ltd Switching between code translation and execution using a trampoline
US8225327B2 (en) * 2005-09-15 2012-07-17 International Business Machines Corporation Synchronizing access to a shared resource utilizing selective locking
US7444276B2 (en) * 2005-09-28 2008-10-28 Liga Systems, Inc. Hardware acceleration system for logic simulation using shift register as local cache
US20070074000A1 (en) * 2005-09-28 2007-03-29 Liga Systems, Inc. VLIW Acceleration System Using Multi-state Logic
US20070073999A1 (en) * 2005-09-28 2007-03-29 Verheyen Henry T Hardware acceleration system for logic simulation using shift register as local cache with path for bypassing shift register
US20070129924A1 (en) * 2005-12-06 2007-06-07 Verheyen Henry T Partitioning of tasks for execution by a VLIW hardware acceleration system
US20070129926A1 (en) * 2005-12-01 2007-06-07 Verheyen Henry T Hardware acceleration system for simulation of logic and memory
US20070150702A1 (en) * 2005-12-23 2007-06-28 Verheyen Henry T Processor
US7840398B2 (en) * 2006-03-28 2010-11-23 Intel Corporation Techniques for unified management communication for virtualization systems
US7555628B2 (en) 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
JP5093509B2 (ja) * 2008-10-28 2012-12-12 日本電気株式会社 Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US8635385B2 (en) * 2010-07-16 2014-01-21 Advanced Micro Devices, Inc. Mechanism to handle peripheral page faults
CN102467406B (zh) * 2010-11-09 2014-04-16 无锡江南计算技术研究所 多处理器结构的模拟方法及模拟器
US9529729B2 (en) * 2010-11-16 2016-12-27 International Business Machines Corporation Location of memory management translations in an emulated processor
US20120317377A1 (en) * 2011-06-09 2012-12-13 Alexander Palay Dual flash translation layer
CN102308282A (zh) * 2011-07-20 2012-01-04 华为技术有限公司 多处理器体系结构远端内存访问的模拟方法及模拟器
CN104335162B (zh) * 2012-05-09 2018-02-23 英特尔公司 使用多个页表的执行
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US10216532B2 (en) * 2014-09-12 2019-02-26 Intel Corporation Memory and resource management in a virtual computing environment
US9898322B2 (en) * 2015-10-29 2018-02-20 International Business Machines Corporation Steganographic message passing between a virtual machine and a hypervisor
US10423537B2 (en) * 2018-01-31 2019-09-24 Arm Limited Address space resizing table for simulation of processing of target program code on a target data processing apparatus
US10769076B2 (en) 2018-11-21 2020-09-08 Nvidia Corporation Distributed address translation in a multi-node interconnect fabric
US11886877B1 (en) 2021-09-24 2024-01-30 Apple Inc. Memory select register to simplify operand mapping in subroutines

Family Cites Families (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4392196A (en) * 1980-08-11 1983-07-05 Harris Corporation Multi-processor time alignment control system
US4564903A (en) * 1983-10-05 1986-01-14 International Business Machines Corporation Partitioned multiprocessor programming system
JPS63226740A (ja) 1986-12-08 1988-09-21 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン マルチプロセツサ・コンピユータ・システムの並列シミユレーシヨン方法
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
US5155809A (en) * 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware
US6920416B1 (en) 1989-08-28 2005-07-19 Texas Instruments Incorporated Electronic systems testing employing embedded serial scan generator
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5179702A (en) 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
JP2839201B2 (ja) * 1990-07-30 1998-12-16 株式会社日立製作所 仮想計算機システム
EP0550286A3 (en) 1992-01-03 1993-11-03 Amdahl Corp 2-level multi-processor synchronization protocol
US5249627A (en) * 1992-03-13 1993-10-05 Halliburton Company Method for stimulating methane production from coal seams
DE4306031C2 (de) 1993-02-26 1995-11-02 Siemens Ag Verfahren zum ferngesteuerten Administrieren von Kommunikationssystemen
US5440610A (en) * 1993-04-14 1995-08-08 Harris Corporation Mechanism for controlling operation of telephone metallic loop measurement device in dependence upon rate of settling of telephone line voltage
JPH0784883A (ja) * 1993-09-17 1995-03-31 Hitachi Ltd 仮想計算機システムのアドレス変換バッファパージ方法
US5392408A (en) 1993-09-20 1995-02-21 Apple Computer, Inc. Address selective emulation routine pointer address mapping system
US5983012A (en) 1993-09-28 1999-11-09 Bull Hn Information Systems Inc. Executing programs of a first system on a second system
US5581705A (en) 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
US5619664A (en) * 1994-01-04 1997-04-08 Intel Corporation Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms
US5481684A (en) 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5440710A (en) * 1994-03-08 1995-08-08 Exponential Technology, Inc. Emulation of segment bounds checking using paging with sub-page validity
US5692193A (en) 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
US5574922A (en) 1994-06-17 1996-11-12 Apple Computer, Inc. Processor with sequences of processor instructions for locked memory updates
JPH0887424A (ja) 1994-09-16 1996-04-02 Toshiba Corp 電子計算機
US5699538A (en) 1994-12-09 1997-12-16 International Business Machines Corporation Efficient firm consistency support mechanisms in an out-of-order execution superscaler multiprocessor
US5692153A (en) 1995-03-16 1997-11-25 International Business Machines Corporation Method and system for verifying execution order within a multiprocessor data processing system
US5833000A (en) * 1995-03-29 1998-11-10 Halliburton Energy Services, Inc. Control of particulate flowback in subterranean wells
US5582249A (en) * 1995-08-02 1996-12-10 Halliburton Company Control of particulate flowback in subterranean wells
US5787986A (en) * 1995-03-29 1998-08-04 Halliburton Energy Services, Inc. Control of particulate flowback in subterranean wells
US5775425A (en) * 1995-03-29 1998-07-07 Halliburton Energy Services, Inc. Control of fine particulate flowback in subterranean wells
US5839510A (en) * 1995-03-29 1998-11-24 Halliburton Energy Services, Inc. Control of particulate flowback in subterranean wells
US5751982A (en) 1995-03-31 1998-05-12 Apple Computer, Inc. Software emulation system with dynamic translation of emulated instructions for increased processing speed
US5655100A (en) 1995-03-31 1997-08-05 Sun Microsystems, Inc. Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
US5619665A (en) * 1995-04-13 1997-04-08 Intrnational Business Machines Corporation Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture
US5678032A (en) 1995-09-06 1997-10-14 Bull Hn Information Systems Inc. Method of optimizing the execution of program instuctions by an emulator using a plurality of execution units
US6047323A (en) 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
US6091897A (en) 1996-01-29 2000-07-18 Digital Equipment Corporation Fast translation and execution of a computer program on a non-native architecture by use of background translator
US5768593A (en) 1996-03-22 1998-06-16 Connectix Corporation Dynamic cross-compilation system and method
US6031992A (en) 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
US5761734A (en) * 1996-08-13 1998-06-02 International Business Machines Corporation Token-based serialisation of instructions in a multiprocessor system
US5832205A (en) 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6134515A (en) 1997-06-13 2000-10-17 Telefonaktiebolaget Lm Ericsson Controlling a first type telecommunications switch upon translating instructions for a second type telecommunications switch
KR100522468B1 (ko) 1997-07-11 2005-10-19 트랜스메타 코포레이션 타겟 프로세서의 상태를 일시적으로 홀딩하는 장치를 갖는 호스트 마이크로프로세서
US6381682B2 (en) * 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
EP1057108A1 (en) 1998-02-26 2000-12-06 Sun Microsystems, Inc. Method and apparatus for the suspension and continuation of remote processes
US6289419B1 (en) 1998-03-06 2001-09-11 Sharp Kabushiki Kaisha Consistency control device merging updated memory blocks
US6075937A (en) 1998-03-18 2000-06-13 International Business Machines Corporation Preprocessing of stored target routines for controlling emulation of incompatible instructions on a target processor and utilizing target processor feedback for controlling non-sequential incompatible instruction emulation
US6189141B1 (en) 1998-05-04 2001-02-13 Hewlett-Packard Company Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6240490B1 (en) * 1998-07-20 2001-05-29 International Business Machines Corporation Comprehensive multilevel cache preloading mechanism in a multiprocessing simulation environment
US6158049A (en) 1998-08-11 2000-12-05 Compaq Computer Corporation User transparent mechanism for profile feedback optimization
US6289369B1 (en) 1998-08-25 2001-09-11 International Business Machines Corporation Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system
US6738974B1 (en) 1998-09-10 2004-05-18 International Business Machines Corporation Apparatus and method for system resource object deallocation in a multi-threaded environment
US6430657B1 (en) 1998-10-12 2002-08-06 Institute For The Development Of Emerging Architecture L.L.C. Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
EP0997815A3 (en) 1998-10-29 2004-05-26 Texas Instruments Incorporated Interactive translation system and method
US6351844B1 (en) 1998-11-05 2002-02-26 Hewlett-Packard Company Method for selecting active code traces for translation in a caching dynamic translator
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6339752B1 (en) * 1998-12-15 2002-01-15 Bull Hn Information Systems Inc. Processor emulation instruction counter virtual memory address translation
US7941647B2 (en) * 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US7065633B1 (en) * 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US8121828B2 (en) * 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US6341371B1 (en) 1999-02-23 2002-01-22 International Business Machines Corporation System and method for optimizing program execution in a computer system
US6470492B2 (en) 1999-05-14 2002-10-22 Hewlett-Packard Company Low overhead speculative selection of hot traces in a caching dynamic translator
US6529862B1 (en) 1999-06-30 2003-03-04 Bull Hn Information Systems Inc. Method and apparatus for dynamic management of translated code blocks in dynamic object code translation
US6263302B1 (en) * 1999-10-29 2001-07-17 Vast Systems Technology Corporation Hardware and software co-simulation including simulating the cache of a target processor
US6345351B1 (en) * 1999-11-12 2002-02-05 Telefonaktiebolaget Lm Ericsson(Publ) Maintenance of speculative state of parallel executed jobs in an information processing system
US6986128B2 (en) 2000-01-07 2006-01-10 Sony Computer Entertainment Inc. Multiple stage program recompiler and method
US6934832B1 (en) * 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6311773B1 (en) * 2000-01-28 2001-11-06 Halliburton Energy Services, Inc. Resin composition and methods of consolidating particulate solids in wells with or without closure pressure
US6587964B1 (en) * 2000-02-18 2003-07-01 Hewlett-Packard Development Company, L.P. Transparent software emulation as an alternative to hardware bus lock
JP2001249824A (ja) 2000-03-02 2001-09-14 Hitachi Ltd 論理エミュレーションプロセッサおよびそのモジュールユニット
US6978233B1 (en) 2000-03-03 2005-12-20 Unisys Corporation Method for emulating multi-processor environment
US6539464B1 (en) 2000-04-08 2003-03-25 Radoslav Nenkov Getov Memory allocator for multithread environment
US6480845B1 (en) * 2000-06-14 2002-11-12 Bull Hn Information Systems Inc. Method and data processing system for emulating virtual memory working spaces
US6763328B1 (en) * 2000-06-15 2004-07-13 Bull Hn Information Systems Inc. Method and data processing system for emulating virtual memory utilizing threads
US6931636B2 (en) 2000-08-08 2005-08-16 Texas Instruments Incorporated Multiprocessor emulation support using dynamic linking
US6883165B1 (en) * 2000-09-28 2005-04-19 International Business Machines Corporation Apparatus and method for avoiding deadlocks in a multithreaded environment
US20020069402A1 (en) * 2000-10-05 2002-06-06 Nevill Edward Colles Scheduling control within a system having mixed hardware and software based instruction execution
US6993754B2 (en) 2001-11-13 2006-01-31 Hewlett-Packard Development Company, L.P. Annotations to executable images for improved dynamic optimization functions
US6439309B1 (en) * 2000-12-13 2002-08-27 Bj Services Company Compositions and methods for controlling particulate movement in wellbores and subterranean formations
US7085705B2 (en) * 2000-12-21 2006-08-01 Microsoft Corporation System and method for the logical substitution of processor control in an emulated computing environment
US6728846B2 (en) 2000-12-22 2004-04-27 Bull Hn Information Systems Inc. Method and data processing system for performing atomic multiple word writes
US6728858B2 (en) * 2001-03-30 2004-04-27 Intel Corporation Method and apparatus including heuristic for sharing TLB entries
JP2002312180A (ja) 2001-04-11 2002-10-25 Hitachi Ltd 動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータにて実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した半導体デバイス
GB2376099B (en) * 2001-05-31 2005-11-16 Advanced Risc Mach Ltd Program instruction interpretation
US7047521B2 (en) 2001-06-07 2006-05-16 Lynoxworks, Inc. Dynamic instrumentation event trace system and methods
US6660693B2 (en) * 2001-08-08 2003-12-09 Schlumberger Technology Corporation Methods for dewatering shaly subterranean formations
US6915513B2 (en) 2001-11-29 2005-07-05 Hewlett-Packard Development Company, L.P. System and method for dynamically replacing code
US6961806B1 (en) 2001-12-10 2005-11-01 Vmware, Inc. System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems
US20030171907A1 (en) 2002-03-06 2003-09-11 Shay Gal-On Methods and Apparatus for Optimizing Applications on Configurable Processors
US20030182653A1 (en) * 2002-03-22 2003-09-25 Giuseppe Desoli Systems and methods for verifying correct execution of emulated code via dynamic state verification
US7107585B2 (en) * 2002-07-29 2006-09-12 Arm Limited Compilation of application code in a data processing apparatus
EP1597673B1 (en) * 2003-02-20 2012-05-02 Koninklijke Philips Electronics N.V. Translation of a series of computer instructions
US7093231B2 (en) * 2003-05-06 2006-08-15 David H. Alderson Grammer for regular expressions
DE10340081A1 (de) * 2003-08-30 2005-03-31 Cognis Deutschland Gmbh & Co. Kg Copolymerisierbare Tenside
US7735073B1 (en) * 2004-02-28 2010-06-08 Oracle International Corporation Method and apparatus for data object profiling
WO2007061426A2 (en) * 2004-12-22 2007-05-31 Fox Chase Cancer Center Laser-accelerated proton therapy units and superconducting eletromagnetig systems for same

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008527508A (ja) * 2004-12-29 2008-07-24 インテル・コーポレーション 仮想化グラフィックスアドレスのワンステップアドレス変換
US10133674B2 (en) 2004-12-29 2018-11-20 Intel Corporation System and method for one step address translation of graphics addresses in virtualization
US10671541B2 (en) 2004-12-29 2020-06-02 Intel Corporation System and method for one step address translation of graphics addresses in virtualization
US11023385B2 (en) 2004-12-29 2021-06-01 Intel Corporation System and method for one step address translation of graphics addresses in virtualization
JP2006196005A (ja) * 2005-01-14 2006-07-27 Intel Corp バーチャルマシーンシステムの物理的メモリのバーチャル化
US7873507B2 (en) 2005-04-12 2011-01-18 Fujitsu Limited Multi-core model simulator
KR100763846B1 (ko) * 2005-12-20 2007-10-05 삼성전자주식회사 변환테이블 에뮬레이션을 이용한 데이터 처리 시스템 및데이터 처리 방법
JP2011513808A (ja) * 2008-02-26 2011-04-28 インターナショナル・ビジネス・マシーンズ・コーポレーション 変換例外修飾子を用いる動的アドレス変換
US8683176B2 (en) 2008-02-26 2014-03-25 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US9092351B2 (en) 2008-02-26 2015-07-28 International Business Machines Corporation Creating a dynamic address translation with translation exception qualifier
JP2009282774A (ja) * 2008-05-22 2009-12-03 Fujitsu Ltd エミュレーションプログラム、エミュレーション装置およびエミュレーション方法
JP2010257049A (ja) * 2009-04-22 2010-11-11 Fujitsu Ltd 仮想化プログラム、仮想化処理方法及び装置

Also Published As

Publication number Publication date
US20040054518A1 (en) 2004-03-18
CN100495341C (zh) 2009-06-03
US7953588B2 (en) 2011-05-31
CN1492323A (zh) 2004-04-28
US20110191095A1 (en) 2011-08-04
US8719548B2 (en) 2014-05-06

Similar Documents

Publication Publication Date Title
US8719548B2 (en) Method and system for efficient emulation of multiprocessor address translation on a multiprocessor
Witchel et al. Mondrian memory protection
Narayanan et al. {RedLeaf}: isolation and communication in a safe operating system
TWI622880B (zh) 比較及取代動態位址轉譯表項之電腦程式產品、電腦系統及方法
Gorman Understanding the Linux virtual memory manager
Johns et al. Introduction to the cell broadband engine architecture
Fitzgerald et al. The integration of virtual memory management and interprocess communication in accent
KR0170565B1 (ko) 메모리 관리 방법, 마이크로커널 구조 데이타 프로세싱 시스템, 운영 체제 퍼스낼리티 시스템 동작 방법, 퍼스낼리티 뉴트럴 서비스 프로그램 실행 방법 및 응용 프로그램 실행방법
US7165164B2 (en) Method and apparatus including heuristic for sharing TLB entries
US7543131B2 (en) Controlling an I/O MMU
US7783838B1 (en) Maintaining coherency of derived data in a computer system
US8688920B2 (en) Computing system with guest code support of transactional memory
Russo An object-oriented operating system
US7500072B2 (en) Migrating data that is subject to access by input/output devices
US7480784B2 (en) Ensuring deadlock free operation for peer to peer traffic in an input/output memory management unit (IOMMU)
JP2006526203A (ja) ストレージの無効化、バッファ・エントリの消去
Wang et al. Enabling cross-isa offloading for cots binaries
KR20220045211A (ko) 캐패빌리티 기입 어드레스 추적
Skarlatos et al. Babelfish: Fusing address translations for containers
JP2022104872A (ja) バッファ保護における境界情報アクセスを提供する方法、システム、およびコンピュータ・プログラム
Vijaykumar et al. MetaSys: A practical open-source metadata management system to implement and evaluate cross-layer optimizations
JP5063131B2 (ja) 別のプロセスのプロセス・ローカル・ストレージにアクセスする方法、装置、コンピュータ・プログラム、およびコンピュータ実装方法
Shi et al. Memory/disk operation aware lightweight VM live migration
Joannou High-performance memory safety: optimizing the CHERI capability machine
JP2022522740A (ja) ハイパーバイザ命令に対する条件付きイールド

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070214

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070214

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20070214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070629

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070629

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070712

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20071005

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071005

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20071113

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20071214

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20081219

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20100419