JPH07281894A - 処理システムおよび動作の方法 - Google Patents
処理システムおよび動作の方法Info
- Publication number
- JPH07281894A JPH07281894A JP6317961A JP31796194A JPH07281894A JP H07281894 A JPH07281894 A JP H07281894A JP 6317961 A JP6317961 A JP 6317961A JP 31796194 A JP31796194 A JP 31796194A JP H07281894 A JPH07281894 A JP H07281894A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- processing
- execution
- instructions
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 51
- 230000004044 response Effects 0.000 claims abstract description 96
- 230000000694 effects Effects 0.000 abstract description 4
- 239000000872 buffer Substances 0.000 description 150
- 238000010586 diagram Methods 0.000 description 22
- 102100023991 E3 ubiquitin-protein ligase DTX3L Human genes 0.000 description 6
- 101000904542 Homo sapiens E3 ubiquitin-protein ligase DTX3L Proteins 0.000 description 6
- 230000015654 memory Effects 0.000 description 6
- 102100021145 fMet-Leu-Phe receptor Human genes 0.000 description 5
- 150000002500 ions Chemical class 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 3
- 150000001875 compounds Chemical class 0.000 description 2
- 102100033047 G-protein coupled receptor 3 Human genes 0.000 description 1
- 101000871088 Homo sapiens G-protein coupled receptor 3 Proteins 0.000 description 1
- 101001009517 Homo sapiens Probable G-protein coupled receptor 32 Proteins 0.000 description 1
- 102100030321 Probable G-protein coupled receptor 32 Human genes 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 230000001934 delay Effects 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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 or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- 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 or look ahead
- G06F9/3885—Concurrent 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)
Abstract
(57)【要約】
【目的】 本発明の目的は、処理システムと動作の方法
を提供することである。 【構成】 本発明によれば、複数の分岐命令に応答し
て、分岐命令の実行の前に命令が処理される。分岐命令
のうちのいずれかの実行に応答して、実行される分岐命
令の完了の前に、命令の処理が取り消される。
を提供することである。 【構成】 本発明によれば、複数の分岐命令に応答し
て、分岐命令の実行の前に命令が処理される。分岐命令
のうちのいずれかの実行に応答して、実行される分岐命
令の完了の前に、命令の処理が取り消される。
Description
【0001】
【産業上の利用分野】本特許明細書は、全般的には情報
を処理するためのシステムに関し、具体的には、処理シ
ステムと動作の方法とに関する。
を処理するためのシステムに関し、具体的には、処理シ
ステムと動作の方法とに関する。
【0002】
【従来の技術】スーパースカラー処理システムには、複
数の命令を同時に実行するために複数の実行ユニットが
含まれる。一部の処理システムでは、予測分岐がサポー
トされる。したがって、条件分岐命令に応答して、処理
システムは、選択された命令のシーケンスが実際に正し
いシーケンスであるかどうかを実際に判定する前に、複
数の可能な命令の目標シーケンスのうちの選択された1
つに処理を予測分岐させる。
数の命令を同時に実行するために複数の実行ユニットが
含まれる。一部の処理システムでは、予測分岐がサポー
トされる。したがって、条件分岐命令に応答して、処理
システムは、選択された命令のシーケンスが実際に正し
いシーケンスであるかどうかを実際に判定する前に、複
数の可能な命令の目標シーケンスのうちの選択された1
つに処理を予測分岐させる。
【0003】その処理システムが、後程予測分岐が正し
いと判定する場合、処理システムは、選択された命令シ
ーケンスの実行を継続する。対照的に、処理システム
が、後程その分岐が誤りであると判定する場合、処理シ
ステムは、1つまたは複数の正しい命令の処理を開始す
る。通常の以前の技術によれば、このような状況では、
処理システムは、分岐が誤りであると判定した後であっ
ても正しい命令の処理を遅延させる。
いと判定する場合、処理システムは、選択された命令シ
ーケンスの実行を継続する。対照的に、処理システム
が、後程その分岐が誤りであると判定する場合、処理シ
ステムは、1つまたは複数の正しい命令の処理を開始す
る。通常の以前の技術によれば、このような状況では、
処理システムは、分岐が誤りであると判定した後であっ
ても正しい命令の処理を遅延させる。
【0004】
【発明が解決しようとする課題】したがって、処理シス
テムと動作の方法に関して、通常の以前の技術に対して
相対的に、分岐が誤りであると判定した後の正しい命令
の処理の遅延を減らす処理システムが必要とされてい
る。
テムと動作の方法に関して、通常の以前の技術に対して
相対的に、分岐が誤りであると判定した後の正しい命令
の処理の遅延を減らす処理システムが必要とされてい
る。
【0005】
【課題を解決するための手段】処理システムおよび動作
の方法において、命令は、分岐命令の実行の前に複数の
分岐命令に応答して処理される。分岐命令のいずれかの
実行に応答して、実行される分岐命令の完了の前に命令
の処理を取り消す。
の方法において、命令は、分岐命令の実行の前に複数の
分岐命令に応答して処理される。分岐命令のいずれかの
実行に応答して、実行される分岐命令の完了の前に命令
の処理を取り消す。
【0006】本発明の技術的長所は、通常の以前の技法
に対して、分岐が誤りであると判定した後の正しい命令
の処理の遅延が少ないことである。
に対して、分岐が誤りであると判定した後の正しい命令
の処理の遅延が少ないことである。
【0007】
【実施例】図1ないし図11の図面を参照することによ
って、本発明の実施例とその長所がよりよく理解され
る。添付図面においては、同一の対応する部分に対して
同一の符号を使用している。
って、本発明の実施例とその長所がよりよく理解され
る。添付図面においては、同一の対応する部分に対して
同一の符号を使用している。
【0008】図1は、好ましい実施例に従って情報を処
理するプロセッサ10システムのブロック図である。好
ましい実施例では、プロセッサ10は、単一の集積回路
スーパースカラー・マイクロプロセッサである。したが
って、下でさらに述べるように、プロセッサ10には、
さまざまなユニット、レジスタ、バッファ、メモリおよ
び他の部分が含まれ、これらのすべてが集積回路によっ
て形成される。また、好ましい実施例では、プロセッサ
10が、縮小命令セット・コンピュータ(RISC)技
法に従って動作する。図1からわかるように、システム
・バス11が、プロセッサ10のバス・インターフェー
ス・ユニット(以下、BIUと呼称する)12に接続さ
れている。BIU12は、プロセッサ10とシステム・
バス11の間の情報の転送を制御する。
理するプロセッサ10システムのブロック図である。好
ましい実施例では、プロセッサ10は、単一の集積回路
スーパースカラー・マイクロプロセッサである。したが
って、下でさらに述べるように、プロセッサ10には、
さまざまなユニット、レジスタ、バッファ、メモリおよ
び他の部分が含まれ、これらのすべてが集積回路によっ
て形成される。また、好ましい実施例では、プロセッサ
10が、縮小命令セット・コンピュータ(RISC)技
法に従って動作する。図1からわかるように、システム
・バス11が、プロセッサ10のバス・インターフェー
ス・ユニット(以下、BIUと呼称する)12に接続さ
れている。BIU12は、プロセッサ10とシステム・
バス11の間の情報の転送を制御する。
【0009】BIU12は、プロセッサ10の命令キャ
ッシュ14およびデータ・キャッシュ16に接続され
る。命令キャッシュ14は、シーケンサ・ユニット18
に命令を出力する。命令キャッシュ14からのそのよう
な命令に応答して、シーケンサ・ユニット18は、プロ
セッサ10の他の実行回路に選択的に命令を出力する。
ッシュ14およびデータ・キャッシュ16に接続され
る。命令キャッシュ14は、シーケンサ・ユニット18
に命令を出力する。命令キャッシュ14からのそのよう
な命令に応答して、シーケンサ・ユニット18は、プロ
セッサ10の他の実行回路に選択的に命令を出力する。
【0010】シーケンサ・ユニット18に加えて、好ま
しい実施例のプロセッサ10の実行回路には、複数の実
行ユニットすなわち、分岐ユニット20、固定小数点ユ
ニットA(以下、FXUAと呼称する)22、固定小数
点ユニットB(以下、FXUBと呼称する)24、複合
固定小数点ユニット(以下、CFXUと呼称する)2
6、ロード/ストア・ユニット(以下、LSUと呼称す
る)28および浮動小数点ユニット(以下、FPUと呼
称する)30が含まれる。FXUA22、FXUB2
4、CFXU26およびLSU28は、それぞれのソー
ス・オペランド情報を、汎用アーキテクチャ・レジスタ
(以下、GPRと呼称する)32および固定小数点名前
変更バッファ34から入力する。さらに、FXUA22
とFXUB24は、キャリー・ビット・レジスタ(以
下、CAレジスタと呼称する)42から「キャリー・ビ
ット」を入力する。FXUA22、FXUB24、CF
XU26およびLSU28は、それぞれの動作の結果
(デスティネーション・オペランド情報)を、固定小数
点名前変更バッファ34内の選択されたエントリでの記
憶のために出力する。また、CFXU26は、専用レジ
スタ(以下、SPRと呼称する)40からソース・オペ
ランド情報を入力し、これにデスティネーション・オペ
ランド情報を出力する。
しい実施例のプロセッサ10の実行回路には、複数の実
行ユニットすなわち、分岐ユニット20、固定小数点ユ
ニットA(以下、FXUAと呼称する)22、固定小数
点ユニットB(以下、FXUBと呼称する)24、複合
固定小数点ユニット(以下、CFXUと呼称する)2
6、ロード/ストア・ユニット(以下、LSUと呼称す
る)28および浮動小数点ユニット(以下、FPUと呼
称する)30が含まれる。FXUA22、FXUB2
4、CFXU26およびLSU28は、それぞれのソー
ス・オペランド情報を、汎用アーキテクチャ・レジスタ
(以下、GPRと呼称する)32および固定小数点名前
変更バッファ34から入力する。さらに、FXUA22
とFXUB24は、キャリー・ビット・レジスタ(以
下、CAレジスタと呼称する)42から「キャリー・ビ
ット」を入力する。FXUA22、FXUB24、CF
XU26およびLSU28は、それぞれの動作の結果
(デスティネーション・オペランド情報)を、固定小数
点名前変更バッファ34内の選択されたエントリでの記
憶のために出力する。また、CFXU26は、専用レジ
スタ(以下、SPRと呼称する)40からソース・オペ
ランド情報を入力し、これにデスティネーション・オペ
ランド情報を出力する。
【0011】FPU30は、そのソース・オペランド情
報を、浮動小数点アーキテクチャ・レジスタ(以下、F
PRと呼称する)36および浮動小数点名前変更バッフ
ァ38から入力する。FPU30は、その動作の出力
(デスティネーション・オペランド情報)を、浮動小数
点名前変更バッファ38内の選択されたエントリでの記
憶のために出力する。
報を、浮動小数点アーキテクチャ・レジスタ(以下、F
PRと呼称する)36および浮動小数点名前変更バッフ
ァ38から入力する。FPU30は、その動作の出力
(デスティネーション・オペランド情報)を、浮動小数
点名前変更バッファ38内の選択されたエントリでの記
憶のために出力する。
【0012】Load(ロード)命令に応答して、LS
U28は、データ・キャッシュ16から情報を入力し、
その情報を固定小数点名前変更バッファ34および浮動
小数点名前変更バッファ38のうちの選択された1つに
コピーする。この情報がデータ・キャッシュ16に記憶
されていない場合、データ・キャッシュ16は、システ
ム・バス11に接続されたシステム・メモリ39から
(BIU12とシステム・バス11を介して)その情報
を入力する。さらに、データ・キャッシュ16は、デー
タ・キャッシュ16から、システム・バス11に接続さ
れたシステム・メモリ39へ(BIU12とシステム・
バス11を介して)情報を出力することができる。St
ore(ストア)命令に応答して、LSU28は、GP
R32およびFPR36のうちの選択された1つから情
報を入力し、その情報をデータ・キャッシュ16へコピ
ーする。
U28は、データ・キャッシュ16から情報を入力し、
その情報を固定小数点名前変更バッファ34および浮動
小数点名前変更バッファ38のうちの選択された1つに
コピーする。この情報がデータ・キャッシュ16に記憶
されていない場合、データ・キャッシュ16は、システ
ム・バス11に接続されたシステム・メモリ39から
(BIU12とシステム・バス11を介して)その情報
を入力する。さらに、データ・キャッシュ16は、デー
タ・キャッシュ16から、システム・バス11に接続さ
れたシステム・メモリ39へ(BIU12とシステム・
バス11を介して)情報を出力することができる。St
ore(ストア)命令に応答して、LSU28は、GP
R32およびFPR36のうちの選択された1つから情
報を入力し、その情報をデータ・キャッシュ16へコピ
ーする。
【0013】シーケンサ・ユニット18は、GPR32
およびFPR36との間で情報を入出力する。シーケン
サ・ユニット18から、分岐ユニット20が、命令と、
プロセッサ10の現在の状態を示す信号を入力する。こ
の命令と信号に応答して、分岐ユニット20は、プロセ
ッサ10による実行のために命令のシーケンスを記憶す
る適当なメモリ・アドレスを示す信号を(シーケンサ・
ユニット18に)出力する。分岐ユニット20からのこ
の信号に応答して、シーケンサ・ユニット18は、命令
キャッシュ14から、示された命令のシーケンスを入力
する。1つまたは複数の命令のシーケンスが命令キャッ
シュ14に記憶されていない場合、命令キャッシュ14
は、その命令を、システム・バス11に接続されたシス
テム・メモリ39から(BIU12とシステム・バス1
1を介して)入力する。
およびFPR36との間で情報を入出力する。シーケン
サ・ユニット18から、分岐ユニット20が、命令と、
プロセッサ10の現在の状態を示す信号を入力する。こ
の命令と信号に応答して、分岐ユニット20は、プロセ
ッサ10による実行のために命令のシーケンスを記憶す
る適当なメモリ・アドレスを示す信号を(シーケンサ・
ユニット18に)出力する。分岐ユニット20からのこ
の信号に応答して、シーケンサ・ユニット18は、命令
キャッシュ14から、示された命令のシーケンスを入力
する。1つまたは複数の命令のシーケンスが命令キャッ
シュ14に記憶されていない場合、命令キャッシュ14
は、その命令を、システム・バス11に接続されたシス
テム・メモリ39から(BIU12とシステム・バス1
1を介して)入力する。
【0014】命令キャッシュ14から入力された命令に
応答して、シーケンサ・ユニット18は、実行ユニット
である分岐ユニット20、22、24、26、28、3
0のうちの選択された1つに命令を選択的にディスパッ
チする。実行ユニットのそれぞれは、特定の種類の命令
のうちの1つまたは複数の命令を実行する。たとえば、
FXUA22とFXUB24は、加算、減算、論理積、
論理和、排他的論理和などの、ソース・オペランドに対
する第1種固定小数点算術演算を実行する。CFXU2
6は、固定小数点乗除算など、ソース・オペランドに対
する第2種固定小数点演算を実行する。FPU30は、
浮動小数点乗除算など、ソース・オペランドに対する浮
動小数点演算を実行する。
応答して、シーケンサ・ユニット18は、実行ユニット
である分岐ユニット20、22、24、26、28、3
0のうちの選択された1つに命令を選択的にディスパッ
チする。実行ユニットのそれぞれは、特定の種類の命令
のうちの1つまたは複数の命令を実行する。たとえば、
FXUA22とFXUB24は、加算、減算、論理積、
論理和、排他的論理和などの、ソース・オペランドに対
する第1種固定小数点算術演算を実行する。CFXU2
6は、固定小数点乗除算など、ソース・オペランドに対
する第2種固定小数点演算を実行する。FPU30は、
浮動小数点乗除算など、ソース・オペランドに対する浮
動小数点演算を実行する。
【0015】情報が固定小数点名前変更(リネーム)バ
ッファ34のうちの選択された1つに格納される時、そ
のような情報は、選択された名前変更バッファが割り振
られる命令によって指定される記憶位置(たとえばGP
R32のうちの1つやCAレジスタ42)と関連する。
固定小数点名前変更バッファ34のうちの選択された1
つに格納された情報は、シーケンサ・ユニット18から
の信号に応答して、それに関連するGPR32のうちの
1つ(またはCAレジスタ42)にコピーされる。シー
ケンサ・ユニット18は、その情報を生成した命令の
「完了」に応答して、固定小数点名前変更バッファ34
のうちの選択された1つに格納された情報の上記のコピ
ーを指示する。このようなコピーを、「ライトバック」
と称する。
ッファ34のうちの選択された1つに格納される時、そ
のような情報は、選択された名前変更バッファが割り振
られる命令によって指定される記憶位置(たとえばGP
R32のうちの1つやCAレジスタ42)と関連する。
固定小数点名前変更バッファ34のうちの選択された1
つに格納された情報は、シーケンサ・ユニット18から
の信号に応答して、それに関連するGPR32のうちの
1つ(またはCAレジスタ42)にコピーされる。シー
ケンサ・ユニット18は、その情報を生成した命令の
「完了」に応答して、固定小数点名前変更バッファ34
のうちの選択された1つに格納された情報の上記のコピ
ーを指示する。このようなコピーを、「ライトバック」
と称する。
【0016】情報が浮動小数点名前変更バッファ38の
うちの選択された1つに格納される時、その情報は、F
PR36のうちの1つと関連する。浮動小数点名前変更
バッファ38のうちの選択された1つに格納された情報
は、シーケンサ・ユニット18からの信号に応答して、
FPR36のうちの関連する1つにコピーされる。シー
ケンサ・ユニット18は、その情報を生成した命令の
「完了」に応答して、浮動小数点名前変更バッファ38
のうちの選択された1つに格納された情報の上記のコピ
ーを指示する。
うちの選択された1つに格納される時、その情報は、F
PR36のうちの1つと関連する。浮動小数点名前変更
バッファ38のうちの選択された1つに格納された情報
は、シーケンサ・ユニット18からの信号に応答して、
FPR36のうちの関連する1つにコピーされる。シー
ケンサ・ユニット18は、その情報を生成した命令の
「完了」に応答して、浮動小数点名前変更バッファ38
のうちの選択された1つに格納された情報の上記のコピ
ーを指示する。
【0017】プロセッサ10は、さまざまな実行ユニッ
トすなわち分岐ユニット20、22、24、26、2
8、30で複数の命令を同時に処理することによって、
高性能を達成する。したがって、各命令は、一連の段と
して処理され、各段は、他の命令の諸段と並列に実行可
能である。このような技法を、「パイプライン化」と称
する。好ましい実施例の重要な態様では、命令が、通常
は6段すなわち、フェッチ、デコード、ディスパッチ、
実行、完了およびライトバックとして処理される。
トすなわち分岐ユニット20、22、24、26、2
8、30で複数の命令を同時に処理することによって、
高性能を達成する。したがって、各命令は、一連の段と
して処理され、各段は、他の命令の諸段と並列に実行可
能である。このような技法を、「パイプライン化」と称
する。好ましい実施例の重要な態様では、命令が、通常
は6段すなわち、フェッチ、デコード、ディスパッチ、
実行、完了およびライトバックとして処理される。
【0018】フェッチ段では、シーケンサ・ユニット1
8が、分岐ユニット20とシーケンサ・ユニット18に
関連して上で述べた、命令のシーケンスを記憶する1つ
または複数のメモリ・アドレスから1つまたは複数の命
令を(命令キャッシュ14から)選択的に入力する。
8が、分岐ユニット20とシーケンサ・ユニット18に
関連して上で述べた、命令のシーケンスを記憶する1つ
または複数のメモリ・アドレスから1つまたは複数の命
令を(命令キャッシュ14から)選択的に入力する。
【0019】デコード段では、シーケンサ・ユニット1
8が、4つまでのフェッチされた命令をデコードする。
8が、4つまでのフェッチされた命令をデコードする。
【0020】ディスパッチ段では、シーケンサ・ユニッ
ト18が、ディスパッチされる命令の結果(デスティネ
ーション・オペランド情報)のために名前変更バッファ
・エントリを予約した後に、実行ユニットすなわち分岐
ユニット20、22、24、26、28、30のうちの
(デコード段でのデコードに応答して)選択された1つ
に、4つまでのデコードされた命令を選択的にディスパ
ッチする。ディスパッチ段では、オペランド情報が、デ
ィスパッチされた命令に関して選択された実行ユニット
に供給される。プロセッサ10は、プログラムされたシ
ーケンスの順で命令をディスパッチする。
ト18が、ディスパッチされる命令の結果(デスティネ
ーション・オペランド情報)のために名前変更バッファ
・エントリを予約した後に、実行ユニットすなわち分岐
ユニット20、22、24、26、28、30のうちの
(デコード段でのデコードに応答して)選択された1つ
に、4つまでのデコードされた命令を選択的にディスパ
ッチする。ディスパッチ段では、オペランド情報が、デ
ィスパッチされた命令に関して選択された実行ユニット
に供給される。プロセッサ10は、プログラムされたシ
ーケンスの順で命令をディスパッチする。
【0021】実行段では、実行ユニットが、ディスパッ
チされた命令を実行し、動作の結果(デスティネーショ
ン・オペランド情報)を出力して、上で述べたように固
定小数点名前変更バッファ34または浮動小数点名前変
更バッファ38内の選択された項目に格納する。こうし
て、プロセッサ10は、命令をそのプログラムされたシ
ーケンスに対して非整順に実行することができる。
チされた命令を実行し、動作の結果(デスティネーショ
ン・オペランド情報)を出力して、上で述べたように固
定小数点名前変更バッファ34または浮動小数点名前変
更バッファ38内の選択された項目に格納する。こうし
て、プロセッサ10は、命令をそのプログラムされたシ
ーケンスに対して非整順に実行することができる。
【0022】完了段では、シーケンサ・ユニット18
が、命令が「完了」したことを示す。プロセッサ10
は、プログラムされたシーケンスの順で命令を「完了」
する。
が、命令が「完了」したことを示す。プロセッサ10
は、プログラムされたシーケンスの順で命令を「完了」
する。
【0023】ライトバック段では、シーケンサ・ユニッ
ト18が、固定小数点名前変更バッファ34からGPR
32へ、または浮動小数点名前変更バッファ38からF
PR36への情報のコピーを指示する。シーケンサ・ユ
ニット18は、選択された名前変更バッファに格納され
た情報のコピーを指示する。同様に、特定の命令のライ
トバック段では、プロセッサ10が、その特定の命令に
応答してアーキテクチャ状態を更新する。プロセッサ1
0は、命令のそれぞれの「ライトバック」段を、命令の
プログラムされたシーケンスの順で処理する。プロセッ
サ10は、指定された状況で、ある命令の完了段とライ
トバック段を有利に併合する。
ト18が、固定小数点名前変更バッファ34からGPR
32へ、または浮動小数点名前変更バッファ38からF
PR36への情報のコピーを指示する。シーケンサ・ユ
ニット18は、選択された名前変更バッファに格納され
た情報のコピーを指示する。同様に、特定の命令のライ
トバック段では、プロセッサ10が、その特定の命令に
応答してアーキテクチャ状態を更新する。プロセッサ1
0は、命令のそれぞれの「ライトバック」段を、命令の
プログラムされたシーケンスの順で処理する。プロセッ
サ10は、指定された状況で、ある命令の完了段とライ
トバック段を有利に併合する。
【0024】好ましい実施例では、各命令が、命令処理
の段のそれぞれを完了するのに1マシン・サイクルを必
要とする。それにもかかわらず、一部の命令(たとえ
ば、CFXU26によって実行される複合固定小数点命
令)は、複数のサイクルを必要とする可能性がある。し
たがって、先行する命令の完了に必要な時間の変動に応
じて、特定の命令の実行段と完了段の間に可変遅延が発
生する可能性がある。
の段のそれぞれを完了するのに1マシン・サイクルを必
要とする。それにもかかわらず、一部の命令(たとえ
ば、CFXU26によって実行される複合固定小数点命
令)は、複数のサイクルを必要とする可能性がある。し
たがって、先行する命令の完了に必要な時間の変動に応
じて、特定の命令の実行段と完了段の間に可変遅延が発
生する可能性がある。
【0025】図2は、好ましい実施例の基本ブロックに
割り当てられる命令の例の概念図である。図3は、プロ
セッサ10によって処理される図2の命令のさまざまな
段の概念図である。重要なことに、プロセッサ10は、
予測分岐をサポートする。
割り当てられる命令の例の概念図である。図3は、プロ
セッサ10によって処理される図2の命令のさまざまな
段の概念図である。重要なことに、プロセッサ10は、
予測分岐をサポートする。
【0026】したがって、条件分岐命令に応答して、プ
ロセッサ10は、選択された命令のシーケンスが実際に
正しいシーケンスであるかどうかを実際に判定する前
に、その処理を複数の可能な命令の目標シーケンスのう
ちの選択された1つに予測分岐させる。したがって、プ
ロセッサ10は、選択された命令のシーケンスが実際に
正しいシーケンスであるかどうかを実際に判定する前
で、分岐ユニット20が条件分岐命令を実行する前に、
命令の選択されたシーケンスを予測処理する。プロセッ
サ10は、プロセッサ10による条件分岐命令の分岐条
件の状態の予測に応じて、選択された命令のシーケンス
へ処理を予測分岐させる。プロセッサ10は、分岐条件
が、プロセッサ10がまだ実行を終了していない先行命
令の結果に左右される場合に、状態を予測する。
ロセッサ10は、選択された命令のシーケンスが実際に
正しいシーケンスであるかどうかを実際に判定する前
に、その処理を複数の可能な命令の目標シーケンスのう
ちの選択された1つに予測分岐させる。したがって、プ
ロセッサ10は、選択された命令のシーケンスが実際に
正しいシーケンスであるかどうかを実際に判定する前
で、分岐ユニット20が条件分岐命令を実行する前に、
命令の選択されたシーケンスを予測処理する。プロセッ
サ10は、プロセッサ10による条件分岐命令の分岐条
件の状態の予測に応じて、選択された命令のシーケンス
へ処理を予測分岐させる。プロセッサ10は、分岐条件
が、プロセッサ10がまだ実行を終了していない先行命
令の結果に左右される場合に、状態を予測する。
【0027】プロセッサ10は、そのような先行命令の
実行を終了した後に、分岐条件の実際の状態を判定し、
分岐ユニット20が、条件分岐命令を実行する。実際の
状態が予測された状態と同一である場合、予測された状
態は正しい。これに対して、実際の状態が予測された状
態と異なる場合、予測された状態は誤りである。
実行を終了した後に、分岐条件の実際の状態を判定し、
分岐ユニット20が、条件分岐命令を実行する。実際の
状態が予測された状態と同一である場合、予測された状
態は正しい。これに対して、実際の状態が予測された状
態と異なる場合、予測された状態は誤りである。
【0028】予測された状態が正しい場合、選択された
命令のシーケンスは、正しいシーケンスであり、プロセ
ッサ10は、その選択された命令シーケンスの処理を継
続する。これに対して、予測された状態が誤りの場合、
選択された命令のシーケンスは、正しいシーケンスでは
ない。この予測された状態が誤りの状況では、プロセッ
サ10は、選択された命令シーケンスの処理を停止(ま
たは「取消」)し、選択された命令シーケンスの処理の
影響を逆転することによって誤予測から回復し、分岐条
件の実際の状態に応じた正しい命令のシーケンスの処理
を開始する。
命令のシーケンスは、正しいシーケンスであり、プロセ
ッサ10は、その選択された命令シーケンスの処理を継
続する。これに対して、予測された状態が誤りの場合、
選択された命令のシーケンスは、正しいシーケンスでは
ない。この予測された状態が誤りの状況では、プロセッ
サ10は、選択された命令シーケンスの処理を停止(ま
たは「取消」)し、選択された命令シーケンスの処理の
影響を逆転することによって誤予測から回復し、分岐条
件の実際の状態に応じた正しい命令のシーケンスの処理
を開始する。
【0029】図2および図3の例からわかるように、プ
ロセッサ10は、2つの命令すなわち、乗算(MUL)
命令と条件分岐1(BRN1)命令を、基本ブロック番
号(BBID)=1に割り当てる。サイクル4の間に、
分岐エントリAで、プロセッサ10が、BRN1に応答
して処理の予測分岐を行い、BRN1から加算(AD
D)命令に分岐する。プロセッサ10は、ADDと条件
分岐2(BRN2)命令をBBID=2に割り当てる。
ロセッサ10は、2つの命令すなわち、乗算(MUL)
命令と条件分岐1(BRN1)命令を、基本ブロック番
号(BBID)=1に割り当てる。サイクル4の間に、
分岐エントリAで、プロセッサ10が、BRN1に応答
して処理の予測分岐を行い、BRN1から加算(AD
D)命令に分岐する。プロセッサ10は、ADDと条件
分岐2(BRN2)命令をBBID=2に割り当てる。
【0030】サイクル5の間に、分岐エントリBで、プ
ロセッサ10が、BRN2に応答して処理の予測分岐を
行って、BRN2から除算(DIV)命令へ予測分岐を
行い、この命令をBBID=3に割り当てる。プロセッ
サ10は、後のサイクル9になるまでBRN1の分岐条
件の実際の状態を判定しないにもかかわらず、サイクル
5の間にBRN2に応答して処理を予測分岐できること
に留意されたい。
ロセッサ10が、BRN2に応答して処理の予測分岐を
行って、BRN2から除算(DIV)命令へ予測分岐を
行い、この命令をBBID=3に割り当てる。プロセッ
サ10は、後のサイクル9になるまでBRN1の分岐条
件の実際の状態を判定しないにもかかわらず、サイクル
5の間にBRN2に応答して処理を予測分岐できること
に留意されたい。
【0031】したがって、好ましい実施例の重要な態様
では、プロセッサ10が、後の時点まで先行する分岐命
令(たとえばBRN1)の分岐条件の実際の状態を判定
しない場合であっても、分岐命令(たとえばBRN2)
に応答して処理を予測分岐できる。したがって、プロセ
ッサ10は、どの分岐命令の分岐条件の実際の状態であ
っても、それを判定する前に、複数の分岐命令に同時に
応答して処理を予測分岐することができる。
では、プロセッサ10が、後の時点まで先行する分岐命
令(たとえばBRN1)の分岐条件の実際の状態を判定
しない場合であっても、分岐命令(たとえばBRN2)
に応答して処理を予測分岐できる。したがって、プロセ
ッサ10は、どの分岐命令の分岐条件の実際の状態であ
っても、それを判定する前に、複数の分岐命令に同時に
応答して処理を予測分岐することができる。
【0032】サイクル6の間に、プロセッサ10は、B
RN2を実行し、BRN2の実際の分岐条件を判定す
る。図2および図3の例では、BRN2の分岐条件の実
際の状態が、予測された状態と異なり、予測された状態
が誤りになる。予測された状態が誤りであるから、命令
の選択されたシーケンス(すなわち、プロセッサ10が
処理を予測分岐させたDIV命令)は正しくない。BR
N2の分岐条件の予測された状態が誤りであるという判
定に応答して、サイクル7の間に、プロセッサ10は、
DIV命令の処理を取り消し(CANCEL)、DIV
命令の処理の影響を逆転することによって誤予測から回
復する。
RN2を実行し、BRN2の実際の分岐条件を判定す
る。図2および図3の例では、BRN2の分岐条件の実
際の状態が、予測された状態と異なり、予測された状態
が誤りになる。予測された状態が誤りであるから、命令
の選択されたシーケンス(すなわち、プロセッサ10が
処理を予測分岐させたDIV命令)は正しくない。BR
N2の分岐条件の予測された状態が誤りであるという判
定に応答して、サイクル7の間に、プロセッサ10は、
DIV命令の処理を取り消し(CANCEL)、DIV
命令の処理の影響を逆転することによって誤予測から回
復する。
【0033】したがって、プロセッサ10は、有利なこ
とに、後の時点まで先行する分岐命令(たとえばBRN
1)の分岐条件の実際の状態を判定しない場合であって
も、分岐命令(たとえばBRN2)の分岐条件の状態の
誤予測から回復することができる。
とに、後の時点まで先行する分岐命令(たとえばBRN
1)の分岐条件の実際の状態を判定しない場合であって
も、分岐命令(たとえばBRN2)の分岐条件の状態の
誤予測から回復することができる。
【0034】また、サイクル7の間に、プロセッサ10
は、BRN2の分岐条件の実際の状態に応答した正しい
命令のシーケンスの処理を開始する。具体的に言うと、
プロセッサ10は、シフト(SHIFT)命令と分岐3
(BRN3)命令をフェッチする。プロセッサ10は、
このSHIFT命令とBRN3命令にBBID=3を割
り当てて、DIV命令(前にBBID=3を割り当てら
れていた)の取消に応答してBBID=3を再利用す
る。代替実施例では、プロセッサ10が、DIV命令の
フェッチと並列に、サイクル4の間にSHIFT命令と
BRN3命令をプリフェッチしているはずである。この
ような代替実施例では、プロセッサ10は、サイクル7
(サイクル8ではなく)の間にSHIFT命令とBRN
3命令をディスパッチし、その結果、サイクル8(サイ
クル9ではなく)の間にSHIFT命令とBRN3命令
が実行されるはずである。
は、BRN2の分岐条件の実際の状態に応答した正しい
命令のシーケンスの処理を開始する。具体的に言うと、
プロセッサ10は、シフト(SHIFT)命令と分岐3
(BRN3)命令をフェッチする。プロセッサ10は、
このSHIFT命令とBRN3命令にBBID=3を割
り当てて、DIV命令(前にBBID=3を割り当てら
れていた)の取消に応答してBBID=3を再利用す
る。代替実施例では、プロセッサ10が、DIV命令の
フェッチと並列に、サイクル4の間にSHIFT命令と
BRN3命令をプリフェッチしているはずである。この
ような代替実施例では、プロセッサ10は、サイクル7
(サイクル8ではなく)の間にSHIFT命令とBRN
3命令をディスパッチし、その結果、サイクル8(サイ
クル9ではなく)の間にSHIFT命令とBRN3命令
が実行されるはずである。
【0035】したがって、好ましい実施例の重要な態様
では、プロセッサ10が、分岐条件の実際の状態が予測
された状態と異なることに応答して、即座に正しい命令
のシーケンスの処理を開始できる。正しい命令のシーケ
ンスの処理を開始するために、プロセッサ10が、その
分岐命令に先行するすべての命令の実行を終了する必要
はない。したがって、プロセッサ10は、正しい命令の
シーケンスの処理を開始するために、分岐命令を「完
了」する必要がない。
では、プロセッサ10が、分岐条件の実際の状態が予測
された状態と異なることに応答して、即座に正しい命令
のシーケンスの処理を開始できる。正しい命令のシーケ
ンスの処理を開始するために、プロセッサ10が、その
分岐命令に先行するすべての命令の実行を終了する必要
はない。したがって、プロセッサ10は、正しい命令の
シーケンスの処理を開始するために、分岐命令を「完
了」する必要がない。
【0036】たとえば、図3では、MUL命令が、サイ
クル8になるまで実行を終了しない。それにもかかわら
ず、プロセッサ10は、先行するMUL命令の実行を終
了する前に、それ以前のサイクル7の間にSHIFT命
令とBRN3命令の処理を開始する。重要なことに、M
UL命令とDIV命令は、どちらもCFXU26に対し
て、それぞれサイクル3とサイクル5の間にディスパッ
チされるが、プロセッサ10は、CFXU26内でのM
UL命令の実行を取り消さずに、サイクル7の間にCF
XU26内でのDIV命令の実行を選択的に取り消すこ
とができる。同様に、プロセッサ10は、分岐条件の実
際の状態が予測された状態と異なることに応答して、即
座にCFXU26に追加の命令をディスパッチすること
ができる。
クル8になるまで実行を終了しない。それにもかかわら
ず、プロセッサ10は、先行するMUL命令の実行を終
了する前に、それ以前のサイクル7の間にSHIFT命
令とBRN3命令の処理を開始する。重要なことに、M
UL命令とDIV命令は、どちらもCFXU26に対し
て、それぞれサイクル3とサイクル5の間にディスパッ
チされるが、プロセッサ10は、CFXU26内でのM
UL命令の実行を取り消さずに、サイクル7の間にCF
XU26内でのDIV命令の実行を選択的に取り消すこ
とができる。同様に、プロセッサ10は、分岐条件の実
際の状態が予測された状態と異なることに応答して、即
座にCFXU26に追加の命令をディスパッチすること
ができる。
【0037】サイクル9の間に、プロセッサ10は、B
RN1を実行し、BRN1の分岐条件の実際の状態を判
定する。図2および図3の例では、BRN1の分岐条件
の実際の状態が、予測された状態と異なり、予測された
状態が誤りになる。予測された状態が誤りであるから、
選択された命令のシーケンス(すなわち、プロセッサ1
0が処理を予測分岐させたADD命令、BRN2命令、
DIV命令、SHIFT命令およびBRN3命令)は、
正しくない。BRN1の分岐条件の予測された状態が誤
りであるという判定に応答して、サイクル10の間に、
プロセッサ10は、ADD命令、BRN2命令、SHI
FT命令およびBRN3命令(DIV命令はサイクル7
の間にすでに取り消されている)の処理を取り消し(C
ANCEL)、ADD命令、BRN2命令、SHIFT
命令およびBRN3命令の処理の影響を逆転することに
よって誤予測から回復する。
RN1を実行し、BRN1の分岐条件の実際の状態を判
定する。図2および図3の例では、BRN1の分岐条件
の実際の状態が、予測された状態と異なり、予測された
状態が誤りになる。予測された状態が誤りであるから、
選択された命令のシーケンス(すなわち、プロセッサ1
0が処理を予測分岐させたADD命令、BRN2命令、
DIV命令、SHIFT命令およびBRN3命令)は、
正しくない。BRN1の分岐条件の予測された状態が誤
りであるという判定に応答して、サイクル10の間に、
プロセッサ10は、ADD命令、BRN2命令、SHI
FT命令およびBRN3命令(DIV命令はサイクル7
の間にすでに取り消されている)の処理を取り消し(C
ANCEL)、ADD命令、BRN2命令、SHIFT
命令およびBRN3命令の処理の影響を逆転することに
よって誤予測から回復する。
【0038】また、サイクル10の間に、プロセッサ1
0は、BRN1の分岐条件の実際の状態に応答した正し
い命令のシーケンスの処理を開始する。具体的に言う
と、プロセッサ10は、減算(SUB)命令をフェッチ
する。プロセッサ10は、SUB命令にBBID=2を
割り当てて、ADD命令とBRN2命令(前にBBID
=2を割り当てられていた)の取消に応答してBBID
=2を再利用する。
0は、BRN1の分岐条件の実際の状態に応答した正し
い命令のシーケンスの処理を開始する。具体的に言う
と、プロセッサ10は、減算(SUB)命令をフェッチ
する。プロセッサ10は、SUB命令にBBID=2を
割り当てて、ADD命令とBRN2命令(前にBBID
=2を割り当てられていた)の取消に応答してBBID
=2を再利用する。
【0039】図4は、シーケンサ・ユニット18のブロ
ック図である。上で述べたように、フェッチ段では、シ
ーケンサ・ユニット18が、命令キャッシュ14から4
つまでの命令を選択的に入力し、それらの命令を命令バ
ッファ70に格納する。デコード段では、デコード論理
機構72が、命令バッファ70から4つまでのフェッチ
された命令を入力し、デコードする。ディスパッチ段で
は、ディスパッチ論理機構74が、実行ユニットである
分岐ユニット20、22、24、26、28、30のう
ちの選択された(デコード段でのデコードに応答して)
ユニットに、4つまでのデコードされた命令をディスパ
ッチする。
ック図である。上で述べたように、フェッチ段では、シ
ーケンサ・ユニット18が、命令キャッシュ14から4
つまでの命令を選択的に入力し、それらの命令を命令バ
ッファ70に格納する。デコード段では、デコード論理
機構72が、命令バッファ70から4つまでのフェッチ
された命令を入力し、デコードする。ディスパッチ段で
は、ディスパッチ論理機構74が、実行ユニットである
分岐ユニット20、22、24、26、28、30のう
ちの選択された(デコード段でのデコードに応答して)
ユニットに、4つまでのデコードされた命令をディスパ
ッチする。
【0040】図5は、好ましい実施例のシーケンサ・ユ
ニット18の順序変更バッファ76の概念図である。図
5からわかるように、順序変更バッファ76は、それぞ
れバッファ番号0ないし15を付された16個のエント
リを有する。各エントリは、5つのフィールドすなわ
ち、instruction type(命令タイプ)
フィールド、number−of−GPR desti
nations(GPRデスティネーション数)フィー
ルド、number−of−FPR destinat
ions(FPRデスティネーション数)フィールド、
finished(終了)フィールドおよびexcep
tion(例外)フィールドを有する。
ニット18の順序変更バッファ76の概念図である。図
5からわかるように、順序変更バッファ76は、それぞ
れバッファ番号0ないし15を付された16個のエント
リを有する。各エントリは、5つのフィールドすなわ
ち、instruction type(命令タイプ)
フィールド、number−of−GPR desti
nations(GPRデスティネーション数)フィー
ルド、number−of−FPR destinat
ions(FPRデスティネーション数)フィールド、
finished(終了)フィールドおよびexcep
tion(例外)フィールドを有する。
【0041】図4も参照すると、ディスパッチ論理機構
74が実行ユニットに命令をディスパッチする際に、シ
ーケンサ・ユニット18が、ディスパッチされた命令を
順序変更バッファ76内の関連エントリに割り当てる。
シーケンサ・ユニット18は、順序変更バッファ76内
のエントリを、先入れ先出しの原則に基づき、回転式
に、ディスパッチされた命令に割り当て(または「関連
付け」し)、したがって、シーケンサ・ユニット18
は、まずエントリ0を割り当て、その後順番にエントリ
1ないしエントリ15を割り当て、その後再びエントリ
0を割り当てる。ディスパッチされた命令が、順序変更
バッファ76内の関連エントリを割り当てられる際に、
ディスパッチ論理機構74が、順序変更バッファ76内
の関連エントリのさまざまなフィールドおよびサブフィ
ールドに格納するための、ディスパッチされた命令に関
する情報を出力する。
74が実行ユニットに命令をディスパッチする際に、シ
ーケンサ・ユニット18が、ディスパッチされた命令を
順序変更バッファ76内の関連エントリに割り当てる。
シーケンサ・ユニット18は、順序変更バッファ76内
のエントリを、先入れ先出しの原則に基づき、回転式
に、ディスパッチされた命令に割り当て(または「関連
付け」し)、したがって、シーケンサ・ユニット18
は、まずエントリ0を割り当て、その後順番にエントリ
1ないしエントリ15を割り当て、その後再びエントリ
0を割り当てる。ディスパッチされた命令が、順序変更
バッファ76内の関連エントリを割り当てられる際に、
ディスパッチ論理機構74が、順序変更バッファ76内
の関連エントリのさまざまなフィールドおよびサブフィ
ールドに格納するための、ディスパッチされた命令に関
する情報を出力する。
【0042】たとえば、図5のエントリ1では、順序変
更バッファ76は、命令がFXUA22にディスパッチ
されたことを示している。好ましい実施例の他の重要な
態様では、エントリ1によって、さらに、ディスパッチ
された命令が、1つのGPRデスティネーション・レジ
スタを有し(number−of−GPR desti
nations=1)、0個のFPRデスティネーショ
ン・レジスタを有し(number−of−FPR d
estinations=0)、まだ終了しておらず
(finished=0)、まだ例外を発生していない
(exception=0)ことが示される。
更バッファ76は、命令がFXUA22にディスパッチ
されたことを示している。好ましい実施例の他の重要な
態様では、エントリ1によって、さらに、ディスパッチ
された命令が、1つのGPRデスティネーション・レジ
スタを有し(number−of−GPR desti
nations=1)、0個のFPRデスティネーショ
ン・レジスタを有し(number−of−FPR d
estinations=0)、まだ終了しておらず
(finished=0)、まだ例外を発生していない
(exception=0)ことが示される。
【0043】実行ユニットがディスパッチされた命令を
実行する際には、その実行ユニットが、その命令に関連
する順序変更バッファ76内のエントリを変更する。具
体的に言うと、ディスパッチされた命令の実行終了に応
答して、実行ユニットが、そのエントリのfinish
edフィールドを変更する(finished=1にす
る)。ディスパッチされた命令の実行中に例外に遭遇し
た場合、実行ユニットは、そのエントリのexcept
ionフィールドを変更する(exception=1
にする)。
実行する際には、その実行ユニットが、その命令に関連
する順序変更バッファ76内のエントリを変更する。具
体的に言うと、ディスパッチされた命令の実行終了に応
答して、実行ユニットが、そのエントリのfinish
edフィールドを変更する(finished=1にす
る)。ディスパッチされた命令の実行中に例外に遭遇し
た場合、実行ユニットは、そのエントリのexcept
ionフィールドを変更する(exception=1
にする)。
【0044】図5には、割振りポインタ73と完了ポイ
ンタ75が示されている。プロセッサ10は、順序変更
バッファ76の読み取りを制御するためにこれらのポイ
ンタを維持する。プロセッサ10は、順序変更バッファ
・エントリが特定の命令に割り振られている(または
「関連付けられている」)かどうかを示すために割振り
ポインタ73を維持する。図5からわかるように、割振
りポインタ73は、順序変更バッファ・エントリ3を指
しており、これによって、順序変更バッファ・エントリ
3が、命令への割振りに使用可能な次の順序変更バッフ
ァ・エントリであることが示される。
ンタ75が示されている。プロセッサ10は、順序変更
バッファ76の読み取りを制御するためにこれらのポイ
ンタを維持する。プロセッサ10は、順序変更バッファ
・エントリが特定の命令に割り振られている(または
「関連付けられている」)かどうかを示すために割振り
ポインタ73を維持する。図5からわかるように、割振
りポインタ73は、順序変更バッファ・エントリ3を指
しており、これによって、順序変更バッファ・エントリ
3が、命令への割振りに使用可能な次の順序変更バッフ
ァ・エントリであることが示される。
【0045】また、プロセッサ10は、特定の命令が下
記の条件を満たすかどうかを示す(以前に特定の命令に
割り振られた順序変更バッファ・エントリに関して)た
めに、完了ポインタ75を維持する。条件1 実行ユニ
ット(その命令がディスパッチされたユニット)が、そ
の命令の実行を完了した。条件2 その命令の処理のど
の段に関しても例外に遭遇しなかった。条件3 前にデ
ィスパッチされた命令のすべてが条件1および条件2を
満足する。
記の条件を満たすかどうかを示す(以前に特定の命令に
割り振られた順序変更バッファ・エントリに関して)た
めに、完了ポインタ75を維持する。条件1 実行ユニ
ット(その命令がディスパッチされたユニット)が、そ
の命令の実行を完了した。条件2 その命令の処理のど
の段に関しても例外に遭遇しなかった。条件3 前にデ
ィスパッチされた命令のすべてが条件1および条件2を
満足する。
【0046】図5からわかるように、完了ポインタ75
は、順序変更バッファ・エントリ1を指し、これによっ
て、順序変更バッファ・エントリ1が、条件1、2およ
び3を満足することのできる次の順序変更バッファ・エ
ントリであることを示す。したがって、「有効な」順序
変更バッファ・エントリは、完了ポインタ75が指す順
序変更バッファ・エントリと、その後に続く、割振りポ
インタ73によって指される順序変更バッファ・エント
リに先行する順序変更バッファ・エントリとして定義す
ることができる。
は、順序変更バッファ・エントリ1を指し、これによっ
て、順序変更バッファ・エントリ1が、条件1、2およ
び3を満足することのできる次の順序変更バッファ・エ
ントリであることを示す。したがって、「有効な」順序
変更バッファ・エントリは、完了ポインタ75が指す順
序変更バッファ・エントリと、その後に続く、割振りポ
インタ73によって指される順序変更バッファ・エント
リに先行する順序変更バッファ・エントリとして定義す
ることができる。
【0047】もう一度図4を参照すると、順序変更バッ
ファ76のエントリは、シーケンサ・ユニット18の完
了論理機構80および例外論理機構82によって読み取
られる。順序変更バッファ76のexceptionフ
ィールドに応答して、例外論理機構82が、ディスパッ
チされた命令の実行中に遭遇する例外を処理する。順序
変更バッファ76のfinishedフィールドおよび
exceptionフィールドに応答して、完了論理機
構80が、ディスパッチ論理機構74と順序変更バッフ
ァ76に信号を出力する。これらの信号を介して、完了
論理機構80は、プログラムされたシーケンスの順で命
令の「完了」を示す。完了論理機構80が命令の「完
了」を示すのは、その命令が下記の条件を満たす場合で
ある。 条件1 実行ユニット(その命令がディスパッチされた
ユニット)が、その命令の実行を終了する(順序変更バ
ッファ76内のその命令に関連するエントリでfini
shed=1になる)。 条件2 その命令の処理のどの段についても、例外に遭
遇しなかった(順序変更バッファ76内のその命令に関
連するエントリでexception=0である)。 条件3 前にディスパッチされた命令のすべてが条件1
と条件2を満足する。
ファ76のエントリは、シーケンサ・ユニット18の完
了論理機構80および例外論理機構82によって読み取
られる。順序変更バッファ76のexceptionフ
ィールドに応答して、例外論理機構82が、ディスパッ
チされた命令の実行中に遭遇する例外を処理する。順序
変更バッファ76のfinishedフィールドおよび
exceptionフィールドに応答して、完了論理機
構80が、ディスパッチ論理機構74と順序変更バッフ
ァ76に信号を出力する。これらの信号を介して、完了
論理機構80は、プログラムされたシーケンスの順で命
令の「完了」を示す。完了論理機構80が命令の「完
了」を示すのは、その命令が下記の条件を満たす場合で
ある。 条件1 実行ユニット(その命令がディスパッチされた
ユニット)が、その命令の実行を終了する(順序変更バ
ッファ76内のその命令に関連するエントリでfini
shed=1になる)。 条件2 その命令の処理のどの段についても、例外に遭
遇しなかった(順序変更バッファ76内のその命令に関
連するエントリでexception=0である)。 条件3 前にディスパッチされた命令のすべてが条件1
と条件2を満足する。
【0048】順序変更バッファ76内の情報に応答し
て、ディスパッチ論理機構74が、ディスパッチに適し
た追加命令の個数を判定する。
て、ディスパッチ論理機構74が、ディスパッチに適し
た追加命令の個数を判定する。
【0049】順序変更バッファ76は、分岐ユニット2
0からCORRECTION(訂正)信号とBRANC
H_ROBTAG(分岐順序変更バッファ・タグ)信号
を入力する。CORRECTION信号については、下
で図8に関連してさらに説明する。BRANCH_RO
BTAG信号については、図8および図10に関連して
下でさらに説明する。さらに、順序変更バッファ76
は、実行ユニットである分岐ユニット20、22、2
4、26、28、30に、DISPATCH_ROBT
AG(ディスパッチ・順序変更バッファ・タグ)信号を
出力する。DISPATCH_ROBTAG信号につい
ては、図7、図8および図10に関連して下でさらに説
明する。
0からCORRECTION(訂正)信号とBRANC
H_ROBTAG(分岐順序変更バッファ・タグ)信号
を入力する。CORRECTION信号については、下
で図8に関連してさらに説明する。BRANCH_RO
BTAG信号については、図8および図10に関連して
下でさらに説明する。さらに、順序変更バッファ76
は、実行ユニットである分岐ユニット20、22、2
4、26、28、30に、DISPATCH_ROBT
AG(ディスパッチ・順序変更バッファ・タグ)信号を
出力する。DISPATCH_ROBTAG信号につい
ては、図7、図8および図10に関連して下でさらに説
明する。
【0050】何らかのタイプの分岐命令(条件分岐その
他)のディスパッチに応答して、ディスパッチ論理機構
74は、DISPATCHED_A_BRANCH(分
岐ディスパッチ済み)信号を出力し、この信号は、基本
ブロック制御論理機構(以下、BBCLと呼称する)8
4によって入力される。さらに、BBCL84は、分岐
ユニット20からCORRECTION信号とBRAN
CH_BBID(分岐BBID)信号を入力する。BR
ANCH_BBID信号については、図8および図10
に関連して下でさらに説明する。図4からわかるよう
に、BBCL84は、実行ユニットである分岐ユニット
20、22、24、26、28、30に、DISPAT
CH_BBID(ディスパッチBBID)信号とCAN
CEL_BBID(取消BBID)信号を出力する。
他)のディスパッチに応答して、ディスパッチ論理機構
74は、DISPATCHED_A_BRANCH(分
岐ディスパッチ済み)信号を出力し、この信号は、基本
ブロック制御論理機構(以下、BBCLと呼称する)8
4によって入力される。さらに、BBCL84は、分岐
ユニット20からCORRECTION信号とBRAN
CH_BBID(分岐BBID)信号を入力する。BR
ANCH_BBID信号については、図8および図10
に関連して下でさらに説明する。図4からわかるよう
に、BBCL84は、実行ユニットである分岐ユニット
20、22、24、26、28、30に、DISPAT
CH_BBID(ディスパッチBBID)信号とCAN
CEL_BBID(取消BBID)信号を出力する。
【0051】図6は、固定小数点名前変更バッファ34
の概念図である。わかりやすくするために、以下では、
浮動小数点名前変更バッファ38の動作を例示するもの
として、固定小数点名前変更バッファ34の動作だけを
説明し、符号34を単に「名前変更バッファ」と呼称す
る。図6からわかるように、名前変更バッファ34に
は、それぞれバッファ番号0ないし11と記された12
個の名前変更バッファが含まれる。シーケンサ・ユニッ
ト18は、先入れ先出しの原則に基づき、回転式に、デ
ィスパッチされた命令に名前変更バッファ番号0ないし
11を割り当て(または「関連付け」し)、シーケンサ
・ユニット18が、まず名前変更バッファ番号0を割り
当て、その後名前変更バッファ番号1ないし11を順番
に割り当て、その後にはもう一度名前変更バッファ番号
0を割り当てるようになっている。
の概念図である。わかりやすくするために、以下では、
浮動小数点名前変更バッファ38の動作を例示するもの
として、固定小数点名前変更バッファ34の動作だけを
説明し、符号34を単に「名前変更バッファ」と呼称す
る。図6からわかるように、名前変更バッファ34に
は、それぞれバッファ番号0ないし11と記された12
個の名前変更バッファが含まれる。シーケンサ・ユニッ
ト18は、先入れ先出しの原則に基づき、回転式に、デ
ィスパッチされた命令に名前変更バッファ番号0ないし
11を割り当て(または「関連付け」し)、シーケンサ
・ユニット18が、まず名前変更バッファ番号0を割り
当て、その後名前変更バッファ番号1ないし11を順番
に割り当て、その後にはもう一度名前変更バッファ番号
0を割り当てるようになっている。
【0052】図6を参照すると、名前変更バッファ2、
3、4、5、6および7は、ディスパッチ論理機構74
(図4)によってディスパッチされた命令のためのデス
ティネーション・オペランド情報を格納するために割り
当てられている。図6には、割振りポインタ80'、ラ
イトバック・ポインタ82'および完了ポインタ84'が
示されている。プロセッサ10は、名前変更バッファ3
4への読書を制御するためにこれらのポインタを維持す
る。プロセッサ10は、名前変更バッファが特定の命令
に割り振られているかどうかを示すために割振りポイン
タ80'を維持する。図6では、割振りポインタ80'
が、名前変更バッファ8を指しており、これによって、
名前変更バッファ8が、命令への割振りに使用可能な次
の名前変更バッファであることを示している。
3、4、5、6および7は、ディスパッチ論理機構74
(図4)によってディスパッチされた命令のためのデス
ティネーション・オペランド情報を格納するために割り
当てられている。図6には、割振りポインタ80'、ラ
イトバック・ポインタ82'および完了ポインタ84'が
示されている。プロセッサ10は、名前変更バッファ3
4への読書を制御するためにこれらのポインタを維持す
る。プロセッサ10は、名前変更バッファが特定の命令
に割り振られているかどうかを示すために割振りポイン
タ80'を維持する。図6では、割振りポインタ80'
が、名前変更バッファ8を指しており、これによって、
名前変更バッファ8が、命令への割振りに使用可能な次
の名前変更バッファであることを示している。
【0053】好ましい実施例の重要な態様では、プロセ
ッサ10が、さらに、別の命令への再割振りに名前変更
バッファ(以前に特定の命令に割り振られていた)を使
用可能であるかどうかを示すためにライトバック・ポイ
ンタ82'を維持する。図6では、ライトバック・ポイ
ンタ82'が、名前変更バッファ2を指しており、これ
によって、プロセッサ10がデスティネーション・オペ
ランド情報(図6の名前変更バッファのinforma
tion(情報)フィールドに格納される)をGPR3
2(図6の名前変更バッファのregister nu
mber(レジスタ番号)フィールドで指定される)に
コピーする元の、次の名前変更バッファが、名前変更バ
ッファ2であることを示している。
ッサ10が、さらに、別の命令への再割振りに名前変更
バッファ(以前に特定の命令に割り振られていた)を使
用可能であるかどうかを示すためにライトバック・ポイ
ンタ82'を維持する。図6では、ライトバック・ポイ
ンタ82'が、名前変更バッファ2を指しており、これ
によって、プロセッサ10がデスティネーション・オペ
ランド情報(図6の名前変更バッファのinforma
tion(情報)フィールドに格納される)をGPR3
2(図6の名前変更バッファのregister nu
mber(レジスタ番号)フィールドで指定される)に
コピーする元の、次の名前変更バッファが、名前変更バ
ッファ2であることを示している。
【0054】したがって、プロセッサ10は、アーキテ
クチャ・レジスタへの格納のために名前変更バッファか
ら特定の命令の結果(デスティネーション・オペランド
情報)をコピーする動作に応答して、ライトバック・ポ
インタ82'を前進させる(その特定の命令に前に割り
振られていた名前変更バッファを超えて)。こうして、
プロセッサ10は、アーキテクチャ・レジスタに結果を
コピーするまで、特定の命令の結果(デスティネーショ
ン・オペランド情報)を格納するために、割振り済みの
名前変更バッファを予約する。
クチャ・レジスタへの格納のために名前変更バッファか
ら特定の命令の結果(デスティネーション・オペランド
情報)をコピーする動作に応答して、ライトバック・ポ
インタ82'を前進させる(その特定の命令に前に割り
振られていた名前変更バッファを超えて)。こうして、
プロセッサ10は、アーキテクチャ・レジスタに結果を
コピーするまで、特定の命令の結果(デスティネーショ
ン・オペランド情報)を格納するために、割振り済みの
名前変更バッファを予約する。
【0055】また、プロセッサ10は、特定の命令が下
記の条件を満足するかどうかを(前に特定の命令に割り
振られた名前変更バッファに関して)示すため、完了ポ
インタ84'を維持する。 条件1 実行ユニット(その命令がディスパッチされた
ユニット)が、その命令の実行を終了する。 条件2 その命令の処理のどの段についても、例外に遭
遇しなかった。 条件3 前にディスパッチされた命令のすべてが条件1
と条件2を満足する。
記の条件を満足するかどうかを(前に特定の命令に割り
振られた名前変更バッファに関して)示すため、完了ポ
インタ84'を維持する。 条件1 実行ユニット(その命令がディスパッチされた
ユニット)が、その命令の実行を終了する。 条件2 その命令の処理のどの段についても、例外に遭
遇しなかった。 条件3 前にディスパッチされた命令のすべてが条件1
と条件2を満足する。
【0056】図6では、完了ポインタ84'が名前変更
バッファ2を指しており、これによって、名前変更バッ
ファ2が、条件1、2および3を満足することのできる
次の名前変更バッファであることを示している。好まし
い実施例の重要な態様では、プロセッサ10が、アーキ
テクチャ・レジスタへの格納のため命令の結果を名前変
更バッファからコピーするかどうかに無関係に、完了ポ
インタ84'を維持する。
バッファ2を指しており、これによって、名前変更バッ
ファ2が、条件1、2および3を満足することのできる
次の名前変更バッファであることを示している。好まし
い実施例の重要な態様では、プロセッサ10が、アーキ
テクチャ・レジスタへの格納のため命令の結果を名前変
更バッファからコピーするかどうかに無関係に、完了ポ
インタ84'を維持する。
【0057】したがって、「名前変更エントリ」は、完
了ポインタ84'によって指される名前変更バッファ
と、その後の、割振りポインタ80'によって指される
名前変更バッファに先行する名前変更バッファとして定
義できる。「ライトバック・エントリ」は、ライトバッ
ク・ポインタ82'によって指される名前変更バッファ
と、その後の、完了ポインタ84'によって指される名
前変更バッファに先行する名前変更バッファとして定義
できる。ライトバック・エントリには、たとえばアーキ
テクチャ・レジスタへの書込ポートが使用不能であるな
どの理由のため、「完了」はしたが、その結果を名前変
更バッファからアーキテクチャ・レジスタにコピーされ
ていない命令の結果が格納される。
了ポインタ84'によって指される名前変更バッファ
と、その後の、割振りポインタ80'によって指される
名前変更バッファに先行する名前変更バッファとして定
義できる。「ライトバック・エントリ」は、ライトバッ
ク・ポインタ82'によって指される名前変更バッファ
と、その後の、完了ポインタ84'によって指される名
前変更バッファに先行する名前変更バッファとして定義
できる。ライトバック・エントリには、たとえばアーキ
テクチャ・レジスタへの書込ポートが使用不能であるな
どの理由のため、「完了」はしたが、その結果を名前変
更バッファからアーキテクチャ・レジスタにコピーされ
ていない命令の結果が格納される。
【0058】概念上、ライトバック・エントリは、名前
変更エントリとアーキテクチャ・レジスタの間に存在す
る。有利なことに、完了段でライトバック・ポートを使
用できる場合には、ライトバック・エントリを迂回し、
アーキテクチャ・レジスタに直接結果を書き込むことが
できる。さらに、名前変更エントリと同様に、プロセッ
サ10は、情報に関連するアーキテクチャ・レジスタを
指定する命令を実行ユニットが実行する場合に、実行ユ
ニットへその情報を出力するようにライトバック・エン
トリを操作することができる。
変更エントリとアーキテクチャ・レジスタの間に存在す
る。有利なことに、完了段でライトバック・ポートを使
用できる場合には、ライトバック・エントリを迂回し、
アーキテクチャ・レジスタに直接結果を書き込むことが
できる。さらに、名前変更エントリと同様に、プロセッ
サ10は、情報に関連するアーキテクチャ・レジスタを
指定する命令を実行ユニットが実行する場合に、実行ユ
ニットへその情報を出力するようにライトバック・エン
トリを操作することができる。
【0059】図7は、プロセッサ10のFXUA22の
ブロック図である。FXUA22には、全体的に符号5
0aおよび50bに示されるリザベーション・ステーシ
ョンが含まれる。さらに、FXUA22には、全体的に
符号51aおよび51bに示される実行段が含まれる。
同様に、分岐ユニット20、FXUB24、CFXU2
6、LSU28およびFPU30のそれぞれが、それぞ
れのリザベーション・ステーションと実行段を有する。
わかりやすくするために、以下では、他の実行ユニット
ならびにそのそれぞれの実行段およびリザベーション・
ステーションの動作の例示するものとして、FXUA2
2ならびにその実行段およびリザベーション・ステーシ
ョンの動作だけを説明する。
ブロック図である。FXUA22には、全体的に符号5
0aおよび50bに示されるリザベーション・ステーシ
ョンが含まれる。さらに、FXUA22には、全体的に
符号51aおよび51bに示される実行段が含まれる。
同様に、分岐ユニット20、FXUB24、CFXU2
6、LSU28およびFPU30のそれぞれが、それぞ
れのリザベーション・ステーションと実行段を有する。
わかりやすくするために、以下では、他の実行ユニット
ならびにそのそれぞれの実行段およびリザベーション・
ステーションの動作の例示するものとして、FXUA2
2ならびにその実行段およびリザベーション・ステーシ
ョンの動作だけを説明する。
【0060】リザベーション・ステーション50aおよ
び50bのそれぞれは、FXUA22による実行のため
シーケンサ・ユニット18からディスパッチされた命令
に関する情報を記憶することができる。リザベーション
・ステーション50aおよび50bのそれぞれには、順
序変更バッファ・タグ(ROBTAG)フィールド、デ
スティネーション・レジスタ(DREG)フィールド、
オペランドA(OPERAND A)フィールド、オペ
ランドB(OPERAND B)フィールド、オペコー
ド(OPCODE)フィールド、BBIDフィールドお
よび有効(VALID)フィールドが含まれる。さら
に、本発明の重要な態様では、リザベーション・ステー
ション50aおよび50bのそれぞれに、さらに、取消
論理機構53aおよび53bが含まれる。
び50bのそれぞれは、FXUA22による実行のため
シーケンサ・ユニット18からディスパッチされた命令
に関する情報を記憶することができる。リザベーション
・ステーション50aおよび50bのそれぞれには、順
序変更バッファ・タグ(ROBTAG)フィールド、デ
スティネーション・レジスタ(DREG)フィールド、
オペランドA(OPERAND A)フィールド、オペ
ランドB(OPERAND B)フィールド、オペコー
ド(OPCODE)フィールド、BBIDフィールドお
よび有効(VALID)フィールドが含まれる。さら
に、本発明の重要な態様では、リザベーション・ステー
ション50aおよび50bのそれぞれに、さらに、取消
論理機構53aおよび53bが含まれる。
【0061】リザベーション・ステーションのROBT
AGフィールドには、リザベーション・ステーションの
それぞれの命令がシーケンサ・ユニット18によってデ
ィスパッチされる瞬間にDISPATCH_ROBTA
G信号(順序変更バッファ76からの)によって示され
る、リザベーション・ステーションのそれぞれの命令に
割り振られた順序変更バッファ・エントリの表示が格納
される。
AGフィールドには、リザベーション・ステーションの
それぞれの命令がシーケンサ・ユニット18によってデ
ィスパッチされる瞬間にDISPATCH_ROBTA
G信号(順序変更バッファ76からの)によって示され
る、リザベーション・ステーションのそれぞれの命令に
割り振られた順序変更バッファ・エントリの表示が格納
される。
【0062】リザベーション・ステーションのDREG
フィールドでは、リザベーション・ステーションのそれ
ぞれの命令に関する、少なくとも1つのデスティネーシ
ョン・レジスタ(シーケンサ・ユニット18によって指
定される)が識別される。同様に、OPERAND A
フィールドとOPERAND Bフィールドには、リザ
ベーション・ステーションのそれぞれの命令に関するソ
ース・オペランド情報(GPR32、名前変更バッファ
34、FXUB24、CFXU26またはLSU28か
ら)が格納される。OPCODEフィールドには、リザ
ベーション・ステーションのそれぞれの命令に応答して
ソース・オペランド情報に対してFXUA22によって
実行される命令を示すオペコード(シーケンサ・ユニッ
ト18によって指定される)が格納される。
フィールドでは、リザベーション・ステーションのそれ
ぞれの命令に関する、少なくとも1つのデスティネーシ
ョン・レジスタ(シーケンサ・ユニット18によって指
定される)が識別される。同様に、OPERAND A
フィールドとOPERAND Bフィールドには、リザ
ベーション・ステーションのそれぞれの命令に関するソ
ース・オペランド情報(GPR32、名前変更バッファ
34、FXUB24、CFXU26またはLSU28か
ら)が格納される。OPCODEフィールドには、リザ
ベーション・ステーションのそれぞれの命令に応答して
ソース・オペランド情報に対してFXUA22によって
実行される命令を示すオペコード(シーケンサ・ユニッ
ト18によって指定される)が格納される。
【0063】リザベーション・ステーションのBBID
フィールドには、リザベーション・ステーションのそれ
ぞれの命令がシーケンサ・ユニット18によってディス
パッチされる瞬間にDISPATCH_BBID信号
(BBCL84からの)によって示されるそれぞれの命
令のBBIDが格納される。
フィールドには、リザベーション・ステーションのそれ
ぞれの命令がシーケンサ・ユニット18によってディス
パッチされる瞬間にDISPATCH_BBID信号
(BBCL84からの)によって示されるそれぞれの命
令のBBIDが格納される。
【0064】図7を参照すると、リザベーション・ステ
ーションは、シーケンサ・ユニット18から命令がディ
スパッチされた時点でソース・オペランド情報を入手で
きない命令に関する情報を一時的に記憶する。実行ユニ
ットからソース・オペランド情報を入手できるようにな
るのに応答して、リザベーション・ステーションは、ソ
ース・オペランド情報を入力し、記憶する。適当な瞬間
に、リザベーション・ステーションは、そのオペランド
情報を実行論理機構54aに転送する。
ーションは、シーケンサ・ユニット18から命令がディ
スパッチされた時点でソース・オペランド情報を入手で
きない命令に関する情報を一時的に記憶する。実行ユニ
ットからソース・オペランド情報を入手できるようにな
るのに応答して、リザベーション・ステーションは、ソ
ース・オペランド情報を入力し、記憶する。適当な瞬間
に、リザベーション・ステーションは、そのオペランド
情報を実行論理機構54aに転送する。
【0065】制御論理機構56aからの信号に応答し
て、実行論理機構54aは、リザベーション・ステーシ
ョンのOPERAND AフィールドとOPERAND
Bフィールドからソース・オペランド情報を入力し、
それらに対して動作(リザベーション・ステーションに
記憶されたオペコードによって示される)の第1段を実
行する。さらに、制御論理機構56aからの信号に応答
して、実行段51aは、(1)ROBTAGフィールド
55aに格納するために、リザベーション・ステーショ
ンのROBTAGフィールドからROBTAG情報を入
力し、(2)DREGフィールド58aに格納するため
に、リザベーション・ステーションのDREGフィール
ドからDREG情報を入力し、(3)BBIDフィール
ド57aに格納するために、リザベーション・ステーシ
ョンのBBIDフィールドからBBID情報を入力す
る。
て、実行論理機構54aは、リザベーション・ステーシ
ョンのOPERAND AフィールドとOPERAND
Bフィールドからソース・オペランド情報を入力し、
それらに対して動作(リザベーション・ステーションに
記憶されたオペコードによって示される)の第1段を実
行する。さらに、制御論理機構56aからの信号に応答
して、実行段51aは、(1)ROBTAGフィールド
55aに格納するために、リザベーション・ステーショ
ンのROBTAGフィールドからROBTAG情報を入
力し、(2)DREGフィールド58aに格納するため
に、リザベーション・ステーションのDREGフィール
ドからDREG情報を入力し、(3)BBIDフィール
ド57aに格納するために、リザベーション・ステーシ
ョンのBBIDフィールドからBBID情報を入力す
る。
【0066】制御論理機構56bからの信号に応答し
て、実行論理機構54bは、実行論理機構54aから情
報を入力し、それに対して動作の第2段を実行する。さ
らに、制御論理機構56bからの信号に応答して、実行
段51bは、(1)ROBTAGフィールド55bに格
納するため、ROBTAGフィールド55aからROB
TAG情報を入力し、(2)DREGフィールド58b
に格納するため、DREGフィールド58aからDRE
G情報を入力し、(3)BBIDフィールド57bに格
納するため、BBIDフィールド57aからBBID情
報を入力する。リザベーション・ステーションと同様
に、実行段51aにはVALIDフィールド59aと取
消論理機構61aが含まれ、実行段51bには、VAL
IDフィールド59bと取消論理機構61bが含まれ
る。
て、実行論理機構54bは、実行論理機構54aから情
報を入力し、それに対して動作の第2段を実行する。さ
らに、制御論理機構56bからの信号に応答して、実行
段51bは、(1)ROBTAGフィールド55bに格
納するため、ROBTAGフィールド55aからROB
TAG情報を入力し、(2)DREGフィールド58b
に格納するため、DREGフィールド58aからDRE
G情報を入力し、(3)BBIDフィールド57bに格
納するため、BBIDフィールド57aからBBID情
報を入力する。リザベーション・ステーションと同様
に、実行段51aにはVALIDフィールド59aと取
消論理機構61aが含まれ、実行段51bには、VAL
IDフィールド59bと取消論理機構61bが含まれ
る。
【0067】このような動作から生じた結果は、実行論
理機構54bから名前変更バッファ34、FXUB2
4、CFXU26およびLSU28へ出力される。この
ような情報は、名前変更バッファ34のうちの選択され
た1つに格納される。DREGフィールド58bの出力
によって識別されるデスティネーション・レジスタに応
答して、格納された情報が、GPR32のうちの1つに
(選択された名前変更バッファ内で)関連付けられる。
さらに、図5に関連して上で述べたように、FXUA2
2は、ROBTAGフィールド55bの出力によって識
別される順序変更バッファ・エントリを更新する。この
エントリは、実行論理機構54bによって実行された命
令に割り振られた順序変更バッファ・エントリである。
理機構54bから名前変更バッファ34、FXUB2
4、CFXU26およびLSU28へ出力される。この
ような情報は、名前変更バッファ34のうちの選択され
た1つに格納される。DREGフィールド58bの出力
によって識別されるデスティネーション・レジスタに応
答して、格納された情報が、GPR32のうちの1つに
(選択された名前変更バッファ内で)関連付けられる。
さらに、図5に関連して上で述べたように、FXUA2
2は、ROBTAGフィールド55bの出力によって識
別される順序変更バッファ・エントリを更新する。この
エントリは、実行論理機構54bによって実行された命
令に割り振られた順序変更バッファ・エントリである。
【0068】シーケンサ・ユニット18がリザベーショ
ン・ステーションに命令をディスパッチするのに応答し
て、そのリザベーション・ステーションのVALIDフ
ィールドが、論理1にセットされる。実行段51aが命
令の実行を終了するのに応答して、VALIDフィール
ド59aが、論理0にクリアされる。同様に、実行段5
1bが命令の実行を終了するのに応答して、VALID
フィールド59bが、論理0にクリアされる。
ン・ステーションに命令をディスパッチするのに応答し
て、そのリザベーション・ステーションのVALIDフ
ィールドが、論理1にセットされる。実行段51aが命
令の実行を終了するのに応答して、VALIDフィール
ド59aが、論理0にクリアされる。同様に、実行段5
1bが命令の実行を終了するのに応答して、VALID
フィールド59bが、論理0にクリアされる。
【0069】好ましい実施例の重要な態様では、取消論
理機構53a、53b、61aおよび61bが、シーケ
ンサ・ユニット18からCANCEL_BBID信号を
入力する。CANCEL_BBID信号を介して、シー
ケンサ・ユニット18が、プロセッサ10によって取り
消される1つまたは複数のBBIDを示すことができ
る。CANCEL_BBID信号に応答して、取消論理
機構53aは、取り消すBBIDと、リザベーション・
ステーション50aに格納されたBBIDを比較する。
取り消すBBIDとリザベーション・ステーション50
aに格納されたBBIDが一致する場合、取消論理機構
53aは、リザベーション・ステーション50aのVA
LIDフィールドを論理0にクリアし、これによって、
そのリザベーション・ステーションのそれぞれの命令の
実行を取り消す。
理機構53a、53b、61aおよび61bが、シーケ
ンサ・ユニット18からCANCEL_BBID信号を
入力する。CANCEL_BBID信号を介して、シー
ケンサ・ユニット18が、プロセッサ10によって取り
消される1つまたは複数のBBIDを示すことができ
る。CANCEL_BBID信号に応答して、取消論理
機構53aは、取り消すBBIDと、リザベーション・
ステーション50aに格納されたBBIDを比較する。
取り消すBBIDとリザベーション・ステーション50
aに格納されたBBIDが一致する場合、取消論理機構
53aは、リザベーション・ステーション50aのVA
LIDフィールドを論理0にクリアし、これによって、
そのリザベーション・ステーションのそれぞれの命令の
実行を取り消す。
【0070】同様に、取り消すBBIDとリザベーショ
ン・ステーション50bに格納されたBBIDが一致す
る場合、取消論理機構53bが、リザベーション・ステ
ーション50bのVALIDフィールドを論理0にクリ
アし、これによって、そのリザベーション・ステーショ
ンのそれぞれの命令の実行を取り消す。同様に、取り消
すBBIDと実行段51aのBBIDフィールド57a
に格納されたBBIDが一致する場合、取消論理機構6
1aが、VALIDフィールド59aを論理0にクリア
し、これによって、実行段51aで命令の実行を取り消
す。また、取り消すBBIDと実行段51bのBBID
フィールド57bに格納されたBBIDが一致する場
合、取消論理機構61bが、VALIDフィールド59
bを論理0にクリアし、これによって、実行段51bで
命令の実行を取り消す。
ン・ステーション50bに格納されたBBIDが一致す
る場合、取消論理機構53bが、リザベーション・ステ
ーション50bのVALIDフィールドを論理0にクリ
アし、これによって、そのリザベーション・ステーショ
ンのそれぞれの命令の実行を取り消す。同様に、取り消
すBBIDと実行段51aのBBIDフィールド57a
に格納されたBBIDが一致する場合、取消論理機構6
1aが、VALIDフィールド59aを論理0にクリア
し、これによって、実行段51aで命令の実行を取り消
す。また、取り消すBBIDと実行段51bのBBID
フィールド57bに格納されたBBIDが一致する場
合、取消論理機構61bが、VALIDフィールド59
bを論理0にクリアし、これによって、実行段51bで
命令の実行を取り消す。
【0071】したがって、プロセッサ10は、特定のB
BIDに割り当てられた命令の実行を選択的に取り消す
ことができる。これは、その命令が1つまたは複数の実
行ユニットにディスパッチされる場合でも成り立つ。さ
らに、各実行ユニットは、各命令のそれぞれに割り当て
られたBBIDに従って、その実行ユニットのリザベー
ション・ステーションおよび実行段で、互いに独立にそ
のような命令を選択的に取り消すことができる。
BIDに割り当てられた命令の実行を選択的に取り消す
ことができる。これは、その命令が1つまたは複数の実
行ユニットにディスパッチされる場合でも成り立つ。さ
らに、各実行ユニットは、各命令のそれぞれに割り当て
られたBBIDに従って、その実行ユニットのリザベー
ション・ステーションおよび実行段で、互いに独立にそ
のような命令を選択的に取り消すことができる。
【0072】図8は、分岐ユニット20のブロック図で
ある。分岐ユニット20には、全体的に符号100aお
よび100bに示されたリザベーション・ステーション
が含まれる。さらに、分岐ユニット20には、全体的に
符号102に示されたマルチプレクサ群が含まれる。ま
た、分岐ユニット20には、実行論理機構104が含ま
れる。
ある。分岐ユニット20には、全体的に符号100aお
よび100bに示されたリザベーション・ステーション
が含まれる。さらに、分岐ユニット20には、全体的に
符号102に示されたマルチプレクサ群が含まれる。ま
た、分岐ユニット20には、実行論理機構104が含ま
れる。
【0073】リザベーション・ステーション100aお
よび100bのそれぞれには、INSTRUCTION
(命令)フィールド、CONDITION(条件)フィ
ールド、ROBTAGフィールド、GPR名前変更バッ
ファ割振りポインタ(GRBAP)フィールド、BBI
DフィールドおよびVALIDフィールドが含まれる。
さらに、好ましい実施例の重要な態様では、リザベーシ
ョン・ステーション100aに取消論理機構106aが
含まれ、リザベーション・ステーション100bに取消
論理機構106bが含まれる。
よび100bのそれぞれには、INSTRUCTION
(命令)フィールド、CONDITION(条件)フィ
ールド、ROBTAGフィールド、GPR名前変更バッ
ファ割振りポインタ(GRBAP)フィールド、BBI
DフィールドおよびVALIDフィールドが含まれる。
さらに、好ましい実施例の重要な態様では、リザベーシ
ョン・ステーション100aに取消論理機構106aが
含まれ、リザベーション・ステーション100bに取消
論理機構106bが含まれる。
【0074】リザベーション・ステーションのINST
RUCTIONフィールドには、分岐ユニット20によ
って実行される分岐命令のタイプを示すコード(シーケ
ンサ・ユニット18によって指定される)が格納され
る。
RUCTIONフィールドには、分岐ユニット20によ
って実行される分岐命令のタイプを示すコード(シーケ
ンサ・ユニット18によって指定される)が格納され
る。
【0075】リザベーション・ステーションのROBT
AGフィールドには、リザベーション・ステーションの
それぞれの命令がシーケンサ・ユニット18によってデ
ィスパッチされる瞬間にDISPATCH_ROBTA
G信号(順序変更バッファ76から)によって示され
る、リザベーション・ステーションのそれぞれの命令に
割り振られた順序変更バッファ・エントリの表示が格納
される。GRBAPフィールドには、リザベーション・
ステーションのそれぞれの命令がシーケンサ・ユニット
18によってディスパッチされる瞬間に(名前変更バッ
ファ34からの)DISPATCH_GRBAP(ディ
スパッチGPR名前変更バッファ割振りポインタ)信号
によって示される、割振りポインタ80'(図6)の状
態の表示が格納される。BBIDフィールドには、リザ
ベーション・ステーションのそれぞれの命令がシーケン
サ・ユニット18によってディスパッチされる瞬間にD
ISPATCH_BBID信号(BBCL84から)に
よって示される、それぞれの命令のBBIDが格納され
る。
AGフィールドには、リザベーション・ステーションの
それぞれの命令がシーケンサ・ユニット18によってデ
ィスパッチされる瞬間にDISPATCH_ROBTA
G信号(順序変更バッファ76から)によって示され
る、リザベーション・ステーションのそれぞれの命令に
割り振られた順序変更バッファ・エントリの表示が格納
される。GRBAPフィールドには、リザベーション・
ステーションのそれぞれの命令がシーケンサ・ユニット
18によってディスパッチされる瞬間に(名前変更バッ
ファ34からの)DISPATCH_GRBAP(ディ
スパッチGPR名前変更バッファ割振りポインタ)信号
によって示される、割振りポインタ80'(図6)の状
態の表示が格納される。BBIDフィールドには、リザ
ベーション・ステーションのそれぞれの命令がシーケン
サ・ユニット18によってディスパッチされる瞬間にD
ISPATCH_BBID信号(BBCL84から)に
よって示される、それぞれの命令のBBIDが格納され
る。
【0076】図8を参照すると、リザベーション・ステ
ーションは、分岐命令がシーケンサ・ユニット18から
ディスパッチされた時にその分岐条件情報(すなわち、
その命令の分岐条件の実際の状態)が入手不能である分
岐命令のそれぞれに関する情報を一時的に記憶する。分
岐条件情報が、実行ユニットである22、24、26、
28、30から(シーケンサ・ユニット18を介して)
入手可能になるのに応答して、リザベーション・ステー
ションは、その分岐条件情報を入力し、そのCONDI
TIONフィールドに格納する。適当な瞬間に、リザベ
ーション・ステーションは、その分岐条件情報をCON
DITIONフィールドから(INSTRUCTION
フィールドからのコードと共に)マルチプレクサ102
を介して実行論理機構104へ転送する。
ーションは、分岐命令がシーケンサ・ユニット18から
ディスパッチされた時にその分岐条件情報(すなわち、
その命令の分岐条件の実際の状態)が入手不能である分
岐命令のそれぞれに関する情報を一時的に記憶する。分
岐条件情報が、実行ユニットである22、24、26、
28、30から(シーケンサ・ユニット18を介して)
入手可能になるのに応答して、リザベーション・ステー
ションは、その分岐条件情報を入力し、そのCONDI
TIONフィールドに格納する。適当な瞬間に、リザベ
ーション・ステーションは、その分岐条件情報をCON
DITIONフィールドから(INSTRUCTION
フィールドからのコードと共に)マルチプレクサ102
を介して実行論理機構104へ転送する。
【0077】特定のリザベーション・ステーションから
入力された分岐条件情報とコードに応答して、実行論理
機構104は、特定のリザベーション・ステーションの
それぞれの分岐条件の実際の状態が予測された状態と異
なるかどうかを判定する。予測された状態が誤りである
ことに応答して、実行論理機構104はCORRECT
ION信号を出力する。さらに、予測された状態が誤り
であることに応答して、マルチプレクサ102が、
(1)BRANCH_ROBTAG信号として、特定の
リザベーション・ステーションのそれぞれのROBTA
Gフィールドからの情報を出力し、(2)BRANCH
_GRBAP(分岐GPR名前変更バッファ割振りポイ
ンタ)信号として、特定のリザベーション・ステーショ
ンのそれぞれのGRBAPフィールドからの情報を出力
し、(3)BRANCH_BBID信号として、特定の
リザベーション・ステーションのそれぞれのBBIDフ
ィールドからの情報を出力する。
入力された分岐条件情報とコードに応答して、実行論理
機構104は、特定のリザベーション・ステーションの
それぞれの分岐条件の実際の状態が予測された状態と異
なるかどうかを判定する。予測された状態が誤りである
ことに応答して、実行論理機構104はCORRECT
ION信号を出力する。さらに、予測された状態が誤り
であることに応答して、マルチプレクサ102が、
(1)BRANCH_ROBTAG信号として、特定の
リザベーション・ステーションのそれぞれのROBTA
Gフィールドからの情報を出力し、(2)BRANCH
_GRBAP(分岐GPR名前変更バッファ割振りポイ
ンタ)信号として、特定のリザベーション・ステーショ
ンのそれぞれのGRBAPフィールドからの情報を出力
し、(3)BRANCH_BBID信号として、特定の
リザベーション・ステーションのそれぞれのBBIDフ
ィールドからの情報を出力する。
【0078】シーケンサ・ユニット18がリザベーショ
ン・ステーションに命令をディスパッチするのに応答し
て、そのリザベーション・ステーションのVALIDフ
ィールドが論理1にセットされる。好ましい実施例の重
要な態様では、取消論理機構106aおよび106b
が、シーケンサ・ユニット18からCANCEL_BB
ID信号を入力する。CANCEL_BBID信号に応
答して、取消論理機構106aは、取り消されるBBI
Dとリザベーション・ステーション100aに格納され
たBBIDを比較する。取り消されるBBIDとリザベ
ーション・ステーション100aに格納されたBBID
が一致する場合、取消論理機構106aは、リザベーシ
ョン・ステーション100aのVALIDフィールドを
論理0にクリアし、これによって、そのリザベーション
・ステーションのそれぞれの命令の実行を取り消す。同
様に、取り消されるBBIDがリザベーション・ステー
ション100bに格納されたBBIDと一致する場合、
取消論理機構106bが、リザベーション・ステーショ
ン100bのVALIDフィールドを論理0にクリア
し、これによって、そのリザベーション・ステーション
のそれぞれの命令の実行を取り消す。
ン・ステーションに命令をディスパッチするのに応答し
て、そのリザベーション・ステーションのVALIDフ
ィールドが論理1にセットされる。好ましい実施例の重
要な態様では、取消論理機構106aおよび106b
が、シーケンサ・ユニット18からCANCEL_BB
ID信号を入力する。CANCEL_BBID信号に応
答して、取消論理機構106aは、取り消されるBBI
Dとリザベーション・ステーション100aに格納され
たBBIDを比較する。取り消されるBBIDとリザベ
ーション・ステーション100aに格納されたBBID
が一致する場合、取消論理機構106aは、リザベーシ
ョン・ステーション100aのVALIDフィールドを
論理0にクリアし、これによって、そのリザベーション
・ステーションのそれぞれの命令の実行を取り消す。同
様に、取り消されるBBIDがリザベーション・ステー
ション100bに格納されたBBIDと一致する場合、
取消論理機構106bが、リザベーション・ステーショ
ン100bのVALIDフィールドを論理0にクリア
し、これによって、そのリザベーション・ステーション
のそれぞれの命令の実行を取り消す。
【0079】図9は、シーケンサ・ユニット18(図
4)のBBCL84のブロック図である。基本ブロック
割振りポインタ(以下、BBAPと呼称する)レジスタ
が、基本ブロック番号を記憶し、記憶した基本ブロック
番号をDISPATCH_BBID信号として出力す
る。ディスパッチ論理機構74からのDISPATCH
ED_A_BRANCH信号に応答して、BBCL84
が、BBAPに記憶された基本ブロック番号を増分す
る。分岐ユニット20からのCORRECTION信号
に応答して、BBCL84は、分岐ユニット20からB
RANCH_BBID信号を入力し、BRANCH_B
BID信号によって示される基本ブロック番号を増分
し、この増分された基本ブロック番号を、BBAPに前
に格納されていた基本ブロック番号の代わりにBBAP
に格納する。
4)のBBCL84のブロック図である。基本ブロック
割振りポインタ(以下、BBAPと呼称する)レジスタ
が、基本ブロック番号を記憶し、記憶した基本ブロック
番号をDISPATCH_BBID信号として出力す
る。ディスパッチ論理機構74からのDISPATCH
ED_A_BRANCH信号に応答して、BBCL84
が、BBAPに記憶された基本ブロック番号を増分す
る。分岐ユニット20からのCORRECTION信号
に応答して、BBCL84は、分岐ユニット20からB
RANCH_BBID信号を入力し、BRANCH_B
BID信号によって示される基本ブロック番号を増分
し、この増分された基本ブロック番号を、BBAPに前
に格納されていた基本ブロック番号の代わりにBBAP
に格納する。
【0080】好ましい実施例では、基本ブロック番号
が、当初は0であり、その後、順次基本ブロック番号1
ないし3が続いた後に、再び基本ブロック番号0に戻
る。また、好ましい実施例では、プロセッサ10が、単
一のサイクルの間に4つまでの命令をディスパッチする
ことができる。プロセッサ10が特定のサイクル中に分
岐命令をディスパッチする場合、ディスパッチされる分
岐命令は、その特定のサイクル中にディスパッチされる
最後の命令になることに留意されたい。したがって、そ
の特定のサイクルに関して、BBCL84は、すべての
命令がディスパッチされるまで、BBAPに格納された
基本ブロック番号を(ディスパッチ論理機構74からの
DISPATCHED_A_BRANCH信号に応答し
て)増分しない。
が、当初は0であり、その後、順次基本ブロック番号1
ないし3が続いた後に、再び基本ブロック番号0に戻
る。また、好ましい実施例では、プロセッサ10が、単
一のサイクルの間に4つまでの命令をディスパッチする
ことができる。プロセッサ10が特定のサイクル中に分
岐命令をディスパッチする場合、ディスパッチされる分
岐命令は、その特定のサイクル中にディスパッチされる
最後の命令になることに留意されたい。したがって、そ
の特定のサイクルに関して、BBCL84は、すべての
命令がディスパッチされるまで、BBAPに格納された
基本ブロック番号を(ディスパッチ論理機構74からの
DISPATCHED_A_BRANCH信号に応答し
て)増分しない。
【0081】さらに、分岐ユニット20からのCORR
ECTION信号に応答して、BBCL84の基本ブロ
ック取消論理機構が、CANCEL_BBID信号を出
力する。CANCEL_BBID信号を介して、BBC
L84は、プロセッサ10によって取り消される1つま
たは複数のBBIDを示す。CANCEL_BBID信
号を介して、基本ブロック取消論理機構は、取り消され
るBBIDが、BRANCH_BBID信号によって示
される基本ブロック番号に続き、BBCL84が分岐ユ
ニット20からCORRECTION信号を受け取る前
のDISPATCH_BBID信号によって示されるブ
ロック番号まで(この番号を含む)のすべてのBBID
であることを示す。
ECTION信号に応答して、BBCL84の基本ブロ
ック取消論理機構が、CANCEL_BBID信号を出
力する。CANCEL_BBID信号を介して、BBC
L84は、プロセッサ10によって取り消される1つま
たは複数のBBIDを示す。CANCEL_BBID信
号を介して、基本ブロック取消論理機構は、取り消され
るBBIDが、BRANCH_BBID信号によって示
される基本ブロック番号に続き、BBCL84が分岐ユ
ニット20からCORRECTION信号を受け取る前
のDISPATCH_BBID信号によって示されるブ
ロック番号まで(この番号を含む)のすべてのBBID
であることを示す。
【0082】代替実施例では、BBCL84が、(1)
条件分岐命令の分岐条件の実際の状態が、その条件分岐
が行われることを示すことに応答するか、(2)プロセ
ッサ10が条件分岐命令の分岐条件の状態を予測するこ
とに応答するかのいずれかに限って、BBAPに格納さ
れた基本ブロック番号を増分する。条件分岐は、その条
件分岐命令の後に、プロセッサ10によって処理される
次の命令が、命令のプログラムされたシーケンス内でそ
の条件分岐命令の直後ではない場合に、実行されるとみ
なされる。したがって、分岐命令は、「プログラム・フ
ローを変更する」命令である。
条件分岐命令の分岐条件の実際の状態が、その条件分岐
が行われることを示すことに応答するか、(2)プロセ
ッサ10が条件分岐命令の分岐条件の状態を予測するこ
とに応答するかのいずれかに限って、BBAPに格納さ
れた基本ブロック番号を増分する。条件分岐は、その条
件分岐命令の後に、プロセッサ10によって処理される
次の命令が、命令のプログラムされたシーケンス内でそ
の条件分岐命令の直後ではない場合に、実行されるとみ
なされる。したがって、分岐命令は、「プログラム・フ
ローを変更する」命令である。
【0083】図10は、シーケンサ・ユニット18(図
4)の順序変更バッファ76のブロック図である。順序
変更バッファ割振りポインタ(ROBAP)レジスタ
に、割振りポインタ73(図5)によって指される順序
変更バッファ・エントリ番号が格納される。
4)の順序変更バッファ76のブロック図である。順序
変更バッファ割振りポインタ(ROBAP)レジスタ
に、割振りポインタ73(図5)によって指される順序
変更バッファ・エントリ番号が格納される。
【0084】特定のサイクルの間にディスパッチされる
特定の命令に関して、INSTRUCTION_DIS
PATCH_POSITION(命令ディスパッチ位
置)信号が、特定の命令がその特定のサイクル中にディ
スパッチされる第1、第2、第3または第4の命令のう
ちのどれであるかを示す。たとえば、特定の命令が特定
のサイクル中にディスパッチされる第1の命令である場
合、INSTRUCTION_DISPATCH_PO
SITION信号は、数0を示す。同様に、特定の命令
が特定のサイクル中にディスパッチされる第2の命令で
ある場合、INSTRUCTION_DISPATCH
_POSITION信号は、数1を示す。また、特定の
命令が特定のサイクル中にディスパッチされる第3の命
令である場合、INSTRUCTION_DISPAT
CH_POSITION信号は、数2を示す。最後に、
特定の命令が特定のサイクル中にディスパッチされる第
4の命令である場合、INSTRUCTION_DIS
PATCH_POSITION信号は、数3を示す。
特定の命令に関して、INSTRUCTION_DIS
PATCH_POSITION(命令ディスパッチ位
置)信号が、特定の命令がその特定のサイクル中にディ
スパッチされる第1、第2、第3または第4の命令のう
ちのどれであるかを示す。たとえば、特定の命令が特定
のサイクル中にディスパッチされる第1の命令である場
合、INSTRUCTION_DISPATCH_PO
SITION信号は、数0を示す。同様に、特定の命令
が特定のサイクル中にディスパッチされる第2の命令で
ある場合、INSTRUCTION_DISPATCH
_POSITION信号は、数1を示す。また、特定の
命令が特定のサイクル中にディスパッチされる第3の命
令である場合、INSTRUCTION_DISPAT
CH_POSITION信号は、数2を示す。最後に、
特定の命令が特定のサイクル中にディスパッチされる第
4の命令である場合、INSTRUCTION_DIS
PATCH_POSITION信号は、数3を示す。
【0085】特定のサイクル中にディスパッチされる特
定の命令に関して、順序変更バッファ76は、(1)I
NSTRUCTION_DISPATCH_POSIT
ION信号によって示された数と、(2)ROBAPに
格納された順序変更バッファ・エントリ番号との和を計
算することによって、それぞれのエントリ番号を計算す
る。図5に関連して上で示した好ましい実施例では、計
算された和が数15以下の場合に、それぞれのエントリ
番号は計算された和と等しい。これに対して、計算され
た和が数15を超える場合には、それぞれのエントリ番
号は、和から16を引いた値と等しい。特定のサイクル
中にディスパッチされる特定の命令に関して、順序変更
バッファ76は、特定の命令のそれぞれのエントリ番号
を、DISPATCH_ROBTAG信号として出力す
る。
定の命令に関して、順序変更バッファ76は、(1)I
NSTRUCTION_DISPATCH_POSIT
ION信号によって示された数と、(2)ROBAPに
格納された順序変更バッファ・エントリ番号との和を計
算することによって、それぞれのエントリ番号を計算す
る。図5に関連して上で示した好ましい実施例では、計
算された和が数15以下の場合に、それぞれのエントリ
番号は計算された和と等しい。これに対して、計算され
た和が数15を超える場合には、それぞれのエントリ番
号は、和から16を引いた値と等しい。特定のサイクル
中にディスパッチされる特定の命令に関して、順序変更
バッファ76は、特定の命令のそれぞれのエントリ番号
を、DISPATCH_ROBTAG信号として出力す
る。
【0086】#_OF_ROB_ALLOCATED
(割振り済み順序変更バッファ数)信号は、プロセッサ
10の特定のサイクル注意割り振られた順序変更バッフ
ァ・エントリの個数を示す。順序変更バッファ76は、
ROBAPに格納された順序変更バッファ・エントリ番
号を、#_OF_ROB_ALLOCATED信号によ
って示される数だけ増分する。その特定のサイクルの末
尾に、順序変更バッファ76は、以前に格納されていた
ROBAPの順序変更バッファ・エントリ番号の代わり
に、この増分されたROBAP内の順序変更バッファ・
エントリ番号を格納する。
(割振り済み順序変更バッファ数)信号は、プロセッサ
10の特定のサイクル注意割り振られた順序変更バッフ
ァ・エントリの個数を示す。順序変更バッファ76は、
ROBAPに格納された順序変更バッファ・エントリ番
号を、#_OF_ROB_ALLOCATED信号によ
って示される数だけ増分する。その特定のサイクルの末
尾に、順序変更バッファ76は、以前に格納されていた
ROBAPの順序変更バッファ・エントリ番号の代わり
に、この増分されたROBAP内の順序変更バッファ・
エントリ番号を格納する。
【0087】分岐ユニット20からのCORRECTI
ON信号に応答して、順序変更バッファ76は、分岐ユ
ニット20からBRANCH_ROBTAG信号を入力
し、BRANCH_ROBTAG信号によって示された
順序変更バッファ・エントリ番号を増分し、この増分さ
れた順序変更バッファ・エントリ番号を、以前に格納さ
れていたROBAPの順序変更バッファ・エントリ番号
の代わりに、ROBAP内の新しい順序変更バッファ・
エントリ番号として格納する。したがって、好ましい実
施例の重要な態様では、プロセッサ10が、分岐命令の
分岐条件が誤予測であることの判定に応答して、正しい
命令のシーケンスを処理する。重要なことに、正しい命
令のシーケンスを処理する際に、プロセッサ10は、新
しい順序変更バッファ・エントリ番号に以前に格納され
ていた情報を使用せず、読み取らず、これに頼らない。
こうして、プロセッサ10は、新しい順序変更バッファ
・エントリ番号に以前に格納されていた情報から独立
に、分岐命令の完了の前であっても、新しい順序変更バ
ッファ・エントリ番号を正しい命令のシーケンスのうち
の1つと関連付け可能になるように、正しい命令のシー
ケンスを処理する。
ON信号に応答して、順序変更バッファ76は、分岐ユ
ニット20からBRANCH_ROBTAG信号を入力
し、BRANCH_ROBTAG信号によって示された
順序変更バッファ・エントリ番号を増分し、この増分さ
れた順序変更バッファ・エントリ番号を、以前に格納さ
れていたROBAPの順序変更バッファ・エントリ番号
の代わりに、ROBAP内の新しい順序変更バッファ・
エントリ番号として格納する。したがって、好ましい実
施例の重要な態様では、プロセッサ10が、分岐命令の
分岐条件が誤予測であることの判定に応答して、正しい
命令のシーケンスを処理する。重要なことに、正しい命
令のシーケンスを処理する際に、プロセッサ10は、新
しい順序変更バッファ・エントリ番号に以前に格納され
ていた情報を使用せず、読み取らず、これに頼らない。
こうして、プロセッサ10は、新しい順序変更バッファ
・エントリ番号に以前に格納されていた情報から独立
に、分岐命令の完了の前であっても、新しい順序変更バ
ッファ・エントリ番号を正しい命令のシーケンスのうち
の1つと関連付け可能になるように、正しい命令のシー
ケンスを処理する。
【0088】図11は、名前変更バッファ34のブロッ
ク図である。名前変更バッファ34は、分岐ユニット2
0からCORRECTION信号とBRANCH_GR
BAP信号を入力する。GPR名前変更バッファ割振り
ポインタ(GRBAP)レジスタに、割振りポインタ8
0'(図6)によって指される名前変更バッファ番号が
格納される。
ク図である。名前変更バッファ34は、分岐ユニット2
0からCORRECTION信号とBRANCH_GR
BAP信号を入力する。GPR名前変更バッファ割振り
ポインタ(GRBAP)レジスタに、割振りポインタ8
0'(図6)によって指される名前変更バッファ番号が
格納される。
【0089】#_OF_GRB_ALLOCATED
(割振り済みGPR名前変更バッファ数)信号は、プロ
セッサ10の特定のサイクル中に割り振られたGPR名
前変更バッファの個数を示す。名前変更バッファ34
は、GRBAPに格納された名前変更バッファ番号を、
#_OF_GRB_ALLOCATEDによって示され
る数だけ増分し、この増分された名前変更バッファ番号
を、DISPATCH_GRBAP信号として出力す
る。この特定のサイクルの末尾に、名前変更バッファ3
4は、以前に格納されていたGRBAPの名前変更バッ
ファ番号の代わりに、GRBAP内にこの増分された名
前変更バッファ番号を格納する。
(割振り済みGPR名前変更バッファ数)信号は、プロ
セッサ10の特定のサイクル中に割り振られたGPR名
前変更バッファの個数を示す。名前変更バッファ34
は、GRBAPに格納された名前変更バッファ番号を、
#_OF_GRB_ALLOCATEDによって示され
る数だけ増分し、この増分された名前変更バッファ番号
を、DISPATCH_GRBAP信号として出力す
る。この特定のサイクルの末尾に、名前変更バッファ3
4は、以前に格納されていたGRBAPの名前変更バッ
ファ番号の代わりに、GRBAP内にこの増分された名
前変更バッファ番号を格納する。
【0090】分岐ユニット20からのCORRECTI
ON信号に応答して、名前変更バッファ34は、分岐ユ
ニット20からBRANCH_GRBAP信号を入力
し、BRANCH_GRBAP信号によって示された名
前変更バッファ番号を増分し、増分された名前変更バッ
ファ番号を、前に格納されていたGRBAPの名前変更
バッファ番号の代わりに、新しい名前変更バッファ番号
としてGRBAPに格納する。したがって、好ましい実
施例の重要な態様では、プロセッサ10が、分岐命令の
分岐条件が誤予測されたことの判定に応答して、正しい
命令のシーケンスを処理する。重要なことに、正しい命
令のシーケンスを処理する際に、プロセッサ10は、新
しい名前変更バッファ番号に以前に格納されていた情報
を使用せず、読み取らず、これに頼らない。こうして、
プロセッサ10は、新しい名前変更バッファ番号に以前
に格納されていた情報から独立に、分岐命令の完了の前
であっても、新しい名前変更バッファ番号を命令の正し
いシーケンスのうちの1つに関連付けられるように、正
しい命令のシーケンスを処理する。
ON信号に応答して、名前変更バッファ34は、分岐ユ
ニット20からBRANCH_GRBAP信号を入力
し、BRANCH_GRBAP信号によって示された名
前変更バッファ番号を増分し、増分された名前変更バッ
ファ番号を、前に格納されていたGRBAPの名前変更
バッファ番号の代わりに、新しい名前変更バッファ番号
としてGRBAPに格納する。したがって、好ましい実
施例の重要な態様では、プロセッサ10が、分岐命令の
分岐条件が誤予測されたことの判定に応答して、正しい
命令のシーケンスを処理する。重要なことに、正しい命
令のシーケンスを処理する際に、プロセッサ10は、新
しい名前変更バッファ番号に以前に格納されていた情報
を使用せず、読み取らず、これに頼らない。こうして、
プロセッサ10は、新しい名前変更バッファ番号に以前
に格納されていた情報から独立に、分岐命令の完了の前
であっても、新しい名前変更バッファ番号を命令の正し
いシーケンスのうちの1つに関連付けられるように、正
しい命令のシーケンスを処理する。
【0091】図3に、図2および図3の例に関するプロ
セッサ10のさまざまなサイクルの間のROBAP、G
RBAP、BBAP、ROBTAG、GRBAPおよび
BBIDの状態を示す。図3からわかるように、分岐エ
ントリAには、BRN1が含まれ、分岐エントリBに
は、BRN2とBRN3が含まれる。図3では、ROB
TAG、GRBAPおよびBBIDのうちの特定の1つ
に関連する行や、プロセッサ10の特定のサイクルに関
連する列に「−」が示されている場合、ROBTAG、
GRBAPおよびBBIDのうちのその特定の1つが、
その特定のサイクルの間無効である。
セッサ10のさまざまなサイクルの間のROBAP、G
RBAP、BBAP、ROBTAG、GRBAPおよび
BBIDの状態を示す。図3からわかるように、分岐エ
ントリAには、BRN1が含まれ、分岐エントリBに
は、BRN2とBRN3が含まれる。図3では、ROB
TAG、GRBAPおよびBBIDのうちの特定の1つ
に関連する行や、プロセッサ10の特定のサイクルに関
連する列に「−」が示されている場合、ROBTAG、
GRBAPおよびBBIDのうちのその特定の1つが、
その特定のサイクルの間無効である。
【0092】まとめとして、本発明の構成に関して以下
の事項を開示する。
の事項を開示する。
【0093】(1)複数の分岐命令に応答して、前記分
岐命令の実行の前に命令を処理するステップと、前記分
岐命令のうちのいずれかの実行に応答して、前記実行さ
れる分岐命令の完了の前に前記命令の前記処理を取り消
すステップとを含む、処理システムを動作させる方法。 (2)前記取り消すステップが、前記命令及び、その後
の前記実行される分岐命令の実行の前に処理されるすべ
ての命令とを含む少なくとも1つの基本ブロックを取り
消すステップを含むことを特徴とする、上記(1)の方
法。 (3)さらに、それぞれの分岐命令に応答して処理され
る、次の分岐命令の前のすべての命令を含むように、前
記基本ブロックのそれぞれを形成するステップを含む、
上記(2)の方法。 (4)前記実行される分岐命令と前記基本ブロックの取
消とに応答して、前記基本ブロックに属する追加命令を
処理するステップをさらに含む、上記(2)の方法。 (5)前記追加命令を処理する前記ステップが、前記実
行される分岐命令の完了の前に前記追加命令を処理する
ステップを含むことを特徴とする、上記(4)の方法。 (6)前記取り消すステップが、前記分岐命令のうちの
いずれをも完了しないうちに、前記命令の前記処理を取
り消すステップを含むことを特徴とする、上記(1)の
方法。 (7)さらに、第1分岐命令に応答して、前記第1分岐
命令の実行の前に第1命令を処理するステップを含む、
上記(1)の方法。 (8)前記命令を処理する前記ステップが、前記第1分
岐命令と第2分岐命令とに応答して、前記第1および第
2の分岐命令の実行の前に、第2命令を処理するステッ
プを含むことを特徴とする、上記(7)の方法。 (9)前記取り消すステップが、前記第1分岐命令の実
行に応答して、前記第1分岐命令の完了の前に、前記第
2命令の前記処理を取り消すステップを含むことを特徴
とする、上記(8)の方法。 (10)さらに、前記第1分岐命令の実行に応答して、
前記第1分岐命令の完了の前に、前記第1命令の前記処
理を取り消すステップを含む、上記(9)の方法。 (11)前記取り消すステップが、前記第2分岐命令の
実行に応答して、前記第2分岐命令の完了の前に、前記
第2命令の前記処理を取り消すステップを含むことを特
徴とする、上記(8)の方法。 (12)さらに、前記第2分岐命令の実行に応答して、
前記第1分岐命令の完了の前に、前記第2命令の前記処
理を取り消すステップを含むことを特徴とする、上記
(8)の方法。 (13)複数の分岐命令に応答して、前記分岐命令の実
行の前に命令を処理するための回路と、前記処理回路に
結合され、前記分岐命令のうちのいずれかの実行に応答
して、前記実行される分岐命令の完了の前に、前記命令
の前記処理を取り消すための回路とを含む、処理システ
ム。 (14)前記取り消すための回路が、前記命令と、その
後の、前記実行される分岐命令の実行の前に処理される
すべての命令とを含む少なくとも1つの基本ブロックを
取り消すように動作可能であることを特徴とする、上記
(13)のシステム。 (15)さらに、それぞれの分岐命令に応答して処理さ
れる、次の分岐命令の前のすべての命令を含むように、
前記基本ブロックのそれぞれを形成するための回路を含
む、上記(14)のシステム。 (16)前記処理回路が、前記実行される分岐命令と前
記基本ブロックの取消とに応答して、前記基本ブロック
に属する追加命令を処理するように動作可能であること
を特徴とする、上記(14)のシステム。 (17)前記処理回路が、前記実行される分岐命令の完
了の前に前記追加命令を処理するように動作可能である
ことを特徴とする、上記(16)のシステム。 (18)前記取り消すための回路が、前記分岐命令のう
ちのいずれをも完了しないうちに、前記命令の前記処理
を取り消すように動作可能であることを特徴とする、上
記(13)のシステム。 (19)前記処理回路が、第1分岐命令に応答して、前
記第1分岐命令の実行の前に第1命令を処理するように
動作可能であることを特徴とする、上記(13)のシス
テム。 (20)前記処理回路が、前記第1分岐命令と第2分岐
命令とに応答して、前記第1および第2の分岐命令の実
行の前に、第2命令を処理するように動作可能であるこ
とを特徴とする、上記(19)のシステム。 (21)前記取り消すための回路が、前記第1分岐命令
の実行に応答して、前記第1分岐命令の完了の前に、前
記第2命令の前記処理を取り消すように動作可能である
ことを特徴とする、上記(20)のシステム。 (22)前記取り消すための回路が、前記第1分岐命令
の実行に応答して、前記第1分岐命令の完了の前に、前
記第1命令の前記処理を取り消すように動作可能である
ことを特徴とする、上記(21)のシステム。 (23)前記取り消すための回路が、前記第2分岐命令
の実行に応答して、前記第2分岐命令の完了の前に、前
記第2命令の前記処理を取り消すように動作可能である
ことを特徴とする、上記(20)のシステム。 (24)前記取り消すための回路が、前記第2分岐命令
の実行に応答して、前記第1分岐命令の完了の前に、前
記第2命令の前記処理を取り消すように動作可能である
ことを特徴とする、上記(20)のシステム。
岐命令の実行の前に命令を処理するステップと、前記分
岐命令のうちのいずれかの実行に応答して、前記実行さ
れる分岐命令の完了の前に前記命令の前記処理を取り消
すステップとを含む、処理システムを動作させる方法。 (2)前記取り消すステップが、前記命令及び、その後
の前記実行される分岐命令の実行の前に処理されるすべ
ての命令とを含む少なくとも1つの基本ブロックを取り
消すステップを含むことを特徴とする、上記(1)の方
法。 (3)さらに、それぞれの分岐命令に応答して処理され
る、次の分岐命令の前のすべての命令を含むように、前
記基本ブロックのそれぞれを形成するステップを含む、
上記(2)の方法。 (4)前記実行される分岐命令と前記基本ブロックの取
消とに応答して、前記基本ブロックに属する追加命令を
処理するステップをさらに含む、上記(2)の方法。 (5)前記追加命令を処理する前記ステップが、前記実
行される分岐命令の完了の前に前記追加命令を処理する
ステップを含むことを特徴とする、上記(4)の方法。 (6)前記取り消すステップが、前記分岐命令のうちの
いずれをも完了しないうちに、前記命令の前記処理を取
り消すステップを含むことを特徴とする、上記(1)の
方法。 (7)さらに、第1分岐命令に応答して、前記第1分岐
命令の実行の前に第1命令を処理するステップを含む、
上記(1)の方法。 (8)前記命令を処理する前記ステップが、前記第1分
岐命令と第2分岐命令とに応答して、前記第1および第
2の分岐命令の実行の前に、第2命令を処理するステッ
プを含むことを特徴とする、上記(7)の方法。 (9)前記取り消すステップが、前記第1分岐命令の実
行に応答して、前記第1分岐命令の完了の前に、前記第
2命令の前記処理を取り消すステップを含むことを特徴
とする、上記(8)の方法。 (10)さらに、前記第1分岐命令の実行に応答して、
前記第1分岐命令の完了の前に、前記第1命令の前記処
理を取り消すステップを含む、上記(9)の方法。 (11)前記取り消すステップが、前記第2分岐命令の
実行に応答して、前記第2分岐命令の完了の前に、前記
第2命令の前記処理を取り消すステップを含むことを特
徴とする、上記(8)の方法。 (12)さらに、前記第2分岐命令の実行に応答して、
前記第1分岐命令の完了の前に、前記第2命令の前記処
理を取り消すステップを含むことを特徴とする、上記
(8)の方法。 (13)複数の分岐命令に応答して、前記分岐命令の実
行の前に命令を処理するための回路と、前記処理回路に
結合され、前記分岐命令のうちのいずれかの実行に応答
して、前記実行される分岐命令の完了の前に、前記命令
の前記処理を取り消すための回路とを含む、処理システ
ム。 (14)前記取り消すための回路が、前記命令と、その
後の、前記実行される分岐命令の実行の前に処理される
すべての命令とを含む少なくとも1つの基本ブロックを
取り消すように動作可能であることを特徴とする、上記
(13)のシステム。 (15)さらに、それぞれの分岐命令に応答して処理さ
れる、次の分岐命令の前のすべての命令を含むように、
前記基本ブロックのそれぞれを形成するための回路を含
む、上記(14)のシステム。 (16)前記処理回路が、前記実行される分岐命令と前
記基本ブロックの取消とに応答して、前記基本ブロック
に属する追加命令を処理するように動作可能であること
を特徴とする、上記(14)のシステム。 (17)前記処理回路が、前記実行される分岐命令の完
了の前に前記追加命令を処理するように動作可能である
ことを特徴とする、上記(16)のシステム。 (18)前記取り消すための回路が、前記分岐命令のう
ちのいずれをも完了しないうちに、前記命令の前記処理
を取り消すように動作可能であることを特徴とする、上
記(13)のシステム。 (19)前記処理回路が、第1分岐命令に応答して、前
記第1分岐命令の実行の前に第1命令を処理するように
動作可能であることを特徴とする、上記(13)のシス
テム。 (20)前記処理回路が、前記第1分岐命令と第2分岐
命令とに応答して、前記第1および第2の分岐命令の実
行の前に、第2命令を処理するように動作可能であるこ
とを特徴とする、上記(19)のシステム。 (21)前記取り消すための回路が、前記第1分岐命令
の実行に応答して、前記第1分岐命令の完了の前に、前
記第2命令の前記処理を取り消すように動作可能である
ことを特徴とする、上記(20)のシステム。 (22)前記取り消すための回路が、前記第1分岐命令
の実行に応答して、前記第1分岐命令の完了の前に、前
記第1命令の前記処理を取り消すように動作可能である
ことを特徴とする、上記(21)のシステム。 (23)前記取り消すための回路が、前記第2分岐命令
の実行に応答して、前記第2分岐命令の完了の前に、前
記第2命令の前記処理を取り消すように動作可能である
ことを特徴とする、上記(20)のシステム。 (24)前記取り消すための回路が、前記第2分岐命令
の実行に応答して、前記第1分岐命令の完了の前に、前
記第2命令の前記処理を取り消すように動作可能である
ことを特徴とする、上記(20)のシステム。
【0094】
【発明の効果】プロセッサ10がすべてのBBIDを取
り消す(どのBBIDに割り当てられた命令も取り消さ
れる)場合、すべての命令が取り消され、これによって
プロセッサ10がリセットされる。
り消す(どのBBIDに割り当てられた命令も取り消さ
れる)場合、すべての命令が取り消され、これによって
プロセッサ10がリセットされる。
【図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 ROBTAGフィールド 55b ROBTAGフィールド 56a 制御論理機構 56b 制御論理機構 57a BBIDフィールド 57b BBIDフィールド 58a DREGフィールド 58b DREGフィールド 59a VALIDフィールド 59b VALIDフィールド 61a 取消論理機構 61b 取消論理機構 100a リザベーション・ステーション 100b リザベーション・ステーション 102 マルチプレクサ 106a 取消論理機構 106b 取消論理機構 104 実行論理機構
Claims (24)
- 【請求項1】複数の分岐命令に応答して、前記分岐命令
の実行の前に命令を処理するステップと、 前記分岐命令のうちのいずれかの実行に応答して、前記
実行される分岐命令の完了の前に前記命令の前記処理を
取り消すステップとを含む、処理システムを動作させる
方法。 - 【請求項2】前記取り消すステップが、前記命令及び、
その後の前記実行される分岐命令の実行の前に処理され
るすべての命令とを含む少なくとも1つの基本ブロック
を取り消すステップを含むことを特徴とする、請求項1
の方法。 - 【請求項3】さらに、それぞれの分岐命令に応答して処
理される、次の分岐命令の前のすべての命令を含むよう
に、前記基本ブロックのそれぞれを形成するステップを
含む、請求項2の方法。 - 【請求項4】前記実行される分岐命令と前記基本ブロッ
クの取消とに応答して、前記基本ブロックに属する追加
命令を処理するステップをさらに含む、請求項2の方
法。 - 【請求項5】前記追加命令を処理する前記ステップが、
前記実行される分岐命令の完了の前に前記追加命令を処
理するステップを含むことを特徴とする、請求項4の方
法。 - 【請求項6】前記取り消すステップが、前記分岐命令の
うちのいずれをも完了しないうちに、前記命令の前記処
理を取り消すステップを含むことを特徴とする、請求項
1の方法。 - 【請求項7】さらに、第1分岐命令に応答して、前記第
1分岐命令の実行の前に第1命令を処理するステップを
含む、請求項1の方法。 - 【請求項8】前記命令を処理する前記ステップが、前記
第1分岐命令と第2分岐命令とに応答して、前記第1お
よび第2の分岐命令の実行の前に、第2命令を処理する
ステップを含むことを特徴とする、請求項7の方法。 - 【請求項9】前記取り消すステップが、前記第1分岐命
令の実行に応答して、前記第1分岐命令の完了の前に、
前記第2命令の前記処理を取り消すステップを含むこと
を特徴とする、請求項8の方法。 - 【請求項10】さらに、前記第1分岐命令の実行に応答
して、前記第1分岐命令の完了の前に、前記第1命令の
前記処理を取り消すステップを含む、請求項9の方法。 - 【請求項11】前記取り消すステップが、前記第2分岐
命令の実行に応答して、前記第2分岐命令の完了の前
に、前記第2命令の前記処理を取り消すステップを含む
ことを特徴とする、請求項8の方法。 - 【請求項12】さらに、前記第2分岐命令の実行に応答
して、前記第1分岐命令の完了の前に、前記第2命令の
前記処理を取り消すステップを含むことを特徴とする、
請求項8の方法。 - 【請求項13】複数の分岐命令に応答して、前記分岐命
令の実行の前に命令を処理するための回路と、 前記処理回路に結合され、前記分岐命令のうちのいずれ
かの実行に応答して、前記実行される分岐命令の完了の
前に、前記命令の前記処理を取り消すための回路とを含
む、処理システム。 - 【請求項14】前記取り消すための回路が、前記命令
と、その後の、前記実行される分岐命令の実行の前に処
理されるすべての命令とを含む少なくとも1つの基本ブ
ロックを取り消すように動作可能であることを特徴とす
る、請求項13のシステム。 - 【請求項15】さらに、それぞれの分岐命令に応答して
処理される、次の分岐命令の前のすべての命令を含むよ
うに、前記基本ブロックのそれぞれを形成するための回
路を含む、請求項14のシステム。 - 【請求項16】前記処理回路が、前記実行される分岐命
令と前記基本ブロックの取消とに応答して、前記基本ブ
ロックに属する追加命令を処理するように動作可能であ
ることを特徴とする、請求項14のシステム。 - 【請求項17】前記処理回路が、前記実行される分岐命
令の完了の前に前記追加命令を処理するように動作可能
であることを特徴とする、請求項16のシステム。 - 【請求項18】前記取り消すための回路が、前記分岐命
令のうちのいずれをも完了しないうちに、前記命令の前
記処理を取り消すように動作可能であることを特徴とす
る、請求項13のシステム。 - 【請求項19】前記処理回路が、第1分岐命令に応答し
て、前記第1分岐命令の実行の前に第1命令を処理する
ように動作可能であることを特徴とする、請求項13の
システム。 - 【請求項20】前記処理回路が、前記第1分岐命令と第
2分岐命令とに応答して、前記第1および第2の分岐命
令の実行の前に、第2命令を処理するように動作可能で
あることを特徴とする、請求項19のシステム。 - 【請求項21】前記取り消すための回路が、前記第1分
岐命令の実行に応答して、前記第1分岐命令の完了の前
に、前記第2命令の前記処理を取り消すように動作可能
であることを特徴とする、請求項20のシステム。 - 【請求項22】前記取り消すための回路が、前記第1分
岐命令の実行に応答して、前記第1分岐命令の完了の前
に、前記第1命令の前記処理を取り消すように動作可能
であることを特徴とする、請求項21のシステム。 - 【請求項23】前記取り消すための回路が、前記第2分
岐命令の実行に応答して、前記第2分岐命令の完了の前
に、前記第2命令の前記処理を取り消すように動作可能
であることを特徴とする、請求項20のシステム。 - 【請求項24】前記取り消すための回路が、前記第2分
岐命令の実行に応答して、前記第1分岐命令の完了の前
に、前記第2命令の前記処理を取り消すように動作可能
であることを特徴とする、請求項20のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US228249 | 1994-04-15 | ||
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 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07281894A true JPH07281894A (ja) | 1995-10-27 |
JP2839075B2 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)
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 |
US6418478B1 (en) * | 1997-10-30 | 2002-07-09 | Commvault Systems, Inc. | Pipelined high speed data transfer mechanism |
US7581077B2 (en) | 1997-10-30 | 2009-08-25 | Commvault Systems, Inc. | Method and system for transferring data in a storage operation |
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 |
CA2499073C (en) | 2002-09-16 | 2013-07-23 | Commvault Systems, Inc. | Combined stream auxiliary copy system and method |
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 |
WO2005050383A2 (en) | 2003-11-13 | 2005-06-02 | Commvault Systems, Inc. | Combining data streams in 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 |
US9720880B2 (en) | 2013-09-06 | 2017-08-01 | Huawei Technologies Co., Ltd. | System and method for an asynchronous processor with assisted token |
US9898213B2 (en) | 2015-01-23 | 2018-02-20 | Commvault Systems, Inc. | Scalable auxiliary copy processing using media agent resources |
US9904481B2 (en) | 2015-01-23 | 2018-02-27 | Commvault Systems, Inc. | Scalable auxiliary copy processing in a storage management system 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 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04220722A (ja) * | 1990-12-20 | 1992-08-11 | Fujitsu Ltd | パイプライン処理装置 |
JPH0540627A (ja) * | 1990-09-05 | 1993-02-19 | Toshiba Corp | 並列演算処理装置 |
JPH05173785A (ja) * | 1991-12-25 | 1993-07-13 | Koufu Nippon Denki Kk | 命令先取り装置 |
JPH05224927A (ja) * | 1991-11-15 | 1993-09-03 | Matsushita Electric Ind Co Ltd | プロセッサ |
JPH07182165A (ja) * | 1993-09-28 | 1995-07-21 | Mitsubishi Electric Corp | コミット条件付き命令の処理方法およびその装置 |
Family Cites Families (24)
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 |
US5129067A (en) * | 1989-06-06 | 1992-07-07 | Advanced Micro Devices, Inc. | Multiple instruction decoder for minimizing register port requirements |
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 |
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 |
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 |
US5197135A (en) * | 1990-06-26 | 1993-03-23 | International Business Machines Corporation | Memory management for scalable compound instruction set machines with in-memory compounding |
JPH04172533A (ja) * | 1990-11-07 | 1992-06-19 | Toshiba Corp | 電子計算機 |
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 |
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 |
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 |
-
1994
- 1994-04-15 US US08/228,249 patent/US5644779A/en not_active Expired - Fee Related
- 1994-12-21 JP JP6317961A patent/JP2839075B2/ja not_active Expired - Lifetime
-
1995
- 1995-03-21 DE DE69507975T patent/DE69507975T2/de not_active Expired - Fee Related
- 1995-03-21 EP EP95480021A patent/EP0677807B1/en not_active Expired - Lifetime
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0540627A (ja) * | 1990-09-05 | 1993-02-19 | Toshiba Corp | 並列演算処理装置 |
JPH04220722A (ja) * | 1990-12-20 | 1992-08-11 | Fujitsu Ltd | パイプライン処理装置 |
JPH05224927A (ja) * | 1991-11-15 | 1993-09-03 | Matsushita Electric Ind Co Ltd | プロセッサ |
JPH05173785A (ja) * | 1991-12-25 | 1993-07-13 | Koufu Nippon Denki Kk | 命令先取り装置 |
JPH07182165A (ja) * | 1993-09-28 | 1995-07-21 | Mitsubishi Electric Corp | コミット条件付き命令の処理方法およびその装置 |
Also Published As
Publication number | Publication date |
---|---|
DE69507975T2 (de) | 1999-10-07 |
EP0677807A3 (en) | 1996-10-23 |
DE69507975D1 (de) | 1999-04-08 |
JP2839075B2 (ja) | 1998-12-16 |
US5644779A (en) | 1997-07-01 |
EP0677807A2 (en) | 1995-10-18 |
EP0677807B1 (en) | 1999-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH07281894A (ja) | 処理システムおよび動作の方法 | |
US5611063A (en) | Method for executing speculative load instructions in high-performance processors | |
US5535346A (en) | Data processor with future file with parallel update and method of operation | |
US5634103A (en) | Method and system for minimizing branch misprediction penalties within a processor | |
JP3919802B2 (ja) | プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法 | |
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 | |
US6003126A (en) | Special instruction register including allocation field utilized for temporary designation of physical registers as general registers | |
US5548738A (en) | System and method for processing an instruction in a processing system | |
JPH07271583A (ja) | オペレーションの処理システム及び方法 | |
JPH07271585A (ja) | オペレーションの処理システム及び方法 | |
US5875325A (en) | Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history | |
JP3611304B2 (ja) | 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法 | |
US6587941B1 (en) | Processor with improved history file mechanism for restoring processor state after an exception | |
KR100305487B1 (ko) | 특정유형의인스트럭션을동시에처리할수있는방법및데이터프로세싱시스템 | |
US7127591B2 (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 | |
US5841998A (en) | System and method of processing instructions for a processor | |
US5784606A (en) | Method and system in a superscalar data processing system for the efficient handling of exceptions | |
JPH07271582A (ja) | オペレーションの処理システム及び方法 | |
US6266761B1 (en) | Method and system in an information processing system for efficient maintenance of copies of values stored within registers | |
EP0706122A2 (en) | System and method to process multi-cycle operations | |
US5764940A (en) | Processor and method for executing a branch instruction and an associated target instruction utilizing a single instruction fetch | |
JPH10312281A (ja) | 命令を処理する方法及びシステム |