JPH07271582A - オペレーションの処理システム及び方法 - Google Patents

オペレーションの処理システム及び方法

Info

Publication number
JPH07271582A
JPH07271582A JP6317871A JP31787194A JPH07271582A JP H07271582 A JPH07271582 A JP H07271582A JP 6317871 A JP6317871 A JP 6317871A JP 31787194 A JP31787194 A JP 31787194A JP H07271582 A JPH07271582 A JP H07271582A
Authority
JP
Japan
Prior art keywords
instruction
execution
instructions
processor
circuit
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
Application number
JP6317871A
Other languages
English (en)
Other versions
JP2742392B2 (ja
Inventor
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 JPH07271582A publication Critical patent/JPH07271582A/ja
Application granted granted Critical
Publication of JP2742392B2 publication Critical patent/JP2742392B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or 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 or 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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

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)
  • Hardware Redundancy (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)
  • Debugging And Monitoring (AREA)
  • Communication Control (AREA)

Abstract

(57)【要約】 【目的】 オペレーションの処理システム及び方法を提
供する。 【構成】 特定の命令が、実行されるべく実行回路へデ
ィスパッチされる。特定の命令のディスパッチの後、こ
の特定の命令の実行が終了するより前に実行直列化命令
が実行回路へディスパッチされる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、広くは情報を処理する
ためのシステムに関し、特にオペレーションの処理シス
テム及び方法に関する。
【0002】
【従来の技術】スーパスカラ処理システムは、同時に複
数の命令を実行するための多重実行ユニットを備えてい
る。いくつかの処理システムにおいては、複数の命令
が、命令ストリーム内においてそれらがプログラムされ
たシーケンスに対して、順不同に実行可能である。それ
にも拘らず、1又は複数の選択された命令の実行順序を
直列化する(すなわち順序どおりに実行する)必要が生
じる場合がある。この実行順序を直列化した命令(以
降、「実行直列化命令」と称する)は、そのプログラミ
ングされたシーケンス(以降、「プログラム・シーケン
ス」と称する)の順序でのみ実行可能である。従来技術
においては、通常、このような実行直列化命令は、その
プログラム・シーケンス内で後にくる他の命令の実行に
対して悪影響を及ぼすことになる。
【0003】
【発明が解決しようとする課題】従って、本発明の目的
は、実行直列化命令が、そのプログラム・シーケンス内
で後にくる他の命令の実行に対してなるべく悪影響を及
ぼさないようなオペレーションの処理システム及び方法
を提供することである。
【0004】
【課題を解決するための手段】本発明によるオペレーシ
ョンの処理システム及び方法においては、特定の命令が
実行されるべく実行回路にディスパッチされ、そしてこ
の特定の命令のディスパッチの後、この特定の命令の実
行が終了する前に、実行直列化命令が実行回路へディス
パッチされる。本発明の技術上の有用性は、実行直列化
命令が、そのプログラム・シーケンス内で後にくる他の
命令の実行に対してそれほど悪影響を及ぼさないことで
ある。
【0005】
【実施例】本発明の実施例及びその有用性を図1乃至図
38を参照して詳述する。使用する符号は、図中の類似
及び対応する部分と同じものである。
【0006】図1は、好適例における情報処理のための
プロセッサ10のシステムのブロック図である。好適例
では、プロセッサ10が単一の集積回路であるスーパス
カラ・マイクロプロセッサである。従って、後に詳述す
るように、プロセッサ10は、種々のユニット、レジス
タ、バッファ、メモリ、及び他の部分を備えており、こ
れらの全てが集積回路によって形成されている。さら
に、好適例においては、プロセッサ10は、RISC
(reduced instruction set computing)技術によって
動作する。図1に示すように、システム・バス11は、
プロセッサ10のバス・インタフェース・ユニット(B
IU)12に接続される。BIU12は、プロセッサ1
0とシステム・バス11との間の情報の転送を制御す
る。
【0007】BIU12は、プロセッサ10の命令キャ
ッシュ14及びデータ・キャッシュ16へ接続される。
命令キャッシュ14は、シーケンサ・ユニット18へ命
令を出力する。このような命令キャッシュ14からの命
令に応答して、シーケンサ・ユニット18は、プロセッ
サ10の他の実行回路に対して選択的に命令を出力す
る。
【0008】シーケンサ・ユニット18に加えて、好適
例ではプロセッサ10の実行回路がいくつかの多重実行
ユニット、すなわち分岐(branch)ユニット20、固定
小数点ユニットA(FXUA)22、固定小数点ユニッ
トB(FXUB)24、複素固定小数点ユニット(CF
XU)26、ロード/記憶ユニット(LSU)28及び
浮動小数点ユニット(FPU)30を備えている。FX
UA22、FXUB24、CFXU26及びLSU28
は、汎用アーキテクチャ・レジスタ(GPR)32及び
固定小数点リネーム(rename)・バッファ34からのこ
れらのソース・オペランド情報を入力する。さらに、F
XUA22及びFXUB24は、桁上げビット(CA)
・レジスタ42からの「桁上げビット」を入力する。F
XUA22、FXUB、CFXU26及びLSU28
は、これらのオペレーションの結果(目的オペランド情
報)を、固定小数点リネーム・バッファ34内の選択さ
れたエントリに記憶するために出力する。また、CFX
U26は、特殊用レジスタ(SPR)40からソース・
オペランドを入力したり、これに対して目的オペランド
情報を出力したりする。
【0009】FPU30は、そのソース・オペランド情
報を浮動小数点アーキテクチャ・レジスタ(FPR)3
6及び浮動小数点リネーム・バッファ38から入力す
る。FPU30は、そのオペレーションの結果(目的オ
ペランド情報)を、浮動小数点リネーム・バッファ38
内の選択されたエントリに記憶するために出力する。
【0010】ロード(Load)命令に応答して、LSU2
8がデータ・キャッシュ16から情報を入力し、この情
報をリネーム・バッファ34及び38のうち選択された
ものへ複写する。このような情報がデータ・キャッシュ
16に記憶されていない場合、データ・キャッシュ16
は、システム・バス11に接続されたシステム・メモリ
39から(BIU12及びシステム・バス11を介し
て)このような情報を入力する。さらに、データ・キャ
ッシュ16は、データ・キャッシュ16から、システム
・バス11に接続されたシステム・メモリ39へ(BI
U12及びシステム・バス11を介して)情報を出力す
ることができる。記憶(Store)命令に応答して、LS
U28は、GPR32及びFPR36のうちの選択され
たものから情報を入力し、この情報をデータ・キャッシ
ュ16へ複写する。
【0011】シーケンサ・ユニット18は、GPR32
から情報を入力し、FPR36へ情報を出力する。シー
ケンサ・ユニット18から、分岐ユニット20は命令と
プロセッサ10の現在の状態を示す信号とを入力する。
このような命令及び信号に応答して、分岐ユニット20
は、プロセッサ10により実行するために、命令のシー
ケンスを記憶する適切なメモリ・アドレスを指示する信
号をシーケンサ・ユニット18へ出力する。分岐ユニッ
ト20からのこのような信号に応答して、シーケンサ・
ユニット18は、指示された命令のシーケンスを命令キ
ャッシュ14から入力する。もし1又は複数の命令シー
ケンスが命令キャッシュ14内に記憶されていなけれ
ば、命令キャッシュ14は、システム・バス11に接続
されたシステム・メモリ39から(BIU12及びシス
テム・バス11を介して)このような命令を入力する。
【0012】命令キャッシュ14からの命令入力に応答
して、シーケンサ・ユニット18は、これらの命令を実
行ユニット20、22、24、26、28及び30の中
から選んだユニットへ選択的にディスパッチする。各実
行ユニットは、特定クラスの命令のうち1又は複数の命
令を実行する。例えば、FXUA22及びFXUB24
は、ソース・オペランドに対して固定小数点での数学的
オペレーションの最初のクラスを実行する。例えば、加
算、減算、AND(論理積)、OR(論理和)及びXO
R(排他的論理和)等である。CFXU26は、ソース
・オペランドに対して固定小数点オペレーションの第2
のクラスを実行する。例えば固定小数点における乗算及
び除算である。FFU30は、ソース・オペランドに対
して浮動小数点オペレーションを実行する。例えば、浮
動小数点における乗算及び除算である。
【0013】リネーム・バッファ34の選択された1つ
に情報が記憶されたとき、このような情報は記憶場所
(例えばGPR32又はCAレジスタ42のうちの1
つ)に関連するものであり、その選択されたリネーム・
バッファを割当てた命令によって指定される。リネーム
・バッファ34の選択された1つに記憶された情報は、
シーケンサ・ユニット18からの信号に応答してその関
連するGPR32(又はCAレジスタ42)の1つに複
写される。図7乃至図17に関して後に詳述するが、シ
ーケンサ・ユニット18は、その情報を生成した命令の
「完了」に応答して、リネーム・バッファ34の選択さ
れた1つに記憶された情報の複写を指示する。このよう
な複写は、「ライトバック(writeback)」と呼ばれて
いる。
【0014】リネーム・バッファ38の選択された1つ
に情報が記憶されたとき、このような情報はFPR36
の1つに関連する。リネーム・バッファ38の選択され
た1つに記憶された情報は、シーケンサ・ユニット18
からの信号に応答してその関連するFPR36の1つに
複写される。シーケンサ・ユニット18は、その情報を
生成した命令の「完了」に応答して、リネーム・バッフ
ァ38の選択された1つに記憶された情報の複写を指示
する。
【0015】プロセッサ10は、種々の実行ユニット2
0、22、24、26、28及び30のうちのいくつか
において複数の命令を同時に処理することにより高性能
を実現する。従って、各命令は、各ステージ(stage)
からなるシーケンスとして処理され、各々が他の命令の
各ステージと並行して実行可能である。このような技術
は、「パイプライン処理」と呼ばれている。本発明の重
要な特徴としては、通常、命令が6つのステージで処理
されることである。すなわち、フェッチ(命令の取出
し)、デコード(復号化)、ディスパッチ(実行ユニッ
トの割振り)、実行、完了及びライトバックの各ステー
ジである。
【0016】フェッチ・ステージでは、シーケンサ・ユ
ニット18が、先に分岐ユニット20及びシーケンサ・
ユニット18に関連して述べた命令のシーケンスを記憶
する1又は複数のメモリ・アドレスの中から1又は複数
の命令を(命令キャッシュ14から)選択的に入力す
る。
【0017】デコード・ステージでは、シーケンサ・ユ
ニット18が、4つのフェッチ命令となるようにデコー
ドする。
【0018】ディスパッチ・ステージでは、シーケンサ
・ユニット18が、(デコード・ステージにおけるデコ
ードに応答して)各ディスパッチされた命令の結果(目
的オペランド情報)のためにリネーム・バッファのエン
トリを確保した後、実行ユニット20、22、24、2
6、28及び30の中から選択されたものに対して4つ
のデコードされた命令を選択的にディスパッチする。こ
のディスパッチ・ステージでは、ディスパッチされた命
令のためにオペランド情報が選択された実行ユニットへ
与えられる。プロセッサ10は、命令のプログラム・シ
ーケンスの順序でそれらの命令をディスパッチする。
【0019】実行ステージでは、実行ユニットが、それ
らにディスパッチされた命令を実行し、それらのオペレ
ーションの結果(目的オペランド情報)を、前述のリネ
ーム・バッファ34及びリネーム・バッファ38内のエ
ントリに記憶するべく出力する。この方法では、プロセ
ッサ10は、命令のプログラム・シーケンスに対して順
不同にそれらの命令を実行することができる。
【0020】完了ステージでは、シーケンサ・ユニット
18は、先の図3乃至図4に関して述べたように、命令
が「完了した」ことを示す。プロセッサ10は、命令の
プログラム・シーケンスの順序でそれらの命令を「完了
する」
【0021】ライトバック・ステージでは、シーケンサ
・ユニット18が、リネーム・バッファ34及び38か
らの情報をGPR32及びFPR36にそれぞれ複写す
るよう指示する。シーケンサ・ユニット18は、図7乃
至図17に関して後述するように、選択されたリネーム
・バッファに記憶された情報のこのような複写を指示す
る。同様に、特定の命令のライトバック・ステージにお
いて、プロセッサ10はその特定の命令に応答して、そ
のアーキテクチャの状態を更新する。プロセッサ10
は、個々の命令のプログラム・シーケンスの順序で、各
々の命令のライトバック・ステージを処理する。後に、
図7乃至図17に関して詳述するが、プロセッサ10
は、特定の状況において命令の完了・ステージとライト
バック・ステージとをマージするという有用性を備えて
いる。
【0022】好適例では、各命令は、命令処理の各ステ
ージを実行するために1つのマシン・サイクルを必要と
する。それにも拘らず、いくつかの命令(例えば、CF
XU26によって実行される複素固定小数点命令)は、
複数のサイクルを必要とする場合がある。そのために、
先行する命令の完了に要する時間にばらつきがあること
から、特定の命令の実行ステージと完了ステージとの間
に様々な遅延が生じる可能性がある。
【0023】図2は、プロセッサ10の固定小数点ユニ
ット(FXUA)22のブロック図である。FXUA2
2は、50a及び50bで示される保有ステーションを
備えている。同様に、分岐ユニット20、FXUB2
4、CFXU26、LSU28、及びFPU30もそれ
ぞれ保有ステーションをもっている。明確にするため
に、以下ではFXUA22及びその保有ステーションの
みについてこのオペレーションを説明するが、他の実行
ユニット及びそれらの保有ステーションのオペレーショ
ンについても同様である。
【0024】保有(reservation)ステーション50a
及び50bは、シーケンサ・ユニット18によってFX
UA22により実行されるべくディスパッチされた個々
の命令のための情報を記憶することができる。各保有ス
テーションは、それぞれ目的レジスタ・フィールド、オ
ペランドAフィールド、オペランドBフィールド、及び
操作コード・フィールドを備えている。さらに、好適例
の重要な特徴は、各保有ステーションが、それぞれ実行
許可(EOK)フィールドを備えていることである。
【0025】保有ステーションは、その目的レジスタ・
フィールドにて、その保有ステーションの個々の命令に
対して(シーケンサ・ユニット18により指定された)
少なくとも1つの目的レジスタを識別する。同様に、保
有ステーションは、そのオペランドAフィールド及びオ
ペランドBフィールドの各々に、その保有ステーション
の個々の命令に対して(GPR32、リネーム・バッフ
ァ34、FXUB24、CFXU26又はLSU28か
らの)ソース・オペランド情報を記憶する。保有ステー
ションは、個々の命令に対応して、そのオペレーション
がそのソース・オペレーション情報に関してFXUA2
2により実行されることを示す(シーケンサ・ユニット
18により指定された)操作コードを操作コード・フィ
ールドに記憶する。
【0026】制御ロジック56からの信号に応答して、
実行ロジック54は、保有ステーションのオペランドA
フィールド及びオペランドBフィールドからソース・オ
ペランド情報を入力し、それらに基づいて(その保有ス
テーションに記憶された操作コードによって示された)
オペレーションを実行する。このようなオペレーション
によって得られる情報は、実行ロジック54からリネー
ム・バッファ34、FXUB24、CFXU26及びL
SU28へ出力される。この情報は、リネーム・バッフ
ァ34の選択された1つに記憶される。マルチプレクサ
58の出力によって識別された目的レジスタに対応し
て、(選択されたリネーム・バッファ内に)記憶された
情報がGPR32の1つに関係付けられる。
【0027】好適例の重要な特徴は、保有ステーション
がさらに(シーケンサ・ユニット18により指定され
た)EOK情報をそのEOKフィールドに記憶すること
である。このEOK情報は、プロセッサ10が実行直列
化命令の実行を遅らせるような所与の状況に対処するた
めに有用である。実行の直列化は、プロセッサ10のよ
うな多重パイプラインでかつ順不同な実行を行うプロセ
ッサにおいて、命令の実行を遅らせるための技術であ
る。プロセッサ10が実行直列化命令の実行を遅らせる
第1の状況は、その命令が、順不同に実行するべきでな
い命令の場合である。第2の状況は、その全てのソース
・オペランド情報が利用可能でかつ有効となるまで命令
の実行を遅らせる場合である。
【0028】第1の状況(その命令が順不同に実行する
べきでない命令の場合)に関して述べる。通常、プロセ
ッサ10は、命令のプログラム・シーケンスに対し、命
令ストリーム内で順不同に実行されるように実行する。
よってそれらの命令の結果は、命令のプログラム・シー
ケンスの順序で利用可能となる必要はない。しかしなが
ら、プロセッサ10は、命令の結果をアーキテクチャ・
レジスタ(例えば、GPR32やFPR36)へ命令の
プログラム・シーケンスの順序でライトバックする。こ
のためにプロセッサ10は、命令の結果を速やかに記憶
するためのリネーム・バッファ34及び38を備えてお
り、そして適切な時間の後(すなわち、全ての先行する
命令の実行が、例外条件を発生することなく終了すると
き)、一時的に記憶された結果をアーキテクチャ・レジ
スタへライトバックする。
【0029】それにも拘らず、好適例のように、いくつ
かの命令がSPR40(図1)に対して動作することが
ある。この場合、命令の結果は、リネーム・バッファに
一時的に記憶されることなく直接SPR40に書込まれ
る。このような命令の例としてはTO移動(Move To)
命令があり、CFXU26が、GPR32の1つからS
PR40の1つへと情報を移動する。図1に示すよう
に、CFXU26は、SPR40に接続されている。T
O移動命令が実行されると、即座にSPR40の1つを
更新する。他の例では、記憶(Store)命令の結果が、
リネーム・バッファに一時的に記憶されることなく直接
データ・キャッシュ16のメモリ場所に書込まれる。
【0030】プロセッサ10は、このような命令の場
合、本来のとおりにすなわち順不同には実行しない(こ
の場合、命令の結果は、リネーム・バッファに一時的に
記憶されずに直接アーキテクチャ・レジスタ又はメモリ
場所に書込まれる)。それによって、プロセッサ10
は、精確な割込みと正確な例外を実現する。さらに、命
令の結果が一時的にリネーム・バッファに記憶されるこ
となく直接アーキテクチャ・レジスタ又はメモリ場所に
書込まれるので、このような命令はライトバック・ステ
ージ無しで処理される。従って、順序どおりの完了及び
ライトバックを確保するために、プロセッサ10は、先
行する全ての命令が完了するまでこのような命令の実行
を遅らせるのである。
【0031】前述の第2の状況(全てのソース・オペラ
ンド情報が利用可能でかつ有効となるまで命令の実行を
遅らせる場合)に関しては、図3を参照すると、命令が
シーケンサ・ユニット18からディスパッチされた時点
でその命令のソース・オペランド情報が利用可能でない
とき、保有ステーションがその命令についての情報を一
時的に記憶する。そしてソース・オペランド情報が実行
ユニットから利用可能となったことに応答して、保有ス
テーションはそのソース・オペランド情報を入力し記憶
する。保有ステーションは、適切な時点でこのようなソ
ース・オペランド情報を実行ロジック54へ渡す。
【0032】好適例では、ほとんどの命令が、1又は複
数のGPR32及びFPR36をソース・オペランドと
して指定する。従って、好適例では、保有ステーション
が、実行ユニットからの情報を渡す回路を備えている。
【0033】それにも拘らず、好適例では、保有ステー
ションが、CAレジスタ42又はSPR40等の他の形
式のソース・オペランドからの情報を渡す回路を備えて
いない。この理由は、そのような回路の大きさとコスト
が、上記のような他の形式のソース・オペランドを指定
する命令の頻度に見合っていないためである。その代り
に、好適例におけるプロセッサ10は、このような渡さ
れないソース・オペランドを指定する命令の実行を、少
なくとも先行する全ての命令の実行が完了するまで遅ら
せる。先行する全ての命令の実行が完了したことに応答
して、上記の渡されないソース・オペランドが、指定さ
れた1つのアーキテクチャ・レジスタ(例えば、SPR
40)から読取られる。このような命令の例としては、
(1)CAレジスタ42を読取る拡張算術演算命令、及
び(2)情報をSPR40の1つからGPR32の1つ
へと移動するFROM移動(Move From)命令がある。
【0034】まとめると、プロセッサ10は、2つの状
況において、少なくとも全ての先行する命令が完了する
までは、実行直列化命令の実行を遅らせる。第1の状況
は、命令が、順不同に実行するべきでない命令の場合で
ある。第2の状況は、プロセッサ10が伝達回路を備え
ていないような少なくとも1つのソース・オペランドを
指定する命令の場合である。保有ステーションに記憶さ
れたEOK情報を指定するシーケンサ・ユニット18に
よってこのような状況を処理することは、有用なことで
ある。
【0035】もし命令の実行を直列化する必要があるな
らば、シーケンサ・ユニット18は、その命令がFXU
A22にディスパッチされたときEOKビット(保有ス
テーションのEOKフィールドに記憶されたEOK情
報)を論理「0」にクリアする。EOKビットを論理
「0」にクリアすることによって、シーケンサ・ユニッ
ト18は、その命令の実行のための他の要件が整ってい
る場合であってもFXUA22が命令を実行しないよう
にする。従って、FXUA22は、シーケンサ・ユニッ
ト18がライン60を介して後に詳述する信号を出力す
ることに応答する場合にのみ実行直列化命令を実行す
る。
【0036】これに対して、命令の実行を直列化する必
要がないならば、シーケンサ・ユニット18は、命令が
FXUA22にディスパッチされたときEOKビットを
論理「1」にセットする。EOKビットを論理「1」に
セットすることによって、シーケンサ・ユニット18
は、その命令のソース・オペランド情報が利用可能であ
りかつ有効であるならば直ちにFXUA22が命令を実
行することを許可する。
【0037】図3は、シーケンサ・ユニット18のブロ
ック図である。前述のように、フェッチ・ステージで
は、シーケンサ・ユニット18が、命令キャッシュ14
から4つまでの命令を選択的に入力し、これらの命令を
命令バッファ70に記憶する。デコード・ステージで
は、デコードロジック72が、フェッチされた4つまで
の命令を命令バッファ70から入力しデコードする。デ
ィスパッチ・ステージでは、ディスパッチ・ロジック7
4が、(デコード・ステージにおけるデコードに応答す
ることにより)デコードされた4つまでの命令を実行ユ
ニット20、22、24、26、28及び30のうちの
選択されたものに対して選択的にディスパッチする。
【0038】図4は、好適例におけるシーケンサ・ユニ
ット18の再配列バッファ76の概略図である。図4に
示すように、再配列バッファ76には16個のエントリ
が有り、各々バッファ番号0乃至15を付けられてい
る。各エントリは5個の基本フィールドすなわち、「命
令形式」フィールド、「目的GPR数」フィールド、
「目的FPR数」フィールド、「終了」フィールド、及
び「例外」フィールドをもっている。さらに、命令形式
フィールドには、「実行ユニット」サブフィールドと
「EOK」サブフィールドとがある。
【0039】図3も参照すると、ディスパッチ・ロジッ
ク75が、命令を実行ユニットへディスパッチすると、
シーケンサ・ユニット18は、そのディスパッチされた
命令を再配列バッファ76の関連するエントリへ割当て
る。シーケンサ・ユニット18は、再配列バッファ76
内のエントリを、先入れ先出しベースでかつ回転方式に
よりディスパッチされた命令に充てる。これによって、
シーケンサ・ユニット18はエントリ0を割当て、続い
て順番にエントリ1から15までを割当て、そして再び
エントリ0を割当てる。ディスパッチされた命令が再配
列バッファ76の関連するエントリに割当てられると、
ディスパッチ・ロジック74は、そのディスパッチされ
た命令に関する情報をその関連するエントリの種々のフ
ィールドやサブフィールドに記憶するために出力する。
【0040】例えば、図4のエントリ0において、再配
列バッファ76は、命令がFXUA22にディスパッチ
されたことを示している。さらに、エントリ0は、EO
K=0により、ディスパッチされた命令が実行直列化さ
れていることを示している。そしてプロセッサ10は、
このディスパッチされた命令の実行を少なくとも全ての
先行する命令が完了するまでは遅らせるようにする。エ
ントリ1においてもまた、再配列バッファ76は、EO
K=0によりその次の命令も実行直列化されていること
を示している。
【0041】好適例における他の重要な特徴は、エント
リ0がさらに、そのディスパッチされた命令が、目的レ
ジスタとして1つのGPRを有し(すなわち、「目的G
PR数」=1)、目的レジスタとしてFPRをもたず
(すなわち、「目的FPR数」=0)、そしてまだ実行
されていない(すなわち、「実行」=0)ことを示すこ
とである。
【0042】実行ユニットがディスパッチされた命令を
実行すると、その実行ユニットはその命令に関連する再
配列バッファ76内のエントリを修正する。さらに具体
的に云えば、ディスパッチされた命令の終了に応答し
て、実行ユニットがエントリの「終了」フィールドを
(「終了」=1となるように)修正する。もし実行ユニ
ットがディスパッチされた命令を実行している間に例外
が発生した場合は、実行ユニットがそのエントリの「例
外」フィールドを(「例外」=1となるように)修正す
る。
【0043】再び図3を参照すると、再配列バッファ7
6のエントリが、シーケンサ・ユニット18の完了ロジ
ック80及び実行ロジック82によって読取られる。さ
らに、好適例の重要な特徴としては、再配列バッファ7
6のエントリが、シーケンサ・ユニット18の実行直列
化ロジック84によって読取られる。再配列バッファ7
6の「例外」フィールドに応答して、例外ロジック82
が、ディスパッチされた命令の実行中に発生した例外を
処理する。
【0044】再配列バッファ76の「終了」フィールド
及び「例外」フィールドに応答して、完了ロジック84
は、ディスパッチ・ロジック74と、実行直列化ロジッ
ク84と、再配列バッファ76とへ信号を出力する。こ
れらの信号によって、完了ロジック80は、命令がプロ
グラム・シーケンスの順序で完了したことを示す。完了
ロジック80は、次の条件を満たすときに命令の「完
了」を示す。
【0045】条件1:(命令をディスパッチされた)実
行ユニットがその命令の実行を終了する(再配列バッフ
ァ76のその命令に関するエントリの「終了」=1とな
るようにする)。 条件2:命令を処理するいずれのステージに関しても例
外が発生しなかった(再配列バッファ76のその命令に
関するエントリの「例外」=0となるようにする)。 条件3:先にディスパッチされたいずれの命令も、条件
1及び条件2を満たしている。
【0046】再配列バッファ76内の情報に応答して、
ディスパッチ・ロジック74は、ディスパッチすべき別
の命令の適切な数を判断する。
【0047】好適例の重要な特徴は、完了ロジック80
からの信号に応答して、実行直列化ロジック84がライ
ン60を介してFXUA22へ選択的に信号を出力する
ことである。もし、FXUA22へディスパッチされた
命令に関する(再配列バッファ76内のその命令に関す
るエントリの「命令形式」フィールド内にある)EOK
ビットが論理「0」にクリアされていれば、実行直列化
ロジック84は、そのディスパッチされた命令に先行す
る全ての命令の「完了」に応答してライン60を介して
信号を出力する。FXUA22は、実行直列化ロジック
84がライン60を介して信号を出力した場合にのみこ
れに応答して、このようなディスパッチされた命令を実
行する。すなわち、実行直列化ロジック84がライン6
0を介してこの信号を出力したとき、ディスパッチされ
た命令(それに関するEOKビットが論理「0」にクリ
アされている)はFXUA2の保有ステーション50a
及び50b内の最も古い命令となる。なぜなら、各命令
は、それらのプログラム・シーケンスの順序で「完了」
しているからである。
【0048】同様に、実行直列化ロジック84は、実行
ユニット20、24、26、28及び30に対してもそ
れぞれに接続されたライン86、88、90、92及び
94を介して選択的に信号を出力する。
【0049】図5及び図6は、命令における種々のステ
ージを示している。図5では、実行直列化命令INST
n+1(例えば、TO移動命令やFROM移動命令)の
実行(サイクル6)が、全ての先行する命令の実行が
「完了」し終えるまで(例えば、先行する命令INST
nのサイクル5の後に)遅らされる。それにも拘らず、
プロセッサ10が、命令INSTn+2のディスパッチ
(サイクル3)や実行(サイクル4)を遅らせることな
く、実行直列化命令INSTn+1の実行よりも先に行
うことは有用なことである。この方法においてプロセッ
サ10は、先行する実行直列化命令(例えばINSTn
+1)のある命令(例えばINSTn+2)を連続的に
ディスパッチすることができる。さらに、プロセッサ1
0の実行ユニットは、たとえその実行ユニットの保有ス
テーション内に実行直列化を必要とする最も古い保留中
の命令がある場合であっても、その実行ユニットの保有
ステーションからその実行ロジック(例えば、図2の実
行ロジック54)に対して順不同に命令を出すことがで
きる。
【0050】好適例のプロセッサ10は、他の例に比べ
てより高性能を実現する。図6に示す他の実施例の1つ
では、命令INSTi+2のディスパッチ(サイクル
8)が、実行直列化の必要がある命令INSTi+1の
デコード(サイクル2)に応答して遅らされる。この実
施例においては、命令INSTi+2のディスパッチ
(サイクル8)は、全ての先行するディスパッチされた
命令が「完了」した後(例えば、先行する実行直列化命
令INSTi+1のサイクル7の後)にのみ再開され
る。この実施例における欠点は、先行する実行直列化命
令(例えば、INSTi+1)のあるいずれの命令(例
えば、INSTi+2)についても実行が遅らされるこ
とである。
【0051】前述のように、プロセッサは、先行する実
行直列化命令のある命令の連続的なディスパッチを実現
する。FROM移動命令は実行直列化命令であるので、
この好適例における実行直列化技術の有効性を享受す
る。さらに、好適例での別の重要な特徴は、プロセッサ
が、目的オペランド情報をGPR32の1つへライトバ
ックする前に、FROM移動命令の結果(目的オペラン
ド情報)を選択されたリネーム・バッファに記憶するべ
く出力するための回路を備えていることである。
【0052】プロセッサ10は、FROM移動命令の目
的レジスタがGPR32の1つであるか否かに関係なく
上記のようなリネームをサポートする。この方法では、
プロセッサ10は、その保有ステーションに存する伝送
回路を、リネーム・バッファを検索するための回路とと
もに使用することにより、(FROM移動命令の)目的
オペランド情報を、FROM移動命令の後にディスパッ
チされた命令のソース・レジスタに正確に一致させる。
従って、先行するFROM移動命令のある他の命令に対
して、そのFROM移動命令のディスパッチの後はいつ
でもディスパッチすることができる。FROM移動命令
に対して上記のような回路を用いないならば、先行する
FROM移動命令のある他の命令は、そのFROM移動
命令が「完了」するまでディスパッチされないであろ
う。なぜなら、それらの他の命令は、そのソース・オペ
ランド情報としてそのFROM移動命令の目的オペラン
ド情報を必要とするからである。
【0053】好適例の別の重要な特徴は、プロセッサ1
0が、有効な手法により、命令のフェッチとデコードに
関する例外(以降、IFDRE例外と称する)に応答す
ることによって命令のディスパッチをストリームライン
化することである。プロセッサ10は、フェッチ・ステ
ージ又はデコード・ステージにおいて命令及びプロセッ
サ10の状態の全体からIFDRE例外条件を検出可能
である場合に、IFDRE例外を検出する。このような
IFDRE例外の例としては、命令アクセス・ページフ
ォールト、命令アクセス記憶保護違反、特権命令違反、
及び違法命令がある。
【0054】上記のIFDRE例外に応答して、シーケ
ンサ・ユニット18は、IFDRE例外を発生した命令
を実行ユニットの保有ステーションへディスパッチする
が、それとともに図2乃至図4に関して説明したEOK
ビットを論理「0」にクリアする。さらに、シーケンサ
・ユニット18は、IFDRE例外を発生した命令に関
する再配列バッファ76内のエントリの「例外」=1と
設定することによってIFDRE例外条件の標示を記憶
する。この標示によって、IFDRE例外発生命令とし
てその命令を識別する。
【0055】先に図2乃至図4に関して説明したよう
に、EOKビットを論理「0」にクリアすることによっ
て、シーケンサ・ユニット18は、たとえ実行ユニット
がいつでも実行できる状態であってもそのディスパッチ
された命令を実行しないようにする。よって、この実行
ユニットは、シーケンサ・ユニット18がそれぞれ接続
されたライン60、86、88、90、92又は94の
うち1つのラインを介して信号を出力した場合にのみこ
の命令を実行する。これは、図2乃至図4に関して述べ
たとおりである。
【0056】IFDRE例外を発生した命令に先行する
全ての命令の完了に応答して、シーケンサ・ユニット1
8は、それぞれ接続されたライン60、86、88、9
0、92又は94の1つを介して実行ユニットへ信号を
送るよりもむしろこのIFDRE例外を処理する。この
ように、IFDRE例外を発生した命令は、実行ユニッ
トによって実行されない。シーケンサ・ユニット18
は、再配列バッファ76内のIFDRE発生命令に関す
るエントリの「例外」=1及び「終了」=0に応答して
その命令をIFDRE発生命令として認識する。
【0057】この方法により、プロセッサ10は、ディ
スパッチ・ロジック74による命令のディスパッチをス
トリームライン化しかつ高速化する。このロジックは、
スーパスカラ・プロセッサの中で速度に敏感な回路であ
る。従って、好適例のプロセッサ10は、別の実施例に
比べて高性能を実現する。別の実施例の1つによれば、
プロセッサはIFDREを発生した命令をディスパッチ
しない。このような別の技術を用いると、複雑でかつデ
ィスパッチが遅くなる。なぜなら、各命令に対して、プ
ロセッサは、その命令をディスパッチすべきか判断する
前にいずれかのIFDRE例外がないか調べる必要があ
るからである。例えば、このような別の技術を用いた場
合、プロセッサは、n番目の命令又はそれ以前のn−1
個の命令のいずれかがIFDRE例外条件を有していな
いか否かを判断し、その結果によってそのn番目の命令
をディスパッチするか否かを決定する。
【0058】比較すると、好適例では、ディスパッチ・
ロジック74(図3)は、IFDRE例外条件とは無関
係に動作する。命令を実行するべく実行ユニットへディ
スパッチすると最終的に決定した後であっても、シーケ
ンサ・ユニット18がIFDRE例外条件がその命令に
あるか否かを判断する場合もある。もしシーケンサ・ユ
ニット18が、その命令についてIFDRE例外条件が
あると判断したならば、シーケンサ・ユニット18は、
実行ユニットによるその命令の実行を禁止するためにI
FDRE例外条件の標示を出力する。さらに具体的に云
えば、シーケンサ・ユニット18がその命令についてI
FDRE例外条件があると判断することに応答して、シ
ーケンサ・ユニット18は、実際のディスパッチの間に
次のような標示を出力する。すなわち、(1)再配列バ
ッファ76内のIFDRE発生命令に関するエントリの
「例外」=1にセット(「終了」=0のままで)し、
(2)IFDRE発生命令の保有ステーション内のEO
Kビットを論理「0」にクリアする。
【0059】このことは有益なことである。なぜなら、
命令をディスパッチすると決定した後に、その決定の効
果を逆転したり、最終的にその命令をディスパッチしな
いとすることは、通常、実際的でないからである。さら
に、ディスパッチ・サイクルの間、その命令をディスパ
ッチすると決定した後に別のオペレーションが行われ
る。従ってプロセッサ10は、各命令をディスパッチす
るか否かを判断する前には、いずれの例外条件も検出す
る必要がない。このことは、シーケンサ・ユニットがプ
ロセッサ10の1つのサイクル中に複数の命令をディス
パッチするために、非常に有効である。
【0060】図7は、再配列バッファ76の概略図であ
り、この中では、プロセッサ10の同じサイクルの間に
4つの命令が、終了を実行されたこと(「終了」=1)
が示されている。図8は、図7の4つの命令の種々のス
テージを示している。図9乃至図12は、プロセッサ1
0のリネーム・バッファ34の概略図である。
【0061】図7乃至図12を参照すると、好適例にお
ける重要な特徴は、ライトバックが命令の完了と独立し
ていることである。すなわち、プロセッサ10により処
理される命令のライトバック・ステージは、その命令の
完了ステージから分離することができる。ライトバック
・ステージを完了ステージから分離することによって、
プロセッサ10が、リネーム・バッファとアーキテクチ
ャ・レジスタとの間でより少ないライトバック・ポート
を用いて効率的なオペレーションを実現するという利点
がある。例えば、図1に示したように、好適例のプロセ
ッサ10は、リネーム・バッファ34とGPR32との
間の2つのライトバック・ポートと、リネーム・バッフ
ァ38とFPR38との間の2つのライトバック・ポー
トとを備えている。より少ないライトバック・ポートを
用いることにより、リネーム・バッファ34及び38並
びにアーキテクチャ・レジスタ32及び36の物理的な
大きさが縮小される。さらに、完了ロジック80(図
3)が、よりストリームライン化されることによって、
プロセッサ10が、現サイクル中で特定の命令を「完
了」できるか否かをより高速に判断することができる。
【0062】好適例では、プロセッサ10が、サイクル
毎に4つまでの命令を「完了」することができる。さら
に好適例では、各命令が、2つまでの目的オペレーショ
ンをもつことができる。従って、もしプロセッサ10
が、完了からのライトバックの分離をサポートしないな
らば、プロセッサ10は、所定のサイクルで4つの命令
を完了するために、もしそれらの命令が各々2つの目的
オペランドをもっている場合は8個のライトバック・ポ
ートを(例えば、リネーム・バッファ34とGPR32
との間に)必要とすることになる。この理由は、命令の
「完了」の際に、リネーム・バッファから関連するアー
キテクチャ・レジスタへ複写される命令の各目的オペラ
ンドについて1つのライトバック・ポートを必要とする
ためである。
【0063】より少ないライトバック・ポートを用いる
と、同じサイクル中でライトバックを考慮する命令の数
が多くなるほど、ライトバック・ポートの可用性を確認
することが複雑になってくる。これは、特定のサイクル
中の特定の命令についてのライトバック・ポートの可用
性が、その同じサイクル中又は先行するサイクル中にお
ける先行する命令について使用されたライトバック・ポ
ートの数に依存するからである。
【0064】ライトバックを完了から分離することによ
って、プロセッサ10の完了ロジック80(図3)は、
さらにストリームライン化されるという利点がある。こ
れは、命令の「完了」が、以下の条件に依存するからで
ある。 条件1:(命令がディスパッチされた)実行ユニットが
その命令の実行を終了する。 条件2:その命令を処理するいずれのステージにおいて
も例外が発生しなかった。 条件3:先行するディスパッチされた命令のいずれも条
件1及び条件2を満足する。
【0065】完了をライトバックから分離することによ
って、プロセッサ10は、所与のサイクル中にライトバ
ック・ポートが使用可能であれば、そのサイクル中に、
完了した命令の目的オペランド情報をリネーム・バッフ
ァからアーキテクチャ・レジスタに記憶するために複写
する。もしそのサイクル中にライトバック・ポートが使
用できなければ、プロセッサ10は、後のサイクルにお
いてライトバック・ポートが使用可能になったとき、そ
の完了した命令の目的オペランド情報をリネーム・バッ
ファからアーキテクチャ・レジスタへ複写する。
【0066】図7を参照すると、再配列バッファ76
は、プロセッサ10の同じサイクル中に実行を終えよう
とする4つの命令についての情報を記憶する。図8は、
4つの命令すなわちINSTx、INSTx+1、IN
STx+2、及びINSTx+3の種々のステージを示
しており、これらの命令はそれぞれ図7の再配列バッフ
ァ番号7、8、9、及び10に関連している。従って、
命令INSTxは、1つの目的オペランドをもつ(「目
的GPR数」=1)。同様に、命令INSTx+1もま
た1つの目的オペランドをもつ(「目的GPR数」=
1)。これらと違って、命令INSTx+2は2つの目
的オペランドをもつ(「目的GPR数」=2)。図8に
示すように、命令INSTx、INSTx+1、INS
Tx+2、及びINSTx+3の各々は、サイクル4の
最後において実行を終了する。
【0067】図9乃至図12は、プロセッサ10のリネ
ーム・バッファ34の概略図である。明確にするため
に、以下で説明するオペレーションは固定小数点リネー
ム・バッファ34についてのものであるが、浮動小数点
リネーム・バッファ38のオペレーションも同様であ
る。図9乃至図12に示すように、リネーム・バッファ
34は、12個のリネーム・バッファを備えており、各
々バッファ番号0乃至11を付されている。シーケンサ
・ユニット18は、ディスパッチされた命令に対して、
先入れ先出しベースでかつ回転方式によりリネーム・バ
ッファ番号0乃至11を割当てる。すなわち、シーケン
サ・ユニット18は、リネーム・バッファ番号0を割当
てると、続いて順番にリネーム・バッファ1乃至11を
割当て、そしてその後は再びリネーム・バッファ番号0
を割当てる。
【0068】図9乃至図12を参照すると、リネーム・
バッファ2は、命令INSTxについての目的オペラン
ド情報を記憶するために割当てられる。リネーム・バッ
ファ3は、命令INSTx+1についての目的オペラン
ド情報を記憶するために割当てられる。命令INSTx
+2は2つの目的オペランドをもつので、リネーム・バ
ッファ4及び5の2つが命令INSTx+2についての
目的オペランド情報を記憶するために割当てられる。同
様に、リネーム・バッファ6及び7の2つが命令INS
Tx+3についての目的オペランド情報を記憶するため
に割当てられる。
【0069】図9は、図8のサイクル4及び5の開始時
点での割当てポインタ80、ライトバック・ポインタ8
2、及び完了ポインタ84の状態を示している。プロセ
ッサ10は、リネーム・バッファ34に対する読取り及
び書込みを制御するためにこれらのポインタを保持す
る。プロセッサ10は、リネーム・バッファが特定の命
令へ割当てられたか否かを示すために割当てポインタ8
0を保持する。図9では、割当てポインタ80がリネー
ム・バッファ8を指示することによって、リネーム・バ
ッファ8が、命令への割当てに関して使用可能な次のリ
ネーム・バッファであることを示す。
【0070】好適例の重要な特徴は、プロセッサ10が
さらに、(先に特定の命令に割当てられた)リネーム・
バッファが別の命令に対する再割当てのために使用可能
であるか否かを示すライトバック・ポインタ82を保持
する。図9に示すように、ライトバック・ポインタ82
は、リネーム・バッファ2を示している。これによっ
て、プロセッサ10が目的オペランド情報(図9のリネ
ーム・バッファの「情報」フィールドに記憶されてい
る)を取出し複写する次のリネーム・バッファは、リネ
ーム・バッファ2であることを示す。
【0071】従って、プロセッサ10は、特定の命令の
結果(目的オペランド情報)をそのリネーム・バッファ
からアーキテクチャ・レジスタへ記憶するために複写し
たならば、(その特定の命令へ先に割当てられていたリ
ネーム・バッファを過ぎて)ライトバック・ポインタ8
2を進める。この方法により、プロセッサ10は、特定
の命令の結果(目的オペランド情報)をアーキテクチャ
・レジスタへ複写するまでは、その結果を記憶するため
に割当てられたリネーム・バッファを保存する。
【0072】さらに、プロセッサ10は、(特定の命令
へ先に割当てられたリネーム・バッファのために)その
特定の命令が次の条件を満足するか否かを示す完了ポイ
ンタ84を保持する。 条件1:(命令がディスパッチされた)実行ユニットが
その命令の実行を終了する。 条件2:命令を処理するいずれのステージにおいても例
外が発生しなかった。 条件3:先にディスパッチされたいずれの命令も条件1
及び条件2を満足する。
【0073】図9では、完了ポインタ84はリネーム・
バッファ2を示しており、これによって、リネーム・バ
ッファ2が、条件1、2、及び3を満足する次のリネー
ム・バッファであることを示している。好適例の重要な
特徴は、プロセッサ10が、その命令の結果がリネーム
・バッファからアーキテクチャ・レジスタに記憶するべ
く複写されたか否かに無関係に完了ポインタ84を保持
することである。
【0074】従って、「リネーム・エントリ」は、完了
ポインタ84によって指示されるリネーム・バッファ及
びそれに続く割当てポインタ80によって指示される先
行するリネーム・バッファとして定義することができ
る。「ライトバック・エントリ」は、ライトバック・ポ
インタ82によって指示されるリネーム・バッファ及び
それに続く完了ポインタ84によって指示されるリネー
ム・バッファとして定義することができる。ライトバッ
ク・エントリは、「完了」した命令の結果を記憶する
が、その結果はリネーム・バッファからアーキテクチャ
・レジスタへは複写されていない。その理由の一例とし
て、アーキテクチャ・レジスタへのライト・ポートが使
用できないことが挙げられる。
【0075】概念的に云えば、ライトバック・エントリ
は、リネーム・エントリとアーキテクチャ・レジスタと
の間に置かれている。もしライトバック・ポートが完了
ステージにおいて使用可能であれば、結果はライトバッ
ク・エントリを通らずに直接アーキテクチャ・レジスタ
に書込まれるという利点がある。さらに、リネーム・エ
ントリと同様に、実行ユニットが、関連するアーキテク
チャ・レジスタを指定するような命令を実行する場合
は、プロセッサ10は、その情報を実行ユニットへ出力
するためにライトバック・エントリを操作する。
【0076】例えば、図10は、図8のサイクル6の開
始時点における割当てポインタ80、ライトバック・ポ
インタ82、及び完了ポインタ84の状態を示してい
る。図10では割当てポインタ80が変っていない。な
ぜなら、プロセッサ10が別の命令をディスパッチして
いないからである。これに対して、完了ポインタ84
は、リネーム・バッファ番号2からリネーム・バッファ
番号8へと進んでいる。これによって、全部で6個の目
的オペランドをもつ4つの命令INSTx、INSTx
+1、INSTx+2、及びINSTx+3がサイクル
5において完了したことを示している。
【0077】さらに、図10では、ライトバック・ポイ
ンタ82がリネーム・バッファ番号2からリネーム・バ
ッファ番号4へ進んでいる。これによって、命令INS
Tx及びINSTx+1についての目的オペランド情報
のサイクル5におけるライトバックを示している。図8
は、命令INSTx及びINSTx+1についてサイク
ル5において完了とライトバックがともに生じているこ
と(「完了/ライトバック」)を表現することでこの事
実を示している。この方法により、(リネーム・バッフ
ァ番号2及びリネーム・バッファ番号3にある)命令I
NSTx及びINSTx+1の結果がライトバック・エ
ントリを通らずに直接GPR32へ書込まれる。なぜな
ら、2つのライトバック・ポートがサイクル5の開始時
点において使用可能であったからである。図10では、
ライトバック・ポインタ82がリネーム・バッファ番号
4を越えては進まない。なぜなら、両方のライトパック
・ポートがサイクル5において命令INSTx及びIN
STx+1の結果をライトバックするために使用される
からである。
【0078】図11は、図8のサイクル7の開始時点に
おける割当てポインタ80、ライトバック・ポインタ8
2、及び完了ポインタ84の状態を示している。図8及
び図11で示されるように、両方のライトバック・ポー
トがサイクル6において命令INSTx+2の2つの結
果をライトバックするために使用される。従って、ライ
トバック・ポインタ82は、リネーム・バッファ番号4
からリネーム・バッファ番号6へ進んでいる。割当てポ
インタ80は変っていない。なぜなら、プロセッサ10
はさらに別の命令をディスパッチしていないからであ
る。また、完了ポインタ84も変っていない。なぜな
ら、プロセッサ10はさらに別の命令を完了していない
からである。
【0079】図12は、図8のサイクル8の開始時点に
おける割当てポインタ80、ライトバック・ポインタ8
2、及び完了ポインタ84の状態を示している。図8及
び図12で示されるように、両方のライトバック・ポー
トがサイクル7において命令INSTx+3の2つの結
果をライトバックするために使用される。従って、ライ
トバック・ポインタ82は、リネーム・バッファ番号6
からリネーム・バッファ番号8へ進んでいる。割当てポ
インタ80は変っていない。なぜなら、プロセッサ10
はさらに別の命令をディスパッチしてはいないからであ
る。また、完了ポインタ84も変っていない。なぜな
ら、プロセッサ10はさらに別の命令を完了してはいな
いからである。
【0080】図13は、プロセッサ10が完了をライト
バックから分離するという好適例の重要な特徴を用いな
い状況における4つの命令の種々のステージを示したも
のである。このような状況を表現するために、図13で
は、図7の再配列バッファ番号7、8、9及び10にそ
れぞれ関連する4つの命令INSTy、INSTy+
1、INSTy+2及びINSTy+3の種々のステー
ジを示している。
【0081】図14乃至図17は、図13によるプロセ
ッサのリネーム・バッファの概略図である。さらに具体
的には、図14は、図13のサイクル4及びサイクル5
の開始時点における割当てポインタ90及び完了ポイン
タ94の状態を示している。図15は、図13のサイク
ル6の開始時点における割当てポインタ90及び完了ポ
インタ94の状態を示している。図16は、図13のサ
イクル7の開始時点における割当てポインタ90及び完
了ポインタ94の状態を示している。図17は、図13
のサイクル8の開始時点における割当てポインタ90及
び完了ポインタ94の状態を示している。
【0082】図14乃至図17に示すように、プロセッ
サ10が完了をライトバックから分離するという好適例
の重要な特徴を用いない場合は、特定の命令は、その特
定の命令の結果が実際にその割当てられたリネーム・バ
ッファからアーキテクチャ・レジスタに記憶するために
複写された後にのみ完了される。これに対して、プロセ
ッサ10が完了をライトバックから分離するという好適
例の重要な特徴を用いる場合は、プロセッサはさらに、
(先に特定の命令を割当てられた)リネーム・バッファ
が別の命令に対する再割当てのために使用可能であるか
否かを示すためのライトバック・ポインタ82を保持す
る。さらに、プロセッサ10は、特定の命令の結果が実
際にその割当てられたリネーム・バッファからアーキテ
クチャ・レジスタに記憶するために複写されたか否かに
無関係にその特定の命令を「完了」する。従って、プロ
セッサ10は、特定のサイクルの中で4つまでの命令を
「完了」することができる。このことは、4つの命令の
各々が2つの目的オペランドをもっている場合であって
も、また、その特定のサイクルの間に全ての目的オペラ
ンドがGPR32へ複写されない場合であっても可能で
ある。
【0083】図18は、リネーム・バッファ34の別の
実施例のブロック図であり、この場合、「ライトバック
・エントリ」が「リネーム・エントリ」から分離したバ
ッファ110に記憶されている。この「リネーム・エン
トリ」は、バッファ112に記憶されている。バッファ
112の「リネーム・エントリ」からの情報は、その
「リネーム・エントリ」が割当てられた特定の命令の特
定のサイクルにおける完了に応答して、バッファ110
の「ライトバック・エントリ」に記憶するために出力さ
れる。バッファ110の「ライトバック・エントリ」か
らの情報は、GPRへの2つのライトバック・ポートの
うちの1つの特定のサイクル中の可用性に応答して、G
PR32の1つに記憶するために出力される。
【0084】バッファ112は、図18に示された8個
のポートのいずれを介してもバッファ110へ情報を出
力する。従って、バッファ112は、プロセッサ10の
いずれのサイクルにおいても8個までの「リネーム・エ
ントリ」からバッファ110へ情報を出力することがで
きる。従って、プロセッサ10は、特定のサイクルの中
で4つまでの命令を「完了」することができる。このこ
とは、4つの命令の各々が2つの目的オペランドをもっ
ている場合であっても、また、その特定のサイクルの間
に全ての目的オペランドがGPR32へ複写されない場
合であっても可能である。この完了の時点でもしライト
バック・ポートが使用可能であれば、結果(目的オペラ
ンド情報)がバッファ110の「ライトバック・エント
リ」を通らずに直接GPR32に書込まれることは有用
である。プロセッサ10は、マルチプレクサ113a及
び113bを適切に操作することによってこのようなバ
イパスを実現する。図18に示すとおり、これらのマル
チプレクサは、バッファ110及び112へ、並びにG
PR32へと接続されている。
【0085】図18のリネーム・バッファ34の別の実
施例における長所は、バッファ112のリネーム・エン
トリを、このリネーム・エントリが先に関係した命令
(すなわちこのリネーム・エントリが先に割当てられた
命令)が完了した後には(ライトバック以前であって
も)、別の命令に対して再割当てすることができる点で
ある。なぜなら、このリネーム・エントリの情報は、先
に関係した命令の完了に応答してバッファ110のライ
トバック・エントリに記憶するために適宜出力されるか
らである。図18の別の特徴は、マルチプレクサ114
が、状況に応じてバッファ110又はバッファ112か
ら実行ユニットへ選択された情報を適宜出力することで
ある。この状況とは、実行ユニットが、このような情報
に関するアーキテクチャ・レジスタを指定する命令を実
行する場合である。好適例におけるプロセッサ10は、
リネーム・バッファとアーキテクチャ・レジスタとの間
に2つライトバック・ポートをもっていたが、特定の実
施例における適切なライトバック・ポート数は、リネー
ム・エントリとライトバック・エントリとが一杯となっ
てそのために命令のディスパッチが遅れる確率の関数で
ある。
【0086】図2乃至図6に関して説明したとおり、プ
ロセッサ10は、2つの状況において、少なくとも先行
する全ての命令の完了までは実行直列化命令の実行を遅
らせる。第1の状況は、命令が、順不同に実行するべき
でない命令の場合である。第2の状況は、プロセッサ1
0が伝達回路を備えていないような少なくとも1つのソ
ース・オペランドを指定する命令の場合である。
【0087】第1の状況に関していくつかの命令は、特
殊用アーキテクチャ・レジスタ(SPR)40(図1)
に対して動作し、この場合は、命令の結果がリネーム・
バッファに介在的に記憶されることなくSPR40へ直
接書込まれる。このような命令の一例としては、情報を
GPR32の1つからSPR40の1つへと移動するT
O移動命令がある。図1に示すように、このTO移動命
令はCFXU26によって実行される。TO移動命令
は、実行されると即座にSPRの1つを更新する。同様
に、記憶命令は、実行されると即座にデータ・キャッシ
ュ16(図1)内のメモリ場所を更新する。プロセッサ
10は、このような命令については考慮しながら実行し
ない(この場合、命令の結果はリネーム・バッファに介
在的に記憶されずに直接アーキテクチャ・レジスタかメ
モリ場所に書込まれる)。これによって、プロセッサ1
0は精確な割込みと正確な例外を実現することができ
る。従って、順序どおりの完了とライトバックを確保す
るために、プロセッサ10は、TO移動命令や記憶命令
の実行を、全ての先行する命令が完了するまで遅らせ
る。
【0088】実行ユニットへディスパッチされた命令
が、その関連するEOKビット(再配列バッファ76内
のその命令に関するエントリの「命令形式」フィール
ド)を論理0にクリアされているならば、実行直列化ロ
ジック84が、そのディスパッチされた命令に先行する
全ての命令の「完了」に応答して信号を(その実行ユニ
ットに接続されたライン60、86、88、90、92
及び94を介して)出力する。実行ユニットは、実行直
列化ロジック84がこの信号を出力する場合にのみ、そ
のディスパッチされた命令を実行する。
【0089】図19乃至図21は、再配列バッファ76
の概略図である。図22は、図19乃至図21の5個の
命令の種々のステージを示した図である。図23乃至図
28は、プロセッサ10にリネーム・バッファ34の概
略図である。
【0090】図19は、図22のサイクル4の開始時点
での再配列バッファ76の状態を示している。よって、
図19では、再配列バッファ76は、図22のサイクル
3においてディスパッチされた4個の命令のための情報
を記憶する。図22は、4個の命令INSTa、INS
Ta+1、INSTa+2、及びINSTa+3の種々
のステージを示している。これらの命令は、各々、図1
9の再配列バッファ番号3、4、5及び6に関連してい
る。
【0091】図19によれば、命令INSTaは、FX
UA22へディスパッチされかつ2つの目的オペランド
をもつ(「目的GPR数」=2)。これに対して、命令
INSTa+1は、FXUB24へディスパッチされる
が、1つの目的オペランドをもつ(「目的GPR数」=
1)。命令INSTa+2は、LSU28へディスパッ
チされた記憶命令であり、目的オペランドをもたない
(「目的GPR数」=0)。さらに、再配列バッファ番
号5(命令INSTa+2に関する)は、命令INST
a+2が実行直列化されたことに対応してEOK=0で
ある。命令INSTa+3は、CFXU26へディスパ
ッチされかつ1つの目的オペランドをもつ(「目的GP
R数」=1)。
【0092】好適例の重要な特徴は、シーケンサ・ユニ
ット18が、命令の実行によって例外が生じる可能性が
あるか否かを判断することである。シーケンサ・ユニッ
ト18は、この判断を、命令の実行に先立って行う。も
し例外の可能性がなければ、シーケンサ・ユニット18
は、例外の可能性のないとされた命令の実行が実際に終
了したか否かには無関係にその命令に関する再配列バッ
ファのエントリ内の「終了」フィールドを「1」にセッ
トするという利点がある。
【0093】さらに、このような状況において、プロセ
ッサ10は、例外の可能性のないとされた命令の実行を
実際に終了させたか否かには無関係に、先行する全ての
命令を完了させたことに応じてその命令を「完了」させ
る。従って、プロセッサ10は、その命令の実行、及び
プログラム・シーケンスでその命令に先行する各命令の
実行によって例外が発生しないと判断したならば、例外
の可能性のないとされた各命令の実行を終えたか否かに
は無関係にその命令を実行する。このように、命令に完
了ステージが、その命令の実行ステージより先行するこ
とがあり得る。すなわち、この方法によってプロセッサ
10は、その命令の「早期完了」をサポートする。
【0094】「早期完了」をサポートすることによっ
て、プロセッサ10は、より速やかに次の実行直列化命
令(TO移動命令や記憶命令等であり、これらの命令の
結果はリネーム・バッファに介在的に記憶されずに直接
アーキテクチャ・レジスタに書込まれる)を実行できる
という利点がある。このことは実際に、プロセッサ10
の性能を低下させることなく精確な割込みと正確な例外
を実現する。なぜなら、全ての先行する命令は例外を発
生することなく既に終了しているか、又は、例外を発生
させずに実行を終了することになっているからである。
このような技術を用いることにより、プロセッサ10
は、順序どおりの完了と順序どおりのライトバックを確
保する。
【0095】例えば、図19では、命令INSTa+1
及びINSTa+3は、例外を発生する原因とはなり得
ない。よって、再配列バッファ番号4及び6において
「終了」=1である。図23は、図22のサイクル4の
開始時点でのリネーム・バッファ34の割当てポインタ
(AL)80、ライトバック・ポインタ(WB)82及
び完了ポインタ(CO)84の状態を示した図である。
図示のとおり、図23は、図19に対応する。図23で
は、WB82及びCO84はリネーム・バッファ2を指
示しており、AL80はリネーム・バッファ6を指示し
ている。リネーム・バッファ2及び3は命令INSTa
に割当てられている。リネーム・バッファ4は命令IN
STa+1に、そしてリネーム・バッファ5は命令IN
STa+3に割当てられている。注意すべき点は、命令
INSTa+2が割当てられたリネーム・バッファをも
っていないことである。なぜなら、命令INSTa+2
は、目的オペランドをもたないからである。リネーム・
バッファ2乃至5では、「情報有効」フィールド=0に
よりこれらのリネーム・バッファの「情報」フィールド
が有効なデータを記憶していないことを示す。サイクル
4(図22)の開始時点では、命令INSTa、INS
Ta+1、INSTa+2及びINSTa+3は未だ終
了した命令ではないので、「情報有効」=0である。
【0096】リネーム・バッファ4では、「桁上げ有
効」=1であり、これはINSTa+1がCAレジスタ
42を変更することを示している。前述のとおり、命令
a+1は例外の原因とはなり得ないので、再配列バッフ
ァ4内の「終了」フィールド=1であることを注記す
る。従って、プロセッサ10は、CAレジスタ42を変
更する命令の「早期完了」をサポートする。
【0097】図23乃至図29に示すように、CAビッ
ト情報は、リネーム・バッファ34に一時的に記憶され
る。それにも拘らず、好適例のプロセッサ10は、この
CAビット情報をリネーム・バッファ34から実行ユニ
ットへ伝達するための回路を備えていない。もし特定の
命令のソース・オペランド情報がCAレジスタ42を含
んでいれば、その特定の命令はCAレジスタ42を変更
する(任意の)先行する命令の結果に依存するソース・
オペランド情報をもっている。
【0098】図20は、図22のサイクル5の開始時点
での再配列バッファ76の状態を示している。従って、
図20では、再配列バッファ76は、図22のサイクル
4中にディスパッチされた命令INSTa+4について
の情報を記憶する。図22は、再配列バッファ番号7に
関連する命令INSTa+4の種々のステージを示して
いる。図20のように、命令INSTa+4は、FXU
A22へディスパッチされかつ1つの目的オペランドを
もつ(「目的GPR数」=1)。さらに、再配列バッフ
ァ番号7(命令INSTa+4に関する)は、命令IN
STa+4が実行直列化されていることに応じてEOK
=0である。
【0099】さらに、命令INSTaは、サイクル4で
実行を終えているので、図20の再配列バッファ番号3
において「終了」=1である。図22を参照すると、命
令INSTa+2は記憶命令である。サイクル4の間
に、LSU28は、記憶命令INSTa+2の最初の実
行ステージEXECAを終えている。EXECAの間
に、LSU28は、その記憶命令を翻訳しかつ記憶保護
のためにその記憶命令を検査する。従って、図20の再
配列バッファ番号5では「終了」=1である。
【0100】図24は、図22のサイクル5の開始時点
でのリネーム・バッファ34の割当てポインタ(AL)
80、ライトバック・ポインタ(WB)82、及び完了
ポインタ(CO)64の状態を示している。よって、図
24は、図20に対応する。図24に示すように、WB
82及びCO84は、リネーム・バッファ2を指示し続
けており、そしてAL80はリネーム・バッファ6から
進んでリネーム・バッファ7を指示している。従って、
リネーム・バッファ6は命令INSTa+4へ割当てら
れている。
【0101】リネーム・バッファ6では、「情報有効」
=0であり、これはこのリネーム・バッファの「情報」
フィールドが有効なデータを記憶していないことを示
す。サイクル5(図22)の開始時点では、命令INS
Ta+4は未だ実行を終えていないので、リネーム・バ
ッファ6の「情報有効」=0である。これに対して図2
4では、リネーム・バッファ2及び3は、命令INST
a及びINSTa+1が図22のサイクル4の間に実行
を終えているので「情報有効」=1であり、これらはリ
ネーム・バッファ2及び3の「情報」フィールドが有効
なデータ(図24の「情報」フィールドにDATAと表
現されている)を記憶していることを示す。
【0102】リネーム・バッファ6では、「桁上げ有
効」=1であり、これはINSTa+4がCAレジスタ
42を変更することを示す。さらに、命令INSTa+
4のソース・オペランド情報はCAレジスタを含む。す
なわちINSTa+4は実行直列化命令であって、CA
レジスタ42を変更する先行する命令INSTa+1の
結果に依存するソース・オペランド情報をもつ。命令I
NSTa+3はCAレジスタ42を変更しないが、IN
STa+3もまた、図22に矢印で示される先行する命
令INSTa+1の結果に依存するソース・オペランド
情報を有する。
【0103】図21は、図22のサイクル6の開始時点
における再配列バッファ76の状態を示している。図2
5は、図22のサイクル6の開始時点におけるリネーム
・バッファ34の割当てポインタ(AL)80、ライト
バック・ポインタ(WB)82、及び完了ポインタ(C
O)84の状態を示している。よって、図25は、図2
1に対応している。
【0104】図21に示すように、再配列バッファ番号
3、4、5及び6は、図22のサイクル5の間に「完
了」する命令INSTa、INSTa+1、INSTa
+2及びINSTa+3に応答して削除されている。こ
こで、命令INSTa+1は、サイクル5において実行
を終了する前にサイクル5において「早期完了」してい
ることを注記する。このことは図22に「ECOMP/
EXEC」として表現されている。すなわち、命令IN
STa+1は、実行するためにプロセッサ10の複数の
サイクルを必要とするような命令群の中の1つである。
【0105】図25を参照すると、プロセッサ10は、
全ての先行する命令(例えば、INSTa、INSTa
+1及びINSTa+2)を完了したことに応答して、
先に特定の命令(例えば、INSTa+3)に割当てら
れていた前のリネーム・バッファを指していた完了ポイ
ンタ84を進ませる(例えば、サイクル6の開始時点で
リネーム・バッファ5から進める)。このことは、プロ
セッサ10が実際にその特定の命令を終了したか否かに
は無関係である(例えば、INSTa+3は、サイクル
6から8の間も実行を続ける)。
【0106】また、サイクル5の間に、実行直列化ロジ
ック84(図3)は、命令INSTa及びINSTa+
1の完了に応答して、LSU28に接続されたライン9
2を介して信号を出力する。すなわちこれは、命令IN
STa+2に関する再配列バッファ番号5のEOKビッ
トが論理「0」にクリアされていたことから生じたこと
である。
【0107】サイクル5において、記憶命令であるIN
STa+2は、実行ステージEXECAが例外を発生せ
ずに終了しかつ先行する命令INSTa及びINSTa
+1が完了した(サイクル5)ことに応答して「完了」
される。第2の実行ステージであるEXECBの間、L
SU28は、データ・キャッシュ16のメモリ場所に実
際に情報を書込む。LSU28は、実行直列化ロジック
84がライン92を介して信号を出力した場合にのみ、
これに応答して記憶命令INSTa+2の実行ステージ
EXECBを実行する。
【0108】図25に示すように、割当てポインタ80
はリネーム・バッファ7を指し続けており、完了ポイン
タ84は、サイクル5における先行する命令INST
a、INSTa+1及びINSTa+3の「完了」に応
じてリネーム・バッファ2から進んでリネーム・バッフ
ァ6を指示している。さらに、図22に示すように、命
令INSTaの2つの結果が、サイクル5においてリネ
ーム・バッファ2及び3からGPR32(図1)へ複写
されている。従って、図25に示すように、ライトバッ
ク・ポインタ82はリネーム・バッファ2から進んでリ
ネーム・バッファ4を指示している。さらに、リネーム
・バッファ2及び3内の情報は、サイクル5において命
令INSTaの2つの結果がリネーム・バッファ2及び
3からGPR32へ複写されたことに応じて削除されて
いる。
【0109】図25では、サイクル5において命令IN
STa+1が実行を終了したことに応じて、リネーム・
バッファ4の「情報有効」=1となっている。このこと
は、リネーム・バッファ4の「情報」フィールドが有効
なデータ(図25の「情報」フィールドにDATAと表
現されている)を記憶していることを示し、また、リネ
ーム・バッファ4の「桁上げ」フィールドが有効なデー
タ(図25の「桁上げ」フィールドにCAと表現されて
いる)を記憶していることを示している。命令INST
a+4は、CAレジスタ42を変更する命令INSTa
+1の結果に依存するソース・オペランド情報をもつ実
行直列化命令であるので、また、リネーム・バッファ3
4の「桁上げ」フィールドは伝達されていないので、プ
ロセッサ10は、サイクル6における命令INSTa+
1のライトバック・ステージ(WBACK)で命令IN
STa+1の「桁上げ」結果がリネーム・バッファ4か
らGPR32へ複写される後まで命令INSTa+4の
実行を遅らせる。
【0110】これに対して、命令INSTa+3もま
た、命令INSTa+1の結果であるDATAに依存す
るソース・オペランド情報をもつが、リネーム・バッフ
ァ34の「情報」フィールドが伝達されている。従っ
て、リネーム・バッファ4の「情報有効」=1(サイク
ル5において命令INSTa+1が実行終了しているこ
とを示す)に応じて、プロセッサ10は、命令a+1の
ライトバック・ステージの終了に先立って命令INST
a+3の実行をサイクル6において開始する。
【0111】図26は、図22のサイクル7の開始時点
での割当てポインタ(AL)80、ライトバック・ポイ
ンタ(WB)82、及び完了ポインタ(CO)84の状
態を示している。図26に示すように、割当てポインタ
80はリネーム・バッファ7を指し続けており、完了ポ
インタ84はリネーム・バッファ6を指し続けている。
図22に示すように、命令INSTa+1の結果は、サ
イクル6においてリネーム・バッファ4からGPR32
へ複写されている。従って、図26に示すように、ライ
トバック・ポインタ82は、リネーム・バッファ4から
進んでリネーム・バッファ5を指示している。さらに、
リネーム・バッファ4内の情報は、命令INSTa+1
の結果がリネーム・バッファ4からGPR32へサイク
ル6において複写されたことに応じて削除されている。
【0112】好適例では、伝達されていないオペランド
(例えば、CAレジスタ42へ送られるはずのCAビッ
ト情報)に依存するソース・オペランド情報をもつ実行
直列化命令(例えばINSTa+4)に対して、プロセ
ッサ10は、次の条件に応答してその実行直列化命令
(例えばINSTa+4)を実行する。すなわち、リネ
ーム・バッファ34が、(1)全ての先行する命令が
「完了」したことを示した場合、及び(2)任意の先行
する「完了」した命令のライトバック・ステージがまだ
終了していないときに、そのような任意の先行する命令
が、そのまだ伝達されていないオペランドを変更してい
ないことを示した場合である。
【0113】従って、図26では、完了ポインタ84が
リネーム・バッファ6を指しており、これによって命令
a+4についてその全ての先行する命令が「完了」して
いることを示す。さらに、図26では、ライトバック・
ポインタ82がリネーム・バッファ5を指しており、こ
れによって、先行する「完了」した命令INSTa+3
のライトバック・ステージはまだ終了していないけれど
も、命令INSTa+3は、CAレジスタ42へ送られ
るはずのまだ伝達されていない情報をいずれも変更して
いない(なぜなら、リネーム・バッファ5の「桁上げ有
効」=0であるから)ことを示す。よってプロセッサ1
0は、サイクル7において命令INSTa+4を実行す
る。
【0114】別の実施例では、まだ伝達されていないオ
ペランド(例えば、CAレジスタ42へ送られるはずの
CAビット情報)に依存するソース・オペランド情報を
もつ実行直列化命令(例えばINSTa+4)に対し
て、プロセッサ10は、次の条件に応答してその実行直
列化命令(例えばINSTa+4)を実行する。すなわ
ち、リネーム・バッファ34が、(1)全ての先行する
命令が「完了」したことを示した場合、及び(2)全て
の先行する「完了」した命令のライトバック・ステージ
が終了しており、よってライトバック・ポインタ82と
完了ポインタ84とが同じリネーム・バッファを指して
いる場合である。
【0115】図27は、図22のサイクル8の開始時点
での割当てポインタ(AL)80、ライトバック・ポイ
ンタ(WB)82、及び完了ポインタ(CO)84の状
態を示している。図27に示すように、割当てポインタ
80はリネーム・バッファ7を指し続けており、ライト
バック・ポインタ82はリネーム・バッファ5を指し続
けている。命令INSTa+4は実行を終了し、また命
令INSTa+4がサイクル7において実行を終了する
に先立って同じくサイクル7で「完了」している。この
ことは図22では「EXEC/COMP」で表現されて
いる。従って、図27に示すように、完了ポインタ84
はリネーム・バッファ6から進んでリネーム・バッファ
7を指示している。
【0116】プロセッサ10が、全ての先行する命令
(例えば、ISNTa、ISNTa+1、INSTa+
2及びINSTa+3)を完了させたことに応答して、
実際にそれら全ての先行する命令を終了させたか否かに
は無関係に(例えば、INSTa+3はサイクル8にお
いて実行を続けている)、先に特定の命令(例えばIN
STa+4)へ割当てられていた前のリネーム・バッフ
ァ(例えば、サイクル8の開始前におけるリネーム・バ
ッファ6)から完了ポインタ84を進めることは有用で
ある。
【0117】図27では、命令INSTa+4がサイク
ル7で実行終了していることに応じて、リネーム・バッ
ファ6の「情報有効」=1である。このことは、リネー
ム・バッファ6の「情報」フィールドが有効なデータ
(図27の「情報」フィールドにDATAと表現されて
いる)を記憶していることを示し、また、リネーム・バ
ッファ6の「桁上げ」フィールドが有効なデータ(図2
7の「桁上げ」フィールドにCAと表現されている)を
記憶していることを示している。
【0118】図28は、図22のサイクル9の開始時点
での割当てポインタ(AL)80、ライトバック・ポイ
ンタ(WB)82、及び完了ポインタ(CO)84の状
態を示している。図28に示すように、割当てポインタ
80及び完了ポインタ84はリネーム・バッファ7を指
し続けており、ライトバック・ポインタ82はリネーム
・バッファ5を指し続けている。図28では、命令IN
STa+3がサイクル8で実行終了していることに応じ
て、リネーム・バッファ5の「情報有効」=1である。
このことは、リネーム・バッファ5の「情報」フィール
ドが有効なデータ(図28の「情報」フィールドにDA
TAと表現されている)を記憶していることを示す。
【0119】図29は、図22のサイクル10の開始時
点での割当てポインタ(AL)80、ライトバック・ポ
インタ(WB)82、及び完了ポインタ(CO)84の
状態を示している。図29に示すように、割当てポイン
タ80及び完了ポインタ84はリネーム・バッファ7を
指し続けている。図22に示すように、命令INSTa
+3及びINSTa+4の結果は、サイクル9において
それぞれリネーム・バッファ5及び6からGPR32へ
複写されている。従って、図29では、ライトバック・
ポインタ82がリネーム・バッファ5から進んでリネー
ム・バッファ7を指示している。さらに、命令INST
a+3及びINSTa+4の結果がサイクル9において
それぞれリネーム・バッファ5及び6からGPR32へ
複写されたことに応じて、リネーム・バッファ5及び6
内の情報は削除されている。
【0120】図30は、好適例の特徴である「早期完
了」を用いない別の実施例における図19乃至図21の
5つの命令の種々のステージを示した図である。図31
乃至図38は、図30に示した命令処理の各ステージに
おけるプロセッサ10のリネーム・バッファ34の概略
図を示している。図30に示すように、好適例における
「早期完了」を用いないで、命令INSTa+4の実行
をサイクル10まで遅らせている。そして命令INST
a+4の結果の完了/ライトバックについてはサイクル
11まで遅らせている。このことは、命令INSTa+
4が、全ての先行する命令の完了までその実行を遅らさ
れる実行直列化命令であることが理由である。好適例の
特徴である「早期完了」を用いないことから、命令IN
STa+3がサイクル9まで完了せず、このために、命
令INSTa+4の実行がサイクル10まで遅らされる
のである。
【0121】これに対して、図22では、命令ISNT
a+3がサイクル5において「早期完了」するので、命
令INSTa+4はサイクル7で実行される。命令IN
STa+4は、先行する命令INSTa+1の結果に依
存するソース・オペランド情報をもつ実行直列化命令で
あって、命令INSTa+1は、CAレジスタ42に送
られるはずであるがまだ伝達されていないCAビット情
報を変更する。それにも拘らず、図22では、命令IN
STa+4の実行がサイクル7で行われ、命令INST
a+4の結果の完了/ライトバックがサイクル9で行わ
れる。従って図22では、好適例における「早期完了」
を用いることにより、命令INSTa+4の実行、完了
及びライトバックの各ステージが、「早期完了」を用い
ない図30よりも早く行われる。
【0122】プロセッサ10は、伝達されていないソー
ス・オペランド(例えば、SPR40及びCAレジスタ
42)を指定する命令の実行を少なくとも全ての先行す
る命令が完了するまで遅らせる。この理由は、命令が、
伝達されていないソース・オペランドを指定する場合、
その命令を実行するためには、そのようなソース・オペ
ランド情報がアーキテクチャ・レジスタ内で使用可能で
ありかつ有効であることが必要だからである。このよう
な命令の例としては、(1)CAレジスタ42を読取る
拡張算術演算命令、及び(2)情報をSPR40の1つ
からGPR32の1つへ移動させるFROM移動命令が
ある。
【0123】たとえ全ての先行する命令が「完了」した
としても、先行する命令が「早期完了」したものであっ
て、その完了ステージがその実行ステージよりも先行し
ている可能性がある。先に図1乃至図5に関して述べた
ように、プロセッサ10は、GPR32、FPR36、
リネーム・バッファ34と38、及び制御レジスタから
実行ユニットへ情報を伝達する回路を備えている。もし
特定の命令が、先行する「早期完了」した命令の結果に
依存するソース・オペランド情報をもつとすれば、そし
てそのソース・オペランド情報が、このようなプロセッ
サ10の伝達回路によりサポートされるとすれば、プロ
セッサ10は、その「早期完了」した命令の実行ステー
ジを終えるまで(この時点で、「早期完了」した命令の
結果はリネーム・バッファ内で使用可能でありかつ有効
となっている)その特定の命令の実行を遅らせる。
【0124】これに対して、もしソース・オペランド情
報が、プロセッサ10の上記の伝達回路によりサポート
されなければ、プロセッサ10は、その「早期完了」し
た命令のライトバック・ステージを終えるまで(この時
点で、「早期完了」した命令の結果はアーキテクチャ・
レジスタ内で使用可能でありかつ有効となっている)そ
の特定の命令の実行を遅らせる。もし「早期完了」した
命令が実行を終えていなければ、その命令の結果(目的
オペランド情報)を使用することはできない。従ってこ
のような状況では、プロセッサ10は、その「早期完
了」した命令のライトバック・ステージをその命令が実
行を終えるまで遅らせる。
【0125】もしある命令を早期完了させる必要がある
ならば、シーケンサ・ユニット18は、その命令を関連
する実行ユニットへディスパッチする一方で標示信号を
出力する。このような標示信号に応答して、その関連す
る実行ユニットは、再配列バッファ76内のその命令に
割当てられてエントリを変更しないようにする。この理
由は、再配列バッファのエントリに割当てられた命令が
完了した時点で、その再配列バッファのエントリを別の
命令に再割当てする必要があるからであり、その場合、
その再配列バッファ内の情報はもはや有効でなくなるか
らである。
【0126】従って、もし命令を早期完了させる必要が
ある場合には、その命令に割当てられた再配列バッファ
のエントリが、その命令の実行ユニットが命令の実行を
終える前に無効になる可能性がある。好適例では、プロ
セッサ10の1つのサイクルの間にシーケンサ・ユニッ
ト18が、有効な情報をもつ最も古いものから4個の再
配列バッファのエントリを検査する。これによって、4
つの命令がその1つのサイクル中に同時に完了する命令
の候補となる。
【0127】好適例では、FROM移動命令はSPRか
ら情報を入力し、そしてSPRはTO移動命令によって
のみ変更される。プロセッサ10が、全ての先行する命
令の完了に応じてFROM移動命令を実行することは、
それらの先行する命令の中の1又は複数が「早期完了」
したものである場合であっても有効である。これは、プ
ロセッサ10が、順不同に実行されるべきでない命令
(例えば、TO移動命令や記憶命令)については「早期
完了」しないから可能なのである。もし全ての先行する
命令が「完了」したのであれば、プロセッサ10は、実
際に全ての先行するTO移動命令の実行を終了したので
ある。従って、プロセッサ10は、全ての先行する命令
の完了に応答してFROM移動命令を実行する。なぜな
らこの状況においてプロセッサ10は、実際に全ての先
行するTO移動命令の実行を終了しているからである。
【0128】好適例の別の重要な特徴は、プロセッサ1
0が、不正確で回復不能な浮動小数点例外モードをサポ
ートすることである。このモード下で動作するとき、プ
ロセッサ10は、いずれの浮動小数点命令がその例外条
件を発生したかを明確にせずに又は伝えずに浮動小数点
例外条件を報告する。プロセッサ10がこの例外を処理
するとき、プロセッサ10は、その例外を発生した浮動
小数点命令以降の任意の数の命令を完了した状態であっ
てもよい。このモード下で動作するとき、プロセッサ1
0は、例外条件を発生した浮動小数点命令の時点で逐一
プログラムの実行を停止させられることがないので、命
令シーケンスにおける高い性能を実現することができ
る。
【0129】正確な浮動小数点例外モード下で動作する
とき、プロセッサ10は、全ての先行する命令が完了し
ている場合であっても、浮動小数点命令の実行を終了す
る前にその浮動小数点命令を「早期完了」させることは
ない。
【0130】これに対して、不正確で回復不能な浮動小
数点例外モード下で動作するとき、プロセッサ10は、
全ての先行する命令が完了したことに応じて、浮動小数
点命令の実行終了の前にその浮動小数点命令を「早期完
了」させる。この不正確で回復不能な浮動小数点例外モ
ード下において、「早期完了」した浮動小数点命令は、
他の「早期完了」命令とは異なっている。なぜなら、プ
ロセッサ10は、たとえ浮動小数点命令の実行を継続す
ることが実際に浮動小数点例外条件を生じるかもしれな
い場合であってもその浮動小数点命令を「早期完了」さ
せるからである。各再配列バッファのエントリは、その
関連する命令が浮動小数点命令であるか否かを示してい
る。
【0131】浮動小数点命令の実行ステージ及び完了ス
テージが終了すると、その結果が、即座に浮動小数点リ
ネーム・バッファ38に記憶される。この結果は、全て
の先行する浮動小数点命令の結果がGPR36へ複写さ
れるまでは、リネーム・バッファ38に一時的に記憶さ
れている。この方法により、プロセッサ10は、プログ
ラム・シーケンスの順序どおりに各浮動小数点命令のラ
イトバック・ステージを処理する。
【0132】リネーム・バッファ38は、後にFPR3
6へ複写するために、一時的に浮動小数点命令の結果を
記憶する。さらに、リネーム・バッファ38は、アーキ
テクチャの浮動小数点状態及び制御レジスタ(FPSC
R)(図示せず)を適切に修正するために状態情報を記
憶する。リネーム・バッファ38からFPR36及びF
PSCRへと結果を複写する際に、浮動小数点例外(F
PSCRのFEXビットをセットすることにより示され
る)を検出したならば、プロセッサ10はこの例外を報
告する。
【0133】不正確で回復不能な浮動小数点例外モード
下で動作するとき、プロセッサ10は、いずれの浮動小
数点命令がその例外条件を発生したかを明確にせずに又
は伝えずに浮動小数点例外条件を報告する。この状況に
おいて、好適例のプロセッサ10は、以下のような方法
により例外を報告するという利点を有している。
【0134】第1に、プロセッサ10は、その浮動小数
点例外を検出したサイクルにおける命令の完了を停止さ
せる。プロセッサ10がまさに完了を停止させた時点に
おける命令より先行する全ての完了した命令の影響を、
プロセッサ10の状態が実際に反映している限り、その
完了を停止した時点での命令は重要ではない。
【0135】第2に、プロセッサ10は、全ての先行す
る「早期完了」した命令の実行を終える。さらに、プロ
セッサ10は、これらの命令の結果をアーキテクチャ・
レジスタへ複写する。これによって、リネーム・バッフ
ァ34及び38内の全てのライトバック・エントリが空
になる。
【0136】第3に、プロセッサ10は、浮動小数点例
外を報告する。不正確で回復不能な浮動小数点例外モー
ド下において、「早期完了」した浮動小数点命令は、他
の「早期完了」した命令とは異なっている。なぜなら、
プロセッサ10は、浮動小数点命令の実行を継続するこ
とが実際に浮動小数点例外条件を発生するかも知れない
場合であっても、その浮動小数点命令を「早期完了」さ
せるからである。従って、「早期完了」した又は実際に
完了した他の命令による他の例外は発生しない。
【0137】非浮動小数点命令から生じた例外を検出し
た場合、プロセッサ10は、全ての先行する「早期完
了」した浮動小数点命令がいずれの浮動小数点例外も発
生することなく実行終了するまでは、その非浮動小数点
例外の報告を遅らせる。この状況では、好適例における
プロセッサ10が、次のような方法により例外を報告す
るという利点を有する。
【0138】第1に、プロセッサ10は、その非浮動小
数点例外を検出したサイクルにおける命令の完了を停止
させる。プロセッサ10は、その非浮動小数点例外を発
生した命令の時点で命令の完了を停止させる。故に、そ
の命令は完了しない。
【0139】第2に、プロセッサ10は、先行する全て
の「早期完了」した命令の実行を終える。このことは、
プロセッサ10が、先行する全ての「早期完了」した浮
動小数点命令の実行を、いずれの浮動小数点例外も発生
することなく終えることができるか否かを決定する。さ
らに、プロセッサ10は、この命令の結果をアーキテク
チャ・レジスタに複写する。これによって、リネーム・
バッファ34及び38の全てのライトバック・エントリ
は空になる。この方法では、プロセッサ10が例外を報
告するとき、プロセッサ10の停止状態が存在する。さ
らに、例外が認知されるとき、他のライトバック・バッ
ファが空になるまで待つ間、プロセッサ10の停止状態
が存在する。
【0140】第3に、もしプロセッサ10が浮動小数点
例外を検出しなかったならば、プロセッサ10は、正確
な非浮動小数点例外を報告する。これに対して、もしプ
ロセッサ10が浮動小数点例外を検出したならば、プロ
セッサ10は、不正確で回復不能な浮動小数点例外を報
告する。
【0141】まとめとして、本発明の構成を以下のとお
り開示する。
【0142】(1)オペレーションの処理システムを操
作する方法において、特定の命令を実行するべく実行回
路へディスパッチするステップと、前記特定の命令のデ
ィスパッチの後、該特定の命令の実行が終了するより前
に、実行直列化命令をディスパッチするステップとを有
するオペレーションの処理システムを操作する方法。 (2)前記ディスパッチされた実行直列化命令の実行
を、少なくとも前記特定の命令の実行が終了するまでは
遅らせるステップを含む上記(1)に記載の方法。 (3)前記実行直列化命令のディスパッチの後、前記特
定の命令の実行を終了するより前に別の命令を前記実行
回路へディスパッチするステップを含む上記(2)に記
載の方法。 (4)前記特定の命令の実行を終了するより前に前記別
の命令の実行を開始するステップを含む上記(3)に記
載の方法。 (5)前記実行直列化命令をディスパッチするステップ
が、該実行直列化命令を前記実行回路の保有ステーショ
ンへディスパッチするステップを含む上記(1)に記載
の方法。 (6)前記実行直列化命令をディスパッチするステップ
が、前記実行回路による該実行直列化命令の実行を禁止
する標示信号を該実行回路に対して出力するステップを
含む上記(1)に記載の方法。 (7)前記特定の命令の実行が終了することに応答し
て、前記実行回路による前記実行直列化命令の実行を開
始するために該実行回路に対して別の標示信号を出力す
るステップを含む上記(6)に記載の方法。 (8)前記実行直列化命令が、順不同に実行されるべき
でない命令である上記(1)に記載の方法。 (9) 前記実行直列化命令の結果が、リネーム・バッ
ファに一時的に記憶されることなく直接記憶場所に書込
まれる上記(8)に記載の方法。 (10)前記実行直列化命令が、その全てのソース・オ
ペランド情報が使用可能でありかつ有効となるまで実行
を遅らされる上記(1)に記載の方法。 (11)前記実行直列化命令が、少なくとも1つの伝達
されていないソース・オペランドを指定する上記(1
0)に記載の方法。 (12)オペレーションの処理システムにおいて、命令
を実行する実行回路と、前記実行回路に接続され、特定
の命令を実行するべく実行回路へディスパッチし、かつ
該特定の命令のディスパッチの後、該特定の命令の実行
が終了するより前に実行直列化命令をディスパッチする
ディスパッチ回路とを有するオペレーションの処理シス
テム。 (13)前記実行回路が、前記ディスパッチされた実行
直列命令の実行を、少なくとも前記特定の命令の実行が
終了するまで遅らせるための回路を有する上記(12)
に記載のシステム。 (14)前記ディスパッチ回路が、前記特定の命令の実
行が終了するより前でありかつ前記実行直列化命令をデ
ィスパッチした後に、別の命令を前記実行回路へディス
パッチするべく動作可能である上記(13)に記載のシ
ステム。 (15)前記実行回路が、前記特定の命令の実行が終了
するより前に前記別の命令の実行を開始するための回路
を有する上記(14)に記載のシステム。 (16)前記実行回路が少なくとも1つの保有ステーシ
ョンを有し、かつ前記ディスパッチ回路が前記実行直列
化命令を該保有ステーションへディスパッチする上記
(12)に記載のシステム。 (17)前記ディスパッチ回路が、前記実行回路による
前記ディスパッチされた実行直列化命令の実行を禁止す
る標示信号を該実行回路に対して出力する上記(12)
に記載のシステム。 (18)前記実行回路が、前記特定の命令の実行が終了
したことに応答して、前記ディスパッチされた実行直列
化命令の実行を開始するための回路を有する上記(1
7)に記載のシステム。 (19)前記実行直列化命令が、順不同に実行されるべ
きでない命令である上記(12)に記載のシステム。 (20)前記実行直列化命令の結果が、リネーム・バッ
ファに一時的に記憶されることなく直接記憶場所に書込
まれる上記(19)に記載のシステム。 (21)前記実行直列化命令が、その全てのソース・オ
ペランド情報が使用可能でありかつ有効となるまで実行
を遅らされる上記(12)に記載のシステム。 (22)前記実行直列化命令が、少なくとも1つの伝達
されていないソース・オペランドを指定する上記(2
1)に記載のシステム。 (23)前記実行回路が、前記特定の命令を実行するた
めの第1の実行回路と、前記実行直列化命令を実行する
ための第2の実行回路とを有する上記(12)に記載の
システム。
【0143】
【発明の効果】本発明によるオペレーションの処理シス
テム及び方法においては、特定の命令が実行されるべく
実行回路にディスパッチされ、そしてこの特定の命令の
ディスパッチの後、この特定の命令の実行が終了する前
に、実行直列化命令が実行回路へディスパッチされる構
成としたので、実行直列化命令が、そのプログラム・シ
ーケンス内で後にくる他の命令の実行に対して悪影響を
及ぼさないという効果を実現する。
【図面の簡単な説明】
【図1】本発明の好適例による情報処理のためのプロセ
ッサのブロック図である。
【図2】図1のプロセッサの固定小数点実行ユニットの
ブロック図である。
【図3】図1のプロセッサのシーケンサ・ユニットのブ
ロック図である。
【図4】図3のシーケンサ・ユニットの再配列バッファ
の概略図である。
【図5】図1のプロセッサにより処理される命令の種々
のステージを示した図である。
【図6】図1のプロセッサにより処理される命令の種々
のステージを示した図である。
【図7】図1のプロセッサの再配列バッファの概略図で
ある。
【図8】図7の4つの命令の種々のステージを示す図で
ある。
【図9】図1のプロセッサの再配列バッファの概略図で
ある。
【図10】図1のプロセッサの再配列バッファの概略図
である。
【図11】図1のプロセッサの再配列バッファの概略図
である。
【図12】図1のプロセッサの再配列バッファの概略図
である。
【図13】好適例の重要な特徴を用いない状況における
4つの命令の種々のステージを示す図でる。
【図14】図13におけるプロセッサの再配列バッファ
の概略図である。
【図15】図13におけるプロセッサの再配列バッファ
の概略図である。
【図16】図13におけるプロセッサの再配列バッファ
の概略図である。
【図17】図13におけるプロセッサの再配列バッファ
の概略図である。
【図18】図1のプロセッサのリネーム・バッファの別
の実施例のブロック図である。
【図19】図1のプロセッサの再配列バッファの概略図
である。
【図20】図1のプロセッサの再配列バッファの概略図
である。
【図21】図1のプロセッサの再配列バッファの概略図
である。
【図22】図19乃至図21の5つの命令の種々のステ
ージを示す図である。
【図23】図1のプロセッサのリネーム・バッファの概
略図である。
【図24】図1のプロセッサのリネーム・バッファの概
略図である。
【図25】図1のプロセッサのリネーム・バッファの概
略図である。
【図26】図1のプロセッサのリネーム・バッファの概
略図である。
【図27】図1のプロセッサのリネーム・バッファの概
略図である。
【図28】図1のプロセッサのリネーム・バッファの概
略図である。
【図29】図1のプロセッサのリネーム・バッファの概
略図である。
【図30】好適例の重要な特徴を用いない状況における
図19乃至図21の5つの命令の種々のステージを示す
図である。
【図31】図29に示した命令処理の種々のサイクルに
おける図1のプロセッサのリネーム・バッファの概略図
である。
【図32】図29に示した命令処理の種々のサイクルに
おける図1のプロセッサのリネーム・バッファの概略図
である。
【図33】図29に示した命令処理の種々のサイクルに
おける図1のプロセッサのリネーム・バッファの概略図
である。
【図34】図29に示した命令処理の種々のサイクルに
おける図1のプロセッサのリネーム・バッファの概略図
である。
【図35】図29に示した命令処理の種々のサイクルに
おける図1のプロセッサのリネーム・バッファの概略図
である。
【図36】図29に示した命令処理の種々のサイクルに
おける図1のプロセッサのリネーム・バッファの概略図
である。
【図37】図29に示した命令処理の種々のサイクルに
おける図1のプロセッサのリネーム・バッファの概略図
である。
【図38】図29に示した命令処理の種々のサイクルに
おける図1のプロセッサのリネーム・バッファの概略図
である。
【符号の説明】
10 プロセッサ 12 バス・インターフェース・ユニット 14 命令キャッシュ 16 データ・キャッシュ 18 シーケンサ・ユニット 20 分岐ユニット 22 固定小数点ユニットA 24 固定小数点ユニットB 26 複素固定小数点ユニット 28 ロード/記憶ユニット 30 浮動小数点ユニット 32 GPR 34 固定小数点リネーム・バッファ 36 FPR 38 浮動小数点リネーム・バッファ 40 SPR 42 桁上げビット・レジスタ 50 オペランド 54 実行ロジック 56 制御ロジック 70 命令バッファ 72 デコーダ・ロジック 74 ディスパッチ・ロジック 80 完了ロジック 82 例外ロジック 84 実行直列化ロジック

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】オペレーションの処理システムを操作する
    方法において、 特定の命令を実行するべく実行回路へディスパッチする
    ステップと、 前記特定の命令のディスパッチの後、該特定の命令の実
    行が終了するより前に、実行直列化命令をディスパッチ
    するステップとを有するオペレーションの処理システム
    を操作する方法。
  2. 【請求項2】前記ディスパッチされた実行直列化命令の
    実行を、少なくとも前記特定の命令の実行が終了するま
    では遅らせるステップを含む請求項1に記載の方法。
  3. 【請求項3】前記実行直列化命令のディスパッチの後、
    前記特定の命令の実行を終了するより前に別の命令を前
    記実行回路へディスパッチするステップを含む請求項2
    に記載の方法。
  4. 【請求項4】前記特定の命令の実行を終了するより前に
    前記別の命令の実行を開始するステップを含む請求項3
    に記載の方法。
  5. 【請求項5】前記実行直列化命令をディスパッチするス
    テップが、該実行直列化命令を前記実行回路の保有ステ
    ーションへディスパッチするステップを含む請求項1に
    記載の方法。
  6. 【請求項6】前記実行直列化命令をディスパッチするス
    テップが、前記実行回路による該実行直列化命令の実行
    を禁止する標示信号を該実行回路に対して出力するステ
    ップを含む請求項1に記載の方法。
  7. 【請求項7】前記特定の命令の実行が終了することに応
    答して、前記実行回路による前記実行直列化命令の実行
    を開始するために該実行回路に対して別の標示信号を出
    力するステップを含む請求項6に記載の方法。
  8. 【請求項8】前記実行直列化命令が、順不同に実行され
    るべきでない命令である請求項1に記載の方法。
  9. 【請求項9】前記実行直列化命令の結果が、リネーム・
    バッファに一時的に記憶されることなく直接記憶場所に
    書込まれる請求項8に記載の方法。
  10. 【請求項10】前記実行直列化命令が、その全てのソー
    ス・オペランド情報が使用可能でありかつ有効となるま
    で実行を遅らされる請求項1に記載の方法。
  11. 【請求項11】前記実行直列化命令が、少なくとも1つ
    の伝達されていないソース・オペランドを指定する請求
    項10に記載の方法。
  12. 【請求項12】オペレーションの処理システムにおい
    て、 命令を実行する実行回路と、 前記実行回路に接続され、特定の命令を実行するべく実
    行回路へディスパッチし、かつ該特定の命令のディスパ
    ッチの後、該特定の命令の実行が終了するより前に実行
    直列化命令をディスパッチするディスパッチ回路とを有
    するオペレーションの処理システム。
  13. 【請求項13】前記実行回路が、前記ディスパッチされ
    た実行直列命令の実行を、少なくとも前記特定の命令の
    実行が終了するまで遅らせるための回路を有する請求項
    12に記載のシステム。
  14. 【請求項14】前記ディスパッチ回路が、前記特定の命
    令の実行が終了するより前でありかつ前記実行直列化命
    令をディスパッチした後に、別の命令を前記実行回路へ
    ディスパッチするべく動作可能である請求項13に記載
    のシステム。
  15. 【請求項15】前記実行回路が、前記特定の命令の実行
    が終了するより前に前記別の命令の実行を開始するため
    の回路を有する請求項14に記載のシステム。
  16. 【請求項16】前記実行回路が少なくとも1つの保有ス
    テーションを有し、かつ前記ディスパッチ回路が前記実
    行直列化命令を該保有ステーションへディスパッチする
    請求項12に記載のシステム。
  17. 【請求項17】前記ディスパッチ回路が、前記実行回路
    による前記ディスパッチされた実行直列化命令の実行を
    禁止する標示信号を該実行回路に対して出力する請求項
    12に記載のシステム。
  18. 【請求項18】前記実行回路が、前記特定の命令の実行
    が終了したことに応答して、前記ディスパッチされた実
    行直列化命令の実行を開始するための回路を有する請求
    項17に記載のシステム。
  19. 【請求項19】前記実行直列化命令が、順不同に実行さ
    れるべきでない命令である請求項12に記載のシステ
    ム。
  20. 【請求項20】前記実行直列化命令の結果が、リネーム
    ・バッファに一時的に記憶されることなく直接記憶場所
    に書込まれる請求項19に記載のシステム。
  21. 【請求項21】前記実行直列化命令が、その全てのソー
    ス・オペランド情報が使用可能でありかつ有効となるま
    で実行を遅らされる請求項12に記載のシステム。
  22. 【請求項22】前記実行直列化命令が、少なくとも1つ
    の伝達されていないソース・オペランドを指定する請求
    項21に記載のシステム。
  23. 【請求項23】前記実行回路が、 前記特定の命令を実行するための第1の実行回路と、 前記実行直列化命令を実行するための第2の実行回路と
    を有する請求項12に記載のシステム。
JP6317871A 1994-03-31 1994-12-21 オペレーションの処理システム及び方法 Expired - Lifetime JP2742392B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US22099394A 1994-03-31 1994-03-31
US220993 1994-03-31

Publications (2)

Publication Number Publication Date
JPH07271582A true JPH07271582A (ja) 1995-10-20
JP2742392B2 JP2742392B2 (ja) 1998-04-22

Family

ID=22825892

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6317871A Expired - Lifetime JP2742392B2 (ja) 1994-03-31 1994-12-21 オペレーションの処理システム及び方法

Country Status (13)

Country Link
US (1) US6041167A (ja)
EP (1) EP0753173B1 (ja)
JP (1) JP2742392B2 (ja)
KR (1) KR0145035B1 (ja)
CN (1) CN1099082C (ja)
AT (1) ATE177546T1 (ja)
CA (1) CA2137046C (ja)
DE (1) DE69417071T2 (ja)
HU (1) HUT75816A (ja)
PL (1) PL177392B1 (ja)
RU (1) RU2150738C1 (ja)
TW (1) TW353732B (ja)
WO (1) WO1995027246A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999008184A1 (en) * 1997-08-06 1999-02-18 Advanced Micro Devices, Inc. An apparatus and method for accessing special registers without serialization
EP2169539A4 (en) * 2007-06-20 2010-12-29 Fujitsu Ltd INSTRUCTION MANAGEMENT DEVICE AND METHOD
WO2008155839A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 命令処理装置
US7913067B2 (en) * 2008-02-20 2011-03-22 International Business Machines Corporation Method and system for overlapping execution of instructions through non-uniform execution pipelines in an in-order processor
US10514927B2 (en) 2014-03-27 2019-12-24 Intel Corporation Instruction and logic for sorting and retiring stores
CN108255743A (zh) * 2017-12-06 2018-07-06 中国航空工业集团公司西安航空计算技术研究所 一种用于在染色内核中写回仲裁电路
KR20220146835A (ko) * 2021-04-26 2022-11-02 한국전자통신연구원 컴퓨팅 자원 분할 운용 방법 및 장치

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04153733A (ja) * 1990-10-17 1992-05-27 Mitsubishi Electric Corp 並列処理装置における命令供給装置
JPH04153734A (ja) * 1990-10-17 1992-05-27 Mitsubishi Electric Corp 並列処理装置
JPH07152559A (ja) * 1993-10-18 1995-06-16 Cyrix Corp パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ
JPH07182160A (ja) * 1993-10-29 1995-07-21 Advanced Micro Devicds Inc スーパースカラマイクロプロセッサ
JPH07234792A (ja) * 1994-02-23 1995-09-05 Fujitsu Ltd コンパイル処理装置

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5776634A (en) * 1980-10-31 1982-05-13 Hitachi Ltd Digital signal processor
JPH069028B2 (ja) * 1986-02-18 1994-02-02 日本電気株式会社 演算装置
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
JPH06103494B2 (ja) * 1986-11-18 1994-12-14 株式会社日立製作所 ベクトル処理装置の制御方式
JPH02103656A (ja) * 1988-10-12 1990-04-16 Fujitsu Ltd 主記憶参照の遂次化制御方式
US5075840A (en) * 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
JPH0630094B2 (ja) * 1989-03-13 1994-04-20 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチプロセツサ・システム
JP2519798B2 (ja) * 1989-05-30 1996-07-31 富士通株式会社 多重プロセッサシステムにおけるシリアライズ機能の検証方式
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
US5075846A (en) * 1989-09-29 1991-12-24 Motorola, Inc. Memory access serialization as an MMU page attribute
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
JPH07101410B2 (ja) * 1990-01-17 1995-11-01 インターナショナル、ビジネス、マシーンズ、コーポレーション データ処理ネットワークにおいて逐次化手段の試験のため命令流の実行を同期させる方法
US5077692A (en) * 1990-03-05 1991-12-31 Advanced Micro Devices, Inc. Information storage device with batch select capability
US5261066A (en) * 1990-03-27 1993-11-09 Digital Equipment Corporation Data processing system and method with small fully-associative cache and prefetch buffers
IL94115A (en) * 1990-04-18 1996-06-18 Ibm Israel Dynamic process for creating pseudo-random test templates for pompous hardware design violence
US5197135A (en) * 1990-06-26 1993-03-23 International Business Machines Corporation Memory management for scalable compound instruction set machines with in-memory compounding
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
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
US5257354A (en) * 1991-01-16 1993-10-26 International Business Machines Corporation System for monitoring and undoing execution of instructions beyond a serialization point upon occurrence of in-correct results
DE69231762T2 (de) * 1991-07-08 2001-07-26 Seiko Epson Corp Risc-prozessor mit dehnbarer architektur
EP0529303A3 (en) * 1991-08-29 1993-09-22 International Business Machines Corporation Checkpoint synchronization with instruction overlap enabled
US5269017A (en) * 1991-08-29 1993-12-07 International Business Machines Corporation Type 1, 2 and 3 retry and checkpointing
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
CA2123442A1 (en) * 1993-09-20 1995-03-21 David S. Ray Multiple execution unit dispatch with instruction dependency

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04153733A (ja) * 1990-10-17 1992-05-27 Mitsubishi Electric Corp 並列処理装置における命令供給装置
JPH04153734A (ja) * 1990-10-17 1992-05-27 Mitsubishi Electric Corp 並列処理装置
JPH07152559A (ja) * 1993-10-18 1995-06-16 Cyrix Corp パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ
JPH07182160A (ja) * 1993-10-29 1995-07-21 Advanced Micro Devicds Inc スーパースカラマイクロプロセッサ
JPH07234792A (ja) * 1994-02-23 1995-09-05 Fujitsu Ltd コンパイル処理装置

Also Published As

Publication number Publication date
KR950027573A (ko) 1995-10-18
WO1995027246A1 (en) 1995-10-12
ATE177546T1 (de) 1999-03-15
HUT75816A (en) 1997-05-28
JP2742392B2 (ja) 1998-04-22
EP0753173B1 (en) 1999-03-10
CA2137046A1 (en) 1995-10-01
CN1121210A (zh) 1996-04-24
EP0753173A1 (en) 1997-01-15
US6041167A (en) 2000-03-21
DE69417071T2 (de) 1999-10-14
DE69417071D1 (de) 1999-04-15
RU2150738C1 (ru) 2000-06-10
CN1099082C (zh) 2003-01-15
TW353732B (en) 1999-03-01
PL177392B1 (pl) 1999-11-30
PL316566A1 (en) 1997-01-20
HU9602595D0 (en) 1996-11-28
CA2137046C (en) 2000-01-18
KR0145035B1 (ko) 1998-08-17

Similar Documents

Publication Publication Date Title
JP2742393B2 (ja) オペレーションの処理システム及び方法
JP2694124B2 (ja) 処理システム及び操作方法
US5611063A (en) Method for executing speculative load instructions in high-performance processors
JP2682812B2 (ja) オペレーションの処理システム及び方法
US5535346A (en) Data processor with future file with parallel update and method of operation
US5694565A (en) Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US5913054A (en) Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle
US6192461B1 (en) Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle
JPH07281894A (ja) 処理システムおよび動作の方法
US5524224A (en) System for speculatively executing instructions wherein mispredicted instruction is executed prior to completion of branch processing
JPH10161872A (ja) 命令データを位置合せするための方法および装置
JP3611304B2 (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
US5678016A (en) Processor and method for managing execution of an instruction which determine subsequent to dispatch if an instruction is subject to serialization
JP2742392B2 (ja) オペレーションの処理システム及び方法
US5878242A (en) Method and system for forwarding instructions in a processor with increased forwarding probability
US5926645A (en) Method and system for enabling multiple store instruction completions in a processing system
US5758117A (en) Method and system for efficiently utilizing rename buffers to reduce dispatch unit stalls in a superscalar processor
US6266761B1 (en) Method and system in an information processing system for efficient maintenance of copies of values stored within registers
JPH08115215A (ja) 処理システム及び操作方法