JPH0628185A - 2つのコンピュータ命令を並列に実行できるコンピュータ装置 - Google Patents
2つのコンピュータ命令を並列に実行できるコンピュータ装置Info
- Publication number
- JPH0628185A JPH0628185A JP5027177A JP2717793A JPH0628185A JP H0628185 A JPH0628185 A JP H0628185A JP 5027177 A JP5027177 A JP 5027177A JP 2717793 A JP2717793 A JP 2717793A JP H0628185 A JPH0628185 A JP H0628185A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- pipeline
- subset
- parallel
- 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.)
- Pending
Links
- 230000009977 dual effect Effects 0.000 abstract description 8
- 238000000034 method Methods 0.000 description 8
- 230000001419 dependent effect Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 241000183290 Scleropages leichardti Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Classifications
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode 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/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
Abstract
(57)【要約】
【目的】 2つのコンピュータ命令を並列に実行できる
コンピュータ装置を得ることである。 【構成】 2つの命令の間にレジスタ従属性がなく、完
全な命令セットの所定のサブセットに入るものとする
と、コンピュータ装置は、1クロック・サイクル中に2
つの命令を並列に出すデュアル命令復号器を含む。この
装置は第1の命令パイプラインと第2の命令パイプライ
ンを含む。第1の命令パイプラインはフル命令セットか
ら出された任意の命令を実行し、第2の命令パイプライ
ンは局所性の原理を基にして選択された命令の所定のサ
ブセットを実行するだけである。レジスタ従属性検査器
が、第1の命令の宛先レジスタが命令列中の第2の命令
の実行中に用いられるかどうかを判定する。両方の命令
がサブセット内にあり、従属性が存在しない時には、第
1の命令と第2の命令を第1のパイプラインと第2のパ
イプラインで並列に出すことができる。
コンピュータ装置を得ることである。 【構成】 2つの命令の間にレジスタ従属性がなく、完
全な命令セットの所定のサブセットに入るものとする
と、コンピュータ装置は、1クロック・サイクル中に2
つの命令を並列に出すデュアル命令復号器を含む。この
装置は第1の命令パイプラインと第2の命令パイプライ
ンを含む。第1の命令パイプラインはフル命令セットか
ら出された任意の命令を実行し、第2の命令パイプライ
ンは局所性の原理を基にして選択された命令の所定のサ
ブセットを実行するだけである。レジスタ従属性検査器
が、第1の命令の宛先レジスタが命令列中の第2の命令
の実行中に用いられるかどうかを判定する。両方の命令
がサブセット内にあり、従属性が存在しない時には、第
1の命令と第2の命令を第1のパイプラインと第2のパ
イプラインで並列に出すことができる。
Description
【0001】
【産業上の利用分野】本発明は全体としてコンピュータ
の分野に関するものであり、とくに、本発明はマイクロ
プロセッサ・アーキテクチャ、および命令実行の速さを
向上する方法に関するものである。
の分野に関するものであり、とくに、本発明はマイクロ
プロセッサ・アーキテクチャ、および命令実行の速さを
向上する方法に関するものである。
【0002】
【従来の技術】コンピュータは歴史的には命令を順次
に、すなわち、次々に実行するように構成されてきた。
コンピュータ命令の順次実行は論理的な秩序正しい方法
を提供するが、処理速度を向上するという要求が常に存
在するために、研究者たちは並列実行手法を実現する方
法を開発させられてきた。多数の命令を並列に実行でき
るマイクロプロセッサすなわちコンピュータの設計に成
功するためには数多くの問題を克服せねばならない。た
とえば、マイクロプロセッサは、何百という個々の命令
を含む命令セット・アーキテクチャを典型的に有する。
与えられたアーキテクチャのための種々のアドレッシン
グ・モードの全てを数えると、可能な演算符号の総数は
ほぼ何千にもなる。与えられた命令セットに対して、何
千という可能な第1の命令の全てを可能な第2の命令の
全てと対にすることにより、何百万という種々の組合わ
せを容易に得ることができる。それら各種の組合わせの
全てを実行できる装置を設計することは極めて困難な作
業である。設計は極めて複雑なことがあるから、そのよ
うな問題を取り扱うことができなくなることがわかる。
長い時間遅れ無しに命令セットを実行できる並列装置
で、完全な命令セットを復号できるいくつかの復号器を
製作することには問題がある。
に、すなわち、次々に実行するように構成されてきた。
コンピュータ命令の順次実行は論理的な秩序正しい方法
を提供するが、処理速度を向上するという要求が常に存
在するために、研究者たちは並列実行手法を実現する方
法を開発させられてきた。多数の命令を並列に実行でき
るマイクロプロセッサすなわちコンピュータの設計に成
功するためには数多くの問題を克服せねばならない。た
とえば、マイクロプロセッサは、何百という個々の命令
を含む命令セット・アーキテクチャを典型的に有する。
与えられたアーキテクチャのための種々のアドレッシン
グ・モードの全てを数えると、可能な演算符号の総数は
ほぼ何千にもなる。与えられた命令セットに対して、何
千という可能な第1の命令の全てを可能な第2の命令の
全てと対にすることにより、何百万という種々の組合わ
せを容易に得ることができる。それら各種の組合わせの
全てを実行できる装置を設計することは極めて困難な作
業である。設計は極めて複雑なことがあるから、そのよ
うな問題を取り扱うことができなくなることがわかる。
長い時間遅れ無しに命令セットを実行できる並列装置
で、完全な命令セットを復号できるいくつかの復号器を
製作することには問題がある。
【0003】命令を並列実行できるコンピュータを製造
することに伴う別の問題は、従来の装置、すなわち、命
令の順次実行(クロック・サイクル当たり1つの命令)
により動作する装置のために構成されているソフトウェ
アを実行できなければならないことである。いいかえる
と、並列装置は順次動作を行えなければならない。
することに伴う別の問題は、従来の装置、すなわち、命
令の順次実行(クロック・サイクル当たり1つの命令)
により動作する装置のために構成されているソフトウェ
アを実行できなければならないことである。いいかえる
と、並列装置は順次動作を行えなければならない。
【0004】
【発明が解決しようとする課題】本発明は上記従来の問
題を解決して並列処理できるコンピュータを提供するこ
とである。
題を解決して並列処理できるコンピュータを提供するこ
とである。
【0005】
【課題を解決するための手段】本発明は2つの命令を1
つのクロック・サイクルで実行できるコンピュータ装置
を開示するものである。本発明は、与えられた命令セッ
トから選択された一対の命令を復号し、それらの命令を
並列に実行して正しい結果を得る。本発明の顕著な特徴
の1つは、対にされている命令の間にレジスタ従属性が
ないとすると、コンピュータ装置が2つの命令を出すだ
けであることである。
つのクロック・サイクルで実行できるコンピュータ装置
を開示するものである。本発明は、与えられた命令セッ
トから選択された一対の命令を復号し、それらの命令を
並列に実行して正しい結果を得る。本発明の顕著な特徴
の1つは、対にされている命令の間にレジスタ従属性が
ないとすると、コンピュータ装置が2つの命令を出すだ
けであることである。
【0006】2つの命令を1つのクロック・サイクルで
並列に実行できるコンピュータ装置を開示するものであ
る。このコンピュータ装置は、2つの命令の間にレジス
タ従属性がないと2つの命令を並列に出すだけであり、
両方の命令がコンピュータの命令セット内に入る。一実
施例においては、本発明はコンピュータ装置命令を実行
するための第1のパイプライン手段と第2のパイプライ
ン手段を含む。第1のパイプライン手段はファイル命令
セットから出されたいかなる命令をも実行でき、第2の
パイプライン手段は命令の所定のサブセットを実行する
ことに制約される。サブセットはどれが一般に実行され
る命令であるかを基にして選択される。
並列に実行できるコンピュータ装置を開示するものであ
る。このコンピュータ装置は、2つの命令の間にレジス
タ従属性がないと2つの命令を並列に出すだけであり、
両方の命令がコンピュータの命令セット内に入る。一実
施例においては、本発明はコンピュータ装置命令を実行
するための第1のパイプライン手段と第2のパイプライ
ン手段を含む。第1のパイプライン手段はファイル命令
セットから出されたいかなる命令をも実行でき、第2の
パイプライン手段は命令の所定のサブセットを実行する
ことに制約される。サブセットはどれが一般に実行され
る命令であるかを基にして選択される。
【0007】命令の列中の第1の命令の宛先レジスタを
識別するためにレジスタ従属性検査手段が含まれる。従
属性検査手段は、列の第2の命令の実行中に宛先レジス
タが用いられるかどうかも判定する。もし用いられなけ
れば、従属性検査手段は第1の条件を満たすことを示
す。列中の第1の命令と第2の命令が所定のサブセット
内にあるかどうかを判定する手段も含まれる。両方の命
令がサブセット内にある時は、第2の判定手段は条件を
満たすことを示す。第1の条件と第2の条件が満たされ
た時には、命令の対を並列に出すことができる。本発明
の別の特徴は、コンピュータ装置がデフォールトして、
第1の条件と第2の条件のいずれかが満たされない時
に、列中の第1の命令だけを出すことである。すなわ
ち、第1の命令と第2の命令がレジスタ従属性を有する
か、命令の1つが所定のサブセットから取り出されない
とすると、第1の命令だけが1つのクロック・サイクル
で実行されるような条件へ装置はデフォールトする。そ
の条件のために、次のクロック・サイクル中に列内の第
2の命令が出される。
識別するためにレジスタ従属性検査手段が含まれる。従
属性検査手段は、列の第2の命令の実行中に宛先レジス
タが用いられるかどうかも判定する。もし用いられなけ
れば、従属性検査手段は第1の条件を満たすことを示
す。列中の第1の命令と第2の命令が所定のサブセット
内にあるかどうかを判定する手段も含まれる。両方の命
令がサブセット内にある時は、第2の判定手段は条件を
満たすことを示す。第1の条件と第2の条件が満たされ
た時には、命令の対を並列に出すことができる。本発明
の別の特徴は、コンピュータ装置がデフォールトして、
第1の条件と第2の条件のいずれかが満たされない時
に、列中の第1の命令だけを出すことである。すなわ
ち、第1の命令と第2の命令がレジスタ従属性を有する
か、命令の1つが所定のサブセットから取り出されない
とすると、第1の命令だけが1つのクロック・サイクル
で実行されるような条件へ装置はデフォールトする。そ
の条件のために、次のクロック・サイクル中に列内の第
2の命令が出される。
【0008】
【実施例】この明細書においては2つの命令を1クロッ
ク・サイクル中に並列に実行するための装置を有するマ
イクロプロセッサを開示する。以下の説明においては、
本発明を完全に理解できるようにするために、特定の
数、特定の命令の型、マイクロプロセッサの種類等のよ
うな数多くの特定の詳細について述べる。しかし、それ
らの特定の詳細なしに本発明を実施できることが当業者
には明らかであろう。他の場合には、本発明を不必要に
あいまいにしないようにするために、周知の回路、構造
および方法は詳細には示さなかった。
ク・サイクル中に並列に実行するための装置を有するマ
イクロプロセッサを開示する。以下の説明においては、
本発明を完全に理解できるようにするために、特定の
数、特定の命令の型、マイクロプロセッサの種類等のよ
うな数多くの特定の詳細について述べる。しかし、それ
らの特定の詳細なしに本発明を実施できることが当業者
には明らかであろう。他の場合には、本発明を不必要に
あいまいにしないようにするために、周知の回路、構造
および方法は詳細には示さなかった。
【0009】本発明は、多数のコンピュータ命令を1つ
のクロック・サイクルで並列に実行するための装置およ
び方法をカバーするものである。好ましくは、本発明
は、インテル社(Intel Corporatio
n)により製造されたi586(商標)として知られて
いるマイクロプロセッサで実施される。i586(商
標)マイクロプロセッサはインテルのi486(商標)
マイクロプロセッサを改良したものである。i486
(商標)マイクロプロセッサのアーキテクチャの詳細は
数多くの文献に記載されている。(インテルI486お
よびI586はインテル社の商標である。)この明細書
においてはi586(商標)アーキテクチャと、命令の
ファミリから提供される例をしばしば言及するが、本発
明はそれら特定の装置に限定されるものではない。
のクロック・サイクルで並列に実行するための装置およ
び方法をカバーするものである。好ましくは、本発明
は、インテル社(Intel Corporatio
n)により製造されたi586(商標)として知られて
いるマイクロプロセッサで実施される。i586(商
標)マイクロプロセッサはインテルのi486(商標)
マイクロプロセッサを改良したものである。i486
(商標)マイクロプロセッサのアーキテクチャの詳細は
数多くの文献に記載されている。(インテルI486お
よびI586はインテル社の商標である。)この明細書
においてはi586(商標)アーキテクチャと、命令の
ファミリから提供される例をしばしば言及するが、本発
明はそれら特定の装置に限定されるものではない。
【0010】パイプライニング パイプライニングというのは、多数の命令を、実行にお
いて同時にオーバーラップする技術である。パイプライ
ニングは、中央処理装置(CPU)の効率と速度を向上
するために従来技術で広く用いられている。パイプライ
ン構造においては、命令は一端に入り、ステージすなわ
ちパイプ部分で処理され、他端から出る。パイプライン
の各ステージは命令の部分を完了する。図1を参照し
て、ここで、従来のパイプラインの構造が示されている
図1を参照する。このパイプライン構造においては、命
令のステージが左の欄に沿ったエントリにより示されて
いる。命令ステップの間のクロック時間間隔が水平の数
により示されている。パイプライン内の各ステップをク
ロック・サイクルまたはマシンサイクルと呼ぶ。
いて同時にオーバーラップする技術である。パイプライ
ニングは、中央処理装置(CPU)の効率と速度を向上
するために従来技術で広く用いられている。パイプライ
ン構造においては、命令は一端に入り、ステージすなわ
ちパイプ部分で処理され、他端から出る。パイプライン
の各ステージは命令の部分を完了する。図1を参照し
て、ここで、従来のパイプラインの構造が示されている
図1を参照する。このパイプライン構造においては、命
令のステージが左の欄に沿ったエントリにより示されて
いる。命令ステップの間のクロック時間間隔が水平の数
により示されている。パイプライン内の各ステップをク
ロック・サイクルまたはマシンサイクルと呼ぶ。
【0011】パイプラインの最初のステージは「PF」
ステージである。これはパイプラインのプリフェッチ部
を示す。このステージにおいては、命令はオンチップ・
キャッシュメモリからプリフェッチされる。次のパイプ
ラインステージは「D1」で示されている。このパイプ
ラインステージで命令は復号され、出される。D2ステ
ージはアドレス計算ステージである。パイプライン原理
に従って、第1の命令(たとえば、I1)は第2のクロ
ック・サイクルのD1ステージで実行されるが、第2の
命令(たとえば、I2)はそのプリフェッチステージで
実行を開始することに注目されたい。パイプラインの
「EX」ステージはハードウェアによる命令の実行を示
し、「WB」ステージは書き戻し動作を示す。図1に示
されている従来技術においては、与えられた任意のクロ
ック・サイクルに対してただ1つの命令がパイプライン
において実行されることに注目されたい。
ステージである。これはパイプラインのプリフェッチ部
を示す。このステージにおいては、命令はオンチップ・
キャッシュメモリからプリフェッチされる。次のパイプ
ラインステージは「D1」で示されている。このパイプ
ラインステージで命令は復号され、出される。D2ステ
ージはアドレス計算ステージである。パイプライン原理
に従って、第1の命令(たとえば、I1)は第2のクロ
ック・サイクルのD1ステージで実行されるが、第2の
命令(たとえば、I2)はそのプリフェッチステージで
実行を開始することに注目されたい。パイプラインの
「EX」ステージはハードウェアによる命令の実行を示
し、「WB」ステージは書き戻し動作を示す。図1に示
されている従来技術においては、与えられた任意のクロ
ック・サイクルに対してただ1つの命令がパイプライン
において実行されることに注目されたい。
【0012】先に述べたように、本発明は、1クロック
・サイクル中に2つの命令を並列に実行できるスーパー
スケーラー装置を表すものである。この目的を達成する
ために、1つのクロック・サイクルで命令をおのおの実
行できる2つの整数パイプラインを含む。したがって、
CPUは2つの命令を2つの別々のパイプラインで出す
ことができる。この好適な実施例においては、パイプラ
インは「u」パイプおよび「v」パイプと呼ばれる。u
パイプは×86アーキテクチャで任意の命令を実行で
き、そうすることが好ましい。この明細書の後の部分で
更に説明するように、vパイプはある簡単な命令を実行
できる。
・サイクル中に2つの命令を並列に実行できるスーパー
スケーラー装置を表すものである。この目的を達成する
ために、1つのクロック・サイクルで命令をおのおの実
行できる2つの整数パイプラインを含む。したがって、
CPUは2つの命令を2つの別々のパイプラインで出す
ことができる。この好適な実施例においては、パイプラ
インは「u」パイプおよび「v」パイプと呼ばれる。u
パイプは×86アーキテクチャで任意の命令を実行で
き、そうすることが好ましい。この明細書の後の部分で
更に説明するように、vパイプはある簡単な命令を実行
できる。
【0013】次に、本発明のパイプライン構造が示され
ている図2を参照する。図2のパイプライン列において
は、2つの命令I1、I2がパイプラインの各ステージ
において、1つのクロック・サイクルで実行されている
様子が示されている。また、パイプラインの最初のステ
ージは、その時間中に命令がオンチップ・キャッシュか
らプリフェッチされるようなプリフェッチステージであ
る。本発明のマイクロプロセッサは命令とデータのため
に別々のキャッシュを有するから、従来技術の場合にお
けるように、キャッシュをアクセスするために、プリフ
ェッチはデータ基準とはもはや衝突しない。これは、プ
リフェッチステージ中に命令I1、I2が命令キャッシ
ュから直接取り出され、uパイプとVパイプへロードさ
れることを意味する。次のパイプステージ(すなわち、
D1)においては、命令I1、I2が復号および出され
る。
ている図2を参照する。図2のパイプライン列において
は、2つの命令I1、I2がパイプラインの各ステージ
において、1つのクロック・サイクルで実行されている
様子が示されている。また、パイプラインの最初のステ
ージは、その時間中に命令がオンチップ・キャッシュか
らプリフェッチされるようなプリフェッチステージであ
る。本発明のマイクロプロセッサは命令とデータのため
に別々のキャッシュを有するから、従来技術の場合にお
けるように、キャッシュをアクセスするために、プリフ
ェッチはデータ基準とはもはや衝突しない。これは、プ
リフェッチステージ中に命令I1、I2が命令キャッシ
ュから直接取り出され、uパイプとVパイプへロードさ
れることを意味する。次のパイプステージ(すなわち、
D1)においては、命令I1、I2が復号および出され
る。
【0014】 命令発生およびパイプライン・シーケンシング 先に述べたように、本発明のマイクロプロセッサは1ク
ロック・サイクル中に1つまたは複数の命令を出すこと
ができる。しかし2つの命令を同時に出すためには、対
にされている2つの命令がある条件を満たさねばならな
い。すなわち、対にされている2つの命令は命令の所定
のサブセット内になければならず、かつ相互従属であっ
てはならない。(本発明のこの面については間もなく詳
しく説明する。)2つの命令を並列に出すプロセスは命
令対化と呼ばれる。命令が対にされると、vパイプ(第
2のパイプ)へ出された命令が、常に、uパイプへ出さ
れた命令の後の順次命令である。命令を並列に実行でき
るが、プログラマーに分かるように動作を見れば、それ
らの命令は順次実行されている(従来技術の構成におけ
るように)。WBステージにおける命令の終了まで、命
令はD2ステージとEXステージとも並列に進む。命令
がパイプラインを通っている間に、任意の数の理由か
ら、命令を停止できることがわかる。たとえば、uパイ
プ内の命令が遅延させられると、それによりvパイプへ
出された命令(もしあれば)も同じパイプライン・ステ
ージにおいて遅延させられる。以後の引き続く命令はい
ずれかのパイプラインの低Iされているステージへ進む
ことを許されない。vパイプ内のある命令が停止させら
れると、それによりuパイプへ出された命令は進むこと
を許され、vパイプは停止されたままである。
ロック・サイクル中に1つまたは複数の命令を出すこと
ができる。しかし2つの命令を同時に出すためには、対
にされている2つの命令がある条件を満たさねばならな
い。すなわち、対にされている2つの命令は命令の所定
のサブセット内になければならず、かつ相互従属であっ
てはならない。(本発明のこの面については間もなく詳
しく説明する。)2つの命令を並列に出すプロセスは命
令対化と呼ばれる。命令が対にされると、vパイプ(第
2のパイプ)へ出された命令が、常に、uパイプへ出さ
れた命令の後の順次命令である。命令を並列に実行でき
るが、プログラマーに分かるように動作を見れば、それ
らの命令は順次実行されている(従来技術の構成におけ
るように)。WBステージにおける命令の終了まで、命
令はD2ステージとEXステージとも並列に進む。命令
がパイプラインを通っている間に、任意の数の理由か
ら、命令を停止できることがわかる。たとえば、uパイ
プ内の命令が遅延させられると、それによりvパイプへ
出された命令(もしあれば)も同じパイプライン・ステ
ージにおいて遅延させられる。以後の引き続く命令はい
ずれかのパイプラインの低Iされているステージへ進む
ことを許されない。vパイプ内のある命令が停止させら
れると、それによりuパイプへ出された命令は進むこと
を許され、vパイプは停止されたままである。
【0015】命令対化 本発明の基本的な概念は、2つの命令の間にレジスタ従
属性がなく、両方の命令が並列実行の資格がある命令の
サブセットに属している場合に、2つの命令を並列に出
す復号装置をコンピュータ装置が含む。このデュアル命
令復号器は、プログラム命令中の第1の命令のための宛
先レジスタをまず識別する。この命令はuパイプ命令に
なる。それから本発明の装置は、uパイプ命令が、列中
の第2の命令の実行中に何らかのやり方で用いられるか
どうかを判定する。もし用いられないとする(すなわ
ち、2つの命令が独立している)と、両方の命令は並列
に出される。
属性がなく、両方の命令が並列実行の資格がある命令の
サブセットに属している場合に、2つの命令を並列に出
す復号装置をコンピュータ装置が含む。このデュアル命
令復号器は、プログラム命令中の第1の命令のための宛
先レジスタをまず識別する。この命令はuパイプ命令に
なる。それから本発明の装置は、uパイプ命令が、列中
の第2の命令の実行中に何らかのやり方で用いられるか
どうかを判定する。もし用いられないとする(すなわ
ち、2つの命令が独立している)と、両方の命令は並列
に出される。
【0016】先に説明したように、本発明の極めて大規
模な装置は、完全な命令セット内で平行関係を利用する
2つの平行パイプ−uパイプおよびvパイプと呼ばれる
−を含む。マイクロプロセッサの命令単位は命令列内の
第1の命令を常に出す。uパイプ・オペランドをアクセ
スできないか、パイプの間でアドレスの衝突があるもの
とすると、vパイプは停止する。対化は2つの整数命令
の間、または2つの浮動小数点命令の間でのみ生ずるこ
とができる。一般に、簡単な命令の対はそれらの間に従
属性が存在しない限り対にできる。2つの整数命令を同
時に出すためには、ここで説明している好適な実施例に
おいては下記の条件を満たさなければならない。まず、
命令は×86命令セットの所定のサブセットに属さなけ
ればならない。整数命令の対化のための命令サブセット
は表1に示されている。
模な装置は、完全な命令セット内で平行関係を利用する
2つの平行パイプ−uパイプおよびvパイプと呼ばれる
−を含む。マイクロプロセッサの命令単位は命令列内の
第1の命令を常に出す。uパイプ・オペランドをアクセ
スできないか、パイプの間でアドレスの衝突があるもの
とすると、vパイプは停止する。対化は2つの整数命令
の間、または2つの浮動小数点命令の間でのみ生ずるこ
とができる。一般に、簡単な命令の対はそれらの間に従
属性が存在しない限り対にできる。2つの整数命令を同
時に出すためには、ここで説明している好適な実施例に
おいては下記の条件を満たさなければならない。まず、
命令は×86命令セットの所定のサブセットに属さなけ
ればならない。整数命令の対化のための命令サブセット
は表1に示されている。
【0017】
【0018】(表1において、エントリ「alu r,
r」は「add」、「or」、「adc」、「sb
b」、「and」、「xor」、「cmp」のような命
令を含む命令のクラスを示す。) サブセットするという考えは本発明の重要な着想であ
る。というのは、並列実行中に取り扱わなければならな
い種々の命令の可能な組合わせの数を大幅に減少するか
らである。典型的なソフトウェアにより実行される全て
の命令のほぼ95%を成す小さい(約20)命令サブセ
ットが存在することを装置は認識する。最も多く用いら
れる命令の集まりが表1に示されている。サブセット化
する手段の使用は、デュアル命令復号器を完全な命令セ
ットで動作する必要がないことを意味する。それより
も、含まれているタイミング関係を大きく改善するため
にそれの設計を改良できる。サブセット化の使用によっ
て、装置は2つの命令を迅速に識別し、それらを迅速に
復号し、それからそれらの命令を並列に実行することを
許す。
r」は「add」、「or」、「adc」、「sb
b」、「and」、「xor」、「cmp」のような命
令を含む命令のクラスを示す。) サブセットするという考えは本発明の重要な着想であ
る。というのは、並列実行中に取り扱わなければならな
い種々の命令の可能な組合わせの数を大幅に減少するか
らである。典型的なソフトウェアにより実行される全て
の命令のほぼ95%を成す小さい(約20)命令サブセ
ットが存在することを装置は認識する。最も多く用いら
れる命令の集まりが表1に示されている。サブセット化
する手段の使用は、デュアル命令復号器を完全な命令セ
ットで動作する必要がないことを意味する。それより
も、含まれているタイミング関係を大きく改善するため
にそれの設計を改良できる。サブセット化の使用によっ
て、装置は2つの命令を迅速に識別し、それらを迅速に
復号し、それからそれらの命令を並列に実行することを
許す。
【0019】命令の並列実行に対する次の重要な制約
は、対にされている命令の間にレジスタ従属性が存在し
ないことである。これは、第1の命令の宛先レジスタを
次の命令のソース、宛先、ベース、またはインデックス
として用いることができないことを意味する。この要求
は命令のためにレジスタを明らかに、および暗黙に使用
することを保持する。(これの例外は「push」命令
と「pop」命令を一緒に対にし、そのために、この好
適な実施例においては、スタック・ポインタを更新する
セグメンテーション・ユニットの特殊なハードウェアが
存在することに注目されたい。)従属性検査のために、
16/32ビット・レジスタの任意の部分を用いること
は全レジスタを用いることと同じである。uパイプ命令
とvパイプ命令の間にメモリ従属性が存在するものとす
ると、uパイプ・メモリアクセスとvパイプ・メモリア
クセスはデータ・キャッシュの同じバンク/アドレスへ
対するものである。vパイプ・サイクルはuパイプ・ア
ドレスが終わるまで平衡させられる。
は、対にされている命令の間にレジスタ従属性が存在し
ないことである。これは、第1の命令の宛先レジスタを
次の命令のソース、宛先、ベース、またはインデックス
として用いることができないことを意味する。この要求
は命令のためにレジスタを明らかに、および暗黙に使用
することを保持する。(これの例外は「push」命令
と「pop」命令を一緒に対にし、そのために、この好
適な実施例においては、スタック・ポインタを更新する
セグメンテーション・ユニットの特殊なハードウェアが
存在することに注目されたい。)従属性検査のために、
16/32ビット・レジスタの任意の部分を用いること
は全レジスタを用いることと同じである。uパイプ命令
とvパイプ命令の間にメモリ従属性が存在するものとす
ると、uパイプ・メモリアクセスとvパイプ・メモリア
クセスはデータ・キャッシュの同じバンク/アドレスへ
対するものである。vパイプ・サイクルはuパイプ・ア
ドレスが終わるまで平衡させられる。
【0020】現在使用されているi586マイクロプロ
セッサに特有であるその他の制約には次のものが含まれ
る。 ・vパイプ命令は、OF Jccを除いてプレフィクス
を含まない。 ・第1の命令に対応するコード・キャッシュ中の終了ビ
ット・マーカーを正しくセットせねばならない。(終了
ビット・マーカーの概念が本願出願人へ譲渡された
年 月 日に出願された「命令復号のための終
了ビット・マーカー(End Bit Markers
For Instruction Decode)」
という名称の未決の特許出願に開示されている。) ・両方の命令を復号するために十分なオペコード・バイ
トがプリフェッチ・バッファ内に存在する。 ・uパイプまたはvパイプにおける命令は変位又はイミ
ディエートのいずれかを持つことができるが、両方を持
つことはできない。 ・vパイプにはADC命令またはSBB命令が存在でき
ない(uパイプ・キャリー・フラッグへの従属性を避け
るため)。
セッサに特有であるその他の制約には次のものが含まれ
る。 ・vパイプ命令は、OF Jccを除いてプレフィクス
を含まない。 ・第1の命令に対応するコード・キャッシュ中の終了ビ
ット・マーカーを正しくセットせねばならない。(終了
ビット・マーカーの概念が本願出願人へ譲渡された
年 月 日に出願された「命令復号のための終
了ビット・マーカー(End Bit Markers
For Instruction Decode)」
という名称の未決の特許出願に開示されている。) ・両方の命令を復号するために十分なオペコード・バイ
トがプリフェッチ・バッファ内に存在する。 ・uパイプまたはvパイプにおける命令は変位又はイミ
ディエートのいずれかを持つことができるが、両方を持
つことはできない。 ・vパイプにはADC命令またはSBB命令が存在でき
ない(uパイプ・キャリー・フラッグへの従属性を避け
るため)。
【0021】次に、本発明の広範な概念を示すデュアル
命令復号器のブロック図が示されている図3を参照す
る。図3においてuパイプ・オペコードとvパイプ・オ
ペコードが復号器12と14へそれぞれ結合される。復
号器13へ結合されることに加えて、uパイプ・オペコ
ードは付加復号器13へも結合される。復号器12、1
3、14は、命令の全ての復号を行う通常のプログラム
可能な論理アレイ(PLAs)を含む。たとえば、復号
器12はuパイプ命令のためにマイクロコードの第1の
ベクトルを発生し、復号器14はvパイプ命令のための
マイクロコードの第1のベクトルを復号する類似のPL
Aを有する。各マイクロコード・ベクトルはソースレジ
スタ場所、宛先レジスタ、ALU動作情報、および変位
イミディエートのような情報を含む。もちろん、本発明
の主な特徴は、図3に示されているデュアル復号器が1
サイクル中に1つまたは2つの命令を出すことができる
ことである。本発明の1つの目的は命令の全ての×86
ファミリイで動作できることであるから、図3の復号器
は2つの部分または2つのパスに分割される。1つのパ
スは×86命令セット内の全ての命令を取り扱うことが
でき、他のパスは第2の命令を並列に取り扱うことを主
として狙っている。いいかえると、本発明は、スーパー
スケーラー・オペレーションのための条件が満たされな
いとすると、1つの命令がクロック・サイクルごとに実
行されるようにする動作モードを含む。
命令復号器のブロック図が示されている図3を参照す
る。図3においてuパイプ・オペコードとvパイプ・オ
ペコードが復号器12と14へそれぞれ結合される。復
号器13へ結合されることに加えて、uパイプ・オペコ
ードは付加復号器13へも結合される。復号器12、1
3、14は、命令の全ての復号を行う通常のプログラム
可能な論理アレイ(PLAs)を含む。たとえば、復号
器12はuパイプ命令のためにマイクロコードの第1の
ベクトルを発生し、復号器14はvパイプ命令のための
マイクロコードの第1のベクトルを復号する類似のPL
Aを有する。各マイクロコード・ベクトルはソースレジ
スタ場所、宛先レジスタ、ALU動作情報、および変位
イミディエートのような情報を含む。もちろん、本発明
の主な特徴は、図3に示されているデュアル復号器が1
サイクル中に1つまたは2つの命令を出すことができる
ことである。本発明の1つの目的は命令の全ての×86
ファミリイで動作できることであるから、図3の復号器
は2つの部分または2つのパスに分割される。1つのパ
スは×86命令セット内の全ての命令を取り扱うことが
でき、他のパスは第2の命令を並列に取り扱うことを主
として狙っている。いいかえると、本発明は、スーパー
スケーラー・オペレーションのための条件が満たされな
いとすると、1つの命令がクロック・サイクルごとに実
行されるようにする動作モードを含む。
【0022】さらに図3を参照すると、スーパースケー
ラー条件が満たされない時に、デフォールト・パイプラ
インとしてuパイプが機能するという事実を除き、2つ
のパイプは非常に類似して動作する。これは、図3にお
けるuパイプパスが全ての×86命令を実行でき、vパ
イプはフル命令セットのサブセットだけをねらっている
ことを意味する。たとえば、復号器13,14はファイ
ル×86命令セットのサブセットだけを復号するために
とくに設計される。他方、復号器12は、装置が1クロ
ック・サイクル当たり1つの命令に対してデフォールト
する時に、フル命令セットを復号できる。任意の概念シ
ーケンスにおいて、uパイプは列中の第1の命令を常に
表し、vパイプは同じ列中の第2の命令を常に表す。
ラー条件が満たされない時に、デフォールト・パイプラ
インとしてuパイプが機能するという事実を除き、2つ
のパイプは非常に類似して動作する。これは、図3にお
けるuパイプパスが全ての×86命令を実行でき、vパ
イプはフル命令セットのサブセットだけをねらっている
ことを意味する。たとえば、復号器13,14はファイ
ル×86命令セットのサブセットだけを復号するために
とくに設計される。他方、復号器12は、装置が1クロ
ック・サイクル当たり1つの命令に対してデフォールト
する時に、フル命令セットを復号できる。任意の概念シ
ーケンスにおいて、uパイプは列中の第1の命令を常に
表し、vパイプは同じ列中の第2の命令を常に表す。
【0023】レジスタ従属性検査が、復号器13と14
から出力を受けるユニット19により実行される。復号
器13と14の出力端子(ユニット19へ結合される)
は、現在の命令の宛先レジスタを示す情報を含む。ユニ
ット19内の通常の論理は、各命令ごとに宛先レジスタ
に従属性が存在するかどうかを、uパイプの宛先レジス
タを識別して、それがvパイプで使用されないことを確
実にすることにより、判定する。レジスタ従属性検査が
実行されていると同時に、ユニット17において長さ計
算も行われる。いいかえると、ユニット17は命令対の
長さ、すなわち、uパイププラスvパイプの和、を計算
する。ユニット15はuパイプの長さを計算するだけで
ある。
から出力を受けるユニット19により実行される。復号
器13と14の出力端子(ユニット19へ結合される)
は、現在の命令の宛先レジスタを示す情報を含む。ユニ
ット19内の通常の論理は、各命令ごとに宛先レジスタ
に従属性が存在するかどうかを、uパイプの宛先レジス
タを識別して、それがvパイプで使用されないことを確
実にすることにより、判定する。レジスタ従属性検査が
実行されていると同時に、ユニット17において長さ計
算も行われる。いいかえると、ユニット17は命令対の
長さ、すなわち、uパイププラスvパイプの和、を計算
する。ユニット15はuパイプの長さを計算するだけで
ある。
【0024】概念的には、ユニット15と17の出力端
子はマルチプレクサ21へ結合される。そのマルチプレ
クサは命令の長さを出力する。マルチプレクサ21は信
号ISELTWOにより制御される。その信号は基本的
な「1つ入って2つ出る」情報出力をレジスタ従属性検
査ユニット19から供給される。その信号ISELTW
OはMUXを制御することによりvパイプ命令を条件付
きで実行するために用いられるのと同じ信号である。た
だ1つの命令だけを実行できるとレジスタ従属性検査ユ
ニット19が判定すると、命令の長さがuパイプ・ベク
トルの長さのどのようなものでいいように、MUX21
が制御される。vパイプにおいては、ただ1つの命令が
出されると、制御信号ISELTWOはマルチプレクサ
22により出力すべき無オペレーション(NOP)を選
択する。そのような状況に対しては長さはuパイプだけ
から来る。
子はマルチプレクサ21へ結合される。そのマルチプレ
クサは命令の長さを出力する。マルチプレクサ21は信
号ISELTWOにより制御される。その信号は基本的
な「1つ入って2つ出る」情報出力をレジスタ従属性検
査ユニット19から供給される。その信号ISELTW
OはMUXを制御することによりvパイプ命令を条件付
きで実行するために用いられるのと同じ信号である。た
だ1つの命令だけを実行できるとレジスタ従属性検査ユ
ニット19が判定すると、命令の長さがuパイプ・ベク
トルの長さのどのようなものでいいように、MUX21
が制御される。vパイプにおいては、ただ1つの命令が
出されると、制御信号ISELTWOはマルチプレクサ
22により出力すべき無オペレーション(NOP)を選
択する。そのような状況に対しては長さはuパイプだけ
から来る。
【0025】レジスタ従属性が存在しないとすると、2
つの命令を並列に実行できる。この条件に対しては、M
UX21により出力される命令長さは、uパイプとvパ
イプの一緒の長さ計算(すなわち、ユニット17の出
力)と同じ長さであるように選択される。この条件に対
しては、装置は命令対を1つの大きい命令と見る。2つ
の命令が並列に実行されると、MUX22はuパイプ・
マイクロコード・ベクトルをMUX22の出力端子まで
単に送る。MUX21と22の出力端子における情報は
マルチプレクサの実行装置へ結合される。その実行装置
はアドレス計算ユニットと、算術論理装置(ALU)
と、データパスと、レジスタ・ファイル等を通常有す
る。図3のデュアル命令復号器により実行される全ての
動作は1クロック・サイクル内で実行されることを強調
しておく。すなわち、演算符号は上側の復号器へ結合さ
れ、ベクトルは多重化ユニットにより1クロック・サイ
クル内で全て供給される。
つの命令を並列に実行できる。この条件に対しては、M
UX21により出力される命令長さは、uパイプとvパ
イプの一緒の長さ計算(すなわち、ユニット17の出
力)と同じ長さであるように選択される。この条件に対
しては、装置は命令対を1つの大きい命令と見る。2つ
の命令が並列に実行されると、MUX22はuパイプ・
マイクロコード・ベクトルをMUX22の出力端子まで
単に送る。MUX21と22の出力端子における情報は
マルチプレクサの実行装置へ結合される。その実行装置
はアドレス計算ユニットと、算術論理装置(ALU)
と、データパスと、レジスタ・ファイル等を通常有す
る。図3のデュアル命令復号器により実行される全ての
動作は1クロック・サイクル内で実行されることを強調
しておく。すなわち、演算符号は上側の復号器へ結合さ
れ、ベクトルは多重化ユニットにより1クロック・サイ
クル内で全て供給される。
【0026】対化の例 本発明を良く理解するために、命令列の下記の例のいく
つかについて考えることにする。それらの列は前記重要
な対化の規則も示す。(与えられているフォーマットに
おいては、宛先オペランドは左側にある。) 簡単な命令の下記の例について考える。 mov edx,[ebx] add esi,4; この例においては、列内の第1の命令は「mov」であ
る。これはuパイプにより取り扱われる。uパイプ命令
に対する宛先はedxである。vパイプ「add」命令
においてはedxはどのようにしても用いられず、更
に、両方の命令は命令サブセット内にあるから(表1参
照)、図3の復号器は両方を並列に出すことができる。
つかについて考えることにする。それらの列は前記重要
な対化の規則も示す。(与えられているフォーマットに
おいては、宛先オペランドは左側にある。) 簡単な命令の下記の例について考える。 mov edx,[ebx] add esi,4; この例においては、列内の第1の命令は「mov」であ
る。これはuパイプにより取り扱われる。uパイプ命令
に対する宛先はedxである。vパイプ「add」命令
においてはedxはどのようにしても用いられず、更
に、両方の命令は命令サブセット内にあるから(表1参
照)、図3の復号器は両方を並列に出すことができる。
【0027】実行中は、第1の命令演算符号(すなわ
ち、「mov」)はuパイプ・オペコードであって、
「add」はvパイプ・オペコードである。上側復号器
12は「mov」命令を復号してuパイプベクトルを生
ずる。そのベクトルは宛先レジスタがedxであること
を指定する。この復号器は、メモリ読出しが必要である
ことも指定する。この場合にはアドレスebxにより指
定される。復号器12はアドレス計算のコンポーネント
も識別し、それが1ベクトル・マクロ命令であることを
決定する。同時に、サブセット復号器13が、「mo
v」がデュアル発生のために適当な命令のサブセット内
にあるかどうかを調べる。復号器13は、レジスタ従属
性検査ユニット19により用いられる宛先レジスタed
xを識別する。このユニット19はedxをesiに対
してチェックし、それらは同じではないと結論する。
ち、「mov」)はuパイプ・オペコードであって、
「add」はvパイプ・オペコードである。上側復号器
12は「mov」命令を復号してuパイプベクトルを生
ずる。そのベクトルは宛先レジスタがedxであること
を指定する。この復号器は、メモリ読出しが必要である
ことも指定する。この場合にはアドレスebxにより指
定される。復号器12はアドレス計算のコンポーネント
も識別し、それが1ベクトル・マクロ命令であることを
決定する。同時に、サブセット復号器13が、「mo
v」がデュアル発生のために適当な命令のサブセット内
にあるかどうかを調べる。復号器13は、レジスタ従属
性検査ユニット19により用いられる宛先レジスタed
xを識別する。このユニット19はedxをesiに対
してチェックし、それらは同じではないと結論する。
【0028】vパイプ側では、vパイプコード14がa
dd esiを調べ、esiを宛先レジスタとして識別
する(この例では、esiはソースでもある)。復号器
14はイミディエートのコンポーネント(すなわち、
4)も識別し、それからユニット17は2つの命令の長
さを計算する。それから「add」命令はvパイプに沿
って進む。したがって、両方の命令は簡単で、それらの
間には従属性がないから、それら2つの命令を対にでき
る。
dd esiを調べ、esiを宛先レジスタとして識別
する(この例では、esiはソースでもある)。復号器
14はイミディエートのコンポーネント(すなわち、
4)も識別し、それからユニット17は2つの命令の長
さを計算する。それから「add」命令はvパイプに沿
って進む。したがって、両方の命令は簡単で、それらの
間には従属性がないから、それら2つの命令を対にでき
る。
【0029】次に、下記の対化の例について考える。 mov edx[ebx]; add edx,4; この例においては、uパイプ命令のための宛先レジスタ
はedxである。この宛先レジスタはvパイプ命令にお
いても用いられるから、従属性検査論理は、両方の命令
を並列に出すことができないことを決定する。この場合
では、uパイプが最初に出され、vパイプパスは眠って
いるままである(すなわち、vパイプは「NOP」を出
す)。次のクロック・サイクルでは、「add」命令が
uパイプで実行される。次のクロック・サイクル中にu
パイプで出されたadd命令が、列中で続くどのような
命令とも並列に出すことができることを理解すべきであ
る。両方の命令が並列に出される場合には、列中の次の
実行(「add」命令に続く)はvパイプで出される。
はedxである。この宛先レジスタはvパイプ命令にお
いても用いられるから、従属性検査論理は、両方の命令
を並列に出すことができないことを決定する。この場合
では、uパイプが最初に出され、vパイプパスは眠って
いるままである(すなわち、vパイプは「NOP」を出
す)。次のクロック・サイクルでは、「add」命令が
uパイプで実行される。次のクロック・サイクル中にu
パイプで出されたadd命令が、列中で続くどのような
命令とも並列に出すことができることを理解すべきであ
る。両方の命令が並列に出される場合には、列中の次の
実行(「add」命令に続く)はvパイプで出される。
【0030】ここで次の例について考える。 lds[ebx]; push eax; この例においては、ロード命令「lds」は並列実行の
ために適当な命令のサブセットに含まれる(表1参
照)。したがって、lds命令はuパイプで出され、次
のクロック・サイクルでは「push」命令がuパイプ
で出される。この状況においては、uパイプの上側復号
器13はlds命令を適当なサブセットに無いとして識
別する。これは、2つの命令の間に従属性が無い場合で
もある。2つの命令を並列に出すことができない時に
は、vパイプ・オペコードが次のクロック・サイクルで
はuパイプ・オペコードになることに注目することが重
要である。列中の命令はvパイプ・オペコードになる。
ために適当な命令のサブセットに含まれる(表1参
照)。したがって、lds命令はuパイプで出され、次
のクロック・サイクルでは「push」命令がuパイプ
で出される。この状況においては、uパイプの上側復号
器13はlds命令を適当なサブセットに無いとして識
別する。これは、2つの命令の間に従属性が無い場合で
もある。2つの命令を並列に出すことができない時に
は、vパイプ・オペコードが次のクロック・サイクルで
はuパイプ・オペコードになることに注目することが重
要である。列中の命令はvパイプ・オペコードになる。
【0031】この好適な実施例においては、×86命令
のサブセット内の命令の特定のリストを種々の実施例に
おいて変更できることを理解すべきである。同時に、種
々の実施例はある命令の対化を許すことができる。それ
らの命令のために、両方の命令を出すこと、および並列
に実行することを許すために特殊なハードウェアが存在
するものとすると、暗黙の従属性が存在する。たとえ
ば、この好適な実施例は下記の命令を並列に実行するこ
とを許す特殊なハードウェアを含む。 cmp edx,0; jnz loop 上の例では、zフラッグに暗黙の従属性が存在するが、
マイクロプロセッサはそれらの命令を出すことを許し、
かつ並列に実行することを許す特殊なハードウェアを含
む。
のサブセット内の命令の特定のリストを種々の実施例に
おいて変更できることを理解すべきである。同時に、種
々の実施例はある命令の対化を許すことができる。それ
らの命令のために、両方の命令を出すこと、および並列
に実行することを許すために特殊なハードウェアが存在
するものとすると、暗黙の従属性が存在する。たとえ
ば、この好適な実施例は下記の命令を並列に実行するこ
とを許す特殊なハードウェアを含む。 cmp edx,0; jnz loop 上の例では、zフラッグに暗黙の従属性が存在するが、
マイクロプロセッサはそれらの命令を出すことを許し、
かつ並列に実行することを許す特殊なハードウェアを含
む。
【0032】2つの浮動小数点命令を対にするために、
整数命令対化のためにリストで示した最後の3つの条件
は、メモリ従属性検査と共に、この実施例では適用され
ない。その理由は、浮動小数点命令がイミディエート・
バイトを有しないことである。また、レジスタ従属性は
uパイプ命令とvパイプにおけるFXCH命令との間に
許される。FXCHはレジスタ−レジスタ命令であるか
ら、メモリ従属性は適用されない。いずれかのパイプに
おいて対にできる浮動小数点命令のサブセットをこの実
施例について下の表2に示す。それらの命令は全て1ベ
クトル命令である。
整数命令対化のためにリストで示した最後の3つの条件
は、メモリ従属性検査と共に、この実施例では適用され
ない。その理由は、浮動小数点命令がイミディエート・
バイトを有しないことである。また、レジスタ従属性は
uパイプ命令とvパイプにおけるFXCH命令との間に
許される。FXCHはレジスタ−レジスタ命令であるか
ら、メモリ従属性は適用されない。いずれかのパイプに
おいて対にできる浮動小数点命令のサブセットをこの実
施例について下の表2に示す。それらの命令は全て1ベ
クトル命令である。
【0033】
【0034】以上の説明を読めば、当業者は本発明の実
施例を種々変更できることが疑いもなく明らかであろう
が、例として説明し、図で示した特定の実施例は限定す
ることをいいかえると、するものでは決してないことを
理解すべきである。たとえば、この開示は満たすべき特
定の条件および規則の特定のセットを示したが、他の条
件も本発明の要旨および範囲を逸脱することなしに依存
できる。
施例を種々変更できることが疑いもなく明らかであろう
が、例として説明し、図で示した特定の実施例は限定す
ることをいいかえると、するものでは決してないことを
理解すべきである。たとえば、この開示は満たすべき特
定の条件および規則の特定のセットを示したが、他の条
件も本発明の要旨および範囲を逸脱することなしに依存
できる。
【図1】従来のマイクロプロセッサの中央処理装置パイ
プライン実行構造を示す。
プライン実行構造を示す。
【図2】本発明の中央処理装置パイプライン実行構造を
示す。
示す。
【図3】本発明に含まれるデュアル命令復号器装置の概
念的ブロック図である。
念的ブロック図である。
12、13、14 復号器 15、17 長さ計算ユニット 19 レジスタ従属性検査ユニット 21、22 マルチプレクサ
フロントページの続き (72)発明者 ケネス・ディ・シューメーカー アメリカ合衆国 95070 カリフォルニア 州・サラトガ・ベイラー アヴェニュ・ 18353 (72)発明者 アーマッド・ザイディ アメリカ合衆国 95051 カリフォルニア 州・サンタ クララ・ターステナ プレイ ス・ナンバー156・3735 (72)発明者 ドナルド・ビイ・アルパート アメリカ合衆国 95051 カリフォルニア 州・サンタ クララ・クレアモント アヴ ェニュ・73
Claims (2)
- 【請求項1】 所定の命令セットから出された任意の命
令を実行するために動作するコンピュータ命令を実行す
る第1の命令パイプライン手段、および前記所定の命令
セットからの命令のサブセットのみを実行するために動
作するコンピュータ命令を実行する第2の命令パイプラ
イン手段と、 命令の列中の第1の命令の宛先レジスタを識別し、前記
列中の第2の命令の実行中に前記レジスタが使用される
かどうかを判定して、もし使用されなければ、第1の条
件を満たすことを指示する従属性検査手段と、 前記列中の前記第1の命令と前記第2の命令が前記サブ
セット内にあるかどうかを判定し、前記第1の命令と前
記第2の命令の両方が前記サブセット内にあるときは、
第2の条件を満たすことを指示する判定手段と、 前記第1の条件と前記第2の条件が満たされたときに、
前記第1の命令と前記第2の命令を前記第1のパイプラ
イン手段および前記第2のパイプライン手段へ並列に出
すために命令を対にする手段と、 を備える2つのコンピュータ命令を並列に実行できるコ
ンピュータ装置。 - 【請求項2】 命令セットから選択された命令の列で構
成されているプログラムを実行するためのCPUと、前
記命令を実行するための実行装置とを含むコンピュータ
装置において、 命令の実行中複数の命令をオーバーラップさせて前記命
令の例を実行する第1のパイプライン手段および第2の
パイプライン手段と、 前記第1の命令と前記第2の命令が前記命令セットの所
定のサブセット内に含まれているかどうかを判定する手
段を含み、前記第1のパイプライン手段および前記第2
のパイプライン手段でそれぞれ実行するための第1のマ
イクロコード・ベクトルおよび第2のマイクロコード・
ベクトルを発生するために、前記命令の列からの命令対
を復号するための復号器手段と、 前記第1の命令の長さと前記第1及び前記第2の命令の
組合わされた長さとを計算するための計算手段と、 前記命令対の間にレジスタ従属性がないことを判定し、
従属性が存在するときは常に信号を発生する手段と、 前記信号が受けられた時および前記第1の命令と前記第
2の命令が前記所定のサブセット内に含まれている時
に、前記第1のマイクロコード・ベクトルと前記第2の
マイクロコード・ベクトルおよび前記組合わされた長さ
を常に出し、含まれていない時は前記第1のマイクロコ
ード命令を出力するマルチプレクサ手段と、を備えるコ
ンピュータ装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US82388192A | 1992-01-23 | 1992-01-23 | |
US823881 | 1992-01-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0628185A true JPH0628185A (ja) | 1994-02-04 |
Family
ID=25239997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5027177A Pending JPH0628185A (ja) | 1992-01-23 | 1993-01-25 | 2つのコンピュータ命令を並列に実行できるコンピュータ装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US5475824A (ja) |
JP (1) | JPH0628185A (ja) |
CN (1) | CN1074771A (ja) |
DE (1) | DE4301417C2 (ja) |
FR (1) | FR2686717A1 (ja) |
GB (1) | GB2263565B (ja) |
HK (1) | HK1006882A1 (ja) |
IT (1) | IT1263811B (ja) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5710912A (en) * | 1993-05-06 | 1998-01-20 | Hewlett-Packard Co. | Method and apparatus for enabling a computer system to adjust for latency assumptions |
CA2123442A1 (en) * | 1993-09-20 | 1995-03-21 | David S. Ray | Multiple execution unit dispatch with instruction dependency |
US5630149A (en) * | 1993-10-18 | 1997-05-13 | Cyrix Corporation | Pipelined processor with register renaming hardware to accommodate multiple size registers |
US6138230A (en) * | 1993-10-18 | 2000-10-24 | Via-Cyrix, Inc. | Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline |
US6073231A (en) * | 1993-10-18 | 2000-06-06 | Via-Cyrix, Inc. | Pipelined processor with microcontrol of register translation hardware |
EP0779577B1 (en) * | 1993-10-18 | 2002-05-22 | VIA-Cyrix, Inc. | Micoprocessor pipe control and register translation |
GB2289354B (en) * | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Multiple instruction set mapping |
GB2307072B (en) * | 1994-06-10 | 1998-05-13 | Advanced Risc Mach Ltd | Interoperability with multiple instruction sets |
US5692151A (en) * | 1994-11-14 | 1997-11-25 | International Business Machines Corporation | High performance/low cost access hazard detection in pipelined cache controller using comparators with a width shorter than and independent of total width of memory address |
US5931941A (en) * | 1995-04-28 | 1999-08-03 | Lsi Logic Corporation | Interface for a modularized computational unit to a CPU |
US5790826A (en) * | 1996-03-19 | 1998-08-04 | S3 Incorporated | Reduced register-dependency checking for paired-instruction dispatch in a superscalar processor with partial register writes |
US6212601B1 (en) * | 1996-08-30 | 2001-04-03 | Texas Instruments Incorporated | Microprocessor system with block move circuit disposed between cache circuits |
JP4226085B2 (ja) * | 1996-10-31 | 2009-02-18 | 株式会社ルネサステクノロジ | マイクロプロセッサ及びマルチプロセッサシステム |
KR100231852B1 (ko) * | 1996-11-06 | 1999-12-01 | 김영환 | 듀얼 파이프라인 프로세서에서 로드 명령의 병렬 수행 장치 |
US5802386A (en) * | 1996-11-19 | 1998-09-01 | International Business Machines Corporation | Latency-based scheduling of instructions in a superscalar processor |
US5974538A (en) * | 1997-02-21 | 1999-10-26 | Wilmot, Ii; Richard Byron | Method and apparatus for annotating operands in a computer system with source instruction identifiers |
GB2325535A (en) | 1997-05-23 | 1998-11-25 | Aspex Microsystems Ltd | Data processor controller with accelerated instruction generation |
JPH11134197A (ja) * | 1997-10-29 | 1999-05-21 | Fujitsu Ltd | Vliw方式計算機用のコンパイル装置及び方法並びにコンパイル実行プログラムを格納した記録媒体 |
US6029267A (en) * | 1997-11-25 | 2000-02-22 | Lucent Technologies Inc. | Single-cycle, soft decision, compare-select operation using dual-add processor |
US6076154A (en) * | 1998-01-16 | 2000-06-13 | U.S. Philips Corporation | VLIW processor has different functional units operating on commands of different widths |
US6237101B1 (en) | 1998-08-03 | 2001-05-22 | International Business Machines Corporation | Microprocessor including controller for reduced power consumption and method therefor |
JP2000305781A (ja) * | 1999-04-21 | 2000-11-02 | Mitsubishi Electric Corp | Vliw方式プロセッサ、コード圧縮装置、コード圧縮方法およびコード圧縮プログラムを記録した媒体 |
US6330657B1 (en) * | 1999-05-18 | 2001-12-11 | Ip-First, L.L.C. | Pairing of micro instructions in the instruction queue |
US6453412B1 (en) * | 1999-07-20 | 2002-09-17 | Ip First L.L.C. | Method and apparatus for reissuing paired MMX instructions singly during exception handling |
US6839833B1 (en) * | 1999-10-15 | 2005-01-04 | Unisys Corporation | Pipeline depth controller for an instruction processor |
GB2359641B (en) * | 2000-02-25 | 2002-02-13 | Siroyan Ltd | Mapping circuitry and method |
US6748411B1 (en) | 2000-11-20 | 2004-06-08 | Agere Systems Inc. | Hierarchical carry-select multiple-input split adder |
US7711926B2 (en) * | 2001-04-18 | 2010-05-04 | Mips Technologies, Inc. | Mapping system and method for instruction set processing |
US7363467B2 (en) * | 2002-01-03 | 2008-04-22 | Intel Corporation | Dependence-chain processing using trace descriptors having dependency descriptors |
US7111125B2 (en) * | 2002-04-02 | 2006-09-19 | Ip-First, Llc | Apparatus and method for renaming a data block within a cache |
US7051190B2 (en) * | 2002-06-25 | 2006-05-23 | Intel Corporation | Intra-instruction fusion |
US7398372B2 (en) * | 2002-06-25 | 2008-07-08 | Intel Corporation | Fusing load and alu operations |
JP3816844B2 (ja) * | 2002-07-05 | 2006-08-30 | 富士通株式会社 | プロセッサ及び命令制御方法 |
US7502910B2 (en) * | 2003-01-28 | 2009-03-10 | Sun Microsystems, Inc. | Sideband scout thread processor for reducing latency associated with a main processor |
US20060179275A1 (en) * | 2005-02-08 | 2006-08-10 | Takeshi Yamazaki | Methods and apparatus for processing instructions in a multi-processor system |
WO2010096119A1 (en) * | 2008-10-29 | 2010-08-26 | Adapteva Incorporated | Variable instruction width digital signal processor |
JP2011008732A (ja) * | 2009-06-29 | 2011-01-13 | Fujitsu Ltd | プライオリティ回路、演算処理装置及び演算処理方法 |
US8914615B2 (en) | 2011-12-02 | 2014-12-16 | Arm Limited | Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format |
US10437596B2 (en) * | 2014-11-26 | 2019-10-08 | Texas Instruments Incorporated | Processor with a full instruction set decoder and a partial instruction set decoder |
US10514925B1 (en) * | 2016-01-28 | 2019-12-24 | Apple Inc. | Load speculation recovery |
CN109947479A (zh) * | 2019-01-29 | 2019-06-28 | 安谋科技(中国)有限公司 | 指令执行方法及其处理器、介质和系统 |
CN110780616A (zh) * | 2019-09-06 | 2020-02-11 | 重庆东渝中能实业有限公司 | 一种基于流水线技术处理通讯命令的方法 |
CN112579174B (zh) * | 2020-12-05 | 2023-01-31 | 西安翔腾微电子科技有限公司 | 一种多周期双发射指令可发射的检测电路及方法 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4197579A (en) * | 1978-06-06 | 1980-04-08 | Xebec Systems Incorporated | Multi-processor for simultaneously executing a plurality of programs in a time-interlaced manner |
JPS6024985B2 (ja) * | 1978-08-31 | 1985-06-15 | 富士通株式会社 | デ−タ処理方式 |
US4236206A (en) * | 1978-10-25 | 1980-11-25 | Digital Equipment Corporation | Central processor unit for executing instructions of variable length |
US4424563A (en) * | 1980-09-05 | 1984-01-03 | Hewlett-Packard Company | Data processor including a multiple word processing method and device |
US4502111A (en) * | 1981-05-29 | 1985-02-26 | Harris Corporation | Token generator |
US4530050A (en) * | 1981-08-26 | 1985-07-16 | Hitachi, Ltd. | Central processing unit for executing instructions of variable length having end information for operand specifiers |
US4532589A (en) * | 1981-12-02 | 1985-07-30 | Hitachi, Ltd. | Digital data processor with two operation units |
JPS5932045A (ja) * | 1982-08-16 | 1984-02-21 | Hitachi Ltd | 情報処理装置 |
US4670890A (en) * | 1983-03-04 | 1987-06-02 | Research Corporation | Method of and/or apparatus for encoding and decoding sequential information in data handling systems |
US4594655A (en) * | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
US4714994A (en) * | 1985-04-30 | 1987-12-22 | International Business Machines Corp. | Instruction prefetch buffer control |
EP0239081B1 (en) * | 1986-03-26 | 1995-09-06 | Hitachi, Ltd. | Pipelined data processor capable of decoding and executing plural instructions in parallel |
US4885680A (en) * | 1986-07-25 | 1989-12-05 | International Business Machines Corporation | Method and apparatus for efficiently handling temporarily cacheable data |
US4766566A (en) * | 1986-08-18 | 1988-08-23 | International Business Machines Corp. | Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing |
US4811214A (en) * | 1986-11-14 | 1989-03-07 | Princeton University | Multinode reconfigurable pipeline computer |
US5201057A (en) * | 1987-01-22 | 1993-04-06 | Uht Augustus K | System for extracting low level concurrency from serial instruction streams |
US5179680A (en) * | 1987-04-20 | 1993-01-12 | Digital Equipment Corporation | Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus |
EP0312764A3 (en) * | 1987-10-19 | 1991-04-10 | International Business Machines Corporation | A data processor having multiple execution units for processing plural classes of instructions in parallel |
US5202967A (en) * | 1988-08-09 | 1993-04-13 | Matsushita Electric Industrial Co., Ltd. | Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction |
JP2810068B2 (ja) * | 1988-11-11 | 1998-10-15 | 株式会社日立製作所 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
US5202972A (en) * | 1988-12-29 | 1993-04-13 | International Business Machines Corporation | Store buffer apparatus in a multiprocessor system |
US5075840A (en) * | 1989-01-13 | 1991-12-24 | International Business Machines Corporation | Tightly coupled multiprocessor instruction synchronization |
US5113515A (en) * | 1989-02-03 | 1992-05-12 | Digital Equipment Corporation | Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer |
US5067069A (en) * | 1989-02-03 | 1991-11-19 | Digital Equipment Corporation | Control of multiple functional units with parallel operation in a microcoded execution unit |
US5167026A (en) * | 1989-02-03 | 1992-11-24 | Digital Equipment Corporation | Simultaneously or sequentially decoding multiple specifiers of a variable length pipeline instruction based on detection of modified value of specifier registers |
US5226166A (en) * | 1989-02-10 | 1993-07-06 | Mitsubishi Denki K.K. | Parallel operation processor with second command unit |
US5075844A (en) * | 1989-05-24 | 1991-12-24 | Tandem Computers Incorporated | Paired instruction processor precise exception handling mechanism |
US5073855A (en) * | 1989-06-30 | 1991-12-17 | Bull Hn Information Systems Inc. | Resource conflict detection method and apparatus included in a pipelined processing unit |
US5072449A (en) * | 1989-12-21 | 1991-12-10 | Stratacom, Inc. | Packet framing using cyclic redundancy checking |
US5241636A (en) * | 1990-02-14 | 1993-08-31 | Intel Corporation | Method for parallel instruction execution in a computer |
EP0453229B1 (en) * | 1990-04-17 | 1997-06-18 | Matsushita Electric Industrial Co., Ltd. | Method for transmission of variable length code |
CA2038264C (en) * | 1990-06-26 | 1995-06-27 | Richard James Eickemeyer | In-memory preprocessor for a scalable compound instruction set machine processor |
-
1993
- 1993-01-05 GB GB9300079A patent/GB2263565B/en not_active Expired - Lifetime
- 1993-01-20 DE DE4301417A patent/DE4301417C2/de not_active Expired - Lifetime
- 1993-01-21 FR FR9300580A patent/FR2686717A1/fr active Granted
- 1993-01-21 CN CN93101139.6A patent/CN1074771A/zh active Pending
- 1993-01-25 JP JP5027177A patent/JPH0628185A/ja active Pending
- 1993-01-25 IT ITMI930109A patent/IT1263811B/it active IP Right Grant
-
1995
- 1995-02-10 US US08/386,595 patent/US5475824A/en not_active Expired - Lifetime
-
1998
- 1998-06-22 HK HK98105913A patent/HK1006882A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
GB2263565A (en) | 1993-07-28 |
US5475824A (en) | 1995-12-12 |
GB9300079D0 (en) | 1993-03-03 |
FR2686717A1 (fr) | 1993-07-30 |
IT1263811B (it) | 1996-09-03 |
GB2263565B (en) | 1995-08-30 |
HK1006882A1 (en) | 1999-03-19 |
DE4301417A1 (ja) | 1993-07-29 |
FR2686717B1 (ja) | 1995-03-03 |
DE4301417C2 (de) | 1998-06-18 |
ITMI930109A0 (it) | 1993-01-25 |
CN1074771A (zh) | 1993-07-28 |
ITMI930109A1 (it) | 1994-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0628185A (ja) | 2つのコンピュータ命令を並列に実行できるコンピュータ装置 | |
US5598546A (en) | Dual-architecture super-scalar pipeline | |
KR100237985B1 (ko) | 추론적 로드 명령을 실행하는 프로세서, 그 방법 및 데이터 처리 시스템 | |
KR100900364B1 (ko) | 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체 | |
US7020765B2 (en) | Marking queue for simultaneous execution of instructions in code block specified by conditional execution instruction | |
US7299343B2 (en) | System and method for cooperative execution of multiple branching instructions in a processor | |
US6684323B2 (en) | Virtual condition codes | |
US20100332803A1 (en) | Processor and control method for processor | |
JP4841861B2 (ja) | 演算処理装置及びデータ転送処理の実行方法 | |
US6728872B1 (en) | Method and apparatus for verifying that instructions are pipelined in correct architectural sequence | |
JP2007515715A (ja) | 命令キャッシュからラベル境界上のトレースキャッシュに遷移させる方法 | |
JPH0926878A (ja) | データ処理装置 | |
JP2010532063A (ja) | 条件命令を無条件命令および選択命令へと拡張する方法およびシステム | |
US7272704B1 (en) | Hardware looping mechanism and method for efficient execution of discontinuity instructions | |
US6247117B1 (en) | Apparatus and method for using checking instructions in a floating-point execution unit | |
US6725359B2 (en) | Address stage logic for generating speculative address operand interim results of preceding instruction by arithmetic operations and configuring | |
US5416913A (en) | Method and apparatus for dependency checking in a multi-pipelined microprocessor | |
US20040064684A1 (en) | System and method for selectively updating pointers used in conditionally executed load/store with update instructions | |
JPH081602B2 (ja) | データ処理装置 | |
JPH07120278B2 (ja) | データ処理装置 | |
US6405303B1 (en) | Massively parallel decoding and execution of variable-length instructions | |
JP5335440B2 (ja) | オペランドの早期の条件付き選択 | |
US20220035635A1 (en) | Processor with multiple execution pipelines | |
JP2009230338A (ja) | プロセサおよび情報処理装置 | |
JP3736866B2 (ja) | スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット |