JP2004527824A - データプロセッサ及び処理方法 - Google Patents
データプロセッサ及び処理方法 Download PDFInfo
- Publication number
- JP2004527824A JP2004527824A JP2002564730A JP2002564730A JP2004527824A JP 2004527824 A JP2004527824 A JP 2004527824A JP 2002564730 A JP2002564730 A JP 2002564730A JP 2002564730 A JP2002564730 A JP 2002564730A JP 2004527824 A JP2004527824 A JP 2004527824A
- Authority
- JP
- Japan
- Prior art keywords
- address
- instruction
- value
- java
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title 1
- 230000008859 change Effects 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims description 48
- 238000000034 method Methods 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 3
- 238000013329 compounding Methods 0.000 claims 1
- 238000004148 unit process Methods 0.000 claims 1
- 230000006870 function Effects 0.000 abstract description 21
- 230000009191 jumping Effects 0.000 abstract 1
- 239000004020 conductor Substances 0.000 description 12
- 238000010586 diagram Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000007717 exclusion Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 201000008103 leukocyte adhesion deficiency 3 Diseases 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000021615 conjugation Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization 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
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
-
- 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/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
Abstract
Description
【0001】
本発明はデータ処理システムに関する。より詳細には、データ処理命令の実行を行うソフトウェアインタプリタを有したシステムに関する。
【背景技術】
【0002】
ジャバ(Java(登録商標))のプログラミング言語は、サンマイクロシステムズ社によって開発されたオブジェクト指向の高度なプログラミング言語であり、小さなパーソナルコンピュータからスーパーコンピュータまで及ぶ多様なコンピュータ上で実行されるべく十分に他のシステムに移植可能に設計してある。ジャバ(及び他の言語)で書かれた計算機プログラムは、ジャバ仮想マシン(JVM)によって実行のための仮想マシン命令へとコンパイルされ得る。一般に、ジャバ仮想マシンは仮想マシン命令を復号化し、及び実行するインタプリタである。
【0003】
ジャバ仮想マシンのための仮想マシン命令は、それらが1つ以上のバイトを有することを意味する、バイトコードである。バイトコードは、「クラスファイル」と呼ばれる特別のファイル形式で格納される。バイトコードに加えて、クラスファイルは他の付随的な情報と同様に記号表も有する。
【0004】
ジャババイトコードとして1つ以上のクラスファイルで体系化された計算機プログラムは、プラットフォームに依存しない。その計算機プログラムは、ジャバ仮想マシンのインプリメントを実行可能なすべてのコンピュータ上で変更されることなく、作動され得る。ジャバ仮想マシンは「一般的な」コンピュータのソフトウェアエミュレータであるが、このことはジャバ仮想マシンの計算機プログラムがプラットフォームに依存しないことを可能にする主な要因である。
【0005】
ジャバ仮想マシンは、ソフトウェアインタプリタとして広くインプリメントされている。従来のインタプリタは、実行の間にインタープリットされたプログラムの命令のうちの仮想命令を一度に1つの命令ずつ復号化し、及び実行する。他方ではコンパイラは、実行よりも前に仮想マシン命令をそれぞれの機械語命令に変形する結果、符号化は実行の間に仮想マシン命令上で行なわれることがない。従来のインタプリタは、命令に遭遇し、その命令を実行する前に繰り返し各命令をデコードするため、インタープリットされたプログラムの実行はコンパイルされたプログラムより典型的には遅い。コンパイルされたプログラムは、それぞれのマシン或いはコンピュータシステム上でコンパイルされたプログラムのそれぞれの機械語命令を直接実行できるためである。
【0006】
インタープリットされたプログラムを復号化し、及び実行するためにソフトウェアインタプリタを実行させなければならないため、ソフトウェアインタプリタは、インタープリットされたプログラムには利用可能にならない資源(例えばメモリ)を消費する。これは、それぞれの機械語命令として実行することにより、ターゲットコンピュータ上で直接実行され得、そのため一般に、インタープリットされたプログラムより少ない資源を必要とする、コンパイルプログラムと対照的である。
【0007】
従って、インタープリットされる計算機プログラムの実行速度を増加させるための新しい技術に対する必要性がある。さらに、それらが要求する資源の点から効率的なインタプリタを提供する必要がある。
【0008】
多数の埋め込みデバイスは、ジャバ言語のプラットフォームに依存せず遍在可能な性質、及びジャバ仮想マシンのインプリメントの発展に起因してジャバを利用可能とするものになってきている。多数の低廉に埋め込まれたシステムは、専用ジャバプロセッサ又はハードウェアのアクセラレータ(例えば個別のコプロセッサ)のハードウェアオーバヘッドを回避するためにJVMとしてジャバ処理機能をインプリメントすることが望ましい。JVMをインプリメントし、及びジャバプログラムを実行することへの単純なアプローチは、ソフトウェアのインタプリタの使用を介することにある。
【0009】
インタプリタは、解釈された命令ストリームの命令取り出し、復号化及び実行の標準的機能を行う点において、プロセッサのソフトウェアバージョンをインプリメントする。インタプリタは、取り出し、デコード及び実行のステップを繰り返すプログラムループとして典型的にインプリメントされる。
【0010】
ジャバ命令(バイトコード)が取り出されることにより、インタプリタは仮想プログラムカウンタ(ジャバPC)を維持し、各解釈されたジャバ命令の復号化は、大きなケース文(スイッチ文)によってバイトコードの個々の2進法符号化に対応する節で行なわれる。各節の内のコードは、バイトコードによって定義された実際の処理を行う。
【0011】
バイトコードを取り出し、復号化する必要があるため、各バイトコードの処理に関連付けられたオーバヘッドがある。多くのジャバ命令(バイトコード)は単純な処理を行うため、シーケンスの取り出しと復号化の部分に関連したオーバヘッドは、実行時間全体の大きな割合を占め得る。
【0012】
ジャバ環境が複数の実行スレッドについての概念をサポートするので、インタプリタループの追加の機能は、スレッド(又はタスク)スイッチがいつ生じるか決めるために使用されるカウンタを維持することにある。
【0013】
ジャバ仮想マシンのいくつかのインプリメントでは、スレッドスイッチ判定は実行されたジャババイトコードの数に基づく。インタプリタループが実行するたびに修正され、それを前もって定義した所定値と比較したカウンタ値を維持することによって、インタプリタはスレッドスイッチ論理をもインプリメントすることとなる。カウンタを維持しスレッドスイッチすべき時を決定することはさらに、有意なオーバヘッドを作成する。このオーバヘッドは、ソフトウェアインタプリタの処理効率を有意に限定する。
【発明を実施するための最良の形態】
【0014】
本発明は、添付の図面によって限定されるものではなく例示のために実施例によって説明され、同一の参照符号は同一の部材を示す。以下の記載において、多数の特定の詳細は、特定の単語、バイト長など、本発明についての完全な理解を提供すべく表現されている。しかしながら、本発明がそのような特定の詳細なしで実行され得ることは、当業者にとって明白である。その他、回路は本発明を不必要に詳細を不明瞭にしないようにブロック図の形態で示されている。大部分において、タイミング考察などに関する詳細は、本発明についての完全な理解を得るために詳細は得るのには必要ではない場合には割愛されているが、当業者の想到する範囲内にある。
【0015】
用語「バス」は、データ、アドレス、制御又はステータスなどの1つ以上の多種の情報を転送するために使用され得る、複数の信号又は導体を示すために使用される。用語「主張する」及び「否定する」は、それぞれ信号、ステータスビット、又は同様の装置が論理上真、又は論理上偽であることを示すことに言及する時に使用される。論理上真の状態が論理レベル1である場合には、論理上偽の状態は論理レベル0である。また、論理上真の状態が論理レベル0である場合には、論理上偽の状態は論理レベル1である。以下の記載及びダイアグラムにおいて、16進法は、「0x」をプリペンディング(pre-pending )することによっていくつかの値について使用される。したがって、数値0×ffは10進法の値255に相当する。
【0016】
図1は、データ処理システム10の一実施形態を示し、プロセッサ12、コプロセッサ14、コプロセッサ16、メモリ18、他のモジュール20、及びバス28を介して全て双方向接続される外部バスインタフェース22を有する。本発明の代替の実施形態は、1つのコプロセッサ14、2つのコプロセッサ14,16、若しくはより多数のコプロセッサ(図示せず)を有していてもよい。外部バスインタフェース22は、集積回路ターミナル35を介して外部バス26に双方向接続されている。メモリ24は、外部バス26に双方向接続されている。プロセッサ12は随意に、集積回路ターミナル31を介してデータ処理システム10へ外部へと接続されていてもよい。コプロセッサ14は、随意に、集積回路ターミナル32を介してデータ処理システム10へ外部へと接続されていてもよい。メモリ18は、随意に、集積回路ターミナル33を介してデータ処理システム10へ外部へと接続されていてもよい。他のモジュール20は、随意に、集積回路ターミナル34を介してデータ処理システム10へ外部へと接続されていてもよい。プロセッサ12は、コプロセッサインタフェース30を介して、コプロセッサ14及びコプロセッサ16の両方に双方向接続される。ジャバコード実行のコンテキストにおける、データ処理システム10内のプロセッサ12の特定の処理を下記に参照する。
【0017】
図2,3を参照して、ジャバプログラムの命令の従来の実行方法の例を示す。公知のインタプリタにおける一般的な重要な性能の問題は、命令フローを変更すること、及び各エミュレートされたジャババイトコード間のインタプリタオーバヘッドルーチンを実行することにおいて、ソフトウェアによって相当量の時間が費やされるという事実である。図2の命令実行ステップの例はこのポイントを強調する。図2のステップ1〜7のすべての識別されたステップは、ソフトウェアプログラムのフロー変更を必要とすることに注意すべきである。従来技術において、インタプリタオーバヘッド54などの1つ以上のソフトウェアルーチンは、反復して飛ばされる必要があり、これは追加のインタプリタオーバヘッドを作成する。図3は図2と同一のソフトウェアルーチンを示すが、インタプリタオーバヘッドルーチンを行うために必要な時間とソフトウェアの量の関係を、a,f,cなどの多様な関数のためのエミュレーションコードを実行するために必要なより少ない時間及びソフトウェアと比較として、より明白に示す。インタプリタオーバヘッドソフトウェアはジャババイトコードの取り出し、復号化、及びディスパッチを含む。ディスパッチは、エミュレートされたジャババイトコードに対応するエミュレーションコードに飛ばすために行なわれたステップである。インタプリタオーバヘッドは、スレッドスイッチングがいつ生じるか判定するためにカウンタ機能を行うためソフトウェアをさらに有することに注意する。インタプリタオーバヘッド54のソフトウェアは、更新させられておかれなければならないジャバ仮想マシンのための仮想プログラムカウンタも有することに注意する。図2,3は、ジャバプログラムバイトコード、及び現実にジャバプログラムが必要とするバイトコードを実行するためにプロセッサ(例えば図1のプロセッサ12)によって必要とされるエミュレーションコード表の両方を示すことに注意する。プロセッサ12によって実行されるジャババイトコードごとについて、ジャババイトコードのエミュレーションを行うために必要とされるコードが2つのコンポーネントを必要とすることに注意する。第1のコンポーネントは現実に関数(a,f,c)を実行するためのコードであり、第2のコンポーネントは、インタプリタオーバヘッド54のソフトウェアにエミュレーションコードの実行を返信するソフトウェアルーチンである。図3を参照すると、太線で示されたインタプリタオーバヘッドソフトウェアはジャババイトコードを実行するために必要とされるソフトウェアの非常に重要な部分となり得る。その結果、エミュレーションコードのインタプリタオーバヘッド部分を実行するために必要なソフトウェアと時間の量を効率的に減らすシステム及び方法が開示される。図2から、各関数(a,f,c)を実行するために必要なエミュレーションコードは、サイズが著しく異なることがあり典型的には異なっており、及び多くの場合比較的少量のコードである点に注意されたい。対照的に、特定のジャババイトコードを実行するために必要なエミュレーションコードと比較して、インタプリタオーバヘッド54のソフトウェアは相当量のコードである。
【0018】
図4を参照すると、ジャバプログラム60、及び本発明の一実施形態により図1のプロセッサ12によって実行され得るその対応するエミュレーションコード表62の一実施例が示される。図4に示された本発明のプログラム実の行実施例では、各ジャババイトコードはエミュレーションコード表62に対応するグループを有することに注意する。一般的な感覚では、本発明はジャバプログラムにのみ使用することに限定されていないので、各グループはプログラムの所定の処理コードに関連づけられる。バイトコードa,f,c…のバイトコード実行は、示されるようにステップ1,2,3の順序で、コードのエミュレーションコード表62中で検索によって生じる。図4に示された本発明の特定の実施例において、エミュレーションコード表62中の各符号群は、0×0、0×1などのジャババイトコードの16進法の値によって定義されるように、プロセッサ12の命令のうちの16個を含んでいる。16の数は、未使用のスロットを過度に存在させずに、ほとんどのジャババイトコードをエミュレートするために十分な命令スロットを提供する値に選択されている。いくつかのジャババイトコードは、実行するために16未満のプロセッサ12命令を使用し、いくつかはより多く使用する。その結果、本発明の代替の実施形態は、各グループとして、プロセッサ12の命令スロットをいくつ使用してもよいことがわかる。さらに、グループの数は、より高レベルの言語によって必要とされたバイトコードの数によって変化し得る。さらにエミュレーションコードによって飛ばされなければならない個別のルーチンとしてインタプリタオーバヘッドソフトウェアがもはや必要とされないことに注意されたい。図2に示されるような従来技術において必要とされたインタプリタオーバヘッドは、「ジャバSWプラスオーバヘッド」とラベルを付けられる各グループで使用されるコードの1つのブロックによって置換された。コードの「ジャバSWプラスオーバヘッド」ブロックは、プロセッサ12によって実行されたエミュレーションコードの全体にわたって配信されることに注意されたい。図4に示されたソフトウェアフロー、及びエミュレーションコード表は、図2に示された従来技術と比較すると、フローステップのより少数の変更を有することに注意されたい。フローの変更は制御の変更の1つの形式であること、及び飛ばす命令をインプリメントする代わりに制御の変更が、ユーザとスーパバイザのモード間に移るようにインプリメントされる場合に、行なわれ得る処理が別の処理と成り得ることが理解される。本発明によって提供されるフローステップの変更の減少は、相当量のソフトウェアオーバヘッドを節約する。図2,4の両方の中で示された矢印が実行のために追加のソフトウェアを必要とすることに注目することは重要である。図4に示された実施形態において各ジャババイトコードには16個の命令スロットを割り付けられているが、いくつかの特定のジャババイトコードは必ずしも16個の全ての命令スロットを必要とするとは限らない点に注意する。他方では、いくつかのジャババイトコードは、エミュレーションコードにおいて16個を越える命令スロットを要求する。この実施例は図5で説明される。従って、図4は、図1のプロセッサ12によって実行可能なエミュレーションコード表62を示す。図示された形式では、コードエミュレーション表62は、16進法のアドレス0×0から0×FFによって識別されるような各ジャババイトコードのエミュレーションに割当てられた256個の等しい大きさのグループを有する。従って、ジャバプログラムがプロセッサ12によって実行される場合、図4に示されたエミュレーションコード表はより連続したフローを提供する。このより連続したフローは、従来技術(図2を参照)において必要だった、相当数のプログラムフロー変更のために必要とされていたソフトウェアオーバヘッドの量を減少させる。
【0019】
図5を参照する。図5は、グループサイズがエミュレーションコード表63に可能とするより多くのエミュレーションコードを必要とするジャババイトコードのために本発明がどのように使用され得るかを示している。エミュレーションコード表63が図5に示される。図5に示される例では、ステップ1として、矢印によって示されたアドレス0×67でエミュレーションコードの最初の部分が開始することが仮定される。ステップ2は、16個の命令スロットが全て使用されたが、対応するバイトコードは、さらなるエミュレーションコードを必要とすることを指示している。従って、ステップ2は、エミュレーションソフトウェアフローがジャババイトコードの実行を終了するためにコードの新しく利用可能なブロックに移行する必要があることを示す。図5に示された実施例において、ステップ2は、ジャババイトコードの実行を終了するためにコードのブロックが見つけられることがある、エミュレーションコードの元のエミュレーションコード表62の末尾を過ぎた場所へ飛ばす形態でのプログラム実行の転送を示している。この追加のコードは任意のサイズであってよく、システム資源によってのみ制限を受ける。追加のコードは、残っているジャババイトコードエミュレーションコードの記憶が実行されることを可能にすべく利用可能な資源が存在するのであれば、システムのいかなる場所にも格納され得る。従って、選択された飛び先アドレスはデータ処理システム内のアドレスの全範囲よりも小さい、所定の範囲(0 ×0 〜0 ×FF)のアドレス内にあってもよく、或いは、選択された飛び先アドレスは、利用可能な資源が存在する記憶のためのアドレスの所定範囲の外部であってもよいことが理解されるべきである。ステップ3は、一旦特定のジャババイトコードのためのエミュレーションコードが終了したならば、エミュレーションコードは、「ジャバSWプラスオーバヘッド」ソフトウェアが開始する位置の256個のグループ内のグループのうちのいずれへも飛ばすことで再送が可能である。従って、エミュレーションコード表63の末尾にて、ジャババイトコードエミュレーションを終了するために必要なさらなるソフトウェアは、「ジャバSWプラスオーバヘッド」ソフトウェアを含む必要はない。この処理上の特徴は、ジャババイトコードがエミュレーションコード表63の中で1つのグループのみを使用した場合にはエミュレートできない時に、少なくとも1つのグループの「ジャバSWプラスオーバヘッド」ソフトウェア部分の再使用を可能とする。
【0020】
図6を参照すると、各グループに配信された命令スロットの数の選択は重要な問題である。選択は通常、エミュレーションコード表の全体サイズ、及び、グループサイズを越えてオーバーフローするジャババイトコード数の間のトレードオフに関連する。図6に示された実施形態は1つのグループ当たり16個の命令スロットを使用するが、本発明の代替の実施形態は命令スロットの異なる数をグループサイズとして最適とすることもある。固定されたグループサイズを有することは、各エミュレートされたバイトコードのエミュレーションコードを指すために使用されるアドレス計算を非常に単純化することに注意されたい。これは、プロセッサ12で各命令について演算するための相当量の時間となり得、データ処理システム10全体の性能に著しく影響し得る。
【0021】
さらに図6を参照すると、データ処理システム10の性能を改善するためにデータ処理システム10(図1、コプロセッサ14,16を参照)の一部として1つ以上のハードウェアによるアクセラレータが使用されてもよい。コプロセッサは、使用可能なハードウェアアクセラレータのうちの単なる一種類である。図6を参照すると、IADD(整数加算)ルーチンは、ハードウェアのアクセラレータの有無に基づき、エミュレーションコード表がどのように変化するかを示すために、2つの方法で示されている。整数加算の機能は、例示の目的のみにおいて選択されている。図6の「IADD」ルーチンの左側にあるのは、ハードウェアのアクセラレータが存在しない場合に、プロセッサ12によって実行され得るソフトウェアのルーチン80である。右側のコード82は、ハードウェアのアクセラレータ(例えばコプロセッサ14)が存在する場合に、プロセッサ12によって実行され得るルーチンを示す。ジャババイトコードの実行の有意な部分を行うために、ハードウェアがアクセラレータが使用されてもよいことに注意する。図6の左右のコードブロックを比較するとハードウェアアクセラレータが使用される場合、以前にプロセッサ12によって実行されなければならなかった、ロード及び記憶命令の相当数がもはや必要とされないことは明白である。図8に関してより詳細に記載されるように、ユーザ決定可能な制御信号は、本発明の一実施形態において提供される。この実施形態では、システムユーザに、所定のコードサイズグループの第1のエミュレーション表構造、又は異なる所定のコードサイズグループの別のエミュレーション表構造のいずれかを選択することを可能にする。ハードウェアアクセラレータ及びプロセッサは、通信を行い、及びジャババイトコードの実行を調整するために、ある種類のインタフェース又はハンドシェイクのメカニズムを有する必要があることに注意されたい。図1を参照すると、プロセッサ12、及びコプロセッサ14,16は、コプロセッサインタフェース30を介して通信する。プロセッサ12とコプロセッサ14,16との間の通信は、スレッドスイッチングがジャバプログラムに生じ得るという事実によって複雑になり得る。ジャバプログラム実行の間に、ソフトウェアの少なくとも1つの部分が、タスクを切り替え、及び別のタスクがプロセッサ12実行時間の一部を有することを可能にすることが必要か否かを判定するために周期的にチェックする必要がある。このジャワでのソフトウェアのタスク間のスイッチング、又は変更は、スレッドスイッチングと呼ばれる。図1を参照すると、プロセッサ12は、スレッドスイッチングが生じることか否かに基づいて、有効なジャババイトコードが実行されることになっているかを条件付きでコプロセッサ14,16へシグナリングする。この信号はジャバSW命令の実行の一部であり、プロセッサ12もバイトコードを実行していなければ、コプロセッサがジャババイトコードを実行すべきでないため、スレッドスイッチが行われず、スレッドスイッチが行われるときには、そのときのスレッドが再開されるまで、通常実行されていたジャババイトコードは実行されないまま残される、という事実による条件付きである。コプロセッサインタフェース30は、プロセッサ12及びコプロセッサ14,16が他方によって行われているソフトウェアフローへの視程を有することを可能にすべく、スヌーピング、又は同報通信をさらに有してもよい。本発明で使用され得る、公知のプロセッサの1つからコプロセッサへのインタフェースに関する特定の情報については、参照によって本明細書に組込まれる米国特許第5,983,338号を参照することができる。
【0022】
図6のエミュレーションコード表72は、各グループが対応するジャババイトコードに割当てられている、256個のアドレス可能なグループ(0×0〜0×ff)を有する。エミュレーションコード表中のジャバスレッドスイッチングをインプリメントするために、エミュレーションコードを探し出すことが望ましい。各グループ内で命令スロットが定数であるにより、スレッドスイッチングソフトウェアのために使用可能な、割り付けられていない記憶場所はエミュレーションコード表72にはない。従って、スレッドスイッチングコードを探し出すために、1つ以上のグループ内の未使用の命令スロットを使用することが必要である。本発明の一実施形態では、スレッドスイッチングソフトウェアルーチンは、ジャババイトコードゼロ(0)に相当する最初のグループに位置する。このグループが、例えば4つの命令スロットのみを要求する、不処理(NOP)命令に割当てられるため、スレッドスイッチングを行うために、ソフトウェアルーチンの少なくとも一部を記憶するために12個の未使用の命令スロットがある。スレッドスイッチングルーチンが割り付けられたスロット内に適合しない場合、エミュレーションコード表63について図5で説明されたように、エミュレーションコード表72の末尾を過ぎた場所へ飛ばされ得る。本発明の代替の実施形態は、エミュレーションコード表72内の他の場所のスレッドスイッチングを行うためにソフトウェアを設けることがある。スレッドスイッチングソフトウェアを探し出すためにエミュレーションコード表72中にあるこの第1のグループを使用することは、ハードウェアに、プロセッサ12でハードウェアを使用して、より単純な方式で実行されるジャバSW命令(さらにここに記載される)の実行することを可能とさせる。
【0023】
図7は、上記の図4,5のエミュレーション表中で参照された「ジャバSW」命令のさらなる詳細を示している。本発明の一実施形態において、ジャバSW命令は、プロセッサ12(図1を参照)によって実行される命令である。ジャバSW命令の実行をさらに明確にするため、図1のプロセッサ12の詳細な部分が、図8においてさらに提供される。図8に、命令レジスタ116が示されている。命令デコード104は、命令レジスタ116の出力に接続された導体117を介して、命令レジスタ116からプロセッサ12命令を受信するための入力と、制御回路105の入力に接続された出力とを有する。制御回路105は、さらに入力118にて、実行されるべきジャババイトコードを受信する。制御回路105の出力は、マルチプレクサ(Mux)及びコンバイナ106の制御入力と、プログラムカウンタ108及び他のレジスタ109を有するレジスタ107の入出力端子と、算術論理演算ユニット(ALU)110の入出力端子と、アドレス選択ロジック111とに、導体130を介して接続されている。インクリメント回路112はアドレス選択ロジック11の第1の入力に、導体120を介して接続された出力を有する。飛び先アドレス121は、アドレス選択ロジック111の第2の入力に接続される。除外アドレス122は、アドレス選択ロジック111の第3の入力に接続され、ブランチアドレス123はアドレス選択ロジック111の第4の入力に接続される。Muxとコンバイナ106の出力は、ジャバSWプログラムカウンタアドレス124の提供のためにアドレス選択ロジック111の第5の入力に接続される。導体133は、インクリメント回路112の入力と、アドレス選択ロジック111の出力と、制御回路105との間の通信のためのプログラムカウンタ108の入出力端子とに接続される。飛び先アドレス121、除外アドレス122、及びブランチアドレス123は、制御回路105によって提供される。Mux及びコンバイナ106は定数0×8 100を受信するための入力と、R4<<1と等しい値(1桁だけ左シフトされているレジスタ109のレジスタR4にある値)を有した101入力と、R4<<5と等しい値(5桁だけ左シフトされているレジスタ109のレジスタR4にある値)を有した入力102と、表103の外側の入口箇所と、プログラムカウンタ値+2(PC+2)を受信するための入力とを有する。制御回路105は、1つ以上の導体134によってスイッチスレッドしきい値を受信するためにさらなる入力を有する。
【0024】
図7を参照すると、ジャバSW命令の一実施形態の処理は、「準(quasi )C」コードの形式で記述される。一実施形態では、ジャバSW命令はバイトコードエミュレーションシーケンスに飛び先を生じる。方92は、このバイトコードエミュレーションシーケンスのアドレスが計算される方法を示している。式92のブラケット内に入れられた部分は、ジャバSW命令の実行の間にレジスタ107のプログラムカウンタ108(PC)にロードされる飛び先アドレスを示す。この値は、図8のMux及びコンバイナ106によって、導体を介してアドレス選択ロジック111へ提供される。式92の値「PC+2」は、プログラムカウンタ108がインクリメント回路112によって増分された後のプログラムカウンタ値である。この増分は、プロセッサ12の実行パイプラインの自然なステップとして生ずるため、基底アドレス値として使用するために便利である。本発明の他の実施形態では、増分されていないプログラムカウンタ値PCが代わりに使用されてもよい。その後、増分されたプログラム値は、値0×ffffe000で論理積の処理がされる。このブール演算は、(PC+2)の値の下位13ビットをゼロにする効果がある。生じるアドレスは、エミュレーションコード表72(図6を参照)中の第1のバイトコード命令グループの第1の命令スロットを指す。本発明のいくつかの実施形態では、論理積が要求されないかもしれないことに注意する。代わりに、値PC+2の下位13ビットは切り捨てられ得る。このポインタ値が切り捨てられない場合、それは、グループサイズに対応する量だけシフトされた、レジスタ109のうちの1つのレジスタR4に格納されたジャババイトコード値で論理和の処理がされ得る。この記述された処理は、エミュレーション表72内の正確な場所へと有効に新しいプログラムカウンタアドレスにインデックスを付ける結果、プログラムカウンタレジスタはここでプロセッサ12によってエミュレートされることになっているジャババイトコードのための正確な命令グループの開始へ向かう。ポインタ値を形成する代替の方法は、単にレジスタR4に格納されたジャババイトコード値を備えたPC+2の上位18ビットを連結し、次に32ビットのアドレスを形成すべくその結果に5ビットのゼロをパッドすることである。飛び先アドレスは多様な方法で形成され得る。しかしながら、飛び先アドレスを形成するための多様な技術やその組み合わせにかかわらず、結果は常に、そのときのジャババイトコードに相当するエミュレーションコード表72(図6を参照)内の正確な命令グループの開始を指すアドレスである。スレッドスイッチングが生じていない場合には、飛び先アドレスを計算するために、ここでも式92が使用される。文91が真の場合、スレッドスイッチングは生じない。文91は、スイッチカウント(SWCOUNT)しきい値(プログラムタスクの変更がデータ処理システムによって増分されるべき時点)が、別のジャバスレッドへの変更を生じさせるべきか否か判定するために掛け合わせられたか否かを測定している。従って文91は、例えば所定値であるスイッチカウントしきい値を備えたスイッチカウント値などの、値の比較判定を必要とする。文91が真の場合、第1の結果があり、文91が真でない場合、第2の結果がある。しかし、文91が真でない場合には、「条件分岐(else)」、文93は、プログラムカウンタ108に格納される飛び先アドレスを計算するために使用されている式94に帰着する。式94におけるAND演算が式92に関して上記されたものと同じAND演算であってもよい。しかし、式94の論理和演算は、スレッドスイッチングソフトウェアを有するエミュレーションコード表92の部分へインデックスを付けるために使用される。ここでも式94においてAND演算の代わりに切り捨て処理が使用される場合、その切り捨て処理の結果を、0×8で一定であるスレッドスイッチングソフトウェアへのオフセットに連結、又は組み合わせてもよい。文95は、ジャバSW命令が次にスイッチカウント値(SWCOUNT)を減少させることを示す。本発明のさらなる実施形態は、ダウンカウンタの代わりアップカウンタを使用してもよく、或いはスイッチに遭遇する前に特定の時間を割当てるタイマを備えるなどの他の方法でスレッドスイッチングの追跡記録をしてもよいことは、明らかである。図7に示した実施形態は非常に特殊な方式で飛び先アドレスを選択するが、本発明の代替の実施形態は、式92,94、及び文93をインプリメントするために他の式を使用し得る。上記に示された本発明の実施形態はバイトコードエミュレーションシーケンスに飛ばすために式92,94によって指定された特定のアドレスを使用するが、本発明のさらなる実施形態では、他の好適なアドレスへ飛ばすために式92,94を変更した方式で使用し得る。図7に示された本発明の実施形態はバイトコードエミュレーションシーケンスに飛ばすために使用されたプロセッサ12命令を説明するが、本発明のさらなる実施形態では、多様な目的において複数の飛び先の宛先アドレスのうちの1つへジャンプするために、この種類の命令を使用し得る。本発明はこのように、ジャババイトコードエミュレーションシーケンスへ飛ばすことに限定されないが、他の種類の飛ばし方に適用可能である。さらに、文91,93は、複数の可能な飛び先宛先アドレスのうちの1つを選択する、任意の種類の可変条件であってもよい。文95が随意のものであり、いくつかの実施形態では使用されなくてもよいこともまた、認識されるべきである。
【0025】
図7に示された命令形式90もまた、処理コードと呼ばれ得る。好適な実施形態において、命令形式90は命令レジスタ116に保持され、図8の命令デコード104回路によって復号化され、続いて、プロセッサ12中のジャバSW命令を実行するために制御回路105に提供される。
【0026】
ジャバSW命令が常に行われる間に、飛ばす処理が生じることに注意されたい。その飛ばすことは随意、又は条件付きのいずれでもなく、複数の飛び先宛先アドレスのうちの1つへと常に生じるものである。
【0027】
さらにR4<<5は、この場合にはバイトコード値である所定値が、それがレジスタR4にロードされる前に、5ビットだけ左シフトされていることに注意されたい。図7に示された本発明の実施形態では、各命令の長さは16ビットであり、それにより、記憶装置を2バイト占める。5ビットの左シフトは、32バイトの乗算、或いは16個の命令と等しい。図6を参照すると、バイトコード値を5桁シフトすること又は32の乗算する理由は、エミュレーションコード表72内の正確なバイトコード命令グループにインデックスを付けるためにエミュレーションコード表72へオフセットすることを可能にすることである。従って、値R4<<5は、エミュレーションコード表72内の正確なグループの開始点に飛び先宛先アドレスポインタを移動させるために使用される。
【0028】
本発明の代替の実施形態では、1つを越える命令を使用して、ジャバSW命令機能のインプリメントを含むことがあることが認識される。本発明の一実施形態では、ジャバSW命令はカウンタを制御し、かつ表の飛び先をインプリメントする能力を単一の命令として組み合わせることに注意されたい。これは、式92又は94のうちの一方に加えて行われる文95として図7に示される。ジャバSW命令については、命令フローの変更が常に得られ、これは条件付き分岐命令のための場合でないことに注意されたい。ジャバSW命令に応じて行われたジャンプは、双方が所定の表にある(図4のエミュレーションコード表62を参照)2つアドレスのうちの1つにある。さらに、本発明の一実施形態では、表を飛ばす宛先がジャババイトコード値及びカウンタ値の両方の関数である場合に、ジャバSW命令は表を飛ばす処理を行う。本発明の一実施形態では、カウンタ値は、スレッドスイッチングがいつ生じるかを判定するためにジャバインタプリタによって使用されるスイッチカウント値(図7のSWCOUNT)であってもよい。一実施形態では、レジスタ109のうちの1つはカウンタとして使用されてもよい。代替の実施形態は、このスイッチカウンタ関数をインプリメントするためにプロセッサ12の中で、ハードウェア又はソフトウェアの組み合わせと、ハードウェアとを使用してもよい。ジャバSW命令の一実施形態については、カウンタ値は、飛び先の通常の入口点を、条件付きでエミュレーション表(図7,8において0×8として示されている)に戻される所定の固定入口点によって覆す。代替の実施形態は、0×8以外のアドレスを使用し得る。図7に示されるように、通常の表への入口点は、式92の実行によって決定されたPC値のアドレス計算に相当し、スレッドスイッチングが生じるべきでない場合に、生じる。スレッドスイッチングが生ずべき場合、式92に対応する通常の表入口点は使用されない。代わりに、それはスレッドスイッチがこの場合には行われるべきなので、式94によって定義された入口点によって覆し、通常であればエミュレートされていたであろうジャババイトコードのためのエミュレーションコードはもはや入力されない。
【0029】
ジャバSW命令は、覆されなかった表の入口点が使用される場合に、ハンドシェイク信号(コプロセッサインタフェース30の一部)によってハードウェアのアクセラレータ(例えばコプロセッサ14,16)を条件付きで示す命令を提供する。このハンドシェイク信号は、プロセッサ12が図7の式92を実行しているか(その場合にはバイトコードがプロセッサ12及びハードウェアアクセラレータによってエミュレートされることになっている)否か、及びプロセッサ12が図7の式94の実行によりスレッドスイッチングするか(その場合にはハードウェアアクセラレータがそのときのバイトコードのエミュレーションを行ってはならない)否かを判定することを、ハードウェアアクセラレータに可能とさせる。
【0030】
さらに、ジャバSW命令は、図6に示される通常の表構造が小さな組のバイトコード値によって覆されることを可能とするディスパッチ機能を提供してもよい。例えば、16を越える命令スロットを要求し、そのために割当てられたグループサイズをオーバーフローさせる、一般的に実行されているジャババイトコードではハードウェアが提供されてよい。このハードウェアは、ジャババイトコードによって要求されたコードを実行するためにエミュレーションコード表の外部の場所へ飛ばすことをジャバSW命令に強制する。そのようなディスパッチ機能をインプリメントするために必要な唯一のハードウェアは、それらの割当てられた命令スロットをオーバーフローさせるジャババイトコードの選択された組を復号化するための少量の復号化ロジックと、この選択されたジャババイトコードのためのエミュレーションコードを、エミュレーションコード表に外部の場所へ飛ばすことを可能とさせるるための対応する制御に関連して以下に記載される、図8のコンバイナ106の復号化ロジック及びMuxへの追加の入力103とである。図8に関して以下に記載されるように、このデコード回路は、プロセッサ12の制御回路105内に実装され得る。
【0031】
上記したように、図8は、図1のプロセッサ12の適切な部分の一実施形態のみを示す。繰り返すと、ジャババイトコードをエミュレートするために使用された命令は、命令デコード回路104によって命令レジスタ116から受け取られる。命令デコード回路104はエミュレーション命令を復号化し、制御回路105に復号化された結果を供給する。制御回路105は、これらの命令を実行するためにプロセッサ12内の他の要素に制御信号を供給する。上記されたように、制御回路105は、導体130を介して、レジスタ107、算術論理演算ユニット(ALU)110、及びアドレス選択ロジック111に双方向接続される。制御回路105は、Mux及びコンバイナ106に制御信号を提供する。本発明の代替の実施形態は、Mux及びコンバイナ106への、より多数、より少数、或いは異なる入力を使用してもよい。Mux及びコンバイナ106の出力は、アドレス選択ロジック111への入力として提供されるジャバSWプログラムカウンタアドレス124である。アドレス選択ロジック111は、さらに入力としてブランチアドレス123、除外アドレス122、飛び先アドレス121を受信する。さらに、アドレス選択ロジック111の出力は増加回路112によってインクリメントされ、次に、導体120経由でアドレス選択ロジック111への入力として中へフィード・バックされてもよい。本発明の示された実施形態では、増加回路112は2バイトずつアドレスをインクリメントするが、それは1つの命令と等しい。本発明の代替の実施形態では、様々な量によってアドレスをインクリメントするために増加回路112を使用することもある。アドレス選択ロジック111によるアドレス出力は導体133を介して、プログラムカウンタ108及び制御回路105に供給される。制御回路105は、飛び先アドレス121、除外アドレス122、及びブランチアドレス123を生成するために使用される。制御回路105は、1つ以上の導体134を介して、1つ以上のスイッチスレッドしきい値信号を受信する。上記したように、レジスタ107は、導体130,131,132を介して、算術論理演算ユニット110に双方向接続される。
【0032】
示された実施形態において、Mux及びコンバイナ106への様々な入力は、データ処理システム10に有意な柔軟性を提供する。Mux及びコンバイナ106への入力113は、Mux及びコンバイナ106への他の入力と組み合わせて、多様なジャバSWプログラムカウンタアドレス124値を生成するために使用されるプログラムカウンタ108から、このときのPC+2値を供給する。例えば、一定の0×8を提供する入力100は、図6のエミュレーションコード表72の第1のグループに位置するスレッドスイッチングソフトウェアルーチン76を指すことをジャバSWプログラムカウンタアドレスに強制するために入力113と組み合わせて使用できる。スレッドスイッチングソフトウェアが必要とされるときに、この新しいプログラムカウンタアドレスが使用される。Mux及びコンバイナ106への入力101は、レジスタR4のコンテンツの位置が1桁左シフトされていることを示し、このシフトは2を乗じることと等価である。入力101は、エミュレーションコード表72中のグループが単一の命令を含んでいる場合に、新しいプログラムカウンタアドレスを形成するために使用される。この命令は、対応するバイトコードをインプリメントするためのエミュレーションコードが探し出されるべき、エミュレーションコード表72の末尾を過ぎたところで飛び先アドレスを格納するためのものである。この機能は、図9に関する記載によって以下にさらに示される。Mux及びコンバイナ106への入力102は、32と等価なレジスタR4のコンテンツを5桁だけ左シフトしていることを示す。左シフトされた値R4<<5は、エミュレーションコード表72中のグループを選択するために入力113と結合して使用される。そのようなシフトは、プロセッサ12が前のジャババイトコードの実行を終了し、次のジャババイトコードの実行に移っている場合に、新しいプログラムカウンタアドレスを生成するために行なわれる調整である。Mux及びコンバイナ106への入力103は、通常の表構造がバイトコード値の小さな組によって覆すことを可能にする。換言すると、エミュレーションコード表72の外側のアドレスは、表103外側の入口点のMux及びコンバイナ106への入力信号を介して所定値に変更され得る。本発明の代替の実施形態では、データ処理システム10の必要に基づいて異なる新しいプログラムカウンタアドレスを生成するために使用される、他のMux及びコンバイナ106への入力を有することがある。エミュレーションコード表72内のグループサイズを変更するために、Mux及びコンバイナ106への入力が使用されてもよい。示された実施形態は1つの標準グループサイズをもって説明したが、本発明の代替実施形態では、Mux及びコンバイナ106への入力によって定義された、異なるグループサイズ、或いは多数のグループサイズを使用してもよい。これは、ジャバなどの高水準言語の様々なバイトコードをエミュレートするために必要なコード長を決定する際に有意量の柔軟性をデータプロセッサシステムのユーザに10を提供する。
【0033】
次に図9を参照する。図9は、エミュレーションコード表が大きなバイトコード値のグループのために圧縮されることを可能にするディスパッチ機能を示す。いくつかのバイトコード値については、図5を参照して上記されたように、対応するエミュレーションコードがグループサイズが提供するより多くの命令スロットを必要とすることがある。エミュレーションコードが連続したシーケンスのままであれば、図5のステップ2,3に関連したオーバヘッドは恐らく単純化され得る。ジャババイトコード符号化では、0×c0〜0×ffの範囲にあるバイトコードの大部分が16スロットのグループサイズによって提供されるよりも多数の命令スロットを必要とし、図9の代替のエミュレーションコード表83が好適となり得る。従って、図9は、最初の192個の入口(入口のうちの3/4)が16個の命令スロット(0×bf〜0×0のバイトコードに対応する入口)のグループサイズを有し、最後の64個の入口(入口のうちの1/4)は1命令スロットのグループサイズを有する、256個の入口(バイトコード当たりの1つのグループ)を有した記憶素子として、エミュレーションコード表83を示す。表をこの方式で構築することによって、0×0〜0×bfのバイトコードへの入口は、上記図5,6を参照して記載したように利用され、他方0×c0〜0×ffのバイトコードへの入口は、対応するバイトコードのための実際のエミュレーションコードへの飛び越し命令を有する。この構造は、表のサイズを圧縮することを可能にし、図5で行われたように、これらのより複雑なバイトコードのためのエミュレーションコードは、最初の部分及び最後の部分に分割されることなく、連続した状態に残され得る。このディスパッチ機能はコードを単純化し、図5のステップ2,3を行う必要性を排除することにより、オーバヘッドを縮小する。代わりに、0×c0〜0×ffの範囲にあるジャババイトコードのためのエミュレーションルーチン全体に直接飛び越す、代替のステップ2が導入される。図8を再び参照すると、この表の圧縮は、PC+2入力113及び制御回路105とともに、Mux及びコンバイナ106への入力101を利用することによって行われる。R4<<1を計測することによって、表83の下位64個の入口へのインデックス付けが適切に行われる。Mux及びコンバイナ106への入力113に対応するPC+2値は、制御回路105への入力118中の0×c0〜0×ffの範囲のバイトコードを復号化することに応じて、制御回路105によって図9の初めの入口88を指すように修正される。その後、この修正値は、Mux及びコンバイナ106において表への入口点を選択するために、R4<<1と結合される。制御回路105には、入力118で受け取られたジャババイトコードの使用による、ユーザ決定可能な制御信号をさらにインプリメントされていてもよい。制御信号は、所定のグループサイズの第1のエミュレーション表構造、又は所定のグループサイズの第2のエミュレーション表構造のいずれかを選択し、図5のように構築された記憶装置で作動すべきか、或いは図9のように構築された記憶装置で作動すべきに関してユーザに柔軟性を提供する。
【0034】
図9に示された実施形態は、圧縮された表入口を入手するためにバイトコードとして0×c0〜0×ffのバイトコードの特殊な選択を示しているが、本発明に従って圧縮した表入口として、代替のバイトコードグループが選択されても、或いは、異なる数のバイトコードが選択されてもよい。
【0035】
以上より、インタプリタループに関連したオーバヘッドの様々な態様を組み合わせ、及び最小限にするデータ処理命令が提供されたことが明白である。その命令は一態様において、集積回路チップ内の記憶媒体上に格納されるか、又は、集積回路チップから独立して別個に格納されている。命令のためのハードウェアサポートは、インタプリタ関数を実装するために使用されるメモリの最適化を可能とする。その結果、実行時間、必要とされたハードウェア資源の量、及び必要とされたインタプリタソフトウェアの量の形態において、オーバヘッドが著しく縮小された。本発明は、カウンタの制御と、そこでフローの変更が常に行われる表の飛び越しのインプリメントとを結合する。ジャバSW命令は、バイトコード値及びカウンタ値の両方の関数として表を飛ばした宛先をインプリメントする。カウンタ値は条件付きで、表中の通常に計算された入口点を所定の固定入口点で覆す。スレッドスイッチがインプリメントされていない場合、ジャバSW命令は、さらに条件付きでハンドシェイク信号によってハードウェアアクセラレータに信号を伝える。示された実施形態では、通常のメモリ構造がバイトコード値の小さな組によって覆されることを可能とする、ディスパッチ機能が提供される。メモリ表がバイトコード値の大きなグループのために圧縮されることを可能にするディスパッチ機能も提供される。さらに、メモリ表は単純なバイトコード及び複雑なバイトコードに対応して様々なグループサイズ(例えば2,8,16バイトなど)をサポートするために形成され得る。そのような分岐では、処理コード(バイトコード)は復号化され、そのコードはグループサイズに基づいて、選択的に分離される。
【0036】
上記において、本発明は特定の実施形態に関して記述された。しかしながら、当業者は、請求項に記載される本発明の範囲を逸脱せずに、多様な修正及び変更を行うことが可能であることを認識する。従って、明細書及び図面は限定的な感覚で解釈されるのではなく、1つの例として認識されるものであり、全てのそのような修正は本発明の範囲に含まれるものである。当業者は、図中の要素が単純にするため、及び明瞭にするために例示されたものであり、必ずしも一定の比率で描かれていないことを認識する。例えば、本発明の実施形態についてのより良好な理解を促進するために、図中の要素のうちのいくつかの縮尺は他の要素に比べて誇張されていることがある。
【0037】
利点、他の利点及び問題の解決策は、特定の実施形態に関して上記された。しかしながら、長所、利点、問題の解決策、並びにあらゆる長所、利点或いは解決策を生じさせ、或いはこれらをより明確にすべき任意の要素は、あらゆる請求項にとって重要であったり、必要条件であったり、本質的な特徴などのいずれかの要素として解釈されるものではない。ここに使用された用語「からなる」、「含む」及びこれらの活用は、非排他的な包含物を網羅するように意図される結果、要素のリストを含むプロセス、方法、物品、又は装置は、これらの要素のみを含むものではなく、そのようなプロセス、方法、物品或いは装置に固有の、列挙されていない他の要素を有しうるものである。
【図面の簡単な説明】
【0038】
【図1】一実施形態によるデータ処理システムを示すブロック図。
【図2】ジャバプログラムが実行されたときのに実行フローを示す公知のコードシーケンス。
【図3】図2のジャバプログラム実行に関連したインタプリタのオーバヘッドを示す公知のダイアグラム。
【図4】本発明に従ってプログラムが実行されたときの、ジャバプログラム及び対応するエミュレーションコード表。
【図5】グループサイズが可能にするより多くのエミュレーションコードを必要とするジャバプログラム実行の本発明での例を示すコード表。
【図6】本発明による命令スロットの1つの割当てを示すエミュレーションコード表。
【図7】本発明に従ってジャバプログラム中の命令流れを切り替えるためのジャバインタプリタ命令の説明文。
【図8】本発明によりプログラム実行をインプリメントするための図1のシステムのデータプロセッサの部分を示すブロック図。
【図9】本発明に従って命令スロットの別の割当てを示す一実施形態のエミュレーションコード表。
Claims (9)
- 第1のアドレスにある第1の命令を取得するための手段、及びデータ処理システムをもって前記第1の命令を実行するための手段からなるデータ処理システムでのプログラム実行方法であって、
第1の命令を実行する工程と、
前もって定義した値との値の比較が第1の結果を有する場合に、飛び先アドレスとして前記第1のアドレスに隣接していない第2のアドレスを提供し、及び、前もって定義した値との値の比較が第2の結果を有する場合に前記飛び先アドレスとして前記第1のアドレスに隣接していない第3のアドレスを提供することによって、1つの値に基づいた飛び先アドレスを選択する工程と、
飛び先アドレスへのプログラム実行へ転送することによって、前記第1の命令の実行に応じた制御の変化を常に前記プログラム実行にインプリメントする工程とからなる、プログラム実行方法。 - 前記第1の結果は前記値が前もって定義した値より大きい旨の比較判定であり、及び前記第2の結果は、前記値が前もって定義した値以下である旨の比較判定である、請求項1に記載の方法。
- プログラム実行の間に減少されるアドレス値を有したプログラムカウンタの維持によって飛び先アドレスを生成する工程と、アドレス値の低位の前もって定義した数のビットを切り捨てし、及び飛び先アドレスを生成すべく結果をオフセットと比較する工程とをさらに有する請求項1に記載の方法。
- 実行のための手段によって実行される処理命令の格納のために、前もって定義した範囲のアドレスを有する記憶装置を提供する工程をさらに有し、前記処理命令はグループに配置され、各グループはプログラムの前もって定義した処理コードに関連づけられている請求項1に記載の方法。
- 前もって定義した数量の命令スロットの部分に記憶装置を構築する工程をさらに有し、前記部分のそれぞれの所定量は命令を記憶するために専用されている請求項4に記載の方法。
- 前記記憶装置の部分のうちの1つから前もって定義した範囲のアドレスの外側にあるアドレスへ処理命令の実行を送信し、続いてプログラム実行を前記記憶装置の部分のうちの他の1つの前もって定義した範囲の部分へプログラム実行を転送する工程をさらに有する請求項4に記載の方法。
- 複数のプログラム命令を格納するためのメモリと、
同メモリから前記複数のプログラム命令を取得し、及び選択的に前記複数のプログラム命令を実行するために、データバスを介して前記メモリに接続されたプロセッサと、
前記プロセッサによって実行される複数の処理命令を格納するための記憶装置と、前記複数の処理命令は、各グループが前記複数のプログラム命令のうちの前もって定義した1つに関連づけられるように複数のグループに配列されていることと、
前もって定義したアドレスでの前もって定義した処理命令を実行するとともに、前もって定義した値との値の比較が第1の結果を有する場合に、飛び先アドレスとして前記第1のアドレスに隣接していない第2のアドレスを提供し、及び、前もって定義した値との前記値の比較が第2の結果を有する場合に前記飛び先アドレスとして前記第1のアドレスに隣接していない第3のアドレスを提供することによって、1つの値に基づいた飛び先アドレスを選択するプロセッサとからなり、
前記前もって定義した処理命令の実行は、常に制御の変化をプログラム実行にインプリメントするデータ処理システム。 - 前記プロセッサは、
前記プログラム命令を受信するための命令レジスタと、
前記プログラム命令を特定の処理コード値へ複合化するために前記命令レジスタに接続された命令デコーダと、
前記特定の処理コード値に応じて制御信号を提供するために前記命令デコーダに接続された制御回路と、
前記制御信号を受信し、及び飛び先アドレスを生成するために制御回路に接続されたアドレス発生回路と、
前記回路に応じてオペランドを格納するためにアドレス発生回路に接続されたレジスタと、
アドレス発生回路及び制御回路に接続された論理演算ユニットと、同論理演算ユニットはレジスタによって格納されたオペランドを処理することとからなる、請求項7に記載のデータ処理システム。 - 前記制御回路は、前もって定義したグループサイズの第1の構造、又は前もって定義したグループサイズの第2の構造のいずれかを選択する、ユーザによる決定が可能な制御信号をさらに有する、請求項8に記載のデータ処理システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/779,886 US6857063B2 (en) | 2001-02-09 | 2001-02-09 | Data processor and method of operation |
PCT/US2001/050776 WO2002065276A2 (en) | 2001-02-09 | 2001-12-18 | Apparatus and method for effecting changes in program control flow |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004527824A true JP2004527824A (ja) | 2004-09-09 |
Family
ID=25117889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002564730A Pending JP2004527824A (ja) | 2001-02-09 | 2001-12-18 | データプロセッサ及び処理方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US6857063B2 (ja) |
EP (1) | EP1360582A2 (ja) |
JP (1) | JP2004527824A (ja) |
KR (1) | KR100867564B1 (ja) |
CN (1) | CN1318957C (ja) |
AU (1) | AU2002234146A1 (ja) |
TW (1) | TW586072B (ja) |
WO (1) | WO2002065276A2 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040088703A1 (en) * | 2002-11-05 | 2004-05-06 | Nedim Fresko | Mechanism for implementing an interpreter with hierarchical execution loops |
CA2434280A1 (en) * | 2003-07-03 | 2005-01-03 | Zhong L. Wang | Method and apparatus to guarantee type and initialization safety in multihreaded programs |
ITRM20030354A1 (it) * | 2003-07-17 | 2005-01-18 | Micron Technology Inc | Unita' di controllo per dispositivo di memoria. |
KR100678912B1 (ko) * | 2005-10-18 | 2007-02-05 | 삼성전자주식회사 | 메소드 바이트코드 해석 방법 및 상기 방법에 의해동작하는 시스템 |
US7584344B2 (en) | 2006-05-02 | 2009-09-01 | Freescale Semiconductor, Inc. | Instruction for conditionally yielding to a ready thread based on priority criteria |
US8627303B2 (en) | 2009-11-30 | 2014-01-07 | International Business Machines Corporation | Memory optimization of virtual machine code by partitioning extraneous information |
US8713348B2 (en) | 2010-08-30 | 2014-04-29 | Mediatek Inc. | Apparatus for performing timer management regarding a system timer scheduler service, and associated method |
US9823927B2 (en) | 2012-11-30 | 2017-11-21 | Intel Corporation | Range selection for data parallel programming environments |
US20160179542A1 (en) * | 2014-12-23 | 2016-06-23 | Patrick P. Lai | Instruction and logic to perform a fused single cycle increment-compare-jump |
US11385897B2 (en) * | 2019-10-01 | 2022-07-12 | Marvell Asia Pte, Ltd. | Merge execution unit for microinstructions |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE303056B (ja) * | 1967-08-31 | 1968-08-12 | Ericsson Telefon Ab L M | |
DE2921430A1 (de) * | 1979-05-26 | 1980-12-04 | Haarmann & Reimer Gmbh | 3-methyl-5-keto- alpha , omega -alken- dicarbonsaeuren, verfahren zu ihrer herstellung und ihre verwendung zur herstellung makrocyclischer beta -methyl-ketone |
EP0221577B1 (en) | 1985-11-08 | 1996-01-17 | Nec Corporation | Microprogram control unit |
US4755935A (en) * | 1986-01-27 | 1988-07-05 | Schlumberger Technology Corporation | Prefetch memory system having next-instruction buffer which stores target tracks of jumps prior to CPU access of instruction |
US5434985A (en) | 1992-08-11 | 1995-07-18 | International Business Machines Corporation | Simultaneous prediction of multiple branches for superscalar processing |
US5632028A (en) * | 1995-03-03 | 1997-05-20 | Hal Computer Systems, Inc. | Hardware support for fast software emulation of unimplemented instructions |
JP2857600B2 (ja) * | 1995-05-11 | 1999-02-17 | 松下電器産業株式会社 | プロセッサ及びプログラム翻訳装置 |
JPH10171665A (ja) | 1996-12-09 | 1998-06-26 | Toshiba Corp | ジャンプコード・ジェネレータ、割り込みプログラム選択装置、割り込みプログラム選択方式、及び計算機 |
US6021273A (en) | 1997-06-30 | 2000-02-01 | Sun Microsystems, Inc. | Interpreter generation and implementation utilizing interpreter states and register caching |
US6039765A (en) | 1997-12-15 | 2000-03-21 | Motorola, Inc. | Computer instruction which generates multiple results of different data types to improve software emulation |
US6009261A (en) * | 1997-12-16 | 1999-12-28 | International Business Machines Corporation | Preprocessing of stored target routines for emulating incompatible instructions on a target processor |
US6148437A (en) | 1998-05-04 | 2000-11-14 | Hewlett-Packard Company | System and method for jump-evaluated trace designation |
US6233678B1 (en) * | 1998-11-05 | 2001-05-15 | Hewlett-Packard Company | Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data |
-
2001
- 2001-02-09 US US09/779,886 patent/US6857063B2/en not_active Expired - Lifetime
- 2001-12-18 WO PCT/US2001/050776 patent/WO2002065276A2/en active Application Filing
- 2001-12-18 KR KR1020037010522A patent/KR100867564B1/ko not_active IP Right Cessation
- 2001-12-18 CN CNB018225551A patent/CN1318957C/zh not_active Expired - Fee Related
- 2001-12-18 EP EP01985174A patent/EP1360582A2/en not_active Withdrawn
- 2001-12-18 JP JP2002564730A patent/JP2004527824A/ja active Pending
- 2001-12-18 AU AU2002234146A patent/AU2002234146A1/en not_active Abandoned
- 2001-12-27 TW TW090132540A patent/TW586072B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
EP1360582A2 (en) | 2003-11-12 |
KR20030077612A (ko) | 2003-10-01 |
CN1318957C (zh) | 2007-05-30 |
US20020112149A1 (en) | 2002-08-15 |
US6857063B2 (en) | 2005-02-15 |
CN1531680A (zh) | 2004-09-22 |
KR100867564B1 (ko) | 2008-11-10 |
WO2002065276A3 (en) | 2003-05-15 |
TW586072B (en) | 2004-05-01 |
WO2002065276A2 (en) | 2002-08-22 |
AU2002234146A1 (en) | 2002-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10776114B2 (en) | Variable register and immediate field encoding in an instruction set architecture | |
JP3797471B2 (ja) | マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置 | |
JP3795757B2 (ja) | 高データ密度のriscプロセッサ | |
EP0950216B1 (en) | A processing device for executing virtual machine instructions | |
US6351804B1 (en) | Control bit vector storage for a microprocessor | |
US20050283589A1 (en) | Data processor | |
JPS6339931B2 (ja) | ||
US9582281B2 (en) | Data processing with variable operand size | |
US5924114A (en) | Circular buffer with two different step sizes | |
EP0982655A2 (en) | Data processing unit and method for executing instructions of variable lengths | |
JP6073392B2 (ja) | 命令としてデータ値を評価するシステムおよび方法 | |
CN113924550A (zh) | 直方图运算 | |
JP2004527824A (ja) | データプロセッサ及び処理方法 | |
Berenbaum et al. | Introduction to the CRISP Instruction Set Architecture. | |
JP2004086837A (ja) | データ処理装置 | |
US7010677B2 (en) | Data processor speeding up repeat processing by inhibiting remaining instructions after a break in a repeat block | |
JP4502532B2 (ja) | データ処理装置 | |
US6681319B1 (en) | Dual access instruction and compound memory access instruction with compatible address fields | |
EP0992892A1 (en) | Compound memory access instructions | |
EP0992888B1 (en) | Method and apparatus for iterative instruction execution | |
WO2020243044A1 (en) | Processor, system and method of storing register data elements. | |
JP2007234065A (ja) | データ処理装置 | |
EP0992890A2 (en) | A processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20040927 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070116 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070416 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070423 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070516 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070523 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070713 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070821 |