JPH07182160A - スーパースカラマイクロプロセッサ - Google Patents

スーパースカラマイクロプロセッサ

Info

Publication number
JPH07182160A
JPH07182160A JP6263317A JP26331794A JPH07182160A JP H07182160 A JPH07182160 A JP H07182160A JP 6263317 A JP6263317 A JP 6263317A JP 26331794 A JP26331794 A JP 26331794A JP H07182160 A JPH07182160 A JP H07182160A
Authority
JP
Japan
Prior art keywords
microprocessor
instruction
bus
functional unit
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
JP6263317A
Other languages
English (en)
Other versions
JP3670039B2 (ja
Inventor
David B Witt
デイビッド・ビィ・ウィット
William M Johnson
ウィリアム・エム・ジョンソン
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 JPH07182160A publication Critical patent/JPH07182160A/ja
Application granted granted Critical
Publication of JP3670039B2 publication Critical patent/JP3670039B2/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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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
    • 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/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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/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 Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【目的】 高性能のスーパースカラマイクロプロセッサ
を提供する。 【構成】 上記マイクロプロセッサ200は、高性能主
データ処理バスを共有する整数機能ユニットと浮動小数
点機能ユニットとを含む。整数ユニットと浮動小数点ユ
ニットは、共通リオーダバッファ、レジスタファイル、
分岐予測ユニットおよびロード/ストアユニットも共有
し、これらはすべて同じ主データ処理バス上にある。命
令およびデータキャッシュが主メモリに、この間の通信
を扱う内部データアドレスバスを介して結合される。命
令デコーダが命令キャッシュに結合され、1マイクロプ
ロセッササイクルにつき複数の命令をデコードすること
ができる。命令は推論順にデコーダから発行され、投入
および完了は順序通りでない。命令はリオーダバッファ
からレジスタファイルに順序通りに格納される。機能ユ
ニットは複数のデータ幅を示すオペランドを収容する。

Description

【発明の詳細な説明】
【0001】
【発明の背景】この発明は一般にマイクロプロセッサに
関し、より特定的には高性能スーパースカラマイクロプ
ロセッサに関する。
【0002】他の多くの近代技術分野と同様に、マイク
ロプロセッサの設計も、技術者および科学者が常に速
度、効率および性能を高めようと努める技術である。一
般的に言えば、マイクロプロセッサは2つのクラス、す
なわちスカラおよびベクトルプロセッサに分けることが
できる。最も初期のスカラプロセッサは、1マシンサイ
クルにつき最大で1の命令を処理する。いわゆる「スー
パースカラ」プロセッサで、1マシンサイクルにつき処
理できる命令は、1を上回る。スカラプロセッサと対照
的に、ベクトルプロセッサは各マシンサイクル中に比較
的大きな値のアレイを処理できる。
【0003】ベクトルプロセッサは処理効率を追求する
のにデータ並列性に頼り、一方スーパースカラプロセッ
サは動作の効率を高めるのに命令並列性に頼る。命令並
列性は、命令を並列に処理することを可能にするこのよ
うな命令シーケンスの固有の特性と考えることができ
る。対照的に、データ並列性はその要素を並列に処理す
ることを可能にするデータの流れの固有の特性と見るこ
とができる。命令並列性は、命令の特定のシーケンスが
示す従属性の数に関連する。従属性とは、ある特定の命
令が別の命令の結果に依存する程度と定義される。スカ
ラプロセッサでは、ある命令が別の命令に対する従属性
を示すと、一般に、その命令が実行のために機能ユニッ
トに渡され得る前にその従属性を解決しなくてはならな
い。この理由のため、従来のスカラプロセッサは、プロ
セッサがこのような従属性の未処理の解決を待つ間の望
ましくない時間遅延がある。
【0004】ここ数年、プロセッサおよびマイクロプロ
セッサによる命令の実行を高速化するためにいくつかの
アプローチがとられてきた。現在でもマイクロプロセッ
サで広く用いられているアプローチの1つは、パイプラ
イン化である。パイプライン処理では、1)命令のフェ
ッチ、2)命令のデコードおよびオペランドの収集、な
らびに3)命令の実行および結果のライトバックの3つ
のマイクロプロセッサの動作が処理を速くするために重
ねられる、組立ラインのアプローチがとられる。言い換
えれば、それぞれのマシンサイクルにおいて命令1がフ
ェッチされ、命令1がデコードされる。命令1がデコー
ドされ、そのオペランドが集められている間、命令2が
フェッチされる。命令1が実行され、その結果が書込ま
れる間、命令2はデコードされ、そのオペランドが集め
られ、命令3がフェッチされる。実用において、組立ラ
インのアプローチは、上述したよりも多くの組立ライン
ステーションに分けられることがある。パイプライン技
術のより詳細な議論は、ディー・ダブリュー・アンダー
ソン(D. W. Anderson)らによる、1967年1月、I
BMジャーナル第11巻の8−24頁、「IBMシステ
ム/360モデル91:マシンフィロソフィ」(“The
IBM System/360 Model 91:Machine Philosophy”)に記
載される。
【0005】以下の定義は、本明細書中、明確を期する
ために述べるものである。「発行」とは、命令を命令デ
コーダから機能ユニットに送る動作のことである。「投
入」とは、命令を機能ユニット内での実行の状態に置く
動作である。「完了」とは、命令が実行を終えて、その
結果が利用可能であるときに達成されるものである。命
令の結果がレジスタファイルに書込まれるとき、命令は
「用尽」されると言う。これはまた、「ライトバック」
とも称する。
【0006】ウィリアム・ジョンソン(William Johnso
n)による最近の著書「スーパースカラマイクロプロセッ
サ設計」(“Superscalar Microprocessor Design", 1
991年、プレンティス・ホール社(Prentice-Hall, I
nc.))では、実用的なスーパースカラマイクロプロセッ
サの設計に関していくつかの一般的な考察が述べられて
いる。図1は、このジョンソンの著書で説明されている
スーパースカラマイクロプロセッサの実現例を示すマイ
クロプロセッサ10のブロック図である。マイクロプロ
セッサ10は、整数演算を処理するための整数ユニット
15と、浮動小数点演算を処理するための浮動小数点ユ
ニット20とを含む。整数ユニット15および浮動小数
点ユニットの各々は、それぞれ別個で専用の命令デコー
ダと、レジスタファイルと、リオーダバッファと、ロー
ドおよびストアユニットとを含む。より特定的には、整
数ユニット15は、命令デコーダ25と、レジスタファ
イル30と、リオーダバッファ35と、ロードおよびス
トアユニット(60および65)とを含み、一方浮動小
数点ユニット20は、固有の命令デコーダ40と、レジ
スタファイル45と、リオーダバッファ50と、ロード
およびストアユニット(75および80)とを含み、図
1に示されるとおりである。リオーダバッファはマイク
ロプロセッサの推論状態を含み、一方レジスタファイル
はマイクロプロセッサのアーキテクチャの状態を含む。
【0007】マイクロプロセッサ10はメインメモリ5
5に結合され、これは2つの部分、すなわち命令をスト
アするための命令メモリ55Aとデータをストアするた
めのデータメモリ55Bとを含むものとして考えること
ができる。命令メモリ55Aは、整数ユニット15と浮
動小数点ユニット20との両方に結合される。同様に、
データメモリ55Bも、整数ユニット15および浮動小
数点ユニット20の両方に結合される。より詳細には、
命令メモリ55Aはデコーダ25およびデコーダ40に
命令キャッシュ58を介して結合される。データメモリ
55Bは、データキャッシュ70を介して整数ユニット
15のロード機能ユニット60とストア機能ユニット6
5とに結合される。データメモリ55Bはまた、データ
キャッシュ70を介して浮動小数点ユニット20の浮動
小数点ロード機能ユニット75と浮動小数点ストア機能
ユニット80とに結合される。ロードユニット60は、
データメモリ55Bから選択されたデータを整数ユニッ
ト15へとロードする従来のマイクロプロセッサの機能
を実行し、一方ストアユニット70は、整数ユニット1
5からのデータをデータメモリ55Bにストアする従来
のマイクロプロセッサの機能を実行する。
【0008】コンピュータプログラムは、マイクロプロ
セッサ10によって実行されるべき命令のシーケンスを
含む。コンピュータプログラムは、典型的には、ハード
ディスク、フロッピィディスクまたはコンピュータシス
テム内に位置される他の不揮発性記憶媒体にストアされ
る。プログラムが実行されるとき、プログラムは記憶媒
体からメインメモリ55にロードされる。プログラムの
命令および関連のデータが一旦メインメモリ55内に入
れば、個々の命令を実行のために準備し、最終的にはマ
イクロプロセッサ10によって実行することができる。
【0009】メインメモリ55内にストアされた後、命
令は、命令キャッシュ58を介して命令デコーダ25へ
と渡される。命令デコーダ25は各命令を調べ、取るべ
き適切な動作を決定する。たとえば、デコーダ25は、
特定の命令が、PUCH、POP、LOAD、AND、
OR、EX OR、ADD、SUB、NOP、JUM
P、条件付JUMP(BRANCH)または他のタイプ
の命令であるかを決定する。デコーダ58が決定した特
定のタイプの命令が存在するかに依存して、命令は適切
な機能ユニットに発行される。ジョンソンの著書で提案
されているスーパースカラアーキテクチャでは、デコー
ダ25は1マシンサイクルにつき4つの命令をデコード
することのできるマルチ命令デコーダである。したがっ
て、デコーダ58は4命令幅のバンド幅を示すと言え
る。
【0010】図1に示されるように、OP CODEバ
ス85は、デコーダ25と機能ユニットの各々、すなわ
ち分岐ユニット90、算術論理装置95および100、
シフタユニット105、ロードユニット60およびスト
アユニット65との間に結合される。この態様で、各命
令のためのopコードは適切な機能ユニットに与えられ
る。
【0011】ここでしばらく直接的な説明からは離れる
が、命令は、典型的には以下のフォーマットで、すなわ
ちopコード、オペランドA、オペランドB、行先レジ
スタという複数のフィールドを含むことが認められる。
たとえば、サンプル命令ADD A、B、Cとは、レジ
スタAの内容をレジスタBの内容に加算し、その結果を
行先レジスタCに置くことを意味するであろう。各命令
のopコード部分の処理は、既に上述したとおりであ
る。ここで各命令のオペランドの処理を説明する。
【0012】特定の命令のためのopコードが適切な機
能ユニットに送られなくてはならないだけでなく、その
命令のための指定されたオペランドが検索されて、機能
ユニットに送られなくてはならない。特定のオペランド
の値がまだ計算されていなければ、機能ユニットが命令
を実行できる前に、その値をまず計算して、機能ユニッ
トに与えられなくてはならない。たとえば、現在の命令
が先行の命令に従属していれば、現在の命令が実行され
る前に先行の命令の結果を決定しなくてはならない。こ
の状況を従属性と称する。
【0013】特定の命令を機能ユニットが実行するのに
必要とされるオペランドは、レジスタファイル30また
はリオーダバッファ35のいずれかによってオペランド
バス110に与えられる。オペランドバス110は、機
能ユニットの各々に結合される。したがって、オペラン
ドバス110はオペランドを適切な機能ユニットに送
る。実用において、オペランドバス110はオペランド
AおよびオペランドBのための別個のバスを含む。
【0014】機能ユニットにopコードならびにオペラ
ンドAおよびオペランドBが与えられれば、機能ユニッ
トは命令を実行し、その結果を、すべての機能ユニット
の出力とリオーダバッファ35とに(および、後述のよ
うに各機能ユニットの入力にあるそれぞれの待合わせス
テーションに)結合される結果バス115に置く。
【0015】各機能ユニットの入力には、その命令のた
めのオペランドが機能ユニットに対してまだ利用可能で
ないという意味でまだ完全でない命令からのopコード
をストアするための「待合わせステーション」が設けら
れる。待合わせステーションは、後に待合わせステーシ
ョンに到達する、抜けているオペランドのための場所を
確保するオペランドタグとともに命令のopコードをス
トアする。この技術は、未処理の命令が待合わせステー
ションでそのオペランドとともに集められている間、マ
イクロプロセッサが他の命令を実行し続けることを可能
にすることによって性能を高める。図1に示されるよう
に、分岐ユニット90には待合わせステーション90R
が設けられ、ALU95および100には待合わせステ
ーション95Rおよび100Rがそれぞれ設けられ、シ
フタユニット105には待合わせステーション105R
が設けられ、ロードユニット60には待合わせステーシ
ョン60Rが設けられ、ストアユニット65には待合わ
せステーション65Rが設けられる。このアプローチで
は、待合わせステーションが、より初期のマイクロプロ
セッサにおいて機能ユニットの入力で典型的には使用さ
れていた入力ラッチの代わりに使用される。待合わせス
テーションに関してのよく知られた参考文献は、196
7年1月、IBMジャーナル、第11号、25−33
頁、アール・エム・トマシュロ(R. M. Tomasulo)の
「複数の算術装置を用いる効率的なアルゴリズム」
(“An Efficient Algorithm For Expoiting Multiple
Arithmetic Units”)である。
【0016】先に述べたように、スカラマイクロプロセ
ッサでの効果的なスループットを1マシンサイクルにつ
き1つの命令という限界まで増大するのにパイプライン
を用いることができる。図1に示されるスーパースカラ
マイクロプロセッサでは、1マシンサイクルにつき複数
の命令の処理を達成するのに複数のパイプラインが用い
られる。この技術を、「スーパーパイプライン化」と称
する。
【0017】「レジスタ再指定」と称する別の技術もま
た、スーパースカラマイクロプロセッサのスループット
を高めるために用いることができる。この技術は、命令
ストリームにおける2つの命令のどちらも同じレジス
タ、たとえば仮説レジスタ1を使用することを要求する
場合に有用である。第2の命令が第1の命令に従属して
いなければ、レジスタ1Aと呼ぶ第2のレジスタが、レ
ジスタ1の代わりに第2の命令によって使用されるよう
に割当てられる。この態様で、レジスタ1を用いて第1
の命令が終了するのを待つことなく、第2の命令を実行
することができ、結果を得ることができる。図1に示さ
れるスーパースカラマイクロプロセッサ10は、命令処
理能力を高めるのにレジスタ再指定のアプローチを用い
る。マイクロプロセッサ10においてレジスタ再指定を
実現する態様を以下により詳細に説明する。
【0018】上述のことから、レジスタ再指定がレジス
タに対するストアの競合をなくすことが認められる。レ
ジスタ再指定を実現するために、整数ユニット15およ
び浮動小数点ユニット20は、それぞれのリオーダバッ
ファ35および50と関連付けられる。簡略にするため
に、整数ユニット15内のリオーダバッファ35を介し
てのレジスタ再指定のみを議論するが、同じ議論が浮動
小数点ユニット20内の同様の回路にも当てはまる。
【0019】リオーダバッファ35は、命令結果にダイ
ナミックに割当てられるいくつかのストア位置を含む。
より特定的には、デコーダ25によって命令がデコード
されると、その命令の結果値にリオーダバッファ35内
の位置が割当てられ、その行先レジスタ番号がこの位置
と関連付けられる。これが命令の行先レジスタ番号をリ
オーダバッファ位置に効果的に再指定する。タグ、また
は一時ハードウェア識別子が、結果を識別するためにマ
イクロプロセッサハードウェアによって発生される。こ
のタグもまた、割当てられたリオーダバッファ位置にス
トアされる。レジスタにストアされていると考えられる
値を得るために、命令ストリームにおける後の命令が再
指定された行先レジスタを参照するとき、命令はその代
わりにリオーダバッファにストアされた値、または値が
まだ計算されていなければその値に関するタグを得る。
【0020】リオーダバッファ35は、内容参照メモリ
である、先入れ先出し(FIFO)環状バッファとして
実現される。このことは、リオーダバッファ35内のエ
ントリが、エントリを直接識別することによってではな
く、エントリが含むものを特定することによって識別さ
れることを意味する。より特定的には、エントリは、そ
れに書込まれたレジスタ番号を用いて識別される。レジ
スタ番号がリオーダバッファ35に与えられると、リオ
ーダバッファはレジスタに書込まれた最新の値(または
値がまだ計算されていなければその値に関するタグ)を
与える。このタグは、リオーダバッファ35内の特定の
命令の相対的な推論位置を含む。この構成は、レジスタ
番号を与えられるとレジスタ内の値を与えるレジスタフ
ァイル30を模倣している。しかしながら、リオーダバ
ッファ35およびレジスタファイル30が用いる、その
中の値にアクセスするための機構はかなり異なる。
【0021】リオーダバッファ35が用いる機構では、
リオーダバッファは要求されたレジスタ番号をリオーダ
バッファのすべてのエントリ内のレジスタ番号と比較す
る。次に、リオーダバッファは一致するレジスタ番号を
有するエントリの値(またはタグ)を戻す。これは連想
ルックアップ技術である。対照的に、レジスタファイル
30に要求されたレジスタ番号が与えられると、レジス
タファイルは単にレジスタ番号をデコードし、選択され
たエントリでの値を与える。
【0022】命令デコーダ25が命令をデコードする
と、デコードされた命令のソースオペランドのレジスタ
番号が、リオーダバッファ35およびレジスタファイル
30に同時にアクセスするのに用いられる。リオーダバ
ッファ35が、そのレジスタ番号が要求されたソースレ
ジスタ番号と一致するエントリを持たない場合には、レ
ジスタファイル30内の値がソースオペランドとして選
択される。しかしながら、リオーダバッファ35が一致
するエントリを有する場合には、そのエントリ内の値が
ソースオペランドとして選択される、というのはこの値
はリオーダバッファに割当てられた最も最近の値である
はずだからである。値がまだ計算されていないために利
用可能でなければ、その値に関するタグがその代わりに
選択され、オペランドとして用いられる。いずれの場合
にせよ、値またはタグが適切な機能ユニットの待合わせ
ステーションにコピーされる。この手順が、デコードさ
れた命令の各々が要求する各オペランドについて行なわ
れる。
【0023】典型的な命令シーケンスでは、所与のレジ
スタは何度も書込まれる。この理由のため、命令が同じ
レジスタを特定する場合には、それらの命令によって同
じレジスタがリオーダバッファ35の異なるエントリに
書込まれる可能性がある。この状況で正しいレジスタ値
を得るために、リオーダバッファ35は割当の順番によ
って複数の一致エントリに優先順位をつけ、特定のレジ
スタ値が要求されると最も最近のエントリを戻す。この
技術によって、リオーダバッファへの新しいエントリ
が、より古いエントリにとって替わる。
【0024】機能ユニットが結果を生成すると、その結
果はリオーダバッファ35、およびその結果に関するタ
グを含む何らかの待合わせステーションのエントリに書
込まれる。結果値がこの態様で待合わせステーションに
書込まれると、必要なオペランドを与えるかもしれず、
実行のために機能ユニットに投入されるべき1つまたは
それ以上の待合わせをしている命令を解放するかもしれ
ない。結果値がリオーダバッファ35に書込まれた後、
後続の命令はリオーダバッファから結果値をフェッチし
続ける。このフェッチングは、エントリが新しい値にと
って替わられなければ、かつ、値をレジスタファイル3
0に書込むことによって値が用済とされるまで続く。用
尽は、元の命令シーケンスの順序で起こり、したがって
割込および例外に関して順序通りの状態を保つ。
【0025】浮動小数点ユニット20に関しては、浮動
小数点ロード機能ユニット75および浮動小数点ストア
機能ユニット80に加えて、浮動小数点ユニット20は
他の機能ユニットも含むことがわかる。たとえば、浮動
小数点ユニット20は、浮動小数点加算ユニット120
と、浮動小数点変換ユニット125と、浮動小数点乗算
ユニット130と、浮動小数点除算ユニット140とを
含む。OP CODEバス145が、デコーダ40と浮
動小数点ユニット20内の各機能ユニットとの間に結合
されて、デコードされた命令を機能ユニットに与える。
各機能ユニットはそれぞれの待合わせステーション、す
なわち浮動小数点加算待合わせステーション120R
と、浮動小数点変換待合わせステーション125Rと、
浮動小数点乗算待合わせステーション130Rと、浮動
小数点除算待合わせステーション140Rとを含む。オ
ペランドバス150は、レジスタファイル45およびリ
オーダバッファ50を機能ユニットの待合わせステーシ
ョンに結合して、オペランドがそれらに与えられるよう
にする。結果バス155は、浮動小数点ユニット20の
すべての機能ユニットの出力をリオーダバッファ50に
結合する。リオーダバッファ50はレジスタファイル4
5に結合される。リオーダバッファ50およびレジスタ
ファイル45には、したがって、先に整数ユニット15
に関して説明したのと同じ態様で結果が与えられる。
【0026】整数リオーダバッファ35は16のエント
リを保持し、浮動小数点リオーダバッファ50は8のエ
ントリを保持する。整数リオーダバッファ35および浮
動小数点リオーダバッファ50は、各々1マシンサイク
ルにつき2つの計算値を受入れることができ、1サイク
ルにつき2つの結果をそれぞれのレジスタファイルに格
納することができる。
【0027】マイクロプロセッサがデコードされた命令
を順序通りに投入する(「順序通りの投入」)ように制
約されると、マイクロプロセッサは、デコードされた命
令が資源の競合を発生する(すなわち2つの命令の両方
がR1レジスタを使うことを要求する)と常に、または
デコードされた命令が従属性を有すると、命令のデコー
ドを停止しなくてはならない。対照的に、「順序通りで
ない投入」を用いる図1のマイクロプロセッサ10は、
デコーダ25を実行ユニット(機能ユニット)から分離
することによって、このタイプの命令の投入を達成す
る。これは、リオーダバッファ35および機能ユニット
にある上述の待合わせステーションを用いて分配命令ウ
ィンドウを効果的に確立することによって行なわれる。
この態様で、デコーダは、命令を直ちに実行できなくて
も、命令をデコードし続けることができる。命令ウィン
ドウは、マイクロプロセッサが、先に進み命令を実行し
続けながらそこから引出すことのできる命令のプールと
して作用する。したがって、命令ウィンドウによってマ
イクロプロセッサに先見能力が与えられる。従属性がク
リアされてオペランドが利用可能になると、ウィンドウ
内のより多くの命令が機能ユニットによって実行され、
デコーダはさらに多くのデコードされた命令でウィンド
ウを充満し続ける。
【0028】マイクロプロセッサ10は、その性能を高
めるために分岐予測ユニット90を含む。プログラムの
命令ストリームにおける分岐がマイクロプロセッサの命
令をフェッチする能力を妨げることはよく知られてい
る。これは、分岐が起こると、フェッチャがフェッチす
べき次の命令が分岐の結果に従属するからである。ユニ
ット90等の分岐予測ユニットがなければ、マイクロプ
ロセッサの命令フェッチャは機能停止となるか、または
正しくない命令をフェッチする恐れがある。このこと
は、マイクロプロセッサが命令ウィンドウ内の並列に実
行する他の命令を探しあてる可能性を減じてしまう。ソ
フトウェア分岐予測ではなく、ハードウェア分岐予測が
分岐予測ユニット90では用いられて、命令のフェッチ
の間に起こる分岐の結果を予測する。言い換えれば、分
岐予測ユニット90は、分岐が発生されるべきであるか
否かを予測する。たとえば、先行の分岐結果の実行の履
歴を保持するために分岐先バッファが用いられる。この
履歴に基づいて、特定のフェッチされた分岐の間、フェ
ッチされた分岐命令がどの分岐をとるかに関して決定が
なされる。
【0029】ソフトウェア分岐予測もまた、分岐の結果
を予測するのに用いることができることが認められる。
この分岐予測のアプローチでは、プログラムにおける各
分岐にいくつかのテストが行なわれて、統計的にどの分
岐結果が起こりそうかを判断する。ソフトウェア分岐予
測技術は、典型的にはプログラム自体に好ましい分岐結
果に関して統計的な分岐予測情報を組込むことを伴う。
コード列(分岐等)が、マイクロプロセッサがそのコー
ド列を実行するのが適切であることを確信する前に実行
されるマイクロプロセッサ設計の実用に、「推論実行」
という用語がしばしば適用される。
【0030】スーパースカラマイクロプロセッサの動作
を理解するために、パイプラインの各ステージ、すなわ
ちフェッチ、デコード、実行、ライトバックおよび結果
コミットでのスカラおよびスーパースカラマイクロプロ
セッサを比較することが有用である。以下の表1はこの
ような比較を示す。
【0031】
【表1】
【0032】スーパースカラマイクロプロセッサ10の
上述の説明より、このマイクロプロセッサは実に強力で
あるが、非常に複雑な構造であることが認められる。し
かしながら、設計の簡略化および処理性能のさらなる向
上が、マイクロプロセッサ10等のマイクロプロセッサ
において常に望ましい。
【0033】
【発明の概要】したがって、本発明のスーパースカラマ
イクロプロセッサのある利点は、並列に命令を処理する
ことに関しての性能の向上である。
【0034】本発明のスーパースカラマイクロプロセッ
サの別の利点は、その複雑さが減じられたことである。
【0035】本発明のスーパースカラマイクロプロセッ
サのさらに別の利点は、他のスーパースカラマイクロプ
ロセッサと比較して、ダイの寸法が減じられたことであ
る。
【0036】本発明の一実施例に従えば、主メモリにス
トアされた命令を処理するためのスーパースカラマイク
ロプロセッサが提供される。マイクロプロセッサは、同
じマイクロプロセッササイクル内に複数の命令をデコー
ドするための複数命令デコーダを含む。デコーダは、同
じマイクロプロセッサ内に整数および浮動小数点命令の
両方をデコードする。マイクロプロセッサは、デコーダ
に結合されるデータ処理バスを含む。マイクロプロセッ
サはさらに、同じデータ処理バスに結合されて、これを
共有する整数機能ユニットおよび浮動小数点機能ユニッ
トを含む。共通のリオーダバッファが、データ処理バス
に結合されて、整数機能ユニットおよび浮動小数点機能
ユニットの両方に用いられる。共通レジスタファイルが
リオーダバッファに結合されて、リオーダバッファから
用済とされた命令結果を受入れる。
【0037】新規であると考えられる本発明の特徴は、
前掲の特許請求の範囲に特定的に述べられる。しかしな
がら、この発明自体は、その構造および動作方法の両方
について、以下の説明および添付の図面を参照すること
によって最もよく理解されるであろう。
【0038】
【実施例の詳細な説明】I.スーパースカラマイクロプロセッサ概説 本発明の高性能スーパースカラマイクロプロセッサは、
望ましいことに、順序通りでない命令の投入と順序通り
でない命令の実行とを並列して可能にする。より特定的
には、開示されるスーパースカラマイクロプロセッサで
は、命令はプログラム順に発行され、投入および完了は
順序通りでなく、用尽(用済)は順序通りに行なわれ
る。高性能を可能にする本発明のいくつかの局面を、よ
り詳細な説明に入る前に議論する。
【0039】図2のスーパースカラマイクロプロセッサ
200は、いくかつの主な構成要素を共有することで、
ダイの寸法を増大することなく性能を向上することがで
きる。このマイクロプロセッサのアーキテクチャでは、
整数ユニット215および浮動小数点ユニット225は
共通のデータ処理バス535に結合される。データ処理
バス535は、主にその広いバンド幅のために、高速で
高性能のバスである。整数機能ユニットおよび浮動小数
点機能ユニットが別個のバスの上にある設計と比較し
て、これらの両方の機能ユニットをさらに活用すること
が可能になる。
【0040】整数および浮動小数点機能ユニットは、複
数の待合わせステーションを含み、これらもまた同じデ
ータ処理バス535に結合される。図3ないし図5に示
される本発明のマイクロプロセッサのより詳細な表現か
らわかるように、整数および浮動小数点機能ユニットは
また、データ処理バス535を介して共通の分岐ユニッ
ト520を共有する。さらに、整数および浮動小数点機
能ユニットは、同じデータ処理バス535に結合される
共通のロード/ストアユニット530を共有する。開示
されるマイクロプロセッサアーキテクチャは、マイクロ
プロセッサダイの寸法をより効率的に用いながら、有利
に性能を高める。図2ないし図5に示されるこの発明の
実施例では、本発明のマイクロプロセッサは、マイクロ
プロセッサによって処理される命令が同じ幅を示し、か
つオペランドサイズが可変である縮小命令セットコンピ
ュータ(RISC)である。
【0041】図2に戻って、この発明のスーパースカラ
マイクロプロセッサの簡略化されたブロック図が、マイ
クロプロセッサ200として示される。スーパースカラ
マイクロプロセッサ200は、4命令幅、2ウェイセッ
トアソシアティブ、部分デコード8Kバイト命令キャッ
シュ205を含む。命令キャッシュ205は、分岐予測
を伴う1マシンサイクルにつき複数の命令のフェッチを
サポートする。この明細書の目的のため、マシンサイク
ルおよびマイクロプロセッササイクルという用語は、同
意語であると見なす。命令キャッシュ205はまた、I
CACHEとも称する。
【0042】マイクロプロセッサ200はさらに、オペ
ランドの利用可能性に関わらず、1マシンサイクルにつ
き4つまでの命令をデコードし、6つの独立した機能ユ
ニットのいずれにも発行することのできる命令デコーダ
(IDECODE)210を含む。図3ないし図5にマ
イクロプロセッサ500として示される本発明のより詳
細な実施例においてわかるように、これらの機能ユニッ
トは、2つの算術論理ユニット(まとめてALU500
として示されるALU0およびALU1)を含む。これ
らの機能ユニットはさらに、シフタセクション510
(SHFSEC)を含み、これはALUセクション50
5とともに、整数命令を処理するための整数ユニット5
15を形成する。機能ユニットはさらに、命令分岐を処
理し、かつ分岐予測を行なうための分岐セクション(B
RNSEC)520を含む。分岐ユニット520として
用いることができる分岐ユニットの1つは、1992年
8月4日に発行された、「キャッシュ内に各命令のブロ
ックとストアされたフェッチ情報を用いての適切に予測
された分岐命令に続く実行のための遅延を低減するため
のシステム」(“System For Reducing Delay For Exec
ution Subsequent ToCorrectly Predicted Branch Inst
ruction Using Fetch Information Stored With Each B
lock Of Instructions In Cache”)と題される米国特
許第5,136,697号に記載され、その開示をここ
に引用によって援用する。浮動小数点セクション(FP
TSEC)525およびロード/ストアセクション(L
SSEC)530もまた、デコーダ(IDECODE)
210が命令を発行する機能ユニットに含まれる。上述
の機能ユニットはすべて、図3ないし図5に示されるよ
うに共通の主データ処理バス535を共有する(この明
細書の目的のため、図3ないし図5は併せてマイクロプ
ロセッサ500を形成し、併せて横に並べて見るもので
ある)。
【0043】図2のスーパースカラマイクロプロセッサ
200の簡略化されたブロック図では、分岐は整数演算
と考えられ、分岐ユニットは整数コア215の一部とし
て見なされる。スーパースカラマイクロプロセッサ20
0は、オペランド従属性の適切な順序付けを守り、かつ
順序通りでない投入を可能にするために命令のタグの付
与を行なう。マイクロプロセッサ200はさらに、発行
された命令が実行を待つ間待ち行列にされる、機能ユニ
ットの複数の待合わせステーションを含む。この特定の
実施例では、各機能ユニットの入力に2つの待合わせス
テーションが設けられる。より特定的には、この特定の
実施例では、整数コア215は2つの待合わせステーシ
ョン220を含み、浮動小数点コア225は2つの待合
わせステーション230を含む。1機能ユニットについ
て用いられる待合わせステーションの数は、所望される
待ち行列の程度に従って変えてもよい。整数コア215
は整数命令を処理し、浮動小数点コア225は浮動小数
点命令を処理する。実用において、整数コア215およ
び浮動小数点コア225の各々は、複数の機能ユニット
を含み、この発明の一実施例では、その各々には複数の
待合わせステーションが備えられる。
【0044】この特定の実施例において、マイクロプロ
セッサ200は1マシンサイクルについて3つまでの機
能ユニット結果を処理することができる。これは、マイ
クロプロセッサ200が、すべての機能ユニット(すな
わち図2の整数コア220および浮動小数点コア23
0)に結合されるRESULT0、RESULT1、お
よびRESULT2と示される3つの結果バスを含むか
らである。この発明はこの数の結果バスに制限されるわ
けではなく、所望の性能レベルに見合った、より多いま
たは少ない数の結果バスを用いてもよい。同様に、この
発明は示される実施例における機能ユニットの特定の数
に制限されるわけではない。
【0045】マイクロプロセッサ200はさらに、リオ
ーダバッファ240から用済となった結果をストアする
ための統合されたレジスタファイル235を含む。レジ
スタファイル235は、一実施例においては1マシンサ
イクルにつき4つの読出および2つの書込を可能にする
マルチポートマルチレジスタ記憶領域である。レジスタ
ファイル235は様々なサイズのエントリ、すなわち一
実施例では同じレジスタファイルに32ビット整数およ
び64ビット浮動小数点オペランドエントリの両方を収
容する。レジスタファイル235は、この特定の実施例
では194の32ビットレジスタのサイズを示す。リオ
ーダバッファ240もまた異なるサイズのエントリ、す
なわち一実施例では同じレジスタファイル内に32ビッ
ト整数および64ビット浮動小数点オペランドエントリ
の両方を収容する。これらの特定の数もまた、制限する
ものではなく例示する目的のために与えるものである。
【0046】リオーダバッファ240は、環状バッフ
ァ、または順序通りでない機能ユニットの結果を受取り
かつ逐次命令プログラム順にレジスタファイル235を
更新するキューである。一実施例では、リオーダバッフ
ァ240は、10のエントリを備えた先入れ先出し(F
IFO)バッファとして実現される。FIFO ROB
240内のキューは先頭および末尾を含む。この発明の
別の実施例では、16のエントリを備えたリオーダバッ
ファを用いる。リオーダバッファ240は再指定された
レジスタに割当てられる位置を含み、推論的に実行され
た命令の結果を保持する。分岐論理がある分岐の発生を
予測すると、予測された分岐における命令が、分岐があ
る特定の例において適切に発生したとの推論の下に実行
されるように、命令が推論的に実行される。分岐が誤予
測されたと判断されるようなことがあれば、リオーダバ
ッファ240内にある分岐結果は、効果的にキャンセル
される。このことは、マイクロプロセッサが誤予測され
た分岐命令に対して効果的にバックアップし、マイクロ
プロセッサの推論状態をリセットし、誤予測された分岐
前のプログラム命令ストリームの点から実行を再開する
ことによって達成される。
【0047】リオーダバッファの10のエントリは各々
32ビット幅(32ビット整数量の幅に対応する)であ
るが、リオーダバッファはまた、たとえば64ビット浮
動小数点量等の64ビット量を収容することもできる。
これは、リオーダバッファ内で64ビット量を2つの連
続ROPとしてストアすることによって達成される(ア
ール・オップと発音するROPは、マイクロプロセッサ
によって処理されるRISCまたはRISC類似命令/
演算を指す)。このようにストアされた連続ROPは、
これらを1つの構造として連結する情報を有し、1つの
構造として一緒に用済とされる。各リオーダバッファエ
ントリは、1の32ビット量、すなわち倍精度浮動小数
点量の1/2、1の単精度浮動小数点量または32ビッ
ト整数を保持する容量を有する。
【0048】プログラムカウンタ(PC)は、もう推論
的ではないものとしてレジスタファイル235に格納さ
れた命令と、推論的に実行されてその結果がリオーダバ
ッファ(ROB)240にあり、用済が未定の命令との
間の境界である、プログラム命令ストリーム内の点を追
跡するために用いられる。このPCは、リタイアPCま
たは単にPCと称する。リタイアPCは、ROBキュー
の先頭にストアされ、更新される。ROBエントリは、
相対PC更新状態情報を含む。
【0049】リタイアPCは、リオーダバッファキュー
の先頭と関連する状態情報によって更新される。より特
定的には、リオーダバッファキューは、この特定の実施
例では最大4の命令までの、用済とする準備のできてい
る命令の数を示す。リタイア論理242内に位置される
リタイアPCセクションは、現在の用済となったPCを
保持する。ある特定のクロックサイクル内に4つの逐次
命令が用済とされるべきであれば、リタイアPC論理は
現在のリタイアPCに[4命令*4バイト/命令]を加
えて新しいリタイアPCを生成する。発生された分岐が
存在すれば、リタイアPCは、一旦分岐が用済とされも
う推論的でなくなると、分岐先に進む。リタイアPCは
次に、その点から用済とされた命令の数だけ増分され
る。リタイアPCはリタイア論理242内の内部バス、
すなわちPC(31:0)に存在する。
【0050】II.スーパースカラマイクロプロセッサ
の簡略化されたブロック図 このセクションでは、図2の簡略化されたマイクロプロ
セッサのブロック図のまだ述べていない局面を中心に議
論する。一般的な見方を述べる。
【0051】図2は、マイクロプロセッサ200とし
て、この発明の高性能スーパースカラマイクロプロセッ
サの一実施例の簡略化されたブロック図を示す。マイク
ロプロセッサ200において、命令キャッシュ205お
よびデータキャッシュ245は、32ビット幅内部アド
レスデータ(IAD)バス250を介して互いに結合さ
れる。IADバス250は、一実施例では、データ処理
バス535と比較すると比較的低速の通信バスである。
IADバス250は、マイクロプロセッサ200のいく
つかの主要な構成要素を相互接続して、このような構成
要素の間でアドレス情報およびデータの両方の通信を与
えるように機能する。IADバス250は、データ処理
バス535が扱うオペランド処理および結果処理のよう
に高速の並列性を要求しないタスクのために用いられ
る。この発明の一実施例では、IADバス250は、各
クロックサイクルにおいてデータおよびアドレス情報の
両方がそれにマルチプレクスされる32ビット幅バスで
ある。IADバス250のバンド幅は、したがってある
例では64ビット/クロックである。
【0052】主メモリ255が、図2に示されるように
バスインタフェースユニット260を介してIADバス
250に結合される。このように、主メモリ255へ
の、およびそこからの情報の読出および書込が可能にさ
れる。図示の目的のため、主メモリ255はマイクロプ
ロセッサ200の一部として図2に示される。実用にお
いて、主メモリ225は、一般にマイクロプロセッサ2
00の外部に置かれる。
【0053】しかしながら、たとえばマイクロコントロ
ーラの場合のように主メモリ255がマイクロプロセッ
サ200内に配置される、マイクロプロセッサ200の
実現例が企図される。
【0054】デコーダ210は、命令キャッシュ205
に結合されるフェッチャ257を含む。フェッチャ25
7は、デコーダ210によるデコードおよび発行のため
にキャッシュ205および主メモリ255から命令をフ
ェッチする。
【0055】バスインタフェースユニット(BIU)2
60は、IADバス250に結合されてマイクロプロセ
ッサ200の外部にあるバス回路(図示せず)とマイク
ロプロセッサ200をインタフェースさせる。より特定
的には、BIUバス260は、マイクロプロセッサ20
0の外部にあるシステムバス、ローカルバスまたは他の
バス(図示せず)とマイクロプロセッサ200をインタ
フェースさせる。BIU260として用いることができ
るバスインタフェースユニットの1つは、アドバンスト
・マイクロ・ディバイシズ・インコーポレイテッド(Ad
vanced Micro Devices)が製造するAM29030マイ
クロプロセッサからのバスインタフェースユニットであ
る。BIU260は、A(31:0)と示されるアドレ
スポートと、D(31:0)と示されるデータポートと
を含む。BIU260はまた、バスハンドシェークポー
ト(BUS HAND SHAKE)と、XBREQ
(バスリクエストなし)およびXBGRT(バスグラン
トなし)と示されるグラント/リクエストラインとを含
む。AM29030マイクロプロセッサのバスインタフ
ェースユニットは、アドバンスト・マイクロ・ディバイ
シズ・インコーポレイテッドの出版するAm29030
ユーザーズマニュアルにより詳細に説明される。
【0056】当業者には、命令列およびそのためのデー
タを含むプログラムが主メモリ255にストアされるこ
とが認められるであろう。命令およびデータがメモリ2
55から読出されると、命令およびデータは、命令がデ
コーダ210によってフェッチされ、デコードされ、機
能ユニットに発行され得る前に、それぞれ命令キャッシ
ュ205およびデータキャッシュ245にストアされ
る。
【0057】デコーダ210によって特定の命令がデコ
ードされると、デコーダ210はデコードされた命令の
opコードをその命令のタイプのための適切な機能ユニ
ットに送る。たとえば以下の命令、すなわちADD R
1,R2,R3(レジスタ1内の整数をレジスタ2内の
整数に加えてその結果をレジスタ3に置く)がフェッチ
されたと仮定する。ここで、R1はAオペランドであ
り、R2はBオペランドであり、R3は行先レジスタで
ある。
【0058】実用において、デコーダ210は1度に1
ブロックにつき4つの命令をデコードし、各命令に関連
するopコードを識別する。言い換えれば、デコード2
10は、デコード210に含まれる4つの発行位置の各
々のためのopコードタイプを識別する。4つのデコー
ドされたopコードタイプは、それぞれ4つのTYPE
バスを介して機能ユニットにブロードキャストされる。
4つのデコードされたopコードはそれぞれのOP C
ODEバスを介して機能ユニットにブロードキャストさ
れる。もし利用可能であれば、オペランドがROB24
0およびレジスタファイル235から検索される。オペ
ランドは、AオペランドおよびBオペランドバスを介し
て機能ユニットにブロードキャストされる。特定のオペ
ランドが利用可能でなければ、AおよびBオペランドタ
グがその代わりに適切なAまたはBオペランドバスを介
して適切な機能ユニットに送られる。デコーダ210に
よってデコードされた4つの命令は、このように処理の
ために機能ユニットに発行される。
【0059】この例でのADD opコードに関して、
機能ユニットの1つ、すなわち整数コア215内の算術
論理装置(ALU)は、opコードタイプを認め、その
待合わせステーション220においてopコード、Aオ
ペランドタグ、Aオペランド(もし利用可能であれ
ば)、Bオペランドタグ、Bオペランド(もし利用可能
であれば)および行先タグを含む情報をラッチする。A
LU機能ユニットは次に結果を判断し、その結果を、R
OB240でのストアのために、および未処理の命令を
処理するためにその結果を必要としている何らかの他の
機能ユニットによる検索のために、結果バス265に置
く。
【0060】命令がデコーダ210によってデコードさ
れると、その結果のためにリオーダバッファ240内の
レジスタが割当てられることが認められる。次に命令の
行先レジスタが、割当てられたレジスタと関連付けられ
る。命令のまだ利用可能でない結果に対応する結果タグ
(一時の一意的ハードウェア識別子)が割当てられたレ
ジスタに置かれる。「レジスタ再指定」がこのように実
現される。プログラム命令列における後の命令が、リオ
ーダバッファ240内のこの再指定された行先レジスタ
を参照すると、リオーダバッファ240は、そのレジス
タに割当てられた位置にストアされた結果値か、または
その結果がまだ計算されていなければその値のためのタ
グのいずれかを与える。結果が計算されると、結果タグ
バスに信号が与えられ、リオーダバッファ240および
機能ユニットの待合わせステーションに結果バスを介し
て結果が利用可能となったことを知らせる。このように
して結果がリオーダバッファ240にストアされる。
【0061】図3および4に示されるように、行先タグ
ラインはリオーダバッファ240から機能ユニットに延
びる。デコーダ210は、リオーダバッファに、リオー
ダバッファエントリの割当の準備が現在できている命令
の数を知らせる。リオーダバッファは次に、リオーダバ
ッファの現在の状態に基づいて行先タグを各命令に割当
てる。デコーダ210は次に、各命令が投入されるか否
かを確立する。リオーダバッファは投入された命令を取
込み、リオーダバッファエントリの一時的割当を確立す
る。
【0062】特定の命令のためのオペランドは、共通デ
ータ処理バス535のAオペランドバス(A OPE
R)およびBオペランドバス(B OPER)を介し
て、適切な機能ユニットに送られる。それぞれの命令の
結果は、これらの命令に割当てられた機能ユニットで発
生する。これらの結果は、3つの結果バスRESULT
0、RESULT1およびRESULT2を含む複合結
果バス265を介してリオーダバッファ240に送られ
る。複合結果バス265は、データ処理バス535の一
部である。
【0063】特定の命令がデコードされたときに、1つ
またはそれ以上のオペランドが現在利用可能でないこと
は、デコーダ210から機能ユニットへの命令の発行を
妨げるわけではない。そうではなく、1つまたはそれ以
上のオペランドがまだ利用可能でない場合には、オペラ
ンドタグ(一時の一意的ハードウェア識別子)が、抜け
ているオペランドの代わりに適切な機能ユニット/待合
わせステーションに送られる。オペランドタグおよび命
令のためのopコードは、タグに対応するオペランドが
結果バスを介してリオーダバッファ240で利用可能と
なるまでは、その機能ユニットの待合わせステーション
にストアされる。抜けていたすべてのオペランドがリオ
ーダバッファ240で利用可能となれば、タグに対応す
るオペランドがリオーダバッファ240から検索され
る。オペランドおよびopコードは、待合わせステーシ
ョンから実行のために機能ユニットに送られる。結果
は、リオーダバッファ240に伝送するために結果バス
に置かれる。
【0064】上述のオペランドタグトランザクションに
おいて、A OPERおよびB OPERバスを介して
機能ユニットの待合わせステーションにオペランドタグ
が実際に送られることが認められる。オペランドタグを
やりとりするためにこのような態様で用いられると、A
OPERおよびB OPERバスは、図2に示される
ようにA TAGおよびB TAGと称する。
【0065】III.スーパースカラマイクロプロセッ
サ;より詳細な説明 図3ないし図5は、マイクロプロセッサ500として、
この発明のマイクロプロセッサのより詳しい実現例を示
す。図2ないし図5に示されるマイクロプロセッサ内の
同様の要素を示すのに同様の参照符号を用いる。マイク
ロプロセッサ500のある部分は既に説明したことが認
められる。
【0066】マイクロプロセッサ500において、命令
は推論プログラム順に発行され、投入および完了は順番
通りではなく、順番通りに用済とされる。多くの信号お
よびバスが、特に命令の発行に関して並列性を促進する
ために複製されることが後の説明より明らかになるであ
ろう。デコーダ210は、1マイクロプロセッササイク
ルについて複数の命令をデコードし、デコードされた命
令がそこから機能ユニットに並列に発行される発行ウィ
ンドウを形成する。ICACHE205は、1度に4つ
の命令をデコーダ210に、ICACHE205をデコ
ーダ210に結合するラインINS0、INS1、IN
S2およびINS3を介して与えることができる。
【0067】マイクロプロセッサ500において、主デ
ータ処理バスは、やはりデータ処理バス535として示
される。データ処理バス535は4つのOP CODE
バスと、4つのA OPER/A TAGバスと、4つ
のB OPER/B TAGバスと、4つのOP CO
DE TYPEバスとを含む。4つのOP CODEバ
ス、4つのA OPER/A TAGバス、4つのB
OPER/B TAGバス、および4つのOP COD
E TYPEバスは、デコードされた命令を機能ユニッ
トに伝送するように協働するため、これらは併せて、X
I0B、XI1B、XI2BおよびXI3B(図では別
個に符号を付けられるわけではない)と示される4つの
命令バスとしても参照される。これらの類似した命令バ
スの名称は、互いから1桁で区別される。この桁は0を
より早い命令として、0mod16バイトメモリブロッ
クにおける命令の位置を示す。これらの名称はここでは
小文字「n」でその桁を示す一般的な形で与えられる
(すなわち、4つの命令バスXI0B、XI1B、XI
2BおよびXI3Bは、XInBとして参照する)。
【0068】順序通りでない命令の並列の実行を可能に
するスーパースカラマイクロプロセッサ500の特徴
を、ここでマイクロプロセッサのより詳細な説明を始め
る前に簡単に繰返す。マイクロプロセッサ500は、4
命令幅、2ウェイセットアソシアティブ、部分デコード
8Kバイト命令キャッシュ205(ICACHE)を含
み、分岐予測を伴う、1マイクロプロセッササイクルに
つき4つの命令のフェッチをサポートする。マイクロプ
ロセッサ500は、オペランドの利用可能性に関わら
ず、5つの独立した機能ユニットのうちの何らかのもの
へのデコーダ210(IDECODE)による1サイク
ルにつき4つまでの命令のデコードおよび発行を与え
る。これらの機能ユニットは、分岐セクションBRNS
EC520、算術論理装置ALU505、シフタセクシ
ョンSHFSEC510、浮動小数点セクションFPT
SEC525、およびLOAD/STOREセクション
530を含む。
【0069】マイクロプロセッサ500は、オペランド
の従属性の適切な順序付けを守り、順序通りでない投入
を可能にするために、命令のタグ付与を行なう。マイク
ロプロセッサ500はさらに、まだ実行できない発行さ
れた命令がそこで待ち行列にされる、機能ユニット内の
待合わせステーションを含む。3つの結果バス(RES
ULT0、RESULT1およびRESULT2)が、
1サイクルにつき3つまでの機能ユニット結果を扱うこ
とを可能にするように設けられる。環状バッファまたは
FIFOキュー、すなわちリオーダバッファ240が、
順序通りでない機能ユニットの結果を受取り、レジスタ
ファイル235を更新する。より特定的には、レジスタ
ファイルはリオーダバッファからの結果で正しいプログ
ラム順に更新される。言い換えれば、リオーダバッファ
からレジスタファイルへの結果の格納は、それが関係す
るすべての分岐、算術およびロード/ストア動作ととも
に正しい実行順に行なわれる。マルチポートレジスタフ
ァイル235は、1マシンサイクルにつき4つの読出お
よび2つの書込ができる。RESULT0、RESUL
T1およびRESULT2は、ROB240に並列に書
込まれる。結果がROB240から用済とされる際、こ
れらは書込バスWRITEBACK0およびWRITE
BACK1を介して並列にレジスタファイル235に書
込まれる。マイクロプロセッサ500はまた、ロードお
よびストア待ち時間を最少にするように、オンボードの
ダイレクトマッピング8Kバイトコヒーレントデータキ
ャッシュ245を含む。
【0070】[III(a)命令フロー−フェッチ]マ
イクロプロセッサ500の命令フローをここで説明す
る。命令デコーダ(IDECODE)210は、命令を
命令キャッシュ(ICACHE)205からフェッチす
る命令フェッチャ257を含む。キャッシュ205とし
て用いることができる命令キャッシュの1つは、199
2年4月12日に出願された、「命令デコーダおよびこ
れを用いるスーパースカラプロセッサ」(“Instructio
n Decoder And Superscalar Processor Utilizing Sam
e”)と題される同時係属中の米国特許出願連続番号第
07/929,770号に説明され、本明細書において
これを引用によって援用する。デコーダ210(IDE
CODE)として用いることができるデコーダの1つも
また、1992年4月12日に出願された「命令デコー
ダおよびこれを用いるスーパースカラプロセッサ」と題
される米国特許出願連続番号第07/929,770号
に説明される。
【0071】主メモリ255内の特定のプログラムがマ
イクロプロセッサ500によって実行されるとき、プロ
グラムの命令は実行のためにプログラム順に検索され
る。命令は通常最初はICACHE205にないので、
まず典型的なICACHEリフィル動作を説明する。キ
ャッシュミスの際に、0mod16バイト(キャッシュ
ブロックサイズ)でメモリ内に整列された4ワードの命
令のブロックに対するリクエストがバスインタフェース
ユニット(BIU)260に対して行なわれる。これ
は、後続のミスが起こるということを仮定して、命令ブ
ロックの継続するプリフェッチストリームを開始する。
この特定の実施例では、キャッシュ内のブロックにつき
有効ビットは1つしかないので、4ワードのブロックが
最小の転送サイズである。有効ビットは、現在の16バ
イトエントリおよびタグが有効であることを示す。この
ことは、エントリがロードされ、現在実行されているプ
ログラムに対して確立されたことを意味する。
【0072】命令ブロックが戻される際に(対象のワー
ドからではなく下位のワードから行なわれる)、これは
1つの命令につき4ビットの情報を発生するプリデコー
ドネットワーク(図示せず)を通る。前の命令ブロック
が発行されていれば、次の命令ブロック(新しい命令ブ
ロック)が命令レジスタ258およびIDECODE2
10に進む。そうでなければ、次の命令ブロックはプリ
フェッチバッファ259で待つ。命令レジスタ258
は、推論実行のために発行されるべき次の命令である現
在の4つの命令を保持する。プリフェッチバッファ25
9は、ICACHE205がリクエストしたプリフェッ
チされた命令のブロックを保持する。これらの命令は、
後にプリデコードされてICACHE205およびID
ECODE210に送られる。この態様でプリフェッチ
された命令のブロックを保持することによって、IDE
CODE210による発行およびプリフェッチがロック
状態で実行される必要がないように、バッファ動作が与
えられる。
【0073】まだ解決されていない条件付分岐がなけれ
ば、予測実行された次の命令がデコードに進むと、次の
命令ブロックがICACHE205に書込まれる。この
アプローチは、望ましいことには不必要な命令がキャッ
シュされることを防ぐ。プリデコード情報もまたキャッ
シュに書込まれる。プリデコード情報とは、特定の命令
を適切な機能ユニットに迅速に送るのを助ける命令のサ
イズおよび内容に関した情報である。プリデコードに関
するさらなる情報は、同時係属中の本譲受人に譲受され
た「可変バイト長命令に特に適したプリデコード命令キ
ャッシュおよびそのための方法」(“Pre-Decoded Inst
ruction Cache And Method Therefor Particularly Sui
table For Variable Byte-Length Instructions")と題
される米国特許出願番号第145,905号に見いださ
れ、その開示をここに引用によって援用する。分岐予測
は、プログラムが実行される際にどの分岐が発生される
かを予測するために用いられるものであることが認めら
れる。予測は後に、分岐が実際に実行されるときに確立
される。予測は、マイクロプロセッサパイプラインのフ
ェッチ段階の間に起こる。
【0074】プリフェッチストリームは、BIU260
がそれに結合される外部バス(図示せず)を放棄しなく
てはならないか、データキャッシュ245が外部アクセ
スを必要とするか、プリフェッチバッファ259がオー
バーフローするか、キャッシュヒットが起こるか、また
は分岐もしくは割込が起こるまで続く。上述のことよ
り、プリフェッチストリームはあまり長くはならない傾
向にあることが認められるであろう。一般に、外部プリ
フェッチは、多くても発行されているものより2ブロッ
ク先である。
【0075】この特定の実施例では、命令キャッシュ2
05(ICACHE)内のブロック1つにつき有効ビッ
トは1つなので、部分的なブロックは存在せず、すべて
の外部フェッチは4つの命令のブロックで行なわれるこ
とが認められる。キャッシュ内のブロックにつき有効ビ
ットは1つしかない。ICACHE205はまた、各ブ
ロックについての分岐予測情報を含む。この情報はリフ
ィルの際にクリアされる。
【0076】命令がICACHE205に進んだので、
スーパースカラ実行を始めることができる。外部でフェ
ッチされたブロックがデコードに進むと、動作はICA
CHE205からフェッチされたのと同じであるが、全
体的な性能は、1サイクルにつき1の命令の最大外部フ
ェッチレートに制限される。4ワードの命令ブロックが
フェッチされ、プリデコード情報とともにデコードに進
む(PH2でキャッシュ読出、PH1で命令バス駆
動)。PH1はクロックの2つの相のうちの第1のもの
と規定され、PH2は、クロックの2つの相のうちの第
2のものと規定される。PH1およびPH2が、パイプ
ライン化されるプロセッサの基本的なタイミングを構成
する。
【0077】図3および4に示されるように、32ビッ
トフェッチPC(FPC)バス、FPC(31:0)
は、命令キャッシュ(ICACHE)205とデコーダ
(IDECODE)210のフェッチャ257との間に
結合される。より特定的には、FPCバスは、ICAC
HE205内のFPCブロック207とフェッチャ25
7との間に延びる。命令キャッシュ205内のフェッチ
PCまたはFPCブロック207は、その中に位置され
るFPCとして示される推論フェッチプログラムカウン
タを制御する。FPCブロック207は、デコーダ21
0による機能ユニットへの命令の発行に先立ってフェッ
チャ257がプリフェッチする命令に関連するプログラ
ムカウント値FPCを保持する。FPCバスは、ICA
CHEに例外または分岐予測に進む位置を示す。フェッ
チPCブロック207は、デコーダ210へと命令(4
の幅)をプリフェッチするのに、命令キャッシュ205
にストアされた分岐予測情報を用いる。フェッチPCブ
ロックは、逐次アクセスを予測することもでき、この場
合には新しいブロックが必要なときに現在のフェッチP
Cを16バイトだけ増分し、これはまた新しいブロック
への分岐を予測することもできる。新しい分岐位置は、
予測された分岐に関して命令キャッシュから受取られた
ものでも、誤予測または例外の際に分岐機能ユニットか
ら受取られたものでもあり得る。フェッチPCまたはF
PCは、先に述べたリタイヤPCとは区別されるべきで
ある。
【0078】フェッチPC(FPC)はPH1で増分さ
れ、次ブロックがICACHE205から読出される
が、IDECODE210は、第1のブロックからすべ
ての命令を発行していなければHOLDIFETをアサ
ートすることによってフェッチャ257を停止させる。
HOLDIFET信号の機能は、命令レジスタ258内
の4つの命令が進むことができないので命令のフェッチ
を抑えるというものである。
【0079】フェッチャ257はまた、分岐予測の実行
を助ける。分岐予測は、命令キャッシュ205の出力で
ある。分岐が予測されると、予測された次ブロックの4
つの命令は、命令キャッシュ205によって命令ライン
INS0、INS1、INS2およびINS3へと出力
される。命令キャッシュ205内のアレイIC_NXT
BLK(図示せず)は、キャッシュ内の各ブロックにつ
いてその特定のブロックでどの命令が予測実行されるか
を規定し、次ブロックがどう予測されるかを示す。分岐
がなければ、実行は常にブロック単位で逐次的に行なわ
れるであろう。したがって、発生される分岐は、このブ
ロック指向分岐予測を変える唯一の事象である。言い換
えれば、この発明の一実施例では、逐次的なブロック単
位での予測は、発生しないと予測された分岐が発生し、
誤予測されたときのみ起こる。
【0080】分岐命令を含むブロックが初めてデコーダ
210(IDECODE)に送られると、後続のフェッ
チは、分岐が発生されないと仮定して、逐次的である。
分岐が実行され、後に実際に発生したとわかると、分岐
予測ユニット(分岐ユニット)520は、ICACHE
205に知らせ、1)分岐が発生したこと、2)分岐命
令のブロック内の位置、および、3)ターゲット命令の
キャッシュ内の位置を反映するように、そのブロックに
関する予測情報を更新する。フェッチャ257はまた、
ターゲットからフェッチを始めるように指示し直され
る。次にそのブロックがフェッチされると、フェッチャ
257は、それが前に発生された分岐を含むことを認
め、以下の動作で非逐次的フェッチを行なう、すなわち
1)命令有効ビットは、分岐遅延スロットを含みかつそ
こまでしかセットされない。分岐遅延は常に分岐の後の
命令を実行するという概念であり、遅延分岐とも称され
る。この命令は既にスカラRISCパイプラインにおい
てプリフェッチされており、そのため分岐の際に、それ
を実行するのにオーバーヘッドが失われない。2)分岐
が発生予測されたという指示がそのブロックとともにデ
コーダ210に送られる。3)次のフェッチのためのキ
ャッシュインデックスが予測情報からとられる。(キャ
ッシュインデックスは、分岐が起こるときに予測実行さ
れた次ブロックのためのキャッシュ内の位置である。キ
ャッシュインデックスは絶対PCでないことに注目され
たい。絶対PCは、その位置のTAGをキャッシュイン
デックスと連結することによって形成される。)4)こ
のキャッシュインデックスのブロックがフェッチされ、
予測されたターゲットアドレスがブロックのタグから形
成され、分岐情報が分岐FIFO(BRN FIFO)
261に置かれる。5)この次ブロックのための有効ビ
ットが、予測されたターゲット命令から始まってセット
される。
【0081】分岐FIFO261は、フェッチャ257
によって予測されたターゲットアドレスを分岐機能ユニ
ット(BRNSEC)550に伝えるために用いられ
る。別個に示されているが、分岐FIFO261は分岐
セクションBRNSEC550の一部であると考えられ
ることが認められる。分岐FIFO261には、ターゲ
ットとともに分岐が発生予測された命令のPCがロード
される。分岐命令が実際に発行されると、分岐命令は分
岐FIFO内のエントリ、すなわちそこにストアされた
PCと比較される。一致があれば、エントリは分岐FI
FOから送られ、分岐命令がうまく予測されたものとし
てリオーダバッファ240に戻される。誤予測があれ
ば、正しいPCがリオーダバッファ240に与えられ
る。
【0082】予測ビットは、分岐命令とともにデコーダ
210によって分岐ユニット520に発行される。予測
ビットは、特定の分岐がIC_NXTBLKアレイにス
トアされた情報から発生予測されたかどうかを示す。
【0083】分岐ユニット520が命令を実行すると、
その結果が予測と比較され、発生されれば、実際のター
ゲットアドレスが分岐FIFOの上部のエントリ(必要
であればそれが現われるの待つ)と比較される。いずれ
のチェックも失敗すれば、分岐ユニット520はフェッ
チャ257に正しいターゲットアドレスを再指定し、予
測を更新する。これがフェッチャ257によるものでは
なく予測された非順次的フェッチに関してキャッシュミ
スを検出する方法であることに注目されたい。予測情報
は、フルアドレスではなくキャッシュインデックスのみ
を含むので、ターゲットブロックのタグはヒットに関し
てチェックすることができず、ターゲットアドレスはそ
のタグによって特定されるそのインデックスのブロック
のアドレスであると仮定される。分岐が最後に実行され
てから実際のターゲットブロックが置換えられていれ
ば、これは誤比較および実行の際の訂正となる。誤比較
が起これば、分岐を過ぎた多くの命令が、その遅延スロ
ットのみだけでなく、実行されているかもしれない。
【0084】分岐予測ユニット520として用いること
のできる分岐予測ユニットの1つは、1992年8月4
日に発行された、ダブリュー・エム・ジョンソン(W.
M. Johnson)の「キャッシュ内の各命令ブロックとスト
アされたフェッチ情報を用いた正しく予測された分岐命
令に続く実行の遅延を減じるためのシステム」と題され
る米国特許番号第5,136,697号に説明され、そ
の開示はここに引用によって援用される。
【0085】[III(b) 命令フロー−デコード、
レジスタファイル読出、発行]命令は1度に1ブロック
ずつIDECODE210に進み、それらのメモリブロ
ック内の位置に対応する命令レジスタ258内の特定の
位置を占める(0=列の最初)。各命令に付随するの
は、そのプリデコード情報および有効ビットである。
【0086】IDECODE210の主な機能は、命令
を扱う機能ユニットに従って命令を分類し、その命令を
それらの機能ユニットに発行することである。これは、
4つの3ビット命令タイプコード(INSTYPn)を
すべての機能ユニットにブロードキャストし、何らかの
所与のサイクル内で、発行されている各命令のための信
号(XINSDISP(3:0))をアサートすること
によって行なわれる。(本明細書中、X指示を伴って現
われる信号と、伴わない信号とがある。XINSDIS
P信号等のXは、誤ったアサートがバスを放電すること
を示す。)図3ないし図5に示されるように、マイクロ
プロセッサ500は、タイプコードを機能ユニットにブ
ロードキャストする目的のために4のタイプバス、IN
STYPn(7:0)を含む。特定の命令ブロックの4
つの命令の各々についてそれぞれのTYPEバスが設け
られる。
【0087】特定の機能ユニットがそのタイプに対応す
るTYPE信号を検出すると、その機能ユニットは、タ
イプバスにおいて検出されたタイプ信号の位置に従っ
て、IDECODE210の現在の発行ウィンドウ内の
現在の命令ブロックの4つの命令のうちのどれを受取る
べきかを知る。タイプバスは、IDECODE210の
それぞれの発行位置に対応する4つのセクションを有す
る。その機能ユニットはまた、検出されたタイプに対応
する発行情報バスのそのセクションで起こる操作コード
(opコード)によってその命令のオペランドデータに
どの機能を実行するべきかを定める。さらに、機能ユニ
ットはどの命令を実行すべきかがわかっているので、そ
のハードウェアをオペランドデータと行先タグとを受取
るためのオペランドデータバスおよびそれぞれの行先タ
グバスDEST.TAG(0:3)と整列させる。
【0088】命令が発行されると、それらの有効ビット
はリセットされ、そのタイプは「空」になる。特定のブ
ロックの4つの命令すべてが、命令の次ブロックがフェ
ッチされる前に発行されなくてはならない。ブロックの
4つの命令すべてが1度に発行されてもよいが、以下の
事象が起こる可能性があり、それもよく起こるので、こ
のプロセスを遅くする。 1) クラスの競合−これは2つまたはそれ以上の命令
が同じ機能ユニットを必要とするときに起こる。整数コ
ードはマイクロプロセッサ500にとって重要である。
この理由のため、本発明の一実施例は、機能ユニットA
LU0、ALU1、SHFSEC、BRNSEC、LS
SEC、FPTSECおよびSRBSECの間でクラス
の競合が起こるのを減じるために2つのALUを含む。
命令は直列化の点でのみSRBSEC512に発行され
る。言い換えれば、直列に実行されなくてはならない命
令のみがSRBSEC512に送られる。 2) 機能ユニットが命令を受取ることができない 3) レジスタファイル(RF)235のポートが利用
可能でない−この実施例において、8つのオペランドバ
スを与えるために通常考えるような8つではなく4つの
RF読出ポートしか存在しない。命令の多くはレジスタ
ファイル235から2つのオペランドを必要とすること
はなく、またはROB240によるオペランド転送によ
って満たされ得るために、読出ポートの数がこのように
少ないことは最初に考えるほどは制限的ではないことが
わかった。たとえば8つの、より多くのRF読出ポート
を用いて、レジスタファイルポートが利用可能でない状
態が起こる可能性を避けるような、この発明の他の実施
例も企図される。 4) リオーダバッファ240におけるスペースの欠如
−各命令は対応するリオーダバッファのエントリを持た
なくてはならず(または倍および拡張精度浮動小数点命
令の場合のように、2つのリオーダバッファエントリが
設けられる)、リオーダバッファはROBSTAT
(3:0)によって、予測された命令のうちのいくつに
場所を見つけられるかを示す。図3および4に示される
ように、ROBSTAT(3:0)と示される状態バス
が、リオーダバッファ(ROB)240とデコーダ(I
DECODE)210との間に結合される。ROBST
AT(3:0)は、ROBからIDECODEに、4つ
の現在の命令のうちのいくつが割当てられるROBエン
トリを有するかを示す。ここでROBのエントリを充満
することが可能であることに注目されたい。 5) 直列化−命令の中には逐次状態を守る機構の範囲
を越えた状態を変更するものがある−これらの命令(た
とえばMTSR、MFSR、IRET命令)は周りの命
令に関してプログラム順に実行されなくてはならない。
【0089】上に挙げた5つの状況のうちの1つが起こ
れば、影響を受ける命令は発行を停止し、後続の命令
は、それらを抑えるものが他に何もなくても発行され得
ない。各発行位置について、機能ユニットにソースオペ
ランドを供給するAおよびBオペランドバスの組(XR
DnAB/XRDnBBバスとも称される)がある。レ
ジスタファイル235はデコードと並列にPH2でアク
セスされ、オペランドがPH1でこれらのバスに送られ
る。ソースレジスタを変更する命令がまだ実行中であれ
ば、レジスタファイル235内の値は無効である。この
ことは、レジスタファイル235およびROB240が
データを含まず、したがってタグがデータの代わりとな
ることを意味する。リオーダバッファ(ROB)240
はこれを追跡し、レジスタファイルアクセスと並列して
アクセスされる。オペランドが利用可能でないこと、ま
たはレジスタの競合は発行の際に問題とならないことに
注目されたい。ROB240は、予め定められた数のエ
ントリならびに先頭および末尾ポインタを備えた環状バ
ッファとして見なすことができる。
【0090】命令が発行されると、ROB内のエントリ
がその行先レジスタのために確保される。ROB内の各
エントリは、1)命令の行先レジスタアドレス、2)命
令の結果のためのスペース(これは倍精度動作またはC
ALL/JMPFDECタイプの命令には2つのエント
リを必要とするかもしれない)、および例外状態情報お
よび、3)a)エントリが割当てられたことと、b)結
果が戻されたこととを示すビットからなる。
【0091】エントリは末尾ポインタから始まって逐次
的に割当てられる。割当ビットは、セットされて命令が
発行されたことを示す。割当ビットは各ROBエントリ
と関連付けられる。割当ビットは、特定のROBエント
リが未処理の動作に割当てられたことを示す。割当ビッ
トは、エントリが用済となると、または例外が起こると
割当から外される。別個の有効ビットが、結果が完了さ
れレジスタファイルに書込まれたかどうかを示す。エン
トリのアドレス(結果または行先タグとも呼ばれる)が
発行から実行の間対応する命令に付随し、結果バスの1
つを介して命令の結果とともにROB240に戻され
る。
【0092】より詳細には、行先タグは、命令が機能ユ
ニットに発行されるときに用いられ、結果タグは命令が
戻されるとき、すなわち結果が機能ユニットからROB
に戻されるときに用いられる。言い換えれば、行先タグ
は発行された命令に関連し、リオーダバッファによって
機能ユニットに特定の命令の結果がどこにストアされる
べきかに関して知らせるために機能ユニットに与えられ
る。
【0093】より詳細には、命令に関連する行先タグは
機能ユニットにストアされ、次に結果バスに転送され
る。このような行先タグは、これらが結果バスを介して
転送されるときにはまだ行先タグとして示される。これ
らのタグは他の機能ユニットの待合わせステーションで
オペランドタグと比較され、このような他の機能ユニッ
トが特定の結果を必要かどうかを見る。特定の機能ユニ
ットからの結果は、ROB内の対応する相対推論位置に
戻される。
【0094】命令の結果は、効果的にこの命令の結果タ
グとなる命令の行先タグによって識別されるROBエン
トリ内に置かれる。その特定のROBエントリの有効ビ
ットがセットされる。結果は、レジスタファイルにライ
トバックされる順番が回ってくるまでそこに留まる。エ
ントリが除去されるよりも早くROB240に割当てら
れることが可能であり、この場合にはROB240は最
終的にはフルとなる。リオーダバッファフル状態は、R
OBSTAT(3:0)バスを介してデコーダ210に
伝えられる。これに応答して、デコーダ210はHOL
DIFET信号を発生して、命令がICACHE205
からフェッチされるのを止める。したがって、ROBフ
ル状態はデコーダ210による発行を止めることが認め
られる。
【0095】オペランドの処理の説明に戻って、ROB
240でライトバックを待っている結果を、もし必要で
あれば他の機能ユニットに転送することができることに
注目されたい。これは、IDECODE210内の命令
のソースレジスタアドレスをROB内の行先レジスタア
ドレスと、デコード時にレジスタファイルアクセスと並
列して、比較することによって行なわれる。AおよびB
ソースオペランドに関して起こり、かつ結果有効ビット
がセットされている、最も最近のアドレス一致につい
て、ROB240は対応する結果をレジスタファイル2
35の代わりに適切なオペランドバスに送る。この一致
が起これば、ROB240は、ROB240とレジスタ
ファイル235との間のOVERRIDEラインを活性
化して、レジスタファイル235に、AおよびBオペラ
ンドバスにいかなるオペランドも送らないように指示す
る。
【0096】たとえば、デコーダ210が、レジスタR
3の内容をレジスタR5の内容に加えてその結果をレジ
スタR7に置くことを意味するように規定される、命令
ADD R3、R5、R7をデコードしていると仮定す
る。この例において、IDECODE内でデコードされ
るソースレジスタアドレスR3およびR5は、ROB2
40内の行先レジスタアドレスと比較される。この例の
目的のため、結果R3がROB240内に含まれ、結果
R5がレジスタファイル235内に含まれると仮定す
る。これらの状況のもとでは、デコードされた命令内の
ソースアドレスR3とROB240内の行先レジスタア
ドレスR3との比較は肯定である。レジスタR3のため
のROBエントリの結果がROB240から検索され、
適切な機能ユニット、すなわちALU0またはALU1
の待合わせステーションによるラッチのためにオペラン
ドAバスにブロードキャストされる。この場合にROB
エントリと一致が見いだされるので、レジスタファイル
235が、それが含み得る何らかの用済となったR3値
でAオペランドバスを駆動しないように、OVERRI
DEラインが駆動される。
【0097】この例で、デコードされた命令内のソース
アドレスR5とROB240内に含まれる行先レジスタ
アドレスとの比較はうまく行かない。したがって、レジ
スタファイル235内に含まれる結果値R5がBオペラ
ンドバスへ駆動され、その結果が機能ユニットすなわち
ALU0に実行のためにブロードキャストされる。Aオ
ペランドおよびBオペランドの両方がALU0機能ユニ
ットの待合わせステーション内にあれば、命令がALU
0に投入されて、ALU0によって実行される。結果
(結果オペランド)は、この結果オペランドを求めてい
る他の機能ユニットの待合わせステーションに送るため
に結果バス265に置かれる。結果オペランドはまた、
その結果のために割当てられたエントリでそこにストア
するためにROB240にも与えられる。
【0098】所望のオペランド値がまだROB240に
なくても(アサートされる有効ビットによって示され
る)、それでも命令をデコーダ210によって発行する
ことができる。この場合に、ROB240は一致するエ
ントリのインデックス(すなわちその結果を最終的に生
成する命令の結果タグ)を機能ユニットにオペランドの
代わりに送る。ここでもやはり、8つのオペランドバス
に対応する効果的に8つのA/Bタグバス(すなわち4
つのAタグバスおよび4つのBタグバス、すなわちTA
GnAB(4:0)およびTAGnBB(4:0)ここ
でnは整数である)があることに注目されたい。タグの
最上位ビット(MSB)は、タグが有効であるときを示
す。
【0099】2つ以上のROBエントリが同じ行先レジ
スタタグを有するときには、最も最近のエントリが用い
られる。これは、可能である並列性を減じてしまうであ
ろう独立した命令による行先としての同じレジスタの異
なる使用を区別する。(これはライトアフターライトハ
ザードとして知られる)命令のキャッシュ化の際に発生
されるプリデコード情報はデコード時に作用し始める。
プリデコード情報は、ICACHE205からPRED
ECODEラインを介してIDECODE210に渡さ
れることが認められる。
【0100】プリデコードは以下の態様で行われる。各
命令について、ROBエントリの割当を、いくつのエン
トリが必要であるかを示すことによって(エントリを1
つ必要とする命令もあるし、2つのエントリを必要とす
る命令もある)速める2ビットコードを含むプリデコー
ド信号PREDECODEがある。たとえば、加算命令
ADD (RA+RB)→RCは、レジスタRC内に置
かれるべき単一の32ビット結果のために1つのエント
リを必要とする。対照的に、乗算命令DFMULT
(RA+RB)(倍精度)は、64ビットの結果を保持
するのに2つのROBエントリを必要とする。本発明の
この特定の実施例では、各ROBエントリは32ビット
幅である。この2ビットコードはさらに、所与の命令か
らいくつの結果オペランドが生じるかを示す(すなわ
ち、なし−分岐等、1−ほとんどのもの、または2−倍
精度)。プリデコード情報は、レジスタファイルアクセ
スがAおよびBオペランドに必要であるかどうかを示す
2つの付加的なビットを含む。したがって、マイクロプ
ロセッサ500において32ビット命令につき4ビット
のプリデコード情報がある。これらのビットはPH2の
アクセスに先立って、PH1でレジスタファイルポート
の効率的な割当を可能にする。命令が必要とするレジス
タファイルポートを割当てられていないが、ROB24
0がオペランドを転送できることを示していれば、いず
れにしても命令は発行され得る。
【0101】[III(c) 命令フロー−機能ユニッ
ト、待合わせステーション]図3ないし図5は、マイク
ロプロセッサ500のすべての機能ユニットが共通のデ
ータ処理バス535上にあることを示す。データ処理バ
ス535は、その比較的広いバンド幅のために高速のバ
スである。各機能ユニットにはその入力で2つの待合わ
せステーションが備えられている。より多いまたは少な
い待合わせステーションが機能ユニットで用いられる本
発明の他の実施例も企図される。
【0102】整数ユニット515は算術論理装置ALU
0およびALU1を含む。ALU0には待合わせステー
ション540が設けられ、ALU1には待合わせステー
ション545が設けられる。分岐ユニット520(BR
NSEC)にはその入力で待合わせステーション550
が供給される。浮動小数点ユニット(FPTSEC)5
25は、浮動小数点加算ユニット555を含み、これに
は待合わせステーション560が設けられる。浮動小数
点ユニット525はさらに、浮動小数点変換ユニット5
65を含み、これには待合わせステーション570が設
けられる。浮動小数点ユニット525はさらに、浮動小
数点乗算ユニット575を含み、これには待合わせステ
ーション580が備えられる。最後に、浮動小数点ユニ
ット525はさらに、浮動小数点除算ユニット585を
含み、これにはその入力で待合わせステーション590
が備えられる。ロード/ストアユニット530もまた、
データ処理バス535上に存在し、待合わせステーショ
ン600を含む。
【0103】図3ないし図5に示されるように、各機能
ユニットへの主入力(すなわち機能ユニットと関連する
各待合わせステーションへの入力)は、以下の主データ
処理バス535を構成するバスによって与えられる、す
なわち 1) IDECODE210からの4つのOPCODE
バス(INSOPn(7:0)として示され、nは0な
いし3の整数である) 2) IDECODE210からの4つの命令タイプバ
ス(INSTYPn(7:0)として示され、nは0な
いし3の整数である) 3) IDECODE210からの4つの4ビット発行
ベクトルバス(XINSDISP(3:0)として示さ
れる) 4) AオペランドバスおよびBオペランドバスの4つ
の対(XRDnAB/XRDnBB(31:0)と示さ
れ、nは0ないし3の整数である) 5) 関連するA/Bタグバスの4つの対(TAGnA
B/TAGnBB(4:0)と示され、nは0ないし3
の整数である) 6) 3つの双方向結果オペランドバスを含む結果バス
265(XRES0B(31:0)、XRES1B(3
1:0)、XRES2B(31:0)として示される) 7) 2つの結果タグバス(XRESTAG0B/SR
ESTAG1B(2:0)として示される)および 8) 2つの結果状態バス(XRESSTAT0Bおよ
びXRESSTAT1B(2:0)と示される)であ
る。
【0104】1つ以上の待合わせステーションが上述の
機能ユニットの各々の前部に置かれる。待合わせステー
ションは、本質的には、機能ユニットによる実行を待ち
ながらそこで命令が待ち行列にされる先入れ先出し(F
IFO)バッファである。命令がオペランドの代わりに
タグを伴って発行されれば、または機能ユニットが停止
またはビジー状態であれば、命令は待合わせステーショ
ンで待ち行列にされ、後続の命令はその後で待ち行列に
される(特定の機能ユニット内の投入は全くの順番通り
であることに注目されたい)。待合わせステーションが
充満すれば、これを示す信号がIDECODEにアサー
トされる。これは、同じタイプの別の命令に出会えば、
発行を止める。
【0105】命令の発行は以下のように起こる。各待合
わせステーションは対応する命令タイプに関して命令T
YPEバスを(PH2で)観察する待合わせステーショ
ン論理を含む。待合わせステーションは、対応するop
コード、AおよびBオペランドならびにAおよびBオペ
ランドタグバスを、このような命令タイプに出会えば選
択する。関連する機能ユニットで実行する2つ以上の命
令が認められれば、プログラム順に関して先の命令が優
先される。しかしながら、対応する発行ビットがセット
されていることを認めるまで(PH1でXINSDIS
P(n))、命令は待合わせステーションに受入れられ
ない。
【0106】この時点で、必要とされるオペランドが利
用可能であり、かつ機能ユニットが何らかの理由のため
に停止されているわけでも、またはビジーであるわけで
もなく、さらに前の命令が待合わせステーションで待っ
ていなければ、命令は直ちに同じクロックサイクル内で
実行に移る。そうでなければ、命令は待合わせステーシ
ョンに置かれる。命令がオペランドの代わりにオペラン
ドタグを、伴って発行されていれば、待合わせステーシ
ョン論理は、オペランドタグを結果タグバス(XRES
TAG0BおよびXRESTAG1B)で現われる結果
タグと比較する。一致が認められれば、その結果が結果
バス群265の対応する結果バスから取入れられる。こ
の結果は次に、命令を投入するのを可能にすれば機能ユ
ニットに転送される。そうでなければ、結果はオペラン
ドとして待合わせステーションに置かれ、ここで命令を
完了するのを助け、対応するタグ有効ビットはクリアさ
れる。両方のオペランドが、汎用結果バスのいずれかま
たは両方から同時に転送され得ることに注目されたい。
【0107】結果バス265を形成する3つの結果バス
は、2つの汎用結果バスXRES0B(31:0)およ
びXRES1B(31:0)を含み、さらに分岐および
ストア専用の1つの結果バスXRES2B(31:0)
を含む。結果バスXRES2B(31:0)は分岐およ
びストア専用なので、これが処理する結果(たとえば分
岐PCアドレス等)は転送されない。機能ユニットは結
果バスXRES0B(31:0)およびXRES1B
(31:0)をモニタし、一方リオーダバッファ(R
B)240は3つの結果バスすべてをモニタする。
【0108】命令が待合わせステーションで待つ際に、
何らかの有効オペランドタグも同様に結果タグと比較さ
れ、同じような転送が行なわれる。機能ユニット間およ
び機能ユニット内での結果の転送がこの態様で行なわれ
る。待合わせステーションと関連して、このタグの付与
によって、従属性の適切なシーケンシングを維持しなが
ら、異なる機能ユニットで順序通りでない命令の実行を
可能にし、さらにオペランドハザードが無関係の後続の
命令の実行をブロックすることを防ぐ。命令タイプおよ
びA/BタグはPH2で利用可能であり、一方投入する
決定は後続のPH1で行なわれる。
【0109】待合わせステーションのオペランドは、こ
れらが送られた実際のオペランドデータでなければ、タ
グおよび有効ビットを有する。言い換えれば、命令が待
合わせステーションに発行され、かつ特定のオペランド
がまだ利用可能でなければ、そのオペランドに関連する
オペランドタグが実際のオペランドの代わりに待合わせ
ステーションに与えられる。有効ビットは各オペランド
タグと関連する。結果が機能ユニットで完了すると、結
果は他の機能ユニットおよびROB240に結合される
結果バスに与えられる。結果は待合わせステーションの
オペランドタグと比較されて、ヒットが起これば、タグ
有効ビットがクリアされて、結果バスからのオペランド
は、オペランドに対して指定された機能ユニットの位置
に転送される。言い換えれば、待合わせステーション内
の何らかのエントリに一致する結果タグ0および1にお
けるタグ比較が値をそのステーションに転送する。
【0110】どの命令源(待合わせステーションまたは
待合わせステーションに結合される4つの入来するバス
のうちの1つ)が局所的デコードの次の候補であるかを
定め、待合わせステーションの先頭にあるエントリに関
する待合わせステーション有効ビットおよびデコード/
優先命令タイプバスを調べることによってPH2で投入
が行なわれ、この際に待合わせステーションのエントリ
が優先する。待合わせステーションを2つ有する機能ユ
ニットでは、その2つの待合わせステーションは先入れ
先出し(FIFO)構成を形成し、待合わせステーショ
ンに発行される第1の命令がFIFOの先頭を形成し、
FIFOに発行される最後の命令がFIFOの末尾を形
成する。
【0111】機能ユニットによる局所的デコードとは、
タイプバスをモニタすることによって、機能ユニットが
まず、そのタイプの命令が発行されていることを定める
ということを意味する。一旦機能ユニットが、それが処
理すべき命令を識別すると、機能ユニットはopコード
バス上の対応するopコードを調べて、機能ユニットが
実行すべき精確な命令を判断する。
【0112】本発明のこの実施例では、実行時間は、特
定の命令タイプおよびその命令を実行する機能ユニット
に依存する。より具体的には、実行時間は、すべてのA
LU、シフタ、分岐動作およびキャッシュでヒットする
ロード/ストアの1サイクルから、浮動小数点、ロード
/ストアミスおよび特殊レジスタ動作のための数サイク
ルにまでわたる。特殊レジスタとは、再指定されない何
らかの汎用でないレジスタと規定される。
【0113】機能ユニットは以下のように結果バスに対
して調停する。結果バス2は、オペランドを戻さないス
トアのため、および計算されたターゲットアドレスを戻
す分岐のために用いられる。分岐には優先順位があるこ
とが認められる。汎用結果バス0および1は、ALU0
またはALU1のいずれかから、シフタユニット510
から、浮動小数点ユニット525からの結果とロードお
よび特殊レジスタアクセスとを扱う。
【0114】結果バス0(XRES0B(31:0)と
も示される)および結果バス1(XRES1B(31:
0)とも示される)へのアクセスを得ることに関する機
能ユニット間での優先順位は、図6に示される。図6の
表において、「DPの下位半分」という用語は、倍精度
数の下位半分を意味する。マイクロプロセッサ500
は、倍精度(DP)数を送るのに32ビットオペランド
バスを用いる。より具体的には、倍精度数がオペランド
バスを介して伝送されるとき、その数は2つの32ビッ
ト部分、すなわち上位32ビット部分と下位32ビット
部分とで伝送される。上位および下位部分は、一般に2
サイクルで2オペランドバスを介して伝送される。機能
ユニットによる特定の結果バスに対するアクセスのリク
エストの拒否は、その機能ユニットを停止させ、待合わ
せステーションフル状態としてデコードにされるために
戻り得る。
【0115】結果は、結果のタイプ(なし、通常または
例外、および命令固有のコード、すなわちデータキャッ
シュミス、アサートトラップおよび分岐誤予測)を示す
3ビット状態コード(RESULT STATUS)を
含む。一実施例では、結果はまた、そのユニットおよび
命令に依存して、32ビット結果オペランドおよび詳細
な実行または例外状態を含む。結果バス235は、結果
をROB240に戻すため、および結果を機能ユニット
の待合わせステーションに転送するために用いられる。
結果情報のすべてがROB240にストアされるが、機
能ユニットは結果状態コードおよび結果オペランドを見
るだけである。
【0116】ほとんどの機能ユニットは上述の態様で動
作する。しかしながら、特殊レジスタブロックセクショ
ン(SRBSEC)512およびロード/ストアセクシ
ョン(LSSEC)530は、いくぶん異なる。SRB
SEC機能ユニットは、頻繁には更新されずかつレジス
タ再指定によってサポートされない状態および制御レジ
スタ等のマシン状態情報を保持する。SRBSEC51
2の特殊レジスタへの、およびそこからの動きは、周り
の命令に関して常に直列化される。したがって、SRB
SECは、別個の機能ユニットでありながら、直列化の
ためにオペランドが常にレジスタファイル235から利
用可能であるので、待合わせステーションを必要としな
い。SRBSEC機能ユニットによって実行される命令
の例には、「スペシャルレジスタへ移動」MTSR、お
よび「スペシャルレジスタから移動」MFSR命令があ
る。直列化を必要とするこのような命令を実行する前
に、マイクロプロセッサ500は、この命令の前のすべ
ての推論状態を直列化するか、または実行する。アドバ
ンスト・マイクロ・ディバイシズ・インコーポレイテッ
ドによって製造されるAM29000マイクロプロセッ
サで用いられるのと同じ特殊レジスタブロックを、SR
BSEC512として用いてもよい。
【0117】ロード/ストアセクションLSSEC53
0は、他の機能ユニットと同じ態様で待合わせステーシ
ョンを用いる。ロード/ストアセクション530は、デ
ータキャッシュ245からのデータのロードおよびデー
タキャッシュ245におけるデータのストアを制御す
る。しかしながら、命令の実行に関して、これは最も複
雑な機能ユニットである。LSSECは、データキャッ
シュ(DCACHE)245およびメモリ管理ユニット
(MMU)247と密に結合する。マイクロプロセッサ
500は、データキャッシュ245または主メモリ25
5を変更する何らかの動作が未完了となり得ないように
設計される。さらに、このような変更は、周りの命令に
関してプログラム順に起こらなくてはならない。このこ
とは、すべてのストアおよびデータキャッシュでミスし
ているロードの実行がROB240内のリタイア論理2
42と協働しなくてはならないことを意味する。このこ
とは、対応するROBエントリにROBリタイア論理が
出会うまでこれらの動作が待ち行列にされるFIFOで
ある、アクセスバッファ605と呼ばれる機構を用いて
行なわれる。
【0118】データキャッシュ(DCACHE)245
として用いることができるデータキャッシュの1つ、お
よびロード/ストアセクション(LSSEC)530と
して用いることができる1つのロード/ストアセクショ
ンは、同時係属中であり本譲受人に譲受された「高性能
ロード/ストア機能ユニットおよびデータキャッシュ」
(“High Performance Load/Store Functional Unit An
d Data Cache”)と題される米国特許出願連続番号第1
46,376号に記載され、その開示はここに引用によ
って援用される。命令キャッシュおよびデータキャッシ
ュのアドレス指定に関するさらなる情報は、同時係属中
であり、本譲受人に譲受された「線形アドレス可能なマ
イクロプロセッサキャッシュ」(“Linearly Addressab
le Microprocessor Cache")と題される同時係属中の米
国特許出願連続番号第146,381号に記載され、そ
の開示はここに引用によって援用される。
【0119】アクセスバッファ605はLSSEC53
0内に位置される。一実施例において、アクセスバッフ
ァ605はミスしているロードまたはストア(ヒット/
ミス)の2−4ワードFIFOである。ヒットしている
ストアは、それが実行されるべき次のものとなるまで書
込まれない。しかしながら、アクセスまたはストアバッ
ファによって、この状態は一時記憶装置に保持されるこ
とが可能となり、これはROBがレジスタ参照を転送す
るのと類似した態様でデータ参照を転送することができ
る。アクセスバッファは最後に、アクセスバッファの内
容がプログラム順で次であるときにデータキャッシュ2
45(CACHE)に書込む。言い換えれば、アクセス
バッファまたはストアバッファは、他のロード/ストア
命令が処理され続けることが可能であるように1つまた
はそれ以上のロード/ストア命令をストアするFIFO
バッファである。たとえば、アクセスバッファ605
は、後続のロードがロード/ストアユニットLSSEC
530によって実行されている一方で、ストアを保持す
ることができる。
【0120】ストアバッファとしても知られるアクセス
バッファ、およびデータキャッシュと関連して用いられ
るロード/ストア機能ユニットは、同時継続中で本譲受
人に譲受された「高性能ロード/ストア機能ユニットお
よびデータキャッシュ」と題される同時係属中の特許出
願により詳細に述べられ、その開示をここに引用によっ
て援用する。
【0121】ROBリタイア論理242の機能は、どの
命令がROB240からレジスタファイル235へと格
納されるべきであるかを定めることである。ROBエン
トリのこの格納の基準は、エントリが有効かつ割当てら
れること、結果が機能ユニットから戻されていること、
およびエントリが誤予測または例外事象でマークされて
いないことである。
【0122】ストア動作は2つのオペランド、すなわち
メモリアドレスおよびデータを必要とする。ストアが投
入されると、これはLSSEC待合わせステーション6
00からアクセスバッファ605へと転送され、ストア
結果状態がROB240に戻される。ストアは、データ
がまだ利用可能でなくても投入され得るが、アドレスは
そこになくてはならない。この場合、アクセスバッファ
は待合わせステーションと類似した態様でタグを用い
て、結果バス235からストアデータを選択する。スト
アが投入される際、メモリ管理ユニット(MMU)24
7で高速変換バッファ(TLB)615のルックアップ
が行なわれ、データキャッシュがアクセスされてヒット
についてチェックする。
【0123】MMUからの物理アドレスおよび仮想アド
レスのページ部分は、データキャッシュからのステータ
ス情報とともにアクセスバッファに置かれる。言い換え
れば、キャッシュは物理的にアドレスされる。TLBミ
スが起こると、これは結果状態に反映され、適切なトラ
ップベクトルが結果バス2に送られ、この時点では他の
動作は行なわれない。(ロードに関するTLBルックア
ップも同じように行なわれるが、何らかのトラップベク
トルは結果バス1に進む。)トラップベクトルは例外で
ある。マイクロプロセッサ500はTLBトラップを取
込み、新しいページを物理メモリにロードして、TLB
を更新する。この動作には数百サイクルかかる可能性が
あるが、比較的頻繁には起こらない事象である。マイク
ロプロセッサ500はPCを止めて、マイクロプロセッ
サレジスタをストアし尽し、ベクトルを実行して、レジ
スタ状態を復元し、割込リターンを実行する。
【0124】ストアがアクセスバッファの先頭に達する
と(次いで空であればすぐに行なわれる)、ROB24
0が、対応するROBエントリが用済の段階に達したこ
とを示すLSRETIREと符号を付される信号をアサ
ートし、次いでキャッシュアクセスを進める。しかしな
がら、キャッシュが前のリフィルを完了させること、ま
たはコヒーレンシー動作を行なうことでビジー状態であ
れば、遅延され得る。一方、ROB240は動作を続
け、別のストア命令に出会うかもしれない。LSSEC
がそれを完了する準備ができる前にそのストア命令が用
済とされないようにするために、以下のようにハンドシ
ェイクが用いられる。LSSEC530はROB240
に、LSDONEをアサートすることによってLSSE
Cが動作を完了したときを示す信号を与える。ROB2
40は、前のストアが用済とされてからLSDONEを
認めていなければ、ストア(またはロード)を停止する
ことが認められる。
【0125】データキャッシュ245においてヒットし
ているロード動作は、ROB240と協働されなくても
よい。しかしながら、ミスはROB240と協働され
て、不必要なリフィルおよび誤予測された分岐を越えて
の無効な外部参照を避けなくてはならない。ロードが投
入されると、(キャッシュがビジー状態でなければ)キ
ャッシュアクセスがすぐに行なわれる。キャッシュにお
いてヒットがあれば、結果が通常状態コードとともに結
果バスを介してROBに戻される。ミスがあれば、ロー
ドはアクセスバッファ605に置かれ、ロード_ミス結
果コードが戻される。ROB240のリタイア論理24
2がこの条件に出会えば、これはLSRETIREをア
サートして、ロード_有効結果状態コードとともに結果
バスに置かれている所望のワードから、これが現われる
とすぐにリフィルが始まる(リフィルが終了するのを待
たない)。ROB240は、ストアの場合のようにLS
RETIREをアサートする際にロードを用済とできな
いことが認められる。その代わりに、ROB240はデ
ータが戻るのを待たなくてはならない。
【0126】ロードは、アクセスバッファにおいて待っ
ている、前の未完了のストア動作があっても処理され得
る。ストアに関して順序通りでなくロードを行なうのを
可能にする際に、マイクロプロセッサ500はロードが
(プログラム順に関して)前のストアによってこれから
変更される位置からは行なわれないことを確実にする。
このことは、ロードアドレスをアクセスバッファ605
内の何らかのストアアドレスと、キャッシュアクセスと
並列して、比較することによって行なわれる。どれも一
致しなければ、ロードは進められる。1つ一致するもの
があれば(2つ以上の場合は最も最近のエントリ)、ス
トアデータがアクセスバッファ605からキャッシュデ
ータの代わりに結果バス265に転送される。起こって
いるかもしれない何らかのキャッシュミスは無視される
(すなわちリフィルは起こらない)。ストアデータがま
だ存在しなければ、ロードはストアデータが到着するま
で停止される。さらに、これらの動作は、望ましいこと
にはメモリアクセスが不必要に並列性を損なうことを防
ぐ。
【0127】ここでさらにロード/ストアについて検討
する。1Kバイトおよび2Kバイトページサイズに関し
て、高速変換バッファ(TLB)のルックアップが、キ
ャッシュアクセスに先立って行なわれる。これはさらな
るサイクルのロード/ストア待ち時間を起こす。LSS
ECがロードまたはストアを「完了する」とき、これは
関連するキャッシュ動作が完了することを意味しないこ
とに注目されたい。そうではなく、ICACHEまたは
DCACHE、BIU、および外部でリフィル等の動作
がまだあるかもしれない。
【0128】アクセスバッファ転送は、部分ワードロー
ド/ストア動作のためには行なわれない。ワード−アド
レス一致が検出され、かつロードとストアとの間で何ら
かのオーバーラップがあれば、ロードはキャッシュミス
のように見えるようにされ、ストアの後に実行されるよ
うにアクセスバッファ605で待ち行列にされる(実際
にはキャッシュでヒットしているかもしれないし、して
いないかもしれない)。オーバーラップがなければ、ロ
ードはアドレス一致がなかったかのように進められる。
【0129】ロード/ストアマルチ命令は、直列化の態
様で行なわれる、すなわちロード/ストアマルチ命令が
実行されているとき、他のどの命令も並列して行なわれ
ないことが認められる。ロードまたはストア(ロード/
ストア)マルチ命令は、レジスタファイルへの、または
そこからのブロックの動きである。この命令は、所与の
アドレス、所与のレジスタ、およびカウントフィールド
を含む。ロード/ストアのマルチ命令の一例に、LOA
DM(C,A,B)があり、Cは行先レジスタ、Aはア
ドレスレジスタ、およびBは転送の数である。
【0130】ロードミスは必ずしもリフィルを起こさな
いことも認められる。その代わりに、ページはキャッシ
ュ不可能としてマークされるかもしれず、ロードがアク
セスバッファから満たされているかもしれない。
【0131】[III(D) 命令フロー−リオーダバ
ッファおよび命令リタイア]結果がROB240に戻さ
れると、これらは結果タグによって特定されるエントリ
に書込まれ、これはROBの先頭および末尾ポインタの
間の何らかの場所にある。ライトバック、ストアおよび
ロードミスの実行、トラップおよびPC0、PC1およ
びPC2の更新を制御するリタイア論理242は、プロ
グラム順に有効結果を伴うエントリを見る。
【0132】PC0、PC1およびPC2は、DEC、
EXECおよびWRITEBACK0,1の値を含むマ
ッピングレジスタである。信号DEC、EXECおよび
WRITEBACK0,1は、スカラAM29000パ
イプラインからの段階であるデコード、実行およびライ
トバックを指し、AMD2900は、アドバンスト・マ
イクロ・ディバイシズ・インコーポレイテッドから入手
可能なマイクロプロセッサである。これらの信号は、実
行の際にパイプラインを再始動させるのに用いられる。
遅延分岐のために2つ以上のPCが用いられる。PC
0、PC1およびPC2は、割込またはトラップの際に
用いられて、分岐誤予測または例外に出会うとマイクロ
プロセッサ500が戻り得る、DEC、EXECおよび
WRITEBACK0、1の古い値を保持する。PC
0、PC1およびPC2は、パイプラインを再始動させ
るために割込リターンの際に用いられ、リオーダバッフ
ァ240内のリタイア論理242内に含まれる。PC1
は現在のリタイアPCをマッピングする。
【0133】通常の結果を有するエントリに出会えば、
結果オペランド(もしあれば)がエントリにおいて特定
されたレジスタファイル(RF)235の位置に書込ま
れる。RF書込ポート(WR)は2つあるので、2つの
オペランドが同時にレジスタファイルに格納され得る。
ROB240は、さらに1つのストアおよび1つの分岐
を用済とすることができ、最大で4つの命令を1マイク
ロプロセッササイクルについて用済とできる。
【0134】CPSビットおよびFPSスティッキービ
ット等の他の状態は、この時点で更新され得る。CPS
は現在のプロセッサ状態を指し、CPSはプログラム状
態および条件コードレジスタを示す。FPSは浮動小数
点状態レジスタビットを指す。FPSは、浮動小数点機
能ユニット525のための状態/条件コードレジスタを
示す。FPSスティッキービットとは、セット条件によ
ってセットされ、クリア条件でクリアされないビットの
ことである。FPSスティッキービットは、浮動小数点
数の丸め制御のために用いられる。たとえば、マイクロ
プロセッサ500が値を減算するか、またはシフトすれ
ば、いくつかの最下位ビット(LSB)が仮数部からシ
フトされる。FPSスティッキービットは、この条件が
起こったという指示を与える。
【0135】その結果がまだ戻されていないROB24
0内のエントリは、結果が戻ってくるまでそれ以上の処
理を停止させる。そのエントリを越えるものは、たとえ
有効であっても用済とはされない。ストア結果に出会え
ば、ROB240は、実際にストアを行なって命令を用
済とするようにロード/ストアセクションにゴーアヘッ
ド指示を与える。ロードミス結果に出会えば、ROB2
40はロードを実行するようにゴーアヘッド指示を与え
る。ロードが完了すると、要求されたロードオペランド
はROB240にロードヒット状態とともに戻され、こ
れが命令を用済とすることを可能にし、そのオペランド
を待っている何らかの待合わせステーションによって認
められる。分岐結果に出会えば、ROB240はこれを
用いてPC1を更新する。
【0136】マイクロプロセッサのアーキテクチャ状態
は、プログラム内のリタイアPCの現在の状態である。
マイクロプロセッサの推論状態は、FETCHPCの現
在の値、デコーダおよびリオーダバッファ内のエントリ
のすべてである。これらは、ダイナミックに更新される
現在の命令の推論キューである。例外または誤予測の際
に、すべての推論状態はクリアされ得るが、アーキテク
チャ状態は、これがレジスタファイルの現在の状態なの
で、クリアされ得ない。
【0137】誤予測分岐遅延スロットを越える命令は、
誤予測が明らかとなる前に実行され得ることを先に述べ
た。この発生は、ROB240によって区別される。誤
予測が検出されると、いかなる未発行の命令もクリアさ
れ、フェッチャ257が再び指示される。どの機能ユニ
ットも誤予測を知らされない(しかしながら分岐ユニッ
ト520はその待合わせステーション550内の何らか
の有効エントリにおける「キャンセル」ビットをセット
し、そのためこれらの分岐は害を受けずに実行され、誤
予測を起こすことなくROB240に戻される)。
【0138】このような誤予測が起こると、ROB内の
対応するエントリは誤予測されたものとして割当てられ
る。後続のエントリが機能ユニットから転送されると
き、これらは完了されているが誤予測されたものとして
マークされる。リオーダバッファ240内のリタイア論
理242は、これらのエントリを無視して、割当から外
す。
【0139】同時に、発生/非発生および正確/不正確
な予測を示す分岐結果状態がROB240に戻される。
誤予測の結果は、ROBに、分岐エントリの後の2つ目
から(遅延スロットを考慮して)末尾ポインタまでのす
べてのエントリのキャンセルビットを直ちにセットさせ
る。この発生に続く第2のサイクルで、デコードがター
ゲット命令を発行し始め、これには通常通り末尾ポイン
タから始まってタグが割当てられる。キャンセルされた
エントリにROBリタイア論理242が出会えば、これ
らは破棄される。ロード/ストアユニット530は、R
OB240とロード/ストアセクションLSSEC53
0との間のLSCANCELラインを介して伝送される
LSCANCEL信号によってROBからゴーアヘッド
で、待っている何らかのキャンセルを知らされる。LS
CANCEL信号は、キャンセルされるべきアクセスバ
ッファ605内の何らかの未処理のストアまたはロード
ミスを示す。アクセスバッファ605はFIFOとして
動作して、次に古いストアはキャンセルされる命令であ
る。ロード/ストアセクションLSSEC530および
アクセスバッファ(ストアバッファ)605として用い
てもよいロード/ストアセクションおよびアクセスバッ
ファの1つに関してのさらなる詳細は、「高性能ロード
/ストア機能ユニットおよびデータキャッシュ」と題さ
れる同時係属中の米国特許出願連続番号第146,37
6号に記載され、その開示はここに引用によって援用さ
れる。
【0140】ある特定の命令の実行の際に例外が起これ
ば、どのグローバルアクションも要求されない。例外状
態は単に、ROB240に戻される結果状態に反映され
る。適切なトラップベクトル数が、一般に通常の結果オ
ペランドの代わりに戻される(これはRF更新が禁じら
れないときを除き、この場合にはROBはベクトル数を
発生する)。トラップベクトル数とは、様々な種類のベ
クトルのうちのどれが起こったか、および特定のトラッ
プの発生の際にどこに行くべきかを示す数である。トラ
ップの発生となる典型的な例は、0での除算、算術的オ
ーバーフロー、およびTLBページの欠如がある。RO
B240が命令を用済とする処理の際に例外状態に出会
えば、これは、ROB240からのすべてのエントリを
クリアし、すべての機能ユニットにEXCEPTION
信号をアサートしてこれら(およびIDECODE)を
クリアし、Vfビットについてトラップベクトルを発生
し、フェッチャ257に処理コードをトラップするよう
に再び指示を与えることからなるトラップ動作を始め
る。Vfビットは、トラップが外部フェッチとして(ベ
クトルテーブルからのロードとして)発生すべきか、ま
たは定数をベクトル数と連結させて内部的に発生される
べきかを示す。Vfビットは、アドバンスト・マイクロ
・ディバイシズ・インコーポレイテッドのAm2900
0マイクロプロセッサシリーズのアーキテクチャの特徴
である。
【0141】レジスタファイル235内にストアされた
データは、マイクロプロセッサの現在の実行状態を表わ
すことがわかる。しかしながら、ROB240にストア
されたデータは、マイクロプロセッサの予測実行状態を
表わす。命令が用済とされるべきとき、ROB240に
ストアされた対応する結果が、レジスタファイル235
に送られ、それから用済とされる。
【0142】[III(E) 命令フロータイミング]
命令フローのタイミングに関して、スーパースカラマイ
クロプロセッサ500の動作を説明するために、以下の
表2が与えられる。表2は、マイクロプロセッサ500
のパイプラインステージと、これらの各ステージの間に
起こる重要な事象とを示す。パイプラインの段階は、表
2の第1の列に挙げられる。
【0143】
【表2】
【0144】表2は、機能停止のない、マイクロプロセ
ッサ500における基本的な整数命令の流れにおいて各
相(各マイクロプロセッササイクルのPH1およびPH
2)で何が起こるかと分岐訂正タイミング(かっこ内)
を示す。
【0145】[III(F) メモリ管理ユニット、デ
ータキャッシュおよびバスインタフェースユニット]メ
モリ管理ユニット(MMU)247は、本質的には、ア
ドバンスト・マイクロ・ディバイシズ・インコーポレイ
テッドによって製造されるAM29050マイクロプロ
セッサのものと同じである。MMU247は、命令フェ
ッチおよびデータアクセスのために仮想アドレスを物理
アドレスに変換する。AM29050とマイクロプロセ
ッサ500との命令フェッチに関しての違いは、AM2
9050では、分岐先キャッシュBTCへの参照の際に
MMUが調べられるが、一方、マイクロプロセッサ50
0は分岐先キャッシュを用いず、BTC参照のためにM
MUを調べない。分岐先キャッシュは、分岐先のみのキ
ャッシュである。分岐先キャッシュは、アドバンスト・
マイクロ・ディバイシズ・インコーポレイテッドが製造
するAm29050マイクロプロセッサのスカラパイプ
ラインの一部を形成する。BTCは、1クロックサイク
ルにつき1度命令をフェッチする。
【0146】命令フェッチアドレス変換のためのMMU
247の必要をさらになくすために、ICACHE20
5は、キャッシュミスの際にICACHEが参照する1
エントリ高速変換バッファ(TLB)615を含む。T
LBは、1エントリTLBでヒットしない変換が必要な
ときにリフィルされる。したがって、TLB615は、
MMUからの必要に応じてリフィルされる。MMU24
7はICACHE205と密に結合されるわけではない
ので、これはリフィル時間を短縮し、MMUに対する負
荷を減じる。
【0147】データキャッシュ245は、物理アドレ
ス、2ウェイセットアソシアティブ8Kキャッシュとし
て構成される。この実施例では、4Kを下回るページサ
イズに関しては、アドレス変換がまず行なわれる。この
要件は、1Kおよび2Kページサイズについて当てはま
り、ヒットしているロードの待ち時間を2サイクルに増
大する。しかしながら、キャッシュインデックスにおい
て不確かな1ビットを有する4Kページサイズは、キャ
ッシュを2つの4Kアレイに分割して扱われ、これによ
って2つの可能なブロックへのアクセスが可能になる。
4ウェイ比較が、正しいものを選択するためにMMUか
らの2つの物理アドレスと2つのキャッシュタグとの間
で行なわれる。
【0148】データキャッシュ245は、コピーバック
/ライトスルーが混合された方法をとる。より具体的に
は、書込ミスはライトスルーとして行なわれ、割当はな
く、書込ヒットは、ロードによって前に割当てられたブ
ロックに対してのみ起こり、キャッシュコヒーレンシー
に依存してライトスルーを起こし得る。マイクロプロセ
ッサ500は、マルチプロセッサシステムおよびMOE
SI−モディファイド・オーンド・エクスクルーシブ・
シェアード・インバリッド(フューチャーバス)プロト
コルを用いるキャッシュ可能メモリの効率的なI/Oの
ためにデータキャッシュコヒーレンシーをサポートす
る。MOESIプロトコルは、特定のキャッシュブロッ
クの5つの状態のうちの1つを示す。図3ないし図5の
マイクロプロセッサ500がMOESIプロトコルを用
いるのに対して、後述の図10および11に示されるマ
イクロプロセッサは類似したMESIプロトコルを用い
る。
【0149】バスインタフェースユニット(BIU)2
60は、アドバンスト・マイクロ・ディバイシズ・イン
コーポレイテッドが製造するAMD29030マイクロ
プロセッサと同じ外部インタフェースを用いる。さら
に、BIU260は、アドレス、命令、およびデータの
ために単一の内部32ビットバス、すなわち内部アドレ
スデータ(IAD)バス250を用いる。
【0150】この特定の実施例では、外部メモリとも称
される主メモリ255は、I/Oとデータ/命令とのみ
を区別する単一の平らなスペースである。示される特定
の実施例では、メモリ255はリードオンリーメモリ
(ROM)を含まず、命令とデータとの区別を行なわな
い。他のタイプの外部メモリの構成を、主メモリ255
として用いてもよい。
【0151】図3ないし図5に示されるように、BIU
260、ICACHE205、DCACHE245、M
MU247およびSRBSEC512は、すべて32ビ
ットIADバス250によって結合される。IADバス
250は、キャッシュミスおよびコヒーレンシー動作の
際の外部アクセスのために、主にBIU260とキャッ
シュ(ICACHE205、DCACHE245)との
間の通信のために用いられる。IADバス250は、ア
ドレスとデータの両方を扱う。これはスタティックバス
であり、PH1の間はBIU260が駆動し、PH2の
間は他のすべてのユニットが駆動する。IADバス25
0に対するいかなるリクエストも、図7に示されるバス
調停ブロックによって与えられるバス調停および許可を
通らなくてはならない。スペースを節約するために、バ
ス調停ブロック700は、図3ないし図5のマイクロプ
ロセッサ500のブロック図には図示しない。
【0152】IADバスの調停は、調停動作の中で第1
の優先順位を得るバス観察(キャッシュコヒーレンシー
に関して)を含む。IADバスに対するリクエストは、
PH1の早くに行なわれ、PH1の非常に遅くに応答さ
れる。機能ユニットがPH1でIADバスを許可される
と、後続のPH2の間にアドレスをIADバスに送り、
BIUによるある動作(たとえば命令フェッチ、ロー
ド)をリクエストし得る。
【0153】IADバス250は、外部バスおよびマイ
クロプロセッサ500内のすべての主要なアレイを互い
に連結する、比較的低周波数のアドレス、データおよび
制御バスである。IADバス250は、マッピングアレ
イへの特殊レジスタ更新、MMU変換、キャッシュリフ
ィル、バス観察等の比較的低周波数の動作の転送を与え
る。本発明の一実施例では、IADバス250は、それ
にアドレスおよびデータがマルチプレクスされる32ビ
ットを含む。IADバス250はまた、12の制御ライ
ン、すなわちICACHE、DCACHE、TLB、S
RBSEC、LSSECおよびBIUの各ブロックにつ
いての、それに結合される読出制御ラインおよび書込制
御ラインを含む。
【0154】図7に示されるIAD調停ブロック700
は、どの構成要素(ICACHE205、BIU26
0、BRNSEC520、DCACHE245、SRB
SEC512またはMMU247)がある特定の時間に
IADバス250に対してアクセスを許可されるかを決
定するために、リクエスト/許可プロトコルを用いる。
BIU260を介して外部メモリ255が、バス観察の
目的のために最高の優先順位を許可される。バス観察
は、マイクロプロセッサ500のためのデータ一致プロ
トコルの一部である。マイクロプロセッサ500は、デ
ータキャッシュ内に局所的に保持される変更されたデー
タを含み得るので、このようなデータは、メモリへの書
込が起こるときに更新される。マイクロプロセッサ50
0はまた、データキャッシュ内に局所的に保持される変
更されたブロックへの読出が起こると、変更されたデー
タを与える。バス観察を備えたコピーバック機構が、マ
イクロプロセッサ500のキャッシュ動作において用い
られる。
【0155】図7に示されるように、IAD調停ブロッ
ク700とIACHE205、BIU260、BRNS
EC520、DCACHE245、SRBSEC512
またはMMU247の各々との間に、それぞれのリクエ
ストラインが結合される。これらのリクエストラインの
各々は制御論理705に結合され、その出力はドライバ
710に結合される。IAD調停ブロック700は、I
CACHE205、BIU260、BRNSEC52
0、DCACHE245、SRBSEC512またはM
MU247のためのそれぞれの許可ラインを含む。特定
の構成要素がIADバス250へのアクセスを求める
と、その構成要素はIAD調停ブロック700と制御7
05とにリクエスト信号を送る。たとえば、BIUがメ
モリアクセスを行なうためにIADバス250へのアク
セスを得たいと仮定する。この場合、BIU260は、
IAD調停ブロック700および制御705にIADバ
スアクセスリクエストを送る。IAD調停ブロック70
0は、IADバス250に対するアクセスのリクエスト
が同時に複数存在するとき、リクエストの優先順位を決
定する。調停ブロック700は、優先順位の方式に従っ
てそれがIADバスへのアクセスを許可されるべきだと
決定した特定の装置の許可ラインに許可を投入する。こ
の例では、許可信号はBIU許可ラインに投入され、B
IU260はIADバス250へのアクセスを進める。
【0156】制御回路705の出力はIADバス250
に結合される。以下の構成要素ICACHE205、B
IU260、BRNSEC520、SRBSEC51
2、DCACHE245およびMMU247の各々に
は、このような構成要素がIADバス250を駆動する
のを可能にするドライバ回路710が備えられる。これ
らの構成要素の各々にはさらに、これらの構成要素がI
ADバス250からの値をラッチするのを可能にするラ
ッチ715が備えられる。制御回路705は、IADバ
スのためのリクエスト許可プロトコルを与える。機能ユ
ニットは局所的に、IADバスへのアクセスが求められ
ていることを認め、調停ブロック700にリクエストを
送る。調停ブロック700は最も優先順位の高いリクエ
ストを受取り、それにしたがってアクセスを許可する。
ラッチ715は、そのブロックに転送が起こっていれ
ば、リクエストされたデータの読出を示す。ドライバ7
10は、局所的に利用可能な値の駆動を示し、別のブロ
ックがそれを読出す他の何らかの位置を駆動する。IA
Dバス250へのアクセスを得るためにこのバス調停を
通るとある待ち時間が加わるが、それでも許容可能な性
能を与えることが見いだされた。マイクロプロセッサ5
00にIADバス250を設けることは、IADバスに
接続される上述のセクションすべての間に専用の経路を
設けることよりもコスト効率がはるかに良い。
【0157】図8は、マイクロプロセッサ500のパイ
プラインの複数の段階を通してのその選択された信号の
状態を示すタイミング図である。図8は、逐次的処理の
ためのこのようなパイプラインを示す。対照的に、図9
のタイミング図は、マイクロプロセッサ500の同様の
タイミング図ではあるが、図9のタイミング図は分岐誤
予測および回復が起こる場合のものである。
【0158】より具体的には、図8および図9は、フェ
ッチ、デコード、実行、結果/ROB(結果転送−結果
がROBに転送される)、用尽/レジスタファイル(ラ
イトバック−オペランドがROBからレジスタファイル
に格納される)の5つの実効パイプライン段階を通して
のマイクロプロセッサ500の動作を示す。マイクロプ
ロセッサパイプラインの5段階は、これらのタイミング
図の上部に横方向に挙げられる。これらのタイミング図
を構成する信号は、図の左に縦方向に挙げられ、以下の
とおりである。Ph1信号は、マイクロプロセッサ50
0のクロック信号である。FPC(31:0)はフェッ
チPCバス(FPC)である。IR0−3(31:0)
は命令バスを表わす。タイミング図はまた、ROB内の
特定のデコード命令が必要とする特定のオペランドを示
すソースA/Bポインタを示す。タイミング図はまた、
レジスタファイル/ROBアクセスを示すREGF/R
OBアクセスを含む。Issue instr/dest tags 信号は、
命令/行先タグの投入を示す。A/B read operand buses
信号は、AおよびBオペランドバスを介してのAおよび
Bオペランドの転送を示す。Funct unit exec.信号は、
機能ユニットでの投入された命令の実行を示す。Result
bus arb信号は、結果バスに対する調停を示す。Result
bus forward信号は、機能ユニットによって結果が発生
された後の果バスを介しての結果の転送を示す。ROB wr
ite result信号は、結果がROBに書込まれることを示
す。ROB tag forward 信号は、ROBから機能ユニット
へのオペランドタグの転送を示す。REGF write/retire
信号は、ROBからレジスタファイルへの結果の格納を
示す。PC(31:0)信号は、命令がもう推論的なも
のではないとして用済とされると必ず更新されるプログ
ラムカウンタ(PC)を示す。
【0159】図8のタイミング図では、パイプラインは
逐次的な命令ストリームの実行に関して示される。この
例では、予測実行経路が実際にとられ、キャッシュから
直接利用可能である。簡単に言えば、フェッチパイプラ
イン段階において、命令はマイクロプロセッサによる処
理のためにキャッシュからフェッチされる。命令はデコ
ードパイプライン段階でデコードされて、実行パイプラ
イン段階で実行される。ソースオペランドバスおよび結
果バスは、整数のサイズに対応する32ビットの幅であ
ることがわかる。命令バスオペランドバスが倍精度浮動
小数点演算のために64ビット値を駆動するには2サイ
クルが必要である。
【0160】結果パイプライン段階では、オペランド値
が、結果を発生した機能ユニットから実行のために他の
機能ユニットに直接転送される。結果段階のクロック相
PH1において、推論命令の位置に、何らかの状態とと
もに行先結果が書込まれる。言い換えれば、機能ユニッ
トによって発生された結果はリオーダバッファ内のエン
トリに置かれ、このエントリは、割当てられているとと
もに有効であるという指示を与えられる。この態様で、
リオーダバッファは、ここでは、要求されたオペランド
に関してオペランドタグではなくオペランドデータを直
接転送することができる。結果パイプライン段階のクロ
ック相PH2において、新しく割当てられたタグが、タ
グがそのソースオペランドの1つであることを必要とす
る後続の命令によって検出される。これは図8のタイミ
ング図において、図8の矢印に示されるようにソースA
/BオペランドバスへのROBタグ転送を介した結果
「c」の直接転送で示される。図8において、「a」お
よび「b」は結果「c」をもたらすオペランドであり、
「c」および「d」は結果「e」をもたらすオペランド
であることがわかる。
【0161】パイプラインの最後の段階である用尽パイ
プライン段階では、リアルプログラムカウンタ(PC)
またはリタイアPCが保持される。用尽パイプライン段
階のPH1クロック相において、動作の結果はリオーダ
バッファからレジスタファイルに書込まれ、リタイアP
Cはこのライトバックを反映するように更新される。言
い換えれば、リタイアPCは、もう推論的なものではな
いとしてレジスタファイルに格納されたばかりの命令を
含むように更新される。この命令のためのエントリまた
はリオーダバッファ内の結果は割当から外される。エン
トリが割当から外されるので、レジスタ「c」の後続の
参照は、リオーダバッファからの推論的読出ではなく、
レジスタファイルからの読出となる。
【0162】図9は、図8のタイミング図と同じ5パイ
プライン段階を示すが、図9のタイミング図は、分岐誤
予測が起こるときのマイクロプロセッサ500の動作を
示す。XFPCは、FPCバス信号の反転を示す。
【0163】IV.スーパースカラマイクロプロセッサ
の代替実施例 上述のスーパースカラマイクロプロセッサの実施例は、
命令opコードがすべて同じサイズであるRISCプロ
グラムを処理するのに最も有利に用いられるが、マイク
ロプロセッサ800としてこれから説明するマイクロプ
ロセッサの実施例は、opコードのサイズが可変である
命令の処理が可能である。たとえば、マイクロプロセッ
サ800は、可変長opコードを用いるよく知られたイ
ンテル(Intel )(登録商標)命令セットによって用い
られる、いわゆるX86命令を処理することができる。
マイクロプロセッサ800は、上述のマイクロプロセッ
サ500のRISCコアに類似したRISCコアを用い
る。「RISCコア」という用語は、マイクロプロセッ
サ500の機能ユニット、リオーダバッファ、レジスタ
ファイルおよび命令デコーダを含む、本質的にRISC
(縮小命令セットコンピュータ)のアーキテクチャであ
るマイクロプロセッサ500の中核を指す。
【0164】マイクロプロセッサ800のアーキテクチ
ャは、インテルX86命令セットに見られるようないわ
ゆるCISC(完全命令セットコンピュータ)命令を取
込み、これらの命令をRISC類似命令(ROP)に変
換することができ、これらがRISCコアによって処理
される。この変換プロセスは、図10および11に示さ
れるマイクロプロセッサ800のデコーダ805で起こ
る。デコーダ805はCISC命令をデコードし、CI
SC命令をROPに変換し、ROPを実行のために機能
ユニットに発行する。デコーダ805の動作および構造
についてのさらなる詳細は、本譲受人に譲受された「ス
ーパースカラ命令デコーダ」(“Superscalar Instruci
on Decoder”)と題される同時係属中の米国特許出願連
続番号第146,383号から見いだされ、その開示は
ここに引用によって援用される。
【0165】マイクロプロセッサがそのRISCコアに
1サイクルにつき多数の命令を供給する能力は、このス
ーパースカラマイクロプロセッサによって提供される著
しい性能の向上の理由の1つである。命令キャッシュ
(ICACHE)810は、バイトのキューまたはバイ
トキュー(バイトQ)815としてこの命令供給を行な
う、マイクロプロセッサ800の構成要素である。本発
明のこの特定の実施例では、命令キャッシュ810は1
6Kバイト実効4ウェイセットアソシアティブ線形アド
レス命令キャッシュである。
【0166】図10および11に示されるように、命令
キャッシュ810のバイトQ815は、命令デコーダ8
05に供給される。命令デコーダ805は、それに与え
られる各命令を1つ以上のROPにマッピングする。デ
コーダ805のROP発行ウィンドウ820は、ICA
CHE810からの命令がそれにマッピングされ得る4
つの発行位置を含む。4つの発行位置は、D0、D1、
D2、およびD3として示される。第1の例では、デコ
ーダ805にバイトQ815によって与えられる命令
は、2つのROP発行位置にマッピングされ得る命令で
あると仮定する。この場合、この第1の命令がデコーダ
805に与えられると、デコーダ805は命令を発行位
置D0に与えられる第1のROPと、発行位置D1に与
えられる第2のROPとにマッピングする。後続の第2
の命令が3つのROP位置にマッピング可能であると仮
定する。この第2の命令がデコーダ805にバイトQ8
15によって与えられると、命令は発行位置D2に与え
られる第3のROPと、発行位置D3に与えられる第4
のROPとにマッピングされる。発行位置D0ないしD
3にあるROPは機能ユニットに発行される。第2の命
令がマッピングされる、残っている第3のROPは、こ
のようなROPが発行され得る前に次の発行ウィンドウ
が処理されるのを待たなくてはならないことがわかる。
【0167】命令キャッシュ810がどの特定のバイト
をバイトQ815に送るかに関する情報は、命令キャッ
シュ810の入力である分岐予測ブロック825に含ま
れる。分岐予測ブロック825は、ブロック単位で次に
予測された分岐位置を示す次ブロックアレイである。分
岐予測機能ユニット835は、図3ないし図5に示され
るマイクロプロセッサ500のBRNSEC520と類
似した態様で、分岐を実行する。命令キャッシュ810
にはまた、外部メモリからリクエストされた命令キャッ
シュミスをフェッチするプリフェッチャブロック830
が備えられる。
【0168】マイクロプロセッサ800は、デコーダ8
05の4つのROP位置がそれに投入され得る4つの整
数機能ユニット、すなわち分岐機能ユニット835、A
LU0/シフタ機能ユニット840、ALU1機能ユニ
ット845、および特殊レジスタ機能ユニット850を
含む。分岐機能ユニット835は、1クロックサイクル
につき1つの新しいROPが分岐機能ユニット835に
よって受入れられるように、1サイクルの待ち時間を有
する。分岐ユニット835は2エントリ待合わせステー
ション835Rを含む。本明細書の目的のため、2エン
トリを含む待合わせステーションは、2つの待合わせス
テーションと同じであると考えられる。分岐機能ユニッ
ト835は、すべてのX86分岐、コールおよびリター
ン命令を扱う。これはまた条件付分岐ルーチンを扱う。
【0169】ALU0/シフタ機能ユニット840は、
1サイクルの待ち時間を示す。1クロックサイクルにつ
き1つの新しいROPがユニット840に受入れられ
る。ALU0/シフタ機能ユニット840は、2つまで
の推論ROPを保持する2エントリ待合わせステーショ
ン840Rを含む。すべてのX86算術および論理計算
は、この機能ユニットまたはその代わりに他方の算術論
理装置ALU1 845に渡る。さらに、シフトローテ
ートまたはファインドファーストワンのような命令は、
ALU0/シフタ機能ユニット840に与えられる。
【0170】ALU1機能ユニット845もまた、1サ
イクルの待ち時間を示す。1クロックサイクルにつき1
の新しいROPがALU1機能ユニット845によって
受入れられることがわかる。ALU1機能ユニットは、
2つまでの推論ROPを保持する2エントリ待合わせス
テーション845Rを含む。すべてのX86算術および
論理計算は、この機能ユニットかまたは他方の算術論理
装置ALU0に渡る。ALU0およびALU1は、1サ
イクルにつき2つまでの整数結果演算を計算することを
可能にする。
【0171】特殊レジスタ機能ユニット850は、X8
6レジスタファイル855の外にある内部制御、ステー
タスおよびマッピング状態を扱うための特殊ブロックで
ある。本発明の一実施例では、特殊レジスタ機能ユニッ
ト850は、ROPが特殊レジスタ機能ユニット850
に投入されるときに未処理である推論状態がないので、
待合わせステーションを持たない。特殊レジスタブロッ
ク850は、その構造および機能の点で、上述の特殊レ
ジスタブロック512と類似している。
【0172】ロード/ストア機能ユニット860および
浮動小数点機能ユニット865は、デコーダ805のR
OP発行ウィンドウ820に結合される。ロード/スト
ア機能ユニット860は、複数エントリ待合わせステー
ション860Rを含む。浮動小数点機能ユニット865
は2つの待合わせステーション865Rを含む。データ
キャッシュ870が、データのストアおよびそのための
検索を与えるために、ロード/ストア機能ユニット86
0に結合される。浮動小数点機能ユニット865は、4
1ビット整数/浮動小数点演算混在バス875および結
果バス880に連結される。より詳細には、オペランド
バス875は、41ビット幅を示す8つの読出オペラン
ドバスを含む。結果バス880は、41ビット幅を示す
5つの結果バスを含む。浮動小数点ユニットの整数/浮
動小数点混在オペランドおよび結果バスへの連結によっ
て、推論整数および浮動小数点ROPの両方のために、
1つのレジスタファイル855および1つのリオーダバ
ッファ885を用いることが可能になる。2つのROP
は80ビット拡張精度演算を形成し、これは浮動小数点
待合わせステーション865Rから浮動小数点機能86
5内の80ビット浮動小数点コアに入力される。
【0173】浮動小数点機能ユニット865の80ビッ
ト浮動小数点コアは、浮動小数点加算器、浮動小数点乗
算器、および浮動小数点除算/平方根機能ユニットを含
む。浮動小数点ユニット865内の浮動小数点加算器機
能ユニットは、2サイクルの待ち時間を示す。浮動小数
点加算器は、80ビットの拡張結果を計算し、これが転
送される。浮動小数点乗算器は、拡張精度乗算演算のた
めに6サイクルの待ち時間を示す。32X32乗算器
が、単精度乗算演算のために用いられる。浮動小数点機
能ユニット865内の32X32乗算器は、拡張精度を
必要とする64ビット仮数演算のためにマルチサイクル
化される。浮動小数点除算/平方根機能ユニットは、6
4ビット仮数を2ビット/クロックで計算するために基
数−4対話型除算を用いる。
【0174】A/Bオペランドバスのバス幅が41ビッ
トであるこの実施例では、整数ユニットに延びるA/B
オペランドバスに関して、32ビットがオペランド専用
であり、残りの9ビットが制御情報専用であることが認
められる。A/Bオペランドバスのバス幅が41ビット
ではなく、32ビットまたは他のサイズである、本発明
の他の実施例も企図されることに注目されたい。このよ
うな32ビットオペランドバス幅の構成では、オペラン
ドバスから分離される制御ラインが、制御情報の伝送の
ために用いられる。
【0175】ロードストア機能ユニット860は、4エ
ントリ待合わせステーション860Rを含む。ロードス
トア機能ユニット860は、2つのロードまたはストア
動作が1サイクルについて投入されることを可能にす
る。ロードストアセクションはまた、線形アドレスを計
算し、メモリのリクエストされたセグメントへのアクセ
ス権をチェックする。データキャッシュ870内のヒッ
ト/ミスのチェックに関してのロードまたはストア動作
の待ち時間は1サイクルである。2つまでのロード動作
が、同時にデータキャッシュ870にアクセスし、その
動作を結果バス880に送ることができる。ロードスト
アセクション860は、整数および浮動小数点ロードお
よびストア動作の両方を扱う。
【0176】図10および11に示されるように、マイ
クロプロセッサ800は、リオーダバッファ885に結
合されるレジスタファイル855を含む。レジスタファ
イル855およびリオーダバッファ885の両方が、オ
ペランド振分回路890を介してオペランドバス875
に結合される。レジスタファイル855、リオーダバッ
ファ885およびオペランド振分回路890は協働し
て、オペランドを機能ユニットに与える。結果が機能ユ
ニットから得られると、これらの結果はリオーダバッフ
ァ885に送られ、その中のエントリとしてストアされ
る。
【0177】より詳細には、レジスタファイル855お
よびリオーダバッファ885は、プログラム実行の間の
オペランドのためのストアを与える。レジスタファイル
855は、整数および浮動小数点命令の両方のためのマ
ッピングされたX86レジスタを含む。レジスタファイ
ルは、中間計算を保持するための、ならびに整数および
浮動小数点の一時レジスタを含む。本発明のこの特定の
実施例では、レジスタファイル855内のすべてのレジ
スタは、8つの読出および4つの書込ラッチとして実現
される。このように設けられた4つの書込ポートによっ
て、1クロックについて2つまでのレジスタファイル行
先が書込まれることを可能にする。これは、1ポートに
ついて1つの整数値であるか、またはレジスタファイル
に浮動小数点結果が書込まれている場合には、1ポート
につき浮動小数点値の半分であってもよい。8つの読出
ポートによって、2つのソース読出動作を伴う4つのR
OPの各々が、1クロックサイクルについて投入される
ことが可能になる。
【0178】リオーダバッファ885は、16までの推
論ROPのキューを保持する、16エントリ環状FIF
Oとして構成される。リオーダバッファ885はしたが
って、16のエントリを割当てることができ、その各々
が整数結果または浮動小数点結果の半分を含むことがで
きる。リオーダバッファ885は、1クロックサイクル
につき4つのROPを割当てることができ、1クロック
サイクルにつき5までのROPを確立し、1クロックサ
イクルにつき4つまでのROPをレジスタファイル85
5に格納することができる。マイクロプロセッサ800
の現在の推論状態は、必要に応じて後続の転送のために
リオーダバッファ885内に保持される。リオーダバッ
ファ885はまた、各エントリについて各ROPの相対
順序を示す状態を維持する。リオーダバッファ885は
また、割込またはトラップルーチンによる処理のために
ミスしている分岐および例外をマークする。
【0179】リオーダバッファ885は、8つのオペラ
ンドでそれぞれ8つのオペランドバス875を駆動でき
る。リオーダバッファ885は、5つの結果バス880
を介して1サイクルにつき5つまでの結果を受取ること
ができる。オペランドバスは8つの41ビット整数/浮
動小数点共通バスであることが認められる。8つのオペ
ランドバスは、デコーダ805のROP発行ウィンドウ
820内の4つのROP発行位置に対応する。4つのR
OP発行位置の各々は、ソースAオペランドおよびソー
スBオペランドを有することができる。このように形成
される4つのAおよびB読出オペランド対の各々は、R
OP発行ウィンドウ820内の固定ROPおよびソース
読出位置専用である。
【0180】レジスタファイル855およびリオーダバ
ッファ885は、読出オペランドバス875を駆動する
マイクロプロセッサ800内の装置である。デコードさ
れたROPに関して推論の行先がなければ、すなわちR
OPによってリクエストされたオペランドがリオーダバ
ッファになければ、レジスタファイルがそのオペランド
を供給する。しかしながら、推論の行先が存在すれば、
すなわちデコードされたROPによってリクエストされ
たオペランドがリオーダバッファ内にあれば、そのオペ
ランドのためのリオーダバッファ内の最も新しいエント
リが、対応するレジスタの代わりに機能ユニットに送ら
れる。このリオーダバッファ結果値は、これがもしリオ
ーダバッファ内に存在すれば推論結果であるか、または
機能ユニット内でまだ完了されていない推論の行先に関
するリオーダバッファタグでもあり得る。
【0181】5つの結果バス880は41ビットバスで
ある。読出オペランドおよび結果バスは、すべての整数
機能ユニットの入力および出力であることがわかる。こ
れらの同じ読出オペランドおよび結果バスはまた、浮動
小数点機能ユニット865の浮動小数点待合わせステー
ション865Rの入力および出力である。浮動小数点待
合わせステーション865Rは、41ビットオペランド
および結果バスを、必要であればその構成する専用機能
ユニットに送る80ビット拡張精度バスに変換する。
【0182】マイクロプロセッサ800の整数および浮
動小数点機能ユニットには、これらのユニットの待合わ
せステーションを介してROPの局所バッファ処理が与
えられる。これらの機能ユニットのほとんどで、局所バ
ッファ処理は、FIFOとして構成される2エントリ待
合わせステーションの形をとる。このような待合わせス
テーションの目的は、デコーダ805の発行論理が、機
能ユニットに推論ROPを、このような推論ROPのソ
ースオペランドが現在利用可能であるかどうかに関わら
ず、送ることを可能にすることである。本発明のこの実
施例では、したがって、長い計算またはロードが完了す
るのを待つことなく、多数の推論ROP(16まで)が
投入され得る。この態様で、はるかに高い命令レベルの
並列性が与えられ、マイクロプロセッサ800は、その
ピーク性能に近く動作することが可能になる。
【0183】待合わせステーションの各エントリは、2
つのソースオペランドまたはタグと、各エントリに関連
するopコードおよび行先に関しての情報を保持するこ
とができる。待合わせステーションはまた、リオーダバ
ッファが未処理であるとマークしたソースオペランド結
果(リオーダバッファがオペランド自体ではなくオペラ
ンドタグを与えることによってそれについてマークした
オペランド)を、このような結果を待っている他の機能
ユニットに直接送ることができる。本発明のこの特定の
実施例では、機能ユニットの待合わせステーションは、
典型的には1クロックサイクルにつき新しいエントリを
1つ受入れ、1サイクルにつき1つの新しいエントリを
機能ユニットに送ることができる。
【0184】これに対する例外は、その待合わせステー
ションから1クロックサイクルにつき2つのエントリを
受入れ、かつ用済とすることができるロード/ストアセ
クション860である。ロード/ストアセクション86
0はまた、4つのエントリのより深い待合わせステーシ
ョンFIFOを有する。
【0185】すべての待合わせステーションのエントリ
は、例外が起こるようなことがあれば、1クロックサイ
クル以内に割当から外されることができる。分岐誤予測
が起こると、中間結果が機能ユニットから流し出され、
リオーダバッファからの割当から外される。
【0186】マイクロプロセッサ800は、プリフェッ
チユニット830を介して命令キャッシュ810に、お
よびバスインタフェースユニット900に結合される内
部アドレスデータバス895を含む。バスインタフェー
スユニット900は、主メモリまたは外部メモリ(図示
せず)に結合され、そのためマイクロプロセッサ800
には外部メモリアクセスが与えられる。IADバス89
5はまた、図10および11に示されるように、ロード
/ストア機能ユニット860に結合される。
【0187】データキャッシュ870は、ロード/スト
アユニット860に結合される。本発明のある特定的な
実施例では、データキャッシュ870は、8Kバイト、
線形アドレス、2ウェイセットアソシアティブ、デュア
ルアクセスキャッシュである。アドレスおよびデータラ
インは、図示されるようにデータキャッシュ870をロ
ード/ストア機能ユニット860に結合する。より具体
的には、データキャッシュ870は、キャッシュ870
とロード/ストアユニット860との間の2つの組のア
ドレスおよびデータ経路を含み、ロード/ストア機能ユ
ニット860からの2つの同時アクセスを可能にする。
これらの2つのアクセスは、16バイトデータキャッシ
ュラインサイズに整列される、8ないし32ビットロー
ドまたはストアアクセスであってもよい。データキャッ
シュ870は、16バイトラインまたはブロックに構成
される。この特定的な実施例では、データキャッシュ8
70は線形にアドレスされるか、またはセグメントベー
スのアドレスからアクセスされ、ページテーブルベース
の物理アドレスではない。データキャッシュ870は4
つのバンクを含み、これらは、データキャッシュ内の1
つのラインが4つのバンクの各々における4つのバイト
を有するように構成される。したがって、2つのアクセ
スのビット[3:2]の線形アドレスが同じでないかぎ
り、2つのアクセスは同時にキャッシュ870内のデー
タアレイにアクセスすることができる。
【0188】データキャッシュ870は、2ウェイアソ
シアティブである。これは、クロックの相PH1におい
て2つの線形アドレスをとり、その4つのバンクにアク
セスする。その結果としてのロード動作は、後続のクロ
ック相PH2で完了し、結果バスのうちの1つを駆動す
ることができる。機能ユニットによる結果バスのリクエ
ストは、結果をライトバックしようとする他の機能ユニ
ットからのリクエストと調停される。
【0189】命令キャッシュ810およびデータキャッ
シュ870は、それぞれの命令キャッシュ線形タグアレ
イおよびデータキャッシュ線形タグアレイを含み、これ
らのキャッシュにストアされたデータエントリおよび命
令のアドレスに対応する。図10および11に示される
ように、マイクロプロセッサ800はまた、命令キャッ
シュ810およびデータキャッシュ870内のそれぞれ
命令およびデータの物理アドレスを追跡するためにIA
Dバス895に結合される物理タグI/Dブロック91
0を含む。より具体的には、物理タグI/Dブロック9
10は、これらのキャッシュの物理アドレスを維持する
物理命令/データタグアレイを含む。ブロック910の
物理命令タグアレイは、命令キャッシュ810の対応す
る線形命令タグアレイに関する構成を反映する。同様
に、ブロック910内の物理データタグアレイの構成
は、命令キャッシュ810内の対応する線形データタグ
アレイの構成を反映する。
【0190】物理I/Dタグは、命令キャッシュタグで
あるかデータキャッシュタグであるかに依存して、有
効、共有、および変更ビットを有する。データキャッシ
ュ物理タグがセットされた変更ビットを有する場合に
は、これはリクエストされたデータエレメントが、線形
データキャッシュ内の等価な位置にあることを示す。マ
イクロプロセッサ800は外部メモリへのバックオフサ
イクルを開始し、リクエストされた変更ブロックを、リ
クエストしている装置がそれを後で見ることができるメ
モリに書込む。
【0191】高速変換バッファ(TLB915)が、図
示のようにIADバス895と物理タグI/Dブロック
910との間に結合される。TLB915は、128の
線形−物理ページ変換アドレスおよび128までの4K
バイトページのためのページ権をストアする。この高速
変換バッファアレイは、ランダムな置換えを有する4ウ
ェイセットアソシアティブ構造として構成される。TL
B915は、X86アーキテクチャのために規定される
線形−物理アドレス変換機構を扱う。この機構は、最も
最近の線形−物理アドレス変換のキャッシュを用いて、
有効な変換のために外部ページテーブルを探すのを防
ぐ。
【0192】バスインタフェースユニット900は、I
ADバス895をメモリ等の外部装置にインタフェース
させる。IADバス895は、マイクロプロセッサ80
0の様々な構成要素を接続するのに用いられるグローバ
ル64ビット共有アドレス/データ/制御バスである。
IADバス895は、キャッシュブロックリフィル、ラ
イトアウト変更ブロックのため、ならびに特殊レジスタ
ユニット850、ロード/ストア機能ユニット860、
データキャッシュ870、命令キャッシュ810、物理
I/Dタグブロック910、高速変換バッファ915、
およびバスインタフェースユニット900等の機能ブロ
ックにデータおよび制御情報を渡すために用いられる。
【0193】V.代替実施例の動作概説 CISCプログラムが実行されるとき、CISCプログ
ラムの命令およびデータが、これらの命令およびデータ
をストアするのに用いられた何らかの記憶媒体から主メ
モリにロードされる。一旦、バスインタフェースユニッ
ト900に結合される主メモリにプログラムがロードさ
れると、命令はプログラム順にデコーダ805に、機能
ユニットによる発行および処理のためにフェッチされ
る。より具体的には、デコーダ805によって1度に4
つの命令がデコードされる。命令は、主メモリからバス
インタフェースユニット900に、IADバス895を
介して、プリフェッチユニット830を通り、命令キャ
ッシュ810に、そしてデコーダ805に流れる。命令
キャッシュ810は、デコーダ805によってデコード
されて発行されるべき命令の保管場所として機能する。
命令キャッシュ810は、分岐予測ユニット835と関
連して動作し、デコーダ805に、推論的に実行される
べき次の予測された命令ブロックである、4命令幅の命
令ブロックを与える。
【0194】より具体的には、命令キャッシュ810
は、主メモリからバスインタフェースユニット900を
介してフェッチされた命令ブロックを含む、ICSTO
REと示されるストアアレイを含む。ICACHE81
0は、16バイトラインまたはブロックに構成される、
16Kバイト実効線形アドレス命令キャッシュである。
各キャッシュラインまたはブロックは、16のX86バ
イトを含む。各ラインまたはブロックはまた、各バイト
について5ビットプリデコード状態を含む。ICACH
E810は、命令デコーダ805に次に予測されたX8
6命令バイトをフェッチする役目を果たす。
【0195】ICACHE810は、FETCHPC
(FPC)と示される推論プログラムカウンタを維持す
る。この推論プログラムカウンタFETCHPCは、キ
ャッシュ情報を維持する以下の3つの別個のランダムア
クセスメモリ(RAM)アレイにアクセスするために用
いられる。より詳細には、キャッシュ情報を含む3つの
上述のRAMアレイは、1)ストアアレイICSTOR
E内の対応するブロックに関するバイト有効ビットおよ
び線形タグを維持するアレイであるICTAGVを含
む。キャッシュ内の各エントリは、16バイト有効ビッ
トおよび20ビット線形タグを含む。この特定の実施例
では、256のタグが用いられる。2)アレイICNX
TBLKは、ストアアレイICSTORE内の対応する
ブロックに関する分岐予測情報を維持する。ICNXT
BLKアレイは、各々が16Kバイト実効X86命令に
対応する、256エントリの4つの組に構成される。こ
の次ブロックアレイ内の各エントリは、シーケンシャル
ビット、最後に予測されたバイトおよびサクセッサイン
デックスから構成される。3)ICSTOREアレイ
は、X86命令バイトと5ビットのプリデコード状態と
を含む。プリデコード状態は、各バイトと関連し、特定
のバイトがマッピングされるROPの数を示す。このプ
リデコード情報は、命令のデコードを、これらがデコー
ダ805に与えられると速める。バイトキューまたはI
CBYTEQ815は、プリフェッチユニット830に
よってICACHE810に与えられる命令プリフェッ
チストリームの現在の推論状態を与える。ICACHE
810として用いることができる命令キャッシュに関す
るより多くの情報は、同時係属中で本譲受人に譲受され
た、「可変バイト長命令に特に適した推論命令キューお
よびそのための方法」と題する米国特許連続出願番号第
145,902号に記載され、その開示がここに引用に
よって援用される。
【0196】デコーダ805(IDECODE)は、マ
イクロプロセッサ800内の命令デコードおよび発行動
作を実行する。より具体的には、デコーダ805は、デ
コード1およびデコード2と称するマイクロプロセッサ
パイプラインの2つの段階を実行する。デコード1の初
めの間、プリフェッチされ、予測実行されたバイトはバ
イトキューの指定された充満位置に送られる。これらの
バイトは次に、バイトキュー815内の独立バイトと併
合される。デコード2パイプラインステージにおいて、
リオーダバッファのエントリが、次のクロック相で投入
され得る対応するROPに割当てられる。
【0197】デコーダ805は、バイトキュー815か
ら未処理のX86命令バイトおよびプリデコード情報を
取入れ、これらをROP発行ユニット820内の4つの
ROP位置に割当てる。デコーダ805は、どの特定の
機能ユニットに各ROPが伝送されるべきかを決定す
る。デコーダ805として用いることができるデコード
の1つのより詳細な説明は、ディビッド・ビィ・ウィッ
トおよびマイケル・ディ・ゴダード(Dabid B. Witt an
d Michael D. Goddard)による「スーパースカラ命令デ
コーダ」と題される米国特許出願連続番号第146,3
83号に記載され、その開示をここに引用によって援用
する。ICACHEおよびデコーダ回路によって、マイ
クロプロセッサ800は、1クロックサイクルにつき4
つのROPをデコードし、RISC類似データ経路に送
ることができる。4つのROPは、機能ユニットに発行
され、これが結果をリオーダバッファ885と、これら
の結果を必要とする他の機能ユニットとに送る。
【0198】レジスタファイル855およびリオーダバ
ッファ885は、プログラムの流れにおける命令に推論
実行を与えるようにともに動作する。マイクロプロセッ
サ800の整数コア、レジスタファイル855、リオー
ダバッファ885のより詳細な説明を、図12を参照し
て行なう。マイクロプロセッサ800の整数コアは、整
数コア920として示され、分岐予測ユニット835、
ALU0、ALU1、および特殊レジスタ860を含
む。
【0199】この特定の実施例において、レジスタファ
イル855は、12の32ビットレジスタ(整数レジス
タ)と24の41ビットレジスタ(浮動小数点レジス
タ)として構成される。これらのレジスタは、デコーダ
805から並列して4つまでのROPに関してアクセス
される。デコーダ805によって与えられるレジスタフ
ァイルポインタは、どの特定のレジスタが特定のROP
におけるオペランド値としてリクエストされるか、およ
びアクセスのサイズを決定する。
【0200】レジスタファイル855はマイクロプロセ
ッサ800のアーキテクチャ状態を含む一方で、リオー
ダバッファ885はマイクロプロセッサ800の推論状
態を含むことが認められる。レジスタファイル855の
タイミングは、8つまでの並列読出ポインタで、デコー
ダ2パイプラインステージの相PH2でアクセスされる
ようにされる。これらの8つまでの読出ポインタの受取
に応答して、レジスタファイル855は、このように選
択されたオペランド値を、後続のクロックPH1相で対
応するオペランドバスに送る。
【0201】リオーダバッファ885をレジスタファイ
ル855に結合する不能化バスが図12に示される。不
能化バスは8ライン幅であり、リクエストされた読出値
がリオーダバッファ885内の推論エントリとして見い
だされたことを示す8つの無効信号を含む。この例で
は、レジスタファイル855は無効にされ、リクエスト
された読出オペランド値をオペランドバスに置くことを
許されない。その代わりに、推論エントリがリオーダバ
ッファ885内に存在するので、リオーダバッファ88
5は、リクエストされた実際のオペランド値か、または
その値に関するオペランドタグを与える。
【0202】リオーダバッファ885は、この特定の実
施例では16のエントリを含み、推論ROP結果値のキ
ューとして動作する。図13により詳細に示されるよう
に、リオーダバッファ885は、キューの先頭および末
尾に対応する2つのポインタ、すなわち先頭ポインタお
よび末尾ポインタを含む。キューの割当の発行されるR
OPへのシフトは、これらのポインタを増分または減分
することによって起こる。
【0203】リオーダバッファ885に与えられる入力
は、デコーダ805がそこで割当てようとするROPの
数(1ブロックにつき4つまでのROP)、これらの4
つのROPのためのソースオペランドポインタ値、およ
びそれぞれの行先ポインタ値を含む。リオーダバッファ
885は次に、その現在の推論キューからこれらのエン
トリを割当てようとする。エントリスペースが発行され
るROPのために利用可能であれば、エントリは末尾ポ
インタの後に割当てられる。
【0204】より具体的には、エントリがデコーダ80
5からリクエストされると、キューの先頭から次のエン
トリが割当てられる。特定のエントリの数は、デコーダ
805からのその特定のROPに関する行先タグとな
る。行先タグは、実行されるべき特定の命令とともに、
対応するROP位置で機能ユニットに送られる。「4R
OP行先タグ」と示される専用行先タグバスは、図12
において、リオーダバッファ885から整数コア920
の機能ユニットへ、およびマイクロプロセッサ800の
残りの機能ユニットへの出力として示される。機能ユニ
ットはこのように、実行されるべき各ROPに関する行
先情報を与えられ、そのため機能ユニットは効果的に結
果バスを介してROPの結果がどこに送られるはずであ
るかを知る。
【0205】上述のことより、推論実行された結果値ま
たはオペランドは、このような結果オペランドがもはや
推論ではなくなるまで、リオーダバッファ885内に一
時的にストアされることが認められる。可能性のあるオ
ペランド値のプールは、したがってリオーダバッファに
よって与えられ、デコーダ805によって与えられてデ
コードされる後続のROPによって用いられる。
【0206】リオーダバッファ885内にエントリが存
在するときには、元のレジスタ番号(すなわちEAX)
が、特定のROP結果に関して割当てられたリオーダバ
ッファエントリ内に保持される。図13は、先頭および
末尾ポインタの間の推論状態にあるエントリを、これら
のエントリ内の縦の破線で示す。各リオーダバッファエ
ントリは、その元の行先レジスタ番号に参照し戻され
る。ROP発行ユニット820の4つのROP位置から
の8つの読出ポインタ値のうちの何らかのものがエント
リに関連する元のレジスタ番号に一致すると、そのエン
トリの結果データが、有効であれば転送され、またはそ
のエントリに関連する動作がまだ機能ユニットで未処理
であればタグが転送される。
【0207】リオーダバッファ885は、デコード80
5によって発行された新しいROPの正しい推論状態
を、これらのROPをプログラム順に割当てることで維
持する。4つのROPはその現在の位置からリオーダバ
ッファキューの末尾位置まで、それらの読出オペランド
のいずれかにおける一致を探しながらスキャンする。特
定のリオーダバッファエントリにおいて一致が起これ
ば、レジスタファイル855内の対応する読出ポートが
不能化され、実際の結果オペランドまたはオペランドタ
グが、適切な機能ユニットによって受取られるようにオ
ペランドバスに与えられる。この構成によって、動作に
影響を与えることなく、リオーダバッファに存在する同
じレジスタの複数の更新を可能にする。結果転送がこの
ように達成される。
【0208】図13に示されるように、リオーダバッフ
ァ885は、リオーダバッファキューまたはアレイ93
0にストアされた結果オペランドの用尽を制御するリタ
イア論理925を含む。キュー930に格納された結果
オペランドがもはや推論でなければ、このような結果オ
ペランドはリタイア論理制御のもとでレジスタファイル
855に転送される。これを起こすためには、ROPの
格納をインタフェースするリタイア論理、レジスタファ
イルへのライトバック、最後の4つのROPエントリの
状態がスキャンされる。リタイア論理925は、割当て
られたROPエントリのうちのいくつが有効な結果を現
在有しているかを決定する。リタイア論理はまた、これ
らのROPエントリのうちのいくつが、ライトバックの
ないROPに対して、レジスタファイルへのライトバッ
ク結果を有するかをチェックする。さらに、リタイア論
理は、発生される分岐、ストアおよびロードミスについ
てスキャンする。完全な命令が最後の4つのROP内に
存在すれば、このようなROPはレジスタファイルに格
納される。しかしながら、ROPエントリをスキャンす
る間に、特定のROPにおいて例外が起こったことを示
す状態が見いだされれば、その後のすべてのROPが無
効にされ、トラップベクトルフェッチリクエストが、R
OPエントリに格納された例外状態情報により形成され
る。
【0209】さらに、リオーダバッファ内のROPをス
キャンしている際に分岐誤予測状態に出会えば、誤予測
された経路にあるとしてマークされなかった最初のRO
Pに出会うまで、EIPレジスタの更新またはライトバ
ックなく、リタイア論理はこれらのROPエントリを無
効にする。リタイア論理925(図13参照)内に含ま
れるEIPレジスタ(図示せず)は、推論的ではない実
行された命令を推論で実行された命令から分ける、実行
下のプログラムにおけるロールする分解点を表わすリタ
イアPCまたはプログラムカウンタを保持する。EIP
またはリタイアPCは、リオーダバッファ885からレ
ジスタファイル855への結果オペランドの格納の際
に、このように格納された命令がもはや推論的ではない
ことを反映するように、継続的に更新される。リオーダ
バッファ885は推論状態を素早く追跡し、1クロック
サイクルにつき複数のX86命令またはROPを用済と
することができることが認められる。マイクロプロセッ
サ800は、例外条件または分岐誤予測に出会えば、迅
速に無効とし、正しい命令ストリームをフェッチし始め
ることができる。
【0210】マイクロプロセッサ800の機能ユニット
の一般的な構成を、ここで図14に例示的な目的のため
に示される一般化された機能ユニットブロック図を参照
して説明する。opコード、Aオペランド、Bオペラン
ド、および行先タグを含むROPは、図9の一般化され
た機能ユニットに発行されていることを思い起こされた
い。図14の最も左の部分には、それに発行される命令
から特定のAオペランドを選択する(1:4)Aオペラ
ンドマルチプレクサ932に4つのAオペランドバスが
与えられることが認められる。同様の態様で、4つのB
オペランドバスが、図14の機能ユニットが実行すべき
対象の命令のための特定のBオペランドを選択する
(1:4)Bオペランドマルチプレクサ935に結合さ
れる。4つの行先/opコードバスが、この機能ユニッ
トによって実行されている特定の命令のためのopコー
ドおよび行先タグを選択するマルチプレクサ940に結
合される。
【0211】この機能ユニットは、マルチプレクサ94
0への「ファインドファーストFUNCタイプ」入力で
タイプバスをモニタする。より特定的には、機能ユニッ
トは、その機能ユニットのタイプに一致する第1のRO
Pを探し、1:4マルチプレクサ932、935、およ
び940を可能化して、対応するオペランドおよびタグ
情報を図14の機能ユニットの待合わせステーション1
に送る。たとえば、実行ユニット945が算術論理装置
1(ALU1)であり、かつマルチプレクサ940のT
YPE入力で機能ユニットに与えられる命令タイプがA
DD命令であると仮定すると、発行された命令の行先タ
グ、opコード、Aオペランド、およびBオペランド
が、選択マルチプレクサ932、935および940を
介して待合わせステーション1に送られる。
【0212】第2の待合わせステーション、すなわち待
合わせステーション0が、待合わせステーション1と実
行ユニット945との間に認められる。図14の機能ユ
ニットは、このように2つの待合わせステーションを含
むと言われ、または待合わせステーションは2つのエン
トリを保持することができると言う。この2エントリ待
合わせステーションは、最も古いエントリが待合わせ0
として示されるFIFOとして実現される。待合わせス
テーション0および1は、レジスタファイル855また
はリオーダバッファ885のいずれかからオペランドバ
スを介して機能ユニットに何が送られたかに依存して、
オペランドまたはオペランドタグのいずれかを保持する
ことができる。
【0213】その結果を5つの結果バスに与える他の機
能ユニットからの結果の転送を達成するために、機能ユ
ニットは、A転送論理950およびB転送論理955を
有する。転送論理950は、ソースAオペランドに一致
するタグを求めて5つの結果バスをスキャンし、一致が
起これば、A転送論理950は、対応する結果バスを待
合わせステーション1のAデータ部分960に送る。実
際のAオペランドではなくAオペランドタグがマルチプ
レクサ932を介して送られると、Aオペランドタグ
は、Aタグ965と示される位置にストアされることに
注目されたい。一致を求めて5つの結果バスにおいてス
キャンされる結果タグと比較されるのは、Aタグ位置9
65にストアされたAオペランドタグである。同様の態
様で、B転送論理955は、Bオペランドタグ位置97
0にストアされたBオペランドタグに一致する何らかの
結果タグに関して5つの結果バスをスキャンする。一致
が見いだされれば、対応する結果オペランドが結果バス
から検索され、Bデータ位置975にストアされる。機
能ユニットによって実行されているROPのopコード
および行先タグは、タグおよびopコード位置980に
ストアされる。
【0214】ROP命令を実行するのに必要なすべての
情報が機能ユニット内で集められれば、ROP命令は実
行のために実行ユニット945に投入される。より具体
的には、AオペランドおよびBオペランドが、待合わせ
ステーションによって実行ユニット945に送られる。
その命令のためのopコードおよび行先タグが、タグお
よびopコード位置980によって実行ユニット945
に送られる。実行ユニットは命令を実行し、結果を発生
する。実行ユニットは次に、アービトレータ(図示せ
ず)に結果リクエスト信号を送ることで結果バスへのア
クセスに対して調停する。実行ユニット945が結果バ
スへのアクセスを許可されると、結果許可信号がアービ
トレータから実行ユニット945によって受取られる。
実行ユニット945はその結果を指定された結果バスに
置く。
【0215】この結果と同じタグを有する未処理のオペ
ランドを有する他の機能ユニットに結果が転送される。
結果はまた、実行されたROPの行先タグと関連するエ
ントリでそこにストアするためにリオーダバッファ88
5にも与えられる。
【0216】実用において、機能ユニットは、命令が実
行している間結果バスに対して調停する。より具体的に
は、機能ユニットに有効エントリが存在するとき、すな
わち実行のために必要なすべてのオペランド、opコー
ド、および行先タグ情報が集めらたとき、命令は実行ユ
ニット945に投入され、実行ユニット945が実際に
その命令を実行している間、機能ユニットは結果バスに
対して調停する。各待合わせステーションが行先タグと
ともに局所opコードのための記憶機構を含むことが認
められる。このタグは、結果パイプラインステージの間
にROPが最終的にライトバックする位置を示す。この
行先タグはまた、待合わせステーション内の各エントリ
と保持され、そのFIFOを介して押される。
【0217】一般化された機能ユニットブロック図を図
14に関して説明したが、実行ユニット945は、分岐
予測ユニット835、ALU0/シフタ840、ALU
1845、ロード/ストア860、浮動小数点ユニット
865および特殊レジスタ850のいずれであってもよ
く、これらの特定の機能に関する適切な変更を加えても
よい。
【0218】特定の機能ユニットへの結果バスの許可が
行なわれると、結果値が結果バスに送られ、待合わせス
テーション内の対応するエントリがクリアされる。結果
バスは、41ビットの結果と、行先タグと、通常、有効
および例外等の状態指示情報とを含む。マイクロプロセ
ッサ800のパイプライン化された動作において、上述
の機能ユニットの動作のタイミングは、実行段階の間に
起こる。クロック相PH1の間、オペランド、行先タグ
およびopコードは、ROPが発行され、待合わせステ
ーションに置かれる際に送られる。PH2クロック相の
間、opコードによって説明される動作は、すべてのオ
ペランドの準備ができていれば実行され、実行の間、機
能ユニットは値をリオーダバッファに送返すために結果
バスに対して調停する。
【0219】図15は、分岐機能ユニット835のより
詳細な図である。分岐機能ユニット835は、ジャンプ
命令ならびにより複雑なコールおよびリターンマイクロ
ルーチンを含む非逐次的フェッチをすべて扱う。分岐ユ
ニット835は、待合わせステーション835Rと、予
測発生分岐を追跡するための分岐FIFO980を含
む。分岐機能ユニット835はまた、加算器985と、
インクリメンタ990と、分岐予測コンパレータ995
とを含み、これらはすべてPC相対分岐を扱うためのも
のである。
【0220】分岐機能ユニット835は、図15に示さ
れる分岐予測発生FIFO980を用いて推論分岐を制
御する。より具体的には、命令キャッシュ810によっ
て予測されたすべての非順次的フェッチは、分岐予測F
IFO980に送られ、その分岐のPC(プログラムカ
ウンタ)とともにそこでラッチされる。この情報は、タ
ーゲットバス(XTARGET)およびデコードPCバ
スに送られて、分岐機能ユニットに渡る。対応する分岐
が後にデコードされ、投入されると、予測情報、オフセ
ット、および分岐のPCが、分岐機能ユニット835に
よって局所的に計算される。一致が起これば、この結果
はターゲットPCと一致を示す状態とともに、リオーダ
バッファ885に正しく送り返される。分岐誤予測が起
これば、正しいターゲットが、フェッチを始めるために
命令キャッシュ810へ送られ、またミスしている予測
された分岐に含まれる後続のROPをキャンセルために
リオーダバッファ885へ送られる。この態様で、実行
は正しいターゲットPCで再び始めることができ、この
ようにして実行プロセスの失敗を防ぐ。誤予測が起こる
と必ず、分岐機能ユニット835は、新しいターゲット
アドレスとインデックスとの両方を、予測情報があった
ブロックに送り、このアレイを更新する。このことは、
マイクロプロセッサが、予測アレイ情報を更新しながら
同時に、命令の新しく正しいストリームをフェッチし始
めることを意味する。マイクロプロセッサはまた、新し
いブロックで予測情報にアクセスして、どのバイトが予
測実行されるかを知ることに注目されたい。ICNXT
BLKアレイは、予測情報がその第2のポートを介して
更新され得るように、デュアルポートである。誤予測が
起こるブロックからの予測情報は、逐次/非逐次、分岐
位置、およびキャッシュアレイ内の予測実行される第1
のバイトの位置等の情報である。
【0221】加算器985およびインクリメンタ990
は、現在の分岐命令の現在のPC+オフセット、および
逐次的であれば次のPCの命令長+PCを局所的に計算
する。これらの値は、コンパレータ995によって、局
所分岐発生キュー(FIFO980)内の予測発生分岐
と比較されて、このような分岐を予測する。
【0222】ここで、マイクロプロセッサ800の動作
をそのパイプラインステージを通して示すタイミング図
を説明する前に、マイクロプロセッサ800の主な内部
バスを概略的に説明する。バスラインの先頭のXは、一
方の相でダイナミックにチャージされ、他方の相で条件
付でアサートされる偽バスを示す。マイクロプロセッサ
800の内部バスは以下のものを含む。
【0223】FPC(31:0)−Ph1、スタティッ
ク。このフェッチPCバスは、命令キャッシュ810か
らバイトキュー815への推論命令プリフェッチのため
に用いられる。FPCバスは、図3ないし図5のマイク
ロプロセッサ500のFPCブロック207と実質的に
同じ機能を果たす、ICACHE810内のFPCブロ
ック813に結合される。
【0224】XTARGET(41:0)−Ph1、ダ
イナミック。このバスは、誤予測分岐および例外を指示
しなおすためにターゲットPCを命令キャッシュおよび
分岐予測ユニット(825/835)に送る。
【0225】XICBYTEnB(12:0)−Ph
1、ダイナミック。このバスは、現在リクエストされて
いるプリフェッチX86命令および対応するプリデコー
ド情報の命令キャッシュストアアレイICSTOREの
出力である。この特定の実施例では、サイクルにつき全
部で16のバイトが、次に予測実行されたバイトがバイ
トキューの第1のオープンバイト位置を充満するように
整列されてアサートすることができる。
【0226】BYTEQn(7:0)−Ph1、スタテ
ィック。これは、命令キャッシュからフリフェッチされ
た予測実行X86命令バイトのキューを示す。この特定
の実施例では、全部で16のバイトがデコーダ805の
デコード経路に送られる。各バイトは、opコード位
置、プリフィックスバイト、ならびに命令開始および終
了位置に関しての命令キャッシュからのプリデコード情
報を含む。各X86命令のROPサイズもまた、プリデ
コード情報に含まれる。各バイトに加えられるプリデコ
ード情報は、バイトキュー内の1バイトについて全部で
6ビットのストアを表わし、すなわち1有効ビット+5
つのプリデコードビットを表わす。
【0227】IAD(63:0)−Ph1、ダイナミッ
ク。IADバス895は、主なマイクロプロセッサ80
0のブロックのための一般的な相互接続バスである。こ
れは、このようなブロック間と、外部メモリへの、およ
びそこからのアドレス、データ、および制御転送のため
に用いられ、図10および11に示されるとおりであ
る。
【0228】XRDnAB(40:0)−Ph1、ダイ
ナミック。この符号は、機能ユニットに与えられる各R
OPのためのソースオペランドAバスを表わし、オペラ
ンドバス875内に含まれる。より具体的には、これは
ROP0ないしROP3のための全部で4つの41ビッ
トバスを含む。オペランドバスに含まれる対応するタグ
バスは、リオーダバッファ885からの実際のオペラン
ドデータの代わりに、リオーダバッファ885からの転
送されたタグが存在することを示す。
【0229】XRDnBB(40:0)−Ph1、ダイ
ナミック。この符号は、機能ユニットに送られる各RO
PのためのソースオペランドBバスを示す。このバス構
造は、ROP0ないしROP3のための4つの41ビッ
トバスを含み、8つの読出オペランドバス875内に含
まれる。対応するタグバスは、リオーダバッファ885
からの実際のオペランドデータの代わりに、転送された
オペランドタグがこのバスに存在することを示すことが
やはり認められる。
【0230】XRESnB(40:0)−Ph1、ダイ
ナミック。この符号は、8、16、32ビット整数、ま
たは80ビット拡張結果の1/2のための結果バス88
0を示す。対応するタグおよび状態バス882は、この
結果バスでエントリを確立することがわかる。
【0231】マイクロプロセッサ800は、フェッチ、
デコード1、デコード2、実行、結果/ROBおよび用
尽/レジスタファイルの段階を含む6段階パイプライン
を含む。明瞭にするために、デコードステージは図16
においてデコード1およびデコード2に分割されてい
る。図16は、逐次的な実行が行なわれているときのマ
イクロプロセッサパイプラインを示す。連続するパイプ
ライン段階は、図16の縦方向の列で表わされる。マイ
クロプロセッサ800において選択された信号は、パイ
プラインの種々の段階で現われることを横方向の列で表
わす。
【0232】図16の逐次実行パイプライン図は、以下
の選択された信号を表わす。「Ph1」は、システムク
ロック信号の前縁を表わす。システムクロック信号は、
Ph1およびPh2成分の両方を含む。
【0233】「FPC(31:0)」は、バイトキュー
815からのフェッチPCバスを表わす。
【0234】「ICBYTEnB(12:0)」は、バ
イトキュー815に結合される命令キャッシュ810の
ICSTOREアレイからのICBYTEバスである。
【0235】「BYTEQn(7:0)」は、バイトキ
ューバスである。「ROPmux(3:0)」は、命令
ブロックおよびプリデコード情報がデコーダに与えられ
ていることを示すデコーダ信号である。
【0236】「Source A/B pointers 」は、デコーダ8
05によってリオーダバッファ815に与えられるAお
よびBオペランドのための読出/書込ポインタである。
図10および11には明確に図示されないが、ソースポ
インタは、デコードブロックからレジスタファイルおよ
びリオーダバッファの両方への入力であるレジスタファ
イル値である。
【0237】「REGF/ROB access 」は、機能ユニットへ
の伝送のためにオペランド値を得るためのレジスタファ
イルおよびリオーダバッファへのアクセスを示す。
【0238】「Issue ROPs/dest tags」は、デコーダ8
05による機能ユニットへのROPおよび行先タグの投
入を示す。
【0239】「A/B read oper buses 」は、機能ユニッ
トによる、そのためのAおよびBオペランドまたはタグ
を得るためのAおよびBオペランドバスの読出を示す。
【0240】「Funct unit exec 」は、機能ユニットに
よる実行を示す。図16および図17において、符号a
&b→cおよびc&d→eおよびc&g→は、任意の演
算を表わし、「ソース1オペランド、ソース2オペラン
ド→行先」の形である。より具体的には、示されるソー
スレジスタは、レジスタ、すなわち一時またはマッピン
グX86レジスタである。a&b→cの例では、「c」
の値は行先を表わし、結果バスおよびリオーダバッファ
から、予測実行ストリームの次の参照への局所的な転送
を示す。
【0241】「Result Bus arb」は、結果をリオーダバ
ッファ、およびこの結果に対応するオペランドタグを保
持しているためにその結果を必要とするかもしれない他
の何らかの機能ユニットに伝送するために、結果バス8
80へのアクセスを調停している時間を示す。
【0242】「Result Bus forward」は、結果がある機
能ユニットからこの結果を未処理のオペランドとして必
要としている他の機能ユニットに転送している時間を示
す。
【0243】「ROB write result」は、機能ユニットか
らの結果がリオーダバッファに書込まれている時間を示
す。
【0244】「ROB tag forward 」は、リオーダバッフ
ァが機能ユニットに、現在まだ結果が出ていないオペラ
ンドの代わりにオペランドタグを転送している時間を示
す。
【0245】「REGF write/retire 」は、結果がリオー
ダバッファのFIFOキューからレジスタファイルに格
納されている時間を示す。
【0246】「EIP(31:0)」はリタイアPC値
を示す。割込リターンは遅延分岐を持たないので、マイ
クロプロセッサは、わずか1つのPCで割込リターンの
際に再始動できる。リタイアPC値またはEIPは、リ
オーダバッファ885のリタイア論理925内に含まれ
る。EIPは、マイクロプロセッサ500に関して既に
説明したリタイアPCと類似している。リタイア論理9
25は、マイクロプロセッサ500のリタイア論理24
2に類似した機能を果たす。
【0247】図16のタイミング図は、X86バイトの
逐次的ストリームを実行しているマイクロプロセッサ8
00を示す。この例では、予測実行経路が実際に行なわ
れ、また命令キャッシュから直接利用可能である。
【0248】命令処理の第1の段階は、命令フェッチで
ある。図示のとおり、このクロックサイクルは命令キャ
ッシュの動作を行なうのに費やされる。命令キャッシュ
810は、クロックサイクルのPh1の間に新しいフェ
ッチPC(FPC)を形成し、第2のクロックサイクル
において命令キャッシュのキャッシュアレイにアクセス
する。フェッチPCプログラムカウンタ(タイミング図
ではFPC(31:0)として示される)は、ストアア
レイと並列して線形命令キャッシュのタグアレイにアク
セスする。フェッチのクロック相Ph2の遅い時点で、
線形タグがフェッチPC線形アドレスに一致するかどう
かの決定がなされる。一致が起これば、予測実行される
バイトはバイトキュー815に転送される。
【0249】命令キャッシュ内のタグおよびストアアレ
イにアクセスするのに加えて、フェッチPCはまたブロ
ック予測アレイICNXTBLKにアクセスする。この
ブロック予測アレイは、どのX86バイトが予測実行さ
れるかを識別し、次の予測実行されるブロックが逐次的
であるか非逐次的であるかを識別する。Ph2でアクセ
スされるこの情報は、現在フェッチされているブロック
のどのバイトがバイトキュー815に有効バイトとして
送られるかを決定する。
【0250】バイトキュー815は、前にフェッチされ
ているが機能ユニットにまだ投入されておらずそこにス
トアされたX86バイトを現在有しているかもしれな
い。この場合には、バイト充満位置が命令キャッシュ8
10に示されて、第1の予測バイトをこの量だけシフト
して、より古いX86バイトの後を充満する。
【0251】フェッチのクロック相Ph2で分岐予測情
報が起こるので、プリフェッチユニット830によって
プリフェッチされるべき次のブロックは逐次的であって
も非逐次的であってもよい、というのはどちらの場合に
も、キャッシュアレイに再びアクセスするのに1クロッ
クサイクルあるからである。したがって、分岐予測アレ
イによって、ブロック外の分岐が、次の逐次的ブロック
にアクセスするのと同じ相対的性能を有することがで
き、性能の向上を与える。
【0252】デコード1/デコード2パイプライン段階
を次に説明する。デコード1の初めに、プリフェッチさ
れ、予測実行されたバイトが、指定された充満位置でバ
イトキュー815に送られる。これは図16のタイミン
グ図にICBYTEnB(12:0)として示され、デ
コード1のPh1でアサートする。これらのバイトは、
バイトキュー内の何らかの未処理のバイトと併合され
る。バイトキューはプリデコード状態の5つのビット
と、未処理のX86バイトとを含み、命令の境界がどこ
にあるかを示す。バイトキューの先頭は、次に予測実行
されたX86命令の初めにある。デコード1のクロック
相Ph1の中程で、命令キャッシュからの次のバイトの
ストリームが、バイトキュー815内の既存のバイトと
併合され、併合されたストリームがスキャンのためにデ
コーダ805に与えられる。デコーダ805は、各命令
がとるROPの数、および対応するROP投入位置D
0、D1、D2、およびD3とopコードの整列を可能
にするようにopコードの位置を決定し、ここでD0に
あるROPが投入すべき次のROPである。デコーダ8
05は、バイトキュー815内の各X86命令のプログ
ラムカウンタPCのコピーを、命令の境界間のバイト数
をカウントするか、または命令キャッシュ内の分岐を検
出して、その位置からフェッチされた第1のX86バイ
トにターゲットPC値を付けることによって維持する。
【0253】opコードおよびROP位置付け情報、な
らびにバイトキュー815にストアされた即値フィール
ドを用いることで、デコーダ805はデコード1のクロ
ック相Ph2およびデコード2のクロック相Ph1の間
に以下の情報をスタティックに決定する。すなわち、
1)機能ユニット行先、2)ソースA/Bおよび行先オ
ペランドポインタ値、3)ソースおよび行先動作のサイ
ズ、および4)もしあれば、即値アドレスおよびデータ
値である。デコード2のクロック相Ph1の終わりに、
すべてのレジスタ読出および書込ポインタが解決され、
動作が決定される。これは図16のタイミング図でソー
スA/Bポインタ値のアサートによって示される。
【0254】図16のタイミング図に示されるデコード
2パイプライン段階において、リオーダバッファエント
リは、次のクロック相で投入され得る対応するROPに
割当てられる。したがって、4つまでの付加的なROP
が、デコード2のPh1クロック相の間に16エントリ
リオーダバッファ885内のエントリを割当てられる。
デコード2のPh2クロック相の間、割当てられたすべ
てのROPに関するソース読出ポインタが、リオーダバ
ッファに含まれる推論ROPのキューにアクセスしなが
ら、同時にレジスタファイルから読出される。レジスタ
ファイルおよびリオーダバッファアレイの両方のこの同
時アクセスによって、マイクロプロセッサ800は、実
際のレジスタファイル値を用いるか、またはリオーダバ
ッファからオペランドもしくはオペランドタグを転送す
るかを後で選択することができる。Ph1においてリオ
ーダバッファ内の4つのROPエントリをまず割当て、
次にPh2でリオーダバッファをスキャンすることによ
って、まだ推論状態にあるすべての前のROPと発行さ
れている現在のROPについて読出の従属性をマイクロ
プロセッサ800は同時に探すことができる。これは、
図16のタイミング図に、REGF/ROBアクセスお
よびタグのチェックによって示される。
【0255】実行パイプライン段階において、ROP
は、専用opコードバスおよび読出オペランドバスによ
って機能ユニットに投入される。専用opコードバス
は、ROPのopコードを機能ユニットに送り、一方、
読出オペランドバスはオペランドまたはオペランドタグ
をこのような機能ユニットに伝送する。オペランドバス
がオペランドを機能ユニットに送っている間の時間は、
図16のタイミング図では符号「A/B read operand bus
es」によって示される。
【0256】実行パイプライン段階のPh1クロック相
の後半で、機能ユニットはこのような機能ユニットにど
のROPが投入されたか、およびこのような機能ユニッ
ト内の局所待合わせステーションから何らかの未処理の
ROPの投入準備ができているかを判断する。待合わせ
ステーション内に含まれる最も古い命令が最初に実行さ
れることが確実になるように、機能ユニットの待合わせ
ステーションでFIFOが維持されることに注目された
い。
【0257】命令が機能ユニット内で実行準備ができて
いる場合には、実行パイプライン段階のPh1の遅くに
このような実行を始め、この段階のPh2にわたってス
タティックに続く。Ph2の終わりに、機能ユニット
は、図16の結果バスROB信号によって示されるよう
に5つの結果バスのうちの1つに対して調停する。言い
換えれば、結果バス調停信号がこの時間の間にアサート
される。機能ユニットが結果バスへのアクセスを許可さ
れると、これは後続のPh1で割当てられた結果バスを
駆動する。
【0258】図16のタイミング図で示される結果パイ
プライン段階は、結果をある機能ユニットからこのよう
な結果を必要としている別のものへと転送することを示
す。結果パイプライン段階のクロック相Ph1におい
て、推論ROPの位置は、行先結果および何らかの状態
を伴ってリオーダバッファに書込まれる。リオーダバッ
ファ内のこのエントリは、割当てられたとともに有効で
あるという指示を与えられる。一旦割当てられたエント
リがこのように確立されると、リオーダバッファは、リ
クエストされた読出アクセスの受取の際に、オペランド
タグではなくオペランドデータを直接転送することがで
きる。結果パイプライン段階のクロック相Ph2におい
て、新しく割当てられたタグが、そのソースオペランド
の1つとしてこれを要求する後続のROPによって検出
され得る。これは、図16のタイミング図において、
「ROB tag forward 」を介してソースA/Bオペランド
バスへの結果Cの直接転送として示される。
【0259】用尽パイプライン段階は、図16のタイミ
ング図のパイプラインの最終段階である。この段階は、
EIPレジスタの形での真のプログラムカウンタ(リタ
イアPC)が維持され、バス指示EIP(31:0)に
よって示されるように更新される段階である。図16に
示されるように、EIP(31:0)のタイミング図
は、リオーダバッファからレジスタファイルへの命令の
格納の際に、新しいPC(またはリタイアPC)が発生
されるところを示す。リオーダバッファからレジスタフ
ァイルへの結果の格納の実際の動作は、図16の「REGF
write/retier 」と符号を付される信号によって示され
る。図16において、用尽パイプライン段階のクロック
相Ph1において、動作の結果はレジスタファイルに書
込まれ、EIPレジスタはこの命令がもう実行されたこ
とを反映するように更新される。リオーダバッファ内の
対応するエントリは、値がリオーダバッファからレジス
タファイルへと書込まれるのと同じクロック相Ph1に
おいて割当から外される。リオーダバッファ内のこのエ
ントリが割当から外されたので、レジスタCへの後続の
参照は、リオーダバッファからの推論読出ではなく、レ
ジスタファイルからの読出となる。この態様で、マイク
ロプロセッサのアーキテクチャ状態が真に反映される。
【0260】図17は、分岐誤予測の際のプロセッサ8
00のタイミング図である。図17のタイミング図は、
以下を除いては図16のタイミング図と同じ信号タイプ
を示す。
【0261】BRN_MISP信号は、分岐誤予測が起
こったときを示す。XTARGET(31:0)信号
は、予測されたターゲット分岐命令が分岐ユニット83
5に送られるときを示す。
【0262】図17のタイミング図は、分岐誤予測およ
び回復の間のマイクロプロセッサ800のパイプライン
の段階を示す。このタイミング図は、第1のサイクルが
分岐の実行サイクルであり、かつ後続のサイクルが予測
の訂正および新しい命令ストリームのフェッチに関わる
と仮定する。この特定の実施例において、誤予測された
分岐命令の実行の完了から正しい経路の実行の開始まで
3サイクルの遅延が存在することが認められる。
【0263】図17に示されるパイプラインのフェッチ
段階は、XTARGET(31:0)バスが、命令キャ
ッシュ810に予測されたターゲットに関しての情報を
与えるために、分岐機能ユニット835から命令キャッ
シュ810に駆動されることを除いては、図16の通常
のフェッチ段階に類似している。分岐機能ユニットは、
分岐誤予測が実際に起こったことを判断する、マイクロ
プロセッサ800のブロックであることが認められる。
分岐機能ユニットはまた、正しいターゲットを計算す
る。このターゲットは、結果バス880を介して誤予測
状態指示とともに結果がリオーダバッファに戻されるの
と同じときに送られる。結果バスはまた、真の分岐が起
こった場合に分岐命令を用済とする際にEIPレジスタ
を更新するための正しいPC値を含む。XTARGET
バスは、フェッチされたPCバスに駆動され、命令キャ
ッシュアレイがアクセスされる。ヒットが起これば、バ
イトは前と同様にバイトキューに送られる。
【0264】誤予測が起これば、バイトキュー815内
のすべてのバイトは、信号BRN_MISPのアサート
で、フェッチの第1の相において自動的にクリアされ
る。訂正された経路がフェッチされ、デコードされるま
では、さらなるROPはデコーダ805から発行されな
い。
【0265】誤予測の結果状態がリオーダバッファにフ
ェッチパイプライン段階のクロック相Ph1において戻
されるとき、誤予測状態指示が誤予測の後のすべての推
論ROPに送られ、そのためこれらはレジスタファイル
またはメモリに書込を許されない。これらの命令が次に
用済とされるべきとき、リオーダバッファ内のこれらの
エントリは割当から外されて、さらなるROPが投入さ
れることを可能にする。
【0266】分岐誤予測の間のデコード1パイプライン
段階に関して、訂正された経路をデコードするための経
路の残りは、命令キャッシュ810のICNXTBLK
アレイにおける予測情報の更新を除いて、逐次的なフェ
ッチの場合と同じである。分岐の正しい方向が、予測ア
レイICNXTBLKの分岐が誤予測されたその中のキ
ャッシュブロックに書込まれる。
【0267】誤予測の間のパイプライン段階デコード
2、実行、結果、用済は、図16で議論したものと実質
的に同じである。
【0268】VI.結論−スーパースカラ高性能特徴 マイクロプロセッサによって実行されるコードから実質
的な並列性を引出すことで、本発明のマイクロプロセッ
サにおいて高性能が達成される。命令タグ付与、待合わ
せステーション、転送を伴う結果バスによって、オペラ
ンドハザードが無関係の命令の実行を妨げることを防
ぐ。マイクロプロセッサのリオーダバッファ(ROB)
は多数の利点を達成する。ROBは一種のレジスタ再指
定を用いて、行先としての同じレジスタの異なる使用を
区別し、そうでなければこれは並列性を損なってしまう
恐れがある。リオーダバッファにストアされたデータは
マイクロプロセッサの予測実行状態を表わし、一方レジ
スタファイルにストアされたデータはマイクロプロセッ
サの現在の実行状態を表わす。さらに、リオーダバッフ
ァは割込の際のプログラムの逐次的状態を守る。さら
に、リオーダバッファは、未解決の条件付分岐を越える
実行を許可することによりさらなる並列性を可能にす
る。並列性はさらに、高いバンド幅の命令フェッチを与
えるオンボードの命令キャッシュ(ICACHE)によ
って、分岐の影響を最小にする分岐予測によって、そし
てロードおよびストア動作に関する待ち時間を最小にす
るオンボードのデータキャッシュ(DCACHE)によ
ってさらに促進される。
【0269】本発明のスーパースカラプロセッサは、い
くつかの構成要素を共有することによってダイの空間を
効率的に利用して、性能を向上する。より具体的には、
マイクロプロセッサの整数ユニットおよび浮動小数点ユ
ニットは、共通の、共有データ処理バス上にある。これ
らの機能ユニットは、同じデータ処理バスにやはり結合
される複数の待合わせステーションを含む。整数および
浮動小数点機能ユニットは、データ処理バス上の共通の
分岐ユニットを共有する。さらに、整数および浮動小数
点機能ユニットは、共通デコーダおよび共通ロード/ス
トアユニット530を共有する。内部アドレスデータ
(IAD)バスは、本発明のマイクロプロセッサのいく
つかの構成要素間での局所的通信を与える。
【0270】本発明のある好ましい特徴のみを、例示す
るために示したが、多くの変更および変形が起こるであ
ろう。したがって、前掲の特許請求の範囲は本発明の真
の精神に包含されるすべての変更および変形を含むと意
図されることを理解されたい。
【図面の簡単な説明】
【図1】従来のスーパースカラマイクロプロセッサを示
すブロック図である。
【図2】本発明の高性能スーパースカラマイクロプロセ
ッサの一実施例の簡略化されたブロック図である。
【図3】本発明の高性能スーパースカラマイクロプロセ
ッサの別の実施例の一部のより詳細なブロック図であ
る。
【図4】本発明の高性能スーパースカラマイクロプロセ
ッサの別の実施例の一部のより詳細なブロック図であ
る。
【図5】本発明の高性能スーパースカラマイクロプロセ
ッサの別の実施例の一部のより詳細なブロック図であ
る。
【図6】結果バスに対して調停している際に機能ユニッ
トが受ける優先順位を表わす図である。
【図7】本発明のマイクロプロセッサにおける内部アド
レスデータバス調停構成のブロック図である。
【図8】図3ないし図5のマイクロプロセッサの、逐次
処理の間のそのパイプラインの複数の段階を通してのタ
イミング図である。
【図9】図8のタイミング図と類似しているが、分岐誤
予測および回復が起こる際のタイミング図である。
【図10】本発明のスーパースカラマイクロプロセッサ
の別の実施例のブロック図の一部である。
【図11】本発明のスーパースカラマイクロプロセッサ
の別の実施例のブロック図の一部である。
【図12】図10および図11のマイクロプロセッサの
レジスタファイル、リオーダバッファおよび整数コアの
ブロック図である。
【図13】図12のリオーダバッファのより詳細なブロ
ック図である。
【図14】図10および図11のマイクロプロセッサが
用いる一般化された機能ユニットのブロック図である。
【図15】図10および図11のマイクロプロセッサが
用いる分岐機能ユニットのブロック図である。
【図16】逐次実行の間の図10および図11のマイク
ロプロセッサの動作のタイミング図である。
【図17】分岐誤予測および回復の間の図10および図
11のマイクロプロセッサの動作のタイミング図であ
る。
【符号の説明】
200 マイクロプロセッサ 205 命令キャッシュ 210 命令デコーダ 215 整数コア 225 浮動小数点コア 235 レジスタファイル 240 リオーダバッファ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 デイビッド・ビィ・ウィット アメリカ合衆国、78759 テキサス州、オ ースティン、パスファインダー・ドライ ブ、6318 (72)発明者 ウィリアム・エム・ジョンソン アメリカ合衆国、78746 テキサス州、オ ースティン、クリスティ・ドライブ、102

Claims (27)

    【特許請求の範囲】
  1. 【請求項1】 スーパースカラマイクロプロセッサであ
    って、 同じマイクロプロセッササイクル中に複数の命令をデコ
    ードするための複数命令デコーダを含み、前記デコーダ
    は同じマイクロプロセッササイクル内に整数および浮動
    小数点命令の両方をデコードし、さらに前記デコーダに
    結合されるデータ処理バスと、 前記データ処理バスに結合される整数機能ユニットと、 前記データ処理バスに結合される浮動小数点機能ユニッ
    トと、 前記データ処理バスに結合されて、前記整数機能ユニッ
    トおよび前記浮動小数点機能ユニットの両方によって用
    いられる共通リオーダバッファと、 前記リオーダバッファに結合されて、前記リオーダバッ
    ファから用済とされた命令結果を受入れる共通レジスタ
    ファイルとを含む、スーパースカラマイクロプロセッ
    サ。
  2. 【請求項2】 前記整数機能ユニットが少なくとも1つ
    の待合わせステーションを含む、請求項1に記載のマイ
    クロプロセッサ。
  3. 【請求項3】 前記整数機能ユニットが2つの待合わせ
    ステーションを含む、請求項1に記載のマイクロプロセ
    ッサ。
  4. 【請求項4】 前記浮動小数点機能ユニットが少なくと
    も1つの待合わせステーションを含む、請求項1に記載
    のマイクロプロセッサ。
  5. 【請求項5】 前記浮動小数点機能ユニットが2つの待
    合わせステーションを含む、請求項1に記載のマイクロ
    プロセッサ。
  6. 【請求項6】 前記データ処理バスが、 複数のopコードバスと、 複数のオペランドバスと、 複数の命令タイプバスと、 複数の結果バスと、 複数の結果タグバスとを含む、請求項1に記載のマイク
    ロプロセッサ。
  7. 【請求項7】 前記オペランドバスがオペランドタグバ
    スを含む、請求項6に記載のマイクロプロセッサ。
  8. 【請求項8】 前記データ処理バスが予め定められたデ
    ータ幅を示し、前記リオーダバッファが、前記データ処
    理バス幅に等しい幅を示すエントリと、前記データ処理
    バスのデータ幅の倍数に等しい幅を示すエントリとをス
    トアするメモリ手段を含む、請求項1に記載のマイクロ
    プロセッサ。
  9. 【請求項9】 前記デコーダが、プログラム順に整数お
    よび浮動小数点命令の両方を発行するための発行手段を
    さらに含む、請求項1に記載のマイクロプロセッサ。
  10. 【請求項10】 前記データ通信バスに結合されて、前
    記整数機能ユニットと前記浮動小数点機能ユニットによ
    って共有される分岐予測機能ユニットをさらに含む、請
    求項1に記載のマイクロプロセッサ。
  11. 【請求項11】 前記浮動小数点機能ユニットが、複数
    のサイズを示すオペランドを処理する、請求項1に記載
    のマイクロプロセッサ。
  12. 【請求項12】 前記浮動小数点機能ユニットが、単精
    度/倍精度浮動小数点機能ユニットを含む、請求項1に
    記載のマイクロプロセッサ。
  13. 【請求項13】 前記複数命令デコーダが、1マイクロ
    プロセッササイクルにつき4つの命令をデコードするこ
    とができる、請求項1に記載のマイクロプロセッサ。
  14. 【請求項14】 前記マイクロプロセッサを、命令およ
    びデータがストアされる外部メモリにインタフェースさ
    せるためのバスインタフェースユニットと、前記バスイ
    ンタフェースユニットに結合される内部アドレスデータ
    通信バスと、 前記データ処理バスに結合されて、そこからロードおよ
    びストア命令を受取るためのロード/ストア機能ユニッ
    トとを含み、前記ロード/ストア機能ユニットは、前記
    内部アドレスデータ通信バスに結合されて、前記外部メ
    モリに前記ロード/ストア機能ユニットアクセスを与
    え、さらに前記内部アドレスデータ通信バスおよび前記
    デコーダに結合されて、前記デコーダに命令源を与える
    命令キャッシュと、 前記内部アドレスデータ通信バスおよび前記ロード/ス
    トア機能ユニットに結合されるデータキャッシュとをさ
    らに含み、 前記内部アドレスデータ通信バスは、アドレスおよびデ
    ータ情報を前記外部メモリ、前記命令キャッシュおよび
    前記データキャッシュ間で通信する、請求項1に記載の
    マイクロプロセッサ。
  15. 【請求項15】 命令およびデータを前記マイクロプロ
    セッサに与えるための外部メモリと組合わされる、請求
    項1に記載のマイクロプロセッサ。
  16. 【請求項16】 前記複数のオペランドバスが、オペラ
    ンドおよびオペランドタグの両方がそれに伝達されるバ
    スである、請求項6に記載のマイクロプロセッサ。
  17. 【請求項17】 スーパースカラマイクロプロセッサで
    あって、 同じマイクロプロセッササイクル内に複数の命令をデコ
    ードするための複数命令デコーダを含み、前記デコーダ
    は、同じマイクロプロセッササイクル内に整数および浮
    動小数点命令の両方をデコードし、さらに前記デコーダ
    に結合されるデータ処理バスと、 前記データ処理バスに結合される整数機能ユニットとを
    含み、前記整数機能ユニットは、前記マイクロプロセッ
    サによる順序通りでない命令の実行を可能にするための
    複数の待合わせステーションを含み、さらに前記データ
    処理バスに結合される浮動小数点機能ユニットを含み、
    前記浮動小数点機能ユニットは、前記マイクロプロセッ
    サによる順序通りでない命令の実行を可能にするための
    複数の待合わせステーションを含み、さらに前記データ
    処理バスに結合されて、前記整数機能ユニットおよび前
    記浮動小数点機能ユニットの両方によって、そこから命
    令結果を受取って命令を推論的かつ順序通りではなく処
    理することを可能にするために用いられる共通リオーダ
    バッファと、 前記リオーダバッファに結合されて、前記リオーダバッ
    ファから用済とされた命令結果を受入れるためのレジス
    タファイルと、 前記データ処理バスに結合されて、前記整数機能ユニッ
    トおよび浮動小数点機能ユニットの両方によって、コン
    ピュータプログラム内のどの分岐が発生されるかを推論
    的に予測するために用いられる分岐予測ユニットと、 前記データ処理バスに結合されて、前記整数機能ユニッ
    トおよび前記浮動小数点機能ユニットの両方によって、
    情報のロードおよびストアを可能にするために用いられ
    るロード/ストア機能ユニットとを含む、スーパースカ
    ラマイクロプロセッサ。
  18. 【請求項18】 前記データ処理バスが、 複数のopコードバスと、 複数のオペランドバスと、 複数の命令タイプバスと、 複数の結果バスと、 複数の結果タグバスとを含む、請求項17に記載のマイ
    クロプロセッサ。
  19. 【請求項19】 前記オペランドバスがオペランドタグ
    バスを含む、請求項17に記載のマイクロプロセッサ。
  20. 【請求項20】 前記データ処理バスが予め定められた
    データ幅を示し、前記リオーダバッファが、前記データ
    処理バス幅に等しい幅を示すエントリと、前記データ処
    理バスのデータ幅の倍数に等しい幅を示すエントリとを
    ストアするためのメモリ手段を含む、請求項17に記載
    のマイクロプロセッサ。
  21. 【請求項21】 前記デコーダが、プログラム順に整数
    および浮動小数点命令の両方を発行するための発行手段
    をさらに含む、請求項17に記載のマイクロプロセッ
    サ。
  22. 【請求項22】 前記浮動小数点機能ユニットが、複数
    のサイズを示すオペランドを処理する、請求項17に記
    載のマイクロプロセッサ。
  23. 【請求項23】 前記浮動小数点機能ユニットが、単精
    度/倍精度浮動小数点機能ユニットを含む、請求項17
    に記載のマイクロプロセッサ。
  24. 【請求項24】 前記複数命令デコーダが、1マイクロ
    プロセッササイクルにつき4つの命令をデコードするこ
    とができる、請求項17に記載のマイクロプロセッサ。
  25. 【請求項25】 前記マイクロプロセッサを、命令およ
    びデータがストアされる外部メモリにインタフェースさ
    せるためのバスインタフェースユニットと、 前記バスインタフェースユニットに結合される内部アド
    レスデータ通信バスと、 前記内部アドレスデータ通信バスおよび前記デコーダに
    結合されて、前記デコーダに命令源を供給する命令キャ
    ッシュと、 前記内部アドレスデータ通信バスおよび前記ロード/ス
    トア機能ユニットに結合されるデータキャッシュとをさ
    らに含み、 前記内部アドレスデータ通信バスは、前記外部メモリ、
    前記命令キャッシュおよび前記データキャッシュ間でア
    ドレスおよびデータ情報を通信する、請求項17に記載
    のマイクロプロセッサ。
  26. 【請求項26】 前記マイクロプロセッサに命令および
    データを与えるための外部メモリと組合わされる、請求
    項17に記載のマイクロプロセッサ。
  27. 【請求項27】 前記複数のオペランドバスが、オペラ
    ンドおよびオペランドタグの両方がそれに伝達されるバ
    スである、請求項18に記載のマイクロプロセッサ。
JP26331794A 1993-10-29 1994-10-27 スーパースカラマイクロプロセッサ Expired - Fee Related JP3670039B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14638293A 1993-10-29 1993-10-29
US146382 1993-10-29

Publications (2)

Publication Number Publication Date
JPH07182160A true JPH07182160A (ja) 1995-07-21
JP3670039B2 JP3670039B2 (ja) 2005-07-13

Family

ID=22517120

Family Applications (1)

Application Number Title Priority Date Filing Date
JP26331794A Expired - Fee Related JP3670039B2 (ja) 1993-10-29 1994-10-27 スーパースカラマイクロプロセッサ

Country Status (4)

Country Link
US (7) US5651125A (ja)
EP (1) EP0651321B1 (ja)
JP (1) JP3670039B2 (ja)
DE (1) DE69429061T2 (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271582A (ja) * 1994-03-31 1995-10-20 Internatl Business Mach Corp <Ibm> オペレーションの処理システム及び方法
JPH07271583A (ja) * 1994-03-31 1995-10-20 Internatl Business Mach Corp <Ibm> オペレーションの処理システム及び方法
WO2006114874A1 (ja) * 2005-04-21 2006-11-02 Fujitsu Limited プロセッサ装置
JP2006318051A (ja) * 2005-05-10 2006-11-24 Nec Electronics Corp マイクロプロセッサ及びマイクロプロセッサの制御方法
JP2008181481A (ja) * 2006-09-18 2008-08-07 Intel Corp 要求に基づく処理資源の割り当て
JP2008269067A (ja) * 2007-04-17 2008-11-06 Nec Computertechno Ltd ベクトル処理装置
USRE44365E1 (en) 1997-02-08 2013-07-09 Martin Vorbach Method of self-synchronization of configurable elements of a programmable module
US8869121B2 (en) 2001-08-16 2014-10-21 Pact Xpp Technologies Ag Method for the translation of programs for reconfigurable architectures
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US9047440B2 (en) 2000-10-06 2015-06-02 Pact Xpp Technologies Ag Logical cell array and bus system
US9075605B2 (en) 2001-03-05 2015-07-07 Pact Xpp Technologies Ag Methods and devices for treating and processing data

Families Citing this family (324)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370623B1 (en) * 1988-12-28 2002-04-09 Philips Electronics North America Corporation Multiport register file to accommodate data of differing lengths
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5398330A (en) * 1992-03-05 1995-03-14 Seiko Epson Corporation Register file backup queue
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
EP0636256B1 (en) 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
DE69308548T2 (de) 1992-05-01 1997-06-12 Seiko Epson Corp Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
EP0663083B1 (en) 1992-09-29 2000-12-20 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5628021A (en) * 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp System und Verfahren zur Änderung der Namen von Registern
US5630082A (en) * 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
DE69427265T2 (de) * 1993-10-29 2002-05-02 Advanced Micro Devices Inc Superskalarbefehlsdekoder
SG47981A1 (en) * 1994-03-01 1998-04-17 Intel Corp Pipeline process of instructions in a computer system
US5559975A (en) * 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor
US5632023A (en) * 1994-06-01 1997-05-20 Advanced Micro Devices, Inc. Superscalar microprocessor including flag operand renaming and forwarding apparatus
US5675758A (en) * 1994-11-15 1997-10-07 Advanced Micro Devices, Inc. Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations
BR9509845A (pt) 1994-12-02 1997-12-30 Intel Corp Microprocessador com operação de compactação de elementos de operação compósitos
JP3442175B2 (ja) * 1995-02-02 2003-09-02 株式会社リコー 中央演算処理装置
US5832297A (en) * 1995-04-12 1998-11-03 Advanced Micro Devices, Inc. Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
US5692170A (en) * 1995-04-28 1997-11-25 Metaflow Technologies, Inc. Apparatus for detecting and executing traps in a superscalar processor
US5867726A (en) * 1995-05-02 1999-02-02 Hitachi, Ltd. Microcomputer
US5968169A (en) * 1995-06-07 1999-10-19 Advanced Micro Devices, Inc. Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
US6112019A (en) * 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5845323A (en) * 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5987561A (en) 1995-08-31 1999-11-16 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US5694565A (en) * 1995-09-11 1997-12-02 International Business Machines Corporation Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US5850563A (en) * 1995-09-11 1998-12-15 International Business Machines Corporation Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
US5878266A (en) * 1995-09-26 1999-03-02 Advanced Micro Devices, Inc. Reservation station for a floating point processing unit
US5761105A (en) * 1995-09-26 1998-06-02 Advanced Micro Devices, Inc. Reservation station including addressable constant store for a floating point processing unit
US5748516A (en) * 1995-09-26 1998-05-05 Advanced Micro Devices, Inc. Floating point processing unit with forced arithmetic results
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
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
US5864707A (en) * 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
US5911057A (en) * 1995-12-19 1999-06-08 Texas Instruments Incorporated Superscalar microprocessor having combined register and memory renaming circuits, systems, and methods
US5852726A (en) * 1995-12-19 1998-12-22 Intel Corporation Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner
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
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
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
US5778246A (en) * 1995-12-27 1998-07-07 Intel Corporation Method and apparatus for efficient propagation of attribute bits in an instruction decode pipeline
US5930490A (en) * 1996-01-02 1999-07-27 Advanced Micro Devices, Inc. Microprocessor configured to switch instruction sets upon detection of a plurality of consecutive instructions
JP3658072B2 (ja) * 1996-02-07 2005-06-08 株式会社ルネサステクノロジ データ処理装置およびデータ処理方法
SE509499C2 (sv) * 1996-05-03 1999-02-01 Ericsson Telefon Ab L M Metod och anordning för hantering av villkorliga hopp vid instruktionsbehandling i en pipeline-arkitektur
US6108769A (en) 1996-05-17 2000-08-22 Advanced Micro Devices, Inc. Dependency table for reducing dependency checking hardware
EP1310864A2 (en) * 1996-05-30 2003-05-14 Matsushita Electric Industrial Co., Ltd. Method and circuit for conditional-flag rewriting control
US5784603A (en) * 1996-06-19 1998-07-21 Sun Microsystems, Inc. Fast handling of branch delay slots on mispredicted branches
US5652774A (en) * 1996-07-08 1997-07-29 International Business Machines Corporation Method and apparatus for decreasing the cycle times of a data processing system
US5802556A (en) * 1996-07-16 1998-09-01 International Business Machines Corporation Method and apparatus for correcting misaligned instruction data
US6049863A (en) * 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
US5867680A (en) * 1996-07-24 1999-02-02 Advanced Micro Devices, Inc. Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions
US5903740A (en) * 1996-07-24 1999-05-11 Advanced Micro Devices, Inc. Apparatus and method for retiring instructions in excess of the number of accessible write ports
US5946468A (en) * 1996-07-26 1999-08-31 Advanced Micro Devices, Inc. Reorder buffer having an improved future file for storing speculative instruction execution results
US5915110A (en) * 1996-07-26 1999-06-22 Advanced Micro Devices, Inc. Branch misprediction recovery in a reorder buffer having a future file
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US5882993A (en) 1996-08-19 1999-03-16 Advanced Micro Devices, Inc. Integrated circuit with differing gate oxide thickness and process for making same
US5884062A (en) * 1996-08-30 1999-03-16 Texas Instruments Incorporated Microprocessor with pipeline status integrity logic for handling multiple stage writeback exceptions
JP2933026B2 (ja) * 1996-08-30 1999-08-09 日本電気株式会社 複数命令並列発行/実行管理装置
JP2933027B2 (ja) * 1996-08-30 1999-08-09 日本電気株式会社 複数命令並列発行/実行管理装置
US6055598A (en) * 1996-09-26 2000-04-25 Vlsi Technology, Inc. Arrangement and method for allowing sequence-independent command responses across a computer bus bridge
US5991884A (en) * 1996-09-30 1999-11-23 Intel Corporation Method for reducing peak power in dispatching instructions to multiple execution units
US5754811A (en) * 1996-10-08 1998-05-19 Putrino; Michael Instruction dispatch queue for improved instruction cache to queue timing
WO1998020421A1 (en) * 1996-11-04 1998-05-14 Advanced Micro Devices, Inc. A way prediction structure
US6256745B1 (en) 1998-06-05 2001-07-03 Intel Corporation Processor having execution core sections operating at different clock rates
US6631454B1 (en) 1996-11-13 2003-10-07 Intel Corporation Processor and data cache with data storage unit and tag hit/miss logic operated at a first and second clock frequencies
US6175906B1 (en) 1996-12-06 2001-01-16 Advanced Micro Devices, Inc. Mechanism for fast revalidation of virtual tags
US5887160A (en) * 1996-12-10 1999-03-23 Fujitsu Limited Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor
US5881306A (en) * 1996-12-17 1999-03-09 International Business Machines Corporation Instruction fetch bandwidth analysis
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
US5983321A (en) * 1997-03-12 1999-11-09 Advanced Micro Devices, Inc. Cache holding register for receiving instruction packets and for providing the instruction packets to a predecode unit and instruction cache
US5881307A (en) * 1997-02-24 1999-03-09 Samsung Electronics Co., Ltd. Deferred store data read with simple anti-dependency pipeline inter-lock control in superscalar processor
US5909567A (en) * 1997-02-28 1999-06-01 Advanced Micro Devices, Inc. Apparatus and method for native mode processing in a RISC-based CISC processor
US5828873A (en) * 1997-03-19 1998-10-27 Advanced Micro Devices, Inc. Assembly queue for a floating point unit
US5887185A (en) * 1997-03-19 1999-03-23 Advanced Micro Devices, Inc. Interface for coupling a floating point unit to a reorder buffer
US5887161A (en) * 1997-03-31 1999-03-23 International Business Machines Corporation Issuing instructions in a processor supporting out-of-order execution
US5987235A (en) * 1997-04-04 1999-11-16 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte length instructions for fast scanning of instructions
US5974535A (en) * 1997-05-09 1999-10-26 International Business Machines Corporation Method and system in data processing system of permitting concurrent processing of instructions of a particular type
US5845101A (en) * 1997-05-13 1998-12-01 Advanced Micro Devices, Inc. Prefetch buffer for storing instructions prior to placing the instructions in an instruction cache
US6122729A (en) * 1997-05-13 2000-09-19 Advanced Micro Devices, Inc. Prefetch buffer which stores a pointer indicating an initial predecode position
US5923898A (en) * 1997-05-14 1999-07-13 International Business Machines Corporation System for executing I/O request when an I/O request queue entry matches a snoop table entry or executing snoop when not matched
JPH10333908A (ja) * 1997-05-30 1998-12-18 Mitsubishi Electric Corp 分岐予測方法
US5898851A (en) * 1997-06-11 1999-04-27 Advanced Micro Devices, Inc. Method and apparatus for five bit predecoding variable length instructions for scanning of a number of RISC operations
US6009511A (en) * 1997-06-11 1999-12-28 Advanced Micro Devices, Inc. Apparatus and method for tagging floating point operands and results for rapid detection of special floating point numbers
US5940602A (en) * 1997-06-11 1999-08-17 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte length instructions for scanning of a number of RISC operations
US5933626A (en) * 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for tracing microprocessor instructions
US5930491A (en) * 1997-06-18 1999-07-27 International Business Machines Corporation Identification of related instructions resulting from external to internal translation by use of common ID field for each group
US6044222A (en) * 1997-06-23 2000-03-28 International Business Machines Corporation System, method, and program product for loop instruction scheduling hardware lookahead
US6085305A (en) * 1997-06-25 2000-07-04 Sun Microsystems, Inc. Apparatus for precise architectural update in an out-of-order processor
US6052775A (en) * 1997-06-25 2000-04-18 Sun Microsystems, Inc. Method for non-intrusive cache fills and handling of load misses
US6094719A (en) * 1997-06-25 2000-07-25 Sun Microsystems, Inc. Reducing data dependent conflicts by converting single precision instructions into microinstructions using renamed phantom registers in a processor having double precision registers
US5884070A (en) * 1997-06-25 1999-03-16 Sun Microsystems, Inc. Method for processing single precision arithmetic operations in system where two single precision registers are aliased to one double precision register
US6035388A (en) 1997-06-27 2000-03-07 Sandcraft, Inc. Method and apparatus for dual issue of program instructions to symmetric multifunctional execution units
US6021489A (en) * 1997-06-30 2000-02-01 Intel Corporation Apparatus and method for sharing a branch prediction unit in a microprocessor implementing a two instruction set architecture
US5987259A (en) * 1997-06-30 1999-11-16 Sun Microsystems, Inc. Functional unit switching for the allocation of registers
US5978901A (en) * 1997-08-21 1999-11-02 Advanced Micro Devices, Inc. Floating point and multimedia unit with data type reclassification capability
US6289437B1 (en) * 1997-08-27 2001-09-11 International Business Machines Corporation Data processing system and method for implementing an efficient out-of-order issue mechanism
US5870575A (en) * 1997-09-22 1999-02-09 International Business Machines Corporation Indirect unconditional branches in data processing system emulation mode
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6029244A (en) 1997-10-10 2000-02-22 Advanced Micro Devices, Inc. Microprocessor including an efficient implementation of extreme value instructions
US6237077B1 (en) 1997-10-13 2001-05-22 Idea Corporation Instruction template for efficient processing clustered branch instructions
US6014739A (en) * 1997-10-27 2000-01-11 Advanced Micro Devices, Inc. Increasing general registers in X86 processors
US6032252A (en) * 1997-10-28 2000-02-29 Advanced Micro Devices, Inc. Apparatus and method for efficient loop control in a superscalar microprocessor
US5974542A (en) * 1997-10-30 1999-10-26 Advanced Micro Devices, Inc. Branch prediction unit which approximates a larger number of branch predictions using a smaller number of branch predictions and an alternate target indication
US6230259B1 (en) 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6157996A (en) * 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6279119B1 (en) * 1997-11-14 2001-08-21 Marathon Technologies Corporation Fault resilient/fault tolerant computing
US6112293A (en) * 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6199154B1 (en) 1997-11-17 2001-03-06 Advanced Micro Devices, Inc. Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access
US5974432A (en) * 1997-12-05 1999-10-26 Advanced Micro Devices, Inc. On-the-fly one-hot encoding of leading zero count
US5870578A (en) * 1997-12-09 1999-02-09 Advanced Micro Devices, Inc. Workload balancing in a microprocessor for reduced instruction dispatch stalling
US6061775A (en) * 1997-12-12 2000-05-09 Advanced Micro Devices, Inc. Apparatus and method for predicting a first microcode instruction of a cache line and using predecode instruction data to identify instruction boundaries and types
US6134650A (en) * 1997-12-12 2000-10-17 Advanced Micro Devices, Inc. Apparatus and method for predicting a first scanned instruction as microcode instruction prior to scanning predecode data
US6157986A (en) * 1997-12-16 2000-12-05 Advanced Micro Devices, Inc. Fast linear tag validation unit for use in microprocessor
US6016545A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor
US6016533A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
US6112018A (en) 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Apparatus for exchanging two stack registers
US5951671A (en) * 1997-12-18 1999-09-14 Advanced Micro Devices, Inc. Sharing instruction predecode information in a multiprocessor system
US6125441A (en) * 1997-12-18 2000-09-26 Advanced Micro Devices, Inc. Predicting a sequence of variable instruction lengths from previously identified length pattern indexed by an instruction fetch address
US6041405A (en) * 1997-12-18 2000-03-21 Advanced Micro Devices, Inc. Instruction length prediction using an instruction length pattern detector
US6018798A (en) * 1997-12-18 2000-01-25 Advanced Micro Devices, Inc. Floating point unit using a central window for storing instructions capable of executing multiple instructions in a single clock cycle
US6112296A (en) * 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Floating point stack manipulation using a register map and speculative top of stack values
US6012138A (en) * 1997-12-19 2000-01-04 Lsi Logic Corporation Dynamically variable length CPU pipeline for efficiently executing two instruction sets
US6047367A (en) * 1998-01-20 2000-04-04 International Business Machines Corporation Microprocessor with improved out of order support
US6009510A (en) * 1998-02-06 1999-12-28 Ip First Llc Method and apparatus for improved aligned/misaligned data load from cache
US5881260A (en) * 1998-02-09 1999-03-09 Hewlett-Packard Company Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction
US6065110A (en) * 1998-02-09 2000-05-16 International Business Machines Corporation Method and apparatus for loading an instruction buffer of a processor capable of out-of-order instruction issue
US6105129A (en) * 1998-02-18 2000-08-15 Advanced Micro Devices, Inc. Converting register data from a first format type to a second format type if a second type instruction consumes data produced by a first type instruction
US6141745A (en) * 1998-04-30 2000-10-31 Advanced Micro Devices, Inc. Functional bit identifying a prefix byte via a particular state regardless of type of instruction
US6175908B1 (en) 1998-04-30 2001-01-16 Advanced Micro Devices, Inc. Variable byte-length instructions using state of function bit of second byte of plurality of instructions bytes as indicative of whether first byte is a prefix byte
US6092182A (en) * 1998-06-24 2000-07-18 Advanced Micro Devices, Inc. Using ECC/parity bits to store predecode information
US6212621B1 (en) 1998-06-24 2001-04-03 Advanced Micro Devices Inc Method and system using tagged instructions to allow out-of-program-order instruction decoding
WO2000000878A2 (en) * 1998-06-26 2000-01-06 Chi Lan Wong Derek Methods for increasing instruction-level parallelism in microprocessors and digital systems
US6988183B1 (en) 1998-06-26 2006-01-17 Derek Chi-Lan Wong Methods for increasing instruction-level parallelism in microprocessors and digital system
US6278838B1 (en) * 1998-06-26 2001-08-21 Lsi Logic Corporation Peak-ahead FIFO for DVD system stream parsing
US6230262B1 (en) 1998-07-31 2001-05-08 Advanced Micro Devices, Inc. Processor configured to selectively free physical registers upon retirement of instructions
US6304953B1 (en) * 1998-07-31 2001-10-16 Intel Corporation Computer processor with instruction-specific schedulers
US6119223A (en) * 1998-07-31 2000-09-12 Advanced Micro Devices, Inc. Map unit having rapid misprediction recovery
US6122656A (en) 1998-07-31 2000-09-19 Advanced Micro Devices, Inc. Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US6240510B1 (en) * 1998-08-06 2001-05-29 Intel Corporation System for processing a cluster of instructions where the instructions are issued to the execution units having a priority order according to a template associated with the cluster of instructions
US6304960B1 (en) 1998-08-06 2001-10-16 Intel Corporation Validating prediction for branches in a cluster via comparison of predicted and condition selected tentative target addresses and validation of branch conditions
US6122727A (en) * 1998-08-24 2000-09-19 Advanced Micro Devices, Inc. Symmetrical instructions queue for high clock frequency scheduling
US6212623B1 (en) 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Universal dependency vector/queue entry
US6212622B1 (en) 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Mechanism for load block on store address generation
US6742111B2 (en) * 1998-08-31 2004-05-25 Stmicroelectronics, Inc. Reservation stations to increase instruction level parallelism
US6418527B1 (en) * 1998-10-13 2002-07-09 Motorola, Inc. Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
US6434689B2 (en) * 1998-11-09 2002-08-13 Infineon Technologies North America Corp. Data processing unit with interface for sharing registers by a processor and a coprocessor
US6223254B1 (en) * 1998-12-04 2001-04-24 Stmicroelectronics, Inc. Parcel cache
US6266763B1 (en) 1999-01-05 2001-07-24 Advanced Micro Devices, Inc. Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
SG81954A1 (en) * 1999-01-21 2001-07-24 Ibm Microprocessor with improved out of order support via register management with synchronization of multiple pipelines
US6260133B1 (en) * 1999-02-08 2001-07-10 Kabushiki Kaisha Toshiba Processor having operating instruction which uses operation units in different pipelines simultaneously
US6732259B1 (en) 1999-07-30 2004-05-04 Mips Technologies, Inc. Processor having a conditional branch extension of an instruction set architecture
US7242414B1 (en) 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
US6178496B1 (en) * 1999-02-17 2001-01-23 Motorola, Inc. System for converting instructions, and method therefore
US6338133B1 (en) 1999-03-12 2002-01-08 International Business Machines Corporation Measured, allocation of speculative branch instructions to processor execution units
US20040158695A1 (en) * 1999-05-03 2004-08-12 Laurent Ugen Method and apparatus for handling transfer of guarded instructions in a computer system
US7089404B1 (en) * 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
US6374345B1 (en) * 1999-07-22 2002-04-16 Advanced Micro Devices, Inc. Apparatus and method for handling tiny numbers using a super sticky bit in a microprocessor
US6631392B1 (en) 1999-07-30 2003-10-07 Mips Technologies, Inc. Method and apparatus for predicting floating-point exceptions
US6714197B1 (en) 1999-07-30 2004-03-30 Mips Technologies, Inc. Processor having an arithmetic extension of an instruction set architecture
US7346643B1 (en) * 1999-07-30 2008-03-18 Mips Technologies, Inc. Processor with improved accuracy for multiply-add operations
US6912559B1 (en) 1999-07-30 2005-06-28 Mips Technologies, Inc. System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit
US6697832B1 (en) 1999-07-30 2004-02-24 Mips Technologies, Inc. Floating-point processor with improved intermediate result handling
US7089367B1 (en) * 1999-08-11 2006-08-08 Intel Corporation Reducing memory access latencies from a bus using pre-fetching and caching
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
US6876991B1 (en) 1999-11-08 2005-04-05 Collaborative Decision Platforms, Llc. System, method and computer program product for a collaborative decision platform
US6542986B1 (en) 1999-11-09 2003-04-01 Advanced Micro Devices, Inc. Resolving dependencies among concurrently dispatched instructions in a superscalar microprocessor
US6539467B1 (en) * 1999-11-15 2003-03-25 Texas Instruments Incorporated Microprocessor with non-aligned memory access
US7107434B2 (en) * 1999-12-20 2006-09-12 Board Of Regents, The University Of Texas System, method and apparatus for allocating hardware resources using pseudorandom sequences
US6651161B1 (en) 2000-01-03 2003-11-18 Advanced Micro Devices, Inc. Store load forward predictor untraining
US6564315B1 (en) 2000-01-03 2003-05-13 Advanced Micro Devices, Inc. Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction
US6694424B1 (en) 2000-01-03 2004-02-17 Advanced Micro Devices, Inc. Store load forward predictor training
US6622235B1 (en) 2000-01-03 2003-09-16 Advanced Micro Devices, Inc. Scheduler which retries load/store hit situations
US6542984B1 (en) 2000-01-03 2003-04-01 Advanced Micro Devices, Inc. Scheduler capable of issuing and reissuing dependency chains
US6622237B1 (en) 2000-01-03 2003-09-16 Advanced Micro Devices, Inc. Store to load forward predictor training using delta tag
US6662361B1 (en) 2000-01-14 2003-12-09 International Business Machines Corporation Method, system, program, and data structures for transforming an instruction in a first bit architecture to an instruction in a second bit architecture
US6453405B1 (en) * 2000-02-18 2002-09-17 Texas Instruments Incorporated Microprocessor with non-aligned circular addressing
US7139743B2 (en) * 2000-04-07 2006-11-21 Washington University Associative database scanning and information retrieval using FPGA devices
US6711558B1 (en) * 2000-04-07 2004-03-23 Washington University Associative database scanning and information retrieval
US8095508B2 (en) * 2000-04-07 2012-01-10 Washington University Intelligent data storage and processing using FPGA devices
US6751724B1 (en) * 2000-04-19 2004-06-15 Motorola, Inc. Method and apparatus for instruction fetching
US6996596B1 (en) 2000-05-23 2006-02-07 Mips Technologies, Inc. Floating-point processor with operating mode having improved accuracy and high performance
US6735686B1 (en) * 2000-06-30 2004-05-11 Hitachi, Ltd. Data processing device including two instruction decoders for decoding branch instructions
US6877084B1 (en) 2000-08-09 2005-04-05 Advanced Micro Devices, Inc. Central processing unit (CPU) accessing an extended register set in an extended register mode
US6981132B2 (en) 2000-08-09 2005-12-27 Advanced Micro Devices, Inc. Uniform register addressing using prefix byte
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US6804815B1 (en) * 2000-09-18 2004-10-12 Cisco Technology, Inc. Sequence control mechanism for enabling out of order context processing
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US6484241B2 (en) * 2000-12-28 2002-11-19 International Business Machines Corporation Multiprocessor computer system with sectored cache line system bus protocol mechanism
US6553462B2 (en) * 2000-12-28 2003-04-22 International Business Machines Corporation Multiprocessor computer system with sectored cache line mechanism for load and store operations
US6571322B2 (en) * 2000-12-28 2003-05-27 International Business Machines Corporation Multiprocessor computer system with sectored cache line mechanism for cache intervention
US6449431B1 (en) * 2001-07-16 2002-09-10 Non Typical Inc. Enclosure for wildlife surveillance system and security apparatus therefore
US7162621B2 (en) * 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7599981B2 (en) 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7711763B2 (en) * 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US6804799B2 (en) * 2001-06-26 2004-10-12 Advanced Micro Devices, Inc. Using type bits to track storage of ECC and predecode bits in a level two cache
US7107439B2 (en) 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US7716330B2 (en) 2001-10-19 2010-05-11 Global Velocity, Inc. System and method for controlling transmission of data packets over an information network
US7107433B1 (en) * 2001-10-26 2006-09-12 Lsi Logic Corporation Mechanism for resource allocation in a digital signal processor based on instruction type information and functional priority and method of operation thereof
US7114059B2 (en) * 2001-11-05 2006-09-26 Intel Corporation System and method to bypass execution of instructions involving unreliable data during speculative execution
US20030088758A1 (en) * 2001-11-08 2003-05-08 Matthew Becker Methods and systems for determining valid microprocessor instructions
CA2365375A1 (en) * 2001-12-18 2003-06-18 Ibm Canada Limited-Ibm Canada Limitee Optimizing source code for iterative execution
US7093023B2 (en) * 2002-05-21 2006-08-15 Washington University Methods, systems, and devices using reprogrammable hardware for high-speed processing of streaming data to find a redefinable pattern and respond thereto
JP3800533B2 (ja) * 2002-06-28 2006-07-26 富士通株式会社 プログラムカウンタ制御方法及びプロセッサ
US7406587B1 (en) * 2002-07-31 2008-07-29 Silicon Graphics, Inc. Method and system for renaming registers in a microprocessor
US7711844B2 (en) 2002-08-15 2010-05-04 Washington University Of St. Louis TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks
US20040128480A1 (en) * 2002-12-31 2004-07-01 Intel Corporation Register file read port to support uop fusion
US20040148497A1 (en) * 2003-01-27 2004-07-29 Ali Vahidsafa Method and apparatus for determining an early reifetch address of a mispredicted conditional branch instruction in an out of order multi-issue processor
US20040199749A1 (en) * 2003-04-03 2004-10-07 Robert Golla Method and apparatus to limit register file read ports in an out-of-order, multi-stranded processor
EP1627284B1 (en) 2003-05-23 2018-10-24 IP Reservoir, LLC Intelligent data storage and processing using fpga devices
US10572824B2 (en) 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
US7321964B2 (en) * 2003-07-08 2008-01-22 Advanced Micro Devices, Inc. Store-to-load forwarding buffer using indexed lookup
WO2006082091A2 (en) * 2005-02-07 2006-08-10 Pact Xpp Technologies Ag Low latency massive parallel data processing device
GB0320386D0 (en) * 2003-08-30 2003-10-01 Ibm A method, apparatus and computer program for executing a program
US7117290B2 (en) 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US7043626B1 (en) 2003-10-01 2006-05-09 Advanced Micro Devices, Inc. Retaining flag value associated with dead result data in freed rename physical register with an indicator to select set-aside register instead for renaming
US7167989B2 (en) * 2003-10-14 2007-01-23 Intel Corporation Processor and methods to reduce power consumption of processor components
US7707389B2 (en) * 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
US7246215B2 (en) * 2003-11-26 2007-07-17 Intel Corporation Systolic memory arrays
US8301844B2 (en) * 2004-01-13 2012-10-30 Hewlett-Packard Development Company, L.P. Consistency evaluation of program execution across at least one memory barrier
US8281079B2 (en) * 2004-01-13 2012-10-02 Hewlett-Packard Development Company, L.P. Multi-processor system receiving input from a pre-fetch buffer
GB2410097B (en) * 2004-01-13 2006-11-01 Advanced Risc Mach Ltd A data processing apparatus and method for performing data processing operations on floating point data elements
US7409500B2 (en) * 2004-01-13 2008-08-05 Hewlett-Packard Development Company, L.P. Systems and methods for employing speculative fills
US7406565B2 (en) * 2004-01-13 2008-07-29 Hewlett-Packard Development Company, L.P. Multi-processor systems and methods for backup for non-coherent speculative fills
US7376794B2 (en) * 2004-01-13 2008-05-20 Hewlett-Packard Development Company, L.P. Coherent signal in a multi-processor system
US7383409B2 (en) * 2004-01-13 2008-06-03 Hewlett-Packard Development Company, L.P. Cache systems and methods for employing speculative fills
US7360069B2 (en) * 2004-01-13 2008-04-15 Hewlett-Packard Development Company, L.P. Systems and methods for executing across at least one memory barrier employing speculative fills
US7340565B2 (en) * 2004-01-13 2008-03-04 Hewlett-Packard Development Company, L.P. Source request arbitration
US7409503B2 (en) * 2004-01-13 2008-08-05 Hewlett-Packard Development Company, L.P. Register file systems and methods for employing speculative fills
US7602785B2 (en) 2004-02-09 2009-10-13 Washington University Method and system for performing longest prefix matching for network address lookup using bloom filters
US7613950B2 (en) * 2004-02-27 2009-11-03 Hewlett-Packard Development Company, L.P. Detecting floating point hardware failures
JP2005276104A (ja) * 2004-03-26 2005-10-06 Nec Electronics Corp マイクロコンピュータ
US7831642B1 (en) * 2004-09-30 2010-11-09 Symantec Operating Corporation Page cache management for a shared file
US7395415B2 (en) * 2004-09-30 2008-07-01 Intel Corporation Method and apparatus to provide a source operand for an instruction in a processor
US7733347B2 (en) * 2004-11-05 2010-06-08 Microsoft Corporation Automated construction of shader programs
US7800620B2 (en) 2004-11-05 2010-09-21 Microsoft Corporation Optimizing automated shader program construction
US8161252B1 (en) * 2005-08-01 2012-04-17 Nvidia Corporation Memory interface with dynamic selection among mirrored storage locations
US7237095B1 (en) 2005-08-04 2007-06-26 Advanced Micro Devices, Inc. Optimum power efficient shifting algorithm for schedulers
US7376817B2 (en) * 2005-08-10 2008-05-20 P.A. Semi, Inc. Partial load/store forward prediction
US20070083737A1 (en) * 2005-08-16 2007-04-12 Ibm Corporation Processor with efficient shift/rotate instruction execution
US7328330B2 (en) * 2005-08-16 2008-02-05 International Business Machines Corporation Queue design supporting dependency checking and issue for SIMD instructions within a general purpose processor
US7373486B2 (en) * 2005-08-29 2008-05-13 P.A. Semi, Inc. Partially decoded register renamer
US20070198812A1 (en) * 2005-09-27 2007-08-23 Ibm Corporation Method and apparatus for issuing instructions from an issue queue including a main issue queue array and an auxiliary issue queue array in an information handling system
US7350056B2 (en) * 2005-09-27 2008-03-25 International Business Machines Corporation Method and apparatus for issuing instructions from an issue queue in an information handling system
US7996662B2 (en) * 2005-11-17 2011-08-09 Apple Inc. Floating point status/control register encodings for speculative register field
US7702629B2 (en) * 2005-12-02 2010-04-20 Exegy Incorporated Method and device for high performance regular expression pattern matching
US7954114B2 (en) 2006-01-26 2011-05-31 Exegy Incorporated Firmware socket module for FPGA-based pipeline processing
US7636703B2 (en) * 2006-05-02 2009-12-22 Exegy Incorporated Method and apparatus for approximate pattern matching
US7840482B2 (en) 2006-06-19 2010-11-23 Exegy Incorporated Method and system for high speed options pricing
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US7624251B2 (en) * 2006-11-01 2009-11-24 Apple Inc. Instructions for efficiently accessing unaligned partial vectors
US7620797B2 (en) * 2006-11-01 2009-11-17 Apple Inc. Instructions for efficiently accessing unaligned vectors
US7660793B2 (en) 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US8326819B2 (en) 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
US8959500B2 (en) * 2006-12-11 2015-02-17 Nytell Software LLC Pipelined processor and compiler/scheduler for variable number branch delay slots
US7725690B2 (en) * 2007-02-13 2010-05-25 Advanced Micro Devices, Inc. Distributed dispatch with concurrent, out-of-order dispatch
US7870350B1 (en) * 2007-06-07 2011-01-11 Nvidia Corporation Write buffer for read-write interlocks
US8561037B2 (en) * 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US9710384B2 (en) * 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US8095735B2 (en) 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US7877559B2 (en) * 2007-11-26 2011-01-25 Globalfoundries Inc. Mechanism to accelerate removal of store operations from a queue
US7882325B2 (en) * 2007-12-21 2011-02-01 Intel Corporation Method and apparatus for a double width load using a single width load port
US10229453B2 (en) 2008-01-11 2019-03-12 Ip Reservoir, Llc Method and system for low latency basket calculation
US7913067B2 (en) * 2008-02-20 2011-03-22 International Business Machines Corporation Method and system for overlapping execution of instructions through non-uniform execution pipelines in an in-order processor
US8374986B2 (en) 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
US8806505B1 (en) * 2008-06-30 2014-08-12 Bank Of America Corporation Service and project request processing within a business enterprise
EP2370946A4 (en) 2008-12-15 2012-05-30 Exegy Inc METHOD AND DEVICE FOR HIGH-SPEED PROCESSING OF FINANCIAL MARKET DEFINITIONS
US8539397B2 (en) * 2009-06-11 2013-09-17 Advanced Micro Devices, Inc. Superscalar register-renaming for a stack-addressed architecture
US8150902B2 (en) 2009-06-19 2012-04-03 Singular Computing Llc Processing with compact arithmetic processing element
US8423745B1 (en) 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element
CA2820898C (en) 2010-12-09 2020-03-10 Exegy Incorporated Method and apparatus for managing orders in financial markets
US9740494B2 (en) 2011-04-29 2017-08-22 Arizona Board Of Regents For And On Behalf Of Arizona State University Low complexity out-of-order issue logic using static circuits
WO2013095533A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Fault-aware mapping for shared last level cache (llc)
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US9990393B2 (en) 2012-03-27 2018-06-05 Ip Reservoir, Llc Intelligent feed switch
US10650452B2 (en) 2012-03-27 2020-05-12 Ip Reservoir, Llc Offload processing of data packets
US11436672B2 (en) 2012-03-27 2022-09-06 Exegy Incorporated Intelligent switch for processing financial market data
US9128725B2 (en) 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9600289B2 (en) 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US9672044B2 (en) * 2012-08-01 2017-06-06 Nxp Usa, Inc. Space efficient checkpoint facility and technique for processor with integrally indexed register mapping and free-list arrays
US10102260B2 (en) 2012-10-23 2018-10-16 Ip Reservoir, Llc Method and apparatus for accelerated data translation using record layout detection
US9633093B2 (en) 2012-10-23 2017-04-25 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
WO2014066416A2 (en) 2012-10-23 2014-05-01 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
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
US10467010B2 (en) 2013-03-15 2019-11-05 Intel Corporation Method and apparatus for nearest potential store tagging
US10152327B2 (en) * 2013-03-15 2018-12-11 Intel Corporation Apparatus for gating a load operation based on entries of a prediction table
US9535744B2 (en) * 2013-06-29 2017-01-03 Intel Corporation Method and apparatus for continued retirement during commit of a speculative region of code
US9367317B2 (en) * 2013-07-03 2016-06-14 Intel Corporation Loop streaming detector for standard and complex instruction types
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US9983990B1 (en) * 2013-11-21 2018-05-29 Altera Corporation Configurable storage circuits with embedded processing and control circuitry
US10616333B2 (en) * 2014-04-09 2020-04-07 Stmicroelectronics S.R.L. System for the management of out-of-order traffic in an interconnect network and corresponding method and integrated circuit
GB2541577A (en) 2014-04-23 2017-02-22 Ip Reservoir Llc Method and apparatus for accelerated data translation
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
US9824058B2 (en) * 2014-11-14 2017-11-21 Cavium, Inc. Bypass FIFO for multiple virtual channels
US9658963B2 (en) * 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
US9858078B2 (en) 2015-06-02 2018-01-02 International Business Machines Corporation Speculative load data in byte-write capable register file and history buffer for a multi-slice microprocessor
US11275590B2 (en) * 2015-08-26 2022-03-15 Huawei Technologies Co., Ltd. Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory
US10942943B2 (en) 2015-10-29 2021-03-09 Ip Reservoir, Llc Dynamic field data translation to support high performance stream data processing
US9870039B2 (en) 2015-12-15 2018-01-16 International Business Machines Corporation Reducing power consumption in a multi-slice computer processor
US10514925B1 (en) 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads
US9825647B1 (en) * 2016-09-28 2017-11-21 Intel Corporation Method and apparatus for decompression acceleration in multi-cycle decoder based platforms
WO2018119035A1 (en) 2016-12-22 2018-06-28 Ip Reservoir, Llc Pipelines for hardware-accelerated machine learning
CN116881180A (zh) 2017-05-19 2023-10-13 莫维迪乌斯有限公司 用于当取回像素核时降低存储器延迟的方法、系统和设备
US11126663B2 (en) 2017-05-25 2021-09-21 Intel Corporation Method and apparatus for energy efficient decompression using ordered tokens
US11086625B2 (en) 2019-09-10 2021-08-10 Apple Inc. Compression assist instructions
CN111459549B (zh) * 2020-04-07 2022-11-01 上海兆芯集成电路有限公司 具有高度领先分支预测器的微处理器
US11650957B2 (en) * 2021-06-01 2023-05-16 International Business Machines Corporation Receiving at a cache node notification of changes to files in a source file system served from a cache file system at the cache node
US11645238B2 (en) 2021-06-01 2023-05-09 International Business Machines Corporation Notifying a cache file system of changes to files in a source file system served from the cache file system
CN114116533B (zh) * 2021-11-29 2023-03-10 海光信息技术股份有限公司 利用共享存储器存储数据的方法
CN117348933B (zh) * 2023-12-05 2024-02-06 睿思芯科(深圳)技术有限公司 一种处理器及计算机系统

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3781808A (en) * 1972-10-17 1973-12-25 Ibm Virtual memory system
AT354159B (de) * 1975-02-10 1979-12-27 Siemens Ag Assoziativspeicher mit getrennt assoziierbaren bereichen
US4161784A (en) * 1978-01-05 1979-07-17 Honeywell Information Systems, Inc. Microprogrammable floating point arithmetic unit capable of performing arithmetic operations on long and short operands
US4928223A (en) * 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
US4713750A (en) * 1983-03-31 1987-12-15 Fairchild Camera & Instrument Corporation Microprocessor with compact mapped programmable logic array
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 株式会社日立製作所 デ−タ処理装置
US4992934A (en) * 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
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
US5222230A (en) * 1988-01-29 1993-06-22 Texas Instruments Incorporated Circuitry for transferring data from a data bus and temporary register into a plurality of input registers on clock edges
US5155817A (en) * 1988-04-01 1992-10-13 Kabushiki Kaisha Toshiba Microprocessor
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
US4940908A (en) * 1989-04-27 1990-07-10 Advanced Micro Devices, Inc. Method and apparatus for reducing critical speed path delays
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5129067A (en) * 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5185868A (en) * 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
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
US5077692A (en) * 1990-03-05 1991-12-31 Advanced Micro Devices, Inc. Information storage device with batch select capability
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
US5128888A (en) * 1990-04-02 1992-07-07 Advanced Micro Devices, Inc. Arithmetic unit having multiple accumulators
US5095458A (en) * 1990-04-02 1992-03-10 Advanced Micro Devices, Inc. Radix 4 carry lookahead tree and redundant cell therefor
US5206828A (en) * 1990-04-02 1993-04-27 Advanced Micro Devices, Inc. Special carry save adder for high speed iterative division
US5058048A (en) * 1990-04-02 1991-10-15 Advanced Micro Devices, Inc. Normalizing pipelined floating point processing unit
US5128891A (en) * 1990-04-02 1992-07-07 Advanced Micro Devices, Inc. High speed divider with square root capability
US5053631A (en) * 1990-04-02 1991-10-01 Advanced Micro Devices, Inc. Pipelined floating point processing unit
US5157780A (en) * 1990-06-12 1992-10-20 Advanced Micro Devices, Inc. Master-slave checking system
US5222244A (en) * 1990-12-20 1993-06-22 Intel Corporation Method of modifying a microinstruction with operands specified by an instruction held in an alias register
US5247644A (en) * 1991-02-06 1993-09-21 Advanced Micro Devices, Inc. Processing system with improved sequential memory accessing
EP0498654B1 (en) * 1991-02-08 2000-05-10 Fujitsu Limited Cache memory processing instruction data and data processor including the same
EP1526446A3 (en) * 1991-07-08 2007-04-04 Seiko Epson Corporation Extensible RISC microprocessor architecture
US5345569A (en) * 1991-09-20 1994-09-06 Advanced Micro Devices, Inc. Apparatus and method for resolving dependencies among a plurality of instructions within a storage device
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
US5337415A (en) * 1992-12-04 1994-08-09 Hewlett-Packard Company Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
US5465373A (en) * 1993-01-08 1995-11-07 International Business Machines Corporation Method and system for single cycle dispatch of multiple instructions in a superscalar processor system
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
IE80854B1 (en) * 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution
US5500943A (en) * 1993-11-02 1996-03-19 Motorola, Inc. Data processor with rename buffer and FIFO buffer for in-order instruction completion

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271583A (ja) * 1994-03-31 1995-10-20 Internatl Business Mach Corp <Ibm> オペレーションの処理システム及び方法
JPH07271582A (ja) * 1994-03-31 1995-10-20 Internatl Business Mach Corp <Ibm> オペレーションの処理システム及び方法
USRE45223E1 (en) 1997-02-08 2014-10-28 Pact Xpp Technologies Ag Method of self-synchronization of configurable elements of a programmable module
USRE44365E1 (en) 1997-02-08 2013-07-09 Martin Vorbach Method of self-synchronization of configurable elements of a programmable module
USRE44383E1 (en) 1997-02-08 2013-07-16 Martin Vorbach Method of self-synchronization of configurable elements of a programmable module
USRE45109E1 (en) 1997-02-08 2014-09-02 Pact Xpp Technologies Ag Method of self-synchronization of configurable elements of a programmable module
US9047440B2 (en) 2000-10-06 2015-06-02 Pact Xpp Technologies Ag Logical cell array and bus system
US9075605B2 (en) 2001-03-05 2015-07-07 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US8869121B2 (en) 2001-08-16 2014-10-21 Pact Xpp Technologies Ag Method for the translation of programs for reconfigurable architectures
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US7984271B2 (en) 2005-04-21 2011-07-19 Fujitsu Limited Processor device for out-of-order processing having reservation stations utilizing multiplexed arithmetic pipelines
WO2006114874A1 (ja) * 2005-04-21 2006-11-02 Fujitsu Limited プロセッサ装置
JP2006318051A (ja) * 2005-05-10 2006-11-24 Nec Electronics Corp マイクロプロセッサ及びマイクロプロセッサの制御方法
JP2008181481A (ja) * 2006-09-18 2008-08-07 Intel Corp 要求に基づく処理資源の割り当て
JP2008269067A (ja) * 2007-04-17 2008-11-06 Nec Computertechno Ltd ベクトル処理装置

Also Published As

Publication number Publication date
US5655097A (en) 1997-08-05
JP3670039B2 (ja) 2005-07-13
US5867683A (en) 1999-02-02
US5867682A (en) 1999-02-02
US5751981A (en) 1998-05-12
DE69429061T2 (de) 2002-07-18
EP0651321A1 (en) 1995-05-03
DE69429061D1 (de) 2001-12-20
US5655098A (en) 1997-08-05
US5651125A (en) 1997-07-22
EP0651321B1 (en) 2001-11-14
US5664136A (en) 1997-09-02

Similar Documents

Publication Publication Date Title
JP3670039B2 (ja) スーパースカラマイクロプロセッサ
JP3662296B2 (ja) スーパースカラマイクロプロセッサおよびropを処理する方法
JP3628379B2 (ja) 命令を処理するためのパイプラインを有するマイクロプロセッサ装置およびそれにおいて用いるためのプログラムカウンタ値を発生する装置
US5832297A (en) Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
US5511175A (en) Method an apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US6298423B1 (en) High performance load/store functional unit and data cache
US5734881A (en) Detecting short branches in a prefetch buffer using target location information in a branch target cache
JP2939003B2 (ja) 浮動小数点装置を有する高性能多重プロセッサ及びその性能を改良する方法
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
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
US5860107A (en) Processor and method for store gathering through merged store operations
US5960467A (en) Apparatus for efficiently providing memory operands for instructions
US5774710A (en) Cache line branch prediction scheme that shares among sets of a set associative cache
JPH06103167A (ja) 多重プロセッサ・システムにおけるインヴァリデート及び戻りデータのための組合せキュー
JPH0659887A (ja) 高性能プロセッサ用の分岐予測
JPH0695964A (ja) 多重プロセッサ・システム用のエラー遷移モード
US5649137A (en) Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
JP2815236B2 (ja) スーパースカーラマイクロプロセッサのための命令ディスパッチ方法及びレジスタ競合についてのチェック方法
US6219784B1 (en) Processor with N adders for parallel target addresses calculation
JPH0659979A (ja) 高性能プロセッサ用のキャッシュ・セット選択
JPH0659882A (ja) 高性能プロセッサ用のマスク処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040420

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040716

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040722

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041109

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050208

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050215

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: 20050322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050413

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: 20090422

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090422

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100422

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110422

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110422

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120422

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120422

Year of fee payment: 7

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20120422

Year of fee payment: 7

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees