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
Application number
JP5027177A
Other languages
English (en)
Inventor
Edward T Grochowski
エドワード・ティ・グロコウスキイ
Kenneth D Shoemaker
ケネス・ディ・シューメーカー
Ahmad Zaidi
アーマッド・ザイディ
Donald B Alpert
ドナルド・ビイ・アルパート
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JPH0628185A publication Critical patent/JPH0628185A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent 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のパ
イプラインで並列に出すことができる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は全体としてコンピュータ
の分野に関するものであり、とくに、本発明はマイクロ
プロセッサ・アーキテクチャ、および命令実行の速さを
向上する方法に関するものである。
【0002】
【従来の技術】コンピュータは歴史的には命令を順次
に、すなわち、次々に実行するように構成されてきた。
コンピュータ命令の順次実行は論理的な秩序正しい方法
を提供するが、処理速度を向上するという要求が常に存
在するために、研究者たちは並列実行手法を実現する方
法を開発させられてきた。多数の命令を並列に実行でき
るマイクロプロセッサすなわちコンピュータの設計に成
功するためには数多くの問題を克服せねばならない。た
とえば、マイクロプロセッサは、何百という個々の命令
を含む命令セット・アーキテクチャを典型的に有する。
与えられたアーキテクチャのための種々のアドレッシン
グ・モードの全てを数えると、可能な演算符号の総数は
ほぼ何千にもなる。与えられた命令セットに対して、何
千という可能な第1の命令の全てを可能な第2の命令の
全てと対にすることにより、何百万という種々の組合わ
せを容易に得ることができる。それら各種の組合わせの
全てを実行できる装置を設計することは極めて困難な作
業である。設計は極めて複雑なことがあるから、そのよ
うな問題を取り扱うことができなくなることがわかる。
長い時間遅れ無しに命令セットを実行できる並列装置
で、完全な命令セットを復号できるいくつかの復号器を
製作することには問題がある。
【0003】命令を並列実行できるコンピュータを製造
することに伴う別の問題は、従来の装置、すなわち、命
令の順次実行(クロック・サイクル当たり1つの命令)
により動作する装置のために構成されているソフトウェ
アを実行できなければならないことである。いいかえる
と、並列装置は順次動作を行えなければならない。
【0004】
【発明が解決しようとする課題】本発明は上記従来の問
題を解決して並列処理できるコンピュータを提供するこ
とである。
【0005】
【課題を解決するための手段】本発明は2つの命令を1
つのクロック・サイクルで実行できるコンピュータ装置
を開示するものである。本発明は、与えられた命令セッ
トから選択された一対の命令を復号し、それらの命令を
並列に実行して正しい結果を得る。本発明の顕著な特徴
の1つは、対にされている命令の間にレジスタ従属性が
ないとすると、コンピュータ装置が2つの命令を出すだ
けであることである。
【0006】2つの命令を1つのクロック・サイクルで
並列に実行できるコンピュータ装置を開示するものであ
る。このコンピュータ装置は、2つの命令の間にレジス
タ従属性がないと2つの命令を並列に出すだけであり、
両方の命令がコンピュータの命令セット内に入る。一実
施例においては、本発明はコンピュータ装置命令を実行
するための第1のパイプライン手段と第2のパイプライ
ン手段を含む。第1のパイプライン手段はファイル命令
セットから出されたいかなる命令をも実行でき、第2の
パイプライン手段は命令の所定のサブセットを実行する
ことに制約される。サブセットはどれが一般に実行され
る命令であるかを基にして選択される。
【0007】命令の列中の第1の命令の宛先レジスタを
識別するためにレジスタ従属性検査手段が含まれる。従
属性検査手段は、列の第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(商標)アーキテクチャと、命令の
ファミリから提供される例をしばしば言及するが、本発
明はそれら特定の装置に限定されるものではない。
【0010】パイプライニング パイプライニングというのは、多数の命令を、実行にお
いて同時にオーバーラップする技術である。パイプライ
ニングは、中央処理装置(CPU)の効率と速度を向上
するために従来技術で広く用いられている。パイプライ
ン構造においては、命令は一端に入り、ステージすなわ
ちパイプ部分で処理され、他端から出る。パイプライン
の各ステージは命令の部分を完了する。図1を参照し
て、ここで、従来のパイプラインの構造が示されている
図1を参照する。このパイプライン構造においては、命
令のステージが左の欄に沿ったエントリにより示されて
いる。命令ステップの間のクロック時間間隔が水平の数
により示されている。パイプライン内の各ステップをク
ロック・サイクルまたはマシンサイクルと呼ぶ。
【0011】パイプラインの最初のステージは「PF」
ステージである。これはパイプラインのプリフェッチ部
を示す。このステージにおいては、命令はオンチップ・
キャッシュメモリからプリフェッチされる。次のパイプ
ラインステージは「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パイプはある簡単な命令を実行
できる。
【0013】次に、本発明のパイプライン構造が示され
ている図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パイプは停止されたままである。
【0015】命令対化 本発明の基本的な概念は、2つの命令の間にレジスタ従
属性がなく、両方の命令が並列実行の資格がある命令の
サブセットに属している場合に、2つの命令を並列に出
す復号装置をコンピュータ装置が含む。このデュアル命
令復号器は、プログラム命令中の第1の命令のための宛
先レジスタをまず識別する。この命令はuパイプ命令に
なる。それから本発明の装置は、uパイプ命令が、列中
の第2の命令の実行中に何らかのやり方で用いられるか
どうかを判定する。もし用いられないとする(すなわ
ち、2つの命令が独立している)と、両方の命令は並列
に出される。
【0016】先に説明したように、本発明の極めて大規
模な装置は、完全な命令セット内で平行関係を利用する
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つの命令を迅速に識別し、それらを迅速に
復号し、それからそれらの命令を並列に実行することを
許す。
【0019】命令の並列実行に対する次の重要な制約
は、対にされている命令の間にレジスタ従属性が存在し
ないことである。これは、第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パイプ・キャリー・フラッグへの従属性を避け
るため)。
【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つの命令がクロック・サイクルごとに実
行されるようにする動作モードを含む。
【0022】さらに図3を参照すると、スーパースケー
ラー条件が満たされない時に、デフォールト・パイプラ
インとして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パイプの長さを計算するだけで
ある。
【0024】概念的には、ユニット15と17の出力端
子はマルチプレクサ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クロック・サイ
クル内で全て供給される。
【0026】対化の例 本発明を良く理解するために、命令列の下記の例のいく
つかについて考えることにする。それらの列は前記重要
な対化の規則も示す。(与えられているフォーマットに
おいては、宛先オペランドは左側にある。) 簡単な命令の下記の例について考える。 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に対
してチェックし、それらは同じではないと結論する。
【0028】vパイプ側では、vパイプコード14がa
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パイプで出される。
【0030】ここで次の例について考える。 lds[ebx]; push eax; この例においては、ロード命令「lds」は並列実行の
ために適当な命令のサブセットに含まれる(表1参
照)。したがって、lds命令はuパイプで出され、次
のクロック・サイクルでは「push」命令がuパイプ
で出される。この状況においては、uパイプの上側復号
器13はlds命令を適当なサブセットに無いとして識
別する。これは、2つの命令の間に従属性が無い場合で
もある。2つの命令を並列に出すことができない時に
は、vパイプ・オペコードが次のクロック・サイクルで
はuパイプ・オペコードになることに注目することが重
要である。列中の命令はvパイプ・オペコードになる。
【0031】この好適な実施例においては、×86命令
のサブセット内の命令の特定のリストを種々の実施例に
おいて変更できることを理解すべきである。同時に、種
々の実施例はある命令の対化を許すことができる。それ
らの命令のために、両方の命令を出すこと、および並列
に実行することを許すために特殊なハードウェアが存在
するものとすると、暗黙の従属性が存在する。たとえ
ば、この好適な実施例は下記の命令を並列に実行するこ
とを許す特殊なハードウェアを含む。 cmp edx,0; jnz loop 上の例では、zフラッグに暗黙の従属性が存在するが、
マイクロプロセッサはそれらの命令を出すことを許し、
かつ並列に実行することを許す特殊なハードウェアを含
む。
【0032】2つの浮動小数点命令を対にするために、
整数命令対化のためにリストで示した最後の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】 所定の命令セットから出された任意の命
    令を実行するために動作するコンピュータ命令を実行す
    る第1の命令パイプライン手段、および前記所定の命令
    セットからの命令のサブセットのみを実行するために動
    作するコンピュータ命令を実行する第2の命令パイプラ
    イン手段と、 命令の列中の第1の命令の宛先レジスタを識別し、前記
    列中の第2の命令の実行中に前記レジスタが使用される
    かどうかを判定して、もし使用されなければ、第1の条
    件を満たすことを指示する従属性検査手段と、 前記列中の前記第1の命令と前記第2の命令が前記サブ
    セット内にあるかどうかを判定し、前記第1の命令と前
    記第2の命令の両方が前記サブセット内にあるときは、
    第2の条件を満たすことを指示する判定手段と、 前記第1の条件と前記第2の条件が満たされたときに、
    前記第1の命令と前記第2の命令を前記第1のパイプラ
    イン手段および前記第2のパイプライン手段へ並列に出
    すために命令を対にする手段と、 を備える2つのコンピュータ命令を並列に実行できるコ
    ンピュータ装置。
  2. 【請求項2】 命令セットから選択された命令の列で構
    成されているプログラムを実行するためのCPUと、前
    記命令を実行するための実行装置とを含むコンピュータ
    装置において、 命令の実行中複数の命令をオーバーラップさせて前記命
    令の例を実行する第1のパイプライン手段および第2の
    パイプライン手段と、 前記第1の命令と前記第2の命令が前記命令セットの所
    定のサブセット内に含まれているかどうかを判定する手
    段を含み、前記第1のパイプライン手段および前記第2
    のパイプライン手段でそれぞれ実行するための第1のマ
    イクロコード・ベクトルおよび第2のマイクロコード・
    ベクトルを発生するために、前記命令の列からの命令対
    を復号するための復号器手段と、 前記第1の命令の長さと前記第1及び前記第2の命令の
    組合わされた長さとを計算するための計算手段と、 前記命令対の間にレジスタ従属性がないことを判定し、
    従属性が存在するときは常に信号を発生する手段と、 前記信号が受けられた時および前記第1の命令と前記第
    2の命令が前記所定のサブセット内に含まれている時
    に、前記第1のマイクロコード・ベクトルと前記第2の
    マイクロコード・ベクトルおよび前記組合わされた長さ
    を常に出し、含まれていない時は前記第1のマイクロコ
    ード命令を出力するマルチプレクサ手段と、を備えるコ
    ンピュータ装置。
JP5027177A 1992-01-23 1993-01-25 2つのコンピュータ命令を並列に実行できるコンピュータ装置 Pending JPH0628185A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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) スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット