JPH0926876A - マルチプラットフォーム・ステートレス命令セット・アーキテクチャのための方法および装置 - Google Patents
マルチプラットフォーム・ステートレス命令セット・アーキテクチャのための方法および装置Info
- Publication number
- JPH0926876A JPH0926876A JP7305194A JP30519495A JPH0926876A JP H0926876 A JPH0926876 A JP H0926876A JP 7305194 A JP7305194 A JP 7305194A JP 30519495 A JP30519495 A JP 30519495A JP H0926876 A JPH0926876 A JP H0926876A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- isa
- processor
- native
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【課題】 複数の、通常は互換性のない命令セット・ア
ーキテクチャ用に作成された命令を、単一の新しい統一
アーキテクチャで実行することができるようにする。 【解決手段】 プロセッサは実行のための命令を受け取
ると、命令を検査して、ISAタグから、命令がどの元
のネイティブISAに対応しているかを判断する。対応
するISAがプロセッサのネイティブVLIW ISA
である場合、命令はプロセッサの命令ディスパッチユニ
ットに送られ、次に実行のために少なくとも1つの機能
ユニットに送られる。対応するISAがネイティブVL
IW ISAではない場合、命令は複数の動的復号ユニ
ット(DDU)の1つに送られる。各DDUは命令を非
ネイティブISAからネイティブVLIW ISAに変
換する変換ルーチンによって制御される。
ーキテクチャ用に作成された命令を、単一の新しい統一
アーキテクチャで実行することができるようにする。 【解決手段】 プロセッサは実行のための命令を受け取
ると、命令を検査して、ISAタグから、命令がどの元
のネイティブISAに対応しているかを判断する。対応
するISAがプロセッサのネイティブVLIW ISA
である場合、命令はプロセッサの命令ディスパッチユニ
ットに送られ、次に実行のために少なくとも1つの機能
ユニットに送られる。対応するISAがネイティブVL
IW ISAではない場合、命令は複数の動的復号ユニ
ット(DDU)の1つに送られる。各DDUは命令を非
ネイティブISAからネイティブVLIW ISAに変
換する変換ルーチンによって制御される。
Description
【0001】
【発明の属する技術分野】本発明は、コンピュータ処理
装置で実施され、複数の異なる命令セット・アーキテク
チャ(ISA)に準拠する命令を実行するシステムに関
し、具体的には様々なISAの前記命令をステートレス
で実行する処理装置に係わる。
装置で実施され、複数の異なる命令セット・アーキテク
チャ(ISA)に準拠する命令を実行するシステムに関
し、具体的には様々なISAの前記命令をステートレス
で実行する処理装置に係わる。
【0002】
【従来の技術】2進変換またはエミュレーションによっ
て様々なタイプの命令に対応することができる複数IS
Aプラットフォームがいくつか提案されている。2進変
換を使用すると、特定の命令セット・アーキテクチャB
(たとえばx86プロセッサ用)に準拠する命令を、ま
ずISA Aが理解する命令に2進変換することによっ
て、第2の命令セット・アーキテクチャA(たとえばS
PARC/IEEE標準1754プロセッサ用ISAに
準拠したもの)で実行することができる。次にそれらの
命令を、もともとISA A用に作成された命令である
かのように実行する。
て様々なタイプの命令に対応することができる複数IS
Aプラットフォームがいくつか提案されている。2進変
換を使用すると、特定の命令セット・アーキテクチャB
(たとえばx86プロセッサ用)に準拠する命令を、ま
ずISA Aが理解する命令に2進変換することによっ
て、第2の命令セット・アーキテクチャA(たとえばS
PARC/IEEE標準1754プロセッサ用ISAに
準拠したもの)で実行することができる。次にそれらの
命令を、もともとISA A用に作成された命令である
かのように実行する。
【0003】この手法は、ISA B用のプログラムの
一部をISA−Aプロセッサで実行する場合であって
も、その前にまずプログラム全体を2進変換しなければ
ならないという点で、かなりのオーバーヘッドが伴う。
これによって、ユーザが命令を処理できるまでに遅延が
生ずるだけでなく、命令の処理を拘束し、2進変換が完
了するまでターゲット・プロセッサが使用不能になる。
さらに、所与の時間に変換中のコードの小部分のみを必
要とする場合、その部分にアクセスするまでにコード全
体を変換しなければならないという点で非常に非効率的
である。
一部をISA−Aプロセッサで実行する場合であって
も、その前にまずプログラム全体を2進変換しなければ
ならないという点で、かなりのオーバーヘッドが伴う。
これによって、ユーザが命令を処理できるまでに遅延が
生ずるだけでなく、命令の処理を拘束し、2進変換が完
了するまでターゲット・プロセッサが使用不能になる。
さらに、所与の時間に変換中のコードの小部分のみを必
要とする場合、その部分にアクセスするまでにコード全
体を変換しなければならないという点で非常に非効率的
である。
【0004】さらに、2進変換は元の命令をコピーする
ことを必要とし、ユーザのライセンスまたはユーザが変
換を行う地域の法律によってコピーが許されている場合
と禁止されている場合がある。さらに、変換された命令
を記憶しなければならないため、ユーザはコードの2つ
のコピーを保存することを余儀なくされる。変換された
コピーを廃棄する場合は、そのコードを後で使用するた
めに、ISA−プロセッサ上で実行するように再度変換
しなければならない。
ことを必要とし、ユーザのライセンスまたはユーザが変
換を行う地域の法律によってコピーが許されている場合
と禁止されている場合がある。さらに、変換された命令
を記憶しなければならないため、ユーザはコードの2つ
のコピーを保存することを余儀なくされる。変換された
コピーを廃棄する場合は、そのコードを後で使用するた
めに、ISA−プロセッサ上で実行するように再度変換
しなければならない。
【0005】ISA Aを使用するシステムでISA
B用に作成されたコードを実行する他の手法としてはエ
ミュレーションがある。これは、ソフトウェア・エミュ
レーションとハードウェア・エミュレーションのいずれ
かである。ソフトウェア・エミュレーションでは、通常
であればISA A用プロセッサで認識しない命令を入
力し、それを同等のISA−A命令に変換し、同等の命
令をAプロセッサで実行する必要がある。これは、Aプ
ロセッサのモードをISA Bをエミュレートするよう
に設定し、ISA−B命令を実行し、次にAプロセッサ
を再びAモード、すなわちネイティブISAにリセット
することによって行う。
B用に作成されたコードを実行する他の手法としてはエ
ミュレーションがある。これは、ソフトウェア・エミュ
レーションとハードウェア・エミュレーションのいずれ
かである。ソフトウェア・エミュレーションでは、通常
であればISA A用プロセッサで認識しない命令を入
力し、それを同等のISA−A命令に変換し、同等の命
令をAプロセッサで実行する必要がある。これは、Aプ
ロセッサのモードをISA Bをエミュレートするよう
に設定し、ISA−B命令を実行し、次にAプロセッサ
を再びAモード、すなわちネイティブISAにリセット
することによって行う。
【0006】モード変更は、プロセッサ(またはソフト
ウェア・エミュレーション・プログラム)に対して、次
に続くデータ・ブロック(モードのリセットまで)をI
SA−B命令として解釈するように命令する特別なプロ
グラムによって行われる。たとえば、SPARCプロセ
ッサに対して、次に続くデータ・ブロックが実際にはx
86命令を含むことを伝える。SPARCプロセッサ
は、各データ・ワードを1つずつ命令として解釈する。
そのデータ・ブロックを命令として実行し終わると、モ
ード設定プログラムがプロセッサのモードをそのネイテ
ィブ(たとえばSPARC)モードにリセットする。
ウェア・エミュレーション・プログラム)に対して、次
に続くデータ・ブロック(モードのリセットまで)をI
SA−B命令として解釈するように命令する特別なプロ
グラムによって行われる。たとえば、SPARCプロセ
ッサに対して、次に続くデータ・ブロックが実際にはx
86命令を含むことを伝える。SPARCプロセッサ
は、各データ・ワードを1つずつ命令として解釈する。
そのデータ・ブロックを命令として実行し終わると、モ
ード設定プログラムがプロセッサのモードをそのネイテ
ィブ(たとえばSPARC)モードにリセットする。
【0007】このようにしてISA−B命令を正常に実
行することができるが、これは、特にモード変更のオー
バーヘッドが重大な量となるコードの短いセクションの
場合には、非効率的で時間のかかる手法であり、ISA
−A命令とISA−B命令とをコードの1つのブロック
内で混在させることはできない。すなわち、異なるIS
A用のコードが現れるたびに、Aプロセッサのモードを
リセットしなければならず、必然的にかなりのサイクル
タイム・オーバーヘッドが生ずる。プロセッサAでのI
SA−Bコードの実行中に、ネイティブISA−A命令
の実行を必要とする割込みを受け取った場合には特にそ
うである。その場合、ISA−A命令をトラップしてI
SA−Bコードの実行を中断しなければならず、システ
ムは正しいモードになっているかどうかを検査し、正し
いモードではないためにモードをモードAにリセットし
なければならない。次に、トラップした命令を実行した
後、システムはモードBにリセットしてISA−Bコー
ドの実行を再開する。これは法外なサイクル数を消費す
る。
行することができるが、これは、特にモード変更のオー
バーヘッドが重大な量となるコードの短いセクションの
場合には、非効率的で時間のかかる手法であり、ISA
−A命令とISA−B命令とをコードの1つのブロック
内で混在させることはできない。すなわち、異なるIS
A用のコードが現れるたびに、Aプロセッサのモードを
リセットしなければならず、必然的にかなりのサイクル
タイム・オーバーヘッドが生ずる。プロセッサAでのI
SA−Bコードの実行中に、ネイティブISA−A命令
の実行を必要とする割込みを受け取った場合には特にそ
うである。その場合、ISA−A命令をトラップしてI
SA−Bコードの実行を中断しなければならず、システ
ムは正しいモードになっているかどうかを検査し、正し
いモードではないためにモードをモードAにリセットし
なければならない。次に、トラップした命令を実行した
後、システムはモードBにリセットしてISA−Bコー
ドの実行を再開する。これは法外なサイクル数を消費す
る。
【0008】ハードウェア・エミュレーションは、1つ
または複数の動的復号ユニット(ネイティブ・プロセッ
サの内蔵部品とするか、またはアドオン・モジュールと
することができる)を使用して、ソフトウェア・エミュ
レーションよりも高速で実行することができる。従来の
ハードウェア・エミュレーションは、ソフトウェア・エ
ミュレーションと同様に、モード設定プログラムを使用
して、所与の命令セットがどのタイプのISAをエミュ
レートするかをプロセッサが知り、命令を適切な動的復
号ユニットに送ることができるようになっている。実行
速度は速くなるが、モードのリセットと、トラップと、
割込みというオーバーヘッド非効率要素はソフトウェア
・エミュレーションの場合と同じである。
または複数の動的復号ユニット(ネイティブ・プロセッ
サの内蔵部品とするか、またはアドオン・モジュールと
することができる)を使用して、ソフトウェア・エミュ
レーションよりも高速で実行することができる。従来の
ハードウェア・エミュレーションは、ソフトウェア・エ
ミュレーションと同様に、モード設定プログラムを使用
して、所与の命令セットがどのタイプのISAをエミュ
レートするかをプロセッサが知り、命令を適切な動的復
号ユニットに送ることができるようになっている。実行
速度は速くなるが、モードのリセットと、トラップと、
割込みというオーバーヘッド非効率要素はソフトウェア
・エミュレーションの場合と同じである。
【0009】複数命令セット・アーキテクチャに対応す
るその他の手法は、増分コンパイル、すなわち1回にプ
ログラムの一部をコンパイルする方法である。これは、
プログラムの1部分だけを必要とする場合にプログラム
全体をコンパイルする必要がなく、所与の設定でコンパ
イル時間をかなり節約することができるという利点があ
る。この手法は、コードを修正するたびに再コンパイル
しなければならないため、自己修正コードが効率的に処
理されないという明らかな欠点がある。
るその他の手法は、増分コンパイル、すなわち1回にプ
ログラムの一部をコンパイルする方法である。これは、
プログラムの1部分だけを必要とする場合にプログラム
全体をコンパイルする必要がなく、所与の設定でコンパ
イル時間をかなり節約することができるという利点があ
る。この手法は、コードを修正するたびに再コンパイル
しなければならないため、自己修正コードが効率的に処
理されないという明らかな欠点がある。
【0010】同じ命令が繰り返し実行されるループで
は、ソフトウェア・エミュレーションまたはハードウェ
ア・エミュレーションを行うと、エミュレーション・プ
ロシージャはコマンドが現れるたびに各コマンドを新た
に解釈するため、同じコード・ブロックが何度も再コン
パイルされることになる。増分コンパイルは、コードの
自己修正が起こったとき、同じコンパイルが繰り返され
る可能性がある。このコンパイルの反復は相当なプロセ
ッサ・サイクルの無駄である。
は、ソフトウェア・エミュレーションまたはハードウェ
ア・エミュレーションを行うと、エミュレーション・プ
ロシージャはコマンドが現れるたびに各コマンドを新た
に解釈するため、同じコード・ブロックが何度も再コン
パイルされることになる。増分コンパイルは、コードの
自己修正が起こったとき、同じコンパイルが繰り返され
る可能性がある。このコンパイルの反復は相当なプロセ
ッサ・サイクルの無駄である。
【0011】
【発明が解決しようとする課題】SPARC、x86、
PowerPCの各ISAおよびそれぞれのオペレーテ
ィング・システム(Solaris、DOS、MacO
S)など、市場における複数命令セット・アーキテクチ
ャの絶え間のない開発により、ユーザがこれらの様々な
命令セット・アーキテクチャ用に開発されたアプリケー
ションを単一のハードウェア・プラットフォーム上で、
不要な命令ブロックのコンパイルや、命令の非効率的な
複数回コンパイル、モード設定に伴うオーバーヘッドが
ない方式で実行できることがますます重要になってい
る。複数命令セット・アーキテクチャに効率的に対応で
きるだけでなく、異なる命令セットの命令が入ったプロ
シージャを混在させることができることによって、様々
なISA用に作成された多くのプログラムのうち最良の
ものを利用することができるシステムがあれば、特に有
用であろう。
PowerPCの各ISAおよびそれぞれのオペレーテ
ィング・システム(Solaris、DOS、MacO
S)など、市場における複数命令セット・アーキテクチ
ャの絶え間のない開発により、ユーザがこれらの様々な
命令セット・アーキテクチャ用に開発されたアプリケー
ションを単一のハードウェア・プラットフォーム上で、
不要な命令ブロックのコンパイルや、命令の非効率的な
複数回コンパイル、モード設定に伴うオーバーヘッドが
ない方式で実行できることがますます重要になってい
る。複数命令セット・アーキテクチャに効率的に対応で
きるだけでなく、異なる命令セットの命令が入ったプロ
シージャを混在させることができることによって、様々
なISA用に作成された多くのプログラムのうち最良の
ものを利用することができるシステムがあれば、特に有
用であろう。
【0012】
【課題を解決するための手段】本発明は、複数の、通常
は互換性のない命令セット・アーキテクチャ用に作成さ
れた命令を、単一の新しい統一アーキテクチャで実行す
ることができるようにする。所与の32ビット・アーキ
テクチャ用の命令を、「外来」コードのネイティブIS
Aを示すISAタグを構成する所定のビット・ブロック
が含まれたもう1つの32ビット・ワード、すなわちコ
ードが書き込まれた32ビット命令セット・アーキテク
チャと結合する。この64ビット命令ストリーム全体を
「ホーム」プロセッサが受け取り、そのISAタグに従
って各命令を実行する。
は互換性のない命令セット・アーキテクチャ用に作成さ
れた命令を、単一の新しい統一アーキテクチャで実行す
ることができるようにする。所与の32ビット・アーキ
テクチャ用の命令を、「外来」コードのネイティブIS
Aを示すISAタグを構成する所定のビット・ブロック
が含まれたもう1つの32ビット・ワード、すなわちコ
ードが書き込まれた32ビット命令セット・アーキテク
チャと結合する。この64ビット命令ストリーム全体を
「ホーム」プロセッサが受け取り、そのISAタグに従
って各命令を実行する。
【0013】したがって、ホーム・プロセッサは64ビ
ット命令セット・アーキテクチャを使用し、前述のよう
にして任意の32ビット・アーキテクチャの命令を、再
コンパイルやソフトウェア・エミュレーションなしでリ
アルタイムで実行することができる。これによって、前
述の方法に関するオーバーヘッドが減少するほか、プロ
グラマーは、インポートされる各コード・ブロックに適
切なタグを付けるだけで、1つのアプリケーションで複
数のISAのサブルーチン、ソフトウェア・モジュー
ル、およびオブジェクトを自由に利用することができ
る。本発明は、VLIW(超長命令語)アーキテクチャ
に特に適しており、このアーキテクチャによって真のス
テートレス複数ISAシステムが実現される。
ット命令セット・アーキテクチャを使用し、前述のよう
にして任意の32ビット・アーキテクチャの命令を、再
コンパイルやソフトウェア・エミュレーションなしでリ
アルタイムで実行することができる。これによって、前
述の方法に関するオーバーヘッドが減少するほか、プロ
グラマーは、インポートされる各コード・ブロックに適
切なタグを付けるだけで、1つのアプリケーションで複
数のISAのサブルーチン、ソフトウェア・モジュー
ル、およびオブジェクトを自由に利用することができ
る。本発明は、VLIW(超長命令語)アーキテクチャ
に特に適しており、このアーキテクチャによって真のス
テートレス複数ISAシステムが実現される。
【0014】
【発明の実施の形態】本発明のシステムは、プロセッサ
30とメモリ40を有する中央演算処理装置(CPU)
20を備えた図1に示すシステム10のような既存のコ
ンピュータ・システムで実施するように設計されてい
る。通常、たとえばディスク・ドライブやテープドライ
ブ、CD−ROMなど、記憶媒体50のような1つまた
は複数の記憶媒体を使用する。CPU20には命令ロー
ダ65を介して入出力装置60が接続されており、これ
にはキーボード、モニタ、マウスなどの入出力周辺装置
が含まれる。したがって本発明のシステムは、後述の例
外を除き、従来のハードウェアを使用して実施すること
ができる。
30とメモリ40を有する中央演算処理装置(CPU)
20を備えた図1に示すシステム10のような既存のコ
ンピュータ・システムで実施するように設計されてい
る。通常、たとえばディスク・ドライブやテープドライ
ブ、CD−ROMなど、記憶媒体50のような1つまた
は複数の記憶媒体を使用する。CPU20には命令ロー
ダ65を介して入出力装置60が接続されており、これ
にはキーボード、モニタ、マウスなどの入出力周辺装置
が含まれる。したがって本発明のシステムは、後述の例
外を除き、従来のハードウェアを使用して実施すること
ができる。
【0015】本明細書では、本発明について、1つのプ
ラットフォームで複数の異なる命令セット・アーキテク
チャ用に作成された命令をステートレスに実行する実施
形態、具体的には、64ビット・プラットフォームで3
2ビット命令を実行する実施形態で説明する。元の非ネ
イティブ命令セット・アーキテクチャよりも長い命令を
使用して、1つのプラットフォーム上でのどのような命
令セットの実行にも等しく適用可能である。これは、元
のサイズが異なる様々なセットであっても可能である。
本発明は、メモリ40に記憶されているオペレーティン
グ・システム、すなわち、後述する方法の各ステップを
実行するためにメモリに記憶された制御命令、一連の命
令、あるいは1つまたは複数の制御命令を含むプログラ
ム・モジュールの形態で実施するのが最もよい。本明細
書では、「制御モジュール」とは、本発明の1つまたは
複数のステップを実行するために構成された、任意のプ
ログラム、命令のセット、プログラム・ルーチンなどを
指す(図7を参照)。
ラットフォームで複数の異なる命令セット・アーキテク
チャ用に作成された命令をステートレスに実行する実施
形態、具体的には、64ビット・プラットフォームで3
2ビット命令を実行する実施形態で説明する。元の非ネ
イティブ命令セット・アーキテクチャよりも長い命令を
使用して、1つのプラットフォーム上でのどのような命
令セットの実行にも等しく適用可能である。これは、元
のサイズが異なる様々なセットであっても可能である。
本発明は、メモリ40に記憶されているオペレーティン
グ・システム、すなわち、後述する方法の各ステップを
実行するためにメモリに記憶された制御命令、一連の命
令、あるいは1つまたは複数の制御命令を含むプログラ
ム・モジュールの形態で実施するのが最もよい。本明細
書では、「制御モジュール」とは、本発明の1つまたは
複数のステップを実行するために構成された、任意のプ
ログラム、命令のセット、プログラム・ルーチンなどを
指す(図7を参照)。
【0016】図2に、それぞれが1つまたは複数の制御
命令を含んだ制御命令、一連の制御命令、またはプログ
ラム・モジュール70ないし78の、これらは32ビッ
トの命令である、プロセッサ80への流れを図示する。
前述のように、プロセッサ80のネイティブISA用に
作成された命令でない場合、これらの命令を実行するに
はいくつかの異なる方法がある。命令70ないし78の
上下の点は、所与のプログラム、ルーチン、または同様
のものの中には一般にさらに多くの命令があることを示
している。
命令を含んだ制御命令、一連の制御命令、またはプログ
ラム・モジュール70ないし78の、これらは32ビッ
トの命令である、プロセッサ80への流れを図示する。
前述のように、プロセッサ80のネイティブISA用に
作成された命令でない場合、これらの命令を実行するに
はいくつかの異なる方法がある。命令70ないし78の
上下の点は、所与のプログラム、ルーチン、または同様
のものの中には一般にさらに多くの命令があることを示
している。
【0017】図3に、本発明のプロセッサ90に送られ
る、命令70ないし78が変形された命令70Aないし
78Aの流れを図示する。各命令には、図3ではビット
32ないし63として図示されている追加の32ビット
が付加されている。実施形態に示すように、上位3ビッ
ト(またはその他の所望のビット数)は、各命令のネイ
ティブISAを示すタグを構成する。3ビットによっ
て、8つの異なる命令セット・アーキテクチャが識別さ
れるため、タグT0ないしT8(それぞれ命令70Aな
いし78Aに対応する)のビット数は、対応する命令セ
ット・アーキテクチャの数によって異なる。
る、命令70ないし78が変形された命令70Aないし
78Aの流れを図示する。各命令には、図3ではビット
32ないし63として図示されている追加の32ビット
が付加されている。実施形態に示すように、上位3ビッ
ト(またはその他の所望のビット数)は、各命令のネイ
ティブISAを示すタグを構成する。3ビットによっ
て、8つの異なる命令セット・アーキテクチャが識別さ
れるため、タグT0ないしT8(それぞれ命令70Aな
いし78Aに対応する)のビット数は、対応する命令セ
ット・アーキテクチャの数によって異なる。
【0018】図4(図5も参照)のボックス100で、
プロセッサ90が命令を受け取ると、命令は命令ルータ
205に受け入れられ、それがネイティブISA(この
例ではVLIWなど)の命令である場合、命令ルータは
命令ディスパッチユニット200に直接送られる。受け
取った命令が、DDUを使用することができる所定のい
くつかのISAのうちの1つに関係する命令である場合
は、命令ルータ205によって適切なDDUに送られ、
命令ディスパッチユニット200が認識することができ
る命令に変換される。いずれの場合も、命令は次に、実
行のために適切な機能ユニット(280など)に送られ
る。機能ユニット(ここでは例示のためにそのうちの3
つが示されているが、任意の数とすることができる)と
しては、浮動小数点ユニット、フェッチユニット、分岐
ユニット、算術演算ユニットなどがある。
プロセッサ90が命令を受け取ると、命令は命令ルータ
205に受け入れられ、それがネイティブISA(この
例ではVLIWなど)の命令である場合、命令ルータは
命令ディスパッチユニット200に直接送られる。受け
取った命令が、DDUを使用することができる所定のい
くつかのISAのうちの1つに関係する命令である場合
は、命令ルータ205によって適切なDDUに送られ、
命令ディスパッチユニット200が認識することができ
る命令に変換される。いずれの場合も、命令は次に、実
行のために適切な機能ユニット(280など)に送られ
る。機能ユニット(ここでは例示のためにそのうちの3
つが示されているが、任意の数とすることができる)と
しては、浮動小数点ユニット、フェッチユニット、分岐
ユニット、算術演算ユニットなどがある。
【0019】受け取った命令の適切な経路指定は次のよ
うにして行われる。ルータ205で命令が受け取られる
と、それに対応するタグが読み取られ、その命令のネイ
ティブISAが判断される(ボックス110および12
0参照)。タグは事前割り当てされた意味を有する。た
とえば、000はプロセッサ90による変換が不要なネ
イティブ・プロセッサのISAを指すものとすることが
できる。表1にコード体系例を示す。 表1コード ネイティブ・プロセッサ 000 VLIW 001 SPARC 010 PowerPC 011 x86 100 (プロセッサ5) 101 (プロセッサ6) 110 (プロセッサ7) 111 (プロセッサ8)
うにして行われる。ルータ205で命令が受け取られる
と、それに対応するタグが読み取られ、その命令のネイ
ティブISAが判断される(ボックス110および12
0参照)。タグは事前割り当てされた意味を有する。た
とえば、000はプロセッサ90による変換が不要なネ
イティブ・プロセッサのISAを指すものとすることが
できる。表1にコード体系例を示す。 表1コード ネイティブ・プロセッサ 000 VLIW 001 SPARC 010 PowerPC 011 x86 100 (プロセッサ5) 101 (プロセッサ6) 110 (プロセッサ7) 111 (プロセッサ8)
【0020】プロセッサ90が命令70Aを受け取ると
(図3および図5参照)、プロセッサは、その命令が、
この例ではネイティブVLIW命令、すなわちシステム
のVLIWプロセッサ用とコードされた命令であると判
断する。図4のボックス130を参照されたい。命令7
0Aは、図4のボックス135で示すようにルータ20
5(図5参照)によって命令ディスパッチユニット20
0に送られ、実行のために適切な機能ユニット280、
290、または300に送られる(ボックス160)。
(図3および図5参照)、プロセッサは、その命令が、
この例ではネイティブVLIW命令、すなわちシステム
のVLIWプロセッサ用とコードされた命令であると判
断する。図4のボックス130を参照されたい。命令7
0Aは、図4のボックス135で示すようにルータ20
5(図5参照)によって命令ディスパッチユニット20
0に送られ、実行のために適切な機能ユニット280、
290、または300に送られる(ボックス160)。
【0021】次にシステムは、追加の命令があるかどう
かを判断し(ボックス170)、ある場合には、次の命
令が読み取られ(ボックス180)、ステップ110に
戻って次の命令のタグが読み取られる。
かを判断し(ボックス170)、ある場合には、次の命
令が読み取られ(ボックス180)、ステップ110に
戻って次の命令のタグが読み取られる。
【0022】次の命令は、この時点では命令71Aであ
り、ネイティブVLIWプロセッサ用にコードされてい
るものと判断され、したがって命令70Aと同様にして
実行される。これは命令72Aについても行われ、次に
命令73Aが現れると、そのタグがステップ110で前
述のように読み取られる。
り、ネイティブVLIWプロセッサ用にコードされてい
るものと判断され、したがって命令70Aと同様にして
実行される。これは命令72Aについても行われ、次に
命令73Aが現れると、そのタグがステップ110で前
述のように読み取られる。
【0023】ステップ120で、命令73Aのネイティ
ブISAがサン・マイクロシステムズ社のSPARC
ISAであることが判断される。したがってこ今度はス
テップ132に進み、識別されたISAのDDUがシス
テムに組み込まれているかどうかが判断される。答えが
肯定の場合ステップ140に進む。否定の場合はステッ
プ134に進み、トラップされてソフトウェア・エミュ
レーション・ステップでエミュレートされる。
ブISAがサン・マイクロシステムズ社のSPARC
ISAであることが判断される。したがってこ今度はス
テップ132に進み、識別されたISAのDDUがシス
テムに組み込まれているかどうかが判断される。答えが
肯定の場合ステップ140に進む。否定の場合はステッ
プ134に進み、トラップされてソフトウェア・エミュ
レーション・ステップでエミュレートされる。
【0024】この例で、システムに適切なDDUが存在
するものとすると、命令はルータ205によってその適
切な動的復号ユニット210ないし270に送られる。
3ビットのタグによって対応することができる1個のネ
イティブ・プロセッサと7個の「非ネイティブ」プロセ
ッサの場合、7個の動的復号ユニット(DDU)が存在
することが可能になる。この実施形態の動的復号ユニッ
トの数が7個より少ない場合、残りのISAはトラップ
してソフトウェアでエミュレートすることができ、した
がってハードウェア実行速度とオンチップ資源の経済性
との間で効果的なトレードオフが可能になる。この特徴
については以下で詳しく説明する。
するものとすると、命令はルータ205によってその適
切な動的復号ユニット210ないし270に送られる。
3ビットのタグによって対応することができる1個のネ
イティブ・プロセッサと7個の「非ネイティブ」プロセ
ッサの場合、7個の動的復号ユニット(DDU)が存在
することが可能になる。この実施形態の動的復号ユニッ
トの数が7個より少ない場合、残りのISAはトラップ
してソフトウェアでエミュレートすることができ、した
がってハードウェア実行速度とオンチップ資源の経済性
との間で効果的なトレードオフが可能になる。この特徴
については以下で詳しく説明する。
【0025】DDUの機能は、受け取った命令を、ネイ
ティブ・プロセッサ90が認識できる命令に変換するこ
とである。これには、命令を非ネイティブISAからネ
イティブISAに1対1で変換し(これは参照テーブル
によって行うことができる)、複合命令をいくつかのネ
イティブISA命令に変換し(たとえば複合x86命令
はいくつかのVLIW命令に変換することができる)、
非ネイティブISAの条件コードをネイティブISAの
条件コードとして実行することなどが必要である。様々
なISA用のアプリケーションを開発する当業者なら、
このようなDDUを簡単に実施することができよう。
ティブ・プロセッサ90が認識できる命令に変換するこ
とである。これには、命令を非ネイティブISAからネ
イティブISAに1対1で変換し(これは参照テーブル
によって行うことができる)、複合命令をいくつかのネ
イティブISA命令に変換し(たとえば複合x86命令
はいくつかのVLIW命令に変換することができる)、
非ネイティブISAの条件コードをネイティブISAの
条件コードとして実行することなどが必要である。様々
なISA用のアプリケーションを開発する当業者なら、
このようなDDUを簡単に実施することができよう。
【0026】本発明で実行される機能およびステップ
は、前述のように、メモリ40(図7参照)に記憶され
た個別の対話型命令制御モジュールとして実施されるの
が好ましい。図7に示すモジュールの機能は以下の説明
から明らかになろう。数個のモジュールを結合して1つ
のモジュールとすることができ、本発明の個別に識別可
能な任意の機能のために必要であればその他のモジュー
ルも組み込むことができる。
は、前述のように、メモリ40(図7参照)に記憶され
た個別の対話型命令制御モジュールとして実施されるの
が好ましい。図7に示すモジュールの機能は以下の説明
から明らかになろう。数個のモジュールを結合して1つ
のモジュールとすることができ、本発明の個別に識別可
能な任意の機能のために必要であればその他のモジュー
ルも組み込むことができる。
【0027】したがって、図4のボックス140で、命
令73AをDDU1などの適切なDDU(図5の21
0)に送るべきかどうかが判断される。図4のボックス
150で、DDU1への命令の送信と、DDU1での解
釈が示されている。DDU1は、命令を1つまたは複数
のVLIW命令に変換し、図4のボックス135に示さ
れているように命令ディスパッチユニット200(図
5)に渡す。ディスパッチユニット200は必要に応じ
て、命令を実行のために適切な機能ユニットに渡す(ボ
ックス160)。
令73AをDDU1などの適切なDDU(図5の21
0)に送るべきかどうかが判断される。図4のボックス
150で、DDU1への命令の送信と、DDU1での解
釈が示されている。DDU1は、命令を1つまたは複数
のVLIW命令に変換し、図4のボックス135に示さ
れているように命令ディスパッチユニット200(図
5)に渡す。ディスパッチユニット200は必要に応じ
て、命令を実行のために適切な機能ユニットに渡す(ボ
ックス160)。
【0028】ボックス170で、命令ストリーム内に追
加の命令があることがわかり、ステップ180に進んで
命令74Aが読み取られる。ボックス110でそのタグ
が読み取られ、この場合もSPARC命令であると判断
される。すなわち、そのタグ「001」(図3)から、
DDU1に送るべきであると判断される。
加の命令があることがわかり、ステップ180に進んで
命令74Aが読み取られる。ボックス110でそのタグ
が読み取られ、この場合もSPARC命令であると判断
される。すなわち、そのタグ「001」(図3)から、
DDU1に送るべきであると判断される。
【0029】次の2つの命令75Aおよび76Aはネイ
ティブVLIW命令(コード「000」を有する)であ
り、したがって命令ルータ205は命令ディスパッチユ
ニット200に渡す。命令77Aは、「110」という
タグによってx86プロセッサ(前記の表1参照)に属
するものであることがわかり、ルータ205によって適
切なDDU、たとえばDDU3(図5の230)に送ら
れる。
ティブVLIW命令(コード「000」を有する)であ
り、したがって命令ルータ205は命令ディスパッチユ
ニット200に渡す。命令77Aは、「110」という
タグによってx86プロセッサ(前記の表1参照)に属
するものであることがわかり、ルータ205によって適
切なDDU、たとえばDDU3(図5の230)に送ら
れる。
【0030】命令78AもネイティブVLIWコマンド
であることがわかり、ディスパッチユニット200(図
5参照)に直接送られる。それ以降の命令もそれぞれ同
様にして扱われる。
であることがわかり、ディスパッチユニット200(図
5参照)に直接送られる。それ以降の命令もそれぞれ同
様にして扱われる。
【0031】このシステムによって、任意の多数の命令
セット・アーキテクチャ用に作成されたコードの命令を
動的に(リアルタイムで)実行する真にステートレスな
方式が実現されることがわかる。これによって、プログ
ラマーは1つのアプリケーションで様々なISAのルー
チン、モジュール、およびオブジェクトを使用して、き
わめて柔軟性のある方式で、所望の場合は行単位で、ア
プリケーションを作成することができる。そのように作
成した場合、実行時に処理上の不利はなく、事前コンパ
イルまたはモード設定に伴うオーバーヘッドもない。
セット・アーキテクチャ用に作成されたコードの命令を
動的に(リアルタイムで)実行する真にステートレスな
方式が実現されることがわかる。これによって、プログ
ラマーは1つのアプリケーションで様々なISAのルー
チン、モジュール、およびオブジェクトを使用して、き
わめて柔軟性のある方式で、所望の場合は行単位で、ア
プリケーションを作成することができる。そのように作
成した場合、実行時に処理上の不利はなく、事前コンパ
イルまたはモード設定に伴うオーバーヘッドもない。
【0032】図5の命令ルータ205、命令ディスパッ
チユニット200、DDU210ないし270および機
能ユニット280ないし300は、通常はプロセッサ9
0の内蔵部品となる。しかし、ユーザの選択システム・
アーキテクチャによっては、これらのいずれも別個の要
素として設計することができる。本明細書では、これら
がプロセッサの内蔵部品であるか、特定の場合には主プ
ロセッサとは別個のモジュールであるかを問わず、これ
らを一般にプロセッサに「結合された」ハードウェア・
モジュールと呼ぶ。後述するように、ルータ205およ
びユニット200ないし300はすべて、メモリに記憶
されている命令または命令モジュールによって制御され
る。これらの命令または命令モジュールは、着信命令を
必要に応じて受信、検査、経路指定、変換およびその他
の方法で操作する。
チユニット200、DDU210ないし270および機
能ユニット280ないし300は、通常はプロセッサ9
0の内蔵部品となる。しかし、ユーザの選択システム・
アーキテクチャによっては、これらのいずれも別個の要
素として設計することができる。本明細書では、これら
がプロセッサの内蔵部品であるか、特定の場合には主プ
ロセッサとは別個のモジュールであるかを問わず、これ
らを一般にプロセッサに「結合された」ハードウェア・
モジュールと呼ぶ。後述するように、ルータ205およ
びユニット200ないし300はすべて、メモリに記憶
されている命令または命令モジュールによって制御され
る。これらの命令または命令モジュールは、着信命令を
必要に応じて受信、検査、経路指定、変換およびその他
の方法で操作する。
【0033】図5に示すDDUは、図のようにプロセッ
サに組み込むか、または後で付加できるプラグイン・モ
ジュールとすることができる。したがって、本発明のシ
ステムは、まず最初に所与の数のISAに対応するよう
に構成することができ、モジュールを追加してネイティ
ブ・システムのISAをそれに応じて再構成することに
よって、その後の命令セット・アーキテクチャにも対応
することができる。
サに組み込むか、または後で付加できるプラグイン・モ
ジュールとすることができる。したがって、本発明のシ
ステムは、まず最初に所与の数のISAに対応するよう
に構成することができ、モジュールを追加してネイティ
ブ・システムのISAをそれに応じて再構成することに
よって、その後の命令セット・アーキテクチャにも対応
することができる。
【0034】上記で示唆したように、本発明のシステム
は従来のシステムと組み合わせて最大限の柔軟性を得る
ことができる。たとえば、使用可能なDDUがない所与
のISA用のコードを実行したい場合は、そのコードの
ために図4のボックス132ないし134で示してある
ように、従来のソフトウェア・エミュレーションを使用
することができる。これらのボックスでは、システムが
DDUを使用することができない命令のために従来のソ
フトウェア・エミュレーションが実行される。したがっ
て、入力コードにはソフトウェア・エミュレートを行う
所与のISAのための命令ブロックを組み込むことがで
きると同時に、残りの命令には前述のようにネイティブ
ISAを示すためのタグを付けることができる。同様
に、2進変換またはハードウェア・エミュレーション
を、本発明を利用するように構成された命令とともに使
用することもできる。ただし、所与のISAのためにD
DUを使用することができれば、前述のように本発明の
実施形態でそれを使用することは簡単なことであるた
め、後者の方法が用いられることは少ないと思われる。
は従来のシステムと組み合わせて最大限の柔軟性を得る
ことができる。たとえば、使用可能なDDUがない所与
のISA用のコードを実行したい場合は、そのコードの
ために図4のボックス132ないし134で示してある
ように、従来のソフトウェア・エミュレーションを使用
することができる。これらのボックスでは、システムが
DDUを使用することができない命令のために従来のソ
フトウェア・エミュレーションが実行される。したがっ
て、入力コードにはソフトウェア・エミュレートを行う
所与のISAのための命令ブロックを組み込むことがで
きると同時に、残りの命令には前述のようにネイティブ
ISAを示すためのタグを付けることができる。同様
に、2進変換またはハードウェア・エミュレーション
を、本発明を利用するように構成された命令とともに使
用することもできる。ただし、所与のISAのためにD
DUを使用することができれば、前述のように本発明の
実施形態でそれを使用することは簡単なことであるた
め、後者の方法が用いられることは少ないと思われる。
【0035】図6に、所与のISA用の命令ブロック
を、本発明のシステムで実行するのに適した図3に図示
する構造に従った命令に変換する方法を示す。この方法
は、コンピュータ・システムのメモリに記憶された命令
によって行われ、図1に示すローダ65を使用して実行
される。
を、本発明のシステムで実行するのに適した図3に図示
する構造に従った命令に変換する方法を示す。この方法
は、コンピュータ・システムのメモリに記憶された命令
によって行われ、図1に示すローダ65を使用して実行
される。
【0036】ステップ310(図6参照)で非ネイティ
ブ命令が受け取られてローダ65に入れられる。ローダ
にはそれらの命令がどのISA用に作成されたかに関す
る情報が提供される。各命令には、図3に図示する命令
ストリームの左側に示されている32ビット構造体(ビ
ット32ないし63)が付加され(ステップ320)、
それぞれの場合について非ネイティブISAの適切なタ
グが入れられる(ステップ330)。命令はこれによっ
て修正され、64ビット命令に変換されて、ステップ3
40で修正済みの形式で記憶される。これで命令は前述
のようにして実行することができる。
ブ命令が受け取られてローダ65に入れられる。ローダ
にはそれらの命令がどのISA用に作成されたかに関す
る情報が提供される。各命令には、図3に図示する命令
ストリームの左側に示されている32ビット構造体(ビ
ット32ないし63)が付加され(ステップ320)、
それぞれの場合について非ネイティブISAの適切なタ
グが入れられる(ステップ330)。命令はこれによっ
て修正され、64ビット命令に変換されて、ステップ3
40で修正済みの形式で記憶される。これで命令は前述
のようにして実行することができる。
【0037】このような非ネイティブ・コードのブロッ
クが変換され、実行されるとき、本発明のシステムによ
って適切なアドレス指定が自動的に行われる。図2で、
命令70はアドレス「n」、命令71はアドレスn+4
(8バイト・ワードとした場合)のようになっていると
する。変換後、命令は図3に示す構造になり、変換され
た命令70Aは(VLIW)アドレス「n」を有する
が、命令71Aはn+4ではなくアドレスn+8を有
し、命令72Aはn+8ではなくアドレスn+16を有
するというようになる。これは、特に相対アドレスを使
用する場合には問題になることがあるため、本発明のシ
ステムは、32ビット命令セットからの命令の変換時
に、64ビット命令セットによって占有される追加アド
レス空間を隠すユニットを備える。これは、各アドレス
が1バイトではなく2バイトを識別することができるよ
うにすることによって行うことができる。これは、ネイ
ティブISAには見えることになるが、外来ISAに
は、各アドレスによって識別される記憶バイトがそれ以
上あることはわからないため、64ビット命令フィール
ドの上位32ビットは外来ISAから隠される。
クが変換され、実行されるとき、本発明のシステムによ
って適切なアドレス指定が自動的に行われる。図2で、
命令70はアドレス「n」、命令71はアドレスn+4
(8バイト・ワードとした場合)のようになっていると
する。変換後、命令は図3に示す構造になり、変換され
た命令70Aは(VLIW)アドレス「n」を有する
が、命令71Aはn+4ではなくアドレスn+8を有
し、命令72Aはn+8ではなくアドレスn+16を有
するというようになる。これは、特に相対アドレスを使
用する場合には問題になることがあるため、本発明のシ
ステムは、32ビット命令セットからの命令の変換時
に、64ビット命令セットによって占有される追加アド
レス空間を隠すユニットを備える。これは、各アドレス
が1バイトではなく2バイトを識別することができるよ
うにすることによって行うことができる。これは、ネイ
ティブISAには見えることになるが、外来ISAに
は、各アドレスによって識別される記憶バイトがそれ以
上あることはわからないため、64ビット命令フィール
ドの上位32ビットは外来ISAから隠される。
【0038】元の非ネイティブ・コードは、図6に関し
て述べたようにして修正されると、正常に実行するため
のそれ以上の修正は必要としない。所与のアドレス指定
体系にとって、本発明のシステムのためにアドレスを適
切に変換するのに必要なコードを生成することは簡単な
ことである。たとえば、この例では、値(n+Z)を持
っている前のアドレスが、値(n+2*Z )を持つアド
レスに変換される。ここでZは0、4、8、12などの
オフセットであり、すなわち、オフセットは0、8、1
6、24のように2倍になる。
て述べたようにして修正されると、正常に実行するため
のそれ以上の修正は必要としない。所与のアドレス指定
体系にとって、本発明のシステムのためにアドレスを適
切に変換するのに必要なコードを生成することは簡単な
ことである。たとえば、この例では、値(n+Z)を持
っている前のアドレスが、値(n+2*Z )を持つアド
レスに変換される。ここでZは0、4、8、12などの
オフセットであり、すなわち、オフセットは0、8、1
6、24のように2倍になる。
【0039】まずリアルタイムでDDUによって変換す
ることにより、すべての命令がほとんどネイティブ命令
と同様に実行されるため、非ネイティブ・プラットフォ
ーム上で自己修正命令を実行するという前述の問題は、
本発明によって解決されることが認められよう。したが
って、コード修正は、2進変換またはエミュレーション
で生ずる再コンパイルやその他のオーバーヘッドなし
で、すべて自動的に行われる。
ることにより、すべての命令がほとんどネイティブ命令
と同様に実行されるため、非ネイティブ・プラットフォ
ーム上で自己修正命令を実行するという前述の問題は、
本発明によって解決されることが認められよう。したが
って、コード修正は、2進変換またはエミュレーション
で生ずる再コンパイルやその他のオーバーヘッドなし
で、すべて自動的に行われる。
【0040】これらの64ビット命令が占める追加空間
によって、命令キャッシュ内の占有メモリ帯域幅および
空間の量が増えることになる。しかし、VLIWプロセ
ッサはいずれにしてもより大きなレジスタ・ファイルへ
のアクセスおよび命令符号化を可能にするために、32
ビットよりもはるかに大きな命令を必要とするため、こ
れが問題になることはないと思われ、しかも命令が示す
一時的、空間的局所性により、命令参照の大半がオンチ
ップ・キャッシュにとどまり、メモリへの追加帯域幅が
使い果たされることはない。したがって、本発明の命令
の大きさの増大によるキャッシュ・ミスの増加は認めう
るほどはないと同時に、直接マルチISAシステムによ
ってかなりのサイクルが節約される。
によって、命令キャッシュ内の占有メモリ帯域幅および
空間の量が増えることになる。しかし、VLIWプロセ
ッサはいずれにしてもより大きなレジスタ・ファイルへ
のアクセスおよび命令符号化を可能にするために、32
ビットよりもはるかに大きな命令を必要とするため、こ
れが問題になることはないと思われ、しかも命令が示す
一時的、空間的局所性により、命令参照の大半がオンチ
ップ・キャッシュにとどまり、メモリへの追加帯域幅が
使い果たされることはない。したがって、本発明の命令
の大きさの増大によるキャッシュ・ミスの増加は認めう
るほどはないと同時に、直接マルチISAシステムによ
ってかなりのサイクルが節約される。
【図1】 本発明を実施することができるコンピュータ
・システムのブロック図である。
・システムのブロック図である。
【図2】 プロセッサへの32ビット命令の流れを示す
図である。
図である。
【図3】 プロセッサへの本発明の64ビット命令の流
れを示す図である。
れを示す図である。
【図4】 本発明の好ましい方法を示すフロー・チャー
トである。
トである。
【図5】 本発明を実施するための、プロセッサ内の動
的復号ユニットおよび機能ユニットを図示したブロック
図である。
的復号ユニットおよび機能ユニットを図示したブロック
図である。
【図6】 従来の命令のブロックを、本発明に従って実
行するための命令に変換する方法を示すフロー・チャー
トである。
行するための命令に変換する方法を示すフロー・チャー
トである。
【図7】 本発明の好ましい実施形態の命令制御モジュ
ールを図示したブロック図である。
ールを図示したブロック図である。
10 システム 20 中央演算処理装置 30 プロセッサ 40 メモリ 50 記憶媒体 60 入出力装置 65 命令ローダ 70 制御命令 70A 命令 80 プロセッサ 90 プロセッサ 200 命令ディスパッチユニット 210 動的復号装置 205 命令ルータ 280 機能ユニット
Claims (11)
- 【請求項1】 プロセッサとそのプロセッサに接続され
たメモリとを備え、そのメモリには第1および第2の命
令を操作するプログラム命令を含む複数の制御モジュー
ルを記憶し、前記第1および第2の命令はそれぞれ第1
および第2の所定の命令セット・アーキテクチャ(IS
A)に従って構成されており、第1のISAが前記プロ
セッサのネイティブISAで、第2のISAが前記プロ
セッサの非ネイティブISAであるコンピュータ・シス
テム内で前記第1および前記第2の命令を実行するシス
テムにおいて、 前記プロセッサに結合され、前記第1および第2の命令
を受け取る命令ルータと、 命令ルータに結合され、少なくとも前記第1の命令を受
け取る命令ディスパッチユニットと、 前記命令ルータに結合され、前記第2の命令を受け取る
少なくとも1つの動的復号ユニットと、 前記第1および第2の命令の各命令に結合され、それら
の命令に対応するISAを識別するISAタグと、 前記第1および第2の命令セットの前記各ISAタグを
読み取るタグ読取り制御モジュールと、 前記各ISAタグに対応するISAを判断するタグ識別
制御モジュールと、 プロセッサのネイティブISAに対応するISAタグを
有する少なくともいくつかの前記命令を前記命令ディス
パッチユニットに送る第1の経路指定制御モジュール
と、 所定の非ネイティグISAに対応するISAタグを有す
る少なくともいくつかの前記命令を前記動的復号ユニッ
トに送る第2の経路指定制御モジュールと、 前記動的復号ユニットで受け取った命令を前記プロセッ
サの前記ネイティブISAに対応する修正済み命令に変
換する変換制御モジュールとを含むシステム。 - 【請求項2】 前記修正済み命令を前記命令ディスパッ
チユニットに渡す第3の経路指定制御モジュールをさら
に含む請求項1に記載のシステム。 - 【請求項3】 前記命令ディスパッチユニットに結合さ
れ、その命令ディスパッチユニットからの命令を受け取
り、その命令を実行する少なくとも1つの機能ユニット
と、 前記命令ディスパッチユニットで受け取った命令を前記
機能ユニットに渡す第4の経路指定制御モジュールとを
さらに含む請求項1に記載のシステム。 - 【請求項4】 前記命令ルータに結合された命令ローダ
と、 少なくともいくつかの前記第2の命令を前記ISAタグ
を含む形式に変換するローダ制御モジュールとをさらに
含む請求項1に記載のシステム。 - 【請求項5】 プロセッサと、そのプロセッサに結合さ
れたメモリと、前記プロセッサに結合された少なくとも
1つの機能ユニットと、前記プロセッサに結合された少
なくとも1つの動的復号ユニットと、前記プロセッサに
とって非ネイティブである第1の所定の命令セット・ア
ーキテクチャ(ISA)に対応する前記命令を操作す
る、前記メモリに記憶された前記制御プログラム・モジ
ュールとを有するコンピュータ・システム上で命令を実
行する方法において、 前記プロセッサで少なくとも1つの前記命令を受け取る
ステップと、 前記命令を検査して、前記プロセッサのネイティブIS
Aに対応しているかどうかを判断し、対応している場合
には前記命令を実行のために前記機能ユニットに渡すス
テップと、 検査した前記命令が前記第1の所定の非ネイティブIS
Aに関係する場合には、検査した前記命令を前記ネイテ
ィブISAに対応する修正された命令に変換するステッ
プと、 前記修正済み命令を実行のために前記機能ユニットに渡
すステップとを含む方法。 - 【請求項6】 前記命令受取りステップの前に、少なく
とも1つの前記命令を前記ネイティブISAに対応する
形式に変換して前記命令を前記非ネイティブISAに対
応するものとして識別するステップをさらに含む請求項
5に記載の方法。 - 【請求項7】 命令を検査するステップの後に、前記検
査済み命令が、前記プロセッサにとって非ネイティブで
ある第2の所定のISAに対応する場合には、前記検査
済み命令をエミュレートする追加のステップを含む請求
項6に記載の方法。 - 【請求項8】 プロセッサと、そのプロセッサに結合さ
れ、命令を操作するプログラム命令を含む複数の制御モ
ジュールを記憶するメモリとを備え、前記命令は第1お
よび第2の所定の命令セット・アーキテクチャ(IS
A)のうちの少なくとも1つに従って構成されており、
第1のISAが前記プロセッサのネイティブISAであ
り、第2のISAが当該プロセッサの所定の非ネイティ
ブISAであるコンピュータ・システムで命令を実行す
るシステムにおいて、 プロセッサに結合され、前記命令を受け取る命令ルータ
と、 前記命令ルータに結合され、前記命令のうちの少なくと
も第1のサブセットを受け取る命令ディスパッチユニッ
トと、 前記命令ルータに結合され、前記命令のうちの少なくと
も第2のサブセットを受け取る少なくとも1つの動的復
号ユニットと、 複数の前記命令のそれぞれに対応し、複数の命令のそれ
ぞれのネイティブISAを識別するISA識別子と、 前記複数の命令のそれぞれが当該命令のネイティブIS
Aであると判断するISA識別制御モジュールと、 命令の前記第1のサブセットの少なくともいくつかを前
記命令ディスパッチユニットに送り、命令の前記第2の
サブセットの少なくともいくつかを前記動的復号ユニッ
トに送る経路指定制御モジュールと、 前記動的復号ユニットで受け取った命令を前記プロセッ
サの前記ネイティブISAに対応する修正された命令に
変換する動的復号ユニット制御モジュールとを含むシス
テム。 - 【請求項9】 前記命令ディスパッチユニットに結合さ
れた複数の機能ユニットと、 前記命令ディスパッチユニットで受け取った命令を実行
のために少なくとも1つの前記機能ユニットに経路指定
する命令ディスパッチユニット制御モジュールとをさら
に含む、請求項8に記載のシステム。 - 【請求項10】 前記プロセッサに結合され、前記プロ
セッサへの入力と前記プロセッサによる実行のために前
記命令を受け取る命令ローダと、 複数の前記命令のそれぞれを前記プロセッサの前記ネイ
ティブISAに対応する形式に変換する命令変換制御モ
ジュールとをさらに含む請求項8に記載のシステム。 - 【請求項11】 前記プロセッサにとって非ネイティブ
である第2の所定のISAをエミュレートする命令エミ
ュレーション制御モジュールをさらに含む、請求項8に
記載のシステム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/332,005 US6496922B1 (en) | 1994-10-31 | 1994-10-31 | Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation |
| US08/332005 | 1994-10-31 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0926876A true JPH0926876A (ja) | 1997-01-28 |
Family
ID=23296298
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP7305194A Withdrawn JPH0926876A (ja) | 1994-10-31 | 1995-10-31 | マルチプラットフォーム・ステートレス命令セット・アーキテクチャのための方法および装置 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US6496922B1 (ja) |
| EP (2) | EP1074910A1 (ja) |
| JP (1) | JPH0926876A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7613903B2 (en) | 2001-01-22 | 2009-11-03 | Renesas Technology Corporation | Data processing device with instruction translator and memory interface device to translate non-native instructions into native instructions for processor |
| JP2013546100A (ja) * | 2010-12-16 | 2013-12-26 | マイクロソフト コーポレーション | セキュリティサンドボックス |
Families Citing this family (88)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2307072B (en) * | 1994-06-10 | 1998-05-13 | Advanced Risc Mach Ltd | Interoperability with multiple instruction sets |
| KR100584964B1 (ko) | 1996-01-24 | 2006-05-29 | 선 마이크로시스템즈 인코퍼레이티드 | 스택 메모리 구조에서의 캐싱 장치 |
| EP0976029A2 (en) * | 1996-01-24 | 2000-02-02 | Sun Microsystems, Inc. | A processor for executing instruction sets received from a network or from a local memory |
| JP3623840B2 (ja) * | 1996-01-31 | 2005-02-23 | 株式会社ルネサステクノロジ | データ処理装置及びマイクロプロセッサ |
| US6199152B1 (en) * | 1996-08-22 | 2001-03-06 | Transmeta Corporation | Translated memory protection apparatus for an advanced microprocessor |
| US6513057B1 (en) * | 1996-10-28 | 2003-01-28 | Unisys Corporation | Heterogeneous symmetric multi-processing system |
| US6199073B1 (en) * | 1997-04-21 | 2001-03-06 | Ricoh Company, Ltd. | Automatic archiving of documents during their transfer between a peripheral device and a processing device |
| JPH113225A (ja) * | 1997-06-13 | 1999-01-06 | Nec Corp | 情報処理装置 |
| US6397242B1 (en) | 1998-05-15 | 2002-05-28 | Vmware, Inc. | Virtualization system including a virtual machine monitor for a computer with a segmented architecture |
| US8631066B2 (en) | 1998-09-10 | 2014-01-14 | Vmware, Inc. | Mechanism for providing virtual machines for use by multiple users |
| US7516453B1 (en) | 1998-10-26 | 2009-04-07 | Vmware, Inc. | Binary translator with precise exception synchronization mechanism |
| US7013456B1 (en) * | 1999-01-28 | 2006-03-14 | Ati International Srl | Profiling execution of computer programs |
| US8121828B2 (en) | 1999-01-28 | 2012-02-21 | Ati Technologies Ulc | Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions |
| US7065633B1 (en) | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
| US6978462B1 (en) | 1999-01-28 | 2005-12-20 | Ati International Srl | Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled |
| US7111290B1 (en) | 1999-01-28 | 2006-09-19 | Ati International Srl | Profiling program execution to identify frequently-executed portions and to assist binary translation |
| US7941647B2 (en) | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
| 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 |
| US6954923B1 (en) | 1999-01-28 | 2005-10-11 | Ati International Srl | Recording classification of instructions executed by a computer |
| US6763452B1 (en) | 1999-01-28 | 2004-07-13 | Ati International Srl | Modifying program execution based on profiling |
| US8127121B2 (en) | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
| US8074055B1 (en) | 1999-01-28 | 2011-12-06 | Ati Technologies Ulc | Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code |
| DE19905510A1 (de) * | 1999-02-10 | 2000-08-31 | Siemens Ag | Mikroprozessor und Verfahren zur Adressierung in einem Mikroprozessor |
| US6779107B1 (en) | 1999-05-28 | 2004-08-17 | Ati International Srl | Computer execution by opportunistic adaptation |
| US6675298B1 (en) | 1999-08-18 | 2004-01-06 | Sun Microsystems, Inc. | Execution of instructions using op code lengths longer than standard op code lengths to encode data |
| US7254806B1 (en) | 1999-08-30 | 2007-08-07 | Ati International Srl | Detecting reordered side-effects |
| JP2001142692A (ja) * | 1999-10-01 | 2001-05-25 | Hitachi Ltd | 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法 |
| GB2355085A (en) * | 1999-10-05 | 2001-04-11 | Sharp Kk | Translating a source operation to a target operation |
| US6701426B1 (en) * | 1999-10-19 | 2004-03-02 | Ati International Srl | Switching between a plurality of branch prediction processes based on which instruction set is operational wherein branch history data structures are the same for the plurality of instruction sets |
| FR2801493B1 (fr) | 1999-11-26 | 2003-10-03 | Braun Celsa Sa | Procede de fabrication d'un filtre sanguin monobloc |
| US6934832B1 (en) | 2000-01-18 | 2005-08-23 | Ati International Srl | Exception mechanism for a computer |
| US7661107B1 (en) * | 2000-01-18 | 2010-02-09 | Advanced Micro Devices, Inc. | Method and apparatus for dynamic allocation of processing resources |
| US6618801B1 (en) * | 2000-02-02 | 2003-09-09 | Hewlett-Packard Development Company, L.P. | Method and apparatus for implementing two architectures in a chip using bundles that contain microinstructions and template information |
| US6895494B1 (en) | 2000-06-26 | 2005-05-17 | Texas Instruments Incorporated | Sub-pipelined and pipelined execution in a VLIW |
| GB2376100B (en) * | 2001-05-31 | 2005-03-09 | Advanced Risc Mach Ltd | Data processing using multiple instruction sets |
| US7251811B2 (en) * | 2002-01-02 | 2007-07-31 | Intel Corporation | Controlling compatibility levels of binary translations between instruction set architectures |
| EP1347373A3 (en) * | 2002-03-20 | 2005-02-02 | Seiko Epson Corporation | Apparatus for processing instructions of different instruction set architectures |
| US7346881B2 (en) * | 2002-05-13 | 2008-03-18 | Tensilica, Inc. | Method and apparatus for adding advanced instructions in an extensible processor architecture |
| US7376812B1 (en) * | 2002-05-13 | 2008-05-20 | Tensilica, Inc. | Vector co-processor for configurable and extensible processor architecture |
| US7937559B1 (en) | 2002-05-13 | 2011-05-03 | Tensilica, Inc. | System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes |
| EP1387250B8 (en) * | 2002-07-31 | 2012-02-29 | Texas Instruments Inc. | Processor that accomodates multiple instruction sets and multiple decode modes |
| US7444471B1 (en) * | 2002-12-30 | 2008-10-28 | Transmeta Corporation | Method and system for using external storage to amortize CPU cycle utilization |
| EP1447742A1 (en) * | 2003-02-11 | 2004-08-18 | STMicroelectronics S.r.l. | Method and apparatus for translating instructions of an ARM-type processor into instructions for a LX-type processor |
| US8190858B2 (en) * | 2003-02-25 | 2012-05-29 | Topside Research, Llc | Interface device for interfacing a main processor to processing engines and classifier engines, and methods for configuring and operating interface devices |
| CN100573443C (zh) * | 2004-12-30 | 2009-12-23 | 英特尔公司 | 从混合源指令集架构到单一目标指令集架构的二进制代码转换中的多格式指令的格式选择 |
| US20060155974A1 (en) * | 2005-01-07 | 2006-07-13 | Moyer William C | Data processing system having flexible instruction capability and selection mechanism |
| US7818724B2 (en) * | 2005-02-08 | 2010-10-19 | Sony Computer Entertainment Inc. | Methods and apparatus for instruction set emulation |
| KR100573334B1 (ko) * | 2005-08-31 | 2006-04-24 | 주식회사 칩스앤미디어 | 실시간 동적 수정이 가능한 명령어 집합을 가지는 컴퓨터 |
| US20070283336A1 (en) * | 2006-06-01 | 2007-12-06 | Michael Karl Gschwind | System and method for just-in-time compilation in a heterogeneous processing environment |
| US8146106B2 (en) * | 2007-12-31 | 2012-03-27 | Intel Corporation | On-demand emulation via user-level exception handling |
| US8972994B2 (en) * | 2009-12-23 | 2015-03-03 | Intel Corporation | Method and apparatus to bypass object lock by speculative execution of generated bypass code shell based on bypass failure threshold in managed runtime environment |
| US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
| US9176733B2 (en) * | 2011-04-07 | 2015-11-03 | Via Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
| US9244686B2 (en) | 2011-04-07 | 2016-01-26 | Via Technologies, Inc. | Microprocessor that translates conditional load/store instructions into variable number of microinstructions |
| US9043580B2 (en) | 2011-04-07 | 2015-05-26 | Via Technologies, Inc. | Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA) |
| US9317288B2 (en) * | 2011-04-07 | 2016-04-19 | Via Technologies, Inc. | Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
| US9292470B2 (en) | 2011-04-07 | 2016-03-22 | Via Technologies, Inc. | Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program |
| EP2631786B1 (en) * | 2011-04-07 | 2018-06-06 | VIA Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
| US20120260073A1 (en) * | 2011-04-07 | 2012-10-11 | Via Technologies, Inc. | Emulation of execution mode banked registers |
| US9274795B2 (en) * | 2011-04-07 | 2016-03-01 | Via Technologies, Inc. | Conditional non-branch instruction prediction |
| US9032189B2 (en) | 2011-04-07 | 2015-05-12 | Via Technologies, Inc. | Efficient conditional ALU instruction in read-port limited register file microprocessor |
| US9141389B2 (en) * | 2011-04-07 | 2015-09-22 | Via Technologies, Inc. | Heterogeneous ISA microprocessor with shared hardware ISA registers |
| US8880857B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor |
| US9128701B2 (en) | 2011-04-07 | 2015-09-08 | Via Technologies, Inc. | Generating constant for microinstructions from modified immediate field during instruction translation |
| US9146742B2 (en) * | 2011-04-07 | 2015-09-29 | Via Technologies, Inc. | Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA |
| US9336180B2 (en) | 2011-04-07 | 2016-05-10 | Via Technologies, Inc. | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
| US9898291B2 (en) | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
| US8880851B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
| US9645822B2 (en) | 2011-04-07 | 2017-05-09 | Via Technologies, Inc | Conditional store instructions in an out-of-order execution microprocessor |
| US8924695B2 (en) | 2011-04-07 | 2014-12-30 | Via Technologies, Inc. | Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor |
| US10055227B2 (en) | 2012-02-07 | 2018-08-21 | Qualcomm Incorporated | Using the least significant bits of a called function's address to switch processor modes |
| CN103530089B (zh) * | 2012-08-31 | 2018-06-15 | 威盛电子股份有限公司 | 微处理器及其操作方法 |
| JP5727107B2 (ja) * | 2012-09-21 | 2015-06-03 | インテル コーポレイション | バイナリトランスレーションを実行する方法及びシステム |
| US9164947B1 (en) * | 2012-12-07 | 2015-10-20 | Qlogic, Corporation | Method and system for inserting cookies in I/O commands |
| US9703562B2 (en) | 2013-03-16 | 2017-07-11 | Intel Corporation | Instruction emulation processors, methods, and systems |
| US20140281398A1 (en) * | 2013-03-16 | 2014-09-18 | William C. Rash | Instruction emulation processors, methods, and systems |
| US10684984B2 (en) * | 2016-12-21 | 2020-06-16 | Intel Corporation | Computing devices and server systems with processing cores having different instruction set architectures |
| US10713213B2 (en) | 2016-12-21 | 2020-07-14 | Intel Corporation | Systems and methods for multi-architecture computing |
| US11275709B2 (en) | 2017-05-02 | 2022-03-15 | Intel Corporation | Systems and methods for multi-architecture computing |
| US11816487B2 (en) * | 2020-12-29 | 2023-11-14 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Method of converting extended instructions based on an emulation flag and retirement of corresponding microinstructions, device and system using the same |
| US20220206809A1 (en) | 2020-12-29 | 2022-06-30 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Method and system for executing new instructions |
| US11669328B2 (en) | 2020-12-29 | 2023-06-06 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Method and system for converting instructions |
| US11789736B2 (en) | 2020-12-29 | 2023-10-17 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Method and system for executing new instructions |
| US11803383B2 (en) | 2020-12-29 | 2023-10-31 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Method and system for executing new instructions |
| US11625247B2 (en) | 2020-12-29 | 2023-04-11 | Shanghai Zhaoxin Semiconductor Co., Ltd. | System for executing new instructions and method for executing new instructions |
| US11604643B2 (en) | 2020-12-29 | 2023-03-14 | Shanghai Zhaoxin Semiconductor Co., Ltd. | System for executing new instructions and method for executing new instructions |
| US11914997B2 (en) | 2020-12-29 | 2024-02-27 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Method and system for executing new instructions |
| EP4357957A1 (en) * | 2022-10-18 | 2024-04-24 | Thales Dis France Sas | Method for securing against physical or logical attacks an execution of a machine language instructions code |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| FR2253435A5 (ja) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
| US4415969A (en) * | 1980-02-07 | 1983-11-15 | Intel Corporation | Macroinstruction translator unit for use in a microprocessor |
| US4434459A (en) | 1980-04-25 | 1984-02-28 | Data General Corporation | Data processing system having instruction responsive apparatus for both a basic and an extended instruction set |
| JPS6133546A (ja) * | 1984-07-25 | 1986-02-17 | Nec Corp | 情報処理装置 |
| EP0199173B1 (en) | 1985-04-08 | 1994-02-02 | Hitachi, Ltd. | Data processing system |
| US5115500A (en) * | 1988-01-11 | 1992-05-19 | International Business Machines Corporation | Plural incompatible instruction format decode method and apparatus |
| US5313614A (en) * | 1988-12-06 | 1994-05-17 | At&T Bell Laboratories | Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems |
| US5438668A (en) * | 1992-03-31 | 1995-08-01 | Seiko Epson Corporation | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
| US5598546A (en) * | 1994-08-31 | 1997-01-28 | Exponential Technology, Inc. | Dual-architecture super-scalar pipeline |
-
1994
- 1994-10-31 US US08/332,005 patent/US6496922B1/en not_active Expired - Lifetime
-
1995
- 1995-10-20 EP EP00122623A patent/EP1074910A1/en not_active Withdrawn
- 1995-10-20 EP EP95307474A patent/EP0709767A1/en not_active Ceased
- 1995-10-31 JP JP7305194A patent/JPH0926876A/ja not_active Withdrawn
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7613903B2 (en) | 2001-01-22 | 2009-11-03 | Renesas Technology Corporation | Data processing device with instruction translator and memory interface device to translate non-native instructions into native instructions for processor |
| JP2013546100A (ja) * | 2010-12-16 | 2013-12-26 | マイクロソフト コーポレーション | セキュリティサンドボックス |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0709767A1 (en) | 1996-05-01 |
| US6496922B1 (en) | 2002-12-17 |
| EP1074910A1 (en) | 2001-02-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0926876A (ja) | マルチプラットフォーム・ステートレス命令セット・アーキテクチャのための方法および装置 | |
| Hookway et al. | Digital FX! 32: Combining emulation and binary translation | |
| US6035120A (en) | Method and apparatus for converting executable computer programs in a heterogeneous computing environment | |
| EP1385090B1 (en) | Program code conversion for variably sized registers | |
| US6219832B1 (en) | System and method of using annotations to optimize dynamically translated code in the presence of signals | |
| JP3894698B2 (ja) | 資源の消費を最小限にするハイブリッド式ジャストインタイム・コンパイラ | |
| TWI252431B (en) | Binary translator | |
| US6081890A (en) | Method of communication between firmware written for different instruction set architectures | |
| US5903760A (en) | Method and apparatus for translating a conditional instruction compatible with a first instruction set architecture (ISA) into a conditional instruction compatible with a second ISA | |
| US6078744A (en) | Method and apparatus for improving compiler performance during subsequent compilations of a source program | |
| US7712092B2 (en) | Binary translation using peephole translation rules | |
| US6481006B1 (en) | Method and apparatus for efficient invocation of Java methods from native codes | |
| US8732678B2 (en) | Methods and apparatus for dynamic best fit compilation of mixed mode instructions | |
| EP0428560A4 (en) | Machine process for translating programs in binary machine language into another binary machine language | |
| WO2008046672A1 (en) | Register-based instruction optimization for facilitating efficient emulation of an instruction stream | |
| WO2012092211A2 (en) | Emulating pointers | |
| US20130096908A1 (en) | Employing native routines instead of emulated routines in an application being emulated | |
| US7809547B2 (en) | Host computer system emulating target system legacy software and providing for incorporating more powerful application program elements into the flow of the legacy software | |
| JP3193651B2 (ja) | ゲスト命令をエミュレートするプロセッサ | |
| KR100421687B1 (ko) | 개선된 마이크로프로세서를 위한 변환 메모리 보호 장치 | |
| US5361389A (en) | Apparatus and method for emulation routine instruction issue | |
| JP5129904B2 (ja) | 実行時における関数の実行性能を増大させるための方法、計算機システム、実行時における関数の実行性能を増大させるための、コンピュータプログラムを格納するコンピュータ読み取り可能媒体 | |
| US5930495A (en) | Method and system for processing a first instruction in a first processing environment in response to intiating processing of a second instruction in a emulation environment | |
| US6983361B1 (en) | Apparatus and method for implementing switch instructions in an IA64 architecture | |
| JPH0668724B2 (ja) | シミユレーシヨン方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20040901 |