JP2004511041A - 変換した命令の再始動 - Google Patents
変換した命令の再始動 Download PDFInfo
- Publication number
- JP2004511041A JP2004511041A JP2002533061A JP2002533061A JP2004511041A JP 2004511041 A JP2004511041 A JP 2004511041A JP 2002533061 A JP2002533061 A JP 2002533061A JP 2002533061 A JP2002533061 A JP 2002533061A JP 2004511041 A JP2004511041 A JP 2004511041A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- sequence
- instruction set
- execution
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 claims abstract description 16
- 230000008859 change Effects 0.000 claims abstract description 8
- 230000008569 process Effects 0.000 claims abstract description 5
- 238000013507 mapping Methods 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000006243 chemical reaction Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 8
- 238000013459 approach Methods 0.000 description 7
- 230000007704 transition Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- YREOLPGEVLLKMB-UHFFFAOYSA-N 3-methylpyridin-1-ium-2-amine bromide hydrate Chemical compound O.[Br-].Cc1ccc[nH+]c1N YREOLPGEVLLKMB-UHFFFAOYSA-N 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000000839 emulsion Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 208000015181 infectious disease Diseases 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
Abstract
Description
この発明はデータ処理システムの分野に関する。特に、この発明は第1の命令セットの各命令を実行すべく動作可能なプロセッサ・コアと、第2の命令セットの各命令をプロセッサ・コアによる実行に対して好適な形式に変換すべく実行可能な命令変換器とを有するデータ処理システムに関する。
【0002】
ネイティブ(native)命令を有するプロセッサ・コアと関連して動作して、非ネイティブ(non−native)命令をプロセッサ・コアによる実行に対するネイティブ命令に変換することができる命令変換器を提供することが知られている。この種のアプローチはデータ処理システムの能力を拡張する上で魅力的であるが、或る一定の困難性と複雑化をもたらす。
【0003】
この種の問題はどのようにして割込み信号を処理するかである。処理システムはできるだけ迅速に各割込み信号に応答すべきことが望ましい。このことは実時間オペレーションを制御するシステムにおいて特に重要である。割込み待ち時間は限界性能パラメータとなる可能性があり、最悪の場合の状況を用いて測定される。従って、ネイティブ命令を実行する際、割込み信号が現在実行中のネイティブ命令の完了後直ちに応答されるように設定することが知られている。
【0004】
非ネイティブ命令をネイティブ命令に変換するシステムのコンテキストでは、単一の非ネイティブ命令を1つ以上のネイティブ命令に変換されることがしばしば起こる。そのため、単一の非ネイティブ命令を表すネイティブ命令のシーケンスの実行中に割込みが受信されると、非ネイティブ命令は部分的にしか完了されず、処理システムの状態は不確実であり得る。このことを処理する1つの方法は、割込み信号を受信すると直ちにトリガされて、割込み後の再始動に先立って状態を復元することができ、それによって部分的にしか完了していない非ネイティブ命令を完了に向けて進行させることができるように、処理システムの現在の状態を記憶する付加的ハードウェアを提供することである。しかしながら、この種のアプローチは付加的ハードウェアのオーバーヘッド、即ち、重要な付加的複雑化を招くという不利益を有し、割込みの処理に先立って処理システムの状態をセーブする必要性のために、割込み性能を本質的に劣化させ得る。
【0005】
代替的アプローチは各非ネイティブ命令を最小単位として扱う、即ち、非ネイティブ命令の全実行が完了させ後まで割込みが処理されないようにシステムを制御することである。このアプローチは割込み待ち時間にさらに逆インパクトを与える。
【0006】
命令セットと他の背景情報の間の変換に対する既知のシステムの例が以下のように見い出すことができる。米国特許明細書第5,805,895号、米国特許明細書第3,955,180号、米国特許明細書第5,970,242号、米国特許明細書第5,619,665号、米国特許明細書第5,826,089号、米国特許明細書第5,925,123号、米国特許明細書第5,875,336号、米国特許明細書第5,937,193号、米国特許明細書第5,953,520号、米国特許明細書第6,021,469号、米国特許明細書第5,568,646号、米国特許明細書第5,758,115号、米国特許明細書第5,367,685号、アイ・ビー・エム(IBM)技術開示公報、1988年3月、第308頁から第309頁、「低減命令セットコンピュータ用システム/370エミュレータ・アシスト・プロセッサ(System/370 Emulator Assist Processor For a Reduced Instruction Set Computer)」、IBM技術開示公報、1986年7月、第548頁から第549頁、「全機能シリーズ/1命令セットエミュレータ(Full Function Series/1 Instruction Set Emulator)」、IBM技術開示公報、1994年3月、第605頁から第606頁、「限定命令セットコンピュータ・プロセッサに関する実時間複雑命令セットコンピュータ・アーキテクチャ・ハードウェア・エミュレータ(Real−Time CISC Architecture HW Emulator On A RISC Processor)」、IBM技術開示公報、1998年3月、第272頁、「エミュレーション制御ブロックを使用した性能改良(Performance Improvement Using An EMULATION Control Block)」、IBM技術開示公報、1995年1月、第537頁から第540頁、「低減命令セットコンピュータ/サイクルシステムに関するコード・エミュレーション用の高速命令復号(Fast Instruction Decode For Code Emulation on Reduced Instruction Set Computer/Cycles Systems)」、IBM技術開示公報、1993年2月、第231頁から第234頁、「高性能二重アーキテクチャプロセッサ(High Performance Dual Architecture Processor)」、IBM技術開示公報、1989年3月、第40頁から第43頁、「システム/370 I/O チャネルプログラム・チャネル指令ワード先取り(System/370 I/O Channel Program Channel Command Word Prefetch)」、IBM技術開示公報、1985年6月、第305頁から第306頁、「完全マイクロコード制御式エミュレーション・アーキテクチャ(Fully Microcode−Controlled Emulation Architecture)」、IBM技術開示公報、1972年3月、第3074頁から第3076頁、「エミュレーション用演算コード及び状態処理(Op Code and Status Handling For Emulation)」、IBM技術開示公報、1982年8月、第954頁から第956頁、「残存する命令を符号化するのに適した大規模システム及び基本要素の最も頻繁に使用する命令を有するマイクロプロセッサのオンチップ・マイクロコーディング(On−Chip Microcoding of a Microprocessor With Most Frequency Used Instructions of Large System and Primitives Suitable for Coding Remaining Instructions)」、IBM技術開示公報、1983年4月、第5576頁から第5577頁、「エミュレーション命令(Emulation Instruction)」、非同期応答モード・システムアーキテクチャ(ARM System Architecture)(エス・ファーバー(S Furber)著)、コンピュータ・アーキテクチャ(Computer Architecture)、定量的アプローチ(A Quantitative Approach)(ヘネシー(Hennessy)及びパターソン(Patterson)著)、及びジャバ仮想マシーン仕様(The Java(登録商標) Virtual Machine Specification)(チム・リンドホルム(Tim Lindholm)及びフランク・イェーリン(Frank Yellin)著、第1版及び第2版)。
【0007】
最悪ケースの割込み待ち時間が安全限界パラメータとなり得る、エアバッグ制御システムまたはアンチロック・ブレークシステム等の実時間アプリケーションにこの種のシステムの使用を考える時、非ネイティブ命令を実行する際の低い割込みの待ち時間を達成する要求は重要な点となる。
【0008】
一態様から見れば、この発明はデータを処理する装置において、
第1の命令セットの各命令によって指定される通りに各オペレーションを実行するのに動作可能なプロセッサ・コアと、
第2の命令セットの各命令を前記第1の命令セットの各命令に対応する変換出力に変換するように動作可能な命令変換器であって、前記第2の命令セットのうちの少なくとも1つの命令が1つ以上の入力変数を使用して実行すべきオペレーションを指定してなる前記命令変換器と、
割込み信号に応答して、現在実行中のオペレーションの実行を完了した後に前記第1の命令セットの各命令に対応する各オペレーションの実行を中断する割込み処理ハンドラーと、
前記割込みの後に実行を再始動する再始動ロジックと、を具備し、
前記命令変換器は前記第1の命令セットの各命令に対応する変換器出力信号の1つ以上のセットのシーケンスを発生して、前記第2の命令セットのうちの前記少なくとも1つの命令を表すべく動作可能であり、この際、各シーケンスは前記シーケンス内の最後のオペレーションを実行するまでに前記1つ以上の入力変数に対して何らの変更も行わないものであって、
前記第2の命令セットのうちの少なくとも1つの命令を表すオペレーションのシーケンスの実行の際に割込みが発生した後、
(i)前記シーケンスでの最後のオペレーションの実行の始動に先立って前記割込みが生じたら、前記再始動ロジックは前記シーケンスの最後のオペレーションの実行を再始動し、かつ
(ii)前記シーケンスでの最後のオペレーションの実行を始動した後に前記割込みが生じたら、前記再始動ロジックは前記シーケンスに続く次の命令にて実行を再始動してなることを特徴とする前記装置を提供する。
【0009】
この発明は、非ネイティブな命令を、実行すべき複数のネイティブな命令のシーケンスであり、再始動に過度の困難を伴なうことなくネイティブな命令に対応するオペレーションの完了の後の割込みサービスを提供し得る形式に変換することを可能としている。この発明はこのことを変換されたオペレーションシーケンスが最後のオペレーションを実行するまで入力変数に対して如何なる変更も行わないように設定することによって達成する。このため、最後のオペレーションの実行の前に割込みが生じても、入力変数は変わることがないので非ネイティブな命令をそっくりそのまま再始動することができ、これに対して最後のオペレーションの実行を始動した後に割込みが生じたら、割込みが生じた非ネイティブ命令に続く次の命令から再始動ロジックを続けて行くことができる。
【0010】
第2の(非ネイティブな(non−native))命令セットの命令は第1の(ネイティブな(native))命令セットの命令に完全に変換することができることが認められよう。しかしながら、第2の命令セットの命令を第1の命令セットの命令と同様にプロセッサ・コアを制御可能な制御信号に変換することも可能である。第2の命令セットの命令が第1の命令セットの命令の能力を越える能力を有し、また、第2の命令セットの命令から得た制御信号が第1の命令セットの命令によってもたらされる機能を越えるようにプロセッサ・コアの動作を拡張制御することもまた可能である。
【0011】
再始動ロジックは専用のハードウェア部品であっても良いが、本発明の好ましい実施例では、再始動ロジックは命令変換器の一部分であり得る。命令変換器は非ネイティブ命令に対するオペレーションのシーケンスを制御する各変換器出力信号を生成するものであるから、割込みが生じた時に最後のオペレーションが既に始動されているか否かを容易に決定することができる。それに応じて、この情報を命令変換器内の再始動ロジックに提供して、非ネイティブ命令が完全に再始動されたか、或るいは次の命令が再始動されたかを決定する。
【0012】
割込みが生じた時にどのようにしてシステムを再始動すべきかに関する記録を採る便利な方法は、最後のオペレーションの実行により進められるポインタを有する再始動位置に対するポインタを記憶することである。このポインタは都合のよいことに現在変換中の命令を記憶するメモリ位置のメモリ・アドレスを指すプログラム・カウンタ値であって良い。
【0013】
本発明は多くの異なる型式の命令セットに適応可能であるが、第2の命令セットがスタック・オペランドがスタックに保持されると実行すべきオペレーションを指定するものである場合に特に有益である。この種のスタックベースのシステムは一般にスタックからそれらの入力オペランドを読み出すと共に、出力オペランドをスタックに書き込む。この様なオペレーションをエミュレートするとき、本発明は最後のオペレーションの実行が開始された後までスタック・オペランドは重ね書きされることはないことを保証する。同様にして、最後のオペレーションの実行が開始されるまでスタック・オペランドはスタックに加えられることはない。
【0014】
特定の非ネイティブ命令の実行形態を制御するシステムの入力変数はその非ネイティブ命令内で明快に宣言されたオペランドを越えて拡張し得ることが理解される。特に、システム環境の状態変数は所定の命令の実行形態に影響を及ぼし得るものであり、本発明は最後のオペレーションの実行が開始されるまでこの種のシステム状態変数も変化しないようにする。
【0015】
最後のオペレーションの実行までシステム状態は変化しないことを保証する必要性は有効な変換されたオペレーション・シーケンスを発生する上での制約であり得る。これにより、割込み待ち時間は保護されるが、非ネイティブな処理速度には強い影響がある。しかし、この影響は、変換可能な命令の型式または達成し得る変換されたシーケンスのコンパクト性に余り大きな制約を課すことなく、最後のオペレーションまで入力オペランドがスタックから除去されず、出力オペランドがスタックに加えられることがないように最後のオペレーションが実行されるまで更新されないマッピング状態に従って、プロセッサ・コアのレジスタ内に保持されたスタック・オペランドをスタック位置にマッピングすることにより、レジスタベースのプロセッサがスタックベースの命令をエミュレートするシステムにおいて、減し得る。
【0016】
別の態様から見れば、本発明はデータを処理する方法において、
第1の命令セットの命令によって指定される通りにオペレーションを実行する段階と、
第2の命令セットの命令を前記第1の命令セットの命令に対応する変換器出力信号に変換する段階であって、前記第2の命令セットのうちの少なくとも1つの命令が1つ以上の入力変数を使用して実行すべきオペレーションを指定してなる前記段階と、
割込み信号に応答して、現在実行中のオペレーションの実行を完了した後に前記第1の命令セットの命令に対応するオペレーションの実行を中断する段階と、
前記割込みの後に実行を再始動する段階と、を具備し、
前記変換する段階は前記第1の命令セットの命令に対応する変換器出力信号のうちの1つ以上のセットのシーケンスを発生して、前記第2の命令セットのうちの前記少なくとも1つの命令を表し、この際、シーケンスは前記シーケンス内の最後のオペレーションが実行されるまで前記1つ以上の入力変数には何らの変更も行われないものであって、
前記第2の命令セットの前記少なくとも1つの命令を表すオペレーションのシーケンスを実行する際に割込みが発生した後、
(i)前記シーケンスでの最後のオペレーションの実行を始動する前に前記割込みが発生したら、前記シーケンスの最初のオペレーションでの実行を再始動し、かつ
(ii)前記シーケンスでの最後のオペレーションの実行を始動した後に前記割込みが生じたら、前記シーケンスに続く次のシーケンスでの実行を再始動してなることを特徴とする前記方法を提供する。
【0017】
本発明はまた前記技術に従って汎用コンピュータを制御することができるコンピュータ・プログラムを生成するコンピュータ・プログラム製品を提供する。
【0018】
ここで、本発明の各実施例を添付図面を参照して例示的に説明することとする。
【0019】
図1はARMプロセッサに基づくシステムでの使用に好適な型式の第1の例の命令パイプライン30を示している。この命令パイプライン30は取出しステージ32、ネイティブ命令(ARM/Thumb命令)復号ステージ34、実行ステージ36、メモリ・アクセス・ステージ38及び書戻しステージ40を備えている。実行ステージ36、メモリ・アクセス・ステージ38及び書戻しステージ40は実質的に従来のものである。取出しステージ32の下流、及びネイティブ命令復号ステージ34の上流には、命令変換器ステージ42が設けられている。この命令変換器ステージ42は可変長のジャバ・バイトコード命令(Java(登録商標) bytecode instruction)をネイティブなARM命令に変換する有限状態マシーンである。命令変換器ステージ42は、多ステップ・オペレーションを実行することができ、それにより単一のジャバ・バイトコード命令は命令パイプライン30の残りの部分を送られてそのジャバ・バイトコード命令によって指定されるオペレーションを実行するARM命令のシーケンスを発生する。簡単なジャバ・バイトコード命令は単一のARM命令のみを要求してオペレーションを実行し得るのに対し、もっと復雑化したジャバ・バイトコード命令、またシステム環境状態が指示する環境では、複数のARM命令がジャバ・バイトコード命令によって指定されるオペレーションを提供するのに必要とされる。この多ステップ・オペレーションは取出しステージ32の下流に位置し、そのためメモリ・システムから複数の変換したARM命令またはジャバ・バイトコードの取り出しに電力は消費されない。各ジャバ・バイトコード命令は、ジャバ・バイトコード変換オペレーションをサポートするための付加的制約をメモリ・システム上に及ぼさない従来の方法でメモリ・システム内に記憶される。
【0020】
図示するように、命令変換器ステージ42にはバイパス経路が設けられている。命令変換モードで動作しない場合は、命令パイプライン30は命令変換器ステージ42をバイパスすると共に、本質的に変更のない方法で動作して、各ネイティブ命令の復号化をもたらすことができる。
【0021】
命令パイプライン30では、命令変換器ステージ42は対応するARM命令を完全に表すと共に、マルチプレクサを介してネイティブ命令復号器34に渡される変換器出力信号を発生するものとして図示されている。命令変換器42は、またネイティブ命令のデコーダに渡される幾つかの付加的制御信号を生成する。ネイティブ命令復号化内のビット空間の制約はネイティブ命令によって指定され得るオペランドの範囲に制限を課すこととなる。これらの制限は必ずしも非ネイティブ命令によって共有されない。付加的制御信号をもたらして、メモリ内に記憶されたネイティブ命令内で指定することが不可能な非ネイティブ命令から得た付加命令指定信号を渡すようになっている。例として、ネイティブ命令はネイティブ命令内の即時オペランド・フィールドとして使用される比較的少数のビットを提供するのに対して、非ネイティブ命令は拡張された範囲を許容し、これは付加的制御信号を使用することによって利用でき、即時オペランドの拡張された部分は、同じくネイティブ命令復号器34に渡される変換されたネイティブな命令とは別にネイティブ命令復号器34に渡される。
【0022】
図2は更なる命令パイプライン44を図示している。この例では、システムには非ネイティブ命令復号器50のみならず2つのネイティブ命令復号器46、48も備えられている。この非ネイティブ命令復号器50は非ネイティブ命令をサポートすべく設けられている実行ステージ52、メモリ・ステージ54及び書戻しステージ56によってオペレーション内で指定できるように制約されている。それに応じて、非ネイティブ命令復号器50は非ネイティブ命令をネイティブオペレーション(単一のネイティブオペレーションであってもネイティブオペレーションのシーケンスであって良い)に変換し、次いで適切な制御信号を実行ステージ52に供給して、これらの1つ以上のネイティブオペレーションを実行する。この例では、非ネイティブ命令復号器50はネイティブ命令を形成する信号を生成するのではなく、ネイティブ命令(または拡張されたネイティブ命令)オペレーションを指定する制御信号をもたらすことが認められよう。発生された制御信号はネイティブ命令復号器46、48によって発生された制御信号と一致しなくとも良い。
【0023】
動作の際、取出しステージ58によって取り出された命令は図示のデマルチプレクサを使用して特定の処理モードに応じて命令復号器46、48または50の内の1つに選択的に供給される。
【0024】
図3は命令パイプラインの取出しステ−ジをより詳細に概念的に図示している。取出しロジック60はメモリ・システムから固定長の命令ワードを取り出して、これらを命令ワード・バッファ62に供給する。この命令ワード・バッファ62は現在の命令ワード及び次の命令ワードの双方を記憶し得るという2つのサイドを有するスイング・バッファである。現在の命令ワードが完全に復号化されると共に、復号化が次の命令ワードに進む毎に、取出しロジック60は前の現在の命令ワードをメモリから取り出す次の命令ワードと置換するように機能する。即ち、スイング・バッファの各サイドは逐次的に記憶する各命令ワードをインターリーブ式に2つだけ増分することとなる。
【0025】
図示の例では、ジャバ・バイトコード命令の最大命令長さは3バイトである。従って、ワード・バッファ62の何れかのサイド内の任意の3つの隣合うバイトを選択して命令変換器64に供給することを可能にする3つのマルチプレクサが設けられている。ワード・バッファ62及び命令変換器64にはまたネイティブ命令を取り出して復号化する時に使用するバイパス経路66が設けられている。
【0026】
各命令ワードは一回メモリから取り出されてワード・バッファ62内に記憶されることが了知されよう。命令変換器64がジャバ・バイトコードのARM命令への変換を実行するので、単一の命令ワードはワード・バッファ62から読み出した多数のジャバ・バイトコードを有することができる。命令変換オペレーションは命令パイプライン内に制限されるので、複数回のメモリ・システムの読出しを必要とせず、かつメモリ・リソースを消費することなく或いは他の制約をメモリ・システムに課することなく、ネイティブ命令の可変長変換シーケンスを生成することができる。
【0027】
プログラム・カウンタ値は現在変換中の各ジャバ・バイトコードと関連している。このプログラム・カウンタ値はパイプラインの各ステージに沿って渡され、必要ならば、各ステージは処理中の特別のジャバ・バイトコードに関連してこの情報を使用することができる。複数のARM命令オペレーションのシーケンスに変換するジャバ・バイトコードに対するプログラム・カウンタ値は、そのシーケンス内の最後のARM命令オペレーションが実行され始めるまで増分されない。実行中のメモリ内の命令を直接指し続けるようにしてプログラム・カウンタ値を維持することによって、デバッキング及び分岐目標計算等のシステムの他の態様が効率良く簡易化される。
【0028】
図4は命令バッファ62から可変長のジャバ・バイトコード命令を読み出すことを概略的に図示している。最初の段階で、1の長さを有するジャバ・バイトコード命令が読み出されて復号化される。次の段階は、長さが3バイトでかつメモリから取り出された隣接する命令コード間にまたがるジャバ・バイトコード命令である。これらの命令コードの双方は命令バッファ62内に存在するので、命令の復号化及び処理は取り出された命令ワード間に可変長の命令がまたがることによって遅延されることはない。一旦3つのジャバ・バイトコードが命令バッファ62から読み出されると、以前取り出された命令ワードの再補充が始められ、後続の処理は既に存在している継続の命令ワードからのジャバ・バイトコードの復号化を続けることとなる。
【0029】
図4に図示された最後の段階は第2の3バイトコード命令の読み出しを図示している。これはまた、命令ワード間にまたがっている。先行する命令ワードの再補充が完了していなければ、適切な命令ワードが命令バッファ62に記憶されるまで、命令の読み出しはパイプラインの停止によって遅延される。幾つかの実施例では、この種の行為のためタイミングはパイプラインが決して停止しないというものである。大部分のジャバ・バイトコードは図示された例よりも短く、従って両方とも命令ワード間にまたがる連続した2つの復号化は相対的に異例なものであるため、この特殊な例は通常ほとんど生じないことが認められよう。有効な信号は、ジャバ・バイトコードが命令バッファ62から読み出される前に命令が適切に再補充されたか否かを知らせることを可能とするように命令バッファ62内の各命令ワードと関連付けることができる。
【0030】
図5はプロセッサ・コア104及びレジスタ・バンク106を備えたデータ処理システム102を示している。命令変換器108は命令経路内に設けられて、ジャバ仮想マシーン命令をプロセッサ・コア104に供給されるネイティブARM命令(またはこれに対応する各制御信号)に変換するようになっている。ネイティブなARM命令がアドレス指定可能メモリから取り出されている時には、命令変換器108はバイパスされる。このアドレス指定可能なメモリは、オフチップRAMメモリを有するキャッシュ・メモリ等のメモリ・システムであって良い。メモリ・システム、特にキャッシュ・メモリの下流に命令変換器108を設けることによって、メモリ・システムの記憶容量を効率的に使用することができる。何故ならば、変換を要求する濃密は命令をメモリ・システム内に記憶し、プロセッサ・コア104に渡す直前にネイティブ命令に拡張するのみであるからである。
【0031】
この例でのレジスタ・バンク106は16個の汎用32−ビットレジスタを含み、そのうちの4個がスタック・オペランドを記憶するのに割り当てられる。即ち、スタック・オペランドを記憶するレジスタセットはレジスタR0、R1、R2及びR3である。
【0032】
レジスタセットは空であっても、スタック・オペランドで部分的に充填されても、或いはスタック・オペランドで完全に充填されても良い。スタック・オペランドもトップを現在保持している特別なレジスタはレジスタセット内のどのレジスタであっても良い。こうして、命令変換器は、全てのレジスタが空である1つの状態と、レジスタセット内に保持されているそれぞれ異なる数のスタック・オペランドに対応し、スタック・オペランドのトップを保持する異なるレジスタを有する、4つの状態から成る4つのグループの17の異なるマッピング状態の内の何れか1つの状態となり得ることが認められよう。表1は命令変換器108に対する状態マッピングの17の異なる状態を図示している。スタック・オペランド記憶域に対して割り当てられるレジスタの数の差異、または各レジスタ内に保持されたデータ値の処理方法に関して特定のプロセッサ・コアが有する制約のため、マッピング状態は特定の実施に依存するものであり、表1は特定の一実施例として挙げられているに過ぎないことが認められよう。
【表1】
【0033】
表1の中で、状態値の最初の3ビットはレジスタセット内の空でないレジスタの数を示していることを認めることができる。状態値の最後の2ビットはスタック・オペランドのトップを保持するレジスタのレジスタ番号を示している。このようにして、状態値を容易に使用して、ハードウェア変換器またはソフトウェア変換器の動作を制御して、レジスタセットの現在の占有及びスタック・オペランドのトップの現在の位置を考慮することができる。
【0034】
図5に図示するように、ジャバ・バイトコードJ1、J2、J3のストリームはアドレス指定可能なメモリ・システムから命令変換器108に送られる。次いで、命令変換器108は他の変数だけでなく入力ジャバ・バイトコード及び命令変換器108の即時マッピング状態に依存してARM命令(または、恐らくは拡張された等価の制御信号)のストリームを出力する。図示された例はARM命令A11及びA12にマッピング中のジャバ・バイトコードJ1を示している。ジャバ・バイトコードJ2はARM命令A21、A22及びA23にマッピングする。最後に、ジャバ・バイトコードJ3はARM命令A31にマッピングする。ジャバ・バイトコードのおのおのは入力として1つ以上のスタック・オペランドを要求すると共に、出力として1つ以上のスタック・オペランドを生成するであろう。この例におけるプロセッサ・コア104は各レジスタ内に保持されたデータ値のみを処理することができるロード/ストアアーキテクチャを有するARMプロセッサ・コアであるとすると、命令変換器108は、処理される前に所望のスタック・オペランドを必要に応じてレジスタセットに取り出すか、またはレジスタセット内に現在保持されているスタック・オペランドをアドレス指定可能なメモリに記憶して、生成されるであろう結果としてのスタック・オペランドに対する空間を作り出すARM命令を生成するように設定される。各ジャバ・バイトコードは、ジャバ演算コードを表すARM命令を実行する前に使用可能でなければならないレジスタセット内の空レジスタの数を示す「空要求(require empty)」値と、実行に先立ってレジスタセット内に存在しなければならないスタック・オペランドの数を示す関連する「充填要求(require full)」を有するものと考え得ることが認められよう。
【0035】
表2は初期マッピング状態値、充填要求値、最終状態値及び関連するARM命令の間の関係を説明している。初期状態値及び最終状態値は表1のマッピング状態に対応している。命令変換器108は変換中の特定のジャバ・バイトコード(オペコード)と関連する充填要求値を決定する。命令変換器(108)は、これが有する初期マッピング状態に応じて、ジャバ・バイトコードを実行する前により多くのスタック・オペランドをレジスタセットにロードする必要があるか否かを決定する。表1はこの種のスタック・キャッシュロード動作の後に採られる最終マッピング状態と供に関連するARM命令(LDR命令)を使用してスタック・オペランドをレジスタセットにロードする必要があるか否かの決定に用いられ、ジャバ・バイトコードの充填要求値に用いられるテストと初期状態を一緒に示している。実際には、ジャバ・バイトコードの実行に先立って1つ以上のスタック・オペランドをレジスタセットにロードする必要があれば、おのおのがスタック・オペランドをレジスタセットのレジスタのうちの1つにロードする関連するARM命令を有する、複数のマッピング状態遷移が生じることとなる。他の実施例では、単一の状態遷移で複数のスタック・オペランドをロードし、そのためマッピング状態変化を表2に示すものを越えるようにすることが可能である。
【表2】
【0036】
表2から判るように、スタック・オペランドを記憶するレジスタセットにロードされた新しいスタック・オペランドはスタック・オペランドの新しいトップを形成することとなり、これは、初期状態に応じてレジスタセット内のレジスタのうちの特定の1つにロードされることとなる。
【0037】
表3は同様に、初期状態、空要求値、最終値、及び特定のジャバ・バイトコードの空要求値がジャバ・バイトコードを実行する前に必ず初期状態が与えられなければならない時、レジスタセット内の或るレジスタを空にして初期状態及び最終状態の間を移動させる関連したARM命令の間の関係を説明している。STR命令でアドレス指定可能なメモリに書き出された特定のレジスタ値は、レジスタのうちのどれがスタック・オペランドの現在のトップであるかに応じて変化することとなる。
【表3】
【0038】
前述した例のシステムでは、充填要求及び空要求条件は相互に排他的、即ち、命令変換器が変換している特定のジャバ・バイトコードに対してどの時点においても、充填要求または空要求条件の内の一方のみが真であることができることが認められよう。ハードウェア命令変換器108と供に用いられることが選択された命令と一緒に命令変換器108によって使用される命令テンプレートは、この相互に排他的な要求を満たし得るように選択される。もしこの要求が適切でないと、要求した通りに各レジスタ内に実行の結果を保持できるようにすべくジャバ・バイトコードを表す命令を実行した後に十分な空のレジスタを使用可能にし得ないレジスタセット内に存在する複数の入力スタック・オペランドを特定のジャバ・バイトコードが要求するという状況が生じ得る。
【0039】
所定のジャバ・バイトコードは消費されたスタック・オペランドの数と発生したスタック・オペランドの数の間の差分を表す全体の正味のスタック動作を有することとなることが認められよう。消費されたスタック・オペランドの数は実行に先立つ要求であり、また発生したスタック・オペランドの数は実行後の要求であるので、各ジャバ・バイトコードと関連する充填要求値及び空要求値は、正味の全体の動作が本質的に満たされるとしても、そのバイトコードの実行に先立って満足されなければならない。表4は初期状態、全体のスタック動作、最終状態、及びレジスタ使用及びスタック・オペランドのトップ(TOS:top of stack operand)の相対的位置の変化の間の関係を説明している。ジャバ・バイトコードの充填要求値及び空要求値に応じて所定のジャバ・バイトコードに対する必須条件を確定するため、表4に示されている状態遷移を実行することに先立って表2または表3に示した状態遷移のうちの1つ以上を実行しなければならない。
【表4】
【0040】
表2、表3及び表4に示した状態及び条件の間の関係は単一の状態遷移表または状態図に結合し得るが、以上では明瞭化のために個別に示されてきたことが認められよう。
【0041】
異なる状態、条件、及び正味の動作の間の関係は命令変換器108の動作の態様を制御する(有限状態マシーンとしての)ハードウェア状態マシーンを形成するのに使用することができる。代替的に、これらの関係はソフトウェアまたはハードウェア及びソフトウェアの組合わせによってモデル化することができよう。
【0042】
部分集合の各ジャバ・バイトコードに対して、表2、表3及び表4に関連して使用し得るそのバイトコードに対する関連する充填要求値、空要求値及びスタック動作値を示す可能なジャバ・バイトコードの部分集合の例が以下に続く。
【表5】
【0043】
前述したジャバ・バイトコード命令のおのおのに対する命令テンプレートの例も以下に続く。図示の各命令はジャバ・バイトコードのおのおのの要求された行為を実施するARM命令である。レジスタ・フィールド「TOS−3」、「TOS−2」、「TOS」、「TOS+1」及び「TOS+2」は現在適用されているマッピング状態に応じて表1から読み出されるような適切なレジスタ指定子で置換される。表示「TOS+n」は、現在のスタック・オペランドのトップを記憶するレジスタの上方N番目のレジスタを示しスタック・オペランドのトップを記憶するレジスタで始まり、レジスタセットの終端に達するまで、レジスタ値は上方に計数され、その終端でレジスタセット内の最初のレジスタに戻される。
【表6】
【0044】
前述した技術に従ってハードウェア変換ユニット108によって実行される単一ジャバ・バイトコードの実行シーケンスの例を以下に示す。実行される命令に応じて状態のシーケンスを通して進行し、各状態遷移について実行される動作の結果としてARM命令のシーケンスを発生し、全体がジャバ・バイトコードをARM命令のシーケンスに変換する効果を有する初期状態の観点から実行シーケンスを示している。
【表7】
【0045】
図6は複数のジャバ・バイトコード命令の実行を異なる方法で説明している。図6の上部はARM命令のシーケンスと、ジャバ・バイトコード命令iaddの実行後に生じるマッピング状態及びレジスタ内容の変化を示している。レジスタセット内の全てのレジスタが空であることに対応して初期マッピング状態は00000である。生成された最初の2つのARM命令は、2つのスタック・オペランドをR0であるスタックのトップ「TOS」レジスタでスタック・オペランドを記憶するレジスタにポップ(POP)すべく機能する。3番目のARM命令はレジスタR1内の予め保持されたスタック・オペランドを消費しながら追加処理を実際に実行すると共に、(スタック・オペランドのトップになっている)レジスタR3に結果を書き込み、こうして−1の全体のスタック動作を生成する。
【0046】
次いで、処理はおのおのが2つのスタック・オペランドの長いロードを表す2つのジャバ・バイトコードの実行に移行する。最初のジャバ・バイトコードに対する2の空要求条件が直ちに満たされ、それに応じて2つのARM LDR命令を発行し実行するであろう。最初の長いロードのジャバ・バイトコードの実行後のマッピング状態は01101である。この状態で、レジスタセットは単一の空のレジスタのみを含む。次のジャバ・バイトコードの長いロード命令は満たされない2の空要求値を有し、それに応じて要求される最初の動作はARM STR命令を用いたアドレス指定可能メモリへのスタック・オペランドのRUSHである。このことは、2つの後続のLDR命令の一部分としてロードされる新しいスタック・オペランドによる使用に対してレジスタを自由にする。前述したように、命令変換はハードウェア、ソフトウェア、またはこの2つの組合わせによって達成することができる。前述した技術に従って発生したソフトウェア・インタプリタの例の小区分を以下に挙げる。
【表8】
【0047】
図7はスタック位置のトップで始まる2ワードのデータによって指定されるデータ・アレイ内から2ワードのデータを読み出す機能を有するジャバ・バイトコード命令「laload」を説明している。データ・アレイから読み出された2つのワードはそれらの位置を指定した2つのワードと交代して最上のスタック・エントリを形成する。
【0048】
命令「laload」がアレイ及びデータのアレイ内の位置を指定する入力スタック・オペランドを重ね書きすることなくアレイから取り出したスタック・オペランドの一時記憶のための十分なレジスタ空間を有するために、ジャバ・バイトコード命令を2つの空要求値を有するものとして指定する。即ち、スタック・オペランド記憶装置に専用のレジスタ・バンク内のレジスタのうちの2つを命令「laload」をエミュレートするARM命令を実行することに先立って空にしなければならない。このジャバ・バイトコードがあるときに2つの空のレジスタがなければ、必要な一時記憶域のための空間を作ると共に、命令に対する空要求値を満たすように、メモリ外のレジスタ内に現在保持されたスタック・オペランドをPUSHすべく記憶オペレーション(STR)を実行する。
【0049】
データの位置はアレイ位置と個別のスタック・オペランドとしてそのアレイ内のインデックスによって指定されるので、命令はまた充填要求値2を有している。図面は充填要求及び空要求条件を既に満たすものとして、かつ「01001」のマッピング状態を有するものとして最初の状態を示している。命令「laload」は3つのARM命令に分割される。これらの命令のうち最初のものは、スタック・オペランドのレジスタ・キャッシュとして機能するレジスタセット外のスペア・ワーキング・レジスタにアレイ・リファレンスをロードする。2番目の命令はアレイ内のインデックスと関連してこのアレイ・リファレンスを使用し、スタック・オペランドの記憶装置として専用される空レジスタの内の1つに書き込まれる第1のアレイ・ワードをアクセスするようになっている。
【0050】
最初の2つのARM命令を実行した後、システムのマッピング状態は変化せず、スタック・ポインタのトップは空きとして指定されたレジスタで開始したところに、依然そのままの状態で留まっていることに注目する必要がある。
【0051】
ARM命令のシーケンス内の最後の命令は、スタック・オペランドを記憶するためのレジスタセットに第2のアレイ・ワードをロードする。これは最後の命令であり、その間に割込みが生じていても、これはこの命令が完了する後まで処理されることはなく、スタック・オペランドを記憶するレジスタのマッピング状態に対する変更によってこの命令で入力状態を変化させることは安全である。この例では、マッピング状態は「01011」に変化し、これはスタック・ポインタの新しいトップを第2のアレイ・ワードに置くと共に、アレイ・リファレンス及びインデックス値の入力変数はここで空のレジスタであることを示す。即ち、レジスタを空とすることはそれらがスタックから保持していた値を除去することと等価である。
【0052】
命令「laload」の全体のスタック動作はレジスタ内に保持されたスタック・オペランドの数を変更していないが、それにも拘らずマッピング状態の交換が生じている。最後のオペレーションの実行により実施されるマッピング状態の変更は変換されたジャバ・バイトコードの機能として命令変換器中に組み込まれており、命令「laload」の特性として示される「スワップ(swap)」パラメータによって指示される。
【0053】
この図面の例は1つの特定の命令であるが、前述した原理はARM命令としてエミュレートされる多くの異なるジャバ・バイトコード命令または他の型式の命令に拡張することができることが認められよう。
【0054】
図8は前述した技術を概略的に例示するフロー図である。ステップ10で、ジャバ・バイトコードがメモリから取り出される。ステップ12で、そのジャバ・バイトコードに対する充填要求値及び空要求値が調べられる。空要求または充填要求の条件の何れかが満たされなければ、スタック・オペランド(恐らくは複数のスタック・オペランド)のそれぞれのPUSH及びPOPオペレーションをステップ14及び16で実行される。この特定のシステムは空要求及び充填要求の条件が同時に未対応の状態を許さないことに留意されよう。ステップ12の条件が満たされるまでステップ14から16の複数のパスが要求される。
【0055】
ステップ18で、ジャバ・バイトコードに対する変換テンプレート内で指定された最初のARM命令が選択される。ステップ20で、この選択されたARM命令がステップ10で取り出したジャバ・バイトコードのエミュレーションで実行すべき最後の命令であるか否かがチェックされる。実行中のARM命令が最後の命令であれば、ステップ21はプログラム・カウンタ値を更新するように機能して、実行すべき命令のシーケンスでの次のジャバ・バイトコードを指す。ARM命令が最後の命令であれば、今割込みが生じているか否かに無関係にその実行を完了することとなり、従ってプログラム・カウンタ値を次のジャバ・バイトコードに更新し、システムの状態が通常の、まだ割込みのないそのマッチング、即ちジャバ・バイトコードの完全な実行に達することとなるその時点から実行を再始動することが確実であることが理解される。ステップ20でのテストが最後のバイトコードに達していないことを示せば、プログラム・カウンタ値の更新はバイパスされる。
【0056】
ステップ22では現在のARM命令を実行する。ステップ18で、テンプレートの一部分として実行が要求されるARM命令がまだあるか否かのテストが行われる。更なるARM命令があれば、これらの命令のうちの次の命令をステップ26で選択し、処理はステップ20に戻る。それ以上の命令がなければ、処理はステップ28に進み、このステップ28で関係するジャバ・バイトコードに対して指定された任意のマッピングの変更/交換を行い、所望のスタック位置のトップ及びスタック・オペランドを保持している種々のレジスタの充填/空の状態を反映するようにする。
【0057】
図8は、もし存在すれば、割込みを処理し、次いで割込みの後で処理を再開する時点を概略的に例示している。バイトコード・シーケンスで戻り点として記憶中の現在のプログラム・カウンタ値が何であろうとステップ22で現在進行中のARM命令を実行した後、割込みが処理され始める。実行中の現在のARM命令がテンプレ−ト・シーケンス内の最後の命令であれば、ステップ21でプログラム・カウンタ値を更新することとなり、従って次のジャバ・バイトコードを指すこととなる(ARM命令は、命令セット・スイッチが初期化されねばならない)。現在実行中のARM命令がシーケンスの最後の命令以外のものであれば、プログラム・カウンタ値は関係するジャバ・バイトコードの実行の開始時に示されたものと依然同一であり、従ってリターンが実行されたとき、ジャバ・バイトコード全体が再び実行されることとなる。
【0058】
図9はジャバ・バイトコードのストリームを受信すると共に、変換されたARM命令のストリーム(または対応する制御信号)を出力してプロセッサ・コアの動作を制御するジャバ・バイトコード変換ユニット68を例示している。前述したように、ジャバ・バイトコード変換器68は命令テンプルを使用して簡単なジャバ・バイトコードをARM命令またはARM命令のシーケンスに変換する。各ジャバ・バイトコードが実行されたとき、スケジューリング制御ロジック内のカウンタ値はデクリメントされる。このカウンタ値が零に達したとき、ジャバ・バイトコード変換ユニット68はスレッド(thread)またはタスク間のスケジューリングを適切に管理するスケジューリング・コードに分岐するARM命令を出す。
【0059】
簡単なジャバ・バイトコードはこれらのバイトコードの高速ハードウェアに基づく実行をもたらすジャバ・バイトコード変換ユニット68自身によって処理されるが、もっと複雑な処理オペレーションを必要とするバイトコードは解釈ルーチンの集合として設けられるソフトウェア・インタプリタに送られる(この種のルーチンの選択例はこの説明のより前に与えられている)。詳述すると、ジャバ・バイトコード変換ユニット68は受信したバイトコードがハードウェア変換によってサポートされるバイトコードではないことを判断することができ、それに応じてそのバイトコードを解釈するソフトウェア・ルーチンが見い出されるかまたは参照されるジャバ・バイトコードに対応したアドレスに分岐を行うことができる。スケジューリング・ロジック70がスケジューリング・オペレーションはスケジューリング・コードに分岐を生成する必要があることを示す場合に、この機構を用いることができる。
【0060】
図10は図9の実施例の動作をより詳細にかつハードウェア及びソフトウェア間のタスクの分割を例示している。全ジャバ・バイトコードはジャバ・バイトコード変換ユニット68によって受信され、ステップ72でカウンタをデクリメントする。ステップ72で、カウンタ値が零に達したか否かについてチェックが行われる。カウンタ値が零に達していれば(システムに組み込ました所定の値またはユーザによって制御されプログラムされた値の何れかからかカウントダウン)、ステップ76でスケジューリング・コードに分岐が行われる。カウンタは零に達しているので、これはここで新しい零ではない値に進められる。ステップ76でスケジューリング・コードが完了すると、制御はハードウェアに戻され処理はステップ72に進む。そこでは次のジャバ・バイトコードが取り出されカウンタがデクリメントされる。代替的に、ステップ76で新しい値をスケジューリング・プロセスからの生成物の一部分としてカウンタに設定しても良い。
【0061】
ステップ74でテストがカウンタは零に等しくないことを示していれば、ステップ78でジャバ・バイトコードを取り出す。ステップ80で、取り出したバイトコードがステップ82でハードウェア変換によって実行することができる簡単なバイトフードか、もっと複雑な処理を必要とし、ステップ84でソフトウェア解釈へ行かなければならないかを決定する。処理がソフトウェア解釈へ進み、これが完了すると制御はハードウェアに戻り、ステップ72で次のジャバ・バイトコードを取出すためにカウンタを再度デクリメントする。
【0062】
図11は代替的制御構成を例示している。ステップ86での処理の開始において、命令信号(スケジューリング信号)がデアサート(deassert)される。ステップ88で、取り出したジャバ・バイトコードを調べて、ハードウェア変換がサポートされる簡単なバイトコードか否かをチェックする。ハードウェア変換がサポートされていなければ、制御はステップ90で解釈用ソフトウェアに行き、ステップ90でARM命令ルーチンを実行し、ジャバ・バイトコードを解釈する。バイトコードがハードウェア変換がサポートされている簡単なものであれば、処理はステップ92に進み、このステップ92で1つ以上のARM命令が多サイクル有限状態マシーンの型式で機能するジャバ・バイトコード変換ユニット68によって順々に出される。ジャバ・バイトコードがステップ90またはステップ92の何れかで適正に実行されると、処理はステップ94に進み、ここで命令信号がステップ86でデアサートされる前の短期間アサート(assert)される。命令信号のアサート(assertion)は、解釈または変換された命令を部分的に実行することによりデータの完全性を損う危険性無しで、タイマベースのスケジューリング割込みを取り扱うことが可能な安全時点に達したことを外部回路に指示する。
【0063】
図12は図11で発生した命令信号への応答に使用し得る例示的回路を示している。タイマ96は所定の期間が終了した後にタイマ信号を周期的に発生する。このタイマ信号はクリアタイマ割込み信号によってクリアされるまでラッチ98内に記憶される。ラッチ98の出力はステップ94でアサートされた命令信号とANDゲート100によって論理的に組み合わされる。ラッチが設定され、命令信号がアサートされると、割込みがANDゲート100の出力として発生され、標準的割込み処理のためにシステム内に設けられた割込み処理機構を使用してスケジューリング・オペレーションを実行する割込みをトリガするのに使用される。割込み信号が発生すると、次に次回のタイマ出力パルスが生じるまでラッチ98をクリアするクリアタイマ割込み信号の生成をトリガする。
【0064】
図13は図12の回路の動作を図示する信号図である。プロセッサ・コア・クロック信号は規則的な周波数で生じる。タイマ96は所定の周期でタイマ信号を発生して、安全なとき、スケジューリング・オペレーションを開始すべきことを指示する。タイマ信号はラッチされる。命令信号は特定のジャバ・バイトコードが実行された速さに依存する間隔だけ離隔した時間に発生する。簡単なジャバ・バイトコードは単一のプロセッサ・コア・クロック周期、より典型的には2つまたは3つのクロック周期で実行されるのに対し、高レベルの管理タイプの機能を提供する複雑なジャバ・バイトコードはその実行がソフトウェア・インタプリタによって完了される前に数百のプロセッサ・クロック周期をとる。何れの場合でも、保留中のアサートされラッチされたタイマ信号は、スケジューリング・オペレーションの開始が安全であることを示す命令信号が出るまで、スケジューリング・オペレーションのトリガを行なわない。ラッチされたタイマ信号と命令信号が同時に生ずることによって、ラッチ98をクリアするクリア信号が直後に来る割込み信号の発生がトリガされる。
【図面の簡単な説明】
【図1】
例示的な命令パイプライン構成を概略的に示す図である。
【図2】
例示的な命令パイプライン構成を概略的に示す図である。
【図3】
取出しステージ構成を詳細に示す図である。
【図4】
取出しステージ内のバッファリングした命令ワード内から可変長非ネイティブ命令の読出しを概略的に示す図である。
【図5】
プロセッサ・コアネイティブ命令及び変換を必要とする命令の双方を実行するデータ処理システムを概略的に示す図である。
【図6】
例示的命令のシーケンス及びスタック・オペランド記憶に対して使用されるレジスタの内容の状態に対して、マッピング状態及び変換を要求する命令とネイティブ命令の間の関係を概略的に示す図である。
【図7】
ネイティブ命令のシーケンスとして非ネイティブ命令を実行することを概略的に示す図である。
【図8】
命令変換器が変換された命令に対する割込み待ち時間を保存するようにして動作する方法を図示するフロー図である。
【図9】
ハードウェア及びソフトウェア技術を使用してジャバ・バイトコードをARM演算コードに変換することを概略的に示す図である。
【図10】
ハードウェアベースの変換器、ソフトウェアベースのスケジューリングの間の制御のフローを概略的に示す図である。
【図11】
タイマベースのアプローチを使用してスケジューリング・オペレーションを制御する別の方法を示す図である。
【図12】
タイマベースのアプローチを使用してスケジューリング・オペレーションを制御する別の方法を示す図である。
【図13】
図12の回路の動作を制御する各信号を図示する信号図である。
Claims (17)
- データを処理する装置において、
第1の命令セットの命令によって指定される通りにオペレーションを実行するのに動作可能なプロセッサ・コアと、
第2の命令セットの命令を前記第1の命令セットの命令に対応する変換器出力に変換するのに動作可能な命令変換器であって、前記第2の命令セットのうちの少なくとも1つの命令が1つ以上の入力変数を使用して実行すべきオペレーションを指定してなる前記命令変換器と、
割込み信号に応答して、現在実行中のオペレーションの実行を完了した後に前記第1の命令セットの命令に対応する各オペレーションの実行を中断する割込み処理ルーチンと、
前記割込みの後に実行を再始動する再始動ロジックと、を具備し、
前記命令変換器は前記第1の命令セットの命令に対応する変換器出力信号の1つ以上のセットのシーケンスを発生して、前記第2の命令セットのうちの前記少なくとも1つの命令を表すべく動作可能であり、この際、各シーケンスは前記シーケンス内の最後のオペレーションを実行するまでに前記1つ以上の入力変数に対して何らの変更も行わないものであって、
前記第2の命令セットのうちの少なくとも1つの命令を表すオペレーションのシーケンスの実行の際に割込みが発生した後、
(i)前記シーケンスでの最後のオペレーションの実行の始動に先立って前記割込みが生じたら、前記再始動ロジックは前記シーケンスの最後のオペレーションの実行を再始動し、かつ
(ii)前記シーケンスでの最後のオペレーションの実行を始動した後に前記割込みが生じたら、前記再始動ロジックは前記シーケンスに続く次の命令にて実行を再始動してなることを特徴とする前記装置。 - 請求項1記載の装置において、前記変換器出力信号は最初の命令セットの或る命令を形成する信号を含むことを特徴とする前記装置。
- 請求項1及び請求項2の何れか1つに記載の装置において、前記変換器出力信号は前記プロセッサ・コアの動作を制御する制御信号、及び前記第1の命令セットの命令を復号化すると直ちに生成される突合わせ制御信号を含むことを特徴とする前記装置。
- 請求項1ないし3の何れか1つに記載の装置において、前記変換器出力信号は前記プロセッサ・コアの動作を制御すると共に、前記第1の命令セットの命令を復号化すると直ちに生成される各制御信号によって指定されない各パラメータを指定する各制御信号を含むことを特徴とする前記装置。
- 請求項1ないし4のうちの何れか1つに記載の装置において、前記再始動ロジックは前記命令変換器の一部分であることを特徴とする前記装置。
- 請求項1ないし5のうちの何れか1つに記載の装置において、前記再始動ロジックは変換中の前記第2の命令セットの命令の再始動位置に対するポインタを記憶し、この際、前記ポインタは前記最後のオペレーションを実行すると直ちに進められてなることを特徴とする前記装置。
- 請求項6記載の装置において、前記ポインタは現在変換中の前記第2の命令セットの或る命令を記憶するメモリ位置のメモリ・アドレスを指すプログラム・カウンタ値であることを特徴とする前記装置。
- 請求項1ないし7のうちの何れか1つに記載の装置において、前記第2の命令セットの命令はスタックに保持されているスタック・オペランド上で実行すべき各オペレーションを指定すると共に、前記入力変数は各入力スタック・オペランドを含むことを特徴とする前記装置。
- 請求項8記載の装置において、前記第2の命令セットのうちの少なくとも1つの命令を実行することによって前記スタックから移動するどのスタック・オペランドも前記最後のオペレーションの実行が開始されるまでは移動しないことを特徴とする前記装置。
- 請求項8及び9の何れか1つに記載の装置において、前記第2の命令のうちの前記少なくとも1つの命令を実行することによって前記スタックに加えられるどのスタック・オペランドも前記最後のオペレーションの実行が開始されるまでは加えられないことを特徴とする前記装置。
- 請求項1ないし10のうちの何れか1つに記載の装置において、前記入力変数は前記第2の命令内では指定されないシステム状態変数を含むことを特徴とする前記装置。
- 請求項1ないし11のうちの何れか1つに記載の装置において、前記プロセッサは複数のレジスタを含むレジスタ・バンクを有すると共に、前記第1の命令セットの命令は前記レジスタに保持されている各レジスタ・オペランド上のオペレーションを実行することを特徴とする前記装置。
- 請求項12記載の装置において、前記レジスタ・バンク内のレジスタセットは前記スタックのトップ位置からスタック・オペランドを保持することを特徴とする前記装置。
- 請求項13記載の装置において、前記命令変換器は前記レジスタセット内の異なるレジスタが前記スタック内の異なる位置からそれぞれのスタック・オペランドを保持する複数のマッピング状態を有し、この際、前記命令変換器は前記最後のオペレーションが前記入力変数を更新するように実行されるときにマッピング状態の間を移動するように動作可能であることを特徴とする前記装置。
- 請求項1ないし14のうちの何れか1つに記載の装置において、前記第2の命令のセットの各命令はジャバ仮想マシーン命令であることを特徴とする前記装置。
- データを処理する方法において、
第1の命令セットの命令によって指定される通りにオペレーションを実行する段階と、
第2の命令セットの命令を前記第1の命令セットの命令に対応する各変換器出力信号に変換する段階であって、前記第2の命令セットのうちの少なくとも1つの命令が1つ以上の入力変数を使用して実行すべきオペレーションを指定してなる前記段階と、
割込み信号に応答して、現在実行中のオペレーションの実行を完了した後に前記第1の命令セットの命令に対応するオペレーションの実行を中断する段階と、
前記割込みの後に実行を再始動する段階と、を具備し、
前記変換する段階は前記第1の命令セットの命令に対応する変換器出力信号のうちの1つ以上のセットのシーケンスを発生して、前記第2の命令セットのうちの前記少なくとも1つの命令を表し、この際、各シーケンスは前記シーケンス内の最後のオペレーションが実行されるまで前記1つ以上の入力変数には何らの変更も行われないものであって、
前記第2の命令セットの前記少なくとも1つの命令を表すオペレーションのシーケンスを実行する際に割込みが発生した後、
(i)前記シーケンスでの最後のオペレーションの実行を始動する前に前記割込みが発生したら、前記シーケンスの最初のオペレーションでの実行を再始動し、かつ
(ii)前記シーケンスでの最後のオペレーションの実行を始動した後に前記割込みが生じたら、前記シーケンスに続く次のシーケンスでの実行を再始動してなることを特徴とする前記方法。 - 請求項16記載の方法を実行すべくコンピュータを制御するコンピュータ・プログラムを保持するコンピュータ・プログラム製品。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0024402.0 | 2000-10-05 | ||
GB0024402A GB2367653B (en) | 2000-10-05 | 2000-10-05 | Restarting translated instructions |
PCT/GB2001/002741 WO2002029555A1 (en) | 2000-10-05 | 2001-06-21 | Restarting translated instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004511041A true JP2004511041A (ja) | 2004-04-08 |
JP4950408B2 JP4950408B2 (ja) | 2012-06-13 |
Family
ID=9900736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002533061A Expired - Lifetime JP4950408B2 (ja) | 2000-10-05 | 2001-06-21 | 変換した命令の再始動 |
Country Status (12)
Country | Link |
---|---|
US (1) | US7003652B2 (ja) |
EP (1) | EP1323032B1 (ja) |
JP (1) | JP4950408B2 (ja) |
KR (1) | KR100890243B1 (ja) |
CN (1) | CN1287270C (ja) |
DE (1) | DE60140068D1 (ja) |
GB (1) | GB2367653B (ja) |
IL (2) | IL151396A0 (ja) |
MY (1) | MY127147A (ja) |
RU (1) | RU2263949C2 (ja) |
TW (1) | TWI224280B (ja) |
WO (1) | WO2002029555A1 (ja) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69734399D1 (de) * | 1996-01-24 | 2006-03-02 | Sun Microsystems Inc | Verfahren und vorrichtung zur stapel-cachespeicherung |
US7162612B2 (en) * | 2000-08-16 | 2007-01-09 | Ip-First, Llc | Mechanism in a microprocessor for executing native instructions directly from memory |
JP2005506630A (ja) * | 2001-10-25 | 2005-03-03 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 低オーバヘッドの例外チェック |
US7155718B1 (en) * | 2002-04-04 | 2006-12-26 | Applied Micro Circuits Corp. | Method and apparatus to suspend and resume on next instruction for a microcontroller |
JP2004094533A (ja) * | 2002-08-30 | 2004-03-25 | Hajime Seki | 計算機システム |
JP4127495B2 (ja) * | 2002-09-05 | 2008-07-30 | 株式会社ルネサステクノロジ | 情報処理装置 |
US9158574B2 (en) | 2002-11-18 | 2015-10-13 | Arm Limited | Handling interrupts in data processing |
US7539853B2 (en) | 2002-11-18 | 2009-05-26 | Arm Limited | Handling interrupts in data processing of data in which only a portion of a function has been processed |
US20060117167A1 (en) * | 2002-12-12 | 2006-06-01 | Evrard Christophe J | Processing activity masking in a data processing system |
DE102004025418A1 (de) * | 2004-05-24 | 2005-12-22 | Infineon Technologies Ag | Controller mit einer Decodiereinrichtung |
DE102004025419A1 (de) * | 2004-05-24 | 2005-12-22 | Infineon Technologies Ag | Controller und Verfahren zum Verarbeiten von Befehlen |
US8621444B2 (en) * | 2004-06-01 | 2013-12-31 | The Regents Of The University Of California | Retargetable instruction set simulators |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
GB2424092A (en) * | 2005-03-11 | 2006-09-13 | Transitive Ltd | Switching between code translation and execution using a trampoline |
US7769983B2 (en) * | 2005-05-18 | 2010-08-03 | Qualcomm Incorporated | Caching instructions for a multiple-state processor |
US8010849B2 (en) * | 2006-09-05 | 2011-08-30 | Arm Limited | Diagnosing faults within programs being executed by virtual machines |
US7711927B2 (en) * | 2007-03-14 | 2010-05-04 | Qualcomm Incorporated | System, method and software to preload instructions from an instruction set other than one currently executing |
US8489989B1 (en) * | 2008-07-15 | 2013-07-16 | Adobe Systems Incorporated | Methods and systems for preflighting using multiple preflight profiles |
US8880857B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor |
US9317288B2 (en) | 2011-04-07 | 2016-04-19 | Via Technologies, Inc. | Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9645822B2 (en) | 2011-04-07 | 2017-05-09 | Via Technologies, Inc | Conditional store instructions in an out-of-order execution microprocessor |
US9032189B2 (en) | 2011-04-07 | 2015-05-12 | Via Technologies, Inc. | Efficient conditional ALU instruction in read-port limited register file microprocessor |
US9292470B2 (en) | 2011-04-07 | 2016-03-22 | Via Technologies, Inc. | Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program |
US9274795B2 (en) | 2011-04-07 | 2016-03-01 | Via Technologies, Inc. | Conditional non-branch instruction prediction |
US9176733B2 (en) | 2011-04-07 | 2015-11-03 | Via Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
US8924695B2 (en) | 2011-04-07 | 2014-12-30 | Via Technologies, Inc. | Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor |
US9898291B2 (en) | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
US9336180B2 (en) | 2011-04-07 | 2016-05-10 | Via Technologies, Inc. | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
US9043580B2 (en) | 2011-04-07 | 2015-05-26 | Via Technologies, Inc. | Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA) |
US9146742B2 (en) | 2011-04-07 | 2015-09-29 | Via Technologies, Inc. | Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA |
US8880851B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
US9244686B2 (en) | 2011-04-07 | 2016-01-26 | Via Technologies, Inc. | Microprocessor that translates conditional load/store instructions into variable number of microinstructions |
US9141389B2 (en) | 2011-04-07 | 2015-09-22 | Via Technologies, Inc. | Heterogeneous ISA microprocessor with shared hardware ISA registers |
US9128701B2 (en) | 2011-04-07 | 2015-09-08 | Via Technologies, Inc. | Generating constant for microinstructions from modified immediate field during instruction translation |
US8914615B2 (en) | 2011-12-02 | 2014-12-16 | Arm Limited | Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format |
WO2013132767A1 (ja) | 2012-03-09 | 2013-09-12 | パナソニック株式会社 | プロセッサ、マルチプロセッサシステム、コンパイラ、ソフトウェアシステム、メモリ制御システムおよびコンピュータシステム |
GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
US9727944B2 (en) | 2015-06-22 | 2017-08-08 | Apple Inc. | GPU instruction storage |
EP3663916A4 (en) * | 2017-08-02 | 2020-08-19 | FeliCa Networks, Inc. | INFORMATION PROCESSING DEVICE AND INFORMATION PROCESSING METHOD |
CN112817812B (zh) * | 2020-12-31 | 2022-11-04 | 深圳市联影高端医疗装备创新研究院 | 序列翻译模拟方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04302329A (ja) * | 1990-12-26 | 1992-10-26 | Xerox Corp | マイクロ処理システム |
WO2000034844A2 (en) * | 1998-12-08 | 2000-06-15 | Jedi Technologies, Inc. | Java virtual machine hardware for risc and cisc processors |
JP2000513464A (ja) * | 1996-01-24 | 2000-10-10 | サン・マイクロシステムズ・インコーポレイテッド | スタックキャッシングのための方法及び装置 |
JP2000515269A (ja) * | 1996-01-24 | 2000-11-14 | サン・マイクロシステムズ・インコーポレイテッド | スタックを用いる演算マシンのための命令フォールディング処理 |
JP2000515270A (ja) * | 1996-01-24 | 2000-11-14 | サン・マイクロシステムズ・インコーポレイテッド | ネットワークまたはローカルメモリから受け取った命令セットの実行のための二重命令セットプロセッサ |
JP2002508563A (ja) * | 1997-12-15 | 2002-03-19 | モトローラ・インコーポレイテッド | ソフトウェア・エミュレーションを改善するために異なるデータ・タイプの複数の結果を生成するコンピュータ命令 |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3889243A (en) | 1973-10-18 | 1975-06-10 | Ibm | Stack mechanism for a data processor |
US3955180A (en) | 1974-01-02 | 1976-05-04 | Honeywell Information Systems Inc. | Table driven emulation system |
US4236204A (en) | 1978-03-13 | 1980-11-25 | Motorola, Inc. | Instruction set modifier register |
US4587632A (en) | 1980-05-27 | 1986-05-06 | At&T Bell Laboratories | Lookahead stack oriented computer |
EP0103547A3 (en) * | 1982-08-09 | 1987-01-28 | Giuseppe Rigo | Apparatus for generating a controllable steam and ozone mixture and hair-dryer for uniformly distributing said mixture on hair |
US4922414A (en) | 1982-12-17 | 1990-05-01 | Symbolics Inc. | Symbolic language data processing system |
DE3726192A1 (de) | 1987-08-06 | 1989-02-16 | Otto Mueller | Stacksteuerung |
US5136696A (en) | 1988-06-27 | 1992-08-04 | Prime Computer, Inc. | High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions |
US5440749A (en) | 1989-08-03 | 1995-08-08 | Nanotronics Corporation | High performance, low cost microprocessor architecture |
TW197505B (ja) * | 1991-03-07 | 1993-01-01 | Digital Equipment Corp | |
US5432795A (en) * | 1991-03-07 | 1995-07-11 | Digital Equipment Corporation | System for reporting errors of a translated program and using a boundry instruction bitmap to determine the corresponding instruction address in a source program |
US5307504A (en) * | 1991-03-07 | 1994-04-26 | Digital Equipment Corporation | System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events |
US5367685A (en) | 1992-12-22 | 1994-11-22 | Firstperson, Inc. | Method and apparatus for resolving data references in generated code |
US5455775A (en) | 1993-01-25 | 1995-10-03 | International Business Machines Corporation | Computer design system for mapping a logical hierarchy into a physical hierarchy |
GB2289353B (en) | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Data processing with multiple instruction sets |
GB2289354B (en) | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Multiple instruction set mapping |
GB2290395B (en) | 1994-06-10 | 1997-05-28 | Advanced Risc Mach Ltd | Interoperability with multiple instruction sets |
US5638525A (en) | 1995-02-10 | 1997-06-10 | Intel Corporation | Processor capable of executing programs that contain RISC and CISC instructions |
US5752035A (en) | 1995-04-05 | 1998-05-12 | Xilinx, Inc. | Method for compiling and executing programs for reprogrammable instruction set accelerator |
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 |
US5699536A (en) | 1995-04-13 | 1997-12-16 | International Business Machines Corporation | Computer processing system employing dynamic instruction formatting |
US5838948A (en) | 1995-12-01 | 1998-11-17 | Eagle Design Automation, Inc. | System and method for simulation of computer systems combining hardware and software interaction |
US5826089A (en) | 1996-01-04 | 1998-10-20 | Advanced Micro Devices, Inc. | Instruction translation unit configured to translate from a first instruction set to a second instruction set |
US5970242A (en) | 1996-01-24 | 1999-10-19 | Sun Microsystems, Inc. | Replicating code to eliminate a level of indirection during execution of an object oriented computer program |
US6038643A (en) | 1996-01-24 | 2000-03-14 | Sun Microsystems, Inc. | Stack management unit and method for a processor having a stack |
JP2000501217A (ja) | 1996-01-24 | 2000-02-02 | サン・マイクロシステムズ・インコーポレイテッド | 配列アクセス境界チェックを加速したプロセッサ |
US5742802A (en) | 1996-02-16 | 1998-04-21 | International Business Machines Corporation | Method and system for efficiently mapping guest instruction in an emulation assist unit |
US5805895A (en) | 1996-06-09 | 1998-09-08 | Motorola, Inc. | Method and apparatus for code translation optimization |
US6031992A (en) | 1996-07-05 | 2000-02-29 | Transmeta Corporation | Combining hardware and software to provide an improved microprocessor |
JPH1069640A (ja) | 1996-08-27 | 1998-03-10 | Mitsumi Electric Co Ltd | Cd−rドライブにおけるウォブル信号生成方法 |
US5926832A (en) | 1996-09-26 | 1999-07-20 | Transmeta Corporation | Method and apparatus for aliasing memory data in an advanced microprocessor |
DE69723286T2 (de) | 1996-11-13 | 2004-05-13 | Paran, Arik, Sunnyvale | Echtzeitprogramm-sprachbeschleuniger |
US5937193A (en) * | 1996-11-27 | 1999-08-10 | Vlsi Technology, Inc. | Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof |
US5953741A (en) | 1996-11-27 | 1999-09-14 | Vlsi Technology, Inc. | Stack cache for stack-based processor and method thereof |
US6011908A (en) * | 1996-12-23 | 2000-01-04 | Transmeta Corporation | Gated store buffer for an advanced microprocessor |
US6009499A (en) | 1997-03-31 | 1999-12-28 | Sun Microsystems, Inc | Pipelined stack caching circuit |
US5898885A (en) * | 1997-03-31 | 1999-04-27 | International Business Machines Corporation | Method and system for executing a non-native stack-based instruction within a computer system |
US5875336A (en) | 1997-03-31 | 1999-02-23 | International Business Machines Corporation | Method and system for translating a non-native bytecode to a set of codes native to a processor within a computer system |
US5892966A (en) | 1997-06-27 | 1999-04-06 | Sun Microsystems, Inc. | Processor complex for executing multimedia functions |
US6088786A (en) | 1997-06-27 | 2000-07-11 | Sun Microsystems, Inc. | Method and system for coupling a stack based processor to register based functional unit |
US6003126A (en) | 1997-07-01 | 1999-12-14 | International Business Machines | Special instruction register including allocation field utilized for temporary designation of physical registers as general registers |
US6317872B1 (en) | 1997-07-11 | 2001-11-13 | Rockwell Collins, Inc. | Real time processor optimized for executing JAVA programs |
US5953520A (en) | 1997-09-22 | 1999-09-14 | International Business Machines Corporation | Address translation buffer for data processing system emulation mode |
US5995743A (en) * | 1997-09-22 | 1999-11-30 | International Business Machines Corporation | Method and system for interrupt handling during emulation in a data processing system |
EP0950216B1 (en) | 1997-10-02 | 2003-11-26 | Koninklijke Philips Electronics N.V. | A processing device for executing virtual machine instructions |
KR100623403B1 (ko) | 1997-10-02 | 2006-09-13 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 가상 머신 명령을 처리하기 위한 데이터 처리 장치 |
AU745449B2 (en) * | 1997-11-20 | 2002-03-21 | Hajime Seki | Computer system |
US6070173A (en) | 1997-11-26 | 2000-05-30 | International Business Machines Corporation | Method and apparatus for assisting garbage collection process within a java virtual machine |
US6122638A (en) | 1997-11-26 | 2000-09-19 | International Business Machines Corporation | Object-oriented processor and method for caching intermediate data in an object-oriented processor |
US6148391A (en) | 1998-03-26 | 2000-11-14 | Sun Microsystems, Inc. | System for simultaneously accessing one or more stack elements by multiple functional units using real stack addresses |
US6374286B1 (en) | 1998-04-06 | 2002-04-16 | Rockwell Collins, Inc. | Real time processor capable of concurrently running multiple independent JAVA machines |
US6338134B1 (en) | 1998-12-29 | 2002-01-08 | International Business Machines Corporation | Method and system in a superscalar data processing system for the efficient processing of an instruction by moving only pointers to data |
US6718539B1 (en) * | 2000-12-22 | 2004-04-06 | Lsi Logic Corporation | Interrupt handling mechanism in translator from one instruction set to another |
-
2000
- 2000-10-05 GB GB0024402A patent/GB2367653B/en not_active Expired - Lifetime
-
2001
- 2001-06-21 IL IL15139601A patent/IL151396A0/xx active IP Right Grant
- 2001-06-21 DE DE60140068T patent/DE60140068D1/de not_active Expired - Lifetime
- 2001-06-21 RU RU2002127807/09A patent/RU2263949C2/ru not_active IP Right Cessation
- 2001-06-21 EP EP01940796A patent/EP1323032B1/en not_active Expired - Lifetime
- 2001-06-21 JP JP2002533061A patent/JP4950408B2/ja not_active Expired - Lifetime
- 2001-06-21 WO PCT/GB2001/002741 patent/WO2002029555A1/en active Application Filing
- 2001-06-21 KR KR1020037004687A patent/KR100890243B1/ko active IP Right Grant
- 2001-06-21 CN CNB018108180A patent/CN1287270C/zh not_active Expired - Lifetime
- 2001-06-25 US US09/887,559 patent/US7003652B2/en not_active Expired - Lifetime
- 2001-07-14 MY MYPI20013351 patent/MY127147A/en unknown
- 2001-09-25 TW TW090123666A patent/TWI224280B/zh not_active IP Right Cessation
-
2002
- 2002-08-21 IL IL151396A patent/IL151396A/en unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04302329A (ja) * | 1990-12-26 | 1992-10-26 | Xerox Corp | マイクロ処理システム |
JP2000513464A (ja) * | 1996-01-24 | 2000-10-10 | サン・マイクロシステムズ・インコーポレイテッド | スタックキャッシングのための方法及び装置 |
JP2000515269A (ja) * | 1996-01-24 | 2000-11-14 | サン・マイクロシステムズ・インコーポレイテッド | スタックを用いる演算マシンのための命令フォールディング処理 |
JP2000515270A (ja) * | 1996-01-24 | 2000-11-14 | サン・マイクロシステムズ・インコーポレイテッド | ネットワークまたはローカルメモリから受け取った命令セットの実行のための二重命令セットプロセッサ |
JP2002508563A (ja) * | 1997-12-15 | 2002-03-19 | モトローラ・インコーポレイテッド | ソフトウェア・エミュレーションを改善するために異なるデータ・タイプの複数の結果を生成するコンピュータ命令 |
WO2000034844A2 (en) * | 1998-12-08 | 2000-06-15 | Jedi Technologies, Inc. | Java virtual machine hardware for risc and cisc processors |
Also Published As
Publication number | Publication date |
---|---|
WO2002029555A1 (en) | 2002-04-11 |
KR100890243B1 (ko) | 2009-03-24 |
CN1434938A (zh) | 2003-08-06 |
CN1287270C (zh) | 2006-11-29 |
KR20030034243A (ko) | 2003-05-01 |
RU2002127807A (ru) | 2004-02-27 |
US7003652B2 (en) | 2006-02-21 |
IL151396A0 (en) | 2003-04-10 |
RU2263949C2 (ru) | 2005-11-10 |
JP4950408B2 (ja) | 2012-06-13 |
EP1323032B1 (en) | 2009-09-30 |
GB2367653A (en) | 2002-04-10 |
IL151396A (en) | 2008-08-07 |
TWI224280B (en) | 2004-11-21 |
GB0024402D0 (en) | 2000-11-22 |
US20020066003A1 (en) | 2002-05-30 |
EP1323032A1 (en) | 2003-07-02 |
MY127147A (en) | 2006-11-30 |
GB2367653B (en) | 2004-10-20 |
DE60140068D1 (de) | 2009-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4950408B2 (ja) | 変換した命令の再始動 | |
JP4938187B2 (ja) | ネイティブおよび非ネイティブの命令集合間相互呼び出し | |
JP4833499B2 (ja) | レジスタ内へのスタックオペランドの格納 | |
EP0950216B1 (en) | A processing device for executing virtual machine instructions | |
US20020083302A1 (en) | Hardware instruction translation within a processor pipeline | |
US6895460B2 (en) | Synchronization of asynchronous emulated interrupts | |
US8185882B2 (en) | Java virtual machine hardware for RISC and CISC processors | |
US8769508B2 (en) | Virtual machine hardware for RISC and CISC processors | |
JP2004538556A (ja) | 複数命令セットシステムにおける非処理操作処理 | |
GB2367652A (en) | Scheduling control within a system having mixed hardware and software based instruction execution | |
GB2367658A (en) | Intercalling between native and non-native instruction sets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070727 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100806 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101104 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110531 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110930 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20111005 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120302 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120309 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150316 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4950408 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |