JP2004110809A - マルチプロセッサ・ホスト・システム上でのマルチプロセッサ・エミュレーションのための方法およびシステム - Google Patents

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

Info

Publication number
JP2004110809A
JP2004110809A JP2003300612A JP2003300612A JP2004110809A JP 2004110809 A JP2004110809 A JP 2004110809A JP 2003300612 A JP2003300612 A JP 2003300612A JP 2003300612 A JP2003300612 A JP 2003300612A JP 2004110809 A JP2004110809 A JP 2004110809A
Authority
JP
Japan
Prior art keywords
thread
host
threads
processor
target
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
JP2003300612A
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 JP2004110809A publication Critical patent/JP2004110809A/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Abstract

【課題】 あるマルチプロセッシング・システムが、何らかのプロセッサ命令セットとメモリ・アーキテクチャを使用して、他の何らかのプロセッサ命令を使用する他のマルチプロセッシング・システムの挙動を効率よくエミュレートすることができる方法および構造を提供すること。
【解決手段】 第2の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたマルチプロセッサ・プログラムを実行するための方法(およびシステム)は、ターゲット・コンピューティング・システムの1つのプロセッサ上で動作するように設計されたプログラムの各部分を、ホスト・コンピューティング・システム上で実行すべき1つまたは複数のプログラム・スレッドとして表現するステップを含む。
【選択図】 図11



Description

 本発明は、一般に、コンピュータ・システムに関し、より具体的には、あるマルチプロセッシング・コンピュータ・システムの挙動を他のマルチプロセッシング・コンピューティング・システム上で再生するための方法(およびシステム)に関する。
 あるコンピュータ・システムの挙動を他のコンピュータ・システム上でエミュレートする必要性は長い間、認識されてきた。これを実行するための方式はいくつか提案されている。このような技法の要約は、参照により本明細書に組み込まれる米国特許第5832205号に記載されている。
 米国特許第5832205号の解決策は、あるプロセッサの命令セットのエミュレーションを他のプロセッサ上で実行するための複合ハードウェア/ソフトウェア方式を含むものである。この方式では、ターゲット命令セットの実行を容易にする機構をハードウェア設計に組み込むことができる。しかし、同じ理由により、この方式ではすべてのシステムを均等に効率よくエミュレートすることができない。
 参照により本明細書に組み込まれるSimOS(たとえば、1998年2月発表のStephen A. Herrodによる「UsingComplete Machine Simulation to Understand Computer System Behavior」というスタンフォード大学博士論文を参照)およびSimICS(たとえば、1993年1月、カリフォルニア州ラ・ホーヤで開催されたModeling, Analysis, and Simulation of Computer and TelecommunicationSystems (MASCOTS)の第1回国際ワークショップの会議録、69〜78ページのPeter S. Magnussonによる「A Design For Efficient Simulation of a Multiprocessor」という論文を参照)は、特別なハードウェア機構を使用せずにエミュレート可能なシステムの例である。しかし、そのパフォーマンスは、米国特許第5832205号のパフォーマンスほど効果的ではない。
 一般に、これらのシステムは、様々なレベルの変換を使用する。コードの実行程度に応じて変換程度が変化する技法が記載されている(たとえば、1996年3月5日発行のMicroprocessor Reportに掲載されたJim Turleyによる「Alpha Runsx86 Code with FX!32」という論文を参照)。
 しかし、現在のコンピュータ・システムは複数のプロセッサを含む(たとえば、ユニプロセッサ・システムとは対照的なマルチプロセッサ・システム)。このようなマルチプロセッサ・システムのエミュレーションは、従来の技法では十分に対処されていなかった。
 そのうえ、このようなシステム内の複数プロセッサのエミュレーションの他に、エミュレートする必要がある追加の側面は、プロセッサ間の様々な通信形式ならびに複数プロセッサによるメモリ位置へのアクセスの順序を支配する規則である。
 SimOSとSimICSはいずれも、マルチプロセッサ・システムの挙動をエミュレートしようと試みる。しかし、これらは、マルチプロセッサ・システムをホスト・コンピューティング・システムとして使用するわけではない。
 したがって、従来の技法では、マルチプロセッサ・システム内のマルチプロセッサのエミュレーションの問題に対処していない。
 すなわち、従来の技法(および命令セット・アーキテクチャ)は、単一プロセッサ・システムをエミュレートすることに制限されている(しかもそれに言及する)場合が非常に多いが、現在はほとんどのシステムがマルチプロセッサ・システムであり、特に、大型システム(たとえば、パーソナル・コンピュータ(PC)の領域を上回るもの)である。このため、あるプロセッサを他のプロセッサによりエミュレートするために使用してきた技法は、マルチプロセッサ・システム環境では機能しなくなる。すなわち、ユニプロセッサ・システム用に設計された従来のエミュレーション技法は、複数プロセッサが存在する場合に実行するのは不可能である。
米国特許第5832205号 1998年2月発表のStephen A. Herrodによる「Using Complete Machine Simulation toUnderstand Computer System Behavior」というスタンフォード大学博士論文 1993年1月、カリフォルニア州ラ・ホーヤで開催されたModeling, Analysis, and Simulation of Computer and TelecommunicationSystems (MASCOTS)の第1回国際ワークショップの会議録、69〜78ページのPeter S. Magnussonによる「A Design For Efficient Simulation of a Multiprocessor」という論文 1996年3月5日発行のMicroprocessorReportに掲載されたJim Turleyによる「Alpha Runs x86 Code with FX!32」という論文 1996年9月発行のBradfordNichols他による「PthreadsProgramming: A POSIX Standard for Better Multiprocessing」(O'Reilly Nutshell)
 従来の方法および構造の上記その他の問題、欠点、短所を考慮して、本発明の一目的は、あるマルチプロセッシング・システムが、何らかのプロセッサ命令セットとメモリ・アーキテクチャを使用して、他の何らかのプロセッサ命令を使用する他のマルチプロセッシング・システムの挙動を効率よくエミュレートすることができる方法および構造を提供することにある。
 本発明の第1の態様では、第2の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行するための方法(およびシステム)は、ターゲット・コンピューティング・システムの1つのプロセッサ上で動作するように設計されたプログラムの各部分を、ホスト・コンピューティング・システム上で実行すべき1つまたは複数のプログラム・スレッドとして表現するステップを含む。
 本発明の第2の態様では、システム(および方法)は、ターゲット・システムのハードウェア・リソースをソフトウェア・スレッドにマッピングするための手段と、スレッドをホスト・システムのハードウェア・リソースにマッピングするための手段と、ターゲット・システムの状態情報をホスト・システムのメモリにマッピングするための手段と、エミュレーション・タスクをより多数のスレッドに区分化することによりエミュレーションのパフォーマンスを改善するための手段とを含む。
 本発明の第3の態様では、マルチプロセッサ・システムのホスト・コンピュータ用のスレッド処理構造は、スレッドを保持するためのスレッド・プールと、ホスト・システムのメモリにアクセスし、スレッド・プール内のどのスレッドをエミュレーションのために選択すべきかを決定するためのスレッド・プロセッサと、新しいスレッドを作成し、前記新しいスレッドをスレッド・プールに入れるためのスレッド・クリエータと、スレッド・プールに保持されたスレッドをスケジューリングするためのスレッド・スケジューラであって、待機スレッドを走査し、優先順位の順序で次のスレッドを使用可能プロセッサに割り振るスレッド・スケジューラとを含む。
 本発明の第4の態様では、第2の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行する方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体であって、その方法は、ターゲット・コンピューティング・システムの1つのプロセッサ上で動作するように設計されたプログラムの各部分を、ホスト・コンピューティング・システム上で実行すべき1つまたは複数のプログラム・スレッドとして表現するステップを含む。
 本発明の固有かつ自明ではない諸態様により、多くのプロセッサを有するシステムのエミュレーションを効率よく実行することができる。さらに、本発明では、エミュレーションのためにホスト・コンピュータを使用する。
 そのうえ、本発明の重要な特徴は、本発明がゲスト・システムは1つのハードウェアであるという概念を脱していることである。実際は、本発明ではゲスト・システムを1つのソフトウェアとして取り扱っている。
 このため、ゲストは、実行する必要のある複数のパラレル・スレッドを有するものとして、より抽象的に取り扱われ、次にそのスレッドはホストのハードウェア・リソースにマッピングされる。これにより、プログラムの並列性をゲストのハードウェアに通常通りマッピングする中間ステップが排除され、その場合、ゲストのハードウェアはホストのハードウェアによってエミュレートされることになるだろう。本発明は、ホストのハードウェアにマッピングしたと思われるゲストのハードウェアが実際に存在した可能性があることを把握する中間ステップをも排除するものである。
 したがって、本発明は、ゲストのアプリケーションのソフトウェア・スレッドをゲストのハードウェアにマッピングするステップを排除する。その後、ゲストのスレッドのそれぞれは、ホストの1つまたは複数のプロセッサ上で実行するためにスケジューリングされる。
 本発明のもう1つの長所は、ゲスト・マシンのハードウェアの詳細を正確に取得することを懸念する必要がないので、このようなシステムを構築しデバッグすることがより容易なことである。
 上記その他の目的、態様、および長所は、添付図面に関連して以下に示す本発明の好ましい実施形態の詳細な説明からより十分に理解されるだろう。
 次に、添付図面、より具体的には図1〜14を参照すると、本発明による方法および構造の好ましい実施形態が示されている。
 図1は、エミュレートするための汎用マルチプロセッシング・システム100を示している。これは複数のプロセッサ110A〜110Dを含み、それぞれはおそらく何らかの相互接続ネットワーク120によりメモリ階層130に接続された専用のローカル・キャッシュを備えており、そのメモリ階層130はメイン・メモリ(図示せず)によってバックアップされた追加レベルのキャッシュを含むことができる。また、このシステムは、I/Oプロセッサ140により、ディスクおよび通信ネットワークを含むI/O装置にアクセスすることができ、そのI/Oプロセッサ140はシステムからの着信要求を装置が理解可能な形式にフォーマットする。明らかなことに、このシステムは、図示の4つのプロセッサなどに制限されず、実際は任意の数のプロセッサなどを使用することができる。
 図1の各プロセッサ110A〜110Dは、システム100の状態に影響する命令を実行しているものと見なすことができる。各命令の効果は図2の方式200に示すように分類される。
 たとえば、ある命令は、それを実行しているプロセッサにとってローカルのリソースに影響するかまたはすべてのプロセッサ間で共用されるリソースに影響するかに応じて、「ローカル・リソース命令」または「共用リソース命令」として大まかに分類することができる。ローカル・リソースの例は、各プロセッサにとってローカルの汎用レジスタ、浮動小数点レジスタ、プロセッサ状況レジスタ、および制御レジスタである。共用リソースとしてはメモリとI/O装置を含むことができる。
 複数プロセッサが所与の期間内に共用リソースにアクセスしようと試みる可能性があるので、共用リソースは特に注意してエミュレートしなければならない。エミュレートしたシステム内の共用リソースのアクセス順序は、エミュレートされるシステム内で発生するであろう順序と同じ順序になることは、重要なことである。
 これを効率よく管理するために、共用リソース命令は、(a)実行中のプロセッサによって排他的に使用される共用リソースにアクセスすることを意味する「排他命令」、(b)命令によって使用される共用リソースが読取り専用であって変更されないことを意味する「共用読取り命令」、(c)他のすべての共用リソース命令を含む「伝達命令」としてさらに分類される。伝達命令は、通常、たとえば、1つまたは複数の他のプロセッサが読み取る値をあるプロセッサが書き込むことにより、あるプロセッサから他のプロセッサに情報を伝達するために使用するので、このように命名されている。
 図3は、エミュレーションが望ましいホスト・システム300を示す図である。これは、物理構造の点では図1のターゲット・システム100と同様のものであるが、詳細の一部は異なる可能性がある。
 たとえば、ホスト・プロセッサの命令セットはターゲット・プロセッサの命令セットとは異なる可能性がある。また、プロセッサ310A〜310Dの数とメモリ・サイズも異なる可能性がある。共用リソースにアクセスするための相互接続ネットワーク330は、形式および機能のいずれも異なる可能性がある。ホスト・システムは、SMP(対称型マルチプロセッシング)構成として構成されるものと想定される。これが意味するものの1つは、ホスト内のすべてのプロセッサ310A〜310Dが同じメモリにアクセスし、メモリ位置にアクセスする際に適度に類似した遅延を有することになることである。また、図1に示すプロセッサ140と同様のホストI/Oプロセッサ340も示されている。
 ターゲット・システム内の各リソースの状態は、ホスト・システム300のメモリの一領域を割り振ることによりモデル化される。この場合、エミュレーションは共用仮想メモリ・オペレーティング・システム環境で実行中であるものと想定される。これにより、ターゲット・システムのすべての実リソースに対処できるホスト・メモリ・サイズが得られる。
 図4は、ターゲット・システム100の様々なリソースをエミュレートする、ホスト300の仮想メモリ(VM)400の内訳を示している。VM400は、共用リソース410(たとえば、ターゲット実メモリ)と、プロセッサ・ローカル・リソース420(たとえば、汎用レジスタ、浮動小数点レジスタ、プログラム・カウンタ、制御レジスタなど)と、I/Oローカル・リソースと、エミュレーション・プログラム・メモリとを含む。
 64ビットの仮想アドレス指定ホストは、数十または数百ギガバイトもの実メモリと、数百のプロセッサからなるローカル・リソースに快適に対処でき、依然としてエミュレーション・プログラム自体に使用可能な十分なアドレス指定能力を有することに留意されたい。
 共用メモリSMPの他に、オペレーティング・システム内の複数スレッド用のサポートの存在が想定されることになる。このようなサポートの一例は、UNIX(登録商標)オペレーティング・システム下のpスレッド・パッケージである(たとえば、1996年9月発行のBradford Nichols他による「PthreadsProgramming: A POSIX Standard for Better Multiprocessing」(O'Reilly Nutshell)を参照)。このようなパッケージにより、並列で実行される複数のプログラム・ストリームをソフトウェアで作成することができ、ストリーム間で変数を安全に共用することもできる。そのうえ、これらのパッケージは通常、新しいスレッドを創出し、スレッドを「抹殺」(終了)し、スレッドを中断または起動するための手段も提供する。
 図1〜4に示すシステムは現存し、そこで本発明を例示的に実現可能であることに留意されたい。実際は、本発明の目標は、本発明によるエミュレーションを実行するために、ホスト・システム内の物理的ハードウェアを必ずしも変更せずに(たとえば、何らかのハードウェア変更を加えずに)本発明を実現することである。
 図5は、本発明によるスレッド処理システム500を示している。このシステム500は、スレッド・プロセッサ510と、スレッド・クリエータ520と、スレッド・プール530と、スレッド・スケジューラ400とを含む。
 図5に示すように、スレッド・プロセッサ(エンジン)510は、スレッド・プール530内のどのスレッドをエミュレーションのために選択すべきかを決定し、それにより、スレッド・プール530に保持されたスレッドを処理(スケジューリング)する。
 スレッドを処理する動作時に、スレッド・プロセッサは、いくつかの新しいスレッドを作成しなければならないと決定することもある。その結果、スレッドはスレッド・クリエータ520によって作成され、スレッド・プール530内に置かれる。スレッド・スケジューラ540によって待機スレッドが走査され、そのスレッド・スケジューラ540が優先順位の順序で次のスレッドを使用可能プロセッサに割り振る。
 プロセッサ内で1つのスレッドを実行するには、ホスト仮想メモリ400内のいくつかの位置を読み取ることと、これらの位置またはその他の位置を変更することを必要とする。したがって、スレッド・プロセッサは、ホスト仮想メモリ400と対話して、ゲスト・システムのメモリもホストのメモリにマッピングする。スレッド・プロセッサにとって使用可能な唯一のものはホスト仮想メモリであり、したがって、このようなマッピングが行われる。
 図5のモデルが使用不能である場合、従来のシステムで起こりうることは、どのスレッドが存在するかをあらかじめ決定し(たとえば、ホスト・プロセッサのそれぞれが1つのスレッドであると想定する)、次にホスト上の使用可能なプロセッサと1対1のマッピングを実行することであることに留意されたい。上記の通り、この技法には多くの問題がある。
 このため、本発明では、本発明のスレッド・プロセッサ500を使用して、どのスレッドを作成し、スケジューリングする必要があるかを決定する。
 大型のスレッド・プール530を想定すると、このようなスレッドを処理するために使用可能なプロセッサの数が増加するにつれて、システムの有効性が増大する。しかし、その有効性は、図2で定義する伝達タイプの命令の数によって制限される可能性がある。
 ターゲット・システムの実メモリ全体を共用する場合でも、図2に示す共用リソース命令の3つのサブクラスに対応する3つのカテゴリにメモリをさらに分割することが可能である場合が多い。
 これらの領域は、(a)「排他アクセス領域」と、(b)「読取専用領域」と、(c)「その他の共用領域」である。排他アクセス領域は、単一スレッドのみによってアクセスされるものである。読取専用領域は、複数スレッドによってアクセスすることができるが、決して変更されない。このため、これらの領域を複製し、そのスレッドのローカル排他領域の一部としてコピーを含めることが許容される。
 その他の共用領域については、異なる取り扱いをしなければならない。すなわち、たとえば、効率のよいローカル・アクセスのためにコピーが作成された場合、あるスレッドによって行われた変更を、同じ領域にアクセスしている可能性があるかまたは今後、その領域にアクセスする可能性のある他のすべてのスレッドに正確に伝達することが重要である。
 図6は、スレッド固有メモリ610を使用してメモリ・アクセスをより高速にする方法を示している。すなわち、スレッド・プロセッサ510は、高速アクセスのためにスレッド固有(ローカル)メモリにアクセスすることができるが、ホスト仮想メモリの共用部分は保護付きアクセスでアクセスされる。
 このため、効率のために、メモリを複数の(たとえば、2つの)部分に分割することができる。第1の部分は通信が最小限である部分であり、第2の部分はスレッド同士の間で多くの通信が行われる部分である。
 したがって、メモリの各部分がそれぞれのスレッドに専用の場合、これらの部分を高速アクセス・メモリにすることができ、互いに「話し合う」必要があり(たとえば、共用する必要がある)、高速アクセスを必要としない可能性がある(たとえば、それぞれの特権をチェックして、このようなアクセスが許されるかどうかなどを確認しなければならないため)スレッドは、ホスト仮想メモリの共用部分として形成することができる。このため、メモリを2つの部分に分離することにより、そのメモリについてより速い全体アクセス速度を達成することができる。
 図7は、ターゲット・マルチプロセッシング・システムをホスト・システムのスレッドにエミュレートするタスク(機能)の直接マッピング700を示している。
 各プロセッサ710A、710B、710C、710Dなどは、そのリソースとともに、スレッド720A、720B、720C、720Dなどとして、それぞれエミュレートされる。また、I/Oプロセッサ730とI/Oスレッド740も示されている。明らかに分かるように、本発明では、処理が伝統的な意味でのプロセッサに関連するものである必要があるだけでなく、I/Oプロセッサ、IBM390(登録商標)システム用のチャネル、何らかのシステム内のコプロセッサなども包含する。
 そのうえ、プロセッサ固有ではないターゲット・システムのすべての機能760と、スレッドの作成、スレッド間の通信、デバッグおよびパフォーマンス・モニタ面などを処理するタスクを含む、エミュレーション・システム自体のすべての機能も含む、システム・スレッド750が設けられている。
 図7の概念は単一プロセッサ上で実行することができ、単一プロセッサがホストからのスレッドを処理することに留意されたい。すなわち、単一プロセッサを使用するので、この概念は、単一プロセッサ上の様々なスレッド間で連続スイッチングが行われるマルチプログラミング・システムであると見なすことができる。エミュレーション・システム自体は、前述のスレッド・パッケージを含む共用メモリSMPオペレーティング・システム下にある。
 図8は、(前述の単一プロセッサ・シナリオとは対照的に)各スレッド820A、820B、820C、820Dなどをホスト・プロセッサ810A、810B、810C、810Dなどの1つにマッピングするためにスレッド・パッケージを作成可能なマルチプロセッサ・システムを示している。さらに、ホスト・プロセッサ810EにマッピングされるI/Oスレッド840と、ホスト・プロセッサ810Fにマッピングされるシステム・スレッド850が示されている。
 図8の手法の長所は、エミュレート中のホスト・プロセッサ間の物理的通信がスレッド同士の間で行われるものに制限されることである。スレッドはエミュレートしたターゲット・システムの構造に密接にマッピングされるので、ホストの通信挙動はターゲット・システムの通信挙動と同様のものになる。
 しかし、図8のこの手法の短所の1つ(たとえば、スレッドとホスト・プロセッサとの1対1の関係を示唆するもの)は、ホスト・システムが潜在的に十分利用されないことである。すなわち、各ホスト・プロセッサがそれぞれ単一スレッド専用になっているシステムでは、エミュレートしたターゲット・プロセッサの1つがアイドル状態である場合、対応するホスト・プロセッサも十分利用されていない。
 もう1つの短所はこの技法のスケーラビリティである。ホスト・システムがターゲット・システムより多くのプロセッサを有する場合、追加プロセッサのうちの多くは十分利用することができない。逆に、ホスト・システムの方が少ないプロセッサを有する場合、複数のターゲット・プロセッサが同じスレッドにマッピングされた場合のみ、スレッドとプロセッサとの1対1のマッピングに対処することができる。
 図9は、上記の問題のいくつかを回避するための解決策を提供し、ホスト・プロセッサ・クラスタ910と、スレッド・スケジューラ920と、エミュレーション・スレッド・クラスタ930とを含むシステム900を示している。以下に述べるように、図9のシステムはホスト・プロセッサの負荷のバランスを取るように動作するので、結果的に効率が向上する。実際は、いくつかのプロセッサが完全にアイドル状態になり、いくつかが完全に過負荷になるような期間がいくつか存在する可能性がある。スレッド・スケジューラ920を含む図9のシステムは、負荷を平滑化する働きをする。より具体的には、スレッド・スケジューラ920は、負荷バランスを最適化するために、どのスレッドをいつ、どこ(たとえば、どのホスト・プロセッサ)に置くかを決定する。
 したがって、前述の通り、スレッドの数が大きくなると、静的マッピングに比べ、動的スレッド・マッピングの利点がより大きくなる。このため、図7に示すプロセッサ当たり1つのスレッドという方式ではなく、より多くのパラレル・スレッドを提供するためにエミュレーション・システムを再構成することは可能である。
 図10は、より一般的なシステム1000をマルチプロセッシング・ホスト・システムにマッピング(エミュレート)する方法を示している。このシステム1000は、ホスト・プロセッサ・クラスタ1010と、スレッド・スケジューラ1020と、エミュレーション・スレッド・クラスタ(複数も可)1030と、ホスト・アプリケーション・スレッド1040とを含むことができる。
 すなわち、本発明は、マルチプロセッシング・ホストだけでなく、図10に示すようなIBM390(登録商標)システムと同様のホストにも有用であり、そのホストには互いに通信する複数の別個のマルチプロセッサを有するクラスタ構成が存在する。したがって、このようなシステムでも、上記のタイプのマルチプロセッシング・ホスト上でエミュレートすることができる。
 そのうえ、本発明のシステムはエミュレーションのみに限定されるわけではない。すなわち、この特定のシステムはエミュレーションの実行のみに限定されず、たとえば、アプリケーション(たとえば、Linux)はホスト上で直接動作することができ、そのアプリケーションはエミュレーションに基づいてではなく、むしろホスト上でネイティブに動作している。このような場合、ホスト・アプリケーション・スレッド1040はホスト上で動作することができ、スレッド・スケジューラ1020(エミュレーション・スレッド・クラスタのスレッドも管理することになるものと思われる)によってスケジューリング/管理することができる。このため、本発明は、エミュレーションだけでなく、ホスト上で直接動作するアプリケーションにも大いに有用である。
 SimOSを対象とするHerrodによる前述の論文および米国特許第5832205号では、以下のようにキャッシュすることによりエミュレーション・システムのパフォーマンスを大幅に改善することができることを示していることに留意されたい。
 すなわち、複数命令のグループが複数回実行されることが予想される場合、それはまずターゲット命令セットからホスト命令セットに変換され、その変換内容が「変換キャッシュ」と呼ばれるメモリの特殊領域に保管される。その後、このグループのアドレスが検出されると、ネイティブ・ホスト命令が直接実行される。ターゲット命令のリフェッチとこれらの命令の再変換を回避することにより、命令グループはかなり高速で実行される。この命令グループを分析し、生成した変換を最適化することにより、さらに恩恵を得ることができる。このような最適化の例のいくつかは、参照により本明細書に組み込まれる米国特許第5832205号に記載されている。
 変換内容をキャッシュすることによって得られる恩恵は、命令グループを変換するために必要な労力ならびに変換したグループが最終的に実行される回数によって決まる。後者はほとんどのコード・タイプについて予測することができないので、ヒューリスティックを使用して、潜在的な変換候補を決定する。
 図11は上記の操作を実行するための方法1100を示し、単純なヒューリスティックの1つは、所与の命令グループについて行った過去の実行をカウントし、そのカウントが事前設定しきい値を超えたときにそのグループを変換することである。
 図11は、次に実行すべき命令グループのアドレスによって索引が付けられた変換テーブル1110を示している。
 ステップ1120では、このアドレスに対応する有効項目が変換テーブル1110に存在する場合、それは、変換されたネイティブ命令をフェッチして実行しなければならない位置を指し示す。
 ステップ1120で決定された有効項目がまったく存在しない場合、ターゲット命令が直接解釈され(ステップ1130)、そのグループに関連するカウンタが増分される(ステップ1140)。
 このカウンタがしきい値を超えた場合(ステップ1150)、たとえば、そのグループがすでに5回解釈されている場合、そのグループは変換のためにスケジューリングされる(ステップ1160)。
 ステップ1120で、その命令がすでに変換されたと判定された場合(たとえば、「YES」)、変換キャッシュ1175にアクセスすることにより、ステップ1170でその命令グループのキャッシュ済み変換が実行される。
 次に、ステップ1180では、次にエミュレートすべき命令グループが決定される。
 米国特許第5832205号に記載されているシステムでは、しきい条件を満足したことが発見された時点またはそのグループを次に実行する直前のいずれかに、エミュレートしたスレッドがその変換を実行することになる。そのスレッドが変換を実行することによって費やす時間は、潜在的に次の命令グループの実行を開始するために使用された可能性があり、このため、システムに対するオーバヘッドを表している。
 より効率のよい手法では、そのスレッドが単純にその命令グループを変換プールに入れ(たとえば、1190)、次のグループの実行を続行することになるだろう。したがって、変換が完了すると、後述する図12に示すように、変換テーブル1110内のポインタとともに、変換したオブジェクトが変換キャッシュに入る。
 図12は、パラレル変換スレッドを生成するためのシステム1200を示している。
 図12では、変換プール・マネージャ(たとえば、図12に示す1210)と呼ばれるもう1つのスレッドが変換プール(図11に示す1190)をモニタし、プロセッサ・スレッドの実行とは無関係に、変換を必要とする命令グループを選び出す。さらに、変換プール・マネージャ1210は、変換そのものを実行する必要はない。
 ある命令グループを変換するプロセスは他のグループを変換するプロセスとはほぼ無関係なので、変換プール・マネージャ1210はいくつかのスレッドを創出することができ、そのそれぞれは、図12に示すように、プールからのグループについて変換を実行する。
 図12では、変換プール・マネージャ1210が変換プール1190から変換のために命令グループを選択する。変換プール・マネージャ1210は変換テーブル1110を更新し、次に、変換スレッド・スケジューラ1220にそのスレッドを提供する。スレッド・スケジューラは、変換スレッド1230A、1230B、1230C、1230Dなどをスケジューリングし、それを変換キャッシュ1240に書き込む。
 このシステム/操作の効果は、本質的に、エミュレーションのタスクを、ホスト・マルチプロセッシング・システムによってより十分に利用できる独立パラレル・スレッドにさらに区分化することである。したがって、図12のシステムでは、変換機構を使用し、それを組み込み、本発明のシステムのフレームワークにそれをマッピングする。このため、変換内容をキャッシュする(さらに実際には変換を実行する)この機構は、本発明のシステムによるエミュレーション(およびそれによって扱われるスレッドのタイプ)を強化することになる。
 図13は、ホスト・プロセッサ・クラスタ1310と、スレッド・スケジューラ1320と、エミュレーション・スレッド・クラスタ1330とを含むシステム1300を示している。図13は、ホスト・システムのパフォーマンスと利用度を改善可能な追加スレッドを含む、図9の修正図である。この追加スレッドの恩恵は、図10のマルチクラスタ・メインフレーム・エミュレーション・システムにさらに引き継がれる。したがって、図13は、明瞭かつ簡潔にするため、エミュレーション・スレッド・クラスタの1つだけを例示的に示しているが、図10に示すように複数のエミュレーション・スレッド・クラスタならびに図10のホスト・アプリケーション・スレッド1040を設けることができる。
 上記のハードウェア/ソフトウェア環境に加え、本発明の他の態様では、上記の方法を実行するためのコンピュータ実現方法を含む。一例として、この方法は前述の特定の環境で実現することができる。
 このような方法は、たとえば、ディジタル・データ・プロセッサ(複数も可)によって実施されるように、一連の機械可読命令を実行するようにマルチプロセッサ・システム内のコンピュータを操作することにより実現することができる。このような命令は、様々なタイプの信号運搬媒体に存在することができる。
 したがって、本発明のこの態様は、本発明の方法を実行するために、プロセッサ/中央演算処理装置(CPU)および上記のハードウェアを取り入れたマルチプロセッシング・システム内のディジタル・データ・プロセッサ(複数も可)により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体を含む、プログラムによる製品を対象とする。
 この信号運搬媒体は、たとえば高速アクセス記憶装置によって代表されるように、たとえばCPU内に含まれるRAMを含むことができる。別法として、CPUによって直接または間接的にアクセス可能な磁気データ記憶ディスケット1400(図14)などの他の信号運搬媒体に命令を含めることもできる。
 ディスケット1400に含まれるか、コンピュータ/CPUまたはその他の場所に含まれるかにかかわらず、DASD記憶装置(たとえば、従来の「ハード・ドライブ」またはRAIDアレイ)、磁気テープ、電子読取専用メモリ(たとえば、ROM、EPROM、またはEEPROM)、光学記憶装置(たとえば、CD−ROM、WORM、DVD、ディジタル光学テープなど)、紙の「パンチ」カードなどの様々な機械可読データ記憶媒体、またはディジタルおよびアナログ通信リンクならびに無線などの伝送媒体を含むその他の適当な信号運搬媒体上に命令を記憶することができる。本発明の例証となる一実施形態では、機械可読命令は、「C」などの言語からコンパイルされたソフトウェア・オブジェクト・コードを含むことができる。
 いくつかの好ましい実施形態に関して本発明を説明してきたが、当業者であれば、特許請求の範囲の精神および範囲内で変更を加えて本発明を実施できることが分かるだろう。
 本発明は、効率のよいエミュレーションを含む、前述の数多くの利点を有することに留意されたい。さらに、本発明は、ロード・バランシングを支援する「仮想化」を実行するための基礎として使用することができる。仮想化は、ロード・バランシングを含む様々な形態を取ることができる。たとえば、仮想化はフォールト・トレランスにも使用することができ、その場合、1対1のマッピング(または他のマッピング方式)を有するシステム内で1つのプロセッサが故障した場合にそのシステムは機能し続けることができるが、それは、故障したシステムを抽象化することができ、単により小さいホスト・プロセッサ・プールが存在可能になるだけであるからである。したがって、故障したプロセッサの責務を他のプロセッサが引き受けることができる。
 考えられる本発明のもう1つの応用例は省電力化である。すなわち、マルチプロセッサ・システムにおいて電力を消費しすぎると判断すると、いくつかのプロセッサを遮断することができ、それでもより低い電力レベルでエミュレーション全体の機能を維持することができる。このため、遮断中のプロセッサの機能は他のプロセッサにシフトすることができる。各プロセッサは、スレッドからプロセッサへの1対1のマッピングとしてではなく、1つのスレッドとして取り扱われるので、これは本発明によって実行するには比較的単純なものである。
 すなわち、多対1のマッピングである前述のHerrod論文に記載されているSimOS技法または1対1のマッピング方式である米国特許第5832205号とは対照的に、本発明の方式は多対多のマッピングである。
 さらに、本出願人の意図は、権利請求中に後日補正された場合でも、すべての特許請求の範囲と同等のものを包含することであることに留意されたい。
 まとめとして、本発明の構成に関して以下の事項を開示する。
 (1)第2の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行する方法において、
 ターゲット・コンピューティング・システムの1つのプロセッサ上で動作するように設計された前記プログラムの各部分を、前記ホスト・コンピューティング・システム上で実行すべき1つまたは複数のプログラム・スレッドとして表現するステップを具備する方法。
 (2)前記ホスト・システム内の1つまたは複数のプロセッサ上で実行するために各スレッドをスケジューリングするステップをさらに具備する、上記(1)に記載の方法。
 (3)前記ターゲット・システムの1つのプロセッサに固有ではない前記ターゲット・システムの機能を、前記ホスト・システム上の1つまたは複数のプロセッサによって実行すべき1つまたは複数のスレッドとして表現するステップをさらに具備する、上記(1)に記載の方法。
 (4)前記ターゲット・システムの1つのプロセッサに固有ではない前記ターゲット・システムの機能を、前記ホスト・システム上の1つまたは複数のプロセッサによって実行すべき1つまたは複数のスレッドとして表現するステップをさらに具備する、上記(2)に記載の方法。
 (5)スレッドの数が前記ホスト・システム内のプロセッサの数を超える、上記(1)に記載の方法。
 (6)所与の命令グループが所定の回数解釈された後、前記命令グループを前記第1の命令セットから前記第2の命令セットに変換する、上記(1)に記載の方法。
 (7)前記解釈プロセスがマルチプロセッサ・システム内のスレッドとして実行される、上記(6)に記載の方法。
 (8)所与の時点における前記プロセッサの複数の機能が複数スレッドとして表現される、上記(1)に記載の方法。
 (9)動的にスレッドを作成するステップをさらに具備する、上記(1)に記載の方法。
 (10)同時に、第1のスレッドの変換を識別し、第2のスレッドを実行するステップをさらに具備する、上記(1)に記載の方法。
 (11)同時に、第1のスレッドを変換し、第2のスレッドを実行するステップをさらに具備する、上記(1)に記載の方法。
 (12)前記スレッドから前記プロセッサへの多対多のマッピングが実行される、上記(1)に記載の方法。
 (13)エミュレーション・スレッドを実行中にホスト・アプリケーション・スレッドが動作している、上記(1)に記載の方法。
 (14)マルチプロセッサ・システムのエミュレーションの方法において、
 ターゲット・システムの各部分を、ホスト・システム上で実行するためのスレッドとして表現するステップと、
 前記ホスト・システム上で実行するために前記スレッドのそれぞれをスケジューリングするステップとを具備する方法。
 (15)マルチプロセッサ・システムのエミュレーションの方法において、
 ターゲット・システムのハードウェア・リソースをソフトウェア・スレッドにマッピングするステップと、
 前記ソフトウェア・スレッドをホスト・システムのハードウェア・リソースにマッピングするステップと、
 前記ターゲット・システムの状態情報を前記ホスト・システムのメモリにマッピングするステップと、
 エミュレーション・タスクをより多数のスレッドに区分化することによりエミュレーションのパフォーマンスを改善するステップとを具備する方法。
 (16)マルチプロセッサ・システムのエミュレーションのためのシステムにおいて、
 ターゲット・システムのハードウェア・リソースをソフトウェア・スレッドにマッピングするための手段と、
 前記ソフトウェア・スレッドをホスト・システムのハードウェア・リソースにマッピングするための手段と、
 前記ターゲット・システムの状態情報を前記ホスト・システムのメモリにマッピングするための手段と、
 エミュレーション・タスクをより多数のスレッドに区分化することによりエミュレーションのパフォーマンスを改善するための手段とを具備するシステム。
 (17)第2の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行するためのシステムにおいて、
 前記ターゲット・コンピューティング・システムの1つのプロセッサ上で動作するように設計された前記プログラムの各部分を、前記ホスト・コンピューティング・システム上で実行すべき1つまたは複数のプログラム・スレッドとして表現するための表現ユニットを具備するシステム。
 (18)マルチプロセッサ・システム用のエミュレーションのためのシステムにおいて、
 ターゲット・システムのハードウェア・リソースをソフトウェア・スレッドにマッピングするための第1のマッピング・モジュールと、
 前記ソフトウェア・スレッドをホスト・システムのハードウェア・リソースにマッピングするための第2のマッピング・モジュールと、
 前記ターゲット・システムの状態情報を前記ホスト・システムのメモリにマッピングするための第3のマッピング・モジュールと、
 エミュレーション・タスクをより多数のスレッドに区分化するための区分化モジュールとを具備するシステム。
 (19)マルチプロセッサ・システムのホスト・コンピューティング・システム用のスレッド処理構造において、
 スレッドを保持するためのスレッド・プールと、
 前記ホスト・コンピューティング・システムのメモリにアクセスし、前記スレッド・プール内のどのスレッドをエミュレーションのために選択すべきかを決定するためのスレッド・プロセッサと、
 新しいスレッドを作成し、前記新しいスレッドを前記スレッド・プールに入れるためのスレッド・クリエータと、
 前記スレッド・プールに保持された前記スレッドをスケジューリングするためのスレッド・スケジューラであって、待機スレッドを走査し、優先順位の順序で次のスレッドを前記マルチプロセッサ・システムの使用可能プロセッサに割り振るスレッド・スケジューラとを具備するスレッド処理構造。
 (20)第2の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行する方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
 ターゲット・コンピューティング・システムの1つのプロセッサ上で動作するように設計された前記プログラムの各部分を、前記ホスト・コンピューティング・システム上で実行すべき1つまたは複数のプログラム・スレッドとして表現するステップを具備する信号運搬媒体。
複数の処理要素と、メモリ・サブシステムと、コヒーレント・バス相互接続部と、入出力(I/O)プロセッサとを含む、ターゲット・マルチプロセッサ・コンピューティング・システム100を示す図である。 図1のシステム100上で実行される様々な命令のカテゴリ化のための方式200を示す図である。 複数のホスト処理要素と、ホスト・メモリ・サブシステムと、コヒーレント・ホスト・バス相互接続部と、ホストI/Oプロセッサとを含む、ホスト・マルチプロセッサ・コンピューティング・システム300を示す図である。 ターゲット・システム100内の様々なリソースからホスト・システム300のメモリへのマッピング400を示す図である。 ホスト・システム300上のスレッド処理ソフトウェア構造500を示す図である。 スレッド固有メモリを使用してメモリ・アクセスをより高速にすることができるシステムを示す図である。 ターゲット・システムの諸機能からホスト・システムのスレッドへの単純マッピングのためのシステム700を示す図である。 図7のスレッドからマルチプロセッシング・ホスト・システム内のプロセッサへのトリビアル・マッピングのためのシステム800を示す図である。 図7のスレッドからマルチプロセッシング・ホスト・システム内のプロセッサへのより効率のよいマッピングのためのシステム900を示す図である。 マルチプロセッシング・ホスト・システムへのマッピングが可能なより一般的なシステム1000を示す図である。 再利用のために変換内容をキャッシュするエミュレーション方式1100を示す図である。 パラレル変換スレッドを生成するためのシステム1200を示す図である。 追加の変換スレッドに対処するために図9を機能強化したものであるシステム1300を示す図である。 本発明によるプログラムの諸ステップを記憶するための信号運搬媒体1400(たとえば、記憶媒体)を示す図である。
符号の説明
120 相互接続ネットワーク
130 メモリ階層
140、730 I/Oプロセッサ
320 コヒーレント・バス
330 ホスト・メモリ階層
340 ホストI/Oプロセッサ
400 ホスト仮想メモリ
410 共用リソース
420 プロセッサ・ローカル・リソース
430 I/Oローカル・リソース
440 エミュレーション・プログラム・メモリ
510 スレッド・プロセッサ
520 スレッド・クリエータ
530 スレッド・プール
540、920、1020、1320 スレッド・スケジューラ
610 スレッド固有メモリ
740、840 I/Oスレッド
750、850 システム・スレッド
910、1010、 1310 ホスト・プロセッサ・クラスタ
930、1030、1330 エミュレーション・スレッド・クラスタ
1040 ホスト・アプリケーション・スレッド
1110、1175 変換テーブル
1190 変換プール
1210 変換プール・マネージャ
1220 変換スレッド・スケジューラ
1240 変換キャッシュ

Claims (20)

  1.  第2の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行する方法において、
     ターゲット・コンピューティング・システムの1つのプロセッサ上で動作するように設計された前記プログラムの各部分を、前記ホスト・コンピューティング・システム上で実行すべき1つまたは複数のプログラム・スレッドとして表現するステップを具備する方法。
  2.  前記ホスト・システム内の1つまたは複数のプロセッサ上で実行するために各スレッドをスケジューリングするステップをさらに具備する、請求項1に記載の方法。
  3.  前記ターゲット・システムの1つのプロセッサに固有ではない前記ターゲット・システムの機能を、前記ホスト・システム上の1つまたは複数のプロセッサによって実行すべき1つまたは複数のスレッドとして表現するステップをさらに具備する、請求項1に記載の方法。
  4.  前記ターゲット・システムの1つのプロセッサに固有ではない前記ターゲット・システムの機能を、前記ホスト・システム上の1つまたは複数のプロセッサによって実行すべき1つまたは複数のスレッドとして表現するステップをさらに具備する、請求項2に記載の方法。
  5.  スレッドの数が前記ホスト・システム内のプロセッサの数を超える、請求項1に記載の方法。
  6.  所与の命令グループが所定の回数解釈された後、前記命令グループを前記第1の命令セットから前記第2の命令セットに変換する、請求項1に記載の方法。
  7.  前記解釈プロセスがマルチプロセッサ・システム内のスレッドとして実行される、請求項6に記載の方法。
  8.  所与の時点における前記プロセッサの複数の機能が複数スレッドとして表現される、請求項1に記載の方法。
  9.  動的にスレッドを作成するステップをさらに具備する、請求項1に記載の方法。
  10.  同時に、第1のスレッドの変換を識別し、第2のスレッドを実行するステップをさらに具備する、請求項1に記載の方法。
  11.  同時に、第1のスレッドを変換し、第2のスレッドを実行するステップをさらに具備する、請求項1に記載の方法。
  12.  前記スレッドから前記プロセッサへの多対多のマッピングが実行される、請求項1に記載の方法。
  13.  エミュレーション・スレッドを実行中にホスト・アプリケーション・スレッドが動作している、請求項1に記載の方法。
  14.  マルチプロセッサ・システムのエミュレーションの方法において、
     ターゲット・システムの各部分を、ホスト・システム上で実行するためのスレッドとして表現するステップと、
     前記ホスト・システム上で実行するために前記スレッドのそれぞれをスケジューリングするステップとを具備する方法。
  15.  マルチプロセッサ・システムのエミュレーションの方法において、
     ターゲット・システムのハードウェア・リソースをソフトウェア・スレッドにマッピングするステップと、
     前記ソフトウェア・スレッドをホスト・システムのハードウェア・リソースにマッピングするステップと、
     前記ターゲット・システムの状態情報を前記ホスト・システムのメモリにマッピングするステップと、
     エミュレーション・タスクをより多数のスレッドに区分化することによりエミュレーションのパフォーマンスを改善するステップとを具備する方法。
  16.  マルチプロセッサ・システムのエミュレーションのためのシステムにおいて、
     ターゲット・システムのハードウェア・リソースをソフトウェア・スレッドにマッピングするための手段と、
     前記ソフトウェア・スレッドをホスト・システムのハードウェア・リソースにマッピングするための手段と、
     前記ターゲット・システムの状態情報を前記ホスト・システムのメモリにマッピングするための手段と、
     エミュレーション・タスクをより多数のスレッドに区分化することによりエミュレーションのパフォーマンスを改善するための手段とを具備するシステム。
  17.  第2の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行するためのシステムにおいて、
     前記ターゲット・コンピューティング・システムの1つのプロセッサ上で動作するように設計された前記プログラムの各部分を、前記ホスト・コンピューティング・システム上で実行すべき1つまたは複数のプログラム・スレッドとして表現するための表現ユニットを具備するシステム。
  18.  マルチプロセッサ・システム用のエミュレーションのためのシステムにおいて、
     ターゲット・システムのハードウェア・リソースをソフトウェア・スレッドにマッピングするための第1のマッピング・モジュールと、
     前記ソフトウェア・スレッドをホスト・システムのハードウェア・リソースにマッピングするための第2のマッピング・モジュールと、
     前記ターゲット・システムの状態情報を前記ホスト・システムのメモリにマッピングするための第3のマッピング・モジュールと、
     エミュレーション・タスクをより多数のスレッドに区分化するための区分化モジュールとを具備するシステム。
  19.  マルチプロセッサ・システムのホスト・コンピューティング・システム用のスレッド処理構造において、
     スレッドを保持するためのスレッド・プールと、
     前記ホスト・コンピューティング・システムのメモリにアクセスし、前記スレッド・プール内のどのスレッドをエミュレーションのために選択すべきかを決定するためのスレッド・プロセッサと、
     新しいスレッドを作成し、前記新しいスレッドを前記スレッド・プールに入れるためのスレッド・クリエータと、
     前記スレッド・プールに保持された前記スレッドをスケジューリングするためのスレッド・スケジューラであって、待機スレッドを走査し、優先順位の順序で次のスレッドを前記マルチプロセッサ・システムの使用可能プロセッサに割り振るスレッド・スケジューラとを具備するスレッド処理構造。
  20.  第2の命令セット・アーキテクチャの命令を処理するように設計された複数のプロセッサを有するホスト・コンピューティング・システム上でターゲット命令セット・アーキテクチャ用に作成されたプログラムを実行する方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体において、前記方法が、
     ターゲット・コンピューティング・システムの1つのプロセッサ上で動作するように設計された前記プログラムの各部分を、前記ホスト・コンピューティング・システム上で実行すべき1つまたは複数のプログラム・スレッドとして表現するステップを具備する信号運搬媒体。
JP2003300612A 2002-09-17 2003-08-25 マルチプロセッサ・ホスト・システム上でのマルチプロセッサ・エミュレーションのための方法およびシステム Pending JP2004110809A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/244,414 US7496494B2 (en) 2002-09-17 2002-09-17 Method and system for multiprocessor emulation on a multiprocessor host system

Publications (1)

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

Family

ID=31991892

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003300612A Pending JP2004110809A (ja) 2002-09-17 2003-08-25 マルチプロセッサ・ホスト・システム上でのマルチプロセッサ・エミュレーションのための方法およびシステム

Country Status (3)

Country Link
US (2) US7496494B2 (ja)
JP (1) JP2004110809A (ja)
CN (1) CN1278224C (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006221643A (ja) * 2005-02-08 2006-08-24 Sony Computer Entertainment Inc 命令セットのエミュレーションのための方法、装置及びシステム
JP2008040540A (ja) * 2006-08-01 2008-02-21 Nec Corp エミュレーション装置及びエミュレーション方法
JP2009527836A (ja) * 2006-02-21 2009-07-30 株式会社ソニー・コンピュータエンタテインメント データ処理
JP2014194770A (ja) * 2013-03-16 2014-10-09 Intel Corp 命令エミュレーションプロセッサ、方法、およびシステム

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9020801B2 (en) 2003-08-11 2015-04-28 Scalemp Inc. Cluster-based operating system-agnostic virtual computing system
US7669203B2 (en) * 2003-12-19 2010-02-23 Intel Corporation Virtual multithreading translation mechanism including retrofit capability
WO2005089239A2 (en) 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method of providing a self-optimizing reservation in space of compute resources
WO2006053093A2 (en) 2004-11-08 2006-05-18 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
GB2424727B (en) 2005-03-30 2007-08-01 Transitive Ltd Preparing instruction groups for a processor having a multiple issue ports
WO2006103395A1 (en) * 2005-03-30 2006-10-05 Transitive Limited Preparing instruction groups in a processor having multiple issue ports
CA2603577A1 (en) 2005-04-07 2006-10-12 Cluster Resources, Inc. On-demand access to compute resources
GB2427045B (en) * 2005-06-06 2007-11-21 Transitive Ltd Method and apparatus for converting program code with access coordination for a shared resource
US20060294401A1 (en) * 2005-06-24 2006-12-28 Dell Products L.P. Power management of multiple processors
US7870307B2 (en) * 2006-01-30 2011-01-11 Sony Computer Entertainment Inc. DMA and graphics interface emulation
US9378108B2 (en) 2007-03-22 2016-06-28 Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US8874425B2 (en) 2007-03-22 2014-10-28 The Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US8495708B2 (en) * 2007-03-22 2013-07-23 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US20080235001A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing emulation decisions in response to software evaluations or the like
US8438609B2 (en) 2007-03-22 2013-05-07 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US9558019B2 (en) 2007-03-22 2017-01-31 Invention Science Fund I, Llc Coordinating instances of a thread or other service in emulation
US20080244538A1 (en) * 2007-03-26 2008-10-02 Nair Sreekumar R Multi-core processor virtualization based on dynamic binary translation
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US20120317377A1 (en) * 2011-06-09 2012-12-13 Alexander Palay Dual flash translation layer
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US10311014B2 (en) * 2012-12-28 2019-06-04 Iii Holdings 2, Llc System, method and computer readable medium for offloaded computation of distributed application protocols within a cluster of data processing nodes
CN103336684B (zh) * 2013-07-18 2016-08-10 上海寰创通信科技股份有限公司 一种并发处理ap消息的ac及其处理方法
US9251088B2 (en) 2013-10-30 2016-02-02 Globalfoundries Inc. Mechanisms for eliminating a race condition between a hypervisor-performed emulation process requiring a translation operation and a concurrent translation table entry invalidation
CN107408052B (zh) * 2015-04-10 2021-04-16 谷歌有限责任公司 共享对象层级上的二进制转换的方法、系统和介质
DE112015006438T5 (de) * 2015-04-10 2018-01-04 Google Inc. Binäre Übersetzung in nativen Client
US10176001B2 (en) * 2015-05-28 2019-01-08 Mitsubishi Electric Corporation Simulation device, simulation method, and computer readable medium
DE102016203283A1 (de) * 2016-02-29 2017-08-31 Robert Bosch Gmbh Verfahren zum Betreiben eines Mikroprozessors
WO2018006928A1 (en) * 2016-07-04 2018-01-11 Huawei Technologies Co., Ltd. Techniques for performance evaluation of an electronic hardware design on a computer simulation server
CN113760512B (zh) * 2021-09-08 2023-07-11 北京世冠金洋科技发展有限公司 仿真模型的执行方法及装置、存储介质及电子设备

Family Cites Families (73)

* 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
JPS59167756A (ja) 1983-01-31 1984-09-21 Nec Corp 仮想計算機のデイスパツチ制御方式
US4564903A (en) * 1983-10-05 1986-01-14 International Business Machines Corporation Partitioned multiprocessor programming system
JPH0814795B2 (ja) 1986-01-14 1996-02-14 株式会社日立製作所 マルチプロセッサ仮想計算機システム
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
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
US5675762A (en) * 1992-04-03 1997-10-07 International Business Machines Corporation System for locking down part of portion of memory and updating page directory with entry corresponding to part of portion of the memory locked down
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
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
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
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
US5751982A (en) * 1995-03-31 1998-05-12 Apple Computer, Inc. Software emulation system with dynamic translation of emulated instructions for increased processing speed
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
JP3022398B2 (ja) 1997-05-09 2000-03-21 日本電気株式会社 仮想計算機方式
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
JP3675623B2 (ja) 1997-10-31 2005-07-27 株式会社東芝 プログラム開発支援装置及び方法並びにプログラム開発支援用ソフトウェアを記録した記録媒体
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
KR20010041297A (ko) 1998-02-26 2001-05-15 케네쓰 올센 원격 프로세스의 중단과 연속 방법 및 장치
US6289419B1 (en) * 1998-03-06 2001-09-11 Sharp Kabushiki Kaisha Consistency control device merging updated memory blocks
JPH11259437A (ja) 1998-03-12 1999-09-24 Hitachi Ltd 不要バリア命令の削減方式
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
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
US6339752B1 (en) * 1998-12-15 2002-01-15 Bull Hn Information Systems Inc. Processor emulation instruction counter virtual memory address translation
JP3604029B2 (ja) 1999-01-12 2004-12-22 日本電気株式会社 マルチスレッドプロセッサ
US6763452B1 (en) * 1999-01-28 2004-07-13 Ati International Srl Modifying program execution based on profiling
JP4072271B2 (ja) 1999-02-19 2008-04-09 株式会社日立製作所 複数のオペレーティングシステムを実行する計算機
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
US6986128B2 (en) 2000-01-07 2006-01-10 Sony Computer Entertainment Inc. Multiple stage program recompiler and method
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
US6501992B1 (en) * 2000-10-17 2002-12-31 Medtronic, Inc. Radiopaque marking of lead electrode zone in a continuous conductor construction
US6993754B2 (en) * 2001-11-13 2006-01-31 Hewlett-Packard Development Company, L.P. Annotations to executable images for improved dynamic optimization functions
US6728846B2 (en) * 2000-12-22 2004-04-27 Bull Hn Information Systems Inc. Method and data processing system for performing atomic multiple word writes
JP2002312180A (ja) * 2001-04-11 2002-10-25 Hitachi Ltd 動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータにて実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した半導体デバイス
US7047521B2 (en) * 2001-06-07 2006-05-16 Lynoxworks, Inc. Dynamic instrumentation event trace system and methods
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

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006221643A (ja) * 2005-02-08 2006-08-24 Sony Computer Entertainment Inc 命令セットのエミュレーションのための方法、装置及びシステム
JP4645973B2 (ja) * 2005-02-08 2011-03-09 株式会社ソニー・コンピュータエンタテインメント 命令セットのエミュレーションのための方法、装置及びシステム
JP2009527836A (ja) * 2006-02-21 2009-07-30 株式会社ソニー・コンピュータエンタテインメント データ処理
JP2011227908A (ja) * 2006-02-21 2011-11-10 Sony Computer Entertainment Inc データ処理
JP2008040540A (ja) * 2006-08-01 2008-02-21 Nec Corp エミュレーション装置及びエミュレーション方法
JP2014194770A (ja) * 2013-03-16 2014-10-09 Intel Corp 命令エミュレーションプロセッサ、方法、およびシステム
US9703562B2 (en) 2013-03-16 2017-07-11 Intel Corporation Instruction emulation processors, methods, and systems

Also Published As

Publication number Publication date
CN1278224C (zh) 2006-10-04
US7496494B2 (en) 2009-02-24
US20040054517A1 (en) 2004-03-18
US7844446B2 (en) 2010-11-30
US20090157377A1 (en) 2009-06-18
CN1490717A (zh) 2004-04-21

Similar Documents

Publication Publication Date Title
JP2004110809A (ja) マルチプロセッサ・ホスト・システム上でのマルチプロセッサ・エミュレーションのための方法およびシステム
EP2143001B1 (en) Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US9495136B2 (en) Using aliasing information for dynamic binary optimization
JP5934094B2 (ja) データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング
US8205200B2 (en) Compiler-based scheduling optimization hints for user-level threads
KR101673435B1 (ko) 공동 설계 프로세서에서 격리된 실행 환경의 생성
US8453132B2 (en) System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems
JP2013524386A (ja) ランスペース方法、システムおよび装置
Veselý et al. Generic system calls for GPUs
Wang et al. Enabling cross-isa offloading for cots binaries
US11188364B1 (en) Compilation strategy for a sharable application snapshot
Jones et al. Programming issues raised by a multiprocessor
Lankes et al. A low noise unikernel for extrem-scale systems
Chaudhary et al. Techniques for migrating computations on the grid
Kirov et al. Feature selection for predicting live migration characteristics of virtual machines
US20130263157A1 (en) Method to utilize cores in different operating system partitions
Schildermans et al. Towards high-level software approaches to reduce virtualization overhead for parallel applications
Lankes et al. HermitCore
KR101433644B1 (ko) Arm 기반 운영체제의 가상화를 위한 정책 제공 시스템 및 방법
Chen et al. CRState: checkpoint/restart of OpenCL program for in-kernel applications
Mehrab Cross-ISA Execution Migration of Unikernels: Build Toolchain, Memory Alignment, and VM State Transfer Techniques
Wang et al. Self-boosted co-scheduling for SMP virtual machines
Wozniak et al. Challenges and opportunities for dataflow processing on exascale computers
Hale et al. The Case for an Interwoven Parallel Hardware/Software Stack
Yoshii et al. Extending and benchmarking the" Big Memory" implementation on Blue Gene/P Linux

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060912

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061117

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20061117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20061117

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070425

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070531

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

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20070622

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20091216