JP4127495B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP4127495B2
JP4127495B2 JP2002259525A JP2002259525A JP4127495B2 JP 4127495 B2 JP4127495 B2 JP 4127495B2 JP 2002259525 A JP2002259525 A JP 2002259525A JP 2002259525 A JP2002259525 A JP 2002259525A JP 4127495 B2 JP4127495 B2 JP 4127495B2
Authority
JP
Japan
Prior art keywords
instruction
pipeline
stage
simulated
information processing
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.)
Expired - Fee Related
Application number
JP2002259525A
Other languages
English (en)
Other versions
JP2004102375A (ja
Inventor
正之 樺沢
直彦 入江
隆宏 入田
哲也 山田
賢伸 津野田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2002259525A priority Critical patent/JP4127495B2/ja
Priority to US10/458,289 priority patent/US7493479B2/en
Publication of JP2004102375A publication Critical patent/JP2004102375A/ja
Application granted granted Critical
Publication of JP4127495B2 publication Critical patent/JP4127495B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は情報処理装置、特に中間言語をプロセッサ固有の命令に変換して実行する情報処理装置における、特定のイベントの検出、及び、処理方法に関する。
【0002】
【従来の技術】
近年、Java言語で記述されたアプリケーションが携帯電話や携帯端末で急速に広がっている。Javaとはサン・マイクロシステムズ社により開発されたC++に類似したオブジェクト指向プログラミング言語である。なお、"Java"はサン・マイクロシステムズ社の登録商標である。Java言語が受けいれられる要因として、Java言語は、中間言語に対して仮想マシンを用いてCPUに固有の命令に変換して実行される特徴が挙げられる。仮想マシンを備えるCPUであれば、CPUの種類に依存せずにJavaアプリケーションを実行することができるので移植性が高い。なお、中間言語とは、Javaの実行オブジェクトを生成するためのコンパイルの結果であり、Javaバイトコードまたは省略してバイトコードとも呼ばれる。
【0003】
仮想マシン(以下"VM"と呼ぶ)は、一般にソフトウェア(これを以下"ソフトVM"と呼ぶ)で提供されるが、各バイトコードをインタプリタで解釈実行するために一般には低速である。このため、使用頻度の高いバイトコードをハードウェア実行することで高速化を行うハードウェアアクセラレータが知られている。ハードウェアアクセラレータの例については「日経エレクトロニクス」、no.797,pp.168−176,2001.6.4(この記事はJava to go: Part 1; Microprocessor Report,vol.15,no.2,Feb.2001の翻訳である)に記載される。
【0004】
【発明が解決しようとする課題】
本願発明者等は、本願に先立って、ハードウェアアクセラレータでバイトコードを処理する際のJavaにおけるスレッド切り替えについて検討を行った。VMの仕様はサン・マイクロシステムズ社により決定される。サン・マイクロシステムズ社はJava2として複数の仕様を公開しており、そのうち組み込み機器向けの仕様はJ2MEである。この仕様にはさらに、ネットワーク情報機器用のCDCと、CPUやメモリに制限のある携帯型ネットワーク情報機器用のCLDCの2つの仕様がある。
【0005】
一般に、通常の複数のタスクを実行するOSでは、タスクの切り替えのタイミングの検出はタイマー割り込みを用いている。Javaも複数のタスクを平行して実行している。Javaでは、上記タスクのことを特にスレッドと呼んでいる。サン・マイクロシステムズ社が示したCDCの参照実装におけるスレッド切り替えも、タイマー割り込みで行っている。一方、CLDCの参照実装では、より簡単にスレッド切り替えを実現するために、実行したバイトコード数をカウントして、一定の値に達すると、スレッドの切り替えを行っている。図2にその概念図を示す。スレッドA(TH_A)、スレッドB(TH_B)、スレッドC(TH_C)の3つのスレッドが実行され、最初にTH_AにおけるTH_A1が実行されているとする。TH_A1の実行したバイトコードがある一定数に達すると、VMは実行するスレッドをTH_B1に切り替える。次にTH_B1が実行したバイトコード数が一定に達すると、同様にTH_C1に切り替わり、TH_C1の次はTH_A2に切り替わる。
【0006】
従来は、このカウンタのデクリメントとアンダーフローのチェックをソフトウェアで実行していた。例えば、カウント数をCPUの汎用レジスタ上にマッピングし、CPUの固有の命令でカウンタのデクリメントを行う。この場合、カウントをデクリメントする命令とタスク切り替えの処理に条件分岐する命令を、毎バイトコード毎に実行することになる。この場合、通常のハードウェアによるタイマー割り込みに比べて、実行命令数が増えることになり、高速動作が困難になることに本願発明者等は気が付いた。
【0007】
スレッド切り替えと似たVMの仕様に、ガベッジコレクションがある。VMはランダムに使用するメモリ領域を持っており、Javaプログラムの実行が進むとこのメモリ領域に使われなくなったエリアが断続的に残る。そこで、VMはガベッジコレクションと呼ばれるメモリの整理を行う。ガベッジコレクションを行うかどうかチェックするタイミングはVMにより異なる。サン・マイクロシステムズ社が示したCDCの参照実装では、後方分岐が実行された数をカウントして、アンダーフローしたところでガベッジコレクションのチェックを行う。この場合も、カウンタのデクリメントとアンダーフローのチェックはソフトウェアにより実行されており、スレッド切り替えの場合と同様に実行命令数が増えることになり、高速動作が困難になることに本願発明者等は気が付いた。
【0008】
本発明の一つ目的は、ハードウェアアクセラレータにおいて、上記に示したような実行バイトコード数、あるいは、後方分岐数を正確かつ高速にハードウェアでカウントする機構を備えた情報処理装置を提供することである。
【0009】
また、Javaには特有のJava例外と呼ばれる処理がある。Javaでは、プログラムが配列構造のデータにアクセスしようとした際、配列へのポインタがNullでないこと、アクセスしようとしているインデックスが範囲を超えていないことを毎回チェックする。Nullの場合はNull Pointer Exception、インデックスが範囲を超える場合はArray Index Out Of Bounds ExceptionというJava例外を発生させて、例外処理のルーチンへ分岐する。Java例外にはこの他にも、0で除算を行おうとした際に発生するArithmetic Exceptionなどがある。このように、配列をアクセスする際に、Nullでないこと、アクセスしようとしているインデックスが範囲を超えていないことを毎回チェックする必要があり、このチェックをソフトウェアにより行おうとすると実行命令数が増えるため、高速動作の妨げになることに本願発明者等は気が付いた。
【0010】
本発明の他の一つの目的は、ハードウェアアクセラレータによってバイトコードをCPUに固有の命令に変換する情報処理装置において、Java例外の検出処理を高速に行う機構を提供することにある。
【0011】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば、下記の通りである。すなわち、第1命令セットを固有命令として実行するための命令実行部と、第2命令セットの命令を前記第1命令セットの第1命令列に変換して前記命令実行部に供給するための命令変換回路と、所定のイベントをカウントするためのカウンタ手段とを具備し、前記命令変換回路は、前記カウンタが所定の条件を満たした際に、所定の命令を出力するよう情報処理装置を構成する。
【0012】
更に望ましくは、前記命令実行部を複数のステージを有するパイプライン型とし、前記複数のステージに対応する複数の模擬ステージを有する模擬パイプラインを設けることが好ましい。
【0013】
更に望ましくは、前記カウンタが前記所定の条件を満たした際に、前記命令実行部のパイプライン上に残った後続命令を無効化する機構を設けると良い。
【0014】
【発明の実施の形態】
以下、本発明に係る情報処理装置及びシステムの好適な実施の形態について、添付図面を参照しながら説明する。特に制限されないが、実施例の各ブロックを構成する回路素子は、公知のCMOS(相補型MOSトランジスタ)やバイポーラトランジスタ等の半導体集積回路技術によって、単結晶シリコンのような1個の半導体基板上に形成される。
【0015】
図1に、本発明の情報処理装置の第1の実施例を示す。本実施例は、スレッドの切り替えを高速に行う情報処理装置の一実施例を示すものである。図1では命令フェッチ部(IF)3、命令変換部(ACC)2(以下、アクセラレータと呼ぶ)、命令実行部(CPU)1(以下、CPUと呼ぶ)を別ブロックで示したが、これらの区分は必ずしも明確ではなく、全てをCPUと呼んだり、これらのいくつかをまとめてCPUと呼ぶ場合もある。図1においてCPU(CPU)1は、一般的なプロセッサと同様、Javaバイトコードとは異なるプロセッサ固有の命令(以下CPU命令)の集まりである命令セット(以下CPU命令セット)を持っている。この実施例のCPU(CPU)1はパイプライン処理を行い、特に制限されないが、パイプライン(PL)11は、命令デコードステージ(IDステージ)(ID)、命令実行ステージ(EXステージ)(EX)、メモリアクセスステージ(MAステージ)(MA)、レジスタ格納ステージ(WBステージ)(WB)を有する。パイプライン(PL)11は、パイプラインコントロール部(PLC)12により、パイプライン(PL)11のストールや、分岐時の後続命令のキャンセル等の制御がされる。
【0016】
メモリ装置(MEM)4は、Javaバイトコード、ソフトVM、フレーム等Javaを実行するための情報を保持している。更に、メモリ装置(MEM)4は、ほかのCPU命令で記述されたアプリケーションソフトウェアやソフトウェアの実行のためのワーク領域なども含む。尚、メモリ装置(MEM)4は、キャッシュメモリのようなSRAM、メインメモリとなるべきDRAM、又はそのキャッシュメモリとメインメモリの両方を持つもの等があげられるが、情報を保持できるものであればこれらに制限されない。また、CPU(CPU)1と同一のチップであっても別々のチップであっても構わない。
【0017】
メモリ装置(MEM)4から通常のCPU命令が供給された場合は、命令フェッチ部(IF)3を通り、アクセラレータ(ACC)2を介さない経路(4→3→11)で実行される。一方、メモリ装置(MEM)44からバイトコードが供給された場合は、命令フェッチ部(IF)3を通り、アクセラレータ(ACC)2内の命令変換回路(BT)21にバイトコードが入力され、入力されたバイトコードはCPU(CPU)1が解釈可能な一つの、又は、複数の命令列(以下、CPU命令列と呼ぶ)に変換され、CPU(CPU)1で実行される(4→3→21→11)。ここで、命令変換回路は、マイクロコードによりバイトコードをCPU命令に変換してもいいし、又は、ハードワイヤードによりバイトコードをCPU命令に変換してもよい。マイクロコードにより変換する場合は、異なるCPU命令セットを有する種々のCPUに柔軟に対応することができる。また、ハードワイヤードにより変換する場合は、マイクロコードにより変換する場合よりも、回路規模を縮小することができる。
【0018】
前述したように、VMの実装によっては、実行したバイトコードの数によりスレッドを切り替える仕様のものがある。この場合に、アクセラレータ(ACC)が命令変換回路(BT)21で変換したバイトコード数をカウントすると、パイプライン(PL)11のストールや分岐時のパイプラインキャンセル等により、実際に実行したバイトコード数と一致しない。そこで、本願発明者等は、CPU(CPU)1で実行されたバイトコード(実行イベント)をカウントするカウンタ(CNT)23をアクセラレータ(ACC)2に設けた。即ち、一つのバイトコードがCPU(CPU)1で実行されたのを受けて、カウンタ(CNT)23はカウント値を一つ減らす(デクリメント)。カウンタ(CNT)23がアンダーフローすると、カウンタ(CNT)23はCPU(CPU)1のパイプラインコントロール部(PLC)に伝え、パイプラインコントロール部(PLC)は、パイプライン(PL)11上に残った後続命令をキャンセル(無効化)する(23→12→11)。同時に命令変換回路(BT)21は、所定の命令列(ソフトVMに処理を渡すために必要な命令列)を出力する。スレッドの切り替えはソフトVMにより実行される。このような構成とすることで、ソフトウェアでカウントするよりも、高速にカウントすることが可能となり、情報処理装置の高速動作が可能となる。
【0019】
更に、本実施例では、アクセラレータ(ACC)2内に模擬パイプライン(SPL)22を有する。模擬パイプライン(SPL)22には、パイプライン(PL)11の命令デコードステージ(ID)に対応する模擬命令デコードステージ(ID)、命令実行ステージ(EX)に対応する模擬命令実行ステージ(EX)、メモリアクセスステージ(MA)に対応する模擬メモリアクセスステージ(MA)及び前記レジスタ格納ステージ(WB)に対応する模擬レジスタ格納ステージ(WD)を有する。また、模擬パイプライン(SPL)22は、パイプラインコントロール部(PLC)12がパイプライン(PL)11を制御する信号を用いて制御される。つまり、模擬パイプライン(SPL)22のパイプライン動作は、パイプライン(PL)11と同じパイプライン動作を行う。模擬パイプライン(SPL)22には、バイトコードから展開されたCPU命令列の最後のCPU命令に同期したフラグ(FLG1)を流す。FLG1が模擬パイプライン(SPL)22の模擬レジスタ格納ステージ(WB)に到達すると、カウンタ(CNT)23はカウント値を1減らす。このようにパイプライン(PL)11の複数のステージに対応する複数の模擬ステージを有する模擬パイプライン(SPL)11を設けることにより、正確に実行されたバイトコード数をカウントすることができる。
【0020】
更に、本実施例では、カウンタ最大値レジスタ(MAXCNT)25を有する。このカウンタ最大値レジスタ(MAXCNT)25は、カウンタ(CNT)23がアンダーフローした際に、カウンタ(CNT)23に書き込む初期値を指定するためのレジスタである。したがって、ソフトVM等のソフトウェアで、カウンタ(CNT)23を自由に設定することが出来、また、カウンタ(CNT)23がアンダーフローした場合には自動的に初期値が書き込まれるため高速動作が実現できる。
【0021】
図3に、本発明の情報処理装置の第2の実施例を示す。第2の実施例は、後方分岐をカウントする場合を示している。本実施例も、第1の実施例と同様、CPUの区分や、同一チップか別チップかは特に制限されない。また、特に制限されないが、CPU命令セットにおける分岐命令は、事前の命令により設定された真偽bit(T−bit)を参考にして実際に分岐するかを決定する命令である。図4に本実施例での分岐に関するバイトコードと、命令変換回路(BT)21が出力するCPU命令列の例を示す。TST命令とCMP命令は、ゼロ比較と大小関係を比較し、真偽によってT−bitを変更する命令である。BT、BF命令は、それぞれ、T−bitが真の時、T−bitが偽のときに分岐を実施し、それ以外の場合は何も行わない命令である。T−bitはEXステージに同期して変更される。
【0022】
第2の実施例では、後方分岐が成立した場合(後方分岐イベント)に、カウンタ(CNT)23はカウント値を1減少させる。カウンタ(CNT)23がアンダーフローした場合は、第1の実施例と同様、23→12→11の経路でパイプライン(PL)11上に残った後続命令をキャンセルし、命令変換回路(BT)21は、所定の命令列(ソフトVMに処理を渡す命令列)を出力する。ガベッジコレクションチェックはソフトVMにより実行される。これにより情報処理装置の高速動作が実現される。
【0023】
更に、第2の実施例における情報処理装置は、第1の実施例と同様、アクセラレータ(ACC)2は模擬パイプライン(SPL)22を有し、更に、後方分岐が成立したかを判定する検出部(CHK)24を有する。模擬パイプライン(SPL)22には、BT、BF命令に同期したフラグ情報(FLG2)を流す。検出部(CHK)24は、模擬パイプライン(SPL)22のEXステージからフラグ情報を受け取ると共に、CPU(CPU)1のパイプライン(PL)11からT−bitを受ける。検出部(CHK)24はBT命令がEXステージに来た時にT−bitが真の場合、及び、BF命令がEXステージに来たときにT−bit命令が偽の場合、分岐が成立したと判定する。検出部(CHK)24が分岐を判定すると、カウンタ(CNT)23に通知し、カウンタ(CNT)23はカウンタ値を1減少させる。このような構成とすることにより正確に後方分岐の数をカウントすることが可能となる。
【0024】
第1の実施例では実行バイトコードのカウントの場合を、第2の実施例では、後方分岐のカウントの場合を夫々説明したが、両者を実現したい場合は、夫々に対応したカウンタ(CNT)23を設ければよい。即ち、実行バイトコード数をカウントする第1カウンタと後方分岐をカウントする第2カウンタを設ければよい。この場合に、カウント最大値レジスタ(MAXCNT)25は夫々持つと良いが、共有することもできる。更に、模擬パイプライン(SPL)21も、共有することができるし、夫々に対応して設けてもよい。模擬パイプライン(SPL)21を共有する場合には、展開後の最終命令フラグ(FLG1)、BT、BFフラグ(FLG2)の情報の両者を流せばよい。
【0025】
図5に、本発明の情報処理装置の第3の実施例を示す。第3の実施例は、カウンタ(CNT)23が実行したバイトコードの数をカウントするのか、分岐した数をカウントするのかを選択できる実施例である。アクセラレータ(ACC)2は命令変換回路(BT)21、模擬パイプライン(SPL)22、検出部(CHK)24、カウンタ(CNT)23、カウンタ最大値レジスタ(MAXCNT)25、及び、カウントモードレジスタ(CNTMD)26を含む。
【0026】
図6にソフトVM等のソフトウェアで設定できるレジスタを示す。カウンタ最大値レジスタ(MAXCNT)25は、上述のようにカウンタ(CNT)23がアンダーフローした際にカウンタ(CNT)23に書き込む初期値を指定するためのレジスタである。カウントモードレジスタ(CNTMD)26は、バイトコード数と後方分岐のどちらをカウントするか、あるいは、カウントを行わないかを指定するレジスタである。
【0027】
模擬パイプライン(SPL)22には、展開後の最終命令フラグ(FLG1)、BT、BFフラグ(FLG2)の情報を流す。カウントモードレジスタ(CNTMD)26に実行バイトコード数をカウントするよう指定されている場合は、検出部(CHK)24は、模擬パイプライン(SPL)22の模擬レジスタ格納ステージ(WB)のFLG1の内容をそのままカウンタ(CNT)23に伝える。カウントモードレジスタ(CNTMD)26に後方分岐をカウントするよう指定されている場合は、第2の実施例と同様、模擬パイプライン(SPL)22のEXステージのFLG2とCPU(CPU)1のT−bitを用いて、検出部(CHK)24が分岐成立を検出し、カウンタ(CNT)23に伝える。カウンタ(CNT)23はデクリメントを行う。カウンタ(CNT)23がアンダーフローすると、パイプラインコントロール部12はパイプライン(PL)11をキャンセルし、命令変換回路(BT)21はソフトVMに処理を渡す命令列を出力する。同時に、カウンタ最大値レジスタ(MAXCNT)25の値がカウンタ(CNT)23にロードされる。このように、カウントモードレジスタ(CNTMD)を設けることにより、カウンタ(CNT)23を実行バイトコード数をカウントするか、後方分岐をカウントするかを任意に設定でき、回路規模を小さくすることができる。
【0028】
第1、第2、第3の実施例では、アクセラレータ(ACC)2における命令カウントのシステムの構成を示した。実施例では、レジスタ格納ステージ(WB)、命令実行ステージ(EX)での検出方法を示したが、これらは特に制限されるわけではない。本発明で重要なのは、アクセラレータ(ACC)2が、適切なタイミングでカウントを行い、もしくは、適切なタイミングでCPU(CPU)1の信号チェックしてカウントを行うことである。
【0029】
また、カウンタ(CNT)22は、カウント値を1減らす構成としたが、これに制限されない。例えば、カウント値を1増やす構成とすることも可能である。この場合、カウント最大値レジスタ(MAXCNT)には、初期値でなく、カウンタ(CNT)22がオーバーフローするカウント値を設定できるようにすればよい。本発明のおけるカウンタ(CNT)22において重要なことは、所定のイベント(例えば、バイトコードが実行された数、後方分岐が成立した数)をカウントし、所定の条件を満たした場合(例えば、アンダーフロー)に、アクセラレータ(ACC)2から所定の命令が出力されるように構成することにある。また、カウンタ(CNT)は、アクセラレータ(ACC)2に設ける必要はなく、CPU(CPU)1に設けられてもよいし、又、その他の場所に設けられても良い。更には、カウンタ最大値レジスタ(MAXCNT)を設けずにソフトウェアにより設定できるようにしてもよい。
【0030】
図7に、本発明の情報処理装置の第4の実施例を示す。第4の実施例は、模擬パイプライン(SPL)22を用いてJava例外を検出する実施例である。図7では、メモリ装置4から命令をフェッチする際に、バス(BUS)5を通って、フェッチ部3に送る経路を持つ。また、バス(BUS)は、アクセラレータ(ACC)2にある検出部(CHK)24及びCPU(CPU)1にも接続される。更に、第1から第3の実施例と同様に、模擬パイプライン(SPL)22を有する。
【0031】
まず、CPU(CPU)1のメモリからデータをロードする手順を、パイプライン(PL)11の動作の流れに沿って示す。命令はIDステージで解釈される。EXステージでアクセスするアドレスを計算し、バス(BUS)5にアドレスを乗せる。MAステージはメモリ装置(MEM)4の内部でデータにアクセスしている段階で、パイプライン(PL)11上では特に動作しない。WBステージは指定したアドレスのデータがバス(BUS)5を通してCPU(CPU)1に伝えられ、汎用レジスタに書かれる。
【0032】
次に、Java例外の検出をbaloadバイトコードを例に説明する。baloadは、Javaスタック上にあるポインタとインデックスからアドレスを計算し、メモリ装置(MEM)4上に配列から1byte長のデータを取り込み、Javaスタックにプッシュするバイトコードである。baloadを実行するには、本体の処理を実行する前にJava例外のチェックを行わなければならない。すなわち配列へのポインタがNullでないこと、アクセスしようとしているインデックスが範囲を超えていないことのチェックである。前者のJava例外がNull Pointer Exception、後者がArray Index Out Of Bounds Exceptionである。Java例外を検出すると、ソフトVM中に実装されているJava例外処理のルーチンへ分岐する。
【0033】
図8(A)に本発明との比較のためCPU命令のみでJava例外を検出する場合のbaloadバイトコードを示す。実行前に、スタック上の配列のポインタとインデックスが汎用レジスタのR1、R0にマッピングされているとする。Java例外のハンドラの開始アドレスをR6、一時使用のレジスタをR5としている。図8(A)の項目00番で、配列へのポインタ(R1)とオフセット(offset1)から、配列長をR5へロードする。項目01番はポインタがNullかどうかのチェックである。Nullの場合は項目02番でJava例外処理のハンドラへ分岐する。項目03番は、インデックスの正負をチェックし、0以下の場合は項目04番でJava例外処理のハンドラへ分岐する。項目05番は、インデックスと配列長の大小をチェックし、範囲を超えている場合は項目06番でJava例外処理のハンドラへ分岐する。以上のチェックが終了して初めて、項目07番で対象となるバイトデータのアドレスを計算し、項目08番でバイトデータをロードする。すなわち、baloadバイトコードをCPU命令のみで行おうとすると、9命令のうち7命令がJava例外の検出のために使用される。なお、図中のoffset1、offset2はVMに固有の定数であり、アクセラレータ(ACC)2が出力する命令列に挿入される。
【0034】
本願発明者等は、Java例外検出の高速化を検討するにあたり、項目00番の配列長ロード命令に注目した。この命令を実行すると、配列長を格納しているアドレスと配列長がバス(BUS)5に出力される。そこで、アクセラレータ(ACC)2にある検出部(CHK)22がCPU(CPU)1の動作を監視することで、バス(BUS)に出力された配列長を格納しているアドレスや配列長を取り込んで、Java例外を検出する構成とした。このようにJava例外の検出をハードウェアで行うことにより、後に詳述するが、CPU命令のみでJava例外を検出するよりも命令数が少なくなり、情報処理装置が高速に動作可能となる。
【0035】
また、検出部(CHK)24のCPU(CPU)1の動作の監視に、模擬パイプライン(SPL)22を用いることにした。即ち、所定の命令がパイプライン(PL)11のどのステージにいるかを模擬パイプライン(SPL)に入力したフラグ(FLG3)の位置で検出部(CHK)24の動作を制御することでバス(BUS)5にアドレスやデータが出力されるタイミングを容易に測ることができる。
【0036】
図8(B)にハードウェアアクセラレータ(ACC)2を用いた場合のCPU命令列を示す。項目00番で、配列へのポインタ(R1)と定数であるoffset1の和のアドレスから、配列長をR5へロードする。この命令のEXステージに同期して、バス(BUS)5に乗るアドレスを検出部(CHK)24が取り込む(時刻T1)。また、配列長は項目00番の命令のWBステージに同期して、メモリからバス(BUS)5に出力され、これも、検出部(CHK)24が取り込む(時刻T3)。項目01番のLDC命令はEXステージに同期して、レジスタの値をアクセラレータ(ACC)2に伝える命令である(時刻T2)。これらの3つのデータを用いて、検出部(CHK)24が比較演算等を行い、Java例外の検出を行う。Java例外条件を満たしている場合は、検出部(CHK)24がパイプラインコントロール部(PLC)12に指示して、パイプライン(PL)11をキャンセルする。その後、ソフトウェアに処理を渡す命令列を発行する。Java例外の処理はソフトウェアが行う。
【0037】
図9から図12にbalaodのJava例外の検出を時間を追って示す。時刻T1(図9)は、アクセラレータ(ACC)2の模擬パイプライン(SPL)22上で項目00番の命令に同期したフラグがEXステージに到達した状態である。このタイミングに同期して、バス(BUS)5上のアドレスを取り込む。時刻T2(図10)は項目01番の命令に同期したフラグが模擬パイプライン(SPL)22のEXステージに来た状態である。このタイミングに同期して、検出部(CHK)24は、CPU(CPU)1が出力したデータを取り込む。時刻T3(図11)は、項目00番の命令に同期したフラグがWBステージに到達した状態である。このタイミングで、バス(BUS)5上のデータを取り込む。以上の3データで比較演算等を行い、Java例外の判定を行う。Java例外を検出した場合は、検出部(CHK)24がCPU(CPU)1のパイプラインコントロール部(PLC)12にパイプライン(PL)11のキャンセルを指示し、後続命令をキャンセルする(時刻T4、図12)。次のサイクルから、アクセラレータ(ACC)2はJava例外処理を行うため、ソフトウェアに処理を渡す命令列(項目06番とそれ以降の命令列)を発行する。
【0038】
図14に本発明の情報処理装置の第5の実施例を示す。第5の実施例はidivバイトコードにおけるCPU命令列を途中で切り替える実施例である。idiv命令は32bitの整数除算命令である。図14ではスタックトップと2番目のスタックが汎用レジスタR0、R1にマッピングされており、R1÷R0を計算する。R5、R6は一時使用に割り当てた汎用レジスタである。
【0039】
本実施例におけるCPU命令セットでは、除算命令が1ビット除算であり、これを必要な回数繰り返して実行する。従って、32bit除算と16bit除算では、命令数に大きな差が出る。そこで、命令変換回路(BT)21には、32bit除算の命令列と16bit除算の命令列を実装する。そして、最初に32bit除算の命令列を発行し、16bit除算と判定した時点で16bit除算の命令列に切り替えるようにする。この場合に、32ビット除算の命令列と16ビット除算の命令列で共通に出来る部分は共通にするように構成する。
【0040】
次に第5の実施例の更に詳細な説明する。図14の項目00番のLDC命令は、CPU(CPU)1の汎用レジスタの値をEXステージに同期してアクセラレータ(ACC)2内の検出部(CHK)24に除数を伝える。この命令は0除算チェックもかねている。0の場合はArithmetic Exceptionにあたり、第4の実施例と同様の方法でソフトVMに処理を渡す。項目01番は、被除数を検出部(CHK)24に伝える。命令を取り込むタイミングは、アクセラレータ(ACC)2内の模擬パイプライン(SPL)22で測る。以上で得られた除数、被除数が16bit長に収まっている場合は16bit除算命令列に切り替える。本実施例では、32bit命令列と16bit命令列で、項目00番から03番までを共通にした。このため、項目04番以降の命令列を切り替えるだけでよく、パイプライン(PL)11のキャンセルは行わないため、更に高速動作が可能となる。
【0041】
第4の実施例と第5の実施例は、Java例外の検出とidivバイトコードの命令列切り替え機構を示したが、他のバイトコードにも応用できる。本発明で重要なのは、CPU(CPU)1の動作を監視することができる検出部(CHK)23を有し、適切なタイミングを測ってCPU(CPU)1の信号を取り込み、アクセラレータ(ACC)2の出力命令列を切り替える点にある。また、検出部(CHK)24の動作を模擬パイプライン(SPL)22で制御することにより容易にタイミングを測ることができる。その際、第4実施例に示したパイプライン(PL)11後続命令キャンセル機構を有してもよいし、第5の実施例に示したように、後続命令をキャンセルしないで高速化することも可能である。
【0042】
また、第1から第3の実施例おいて、実行バイト数や後方分岐数をカウントするために模擬パイプライン(SPL)22を使用している。また、第4及び第5の実施例においては、Java例外を検出するために模擬パイプライン(SPL)22を使用している。しかし、これらの実施例は、模擬パイプライン(SPL)22を有することにより実現できる一具体例であることは明らかである。即ち、模擬パイプライン(SPL)22を有することでCPU(CPU)1の動作タイミングを容易に知ることができ、第1から第5の実施例以外のアクセラレータ(ACC)2の動作を容易にCPU(CPU)1の動作タイミングにあわせることができる。
最後に本発明の好適な応用例としての携帯情報システムの構成図を図15に示す。より具体的には携帯電話の構成の一例である。大きく分けて、通信部分とアプリケーション部分から構成される。通信部分は、電波を送受信するアンテナ(ANT)と高周波回路(RF)部、ベースバンドのモデム、コーデックを行うベースバンドプロセッサ(BASEBAND)部、主記憶(MEM)である。アプリケーション部分は、本発明の実施例のバイトコードアクセラレータ(ACC)とCPU(CPU)を内蔵するマイクロプロセッサ(PROCESSOR)において、インターフェース(I/F)を介してアプリケーションプロセッサとベースバンドプロセッサが接続され、周辺インターフェース(PERIPHERAL)を介してカメラ(CMR)、メモリカード(CARD)、音源IC(SOD)、キー(KEY)が接続され、外部バスを介して液晶(LCD)、主記憶(MEM1)が接続される。本システム構成例は、携帯電話向けであったが、携帯情報端末やデジタルカメラなど多様なシステム構成例が考えられる。
【0043】
本システム構成例では、例えば、次のようにメモリが使用される。Javaアプリケーションは、外部サーバーよりアンテナ(ANT)を介して配給され、ベースバンドプロセッサ(BASEBAND)を使用し、ベースバンド側主記憶(MEM2)に格納される。ソフトVMは主記憶(MEM1)か、ベースバンド側主記憶(MEM2)のどちらに配置してもよい。ソフトVMのインタプリタ部はアクセス頻度が高いため、内蔵メモリ上に配置されることが望ましい。この発明により、ハードウェアアクセラレータを利用してJavaアプリケーションを高速に実行できるため、携帯情報システムの付加価値を高めることができる。
【0044】
以上の本願発明はJavaを例にして説明したが、それに限られることはなく、同様の中間言語及びVMを固有命令を命令セットで実行するプロセッサに対するハードウェアアクセラレータに適用できる。
【0045】
【発明の効果】
上記手法により、命令変換型Javaアクセラレータにおいて、バイトコード数をカウントする場合のCPU命令や、Java例外を検出する為のCPU命令の数を削減でき、高速に動作させることが可能である。
【図面の簡単な説明】
【図1】本発明による情報処理装置の概略ブロック図。
【図2】Javaスレッド切り替えの概要。
【図3】第2の実施例における情報処理装置の概略ブロック図。
【図4】分岐バイトコードの命令変換例。
【図5】第3の実施例における情報処理装置の概略ブロック図。
【図6】カウンタに関する設定レジスタの構成例。
【図7】第4の実施例における情報処理装置の概略ブロック図。
【図8】baloadバイトコードの変換後の命令列。
【図9】baloadバイトコードの動作説明ブロック図。
【図10】baloadバイトコードの動作説明ブロック図。
【図11】baloadバイトコードの動作説明ブロック図。
【図12】baloadバイトコードの動作説明ブロック図。
【図13】baloadバイトコードの動作説明ブロック図。
【図14】idivバイトコードの変換後の命令列。
【図15】本願発明を利用した携帯情報システムの構成図。
【符号の説明】
1…CPU(CPU)
2…命令変換型アクセラレータ(ACC)
3…命令フェッチ部(IF)
4…メモリ装置(MEM)
5…バス(BUS)
11…パイプライン(PL)
12…パイプラインコントロール部(PLC)
21…命令変換回路(BT)
22…模擬パイプライン(SPL)
23…カウンタ(CNT)
24…検出部(CHK)
25…カウンタ最大値レジスタ(MAXCNT)
26…カウントモードレジスタ(CNTMD)。

Claims (20)

  1. 複数の命令セットを実行する情報処理装置であって、
    第1命令セットを特定の命令として実行し、複数の第1ステージからなる第1パイプラインのパイプライン動作を行う命令実行部と、
    第2命令セットの第2命令を前記第1命令セットの単数又は複数の第1命令を含む第1命令列に変換し、前記命令実行部に前記第1命令列を供給する命令変換回路とを有し、
    前記命令実行部は、前記第1パイプラインのストールの制御及び前記第1パイプラインの後続命令をキャンセルする制御を行うパイプライン制御部を有し、
    前記命令変換回路は、カウンタ手段と、複数の第2ステージからなる第2パイプラインとを有し、前記第2パイプラインは複数の第1ステージに対応する複数の第2ステージを有し、
    前記第2パイプラインは、前記パイプライン制御部が前記第1パイプラインを制御するための信号を用いて前記第1パイプラインと同様に制御され、
    前記カウンタ手段は、前記第1命令列のうちの一つの命令と同期したフラグが前記第2パイプラインに入力され、前記フラグが複数の第2ステージの一つのステージに到達したとき、カウント値をデクリメントし、
    前記パイプライン制御部は、前記カウント値に基づいて前記ストールの制御及び前記キャンセルする制御を行う、情報処理装置。
  2. 前記カウンタ手段は、前記カウント値を1ずつデクリメントしてカウントし、
    前記命令変換回路は、前記カウント値がアンダーフロー状態のとき所定の命令を出力し、
    前記情報処理装置は、前記カウント値がアンダーフロー状態のとき、前記命令実行部の第1パイプラインの残りの後続命令を無効にするモジュールを有する、請求項1記載の情報処理装置。
  3. 前記命令変換回路は、前記カウンタ手段が所定のカウント値に達したとき、所定の命令を出力し、
    前記所定の命令は、スレッド切り替えのソフト仮想マシンを実行する命令である、請求項1記載の情報処理装置。
  4. 前記フラグは、前記第1命令列の最後の命令が前記命令変換回路から前記命令実行部に入力されたとき、第2パイプラインに入力され、
    前記複数の第1ステージは、命令デコードステージ、命令実行ステージ、メモリアクセスステージ及びレジスタ格納ステージを有し、
    前記複数の第2ステージは、前記命令デコードステージに対応する前記命令デコードステージに対応する模擬命令デコードステージ、前記命令実行ステージに対応する模擬命令実行ステージ、前記メモリアクセスステージに対応する模擬メモリアクセスステージ及び前記レジスタ格納ステージに対応する模擬レジスタ格納ステージを有し、
    前記カウンタ手段は、前記フラグが前記模擬レジスタ格納ステージに到達したときにカウント値をカウントする、請求項3記載の情報処理装置。
  5. 前記カウンタ手段は、前記第1命令列の最後の命令が前記命令実行部で実行された実行数をカウントする第1カウンタ手段と、前記命令実行部における後方分岐数をカウントする第2カウンタ手段とを有する、請求項1記載の情報処理装置。
  6. 前記カウンタ手段は、前記第1命令列の最後の命令が前記命令実行部で実行された実行数をカウントする第1カウンタ手段と前記命令実行部における後方分岐数をカウントする第2カウンタ手段のうち、少なくともどちらか一方のカウンタ手段を有し、
    前記情報処理装置は、前記カウンタ手段が前記実行数をカウントするか、前記後方分岐数をカウントするかを制御するための情報を記憶するレジスタを有する、請求項1記載の情報処理装置。
  7. 前記情報処理装置は、後方分岐が成立したか否かを判定する検出部を有し、前記検出部は、後方分岐が成立したと判定したことを前記カウンタ手段に通知し、
    前記カウンタ手段は、前記通知に基づいてカウント値を1ずつデクリメントする、請求項6記載の情報処理装置。
  8. 前記フラグは、前記第1命令列の最後の命令が前記命令変換回路から前記命令実行回路に出力されたとき、前記第2パイプラインに入力され、
    第2フラグは、前記第1命令列に含まれる後方分岐命令が前記命令変換回路から前記命令実行部に出力されたとき、前記第2パイプラインに入力され、
    前記複数の第1ステージは、命令デコードステージ、命令実行ステージ、メモリアクセスステージ及びレジスタ格納ステージを有し、
    前記複数の第2ステージは、前記命令デコードステージに対応する前記命令デコードステージに対応する模擬命令デコードステージ、前記命令実行ステージに対応する模擬命令実行ステージ、前記メモリアクセスステージに対応する模擬メモリアクセスステージ及び前記レジスタ格納ステージに対応する模擬レジスタ格納ステージを有し、
    前記検出部は、前記第2フラグが前記模擬命令実行ステージに到達したとき、後方分岐が成立したか否かを判定し、
    前記カウンタ手段は、前記レジスタに記憶されている情報に基づいて、前記第1フラグが前記模擬レジスタ格納ステージに到達したことによりカウントするか、又は前記通知によりカウントするかを決定する、請求項7記載の情報処理装置。
  9. 複数の命令セットを実行する情報処理装置であって、
    第1命令セットを特定の命令として実行し、複数の第1ステージからなるパイプラインのパイプライン動作を行う命令実行部と、
    前記第2命令セットの第2命令を第1命令セットの第1命令列に変換し、前記第1命令列を前記命令実行部に供給する命令変換回路と、を有し、
    前記命令実行部は、前記第1パイプラインのストールの制御及び前記パイプラインの後続命令をキャンセルする制御を行うパイプライン制御部を有し、
    前記命令変換回路は、カウンタ手段と、複数の模擬ステージからなる模擬パイプラインとを有し、前記模擬パイプラインは前記命令実行部による前記第1命令列の実行に同期されるステージに対応する模擬ステージを有し、
    前記模擬パイプラインは、前記パイプライン制御部が前記パイプラインを制御するための信号を用いて制御され、かつ、前記パイプラインのパイプライン動作と同じパイプライン動作を行い、
    前記カウンタ手段は、前記第1命令列のうちの一つの命令と同期したフラグが前記模擬パイプラインに入力され、前記フラグが複数の模擬ステージの一つのステージに到達したとき、カウント値をデクリメントし、
    前記パイプライン制御部は、前記カウント値に基づいて前記ストールの制御及び前記キャンセルする制御を行う、情報処理装置。
  10. 前記情報処理装置は、カウンタ手段を有し、
    前記模擬パイプラインは、前記第1命令列に対応するフラグが入力され、
    前記複数のステージは、命令デコードステージ、命令実行ステージ、メモリアクセスステージ及びレジスタ格納ステージを有し、
    前記複数の模擬ステージは、前記命令デコードステージに対応する模擬命令デコードステージ、前記命令実行ステージに対応する模擬命令実行ステージ、前記メモリアクセスステージに対応する模擬メモリアクセスステージ及び前記レジスタ格納ステージに対応する模擬レジスタ格納ステージを有し、
    前記カウンタ手段は、前記フラグが前記模擬レジスタ格納ステージに到達したときにカウントする、請求項9記載の情報処理装置。
  11. 前記情報処理装置は、カウンタ手段を有し、
    前記模擬パイプラインは、前記第1命令列の所定の命令に対応するフラグが入力され、
    前記複数のステージは、命令デコードステージ、命令実行ステージ、メモリアクセスステージ及びレジスタ格納ステージを有し、
    前記複数の模擬ステージは、前記命令デコードステージに対応する模擬命令デコードステージ、前記命令実行ステージに対応する模擬命令実行ステージ、前記メモリアクセスステージに対応する模擬メモリアクセスステージ及び前記レジスタ格納ステージに対応する模擬レジスタ格納ステージを有し、
    前記カウンタ手段は、前記フラグが前記模擬命令実行ステージに到達し、かつ、前記命令実行部で後方分岐が成立したことを検出したときにカウントする、請求項9記載の情報処理装置。
  12. 前記情報処理装置は、初期値を指定するカウンタ最大値レジスタを有し、
    前記カウンタ最大値レジスタは、前記カウンタ手段がアンダーフローする際に、前記カウンタ手段に前記初期値を書き込む、請求項1記載の情報処理装置。
  13. 前記カウンタ手段が制御するレジスタに記憶される情報は、後方分岐数又は実行数である、請求項1記載の情報処理装置。
  14. 前記フラグは第1フラグ又は第2フラグであって、
    前記第1フラグは、前記第1命令列の最後の命令である前記第1パイプラインのレジスタ格納ステージの実行を表し、
    前記第2フラグは、前記第1命令列の後方分岐である前記第1パイプラインの実行ステージを表し、
    前記第1フラグ又は前記第2フラグのうちの一つのフラグが前記レジスタによって選択される、請求項13記載の情報処理装置。
  15. 第2レジスタは前記カウンタ手段に実行数を設定し、
    前記カウンタ手段は、前記第1命令列の最後の命令の実行の通知によってカウント値をデクリメントし、
    前記命令変換回路は、カウント値がアンダーフロー状態のとき、前記カウント値のカウントを終了し、スレッド切り替えのソフトウエア仮想マシンを実行する、請求項14記載の情報処理装置。
  16. 第2レジスタは前記カウンタ手段に後方分岐数を設定し、
    前記カウンタ手段は、後方分岐の通知によって、カウント値をデクリメントし、
    前記命令変換回路は、カウント値がアンダーフロー状態のとき、前記カウント値のカウントを終了し、ガーベッジコレクションチェックを起動するソフトウエア仮想マシンを実行する、請求項14記載の情報処理装置。
  17. 前記カウンタ手段は、第2命令から展開された前記第1命令列の最後の第1命令に同期するフラグが入力され、前記フラグがレジスタ格納ステージに到達したとき、カウント値をデクリメントする、請求項1記載の情報処理装置。
  18. 前記カウント値がアンダーフローしたとき、
    前記パイプライン制御部は、前記第1パイプラインの残りの第1命令を無効にし、
    前記命令変換回路は、スレッド切り替えのソフトウエア仮想マシンを実行するための所定の命令を出力して、前記ソフトウエア仮想マシンを実行する、請求項17記載の情報処理装置。
  19. 前記命令変換回路は、検出部を有し、
    前記カウンタ手段は、前記第1命令列のうちの一つの命令と同期したフラグが前記第2パイプラインに入力され、前記フラグが複数の第2ステージの一つのステージに到達したとき、又は、前記検出部が前記第2パイプラインの命令実行ステージからのフラグ情報と前記第1パイプラインの真偽ビット情報を参考にして後方分岐を検出したとき、カウント値をデクリメントし、
    前記第1命令列の分岐命令は、事前の命令によって設定された真偽ビットを参考にして後方分岐であるか否かを判定する命令である、請求項1記載の情報処理装置。
  20. 前記カウント値がアンダーフローしたとき、
    前記パイプライン制御部は、第1パイプラインの残りの第1命令を無効にし、
    前記命令変換回路は、ガーベッジコレクションチェックを起動するソフトウエア仮想マシンを実行するための所定の命令を出力して、前記ソフトウエア仮想マシンを実行する、請求項19記載の情報処理装置。
JP2002259525A 2002-09-05 2002-09-05 情報処理装置 Expired - Fee Related JP4127495B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002259525A JP4127495B2 (ja) 2002-09-05 2002-09-05 情報処理装置
US10/458,289 US7493479B2 (en) 2002-09-05 2003-06-11 Method and apparatus for event detection for multiple instruction-set processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002259525A JP4127495B2 (ja) 2002-09-05 2002-09-05 情報処理装置

Publications (2)

Publication Number Publication Date
JP2004102375A JP2004102375A (ja) 2004-04-02
JP4127495B2 true JP4127495B2 (ja) 2008-07-30

Family

ID=31986330

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002259525A Expired - Fee Related JP4127495B2 (ja) 2002-09-05 2002-09-05 情報処理装置

Country Status (2)

Country Link
US (1) US7493479B2 (ja)
JP (1) JP4127495B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4602047B2 (ja) * 2004-10-29 2010-12-22 ルネサスエレクトロニクス株式会社 情報処理装置
US20060155974A1 (en) * 2005-01-07 2006-07-13 Moyer William C Data processing system having flexible instruction capability and selection mechanism
US7747844B2 (en) * 2005-03-31 2010-06-29 Hewlett-Packard Development Company, L.P. Acquiring instruction addresses associated with performance monitoring events
US7769983B2 (en) * 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
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
US7752424B2 (en) * 2007-08-08 2010-07-06 Arm Limited Null value checking instruction
JP5149567B2 (ja) * 2007-08-29 2013-02-20 キヤノン株式会社 画像処理装置及び方法
JP2017126307A (ja) * 2016-01-12 2017-07-20 正仁 櫨田 コンピューターのcpuの汎用化法
US10795718B2 (en) * 2019-02-08 2020-10-06 Microsoft Technology Licensing, Llc Updating hardware with reduced virtual machine downtime

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6317872B1 (en) * 1997-07-11 2001-11-13 Rockwell Collins, Inc. Real time processor optimized for executing JAVA programs
EP0950216B1 (en) * 1997-10-02 2003-11-26 Koninklijke Philips Electronics N.V. A processing device for executing virtual machine instructions
US6374286B1 (en) * 1998-04-06 2002-04-16 Rockwell Collins, Inc. Real time processor capable of concurrently running multiple independent JAVA machines
US6308319B1 (en) * 1999-02-22 2001-10-23 Sun Microsystems, Inc. Thread suspension system and method using trapping instructions in delay slots
US6996829B2 (en) * 2000-02-25 2006-02-07 Oracle International Corporation Handling callouts made by a multi-threaded virtual machine to a single threaded environment
US6886094B1 (en) * 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
GB2367654B (en) 2000-10-05 2004-10-27 Advanced Risc Mach Ltd Storing stack operands in registers
GB2367653B (en) * 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
US20030135716A1 (en) * 2002-01-14 2003-07-17 Gil Vinitzky Method of creating a high performance virtual multiprocessor by adding a new dimension to a processor's pipeline

Also Published As

Publication number Publication date
JP2004102375A (ja) 2004-04-02
US20040049658A1 (en) 2004-03-11
US7493479B2 (en) 2009-02-17

Similar Documents

Publication Publication Date Title
US7853776B2 (en) Handover between software and hardware accelerator
JP4485198B2 (ja) Javaアクセラレータを備えたプロセッサシステム
US7587583B2 (en) Method and system for processing a “WIDE” opcode when it is not used as a prefix for an immediately following opcode
TW561399B (en) Math coprocessor
US20010042210A1 (en) Cryptographic data processing systems, computer program products, and methods of operating same in which a system memory is used to transfer information between a host processor and an adjunct processor
US20030051122A1 (en) Trace information generation apparatus for generating branch trace information omitting at least part of branch source information and branch destination information on target processing
KR19990081956A (ko) 스택 기반 컴퓨터를 위한 명령 폴딩 방법 및 장치
JP2002532772A5 (ja)
KR20090042294A (ko) 마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템
JP4127495B2 (ja) 情報処理装置
CN107003965A (zh) 向用户级应用传递中断
US7788469B2 (en) Information processing device having arrangements to inhibit coprocessor upon encountering data that the coprocessor cannot handle
US7124283B2 (en) Hardware accelerator for a platform-independent code
US7721074B2 (en) Conditional branch execution in a processor having a read-tie instruction and a data mover engine that associates register addresses with memory addresses
US20080134212A1 (en) Method and system for performing a java interrupt
US6986028B2 (en) Repeat block with zero cycle overhead nesting
JP2000284973A (ja) 二重割込みベクトル・マッピング装置とその操作方法
US20040031022A1 (en) Information processing device for multiple instruction sets with reconfigurable mechanism
US8151093B2 (en) Software programmable hardware state machines
WO2001086430A2 (en) Cryptographic data processing systems, computer programs, and methods of operating same
US8291435B2 (en) JEK class loader notification
KR970007620A (ko) 다수의 버스를 서로 독립적으로 제어하기 위한 버스 콘트롤러를 가진 데이터 처리기
JP2004127255A (ja) 情報処理装置
JP4418509B2 (ja) Javaアクセラレータを備えたプロセッサシステム
JP2008004132A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050829

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20050829

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080407

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: 20080507

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: 20080508

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110523

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4127495

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110523

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110523

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120523

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120523

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130523

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140523

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees