JP4684571B2 - エミュレーションコンピュータ技術を実行する直接命令 - Google Patents

エミュレーションコンピュータ技術を実行する直接命令 Download PDF

Info

Publication number
JP4684571B2
JP4684571B2 JP2004109500A JP2004109500A JP4684571B2 JP 4684571 B2 JP4684571 B2 JP 4684571B2 JP 2004109500 A JP2004109500 A JP 2004109500A JP 2004109500 A JP2004109500 A JP 2004109500A JP 4684571 B2 JP4684571 B2 JP 4684571B2
Authority
JP
Japan
Prior art keywords
instruction
legacy
host
instructions
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004109500A
Other languages
English (en)
Other versions
JP2004272922A5 (ja
JP2004272922A (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 JP2004272922A publication Critical patent/JP2004272922A/ja
Publication of JP2004272922A5 publication Critical patent/JP2004272922A5/ja
Application granted granted Critical
Publication of JP4684571B2 publication Critical patent/JP4684571B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F25REFRIGERATION OR COOLING; COMBINED HEATING AND REFRIGERATION SYSTEMS; HEAT PUMP SYSTEMS; MANUFACTURE OR STORAGE OF ICE; LIQUEFACTION SOLIDIFICATION OF GASES
    • F25DREFRIGERATORS; COLD ROOMS; ICE-BOXES; COOLING OR FREEZING APPARATUS NOT OTHERWISE PROVIDED FOR
    • F25D23/00General constructional features
    • F25D23/10Arrangements for mounting in particular locations, e.g. for built-in type, for corner type
    • 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/45533Hypervisors; Virtual machine monitors
    • G06F9/45554Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F25REFRIGERATION OR COOLING; COMBINED HEATING AND REFRIGERATION SYSTEMS; HEAT PUMP SYSTEMS; MANUFACTURE OR STORAGE OF ICE; LIQUEFACTION SOLIDIFICATION OF GASES
    • F25DREFRIGERATORS; COLD ROOMS; ICE-BOXES; COOLING OR FREEZING APPARATUS NOT OTHERWISE PROVIDED FOR
    • F25D2500/00Problems to be solved
    • F25D2500/02Geometry problems

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Chemical & Material Sciences (AREA)
  • Combustion & Propulsion (AREA)
  • Mechanical Engineering (AREA)
  • Thermal Sciences (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、レガシー(legacy)マイクロプロセッサの命令をエミュレート(emulate:模倣)するための方法及び装置に関し、さらに詳しくは、32ビットマイクロプロセッサのようなレガシーマイクロプロセッサのためのエミュレーションシステムに関するものである。それは、C/C++のような高水準コンパイラ言語を実行し、例えば縮小命令セット・コンピュータ(RISC)マイクロプロセッサにおいてそうであるように、データ及び命令セグメントが構造化されるのと同様に、コンパイルコードが構造化される。この場合、可能であれば、システムの実時間性能を改善するために、レガシー命令がホストプロセッサの等価命令に直接的に変換される。
マイクロプロセッサは、(コンピュータチップの)命令セットアーキテクチャ(ISA)で構成されることが知られている。このISAは特定のマイクロプロセッサ用の命令セットを判断する。アプリケーションプログラムはマイクロプロセッサによって実行され、比較的高いレベルの言語で書かれるのが普通である。次に、それは、特定のマイクロプロセッサ用の命令セットと互換性のある機械語にコンパイルされる。
現存する多数のマイクロプロセッサが経年によって陳腐化し、そしてこれに対応する処理速度の遅れのため、時代遅れの現マイクロプロセッサ(以下、レガシーマイクロプロセッサと称する)を新しいマイクロプロセッサ(以下、ホストマイクロプロセッサと称する)に置換えたいという要望がしばしばある。残念ながら、殆どの場合、ホストマイクロプロセッサの命令セットは、特定のアップグレードに依存していることからレガシーマイクロプロセッサの命令セットと互換性がない。
この問題を解決する1つの方法は、現存のアプリケーションプログラムをホストマイクロプロセッサの命令セットを考慮に入れて書き直すことである。このような手法は相当に厄介であるとともにかなり高価になる。命令セットの非互換性を避けて機能させるために、レガシーマイクロプロセッサの命令をエミュレートするソフトウェアが知られている。このようなシステムはしばしばエミュレーションシステムと称される。最新で高速なホストマイクロプロセッサによって実行されるレガシーマイクロプロセッサ用の命令セット語で書かれたアプリケーションプログラムを利用できるようにするため、このエミュレーションシステムは、レガシーマイクロプロセッサの命令セットをエミュレートすることが知られている。
多くの既知なエミュレーションシステムでは、レガシー命令がホストマイクロプロセッサによって取り出されると、次に、レガシー命令を解釈するルックアップ・テーブルが使用される。各レガシー命令がこのようなルックアップ・テーブルを使用するエミュレーションシステムで解釈されなければならないことから、キャッシュメモリを組み込んだシステムが、かなり高い可能性で起きるキャッシュミスに悩まされていることが知られていて、このキャッシュミスはシステムのスループット全体を減少させている。
エミュレーションシステムのスループットまたは速度を改善するため、普通に所有された米国特許No.6,041,402号は、ダイレクトベクトル型レガシー命令セットのためのエミュレーションシステムを開示している。レガシー命令を取り出して、ソフトウェア命令に解釈することよりもむしろ、前記ダイレクトベクトル型レガシー命令セットのエミュレーションシステムが、レガシー命令をエミュレートするソフトウェアルーチンに対してダイレクトベクトルを取り出している。前記ダイレクトベクトルを取り出すことによって、レガシー命令を解釈するためのルックアップ・テーブルを要求することを除去している。ルックアップ・テーブルへのアクセスがこのようなシステムで除去されることから、キャッシュミスの可能性が大いに減少し、その結果、システムのスループットが増加する。残念ながら、このダイレクトレガシー命令セットのエミュレーションは、32ビットマイクロプロセッサのような最新のマイクロプロセッサの場合、相当に大きな実行オーバヘッドを要求する。したがって、既知のエミュレーションシステムと比較して、実時間性能を改善することが可能なレガシーマイクロプロセッサ命令のエミュレート用エミュレーションシステム及び方法に対する要求がある。
(発明の概要)
簡潔にいうと、本発明は、C/C++のようなコンパイル型の高水準言語を実行する、レガシーマイクロプロセッサ命令を解釈するための方法及びシステムに関するものであり、コンパイルされたコードは、例えば、縮小命令セット・コンピュータ(RISC)マイクロプロセッサにおいてそうであるように、データ及び命令セグメントが分離されるように構成される。システムの実時間性能を改善するため、レガシー命令はホストプロセッサの等価命令に直接的に変換される。システムの実時間性能をさらに上げるため、付加的な手法が選択的に用いられる。レガシー命令とホストプロセッサ命令との間で1対1の正確な整合を行うことができないとき、命令ハンドラー(handler)は、置き換えられたレガシー命令と同じ機能を結局は実行する2以上のホストプロセッサ命令で変換する。1つのホスト命令でエミュレートされることができないレガシー命令のために、これらの命令は、幾つかのホスト命令を含み、かつスクラッチパッド(作業用)レジスタの使用を組み込んだ命令ハンドラーによってエミュレートされる。ホストプロセッサのアセンブリ言語では容易に処理することができないレガシーマイクロプロセッサのアーキテクチャ構造を含むレガシー命令のために、命令ハンドラーは、C/C++コードのような高水準言語で形成される。ホスト命令に対するレガシー命令の直接変換、及び1またはそれ以上の前述したエミュレーション手法を用いることにより、本発明に関するエミュレーションシステムは、最新のRISCマイクロプロセッサの実時間性能を向上させることを提供する。
(発明の詳細)
本発明は、C/C++、Fortran、またはADAのようなコンパイル型高水準言語を実行する特有なカテゴリーのレガシーマイクロプロセッサ命令をエミュレートするための方法及び装置に関するものである。このコンパイルされたコードは、データ及び命令セグメントが分離されるように構造化されるのが典型的である。また、コンパイルされたコードは、呼び出し及び連結規則、並びにレジスタ使用規則の手続きのような事項を記述する他のプラットフォームの特定アプリケーションバイナリーインタフェース(ABI)と一致する。
本発明は、他の32ビットRISCマイクロプロセッサを用いる32ビットRISCマイクロプロセッサのエミュレーションに関する。ここでのホストマイクロプロセッサは、エミュレーションプログラムを実行するプロセッサを表す。レガシープロセッサという用語はエミュレートされるプロセッサを特定するために用いられる。
以下の4つのカテゴリーのうちの1以上に類別されるレガシー命令を使用できるようにするため、本発明に従ったエミュレーション手法は、ホストプロセッサ及びレガシープロセッサ間の類似性を仮定する:
・リング0−ここでのレガシー命令は、同じ機能を果たす単一ホストプロセッサ命令に置き換えられることができる。命令の操作コードを修正すること、及び命令フィールドを並べ替えることは、一般的に、すべてがこのカテゴリーにとって必須である。
・リング1−本タイプのレガシー命令は、同じ機能を果たす2以上のホストプロセッサ命令と置き換えられることができ、かつ演算を行う1以上のスクラッチパッド(作業用)レジスタを要求しない。
・リング2−ここでのレガシー命令は、同じ機能を果たす2以上のホストプロセッサ命令と置き換えられることができるが、演算を行う1以上のスクラッチパッドレジスタを要求する。
・リング3−ここでのレガシー命令は、一般的にレガシーマイクロプロセッサの高度なアーキテクチャ機構に関係し、さらに、あまりに複雑すぎてホストプロセッサのアセンブリ言語のみを利用して実行されることが不可能な命令に関係している。これらの命令はC/C++のような高水準言語でほぼ完全に処理される。
レガシープロセッサで書かれたプログラムを実行するホストプロセッサを利用できるようにするため、レガシープロセッサのバイナリー命令は、前述した4つのカテゴリーの1つのホストプロセッサバイナリー命令に解釈されなければならない。単純な算術(すなわち、加算、減算、乗算)、論理演算(すなわち、論理的なand、or、not)、及びデータ移動(すなわち、ロード及びストア)のようなすべてのマイクロプロセッサによって実行される多数の演算がある。これら命令の多くは非常に類似し、かつRISCマイクロプロセッサの異なる銘柄及び/または型の間で同一であり、かつ多くのアプリケーションプログラム中で頻繁にあらわれる傾向がある。このため、ホストマイクロプロセッサとレガシーマイクロプロセッサ間の命令セットにおける類似性の利点を用いるとともに、リング0のカテゴリーにおいて説明するような直接変換を利用することによって、可能なときはいつでもシステムの実時間性能が大幅に改善されるだろう。
正確な整合が行われないときは、例えば、リング1及びリング2として類別されたレガシー命令であるような、置き換えられたレガシー命令と同じ機能を結局は実行する2以上のホストマイクロプロセッサ命令から成り立つレガシー命令ハンドラーに対して、そのレガシー命令が無条件分岐命令に置き換えられる。ホストマイクロプロセッサの分岐予測能力が優れていることから、無条件分岐の使用はシステムの性能を維持することを助ける。レガシーマイクロプロセッサの高度な機構を含む場合や、またはホストプロセッサのアセンブリ言語で容易に処理することができない高度な命令のために、リング3のカテゴリーにある命令はC/C++のような高水準言語に拡張され、高水準な演算を行う。
リング0、リング1、及びリング2の性能が優れていることを維持するためと、レガシーマイクロプロセッサとホストマイクロプロセッサの間でレガシー使用規則が異なることのために、レガシーレジスタはホストレジスタと等価な対応した機能に再変換される。例えば、パワーPCのホストマイクロプロセッサ用のスタックポインタはr1であり、一方で、MIPS R4400マイクロプロセッサ用のスタックポインタはr29である。
公知のエミュレーションシステムが、メモリ内のレガシーレジスタを維持するものとして知られているが、それはレガシーレジスタ値を演算するためにメモリアクセス及び付加的なホスト命令を要求し、これにより実時間性能が実質的に減少してしまう。このため、レガシーレジスタをホストプロセッサレジスタに再変換することにより、公知のエミュレーションシステムと較べて実時間性能を向上させている。
前記発明は、レガシープロセッサ及びパワーPCホストプロセッサ(http://www/Motorola.com/powerpc)として、MIPSテクノロジー社(http://www.mips.com)による32ビットR4400RISCマイクロプロセッサの項に記載されている。しかしながら、前述したように、本発明の原理は、ホストプロセッサ命令に直接的に変換されることが可能なレガシープロセッサ命令において、互換性があるどのマイクロプロセッサにも適用できることを特徴とするものである。互換性のあるホスト/レガシープロセッサの組み合わせでは、命令間での1:1整合の数が相当大きいことが知られている。
(システムの概要)
本発明に従ったエミュレーションシステム及び方法の上位概念でのブロック図が図1に示されており、その全体は符号20として特定されている。前述したように、本発明に従ったエミュレーションシステム及び方法は、ボックス22及びボックス24によって示されるような、命令及びデータが分離されるレガシーマイクロプロセッサが使用される場合に大きな影響を及ぼす。ファイルローダ26は、その全体が符号28で特定されているレガシープログラムを突き止める。ファイルローダは、本技術分野において公知なものである。ファイルローダ26は、レガシーファイルのフォーマットを読み出し、そのレガシーバイナリファイルを取り出す。図1に示すように、ファイルローダ26は、レガシーデータファイル24とともにレガシー命令22の両方を取り出す。これらのレガシー命令及びデータファイル22,24は、ディスク、読出し専用記憶素子に含まれたり、ネットワーク上で取り出されたりする。前記レガシーデータ24が静的な場合、それはホストマイクロプロセッサプログラムに関連したレガシーデータメモリ空間30に単純に複写される。あるいはまた、プログラム実行時に動的に生成されるデータ部のためのレガシーデータが生成されかつ初期化される。
レガシー命令22が、ファイルローダ26によってクラック変換オブジェクト32へ供給される。クラック変換オブジェクト32は、詳細は後述するが、レガシー及びホスト命令セットアーキテクチャに固有である。また詳細は後述するが、クラック変換オブジェクト32は、各レガシー命令22を解析し、かつ前述した典型的な4つのカテゴリー(すなわち、リング0、リング1、リング2、及びリング3)に従ってその命令を類別する。図1に示すように、リング1−3命令は、リング0メモリ空間から分離したハンドラーメモリ空間に置かれる。このリング0命令は、クラック変換オブジェクト32によってホストプロセッサメモリ空間34に直接的に変換される。他のすべての命令は、命令ハンドラー36へ変換される。
(クラック変換オブジェクト)
クラック変換オブジェクト32は、ファイルローダ26から受信した各レガシーバイナリ命令を1以上のホストプロセッサ命令へ変換する。前述したように、ここで述べられかつ図示されたクラック変換オブジェクト32は、パワーPCG3/G4プロセッサの方法により、レガシーMIPS R4400RISCマイクロプロセッサの命令をエミュレートするためのものである。
図2に示すように、クラック変換オブジェクト32は、ステップ40及び42で、各レガシー命令22を取り出しかつ読み出す。次に、各レガシー命令はステップ44及び46で、その操作コードに基づいて解読(デコード)される。特に、以下に示すテーブル1及び2に示すように、各レガシー命令は、他のデータフィールドと一緒にレガシー操作コードに対応付けられルックアップ・テーブル内に列挙される。詳細は後述するが、これらのルックアップテーブルは、各レガシー命令22のための前記リングカテゴリーを含んでいる。したがって、クラック変換オブジェクト32は、ステップ48で確認して前記命令がリング0カテゴリーに入るものか否かを判断する。前記命令がリング0カテゴリーにある場合、クラック変換オブジェクト32は、操作コードを解釈することによってレガシー命令22をホスト命令へ直接的に変換する。詳細はステップ50で行われる。次に、ステップ52で、この解釈されたホスト命令がアプリケーションプログラムの命令ストリームに書かれる。
これに対して、レガシー命令22がリング0カテゴリーにない場合、ステップ54で、命令ストリームにおける次のハンドラーに対する無条件分岐命令が命令ストリームに挿入される。次に、前記システムは、ステップ56、58及び60で確認して、レガシー命令がリング1カテゴリー、リング2カテゴリー、及びリング3カテゴリーに入るかどうかを特定する。
ステップ56で判断されるように、レガシー命令22がリング1カテゴリーにある場合、命令ハンドラー36(図1参照)への命令がステップ58Bで書き込まれ、そしてステップ60Aで、戻り分岐命令が命令ハンドラー36の終わりに挿入される。また、ステップ58Aで判断されるように、前記命令がリング2カテゴリー命令にあるものとして特定される場合、クラック変換オブジェクト32は、スクラッチパッド(作業用)レジスタからのデータを保存するためにコードを挿入し、かつその後、ステップ64で、命令ハンドラー空間36(図1参照)に命令を書き込む。
前述したように、レガシー命令に等価な機能を供給するため、リング2カテゴリー命令は、スクラッチパッドレジスタに一致する複数のホストプロセッサ命令を要求する。前記命令がひとたびエミュレートされると、リング2命令に関連したスクラッチパッドレジスタがステップ66で再記憶される。次に、前記システムはステップ60Aに戻り、ハンドラーの終わりに命令ストリームに戻る分岐を挿入する。
前記命令がリング3カテゴリー命令であると判断された場合、ステップ60Bで、機器状態を保存するための命令コードが、命令ハンドラー36に挿入される。引き続き、ステップ68で、命令ハンドラーは、例えば、C/C++のような高水準言語プログラムにジャンプし、等価な機能をレガシー命令に供給する。コンパイラー方法による高水準言語は、命令ハンドラー36に対する戻りを制御し、ステップ70に進むとここで機器状態を保存する。そして、前記システムはハンドラーの終わりで戻り分岐命令を挿入することによって、命令主画面に戻る。
図14、及び15に示すように、その全体が符号72として識別されるホストプロセッサプログラムは、命令ストリームとして表示され、命令ハンドラー36(図1参照)はリング0型命令及び無条件分岐を含む。リングカテゴリー1−3命令をリング0空間34から続く分離ハンドラー空間36に置き、かつ無条件分岐をリング1−3命令ハンドラー空間36(図1参照)への分岐に用いるこのような構成は、命令間の距離を維持するのに用いられる。さらに詳しくは、あらゆるプログラムは、ジャンプ及び/または分岐の命令を含むことが予想されているのである。命令間の空間が維持されない場合、多くの命令が相対形式で動作し、そして絶対宛先アドレスを用いるよりむしろ現在の位置から所定の距離だけ前または後にジャンプしていることから、このジャンプ及び分岐は、結局は間違った位置決めになってしまう。この結果、1:1整合が実現されないときには、図14及び15に示すように、レガシー命令の代わりに単一の無条件分岐が用いられる。レガシー命令をエミュレートするため、無条件分岐命令が命令ハンドラー空間36(図1参照)に向けられる。前記ハンドラーがその機能を完了するとき、図14及び15に示すように、それは無条件分岐に従う命令に戻る。
図3は、相対アドレスに基づいて前に進む条件分岐の一例を示している。さらに詳しくは、アドレス1004での命令実行中に、プログラムカウンタはアドレス1008で次の命令を指し示す。図3に示すように、命令BEQは条件分岐命令である。条件分岐命令は、分岐される場合には、1010の宛先アドレスに到達するため現在のアドレスを8増加する。1008または100Cでの命令の何れかが1:1変換されず、かつ付加的コードが行に挿入される場合、分岐は不正確な宛先アドレスを指し示すだろう。その代わりとして、例えば、命令ストリーム72(図14及び15参照)に挿入された無条件分岐のような無条件分岐が命令ハンドラーへの分岐に用いられる場合、その距離は同じままである。
この手法は、”branch folding(畳み込み分岐)”と称される多くのRISCプロセッサの特徴に依存し、それは、殆ど何もロスのない性能状態のプロセッサによって、無条件分岐が命令ストリームから自動的に除去されることを許可する。分岐が無条件なとき、それは行われなければならない。プロセッサは新たなパスの下にある前処理の取り出し命令を単に開始し、そして名目上の性能不利益(performance penalties)が分岐に関連付けられる。他方、前処理の取り出し命令はどのパスが処理されるかわかるまで生じることができないので、条件分岐は、重大な性能不利益を課することが可能である。
(レジスタ変換)
本発明の一態様によれば、ホストプロセッサとレガシープロセッサ間に矛盾が生じないようにするためにレジスタ変換が用いられる。例えば、MIPS R4400マイクロプロセッサでは、全体レジスタ29がスタックポインタである。しかしながら、パワーPCマイクロプロセッサでは、スタックポインタはレジスタ1である。この矛盾を避けるため、レガシー命令のレジスタフィールドがホストプロセッサレジスタに再変換される。MIPS R4400マイクロプロセッサ命令のレガシー命令がパワーPC命令に変換される例の場合、レガシー命令のレジスタ29は、ホストプロセッサのレジスタ1に再変換され、かつレガシー命令のレジスタ1がホストプロセッサのレジスタ29に再変換される。これは、ホストプロセッサ番号を含む配列へのインデックスが、与えられたレガシーレジスタ番号のために用いられるようにレガシーレジスタ番号を処理することで達成される。
(命令解釈)
リング0命令は、単一のホストプロセッサ命令に置き換えられることができるレガシープロセッサ命令である。対応するホストプロセッサ命令がレガシープロセッサ命令として同じ機能を実行するのであるが、レガシー命令のバイナリー再編成(すなわち、オブジェクトコードの解釈)には多くの時間が必要となる。
図4〜7は、32ビットパワーPC RISCマイクロプロセッサの等価命令に対する32ビットMIPS R4400 RISCプロセッサ命令の変換例を示している。この例の場合、パワーPCがホストプロセッサであるのに対し、MIPSプロセッサはレガシープロセッサである。
リング0命令用に、操作コード(op code)がホストプロセッサの適切な命令に整合するよう変換される。いくつかのケースでは、サブ操作コードフィールドが解釈されなければならない。レジスタ及び直接データ値フィールドは、必要であれば移動される。いくつかのケースでは、ホストプロセッサビットフィールドが非活動状態にセットされる。図に示していないが、レガシーレジスタ変換は、レガシー/ホストプロセッサ組み合わせに依存して行われる。
図4は、最も単純なバイナリー表現でのMIPS ADDU(add unsigned instruction:符号なし命令の加算)の一例を示している。このADDUレガシー命令を等価なホストADD命令に変換するため、レジスタフィールドと同様に、操作コード及び様々なサブ操作コードのフィールドが、図4に示されているように変換される。また、ホスト命令は、レガシー命令のために使用されない2つの追加的な単一ビットオプションフィールド(すなわち、ビット0及びビット10)を有している。これらのフィールドは簡単に消去される。
図4に示すように、前記ADDUレガシー命令は、レジスタrs及びrtの値を加算し、その結果をレジスタrdに格納する。図にあるように、レガシーサブ操作コードは、00000100001であり、それはレガシー命令の0〜10ビットに一致する。このバイナリー値00000100001は、10進の33に一致する。対応のホストプロセッサ命令はAdd命令である。
このケースにおいて、ホスト命令はレジスタrA及びrBの値を加算し、その結果をレジスタrTに格納する。ホストプロセッサ命令の形式は、対応するレガシー命令の形式とはわずかに異なっている。さらに、ホスト命令は、RC(record condition:記録状況)ビット及びOE(overflow enable:オーバフローの可能性)ビットを、32ビット命令のうちの0及び10目のビットとして含んでいる。これらのオプションは、レガシーMIPSプロセッサでは使用可能でない。前述したように、これらのビットは、簡単に消去される。0及び10ビットを消去した後は、ホストAdd命令の等価なサブ操作コードが100001010である。このため、この場合、レガシー操作コード00000100001は、前述したように100001010に解釈され、かつレジスタが再変換される。特に、レガシーレジスタrdは、ホストレジスタrTに変換される。レガシーレジスタrsがホストレジスタrAに変換され、最後にレガシーレジスタrtがホストレジスタrBに変換される。加えて、レガシー命令の26〜31ビットがホスト命令用の適切な操作コードに解釈される。示したように、000000として示される26〜31ビットでの操作コードは、011111に解釈される。
図5及び6は、直接変換の他の例を示している。例えば、図5は、レガシーLHU(load halfword unsigned:符号なし半語のロード)命令、及びSRA(shift right algebraic:右シフト演算)命令の直接変換を示す。LHU命令の場合、直接データはホストプロセッサ命令に変換される。このSRA命令は直接5ビットシフトカウントフィールドを含んでいる。最後に、図7は引数のないレガシー同期命令を示している。対応のホストプロセッサ同期命令は、同様に引数を有していない。この場合、操作コード及びサブ操作コードが、図7に示すように変換される。
(リング1命令)
前述したように、リング1カテゴリーのレガシー命令は、単一のホストプロセッサ命令に直接的に変換されることができない。それゆえ、前述したように無条件分岐命令が命令ストリーム72(図14、15参照)内に挿入される。エミュレートされたレガシー命令の振る舞いを模倣(エミュレート)するために、この分岐は複数のホストプロセッサ命令を使用する命令ハンドラーへの実行を指し示す。かなり単純な模倣(エミュレート)用のリング1命令は、付加的なスクラッチレジスタが要求されないことを許可する。
図8は、レガシーLB(load byte:バイトのロード)用のアセンブリ・ニーモニック(簡略記号)言語、及びLBレガシー命令用のホスト命令ハンドラーを示している。ロードされたバイトの符号に基づいて宛先レジスタの符号ビットを大きくする符号拡張がレガシー命令により実行されるので、レガシーLB命令はリング1命令として類別される。付加的なホストプロセッサ命令が、符号拡張を実行するために要求される。さらに詳しくは、図8に示すように、5つのワードがこの命令を処理するために要求される。第1のワードはレガシーバイナリ命令そのものである。次のワードは、同一命令を異なるオペランド(演算)で処理する他のハンドラーへのポインタである。これは既に生成されているハンドラーを再利用することを許可するために行われている。1つに結合されたリストは、整合のための検索用メカニズムを提供する。第3のワードはレガシー命令のホストプロセッサハンドラーを開始する。このように、任意の数のホストプロセッサ命令が表現される。最後に、主命令ストリームに戻るため、ホストプロセッサのサブルーチン戻り命令が挿入される。
図9は、レガシーBEQ(branch if equal instruction:命令に等しい場合は分岐)、及びこの命令をエミュレートするホスト命令ハンドラーを示している。この場合、レガシーBEQ命令は1命令で比較と分岐とを兼ねて実行するので、BEQレガシー命令がリング1命令として類別される。ホストプロセッサ命令は、1命令で分岐する比較を許可しない。むしろ、ホストプロセッサ用の命令は、比較が別々に行われ、かつその結果が状況コードレジスタに格納されなければならないことを要求する。次に、分岐をするかどうかを決定する際に、状況分岐はこの格納された状況コードを使用する。
レガシーターゲットの場合、ホストハンドラーは等価命令の分岐に従って直接レガシー命令を組み入れる。なぜなら、宛先アドレスを計算する間にレガシープロセッサがそれを実行するためである。図示していないが、ハンドラーはこれを上手く調節することができる。特に図10に示すように、リング1が幾つかのリング0命令を備えた命令ストリームの中に示されている。リング1命令が実行されるときはいつでも、無条件の分岐及びリンク命令が、2つのワードヘッダに従った命令で開始する命令ハンドラーへの実行に向けられるために用いられる。図10に示すように、命令ハンドラーの終わりで、本実行が命令ストリームへ戻り、かつ分岐に従って直接リンクアドレスを指定する。
(リング2命令)
リング2命令は、動作を実行するのに1以上のスクラッチレジスタが必要とされることを除き、リング1命令と類似している。これは1以上のホストプロセッサレジスタを保存すること、次にレガシー命令画面に戻る前にそれらを再記憶することを要求する。
図11は、リング2命令の一例である。特に、図11はレガシーSLT(set if less than instruction:命令を下回る場合の集合)及びこの命令を処理するためのホスト命令ハンドラーを示している。レガシー命令は比較を実行し、不等号用の零及び等号用の零を指定されたレジスタに格納する。この場合、ホストプロセッサ、パワーPCプロセッサは、対応した命令を有していない。このため、ホストプロセッサがその代わりとして比較を実行し、次に比較の結果を状況コードレジスタから抽出する。次に、その値が正しい位置に交代されなければならない。これらの動作は、ハンドラーが完了するときに、割り当てられ、保存され、再生されるように作用するスクラッチレジスタを要求する。
図12は、その対応したホストプロセッサの命令ハンドラーに一致したレガシーMTC1命令の他の例を示している。このMTC1命令は、コプロセッサ1命令への転送であり、汎用のレジスタからレガシープロセッサ−コプロセッサ1である浮動小数点レジスタへ値を移動させる。ホストマイクロプロセッサ(すなわち、パワーPCマイクロプロセッサ)の場合、汎用レジスタから浮動小数点レジスタまで直接的に値を移動させる命令が存在しない。したがって、命令ハンドラーは、メモリバッファのアドレスを構築するスクラッチレジスタを使用しなければならない。図12に全体的に示されているように、汎用レジスタの値はメモリに格納され、そして次に浮動小数点ロード命令がそれを浮動小数点レジスタへ入れるために使用される。
適切なレジスタ資源を備えたホストプロセッサが選択される場合、リング2命令を無効にすることができることが予想される。MIPS R4400レガシーマイクロプロセッサ及びパワーPCホストプロセッサの場合、それぞれは32ビット汎用レジスタ及び32ビット浮動小数点レジスタを有している。これは、メモリを介したレジスタを保存し、かつ1以上のスクラッチレジスタが要求される際にそれらを再記憶する要求を強制する。
(リング3命令)
リング3命令は複雑な演算、及びホストプロセッサまたはアセンブリ言語を用いてエミュレートすることが容易でないレガシープロセッサの高度なアーキテクチャ上の特徴を含んでいる。したがって、リング3命令はその代わりにC/C++のような高水準言語を用いて処理される。ホストのアセンブリ言語ハンドラーはこれらの命令のためにセットアップされるが、その関数は要求されたときに高水準言語の構成要素を呼び出している。
図13Aは、MIPS SYSCALL(システムコール)命令及びそのホストハンドラーを示している。図に示すように、高水準言語の呼び出しがされる前に機器の状態が保存され、そしてこのハンドラーからの戻りの際に機器の状態が復帰及び再記憶される。高水準言語における関数の呼び出し要求は、前記ホストプロセッサのアプリケーションバイナリーインタフェース(ABI)によってうまく文書化される。このようなABIは任意に与えられるアーキテクチャ用の正確なプログラム命令を保証することが許可されなければならない規則を含んでいる。したがって、特定の要件がホストプロセッサの選択により指示される。このとき、リング3命令用のハンドラーは、高水準言語の構成要素を呼び出すのにどんなコードも必要とする。
図13Bは、典型的なパワーPCアセンブリ言語及び典型的なリング3CFCz命令用のハンドラーを示している。この命令ハンドラーはパワーPC機器コードで生成される。しかしながら、コメント化されたアセンブリが説明のために用いられている。
エミュレートされるレガシー命令はCFCz命令であり、それはレガシーコプロセッサレジスタから汎用レガシーへ32ビット値を移動させる。MIPS RISC R4400マイクロプロセッサの場合、レガシーマイクロプロセッサは1つのコプロセッサが浮動小数点ユニットである4つまでのコプロセッサを許可する。命令ハンドラーは機器状態を保存し、ハンドラーの頂上からレガシー命令を取り出し、それからコプロセッサのレジスタ番号、汎用レジスタ番号、及びコプロセッサ番号から成る3つの引数を抽出する。
Figure 0004684571
セクションのセットアップにおいて、前記引数がホスト、すなわちパワーPC、レジスタr3、及びレジスタr4へ置かれる。これは、C関数を呼び出すパワーPCアプリケーションバイナリインタフェース仕様を満たしている。Execute_CFCzの呼び出しは指定されたC関数であり、CFCz命令を処理するために用いられる。この関数の一例を以下に示す。
Figure 0004684571
以下はコプロセッサ動作を処理するC++クラスのために典型的なクラス仕様である。
Figure 0004684571
以下は前述したクラスで定義されたコプロセッサ読み出しレジスタ関数の典型的な具体例である。













Figure 0004684571
(ルックアップ・テーブル)
前述したように、テーブル1及び2は、MIPS R4400RISCレガシーマイクロプロセッサのレガシー命令用の各レガシー命令のために、レガシー命令を識別しかつ特定のリングカテゴリーを識別するクラック変換オブジェクト32によって用いられるルックアップ・テーブルを表している。



















Figure 0004684571

Figure 0004684571

Figure 0004684571

Figure 0004684571
テーブル図に示すように、テーブル1は典型的な10フィールドを含んでいる。最初のフィールドは命令フィールドとして識別され、そして各レガシー命令のためのアセンブリ言語”ニーモニック(簡略記号)”を識別する。op_codeフィールドは、レガシー命令の操作コードを表す。整数命令フォーマット及び浮動小数点命令フォーマットの両命令のため、functionフィールドがレジスタ型命令として用いられる。例えば、図16〜20は、MIPSマイクロプロセッサのための整数及び浮動小数点バイナリー命令フォーマットを示している。レジスタ型命令のために、前記functionフィールドがサブ操作コードとして用いられ、そして例えば図4においてビット0からビット10(図4参照)に関して述べたようなホストプロセッサのための関数フィールドに移動させる。この結果、示すように、ADDU命令ではサブ操作コードの10進の値(すなわち、ビット0から10)が33となる。ADDU命令の場合の値33は、functionフィールドで識別される。
この型フィールドは、例えば図16〜20に示すように命令タイプに関係する。また、テーブル1及び2はringフィールドを含んでいる。このringフィールドは前述したようにリングカテゴリーに対応している。RS、RT、及びRDフィールドはレガシーレジスタに関係し、そしてレジスタrs、rt、及びrdに関連したレジスタ数を識別する。immediateフィールドは、例えば図16に示すような直接型命令のために用いられる。最後に、”Shamt”フィールドは図17に示すようなレガシー命令の例に関連するシフト量に関係する。
テーブル2は、MIPS R4400RISCマイクロプロセッサ用の32ビット浮動小数点命令をリストしたものである。”instruction”、”op”、”code”、”function”、”type”、”ring”フィールドはテーブル1と同じである。”FT/base”及び”offset”フィールドは、例えば図19に示すように、直接型浮動小数点命令用として用いられる。FT、FS、及びFDフィールドは浮動小数点命令のためのレジスタ数を参照する。
formatフィールドは、浮動小数点値のサイズとフォーマットを表示する。テーブル3は、単長語及び倍長語の固定小数点値と同様に、指定された短精度及び倍精度のIEEE754浮動小数点値のための有効なフォーマットコードを示している。このformatフィールドには他の値が可能だが、デコード命令のみに用いられている。
Figure 0004684571
明らかに、本発明に関する多くの変更及びバリエーションが前述した教示の観点において可能である。したがって、添付の特許請求の範囲の視野内で、本発明が前述した特定の内容以外にも実現され得ることを理解されたい。
本発明に関するこれら及び他の利点は、発明の詳細な説明及び添付の図面を参照することで容易に理解されるだろう。
本発明に従ったエミュレーションシステムにおける高レベルのブロック図である。 本発明に従って用いられる命令クラッキング処理のソフトウェアフロー図である。 本発明の一態様によるメモリ変換を示すメモリ部の図である。 ホストADD命令に対する典型的なレガシーADDU(符号なし加算)命令の操作コードに関する直接変換の一例を示す典型的な図である。 図4に類似するが、ホスト命令への典型的なレガシーLHU(load half word unsigned 符号なし1/2語のロード)変換を示している。 図4に類似するが、ホスト命令への典型的なレガシーSRA(shift right algebraic 代数的な右シフト)変換を示している。 図4に類似するが、ホスト命令への典型的なレガシーSYNC命令変換を示している。 典型的なレガシーLB(load byte)命令用の典型的なホスト命令ハンドラーを示す図である。 図8に類似するが、典型的なレガシーBEQ(等しいかどうかの分岐)命令用を示す図である。 多数の直接変換型命令を含む命令ストリームを示す図であり、例えば、図4〜7に示すように、ホスト命令に直接的に変換されることができないレガシー命令用の命令ハンドラーへの無条件分岐を示す。 MIPS SLT(set of less than)命令用のスクラッチパッド(作業用)レジスタをパワーPCハンドラーへ要求する複数のホスト命令によって、十分にエミュレートされた典型的なレガシー命令のエミュレーションの一例を示す図である。 典型的なMTC1(コプロセッサー1への移動)命令へのエミュレーションを示すことを除き、図11に類似する図である。 より高レベルな命令より形成された命令ハンドラーによってエミュレーションを要求するレガシーリング3 SYSCALL命令のエミュレーションの一例を示す図である。 図13Aに類似するが、リング3 CFCzレガシー命令用を示す図である。 様々なレガシー命令及び対応するハンドラーメモリ空間を含んだ命令ストリームを示す図である。 本発明に従ったエミュレーションプログラムの実行を示す図である。 MIPS型RISCマイクロプロセッサ用の様々な命令フォーマットを示す図である。 MIPS型RISCマイクロプロセッサ用の様々な命令フォーマットを示す図である。 MIPS型RISCマイクロプロセッサ用の様々な命令フォーマットを示す図である。 MIPS型RISCマイクロプロセッサ用の様々な命令フォーマットを示す図である。 MIPS型RISCマイクロプロセッサ用の様々な命令フォーマットを示す図である。

Claims (4)

  1. 少なくともホストマイクロプロセッサを備えたコンピュータにおいてレガシーマイクロプロセッサの命令をエミュレーション実行するために、レガシー命令のオブジェクトコードをホスト命令のオブジェクトコードに変換する方法であって、前記コンピュータが実行する、
    (a)前記レガシー命令それぞれを読み出して解釈するステップと、
    (b)前記レガシー命令それぞれについて少なくともそのカテゴリーが記述されたルックアップテーブルを参照して、前記解釈されたレガシー命令のカテゴリーを判断するステップと、
    (c)前記解釈されたレガシー命令と同じ機能が単一のホスト命令により実現可能なカテゴリーであると前記判断するステップにおいて判断された場合は、前記単一のホスト命令を命令ストリームに挿入し、そうでない場合は、命令ハンドラーへ分岐させるための無条件分岐命令を前記命令ストリームに挿入するステップと、
    (d)前記解釈されたレガシー命令と同じ機能を複数のホスト命令により実現可能なカテゴリーであると前記判断するステップにおいて判断された場合は、前記複数のホスト命令を少なくとも含む前記命令ハンドラーを前記命令ストリームとは異なるメモリ空間に書き込むステップとを含む、方法。
  2. レガシーレジスタの記述を含む前記レガシー命令のオブジェクトコードは、前記レガシーレジスタと等価な機能を実現するホストレジスタの記述を含むホスト命令のオブジェクトコードに変換されることを特徴とする、請求項1に記載の方法。
  3. 前記解釈されたレガシー命令と同じ機能が複数のホスト命令によりレジスタを使用して実現可能なカテゴリーであると前記判断するステップにおいて判断された場合は、前記(d)のステップにおいて、前記レジスタを前記ホスト命令の実行前にスタックに保存させるためのコード及び前記スタックに保存された値を前記ホスト命令の実行後に前記レジスタに再記憶させるためのコードを更に含む前記命令ハンドラーを書き込むことを特徴とする、請求項1又は2に記載の方法。
  4. (e)前記解釈されたレガシー命令と同じ機能がホスト命令により実現不可能なカテゴリーであると前記判断するステップにおいて判断された場合は、前記レガシー命令と同じ機能を実現可能な高水準言語で記述された関数をアプリケーションバイナリインタフェースを用いて呼び出すためのコードを少なくとも含む命令ハンドラーを前記命令ストリームとは異なるメモリ空間に書き込むステップを更に含む、請求項1乃至3のいずれか一項に記載の方法。
JP2004109500A 2003-03-06 2004-03-05 エミュレーションコンピュータ技術を実行する直接命令 Expired - Fee Related JP4684571B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/382,598 US7219337B2 (en) 2003-03-06 2003-03-06 Direct instructions rendering emulation computer technique

Publications (3)

Publication Number Publication Date
JP2004272922A JP2004272922A (ja) 2004-09-30
JP2004272922A5 JP2004272922A5 (ja) 2007-04-19
JP4684571B2 true JP4684571B2 (ja) 2011-05-18

Family

ID=32824783

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004109500A Expired - Fee Related JP4684571B2 (ja) 2003-03-06 2004-03-05 エミュレーションコンピュータ技術を実行する直接命令

Country Status (9)

Country Link
US (1) US7219337B2 (ja)
EP (1) EP1455273A3 (ja)
JP (1) JP4684571B2 (ja)
KR (1) KR20040079851A (ja)
CN (1) CN1538291A (ja)
AU (1) AU2004200602B2 (ja)
CA (1) CA2455479A1 (ja)
RU (1) RU2004106717A (ja)
TW (1) TWI350991B (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7434209B2 (en) * 2003-07-15 2008-10-07 Transitive Limited Method and apparatus for performing native binding to execute native code
US7314491B2 (en) * 2004-12-29 2008-01-01 Bull Hn Information Systems Inc. Encapsulation of large native operating system functions as enhancements of the instruction set in an emulated central processor system
US8359585B1 (en) * 2007-01-18 2013-01-22 Advanced Testing Technologies, Inc. Instrumentation ATS/TPS mitigation utilizing I/O data stream
MX2009007876A (es) * 2007-01-24 2009-07-31 Ibm Metodo para emular eficientemente configuraciones de codigos de condiciones de arquitectura de computadora.
US8458677B2 (en) * 2009-08-20 2013-06-04 International Business Machines Corporation Generating code adapted for interlinking legacy scalar code and extended vector code
TWI420390B (zh) * 2009-11-04 2013-12-21 Nat Univ Chung Cheng Methods for extending the RISC processor scratchpad
WO2017009996A1 (ja) * 2015-07-16 2017-01-19 三菱電機株式会社 情報処理装置、情報処理方法及びプログラム
US10860322B2 (en) * 2015-10-30 2020-12-08 Arm Limited Modifying behavior of a data processing unit using rewritable behavior mappings of instructions
CN108701193B (zh) * 2016-02-12 2022-08-30 汉阳大学校产学协力团 安全半导体芯片及其工作方法
CN106126314B (zh) * 2016-06-15 2019-11-05 龙芯中科技术有限公司 扩充指令的模拟方法和装置
US9785435B1 (en) * 2016-10-27 2017-10-10 International Business Machines Corporation Floating point instruction with selectable comparison attributes
KR102351620B1 (ko) * 2020-03-13 2022-01-19 우리정보 (주) 모바일 기기를 이용한 지능형 설비관리 시스템 및 방법
CN114077424A (zh) * 2020-08-14 2022-02-22 上海芯联芯智能科技有限公司 扩展mips指令集处理器支持risc指令集多模系统的方法和装置

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62151938A (ja) * 1985-12-25 1987-07-06 Nec Corp 命令処理方式
JPS63106836A (ja) * 1986-10-24 1988-05-11 Hitachi Ltd 異ア−キテクチヤ・エミユレ−シヨン方式
JPH05181671A (ja) * 1992-01-07 1993-07-23 Kobe Nippon Denki Software Kk ソフトウェア命令のエミュレーション方式
JPH08296910A (ja) * 1995-04-25 1996-11-12 Nippon Steel Corp 圧縮気体冷媒による冷却水冷却方法
JPH09212370A (ja) * 1996-01-25 1997-08-15 Internatl Business Mach Corp <Ibm> ゲスト命令をエミュレートするプロセッサの性能改善方法及びシステム
JPH10240524A (ja) * 1997-02-27 1998-09-11 Internatl Business Mach Corp <Ibm> 異なる命令コード相互間の動的変換装置及び方法
JPH11265286A (ja) * 1998-01-05 1999-09-28 Trw Inc レガシ指令のエミュレ―ション装置及び方法
JP2001092672A (ja) * 1999-09-22 2001-04-06 Toshiba Corp 命令コード書き換え方法、命令コード書き換え装置及び情報記録媒体
JP2001142692A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
WO2003019353A1 (en) * 2001-08-23 2003-03-06 Sony Computer Entertainment Inc. System and method for processing computer instructions

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2253432A5 (ja) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US4025901A (en) * 1975-06-19 1977-05-24 Honeywell Information Systems, Inc. Database instruction find owner
US6212614B1 (en) * 1998-01-05 2001-04-03 Trw Inc. Legacy MIL-STD-1750A software emulator address translation using power PC memory management hardware
US6272453B1 (en) * 1998-01-05 2001-08-07 Trw Inc. Concurrent legacy and native code execution techniques
US6202145B1 (en) * 1998-12-14 2001-03-13 International Business Machines Corporation System and method for eliminating a ring transition while executing in protected mode
US7031990B2 (en) * 2002-12-06 2006-04-18 Sun Microsystems, Inc. Combining external and intragenerational reference-processing in a garbage collector based on the train algorithm

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62151938A (ja) * 1985-12-25 1987-07-06 Nec Corp 命令処理方式
JPS63106836A (ja) * 1986-10-24 1988-05-11 Hitachi Ltd 異ア−キテクチヤ・エミユレ−シヨン方式
JPH05181671A (ja) * 1992-01-07 1993-07-23 Kobe Nippon Denki Software Kk ソフトウェア命令のエミュレーション方式
JPH08296910A (ja) * 1995-04-25 1996-11-12 Nippon Steel Corp 圧縮気体冷媒による冷却水冷却方法
JPH09212370A (ja) * 1996-01-25 1997-08-15 Internatl Business Mach Corp <Ibm> ゲスト命令をエミュレートするプロセッサの性能改善方法及びシステム
JPH10240524A (ja) * 1997-02-27 1998-09-11 Internatl Business Mach Corp <Ibm> 異なる命令コード相互間の動的変換装置及び方法
JPH11265286A (ja) * 1998-01-05 1999-09-28 Trw Inc レガシ指令のエミュレ―ション装置及び方法
JP2001092672A (ja) * 1999-09-22 2001-04-06 Toshiba Corp 命令コード書き換え方法、命令コード書き換え装置及び情報記録媒体
JP2001142692A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
WO2003019353A1 (en) * 2001-08-23 2003-03-06 Sony Computer Entertainment Inc. System and method for processing computer instructions

Also Published As

Publication number Publication date
US7219337B2 (en) 2007-05-15
EP1455273A2 (en) 2004-09-08
TWI350991B (en) 2011-10-21
TW200428288A (en) 2004-12-16
CN1538291A (zh) 2004-10-20
EP1455273A3 (en) 2006-12-06
KR20040079851A (ko) 2004-09-16
RU2004106717A (ru) 2005-08-10
CA2455479A1 (en) 2004-09-06
JP2004272922A (ja) 2004-09-30
AU2004200602B2 (en) 2011-02-10
US20040177346A1 (en) 2004-09-09
AU2004200602A1 (en) 2004-09-23

Similar Documents

Publication Publication Date Title
US8423976B2 (en) Extreme pipeline and optimized reordering technology
US5339238A (en) Register usage tracking in translating code for different machine architectures by forward and reverse tracing through the program flow graph
US5598560A (en) Tracking condition codes in translation code for different machine architectures
US5652889A (en) Alternate execution and interpretation of computer program having code at unknown locations due to transfer instructions having computed destination addresses
KR100463810B1 (ko) 어드레스되는 구성요소의 물리적 특성에 관한 추측 실패를 검출하는 마이크로프로세서용 메모리 제어기
US7210133B2 (en) Program code conversion
US5307492A (en) Mapping assembly language argument list references in translating code for different machine architectures
US7243213B2 (en) Process for translating instructions for an arm-type processor into instructions for a LX-type processor; relative translator device and computer program product
JP4485198B2 (ja) Javaアクセラレータを備えたプロセッサシステム
JP3786644B2 (ja) バイトコンパイルされたJava(R)コードを実行するためのマイクロプロセッサ
JP4684571B2 (ja) エミュレーションコンピュータ技術を実行する直接命令
EP0531522A1 (en) Cross-image referencing of program code
CN104335168A (zh) 分支预测预加载
WO2021036173A1 (zh) 解释执行字节码指令流的方法及装置
JP4799016B2 (ja) 機能を呼び出す方法と装置
EP0731409B1 (en) Method and apparatus for computer code processing in a code translator
KR100522468B1 (ko) 타겟 프로세서의 상태를 일시적으로 홀딩하는 장치를 갖는 호스트 마이크로프로세서
US6792600B1 (en) Method and apparatus for just in time compilation of instructions
US7314491B2 (en) Encapsulation of large native operating system functions as enhancements of the instruction set in an emulated central processor system
Andrea et al. Process for translating instructions for an arm-type processor into instructions for a LX-type processor; relative translator device and computer program product

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070301

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070301

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100621

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20100705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100705

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100917

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101221

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

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

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

Free format text: PAYMENT UNTIL: 20140218

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4684571

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

LAPS Cancellation because of no payment of annual fees