JPH07325716A - パイプラインプロセッサおよびその動作方法 - Google Patents

パイプラインプロセッサおよびその動作方法

Info

Publication number
JPH07325716A
JPH07325716A JP7134010A JP13401095A JPH07325716A JP H07325716 A JPH07325716 A JP H07325716A JP 7134010 A JP7134010 A JP 7134010A JP 13401095 A JP13401095 A JP 13401095A JP H07325716 A JPH07325716 A JP H07325716A
Authority
JP
Japan
Prior art keywords
instruction
resynchronization
condition
floating point
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP7134010A
Other languages
English (en)
Other versions
JP3751049B2 (ja
Inventor
Scott A White
スコット・エイ・ホワイト
Michael D Goddard
マイケル・ディー・ゴッダード
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JPH07325716A publication Critical patent/JPH07325716A/ja
Application granted granted Critical
Publication of JP3751049B2 publication Critical patent/JP3751049B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • 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/3824Operand accessing
    • 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/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Saccharide Compounds (AREA)
  • Nitrogen Condensed Heterocyclic Rings (AREA)

Abstract

(57)【要約】 【目的】 パイプラインプロセッサの動作を再同期化さ
せる方法を提供する。 【構成】 上記プロセッサ110はフェッチプログラム
カウンタを更新して命令をフェッチし、その順に複数の
命令を同時に発行する。命令は機能ユニットのリザベー
ションステーションで待ち行列に入り、対応する結果エ
ントリが発行順にリオーダバッファ126のキューに割
当てられる。命令の実行はフェッチ順に行なわれるわけ
ではなく、実行結果が結果エントリに入れられ、キュー
のヘッドにあるものから回収され、命令ポインタが更新
される。プロセッサ110は再同期化条件を検出し、そ
の命令に対応する結果エントリで再同期化条件が認めら
れると再同期化される。このようなエントリが回収され
ると、プロセッサ110はリオーダバッファ126およ
び上記ステーションをフラッシュし、命令ポインタがア
ドレス指定する命令にフェッチプログラムカウンタを再
指定する。

Description

【発明の詳細な説明】
【0001】
【発明の背景】本発明はプロセッサアーキテクチャに関
し、より特定的にはある条件に続く動作を再同期化させ
るためのプロセッサアーキテクチャに関する。
【0002】
【関連技術の説明】プロセッサおよびコンピュータは一
般に、命令のフェッチ、デコードおよび実行のステップ
を含むいくつかのステップで命令を処理する。初期の技
術によるプロセッサはこれらのステップをシリアルに実
行していた。技術の進歩によって、多くの命令の別々の
ステップを同時に実行する、スカラプロセッサとも称す
るパイプラインアーキテクチャのプロセッサをもたらし
た。「スーパースカラ」プロセッサはパイプライン構造
を用いて実現されるが、各処理ステップにおいていくつ
かのスカラ命令を同時に処理することで性能を向上す
る。したがって、スーパースカラマイクロプロセッサパ
イプラインでは一度にいくつかの命令が処理される。
【0003】スーパースカラプロセッサでは、データま
たは資源が利用可能でないために発行された命令が実行
できないという、命令のコンフリクトおよび従属の条件
が生じる。たとえば発行された命令は、そのオペランド
が他の未実行の命令によって計算されるデータに従属し
ていれば、実行できない。したがって、スーパースカラ
プロセッサの性能は、複数の同時に実行される命令が共
通のレジスタにアクセスすることが可能であれば、さら
に向上する。しかしながら、これは本質的に資源のコン
フリクトを起こす。レジスタのコンフリクトを解決する
技術の1つは、「レジスタリネーム」と呼ばれる。複数
の一時リネームレジスタが永久レジスタの値を設定する
各命令につき1つダイナミックに割当てられる。この態
様で、1つの永久レジスタが複数の命令の結果を受取る
ための宛先として機能し得る。これらの結果は、複数の
割当てられた一時リネームレジスタに保持される。プロ
セッサは、リネームレジスタからデータを受取る命令が
適切なレジスタにアクセスするように、リネームレジス
タを追跡する。このレジスタリネーム機能は、一時リネ
ームレジスタを含むリオーダバッファを用いて実現でき
る。
【0004】スーパースカラプロセッサの性能は、分岐
命令の推測による実行によってさらに向上し、それによ
ると、分岐の条件が予測され、それらの予測に基づいて
命令が処理されて、予測の検証を待つことなく命令を連
続的にデコードする。命令のデコードと命令の実行とを
分けるには、命令を実行する機能ユニットとプロセッサ
の命令デコーダとの間でバッファを用いる。
【0005】したがって、スーパースカラプロセッサパ
イプラインでは一度にいくつかの命令が処理されるだけ
でなく、推測による状態にあるさらなる命令がプロセッ
サバッファ内に保持される。
【0006】パイプラインでの実行を終了して推測によ
る命令の結果は破棄するが、もはや推測によるものでは
ない命令の結果は保持することが望ましい条件がしばし
ば生じる。
【0007】スーパースカラパイプラインおよびプロセ
ッサの推測の状態をクリアして、推測によるものではな
い最も最近の命令から命令の処理を再び始めるプロセッ
サおよびその動作方法が所望される。プロセッサの推測
によるものではない状態は、正確に保持されなくてはな
らない。
【0008】
【発明の概要】第1の実施例に従えば、命令フェッチの
順序だったシーケンスを決定するステップと、決定され
た順序で命令をフェッチするステップと、フェッチされ
た命令を決定された順序で待ち行列に入れるステップ
と、命令を推測によって実行して、命令実行のためにプ
ロセッサの資源およびデータの準備が整い、利用可能と
なったときに、結果を発生するステップとを含むパイプ
ラインプロセッサの動作方法が説明される。命令を推測
によって実行するこの順序を、順番ではない命令の実行
と称する。この方法はさらに、フェッチした順に実行さ
れた命令結果を回収するステップと、命令ポインタを用
いて実行された命令の結果の回収を追跡するステップと
をさらに含む。この方法はさらに、プロセッサを再同期
化することを含み、命令が実行される際の再同期化条件
を検出するステップと、再同期化条件が検出された命令
についてその結果の回収の際にプロセッサを再同期化さ
せるステップとを含む。再同期化の動作は、フェッチさ
れた命令の待ち行列をフラッシュするステップと、回収
された命令の結果の追跡に基づいて命令フェッチのシー
ケンスを再指定するステップとを含む。
【0009】第2の実施例に従えば、命令フェッチの順
序だったシーケンスを決定するためのフェッチプログラ
ムカウンタと、フェッチプログラムカウンタに接続され
て順序どおりに命令をフェッチする命令キャッシュと、
命令キャッシュに接続されて順序どおりにフェッチされ
た命令を待ち行列に入れるためのリオーダバッファアレ
イと、命令キャッシュおよびリオーダバッファアレイに
接続されて命令を順番にではなく推測によって実行して
結果を発生する機能ユニットとを含むパイプラインプロ
セッサが説明される。このプロセッサはさらに、機能ユ
ニットに接続されて順序どおりに実行された命令の結果
を回収するためのリオーダバッファコントローラと、リ
オーダバッファコントローラに接続されて実行された命
令の結果の回収を追跡するための命令ポインタと、機能
ユニットに接続されて命令が実行される際の再同期化条
件を検出するための再同期化条件検出器とを含む。プロ
セッサはさらに、リオーダバッファコントローラに接続
される再同期化コントローラを含み、これは再同期化の
条件がそれについて検出された命令の結果の回収に応答
する。再同期化コントローラはさらに、再同期化コント
ローラに接続されてフェッチされた命令の待ち行列をフ
ラッシュする待ち行列コントローラと、命令ポインタを
フェッチプログラムカウンタに接続させて、回収された
命令の結果の追跡に基づいて命令のフェッチの順序だっ
たシーケンスを再指定する分岐ユニットとを含む。
【0010】本発明は、添付の図面に関連して読まれる
と以下の詳細な説明より、よりよく理解され、その利
点、目的および特徴がより明らかになるであろう。図面
において同様の参照番号は同様の要素を示す。
【0011】
【好ましい実施例の詳細な説明】整数および浮動小数点
演算を実行するための命令セットを有するスーパースカ
ラプロセッサ110のアーキテクチャが図2および3に
示される。なお図1は、図2および3の組合せの態様を
示す。64ビット内部アドレスおよびデータバス111
は、プロセッサ110の種々の機能ブロックおよび外部
メモリ114の間でアドレス、データおよび制御の移行
のやり取りを行なう。命令キャッシュ116はCISC
命令をパージングし、プリデコードする。バイトキュー
135はプリデコードされた命令を命令デコーダ118
に送り、これがCISC命令をRISC的演算(「RO
P」)のためのそれぞれの命令シーケンスにマッピング
する。命令デコーダ118は、バイト待ち行列(キュ
ー)135内のプリデコードされたCISC命令に基づ
いてすべてのROPに関してタイプ、オペコードおよび
ポインタ値を発生する。
【0012】適切な命令キャッシュ116は、デイビッ
ド・ビィ・ウィット(David B. Witt )およびマイケル
・ディ・ゴダード(Michael D. Goddard)の「可変バイ
ト長命令フォーマットを有するタイプのプロセッサのた
めの命令キャッシュ」と題する1994年10月25日
出願の特願平6−260701号(米国では1993年
10月29日に出願された米国特許出願連続番号第08
/145,905号)にさらに詳細に説明される。適切
なバイトキュー135は、デイビッド・ビィ・ウィット
の「可変バイト長命令フォーマットを有するタイプのプ
ロセッサのための推論的命令キュー」と題する1994
年10月25日出願の特願平6−260700号(米国
では1993年10月29日に出願された米国特許出願
連続番号第08/145,902号)にさらに詳細に説
明される。適切な命令デコーダ118は、デイビッド・
ビィ・ウィットおよびマイケル・ディ・ゴダードの「ス
ーパースカラ命令デコード/発行装置」と題する199
4年10月26日に出願の特願平6−262437号
(米国では1993年10月29日に出願された米国特
許出願連続番号第08/146,383号)により詳細
に説明される。これらの各特許出願は、ここにその全体
を引用によって援用する。
【0013】命令デコーダ118は種々のバスを介して
プロセッサ110内の機能ブロックにROP演算を発行
する。プロセッサ110は、4つまでのROPの発行、
5つまでのROP結果の完了、および16までの推測に
より実行されたROPの結果の処理をすべて同時にサポ
ートする。ROPを実行すべき機能ユニットを特定する
ためのタイプコードは、4つのオペコード/タイプバス
150を介してやり取りされる。AおよびBソースオペ
ランドおよび宛先レジスタへの4つまでのポインタ組
は、それぞれAオペランドポインタ136、Bオペラン
ドポインタ137および宛先レジスタポインタ143を
介して命令デコーダ118によってレジスタファイル1
24およびリオーダバッファ126に供給される。レジ
スタファイル124およびリオーダバッファ126は、
RISCオペランドAおよびBの「予測実行された」も
のを種々の機能ユニットに4対の41ビットAオペラン
ドバス130およびBオペランドバス131を介して供
給する。AおよびBオペランドバス130および131
と関連するのは、4対のAオペランドタグバス148お
よびBオペランドタグバス149を含むオペランドタグ
バスである。オペランドデータがオペランドバスに置く
のに利用可能でないときには、それが利用可能となった
ときに結果を受取るためのリオーダバッファ126内の
エントリを特定するタグが対応するオペランドタグバス
にロードされる。4対のオペランドおよびオペランドタ
グバスは4つのROP発行位置に対応する。命令デコー
ダはリオーダバッファ126と協働して、ROPが実行
された後に機能ユニットから結果を受取る、リオーダバ
ッファ126内のエントリを特定するための4つの宛先
タグバス140を特定する。機能ユニットはROPを実
行し、宛先タグを5つの結果タグバス139のうちの1
つにコピーし、結果が利用可能となったときに5つの結
果バス132のうちの対応する1つに結果を置く。結果
タグバス139上の対応するタグが結果を待っているR
OPのオペランドタグと一致すれば、機能ユニットは結
果バス132上の結果に直接アクセスする。
【0014】命令デコーダ118は、オペコードおよび
オペコードタイプを含むオペコード情報をAおよびBソ
ースオペランド情報とともに4つのオペコード/タイプ
バス150を介して発行する。
【0015】プロセッサ110は、分岐ユニット17
0、特殊レジスタブロック171、浮動小数点機能ユニ
ット172、ロード/ストア機能ユニット173ならび
に2つの算術論理ユニット(ALU)174および17
5等のいくつかの機能ユニットを含む。分岐ユニット1
70は条件分岐予測を有効化し、これによって分岐が存
在する際の十分な命令フェッチ速度を可能にし、複数の
命令の投入に関する性能の向上を達成する。ある条件下
では、分岐ユニット170は、ターゲットpcバス12
2を介して命令キャッシュ116に信号を送ることによ
って命令のフェッチおよび発行の順序を指定し直す。分
岐ユニット170および命令デコーダ118を含む適切
な分岐予測システムは、ウィリアム・エム・ジョンソン
(WilliamM. Johnson)の「キャッシュ内の各命令ブロ
ックとストアされたフェッチ情報を用いる、正しく予測
された分岐命令後の実行に関する遅延を低減するための
システム」(“System for Reducing Delay for Execut
ion Subsequent to Correctly Predicted Branch Instr
uction Using Fetch Information Stored with eachBlo
ck of Instructions in Cache”と題する米国特許番号
5,136,697号にさらに詳細に説明され、この全
体をここに引用によって援用する。各機能ユニット17
0ないし175は、オペランドバス130および131
ならびにオペコード/タイプバス150に接続された入
力を有するそれぞれのリザベーションステーション(図
示せず)を有する。リザベーションステーションは、機
能ユニットへの推測的なROPの発行を可能にする。
【0016】ロード/ストアユニット173はデータキ
ャッシュ180に接続され、機能ユニット、レジスタフ
ァイル124、リオーダバッファ126およびデータキ
ャッシュ180の間でデータをやり取りするために用い
られる。データキャッシュ180は、命令キャッシュ1
16のアーキテクチャと類似したものを用いて構成され
る。どちらも、ストアアレイおよび対応するタグアレイ
を含む線形的にアドレス可能なキャッシュである。AL
U174およびALU175は、2進で符号化された数
値データに対して演算する算術命令を実行する。演算
は、加算、減算、乗算および除算、ならびに増分、減
分、比較および符号の変更を含む。符号付きおよび符号
なし2進整数の計算もサポートされる。ALU175は
右および左シフトならびにローテート命令を実行する。
算術ならびにシフトおよびローテート命令は、ゼロフラ
グ(ZF)、キャリーフラグ(CF)、符号フラグ(S
F)およびオーバーフローフラグ(OF)を更新する。
CFは符号なし整数に関して更新される。SFおよびO
Fは符号付き整数に関して更新される。ZFは、符号付
きおよび符号なし整数の両方に関連し、結果のビットす
べてがクリアされるときにセットされる。レジスタファ
イル124は、整数および浮動小数点命令で用いられる
データをストアするためのマッピングされたCISCレ
ジスタを含む物理記憶メモリである。レジスタファイル
124は、4つまでの同時に発行されるROPの各々の
ためのソースオペランドに関するレジスタ番号を指定す
るAおよびBオペランドポインタ136および137の
2つまでのレジスタポインタによってアドレスされる。
これらのポインタはレジスタファイルのエントリを指
し、選択されたエントリ内の値が8つの読出ポートを介
してオペランドバス130および131のオペランドバ
スに置かれる。整数は32ビット<31:0>レジスタ
内にストアされ、浮動小数点数はレジスタファイル12
4の82ビット<81:0>浮動小数点レジスタにスト
アされる。レジスタファイル124は、4つの41ビッ
トライトバックバス134を介してリオーダバッファ1
26から実行されたおよび推測ではない演算の整数およ
び浮動小数点結果を受取る。ROPとしてリオーダバッ
ファ126からレジスタファイル124に書込まれる結
果は回収(リタイア)される。ROPの実行の結果とし
て生じるフラグは、結果データの回収と類似した態様で
回収される。フラグはリオーダバッファ126からEF
LAGSライン145を介して状態フラグレジスタ12
5に回収される。
【0017】リオーダバッファ126は、推測によって
実行されたROPの相対的順序を追跡する環状FIFO
である。リオーダバッファ126の記憶位置は、回収す
る結果をレジスタファイル124に送り、かつ機能ユニ
ットから結果を受取るためにダイナミックに割当てられ
る。命令がデコードされると、その宛先オペランドが次
の利用可能なリオーダバッファの位置に割当てられ、そ
の宛先レジスタ番号は宛先タグとしてその位置と関連付
けられ、実際には宛先レジスタをリオーダバッファの位
置にリネームする。そのソースオペランドのレジスタ番
号は、リオーダバッファ126およびレジスタファイル
124に同時にアクセスするために用いられる。リオー
ダバッファ126が、その宛先タグがソースオペランド
レジスタ番号と一致するエントリを持たなければ、レジ
スタファイル124内の値がオペランドとして選択され
る。リオーダバッファ126が1つ以上の一致するエン
トリを有する場合には、最も新しく割当てられた一致す
るエントリの値が、もし利用可能であれば供給される。
結果が利用可能でなければ、そのリオーダバッファのエ
ントリを識別するタグが、AおよびBオペランドタグバ
ス148および149のオペランドタグバスを介して供
給される。結果またはタグは、それぞれオペランドバス
130、131またはオペランドタグバス148、14
9を介して機能ユニットに供給される。機能ユニット1
70ないし175における実行の完了から結果が得られ
れば、結果およびそれらのそれぞれの結果タグが、5バ
ス幅結果バス132および結果タグバス139を介して
リオーダバッファ126および機能ユニットのリザベー
ションステーションに供給される。5つの結果、結果タ
グおよび状態バスのうちの4つは、リオーダバッファに
整数および浮動小数点結果を送るための汎用バスであ
る。第5の結果、結果タグおよび状態バスは、転送され
ない結果である情報をある機能ユニットからリオーダバ
ッファに転送するために用いられる。たとえば、ロード
/ストア機能ユニット173によるストア動作または分
岐ユニット170による分岐動作から起こる状態情報
は、この付加的なバスに置かれる。この付加的なバスは
結果バスのバンド幅を節約する。浮動小数点(FP)フ
ラグバス138は、浮動小数点機能ユニット172から
リオーダバッファ126に浮動小数点情報を送る。リオ
ーダバッファ126は例外および誤予測誤りを扱い、プ
ログラムカウンタ(図示せず)および実行フラグを含む
あるレジスタの状態を維持する。一般に、例外条件は機
能ユニットによって検出される。機能ユニットは状態バ
ス141を介して例外条件が起こったことを示すコード
をリオーダバッファ126に伝える。リオーダバッファ
126はその後すべての機能ユニットに例外ライン16
0を用いて例外条件を知らせる。リオーダバッファを含
む、RISCコアのための適切なユニットは、デイビッ
ド・ビィ・ウィットおよびウィリアム・エム・ジョンソ
ンの「スーパースカラマイクロプロセッサ」と題する1
994年10月27日出願の特願平6−263317号
(米国では1993年10月29日に出願された米国特
許出願連続番号第08/146,382号)に開示され
ており、その全体をここに引用によって援用する。
【0018】命令デコーダ118は機能ユニットにRO
Pを「順序どおりに」発行する。この順序は、リオーダ
バッファエントリの順序で維持される。機能ユニットは
ROPを待ち行列に入れ、キュー内の前のROPのすべ
てが実行を完了し、すべてのソースオペランドがオペラ
ンドバスまたは結果バスを介して利用可能であり、結果
バスも結果を受取るために利用可能となるときにROP
を投入する。このように機能ユニットはROPを「順序
どおりでなく」完了する。演算の発行は演算の完了に従
属せず、そのためリザベーションステーションのキュー
が利用可能でないこと、またはリオーダバッファのエン
トリが割当てられないことによってプロセッサが停止さ
れない限り、命令デコーダ118は命令が迅速に完了さ
れるかどうかに関係なくこれらをデコードし続ける。
【0019】データ経路はレジスタファイル124内の
レジスタと、リオーダバッファ126の各エントリ内の
結果フィールドと、オペランド、結果およびライトバッ
クバスとを含む。一実施例では、プロセッサは、浮動小
数点演算を収容する41ビットデータ経路を有する。3
2ビットデータ経路は41ビット構造のビット<31:
0>にマッピングされる。この実施例は、スコット・エ
ィ・ホワイト(ScottA. White)、マイケル・ディ・ゴ
ダードおよびウィリアム・エム・ジョンソンの「整数/
浮動小数点混在固定ピッチコア」(“Mixed Integer /
Floating PointFixed Pitch Core ”)と題する199
4年4月26日出願の米国特許出願連続番号第
に説明され、ここにその全体を引用によって援用する。
【0020】プロセッサ110は内部アドレス/データ
(IAD)バス111を含み、これは命令キャッシュ1
16およびバスインタフェースユニット184に接続さ
れる。バスインタフェースユニット184は主メモリま
たは外部メモリ114に接続されるので、プロセッサ1
10は外部メモリアクセスを与えられる。IADバス1
11はまたロード/ストア機能ユニット173にも接続
される。プロセッサ110はまた、メモリ管理ユニット
(MMU)188およびバスインタフェースユニット1
84(BIU)を含む。メモリ管理ユニット188は、
IADバス111および物理I/Dタグブロック186
に接続される。メモリ管理ユニット(MMU)188内
のトランスレーションルックアサイドバッファTLB
(図23の740)は、図示されるとおりIADバス1
11と物理タグI/Dブロック186との間に接続され
る。バスインタフェースユニット184は、物理I/D
タグブロック186とIADバス111とに接続され
る。
【0021】物理タグI/Dブロック186はIADバ
ス111に接続されて、命令キャッシュ116およびデ
ータキャッシュ180内のそれぞれ命令およびデータの
物理アドレスを追跡する。具体的には、物理タグI/D
ブロック186は、命令キャッシュ116およびデータ
キャッシュ180の物理アドレスを維持する物理命令/
データタグアレイを含む。ブロック186の物理命令タ
グアレイは、命令キャッシュ116の対応する線形命令
タグアレイの構成を反映する。同様に、ブロック186
内の物理データタグアレイの構成は、データキャッシュ
180内の対応する線形データタグアレイの構成を反映
する。
【0022】バスインタフェースユニット184はIA
Dバス111をメモリ114等の外部装置にインタフェ
ースさせる。IADバス111は、プロセッサ110の
様々な構成要素を接続するために用いられるグローバル
64ビット共有アドレス/データ/制御バスである。I
ADバス111は、キャッシュブロックをリフィルし、
変更されたブロックを書込み、特殊レジスタブロック1
71、ロード/ストア機能ユニット173、データキャ
ッシュ180、命令キャッシュ116、物理I/Dタグ
ブロック186、トランスレーションルックアサイトバ
ッファ188、およびバスインタフェースユニット18
4等の機能ブロックにデータおよび制御情報を伝えるた
めに用いられる。
【0023】プロセッサ110はコンピュータプログラ
ムを形成する命令のシーケンスを実行する。コンピュー
タプログラムは典型的にはハードディスクまたはフロッ
ピーディスク等の不揮発性記憶媒体にストアされる。プ
ログラムは記憶媒体から主メモリ114にロードされ、
バスインタフェースユニット184を介してプロセッサ
110によって実行される。
【0024】主メモリ114に記憶された後、命令はバ
スインタフェースユニット184を介して命令キャッシ
ュ116に渡され、ここで命令が一時的に保持される。
図2に示される命令キャッシュ116はプリフェッチさ
れたx86命令バイトをプリデコードし、命令デコーダ
118が(単一のクロックサイクル内で)4つまでのx
86命令をROPにデコードかつマッピングし、4つま
でのROPを並列に発行するのを補助する。図4を参照
して、命令キャッシュ116は、キャッシュ制御208
と、フェッチPC210と、フェッチPCバス206
と、プリデコードブロック212と、コードセグメント
ブロック216と、バイトキューシフトブロック218
と、キャッシュアレイ200とを含み、キャッシュアレ
イ200は3つのアレイ、すなわち命令ストアアレイ2
50、アドレスタグアレイ252およびサクセッサアレ
イ254に組織される。
【0025】コードセグメントブロック216は、リク
エストされたアクセスの妥当性をチェックするために用
いられるコードセグメントディスクリプタのコピーを保
持する。コードセグメントブロック216はコードセグ
メント(CS)ベース値を供給し、これは論理アドレス
を線形アドレスに変換するためにCSベースライン23
0を介して分岐ユニット170に運ばれる。プリデコー
ドブロック212は、内部アドレス/データバス111
を介してプリフェッチされたx86命令バイトを受取
り、各x86命令バイトについてプリデコードビットを
割当て、プリデコードされたX86命令バイトを4つの
バス群204を用いて命令ストアアレイ250に書込
む。バイトキュー135は、キャッシュアレイ200か
らの予測実行された命令をバッファ処理し、16までの
有効プリデコードx86命令バイトを16のバス群24
8を介して命令デコーダ118に与える。バイトキュー
シフトブロック218は、x86境界上の命令をローテ
ートし、マスクし、シフトする。シフトは、x86命令
のすべてのROPが命令デコーダ118によって投入さ
れるとシフト制御ライン274上の信号に応答して起こ
る。キャッシュ制御208は、種々の命令キャッシュ1
16の動作を管理する制御信号を発生する。
【0026】フェッチpcバス206を介してやり取り
するフェッチPC210は、キャッシュアレイ200内
の3つのアレイの順次的および非順次的アクセスの間に
フェッチされるべき命令を特定する。フェッチPC21
0の中位ビットは、検索のために各アレイからのエント
リにアドレスするキャッシュインデックスである。上位
ビットは、アドレス指定されてアドレスタグアレイ25
2から検索されたタグと比較されるアドレスタグであ
る。一致はキャッシュヒットを示す。この比較動作は、
比較ブロック220によって与えられる。下位ビット
は、アドレスされたバイトを識別する、命令ストアアレ
イ250からのアドレスされて検索されたエントリへの
オフセットである。フェッチPC、キャッシュ制御20
8およびキャッシュアレイ200は協働して、フェッチ
pcバス206を介して運ばれたアドレスを維持し、こ
れを再指定する。フェッチPC210は、同じアドレス
を維持するか、次のキャッシュエントリにアドレスを増
分するか、内部アドレス/データバス111を介してア
ドレスを受取るか、またはターゲットpcバス122か
らアドレスをロードすることによって、あるサイクルか
ら次のサイクルへと更新する。ターゲットPCは、分岐
命令が回収されるときにリオーダバッファ126から送
られる分岐予測誤りフラグ217に応答してキャッシュ
制御208による活性化の際に用いられる。
【0027】アドレスタグアレイ252のエントリは、
命令ストアアレイ250のバイトの各々に対応するバイ
ト有効ビット、アドレスタグ、および有効ビットを含
む。キャッシュヒットはアドレスタグを用いて識別され
る。有効ビットはアドレスタグが有効であるかどうかを
示す。バイト有効ビットは、プリデコードされたx86
命令バイトが有効x86命令バイトおよび有効プリデコ
ードビットを含むかどうかを示す。キャッシュミスの
後、バス206を介して運ばれるフェッチPCアドレス
の上位ビットをアドレスタグに書込み、タグ有効ビット
をセットして有効アドレスタグであることを示し、バイ
ト有効ビットのすべてをクリアして前のアクティビティ
から命令ストアアレイ250内の対応するエントリに残
っているいかなる命令バイトをも無効にすることによっ
て、アドレスタグアレイ252内のインデックス位置に
おいてエントリが割当てられる。プリデコードされた命
令バイトが命令ストアアレイ250内の先に割当てられ
たエントリに書込まれる際に、それぞれのバイト有効ビ
ットも同様にアドレスタグアレイ252内の対応するエ
ントリにおいてセットされる。
【0028】サクセッサアレイ254は分岐予測をサポ
ートする。サクセッサアレイ254のエントリは、サク
セッサインデックス、サクセッサ有効ビット(NSE
Q)およびブロック分岐インデックス(BBI)を含
む。NSEQはアサートされると、サクセッサアレイが
命令ストアアレイ250にアドレスしていることを示
す。命令ブロック内のどの分岐も「成立予測」されなけ
れば、NSEQはクリアされる。BBIは、NSEQが
アサートされたときにのみ規定される。これは実行と予
測された最後の命令バイトの現在の命令ブロック内のバ
イト位置を指定する。サクセッサインデックスは、キャ
ッシュへのアドレスインデックス、命令バイトのサクセ
ッサブロックを含む4ウェイセットアソシアティブアレ
イの列のインジケータ(したがってこのアドレスでどの
列が「ヒット」しているかを判断するのに必要な時間を
回避する)、および次の実行されると予測されたサクセ
ッサブロック内の特定のバイトのインジケータを含む。
サクセッサインデックスは、次の予測実行された命令の
バイトすなわち推測による分岐のターゲットPCから始
まる命令がキャッシュ内のどこに位置するかを示す。
【0029】分岐命令は、命令キャッシュ116および
分岐ユニット170の協働した動作で行なわれる。たと
えば、命令キャッシュ116は分岐を不成立と予測して
命令を順次フェッチし続ける。後に分岐ユニット170
によって分岐が成立であると判断されれば、予測は誤っ
たものであり、分岐ユニット170は予測誤りフラグ2
17および分岐成立フラグ219をアサートする。命令
キャッシュ116は推測による命令のバイトキュー13
5をフラッシュする。分岐ユニット170は、ターゲッ
トpcバス122を介して正しいターゲットPCを命令
キャッシュ116に戻すことによって命令キャッシュ1
16に再指示を与える。フェッチPC210は命令スト
リームをターゲットpcアドレスに送り、バイトキュー
135のリフィルを始める。NSEQビットをアサート
し、BBIを分岐命令の最後のバイトを指すようにセッ
トし、ターゲット命令の命令キャッシュ116内の位置
を示すようにサクセッサインデックスをセットすること
によって、予測誤りされた分岐命令を含むサクセッサア
レイ254のエントリが予測分岐を示すように変更され
る。サクセッサインデックスは、完全なアドレスではな
くターゲット命令のインデックス、列およびオフセット
をストアする。サクセッサインデックスによって与えら
れる列およびインデックスを用いてキャッシュブロック
にアクセスすることにより、かつそのブロック内にスト
アされたアドレスタグ上位ビットを先のサクセッサイン
デックスからのオフセットおよびインデックスビットに
連接することによって、フェッチPCアドレスが再構成
される。
【0030】フェッチPC210からの再構成された分
岐ターゲットPCは、命令キャッシュ116から命令デ
コーダ118にフェッチPCバス206を介して渡さ
れ、そのため命令デコーダ118は命令が発行される際
のデコードPCを維持する。命令デコーダ118は、バ
イトキュー135内のマーカービットおよび分岐命令を
保持するキャッシュ列を識別する対応のフィールドによ
って指定される分岐命令位置とフェッチpcバス206
を介して受取られた分岐ターゲットPCとを比較する。
命令デコーダ118は、命令バイトが発行される際に現
在のデコードPCからバイトを増分し、分岐命令の最初
のバイトがバイトキュー135から命令デコーダ118
にロードされるとき新しい分岐ターゲットPCをロード
する。
【0031】命令デコーダ118は分岐命令を分岐ユニ
ット170に発行する際に、デコードPC、ターゲット
命令の分岐オフセットおよび分岐の予測状態を送る。分
岐命令を実行し、予測が正しかったかどうかを後で判断
するために分岐ユニット170によって情報が用いられ
る。予測が正しければ実行が進められる。しかしながら
予測誤りが起これば、分岐ユニット170は分岐の結果
の正しいターゲットPCを命令キャッシュ116に送
る。分岐成立予測された分岐が予測誤りされれば、(予
測誤りされた分岐を含んでいる)先のキャッシュブロッ
クにおけるNSEQフィールドがリセットされる。他の
フィールド、BBIおよびサクセッサインデックスはN
SEQがリセットされると必ず無視され、順次アクセス
を示す(すなわち成立でないと予測された分岐)。負の
オフセットターゲットPCを参照し、予測誤りされてい
る(実際には分岐成立しない)分岐成立予測された分岐
は更新されず、分岐成立予測された分岐として維持され
る。
【0032】ここで図5、6および7を参照して、図6
および7の組合せの態様が図5に示される。図6および
7に示される命令デコーダ118はバイトキュー135
からプリデコードされたx86命令バイトを受取り、こ
れらをそれぞれのROPシーケンスに変換し、複数の発
行位置からROPを発行する。変換は、ほとんどの単純
な命令についてはハードワイヤード高速変換経路におい
て処理される。4つ以上のROPに変換される複雑な命
令および頻繁には用いられない命令は、マイクロコード
ROM内に含まれるシーケンスによって処理される。
【0033】ROPを変換するのに用いられる情報は、
機能ユニットタイプ、機能ユニットによって実行される
べきRISC的命令、ならびにソースおよび宛先ポイン
タの識別子を含む。命令デコーダ118は高速経路また
はマイクロコードROMからのROP情報を選択し、こ
れを増し、機能ユニットによる実行のための完全なRO
Pを供給する。
【0034】ROPマルチプレクサ300はバイトキュ
ー135内の1つ以上のプリデコードされたx86命令
を、バイトキュー135のヘッドにあるx86命令か
ら、1つ以上の利用可能な発行位置に同時に送る。RO
P発行位置ROP0、1、2および3(310、32
0、330および340)はそれぞれの高速コンバータ
0、1、2および3(順に312、322、332およ
び342)と、それぞれの共通ステージ0、1、2およ
び3(314、324、334および344)と、それ
ぞれのマイクロコードROM0、1、2および3(31
6、326、336、および346)とを含む。各発行
位置は、共通ステージと、高速コンバータと、MROM
とを含む。MROM316、326、336、および3
46は、マイクロコードROM(MROM)コントロー
ラ360によって制御される。
【0035】MROMは、CALLゲート命令、STR
ING移動命令、および超越浮動小数点ルーチン等の複
雑な対話型命令を含む、高速コンバータでは変換不可能
なx86命令を処理するためのROMアレイである。M
ROM経路命令については、MROMコントローラ36
0はエントリポイントとして知られるマイクロコードR
OMアドレスを形成し、そのエントリポイントに基づい
て、1サイクルにつき4つのROPの割合でMROM
0、1、2および3(316、326、336および3
46)にストアされたマイクロコードROM命令からR
OPシーケンスを読出す。
【0036】共通ステージは、高速経路およびマイクロ
コードROM命令に共通したx86命令変換動作を扱
う。各共通ステージは命令入力信号のあるビットを分離
し、宛先およびオペランドポインタをセットしレジスタ
を選択するためにこれらのビットをROP選択に供給す
る。この信号はアドレスサイズ(32または16ビッ
ト)を選択し、倍長語または語のオペランドバイトサイ
ズを判断し、特殊レジスタを選択して、特定のアドレス
モードのためのオペランドを特定し、変位フィールドを
いかに処理するかを規定する。このように、高速経路お
よびマイクロコードマッピング経路に関するすべてのx
86アドレスモードが共通して扱われる。
【0037】MROMコントローラ360は、命令タイ
プおよびオペコード情報の供給、発行ウィンドウを充満
するROPの数の予測、予測に鑑みてバイトキュー13
5をいかにシフトするかを命令キャッシュ116に知ら
せること、バイトキュー135のヘッドにあるx86命
令について発行するROPの数をROPマルチプレクサ
300に知らせること、ならびにマイクロコードおよび
制御ROMのアクセス等の制御機能を行なう。
【0038】MROMコントローラ360は2つの技
術、すなわち命令レベルシーケンス制御およびマイクロ
分岐ROPを用いてROPの順序付けを制御する。命令
レベル分岐およびマイクロ分岐ROPのいずれも実行の
ために分岐ユニット170に発行され、予測誤りの際に
は訂正を受ける。命令レベルシーケンス制御フィールド
はいくつかの能力、すなわちマイクロコードサブルーチ
ンコール/リターン、ブロック整列されたMROM位置
への無条件分岐、プロセッサ状態ベースの条件分岐、シ
ーケンスの終了の識別等を与える。命令レベルシーケン
スROPが発行されると、(命令アドレスではなく)M
ROMアドレスがターゲットPC形成または分岐訂正の
ために送られる。
【0039】マイクロ分岐ROPは、ゼロ、非ゼロ、正
または負のレジスタ値に基づいて無条件分岐および条件
分岐を与える。マイクロ分岐ROPは実行のために分岐
ユニット170に発行され、遅延効果を有する。MRO
Mコントローラ360は、分岐ユニット170内のマイ
クロ分岐予測誤り論理によって開始されたマイクロコー
ドROMエントリポイントを受入れる。分岐ユニット1
70によって発生されたマイクロコードエントリポイン
トは、ターゲットpcバス122を介して命令デコーダ
118に渡される。マイクロ分岐訂正の際に、分岐ユニ
ット170はターゲットpcバス122を介して命令デ
コーダ118に、訂正アドレスがPCではなくMROM
アドレスであることを知らせる。
【0040】ROP選択0、1、2および3(318、
328、338および348)は、共通ステージの出力
と合せて、高速コンバータまたはMROMの出力を選択
し、この情報をレジスタファイル124、リオーダバッ
ファ126および種々の機能ユニットに送る。発行され
た情報は、AおよびBオペランド宛先ポインタ、命令タ
イプおよびオペコード、割込およびバックアップイネー
ブル、命令終了、ならびに機能ユニットに即値アドレス
または定数を送るための即値フィールド定数を含む。分
岐ユニット170に与えられる他の情報は、分岐ユニッ
ト170に分岐命令発行の際の予測を示す分岐成立予測
信号を含む。
【0041】ROP共有390およびROP選択0、
1、2および3(318、328、338および34
8)は、すべての発行位置間で共有される資源が用いる
発行情報を発生するために種々の機能ユニットに発行さ
れる命令のためのオペランドを協働して選択する。RO
P共有390は、機能ユニットへの発行のためのオペコ
ード/タイプバス150にROPオペコード符号化を与
える。
【0042】分岐ユニット170は、オペコードを受取
るのに加えて、他のROP共有390の出力、すなわち
1ビット交換アンダーフロー信号、2ビットキャッシュ
列選択識別子、1ビット分岐成立予測選択信号、1ビッ
トマイクロ分岐インジケータ、および分岐ユニット17
0がターゲットpcバス122を介して分岐成立予測F
IFO(図15の906)に成立予測アドレスを書込む
べきかどうかを示す1ビット信号を含むこれらの出力を
受取る。さらに、整数フラグソースオペランドを識別す
る3ビット読出フラグポインタが、分岐ユニット170
にマッピングされる最初の未発行ROPの位置に基づい
てセットされる。分岐ユニット170にどのROPもマ
ッピングされていなければ、読出フラグポインタは0に
設定される。2ビット使用インジケータが、分岐ユニッ
ト170にマッピングされる最初の未発行ROPの発行
位置を設定するために符号化される。
【0043】命令デコーダ118は、デコードPCブロ
ック382、デコーダ制御ブロック384およびデコー
ダスタック386を含む。デコーダ制御ブロック384
は、バイトキュー135におけるROPの数、x86命
令境界の位置、機能ユニットの状態(ライン370か
ら)およびリオーダバッファ126の状態(372か
ら)に基づいて、投入すべきROPの数を決定する。デ
コーダ制御ブロック384は、投入されるROPの数を
シフト制御ライン274を介してバイトキュー135に
伝え、バイトキュー135が完全に実行されたx86命
令の数だけシフトし、バイトキュー135の始めが常に
次の完全なx86命令の始めとなるようにする。例外ま
たは分岐予測誤りが起こると、デコーダ制御ブロック3
84は、新しいフェッチPCが入るか、またはエントリ
ポイントが例外マイクロコードルーチンのためにMRO
Mに送られるまで、さらなるROPの投入を防ぐ。
【0044】デコードPCブロック382は、バイトキ
ュー135から送られる各x86命令の論理プログラム
アドレス値を追跡する。バイトキュー135が非順次的
フェッチを検出すると、これは新しいアドレスを指定
し、それをデコードPCブロック382に送る。分岐に
続く順次的命令については、デコードPCブロック38
2は断たれていないシーケンスの開始および終了位置間
のバイトキュー135におけるx86バイトの数をカウ
ントし、この数を現在のPCに加えてシーケンスに続く
次のPCを決定する。デコードPCはDPCバス213
を介して分岐ユニット170に送られる。
【0045】デコーダスタック386は、先見スタック
トップ(TOS)ポインタ302、先見リマッピングア
レイ304および先見フル/空アレイ306を含む種々
の浮動小数点スタックポインタアレイおよびレジスタの
先見コピーを保持する。これらのアレイおよびポインタ
は、スタックに影響を与えるROPの推測による投入か
ら結果として生じる浮動小数点スタックの推測による変
更を処理し、これは分岐予測誤りまたは例外の際に正し
い状態に戻るようにスタックを処理することを含む。
【0046】先見リマッピングアレイ304はポインタ
のアレイであり、各々がスタックアレイのうちの1つの
レジスタを示す。スタックの例示的な実施例では、先見
リマッピングアレイ304は、8つの3ビットポインタ
のアレイであり、各々がレジスタファイル124内の浮
動小数点スタックアレイ500(図9に示される)のエ
レメントを識別する。先見TOS302は、先見リマッ
ピングアレイ304のポインタの1つを選択する3ビッ
トポインタである。先見フル/空アレイ306は、スタ
ック位置がフル(1)または空(0)のいずれかを示す
単一ビットのアレイである。
【0047】スーパースカラプロセッサでは、演算が発
行されることはこれが必ずしも実行されるべきであるこ
とを示すわけではない。分岐が予測され、その予測のう
ちのいくつかは不正確である。予測誤りされた分岐から
迅速にリカバーすることが有利である。先見リマッピン
グアレイ304、先見TOS302および先見フル/空
アレイ306は、スタックの推測による状態のコピーを
セーブすることによって予測誤りのリカバリを速くす
る。浮動小数点スタックを変更する演算については、命
令デコーダ118は命令をデコードする際に浮動小数点
スタックアレイ500の将来の状態を更新する。命令デ
コーダ118は、スタックポインタを増分または減分す
る命令をデコードすると、先見TOS302を更新す
る。同様の態様で、命令デコーダ118は、浮動小数点
交換命令(FXCH)をデコードすると、ポインタを命
令によって特定されるように交換することによって先見
リマッピングアレイ304の将来の状態を調整する。ス
タックの状態は何らかの2つの分岐命令間で変り得るた
め、各分岐動作についてスタック情報が保持される。
【0048】ここで図8を参照して、レジスタファイル
124は読出デコーダ460と、レジスタファイルアレ
イ462と、書込デコーダ464と、レジスタファイル
制御466と、レジスタファイルオペランドバスドライ
バ468とを含む。読出デコーダ460はAおよびBオ
ペランドポインタ136および137を受取り、4対の
64ビットAおよびBオペランドアドレス信号RA0、
RA1、RA2、RA3、RB0、RB1、RB2およ
びRB3を介してレジスタファイルアレイ462にアド
レスする。レジスタファイル制御466は、リオーダバ
ッファ126からAオペランド無効ライン457および
Bオペランド無効ライン458を介して無効信号を受取
り、これらは次にレジスタファイル制御466からレジ
スタファイルオペランドバスドライバ468に送られ
る。
【0049】レジスタファイルアレイ462は、ライト
バックバス134を介してリオーダバッファ126から
結果データを受取る。リオーダバッファエントリが3つ
までの他のリオーダバッファエントリと並列に回収され
ると、そのエントリに関する結果データがライトバック
バス134のうちの1つに置かれ、そのエントリのため
の宛先ポインタが、そのライトバックバスに対応する書
込ポインタ133に置かれる。ライトバックバス134
上のデータは、書込デコーダ464に与えられらる書込
ポインタ133上のアドレス信号に従ってレジスタファ
イルアレイ462内の指定されたレジスタに送られる。
【0050】あるROPを回収する際に、リオーダバッ
ファ126はデータをレジスタファイル124内の種々
の浮動小数点スタックレジスタ、すなわち浮動小数点リ
マッピングアレイ474、浮動小数点スタックトップ
(TOS)レジスタ472および浮動小数点フル/空ア
レイ476に送る。レジスタファイル124内に位置す
る浮動小数点スタックアレイ500は、拡張実データを
ストアするための8つの82ビット数値レジスタのアレ
イである。各レジスタは、1符号ビット、19ビット指
数フィールド、62ビット有効数字部フィールドを含
む。浮動小数点リマッピングアレイ474は、8つのポ
インタのアレイであり、その各々は浮動小数点スタック
アレイ500のレジスタに対するポインタである。浮動
小数点TOS472は、浮動小数点リマッピングアレイ
474へのポインタを示す3ビットポインタである。浮
動小数点フル/空アレイ476は、スタックアレイの位
置がフル(1)または空(0)のいずれであるかを示す
単一ビットのアレイであり、その各々が浮動小数点スタ
ックアレイ500のエレメントに対応する。
【0051】レジスタファイルアレイ462は、プロセ
ッサ機能ユニットによって演算され、これらによって発
生される結果をストアするための複数のアドレス可能レ
ジスタを含む。図9は、以下の40のレジスタを備える
例示的なレジスタファイルアレイ462を示し、すなわ
ち、8つの32ビット整数レジスタ(EAX、EBX、
ECX、EDX、ESP、EBP、ESIおよびED
I)と、8つの82ビット浮動小数点レジスタFP0な
いしFP7と、16の41ビット一時整数レジスタET
MP0ないしETMP15と、この実施例においては一
時整数レジスタETMP0ないしETMP15と同じ物
理レジスタ位置にマッピングされる8つの82ビット一
時浮動小数点レジスタFTMP0ないしFTMP7を含
む。浮動小数点レジスタFP0ないしFP7は、浮動小
数点スタックアレイ500としてアドレスされ、これら
はレジスタファイル124内のレジスタおよびスタック
アレイ、浮動小数点リマッピングアレイ474、TOS
レジスタ472およびフル/空アレイ476を用いてア
クセスされる。
【0052】ここで図10ないし12を参照する。図1
0は、図11および12の組合せの態様を示す。図11
および12を参照して、リオーダバッファ126は、リ
オーダバッファ(ROB)制御および状態ブロック60
0と、ROBアレイ604と、ROBオペランドバスド
ライバ606と、EIPジェネレータ回路630とを含
む。ROP制御および状態ブロック600は、Aおよび
Bオペランドポインタ136および137と宛先ポイン
タ(DEST REG)バス143とに接続されて、R
OPに関するソースおよび宛先オペランドを識別する入
力を受取る。ROBアレイ604は、ROB制御および
状態ブロック600によって制御されるメモリアレイで
ある。ROBアレイ604は結果バス132に接続され
て、機能ユニットからの結果を受取る。ヘッド616、
テイル618、Aオペランド選択、Bオペランド選択、
および結果選択信号を含む制御信号が、ROB制御およ
び状態600からROBアレイ604に渡される。これ
らの制御信号は、結果バス132のデータから入力さ
れ、ライトバックバス134、書込ポインタ133、A
およびBオペランドバス130および131、ならびに
AおよびBオペランドタグバス148および149に出
力されるROBアレイエレメントを選択する。各リオー
ダバッファアレイのエレメントにつき1つ与えられる1
6の宛先ポインタが、従属性チェックを行なうためにR
OPアレイ604からROB制御および状態600に送
られる。
【0053】ROP発行の際に、AまたはBオペランド
ポインタ136および137のポインタが、ROB制御
ブロック600を介してROBアレイ604にアドレス
し、ROPオペランドバスドライバ606に与えるべき
オペランドデータを指定する。ROB制御および状態6
00は、AおよびBオペランドポインタ136および1
37を介してオペランドポインタを、および宛先レジス
タ(DEST REG)バス143を介して宛先ポイン
タを受取り、宛先ポインタをROBアレイ604の宛先
ポインタ(DEST PTR<8:0>)フィールドに
書込む。
【0054】図11および12と関連して図13は、1
6のエントリを含むリオーダバッファアレイ604の一
例を示し、これらエントリの各々は、41ビット結果フ
ィールドと、9ビット宛先ポインタフィールドと、4ビ
ット下位プログラムカウンタフィールドと、11ビット
浮動小数点演算コードフィールドと、11ビット浮動小
数点フラグレジスタフィールドと、24ビット制御およ
び状態フィールドとを含む。41ビット結果フィールド
は、機能ユニットから受取られる結果をストアするため
に供給される。2つのリオーダバッファエントリが、浮
動小数点結果をストアするために用いられる。整数結果
は、41ビットのうちの32ビットにストアされ、残り
の9ビットは状態フラグを保持するために用いられる。
各ROBアレイ604のエントリの宛先ポインタフィー
ルド(DEST PTR<8:0>)は、レジスタファ
イル124内の宛先レジスタを指定する。浮動小数点演
算コードフィールドは、リオーダバッファエントリに割
当てられる命令に対応するx86浮動小数点演算コード
のビットのサブセットをストアする。浮動小数点フラグ
レジスタフィールドは、浮動小数点演算から結果として
生じる浮動小数点フラグの状態をストアする。浮動小数
点フラグは、浮動小数点機能ユニット172によって検
出される無効オペランド、非正規化オペランドエラー、
ゼロ除算、オーバーフロー、アンダーフロー、精度に関
する情報をストアする。整数オペランドに関しては、対
応するフラグフィールドは必要ではない、というのは整
数演算から結果として生じるフラグは、41ビット結果
フィールドの上位ビットに保持されるからである。制御
および状態フィールドは、ROBエントリの状態を示す
ビットを含み、たとえば、ALLOCATE(割当)ビット、BR
ANCH TAKEN(分岐成立)ビット、MISPREDICT(予測誤
り)ビット、VALID (有効)ビット、EXIT(出口)ビッ
ト、UPDATE EIP(EIP更新)ビット、EXCEPTION (例
外)ビットである。ALLOCATEビットは、リオーダバッフ
ァエントリが割当てられているかどうかを示す。MISPRE
DICTビットは、分岐が誤って予測されたことを示す。EX
CEPTION ビットは、命令の実行が例外またはエラー条件
を引起こしたことを示す。VALID ビットは、結果が有効
であり命令が完了したことを示す。制御および状態フィ
ールドはまた、実行プログラムカウンタ値を発生するの
に用いられるビットを含む。これらのビットは、DECODE
PC CARRY ビットおよびEXITビットを含む。DECODE PCC
ARRY ビットは、デコードPCブロック382からのキ
ャリービットである。EXITビットは、ROPが特定のx
86命令のROPシーケンスのうちの最後のROPであ
り、EIPレジスタ620の更新をトリガするのに用い
られることを特定する。EIPレジスタ620は、特定
のx86命令に関するROPシーケンスが完了するとき
のみ更新される。
【0055】リオーダバッファ126は、EIPレジス
タ620を更新するためのアドレス値をコンパクトな形
態で保持する。4つの最下位ビット(LSB)およびビ
ット増分指示のみがセーブされる。順次的なx86バイ
トについては、加えられるバイト数は15を上回ること
はなく、非順次的フェッチに関しては、分岐がうまく完
了すると新しい分岐ターゲットPCを結果バス132に
置く。これは、EIPレジスタ620の更新に関して命
令デコーダ118からリオーダバッファ126へのフェ
ッチPCの書込が必要でないこととなる。これは、下位
EIPジェネレータ回路632と、上位EIPジェネレ
ータ回路634とEIP制御回路636とを含むEIP
ジェネレータ回路630を用いて行なわれる。下位EI
Pジェネレータ回路632は、エントリマルチプレクサ
640と、分岐マルチプレクサ642と、EIPレジス
タ620の4つのLSBを保持するLSB EIPレジ
スタ622とを含む。エントリマルチプレクサ640
は、ROBアレイ604のヘッド616にある4つのリ
オーダバッファ126エントリのデコードPCに対応す
る4つのアドレスLSBを受取る。これらの4ビットフ
ィールドが、ROPの発行の際に割当てられ、セットさ
れて、ROBアレイ604の4つのエントリの下位ブロ
ックカウンタフィールドにストアされる。エントリマル
チプレクサ640は、4つの下位プログラムカウンタフ
ィールドのうちの1つを選択する。分岐マルチプレクサ
642は、ROBアレイ604のヘッド616にある4
つのリオーダバッファ126のエントリのターゲットP
Cに対応する4つのアドレスLSBを受取る。これらの
4ビットフィールドは、分岐命令ROPに関してのみ規
定され、ROBアレイ604の4つのエントリの結果フ
ィールドにストアされる。4つのターゲットPCフィー
ルドに加えて、分岐マルチプレクサ642はまた、エン
トリマルチプレクサ640によって選択される下位プロ
グラムカウンタフィールドを受取る。EIP制御回路6
36は、実行すべき次の命令を指定する4ビット下位分
岐ターゲットを選択するためにエントリマルチプレクサ
640および分岐マルチプレクサ642に制御信号を与
える。この下位分岐ターゲットは、分岐マルチプレクサ
642からLSB EIPレジスタ622に渡され、次
のEIPレジスタ620の4ビットLSBである。
【0056】上位EIPジェネレータ回路634は、エ
ントリマルチプレクサ650と、分岐マルチプレクサ6
52と、発生上位増分回路654と、加算器回路656
と、EIPレジスタ620の最上位28ビット(MS
B)を保持するHSB EIPレジスタ624とを含
む。エントリマルチプレクサ650は、ROBアレイ6
04のヘッド616にある4つのリオーダバッファ12
6エントリのターゲットPCに対応する28のアドレス
MSBを受取る。これらの28ビットフィールドは、分
岐命令ROPに関してのみ規定され、ROBアレイ60
4の4つのエントリの結果フィールドにストアされる。
エントリマルチプレクサ650は、4つの28ビットH
SBターゲットPCのうちの1つを選択する。分岐マル
チプレクサ652は、エントリマルチプレクサ650に
よって選択される28ビットMSBターゲットPCを受
取り、さらにMSB EIPレジスタ624に保持され
る28のMSBを受取る。分岐マルチプレクサ652
は、EIP制御回路636の制御下でMSBターゲット
PCとHSB EIPとの間で選択して、マルチプレク
スクプリリミナリEIPと称する次の分岐ターゲット値
の28ビット上位分岐ターゲット値を発生する。上位E
IPジェネレータ回路634の発生上位増分回路654
は、増分信号を供給し、これは命令の発行の際に命令デ
コーダ118によってセットされ、分岐マルチプレクサ
652からマルチプレクスプリリミナリEIPとともに
加算器回路656に与えられる。加算器回路656は、
増分信号によってマルチプレクスプリリミナリEIPを
増分して上位EIPアドレスを供給し、これがMSB
EIPレジスタ624に書込まれて、クロック動作され
る上位28ビットEIPアドレスを発生する。EIP制
御回路636は、実行すべき次の命令を指定する28の
MSB分岐ターゲットを選択するためにエントリマルチ
プレクサ650および分岐マルチプレクサ652に制御
信号を与える。この上位分岐ターゲットは、分岐マルチ
プレクサ652からMSB EIPレジスタ624に渡
され、次のEIPレジスタ620の28ビットHSBで
ある。
【0057】EIP制御回路636は、キューのヘッド
616にある4つのROBエントリの種々のビットフィ
ールドに保持された制御情報に基づいてEIPレジスタ
620を設定する。この情報は、BRANCH TAKENビット、
UPDATE EIPビット、EXITビット、およびVALID ビットを
含む。EIP制御回路636は、下位および上位EIP
ジェネレータ回路632および634のそれぞれエント
リマルチプレクサ640および650、分岐マルチプレ
クサ642および652、ならびにレジスタ622およ
び624を制御する。UPDATE EIP信号は、新しいアドレ
スを決定するためにEIPジェネレータ回路630を活
性化する。VALID ビットは、ROPが実行を完了したこ
とを示す。EXITビットは、ROPが特定のx86命令の
ROPシーケンスにおける最後のROPであることを特
定する。EXITビットは、EIPレジスタ620の更新を
トリガする。EIP制御回路636は、セットされたVA
LID ビットを有し、かつそれについてそのエントリとヘ
ッドエントリとの間のすべてのROBエントリがセット
されたVALID ビットを有するROBエントリのみのMS
BおよびLSB対を選択するようにマルチプレクサを制
御する。VALID ビットは、ROPの結果が回収されるべ
きかどうかを決定する。エントリマルチプレクサ640
は、4つの下位プログラムカウンタフィールドのうちの
1つを選択する。選択された下位プログラムカウンタフ
ィールドは、4つのROPのうちの回収されるべきRO
Pに対応し、これは、キューのヘッド616にあるRO
Pを含むすべての介在するROPもまた回収されるべき
である限り、キューのヘッド616から最も遠くにあ
る。BRANCH TAKENビットは、BRANCH TAKENビットがセッ
トされるときに分岐に基づいてEIPレジスタ620が
更新されるべきであることを特定する。4つのリオーダ
バッファ126のエントリのうちの1つが、EXITおよび
VALID ビットによって回収されるべきであると特定され
た分岐命令ROPに対応し、かつそのBRANCH TAKENビッ
トがセットされていれば、EIP制御回路636は、E
IPレジスタ620をセットするために分岐のターゲッ
トPCを選択する。
【0058】ROB制御および状態ブロック600は、
ROBアレイ604内にストアされた結果オペランドの
回収を制御する。ROBアレイ604内の結果がもはや
推測によるものではない場合には、ROB制御および状
態ブロック600は、キューのヘッド616に最も近い
4つのリオーダバッファエントリのALLOCATEビット、VA
LID ビット、EXCEPTION ビットを同時にテストする。さ
らに、ROB制御および状態ブロック600は、成立分
岐と、ストアと、ロードミスとを検出するために4つの
エントリをテストする。ROB制御および状態ブロック
600は、割当てられたROPエントリのうちのどれが
有効な結果を有するかを判断する。4つのテストされた
ROPの結果は、キューのヘッド616から回収される
べき結果を有するROPまでのすべてのROPのVALID
ビットがアサートされる限り、回収される。ROB制御
および状態600はROPを回収し、ROBアレイ60
4のエレメントの結果フィールドをライトバックバス1
34のうちの1つに置いて宛先ポインタを用いてライト
バックバスに対応する書込ポインタ133を駆動するこ
とによって、レジスタファイル124に結果を送る。書
込ポインタ133は、回収された結果を受取るべきレジ
スタファイル124内のレジスタアドレスを指定する。
整数データのライトバックについては、結果の下位ビッ
ト<31:0>が整数データを保持し、一方、上位ビッ
ト<37:32>は状態フラグレジスタ125を更新す
るフラグEFLAGS145である。浮動小数点データ
については、別個のFPフラグバス138がフラグをリ
オーダバッファ126に送り、ここでフラグは、浮動小
数点ROPが回収されるときに浮動小数点状態レジスタ
(図示せず)にこれらが送られるまで、ストアされる。
【0059】キューのテイル618は、次に発行される
ROPに割当てられるべきリオーダバッファエントリを
指す。キューのヘッド616は、回収すべき次の結果を
特定する。ROBアレイ604内のエントリの相対位置
は、推測によるプログラムの実行の順序に対応する。リ
オーダバッファ126においてそのリネームされたもの
に対応するエントリを有する特定のレジスタにアクセス
するには、その最も新しいものが、ROBアレイ604
内の最も新しく割当てられた対応するリネームレジスタ
の相対位置によって決定される。リオーダバッファ12
6は、リオーダバッファエントリの総数(この特定的な
実施例では16)まで、レジスタファイル124内のい
かなるレジスタの複数のリネームされたものをも更新で
きる。
【0060】リオーダバッファ126は、推測によるR
OP実行の際に起こる例外およびトラップを扱う。機能
ユニットがROPを実行する際に例外またはトラップを
検出すると、状態バス141を介してその事象を示すフ
ラグを送る。フラグは、ROPに割当てられるリオーダ
バッファ126のエントリ、特定的には制御状態フィー
ルド内に保持される。この結果を回収しようとすると、
例外の告知がリオーダバッファ126から機能ユニット
に例外ライン160を介して送られる。機能ユニット
は、それらのリザベーションステーションをフラッシュ
することによってこの例外に応答する。すべての推測に
よるリオーダバッファエントリは無効である。命令によ
って、例外またはトラップに対応するリオーダバッファ
エントリが、推測による状態をクリアする前に回収され
るものと、エントリがクリアされて回収されないものが
ある。推測による状態は、ヘッド616およびテイル6
18のポインタを0に設定することによって1クロック
サイクル内にクリアされる。これによってリオーダバッ
ファ126が、例外またはトラップがとられた後フェッ
チされる正しいシーケンス内のROPにエントリを自由
に割当てることを可能にする。
【0061】さらに、リオーダバッファ126は推測に
よるROP実行からの結果として生じるデータを扱う。
成立分岐に関しては、分岐ROPに割当てられるリオー
ダバッファ126のエントリは分岐のターゲットPCを
保持する。予測誤りされた分岐については、リオーダバ
ッファ126はCANCELビットをセットして、予測誤りさ
れた分岐からキューのテイル618までのすべてのリオ
ーダバッファ126のエントリを含む、分岐を超えた推
測によるROPを無効にする。リオーダバッファ126
は、無効エントリの各々についてROBアレイ604状
態および制御フィールド<23:0>におけるCANCELビ
ットをセットすることによってこの無効性を記録する。
無効エントリが回収されると、それらの結果は廃棄さ
れ、レジスタファイル124等のプロセッサ資源は更新
されない。アサートされたCANCELビットを有するリオー
ダバッファのエントリが回収されるとき、レジスタファ
イル124への結果の書込およびEIPレジスタ620
の更新が禁じられる。しかしながら、キューのヘッド6
16は、CANCELビットがアサートされないときと同様に
通常どおり増分されて、リオーダバッファのエントリが
割当てから外され、新しいROPのために利用可能とな
る。機能ユニットのリザベーションステーションはフラ
ッシュされない。
【0062】リオーダバッファ126はレジスタを管理
するだけでなく、リネーム可能な資源として状態フラグ
の処理も行なう。状態フラグ125内の指定されたビッ
トおよびビットフィールドは、種々の動作を制御しプロ
セッサ110の状態を示すために用いられる。状態フラ
グ125は、キャリーフラグCF(ビット0)、パリテ
ィフラグPF(ビット2)、補助キャリーフラグAF
(ビット4)、ゼロフラグZF(ビット6)、符号フラ
グSF(ビット7)、トラップフラグTF(ビット
8)、割込イネーブルフラグIF(ビット9)、方向フ
ラグDF(ビット10)、オーバーフローフラグOF
(ビット11)、および再開フラグRF(ビット16)
を含む。これらのフラグのうち、6つの主な状態フラグ
(OF、SF、ZF、AF、PFおよびCF)はほとん
どの整数演算の結果として更新され、条件分岐命令のた
めの条件を発生するために用いられる。条件分岐命令
は、Jcc、すなわち条件コードccでのジャンプの形
態であることが多い。ここでccはフラグすなわち条件
コードを表わす。たとえば、分岐命令JNZとは、ゼロ
フラグ(ZF)がゼロの場合に予め定められたアドレス
にジャンプすることを意味する。
【0063】スーパースカラプロセッサ110では、発
行されたROPが実行を完了していないものもあるし、
実行は完了しているが推測的状態にあるもの、さらに推
測によらない状態となったものもある。リオーダバッフ
ァ126は未実行および推測によるROPのための結果
データを扱う。レジスタファイル124は、非推測的R
OPに関する回収された結果データを保持する。結果デ
ータを生成する命令があるのと同じように、種々の命令
がフラグを生成し、これも同様に利用不可能、推測的、
および非推測的状態を有する。フラグを扱うための種々
のレジスタ、回路および接続は、エス・エィ・ホワイト
(S.A.White )、ディ・エス・クリスティ(D.S.Christ
ie)およびエム・ディ・ゴダードの「フラグオペランド
リネームおよび転送装置を含むスーパースカラマイクロ
プロセッサ」(Super Scalar Microprocessor includin
g Flag Operand Renaming and Forwarding Apparatus)
と題する1994年6月1日出願の米国特許連続番号第
号により詳細に説明されるように設けられ、その
全体をここに引用によって援用する。状態フラグ125
は、非推測的となったフラグを保持する機能を果たす。
リオーダバッファ126は、フラグの推測による状態を
処理するための回路を含む。
【0064】状態フラグ125の6つの状態ビットすな
わちフラグOF、SF、ZF、AF、PFおよびCF
は、分岐ユニット170の使用のためのリネーム可能な
資源として与えられる。リオーダバッファ126は16
のエレメントのリオーダバッファアレイ604を含み、
その各エレメントは41ビット結果フィールドおよび1
1ビット浮動小数点フラグレジスタフィールドを含む。
浮動小数点ROPが実行された後、浮動小数点結果が結
果フィールドに書込まれ、浮動小数点フラグがリオーダ
バッファアレイ604のエントリの浮動小数点フラグレ
ジスタフィールドに書込まれる。フラグをセットした整
数ROPが実行された後、整数結果が結果フィールドの
ビット<31:0>に書込まれ、整数フラグがリオーダ
バッファアレイ604の結果フィールドのビット<3
7:32>に書込まれる。この態様で、リオーダバッフ
ァ126はレジスタのリネームおよびフラグのリネーム
を達成する。
【0065】リオーダバッファ126は、エントリを割
当て、オペランドタグを割当てる際に、ROPによって
影響されるフラグにタグ値も割当てる。命令デコーダ1
18が、ソースフラグオペランドとしてこれらのフラグ
値を要求する分岐命令ROP等の後続のROPを発行す
ると、リオーダバッファ126は、利用可能であれば対
応するフラグ値を送り、または分岐ユニット170にタ
グバス(図示せず)を介して対応するフラグタグを送
る。分岐ユニット170は、分岐の実行の準備ができる
まで、分岐リザベーションステーション902にフラグ
値またはフラグタグを保持する。フラグタグが分岐ユニ
ット170に送られれば、分岐リザベーションステーシ
ョン(図15の902)は、これらのフラグが更新され
ることを引起こすROPを実行するALU0またはAL
U1等の整数機能ユニットによるROP実行の結果とし
て4つの汎用結果バス132のビット<37:32>に
フラグ値が送られるまで待つ。
【0066】結果バス上の整数フラグ値もまたリオーダ
バッファアレイ604に書込まれる。結果の回収の際
に、ROPと関連するフラグ値がもはや推測によるもの
ではなくなると、回収されるROPに対応するフラグも
同様にリオーダバッファアレイ604から状態フラグ1
25に回収される。
【0067】1つ以上のフラグオペランドを必要とする
分岐ROPが命令デコーダ118によって分岐ユニット
170に発行され、必要とされるオペランドフラグに対
応するフラグエントリまたはフラグタグがリオーダバッ
ファアレイ604内になければ、必要とされるフラグオ
ペランドが状態フラグ125から検索され、フラグオペ
ランドバス(図示せず)によって分岐ユニット170に
送られる。
【0068】結果データオペランドおよびフラグの従属
性チェックは、リオーダバッファ126内の従属性チェ
ック回路(図示せず)を用いて行なわれる。別個の従属
性チェック回路がリオーダバッファ126内の各リネー
ム可能な資源について供給されて、そのためすべての従
属性が同時にテストされることとなる。3つのフラグ群
がリネーム可能な資源であり、そのため3つの従属性論
理回路がフラグのリネームのために用いられる。適切な
従属性チェック回路は、1994年4月26日出願の米
国特許出願連続番号 号(スコット・エィ・ホワイ
トの「環状桁上げ先見を用いる範囲発見回路」(“A Ra
nge-Finding Circuit using Circular Carry Look ahea
d ”))に詳細に説明され、ここに引用によって援用す
る。あるフラグ、特にSF、ZF、AFおよびPFビッ
トは相互依存しており、そのためビットのうちの1つを
評価するROPは他のすべてをも評価する。これらの相
互依存フラグは、単一のリネーム可能な資源として分類
され、供給される従属性回路を1つにする。
【0069】フラグのリネームは、フラグオペランドが
利用可能になるとすぐに条件分岐を実行することを可能
にし、それによってスーパースカラプロセッサ110の
性能を向上する。特定的には、分岐命令ROPが分岐ユ
ニット170に発行され、条件分岐が従属する条件フラ
グの値をALU175等の他の機能ユニットが決定する
前にフラグへの更新がスケジュールに組まれる。ここで
発生する1つの問題は、左および右ローテートおよびシ
フト動作を含む、ALU175によって行なわれる命令
のいくつかは、可変でありかつ他の命令の結果に従属す
るローテートまたはシフトカウントを用いることであ
る。シフトまたはローテートカウントはゼロになる可能
性があり、これは後続の分岐命令ROPの発行の際には
判断することができない。ゼロのシフトまたはローテー
トカウントに関して、x86命令はフラグの更新を抑
え、そのためフラグは更新がキャンセルされた後にも変
わらないままである。ALU175は出力オペランドと
してフラグを供給するが、これらを入力パラメータとし
ては受取らず、そのためフラグ更新がキャンセルされた
際に、ALUは次の最も新しいフラグ値を供給すること
ができない。分岐ユニット170は、キャリーフラグの
更新がキャンセルされたことを検出することができな
い。さらに、分岐ユニット170はキャンセルされたシ
フト動作に続く誤ったフラグオペランドの転送をキャン
セルするように指示され得ず、これはフラグの最も新し
い有効なリネームされたコピーを示すポインタがないた
めである。
【0070】プロセッサ110は、再同期化応答を起こ
すことによってキャンセルされたフラグ更新を扱う。フ
ラグ更新がキャンセルされると、ALU175は状態バ
ス141を介して更新キャンセルコードをアサートす
る。更新キャンセルコードは、ROPに与えられたリオ
ーダバッファ126のエントリ、特定的には状態/制御
<23:0>フィールド内に保持される。キャンセルさ
れたシフトまたローテートROPが回収されるとき、リ
オーダバッファ126は命令のキャンセルを認め、その
ため状態フラグ125へのフラグの書込がキャンセルさ
れる。リオーダバッファ126はさらに、再同期化応答
を起こすことによってキャンセルされたシフトまたロー
テート命令を認める。キャンセルされたフラグ条件の結
果として起こる再同期化のリクエストは、例外ライン1
60を介してリオーダバッファ126から機能ユニット
に伝えられ、すべてのプロセッサ110の動作を再同期
化する再同期化応答が始められる。再同期化はゼロによ
るシフトROPが回収されるときにのみ起こるので、ゼ
ロによるシフトが予測誤りされた分岐から起こる場合、
またはシフトROPが回収される前に割込または例外が
起こる場合には再同期化は避けられる。
【0071】再同期化は、キャンセルされたシフト命令
に従属するいかなる分岐命令ROPエントリをも含む推
測によるROPをキャンセルする。再同期化に続いて、
実行はキャンセルされたシフトROPに続くROPから
始まる。推測によるフラグ値のすべてがフラッシュされ
る。キャンセルされたシフト動作に対する従属性を有す
るいかなる分岐命令ROPも、状態フラグ125からの
非推測的フラグオペランドを用いて適切に実行する。
【0072】図14は、命令パイプラインにおけるプロ
グラム命令のシーケンス、およびパイプライン内の命令
に対する種々の命令ポインタを示す。図示される命令シ
ーケンスは分岐命令を含む。命令(INST jおよび
INST j+1)は、ROP(ROP i+9)にデ
コードされ、発行され、実行されて回収される(ROP
i)。ROP i+1ないしi+9は、推測によるR
OPである。ROPi−1およびi−2は回収され、も
う動作パイプラインには存在しない。
【0073】ここで図2ないし7、図11および12、
ならびに図15とともに図14を参照して、プロセッサ
はプログラムカウンタまたは命令ポインタを用いて実行
すべき命令を指定する。スーパースカラプロセッサは複
数のステージの複数の命令を並列して実行するので、様
々な目的のためにいくつかのプログラムカウンタが有用
である。プロセッサ110は、種々の機能を行なう4つ
のプログラムカウンタ、すなわちフェッチプログラムカ
ウンタ(フェッチPC)210、デコードプログラムカ
ウンタ382(デコードPC)、ターゲットプログラム
カウンタ122(ターゲットPC)および拡張命令ポイ
ンタ620(EIP)を含む。
【0074】フェッチPC210はパイプラインの始め
に維持されて、命令または命令のグループがフェッチさ
れる、命令キャッシュ116の命令ストアアレイ250
内のアドレスを指定する。フェッチPCはパイプライン
に入る命令(INST j)を指す。命令がパイプライ
ンステージに沿って伝播するROPに変換される際に、
後続の命令(INST j+1)がフェッチされ、パイ
プライン内に置かれる。このように、フェッチPCは処
理の第1のステージであるフェッチステージにある命令
のみを示す。命令のストリームの実行を止める問題のほ
とんどは、パイプラインのより後のステージで検出され
る。フェッチPC210は命令キャッシュ116内に置
かれ、命令キャッシュ116および外部メモリ114の
順次的および非順次的アクセスの間にフェッチされるべ
きx86命令を識別する。フェッチPC210は、キャ
ッシュミスの後適切な命令アドレスをリカバーするのに
有用である。命令キャッシュ116は、同じアドレスを
維持し、またはそのアドレスを次のキャッシュエントリ
に増分し、または内部アドレス/データバス111を介
してアドレス受取り、またはアドレスをターゲットpc
バス122からロードすることによって、あるサイクル
から次のサイクルへとフェッチPC210を更新する。
【0075】命令デコーダ118は、バイトキュー13
5から送られる各x86命令の論理命令アドレスを追跡
するデコードPCブロック382を含む。命令キャッシ
ュ116は線形アドレス指定に基づいて命令にアクセス
する。フェッチPCは、アドレスjおよびj+1として
示されるこれらの線形アドレスを識別する。しかしなが
ら、リオーダバッファ126内のEIPレジスタ620
は、ROPアドレスi−2ないしi+9として示される
ように論理x86アドレスを維持する。命令デコーダ1
18は、フェッチPCの線形アドレスを論理アドレス
に、EIPレジスタ620の更新のために変換する。命
令キャッシュ116は、論理アドレスを導出するために
線形アドレスからセグメントベースポインタを減ずるこ
とによってこの変換を補助する。この32ビット論理ア
ドレスは、デコードPCを発生して論理ROPアドレス
を示す命令デコーダ118のデコードPCブロック38
2に送られる。
【0076】バイトキュー135が非順次的フェッチを
検知すると、成立分岐から起こるプログラムカウンタお
よびこのプログラムカウンタ内の特定のバイトに対する
ポインタを示し、この情報をデコードPCブロック38
2に送る。デコードPCブロック382は、命令キャッ
シュ116によって供給される各ROPについてのデコ
ードPC値を発生する。図14に示されるデコードPC
は、ROPi+9を示す。命令デコーダ118は、命令
バイトが発行される際に現在のデコードPCからバイト
を増分し、分岐命令の第1のバイトがバイトキュー13
5から命令デコーダ118にロードされるときに新しい
分岐PCをロードすることによって、デコードPCを導
出する。分岐に続く順次的命令に関しては、デコードP
Cブロック382は、分断されていないシーケンスの開
始位置と終了位置との間のバイトキュー135内のx8
6バイトの数をカウントし、この数を現在のデコードP
Cに加えて、シーケンスの後の次のデコードPCを決定
する。命令デコーダ118は、分岐命令ROPを分岐ユ
ニット170に発行する際に、デコードpcバス213
を介してデコードPCを送る。
【0077】デコードPCは、DPCバス213を介し
て分岐ユニット170に送られる。分岐ユニット170
は、ターゲットPCの計算のため、および更新されたタ
ーゲットPCを予測されたターゲットPCと比較して分
岐が正しく予測されたかどうかを判断するために、送ら
れたデコードPCをベースアドレスとして用いる。
【0078】分岐ユニット170は第3のプログラムカ
ウンタであるターゲットPCを発生し、条件分岐命令の
予測誤りに続く命令のフェッチの再指定を与える。分岐
ユニット170は、オフセット(たとえば+1)および
分岐命令(たとえばROPi+3)のアドレスに基づい
て、ROPによって指定されるようにターゲットPCを
導出する。分岐ユニット170は、図15に示されるよ
うに加算器910またはインクリメンタ912を用い
て、分岐命令ROPおよびそのオペランドの特定に従っ
てターゲットPCを変更する。たとえば、加算器910
を用いて、オペランドバス130および131を介して
オペランドとして供給されるオフセットパラメータ(+
1)および分岐命令ROP(たとえばROP i+3)
のデコードPC値から新しいターゲットPC(たとえば
ROP i+4)を計算する。更新されたターゲットP
C(ROP i+4)と命令デコーダ118によって与
えられた情報を用いて計算されたターゲットPCとの間
で一致が起これば、分岐ユニット170は結果バス13
2を介してリオーダバッファ126に結果を送る。結果
は、一致を示す状態コードおよびターゲットPC(RO
P i+4)を含む。分岐が予測誤りされていれば、正
しいターゲットPC(ROP i+6)が命令キャッシ
ュ116に送られ、フェッチアドレスを再指定する。分
岐ユニット170は、再指定ターゲットPCをターゲッ
トpcバス122を介して命令キャッシュ116に戻す
ことによって、命令キャッシュ116に再び指示を与え
る。ターゲットPCは、フェッチを始めるべきアドレス
を示す。フェッチPC210は、命令ストリームをター
ゲットPCアドレスに指定し、バイトキュー135のリ
フィルを始める。
【0079】リオーダバッファ126内のEIPレジス
タ620は第4のプログラムカウンタとして機能し、実
行された命令のアドレスを追跡し、実行を完了する次の
命令を示し、その結果を回収させる(たとえばROP
i)。結果の回収が起こると、EIPは前進して、回収
された結果を有する命令のうちの最後のものの直後の命
令のアドレスを反映する。このように、EIPレジスタ
620は、推測によって実行しているROPから非推測
的データを発生しているROPを識別するポインタとし
て暗に機能する。EIPレジスタ620のポインタは、
ジャンプ、リターンおよびコールを含む制御移行命令
と、例外と、割込とによって暗に制御される。EIPレ
ジスタ620はある命令の境界から次の境界へと前進さ
せられる。命令のプリフェッチのために、これはプロセ
ッサに命令をロードするバスアクティビティのおおむね
の指示にすぎない。
【0080】例外またはトラップ等の、命令ストリーム
の実行を停止する問題に遭遇する命令のアドレスを識別
するために、EIPレジスタ620が有用である。EI
Pはしたがって、訂正する動作が行なわれた後の命令ス
トリームの実行の継続、またはデバッギングに有用であ
る。
【0081】図15に示される分岐ユニット170は、
ジャンプおよびコール動作ならびにリターンマイクロル
ーチンを含む、順次的なプログラム順序に従わない命令
のフェッチを制御する。分岐ユニット170は分岐予測
を検証し、予測誤り信号を発生する。分岐ユニット17
0は分岐リザベーションステーション902を含み、こ
れは加算器910、インクリメンタ912、分岐予測比
較論理908および分岐リマッピングアレイ904に接
続される。分岐リマッピングアレイ904は、浮動小数
点スタックの一部である。分岐ユニット170はさら
に、「成立予測」された分岐を追跡する分岐予測成立F
IFO906をさらに含む。分岐予測成立FIFO90
6は、成立予測された分岐のPCを保持し、このPCを
分岐予測比較論理906に与える。加算器910および
インクリメンタ912は、分岐命令ROPのアドレスに
関して分岐に関するターゲットアドレスを計算する。非
順次的フェッチが命令キャッシュ116によって予測さ
れると、その非順次的アドレス(分岐動作の結果)が分
岐成立予測FIFO906に送られ、分岐のPCととも
にラッチされる。対応する分岐が後にデコードされ、投
入されると、分岐ユニット170は、加算器910また
はインクリメンタ912を用いて、ROPによって指示
されるように分岐命令のアドレスに基づいてターゲット
PCを導出することによって分岐ROPを実行する。た
とえば、加算器910は、オペランドバス130および
131を介してオペランドとして与えられるオフセット
パラメータおよび分岐命令ROPのデコードPC値から
新しいターゲットPCを計算するために用いられる。更
新されたターゲットPCと命令デコーダ118から与え
られたデコードPCとの間に一致が起これば、分岐ユニ
ット170はその結果を結果バス132を介してリオー
ダバッファ126に送る。結果は、一致を示す状態コー
ドおよびターゲットPCを含む。分岐が予測誤りされて
いれば、分岐ユニット170は正しいターゲットPCを
命令キャッシュ116にターゲットPCバス122を介
して、およびリオーダバッファ126に結果バス132
を介して送る。ターゲットPCは命令キャッシュ116
に送られて、訂正された経路での命令のフェッチを直ち
に始める。ターゲットPCはリオーダバッファ126に
送られて、予測誤りされた分岐に含まれる後続のROP
をキャンセルする。この態様で、実行は正しいターゲッ
トPCから再スタートされ、実行プロセスの誤りがこの
ように防がれる。
【0082】分岐リザベーションステーション902
は、オペコード/タイプバス150を介して命令デコー
ダ118からROPオペコードと、AおよびBオペラン
ドバス130および131を介してレジスタファイル1
24およびリオーダバッファ126から、ならびに結果
バス132からオペランドおよび結果データとを受取る
複数エレメントFIFOアレイである。各リザベーショ
ンステーションエレメントは、1つの分岐命令ROPに
関するオペコード情報をストアする。複数分岐命令RO
Pがそのキュー内に保持され得る。分岐リザベーション
ステーション902によって受取られた情報は、デコー
ドPC、分岐予測および分岐オフセットを含む。デコー
ドPCはデコードPCバス213を介して伝えられる。
分岐予測は、分岐予測ラインを介して送られる。オフセ
ットは、AおよびBオペランドバス130および131
を介し、リオーダバッファ126を介して分岐ユニット
170に送られる。
【0083】命令デコーダ118は、分岐命令ROPを
分岐ユニット170に発行すると、先見TOS302お
よび先見フル/空アレイ306を伝え、これらは分岐リ
ザベーションステーション902内にストアされる。先
見TOSは、命令デコーダ118以外の機能ブロック内
で実現され得る。好ましくは、先見リマッピングアレイ
304、先見フル/空アレイ306、および先見TOS
302が、分岐ユニット170による処理のために利用
可能であって、そのためプロセッサは予測が正しいとき
に動作する態様と予測誤りのときに動作する態様とが異
なることとなる。
【0084】予測された分岐命令ROPがデコードさ
れ、投入されると、デコードPC、オフセットおよび予
測が発行され、分岐ユニット170のリザベーションス
テーション902内に保持される。予測されたターゲッ
トPCがデコードPCと一致すると、分岐は正しく予測
されており、正しい予測を反映する結果情報がリオーダ
バッファ126に正しく戻される。この情報は、一致が
達成されたことを示す状態コードおよびターゲットPC
を含む。分岐が予測誤りされれば、分岐ユニット170
は正しいターゲットPCを命令キャッシュ116とリオ
ーダバッファ126との両方に送り、命令ブロックイン
デックスを命令キャッシュ116に渡す。インデックス
は、分岐成立予測FIFO906を更新するために用い
られる予測情報を表わす。リオーダバッファ126は、
後続のROP動作をキャンセルすることによって、予測
誤りされた分岐に応答する。
【0085】分岐ユニット170はまた、予測誤りの際
に命令デコーダ118からの論理アドレスを線形アドレ
スに変換する。これを行なうために、コードセグメント
ベースポインタのローカルコピーが、命令キャッシュ1
16のコードセグメントブロック216によって分岐ユ
ニット170に与えられる。
【0086】分岐ユニット170は、浮動小数点TOS
472、浮動小数点リマッピングアレイ474および浮
動小数点フル/空アレイ476を含む浮動小数点スタッ
クブロックの推測による更新を管理して、浮動小数点交
換命令(FXCH)を実現し、浮動小数点演算を加速す
る。分岐ユニット170はこれらの目的を、推測による
分岐が起こると必ず現在のスタック状態のコピーを保存
することによって達成する。分岐リマッピングアレイ9
04は、各FXCH命令とともに発行される先見リマッ
ピングアレイ304(図6および7を参照)からコピー
される。分岐リマッピングアレイ904は、先見リマッ
ピングアレイ304と同じ情報をストアするので、絶対
に必要なわけではない。しかしながら、各分岐命令RO
Pについてではなく必要なときにのみ先見リマッピング
アレイ304を発行することが望ましい。先見リマッピ
ングアレイ304はFXCH命令に応答してのみ変化す
るので、FXCHリクエストに対してのみこれが分岐ユ
ニット170に送られる。
【0087】分岐ユニット170は、スタックポイン
タ、リマッピングアレイおよびフル/空アレイの正しい
コピーを最後の成功した分岐後に存在した状態にストア
することによって予測誤りに応答する。分岐ROPの完
了時に、分岐ユニット170は分岐タグ900を結果バ
ス132のうちの1つへと送り、分岐予測結果を送る。
分岐タグ900は、分岐命令のROPを保持するリオー
ダバッファエントリに対応し、これを識別する宛先タグ
である。リオーダバッファ126は、予測誤りされた分
岐命令ROPにプログラム順に後続する、発行されたR
OPのすべてをはさむ分岐タグ900およびテイル61
8を受取る。
【0088】分岐が正しく予測されると、浮動小数点T
OS472、浮動小数点リマッピングアレイ474、お
よび浮動小数点フル/空アレイ476が変更なくセーブ
される。
【0089】分岐が予測誤りされると、予測誤りされた
分岐に関してリザベーションステーション902内にス
トアされたフル/空アレイおよびスタックトップポイン
タおよび分岐リマッピングアレイ904は、予測誤りさ
れた分岐の前のスタックの状態を表わす。分岐ユニット
170は局所的にストアされたリマッピングおよびTO
S値を命令デコーダ118内の先見TOS302および
先見リマッピングアレイ304に書込み、スタックの状
態を事実上予測誤りされた分岐の前のものに戻す。分岐
ユニット170だけが予測誤りを検出するので、別のユ
ニットではなく分岐機能ユニットがスタックをテスト
し、リカバーするのが好ましい。
【0090】プロセッサ110内の機能ユニットが例外
条件を検出すると、これはコードをリオーダバッファ1
26に戻す。リオーダバッファ126は、既知の状態で
実行を再開するように、そのエントリをフラッシュする
ことよってリカバリを達成する。リオーダバッファ制御
ブロック670は、スタックに関して同様のリカバリ動
作を実行する。例外の際に、リオーダバッファ126は
浮動小数点リマッピングアレイ474を先見リマッピン
グアレイ304に、浮動小数点TOS472を先見TO
S302に、さらに浮動小数点フル/空アレイ476を
先見フル/空アレイ306に書込む。
【0091】プロセッサ110は、浮動小数点算術命令
と並行して浮動小数点交換を実行することができるが、
これは浮動小数点スタックがFPUの外部に実現される
からである。この理由のため、浮動小数点スタック構成
要素ブロックは、浮動小数点ユニット以外のユニットに
組込まれる。したがって、先見リマッピングアレイ30
4および先見TOS302は命令デコーダ118に組込
まれる。浮動小数点TOS472、浮動小数点リマッピ
ングアレイ474および浮動小数点スタックアレイ50
0はリオーダバッファ126内に置かれる。分岐ユニッ
ト170は分岐リマッピングアレイ904を供給する。
同様に、FXCH命令は、並列した命令処理を促進する
ように浮動小数点ユニットではなく分岐ユニット170
内で実行される。
【0092】浮動小数点交換命令が分岐予測誤り、例
外、割込またはトラップなく通常どおり実行されると、
分岐ユニット170は、命令デコーダ118によって送
られた先見リマッピングアレイ304をストアする。F
XCHの実行の完了時に、分岐ユニット170は先見リ
マッピングアレイ304の値を結果バス132に書込
む。リオーダバッファ126は、回収時に先見リマッピ
ングアレイを浮動小数点リマッピングアレイ474に書
込むことによって、レジスタの交換を行なう。
【0093】分岐ユニット170は、FXCH命令RO
Pを実行するに先立ってスタックエラーについてチェッ
クする。これらのエラーは、スタックオーバーフローお
よびアンダーフロー条件を含む。スタックアンダーフロ
ーおよびオーバーフロー条件の検出は、エム・ディ・ゴ
ダードおよびエス・エィ・ホワイトによる「浮動小数点
スタックおよび交換命令」(Floating Point Stack and
Exchange Instruction )と題する米国特許出願連続番
号第 号により詳細に説明され、その全体をここに
引用によって援用する。スタックアンダーフローエラー
が検出されると、分岐ユニット170はエラー告知コー
ドをリオーダバッファ126に状態バス141を介して
戻し、これによってリオーダバッファ126は再同期化
応答を始めることとなる。これによってFXCH命令で
プロセッサが再始動する。しかしながら、スタックアン
ダーフロー条件に続く再同期化の際に起こったFXCH
命令は、他のFXCH命令とは異なる。特に、非再同期
化FXCH命令は、単一のFXCH ROPを含む。再
同期化FXCH命令は、2対の浮動小数点加算(FAD
D)ROPおよび単一のFXCH ROPを含む5つの
ROPを含む。2対のFADD ROPは、FXCH命
令において交換される2つの浮動小数点レジスタにそれ
ぞれゼロを加える。スタックアンダーフローエラーは、
空のスタック位置からオペランドを読出そうとして起こ
る。浮動小数点ユニット172は、レジスタが空である
かフルであるかを、先見フル/空レジスタ306に従っ
て判断する。交換された浮動小数点レジスタが有効なデ
ータを含んでいれば、ゼロを加えてもデータの値は変わ
らない。そうでなければ、浮動小数点ユニット172が
FADD ROPを実行し、かつ交換された浮動小数点
レジスタが空であれば、浮動小数点ユニット172は、
トラッピングがマスクされていなければトラップ応答を
始めることによって、またはクワイエット非数字(QN
aN)コードをレジスタにロードすることによって応答
する。
【0094】スタックアンダーフローの後の再同期化に
よって、プロセッサ110はFXCH命令に戻り、有効
データまたはQNaNコードのいずれかの既知の状態に
データを置き、無効データを用いて実行されるいかなる
命令をも含む、FXCHに続く命令を再試行する。
【0095】どの浮動小数点命令も、82ビット浮動小
数点データを収容するための41ビットオペランドバス
130および131ならびに41ビット結果バス132
に関する少なくとも1対のROPを含むことに注目され
たい。
【0096】機能ユニットはROPを実行しながら例外
およびトラップを検出し、EXCEPTION 状態コードを状態
バス141を介してリオーダバッファ126に送ること
によって応答する。図16は、例外およびトラップに応
答する手順を示すフロー図である。この手順は510な
いし552と符号を付されるステップを含み、これらは
機能ユニットステップ510、リオーダバッファステッ
プ520、分岐機能ユニットステップ540および命令
キャッシュステップ550を含む。機能ユニットは種々
の再同期化動作510を行なう。機能ユニットうちの特
定のものが再同期化条件512を検出し、このような検
出に応答して、EXCEPTION 状態コードをリオーダバッフ
ァ126に送る(514)。
【0097】動作520において、リオーダバッファ1
26は、推測によるROP実行の間に起こる例外および
トラップに対するプロセッサ110の応答を制御する。
EXCEPTION コードは、ROPと関連するリオーダバッフ
ァ126のエントリ内に保持される(522)。ROP
が回収されると(524)、EIPジェネレータ回路6
30は、EXCEPTION ビットを含む種々の状態ビットをテ
ストする。EXCEPTIONビットがアサートされると、トラ
ップベクトルフェッチリクエスト526が、ROPエン
トリ内にストアされた例外状態情報で形成される。例外
の告知がリオーダバッファ126から例外ライン160
を介して機能ユニットに送られる。リオーダバッファ1
26は、グローバルなEXCEPTION 信号528をすべての
機能ユニットと命令デコーダ118および命令キャッシ
ュ116を含む他のユニットとにリレーする。機能ユニ
ットおよびプロセッサの他の機能ブロックは次に、「例
外応答」を行ない、リザベーションステーションがフラ
ッシュされ(516)、他の何らかの初期化タイプの手
順が行なわれる。例外またはトラップの後のすべての推
測によるリオーダバッファのエントリが無効にされる
(530)。推測による状態は、ヘッド616ポインタ
およびテイル618ポインタをゼロに設定することによ
って1クロックサイクル内にクリアされる。これによっ
て、リオーダバッファ126は、例外が行なわれてから
フェッチされる正しいシーケンスにおけるROPの割当
てを自由に行うことができる。
【0098】典型的にはリオーダバッファ126が例外
ライン160を介してEXCEPTIOIN信号を実質的にプロセ
ッサ110全体にグローバルに送ってから1サイクル後
に、リオーダバッファ126は、reqtrap ライン162
を介してREQTRAP 信号532を分岐ユニット170だけ
に送り、分岐ユニットは再同期化動作を行なう(54
0)。REQTRAP 信号は、例外もしくはトラップ応答、ま
たは同様に再同期化応答をリクエストし、一方XRES4B<
31:0>がリオーダバッファ126から分岐ユニット
170に送られて、例外の後に命令がそこからフェッチ
されるべきフェッチPCを分岐ユニット170に知らせ
る。例外の場合には、XRES4B<31:0>が2つの方法
のうちの1つでセットされる。第1の方法は、例外を検
出する機能ユニットが、命令キャッシュ116による命
令フェッチの再指定のためのマイクロコードエントリを
特定し得るというものである。機能ユニットはこのマイ
クロコードROMエントリポイントを結果バス132の
うちの1つに置く。代替的に、例外のうちのあるものに
関しては、機能ユニットは結果バス132を用いて結果
をリオーダバッファ126に戻して、結果バス132が
マイクロコードエントリポイントのやり取りのために利
用不可能とする。第2の方法は、リオーダバッファ12
6がマイクロコードROMエントリポイントを局所的に
発生するというものである。いずれの場合にも、リオー
ダバッファ126はマイクロコードROMエントリポイ
ントをXRES4B<31:0>に送る。
【0099】プロセッサ110はマイクロコードROM
エントリポイントから、または再同期化に関しては命令
PCから実行を始める。SYNC信号もまたリオーダバ
ッファ126から分岐ユニット170に送られる。SY
NCは、REQTRAP を識別、すなわちXRES4B<31:0>
上の情報を識別するのに用いられる。スタックアンダー
フローの際の再同期化に関しては、EXCHANGE SYNC 信号
もリオーダバッファ126から分岐ユニット170に送
られる。分岐ユニット170は再同期化FXCH RO
Pシーケンスを起こす。
【0100】分岐ユニット170は命令キャッシュ11
6に信号を送ることによって実行のための命令を再指定
し(542)、命令キャッシュ116は再同期化動作を
行なう(550)。UPDFPCがセットされてEIPレジス
タ620を再指定する。FPCTYPが分岐ユニット1
70から命令キャッシュ116に送られて、プロセッサ
110がMROMまたは命令メモリ112のいずれから
動作を始めるべきかを示す。分岐ユニット170は、XT
ARGET を命令キャッシュ116に送って、フェッチPC
を設定するためにキャッシュのためのポインタを与え、
再指定されたアドレス552で命令のフェッチを始め
る。
【0101】図17は、浮動小数点ユニット172の概
略のブロック図を示し、これは3つのパイプラインを用
いて算術計算を行なう。第1のパイプラインは、2つの
加算器ステージ922および923ならびに正規化シフ
タステージ933を含む加算/減算パイプラインであ
る。第2のパイプラインは、2つの乗算ステージ924
および925を有する乗算パイプラインである。第3の
パイプラインは、単一の除算ステージ926を有する除
算/平方根パイプラインである。浮動小数点機能ユニッ
ト172はまた、共有浮動小数点丸め装置927、検出
ブロック932、およびFPU結果ドライバ931を含
む。浮動小数点リザベーションステーション921は、
オペコード/タイプバス150、AおよびBオペランド
バス130および131、結果バス132、結果タグバ
ス139、AおよびBオペランドタグバス148および
149、ならびに宛先タグバス140からの入力を受取
るように接続される。リザベーションステーション92
1は2つのエントリを保持し、その各々が、82ビット
Aオペランドおよび82ビットBオペランド、宛先結果
タグ、例外処理のための8ビットオペコード、4ビット
Aオペランドタグ、4ビットBオペランドタグ、ならび
に浮動小数点スタックにスタックオーバーフローおよび
アンダーフロー条件を示す状態ビットのための記憶場所
を含む。浮動小数点スタックが浮動小数点機能ユニット
172の内部にはなく、一般にこれから構造的に分離さ
れていることに注目されたい。リザベーションステーシ
ョン921は、1クロックサイクルにつき2つのROP
の形で浮動小数点演算を1つ受入れることができる。リ
ザベーションステーション921は85ビット浮動小数
点AおよびBオペランドバス934および935を駆動
し、各々が82ビットオペランドおよび3つの浮動小数
点計算制御ビットを含む。
【0102】検出ブロック932は、浮動小数点ユニッ
ト172への入力が規定された無効性のある条件を満た
すときに、EXCEPTION 状態コードを発生する。浮動小数
点スタックオーバーフローまたはアンダーフロー信号が
セットされるか、除算演算の分母オペランドがゼロに等
しいか、または命令の発生された結果がゼロまたは無限
になるような値をソースオペランドの値が有する場合に
は、無効条件が起こる。浮動小数点機能ユニット172
への入力によって例外が発生されると、ユニットは演算
の残りのステージをキャンセルし、EXCEPTION 状態コー
ドを状態バス141に置いて、リオーダバッファ126
がプロセッサ110全体で例外応答を始めるようにす
る。
【0103】浮動小数点丸め装置927は、浮動小数点
ROPの実行の結果として生じる例外を検出する。これ
らの例外は、浮動小数点指数値のオーバーフローまたは
アンダーフロー、または丸める際に起こる不正確なエラ
ーを含む。これらのエラーはリザベーションステーショ
ン921に知らされる。
【0104】リオーダバッファ126は推測によるRO
Pから結果として生じるすべてのデータへのアクセスを
管理する。浮動小数点ユニット172等の機能ユニット
は、このようなデータ管理のタスクを行なわない。機能
ユニットは、オペランドバス130および131を介し
てリオーダバッファ126によって供給されたデータに
対して算術演算を行なう。リオーダバッファ126は、
浮動小数点スタック内のデータを含むすべての推測によ
るデータが、プロセッサ110内の種々のブロック間の
協働によって一貫した態様ではあるようにデータの管理
を制御するが、一般に浮動小数点機能ユニット172の
動作には依存しないで処理される。リオーダバッファ1
26のみに従属性の決定を含むデータフロー制御を与え
ることによって、FPU172を含む他の処理ブロック
は簡略化される。浮動小数点ユニット172によって用
いられる制御情報は、スタックオーバーフローまたはア
ンダーフロー条件を示すビット等のスタック状態ビット
に限られる。この情報は命令デコーダ118によって発
生され、動作の発行の際に浮動小数点ユニット172に
渡される。FPU172がオーバーフローまたはアンダ
ーフロートラップを受取ると、これはEXCEPTION 状態コ
ードを発生する。
【0105】浮動小数点機能ユニット172は、プロセ
ッサ110が再同期化応答を起こす2つの条件を検出す
る。第1の再同期化条件は、CR0制御レジスタのNE
(数値エラー)ビット(ビット5)がゼロに設定され、
IGGNE/(本明細書中、否定、相補および反転等を
表わすバー記号に代えて/を用いる)ピンがゼロに設定
された状態での浮動小数点例外の発生である。第2の再
同期化条件は、早い浮動小数点の出力に関して起こる。
【0106】CR0制御レジスタのNEビットは、プロ
セッサ110の例外処理を制御する。特定的には、CR
0制御レジスタのNEビットの値に依存して、例外ハン
ドラが、割込ベクトル16を介してか(NE=1)、ま
たは外部割込を介して(NE=0)呼び出される。NE
ビットは、セットされると浮動小数点数値エラーを報告
するための標準的な手順を可能化する。NEがクリアさ
れており、IGNNE/入力がアクティブ(ロー)であ
れば、数値エラーは無視される。NEビットがクリアさ
れており、かつIGNNE/入力がイナクティブ(ハ
イ)であれば、数値エラーによってプロセッサは停止
し、割込を待つこととなる。この割込は、入力を割込コ
ントローラに送るためにFERR/ピンを用いることに
よって発生される。NEビット、IGNNE/ピン、お
よびFERR/ピンは、浮動小数点エラーに対するプロ
セッサ110の応答を特定するために用いられる。再同
期化は、プロセッサ110がエラーを無視することを可
能にするために用いられる。NEビット、IGNNE/
ピン、およびFERR/ピンは、外部論理とともに用い
られてPCスタイルのエラーの報告を実現する。CR0
制御レジスタならびにIGNNE/およびFERR/ピ
ンは、1992年カリフォルニア州サンタクララ(Sant
a Clara )のインテル社(Intel Corporation )の出版
物「インテル486マイクロプロセッサファミリ:プロ
グラマーの手引書」(Intel 486 TM Microprocessor Fa
mily: Programmer´s Reference Manual )の補遺Eに
より詳細に述べられ、その全体をここに引用によって援
用する。
【0107】第2の再同期化条件は、早い浮動小数点の
出力に関して起こる。x86浮動小数点命令は、複数の
浮動小数点ROPのシーケンスの形で実行され得る。浮
動小数点エラー条件等の種々の条件下で、浮動小数点R
OPは、もはや後続の浮動小数点ROPを実行するのに
意味がないか、または望ましくないという条件または結
果をもたらし得る。これらのROPは命令ストリームに
関して無意味であると考えられる。たとえば、検出ブロ
ック932は、無効演算(FPスタックアンダーフロー
またはオーバーフロー等)、ゼロ除算、ゼロになる結
果、ソースオペランドに基づく無限等の無効条件を検出
する。ゼロ除算の条件は、後続の浮動小数点ROPがオ
ーバーフローエラーしかもたらさないことを示し得る。
このような条件下では、最初の意味のあるROPに基づ
いてフラグを含む浮動小数点結果を生成し、後続の不適
切なROPをキャンセルすることが効率的である。早い
浮動小数点の出力応答の際、入力の例外によって動作の
残りのステージ(さらなるROP)のキャンセルを起こ
し、浮動小数点の出力が早いという状態の指示とともに
宛先コードを結果バスを介して送る。
【0108】一般に、出力条件を検出してリオーダバッ
ファ126に条件コードを送るROPは再同期化応答を
始め、リオーダバッファ126および機能ユニットリザ
ベーションステーションをフラッシュし、浮動小数点R
OPのシーケンスを超えるフェッチPCを再指定する。
再同期化動作は、シーケンスにおける最終の浮動小数点
ROPに続いて始められる。
【0109】図18を参照して、ロード/ストア機能ユ
ニット173は、ロードおよびストア命令を実行し、デ
ータキャッシュ180と相互作用する。ロード/ストア
機能ユニット173は、デュアルポートリザベーション
ステーション945と、4エントリストアバッファ94
4と、ロード/ストア結果バスドライバ947とを含
む。各ポートはストアバッファ944およびデータキャ
ッシュ180にチャネルによって接続され、これは40
のデータビットと適切な数のアドレスビットとを含む。
リザベーションステーション945は、マルチプレクサ
941と、ロードストアコントローラ943と、マージ
回路950と、4つまでのROPを待ち行列に入れるた
めのFIFO942とを含む。
【0110】マルチプレクサ941は、AおよびBオペ
ランドならびにタグバス130、131、148および
149に接続される4:1マルチプレクサを含む。リザ
ベーションステーション945内の各FIFOエントリ
は、ロードまたはストア動作を実行するのに必要な情報
フィールドのすべてを保持する。1プロセッサクロック
サイクル中に、2つまでのROPが投入され、2つまで
のFIFOエントリが回収される。ロード/ストアリサ
ベーションステーション945は、その入力で、4つの
AおよびBオペランドバス130および131と、4つ
のAおよびBオペランドタグバス148および149
と、5つの結果バス132と、4つの宛先タグバス14
0および4つのオペコード/タイプバス150とに接続
される。リザベーションステーション945はまた、デ
ータキャッシュ180のポートAおよびBのデータ部分
に接続される。リザベーションステーション945は、
AおよびBポートリザベーションステーションデータバ
スそれぞれRSDATA AおよびRSDATA Bと、AおよびBポー
トリザベーションステーションアドレスバスRSADDR Aお
よびRSADDR Bを用いてストアバッファ944に接続さ
れ、これらはまたデータキャッシュ180のポートAお
よびBのアドレスラインに接続される。リザベーション
ステーション945は、リザベーションステーションロ
ードバスRSLOADおよびリザベーションステーションシフ
トバスRSHIFTを用いてコントローラ943に接続され
る。ストアバッファ944は、ロード/ストア結果バス
ドライバ947と、アドレス/データバス111と、ロ
ードストアコントローラ943とに、ストアバッファロ
ードバスSBLOADおよびストアバッファシフトバスSBSHIF
T を用いて接続される。リザベーションステーション9
45およびストアバッファ944との接続に加えて、ロ
ードストアコントローラ943はデータキャッシュ18
0およびリオーダバッファ126にも接続される。スト
アバッファ944への接続に加えて、ロード/ストア結
果バスドライバはデータキャッシュ180と、5つの結
果バス132および5つの結果タグバス139とにも接
続する。
【0111】データキャッシュ180は、1クロックサ
イクルにつき2つの動作をサポートする、線形にアドレ
スされる4ウェイインタリーブ8Kバイト4ウェイセッ
トアソシアティブキャッシュである。データキャッシュ
180は、128の16バイトラインまたはブロックと
して構成される。各16バイトエントリは、4つの個々
にアドレスされる32ビットバンクのラインにストアさ
れる。アドレス(ADDR)およびデータ(DATA)
ラインは、図示のとおりデータキャッシュ180をロー
ド/ストア機能ユニット173に接続する。より特定的
には、データキャッシュ180は、データキャッシュ1
80とロード/ストアユニット173との間に2組のア
ドレスおよびデータ経路を含み、ロード/ストア機能ユ
ニット173からの2つの同時アクセスを可能にする。
個々にアドレスされるバンクによって、データキャッシ
ュ180は、デュアルポーティングと関係するオーバー
ヘッドを避けながら、2つの同時ロード動作等の2つの
ROPによる同時アクセスを可能とする。これらの2つ
のアクセスは、16バイトデータキャッシュラインサイ
ズに整列される8ないし32ビットロードまたはストア
アクセスであり得る。
【0112】ロード動作は、データキャッシュ180か
らデータを読出す。ロード動作の間に、リザベーション
ステーション945はアドレスをデータキャッシュ18
0に供給する。アドレスがキャッシュヒットを発生する
と、データキャッシュ180は、リザベーションステー
ション945にデータキャッシュ180のストアアレイ
(図示せず)の対応するバンクおよびブロックにストア
されるデータを供給する。倍長語がデータキャッシュ1
80からロード/ストア結果バスドライバ947に転送
される。ロード/ストア命令オペコードの上位2ビット
が、生成されるべき結果のサイズを特定する。結果のタ
イプは、倍長語、語、上位バイトまたは下位バイトであ
る。未使用のバイトはゼロにセットされる。上位バイト
については、ROPを実行することによって生成される
結果は、ロード/ストア結果バスドライバ947によっ
て結果が結果バス132へと送られる前に中位ビットフ
ィールドにリマッピングされる。上位ビットは常にオペ
ランドの中位ビットフィールドから読出される。ロード
/ストア結果バスドライバ947は、倍長語読出動作に
よって読出されるデータの未使用の部分をマスクする。
AHBYTE信号がセットされれば、ロード/ストア結果バス
ドライバ947は下位フィールドデータビット<7:0
>を中位フィールドビット<15:8>に再マッピング
する。バスドライバ947は結果を結果バス132のう
ちの1つに送る。アドレスがポートAを介してデータキ
ャッシュ180に供給されたのであれば、データはポー
トAを介してリザベーションステーション回路945に
与えられる。そうではなく、アドレスがポートBを用い
てデータキャッシュ180に与えられた場合には、デー
タがリザベーションステーション945にポートBを介
して伝えられる。アドレスはデータキャッシュ180に
送られ、データはポートAおよびBを用いて同時にデー
タキャッシュ180から受取られる。ロード/ストア結
果バスドライバ947は結果を結果バス132のうちの
1つへと送る際に、結果タグバス139のうちの対応す
る1つをも駆動する。
【0113】ストア動作は、データキャッシュ180か
らの倍長語読出動作であり、キャッシュ180への倍長
語ライトバックがこれに続く。ストア動作の間、アドレ
スされた倍長語がまずデータキャッシュ180からスト
アバッファ944に転送される。次にデータがリザベー
ションステーション945からストアバッファ944に
送られる。ストアデータの幅が32ビット以上であれ
ば、データキャッシュ180から読出された倍長語にデ
ータがとって代わる。ストアデータの幅が32ビット未
満であれば、マージ回路950が適用可能なデータフィ
ールドを、データキャッシュ180から読出された倍長
語にマージする。ストアデータの一部が利用可能でなけ
れば、利用不可能なデータに代わるオペランドタグが用
いられる。結果バスから欠けているデータのすべてのビ
ットフィールドが送られるまで、データおよびタグの混
ったものがストアバッファに保持される。すべてのフィ
ールドが利用可能となるまでストアバッファ944に部
分データを保持することによって、フルの倍長語のみが
キャッシュ180に書込まれる。個々の8ビットバイト
の書込は必要ではない。マージされたデータはロード/
ストア結果バスドライバ947によってデータキャッシ
ュ180に戻される。幅が32ビットを上回るストアデ
ータのロードおよびストア動作は、データキャッシュ1
80への複数のアクセスを行ない、データキャッシュ1
80にライトバックする前にストアバッファ944にお
いてデータを構成する。ストア動作が解放されると、デ
ータおよび対応するアドレスがデータキャッシュ180
にアドレス/データバス111を用いて伝えられる。
【0114】適切なロード/ストア機能ユニットは、ウ
ィリアム・エム・ジョンソン、デイビッド・ビィ・ウィ
ットおよびミュラリ・チナコンダによる「マイクロプロ
セッサのロード/ストア機能ユニットおよび情報処理用
装置」と題する1994年10月25日出願の特願平6
−260699号(米国では1993年10月29日に
出願された米国特許出願連続番号第08/146,37
6号)に開示され、その全体をここに引用によって援用
する。
【0115】ここで図20および21を参照して、デー
タキャッシュ180はデータキャッシュコントローラ7
00とデータキャッシュアレイ702とを含む。なお、
図19は、図20および21の組合せの態様を示す。デ
ータキャッシュコントローラ700は、データキャッシ
ュ180の種々の動作を制御する。データキャッシュコ
ントローラ700は、ロード/ストア機能ユニット17
3およびIADバス111からの制御信号(CONTROL )
を受取り、制御信号をデータキャッシュアレイ702に
発生する。データキャッシュアレイ702はデータをブ
ロックの形でストアし、ブロックのアドレス指定の際に
データブロックへのアクセスを供給する。データキャッ
シュアレイ702はロード/ストア機能ユニット173
からアドレス信号およびデータ信号を受取り、IADバ
ス111とやり取りする。データキャッシュ180は4
ウェイアソシアティブであり、2つの線形アドレスをと
り、単一のクロックサイクルの第1の段階でその4つの
バンクにアクセスする。結果としてのロード動作はサイ
クルの第2の段階で完了し、結果バス132のうちの1
つを駆動し得る。結果バス132に対する機能ユニット
によるリクエストは、他の機能ユニットからのリクエス
トと調停される。
【0116】データキャッシュアレイ702は2つのア
レイ、すなわちデータストアアレイ704とデータ線形
タグアレイ706とを含む。データキャッシュアレイ7
04は2つのデータ信号(DATA A、DATA B)を受取り、
これらをロード/ストア機能ユニット173に与える。
ロード/ストア機能ユニット173は、2つの線形アド
レスADDR AおよびADDR Bを用いてデータ線形タグ回路7
02とデータストアアレイ704とにアドレスする。し
たがって、データキャッシュアレイ702はデュアルポ
ートメモリアレイであり、両方のポートがロード/スト
ア機能ユニット173に接続されて、2つのデータ値が
同時に書込または読出されるのを可能にする。データス
トアアレイ704はまた、線形タグアレイ706から制
御信号を受取る。
【0117】データキャッシュコントローラ700は、
データキャッシュアレイ702に線形アドレス信号を含
む制御信号を発生する。線形アドレス信号の中位ビット
は、データ線形タグアレイ706の各列内のブロックに
アドレスし、かつデータストアアレイ704からエント
リを検索するためのキャッシュブロックインデックスを
供給する。各線形アドレスの上位ビットは、線形タグア
レイ706の各列の線形データタグと比較され、キャッ
シュブロックインデックスによってアクセスされる列の
うちの1つを選択する。各線形アドレスの下位ビット
は、線形アドレスによってアドレスされるバイトにアク
セスするために検索されたエントリへのオフセットを与
える。
【0118】データストアアレイ704内のエントリ
は、16バイトのデータブロックを含む。データ線形タ
グアレイ706内のエントリは、データ線形タグ値と、
線形タグ有効ビットと、データ有効ビットと、ダーティ
ビットと、有効物理変換ビットとを含む。線形アドレス
の上位21ビットに対応するデータ線形タグ値は、対応
するデータストアアレイ704のエントリにストアされ
るブロックの線形ブロックフレームアドレスを示す。線
形タグ有効ビットは、線形タグが有効であるかどうかを
示す。データ有効ビットは、ストアアレイ内の対応する
エントリが有効であるかどうかを示す。ダーティビット
は、キャッシュラインが変更されたことを示し、アクセ
スされたラインが以前に変更されたときにデータキャッ
シュストアアレイ704に示すために用いられる。有効
物理変換ビットは、エントリが成功した物理タグヒット
に対応するかどうかを示す。
【0119】データキャッシュ180は、4つの2Kバ
イト列またはバンクに構成され、これらは、データキャ
ッシュ内のラインの1つが4つのバンクの各々において
4バイトを有するように構成される。したがって、2つ
のアクセスのビット[3:2]の線形アドレスが同じで
ない限り、2つのアクセスは同時にデータキャッシュ1
80内のデータアレイにアクセスできる。データ線形タ
グアレイ706およびデータキャッシュストアアレイ7
04は、命令キャッシュ116のアドレスタグアレイ2
52および命令ストアアレイ250と同様の態様で構成
される。しかしながら、データキャッシュ180は、デ
ータ線形タグアレイ706が2つの線形アドレス(ADDR
A、ADDR B)を同時に受取り、データストアアレイ70
4が2つのデータ信号(DATA A、DATA B)を同時に受取
りかつこれらを供給するデュアルポートデータキャッシ
ュとして機能する。データストアアレイ704は、4つ
の別個のデータストアアレイ、列0、1、2および3、
それぞれ710、712、714および716とマルチ
プレクサ回路718とを含む。マルチプレクサ718
は、それぞれの線形タグアレイにストアされた線形タグ
値との一致があるかどうかを示す制御信号をデータ線形
タグアレイ706から受取る。マルチプレクサ718は
データを受取り、これをストアアレイ710、712、
714および716に供給する。マルチプレクサ718
はまたデータを受取り、これをIADバス111および
ロードストア機能ユニット173に供給する。
【0120】線形タグアレイ706は、線形タグアレイ
列0、1、2および3、それぞれ720、722、72
4および726を含み、これらの各々は対応する比較回
路730、732、734および736と接続される。
データキャッシュ180の各列は、ストアアレイと、線
形タグアレイと比較回路とを含み、これらのすべてがロ
ード/ストア機能ユニット173から線形アドレスADDR
A、ADDR Bを受取る。
【0121】ここで図22を参照して、物理I/Dタグ
ブロック186は、命令物理タグアレイ部分750とデ
ータ物理タグアレイ部分752とを含む。命令物理タグ
アレイ部分750は、いくつかの命令物理タグアレイ7
60、762、764および766と、いくつかの命令
比較回路770、772、774および776を含む。
データ物理タグアレイ部分752は、いくつかのデータ
物理タグアレイ780、782、784および786
と、いくつかの対応するデータ比較回路790、79
2、794および796とを含む。命令物理タグアレイ
760、762、764および766は、命令キャッシ
ュ116の列0、1、2および3に対応する。データ物
理タグアレイ780、782、784および786は、
データキャッシュ180の列0、1、2および3に対応
する。
【0122】命令物理タグアレイ760、762、76
4および766は、バスインタフェースユニット184
によって供給される物理アドレスの最下位ビットを受取
り、それぞれの物理タグを比較回路770、772、7
74および776に供給し、これらは同じ物理アドレス
の最上位ビットも受取る。比較回路770、772、7
74および776は、それぞれの命令列ヒット指示信号
(IHIT C0 、IHIT C1、IHIT C2 およびIHIT C3 )を命
令ストアアレイ250内のマルチプレクサ回路(図示せ
ず)のHIT COL 入力に供給し、出力命令を供給するため
の列ストアアレイを選択する。
【0123】データ物理タグアレイ780、782、7
84および786は、バスインタフェースユニット18
4から物理アドレスの最下位ビットを受取り、それぞれ
のデータ物理タグを比較回路790、792、794お
よび796に供給し、これらは同じ物理アドレスの最上
位ビットも受取る。比較回路790、792、794お
よび796は、それぞれのデータ列ヒット指示信号(DH
IT C0 、DHIT C1 、DHIT C2 およびDHIT C3 )をデータ
ストアアレイ704内のマルチプレクサ718のHIT CO
L A 入力に供給し、出力データを与えるための列ストア
アレイを選択する。
【0124】データ物理タグアレイ780、782、7
84および786ならびに命令物理タグアレイ760、
762、764および766内の物理タグエントリは、
物理タグ値(PTAG)と、物理タグ有効ビット(P
V)と、シェアードビット(S)とを含む。物理データ
タグエントリはまた、モディファイドビット(M)、キ
ャッシュディスエーブルビット(CD)と、ライトスル
ービット(WT)とを含む。物理命令タグは有効ビット
しか持たない、というのは物理命令キャッシュは変更さ
れ得ないからである。PTAGエントリは、ストアアレ
イ内の対応するエントリと関連する線形アドレスの変換
の結果としてできる物理アドレスを識別する。物理タグ
有効ビットは、対応するストアアレイの関連するエント
リが有効情報を含んでいるかどうかを示す。シェアード
ビットは、プロセッサ110を含むコンピュータシステ
ム内の別のキャッシュが同じ物理メモリにマッピングす
るかどうかを示す。モディファイドビットは、ストアア
レイ内にストアされたデータが書込まれたかまたは変更
されていて、キャッシュの外部にストアされた対応する
データとはもはや一致しないことを示す。キャッシュデ
ィスエーブルビットは、エントリがキャッシュディスエ
ーブルされておりキャッシュ書込の際に書込まれないこ
とを示す。ライトスルービットは、エントリがキャッシ
ュに書込まれるときにエントリの対応する外部メモリ位
置にも書込まれるべきであることを示す。
【0125】ここで図23を参照して、メモリ管理ユニ
ット(MMU)188は、線形アドレスと物理アドレス
との間で変換するための変換回路として機能する。TL
B740は、x86アーキテクチャに関して規定される
線形−物理アドレス変換の手順を行なう。この手順は、
有効な変換を求めて外部ページテーブルをサーチするの
を防ぐように、最も最近の線形−物理アドレス変換のキ
ャッシュを用いる。MMU188は、TLBアレイ74
2およびTLB比較回路744を有するトランスレーシ
ョンルックアサイドバッファ(TLB)740を含む。
TLBアレイ742は、4ウェイセットアソシアティブ
キャッシュとして構成される。各セットは32のエント
リを含み、したがって128のTLBエントリを含む。
TLB188の各TLBエントリは、線形タグ値(LT
AG)および物理タグ値(PTAG)を含む。LTAG
は線形アドレスの最上位ビットに対応する。PTAG
は、線形アドレスに対応する物理アドレスの最上位ビッ
トに対応する。PTAGは、ページテーブルの単一レベ
ルのみを用いて物理アドレスを得るために、LTAGに
対応する線形アドレスの下位ビットと連結される。
【0126】キャッシュミスとは、データキャッシュ1
80内にストアされていないデータ値がロード/ストア
機能ユニット173によってリクエストされたときに起
こる条件である。プロセッサ110は、外部メモリ11
4からリクエストされたデータ値をデータキャッシュ1
80にロードすることによってキャッシュミスに応答す
る。
【0127】データキャッシュ180をロードするため
に、ロード/ストア機能ユニット173は求められたデ
ータに関する論理アドレスを線形アドレスに変換して、
線形アドレスをメモリ管理ユニット188に与える。M
MU118はTLBヒットがあるかどうかを判断するた
めにTLB比較回路744を用いて、TLBアレイ74
2の線形タグ部分に対して線形アドレスをチェックす
る。もしヒットがあれば、線形アドレスを変換すること
によって得られる物理アドレスの上位ビットが、線形ア
ドレスのキャッシュブロックインデックスビットおよび
列選択ビットに対応するデータ物理タグアレイ部分75
2のエントリに書込まれる。データ線形タグアレイ72
0、722、724および726は線形タグの列選択ビ
ットに対応し、線形アドレスビットのキャッシュブロッ
クインデックスはTLBアレイ742からの線形タグと
書込まれる。TLBヒットがなければ、TLB744は
メモリ管理ユニット188によってリクエストされた値
のアドレスを含むように更新され、そのためTLBヒッ
トが結果として起こり、実ページ数がデータ物理タグ部
分752に書込まれることとなる。
【0128】読出リクエストが外部メモリに対してロー
ド/ストア機能ユニット173によって行なわれ、線形
アドレスに対応する物理アドレスで外部メモリ114に
ストアされた値が外部メモリから検索される。この値
は、それぞれ物理および線形タグアレイにストアされた
その値の物理および線形タグのラインおよび列位置に対
応するストアアレイ704のラインおよび列にストアさ
れる。物理タグアレイ752内の対応する物理タグ有効
ビットは、セットされると物理タグが有効であることを
示す。線形タグアレイ706内の対応するデータ有効ビ
ット、線形タグ有効ビットおよび有効物理変換ビットも
またセットされると線形タグに対応するエントリが有効
であること、線形タグが有効であること、およびエント
リが物理変換をうまく与えることを示す。この値の論理
アドレスが機能ユニットによって再びリクエストされる
と、ロード/ストア機能ユニット173は、線形アドレ
スタグアレイ706内の線形タグをリクエストされたア
ドレスと比較するために、論理アドレスを線形アドレス
に変換する。有効ビットがセットされ、かつ有効物理変
換ビットがセットされているので、線形アドレスヒット
が起こり、データストアアレイ702の対応するライン
にストアされたエントリがリクエストした機能ユニット
に送られる。ロード/ストア機能ユニット173による
アクセスの間、物理I/Dタグブロック186またはT
LB回路188にアクセスする必要はない。これは、エ
ントリが有効物理変換を有することを示す有効物理変換
ビットがセットされているためである。TLB744が
更新されない限り、各データキャッシュアクセスについ
てこのプロセスが繰り返される。
【0129】プロセッサ110は、自己変更コードに対
応している。自己変更コードは実行中に新しいオペコー
ド、アドレスまたはデータ値を既存の命令に対して書込
むことによってそれ自体を変更するプログラムコードで
ある。自己変更コードは、命令キャッシュ116に現在
あるアドレスにストア動作が書込むときのプロセッサ1
10の動作のコンテキストで起こる。
【0130】ここで図4と17ないし23とを参照し
て、ストア動作は、ストア動作の第1の部分がロード動
作に類似したリード・モディファイ・ライト動作として
行なわれる。ロード動作に関しては、ロード/ストア機
能ユニット173は、ストアされるべき位置にあるデー
タ値がデータキャッシュ180内で利用可能であるかど
うかを判断する。線形アドレスの最下位11ビットであ
るキャッシュインデックスが、線形アドレス計算の一部
として計算される。このキャッシュインデックス線形ア
ドレスは、データキャッシュストアアレイ704の適切
なバンクおよびラインにアクセスするのに用いられる。
適切なラインおよびバンクがアクセスされると、線形タ
グを比較することによってストアアレイ704の適切な
列にアクセスするのに線形アドレスが用いられる。タグ
が一致すれば、データキャッシュヒットが起こる。推測
によるロード動作がロード/ストア機能ユニット173
によって行なわれており、かつロードされるべきデータ
値がデータキャッシュ180内で利用可能でないときに
は、推測によるデータキャッシュミスが起こる。
【0131】データキャッシュ180がアクセスされ、
かつ結果がキャッシュミスである場合には、MMU18
8においてTLB740がアクセスされ、物理タグが物
理I/Dタグブロック186内でアクセスされて、デー
タ値の物理アドレスを決定する。この物理アドレスは次
にMMU188内で、物理アドレスがいかなる保護チェ
ックをも犯すものでないことを確かにするためにチェッ
クされる。ロード/ストアコントローラ943は、線形
アドレスに対して当該分野では周知であるようにセグメ
ントリミットチェックおよび保護チェックを行なう。保
護チェックの一部として、データキャッシュ180およ
び命令キャッシュ116のメモリの双方ともがコンフリ
クトに関してテストされる。線形−物理アドレスのマッ
ピングによって命令アクセスおよびデータアクセスが同
じ物理位置をリクエストすることを可能にするので、線
形キャッシュにおいてミスが起こるとキャッシュの双方
ともがテストされる。MMU188は、自己変更コード
の場合に命令キャッシュのデータキャッシュ変更をスト
ア動作が求めることを判断する。ストア動作がリクエス
トされているので、これはプログラムコードメモリへの
書込であり、そのため命令キャッシュブロックおよびそ
の関連のプリデコード情報が無効にされる。これはアド
レスタグアレイ252のエントリの有効ビットをクリア
することによって行なわれ、これが命令キャッシュ11
6内の命令ブロックを割当てから外し、このブロックの
データキャッシュ180に対する割当てを可能にする。
新しく割当てられたデータブロックの第1のアクセスは
ロードであり、この後にデータキャッシュ180への局
所的ストアが続く。結果としてのデータ値がDATA Aデー
タ経路を介してリザベーションステーション945に戻
される。このデータ値は、結果バスドライバ947によ
って結果バス0にフォーマット化される。適切なモディ
ファイドビットが物理I/Dタグ186においてアサー
トされて、データストアアレイ704内にストアされた
データが書込まれたか、または変更され、キャッシュの
外部にストアされた対応のデータとはもはや一致しない
ことを示す。適切なダーティビットがデータ線形タグア
レイ706のエントリ内でアサートされて、外部メモリ
114内の情報がデータキャッシュ180と矛盾しない
ことを確かにする。キャッシュアレイ704は、タグバ
スからのラインのタグ有効ビットで更新される。タグ
値、宛先タグおよび状態が次に利用可能な結果バスへと
送られる。データ値および対応する宛先タグがポートA
に対して結果バス0へと送られ、データストアアレイ7
04の次に利用可能なエントリにストアされる。この値
はデータストアアレイ704に、リオーダバッファ12
6からストア動作が回収されるまで保持され、これは未
決の他の命令が存在しないときに起こる。リオーダバッ
ファ126は、ロードストア回収信号を用いてロード/
ストア機能ユニット173に、ストア命令が回収され得
ること、すなわちストアを行なってもよいことを示す。
ストアは実際にデータ値の状態を変更するので、ストア
は推測では行なわれず、リオーダバッファ126がスト
アを実行することを可能にする前にストアが実際に推測
によるものではないことが明らかとなるまで待たなくて
はならない。
【0132】命令キャッシュ116のデータキャッシュ
ストアの回収は、再同期化応答を起こし、リオーダバッ
ファ126からすべての推測によるROPをフラッシュ
し、命令キャッシュ116が、最後に回収された命令の
時点、すなわちストアROPの直後の命令の時点から命
令をフェッチし始めることを引起こす。ストアの後の未
決のROPはすべて再フェッチされる。再同期化は、自
己変更コードストアに後続する命令に対してのみ適用さ
れる。
【0133】ここで図24を参照して、プロセッサは6
ステージパイプラインで動作し、実行経路が正しく成立
予測され、かつ命令が命令キャッシュ116から直接利
用可能な状態で、X86バイトの順次的ストリームをプ
ロセッサ110が実行する。各ステージは段階1および
段階2と称する2つの段階を含む。
【0134】この段階は、上下の列によって示されるよ
うに、順にフェッチ、デコード1、デコード2、実行、
結果および回収パイプラインステージを含む。選択信号
がパイプラインの種々のステージで現われるのにあわせ
て横方向の行に表わされ、これらは、システム前縁クロ
ック信号(ph1)、フェッチPCバス信号(FPC <3
1:0>)、命令ストアアレイ250バス出力信号(IC
BYTEnB<15:0>)、バイトキュー135バス信号
(BYTEQn<7:0>)および命令デコーダ118命令X
86−ROP変換信号(ROPmux)を含む。選択信号はさ
らに、ソースオペランドポインタバス136および13
7を介して送られる信号(source / destpointers)、
オペランドバス130および131を介して送られる信
号(REGF /ROB access)、ROPおよび宛先タグを機能
ユニットに発行するための信号(issue ROPs / dest ta
gs)、オペランドバス130および131を機能ユニッ
トが読出すための信号(A/B read operand buses)、お
よび機能ユニットによるROP実行のための信号(Func
unit exec)を含む。a&b→c、c&d→eおよびc
&g→は、ソースA、ソースB>宛先の形で任意のRO
P実行動作を示す。選択信号はさらに、結果バス調停信
号(Result Bus arb)、結果バス132を介して結果を
転送するための信号(Result Bus forward)、結果バス
132からリオーダバッファ126に結果を書込むため
の信号(ROB write result)、およびデータ転送のため
に機能ユニットのリザベーションステーションに結果タ
グ139を送るための信号(ROB tag forward )を含
む。選択信号はさらに、リオーダバッファ126からレ
ジスタファイル124に結果を回収するための信号(RE
GF write / retire )および回収のための信号EIP <3
1:0>を含む。
【0135】フェッチの際に、命令キャッシュ116は
段階1で新しいフェッチPC(FPC<31:0>を形成
し、フェッチPCを用いて段階2でキャッシュアレイ2
00にアクセスする。線形命令キャッシュタグアレイが
ストアアレイと並列してアクセスされる。フェッチ段階
2の遅くに、キャッシュアクセスがヒットであるかどう
かを判断し、予測実行されたX86バイトを識別し、予
測実行される次のブロックが順次的であるか非順次的で
あるかを確認することによって、命令キャッシュ116
は現在フェッチされているブロックの有効バイトを識別
する。タグおよびストアアレイにアクセスするのに加え
て、フェッチプログラムカウンタ値はまたサクセッサア
レイ254にアクセスし、これは分岐予測アレイとも称
する。サクセッサアレイ254は、どのx86バイトが
予測実行されるかを識別し、さらに予測実行される次の
ブロックが順次的であるか非順次的であるかを判断す
る。フェッチサイクルのPH2でアクセスされるこの情
報は、現在フェッチされているブロックのバイトが有効
バイトとしてバイトキュー135に送られるかを判断す
る。命令キャッシュ116は有効な予測実行バイトをバ
イトキュー135に送る。
【0136】分岐予測がフェッチ段階2で起こるので、
プリフェッチすべき次のブロックは順次的なものでも非
順次的なものでもあり得る。いずれにしても、ブロック
からの分岐が順次的な動作と同じ動作速度を有するよう
に、キャッシュアレイ200に再アクセスするのには1
クロックサイクルを利用できる。
【0137】デコード1の間、推測による命令がフェッ
チされ、命令デコーダ118が命令をデコードし、命令
が有効となる。デコード1の段階1の早くに、プリフェ
ッチされ、予測実行されたバイトが指定された充満位置
に送られ、バイトキュー135内の未決のバイトとマー
ジされ、信号ICBYTEnB<15:0>として示される。デ
コード1の段階1の途中で、マージされたバイトは、オ
ペコードをROP発行位置D0、D1、D2およびD3
に整列させ、ROPを信号ROPmuxで発行するために、信
号BYTEQn<15:0>を介して命令デコーダ118に送
られる。命令デコーダ118は、命令境界間のバイト数
をカウントすることによって、または分岐を検出してタ
ーゲットPC値をその位置からフェッチされた最初のX
86バイトに割当てることによって、バイトキュー13
5内の各X86命令のフェッチPCのコピーを維持す
る。デコード1の段階2およびデコード2の段階1で、
命令デコーダ118は、ROPに関する即値アドレスお
よびデータ値、機能ユニットの宛先、ならびにソースお
よび宛先オペランドポインタの値およびサイズを決定す
る。命令デコーダ118は、これらの信号を図24に示
されるように適切なバスを介して信号source / dest po
intersとして送る。
【0138】デコード2の間に、命令デコーダ118の
出力は有効になる。たとえば、オペランドバス130お
よび131とオペランドタグバス148および149と
がデコード2の早くに有効となり、これによってレジス
タファイル124およびリオーダバッファ126からの
オペランドとリオーダバッファ126からのオペランド
タグとがデコード2の遅くに利用可能となる。デコード
2の段階1で、4つまでのリオーダバッファ126のエ
ントリが、次のクロック段階で投入され得るROPに対
して割当てられる。ROPが割当てられると、リオーダ
バッファ126のエントリにおける割当てられたビット
がアサートされる。デコード2の段階2で、割当てられ
たすべてのROPに関するソース読出ポインタ136お
よび137がレジスタファイル124およびリオーダバ
ッファ126に与えられて、信号REGF / ROB access に
よって非推測的および推測的オペランドデータにそれぞ
れアクセスする。段階1でROPエントリを割当て、こ
れらに段階2でアクセスすることによって、リオーダバ
ッファ126は、現在の発行ウィンドウ内のエントリお
よび先に発行されたエントリに対するデータ従属性に関
してチェックできる。
【0139】命令デコーダ118は、命令境界間のバイ
ト数をカウントすることによって、または命令キャッシ
ュ116内の分岐を検出してターゲットPCをその位置
からフェッチされた第1のX86バイトに付加すること
によって、バイトキュー135内のx86命令の各々の
フェッチPCのコピーを導出するための情報を維持す
る。オペコードROP位置決め情報、およびバイトキュ
ー135にストアされた即値フィールドを用いて、命令
デコーダ118は、第1のデコードサイクルのPH2お
よび第2のデコードサイクルのPH1の間にプログラム
カウンタ情報を決定する。第2のデコードサイクルのP
H1の終りまでに、すべてのレジスタ読出および書込ポ
インタが解決され、動作が決定される。これは図24に
ソースA/Bポインタ値のアサートとして示される。
【0140】実行の際に、オペランドバス130および
131とタグ148および149とが有効となり、機能
ユニットのリザベーションステーションに供給される。
機能ユニットはROPを実行し、結果バスを調停する。
実行の際に、ROPはオペコード/タイプバス150を
介して信号issue ROPs /dest tags によって、およびオ
ペランドバス130および131を介して信号A / B re
ad oper buses によって機能ユニットに投入される。実
行段階1の遅くに、機能ユニットはオペコード/タイプ
バス150からの信号にアクセスして、発行されたRO
Pの1つまたはそれ以上を待ち行列に入れるかどうかを
判断する。機能ユニットがROPを実行する準備ができ
ていれば、実行段階1の遅くに実行を始め、タイミング
信号Funcunit execで段階2まで実行を続ける。段階2
の終りに、機能ユニットはタイミング信号Result bus a
rbで結果バスアービトレータ(図示せず)から結果バス
付与信号(図示せず)を調べて、結果バスが付与される
かどうかを判断する。結果バスへのアクセスが認められ
れば、認められた機能ユニットは後続の結果段階1で割
当てられた結果バスを駆動する。
【0141】結果ステージの間に、信号Result bus for
wardは機能ユニット結果バスドライバから結果バス入
力、機能ユニットおよびリオーダバッファ126への結
果の転送を時間決めする。結果段階1において、結果、
結果タグおよび状態情報がそれぞれバス132、139
および141を介してリオーダバッファ126に送ら
れ、タイミング信号ROB write resultによって書込まれ
る。状態情報は有効、例外および予測誤りフラグを含む
状態フラグを含む。このとき、有効な結果を生成したR
OPに関してROBエントリにおいて有効ビットがアサ
ートされる。結果段階2においては、新しく割当てられ
た結果データが、そのデータをソースオペランドとして
用いる後続のROPによって検出可能であり、結果デー
タがタイミング信号ROB tag forward でオペランドバス
130および131に送られる。
【0142】回収のPH1において、ROPの結果がリ
オーダバッファ126からレジスタファイル124に書
込まれ、EIPレジスタ620が信号REGF write / ret
ireで回収すべき次の命令を指すように更新される。回
収サイクルのPH1で、リオーダバッファ126内のエ
ントリが割当てから外され、結果フィールドがリオーダ
バッファ126からレジスタファイル124に書込まれ
る。リオーダバッファ126は、回収されてしたがって
もう推測によるものではない命令のプログラムカウンタ
を追跡するようにEIPレジスタ620を維持し、更新
する。EIP <31:0>タイミング信号はEIPレジス
タ620を更新し、ROPが回収される際にEIP <3
1:0>バスを駆動する。リオーダバッファ126のエ
ントリが割当てから外されるので、その後のレジスタへ
の参照は、リオーダバッファ126からの推測による読
出ではなく、レジスタファイル124からの読出とな
る。レジスタファイル124からの読出は、プロセッサ
110の推測による状態ではなく実際の状態を示す。
【0143】図25は、図26および27の組合せの態
様を示し、図26および27は、再同期化応答を引起こ
すように指定された条件が第1のサイクルで生じ、再同
期化が第1のサイクルに続くサイクルで達成されること
を起こすときのプロセッサ110のタイミング図であ
る。再同期化条件に先立ったクロックサイクルの信号
は、図24に示される正しく予測された分岐に関する信
号と同じである。しかしながら、さらに例外フラグEXCE
PTION 、リクエストトラップREQTRAP 、同期化フラグSY
NC、XRES4B<31:0>ポインタ、更新フェッチPC U
PDFPC/FPCTYPE およびターゲットPC XTARGET <3
1:0>信号がプロセッサ110に与えられて、再同期
化応答を制御する。例外フラグEXCEPTION は、リオーダ
バッファ126から機能ユニットおよび他のブロックに
伝えられ、機能ユニットおよびブロックの局地的な初期
化をトリガし、ROPの進行中の実行を終らせる。たと
えば、EXCEPTION は一般には機能ユニットのリザベーシ
ョンステーションのフラッシュを始める。リクエストト
ラップREQTRAP は、リオーダバッファ126から分岐ユ
ニット170へのラインであり、これはXRES4B<31:
0>とともに例外、トラップ応答または再同期化応答を
リクエストする。リオーダバッファ126から分岐ユニ
ット170に伝えられるXRES4B<31:0>は、分岐ユ
ニット170に例外の後にそこから命令をフェッチする
べきフェッチPCを知らせる。XRES4B<31:0>は、
例外に応答する際にプロセッサ110が向けられるべき
命令ポインタである。同期化フラグSYNCは、REQTRAP を
識別し、再同期化応答を例外応答と区別するために用い
られる。例外応答の際には、SYNCがデアサートされてリ
クエストトラップREQTRAP 信号および関連のXRES4B<3
1:0>ポインタによってプロセッサ110がXRES4B<
31:0>によって示されるプログラム命令位置から始
まって命令をフェッチすることとなる。再同期化応答の
際には、SYNCがアサートされて、XRES4B<31:0>ポ
インタポインタ上の値を識別する。XRES4B<31:0>
は、例外の後のプロセッサの動作を再指定するためのM
ROMアドレスか、または再同期化条件に続くプロセッ
サの動作を再指定するためのEIPレジスタ620の内
容を有する。SYNCがアサートされると、XRES4B<31:
0>は拡張命令ポインタEIPを有し、リクエストトラ
ップ信号REQTRAP によって、プロセッサ110はポイン
トEIPによって示されるプログラム命令位置から始ま
って命令をフェッチすることとなる。
【0144】スタックアンダーフローの際の再同期化に
ついては、EXCHANGE SYNC 信号もまたリオーダバッファ
126から分岐ユニット170に送られ、分岐ユニット
170が再同期化FXCH ROPシーケンスを起こすこととな
る。更新フェッチPC UPDFPC およびXTARGET <31:
0>が分岐ユニット170から命令キャッシュ116に
送られる。更新フェッチPC UPDFPC / FPCTYPE はフェ
ッチプログラムカウンタを更新するように命令キャッシ
ュ116に知らせ、一方XTARGET <31:0>はフェッ
チPCがそれに更新されるアドレスを保持する。FPCTYP
E 信号は、SYNC信号の態様でXTARGET <31:0>ポイ
ンタ上の値を識別し、フェッチポインタ再指定のタイ
プ、すなわちMROMアドレスまたはEIPポインタフ
ェッチングのいずれであるかを区別する。
【0145】機能ユニットは再同期化条件を検出し、タ
イミング段階RESULT / ROBの間に、信号ROB write resu
ltによって状態バス141を介してリオーダバッファ1
26に再同期化フラグを送る。RESYNCビットおよびEXCE
PTION ビットが、ROPと関連するリオーダバッファ1
26のエントリ内に保持される。ROPが回収されると
き、EIPジェネレータ回路630は、RESYNCおよびEX
CEPTION ビットを含む種々の状態ビットをテストする。
RESYNCおよびEXCEPTION ビットのアサートによって、リ
オーダバッファ126はトラップベクトルリクエストを
行なう。タイミング段階RETIRE /REGFの間に、例外の告
知がEXCEPTION 信号によってリオーダバッファ126か
ら例外ライン160を介して機能ユニットに送られる。
リオーダバッファ126はEXCEPTION 信号を機能ユニッ
トのすべてにリレーし、これらはそれぞれのリザベーシ
ョンステーションをフラッシュして、さらにこの信号を
命令デコーダ118および命令キャッシュ116を含む
他のユニットにも送る。EXCEPTION 信号がすべての機能
ユニットに送られてから1サイクル後に、リオーダバッ
ファ126はREQTRAP およびSYNC信号を例外段階の間に
分岐ユニット170に送る。リオーダバッファ126は
例外段階の間に、ヘッド616ポインタおよびテイル6
18ポインタをゼロにセットすることによって1サイク
ルの間に推測による状態がクリアされる際に、フラッシ
ュされる。
【0146】フェッチ/ターゲット段階において、分岐
ユニット170は更新フェッチPCUPDFPC / FPCTYPE
信号およびXTARGET <31:0>アドレスを命令キャッ
シュ116に送る。SYNC信号がセットされると、分岐ユ
ニット170はXTARGET <31:0>を最後に回収され
たEIPアドレスに設定する。XTARGET <31:0>
は、再同期化に関して命令のフェッチがそれに指定され
るプログラムカウンタを示す。リカバリは、命令の実行
段階の間の再同期化条件の発見から再同期化される経路
における命令のフェッチまでの3サイクルの遅延を含
む。
【0147】フェッチ段階は、再同期化に関してターゲ
ットpcバス122が分岐ユニット170からタイミン
グ信号XTARGET <31:0>で命令キャッシュ116に
駆動されてフェッチがそこに再指定されるプログラムカ
ウンタを供給することを除いて、標準の動作および再同
期化応答と類似している。分岐ユニット170はタイミ
ング信号UPDFPC / FPCTYPEで示されるように、命令キャ
ッシュ116に更新フェッチPC UPDFPC / FPCTYPE指
示を送るのと同時に、命令キャッシュ116にターゲッ
トを送る。命令キャッシュ116はターゲットPCをフ
ェッチpcバス206に送り、アレイ200にアクセス
し、これはフェッチ段階2で行なわれる。キャッシュヒ
ットが起こると、バイトは正しく予測された場合のよう
にバイトキュー135に送られる。
【0148】デコード1、デコード2および実行ステー
ジは再同期化に続いて標準的な条件と同様である。
【0149】本発明を種々の実施例に関して説明した
が、これらの実施例は例示的なものであり、本発明の範
囲はこれに限られるものではないことを理解されたい。
説明した実施例の多くの変形、変更、付加および改良が
可能である。たとえば、再同期化が行なわれる条件は、
処理中のエラー条件または他の変則等の他のタイプの条
件を含み得る。再同期化動作を実現する論理および回路
は、例示的な実施例に示したのとは別の、プロセッサ中
の他の内部ブロックに位置されてもよい。これらのおよ
び他の変形、変更、付加および改良は、前掲の特許請求
の範囲によって定められる本発明の範囲内である。
【図面の簡単な説明】
【図1】図2および図3の組合せの態様を示す図であ
る。
【図2】再同期化応答を実現するプロセッサのアーキテ
クチャレベルのブロック図である。
【図3】再同期化応答を実現するプロセッサのアーキテ
クチャレベルのブロック図である。
【図4】プロセッサ再同期化を実現する特徴を含む命令
キャッシュアーキテクチャレベルのブロック図である。
【図5】図6および図7の組合せの態様を示した図であ
る。
【図6】プロセッサの再同期化を実現する特徴を含む命
令デコーダのアーキテクチャレベルのブロック図であ
る。
【図7】プロセッサの再同期化を実現する特徴を含む命
令デコーダのアーキテクチャレベルのブロック図であ
る。
【図8】図2および3のプロセッサ内のレジスタファイ
ルのアーキテクチャレベルのブロック図である。
【図9】図8に示されるレジスタファイルのメモリフォ
ーマットを示す図である。
【図10】図11および図12の組合せの態様を示した
図である。
【図11】プロセッサ再同期化を実現する特徴を含む、
図2および3のプロセッサ内のリオーダバッファのアー
キテクチャレベルのブロック図である。
【図12】プロセッサ再同期化を実現する特徴を含む、
図2および3のプロセッサ内のリオーダバッファのアー
キテクチャレベルのブロック図である。
【図13】図11および12のリオーダバッファ内のメ
モリフォーマットの図である。
【図14】図2および3のプロセッサ内のプログラムカ
ウンタの相互作用を表わす図である。
【図15】プロセッサ再同期化を実現する特徴を含む分
岐ユニットのアーキテクチャレベルのブロック図であ
る。
【図16】例外およびトラップを含む種々の条件に応答
してプロセッサを再同期化させる方法のフローチャート
である。
【図17】プロセッサ再同期化を実現する特徴を含む浮
動小数点機能ユニットのブロック図である。
【図18】プロセッサ再同期化を実現する特徴を含むロ
ード/ストア機能ユニットのブロック図である。
【図19】図20および図21の組合せの態様を示した
図である。
【図20】プロセッサ再同期化を実現する特徴を含むデ
ータキャッシュのブロック図である。
【図21】プロセッサ再同期化を実現する特徴を含むデ
ータキャッシュのブロック図である。
【図22】プロセッサ再同期化を実現する特徴を含む物
理I/Dタグブロックのブロック図である。
【図23】プロセッサ再同期化を実現する特徴を含むト
ランスレーションルックアサイドバッファのブロック図
である。
【図24】プロセッサにおける複数ステージの順次的実
行パイプラインのタイミング図である。
【図25】図26および図27の組合せの態様を示した
図である。
【図26】再同期化される際のプロセッサにおける複数
ステージの順次的実行パイプラインのタイミング図であ
る。
【図27】再同期化される際のプロセッサにおける複数
ステージの順次的実行パイプラインのタイミング図であ
る。
【符号の説明】
110 パイプラインプロセッサ 126 リオーダバッファ 170−175 機能ユニット 620 命令ポインタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 スコット・エイ・ホワイト アメリカ合衆国、78748 テキサス州、オ ースティン、ペレンニアル・コート、 11303 (72)発明者 マイケル・ディー・ゴッダード アメリカ合衆国、78739 テキサス州、オ ースティン、オールド・ハーバー・レー ン、6434

Claims (41)

    【特許請求の範囲】
  1. 【請求項1】 パイプラインプロセッサを動作させる方
    法であって、 命令フェッチの順序どおりのシーケンスを決定するステ
    ップと、 前記命令を順序どおりにフェッチするステップと、 順序どおりに前記フェッチされた命令を待ち行列に入れ
    るステップと、 前記命令を順序どおりでなく推測で実行して結果を発生
    するステップと、 実行された命令の結果を順序どおりに回収するステップ
    と、 実行された命令の結果の前記回収を追跡するステップ
    と、 命令が実行される際に再同期化条件を検出するステップ
    と、 再同期化条件が検出された命令の結果を回収する際に前
    記プロセッサを再同期化させるステップとを含み、再同
    期化動作は、 フェッチされた命令の前記待ち行列をフラッシュするス
    テップと、 回収された命令結果の前記追跡に基づいて命令フェッチ
    の順序どおりのシーケンスを再指定するステップとを含
    む、方法。
  2. 【請求項2】 命令フェッチの前記順序どおりのシーケ
    ンスが、再同期化条件が検出された命令に先立つ命令に
    再指定される、請求項1に記載の方法。
  3. 【請求項3】 命令フェッチの前記順序どおりのシーケ
    ンスが、それについて再同期化条件が検出される命令に
    再指定される、請求項1に記載の方法。
  4. 【請求項4】 複数の機能ユニットのうちのあるものが
    推測で命令を実行するために選択され、前記機能ユニッ
    トは前記選択された命令を待ち行列に入れるためのリザ
    ベーションステーションを有し、 命令がリオーダバッファに順序どおりに待ち行列に入れ
    られ、 前記命令の待ち行列が、前記複数の機能ユニットの前記
    リザベーションステーションをフラッシュすることによ
    って、および前記リオーダバッファをフラッシュするこ
    とによってフラッシュされる、請求項1に記載の方法。
  5. 【請求項5】 前記命令が、可変数のビットだけデータ
    をそれぞれローテートまたはシフトするデータローテー
    ト命令またはデータシフト命令を含み、前記可変数は順
    番に関して前の命令の結果に従属し、 前記命令が、前記データローテート命令またはデータシ
    フト命令の結果を条件とする条件分岐命令を含み、 ローテートまたはシフトのための前記可変ビット数を設
    定する結果がゼロであれば、再同期化条件が起こる、請
    求項1に記載の方法。
  6. 【請求項6】 前記命令が浮動小数点例外条件が検出さ
    れる浮動小数点命令を含み、 前記プロセッサが、浮動小数点例外条件が無視されるか
    どうかを判断する外部信号に接続される入力ピンを含
    み、 浮動小数点例外条件が検出され、かつ前記浮動小数点例
    外条件が無視されることを前記外部信号が特定すれば、
    再同期化条件が起こる、請求項1に記載の方法。
  7. 【請求項7】 前記命令が、複数のサブ動作のシーケン
    スとして実行される命令を含み、 後続のサブ動作の実行を無意味にする前記複数のサブ動
    作のうちの1つの実行中に条件が検出可能であり、 後続のサブ動作の実行が無意味であるときに、再同期化
    条件が起こる、請求項1に記載の方法。
  8. 【請求項8】 サブ動作のシーケンスとして実行される
    浮動小数点命令を前記命令が含み、前記浮動小数点命令
    は浮動小数点機能ユニットによって実行され、 後続のサブ動作の実行を無意味にする浮動小数点サブ動
    作の実行中に条件が検出可能であり、 後続のサブ動作の実行が無意味であるとき、再同期化条
    件が起こる、請求項1に記載の方法。
  9. 【請求項9】 前記命令が浮動小数点スタック交換命令
    を含み、 スタックオーバーフロー条件およびスタックアンダーフ
    ロー条件を含むスタックエラー条件が、浮動小数点スタ
    ック交換命令の実行中に検出され、 スタックエラー条件が検出されると再同期化条件が起こ
    る、請求項1に記載の方法。
  10. 【請求項10】 前記命令がメモリへのデータストア命
    令を含み、 命令メモリへのストアが、メモリへのデータストア命令
    の実行中に検出され、 命令メモリへのストアが検出されると、再同期化条件が
    起こる、請求項1に記載の方法。
  11. 【請求項11】 パイプラインプロセッサであって、 命令フェッチの順序どおりのシーケンスを決定するフェ
    ッチプログラムカウンタと、 前記フェッチプログラムカウンタに接続されて、前記命
    令を順序どおりにフェッチするための命令キャッシュ
    と、 前記命令キャッシュに結合されて、前記フェッチされた
    命令を順序どおりに待ち行列に入れるためのオーダバッ
    ファアレイと、 前記命令キャッシュおよび前記リオーダバッファアレイ
    に結合されて、前記命令を順序どおりでなく推測で実行
    して結果を発生するための機能ユニットと、 前記機能ユニットに結合されて実行された命令の結果を
    順序どおりに回収するためのリオーダバッファコントロ
    ーラと、 前記リオーダバッファコントローラに結合されて、実行
    された命令の結果の前記回収を追跡する命令ポインタ
    と、 前記機能ユニットに結合されて、命令が実行される際に
    再同期化条件を検出するための再同期化条件検出器と、 前記リオーダバッファコントローラに結合されて、再同
    期化条件がそれについて検出された命令の結果の回収に
    応答する再同期化コントローラを含み、前記再同期化コ
    ントローラはさらに前記再同期化コントローラに結合さ
    れて、フェッチされた命令の待ち行列をフラッシュする
    ための待ち行列コントローラと、 前記命令ポインタを前記フェッチプログラムカウンタに
    結合し、回収された命令結果の前記追跡に基づいて命令
    のフェッチの順序どおりのシーケンスを再指定する分岐
    ユニットとを含む、パイプラインプロセッサ。
  12. 【請求項12】 複数の機能ユニットのいくつかが選択
    されて前記命令を推測で実行し、前記機能ユニットは前
    記選択された命令を待ち行列に入れるためのリザベーシ
    ョンステーションを有し、 前記命令の待ち行列が、前記複数の機能ユニットの前記
    リザベーションステーションをフラッシュすることによ
    って、および前記リオーダバッファアレイをフラッシュ
    することによってフラッシュされる、請求項11に記載
    のパイプラインプロセッサ。
  13. 【請求項13】 複数の機能ユニットをさらに含み、 第1の機能ユニットが算術論理ユニット(ALU)であ
    り、前記ALUで実行される命令が、データを可変のビ
    ット数だけローテートまたはシフトするそれぞれデータ
    ローテート命令およびデータシフト命令を含み、前記可
    変数は順番に関して前の命令の結果に依存し、 第2の機能ユニットが分岐ユニットであり、前記分岐ユ
    ニットで実行される命令が、前記データローテート命令
    またはデータシフト命令の結果を条件とする条件分岐命
    令を含み、 ローテートまたはシフトに関する前記可変数のビットを
    設定する結果がゼロであるとき、再同期化条件が起こ
    る、請求項11に記載のパイプラインプロセッサ。
  14. 【請求項14】 前記機能ユニットが浮動小数点ユニッ
    トであり、前記浮動小数点ユニットで実行される前記命
    令が、浮動小数点例外条件の検出される浮動小数点命令
    を含み、 前記プロセッサが、前記浮動小数点例外条件が無視され
    るかどうかを判断する外部信号に結合される入力ピンを
    含み、 浮動小数点例外条件が検出され、かつ浮動小数点例外条
    件が無視されることを外部信号が特定するとき、再同期
    化条件が起こる、請求項11に記載のパイプラインプロ
    セッサ。
  15. 【請求項15】 前記命令が、複数のサブ動作のシーケ
    ンスとして実行される命令を含み、 後続のサブ動作の実行を無意味にする複数のサブ動作の
    うちの1つの実行中に条件が検出可能であり、 後続のサブ動作の実行が無意味であるとき、再同期化条
    件が起こる、請求項11に記載のパイプラインプロセッ
    サ。
  16. 【請求項16】 前記機能ユニットが浮動小数点ユニッ
    トであり、前記浮動小数点ユニットで実行される命令
    が、サブ動作のシーケンスとして実行される浮動小数点
    命令を含み、前記浮動小数点命令は浮動小数点機能ユニ
    ットによって実行され、 後続のサブ動作の実行を無意味にする浮動小数点サブ動
    作の実行中に条件が検出可能であり、 後続のサブ動作の実行が無意味とされるときに、再同期
    化条件が起こる、請求項11に記載のパイプラインプロ
    セッサ。
  17. 【請求項17】 前記命令が浮動小数点スタック交換命
    令を含み、 スタックオーバーフロー条件およびスタックアンダーフ
    ロー条件を含むスタックエラー条件が、浮動小数点スタ
    ック交換命令の実行中に検出され、 スタックエラー条件が検出されると、再同期化条件が起
    こる、請求項11に記載のパイプラインプロセッサ。
  18. 【請求項18】 前記命令がメモリへのデータストア命
    令を含み、 メモリへのデータストア命令の実行中に命令メモリへの
    ストアが検出され、 命令メモリへのストアが検出されると、再同期化条件が
    起こる、請求項11に記載のパイプラインプロセッサ。
  19. 【請求項19】 前記再同期化コントローラが選択的
    に、第1の場合に、それについて再同期化条件が検出さ
    れる命令に先立つ命令に命令フェッチの順序どおりのシ
    ーケンスを再指定し、第2の場合に、再同期化条件がそ
    れについて検出される命令に命令フェッチの順序どおり
    のシーケンスを再指定する、請求項11に記載のパイプ
    ラインプロセッサ。
  20. 【請求項20】 パイプラインプロセッサを動作させる
    方法であって、 フェッチプログラムカウンタを更新するステップと、 メモリから命令をフェッチするステップとを含み、前記
    命令は前記フェッチプログラムカウンタによって示さ
    れ、さらに複数の命令を複数の機能ユニットのうちの示
    されたものに発行するステップを含み、前記命令はフェ
    ッチの順に発行され、さらに前記発行された命令を前記
    複数の機能ユニットのうちの前記示されたもののリザベ
    ーションステーションに待ち行列に入れるステップと、 リオーダバッファの待ち行列に前記待ち行列に入れられ
    た命令に対応する結果エントリを発行順に割当てるステ
    ップと、 前記機能ユニットが前に待ち行列に入れられた命令の実
    行を終え、かつ前記命令を実行する際に用いられるデー
    タが先に発行された命令の実行から利用可能となってい
    るときに、リザベーションステーションからの前記命令
    を実行するステップと、 前記対応する命令の実行が完了すると、前記割当てられ
    た結果エントリに結果を入れるステップと、 前記リオーダバッファ待ち行列のヘッドにある、入れら
    れた結果を回収するステップと、 前記結果が回収されるときに命令ポインタを更新するス
    テップとを含み、前記命令ポインタは、前記結果エント
    リに対応する命令の前記フェッチプログラムカウンタと
    一致し、さらに前記プロセッサを再同期化させるステッ
    プを含み、これがさらに命令の実行中に再同期化条件を
    検出するステップと、 前記再同期化条件を検出する命令に対応する割当てられ
    た結果エントリにおいて前記再同期化条件を認め、前記
    入れられた結果を回収する際に前記再同期化条件を認め
    るステップと、 前記機能ユニットの前記リザベーションステーションお
    よび前記リオーダバッファをフラッシュするステップ
    と、 前記フェッチプログラムカウンタを前記命令ポインタに
    よってアドレスされる前記命令に再指定するステップと
    を含む、方法。
  21. 【請求項21】 前記命令が、データを可変数ビットだ
    けそれぞれローテートおよびシフトするデータローテー
    ト命令およびデータシフト命令を含み、前記可変数は先
    に発行された命令の結果に依存し、 前記データローテート命令およびデータシフト命令の結
    果を条件とする条件分岐命令を前記命令が含み、 ローテートまたはシフトのための前記可変ビット数を設
    定する結果がゼロであるとき、再同期化条件が起こる、
    請求項20に記載の方法。
  22. 【請求項22】 前記命令が浮動小数点例外条件の検出
    される浮動小数点命令を含み、 前記プロセッサが、前記浮動小数点例外条件が無視され
    るかどうかを決定する外部信号に結合される入力ピンを
    含み、 浮動小数点例外条件が検出され、かつ前記浮動小数点例
    外条件が無視されることを外部信号が特定すると、再同
    期化条件が起こる、請求項20に記載の方法。
  23. 【請求項23】 前記命令が、サブ動作のシーケンスと
    して発行され、実行される命令を含み、 後続のサブ動作の実行を無意味にするサブ動作の実行中
    に条件が検出可能であり、 後続のサブ動作の実行が無意味にされると、再同期化条
    件が起こる、請求項20に記載の方法。
  24. 【請求項24】 前記命令が、サブ動作のシーケンスと
    して発行され、実行される浮動小数点命令を含み、 後続のサブ動作の実行を無意味にする浮動小数点サブ動
    作の実行中に条件が検出可能であり、 後続のサブ動作の実行が無意味にされると、再同期化条
    件が起こる、請求項20に記載の方法。
  25. 【請求項25】 前記命令がスタック交換命令を含み、 スタックオーバーフロー条件およびスタックアンダーフ
    ロー条件を含むスタックエラー条件が、スタック交換命
    令の実行中に検出され、 スタックエラー条件が検出されると、再同期化条件が起
    こる、請求項20に記載の方法。
  26. 【請求項26】 前記命令が浮動小数点スタック交換命
    令を含み、 スタックオーバーフロー条件およびスタックアンダーフ
    ロー条件を含むスタックエラー条件が、浮動小数点スタ
    ック交換命令の実行中に検出され、 スタックエラー条件が検出されると、再同期化条件が起
    こる、請求項20に記載の方法。
  27. 【請求項27】 前記命令がメモリへのデータストア命
    令を含み、 命令メモリへのストアが、メモリへのデータストア命令
    の実行中に検出され、 命令メモリへのストアが検出されると、再同期化条件が
    起こる、請求項20に記載の方法。
  28. 【請求項28】 パイプラインプロセッサであって、 命令キャッシュを含み、前記命令キャッシュは、 キャッシュメモリと、 フェッチプログラムカウンタレジスタと、 前記フェッチプログラムカウンタレジスタおよび前記キ
    ャッシュメモリに結合されるフェッチ論理とを備え、前
    記プロセッサはさらに前記命令キャッシュに結合される
    命令デコーダと、 複数の機能ユニットとを含み、その各々は前記命令デコ
    ーダに結合されて、前記機能ユニットのうち指定された
    ものに発行される命令を受取り、前記機能ユニットの各
    々は、リザベーションステーション命令待ち行列、およ
    び前記リザベーションステーション命令待ち行列に結合
    されて実行のための命令を受取る命令実行回路を有し、
    さらに前記命令デコーダおよび前記機能ユニットに結合
    されるリオーダバッファを含み、前記リオーダバッファ
    は、 前記機能ユニットに結合されて実行結果を受取る結果エ
    ントリの順序どおりの待ち行列と、 結果を回収するために前記結果エントリ待ち行列のヘッ
    ドに結合される回収論理と、 前記回収論理に結合される命令ポインタとを備え、前記
    命令ポインタは回収する結果の前記プログラムカウンタ
    と一致し、 前記プロセッサは再同期化論理をさらに含み、前記再同
    期化論理は、 前記機能ユニットの指定されたものに結合される複数の
    再同期化条件検出器と、 前記リオーダバッファ結果エントリ待ち行列に結合され
    る再同期化インジケータと、 前記リオーダバッファに結合され、前記リオーダバッフ
    ァをフラッシュすることによって前記回収論理および前
    記再同期化インジケータに応答する待ち行列コントロー
    ラと、 前記機能ユニットのリザベーションステーションに結合
    され、前記リザベーションステーションをフラッシュす
    ることによって前記回収論理および前記再同期化インジ
    ケータに応答する待ち行列論理と、 前記命令ポインタを前記フェッチプログラムカウンタに
    結合することによって前記回収論理および前記再同期化
    インジケータに応答するターゲットプログラムカウンタ
    とを備える、パイプラインプロセッサ。
  29. 【請求項29】 第1の機能ユニットが算術論理ユニッ
    ト(ALU)であり、前記ALUで実行される命令が、
    可変数のビットだけデータをそれぞれローテートまたは
    シフトするデータローテート命令およびデータシフト命
    令を含み、前記可変数は、順番に関して前の命令の結果
    に依存し、 第2の機能ユニットが分岐ユニットであり、前記分岐ユ
    ニットで実行される命令が、前記データローテート命令
    またはデータシフト命令の結果を条件とする条件分岐命
    令を含み、 ローテートまたはシフトのために前記可変のビット数を
    セットする結果がゼロのとき、再同期化条件が起こる、
    請求項28に記載のパイプラインプロセッサ。
  30. 【請求項30】 機能ユニットが浮動小数点ユニットで
    あり、前記浮動小数点ユニットで実行される命令が、浮
    動小数点例外条件の検出される浮動小数点命令を含み、 前記プロセッサが、前記浮動小数点例外条件が無視され
    るかどうかを定める外部信号に結合される入力ピンを含
    み、 浮動小数点例外条件が検出され、かつ浮動小数点例外条
    件が無視されることを外部信号が特定すると、再同期化
    条件が起こる、請求項28に記載のパイプラインプロセ
    ッサ。
  31. 【請求項31】 前記命令が、複数のサブ動作のシーケ
    ンスとして実行される命令を含み、 後続のサブ動作の実行を無意味にする前記複数のサブ動
    作のうちの1つの実行中に条件が検出可能であり、 後続のサブ動作の実行が無意味にされると、再同期化条
    件が起こる、請求項28に記載のパイプラインプロセッ
    サ。
  32. 【請求項32】 機能ユニットが浮動小数点ユニットで
    あり、前記浮動小数点ユニットで実行される命令が、サ
    ブ動作のシーケンスとして実行される浮動小数点命令を
    含み、前記浮動小数点命令は浮動小数点機能ユニットに
    よって実行され、 後続のサブ動作の実行を無意味にする浮動小数点サブ動
    作の実行中に条件が検出可能であり、 後続のサブ動作の実行が無意味にされると、再同期化条
    件が起こる、請求項28に記載のパイプラインプロセッ
    サ。
  33. 【請求項33】 前記命令が浮動小数点スタック交換命
    令を含み、 スタックオーバーフロー条件およびスタックアンダーフ
    ロー条件を含むスタックエラー条件が、浮動小数点スタ
    ック交換命令の実行中に検出され、 スタックエラー条件が検出されると再同期化条件が起こ
    る、請求項28に記載のパイプラインプロセッサ。
  34. 【請求項34】 前記命令がメモリへのデータストア命
    令を含み、 命令メモリへのストアが、メモリへのデータストア命令
    の実行中に検出され、 命令メモリへのストアが検出されると、再同期化条件が
    起こる、請求項28に記載のパイプラインプロセッサ。
  35. 【請求項35】 パイプラインプロセッサであって、 命令キャッシュを含み、前記命令キャッシュはキャッシ
    ュメモリと、 フェッチプログラムカウンタレジスタと、 前記フェッチプログラムカウンタレジスタおよび前記キ
    ャッシュメモリに結合されるフェッチ論理とを備え、前
    記フェッチ論理は前記カウンタを更新し、前記フェッチ
    プログラムカウンタによって示された命令をフェッチ
    し、 前記パイプラインプロセッサはさらに、 前記命令キャッシュに結合されて複数の命令をフェッチ
    の順に同時に発行するための命令デコーダと、 複数の機能ユニットとを含み、その各々は前記命令デコ
    ーダに結合されて発行された命令を受取り、前記命令は
    前記機能ユニットのうちの示されたものに発行され、前
    記機能ユニットの各々は前記命令を待ち行列に入れるリ
    ザベーションステーションと、 前記リザベーションステーションに結合されて命令を前
    記リザベーションステーション待ち行列から受取り、前
    に待ち行列に入れられた命令の実行が完了しかつ前記命
    令を実行するためのデータが先に発行された命令の実行
    から利用可能になると、命令を実行する命令実行回路と
    を有し、 前記プロセッサはさらに前記命令デコーダおよび前記機
    能ユニットに結合されるリオーダバッファを含み、前記
    リオーダバッファは結果エントリの待ち行列を備え、前
    記エントリは発行順に割当てられ、前記待ち行列に入れ
    られた命令に対応し、対応する命令の実行が完了する
    と、前記エントリは前記機能ユニットから結果を受取
    り、前記リオーダバッファはさらに前記待ち行列に結合
    されて前記待ち行列のヘッドにある結果エントリを回収
    する回収論理と、 前記回収論理に結合される命令ポインタとを備え、前記
    命令ポインタは、前記結果エントリが回収されると前記
    回収論理によって更新され、前記命令ポインタは、前記
    結果エントリに対応する命令のフェッチプログラムカウ
    ンタと一致し、 前記プロセッサはさらに再同期化論理を含み、前記再同
    期化論理は、 複数の再同期化条件検出器を含み、その各々は示された
    機能ユニットに結合され、前記再同期化条件は、実行す
    る命令に関連して検出され、前記再同期化論理はさらに
    前記リオーダバッファ結果エントリ待ち行列に結合され
    る再同期化インジケータを備え、対応する命令の実行が
    完了し、かつ再同期化条件が検出されると、再同期化が
    示され、 前記再同期化論理はさらに、 前記リオーダバッファに結合されて、前記リオーダバッ
    ファをフラッシュするための再同期化インジケータを有
    する前記リオーダバッファエントリの回収に応答する待
    ち行列コントローラと、 前記機能ユニットリザベーションステーションに結合さ
    れ、前記リオーダバッファをフラッシュするための再同
    期化インジケータを有する前記リオーダバッファエント
    リの回収に応答する待ち行列論理と、 前記命令キャッシュおよびリオーダバッファを結合し、
    前記命令ポインタによってアドレスされた命令に前記フ
    ェッチプログラムカウンタを再指定するターゲットプロ
    グラムカウンタとを備える、パイプラインプロセッサ。
  36. 【請求項36】 第1の機能ユニットが算術論理ユニッ
    ト(ALU)であり、前記ALUで実行される前記命令
    が、可変数ビットだけデータをそれぞれローテートまた
    はシフトするデータローテート命令およびデータシフト
    命令を含み、前記可変数は順番に関して前の命令の結果
    に依存し、 第2の機能ユニットが分岐ユニットであり、前記分岐ユ
    ニットで実行される命令が、前記データローテート命令
    またはデータシフト命令の結果を条件とする条件分岐命
    令を含み、 ローテートまたはシフトに関する前記可変ビット数を設
    定する結果がゼロのとき、再同期化条件が起こる、請求
    項35に記載のパイプラインプロセッサ。
  37. 【請求項37】 機能ユニットが浮動小数点ユニットで
    あり、前記浮動小数点ユニットで実行される命令が、浮
    動小数点例外条件がそれについて検出される浮動小数点
    命令を含み、 前記プロセッサが、前記浮動小数点例外条件が無視され
    るかどうかを決定する外部信号に結合される入力ピンを
    含み、 浮動小数点例外条件が検出され、かつ浮動小数点例外条
    件が無視されることを外部信号が特定すると、再同期化
    条件が起こる、請求項35に記載のプロセッサ。
  38. 【請求項38】 前記命令が、複数のサブ動作のシーケ
    ンスとして実行される命令を含み、 後続のサブ動作の実行を無意味にする複数のサブ動作の
    うちの1つの実行中に条件が検出可能であり、 後続のサブ動作の実行が無意味にされると、再同期化条
    件が起こる、請求項35に記載のパイプラインプロセッ
    サ。
  39. 【請求項39】 機能ユニットが浮動小数点ユニットで
    あり、前記浮動小数点ユニットで実行される命令が、サ
    ブ動作のシーケンスとして実行される浮動小数点命令を
    含み、前記浮動小数点命令は浮動小数点機能ユニットに
    よって実行され、 後続のサブ動作の実行を無意味にする浮動小数点サブ動
    作の実行中に条件が検出可能であり、 後続のサブ動作の実行が無意味にされると、再同期化条
    件が起こる、請求項35に記載のパイプラインプロセッ
    サ。
  40. 【請求項40】 前記命令が浮動小数点スタック交換命
    令を含み、 スタックオーバーフロー条件およびスタックアンダーフ
    ロー条件を含むスタックエラー条件が、浮動小数点スタ
    ック交換命令の実行中に検出され、 スタックエラー条件が検出されると、再同期化条件が起
    こる、請求項35に記載のパイプラインプロセッサ。
  41. 【請求項41】 前記命令がメモリへのデータストア命
    令を含み、 命令メモリへのストアが、メモリへのデータストア命令
    の実行中に検出され、 命令メモリへのストアが検出されると、再同期化条件が
    起こる、請求項35に記載のプロセッサ。
JP13401095A 1994-06-01 1995-05-31 パイプラインプロセッサおよびその動作方法 Expired - Fee Related JP3751049B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US252308 1988-10-03
US08/252,308 US5649225A (en) 1994-06-01 1994-06-01 Resynchronization of a superscalar processor

Publications (2)

Publication Number Publication Date
JPH07325716A true JPH07325716A (ja) 1995-12-12
JP3751049B2 JP3751049B2 (ja) 2006-03-01

Family

ID=22955477

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13401095A Expired - Fee Related JP3751049B2 (ja) 1994-06-01 1995-05-31 パイプラインプロセッサおよびその動作方法

Country Status (5)

Country Link
US (2) US5649225A (ja)
EP (1) EP0686914B1 (ja)
JP (1) JP3751049B2 (ja)
AT (1) ATE195595T1 (ja)
DE (1) DE69518362T2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100951743B1 (ko) * 2006-01-31 2010-04-08 콸콤 인코포레이티드 단방향 로테이터를 위한 레지스터-기반 시프트
JP2016534430A (ja) * 2013-10-25 2016-11-04 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 即値ハンドリング及びフラグハンドリングのためのプロセッサ及び方法
JP2020077334A (ja) * 2018-11-09 2020-05-21 富士通株式会社 演算処理装置および演算処理装置の制御方法

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3494489B2 (ja) * 1994-11-30 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
WO1996017291A1 (en) * 1994-12-02 1996-06-06 Intel Corporation Microprocessor with packing operation of composite operands
US5875324A (en) * 1995-06-07 1999-02-23 Advanced Micro Devices, Inc. Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock
US5968169A (en) * 1995-06-07 1999-10-19 Advanced Micro Devices, Inc. Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
US5745724A (en) * 1996-01-26 1998-04-28 Advanced Micro Devices, Inc. Scan chain for rapidly identifying first or second objects of selected types in a sequential list
US5881278A (en) * 1995-10-30 1999-03-09 Advanced Micro Devices, Inc. Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch
US5835744A (en) * 1995-11-20 1998-11-10 Advanced Micro Devices, Inc. Microprocessor configured to swap operands in order to minimize dependency checking logic
US5864707A (en) * 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
US6792523B1 (en) 1995-12-19 2004-09-14 Intel Corporation Processor with instructions that operate on different data types stored in the same single logical register file
US5940859A (en) 1995-12-19 1999-08-17 Intel Corporation Emptying packed data state during execution of packed data instructions
US5701508A (en) * 1995-12-19 1997-12-23 Intel Corporation Executing different instructions that cause different data type operations to be performed on single logical register file
US5857096A (en) * 1995-12-19 1999-01-05 Intel Corporation Microarchitecture for implementing an instruction to clear the tags of a stack reference register file
US5838942A (en) * 1996-03-01 1998-11-17 Hewlett-Packard Company Panic trap system and method
GB2348719B (en) * 1996-03-01 2000-11-22 Hewlett Packard Co Panic trap system and method
US5892969A (en) * 1996-03-15 1999-04-06 Adaptec, Inc. Method for concurrently executing a configured string of concurrent I/O command blocks within a chain to perform a raid 5 I/O operation
US5812877A (en) * 1996-03-15 1998-09-22 Adaptec, Inc. I/O command block chain structure in a memory
US5758187A (en) * 1996-03-15 1998-05-26 Adaptec, Inc. Method for enhancing performance of a RAID 1 read operation using a pair of I/O command blocks in a chain structure
US5923896A (en) * 1996-03-15 1999-07-13 Adaptec, Inc. Method for sequencing execution of I/O command blocks in a chain structure by setting hold-off flags and configuring a counter in each I/O command block
US5850567A (en) * 1996-03-15 1998-12-15 Adaptec, Inc. Method for specifying concurrent execution of a string of I/O command blocks in a chain structure
US5768621A (en) * 1996-03-15 1998-06-16 Adaptec, Inc. Chain manager for use in executing a chain of I/O command blocks
US5790822A (en) * 1996-03-21 1998-08-04 Intel Corporation Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor
US5745780A (en) * 1996-03-27 1998-04-28 International Business Machines Corporation Method and apparatus for source lookup within a central processing unit
US5841999A (en) * 1996-04-17 1998-11-24 International Business Machines Corporation Information handling system having a register remap structure using a content addressable table
US5944816A (en) * 1996-05-17 1999-08-31 Advanced Micro Devices, Inc. Microprocessor configured to execute multiple threads including interrupt service routines
US5826070A (en) * 1996-08-30 1998-10-20 International Business Machines Corporation Apparatus and method for maintaining status flags and condition codes using a renaming technique in an out of order floating point execution unit
US5920710A (en) * 1996-11-18 1999-07-06 Advanced Micro Devices, Inc. Apparatus and method for modifying status bits in a reorder buffer with a large speculative state
US5870579A (en) * 1996-11-18 1999-02-09 Advanced Micro Devices, Inc. Reorder buffer including a circuit for selecting a designated mask corresponding to an instruction that results in an exception
US6175906B1 (en) 1996-12-06 2001-01-16 Advanced Micro Devices, Inc. Mechanism for fast revalidation of virtual tags
US5768555A (en) * 1997-02-20 1998-06-16 Advanced Micro Devices, Inc. Reorder buffer employing last in buffer and last in line bits
US5887185A (en) * 1997-03-19 1999-03-23 Advanced Micro Devices, Inc. Interface for coupling a floating point unit to a reorder buffer
US6085305A (en) * 1997-06-25 2000-07-04 Sun Microsystems, Inc. Apparatus for precise architectural update in an out-of-order processor
US5963977A (en) * 1997-10-09 1999-10-05 Quantum Corporation Buffer management and system coordination method
US6157986A (en) * 1997-12-16 2000-12-05 Advanced Micro Devices, Inc. Fast linear tag validation unit for use in microprocessor
US6195722B1 (en) * 1998-01-26 2001-02-27 Intel Corporation Method and apparatus for deferring transactions on a host bus having a third party agent
US6014743A (en) * 1998-02-05 2000-01-11 Intergrated Device Technology, Inc. Apparatus and method for recording a floating point error pointer in zero cycles
US6260124B1 (en) * 1998-08-13 2001-07-10 International Business Machines Corporation System and method for dynamically resynchronizing backup data
US6154832A (en) * 1998-12-04 2000-11-28 Advanced Micro Devices, Inc. Processor employing multiple register sets to eliminate interrupts
SE521071C2 (sv) * 1999-01-11 2003-09-30 Ericsson Telefon Ab L M Resultatfältskö
US6393536B1 (en) 1999-05-18 2002-05-21 Advanced Micro Devices, Inc. Load/store unit employing last-in-buffer indication for rapid load-hit-store
US6298436B1 (en) * 1999-06-08 2001-10-02 International Business Machines Corporation Method and system for performing atomic memory accesses in a processor system
JP2000353092A (ja) * 1999-06-09 2000-12-19 Nec Corp 情報処理装置及びそのレジスタファイル切替方法
US6385719B1 (en) * 1999-06-30 2002-05-07 International Business Machines Corporation Method and apparatus for synchronizing parallel pipelines in a superscalar microprocessor
US6668315B1 (en) * 1999-11-26 2003-12-23 Hewlett-Packard Development Company, L.P. Methods and apparatus for exchanging the contents of registers
US6694425B1 (en) * 2000-05-04 2004-02-17 International Business Machines Corporation Selective flush of shared and other pipeline stages in a multithread processor
US7360028B1 (en) * 2000-05-05 2008-04-15 Sun Microsystems, Inc. Explicit store-to-instruction-space instruction for self-modifying code and ensuring memory coherence between instruction cache and shared memory using a no-snoop protocol
US6738795B1 (en) * 2000-05-30 2004-05-18 Hewlett-Packard Development Company, L.P. Self-timed transmission system and method for processing multiple data sets
SE0003446L (sv) 2000-09-27 2002-03-28 Ericsson Telefon Ab L M En pipelinemikroprocessor och ett förfarnade relaterande därtill
US6564298B2 (en) * 2000-12-22 2003-05-13 Intel Corporation Front end system having multiple decoding modes
US6654861B2 (en) * 2001-07-18 2003-11-25 Smart Matic Corp. Method to manage multiple communication queues in an 8-bit microcontroller
US7634640B2 (en) * 2002-08-30 2009-12-15 Infineon Technologies Ag Data processing apparatus having program counter sensor
US7191320B2 (en) * 2003-02-11 2007-03-13 Via Technologies, Inc. Apparatus and method for performing a detached load operation in a pipeline microprocessor
US7281120B2 (en) * 2004-03-26 2007-10-09 International Business Machines Corporation Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor
US7370181B2 (en) * 2004-06-22 2008-05-06 Intel Corporation Single stepping a virtual machine guest using a reorder buffer
US20060168291A1 (en) * 2005-01-05 2006-07-27 Van Zoest Alexander Interactive multichannel data distribution system
US7788420B2 (en) * 2005-09-22 2010-08-31 Lsi Corporation Address buffer mode switching for varying request sizes
US7490224B2 (en) * 2005-10-07 2009-02-10 International Business Machines Corporation Time-of-life counter design for handling instruction flushes from a queue
US20070130448A1 (en) * 2005-12-01 2007-06-07 Intel Corporation Stack tracker
US20070204142A1 (en) * 2006-02-27 2007-08-30 Dieffenderfer James N Method and apparatus for repairing a link stack
US7603527B2 (en) * 2006-09-29 2009-10-13 Intel Corporation Resolving false dependencies of speculative load instructions
US20080244244A1 (en) * 2007-03-30 2008-10-02 Advanced Micro Devices, Inc. Parallel instruction processing and operand integrity verification
US8495699B2 (en) 2008-12-23 2013-07-23 At&T Intellectual Property I, L.P. Distributed content analysis network
US20100223673A1 (en) * 2009-02-27 2010-09-02 At&T Intellectual Property I, L.P. Providing multimedia content with access restrictions
US20100223660A1 (en) * 2009-02-27 2010-09-02 At&T Intellectual Property I, L.P. Providing multimedia content with time limit restrictions
US8966228B2 (en) * 2009-03-20 2015-02-24 Arm Limited Instruction fetching following changes in program flow
US8904421B2 (en) * 2009-06-30 2014-12-02 At&T Intellectual Property I, L.P. Shared multimedia experience including user input
US8549267B2 (en) * 2009-12-22 2013-10-01 Intel Corporation Methods and apparatus to manage partial-commit checkpoints with fixup support
US9880848B2 (en) * 2010-06-11 2018-01-30 Advanced Micro Devices, Inc. Processor support for hardware transactional memory
US9977596B2 (en) 2012-12-27 2018-05-22 Dropbox, Inc. Predictive models of file access patterns by application and file type
US9336003B2 (en) * 2013-01-25 2016-05-10 Apple Inc. Multi-level dispatch for a superscalar processor
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
US10390010B1 (en) * 2013-06-12 2019-08-20 Ovics Video coding reorder buffer systems and methods
JP6732799B2 (ja) * 2015-12-25 2020-07-29 パナソニックセミコンダクターソリューションズ株式会社 不正メッセージ検知装置、不正メッセージ検知装置を備える電子制御装置、不正メッセージ検知方法、及び不正メッセージ検知プログラム
US10095637B2 (en) * 2016-09-15 2018-10-09 Advanced Micro Devices, Inc. Speculative retirement of post-lock instructions
US10353707B2 (en) * 2017-07-12 2019-07-16 International Business Machines Corporation Efficient pointer load and format
US11068612B2 (en) 2018-08-01 2021-07-20 International Business Machines Corporation Microarchitectural techniques to mitigate cache-based data security vulnerabilities
US11561982B2 (en) * 2020-02-19 2023-01-24 Sap Se Intelligent and automatic exception handling
CN117908968A (zh) * 2022-10-11 2024-04-19 深圳市中兴微电子技术有限公司 基于压缩型发射队列的指令发送方法、装置、设备及介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4928223A (en) * 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
JPH0658631B2 (ja) * 1983-12-19 1994-08-03 株式会社日立製作所 デ−タ処理装置
DE3751503T2 (de) * 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
US4926322A (en) * 1987-08-03 1990-05-15 Compag Computer Corporation Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management
US5056006A (en) * 1988-09-12 1991-10-08 General Electric Company Parallel processor with single program storage and sequencer and simultaneous instruction processing
US5067069A (en) * 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5155816A (en) * 1989-02-10 1992-10-13 Intel Corporation Pipelined apparatus and method for controlled loading of floating point data in a microprocessor
US5155820A (en) * 1989-02-21 1992-10-13 Gibson Glenn A Instruction format with designations for operand lengths of byte, half word, word, or double word encoded in address bits
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5075844A (en) * 1989-05-24 1991-12-24 Tandem Computers Incorporated Paired instruction processor precise exception handling mechanism
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
US5251306A (en) * 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5237700A (en) * 1990-03-21 1993-08-17 Advanced Micro Devices, Inc. Exception handling processor for handling first and second level exceptions with reduced exception latency
JPH0820949B2 (ja) * 1991-11-26 1996-03-04 松下電器産業株式会社 情報処理装置
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
US5367703A (en) * 1993-01-08 1994-11-22 International Business Machines Corporation Method and system for enhanced branch history prediction accuracy in a superscalar processor system
IE80854B1 (en) * 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution
US5434987A (en) * 1993-09-21 1995-07-18 Intel Corporation Method and apparatus for preventing incorrect fetching of an instruction of a self-modifying code sequence with dependency on a bufered store
US5574928A (en) * 1993-10-29 1996-11-12 Advanced Micro Devices, Inc. Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100951743B1 (ko) * 2006-01-31 2010-04-08 콸콤 인코포레이티드 단방향 로테이터를 위한 레지스터-기반 시프트
US8335810B2 (en) 2006-01-31 2012-12-18 Qualcomm Incorporated Register-based shifts for a unidirectional rotator
JP2016534430A (ja) * 2013-10-25 2016-11-04 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 即値ハンドリング及びフラグハンドリングのためのプロセッサ及び方法
JP2020077334A (ja) * 2018-11-09 2020-05-21 富士通株式会社 演算処理装置および演算処理装置の制御方法

Also Published As

Publication number Publication date
ATE195595T1 (de) 2000-09-15
US5649225A (en) 1997-07-15
EP0686914A3 (en) 1996-12-27
EP0686914A2 (en) 1995-12-13
EP0686914B1 (en) 2000-08-16
DE69518362D1 (de) 2000-09-21
US5764938A (en) 1998-06-09
DE69518362T2 (de) 2001-04-12
JP3751049B2 (ja) 2006-03-01

Similar Documents

Publication Publication Date Title
JP3751049B2 (ja) パイプラインプロセッサおよびその動作方法
US5832297A (en) Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
US5968169A (en) Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
US5768610A (en) Lookahead register value generator and a superscalar microprocessor employing same
US5848433A (en) Way prediction unit and a method for operating the same
US5887152A (en) Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
EP3301566B1 (en) Pipelined processor with multi-issue microcode unit having local branch decoder
US6604190B1 (en) Data address prediction structure and a method for operating the same
US5764946A (en) Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
JP6143306B2 (ja) アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避
JP3977016B2 (ja) 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ
US6393549B1 (en) Instruction alignment unit for routing variable byte-length instructions
US5805853A (en) Superscalar microprocessor including flag operand renaming and forwarding apparatus
US6269436B1 (en) Superscalar microprocessor configured to predict return addresses from a return stack storage
US5651125A (en) High performance superscalar microprocessor including a common reorder buffer and common register file for both integer and floating point operations
US6009511A (en) Apparatus and method for tagging floating point operands and results for rapid detection of special floating point numbers
US5931943A (en) Floating point NaN comparison
US6157994A (en) Microprocessor employing and method of using a control bit vector storage for instruction execution
US5828873A (en) Assembly queue for a floating point unit
KR100698493B1 (ko) 좁은 피연산자들에서 계산을 수행하는 방법 및 장치
JPH07334362A (ja) 複数の動作を同時に行なうためのプロセッサ、その中のスタック、およびスタック制御方法
US5822558A (en) Method and apparatus for predecoding variable byte-length instructions within a superscalar microprocessor
US5819059A (en) Predecode unit adapted for variable byte-length instruction set processors and method of operating the same
EP0649084A1 (en) Microprocessor branch processing
US5832249A (en) High performance superscalar alignment unit

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051101

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051206

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091216

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees