(57)【要約】【課題】　あるマルチプロセッシング・システムが、何らかのプロセッサ命令セットとメモリ・アーキテクチャを使用して、他の何らかのプロセッサ命令を使用する他のマルチプロセッシング・システムの挙動を効率よくエミュレートすることができる方法および構造を提供すること。【解決手段】　第２の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたマルチプロセッサ・プログラムを実行するための方法（およびシステム）は、ターゲット・コンピューティング・システムの１つのプロセッサ上で動作するように設計されたプログラムの各部分を、ホスト・コンピューティング・システム上で実行すべき１つまたは複数のプログラム・スレッドとして表現するステップを含む。【選択図】　図１１
2004110809.tif 000002
【特許請求の範囲】
【請求項１】
　第２の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行する方法において、
　ターゲット・コンピューティング・システムの１つのプロセッサ上で動作するように設計された前記プログラムの各部分を、前記ホスト・コンピューティング・システム上で実行すべき１つまたは複数のプログラム・スレッドとして表現するステップを具備する方法。
【請求項２】
　前記ホスト・システム内の１つまたは複数のプロセッサ上で実行するために各スレッドをスケジューリングするステップをさらに具備する、請求項１に記載の方法。
【請求項３】
　前記ターゲット・システムの１つのプロセッサに固有ではない前記ターゲット・システムの機能を、前記ホスト・システム上の１つまたは複数のプロセッサによって実行すべき１つまたは複数のスレッドとして表現するステップをさらに具備する、請求項１に記載の方法。
【請求項４】
　前記ターゲット・システムの１つのプロセッサに固有ではない前記ターゲット・システムの機能を、前記ホスト・システム上の１つまたは複数のプロセッサによって実行すべき１つまたは複数のスレッドとして表現するステップをさらに具備する、請求項２に記載の方法。
【請求項５】
　スレッドの数が前記ホスト・システム内のプロセッサの数を超える、請求項１に記載の方法。
【請求項６】
　所与の命令グループが所定の回数解釈された後、前記命令グループを前記第１の命令セットから前記第２の命令セットに変換する、請求項１に記載の方法。
【請求項７】
　前記解釈プロセスがマルチプロセッサ・システム内のスレッドとして実行される、請求項６に記載の方法。
【請求項８】
　所与の時点における前記プロセッサの複数の機能が複数スレッドとして表現される、請求項１に記載の方法。
【請求項９】
　動的にスレッドを作成するステップをさらに具備する、請求項１に記載の方法。
【請求項１０】
　同時に、第１のスレッドの変換を識別し、第２のスレッドを実行するステップをさらに具備する、請求項１に記載の方法。
【請求項１１】
　同時に、第１のスレッドを変換し、第２のスレッドを実行するステップをさらに具備する、請求項１に記載の方法。
【請求項１２】
　前記スレッドから前記プロセッサへの多対多のマッピングが実行される、請求項１に記載の方法。
【請求項１３】
　エミュレーション・スレッドを実行中にホスト・アプリケーション・スレッドが動作している、請求項１に記載の方法。
【請求項１４】
　マルチプロセッサ・システムのエミュレーションの方法において、
　ターゲット・システムの各部分を、ホスト・システム上で実行するためのスレッドとして表現するステップと、
　前記ホスト・システム上で実行するために前記スレッドのそれぞれをスケジューリングするステップとを具備する方法。
【請求項１５】
　マルチプロセッサ・システムのエミュレーションの方法において、
　ターゲット・システムのハードウェア・リソースをソフトウェア・スレッドにマッピングするステップと、
　前記ソフトウェア・スレッドをホスト・システムのハードウェア・リソースにマッピングするステップと、
　前記ターゲット・システムの状態情報を前記ホスト・システムのメモリにマッピングするステップと、
　エミュレーション・タスクをより多数のスレッドに区分化することによりエミュレーションのパフォーマンスを改善するステップとを具備する方法。
【請求項１６】
　マルチプロセッサ・システムのエミュレーションのためのシステムにおいて、
　ターゲット・システムのハードウェア・リソースをソフトウェア・スレッドにマッピングするための手段と、
　前記ソフトウェア・スレッドをホスト・システムのハードウェア・リソースにマッピングするための手段と、
　前記ターゲット・システムの状態情報を前記ホスト・システムのメモリにマッピングするための手段と、
　エミュレーション・タスクをより多数のスレッドに区分化することによりエミュレーションのパフォーマンスを改善するための手段とを具備するシステム。
【請求項１７】
　第２の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行するためのシステムにおいて、
　前記ターゲット・コンピューティング・システムの１つのプロセッサ上で動作するように設計された前記プログラムの各部分を、前記ホスト・コンピューティング・システム上で実行すべき１つまたは複数のプログラム・スレッドとして表現するための表現ユニットを具備するシステム。
【請求項１８】
　マルチプロセッサ・システム用のエミュレーションのためのシステムにおいて、
　ターゲット・システムのハードウェア・リソースをソフトウェア・スレッドにマッピングするための第１のマッピング・モジュールと、
　前記ソフトウェア・スレッドをホスト・システムのハードウェア・リソースにマッピングするための第２のマッピング・モジュールと、
　前記ターゲット・システムの状態情報を前記ホスト・システムのメモリにマッピングするための第３のマッピング・モジュールと、
　エミュレーション・タスクをより多数のスレッドに区分化するための区分化モジュールとを具備するシステム。
【請求項１９】
　マルチプロセッサ・システムのホスト・コンピューティング・システム用のスレッド処理構造において、
　スレッドを保持するためのスレッド・プールと、
　前記ホスト・コンピューティング・システムのメモリにアクセスし、前記スレッド・プール内のどのスレッドをエミュレーションのために選択すべきかを決定するためのスレッド・プロセッサと、
　新しいスレッドを作成し、前記新しいスレッドを前記スレッド・プールに入れるためのスレッド・クリエータと、
　前記スレッド・プールに保持された前記スレッドをスケジューリングするためのスレッド・スケジューラであって、待機スレッドを走査し、優先順位の順序で次のスレッドを前記マルチプロセッサ・システムの使用可能プロセッサに割り振るスレッド・スケジューラとを具備するスレッド処理構造。
【請求項２０】
　第２の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行する方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
　ターゲット・コンピューティング・システムの１つのプロセッサ上で動作するように設計された前記プログラムの各部分を、前記ホスト・コンピューティング・システム上で実行すべき１つまたは複数のプログラム・スレッドとして表現するステップを具備する信号運搬媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は、一般に、コンピュータ・システムに関し、より具体的には、あるマルチプロセッシング・コンピュータ・システムの挙動を他のマルチプロセッシング・コンピューティング・システム上で再生するための方法（およびシステム）に関する。
【背景技術】
【０００２】
　あるコンピュータ・システムの挙動を他のコンピュータ・システム上でエミュレートする必要性は長い間、認識されてきた。これを実行するための方式はいくつか提案されている。このような技法の要約は、参照により本明細書に組み込まれる米国特許第５８３２２０５号に記載されている。
【０００３】
　米国特許第５８３２２０５号の解決策は、あるプロセッサの命令セットのエミュレーションを他のプロセッサ上で実行するための複合ハードウェア／ソフトウェア方式を含むものである。この方式では、ターゲット命令セットの実行を容易にする機構をハードウェア設計に組み込むことができる。しかし、同じ理由により、この方式ではすべてのシステムを均等に効率よくエミュレートすることができない。
【０００４】
　参照により本明細書に組み込まれるＳｉｍＯＳ（たとえば、１９９８年２月発表のStephen A. Herrodによる「UsingComplete Machine Simulation to Understand Computer System Behavior」というスタンフォード大学博士論文を参照）およびＳｉｍＩＣＳ（たとえば、１９９３年１月、カリフォルニア州ラ・ホーヤで開催されたModeling, Analysis, and Simulation of Computer and TelecommunicationSystems (MASCOTS)の第１回国際ワークショップの会議録、６９〜７８ページのPeter S. Magnussonによる「A Design For Efficient Simulation of a Multiprocessor」という論文を参照）は、特別なハードウェア機構を使用せずにエミュレート可能なシステムの例である。しかし、そのパフォーマンスは、米国特許第５８３２２０５号のパフォーマンスほど効果的ではない。
【０００５】
　一般に、これらのシステムは、様々なレベルの変換を使用する。コードの実行程度に応じて変換程度が変化する技法が記載されている（たとえば、１９９６年３月５日発行のMicroprocessor Reportに掲載されたJim Turleyによる「Alpha Runsx86 Code with FX!32」という論文を参照）。
【０００６】
　しかし、現在のコンピュータ・システムは複数のプロセッサを含む（たとえば、ユニプロセッサ・システムとは対照的なマルチプロセッサ・システム）。このようなマルチプロセッサ・システムのエミュレーションは、従来の技法では十分に対処されていなかった。
【０００７】
　そのうえ、このようなシステム内の複数プロセッサのエミュレーションの他に、エミュレートする必要がある追加の側面は、プロセッサ間の様々な通信形式ならびに複数プロセッサによるメモリ位置へのアクセスの順序を支配する規則である。
【０００８】
　ＳｉｍＯＳとＳｉｍＩＣＳはいずれも、マルチプロセッサ・システムの挙動をエミュレートしようと試みる。しかし、これらは、マルチプロセッサ・システムをホスト・コンピューティング・システムとして使用するわけではない。
【０００９】
　したがって、従来の技法では、マルチプロセッサ・システム内のマルチプロセッサのエミュレーションの問題に対処していない。
【００１０】
　すなわち、従来の技法（および命令セット・アーキテクチャ）は、単一プロセッサ・システムをエミュレートすることに制限されている（しかもそれに言及する）場合が非常に多いが、現在はほとんどのシステムがマルチプロセッサ・システムであり、特に、大型システム（たとえば、パーソナル・コンピュータ（ＰＣ）の領域を上回るもの）である。このため、あるプロセッサを他のプロセッサによりエミュレートするために使用してきた技法は、マルチプロセッサ・システム環境では機能しなくなる。すなわち、ユニプロセッサ・システム用に設計された従来のエミュレーション技法は、複数プロセッサが存在する場合に実行するのは不可能である。
【特許文献１】米国特許第５８３２２０５号
【非特許文献１】１９９８年２月発表のStephen A. Herrodによる「Using Complete Machine Simulation toUnderstand Computer System Behavior」というスタンフォード大学博士論文
【非特許文献２】１９９３年１月、カリフォルニア州ラ・ホーヤで開催されたModeling, Analysis, and Simulation of Computer and TelecommunicationSystems (MASCOTS)の第１回国際ワークショップの会議録、６９〜７８ページのPeter S. Magnussonによる「A Design For Efficient Simulation of a Multiprocessor」という論文
【非特許文献３】１９９６年３月５日発行のMicroprocessorReportに掲載されたJim Turleyによる「Alpha Runs x86 Code with FX!32」という論文
【非特許文献４】１９９６年９月発行のBradfordNichols他による「PthreadsProgramming: A POSIX Standard for Better Multiprocessing」（O'Reilly Nutshell）
【発明の開示】
【発明が解決しようとする課題】
【００１１】
　従来の方法および構造の上記その他の問題、欠点、短所を考慮して、本発明の一目的は、あるマルチプロセッシング・システムが、何らかのプロセッサ命令セットとメモリ・アーキテクチャを使用して、他の何らかのプロセッサ命令を使用する他のマルチプロセッシング・システムの挙動を効率よくエミュレートすることができる方法および構造を提供することにある。
【課題を解決するための手段】
【００１２】
　本発明の第１の態様では、第２の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行するための方法（およびシステム）は、ターゲット・コンピューティング・システムの１つのプロセッサ上で動作するように設計されたプログラムの各部分を、ホスト・コンピューティング・システム上で実行すべき１つまたは複数のプログラム・スレッドとして表現するステップを含む。
【００１３】
　本発明の第２の態様では、システム（および方法）は、ターゲット・システムのハードウェア・リソースをソフトウェア・スレッドにマッピングするための手段と、スレッドをホスト・システムのハードウェア・リソースにマッピングするための手段と、ターゲット・システムの状態情報をホスト・システムのメモリにマッピングするための手段と、エミュレーション・タスクをより多数のスレッドに区分化することによりエミュレーションのパフォーマンスを改善するための手段とを含む。
【００１４】
　本発明の第３の態様では、マルチプロセッサ・システムのホスト・コンピュータ用のスレッド処理構造は、スレッドを保持するためのスレッド・プールと、ホスト・システムのメモリにアクセスし、スレッド・プール内のどのスレッドをエミュレーションのために選択すべきかを決定するためのスレッド・プロセッサと、新しいスレッドを作成し、前記新しいスレッドをスレッド・プールに入れるためのスレッド・クリエータと、スレッド・プールに保持されたスレッドをスケジューリングするためのスレッド・スケジューラであって、待機スレッドを走査し、優先順位の順序で次のスレッドを使用可能プロセッサに割り振るスレッド・スケジューラとを含む。
【００１５】
　本発明の第４の態様では、第２の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行する方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体であって、その方法は、ターゲット・コンピューティング・システムの１つのプロセッサ上で動作するように設計されたプログラムの各部分を、ホスト・コンピューティング・システム上で実行すべき１つまたは複数のプログラム・スレッドとして表現するステップを含む。
【００１６】
　本発明の固有かつ自明ではない諸態様により、多くのプロセッサを有するシステムのエミュレーションを効率よく実行することができる。さらに、本発明では、エミュレーションのためにホスト・コンピュータを使用する。
【００１７】
　そのうえ、本発明の重要な特徴は、本発明がゲスト・システムは１つのハードウェアであるという概念を脱していることである。実際は、本発明ではゲスト・システムを１つのソフトウェアとして取り扱っている。
【００１８】
　このため、ゲストは、実行する必要のある複数のパラレル・スレッドを有するものとして、より抽象的に取り扱われ、次にそのスレッドはホストのハードウェア・リソースにマッピングされる。これにより、プログラムの並列性をゲストのハードウェアに通常通りマッピングする中間ステップが排除され、その場合、ゲストのハードウェアはホストのハードウェアによってエミュレートされることになるだろう。本発明は、ホストのハードウェアにマッピングしたと思われるゲストのハードウェアが実際に存在した可能性があることを把握する中間ステップをも排除するものである。
【００１９】
　したがって、本発明は、ゲストのアプリケーションのソフトウェア・スレッドをゲストのハードウェアにマッピングするステップを排除する。その後、ゲストのスレッドのそれぞれは、ホストの１つまたは複数のプロセッサ上で実行するためにスケジューリングされる。
【００２０】
　本発明のもう１つの長所は、ゲスト・マシンのハードウェアの詳細を正確に取得することを懸念する必要がないので、このようなシステムを構築しデバッグすることがより容易なことである。
【００２１】
　上記その他の目的、態様、および長所は、添付図面に関連して以下に示す本発明の好ましい実施形態の詳細な説明からより十分に理解されるだろう。
【発明を実施するための最良の形態】
【００２２】
　次に、添付図面、より具体的には図１〜１４を参照すると、本発明による方法および構造の好ましい実施形態が示されている。
【００２３】
　図１は、エミュレートするための汎用マルチプロセッシング・システム１００を示している。これは複数のプロセッサ１１０Ａ〜１１０Ｄを含み、それぞれはおそらく何らかの相互接続ネットワーク１２０によりメモリ階層１３０に接続された専用のローカル・キャッシュを備えており、そのメモリ階層１３０はメイン・メモリ（図示せず）によってバックアップされた追加レベルのキャッシュを含むことができる。また、このシステムは、Ｉ／Ｏプロセッサ１４０により、ディスクおよび通信ネットワークを含むＩ／Ｏ装置にアクセスすることができ、そのＩ／Ｏプロセッサ１４０はシステムからの着信要求を装置が理解可能な形式にフォーマットする。明らかなことに、このシステムは、図示の４つのプロセッサなどに制限されず、実際は任意の数のプロセッサなどを使用することができる。
【００２４】
　図１の各プロセッサ１１０Ａ〜１１０Ｄは、システム１００の状態に影響する命令を実行しているものと見なすことができる。各命令の効果は図２の方式２００に示すように分類される。
【００２５】
　たとえば、ある命令は、それを実行しているプロセッサにとってローカルのリソースに影響するかまたはすべてのプロセッサ間で共用されるリソースに影響するかに応じて、「ローカル・リソース命令」または「共用リソース命令」として大まかに分類することができる。ローカル・リソースの例は、各プロセッサにとってローカルの汎用レジスタ、浮動小数点レジスタ、プロセッサ状況レジスタ、および制御レジスタである。共用リソースとしてはメモリとＩ／Ｏ装置を含むことができる。
【００２６】
　複数プロセッサが所与の期間内に共用リソースにアクセスしようと試みる可能性があるので、共用リソースは特に注意してエミュレートしなければならない。エミュレートしたシステム内の共用リソースのアクセス順序は、エミュレートされるシステム内で発生するであろう順序と同じ順序になることは、重要なことである。
【００２７】
　これを効率よく管理するために、共用リソース命令は、（ａ）実行中のプロセッサによって排他的に使用される共用リソースにアクセスすることを意味する「排他命令」、（ｂ）命令によって使用される共用リソースが読取り専用であって変更されないことを意味する「共用読取り命令」、（ｃ）他のすべての共用リソース命令を含む「伝達命令」としてさらに分類される。伝達命令は、通常、たとえば、１つまたは複数の他のプロセッサが読み取る値をあるプロセッサが書き込むことにより、あるプロセッサから他のプロセッサに情報を伝達するために使用するので、このように命名されている。
【００２８】
　図３は、エミュレーションが望ましいホスト・システム３００を示す図である。これは、物理構造の点では図１のターゲット・システム１００と同様のものであるが、詳細の一部は異なる可能性がある。
【００２９】
　たとえば、ホスト・プロセッサの命令セットはターゲット・プロセッサの命令セットとは異なる可能性がある。また、プロセッサ３１０Ａ〜３１０Ｄの数とメモリ・サイズも異なる可能性がある。共用リソースにアクセスするための相互接続ネットワーク３３０は、形式および機能のいずれも異なる可能性がある。ホスト・システムは、ＳＭＰ（対称型マルチプロセッシング）構成として構成されるものと想定される。これが意味するものの１つは、ホスト内のすべてのプロセッサ３１０Ａ〜３１０Ｄが同じメモリにアクセスし、メモリ位置にアクセスする際に適度に類似した遅延を有することになることである。また、図１に示すプロセッサ１４０と同様のホストＩ／Ｏプロセッサ３４０も示されている。
【００３０】
　ターゲット・システム内の各リソースの状態は、ホスト・システム３００のメモリの一領域を割り振ることによりモデル化される。この場合、エミュレーションは共用仮想メモリ・オペレーティング・システム環境で実行中であるものと想定される。これにより、ターゲット・システムのすべての実リソースに対処できるホスト・メモリ・サイズが得られる。
【００３１】
　図４は、ターゲット・システム１００の様々なリソースをエミュレートする、ホスト３００の仮想メモリ（ＶＭ）４００の内訳を示している。ＶＭ４００は、共用リソース４１０（たとえば、ターゲット実メモリ）と、プロセッサ・ローカル・リソース４２０（たとえば、汎用レジスタ、浮動小数点レジスタ、プログラム・カウンタ、制御レジスタなど）と、Ｉ／Ｏローカル・リソースと、エミュレーション・プログラム・メモリとを含む。
【００３２】
　６４ビットの仮想アドレス指定ホストは、数十または数百ギガバイトもの実メモリと、数百のプロセッサからなるローカル・リソースに快適に対処でき、依然としてエミュレーション・プログラム自体に使用可能な十分なアドレス指定能力を有することに留意されたい。
【００３３】
　共用メモリＳＭＰの他に、オペレーティング・システム内の複数スレッド用のサポートの存在が想定されることになる。このようなサポートの一例は、ＵＮＩＸ（登録商標）オペレーティング・システム下のｐスレッド・パッケージである（たとえば、１９９６年９月発行のBradford Nichols他による「PthreadsProgramming: A POSIX Standard for Better Multiprocessing」（O'Reilly Nutshell）を参照）。このようなパッケージにより、並列で実行される複数のプログラム・ストリームをソフトウェアで作成することができ、ストリーム間で変数を安全に共用することもできる。そのうえ、これらのパッケージは通常、新しいスレッドを創出し、スレッドを「抹殺」（終了）し、スレッドを中断または起動するための手段も提供する。
【００３４】
　図１〜４に示すシステムは現存し、そこで本発明を例示的に実現可能であることに留意されたい。実際は、本発明の目標は、本発明によるエミュレーションを実行するために、ホスト・システム内の物理的ハードウェアを必ずしも変更せずに（たとえば、何らかのハードウェア変更を加えずに）本発明を実現することである。
【００３５】
　図５は、本発明によるスレッド処理システム５００を示している。このシステム５００は、スレッド・プロセッサ５１０と、スレッド・クリエータ５２０と、スレッド・プール５３０と、スレッド・スケジューラ４００とを含む。
【００３６】
　図５に示すように、スレッド・プロセッサ（エンジン）５１０は、スレッド・プール５３０内のどのスレッドをエミュレーションのために選択すべきかを決定し、それにより、スレッド・プール５３０に保持されたスレッドを処理（スケジューリング）する。
【００３７】
　スレッドを処理する動作時に、スレッド・プロセッサは、いくつかの新しいスレッドを作成しなければならないと決定することもある。その結果、スレッドはスレッド・クリエータ５２０によって作成され、スレッド・プール５３０内に置かれる。スレッド・スケジューラ５４０によって待機スレッドが走査され、そのスレッド・スケジューラ５４０が優先順位の順序で次のスレッドを使用可能プロセッサに割り振る。
【００３８】
　プロセッサ内で１つのスレッドを実行するには、ホスト仮想メモリ４００内のいくつかの位置を読み取ることと、これらの位置またはその他の位置を変更することを必要とする。したがって、スレッド・プロセッサは、ホスト仮想メモリ４００と対話して、ゲスト・システムのメモリもホストのメモリにマッピングする。スレッド・プロセッサにとって使用可能な唯一のものはホスト仮想メモリであり、したがって、このようなマッピングが行われる。
【００３９】
　図５のモデルが使用不能である場合、従来のシステムで起こりうることは、どのスレッドが存在するかをあらかじめ決定し（たとえば、ホスト・プロセッサのそれぞれが１つのスレッドであると想定する）、次にホスト上の使用可能なプロセッサと１対１のマッピングを実行することであることに留意されたい。上記の通り、この技法には多くの問題がある。
【００４０】
　このため、本発明では、本発明のスレッド・プロセッサ５００を使用して、どのスレッドを作成し、スケジューリングする必要があるかを決定する。
【００４１】
　大型のスレッド・プール５３０を想定すると、このようなスレッドを処理するために使用可能なプロセッサの数が増加するにつれて、システムの有効性が増大する。しかし、その有効性は、図２で定義する伝達タイプの命令の数によって制限される可能性がある。
【００４２】
　ターゲット・システムの実メモリ全体を共用する場合でも、図２に示す共用リソース命令の３つのサブクラスに対応する３つのカテゴリにメモリをさらに分割することが可能である場合が多い。
【００４３】
　これらの領域は、（ａ）「排他アクセス領域」と、（ｂ）「読取専用領域」と、（ｃ）「その他の共用領域」である。排他アクセス領域は、単一スレッドのみによってアクセスされるものである。読取専用領域は、複数スレッドによってアクセスすることができるが、決して変更されない。このため、これらの領域を複製し、そのスレッドのローカル排他領域の一部としてコピーを含めることが許容される。
【００４４】
　その他の共用領域については、異なる取り扱いをしなければならない。すなわち、たとえば、効率のよいローカル・アクセスのためにコピーが作成された場合、あるスレッドによって行われた変更を、同じ領域にアクセスしている可能性があるかまたは今後、その領域にアクセスする可能性のある他のすべてのスレッドに正確に伝達することが重要である。
【００４５】
　図６は、スレッド固有メモリ６１０を使用してメモリ・アクセスをより高速にする方法を示している。すなわち、スレッド・プロセッサ５１０は、高速アクセスのためにスレッド固有（ローカル）メモリにアクセスすることができるが、ホスト仮想メモリの共用部分は保護付きアクセスでアクセスされる。
【００４６】
　このため、効率のために、メモリを複数の（たとえば、２つの）部分に分割することができる。第１の部分は通信が最小限である部分であり、第２の部分はスレッド同士の間で多くの通信が行われる部分である。
【００４７】
　したがって、メモリの各部分がそれぞれのスレッドに専用の場合、これらの部分を高速アクセス・メモリにすることができ、互いに「話し合う」必要があり（たとえば、共用する必要がある）、高速アクセスを必要としない可能性がある（たとえば、それぞれの特権をチェックして、このようなアクセスが許されるかどうかなどを確認しなければならないため）スレッドは、ホスト仮想メモリの共用部分として形成することができる。このため、メモリを２つの部分に分離することにより、そのメモリについてより速い全体アクセス速度を達成することができる。
【００４８】
　図７は、ターゲット・マルチプロセッシング・システムをホスト・システムのスレッドにエミュレートするタスク（機能）の直接マッピング７００を示している。
【００４９】
　各プロセッサ７１０Ａ、７１０Ｂ、７１０Ｃ、７１０Ｄなどは、そのリソースとともに、スレッド７２０Ａ、７２０Ｂ、７２０Ｃ、７２０Ｄなどとして、それぞれエミュレートされる。また、Ｉ／Ｏプロセッサ７３０とＩ／Ｏスレッド７４０も示されている。明らかに分かるように、本発明では、処理が伝統的な意味でのプロセッサに関連するものである必要があるだけでなく、Ｉ／Ｏプロセッサ、ＩＢＭ３９０（登録商標）システム用のチャネル、何らかのシステム内のコプロセッサなども包含する。
【００５０】
　そのうえ、プロセッサ固有ではないターゲット・システムのすべての機能７６０と、スレッドの作成、スレッド間の通信、デバッグおよびパフォーマンス・モニタ面などを処理するタスクを含む、エミュレーション・システム自体のすべての機能も含む、システム・スレッド７５０が設けられている。
【００５１】
　図７の概念は単一プロセッサ上で実行することができ、単一プロセッサがホストからのスレッドを処理することに留意されたい。すなわち、単一プロセッサを使用するので、この概念は、単一プロセッサ上の様々なスレッド間で連続スイッチングが行われるマルチプログラミング・システムであると見なすことができる。エミュレーション・システム自体は、前述のスレッド・パッケージを含む共用メモリＳＭＰオペレーティング・システム下にある。
【００５２】
　図８は、（前述の単一プロセッサ・シナリオとは対照的に）各スレッド８２０Ａ、８２０Ｂ、８２０Ｃ、８２０Ｄなどをホスト・プロセッサ８１０Ａ、８１０Ｂ、８１０Ｃ、８１０Ｄなどの１つにマッピングするためにスレッド・パッケージを作成可能なマルチプロセッサ・システムを示している。さらに、ホスト・プロセッサ８１０ＥにマッピングされるＩ／Ｏスレッド８４０と、ホスト・プロセッサ８１０Ｆにマッピングされるシステム・スレッド８５０が示されている。
【００５３】
　図８の手法の長所は、エミュレート中のホスト・プロセッサ間の物理的通信がスレッド同士の間で行われるものに制限されることである。スレッドはエミュレートしたターゲット・システムの構造に密接にマッピングされるので、ホストの通信挙動はターゲット・システムの通信挙動と同様のものになる。
【００５４】
　しかし、図８のこの手法の短所の１つ（たとえば、スレッドとホスト・プロセッサとの１対１の関係を示唆するもの）は、ホスト・システムが潜在的に十分利用されないことである。すなわち、各ホスト・プロセッサがそれぞれ単一スレッド専用になっているシステムでは、エミュレートしたターゲット・プロセッサの１つがアイドル状態である場合、対応するホスト・プロセッサも十分利用されていない。
【００５５】
　もう１つの短所はこの技法のスケーラビリティである。ホスト・システムがターゲット・システムより多くのプロセッサを有する場合、追加プロセッサのうちの多くは十分利用することができない。逆に、ホスト・システムの方が少ないプロセッサを有する場合、複数のターゲット・プロセッサが同じスレッドにマッピングされた場合のみ、スレッドとプロセッサとの１対１のマッピングに対処することができる。
【００５６】
　図９は、上記の問題のいくつかを回避するための解決策を提供し、ホスト・プロセッサ・クラスタ９１０と、スレッド・スケジューラ９２０と、エミュレーション・スレッド・クラスタ９３０とを含むシステム９００を示している。以下に述べるように、図９のシステムはホスト・プロセッサの負荷のバランスを取るように動作するので、結果的に効率が向上する。実際は、いくつかのプロセッサが完全にアイドル状態になり、いくつかが完全に過負荷になるような期間がいくつか存在する可能性がある。スレッド・スケジューラ９２０を含む図９のシステムは、負荷を平滑化する働きをする。より具体的には、スレッド・スケジューラ９２０は、負荷バランスを最適化するために、どのスレッドをいつ、どこ（たとえば、どのホスト・プロセッサ）に置くかを決定する。
【００５７】
　したがって、前述の通り、スレッドの数が大きくなると、静的マッピングに比べ、動的スレッド・マッピングの利点がより大きくなる。このため、図７に示すプロセッサ当たり１つのスレッドという方式ではなく、より多くのパラレル・スレッドを提供するためにエミュレーション・システムを再構成することは可能である。
【００５８】
　図１０は、より一般的なシステム１０００をマルチプロセッシング・ホスト・システムにマッピング（エミュレート）する方法を示している。このシステム１０００は、ホスト・プロセッサ・クラスタ１０１０と、スレッド・スケジューラ１０２０と、エミュレーション・スレッド・クラスタ（複数も可）１０３０と、ホスト・アプリケーション・スレッド１０４０とを含むことができる。
【００５９】
　すなわち、本発明は、マルチプロセッシング・ホストだけでなく、図１０に示すようなＩＢＭ３９０（登録商標）システムと同様のホストにも有用であり、そのホストには互いに通信する複数の別個のマルチプロセッサを有するクラスタ構成が存在する。したがって、このようなシステムでも、上記のタイプのマルチプロセッシング・ホスト上でエミュレートすることができる。
【００６０】
　そのうえ、本発明のシステムはエミュレーションのみに限定されるわけではない。すなわち、この特定のシステムはエミュレーションの実行のみに限定されず、たとえば、アプリケーション（たとえば、Ｌｉｎｕｘ）はホスト上で直接動作することができ、そのアプリケーションはエミュレーションに基づいてではなく、むしろホスト上でネイティブに動作している。このような場合、ホスト・アプリケーション・スレッド１０４０はホスト上で動作することができ、スレッド・スケジューラ１０２０（エミュレーション・スレッド・クラスタのスレッドも管理することになるものと思われる）によってスケジューリング／管理することができる。このため、本発明は、エミュレーションだけでなく、ホスト上で直接動作するアプリケーションにも大いに有用である。
【００６１】
　ＳｉｍＯＳを対象とするＨｅｒｒｏｄによる前述の論文および米国特許第５８３２２０５号では、以下のようにキャッシュすることによりエミュレーション・システムのパフォーマンスを大幅に改善することができることを示していることに留意されたい。
【００６２】
　すなわち、複数命令のグループが複数回実行されることが予想される場合、それはまずターゲット命令セットからホスト命令セットに変換され、その変換内容が「変換キャッシュ」と呼ばれるメモリの特殊領域に保管される。その後、このグループのアドレスが検出されると、ネイティブ・ホスト命令が直接実行される。ターゲット命令のリフェッチとこれらの命令の再変換を回避することにより、命令グループはかなり高速で実行される。この命令グループを分析し、生成した変換を最適化することにより、さらに恩恵を得ることができる。このような最適化の例のいくつかは、参照により本明細書に組み込まれる米国特許第５８３２２０５号に記載されている。
【００６３】
　変換内容をキャッシュすることによって得られる恩恵は、命令グループを変換するために必要な労力ならびに変換したグループが最終的に実行される回数によって決まる。後者はほとんどのコード・タイプについて予測することができないので、ヒューリスティックを使用して、潜在的な変換候補を決定する。
【００６４】
　図１１は上記の操作を実行するための方法１１００を示し、単純なヒューリスティックの１つは、所与の命令グループについて行った過去の実行をカウントし、そのカウントが事前設定しきい値を超えたときにそのグループを変換することである。
【００６５】
　図１１は、次に実行すべき命令グループのアドレスによって索引が付けられた変換テーブル１１１０を示している。
【００６６】
　ステップ１１２０では、このアドレスに対応する有効項目が変換テーブル１１１０に存在する場合、それは、変換されたネイティブ命令をフェッチして実行しなければならない位置を指し示す。
【００６７】
　ステップ１１２０で決定された有効項目がまったく存在しない場合、ターゲット命令が直接解釈され（ステップ１１３０）、そのグループに関連するカウンタが増分される（ステップ１１４０）。
【００６８】
　このカウンタがしきい値を超えた場合（ステップ１１５０）、たとえば、そのグループがすでに５回解釈されている場合、そのグループは変換のためにスケジューリングされる（ステップ１１６０）。
【００６９】
　ステップ１１２０で、その命令がすでに変換されたと判定された場合（たとえば、「ＹＥＳ」）、変換キャッシュ１１７５にアクセスすることにより、ステップ１１７０でその命令グループのキャッシュ済み変換が実行される。
【００７０】
　次に、ステップ１１８０では、次にエミュレートすべき命令グループが決定される。
【００７１】
　米国特許第５８３２２０５号に記載されているシステムでは、しきい条件を満足したことが発見された時点またはそのグループを次に実行する直前のいずれかに、エミュレートしたスレッドがその変換を実行することになる。そのスレッドが変換を実行することによって費やす時間は、潜在的に次の命令グループの実行を開始するために使用された可能性があり、このため、システムに対するオーバヘッドを表している。
【００７２】
　より効率のよい手法では、そのスレッドが単純にその命令グループを変換プールに入れ（たとえば、１１９０）、次のグループの実行を続行することになるだろう。したがって、変換が完了すると、後述する図１２に示すように、変換テーブル１１１０内のポインタとともに、変換したオブジェクトが変換キャッシュに入る。
【００７３】
　図１２は、パラレル変換スレッドを生成するためのシステム１２００を示している。
【００７４】
　図１２では、変換プール・マネージャ（たとえば、図１２に示す１２１０）と呼ばれるもう１つのスレッドが変換プール（図１１に示す１１９０）をモニタし、プロセッサ・スレッドの実行とは無関係に、変換を必要とする命令グループを選び出す。さらに、変換プール・マネージャ１２１０は、変換そのものを実行する必要はない。
【００７５】
　ある命令グループを変換するプロセスは他のグループを変換するプロセスとはほぼ無関係なので、変換プール・マネージャ１２１０はいくつかのスレッドを創出することができ、そのそれぞれは、図１２に示すように、プールからのグループについて変換を実行する。
【００７６】
　図１２では、変換プール・マネージャ１２１０が変換プール１１９０から変換のために命令グループを選択する。変換プール・マネージャ１２１０は変換テーブル１１１０を更新し、次に、変換スレッド・スケジューラ１２２０にそのスレッドを提供する。スレッド・スケジューラは、変換スレッド１２３０Ａ、１２３０Ｂ、１２３０Ｃ、１２３０Ｄなどをスケジューリングし、それを変換キャッシュ１２４０に書き込む。
【００７７】
　このシステム／操作の効果は、本質的に、エミュレーションのタスクを、ホスト・マルチプロセッシング・システムによってより十分に利用できる独立パラレル・スレッドにさらに区分化することである。したがって、図１２のシステムでは、変換機構を使用し、それを組み込み、本発明のシステムのフレームワークにそれをマッピングする。このため、変換内容をキャッシュする（さらに実際には変換を実行する）この機構は、本発明のシステムによるエミュレーション（およびそれによって扱われるスレッドのタイプ）を強化することになる。
【００７８】
　図１３は、ホスト・プロセッサ・クラスタ１３１０と、スレッド・スケジューラ１３２０と、エミュレーション・スレッド・クラスタ１３３０とを含むシステム１３００を示している。図１３は、ホスト・システムのパフォーマンスと利用度を改善可能な追加スレッドを含む、図９の修正図である。この追加スレッドの恩恵は、図１０のマルチクラスタ・メインフレーム・エミュレーション・システムにさらに引き継がれる。したがって、図１３は、明瞭かつ簡潔にするため、エミュレーション・スレッド・クラスタの１つだけを例示的に示しているが、図１０に示すように複数のエミュレーション・スレッド・クラスタならびに図１０のホスト・アプリケーション・スレッド１０４０を設けることができる。
【００７９】
　上記のハードウェア／ソフトウェア環境に加え、本発明の他の態様では、上記の方法を実行するためのコンピュータ実現方法を含む。一例として、この方法は前述の特定の環境で実現することができる。
【００８０】
　このような方法は、たとえば、ディジタル・データ・プロセッサ（複数も可）によって実施されるように、一連の機械可読命令を実行するようにマルチプロセッサ・システム内のコンピュータを操作することにより実現することができる。このような命令は、様々なタイプの信号運搬媒体に存在することができる。
【００８１】
　したがって、本発明のこの態様は、本発明の方法を実行するために、プロセッサ／中央演算処理装置（ＣＰＵ）および上記のハードウェアを取り入れたマルチプロセッシング・システム内のディジタル・データ・プロセッサ（複数も可）により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体を含む、プログラムによる製品を対象とする。
【００８２】
　この信号運搬媒体は、たとえば高速アクセス記憶装置によって代表されるように、たとえばＣＰＵ内に含まれるＲＡＭを含むことができる。別法として、ＣＰＵによって直接または間接的にアクセス可能な磁気データ記憶ディスケット１４００（図１４）などの他の信号運搬媒体に命令を含めることもできる。
【００８３】
　ディスケット１４００に含まれるか、コンピュータ／ＣＰＵまたはその他の場所に含まれるかにかかわらず、ＤＡＳＤ記憶装置（たとえば、従来の「ハード・ドライブ」またはＲＡＩＤアレイ）、磁気テープ、電子読取専用メモリ（たとえば、ＲＯＭ、ＥＰＲＯＭ、またはＥＥＰＲＯＭ）、光学記憶装置（たとえば、ＣＤ−ＲＯＭ、ＷＯＲＭ、ＤＶＤ、ディジタル光学テープなど）、紙の「パンチ」カードなどの様々な機械可読データ記憶媒体、またはディジタルおよびアナログ通信リンクならびに無線などの伝送媒体を含むその他の適当な信号運搬媒体上に命令を記憶することができる。本発明の例証となる一実施形態では、機械可読命令は、「Ｃ」などの言語からコンパイルされたソフトウェア・オブジェクト・コードを含むことができる。
【００８４】
　いくつかの好ましい実施形態に関して本発明を説明してきたが、当業者であれば、特許請求の範囲の精神および範囲内で変更を加えて本発明を実施できることが分かるだろう。
【００８５】
　本発明は、効率のよいエミュレーションを含む、前述の数多くの利点を有することに留意されたい。さらに、本発明は、ロード・バランシングを支援する「仮想化」を実行するための基礎として使用することができる。仮想化は、ロード・バランシングを含む様々な形態を取ることができる。たとえば、仮想化はフォールト・トレランスにも使用することができ、その場合、１対１のマッピング（または他のマッピング方式）を有するシステム内で１つのプロセッサが故障した場合にそのシステムは機能し続けることができるが、それは、故障したシステムを抽象化することができ、単により小さいホスト・プロセッサ・プールが存在可能になるだけであるからである。したがって、故障したプロセッサの責務を他のプロセッサが引き受けることができる。
【００８６】
　考えられる本発明のもう１つの応用例は省電力化である。すなわち、マルチプロセッサ・システムにおいて電力を消費しすぎると判断すると、いくつかのプロセッサを遮断することができ、それでもより低い電力レベルでエミュレーション全体の機能を維持することができる。このため、遮断中のプロセッサの機能は他のプロセッサにシフトすることができる。各プロセッサは、スレッドからプロセッサへの１対１のマッピングとしてではなく、１つのスレッドとして取り扱われるので、これは本発明によって実行するには比較的単純なものである。
【００８７】
　すなわち、多対１のマッピングである前述のＨｅｒｒｏｄ論文に記載されているＳｉｍＯＳ技法または１対１のマッピング方式である米国特許第５８３２２０５号とは対照的に、本発明の方式は多対多のマッピングである。
【００８８】
　さらに、本出願人の意図は、権利請求中に後日補正された場合でも、すべての特許請求の範囲と同等のものを包含することであることに留意されたい。
【００８９】
　まとめとして、本発明の構成に関して以下の事項を開示する。
【００９０】
　（１）第２の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行する方法において、
　ターゲット・コンピューティング・システムの１つのプロセッサ上で動作するように設計された前記プログラムの各部分を、前記ホスト・コンピューティング・システム上で実行すべき１つまたは複数のプログラム・スレッドとして表現するステップを具備する方法。
　（２）前記ホスト・システム内の１つまたは複数のプロセッサ上で実行するために各スレッドをスケジューリングするステップをさらに具備する、上記（１）に記載の方法。
　（３）前記ターゲット・システムの１つのプロセッサに固有ではない前記ターゲット・システムの機能を、前記ホスト・システム上の１つまたは複数のプロセッサによって実行すべき１つまたは複数のスレッドとして表現するステップをさらに具備する、上記（１）に記載の方法。
　（４）前記ターゲット・システムの１つのプロセッサに固有ではない前記ターゲット・システムの機能を、前記ホスト・システム上の１つまたは複数のプロセッサによって実行すべき１つまたは複数のスレッドとして表現するステップをさらに具備する、上記（２）に記載の方法。
　（５）スレッドの数が前記ホスト・システム内のプロセッサの数を超える、上記（１）に記載の方法。
　（６）所与の命令グループが所定の回数解釈された後、前記命令グループを前記第１の命令セットから前記第２の命令セットに変換する、上記（１）に記載の方法。
　（７）前記解釈プロセスがマルチプロセッサ・システム内のスレッドとして実行される、上記（６）に記載の方法。
　（８）所与の時点における前記プロセッサの複数の機能が複数スレッドとして表現される、上記（１）に記載の方法。
　（９）動的にスレッドを作成するステップをさらに具備する、上記（１）に記載の方法。
　（１０）同時に、第１のスレッドの変換を識別し、第２のスレッドを実行するステップをさらに具備する、上記（１）に記載の方法。
　（１１）同時に、第１のスレッドを変換し、第２のスレッドを実行するステップをさらに具備する、上記（１）に記載の方法。
　（１２）前記スレッドから前記プロセッサへの多対多のマッピングが実行される、上記（１）に記載の方法。
　（１３）エミュレーション・スレッドを実行中にホスト・アプリケーション・スレッドが動作している、上記（１）に記載の方法。
　（１４）マルチプロセッサ・システムのエミュレーションの方法において、
　ターゲット・システムの各部分を、ホスト・システム上で実行するためのスレッドとして表現するステップと、
　前記ホスト・システム上で実行するために前記スレッドのそれぞれをスケジューリングするステップとを具備する方法。
　（１５）マルチプロセッサ・システムのエミュレーションの方法において、
　ターゲット・システムのハードウェア・リソースをソフトウェア・スレッドにマッピングするステップと、
　前記ソフトウェア・スレッドをホスト・システムのハードウェア・リソースにマッピングするステップと、
　前記ターゲット・システムの状態情報を前記ホスト・システムのメモリにマッピングするステップと、
　エミュレーション・タスクをより多数のスレッドに区分化することによりエミュレーションのパフォーマンスを改善するステップとを具備する方法。
　（１６）マルチプロセッサ・システムのエミュレーションのためのシステムにおいて、
　ターゲット・システムのハードウェア・リソースをソフトウェア・スレッドにマッピングするための手段と、
　前記ソフトウェア・スレッドをホスト・システムのハードウェア・リソースにマッピングするための手段と、
　前記ターゲット・システムの状態情報を前記ホスト・システムのメモリにマッピングするための手段と、
　エミュレーション・タスクをより多数のスレッドに区分化することによりエミュレーションのパフォーマンスを改善するための手段とを具備するシステム。
　（１７）第２の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行するためのシステムにおいて、
　前記ターゲット・コンピューティング・システムの１つのプロセッサ上で動作するように設計された前記プログラムの各部分を、前記ホスト・コンピューティング・システム上で実行すべき１つまたは複数のプログラム・スレッドとして表現するための表現ユニットを具備するシステム。
　（１８）マルチプロセッサ・システム用のエミュレーションのためのシステムにおいて、
　ターゲット・システムのハードウェア・リソースをソフトウェア・スレッドにマッピングするための第１のマッピング・モジュールと、
　前記ソフトウェア・スレッドをホスト・システムのハードウェア・リソースにマッピングするための第２のマッピング・モジュールと、
　前記ターゲット・システムの状態情報を前記ホスト・システムのメモリにマッピングするための第３のマッピング・モジュールと、
　エミュレーション・タスクをより多数のスレッドに区分化するための区分化モジュールとを具備するシステム。
　（１９）マルチプロセッサ・システムのホスト・コンピューティング・システム用のスレッド処理構造において、
　スレッドを保持するためのスレッド・プールと、
　前記ホスト・コンピューティング・システムのメモリにアクセスし、前記スレッド・プール内のどのスレッドをエミュレーションのために選択すべきかを決定するためのスレッド・プロセッサと、
　新しいスレッドを作成し、前記新しいスレッドを前記スレッド・プールに入れるためのスレッド・クリエータと、
　前記スレッド・プールに保持された前記スレッドをスケジューリングするためのスレッド・スケジューラであって、待機スレッドを走査し、優先順位の順序で次のスレッドを前記マルチプロセッサ・システムの使用可能プロセッサに割り振るスレッド・スケジューラとを具備するスレッド処理構造。
　（２０）第２の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行する方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
　ターゲット・コンピューティング・システムの１つのプロセッサ上で動作するように設計された前記プログラムの各部分を、前記ホスト・コンピューティング・システム上で実行すべき１つまたは複数のプログラム・スレッドとして表現するステップを具備する信号運搬媒体。
【図面の簡単な説明】
【００９１】
【図１】複数の処理要素と、メモリ・サブシステムと、コヒーレント・バス相互接続部と、入出力（Ｉ／Ｏ）プロセッサとを含む、ターゲット・マルチプロセッサ・コンピューティング・システム１００を示す図である。
【図２】図１のシステム１００上で実行される様々な命令のカテゴリ化のための方式２００を示す図である。
【図３】複数のホスト処理要素と、ホスト・メモリ・サブシステムと、コヒーレント・ホスト・バス相互接続部と、ホストＩ／Ｏプロセッサとを含む、ホスト・マルチプロセッサ・コンピューティング・システム３００を示す図である。
【図４】ターゲット・システム１００内の様々なリソースからホスト・システム３００のメモリへのマッピング４００を示す図である。
【図５】ホスト・システム３００上のスレッド処理ソフトウェア構造５００を示す図である。
【図６】スレッド固有メモリを使用してメモリ・アクセスをより高速にすることができるシステムを示す図である。
【図７】ターゲット・システムの諸機能からホスト・システムのスレッドへの単純マッピングのためのシステム７００を示す図である。
【図８】図７のスレッドからマルチプロセッシング・ホスト・システム内のプロセッサへのトリビアル・マッピングのためのシステム８００を示す図である。
【図９】図７のスレッドからマルチプロセッシング・ホスト・システム内のプロセッサへのより効率のよいマッピングのためのシステム９００を示す図である。
【図１０】マルチプロセッシング・ホスト・システムへのマッピングが可能なより一般的なシステム１０００を示す図である。
【図１１】再利用のために変換内容をキャッシュするエミュレーション方式１１００を示す図である。
【図１２】パラレル変換スレッドを生成するためのシステム１２００を示す図である。
【図１３】追加の変換スレッドに対処するために図９を機能強化したものであるシステム１３００を示す図である。
【図１４】本発明によるプログラムの諸ステップを記憶するための信号運搬媒体１４００（たとえば、記憶媒体）を示す図である。
【符号の説明】
【００９２】
１２０　相互接続ネットワーク
１３０　メモリ階層
１４０、７３０　Ｉ／Ｏプロセッサ
３２０　コヒーレント・バス
３３０　ホスト・メモリ階層
３４０　ホストＩ／Ｏプロセッサ
４００　ホスト仮想メモリ
４１０　共用リソース
４２０　プロセッサ・ローカル・リソース
４３０　Ｉ／Ｏローカル・リソース
４４０　エミュレーション・プログラム・メモリ
５１０　スレッド・プロセッサ
５２０　スレッド・クリエータ
５３０　スレッド・プール
５４０、９２０、１０２０、１３２０　スレッド・スケジューラ
６１０　スレッド固有メモリ
７４０、８４０ Ｉ／Ｏスレッド
７５０、８５０ システム・スレッド
９１０、１０１０、 １３１０　ホスト・プロセッサ・クラスタ
９３０、１０３０、１３３０　エミュレーション・スレッド・クラスタ
１０４０　ホスト・アプリケーション・スレッド
１１１０、１１７５　変換テーブル
１１９０　変換プール
１２１０　変換プール・マネージャ
１２２０　変換スレッド・スケジューラ
１２４０　変換キャッシュ
【図１】
2004110809.tif 000003
【図２】
2004110809.tif 000004
【図３】
2004110809.tif 000005
【図４】
2004110809.tif 000006
【図５】
2004110809.tif 000007
【図６】
2004110809.tif 000008
【図７】
2004110809.tif 000009
【図８】
2004110809.tif 000010
【図９】
2004110809.tif 000011
【図１０】
2004110809.tif 000012
【図１１】
2004110809.tif 000013
【図１２】
2004110809.tif 000014
【図１３】
2004110809.tif 000015
【図１４】
2004110809.tif 000016