JP2001523854A - ルックアヘッド結果を発生し移動命令、比較命令および簡単な算術命令をまとめるよう構成されるプロセッサ - Google Patents

ルックアヘッド結果を発生し移動命令、比較命令および簡単な算術命令をまとめるよう構成されるプロセッサ

Info

Publication number
JP2001523854A
JP2001523854A JP2000521433A JP2000521433A JP2001523854A JP 2001523854 A JP2001523854 A JP 2001523854A JP 2000521433 A JP2000521433 A JP 2000521433A JP 2000521433 A JP2000521433 A JP 2000521433A JP 2001523854 A JP2001523854 A JP 2001523854A
Authority
JP
Japan
Prior art keywords
instruction
look
operand
unit
ahead
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
JP2000521433A
Other languages
English (en)
Other versions
JP3866918B2 (ja
JP2001523854A5 (ja
Inventor
ウィット,デイビッド・ビィ
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 JP2001523854A publication Critical patent/JP2001523854A/ja
Publication of JP2001523854A5 publication Critical patent/JP2001523854A5/ja
Application granted granted Critical
Publication of JP3866918B2 publication Critical patent/JP3866918B2/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/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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/3824Operand accessing
    • G06F9/383Operand 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 プロセッサは、1以上の命令のソースオペランドに対応するオペランド情報(オペランド値を生成するであろう命令を特定するタグまたはオペランドのいずれか)を受けるよう構成されるルックアヘッドアドレス/結果計算ユニットを含む。もしオペランドが利用可能であれば、ルックアヘッドアドレス/結果計算ユニットは、命令のメモリオペランド用のルックアヘッドアドレスまたは命令の機能的命令演算に対応するルックアヘッド結果のいずれかを発生するであろう。ルックアヘッドアドレスは、命令に対応するメモリ演算の早期開始のためロード/ストアユニットへ与えられるであろう。ルックアヘッド結果は、投機的オペランドソース(フューチャファイル)内での更新のため投機的オペランドソースへ与えられるであろう。それによってレジスタに対するルックアヘッド状態がパイプライン内で早期に与えられるであろう。その後の命令は、ルックアヘッド状態を受取るであろうし、早期に付加的なルックアヘッド状態を発生するため、そのルックアヘッド状態を使用するであろう。他方、その後の命令は、ルックアヘッド状態を受取るであろうし、そのため、(前の命令の実行を命令ウインドウ内で待つのではなく)命令ウインドウへのディスパッチに際し実行の準備ができているであろう。一実施例では、プロセッサはさらに、ルックアヘッド結果をその後同時にデコードされる命令(ライン内依存性)にまとめるよう構成されるオペランドまとめユニットを含む。さらに、オペランドまとめユニットは、比較命令を、比較の結果に依存する次の分岐命令にまとめるように構成され得る。

Description

【発明の詳細な説明】
【0001】
【発明の分野】
この発明は、プロセッサの分野に関し、特に、プロセッサ内の命令実行の並列
化に関する。
【0002】
【従来の技術】
スーパースカラプロセッサは、1クロックサイクルあたり複数の命令をディス
パッチし実行することによって、かつ、設計と一貫した可能な限り短いクロック
サイクルタイムで動作することによって、高い性能を達成しようとする。所与の
プロセッサが、1クロックサイクルあたり複数の命令をディスパッチおよび/ま
たは実行することに成功する範囲内で、高い性能が実現されよう。1クロックサ
イクルあたりにディスパッチされる命令の平均数を増加させるため、プロセッサ
設計者は、より幅の広い発行速度を用いるスーパースカラプロセッサを設計して
きた。「発行が広い」スーパースカラプロセッサは、「発行が狭い」スーパース
カラプロセッサがディスパッチできるよりも、クロックサイクル当りディスパッ
チ(または発行)することができる命令の最大数がより大きい。発行が狭いプロ
セッサが処理できる数よりも、ディスパッチ可能な命令の数が多いクロックサイ
クルの間に、発行が広いプロセッサはより多くの命令をディスパッチするであろ
うし、それによって、1クロックサイクルあたりにディスパッチされる命令の平
均数の増加を達成する。
【0003】 残念ながら、より幅の広い発行速度をサポートするためには、通常、プロセッ
サ内の実行ハードウェアの量を増やす必要がある。もし十分な実行ハードウェア
が設けられていなければ、そのプロセッサが同時に多数の命令を発行できるもの
であったとしても、プロセッサの命令のスループットに悪影響があるであろう。
命令ハードウェアは、半導体基板面積の相当量を占めるであろうから、プロセッ
サの総ダイサイズしたがって、プロセッサのコストを増加させる。
【0004】 加えて、多くの命令は、簡単な実行ハードウェアによって処理され得る比較的
簡単な命令である。たとえば、レジスタオペランドのみを指定する移動命令(す
なわちソースレジスタから行先レジスタへの移動)は、実行のためにほとんどハ
ードウェアを必要としない簡単な命令である。メモリおよびレジスタのオペラン
ドを有する移動命令は、アドレス発生を伴う比較的小さな付加的ハードウェアし
か伴わない。さらに、レジスタオペランドを有する加算系命令(たとえば加算/
減算/インクリメント/デクリメント)も同様に比較的簡単な命令である。さら
に、通常のコードシーケンスにおいては、簡単な命令の方が比較的頻繁であろう
。しかし、実行ハードウェアはさらに、複雑な命令の一方を実行できなければな
らない。いくつかのスーパースカラプロセッサは、複雑な実行ユニットおよび簡
単な実行ユニットの両方を設け、実行ユニットへの命令の発行を、簡単な実行ユ
ニットは簡単な命令のみを受取り、より複雑なユニットは簡単な命令または複雑
な命令を受取るように制御することによって、よりコストの低い実行ハードウェ
アを提供しようと試みてきた。このような方策によって実行ハードウェアにより
占有される面積は減じられるであろうが、発行論理はより複雑となる。複雑な論
理はより多くの面積をとるであろうし、または、クロックサイクルタイムを律速
するであろう。したがって、簡単な命令および複雑な命令の混ざったものを処理
するためのより効率的な方法が望ましい。
【0005】 より高いクロック周波数(すなわちより短いクロックサイクルタイム)をサポ
ートするため、スーパースカラプロセッサはより幅の広い発行速度と同時により
長いパイプライン(すなわちより多くの段を含むパイプライン)を用いてきた。
パイプラインがより長いとより高いクロック周波数が達成されるであろうが、パ
イプラインがより長いと、同時に付加的な設計の課題が生じる。特に、前の命令
の実行が完了する前に、パイプラインにより多くの命令がフェッチされ投入され
るかもしれないので、並列実行をサポートするためにフォワードのためのハード
ウェアの追加が必要であろう。たとえば、前の命令の実行よりも前に、オペラン
ドフェッチ段よりも先に進む命令が多くなるだろう。もしこれらの命令が前の命
令に依存するものであれば、これらの命令のためのオペランドは命令がオペラン
ドフェッチ段に到達したときに利用可能ではないであろう。命令がパイプライン
を通じて実行へと進むにつれて命令に対しオペランドを与えるためフォワードの
ためのハードウェアが設けられていれば、これらの命令が次のパイプライン段へ
進むことは可能であろう。残念ながら、フォワードのためのハードウェアは、面
積の点と同時に複雑性の点でもコストがかかるであろう。したがって、依存型命
令に対しオペランドを与えるためのより効率的な解決策が望ましい。
【0006】 ここでは、「依存」という語は、第2の命令の実行よりも前に第1の命令が実
行されていることを第2の命令が必要とするような、第1の命令とそれに続く第
2の命令との関係を指すため使用する。たとえば、第2の命令が、第1の命令の
実行を通じて発生されるソースオペランドを含むようなときである。一般に、オ
ペランドとは、命令の実行の間にそれに対する操作が行なわれる値である。特定
の命令についてのオペランドが命令内にエンコードされたオペランド指示子を通
じて位置特定される。たとえば、あるオペランドは、プロセッサ内で用いられる
レジスタ内に記憶されるであろう。命令内にエンコードされたレジスタオペラン
ド指示子は、オペランドを記憶している特定のレジスタを選択する。さらに、レ
ジスタオペランド指示子は、レジスタアドレスまたはレジスタ番号とも呼ばれる
。一方、他の命令は、プロセッサと結合されたメインメモリ内のメモリ場所内に
記憶されたメモリオペランドを指定するであろう。メモリアドレスもオペランド
指示子を通じて指定される。たとえば、命令は、メモリオペランドを記憶するメ
モリ場所を特定する変位を含むであろう。他の命令は、メモリアドレスを形成す
るために使用されるレジスタオペランドを指定するアドレスオペランド指示子を
含むであろう。もしそのオペランドが命令のための入力値であれば、オペランド
はソースオペランドであろう。もしそのオペランドが命令の結果であれば、オペ
ランドは行先オペランドであろう。行先オペランド指示子は、命令実行の結果が
記憶されるべき記憶場所を指定する。
【0007】
【発明の概要】
上記問題は、この発明によるプロセッサによりほぼ解決される。プロセッサは
、1以上の命令のソースオペランドに対応するオペランド情報(オペランド値を
生成するであろう命令を特定するタグまたはオペランドのいずれか)を受取るよ
う構成されるルックアヘッドアドレス/結果計算ユニットを含む。もしオペラン
ドが利用可能であれば、ルックアヘッドアドレス/結果計算ユニットは、命令の
メモリオペランドのためのルックアヘッドアドレス、または、命令の機能的命令
演算に対応するルックアヘッド結果のいずれかを発生するであろう。ルックアヘ
ッドアドレスは、命令に対応するメモリ演算の早期開始のためロード/ストアユ
ニットへ与えられるであろう。ルックアヘッド結果は、投機的オペランドソース
(たとえばフューチャファイル)へ、その中での更新のため与えられるであろう
。レジスタのためのルックアヘッド状態が、パイプライン内に早期に与えられる
という効果がある。その後の命令はそのルックアヘッド状態を受取り、そのルッ
クアヘッド状態を使用して早期にルックアヘッド状態を追加して発生するであろ
う。他方、その後の命令はそのルックアヘッド状態を受取るであろうし、そして
それによって、(前の命令の実行を命令ウィンドウ内で待つのではなく)命令ウ
ィンドウへディスパッチされればすぐ実行できる状態となるであろう。
【0008】 プロセッサは、さまざまな態様でより効率的なフォワーディングを達成するで
あろう。たとえば、多数の命令がオペランドフェッチに際してルックアヘッド結
果を受取ってもよく、その場合その後のオペランドのフォワーディングを待つ必
要がない。さらに、いくつかの命令オペランドはルックアヘッドアドレス/結果
計算ユニットにおいて完了されるであろうから、幅の広い発行速度をサポートす
るために必要とされる機能ユニットがより少ないであろう。したがって、より少
ないフォワーディングバスが(機能ユニットがより少ないことを反映して)実現
されるであろう。加えて、ルックアヘッドオペランドを生成する命令がプロセッ
サパイプラインの実行段に到達するよりも前に、命令に対するルックアヘッドオ
ペランドを提供することによって、性能が上がるであろう。
【0009】 一実施例においては、プロセッサはさらに、ルックアヘッド結果をその後の、
同時にデコードされる命令(ライン内依存性)にまとめる(collapse)よう構成
されるオペランドまとめユニットを含む。さらに、オペランドまとめユニットは
、比較命令を、比較の結果に依存する次の分岐命令内にまとめるよう構成される
であろう。比較/分岐の組合せは単一の機能ユニットしか占めないという効果が
ある。
【0010】 概括すると、この発明は、ライン内依存性チェックユニット、ルックアヘッド
計算ユニット、オペランドまとめユニットおよび1以上の命令ウィンドウを含む
プロセッサを企図する。ライン内依存性チェックユニットは、命令のラインに対
応する複数のオペランド指示子を受取るよう結合され、複数のオペランド指示子
を比較することによって、命令のライン中の命令の間の依存性を判定するよう構
成される。ルックアヘッド計算ユニットは、複数のオペランド指示子により指定
される1以上のオペランドを受けるよう結合され、もし、命令のライン内の第1
の命令に対応するルックアヘッド結果を発生するために第1の命令により使用さ
れる各オペランドが1以上のオペランド中にあれば、ルックアヘッド結果を計算
するよう構成される。オペランドまとめユニットは、ルックアヘッド計算ユニッ
トおよびライン内依存性チェックユニットと結合され、ルックアヘッド結果を命
令ライン中の第2の命令のオペランドとして提供するよう構成される。オペラン
ドまとめユニットは、ルックアヘッド結果をオペランドとして(i)ルックアヘ
ッド計算ユニットからのルックアヘッド結果が有効であるとの表示に応答して、
かつ(ii)ライン内依存性チェックユニットからの第2の命令は第1の命令に依
存するとの表示に応答して、提供するであろう。命令ウィンドウは、オペランド
まとめユニットと結合され、対応するオペランドが与えられるまで命令を記憶し
その後実行のためにその命令を選択するよう構成される。オペランドまとめユニ
ットは、もしルックアヘッド結果が有効であれば、ルックアヘッド結果により表
わされる第1の命令の少なくとも第1の命令演算の実行を禁止するよう命令ウィ
ンドウに信号を送るよう構成される。
【0011】 この発明はさらに、オペランドまとめユニットおよび1以上の命令ウィンドウ
を含むプロセッサを企図する。オペランドまとめユニットは、命令のラインに対
応する複数のオペランドを受取るよう結合される。オペランドまとめユニットは
、命令のライン中の第1の命令に対応する複数のオペランドのうち1以上のオペ
ランドを、命令のライン中の第2の命令のオペランドとして、(i)比較命令で
ある第1の命令に応答して、(ii)条件付き分岐命令である第2の命令に応答し
て、および(iii)第1の命令に続いた第2の命令に応答して、与えるよう構成 される。命令ウィンドウは、オペランドまとめユニットと結合され、対応するオ
ペランドが与えられるまで命令を記憶しその後実行のためにその命令を選択する
よう構成される。オペランドまとめユニットは、もし(i)第1の命令が比較命
令であれば、(ii)第2の命令が条件付き分岐命令であれば、および(iii)第 2の命令が第1の命令に続いていれば、第1の命令の受取りを禁止するよう命令
ウィンドウに信号を送るよう構成される。
【0012】 さらに、この発明は、プロセッサにおいて命令のラインを実行するための方法
を企図する。複数のオペランド指示子を検出するため、命令のラインがデコード
される。ライン内依存性を検出するため、命令のライン中の各命令の行先オペラ
ンド指示子が、命令のライン中の各次の命令のソースオペランド指示子と比較さ
れる。ソースオペランド指示子により指定されるソースオペランドを取込むため
投機的オペランドソースの読出が行なわれる。ソースオペランドが投機的オペラ
ンドソースにおいて利用可能であれば、ライン中の第1の命令に対するルックア
ヘッド結果が計算される。もしルックアヘッド結果が成功裡に計算されたならば
、ルックアヘッド結果を生成する第1の命令の少なくとも第1の命令演算の実行
を禁止するため、第1の命令を受取るよう構成された命令ウィンドウに、信号が
送られる。もし比較が第2の命令の第1の命令に対する依存性を示せば、命令の
ライン中の第2の命令にルックアヘッド結果が与えられる。与えるステップは、
第2の命令を命令ウィンドウ内に記憶するよりも前に行なわれる。
【0013】 この発明はまたさらに、プロセッサおよび入力/出力(I/O)装置を含むコ
ンピュータシステムを企図する。プロセッサは、命令のラインを複数の発行位置
へ整列させるよう構成される整列ユニットと、投機的オペランドを記憶するよう
構成される投機的オペランドソースと、命令をそれらの命令に対してオペランド
が提供されるまで記憶するよう構成される命令ウィンドウと、ルックアヘッド/
まとめユニットとを含む。ルックアヘッド/まとめユニットは、投機的オペラン
ドソース、命令ウィンドウおよび整列ユニットと結合され、整列ユニットから受
取った命令のラインに応答して投機的オペランドソースからオペランドを読出す
よう構成される。ルックアヘッド/まとめユニットは、オペランドに応答して命
令のライン内の第1の命令に対応するルックアヘッド結果を発生するよう構成さ
れる。ルックアヘッド/まとめユニットはさらに、ルックアヘッド結果で投機的
オペランドソースを更新するよう構成され、さらに、第1の命令に依存する、命
令のライン内の第2の命令にルックアヘッド結果をフォワードするよう構成され
る。ルックアヘッド/まとめユニットは、ルックアヘッド結果を生成する第1の
命令の少なくとも第1の命令演算の実行を禁止するよう命令ウィンドウに信号を
送るよう構成される。I/O装置は、プロセッサと結合され、コンピュータシス
テムとI/O装置が結合された他のコンピュータシステムとの間で通信するよう
構成される。
【0014】 この発明の他の目的および利点は、添付の図面を参照し以下の詳細な説明を読
むことで明らかとなるであろう。
【0015】 この発明にはさまざまな変更および代替的な形態が可能であるが、この発明の
特定の実施例を例として図面に示し以下で詳細に説明する。しかし、図面および
詳細な説明はこの発明を開示される特定の形態に限定することを意図するもので
はなく、逆に、前掲特許請求の範囲により規定されるこの発明の精神および範囲
内にあるすべての変更、均等物および代替例を包含することが意図されることが
理解されねばならない。
【0016】
【詳細な説明】
さて図1を参照し、スーパースカラプロセッサ10の一実施例のブロック図を
示す。他の実施例が可能であり企図される。図1に示す実施例においては、プロ
セッサ10は、プリデコードユニット12、L1 I−キャッシュ14、L0
I−キャッシュ16、フェッチ/スキャンユニット18、命令キュー20、整列
ユニット22、ルックアヘッド/まとめユニット24、フューチャファイル26
、リオーダバッファ/レジスタファイル28、第1の命令ウィンドウ30A、第
2の命令ウィンドウ30B、複数の機能ユニット32A、32B、32Cおよび
32D、複数のアドレス発生ユニット34A、34B、34Cおよび34D、ロ
ード/ストアユニット36、L1 D−キャッシュ38、FPU/マルチメディ
アユニット40および外部インターフェイスユニット42を含む。ここで特定の
参照番号に異なった文字を付けた参照符号で示される要素は、集合的に参照番号
のみを使用して示されるであろう。たとえば、機能ユニット32A、32B、3
2Cおよび32Dは、集合的には機能ユニット32として示されるであろう。
【0017】 図1の実施例では、外部インターフェイスユニット42は、プリデコードユニ
ット12、L1 D−キャッシュ38、L2インターフェイス44およびバスイ
ンターフェイス46と結合される。プリデコードユニット12はさらにL1 I
−キャッシュ14と結合される。L1 I−キャッシュ14は、L0 I−キャ
ッシュ16およびフェッチ/スキャンユニット18と結合される。フェッチ/ス
キャンユニット18はさらに、L0 I−キャッシュ16および命令キュー20
と結合される。命令キュー20は、整列ユニット22と結合され、整列ユニット
22はさらに、ルックアヘッド/まとめユニット24と結合される。ルックアヘ
ッド/まとめユニット24はさらに、フューチャファイル26、リオーダバッフ
ァ/レジスタファイル28、ロード/ストアユニット36、第1の命令ウィンド
ウ30A、第2の命令ウィンドウ30BおよびFPU/マルチメディアユニット
40と結合される。FPU/マルチメディアユニット40は、ロード/ストアユ
ニット36およびリオーダバッファ/レジスタファイル28と結合される。ロー
ド/ストアユニット36は、L1 D−キャッシュ38と結合される。第1の命
令ウィンドウ30Aは、機能ユニット32A〜32Bおよびアドレス発生ユニッ
ト34A〜34Bと結合される。同様に、第2の命令ウィンドウ30Bは、機能
ユニット32C〜32Dおよびアドレス発生ユニット34C〜34Dと結合され
る。L1 D−キャッシュ38、機能ユニット32およびアドレス発生ユニット
34は各々、複数の結果バス48と結合され、複数の結果バス48はさらに、ロ
ード/ストアユニット36、第1の命令ウィンドウ30A、第2の命令ウィンド
ウ30B、リオーダバッファ/レジスタファイル28およびフューチャファイル
26と結合される。
【0018】 概して、ルックアヘッド/まとめユニット24は、所定の命令のためのルック
アヘッド結果を、これらの命令が実行のためにディスパッチされる前に発生する
よう構成される。もし結果を生成するために使用されるオペランドが、フューチ
ャファイルからのオペランドのフェッチに際してフューチャファイル26内で利
用可能であれば、ルックアヘッド結果が所定の命令のために発生される。(実行
の際の結果としてオペランドを生成するであろう命令を特定する結果キュータグ
である場合とは異なり)もしその値がフューチャファイル26内で有効であれば
、オペランドはフューチャファイル26内で利用可能である。もしルックアヘッ
ド結果が成功裡に発生されれば、結果はフューチャファイル26へ与えられて記
憶され、命令の同じ「ライン」内の(すなわち命令とともに同時にデコードされ
る)従属している命令へ与えられる。投機的結果が、パイプライン内でより早期
に後の命令に対し利用可能となるという効果が奏されるであろう。したがって、
後の命令のためにルックアヘッド結果が計算されるであろう。さらに、フォワー
ディングがフューチャファイル26を通じてより頻繁に達成されるので、フォワ
ーディングがより効率的となろう。したがって、フォワードするためのハードウ
ェアが減じられるであろう。さらに、所定の命令に対して実行ハードウェアの外
で結果が発生されるために、幅の広い発行速度を依然サポートしつつも、プロセ
ッサ10内で用いられる実行ハードウェアの量が減じられるであろう。
【0019】 一実施例においては、ルックアヘッド/まとめユニット24は、メモリオペラ
ンドを有する命令のためのルックアヘッドアドレスを発生するよう構成される。
このような命令については、さもなくば、アドレス発生ユニット34の1つによ
って行なわれるアドレス発生命令演算が、ルックアヘッド/まとめユニット24
により行なわれるであろう。したがって、ロード/ストアユニット36は、さも
なくば達成可能であったであろうよりも、早期にパイプライン内でアドレスを受
取るであろう。もし、命令が加算系命令演算またはレジスタからレジスタへの移
動を指定するならば、そして、メモリオペランドを含んでいなければ、ルックア
ヘッド/まとめユニット24はルックアヘッド結果を発生するであろう。したが
って、さもなくば機能ユニット32の1つによって実行されたであろう機能的命
令演算が、パイプライン内でより早期にルックアヘッド/まとめユニット24に
より行なわれる。
【0020】 プリデコードユニット12は、外部インターフェイスユニット42によりフェ
ッチされた命令バイトを受取り、命令バイトがL1 I−キャッシュ14内に記
憶されるより前に命令バイトをプリデコードする。プリデコードユニット12に
よって発生されたプリデコード情報は、同様にL1 I−キャッシュ14内に記
憶される。一般に、プリデコード情報は、命令のフェッチおよび発行の間に有用
であろう命令特徴の特定を助けるため提供されるが、フェッチおよび発行演算の
間に迅速に発生することは困難であろう。ここで使用する際は「プリデコード」
という語は、デコードされる命令バイトとともに後に命令キャッシュ(たとえば
L1 I−キャッシュ14および/またはL0 I−キャッシュ16など)内に
記憶されるプリデコード情報を発生するためのデコード命令を指す。
【0021】 一実施例では、プロセッサ10は、命令バイトごとにプリデコード情報2ビッ
トを用いる。これらのビットの1つは、「開始ビット」と呼ばれ、その命令バイ
トが命令の最初のバイトであるのか否かを示す。命令バイトの群がフェッチされ
るとき、対応する開始ビットの組が命令バイトの群の中の命令間の境界を特定す
る。したがって、対応する開始ビットをスキャンすることによって、命令バイト
の群から複数の命令が同時に選択されよう。開始ビットが、各命令の最初のバイ
トを特定することによって命令の境界を位置特定するため使用される一方で、代
替的に各命令の最後のバイトを特定することによって命令の境界を位置特定する
よう、終了ビットが使用できよう。
【0022】 この実施例において使用される第2のプリデコードビットは、「転送制御」ビ
ットと呼ばれ、どの命令が分岐命令であるかを特定する。命令の最初のバイトに
対応する転送制御ビットは、その命令が分岐命令であるか否かを示す。命令の後
のバイトに対応する転送制御ビットは、小変位フィールドを有する相対分岐命令
以外についてはドントケアである。具体的一実施例によれば、小変位フィールド
は8ビットフィールドである。一般に、「小変位フィールド」は、分岐命令によ
り発生されるターゲットアドレスよりも少ないビットを有する変位フィールドを
指す。小変位フィールドを有する相対分岐命令については、変位バイトに対応す
る転送制御ビットが以下に説明するように使用される。
【0023】 命令バイトに対応するプリデコード情報を発生するのに加えて、プリデコード
ユニット12は、この実施例においては、ターゲットアドレスを実際に記憶する
ため相対分岐命令の変位フィールドを再コードするよう構成される。すなわち、
プリデコードユニット12は、相対分岐命令の変位を、プロセッサ10により用
いられる命令セットにより規定されるように、相対分岐命令に対応するアドレス
に加える。得られたターゲットアドレスは、変位の代わりとして変位フィールド
にエンコードされ、更新された変位フィールドが元の変位フィールドの代わりに
L1 I−キャッシュ14に記憶される。相対ターゲットアドレスを前もって計
算することによって、ターゲットアドレス発生が簡単にされ、それによって分岐
予測機構がより効率的に動作するであろう。
【0024】 x86命令セットを用いるプロセッサ10の一実施例においては、プリデコー
ドユニット12は、8ビットの変位フィールドおよび32ビットの変位フィール
ドを再コードするよう構成される。32ビットの変位フィールドはターゲットア
ドレス全体を記憶するであろう。一方、8ビットの変位フィールドはエンコード
される。特に、8ビットの変位フィールドおよび対応する転送制御プリデコード
ビットは、キャッシュラインオフセット部と相対的キャッシュライン部とに分割
される。キャッシュラインオフセット部は、ターゲットアドレスのキャッシュラ
インオフセット部である。相対キャッシュライン部は、相対分岐命令を記憶して
いるキャッシュラインよりも上または下のキャッシュライン数という形で、ター
ゲットアドレスにより特定されるキャッシュライン(「ターゲットキャッシュラ
イン」)を定義する。第1のキャッシュライン内の各バイトが第2のキャッシュ
ライン内のバイトが記憶されているアドレスよりも数値的に大きいアドレスに記
憶されているとき、第1のキャッシュラインは第2のキャッシュラインよりも上
であるという。逆に、第1のキャッシュライン内の各バイトが、第2のキャッシ
ュライン内のバイトが記憶されているアドレスよりも数値的に小さいアドレスに
記憶されていれば、第1のキャッシュラインは第2のキャッシュラインよりも下
であるという。符号付の8ビット変位は、分岐命令に対応するアドレスから+/
−128バイトのアドレスを指定する。したがって、8ビット変位を有する相対
分岐命令により到達可能な上のおよび下のキャッシュラインの数は限定される。
相対キャッシュライン部は、この限定された上のおよび下のキャッシュラインの
組をエンコードする。通常、小変位フィールドを有する分岐命令は、予め定めら
れた範囲内に変位を有するが、より大きな変位フィールドは、予め定められた範
囲外の値を記憶するであろう。
【0025】 次の表1および表2は、プロセッサ10の一実施例による、バイトに対応する
プリデコード情報のエンコードの例を示す。
【0026】
【表1】
【0027】
【表2】
【0028】 プリデコードユニット12は、受取った命令バイトと対応するプリデコード情
報とを記憶するためL1 I−キャッシュ14へ送る。L1 I−キャッシュ1
4は、命令バイトおよびプリデコード情報を記憶するための高速キャッシュメモ
リである。L1 I−キャッシュ14は、ダイレクトマッピング構成およびセッ
トアソシアティブ構成を含む任意の適切な構成を用いてよい。具体的一実施例で
は、L1 I−キャッシュ14は、64バイトのキャッシュラインを用いる12
8KBの2ウェイセットアソシアティブキャッシュである。L1 I−キャッシ
ュ14は、中に記憶される命令バイトに対応するプリデコード情報用の付加的記
憶装置を含む。付加的記憶装置は、命令バイト記憶装置と同様に編成される。こ
こで使用する際には、「キャッシュライン」という語は、特定のキャッシュ内の
記憶装置の割当の単位を指す。一般に、キャッシュライン内のバイトが、1単位
としてキャッシュにより操作される(すなわち割当てられ割当て解除される)。
【0029】 一実施例では、L1 I−キャッシュ14は、線形にアドレス指定され、物理
的タグが付けられる。キャッシュを索引するために使用されるアドレスビットの
少なくとも1つが、後から物理的アドレスビットに変換される線形アドレスビッ
トであれば、キャッシュは線形にアドレス指定されているという。線形にアドレ
ス指定された/物理的タグが付けられたキャッシュのタグは、インデックスのた
めに使用されないビットに加え変換された各ビットを含む。x86アーキテクチ
ャの指定によれば、命令は論理アドレスを発生し、それはセグメンテーション変
換機構を通じて線形アドレスに変換されさらにページ変換機構を通じて物理アド
レスに変換されるように規定されている。論理アドレスと対応する線形アドレス
とが等しいフラットアドレッシングモードの使用がますます一般的となってきて
いる。プロセッサ10は、フラットアドレッシングモードを用いるよう構成され
てもよい。したがって、実行中の命令により発生されるフェッチアドレス、ター
ゲットアドレスなどは線形アドレスである。L1 I−キャッシュ14において
ヒットが検出されるか否かを判定するため、フェッチ/スキャンユニット18に
よりキャッシュに提示される線形アドレスは、変換ルックアサイドバッファ(T
LB)を使用して対応する物理アドレスに変換され、この物理アドレスが指し示
されたキャッシュラインからの物理的タグと比較されてヒット/ミスが判定され
る。フラットアドレッシングモードが使用されないときは、プロセッサ10はや
はりコードを実行するであろうが、論理アドレスから線形アドレスを発生するた
めに付加的なクロックサイクルが使用されるであろう。
【0030】 さらに、L0 I−キャッシュ16は、命令バイトを記憶するための高速キャ
ッシュメモリである。L1 I−キャッシュ14は大きいために、L1 I−キ
ャッシュ14のアクセスタイムは長いであろう。具体的一実施例では、L1 I
−キャッシュ14は2クロックサイクルのアクセスタイムを使用する。単一サイ
クルでのフェッチアクセスを可能にするため、L0 I−キャッシュ16が用い
られる。L0 I−キャッシュ16は、L1 I−キャッシュ14と比較してよ
り小さく、そのためより高速のアクセスタイムをサポートするであろう。具体的
一実施例では、L0 I−キャッシュ16は512バイトのフルアソシアティブ
キャッシュである。L1 I−キャッシュ14と同様、L0 I−キャッシュ1
6は、命令バイトのキャッシュラインおよび対応するプリデコード情報を記憶す
るよう構成される(たとえば512バイトで、8つの64バイトキャッシュライ
ンを記憶し、対応するプリデコードデータは付加的記憶装置内に記憶される)。
一実施例では、L0 I−キャッシュ16は線形にアドレス指定され線形タグが
付けられるであろう。
【0031】 フェッチ/スキャンユニット18は、L0 I−キャッシュ16に対してフェ
ッチアドレスを発生するよう、そして、L1 I−キャッシュ14に対してフェ
ッチまたはプリフェッチアドレスを発生するよう構成される。L0 I−キャッ
シュ16からフェッチされた命令は、フェッチ/スキャンユニット18によって
スキャンされ、ディスパッチのために命令を特定すると同時に分岐命令を位置特
定し、さらに、位置特定された分岐命令に対応する分岐予測を形成する。命令ス
キャン情報および対応する命令バイトは、フェッチ/スキャンユニット18によ
って命令キュー20へ記憶される。さらに、特定された分岐命令および分岐予測
は、L0 I−キャッシュ16に対しその後のフェッチアドレスを発生するため
使用される。
【0032】 フェッチ/スキャンユニット18は、プリフェッチされるキャッシュラインが
プロセッサ10へのディスパッチのためにフェッチ/スキャンユニット18によ
りフェッチされるよりも前に、L1 I−キャッシュ14からL0 I−キャッ
シュ16へのキャッシュラインのプリフェッチを試みるためプリフェッチアルゴ
リズムを用いる。任意の適当なプリフェッチアルゴリズムが使用されてよい。プ
リフェッチアルゴリズムの一実施例を以下にさらに詳細に示す。
【0033】 フェッチ/スキャンユニット18は、1クロックサイクルの間に命令のより大
きな「ラン」をフェッチしようとする試みにおいて、攻撃的な分岐予測機構を用
いる。ここで使用する際には、命令の「ラン」とは、そのセットの中で指定され
たシーケンスで実行されると予測される、1以上の命令のセットである。たとえ
ば、フェッチ/スキャンユニット18は、L0 I−キャッシュ16から24個
の命令バイトのランをフェッチするであろう。各ランは、いくつかのセクション
に分割され、フェッチ/スキャンユニット18はこれらのセクションを並列でス
キャンして、分岐命令を特定し、命令キュー20のために命令スキャン情報を発
生する。一実施例では、フェッチ/スキャンユニット18は、大きな命令のラン
をサポートするため、クロックサイクル当り最大2つの分岐命令を予測するよう
試みる。
【0034】 命令キュー20は、続いてのディスパッチのために、フェッチ/スキャンユニ
ット18により与えられる命令バイトを記憶するよう構成される。命令キュー2
0は、ファーストインファーストアウト(FIFO)バッファとして動作してよ
い。一実施例では、命令キュー20は、複数のエントリを記憶するよう構成され
、各エントリは、命令のラン、ランの各セクション内の最大5つの命令を特定す
るスキャンデータおよびランの各セクションに対応するアドレスを含む。さらに
、命令キュー20は、整列ユニット22への提示のため、ランの最大4つの連続
したセクション内から最大6つの命令を選択するよう構成されてもよい。命令キ
ュー20は、たとえば2〜3のエントリを用いてよい。
【0035】 整列ユニット22は、命令キュー20により特定された命令をルックアヘッド
/まとめユニット24内の発行位置のセットへ割り振るよう構成される。すなわ
ち、整列ユニット22は、命令キュー20により与えられるスキャン情報に応答
して、命令キュー20によって与えられるランのセクションから各命令を形成す
るバイトを選択する。命令はプログラム順に発行位置へと与えられる(すなわち
、プログラム順において1番目の命令が第1の発行位置に与えられ、プログラム
順において第2番目の命令が第2の発行位置に与えられる、等々)。
【0036】 ルックアヘッド/まとめユニット24は、整列ユニット22により与えられる
命令をデコードする。ルックアヘッド/まとめユニット24により検出されたF
PU/マルチメディア命令は、FPU/マルチメディアユニット40へ与えられ
る。他の命令は、第1の命令ウィンドウ30A、第2の命令ウィンドウ30Bお
よび/またはロード/ストアユニット36に与えられる。一実施例では、特定の
命令が、その命令が整列ユニット22により整列させられた発行位置に基づいて
、第1の命令ウィンドウ30Aまたは第2の命令ウィンドウ30Bへ与えられる
。具体的一実施例では、発行位置からの命令が命令ウィンドウ30aおよび30
bに交互に与えられる。たとえば、発行位置0、2および4からの命令が第1の
命令ウィンドウ30Aに与えられてよく、発行位置1、3および5からの命令が
第2の命令ウィンドウ30Bに与えられてよい。メモリ演算を含む命令はさらに
、L1 D−キャッシュ38へのアクセスのためロード/ストアユニット36へ
与えられる。
【0037】 さらに、ルックアヘッド/まとめユニット24は、特定のタイプの命令のため
にルックアヘッドアドレスまたは実行結果を発生しようと試みる。ルックアヘッ
ドアドレス/結果発生は、特にx86命令セットを用いる実施例において有益で
あろう。x86命令セットの性質のため、典型的なコードシーケンスにおける多
くの命令は、簡単な移動の一種である。この特徴の理由は、x86命令が2つの
オペランドを含み、その両方がソースオペランドであり一方が行先オペランドで
あるからである。このため、各命令のソースオペランドの一方が実行結果でオー
バーライトされる。さらに、x86命令セットは、レジスタオペランドの記憶の
ため極めて少数のレジスタしか指定しない。したがって、多くの命令はメモリ内
に維持されるスタックへのオペランドの移動およびスタックからのオペランドの
移動である。さらに、多くの命令の依存性は、ESP/EBPレジスタに対する
依存性であるが、これらのレジスタへの更新の多くは前に記憶された値へのイン
クリメントおよびデクリメントである。
【0038】 これらの命令の実行を加速するため、ルックアヘッド/まとめユニット24は
、クロックサイクルの間にデコードされる各命令のためにESPおよびEBPレ
ジスタのルックアヘッドコピーを発生する。さらに、ルックアヘッド/まとめユ
ニット24は、各命令により選択されるレジスタオペランドのためフューチャフ
ァイル26にアクセスする。各レジスタオペランドに対して、フューチャファイ
ル26は、このレジスタを行先オペランドとして有する最も最近の命令に対応す
るリオーダバッファ結果キューエントリを特定するタグまたは実行結果のいずれ
かを記憶しているであろう。
【0039】 一実施例では、ルックアヘッド/まとめユニット24は、(i)メモリオペラ
ンドを含む、および(ii)メモリオペランドのアドレスを形成するため使用され
るレジスタオペランドがフューチャファイル26またはESP/EBPのルック
アヘッドコピーから利用可能である、各命令に対してアドレス計算を行なうよう
試みる。加えて、ルックアヘッド/まとめユニット24は、(i)メモリオペラ
ンドを含まない、(ii)(インクリメントおよびデクリメントを含む)加算/減
算演算を指定する、および(iii)レジスタオペランドがフューチャファイル2 6またはESP/EBPのルックアヘッドコピーから利用可能である、各命令に
対して結果計算を行なうよう試みる。上記態様において、多くの簡単な演算が、
命令が命令ウィンドウ30A〜30Bに送られるよりも前に完了されるであろう
【0040】 ルックアヘッド/まとめユニット24は、ディスパッチされてくる命令の群の
間の依存性を検出し、中で発生される実行結果をすべてこれらの命令結果に依存
する命令中にまとめる。さらに、ルックアヘッド/まとめユニット24は、ルッ
クアヘッド実行結果でフューチャファイル26を更新する。ルックアヘッド/ま
とめユニット24により完了される命令演算(すなわち、アドレス発生および/
または命令結果が発生され、ロード/ストアユニット36またはフューチャファ
イル26および結果キューが更新される)は、命令ウィンドウ30A〜30Bへ
ディスパッチされない。
【0041】 ルックアヘッド/まとめユニット24は、ディスパッチされる各命令に対して
リオーダバッファ/レジスタファイル28内の結果キューエントリを割当てる。
具体的一実施例では、リオーダバッファ/レジスタファイル28は、ライン指向
型で編成された結果キューを含み、この結果キュー内では、実行結果のための記
憶場所が、同時にディスパッチ可能な命令の最大数に対応する実行結果用の十分
な記憶場所を有するライン内で割当てられかつ割当て解除される。もし最大数に
満たない命令がディスパッチされれば、ライン内の特定の記憶場所が空となる。
その後ディスパッチされる命令は、次に利用可能なラインを使用し所定の記憶場
所は空のままとする。一実施例では、結果キューは40個のラインを含み、各ラ
インは同時にディスパッチされる命令に対応する最大6つの実行結果を記憶する
であろう。実行結果は、リオーダバッファ/レジスタファイル28内に含まれる
レジスタファイルへと順番に結果キューからリタイアされる。さらに、リオーダ
バッファは分岐予測誤りを処理し、分岐命令の実行により発生される訂正された
フェッチアドレスをフェッチ/スキャンユニット18へ送る。同様に、他の例外
を発生する命令は、リオーダバッファ内で処理される。例外を発生した命令の後
の命令に対応する結果は、リオーダバッファにより廃棄される。レジスタファイ
ルは設計されたレジスタ各々に対する記憶場所を含む。たとえば、x86命令セ
ットは8つの設計されたレジスタを規定する。このような実施例に対するレジス
タファイルは8つの記憶場所を含む。レジスタファイルはさらに、マイクロコー
ドユニットを用いる実施例においてはマイクロコードユニットにより一時レジス
タとして使用される記憶場所を含むであろう。
【0042】 フューチャファイル26は、命令がルックアヘッド/まとめユニット24によ
りディスパッチされる間、設計されたレジスタ各々の投機的状態を維持する。レ
ジスタ行先オペランドを有する命令がルックアヘッド/まとめユニット24によ
りデコードされるに伴い、命令に割当てられるリオーダバッファ/レジスタファ
イル28の結果キュー部分内の記憶場所を特定するタグが、レジスタに対応する
フューチャファイル26の記憶場所へ記憶される。対応する実行結果が与えられ
たとき、(レジスタを更新する次の命令がまだディスパッチされていないと仮定
して)その実行結果は対応する記憶場所へ記憶される。
【0043】 一実施例では、命令キュー20から最大6つの命令の群が選択され、1単位と
してルックアヘッド/まとめユニット24内のパイプラインを移動することが注
意される。もし、この群内の1以上の命令がストール条件を発生すれば、群全体
がストールする。この規則の例外は、その群の中でのESP更新の数のためにル
ックアヘッド/まとめユニット24がライン分離条件を発生する場合である。こ
のような命令の群を、ここでは命令の「ライン」と呼ぶ。
【0044】 命令ウィンドウ30はルックアヘッド/まとめユニット24から命令を受取る
。命令ウィンドウ30はその命令に対応するオペランドが受取られるまでその命
令を記憶し、実行のため命令を選択する。一旦メモリ演算を含む命令のアドレス
オペランドが受取られると、命令はアドレス発生ユニット34の1つに送られる
。アドレス発生ユニット34はアドレスオペランドからアドレスを発生し、アド
レスをロード/ストアユニット36へフォワードする。一方、一旦命令の実行オ
ペランドが受取られると、命令は実行のため機能ユニット32の1つへ送られる
。一実施例では、各整数ウィンドウ30A〜30Bは命令のための25個の記憶
場所を含む。各整数ウィンドウ30A〜30Bは、各整数ウィンドウに接続され
るアドレス発生ユニット34および機能ユニット32内の最大で2つのアドレス
発生および2つの機能ユニット演算を各クロックサイクルについて実行のために
選択するよう構成される。一実施例では、L0 I−キャッシュ16からフェッ
チされた命令は、命令ウィンドウ30の1つに記憶されるまではフェッチされた
ときの順番のままで維持され、命令ウィンドウ30の1つに記憶された時点で命
令はアウトオブオーダで実行されるであろう。
【0045】 x86命令セットを用いるプロセッサ10の実施例では、命令はロード/スト
アユニット36のための暗黙のメモリ演算と機能ユニット32のための明示的機
能演算とを含むであろう。メモリオペランドを持たない命令はメモリ演算を全く
含まず、機能ユニット32によって処理される。ソースメモリオペランドおよび
レジスタ行先オペランドを有する命令は、ロード/ストアユニット36により処
理される暗黙のロードメモリ演算および機能ユニット32により処理される明示
的機能演算を含む。メモリソース/行先オペランドを有する命令は、ロード/ス
トアユニット36により処理される暗黙のロードおよびストアメモリ演算および
機能ユニット32により処理される明示的機能演算を含む。最後に、明示的機能
演算を持たない命令はロード/ストアユニット36により処理される。各メモリ
演算の結果、ルックアヘッド/まとめユニット24またはアドレス発生ユニット
34のいずれかにより処理されるアドレス発生が生じる。ここではメモリ演算お
よび命令(すなわち機能演算)を別個に述べるであろうが、この2つは単一の命
令から生じ得る。
【0046】 アドレス発生ユニット34は、アドレス発生演算を行ないそれによってロード
/ストアユニット36内でのメモリ演算のためのアドレスを発生するよう構成さ
れる。発生されたアドレスは結果バス48を通じてロード/ストアユニット36
へフォワードされる。機能ユニット32は、整数算術/論理演算を行ない分岐命
令を実行するよう構成される。実行結果はフューチャファイル26、リオーダバ
ッファ/レジスタファイル28および命令ウィンドウ30A〜30Bへ結果バス
48を通じてフォワードされる。アドレス発生ユニット34および機能ユニット
32は、実行されている命令を特定するため、実行されている命令に割当てられ
た結果キュータグを結果バス48上で運ぶ。上記態様で、フューチャファイル2
6、リオーダバッファ/レジスタファイル28、命令ウィンドウ30A〜30B
およびロード/ストアユニット36が、実行結果を対応する命令に対して特定す
るであろう。FPU/マルチメディアユニット40は、浮動小数点およびマルチ
メディア命令を実行するよう構成される。
【0047】 ロード/ストアユニット36は、メモリ演算を行なうためL1 D−キャッシ
ュ38とインターフェイスするよう構成される。メモリ演算は、プロセッサ10
と外部メモリとの間でのデータの転送である。メモリ演算は、やはり機能ユニッ
ト32により実行される演算を含む、命令の暗黙の部分であってもよく、または
明示的命令であってもよい。ロードメモリ演算は、外部メモリからプロセッサ1
0へのデータの転送を指定し、ストアメモリ演算は、プロセッサ10から外部メ
モリへのデータの転送を指定する。もし、L1 D−キャッシュ38内でのメモ
リ演算についてヒットが検出されれば、外部メモリにアクセスすることなくそこ
でメモリ演算が完了する。ロード/ストアユニット36は、ルックアヘッド/ま
とめユニット24から(ルックアヘッドアドレス計算を通じて)またはアドレス
発生ユニット34からメモリ演算のためのアドレスを受取るであろう。この一実
施例では、ロード/ストアユニット36は、クロックサイクル当り3つのメモリ
演算をL1 D−キャッシュ38に対して行なうよう構成される。この実施例で
は、ロード/ストアユニット36は、D−キャッシュ38にまだアクセスしてい
ない最大で30のロード/ストアメモリ演算をバッファするよう構成されるであ
ろう。この実施例はさらに、D−キャッシュ38をミスしたロードメモリ演算を
バッファするための96個のエントリのミスバッファおよび32個のエントリの
記憶データバッファを含むよう構成されるであろう。ロード/ストアユニット3
6は、ロードおよびストアメモリ演算の間、メモリ依存性チェックを行なうよう
構成される。
【0048】 L1 D−キャッシュ38はデータを記憶するための高速キャッシュメモリで
ある。セットアソシアティブ構成およびダイレクトマッピング構成を含む、任意
の適切な構成をL1 D−キャッシュ38のために使用してよい。一具体例では
、L1 D−キャッシュ38は、64バイトのラインを用いる128KBの2ウ
ェイセットアソシアティブキャッシュである。L1 D−キャッシュ83は、た
とえば、ウェイごとに32個のバンクのキャッシュメモリとして編成されてもよ
い。さらに、L1 D−キャッシュ38は、L1 I−キャッシュ14と同様、
TLBを用いる線形にアドレス指定され/物理的タグが付けられるキャッシュで
あってよい。
【0049】 外部インターフェイスユニット42は、キャッシュのミスに応答して、命令バ
イトおよびデータバイトのキャッシュラインをプロセッサ10へ転送するよう構
成される。命令キャッシュラインは、プリデコードユニット12へ割り振られ、
データキャッシュラインはL1 D−キャッシュ38に割り振られる。さらに、
外部インターフェイスユニット42は、L1 D−キャッシュ38により廃棄さ
れるキャッシュラインを、もしその廃棄されるキャッシュラインがプロセッサ1
0に対し変更されていれば、メモリへ転送するよう構成される。図1に示すよう
に、外部インターフェイスユニット42は、バスインターフェイス46を介して
コンピュータシステムへインターフェイスすると同時にL2インターフェイス4
4を介して外部L2キャッシュにインターフェイスするよう構成される。一実施
例では、バスインターフェイスユニット46はEV/6バスインターフェイスを
含む。
【0050】 次に図2を参照し、フェッチ/スキャンユニット18の一実施例のブロック図
を示す。他の実施例も可能であり企図される。図2に示すように、フェッチ/ス
キャンユニット18は、フェッチ制御ユニット50、複数の次選択ブロック52
A〜52C、命令選択マルチプレクサ(mux)54、命令スキャナ56、分岐
スキャナ58、分岐履歴テーブル60、分岐選択mux62、リターンスタック
64、間接アドレスキャッシュ66、およびフォワードまとめユニット68を含
む。フェッチ制御ユニット50は、L1 I−キャッシュ14、L0 I−キャ
ッシュ16、間接アドレスキャッシュ66、リターンスタック64、分岐履歴テ
ーブル60、分岐スキャナ58および命令選択mux54と結合される。次選択
ブロック52AはL1 I−キャッシュ14と結合され、他方、次選択ブロック
52B〜52CはL0 I−キャッシュ16と結合される。各次選択ブロック5
2は、命令選択mux54と結合され、命令選択mux54はさらに、分岐スキ
ャナ58および命令スキャナ56と結合される。命令スキャナ56は命令キュー
20と結合される。分岐スキャナ58は分岐履歴テーブル60、リターンスタッ
ク64および分岐選択mux62と結合される。分岐選択mux62は間接アド
レスキャッシュ66と結合される。分岐履歴テーブル60および分岐スキャナ5
8は、フォワードまとめユニット68と結合され、フォワードまとめユニット6
8は命令キュー20と結合される。
【0051】 フェッチ制御ユニット50は、分岐スキャナ50、分岐履歴テーブル60、リ
ターンスタック64および間接アドレスキャッシュ66から(ターゲットアドレ
スおよびテイクン/ノットテイクン予測を含む)分岐予測情報を受取る。フェッ
チ制御ユニット50は、分岐予測情報に応答して、L0 I−キャッシュ16の
ためのフェッチアドレスを発生し、L1 I−キャッシュ14のためのフェッチ
アドレスまたはプリフェッチアドレスを発生する。一実施例では、フェッチ制御
ユニット50は、L0 I−キャッシュ16のために2つのフェッチアドレスを
発生する。第1のフェッチアドレスは、分岐スキャナ58により特定される第1
の分岐命令(もしあれば)に対応するターゲットアドレスとして選択される。第
2のフェッチアドレスは、前のクロックサイクル中に選択されたフェッチアドレ
スの次のアドレスである(すなわち、命令選択mux54により選択されたラン
に対応するフェッチアドレス)。
【0052】 L0 I−キャッシュ14は、2つのフェッチアドレスに対応するキャッシュ
ライン(およびプリデコード情報)と、これらのキャッシュライン各々の次のキ
ャッシュライン(およびプリデコード情報)とを、次選択ブロック52B〜52
Cへ与える。特に、次選択ブロック52Bは、次のアドレスに対応する次のキャ
ッシュラインおよびこの次のキャッシュラインの次のインクリメントしたキャッ
シュラインを受ける。次選択ブロック52Cは、ターゲットアドレスに対応する
ターゲットキャッシュラインとターゲットキャッシュラインの次のキャッシュラ
インとを受ける。さらに、次選択ブロック52B〜52Cは、対応するフェッチ
アドレスのオフセット部を受ける。各次選択ブロック52B〜52Cは、対応す
るフェッチアドレスのオフセット部を含むランセクションで始めて、受取ったキ
ャッシュラインから命令バイト(および対応するプリデコード情報)のランを選
択する。各フェッチアドレスのオフセット部はキャッシュラインのどこからでも
始まり得るので、選択されたランは、フェッチされたキャッシュライン部および
フェッチされたキャッシュラインの次のキャッシュライン部を含み得る。したが
って、フェッチされたキャッシュラインおよび次のキャッシュラインの両方が次
選択ブロック52B〜52Cにより受取られる。
【0053】 同様に、次選択ブロック52Aは、L1 I−キャッシュ14からプリフェッ
チされたキャッシュライン(および対応するプリデコード情報)を受け、そこか
ら命令のランを選択する。1つのキャッシュラインがL1 I−キャッシュ14
からプリフェッチされるので、そこから選択されるランは、もしプリフェッチア
ドレスのオフセット部がキャッシュラインの終りに近ければ、含むのはラン全体
よりも少ないであろう。L0 I−キャッシュ16からのフェッチキャッシュラ
インは、対応するアドレスがフェッチ制御ユニット50によって発生されるため
、同一のクロックサイクル中に与えられるであろうが、プリフェッチキャッシュ
ラインはL1 I−キャッシュ14のサイズがより大きくアクセスタイムがより
遅いために1クロックサイクル遅延され得ることが留意される。L1 I−キャ
ッシュ14は、プリフェッチされたキャッシュラインを次選択ブロック52Aへ
与えるのに加えて、L0 I−キャッシュ16へプリフェッチされたキャッシュ
ラインを与える。もし、プリフェッチされたキャッシュラインが既にL0 I−
キャッシュ16内に記憶されていれば、L0 I−キャッシュ16はプリフェッ
チされたキャッシュラインを廃棄するであろう。しかしながら、もしプリフェッ
チされたキャッシュラインがまだL0 I−キャッシュ14内に記憶されていな
ければ、プリフェッチされたキャッシュラインはL0 I−キャッシュ16へ記
憶される。上記態様で、現在アクセスされているであろうキャッシュラインが、
L0 I−キャッシュ16からの迅速なアクセスのためにL0 I−キャッシュ
16へ送られる。具体的一実施例によれば、L0 I−キャッシュ16は8つの
エントリのフルアソシアティブキャッシュ構造を含む。フルアソシアティブ構造
は、L0 I−キャッシュ16に含まれるキャッシュラインの数が比較的少ない
ので用いられ得る。他の実施例では他の編成(たとえばセットアソシアティブま
たはダイレクトマッピング)を用いてもよい。
【0054】 フェッチ制御ユニット50は、命令選択mux54を制御することによって、
分岐予測情報に応答して次選択ブロック52の1つにより与えられる命令ランを
選択する。以下にさらに詳細に説明するように、フェッチ制御ユニット50はク
ロックサイクルの早期において分岐スキャナ58、リターンスタック64および
間接アドレスキャッシュ66から(この実施例では)ターゲットアドレスを受取
り、かつ、分岐スキャナ58により特定される第1の分岐命令のオペコードバイ
トの少なくとも一部を受取る。フェッチ制御ユニット50は、オペコードバイト
の部分をデコードして、さまざまなターゲットアドレスソースから、L0 I−
キャッシュ16からフェッチされるべきターゲットアドレスを選択し、選択され
たターゲットアドレスをL0 I−キャッシュ16へ与える。並行して、前のク
ロックサイクル中に選択されたフェッチアドレスの次のアドレス(前のクロック
サイクルからの分岐予測に依存して、ターゲットアドレスまたは前のクロックサ
イクルの次のアドレスのいずれか)が計算され、L0 I−キャッシュ16へ与
えられる。クロックサイクルの後の方で、分岐予測情報(すなわちテイクンまた
はノットテイクン)が分岐履歴テーブル60により与えられる。もし、L0 I
−キャッシュ16からフェッチされたターゲットアドレスに対応する分岐命令が
、テイクン予測されれば、フェッチ制御ユニット50は次選択ブロック52Cに
より与えられた命令ランを選択する。一方、もし分岐命令がノットテイクン予測
されれば、次選択ブロック52Bにより選択された命令ランが選択される。もし
、前のクロックサイクルにおいて、予測されたフェッチアドレスがL0 I−キ
ャッシュ16でミスしL1 I−キャッシュ14からフェッチされていれば、次
選択ブロック52Aにより与えられる命令ランが選択される。さらに、分岐命令
が32ビット変位または間接ターゲットアドレス発生を有すること、またはL0
I−キャッシュミスがフェッチされたことに応答して、命令ランがフェッチさ
れていたならば、L1 I−キャッシュ14からの命令ランが選択される。
【0055】 選択された命令ランは、命令スキャナ56および分岐スキャナ58に与えられ
る。命令スキャナ56は、選択された命令ランに対応するプリデコード情報をス
キャンし、命令ラン内の命令を特定する。一実施例では特に、命令スキャナ56
は並行して各ランセクションに対応する開始ビットをスキャンし、各ランセクシ
ョン内の最高5つの命令を特定する。特定された命令に対するポインタ(ランセ
クション内でのオフセット)が発生される。ポインタ、命令バイトおよび(ラン
セクション当り1つの)アドレスが命令スキャナ56によって命令キュー20へ
送られる。もし、特定のランセクションが6以上の命令を含んでいれば、特定の
ランセクションの後のランセクションに対応する情報は無効とされ、この特定の
ランセクションおよびその後のランセクションが次のクロックサイクルの間に再
びスキャンされる。
【0056】 分岐スキャナ58は、命令スキャナ56と並行して、命令ランをスキャンする
。分岐スキャナ58は命令ランの開始ビットおよび転送制御ビットをスキャンし
、命令ラン中の最初の2つの分岐命令を特定する。上述のように、分岐命令は、
設定されている(開始ビットにより特定される)命令の開始バイトに対応する転
送制御ビットにより特定される。第1の2つの分岐命令を見出すと、分岐スキャ
ナ58は命令が相対分岐命令であるとみなし、分岐命令の開始バイトの後の命令
バイトから、対応するエンコードされたターゲットアドレスを選択する。x86
命令セットを用いる実施例においては、9ビットのターゲットアドレス(変位バ
イトおよび対応する転送制御ビット)が選択され、同様に32ビットのターゲッ
トアドレスが選択される。さらに、開始ビットおよび転送制御ビットにより特定
されたオペコードバイトの少なくとも一部が選択される。ターゲットアドレスお
よびオペコードバイトは、L0 I−キャッシュ16からのフェッチのためのタ
ーゲットアドレスの選択において使用するため、フェッチ制御ユニット50へ与
えられる。(各分岐命令を含むランセクションのフェッチアドレスおよびセクシ
ョン内の分岐命令の位置から決定される)各分岐命令のフェッチアドレスは、各
分岐命令に対応するテイクン/ノットテイクン予測を選択するため分岐履歴テー
ブル60へ与えられる。さらに、各分岐命令に対応するフェッチアドレスが分岐
選択mux62へ与えられ、さらに間接アドレスキャッシュ66へ与えられる。
各分岐命令のターゲットアドレスは、フォワードまとめユニット68へ与えられ
る。一実施例によれば、分岐スキャナ58は、第1の2つの分岐命令について並
行して各ランセクションをスキャンするよう構成され、その後スキャン結果を組
合せてラン内の第1の2つの分岐命令を選択するよう構成される。
【0057】 分岐スキャナ58はさらに、クロックサイクル中にサブルーチン呼出命令がス
キャンされるか否かを判定するよう構成されてもよい。分岐スキャナ58は、検
出されたサブルーチン呼出命令に続く次の命令のフェッチアドレスをリターンス
タック64に記憶するためリターンスタック64へフォワードするであろう。
【0058】 一実施例においては、もしラン内に3以上の分岐命令があれば、次の分岐命令
を特定するため、次のクロックサイクル中にランが再びスキャンされる。
【0059】 特定された分岐命令のフェッチアドレスは、各命令についてテイクン/ノット
テイクン予測を判定するため、分岐履歴テーブル60へ与えられる。分岐履歴テ
ーブル60は、以前に検出された分岐命令の挙動に対応する複数のテイクン/ノ
ットテイクン予測子を含む。最新の予測の履歴を維持し、これらの最新の予測と
分岐命令に対応するフェッチアドレスの部分とを排他的論理和演算することによ
って、予測子の1つが選択される。最も新しくない(最も古い)予測は、フェッ
チアドレスの部分の中の最上位ビットと排他的論理和演算され、以下同様に、最
新の予測までフェッチアドレスの部分の中の最下位ビットと排他的論理和演算さ
れる。クロックサイクルごとに2つの予測子が選択されるので、第2の分岐命令
に対応する予測子は、(対応するフェッチアドレスの最下位ビットとの排他的論
理和演算のため)第1の分岐命令の予測に依存する。分岐履歴テーブル60は、
選択される可能性のある予測子両方を(すなわち、第1の分岐命令がノットテイ
クン予測されるならば選択されるであろう予測子および第1の分岐命令がテイク
ン予測されるならば選択されるであろう予測子を)選択し、次に、第1の分岐命
令について選択された実際の予測に基づいて2つの予測子の一方を選択すること
により、第2の予測子を与える。
【0060】 分岐履歴テーブル60は、機能ユニット32A〜32Dから分岐命令の実行に
関する情報を受取る。実行された分岐命令に対応する最近の予測の履歴および実
行された分岐命令のフェッチアドレスが、更新するべき予測子および実行された
分岐命令のテイクン/ノットテイクン結果を選択するために与えられる。分岐履
歴テーブル60は、対応する予測子を選択し、テイクン/ノットテイクン結果に
基づいて予測子を更新する。一実施例においては、分岐履歴テーブルは2モード
カウンタを記憶する。2モードカウンタは、最小値および最大値において飽和す
る飽和カウンタである(すなわち、最小値に続いてデクリメントおよび最大値に
続いてインクリメントしても、カウンタには変化が起らない)。分岐命令がテイ
クンであるごとに、対応するカウンタがインクリメントされ、分岐命令がノット
テイクンであるごとに、対応するカウンタがデクリメントされる。カウンタの最
上位ビットは、テイクン/ノットテイクン予測を示す(たとえばセットであれば
テイクン、クリアであればノットテイクン)。一実施例では、分岐履歴テーブル
60は64Kの予測子を記憶し、16個の最も最近の予測の履歴を維持する。各
クロックサイクルにおいて、そのクロックサイクル中に選択された予測は履歴に
シフトされ、最も古い予測は履歴からシフトアウトされる。
【0061】 リターンスタック64が、検出されたサブルーチン呼出命令に対応するリター
ンアドレスを記憶するため使用される。リターンスタック64は、分岐スキャナ
58からサブルーチン呼出命令のフェッチアドレスを受取る。(リターンスタッ
ク64に与えられたフェッチアドレスから計算された)呼出命令の次のバイトの
アドレスは、リターンスタック64の一番上に置かれる。リターンスタック64
は、もしリターン命令が分岐スキャナ58およびフェッチ制御ユニット50によ
り検出されたならば、リターンスタックの一番上に記憶されたアドレスを、ター
ゲットアドレスとしての選択のためにフェッチ制御ユニット50へ与える。上記
態様において、各リターン命令は、最も最近に検出された呼出命令に対応するア
ドレスをターゲットアドレスとして受取る。一般にx86命令セットにおいては
、呼出命令は、呼出命令の次のアドレスがx86アーキテクチャにより規定され
るスタックの上に置かれることを指定する転送制御命令である。リターン命令は
、スタックの一番上からターゲットアドレスを選択する命令である。一般に、呼
出命令およびリターン命令は、コードシーケンス内で(それぞれ)サブルーチン
に入るため使用され、サブルーチンから出るため使用される。リターンスタック
64内に呼出命令に対応するアドレスを置き、リターンスタック64の一番上の
アドレスをリターン命令のターゲットアドレスとして使用することにより、リタ
ーン命令のターゲットアドレスが正確に予測され得る。一例においては、リター
ンスタック64は16個のエントリを含むであろう。
【0062】 間接アドレスキャッシュ66は、間接分岐命令の前の実行に対応するターゲッ
トアドレスを記憶する。間接分岐命令に対応するフェッチアドレスおよび間接分
岐命令の実行に対応するターゲットアドレスは、機能ユニット32A〜32Dに
より間接アドレスキャッシュ66へ与えられる。間接アドレスキャッシュ66は
、対応するフェッチアドレスにより索引されるターゲットアドレスを記憶する。
間接アドレスキャッシュ66は、(間接分岐命令の検出に応答して)分岐選択m
ux62により選択されたフェッチアドレスを受け、もしフェッチアドレスが間
接アドレスキャッシュ66でヒットすれば、対応するターゲットアドレスをフェ
ッチ制御ユニット50へ与える。一例においては、間接アドレスキャッシュ66
は、32個のエントリを含むであろう。
【0063】 企図される一実施例によれば、もし間接アドレスキャッシュ66がフェッチア
ドレスのミスを検出すれば、間接アドレスキャッシュ66はエントリの1つから
ターゲットアドレスを選択して提供するよう構成されてもよい。上記態様におい
て、間接分岐命令がデコードされる場合に、分岐ターゲットの「推測」が与えら
れる。間接分岐命令の実行によるアドレスを待つよりもむしろ、推測からのフェ
ッチが行なわれるであろう。代替的に、企図される他実施例では、間接分岐命令
の実行から与えられるアドレスを待つ。
【0064】 なお、もしエンコードされたターゲットアドレスが選択されるならば、実際の
ターゲットアドレスはL0 I−キャッシュ16へ提示されるであろう。フェッ
チ制御ユニット50は、可能性のある上の/下のターゲットアドレス各々を予め
計算しエンコードされたターゲットアドレスに基づいて正しいアドレスを選択す
るように構成されてもよい。代替的に、フェッチ制御ユニット50は、どのL0
I−キャッシュの記憶場所が上のおよび下のキャッシュラインを記憶している
のかを記録しタグ比較なしに直接記憶場所を選択してもよい。
【0065】 フォワードまとめユニット68は、ターゲットアドレスならびに、選択された
分岐命令各々の命令ラン内の位置およびテイクン/ノットテイクン予測を受取る
。フォワードまとめユニット68は、ラン内のどの命令が、受取られた予測に基
づいて取消されるべきであるかを判定する。もし、第1の分岐命令がテイクン予
測され後ろ向きであれば(すなわち変位が負であれば)、第1の分岐命令の後の
すべての命令が取消される。もし第1の分岐命令がテイクン予測され前向きであ
るが変位が小さければ(たとえば命令ランの中であれば)、第1の分岐命令とタ
ーゲットアドレスとの間の命令が取消される。第2の分岐命令は、もし第1の分
岐命令の予測によりやはりラン内にあれば、同様に処理される。ラン内の命令に
ついての取消表示は、命令キュー20に設定される。
【0066】 次に図3を参照し、ルックアヘッド/まとめユニット24の一実施例のブロッ
ク図を示す。他の実施例も可能であり企図される。図3に示すように、ルックア
ヘッド/まとめユニット24は、複数のデコードユニット70A〜70F、ES
P/EBPルックアヘッドユニット72、即値フィールド発生ユニット73、ラ
イン内依存性チェックユニット75、ルックアヘッドアドレス/結果計算ユニッ
ト74、ディスパッチ制御ユニット76およびオペランドまとめユニット78を
含む。デコードユニット70A〜70Fは、整列ユニット22からの命令を受取
るよう結合される。デコードユニット70A〜70Fは、デコードされた命令お
よび/または命令の情報を、FPU/マルチメディアユニット40、ESP/E
BPルックアヘッドユニット72、即値フィールド発生ユニット73、ライン内
依存性チェックユニット75、フューチャファイル26およびルックアヘッドア
ドレス/結果計算ユニット74に与えるよう結合される。ESP/EBPルック
アヘッドユニット72は、フューチャファイル26、即値フィールド発生ユニッ
ト73およびライン内依存性チェックユニット75と同様に、ルックアヘッドア
ドレス/結果計算ユニット74と結合される。ルックアヘッドアドレス/結果計
算ユニット74はさらに、ロード/ストアユニット36およびディスパッチ制御
ユニット76と結合される。ディスパッチユニット76はさらに、オペランドま
とめユニット78、フューチャファイル26、ロード/ストアユニット36およ
びリオーダバッファ28と結合される。オペランドまとめユニット78は、命令
ウィンドウ30と結合される。
【0067】 各デコードユニット70A〜70Fは、整列ユニット22が命令を整列させる
発行位置を形成する。図面を簡単にするため図3を通じて特に示していないが、
特定の命令が、その命令がルックアヘッド/まとめユニット24を通じて移動す
る間その発行位置内に留まり、もしルックアヘッド/まとめユニット24内で完
了されなければ命令ウィンドウ30A〜30Bの1つに与えられる。
【0068】 デコードユニット70A〜70Fは、FPU/マルチメディア命令をFPU/
マルチメディアユニット40に与える。しかし、もしFPU/マルチメディア命
令がメモリオペランドを含むと、メモリ演算はさらに、命令に応答してルックア
ヘッドアドレス/結果計算ユニット74を通じてロード/ストアユニット36へ
ディスパッチされる。さらに、もし、メモリ演算のためのアドレスがルックアヘ
ッドアドレス/結果計算ユニット74により発生され得なければ、アドレス発生
演算が、命令ウィンドウ30A〜30Bを通じてアドレス発生ユニット34A〜
34Dの1つへディスパッチされる。さらに、リオーダバッファ28内のエント
リは、プログラムの順序を維持するためFPU/マルチメディア命令に割当てら
れる。一般に、リオーダバッファ28内のエントリは、デコードユニット内で受
取られる各命令について、デコードユニット70A〜70Fから、割当てられる
【0069】 各デコードユニット70A〜70Fは、その中でデコードされる命令のオペコ
ードおよびmod r/mバイトをESP/EBPルックアヘッドユニット72
へ与えるよう構成され得る。ESP/EBPルックアヘッドユニット72は、(
i)命令がESPまたはEBPレジスタをソースオペランドとして使用するか否
か、および(ii)命令がESP/EBPレジスタを変更するか否か(すなわち
、ESPまたはEBPレジスタを行先オペランドとして有するか否か)を判定す
るであろう。ESP/EBPルックアヘッドユニット72は、ESPレジスタま
たはEBPレジスタをソースオペランドとして使用する各命令のためにルックア
ヘッド情報を発生する。ルックアヘッド情報は、対応するレジスタの現在のルッ
クアヘッド値に加えられるべき定数および/または前の発行位置内の命令に対す
る依存性の表示を含み得る。一実施例においては、ESP/EBPルックアヘッ
ドユニット72は、デコードユニット70A〜70Fにより与えられる命令のラ
インが、(i)(定数値でESPレジスタをデクリメントする)3以上のプッシ
ュ演算、(ii)(定数値でESPレジスタをインクリメントする)3以上のポッ
プ演算、(iii)ESPレジスタへの2以上の移動、(iv)ESPを行先として 有する2以上の算術/論理命令または(v)ESPを更新する4以上の命令を含
まない限り、ルックアヘッド情報を与えるよう構成される。これらの制約の1つ
が超えられると、ESP/EBPルックアヘッドユニット72は、次のクロック
サイクルまで、制約を超えていない命令より先の命令をストールするよう構成さ
れる(「スプリットライン」の例)。同じクロックサイクル内だがより早い発行
位置にある、ESPレジスタをインクリメントまたはデクリメントする命令の後
にある命令については、ESP/EBPルックアヘッドユニット72は、先行す
る命令のESPレジスタに対する変更をすべて組合わせたものを示す定数を発生
する。ESPまたはEBPレジスタにおける移動または算術演算の後の命令につ
いては、ESP/EBPルックアヘッドユニット72は、移動または算術命令を
含む発行位置を特定する値を発生する。
【0070】 ルックアヘッド値は、発行位置内の命令に対応する(したがって、さもなくば
アドレス発生ユニット34A〜34Dの1つにより行なわれるであろうアドレス
発生演算を禁止する)ルックアヘッドアドレス、または、命令に対応する(それ
によってパイプライン内でより早期にフューチャファイル26へルックアヘッド
状態を与える)ルックアヘッド結果のいずれかを発生するため、ルックアヘッド
アドレス/結果計算ユニット74により使用され得る。アドレス発生演算を取除
くおよび/または機能ユニット32A〜32Dおよびアドレス発生ユニット34
A〜34D内での命令演算の実行よりも前にルックアヘッド状態を与えることに
よって、性能を上げることができよう。多くのx86コードシーケンスは、算術
/論理演算を伴わないソースから行先への値の移動などの比較的簡単な演算また
はレジスタオペランドの小さな定数による加算/減算もしくはインクリメント/
デクリメントなどの簡単な算術演算を多数含む。したがって、機能ユニット32
A〜32Dは、典型的には、より複雑な算術/論理演算および分岐命令を実行す
るであろうし、アドレス発生ユニット34A〜34Dは、典型的には、より複雑
なアドレス発生を行なうであろう。したがって、命令スループットが上がるであ
ろう。
【0071】 即値フィールド発生ユニット73は、その中でデコードされる命令のラインか
ら即値データフィールドを抽出するよう構成されるであろう(ここで使用する場
合には、即値データとは、アドレス発生において使用するための変位または機能
的命令演算において使用するための即値データであろう)。即値データは、ルッ
クアヘッドアドレス/結果計算ユニット74に与えられる。さらに、デコードユ
ニット70A〜70Fは、命令によって使用されるレジスタオペランド指示子を
特定しレジスタオペランド要求をフューチャファイル26へ与えるよう構成され
る。フューチャファイル26は、各レジスタオペランドに対して、対応する投機
的レジスタ値または結果キュータグをリターンする。ライン内依存性チェックユ
ニット75は、1ラインの命令間での依存性チェックを行なう。オペランドまと
めユニット78は、適切なオペランドを各命令に対して割振るため、ライン内依
存性チェックユニット75により発生された依存性情報を受取る。
【0072】 ルックアヘッドアドレス/結果計算ユニット74は、ESP/EBPルックア
ヘッドユニット72からルックアヘッド値を受取り、即値フィールド発生ユニッ
ト73から即値データを受取り、フューチャファイル26から投機的レジスタ値
または結果キュータグを受取る。ルックアヘッドアドレス/結果計算ユニット7
4は、命令のメモリオペランドに対応するルックアヘッドアドレスか、または命
令がメモリオペランドを含まない場合ならばルックアヘッド結果のいずれかを発
生しようと試みる。たとえば、簡単なレジスタからレジスタへの移動演算は、ソ
ースオペランドを行先オペランドとして与えることによって(機能ユニット32
およびアドレス発生ユニット34について)完了できる。メモリ演算およびレジ
スタ行先を用いる移動演算は、アドレス発生がルックアヘッドアドレス/結果計
算ユニット74により行なわれ得るのであれば、(機能ユニット32およびアド
レス発生ユニット34に関して)完了され得る。一実施例においては、ルックア
ヘッドアドレス/結果計算ユニット74は、変位のみ、レジスタおよび変位、E
SP/EBPおよび変位、ならびに索引またはベースレジスタがESP/EBP
である場合以外についてはスケール−インデックス−ベースアドレッシングモー
ドを使用してアドレスを計算するよう構成される。ロード/ストアユニット36
は、メモリ演算を行ないメモリ演算の結果を結果バス48を通じてリターンする
。メモリ演算に対してルックアヘッドアドレス/結果計算ユニット74により全
くアドレスが発生されなかった場合でも、ルックアヘッドアドレス/結果計算ユ
ニット74は、メモリ演算のためにロード/ストアユニット36内の記憶場所を
割当てるため、メモリ演算および対応する結果キュータグをロード/ストアユニ
ット36へ示す。
【0073】 ソースオペランドをインクリメントもしくはデクリメントする、ソースオペラ
ンドに小さな即値を加算/減算する、または2つのレジスタソースオペランドを
加算/減算する、簡単な算術演算はさらに、ソースオペランドがフューチャファ
イル26から利用可能であれば(すなわち投機的レジスタ値が結果キュータグの
代わりに受取られるのであれば)ルックアヘッドアドレス/結果計算ユニット7
4を通じて完了され得る。ルックアヘッドアドレス/結果計算ユニット74によ
り完了された命令は、完了されたことが表示され、リオーダバッファ28内のエ
ントリが割当てられるが、命令ウィンドウ30にディスパッチャはされない。ル
ックアヘッドアドレス/結果計算ユニット74は、たとえば、ルックアヘッド値
、即値データおよび投機的レジスタ値の中から選択するため、対応する制御論理
とともに各発行位置のための加算器を含み得る。この実施例によると、条件フラ
グの発生のために、簡単な算術演算がやはり命令ウィンドウ30へフォワードさ
れ得ることが注意される。しかし、ルックアヘッドアドレス/結果計算ユニット
74内で機能的結果を発生すると、早期にルックアヘッド状態が与えられ、その
後のアドレス発生/命令を同様に早期に行なうことが可能である。
【0074】 ルックアヘッドアドレス/結果計算ユニット74は、フューチャファイルのコ
ピーに加えて、ESP/EBPレジスタの別個のルックアヘッドコピーを維持す
るよう構成されてもよい。しかし、もし、ルックアヘッドアドレス/結果計算ユ
ニット74により計算できないESP/EBPへの更新が検出されたならば、E
SP/EBPの新しいルックアヘッドコピーがフューチャファイル26から(規
定されない態様でのESP/EBPの更新の命令の実行後に)与えられ得るよう
になるまで、その後の命令がストールされ得る。
【0075】 ディスパッチ制御ユニット76は、パイプラインフロー制御を行なうため、命
令の群がディスパッチされたか否かを判定する。ディスパッチ制御ユニット76
は、命令ウィンドウ30から命令のカウントを受取り、ロード/ストアユニット
36からロード/ストアのカウントを受取り、可能な最大数の命令がディスパッ
チ制御ユニット76、命令ウィンドウ30およびロード/ストアユニット36の
間をパイプライン段を通過中であるとみなし、命令ウィンドウ30および/また
はロード/ストアユニット36内でディスパッチされるべき命令が、その中に到
達したときに命令を記憶するために空間が利用可能であろうか否かを判定する。
もし、ディスパッチ制御ユニット76が、ロード/ストアユニット36内でおよ
び命令ウィンドウ30のいずれかで利用可能となるであろう空間が不十分である
と判定すれば、ディスパッチ制御ユニット76の受取る命令のカウントが十分に
低い値にまで減じられるまでディスパッチがストールされる。
【0076】 ディスパッチ制御ユニット76を通じてのディスパッチのための命令の解放に
際し、フューチャファイル26およびリオーダバッファ28は、投機的に発生さ
れたルックアヘッド結果で更新される。一実施例においては、サポートされる非
ESP/EBP更新の数は、フューチャファイル26のポートの数を制限するた
め、たとえば2に限定されるであろう。さらに、オペランドまとめユニット78
は、投機的に発生されたルックアヘッド結果を、前に判定されたライン内依存性
により示されるようにこれらの結果に依存する、その後の同時にデコードされる
命令へとまとめる。上記態様において、投機的に発生されたルックアヘッド結果
は、機能ユニット32A〜32Dからその後フォワードされないであろうから、
依存性の命令は、投機的に発生されたルックアヘッド結果を受取る。ルックアヘ
ッドアドレス/結果計算ユニット74により完了されないこれらの命令は、次に
、これらの命令が整列ユニット22より整列させられた発行位置に基づいて、命
令ウィンドウ30A〜30Bの1つへ送られる。
【0077】 なお、プロセッサ10の一実施例は、マイクロコードルーチンと呼ばれる、複
数のより簡単な命令をディスパッチすることによって複雑な命令を実行するため
の(図示しない)マイクロコードユニットを用いてもよい。デコードユニット7
0A〜70Fは、どの命令がマイクロコード命令であるかを検出しマイクロコー
ド命令をマイクロコードユニットへ割振るよう構成されてもよい。たとえば、有
効な命令を受取ったデコードユニット70からの直接デコードされた命令出力が
ないことは、対応する有効な命令に対し実行を開始するようにというマイクロコ
ードユニットに対する表示であり得る。さらに、図2および図3にさまざまな記
憶装置が図示されていることが注意される(たとえば、図2の装置79A、79
Bおよび同様の装置ならびに図3の装置79C、79Dおよび同様の装置)。記
憶装置は、パイプライン段を分離するために使用され得る、ラッチ、レジスタ、
フリップフロップなどを表わす。しかし、図2および図3に示す特定のパイプラ
イン段は、プロセッサ10の一実施例のための適当なパイプライン段の一実施例
にすぎない。他の実施例では他のパイプライン段を用い得る。
【0078】 x86命令セットおよびアーキテクチャが、上で例として使用され、以下で例
として使用されるであろうが、どのような命令セットおよびアーキテクチャでも
使用できることが注意される。さらに、変位は(ここで例として使用される8ビ
ットサイズおよび32ビットサイズに加え)任意の所望のサイズであり得る。さ
らに、ここでキャッシュラインのフェッチが説明されるであろうが、所望であれ
ば、フェッチされることが望ましいキャッシュラインのサイズおよびバイトの数
に基づいて、キャッシュラインはセクタでもあり得、セクタがフェッチされても
よいことが注意される。
【0079】 次に図4を参照し、デコードユニット70A、ESP/EBPルックアヘッド
ユニット72、ライン内依存性チェックユニット75、即値フィールド発生ユニ
ット73および命令バイト記憶装置80を示すブロック図が示される。プロセッ
サ10の一実施例による図示されるブロック間の相互接続は図4に示される。付
加的な、代替的なおよび/または異なった相互接続方式を用いる他の実施例が企
図される。図4の実施例では、デコードユニット70Aが、オペコード/mod
R/Mバス82A、ソースおよび行先レジスタ指示子バス84A、ならびに開
始位置バス86Aと結合される。開始位置バス86Aおよびオペコード/mod
R/Mバス82Aは、即値フィールド発生ユニット73と結合され、即値フィ
ールド発生ユニット73はさらに命令バイト記憶装置80と結合される。オペコ
ード/mod R/Mバス82Aはさらに、ESP/EBPルックアヘッドユニ
ット72と結合される。ソースおよび行先レジスタ指示子バス84Aは、ライン
内依存性チェックユニット75と結合され、ライン内依存性チェックユニット7
5はさらに、他のデコードユニット70からの同様のソースおよび行先レジスタ
指示子バス84B〜84Fと結合される。ESP/EBPルックアヘッドユニッ
ト72は、ルックアヘッドESP/EBPバス88および定数バス90Aと結合
され、ルックアヘッドESP/EBPバス88および定数バス90Aはさらに、
ルックアヘッドアドレス/結果計算ユニット74と結合される。ライン内依存性
チェックユニット75は、依存性バス92と結合され、依存性バス92はさらに
オペランドまとめユニット78と結合される。即値フィールド発生ユニット73
は、即値フィールドバス94Aおよび比較ライン96Aと結合される。比較ライ
ン96Aは、オペランドまとめユニット78と結合され、即値フィールドバス9
4Aはルックアヘッドアドレス/結果計算ユニット74と結合される。参照番号
の後に文字を付して示すバスおよびラインは、デコードユニット70Aによりデ
コードされる命令に対応する。デコードユニット70B〜70Fにより同時にデ
コードされる命令に対応して同様の相互接続が設けられるであろう。図面では簡
単にするため、同時にデコードされる他の命令に対応する相互接続は、図4(お
よびそれに続く他の図)では必ずしも示していない。しかし、図示する相互接続
と同様の相互接続がライン内の他の命令についても設けられるであろう。
【0080】 デコードユニット70Aは、命令整列ユニット22により与えられた命令をデ
コードし、命令整列ユニット22によりデコードユニット70A〜70Fに同時
に与えられた命令のラインに対応する命令バイト内の命令の開始位置を検出する
。ラインに対応する命令バイトは、(たとえばレジスタであり得る)命令記憶装
置80内に記憶され、デコードユニット70Aがそのデコードを行なうためにデ
コードユニット70Aにより使用される命令の部分を受取る。一例においては、
デコードユニット70Aは、デコードされる命令に対応するプレフィックス、オ
ペコードおよびmod R/Mバイトと同様にラインに対応する命令バイト内の
命令の開始位置を受取る。他の実施例では、その実施例において用いられる命令
セットのアーキテクチャに依存して命令の異なった部分が受取られるであろう。
【0081】 デコードユニット70Aは、命令のためのソースおよび行先レジスタオペラン
ド指示子を特定し、ソースおよび行先レジスタ指示子バス84A上で指示子を運
ぶ。好ましい実施例においては、命令は、最大2つのソースオペランドおよび1
つの行先オペランドを有するであろう。もし命令が、メモリオペランドを含むの
であれば、ソースオペランドはアドレスオペランドを含むであろう。さらに、デ
コードユニット70Aは開始位置バス86A上で命令の開始位置を運ぶ。
【0082】 ESP/EBPルックアヘッドユニット72は、オペコードおよびmod R
/Mバイトを受取り、対応する命令がソースオペランドとしてESPレジスタま
たはEBPレジスタを有するか否か、および、命令がいずれかのレジスタの更新
を指定しているか否かを判定する。ESP/EBPルックアヘッドユニット72
は、ルックアヘッドESP/EBPバス88上でルックアヘッドESPおよびル
ックアヘッドEBP値を与える。ルックアヘッドレジスタ値は、デコードユニッ
ト70A〜70Fによりデコードされる命令のラインよりも前にディスパッチさ
れた命令の結果の累積に対応する。さらに、ESP/EBPルックアヘッドユニ
ット72は、デコードユニット70Aによりデコードされる命令に対するソース
オペランドを発生するため、ルックアヘッドESPまたはEBP値に加えられる
べき定数を発生する。ライン内の他の命令のためにも同様の定数が発生されるで
あろう。各発行位置のための定数は、ライン内のその発行位置に対応する命令を
含めてこの命令よりも前の命令の累積効果を表わす。デコードユニット70Aの
場合には、ライン内の命令よりも前には命令は存在しないので、命令のためのソ
ースオペランドとして値を使用する前に行なわれる、対応するレジスタに対する
変更に、定数は対応する。たとえば、x86命令セットにより規定されるPUS
H命令は、命令のためのアドレスオペランドとしてESPレジスタ値を使用する
前にESPレジスタ値をデクリメントするよう指定する。
【0083】 ライン内依存性チェックユニット75は、デコードユニット70Aおよび他の
デコードユニット70B〜70Fからソースおよび行先レジスタ指示子を受取る
。ライン内依存性チェックユニット75は、特定の発行位置内の命令に対応する
各ソースオペランドに対しライン内の前の命令各々の行先オペランドに対しての
依存性チェックを行なう。もし依存性が検出されれば、依存性バス92上で対応
の表示が与えられる。したがって、依存性バス92は、可能性のあるソースオペ
ランド各々について、そのソースオペランドに対して依存性が検出されたか否か
、およびどの発行位置にソースオペランドが依存しているかを示す表示を含む。
たとえば、依存性バス92は、各ソースオペランドに対応する依存性信号および
各ソースオペランドに対応する発行位置番号を含むであろう。
【0084】 即値フィールド発生ユニット73は、命令のオペコードおよびmod R/M
バイトをデコードし、即値フィールドが命令内に含まれているかを判定する。即
値フィールド発生ユニット73は、命令バイト記憶装置80から即値フィールド
を抽出し、即値フィールドバス94A上に即値フィールドを与える。一実施例に
おいては、さまざまなサイズの即値フィールドがサポートされる(たとえば8ビ
ットおよび32ビット)。即値フィールド発生ユニット73は、より小さな即値
フィールドを符号拡張(sign extend)またはゼロ拡張(zero extend)して、適
宜サポートされる最大の即値フィールドサイズにするよう構成され得る。さらに
、もし命令がインクリメント/デクリメント命令であれば、即値フィールド発生
ユニット73は、インクリメント/デクリメントのサイズを反映した即値フィー
ルドのための定数を発生するよう構成されるであろう。もし、命令が即値フィー
ルドを含まずインクリメント/デクリメント命令でなければ、即値フィールド発
生ユニット73は、即値フィールドバス94A上でゼロ値を発生するよう構成さ
れるであろう。即値フィールド発生ユニット73はさらに、他のデコードユニッ
ト70内の命令に対応して、同様の動作を行なうよう構成されるであろう。即値
フィールド発生ユニット73は、デコードユニット70Aにより与えられた開始
位置およびオペコードおよびmod R/Mバイトのデコードにより、命令バイ
ト記憶装置80から即値フィールドを選択する。
【0085】 この実施例においては、命令バイト記憶装置80は、同時にデコードされる命
令のラインに対応する命令バイトを記憶する。命令バイトは、命令のラインとと
もにパイプライン化され、所望に従い命令のさまざまなフィールドを抽出するこ
とが可能である。他の実施例では、命令は(命令バイト記憶装置80内の命令に
対して命令のサブセットおよびポインタを割振るのではなく)完全に各発行位置
内で割振られるであろう。
【0086】 この実施例では、即値フィールド発生ユニット73はさらに、特定の発行位置
内の比較命令であって、その比較結果に依存する分岐命令が(すなわち条件付き
分岐命令が)直後の発行位置にある、比較命令を検出するよう構成される。この
ような組合せを検出すると、即値フィールド発生ユニット73はオペランドまと
めユニット78に対して比較表示をアサートする。他の実施例では、比較/分岐
の組合せを検出するために別個の制御ユニットを設けることもでき、または、他
のユニットの1つをこの機能を提供するため構成することもできる。さらに、比
較/分岐の組合せが検出されない実施例も企図される。オペランドまとめユニッ
ト78は、比較演算および分岐演算を1つの発行位置にとまとめるよう構成され
るであろう(すなわち、1つの機能ユニットが比較演算と依存性の分岐演算とを
両方同時に行なうであろう)。
【0087】 図4中、図示されるユニットの所定の出力が、たとえばオペランドまとめユニ
ット78までパイプライン化されているものとして示されていることが注意され
る。これは、これらの出力が発生され対応する命令とともにパイプラインを通っ
て受取ユニットへ運ばれることを示すよう意図されている。代替的に、これらの
出力は、受取ユニットによって取り込まれ得、受取ユニットへの命令の到着に際
して対応する命令と関連づけられることも可能である。
【0088】 次に図5を参照し、ルックアヘッドアドレス/結果計算ユニット74の一実施
例の部分を示す。他の実施例も可能であり企図される。図5の実施例においては
、発行位置0に対応する(すなわちデコードユニット70Aに対応する)ルック
アヘッドアドレス/結果計算ユニット74の部分が図示される。他の発行位置に
ついても同様のハードウェアが同様に提供されるであろう。制御ユニット100
は、デコードユニット70Aからパイプライン化されたオペコード/mod R
/Mバス82Aと結合されるよう示される。制御ユニット100はさらに、バス
102を介してフューチャファイル26により与えられる命令のソースオペラン
ドに対応する有効な表示を受取るよう結合される。ソースオペランドは、もし、
実行に際してそのソースオペランドを生成するであろう命令を示す結果キュータ
グの代わりにそのソースオペランドが与えられるのであれば、フューチャファイ
ル26内で有効である。制御ユニット100は、オペランド選択マルチプレクサ
(mux)104Aおよび104Bに選択制御を与えるよう結合される。オペラ
ンド選択mux104Aは、ルックアヘッドESPバス88−1(ルックアヘッ
ドESP値を与えるルックアヘッドESP/EBPバス88の部分)、定数バス
90Aおよびフューチャファイル26からのソース1バス112と結合される。
オペランド選択mux104Bは、ルックアヘッドEBPバス88−2(ルック
アヘッドEBP値を与えるルックアヘッドESP/EBPバス88の部分)、定
数バス90Aおよびフューチャファイル26からのソース2バス114と結合さ
れる。加算器106が、即値フィールドバス94Aおよびセグメントバス108
と同様にオペランド選択mux104と結合されるものとして示される。加算器
106は、結果バス110A上で、ロード/ストアユニット36、フューチャフ
ァイル26およびオペランドまとめユニット78に与えられる結果を与える。制
御ユニット100は、アドレス有効ライン116A上へロード/ストアユニット
36およびオペランドまとめユニット78へのアドレス有効信号を生成し、結果
有効ライン118A上へフューチャファイル26およびオペランドまとめユニッ
ト78への結果有効信号を生成する。上述のように、参照番号の後に文字を付し
て示す接続は、(図5には示さない)他の発行位置内の命令についても同様に設
けられるであろうことが注意される。
【0089】 制御ユニット100は、命令のオペコードおよびmod R/Mバイトをデコ
ードし、(メモリオペランドを含む命令のために)ルックアヘッドアドレス発生
を行なうか、または、(メモリオペランドを含まず加算系命令演算または移動命
令演算を行なう命令のために)ルックアヘッド結果発生を行なうか、またはいず
れも行なわないかを判定するよう構成される。制御ユニット100は、命令のデ
コードにより、オペランド選択mux104を介してオペランドを選択するであ
ろう。加算器106は、(i)オペランド選択mux104Aおよび104Bに
より与えられる値、即値フィールドバス94上で与えられる即値、および(iii )セグメントバス108上で与えられるセグメント基準アドレスを、結果を生成
するために加算するよう構成される。(アドレス発生ではなく)結果発生のため
、(図示しない)制御ユニット100からの制御信号に応答して、セグメント値
はゼロであり得、または加算器106により無視され得る。
【0090】 たとえば、図6に示す真理値表120が、もし命令がメモリオペランドのため
のアドレス発生命令演算を含むのであれば、オペランド選択mux104の値を
選択するため、制御ユニット100の一実施例のため用いられるであろう。真理
値表120は、メモリオペランドのアドレスを発生するため命令により用いられ
るアドレッシングモードを示すアドレッシングモード列、制御ユニット100か
らの制御に応答してオペランド選択mux104Aにより選択される値を示すm
ux1列、および制御ユニット100からの制御に応答してオペランド選択mu
x104Bにより選択される値を示すmux2列を含む。他の実施例も可能であ
り、企図される。図6に示す例は、以下のアドレッシングモードをサポートする
:(i)変位のみ、(ii)任意の変位および(ESPまたはEBPレジスタを含
まない)1つまたは2つのアドレスオペランドの組合せ、または(iii)任意の 変位およびソースオペランドとしてのESPまたはEBPレジスタ。スケールフ
ァクタが、x86命令セットアーキテクチャ内において指定可能なスケール−イ
ンデックス−ベースアドレッシングモードに含まれるであろうことが注意される
。mux104Aは、1ビットまたは2ビット左シフトされたソース1オペラン
ドを選択することにより、ソース1オペランドをスケーリングするよう構成され
得る。さらに、図6に示す変位は、この実施例では即値バス94A上で与えられ
ることが注意される。
【0091】 命令によって指定されるアドレッシングモードに依存して、制御ユニット10
0は、フューチャファイル26からの有効な指示を調べ、加算器106がメモリ
オペランドのアドレスを成功裡に発生したか否かを判定する。すなわち、アドレ
スオペランドである各ソースオペランドが有効であれば、加算器106は成功裡
にアドレスを発生するであろう。もしアドレスが成功裡に発生されれば、制御ユ
ニット100は、アドレス有効ライン116A上でアドレス有効信号をアサート
し、結果バス110A上で与えられるアドレスが対応する命令のためにメモリオ
ペランドのアドレスとして取込まれ使用されるであろうということを、ロード/
ストアユニット36に対して示す。もしアドレスが成功裡に発生されなければ、
アドレス発生ユニット34が、続いてアドレスを発生するため使用されるであろ
うし、そのアドレスがその後ロード/ストアユニット36にフォワードされるで
あろう。
【0092】 セグメントバス108は、x86命令セットアーキテクチャにより規定される
セグメンテーション変換機構によりセグメント基準アドレスを与える。他の命令
セットアーキテクチャを用いるプロセッサのための他の実施例では、セグメント
バス108は取除かれるかもしれない。セグメントバス108上で与えられるセ
グメント基準アドレスは、現在の発行位置内の命令に対応する選択されたセグメ
ントのセグメント基準アドレスである。代替的に、対応する命令によって、各利
用可能なセグメント基準アドレスが与えられ選択されてもよい。セグメント情報
は、当分野で周知のように適当な変換ユニットまたは特別なレジスタユニット内
で維持されるであろう。
【0093】 もし現在の発行位置内の命令がメモリオペランドを含んでいなければ、制御ユ
ニット100は、命令のためのルックアヘッド結果を発生するためオペランドを
選択しようと試みるであろう。この実施例では、制御ユニット100は、1つま
たは2つのソースオペランドおよび/または即値を含む加算/減算演算またはイ
ンクリメント/デクリメント演算をサポートするであろう。制御ユニット100
はさらに、第2のソースオペランドを加算器106への唯一の入力として与える
ことによりレジスタからレジスタへの移動をサポートするであろう。
【0094】 たとえば、制御ユニット100の一実施例は、図7に示す真理値表122によ
り動作するであろう。他の実施例も可能であり企図される。図7に示すような真
理値表122は、この実施例によるルックアヘッドアドレス/結果計算ユニット
74によりサポートされる算術演算を示す算術演算列を含む。図6に示す真理値
表120と同様、真理値表122は、制御ユニット100からのそれぞれの制御
に応答して、オペランド選択mux104Aにより選択されるオペランドを示す
mux1列およびオペランド選択mux104Bにより選択されるオペランドを
示すmux2列を含む。表によれば、(もしmux104Bによりゼロが選択さ
れたならば)1個または2個のソースオペランドおよび任意の即値フィールドの
加算または減算が、インクリメントまたはデクリメントおよびレジスタからレジ
スタへの移動と同様にサポートされるであろう。
【0095】 制御ユニット100は、加算器106が成功裡に結果バス110AAでルック
アヘッド結果を生成したか否かを判定するよう構成される。制御ユニット100
は、もし、フューチャファイル26によって示されたところの、結果を発生する
ために使用された各ソースオペランドが有効であれば、そして命令によって指定
された機能的命令演算がルックアヘッドアドレス/結果計算ユニット74により
サポートされるものであれば、成功裡に結果が生成されたと判定する。もし、結
果が成功裡に生成されたと判定されれば、制御ユニット100はフューチャファ
イル26およびオペランドまとめユニット78に対して結果有効ライン118A
上で結果有効信号をアサートする。フューチャファイル26は、(結果バス11
0A上でも与えられ得る)命令の行先レジスタにより結果を記憶するよう構成さ
れるであろう。オペランドまとめユニット78は、(ライン内依存性チェックユ
ニット75により与えられる依存性表示により)依存性の命令のソースオペラン
ドへと、結果をまとめるよう構成されるであろう。
【0096】 次に図8を参照し、オペランドまとめユニット78の一実施例の部分を示すブ
ロック図を示す。他の実施例も可能であり企図される。図8に示す部分において
は、制御ユニット130がオペランドまとめmux132A〜132Dとともに
示される。制御ユニット130は、(図5に示す結果有効ライン118Aを含む
)複数の結果有効ライン118、(図5に示すアドレス有効ライン116Aを含
む)複数のアドレス有効ライン116、ライン内依存性チェックユニット75か
らの依存性バス92、(図4に示す比較ライン96Aを含む)複数の比較ライン
96および禁止バス134と結合される。制御ユニット130はさらに、(図8
に示されない他の発行位置のためのまとめmuxと同様)各まとめmux132
へ選択制御を与えるよう結合される。各まとめmux132A〜132Dは、1
つの発行位置内の1つのソースオペランドに対応する。各まとめmux132A
〜132Dは、ライン内の前の発行位置に対応する行先タグおよびこれらの発行
位置に対応するルックアヘッド結果を受取るよう結合される。さらに、各まとめ
mux132A〜132Dは、まとめmux132A〜132Dに対応する発行
位置の直前の発行位置内の命令のソースオペランドのための、および、まとめm
ux132A〜132Dに対応する発行位置内の命令のソースオペランドのため
のフューチャファイル出力を受けるよう結合される。たとえば、まとめmux1
32Aは、発行位置1のためのソース1オペランドを与え、(i)発行位置0内
の命令に対する行先タグ、(ii)結果バス110A上で与えられる発行位置0に
対応するルックアヘッド結果、および(iii)発行位置0のソース1オペランド および発行位置1のソース1オペランドに対応するフューチャファイル26から
のソース1オペランドを受けるよう結合される。図8に示すように、大文字Pの
後に数字をつけたものは、示された値に対応する発行位置を示す(すなわち、P
0は発行位置0であり、P1は発行位置1である)。
【0097】 上述のように、オペランドまとめユニット78は、ルックアヘッドアドレス/
結果計算ユニット74により発生されたルックアヘッド結果を、ライン内の依存
性命令のソースオペランドへとまとめる。図8に示す例においては、オペランド
まとめmux132が、各ソースオペランドおよび、まとめが行なわれるであろ
う各発行位置に対して設けられる。したがって、発行位置0はライン内の第1の
発行位置であるためライン内依存性を経験しないであろうから、発行位置0につ
いてはオペランドまとめmuxは示されていない。オペランドまとめmux13
2Aおよび132Bは、発行位置1のためのソースオペランドを与え、一方、オ
ペランドまとめmux132Cおよび132Dは、発行位置2のためのソースオ
ペランドを与える。同様のオペランドクラスのmuxが、(図8に示さない)発
行位置3、4および5に対しソース1ソースオペランドを与える。
【0098】 制御ユニット130は、結果有効ライン118を通じてどの結果が有効である
かの表示および依存性バス92の上でライン内依存性の表示を受取る。もし、依
存性が特定の発行位置内の特定のソースオペランドに関して依存性バス92を通
じて知らされれば、そして、ソースオペランドが依存する発行位置についての、
結果有効ライン118により示される結果が有効であれば、制御ユニット130
は、対応するオペランドまとめmux132を制御して、対応するルックアヘッ
ド結果バスから結果を選択するであろう。他方、もし対応する結果が有効ではな
いと依存性が示されれば、制御ユニット130は対応するオペランドまとめmu
x132を制御して、ソースオペランドが依存する発行位置の行先タグを選択す
るであろう。制御ユニット130はさらに、比較/分岐が検出されたことを示す
比較信号を比較ライン96上で受取る。もし、比較/分岐の組合せが検出されて
いれば、制御ユニット130は、分岐命令を含む発行位置のオペランドまとめm
ux132のために、前の発行位置のソースオペランドに対するフューチャファ
イル出力を選択する。上記態様において、比較命令のソースオペランドが、分岐
命令を有する発行位置に与えられるであろう。その後、受取り機能ユニットが(
比較ソースオペランドを使用して)比較を行なうことができ、かつ、比較の結果
として分岐命令がテイクンであるのかノットテイクンであるのか判定できる。も
し、特定の発行位置の特定のソースオペランドについて依存性が認められず、発
行位置が比較/分岐の組合せの分岐部分でなければ、制御ユニット130は、対
応するオペランドまとめmux132を制御し、(結果キュータグまたは有効ソ
ースオペランドであり得る)その発行位置内のソースオペランドのためにフュー
チャファイル出力を選択する。
【0099】 制御ユニット130が行なうであろう付加的なチェックは、特定の発行位置内
の特定のソースオペランドが、前の発行位置に依存することが示され、その前の
発行位置に対する結果がルックアヘッドアドレス/結果計算ユニット74により
有効であると示されている場合の、判定である。もし前の発行位置に、ライン内
ソース依存性が示されていれば、ルックアヘッドアドレス/結果計算ユニット7
4に与えられる結果は実は(誤ったソースオペランドに基づくものであるから)
無効である。このような場合には、制御ユニット130は、ルックアヘッドアド
レス/結果計算ユニット74により与えられるルックアヘッド結果の選択を禁止
するであろうし、その代わりに前の発行位置に対応する行先タグを選択するであ
ろう。一実現例では、対応する発行位置内で依存性が示されればマスキングされ
た結果有効信号がリセットされるよう制御ユニット130は、結果有効信号を依
存性バス92からの対応する依存性表示でマスキングするであろう。フューチャ
ファイル26およびロード/ストアユニット36が、同様の態様で、ルックアヘ
ッド結果/アドレスを無効にするであろうことが注意される。
【0100】 制御ユニット130は、さらに、禁止バス134を介して命令ウインドウ30
へ信号を送るよう構成されるであろう。ルックアヘッドアドレス/結果計算ユニ
ット74により完了される各命令演算(アドレス発生または機能演算のいずれか
)に対して、制御ユニット130は、命令演算が機能ユニット32またはアドレ
ス発生ユニット34による実行のため選択されないように、命令ウインドウ30
内の対応する演算を禁止するであろう。たとえば、禁止バス134は、各発行位
置についてアドレス発生禁止信号および機能演算禁止信号を含むであろう。もし
、ルックアヘッドアドレス/結果計算ユニット74が(あらゆるライン内依存性
の影響を含む)特定の発行位置に対するルックアヘッドアドレスを成功裡に発生
したならば、制御ユニット130は、特定の発行位置に対するアドレス発生禁止
信号を活性化するであろう。他方、もし、ルックアヘッドアドレス/結果計算ユ
ニット74が(あらゆるライン内依存性の影響を含む)特定の発行位置に対応す
るルックアヘッド結果を成功裡に発生したならば、制御ユニット130は、機能
演算禁止信号を活性化するであろう。さらに、もし特定の発行位置が比較/分岐
の組合せの比較部分を記憶していれば、制御ユニット130は、機能演算禁止信
号を活性化するであろう。上述のように、算術演算は、算術命令の機能演算に加
えフラグ発生を含むであろう。機能的結果が既に発生されていたとしても、フラ
グ結果の発生を可能とするため、このような命令は禁止されないであろう。代替
的に、フューチャファイル26がルックアヘッド結果で更新されるよりも前にフ
ューチャファイル26を読出すであろう命令に対するフォワーディングを行なう
ため機能的結果は禁止されないであろう。さもなくば、フューチャファイルの読
出とルックアヘッド結果の提供との間でパイプライン段の中で局所フォワーディ
ングが行なわれるであろう。制御ユニット130は、アドレス発生禁止信号を発
生するため、アドレス有効信号を受取る。さらに、制御ユニット130は、もし
対応する命令が条件コードおよび結果レジスタを更新するのであれば、機能演算
を禁止しないように構成されるであろう。したがって、条件コードの計算のため
、機能演算は機能ユニットへ与えられるであろう。
【0101】 次に図9を参照し、特定の発行位置のための特定のソースオペランドを選択す
るための制御ユニット130の一実施例の演算を示すフローチャートを示す。他
の実施例も可能であり企図される。図9に示すステップは、各ソースオペランド
について並行して行なわれ得る。図9に示すステップは、理解を容易にするため
特定の順番で示しているが、任意の適切な順番で行ない得る。さらに、制御ユニ
ット130内の論理において、所望であれば、ステップを並行して行ない得る。
【0102】 制御ユニット130は、特定のソースオペランドについて認められるライン内
依存性があるか否かを判定する(判定ブロック140)。もし、ライン内依存性
が認められれば、制御ユニット130は、ルックアヘッドアドレス/結果計算ユ
ニット74が、特定のソースオペランドが依存する前の発行位置についてのルッ
クアヘッド結果が成功裡に発生されたか否かを判定する(判定ブロック142)
。もし、ルックアヘッド結果が成功裡に発生されていなければ、制御ユニット1
30は、前の発行位置に対応する行先タグを選択する(ステップ144)。さら
に、もし、前の発行位置内で結果が有効であるが、前の発行位置の1以上のソー
スオペランドについてライン内依存性が認められれば(判定ブロック146)、
制御ユニット130は、同様に前の発行位置に対応する行先タグを選択する(ス
テップ144)。もし前の発行位置のソースオペランドについて依存性が認めら
れず、結果が有効であれば、制御ユニット130はルックアヘッドアドレス/結
果計算ユニット74により与えられた結果を選択する(ステップ148)。
【0103】 もし特定のソースオペランドについてライン内依存性が全く認められなければ
(判定ブロック140)、制御ユニット130は、比較/分岐の組合せであって
、特定の発行位置がその分岐部分である比較/分岐の組合せが検出されているか
否かを判定する(判定ブロック150)。もし比較/分岐の組合せが検出されて
いれば、制御ユニット130によって前の発行位置(すなわち比較命令を含む発
行位置)からのソースオペランドが選択される(ステップ152)。他方、もし
比較/分岐の組合せが検出されていなければ、制御ユニット130は特定のソー
スオペランドについてフューチャファイル出力を選択する(ステップ154)。
【0104】 上にmuxとしてさまざまな特徴を示したが、説明した選択を行なうため選択
論理のどのようなパラレルでのまたはシリアルでの組合せも使用され得ることが
注意される。さらに、この実施例は、ライン内結果および比較/分岐の組合せに
対してまとめを行なうが、これらの特徴の一方のみを提供する例も企図されるこ
とが注意される。さらに、この実施例ではオペランドのソースとしてフューチャ
ファイルが使用されるが、他の実施例では、オペランドのソースとして、リオー
ダバッファ、リネームレジスタファイルなど他の投機的記憶装置要素を用いても
よいことが注意される。
【0105】 次に、図10を参照し、バスブリッジ202を通じてさまざまなシステム構成
要素と結合されるプロセッサ10を含むコンピュータシステム200の一実施例
のブロック図を示す。他の実施例も可能であり企図される。図示されるシステム
中、メインメモリ204がメモリバス206を通じてバスブリッジ202と結合
され、グラフィックスコントローラ208がAGPバス210を通じてバスブリ
ッジ202と結合される。最後に、複数のPCI装置212A〜212BがPC
Iバス214を通じてバスブリッジ202と結合される。第2のバスブリッジ2
16がさらに、EISA/ISAバス220を通じて1以上のEISAまたはI
SA装置218への電気的インターフェイスに対処するため設けられてもよい。
プロセッサ10は、バスインターフェイス46を通じてバスブリッジ202と結
合される。
【0106】 バスブリッジ202は、プロセッサ10、メインメモリ204、グラフィック
スコントローラ208およびPCIバス214と接続された装置の間のインター
フェイスを提供する。バスブリッジ202に接続される装置の1つから演算が受
取られるとき、バスブリッジ202は演算のターゲットを特定する(たとえば特
定の装置またはPCIバス214の場合にはターゲットはPCIバス214上に
ある)。バスブリッジ202は、演算をターゲットである装置に与える。バスブ
リッジ202は通常、演算をソース装置またはバスにより使用されるプロトコル
からターゲット装置またはバスにより使用されるプロトコルに変換する。
【0107】 PCIバス214のためのISA/EISAバスへのインターフェイスを提供
するのに加えて、必要であれば、第2のバスブリッジ216がさらに付加的な機
能を組入れるであろう。たとえば、一実施例においては、第2のバスブリッジ2
16はPCIバス214の所有権を調停するための(図示しない)マスタPCI
アービタを含む。第2のバスブリッジ216の外部であるかまたは第2のバスブ
リッジ216と統合される(図示しない)入力/出力コントローラがさらに、所
望であればキーボードおよびマウス222ならびにさまざまなシリアルポートお
よびパラレルポートのための動作的サポートを与えるためコンピュータシステム
200内に含まれ得る。(図示しない)外部キャッシュユニットがさらに、他の
実施例においてはプロセッサ10とバスブリッジ202との間のバスインターフ
ェイス46と結合され得る。代替的に、外部キャッシュは、バスブリッジ202
と結合され、外部キャッシュ用のキャッシュ制御論理がバスブリッジ202へ統
合され得る。
【0108】 メインメモリ204は、その中にアプリケーションプログラムが記憶され、そ
こからプロセッサが主として実行を行なうメモリである。適当なメインメモリ2
04は、DRAM(ダイナミック・ランダム・アクセス・メモリ)を含み、好ま
しくは、SDRAM(シンクロナスDRAM)の複数のバンクを含む。
【0109】 PCI装置212A〜212Bは、たとえば、ネットワークインターフェイス
カード、ビデオアクセラレータ、オーディオカード、ハードディスクドライブも
しくはフロッピーディスクドライブまたはドライブコントローラ、SCSI(ス
モール・コンピュータ・システムズ・インターフェイス)アダプタおよび電話通
信カードなどのさまざまな周辺装置の例である。同様に、ISA装置218は、
モデム、サウンドカード、およびGPIBまたはフィールドバスインターフェイ
スカードなどのさまざまなデータアクイジションカードなどのさまざまな種類の
周辺装置の例である。
【0110】 グラフィックスコントローラ208は、ディスプレイ226上でのテキストお
よび画像のレンダリングを制御するために設けられる。グラフィックスコントロ
ーラ208は、メインメモリ204へ、およびメインメモリ204から効果的に
移動され得る3次元データ構造をレンダリングするための当分野では一般に公知
の典型的なグラフィックアクセラレータであり得る。グラフィックスコントロー
ラ208はしたがって、バスブリッジ202内のターゲットインターフェイスへ
のアクセスを要求し受けることができ、それによってメインメモリ204へのア
クセスを得るという点で、AGPバス210のマスタであり得る。専用グラフィ
ックスバスが、メインメモリ204からのデータの迅速な取出しに対処する。所
定の動作については、グラフィックスコントローラ208はさらに、AGPバス
210上でPCIプロトコルトランザクションを発生するよう構成され得る。バ
スブリッジ202のAGPインターフェイスはしたがって、AGPプロトコルト
ランザクションおよびPCIプロトコルターゲットとイニシエータとのトランザ
クションの両方をサポートする機能を含み得る。ディスプレイ226は、上に画
像またはテキストが提示され得る任意の電子的ディスプレイである。適切なディ
スプレイ226は、陰極線管(CRT)、液晶ディスプレイ(LCD)などを含
む。
【0111】 上述の説明においては例としてAGP、PCIおよびISAまたはEISAバ
スが使用されたが、所望であれば任意のバスアーキテクチャで置換えられること
が注意される。さらに、コンピュータシステム200は付加的なプロセッサ(た
とえばコンピュータシステム200の任意構成要素として示されるプロセッサ1
0aなど)を含むマルチプロセッシングコンピュータシステムであり得ることが
注意される。プロセッサ10aはプロセッサ10と同様のものであり得る。特に
、プロセッサ10aはプロセッサ10の同一コピーであり得る。プロセッサ10
aは、(図10に示すように)プロセッサ10とバスインターフェイス46を共
有し得、または、独立バスを通じてバスブリッジ202へ接続され得る。
【0112】 上の開示により、命令の実行よりも前にルックアヘッドアドレスおよび/また
は結果を発生するよう試みるプロセッサが示された。ライン内依存性が認められ
、ルックアヘッド結果は依存性の命令のソースオペランドへとまとめされる。(
フューチャファイルおよびまとめ機構を通じてフォワーディングを提供すること
で)早期にルックアヘッド結果を与えることによりフォワーディングはより効率
的になり得る。さらに、機能ユニット内で実行されるべき必要な命令演算の数が
より少ないことで、サポートされる機能ユニットがより少なくなり得る。
【0113】 一旦本開示が十分に理解されれば、当業者には多くの変形および変更が明らか
となるであろう。前掲の特許請求の範囲は、これらの変形および変更すべてを包
含するものと解釈されるよう意図される。
【図面の簡単な説明】
【図1】 プロセッサの一実施例のブロック図である。
【図2】 図1に示すフェッチ/スキャンユニットの一実施例のブロック図
である。
【図3】 図1に示すルックアヘッド/まとめユニットの一実施例のブロッ
ク図である。
【図4】 図3に示すルックアヘッド/まとめユニットの部分の間の相互接
続を示す、図3に示すルックアヘッド/まとめユニットの部分のブロック図であ
る。
【図5】 図3および図4に示すルックアヘッドアドレス/結果発生ユニッ
トの一実施例の部分を示す図である。
【図6】 ルックアヘッドアドレス発生のための、図5に示す制御ユニット
の一実施例による真理値表の図である。
【図7】 ルックアヘッド結果発生のための、図5に示す制御ユニットの一
実施例による真理値表の図である。
【図8】 図3に示すオペランドまとめユニットの一実施例の部分のブロッ
ク図である。
【図9】 図8に示す制御ユニットの一実施例を示すフローチャートのブロ
ック図である。
【図10】 図1に示すプロセッサを含むコンピュータシステムのブロック
図である。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成11年11月24日(1999.11.24)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0006
【補正方法】変更
【補正内容】
【0006】 ここでは、「依存」という語は、第2の命令の実行よりも前に第1の命令が実
行されていることを第2の命令が必要とするような、第1の命令とそれに続く第
2の命令との関係を指すため使用する。たとえば、第2の命令が、第1の命令の
実行を通じて発生されるソースオペランドを含むようなときである。一般に、オ
ペランドとは、命令の実行の間にそれに対する操作が行なわれる値である。特定
の命令についてのオペランドが命令内にエンコードされたオペランド指示子を通
じて位置特定される。たとえば、あるオペランドは、プロセッサ内で用いられる
レジスタ内に記憶されるであろう。命令内にエンコードされたレジスタオペラン
ド指示子は、オペランドを記憶している特定のレジスタを選択する。さらに、レ
ジスタオペランド指示子は、レジスタアドレスまたはレジスタ番号とも呼ばれる
。一方、他の命令は、プロセッサと結合されたメインメモリ内のメモリ場所内に
記憶されたメモリオペランドを指定するであろう。メモリアドレスもオペランド
指示子を通じて指定される。たとえば、命令は、メモリオペランドを記憶するメ
モリ場所を特定する変位を含むであろう。他の命令は、メモリアドレスを形成す
るために使用されるレジスタオペランドを指定するアドレスオペランド指示子を
含むであろう。もしそのオペランドが命令のための入力値であれば、オペランド
はソースオペランドであろう。もしそのオペランドが命令の結果であれば、オペ
ランドは行先オペランドであろう。行先オペランド指示子は、命令実行の結果が
記憶されるべき記憶場所を指定する。 WO93/20505は、アウトオブオーダでの実行が可能なスーパースカラ
RISCプロセッサにおける命令のスケジューリングを説明する。該文献は、ス
ケジューリング論理の部分であるレジスタリネーム回路であって、データ依存性
が依存性チェックユニットにおいて解決され、第1の命令の結果がレジスタファ
イルへ転送されることなく一時バッファ命令ウィンドウ内に記憶されるという形
で並列命令実行を高速化するレジスタリネーム回路を開示する。これによって、
第2の命令の結果を、入力オペランドとして結果を用いてフォワーディングする
ことが可能になる。しかし、この処理は、命令がディスパッチされて後のパイプ
ラインの命令実行段において発生する。 US−A−5,675,758は、加算/移動ユニット(AMU)と呼ばれ他
の実行ユニットに対して選択加算および移動を並列してアウトオブオーダで行な
う補助整数実行ユニットの付加によって、既存の実行ユニットが増強される、高
性能プロセッサを開示する。AMUは、データ依存性を取り除くことによって、
利用可能な命令レベルの並列性を高める。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0007
【補正方法】変更
【補正内容】
【0007】
【発明の概要】 上記問題は、前掲の特許請求の範囲の請求項1に規定されるこの発明によるプ
ロセッサによりほぼ解決される。一実施例において、プロセッサは、1以上の命
令のソースオペランドに対応するオペランド情報(オペランド値を生成するであ
ろう命令を特定するタグまたはオペランドのいずれか)を受取るよう構成される
ルックアヘッドアドレス/結果計算ユニットを含む。もしオペランドが利用可能
であれば、ルックアヘッドアドレス/結果計算ユニットは、命令のメモリオペラ
ンドのためのルックアヘッドアドレス、または、命令の機能的命令演算に対応す
るルックアヘッド結果のいずれかを発生するであろう。ルックアヘッドアドレス
は、命令に対応するメモリ演算の早期開始のためロード/ストアユニットへ与え
られるであろう。ルックアヘッド結果は、投機的オペランドソース(たとえばフ
ューチャファイル)へ、その中での更新のため与えられるであろう。レジスタの
ためのルックアヘッド状態が、パイプライン内に早期に与えられるという効果が
ある。その後の命令はそのルックアヘッド状態を受取り、そのルックアヘッド状
態を使用して早期にルックアヘッド状態を追加して発生するであろう。他方、そ
の後の命令はそのルックアヘッド状態を受取るであろうし、そしてそれによって
、(前の命令の実行を命令ウィンドウ内で待つのではなく)命令ウィンドウへデ
ィスパッチされればすぐ実行できる状態となるであろう。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),JP,KR (72)発明者 ウィット,デイビッド・ビィ アメリカ合衆国、78759 テキサス州、オ ースティン、パスファインダー・ドライ ブ、6318 Fターム(参考) 5B013 AA12 【要約の続き】 ろうし、そのため、(前の命令の実行を命令ウインドウ 内で待つのではなく)命令ウインドウへのディスパッチ に際し実行の準備ができているであろう。一実施例で は、プロセッサはさらに、ルックアヘッド結果をその後 同時にデコードされる命令(ライン内依存性)にまとめ るよう構成されるオペランドまとめユニットを含む。さ らに、オペランドまとめユニットは、比較命令を、比較 の結果に依存する次の分岐命令にまとめるように構成さ れ得る。

Claims (21)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサであって、 命令のラインに対応する複数のオペランド指示子を受取るよう結合されるライ
    ン内依存性チェックユニットを含み、前記ライン内依存性チェックユニットは、
    前記複数のオペランド指示子を比較することによって、前記命令のライン中の命
    令の間の依存性を判定するよう構成され、さらに、 前記複数のオペランド指示子により指定される1以上のオペランドを受けるよ
    う結合されるルックアヘッド計算ユニットを含み、前記ルックアヘッド計算ユニ
    ットは、もし、前記命令のライン内の第1の命令に対応するルックアヘッド結果
    を発生するために前記第1の命令により使用される各オペランドが前記1以上の
    オペランド中にあれば、前記ルックアヘッド結果を計算するよう構成され、さら
    に、 前記ルックアヘッド計算ユニットおよび前記ライン内依存性チェックユニット
    と結合されるオペランドまとめユニットを含み、前記オペランドまとめユニット
    は、前記ルックアヘッド結果を前記命令ライン中の第2の命令のオペランドとし
    て(i)前記ルックアヘッド計算ユニットからの前記ルックアヘッド結果が有効
    であるとの表示に応答して、および(ii)前記ライン内依存性チェックユニット
    からの前記第2の命令は前記第1の命令に依存するとの表示に応答して、提供す
    るよう構成され、さらに、 前記オペランドまとめユニットと結合される1以上の命令ウィンドウを含み、
    前記1以上の命令ウィンドウは対応するオペランドが与えられるまで命令を記憶
    しその後実行のため前記命令を選択するよう構成される、プロセッサであって、 前記オペランドまとめユニットは、もし前記ルックアヘッド結果が有効であれ
    ば、前記ルックアヘッド結果により提示される前記第1の命令の少なくとも第1
    の命令演算の実行を禁止するよう前記1以上の命令ウィンドウに信号を送るよう
    構成される、プロセッサ。
  2. 【請求項2】 前記ルックアヘッド計算ユニットは、前記命令がレジスタオ
    ペランドのみ持つ移動命令であれば、前記ルックアヘッド結果を計算するよう構
    成され、前記移動命令は、前記1以上の命令ウィンドウから禁止された前記第1
    の命令演算を含む、請求項1に記載のプロセッサ。
  3. 【請求項3】 前記ルックアヘッド計算ユニットは、もし前記命令がレジス
    タソースオペランドのみ持つ加算系命令であれば、前記ルックアヘッド結果を計
    算するよう構成される、請求項1に記載のプロセッサ。
  4. 【請求項4】 前記加算系命令は、フラグ結果を生成するための次の実行の
    ために前記1以上の命令ウィンドウに与えられ、前記第1の命令演算は前記加算
    系演算を含む、請求項3に記載のプロセッサ。
  5. 【請求項5】 前記ルックアヘッド計算ユニットは、もし前記第1の命令が
    メモリオペランドを含み、前記1以上のオペランドが前記第1の命令に対応する
    1以上のアドレスオペランドを含むならば、ルックアヘッドアドレスを計算する
    よう構成され、前記第1の命令演算は前記アドレス発生を含む、請求項3に記載
    のプロセッサ。
  6. 【請求項6】 前記ルックアヘッド計算ユニットと結合されるロード/スト
    アユニットをさらに含むプロセッサであって、前記ロード/ストアユニットは、
    前記ルックアヘッド計算ユニットからの前記ルックアヘッドアドレスが有効であ
    るとの表示に応答して、前記メモリオペランドのアドレスとして前記ルックアヘ
    ッドアドレスを受取るよう構成され、前記オペランドまとめユニットは、前記命
    令のラインの前記1以上の命令ウィンドウへの提供に際し、前記第1の命令に対
    応するアドレス発生を不能化するよう構成される、請求項3に記載のプロセッサ
  7. 【請求項7】 前記1以上の命令ウィンドウと結合されるアドレス発生ユニ
    ットをさらに含み、前記アドレス発生ユニットは、もし前記ルックアヘッドアド
    レスが無効であれば、前記アドレスを発生するよう構成される、請求項6に記載
    のプロセッサ。
  8. 【請求項8】 前記1以上の命令ウィンドウと結合される機能ユニットをさ
    らに含み、前記機能ユニットは、前記1以上の命令ウィンドウにより前記機能ユ
    ニットへ与えられる命令を実行するよう構成される、請求項1に記載のプロセッ
    サ。
  9. 【請求項9】 前記機能ユニットは、もし前記ルックアヘッド結果が有効で
    あれば、前記ルックアヘッド結果により提示される前記第1の命令の前記部分を
    実行しない、請求項8に記載のプロセッサ。
  10. 【請求項10】 前記ルックアヘッド計算ユニットと結合されるフューチャ
    ファイルをさらに含み、前記フューチャファイルは、前記複数のオペランド指示
    子に応答して前記ルックアヘッド計算ユニットに前記1以上のオペランドを与え
    るよう構成される、請求項9に記載のプロセッサ。
  11. 【請求項11】 前記フューチャファイルは前記ルックアヘッド結果を受取
    るよう結合され、前記ルックアヘッド結果に応答して前記ルックアヘッド結果に
    対応して行先オペランドを更新するよう結合される、請求項10に記載のプロセ
    ッサ。
  12. 【請求項12】 前記フューチャファイルは前記機能ユニットと結合され、
    前記フューチャファイルは、前記機能ユニットから与えられる実行結果に対応し
    て前記行先オペランドを更新するよう構成される、請求項11に記載のプロセッ
    サ。
  13. 【請求項13】 前記オペランドまとめユニットは、もし前記第1の命令が
    比較命令であり、前記第2の命令が条件付き分岐命令であり、前記第2の命令が
    前記第1の命令に続いていれば、前記第2の命令のオペランドとして前記第1の
    命令に対応するオペランドを与えるよう構成される、請求項1に記載のプロセッ
    サ。
  14. 【請求項14】 前記オペランドまとめユニットはさらに、前記1以上の命
    令ウィンドウの前記比較命令の受取りを禁止するよう構成される、請求項1に記
    載のプロセッサ。
  15. 【請求項15】 命令のラインに対応する複数のオペランドを受取るよう結
    合されるオペランドまとめユニットを含み、前記オペランドまとめユニットは、
    前記命令のライン中の第1の命令に対応する前記複数のオペランドのうち1以上
    のオペランドを、前記命令のライン中の第2の命令のオペランドとして、(i)
    比較命令である前記第1の命令に応答して、(ii)条件付き分岐命令である前記
    第2の命令に応答して、および(iii)前記第1の命令に続いた前記第2の命令 に応答して、与えるよう構成され、さらに、 前記オペランドまとめユニットと結合される1以上の命令ウィンドウを含み、
    前記1以上の命令ウィンドウは、対応するオペランドが与えられるまで命令を記
    憶しその後実行のために前記命令を選択するよう構成され、 前記オペランドまとめユニットは、もし(i)前記第1の命令が比較命令であ
    れば、(ii)前記第2の命令が条件付き分岐命令であれば、および(iii)前記 第2の命令が前記第1の命令に続いていれば、前記第1の命令の受取りを禁止す
    るよう前記1以上の命令ウィンドウに信号を送るよう構成される、プロセッサ。
  16. 【請求項16】 プロセッサ内の命令のラインを実行するための方法であっ
    て、前記命令は、 複数のオペランド指示子を検出するため、前記命令のラインをデコードするス
    テップと、 ライン内依存性を検出するため、前記命令のライン中の各命令の行先オペラン
    ド指示子を、前記命令のライン中の各次の命令のソースオペランド指示子と比較
    するステップと、 前記ソースオペランド指示子により指定されるソースオペランドを取込むため
    投機的オペランドソースの読出を行なうステップと、 前記ソースオペランドが前記投機的オペランドソースにおいて利用可能であれ
    ば、前記ライン中の第1の命令に対するルックアヘッド結果を計算するステップ
    と、 もし前記ルックアヘッド結果が成功裡に計算されたならば、前記ルックアヘッ
    ド結果を生成する前記第1の命令の少なくとも第1の命令演算の実行を禁止する
    よう、前記第1の命令を受取るよう構成された命令ウィンドウに、信号を送るス
    テップと、 もし前記比較が前記第2の命令の前記第1の命令に対する依存性を示せば、前
    記命令のライン中の第2の命令に前記ルックアヘッド結果を与えるステップとを
    含み、前記与えるステップは、前記第2の命令を前記命令ウィンドウ内に記憶す
    るよりも前に行なわれる、プロセッサ内の命令のラインを実行するための方法。
  17. 【請求項17】 実行のために、前記命令ウィンドウから前記第2の命令を
    選択するステップをさらに含む、請求項16に記載のプロセッサ内の命令のライ
    ンを実行するための方法。
  18. 【請求項18】 前記計算するステップは、もし、前記命令がレジスタオペ
    ランドのみを有する加算系命令であり、前記レジストオペランド各々が前記読出
    の際に前記投機的オペランド記憶装置内で利用可能であれば、成功である、請求
    項16に記載のプロセッサ内の命令のラインを実行するための方法。
  19. 【請求項19】 もし前記第1の命令がメモリオペランドを含み、前記第1
    の命令に対応するアドレスオペランドが前記読出に際して前記投機的オペランド
    ソースにおいて利用可能であれば、ルックアヘッドアドレスを計算するステップ
    をさらに含む、請求項18に記載のプロセッサ内の命令のラインを実行するため
    の方法。
  20. 【請求項20】 コンピュータシステムであって、 命令のラインを複数の発行位置に整列させるよう構成される整列ユニットと、 投機的オペランドを記憶するよう構成される投機的オペランドソースと、 命令に対してオペランドが与えられるまでそれらの命令を記憶するよう構成さ
    れる命令ウィンドウと、 前記投機的オペランドソース、前記命令ウィンドウおよび前記整列ユニットと
    結合されるルックアヘッド/まとめユニットとを含むプロセッサを含み、前記ル
    ックアヘッド/まとめユニットは、前記整列ユニットから受取られる前記命令の
    ラインに応答して前記投機的オペランドソースからオペランドを読出すよう構成
    され、前記ルックアヘッド/まとめユニットは、前記オペランドに応答して前記
    命令のライン中の第1の命令に対応するルックアヘッド結果を発生するよう構成
    され、前記ルックアヘッド/まとめユニットはさらに、前記投機的オペランドソ
    ースを前記ルックアヘッド結果で更新するよう構成され、前記ルックアヘッド/
    まとめユニットは、前記第1の命令に依存する、前記命令のライン中の第2の命
    令に前記ルックアヘッド結果をフォワードするよう構成され、前記ルックアヘッ
    ド/まとめユニットは、前記ルックアヘッド結果を生成する前記第1の命令の少
    なくとも第1の命令演算の実行を禁止するよう前記命令ウィンドウに信号を送る
    よう構成され、前記コンピュータシステムはさらに、 前記プロセッサと結合される入力/出力(I/O)装置を含み、前記I/O装
    置は、前記コンピュータシステムと、前記I/O装置が結合される他のコンピュ
    ータシステムとの間で通信するよう構成される、コンピュータシステム。
  21. 【請求項21】 第2のプロセッサをさらに含むコンピュータシステムであ
    って、前記第2のプロセッサは、 命令のラインを複数の発行位置に整列させるよう構成される整列ユニットと、 投機的オペランドを記憶するよう構成される投機的オペランドソースと、 命令に対してオペランドが与えられるまでこれらの命令を記憶するよう構成さ
    れる命令ウィンドウと、 前記投機的オペランドソース、前記命令ウィンドウおよび前記整列ユニットと
    結合されるルックアヘッド/まとめユニットとを含み、前記ルックアヘッド/ま
    とめユニットは、前記整列ユニットから受取られる前記命令のラインに応答して
    前記投機的オペランドソースからオペランドを読出すよう構成され、前記ルック
    アヘッド/まとめユニットは、前記オペランドに応答して前記命令のライン中の
    第1の命令に対応するルックアヘッド結果を発生するよう構成され、前記ルック
    アヘッド/まとめユニットはさらに、前記投機的オペランドソースを前記ルック
    アヘッド結果で更新するよう構成され、前記ルックアヘッド/まとめユニットは
    、前記命令ライン中の、前記第1の命令に依存する第2の命令に前記ルックアヘ
    ッド結果をフォワードするよう構成され、前記ルックアヘッド/まとめユニット
    は、前記ルックアヘッド結果を生成する前記第1の命令の少なくとも第1の命令
    演算の実行を禁止するよう、前記命令ウィンドウに信号を送るよう構成される、
    請求項1に記載のコンピュータシステム。
JP2000521433A 1997-11-17 1998-10-19 ルックアヘッド結果を発生し移動命令、比較命令および簡単な算術命令をまとめるよう構成されるプロセッサ Expired - Fee Related JP3866918B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US6587897P 1997-11-17 1997-11-17
US60/065,878 1997-11-17
US09/115,123 US6112293A (en) 1997-11-17 1998-07-14 Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US09/115,123 1998-07-14
PCT/US1998/022030 WO1999026132A2 (en) 1997-11-17 1998-10-19 Processor configured to generate lookahead results from collapsed moves, compares and simple arithmetic instructions

Publications (3)

Publication Number Publication Date
JP2001523854A true JP2001523854A (ja) 2001-11-27
JP2001523854A5 JP2001523854A5 (ja) 2006-01-05
JP3866918B2 JP3866918B2 (ja) 2007-01-10

Family

ID=26746120

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000521433A Expired - Fee Related JP3866918B2 (ja) 1997-11-17 1998-10-19 ルックアヘッド結果を発生し移動命令、比較命令および簡単な算術命令をまとめるよう構成されるプロセッサ

Country Status (5)

Country Link
US (1) US6112293A (ja)
EP (1) EP1031074B1 (ja)
JP (1) JP3866918B2 (ja)
DE (1) DE69835100T2 (ja)
WO (1) WO1999026132A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007500406A (ja) * 2003-06-12 2007-01-11 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド オペランド依存関係によるストールを低減する方法ならびにそのためのデータプロセッサ
JP2012507794A (ja) * 2008-10-30 2012-03-29 インテル コーポレイション 有効な命令ヒュージョンを進展させる技術
JP2013131036A (ja) * 2011-12-21 2013-07-04 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6363469B1 (en) * 1998-07-13 2002-03-26 Matsushita Electric Industrial Co., Ltd. Address generation apparatus
US6247146B1 (en) * 1998-08-17 2001-06-12 Advanced Micro Devices, Inc. Method for verifying branch trace history buffer information
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6862635B1 (en) 1998-11-13 2005-03-01 Cray Inc. Synchronization techniques in a multithreaded environment
US6314471B1 (en) * 1998-11-13 2001-11-06 Cray Inc. Techniques for an interrupt free operating system
US6480818B1 (en) 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6189091B1 (en) * 1998-12-02 2001-02-13 Ip First, L.L.C. Apparatus and method for speculatively updating global history and restoring same on branch misprediction detection
US6353829B1 (en) 1998-12-23 2002-03-05 Cray Inc. Method and system for memory allocation in a multiprocessing environment
US6415433B1 (en) 1998-12-23 2002-07-02 Cray Inc. Method and system for identifying locations to move portions of the computer program
US6321379B1 (en) 1998-12-23 2001-11-20 Cray Inc. Method and system for target register allocation
US6665688B1 (en) 1998-12-23 2003-12-16 Cray Inc. Method and system for automatically regenerating data on-demand
US6230313B1 (en) * 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
US6430676B1 (en) * 1998-12-23 2002-08-06 Cray Inc. Method and system for calculating instruction lookahead
US6247097B1 (en) * 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6499101B1 (en) 1999-03-18 2002-12-24 I.P. First L.L.C. Static branch prediction mechanism for conditional branch instructions
US6343359B1 (en) 1999-05-18 2002-01-29 Ip-First, L.L.C. Result forwarding cache
US6546481B1 (en) 1999-11-05 2003-04-08 Ip - First Llc Split history tables for branch prediction
US6629234B1 (en) * 2000-03-30 2003-09-30 Ip. First, L.L.C. Speculative generation at address generation stage of previous instruction result stored in forward cache for use by succeeding address dependent instruction
US6782469B1 (en) * 2000-09-29 2004-08-24 Intel Corporation Runtime critical load/data ordering
US7107438B2 (en) * 2003-02-04 2006-09-12 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions
US7100024B2 (en) 2003-02-04 2006-08-29 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early status flags
US7185182B2 (en) * 2003-02-04 2007-02-27 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early instruction results
US20050216713A1 (en) * 2004-03-25 2005-09-29 International Business Machines Corporation Instruction text controlled selectively stated branches for prediction via a branch target buffer
CN100527099C (zh) * 2005-02-15 2009-08-12 皇家飞利浦电子股份有限公司 用于提高数据处理设备的存储单元的性能的装置和方法
US7243210B2 (en) * 2005-05-31 2007-07-10 Atmel Corporation Extracted-index addressing of byte-addressable memories
US9280480B2 (en) 2008-01-11 2016-03-08 International Business Machines Corporation Extract target cache attribute facility and instruction therefor
US20090182992A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Load Relative and Store Relative Facility and Instructions Therefore
US20090182988A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Compare Relative Long Facility and Instructions Therefore
US7734900B2 (en) 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
US7739434B2 (en) 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US7895419B2 (en) 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore
US20090182984A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Execute Relative Long Facility and Instructions Therefore
US7870339B2 (en) * 2008-01-11 2011-01-11 International Business Machines Corporation Extract cache attribute facility and instruction therefore
US20090182985A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Move Facility and Instructions Therefore
US8966230B2 (en) * 2009-09-30 2015-02-24 Intel Corporation Dynamic selection of execution stage
CN103984637A (zh) * 2013-02-07 2014-08-13 上海芯豪微电子有限公司 一种指令处理系统及方法
GB2518613A (en) 2013-09-25 2015-04-01 Ibm Multiple core processing with high throughput atomic memory operations
CN106406820B (zh) * 2015-07-29 2019-01-15 深圳市中兴微电子技术有限公司 一种网络处理器微引擎的多发射指令并行处理方法及装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5197137A (en) * 1989-07-28 1993-03-23 International Business Machines Corporation Computer architecture for the concurrent execution of sequential programs
US5630157A (en) * 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
JP3730252B2 (ja) * 1992-03-31 2005-12-21 トランスメタ コーポレイション レジスタ名称変更方法及び名称変更システム
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
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
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
US5625789A (en) * 1994-10-24 1997-04-29 International Business Machines Corporation Apparatus for source operand dependendency analyses register renaming and rapid pipeline recovery in a microprocessor that issues and executes multiple instructions out-of-order in a single cycle
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
US5878244A (en) * 1995-01-25 1999-03-02 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received
US5768610A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Lookahead register value generator and a superscalar microprocessor employing same
US5835968A (en) * 1996-04-17 1998-11-10 Advanced Micro Devices, Inc. Apparatus for providing memory and register operands concurrently to functional units
US5872951A (en) * 1996-07-26 1999-02-16 Advanced Micro Design, Inc. Reorder buffer having a future file for storing speculative instruction execution results
US5961639A (en) * 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
US5913048A (en) * 1997-03-31 1999-06-15 International Business Machines Corporation Dispatching instructions in a processor supporting out-of-order execution
US5948098A (en) * 1997-06-30 1999-09-07 Sun Microsystems, Inc. Execution unit and method for executing performance critical and non-performance critical arithmetic instructions in separate pipelines

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007500406A (ja) * 2003-06-12 2007-01-11 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド オペランド依存関係によるストールを低減する方法ならびにそのためのデータプロセッサ
JP2012507794A (ja) * 2008-10-30 2012-03-29 インテル コーポレイション 有効な命令ヒュージョンを進展させる技術
JP2013131036A (ja) * 2011-12-21 2013-07-04 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
DE69835100D1 (de) 2006-08-10
JP3866918B2 (ja) 2007-01-10
WO1999026132A2 (en) 1999-05-27
US6112293A (en) 2000-08-29
EP1031074B1 (en) 2006-06-28
DE69835100T2 (de) 2007-02-01
EP1031074A2 (en) 2000-08-30
WO1999026132A3 (en) 1999-09-16

Similar Documents

Publication Publication Date Title
JP3866918B2 (ja) ルックアヘッド結果を発生し移動命令、比較命令および簡単な算術命令をまとめるよう構成されるプロセッサ
US6256728B1 (en) Processor configured to selectively cancel instructions from its pipeline responsive to a predicted-taken short forward branch instruction
US6256721B1 (en) Register renaming in which moves are accomplished by swapping tags
US6367001B1 (en) Processor including efficient fetch mechanism for L0 and L1 caches
US6279106B1 (en) Method for reducing branch target storage by calculating direct branch targets on the fly
US6189089B1 (en) Apparatus and method for retiring instructions in excess of the number of accessible write ports
US6061786A (en) Processor configured to select a next fetch address by partially decoding a byte of a control transfer instruction
US6457117B1 (en) Processor configured to predecode relative control transfer instructions and replace displacements therein with a target address
US6260134B1 (en) Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte
JP2002525742A (ja) 記憶からロードへの転送のための機構
JP2003515214A (ja) 計算を狭いオペランドで実施するための方法と装置
US5813045A (en) Conditional early data address generation mechanism for a microprocessor
US6240503B1 (en) Cumulative lookahead to eliminate chained dependencies
US6134649A (en) Control transfer indication in predecode which identifies control transfer instruction and an alternate feature of an instruction
US6205541B1 (en) System and method using selection logic units to define stack orders
US6347369B1 (en) Method and circuit for single cycle multiple branch history table access
US6219784B1 (en) Processor with N adders for parallel target addresses calculation
JP3838417B2 (ja) 制御転送命令を識別するためにプリデコードに制御転送ビットを採用するプロセッサ

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050913

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060620

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060817

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061006

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20101013

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111013

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111013

Year of fee payment: 5

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

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20121013

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees