JP2005267640A - 機能を呼び出す方法と装置 - Google Patents

機能を呼び出す方法と装置 Download PDF

Info

Publication number
JP2005267640A
JP2005267640A JP2005076175A JP2005076175A JP2005267640A JP 2005267640 A JP2005267640 A JP 2005267640A JP 2005076175 A JP2005076175 A JP 2005076175A JP 2005076175 A JP2005076175 A JP 2005076175A JP 2005267640 A JP2005267640 A JP 2005267640A
Authority
JP
Japan
Prior art keywords
handler
instruction
program
native
computer program
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
Application number
JP2005076175A
Other languages
English (en)
Other versions
JP4799016B2 (ja
Inventor
David J Butcher
ジョン バッチャー デイヴィッド
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.)
ARM Ltd
Original Assignee
ARM Ltd
Advanced Risc Machines Ltd
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 ARM Ltd, Advanced Risc Machines Ltd filed Critical ARM Ltd
Publication of JP2005267640A publication Critical patent/JP2005267640A/ja
Application granted granted Critical
Publication of JP4799016B2 publication Critical patent/JP4799016B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

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)
  • Advance Control (AREA)

Abstract

【課題】Javaのような言語を効率よく使用するデータ処理システムを提供する。
【解決手段】データ処理システム2は、データ処理動作を遂行する処理論理と、処理論理を制御するプログラム命令を復号する命令復号器18を含み、命令復号器は、ハンドラのベースアドレスHBAとインデックス値フィールドに依存して、ハンドラポインタを計算した後、そのハンドラポインタの位置に分岐するハンドラ分岐命令HLB、HBLPに応答する。分岐目標にあるハンドラ・プログラム24、26が実行されると、ハンドラ分岐命令を実行した時格納したリンクアドレス値を用いてハンドラ分岐命令に続くアドレスに処理が復帰する。
【選択図】図2

Description

本発明は、データ処理システムの分野に関する。より詳細には、この発明は、命令復号器がプログラム命令に応答して、プログラム命令によって指定されるデータ処理動作を遂行する処理論理を制御するプログラム可能なデータ処理装置に関する。
処理論理を制御して、これらのプログラム命令によって指定されるデータ処理動作を遂行するプログラム命令を復号するように動作可能な命令復号器を含むデータ処理システムを提供することは知られている。そのようなデータ処理システムの一例は、英国ケンブリッジのARM社によって設計されたプロセッサコアである。またJava(登録商標)バイトコードのような、第1の命令セットのプログラム命令が、ARM社によってサポートされるプログラム命令のような第2の命令セットのプログラム命令に変換されることも知られている。この変換器は、ジャスト・イン・タイム(JIT)変換器または動的適応型変換器(dynamic adaptive translator)のようなソフトウエア・メカニズムによって便利に与えられる。そのような変換器に付随する問題は、変換されたコードの大きさが当初のコードの大きさよりもかなり大きくなることがあるため、メモリの記憶容量を大きくする必要があるという欠点が生じることである。この問題は、「コードの肥大(code bloat)」と呼ばれることがある。
1つの態様から見ると、本発明はデータ処理装置を提供しており、このデータ処理装置は、
データ処理動作を遂行するように動作可能な処理論理と、
プログラム命令によって指定されたデータ処理動作を遂行する前記処理論理を制御する前記プログラム命令を復号するように動作可能な命令復号器と、
を含み、
前記命令復号器は、ハンドラ分岐命令に応答して、
(i)ベース・アドレス・レジスタ内に格納されたベース・アドレスと、前記ハンドラ分岐命令内のインデックス値フィールドによって指定されるインデックス値とからハンドラ・ポインタを計算し、
(ii)前記ハンドラ・ポインタによって指示された位置にあるメモリに格納されたハンドラ・プログラムのプログラム命令の実行に分岐し、
(iii)前記ハンドラ・プログラムから復帰すると実行されるプログラム命令を格納するメモリ位置を指示する復帰アドレスを格納する。
本手法は、ハンドラ分岐命令内のインデックス・フィールドに依存してハンドラ・プログラムを選択することを可能にするハンドラ分岐命令を用意すると、変換されたコードのコード密度において並びにより一般的にはコード変換の分野以外においてかなりの改善をすることができる。単一命令としてのハンドラ分岐命令は、インデックス・フィールドに基づく分岐プログラムのアドレスの計算、ハンドラ・プログラムが終了した時に使用される復帰アドレスの格納、およびハンドラ・プログラムに対する分岐を制御する。
例えば、標準レジスタ・ファイル内の汎用レジスタの1つのように、ベース・アドレス・レジスタをいくつもの方法で与えることができることは理解されるであろう。しかし、好適実施例におけるベース・アドレス・レジスタは、コプロセッサ構成レジスタとして与えられる。一般にハンドラ・プログラムのベース・アドレス・レジスタは、静的な値を保持するので、コプロセッサ構成レジスタ内に都合良く格納され、他の目的のために有効に使用することができるのでレジスタファイのレジスタが不必要に消耗されることを防いでいる。
ハンドラ・プログラムは或る一定の最大サイズを有し、ベース・アドレスに続いて配置されるので、インデックス値は、ハンドラ・ポインタを計算するために使用される前に、左方へ論理シフト(logical left shift)されると有利に想定することができる。したがって、論理的に左方にシフトされると、インデックス値が効果的に変換されハンドラ・プログラム間のアドレスの増分になる。
好適実施例におけるハンドラ・ポインタは、ベース・アドレスとインデックス値によって決まる値の合計から計算される。更に好適な実施例におけるハンドラ・ポインタは、ベース・アドレスと論理的に左方にシフトされたインデックス値との合計から直接与えられる。
各種状態において、ハンドラ・プログラムにパラメータを転送するハンドラ分岐命令が即値(immediate value)フィールドを含んでいる場合は、ハンドラ分岐命令の有用性が改善されるので、そのようなメカニズムが与えられていると、ハンドラ・プログラムの機能が向上し、より少数のハンドラ・プログラムを使用するだけで所望の処理条件のセットに対処することが可能になる。例えば、複雑な命令と、そのような複雑な命令に付随するパラメータをハンドラ・プログラムに転送するために使用されるインデックス値とをエミュレートするためにハンドラ・プログラムを使用することができる。
インデックス値フィールドだけが与えられる第2型式のハンドラ分岐命令とともに、即値フィールドとインデックス値フィールドが与えられる第1型式のハンドラ分岐命令を備えたシステムを提供することができる。第2型式のハンドラ分岐命令は、第1型式のハンドラ分岐命令で使用することができるよりも大きいビット空間をインデックス値フィールドのためだけに使用することができる。何故ならば、第1型式のハンドラ分岐命令は、即値フィールドを用意する必要があるからである。したがって、第1型式のハンドラ分岐命令に関連するハンドラ・プログラムを、ハンドラのベース・アドレス値に近いメモリ位置に与えてより小さい関連するインデックス値がそれに到達することができるようにし、他方、第2型式のハンドラ分岐命令に関連するハンドラ・プログラムが、第2型式のハンドラ分岐命令のより大きい使用可能なインデックス値フィールド内でのみ指定できる型式のより大きいインデックス値に関連する位置で与えられるようにすることは便利なのである。
ハンドラ・プログラムは様々な異なる機能を備え得るが、復号器によって直接復号可能ではない非ネイティブ命令である1つまたは複数のプログラム命令のエミュレーションに対して特に都合良くできている。この種の状態は、各種非ネイティブ・プログラム命令をエミュレートするために比較的多数のハンドラ・プログラムが与えられ、インデックス値フィールドを備えたハンドラ分岐命令が高密度の命令型式(code dense instruction form)を使用するこれらのハンドラ・プログラムを参照する便利な方法を与える状態である。
非ネイティブ命令とハンドラ・プログラムとの間のマッピングは、多数対1のマッピング、1対1のマッピング、および1対多数のマッピングに変化するとともにこれらのマッピングを含むことができる。
非ネイティブ・プログラム命令は各種型式を取りうるが、非ネイティブ命令が、Javaバイトコード、MSILバイトコード、CILバイトコードおよび.NETバイトコードのようなマシンに依存しないプログラム命令(machine independent program instructions:以下、「対マシン独立型プログラム命令」と記す)の場合、本手法は特に有用である。
対マシン独立型プログラム命令のエミュレーションにおける使用と同様、本ハンドラ分岐命令は、非ネイティブ命令がデータを処理する異なる装置のネイティブ・プログラム命令である状態で使用される。したがって、ARM RISCプロセッサのような特定のプロセッサは、例えば、x86プロセッサのような異なるプロセッサに対してネイティブであるプログラム命令のエミュレーション中に、そのような命令を使用することができる。
ハンドラ分岐命令によって計算され使用されるハンドラ・ポインタは、様々な型式をとることができることは理解されるであろう。いくつかの実施例におけるハンドラ・ポインタは、ハンドラ・プログラムの開始アドレスを直接表すことができる。代替的にハンドラ・ポインタは、実行をハンドラ・プログラムの開始アドレスへ飛び越す(jump)ように動作可能な飛び越し命令に対するアドレスでもよい(例えば、ハンドラ・ポインタは、各飛び越し命令が異なるハンドラ・プログラムに対応する飛び越し命令テーブル内の特定の飛び越し命令を指示する)。
他の態様から見ると、本発明は、データ処理動作を遂行するように動作可能な処理論理と、プログラム命令によって指定されたデータ処理動作を遂行する前記処理論理を制御する前記プログラム命令を復号するように動作可能な命令復号器とを有するデータ処理装置を使用してデータを処理する方法を提供しており、この方法は、
前記処理論理を制御する前記命令復号器によって復号されたハンドラ分岐命令に応答して、
(i)ベース・アドレス・レジスタ内に格納されたベース・アドレスと、前記ハンドラ分岐命令内のインデックス値フィールドによって指定されるインデックス値とからハンドラ・ポインタを計算するステップと、
(ii)前記ハンドラ・ポインタによって指示された位置にあるメモリに格納されたハンドラ・プログラムのプログラム命令の実行に分岐するステップと、
(iii)前記ハンドラ・プログラムから復帰すると実行されるプログラム命令を格納するメモリ位置を指示する復帰アドレスを格納するステップと、
を含む。
更なる態様から見ると、本発明は、データ処理動作を遂行するように動作可能な処理論理と、プログラム命令によって指定されたデータ処理動作を遂行する前記処理論理を制御する前記プログラム命令を復号するように動作可能な命令復号器とを有するデータ処理装置を制御するように動作可能なコンピュータプログラムを含むコンピュータプログラム製品を提供しており、前記コンピュータプログラム製品は、
前記命令復号器によって復号可能であるとともに、前記処理論理を制御するハンドラ分岐命令であって、
(i)ベース・アドレス・レジスタ内に格納されたベース・アドレスと、前記ハンドラ分岐命令内のインデックス値フィールドによって指定されるインデックス値とからハンドラ・ポインタを計算し、
(ii)前記ハンドラ・ポインタによって指示された位置にあるメモリに格納されたハンドラ・プログラムのプログラム命令の実行に分岐し、
(iii)前記ハンドラ・プログラムから復帰すると実行されるプログラム命令を格納するメモリ位置を指示する復帰アドレスを格納する、
ハンドラ分岐命令を含む。
更なる態様から見ると、本発明は、非ネイティブ・プログラム命令を変換し、データ処理動作を遂行するように動作可能な処理論理と、プログラム命令によって指定されたデータ処理動作を遂行する前記処理論理を制御する前記プログラム命令を復号するように動作可能な命令復号器とを有するデータ処理装置によって直接復号可能なネイティブ・プログラム命令を形成するように動作可能なコンピュータプログラムを含むコンピュータプログラム製品を提供しており、前記コンピュータプログラム製品は、
前記処理論理を制御して、
(i)ベース・アドレス・レジスタ内に格納されたベース・アドレスと、前記ハンドラ分岐命令内のインデックス値フィールドによって指定されるインデックス値とからハンドラ・ポインタを計算し、
(ii)前記ハンドラ・ポインタによって指示された位置にあるメモリに格納されたハンドラ・プログラムのプログラム命令の実行に分岐し、
(iii)前記ハンドラ・プログラムから復帰すると実行されるプログラム命令を格納するメモリ位置を指示する復帰アドレスを格納する、
前記命令復号器によって復号可能なハンドラ分岐命令を含む。
この発明に関する上記および他の目的、特徴および利点は、添付の図面とともに読むべき、以下に示す例示的実施例の詳細な説明から明らかであろう。
図1は、メモリ4、プロセッサ6およびコプロセッサ8を含むデータ処理システム2を示している。メモリ4、プロセッサ6およびコプロセッサ8は、別々の集積回路として与えられても良いし、単一集積回路上に一緒に組み込まれても良いし、あるいは、2素子が結合される中間的な型式でも良いことは理解されるであろう。プロセッサ6は、レジスタ・ファイル10、乗算器12、シフタ14および加算器16を含む。レジスタ・ファイル10、乗算器12、シフタ14および加算器16は一緒になり、命令パイプライン20の復号ステージに到達すると命令復号器18によって復号されると考えることができるプログラム命令に制御されて処理動作を遂行する処理論理を表す(実際には、復号はいくつかのパイプラインステージに展開される)。処理論理が更なる各種処理動作を追加する回路を含むことができることは理解されるであろう。一般にプロセッサ6は、簡単にするため図1に示されていない多数の他の回路素子を含む。
メモリ4は、データとプログラム命令を格納する。プログラム命令は命令パイプライン20の中にフェッチされ、処理論理を制御する制御信号を発生する。1つの型式の動作では、プロセッサ6によって実行されるJITコンパイラまたは動的適応型コンパイラが、メモリ4内に格納されたプログラムを対マシン独立型プログラム命令言語から(プロセッサ6に対してネイティブな)ネイティブ・プログラム命令言語に変換する役目をする。一例として、Javaバイトコード、MSILバイトコード、CILバイトコードまたは.NETバイトコードは、メモリ4内に格納され、プロセッサ6のネイティブARMな、ThumbまたはThumb−2に変換されるプログラムを形成することができる。変換されたプログラムは、続けて実行するためにメモリ4の中に復帰して格納される。少なくとも効率とコストのためには、変換されたプログラムは、あまりにも多くのメモリの記憶容量を消費してはならないことは理解されるであろう
コプロセッサ8は、プロセッサ6に関連する構成パラメータ(configuration parameters)を格納する多数の構成レジスタを含む構成コプロセッサである。これらの構成レジスタの1つは、ハンドラ・ベース・ポインタの値を格納するレジスタ22として示されている。ハンドラ・ベース・ポインタの値はメモリ4に対するアドレスの位置であり、この値は後で詳細に考察する命令復号器18によって復号されたハンドラ分岐命令によって呼び出すことができるハンドラ・プログラムの集まりの開始点である。
図2は、対マシン独立型プログラム命令BC1からBC10を含む仮想マシンプログラムの一部を示している。これらの命令は、図示のように、JITコンパイラまたは動的適応型コンパイラに支配されてネイティブなThumb−2命令を形成する。図示のように、この変換は、1対1の変換、1対多数の変換または多数対1の変換でもよい。
変換される対マシン独立型プログラム命令の或るものは、少数のネイティブ命令によっては容易に表すことができない複雑な機能を表しており、必要に応じて変換されたプログラム内から再使用することができるハンドラ・プログラムによって、より効果的に処理される。図示のように、バイトコードBC7は、即値フィールドを含まないハンドラ分岐命令HBL1に変換される。ハンドラ分岐命令HBL1は、値Nを指定するインデックス値フィールドを含んでいるのである。このことは、ハンドラ分岐命令HBL1を実行するときの分岐目標アドレスが、ハンドラ・ベース・アドレス・ポインタHBAと(32*N)の合計によって与えられることを示している。この位置にあるハンドラ・プログラム24は、ハンドラNである。そのハンドラ・プログラム24が実行を終了すると、その終了時点の復帰命令により、ネイティブ・プログラム命令T8の処理が復帰するように、ハンドラ分岐命令が実行された時に格納されたリンク・レジスタ値がプログラム・カウンタ・レジスタPCに再ロードされる。
対マシン独立型バイトコードBC9は、異なるハンドラ分岐命令HBLP1に変換される。この第2の型式のハンドラ分岐命令は、インデックス値フィールドと即値フィールドを含む。即値フィールドは、バイトコードBC9から取り出された、またはバイトコードBC9に関連するパラメータを、呼び出すべきハンドラ・プログラム26に転送するために使用される。これによって、ハンドラ・プログラム26は、転送されたパラメータに応答する機能を追加することが可能になる。ハンドラ・プログラム26が終了すると、処理はネイティブ・プログラム命令BC10に復帰する。
図3は、即値フィールドを含むハンドラ分岐命令HBLPの復号に続く命令復号器18によって制御される処理動作を、模式的に示す流れ図である。ステップ28で命令復号器18は、HBLP命令が命令パイプライン20の復号ステージの中に受信されるまで待ち合わせているとみなし得る。そのような命令が認識されると、処理はステップ30に進み、ここでレジスタ・ファイル10のレジスタR8に即値が格納される。ハンドラ・プログラムが実行を開始すると、ハンドラ・プログラムは、HBLPプログラムに関連する即値がレジスタR8の中に存在していると想定する。
ステップ32は、レジスタ・ファイル10のレジスタR15の中に格納されている現在のプログラムカウンタの値PCを、リンク・レジスタR14の中に格納する。ハンドラ・プログラムの終わりにある復帰命令は、レジスタR14の中に格納されたアドレス値が復帰アドレスの値であると想定する。通常、復帰アドレスの値は、分岐を実行させたハンドラ分岐命令に続くアドレスを指示することは理解されるであろう。
ステップ34で、コプロセッサ構成レジスタ22から読み出されたハンドラ・ベース・ポインタと、ハンドラ分岐命令HBLPの中からのインデックス値フィールドを左に(5ビットだけ)論理シフトした値とを一緒にした合計として分岐アドレスの計算が実行される。計算されたハンドラ・プログラム・アドレスは、ステップ36でプログラム・カウンタ・レジスタR15の中に格納され、ステップ38でハンドラ・プログラムへの分岐をもたらす。
ステップ40は、ハンドラ・プログラムの実行を表しており、これは通常はレジスタR8内のハンドラ・プログラムに渡される即値の何等かの使用を含む(ハンドラ・プログラムがその即値を実際利用しないかもしれない状況もあることは理解されるであろう)。
ハンドラ・プログラムの終了時点で復帰命令に到達するとステップ42が遂行され、レジスタR14内に保持されているリンク・レジスタの値をプログラム・カウンタ・レジスタR15の中にローディングすることによって、ハンドラ分岐命令に続く命令に対して復帰が実行される。ハンドラ分岐命令に関連する処理は効果的に終了する。
実際にステップ40、42は、HBLP命令自体によって直接遂行されるのではなく、命令復号器18によって復号されるHBLP以外のプログラム命令に制御されて遂行されることは理解されるであろう。
図4は、第2の型式のハンドラ分岐命令HBLを示している。この型式のハンドラ分岐命令は、即値フィールドを含まない。即値フィールドが無いために、インデックス値フィールドに割り当てられる命令ビットのスペース量が大きくなるので、計算することができるハンドラ・ポインタの範囲を広くすることができる。このため、即値フィールドを含むハンドラ分岐命令に関連するハンドラ・プログラムは、ハンドラ・ベース・アドレス・ポインタの位置に近いメモリ内の位置が割り当てられ、図4に示す型式のハンドラ分岐命令に関連するハンドラ・プログラムは、ハンドラ・ベース・アドレス・ポインタから遠くに配置される。
図4に示す処理ステップは、即値の格納が無いことと、ハンドラ・プログラムが、所定のレジスタ、例えば、R8内に格納されている即値を参照することができないことを除き、図3の処理ステップと同じである。
図5は、図3,4に示す2つの型式のハンドラ分岐命令の符号化の例を示している。図5で使用されている文法(syntax)は、正規(normal)のARM命令の文法である。Thumb−2Equivalentを示している部分に示されている機能は、ただ1つの関連するハンドラ分岐命令によって遂行される機能の表現である。したがって、ハンドラ分岐命令はこの機能を指定する方法のコード密度がより多くなっていることが判るであろう。
図6は、非ネイティブ・プログラム、仮想マシン、ネイティブ・プログラムおよびそのネイティブ・プログラムの実行の間の関係を模式的に表している。図示のように、Javaバイトコード・プログラム44はメモリ4の中に格納され、JITコンパイラ48を含むJava仮想マシン46によって処理され、Thumb−2命令50を含むネイティブ・プログラムに変換される。JITコンパイラ48は動的適応型コンパイラであっても良いことは理解されるであろう。更にJavaバイトコード・プログラム44は、MSILバイトコード、CILバイトコード、.NETバイトコードなど、対マシン独立型プログラム命令で形成されてもよい。代替的使用におけるJavaバイトコード・プログラム44は、実行が所望されるプロセッサ6に対してはネイティブではないCISCプロセッサ(例えば、x86)のような他のプロセッサのプログラム命令の代わりとなりうる。
変換されたプログラム50が形成されると、このプログラムは、適切な位置にあるハンドラ・プログラム24、26を呼び出すために使用されるハンドラ分岐命令HBLPとHBLを含む。これらのハンドラ・プログラムは、Java仮想マシン46とJITコンパイラ48に制御されてハンドラ・ベース・アドレス・ポインタに続く所定のメモリにセットアップされるとともに格納される。図示の例におけるハンドラ・プログラムは、ハンドラ・ベース・アドレス・ポインタHBAに続くアドレス空間に直接与えられる。代替実施例におけるハンドラ・ベース・アドレス・ポインタは、ハンドラ分岐命令のインデックス値フィールドに依存して選択的に分岐される飛び越し命令(jump instructions)のリストを指している。これらの飛び越し命令は、他の位置に格納されているハンドラ・プログラムに対する飛び越しをトリガする。そのような配列は、各種サイズのハンドラ・プログラムがメモリの中に密集して格納されることを容易に可能にするとともに、ハンドラ・プログラムのサイズが広範囲に変わることを可能にする。代替方法として、ハンドラ・ベース・アドレス・ポインタに続く位置にプログラムの或る一部を組み込み、オーバーフロー分は別の位置に与え、ハンドラ・ベース・アドレス・ポインタに続くアドレス空間内の最終命令によって上記別の位置に飛ぶことによってその特定のプログラムを得るようにして、各種サイズのハンドラ・プログラムを収容することができる。ハンドラ分岐命令に続くネイティブ命令に対する復帰は、拡張された部分の終わりに移動するであろう。
図6に戻り、メモリ4内に格納された変換されたプログラム50は、メモリ4から読み出されて、命令パイプライン20に転送され命令復号器18によって復号されるとともに、レジスタ・ファイル10、乗算器12、シフタ14および加算器16を含む処理論理を制御するために使用される。変換されたプログラム50は、特殊なハンドラ分岐命令を含む。JITコンパイラ48または動的適応型コンパイラの型式をした変換プログラムは、つくり出された変換されたプログラム50の中に新しい特殊用途ハンドラ分岐命令を発生する役目をする。したがって、変換されたプログラム50は、その変換48を遂行するプログラムとともに、本発明の相補的態様である。
添付の図面を参照して本発明の例示的実施例を詳細に説明してきたが、本発明がこれらの正確な実施例に限定されないことと、特許請求の範囲によって定義された本発明の範囲と趣旨を逸脱することなく当業者によって各種変更や改造を実施できることとを理解すべきである。
ハンドラ分岐命令を使用するデータ処理装置を模式的に示す図である。 対マシン独立型バイトコード、これら対マシン独立型バイトコードのネイティブ・プログラム命令への変換およびネイティブ・プログラム命令からハンドラ・プログラムへの分岐の間の関係を模式的に示す図である。 即値フィールドを含むハンドラ分岐命令に続く処理論理によって遂行される動作を、模式的に示す流れ図である。 即値フィールドを含まないハンドラ分岐命令に続く処理論理によって遂行される動作を、模式的に示す図である。 2種類のハンドラ分岐命令の符号化を模式的に示す図である。 対マシン独立型バイトコード、バーチャル・マシン・プログラム、変換されたプログラムおよび変換されたプログラムの実行の間の関係を模式的に示す図である。
符号の説明
2 データ処理システム
4 メモリ
6 プロセッサ
8 コプロセッサ
10 レジスタ・ファイル、
14 乗算器
16 加算器
18 命令復号器
20 命令パイプライン
22 コプロセッサ構成レジスタ
24、26 ハンドラ・プログラム
44 Javaバイトコード・プログラム
46 Java仮想マシン
50 Thumb−2命令(変換されたプログラム)

Claims (60)

  1. データ処理動作を遂行するように動作可能な処理論理と、
    プログラム命令によって指定されたデータ処理動作を遂行する前記処理論理を制御する前記プログラム命令を復号するように動作可能な命令復号器と、
    を含むデータ処理装置において、
    前記命令復号器は、ハンドラ分岐命令に応答して、
    (i)ベース・アドレス・レジスタ内に格納されたベース・アドレスと、前記ハンドラ分岐命令内のインデックス値フィールドによって指定されるインデックス値とからハンドラ・ポインタを計算し、
    (ii)前記ハンドラ・ポインタによって指示された位置にあるメモリに格納されたハンドラ・プログラムのプログラム命令の実行に分岐し、
    (iii)前記ハンドラ・プログラムから復帰すると実行されるプログラム命令を格納するメモリ位置を指示する復帰アドレスを格納する、
    データ処理装置。
  2. 請求項1に記載の装置において、前記ベース・アドレス・レジスタは、コプロセッサ構成レジスタである前記装置。
  3. 請求項1に記載の装置において、前記インデックス値は、前記ハンドラ・ポインタを計算するために使用される前に左方向論理シフトを受ける前記装置。
  4. 請求項1に記載の装置において、前記ハンドラ・ポインタは、前記ベース・アドレスと前記インデックス値とに依存する値の合計から計算される前記装置。
  5. 請求項1に記載の装置において、前記ハンドラ分岐命令は、即値フィールドを含み、前記命令復号器は、前記ハンドラ分岐命令に応答して前記処理論理を制御し、即値が前記ハンドラ・プログラムに対してアクセス可能であるように、前記即値フィールド内に格納された値に依存する即値を、所定のレジスタの中に格納する前記装置。
  6. 請求項5に記載の装置において、前記命令復号器は、第1の長さのインデックス値フィールドと即値フィールドとを含む第1の型式のハンドラ分岐命令と、前記第1の長さより長い第2の長さのインデックス値フィールドを含み即値フィールドを含まない第2の型式のハンドラ分岐命令とに応答する前記装置。
  7. 請求項1に記載の装置において、前記ハンドラ・プログラムは、前記命令復号器によって直接復号可能ではない非ネイティブ・プログラム命令である1つまたは複数のプログラム命令をエミュレートするように動作可能である前記装置。
  8. 請求項7に記載の装置において、各種型式の非ネイティブ・プログラム命令は、各種インデックス値に応答して分岐した先の各種ハンドラ・プログラムでエミュレートされる前記装置。
  9. 請求項8に記載の装置において、
    所定の型式の非ネイティブ・プログラム命令の1つまたは複数は所定のハンドラ・プログラムによってエミュレートされ、
    複数型式の非ネイティブ・プログラム命令の1つまたは複数は所定のハンドラ・プログラムによってエミュレートされ、
    所定の型式の非ネイティブ・プログラム命令の1つまたは複数は、前記所定の型式の非ネイティブ・プログラム命令に関連する1つまたは複数のパラメータに依存して選択された、複数のハンドラ・プログラムの1つによってエミュレートされる、
    前記装置。
  10. 請求項7に記載の装置において、前記非ネイティブ・プログラム命令は、対マシン独立型プログラム命令である前記装置。
  11. 請求項10に記載の装置において、前記対マシン独立型プログラム命令は、
    Javaバイトコード、
    MSILバイトコード、
    CILバイトコード、
    .NETバイトコード、
    のなかの1つである前記装置。
  12. 請求項7に記載の装置において、前記非ネイティブ命令は、異なるデータ処理装置のネイティブ・プログラム命令である前記装置。
  13. 請求項12に記載の装置において、前記処理論理と前記命令復号器は、RISCプロセッサの一部であり、前記非ネイティブ命令はCISCプロセッサのネイティブ命令である前記装置。
  14. 請求項1に記載の装置において、前記ハンドラ・ポインタは、前記ハンドラ・プログラムの開始アドレスである前記装置。
  15. 請求項1に記載の装置において、前記ハンドラ・ポインタは、前記ハンドラ・プログラムの開始アドレスに実行を飛び越させるように動作可能な飛び越し命令のアドレスである前記装置。
  16. データ処理動作を遂行するように動作可能な処理論理と、プログラム命令によって指定されたデータ処理動作を遂行する前記処理論理を制御する前記プログラム命令を復号するように動作可能な命令復号器とを有するデータ処理装置を使用してデータを処理する方法であって、
    前記処理論理を制御する前記命令復号器によって復号されたハンドラ分岐命令に応答して、
    (i)ベース・アドレス・レジスタ内に格納されたベース・アドレスと、前記ハンドラ分岐命令内のインデックス値フィールドによって指定されたインデックス値とからハンドラ・ポインタを計算するステップと、
    (ii)前記ハンドラ・ポインタによって指示された位置にあるメモリに格納されたハンドラ・プログラムのプログラム命令の実行に分岐するステップと、
    (iii)前記ハンドラ・プログラムから復帰すると実行されるプログラム命令を格納するメモリ位置を指示する復帰アドレスを格納するステップと、
    を含む方法。
  17. 請求項16に記載の方法において、前記ベース・アドレス・レジスタは、コプロセッサ構成レジスタである前記方法。
  18. 請求項16に記載の方法において、前記インデックス値は、前記ハンドラ・ポインタを計算するために使用される前に左方向論理シフトを受ける前記方法。
  19. 請求項16に記載の方法において、前記ハンドラ・ポインタは、前記ベース・アドレスと前記インデックス値とに依存する値の合計から計算される前記方法。
  20. 請求項16に記載の方法において、前記ハンドラ分岐命令は、即値フィールドを含み、前記命令復号器は、前記ハンドラ分岐命令に応答して前記処理論理を制御し、即値が前記ハンドラ・プログラムに対してアクセス可能であるように、前記即値フィールド内に格納された値に依存する即値を、所定のレジスタの中に格納する前記方法。
  21. 請求項20に記載の方法において、前記命令復号器は、第1の長さのインデックス値フィールドと即値フィールドとを含む第1の型式のハンドラ分岐命令と、前記第1の長さより長い第2の長さのインデックス値フィールドを含み即値フィールドを含まない第2の型式のハンドラ分岐命令とに応答する前記方法。
  22. 請求項16に記載の方法において、前記ハンドラ・プログラムは、前記命令復号器によって直接復号可能ではない非ネイティブ・プログラム命令である1つまたは複数のプログラム命令をエミュレートするように動作可能である前記方法。
  23. 請求項22に記載の方法において、各種型式の非ネイティブ・プログラム命令は、各種インデックス値に応答して分岐した先の各種ハンドラ・プログラムでエミュレートされる前記方法。
  24. 請求項23に記載の方法において、所定の型式の非ネイティブ・プログラム命令の1つまたは複数は所定のハンドラ・プログラムによってエミュレートされ、
    複数型式の非ネイティブ・プログラム命令の1つまたは複数は所定のハンドラ・プログラムによってエミュレートされ、
    所定の型式の非ネイティブ・プログラム命令の1つまたは複数は、前記所定の型式の非ネイティブ・プログラム命令に関連する1つまたは複数のパラメータに依存して選択された複数のハンドラ・プログラムの1つによってエミュレートされる、前記方法。
  25. 請求項22に記載の方法において、前記非ネイティブ・プログラム命令は、対マシン独立型プログラム命令である前記方法。
  26. 請求項25に記載の方法において、前記対マシン独立型プログラム命令は、
    Javaバイトコード、
    MSILバイトコード、
    CILバイトコード、
    .NETバイトコード、
    のなかの1つである前記方法。
  27. 請求項22に記載の方法において、前記非ネイティブ命令は、異なるデータ処理装置のネイティブ・プログラム命令である前記方法。
  28. 請求項27に記載の方法において、前記処理論理と前記命令復号器は、RISCプロセッサの一部であり、前記非ネイティブ命令はCISCプロセッサのネイティブ命令である前記方法。
  29. 請求項16に記載の方法において、前記ハンドラ・ポインタは、前記ハンドラ・プログラムの開始アドレスである前記方法。
  30. 請求項16に記載の方法において、前記ハンドラ・ポインタは、前記ハンドラ・プログラムの開始アドレスに実行を飛び越させるように動作可能な飛び越し命令のアドレスである前記方法。
  31. データ処理動作を遂行するように動作可能な処理論理と、プログラム命令によって指定されたデータ処理動作を遂行する前記処理論理を制御する前記プログラム命令を復号するように動作可能な命令復号器とを有するデータ処理装置を制御するように動作可能なコンピュータプログラムを含むコンピュータプログラム製品であって、
    前記処理論理を制御して、
    (i)ベース・アドレス・レジスタ内に格納されたベース・アドレスと、前記ハンドラ分岐命令内のインデックス値フィールドによって指定されるインデックス値とからハンドラ・ポインタを計算し、
    (ii)前記ハンドラ・ポインタによって指示された位置にあるメモリに格納されたハンドラ・プログラムのプログラム命令の実行に分岐し、
    (iii)前記ハンドラ・プログラムから復帰すると実行されるプログラム命令を格納するメモリ位置を指示する復帰アドレスを格納する、
    前記命令復号器によって復号可能なハンドラ分岐命令を含むコンピュータプログラム製品。
  32. 請求項31に記載のコンピュータプログラム製品において、前記ベース・アドレス・レジスタは、コプロセッサ構成レジスタである前記コンピュータプログラム製品。
  33. 請求項31に記載のコンピュータプログラム製品において、前記インデックス値は、前記ハンドラ・ポインタを計算するために使用される前に左方向論理シフトを受ける前記コンピュータプログラム製品。
  34. 請求項31に記載のコンピュータプログラム製品において、前記ハンドラ・ポインタは、前記ベース・アドレスと前記インデックス値とに依存する値の合計から計算される前記コンピュータプログラム製品。
  35. 請求項31に記載のコンピュータプログラム製品において、前記ハンドラ分岐命令は、即値フィールドを含み、前記命令復号器は、前記ハンドラ分岐命令に応答して前記処理論理を制御し、即値が前記ハンドラ・プログラムに対してアクセス可能であるように、前記即値フィールド内に格納された値に依存する即値を、所定のレジスタの中に格納する前記コンピュータプログラム製品。
  36. 請求項35に記載のコンピュータプログラム製品において、前記命令復号器は、第1の長さのインデックス値フィールドと即値フィールドとを含む第1の型式のハンドラ分岐命令と、前記第1の長さより長い第2の長さのインデックス値フィールドを含み即値フィールドを含まない第2の型式のハンドラ分岐命令とに応答する前記コンピュータプログラム製品。
  37. 請求項31に記載のコンピュータプログラム製品において、前記ハンドラ・プログラムは、前記命令復号器によって直接復号可能ではない非ネイティブ・プログラム命令である1つまたは複数のプログラム命令をエミュレートするように動作可能である前記コンピュータプログラム製品。
  38. 請求項37に記載のコンピュータプログラム製品において、各種型式の非ネイティブ・プログラム命令は、各種インデックス値に応答して分岐した先の各種ハンドラ・プログラムでエミュレートされる前記コンピュータプログラム製品。
  39. 請求項38に記載のコンピュータプログラム製品において、所定の型式の非ネイティブ・プログラム命令の1つまたは複数は所定のハンドラ・プログラムによってエミュレートされ、
    複数型式の非ネイティブ・プログラム命令の1つまたは複数は所定のハンドラ・プログラムによってエミュレートされ、
    所定の型式の非ネイティブ・プログラム命令の1つまたは複数は、前記所定の型式の非ネイティブ・プログラム命令に関連する1つまたは複数のパラメータに依存して選択された複数のハンドラ・プログラムの1つによってエミュレートされる、
    前記コンピュータプログラム製品。
  40. 請求項37に記載のコンピュータプログラム製品において、前記非ネイティブ・プログラム命令は、対マシン独立型プログラム命令である前記コンピュータプログラム製品。
  41. 請求項40に記載のコンピュータプログラム製品において、前記対マシン独立型プログラム命令は、
    Javaバイトコード、
    MSILバイトコード、
    CILバイトコード、
    .NETバイトコード、
    のなかの1つである前記コンピュータプログラム製品。
  42. 請求項37に記載のコンピュータプログラム製品において、前記非ネイティブ命令は、異なるデータ処理装置のネイティブ・プログラム命令である前記コンピュータプログラム製品。
  43. 請求項42に記載のコンピュータプログラム製品において、前記処理論理と前記命令復号器は、RISCプロセッサの一部であり、前記非ネイティブ命令はCISCプロセッサのネイティブ命令である前記コンピュータプログラム製品。
  44. 請求項31に記載のコンピュータプログラム製品において、前記ハンドラ・ポインタは、前記ハンドラ・プログラムの開始アドレスである前記コンピュータプログラム製品。
  45. 請求項31に記載のコンピュータプログラム製品において、前記ハンドラ・ポインタは、前記ハンドラ・プログラムの開始アドレスに実行を飛び越させるように動作可能な飛び越し命令のアドレスである前記コンピュータプログラム製品。
  46. 非ネイティブ・プログラム命令を変換し、データ処理動作を遂行するように動作可能な処理論理と、プログラム命令によって指定されたデータ処理動作を遂行する前記処理論理を制御する前記プログラム命令を復号するように動作可能な命令復号器とを有するデータ処理装置によって直接復号可能なネイティブ・プログラム命令を形成するように動作可能なコンピュータプログラムを含むコンピュータプログラム製品であって、
    前記処理論理を制御して、
    (i)ベース・アドレス・レジスタ内に格納されたベース・アドレスと、前記ハンドラ分岐命令内のインデックス値フィールドによって指定されるインデックス値とからハンドラ・ポインタを計算し、
    (ii)前記ハンドラ・ポインタによって指示された位置にあるメモリに格納されたハンドラ・プログラムのプログラム命令の実行に分岐し、
    (iii)前記ハンドラ・プログラムから復帰すると実行されるプログラム命令を格納するメモリ位置を指示する復帰アドレスを格納する、
    前記命令復号器によって復号可能なハンドラ分岐命令を含むコンピュータプログラム製品。
  47. 請求項46に記載のコンピュータプログラム製品において、前記ベース・アドレス・レジスタは、コプロセッサ構成レジスタである前記コンピュータプログラム製品。
  48. 請求項46に記載のコンピュータプログラム製品において、前記インデックス値は、前記ハンドラ・ポインタを計算するために使用される前に左方向論理シフトを受ける前記コンピュータプログラム製品。
  49. 請求項46に記載のコンピュータプログラム製品において、前記ハンドラ・ポインタは、前記ベース・アドレスと前記インデックス値とに依存する値の合計から計算される前記コンピュータプログラム製品。
  50. 請求項46に記載のコンピュータプログラム製品において、前記ハンドラ分岐命令は、即値フィールドを含み、前記命令復号器は、前記ハンドラ分岐命令に応答して前記処理論理を制御し、即値が前記ハンドラ・プログラムに対してアクセス可能であるように、前記即値フィールド内に格納された値に依存する即値を、所定のレジスタの中に格納する前記コンピュータプログラム製品。
  51. 請求項50に記載のコンピュータプログラム製品において、前記命令復号器は、第1の長さのインデックス値フィールドと即値フィールドとを含む第1の型式のハンドラ分岐命令と、前記第1の長さより長い第2の長さのインデックス値フィールドを含み即値フィールドを含まない第2の型式のハンドラ分岐命令とに応答する前記コンピュータプログラム製品。
  52. 請求項46に記載のコンピュータプログラム製品において、前記ハンドラ・プログラムは、前記命令復号器によって直接復号可能ではない非ネイティブ・プログラム命令である1つまたは複数のプログラム命令をエミュレートするように動作可能である前記コンピュータプログラム製品。
  53. 請求項52に記載のコンピュータプログラム製品において、各種型式の非ネイティブ・プログラム命令は、各種インデックス値に応答して分岐した先の各種ハンドラ・プログラムでエミュレートされる前記コンピュータプログラム製品。
  54. 請求項53に記載のコンピュータプログラム製品において、
    所定の型式の非ネイティブ・プログラム命令の1つまたは複数は所定のハンドラ・プログラムによってエミュレートされ、
    複数型式の非ネイティブ・プログラム命令の1つまたは複数は所定のハンドラ・プログラムによってエミュレートされ、
    所定の型式の非ネイティブ・プログラム命令の1つまたは複数は、前記所定の型式の非ネイティブ・プログラム命令に関連する1つまたは複数のパラメータに依存して選択された複数のハンドラ・プログラムの1つによってエミュレートされる、前記コンピュータプログラム製品。
  55. 請求項52に記載のコンピュータプログラム製品において、前記非ネイティブ・プログラム命令は、対マシン独立型プログラム命令である前記コンピュータプログラム製品。
  56. 請求項55に記載のコンピュータプログラム製品において、前記対マシン独立型プログラム命令は、
    Javaバイトコード、
    MSILバイトコード、
    CILバイトコード、
    .NETバイトコード、
    のなかの1つである前記コンピュータプログラム製品。
  57. 請求項52に記載のコンピュータプログラム製品において、前記非ネイティブ命令は、異なるデータ処理装置のネイティブ・プログラム命令である前記コンピュータプログラム製品。
  58. 請求項57に記載のコンピュータプログラム製品において、前記処理論理と前記命令復号器は、RISCプロセッサの一部であり、前記非ネイティブ命令はCISCプロセッサのネイティブ命令である前記コンピュータプログラム製品。
  59. 請求項46に記載のコンピュータプログラム製品において、前記ハンドラ・ポインタは、前記ハンドラ・プログラムの開始アドレスである前記コンピュータプログラム製品。
  60. 請求項46に記載のコンピュータプログラム製品において、前記ハンドラ・ポインタは、前記ハンドラ・プログラムの開始アドレスに実行を飛び越させるように動作可能な飛び越し命令のアドレスである前記コンピュータプログラム製品。
JP2005076175A 2004-03-18 2005-03-17 機能を呼び出す方法と装置 Active JP4799016B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0406157A GB2412192B (en) 2004-03-18 2004-03-18 Function calling mechanism
GB0406157.8 2004-03-18

Publications (2)

Publication Number Publication Date
JP2005267640A true JP2005267640A (ja) 2005-09-29
JP4799016B2 JP4799016B2 (ja) 2011-10-19

Family

ID=32117986

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005076175A Active JP4799016B2 (ja) 2004-03-18 2005-03-17 機能を呼び出す方法と装置

Country Status (3)

Country Link
US (1) US7647489B2 (ja)
JP (1) JP4799016B2 (ja)
GB (1) GB2412192B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014081783A (ja) * 2012-10-16 2014-05-08 Renesas Electronics Corp マイクロコントローラ、ハンドラアドレス特定方法及びプログラム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080177979A1 (en) * 2006-03-01 2008-07-24 Gheorghe Stefan Hardware multi-core processor optimized for object oriented computing
US7979685B1 (en) 2007-11-27 2011-07-12 Oracle America, Inc. Multiple instruction execution mode resource-constrained device
US9116685B2 (en) 2011-07-19 2015-08-25 Qualcomm Incorporated Table call instruction for frequently called functions
WO2013100999A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Enabling and disabling a second jump execution unit for branch misprediction

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01503181A (ja) * 1987-03-24 1989-10-26 インシグニア・ソリューションズ・リミテッド コンピュータ
JP2000267861A (ja) * 1999-03-18 2000-09-29 Toshiba Corp インタプリタの実装方法及びインタプリタプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2001508909A (ja) * 1997-10-02 2001-07-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ バーチャルマシン命令を処理するためのデータ処理装置

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3889243A (en) 1973-10-18 1975-06-10 Ibm Stack mechanism for a data processor
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
US4922414A (en) 1982-12-17 1990-05-01 Symbolics Inc. Symbolic language data processing system
US4862351A (en) * 1983-09-01 1989-08-29 Unisys Corporation Method of executing called activities via depictor-linked low level language microcode, hardware logic, and high level language commands; and apparatus for same
US5222221A (en) * 1986-06-17 1993-06-22 Yeda Research And Development Co., Ltd. Method and apparatus for implementing a concurrent logic program
DE3788877T2 (de) * 1987-03-24 1994-06-23 Insignia Solutions Ltd Einrichtung zur software-emulation.
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
US5249280A (en) * 1990-07-05 1993-09-28 Motorola, Inc. Microcomputer having a memory bank switching apparatus for accessing a selected memory bank in an external memory
JP3333196B2 (ja) * 1991-07-08 2002-10-07 セイコーエプソン株式会社 トラップ処理方法
EP0534597B1 (en) * 1991-09-23 2000-04-26 Intel Corporation Computer system having software interrupt (INTN) instructions selectively operating in a virtual mode
US5455775A (en) 1993-01-25 1995-10-03 International Business Machines Corporation Computer design system for mapping a logical hierarchy into a physical hierarchy
US5517651A (en) * 1993-12-29 1996-05-14 Intel Corporation Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes
GB2289353B (en) 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Data processing 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
US5819063A (en) * 1995-09-11 1998-10-06 International Business Machines Corporation Method and data processing system for emulating a program
US6112253A (en) * 1995-10-12 2000-08-29 International Business Machines Corporation Object-oriented method maintenance mechanism that does not require cessation of the computer system or its programs
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
US6038643A (en) 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
WO1997027544A1 (en) 1996-01-24 1997-07-31 Sun Microsystems, Inc. Processor with accelerated array access bounds checking
KR100529416B1 (ko) 1996-01-24 2006-01-27 선 마이크로시스템즈 인코퍼레이티드 스택기반컴퓨터를위한명령폴딩방법및장치
EP0976029A2 (en) 1996-01-24 2000-02-02 Sun Microsystems, Inc. A processor for executing instruction sets received from a network or from a local memory
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
US6031992A (en) 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
US5926832A (en) 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
JP3330378B2 (ja) 1996-11-13 2002-09-30 ラツ,ヤイール リアルタイムプログラム言語アクセラレータ
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
US6009499A (en) 1997-03-31 1999-12-28 Sun Microsystems, Inc Pipelined stack caching circuit
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
US6272615B1 (en) * 1997-05-02 2001-08-07 Texas Instruments Incorporated Data processing device with an indexed immediate addressing mode
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
US5892966A (en) 1997-06-27 1999-04-06 Sun Microsystems, Inc. Processor complex for executing multimedia functions
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
US5870575A (en) * 1997-09-22 1999-02-09 International Business Machines Corporation Indirect unconditional branches in data processing system emulation mode
EP1359501A3 (en) 1997-10-02 2007-11-21 Koninklijke Philips Electronics N.V. A processing device for executing virtual machine instructions
US6009509A (en) 1997-10-08 1999-12-28 International Business Machines Corporation Method and system for the temporary designation and utilization of a plurality of physical registers as a stack
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
JP2000122875A (ja) * 1998-10-19 2000-04-28 Internatl Business Mach Corp <Ibm> 例外処理方法およびシステム
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
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
US6363522B1 (en) * 1999-04-23 2002-03-26 Sun Microsystems, Inc. Method and apparatus for handling exceptions as normal control flow
US6907511B2 (en) * 2001-06-11 2005-06-14 Fujitsu Limited Reducing transitions on address buses using instruction-set-aware system and method
CN100382017C (zh) * 2002-07-09 2008-04-16 徐肇昌 子序网模块及其调用方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01503181A (ja) * 1987-03-24 1989-10-26 インシグニア・ソリューションズ・リミテッド コンピュータ
JP2001508909A (ja) * 1997-10-02 2001-07-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ バーチャルマシン命令を処理するためのデータ処理装置
JP2000267861A (ja) * 1999-03-18 2000-09-29 Toshiba Corp インタプリタの実装方法及びインタプリタプログラムを記録したコンピュータ読み取り可能な記録媒体

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014081783A (ja) * 2012-10-16 2014-05-08 Renesas Electronics Corp マイクロコントローラ、ハンドラアドレス特定方法及びプログラム

Also Published As

Publication number Publication date
GB0406157D0 (en) 2004-04-21
GB2412192A (en) 2005-09-21
US7647489B2 (en) 2010-01-12
US20050210226A1 (en) 2005-09-22
GB2412192B (en) 2007-08-29
JP4799016B2 (ja) 2011-10-19

Similar Documents

Publication Publication Date Title
EP1019794B1 (en) Data processing device for processing virtual machine instructions
EP0950216B1 (en) A processing device for executing virtual machine instructions
EP0938703B1 (en) Real time program language accelerator
JP4485198B2 (ja) Javaアクセラレータを備えたプロセッサシステム
US7080362B2 (en) Java virtual machine hardware for RISC and CISC processors
US7200741B1 (en) Microprocessor having main processor and co-processor
TWI279715B (en) Method, system and machine-readable medium of translating and executing binary of program code, and apparatus to process binaries
JP4833499B2 (ja) レジスタ内へのスタックオペランドの格納
JP3786644B2 (ja) バイトコンパイルされたJava(R)コードを実行するためのマイクロプロセッサ
JP2001195250A (ja) 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置
JP3193650B2 (ja) オペレーティング・システムに影響を与えないエミュレーション・コンテキストの保管と復元を行う方法およびシステム
JP4799016B2 (ja) 機能を呼び出す方法と装置
JP4035004B2 (ja) 情報処理装置
JP4684571B2 (ja) エミュレーションコンピュータ技術を実行する直接命令
KR100867564B1 (ko) 프로그램 제어 흐름에서 변경들을 이루기 위한 장치 및 방법
KR100267434B1 (ko) 제 1 처리 환경내에서 제 1 명령어를 에뮬레이션 환경내에서의제 2 명령어 처리 개시에 응하여 처리하는 방법 및 시스템
JP2000330792A (ja) バイトコードプログラム実行制御システム
US7930526B2 (en) Compare and branch mechanism
JP2000122876A (ja) 情報処理装置
JP2003196085A (ja) 情報処理装置
JP4418509B2 (ja) Javaアクセラレータを備えたプロセッサシステム
JP2005011350A (ja) 未解決命令解決
Cooper The direct execution of intermediate languages on an Eclipse computer
JP2008004132A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070412

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100622

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100921

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101022

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

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

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

Free format text: PAYMENT UNTIL: 20140812

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4799016

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

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