JPH07281893A - 処理システム及び演算方法 - Google Patents

処理システム及び演算方法

Info

Publication number
JPH07281893A
JPH07281893A JP7014216A JP1421695A JPH07281893A JP H07281893 A JPH07281893 A JP H07281893A JP 7014216 A JP7014216 A JP 7014216A JP 1421695 A JP1421695 A JP 1421695A JP H07281893 A JPH07281893 A JP H07281893A
Authority
JP
Japan
Prior art keywords
instruction
branch
execution
response
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP7014216A
Other languages
English (en)
Inventor
Marvin A Denman
マービン・アンセル・デンマン
Artie A Pennington
アーティー・アトウェル・ペニングトン
Seungyoon P Song
ソンヨン・ピーター・ソン
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 JPH07281893A publication Critical patent/JPH07281893A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Abstract

(57)【要約】 【目的】 演算処理システムおよび方法を提供する。 【構成】 分岐命令に応答して第1の命令が処理され、
分岐命令の実行に先立ち記憶場所が第1の命令と関連付
けられる。分岐命令の実行に応答して記憶場所に以前に
記憶された情報とは関係なく第2の命令が処理され、記
憶場所が分岐命令の完了に先立ち第2の命令と関連付け
られる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本願は、一般には情報処理のため
のシステム、特に、演算処理システムおよび処理方法に
関する。
【0002】
【従来の技術】本願は、S. P. Songによる「Processing
System and Method of Operation」と題する米国特許
出願08/228,249号に関連する。
【0003】スーパースカラ処理システムは、同時に複
数の命令を実行するために複数の実行装置を含む。ま
た、推測的分岐をサポートする処理システムもある。つ
まり、処理システムは条件付き分岐命令に応答して、選
択された命令順序が正しい順序であるかどうかを実際に
決定する前に、2つ以上の可能性のある目標命令順序の
うちの選択された1つへ、その処理を推測的に分岐させ
る。
【0004】処理システムが後に推測された分岐が正し
いと決定した場合、処理システムは選択された命令順序
の処理を続ける。反対に処理システムが分岐が誤ってい
ると決定した場合、処理システムは正しい命令の処理を
開始する。典型的な従来の技術によると、このような状
況において、分岐が誤っていると決定した後は処理シス
テムによる正しい命令の処理は遅れる。
【0005】
【発明が解決しようとする課題】典型的な従来技術に比
べて、分岐が誤っていると決定された後の正しい命令の
処理の遅延が少ない、演算処理システムおよび方法が必
要とされる。
【0006】
【課題を解決するための手段】本願の演算処理システム
および方法において、分岐命令に応答して第1の命令が
処理され、分岐命令の実行より前に記憶場所が第1の命
令に関連付けられる。分岐命令の実行に応答して、第2
の命令が以前に記憶場所に記憶された情報とは無関係に
処理され、分岐命令が完了する前に記憶場所が第2の命
令に関連付けられる。
【0007】本発明の技術的な利益は、典型的な従来技
術と比較して、分岐が誤っていると決定された後の処理
システムによる正しい命令の処理の遅延が少ないことで
ある。
【0008】
【実施例】本発明の典型的な実施例およびその利点は、
図1〜11を参照することによりよりよく理解されるで
あろう。図において、同じ構成部分には同じ参照数字が
つけられている。
【0009】図1は、好ましい実施例による情報処理の
ためのプロセッサ・システム10のブロック図である。好
ましい実施例において、プロセッサ10は、単一集積回路
スーパースカラ・マイクロプロセッサである。したがっ
て以下に記述されるように、プロセッサ10は様々な装
置、レジスタ、バッファ、メモリおよび他の構成部分を
含み、これらはすべて集積回路で形成されている。また
好ましい実施例において、プロセッサ10は縮小命令セッ
ト計算(「RISC」)技術に従って動作する。図1に示さ
れるように、システム・バス11がプロセッサ10のバス・
インタフェース装置(「BIU」)12に接続する。BIU12
は、プロセッサ10とシステム・バス11間の情報の転送を
制御する。
【0010】BIU12は、プロセッサ10の命令キャッシュ1
4およびデータ・キャッシュ16に接続する。命令キャッ
シュ14はシーケンサ装置18に命令を出力する。命令キャ
ッシュ14からのこの命令に応答して、シーケンサ装置18
はプロセッサ10の他の実行回路に選択的に命令を出力す
る。
【0011】好ましい実施例において、プロセッサ10の
実行回路はシーケンサ装置18に加えて複数の実行装置を
含む。これらの実行装置は、分岐装置20、固定小数点装
置A(「FXUA」)22、固定小数点装置B(「FXUB」)24、
複合固定小数点装置(「CFXU」)26、ロード/記憶装置
(「LSU」)28、および、浮動小数点装置(「FPU」)30
である。FXUA22、FXUB24、CFXU26およびLSU28は、汎用
アーキテクチャ・レジスタ(「GPR」)32および固定小
数点リネーム・バッファ34からソース・オペランド情報
を入力する。さらにFXUA22およびFXUB24は、キャリ・ビ
ット(「CA」)レジスタ42から「キャリ・ビット」を入
力する。FXUA22、FXUB24、CFXU26およびLSU28は、動作
の結果(宛先オペランド情報)を出力し、固定少数点リ
ネーム・バッファ34の選択されたエントリに記憶する。
またCFXU26は、ソース・オペランド情報および宛先オペ
ランド情報を専用レジスタ(「SPR」)40から入出力す
る。
【0012】FPU30は、浮動小数点アーキテクチャ・レ
ジスタ(「FPR」)36および浮動小数点リネーム・バッ
ファ38からソース・オペランド情報を入力する。FPU30
はその動作の結果(宛先オペランド情報)を出力し、浮
動小数点リネーム・バッファ38の選択されたエントリに
記憶する。
【0013】ロード命令に応答して、LSU28はデータ・
キャッシュ16から情報を入力し、リネーム・バッファ34
および38のいずれかへこの情報をコピーする。この情報
がデータ・キャッシュ16に記憶されていない場合、デー
タ・キャッシュ16は、システム・バス11に接続するシス
テム・メモリ39から(BIU12およびシステム・バス11を
通して)この情報を入力する。さらにデータ・キャッシ
ュ16は、システム・バス11に接続するシステム・メモリ
39へ(BIU12およびシステム・バス11を通して)情報を
出力することができる。記録(ストア)命令に応答して
LSU28は、GPR32およびFPR36のいずれかから情報を入力
し、データ・キャッシュ16にこの情報をコピーする。
【0014】シーケンサ装置18は、GPR32およびFPR36か
ら情報を入出力する。分岐装置20は、シーケンサ装置18
から命令およびプロセッサ10の現在の状態を示す信号を
入力する。この命令および信号に応答して分岐装置20
は、プロセッサ10によって実行される命令順序を記憶し
ている適当なメモリ・アドレスを示す信号を(シーケン
サ装置18に)出力する。分岐装置20からのこの信号に応
答して、シーケンサ装置18は命令キャッシュ14から指定
された命令順序を入力する。命令キャッシュ14に命令順
序が記憶されていない場合、命令キャッシュ14は、シス
テム・バス11に接続するシステム・メモリ39から(BIU1
2およびシステム・バス11を通して)命令を入力する。
【0015】命令キャッシュ14から入力した命令に応答
して、シーケンサ装置18は、実行装置20、22、24、26、
28および30のうちのいずれかに選択的に命令をディスパ
ッチする。各実行装置は、特定のクラスの1つ以上の命
令を実行する。例えば、FXUA22およびFXUB24はソース・
オペランド上に、加算、減算、論理積、論理和および排
他的論理和のような、第1のクラスの固定小数点数学的
動作を実行する。CFXU26はソース・オペランド上に、固
定小数点乗算および除算のような、第2のクラスの固定
小数点動作を実行する。FPU30はソース・オペランド上
に、浮動小数点乗算および除算のような浮動小数点動作
を実行する。
【0016】リネーム・バッファ34の選択された1つの
バッファに情報が記憶されると、この情報は選択された
リネーム・バッファが割り当てられた命令が示すよう
に、記憶場所(例えばGPR32の1つあるいはCAレジスタ4
2)に関連付けられる。リネーム・バッファ34の選択さ
れた1つに記憶された情報は、シーケンサ装置18からの
信号に応答して関連するGPR32の1つ(あるいはCAレジ
スタ42)にコピーされる。シーケンサ装置18は、情報を
生成した命令が「完了する」のに応答して、リネーム・
バッファ34の選択された1つに記憶された情報のこのよ
うなコピーを指示する。このようなコピーは、「ライト
バック(書き戻し)」と呼ばれる。
【0017】情報がリネーム・バッファ38の選択された
1つに記憶されると、この情報はFPR36の1つと関連付
けられる。リネーム・バッファ38の選択された1つに記
憶された情報は、シーケンサ装置18からの信号に応答し
て、FPR36の関連する1つにコピーされる。シーケンサ
装置18は、情報を生成した命令が「完了する」のに応答
して、リネーム・バッファ38の選択された1つに記憶さ
れた情報のコピーを指示する。
【0018】プロセッサ10は、複数の実行装置20、22、
24、26、28、30において同時に複数の命令を処理するこ
とによって高性能を達成する。したがって、各命令は、
行程順序として処理される。各行程は、他の命令の行程
と並行して実行することができる。この技術は「パイプ
ライン化」と呼ばれる。好ましい実施例の重要な点は、
命令が通常6つの行程、すなわち、取出し(フェッ
チ)、デコード、ディスパッチ、実行、完了およびライ
トバックとして処理されることである。
【0019】取出し行程において、シーケンサ装置18は
(命令キャッシュ14からの)命令順序を記憶している1
つ以上のメモリ・アドレスから、選択的に1つ以上の命
令を入力する。この命令順序は、分岐装置20およびシー
ケンサ装置18に関連して上述されている。
【0020】デコード行程において、シーケンサ装置18
は最高4つの取出された命令をデコードする。
【0021】ディスパッチ行程において、シーケンサ装
置18は、ディスパッチされた命令の結果(宛先オペラン
ド情報)のためにリネーム・バッファ・エントリを確保
した後、最高4つのデコードされた命令を、(デコード
行程におけるデコーディングに応答して)選択された、
実行装置20、22、24、26、28および30のうちの1つに選
択的にディスパッチする。ディスパッチ行程において、
オペランド情報は、ディスパッチされた命令のために選
択された実行装置に供給される。プロセッサ10は、プロ
グラムされた順序に命令をディスパッチする。
【0022】実行行程において、実行装置はディスパッ
チされた命令を実行し、その動作の結果(宛先オペラン
ド情報)を出力し、上記のようにリネーム・バッファ34
および38の選択されたエントリに記憶する。この様にプ
ロセッサ10は、プログラムされた順序に関係なく命令を
実行することができる。
【0023】完了行程において、シーケンサ装置18は命
令が「完了した」ことを示す。プロセッサ10は、プログ
ラムされた順序に命令を「完了する」。
【0024】ライトバック行程において、シーケンサ装
置18は、リネーム・バッファ34および38からそれぞれGP
R32およびFPR36への情報のコピーを指示する。シーケン
サ装置18は、選択されたリネーム・バッファに記憶され
た情報のこのようなコピーを指示する。同様に、特定の
命令のライトバック行程において、プロセッサ10は、特
定の命令に応答してそのアーキテクチャ状態を更新す
る。プロセッサ10は各命令の「ライトバック」行程を、
プログラムされた順序で処理する。プロセッサ10は特定
の状況において、命令の完了行程およびライトバック行
程を有益にマージする。
【0025】好ましい実施例において、各命令は、命令
処理の各行程を完了するのに1つの機械サイクルを必要
とする。それでもやはり、(例えば、CFXU26によって実
行される複合固定小数点命令のような)1つ以上のサイ
クルを必要とする命令がある。したがって、先行する命
令の完了に必要な時間が変化するのに応答して、特定の
命令の実行と完了行程の間に様々な遅延が起こることが
ある。
【0026】図2は、好ましい実施例の基本ブロックに
割り当てられた典型的な命令の概念図である。図3は、
プロセッサ10によって処理される図2の命令の各行程の
概念図である。重要なことは、プロセッサ10は推測的分
岐をサポートすることである。
【0027】つまり、条件付き分岐命令に応答してプロ
セッサ10は、選択された命令順序が正しい順序であるか
どうかを実際に決定する前に、2つ以上の可能性のある
目標命令順序のうちの選択された1つに推測的にその処
理を分岐させる。したがって、プロセッサ10は、選択さ
れた命令順序が実際に正しい順序であるかどうかを実際
に決定する前に、そして、分岐装置20が条件付き分岐命
令を実行する前に、選択された命令順序を推測的に処理
する。プロセッサ10は、条件付き分岐命令の分岐条件の
状態を予測して、処理を選択された命令順序に推測的に
分岐させる。プロセッサ10は、分岐条件がプロセッサ10
がまだ実行し終わっていない先行する命令の結果による
場合、状態を予測する。
【0028】プロセッサ10は先行する命令の実行を終了
すると分岐条件の実際の状態を決定し、分岐装置20は条
件付き分岐命令を実行する。実際の状態が予測された状
態と同じである場合、予測された状態は正しいことにな
る。反対に実際の状態が予測された状態と異なる場合、
予測された状態は誤っていることになる。
【0029】予測された状態が正しい場合、選択された
命令順序が正しい順序となり、プロセッサ10はこの選択
された命令順序の処理を続ける。反対に予測された状態
が誤っている場合、選択された命令順序は正しい順序で
はないことになる。このような予測された状態が誤って
いる状況において、プロセッサ10は選択された命令順序
の処理を終了し(または「取り消し(キャンセ
ル)」)、選択された命令順序の処理の結果を逆にたど
って誤った推測から回復し、分岐条件の実際の状態に応
答して正しい命令順序の処理を開始する。
【0030】図2および3の例に示されるように、プロ
セッサ10は2つの命令、乗算(「MUL」)命令および条
件つき分岐1(「BRN1」)命令を、基本ブロック番号
(「BBID」)0に割り当てる。サイクル4間に、分岐エン
トリAにおいて、プロセッサ10はBRN1に応答してその処
理を推測的に分岐させ、処理をBRN1から加算(「AD
D」)命令に分岐させる。プロセッサ10は、ADDおよび条
件つき分岐2(「BRN2」)命令をBBID1に割り当てる。
【0031】サイクル5間に、分岐エントリBにおいて、
プロセッサ10はBRN2に応答してその処理を推測的に分岐
させ、処理をBRN2から除算(「DIV」)命令に推測的に
分岐させ、DIV命令をBBID2に割り当てる。特に、プロセ
ッサ10は、後のサイクル9までBRN1の分岐条件の実際の
状態を決定していなくても、サイクル5間にBRN2に応答
して推測的に処理を分岐させることができる。
【0032】したがって、好ましい実施例の重要な点
は、プロセッサ10は、後まで先行する分岐命令(例えば
BRN1)の分岐条件の実際の状態を決定していなくても、
分岐命令(例えばBRN2)に応答して推測的に処理を分岐
させることができることである。したがって、プロセッ
サ10は、任意の分岐命令の分岐条件の実際の状態を決定
する前に、複数の分岐命令に並列的に応答してその処理
を推測的に分岐させることができる。
【0033】サイクル6間に、プロセッサ10はBRN2を実
行し、BRN2の分岐条件の実際の状態を決定する。図2お
よび3の例において、BRN2の分岐条件の実際の状態は予
測された状態とは異なるので、予測された状態が誤って
いることになる。予測された状態が誤っているので、選
択された命令順序(すなわちプロセッサ10が処理を分岐
させたDIV命令)は正しくないことになる。BRN2の分岐
条件の予測された状態が誤っていると決定されたのに応
答して、サイクル7間に、プロセッサ10はDIV命令の処理
を取り消(「CANCEL」)し、DIV命令処理の結果を逆に
たどることによって誤った推測から回復する。
【0034】したがって有益なことに、プロセッサ10
は、後まで先行の分岐命令(例えばBRN1)の分岐条件の
実際の状態を決定しなくても、分岐命令(例えばBRN2)
の分岐条件の状態の誤った推測から回復することができ
る。
【0035】またサイクル7間に、プロセッサ10はBRN2
の分岐条件の実際の状態に応答して、正しい命令順序の
処理を開始する。つまり、プロセッサ10はシフト(「SH
IFT」)命令および分岐3(「BRN3」)命令を取出す。プ
ロセッサ10は、SHIFTおよびBRN3命令をBBID2に割り当
る。プロセッサ10は、(以前にBBID2に割り当てられ
た)DIV命令を取り消すことに応答してBBID2を再使用す
る。他の実施例においては、プロセッサ10はサイクル4
において、DIV命令を取り出すことと並行してSHIFTおよ
びBRN3命令をあらかじめ取り出しておく。この実施例に
おいて、プロセッサ10は、(サイクル9ではなく)サイ
クル8の間にSHIFTおよびBRN3命令が実行されるように、
(サイクル8ではなく)サイクル7の間にSHIFTおよびBRN
3命令をディスパッチする。
【0036】したがって、好ましい実施例の重要な点
は、プロセッサ10が、予測された状態と異なる分岐条件
の実際の状態に応答して、直ちに正しい命令順序の処理
を開始することができることである。プロセッサ10は、
正しい命令順序の処理を開始するために、分岐命令に先
行するすべての命令の実行を終える必要はない。したが
って、プロセッサ10は、正しい命令順序の処理を開始す
るために分岐命令を「完了する」必要はない。
【0037】例えば図3において、MUL命令の実行はサ
イクル8まで終了しない。それにもかかわらず、プロセ
ッサ10は、先行するMUL命令の実行が終了する前のサイ
クル7において、SHIFTおよびBRN3命令の処理を開始す
る。重要なことは、MUL命令およびDIV命令が共にそれぞ
れサイクル3および5間にCFXU26にディスパッチされたけ
れども、プロセッサ10は、CFXU26内のMUL命令の実行を
取り消すことなく、サイクル7間にCFXU26内のDIV命令の
実行を選択的に取り消すことができるということであ
る。同様にプロセッサ10は、予測された状態と異なる分
岐条件の実際の状態に応答して、付加命令を直ちにCFXU
26にディスパッチすることができる。
【0038】サイクル9間に、プロセッサ10はBRN1を実
行し、BRN1の分岐条件の実際の状態を決定する。図2お
よび3の例において、BRN1の分岐条件の実際の状態は予
測された状態とは異なるので、予測された状態は誤って
いることになる。予測された状態が誤っているので、選
択された命令順序(すなわちプロセッサ10が推測的に処
理を分岐させたADD、BRN2、DIV、SHIFTおよびBRN3命
令)は正しくないことになる。BRN1の分岐条件の予測さ
れた状態が誤っていると決定すること応答して、プロセ
ッサ10はサイクル10間に、ADD、BRN2、SHIFT、およびBR
N3命令の処理を取り消(「CANCEL」)し(DIV命令は、
サイクル7間にすでに取り消されている)、ADD、BRN2、
SHIFTおよびBRN3命令の処理の結果を逆にたどることに
よって誤った推測から回復する。
【0039】またサイクル10間にプロセッサ10は、BRN1
の分岐条件の実際の状態に応答して、正しい命令順序の
処理を開始する。つまり、プロセッサ10は減算(「SU
B」)命令を取出す。プロセッサ10は、SUB命令をBBID1
に割り当てる。プロセッサ10は、(BBID1に以前に割り
当てられた)ADDおよびBRN2命令を取り消し、BBID1を再
使用する。
【0040】図4は、シーケンサ装置18のブロック図で
ある。上記のように、取出し行程においてシーケンサ装
置18は命令キャッシュ14から最高4つの命令を選択的に
入力し、これらの命令を命令バッファ70に記憶する。デ
コード行程において、デコード論理72は、命令バッファ
70から最高4つの取出された命令を入力しデコードす
る。ディスパッチ行程において、ディスパッチ論理74
は、最高4つのデコードされた命令を、実行装置20、2
2、24、26、28および30のうちの(デコード行程におけ
るデコーディングに応答して)選択された1つの装置に
ディスパッチする。
【0041】図5は、好ましい実施例のシーケンサ装置
18のリオーダ・バッファ76の概念図である。図5に示さ
れるように、リオーダ・バッファ76は、それぞれバッフ
ァ番号0〜15をつけられた16個のエントリを持つ。各エ
ントリは、5つの主要なフィールド、すなわち「命令
型」フィールド、「GPR宛先数」フィールド、「FPR宛先
数」フィールド、「終了」フィールドおよび「例外」フ
ィールドを持つ。
【0042】また図4を参照すると、ディスパッチ論理
74が命令を実行装置へディスパッチすると、シーケンサ
装置18は、ディスパッチされた命令をリオーダ・バッフ
ァ76の関連するエントリに割り当てる。シーケンサ装置
18は、リオーダ・バッファ76内のエントリを、先入れ先
出し方式および循環方式でディスパッチされた命令に割
り当てる(あるいは「関連付ける」)。つまりシーケン
サ装置18は、エントリ0、それから順にエントリ1〜15、
そして再びエントリ0を割り当てる。ディスパッチされ
た命令にリオーダ・バッファ76の関連するエントリが割
り当てられると、ディスパッチ論理74はディスパッチさ
れた命令に関する情報を出力し、この情報はリオーダ・
バッファ76の関連するエントリの様々なフィールドおよ
びサブ・フィールドに記憶される。
【0043】例えば、図5のエントリ1において、リオ
ーダ・バッファ76は命令がFXUA22にディスパッチされた
ことを示す。好ましい実施例の他の重要な点は、エント
リ1がさらに、ディスパッチされた命令が1つのGPR宛先
レジスタを持ち(「GPR宛先数」= 1)、FPR宛先レジス
タを持たず(「FPR宛先数」= 0)、まだ終了しておらず
(「終了」= 0)、そして、まだ例外を起こしていない
(「例外」= 0)ことを示していることである。
【0044】実行装置がディスパッチされた命令を実行
すると、実行装置は、リオーダ・バッファ76内の命令に
関連するエントリを変更する。より詳しく述べると、デ
ィスパッチされた命令の実行が終了するのに応答して、
実行装置は、エントリの「終了」フィールドを(「終
了」= 1に)変更する。ディスパッチされた命令の実行の
間に実行装置に例外が起こった場合、実行装置はエント
リの「例外」フィールドを(「例外」= 1に)変更す
る。
【0045】図5には、割当てポインタ73および完了ポ
インタ75が示されている。プロセッサ10は、リオーダ・
バッファ76からの読み書きを制御するためにこれらのポ
インタを維持する。プロセッサ10は、リオーダ・バッフ
ァ・エントリが特定の命令に割り当て(あるいは「関連
付け」)られているかどうかを示すために、割当てポイ
ンタ73を維持する。図5に示されるように、割当てポイ
ンタ73はリオーダ・バッファ・エントリ3を指し、それ
により、リオーダ・バッファ・エントリ3が次に命令に
割当てることができるリオーダ・バッファ・エントリで
あることを示している。
【0046】またプロセッサ10は、(特定の命令に以前
割り当てられたリオーダ・バッファ・エントリに対し
て)特定の命令が以下の条件を満たすかどうかを示すた
めに、完了ポインタ75を維持する。 条件1:(命令がディスパッチされた)実行装置が命令
の実行を終了した。 条件2:命令のどの処理行程においても例外が起こらな
かった。 条件3:以前にディスパッチされた任意の命令が条件1
および条件2を満たす。
【0047】図5に示されるように、完了ポインタ75は
リオーダ・バッファ・エントリ1を指し、それにより、
リオーダ・バッファ・エントリ1が、条件1、2および
3を満たすことができる次のリオーダ・バッファ・エン
トリであることを示している。したがって、「有効な
(valid)」リオーダ・バッファ・エントリは、完了ポ
インタ75によって指されているリオーダ・バッファ・エ
ントリおよび、このエントリに続き割当てポインタ73に
よって指されるリオーダ・バッファ・エントリに先立つ
エントリとして定義することができる。
【0048】再び図4を参照すると、リオーダ・バッフ
ァ76のエントリは、シーケンサ装置18の完了論理80およ
び例外論理82に読まれる。リオーダ・バッファ76の「例
外」フィールドに応答して、例外論理82はディスパッチ
された命令の実行の間に起こった例外を処理する。リオ
ーダ・バッファ76の「終了」フィールドおよび「例外」
フィールドに応答して、完了論理80はディスパッチ論理
74およびリオーダ・バッファ76に信号を出力する。これ
らの信号を通して完了論理80は、命令がプログラムされ
た順序にしたがって命令の「完了」を示す。完了論理80
は、命令が以下の条件を満たす場合、命令が「完了」し
たことを示す。 条件1:(命令がディスパッチされた)実行装置が命令
の実行を終了した(命令が関連するリオーダ・バッファ
76のエントリの「終了」= 1である)。 条件2:命令のどの処理行程においても例外が起こらな
かった(命令が関連するリオーダ・バッファ76のエント
リの「例外」= 0である)。 条件3:以前にディスパッチされた任意の命令が条件1
および条件2を満たす。
【0049】リオーダ・バッファ76の情報に応答して、
ディスパッチ論理74はディスパッチする付加命令の適当
な数を決定する。
【0050】リオーダ・バッファ76は、分岐装置20から
CORRECTION信号およびBRANCH_ROBTAG信号を入力する。C
ORRECTION信号は、以下に図8に関連して記述される。B
RANCH_ROBTAG信号は、以下に図8および10に関連して
記述される。さらに、リオーダ・バッファ76は、実行装
置20、22、24、26、28および30にDISPATCH_ROBTAG信号
を出力する。DISPATCH_ROBTAG信号は、以下に図7、8
および10に関連して記述される。
【0051】(条件つきあるいは他の型の)任意の型の
分岐命令のディスパッチに応答して、ディスパッチ論理
74はDISPATCHED_A_BRANCH信号を出力し、この信号は基
本ブロック制御論理84に入力される。さらに基本ブロッ
ク制御論理84は、分岐装置20からCORRECTION信号および
BRANCH_BBID信号を入力する。BRANCH_BBID信号は、以下
に図8および10に関連して記述される。図4に示され
るように、基本ブロック制御論理84は、DISPATCH_BBID
信号およびCANCEL_BBID信号を実行装置20、22、24、2
6、28および30に出力する。
【0052】図6はリネーム・バッファ34の概念図であ
る。理解しやすくするために、浮動小数点リネーム・バ
ッファ38の動作の例として、固定小数点リネーム・バッ
ファ34の動作のみを以下に記述する。図6に示されるよ
うに、リネーム・バッファ34はそれぞれバッファ番号0
〜11をつけられた12個のリネーム・バッファを含む。シ
ーケンサ装置18は、リネーム・バッファ番号0〜11を先
入れ先出し方式および循環方式で、ディスパッチされた
命令に割り当てる(あるいは「関連付ける」)。つまり
シーケンサ装置18は、リネーム・バッファ番号0、次に
順にリネーム・バッファ番号1〜11、そして再びリネー
ム・バッファ番号0を割り当てる。
【0053】図6を参照すると、リネーム・バッファ
2、3、4、5、6および7が、ディスパッチ論理74(図4)
によってディスパッチされた命令に対する宛先オペラン
ド情報を記憶するために割り当てられている。図6は、
割当てポインタ80、ライトバック・ポインタ82および完
了ポインタ84を示している。プロセッサ10は、リネーム
・バッファ34への読み書きを制御するためにこれらのポ
インタを維持する。プロセッサ10は、リネーム・バッフ
ァが特定の命令に割り当てられているかどうかを指示す
るために、割当てポインタ80を維持する。図6に示され
るように、割当てポインタ80はリネーム・バッファ8を
指し、それにより、リネーム・バッファ8が命令に割り
当てることができる次のリネーム・バッファであること
を示す。
【0054】好ましい実施例の重要な点は、プロセッサ
10がさらに、(以前に特定の命令に割り当てられた)リ
ネーム・バッファが他の命令に再割り当てできるかどう
かを示すために、ライトバック・ポインタ82を維持する
ことである。図6に示されるように、ライトバック・ポ
インタ82はバッファ2を指し、それにより、リネーム・
バッファ2が、プロセッサ10が、(図6のリネーム・バ
ッファの「情報」フィールドに記憶された)宛先オペラ
ンド情報を、(図6のリネーム・バッファの「レジスタ
番号」フィールドに指定される)GPR32の1つにコピー
する、次のリネーム・バッファであることを示す。
【0055】したがって、プロセッサ10は、プロセッサ
10がリネーム・バッファから特定の命令の結果(宛先オ
ペランド情報)をコピーしてアーキテクチャ・レジスタ
に記憶するのに応答して、(既に特定の命令に割り当て
られたリネーム・バッファを越えて)ライトバック・ポ
インタ82を前進させる。この様にプロセッサ10は、アー
キテクチャ・レジスタに特定の命令の結果(宛先オペラ
ンド情報)をコピーするまで、その結果を記憶するため
に割当てリネーム・バッファを予約する。
【0056】またプロセッサ10は、(既に特定の命令に
割り当てられたリネーム・バッファのために)特定の命
令が以下の条件を満たすかどうかを示すための完了ポイ
ンタ84を維持する。 条件1:(命令がディスパッチされた)実行装置が命令
の実行を終了した。 条件2:命令のどの処理行程においても例外が起こらな
かった。 条件3:以前にディスパッチされた任意の命令が条件1
および条件2を満たす。
【0057】図6に示されるように、完了ポインタ84は
リネーム・バッファ2を指し、それにより、リネーム・
バッファ2が、条件1、2および3を満たすことができ
る次のリネーム・バッファであることを示す。好ましい
実施例の重要な点は、プロセッサ10が、命令の結果がリ
ネーム・バッファからコピーされアーキテクチャ・レジ
スタに記憶されたかどうかに関係なく、完了ポインタ84
を維持することである。
【0058】したがって「リネーム・エントリ」は、完
了ポインタ84によって指されたリネーム・バッファと、
このバッファに続き、割当てポインタ80によって指され
るリネーム・バッファより前にあるリネーム・バッファ
として定義することができる。「ライトバック・エント
リ」は、ライトバック・ポインタ82によって指されたリ
ネーム・バッファと、このバッファに続き、完了ポイン
タ84によって指されたリネーム・バッファより前にある
リネーム・バッファとして定義することができる。ライ
トバック・エントリは、例えばアーキテクチャ・レジス
タへの書き込みポートが使用できなかったために、「完
了」しているが、その結果がリネーム・バッファからア
ーキテクチャ・レジスタへコピーされていない命令の結
果を記憶する。
【0059】概念的に、ライトバック・エントリはリネ
ーム・エントリとアーキテクチャ・レジスタの間に位置
する。有益なことに、完了行程においてライトバック・
ポートが使用可能な場合、結果をライトバック・エント
リをとばして直接アーキテクチャ・レジスタに書くこと
ができる。さらに、実行装置が命令を実行して情報に関
連するアーキテクチャ・レジスタを指定する場合には、
プロセッサ10は、リネーム・エントリのようにライトバ
ック・エントリを操作して実行装置に情報を出力する。
【0060】図7は、プロセッサ10のFXUA22のブロック
図である。FXUA22は、包括的に50aおよび50bで示される
予約局(reservation station)を含む。さらにFXUA22
は、包括的に51aおよび51bで示される実行行程(execut
e stage)を含む。同様に、分岐装置20、FXUB24、CFXU2
6、LSU28およびFPU30の各々は、それぞれの予約局およ
び実行行程を持つ。理解しやすくするために、FXUA22の
動作、実行行程および予約局のみを、他の実行装置の動
作、実行行程および予約局の例として記述する。
【0061】各予約局50a、50bは、FXUA22が命令を実行
するために、シーケンサ装置18からディスパッチされた
各命令に対する情報を記憶することができる。各予約局
50a、50bは、リオーダ・バッファ・タグ(「ROBTAG」)
フィールド、宛先レジスタ(「DREG」)フィールド、オ
ペランドAフィールド、オペランドBフィールド、オペコ
ード・フィールド、BBIDフィールドおよび有効フィール
ドを含む。好ましい実施例の重要な点は、予約局50aお
よび50bがそれぞれ取消し論理53aおよび53bをさらに含
むことである。
【0062】予約局はそのROBTAGフィールドに、予約局
の各命令がシーケンサ装置18によってディスパッチされ
た時点で(リオーダ・バッファ76からの)DISPATCH_ROB
TAG信号によって指示される、予約局の各命令に割り当
てられたリオーダ・バッファ・エントリの指示を記憶す
る。
【0063】予約局はそのDREGフィールドで、予約局の
各命令に対する(シーケンサ装置18によって示される)
少なくとも1つの宛先レジスタを識別する。同様に、そ
れぞれのオペランドAおよびオペランドBフィールドにお
いて予約局は、予約局の各命令に対する(GPR32、リネ
ーム・バッファ34、FXUB24、CFXU26あるいはLSU28から
の)ソース・オペランド情報を記憶する。そのオペコー
ド・フィールドにおいて予約局は、予約局の各命令に応
答してFXUA22がソース・オペランド情報上で実行する動
作を示す(シーケンサ装置18によって示される)オペコ
ードを記憶する。
【0064】予約局はそのBBIDフィールドに、予約局の
各命令がシーケンサ装置18によってディスパッチされた
時点で(基本ブロック制御論理84からの)DISPATCH_BBI
D信号によって示される各命令のBBIDを記憶する。
【0065】図7を参照すると、予約局は、命令がシー
ケンサ装置18からディスパッチされた時にソース・オペ
ランド情報が使用可能でない各命令に対する情報を一時
的に記憶する。実行装置からソース・オペランド情報が
使用可能になったことに応答して、予約局は、このソー
ス・オペランド情報を入力し記憶する。適当な時点で、
予約局はこのソース・オペランド情報を実行論理54aに
転送する。
【0066】制御論理56aからの信号に応答して、実行
論理54aは、予約局のオペランドAおよびオペランドBフ
ィールドからソース・オペランド情報を入力し、(予約
局に記憶されたオペコードによって示される)動作の第
1の行程を実行する。さらに、制御論理56aからの信号
に応答して、実行行程51aは、(1)予約局のROBTAGフ
ィールドからROBTAG情報を入力してROBTAGフィールド55
aに記憶し、(2) 予約局のDREGフィールドからDREG情
報を入力してDREGフィールド58aに記憶し、(3) 予約
局のBBIDフィールドからBBID情報を入力してBBIDフィー
ルド57aに記憶する。
【0067】制御論理56bからの信号に応答して、実行
論理54bは実行論理54aから情報を入力し、動作の第2の
行程を実行する。さらに、制御論理56bからの信号に応
答して実行行程51bは、(1)ROBTAGフィールド55aから
ROBTAG情報を入力してROBTAGフィールド55bに記憶し、
(2)DREGフィールド58aからDREG情報を入力してDREG
フィールド58bに記憶し、(3)BBIDフィールド57aから
BBID情報を入力してBBIDフィールド57bに記憶する。予
約局と同様に、実行行程51a、51bはそれぞれ、有効フィ
ィールド59a、bおよび取消し論理61a、bを含む。
【0068】この動作の結果の情報は、実行論理54bか
らリネーム・バッファ34、FXUB24、CFXU26およびLSU28
に出力される。この情報は、リネーム・バッファ34の選
択された1つに記憶される。DREG58bの出力によって識
別される宛先レジスタに応答して、記憶された情報は
(選択されたリネーム・バッファ内で)GPRB32の1つに
関連付けられる。さらに、図5に関連して上述されたよ
うに、FXUA22はROBTAG55bの出力によって識別されるリ
オーダ・バッファ・エントリを更新する。このリオーダ
・バッファ・エントリは、実行論理54bによって実行さ
れた命令に割り当てられている。
【0069】シーケンサ装置18が予約局に命令をディス
パッチするのに応答して、予約局の有効フィールドは論
理1にセットされる。実行行程51aが命令の実行を終了
するのに応答して、有効フィールド59aは論理0にクリア
される。同様に、実行行程51bが命令の実行を終了する
のに応答して、有効フィールド59bは論理0にクリアされ
る。
【0070】好ましい実施例の重要な点は、取消し論理
53a、bおよび61a、bが、シーケンサ装置18からCANCEL_B
BID信号を入力することである。CANCEL_BBID信号を通し
てシーケンサ装置18は、プロセッサ10によって取り消さ
れる1つ以上のBBIDを示すことができる。CANCEL_BBID
信号に応答して取消し論理53aは、取り消されるBBIDと
予約局50aに記憶されているBBIDを比較する。取り消さ
れるBBIDが予約局50aに記憶されたBBIDと一致する場
合、取消し論理53aは予約局50aの有効フィールドを論理
0にクリアし、それにより、この予約局の各命令の実行
を取り消す。
【0071】同様に、取り消されるBBIDが予約局50bに
記憶されたBBIDと一致する場合、取消し論理53bは予約
局50bの有効フィールドを論理0にクリアし、それによ
り、この予約局の各命令の実行を取り消す。また、取り
消されるBBIDが実行行程51aのBBIDフィールド57aに記憶
されたBBIDと一致する場合、取消し論理61aは有効フィ
ールド59aを論理0にクリアし、それにより、実行行程51
aの命令の実行を取り消す。取り消されるBBIDが実行行
程51bのBBIDフィールド57bに記憶されたBBIDと一致する
場合、取消し論理61bは有効フィールド59bを論理0にク
リアし、それにより実行行程51bの命令の実行を取り消
す。
【0072】したがってプロセッサ10は、特定のBBIDに
割り当てられた命令の実行を選択的に取り消すことがで
きる。命令が1つ以上の実行装置にディスパッチされて
いても、これは可能である。さらに各実行装置は、実行
装置の予約局内の命令を選択的に取り消し、各命令の割
り当てられたBBIDに従って、各行程を互いに無関係に実
行することができる。
【0073】図8は分岐装置20のブロック図である。分
岐装置20は、100aおよび100bで包括的に示される予約局
を含む。さらに分岐装置20は、102で包括的に示される
マルチプレクサを含む。また、分岐装置20は実行論理10
4を含む。
【0074】各予約局100a、bはそれぞれ、命令フィー
ルド、条件フィールド、ROBTAGフィールド、GPRリネー
ム・バッファ割当てポインタ(「GRBAP」)フィール
ド、BBIDフィールドおよび有効フィールドを含む。さら
に、好ましい実施例の重要な点は、予約局100aおよび10
0bがそれぞれ取消し論理106aおよび106bを含むことであ
る。
【0075】予約局はその命令フィールドに、分岐装置
20によって実行される分岐命令の型を示す(シーケンサ
装置18によって指定される)コードを記憶する。
【0076】予約局はそのROBTAGフィールドに、予約局
の各命令がシーケンサ装置18によってディスパッチされ
た時点で(リオーダ・バッファ76からの)DISPATCH_ROB
TAG信号によって指定される、予約局の各命令に割り当
てられたリオーダ・バッファ・エントリの指定を記憶す
る。予約局はそのGRBAPフィールドに、予約局の各命令
がシーケンサ装置18によってディスパッチされた時点で
(リネーム・バッファ34からの)DISPATCH_GRBAP信号に
よって示される、割当てポインタ80の状態の指示を記憶
する(図6)。予約局はそのBBIDフィールドに、予約局
の各命令がシーケンサ装置18によってディスパッチされ
た時点で(基本ブロック制御論理84からの)DISPATCH_B
BID信号によって示される、各命令のBBIDを記憶する。
【0077】図8を参照すると、予約局は、その分岐条
件情報(すなわち命令の分岐条件の実際の状態)が、分
岐命令がシーケンサ装置18からディスパッチされた時点
では使用可能でない分岐命令のための情報を一時的に記
憶する。分岐条件情報が実行装置22、24、26、28および
30から(シーケンサ装置18を通して)使用可能になった
ことに応答して、予約局は、その条件フィールドにこの
分岐条件情報を入力し記憶する。適当な時点で、予約局
は、その条件フィールドから(その命令フィールドから
のコードと共に)この分岐条件情報をマルチプレクサ10
2を通して実行論理104に転送する。
【0078】特定の予約局から入力された分岐条件情報
およびコードに応答して、実行論理104は、特定の予約
局の各分岐条件の実際の状態が予測された状態と異なる
かどうかを決定する。予測された状態が誤っているのに
応答して、実行論理104は、CORRECTION信号を出力す
る。さらに、予測された状態が誤っているのに応答し
て、マルチプレクサ102は、(1)特定の予約局の各ROB
TAGフィールドからの情報をBRANCH_ROBTAG信号として出
力し、(2)特定の予約局の各GRBAPフィールドからの
情報をBRANCH_GRBAP信号として出力し、(3)特定の予
約局の各BBIDフィールドからの情報をBRANCH_BBIDとし
て出力する。
【0079】シーケンサ装置18が命令を予約局にディス
パッチするのに応答して、予約局の有効フィールドは論
理1にセットされる。好ましい実施例の重要な点は、取
消し論理106a、bが、シーケンサ装置18からCANCEL_BBID
信号を入力することである。CANCEL_BBID信号に応答し
て、取消し論理106aは取り消されるBBIDと予約局100aに
記憶されたBBIDを比較する。取り消されるBBIDが予約局
100aに記憶されたBBIDと一致する場合、取消し論理106a
は予約局100aの有効フィールドを論理0にクリアし、そ
れにより、この予約局の各命令の実行を取り消す。同様
に、取り消されるBBIDが予約局100bに記憶されたBBIDと
一致する場合、取消し論理106bは予約局100bの有効フィ
ールドを論理0にクリアし、それにより、この予約局の
各命令の実行を取り消す。
【0080】図9は、シーケンサ装置18(図4)の基本
ブロック制御論理(「BBCL」)84のブロック図である。
基本ブロック割当てポインタ(「BBAP」)レジスタは、
基本ブロック番号を記憶し、DISPATCH_BBID信号として
出力する。ディスパッチ論理74からのDISPATCHED_A_BRA
NCH信号に応答して、BBCL84はBBAPに記憶された基本ブ
ロック番号を増分する。分岐装置20からのCORRECTION信
号に応答して、BBCL84は分岐装置20からBRANCH_BBID信
号を入力し、BRANCH_BBID信号によって示される基本ブ
ロック番号を増分する。そしてこの増分された基本ブロ
ック番号を、BBAP内の以前にBBAPが基本ブロック番号を
記憶した場所に記憶する。
【0081】好ましい実施例において、基本ブロック番
号は最初は0であり、基本ブロック番号1〜3がこれに続
き、そして再び基本ブロック番号0に戻る。また好まし
い実施例において、プロセッサ10は、1サイクル間に最
高4つの命令をディスパッチすることができる。特に、
プロセッサ10が特定のサイクル間に分岐命令をディスパ
ッチする場合、ディスパッチされた分岐命令は、特定の
サイクル間にディスパッチされた最後の命令となる。し
たがって、特定のサイクルに対して、BBCL84は、すべて
の命令がディスパッチされるまで、(ディスパッチ論理
74からのDISPATCHED_A_BRANCH信号に応答して)BBAPに
記憶された基本ブロック番号を増分しない。
【0082】さらに、分岐装置20からのCORRECTION信号
に応答して、BBCL84の基本ブロック取消し論理はCANCEL
_BBID信号を出力する。CANCEL_BBID信号を通してBBCL84
は、プロセッサ10によって取り消される1つ以上のBBID
を示す。CANCEL_BBID信号を通して基本ブロック取消し
論理は、取り消されるBBIDは、BRANCH_BBID信号によっ
て示される基本ブロック番号から、BBCL84が分岐装置20
からCORRECTION信号を受け取る前にDISPATCH_BBID信号
によって示された基本ブロック番号までの任意のBBIDで
あることを示す。
【0083】他の実施例において、BBCL84は以下の場合
にのみBBAPに記憶された基本ブロック番号を増分する。
(1)条件つき分岐命令の分岐条件の実際の状態が、条
件つき分岐が実行されることを示しているのに応答する
場合、あるいは(2)プロセッサ10が条件つき分岐命令
の分岐条件の状態を予測するのに応答する場合。条件つ
き分岐は、条件つき分岐命令の後にプロセッサ10によっ
て処理される次の命令がプログラムされた命令順序内で
条件つき分岐命令の直後にない場合、実行されるとみな
される。したがって分岐命令は、「プログラム・フロー
を変化させる」命令である。
【0084】図10は、シーケンサ装置18(図4)のリ
オーダ・バッファ76のブロック図である。リオーダ・バ
ッファ割当てポインタ(「ROBAP」)レジスタは、割当
てポインタ73(図5)に指されるリオーダ・バッファ・
エントリ番号を記憶する。
【0085】特定のサイクル間にディスパッチされた特
定の命令に対して、INSTRUCTION_DISPATCH_POSITION信
号は、特定の命令が特定のサイクル間にディスパッチさ
れた第1、第2、第3あるいは第4の命令であることを
示す。例えば、特定の命令が特定のサイクル間にディス
パッチされた第1の命令である場合、INSTRUCTION_DISP
ATCH_POSITION信号は0を示す。同様に、特定の命令が特
定のサイクル間にディスパッチされた第2の命令である
場合、INSTRUCTION_DISPATCH_POSITION信号は1を示す。
また、特定の命令が特定のサイクル間にディスパッチさ
れた第3の命令である場合、INSTRUCTION_DISPATCH_POS
ITION信号は2を示す。最後に、特定の命令が特定のサイ
クル間にディスパッチされた第4の命令である場合、IN
STRUCTION_DISPATCH_POSITION信号は3を示す。
【0086】特定のサイクル間にディスパッチされた特
定の命令に対して、リオーダ・バッファ76は、(1)IN
STRUCTION_DISPATCH_POSITION信号によって示される番
号、および(2)ROBAPに記憶されているリオーダ・バ
ッファ・エントリ番号、の合計を計算することによって
各エントリ番号を計算する。好ましい実施例においては
図5に関連して上述されたように、計算された合計が15
以下である場合、各エントリ番号は計算された合計に等
しい。反対に、計算された合計が15より大きい場合、各
エントリ番号は合計から16を引いた数に等しい。特定の
サイクル間にディスパッチされた特定の命令に対して、
リオーダ・バッファ76は特定の命令の各エントリ番号を
DISPATCH_ROBTAG信号として出力する。
【0087】#_OF_ROB_ALLOCATED信号は、プロセッサ10
の特定のサイクル間に割り当てられたリオーダ・バッフ
ァ・エントリの数を示す。リオーダ・バッファ76は、RO
BAPに記憶されたリオーダ・バッファ・エントリ番号
を、#_OF_ROB_ALLOCATEDによって示される数だけ増分す
る。特定のサイクルの終わりに、リオーダ・バッファ76
はこの増分されたリオーダ・バッファ・エントリ番号
を、ROBAP内のROBAPが以前にリオーダ・バッファ・エン
トリ番号を記憶した場所に記憶する。
【0088】分岐装置20からのCORRECTION信号に応答し
て、リオーダ・バッファ76は、分岐装置20からBRANCH_R
OBTAG信号を入力し、BRANCH_ROBTAG信号によって示され
るリオーダ・バッファ・エントリ番号を増分し、この増
分されたリオーダ・バッファ・エントリ番号を新しいリ
オーダ・バッファ・エントリ番号として、ROBAP内のROB
APが以前にリオーダ・バッファ・エントリ番号を記憶し
た場所に記憶する。したがって、好ましい実施例の重要
な点は、プロセッサ10が、分岐命令の分岐条件が誤って
予測されたと決定したことに応答して、正しい命令順序
を処理することである。重要なことは、正しい命令順序
を処理する際にプロセッサ10は、新しいリオーダ・バッ
ファ・エントリ番号に以前に記憶された情報を使用も読
みもせず、この情報に依存もしないことである。この様
にプロセッサ10は以前に新しいリオーダ・バッファ・エ
ントリ番号に記憶された情報とは無関係に正しい命令順
序を処理するので、新しいリオーダ・バッファ・エント
リ番号は、分岐命令の完了より前であっても正しい命令
順序の命令の1つに関連することができる。
【0089】図11は、リネーム・バッファ34のブロッ
ク図である。リネーム・バッファ34は、分岐装置20から
CORRECTION信号およびBRANCH_GRBAP信号を入力する。GP
Rリネーム・バッファ割当てポインタ(「GRBAP」)レジ
スタは、割当てポインタ80(図6)によって指されるリ
ネーム・バッファ番号を記憶する。
【0090】#_OF_GRB_ALLOCATED信号は、プロセッサ10
の特定のサイクル間に割り当てられたGPRリネーム・バ
ッファの数を示す。リネーム・バッファ34はGRBAPに記
憶されたリネーム・バッファ番号を#_OF_GRB_ALLOCATED
によって示される数だけ増分し、この増分されたリネー
ム・バッファ番号をDISPATCH_GRBAP信号として出力す
る。特定のサイクルの終わりに、リネーム・バッファ34
はこの増分されたリネーム・バッファ番号を、GRBAP内
の以前にGRBAPがリネーム・バッファ番号を記憶した場
所に記憶する。
【0091】分岐装置20からのCORRECTION信号に応答し
て、リネーム・バッファ34は分岐装置20からBRANCH_GRB
AP信号を入力し、BRANCH_GRBAP信号によって示されるリ
ネーム・バッファ番号を増分し、この増分されたリネー
ム・バッファ番号を新しいリネーム・バッファ番号とし
て、GRBAP内のGRBAPが以前にリネーム・バッファ番号を
記憶した場所に記憶する。したがって、好ましい実施例
の重要な点は、プロセッサ10が、分岐命令の分岐条件が
誤って推測されたと決定したことに応答して、正しい命
令順序を処理することである。重要なことは、プロセッ
サ10は正しい命令順序を処理する際に、新しいリネーム
・バッファ番号に以前に記憶された情報を使用も読みも
せず、これに依存もしないことである。この様にプロセ
ッサ10は新しいリネーム・バッファ番号に以前に記憶さ
れた情報とは無関係に正しい命令順序を処理するので、
新しいリネーム・バッファ番号は、分岐命令が完了する
前であっても正しい命令順序の1つに関連することがで
きる。
【0092】図3は、図2および3の例に対するプロセ
ッサ10の様々なサイクル間の、ROBAP、GRBAP、BBAP、RO
BTAG、GRBAPおよびBBIDの状態を示す。図3に示される
ように、分岐エントリAはBRN1を含み、分岐エントリBは
BRN2およびBRN3を含む。図3において、ROBTAG、GRBAP
あるいはBBIDの特定の1つ、あるいはプロセッサ10の特
定のサイクルに関連するカラムに「-」が示されている
場合、その特定のサイクル間ROBTAG、GRBAPあるいはBBI
Dは有効でないことを示す。
【0093】特に、プロセッサ10がすべてのBBIDを取り
消す(任意のBBIDに割り当てられた任意の命令が取り消
される)場合、すべての命令が取り消され、それにより
プロセッサ10がリセットされる。
【0094】本発明の典型的な実施例およびその利点が
詳細に記述されたが、これらは例として記述されたので
あり、本発明がこれらに限定されるものではない。様々
な置換および変更を、本発明の主旨および有効範囲から
外れないで行うことができる。
【0095】まとめとして、本発明の構成に関して以下
の事項を開示する。 (1)分岐命令に応答して第1の命令を処理し、上記分
岐命令の実行に先立ち上記第1の命令に記憶場所を関連
付けるステップと、上記分岐命令の実行に応答して、上
記記憶場所に以前に記憶された情報とは無関係に第2の
命令を処理し、上記記憶場所を上記分岐命令の完了に先
立ち上記第2の命令に関連付けるステップと、を含む処
理システムの演算方法。 (2)上記記憶場所がリネーム・バッファ記憶場所であ
る、上記(1)に記載の方法。 (3)上記記憶場所がリオーダ・バッファ記憶場所であ
る、上記(1)に記載の方法。 (4)上記分岐命令が条件付き分岐命令である、上記
(1)に記載の方法。 (5)第2の命令を処理する上記ステップが、上記分岐
命令の実行が上記第1の命令が処理されないことを示す
ことに応答して上記第2の命令を処理するステップを含
む、上記(1)に記載の方法。 (6)上記第1および第2の命令がそれぞれ、上記分岐
命令の第1および第2の目標命令順序に属する、上記
(1)に記載の方法。 (7)付加分岐命令に応答して第3の命令を処理し、付
加記憶場所を上記付加分岐命令の実行に先立ち上記第3
の命令に関連付けるステップと、上記付加分岐命令の実
行に応答して第4の命令を処理し、上記付加記憶場所を
上記付加分岐命令の完了および上記分岐命令の実行に先
立ち上記第4の命令に関連付けるステップと、を含む上
記(1)に記載の方法。 (8)記憶場所と回路を含み、上記回路が、上記記憶場
所を上記分岐命令の実行に先立ち上記第1の命令に関連
付けるように、分岐命令に応答して第1の命令を処理
し、上記記憶場所を上記分岐命令の完了に先立ち上記第
2の命令に関連付けるように、上記分岐命令の実行に応
答して第2の命令を上記記憶場所に以前に記憶された情
報とは無関係に処理する回路である、処理システム。 (9)上記記憶場所がリネーム・バッファ記憶場所であ
る、上記(8)に記載のシステム。 (10)上記記憶場所がリオーダ・バッファ記憶場所で
ある、上記(8)に記載のシステム。 (11)上記分岐命令が条件付き分岐命令である、上記
(8)に記載のシステム。 (12)上記回路が、上記分岐命令の実行が上記第1の
命令が処理されないことを示すことに応答して上記第2
の命令を処理することができる、上記(8)に記載のシ
ステム。 (13)上記第1および第2の命令がそれぞれ、上記分
岐命令の第1および第2の目標命令順序に属する、上記
(8)に記載のシステム。 (14)上記回路が、付加記憶場所を上記付加分岐命令
の実行に先立ち上記第3の命令に関連付けるように、付
加分岐命令に応答して第3の命令を処理し、上記付加記
憶場所を上記付加分岐命令の完了および上記分岐命令の
実行に先立ち上記第4の命令に関連付けることができる
ように、上記付加分岐命令の実行に応答して第4の命令
を処理する回路である、上記(8)に記載のシステム。
【0096】
【発明の効果】本発明は以上説明したように構成されて
いるので、典型的な従来技術に比べて、分岐が誤ってい
ると決定された後の正しい命令の処理の遅延が少ない、
演算処理システムおよび方法を提供することができる。
【図面の簡単な説明】
【図1】好ましい実施例による情報処理のためのプロセ
ッサのブロック図である。
【図2】好ましい実施例の基本ブロックに割り当てられ
た典型的な命令の概念図である。
【図3】図1のプロセッサによって処理された図2の命
令の様々な段階の概念図である。
【図4】図1のプロセッサのシーケンサ装置のブロック
図である。
【図5】図4のシーケンサ装置のリオーダ・バッファの
概念図である。
【図6】図1のプロセッサのリネーム・バッファの概念
図である。
【図7】図1のプロセッサの固定小数点実行装置のブロ
ック図である。
【図8】図1のプロセッサの分岐装置のブロック図であ
る。
【図9】図4のシーケンサ装置の基本ブロック制御論理
のブロック図である。
【図10】図4のシーケンサ装置のリオーダ・バッファ
のブロック図である。
【図11】図1のプロセッサのリネーム・バッファのブ
ロック図である。
【符号の説明】
10 プロセッサ 11 システム・バス 12 バス・インタフェース装置 14 命令キャッシュ 16 データ・キャッシュ 18 シーケンサ装置 20 分岐装置 22、24 固定小数点装置 26 複合固定小数点装置 28 ロード/記憶装置 30 浮動小数点装置 32 汎用アーキテクチャ 34、38 リネーム・バッファ 39 システム・メモリ 70 命令バッファ 72 デコード論理 74 ディスパッチ論理 76 リオーダ・バッファ 80 完了論理 82 例外論理 84 基本ブロック制御論理
フロントページの続き (72)発明者 アーティー・アトウェル・ペニングトン アメリカ合衆国78620テキサス州ドリッピ ングスプリングス、サンダンス・トレイル 319 (72)発明者 ソンヨン・ピーター・ソン アメリカ合衆国78759テキサス州オーステ ィン、バケーロ・コーブ 8405

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 分岐命令に応答して第1の命令を処理
    し、上記分岐命令の実行に先立ち上記第1の命令に記憶
    場所を関連付けるステップと、 上記分岐命令の実行に応答して、上記記憶場所に以前に
    記憶された情報とは無関係に第2の命令を処理し、上記
    記憶場所を上記分岐命令の完了に先立ち上記第2の命令
    に関連付けるステップと、 を含む処理システムの演算方法。
  2. 【請求項2】 上記記憶場所がリネーム・バッファ記憶
    場所である、請求項1に記載の方法。
  3. 【請求項3】 上記記憶場所がリオーダ・バッファ記憶
    場所である、請求項1に記載の方法。
  4. 【請求項4】 上記分岐命令が条件付き分岐命令であ
    る、請求項1に記載の方法。
  5. 【請求項5】 第2の命令を処理する上記ステップが、
    上記分岐命令の実行が上記第1の命令が処理されないこ
    とを示すことに応答して上記第2の命令を処理するステ
    ップを含む、請求項1に記載の方法。
  6. 【請求項6】 上記第1および第2の命令がそれぞれ、
    上記分岐命令の第1および第2の目標命令順序に属す
    る、請求項1に記載の方法。
  7. 【請求項7】 付加分岐命令に応答して第3の命令を処
    理し、付加記憶場所を上記付加分岐命令の実行に先立ち
    上記第3の命令に関連付けるステップと、 上記付加分岐命令の実行に応答して第4の命令を処理
    し、上記付加記憶場所を上記付加分岐命令の完了および
    上記分岐命令の実行に先立ち上記第4の命令に関連付け
    るステップと、 を含む請求項1に記載の方法。
  8. 【請求項8】 記憶場所と回路を含み、 上記回路が、 上記記憶場所を上記分岐命令の実行に先立ち上記第1の
    命令に関連付けるように、分岐命令に応答して第1の命
    令を処理し、 上記記憶場所を上記分岐命令の完了に先立ち上記第2の
    命令に関連付けるように、上記分岐命令の実行に応答し
    て第2の命令を上記記憶場所に以前に記憶された情報と
    は無関係に処理する回路である、処理システム。
  9. 【請求項9】 上記記憶場所がリネーム・バッファ記憶
    場所である、請求項8に記載のシステム。
  10. 【請求項10】 上記記憶場所がリオーダ・バッファ記
    憶場所である、請求項8に記載のシステム。
  11. 【請求項11】 上記分岐命令が条件付き分岐命令であ
    る、請求項8に記載のシステム。
  12. 【請求項12】 上記回路が、上記分岐命令の実行が上
    記第1の命令が処理されないことを示すことに応答して
    上記第2の命令を処理することができる、請求項8に記
    載のシステム。
  13. 【請求項13】 上記第1および第2の命令がそれぞ
    れ、上記分岐命令の第1および第2の目標命令順序に属
    する、請求項8に記載のシステム。
  14. 【請求項14】 上記回路が、 付加記憶場所を上記付加分岐命令の実行に先立ち上記第
    3の命令に関連付けるように、付加分岐命令に応答して
    第3の命令を処理し、 上記付加記憶場所を上記付加分岐命令の完了および上記
    分岐命令の実行に先立ち上記第4の命令に関連付けるこ
    とができるように、上記付加分岐命令の実行に応答して
    第4の命令を処理する回路である、請求項8に記載のシ
    ステム。
JP7014216A 1994-04-15 1995-01-31 処理システム及び演算方法 Pending JPH07281893A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US22832294A 1994-04-15 1994-04-15
US228322 1994-04-15

Publications (1)

Publication Number Publication Date
JPH07281893A true JPH07281893A (ja) 1995-10-27

Family

ID=22856705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7014216A Pending JPH07281893A (ja) 1994-04-15 1995-01-31 処理システム及び演算方法

Country Status (3)

Country Link
US (1) US5524224A (ja)
EP (1) EP0677808A2 (ja)
JP (1) JPH07281893A (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
JPH0844561A (ja) * 1994-07-28 1996-02-16 Fujitsu Ltd ブースティング制御方法及びブースティング制御機構を備えたプロセッサ装置
JPH08171491A (ja) * 1994-07-29 1996-07-02 Sun Microsyst Inc ディスパッチされた制御転送命令状態に基づきより高速で命令を先取りするための方法及び装置
US5822574A (en) * 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same
US5809268A (en) * 1995-06-29 1998-09-15 International Business Machines Corporation Method and system for tracking resource allocation within a processor
US5765215A (en) * 1995-08-25 1998-06-09 International Business Machines Corporation Method and system for efficient rename buffer deallocation within a processor
US5799167A (en) * 1996-05-15 1998-08-25 Hewlett-Packard Company Instruction nullification system and method for a processor that executes instructions out of order
US5948097A (en) * 1996-08-29 1999-09-07 Intel Corporation Method and apparatus for changing privilege levels in a computer system without use of a call gate
US5887161A (en) * 1997-03-31 1999-03-23 International Business Machines Corporation Issuing instructions in a processor supporting out-of-order execution
US5983343A (en) * 1998-02-17 1999-11-09 International Business Machines Corporation Data processing system having an apparatus for de-serialized status register operation and method therefor
US7188232B1 (en) * 2000-05-03 2007-03-06 Choquette Jack H Pipelined processing with commit speculation staging buffer and load/store centric exception handling
US7024542B2 (en) * 2002-01-02 2006-04-04 Intel Corporation System and method of reducing the number of copies from alias registers to real registers in the commitment of instructions
US20050125634A1 (en) * 2002-10-04 2005-06-09 Fujitsu Limited Processor and instruction control method
JP3807740B2 (ja) * 2002-10-04 2006-08-09 富士通株式会社 プロセッサ及び命令制御方法
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
US8904151B2 (en) * 2006-05-02 2014-12-02 International Business Machines Corporation Method and apparatus for the dynamic identification and merging of instructions for execution on a wide datapath
GB2459652B (en) * 2008-04-28 2010-09-22 Imagination Tech Ltd Controlling instruction scheduling based on the space in a trace buffer

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61136132A (ja) * 1984-12-07 1986-06-24 Hitachi Ltd 情報処理装置
JPH01321522A (ja) * 1988-06-24 1989-12-27 Nec Corp 情報処理装置
JPH01321521A (ja) * 1988-06-24 1989-12-27 Nec Corp 情報処理装置
JPH04220722A (ja) * 1990-12-20 1992-08-11 Fujitsu Ltd パイプライン処理装置
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 (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
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
US5077592A (en) * 1990-08-06 1991-12-31 California Institute Of Technology Front-illuminated CCD with open pinned-phase region and two-phase transfer gate regions
JP2834292B2 (ja) * 1990-08-15 1998-12-09 株式会社日立製作所 データ・プロセッサ
JPH04172533A (ja) * 1990-11-07 1992-06-19 Toshiba Corp 電子計算機
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
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
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
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
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US5268855A (en) * 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61136132A (ja) * 1984-12-07 1986-06-24 Hitachi Ltd 情報処理装置
JPH01321522A (ja) * 1988-06-24 1989-12-27 Nec Corp 情報処理装置
JPH01321521A (ja) * 1988-06-24 1989-12-27 Nec Corp 情報処理装置
JPH04220722A (ja) * 1990-12-20 1992-08-11 Fujitsu Ltd パイプライン処理装置
JPH05224927A (ja) * 1991-11-15 1993-09-03 Matsushita Electric Ind Co Ltd プロセッサ
JPH07182165A (ja) * 1993-09-28 1995-07-21 Mitsubishi Electric Corp コミット条件付き命令の処理方法およびその装置

Also Published As

Publication number Publication date
US5524224A (en) 1996-06-04
EP0677808A2 (en) 1995-10-18

Similar Documents

Publication Publication Date Title
US5644779A (en) Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction
US5918005A (en) Apparatus region-based detection of interference among reordered memory operations in a processor
US5535346A (en) Data processor with future file with parallel update and method of operation
JP3977016B2 (ja) 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ
US6457120B1 (en) Processor and method including a cache having confirmation bits for improving address predictable branch instruction target predictions
US7711929B2 (en) Method and system for tracking instruction dependency in an out-of-order processor
US5611063A (en) Method for executing speculative load instructions in high-performance processors
US6230254B1 (en) System and method for handling load and/or store operators in a superscalar microprocessor
JPH07281893A (ja) 処理システム及び演算方法
JP2742393B2 (ja) オペレーションの処理システム及び方法
JP2694124B2 (ja) 処理システム及び操作方法
US5974240A (en) Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution
US5537560A (en) Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
US6003126A (en) Special instruction register including allocation field utilized for temporary designation of physical registers as general registers
WO1995027245A1 (en) Processing system and method of operation
JP3866920B2 (ja) 命令のリタイアメント時に物理レジスタを選択的に自由にするよう構成されたプロセッサ
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US5870612A (en) Method and apparatus for condensed history buffer
US6587941B1 (en) Processor with improved history file mechanism for restoring processor state after an exception
US6484256B1 (en) Apparatus and method of branch prediction utilizing a comparison of a branch history table to an aliasing table
US7275146B2 (en) Instruction control device and method therefor
JP2742392B2 (ja) オペレーションの処理システム及び方法
EP0912927B1 (en) A load/store unit with multiple pointers for completing store and load-miss instructions
US6266761B1 (en) Method and system in an information processing system for efficient maintenance of copies of values stored within registers