JP2004538556A - 複数命令セットシステムにおける非処理操作処理 - Google Patents

複数命令セットシステムにおける非処理操作処理 Download PDF

Info

Publication number
JP2004538556A
JP2004538556A JP2003500725A JP2003500725A JP2004538556A JP 2004538556 A JP2004538556 A JP 2004538556A JP 2003500725 A JP2003500725 A JP 2003500725A JP 2003500725 A JP2003500725 A JP 2003500725A JP 2004538556 A JP2004538556 A JP 2004538556A
Authority
JP
Japan
Prior art keywords
instruction
processing
instructions
instruction set
variable length
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
JP2003500725A
Other languages
English (en)
Other versions
JP3732198B2 (ja
JP2004538556A5 (ja
Inventor
ネヴィル、エドワード、コールズ
ローズ、アンドリュー、クリストファー
Original Assignee
エイアールエム リミテッド
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 エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2004538556A publication Critical patent/JP2004538556A/ja
Publication of JP2004538556A5 publication Critical patent/JP2004538556A5/ja
Application granted granted Critical
Publication of JP3732198B2 publication Critical patent/JP3732198B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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/3802Instruction prefetching
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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

Landscapes

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

Abstract

Java(R)バイトコード等の第1の命令sctのプログラム命令の非処理操作が検出される。その非処理操作に直接対処する機構を呼び出すのではなく、ARM(R)命令等の第2の命令セットからの一つ以上の命令が非処理操作された命令をエミュレートするのに使用される。第2の命令セットのこれらの命令も非処理操作される場合には、第2の命令セット内の非処理操作に対処する機構を呼び出してその操作を修復することができる。この方法はネイティブ固定長命令セットを有するプロセッサコアにより解釈される可変長命令の非処理操作に対処するのによく適している。特に、プリフェッチアボートおよび非処理浮動小数点演算はこの方法で簡便に対処することができる。

Description

【技術分野】
【0001】
本発明はデータ処理システムの分野に関する。特に、本発明は複数命令セットをサポートするシステム内の非処理(unhandled:非取扱)操作の処理に関する。
【背景技術】
【0002】
複数命令セットをサポートするデータ処理システムを提供することが知られている。このようなシステムの例は英国、ケンブリッジのARM(R)社製サムイネーブル(Thumb enabled)プロセッサである。これらのサムイネーブルプロセッサは32ビットARM命令および16ビットサム命令の両方の実行をサポートする
【0003】
プログラム命令をデータ処理システムにより直接処理できないことがしばしばデータ処理システム内で生じることがある。したがって、このような非処理操作を処理する機構を提供することが知られている。このような状況の例はプリフェッチ命令アボートである。仮想記憶システム内の命令をプリフェッチする時は、命令ロードがページ境界と交差することがあり、仮想記憶システム内にまだ適切にマッピングされていない新しいページによりアボートが生じることがある。その後、正しいマッピングを行って命令フェッチを再発行することができる。
【0004】
このような状況のもう一つの例は浮動小数点命令実行である。浮動小数点演算の実行中に、データ処理システムにより直接処理できない状況が生じることがある。これはIEEE754仕様とコンパチブルな浮動小数点システムにおいて特にそうである。このような状況の例はゼロによる減算、NaNを含む任意の演算、無限大を含む演算または逆正規化された数(denormalised number)を含む演算である。
【0005】
新しい命令セットが付加される時に、起こり得る全てのアボートに対して適切なアボート機構が適所にあることを保証するために著しい努力および開発が必要となる問題が生じる。
【0006】
非処理浮動小数点演算が生じる時に特有の問題が生じる。多くのシステムが処理されない浮動小数点演算を確認するのに命令ストリームの検査を頼りにしている。新しい命令セットによりこれらのシステムはその要求を満たすように書き換えなければならない。さらに、新しい命令セットがその単一命令に対して多数の浮動小数点演算を発生できる場合には問題が生じる。この場合、単一命令により2つ以上の非処理浮動小数点演算を生じることがあるため、命令ストリームの検査によりどの浮動小数点演算が処理されなかったかをシステムが決定できなくなることがある。
【0007】
非処理浮動小数点演算が不正確である、すなわち、浮動小数点演算を発生する命令が実行されるポイントにおいて非処理浮動小数点演算が検出されずに幾分後で検出される場合にはもう一つの問題が生じる。多くの浮動小数点システムの並列性によりこの状況が生じる。データ処理システムは浮動小数点演算を指定する命令に遭遇すると、浮動小数点サブシステムに浮動小数点演算を配布する。浮動小数点サブシステムに浮動小数点演算が配布されると、主データ処理システムは命令ストリーム内のさらなる命令の実行を継続する。多くの命令は浮動小数点システムが非処理浮動小数点演算を検出する前に実行することができ、非処理演算状態を主データ処理システムに信号で知らせる。この場合、非処理浮動小数点演算の原因は命令ストリームの検査により確認することができない。このような場合には浮動小数点システムが非処理浮動小数点演算を識別するレジスタ、例えば、英国、ケンブリッジのARM社製Vector Floating Point システムを含むことが知られている。
【0008】
多くのシステムでは、浮動小数点サブシステムは任意のポイントにおいて非処理演算を主データ処理システムに信号で知らせることはできず、非処理演算は主データ処理システムが浮動小数点サブシステムとのハンドシェークを実施する明示されたポイントでしか主データ処理システムに信号で知らせることができない。典型的に、これらのハンドシェークは浮動小数点演算を指定する命令の実行時にしか生じない。この場合、主データ処理システムが浮動小数点演算を指定するもう一つの命令を実行するまで非処理浮動小数点演算を主データ処理システムに信号で知らせることができない。
【発明の開示】
【発明が解決しようとする課題】
【0009】
不正確な非処理浮動小数点演算と共に命令当たり多数の浮動小数点演算を実施することができる新しい命令セットの導入は非常に困難な問題を生じ、システムは非処理浮動小数点演算を処理できなくなる。システムはどの命令が非処理浮動小数点演算を生じたかを決定することができず、さらに、非処理浮動小数点演算が処理された時に命令ストリーム内のどこで実行を継続すべきかを決定することができない。
【課題を解決するための手段】
【0010】
一側面から見て、本発明は第1の命令セットおよびさらに一つ以上の命令セットからのプログラム命令の制御下でデータを処理する装置を提供し、前記装置は、
前記第1の命令セットのプログラム命令の非処理操作を検出するように動作する非処理操作検出器と、
前記非処理操作を検出すると、前記さらに一つ以上の命令セットの少なくとも一つの命令セットの一つ以上の命令を使用して、前記第1の命令セットの前記命令のエミュレーションをトリガーするように動作する非処理操作ハンドラと、を含んでいる。
【0011】
本発明はシステムが第1の命令セット内の非処理操作を認識はするが、必ずしも状況を修理したり関連する第1の命令セット命令を再実行はしないようにすることにより、前記した問題を著しく低減できることを認識する。替わりに、非処理操作を生じる第1の命令セット(新しい命令セット)の命令がさらに一つ以上の命令セット(例えば、第2の命令セット)の一つ以上の命令によりエミュレートされる。発生した非処理操作のタイプに応じて、非処理操作はエミュレーション時に再発生しないことがある。あるいは、さらに一つ以上の命令セットの命令を使用するエミュレーション時でも非処理操作が生じる場合には、さらに一つ以上の命令セットのこのような非処理操作に対処するための既存の機構を利用して非処理操作を克服することができる。
【0012】
非処理操作ハンドラはデータ処理システムの非処理操作状態をクリヤする命令を配布することができる。あるデータ処理システムはそれが非処理操作状態にあるかどうかを記録する一つ以上のフラグを含んでいる。このフラグは前記第1の命令セットの前記命令のエミュレーションの前に非処理操作ハンドラによりクリヤされる必要のあることがある。フラグがクリヤされる必要があるかどうかは非処理操作のタイプおよびその非処理操作タイプに関連づけられるフラグがあるかどうかによって決まる。
【0013】
本技術は多方面に応用できるが、第1の命令セットが可変長命令セットでありさらに一つ以上の命令セットが固定長命令セットであるシステムに特に適している。この組合せでは、固定長命令セットでは不可能な新しいタイプの非処理操作が可変長命令セットでは可能となることがあり、さらに一つ以上の命令セットでこれらの非処理操作に対処するために開発された機構は、可変長第1の命令セット自体に関して生じる場合の非処理操作に容易に対処するようにはされない。
【0014】
本発明が非常に有利である特別な状況は可変長命令のフェッチアボートへの対処である。このような状況では、可変長命令は2命令語に跨ることがあり、どの命令語が非処理操作を生じるかのフェッチングに関してクリヤとならないことがある。それにより、非処理操作に適切に対処することが困難となる。
【0015】
本発明は第1の命令セットの単一命令が多数の浮動小数点演算を発生することがある、あるいは非処理浮動小数点演算のシグナリングが不正確である浮動小数点システムまたはサブシステムを含むシステムにも特によく適している。
【0016】
本技術が非常に有利である特別な状況は、第1の命令セットの単一命令が非処理浮動小数点演算の不正確なシグナリングと共に多数の浮動小数点演算を発生することがあるシステムである。このような状況では、システムは第1の命令セットのどの命令が非処理浮動小数点演算を生じたかを確認できないことがある。
【0017】
本技術は、さらに一つ以上の命令セットの一つ以上の命令を使用して非処理浮動小数点演算がトリガーされた時に実行していた第1の命令セットの命令のエミュレーションをトリガーすることによりこの状況を克服する。非処理浮動小数点演算がトリガーされた時に実行していた第1の命令セットの命令は非処理浮動小数点演算を生じた命令であることもないこともある。非処理浮動小数点演算がトリガーされた時に実行していた第1の命令セットの命令が非処理浮動小数点演算を生じたかどうかに拘らず、非処理浮動小数点演算がトリガーされた時に実行していた第1の命令セットの命令のエミュレーションにより、さらに一つ以上の命令セットのこのような非処理操作に対処するための既存の機構を利用して非処理操作を克服することができる。
【0018】
さらに一つ以上の命令セットの命令を使用する第1の命令セットの命令のエミュレーションの前に、非処理浮動小数点演算ハンドラは、もく存在するならば、非処理浮動小数点演算フラグをクリヤすることが必要となることがある。
【0019】
非処理浮動小数点演算がトリガーされた時に実行していた第1の命令セットの命令が非処理浮動小数点演算を生じた命令である場合には、命令がエミュレートされる時に同じ非処理浮動小数点演算が再発生し、さらに一つ以上の命令セットのこのような非処理操作に対処するための既存の機構が非処理操作を克服するために利用される。
【0020】
データ処理システムが不正確な非処理浮動小数点演算検出を利用するために、非処理浮動小数点演算がトリガーされた時に実行していた第1の命令セットの命令が非処理浮動小数点演算を生じた命令ではない場合には、命令がエミュレートされる時に同じ非処理浮動小数点演算は再発生しない。この場合、データ処理システムは通常非処理浮動小数点演算フラグまたは非処理浮動小数点演算が生じている事実を記録するための等価機構を有する。さらに、データ処理システムは通常非処理浮動小数点演算を生じた浮動小数点演算を記録する。
【0021】
非処理浮動小数点演算が生じている事実を記録するために使用される前記フラグまたは他の機構をクリヤすることにより、通常さらに一つ以上の命令セットのこのような非処理操作に対処するための既存の機構が非処理操作を克服するのに利用される。
【0022】
別のシステムでは、フラグまたは他の機構をテストし、非処理浮動小数点演算が記録されていることを示す場合には、フラグまたは他の機構をクリヤする前にこのような非処理操作に対処するためのさらに一つ以上の命令セットの機構を利用することが明らかに必要となることがある。前記非処理操作に対処するためのさらに一つ以上の命令セットの機構を利用することにより、フラグまたは他の機構も自動的にクリヤされ、非処理浮動小数点演算ハンドラはフラグまたは他の機構を明白にクリヤする必要がない。
【0023】
さらに別のシステムでは、フラグまたは他の機構をテストする必要のないことがある。替わりに、前記非処理操作に対処するためのさらに一つ以上の命令セットの機構を利用すれば十分である。フラグまたは他の機構はシステムが非処理浮動小数点演算ハンドラ内のコードを実行している事実によりセットされることが既に知られているためにこれで十分であり、あるいは、前記機構の利用はその一体部として前記フラグまたは他の機構のテストおよび恐らくはそれに続くクリヤを伴うことがある。
【0024】
データ処理システム毎に変動することがある非処理浮動小数点ハンドラ内で利用される正確な技術に拘らず、非処理浮動小数点演算がトリガーされた時に実行していた第1の命令セットの命令が非処理浮動小数点演算を生じた命令ではなかった場合には、非処理浮動小数点演算をトリガーした第1の命令セットの命令のエミュレーションの前に非処理浮動小数点演算が分解される。この場合、第1の命令セットの命令のエミュレーションは非処理操作を生じることも生じないこともある。しかしながら、それが非処理演算を生じるかどうかは判らず、非処理浮動小数点演算が繰返しトリガーされ非処理浮動小数点演算ハンドラが繰返し命令を再実行する無限ループを生じることがあるため、単純に実行を再開することはできない。したがって、第1の命令セットの命令はエミュレートされ次の命令で実行を再開しなければならない。
【0025】
本技術は、さらに一つ以上の命令セットがよく開発されたアボートハンドラを有する傾向があるプロセッサコアのネイティブ命令セットであり、第1の命令セットが後日サポートを加えたいことがあるタイプの解釈された命令セットである状況にも特によく適している。このような可変長の解釈された第1の命令セットの特定の例はJava(R)バイトコード命令である。
【0026】
もう一つの側面から見て、本発明は第1の命令セットおよびさらに一つ以上の命令セットからのプログラム命令の制御下でデータを処理する方法を提供し、前記方法は、
前記第1の命令セットのプログラム命令の非処理操作を検出するステップと、
前記非処理操作を検出したら、前記さらに一つ以上の命令セットの中の少なくとも一つの命令セットの一つ以上の命令を使用して前記第1の命令セットの前記命令のエミュレーションをトリガーするステップと、を含んでいる。
【0027】
さらにもう一つの側面から見て、本発明は第1の命令セットおよびさらに一つ以上の命令セットからのプログラム命令の制御下でデータを処理するデータ処理装置を制御するコンピュータプログラムプロダクトを提供し、前記コンピュータプログラムプロダクトは、
非処理操作を検出したら、前記さらに一つ以上の命令セットの中の少なくとも一つの命令セットの一つ以上の命令を使用して前記非処理操作を生じた命令セットの前記命令のエミュレーションをトリガーするように動作する非処理操作ハンドラを含んでいる。
【0028】
本発明は装置およびその動作方法によりそれ自体を表現するだけでなく、非処理操作ハンドラとして働くコンピュータサポートコードの形でそれ自体を表現する。このサポートコードは埋込処理システム内にファームウェアとして埋め込まれた独立した記録可能媒体または他の方法で配布することができる。
【実施例】
【0029】
次に、本発明の実施例を単なる例として添付図について説明する。図1はARMプロセッサ等のプロセッサコア4、およびバイトコード変換ハードウェア6(Jazelle(R)とも呼ばれる)を内蔵するデータ処理システム2を示す。プロセッサコア4はレジスタバンク8、命令デコーダ10およびレジスタバンク8のレジスタ内に格納されたデータ値にさまざまなデータ処理操作を実施するデータパス12を含んでいる。バイトコード変換ハードウェア6が現在イネーブルされるかディセーブルされるかを制御するフラグ20を含むレジスタ18が設けられる。さらに、バイトコード変換ハードウェアが現在アクティブであるかイナクティブであるかを示すフラグ21を含むレジスタ19が設けられる。すなわち、フラグ21はデータ処理システムが現在Javaバイトコードを実行するかARM命令を実行するかを示す。他の実施例では、レジスタ18および19は両方のフラグ20および21を含む単一レジスタでありうることが理解される。
【0030】
動作において、Javaバイトコードが実行されバイトコード変換ハードウェア6がアクティブであれば、バイトコード変換ハードウェア6によりJavaバイトコードが受信されて対応するARM命令系列(この特定の非限定実施例において)、または少なくともARM命令を表わすプロセッサコア制御信号を発生するように働き、それらは次にプロセッサコア4に通される。したがって、バイトコード変換ハードウェア6は単純なバイトコードをプロセッサコア4が実行できる対応するARM命令系列へマッピングすることができる。バイトコード変換ハードウェアがイナクティブであれば、それはバイパスされ正規のARM命令をARM命令デコーダ10を供給してプロセッサコア4をそのネイティブ命令セットに従って制御することができる。全体をとおして、ARM命令系列はThumb命令および/または異なる命令セットからの混合命令とすることができ、このような代替策は考案され包含されることが理解される。
【0031】
バイトコード変換ハードウェア6は遭遇する可能なJavaバイトコードのサブセットに対してハードウェア変換サポートしか提供できないことが理解される。あるJavaバイトコードはこれらをハードウェアで対応するARM命令操作に試行およびマッピングするのが効率的ではない広範な抽象的処理を必要とすることがある。したがって、バイトコード変換ハードウェア6がこのような非ハードウェアサポートバイトコードに遭遇する時は、ARMネイティブ命令内に書き込まれたソフトウェア命令インタプリタをトリガしてその非ハードウェアサポートJavaバイトコードにより指定された処理を実施する。
【0032】
ソフトウェア命令インタプリタは解釈することができる全ての可能なJavaバイトコードに対するソフトウェアサポートを提供する。バイトコード変換ハードウェア6が存在してイネーブルされると、非ハードウェアサポートJavaバイトコードだけが通常ソフトウェア命令インタプリタ内の関連するコードフラグメントに参照される。しかしながら、バイトコード変換ハードウェア6が提供されないまたはディセーブルされる(デバギング中等)場合には、全てのJavaバイトコードがソフトウェア命令インタプリタに参照される。
【0033】
図2はソフトウェア命令インタプリタのアクションを示す略図である。Javaバイトコードのストリーム22はJavaプログラムを表わす。これらのJavaバイトコードにはオペランドを点在させることができる。したがって、所与のJavaバイトコードの実行に続いて、実行される次のJavaバイトコードはすぐ次のバイト位置に現れたり、介在オペランドバイトが存在する場合には数バイト後の位置に現れることができる。
【0034】
図2に示すように、バイトコード変換ハードウェア6によりサポートされないJavaバイトコードBC4に遭遇する。これはバイトコード変換ハードウェア6内で例外をトリガして、非ハードウェアサポートバイトコードBC4により指定された処理を実施するコードフラグメント26へのポインターP#4を読み出すインデクスとしてバイトコード値BC4を使用してポインターのテーブル24内でルックアップを実施させる。ポインターのテーブルのベースアドレス値もレジスタ内に格納することができる。次に、選択されたコードフラグメントに非サポートバイトコードBC4をポイントするR14が入力される。
【0035】
図からお判りのように、256の可能なバイトコード値があるため、ポインターのテーブル24は256のポインターを含んでいる。同様に、可能な全てのJavaバイトコードにより指定された処理を実施するために256までのARMネイティブ命令コードフラグメントが提供される。(2つのバイトコードが同じコードフラグメントを使用できる場合は256よりも少ないことがある)。バイトコード変換ハードウェア6は、典型的に、処理速度を高めるために多くの単純なJavaバイトコードに対するハードウェアサポートを提供し、後述するように、デバッグ中やプリフェッチアボート等の他の状況において強制される場合を除き、ソフトウェア命令インタプリタ内の対応するコードフラグメントは決して使用されない。しかしながら、これらは典型的により単純かつ短いコードフラグメントであるため、それらを提供することにより被る追加メモリオーバヘッドは比較的小さい。さらに、この小さな追加メモリオーバヘッドはソフトウェア命令インタプリタの包括的性質およびバイトコード変換ハードウェアが存在しないまたはディセーブルされる状況において可能な全てのJavaバイトコードに対処するその能力により十二分に補償される。
【0036】
図2の各コードフラグメント26は系列終端命令BXJにより終端されることが判る。図3に示すように、この系列終端命令BXJのアクションはデータ処理システム2の状態に応じて変動する。図3はソフトウェア命令インタプリタ内のコードフラグメント26により実施される処理を非常に略形式で示すフロー図である。ステップ28において、解釈されるJavaバイトコードにより指定された操作が実施される。ステップ30において、実行される次のJavaバイトコードがバイトコードストリーム22から読み出され、この次のJavaバイトコードに対応するJavaバイトコードストリーム22内のバイトコードポインターがレジスタバンク8のレジスタ、すなわち、R14内に格納される。したがって、図2のJavaバイトコードBC4に対しては、次のJavaバイトコードはBC5となりレジスタR14にはJavaバイトコードはBC5のメモリ位置へのポインターがロードされる。
【0037】
ステップ32において、次のJavaバイトコードBC5に対応するポインターのテーブル24内のポインターがポインターのテーブル24から読み出されレジスタバンク8のレジスタ、すなわち、レジスタR12内に格納される。
【0038】
図3は別々に逐次実施されるステップ28,30および32を示しているのが判る。しかしながら、公知のプログラミング技術に従って、ステップ30および32の処理はステップ28の処理内に簡便にインターリーブしてステップ28の処理内で浪費される処理機会(サイクル)を利用することができる。したがって、ステップ30および32の処理には比較的少ない実行速度オーバヘッドを与えることができる。
【0039】
ステップ34はオペランドとして指定されたレジスタR14により系列終端命令BXJを実行する。
【0040】
ステップ34においてBXJ命令を実行する前に、レジスタR14内に格納されるJavaバイトコードストリーム22内の次のJavaバイトコードへのポインターおよびレジスタR12内に格納される次のJavaバイトコードに対応するコードフラグメントへのポインターによりシステムの状態が設定されている。特定のレジスタの選択は変動することがあり、系列終端命令へのオペランドとしてどれも指定されないか、一方または両方が指定され、あるいはアーキテクチュアにより予め定められ規定される。
【0041】
ステップ28,30,32および34はソフトウェアステップが支配的である。図3のステップ34に続くステップはハードウェアステップが支配的であり別々の識別可能なプログラム命令無しで行われる。ステップ36において、ハードウェアはバイトコード変換ハードウェア6がアクティブであるかどうかを検出する。それはバイトコード変換ハードウェア6の存在およびイネーブルメントに対するレジスタフラグ値を読み出してこれを行う。アクティブなバイトコード変換ハードウェア6の存在を決定するための他の機構も可能である。
【0042】
バイトコード変換ハードウェア6が存在しイネーブルされておれば、処理はステップ38に進み、そこで制御はバイトコード変換ハードウェア6がその次のバイトコードとして実行を試みなければならないバイトコードストリーム22内のバイトコードへのバイトコードポインターを指定するレジスタR14の内容と共にバイトコード変換ハードウェア6に渡される。次に、例示されたコードフラグメント26のアクションが終止する。
【0043】
あるいは、ステップ36においてバイトコード変換ハードウェア6が無いまたはバイトコード変換ハードウェアがディセーブルされると決定されれば、処理はステップ40に進みそこでネイティブARM命令コード内の飛越しがなされて、レジスタR124内に格納されたアドレスによりポイントされるソフトウェア命令インタプリタ内のコードフラグメントの実行を開始する。したがって、次のコードフラグメントの迅速な実行が開始され処理速度が有利になる。
【0044】
図4は特定のコードフラグメントをより詳細に示す。この特定の例は整数加算Javaバイトコードであり、そのニューモニックはiaddである。
【0045】
第1のARMネイティブ命令は1だけ増分されたレジスタR14内のバイトコードポインターを使用して次のバイトコード値を読み出す(整数加算命令は後続するいかなるバイトコードオペランドも持たず、次のバイトコードは現在のバイトコードにすぐ続く)。レジスタR14内のバイトコードポインターも増分された値により更新される。
【0046】
第2および第3の命令は加算される2つの整数オペランド値をスタックから検索するように働く。
【0047】
第4の命令はレジスタR0上でインターロックするレジスタにより浪費される処理サイクルを利用して、レジスタR4内に格納された次のバイトコードに対するコードフラグメントのアドレス値を検索しこのアドレスをレジスタR12内に格納する。ベースポインターをポインターのテーブル24の始めに格納するのにレジスタRexcが使用される。
【0048】
第5の命令はJavaバイトコードにより指定された整数加算を実施する。
【0049】
第6の命令はJavaバイトコードの結果をスタックに格納し戻す。
【0050】
最後の命令はオペランドR12により指定された系列終端命令BJXである。レジスタR12は、ソフトウェア解釈が必要であれば、次のJavaバイトコードをソフトウェア解釈するのに必要なARMコードフラグメントのアドレスを格納する。BXJ命令の実行はイネーブルされたバイトコード変換ハードウェア6が存在するかどうかを決定する。存在すれば、制御は次のバイトコードアドレスを指定するレジスタR14内に格納されたオペランドと共にこのバイトコード変換ハードウェア6に渡される。アクティブなバイトコード変換ハードウェア6が存在しなければ、レジスタR12内のアドレス値によりポイントされる次のバイトコードに対するコードフラグメントの実行が開始される。
【0051】
図5はバイトコード変換ハードウェア6が設けられていないことを除けば図1のそれと類似しているデータ処理システム42を略示している。このシステムでは、フラグ21は常にARM命令が実行されていることを示し、BXJ命令によりJavaバイトコード実行に入る試みは常にあたかもバイトコード変換ハードウェア6がディセーブルされたように処置され、フラグ20は無視される。
【0052】
図6はJavaバイトコードの実行においてシステム42により実施される処理のフロー図を示す。系列終端命令BXJが実施される時はハードウェアバイトコードサポートの可能性は決して無く、したがって、処理は常に次のJavaバイトコードに対するコードフラグメントであるとしてR12によりポイントされるコードフラグメントを実行する飛越しにより継続することを除けば、同じソフトウェアインタプリタコードが使用される点においてこれは図3の処理に類似している。
【0053】
この場合、ソフトウェア命令インタプリタはARMネイティブ命令として提供されることが理解される。ソフトウェア命令インタプリタ(および他のサポートコード)はそれだけで独立したコンピュータプログラムプロダクトとして提供することができる。このコンピュータプログラムプロダクトはフロッピー(R)ディスクやCD等の記録媒体として配布したり、ネットワークリンクを介してダイナミックにダウンロードすることができる。本発明が実際的によく適する埋込処理応用の状況では、ソフトウェア命令インタプリタはリードオンリーメモリ内のファームウェアまたは埋込システム内の他の非揮発性プログラム記憶装置として提供することができる。
【0054】
図7はJavaバイトコードとそれらが指定する処理操作間の関係を示す。図7から判るように、8ビットJavaバイトコードは256の異なる可能なバイトコード値を与える。これらのJavaバイトコードの最初の203はJava標準内に指定された固定バインディング、前記したiadd等の対応する処理操作を受ける。最後の2つのJavaバイトコード、すなわち、254および255はインプリメンテーション定義されるものとしてJava仮想マシン仕様に記述されている。したがって、Javaインプリメンテーションはこれらのバイトコードに固定バインディングを自由に割り当てることができる。あるいは、Javaインプリメンテーションはプログラマブルバインディングを有するものとしてこれらの処置を選択することができる。Jazelleはこれらのバイトコードに対する固定バインディングを指定する。バイトコード値203および253の間で、それらも含めて、プログラマブルバインディングはユーザが所望するように指定することができる。これらは、典型的に、実行時間中に分解されるクイックフォームバイトコードのような、バイトコードおよび処理操作間の媒体バインディングを提供するのに使用される(The Java Virtual Machine Specification,著者Tim LindholmおよびFrank Yellin,出版者Addison Wesley,ISBN 0−201−63452−X参照)。
【0055】
図7から、ハードウェア加速解釈技術は固定バインディングに対処するのによく適しているが、これらの技術はプログラマブルバインディングに対処するのにあまり適さないことが理解される。全てのプログラマブルバインディングを、対応するコードフラグメントにより表わされる関連するバイトコードの解釈等の、ソフトウェア解釈技術を使用して処置することができるが、場合によっては性能臨界バイトコードとなることがあるものに対しては遅い。
【0056】
図8はプログラマブル変換テーブルの一形式を示す。このプログラマブル変換テーブル100はコンテントアドレサブルメモリの形状である。変換されるバイトコードがCAMルックアップアレイ102に入力される。このアレイ102が一致するバイトコードエントリを含む場合には、出力される値を指定する対応する操作を生じるヒットが発生される、すなわち、
一致するバイトコードエントリがCAMテーブル内にあれば、ハードウェアは操作指定コードを使用してハードウェア内で実施される操作を決定し、その操作を実施して次のバイトコードに移り、
一致するバイトコードエントリがCAMテーブル内になければ、バイトコードは非ハードウェアサポートとして処置されそのコードフラグメントが呼び出される。
【0057】
この例では、操作指定値は4ビット値でありヒットを生じるCAMエントリはバイトコードbc6に対応する。図7からお判りのように、このようなプログラム変換が行われる全てのバイトコードが“1”としての最上位2ビットを有し、したがって、バイトコードの最下位6ビットしかアレイ102に入力する必要がない。
【0058】
本例のプログラマブル変換テーブル100は8つのエントリを有する。存在するエントリ数はこのタスク専用としたいハードウェアリソース量に応じて変動することがある。ある例では4つのエントリしか提供されないことがあり、別の例では10エントリが適切なことがある。また、可能な各プログラマブルバインディングバイトコード毎にエントリを提供することもできる。
【0059】
利用可能なプログラマブルマッピングリソースが最初に最もクリティカルな変換で占められると、よりクリティカルではない変換がソフトウェア解釈されることがある。テーブルがオーバフローするとソフトウェアインタプリタにより必要な変換が捕捉され実施されるため、プログラマブル変換テーブルと組み合わせてソフトウェアインタプリタを提供することにより、どれだけ多くのテーブルエントリが利用可能かを知ることなくシステムの構成およびテーブルのプログラミングを行うことができる。
【0060】
図9はプログラマブル変換テーブルの第2の例を示す。この例では、変換テーブルはランダムアクセスメモリの形で提供され、被変換バイトコードはデコーダ106に入力されそれはバイトコードを各々が操作指定コードを表わす4ビット語のRAMアレイ108へのアドレスとして処理する。ここでは、操作指定コードはバイトコードに対して常に見つかる。その結果、このタイプのテーブルは一つの追加操作指定コードを使用し、それは“このバイトコードに対するコードフラグメントを呼び出す”を指定する。
【0061】
図10は図8の例の形状を有するプログラマブルマッピングハードウェアインタプリタの初期化および構成を示す略フロー図である。実際上、このフロー図に示されたアクションの異なる部分はソフトウェア初期化命令およびこれらの命令に応答するハードウェアによりそれぞれ実施される。
【0062】
ステップ110において、存在する全てのテーブルエントリをクリヤしてテーブル内のトップエントリへのポインターを設定するように働くテーブル初期化命令が実行される。続いて、初期化コードを実行しコプロセッサレジスタロード等のプログラム命令を使用して変換テーブル内にマッピングをロードすることができる。これらのテーブルローディング命令の異なる形式は特定の状況および環境に応じて変動することができる。プログラマブルマッピングハードウェアインタプリタシステムはJavaバイトコード等のプログラム命令値およびステップ112においてこれに関連づけられる操作値を受信することによりこれらの命令に応答する。ステップ114において、非サポート操作トラップハードウェアはプログラムされる操作値がそのプログラマブルマッピングハードウェアインタプリタによりサポートされるものであることをチェックする。異なるプログラマブルマッピングハードウェアインタプリタは異なる操作値セットをサポートすることができ、そのためそれ自体の特定のトラップハードウェアを提供することができる。例えば、特定のシステムが操作値0,1,2,3,4,5,6,7,8,10をサポートするが9はサポートしないことを知っている場合には、トラップハードウェアは比較的単純とすることができる。ステップ114において、ハードウェア比較器は操作値が9の値に等しいかを比較して9が検出されたら処理をステップ116に向けることによりプログラミングを拒否することができる。
【0063】
操作値がサポートされることをステップ114が示すものと仮定すると、ステップ118は既にプログラマブルマッピングテーブルの終りに達しているかどうかをチェックして決定する。プログラマブルマッピングテーブルが既に一杯であれば、新しいマッピングが追加されることなく処理は再びステップ116に進む。ハードウェア内にステップ118を提供することは、ハードウェアが単にオーバフローするエントリを拒否するだけでどれだけ多くのエントリを利用可能かの知識なしに、サポートコードがプログラマブルマッピングテーブルのプログラミングを試みられることを意味する。したがって、プログラマは最もクリティカルなマッピングをテーブルプログラミングの初めに配置してこれらが利用可能なスロットを占めることを保証しなければならない。サポートコードがどれだけ多くのプログラマブルスロットを利用可能であるかを知る必要性が回避されることは、単一セットのサポートコードが多数のプラットフォームで動作できることを意味する。
【0064】
テーブルが空のエントリを有するものと仮定すると、ステップ120においてそのエントリに新しいマッピングが書き込まれステップ122においてテーブルポインターが進められる。
【0065】
ステップ166において、システムはプログラマブルマッピングテーブル内にプログラミングされるさらに多くのプログラム命令値をテストする。ステップ166は典型的にサポートコードがシステムの初期化中により多くのマッピングをプログラムしようとするソフトウェアステップである。
【0066】
図9に示すようにRAMテーブルを初期化する場合には、下記の修正を条件に図10に関して前記したプロセスに従うことができる。
ステップ110において、各エントリがいかなるバイトコードにも一致しないように図8のアレイ102を設定するのではなく、図9のアレイ108内の全てのテーブルを“このバイトコードに対するバイトコードフラグメントを呼び出す”に設定することによりテーブルがクリヤされる、
ステップ110において、初期化される変換テーブルポインターがない、
変換テーブルポインターがないため、ステップ118は存在しない、
ステップ120は“プログラム命令値により示されるテーブルに操作値を書き込む”、
変換テーブルポインターがないため、ステップ122は存在しない。
【0067】
図11はJavaバイトコード解釈に使用することができる処理パイプラインの一部を示す。処理パイプライン124は変換ステージ126およびJavaコードステージ128を含んでいる。後続ステージ130は特定のインプリメンテーションに応じて多様な異なる形式をとることができる。
【0068】
Javaバイトコードストリームからの語がスイングバァッファ132の2つの半部に交互にロードされる。通常、マルチプレクサ133はカレントバイトコードおよびそのオペランドをスイングバァッファ132から選択し、マルチプレクサ137を介してそれをラッチ134へ送る。パイプラインがフラッシュされているかまたは他の理由でスイングバァッファ132が空であれば、マルチプレクサ135はJavaバイトコードストリームの着信語から直接正しいバイトコードを選択してラッチ134に送る。
【0069】
バイトコードに対するデコードの最初のサイクルは、ラッチ134内のバイトコード上に作用する、第1サイクルデコーダ146により行われる。ハードウェアサポートバイトコードがオペランドを有するケースを考慮するために、さらにマルチプレクサがスイングバァッファ132からオペランドを選択して第1サイクルデコーダ146に送る。これらのマルチプレクサは図示されておらず、マルチプレクサ133に類似している。典型的に、第1サイクルデコーダ146はバイトコード入力に対するよりもオペランド入力に対するタイミング要求条件の方がより緩和されており、そのためマルチプレクサ135および137およびラッチ134により与えられるようなバイパス経路はオペランドには必要ない。
【0070】
スイングバァッファ132がラッチ134内のバイトコードに対して不十分なオペランドバイトを含む場合には、十分なオペランドバイトが得られるまで第1サイクルデコーダ146は停止する。
【0071】
第1サイクルデコーダ146の出力はマルチプレクサ142を介して後続パイプラインステージ130に通されるARM命令(または、ARM命令を表わすプロセッサ制御信号セット)である。第2の出力はマルチプレクサ139を介してラッチ138に書き込まれる操作指定コードである。操作指定コードはそれが単サイクルバイトコードであるかを指定するビット140を含んでいる。
【0072】
次のサイクルで、後続バイトコードが第1サイクルデコーダ146により前記したようにデコードされる。ビット140が単サイクルバイトコードを示す場合には、そのバイトコードはデコードされて後続パイプラインステージ130を前記したように制御する。
【0073】
ビット140がマルチサイクルバイトコードを示す場合には、第1サイクルデコーダ146は停止されマルチサイクルすなわち変換デコーダ144がラッチ138内の操作指定コードをデコードしてARM命令(または、ARM命令を表わすプロセッサ制御信号セット)を作り出し、マルチプレクサ142はそれを第1サイクルデコーダ146の対応する出力ではなく後続パイプラインステージ130に通す。マルチサイクルすなわち変換デコーダはもう一つの操作指定コードも作り出しそれは、やはり、第1サイクルデコーダ146の対応する出力ではなくマルチプレクサ139を介してラッチ138に書き込まれる。このもう一つの操作指定コードもそれがマルチサイクルバイトコードに対して作り出される最後のARM命令であるかを指定するビット140を含んでいる。マルチサイクルすなわち変換デコーダ144は、前記したように、最後のARM命令が作り出されていることをビット140が示すまでさらにARM命令を発生し続け、そこで第1サイクルデコーダ146は終わって後続バイトコードに対する第1のARM命令を作り出す。
【0074】
前記したプロセスはラッチ134内のバイトコードを変換する必要がある場合には3つの方法で修正される。第1に、バイトコードはマルチプレクサ133によりスイングバァッファ132から抽出されかつバイトコード変換器136により変換されて、マルチプレクサ139を介してラッチ138に書き込まれる操作指定コードを作り出す。この操作指定コードはカレントバイトコードに対して最後のARM命令が作り出されていないことを示すように設定されたビット140を有し、そのためマルチプレクサ142およびマルチプレクサ139は変換されたバイトコードの第1サイクルで第1サイクルデコーダ146の代わりにマルチサイクルすなわち変換デコーダ144の出力を選択する。
【0075】
第2に、マルチサイクルすなわち変換デコーダ144は、変換を必要としないバイトコードに対するように第1サイクルの後でだけ発生するのではなく、後続パイプラインステージ130に通される全てのARM命令およびラッチ138に書き戻される対応するさらに多くの操作指定コードを発生する。
【0076】
第3に、バイトコードがマルチプレクサ135を介して直接ラッチ134に書き込まれ、そのためスイングバァッファ132内には存在せず前のサイクルでバイトコード変換器136により変換できていなければ、第1サイクルデコーダ146は再開して1サイクル停止すべきことをバイトコード変換器136に信号で知らせる。それにより、第1サイクルデコーダ146が停止を終える時に、ラッチ138は変換されたバイトコードに対して有効な操作指定コードを保持することが保証される。
【0077】
バァッファされた命令は前もって変換され、所望により、パイプラインの残りに流れ込むことができるため、変換パイプラインステージの提供によりプログラマブル変換ステップが必要とする処理はパイプライン内に有効に隠されるすなわち畳み込まれることが図11から判る。
【0078】
図11から、この実施例では、固定マッピングハードウェアインタプリタは主として第1サイクルデコーダ146および第1サイクルデコーダ146により第1サイクルデコーディングされているマルチサイクルバイトコードをデコードするモードで動作するマルチサイクルすなわち変換デコーダ144により形成されるものと考えられることが判る。この例では、プログラマブルマッピングハードウェアインタプリタはバイトコードトランスレータ136およびプログラマブルバイトコードの変換に続いて動作するマルチサイクルすなわち変換デコーダ144により形成されるものと考えることができる。固定マッピングハードウェアインタプリタおよびプログラマブルマッピングハードウェアインタプリタは広範な異なる方法で提供することができ、抽象的観点からそれらの異なる機能を保持しながら相当な共通ハードウェアを共有することができる。これらの異なる可能性は全て本技術に含まれる。
【0079】
図12は仮想メモリページ境界204を跨ぐ2つの32ビット命令語200,202を示す。これは1kBページ境界とすることができ、他のページサイズも可能である。
【0080】
第1の命令語200は仮想メモリシステム内に適切にマッピングされる仮想メモリページ内にある。第2の命令語202は仮想メモリシステム内にマッピングされたこのステージではない仮想メモリページ内にある。したがって、命令語200内にその第1のバイトを有し命令語202内にその第2のバイトを有する2バイト可変長命令206はその第2バイトに関連づけられたプリフェッチアボートを有する。例えば、命令語を並べた命令しかサポートしない従来のプリフェッチアボート処理機構はこの状況に対処できないことがあり、例えば、実際にアボートに導くその可変長命令語206の第2バイトを含む命令語202に集中するのではなく可変長命令206の第1バイトを含む命令語200のフェッチングを調べて修理しようとすることがある。
【0081】
図13は図12に示すタイプのプリフェッチアボートに対処する機構を含むJavaバイトコードを処理するデータ処理システム内の命令パイプライン208の一部を示す図である。命令バァッファは各々が32ビット命令語を格納する2つの命令語レジスタ210および212を含んでいる。Javaバイトコードは各々が8ビット長であり、ゼロ以上のオペランド値を伴う。一群のマルチプレクサ214がデコードされるカレントJavaバイトコードの第1バイトのアドレスを示すカレントJavaバイトコードポインター位置に応じて命令語レジスタ210および212から適切なバイトを選択するように働く。
【0082】
各命令語レジスタ210および212にはそれぞれ命令アドレスレジスタ216,218およびプリフェッチアボートフラグレジスタ220および222が関連づけられている。これらの関連づけられたレジスタは、それらが関連する命令語のアドレスおよびその命令語がメモリシステムからフェッチされた時にプリフェッチアボートが生じたかどうかをそれぞれ格納する。この情報は典型的にはパイプラインの下流でさらに必要とされるため、命令語自体と共にパイプラインに沿って通される。
【0083】
マルチプレクサ224,226および228により入力バァッファ構成は、所望により、バイパスすることができる。このタイプの操作は前記されている。判り易くするために、命令パイプライン208は前記した命令パイプラインの全ての特徴は示していないことが理解される。同様に、前記した命令パイプラインは命令パイプライン208の全ての特徴は示していない。実際上、システムには2つの図解命令パイプラインに示された特徴の組合せを提供することができる。
【0084】
命令パイプライン208のバイトコードデコーディングステージにおいて、バイトコードデコーダ230は少なくともマルチプレクサ224からのJavaバイトコード、およびマルチプレクサ226および228からの1つまたは2つのオペランドバイトに応答し、パイプライン内のさらに多くのステージに通してデコードされたJavaバイトコードに対応する処理を実施するためのマッピングされた命令または対応する制御信号を発生する。
【0085】
図12に示すタイプのプリフェッチアボートが発生していると、Javaバイトコード自体は有効となるが、それに続くオペランド値は有効ではないことがあり、プリフェッチアボートがリペアされるないかぎり正しい操作は生じない。バイトコード例外発生器232はレジスタ220および222からのプリフェッチアボートフラグだけでなくレジスタ216および218からの命令語アドレスに応答して図12に示すタイプの状況の発生を検出する。バイトコード例外発生器232はこのような状況を検出すると、バイトコードデコーダ230ではなくバイトコード例外発生器自体により発生される命令または制御信号を後続ステージに配布するようマルチプレクサ234に強制する。バイトコード例外発生器232はハードウェアがアボートされるJavaバイトコードを解釈するのを許すのではなくそのJavaバイトコードをエミュレートするARM32ビットコードフラグメントの実行をトリガーすることにより図12のプリフェッチアボート状況の検出に応答する。したがって、プリフェッチアボートされた可変長Java命令206自体は実行されず、32ビットARM命令系列により置換される。命令をエミュレートするのに使用されるARM命令は一つ以上のオペランドバイトをロードする時にデータアボートされるものと思われ、これらのデータアボートはこれらのバイトが元々第2の命令語202の一部としてフェッチされる時にプリフェッチアボートが生じるのと同じ理由で生じ、ARM32ビットコードフラグメントの実行中にさらにプリフェッチおよびデータアボートが生じることもあり得る。これらのアボートは全てARM命令実行中にに生じ、既存のアボート例外ハンドラルーチンにより正しく処理される。
【0086】
このようにして、バイトコードのフェッチング時に生じたプリフェッチアボートは抑制される(すなわち、ARMコアには通されない)。替わりに、ARM命令系列が実行されこれらのARM命令により生じる任意のアボートが既存の機構を使用して処理され、問題のあったバイトコードを跨ぐ。バイトコードをアボートで置換するのに使用されたARM命令のエミュレートを実行した後で、バイトコードの実行を再開することができる。
【0087】
バイトコード自体がプリフェッチアボートを経験する場合には、プリフェッチアボートがマークされたARM命令がARMパイプラインの残りに通される。それはパイプラインの実行ステージに達すると、プリフェッチアボート例外を生じさせそれはARM命令上のプリフェッチアボートを処理する完全に標準的な方法である。
【0088】
バイトコードがプリフェッチアボートを経験せずにその一つ以上のオペランドが経験する場合には、そのバイトコードに対するソフトウェアコードフラグメントが呼び出される。ARMパイプラインの残りに通されてコードフラグメントが呼び出されるようにするいかなるARM命令もプリフェッチアボートでマークされず、パイプラインの実行ステージに達する時に正常に実行する。
【0089】
図12に示すタイプの状況を検出するためにバイトコード例外発生器232により使用されるタイプの論理式図14に示す。“Half1”は現在第1の命令語(図12における200)を保持するのは図13のスイングバァッファのいずれの半部かを示し(図13にこれらのエレメント周りの破線で示すように、ブロック210,216および220は一方の半部を形成し、ブロック212,218,222は他方の半部を示す)、“Half2”はスイングバァッファの他方の半部を示し、それは第2の命令語(図12の202)を保持する。PA(Half1)はブロック220および222のいずれのコンテンツがHalf1内にあるかを意味するものとし、Half2についても同様とする。
【0090】
すると、図12に記述した状況のインジケータはPA(Half1)は偽である、PA(Half2)は真であるとなり、バイトコードプラスそのオペランドが2つのスイングバァッファ半部間の境界を跨ぐ。(そこにマークされたページ境界があるという事実は、単純にそれが通常は2つのPA()値が異なることがあり得るというその要求条件であるためである)。
【0091】
各スイングバァッファ半部が語を格納し、ハードウェアサポートバイトコードが最大2オペランドに制限されるような好ましい設計では、バイトコードプラスそのオペランドが境界を跨ぐかどうかを決定する公式は次のようになり、
((オペランド数)=1)AND(bcaddr[1:0]=11))
OR((オペランド数)=2)AND(bcaddr[1]=1))
ここに、bcaddrはバイトコードのアドレスである。これにより図14に示す論理式を引出すことができる。
【0092】
メモリページ境界の予め定められた距離内で開始する可変長命令等の、プリフェッチアボートを識別するための他の技術も使用することができる。
【0093】
図15はJavaバイトコード解釈と関連づけられたサポートコードの構造を詳細に示す。これは前記した図と同様であるが、ここにはバイトコード例外イベントによりトリガーされるバイトコード例外処理コードフラグメントへのポインターが含まれている。したがって、各Javaバイトコードはその操作エミュレートする関連づけられたARMコードフラグメントを有する。さらに、生じることがある各バイトコード例外はARM例外処理コードの関連部を有する。図解するケースでは、バイトコード例外発生器232による前記したタイプのプリフェッチアボートの検出時にトリガーされるバイトコードプリフェッチアボート処理ルーチン236が提供される。このアボート処理コード236はそのトリガリングを生じる可変長命令の初めにバイトコードを識別するとにより作用し、次に、コードフラグメントの集まりの中のそのバイトコードに対する対応するエミュレーションコードフラグメントを呼び出す。
【0094】
図16はバイトコード例外発生器232および後続処理の操作を略示するフロー図である。ステップ238は図14の式が真であるかどうかを確認するように働く。式が偽であればこのプロセスは終わる。
【0095】
ステップ238が図12に例示したタイプの状況を示しておれば、バイトコード例外発生器232により開始されるバイトコードプリフェッチアボート例外をトリガーするステップ246が実行される。バイトコード例外発生器232は単純にARMコードバイトコードプリフェッチアボートハンドラ236の実行をトリガーすることができる。アボートハンドラ236はステップ248において可変長命令を開始するバイトコードを識別し、次に、ステップ250においてその識別されたバイトコードをエミュレートするARM命令のコードフラグメントの実行をトリガーするように働く。
【0096】
プリフェッチアボートに対処する前記した機構は4つ以下のオペランド(すなわち、合計5バイト以下)がある状況に対してはうまく働き、そうでなければ、バイトコードおよびそのオペランドは第2のバァッファをオーバフローすることがある。実際上、ハードウェア加速機構を提供することが好ましいバイトコードは全て0,1または2オペランドを有し、残りのバイトコードは主としてその複雑さからいずれの場合もソフトウェアで処理される。
【0097】
図17は複数のユーザモードプロセス302,304,306および308を制御するオペレーティングシステム300を示す。オペレーティングシステム300はスーパバイザモードで動作し他のプロセス302,304,306および308はスーパバイザモードで動作するオペレーティングシステム300よりも少ないシステムの構成制御パラメータへのアクセス権を有するユーザモードで動作する。
【0098】
図17に示すように、プロセス302および308はそれぞれ異なるJava仮想マシンに関連する。これらの各Java仮想マシン302,308がバイトコード変換マッピングデータ310,312および構成レジスタデータ314,316により形成されたそれ自体の構成データを有する。実際上、プロセス302,308の両方を実行するのにJava加速ハードウェアの単一セットが提供されるが、これらの異なるプロセスがJava加速ハードウェアを使用しているときは、各々がそれらの関連する構成データ310,312,314,316によりそれが構成されることを要求する。したがって、オペレーティングシステム300がJava加速ハードウェアを使用した前のプロセスとは異なるハードウェアを使用するプロセスに切り替える時は、Java加速ハードウェアは再初期化および再構成しなければならない。オペレーティングシステム300はJava加速ハードウェア自体のこの再初期化および再構成を行わず、Java加速ハードウェアに関連する構成無効インジケータを無効状態に設定することによりそれを行うべきことを示す。
【0099】
図18はネイティブ命令セット(例えば、ARM命令セット)および関連するJava加速ハードウェア322を有するプロセッサコア320を含むデータ処理システム318を略示している。メモリ324はARM命令またはJavaバイトコードの形とすることができるコンピュータプログラムコードを格納する。Javaバイトコードの場合には、これらはJava加速ハードウェア322に通され、それはJavaバイトコードをプロセッサコア320により実行されるARM命令(または、ARM命令に対応する制御信号)のストリームに解釈するように働く。Java加速ハードウェア322はJavaバイトコードを実行したい各Java仮想マシンに対するプログラミングを必要とするバイトコード変換テーブル326を含んでいる。さらに、構成データレジスタ328およびオペレーティングシステム制御レジスタ330がJava加速ハードウェア322内にその構成を制御するために提供される。オペレーティングシステム制御レジスタ330内にはフラグCVの形の構成有効インジケータが含まれており、設定されるとJava加速ハードウェア322の構成が有効であることを示し、設定されなければそれが無効であることを示す。
【0100】
Java加速ハードウェア322はJava仮想バイトコードを実行しようとする時は構成有効インジケータに応答し、それが無効形式であるJava加速ハードウェア322に対する構成データに対応する場合には構成無効例外をトリガーする。構成無効例外ハンドラはプリフェッチアボートハンドラに対して前記したのと同様に提供されるARMコードルーチンとすることができる。ハードウェア機構がJava加速ハードウェア322内に設けられ、それは新しい有効構成データが実際に書き込まれる前に構成例外がトリガーされるため構成データは有効であることを示す形に構成有効インジケータを設定する。構成データが実際に書き込まれる前に構成有効インジケータをこのように設定するのは反直感的に見えるが、この方法には構成データの設定の途中でプロセスがスワップすることにより生じる問題を回避できるという著しい利点がある。次に、構成例外ルーチンは前記したようにバイトコード変換テーブルエントリおよび、所望により、任意他の構成データレジスタ値328を書き込むことにより対応するJava仮想マシンに対する所要構成データを設定する。構成例外コードはJava加速ハードウェア322により任意他のタスクが行われる前に構成データの書込みが完了されることを保証しなければならない。
【0101】
図19はオペレーティングシステム300の動作を略示している。ステップ332において、オペレーティングシステムは待機してプロセススイッチを検出する。プロセススイッチが検出されると、ステップ334は新しいプロセスがJava加速ハードウェア322(前記したように、Jazelleとも呼ばれる)を使用するものかどうかを確認する。Java加速ハードウェア322が使用されない場合には、処理はステップ336に進みそこでJava加速ハードウェア322がディセーブルされた後でステップ339に進んで新しいプロセスに実行が転送される。Java加速ハードウェア322が使用される場合には、処理はステップ338に進みそこで呼び出される新しいプロセスはオペレーティングシステム300により記録されるJava加速ハードウェア322の格納されたカレントオーナと同じであるかどうかが確認される。オーナが変わっていなければ(すなわち、新しいプロセスは実際上Java加速ハードウェア322を使用した最後のプロセスと同じである)、処理はステップ337に進みそこでJava加速ハードウェア322がイネーブルされた後でステップ339に進む。新しいプロセスが格納されたカレントオーナでなければ、処理はステップ340に進みそこで構成有効インジケータはJava加速ハードウェア322の現在構成が有効ではないことを示すように設定される。これはこの構成変化を管理するオペレーティングシステム300の責任限界であり、構成データの実際の更新はそれ自体の例外処理機構で動作するJava加速ハードウェア322自体にタスクとして残される。
【0102】
ステップ340の後で、ステップ342は実行制御の転送がステップ337次ぎにステップ339に通される前に格納されたカレントオーナを新しいプロセスとして更新するように働く。
【0103】
図20はJava加速ハードウェア322により実施される操作を示す。ステップ344において、Java加速ハードウェア322は待機して実行するバイトコードを受信する。バイトコードが受信されると、ハードウェアはステップ346を使用してJava加速ハードウェア322の構成が有効であることを構成有効インジケータが示すことをチェックする。構成が有効であれば、処理はステップ348に進みそこで受信したバイトコードが実行される。
【0104】
構成が無効であれば、処理はステップ350に進みそこでJava加速ハードウェア322はハードウェア機構を使用して構成が有効であることを示す構成有効インジケータを設定する。所望により、これは例外ハンドラ内のプログラム命令により行うこともできる。ステップ352は構成無効例外をトリガーするように働く。構成無効例外ハンドラはコードフラグメントへのポインターのテーブルおよび、この例のように、命令のソフトウェアエミュレーション、プリフェッチアボート(共に前記した)、または構成例外等の関連する各例外を処理する適切なコードフラグメントの組合せとして提供することができる。
【0105】
ステップ354は構成無効例外を構成しJava加速ハードウェア322に必要な構成データを書き込むように働くARMコードを実行するように働く。このARMコードは他の構成レジスタ330だけでなくプログラマブル変換テーブル326をポピュレートするコプロセッサレジスタライト系列の形をとることができる。ステップ354の後で、ステップ356はオリジナルバイトコードの実行を再試行するようにJavaバイトコードプログラム内にジャンプバックする。
【0106】
ステップ354またはステップ358中にプロセススイッチが生じる場合には、構成設定は他のプロセスにより無効とされ構成有効インジケータはオペレーティングシステムによりクリヤされること可能である。図20の手順では、その結果344−346−350−352−354−ループを再び一回りすることになる、すなわち、再構成が初めから再試行される。バイトコードが最後に実際に実行される時に、構成は有効であることが保証される。
【0107】
図21はさらに浮動小数点サブシステムを内蔵する図1に示すようなデータ処理システムを示す。非処理浮動小数点演算が生じる時は、浮動小数点サブシステムは非処理浮動小数点演算を処理する機構をARMコード内に提供する。
【0108】
このようなサブシステムの例は英国、ケンブリッジのARM社からのVFPソフトウェアエミュレータシステムである。VFPソフトウェアエミュレータシステムでは、浮動小数点演算を実施するのに利用可能なハードウェアがないため全ての浮動小数点演算が非処理浮動小数点演算として処理される。したがって、全ての浮動小数点演算がARMコード内のVFPの行動をエミュレートするための提供された機構を使用して処理される。
【0109】
このようなシステムでは、非処理浮動小数点演算は精密である、すなわち、非処理浮動小数点演算の検出ポイントはその発生ポイントと同じである。
【0110】
図22はさらに浮動小数点演算レジスタおよび非処理演算状態フラグを内蔵する図1および21に示すようなデータ処理システムを示す。
【0111】
このようなサブシステムの例は英国、ケンブリッジのARM社からのVFPハードウェアシステムである。VFPハードウェアシステムでは、あるタイプの浮動小数点演算だけが非処理浮動小数点演算として処理され、残りはVFPハードウェアにより処理される。
【0112】
非処理浮動小数点演算の対象となることがある演算のクラスには、下記のものが含まれる。
−ゼロによる割算
−NaNを伴う演算
−無限大を伴う演算
−逆正規化された数を伴う演算
【0113】
このようなシステムでは非処理浮動小数点演算は不正確となることがある、すなわち、非処理浮動小数点演算の検出ポイントは必ずしもその発生ポイントと同じではない。
【0114】
通常はARM命令ストリームの一部を形成するが図1に示すバイトコード変換器が存在する時はARMおよびVFP命令の組合せに変換されているバイトコードの結果となることがあるVFP命令の受諾をVFPコプロセッサが拒否する時に非処理VFP演算が生じる。
【0115】
非処理VFP演算がARM命令ストリームの一部として生じる場合には、非処理VFP演算を処理するARM機構は無定義命令例外を発生して無定義命令ベクトル上にインストールされた無定義命令ハンドラを実行することである。
【0116】
VFPソフトウェアエミュレータシステムの場合には、全てのVFP演算が非処理VFP演算として処理されかつ同じARM機構が適用され、無定義命令例外が発生され無定義命令ハンドラが実行される。
【0117】
非処理VFP演算がARM命令ストリームの一部として生じる場合には、無定義命令ハンドラは命令ストリームを調べることにより非処理VFP演算を生じた命令は実際にVFP命令であって、他の種類の無定義命令ではないことを知ることができ、無定義命令ハンドラは特権モードで実行するため必要なコプロセッサ命令を配布して必要とする任意の内部状態をVFPコプロセッサから抽出しソフトウェア内の必要な命令を完了することができる。無定義命令ハンドラはARM命令ストリーム内で識別された命令およびVFPの内部状態の両方を使用して非処理演算を処理する。
【0118】
多くのVFPインプリメンテーションでは、非処理演算を生じた命令は非処理演算が検出された時に実行していた命令と同じではないことがある。非処理演算はより早期に発せられ、後続ARM命令と並列に実行されたが非処理状態に遭遇した命令により生じていることがある。VFPは続くVFP命令の受諾を拒否し、VFP無定義命令ハンドラを強制的に開始させることによりこれを信号で知らせ、それはVFPに問いあわせて非処理演算のオリジナル原因を見つけることができる。
【0119】
JazelleがVFPサブシステムを含むシステム内に一体化されると、下記の事柄が適用される。
−VFP命令に直接対応する信号セットを使用してコア内に直接対応するVFP命令を発することによりJava浮動小数点命令が変換される。
−非処理演算に遭遇するならばVFPは非処理演算状態を信号で知らせることができる。
−Jazelleは非処理演算信号を遮断してコアに送られるのを防止し、ARM命令ストリーム内のVFP命令が不正確な操作を信号で知らせている場合に生じる無定義命令ハンドラの実行を防止する。替わりに、JazelleVMサポートコードにより処理されるJazelleVFP例外を発生する。
【0120】
このようなJazelleVFP例外に遭遇すると、VMサポートコードはVFP’no−operation’命令、すなわち、FMRXRd,FPSCR命令等のJazelle状態を元のままとする任意のVFP命令を実行しなければならない。これによりVFPハードウェアはサポートコードと同期し、ここでは非処理演算に遭遇したばかりとして設定すべき非処理演算状態と共に浮動小数点演算レジスタにより示された任意のVFP演算の操作が完了する。操作が完了すると、非処理演算状態フラグがクリヤされる。
【0121】
この方法は、その全体が本開示の一部としてここに組み入れられている2000年10月5日出願の同時係属出願英国特許出願第0024402.0に記述されているように、Jazelleにより発せられる命令系列は再開可能である事実を利用する。本技術と共に前記参照に記載された技術を使用することにより、非処理演算を生じたVFP命令を発生させた命令を再開することができる。
【0122】
図23は各Java浮動小数点演算に対してJavaバイトコード変換器により発せられる対応するVFP命令を示す。発せられるVFP命令しか図示されておらず、Javaバイトコード変換器はVFP命令と共に追加ARM命令を発することができる。Jazelleバイトコード変換器は浮動小数点値をロードまたはストアする追加VFPロードおよびストアを発することもできる。
【0123】
図24は’dcmpg’バイトコードが続く’dmul’バイトコードからなるJavaバイトコード系列に対してJazelleバイトコード変換器により発せられる命令に対応する命令または信号系列を示す。例示された系列は二重精度レジスタD0,D1,およびD2が、それぞれ、Java実行スタックの上から3番目、上から2番目および最上エレメントを保持しかつバイトコード系列の整数結果が整数レジスタR0内に置かれると予期される時に(dmul,dcmpg)バイトコード系列が実行される場合に生じる。
【0124】
図25,27,29および30は非処理浮動小数点演算が変換された命令系列内のさまざまなポイントで生じる時の演算系列を示す。図25および29は非処理浮動小数点演算がFMULD命令により生じる時の演算系列を示す。図27および30は非処理浮動小数点演算がFCMPD命令により生じる時の演算系列を示す。図25および27は非処理浮動小数点演算のシグナリングが不正確である時の演算系列を示す。図29および30は非処理浮動小数点演算のシグナリングが正確である時の演算系列を示す。
【0125】
図からお判りのように、可能な4つのイベント系列がある。
1)図25:不正確な非処理演算検出、非処理演算を信号で知らせるJavaバイトコードは非処理演算を生じたものと同じではない。
2)図27:不正確な非処理演算検出、非処理演算を信号で知らせるJavaバイトコードはシステムが不正確な非処理演算検出を使用する事実にも拘らずそれを生じたものと同じである。それは第2のJavaバイトコード’dcmpg’が一つのJavaバイトコードに対して2VFPを発し、その第1により非処理演算が生じ、その第2がそれを信号で知らせるためである。
3)図29:正確な非処理演算検出、非処理演算を信号で知らせるJavaバイトコードはそれを生じたものと同じである。
4)図30:正確な非処理演算検出、非処理演算を信号で知らせるJavaバイトコードはそれを生じたものと同じであるが、’dcmpg’バイトコードを実行した結果発せられた2つのVFP命令のいずれが実際に非処理演算を生じそれを信号で知らせたかが判らない。
【0126】
前記した再開技術と本技術の組合せによりこれらの可能なイベント系列の全てを正確に処理することができる。
【0127】
図26および28は、それぞれ、図25および27に示す演算系列に対応する非処理演算が生じるすぐ後のポイントにおける浮動小数点演算レジスタおよび非処理演算状態フラグの状態を示す。
【0128】
全て2000年10月5日に出願された同時係属出願英国特許出願第0024399.8号、第0024402.0号、第0024404.6号、および第0024396.4号およびやはりJavaバイトコード解釈システムについて記述している2000年11月20日に出願された英国特許出願第0028249.1号および2000年12月7日に出願された米国特許出願第09/731,060号を参照されたい。これら同時係属出願の開示はその全体が本開示の一部としてここに組み入れられている。
【図面の簡単な説明】
【0129】
【図1】バイトコード変換ハードウェアを内蔵するデータ処理システムを示す図である。
【図2】バイトコードのソフトウェア命令解釈を示す略図である。
【図3】シーケンス終端命令で終わるソフトウェア命令インタプリタ内のコードフラグメントの動作を表わす略フロー図である。
【図4】バイトコードの替わりに実行されるコードフラグメントの例を示す図である。
【図5】ハードウェアバイトコード実行サポートを持たないデータ処理システムの例を示す図である。
【図6】図5のシステムで動作する時のソフトウェア命令インタプリタアクションを示すフロー図である。
【図7】Javaバイトコードおよび処理操作間のマッピングを示す図である。
【図8】コンテンツアドレス可能メモリの形のプログラマブル変換テーブルを示す図である。
【図9】ランダムアクセスメモリの形のプログラマブル変換テーブルを示す図である。
【図10】プログラマブル変換テーブルの初期化およびプログラミングを示す略フロー図である。
【図11】Javaバイトコード解釈を実施するシステム内の処理パイプラインの一部を示す略図である。
【図12】2つの命令語および2つの仮想メモリページに跨る可変長命令を示す略図である。
【図13】図12に示すタイプのプリフェッチアボートに対処する機構を含むデータ処理システムパイプラインの一部を示す略図である。
【図14】図12に示すタイプのプリフェッチアボートをどのように検出することができるかを指定する一つの方法の論理式示す図である。
【図15】アボート処理および命令エミュレーションに対するサポートコードの構成を示す略図である。
【図16】可変長バイトコード命令のプリフェッチアボートに対処するために実施される処理を示す略フロー図である。
【図17】オペレーティングシステムおよびそれにより制御されるさまざまなプロセス間の関係を示す図である。
【図18】プロセッサコアおよびJavaアクセラレータを含む処理システムを示す図である。
【図19】Javaアクセラレータの構成の制御におけるオペレーティングシステムの操作を示す略フロー図である。
【図20】Java加速機構の構成制御において使用しているJaca加速機構と共にJava仮想マシンの操作を示す略フロー図である。
【図21】図1のようにバイトコード変換ハードウェアを内蔵し、さらに、浮動小数点サブシステムを内蔵するデータ処理システムを示す図である。
【図22】図1のようにバイトコード変換ハードウェアを内蔵しかつ図2のように浮動小数点サブシステムを内蔵し、さらに、浮動小数点演算レジスタおよび非処理操作状態フラグを内蔵するデータ処理システムを示す図である。
【図23】Java浮動小数点命令に対して発生されたARM浮動小数点命令を示す図である。
【図24】Java‘dmul’および‘dcmpg’命令に対してJava加速ハードウェアにより発生されるARM命令系列を示す図である。
【図25】Java‘dmul’命令に対してJava加速ハードウェアにより発生されたFCMPD命令の実行により非処理浮動小数点演算が生じる‘dcmpg’命令が続く‘dmul’命令の実行時の演算系列であって、図22に対応する不正確な非処理演算検出を使用するシステムに対する演算系列を示す図である。
【図26】図25のFMULD命令を実行した後の浮動小数点演算レジスタおよび非処理操作状態フラグの状態を示す図である。
【図27】Java‘dcmpg’命令に対してJava加速ハードウェアにより発生されたFCMPD命令の実行により非処理浮動小数点演算が生じる‘dcmpg’命令が続く‘dmul’命令の実行時の演算系列であって、図22に対応する不正確な非処理演算検出を使用するシステムに対する演算系列を示す図である。
【図28】図27のFCMPD命令の実行後の浮動小数点レジスタおよび非処理演算状態フラグの状態を示す図である。
【図29】Java‘dmul’命令に対してJava加速ハードウェアにより発生されたFMULD命令の実行により非処理浮動小数点演算が生じる‘dcmpg’命令が続く‘dmul’命令実行時の演算系列であって、図21に対応する正確な非処理演算検出を使用するシステムに対する演算系列を示す図である。
【図30】Java‘dcmpg’命令に対してJava加速ハードウェアにより発生されたFCMPD命令の実行により非処理浮動小数点演算が生じる‘dcmpg’命令が続く‘dmul’命令実行時の演算系列であって、図21に対応する正確な非処理演算検出を使用するシステムに対する演算系列を示す図である。

Claims (60)

  1. 第1の命令セットおよびさらに一つ以上の命令セットからのプログラム命令の制御下でデータを処理する装置であって、前記装置は、
    前記第1の命令セットのプログラム命令の非処理操作を検出するように動作する非処理操作検出器と、
    前記非処理操作が検出されると動作して前記さらに一つ以上の命令セットの少なくとも一つの一つ以上の命令を使用して前記第1の命令セットの前記命令のエミュレーションをトリガーする非処理操作ハンドラと、
    を含む装置。
  2. 請求項1に記載の装置であって、前記非処理操作検出器は命令語の非処理フェッチングを検出するように動作するフェッチアボート検出器である装置。
  3. 請求項1に記載の装置であって、前記非処理操作検出器は非処理浮動小数点演算を検出するように動作する非処理浮動小数点演算検出器である装置。
  4. 請求項1,2または3のいずれか一項に記載の装置であって、前記第1の命令セットは可変長命令セットであり前記さらに一つ以上の命令セットの少なくとも一つは固定長命令セットである装置。
  5. 請求項1,2または3のいずれか一項に記載の装置であって、前記第1の命令セットは可変長命令セットであり前記さらに一つ以上の命令セットの全てが固定長命令セットである装置。
  6. 請求項4および5のいずれか一項に記載の装置であって、
    実行されるプログラム命令、一つ以上の命令語に跨る前記可変長命令セットからの少なくともいくつかのプログラム命令を含む固定長命令語をフェッチするように動作する命令フェッチャ(fetcher)を含む装置。
  7. 請求項6に記載の装置であって、前記非処理操作検出器は可変長命令の一部を含む第2以降の命令語である命令語の非処理フェッチングの検出時に動作して前記可変長命令をアボートしかつ一つ以上の固定長命令を使用して前記可変長命令のエミュレーションをトリガーするフェッチアボート検出器である装置。
  8. 請求項6に記載の装置であって、前記非処理操作検出器は前記可変長命令がメモリページ境界に交差することが決定される命令語の非処理フェッチングの検出時に動作して前記可変長命令をアボートしかつ一つ以上の固定長命令を使用して前記可変長命令のエミュレーションをトリガーするフェッチアボート検出器である装置。
  9. 請求項6に記載の装置であって、前記非処理操作検出器は前記可変長命令がメモリページ境界の終りの固定数バイト内で開始することが決定され前記固定数バイトは第1の命令セットからのプログラム命令の制御下で前記データ処理装置により処理される最長可変長命令よりも小さい命令語の非処理フェッチングの検出時に動作して前記可変長命令をアボートしかつ一つ以上の固定長命令を使用して前記可変長命令のエミュレーションをトリガーするフェッチアボート検出器である装置。
  10. 請求項3に記載の装置であって、前記第1の命令セットの単一命令の実行中に複数の浮動小数点演算を実行することができ、前記複数の浮動小数点演算のいずれかにより潜在的に非処理浮動小数点演算が生じ前記非処理操作検出器は前記複数の浮動小数点演算のいずれかにより発生される非処理浮動小数点演算を検出するように動作する非処理浮動小数点演算検出器である装置。
  11. 請求項3および10のいずれか一項に記載の装置であって、前記非処理操作検出器は非処理浮動小数点演算を生じる前記第1の命令セットの命令の実行時に即座に非処理浮動小数点演算を検出はせずに前記第1の命令セットの後続命令の実行時に非処理浮動小数点演算を検出し、前記非処理操作検出器は前記後続命令をアボートしかつ一つ以上の固定長命令を使用して前記後続命令のエミュレーションをトリガーする装置。
  12. 請求項11に記載の装置であって、前記非処理操作検出器は前記後続命令も浮動小数点演算を生じる時だけ非処理浮動小数点演算を検出する装置。
  13. 請求項11および12のいずれか一項に記載の装置であって、さらに、非処理浮動小数点演算が発生していることを前記非処理操作ハンドラが決定できるようにする発生インジケータを含む装置。
  14. 請求項11から13のいずれか一項に記載の装置であって、さらに、非処理浮動小数点演算を生じた浮動小数点演算を決定できるようにする操作インジケータを含む装置。
  15. 請求項11から14のいずれか一項に記載の装置であって、前記非処理操作ハンドラは前記第1の命令セットの前記命令のエミュレーションの前に前記非処理操作を処理する既存の機構を利用する装置。
  16. 請求項15に記載の装置であって、前記非処理操作ハンドラは固定長浮動小数点命令を実行し、前記固定長浮動小数点命令の実行は前記非処理操作を処理するのに既存の機構を利用する効果を有する装置。
  17. 前記いずれか一項に記載の装置であって、前記第2の命令セットは前記プログラム命令を実行するプロセッサコアのネイティブ命令セットである装置。
  18. 前記いずれか一項に記載の装置であって、前記第1の命令セットは解釈された命令セットである装置。
  19. 前記いずれか一項に記載の装置であって、前記第1の命令セットはJava(R)バイトコード命令を含む装置。
  20. 前記いずれか一項に記載の装置であって、さらに、前記非処理操作後に実行を再開する再開論理を含み、
    前記装置は前記複数の命令セットの少なくとも一つの命令を表わす前記複数の命令セットの中の一つの命令セットの命令に対応する一つ以上の変換器出力信号セットの系列を発生するように動作し、各系列は前記系列内の最終操作が実行されるまで入力変数は変化させないようにされており、
    前記複数の命令セットの前記少なくとも一つの命令を表わす操作系列の実行中に非処理操作が発生した後で、
    (i)前記非処理操作が前記系列内の最終操作の実行を開始する前に生じたものであれば、前記再開論理は前記系列内の第1の操作において実行を再開し、
    (ii)前記非処理操作が前記系列内の最終操作の実行を開始した後で生じたものであれば、前記再開論理は前記系列に続く次の命令において実行を再開する装置。
  21. 第1の命令セットおよびさらに一つ以上の命令セットからのプログラム命令の制御下でデータを処理する方法であって、前記方法は、
    前記第1の命令セットのプログラム命令の非処理操作を検出するステップと、
    前記非処理操作が検出されると前記さらに一つ以上の命令セットの少なくとも一つの命令セットの一つ以上の命令を使用して前記第1の命令セットの前記命令のエミュレーションをトリガーするステップと、
    を含む方法。
  22. 請求項21に記載の方法であって、前記検出ステップは命令語の非処理フェッチングを検出する方法。
  23. 請求項21に記載の方法であって、前記検出ステップは非処理浮動小数点演算を検出する方法。
  24. 請求項21,22または23のいずれか一項に記載の方法であって、前記第1の命令セットは可変長命令セットであり前記さらに一つ以上の命令セットの少なくとも一つは固定長命令セットである方法。
  25. 請求項21,22または23のいずれか一項に記載の方法であって、前記第1の命令セットは可変長命令セットであり前記さらに一つ以上の命令セットの全てが固定長命令セットである方法。
  26. 請求項24および25のいずれか一項に記載の方法であって、
    実行されるプログラム命令を含む固定長命令語をフェッチするステップを含み、前記可変長命令セットからの少なくともいくつかのプログラム命令は2つ以上の命令語に跨る方法。
  27. 請求項26に記載の方法であって、可変長命令の一部を含む第2以降の命令語である命令語の非処理フェッチングの検出時に、前記可変長命令をアボートしかつ一つ以上の固定長命令を使用して前記可変長命令のエミュレーションをトリガーする方法。
  28. 請求項26に記載の方法であって、前記可変長命令はメモリページ境界に交差することが決定される命令語の非処理フェッチングの検出時に、前記可変長命令をアボートしかつ一つ以上の固定長命令を使用して前記可変長命令のエミュレーションをトリガーする方法。
  29. 請求項26に記載の方法であって、前記可変長命令はメモリページ境界の終りの固定数バイト内で開始することが決定され前記固定数バイトは処理された最長可変長命令よりも小さい命令語の非処理フェッチングの検出時に、前記可変長命令をアボートしかつ一つ以上の固定長命令を使用して前記可変長命令のエミュレーションをトリガーする方法。
  30. 請求項23に記載の方法であって、前記第1の命令セットの単一命令の実行中に複数の浮動小数点演算を実行することができ、前記複数の浮動小数点演算のいずれかにより潜在的に非処理浮動小数点演算が生じ前記検出は前記複数の浮動小数点演算のいずれかにより発生される非処理浮動小数点演算を検出するように動作する方法。
  31. 請求項23および30のいずれか一項に記載の装置であって、前記検出は非処理浮動小数点演算を生じる前記第1の命令セットの命令の実行時に即座に非処理浮動小数点演算を検出はせずに前記第1の命令セットの後続命令の実行時に非処理浮動小数点演算を検出して前記後続命令をアボートしかつ一つ以上の固定長命令を使用して前記後続命令のエミュレーションをトリガーする方法。
  32. 請求項31に記載の方法であって、前記検出は前記後続命令も浮動小数点演算を生じる時だけ非処理浮動小数点演算を検出する方法。
  33. 請求項31および32のいずれか一項に記載の方法であって、さらに、非処理浮動小数点演算が発生していることを前記非処理操作ハンドラが確認できるようにする発生インジケータを含む方法。
  34. 請求項31から33のいずれか一項に記載の方法であって、さらに、非処理浮動小数点演算を生じた浮動小数点演算を確認できるようにインジケータを設定するステップを含む方法。
  35. 請求項31から34のいずれか一項に記載の方法であって、前記非処理操作の処理は前記第1の命令セットの前記命令のエミュレーションの前に前記非処理操作を処理する既存の機構を利用する方法。
  36. 請求項35に記載の方法であって、前記非処理操作の処理は固定長浮動小数点命令を実行し、前記固定長浮動小数点命令の実行は前記非処理操作を処理するのに既存の機構を利用する効果を有する方法。
  37. 請求項21から36のいずれか一項に記載の方法であって、前記第2の命令セットは前記プログラム命令を実行するプロセッサコアのネイティブ命令セットである方法。
  38. 請求項21から37のいずれか一項に記載の方法であって、前記第1の命令セットは解釈された命令セットである方法。
  39. 請求項21から38のいずれか一項に記載の方法であって、前記第1の命令セットはJavaバイトコード命令を含む方法。
  40. 請求項21から39のいずれか一項に記載の方法であって、さらに、
    前記複数の命令セットの少なくとも一つの命令を表わす前記複数の命令セットの中の一つの命令セットの命令に対応する一つ以上の変換器出力信号セットの系列を発生するステップであって、各系列はその中の最終操作が実行されるまで入力変数は変化させないようにされているステップと、
    前記複数の命令セットの前記少なくとも一つの命令を表わす操作系列の実行中に非処理操作が発生した後で、
    (i)前記非処理操作が前記系列内の最終操作の実行を開始する前に生じたものであれば、前記再開論理は前記系列内の第1の操作において実行を再開し、
    (ii)前記非処理操作が前記系列内の最終操作の実行を開始した後で生じたものであれば、前記再開論理は前記系列に続く次の命令において実行を再開するステップと、
    を含む方法。
  41. 第1の命令セットおよびさらに一つ以上の命令セットからのプログラム命令の制御下でデータを処理するデータ処理装置を制御するコンピュータプロダクトであって、前記コンピュータプログラムプロダクトは、
    非処理操作の検出時に前記さらに一つ以上の命令セットの少なくとも一つの命令セットの一つ以上の命令を使用して前記非処理操作を生じた命令セットの前記命令のエミュレーションをトリガーするように動作する非処理操作ハンドラ論理を含むコンピュータプログラムプロダクト。
  42. 請求項41に記載のコンピュータプログラムプロダクトであって、前記非処理操作は命令語の非処理フェッチングであるコンピュータプログラムプロダクト。
  43. 請求項41に記載のコンピュータプログラムプロダクトであって、前記非処理操作は一つ以上の非処理浮動小数点演算であるコンピュータプログラムプロダクト。
  44. 請求項41,42および43のいずれか一項に記載のコンピュータプログラムプロダクトであって、前記第1の命令セットは可変長命令セットであり前記さらに一つ以上の命令セットの少なくとも一つは固定長命令セットであるコンピュータプログラムプロダクト。
  45. 請求項41,42および43のいずれか一項に記載のコンピュータプログラムプロダクトであって、前記第1の命令セットは可変長命令セットであり前記さらに一つ以上の命令セットの全てが固定長命令セットであるコンピュータプログラムプロダクト。
  46. 請求項44および45のいずれか一項に記載のコンピュータプログラムプロダクトであって、実行されるプログラム命令を含む固定長命令語がフェッチされ、前記可変長命令セットからの少なくともいくつかのプログラム命令は2つ以上の命令語に跨るコンピュータプログラムプロダクト。
  47. 請求項46に記載のコンピュータプログラムプロダクトであって、可変長命令の一部を含む第2以降の命令語である命令語の非処理フェッチングの検出時に、前記可変長命令をアボートし一つ以上の固定長命令を使用して前記可変長命令のエミュレーションをトリガーするコンピュータプログラムプロダクト。
  48. 請求項46に記載のコンピュータプログラムプロダクトであって、前記可変長命令はメモリページ境界に交差することが決定される命令語の非処理フェッチングの検出時に、前記可変長命令をアボートし一つ以上の固定長命令を使用して前記可変長命令のエミュレーションをトリガーするコンピュータプログラムプロダクト。
  49. 請求項46に記載のコンピュータプログラムプロダクトであって、前記可変長命令はメモリページ境界の終りの固定数バイト内で開始することが決定され前記固定数バイトは処理された最長可変長命令よりも小さい命令語の非処理フェッチングの検出時に、前記可変長命令をアボートしかつ一つ以上の固定長命令を使用して前記可変長命令のエミュレーションをトリガーするコンピュータプログラムプロダクト。
  50. 請求項43に記載のコンピュータプログラムプロダクトであって、前記第1の命令セットの単一命令の実行中に複数の浮動小数点演算を実行することができ、前記複数の浮動小数点演算のいずれかにより潜在的に非処理浮動小数点演算が生じ、非処理浮動小数点演算の検出は前記複数の浮動小数点演算のいずれかにより発生される非処理浮動小数点演算を検出するように動作するコンピュータプログラムプロダクト。
  51. 請求項43および50のいずれか一項に記載のコンピュータプログラムプロダクトであって、非処理操作の検出は非処理浮動小数点演算を生じる前記第1の命令セットの命令の実行時に即座に非処理浮動小数点演算を検出はせずに前記第1の命令セットの後続命令の実行時に非処理浮動小数点演算を検出して前記後続命令をアボートしかつ一つ以上の固定長命令を使用して前記後続命令のエミュレーションをトリガーするコンピュータプログラムプロダクト。
  52. 請求項51に記載のコンピュータプログラムプロダクトであって、非処理操作検出は前記後続命令も浮動小数点演算を生じる時だけ非処理浮動小数点演算を検出するコンピュータプログラムプロダクト。
  53. 請求項51および52のいずれか一項に記載のコンピュータプログラムプロダクトであって、さらに、非処理浮動小数点演算が発生していることを前記非処理操作ハンドラ論理が確認できるようにする発生インジケータ論理を含むコンピュータプログラムプロダクト。
  54. 請求項51から53のいずれか一項に記載のコンピュータプログラムプロダクトであって、さらに、非処理浮動小数点演算を生じた浮動小数点演算を確認できるようにする操作インジケータ論理を含むコンピュータプログラムプロダクト。
  55. 請求項51から54のいずれか一項に記載のコンピュータプログラムプロダクトであって、前記非処理操作ハンドラ論理は前記第1の命令セットの前記命令のエミュレーションの前に前記非処理操作を処理するのに既存の機構を利用するコンピュータプログラムプロダクト。
  56. 請求項55に記載のコンピュータプログラムプロダクトであって、前記非処理操作ハンドラ論理は固定長浮動小数点命令を実行し、前記固定長浮動小数点命令の実行は前記非処理操作を処理するのに既存の機構を利用する効果を有するコンピュータプログラムプロダクト。
  57. 請求項41から56のいずれか一項に記載のコンピュータプログラムプロダクトであって、前記第2の命令セットは前記プログラム命令を実行するプロセッサコアのネイティブ命令セットであるコンピュータプログラムプロダクト。
  58. 請求項41から57のいずれか一項に記載のコンピュータプログラムプロダクトであって、前記第1の命令セットは解釈された命令セットであるコンピュータプログラムプロダクト。
  59. 請求項41から58のいずれか一項に記載のコンピュータプログラムプロダクトであって、前記第1の命令セットはJavaバイトコード命令を含むコンピュータプログラムプロダクト。
  60. 請求項41から59のいずれか一項に記載のコンピュータプログラムプロダクトであって、さらに、前記非処理操作の後で実行を再開する再開論理を含み、
    前記データ処理装置は前記複数の命令セット少なくとも一つの命令を表わす前記複数の命令セットの中の一つの命令セットの命令に対応する一つ以上の変換器出力信号セットの系列を発生するように動作し、各系列はその中の最終操作が実行されるまで入力変数は変化させないようにされており、
    前記複数の命令セットの前記少なくとも一つの命令を表わす操作系列の実行中に非処理操作が発生した後で、
    (i)前記非処理操作が前記系列内の最終操作の実行を開始する前に生じたものであれば、前記再開論理は前記系列内の第1の操作において実行を再開し、
    (ii)前記非処理操作が前記系列内の最終操作の実行を開始した後で生じたものであれば、前記再開論理は前記系列に続く次の命令において実行を再開する、コンピュータプログラムプロダクト。
    を含む方法。
JP2003500725A 2001-05-31 2002-02-26 複数命令セットシステムにおける非処理操作処理 Expired - Lifetime JP3732198B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0113197A GB2376098B (en) 2001-05-31 2001-05-31 Unhandled operation handling in multiple instruction set systems
PCT/GB2002/000858 WO2002097609A2 (en) 2001-05-31 2002-02-26 Unhandled operation handling in multiple instruction set systems

Publications (3)

Publication Number Publication Date
JP2004538556A true JP2004538556A (ja) 2004-12-24
JP2004538556A5 JP2004538556A5 (ja) 2005-12-22
JP3732198B2 JP3732198B2 (ja) 2006-01-05

Family

ID=9915615

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003500725A Expired - Lifetime JP3732198B2 (ja) 2001-05-31 2002-02-26 複数命令セットシステムにおける非処理操作処理

Country Status (13)

Country Link
US (1) US7162611B2 (ja)
EP (1) EP1402360B1 (ja)
JP (1) JP3732198B2 (ja)
KR (1) KR100864891B1 (ja)
CN (1) CN100524220C (ja)
AU (1) AU2002234762A1 (ja)
DE (1) DE60210613T2 (ja)
GB (1) GB2376098B (ja)
IL (2) IL158791A0 (ja)
MY (1) MY127346A (ja)
RU (1) RU2287178C2 (ja)
TW (1) TWI242159B (ja)
WO (1) WO2002097609A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013145529A1 (ja) * 2012-03-30 2013-10-03 日本電気株式会社 演算処理装置、その演算処理方法、及び演算処理プログラムが格納された記憶媒体

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003025743A1 (fr) * 2001-09-12 2003-03-27 Hitachi, Ltd. Systeme processeur ayant un accelerateur java
GB2402764B (en) * 2003-06-13 2006-02-22 Advanced Risc Mach Ltd Instruction encoding within a data processing apparatus having multiple instruction sets
WO2005123833A1 (en) * 2004-06-18 2005-12-29 Cheil Industries Inc. Flameproof thermoplastic resin composition
US7167971B2 (en) 2004-06-30 2007-01-23 International Business Machines Corporation System and method for adaptive run-time reconfiguration for a reconfigurable instruction set co-processor architecture
US9183011B2 (en) * 2006-10-31 2015-11-10 Oracle America Inc. Method and system for runtime environment emulation
CN101853148B (zh) * 2009-05-19 2014-04-23 威盛电子股份有限公司 适用于微处理器的装置及方法
JP5565228B2 (ja) * 2010-09-13 2014-08-06 ソニー株式会社 プロセッサ
US8914615B2 (en) 2011-12-02 2014-12-16 Arm Limited Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format
EP2798458B1 (en) 2011-12-29 2019-07-03 Intel Corporation Packed data operation mask comparison processors, methods, systems, and instructions
US9710266B2 (en) * 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
EP2828747A4 (en) * 2012-03-22 2016-04-20 Intel Corp SYSTEMS AND METHODS FOR TREATING HYBRID EMULATION AND CORE FUNCTION
WO2016145498A1 (pt) * 2015-03-13 2016-09-22 Universidade Estadual De Campinas - Unicamp Método e sistema para emulação de instruções e execução de código legado
CN110750303B (zh) * 2019-09-25 2020-10-20 支付宝(杭州)信息技术有限公司 基于fpga的流水线式指令读取方法及装置

Family Cites Families (49)

* 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
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
US5455775A (en) * 1993-01-25 1995-10-03 International Business Machines Corporation Computer design system for mapping a logical hierarchy into a physical hierarchy
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
GB2289353B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Data processing with multiple instruction sets
GB2290395B (en) 1994-06-10 1997-05-28 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5752035A (en) * 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US5619665A (en) * 1995-04-13 1997-04-08 Intrnational Business Machines Corporation Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture
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
KR100529416B1 (ko) 1996-01-24 2006-01-27 선 마이크로시스템즈 인코퍼레이티드 스택기반컴퓨터를위한명령폴딩방법및장치
KR100513138B1 (ko) * 1996-01-24 2005-09-07 선 마이크로시스템즈 인코퍼레이티드 네트워크 또는 로컬 메모리로부터 수신된 명령 세트를실행하는 프로세서 및 컴퓨터 시스템
US6038643A (en) 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
DE69713400T2 (de) * 1996-01-24 2002-10-31 Sun Microsystems Inc Prozessor mit Bereichsüberprüfung bei Matrixzugriffen
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
US6026845A (en) * 1996-04-24 2000-02-22 Bighorn Valve, Inc. Flow, split Venturi, axially-rotated valve
US5905893A (en) * 1996-06-10 1999-05-18 Lsi Logic Corporation Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set
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
US6052530A (en) * 1996-10-09 2000-04-18 Hewlett-Packard Co. Dynamic translation system and method for optimally translating computer code
EP0938703B1 (en) * 1996-11-13 2003-07-02 Paran, Arik Real time program language accelerator
US5953741A (en) * 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
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
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
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
EP1359501A3 (en) * 1997-10-02 2007-11-21 Koninklijke Philips Electronics N.V. A processing device for executing virtual machine instructions
DE69839913D1 (de) 1997-10-02 2008-10-02 Koninkl Philips Electronics Nv Datenverarbeitungsgerät zur verarbeitung von befeh
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
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
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
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
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
US6480952B2 (en) * 1998-05-26 2002-11-12 Advanced Micro Devices, Inc. Emulation coprocessor
US6163764A (en) * 1998-10-12 2000-12-19 Intel Corporation Emulation of an instruction set on an instruction set architecture transition
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
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6297434B1 (en) * 1999-08-11 2001-10-02 Jose Mario Martello Wedge adjustable bridge for stringed instruments
US6718539B1 (en) * 2000-12-22 2004-04-06 Lsi Logic Corporation Interrupt handling mechanism in translator from one instruction set to another

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013145529A1 (ja) * 2012-03-30 2013-10-03 日本電気株式会社 演算処理装置、その演算処理方法、及び演算処理プログラムが格納された記憶媒体
JPWO2013145529A1 (ja) * 2012-03-30 2015-12-10 日本電気株式会社 演算処理装置、その演算処理方法、及び演算処理プログラム

Also Published As

Publication number Publication date
AU2002234762A1 (en) 2002-12-09
IL158791A0 (en) 2004-05-12
WO2002097609A3 (en) 2003-12-31
GB2376098B (en) 2004-11-24
KR100864891B1 (ko) 2008-10-22
CN100524220C (zh) 2009-08-05
EP1402360A2 (en) 2004-03-31
RU2003137828A (ru) 2005-05-27
RU2287178C2 (ru) 2006-11-10
CN1522404A (zh) 2004-08-18
GB2376098A (en) 2002-12-04
DE60210613D1 (de) 2006-05-24
US7162611B2 (en) 2007-01-09
KR20040005992A (ko) 2004-01-16
IL158791A (en) 2008-07-08
GB0113197D0 (en) 2001-07-25
MY127346A (en) 2006-11-30
DE60210613T2 (de) 2007-02-08
WO2002097609A2 (en) 2002-12-05
US20020188826A1 (en) 2002-12-12
JP3732198B2 (ja) 2006-01-05
EP1402360B1 (en) 2006-04-12
TWI242159B (en) 2005-10-21

Similar Documents

Publication Publication Date Title
US6965984B2 (en) Data processing using multiple instruction sets
JP3615770B2 (ja) アドレスされた構成部分の思索の失敗を検出するメモリ・コントローラ
JP3753743B2 (ja) 先進のプロセッサにおけるメモリ・データ・エリアシング方法および装置
JP2001507151A (ja) 先進のマイクロプロセッサのためのゲート格納バッファ
US7089539B2 (en) Program instruction interpretation
JP3776132B2 (ja) マイクロプロセッサの改良
US7823140B2 (en) Java bytecode translation method and Java interpreter performing the same
JPH0728640A (ja) 命令オペレーション・コードの検査装置及び方法
JP3732198B2 (ja) 複数命令セットシステムにおける非処理操作処理
US20240061682A1 (en) Load chunk instruction and store chunk instruction
US6907515B2 (en) Configuration control within data processing systems
JP3621116B2 (ja) 先進のプロセッサのための変換メモリ保護装置
US20070156386A1 (en) Linearization of page based memory for increased performance in a software emulated central processing unit
JP3654913B2 (ja) 一時的にターゲット・プロセッサの状態を保持する装置を備えたホスト・マイクロプロセッサ
JP3652956B2 (ja) エミュレーション装置
WO2001061475A1 (en) Transforming a stack-based code sequence to a register based code sequence

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050422

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050721

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050728

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050902

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051011

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3732198

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20081021

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20091021

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20101021

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20111021

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20121021

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20131021

Year of fee payment: 8

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

EXPY Cancellation because of completion of term