JP2839075B2 - 処理システムを動作させる方法及び処理システム - Google Patents

処理システムを動作させる方法及び処理システム

Info

Publication number
JP2839075B2
JP2839075B2 JP6317961A JP31796194A JP2839075B2 JP 2839075 B2 JP2839075 B2 JP 2839075B2 JP 6317961 A JP6317961 A JP 6317961A JP 31796194 A JP31796194 A JP 31796194A JP 2839075 B2 JP2839075 B2 JP 2839075B2
Authority
JP
Japan
Prior art keywords
instruction
branch instruction
branch
instructions
execution
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 - Lifetime
Application number
JP6317961A
Other languages
English (en)
Other versions
JPH07281894A (ja
Inventor
スンヨン・ピーター・ソン
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH07281894A publication Critical patent/JPH07281894A/ja
Application granted granted Critical
Publication of JP2839075B2 publication Critical patent/JP2839075B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、情報を処理するための
システムに係り、更に詳細に説明すれば、処理システム
及びその動作方法に係る。
【0002】
【従来の技術】スーパー・スカラ処理システムは、複数
の命令を同時に実行するために複数の実行ユニットを含
んでいる。一部の処理システムは、投機的(speculativ
e )分岐をサポートしている。従って、一の条件付き分
岐命令に応答して、処理システムは、その処理を複数の
可能な目標命令シーケンスのうちの選択された1つに投
機的に分岐させる。このような投機的分岐は、前記選択
された命令シーケンスが正しいシーケンスであるか否か
を実際に決定する前に行われる。
【0003】もし、後の時点でこの投機的分岐が正しい
ことを決定すれば、処理システムは、前記選択された命
令シーケンスの実行を継続する。他方、後の時点でその
分岐が誤りであることを決定すれば、処理システムは、
1つ又は複数の正しい命令の処理を開始する。代表的な
従来技術の処理システムは、分岐が誤りであると決定し
た後の、正しい命令の処理が遅延するという欠点を有し
ている。
【0004】
【発明が解決しようとする課題】従って、代表的な従来
技術に比較して、分岐が誤りであると決定した後の正し
い命令の処理の遅延を相対的に減少させることができる
処理システム及び方法について、明白な要請が存在す
る。
【0005】
【課題を解決するための手段】本発明に従った処理シス
テム及びその動作方法では、複数の分岐命令に応答し
て、当該複数の分岐命令の実行の前に、一の命令が処理
される。これらの分岐命令のうち何れかの実行に応答し
て、当該実行された分岐命令の完了の前に、前記命令の
処理が取り消される。
【0006】本発明の利点は、代表的な従来技術と比較
して、分岐が誤りであると決定した後の正しい命令の処
理の遅延が少ないことにある。
【0007】
【実施例】図1〜図11を参照すると、本発明の実施例
及びその利点を一層詳細に理解することができる。これ
らの図面では、同一の対応する部分に同一の参照符号が
付されている。
【0008】図1には、本発明の実施例に従ったプロセ
ッサ10の構成が示されている。プロセッサ10は、単
一の集積回路に搭載したスーパー・スカラ型のマイクロ
プロセッサである。従って、後述するように、プロセッ
サ10は、種々のユニット、レジスタ、バッファ、メモ
リ及び他の部分を含んでおり、これらの全ての構成要素
が集積回路によって形成される。また、プロセッサ10
は、縮小命令セット・コンピュータ(RISC)技法に
従って動作する。図1に示されているように、システム
・バス11が、プロセッサ10のバス・インタフェース
・ユニット(以下「BIU」と略記)12に接続されて
いる。BIU12は、プロセッサ10とシステム・バス
11の間の情報の転送を制御する。
【0009】BIU12は、プロセッサ10の命令キャ
ッシュ14及びデータ・キャッシュ16に接続されてい
る。命令キャッシュ14は、シーケンサ・ユニット18
に複数の命令を供給する。命令キャッシュ14からのこ
れらの命令に応答して、シーケンサ・ユニット18は、
プロセッサ10の他の実行回路に選択的に命令を供給す
る。
【0010】シーケンサ・ユニット18に加えて、プロ
セッサ10の実行回路には、複数の実行ユニットとし
て、分岐ユニット20、固定小数点ユニットA(以下
「FXUA」と略記)22、固定小数点ユニットB(以
下「FXUB」と略記)24、複合固定小数点ユニット
(以下「CFXU」と略記)26、ロード/ストア・ユ
ニット(以下「LSU」と略記)28及び浮動小数点ユ
ニット(以下「FPU」と略記)30が含まれている。
FXUA22、FXUB24、CFXU26及びLSU
28は、それぞれのソース・オペランド情報を、汎用レ
ジスタ(以下「GPR」と略記)32及び固定小数点用
名前変更(リネーム)バッファ34から受け取る。更に
は、FXUA22及びFXUB24は、キャリー・ビッ
ト・レジスタ(以下「CAレジスタ」と略記)42から
キャリー・ビットを受け取る。FXUA22、FXUB
24、CFXU26及びLSU28は、それぞれの動作
の結果(宛先オペランド情報)を、名前変更バッファ3
4内の選択されたエントリに格納するために供給する。
また、CFXU26は、専用レジスタ(以下「SPR」
と略記)40との間で、ソース・オペランド情報及び宛
先オペランド情報を授受する。
【0011】FPU30は、ソース・オペランド情報
を、浮動小数点レジスタ(以下「FPR」と略記)36
及び浮動小数点用名前変更バッファ38から受け取る。
FPU30は、その動作の結果(宛先オペランド情報)
を、名前変更バッファ38内の選択されたエントリに格
納するために供給する。
【0012】「ロード」命令に応答して、LSU28
は、データ・キャッシュ16からの情報を受け取るとと
もに、この情報を、名前変更バッファ34及び38のう
ちの選択された1つにコピーする。もし、この情報が、
データ・キャッシュ16内に格納されていなければ、デ
ータ・キャッシュ16は、システム・バス11に接続さ
れたシステム・メモリ39から(BIU12及びシステ
ム・バス11を介して)この情報を受け取る。更に、デ
ータ・キャッシュ16は、その内部に格納されている情
報を、(BIU12及びシステム・バス11を介して)
システム・バス11に接続されたシステム・メモリ39
へ供給することができる。「ストア」命令に応答して、
LSU28は、GPR32及びFPR36のうちの選択
された1つから情報を受け取り、その情報をデータ・キ
ャッシュ16へコピーする。
【0013】シーケンサ・ユニット18は、GPR32
及びFPR36との間で情報を授受する。分岐ユニット
20は、シーケンサ・ユニット18から、複数の命令
と、プロセッサ10の現状態を指示する信号を受け取
る。これらの命令と信号に応答して、分岐ユニット20
は、プロセッサ10が実行すべき一の命令シーケンスを
格納する処の、適当なメモリ・アドレスを指示する信号
を(シーケンサ・ユニット18に)供給する。分岐ユニ
ット20からのこのような信号に応答して、シーケンサ
・ユニット18は、命令キャッシュ14から、指示され
た命令シーケンスを受け取る。もし、1つ又は複数の命
令シーケンスが、命令キャッシュ14内に格納されてい
なければ、命令キャッシュ14は、これらの命令を、シ
ステム・バス11に接続されたシステム・メモリ39か
ら(BIU12及びシステム・バス11を介して)受け
取る。
【0014】命令キャッシュ14から受け取られた命令
に応答して、シーケンサ・ユニット18は、これらの命
令を、実行ユニット20、22、24、26、28及び
30のうちの選択された1つに、選択的にディスパッチ
する。実行ユニットの各々は、特定クラスの命令を実行
する。例えば、FXUA22及びFXUB24は、ソー
ス・オペランドについて、第1クラスの固定小数点算術
演算(加算、減算、論理積、論理和、排他的論理和な
ど)を実行する。CFXU26は、ソース・オペランド
について、第2クラスの固定小数点演算(固定小数点乗
除算など)を実行する。FPU30は、ソース・オペラ
ンドについて、浮動小数点演算(浮動小数点乗除算な
ど)を実行する。
【0015】情報が、固定小数点用名前変更バッファ3
4のうちの選択された1つに格納される際、そのような
情報は、当該選択された名前変更バッファが割り振られ
ている命令によって指定される処の、一の格納位置(例
えば、GPR32のうちの1つ又はCAレジスタ42)
と関連付けられる。名前変更バッファ34のうちの選択
された1つに格納されている情報は、シーケンサ・ユニ
ット18からの信号に応答して、それに関連するGPR
32のうちの1つ(又はCAレジスタ42)にコピーさ
れる。シーケンサ・ユニット18は、その情報を生成し
た命令の「完了」に応答して、名前変更バッファ34の
うちの選択された1つに格納されている情報の前記コピ
ー動作を指令する。このようなコピー動作は、「ライト
バック」と呼ばれる。
【0016】情報が、浮動小数点用名前変更バッファ3
8のうちの選択された1つに格納される際、そのような
情報は、FPR36のうちの1つと関連付けられる。名
前変更バッファ38のうちの選択された1つに格納され
ている情報は、シーケンサ・ユニット18からの信号に
応答して、FPR36のうちの関連する1つにコピーさ
れる。シーケンサ・ユニット18は、その情報を生成し
た命令の「完了」に応答して、名前変更バッファ38の
うちの選択された1つに格納されている情報の前記コピ
ー動作を指令する。
【0017】プロセッサ10は、種々の実行ユニット2
0、22、24、26、28及び30において、複数の
命令を同時に処理することによって、高性能を達成す
る。従って、各命令は、一連の段階(ステージ)として
処理され、各段階は、他の命令の諸段階と並列に実行可
能である。このような技法は、「パイプライン化」と呼
ばれる。実施例の一の側面に従って、一の命令は、6段
階(フェッチ、デコード、ディスパッチ、実行、完了及
びライトバック)として処理されるのが普通である。
【0018】フェッチ段階では、シーケンサ・ユニット
18は、分岐ユニット20及びシーケンサ・ユニット1
8に関連して既に説明した、命令シーケンスを格納する
1つ又は複数のメモリ・アドレスから1つ又は複数の命
令を(命令キャッシュ14から)選択的に受け取る。
【0019】デコード段階では、シーケンサ・ユニット
18は、最大4つまでのフェッチされた命令をデコード
する。
【0020】ディスパッチ段階では、シーケンサ・ユニ
ット18は、ディスパッチされる命令の結果(宛先オペ
ランド情報)のために名前変更バッファ34又は38の
エントリを予約した後に、実行ユニット20、22、2
4、26、28及び30のうちの(デコード段階中のデ
コードに応答して)選択された実行ユニットに対し、最
大4つまでのデコードされた命令を選択的にディスパッ
チする。ディスパッチ段階では、ディスパッチされた命
令のために選択された実行ユニットに対し、オペランド
情報が供給される。プロセッサ10は、プログラムされ
たシーケンスの順序で、諸命令をディスパッチする。
【0021】実行段階では、諸実行ユニットが、ディス
パッチされた命令を実行するとともに、前述のように名
前変更バッファ34又は38内の選択されたエントリに
格納するために、それらの動作の結果(宛先オペランド
情報)を供給する。このように、プロセッサ10は、複
数の命令をそのプログラムされたシーケンスに対して順
序外(out-of-order)で実行することができる。
【0022】完了段階では、シーケンサ・ユニット18
は、一の命令が「完了」したことを指示する。プロセッ
サ10は、複数の命令をプログラムされたシーケンスの
順序で「完了」する。
【0023】ライトバック段階では、シーケンサ・ユニ
ット18は、名前変更バッファ34及び38からGPR
32及びFPR36への情報のコピー動作をそれぞれ指
示する。シーケンサ・ユニット18は、選択された名前
変更バッファに格納されている情報のコピー動作を指令
する。同様に、特定の命令のライトバック段階では、プ
ロセッサ10は、当該特定の命令に応答して、そのアー
キテクチャ上の状態を更新する。プロセッサ10は、そ
れぞれの命令の「ライトバック」段を、これらの命令が
プログラムされたシーケンスの順序で処理する。指定さ
れた状況において、プロセッサ10は、一の命令の完了
段階及びライトバック段階を有利に併合することができ
る。
【0024】実施例では、各命令は、命令処理の各段階
を完了するのに1マシン・サイクルを必要とする。それ
にも拘わらず、一部の命令(例えば、CFXU26によ
って実行される複合固定小数点命令)は、複数のマシン
・サイクルを必要とすることがある。従って、先行する
命令の完了に必要な時間が変動することに起因して、特
定の命令の実行段階と完了段階の間に可変的な遅延が生
ずることがある。
【0025】図2には、実施例の諸基本ブロックに割り
当てられる複数の命令が、概念的に例示されている。図
3には、プロセッサ10によって処理される図2の命令
の種々の段階が、概念的に示されている。重要なこと
は、プロセッサ10が、投機的分岐をサポートするとい
うことである。
【0026】従って、一の条件付き分岐命令に応答し
て、プロセッサ10は、その処理を複数の可能な目標命
令シーケンスのうちの選択された1つに投機的に分岐さ
せる。この投機的な分岐は、前記選択された命令シーケ
ンスが正しいシーケンスであるか否かを実際に決定する
前に行われる。かくて、プロセッサ10は、前記選択さ
れた命令シーケンスが正しいシーケンスであるか否かを
実際に決定する前に、即ち分岐ユニット20が前記条件
付き分岐命令を実行する前に、前記選択された命令シー
ケンスを投機的に処理する。このような投機的な分岐
は、前記条件付き分岐命令の一の分岐条件の状態を、プ
ロセッサ10が予測することに応じて行われる。プロセ
ッサ10は、前記分岐条件が、まだ実行を終了していな
い先行命令の結果に依存する場合に、この状態を予測す
る。
【0027】そのような先行命令の実行を終了した後、
プロセッサ10は、前記分岐条件の実際の状態を決定
し、そして分岐ユニット20が、前記条件付き分岐命令
を実行する。もし、実際の状態が予測された状態と同じ
であれば、予測された状態は正しい。他方、実際の状態
が予測された状態と相違すれば、予測された状態は誤り
である。
【0028】もし、予測された状態が正しければ、前記
選択された命令シーケンスは、正しいシーケンスであ
り、プロセッサ10は、その選択された命令シーケンス
の処理を継続する。他方、予測された状態が誤りであれ
ば、前記選択された命令シーケンスは、正しいシーケン
スではない。予測された状態が誤りである状況では、プ
ロセッサ10は、前記選択された命令シーケンスの処理
を停止し(取り消し)、前記選択された命令シーケンス
の処理の影響を逆転することによって誤予測から回復す
るとともに、前記分岐条件の実際の状態に応じた正しい
命令シーケンスの処理を開始する。
【0029】図2及び図3の例に示されているように、
プロセッサ10は、2つの命令、即ち乗算(MUL)命
令及び第1の条件付き分岐命令(BRN1)を、基本ブ
ロック番号(BBID)=1に割り当てる。サイクル4
の間の分岐エントリAでは、プロセッサ10は、BRN
1命令に応答して、その処理をBRN1命令から加算命
令(ADD)に投機的に分岐させる。プロセッサ10
は、ADD命令と第2の条件付き分岐命令(BRN2)
をBBID=2に割り当てる。
【0030】サイクル5の間の分岐エントリBでは、プ
ロセッサ10は、BRN2命令に応答して、その処理を
BRN2命令から除算命令(DIV)へ投機的に分岐さ
せるとともに、この命令をBBID=3に割り当てる。
ここで留意すべきは、プロセッサ10は、後のサイクル
9になるまでBRN1命令の分岐条件の実際の状態を決
定しないにも拘わらず、サイクル5の間にBRN2命令
に応答して、その処理を投機的に分岐させることができ
る、という点である。
【0031】従って、実施例の重要な側面に従って、プ
ロセッサ10は、後の時点まで先行する分岐命令(例え
ば、BRN1命令)の分岐条件の実際の状態を決定しな
い場合であっても、これに後続する分岐命令(例えば、
BRN2命令)に応答して、その処理を投機的に分岐さ
せることができる。かくて、プロセッサ10は、複数の
分岐命令の分岐条件のうち任意の分岐条件の実際の状態
を決定する前に、これらの複数の分岐命令に同時に応答
して、その処理を投機的に分岐させることができる。
【0032】サイクル6の間、プロセッサ10は、BR
N2命令を実行して、BRN2命令の分岐条件の実際の
状態を決定する。図2及び図3の例では、BRN2命令
の分岐条件の実際の状態は、予測された状態と異なって
いる。従って、この予測された状態は誤りであるから、
前記選択された命令シーケンス(即ち、プロセッサ10
がその処理を投機的に分岐させたDIV命令)は正しく
ない。BRN2命令の分岐条件の予測された状態が誤り
であるという決定に応答して、プロセッサ10は、サイ
クル7の間に、DIV命令の処理を取り消し、このDI
V命令の処理の影響を逆転することによって誤予測から
回復する。
【0033】従って、プロセッサ10は、先行する分岐
命令(例えば、BRN1命令)の分岐条件の実際の状態
を後の時点まで決定しない場合であっても、これに後続
する分岐命令(例えば、BRN2命令)の分岐条件の状
態の誤予測から回復することができる。
【0034】また、サイクル7の間、プロセッサ10
は、BRN2命令の分岐条件の実際の状態に応答して、
正しい命令シーケンスの処理を開始する。具体的には、
プロセッサ10は、シフト命令(SHIFT)及び第3
の分岐命令(BRN3)をフェッチする。プロセッサ1
0は、このSHIFT命令及びBRN3命令にBBID
=3を割り当てる。つまり、プロセッサ10は、DIV
命令(前にBBID=3を割り当てられていた)の取り
消しに応答して、BBID=3を再利用するのである。
代替実施例では、プロセッサ10は、サイクル4の間
に、DIV命令のフェッチと並列に、SHIFT命令及
びBRN3命令をプリフェッチすることになろう。この
ような代替実施例では、プロセッサ10は、サイクル7
(サイクル8ではなく)の間に、SHIFT命令及びB
RN3命令をディスパッチし、その結果、サイクル8
(サイクル9ではなく)の間に、これらのSHIFT命
令及びBRN3命令が実行されることになろう。
【0035】従って、実施例の重要な側面に従って、プ
ロセッサ10は、分岐条件の実際の状態が予測された状
態と異なることに応答して、直ちに正しい命令シーケン
スの処理を開始することができる。正しい命令シーケン
スの処理を開始するため、プロセッサ10は、当該分岐
命令に先行する全ての命令の実行を終了する必要はな
い。かくて、プロセッサ10は、正しい命令シーケンス
の処理を開始するために、当該分岐命令を「完了」する
必要はない。
【0036】例えば、図3では、MUL命令は、サイク
ル8になるまで実行を終了しない。それにも拘わらず、
プロセッサ10は、このMUL命令の実行を終了する前
のサイクル7の間に、これに後続するSHIFT命令及
びBRN3命令の処理を開始する。重要であるのは、M
UL命令及びDIV命令は、サイクル3及び5の間に、
CFXU26に対しそれぞれディスパッチされるが、プ
ロセッサ10は、CFXU26内のMUL命令の実行を
取り消さずに、サイクル7の間に、CFXU26内のD
IV命令の実行を選択的に取り消すことができる、とい
う点である。同様に、プロセッサ10は、一の分岐条件
の実際の状態が予測された状態と異なることに応答し
て、CFXU26に対し追加の命令を直ちにディスパッ
チすることができる。
【0037】サイクル9の間、プロセッサ10は、BR
N1命令を実行して、BRN1命令の分岐条件の実際の
状態を決定する。図2及び図3の例では、BRN1命令
の分岐条件の実際の状態は、予測された状態と異なって
いる。従って、この予測された状態は誤りであるから、
前記選択された命令シーケンス(即ち、プロセッサ10
がその処理を投機的に分岐させたADD命令、BRN2
命令、DIV命令、SHIFT命令及びBRN3命令)
は、正しくない。BRN1命令の分岐条件の予測された
状態が誤りであるという決定に応答して、プロセッサ1
0は、サイクル10の間に、ADD命令、BRN2命
令、SHIFT命令及びBRN3命令(DIV命令はサ
イクル7の間に既に取り消されている)の処理を取り消
すとともに、ADD命令、BRN2命令、SHIFT命
令及びBRN3命令の処理の影響を逆転することによっ
て誤予測から回復する。
【0038】また、サイクル10の間、プロセッサ10
は、BRN1命令の分岐条件の実際の状態に応答して、
正しい命令シーケンスの処理を開始する。具体的には、
プロセッサ10は、減算命令(SUB)をフェッチす
る。プロセッサ10は、SUB命令にBBID=2を割
り当てる。つまり、プロセッサ10は、ADD命令及び
BRN2命令(前にBBID=2を割り当てられてい
た)の取り消しに応答して、BBID=2を再利用する
のである。
【0039】図4には、シーケンサ・ユニット18の構
成が概略的に示されている。前述のように、フェッチ段
階では、シーケンサ・ユニット18が、命令キャッシュ
14から最大4つまでの命令を選択的に受け取り、それ
らの命令を命令バッファ70内に格納する。デコード段
階では、デコード論理機構72が、命令バッファ70か
ら最大4つまでのフェッチされた命令を受け取って、こ
れらの命令をデコードする。ディスパッチ段階では、デ
ィスパッチ論理機構74が、実行ユニット20、22、
24、26、28及び30のうちの(デコード段階中の
デコードに応答して)選択された実行ユニットに対し、
最大4つまでのデコードされた命令をディスパッチす
る。
【0040】図5には、シーケンサ・ユニット18内の
順序変更(リオーダ)バッファ76の構成が概念的に示
されている。図示のように、順序変更バッファ76は、
それぞれバッファ番号0〜15を有するように表記され
た16個のエントリを有する。各エントリは、5つのフ
ィールドとして、命令タイプ・フィールド、GPR宛先
数フィールド、FPR宛先数フィールド、終了フィール
ド及び例外フィールドを有する。
【0041】図4も参照すると、ディスパッチ論理機構
74が一の実行ユニットに対し一の命令をディスパッチ
する際に、シーケンサ・ユニット18は、このディスパ
ッチされた命令を順序変更バッファ76内の関連する一
のエントリに割り当てる。シーケンサ・ユニット18
は、順序変更バッファ76内の諸エントリを、先入れ先
出し式の規則に基づき且つ回転的な態様で、ディスパッ
チされた諸命令に割り当てる(又は関連付ける)。即
ち、シーケンサ・ユニット18は、まずエントリ0を割
り当て、その後はエントリ1〜15を順番に割り当て、
その後は再びエントリ0を割り当てる、ということであ
る。ディスパッチされた命令が、順序変更バッファ76
内の関連するエントリを割り当てられる際、ディスパッ
チ論理機構74は、順序変更バッファ76内の関連する
エントリの種々のフィールド及びサブフィールドに格納
するために、当該ディスパッチされた命令に関する情報
を供給する。
【0042】例えば、図5のエントリ1は、この命令が
FXUA22にディスパッチされたことを指示してい
る。また、実施例の他の重要な側面に従って、このエン
トリ1は、ディスパッチされた命令が、1つのGPR宛
先レジスタを有し(GPR宛先数フィールド=1)、0
個のFPR宛先レジスタを有し(FPR宛先数フィール
ド=0)、まだ終了しておらず(終了フィールド=
0)、まだ例外を発生していない(例外フィールド=
0)ことを指示する。
【0043】一の実行ユニットがディスパッチされた一
の命令を実行する際、この実行ユニットは、当該命令に
関連する順序変更バッファ76内のエントリを変更す
る。具体的には、このディスパッチされた命令の実行終
了に応答して、この実行ユニットは、このエントリの終
了フィールドを変更する(終了フィールド=1)。も
し、このディスパッチされた命令の実行中に一の例外に
遭遇すれば、この実行ユニットは、このエントリの例外
フィールドを変更する(例外フィールド=1)。
【0044】図5には、割り振りポインタ73及び完了
ポインタ75が示されている。プロセッサ10は、順序
変更バッファ76の読み取り/書き込みを制御するため
に、これらのポインタを維持する。プロセッサ10は、
一の順序変更バッファ・エントリが特定の命令に割り振
られている(又は関連付けられている)か否かを指示す
るために、割り振りポインタ73を維持する。図示のよ
うに、割り振りポインタ73は、順序変更バッファ・エ
ントリ3を指定することにより、この順序変更バッファ
・エントリ3が、一の命令への割り振りに使用可能な次
の順序変更バッファ・エントリであることを指示する。
【0045】また、プロセッサ10は、(以前に特定の
命令に割り振られた順序変更バッファ・エントリについ
て)特定の命令が次の条件を満足するか否かを指示する
ために、完了ポインタ75を維持する。 条件1:(この命令をディスパッチされた)実行ユニッ
トが、この命令の実行を終了する。 条件2:この命令の任意の処理段階中に、例外に遭遇し
なかった。 条件3:以前にディスパッチされた全ての命令が、条件
1及び条件2を満足する。
【0046】図5に示されているように、完了ポインタ
75は、順序変更バッファ・エントリ1を指定すること
により、この順序変更バッファ・エントリ1が、条件1
〜3を満足し得る次の順序変更バッファ・エントリであ
ることを指示する。従って、「有効な」順序変更バッフ
ァ・エントリとは、完了ポインタ75が指定する順序変
更バッファ・エントリと、これに後続する順序変更バッ
ファ・エントリであって、割り振りポインタ73が指定
する順序変更バッファ・エントリの前までの順序変更バ
ッファ・エントリとして定義することができる。
【0047】図4を再び参照すると、順序変更バッファ
76の諸エントリは、シーケンサ・ユニット18の完了
論理機構80及び例外論理機構82によって読み取られ
る。例外論理機構82は、順序変更バッファ76の例外
フィールドに応答して、ディスパッチされた命令の実行
中に遭遇する例外を処理する。完了論理機構80は、順
序変更バッファ76の終了フィールド及び例外フィール
ドに応答して、ディスパッチ論理機構74及び順序変更
バッファ76に対し信号を供給する。完了論理機構80
は、これらの信号を通して、諸命令がプログラムされた
シーケンスの順序で「完了」したことを指示する。完了
論理機構80が一の命令の「完了」を指示するのは、そ
の命令が次の条件を満足する場合である。 条件1:(その命令をディスパッチされた)実行ユニッ
トが、その命令の実行を終了する(その命令に関連する
順序変更バッファ・エントリ内の終了フィールド=
1)。 条件2:その命令の任意の処理段階中に、例外に遭遇し
なかった(その命令に関連する順序変更バッファ・エン
トリの例外フィールド=0)。 条件3:以前にディスパッチされた全ての命令が、条件
1及び条件2を満足する。
【0048】ディスパッチ論理機構74は、順序変更バ
ッファ76内の情報に応答して、ディスパッチすべき適
当な数の追加命令を決定する。
【0049】順序変更バッファ76は、分岐ユニット2
0から CORRECTION(訂正)信号及び BRANCH ROBTAG
(分岐順序変更バッファ・タグ)信号を受け取る。CORR
ECTION信号については、図8に関連して後述する。 BRA
NCH ROBTAG信号については、図8及び図10に関連して
後述する。更に、順序変更バッファ76は、実行ユニッ
ト20、22、24、26、28及び30に対し、DISP
ATCH ROBTAG(ディスパッチ・順序変更バッファ・タ
グ)信号を供給する。DISPATCH ROBTAG信号について
は、図7、図8及び図10に関連して後述する。
【0050】ディスパッチ論理機構74は、任意のタイ
プの分岐命令(条件付き分岐命令又はその他の分岐命
令)のディスパッチに応答して、DISPATCHED A BRANCH
(分岐ディスパッチ済み)信号を供給し、この信号は、
基本ブロック制御論理機構(以下「BBCL」と略記)
84によって受け取られる。更に、BBCL84は、分
岐ユニット20から CORRECTION 信号及び BRANCH BBID
(分岐BBID)信号を受け取る。BRANCH BBID 信号に
ついては、図8及び図10に関連して後述する。図4に
示されているように、BBCL84は、実行ユニット2
0、22、24、26、28及び30に対し、DISPATCH
BBID (ディスパッチBBID)信号及びCANCEL BBID
(取り消しBBID)信号を供給する。
【0051】図6には、名前変更バッファ34の構成が
概念的に示されている。説明を簡潔にするため、以下で
は、浮動小数点用名前変更バッファ38の動作をも例示
するものとして、固定小数点用名前変更バッファ34の
動作だけを説明する。図示のように、名前変更バッファ
34は、バッファ番号0〜11を有するようにそれぞれ
表記された12個の名前変更バッファを含んでいる。シ
ーケンサ・ユニット18は、これらの名前変更バッファ
番号0〜11を、先入れ先出し式の規則に基づき且つ回
転的な態様で、ディスパッチされた諸命令に割り当てる
(又は関連付ける)。つまり、シーケンサ・ユニット1
8は、まず名前変更バッファ番号0を割り当て、その後
に名前変更バッファ番号1〜11を順番に割り当て、そ
の後に名前変更バッファ番号0を再び割り当てる、とい
うことである。
【0052】図6を参照すると、名前変更バッファ2〜
7は、図4のディスパッチ論理機構74によってディス
パッチされた諸命令用の宛先オペランド情報を格納する
ために、割り当てられている。図6には、割り振りポイ
ンタ80' 、ライトバック・ポインタ82' 及び完了ポ
インタ84' が示されている。プロセッサ10は、名前
変更バッファ34の読み取り/書き込みを制御するため
に、これらのポインタを維持する。割り振りポインタ8
0' は、一の名前変更バッファが特定の命令に割り振ら
れているか否かを指示する。図示のように、割り振りポ
インタ80' は、名前変更バッファ8を指定することに
より、この名前変更バッファ8が、一の命令への割り振
りに使用可能な次の名前変更バッファであることを指示
する。
【0053】更に、実施例の重要な側面に従って、プロ
セッサ10は、他の命令への再割り振りに(以前に特定
の命令に割り振られていた)一の名前変更バッファが使
用可能であるか否かを指示するために、ライトバック・
ポインタ82' を維持する。図示のように、ライトバッ
ク・ポインタ82' は、名前変更バッファ2を指定する
ことにより、この名前変更バッファ2が次の名前変更バ
ッファであることを指示する。つまり、プロセッサ10
は、この名前変更バッファ2(内の情報フィールド)か
らの宛先オペランド情報を、(この名前変更バッファ2
内のレジスタ番号フィールドが指定する)1つのGPR
32にコピーする、ということである。
【0054】従って、プロセッサ10は、一のアーキテ
クチャ・レジスタへ格納するために特定の命令の結果
(宛先オペランド情報)を一の名前変更バッファからコ
ピーする動作に応答して、ライトバック・ポインタ8
2' を(この特定の命令に対し以前に割り振られていた
当該名前変更バッファを超えて)前進させる。このよう
に、プロセッサ10は、一のアーキテクチャ・レジスタ
に特定の命令の結果(宛先オペランド情報)をコピーす
るまで、この結果(宛先オペランド情報)を格納するた
めに、割り振り済みの一の名前変更バッファを予約す
る。
【0055】また、プロセッサ10は、(特定の命令に
対し以前に割り振られた名前変更バッファについて)特
定の命令が次の条件を満足するか否かを指示するため
に、完了ポインタ84' を維持する。 条件1:(その命令をディスパッチされたユニット)実
行ユニットが、その命令の実行を終了する。 条件2:その命令の任意の処理段階中に、例外に遭遇し
なかった。 条件3:以前にディスパッチされた全ての命令が、条件
1及び条件2を満足する。
【0056】図6に示されているように、完了ポインタ
84' は、名前変更バッファ2を指定することにより、
この名前変更バッファ2が、条件1〜3を満足し得る次
の名前変更バッファであることを指示する。実施例の重
要な側面に従って、プロセッサ10は、アーキテクチャ
・レジスタへの格納のために当該命令の結果をこの名前
変更バッファからコピーするか否かとは無関係に、完了
ポインタ84' を維持する。
【0057】従って、「名前変更エントリ」とは、完了
ポインタ84' が指定する名前変更バッファと、これに
後続する名前変更バッファであって、割り振りポインタ
80' が指定する名前変更バッファの前までの名前変更
バッファとして定義することができる。「ライトバック
・エントリ」とは、ライトバック・ポインタ82' が指
定する名前変更バッファと、これに後続する名前変更バ
ッファであって、完了ポインタ84' が指定する名前変
更バッファの前までの名前変更バッファとして定義する
ことができる。これらのライトバック・エントリには、
「完了」した命令の結果が格納されるが、これらの結果
は、例えばアーキテクチャ・レジスタへの書き込みポー
トが使用不能であるなどの理由のため、当該名前変更バ
ッファから当該アーキテクチャ・レジスタに対しコピー
されていない。
【0058】概念上、これらのライトバック・エントリ
は、複数の名前変更エントリと複数のアーキテクチャ・
レジスタとの間に存在する。有利なことに、もし、完了
段階において一のライトバック・ポートが使用可能であ
れば、一の結果は、これらのライトバック・エントリを
迂回して、アーキテクチャ・レジスタに直接的に書き込
むことができる。更に、名前変更エントリの場合と同様
に、一の実行ユニットがライトバック・エントリ内の情
報に関連する一のアーキテクチャ・レジスタを指定する
ような一の命令を実行する場合には、プロセッサ10
は、この実行ユニットへ当該情報を供給するようにライ
トバック・エントリを操作することができる。
【0059】図7には、プロセッサ10のFXUA22
の構成が示されている。FXUA22は、リザベーショ
ン・ステーション50a及び50bと、実行段階51a
及び51bを含んでいる。これと同様に、分岐ユニット
20、FXUB24、CFXU26、LSU28及びF
PU30の各々は、それぞれのリザベーション・ステー
ション及び実行段階を有している。説明を簡潔にするた
め、以下では、他の実行ユニットの実行段階及びリザベ
ーション・ステーションの動作を例示するものとして、
FXUA22の実行段階及びリザベーション・ステーシ
ョンの動作だけを説明する。
【0060】リザベーション・ステーション50a及び
50bは、FXUA22による実行のためにシーケンサ
・ユニット18からディスパッチされた命令用の情報を
格納することができる。リザベーション・ステーション
50a及び50bは、そのフィールドとして、ROBT
AG(順序変更バッファ・タグ)、DREG(宛先レジ
スタ)、オペランドA、オペランドB、OPコード、B
BID及び有効の各フィールドをそれぞれ含んでいる。
更に、本発明の重要な側面に従って、リザベーション・
ステーション50a及び50bは、取り消し論理機構5
3a及び53bをそれぞれ含んでいる。
【0061】各リザベーション・ステーションのROB
TAGフィールドには、当該リザベーション・ステーシ
ョンの命令に割り振られた順序変更バッファ・エントリ
の識別子が格納される。この識別子は、当該命令がシー
ケンサ・ユニット18によってディスパッチされる際
に、(順序変更バッファ76からの)DISPATCH ROBTAG
信号によって指示されるものである。
【0062】各リザベーション・ステーションのDRE
Gフィールドには、当該リザベーション・ステーション
の命令のための、(シーケンサ・ユニット18によって
指定された)少なくとも1つの宛先レジスタの識別子が
格納される。同様に、オペランドA及びオペランドBの
フィールドには、当該リザベーション・ステーションの
命令のための、(GPR32、名前変更バッファ34、
FXUB24、CFXU26又はLSU28からの)ソ
ース・オペランド情報が格納される。OPコード・フィ
ールドには、当該リザベーション・ステーションの命令
に応答して、FXUA22がソース・オペランド情報に
ついて実行すべき動作を指示する、(シーケンサ・ユニ
ット18からの)OPコードが格納される。
【0063】各リザベーション・ステーションのBBI
Dフィールドには、当該リザベーション・ステーション
の命令がシーケンサ・ユニット18によってディスパッ
チされる際に、(BBCL84からの)DISPATCH BBID
信号によって指示される処の、当該命令のBBIDが格
納される。
【0064】各リザベーション・ステーションは、シー
ケンサ・ユニット18からディスパッチされた時点で、
そのソース・オペランド情報を使用できないような命令
についての情報を一時的に格納するものである。リザベ
ーション・ステーションは、一の実行ユニットからソー
ス・オペランド情報が使用可能となるのに応答して、こ
のソース・オペランド情報を受け取り、これをその内部
に格納する。このリザベーション・ステーションは、適
当な時点で、そのオペランド情報を実行論理機構54a
に転送する。
【0065】実行論理機構54aは、制御論理機構56
aからの信号に応答して、一のリザベーション・ステー
ションのオペランドA及びオペランドBフィールドから
ソース・オペランド情報を受け取り、これらのオペラン
ドについて(このリザベーション・ステーションに格納
されたOPコードによって指示されるような)動作の第
1段階を実行する。更に、実行段階51aは、制御論理
機構56aからの信号に応答して、(1)ROBTAG
フィールド55aに格納するために、このリザベーショ
ン・ステーションのROBTAGフィールドからROB
TAG情報を受け取り、(2)DREGフィールド58
aに格納するために、このリザベーション・ステーショ
ンのDREGフィールドからDREG情報を受け取り、
(3)BBIDフィールド57aに格納するために、こ
のリザベーション・ステーションのBBIDフィールド
からBBID情報を受け取る。
【0066】実行論理機構54bは、制御論理機構56
bからの信号に応答して、実行論理機構54aから情報
を受け取り、この情報について動作の第2段階を実行す
る。更に、実行段階51bは、制御論理機構56bから
の信号に応答して、(1)ROBTAGフィールド55
bに格納するため、ROBTAGフィールド55aから
ROBTAG情報を受け取り、(2)DREGフィール
ド58bに格納するため、DREGフィールド58aか
らDREG情報を受け取り、(3)BBIDフィールド
57bに格納するため、BBIDフィールド57aから
BBID情報を受け取る。前述のリザベーション・ステ
ーションと同様に、実行段階51a及び51bは、有効
フィールド59a及び59bと、取り消し論理機構61
a及び61bをそれぞれ含んでいる。
【0067】このような動作から生じた結果は、実行論
理機構54bから名前変更バッファ34、FXUB2
4、CFXU26及びLSU28へ供給される。このよ
うな情報は、名前変更バッファ34のうちの選択された
1つに格納される。(この選択された名前変更バッファ
内に)格納されたこの情報は、DREGフィールド58
bが識別する一の宛先レジスタに応答して、GPR32
のうちの1つと関連付けられる。更に、図5に関連して
既に説明したように、FXUA22は、ROBTAGフ
ィールド55bが識別する順序変更バッファ・エント
リ、即ち実行論理機構54bによって実行された命令に
割り振られた順序変更バッファ・エントリを更新する。
【0068】シーケンサ・ユニット18が一のリザベー
ション・ステーションに対し一の命令をディスパッチす
るのに応答して、そのリザベーション・ステーションの
有効フィールドが、論理1にセットされる。この命令の
実行を実行段階51aが終了するのに応答して、有効フ
ィールド59aは、論理0にクリアされる。同様に、こ
の命令の実行を実行段階51bが終了するのに応答し
て、有効フィールド59bが、論理0にクリアされる。
【0069】実施例の重要な側面に従って、取り消し論
理機構53a、53b及び61a、61bは、シーケン
サ・ユニット18から CANCEL BBID 信号を受け取る。
シーケンサ・ユニット18は、この CANCEL BBID 信号
を介して、プロセッサ10が取り消すべき1つ又は複数
のBBIDを指示することができる。取り消し論理機構
53aは、CANCEL BBID 信号に応答して、取り消すべき
BBIDと、リザベーション・ステーション50a内に
格納されたBBIDとを比較する。もし、取り消すべき
BBIDとリザベーション・ステーション50a内に格
納されたBBIDが一致すれば、取り消し論理機構53
aは、リザベーション・ステーション50aの有効フィ
ールドを論理0にクリアすることにより、リザベーショ
ン・ステーション50aの命令の実行を取り消す。
【0070】同様に、取り消すべきBBIDとリザベー
ション・ステーション50b内に格納されたBBIDが
一致すれば、取り消し論理機構53bは、リザベーショ
ン・ステーション50bの有効フィールドを論理0にク
リアすることにより、リザベーション・ステーション5
0bの命令の実行を取り消す。同様に、取り消すべきB
BIDと実行段階51aのBBIDフィールド57aに
格納されたBBIDが一致すれば、取り消し論理機構6
1aは、有効フィールド59aを論理0にクリアするこ
とにより、実行段階51aで命令の実行を取り消す。ま
た、取り消すべきBBIDと実行段階51bのBBID
フィールド57bに格納されたBBIDが一致すれば、
取り消し論理機構61bは、有効フィールド59bを論
理0にクリアすることにより、実行段階51bにおいて
この命令の実行を取り消す。
【0071】従って、プロセッサ10は、特定のBBI
Dに割り当てられた複数の命令の実行を選択的に取り消
すことができる。このことは、これらの命令が1つ又は
複数の実行ユニットにディスパッチされる場合であって
も、該当するのである。更に、各実行ユニットは、その
リザベーション・ステーション及び実行段階において、
これらの命令をそれぞれに割り当てられたBBIDに従
って、互いに独立に且つ選択的に取り消すことができ
る。
【0072】図8には、分岐ユニット20の構成が示さ
れている。分岐ユニット20は、リザベーション・ステ
ーション100a及び100bと、マルチプレクサ群1
02と、実行論理機構104を含んでいる。
【0073】リザベーション・ステーション100a及
び100bの各々は、それぞれのフィールドとして、命
令、条件、ROBTAG、GRBAP(GPR名前変更
バッファ割り振りポインタ)、BBID及び有効の各フ
ィールドを含んでいる。更に、実施例の重要な側面に従
って、リザベーション・ステーション100a及び10
0bは、取り消し論理機構106a及び106bをそれ
ぞれ含んでいる。
【0074】各リザベーション・ステーションの命令フ
ィールドには、分岐ユニット20が実行すべき分岐命令
のタイプを指示する(シーケンサ・ユニット18から
の)コードが格納される。
【0075】各リザベーション・ステーションのROB
TAGフィールドには、当該リザベーション・ステーシ
ョンの命令に割り振られた順序変更バッファ・エントリ
の識別子が格納される。この識別子は、当該命令がシー
ケンサ・ユニット18によってディスパッチされる際
に、(順序変更バッファ76からの)DISPATCH ROBTAG
信号によって指示されるものである。各リザベーション
・ステーションのGRBAPフィールドには、割り振り
ポインタ80' (図6)の状態の表示が格納される。こ
の表示は、当該リザベーション・ステーションの命令が
シーケンサ・ユニット18によってディスパッチされる
際に、(名前変更バッファ34からの)DISPATCH GRBAP
(ディスパッチGPR名前変更バッファ割り振りポイン
タ)信号によって指示されるものである。各リザベーシ
ョン・ステーションのBBIDフィールドには、当該リ
ザベーション・ステーションの命令のBBIDが格納さ
れる。このBBIDは、この命令がシーケンサ・ユニッ
ト18によってディスパッチされる際に、(BBCL8
4からの)DISPATCH BBID 信号によって指示されるもの
である。
【0076】図8の各リザベーション・ステーション
は、一の分岐命令に関する情報を一時的に格納するもの
である。但し、この分岐命令がシーケンサ・ユニット1
8からディスパッチされた時点では、その分岐条件情報
(即ち、この分岐命令の分岐条件の実際の状態)が使用
可能でないことがある。このリザベーション・ステーシ
ョンは、分岐条件情報が、実行ユニット22、24、2
6、28又は30から(シーケンサ・ユニット18を介
して)使用可能になるのに応答して、この分岐条件情報
を受け取り、これをその条件フィールド内に格納する。
このリザベーション・ステーションは、適当な時点で、
その条件フィールドからの分岐条件情報を(その命令フ
ィールドからのコードと共に)マルチプレクサ102を
介して実行論理機構104へ転送する。
【0077】実行論理機構104は、特定のリザベーシ
ョン・ステーションから受け取られたこれらの分岐条件
情報及びコードに応答して、このリザベーション・ステ
ーションの分岐条件の実際の状態が予測された状態と相
違するか否かを決定する。実行論理機構104は、予測
された状態が誤りであることに応答して、CORRECTION信
号を供給する。更には、マルチプレクサ102は、予測
された状態が誤りであることに応答して、(1)BRANCH
ROBTAG 信号として、このリザベーション・ステーショ
ンのROBTAGフィールドからの情報を供給し、
(2)BRANCH GRBAP(分岐GPR名前変更バッファ割り
振りポインタ)信号として、このリザベーション・ステ
ーションのGRBAPフィールドからの情報を供給し、
(3)BRANCH BBID 信号として、このリザベーション・
ステーションのBBIDフィールドからの情報を供給す
る。
【0078】シーケンサ・ユニット18が一のリザベー
ション・ステーションに一の命令をディスパッチするの
に応答して、このリザベーション・ステーションの有効
フィールドが論理1にセットされる。実施例の重要な側
面に従って、取り消し論理機構106a及び106b
は、シーケンサ・ユニット18からの CANCEL BBID 信
号を受け取る。取り消し論理機構106aは、この CAN
CEL BBID 信号に応答して、取り消すべきBBIDとリ
ザベーション・ステーション100a内に格納されたB
BIDとを比較する。もし、取り消すべきBBIDとリ
ザベーション・ステーション100a内に格納されたB
BIDが一致すれば、取り消し論理機構106aは、リ
ザベーション・ステーション100aの有効フィールド
を論理0にクリアすることにより、リザベーション・ス
テーション100aの命令の実行を取り消す。同様に、
取り消すべきBBIDがリザベーション・ステーション
100b内に格納されたBBIDと一致すれば、取り消
し論理機構106bは、リザベーション・ステーション
100bの有効フィールドを論理0にクリアすることに
より、リザベーション・ステーション100bの命令の
実行を取り消す。
【0079】図9には、シーケンサ・ユニット18(図
4)のBBCL84の構成が示されている。基本ブロッ
ク割り振りポインタ(以下「BBAP」と略記)レジス
タは、一の基本ブロック番号を格納し、この格納した基
本ブロック番号を DISPATCH BBID 信号として供給する。
BBCL84は、ディスパッチ論理機構74からのDISP
ATCHED A BRANCH 信号に応答して、BBAPレジスタ内
に格納された基本ブロック番号を増分する。BBCL8
4は、分岐ユニット20からの CORRECTION信号に応答
して、分岐ユニット20から BRANCH BBID 信号を受け
取り、BRANCH BBID 信号によって指示される基本ブロッ
ク番号を増分し、この増分された基本ブロック番号を、
BBAPレジスタ内に以前に格納されていた基本ブロッ
ク番号の代わりにBBAPレジスタ内に格納する。
【0080】実施例では、基本ブロック番号の初期値は
0であり、その後は、基本ブロック番号1〜3に順次に
増分された後に、再び基本ブロック番号0に戻る。ま
た、実施例では、プロセッサ10は、単一のサイクルの
間に、最大4つまでの命令をディスパッチすることがで
きる。ここで留意すべきは、プロセッサ10が特定のサ
イクル中に一の分岐命令をディスパッチする場合、この
ディスパッチされる分岐命令が、その特定のサイクル中
にディスパッチされる最後の命令になる、ということで
ある。従って、その特定のサイクルについて、BBCL
84は、全ての命令がディスパッチされるまで、BBA
Pレジスタ内に格納された基本ブロック番号を(ディス
パッチ論理機構74からの DISPATCHED A BRANCH 信号
に応答して)増分することはない。
【0081】更に、BBCL84の基本ブロック取り消
し論理機構は、分岐ユニット20からの CORRECTION 信
号に応答して、CANCEL BBID 信号を供給する。BBCL
84は、CANCEL BBID 信号を介して、プロセッサ10が
取り消すべき1つ又は複数のBBIDを指示する。基本
ブロック取り消し論理機構は、CANCEL BBID 信号を介し
て、取り消すべきBBIDが、BRANCH BBID 信号によっ
て指示される基本ブロック番号に続き、そしてBBCL
84が分岐ユニット20から CORRECTION 信号を受け取
る前に DISPATCH BBID 信号によって指示される基本ブ
ロック番号までの任意のBBIDであることを指示す
る。
【0082】代替的な実施例では、BBCL84が、B
BAPレジスタ内に格納された基本ブロック番号を増分
するのは、(1)条件付き分岐命令の分岐条件の実際の
状態が、その条件付き分岐が行われることを指示する場
合か、(2)プロセッサ10が、この条件付き分岐命令
の分岐条件の状態を予測する場合の何れかに限られてい
る。もし、この条件付き分岐命令の後に、プロセッサ1
0が処理すべき次の命令が、諸命令のプログラムされた
シーケンス内でこの条件付き分岐命令の直後に続かなけ
れば、条件付き分岐が行われるとみなされる。従って、
一の分岐命令は、「プログラムの流れを変更する」命令
である。
【0083】図10には、シーケンサ・ユニット18
(図4)の順序変更バッファ76の構成が示されてい
る。順序変更バッファ割り振りポインタ(ROBAP)
レジスタは、割り振りポインタ73(図5)によって指
定された順序変更バッファ・エントリ番号を格納する。
【0084】特定のサイクル中にディスパッチされる特
定の命令について、INSTRUCTION DISPATCH POSITION
(命令ディスパッチ位置)信号は、特定の命令が、特定
のサイクル中にディスパッチされる第1〜第4の命令の
うちどれであるかを指示する。即ち、特定の命令が特定
のサイクル中にディスパッチされる第1〜第4の命令の
うちのどれであるかに応じて、INSTRUCTION DISPATCH P
OSITION 信号は、数0〜3をそれぞれ指示する、という
ことである。
【0085】特定のサイクル中にディスパッチされる特
定の命令について、順序変更バッファ76は、(1)IN
STRUCTION DISPATCH POSITION 信号によって指示された
数と、(2)ROBAPレジスタ内に格納された順序変
更バッファ・エントリ番号との和を計算することによ
り、順序変更バッファ・エントリ番号を計算する。図5
に関連して既に説明したように、もし、この計算された
和が数値15よりも小さいか又はこれに等しければ、順
序変更バッファ・エントリ番号は、計算された和と等し
い。他方、この計算された和が数値15を超えれば、順
序変更バッファ・エントリ番号は、この和から16を引
いた値に等しい。特定のサイクル中にディスパッチされ
る特定の命令について、順序変更バッファ76は、特定
の命令の順序変更バッファ・エントリ番号を、DISPATCH
ROBTAG 信号として供給する。
【0086】# OF ROB ALLOCATED(割り振り済み順序変
更バッファ数)信号は、プロセッサ10の特定のサイク
ル中に割り振られた、順序変更バッファ・エントリの個
数を指示する。順序変更バッファ76は、ROBAPレ
ジスタ内に格納された順序変更バッファ・エントリ番号
を、 # OF ROB ALLOCATED 信号によって指示される数だ
け増分する。その特定のサイクルの終わりに、順序変更
バッファ76は、ROBAPレジスタ内に以前に格納さ
れていた順序変更バッファ・エントリ番号の代わりに、
この増分された順序変更バッファ・エントリ番号をRO
BAPレジスタ内に格納する。
【0087】順序変更バッファ76は、分岐ユニット2
0からの CORRECTION 信号に応答して、分岐ユニット2
0からの BRANCH ROBTAG 信号を受け取り、この BRANCH
ROBTAG 信号によって指示された順序変更バッファ・エ
ントリ番号を増分し、この増分された順序変更バッファ
・エントリ番号を、ROBAPレジスタ内に以前に格納
されていた順序変更バッファ・エントリ番号の代わり
に、新しい順序変更バッファ・エントリ番号としてRO
BAPレジスタ内に格納する。従って、実施例の重要な
側面に従って、プロセッサ10は、一の分岐命令の分岐
条件が誤予測であることの決定に応答して、正しい命令
シーケンスを処理する。重要なことに、プロセッサ10
は、正しい命令シーケンスを処理する際に、新しい順序
変更バッファ・エントリ番号に以前に格納されていた情
報を使用せず、読み取らず、これに頼らない。このよう
にして、プロセッサ10は、新しい順序変更バッファ・
エントリ番号に以前に格納されていた情報とは独立し
て、正しい命令シーケンスを処理するから、分岐命令の
完了の前であっても、新しい順序変更バッファ・エント
リ番号を、正しい命令シーケンスのうち1つの命令と関
連付けることができる。
【0088】図11には、名前変更バッファ34の構成
が示されている。名前変更バッファ34は、分岐ユニッ
ト20からの CORRECTION 信号及び BRANCH GRBAP 信号
を受け取る。GPR名前変更バッファ割り振りポインタ
(GRBAP)レジスタは、割り振りポインタ80'
(図6)が指定する名前変更バッファ番号を格納する。
【0089】# OF GRB ALLOCATED(割り振り済みGPR
名前変更バッファ数)信号は、プロセッサ10の特定の
サイクル中に割り振られた、GPR名前変更バッファの
数を指示する。名前変更バッファ34は、GRBAPレ
ジスタ内に格納された名前変更バッファ番号を、# OF G
RB ALLOCATED 信号によって指示される数だけ増分し、
この増分された名前変更バッファ番号を、DISPATCH GRB
AP 信号として供給する。この特定のサイクルの終わり
に、名前変更バッファ34は、GRBAPレジスタ内に
以前に格納されていた名前変更バッファ番号の代わり
に、この増分された名前変更バッファ番号をGRBAP
レジスタ内に格納する。
【0090】名前変更バッファ34は、分岐ユニット2
0からの CORRECTION 信号に応答して、分岐ユニット2
0からの BRANCH GRBAP 信号を受け取り、この BRANCH
GRBAP 信号によって指示された名前変更バッファ番号を
増分し、増分された名前変更バッファ番号を、GRBA
Pレジスタ内に以前に格納されていた名前変更バッファ
番号の代わりに、新しい名前変更バッファ番号としてG
RBAPレジスタ内に格納する。従って、実施例の重要
な側面に従って、プロセッサ10は、一の分岐命令の分
岐条件が誤予測であるとの決定に応答して、正しい命令
シーケンスを処理する。重要なことに、プロセッサ10
は、正しい命令シーケンスを処理する際に、新しい名前
変更バッファ番号に以前に格納されていた情報を使用せ
ず、読み取らず、これに頼らない。このようにして、プ
ロセッサ10は、新しい名前変更バッファ番号に以前に
格納されていた情報から独立に、正しい命令シーケンス
を処理するから、分岐命令の完了の前であっても、新し
い名前変更バッファ番号を正しい命令シーケンスのうち
1つの命令と関連付けることができる。
【0091】図3には、図2及び図3の特定の例につい
て、種々のサイクル中の、ROBAP、GRBAP、B
BAP、ROBTAG、GRBAP及びBBIDの状態
が示されている。図示のように、分岐エントリAは、B
RN1命令を含み、分岐エントリBは、BRN2命令及
びBRN3命令を含んでいる。図3において、ROBT
AG、GRBAP及びBBIDのうちの特定の1つに関
連する行や、特定のサイクルに関連する列に、記号
「−」が表記されている場合には、ROBTAG、GR
BAP及びBBIDのうちの特定の1つは、この特定の
サイクルの間、無効である。
【0092】
【発明の効果】以上のように、本発明によれば、先行す
る分岐命令(例えば、図2のBRN1命令)の分岐条件
の実際の状態を決定しない場合であっても、これに後続
する分岐命令(例えば、図2のBRN2命令)に応答し
て、その処理を投機的に分岐させることができ、しかも
先行する分岐命令の分岐条件の実際の状態を後の時点ま
で決定しない場合であっても、これに後続する分岐命令
の分岐条件の状態の誤予測から速やかに回復することが
できる。
【図面の簡単な説明】
【図1】本発明の実施例に従ったプロセッサの構成を示
すブロック図である。
【図2】複数の基本ブロックに割り当てられる命令を例
示する概念図である。
【図3】図1のプロセッサによって処理される図2の命
令の種々の段階を示す概念図である。
【図4】図1のプロセッサに設けられたシーケンサ・ユ
ニットの構成を示すブロック図である。
【図5】図4のシーケンサ・ユニットに設けられた順序
変更(リオーダ)バッファの構成を示す概念図である。
【図6】図1のプロセッサに設けられた名前変更(リネ
ーム)バッファの構成を示す概念図である。
【図7】図1のプロセッサに設けられた固定小数点ユニ
ット(実行ユニット)の構成を示すブロック図である。
【図8】図1のプロセッサに設けられた分岐ユニット
(実行ユニット)の構成を示すブロック図である。
【図9】図4のシーケンサ・ユニットに設けられた基本
ブロック制御論理機構の構成を示すブロック図である。
【図10】図4のシーケンサ・ユニットに設けられた順
序変更バッファの構成を示すブロック図である。
【図11】図1のプロセッサに設けられた名前変更バッ
ファの構成を示すブロック図である。
【符号の説明】
50a、50b リザベーション・ステーション 51a、51b 実行段階 53a、53b 取り消し論理機構 54a、54b 実行論理機構 55a、55b ROBTAG(順序変更バッフ
ァ・タグ)フィールド 56a、56b 制御論理機構 57a、57b BBID(基本ブロック番号)
フィールド 58a、58b DREG(宛先レジスタ)フィ
ールド 59a、59b 有効フィールド 61a、61b 取り消し論理機構 100a、100b リザベーション・ステーション 102 マルチプレクサ 106a、106b 取り消し論理機構 104 実行論理機構
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平3−218524(JP,A) 特開 平5−40627(JP,A) 特開 平4−220722(JP,A) 特開 平5−224927(JP,A) 特開 平7−182165(JP,A) 特開 昭61−136132(JP,A) 特開 平1−321521(JP,A) 特開 平1−321522(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 9/38

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 第1の分岐命令のディスパッチ段階に応
    答して、前記第1の分岐命令の予測先命令シーケンス内
    にある第1の非分岐命令から第2の分岐命令までの命令
    を含む第1の基本ブロックを形成するとともに、前記第
    1の分岐命令の実行段階の前に、前記第1の基本ブロッ
    クに属する全ての命令のディスパッチ段階が生ずるよう
    に当該全ての命令をそれぞれ処理するステップと、 前記第1の分岐命令のディスパッチ段階及び前記第2の
    分岐命令のディスパッチ段階に応答して、前記第2の分
    岐命令の予測先命令シーケンス内にある第2の非分岐命
    令から第3の分岐命令までの命令を含む第2の基本ブロ
    ックを形成するとともに、前記第1の分岐命令の実行段
    階の前で且つ前記第2の分岐命令の実行段階の前に、前
    記第2の基本ブロックに属する全ての命令のディスパッ
    チ段階が生ずるように当該全ての命令をそれぞれ処理す
    るステップと、 前記第1の分岐命令の実行段階よりも前に生ずる前記第
    2の分岐命令の実行段階の間に、当該実行された第2の
    分岐命令の分岐条件の実際の状態が予測された状態と異
    なることが決定されたことに応答して、当該実行された
    第2の分岐命令の完了段階の前に、前記第2の基本ブロ
    ックに属する命令の実行段階の終了を待つことなく当該
    第2の基本ブロックに属する命令の処理だけを取り消す
    ステップとから成る、処理システムを動作させる方法。
  2. 【請求項2】 第1の分岐命令のディスパッチ段階に応
    答して、前記第1の分岐命令の予測先命令シーケンス内
    にある第1の非分岐命令から第2の分岐命令までの命令
    を含む第1の基本ブロックを形成するとともに、前記第
    1の分岐命令の実行段階の前に、前記第1の基本ブロッ
    クに属する全ての命令のディスパッチ段階が生ずるよう
    に当該全ての命令をそれぞれ処理するステップと、 前記第1の分岐命令のディスパッチ段階及び前記第2の
    分岐命令のディスパッチ段階に応答して、前記第2の分
    岐命令の予測先命令シーケンス内にある第2の非分岐命
    令から第3の分岐命令までの命令を含む第2の基本ブロ
    ックを形成するとともに、前記第1の分岐命令の実行段
    階の前で且つ前記第2の分岐命令の実行段階の前に、前
    記第2の基本ブロックに属する全ての命令のディスパッ
    チ段階が生ずるように当該全ての命令をそれぞれ処理す
    るステップと、 前記第2の分岐命令の実行段階よりも前に生ずる前記第
    1の分岐命令の実行段階の間に、当該実行された第1の
    分岐命令の分岐条件の実際の状態が予測された状態と異
    なることが決定されたことに応答して、当該実行された
    第1の分岐命令の完了段階の前に、前記第1及び第2の
    基本ブロックに属する命令の実行段階の終了を待つこと
    なく当該第1及び第2の基本ブロックに属する命令の
    理を全体として取り消すステップとから成る、処理シス
    テムを動作させる方法。
  3. 【請求項3】 それぞれの分岐命令のディスパッチ段階
    に応答して、当該分岐命令の予測先命令シーケンス内に
    ある一の非分岐命令から次の分岐命令までの命令を含む
    ように、基本ブロックの各々をそれぞれ形成するための
    回路と、 第1の分岐命令のディスパッチ段階に応答して、当該第
    1の分岐命令の実行段階の前に、前記第1の分岐命令の
    予測先命令シーケンス内にある第1の非分岐命令から第
    2の分岐命令までの命令を含む第1の基本ブロックに属
    する全ての命令のディスパッチ段階が生ずるように当該
    全ての命令をそれぞれ処理するとともに、前記第1の分
    岐命令のディスパッチ段階及び第2の分岐命令のディス
    パッチ段階に応答して、前記第1の分岐命令の実行段階
    の前で且つ前記第2の分岐命令の実行段階の前に、前記
    第2の分岐命令の予測先命令シーケンス内にある第2の
    非分岐命令から第3の分岐命令までの命令を含む第2の
    基本ブロックに属する全ての命令のディスパッチ段階が
    生ずるように当該全ての命令をそれぞれ処理するための
    処理回路と、 前記処理回路に結合され、前記第1の分岐命令の実行段
    階よりも前に生ずる前記第2の分岐命令の実行段階の間
    に、当該実行された第2の分岐命令の分岐条件の実際の
    状態が予測された状態と異なることが決定されたことに
    応答して、当該実行された第2の分岐命令の完了段階の
    前に、前記第2の基本ブロックに属する命令の実行段階
    の終了を待つことなく当該第2の基本ブロックに属する
    命令の処理だけを取り消すための取り消し回路とを備え
    て成る、処理システム。
  4. 【請求項4】 それぞれの分岐命令のディスパッチ段階
    に応答して、当該分岐命令の予測先命令シーケンス内に
    ある一の非分岐命令から次の分岐命令までの命令を含む
    ように、基本ブロックの各々をそれぞれ形成するための
    回路と、 第1の分岐命令のディスパッチ段階に応答して、当該第
    1の分岐命令の実行段階の前に、前記第1の分岐命令の
    予測先命令シーケンス内にある第1の非分岐命令から第
    2の分岐命令までの命令を含む第1の基本ブロックに属
    する全ての命令のディスパッチ段階が生ずるように当該
    全ての命令をそれぞれ処理するとともに、前記第1の分
    岐命令のディスパッチ段階及び第2の分岐命令のディス
    パッチ段階に応答して、前記第1の分岐命令の実行段階
    の前で且つ前記第2の分岐命令の実行段階の前に、前記
    第2の分岐命令の予測先命令シーケンス内にある第2の
    非分岐命令から第3の分岐命令までの命令を含む第2の
    基本ブロックに属する全ての命令のディスパッチ段階が
    生ずるように当該全ての命令をそれぞれ処理するための
    処理回路と、 前記処理回路に結合され、前記第2の分岐命令の実行段
    階よりも前に生ずる前記第1の分岐命令の実行段階の間
    に、当該実行された第1の分岐命令の分岐条件の実際の
    状態が予測された状態と異なることが決定されたことに
    応答して、当該実行された第1の分岐命令の完了段階の
    前に、前記第1及び第2の基本ブロックに属する命令の
    実行段階の終了を待つことなく当該第1及び第2の基本
    ブロックに属する命令の処理を全体として取り消すため
    の取り消し回路とを備えて成る、処理システム。
JP6317961A 1994-04-15 1994-12-21 処理システムを動作させる方法及び処理システム Expired - Lifetime JP2839075B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/228,249 US5644779A (en) 1994-04-15 1994-04-15 Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction
US228249 1999-01-11

Publications (2)

Publication Number Publication Date
JPH07281894A JPH07281894A (ja) 1995-10-27
JP2839075B2 true JP2839075B2 (ja) 1998-12-16

Family

ID=22856398

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6317961A Expired - Lifetime JP2839075B2 (ja) 1994-04-15 1994-12-21 処理システムを動作させる方法及び処理システム

Country Status (4)

Country Link
US (1) US5644779A (ja)
EP (1) EP0677807B1 (ja)
JP (1) JP2839075B2 (ja)
DE (1) DE69507975T2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5901302A (en) * 1995-01-25 1999-05-04 Advanced Micro Devices, Inc. Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions
US5809324A (en) * 1995-12-07 1998-09-15 Sun Microsystems, Inc. Multiple instruction dispatch system for pipelined microprocessor without branch breaks
US5751946A (en) * 1996-01-18 1998-05-12 International Business Machines Corporation Method and system for detecting bypass error conditions in a load/store unit of a superscalar processor
US5870579A (en) * 1996-11-18 1999-02-09 Advanced Micro Devices, Inc. Reorder buffer including a circuit for selecting a designated mask corresponding to an instruction that results in an exception
US5920710A (en) * 1996-11-18 1999-07-06 Advanced Micro Devices, Inc. Apparatus and method for modifying status bits in a reorder buffer with a large speculative state
US7581077B2 (en) 1997-10-30 2009-08-25 Commvault Systems, Inc. Method and system for transferring data in a storage operation
US6418478B1 (en) * 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US6757816B1 (en) * 1999-12-30 2004-06-29 Intel Corporation Fast branch misprediction recovery method and system
US7681032B2 (en) * 2001-03-12 2010-03-16 Portauthority Technologies Inc. System and method for monitoring unauthorized transport of digital content
EP1258803A3 (en) 2001-05-17 2007-09-05 Broadcom Corporation Cancelling instructions
US20030154085A1 (en) * 2002-02-08 2003-08-14 Onevoice Medical Corporation Interactive knowledge base system
WO2004025483A1 (en) 2002-09-16 2004-03-25 Commvault Systems, Inc. System and method for optimizing storage operations
WO2004031944A1 (ja) * 2002-10-04 2004-04-15 Fujitsu Limited プロセッサ及び命令制御方法
US20050125634A1 (en) * 2002-10-04 2005-06-09 Fujitsu Limited Processor and instruction control method
TWI249131B (en) * 2003-01-14 2006-02-11 Ip First Llc Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
WO2005065084A2 (en) 2003-11-13 2005-07-21 Commvault Systems, Inc. System and method for providing encryption in pipelined storage operations in a storage network
US7673122B1 (en) 2005-09-29 2010-03-02 Sun Microsystems, Inc. Software hint to specify the preferred branch prediction to use for a branch instruction
WO2015035341A1 (en) * 2013-09-06 2015-03-12 Huawei Technologies Co., Ltd. System and method for an asynchronous processor with assisted token
US9904481B2 (en) 2015-01-23 2018-02-27 Commvault Systems, Inc. Scalable auxiliary copy processing in a storage management system using media agent resources
US9898213B2 (en) 2015-01-23 2018-02-20 Commvault Systems, Inc. Scalable auxiliary copy processing using media agent resources
US11010261B2 (en) 2017-03-31 2021-05-18 Commvault Systems, Inc. Dynamically allocating streams during restoration of data
US11809874B2 (en) * 2022-02-01 2023-11-07 Apple Inc. Conditional instructions distribution and execution on pipelines having different latencies for mispredictions

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0789319B2 (ja) * 1985-04-22 1995-09-27 株式会社日立製作所 デ−タ処理装置における先行制御装置
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
US5127091A (en) * 1989-01-13 1992-06-30 International Business Machines Corporation System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
US5072364A (en) * 1989-05-24 1991-12-10 Tandem Computers Incorporated Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5129067A (en) * 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
US5197137A (en) * 1989-07-28 1993-03-23 International Business Machines Corporation Computer architecture for the concurrent execution of sequential programs
US5077692A (en) * 1990-03-05 1991-12-31 Advanced Micro Devices, Inc. Information storage device with batch select capability
US5261066A (en) * 1990-03-27 1993-11-09 Digital Equipment Corporation Data processing system and method with small fully-associative cache and prefetch buffers
IL94115A (en) * 1990-04-18 1996-06-18 Ibm Israel Dynamic process for creating pseudo-random test templates for pompous hardware design violence
US5197135A (en) * 1990-06-26 1993-03-23 International Business Machines Corporation Memory management for scalable compound instruction set machines with in-memory compounding
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
JP2845646B2 (ja) * 1990-09-05 1999-01-13 株式会社東芝 並列演算処理装置
JPH04172533A (ja) * 1990-11-07 1992-06-19 Toshiba Corp 電子計算機
JP3082944B2 (ja) * 1990-12-20 2000-09-04 富士通株式会社 パイプライン処理装置
US5222244A (en) * 1990-12-20 1993-06-22 Intel Corporation Method of modifying a microinstruction with operands specified by an instruction held in an alias register
US5446850A (en) * 1991-01-15 1995-08-29 International Business Machines Corporation Cross-cache-line compounding algorithm for scism processors
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5347639A (en) * 1991-07-15 1994-09-13 International Business Machines Corporation Self-parallelizing computer system and method
JP3146077B2 (ja) * 1991-11-15 2001-03-12 松下電器産業株式会社 プロセッサ
JPH05173785A (ja) * 1991-12-25 1993-07-13 Koufu Nippon Denki Kk 命令先取り装置
US5353419A (en) * 1992-01-09 1994-10-04 Trustees Of The University Of Pennsylvania Memory-side driven anticipatory instruction transfer interface with processor-side instruction selection
US5274818A (en) * 1992-02-03 1993-12-28 Thinking Machines Corporation System and method for compiling a fine-grained array based source program onto a course-grained hardware
US5257216A (en) * 1992-06-10 1993-10-26 Intel Corporation Floating point safe instruction recognition apparatus
US5257214A (en) * 1992-06-16 1993-10-26 Hewlett-Packard Company Qualification of register file write enables using self-timed floating point exception flags
US5268855A (en) * 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers
JPH07182165A (ja) * 1993-09-28 1995-07-21 Mitsubishi Electric Corp コミット条件付き命令の処理方法およびその装置
US5463745A (en) * 1993-12-22 1995-10-31 Intel Corporation Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system

Also Published As

Publication number Publication date
DE69507975D1 (de) 1999-04-08
DE69507975T2 (de) 1999-10-07
EP0677807B1 (en) 1999-03-03
US5644779A (en) 1997-07-01
EP0677807A3 (en) 1996-10-23
EP0677807A2 (en) 1995-10-18
JPH07281894A (ja) 1995-10-27

Similar Documents

Publication Publication Date Title
JP2839075B2 (ja) 処理システムを動作させる方法及び処理システム
US5611063A (en) Method for executing speculative load instructions in high-performance processors
JP3977016B2 (ja) 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ
EP1116103B1 (en) Mechanism for store-to-load forwarding
US5809268A (en) Method and system for tracking resource allocation within a processor
US5535346A (en) Data processor with future file with parallel update and method of operation
US5751983A (en) Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
KR100270003B1 (ko) 향상된 분기 예측 기법을 사용하는 프로세서 및그 실행 방법
US6119223A (en) Map unit having rapid misprediction recovery
EP0605872A1 (en) Method and system for supporting speculative execution of instructions
US5524224A (en) System for speculatively executing instructions wherein mispredicted instruction is executed prior to completion of branch processing
US5974240A (en) Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
US5872949A (en) Apparatus and method for managing data flow dependencies arising from out-of-order execution, by an execution unit, of an instruction series input from an instruction source
KR100322149B1 (ko) 고성능 추론적 스트링/다중 연산 방법
US6266763B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
JP3177194B2 (ja) 命令データを位置合せするための方法および装置
EP0649086A1 (en) Microprocessor with speculative execution
JP3866920B2 (ja) 命令のリタイアメント時に物理レジスタを選択的に自由にするよう構成されたプロセッサ
US6708267B1 (en) System and method in a pipelined processor for generating a single cycle pipeline stall
US6587941B1 (en) Processor with improved history file mechanism for restoring processor state after an exception
JP3138259B2 (ja) カウントによる高速レジスタ・リネームのためのシステムおよび方法
US7275146B2 (en) Instruction control device and method therefor
US5664120A (en) Method for executing instructions and execution unit instruction reservation table within an in-order completion processor
EP0877316A2 (en) System and method of processing instructions for a processor