JP3180075B2 - 異なる命令コード相互間の動的変換装置及び方法 - Google Patents
異なる命令コード相互間の動的変換装置及び方法Info
- Publication number
- JP3180075B2 JP3180075B2 JP02892698A JP2892698A JP3180075B2 JP 3180075 B2 JP3180075 B2 JP 3180075B2 JP 02892698 A JP02892698 A JP 02892698A JP 2892698 A JP2892698 A JP 2892698A JP 3180075 B2 JP3180075 B2 JP 3180075B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- code
- instructions
- risc
- internal
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
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)
Description
【0001】
【発明の属する技術分野】本発明は、1つの命令セット
から他の命令セットへの命令の変換に関するものであ
り、更に詳しく云えば、第1コンピュータ・アーキテク
チャのコードから第2コンピュータ・アーキテクチャの
コードへの変換に関するものである。
から他の命令セットへの命令の変換に関するものであ
り、更に詳しく云えば、第1コンピュータ・アーキテク
チャのコードから第2コンピュータ・アーキテクチャの
コードへの変換に関するものである。
【0002】
【従来の技術】各コンピュータ・システムには、プロセ
ッサが処理し得る命令の正確な定義、これらの命令のフ
ォーマットの正確な定義、及びこれらの命令が必要とす
る引数及びオペランドの正確な定義が存在しなければな
らない。プロセッサの命令セットのこの定義は、通常、
設計済みコード(architected code)
と呼ばれる。
ッサが処理し得る命令の正確な定義、これらの命令のフ
ォーマットの正確な定義、及びこれらの命令が必要とす
る引数及びオペランドの正確な定義が存在しなければな
らない。プロセッサの命令セットのこの定義は、通常、
設計済みコード(architected code)
と呼ばれる。
【0003】多くの異なるコードが存在し、各コードは
対応するプロセッサ・タイプによってのみ処理可能であ
る。高度な言語で書かれたプログラムを一連の基本的な
プロセッサ命令に変換するコンパイラは、1つの特定の
コンピュータ・アーキテクチャに対応したコードを作り
出すことができるだけである。種々のコードで書かれた
プログラムを1つのプロセッサ・タイプにより処理でき
ることが望ましい。それにより、異なるコンピュータ・
アーキテクチャのために書かれたプログラムが処理可能
となり、それは、各プロセッサ・タイプにとって使用可
能なプログラムの範囲が増加することを意味する。種々
のプロセッサ・タイプに適したコードを作り出すために
ソース・コードを再コンパイルすることは、最早、必要
ないであろう。
対応するプロセッサ・タイプによってのみ処理可能であ
る。高度な言語で書かれたプログラムを一連の基本的な
プロセッサ命令に変換するコンパイラは、1つの特定の
コンピュータ・アーキテクチャに対応したコードを作り
出すことができるだけである。種々のコードで書かれた
プログラムを1つのプロセッサ・タイプにより処理でき
ることが望ましい。それにより、異なるコンピュータ・
アーキテクチャのために書かれたプログラムが処理可能
となり、それは、各プロセッサ・タイプにとって使用可
能なプログラムの範囲が増加することを意味する。種々
のプロセッサ・タイプに適したコードを作り出すために
ソース・コードを再コンパイルすることは、最早、必要
ないであろう。
【0004】1つのプロセッサ・タイプに対して命令セ
ットの種々なバージョンが存在することがよくある。従
って、1つの命令セットから他の命令セットに命令を変
換することができるということは、更新されたコードの
高速処理も可能にするであろう。
ットの種々なバージョンが存在することがよくある。従
って、1つの命令セットから他の命令セットに命令を変
換することができるということは、更新されたコードの
高速処理も可能にするであろう。
【0005】長い間、CISC(複雑命令セット・コン
ピューティング)又はRISC(縮小命令セット・コン
ピューティング)のどちらが高パフォーマンス・コンピ
ューティングによく適しているかということに関する論
争が進められてきた。CISC命令が処理される時、多
くのタスクが並列に遂行される。CISC命令は、通
常、長くしかも複雑である。その本来の並列性のため
に、大きなプロセッサ・サイクル・タイムが必要であ
る。CISCコンピューティングのための代表的なパイ
プラインはむしろ少量のパイプライン・ステージより成
る。CISC命令は共通フォーマットをもたらし難い。
ピューティング)又はRISC(縮小命令セット・コン
ピューティング)のどちらが高パフォーマンス・コンピ
ューティングによく適しているかということに関する論
争が進められてきた。CISC命令が処理される時、多
くのタスクが並列に遂行される。CISC命令は、通
常、長くしかも複雑である。その本来の並列性のため
に、大きなプロセッサ・サイクル・タイムが必要であ
る。CISCコンピューティングのための代表的なパイ
プラインはむしろ少量のパイプライン・ステージより成
る。CISC命令は共通フォーマットをもたらし難い。
【0006】対照的に、RISC命令は短く且つ単純で
あり、それらが実行される時に多数の並列タスクを開始
させるものではない。それらは1つの明確に定義された
タスクを遂行するだけであり、それらは容易に1つの共
通フォーマットにされ得る。RISC処理のための実行
ユニットは大量のパイプライン・ステージを持ったパイ
プラインより成る。RISC処理のためのプロセッサ・
サイクルは非常に短くなり、それは、命令が種々のパイ
プライン・ステージを通して直ぐにクロック可能である
ことを意味する。
あり、それらが実行される時に多数の並列タスクを開始
させるものではない。それらは1つの明確に定義された
タスクを遂行するだけであり、それらは容易に1つの共
通フォーマットにされ得る。RISC処理のための実行
ユニットは大量のパイプライン・ステージを持ったパイ
プラインより成る。RISC処理のためのプロセッサ・
サイクルは非常に短くなり、それは、命令が種々のパイ
プライン・ステージを通して直ぐにクロック可能である
ことを意味する。
【0007】最近のスーパスカラ処理コンセプトは、そ
れらの連続的な順序を離れて基本命令を処理することを
提案するものであり、それは、順次プログラムにおける
隠れた並列性が活用されることを意味する。パフォーマ
ンスの向上は、複数の完全に独立した命令を、命令スト
リームの種々のポイントから種々の実行ユニットに同じ
クロック・サイクルでディスパッチすることによって得
られる。多くの理由で、RISC命令はCISC命令よ
りも順不同の処理に対して適している。一般的なRIS
C命令は1つのタスクを定義するだけであるため、命令
自体を、それのソース・オペランド及びターゲット・オ
ペランドと共に、簡単なフォーマットにすることが可能
である。更に、短いサイクル・タイムが可能である。こ
れは、レジスタの名前変更を含むデータ従属性の分解能
が主要な挑戦事項の1つであるので、順不同処理にとっ
て特に重要である。
れらの連続的な順序を離れて基本命令を処理することを
提案するものであり、それは、順次プログラムにおける
隠れた並列性が活用されることを意味する。パフォーマ
ンスの向上は、複数の完全に独立した命令を、命令スト
リームの種々のポイントから種々の実行ユニットに同じ
クロック・サイクルでディスパッチすることによって得
られる。多くの理由で、RISC命令はCISC命令よ
りも順不同の処理に対して適している。一般的なRIS
C命令は1つのタスクを定義するだけであるため、命令
自体を、それのソース・オペランド及びターゲット・オ
ペランドと共に、簡単なフォーマットにすることが可能
である。更に、短いサイクル・タイムが可能である。こ
れは、レジスタの名前変更を含むデータ従属性の分解能
が主要な挑戦事項の1つであるので、順不同処理にとっ
て特に重要である。
【0008】これらの論議を考察すると、RISCアー
キテクチャを有するスーパスカラ・プロセッサが望まし
いものであると結論することができる。一方、CISC
は多くの分野において広範囲にわたる標準であり、CI
SCアーキテクチャに対する多くのコードが存在する。
このために、外部CISC命令を、スーパスカラRIS
Cプロセッサによって順不同に処理可能な複数の内部R
ISC命令に分解することは意味あることである。その
ような処理コンセプトは強力なCISC−RISCコン
バータを必要とする。
キテクチャを有するスーパスカラ・プロセッサが望まし
いものであると結論することができる。一方、CISC
は多くの分野において広範囲にわたる標準であり、CI
SCアーキテクチャに対する多くのコードが存在する。
このために、外部CISC命令を、スーパスカラRIS
Cプロセッサによって順不同に処理可能な複数の内部R
ISC命令に分解することは意味あることである。その
ような処理コンセプトは強力なCISC−RISCコン
バータを必要とする。
【0009】実行時にコード変換を行うための幾つもの
解決方法が提案されている。1988年3月発行の「縮
小命令セット・コンピュータのためのシステム/370
エミュレータ援助プロセッサ(System/370 Emulator As
sist Processor For A Reduced Instruction Set Compu
ter)」と題したIBM−TDB刊行物の第30巻、第
10号における J. Garcia, E.S. Hannon, R. Kalla,
J.A. Mitchell 及び D.M. Mitchell の記事において、
CISCコードである外部S/370コードから内部R
ISC命令へのマイクロコード制御された変換が開示さ
れている。先ず、「エミュレーション援助プロセッサ」
が、変換されるべき外部S/370の命令をロードす
る。次に、単一のS/370命令に対して複数のホスト
命令を生成するために、特別のローカル・マイクロコー
ド制御記憶装置からのマイクロコードが実行される。
解決方法が提案されている。1988年3月発行の「縮
小命令セット・コンピュータのためのシステム/370
エミュレータ援助プロセッサ(System/370 Emulator As
sist Processor For A Reduced Instruction Set Compu
ter)」と題したIBM−TDB刊行物の第30巻、第
10号における J. Garcia, E.S. Hannon, R. Kalla,
J.A. Mitchell 及び D.M. Mitchell の記事において、
CISCコードである外部S/370コードから内部R
ISC命令へのマイクロコード制御された変換が開示さ
れている。先ず、「エミュレーション援助プロセッサ」
が、変換されるべき外部S/370の命令をロードす
る。次に、単一のS/370命令に対して複数のホスト
命令を生成するために、特別のローカル・マイクロコー
ド制御記憶装置からのマイクロコードが実行される。
【0010】実際のハードウエア制御の変換に比べて、
マイクロコード・ルーチンを実行することによって行わ
れる変換は何れも遅い。実行時のコード変換に関して
は、外部CISC命令から内部RISC命令へのコード
変換は数サイクルしか要しない。マイクロコード制御の
変換は多くのサイクルを要する。それは、マイクロコー
ド・ルーチン全体が実行されなければならないためであ
る。
マイクロコード・ルーチンを実行することによって行わ
れる変換は何れも遅い。実行時のコード変換に関して
は、外部CISC命令から内部RISC命令へのコード
変換は数サイクルしか要しない。マイクロコード制御の
変換は多くのサイクルを要する。それは、マイクロコー
ド・ルーチン全体が実行されなければならないためであ
る。
【0011】更に、エミュレーション援助プロセッサ
は、一時に1つの命令しか変換できない。従って、同時
にディスパッチされた複数の命令を並列変換することは
不可能である。
は、一時に1つの命令しか変換できない。従って、同時
にディスパッチされた複数の命令を並列変換することは
不可能である。
【0012】更に洗練された変換方式が、D.B. Witt 及
び M.D. Goddard による欧州特許出願651320A1
「スーパスカラ命令デコーダ(Superscalar Instructio
n Decoder)」に開示されている。この文献では、CI
SC命令を複数のRISC命令に実行時に変換するデコ
ーダが開示されている。デコード・プロセスから発生す
るRISC命令はRISCスーパスカラ・プロセッサに
送られる。従って、CISC命令セットの使用を、スー
パスカラRISC処理の利点と結合することが可能であ
る。1つのCISC命令から発生されるべきRISC的
オペレーションの数に従って、2つの変換パスが開示さ
れている。発生されるべきRISCオペレーションの数
が3を超える場合、コード変換はマイクロコード・ルー
チンを実行することによって行われる。4つよりも少な
いRISCのようなオペレーションによって表すことが
できる複雑でないCISCオペレーションのために、高
速変換パスが導入される。CISC命令のレジスタ識別
子が、プログラム可能アレイ・ロジック(PAL)によ
って、又は対応するRISCのようなオペレーションの
ための組合せロジックによって経路指定される。
び M.D. Goddard による欧州特許出願651320A1
「スーパスカラ命令デコーダ(Superscalar Instructio
n Decoder)」に開示されている。この文献では、CI
SC命令を複数のRISC命令に実行時に変換するデコ
ーダが開示されている。デコード・プロセスから発生す
るRISC命令はRISCスーパスカラ・プロセッサに
送られる。従って、CISC命令セットの使用を、スー
パスカラRISC処理の利点と結合することが可能であ
る。1つのCISC命令から発生されるべきRISC的
オペレーションの数に従って、2つの変換パスが開示さ
れている。発生されるべきRISCオペレーションの数
が3を超える場合、コード変換はマイクロコード・ルー
チンを実行することによって行われる。4つよりも少な
いRISCのようなオペレーションによって表すことが
できる複雑でないCISCオペレーションのために、高
速変換パスが導入される。CISC命令のレジスタ識別
子が、プログラム可能アレイ・ロジック(PAL)によ
って、又は対応するRISCのようなオペレーションの
ための組合せロジックによって経路指定される。
【0013】外部コード又は内部コードに対して何らか
のアーキテクチャの変更が行われる場合、そのデコード
・ロジックは変更されなければならないであろう。変換
パスにおけるエラーが生じた場合にも変更されなければ
ならないであろう。組合せロジックの場合、ロジック全
体が再マップされなければならないであろう。プログラ
ム可能アレイ・ロジックの場合、変更を実施するために
は、そのロジックの再プログラミングが可能である。し
かし、選択的な変更を実施することは難しい。PALの
或変換機能を再プログラムすることは、そのロジック全
体を再プログラムすることを必要とし、従って、より選
択的な方法で変換パスを変更することができることが望
ましい。
のアーキテクチャの変更が行われる場合、そのデコード
・ロジックは変更されなければならないであろう。変換
パスにおけるエラーが生じた場合にも変更されなければ
ならないであろう。組合せロジックの場合、ロジック全
体が再マップされなければならないであろう。プログラ
ム可能アレイ・ロジックの場合、変更を実施するために
は、そのロジックの再プログラミングが可能である。し
かし、選択的な変更を実施することは難しい。PALの
或変換機能を再プログラムすることは、そのロジック全
体を再プログラムすることを必要とし、従って、より選
択的な方法で変換パスを変更することができることが望
ましい。
【0014】
【発明が解決しようとする課題】本発明の目的は、従来
技術の欠点を回避し、しかも、実行時の高速命令デコー
ド、複数の命令を並列にデコードする可能性、及び変換
パスに対する変更の容易な実施を行い、命令をコードA
からコードBに変換することができるコード変換器を提
供することにある。
技術の欠点を回避し、しかも、実行時の高速命令デコー
ド、複数の命令を並列にデコードする可能性、及び変換
パスに対する変更の容易な実施を行い、命令をコードA
からコードBに変換することができるコード変換器を提
供することにある。
【0015】
【課題を解決するための手段】本発明は、コードAの命
令の各々及びコードBの命令の各々が命令エレメントよ
り成る場合にコードAの命令をコードBの命令に変換す
るための装置及び方法の両方を提供する。
令の各々及びコードBの命令の各々が命令エレメントよ
り成る場合にコードAの命令をコードBの命令に変換す
るための装置及び方法の両方を提供する。
【0016】本発明によれば、第1ステップにおいて、
少なくとも1つのテーブルから再構成情報が得られる。
その再構成情報は、コードBに変換されるべきコードA
の命令のうちの1つの命令に対応する。第2ステップに
おいて、コードBの命令のうちの少なくとも1つの命令
を生成するために、コードAの命令の命令エレメントが
その再構成情報に従って再構成される。
少なくとも1つのテーブルから再構成情報が得られる。
その再構成情報は、コードBに変換されるべきコードA
の命令のうちの1つの命令に対応する。第2ステップに
おいて、コードBの命令のうちの少なくとも1つの命令
を生成するために、コードAの命令の命令エレメントが
その再構成情報に従って再構成される。
【0017】前記再構成は再構成手段によって行われ
る。その再構成手段は、コードAの命令の命令エレメン
トを第1入力として使用し、そのコードAの命令に対応
する再構成情報を第2入力として使用する。しかも、そ
の再構成手段は、そのコードAの命令に機能的に対応す
る前記コードBの命令のうちの少なくとも1つの命令を
生成するために、その再構成情報に従ってそのコードA
の命令の命令エレメントを再構成する。
る。その再構成手段は、コードAの命令の命令エレメン
トを第1入力として使用し、そのコードAの命令に対応
する再構成情報を第2入力として使用する。しかも、そ
の再構成手段は、そのコードAの命令に機能的に対応す
る前記コードBの命令のうちの少なくとも1つの命令を
生成するために、その再構成情報に従ってそのコードA
の命令の命令エレメントを再構成する。
【0018】コードAの初期の命令は、コードBの命令
を生成するために必要な論理的レジスタの識別子を含ん
でいる。コードBの命令を生成するためには、論理手段
によってOPコード、レジスタ識別子、ステータス情
報、アドレス等を再構成する代わりに、コードAの前記
初期の命令に関連したテーブルにおけるパターンに従っ
て再結合が行われる。
を生成するために必要な論理的レジスタの識別子を含ん
でいる。コードBの命令を生成するためには、論理手段
によってOPコード、レジスタ識別子、ステータス情
報、アドレス等を再構成する代わりに、コードAの前記
初期の命令に関連したテーブルにおけるパターンに従っ
て再結合が行われる。
【0019】これは、1サイクルしか必要としない高速
の命令変換を行う。それは、論理的レジスタ・アドレ
ス、ステータス・ビット、論理的レジスタ識別子等の正
しい経路指定を行うために、前記テーブルに記憶された
ビット・パターンがハードウエアによって直接に使用可
能であるためである。これは1サイクルを要するだけで
あり、従って、命令変換及びデコーディングを実行時に
行うことができる。
の命令変換を行う。それは、論理的レジスタ・アドレ
ス、ステータス・ビット、論理的レジスタ識別子等の正
しい経路指定を行うために、前記テーブルに記憶された
ビット・パターンがハードウエアによって直接に使用可
能であるためである。これは1サイクルを要するだけで
あり、従って、命令変換及びデコーディングを実行時に
行うことができる。
【0020】本発明のもう1つの利点は、前記テーブル
に含まれる再構成情報が容易に交換可能であるというこ
とである。初期の命令の命令エレメントを新しい命令に
経路指定する方法に何らかの誤り又は矛盾が存在する場
合、これらの誤りはそのテーブルを変更することによっ
て容易に修正可能である。設計済みのコードA又はコー
ドBを更新する場合、又は新しい特徴又は命令が両方の
コードの何れにも含まれる場合、そのテーブルに対して
必要な変更を容易に行うことができる。重要な点は、前
記変更が選択的に実施可能であるということであり、そ
れは、変更された命令しか更新される必要がないという
ことを意味する。
に含まれる再構成情報が容易に交換可能であるというこ
とである。初期の命令の命令エレメントを新しい命令に
経路指定する方法に何らかの誤り又は矛盾が存在する場
合、これらの誤りはそのテーブルを変更することによっ
て容易に修正可能である。設計済みのコードA又はコー
ドBを更新する場合、又は新しい特徴又は命令が両方の
コードの何れにも含まれる場合、そのテーブルに対して
必要な変更を容易に行うことができる。重要な点は、前
記変更が選択的に実施可能であるということであり、そ
れは、変更された命令しか更新される必要がないという
ことを意味する。
【0021】パフォーマンスを高めるためには、コード
Aの複数の命令を並列に変換することが望ましい。それ
らの命令の各々の再構成は、1つの共通テーブルをアク
セスすることによって行うことが可能である。それは、
そのテーブルの複数のエントリが並列にアクセス可能で
あるためである。しかし、変換されるべき初期の命令の
数に対応する多数の再構成手段を設けることが必要であ
る。何らかの変更が行われなければならない場合、その
変更は1つの中央テーブルに対して行われるだけでよ
い。それは、そのテーブルが必要な再構成情報をすべて
含んでいるためである。これは、各変換パスが変更され
なければならないロジック変換手段に比べてずっと簡単
な更新を可能にする。そのテーブル手段によって、命令
を変換する方法を検査することは容易である。
Aの複数の命令を並列に変換することが望ましい。それ
らの命令の各々の再構成は、1つの共通テーブルをアク
セスすることによって行うことが可能である。それは、
そのテーブルの複数のエントリが並列にアクセス可能で
あるためである。しかし、変換されるべき初期の命令の
数に対応する多数の再構成手段を設けることが必要であ
る。何らかの変更が行われなければならない場合、その
変更は1つの中央テーブルに対して行われるだけでよ
い。それは、そのテーブルが必要な再構成情報をすべて
含んでいるためである。これは、各変換パスが変更され
なければならないロジック変換手段に比べてずっと簡単
な更新を可能にする。そのテーブル手段によって、命令
を変換する方法を検査することは容易である。
【0022】本発明の更なる実施例では、前記テーブル
手段はRAMテーブル手段として実現される。
手段はRAMテーブル手段として実現される。
【0023】前記テーブル手段をRAMテーブルとして
実施することは、テーブル内容を変更するための特に容
易な方法を与える。如何なる体系的な変更も容易に考慮
可能である。外部アーキテクチャは明確に定義可能であ
るが、それに対する追加機能を設計するか又は古くなっ
た命令を除去することも可能である。定義された命令の
サブセットしか必要としない環境が存在し得るし、或い
はすべての命令を使用することが許されないことがあ
る。そのテーブルにロードされたデータを変更すること
によって、これらの要件は考慮することができる。
実施することは、テーブル内容を変更するための特に容
易な方法を与える。如何なる体系的な変更も容易に考慮
可能である。外部アーキテクチャは明確に定義可能であ
るが、それに対する追加機能を設計するか又は古くなっ
た命令を除去することも可能である。定義された命令の
サブセットしか必要としない環境が存在し得るし、或い
はすべての命令を使用することが許されないことがあ
る。そのテーブルにロードされたデータを変更すること
によって、これらの要件は考慮することができる。
【0024】更なる利点は、エラーが容易に訂正可能で
あることである。命令が導入された時にエラーが生じそ
してそのエラーがその後の設計サイクルにおいて、例え
ば、最初のパワー・オンの後で検出された場合、その関
連の命令に対する回避手段の形成は前記テーブルの内容
を変更することによって可能となる。従って、その設計
のテストを継続することができ、それは出荷までの時間
(time−to−market)を減少させ、従っ
て、多額の金銭を節約することができる。
あることである。命令が導入された時にエラーが生じそ
してそのエラーがその後の設計サイクルにおいて、例え
ば、最初のパワー・オンの後で検出された場合、その関
連の命令に対する回避手段の形成は前記テーブルの内容
を変更することによって可能となる。従って、その設計
のテストを継続することができ、それは出荷までの時間
(time−to−market)を減少させ、従っ
て、多額の金銭を節約することができる。
【0025】本発明のもう1つの実施例では、前記テー
ブル手段はROMテーブル手段として実現される。
ブル手段はROMテーブル手段として実現される。
【0026】体系的な変更のために或いはエラーのため
に必要となり得るテーブルのエントリの変更は、ROM
を変更することによって処理可能である。しかし、この
実施方法の主たる利点は、ROMに対するアクセス・タ
イムが非常に短いことである。更なる利点は、ROMテ
ーブルのための必要なチップ領域が非常に小さいことで
ある。
に必要となり得るテーブルのエントリの変更は、ROM
を変更することによって処理可能である。しかし、この
実施方法の主たる利点は、ROMに対するアクセス・タ
イムが非常に短いことである。更なる利点は、ROMテ
ーブルのための必要なチップ領域が非常に小さいことで
ある。
【0027】本発明の更なる実施例では、前記コードA
の命令はCISC命令であり、前記コードBの命令はR
ISC命令である。
の命令はCISC命令であり、前記コードBの命令はR
ISC命令である。
【0028】外部命令ストリームの各CISC命令は少
なくとも1つの内部RISC命令に変換される。この実
施例は、一連のCISC命令がスーパスカラRISCプ
ロセッサによって処理されなければならない時、特に有
用である。各CISC命令は、通常、複数のRISC命
令によって置換されなければならないので、必要な数の
RISC命令を生成するための必要な再構成情報をすべ
て含むテーブル・エントリをアドレスすることが有利で
ある。高速且つ効率的なCISC/RISCデコードが
可能となる。外部CISCコード又は内部RISCコー
ドの両方の変更が容易に実施可能である。
なくとも1つの内部RISC命令に変換される。この実
施例は、一連のCISC命令がスーパスカラRISCプ
ロセッサによって処理されなければならない時、特に有
用である。各CISC命令は、通常、複数のRISC命
令によって置換されなければならないので、必要な数の
RISC命令を生成するための必要な再構成情報をすべ
て含むテーブル・エントリをアドレスすることが有利で
ある。高速且つ効率的なCISC/RISCデコードが
可能となる。外部CISCコード又は内部RISCコー
ドの両方の変更が容易に実施可能である。
【0029】本発明のもう1つの実施例では、前記コー
ドAの命令及び前記コードBの命令の両方がRISC命
令である。
ドAの命令及び前記コードBの命令の両方がRISC命
令である。
【0030】1つのセットのRISC命令を異なるセッ
トのRISC命令に変換する可能性は、通常、命令コー
ドBしか処理できないプロセッサによってコードAの命
令ストリームを処理することを可能にする。再構成情報
を含む変換テーブルによって、1つのプロセッサは、そ
のプロセッサの設計されたコードではない種々の異なる
RISCコードを処理することが可能となる。種々のテ
ーブルを並列に使用することによって、或いは1つのテ
ーブルの内容を交換することによって、種々のコード相
互間で切り換わることが可能である。コード変換が実行
時に得られるので、1つのプロセッサが多くの異なるR
ISCコード・フレイバを「理解する」ことができる。
トのRISC命令に変換する可能性は、通常、命令コー
ドBしか処理できないプロセッサによってコードAの命
令ストリームを処理することを可能にする。再構成情報
を含む変換テーブルによって、1つのプロセッサは、そ
のプロセッサの設計されたコードではない種々の異なる
RISCコードを処理することが可能となる。種々のテ
ーブルを並列に使用することによって、或いは1つのテ
ーブルの内容を交換することによって、種々のコード相
互間で切り換わることが可能である。コード変換が実行
時に得られるので、1つのプロセッサが多くの異なるR
ISCコード・フレイバを「理解する」ことができる。
【0031】本発明の好適な実施例では、前記再構成手
段は、前記コードAの命令の命令エレメントを、前記コ
ードBの命令の少なくとも1つの機能的に対応する命令
の命令エレメントを表すそれぞれのデータ・フィールド
に多重化する多重化手段として実現される。
段は、前記コードAの命令の命令エレメントを、前記コ
ードBの命令の少なくとも1つの機能的に対応する命令
の命令エレメントを表すそれぞれのデータ・フィールド
に多重化する多重化手段として実現される。
【0032】外部命令の命令エレメントをアセンブルし
直すためには、それらの命令エレメントは、それらの命
令エレメントを内部命令の種々のデータ・フィールドに
多重化するマルチプレクサに送られる。多くの理由で、
初期命令エレメントの再構成のためにマルチプレクサを
使用することは有利である。マルチプレクサは、安価で
且つ実施することが容易な標準的装置である。マルチプ
レクサは高速操作の装置として実現可能であり、従っ
て、その初期命令エレメントの再構成は1プロセッサ・
サイクルにおいて行われ得ることである。更に、制御線
は、その制御線が或マルチプレクサの出力に送られてそ
の結果生じる内部命令のデータ・フィールドに書き込ま
れるべき初期命令エレメントを選択することによって、
容易に実施可能である。
直すためには、それらの命令エレメントは、それらの命
令エレメントを内部命令の種々のデータ・フィールドに
多重化するマルチプレクサに送られる。多くの理由で、
初期命令エレメントの再構成のためにマルチプレクサを
使用することは有利である。マルチプレクサは、安価で
且つ実施することが容易な標準的装置である。マルチプ
レクサは高速操作の装置として実現可能であり、従っ
て、その初期命令エレメントの再構成は1プロセッサ・
サイクルにおいて行われ得ることである。更に、制御線
は、その制御線が或マルチプレクサの出力に送られてそ
の結果生じる内部命令のデータ・フィールドに書き込ま
れるべき初期命令エレメントを選択することによって、
容易に実施可能である。
【0033】本発明のもう1つの実施例によれば、前記
コードAの命令に対応する前記再構成情報は、前記コー
ドBの命令の命令エレメント毎の経路指定情報を含み、
その経路指定情報は、前記コードAの命令の命令エレメ
ントのうちのどれが前記コードBの命令の命令エレメン
トのうちの1つを表すそれぞれのデータ・フィールドに
送られるべきかを決定する。
コードAの命令に対応する前記再構成情報は、前記コー
ドBの命令の命令エレメント毎の経路指定情報を含み、
その経路指定情報は、前記コードAの命令の命令エレメ
ントのうちのどれが前記コードBの命令の命令エレメン
トのうちの1つを表すそれぞれのデータ・フィールドに
送られるべきかを決定する。
【0034】コードAの外部命令がコードBの内部命令
に変換される時、その外部命令に対応する前記テーブル
手段のテーブル・エントリがアクセスされる。このテー
ブル・エントリは前記再構成情報を含む。それは、内部
命令を生成するために、外部命令の種々の部分の再構成
を制御する。その再構成手段がマルチプレクサとして実
現される場合、その再構成情報はそのマルチプレクサを
直接に制御する。生成されるべきコードBの内部命令の
各データ・フィールドに対して、そのデータ・フィール
ドに書き込まれるべきコードAの外部命令の命令エレメ
ントの1つが選択されなければならない。従って、その
テーブル手段に含まれた再構成情報は、コードBデータ
・フィールドに経路指定されるべき命令エレメントを選
択するそのコードBデータ・フィールド毎の経路指定情
報を含まなければならない。外部コードAの命令の命令
エレメントはすべてマルチプレクサへの入力として使用
され、そのマルチプレクサの出力は、生成されるべきコ
ードBの命令のデータ・フィールドの1つに直接に書き
込まれる。そのような解決方法では、内部命令のデータ
・フィールド毎に1つのマルチプレクサが設けられなけ
ればならない。
に変換される時、その外部命令に対応する前記テーブル
手段のテーブル・エントリがアクセスされる。このテー
ブル・エントリは前記再構成情報を含む。それは、内部
命令を生成するために、外部命令の種々の部分の再構成
を制御する。その再構成手段がマルチプレクサとして実
現される場合、その再構成情報はそのマルチプレクサを
直接に制御する。生成されるべきコードBの内部命令の
各データ・フィールドに対して、そのデータ・フィール
ドに書き込まれるべきコードAの外部命令の命令エレメ
ントの1つが選択されなければならない。従って、その
テーブル手段に含まれた再構成情報は、コードBデータ
・フィールドに経路指定されるべき命令エレメントを選
択するそのコードBデータ・フィールド毎の経路指定情
報を含まなければならない。外部コードAの命令の命令
エレメントはすべてマルチプレクサへの入力として使用
され、そのマルチプレクサの出力は、生成されるべきコ
ードBの命令のデータ・フィールドの1つに直接に書き
込まれる。そのような解決方法では、内部命令のデータ
・フィールド毎に1つのマルチプレクサが設けられなけ
ればならない。
【0035】生成されるべき命令のデータ・フィールド
に従って前記再構成情報をセグメント化することは、そ
の再構成情報により前記再構成手段を直接に制御するこ
とを可能にする。それは、正しい入力を選択するために
その再構成情報を直接に使用することができるためであ
る。前記経路指定情報は、どの入力が前記マルチプレク
サの出力に送られるべきかを直接に決定するために使用
される。従って、その再構成情報をセグメント化すると
いうこの方法は簡単であり、高速の命令変換を可能にす
る。
に従って前記再構成情報をセグメント化することは、そ
の再構成情報により前記再構成手段を直接に制御するこ
とを可能にする。それは、正しい入力を選択するために
その再構成情報を直接に使用することができるためであ
る。前記経路指定情報は、どの入力が前記マルチプレク
サの出力に送られるべきかを直接に決定するために使用
される。従って、その再構成情報をセグメント化すると
いうこの方法は簡単であり、高速の命令変換を可能にす
る。
【0036】本発明のもう1つの実施例によれば、前記
テーブル手段は、前記コードAの命令のうちの1つの命
令をコードBの機能的に対応する命令の数に関連付け
る。
テーブル手段は、前記コードAの命令のうちの1つの命
令をコードBの機能的に対応する命令の数に関連付け
る。
【0037】命令を変換する時、外部命令によって遂行
されるオペレーションと全く同じオペレーションが複数
の内部命令によって(それらのコードは全く異なるけれ
ども)遂行されるように、その外部命令はそれらの内部
命令によって置換されなければならない。コードBの命
令はコードAの外部命令に機能的に対応しなければなら
ない。多くの場合、1つの外部命令を1つの対応する内
部命令によって置換することは不可能である。その代わ
り、その外部命令を完全にエミュレートするためには複
数の内部命令が必要である。
されるオペレーションと全く同じオペレーションが複数
の内部命令によって(それらのコードは全く異なるけれ
ども)遂行されるように、その外部命令はそれらの内部
命令によって置換されなければならない。コードBの命
令はコードAの外部命令に機能的に対応しなければなら
ない。多くの場合、1つの外部命令を1つの対応する内
部命令によって置換することは不可能である。その代わ
り、その外部命令を完全にエミュレートするためには複
数の内部命令が必要である。
【0038】これは、複雑なCISC命令を考察する時
に明らかになる。各CISC命令は多数のタスクを遂行
し、従って、同じ機能を達成するためには、複数の内部
RISC命令が必要である。
に明らかになる。各CISC命令は多数のタスクを遂行
し、従って、同じ機能を達成するためには、複数の内部
RISC命令が必要である。
【0039】複数の内部命令が生成されなければならな
い場合、外部命令に対応するテーブル・エントリが、生
成されるべき前記内部命令の数を含んでいる。再構成情
報が各内部命令に対して与えられる。従って、対応する
コードBの命令はすべて並列に生成可能であり、それは
命令デコーディングをずっと速くする。
い場合、外部命令に対応するテーブル・エントリが、生
成されるべき前記内部命令の数を含んでいる。再構成情
報が各内部命令に対して与えられる。従って、対応する
コードBの命令はすべて並列に生成可能であり、それは
命令デコーディングをずっと速くする。
【0040】特に、CISC命令を実行時にデコードす
る時、各CISC命令から生じるRISCのようなオペ
レーションが並列に生成可能である。
る時、各CISC命令から生じるRISCのようなオペ
レーションが並列に生成可能である。
【0041】本発明の更にもう1つの実施例によれば、
前記テーブル手段は前記コードAの命令を、前記コード
Bの機能的に対応する少なくとも1つの命令の少なくと
も1つのOPコードに関連付ける。
前記テーブル手段は前記コードAの命令を、前記コード
Bの機能的に対応する少なくとも1つの命令の少なくと
も1つのOPコードに関連付ける。
【0042】変換されるべきコードAの外部命令のOP
コードは、前記テーブル手段における対応するエントリ
を見つけるために使用される。そのエントリは前記初期
OPコードを、生成されるべき内部命令のすべてのOP
コードに関連付ける。従って、各テーブル・エントリに
は、1つ又は複数のOPコードが含まれる。RISC−
RISC変換に対する通常の場合は、コードAのOPコ
ードとコードBのOPコードとの間の1対1対応である
けれども、CISCデコーディングの場合にはコードA
のOPコード当たりコードBの複数のOPコードが存在
しなければならない。前記テーブル手段から得られるコ
ードBのOPコードは、コードBの対応する内部命令を
形成するために、外部命令に含まれたレジスタ識別子、
ステータス情報等と共に使用される。対応するコードB
のOPコードを前記テーブルに直接に記憶することは高
速の命令変換を行う。
コードは、前記テーブル手段における対応するエントリ
を見つけるために使用される。そのエントリは前記初期
OPコードを、生成されるべき内部命令のすべてのOP
コードに関連付ける。従って、各テーブル・エントリに
は、1つ又は複数のOPコードが含まれる。RISC−
RISC変換に対する通常の場合は、コードAのOPコ
ードとコードBのOPコードとの間の1対1対応である
けれども、CISCデコーディングの場合にはコードA
のOPコード当たりコードBの複数のOPコードが存在
しなければならない。前記テーブル手段から得られるコ
ードBのOPコードは、コードBの対応する内部命令を
形成するために、外部命令に含まれたレジスタ識別子、
ステータス情報等と共に使用される。対応するコードB
のOPコードを前記テーブルに直接に記憶することは高
速の命令変換を行う。
【0043】
【発明の実施の形態】図1は、CISC命令又はRIS
C命令でよい外部命令(100)を少なくとも1つの内
部命令(101)に変換する命令コンバータの一般的な
セットアップを示す。その内部命令がスーパスカラ・プ
ロセッサによって処理されるべき場合、RISCコード
を内部的に使用することは有利である。1つの共通フォ
ーマットに形成された内部RISC命令は順不同の処理
に理想的に適している。
C命令でよい外部命令(100)を少なくとも1つの内
部命令(101)に変換する命令コンバータの一般的な
セットアップを示す。その内部命令がスーパスカラ・プ
ロセッサによって処理されるべき場合、RISCコード
を内部的に使用することは有利である。1つの共通フォ
ーマットに形成された内部RISC命令は順不同の処理
に理想的に適している。
【0044】コードAの命令である外部命令100は、
コードAのOPコード(102)、「即値」データ・フ
ィールド(110)、その命令のソース・レジスタ及び
ターゲット・レジスタを指定する論理的レジスタ識別子
(111、112)、及びステータス・ビットのような
その命令に関する付加的情報より成る。
コードAのOPコード(102)、「即値」データ・フ
ィールド(110)、その命令のソース・レジスタ及び
ターゲット・レジスタを指定する論理的レジスタ識別子
(111、112)、及びステータス・ビットのような
その命令に関する付加的情報より成る。
【0045】「即値」データ・フィールドに含まれた値
は、「OR即値」、「AND即値」等のような、いわゆ
る「即値オペレーション」を遂行するために必要であ
る。その値は、その即値オペレーションの他のオペラン
ドとAND又はORされるべき定数を指定する。アドレ
ス演算では、「即値」データ・フィールドに含まれた値
は、アドレスの「変位」を指定するために使用される。
は、「OR即値」、「AND即値」等のような、いわゆ
る「即値オペレーション」を遂行するために必要であ
る。その値は、その即値オペレーションの他のオペラン
ドとAND又はORされるべき定数を指定する。アドレ
ス演算では、「即値」データ・フィールドに含まれた値
は、アドレスの「変位」を指定するために使用される。
【0046】外部命令(100)を一組の内部命令(1
01)に変換するために必要な再構成情報が変換テーブ
ル(106)に含まれている。その変換テーブルは、R
OMテーブルとして又はRAMテーブルとして実施可能
である。そのテーブルの各エントリ(105)は前記外
部コードの命令(100)の1つに対応し、この特定な
命令の命令エレメントがその対応する内部命令(10
1)を形成するためにどのように再構成されるべきであ
るかを決定する。
01)に変換するために必要な再構成情報が変換テーブ
ル(106)に含まれている。その変換テーブルは、R
OMテーブルとして又はRAMテーブルとして実施可能
である。そのテーブルの各エントリ(105)は前記外
部コードの命令(100)の1つに対応し、この特定な
命令の命令エレメントがその対応する内部命令(10
1)を形成するためにどのように再構成されるべきであ
るかを決定する。
【0047】各変換テーブル・エントリ(105)は1
つの外部コードAの命令(100)に対応するので、そ
の外部命令のOPコード(102)が正しい変換テーブ
ル・エントリを決定するために使用可能である。これは
そのOPコード(102)をアドレス生成ロジック(1
04)に送ることによって行われ、そのアドレス生成ロ
ジックは、そのOPコードをそのテーブルにおける対応
するエントリのアドレスに変換する。そこで、このアド
レスは、対応する変換テーブル・エントリ(105)を
アクセスする(103)ために使用される。そのエント
リは、外部命令が変換されるべきすべての内部コードB
の命令のOPコード(107)、及び外部命令のエレメ
ントの再結合を制御するために使用されるマルチプレク
サ制御情報(129)を含む。
つの外部コードAの命令(100)に対応するので、そ
の外部命令のOPコード(102)が正しい変換テーブ
ル・エントリを決定するために使用可能である。これは
そのOPコード(102)をアドレス生成ロジック(1
04)に送ることによって行われ、そのアドレス生成ロ
ジックは、そのOPコードをそのテーブルにおける対応
するエントリのアドレスに変換する。そこで、このアド
レスは、対応する変換テーブル・エントリ(105)を
アクセスする(103)ために使用される。そのエント
リは、外部命令が変換されるべきすべての内部コードB
の命令のOPコード(107)、及び外部命令のエレメ
ントの再結合を制御するために使用されるマルチプレク
サ制御情報(129)を含む。
【0048】そのテーブル・エントリに含まれたコード
BのOPコード(107)は、生成されるべき内部命令
のそれぞれのデータ・フィールド(109)に直接に送
られる(108)。
BのOPコード(107)は、生成されるべき内部命令
のそれぞれのデータ・フィールド(109)に直接に送
られる(108)。
【0049】「即値」データ(110)、論理的レジス
タ識別子(111、112)、ステータス情報、及びそ
の他(113、114)のような外部命令のエレメント
の再構成は一組のマルチプレクサ(120−124)に
よって行われる。各マルチプレクサは内部コードBの命
令における1つのデータ・フィールドに対応し、各マル
チプレクサの出力はその対応するデータ・フィールドに
直接に書き込まれる。従って、MUX1(120)はコ
ードBの命令OP−B1のデータ・フィールド(11
5)に直接に書き込まれ(131)、MUX2(12
1)はデータ・フィールド(116)に対応し、MUX
3(122)の出力はデータ・フィールド(117)に
直接に送られる。
タ識別子(111、112)、ステータス情報、及びそ
の他(113、114)のような外部命令のエレメント
の再構成は一組のマルチプレクサ(120−124)に
よって行われる。各マルチプレクサは内部コードBの命
令における1つのデータ・フィールドに対応し、各マル
チプレクサの出力はその対応するデータ・フィールドに
直接に書き込まれる。従って、MUX1(120)はコ
ードBの命令OP−B1のデータ・フィールド(11
5)に直接に書き込まれ(131)、MUX2(12
1)はデータ・フィールド(116)に対応し、MUX
3(122)の出力はデータ・フィールド(117)に
直接に送られる。
【0050】マルチプレクサ(120−124)の各々
は種々の可能な入力を選択することができる。それらの
可能な入力は、「即値」データ・フィールド(11
0)、ソース・レジスタ及びターゲット・レジスタの両
方に対する論理的レジスタ識別子(111、112)、
ステータス情報、及びその他(113、114)のよう
な外部コードAの命令に含まれたデータすべてを含む。
外部命令に含まれたデータの他に、そのプロセッサの定
義された記憶セルに含まれたデータが前記マルチプレク
サへの入力として使用可能である。それらの記憶セルの
内容は、単に、それらの記憶セルに恒久的に含まれる定
数より成ることもある。記憶セル(125、126)は
2つの異なる定数を含むものと仮定し、更に、それらの
2つのセルはマルチプレクサ(120−124)のうち
の何れかへの入力として選択可能であるものと仮定す
る。記憶セル(125)が選択される場合、前記定数で
あるそれの内容が内部命令のデータ・フィールドに書き
込まれる。その定数は、例えば、或プロセッサ・レジス
タを指定することもあろう。これは、この特定のレジス
タの名前がマルチプレクサによって選択され、ソース又
はターゲット・レジスタとして内部命令に送られる。従
って、記憶セル(125、126)は、その内部命令に
よって使用されるべき論理的レジスタの名前を含む。
は種々の可能な入力を選択することができる。それらの
可能な入力は、「即値」データ・フィールド(11
0)、ソース・レジスタ及びターゲット・レジスタの両
方に対する論理的レジスタ識別子(111、112)、
ステータス情報、及びその他(113、114)のよう
な外部コードAの命令に含まれたデータすべてを含む。
外部命令に含まれたデータの他に、そのプロセッサの定
義された記憶セルに含まれたデータが前記マルチプレク
サへの入力として使用可能である。それらの記憶セルの
内容は、単に、それらの記憶セルに恒久的に含まれる定
数より成ることもある。記憶セル(125、126)は
2つの異なる定数を含むものと仮定し、更に、それらの
2つのセルはマルチプレクサ(120−124)のうち
の何れかへの入力として選択可能であるものと仮定す
る。記憶セル(125)が選択される場合、前記定数で
あるそれの内容が内部命令のデータ・フィールドに書き
込まれる。その定数は、例えば、或プロセッサ・レジス
タを指定することもあろう。これは、この特定のレジス
タの名前がマルチプレクサによって選択され、ソース又
はターゲット・レジスタとして内部命令に送られる。従
って、記憶セル(125、126)は、その内部命令に
よって使用されるべき論理的レジスタの名前を含む。
【0051】更に、前記マルチプレクサへの入力として
も使用される補助レジスタ(127)が存在する。その
補助レジスタの内容が入力として選択される場合、それ
らの内容は内部命令のデータ・フィールドに送られる。
これらの補助レジスタは論理的レジスタの名前を一時的
に含む。
も使用される補助レジスタ(127)が存在する。その
補助レジスタの内容が入力として選択される場合、それ
らの内容は内部命令のデータ・フィールドに送られる。
これらの補助レジスタは論理的レジスタの名前を一時的
に含む。
【0052】例えば、命令(100)は、複数の論理的
ソース・レジスタ及びターゲット・レジスタを使用する
複雑なCISC命令であると仮定しよう。このCISC
命令を複数の簡単なRISCオペレーションにデコード
する時、そのRISCオペレーションは中間結果を発生
する。1つのCISC命令に関連した種々のRISC命
令相互間で中間結果を回送するためには、論理的レジス
タが一時的に設けられなければならない。中間結果を保
持するそのような論理的レジスタの名前が記憶セル(1
27)に含まれることがある。1つのCISC命令に対
応するRISC命令が形成される時、ソース・レジスタ
又はターゲット・レジスタを指定するために、前記中間
の論理的レジスタの名前が記憶セル(127)からRI
SCオペレーションのデータ・フィールドのうちの何れ
かに送られることがある。
ソース・レジスタ及びターゲット・レジスタを使用する
複雑なCISC命令であると仮定しよう。このCISC
命令を複数の簡単なRISCオペレーションにデコード
する時、そのRISCオペレーションは中間結果を発生
する。1つのCISC命令に関連した種々のRISC命
令相互間で中間結果を回送するためには、論理的レジス
タが一時的に設けられなければならない。中間結果を保
持するそのような論理的レジスタの名前が記憶セル(1
27)に含まれることがある。1つのCISC命令に対
応するRISC命令が形成される時、ソース・レジスタ
又はターゲット・レジスタを指定するために、前記中間
の論理的レジスタの名前が記憶セル(127)からRI
SCオペレーションのデータ・フィールドのうちの何れ
かに送られることがある。
【0053】各マルチプレクサは前記の種々の入力(1
28)の1つを選択し、その選択された入力をそれの出
力にリンクする。その選択は複数の制御線(130)に
よって遂行される。
28)の1つを選択し、その選択された入力をそれの出
力にリンクする。その選択は複数の制御線(130)に
よって遂行される。
【0054】各変換テーブル・エントリは、初期コード
Aの命令を変換するために必要なすべてのMUX制御情
報(129)を保持する。その制御情報は、形成されな
ければならない内部オペレーションの数に従って、及び
それらの内部命令のオペランドに従ってセグメント化さ
れる。内部命令のオペランド毎に、その内部命令のオペ
ランドのデータ・フィールドに送られるべき可能な入力
(110ー114、125、126、127)の1つを
選択する複数のビットが与えられる。従って、変換テー
ブル(129)におけるMUX制御情報は内部命令のオ
ペランドに対応する複数のビット・パターンとしてセグ
メント化される。
Aの命令を変換するために必要なすべてのMUX制御情
報(129)を保持する。その制御情報は、形成されな
ければならない内部オペレーションの数に従って、及び
それらの内部命令のオペランドに従ってセグメント化さ
れる。内部命令のオペランド毎に、その内部命令のオペ
ランドのデータ・フィールドに送られるべき可能な入力
(110ー114、125、126、127)の1つを
選択する複数のビットが与えられる。従って、変換テー
ブル(129)におけるMUX制御情報は内部命令のオ
ペランドに対応する複数のビット・パターンとしてセグ
メント化される。
【0055】そのようなセグメント化の利点は、前記ビ
ット・パターンがそれらの内部命令の1つのデータ・フ
ィールドに対応したマルチプレクサを制御するために直
接に使用可能である。例えば、MUX2(121)は生
成されるべき第1内部命令の第2オペランドを保持す
る。そのMUX2は、データ・フィールド(116)に
送られるべき入力を選択するために、データ・フィール
ド(116)に対応したそのMUX制御情報(129)
の部分を有する。そのRAMテーブル(106)によっ
て送られたビット・パターンは、可能な入力(110−
114、125、126、127)のうちのどれがMU
X2の出力を介してデータ・フィールド(116)に送
られるべきかを制御するために(130)使用可能であ
る。
ット・パターンがそれらの内部命令の1つのデータ・フ
ィールドに対応したマルチプレクサを制御するために直
接に使用可能である。例えば、MUX2(121)は生
成されるべき第1内部命令の第2オペランドを保持す
る。そのMUX2は、データ・フィールド(116)に
送られるべき入力を選択するために、データ・フィール
ド(116)に対応したそのMUX制御情報(129)
の部分を有する。そのRAMテーブル(106)によっ
て送られたビット・パターンは、可能な入力(110−
114、125、126、127)のうちのどれがMU
X2の出力を介してデータ・フィールド(116)に送
られるべきかを制御するために(130)使用可能であ
る。
【0056】図2には、1つの外部命令(100)が複
数のOPコードによって定義される場合、その外部命令
に対応した正しい変換テーブル・エントリを見つける方
法を示す。図2の例では、2つのOPコード、即ち、O
P−A1(201)及びOP−A2(202)が、両方
とも、変換テーブル(106)においてそれらのOPコ
ードをアドレスにデコードするためにアドレス生成ロジ
ック(203)に送られる。このテーブル・アドレスを
アクセスすることによって、対応するコードBのOPコ
ード(107)及び対応するマルチプレクサ制御情報
(129)を決定することができる。
数のOPコードによって定義される場合、その外部命令
に対応した正しい変換テーブル・エントリを見つける方
法を示す。図2の例では、2つのOPコード、即ち、O
P−A1(201)及びOP−A2(202)が、両方
とも、変換テーブル(106)においてそれらのOPコ
ードをアドレスにデコードするためにアドレス生成ロジ
ック(203)に送られる。このテーブル・アドレスを
アクセスすることによって、対応するコードBのOPコ
ード(107)及び対応するマルチプレクサ制御情報
(129)を決定することができる。
【0057】図3は変換テーブル・エントリの構造を示
す。変換テーブル(106)は1つのアレイとして実施
可能である。この場合、そのアレイの各行は1つのコー
ドAの命令に対応する情報を保持する。代表的なアレイ
は数百個のエントリを含むであろう。
す。変換テーブル(106)は1つのアレイとして実施
可能である。この場合、そのアレイの各行は1つのコー
ドAの命令に対応する情報を保持する。代表的なアレイ
は数百個のエントリを含むであろう。
【0058】図3に示された例では、1つの外部命令が
複数の内部命令に変換されなければならない。エントリ
の第1データ・フィールドは、その外部コードAの命令
に対応したn個の内部コードBの命令を保持する。この
例では、nは4に等しく、従って、4個の内部命令が生
成されなければならない。
複数の内部命令に変換されなければならない。エントリ
の第1データ・フィールドは、その外部コードAの命令
に対応したn個の内部コードBの命令を保持する。この
例では、nは4に等しく、従って、4個の内部命令が生
成されなければならない。
【0059】制御情報は生成されるべき命令に従ってセ
グメント化され、そこには、命令1(302)に対する
制御データ、命令2(303)に対する制御データ、命
令3(304)に対する制御データ、及び命令4(30
5)に対する制御データが存在する。生成されるべき各
命令に対応する制御情報は前記内部命令のコードBのO
Pコードを含む。命令1(302)に対する制御データ
・フィールドには、OP−B1(306)が与えられ、
命令2乃至4に対する制御情報ブロックには、それに対
応して、OP−B2(307)、OP−B3(30
8)、及びOP−B4(309)が与えられる。
グメント化され、そこには、命令1(302)に対する
制御データ、命令2(303)に対する制御データ、命
令3(304)に対する制御データ、及び命令4(30
5)に対する制御データが存在する。生成されるべき各
命令に対応する制御情報は前記内部命令のコードBのO
Pコードを含む。命令1(302)に対する制御データ
・フィールドには、OP−B1(306)が与えられ、
命令2乃至4に対する制御情報ブロックには、それに対
応して、OP−B2(307)、OP−B3(30
8)、及びOP−B4(309)が与えられる。
【0060】次に、ステータス・ビットのようなエクス
トラ・ビット(310)が各コードBのOPコードに与
えられる。例えば、内部命令の各々に対して、それがデ
ィスパッチされるべき実行ユニット(312)が指定さ
れる。そこで、MUX制御(311)に対して使用され
るビット・パターンが与えられる。
トラ・ビット(310)が各コードBのOPコードに与
えられる。例えば、内部命令の各々に対して、それがデ
ィスパッチされるべき実行ユニット(312)が指定さ
れる。そこで、MUX制御(311)に対して使用され
るビット・パターンが与えられる。
【0061】MUX制御ビット・パターンが内部命令の
オペランドにどのように対応するかを理解するために、
命令2(303)の制御情報が更に詳細に示される。命
令2に対するMUX制御データ・フィールド(313)
は、内部命令2の各オペランドに対するビット・パター
ンを含んでいる。各ビット・パターンは、複数の可能な
入力のうちのどれが内部命令(この場合は、命令2)の
特定のオペランド・データ・フィールドに送られるべき
かを指定する。従って、内部命令オペランド(314、
315、317、318、319)毎に1つのビットパ
ターンが存在する。
オペランドにどのように対応するかを理解するために、
命令2(303)の制御情報が更に詳細に示される。命
令2に対するMUX制御データ・フィールド(313)
は、内部命令2の各オペランドに対するビット・パター
ンを含んでいる。各ビット・パターンは、複数の可能な
入力のうちのどれが内部命令(この場合は、命令2)の
特定のオペランド・データ・フィールドに送られるべき
かを指定する。従って、内部命令オペランド(314、
315、317、318、319)毎に1つのビットパ
ターンが存在する。
【0062】論理的ソース・レジスタは5ビット(31
8、319)によって指定されなければならず、それに
よって、ソース・オペランド(317)として使用され
る条件コードは2ビットを必要とする。「即値」データ
・フィールド(316)に正しい命令部分を経路指定す
るためには5つの選択ビットが必要である。正しいコー
ドA命令部分を命令2のターゲット・データ・フィール
ドに経路指定するためには、5つの選択ビットが必要で
ある(315)。その内部命令2が実際の条件コードに
依存するかどうかを表すために、2ビットが与えられな
ければならない(317)。その命令2が新しい条件コ
ードを発生する(実際の条件コードが修正されることを
意味する)かどうかを表すために、2ビットが必要であ
る(314)。
8、319)によって指定されなければならず、それに
よって、ソース・オペランド(317)として使用され
る条件コードは2ビットを必要とする。「即値」データ
・フィールド(316)に正しい命令部分を経路指定す
るためには5つの選択ビットが必要である。正しいコー
ドA命令部分を命令2のターゲット・データ・フィール
ドに経路指定するためには、5つの選択ビットが必要で
ある(315)。その内部命令2が実際の条件コードに
依存するかどうかを表すために、2ビットが与えられな
ければならない(317)。その命令2が新しい条件コ
ードを発生する(実際の条件コードが修正されることを
意味する)かどうかを表すために、2ビットが必要であ
る(314)。
【0063】図4は、一般にはRISC命令である内部
命令のフォーマットを示す。図4に示された命令フォー
マットはオペランドをソース・オペランド及びターゲッ
ト・オペランドに分け、従って、スーパスカラRISC
プロセッサにおけるデータ従属性レゾリューションに十
分に適合する。内部命令のフォーマットは、コードBの
OPコード、即ち、OP−Bに対するデータ・フィール
ド(401)及び複数の制御ビット(402)を含む。
更に、対応するコードAの命令の命令アドレスは対応す
る内部命令に送られ、データ・フィールド(403)に
記憶される。この命令アドレスによって、外部命令シー
ケンスにおけるジャンプ及びブランチが内部命令シーケ
ンスに変更可能である。データ・フィールド(404)
は「即値」データ・フィールドであり、それは、即値演
算又はアドレス演算において使用される定数を含んでい
る。データ・フィールド(405、406、407)は
内部命令のソース・オペランドを指定する。ソース・オ
ペランドとして使用されるべき2つの論理的レジスタの
名前がデータ・フィールド(406、407)に含まれ
る。
命令のフォーマットを示す。図4に示された命令フォー
マットはオペランドをソース・オペランド及びターゲッ
ト・オペランドに分け、従って、スーパスカラRISC
プロセッサにおけるデータ従属性レゾリューションに十
分に適合する。内部命令のフォーマットは、コードBの
OPコード、即ち、OP−Bに対するデータ・フィール
ド(401)及び複数の制御ビット(402)を含む。
更に、対応するコードAの命令の命令アドレスは対応す
る内部命令に送られ、データ・フィールド(403)に
記憶される。この命令アドレスによって、外部命令シー
ケンスにおけるジャンプ及びブランチが内部命令シーケ
ンスに変更可能である。データ・フィールド(404)
は「即値」データ・フィールドであり、それは、即値演
算又はアドレス演算において使用される定数を含んでい
る。データ・フィールド(405、406、407)は
内部命令のソース・オペランドを指定する。ソース・オ
ペランドとして使用されるべき2つの論理的レジスタの
名前がデータ・フィールド(406、407)に含まれ
る。
【0064】実際の条件コードは、例えば、「条件付き
ブランチ」オペレーションにおけるソース・オペランド
として使用可能である。これらのケースでは、実際の条
件コードが命令の1つとして使用されるべきであること
がデータ・フィールド405において示される。
ブランチ」オペレーションにおけるソース・オペランド
として使用可能である。これらのケースでは、実際の条
件コードが命令の1つとして使用されるべきであること
がデータ・フィールド405において示される。
【0065】その命令では、結果データがどこに書き込
まれるべきかが指定されなければならない。データ・フ
ィールド(409)は、ターゲット・レジスタとして使
用されるべき論理的レジスタの名前を含んでいる。更
に、命令は実際の条件コードを修正し、従って、新しい
条件コード値を生じさせてもよい。この場合、新しい条
件コードはターゲット・オペランドとして扱われること
になり、これはデータ・フィールド(408)において
表される。
まれるべきかが指定されなければならない。データ・フ
ィールド(409)は、ターゲット・レジスタとして使
用されるべき論理的レジスタの名前を含んでいる。更
に、命令は実際の条件コードを修正し、従って、新しい
条件コード値を生じさせてもよい。この場合、新しい条
件コードはターゲット・オペランドとして扱われること
になり、これはデータ・フィールド(408)において
表される。
【0066】図5は、命令変換器のレイアウトを更に詳
細に示す。外部コードAの命令(100)はコードBに
変換されるべきものである。これは、変換テーブル(1
06)から再構成情報を得ることによって行われ、そし
てその再構成情報は一組のマルチプレクサ(510−5
16)を制御するために使用される。各マルチプレクサ
の出力は、生成されるべき内部コードBの命令(40
0)の1つのデータ・フィールドに対応する。
細に示す。外部コードAの命令(100)はコードBに
変換されるべきものである。これは、変換テーブル(1
06)から再構成情報を得ることによって行われ、そし
てその再構成情報は一組のマルチプレクサ(510−5
16)を制御するために使用される。各マルチプレクサ
の出力は、生成されるべき内部コードBの命令(40
0)の1つのデータ・フィールドに対応する。
【0067】外部命令のOP−A(102)はアドレス
生成ロジック(104)に送られる。これは、OP−A
に対応する変換テーブル・エントリを決定することを可
能にする。その変換テーブル・エントリは、マルチプレ
クサ(510−516)の各々にとって必要な制御情報
をすべて含んでいる。従って、その制御情報は、生成さ
れるべき内部命令のデータ・フィールドに従って構成さ
れる。制御情報の各部分は、各マルチプレクサの可能な
入力の1つを選択するために、それのそれぞれのマルチ
プレクサに送られる。その選択された入力はマルチプレ
クサの出力に送られ、そのマルチプレクサが対応する内
部命令(400)のデータ・フィールドに書き込まれ
る。
生成ロジック(104)に送られる。これは、OP−A
に対応する変換テーブル・エントリを決定することを可
能にする。その変換テーブル・エントリは、マルチプレ
クサ(510−516)の各々にとって必要な制御情報
をすべて含んでいる。従って、その制御情報は、生成さ
れるべき内部命令のデータ・フィールドに従って構成さ
れる。制御情報の各部分は、各マルチプレクサの可能な
入力の1つを選択するために、それのそれぞれのマルチ
プレクサに送られる。その選択された入力はマルチプレ
クサの出力に送られ、そのマルチプレクサが対応する内
部命令(400)のデータ・フィールドに書き込まれ
る。
【0068】内部命令(400)を生成するために、コ
ードBのOPコード、即ち、OP−BがOP−Aに対応
する変換テーブル・エントリから読み取られ、その内部
命令に送られ、データ・フィールド401に記憶され
る。又、外部命令(100)の命令アドレス(500)
は、その内部命令の対応するデータ・フィールド(40
3)に直接に送られる。
ードBのOPコード、即ち、OP−BがOP−Aに対応
する変換テーブル・エントリから読み取られ、その内部
命令に送られ、データ・フィールド401に記憶され
る。又、外部命令(100)の命令アドレス(500)
は、その内部命令の対応するデータ・フィールド(40
3)に直接に送られる。
【0069】その内部命令のこれらの2つのデータ・フ
ィールド、即ち、OPコードに対するデータ・フィール
ド(401)、及び命令アドレスに対するデータ・フィ
ールド(403)は、マルチプレクサの出力に結合され
ないフィールドである。
ィールド、即ち、OPコードに対するデータ・フィール
ド(401)、及び命令アドレスに対するデータ・フィ
ールド(403)は、マルチプレクサの出力に結合され
ないフィールドである。
【0070】そのマルチプレクサが働く方法を理解する
ために、次に、論理的レジスタの名前を内部命令のソー
ス・データ・フィールド(406、407)に送る方法
を考察してみよう。対応するマルチプレクサ(515、
516)の各々は広範囲の可能な入力を有する。論理的
ソース・レジスタの名前を含み得る外部レジスタの命令
エレメント(501−505)はそれらのマルチプレク
サの入力である。
ために、次に、論理的レジスタの名前を内部命令のソー
ス・データ・フィールド(406、407)に送る方法
を考察してみよう。対応するマルチプレクサ(515、
516)の各々は広範囲の可能な入力を有する。論理的
ソース・レジスタの名前を含み得る外部レジスタの命令
エレメント(501−505)はそれらのマルチプレク
サの入力である。
【0071】命令のコンテキスト次第で、事前指定され
た論理的レジスタの名前を入力として使用することも意
味あることであろう。論理的レジスタのこれらの「一定
値」の名前は別個の記憶装置(508)に含まれる。こ
れらの「一定値」も前記マルチプレクサ(515)にハ
ード・ワイヤード入力として実施可能である。図5の例
では、論理的レジスタの名前「RN」、「4C」、及び
「4F」はマルチプレクサ(516)の一定値入力であ
る。
た論理的レジスタの名前を入力として使用することも意
味あることであろう。論理的レジスタのこれらの「一定
値」の名前は別個の記憶装置(508)に含まれる。こ
れらの「一定値」も前記マルチプレクサ(515)にハ
ード・ワイヤード入力として実施可能である。図5の例
では、論理的レジスタの名前「RN」、「4C」、及び
「4F」はマルチプレクサ(516)の一定値入力であ
る。
【0072】しかし、これらの一定のレジスタ名を使用
する他に、論理的レジスタを動的に割り当てることも可
能である。それらのレジスタの名前は補助レジスタに書
き込まれる。それらのマルチプレクサは、その動的に割
り当てられたレジスタの名前をそれぞれのソース・デー
タ・フィールド(406、407)に送るために、それ
らの補助レジスタをアクセスすることができる。
する他に、論理的レジスタを動的に割り当てることも可
能である。それらのレジスタの名前は補助レジスタに書
き込まれる。それらのマルチプレクサは、その動的に割
り当てられたレジスタの名前をそれぞれのソース・デー
タ・フィールド(406、407)に送るために、それ
らの補助レジスタをアクセスすることができる。
【0073】前記恒久的に割り当てられたレジスタ及び
動的に割り当てられたレジスタは、複雑な外部命令が複
数の内部RISC命令に変換される時、特に有用であ
る。それらの対応するRISC命令相互間に、新たなデ
ータ従属性が生じる。例えば、第1RISC命令によっ
て生じた中間結果は第2RISC命令に送られなければ
ならない。このケースでは、それらの内部命令相互間で
データを送ることができるようにするために、第1命令
によるターゲット・レジスタとして、及び第2命令によ
るソース・レジスタとして使用される論理的レジスタが
予約されなければならない。
動的に割り当てられたレジスタは、複雑な外部命令が複
数の内部RISC命令に変換される時、特に有用であ
る。それらの対応するRISC命令相互間に、新たなデ
ータ従属性が生じる。例えば、第1RISC命令によっ
て生じた中間結果は第2RISC命令に送られなければ
ならない。このケースでは、それらの内部命令相互間で
データを送ることができるようにするために、第1命令
によるターゲット・レジスタとして、及び第2命令によ
るソース・レジスタとして使用される論理的レジスタが
予約されなければならない。
【0074】基本的には、ターゲット・オペランドを指
定する方法を考察する時、同じ考えが適用される。対応
するマルチプレクサ(511)は、外部命令の命令エレ
メント(501−505)又は事前指定されたレジスタ
名をターゲット・オペランド・フィールド409に送る
ことができる。
定する方法を考察する時、同じ考えが適用される。対応
するマルチプレクサ(511)は、外部命令の命令エレ
メント(501−505)又は事前指定されたレジスタ
名をターゲット・オペランド・フィールド409に送る
ことができる。
【0075】外部命令の前記命令エレメント(501−
505)はそれらのマルチプレクサに直接に送られるか
或いは、最初に、事前処理ロジック(506)によって
修正される。
505)はそれらのマルチプレクサに直接に送られるか
或いは、最初に、事前処理ロジック(506)によって
修正される。
【0076】「即値」データ・フィールド(404)は
論理的レジスタの名前を含んでいない。それは一定値を
含んでいる。その一定値は、外部命令の命令エレメント
(501−505)から、又はマルチプレクサ(51
3)の入力に直接に適用される「0000」又は「00
01」のような一定の入力から得ることが可能である。
例えば、「0001」を選択することによって、この値
が「即値」データ・フィールド(404)に書き込ま
れ、そして「即値加算」オペレーションが1だけのイン
クレメントを簡単に行うであろう。
論理的レジスタの名前を含んでいない。それは一定値を
含んでいる。その一定値は、外部命令の命令エレメント
(501−505)から、又はマルチプレクサ(51
3)の入力に直接に適用される「0000」又は「00
01」のような一定の入力から得ることが可能である。
例えば、「0001」を選択することによって、この値
が「即値」データ・フィールド(404)に書き込ま
れ、そして「即値加算」オペレーションが1だけのイン
クレメントを簡単に行うであろう。
【0077】ソース・データ・フィールド(405)及
びターゲット・データ・フィールド(408)は条件コ
ードの処理を参照する。内部命令(400)が実際の条
件コードに依存する場合、「CC」がマルチプレクサ
(514)によってデータ・フィールド(405)に送
られる。これは、実際の条件コードがソース・オペラン
ドとして使用されるべきであること表す。内部命令が条
件コードをソース・オペランドとして使用しない場合、
「CN」がデータ・フィールド(405)に書き込まれ
る。
びターゲット・データ・フィールド(408)は条件コ
ードの処理を参照する。内部命令(400)が実際の条
件コードに依存する場合、「CC」がマルチプレクサ
(514)によってデータ・フィールド(405)に送
られる。これは、実際の条件コードがソース・オペラン
ドとして使用されるべきであること表す。内部命令が条
件コードをソース・オペランドとして使用しない場合、
「CN」がデータ・フィールド(405)に書き込まれ
る。
【0078】従って、ターゲット・データ・フィールド
(408)が処理される。内部命令(400)が実際の
条件コードを修正する場合、新たな条件コードがターゲ
ット・オペランドとして考察され、「CC」がデータ・
フィールド(408)に書き込まれる。そうでない場
合、「CX」がそのデータ・フィールド(408)に記
憶される。
(408)が処理される。内部命令(400)が実際の
条件コードを修正する場合、新たな条件コードがターゲ
ット・オペランドとして考察され、「CC」がデータ・
フィールド(408)に書き込まれる。そうでない場
合、「CX」がそのデータ・フィールド(408)に記
憶される。
【0079】内部命令の制御ビット(402)の幾つか
は、対応する変換テーブル・エントリから直接に得るこ
とが可能である。例えば、内部命令がディスパッチされ
るべき実行ユニット(312)は直接に得ることが可能
である。更に、例外(517)が生じる度に、それに従
ってその対応する制御ビットが修正されるように処理す
るマルチプレクサ(512)が存在する。
は、対応する変換テーブル・エントリから直接に得るこ
とが可能である。例えば、内部命令がディスパッチされ
るべき実行ユニット(312)は直接に得ることが可能
である。更に、例外(517)が生じる度に、それに従
ってその対応する制御ビットが修正されるように処理す
るマルチプレクサ(512)が存在する。
【0080】多くの命令コードの場合、全命令セットの
うちの或サブセットが配線されるだけである。これらは
実基本命令である。その命令コードの他の命令はすべ
て、そのハード・ワイヤード命令に依存したマイクロコ
ード命令として実施される。各マイクロコード命令は一
連のハード・ワイヤード命令より成る。
うちの或サブセットが配線されるだけである。これらは
実基本命令である。その命令コードの他の命令はすべ
て、そのハード・ワイヤード命令に依存したマイクロコ
ード命令として実施される。各マイクロコード命令は一
連のハード・ワイヤード命令より成る。
【0081】例えば、マイクロコード命令である「ムー
ブ・キャラクタ・ロング(movecharacter
long)」は、基本命令「ムーブ・キャラクタ(m
ove character)」及びループ制御より成
る。
ブ・キャラクタ・ロング(movecharacter
long)」は、基本命令「ムーブ・キャラクタ(m
ove character)」及びループ制御より成
る。
【0082】前述の命令変換機構をマイクロコード命令
に適用するための2つの可能な方法が存在する。第1の
方法は、コードAの各マイクロコード命令をコードBの
極めて多数の明確に定義された内部命令に関連付けるこ
とである。勿論、これらの内部命令は順次に生成されな
ければならないであろう。
に適用するための2つの可能な方法が存在する。第1の
方法は、コードAの各マイクロコード命令をコードBの
極めて多数の明確に定義された内部命令に関連付けるこ
とである。勿論、これらの内部命令は順次に生成されな
ければならないであろう。
【0083】第2の方法は、先ず、コードAのそれらマ
イクロコード命令をコードAのハード・ワイヤード命令
の対応するシーケンスに変換することである。しかる
後、次のステップにおいて、そのハード・ワイヤード外
部命令の各々は、変換テーブル(106)によって内部
命令の対応するシーケンスに変換されなければならな
い。この第2の解決方法の利点は、各ハード・ワイヤー
ド外部命令に対して、対応する内部命令が並列に生成可
能であることである。
イクロコード命令をコードAのハード・ワイヤード命令
の対応するシーケンスに変換することである。しかる
後、次のステップにおいて、そのハード・ワイヤード外
部命令の各々は、変換テーブル(106)によって内部
命令の対応するシーケンスに変換されなければならな
い。この第2の解決方法の利点は、各ハード・ワイヤー
ド外部命令に対して、対応する内部命令が並列に生成可
能であることである。
【0084】そのような各マイクロコードの2ステップ
変換を行う時、そのマイクロコード命令の命令エレメン
トが、先ず、前記補助レジスタ(509)においてバッ
ファされなければならない。そこで、その外部マイクロ
コード命令に対応する変換テーブル・エントリがアクセ
スされる。このテーブル・エントリは、そのマイクロコ
ード命令に対応するハード・ワイヤード外部命令のシー
ケンスが記憶されるメモリ内のロケーションを指す。
変換を行う時、そのマイクロコード命令の命令エレメン
トが、先ず、前記補助レジスタ(509)においてバッ
ファされなければならない。そこで、その外部マイクロ
コード命令に対応する変換テーブル・エントリがアクセ
スされる。このテーブル・エントリは、そのマイクロコ
ード命令に対応するハード・ワイヤード外部命令のシー
ケンスが記憶されるメモリ内のロケーションを指す。
【0085】次に、そのハード・ワイヤード外部命令の
各々が順次に内部命令に変換可能である。マイクロコー
ド命令の論理的レジスタがアドレスされなければならな
い時、その論理的レジスタの名前をそれら補助レジスタ
から得ることが可能である。変換されるべき外部命令が
マイクロコード命令であるか或いはハード・ワイヤード
命令(507)であるかに従って、適当な変換モードが
選択可能である。
各々が順次に内部命令に変換可能である。マイクロコー
ド命令の論理的レジスタがアドレスされなければならな
い時、その論理的レジスタの名前をそれら補助レジスタ
から得ることが可能である。変換されるべき外部命令が
マイクロコード命令であるか或いはハード・ワイヤード
命令(507)であるかに従って、適当な変換モードが
選択可能である。
【0086】
【0087】
【0088】
【発明の効果】本発明によって、従来技術の欠点を回避
し、しかも、実行時の高速命令デコード、複数の命令を
並列にデコードする可能性、及び変換パスに対する変更
の容易な実施を行い、命令をコードAからコードBに変
換することができるコード変換器が得られる。
し、しかも、実行時の高速命令デコード、複数の命令を
並列にデコードする可能性、及び変換パスに対する変更
の容易な実施を行い、命令をコードAからコードBに変
換することができるコード変換器が得られる。
【図1】外部命令を複数の内部命令に変換する命令コン
バータの一般的なセットアップを示す。
バータの一般的なセットアップを示す。
【図2】外部命令を変換するために必要な情報を保持す
るテーブルの正しいエントリをアクセスするために外部
命令のOPコードを使用する方法を示す。
るテーブルの正しいエントリをアクセスするために外部
命令のOPコードを使用する方法を示す。
【図3】変換テーブルにおけるエントリの構造を示す。
【図4】内部命令が持ち得るフォーマットの例を示す。
【図5】命令変換のために複数のマルチプレクサを使用
する命令変換器のレイアウトを示す。
する命令変換器のレイアウトを示す。
100 外部命令 101 内部命令 128 マルチプレクサ入力 130 制御線
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ハルムート・シュベルマー ドイツ国スタットガルト、ヴァンネンス トラッセ 21 (72)発明者 ヴェルナール・ゾエル ドイツ国シェーナイッヒ、ホーエンスタ ウフェンストラッセ 15 (56)参考文献 特開 平5−197544(JP,A) 特開 平6−266553(JP,A) 特開 平8−297572(JP,A) 特開 平6−131178(JP,A) 特開 平6−332692(JP,A) 特開 平7−182163(JP,A) ”INSTRUCTION TRAN SLATOR”,IBM TECHNI CAL DISCLOSURE BUL LETIN,(米),1972年8月,Vo l.15,No.3,p.920 ”IBM SYSTEM/370 EM ULATOR MICRO−INSTR UCTION PORTION IMP LEMENTED IN MASTER −SLICE(GATE ARRAY) LOGIC”,IBM TECHNIC AL DISCLOSURE BULL ETIN,(米),1987年9月,Vo l.30,No.4,p.1590−1592 (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/355
Claims (16)
- 【請求項1】コードAの命令をコードBの命令に変換す
るための装置にして、前記コードAの命令の各々及び前
記コードBの命令の各々が命令エレメントより成るもの
において、 前記コードAの命令のうちの1つの命令を前記コードA
の命令に対応した再構成情報に関連付けるテーブル手段
と、 前記コードAの命令に機能的に対応する前記コードBの
命令のうちの少なくとも1つの命令を生成するために、
前記コードAの命令の命令エレメントを第1入力として
使用し、前記コードAの命令に対応した再構成情報を使
用し、前記再構成情報に従って前記コードAの命令の前
記命令エレメントを再構成する再構成手段とを備え、前記コードAの命令及び前記コードBの命令の両方とも
RISC命令である ことを特徴とする、前記装置。 - 【請求項2】コードAの命令をコードBの命令に変換す
るための装置にして、前記コードAの命令の各々及び前
記コードBの命令の各々が命令エレメントより成るもの
において、 前記コードAの命令のうちの1つの命令を前記コードA
の命令に対応した再構成情報に関連付けるテーブル手段
と、 前記コードAの命令に機能的に対応する前記コードBの
命令のうちの少なくとも1つの命令を生成するために、
前記コードAの命令の命令エレメントを第1入力として
使用し、前記コードAの命令に対応した再構成情報を使
用し、前記再構成情報に従って前記コードAの命令の前
記命令エレメントを再構成する再構成手段とを備え、 前記再構成手段は、前記コードAの命令の前記命令エレ
メントを少なくとも1つの前記コードBの命令のうちの
機能的に対応する命令の命令エレメントを表すそれぞれ
のデータ・フィールドに多重化する多重化手段として実
施されることを特徴とする、前記装置。 - 【請求項3】前記テーブル手段はRAMテーブル手段と
して実施されることを特徴とする、請求項1又は2に記
載の装置。 - 【請求項4】前記テーブル手段はROMテーブル手段と
して実施されることを特徴とする、請求項1又は2に記
載の装置。 - 【請求項5】前記コードAの命令はCISC命令であ
り、前記コードBの命令はRISC命令であることを特
徴とする、請求項2に記載の装置。 - 【請求項6】前記コードAの命令に対応する再構成情報
は前記コードBの命令の命令エレメント毎の経路指定情
報を含み、前記コードBの命令は前記コードAの命令に
機能的に対応し、前記経路指定情報は、前記コードAの
命令の前記命令エレメントのうちのどれが前記コードB
の命令の前記命令エレメントの1つを表すそれぞれのデ
ータ・フィールドに送られるべきかを決定することを特
徴とする、請求項1又は2に記載の装置。 - 【請求項7】前記テーブル手段は前記コードAの命令の
うちの1つの命令を前記コードBの命令のうちの少なく
とも1つの機能的に対応する命令の少なくとも1つのO
Pコードに関連付けることを特徴とする、請求項1又は
2に記載の装置。 - 【請求項8】前記テーブル手段は前記コードAの命令の
うちの1つの命令を前記コードBの機能的に対応する多
数の命令に関連付けることを特徴とする、請求項又は2
に記載の装置。 - 【請求項9】コードAの命令をコードBの命令に変換す
るための方法にして、前記コードAの命令の各々及び前
記コードBの命令の各々が命令エレメントより成るもの
において、 コードBに変換されるべき前記コードAの命令のうちの
1つの命令に対応する再構成情報を少なくとも1つのテ
ーブルから得るステップと、 前記コードBの命令のうちの少なくとも1つの命令を生
成するために、前記コードAの命令の前記命令エレメン
トを前記再構成情報に従って再構成するステップとを含
み、 前記コードAの命令及び前記コードBの命令の両方とも
RISC命令である ことを特徴とする、前記方法。 - 【請求項10】コードAの命令をコードBの命令に変換
するための方法にして、前記コードAの命令の各々及び
前記コードBの命令の各々が命令エレメントより成るも
のにおいて、 コードBに変換されるべき前記コードAの命令のうちの
1つの命令に対応する再構成情報を少なくとも1つのテ
ーブルから得るステップと、 前記コードBの命令のうちの少なくとも1つの命令を生
成するために、前記コードAの命令の前記命令エレメン
トを前記再構成情報に従って再構成するステップと、 前記再構成情報に従って前記コードAの前記命令エレメ
ントを前記コードBの少なくとも1つの機能的に対応す
る命令の命令エレメントを表すそれぞれのデータ・フィ
ールドに多重化するステップとを含むことを特徴とす
る、前記方法。 - 【請求項11】前記テーブルをRAMテーブルとして設
けることを特徴とする、請求項9又は10に記載の方
法。 - 【請求項12】前記テーブルをROMテーブルとして設
けることを特徴とする、請求項9又は10に記載の方
法。 - 【請求項13】前記コードAの命令はCISC命令であ
り、前記コードBの命令はRISC命令であることを特
徴とする、請求項10に記載の方法。 - 【請求項14】前記コードAの命令に対応するコードB
の多数の命令を前記テーブルから得るステップを含むこ
とを特徴とする、請求項9又は10に記載の方法。 - 【請求項15】前記コードAの命令に機能的に対応する
前記コードBの命令のうちの少なくとも1つの命令の少
なくとも1つのOPコードを前記テーブルから得るステ
ップを含むことを特徴とする、請求項9又は10に記載
の方法。 - 【請求項16】前記コードAの命令に機能的に対応する
前記コードBの命令の命令エレメント毎の経路指定情報
を与えるステップと、 前記経路指定情報に従って、前記コードAの命令の前記
命令エレメントのうちのどれが前記コードBの命令の前
記命令エレメントの1つを表すそれぞれのデータ・フィ
ールドに送られるべきかを決定するステップとを含むこ
とを特徴とする、請求項9又は10に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP97103233 | 1997-02-27 | ||
DE97103233.9 | 1997-02-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10240524A JPH10240524A (ja) | 1998-09-11 |
JP3180075B2 true JP3180075B2 (ja) | 2001-06-25 |
Family
ID=8226531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP02892698A Expired - Fee Related JP3180075B2 (ja) | 1997-02-27 | 1998-02-10 | 異なる命令コード相互間の動的変換装置及び方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5925124A (ja) |
JP (1) | JP3180075B2 (ja) |
KR (1) | KR100300001B1 (ja) |
DE (1) | DE69841769D1 (ja) |
TW (1) | TW368636B (ja) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1010070B1 (de) * | 1997-09-01 | 2002-10-23 | Fujitsu Siemens Computers GmbH | Verfahren zum umsetzen eines objektcodes in einen programmcode |
US6460116B1 (en) | 1998-09-21 | 2002-10-01 | Advanced Micro Devices, Inc. | Using separate caches for variable and generated fixed-length instructions |
US6253309B1 (en) | 1998-09-21 | 2001-06-26 | Advanced Micro Devices, Inc. | Forcing regularity into a CISC instruction set by padding instructions |
US6275927B2 (en) * | 1998-09-21 | 2001-08-14 | Advanced Micro Devices. | Compressing variable-length instruction prefix bytes |
US6339822B1 (en) | 1998-10-02 | 2002-01-15 | Advanced Micro Devices, Inc. | Using padded instructions in a block-oriented cache |
US6240506B1 (en) | 1998-10-02 | 2001-05-29 | Advanced Micro Devices, Inc. | Expanding instructions with variable-length operands to a fixed length |
AU4580300A (en) * | 1999-04-27 | 2000-11-10 | Transitive Technologies Limited | Exception handling method and apparatus for use in program code conversion |
US6654869B1 (en) * | 1999-10-28 | 2003-11-25 | International Business Machines Corporation | Assigning a group tag to an instruction group wherein the group tag is recorded in the completion table along with a single instruction address for the group to facilitate in exception handling |
US7418580B1 (en) * | 1999-12-02 | 2008-08-26 | International Business Machines Corporation | Dynamic object-level code transaction for improved performance of a computer |
US6697939B1 (en) * | 2000-01-06 | 2004-02-24 | International Business Machines Corporation | Basic block cache microprocessor with instruction history information |
US6978233B1 (en) * | 2000-03-03 | 2005-12-20 | Unisys Corporation | Method for emulating multi-processor environment |
JP2001275140A (ja) * | 2000-03-28 | 2001-10-05 | Matsushita Electric Ind Co Ltd | 運用/待機構成の通信制御装置及び運用/待機系切替方法 |
US6732257B1 (en) * | 2000-09-29 | 2004-05-04 | Intel Corporation | Reducing the length of lower level instructions by splitting and recombining an immediate |
US7873814B1 (en) * | 2000-12-22 | 2011-01-18 | Lsi Corporation | Microcode based hardware translator to support a multitude of processors |
US6775892B2 (en) * | 2000-12-22 | 2004-08-17 | Diebolt International, Inc. | Retaining ring installation tool |
US6691306B1 (en) * | 2000-12-22 | 2004-02-10 | Lsi Logic Corporation | Use of limited program space of general purpose processor for unlimited sequence of translated instructions |
US7331040B2 (en) * | 2002-02-06 | 2008-02-12 | Transitive Limted | Condition code flag emulation for program code conversion |
GB0202728D0 (en) * | 2002-02-06 | 2002-03-27 | Transitive Technologies Ltd | Condition code flag emulation for program code conversion |
US7162617B2 (en) * | 2003-02-14 | 2007-01-09 | Fine Arc Incorporated | Data processor with changeable architecture |
US7219337B2 (en) * | 2003-03-06 | 2007-05-15 | Northrop Grumman Corporation | Direct instructions rendering emulation computer technique |
US7272700B1 (en) * | 2003-12-23 | 2007-09-18 | Altera Corporation | Methods and apparatus for indirect compound VLIW execution using operand address mapping techniques |
US8427490B1 (en) | 2004-05-14 | 2013-04-23 | Nvidia Corporation | Validating a graphics pipeline using pre-determined schedules |
JP2006092158A (ja) * | 2004-09-22 | 2006-04-06 | Toshiba Corp | デジタル信号処理回路 |
US8624906B2 (en) * | 2004-09-29 | 2014-01-07 | Nvidia Corporation | Method and system for non stalling pipeline instruction fetching from memory |
US8493396B2 (en) | 2004-11-15 | 2013-07-23 | Nvidia Corporation | Multidimensional datapath processing in a video processor |
US20060155961A1 (en) * | 2005-01-06 | 2006-07-13 | International Business Machines Corporation | Apparatus and method for reformatting instructions before reaching a dispatch point in a superscalar processor |
TW200643781A (en) * | 2005-06-02 | 2006-12-16 | Rdc Semiconductor Co Ltd | Conversion interface of memory device |
US9092170B1 (en) | 2005-10-18 | 2015-07-28 | Nvidia Corporation | Method and system for implementing fragment operation processing across a graphics bus interconnect |
US9436468B2 (en) * | 2005-11-22 | 2016-09-06 | Intel Corporation | Technique for setting a vector mask |
US8683126B2 (en) * | 2007-07-30 | 2014-03-25 | Nvidia Corporation | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory |
US8411096B1 (en) | 2007-08-15 | 2013-04-02 | Nvidia Corporation | Shader program instruction fetch |
US8659601B1 (en) | 2007-08-15 | 2014-02-25 | Nvidia Corporation | Program sequencer for generating indeterminant length shader programs for a graphics processor |
US8698819B1 (en) | 2007-08-15 | 2014-04-15 | Nvidia Corporation | Software assisted shader merging |
US9024957B1 (en) | 2007-08-15 | 2015-05-05 | Nvidia Corporation | Address independent shader program loading |
US9064333B2 (en) | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8780123B2 (en) * | 2007-12-17 | 2014-07-15 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US7502918B1 (en) * | 2008-03-28 | 2009-03-10 | International Business Machines Corporation | Method and system for data dependent performance increment and power reduction |
US8923385B2 (en) * | 2008-05-01 | 2014-12-30 | Nvidia Corporation | Rewind-enabled hardware encoder |
US8681861B2 (en) * | 2008-05-01 | 2014-03-25 | Nvidia Corporation | Multistandard hardware video encoder |
US8489851B2 (en) * | 2008-12-11 | 2013-07-16 | Nvidia Corporation | Processing of read requests in a memory controller using pre-fetch mechanism |
GB2484489A (en) * | 2010-10-12 | 2012-04-18 | Advanced Risc Mach Ltd | Instruction decoder using an instruction set identifier to determine the decode rules to use. |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4236204A (en) * | 1978-03-13 | 1980-11-25 | Motorola, Inc. | Instruction set modifier register |
US4415969A (en) * | 1980-02-07 | 1983-11-15 | Intel Corporation | Macroinstruction translator unit for use in a microprocessor |
JPS6133546A (ja) * | 1984-07-25 | 1986-02-17 | Nec Corp | 情報処理装置 |
EP0199173B1 (en) * | 1985-04-08 | 1994-02-02 | Hitachi, Ltd. | Data processing system |
US4791559A (en) * | 1985-12-16 | 1988-12-13 | Sperry Corporation | High-speed instruction control for vector processors with remapping |
US5115500A (en) * | 1988-01-11 | 1992-05-19 | International Business Machines Corporation | Plural incompatible instruction format decode method and apparatus |
GB2289354B (en) * | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Multiple instruction set mapping |
US5638525A (en) * | 1995-02-10 | 1997-06-10 | Intel Corporation | Processor capable of executing programs that contain RISC and CISC instructions |
-
1997
- 1997-03-05 US US08/810,880 patent/US5925124A/en not_active Expired - Lifetime
- 1997-10-13 TW TW086114958A patent/TW368636B/zh active
- 1997-10-15 KR KR1019970052734A patent/KR100300001B1/ko not_active IP Right Cessation
-
1998
- 1998-02-05 DE DE69841769T patent/DE69841769D1/de not_active Expired - Lifetime
- 1998-02-10 JP JP02892698A patent/JP3180075B2/ja not_active Expired - Fee Related
Non-Patent Citations (2)
Title |
---|
"IBM SYSTEM/370 EMULATOR MICRO−INSTRUCTION PORTION IMPLEMENTED IN MASTER−SLICE(GATE ARRAY)LOGIC",IBM TECHNICAL DISCLOSURE BULLETIN,(米),1987年9月,Vol.30,No.4,p.1590−1592 |
"INSTRUCTION TRANSLATOR",IBM TECHNICAL DISCLOSURE BULLETIN,(米),1972年8月,Vol.15,No.3,p.920 |
Also Published As
Publication number | Publication date |
---|---|
DE69841769D1 (de) | 2010-09-02 |
TW368636B (en) | 1999-09-01 |
KR19980070019A (ko) | 1998-10-26 |
JPH10240524A (ja) | 1998-09-11 |
US5925124A (en) | 1999-07-20 |
KR100300001B1 (ko) | 2001-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3180075B2 (ja) | 異なる命令コード相互間の動的変換装置及び方法 | |
US7493474B1 (en) | Methods and apparatus for transforming, loading, and executing super-set instructions | |
US5649179A (en) | Dynamic instruction allocation for a SIMD processor | |
US6061783A (en) | Method and apparatus for manipulation of bit fields directly in a memory source | |
JP2000267848A (ja) | 情報処理装置 | |
JP2002333978A (ja) | Vliw型プロセッサ | |
EP0968463A2 (en) | Vliw processor processes commands of different widths | |
US7313671B2 (en) | Processing apparatus, processing method and compiler | |
US20120304190A1 (en) | Intelligent Memory Device With ASCII Registers | |
US7574583B2 (en) | Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor | |
US7552313B2 (en) | VLIW digital signal processor for achieving improved binary translation | |
US20040162964A1 (en) | Processor capable of switching/reconstituting architecture | |
US5964861A (en) | Method for writing a program to control processors using any instructions selected from original instructions and defining the instructions used as a new instruction set | |
US7908603B2 (en) | Intelligent memory with multitask controller and memory partitions storing task state information for processing tasks interfaced from host processor | |
CN110832455A (zh) | 测试向量元素内部的位值 | |
US7058932B1 (en) | System, computer program product, and methods for emulation of computer programs | |
US6542989B2 (en) | Single instruction having op code and stack control field | |
CN101253480B (zh) | 具有实时动态可变指令集的计算机 | |
US6012138A (en) | Dynamically variable length CPU pipeline for efficiently executing two instruction sets | |
US7594232B2 (en) | Intelligent memory device for processing tasks stored in memory or for storing data in said memory | |
US6233732B1 (en) | Compiling system using intermediate codes to store a plurality of values | |
EP0862111B1 (en) | Dynamic conversion between different instruction codes by recombination of instruction elements | |
JPH0683615A (ja) | 命令セットエミュレーションを行う計算機 | |
US6049864A (en) | Method for scheduling a flag generating instruction and a subsequent instruction by executing the flag generating instruction in a microprocessor | |
US7444495B1 (en) | Processor and programmable logic computing arrangement |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |