(57)【要約】【課題】　他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定を効果的にマッピングすることができる方法および構造を提供すること。【解決手段】　ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするための方法（およびシステム）は、ターゲット仮想メモリ・アドレスをシミュレート済みページ・テーブルに入力してホスト仮想メモリ・アドレスを入手するステップを含む。ターゲット・システムは、それが動作しているソフトウェアに認識されない。【選択図】　図１０
2004110812.tif 000002
【特許請求の範囲】
【請求項１】
　ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートする方法において、
　ターゲット仮想メモリ・アドレスをページ・テーブルに入力してホスト仮想メモリ・アドレスを入手するステップを具備し、
　前記ターゲット・システムが、それが動作しているソフトウェアに認識されない方法。
【請求項２】
　前記ページ・テーブルがシミュレート済みページ・テーブルを具備し、前記方法が、
　前記ホスト仮想メモリ・アドレスにより前記シミュレート済みページ・テーブルから特権情報を入手するステップをさらに具備する、請求項１に記載の方法。
【請求項３】
　前記ページ・テーブルにより、いくつかのアドレスをまとめて分析し、前記ページ・テーブル・アクセスが複数のアクセスについて１回行われるようにそれらを分類するステップをさらに具備する、請求項１に記載の方法。
【請求項４】
　前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレスを前記ターゲット・システム上でローカルにキャッシュするステップをさらに具備する、請求項１に記載の方法。
【請求項５】
　それに対するアクセスを行うときに、前記ページ・テーブルをロックするステップをさらに具備する、請求項１に記載の方法。
【請求項６】
　前記ターゲット・プロセッサ用のページ・テーブル内の諸項目からなるローカル・キャッシュを提供するステップをさらに具備する、請求項１に記載の方法。
【請求項７】
　前記マルチプロセッサ・システムにおいて、前記マルチプロセッサ・システムのシミュレートした各プロセッサごとに１つのキャッシュが設けられ、前記キャッシュが対応するターゲット・プロセッサによってアクセスされた最近のページに関する情報を含むステップをさらに具備する、請求項６に記載の方法。
【請求項８】
　前記ターゲット・プロセッサをシミュレートするスレッドによる前記ローカル・キャッシュへのアクセスがロックされず、前記マルチプロセッサ・システム内の他のプロセッサをエミュレートするスレッドが前記ローカル・キャッシュにアクセスしない、請求項６に記載の方法。
【請求項９】
　前記ターゲット・プロセッサにおいて、バッファおよび前記ローカル・キャッシュにターゲット仮想メモリ・アドレスを同時に入力するステップをさらに具備し、
　前記ターゲット仮想メモリ・アドレスが前記ローカル・キャッシュに存在する場合に、前記ローカル・キャッシュが前記ホスト仮想メモリ・アドレスと前記位置アクセス権を前記ホスト・システムに送る、請求項６に記載の方法。
【請求項１０】
　前記ローカル・キャッシュに「ミス」がある場合に、前記バッファに信号が送られ、
　前記バッファが前記情報を要求する信号を前記ページ・テーブルに発行する、請求項９に記載の方法。
【請求項１１】
　前記ページ・テーブルが、前記要求された情報を有する所望のページを見つけ、前記要求された情報および特権とともに前記ページを前記ローカル・キャッシュに送り、
　前記ローカル・キャッシュが、前記ホスト仮想メモリ・アドレスとページ・アクセス権を要求側に送る、請求項１０に記載の方法。
【請求項１２】
　妥当性／状況ビット、プロセスＩＤ、仮想アドレス、前記仮想アドレスに対応する実アドレス、保護ビット、ルックアサイド・マスクに関する情報を含む項目を前記ページ・テーブルに提供するステップをさらに具備し、
　前記ルックアサイド・マスクが、前記システム内のどのプロセッサが所望の情報の一部分をキャッシュしたかを示すビット・パターンである、請求項１に記載の方法。
【請求項１３】
　対応する項目がすでに前記ページ・テーブル内に存在する場合に、前記対応する項目が前記ローカル・キャッシュにコピーされる、請求項６に記載の方法。
【請求項１４】
　前記項目が前記ページ・テーブル内に存在しない場合に、前記ターゲット・システム内のページ不在がシミュレートされ、シミュレート中の前記ターゲット・プロセッサのオペレーティング・システム内のページ不在ハンドラを呼び出し、必要なページが持ち込まれる、請求項１３に記載の方法。
【請求項１５】
　エミュレートした命令が、ＬＯＡＤ命令およびＳＴＯＲＥ命令のうちの少なくとも一方を具備する、請求項１に記載の方法。
【請求項１６】
　他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングする方法において、
　ターゲット仮想メモリ・アドレスによりターゲット・プロセッサ上のローカル・ルックアサイド・テーブル（ＬＬＴ）にアクセスするステップと、
　前記ＬＬＴに「ミス」があるかどうかを判定するステップと、
　前記ＬＬＴで判定された前記ミスにより、グローバル・ページ・テーブル用のロックを入手するステップとを具備する方法。
【請求項１７】
　前記グローバル・ページ・テーブルにアクセスするステップと、
　前記グローバル・ページ・テーブルにミスがあるかどうかを判定するステップとをさらに具備する、請求項１６に記載の方法。
【請求項１８】
　前記グローバル・ページ・テーブルで前記ミスが判定されないときに、前記グローバル・ページ項目を前記ＬＬＴにコピーするステップと、
　前記ページ・テーブル・ロックを解除するステップとをさらに具備する、請求項１７に記載の方法。
【請求項１９】
　前記ページ・テーブルで前記ミスが判定されたことにより、前記ページ・テーブル・ロックを解除するステップと、
　シミュレート中の前記ターゲット・プロセッサをチェックポイント付き状態にリセットするステップと、
　前記ホスト・オペレーティング・システム内のページ不在ハンドラを呼び出して、前記チェックポイント付き状態から始めて、前記ページ不在を判定するステップと、
　前記欠落ページを検索し、前記欠落ページを前記グローバル・ページ・テーブルに入れるステップとをさらに具備する、請求項１７に記載の方法。
【請求項２０】
　エミュレートした命令が、ＬＯＡＤ命令およびＳＴＯＲＥ命令のうちの少なくとも一方を具備する、請求項１６に記載の方法。
【請求項２１】
　ターゲット・システムの動作を表現する１つまたは複数のスレッドの実行によりターゲット・ｎプロセッサ・システム（ｎ≧１）の動作をエミュレートするためのホスト・マルチプロセッサ・システムにおいて、前記ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用して前記ターゲット・システムのメモリ・アドレス指定をエミュレートするための方法であって、
　（ａ）ターゲット・システム仮想メモリ・アドレス（ＡＴＶ）を読み取るステップと、
　（ｂ）前記ＡＴＶをターゲット実アドレス（ＡＴＲ）にマッピングするステップと、
　（ｃ）前記ＡＴＲをホスト仮想メモリ・アドレス（ＡＨＶ）にマッピングするステップと、
　（ｄ）前記ＡＨＶをホスト実メモリ・アドレスにマッピングするステップとを具備し、
　前記ターゲット・システムのメモリ・アドレス指定のエミュレーションが前記ホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われる方法。
【請求項２２】
　ターゲット・システムのメモリ・アドレス指定をエミュレートするためのシステムにおいて、
　ターゲット・システムからのターゲット仮想メモリ・アドレスをホスト仮想メモリ・アドレスおよびページ・アクセス権にマッピングするためのページ・テーブルを具備し、
　前記ターゲット・システムが、それが動作しているソフトウェアに認識されないシステム。
【請求項２３】
　前記ページ・テーブルが、いくつかのアドレスをまとめて分析し、前記シミュレートしたページ・テーブル・アクセスが複数のアクセスについて１回行われるようにそれらを分類するための手段を含む、請求項２２に記載のシステム。
【請求項２４】
　前記ターゲット・システムが、前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレスを前記ターゲット・システム上でローカルにキャッシュするためのローカル・ルックアサイド・テーブル（ＬＬＴ）を含む、請求項２２に記載のシステム。
【請求項２５】
　それに対するアクセスを行うときに、前記ページ・テーブルをロックするためのロックをさらに具備する、請求項２２に記載のシステム。
【請求項２６】
　前記マルチプロセッサ・システムにおいて、前記マルチプロセッサ・システムのシミュレートした各プロセッサごとに１つの前記ＬＬＴが設けられ、前記ＬＬＴが対応するターゲット・プロセッサによってアクセスされた最近のページに関する情報を含むことをさらに具備する、請求項２２に記載のシステム。
【請求項２７】
　前記プロセッサをシミュレートするスレッドによる前記ＬＬＴへのアクセスがロックされず、
　前記マルチプロセッサ・システム内の他のプロセッサをエミュレートするスレッドが前記ＬＬＴにアクセスしない、請求項２６に記載のシステム。
【請求項２８】
　前記ＬＬＴにより前記ターゲット仮想メモリ・アドレスが受け取られるのと実質的に同時に前記ターゲット仮想メモリ・アドレスを受け取るためのバッファをさらに具備し、
　前記ターゲット仮想メモリ・アドレスが前記ＬＬＴに存在する場合に、前記ＬＬＴが前記ホスト仮想メモリ・アドレスと前記位置アクセス権を前記ホスト・システムに送る、請求項２６に記載のシステム。
【請求項２９】
　前記ＬＬＴに「ミス」がある場合に、バッファに信号が送られ、
　前記バッファが前記情報を要求する信号を前記ページ・テーブルに発行する、請求項２６に記載のシステム。
【請求項３０】
　前記ページ・テーブルが、要求された情報を有する所望のページを見つけ、前記情報および特権とともに前記ページを前記ＬＬＴに送り、
　前記ＬＬＴが、前記ホスト仮想メモリ・アドレスとページ・アクセス権を前記要求側に送る、請求項２９に記載のシステム。
【請求項３１】
　前記ページ・テーブルが、妥当性／状況ビット、プロセスＩＤ、仮想アドレス、前記仮想アドレスに対応する実アドレス、保護ビット、ルックアサイド・マスクに関する情報を含む項目を含み、
　前記ルックアサイド・マスクが、前記システム内のどのプロセッサが所望の情報の一部分をキャッシュしたかを示すビット・パターンである、請求項２２に記載のシステム。
【請求項３２】
　ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするためのシステムにおいて、
　ターゲット仮想メモリ・アドレスを受け取り、前記ターゲット仮想メモリ・アドレスに関する情報が前記ＬＬＴに記憶された場合にホスト仮想メモリ・アドレスおよびページ・アクセス権を出力するためのローカル・ルックアサイド・テーブル（ＬＬＴ）を具備するシステム。
【請求項３３】
　前記ターゲット仮想メモリ・アドレスを受け取り、前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレスを提供するためのページ・テーブルをさらに具備する、請求項３２に記載のシステム。
【請求項３４】
　前記ターゲット・システムが、それが動作しているソフトウェアに認識されない、請求項３２に記載のシステム。
【請求項３５】
　それが前記ＬＬＴで見つからないときに、前記ページ・テーブルが前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレス情報で前記ＬＬＴを更新する、請求項３３に記載のシステム。
【請求項３６】
　他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングするためのシステムにおいて、
　ターゲット仮想メモリ・アドレスとそれに対応するホスト仮想メモリ・アドレスとを記憶するためのターゲット・プロセッサ上のローカル・ルックアサイド・テーブル（ＬＬＴ）と、
　ターゲット仮想メモリ・アドレスにより前記ＬＬＴにアクセスするための手段と、
　前記ＬＬＴに「ミス」があるかどうかを判定するための手段と、
　前記判定手段からの入力に基づいて、グローバル・ページ・テーブル用のロックを入手するための手段とを具備するシステム。
【請求項３７】
　ターゲット・システムの動作を表現する１つまたは複数のスレッドの実行によりターゲット・ｎプロセッサ・システム（ｎ≧１）の動作のマルチプロセッサ・エミュレーションのためのシステムにおいて、
　ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用して前記ターゲット・システムのメモリ・アドレス指定をエミュレートするための手段を具備し、前記エミュレーティング手段が、
　　（ａ）ターゲット・システム仮想メモリ・アドレス（ＡＴＶ）を読み取るための手段と、
　　（ｂ）前記ＡＴＶをターゲット実アドレス（ＡＴＲ）にマッピングするための手段と、
　　（ｃ）前記ＡＴＲをホスト仮想メモリ・アドレス（ＡＨＶ）にマッピングするための手段と、
　　（ｄ）前記ＡＨＶをホスト実メモリ・アドレスにマッピングするための手段とを具備し、
　前記ターゲット・システムのメモリ・アドレス指定のエミュレーションが前記ホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われるシステム。
【請求項３８】
　ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートする方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
　ターゲット仮想メモリ・アドレスをシミュレート済みページ・テーブルに入力してホスト仮想メモリ・アドレスを入手するステップを具備し、
　前記ターゲット・システムが、それが動作しているソフトウェアに認識されない信号運搬媒体。
【請求項３９】
　他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングする方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
　ターゲット仮想メモリ・アドレスによりターゲット・プロセッサ上のローカル・ルックアサイド・テーブル（ＬＬＴ）にアクセスするステップと、
　前記ＬＬＴに「ミス」があるかどうかを判定するステップと、
　前記ＬＬＴで判定された前記ミスにより、前記ページ・テーブル用のロックを入手するステップとを具備する信号運搬媒体。
【請求項４０】
　ターゲット・システムの動作を表現する１つまたは複数のスレッドの実行によりターゲット・ｎプロセッサ・システム（ｎ≧１）の動作をエミュレートするホスト・マルチプロセッサ・システムにおいて、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするための方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
　（ａ）ターゲット・システム仮想メモリ・アドレス（ＡＴＶ）を読み取るステップと、
　（ｂ）前記ＡＴＶをターゲット実アドレス（ＡＴＲ）にマッピングするステップと、
　（ｃ）前記ＡＴＲをホスト仮想メモリ・アドレス（ＡＨＶ）にマッピングするステップと、
　（ｄ）前記ＡＨＶをホスト実メモリ・アドレスにマッピングするステップとを具備し、
　前記ターゲット・システムのメモリ・アドレス指定のエミュレーションが前記ホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われる信号運搬媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は、一般に、コンピュータ・システムの分野に関し、より具体的には、他のマルチプロセッシング・コンピューティング・システム上でシミュレートしたときに、あるマルチプロセッシング・コンピュータ・システムの共用メモリをマッピングするための方法に関する。
【背景技術】
【０００２】
　コンピューティング・システムは、プロセッサと、メモリと、入出力装置とを含む、いくつかの部分を含んでいる。あるコンピューティング・システムの挙動を他のコンピューティング・システム上でエミュレートすることが必要である場合が多い。
【０００３】
　エミュレーションの主な理由の１つは、あるシステム（たとえば、「ターゲット・コンピューティング・システム」）用に作成されたプログラムを他のシステム（たとえば、「ホスト・コンピューティング・システム」）上で実行して同じ結果が得られるようにすることである。他のプロセッサの命令セットを使用してあるプロセッサの命令セットをエミュレートするためのいくつかの技法が記載されている（たとえば、１９９８年２月発表のStephen A. Herrodの「Using CompleteMachine Simulation to Understand Computer System Behavior」というスタンフォード大学博士論文により開示されたＳＩＭＯＳ、または１９８７年１０月４〜８日にオーランドで開催された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」という論文に開示されているＭＩＭＩＣ）。
【０００４】
　エミュレーションを忠実に実行するためには、このようなシステム内のメモリの挙動をエミュレートすることも必要である。通常、この挙動には、プログラム指定アドレスによるメモリ内の位置の読取りおよび書込み以上のものが含まれる。
【０００５】
　より具体的には、通常のことであるが、ターゲット・システム上で仮想メモリを実現する場合、あるメモリ位置へのアクセスには、要求側タスクがアクセス動作を実行するための権利を有するかどうかを検証することを伴う可能性がある。また、それがまだメモリ内にない場合には要求した位置を含むページをメモリに持ち込むことを伴う可能性もある。
【０００６】
　このような機能は通常、図１に示すシステム１００に示すように実行されるが、その場合、計算したオペランド・アドレスがターゲット仮想メモリ・アドレスとしてターゲット・ページ・マッピング・テーブル１１０に入力される。
【０００７】
　したがって、図１では、テーブル１１０内のアドレス指定位置を含むページをチェックして、（ａ）それがすでにメモリ（たとえば、ターゲット実メモリ１２０）内にあるかどうか、（ｂ）それが所望のアクセスを許可するかどうか、（ｃ）どの物理メモリ位置が所望のページに対応するかを確認する。この場合も、このような動作のそれぞれがターゲット・システムの実際のハードウェアで実行されることに留意されたい。
【０００８】
　このようなアクセスを効率のよいものにするため、これらのチェックはエミュレーティング・マシン内のハードウェアで実行され、多くの場合、実際のメモリ・アクセスと同時に実行され、アクセスが拒否された場合はアクセスの結果が廃棄される。ターゲット実メモリ１２０の出力はオペランド値であり、これはＬＯＡＤなどに対応する可能性がある（ＳＴＯＲＥはホストを通って反対方向へ進むものと思われることに留意されたい）。
【０００９】
　通常、ホスト・コンピューティング・システムは、このような仮想アドレス指定を容易にするためのハードウェアも提供する。Scalzi他に交付された米国特許第６０７５９３７号に開示されているような実現例では、ホスト仮想アドレス指定ハードウェアがサポートするプリミティブに関してターゲット・アクセスを解釈する。これは、シミュレート済みページ・マッピング・テーブル２１０とホスト実メモリ２２０を使用する図２のシステム２００に示されている。
【００１０】
　ページ・マッピング・テーブル２１０により行われる仮想アドレスからホスト実メモリ２２０内の実アドレスへのマッピングは、ターゲット・システム上の各仮想アドレス空間（「プロセス」に関連する場合が多い）ごとに固有のものである。
【００１１】
　オペレーティング・システムは仮想ページをホスト実メモリの実ページにマッピングするページ・マッピング・テーブルをそこに備えているので、シミュレート済みページ・マッピング・テーブル２１０はターゲット・ページ・マッピング・テーブル１１０とは異なることに留意されたい。しかし、図２では、実メモリはターゲット実メモリではなくホスト実メモリをアドレス指定しなければならないので、これは動作不能になる（たとえば、機能しなくなる）。このため、このマップは、ホスト実メモリへマッピング中の実メモリがどこにあるかを示す、もう１つのフィールドを含まなければならない。
【００１２】
　ホスト・システムが仮想メモリも実現し、各ホスト・プロセスごとに許容される仮想アドレス空間がターゲット上で許容されるアドレス空間と少なくとも同じ大きさである場合、ターゲット／ホスト仮想アドレス・マッパ３１０と、ホスト・ページ・マッピング・テーブル３２０と、ホスト実メモリ３３０とを有する図３の構造３００に示すようにプロセス・レベルでエミュレーションを実行することができる。
【００１３】
　図３の方式では、マッパ３１０によりターゲット仮想アドレス空間がホスト仮想アドレス空間にマッピングされ、次にそれが、ホストのページ・マッピング・テーブル・メカニズム３２０を使用してホスト実アドレス空間に変換される。
【００１４】
　したがって、図３のフロント・エンドでは、シミュレート済みページ・マッピング・テーブル（たとえば、図２のテーブル２１０）を備える代わりに、ターゲット仮想アドレスをホスト仮想アドレスに変換できるようにターゲット／ホスト仮想アドレス・マッパ３１０が設けられ、それがホストのオペレーティング・システムを使用してマッピングの残りを実行する。
【００１５】
　基本的に、図３の背後にある方式は、ホストのオペレーティング・システム上で図２の機能ブロックを実行できないことを認識している。このため、図３は、ターゲット仮想メモリ・アドレスを取り、それを、ホスト・システム上で動作しているオペレーティング・システムが使用できるもの（たとえば、ホスト仮想メモリ・アドレス）に変換することを目指している。ホスト上で動作するオペレーティング・システムは、その環境（たとえば、ホスト仮想メモリ・アドレス）内の仮想メモリ・アドレスのみを認識して理解することができる、それ専用のページ・マッピング・テーブルを備えている。したがって、いったんホスト仮想メモリ・アドレスを入手すると、マッピングの残りをホスト内で実行することができる。
【００１６】
　しかし、いずれの方式も、ＩＢＭの整理番号ＹＯＲ９２００１９５３３ＵＳ１を有し、本出願と同時に出願され、「マルチプロセッサ・ホスト・システム上でのマルチプロセッサ・エミュレーションのための方法およびシステム」という名称の米国特許出願第１０／２４４４１４号に記載されているようなエミュレーション環境では不十分であることが分かっている。このような環境では、ターゲット・マルチプロセッシング・システム内のプロセッサのシミュレーションは、ホスト・マルチプロセッシング・システム内の固有のプロセッサによって直接実行されるわけではない。
【００１７】
　むしろ、プロセッサをエミュレートするタスクは、ホスト上で必要な他の補助タスクとともにプールされ、ホスト上のスケジューラがこれらのタスクを使用可能プロセッサに割り振る。この方式の長所は、ホスト上で使用可能なプロセッサより多いプロセッサを有する可能性のあるシステムをエミュレートできる可能性があることである。
【００１８】
　Scalzi他に交付された米国特許第６０７５９３７号に開示されている方式では、各ターゲット・プロセッサを１つのホスト・プロセッサにマッピングすることを必要としている。すなわち、このようなシステムでは１対１の対応関係が必要であり、このため、このようなエミュレーションには適切ではない。
【００１９】
　仮想マッピング方式は考えられる候補の１つであるが、例外として、ターゲット・システム内のタスクを複数プロセスに区分化することについてエミュレーション・ソフトウェアが把握していることが必要である。これは、システム・ソフトウェアがエミュレート中であることをエミュレーション・システムが理解していない限り、不可能である場合が多い。
【００２０】
　すなわち、ターゲット（ゲスト）のページ・マッピング・テーブルはターゲット／ホスト仮想アドレス・マッパ３１０などに再生されるので、図３の方式を機能させるためにターゲット（ゲスト）上で動作しているオペレーティング・システムで何が行われているかを正確に把握していなければならない。しかし、あるシステムのシステム・エミュレーションを実行する際に、動作中のソフトウェアを制御することは滅多にないので、これは滅多に行われない。
【００２１】
　しかも、ターゲットの６４ビット仮想アドレス指定空間を、たとえば、ホストの３２ビット仮想アドレス指定空間にマッピングすることは直接的に可能であるわけではない。前述の通り、エミュレーションに関連する他の機能のためにもメモリを予約しなければならない場合が多く、このため、このようなエミュレーションはホスト用の６４ビット仮想アドレス空間でも困難である可能性がある。
【００２２】
　したがって、（たとえば、多対多のマッピングが存在するマルチプロセッシング環境において）エミュレート中のターゲット・プロセッサとその挙動を再生するホスト・プロセッサとの間の厳密な対応関係をエミュレーション環境が備えていない場合、ならびにエミュレーション・ソフトウェアがターゲット・システムのページ・テーブル・マッピングを認識しているが、ターゲット・システム上で実行されるタスクの性質を認識していない場合（たとえば、ターゲット上で動作しているソフトウェアに対する実際の厳密な制御が存在しない場合）に、メモリ・マッピング問題の解決策を見つけることが望ましい。
【００２３】
　本発明以前には、このような解決策は開発はおろか認識もされていなかった。
【非特許文献１】１９９８年２月発表のStephenA. Herrodの「Using Complete MachineSimulation to Understand Computer System Behavior」というスタンフォード大学博士論文
【非特許文献２】１９８７年１０月４〜８日にオーランドで開催された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」という論文
【特許文献１】米国特許第６０７５９３７号
【発明の開示】
【発明が解決しようとする課題】
【００２４】
　従来の方法および構造の上記その他の問題、欠点、短所を考慮して、本発明の一目的は、他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定を効果的にマッピングすることができる方法および構造を提供することにある。
【課題を解決するための手段】
【００２５】
　本発明の第１の態様では、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするための方法（およびシステム）は、ターゲット仮想メモリ・アドレスをシミュレート済みページ・テーブルに入力してホスト仮想メモリ・アドレスを入手するステップを含む。ターゲット・システムは、それが動作しているソフトウェアに認識されない。
【００２６】
　本発明の第２の態様では、他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングする方法は、ターゲット仮想メモリ・アドレスによりターゲット・プロセッサ上のローカル・ルックアサイド・テーブル（ＬＬＴ）にアクセスするステップと、ＬＬＴに「ミス」があるかどうかを判定するステップと、ＬＬＴで判定されたミスにより、グローバル・ページ・テーブル用のロックを入手するステップとを含む。
【００２７】
　本発明の第３の態様では、ターゲット・システムの動作を表現する１つまたは複数のスレッドの実行によりターゲット・ｎプロセッサ・システム（ｎ≧１）の動作をエミュレートするためのホスト・マルチプロセッサ・システムにおいて、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするための方法は、（ａ）ターゲット・システム仮想メモリ・アドレス（ＡＴＶ）を読み取るステップと、（ｂ）ＡＴＶをターゲット実アドレス（ＡＴＲ）にマッピングするステップと、（ｃ）ＡＴＲをホスト仮想メモリ・アドレス（ＡＨＶ）にマッピングするステップと、（ｄ）ＡＨＶをホスト実メモリ・アドレスにマッピングするステップとを含み、ターゲット・システムのメモリ・アドレス指定のエミュレーションがホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われる。
【００２８】
　本発明の第４の態様では、ターゲット・システムのメモリ・アドレス指定をエミュレートするためのシステムは、ターゲット・システムからのターゲット仮想メモリ・アドレスをホスト仮想メモリ・アドレスおよびページ・アクセス権にマッピングするためのページ・テーブルを含み、ターゲット・システムは、それが動作しているソフトウェアに認識されない。
【００２９】
　本発明の第５の態様では、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするためのシステムは、ターゲット仮想メモリ・アドレスを受け取り、ターゲット仮想メモリ・アドレスに関する情報がＬＬＴに記憶された場合にホスト仮想メモリ・アドレスおよびページ・アクセス権を出力するためのローカル・ルックアサイド・テーブル（ＬＬＴ）を含む。
【００３０】
　本発明の第６の態様では、他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングするためのシステムは、ターゲット仮想メモリ・アドレスとそれに対応するホスト仮想メモリ・アドレスとを記憶するためのターゲット・プロセッサ上のローカル・ルックアサイド・テーブル（ＬＬＴ）と、ターゲット仮想メモリ・アドレスによりＬＬＴにアクセスするための手段と、ＬＬＴに「ミス」があるかどうかを判定するための手段と、判定手段からの入力に基づいて、グローバル・ページ・テーブル用のロックを入手するための手段とを含む。
【００３１】
　本発明の第７の態様では、ターゲット・システムの動作を表現する１つまたは複数のスレッドの実行によりターゲット・ｎプロセッサ・システム（ｎ≧１）の動作のマルチプロセッサ・エミュレーションのためのシステムは、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするための手段を含み、そのエミュレーティング手段は、（ａ）ターゲット・システム仮想メモリ・アドレス（ＡＴＶ）を読み取るための手段と、（ｂ）ＡＴＶをターゲット実アドレス（ＡＴＲ）にマッピングするための手段と、（ｃ）ＡＴＲをホスト仮想メモリ・アドレス（ＡＨＶ）にマッピングするための手段と、（ｄ）ＡＨＶをホスト実メモリ・アドレスにマッピングするための手段とを含み、ターゲット・システムのメモリ・アドレス指定のエミュレーションがホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われる。
【００３２】
　本発明の第８の態様では、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートする方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体であって、その方法は、ターゲット仮想メモリ・アドレスをシミュレート済みページ・テーブルに入力してホスト仮想メモリ・アドレスを入手するステップを含み、ターゲット・システムは、それが動作しているソフトウェアに認識されない。
【００３３】
　本発明の第９の態様では、他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングする方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体であって、その方法は、ターゲット仮想メモリ・アドレスによりターゲット・プロセッサ上のローカル・ルックアサイド・テーブル（ＬＬＴ）にアクセスするステップと、ＬＬＴに「ミス」があるかどうかを判定するステップと、ＬＬＴで判定されたミスにより、ページ・テーブル用のロックを入手するステップとを含む。
【００３４】
　本発明の第１０の態様では、ターゲット・システムの動作を表現する１つまたは複数のスレッドの実行によりターゲット・ｎプロセッサ・システム（ｎ≧１）の動作をエミュレートするホスト・マルチプロセッサ・システムにおいて、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするための方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体であって、その方法は、（ａ）ターゲット・システム仮想メモリ・アドレス（ＡＴＶ）を読み取るステップと、（ｂ）ＡＴＶをターゲット実アドレス（ＡＴＲ）にマッピングするステップと、（ｃ）ＡＴＲをホスト仮想メモリ・アドレス（ＡＨＶ）にマッピングするステップと、（ｄ）ＡＨＶをホスト実メモリ・アドレスにマッピングするステップとを含み、ターゲット・システムのメモリ・アドレス指定のエミュレーションがホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われる。
【００３５】
　本発明の固有かつ自明ではない諸態様により、他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定を効率よくマッピングすることができる。
【００３６】
　すなわち、本発明は、多対多のマッピングが存在し、ターゲット上で動作しているソフトウェアに対する実際の厳密な制御が存在しないマルチプロセッシング環境においてメモリ・マッピング問題に対する固有の解決策を提供している。
【００３７】
　さらに、本発明は、共有メモリを効率よくマッピングするエミュレーションを可能にし、特に、動作だけでなく、メモリ、アクセス機能などもエミュレートすることによりエミュレーションを強化するものである。実際は、本発明では、いかなるマッピングでも、ある位置から実位置へのマッピングと、その位置にアクセスする際の特権のマッピングの両方を必要とすることを認識（かつ考慮）している。本発明では、これらの両方を考慮に入れている。
【００３８】
　このため、本発明は、他のシステムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるシステムのメモリ・アドレスをより効率よくしかもより最適にマッピングすることができる。他のシステムの仮想メモリ・アドレス指定を使用することは、本発明の主な特徴の１つである。
【００３９】
　すなわち、他のマルチプロセッシング・システムの実アドレスへの直接的なマッピングを実行することが可能な技法が存在する可能性がある。しかし、本発明は、他のシステムの仮想メモリ・アドレス指定システムをエミュレーションに使用することを可能にする。実メモリ・アドレスは、制限される（たとえば、空間／容量が小さい）可能性のある物理的な「もの」（構造）なので、この技法は前述の直接マッピングよりかなり優れている。しかし、仮想メモリの使用は、マッピングを行うときのより大きい空間を見込んでいる。したがって、ターゲット（ゲスト）の６４ビット仮想メモリをホストの６４ビット仮想メモリに向ける（マッピングする）ことができるが、同じメモリを実メモリにマッピングする場合は、３２ビットのみが可能になる。
【００４０】
　この方式は、カーネル・プログラムではなく、アプリケーション・プログラムが享受するすべての長所を含んでいる。たとえば、同時に動作する複数のエミュレータを備えることは、より容易なことである。また、エミュレータの正確さを検証するかまたはエミュレータのパフォーマンスを調整するために、デバッグまたはモニタあるいはその両方を行うためのツールを利用することも可能である。
【００４１】
　上記その他の目的、態様、および長所は、添付図面に関連して以下に示す本発明の好ましい実施形態の詳細な説明からより十分に理解されるだろう。
【発明を実施するための最良の形態】
【００４２】
　次に、添付図面、より具体的には図４〜１２を参照すると、本発明による方法および構造の好ましい実施形態が示されている。
【００４３】
　詳細な説明に取りかかる前に、ターゲットのオペレーティング・システム・ソフトウェアがすでにターゲット仮想アドレスをターゲット実アドレスに変換するためのメカニズムを有するものと想定する。
【００４４】
　このようなマッピングは、ターゲット・システム上の物理実メモリに依存することになる。ページ・テーブル自体を記憶する位置は、エミュレーション・システムに把握されているものと想定する。
【００４５】
　エミュレーション・システムは、エミュレートしたターゲット・システムの実アドレスより適度に大きい仮想アドレス空間を有するプロセスであると想定する。これにより、ターゲットの実アドレス空間をエミュレートするために、ホストのまとまった連続仮想アドレス空間を予約することができる。
【００４６】
　したがって、図４に転じ、一般的かつ非常に単純化して述べると、本発明者らは、ターゲット・ページ・マッピング・テーブル４１０はすでにターゲット・システム・ソフトウェア内に存在するが放置されていることと、ホスト・ページ・マッピング・テーブル４３０およびホスト実メモリ４４０（ホスト上で動作しているオペレーティング・システムを示唆するもの）はホスト上で動作しており、同様に放置されていることを認識していた。
【００４７】
　しかし、本発明は、テーブル４１０、４３０およびホスト実メモリ４４０（およびホスト上で動作しているオペレーティング・システム）の諸機能を利用するが、ターゲット・システムとホスト・システムとの間に両者間のインタフェースとして機能するターゲット実／ホスト仮想マッパ４２０（たとえば、ターゲット実アドレスをホスト仮想アドレスにマッピングするもの）を入れる。
【００４８】
　したがって、図４に示すように、ホストのオペレーティング・システムは、この空間内の任意のアドレスをそれ専用の実アドレス空間内の実アドレスに変換する。
【００４９】
　具体的には、計算したオペランド・アドレスはターゲット仮想メモリ・アドレスとしてターゲット・ページ・マッピング・テーブル４１０に入力され、これがターゲット実メモリ・アドレスを生成する。ターゲット実メモリ・アドレスはターゲット実／ホスト仮想マッパ４２０に入力され、これがターゲット実メモリ・アドレスをホスト仮想アドレスにマッピングする。ホスト仮想メモリ・アドレスはホスト・ページ・マッピング・テーブル４３０（すでに存在し、ホストにより連続的に更新される）に入力され、これがホスト実メモリ・アドレスを生成する。ホスト実メモリ・アドレスはホスト実メモリ４４０に入力され、これがオペランド値（たとえば、ＬＯＡＤなど）を生成する（ＳＴＯＲＥはホスト実メモリ４４０を通って反対方向へ進むものと思われることに留意されたい）。
【００５０】
　この方式では、ホストの実アドレス空間とターゲットの実アドレス空間が一致する必要がないことに留意されたい。ホストの実アドレス空間がターゲットのものより小さい場合、ホストの仮想アドレス指定により、ページが適切にスワップインおよびスワップアウトされることになる。したがって、ホストの実アドレス空間よりかなり大きいターゲットの実アドレス空間を有することは特に不利益ではないが、ターゲット・ページ・テーブル４１０のサイズをいくらか大きくすることは可能である。
【００５１】
　したがって、ターゲット・マルチプロセッシング・システムのパラメータは、その実メモリ・サイズが物理的に可能なものよりかなり大きくなるように設定することができるだろう。
【００５２】
　これは図５に示されているが、同図では、ターゲット・アドレスのマッピングはエミュレートしたオペレーティング・システムの一機能であり、このため、エミュレーション・システムにより変更または理解する必要はないことも示している。
【００５３】
　すなわち、図５のシステム５００は、ターゲット・オペレーティング・システム機能５００Ａとホスト・オペレーティング・システム機能５００Ｂがシミュレートした実／ホスト仮想マッパ５２０によって分離されていることを示している。図５は、主にターゲット・システムが所与の量の実メモリを有する可能性があるという点で図４とは異なっており、エミュレート中のシステムでは、それがホスト上に存在する実メモリではなく、ホスト上に存在するものよりかなり大きい実メモリであると想像（想定）することができる。したがって、このような動作は、ターゲットの実メモリがホスト上で使用可能な（物理的に可能な）ものよりかなり大きいときに有用になるだろう。
【００５４】
　したがって、図５に戻ると、ターゲット・ページ・マッピング・テーブル５１０は、ターゲット仮想メモリ・アドレスを受け取り、ターゲットのシミュレートした実メモリ・アドレスをシミュレートした実／ホスト仮想マッパ５２０に渡すことになる。マッパ５２０は図４のマッパ４２０と同様のものであるが、ターゲットの実メモリがホスト上で物理的に使用可能なものより大きい状況を処理するものである。
【００５５】
　この状況（たとえば、ターゲットの実メモリの方が大きい）はあまり頻繁に発生するわけではなく、アプリケーションが十分な空間を備えていない場合にアプリケーションが「仮想メモリを大いに使用」し始め、したがって、ホストの仮想メモリを大いに使用し始める可能性があり、それにより、「スラッシング」（すなわち、システム内のページの断続的置換）に至る可能性があるので、この状況は好ましいことではないことに留意されたい。最適なパフォーマンスのために、ターゲットの実メモリのサイズは好ましくはホスト上で使用可能なものより小さくなっている。しかし、図５は、ターゲットの実メモリがホスト・システムのものより大きい状況で本発明を使用できることを示している。
【００５６】
　ターゲット仮想アドレスをターゲット実アドレスにマッピングするポリシーをエミュレータが理解する必要はないが、それは、実際のマッピングを含むテーブルにアクセスできなければならず、それが変更された時期を把握していなければならない。これを行うための１つの方法は、図６に示すように、ページ・テーブルのシミュレート済みコピー６１０を保持することである。
【００５７】
　元のページ・テーブルに含まれる情報に加え、シミュレート済みページ・テーブル６１０は、そのアドレスからホスト仮想メモリ・アドレスへのマッピングを容易にする追加情報を保持することもできるだろう。このようなシミュレート済みページ・テーブル６１０は、図５のターゲット・ページ・マッピング・テーブル５１０と、シミュレートしたターゲット実／ホスト仮想マッパ５２０を含むことができる。たとえば、連続してまとまったホスト仮想メモリがターゲットの実メモリ全体をマッピングするという、ありふれたケースでは、ターゲット実アドレスからホスト仮想アドレスへのマッピングは単純に一定のオフセットの追加を必要とするだけである。
【００５８】
　そのうえ、シミュレート済みページ・テーブル６１０は、エミュレーション・システムが各ページへのアクセス権を執行することを容易にする形式でこのようなアクセス権に関する情報を含むことができるだろう。
【００５９】
　このため、図６では、テーブル５１０とマッパ５２０の両方の機能を１つの機能ブロック（２つの層とは対照的に唯一の層）にマージし、それにより、エミュレーションを単純化し、その動作速度を増加する。すなわち、これらのテーブルのそれぞれを別々に通過するには、ＬＯＡＤおよびＳＴＯＲＥ命令（命令の総数の約１／３以上を構成するもの）を変換するときに余分なソフトウェア命令を必要とする。したがって、１つのテーブルのみを通過することにより、処理が必要な各変換ごとの命令の数量（たとえば、おそらく５〜６つの命令）を最小限にする。
【００６０】
　本発明はすべてのタイプの命令に関係するが、ＬＯＡＤおよびＳＴＯＲＥ用に最適化されており、前述の通り、それらがすべての命令セットの大部分を構成することに留意されたい。すなわち、本発明はこれらのタイプの命令の処理を最適化し、最も効率よくこれらのタイプの命令を扱うので、パフォーマンスが強化される。
【００６１】
　図７の構造７００に示すように、シミュレート済みページ・テーブル７１０（たとえば、テーブル６１０と同様のもの）の機能を、アドレスを含むページへのホスト・アクセス特権とともに、ターゲット仮想アドレスをホスト仮想アドレスにマッピングする機能と見なすことができる。
【００６２】
　したがって、図７は、図６のより一般的な図を示しているが、特権情報のマッピング（および記憶とアクセス）も示している。一般に、特権情報は、各ページ（たとえば、約４０００バイト程度を有する各ページ）に関連する情報である。ある位置へのアクセスが行われると、そのページへのアクセスを対象とする特権情報を含むので、ページ・テーブル７１０が参照される。このため、ページ・テーブル７１０に含まれる特権情報は各ページに関連付けられている。
【００６３】
　図４〜７はターゲット・マシン内の各アクセスが取る経路を示しているが、いくつかのアクセスについて１回だけシミュレート済みページ・テーブル・アクセスが必要になるように、いくつかのアドレスをまとめて分析し、それらを分類することが可能な場合が多いことを理解しなければならないことに留意されたい。たとえば、ターゲット・コードからホスト・コードへの変換の最適化フェーズにおいて、これを実行することができる。単一命令（たとえば、ＣＩＳＣのＲＸ命令）の変換についてもこのような最適化を実行することが可能な場合もあるが、複数命令のグループ、たとえば、基本ブロック内の複数命令を変換するときに、このタイプの機会がより多く発生する。
【００６４】
　次に図８の構造８００に転じると、一般に２通りのアクセス（変換）方式のうちの一方が実行されるので、ページ・テーブルはかなり大きくなる可能性があることに留意されたい。
【００６５】
　たとえば、ホストのページ・テーブル、たとえば、逆ページ・テーブルをシミュレートするときに、実アドレスから索引を付けて、仮想アドレスを取得する。別法として、正規ページ・テーブルが仮想アドレスを取得し、次に実アドレスを取得するために複数の階層テーブルを通過する。
【００６６】
　したがって、これらのテーブルは非常に大きくなるので、その情報のアクセスは長い時間を要する可能性があり、さらにすべての情報を中央位置に有するということは、これらのアクセスすべてに関する情報を取得するにはあるプロセッサから他のプロセッサに移行することを必要とする可能性があり、したがって、情報のキャッシュを実行しなければならないことを意味する。より具体的には、各プロセッサ（たとえば、ターゲット・プロセッサ）にとってローカルの情報をキャッシュすることは、動作全体の速度を上げるために有利なことと思われる。
【００６７】
　さらに、複数のターゲット・プロセッサがメモリ内の複数の位置に同時にアクセスしている可能性があるので、あるプロセッサがシミュレート済みページ・テーブルの内容を変更している間に他のプロセッサがそれにアクセスする必要がある場合も起こり得ることに留意されたい。したがって、正確さのため、ロックを使用してページ・テーブルへのすべてのアクセスを保護しなければならない。しかし、これにより、アクセス・オーバヘッドはかなり大きなものになる。
【００６８】
　上記を考慮して、オーバヘッドを削減するために、図８の本発明では、シミュレートしたプロセッサ当たりキャッシュを１つずつの割合でページ・テーブル８１０内の全項目からなるローカル・キャッシュを提供する。図８のローカル・ルックアサイド・テーブル（ＬＬＴ）８２０として示すこのキャッシュは、対応するターゲット・プロセッサがアクセスした最近のページのみに関する情報を含んでいる。
【００６９】
　このプロセッサをシミュレートするスレッドからＬＬＴへのアクセスはロックする必要がない。というのは、他のプロセッサをエミュレートするスレッドがこのＬＬＴ８２０にアクセスすることがないからである。しかし、たとえば、グローバル・テーブル８１０内の１つの項目が削除されたときに、ＬＬＴ８２０に対して更新を行うことが必要になる場合がある。この状況は滅多にないものと予想されるので、そのＬＬＴ８２０を変更している間にプロセッサをエミュレートするスレッドをブロックすれば十分である。グローバル・テーブルの項目は、妨害されたスレッドの数を最小限にするためにその項目のコピーを有する、複数プロセッサ・スレッドのリストを保持することができるだろう。
【００７０】
　このため、動作時にターゲット・プロセッサでは、ターゲット仮想メモリ・アドレスが生成され、バッファ（ＡＮＤゲート）８３０とＬＬＴ８２０に同時に入力される（たとえば、この場合も「ローカル」はターゲット・プロセッサ上を意味する）。この情報がＬＬＴ８２０に存在する場合、ＬＬＴ８２０はホスト仮想メモリ・アドレスと位置（ページ）アクセス権を送る。
【００７１】
　ＬＬＴ８２０に「ミス」がある場合、バッファ８３０に信号が送られ、次にそのバッファがグローバル・シミュレート済みページ・テーブル８１０に対して情報を要求する信号を発行する。テーブル８１０は、かなり大きいものであり、要求された情報を有する所望のページを見つけ、その情報（および特権）とともにそのページをＬＬＴ８２０に送り、それにより、ＬＬＴ８２０を更新する。次にＬＬＴ８２０は、ホスト仮想メモリ・アドレスと位置（ページ）アクセス権（特権）を要求側に送る。
【００７２】
　要求側が要求されたページに関する特権を備えていない場合、ホスト仮想メモリ・アドレスは依然としてＬＬＴ８２０によって出力することができるが、要求側に戻されることはないことに留意されたい。
【００７３】
　図９は、この情報を取り入れたグローバル・ページ・テーブル８１０内のサンプル・ページ・テーブル項目９００を示し、テーブルそのものと、その諸項目の詳細を示している。テーブル９００は、妥当性／状況ビット９１０、プロセスＩＤ９２０、仮想アドレス９３０、実アドレス９４０、保護ビット９５０、ルックアサイド・マスク９６０に関する情報を含むことに留意されたい。ルックアサイド・マスク９６０は、システム内のどのプロセッサが所望の情報の一部分をキャッシュしたかを示すビット・パターンである。
【００７４】
　したがって、たとえば、図９は、０・・・７という番号が付いた８つのシミュレートしたターゲット・プロセッサがあるものと想定すると、第１の項目はプロセッサ１、２、６のＬＬＴにキャッシュされ、第２の項目はプロセッサ３のＬＬＴのみにキャッシュされることを示している。
【００７５】
　ＬＬＴ８２０でアクセスがミスした場合、これは、対応する項目がＬＬＴ８２０にコピーされていないか、または対応するページが現在、ホスト仮想アドレスにマッピングされていないためである可能性がある。ミスしたエミュレータ・スレッドは、ロックを介してグローバル・ページ・テーブル８１０にアクセスし、それがどのケースであるかを判定する。
【００７６】
　対応する項目がすでにグローバル・テーブル８１０内に存在する場合、これはＬＬＴ８２０の上にコピーされ、おそらく、そこにある行のうちの１つを置き換える。その項目がグローバル・テーブル８１０内に存在しない場合、ターゲット・システム内のページ不在がシミュレートされる。これにより、シミュレート中のマシンのオペレーティング・システム内のページ不在ハンドラが呼び出され、必要なページが持ち込まれる。
【００７７】
　図１０は、上記のプロセスを記述する方法１０００の諸ステップを示している。実マシンでは、ページ不在を処理すると、通常、そのページを要求したターゲット・プロセッサでコンテキスト・スイッチが発生し、実行のために他のタスクをスケジューリングする。同様に、エミュレートしたマシンでは、ページ不在は、そのページ不在を引き起こしたプロセッサをエミュレートするスレッドをブロックしない。
【００７８】
　方法１０００に転じる（とともに図８の構造８００を参照する）と、ステップ１００５では、ＬＬＴ８２０へのアクセスが行われる（たとえば、ターゲット仮想メモリ・アドレスが入力される）。
【００７９】
　ステップ１０１０では、ＬＬＴ８２０に「ミス」があるかどうかが判定される。「ミス」がない場合（たとえば、「ヒット」）、プロセスは終了する。
【００８０】
　「ミス」がある場合、ステップ１０２０では、グローバル・テーブル８１０用のロックを入手する。コヒーレンスのために、このようなロックを使用して、複数プロセッサが同時にアクセスする（とともにクリアする）のを回避する。
【００８１】
　ステップ１０２５では、ページ・テーブルがアクセスされ、ステップ１０３０では、グローバル・ページ・テーブル８１０にミスがあるかどうかが判定される。
【００８２】
　グローバル・ページ・テーブルに「ミス」がない場合（たとえば、「ヒット」）、ステップ１０３５では、グローバル・ページ項目がＬＬＴ８２０にコピーされる。ステップ１０４０でページ・テーブル・ロックが解除され、ステップ１０４５でプロセスが終了する。本発明の文脈における「終了」は、たとえば、正常な変換を遂行すること（たとえば、ＬＯＡＤまたはＳＴＯＲＥなどの場合）を意味することに留意されたい。同様の理由で、これは依然としてキャッシュ内でミスする可能性がある。
【００８３】
　逆に、グローバル・ページ・テーブル８１０に「ミス」がある場合（たとえば、ステップ１０３０で「ＹＥＳ」）、ステップ１０５０でページ・テーブル・ロックが解除される。すなわち、どのプロセッサもその要求（たとえば、ロック要求）に「とどまる」時間が長すぎないようにロックが解除される。というのは、このようにすることにより、テーブルおよびＬＬＴのリソースが拘束され、他のプロセッサがこのようなリソースにアクセスできなくなる恐れがあるからである。このため、ミスがある場合、他のユーザがテーブル８２０を比較的直ちに使用できるようにするためにロックが解除される。
【００８４】
　次に、ステップ１０５５では、シミュレートしたプロセッサがチェックポイント付き状態にリセットされる。すなわち、このステップが実行されるのは、シミュレートしたプロセッサがそれ自体より先に進んでいる（たとえば、ページ不在を超えている）可能性があるためであり、システムは、シミュレートしたプロセッサを、そのシミュレートしたプロセッサが正確に動作していた最後のチェックポイント付き状態に戻す必要がある。
【００８５】
　ステップ１０６０では、ホスト・オペレーティング・システム内でページ不在ハンドラが呼び出され、チェックポイント付き状態から始めてページ不在を判定する。
【００８６】
　ステップ１０６５では、ページ不在ハンドラは欠落ページを検索しようと試み、それにより、欠落ページを見つけ、それをグローバル・ページ・テーブル８２０に入れる。
【００８７】
　次にこの方法はステップ１００５にループバックし、上記のエミュレーション方法がもう一度実行される。おそらく、この後続時点では、ステップ１０３０で「ヒット」が発生することになる（たとえば、ステップ１０３０の「ＮＯ」）。
【００８８】
　図１１は、本発明で使用するためのものであり、好ましくは少なくとも１つのプロセッサまたは中央演算処理装置（ＣＰＵ）１１１１を有する情報処理／コンピュータ・システムの典型的なハードウェア構成を示している。
【００８９】
　ＣＰＵ１１１１は、システム・バス１１１２を介して、ランダム・アクセス・メモリ（ＲＡＭ）１１１４、読取専用メモリ（ＲＯＭ）１１１６、入出力（Ｉ／Ｏ）アダプタ１１１８（ディスク装置１１２１およびテープ・ドライブ１１４０などの周辺装置をバス１１１２に接続するためのもの）、ユーザ・インタフェース・アダプタ１１２２（キーボード１１２４、マウス１１２６、スピーカ１１２８、マイクロホン１１３２、またはその他のユーザ・インタフェース装置、あるいはそれらの組合せをバス１１１２に接続するためのもの）、情報処理システムをデータ処理ネットワーク、インターネット、イントラネット、パーソナル・エリア・ネットワーク（ＰＡＮ）などに接続するための通信アダプタ１１３４、バス１１１２をディスプレイ装置１１３８またはプリンタあるいはその両方に接続するためのディスプレイ・アダプタ１１３６に相互接続されている。
【００９０】
　上記のハードウェア／ソフトウェア環境に加え、本発明の他の態様では、上記の方法を実行するためのコンピュータ実現方法を含む。一例として、この方法は前述の特定の環境で実現することができる。
【００９１】
　このような方法は、たとえば、ディジタル・データ処理装置によって実施されるように、一連の機械可読命令を実行するようにコンピュータを操作することにより実現することができる。このような命令は、様々なタイプの信号運搬媒体に存在することができる。
【００９２】
　この信号運搬媒体は、たとえば高速アクセス記憶装置によって代表されるように、たとえばＣＰＵ１１１１内に含まれるＲＡＭを含むことができる。別法として、ＣＰＵ１１１１によって直接または間接的にアクセス可能な磁気データ記憶ディスケット１２００（図１２）などの他の信号運搬媒体に命令を含めることもできる。
【００９３】
　ディスケット１２００に含まれるか、コンピュータ／ＣＰＵ１１１１またはその他の場所に含まれるかにかかわらず、ＤＡＳＤ記憶装置（たとえば、従来の「ハード・ドライブ」またはＲＡＩＤアレイ）、磁気テープ、電子読取専用メモリ（たとえば、ＲＯＭ、ＥＰＲＯＭ、またはＥＥＰＲＯＭ）、光学記憶装置（たとえば、ＣＤ−ＲＯＭ、ＷＯＲＭ、ＤＶＤ、ディジタル光学テープなど）、紙の「パンチ」カードなどの様々な機械可読データ記憶媒体、またはディジタルおよびアナログ通信リンクならびに無線などの伝送媒体を含むその他の適当な信号運搬媒体上に命令を記憶することができる。本発明の例証となる一実施形態では、機械可読命令は、「Ｃ」などの言語からコンパイルされたソフトウェア・オブジェクト・コードを含むことができる。
【００９４】
　したがって、前述の通り、本発明により、他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定を効果的にマッピングすることができる。
【００９５】
　すなわち、本発明は、多対多のマッピングが存在し、ターゲット上で動作しているソフトウェアに対する実際の厳密な制御が存在しないマルチプロセッシング環境においてメモリ・マッピング問題に対する固有の解決策を提供している。
【００９６】
　さらに、本発明は、共有メモリを効率よくマッピングするエミュレーションを可能にし、特に、動作だけでなく、メモリ、アクセス機能などもエミュレートすることによりエミュレーションを強化するものである。実際は、本発明では、いかなるマッピングでも、ある位置から実位置へのマッピングと、その位置にアクセスする際の特権のマッピングの両方を必要とすることを認識（かつ考慮）している。本発明では、これらの両方を考慮に入れている。
【００９７】
　このため、本発明は、他のシステムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるシステムのメモリ・アドレスをより効率よくしかもより最適にマッピングすることができる。他のシステムの仮想メモリ・アドレス指定をエミュレーションに使用することは、本発明の主な特徴の１つである。前述の通り、仮想メモリの使用は、マッピングを行うときのより大きい空間を見込んでいる。したがって、ターゲット（ゲスト）の６４ビット仮想メモリをホストの６４ビット仮想メモリに向ける（マッピングする）ことができるが、同じメモリを実メモリにマッピングする場合は、３２ビットのみが可能になる。
【００９８】
　いくつかの好ましい実施形態に関して本発明を説明してきたが、当業者であれば、特許請求の範囲の精神および範囲内で変更を加えて本発明を実施できることが分かるだろう。
【００９９】
　さらに、本出願人の意図は、権利請求中に後日補正された場合でも、すべての特許請求の範囲と同等のものを包含することであることに留意されたい。
【０１００】
　まとめとして、本発明の構成に関して以下の事項を開示する。
【０１０１】
　（１）ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートする方法において、
　ターゲット仮想メモリ・アドレスをページ・テーブルに入力してホスト仮想メモリ・アドレスを入手するステップを具備し、
　前記ターゲット・システムが、それが動作しているソフトウェアに認識されない方法。
　（２）前記ページ・テーブルがシミュレート済みページ・テーブルを具備し、前記方法が、
　前記ホスト仮想メモリ・アドレスにより前記シミュレート済みページ・テーブルから特権情報を入手するステップをさらに具備する、上記（１）に記載の方法。
　（３）前記ページ・テーブルにより、いくつかのアドレスをまとめて分析し、前記ページ・テーブル・アクセスが複数のアクセスについて１回行われるようにそれらを分類するステップをさらに具備する、上記（１）に記載の方法。
　（４）前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレスを前記ターゲット・システム上でローカルにキャッシュするステップをさらに具備する、上記（１）に記載の方法。
　（５）それに対するアクセスを行うときに、前記ページ・テーブルをロックするステップをさらに具備する、上記（１）に記載の方法。
　（６）前記ターゲット・プロセッサ用のページ・テーブル内の諸項目からなるローカル・キャッシュを提供するステップをさらに具備する、上記（１）に記載の方法。
　（７）前記マルチプロセッサ・システムにおいて、前記マルチプロセッサ・システムのシミュレートした各プロセッサごとに１つのキャッシュが設けられ、前記キャッシュが対応するターゲット・プロセッサによってアクセスされた最近のページに関する情報を含むステップをさらに具備する、上記（６）に記載の方法。
　（８）前記ターゲット・プロセッサをシミュレートするスレッドによる前記ローカル・キャッシュへのアクセスがロックされず、前記マルチプロセッサ・システム内の他のプロセッサをエミュレートするスレッドが前記ローカル・キャッシュにアクセスしない、上記（６）に記載の方法。
　（９）前記ターゲット・プロセッサにおいて、バッファおよび前記ローカル・キャッシュにターゲット仮想メモリ・アドレスを同時に入力するステップをさらに具備し、
　前記ターゲット仮想メモリ・アドレスが前記ローカル・キャッシュに存在する場合に、前記ローカル・キャッシュが前記ホスト仮想メモリ・アドレスと前記位置アクセス権を前記ホスト・システムに送る、上記（６）に記載の方法。
　（１０）前記ローカル・キャッシュに「ミス」がある場合に、前記バッファに信号が送られ、
　前記バッファが前記情報を要求する信号を前記ページ・テーブルに発行する、上記（９）に記載の方法。
　（１１）前記ページ・テーブルが、前記要求された情報を有する所望のページを見つけ、前記要求された情報および特権とともに前記ページを前記ローカル・キャッシュに送り、
　前記ローカル・キャッシュが、前記ホスト仮想メモリ・アドレスとページ・アクセス権を要求側に送る、上記（１０）に記載の方法。
　（１２）妥当性／状況ビット、プロセスＩＤ、仮想アドレス、前記仮想アドレスに対応する実アドレス、保護ビット、ルックアサイド・マスクに関する情報を含む項目を前記ページ・テーブルに提供するステップをさらに具備し、
　前記ルックアサイド・マスクが、前記システム内のどのプロセッサが所望の情報の一部分をキャッシュしたかを示すビット・パターンである、上記（１）に記載の方法。
　（１３）対応する項目がすでに前記ページ・テーブル内に存在する場合に、前記対応する項目が前記ローカル・キャッシュにコピーされる、上記（６）に記載の方法。
　（１４）前記項目が前記ページ・テーブル内に存在しない場合に、前記ターゲット・システム内のページ不在がシミュレートされ、シミュレート中の前記ターゲット・プロセッサのオペレーティング・システム内のページ不在ハンドラを呼び出し、必要なページが持ち込まれる、上記（１３）に記載の方法。
　（１５）エミュレートした命令が、ＬＯＡＤ命令およびＳＴＯＲＥ命令のうちの少なくとも一方を具備する、上記（１）に記載の方法。
　（１６）他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングする方法において、
　ターゲット仮想メモリ・アドレスによりターゲット・プロセッサ上のローカル・ルックアサイド・テーブル（ＬＬＴ）にアクセスするステップと、
　前記ＬＬＴに「ミス」があるかどうかを判定するステップと、
　前記ＬＬＴで判定された前記ミスにより、グローバル・ページ・テーブル用のロックを入手するステップとを具備する方法。
　（１７）前記グローバル・ページ・テーブルにアクセスするステップと、
　前記グローバル・ページ・テーブルにミスがあるかどうかを判定するステップとをさらに具備する、上記（１６）に記載の方法。
　（１８）前記グローバル・ページ・テーブルで前記ミスが判定されないときに、前記グローバル・ページ項目を前記ＬＬＴにコピーするステップと、
　前記ページ・テーブル・ロックを解除するステップとをさらに具備する、上記（１７）に記載の方法。
　（１９）前記ページ・テーブルで前記ミスが判定されたことにより、前記ページ・テーブル・ロックを解除するステップと、
　シミュレート中の前記ターゲット・プロセッサをチェックポイント付き状態にリセットするステップと、
　前記ホスト・オペレーティング・システム内のページ不在ハンドラを呼び出して、前記チェックポイント付き状態から始めて、前記ページ不在を判定するステップと、
　前記欠落ページを検索し、前記欠落ページを前記グローバル・ページ・テーブルに入れるステップとをさらに具備する、上記（１７）に記載の方法。
　（２０）エミュレートした命令が、ＬＯＡＤ命令およびＳＴＯＲＥ命令のうちの少なくとも一方を具備する、上記（１６）に記載の方法。
　（２１）ターゲット・システムの動作を表現する１つまたは複数のスレッドの実行によりターゲット・ｎプロセッサ・システム（ｎ≧１）の動作をエミュレートするためのホスト・マルチプロセッサ・システムにおいて、前記ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用して前記ターゲット・システムのメモリ・アドレス指定をエミュレートするための方法であって、
　（ａ）ターゲット・システム仮想メモリ・アドレス（ＡＴＶ）を読み取るステップと、
　（ｂ）前記ＡＴＶをターゲット実アドレス（ＡＴＲ）にマッピングするステップと、
　（ｃ）前記ＡＴＲをホスト仮想メモリ・アドレス（ＡＨＶ）にマッピングするステップと、
　（ｄ）前記ＡＨＶをホスト実メモリ・アドレスにマッピングするステップとを具備し、
　前記ターゲット・システムのメモリ・アドレス指定のエミュレーションが前記ホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われる方法。
　（２２）ターゲット・システムのメモリ・アドレス指定をエミュレートするためのシステムにおいて、
　ターゲット・システムからのターゲット仮想メモリ・アドレスをホスト仮想メモリ・アドレスおよびページ・アクセス権にマッピングするためのページ・テーブルを具備し、
　前記ターゲット・システムが、それが動作しているソフトウェアに認識されないシステム。
　（２３）前記ページ・テーブルが、いくつかのアドレスをまとめて分析し、前記シミュレートしたページ・テーブル・アクセスが複数のアクセスについて１回行われるようにそれらを分類するための手段を含む、上記（２２）に記載のシステム。
　（２４）前記ターゲット・システムが、前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレスを前記ターゲット・システム上でローカルにキャッシュするためのローカル・ルックアサイド・テーブル（ＬＬＴ）を含む、上記（２２）に記載のシステム。
　（２５）それに対するアクセスを行うときに、前記ページ・テーブルをロックするためのロックをさらに具備する、上記（２２）に記載のシステム。
　（２６）前記マルチプロセッサ・システムにおいて、前記マルチプロセッサ・システムのシミュレートした各プロセッサごとに１つの前記ＬＬＴが設けられ、前記ＬＬＴが対応するターゲット・プロセッサによってアクセスされた最近のページに関する情報を含むことをさらに具備する、上記（２２）に記載のシステム。
　（２７）前記プロセッサをシミュレートするスレッドによる前記ＬＬＴへのアクセスがロックされず、
　前記マルチプロセッサ・システム内の他のプロセッサをエミュレートするスレッドが前記ＬＬＴにアクセスしない、上記（２６）に記載のシステム。
　（２８）前記ＬＬＴにより前記ターゲット仮想メモリ・アドレスが受け取られるのと実質的に同時に前記ターゲット仮想メモリ・アドレスを受け取るためのバッファをさらに具備し、
　前記ターゲット仮想メモリ・アドレスが前記ＬＬＴに存在する場合に、前記ＬＬＴが前記ホスト仮想メモリ・アドレスと前記位置アクセス権を前記ホスト・システムに送る、上記（２６）に記載のシステム。
　（２９）前記ＬＬＴに「ミス」がある場合に、バッファに信号が送られ、
　前記バッファが前記情報を要求する信号を前記ページ・テーブルに発行する、上記（２６）に記載のシステム。
　（３０）前記ページ・テーブルが、要求された情報を有する所望のページを見つけ、前記情報および特権とともに前記ページを前記ＬＬＴに送り、
　前記ＬＬＴが、前記ホスト仮想メモリ・アドレスとページ・アクセス権を前記要求側に送る、上記（２９）に記載のシステム。
　（３１）前記ページ・テーブルが、妥当性／状況ビット、プロセスＩＤ、仮想アドレス、前記仮想アドレスに対応する実アドレス、保護ビット、ルックアサイド・マスクに関する情報を含む項目を含み、
　前記ルックアサイド・マスクが、前記システム内のどのプロセッサが所望の情報の一部分をキャッシュしたかを示すビット・パターンである、上記（２２）に記載のシステム。
　（３２）ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするためのシステムにおいて、
　ターゲット仮想メモリ・アドレスを受け取り、前記ターゲット仮想メモリ・アドレスに関する情報が前記ＬＬＴに記憶された場合にホスト仮想メモリ・アドレスおよびページ・アクセス権を出力するためのローカル・ルックアサイド・テーブル（ＬＬＴ）を具備するシステム。
　（３３）前記ターゲット仮想メモリ・アドレスを受け取り、前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレスを提供するためのページ・テーブルをさらに具備する、上記（３２）に記載のシステム。
　（３４）前記ターゲット・システムが、それが動作しているソフトウェアに認識されない、上記（３２）に記載のシステム。
　（３５）それが前記ＬＬＴで見つからないときに、前記ページ・テーブルが前記ターゲット仮想メモリ・アドレスに対応する前記ホスト仮想メモリ・アドレス情報で前記ＬＬＴを更新する、上記（３３）に記載のシステム。
　（３６）他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングするためのシステムにおいて、
　ターゲット仮想メモリ・アドレスとそれに対応するホスト仮想メモリ・アドレスとを記憶するためのターゲット・プロセッサ上のローカル・ルックアサイド・テーブル（ＬＬＴ）と、
　ターゲット仮想メモリ・アドレスにより前記ＬＬＴにアクセスするための手段と、
　前記ＬＬＴに「ミス」があるかどうかを判定するための手段と、
　前記判定手段からの入力に基づいて、グローバル・ページ・テーブル用のロックを入手するための手段とを具備するシステム。
　（３７）ターゲット・システムの動作を表現する１つまたは複数のスレッドの実行によりターゲット・ｎプロセッサ・システム（ｎ≧１）の動作のマルチプロセッサ・エミュレーションのためのシステムにおいて、
　ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用して前記ターゲット・システムのメモリ・アドレス指定をエミュレートするための手段を具備し、前記エミュレーティング手段が、
　　（ａ）ターゲット・システム仮想メモリ・アドレス（ＡＴＶ）を読み取るための手段と、
　　（ｂ）前記ＡＴＶをターゲット実アドレス（ＡＴＲ）にマッピングするための手段と、
　　（ｃ）前記ＡＴＲをホスト仮想メモリ・アドレス（ＡＨＶ）にマッピングするための手段と、
　　（ｄ）前記ＡＨＶをホスト実メモリ・アドレスにマッピングするための手段とを具備し、
　前記ターゲット・システムのメモリ・アドレス指定のエミュレーションが前記ホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われるシステム。
　（３８）ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートする方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
　ターゲット仮想メモリ・アドレスをシミュレート済みページ・テーブルに入力してホスト仮想メモリ・アドレスを入手するステップを具備し、
　前記ターゲット・システムが、それが動作しているソフトウェアに認識されない信号運搬媒体。
　（３９）他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定をマッピングする方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
　ターゲット仮想メモリ・アドレスによりターゲット・プロセッサ上のローカル・ルックアサイド・テーブル（ＬＬＴ）にアクセスするステップと、
　前記ＬＬＴに「ミス」があるかどうかを判定するステップと、
　前記ＬＬＴで判定された前記ミスにより、前記ページ・テーブル用のロックを入手するステップとを具備する信号運搬媒体。
　（４０）ターゲット・システムの動作を表現する１つまたは複数のスレッドの実行によりターゲット・ｎプロセッサ・システム（ｎ≧１）の動作をエミュレートするホスト・マルチプロセッサ・システムにおいて、ホスト・マルチプロセッサ・システムのオペレーティング・システムの仮想／実メモリ・マッピング・メカニズムを使用してターゲット・システムのメモリ・アドレス指定をエミュレートするための方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
　（ａ）ターゲット・システム仮想メモリ・アドレス（ＡＴＶ）を読み取るステップと、
　（ｂ）前記ＡＴＶをターゲット実アドレス（ＡＴＲ）にマッピングするステップと、
　（ｃ）前記ＡＴＲをホスト仮想メモリ・アドレス（ＡＨＶ）にマッピングするステップと、
　（ｄ）前記ＡＨＶをホスト実メモリ・アドレスにマッピングするステップとを具備し、
　前記ターゲット・システムのメモリ・アドレス指定のエミュレーションが前記ホスト・マルチプロセッサ・システム上で動作するアプリケーションとして取り扱われる信号運搬媒体。
【図面の簡単な説明】
【０１０２】
【図１】典型的な仮想メモリ・システム１００におけるアドレス・マッピングを示す図である。
【図２】従来技術の仮想アドレス・シミュレーション方式２００を示す図である。
【図３】ターゲット・システム内のプロセスの知識を必要とするマッピング方式３００を示す図である。
【図４】ターゲット実アドレスをホスト仮想アドレスにマッピングする方式４００を示す図である。
【図５】ターゲット上のオペレーティング・システムとホスト上のオペレーティング・システムとの間のマッピング機能の区分化を示す構造５００を示す図である。
【図６】シミュレート済みページ・テーブル６１０のマッピング機能を示す構造６００を示す図である。
【図７】シミュレート済みページ・テーブル７１０が提供するマッピングおよび保護情報を示す構造７００を示す図である。
【図８】ローカル・ルックアサイド・テーブル８２０（ＬＬＴ）ならびにそれとグローバル・ページ・テーブル８１０との関係を示す構造８００を示す図である。
【図９】その項目のコピーを有するシミュレート済みプロセッサをリストするための追加フィールドを含み、グローバル・ページ・テーブル項目内の各種フィールドを含むテーブル９００を示す図である。
【図１０】ページ・テーブル項目にアクセスする際に必要とする諸ステップを含む方法１０００を示す図である。
【図１１】そこに本発明を取り入れるための例示的なハードウェア／情報処理システム１１００を示す図である。
【図１２】本発明による方法のプログラムの諸ステップを記憶するための信号運搬媒体１２００（たとえば、記憶媒体）を示す図である。
【符号の説明】
【０１０３】
１１０、４１０、５１０　ターゲット・ページ・マッピング・テーブル
１２０　ターゲット実メモリ
２１０　シミュレート済みページ・マッピング・テーブル
２２０、３３０、４４０、５４０　ホスト実メモリ
３１０　ターゲット／ホスト仮想アドレス・マッパ
３２０、４１０、４２０、４３０、５３０　ホスト・ページ・マッピング・テーブル
４２０　ターゲット実／ホスト仮想マッパ
５００Ａ　ターゲットＯＳ機能
５００Ｂ　ホストＯＳ機能
５２０　シミュレートした実／ホスト仮想マッパ
６００　７１０　シミュレート済みページ・テーブル
８１０　グローバル・シミュレート済みページ・テーブル
８２０　ローカル・ルックアサイド・テーブル（シミュレートしたターゲット・プロセッサ１）
９１０　妥当性／状況ビット
９２０　プロセスＩＤ
９３０　仮想アドレス
９４０　実アドレス
９５０　保護ビット
９６０　ルックアサイド・マスク
１１１８　Ｉ／Ｏアダプタ
１１２２　ユーザ・インタフェース・アダプタ
１１３４　通信アダプタ
１１３６　ディスプレイ・アダプタ
１１３９　プリンタ
【図１】
2004110812.tif 000003
【図２】
2004110812.tif 000004
【図３】
2004110812.tif 000005
【図４】
2004110812.tif 000006
【図５】
2004110812.tif 000007
【図６】
2004110812.tif 000008
【図７】
2004110812.tif 000009
【図８】
2004110812.tif 000010
【図９】
2004110812.tif 000011
【図１０】
2004110812.tif 000012
【図１１】
2004110812.tif 000013
【図１２】
2004110812.tif 000014