JP2002312180A - 動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータにて実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した半導体デバイス - Google Patents
動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータにて実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した半導体デバイスInfo
- Publication number
- JP2002312180A JP2002312180A JP2001112354A JP2001112354A JP2002312180A JP 2002312180 A JP2002312180 A JP 2002312180A JP 2001112354 A JP2001112354 A JP 2001112354A JP 2001112354 A JP2001112354 A JP 2001112354A JP 2002312180 A JP2002312180 A JP 2002312180A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- processing
- processing flow
- processor system
- converted
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【課題】 異種プロセッサ用命令列実行時の命令変換及
び最適化処理オーバヘッドを削減し,同時に,変換後命
令列高速処理,プロセッサ高速周波数動作及び低消費電
力化を実現する。 【解決手段】 元命令列解釈実行処理流104,命令変
換・最適化処理流105と元命令列先読み処理流103
を独立させ,チップマルチプロセッサ形式や,1個の命
令実行制御部で同時に複数の処理流を実行する形式でプ
ロセッサを構成して上記複数処理流を並列処理する。さ
らに,命令変換・最適化処理流105は,複数処理流を
生成する形で変換後命令列を構成し,元命令列解釈実行
処理流104は,各命令解釈実行時に命令変換・最適化
処理流105に生成された当該命令に対応する変換後命
令列が存在する場合にこれを実行する。 【効果】 上記課題を解決し,さらに元命令列読込み処
理オーバヘッドを削減する。
び最適化処理オーバヘッドを削減し,同時に,変換後命
令列高速処理,プロセッサ高速周波数動作及び低消費電
力化を実現する。 【解決手段】 元命令列解釈実行処理流104,命令変
換・最適化処理流105と元命令列先読み処理流103
を独立させ,チップマルチプロセッサ形式や,1個の命
令実行制御部で同時に複数の処理流を実行する形式でプ
ロセッサを構成して上記複数処理流を並列処理する。さ
らに,命令変換・最適化処理流105は,複数処理流を
生成する形で変換後命令列を構成し,元命令列解釈実行
処理流104は,各命令解釈実行時に命令変換・最適化
処理流105に生成された当該命令に対応する変換後命
令列が存在する場合にこれを実行する。 【効果】 上記課題を解決し,さらに元命令列読込み処
理オーバヘッドを削減する。
Description
【0001】
【発明の属する技術分野】本発明は,動的命令変換機能
を有するプロセッサシステムに係わり,詳しくは異なる
ハードウェアプラットフォーム向けの命令バイナリコー
ドプログラムを動的に自身の命令バイナリコードに変換
しながらプログラム実行を行う動的命令変換機能を有す
るプロセッサシステム、該プロセッサシステムを備えた
コンピュータにて実行されるバイナリートランスレーシ
ョンプログラム及びそのプロセッサシステムを実装した
半導体デバイスに関する。
を有するプロセッサシステムに係わり,詳しくは異なる
ハードウェアプラットフォーム向けの命令バイナリコー
ドプログラムを動的に自身の命令バイナリコードに変換
しながらプログラム実行を行う動的命令変換機能を有す
るプロセッサシステム、該プロセッサシステムを備えた
コンピュータにて実行されるバイナリートランスレーシ
ョンプログラム及びそのプロセッサシステムを実装した
半導体デバイスに関する。
【0002】
【従来の技術】計算機システムを製造するメーカーは、
当該計算機システムの性能向上を目的として同システム
のCPU(中央処理装置)に従来と異なるアーキテクチ
ャのマイクロプロセッサを適用する場合がある。
当該計算機システムの性能向上を目的として同システム
のCPU(中央処理装置)に従来と異なるアーキテクチ
ャのマイクロプロセッサを適用する場合がある。
【0003】この場合に問題となるのが,従来の計算機
システムとのソフトウェア互換性である。
システムとのソフトウェア互換性である。
【0004】基本的に,このようなアーキテクチャ変更
を行った計算機システムでは,従来システムで使用して
いたソフトウェアが利用不能になる。
を行った計算機システムでは,従来システムで使用して
いたソフトウェアが利用不能になる。
【0005】この問題を解決する手段として,当該ソフ
トウェアに対するソースコードを新規システム上でコン
パイラによって再コンパイルし,当該新規システム用の
命令バイナリコードを生成するという方法などが紹介さ
れている。
トウェアに対するソースコードを新規システム上でコン
パイラによって再コンパイルし,当該新規システム用の
命令バイナリコードを生成するという方法などが紹介さ
れている。
【0006】しかし、当該新規システム使用者の手元に
そのようなソースコードが無い場合には上記方法等が利
用できないケースも多い。
そのようなソースコードが無い場合には上記方法等が利
用できないケースも多い。
【0007】上記したようなケースでも対応可能な手法
として,ソフトウェア手段によって従来計算機システム
において使用されていたマイクロプロセッサ向けの命令
を解釈実行(interpret)する、または、当該
マイクロプロセッサ向けの命令を当該新規システムのマ
イクロプロセッサ向けの命令に変換(translat
e)して同変換後命令を直接実行するという方法があ
る。
として,ソフトウェア手段によって従来計算機システム
において使用されていたマイクロプロセッサ向けの命令
を解釈実行(interpret)する、または、当該
マイクロプロセッサ向けの命令を当該新規システムのマ
イクロプロセッサ向けの命令に変換(translat
e)して同変換後命令を直接実行するという方法があ
る。
【0008】特に従来計算機システムで使用していたソ
フトウェアプログラムの新規システムでの処理中に動的
に後者の命令変換,変換後実行を適用する方法は動的命
令変換方法(dynamic binary tran
slation)と呼ばれ,これを実現する機能は動的
命令変換機能と呼ばれる。
フトウェアプログラムの新規システムでの処理中に動的
に後者の命令変換,変換後実行を適用する方法は動的命
令変換方法(dynamic binary tran
slation)と呼ばれ,これを実現する機能は動的
命令変換機能と呼ばれる。
【0009】これらのソフトウェア手段については、I
EEE学会誌IEEE Computer 2000年
3月号の40頁から45頁に収録されている“Welc
ome to the Opportunities
of Binary Translation”という
記事にて概略的に紹介されており、また、同学会誌47
頁から52頁に収録されている“PA−RISC to
IA−64: Transparent Execu
tion, No Recompilation”とい
う記事は同技術の一事例を紹介している。
EEE学会誌IEEE Computer 2000年
3月号の40頁から45頁に収録されている“Welc
ome to the Opportunities
of Binary Translation”という
記事にて概略的に紹介されており、また、同学会誌47
頁から52頁に収録されている“PA−RISC to
IA−64: Transparent Execu
tion, No Recompilation”とい
う記事は同技術の一事例を紹介している。
【0010】上記動的命令変換手法は,上述の計算機シ
ステムのマイクロプロセッサが変更されたようなケース
への対応としてだけでなく、あるハードウェアプラット
フォームの計算機システムを利用しているユーザが、異
なるハードウェアプラットフォーム上でのみ動作するソ
フトウェアを使用したい場合にも適用される技術であ
る。
ステムのマイクロプロセッサが変更されたようなケース
への対応としてだけでなく、あるハードウェアプラット
フォームの計算機システムを利用しているユーザが、異
なるハードウェアプラットフォーム上でのみ動作するソ
フトウェアを使用したい場合にも適用される技術であ
る。
【0011】また、近年になって、動的命令変換機能を
積極的にアーキテクチャに取り込んだ新規マイクロプロ
セッサの提案が相次ぎ,注目されている。
積極的にアーキテクチャに取り込んだ新規マイクロプロ
セッサの提案が相次ぎ,注目されている。
【0012】具体的な事例としては、IEEE学会誌I
EEE Computer 2000年3月号の54頁
から59頁に収録の“Dynamic and Tra
nsparent Binary Translati
on”で開示されているIBM社のBOA(Binar
y−translation OptimizedAr
chitecture)や、Cahners MICR
OPROCESSOR REPORT Volume
14,Archive 2の1頁および9頁から18頁
に収録の“TRANSMETA BREAKS X86
LOW―POWER BARRIER −VLIW
Chips Use Hardware−Assist
ed x86 Emulation”で開示されている
Transmeta社のCrusoeなどが挙げられ
る。
EEE Computer 2000年3月号の54頁
から59頁に収録の“Dynamic and Tra
nsparent Binary Translati
on”で開示されているIBM社のBOA(Binar
y−translation OptimizedAr
chitecture)や、Cahners MICR
OPROCESSOR REPORT Volume
14,Archive 2の1頁および9頁から18頁
に収録の“TRANSMETA BREAKS X86
LOW―POWER BARRIER −VLIW
Chips Use Hardware−Assist
ed x86 Emulation”で開示されている
Transmeta社のCrusoeなどが挙げられ
る。
【0013】図2に上記従来技術の動的命令変換機能を
含んだ、異種ハードウェアプラットフォーム向け命令バ
イナリコードプログラム(以降、元命令列と略称する場
合がある)実行機構の構成を示す。
含んだ、異種ハードウェアプラットフォーム向け命令バ
イナリコードプログラム(以降、元命令列と略称する場
合がある)実行機構の構成を示す。
【0014】図2において、201は異種ハードウェア
プラットフォーム向け命令の解釈実行部,202は本実
行機構の処理全体を制御する実行制御部、203は異種
ハードウェアプラットフォーム向け命令列から本実行機
構を有するハードウェアプラットフォームの命令列(以
降、変換後命令列と略称する場合がある)を動的に生成
する動的命令変換部、204はオペレーティングシステ
ム(OS)が関係する処理部分等のプログラム中の特殊
処理部を本実行機構を有するハードウェアプラットフォ
ームの機能を用いてエミュレーションする特殊処理エミ
ュレーション部、そして、205は本実行機構を有する
プラットフォームOS及びハードウェアである。
プラットフォーム向け命令の解釈実行部,202は本実
行機構の処理全体を制御する実行制御部、203は異種
ハードウェアプラットフォーム向け命令列から本実行機
構を有するハードウェアプラットフォームの命令列(以
降、変換後命令列と略称する場合がある)を動的に生成
する動的命令変換部、204はオペレーティングシステ
ム(OS)が関係する処理部分等のプログラム中の特殊
処理部を本実行機構を有するハードウェアプラットフォ
ームの機能を用いてエミュレーションする特殊処理エミ
ュレーション部、そして、205は本実行機構を有する
プラットフォームOS及びハードウェアである。
【0015】本実行機構による異種ハードウェアプラッ
トフォーム向け命令バイナリコードプログラム処理がプ
ラットフォームOS及びハードウェア205上で起動さ
れると、実行制御部202が処理を開始する。実行制御
部202は,プログラム処理中に適時、解釈実行部20
1、動的命令変換部203、及び特殊処理エミュレーシ
ョン部204に処理を依頼する。特殊処理エミュレーシ
ョン部204は、プラットフォームOS及びハードウェ
ア205の機能を直接使用して依頼された処理を遂行す
る。
トフォーム向け命令バイナリコードプログラム処理がプ
ラットフォームOS及びハードウェア205上で起動さ
れると、実行制御部202が処理を開始する。実行制御
部202は,プログラム処理中に適時、解釈実行部20
1、動的命令変換部203、及び特殊処理エミュレーシ
ョン部204に処理を依頼する。特殊処理エミュレーシ
ョン部204は、プラットフォームOS及びハードウェ
ア205の機能を直接使用して依頼された処理を遂行す
る。
【0016】次に図2に係わるより詳細な処理フローに
関して、図3を用いて説明する。
関して、図3を用いて説明する。
【0017】図2の実行機構が処理を開始すると、実行
制御部202が動作を始め、処理301のとおり、元命
令列アドレスに基づき、元命令列中の命令が参照され、
当該命令に対する実行回数計測カウンタがインクリメン
トされる。実行回数計測カウンタは、元命令列管理表な
どのソフトウェアデータ構造体中に含まれる。
制御部202が動作を始め、処理301のとおり、元命
令列アドレスに基づき、元命令列中の命令が参照され、
当該命令に対する実行回数計測カウンタがインクリメン
トされる。実行回数計測カウンタは、元命令列管理表な
どのソフトウェアデータ構造体中に含まれる。
【0018】次に、処理302において、当該元命令列
管理表が参照され、当該命令に対応する変換後命令列の
有無がチェックされる。変換後命令列が存在する場合,
変換後命令列領域308上の該当する変換後命令列ブロ
ック306を元命令列管理表を参照して特定し、これを
直接実行した後処理301に戻る。処理302におい
て、変換後命令列が存在しない場合、当該命令の実行回
数が検査される。同実行回数があらかじめ定められた閾
値を超える場合、処理305が起動され、閾値以下の場
合、処理304が起動される。処理304開始にあたっ
て、実行制御部202は、解釈実行部201を呼び出
す。解釈実行部201は、元命令列を順次参照し、各命
令を解釈し、それぞれの動作に相当する処理をあらかじ
め用意されたソフトウェア処理手順にしたがって実現す
る。
管理表が参照され、当該命令に対応する変換後命令列の
有無がチェックされる。変換後命令列が存在する場合,
変換後命令列領域308上の該当する変換後命令列ブロ
ック306を元命令列管理表を参照して特定し、これを
直接実行した後処理301に戻る。処理302におい
て、変換後命令列が存在しない場合、当該命令の実行回
数が検査される。同実行回数があらかじめ定められた閾
値を超える場合、処理305が起動され、閾値以下の場
合、処理304が起動される。処理304開始にあたっ
て、実行制御部202は、解釈実行部201を呼び出
す。解釈実行部201は、元命令列を順次参照し、各命
令を解釈し、それぞれの動作に相当する処理をあらかじ
め用意されたソフトウェア処理手順にしたがって実現す
る。
【0019】先述したとおり、当該命令がオペレーティ
ングシステム(OS)が関係する処理部分等のプログラ
ム中の特殊処理部に該当する場合には、解釈実行部20
1は、実行制御部202にその旨を報告する。実行制御
部202は、特殊処理エミュレーション部204を起動
し、特殊処理エミュレーション部204は、プラットフ
ォームOS及びハードウェア205の機能を用いて、当
該処理を実施する。特殊処理が完了すると、制御は,特
殊処理エミュレーション部204から実行制御部202
を介して、解釈実行部201に戻る。解釈実行部201
は、元命令列に分岐命令が出てくるまで上記処理を繰り
返した後、制御を実行制御部202の処理301に戻
す。
ングシステム(OS)が関係する処理部分等のプログラ
ム中の特殊処理部に該当する場合には、解釈実行部20
1は、実行制御部202にその旨を報告する。実行制御
部202は、特殊処理エミュレーション部204を起動
し、特殊処理エミュレーション部204は、プラットフ
ォームOS及びハードウェア205の機能を用いて、当
該処理を実施する。特殊処理が完了すると、制御は,特
殊処理エミュレーション部204から実行制御部202
を介して、解釈実行部201に戻る。解釈実行部201
は、元命令列に分岐命令が出てくるまで上記処理を繰り
返した後、制御を実行制御部202の処理301に戻
す。
【0020】一方、処理305開始にあたって、実行制
御部202は、動的命令変換部203を呼び出す。動的
命令変換部203は、分岐命令で区切られる一連の元命
令列(ブロック)中の各命令を本実行機構を有するハー
ドウェアプラットフォームの命令列に置換え、生成した
変換後命令列を必要に応じて最適化した後、同変換後命
令列を変換後命令列ブロック306として変換後命令列
領域308上に保存する。
御部202は、動的命令変換部203を呼び出す。動的
命令変換部203は、分岐命令で区切られる一連の元命
令列(ブロック)中の各命令を本実行機構を有するハー
ドウェアプラットフォームの命令列に置換え、生成した
変換後命令列を必要に応じて最適化した後、同変換後命
令列を変換後命令列ブロック306として変換後命令列
領域308上に保存する。
【0021】その後、動的命令変換部203は、制御を
実行制御部202に戻し、実行制御部202は、当該新
規に生成された変換後命令列ブロック306を直接実行
した後処理301に戻る。実行制御部202は、以上の
処理をプログラム終了まで繰り返す。なお,以上で説明
した処理の分担は一例であり、異なる処理分担の例もあ
り得る。
実行制御部202に戻し、実行制御部202は、当該新
規に生成された変換後命令列ブロック306を直接実行
した後処理301に戻る。実行制御部202は、以上の
処理をプログラム終了まで繰り返す。なお,以上で説明
した処理の分担は一例であり、異なる処理分担の例もあ
り得る。
【0022】上記処理フローは、1つの処理流で実現さ
れている。このため、動的命令変換部203における命
令変換及び最適化処理は元命令列実行処理にとってオー
バヘッドとなり、元命令列処理性能を低下させる。
れている。このため、動的命令変換部203における命
令変換及び最適化処理は元命令列実行処理にとってオー
バヘッドとなり、元命令列処理性能を低下させる。
【0023】また、上記IBM社のBOAやTrans
meta社のCrusoeは、基本アーキテクチャにV
LIW(Very long Instruction
Word)方式を採用して、変換後命令列の命令レベ
ル並列処理による高速処理、プロセッサ自体の高速周波
数での動作、低消費電力化を実現することを狙っている
が、上記の動的命令変換部203における命令変換及び
最適化処理のオーバヘッドの削減は必ずしも十分でな
く、更なる削減が望まれる。また、LSIテクノロジの
将来動向を考慮すると、プロセッサの高速周波数動作や
低消費電力化という目的に対しても、VLIW方式が最
良の方式であるとは必ずしも言えない。
meta社のCrusoeは、基本アーキテクチャにV
LIW(Very long Instruction
Word)方式を採用して、変換後命令列の命令レベ
ル並列処理による高速処理、プロセッサ自体の高速周波
数での動作、低消費電力化を実現することを狙っている
が、上記の動的命令変換部203における命令変換及び
最適化処理のオーバヘッドの削減は必ずしも十分でな
く、更なる削減が望まれる。また、LSIテクノロジの
将来動向を考慮すると、プロセッサの高速周波数動作や
低消費電力化という目的に対しても、VLIW方式が最
良の方式であるとは必ずしも言えない。
【0024】
【発明が解決しようとする課題】以下3点が本発明によ
って解決しようとする課題である。 (1)上記動的命令変換部203における命令変換及び
最適化処理のオーバヘッドを削減する。 (2)異種プロセッサ用プログラムの先読み処理を他の
解釈実行処理、命令変換・最適化処理と並列に行い、プ
ログラム処理の性能を向上する。 (3)変換後命令列の高速処理、プロセッサの高速周波
数動作及びプロセッサ低消費電力化をVLIW方式より
も効果的に実現する。
って解決しようとする課題である。 (1)上記動的命令変換部203における命令変換及び
最適化処理のオーバヘッドを削減する。 (2)異種プロセッサ用プログラムの先読み処理を他の
解釈実行処理、命令変換・最適化処理と並列に行い、プ
ログラム処理の性能を向上する。 (3)変換後命令列の高速処理、プロセッサの高速周波
数動作及びプロセッサ低消費電力化をVLIW方式より
も効果的に実現する。
【0025】
【課題を解決するための手段】上記課題を解決するため
に、本発明の動的命令変換機能を有するプロセッサシス
テムは、異種ハードウェアプラットフォーム向けの命令
バイナリコードプログラムを動的に自身の命令バイナリ
コードに変換しながらプログラム実行を行う際、当該異
種ハードウェアプラットフォーム向けの命令バイナリコ
ードプログラムから1命令づつ読み出し、該1命令づつ
をソフトウェアを介して解釈実行する処理流と、前記1
命令づつ必要に応じて自身の命令バイナリコードに変換
し、前記1命令づつ蓄積し、蓄積された命令バイナリコ
ード列を必要に応じて最適化する処理流を独立させてこ
れらを並列に処理することを特徴とする。
に、本発明の動的命令変換機能を有するプロセッサシス
テムは、異種ハードウェアプラットフォーム向けの命令
バイナリコードプログラムを動的に自身の命令バイナリ
コードに変換しながらプログラム実行を行う際、当該異
種ハードウェアプラットフォーム向けの命令バイナリコ
ードプログラムから1命令づつ読み出し、該1命令づつ
をソフトウェアを介して解釈実行する処理流と、前記1
命令づつ必要に応じて自身の命令バイナリコードに変換
し、前記1命令づつ蓄積し、蓄積された命令バイナリコ
ード列を必要に応じて最適化する処理流を独立させてこ
れらを並列に処理することを特徴とする。
【0026】さらに、上記命令バイナリコード列の最適
化において、繰り返し処理や手続き呼出し処理などを並
列に実行出来るように複数処理流を生成するように新た
な命令バイナリコード列を構成し、上記解釈実行する処
理流及び上記最適化する処理流とは別に、前記異なるハ
ードウェアプラットフォーム向けの命令バイナリコード
プログラムをキャッシュメモリに先読みする処理流を独
立させ、上記解釈実行する処理流及び上記最適化する処
理流と並列に処理することを特徴とする。
化において、繰り返し処理や手続き呼出し処理などを並
列に実行出来るように複数処理流を生成するように新た
な命令バイナリコード列を構成し、上記解釈実行する処
理流及び上記最適化する処理流とは別に、前記異なるハ
ードウェアプラットフォーム向けの命令バイナリコード
プログラムをキャッシュメモリに先読みする処理流を独
立させ、上記解釈実行する処理流及び上記最適化する処
理流と並列に処理することを特徴とする。
【0027】また、上記最適化する処理流が所定の単位
の命令バイナリコード列最適化を完了する毎に、前記最
適化した命令バイナリコード列をその最適化完了時点で
上記解釈実行する処理流が実行している命令コードと入
れ替え、前記解釈実行する処理流は異なるハードウェア
プラットフォーム向けの命令バイナリコードプログラム
の各命令解釈実行時に前記1命令に対応する最適化変換
後命令バイナリコード列が存在する場合、前記最適化変
換後命令バイナリコード列を実行する機構を有し、さら
には、上記複数処理流を効率良く並列処理するために、
1個のLSIチップに複数のマイクロプロセッサを実装
するチップマルチプロセッサ形式、または、1個の命令
実行制御部で同時に複数の処理流を実行する形式で構成
される。
の命令バイナリコード列最適化を完了する毎に、前記最
適化した命令バイナリコード列をその最適化完了時点で
上記解釈実行する処理流が実行している命令コードと入
れ替え、前記解釈実行する処理流は異なるハードウェア
プラットフォーム向けの命令バイナリコードプログラム
の各命令解釈実行時に前記1命令に対応する最適化変換
後命令バイナリコード列が存在する場合、前記最適化変
換後命令バイナリコード列を実行する機構を有し、さら
には、上記複数処理流を効率良く並列処理するために、
1個のLSIチップに複数のマイクロプロセッサを実装
するチップマルチプロセッサ形式、または、1個の命令
実行制御部で同時に複数の処理流を実行する形式で構成
される。
【0028】さらに、本発明は少なくとも1つの処理流
から成る動的命令変換機能を有するプロセッサシステム
を備え、前記少なくとも1つの処理流は異種ハードウエ
アにて実行されるバイナリーコードプログラムを構成す
る複数の命令を順次先読みし、共有メモリに格納する処
理流1と、前記共有メモリに格納された前記複数の命令
を並列して同時に解釈実行する処理流2と、前記解釈実
行された前記複数の命令の変換を行う処理流3から構成
されることを特徴とする動的命令変換機能を有するプロ
セッサシステムを提供することである。
から成る動的命令変換機能を有するプロセッサシステム
を備え、前記少なくとも1つの処理流は異種ハードウエ
アにて実行されるバイナリーコードプログラムを構成す
る複数の命令を順次先読みし、共有メモリに格納する処
理流1と、前記共有メモリに格納された前記複数の命令
を並列して同時に解釈実行する処理流2と、前記解釈実
行された前記複数の命令の変換を行う処理流3から構成
されることを特徴とする動的命令変換機能を有するプロ
セッサシステムを提供することである。
【0029】さらに、本発明は少なくとも1つのマイク
ロプロセッサ、バス、共有メモリなどを備えた半導体デ
バイスにおいて、前記少なくとも1つのマイクロプロセ
ッサは、少なくとも1つの処理流を実行するように構成
され、前記少なくとも1つの処理流は異種ハードウエア
にて実行されるバイナリーコードプログラムを構成する
複数の命令を順次先読みし、前記共有メモリに格納する
処理流1と、前記共有メモリに格納された前記複数の命
令を並列して同時に解釈実行する処理流2と、前記解釈
実行された前記複数の命令の変換を行う処理流3から構
成され、前記少なくとも1つのマイクロプロセッサは、
並列して前記複数の命令を処理しうるように構成される
ことを特徴とする半導体デバイスを提供することにあ
る。
ロプロセッサ、バス、共有メモリなどを備えた半導体デ
バイスにおいて、前記少なくとも1つのマイクロプロセ
ッサは、少なくとも1つの処理流を実行するように構成
され、前記少なくとも1つの処理流は異種ハードウエア
にて実行されるバイナリーコードプログラムを構成する
複数の命令を順次先読みし、前記共有メモリに格納する
処理流1と、前記共有メモリに格納された前記複数の命
令を並列して同時に解釈実行する処理流2と、前記解釈
実行された前記複数の命令の変換を行う処理流3から構
成され、前記少なくとも1つのマイクロプロセッサは、
並列して前記複数の命令を処理しうるように構成される
ことを特徴とする半導体デバイスを提供することにあ
る。
【0030】しかも、本発明はコンピュータに複数の命
令の読み出しを行う手順と、該読み出した該複数の命令
の内、変換されていない命令に対し変換処理を行う手順
と、該変換処理された該命令を実行する手順を並列に実
行させるためのバイナリトランスレーションプログラム
を提供することにある。
令の読み出しを行う手順と、該読み出した該複数の命令
の内、変換されていない命令に対し変換処理を行う手順
と、該変換処理された該命令を実行する手順を並列に実
行させるためのバイナリトランスレーションプログラム
を提供することにある。
【0031】
【発明の実施の形態】本発明の実施の形態を図を用いな
がら説明する。
がら説明する。
【0032】図4に本発明に係わる動的命令変換機能を
含んだ異種ハードウェアプラットフォーム向け命令バイ
ナリコードプログラム実行機構の構成を示す。
含んだ異種ハードウェアプラットフォーム向け命令バイ
ナリコードプログラム実行機構の構成を示す。
【0033】本実行機構は、実行制御部401,元命令
列解釈実行部402,命令変換・最適化処理部403,
元命令列先読み処理部404の各処理部と,主記憶40
8上のデータ構造体である元命令列407,複数の変換
後命令列410を含む変換後命令列領域409,命令対
応表411等で構成される。
列解釈実行部402,命令変換・最適化処理部403,
元命令列先読み処理部404の各処理部と,主記憶40
8上のデータ構造体である元命令列407,複数の変換
後命令列410を含む変換後命令列領域409,命令対
応表411等で構成される。
【0034】命令対応表411は例えば図5のような形
で構成される。
で構成される。
【0035】命令対応表411中の各エントリー506
は、元命令列中の各命令に対応して用意され、例えば当
該命令の元命令列中での先頭からの相対アドレスを用い
て一意に識別される。
は、元命令列中の各命令に対応して用意され、例えば当
該命令の元命令列中での先頭からの相対アドレスを用い
て一意に識別される。
【0036】各エントリー506は、変換後命令列有無
ビットフィールド501,命令実行回数フィールド50
2,その他プロファイル情報フィールド503,対応変
換後命令列先頭アドレスフィールド504,実行中ビッ
トフィールド505などで構成される。
ビットフィールド501,命令実行回数フィールド50
2,その他プロファイル情報フィールド503,対応変
換後命令列先頭アドレスフィールド504,実行中ビッ
トフィールド505などで構成される。
【0037】変換後命令列有無ビットフィールド501
は、当該エントリー506に対応する元命令に対する変
換後命令列410が存在するか否かを表示する。当該変
換後命令列有無ビットフィールド501が、当該エント
リー506に対応した元命令に対する変換後命令列41
0が存在することを示す内容となっている(例えば
「1」を表示)場合、対応変換後命令列先頭アドレスフ
ィールド504の値は,当該変換後命令列410の主記
憶408における先頭アドレスである。
は、当該エントリー506に対応する元命令に対する変
換後命令列410が存在するか否かを表示する。当該変
換後命令列有無ビットフィールド501が、当該エント
リー506に対応した元命令に対する変換後命令列41
0が存在することを示す内容となっている(例えば
「1」を表示)場合、対応変換後命令列先頭アドレスフ
ィールド504の値は,当該変換後命令列410の主記
憶408における先頭アドレスである。
【0038】逆に、当該変換後命令列有無ビットフィー
ルド501が、当該エントリー506に対応した元命令
に対する変換後命令列410が存在しないことを示す内
容となっている(例えば「0」を表示)場合、対応変換
後命令列先頭アドレスフィールド504の値は無効であ
る。
ルド501が、当該エントリー506に対応した元命令
に対する変換後命令列410が存在しないことを示す内
容となっている(例えば「0」を表示)場合、対応変換
後命令列先頭アドレスフィールド504の値は無効であ
る。
【0039】また、命令実行回数フィールド502は、
当該エントリー506に対応する元命令の実行回数を表
示する。当該命令実行回数フィールド502の値が所定
の閾値を越えている場合、当該エントリー506に対応
した元命令が命令変換・最適化処理部403での命令変
換及び最適化の対象となる。
当該エントリー506に対応する元命令の実行回数を表
示する。当該命令実行回数フィールド502の値が所定
の閾値を越えている場合、当該エントリー506に対応
した元命令が命令変換・最適化処理部403での命令変
換及び最適化の対象となる。
【0040】さらに、その他プロファイル情報フィール
ド503は、当該エントリー506に対応した元命令の
実行時に発生した事象をプロファイルとして記録してお
くフィールドである。
ド503は、当該エントリー506に対応した元命令の
実行時に発生した事象をプロファイルとして記録してお
くフィールドである。
【0041】例えば当該元命令が条件分岐命令であった
場合,分岐条件成立/不成立といった情報が当該その他
プロファイル情報フィールド503に記録される。ま
た、命令変換・最適化処理部403での命令変換及び最
適化に有益なプロファイル情報なども当該その他プロフ
ァイル情報フィールド503に記録される。実行中ビッ
トフィールド505は、当該エントリー506に対応す
る元命令に対する変換後命令列410が存在する場合、
又は元命令列解釈実行部402が当該変換後命令列41
0を実行中である場合にその旨を示す値(例えば
「1」)を表示する。
場合,分岐条件成立/不成立といった情報が当該その他
プロファイル情報フィールド503に記録される。ま
た、命令変換・最適化処理部403での命令変換及び最
適化に有益なプロファイル情報なども当該その他プロフ
ァイル情報フィールド503に記録される。実行中ビッ
トフィールド505は、当該エントリー506に対応す
る元命令に対する変換後命令列410が存在する場合、
又は元命令列解釈実行部402が当該変換後命令列41
0を実行中である場合にその旨を示す値(例えば
「1」)を表示する。
【0042】これ以外の場合、実行中ビットフィールド
505は、無効値(例えば「0」)を表示している。各
フィールドの初期値については、変換後命令列有無ビッ
トフィールド501,実行中ビットフィールド505が
無効値(例えば「0」)であり,命令実行回数フィール
ド502の値は「0」、その他プロファイル情報フィー
ルド503も無効値である。
505は、無効値(例えば「0」)を表示している。各
フィールドの初期値については、変換後命令列有無ビッ
トフィールド501,実行中ビットフィールド505が
無効値(例えば「0」)であり,命令実行回数フィール
ド502の値は「0」、その他プロファイル情報フィー
ルド503も無効値である。
【0043】次に、図4に戻って各構成要素の概略動作
を説明する。
を説明する。
【0044】異種ハードウェアプラットフォーム向け命
令バイナリコードプログラム実行が開始されると、まず
実行制御部401が元命令列解釈実行部402,命令変
換・最適化処理部403,元命令列先読み処理部404
のそれぞれに対応する3つの独立した処理流を生成す
る。
令バイナリコードプログラム実行が開始されると、まず
実行制御部401が元命令列解釈実行部402,命令変
換・最適化処理部403,元命令列先読み処理部404
のそれぞれに対応する3つの独立した処理流を生成す
る。
【0045】元命令列先読み処理部404に対応する処
理流は、実行する元命令列407の先読み処理を行う。
理流は、実行する元命令列407の先読み処理を行う。
【0046】先読みされた元命令列は、元命令列のコピ
ー405という形でキャッシュメモリ406上に存在す
ることになる。元命令列解釈実行部402及び命令変換
・最適化処理部403が元命令列407をアクセスする
際には既にキャッシュメモリ406上に存在する当該元
命令列のコピー405をアクセスできる。
ー405という形でキャッシュメモリ406上に存在す
ることになる。元命令列解釈実行部402及び命令変換
・最適化処理部403が元命令列407をアクセスする
際には既にキャッシュメモリ406上に存在する当該元
命令列のコピー405をアクセスできる。
【0047】元命令列先読み処理部404の先読みした
元命令が分岐命令であった場合、元命令列先読み処理部
404は一旦分岐双方向の命令列を一定数先読みしてお
き,実際に当該分岐命令が元命令列解釈実行部402に
て処理されるのを待ち、その処理終了後当該分岐命令に
対応する命令対応表411中のその他プロファイル情報
フィールド503の値を参照して正しい分岐方向を特定
し,以降その方向で元命令列先読みを継続する。
元命令が分岐命令であった場合、元命令列先読み処理部
404は一旦分岐双方向の命令列を一定数先読みしてお
き,実際に当該分岐命令が元命令列解釈実行部402に
て処理されるのを待ち、その処理終了後当該分岐命令に
対応する命令対応表411中のその他プロファイル情報
フィールド503の値を参照して正しい分岐方向を特定
し,以降その方向で元命令列先読みを継続する。
【0048】元命令列解釈実行部402に対応する処理
流は、元命令列中の各命令の解釈実行または当該命令に
対応する変換後命令列410が存在する場合には当該変
換後命令列410の直接実行を行う。当該命令を解釈実
行するかあるいは当該命令に対応する変換後命令列41
0を直接実行するかは、命令対応表411の変換後命令
列有無ビットフィールド501の値を確認して判断す
る。
流は、元命令列中の各命令の解釈実行または当該命令に
対応する変換後命令列410が存在する場合には当該変
換後命令列410の直接実行を行う。当該命令を解釈実
行するかあるいは当該命令に対応する変換後命令列41
0を直接実行するかは、命令対応表411の変換後命令
列有無ビットフィールド501の値を確認して判断す
る。
【0049】当該命令に対応する変換後命令列有無ビッ
トフィールド501の値が対応する元命令に対する変換
後命令列410が存在しないことを示す内容となってい
る(例えば「0」を表示)場合、元命令列解釈実行部4
02は当該命令の解釈実行を行う。
トフィールド501の値が対応する元命令に対する変換
後命令列410が存在しないことを示す内容となってい
る(例えば「0」を表示)場合、元命令列解釈実行部4
02は当該命令の解釈実行を行う。
【0050】逆に,当該変換後命令列有無ビットフィー
ルド501の値が対応する元命令に対する変換後命令列
410が存在することを示す内容となっている(例えば
「1」を表示)場合、元命令列解釈実行部402は当該
命令に対応する対応変換後命令列先頭アドレスフィール
ド504の値から対応する変換後命令列410を特定
し,当該変換後命令列410を直接実行する。
ルド501の値が対応する元命令に対する変換後命令列
410が存在することを示す内容となっている(例えば
「1」を表示)場合、元命令列解釈実行部402は当該
命令に対応する対応変換後命令列先頭アドレスフィール
ド504の値から対応する変換後命令列410を特定
し,当該変換後命令列410を直接実行する。
【0051】この際、元命令列解釈実行部402は、当
該変換後命令列410の直接実行に先だって当該命令に
対応する実行中ビットフィールド505の値を有効(例
えば「1」)にし、さらに、当該変換後命令列410の
直接実行終了時に当該実行中ビットフィールド505の
値を無効(例えば「0」)にする。
該変換後命令列410の直接実行に先だって当該命令に
対応する実行中ビットフィールド505の値を有効(例
えば「1」)にし、さらに、当該変換後命令列410の
直接実行終了時に当該実行中ビットフィールド505の
値を無効(例えば「0」)にする。
【0052】また、元命令列解釈実行部402は、各元
命令に対応する解釈実行または変換後命令列直接実行を
実施する毎に当該元命令の実行回数を当該命令に対応す
る命令実行回数フィールド502に書き込み、さらに実
行プロファイル情報を当該命令に対応するその他プロフ
ァイル情報フィールド503に書き込む。
命令に対応する解釈実行または変換後命令列直接実行を
実施する毎に当該元命令の実行回数を当該命令に対応す
る命令実行回数フィールド502に書き込み、さらに実
行プロファイル情報を当該命令に対応するその他プロフ
ァイル情報フィールド503に書き込む。
【0053】命令変換・最適化処理部403に対応する
処理流は、元命令列の当該プロセッサシステム自身の命
令列への変換及び当該変換後命令列の最適化を行う。
処理流は、元命令列の当該プロセッサシステム自身の命
令列への変換及び当該変換後命令列の最適化を行う。
【0054】命令変換・最適化処理部403は、命令対
応表411中の各元命令に対応する命令実行回数フィー
ルド502を参照し、この値が所定の閾値を越えている
場合に、当該元命令を当該プロセッサシステム自身の命
令列に変換して変換後命令列410を主記憶408上の
変換後命令列領域409に作成し、さらに、前後の元命
令に対応する変換後命令列410が存在する場合、これ
らと合わせて最適化を行い,新たな最適化変換後命令列
410を作成する。
応表411中の各元命令に対応する命令実行回数フィー
ルド502を参照し、この値が所定の閾値を越えている
場合に、当該元命令を当該プロセッサシステム自身の命
令列に変換して変換後命令列410を主記憶408上の
変換後命令列領域409に作成し、さらに、前後の元命
令に対応する変換後命令列410が存在する場合、これ
らと合わせて最適化を行い,新たな最適化変換後命令列
410を作成する。
【0055】最適化に際しては、前後の元命令含めて対
応する命令対応表411中のその他プロファイル情報フ
ィールド503の値を参照し、最適化のためのヒント情
報として使用する。
応する命令対応表411中のその他プロファイル情報フ
ィールド503の値を参照し、最適化のためのヒント情
報として使用する。
【0056】変換後命令列410を作成した命令変換・
最適化処理部403は、対応する元命令に対する命令対
応表411中の変換後命令列有無ビットフィールド50
1の値を検査し、これが無効(例えば「0」)を示して
いる場合には、当該変換後命令列有無ビットフィールド
501の値を有効(例えば「1」)を示す値に書き換
え、対応する対応変換後命令列先頭アドレスフィールド
504に生成した変換後命令列410の主記憶408上
での先頭アドレスを書き込む。
最適化処理部403は、対応する元命令に対する命令対
応表411中の変換後命令列有無ビットフィールド50
1の値を検査し、これが無効(例えば「0」)を示して
いる場合には、当該変換後命令列有無ビットフィールド
501の値を有効(例えば「1」)を示す値に書き換
え、対応する対応変換後命令列先頭アドレスフィールド
504に生成した変換後命令列410の主記憶408上
での先頭アドレスを書き込む。
【0057】逆に、当該変換後命令列有無ビットフィー
ルド501の値が有効(例えば「1」)を示す値であっ
た場合には、さらに対応する実行中ビットフィールド5
05を検査し、これが無効(例えば「0」)を示してい
る場合には、対応する対応変換後命令列先頭アドレスフ
ィールド504に生成した変換後命令列410の主記憶
408上での先頭アドレスを書き込み、元々当該対応変
換後命令列先頭アドレスフィールド504で示されてい
た変換後命令列410のメモリ領域を解放する。
ルド501の値が有効(例えば「1」)を示す値であっ
た場合には、さらに対応する実行中ビットフィールド5
05を検査し、これが無効(例えば「0」)を示してい
る場合には、対応する対応変換後命令列先頭アドレスフ
ィールド504に生成した変換後命令列410の主記憶
408上での先頭アドレスを書き込み、元々当該対応変
換後命令列先頭アドレスフィールド504で示されてい
た変換後命令列410のメモリ領域を解放する。
【0058】この時、当該実行中ビットフィールド50
5の値が有効(例えば「1」)を示す値であった場合に
は,当該実行中ビットフィールド505の値が無効(例
えば「0」)を示す値になるのを待ってから対応する対
応変換後命令列先頭アドレスフィールド504に生成し
た変換後命令列410の主記憶408上での先頭アドレ
スを書き込み,元々当該対応変換後命令列先頭アドレス
フィールド504で示されていた変換後命令列410の
メモリ領域を解放する。
5の値が有効(例えば「1」)を示す値であった場合に
は,当該実行中ビットフィールド505の値が無効(例
えば「0」)を示す値になるのを待ってから対応する対
応変換後命令列先頭アドレスフィールド504に生成し
た変換後命令列410の主記憶408上での先頭アドレ
スを書き込み,元々当該対応変換後命令列先頭アドレス
フィールド504で示されていた変換後命令列410の
メモリ領域を解放する。
【0059】続いて、図1を用いて本発明に係わる動的
命令変換機能を含んだ異種ハードウェアプラットフォー
ム向け命令バイナリコードプログラム実行機構の処理フ
ローを詳細に説明する。
命令変換機能を含んだ異種ハードウェアプラットフォー
ム向け命令バイナリコードプログラム実行機構の処理フ
ローを詳細に説明する。
【0060】処理101で動的命令変換部による異種ハ
ードウェアプラットフォーム向け命令バイナリコードプ
ログラム実行が始まる。続いて処理102で処理流が3
つに分割される。
ードウェアプラットフォーム向け命令バイナリコードプ
ログラム実行が始まる。続いて処理102で処理流が3
つに分割される。
【0061】ここで生成された元命令列先読み処理流1
03,元命令列解釈実行処理流104,命令変換・最適
化処理流105の3処理流は並列に動作する。
03,元命令列解釈実行処理流104,命令変換・最適
化処理流105の3処理流は並列に動作する。
【0062】以降、個々の処理流の処理フローについて
説明する。まず、元命令列先読み処理流103の処理フ
ローを説明する。処理106で元命令列先読み処理が開
始される。
説明する。まず、元命令列先読み処理流103の処理フ
ローを説明する。処理106で元命令列先読み処理が開
始される。
【0063】次に処理107で元命令列の実行順に元命
令が先読みされる。処理108では先読みした元命令の
種類を解釈する。この元命令が分岐命令であるかどうか
が処理109で判定され、分岐命令であれば処理110
に、そうでなければ処理113に移る。処理110で
は、当該分岐命令の分岐双方向に元命令列の実行順に元
命令を先読みする。
令が先読みされる。処理108では先読みした元命令の
種類を解釈する。この元命令が分岐命令であるかどうか
が処理109で判定され、分岐命令であれば処理110
に、そうでなければ処理113に移る。処理110で
は、当該分岐命令の分岐双方向に元命令列の実行順に元
命令を先読みする。
【0064】次に処理111では、当該分岐命令に対応
する命令対応表411中のその他プロファイル情報フィ
ールド503を参照して正しい分岐方向を得る。処理1
12では、正しい分岐方向パスでの先読みをした元命令
の種類を解釈する。以降処理109に戻って処理が繰り
返される。
する命令対応表411中のその他プロファイル情報フィ
ールド503を参照して正しい分岐方向を得る。処理1
12では、正しい分岐方向パスでの先読みをした元命令
の種類を解釈する。以降処理109に戻って処理が繰り
返される。
【0065】一方、処理113では、次に先読みをすべ
き領域が元命令列プログラムの領域外であるかどうかを
判定する。領域外であれば、処理115に移り、元命令
列先読み処理を終了する。領域外でなければ、処理11
4に移る。処理114では、元命令列解釈実行処理流1
04が終了しているかどうかが判定される。処理が終了
していれば処理115に移り、元命令列先読み処理を終
了する。一方、終了していなければ処理107に移り以
降処理を繰り返す。
き領域が元命令列プログラムの領域外であるかどうかを
判定する。領域外であれば、処理115に移り、元命令
列先読み処理を終了する。領域外でなければ、処理11
4に移る。処理114では、元命令列解釈実行処理流1
04が終了しているかどうかが判定される。処理が終了
していれば処理115に移り、元命令列先読み処理を終
了する。一方、終了していなければ処理107に移り以
降処理を繰り返す。
【0066】次に、元命令列解釈実行処理流104の処
理フローを説明する。処理116で元命令列解釈実行処
理が始まる。
理フローを説明する。処理116で元命令列解釈実行処
理が始まる。
【0067】処理117では、元命令列の実行順で次の
(一番はじめの時は先頭の)元命令に対応する命令対応
表411中の変換後命令列有無ビットフィールド501
を参照し、当該元命令に対する変換後命令列410が存
在するか否かを判定する。変換後命令列410が存在す
れば、処理123に移り、存在しなければ処理119に
移る。処理119では当該元命令を解釈実行し、処理1
22に移る。処理123では、当該変換後命令列410
の実行に先だって当該元命令に対応する命令対応表41
1中の実行中ビットフィールド505に当該変換後命令
列410の実行中を示す値(例えば「1」)を書き込
む。
(一番はじめの時は先頭の)元命令に対応する命令対応
表411中の変換後命令列有無ビットフィールド501
を参照し、当該元命令に対する変換後命令列410が存
在するか否かを判定する。変換後命令列410が存在す
れば、処理123に移り、存在しなければ処理119に
移る。処理119では当該元命令を解釈実行し、処理1
22に移る。処理123では、当該変換後命令列410
の実行に先だって当該元命令に対応する命令対応表41
1中の実行中ビットフィールド505に当該変換後命令
列410の実行中を示す値(例えば「1」)を書き込
む。
【0068】次に処理118で当該変換後命令列410
の直接実行が開始される。当該直接実行処理中、処理1
20でマルチスレッド処理が開始された場合、処理12
1で当該マルチスレッド処理が実施される。当該変換後
命令列410が最後まで実行されると、処理139で当
該直接実行処理が終了したことが判定され、処理124
に移る。処理124では、当該元命令に対応する命令対
応表411中の実行中ビットフィールド505に当該変
換後命令列410を実行中で無いことを示す値(例えば
「0」)を書き込む。
の直接実行が開始される。当該直接実行処理中、処理1
20でマルチスレッド処理が開始された場合、処理12
1で当該マルチスレッド処理が実施される。当該変換後
命令列410が最後まで実行されると、処理139で当
該直接実行処理が終了したことが判定され、処理124
に移る。処理124では、当該元命令に対応する命令対
応表411中の実行中ビットフィールド505に当該変
換後命令列410を実行中で無いことを示す値(例えば
「0」)を書き込む。
【0069】次に、処理122では、当該元命令に対応
する命令対応表411中の命令実行回数フィールド50
2,その他プロファイル情報フィールド503に実行結
果を反映する。続く処理125では、次の元命令が存在
するかどうかを判定し、存在しなければ処理126に移
り、元命令列解釈実行処理を終了する。次の元命令が存
在する場合には,処理117に戻り,以降処理を繰り返
す。
する命令対応表411中の命令実行回数フィールド50
2,その他プロファイル情報フィールド503に実行結
果を反映する。続く処理125では、次の元命令が存在
するかどうかを判定し、存在しなければ処理126に移
り、元命令列解釈実行処理を終了する。次の元命令が存
在する場合には,処理117に戻り,以降処理を繰り返
す。
【0070】続いて、命令変換・最適化処理流105の
処理フローを説明する。処理127で命令変換・最適化
処理が開始される。
処理フローを説明する。処理127で命令変換・最適化
処理が開始される。
【0071】処理128では、命令対応表411中の命
令実行回数フィールド502,その他プロファイル情報
フィールド503を順次参照する。処理129では、当
該命令実行回数フィールド502の値が所定の閾値を越
えているかどうかが判定され,閾値を越えている場合に
は、処理130に移り、閾値を越えていない場合には処
理128に戻る。
令実行回数フィールド502,その他プロファイル情報
フィールド503を順次参照する。処理129では、当
該命令実行回数フィールド502の値が所定の閾値を越
えているかどうかが判定され,閾値を越えている場合に
は、処理130に移り、閾値を越えていない場合には処
理128に戻る。
【0072】処理130では、当該命令実行回数フィー
ルド502の値が所定の閾値を越えている命令対応表4
11中のエントリー506に対応する元命令の命令変換
を実施し、変換後命令列410を主記憶408における
変換後命令列領域に生成する。
ルド502の値が所定の閾値を越えている命令対応表4
11中のエントリー506に対応する元命令の命令変換
を実施し、変換後命令列410を主記憶408における
変換後命令列領域に生成する。
【0073】なお、当該変換後命令列410生成時に
は、当該元命令に対応する命令対応表411中のその他
プロファイル情報フィールド503の値を変換後命令列
最適化のための情報として使用する。
は、当該元命令に対応する命令対応表411中のその他
プロファイル情報フィールド503の値を変換後命令列
最適化のための情報として使用する。
【0074】続いて、処理131で、当該元命令の前後
の元命令に対応する変換後命令列410が存在した場
合,それらの変換後命令列410を合わせて再度最適化
処理を実施する。
の元命令に対応する変換後命令列410が存在した場
合,それらの変換後命令列410を合わせて再度最適化
処理を実施する。
【0075】最適化処理において、処理132でマルチ
スレッド処理化した方がプログラムの処理効率が上がる
と判定された場合,処理133でマルチスレッド処理化
を実施する。
スレッド処理化した方がプログラムの処理効率が上がる
と判定された場合,処理133でマルチスレッド処理化
を実施する。
【0076】続いて、処理134で当該元命令に対応す
る命令対応表411中の変換後命令列有無ビットフィー
ルド501に変換後命令列410が存在することを示す
値(例えば「1」)を書き込み、さらに,同エントリー
506の対応変換後命令列先頭アドレスフィールド50
4に当該変換後命令列410の主記憶408における先
頭アドレスを書き込む。
る命令対応表411中の変換後命令列有無ビットフィー
ルド501に変換後命令列410が存在することを示す
値(例えば「1」)を書き込み、さらに,同エントリー
506の対応変換後命令列先頭アドレスフィールド50
4に当該変換後命令列410の主記憶408における先
頭アドレスを書き込む。
【0077】処理135では、当該元命令に対応する命
令対応表411中の実行中ビットフィールド505を参
照し、対応する旧変換後命令列が実行中であるかどうか
を判定する。
令対応表411中の実行中ビットフィールド505を参
照し、対応する旧変換後命令列が実行中であるかどうか
を判定する。
【0078】実行中であれば実行終了するまで待つ。実
行中でなければ、処理136にて当該旧変換後命令列4
10のメモリ領域を解放し,廃棄する。
行中でなければ、処理136にて当該旧変換後命令列4
10のメモリ領域を解放し,廃棄する。
【0079】次に処理137では、元命令列解釈実行処
理が終了しているかどうかを判定し、終了していれば処
理138に移って命令変換・最適化処理を終了する。元
命令列解釈実行処理が終了していなければ、処理128
に戻って以降処理を繰り返す。
理が終了しているかどうかを判定し、終了していれば処
理138に移って命令変換・最適化処理を終了する。元
命令列解釈実行処理が終了していなければ、処理128
に戻って以降処理を繰り返す。
【0080】以上が本発明に係わる動的命令変換機能を
含んだ異種ハードウェアプラットフォーム向け命令バイ
ナリコードプログラム実行機構の処理フローである。
含んだ異種ハードウェアプラットフォーム向け命令バイ
ナリコードプログラム実行機構の処理フローである。
【0081】ここで、前述される最適化処理とは、変換
後命令の並べ替え及び変換後命令数の削減等により命令
コードをコンパイラ等のソフトウエアを通して実行コー
ド化した時の実行スピード向上を目指した処理に相当す
る。
後命令の並べ替え及び変換後命令数の削減等により命令
コードをコンパイラ等のソフトウエアを通して実行コー
ド化した時の実行スピード向上を目指した処理に相当す
る。
【0082】さらに、マルチスレッド処理とは、従来は
プログラムの各命令を順次実行するのに対し、各命令を
各々のマイクロプロセッサにて並列に同時実行すること
による処理能率向上を目指した処理に相当する。
プログラムの各命令を順次実行するのに対し、各命令を
各々のマイクロプロセッサにて並列に同時実行すること
による処理能率向上を目指した処理に相当する。
【0083】次に、図7,図8を用いて、元命令列先読
み処理流103,元命令列解釈実行処理流104,およ
び命令変換・最適化処理流105の相関関係を共有デー
タ構造へのアクセスに着目して説明する。
み処理流103,元命令列解釈実行処理流104,およ
び命令変換・最適化処理流105の相関関係を共有デー
タ構造へのアクセスに着目して説明する。
【0084】図7は、キャッシュメモリ406上に生成
される元命令列のコピー405へのアクセスに関する各
処理流の相関関係を示す。元命令列のコピー405は、
元命令列先読み処理流103の処理107及び処理11
0における元命令先読みによってキャッシュメモリ40
6上に生成される。この元命令列のコピー405は,元
命令列解釈実行処理流104の処理119,および命令
変換・最適化処理流105の処理130における元命令
読み出し時にアクセスされる。
される元命令列のコピー405へのアクセスに関する各
処理流の相関関係を示す。元命令列のコピー405は、
元命令列先読み処理流103の処理107及び処理11
0における元命令先読みによってキャッシュメモリ40
6上に生成される。この元命令列のコピー405は,元
命令列解釈実行処理流104の処理119,および命令
変換・最適化処理流105の処理130における元命令
読み出し時にアクセスされる。
【0085】図8は、主記憶408上に生成される命令
対応表411のエントリー506の変換後命令列有無ビ
ットフィールド501,命令実行回数フィールド50
2,その他プロファイル情報フィールド503,対応変
換後命令列先頭アドレスフィールド504,実行中ビッ
トフィールド505の各フィールドと、主記憶408内
の変換後命令列領域409上に生成される変換後命令列
410へのアクセスに関する各処理流の相関関係を示
す。
対応表411のエントリー506の変換後命令列有無ビ
ットフィールド501,命令実行回数フィールド50
2,その他プロファイル情報フィールド503,対応変
換後命令列先頭アドレスフィールド504,実行中ビッ
トフィールド505の各フィールドと、主記憶408内
の変換後命令列領域409上に生成される変換後命令列
410へのアクセスに関する各処理流の相関関係を示
す。
【0086】まず第1に変換後命令列有無ビットフィー
ルド501は、命令変換・最適化処理流105の処理1
34によって値が更新され、元命令列解釈実行処理流1
04の処理117で参照される。
ルド501は、命令変換・最適化処理流105の処理1
34によって値が更新され、元命令列解釈実行処理流1
04の処理117で参照される。
【0087】次に命令実行回数フィールド502は、元
命令列解釈実行処理流104の処理122によって値が
更新され、命令変換・最適化処理流105の処理128
から処理129までの処理群802で参照される。その
他プロファイル情報フィールド503は、元命令列解釈
実行処理流104の処理122によって値が更新され、
元命令列先読み処理流103の処理111及び命令変換
・最適化処理流105の処理130から処理133まで
の処理群801によって参照される。
命令列解釈実行処理流104の処理122によって値が
更新され、命令変換・最適化処理流105の処理128
から処理129までの処理群802で参照される。その
他プロファイル情報フィールド503は、元命令列解釈
実行処理流104の処理122によって値が更新され、
元命令列先読み処理流103の処理111及び命令変換
・最適化処理流105の処理130から処理133まで
の処理群801によって参照される。
【0088】対応変換後命令列先頭アドレスフィールド
504は,命令変換・最適化処理流105の処理134
によって値が更新され、元命令列解釈実行処理流104
の処理118から処理139までの処理群803で参照
される。
504は,命令変換・最適化処理流105の処理134
によって値が更新され、元命令列解釈実行処理流104
の処理118から処理139までの処理群803で参照
される。
【0089】さらに、実行中ビットフィールド505
は、元命令列解釈実行処理流104の処理123及び処
理124によって値が更新され、命令変換・最適化処理
流105の処理135で参照される。
は、元命令列解釈実行処理流104の処理123及び処
理124によって値が更新され、命令変換・最適化処理
流105の処理135で参照される。
【0090】最後に変換後命令列410は、命令変換・
最適化処理流105の処理130から処理133までの
処理群801によって生成され、元命令列解釈実行処理
流104の処理118から処理139までの処理群80
3で参照される。
最適化処理流105の処理130から処理133までの
処理群801によって生成され、元命令列解釈実行処理
流104の処理118から処理139までの処理群80
3で参照される。
【0091】ここで元命令列解釈実行処理流104によ
る実行処理中の変換後命令列と命令変換・最適化処理流
105による変換後命令列の最適化後の新規変換後命令
列との間で変換後命令列の入れ替え処理を行う際、排他
制御(すなわち、主記憶に内在する共有メモリを処理流
104及び処理流105などが利用する場合、一方の処
理流が使用している時、他方の処理流は共有メモリの使
用から排除される)が実施される。
る実行処理中の変換後命令列と命令変換・最適化処理流
105による変換後命令列の最適化後の新規変換後命令
列との間で変換後命令列の入れ替え処理を行う際、排他
制御(すなわち、主記憶に内在する共有メモリを処理流
104及び処理流105などが利用する場合、一方の処
理流が使用している時、他方の処理流は共有メモリの使
用から排除される)が実施される。
【0092】ここまででは、本発明に係わる動的命令変
換機能を含んだ異種ハードウェアプラットフォーム向け
命令バイナリコードプログラム実行機構の処理方式につ
いて説明した。
換機能を含んだ異種ハードウェアプラットフォーム向け
命令バイナリコードプログラム実行機構の処理方式につ
いて説明した。
【0093】引き続き以降では、以上のような処理を実
行可能なハードウェアプラットフォームについて記述す
る。
行可能なハードウェアプラットフォームについて記述す
る。
【0094】まず図6は、チップマルチプロセッサ60
5の構成例を示す。
5の構成例を示す。
【0095】本ハードウェアプラットフォームの具体例
については、Proceedings of Eigh
th International Conferen
ceon Architectural Suppor
t for Programming Languag
es and Operating Systems
(ASPLOS VIII)の58ページから69ペー
ジに掲載されている“Data Speculatio
n Support for a ChipMulti
processor”というタイトルの論文に開示され
ている。
については、Proceedings of Eigh
th International Conferen
ceon Architectural Suppor
t for Programming Languag
es and Operating Systems
(ASPLOS VIII)の58ページから69ペー
ジに掲載されている“Data Speculatio
n Support for a ChipMulti
processor”というタイトルの論文に開示され
ている。
【0096】チップマルチプロセッサ605中には、複
数のマイクロプロセッサ601と、これらのマイクロプ
ロセッサ601を互いに接続する相互結合網602,当
該相互結合網602に接続され、該複数マイクロプロセ
ッサ601で共有される共有キャッシュ603、およ
び、主記憶インタフェース604などが含まれる。
数のマイクロプロセッサ601と、これらのマイクロプ
ロセッサ601を互いに接続する相互結合網602,当
該相互結合網602に接続され、該複数マイクロプロセ
ッサ601で共有される共有キャッシュ603、およ
び、主記憶インタフェース604などが含まれる。
【0097】本発明の処理方式の下で発生する複数処理
流はそれぞれスレッドと呼ばれ、当該チップマルチプロ
セッサ605中の該複数マイクロプロセッサ601に各
々のスレッドが個別に割り当てることで、コンパイラ等
のソフトウエアを介して上記複数処理流の並列処理が実
現される。
流はそれぞれスレッドと呼ばれ、当該チップマルチプロ
セッサ605中の該複数マイクロプロセッサ601に各
々のスレッドが個別に割り当てることで、コンパイラ等
のソフトウエアを介して上記複数処理流の並列処理が実
現される。
【0098】次に、図9は、同時複数スレッド実行プロ
セッサ909の構成例を示す。
セッサ909の構成例を示す。
【0099】本ハードウェアプラットフォームの具体例
については、IEEE Micro誌1997年9−1
0月号12ページから19ページに掲載されている“S
imultaneous Multithreadin
g: A Platformfor Next−Gen
eration Processors”というタイト
ルの論文に開示されている。
については、IEEE Micro誌1997年9−1
0月号12ページから19ページに掲載されている“S
imultaneous Multithreadin
g: A Platformfor Next−Gen
eration Processors”というタイト
ルの論文に開示されている。
【0100】同時複数スレッド実行プロセッサ909
は、命令キャッシュ901,複数の命令フェッチ部90
2(命令フェッチ部902−1から命令フェッチ部90
2−n),命令選択合成部903,命令デコード部90
4,命令実行部905,複数のレジスタセット906
(レジスタセット906−1からレジスタセット906
−n),主記憶インタフェース907,データキャッシ
ュ908などからなる。
は、命令キャッシュ901,複数の命令フェッチ部90
2(命令フェッチ部902−1から命令フェッチ部90
2−n),命令選択合成部903,命令デコード部90
4,命令実行部905,複数のレジスタセット906
(レジスタセット906−1からレジスタセット906
−n),主記憶インタフェース907,データキャッシ
ュ908などからなる。
【0101】このうち、命令キャッシュ901,命令デ
コード部904,命令実行部905,主記憶インタフェ
ース907,データキャッシュ908は通常のマイクロ
プロセッサのものと基本的に同じである。
コード部904,命令実行部905,主記憶インタフェ
ース907,データキャッシュ908は通常のマイクロ
プロセッサのものと基本的に同じである。
【0102】特徴的なのは、複数の命令フェッチ部90
2(命令フェッチ部902−1から命令フェッチ部90
2−n),命令選択合成部903,及び複数のレジスタ
セット906(レジスタセット906−1からレジスタ
セット906−n)の各部である。複数の命令フェッチ
部902(命令フェッチ部902−1から命令フェッチ
部902−n),及び複数のレジスタセット906(レ
ジスタセット906−1からレジスタセット906−
n)は,それぞれ本発明の同時複数スレッド実行プロセ
ッサ909で同時に処理するスレッド毎に1つずつ割り
当てられる。
2(命令フェッチ部902−1から命令フェッチ部90
2−n),命令選択合成部903,及び複数のレジスタ
セット906(レジスタセット906−1からレジスタ
セット906−n)の各部である。複数の命令フェッチ
部902(命令フェッチ部902−1から命令フェッチ
部902−n),及び複数のレジスタセット906(レ
ジスタセット906−1からレジスタセット906−
n)は,それぞれ本発明の同時複数スレッド実行プロセ
ッサ909で同時に処理するスレッド毎に1つずつ割り
当てられる。
【0103】命令選択合成部903は、各時点での各ス
レッドの処理状況に応じて命令を取り出す命令フェッチ
部902を制限し、制限した当該命令フェッチ部902
が持つ実行可能命令候補の中から同時実行可能な組合せ
で複数命令を選択し,命令デコード部904に引き渡
す。
レッドの処理状況に応じて命令を取り出す命令フェッチ
部902を制限し、制限した当該命令フェッチ部902
が持つ実行可能命令候補の中から同時実行可能な組合せ
で複数命令を選択し,命令デコード部904に引き渡
す。
【0104】本発明の処理方式の下で発生する複数処理
流をそれぞれスレッドとして,当該同時複数スレッド実
行プロセッサ909中の該命令フェッチ部902(命令
フェッチ部902−1から命令フェッチ部902−
n),及び該レジスタセット906(レジスタセット9
06−1からレジスタセット906−n)の組に個別に
割り当てることで、上記複数処理流の並列処理が実現さ
れる。
流をそれぞれスレッドとして,当該同時複数スレッド実
行プロセッサ909中の該命令フェッチ部902(命令
フェッチ部902−1から命令フェッチ部902−
n),及び該レジスタセット906(レジスタセット9
06−1からレジスタセット906−n)の組に個別に
割り当てることで、上記複数処理流の並列処理が実現さ
れる。
【0105】以上が、本発明に係わる実施の形態であ
る.
る.
【0106】
【発明の効果】本発明によって、異種プロセッサ用プロ
グラムを動的に自身の命令列に変換しながらプログラム
実行を行う際、命令変換及び最適化処理のオーバヘッド
が削減できる。
グラムを動的に自身の命令列に変換しながらプログラム
実行を行う際、命令変換及び最適化処理のオーバヘッド
が削減できる。
【0107】さらには、異種プロセッサ用プログラムの
先読み処理を他の解釈実行処理及び命令変換・最適化処
理と並列に行うことで同プログラム処理の性能を向上で
きる。
先読み処理を他の解釈実行処理及び命令変換・最適化処
理と並列に行うことで同プログラム処理の性能を向上で
きる。
【0108】また、特に、チップマルチプロセッサ方式
との組み合わせによって、変換後命令列の高速処理,プ
ロセッサの高速周波数動作,及び低消費電力化を実現で
きる。
との組み合わせによって、変換後命令列の高速処理,プ
ロセッサの高速周波数動作,及び低消費電力化を実現で
きる。
【図1】本発明に係わる動的命令変換機能を含んだ異種
ハードウェアプラットフォーム向け命令バイナリコード
プログラム実行機構の処理フローを示す図。
ハードウェアプラットフォーム向け命令バイナリコード
プログラム実行機構の処理フローを示す図。
【図2】従来技術での動的命令変換機能を含んだ異種ハ
ードウェアプラットフォーム向け命令バイナリコードプ
ログラム実行機構の構成を示す図。
ードウェアプラットフォーム向け命令バイナリコードプ
ログラム実行機構の構成を示す図。
【図3】従来技術での動的命令変換機能を含んだ異種ハ
ードウェアプラットフォーム向け命令バイナリコードプ
ログラム実行機構の処理フローを示す図。
ードウェアプラットフォーム向け命令バイナリコードプ
ログラム実行機構の処理フローを示す図。
【図4】本発明に係わる動的命令変換機能を含んだ異種
ハードウェアプラットフォーム向け命令バイナリコード
プログラム実行機構の構成を示す図。
ハードウェアプラットフォーム向け命令バイナリコード
プログラム実行機構の構成を示す図。
【図5】本発明に係わる動的命令変換機能を含んだ異種
ハードウェアプラットフォーム向け命令バイナリコード
プログラム実行機構が使用する命令対応表の構成を示す
図。
ハードウェアプラットフォーム向け命令バイナリコード
プログラム実行機構が使用する命令対応表の構成を示す
図。
【図6】従来技術のチップマルチプロセッサの構成例を
示す図。
示す図。
【図7】本発明に係わるキャッシュメモリ上元命令列の
コピーを介した各処理流間の相互関係を示す図。
コピーを介した各処理流間の相互関係を示す図。
【図8】本発明に係わる主記憶上命令対応表及び変換後
命令列領域を介した各処理流間の相互関係を示す図。
命令列領域を介した各処理流間の相互関係を示す図。
【図9】従来技術の同時複数スレッド実行プロセッサの
構成例を示す図。
構成例を示す図。
103…元命令列先読み処理流,104…元命令列解釈
実行処理流,105…命令変換・最適化処理流,201
…解釈実行部,202…実行制御部,203…動的命令
変換部,204…特殊処理エミュレーション部,205
…プラットフォームOS及びハードウェア,306…変
換後命令列ブロック,308…変換後命令列領域,40
1…実行制御部,402…元命令列解釈実行部,403
…命令変換・最適化処理部,404…元命令列先読み処
理部,405…元命令列のコピー,406…キャッシュ
メモリ,407…元命令列,408…主記憶,409…
変換後命令列領域,410…変換後命令列,411…命
令対応表,501…変換後命令列有無ビットフィール
ド,502…命令実行回数フィールド,503…その他
プロファイル情報フィールド,504…対応変換後命令
列先頭アドレスフィールド,505…実行中ビットフィ
ールド,506…命令対応表エントリ,601…マイク
ロプロセッサ,602…相互結合網,603…共有キャ
ッシュ,604…主記憶インタフェース,605…チッ
プマルチプロセッサ,901…命令キャッシュ,902
−1〜902−n…命令フェッチ部1〜命令フェッチ部
N,903…命令選択合成部,904…命令デコード
部,905…命令実行部,906−1〜906−n…レ
ジスタセット1〜レジスタセットN,907…主記憶イ
ンタフェース,908…データキャッシュ,909…同
時複数スレッド実行プロセッサ。
実行処理流,105…命令変換・最適化処理流,201
…解釈実行部,202…実行制御部,203…動的命令
変換部,204…特殊処理エミュレーション部,205
…プラットフォームOS及びハードウェア,306…変
換後命令列ブロック,308…変換後命令列領域,40
1…実行制御部,402…元命令列解釈実行部,403
…命令変換・最適化処理部,404…元命令列先読み処
理部,405…元命令列のコピー,406…キャッシュ
メモリ,407…元命令列,408…主記憶,409…
変換後命令列領域,410…変換後命令列,411…命
令対応表,501…変換後命令列有無ビットフィール
ド,502…命令実行回数フィールド,503…その他
プロファイル情報フィールド,504…対応変換後命令
列先頭アドレスフィールド,505…実行中ビットフィ
ールド,506…命令対応表エントリ,601…マイク
ロプロセッサ,602…相互結合網,603…共有キャ
ッシュ,604…主記憶インタフェース,605…チッ
プマルチプロセッサ,901…命令キャッシュ,902
−1〜902−n…命令フェッチ部1〜命令フェッチ部
N,903…命令選択合成部,904…命令デコード
部,905…命令実行部,906−1〜906−n…レ
ジスタセット1〜レジスタセットN,907…主記憶イ
ンタフェース,908…データキャッシュ,909…同
時複数スレッド実行プロセッサ。
フロントページの続き (72)発明者 三木 良雄 東京都国分寺市東恋ヶ窪一丁目280番地 株式会社日立製作所中央研究所内 Fターム(参考) 5B033 AA11 AA12 BA03 5B081 AA07 CC32 DD01 (54)【発明の名称】 動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータに て実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した 半導体デバイス
Claims (13)
- 【請求項1】異なるハードウェアプラットフォーム向け
の命令バイナリコードプログラムを動的に自身の命令バ
イナリコードに変換しながらプログラム実行を行う動的
命令変換機能を有するプロセッサシステムにおいて,前
記異なるハードウェアプラットフォーム向けの命令バイ
ナリコードプログラムから1命令づつ読み出し,該1命
令づつをソフトウェアを介して解釈実行する処理流と,
前記1命令づつ必要に応じて自身の命令バイナリコード
に変換し,前記1命令づつ蓄積し,該蓄積された命令バ
イナリコード列を必要に応じて最適化する処理流を独立
させ,並列に処理することを特徴とする動的命令変換機
能を有するプロセッサシステム。 - 【請求項2】上記命令バイナリコード列の最適化におい
て,繰り返し処理や手続き呼出し処理などを並列に実行
出来るように複数処理流を生成するように新たな命令バ
イナリコード列を構成することを特徴とする請求項1の
動的命令変換機能を有するプロセッサシステム。 - 【請求項3】上記解釈実行する処理流及び上記最適化す
る処理流とは別に,前記異なるハードウェアプラットフ
ォーム向けの命令バイナリコードプログラムをキャッシ
ュメモリに先読みする処理流を独立させ,上記解釈実行
する処理流及び上記最適化する処理流と並列に処理する
ことを特徴とする請求項1及び2の動的命令変換機能を
有するプロセッサシステム。 - 【請求項4】上記最適化する処理流が,所定の単位の命
令バイナリコード列最適化を完了する毎に,前記最適化
した命令バイナリコード列をその最適化完了時点で上記
解釈実行する処理流が実行している命令コードと入れ替
え,前記解釈実行する処理流は,異なるハードウェアプ
ラットフォーム向けの命令バイナリコードプログラムの
各命令解釈実行時に前記1命令に対応する最適化変換後
命令バイナリコード列が存在する場合,前記最適化変換
後命令バイナリコード列を実行することを特徴とする請
求項1〜3の動的命令変換機能を有するプロセッサシス
テム。 - 【請求項5】1個のLSIチップに複数のマイクロプロ
セッサが実装されるチップマルチプロセッサとして構成
され,上記複数処理流をそれぞれ異なるマイクロプロセ
ッサで並列して同時に処理させることを特徴とする請求
項1〜4の動的命令変換機能を有するプロセッサシステ
ム。 - 【請求項6】1個の命令実行制御部で同時に複数の処理
流を実行するように構成され,上記複数処理流を並列に
実行することを特徴とする請求項1〜4の動的命令変換
機能を有するプロセッサシステム。 - 【請求項7】上記解釈実行する処理流による実行処理中
の変換後命令列と、上記最適化する処理流による前記変
換後命令列の最適化後の新規変換後命令列の間で変換後
命令列の入れ替え処理を行う際、排他制御を実施するこ
とを特徴とする請求項1〜3の動的命令変換機能を有す
るプロセッサシステム。 - 【請求項8】少なくとも1つの処理流から成る動的命令
変換機能を有するプロセッサシステムを備え、 前記少なくとも1つの処理流は異種ハードウエアにて実
行されるバイナリーコードプログラムを構成する複数の
命令を順次先読みし、共有メモリに格納する処理流1
と、前記共有メモリに格納された前記複数の命令を並列
して同時に解釈実行する処理流2と、前記解釈実行され
た前記複数の命令の変換を行う処理流3から構成される
ことを特徴とする動的命令変換機能を有するプロセッサ
システム。 - 【請求項9】請求項8に記載のプロセッサシステムにお
いて、前記処理流2は、前記複数の命令の内、既に変換
されている命令に対し、前記変換を実行することなく前
記解釈実行を行うことを特徴とする動的命令変換機能を
有するプロセッサシステム。 - 【請求項10】請求項8に記載のプロセッサシステムに
おいて、前記処理流3は、前記複数の命令の内、変換さ
れていない命令に対し該命令を変換し、該変換された該
命令の並べ替え又は該変換された該命令数の削減を行う
ことを特徴とする動的命令変換機能を有するプロセッサ
システム。 - 【請求項11】請求項8に記載のプロセッサシステムに
おいて、前記処理流1、前記処理流2及び前記処理流3
は互いに独立して並列に処理するように構成されること
を特徴とする動的命令変換機能を有するプロセッサシス
テム。 - 【請求項12】少なくとも1つのマイクロプロセッサ、
バス、共有メモリなどを備えた半導体デバイスにおい
て、 前記少なくとも1つのマイクロプロセッサは、少なくと
も1つの処理流を実行するように構成され、 前記少なくとも1つの処理流は異種ハードウエアにて実
行されるバイナリーコードプログラムを構成する複数の
命令を順次先読みし、前記共有メモリに格納する処理流
1と、前記共有メモリに格納された前記複数の命令を並
列して同時に解釈実行する処理流2と、前記解釈実行さ
れた前記複数の命令の変換を行う処理流3から構成さ
れ、 前記少なくとも1つのマイクロプロセッサは、並列して
前記複数の命令を処理しうるように構成されることを特
徴とする半導体デバイス。 - 【請求項13】コンピュータに複数の命令の読み出しを
行う手順と、該読み出した該複数の命令の内、変換され
ていない命令に対し変換処理を行う手順と、該変換処理
された該命令を実行する手順を並列に実行させるための
バイナリトランスレーションプログラム。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2001112354A JP2002312180A (ja) | 2001-04-11 | 2001-04-11 | 動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータにて実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した半導体デバイス |
| US09/940,983 US20040015888A1 (en) | 2001-04-11 | 2001-08-29 | Processor system including dynamic translation facility, binary translation program that runs in computer having processor system implemented therein, and semiconductor device having processor system implemented therein |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2001112354A JP2002312180A (ja) | 2001-04-11 | 2001-04-11 | 動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータにて実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した半導体デバイス |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2002312180A true JP2002312180A (ja) | 2002-10-25 |
Family
ID=18963790
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2001112354A Pending JP2002312180A (ja) | 2001-04-11 | 2001-04-11 | 動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータにて実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した半導体デバイス |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20040015888A1 (ja) |
| JP (1) | JP2002312180A (ja) |
Cited By (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2005032018A (ja) * | 2003-07-04 | 2005-02-03 | Semiconductor Energy Lab Co Ltd | 遺伝的アルゴリズムを用いたマイクロプロセッサ |
| JP2006525572A (ja) * | 2003-05-02 | 2006-11-09 | トランジティブ リミテッド | プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ |
| WO2008108129A1 (ja) * | 2007-03-06 | 2008-09-12 | Nec Corporation | メモリアクセス制御システム、メモリアクセス制御方法およびそのプログラム |
| JP2010108086A (ja) * | 2008-10-28 | 2010-05-13 | Nec Corp | Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム |
| JP2010516011A (ja) * | 2007-01-05 | 2010-05-13 | マイクロソフト コーポレーション | Hd−dvdタイミング・マークアップ実行の最適化 |
| JP2011141743A (ja) * | 2010-01-07 | 2011-07-21 | Nec Corp | マルチプロセッサ、これを用いたコンピュータシステム、およびマルチプロセッサの処理方法 |
| JP2012256309A (ja) * | 2011-06-08 | 2012-12-27 | Shijin Kogyo Sakushinkai | 異種計算機システムにおけるプロセッサブリッジ |
| JP2018106590A (ja) * | 2016-12-28 | 2018-07-05 | 日本電気株式会社 | 情報処理装置、情報処理方法、およびプログラム |
| JP2023021045A (ja) * | 2021-07-28 | 2023-02-09 | ソニー・インタラクティブエンタテインメント エルエルシー | レガシーゲーム用aotコンパイラ |
Families Citing this family (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7500240B2 (en) * | 2002-01-15 | 2009-03-03 | Intel Corporation | Apparatus and method for scheduling threads in multi-threading processors |
| US7953588B2 (en) * | 2002-09-17 | 2011-05-31 | International Business Machines Corporation | Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host |
| US7496494B2 (en) * | 2002-09-17 | 2009-02-24 | International Business Machines Corporation | Method and system for multiprocessor emulation on a multiprocessor host system |
| US8108843B2 (en) | 2002-09-17 | 2012-01-31 | International Business Machines Corporation | Hybrid mechanism for more efficient emulation and method therefor |
| US9043194B2 (en) * | 2002-09-17 | 2015-05-26 | International Business Machines Corporation | Method and system for efficient emulation of multiprocessor memory consistency |
| US20050028148A1 (en) * | 2003-08-01 | 2005-02-03 | Sun Microsystems, Inc. | Method for dynamic recompilation of a program |
| US7752633B1 (en) * | 2005-03-14 | 2010-07-06 | Seven Networks, Inc. | Cross-platform event engine |
| US7734895B1 (en) * | 2005-04-28 | 2010-06-08 | Massachusetts Institute Of Technology | Configuring sets of processor cores for processing instructions |
| GB2426083A (en) * | 2005-05-09 | 2006-11-15 | Sony Comp Entertainment Europe | Software emulation of a pipeline processor |
| CN100359472C (zh) * | 2005-07-01 | 2008-01-02 | 中国科学院计算技术研究所 | 一种二进制翻译中库函数调用的处理方法 |
| CN101373434B (zh) * | 2007-08-22 | 2012-01-25 | 国际商业机器公司 | 在多处理器系统中快速加载和运行程序映像的方法和系统 |
| CA2767852A1 (en) * | 2009-07-14 | 2011-01-20 | Unisys Corporation | Systems, methods, and computer programs for dynamic binary translation in an interpreter |
| US9052966B1 (en) * | 2011-12-02 | 2015-06-09 | Google Inc. | Migrating code from a source format to a target format |
| US9442559B2 (en) | 2013-03-14 | 2016-09-13 | Intel Corporation | Exploiting process variation in a multicore processor |
| US10409763B2 (en) * | 2014-06-30 | 2019-09-10 | Intel Corporation | Apparatus and method for efficiently implementing a processor pipeline |
| US10073718B2 (en) | 2016-01-15 | 2018-09-11 | Intel Corporation | Systems, methods and devices for determining work placement on processor cores |
| US12039337B2 (en) * | 2020-09-25 | 2024-07-16 | Advanced Micro Devices, Inc. | Processor with multiple fetch and decode pipelines |
-
2001
- 2001-04-11 JP JP2001112354A patent/JP2002312180A/ja active Pending
- 2001-08-29 US US09/940,983 patent/US20040015888A1/en not_active Abandoned
Cited By (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006525572A (ja) * | 2003-05-02 | 2006-11-09 | トランジティブ リミテッド | プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ |
| US7921413B2 (en) | 2003-05-02 | 2011-04-05 | International Business Machines Corporation | Architecture for generating intermediate representations for program code conversion |
| US8104027B2 (en) | 2003-05-02 | 2012-01-24 | International Business Machines Corporation | Architecture for generating intermediate representations for program code conversion |
| JP2005032018A (ja) * | 2003-07-04 | 2005-02-03 | Semiconductor Energy Lab Co Ltd | 遺伝的アルゴリズムを用いたマイクロプロセッサ |
| JP2010516011A (ja) * | 2007-01-05 | 2010-05-13 | マイクロソフト コーポレーション | Hd−dvdタイミング・マークアップ実行の最適化 |
| WO2008108129A1 (ja) * | 2007-03-06 | 2008-09-12 | Nec Corporation | メモリアクセス制御システム、メモリアクセス制御方法およびそのプログラム |
| JP4821907B2 (ja) * | 2007-03-06 | 2011-11-24 | 日本電気株式会社 | メモリアクセス制御システム、メモリアクセス制御方法およびそのプログラム |
| US8447933B2 (en) | 2007-03-06 | 2013-05-21 | Nec Corporation | Memory access control system, memory access control method, and program thereof |
| US8355901B2 (en) | 2008-10-28 | 2013-01-15 | Nec Corporation | CPU emulation system, CPU emulation method, and recording medium having a CPU emulation program recorded thereon |
| JP2010108086A (ja) * | 2008-10-28 | 2010-05-13 | Nec Corp | Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム |
| JP2011141743A (ja) * | 2010-01-07 | 2011-07-21 | Nec Corp | マルチプロセッサ、これを用いたコンピュータシステム、およびマルチプロセッサの処理方法 |
| JP2012256309A (ja) * | 2011-06-08 | 2012-12-27 | Shijin Kogyo Sakushinkai | 異種計算機システムにおけるプロセッサブリッジ |
| JP2018106590A (ja) * | 2016-12-28 | 2018-07-05 | 日本電気株式会社 | 情報処理装置、情報処理方法、およびプログラム |
| JP2023021045A (ja) * | 2021-07-28 | 2023-02-09 | ソニー・インタラクティブエンタテインメント エルエルシー | レガシーゲーム用aotコンパイラ |
| JP7436579B2 (ja) | 2021-07-28 | 2024-02-21 | ソニー・インタラクティブエンタテインメント エルエルシー | レガシーゲーム用aotコンパイラ |
Also Published As
| Publication number | Publication date |
|---|---|
| US20040015888A1 (en) | 2004-01-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2002312180A (ja) | 動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータにて実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した半導体デバイス | |
| JP3499252B2 (ja) | コンパイル装置及びデータ処理装置 | |
| US6367071B1 (en) | Compiler optimization techniques for exploiting a zero overhead loop mechanism | |
| US10248395B2 (en) | Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control | |
| US5901308A (en) | Software mechanism for reducing exceptions generated by speculatively scheduled instructions | |
| US10101978B2 (en) | Statically speculative compilation and execution | |
| JP2928695B2 (ja) | 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法 | |
| Schlansker et al. | EPIC: An architecture for instruction-level parallel processors | |
| JPH10187533A (ja) | キャッシュシステム、プロセッサ及びプロセッサを動作させる方法 | |
| CN1173262C (zh) | 虚拟机指令的优化字节码解释器 | |
| US7574588B2 (en) | Time-multiplexed speculative multi-threading to support single-threaded applications | |
| US7168076B2 (en) | Facilitating efficient join operations between a head thread and a speculative thread | |
| US6892280B2 (en) | Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system | |
| CN1466716A (zh) | 以辅助处理器预取用于主要处理器的指令的方法和装置 | |
| US7383402B2 (en) | Method and system for generating prefetch information for multi-block indirect memory access chains | |
| Peterson | Architectural and compiler support for effective instruction prefetching: a cooperative approach | |
| US7698534B2 (en) | Reordering application code to improve processing performance | |
| US7383401B2 (en) | Method and system for identifying multi-block indirect memory access chains | |
| JPH11242599A (ja) | コンピュータプログラム製品 | |
| JP2003140910A (ja) | Vliwプロセッサにおけるバイナリトランスレーション方法 | |
| CN114995884B (zh) | 指令退休单元、指令执行单元及相关装置和方法 | |
| JP3524024B2 (ja) | バイトコード実行装置およびその方法 | |
| US20100077145A1 (en) | Method and system for parallel execution of memory instructions in an in-order processor | |
| CN118672588A (zh) | 智能合约编译方法、系统、电子设备和目标代码运行方法 | |
| JP2002259119A (ja) | 階層型命令を実行する計算機 |