[go: up one dir, main page]

JP2003511789A - 整列情報をキャッシュするための装置および方法 - Google Patents

整列情報をキャッシュするための装置および方法

Info

Publication number
JP2003511789A
JP2003511789A JP2001530695A JP2001530695A JP2003511789A JP 2003511789 A JP2003511789 A JP 2003511789A JP 2001530695 A JP2001530695 A JP 2001530695A JP 2001530695 A JP2001530695 A JP 2001530695A JP 2003511789 A JP2003511789 A JP 2003511789A
Authority
JP
Japan
Prior art keywords
instruction
entry
line
predictor
address
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.)
Withdrawn
Application number
JP2001530695A
Other languages
English (en)
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 JP2003511789A publication Critical patent/JP2003511789A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 ラインプレディクタ(12)は、命令のための整列情報をキャッシュする。各フェッチアドレスに応答して、ラインプレディクタ(12)は、そのフェッチアドレスで始まる命令、およびその命令の後の1つ以上のさらなる命令のための整列情報を与える。整列情報は、たとえば、命令ポインタであってもよい。ラインプレディクタ(12)は、複数のエントリ(90、82)を有するメモリを含み得、各エントリは、最大で予め定義された最大数までの命令ポインタ(102、104、106、108)を記憶し、フェッチアドレス(92)は、命令ポインタの第1のものよって特定される命令に対応する。さらに、各エントリ(90、82)は、予測された命令ストリーム内の次の命令への命令ポインタを記憶する別のエントリへのリンクを含み得る。さらに、エントリ(90、82)は、次のエントリ(90、82)内の第1の命令に対応する次のフェッチアドレス(112)を記憶し得る。次のフェッチアドレス(112)は、対応する命令バイトをフェッチするために命令キャッシュ(14)に与えられ得る。

Description

【発明の詳細な説明】
【0001】
【発明の背景】
1.技術分野 この発明は、プロセッサの分野に関し、より特定的にはプロセッサ内での命令
フェッチメカニズムに関する。
【0002】 2.背景技術 スーパースカラプロセッサは、1クロックサイクル当り複数個の命令を実行し
、かつ設計に一致して可能な限り最短のクロックサイクルを選択することにより
高性能を達成する。ここで、「クロックサイクル」という言葉は、プロセッサ内
での命令処理パイプラインのさまざまな段階に従った時間間隔のことをいう。記
憶装置(たとえばレジスタおよびアレイ)がクロックサイクルに従ってそれらの
値を捕捉する。たとえば、記憶装置は、クロックサイクルを定義するクロック信
号の立上がりまたは立下がりエッジに従って値を捕捉し得る。次に、記憶装置は
、それぞれ、クロック信号のその後の立上がりまたは立下がりエッジまでその値
を記憶する。「命令処理パイプライン」という言葉は、パイプライン化された態
様で命令を処理するために採用される論理回路のことをいうためにここでは用い
られる。パイプラインは、命令処理の部分が行なわれる任意の数の段階に分割さ
れ得るが、命令処理は、一般的には、命令をフェッチすることと、命令をデコー
ドすることと、命令を実行することと、命令によって特定される宛先に実行結果
を記憶することとを含む。
【0003】 一般に普及している命令セットアーキテクチャは、x86命令セットアーキテ
クチャである。x86命令セットアーキテクチャはコンピュータ業界で広く受入
れられているので、このアーキテクチャに従って設計されたスーパースカラプロ
セッサは益々一般的になっている。x86命令セットアーキテクチャは、異なっ
た命令が異なる数のバイトを占め得る可変バイト長命令セットを指定する。たと
えば、80386プロセッサおよび80486プロセッサは、特定の命令が1と
15との間の数のバイトを占めることを可能にする。占められるバイトの数は、
特定の命令および命令のためのさまざまなアドレッシングモードオプションに依
存する。
【0004】 命令は可変長であるので、命令境界を位置付けることは複雑である。第1の命
令の長さは、命令ストリーム内の第1の命令の後の第2の命令を位置付けること
に先立って決定されなければならない。しかしながら、特定のクロックサイクル
中に命令ストリーム内の複数の命令を位置付ける能力は、スーパースカラプロセ
ッサ動作にとって極めて重大である。動作周波数が増大すると(すなわち、クロ
ックサイクルが短くなる)、複数の命令を同時に位置付けることは益々困難にな
ってくる。
【0005】 命令がキャッシュ内に記憶されるときにプリデコーダが各命令バイトに関する
情報をその命令バイトに付加するさまざまなプリデコード方式が提案されている
。ここで使用される「プリデコーディング」という言葉は、対応する命令バイト
をプロセッサの命令キャッシュに記憶するのに先立って命令デコード情報を生成
することをいう。生成された情報は、命令キャッシュに命令バイトとともに記憶
され得る。たとえば、命令バイトは、命令の始まりまたは終わりであるように表
示され得る。対応する命令バイトがフェッチされるときプリデコード情報をスキ
ャンすることにより、命令は、命令バイトを実際にデコードすることを試みるこ
となしに位置付けされ得る。プリデコード情報は複数の可変長命令を同時に位置
付けるために必要とされる論理の量を減じするために使用され得る。残念ながら
、この方式も高クロック周波数では不十分なものとなってきている。高周波数で
1クロックサイクル中に複数の命令を位置付けるための方法が必要とされる。
【0006】
【発明の開示】
上に概略した課題は、ここに記載されるラインプレディクタによって大部分解
決される。ラインプレディクタは、命令のための整列情報をキャッシュする。各
フェッチアドレスに応答して、ラインプレディクタは、フェッチアドレスで始ま
る命令、およびその命令の後の1つ以上のさらなる命令のための整列情報を与え
る。整列情報は、たとえば、命令ポインタであってもよく、その各々が、フェッ
チアドレスに応答してフェッチされた複数個の命令バイト内の対応する命令を直
接位置づける。命令はポインタによって位置づけられるので、命令のデコードユ
ニットへの整列は、低レイテンシ高周波動作であり得る。1バイトごとに記憶さ
れるプリデコードデータをスキャンする必要がなく、整列情報は、フェッチアド
レスに基づいて命令ベースで記憶される。この態様では、命令は、フェッチされ
た命令バイトからより簡単に抽出され得る。
【0007】 ラインプレディクタは、複数のエントリを有するメモリを含み得、各エントリ
は、最大で予め定義された最大数までの命令ポインタと、命令ポインタの第1の
ものによって特定される命令に対応するフェッチアドレスとを記憶する。フェッ
チアドレスは、複数エントリに記憶されるフェッチアドレスに対してサーチされ
得、マッチが検出されるならば、対応する命令ポインタが使用され得る。さらに
、各エントリは、予測された命令ストリーム内の次の命令への命令ポインタを記
憶する別のエントリへのリンクを含み得る。さらに、エントリは、次のエントリ
内の第1の命令に対応する次のフェッチアドレスを記憶し得る。次のフェッチア
ドレスは、対応する命令バイトをフェッチするために命令キャッシュに与えられ
得る。ラインプレディクタ内のリンクをたどることにより命令をフェッチするこ
とは、これらのその後のエントリのためのラインプレディクタ内のフェッチアド
レスのサーチをスキップすることを可能にし得る。ラインプレディクタメモリの
サーチが少なくなるために、電力の散逸が低減され得、実行に先立つパイプライ
ン段階の数が、リンクをたどることにより完了されるフェッチのために、低減さ
れ得る。
【0008】 広く言えば、プロセッサが企図される。プロセッサは、フェッチアドレスを生
成するよう構成されるフェッチアドレス生成ユニットと、フェッチアドレス生成
ユニットに結合されるラインプレディクタとを含む。ラインプレディクタは、複
数個のエントリを含む第1のメモリを含み、各エントリは、複数個の命令ポイン
タを記憶する。ラインプレディクタは、フェッチアドレスに対応する(複数個の
エントリのうち)第1のエントリを選択するよう構成される。第1のエントリ内
の第1の複数個の命令ポインタの各々は、有効であれば、フェッチアドレスに応
答してフェッチされる複数個の命令バイト内の命令を直接位置づける。さらに、
コンピュータシステムであって、プロセッサと、コンピュータシステムとI/O
装置が結合可能である別のコンピュータシステムとの間で通信を行うよう構成さ
れる入力/出力(I/O)装置とを含むコンピュータシステムが企図される。
【0009】 さらに、方法が企図される。フェッチアドレスが生成される。第1の複数個の
命令ポインタがラインプレディクタから選択され、第1の複数個の命令ポインタ
はフェッチアドレスに対応する。第1の複数個の命令ポインタの各々は、有効で
あれば、フェッチアドレスに応答してフェッチされる複数個の命令バイト内の命
令を直接位置付ける。
【0010】 この発明の他の目的および利点は、添付の図面を参照し以下の詳細な説明を読
むと明らかとなる。
【0011】 この発明は、さまざまな変形および代替の形を認めるが、その特定の実施例が
図面に例として示されここに詳細に記載される。しかしながら、図面およびその
詳細な説明は、この発明を開示される特定の形に制限するものでなく、反対に、
前掲の特許請求の範囲によって規定されるこの発明の精神および範囲内にあるす
べての変形および代替を含むことが意図されることが理解される。
【0012】
【発明を実施する態様】
プロセッサ概要 ここで図1を参照して、プロセッサ10のある実施例のブロック図が示される
。他の実施例が可能であり企図される。図1の実施例では、プロセッサ10は、
ラインプレディクタ12と、命令キャッシュ(I−キャッシュ)14と、整列ユ
ニット16と、分岐予測/フェッチPC生成ユニット18と、複数個のデコード
ユニット24A〜24Dと、プレディクタミスデコードユニット26と、マイク
ロコードユニット28と、マップユニット30と、リタイアキュー32と、アー
キテクチャ的リネームファイル34と、フューチャファイル20と、スケジュー
ラ36と、整数レジスタファイル38Aと、浮動小数点レジスタファイル38B
と、整数実行コア40Aと、浮動小数点実行コア40Bと、ロード/ストアユニ
ット42と、データキャッシュ(D−キャッシュ)44と、外部インターフェイ
スユニット46と、PCサイロ48とを含む。ラインプレディクタ12は、プレ
ディクタミスデコードユニット26と、分岐予測/フェッチPC生成ユニット1
8と、PCサイロ48と、整列ユニット16に結合される。ラインプレディクタ
12は、I−キャッシュ14にも結合され得る。I−キャッシュ14は、整列ユ
ニット16と分岐予測/フェッチPC生成ユニット18とに結合され、分岐予測
/フェッチPC生成ユニット18はPCサイロ48にさらに結合される。整列ユ
ニット16は、プレディクタミスデコードユニット26とデコードユニット24
A〜24Dとにさらに結合される。デコードユニット24A〜24Dは、マップ
ユニット30にさらに結合され、デコードユニット24Dはマイクロコードユニ
ット28に結合される。マップユニット30は、リタイアキュー32(これはア
ーキテクチャ的リネームファイル34に結合される)と、フューチャファイル2
0と、スケジューラ36と、PCサイロ48とに結合される。アーキテクチャ的
リネームファイル34は、フューチャファイル20に結合される。スケジューラ
36は、レジスタファイル38A〜38Bに結合され、レジスタファイル38A
〜38Bは、さらに、互いにおよびそれぞれの実行コア40A〜40Bに結合さ
れる。実行コア40A〜40Bは、ロード/ストアユニット42とスケジューラ
36とにさらに結合される。実行コア40Aは、D−キャッシュ44にさらに結
合される。ロード/ストアユニット42は、スケジューラ36と、D−キャッシ
ュ44と、外部インターフェイスユニット46とに結合される。D−キャッシュ
44は、レジスタファイル38に結合される。外部インターフェイスユニット4
6は、外部インターフェイス52におよびI−キャッシュ14に結合される。文
字が後に付された参照番号によってここに参照される要素は、集合的に参照番号
のみによって参照され得る。たとえば、デコードユニット24A〜24Dは、デ
コードユニット24と集合的に参照される。
【0013】 図1の実施例では、プロセッサ10は、可変バイト長複合命令セットコンピュ
ーティング(complex instruction set computing(CISC))命令セットア
ーキテクチャを採用する。たとえば、プロセッサ10は、(IA−32とも呼ば
れる)x86命令セットアーキテクチャを採用してもよい。他の実施例は、固定
長命令セットアーキテクチャおよびRISC(reduced instruction set comput
ing)命令セットアーキテクチャを含む他の命令セットアーキテクチャを採用し
てもよい。図1に示すある種の特徴は、そのようなアーキテクチャでは省略され
得る。
【0014】 分岐予測/フェッチPC生成ユニット18は、フェッチアドレス(フェッチP
C)を、I−キャッシュ14、ラインプレディクタ12およびPCサイロ48に
与えるよう構成される。分岐予測/フェッチPC生成ユニット18は、フェッチ
アドレスの生成を支援するために使用される好適な分岐予測メカニズムを含み得
る。フェッチアドレスに応答して、ラインプレディクタ12は、複数個の命令に
対応する整列情報を整列ユニット16に与え、与えられた命令情報によって特定
される命令の後の命令をフェッチするために次のフェッチアドレスを与え得る。
次のフェッチアドレスは、所望に応じて、分岐予測/フェッチPC生成ユニット
18に与えられてもよく、または、I−キャッシュ14に直接与えられてもよい
。分岐予測/フェッチPC生成ユニット18は、(トラップが検出されるならば
)PCサイロ48からトラップアドレスを受取り得、トラップアドレスは、分岐
予測/フェッチPC生成ユニット18によって生成されるフェッチPCを含み得
る。他の態様では、フェッチPCは、分岐予測情報およびラインプレディクタ1
2からの情報を用いて生成されてもよい。一般的には、ラインプレディクタ12
は、プロセッサ10によって先に投機的にフェッチされた命令に対応する情報を
記憶する。ある実施例では、ラインプレディクタ12は、2Kエントリを含み、
各エントリは、ここで命令の「ライン」と呼ばれる1つ以上の命令の群を位置付
ける。命令のラインは、スケジューラ36内におかれることによりプロセッサ1
0の命令処理パイプラインによって同時に処理され得る。
【0015】 I−キャッシュ14は、命令バイトを記憶するための高速キャッシュメモリで
ある。ある実施例に従えば、I−キャッシュ14は、たとえば、64バイトキャ
ッシュラインを採用する、128Kバイトの4ウェイセットアソシアティブ編成
を含み得る。しかしながら、(ダイレクトマップト構造を含む)いかなるI−キ
ャッシュ構造も好適であり得る。
【0016】 整列ユニット16は、ラインプレディクタ12から命令整列情報を、I−キャ
ッシュ14からフェッチアドレスに対応する命令バイトを受取る。整列ユニット
16は、与えられた命令整列情報に従ってデコードユニット24A〜24Dの各
々への命令バイトを選択する。より特定的には、ラインプレディクタ12は、各
デコードユニット24A〜24Dに対応する命令ポインタを与える。命令ポイン
タは、対応するデコードユニット24A〜24Dに運ぶためにフェッチされた命
令バイト内の命令を位置付ける。ある実施例では、ある命令は、2つ以上のデコ
ードユニット24A〜24Dに運ばれてもよい。したがって、図示の実施例では
、ラインプレディクタ12からの命令のラインは、最大で4個の命令を含み得る
が、他の実施例は、ライン内のそれより多いまたは少ない命令を可能とするため
により多いまたはより少ないデコードユニット24を含んでもよい。
【0017】 デコードユニット24A〜24Dは、これに与えられた命令をデコードし、各
デコードユニット24A〜24Dは、その命令に対応する1つ以上の命令操作(
またはROP)を特定する情報を生成する。ある実施例では、各デコードユニッ
ト24A〜24Bは、1命令当り最大で2個の命令操作を生成し得る。ここで使
用される命令操作(またはROP)は、実行コア40A〜40B内の実行ユニッ
トが単一のエントリとして実行するように構成される、操作である。簡単な命令
は単一の命令操作に対応し得、より複雑な命令は、複数の命令操作に対応し得る
。若干のより複雑な命令は、マイクロコードユニット28内で(この実施例では
デコードユニット24Dを介してその中のリードオンリメモリからフェッチされ
る)マイクロコードルーチンとして実現されてもよい。さらに、非CISC命令
セットを採用する実施例は、各命令ごとに単一の命令操作を採用してもよい(す
なわち、命令および命令操作はそのような実施例では同義であり得る)。
【0018】 PCサイロ48は、各命令フェッチごとにフェッチアドレスおよび命令情報を
記憶し、例外(プロセッサ10によって採用される命令セットアーキテクチャに
よって定義される命令トラップ、分岐予測ミス、および他のマイクロアーキテク
チャ的に定義されるトラップなど)の際、命令フェッチをリダイレクトする役割
を担う。PCサイロ48は、プロセッサ10内で未処理であり得る命令の複数の
ラインに対応する命令情報およびフェッチアドレスを記憶するための円形バッフ
ァを含み得る。命令のラインのリタイアメントに応答して、PCサイロ48は、
対応するエントリを廃棄し得る。例外に応答して、PCサイロ48は、トラップ
アドレスを分岐予測/フェッチPC生成ユニット18に与え得る。リタイアメン
トおよび例外情報は、スケジューラ36によって与えられ得る。ある実施例では
、PCサイロ48は、プロセッサ10内で未処理の命令の順序を特定するために
各命令に連続番号(R♯)を割当てる。スケジューラ36は、例外を経験した命
令操作またはリタイアする命令操作を特定するためにR♯をPCサイロ48に返
し得る。
【0019】 ラインプレディクタ12でミスを検出すると、整列ユニット16は、I−キャ
ッシュ14からプレディクタミスデコードユニット26に対応する命令バイトを
経路付ける。プレディクタミスデコードユニット26は、命令をデコードし、プ
ロセッサ10が設計されるような、命令のラインに対する何らかの限界(たとえ
ば、命令操作の最大数、命令の最大数、分岐命令に対する終了、など)を強いる
。ラインを終了すると、プレディクタミスデコードユニット26は、情報をライ
ンプレディクタ12に与えて記憶させる。なお、プレディクタミスデコードユニ
ット26は、デコードされる際に命令をディスパッチするよう構成されてもよい
。代替的に、プレディクタミスデコードユニット26は、命令情報のラインをデ
コードし、それをラインプレディクタ12に与えて記憶させてもよい。その後に
、ミスしたフェッチアドレスは、ラインプレディクタ12内で再試行されてもよ
く、ヒットが検出され得る。
【0020】 ラインプレディクタ12でのミスにより命令をデコードすることに加えて、プ
レディクタミスデコードユニット26は、ラインプレディクタ12によって与え
られた命令情報が無効であるならば命令をデコードするように構成されてもよい
。ある実施例では、プロセッサ10は、ラインプレディクタ12内の情報とI−
キャッシュ14内の命令との整合を保とうとしない(たとえば、命令がI−キャ
ッシュ14内で置換されるかまたは無効化されるとき、対応する命令情報はアク
ティブに無効化されないかもしれない)。デコードユニット24A〜24Dは、
与えられた命令情報をベリファイし得、無効の命令情報が検出されるとプレディ
クタミスデコードユニット26に信号を与え得る。ある特定の実施例に従えば、
以下の命令操作がプロセッサ10によってサポートされる:整数(算術演算、論
理演算、シフト/ローテート操作、および分岐操作を含む)、浮動小数点(マル
チメディア操作を含む)およびロード/ストアである。
【0021】 デコードされた命令操作ならびにソースレジスタ番号およびデスティネーショ
ンレジスタ番号が、マップユニット30に与えられる。マップユニット30は、
物理的レジスタ番号(PR♯)を各命令操作の各デスティネーションレジスタオ
ペランドおよびソースレジスタオペランドに割当てることによりレジスタリネー
ミングを行なうよう構成される。物理的レジスタ番号は、レジスタファイル38
A〜38B内のレジスタを特定する。マップユニット30はさらに、命令操作の
ソースオペランドに割当てられた各物理的レジスタ番号を更新する命令操作のR
♯を与えることにより、各命令操作ごとに依存性の表示を与える。マップユニッ
ト30は、対応する論理的レジスタ番号に基づいて各デスティネーションレジス
タに割当てられた物理的レジスタ番号(および対応する命令操作のR♯)でフュ
ーチャファイル20を更新する。さらに、マップユニット30は、デスティネー
ションレジスタの論理的レジスタ番号、割当てられた物理的レジスタ番号、およ
びリタイアキュー32内の先に割当てられた物理的レジスタ番号を記憶する。命
令がリタイアされると(スケジューラ36によってマップユニット30に示され
る)、リタイアキュー32は、アーキテクチャ的リネームファイル34を更新し
、もはや使用されないいかなるレジスタも解放する。したがって、アーキテクチ
ャ的レジスタファイル34内の物理的レジスタ番号は、プロセッサ10のコミッ
トしたアーキテクチャ的状態を記憶する物理的レジスタを特定し、フューチャフ
ァイル20は、プロセッサ10の投機的状態を表わす。換言すれば、アーキテク
チャ的リネームファイル34は、各論理的レジスタに対応する物理的レジスタ番
号を記憶し、各論理的レジスタごとにコミットしたレジスタ状態を表わす。フュ
ーチャファイル20は、各論理的レジスタに対応する物理的レジスタ番号を記憶
し、各論理的レジスタごとに投機的レジスタ状態を表わす。
【0022】 命令操作のライン、ソース物理的レジスタ番号、およびデスティネーション物
理的レジスタ番号は、PCサイロ48によって割当てられるR♯に従ってスケジ
ューラ36に記憶される。さらに、特定の命令操作の依存性は、スケジューラに
記憶される他の命令操作に対する依存性として示されてもよい。ある実施例では
、命令操作は、リタイアされるまでスケジューラ36に留まる。
【0023】 スケジューラ36は、各命令操作について示される依存性が満足されるまでそ
の命令操作を記憶する。実行のために特定の命令操作をスケジューリングするこ
とに応答して、スケジューラ36は、どのクロックサイクルでその特定の命令操
作がレジスタファイル38A〜38Bを更新するかを決定し得る。実行コア40
A〜40B内の異なった実行ユニットは、異なった数のパイプライン段階(およ
びしたがって異なったレイテンシ)を採用し得る。さらに、ある種の命令は、パ
イプライン内で他のものよりもより大きなレイテンシを経験し得る。したがって
、(多数のクロックサイクル中で)特定の命令操作についてのレイテンシを測定
するカウントダウンが生成される。スケジューラ36は、(レジスタファイルを
読出す依存命令操作に先立ってまたはこれと同時に、更新が行なわれるまで)特
定の数のクロックサイクルを待ち、その特定の命令操作に依存する命令操作がス
ケジューリングされ得ることを示す。なお、スケジューラ36は、その依存性が
満足されると命令をスケジューリングし得る(すなわちスケジューラキュー内で
のその順序に関してアウトオブオーダである)。
【0024】 整数およびロード/ストア命令操作は、レジスタファイル38Aからソース物
理的レジスタ番号に従ってソースオペランドを読出し、実行コア40Aに運ばれ
実行される。実行コア40Aは、命令操作を実行し、レジスタファイル38A内
のデスティネーションに割当てられた物理的レジスタを更新する。さらに、実行
コア40Aは、命令操作のR♯および(もしあれば)命令操作に関する例外情報
をスケジューラ36に報告する。レジスタファイル38Bおよび実行コア40B
は、浮動小数点命令演算に対して同様の態様で動作し得る(かつ、浮動小数点ス
トアのためのストアデータをロード/ストアユニット42に与え得る)。
【0025】 ある実施例では、実行コア40Aは、たとえば、2個の整数ユニットと、分岐
ユニットと、2個のアドレス生成ユニットとを(対応する変換ルックアサイトバ
ッファまたはTLBとともに)含み得る。実行コア40Bは、浮動小数点/マル
チメディア乗算器と、浮動小数点/マルチメディア加算器と、ストアデータをロ
ード/ストアユニット42に引渡すためのストアデータユニットとを含み得る。
実行ユニットの他の構成が可能である。
【0026】 ロード/ストアユニット42は、メモリ操作を行なうために、および、D−キ
ャッシュ44をミスするメモリ操作のためのフィル操作をスケジューリングする
ためにD−キャッシュ44へのインターフェイスを設ける。ロードメモリ操作は
、実行コア40Aがアドレス生成を行ない、かつ(D−キャッシュ44またはロ
ード/ストアユニット42内のストアキューから)レジスタファイル38A〜3
8Bにデータを転送することにより完了され得る。ストアアドレスは、(実行コ
ア40AとD−キャッシュ44との接続により直接)実行コア40Aによってそ
れが生成されるとD−キャッシュ44に与えられ得る。ストアアドレスには、ス
トアキューエントリが割当てられる。ストアデータは、設計選択に従って、同時
に与えられてもよく、または後に与えられてもよい。ストア命令のリタイアメン
トにより、データはD−キャッシュ44に記憶される(リタイアメントとD−キ
ャッシュ44の更新との間にいくらかの遅延があるかもしれない)。さらに、ロ
ード/ストアユニット42は、(外部インターフェイスユニット46を介する)
その後のキャッシュフィルのためにD−キャッシュ44をミスするロード/スト
アアドレスを記憶し、かつミスしたロード/ストア操作を再試行するためのロー
ド/ストアバッファを含み得る。ロード/ストアユニット42は、ロード/スト
アメモリ依存性を処理するようさらに構成される。
【0027】 D−キャッシュ44は、プロセッサ10によってアクセスされるデータを記憶
するための高速キャッシュメモリである。D−キャッシュ44は、(ダイレクト
マップト構造およびセットアソシアティブ構造を含む)いかなる好適な構造を含
んでもよいが、D−キャッシュ44のある実施例は、128Kバイトの、64バ
イトラインを有する2ウェイセットアソシアティブキャッシュを含み得る。
【0028】 外部インターフェイスユニット46は、外部インターフェイス52を介して他
の装置への通信を行なうように構成される。L2キャッシュへのインターフェイ
スおよびプロセッサ10を他の装置へ接続するための外部バスを含む、いかなる
好適な外部インターフェイス52が使用されてもよい。外部インターフェイスユ
ニット46は、I−キャッシュ16およびD−キャッシュ44のためのフィルを
フェッチし、同様に、D−キャッシュ44から外部インタフェースへ廃棄された
更新されたキャッシュラインを書込む。さらに、外部インターフェイスユニット
46は、プロセッサ10によって生成されるキャッシュ可能でない読出および書
込をも行なってもよい。
【0029】 次に図2を参照し、プロセッサ10のある実施例によって採用され得るパイプ
ライン段階の例示の組を示す例示のパイプラインの図を示す。他の実施例は、図
2に示すパイプラインよりも多いまたはより少ないパイプライン段を含む異なっ
たパイプラインを採用してもよい。図2に示す段は、垂直方向の断続線によって
境界を定められる。各段は、プロセッサ10内の記憶素子(たとえばレジスタ、
ラッチ、フロップなど)をクロックするように使用されるクロック信号の1クロ
ックサイクルである。
【0030】 図2に示すように、例示のパイプラインは、CAM0段、CAM1段、ライン
プレディクタ(LP)段、命令キャッシュ(IC)段、整列(AL)段、デコー
ド(DEC)段、マップ1(M1)段、マップ2(M2)段、書込スケジューラ
(WR SC)段、読出スケジューラ(RD SC)段、レジスタファイル読出
(RF RD)段、実行(EX)段、レジスタファイル書込(RF WR)段、
およびリタイア(RET)段を含む。いくつかの命令は、実行段で複数のクロッ
クサイクルを利用する。たとえば、メモリ操作、浮動小数点演算および整数乗算
演算は、図2に分解図の形で示される。メモリ操作は、アドレス生成(AGU)
段、変換(TLB)段、データキャッシュ1(DC1)段、およびデータキャッ
シュ2(DC2)段を含む。同様に、浮動小数点演算は、最大で4個の浮動小数
点実行(FEX1〜FEX4)段を含み、整数乗算は、最大で4個の(IM1〜
IM4)段を含む。
【0031】 CAM0段およびCAM1段の間、ラインプレディクタ12は、分岐予測/フ
ェッチPC生成ユニット18によって与えられたフェッチアドレスをそこに記憶
されたラインのアドレスと比較する。さらに、フェッチアドレスは、CAM0段
およびCAM1段の間(たとえば、図3に示すITLB60において)仮想アド
レス(たとえば、x86アーキテクチャにおけるリニアアドレス)から物理アド
レスに変換される。CAM0段およびCAM1段の間にヒットを検出することに
応答して、対応するライン情報が、ラインプレディクタ段の間にラインプレディ
クタから読出される。また、I−キャッシュ14は、ラインプレディクタ段の間
に読出(物理アドレスを用いる)を開始する。読出は、命令キャッシュ段の間に
完了する。
【0032】 なお、図2に示すパイプラインは、フェッチアドレスについてラインプレディ
クタ12においてヒットを検出するために2クロックサイクルを採用するが、他
の実施例は、この動作を行なうために単一クロックサイクル(および段)を採用
し得る。さらに、ある実施例では、ラインプレディクタ12は、ヒットのために
、I−キャッシュ14の次のフェッチアドレスおよびラインプレディクタ12の
次のエントリを与え、そのためCAM0段およびCAM1段は、ラインプレディ
クタ12での先のヒットから得られるフェッチについて、スキップされてもよい
【0033】 I−キャッシュ14によって与えられる命令バイトは、ラインプレディクタ1
2からの対応するライン情報に応答して、整列段の間に整列ユニット16によっ
てデコードユニット24A〜24Dに対して整列させられる。デコードユニット
24A〜24Dは、デコード段の間に、与えられた命令をデコードし、命令に対
応するROPおよびオペランド情報を特定する。マップユニット30は、マップ
1段の間に、与えられた情報からROPを生成し、レジスタリネーミングを行な
う(フューチャファイル20を更新する)。マップ2段の間、ROPおよび割当
てられたリネームがリタイアキュー32に記録される。さらに、各ROPが依存
するROPが決定される。各ROPは、フューチャファイルに記録された前のR
OPに対してレジスタ依存してもよく、依存性の他のタイプ(たとえば、先の直
列化命令に対する依存性)をも示してもよい。
【0034】 生成されたROPは、書込スケジューラ段の間にスケジューラ36に書込まれ
る。この段階までに、情報の特定のラインによって位置付けられたROPがユニ
ットとしてパイプラインを流れる。しかしながら、スケジューラ36に書込まれ
た後、ROPは、異なった時点で独立してリネーミング段を流れてもよい。一般
的に、特定のROPが、スケジューラ36による実行のために選択されるまで(
たとえば、特定のROPが依存するROPが、上述のように、実行のために選択
されてしまった後)この段階にとどまる。したがって、特定のROPは、書込ス
ケジューラ書込段と読出スケジューラ段との間で1クロックサイクル以上の遅延
を経験し得る。読出スケジューラ段の間に、特定のROPは、スケジューラ36
内の選択論理に関与し、実行のために選択され、スケジューラ36から読出され
る。次に、特定のROPは、レジスタファイル読出段において(ROPのタイプ
に依存して)レジスタファイル38A〜38Bの1つからレジスタファイル動作
を読出すように進む。
【0035】 特定のROPおよびオペランドは、対応する実行コア40Aまたは40Bに与
えられ、命令操作は、実行段の間にオペランドに対して行なわれる。上に述べた
ように、いくつかのROPは、実行のいくつかのパイプライン段を有する。たと
えば、メモリ命令操作(たとえばロードおよびストア)は、(メモリ命令操作に
よってアクセスされるメモリ場所のデータアドレスが生成される)アドレス生成
段と、(アドレス生成段によって与えられる仮想データアドレスが変換される)
変換段と、D−キャッシュ44がアクセスされる1対のデータキャッシュ段とを
通って実行される。浮動小数点演算は、最大4クロックサイクルの実行を採用し
得り、整数乗算は同様に、最大で4クロックサイクルの実行を採用し得る。
【0036】 実行段を完了すると、特定のROPは、レジスタファイル書込段の間にその割
当てられた物理的レジスタを更新する。最後に、先のROPの各々が(リタイア
段において)リタイアされた後、特定のROPはリタイアされる。やはり、1ク
ロックサイクル以上が、レジスタファイル書込段とリタイア段との間で特定のR
OPについて経過し得る。さらに、特定のROPは、当該技術において周知であ
るように、パイプラインストール条件によりいずれかの段においてストールされ
得る。
【0037】 ラインプレディクタ ここで図3を参照し、分岐予測/フェッチPC生成ユニット18、ラインプレ
ディクタ12、I−キャッシュ14、プレディクタミスデコードユニット26、
命令TLB(ITLB)60、加算器62、およびフェッチアドレスmux64
のある実施例を示すブロック図が示される。他の実施例が可能であり企図される
。図3の実施例において、分岐予測/フェッチPC生成ユニット18は、分岐プ
レディクタ18Aと、間接分岐ターゲットキャッシュ18Bと、リターンスタッ
ク18Cと、フェッチPC生成ユニット18Dとを含む。分岐プレディクタ18
Aおよび間接分岐ターゲットキャッシュ18Bは、加算器62の出力を受取るよ
う結合され、フェッチPC生成ユニット18D、ラインプレディクタ12および
プレディクタミスデコードユニット26に結合される。フェッチPC生成ユニッ
ト18Dは、PCサイロ48からトラップPCを受取るよう結合され、ITLB
60、ラインプレディクタ12、加算器62およびフェッチアドレスmux64
にさらに結合される。ITLB60は、フェッチアドレスmux64にさらに結
合され、フェッチアドレスmux64はI−キャッシュ14に結合される。ライ
ンプレディクタ12は、I−キャッシュ14、プレディクタミスデコードユニッ
ト26、加算器62およびフェッチアドレスmux64に結合される。
【0038】 一般的に、フェッチPC生成ユニット18Dは、フェッチされるべき命令のた
めのフェッチアドレス(フェッチPC)を生成する。フェッチアドレスは、ライ
ンプレディクタ12、TLB60および加算器62(ならびに、図1に示すよう
にPCサイロ48)に与えられる。ラインプレディクタ12は、フェッチアドレ
スをそこに記憶されたフェッチアドレスと比較し、フェッチアドレスに対応する
ラインプレディクタエントリがラインプレディクタ12内に存在するかどうか判
断する。対応するラインプレディクタエントリが見つけられるならば、ラインプ
レディクタエントリに記憶される命令ポインタが整列ユニット16に与えられる
。ラインプレディクタ12がラインプレディクタエントリをサーチするのと並列
に、ITLB60は、I−キャッシュ14へのアクセスのためにフェッチアドレ
ス(この実施例においては仮想アドレスである)を物理アドレス(物理PC)に
変換する。ITLB60は、物理アドレスをフェッチアドレスmux64に与え
、フェッチPC生成ユニット18Dは、物理アドレスを選択するようmux64
を制御する。I−キャッシュ14は、物理アドレスに対応する命令バイトを読出
し、命令バイトを整列ユニット16に与える。
【0039】 この実施例では、各ラインプレディクタエントリは、次のフェッチアドレス(
次のフェッチPC)も与える。次のフェッチアドレスは、mux64に与えられ
、フェッチPC生成ユニット18Dは、ラインプレディクタ12がヒットを検出
することに応答してI−キャッシュ14にアクセスするためにmux64を介し
てアドレスを選択する。この態様では、フェッチアドレスがラインプレディクタ
においてヒットし続ける限り、次のフェッチアドレスがI−キャッシュ14によ
り高速に与えられ得る。ラインプレディクタエントリは、(次のフェッチアドレ
スに対応する)ラインプレディクタ12内の次のラインプレディクタエントリの
表示も含み得り、ラインプレディクタ12が次のフェッチアドレスに対応する命
令ポインタをフェッチすることを可能にする。したがって、フェッチアドレスが
ラインプレディクタ12中にヒットし続ける限り、命令のラインのフェッチは、
図2に示すパイプラインのラインプレディクタ段から開始され得る。(スケジュ
ーラ36に応答して)PCサイロ48によって起動されるトラップ、次のフェッ
チアドレスのためにラインプレディクタ12によってなされる予測とフェッチP
C生成ユニット18Dによって生成される次のフェッチアドレスとの不一致(以
下に記載する)、およびページ交差(page crossing)(以下に記載する)によ
り、ラインプレディクタ12は、フェッチPC生成ユニット18Dによって与え
られるフェッチアドレスのサーチを行い得り、またフェッチPC生成ユニット1
8Dは、ITLB60によって与えられる対応する物理アドレスを選択し得る。
【0040】 次のフェッチアドレスがラインプレディクタ12によって生成されかつライン
プレディクタ12においてヒットしている間にも、フェッチPC生成ユニット1
8Dは、PCサイロ48によるロギングのためにフェッチアドレスを生成し続け
る。さらに、フェッチPC生成ユニット18Dは、分岐プレディクタ18A〜1
8Cを介してラインプレディクタ12によって与えられる次のフェッチアドレス
をベリファイし得る。ラインプレディクタ12内のラインプレディクタエントリ
は、タイプにより命令のライン内の終了命令を特定し、ラインプレディクタ12
は、フェッチPC生成ユニット18Dへタイプ情報を、および終了命令の予測さ
れた方向(図3における分岐情報)を伝送する。さらに、分岐命令内に含まれる
分岐変位によりターゲットアドレスを形成する分岐に対して、ラインプレディク
タ12は、分岐変位の表示を与え得る。予測された次のフェッチアドレスをベリ
ファイする目的で、終了命令は、条件付分岐命令、間接分岐命令、またはリター
ン命令であってもよい。
【0041】 終了命令が条件付分岐命令または間接分岐命令であるならば、ラインプレディ
クタ12は、ラインプレディクタエントリ中の命令ポインタを調べることにより
現在のフェッチアドレスから分岐命令への分岐オフセットを生成する。分岐オフ
セットは、加算器62によって現在のフェッチアドレスに加算され、アドレスは
、分岐プレディクタ18Aおよび間接分岐ターゲットキャッシュ18Bに与えら
れる。分岐プレディクタ18Aは、条件付分岐に対して使用され、間接分岐ター
ゲットキャッシュ18Bは、間接分岐に対して使用される。
【0042】 一般的に、分岐プレディクタ18Aは、条件付分岐の過去の挙動に基づいて条
件付分岐を予測するためのメカニズムである。より特定的には、分岐命令のアド
レスは、分岐予測のテーブルへのインデックス付けのために使用される(たとえ
ば、テイクンの分岐に対してインクリメントされノットテイクンの分岐に対して
デクリメントされる2ビットの飽和カウンタであり、最上位ビットがテイクン/
ノットテイクン予測として使用される)。テーブルは、条件付分岐命令の過去の
実行に基づいて、これらの分岐命令がリタイアされるかまたは非投機的となると
き、更新される。ある特定の実施例では、2個のテーブルが使用される(各々が
16Kエントリの2ビット飽和カウンタを有する)。テーブルは、最近の分岐予
測履歴および分岐アドレスの最下位ビットの排他的ORによってインデックス付
けされ、各テーブルは予測を与える。第3のテーブル(4Kエントリの2ビット
飽和セレクタカウンタを含む)は、2個のテーブル間のセレクタを記憶し、分岐
アドレスによって直接インデックス付けされる。セレクタは、条件付分岐命令の
ための予測として2個のテーブルによって与えられる予測の1つを選ぶ。他の実
施例は、異なった構成および異なった数のエントリを採用し得る。3テーブル構
造を使用して、同じ分岐履歴および最下位アドレスビット(ただし異なった最上
位アドレスビット)を有する分岐のエイリアシングが軽減され得る。
【0043】 加算器62によって与えられるアドレスに応答して、分岐プレディクタ18A
は分岐予測を与える。フェッチPC生成ユニット18Dは、予測を、ラインプレ
ディクタエントリに記録された予測と比較する。予測がマッチしていなければ、
フェッチPC生成ユニット18Dは、(図3に示すステータスラインにより)ラ
インプレディクタ12に信号を与える。さらに、フェッチPC生成ユニット18
Dは、分岐プレディクタ18Aからの予測(分岐変位に応答して生成された分岐
ターゲットアドレスまたはシーケンシャルアドレスのいずれか)に基づいてフェ
ッチアドレスを生成する。より特定的には、x86命令セットアーキテクチャに
おける分岐ターゲットアドレスは、シーケンシャルアドレスおよび分岐変位を加
算することにより生成され得る。他の命令セットアーキテクチャが、分岐命令の
アドレスを分岐変位に加算してもよい。
【0044】 ある実施例では、ラインプレディクタ12は、各ラインプレディクタエントリ
に次の代替フェッチアドレス(および次のラインプレディクタエントリの代替の
表示)を記憶する。フェッチPC生成ユニット18Dが特定のラインプレディク
タエントリに記録された予測と分岐プレディクタ18Aからの予測とのミスマッ
チの信号を与えるならば、ラインプレディクタ12は、次のフェッチアドレスと
次の代替フェッチアドレスをスワップし得る。この態様では、ラインプレディク
タエントリは、(分岐プレディクタ18Aに記録された)分岐命令の実際の実行
を反映するよう更新され得る。それにより、ラインプレディクタエントリが分岐
命令実行に応答して直接更新されることを必要とすることなしに、ラインプレデ
ィクタは、最近の分岐挙動にマッチするようトレーニングされる。
【0045】 間接分岐ターゲットキャッシュ18Bは、間接分岐命令のために使用される。
分岐変位からターゲットアドレスを形成する分岐命令は、(物理アドレスへのペ
ージマッピングは変更され得るが、少なくとも仮想段において)静的分岐ターゲ
ットアドレスを有するが、間接分岐命令は、レジスタオペランドおよび/または
メモリオペランドに基づいて可変ターゲットアドレスを有する。間接分岐ターゲ
ットキャッシュ18Bは、分岐命令アドレスによってインデックス付けされたテ
ーブル中に先に生成された間接分岐ターゲットアドレスをキャッシュする。分岐
プレディクタ18Aと同様に、間接分岐ターゲットキャッシュ18Bは、間接分
岐ターゲット命令のリタイアメントにより、実際に生成された間接分岐ターゲッ
トアドレスで更新される。ある特定の実施例では、間接分岐ターゲットキャッシ
ュ18Bは、間接分岐命令アドレスの最下位ビットによってインデックス付けさ
れた、128エントリを有する分岐ターゲットバッファと、間接分岐命令アドレ
スの最下位ビット(ビットが反転されている)と第2のテーブルを用いて最も最
近に予測された4個の間接分岐ターゲットアドレスの最下位ビットとの排他的O
Rによってインデックス付けされた512エントリを有する第2のテーブルとを
含み得る。分岐ターゲットバッファ出力は、それが予測誤りするまで使用され、
第2のテーブルは、それが予測誤りされるまで使用される、などである。この構
造は、実行中に変化するアドレスを予測するために第2のテーブルを用いながら
、分岐ターゲットバッファを用いて実行中変化しない間接分岐ターゲットアドレ
スを予測し得る。
【0046】 フェッチPC生成ユニット18Dは、間接分岐ターゲットキャッシュ18Bか
ら予測された間接分岐ターゲットアドレスを受取り、間接分岐ターゲットアドレ
スを、ラインプレディクタ12によって生成された次のフェッチアドレスと比較
する。アドレスがマッチしていなければ(かつ、対応するラインプレディクタエ
ントリが間接分岐命令によって終了していなければ)、フェッチPC生成ユニッ
ト18Dは、ミスマッチした間接分岐ターゲットが検出されたことを(ステータ
スラインにより)ラインプレディクタ12に対して信号を与える。さらに、間接
分岐ターゲットキャッシュ18Bからの予測された間接ターゲットアドレスは、
フェッチPC生成ユニット18Dによってフェッチアドレスとして生成される。
ラインプレディクタ12は、フェッチアドレスを比較して、ヒットを検出しかつ
ラインプレディクタエントリを選択する。I−キャッシュ14(ITLB60を
介する)は、フェッチアドレスに対応する命令バイトをフェッチする。なお、あ
る実施例では、間接分岐ターゲットキャッシュ18Bは、リニアアドレスを記憶
し、ラインプレディクタ12によって生成される次のフェッチアドレスは物理ア
ドレスである。しかしながら、間接分岐命令はそのような実施例では無条件であ
ってもよく、次の代替フェッチアドレスフィールド(分岐は無条件であるので代
替フェッチアドレスを記憶するために必要とされない)は、比較のために次のフ
ェッチアドレスに対応するリニアアドレスを記憶するために使用され得る。
【0047】 リターンスタック18Cは、リターン命令のためのターゲットアドレスを予測
するために使用される。コール命令がフェッチされると、コール命令へのシーケ
ンシャルアドレスがリターンアドレスとしてリターンスタックに押し上げられる
。リターン命令がフェッチされると、最新のリターンアドレスがリターンスタッ
クからポップされ、そのリターン命令のためのリターンアドレスとして使用され
る。したがって、ラインプレディクタエントリがリターン命令によって終了する
ならば、フェッチPC生成ユニット18Dは、ラインプレディクタエントリから
の次のフェッチアドレスをリターンアドレススタック18Cによって与えられる
リターンアドレスと比較する。上に論じた間接ターゲットキャッシュと同様に、
リターンアドレスと次のフェッチアドレスとがミスマッチであれば、フェッチP
C生成ユニット18Dは、ラインプレディクタ12に(ステータスラインにより
)信号を与え、フェッチアドレスとしてリターンアドレスを生成する。フェッチ
アドレスがラインプレディクタ12においてサーチされ(かつI−キャッシュ1
4でのフェッチのためにITLB60によって変換される)。
【0048】 上述のメカニズムは、分岐プレディクタ18A〜18Cを用いる予測された命
令ストリームの並列ベリフィケーションとともに、ラインプレディクタ12を用
いるフェッチアドレスの高速生成を可能とし得る。分岐プレディクタ18A〜1
8Cとラインプレディクタ12が一致するのであれば、高速命令フェッチが続く
。不一致が検出されるならば、フェッチPC生成ユニット18Dおよびラインプ
レディクタ12は、影響を受けたラインプレディクタエントリをローカルに更新
し得る。
【0049】 他方で、ある種の条件は、フェッチPC生成ユニット18Dによって検出およ
び/または訂正されないかもしれない。プレディクタミスデコードユニット26
が、これらの場合を検出し対処し得る。より特定的には、フェッチPC生成ユニ
ット18Dによって生成されたフェッチアドレスについてミスがラインプレディ
クタ12で検出されるとき、ラインプレディクタ内での次のラインプレディクタ
エントリ表示が無効であるとき、または、ラインプレディクタエントリ内の命令
ポインタが有効でないとき、プレディクタミスデコードユニット26は命令バイ
トをデコードし得る。次のラインプレディクタ表示が無効であることに対して、
プレディクタミスデコードユニット26は、ラインプレディクタ12にサーチア
ドレスとして次のフェッチアドレスを与え得る。次のフェッチアドレスがヒット
するならば、対応するラインプレディクタエントリの表示が次のラインプレディ
クタエントリ表示として記録され得る。他の態様では、プレディクタミスデコー
ドユニット26は、対応する命令バイト(整列ユニット12から受取られる)を
デコードし、命令のためのラインプレディクタエントリを生成する。プレディク
タミスデコードユニット26は、ラインプレディクタエントリの生成中、(図3
に示すラインプレディクタ更新バスにより)フェッチPC生成ユニット18Dと
交信する。
【0050】 より特定的には、プレディクタミスデコードユニット26は、分岐命令でライ
ンプレディクタエントリを終了するとき、分岐プレディクタ18A〜18Cにア
クセスするよう構成され得る。この実施例では、プレディクタミスデコードユニ
ット26は、分岐命令のアドレスをフェッチPC生成ユニット18Dに与え得り
、フェッチPC生成ユニット18Dは、ラインプレディクタ12およびITLB
60へフェッチPCとしてアドレスを与えるがアクセスをキャンセルし得る。こ
の態様では、分岐命令のアドレスは、加算器62を介して(0の分岐オフセット
とともに)分岐プレディクタ18Aおよび間接分岐ターゲットキャッシュ18B
に与えられ得る。代替的に、プレディクタミスデコードユニット26は、分岐命
令アドレスをフェッチPC生成ユニット18Dに与えるのではなく分岐プレディ
クタ18A〜18Dに直接アクセスし得る。対応する予測情報は、生成されたラ
インプレディクタエントリのための次のフェッチアドレス情報を生成するために
、プレディクタミスデコードユニット26によって受取られ得る。たとえば、ラ
インプレディクタエントリが条件付分岐命令によって終了するならば、プレディ
クタミスデコードユニット26は、分岐プレディクタ18Aによって与えられる
分岐予測を用いて、次のフェッチアドレスとして分岐ターゲットアドレスまたは
シーケンシャルアドレスを用いるべきかを判断する。ラインが間接分岐命令によ
って終了するのであれば、次のフェッチアドレスが間接分岐ターゲットキャッシ
ュ18Bから受取られ、次のフェッチアドレスとして使用され得る。ラインがリ
ターン命令によって終了するのであれば、リターンアドレスが使用され(かつリ
ターンスタック18Cからポップされ)得る。
【0051】 次のフェッチアドレスがラインプレディクタエントリについて決定されると、
プレディクタミスデコードユニット26は、次のフェッチアドレスのためにライ
ンプレディクタ12をサーチし得る。ヒットが検出されるならば、ヒットしたラ
インプレディクタエントリが、新しく作成されたラインプレディクタエントリと
して記録され、プレディクタミスデコードユニット26は、新しいエントリでラ
インプレディクタ12を更新し得る。ミスが検出されるならば、ラインプレディ
クタ12中で置換されるべき次のエントリが新しいエントリに記録され得り、プ
レディクタミスデコードユニット26はラインプレディクタ12を更新し得る。
ミスの場合には、プレディクタミスデコードユニット26は、ラインプレディク
タ12でのヒットが検出されるまで、命令をデコードしラインプレディクタエン
トリを生成し続け得る。ある実施例では、ラインプレディクタ12は、ラインプ
レディクタエントリについて先入れ先出し置換方式を採用し得るが、いかなる好
適な置換方式が使用されてもよい。
【0052】 なお、ある実施例では、I−キャッシュ14は、フェッチアドレスによって位
置付けられた命令バイトで始まる、1命令フェッチあたり固定数の命令バイトを
与え得る。フェッチアドレスはキャッシュライン内のどこかに1バイトを位置付
け得るので、I−キャッシュ14は、フェッチアドレスに応答して、2個のキャ
ッシュライン(フェッチアドレスによってインデックス付けされるキャッシュラ
インおよびキャッシュ中の次のインデックスでのキャッシュライン)にアクセス
し得る。他の実施例は、与えられた命令バイトの数を最大固定数までまたはキャ
ッシュラインの終りまでに、いずれか最初に来る方に、制限してもよい。ある実
施例では、固定数は16であるが、他の実施例は、16より大きいまたは小さい
固定数を使用してもよい。さらに、ある実施例では、I−キャッシュ14はセッ
トアソシアティブである。セットアソシアティブキャッシュは、特定のアドレス
によって特定されるキャッシュラインについて多数の可能な記憶場所を与える。
可能な記憶場所の各々は、セットアソシアティブキャッシュの「ウェイ」である
。たとえば、ある実施例では、I−キャッシュ14は4ウェイセットアソシアテ
ィブであってもよく、したがって、特定のキャッシュラインは、4つの可能な記
憶場所の1つに記憶され得る。したがって、セットアソシアティブキャッシュは
、2つの入力値(フェッチアドレスから得られるインデックスおよびキャッシュ
中のタグをフェッチアドレスの残りの部分と比較することにより決定されるウェ
イ)を用いて出力バイトを与える。ウェイを決定するためにタグ比較の完了を待
つ代わりに、ラインプレディクタ12は、(図3に示すウェイ予測としてI−キ
ャッシュ14に与えられる)ウェイ予測を記憶してもよい。予測されたウェイは
出力として選択されてもよく、予測されたウェイはタグ比較によりその後にベリ
ファイされてもよい。予測されたウェイが正しくなければ、I−キャッシュ14
は、ヒットのために他のウェイをサーチし得る。ヒットしたウェイは次にライン
プレディクタ12に記録され得る。ウェイ予測は、予測されたウェイを含むI−
キャッシュメモリの部分を活性化する(かつ予測されないウェイに対応する残り
のメモリを休止させておく)ことだけで、電力節約をも可能にし得る。2つのキ
ャッシュラインが固定数のバイトを与えるためにアクセスされる実施例について
は、各フェッチアドレスごとに2ウェイ予測がラインプレディクタ12によって
与えられ得る。
【0053】 さらになお、プロセッサ10は、ラインプレディクタ12および分岐プレディ
クタが不能化されるモードをサポートしてもよい。そのようなモードでは、プレ
ディクタミスデコードユニット26は、命令をマップユニット30に与え得る。
そのようなモードは、たとえばデバッグのために使用されてもよい。
【0054】 ここに用いられる、分岐命令とは、フェッチされるべき次の命令を2つのアド
レス:分岐ターゲットアドレス(命令のオペランドにより指定される)またはシ
ーケンシャルアドレス(メモリ中の分岐命令の直後の命令のアドレスである)の
1つにし得る命令である。なお、「制御転送命令」という言葉もこの態様で使用
され得る。条件付分岐命令は、分岐命令のオペランドをテストすることにより分
岐ターゲットアドレスまたはシーケンシャルアドレスの一方を選択する(たとえ
ば条件フラグ)。対照的に、無条件分岐命令は常に、命令のフェッチが分岐ター
ゲットアドレスで続くようにする。一般的に条件付であっても無条件であっても
よい、間接分岐命令は、少なくとも1つの非即値オペランド(レジスタオペラン
ドまたはメモリオペランド)を用いてそれらの分岐ターゲットアドレスを生成す
る。直接分岐命令(分岐命令内に含まれる分岐変位などの即値データからそれら
のターゲットを生成する)と対照的に、間接分岐命令は、オペランドが(レジス
タまたはメモリから)フェッチされるまで完全に決定可能でない分岐ターゲット
アドレスを有する。最後に、リターン命令とは、最も最近に実行されたコール命
令に対応する分岐ターゲットアドレスを有する命令である。コール命令およびリ
ターン命令は、たとえば、サブルーチンへおよびサブルーチンから分岐するため
に使用される得る。
【0055】 ここで用いられる、「アドレス」とは、プロセッサ10が結合可能であるメモ
リシステム内の1バイトを特定する値である。「フェッチアドレス」とは、プロ
セッサ10内で命令として実行されるべき命令バイトをフェッチするために使用
されるアドレスである。上述したように、プロセッサ10は、仮想アドレス(命
令のオペランドに応答して生成される)が物理アドレス(メモリシステム中の場
所を物理的に特定する)に変換されるアドレス変換メカニズムを採用し得る。x
86命令セットアーキテクチャにおいては、仮想アドレスは、命令のオペランド
から生成される論理アドレスに対して動作するセグメンテーションメカニズムに
従って生成されるリニアアドレスであり得る。他の命令セットアーキテクチャが
異なったように仮想アドレスを定義してもよい。
【0056】 次に図4を参照して、ラインプレディクタ12のある実施例のブロック図が示
される。他の実施例が可能であり企図される。図4の実施例では、ラインプレデ
ィクタ12は、PC CAM70と、インデックステーブル72と、制御回路7
4と、インデックスmux76と、ウェイ予測mux78と、次のフェッチPC
mux80とを含む。制御回路74は、PC CAM70と、インデックステー
ブル72と、mux76、78および80と、フェッチPC生成ユニット18D
と、プレディクタミスデコードユニット26と、加算器62とに結合される。P
C CAM70は、プレディクタミスデコードユニット26と、フェッチPC生
成ユニット18Dと、mux76および78とにさらに結合される。インデック
ステーブル72は、mux76、78および80と、整列ユニット16と、フェ
ッチPC生成ユニット18Dと、プレディクタミスデコードユニット26とにさ
らに結合される。
【0057】 一般的に、図4に示すラインプレディクタ12の実施例は、ラインプレディク
タエントリを記憶するための2個のメモリを含む。第1のメモリは、フェッチP
C生成ユニット18Dによって生成されるフェッチアドレスのためのサーチを行
うために使用されるPC CAM70である。フェッチアドレスについてヒット
が検出されるならば、PC CAM70は、インデックス(図4のLPインデッ
クス)をインデックステーブル72(第2のメモリ)に与える。インデックステ
ーブル72は、命令整列情報(たとえば命令ポインタ)および次のエントリ情報
を含む、ラインプレディクタエントリのためのラインプレディクタ情報を記憶す
る。PC CAM70からのインデックスに応答して、インデックステーブル7
2は、出力ラインプレディクタエントリ82およびインデックステーブル72の
次のインデックスを与える。次のインデックスは、インデックステーブル72内
の第2のエントリを選択するが、これは、(i)次のフェッチアドレスによって
フェッチされる命令のための命令整列情報および(ii)さらに別の次のフェッチ
アドレスを与える。次に、(i)無効である(すなわち、インデックステーブル
72中の次のエントリを指していない)次のインデックスが選択され、(ii)フ
ェッチPC生成ユニット18Dからのステータス信号が、リダイレクションを示
す(トラップまたは、インデックステーブルに記録された予測と不一致である分
岐プレディクタによる予測、などによる)、または(iii)デコードユニット2
4A〜24Dが、ラインプレディクタ12によって与えられる正しくない整列情
報を検出するまで、ラインプレディクタ12は、次のフェッチアドレス、整列情
報、およびインデックステーブル72から次のインデックスを生成し続け得る。
【0058】 別の見方をすれば、各ラインプレディクタエントリに記憶される次のインデッ
クスは、フェッチされるべき次のラインプレディクタエントリへのリンクである
。次のリンクが有効である限り、フェッチアドレスがPC CAM70において
ヒットするかのチェック(インデックステーブル72内での対応するエントリを
特定する)はスキップされてもよい。次のインデックスが選択されフェッチされ
ているクロックサイクルの間PC CAM70を休止させておくことにより、電
力節約が達成され得る。より特定的には、フェッチPC生成ユニット18Dがフ
ェッチPC生成ユニット18Dによって生成されるフェッチPCへのリダイレク
ションを示すか、次のインデックスを決定するために、PC CAM70のサー
チがプレディクタミスデコードユニット26によって開始されるか、または制御
回路74がPC CAM70を更新しているのでなければ、制御回路74はPC
CAM70を休止状態にしておいてもよい。
【0059】 制御回路74は、インデックステーブル72のインデックスを選択するようイ
ンデックスmux76を制御する。PC CAM70がサーチされ、フェッチP
C生成ユニット18Dによって与えられるフェッチアドレスについてヒットが検
出されるならば、制御回路74は、インデックスmux76を介してPC CA
M70によって与えられるインデックスを選択する。他方で、ラインプレディク
タエントリがフェッチされてしまっており、次のインデックスがラインプレディ
クタエントリにおいて有効であるならば、制御回路74は、インデックステーブ
ル72によって与えられる次のインデックスを選択する。さらにまた、特定のラ
インプレディクタエントリに記憶される分岐予測が、分岐プレディクタからの分
岐予測と不一致であるか、または、インデックステーブル72の更新が行なわれ
るのであれば、制御回路74は、更新インデックスをインデックスmux76に
与え、インデックスmux76を介してそのインデックスを選択する。ウェイ予
測を採用する実施例においては、ウェイ予測ミス(対応するフェッチアドレスと
予測されたウェイのタグを比較することによりI−キャッシュ14によって検出
される)により、ウェイ予測を訂正すべき更新が生じ得る。
【0060】 PC CAM70またはインデックステーブル72のいずれかでミスが起きる
ならば、ラインプレディクタミスデコードユニット26は、ミスしたフェッチア
ドレスに応答してフェッチされる命令バイトをデコードし、図3および図4に示
すラインプレディクタ更新ラインによりラインプレディクタエントリを与える。
制御回路74は、ラインプレディクタ更新ラインから、与えられる更新のタイプ
(PC CAM、インデックステーブル、またはその両方)を示す信号を受け、
対応するメモリ中のエントリを選択し更新されたエントリを記憶する。ある実施
例では、制御回路74は、PC CAM70およびインデックステーブル72内
でFIFO置換方式を採用する。他の実施例は、所望に応じて異なった置換方式
を採用してもよい。インデックステーブル72が更新されているならば、制御回
路74は、更新インデックスをインデックスmux76に与え、更新インデック
スを選択する。PC CAM70が更新されているならば、制御回路74は、更
新されているエントリの表示をPC CAM70に与えもする。
【0061】 さらに、ラインプレディクタエントリの分岐予測が分岐プレディクタ18A〜
18Cと不一致であるならば、制御回路74は、更新インデックスを与えてイン
デックステーブル72中のラインプレディクタエントリを更新し得る。フェッチ
PC生成ユニット18Dは、ステータスラインにより、予測不一致が生じたこと
を示す。制御回路74は、インデックステーブル72から読出されたラインプレ
ディクタエントリを捕捉し、ステータス信号に応答して予測情報を修正し得、そ
の情報でインデックステーブル72を更新し得る。これらの更新は、以下のタイ
ミング図に示され、より詳細に論じられる。
【0062】 プレディクタミスデコードユニット26は、そのラインプレディクタエントリ
のために(インデックステーブル72内の)次のインデックスを与えるために、
中で生成されたラインプレディクタエントリに割当てられた次のフェッチアドレ
スを探してPC CAM70をサーチするよう構成され得る。プレディクタミス
デコードユニット26は、ラインプレディクタ更新ラインを用いて次のフェッチ
アドレスを与え得、(ラインプレディクタ更新ラインにより制御回路74によっ
て与えられる)ヒットしたエントリからサーチのヒット/ミス(ヒットライン/
ミスライン)およびLPインデックスの表示を受取り得る。代替的に、制御回路
74は、ヒットしたエントリからLPインデックスを保持し、インデックステー
ブル72のエントリを更新するとき次のインデックスとしてそのインデックスを
使用してもよい。
【0063】 一般的に、PC CAM70は、(フェッチPC生成ユニット18Dから、ま
たはラインプレディクタエントリをトレーニングするためのプレディクタミスデ
コードユニット26からの)フェッチアドレスによってサーチされるべき複数個
のエントリを含む。例示のPC CAMエントリは、以下に図5に示される。同
様に、インデックステーブル72は、整列情報(たとえば命令ポインタ)、次の
フェッチ情報、およびエントリの終了に関する制御情報を記憶する複数個のエン
トリ(ここではラインプレディクタエントリと呼ばれる)を含む。例示のライン
プレディクタエントリは、以下に図6、図7および図8に示される。インデック
ステーブル72は、(上述したように)ラインプレディクタエントリからインデ
ックスmux76に次のインデックスを与え、出力ラインプレディクタエントリ
82としてエントリ(次のインデックスを含む)をさらに与える。出力ラインプ
レディクタエントリ82は、制御回路74に与えられ、出力ラインプレディクタ
エントリ82の部分は、プロセッサ10のさまざまな他の部分に与えられるよう
に図4において分離されるものと示される。
【0064】 より特定的には、エントリに記憶される命令ポインタは、整列ユニット16に
与えられ、整列ユニットは、命令ポインタを対応する命令バイトと関連付け、そ
れに応答して命令バイトを整列させる。さらに、ラインプレディクタエントリに
よって特定される終了命令に関する情報(たとえば、それが分岐であるかどうか
、それが分岐であるならば分岐のタイプ、など)が、フェッチPC生成ユニット
18Dに伝送される(図3および図4の分岐情報)。情報は、分岐プレディクタ
のうちどれがラインプレディクタにおいて分岐予測をベリファイすべきかを判断
するために使用され得る。さらに、分岐情報は、上述したように、エントリから
の分岐変位およびテイクン/ノットテイクン予測の表示を含み得る。
【0065】 エントリからの次のフェッチアドレスは次のフェッチPCmux80に与えら
れ、次のフェッチPCmux80を介して制御回路74によって選択されてI−
キャッシュ14に与えられ得る。さらに、制御回路74は、入力を次のフェッチ
PCmux80に与える。制御回路74は、ラインプレディクタエントリに記憶
された分岐予測が分岐プレディクタ18A〜18Cと不一致である場合に、次の
フェッチアドレスを与え得る。制御回路74によって与えられた次のフェッチア
ドレスは、影響を受けたエントリからの次の代替フェッチアドレスであり得る(
制御回路74も影響を受けたエントリを更新し得る)。
【0066】 ラインプレディクタエントリ82は、次のフェッチアドレスに対応するウェイ
予測も含む(上述したように、他の実施例は所望に応じてウェイ予測を採用しな
くてもよい)。ウェイ予測は、ウェイ予測mux78に与えられる。さらに、P
C CAM70においてサーチされたフェッチアドレスのためのウェイ予測が、
PC CAM70によって他の入力としてウェイ予測mux78に与えられる。
フェッチアドレスがPC CAM70においてサーチされヒットするならば、制
御回路74は、PC CAM70からウェイ予測を選択する。他の態様では、ラ
インプレディクタエントリ82からのウェイ予測が選択される。選択されたウェ
イ予測は、I−キャッシュ14に与えられる。なお、I−キャッシュ14は、予
測されたウェイに対してフェッチアドレスのタグ比較を行なうことにより、ウェ
イ予測をベリファイし得る。ウェイ予測が正しくないことが見出されるならば、
I−キャッシュ14が、正しいウェイを決定し正しい命令バイトをフェッチする
ために、フェッチアドレスで再アクセスされる。さらに、ラインプレディクタ1
2は、ウェイ予測を訂正するように更新される。
【0067】 制御回路74は、ラインプレディクタエントリの情報から加算器62のために
分岐オフセットを生成するようさらに構成される。より特定的には、制御回路7
4は、命令ポインタのうちどれがラインプレディクタエントリ内の最終有効命令
を特定するかを決定し、その命令ポインタから分岐オフセットを生成する。たと
えば、命令ポインタがオフセットであってもよく、そのため制御回路74は、分
岐オフセットとして終了命令に対応する命令ポインタを選択してもよい。代替的
に、命令ポインタは、命令の長さであってもよい。終了命令に先立つ各命令の命
令ポインタを加えて分岐オフセットを発生してもよい。
【0068】 ある特定の実施例では、PC CAM70は、内容参照可能メモリ(CAM)
を含んでもよく、インデックステーブル72は、ランダムアクセスメモリ(RA
M)を含んでもよい。CAMにおいて、メモリ中の各エントリの少なくとも一部
が、入力値に対してその部分を比較するCAM内の比較器に結合され、マッチが
検出されるならば、ヒット信号がCAMによってアサートされる。さらに、エン
トリの一部のみが比較されるならば、ヒットするエントリの残りが出力として与
えられ得る。図示の実施例では、比較されたエントリの部分は、格納されたフェ
ッチアドレスであってもよく、残りは、ウェイ予測およびLPインデックスであ
ってもよい。ある特定の実施例では、フェッチアドレスの一部のみがCAM内で
比較され得る。たとえば、フェッチアドレスの複数個の最下位ビットが比較され
てもよい。そのような実施例は、同じ最下位ビットを有するが最上位ビットは異
なるある種のフェッチアドレスのエイリアシングを可能にする。したがって、比
較されるビットの数は、許容可能なエイリアシングの量と比較を行なうのに費や
される電力の量とのトレードオフとして選択され得る(というのも、各エントリ
は入力値に対して同時に比較されるからである)。CAMにある値でアクセスし
記憶された値に対して比較を行なうプロセスをここでは「カムする(camming)
」という。他方で、RAMは、入力値(たとえばインデックス)をデコードする
ことによりエントリを選択し、選択されたエントリを出力として与える。
【0069】 ここで用いられる、メモリのエントリとは、情報のタイプを記憶するためのメ
モリによって与えられるある場所である。メモリは、複数個のエントリを含み、
その各々を用いて、指定されたタイプの情報を記憶し得る。さらに、制御回路と
いう言葉は、上述したように入力に対して動作しそれに応答して出力を生成する
回路構成の任意の組合せ(たとえば、組合せ論理ゲート、mux、レジスタ、ラ
ッチ、フロップ、加算器、シフタ、ローテータ、などのデータフロー素子および
/または状態マシンを実現する回路)のことをいうものとここでは使用される。
【0070】 なお、図4の実施例は2個のメモリを示すが、他の実施例は、ラインプレディ
クタ12内に単一のメモリを実現してもよい。メモリは、フェッチアドレスに応
答してサーチされるべきCAM部と、対応するラインプレディクタエントリを記
憶するRAM部とを含み得る。ラインプレディクタエントリは、次のヒットを見
つけるためにメモリに対してカムされ得る次のフェッチアドレス(または次のエ
ントリを特定する次のインデックス)を与え得る。さらになお、CAM部および
RAM部の一方または両方をバンクして電力を節約してもよい。たとえば、8個
のバンクが使用されてもよい。そのような実施例では、フェッチアドレスの最下
位3ビットがバンクを選択してもよく、アドレスの残りがカムされてもよい。
【0071】 ここでの記載はしばしばラインプレディクタ12での「ミス」について言及す
る。図4の実施例について、ラインプレディクタミスはPC CAM70内のミ
スであってもよく、またはPC CAM70でのヒットであってもよいが、対応
するラインプレディクタエントリは無効の整列情報を含む。さらに、次のインデ
ックスは無効であってもよく、次のフェッチアドレスはラインプレディクタ12
でのミスであるとみなされてもよい。
【0072】 ここで図5を参照し、PC CAM70のための例示のエントリ90を示す図
が示される。PC CAM70の他の実施例は、より多い情報、より少ない情報
、または図5の実施例に示す情報への置換情報を含むエントリ90を採用しても
よい。図5の実施例では、エントリ90は、フェッチアドレスフィールド92と
、ラインプレディクタインデックスフィールド94と、第1のウェイ予測フィー
ルド96と、第2のウェイ予測フィールド98とを含む。
【0073】 フェッチアドレスフィールド92は、対応するラインプレディクタエントリの
情報が記憶される第1のバイトを位置付けるフェッチアドレスを記憶する。フェ
ッチアドレスフィールド92に記憶されたフェッチアドレスは、フェッチPC生
成ユニット18Dによって生成されたフェッチアドレスに対して比較される仮想
アドレスであり得る。たとえば、x86命令セットアーキテクチャを採用するプ
ロセッサ10の実施例では、仮想アドレスはリニアアドレスであってもよい。上
述したように、フェッチアドレスの最下位部分は、フェッチアドレスフィールド
92に記憶され得、フェッチPC生成ユニット18Dによって生成されるフェッ
チアドレスと比較され得る。たとえば、ある特定の実施例では、最下位18ビッ
トから20ビットが記憶され比較され得る。
【0074】 インデックステーブル72内の対応するラインプレディクタエントリは、ライ
ンプレディクタインデックスフィールド94に記憶されるインデックスによって
特定される。さらに、フェッチアドレスおよび次のシーケンシャルキャッシュラ
インのアドレスに対応するウェイ予測が、それぞれ、ウェイ予測フィールド96
および98に記憶される。
【0075】 次に図6を参照し、例示のラインプレディクタエントリ82が示される。イン
デックステーブル72の他の実施例は、より多い情報、より少ない情報、または
図6の実施例に示す情報への置換情報を含むエントリ82を採用してもよい。図
6の実施例では、ラインプレディクタエントリ82は、次のエントリフィールド
100と、複数個の命令ポインタフィールド102〜108と、制御フィールド
110とを含む。
【0076】 次のエントリフィールド100は、フェッチされるべき次のラインプレディク
タエントリを特定する情報、および次のフェッチアドレスを記憶する。次のエン
トリフィールド100のある実施例は以下に示される(図7)。制御フィールド
110は、命令終了情報、および命令のラインで使用され得る任意の他の情報を
含む、命令のラインに関する制御情報を記憶する。制御フィールド110のある
実施例は以下に図8に示される。
【0077】 命令ポインタフィールド102〜108の各々は、対応するデコードユニット
24A〜24Dのための命令ポインタを記憶する。したがって、命令ポインタフ
ィールド102〜108の数は、プロセッサ10のさまざまな実施例内で与えら
れるデコードユニットの数と同じであり得る。別の見方をすれば、ラインプレデ
ィクタエントリに記憶される命令ポインタの数は、プロセッサ10によって同時
にデコードされ得る(かつスケジュール段へと処理される)命令の最大数であり
得る。各命令ポインタフィールド102〜108は、命令バイト内に命令を直接
位置付ける(1バイトごとに記憶され、いかなる命令も位置付け可能である前に
、全体としてスキャンされなければならないプリデコードデータとは対照的であ
る)。ある実施例では、命令ポインタは、各命令の長さであってもよい(これは
、命令のアドレスに加えられると、次の命令を位置付ける)。ゼロの長さは、次
の命令が無効であることを示し得る。代替的に、命令ポインタは、フェッチアド
レスからのオフセット(およびポインタの有効性を示すための有効ビット)を含
んでもよい。ある具体的な実施例では、命令ポインタ102(命令バイト内に第
1の命令を位置付ける)は、命令の長さを含んでもよく、残りの命令ポインタは
、オフセットおよび有効ビットを含んでもよい。
【0078】 ある実施例では、マイクロコードユニット28は、デコードユニット24D(
命令ポインタフィールド108に対応する)にのみ結合される。そのような実施
例では、ラインプレディクタエントリがMROM命令を含むのであれば、MRO
M命令は、命令ポインタフィールド108によって位置付けられる。命令のライ
ンが最大数よりも少ない命令を含むのであれば、MROM命令は、命令ポインタ
フィールド108によって位置付けられ、命令ポインタフィールド102〜10
6の1つ以上は無効である。代替的に、MROM命令は、ライン中の命令の数に
基づいて適切な命令ポインタフィールド102〜108によって位置付けられて
もよく、タイプフィールド120(以下に示す)は、最終の命令がMROM命令
であり、そのためデコードユニット24Dに対して整列されるべきであることを
示し得る。
【0079】 ここで図7を参照し、例示の次のエントリフィールド100が示される。次の
エントリフィールド100の他の実施例は、より多い情報、より少ない情報、ま
たは図7の実施例に示す情報への置換情報を採用し得る。図7の実施例では、次
のエントリフィールド100は、次のフェッチアドレスフィールド112と、次
の代替フェッチアドレスフィールド114と、次のインデックスフィールド11
6と、次の代替インデックスフィールド118とを含む。
【0080】 次のフェッチアドレスフィールド112は、ラインプレディクタエントリのた
めの次のフェッチアドレスを記憶する。次のフェッチアドレスは、図4の次のフ
ェッチアドレスmux80に与えられ、ラインプレディクタエントリに記憶され
る分岐予測に従って、現在のエントリの命令のラインの後にフェッチされるべき
次の命令のアドレスである。分岐命令によって終了しないラインについては、次
のフェッチアドレスは、終了命令へのシーケンシャルアドレスであってもよい。
次のインデックスフィールド116は、次のフェッチアドレスに対応するライン
プレディクタエントリ(すなわち、次のフェッチアドレスに応答してフェッチさ
れる命令のための命令ポインタを記憶するラインプレディクタエントリ)のイン
デックステーブル72内のインデックスを記憶する。
【0081】 次の代替フェッチアドレスフィールド114(および対応する次の代替インデ
ックスフィールド118)は、分岐命令(特に条件付分岐命令)によって終了す
るラインのために使用される。分岐命令の予測されないパスのフェッチアドレス
(および対応するラインプレディクタエントリ)は、次の代替フェッチアドレス
フィールド114(および次の代替インデックスフィールド118)に記憶され
る。この態様では、分岐プレディクタ18Aが条件付分岐についてラインプレデ
ィクタ12による最新の予測と不一致であるならば、(たとえば、プレディクタ
ミスデコードユニット26へ行くことなしに)代替パスが高速にフェッチされ得
る。したがって、分岐がとられる(テイクン)と予測されるならば、分岐ターゲ
ットアドレスが次のフェッチアドレスフィールド112に記憶され、シーケンシ
ャルアドレスが次の代替フェッチアドレスフィールド114に記憶される。他方
で、分岐がとられない(ノットテイクン)と予測されるならば、シーケンシャル
アドレスが次のフェッチアドレスフィールド112に記憶され、分岐ターゲット
アドレスが次の代替フェッチアドレスフィールド114に記憶される。対応する
次のインデックスが同様にフィールド116および118に記憶される。
【0082】 ある実施例では、次のフェッチアドレスフィールド112および次の代替フェ
ッチアドレスフィールド114は、I−キャッシュ14をアドレスするための物
理アドレスを記憶する。この態様では、命令のラインはラインプレディクタ12
からフェッチされるので、仮想から物理へのアドレス変換を行なうために使用さ
れる時間は回避され得る。他の実施例は、これらのフィールドの仮想アドレスを
採用し、変換を行なってもよい(または仮想的にタグ付けされたキャッシュを採
用する)。なお、(PC CAMおよびインデックステーブルの代わりに)ライ
ンプレディクタ12内に単一のメモリを採用する実施例では、インデックスフィ
ールドをなくしてもよい、というのもフェッチアドレスはラインプレディクタに
おいてサーチされるからである。なお、次のフェッチアドレスおよび次の代替フ
ェッチアドレスは、フェッチアドレスの一部であり得る。たとえば、アドレスの
ページ内の部分(たとえば、最下位12ビット)が記憶されてもよく、全アドレ
スが、現在のページを記憶された部分に連結することにより形成されてもよい。
【0083】 次に図8を参照して、例示の制御フィールド110が示される。制御フィール
ド110の他の実施例は、より多くの情報、より少ない情報、または図8の実施
例に示す情報への置換情報を採用してもよい。図8の実施例では、制御フィール
ド110は、最終命令タイプフィールド120と、分岐予測フィールド122と
、分岐変位フィールド124と、継続フィールド126と、第1のウェイ予測フ
ィールド128と、第2のウェイ予測フィールド130と、エントリポイントフ
ィールド132とを含む。
【0084】 最終命令タイプフィールド120は、命令のライン内の最終命令(または終了
命令)のタイプの表示を記憶する。命令のタイプは、フェッチPC生成ユニット
18Dに与えられて、フェッチPC生成ユニット18Dが、分岐プレディクタ1
8A〜18Cのうちどれを用いてラインプレディクタエントリ内の分岐予測をベ
リファイするかを決定することを可能にし得る。より特定的には、最終命令タイ
プフィールド120は、シーケンシャルフェッチ(分岐なし)、マイクロコード
命令、条件付分岐命令、間接分岐命令、コール命令、およびリターン命令を示す
符号化を含み得る。条件付分岐命令符号化の結果、分岐プレディクタ18Aが分
岐予測の方向をベリファイするために使用される。間接分岐命令符号化の結果、
次のフェッチアドレスが間接分岐ターゲットキャッシュ18Bに対してベリファ
イされる。リターン命令符号化の結果、次のフェッチアドレスがリターンスタッ
ク18Cに対してベリファイされる。
【0085】 分岐予測フィールド122は、(もしあれば)ラインを終了させる分岐命令の
ためにラインプレディクタ12によって記録される分岐予測を記憶する。一般的
に、フェッチPC生成ユニット18Dは、フィールド122内の分岐予測が分岐
プレディクタ18Aからの予測と(テイクン/ノットテイクンの点で)マッチす
ることをベリファイする。ある実施例では、分岐予測フィールド122は、テイ
クンを示すビットの一方の2進状態(たとえば2進1)およびノットテイクンを
示す他方の2進状態(たとえば2進0)を備える1ビットを含み得る。予測が分
岐プレディクタ122と不一致であれば、予測が切換えられ得る。別の実施例で
は、分岐予測フィールド122は、テイクン/ノットテイクンを示す最上位ビッ
トの2進状態を備える飽和カウンタを含み得る。テイクン/ノットテイクン予測
が分岐プレディクタ18Aからの予測と不一致であれば、飽和カウンタは、分岐
プレディクタ18Aからの予測の方向に1つだけ調節される(たとえば、テイク
ンであればインクリメントされ、ノットテイクンであればデクリメントされる)
。飽和カウンタの実施例は、たとえば、N−1個(Nはループカウントである)
のテイクン反復の各々の後に1個のノットテイクン反復が続くループ命令をより
正確に予測し得る。
【0086】 分岐変位フィールド124は、直接分岐命令に対応する分岐変位の表示を記憶
する。ある実施例では、分岐変位フィールド124は、フェッチアドレスから分
岐変位の最初のバイトへのオフセットを含み得る。フェッチPC生成ユニット1
8Dは、オフセットを用いて、フェッチされた命令バイト内の分岐変位を位置付
け得、そのため、フェッチされた命令バイトから変位を選択するために使用され
得る。別の実施例では、分岐変位は、分岐変位フィールド124に記憶されても
よく、分岐変位フィールド124は、分岐ターゲットアドレスを決定するために
直接使用されてもよい。
【0087】 この実施例では、ラインプレディクタエントリによって表わされる命令バイト
は、命令バイトの2つの連続したキャッシュラインからフェッチされ得る。した
がって、1つ以上のバイトが、他の命令バイトと異なったページ中にあり得る。
継続フィールド126は、ページ交差の信号を与えるために使用され、それによ
り第2のキャッシュラインに対応するフェッチアドレスが生成され変換され得る
。新しいページマッピングが利用可能となると、ページ内の他のフェッチが同様
に正しい物理アドレスを有する。第2のページ中の命令バイトが、次に、フェッ
チされ第1のページ内の命令バイトとマージされる。継続フィールド126は、
一方の2進状態では、命令のラインがページ境界にまたがることを示し、他方の
2進状態では、命令のラインがページ境界をまたがらないことを示す1ビットを
含み得る。継続フィールド126は、分岐命令と異なったページ中にある分岐タ
ーゲットアドレスの信号を与えるためにも使用され得る。
【0088】 ウェイ予測フィールド96および98と同様に、ウェイ予測フィールド128
および130は、次のフェッチアドレス(および次のフェッチアドレスへのシー
ケンシャルアドレス)に対応するウェイ予測を記憶する。最後に、エントリポイ
ントフィールド132は、(もしあれば)命令のライン内のマイクロコード命令
のためのエントリポイントを記憶し得る。マイクロコード命令のためのエントリ
ポイントは、マイクロコード命令に対応するマイクロコードルーチンが記憶され
るマイクロコードROM内の最初のアドレスである。命令のラインがマイクロコ
ード命令を含むのであれば、エントリポイントフィールド132は、命令のため
のエントリポイントを記憶する。エントリポイントが記憶されるので、デコード
ユニット24Dは、エントリポイントデコードハードウェアを省略し、代わりに
記憶されたエントリポイントを直接使用し得る。マイクロコード命令をデコード
してエントリポイントを決定するために使用される時間は、命令のフェッチおよ
びディスパッチの際になくされてもよく、マイクロコードルーチンにより高速に
入ることを可能にする。記憶されたエントリポイントは、(デコードユニット2
4DまたはMROMユニット28によって)命令に応答して生成されたエントリ
ポイントに対してベリファイされてもよい。
【0089】 ここで図9を参照し、プロセッサ10のある実施例に従う命令のラインのため
の終了条件を示す表134が示される。他の実施例が可能であり企図される。命
令をデコードすることによりラインプレディクタエントリを作成する際に、ライ
ンプレディクタミスデコードユニット26は、図9に列挙されるライン終了条件
のいずれか1つを検出することに応答してラインを終了させる(エントリでライ
ンプレディクタ12を更新する)。
【0090】 表134が示すように、ラインは、マイクロコード命令または分岐命令のいず
れかをデコードすることに応答して終了する。また、予め定められた最大数の命
令がデコードされたならば(この実施例では、4個のデコードユニット24A〜
24Dと一致する4個である)、ラインは終了する。デコードされる、最大数の
命令を決定する際、3つ以上の命令操作を生成する(5つ以上の命令操作を生成
するマイクロコード命令ではない)命令は、2個の命令として数えられる。さら
に、予め定められた最大数の命令バイトがデコードされるならば(たとえば、こ
の実施例では、1クロックサイクル中にI−キャッシュ14からフェッチされる
バイトの数と一致する16バイトである)、ラインは終了する。また、ライン内
の命令をデコードすることによって生成される命令操作の数が、予め定義された
最大数の命令操作(たとえば、この実施例では6個)に達するならば、ラインは
終了する。さらに、ライン内の命令をデコードする間にページ交差が検出される
(継続フィールドがセットされる)ならば、ラインは終了する。最後に、ライン
内の命令が予め定義された数のデスティネーションレジスタを更新するならば、
ラインは終了する。この終了条件は、マップユニット30が1クロックサイクル
中に割当て得るレジスタリネームの最大数を超えないように設定される。この実
施例では、4個のリネームが最大であり得る。
【0091】 別の見方をすれば、ラインプレディクタエントリを作成する際のプレディクタ
ミスデコードユニット26のための終了条件は、ラインプレディクタ12のため
のフロー制御条件である。換言すれば、ラインプレディクタ12は、各フェッチ
アドレスに応答して命令のラインを特定する。命令のラインは、表134の条件
に違反せず、そのため、プロセッサ10のパイプライン段階内のハードウェアが
対処するよう設計され得る命令のラインである。他の態様では、(同時処理を行
なったり、またはパイプラインを通って流れる命令のストールおよび分離を行な
うために)かなりのハードウェアを追加してしまうであろう、対処が困難である
組合せは、ラインプレディクタ12内の異なったラインに分離され得、そのため
、これらの状況においてパイプラインを制御するためのハードウェアがなくされ
得る。命令のラインは、ユニットとしてパイプラインを通って流れ得る。パイプ
ラインストールは依然として起こるかもしれないが(たとえば、スケジューラが
一杯であったり、またはマイクロコードルーチンがディスパッチされたり、また
はマップユニット30が利用可能なリネームレジスタを有していない場合)、ス
トールは、ユニットとして命令の進行を保持する。さらに、ストールは、いずれ
かの特定のライン内の命令の組合せの結果ではない。パイプライン制御は簡素化
され得る。この実施例では、ラインプレディクタ12は、スケジューラ36まで
のパイプライン段階のためのフロー制御メカニズムである。したがって、1個の
マイクロコードユニットが設けられ(デコードユニット24DおよびMROMユ
ニット28)、分岐予測/フェッチPC生成ユニット18は、1クロックサイク
ル当り1個の分岐予測を行なうよう構成され、複数個のデコードユニット24A
〜24Dが、最大数の命令を対処するよう設けられ、I−キャッシュ14は、1
フェッチ当り最大数の命令バイトを引渡し、スケジューラ36は、1クロックサ
イクル当り最大数までの命令操作を受取り、マップユニット30は、1クロック
サイクル当り最大数までのリネームレジスタを与える。
【0092】 タイミング図 次に図10〜図21を参照し、1組のタイミング図が示され、図2に示す命令
処理パイプライン内のラインプレディクタ12のある実施例の動作を例示する。
ラインプレディクタ12の他の実施例は、他のパイプライン内で動作してもよく
、パイプライン段の数は、実施例によって異なってもよい。より低いクロック周
波数が採用されるならば、段は組合わされてより少ない段を形成してもよい。
【0093】 一般的に、各タイミング図は、垂直の断続線によって境界を定められる1組の
クロックサイクルを示し、クロックサイクルに対して垂直の断続線間上に(水平
方向に)そのクロックサイクルのための標示が付される。各クロックサイクルは
、対応する標示で参照される。図2に示すパイプライン段階標示が、タイミング
図において、ラインプレディクタ12からフェッチされる異なったラインを指定
するために使用される下付文字とともに使用される(たとえば、下付文字の0は
第1のラインを参照し、下付文字の1は第1のラインによって予測される第2の
ラインを参照する、などである)。下付文字は、昇順番号で示され得るが、この
順序は、ラインプレディクタエントリを記憶するインデックステーブル72内の
特定のエントリではなくそのフェッチ順序を示すものと意図される。一般的に、
ラインプレディクタエントリは、それらのフェッチ順序についてインデックステ
ーブル72内にランダムに位置付けされ得る。代わりに、順序は、エントリが作
成される順序によって決定される。問題となるさまざまな動作もタイミング図に
示され得、これらの動作は、対応するタイミング図について記載される。
【0094】 図10は、フェッチがラインプレディクタ12でヒットし、分岐予測が、条件
付分岐および間接分岐についてラインプレディクタに記憶される分岐予測と一致
している場合を示す。図13は、リターン命令予測がリターンスタック18Cと
一致する場合を示す。図11、図12および図14は、ラインプレディクタ12
および分岐予測/フェッチPC生成ユニット18がラインプレディクタエントリ
のトレーニングに対処する条件を示す。図15は、ページ交差のための継続フィ
ールドの使用を示す。図16〜図18は、プレディクタミスデコードユニット2
6にラインプレディクタエントリの生成を開始させるさまざまな条件を示す。図
19および図20は、それぞれ、非分岐タイプ命令(たとえば、マイクロコード
命令または非分岐命令)および分岐命令において終了するラインプレディクタエ
ントリの生成を示す。図21は、分岐命令のためのターゲット(またはテイクン
)パスおよびシーケンシャル(またはノットテイクン)パスの両方のトレーニン
グを示す。なお、各タイミング図は、ラインプレディクタ(LP)段で始まるフ
ェッチされる最初のライン(下付文字0)を示す。フェッチされる最初のライン
は、フェッチアドレス、有効な次のインデックスフィールド、または分岐プレデ
ィクタ不一致に続く次の代替フェッチインデックスフィールドをカムすることの
結果であり得る。
【0095】 次に各タイミング図を個別に記載する。図10は、予測された命令ストリーム
内のいくつかのラインプレディクタエントリをフェッチすることを示す。ライン
0は、条件付分岐によって終わり、クロックサイクルCLK1の間にラインプレ
ディクタ12からフェッチされる。ライン0の次のインデックスはライン1を示
し(矢印140)、ライン1は、クロックサイクルCLK2の間にラインプレデ
ィクタからフェッチされる。同様に、ライン1はさらにライン2を示し(矢印1
42)、ライン2は、クロックサイクルCLK3の間にラインプレディクタから
フェッチされる。ライン2はさらにライン3を示し(矢印144)、ライン3は
、クロックサイクルCLK4の間にラインプレディクタからフェッチされる。各
ラインは、図10に示すようにその後のクロックサイクルの間にその後の段を通
って進む。矢印140〜144と同様の矢印が、タイミング図を通じて使用され
、ラインプレディクタエントリが次のインデックスフィールドにより次のライン
プレディクタを特定することを示す。
【0096】 ライン0は条件付分岐によって終了するので、制御回路74は、対応する命令
ポインタから予測された分岐命令に対応する分岐オフセットを生成し、そのオフ
セットを加算器62に与え、加算器62は、そのオフセットを、フェッチPC生
成ユニット18Dによって与えられるフェッチアドレスに加算する(矢印146
)。結果として得られた分岐命令アドレスは分岐プレディクタ18Aに与えられ
、分岐プレディクタ18Aは、分岐予測を選択する(矢印148)。フェッチP
C生成ユニット18Dは、(ラインプレディクタ12から受取られる分岐情報が
条件付分岐がラインを終了させることを示すことに応答して)分岐プレディクタ
18Aからの分岐予測を比較し、予測が一致する(矢印150)ことを決定する
。フェッチPC生成ユニット18Dは、ステータスラインによりラインプレディ
クタ12にステータスを与え、予測が正しいことを示す。したがって、フェッチ
は、次のインデックスフィールドによって指示されるように継続する。なお、ラ
イン0のための分岐予測はクロックサイクルCLK3までベリファイされないの
で、ライン1および2のフェッチは投機的であり、(たとえば、図11に示すよ
うに)予測が不一致であると見出されるならばキャンセルされ得る。間接分岐命
令で終了されるラインのための予測をベリファイすることは、図11のタイミン
グと同様であり得るが、フェッチPC生成ユニット18Dは、(やはり、分岐情
報が間接分岐を示すことに応答して)分岐プレディクタ18Aに対しての分岐予
測の代わりに間接分岐ターゲットキャッシュ18Bに対して分岐ターゲットアド
レスをベリファイし得る。間接分岐命令が条件付きである実施例では、両方のベ
リフィケーションが行なわれてもよい。
【0097】 対照的に、図13は、ライン0がリターン命令で終了する場合を示す。リター
ン命令は、最新のコール命令に対応するリターンアドレスを選択し、リターンス
タック18Cは、最新のリターンアドレスがリターンスタック18Cの最上部か
ら与えられる、リターンアドレスのスタックであるので、フェッチPC生成ユニ
ット18Dは、最新のリターンアドレスを、ラインプレディクタ12によって生
成される次のフェッチアドレスと比較する(矢印152)。図13の例では、リ
ターンアドレスと次のフェッチアドレスはマッチし、フェッチPC生成ユニット
18Dは、予測が正しいということを示すステータスをラインプレディクタ12
に返す。したがって、ライン1のみが、ライン0の分岐予測のベリフィケーショ
ンについて投機的にフェッチされる。
【0098】 図11に戻って、分岐プレディクタ18Aからの条件付分岐予測がラインプレ
ディクタ内の分岐予測と不一致である場合が示される。この例では、ライン0は
、第1のテイクンパスのインデックス(下付文字t1)が次のインデックスであ
ることを示し、これが第2のテイクンパスのインデックス(下付文字t2)をさ
らに示す。どちらのテイクンパスフェッチも投機的である。図10の例と同様に
、分岐オフセットがフェッチアドレスに加算され、分岐プレディクタ18Aは、
分岐予測を発生する(矢印146および148)。しかしながら、図11では、
フェッチPC生成ユニット18Dは、分岐プレディクタ18Aからの予測がライ
ン0からの予測と不一致である(すなわち、分岐プレディクタ18Aはノットテ
イクンを予測し、ライン0はテイクンを予測する――矢印154)ことを決定す
る。フェッチPC生成ユニット18Dは、予測ミスのステータスをラインプレデ
ィクタ12に返す。
【0099】 制御回路74は、クロックサイクルCLKの間にライン0からの次の代替イン
デックスおよび次の代替フェッチアドレスを記録する。フェッチPC生成ユニッ
ト18Dからの予測ミスステータスに応答して、制御回路74は、クロックサイ
クルCLK4の間にライン0からの次の代替インデックスを与える。次の代替イ
ンデックスは、この例ではノットテイクンパスである…下付文字nt1。しかし
ながら、分岐命令が、分岐プレディクタ18Aによって最初にノットテイクンで
あると予測されその後にテイクンであると予測されるならば、同じタイミング図
が当てはまる。またクロックサイクルCLK4の間に、ラインt1およびt2の
投機的フェッチがキャンセルされ、次の代替フェッチアドレスが、次のフェッチ
アドレスとしてI−キャッシュ14に与えられる。
【0100】 クロックサイクルCLK5の間、制御回路74は、ライン0のためのラインプ
レディクタエントリを更新し、次のインデックスフィールドおよび次の代替イン
デックスフィールドをスワップし、次のフェッチアドレスフィールドおよび次の
代替フェッチアドレスフィールドをスワップし、分岐予測を変更する(矢印15
6)。たとえば、分岐予測の単一ビットがライン0に記憶され、かつ予測がテイ
クンであったならば(図11の例に示すように)、予測はノットテイクンに更新
される。制御回路74がクロックサイクルCLK5の間にインデックステーブル
72を更新しているので、ラインnt1からの次のインデックス(ラインnt2
を示す)は、クロックサイクルCLK6までインデックステーブルからフェッチ
されない。制御回路74は、クロックサイクルCLK6の間に、ラインnt1か
ら次のインデックスを捕捉し、そのインデックスをインデックスMUX76を介
して与え得る。
【0101】 なお、制御回路74は、動作中のさまざまな時点でライン情報を捕捉し、その
後のクロックサイクルにおいてその情報を使用する。制御回路74は、連続する
クロックサイクルの間ラインプレディクタエントリを捕捉するのに十分なエント
リを有するキューを採用し、いかなる可能性のある訂正手段を行なうのにも十分
な長さのこれらのエントリを保持し得る。たとえば、この実施例では、2個のエ
ントリのキューが使用され得る。代替的に、より大きなキューが採用されてもよ
く、(たとえば、デコードユニット24A〜24Dが、命令整列情報をまだベリ
ファイしていない、など)正しいとまだベリファイされていないラインプレディ
クタエントリを記憶してもよい。
【0102】 次に図12を参照し、ライン0を終了させる間接分岐命令の予測ミスを示すタ
イミング図が示される。ライン0は、クロックサイクルCLK1においてライン
プレディクタからフェッチされ、次のインデックスおよび次のフェッチアドレス
は、間接分岐命令の先の実行に基づく。したがって、ライン1が、その後にライ
ン2が、それぞれクロックサイクルCLK2およびCLK3の間にフェッチされ
る。図11と同様に、分岐命令アドレスが生成される(矢印146)。しかしな
がら、この場合には、間接分岐ターゲットキャッシュ18Bがクロックサイクル
CLK2およびCLK3の間にアクセスされる(矢印158)。フェッチPC生
成ユニット18Dは、間接分岐ターゲットキャッシュ18Bによって与えられる
間接ターゲットアドレスを、ライン0からの次のフェッチアドレスと比較し、ミ
スマッチが検出される(矢印160)。フェッチPC生成ユニット18Dは、そ
のステータスラインにより、予測ミスされた間接分岐ターゲットが検出されたこ
とを示す。
【0103】 クロックサイクルCLK4の間、ライン1および2の投機的フェッチがキャン
セルされる。さらに、制御回路74は、PC CAM70を活性化して、クロッ
クサイクルCLK4の間にフェッチアドレスとしてフェッチPC生成ユニット1
8Dによって与えられる予測された間接分岐ターゲットアドレスをカムする。カ
ムは、クロックサイクルCLK4およびCLK5の間に完了する。ヒットが検出
され、ヒットするエントリ(エントリi)からのLPインデックスが、クロック
サイクルCLK6の間にインデックステーブル72に与えられる。クロックサイ
クルCLK7の間、制御回路74は、ライン0エントリを更新し、次のフェッチ
アドレスを間接分岐ターゲットキャッシュ18Bによって与えられる新しく予測
された間接分岐ターゲットアドレスに、次のインデックスフィールドをラインi
を示すように設定する(矢印162)。
【0104】 図14は、ライン0がリターン命令で終了するが、次のフェッチアドレスがリ
ターンスタック18Cの最上部のリターンアドレスとマッチしない場合を示す。
フェッチPC生成ユニット18Dは、ライン0の分岐情報から、終了命令がリタ
ーン命令であることを決定し、したがって、クロックサイクルCLK2の間に次
のフェッチアドレスをリターンアドレススタックと比較する(矢印164)。フ
ェッチPC生成ユニット18Dは、予測ミスのステータスをラインプレディクタ
12に返し、フェッチアドレスとしてリターンアドレススタック18Cから予測
されたリターンアドレスを与える(クロックサイクルCLK3)。間接分岐ター
ゲットアドレス予測ミスと同様に、制御回路74は、クロックサイクルCLK3
の間にPC CAM70を活性化し、カムは、クロックサイクルCLK4の間に
ヒットで完了する(ヒットするエントリからのLPインデックスは、インデック
ステーブル72中のエントリRASを示す)。ラインRASは、クロックサイク
ルCLK4の間にフェッチされ、制御回路74は、新しく予測されたリターンア
ドレスを反映するようライン0の次のフェッチアドレスフィールドを、ラインR
ASを反映するようライン0の次のインデックスフィールドを更新する(矢印1
66)。
【0105】 次に図15を参照し、ライン0がページ交差にわたる継続により終了する一例
が示される。クロックサイクルCLK0の間に、ライン0が、ラインプレディク
タからフェッチされる。制御回路74は、ライン0中の継続表示を検出し、次の
フェッチアドレスが変換されるべきことを示す。この場合における仮想の次のフ
ェッチアドレスは、フェッチPC生成ユニット18DによってITLB60に与
えられて変換される。変換の結果は、ラインプレディクタ12によって与えられ
る次のフェッチアドレスと比較され、確実に正しい物理アドレスが与えられるよ
うにする。次のフェッチアドレスが正しくなければ、ラインプレディクタ12が
更新され、次のエントリを検出するために対応するリニアアドレスがカムされ得
る。図15は、次のフェッチアドレスが正しい(すなわち、物理的マッピングが
変更されていない)場合を示す。したがって、ライン0からの次のインデックス
は、クロックサイクルCLK2の間にインデックステーブル72からフェッチさ
れ、新しいページからの命令がクロックサイクルCLK3において読出される(
ライン1のためのIC段)。ライン1は、ライン2がラインプレディクタからフ
ェッチされるべき次のインデックスであることをさらに示し、フェッチは、図1
5においてサイクルCLK3から先へインデックスにより継続する。
【0106】 さらに、ライン1のための命令バイトがデコード段に達するまで、ライン0は
デコード段でストールされる。次に、命令バイトは、デコードユニットによって
マージされ得(クロックサイクルCLK5)、命令の対応するラインが、パイプ
ラインを通って伝搬し続け得る(クロックサイクルCLK6におけるM1段へお
よびクロックサイクルCLK7におけるM2段へ伝搬するライン0およびライン
1によって示される)。なお、マージはこの実施例ではデコードユニット24A
〜24Dにおいて行なわれるが、他の実施例は、他の段(たとえば、整列段)で
マージを行なってもよい。
【0107】 なお、予測ミスおよび正しい予測という言葉は、図10〜図15について、ラ
インプレディクタの予測が分岐プレディクタ18A〜18Cからの予測と一致す
ることを言うために使用された。しかしながら、この意味における「正しい予測
」は、対応する分岐命令の実行中に予測ミスになおもつながる可能性があり、こ
の意味における「予測ミス」は、対応する分岐命令の実行に従って正しい予測で
あったであろうものを変更する可能性がある。
【0108】 次に図16を参照し、タイミング図が、PC CAM70におけるフェッチミ
スによるプレディクタミスデコードユニット26によるデコードの開始を示す。
クロックサイクルCLK1の間に、フェッチアドレスのカムが完了し、ミスが検
出される(矢印168)。ミスに応答して、制御回路74は、ミスしたラインプ
レディクタエントリのためにPC CAM70およびインデックステーブル72
のエントリを割当てる。フェッチアドレスおよび対応する命令バイトは、ライン
プレディクタ段、命令キャッシュ段および整列段を通って流れる。有効な整列情
報がないので、整列ユニット16は、図16のデコード段(SDEC0と示され
る)において、フェッチされた命令バイトをプレディクタミスデコードユニット
26に与える。
【0109】 図17は、デコードがプレディクタミスデコードユニット26によって開始さ
れる別の場合を示す。図17の場合には、ライン0はヌルまたは無効の次のイン
デックスを記憶する(矢印170)。無効の次のインデックスに応答して、制御
回路74は、フェッチPC生成ユニット18Dによって与えられるフェッチアド
レスのPC CAM70のカムを開始する(クロックサイクルCLK2)。上述
したように、フェッチPC生成ユニット18Dは、(ラインプレディクタ12に
よって与えられる分岐情報を用いて)ラインプレディクタ12によって与えられ
る次のフェッチアドレスに対応する仮想フェッチアドレスを生成し続ける。なお
、対応する仮想アドレスがフェッチPC生成ユニット18Dによって生成される
前に生じ得るクロックサイクルの数に依存して、1つ以上のクロックサイクルが
クロックサイクルCLK1とCLK2との間に生じてもよい。
【0110】 カムはクロックサイクルCLK3において完了し、カムがヒットであるか(矢
印172)またはミスであるか(矢印174)に依存して、2つの動作のうち1
つがとられる。カムがヒットであるならば、ヒットするエントリからのLPイン
デックスがインデックステーブル72に与えられ、対応するラインプレディクタ
エントリがクロックサイクルCLK4の間に読出される。クロックサイクルCL
K5の間に、制御回路74はライン0を更新し、ヒットするエントリから与えら
れるLPインデックスと等しくなるように次のインデックスフィールドを設定す
る。
【0111】 他方で、カムがミスであるならば、フェッチアドレスおよび対応する命令バイ
トは、図16のタイミング図と同様に、ラインプレディクタ段、命令キャッシュ
段および整列段を通って流れる(クロックサイクルCLK4、CLK5およびC
LK6)。制御回路74は、採用される置換方式(たとえばFIFO)に従って
PC CAM70およびインデックステーブル72のエントリを割当て、割当て
られた次のインデックス値でライン0を更新する(クロックサイクルCLK5)
。その後、プレディクタミスデコードユニット26は、対応する命令バイトをデ
コードすることにより生成された情報で割当てられたエントリを更新し得る。な
お、カムがミスである場合、プレディクタミスデコードユニット26がデコード
している間ラインプレディクタは休止しているので、更新はクロックサイクルC
LK5から遅延され得る。
【0112】 図18は、PC CAM70およびインデックステーブル72の両方において
ヒットが検出されるが、命令整列情報(たとえば命令ポインタ)が命令バイトに
対応していないものと見出される場合を示す。この場合は、たとえば、PC C
AM70の予め定められた範囲のフェッチアドレスをフェッチアドレスと比較す
る実施例において、アドレスエイリアシングのために生じ得る。
【0113】 命令バイトおよび整列情報は、命令キャッシュ段および整列段を通って流れる
。整列ユニット16は、与えられた整列情報を用いて、命令をデコードユニット
24A〜24Dに対して整列させる。デコードユニット24A〜24Dは、与え
られた命令をデコードする(デコード段、クロックサイクルCLK4)。さらに
、デコードユニット24A〜24Dは、デコードユニット24A〜24Dが有効
な命令を受取ったかどうかについての表示とともに、デコードユニット24A〜
24Dの1つ(たとえばデコードユニット24A)に信号を与える。命令の1つ
以上が無効であるならば(クロックサイクルCLK5)、命令バイトは、プレデ
ィクタミスデコードユニット26に経路付けられる(クロックサイクルCLK6
)。なお、プレディクタミスデコードユニット26は、所望であれば、クロック
サイクルCLK4でデコードを投機的に開始してもよい。
【0114】 図16〜図18は、プレディクタミスデコードユニット26が、命令バイトの
ためのラインプレディクタエントリを生成するために命令バイトのデコードを開
始するさまざまなシナリオを示す。図19〜図20は、デコードが開始された態
様にかかわりなく、デコードを行なう際のプレディクタミスデコードユニット2
6の動作を示す。
【0115】 図19は、非分岐命令によって終了する命令のラインのためのラインプレディ
クタエントリの生成を示す。クロックサイクルCLK1、CLK2およびCLK
Mまでの間、プレディクタミスデコードユニット26は、与えられた命令バイト
内の命令をデコードする。クロックサイクルの数は、デコードされる命令バイト
に依存してさまざまであり得る。クロックサイクルCLKMにおいて、プレディ
クタミスデコードユニット26は、終了条件に達したこと、および終了条件が非
分岐命令であることを決定する(矢印184)。非分岐命令においてラインを終
了することに応答して、プレディクタミスデコードユニット26は、シーケンシ
ャルアドレスをラインプレディクタ12に与え、ラインプレディクタ12は、シ
ーケンシャルアドレスを終了命令にカムして、次のシーケンシャル命令に対応す
るラインプレディクタエントリがそこに記憶されるかどうかを決定する(クロッ
クサイクルCLKNおよびCLKN+1)。この例では、ヒットが検出され、シ
ーケンシャル命令が命令キャッシュから読出され、対応するラインプレディクタ
エントリがラインプレディクタ12から読出される(クロックサイクルCLKN
+2)。プレディクタミスデコードユニット26は、ラインプレディクタエント
リをラインプレディクタ12に伝送し、ラインプレディクタ12は、ラインに割
当てられたラインプレディクタエントリを更新する(たとえば、ライン0…クロ
ックサイクルCLKN+3)。更新されたエントリの次のインデックスフィール
ドは、シーケンシャルアドレスがヒットするインデックスに設定される。シーケ
ンシャルアドレスがラインプレディクタ12においてミスするならば、ライン0
はクロックサイクルCLKN+3においてなおも更新され得る。しかしながら、
この場合には、次のインデックスフィールドが、ミスしたシーケンシャルアドレ
スに割当てられたエントリを示すように設定される。ミスしたシーケンシャルア
ドレスに対応する命令バイトは、プレディクタミスデコードユニット26に与え
られ、プレディクタミスデコードユニット26は、命令バイトのための別のライ
ンプレディクタエントリを生成する。
【0116】 図20は、分岐命令によって終了するラインのためのラインプレディクタエン
トリの生成を示す。図19のタイミング図と同様に、プレディクタミスデコード
ユニット26は、1つ以上のクロックサイクルの間(たとえば、図20の例では
CLK1、CLK2およびCLKMまで)命令バイト内の命令をデコードする。
プレディクタミスデコードユニット26は、分岐命令をデコードしてラインが終
了することを決定する(矢印186)。ラインが条件付分岐命令において終了す
るのであれば、次のフェッチアドレスは、分岐ターゲットアドレスまたはシーケ
ンシャルアドレスのいずれかである。予測を用いて、2つのアドレスのうち1つ
を選択するようラインプレディクタエントリを初期化する。他方で、ラインが間
接分岐命令によって終了するならば、ターゲットアドレスは可変である。間接分
岐ターゲットキャッシュ18Bからの予測を用いて、次のフェッチアドレス(お
よびインデックス)を初期化する。同様に、ラインがリターン命令によって終了
するのであれば、リターンスタック18Cからのリターンアドレス予測を用いて
次のフェッチアドレス(およびインデックス)を初期化する。
【0117】 プレディクタミスデコードユニット26は、次のフェッチアドレス(および次
のインデックス)を初期化することを支援するために分岐プレディクタ18A〜
18Cにアクセスし得る。条件付分岐については、分岐プレディクタ18Aにア
クセスして分岐予測を与える。間接分岐については、分岐プレディクタ18Bに
アクセスして予測された間接分岐ターゲットアドレスを与える。リターン命令に
ついては、リターンスタック18Cの最上部エントリを次のフェッチアドレスの
ための予測として用いる。図20は、分岐プレディクタ18Aにアクセスするた
めのタイミングを示す。分岐プレディクタ18Bにアクセスするためのタイミン
グも同様であり得る。リターンスタック18Cは、命令のアドレスなしにアクセ
スされ得るが、他の態様では同様に動作し得る。
【0118】 分岐命令のアドレスは、分岐プレディクタ18Aに与えられ(矢印176)、
プレディクタは対応する予測にアクセスする(矢印178)。テイクンまたはノ
ットテイクンの予測が決定される(矢印180)。分岐プレディクタ18Aから
のテイクン/ノットテイクン予測に応答して、プレディクタミスデコードユニッ
ト26は、予測された次のフェッチアドレス(下付文字PA)を選択する。予測
された次のフェッチアドレスは、分岐命令がテイクンと予測されるならば分岐タ
ーゲットアドレスであり、または、分岐命令がノットテイクンと予測されるなら
ばシーケンシャルアドレスである。プレディクタミスデコードユニット26は予
測されたアドレスをラインプレディクタ12に与え、ラインプレディクタ12は
、PC CAM70において予測されたアドレスをカムし(クロックサイクルC
LKN+2およびCLKN+3)、図19のタイミング図と同様に、新しく作成
されたラインプレディクタエントリの次のインデックスとしてヒットしたエント
リから対応するLPインデックスを記録する。予測されたアドレスがミスである
ならば、割当てられたエントリのインデックスが記憶される。新しく作成された
ラインプレディクタエントリの次のフェッチアドレスが予測されたアドレスに設
定され、次の代替フェッチアドレスが、シーケンシャルアドレスおよび分岐ター
ゲットアドレスのどちらか予測されないほうに設定される。次の代替インデック
スはヌル(または無効)に設定される。ライン0(生成されたラインプレディク
タエントリに割当てられたエントリ)がその後に更新される(クロックサイクル
CLKN+5)。
【0119】 同様のタイミング図が間接分岐の場合に当てはまり得るが、ただし、分岐命令
のための予測を得るために分岐プレディクタ18Aにアクセスする代わりに、予
測されたアドレスを得るために間接分岐ターゲットキャッシュ18Bにアクセス
する。リターン命令については、同様のタイミング図が当てはまり得るが、ただ
し、リターンスタック18Cの最上部を予測されたアドレスとして用いる。
【0120】 図20は、予測されたフェッチアドレスのためのラインプレディクタエントリ
のトレーニングを示す。しかしながら、条件付分岐が依存する条件が、予測され
たのと異なった分岐の結果をもたらすならば、条件付分岐は代替アドレスを選択
し得る。しかしながら、次の代替インデックスがヌル(または無効)であり、条
件付分岐のための分岐予測が変化するならば、次のインデックスは未知である。
【0121】 図21は、テイクンとして初期化された条件付分岐命令のトレーニングを示す
。ノットテイクンへの初期化は同様であり得るが、ただし、シーケンシャルアド
レスおよび次のインデックスがクロックサイクルCLKN−CLKN+1の間に
選択され、分岐ターゲットアドレスのインデックスがクロックサイクルCLKM
−CLKM+7において見出される。クロックサイクルCLK1−CLK3およ
びCLKN−CLKN+5は、図20の上記記載と同様である(予測されたアド
レスは、分岐プレディクタ18Aからのテイクン予測に応答して、分岐ターゲッ
トアドレス、下付文字Tgtである)。
【0122】 その後、クロックサイクルCLKMの間に、ライン0(条件付分岐命令で終了
する)がフェッチされる(クロックサイクルCLKM)。矢印182によって示
されるように、ライン0の次のインデックスは、条件付分岐命令の分岐ターゲッ
トアドレスに対応するラインを選択し続ける。並列して、上に図11に示したよ
うに、条件付分岐命令のアドレスが生成され、分岐プレディクタ18Aがアクセ
スされる。この例では、予測は今やノットテイクンに変わってしまっている(条
件付分岐命令の実行による)。さらに、次の代替インデックスはヌルであるので
、ラインプレディクタ12は、次の代替フェッチアドレスをPC CAM70に
対してカムする(クロックサイクルCLKM+4およびCLKM+5)。この例
では、シーケンシャルアドレスがヒットである。制御回路74は、ライン0の次
のフェッチアドレスフィールドおよび次の代替フェッチアドレスフィールドをス
ワップし、次の代替インデックスフィールドに以前の次のインデックスフィール
ド(分岐ターゲットアドレスのラインプレディクタエントリを特定する)を入れ
、次のインデックスフィールドをシーケンシャルアドレスに対応するインデック
スに設定する。制御回路74は、クロックサイクルCLKM+7において、更新
された次のエントリ情報でインデックステーブル72中のライン0を更新する。
したがって、シーケンシャルパスおよびターゲットパスの両方がライン0にトレ
ーニングされたことになる。その後、次のアドレスおよび次の代替アドレス(お
よびインデックス)が分岐プレディクタ18Aに従ってスワップされ得るが(た
とえば図11)、プレディクタミスデコードユニット26は活性化されなくても
よい。
【0123】 プレディクタミスデコードユニットブロック図 ここで図22を参照し、プレディクタミスデコードユニット26のある実施例
のブロック図が示される。他の実施例が可能であり企図される。図22の実施例
において、プレディクタミスデコードユニット26は、レジスタ190と、デコ
ーダ192と、ラインプレディクタエントリレジスタ194と、終了制御回路1
96とを含む。レジスタ190は、整列ユニット16から命令バイトおよび対応
するフェッチアドレスを受取るよう結合され、かつデコーダ192および終了制
御回路196に結合される。デコーダ192は、ラインプレディクタエントリレ
ジスタ194に、終了制御回路192に、およびマップユニット30に命令をデ
ィスパッチするように結合される。ラインプレディクタエントリレジスタ194
は、ラインプレディクタ12に結合される。終了制御回路196は、分岐プレデ
ィクタ18A〜18Cから分岐予測情報を受取るよう結合され、かつ分岐アドレ
スをフェッチPC生成ユニット18Dに、CAMアドレスをラインプレディクタ
12に与えるよう結合される。合わせて、分岐予測アドレス、CAMアドレス、
およびラインエントリ(ならびに各々についての制御信号、図示せず)は、図3
に示すラインプレディクタ更新バスを含み得る。
【0124】 一般的には、デコーダ192は、上記図16〜図18に示す場合の1つに応答
して、整列ユニット16から与えられる命令バイトをデコードする。デコーダ1
92は、並列にいくつかのバイト(たとえば、ある実施例では1クロックサイク
ル当り4バイト)をデコードして命令を検出し、ラインプレディクタエントリを
生成し得る。プレディクタミスデコードユニット26に与えられる命令バイトの
最初のバイトが、命令の最初のバイトであり(なぜなら、ラインプレディクタエ
ントリは完全な命令として始まり終了するからである)、したがって、デコーダ
192は、最初の命令の終わりを位置付け、かつ、最初の命令に対応する命令ポ
インタを決定し、最初の命令が終了条件(たとえば、分岐、マイクロコード、な
ど)であるかどうかを検出する。同様に、第2の命令が特定され処理される、な
どである。デコーダ192は、たとえば、4個の命令バイトの各群をデコードす
るために3段階のパイプラインを採用し得る。パイプラインを出ると、4個のバ
イトの群はデコードされ、対応する命令情報が決定されている。
【0125】 命令が特定されると、これらの命令へのポインタが、エントリの命令ポインタ
フィールド102〜108に記憶される。デコーダ192は、ラインプレディク
タエントリレジスタ194にラインプレディクタエントリを蓄積する。さらに、
デコーダ192は、命令が特定されデコードされると、それらをマップユニット
30にディスパッチし得る。
【0126】 ラインについての終了条件を検出することに応答して、デコーダ192は、終
了制御回路196に終了のタイプについて信号を与える。さらに、デコーダ19
2は、終了命令タイプを示すように最終命令タイプフィールド120を設定する
。命令がMROM命令であるならば、デコーダ192は、命令および更新された
MROMエントリポイントフィールド132のためのエントリポイントを生成す
る。分岐変位フィールド124および継続フィールド126も適切に設定される
【0127】 終了条件に応答して、終了制御回路196は、(もし当てはまるならば)分岐
命令のアドレスを生成し、分岐プレディクタにアクセスする。分岐アドレスに応
答して受取られた分岐予測情報に応答して、終了制御回路196は、シーケンシ
ャルアドレスまたは分岐ターゲットアドレスの1つとしてCAMアドレスを与え
る。非分岐命令で終了するラインについては、終了制御回路196は、CAMア
ドレスとしてシーケンシャルアドレスを与える。ラインプレディクタ12は、次
のインデックスフィールドを生成するためにCAMアドレスのサーチを行う。分
岐プレディクタアクセス(当てはまるならば、または他の態様ではシーケンシャ
ルアドレス)に基づいて、終了制御回路196は、ラインプレディクタエントリ
レジスタ194中の次のフェッチアドレスフィールド112および次の代替フェ
ッチアドレスフィールド114(ならびに分岐予測フィールド122)を初期化
する。次のインデックスは、エントリがラインプレディクタ12に更新されると
、制御回路74によって与えられるか、または、ラインプレディクタエントリレ
ジスタ194に記憶するために終了制御回路196に与えられ得る。
【0128】 コンピュータシステム ここで図23を参照し、バスブリッジ202を介して種々のシステムコンポー
ネントに結合されるプロセッサ10を含むコンピュータシステム200のある実
施例のブロック図が示される。他の実施例が可能であり企図される。図示のシス
テムでは、主メモリ204が、メモリバス206によりバスブリッジ202に結
合され、グラフィックスコントローラ208が、AGPバス210によりバスブ
リッジ202に結合される。最後に、複数個PCIデバイス212A〜212B
が、PCIバス214によりバスブリッジ202に結合される。2次バスブリッ
ジ216がさらに設けられ、EISA/ISAバス220により1つ以上のEI
SAまたはISAデバイス218への電気的インターフェイスを可能としてもよ
い。プロセッサ10は、CPUバス224によりバスブリッジ202に、および
オプションのL2キャッシュ228に結合される。合わせて、CPUバス224
およびL2キャッシュ228へのインターフェイスは、外部インターフェイス5
2を含んでもよい。
【0129】 バスブリッジ202は、プロセッサ10と、主メモリ204と、グラフィック
スコントローラ208と、PCIバス214につながれるデバイスとの間のイン
ターフェイスを設ける。操作が、バスブリッジ202に接続されるデバイスの1
つから受取られると、バスブリッジ202は、操作のターゲット(たとえば、特
定のデバイス、または、PCIバス214の場合には、ターゲットはPCIバス
214上にある)を特定する。バスブリッジ202は、操作をターゲットとされ
たデバイスに経路付ける。バスブリッジ202は、一般的に、操作を、ソースデ
バイスまたはバスによって使用されるプロトコルからターゲットデバイスまたは
バスによって使用されるプロトコルに変換する。
【0130】 PCIバス214のためにISA/EISAバスへのインターフェイスを設け
ることに加えて、2次バスブリッジ216は、所望に応じてさらなる機能をさら
に組込んでもよい。2次バスブリッジ216の外部のまたはこれと統合される、
入力/出力コントローラ(図示せず)が、所望に応じて、キーボードおよびマウ
ス222のためのならびにさまざまなシリアルポートおよびパラレルポートのた
めの動作上のサポートを与えるために、コンピュータシステム200内に含めら
れてもよい。外部キャッシュユニット(図示せず)が、他の実施例では、プロセ
ッサ10とバスブリッジ202との間のCPUバス224にさらに結合されても
よい。代替的に、外部キャッシュは、バスブリッジ202に結合されてもよく、
外部キャッシュのためのキャッシュ制御論理が、バスブリッジ202に統合され
てもよい。L2キャッシュ228がさらに、プロセッサ10へのバックサイド構
成において示される。なお、L2キャッシュ228は、プロセッサ10から分離
されてもよく、プロセッサ10とのカートリッジ(たとえばスロット1またはス
ロットA)に統合されても、または、半導体基板上でプロセッサ10と統合され
てもよい。
【0131】 主メモリ204は、アプリケーションプログラムが記憶され、プロセッサ10
が主として実行するメモリである。好適な主メモリ204は、DRAM(ダイナ
ミックランダムアクセスメモリ)を含む。たとえば、SDRAM(シンクロナス
DRAM)またはランバスDRAM(RDRAM)(R)の複数個のバンクが好
適であり得る。
【0132】 PCIデバイス212A〜212Bは、たとえば、ネットワークインターフェ
イスカード、ビデオアクセラレータ、オーディオカード、ハードディスクドライ
ブもしくはフロッピー(R)ディスクドライブまたはドライブコントローラ、S
CSI(スモールコンピュータシステムインターフェイス)アダプタおよびテレ
フォニカードなどの種々の周辺装置を例示するものである。同様に、ISAデバ
イス218は、モデム、サウンドカード、およびGBIBまたはフィールドバス
インターフェイスカードなどの種々のデータ収集カードなどのさまざまなタイプ
の周辺装置を例示するものである。
【0133】 グラフィックスコントローラ208は、ディスプレイ226上のテキストおよ
び画像のレンダリングを制御するために設けられる。グラフィックスコントロー
ラ208は、主メモリ204におよびから効果的にシフト可能である3次元デー
タ構造をレンダリングするために、当該技術に一般的に公知の典型的なグラフィ
ックスアクセラレータを採用し得る。したがって、グラフィックスコントローラ
208は、バスブリッジ202内のターゲットインターフェイスへのアクセスを
要求し受けることにより主メモリ204へのアクセスを獲得することができると
いう点で、AGPバス210のマスタであり得る。専用グラフィックスバスが、
主メモリ204からのデータの高速取出を可能とする。ある種の動作については
、グラフィックスコントローラ208は、AGPバス210でのPCIプロトコ
ルトランザクションを生成するようさらに構成されてもよい。バスブリッジ20
2のAGPインターフェイスは、したがって、AGPプロトコルトランザクショ
ンならびにPCIプロトコルターゲットトランザクションおよびイニシエータト
ランザクションの両方をサポートするための機能を含み得る。ディスプレイ22
6は、画像またはテキストを表わすことのできる任意の電子ディスプレイである
。好適なディスプレイ226は、陰極線管(「CRT」)、液晶ディスプレイ(
「LCD」)、などを含む。
【0134】 なお、AGPバス、PCIバス、およびISAバスまたはEISAバスが、上
記説明において例として用いられたが、所望に応じていかなるバスアーキテクチ
ャと置き換えられてもよい。さらになお、コンピュータシステム200は、さら
なるプロセッサ(たとえば、コンピュータシステム200のオプションのコンポ
ーネントとして示されるプロセッサ10a)を含むマルチプロセッシングコンピ
ュータシステムであってもよい。プロセッサ10aはプロセッサ10と同様であ
り得る。より特定的には、プロセッサ10aは、プロセッサ10の同一のコピー
であり得る。プロセッサ10aは、独立バス(図23に示す)を介してバスブリ
ッジ202に接続されてもよく、または、プロセッサ10とCPUバス224を
共有してもよい。さらに、プロセッサ10aは、L2キャッシュ228と同様の
オプションのL2キャッシュ228aに結合されてもよい。
【0135】 ここで図24を参照し、コンピュータシステム300の別の実施例が示される
。他の実施例が可能であり企図される。図24の実施例において、コンピュータ
システム300は、いくつかの処理ノード312A、312B、312Cおよび
312Dを含む。各処理ノードは、それぞれの処理ノード312A〜312Dの
各々の内に含まれるメモリコントローラ316A〜316Dを介してそれぞれの
メモリ314A〜314Dに結合される。さらに、処理ノード312A〜312
Dは、処理ノード312A〜312D間の通信を行なうために用いられるインタ
ーフェイス論理を含む。たとえば、処理ノード312Aは、処理ノード312B
と通信するためのインターフェイス論理318Aと、処理ノード312Cと通信
するためのインターフェイス論理318Bと、さらに別の処理ノード(図示せず
)と通信するための第3のインターフェイス論理318Cとを含む。同様に、処
理ノード312Bは、インターフェイス論理318D、318Eおよび318F
を含み、処理ノード312Cは、インターフェイス論理318G、318Hおよ
び318Iを含み、処理ノード312Dは、インターフェイス論理318J、3
18Kおよび318Lを含む。処理ノード312Dは、インターフェイス論理3
18Lを介して複数個の入力/出力装置(たとえば、デイジーチェーン構成のデ
バイス320A〜320B)と通信するよう結合される。他の処理ノードは、同
様の態様で他のI/O装置と通信し得る。
【0136】 処理ノード312A〜312Dは、処理ノード間の通信のためにパケットベー
スのリンクを実現する。この実施例では、リンクは、単方向ラインの組として実
現される(たとえばライン324Aは処理ノード312Aから処理ノード312
Bへパケットを伝送するために用いられ、ライン324Bは処理ノード312B
から処理ノード312Aにパケットを伝送するために用いられる)。ライン32
4C〜324Hの他の組は、図24に示す他の処理ノード間でパケットを伝送す
るために用いられる。一般的には、ライン324の各組は、1つ以上のデータ線
と、データ線に対応する1つ以上のクロック線と、運ばれるパケットのタイプを
示す1つ以上の制御線とを含み得る。リンクは、処理ノード間の通信のためには
キャッシュコヒーレントの態様で、または、処理ノードとI/O装置(またはP
ICバスまたはISAバスなどの従来の構成のI/Oバスへのバスブリッジ)と
の間の通信のためにはコヒーレントでない態様で動作し得る。さらに、リンクは
、図示のようにI/O装置間のデイジーチェーン構造を用いてコヒーレントでな
い態様で動作してもよい。なお、ある処理ノードから別のものへ伝送されるべき
パケットは、1つ以上の中間ノードを通過してもよい。たとえば、処理ノード3
12Aによって処理ノード312Dに伝送されるパケットは、図24に示すよう
に、処理ノード312Bまたは処理ノード312Cのいずれかを通過してもよい
。いかなる好適なルーチングアルゴリズムが使用されてもよい。コンピュータシ
ステム300の他の実施例は、図24に示す実施例よりも多いまたはより少ない
処理ノードを含んでもよい。
【0137】 一般的に、パケットは、ライン324でノード間を1つ以上のビットタイムと
して伝送され得る。ビットタイムは、対応するクロック線上のクロック信号の立
上がりまたは立下がりエッジであり得る。パケットは、トランザクションを開始
するためのコマンドパケットと、キャッシュコヒーレンシを維持するためのプロ
ーブパケットと、プローブおよびコマンドに応答することから応答パケットとを
含み得る。
【0138】 処理ノード312A〜312Dは、メモリコントローラおよびインターフェイ
ス論理に加えて、1つ以上のプロセッサを含み得る。広くいって、処理ノードは
、少なくとも1つのプロセッサを含み、任意で、所望に応じてメモリおよび他の
論理と通信するためのメモリコントローラを含んでもよい。より特定的には、処
理ノード312A〜312Dは、プロセッサ10を含んでもよい。外部インター
フェイスユニット46は、ノード内にインターフェイス論理318を、およびメ
モリコントローラ316を含んでもよい。
【0139】 メモリ314A〜314Dは、いかなる好適なメモリ装置を含んでもよい。た
とえば、メモリ314A〜314Dは、1つ以上のRAMBUS DRAM(R
DRAM)(R)、シンクロナスDRAM(SDRAM)、スタティックRAM
などを含み得る。コンピュータシステム300のアドレス空間は、メモリ314
A〜314D間で分割される。各処理ノード312A〜312Dは、どのアドレ
スがどのメモリ314A〜314Dに対応付けられるか、したがって、特定のア
ドレスのためのメモリ要求がどの処理ノード312A〜312Dに経路付けられ
るべきかを決定するために用いられるメモリマップを含み得る。ある実施例では
、コンピュータシステム300内でのアドレスのためのコヒーレンシポイントは
、アドレスに対応するバイトを記憶するメモリに結合されるメモリコントローラ
316A〜316Dである。換言すれば、メモリコントローラ316A〜316
Dは、対応するメモリ314A〜314Dへの各メモリアクセスがキャッシュコ
ヒーレントな態様で生じることを確実にする役割を担う。メモリコントローラ3
16A〜316Dは、メモリ314A〜314Dにインターフェイスするための
制御回路を含み得る。さらに、メモリコントローラ316A〜316Dは、メモ
リ要求を待ち行列に入れるための要求キューを含み得る。
【0140】 一般的に、インターフェイス論理318A〜318Lは、リンクからパケット
を受取るための、および、リンクで伝送されるべきパケットをバッファするため
の種々のバッファを含み得る。コンピュータシステム300は、パケットを伝送
するためのいかなる好適なフロー制御メカニズムを採用してもよい。たとえば、
ある実施例では、各インターフェイス論理318は、そのインターフェイス論理
が接続されるリンクの他方端のレシーバ内にバッファの各タイプの数のカウント
を記憶する。受信インターフェイス論理がパケットを記憶するための空きバッフ
ァを有しなければ、インターフェイス論理はパケットを伝送しない。パケットを
前方にルーチングすることにより受信バッファが解放されると、受信インターフ
ェイス論理は、送信インターフェイス論理にメッセージを伝送し、バッファが解
放されたことを示す。そのようなメカニズムは「クーポンベースの」システムと
呼ばれ得る。
【0141】 I/O装置320A〜320Bは、いかなる好適なI/O装置であってもよい
。たとえば、I/O装置320A〜320Bは、ネットワークインターフェイス
カード、ビデオアクセラレータ、オーディオカード、ハードディスクドライブも
しくはフロッピー(R)ディスクドライブまたはドライブコントローラ、SCS
I(スモールコンピュータシステムインターフェイス)アダプタおよびテレフォ
ニカード、モデム、サウンドカード、ならびにGPIBまたはフィールドバスイ
ンターフェイスカードなどの種々のデータ収集カードを含み得る。
【0142】 多くの変形および修正が、上記開示を完全に理解すると当業者には明らかとな
るであろう。前掲の特許請求の範囲は、すべてのそのような変形および修正を含
むものと解釈されることが意図される。
【0143】
【産業上の適用】
この発明は、一般的には、プロセッサおよびコンピュータシステムに適用可能
であり得る。
【図面の簡単な説明】
【図1】 プロセッサのある実施例のブロック図である。
【図2】 図1に示すプロセッサのある実施例によって採用され得るパイプ
ラインの図である。
【図3】 分岐予測装置、フェッチPC生成ユニット、ラインプレディクタ
、命令TLB、I−キャッシュ、およびプレディクタミスデコードユニットのあ
る実施例のブロック図である。
【図4】 ラインプレディクタのある実施例のブロック図である。
【図5】 図4に示すPC CAMのエントリのある実施例の図である。
【図6】 図4に示すインデックステーブルのエントリのある実施例の図で
ある。
【図7】 図6に示す次のエントリフィールドのある実施例の図である。
【図8】 図6に示す制御情報フィールドのある実施例の図である。
【図9】 ラインプレディクタ内のエントリを生成するための終了条件のあ
る実施例の表の図である。
【図10】 ラインプレディクタによってなされる予測とマッチする分岐予
測のためのラインプレディクタのある実施例の動作のタイミング図である。
【図11】 ラインプレディクタによってなされる予測とマッチしない分岐
予測のためのラインプレディクタのある実施例の動作のタイミング図である。
【図12】 ラインプレディクタによってなされる予測とマッチしない間接
ターゲット分岐予測のためのラインプレディクタのある実施例の動作のタイミン
グ図である。
【図13】 ラインプレディクタによってなされる予測とマッチするリター
ンアドレス予測のためのラインプレディクタのある実施例の動作のタイミング図
である。
【図14】 ラインプレディクタによってなされる予測とマッチしないリタ
ーンアドレス予測のためのラインプレディクタのある実施例の動作のタイミング
図である。
【図15】 ページ境界にまたがるフェッチのためのラインプレディクタの
ある実施例の動作のタイミング図である。
【図16】 ラインプレディクタミスについてのラインプレディクタおよび
プレディクタミスデコードユニットのある実施例の動作のタイミング図である。
【図17】 ラインプレディクタにおいてヌルの次のインデックスについて
のラインプレディクタおよびプレディクタミスデコードユニットのある実施例の
動作のタイミング図である。
【図18】 正しくない整列情報を有するラインプレディクタエントリにつ
いてのラインプレディクタおよびプレディクタミスデコードユニットのある実施
例の動作のタイミング図である。
【図19】 MROM命令または非分岐命令によって終了するエントリを生
成するためのラインプレディクタおよびプレディクタミスデコードユニットのあ
る実施例の動作のタイミング図である。
【図20】 分岐命令によって終了するエントリを生成するためのラインプ
レディクタおよびプレディクタミスデコードユニットのある実施例の動作のタイ
ミング図である。
【図21】 次のフェッチPCおよびインデックスの両方について分岐命令
によって終了するラインプレディクタエントリをトレーニングするためのライン
プレディクタおよびプレディクタミスデコードユニットのある実施例の動作のタ
イミング図である。
【図22】 図1および図3に示すプレディクタミスデコードユニットのあ
る実施例のブロック図である。
【図23】 図1に示すプロセッサを含む第1の例示のコンピュータシステ
ムのブロック図である。
【図24】 図1に示すプロセッサを含む第2の例示のコンピュータシステ
ムのブロック図である。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成13年11月14日(2001.11.14)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0005
【補正方法】変更
【補正の内容】
【0005】 命令がキャッシュ内に記憶されるときにプリデコーダが各命令バイトに関する
情報をその命令バイトに付加するさまざまなプリデコード方式が提案されている
。ここで使用される「プリデコーディング」という言葉は、対応する命令バイト
をプロセッサの命令キャッシュに記憶するのに先立って命令デコード情報を生成
することをいう。生成された情報は、命令キャッシュに命令バイトとともに記憶
され得る。たとえば、命令バイトは、命令の始まりまたは終わりであるように表
示され得る。対応する命令バイトがフェッチされるときプリデコード情報をスキ
ャンすることにより、命令は、命令バイトを実際にデコードすることを試みるこ
となしに位置付けされ得る。プリデコード情報は複数の可変長命令を同時に位置
付けるために必要とされる論理の量を減じするために使用され得る。残念ながら
、この方式も高クロック周波数では不十分なものとなってきている。高周波数で
1クロックサイクル中に複数の命令を位置付けるための方法が必要とされる。 US−A−5,586,276は、命令のシーケンシャルなストリームにおけ
る可変長の命令の境界を示すためのエンドビットマーカーを含むスーパースカラ
コンピュータ開示し、エンドマーカーは、キャッシュメモリ内に記憶され、シー
ケンシャル命令の並列処理を促進する。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0006
【補正方法】変更
【補正の内容】
【0006】 上に概略した課題は、ここに記載されるラインプレディクタによって大部分解
決される。ラインプレディクタは、命令のための整列情報をキャッシュする。各
フェッチアドレスに応答して、ラインプレディクタは、フェッチアドレスで始ま
る命令、およびその命令の後の1つ以上のさらなる命令のための整列情報を与え
る。整列情報は、たとえば、命令ポインタであってもよく、その各々が、フェッ
チアドレスに応答してフェッチされた複数個の命令バイト内の対応する命令を直
接位置づける。命令はポインタによって位置づけられるので、命令のデコードユ
ニットへの整列は、低レイテンシ高周波動作であり得る。1バイトごとに記憶さ
れるプリデコードデータをスキャンする必要がなく、整列情報は、フェッチアド
レスに基づいて命令ベースで記憶される。この態様では、命令は、フェッチされ
た命令バイトからより簡単に抽出され得る。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0008
【補正方法】変更
【補正の内容】
【0008】 この発明のある局面に従えば、プロセッサが提供され、プロセッサは、フェッ
チアドレスを受取るよう結合される命令キャッシュと、前記フェッチアドレスを
受取るよう結合されるラインプレディクタとを含み、前記ラインプレディクタは
、複数個のエントリを含む第1のメモリを含み、各エントリは、複数個の命令ポ
インタを記憶し、前記ラインプレディクタは、前記複数個のエントリの第1のエ
ントリを選択するよう構成され、前記第1のエントリは前記フェッチアドレスに
対応し、前記第1のエントリ内の第1の複数個の命令ポインタの各々は、有効で
あれば、フェッチアドレスに応答して前記命令キャッシュの最大で2つの命令キ
ャッシュラインからフェッチされる複数個の命令バイト内の命令を直接位置づけ
る。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0009
【補正方法】変更
【補正の内容】
【0009】 この発明の第2の局面に従えば、フェッチアドレスを生成するステップと、ラ
インプレディクタのメモリのエントリから第1の複数個の命令ポインタを選択す
るステップとを含む方法が提供され、前記第1の複数個の命令ポインタは前記フ
ェッチアドレスに対応し、前記第1の複数個の命令ポインタの各々は、有効であ
れば、フェッチアドレスに応答して命令キャッシュの最大で2つのキャッシュラ
インからフェッチされる複数個の命令バイト内の命令を直接位置付ける。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ケラー,ジェイムス・ビィ アメリカ合衆国、94303 カリフォルニア 州、パロ・アルト、アイリス・ウェイ、 210 (72)発明者 シャルマ,プニート シンガポール、448912 シンガポール、シ グラップ・ロード、5、マンダリン・ガー デンズ・フル・サービス・アパートメン ト、ユニット・ナンバー・19−38 (72)発明者 シャケル,キース・アール アメリカ合衆国、95131 カリフォルニア 州、サン・ノゼ、バラード・コート、1268 (72)発明者 マテュス,フランシス・エム アメリカ合衆国、94087 カリフォルニア 州、サニィベイル、エンダビー・ウェイ、 1485 Fターム(参考) 5B013 AA01 AA07 AA16 BB01 BB12 BB14 DD00 DD04 5B033 AA01 AA14 CA19 DB06 DB08 DC08

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 フェッチアドレスを受取るよう結合される命令キャッシュ(
    14)と、 前記フェッチアドレスを受取るよう結合されるラインプレディクタ(12)と
    を含み、前記ラインプレディクタ(12)は、複数個のエントリを含む第1のメ
    モリ(72)を含み、各エントリは、複数個の命令ポインタ(102、104、
    106、108)を記憶し、前記ラインプレディクタ(12)は、前記複数個の
    エントリの第1のエントリを選択するよう構成され、前記第1のエントリは前記
    フェッチアドレスに対応し、前記第1のエントリ内の第1の複数個の命令ポイン
    タ(102、104、106、108)の各々は、有効であれば、前記フェッチ
    アドレスに応答して前記命令キャッシュ(14)の最大で2つのキャッシュライ
    ンからフェッチされる複数個の命令バイト内の命令を直接位置付ける、プロセッ
    サ(10)。
  2. 【請求項2】 前記第1のエントリはさらに、前記第1のメモリ(72)内
    の前記複数個のエントリの第2のエントリを特定する次のエントリ表示(100
    )を記憶するよう構成され、前記ラインプレディクタ(12)は、前記次のエン
    トリ表示(100)に応答してそこに記憶される第2の複数個の命令ポインタ(
    102、104、106、108)を与えるために、前記第2のエントリをその
    後に選択するよう構成される、請求項1に記載のプロセッサ(10)。
  3. 【請求項3】 前記ラインプレディクタ(12)はさらに、前記フェッチア
    ドレスを受取るよう結合されかつ前記第1のメモリ(72)にさらに結合される
    第2のメモリ(70)を含み、前記第2のメモリ(70)は、フェッチアドレス
    およびインデックスを前記第1のメモリ(72)に記憶するよう構成される第2
    の複数個のエントリを含み、前記第2のメモリ(70)は、前記フェッチアドレ
    スを前記第2の複数個のエントリに記憶されるフェッチアドレスと比較し、前記
    第2の複数個のエントリの第2のエントリを、前記フェッチアドレスが前記第2
    のエントリに記憶される前記フェッチアドレスとマッチすることに応答して、選
    択するよう構成され、前記第2のメモリ(70)は、前記第1のエントリを選択
    するために、前記第2のエントリに記憶された前記インデックスを前記第1のメ
    モリ(72)に与えるよう構成される、請求項2に記載のプロセッサ(10)。
  4. 【請求項4】 前記ラインプレディクタ(12)は、前記第1のエントリ内
    の前記次のエントリ表示(100)が有効であれば前記第2のメモリ(70)へ
    のアクセスを禁止するよう構成される、請求項3に記載のプロセッサ(10)。
  5. 【請求項5】 前記次のエントリ表示(100)はさらに、前記第1のメモ
    リ(72)内の前記複数個のエントリの第3のエントリを特定し、前記第1の複
    数個命令のポインタ(102、104、106、108)によって特定される最
    終命令は分岐命令であり、前記第3のエントリは、前記分岐命令の予測されない
    パスにおける命令に対応する、請求項2に記載のプロセッサ(10)。
  6. 【請求項6】 前記第1のエントリはさらに、前記第1の複数個の命令ポイ
    ンタ(102、104、106、108)によって位置付けられる前記命令に対
    応する制御情報(110)を記憶するよう構成され、前記制御情報(110)は
    、前記第1の複数個の命令ポインタによって位置付けられる最終命令の少なくと
    も1バイトが前記複数個の命令バイトと異なったページ上に記憶されることの表
    示(126)を含む、請求項1に記載のプロセッサ(10)。
  7. 【請求項7】 前記第1のエントリはさらに、前記第1の複数個の命令ポイ
    ンタ(102、104、106、108)によって位置付けられる前記命令に対
    応する制御情報(110)を記憶するよう構成され、前記制御情報(110)は
    、前記第1の複数個の命令ポインタ(102、104、106、108)によっ
    て特定される最終命令のタイプを含む、請求項1に記載のプロセッサ(10)。
  8. 【請求項8】 フェッチアドレスを生成するステップと、 ラインプレディクタ(12)から第1の複数個の命令ポインタ(102、10
    4、106、108)を選択するステップとを含み、前記第1の複数個の命令ポ
    インタ(102、104、106、108)は前記フェッチアドレスに対応し、
    前記第1の複数個の命令ポインタ(102、104、106、108)の各々は
    、有効であれば、前記フェッチアドレスに応答して命令キャッシュ(14)の最
    大2つのキャッシュラインからフェッチされる複数個の命令バイト内の命令を直
    接位置付ける、方法。
  9. 【請求項9】 前記ラインプレディクタ(12)は、複数個のエントリを含
    む第1のメモリ(72)を含み、前記複数個のエントリの各々は、複数個の命令
    ポインタ(102、104、106、108)を記憶するよう構成され、前記第
    1のエントリはさらに、次のエントリ表示(100)を記憶するよう構成され、
    前記選択するステップは、前記複数個のエントリの第1のエントリを選択するス
    テップを含み、前記第1のエントリは前記第1の複数個の命令ポインタ(102
    、104、106、108)を記憶し、前記方法はさらに、前記次のエントリ表
    示(100)に応答して前記複数個のエントリの第2のエントリを選択するステ
    ップを含む、請求項8に記載の方法。
  10. 【請求項10】 フェッチアドレスを受取りかつこれに応答して複数個の命
    令ポインタ(102、104、106、108)を与えるよう結合されるライン
    プレディクタ(12)を含むプロセッサ(10)。
JP2001530695A 1999-10-14 2000-05-09 整列情報をキャッシュするための装置および方法 Withdrawn JP2003511789A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US41809799A 1999-10-14 1999-10-14
US09/418,097 1999-10-14
PCT/US2000/012617 WO2001027749A1 (en) 1999-10-14 2000-05-09 Apparatus and method for caching alignment information

Publications (1)

Publication Number Publication Date
JP2003511789A true JP2003511789A (ja) 2003-03-25

Family

ID=23656699

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001530695A Withdrawn JP2003511789A (ja) 1999-10-14 2000-05-09 整列情報をキャッシュするための装置および方法

Country Status (5)

Country Link
US (1) US20040168043A1 (ja)
EP (1) EP1224539A1 (ja)
JP (1) JP2003511789A (ja)
KR (1) KR20020039689A (ja)
WO (1) WO2001027749A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009503700A (ja) * 2005-07-29 2009-01-29 クゥアルコム・インコーポレイテッド 可変長命令の固定数を持つ命令キャッシュ

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7734898B2 (en) * 2004-09-17 2010-06-08 Freescale Semiconductor, Inc. System and method for specifying an immediate value in an instruction
KR100688503B1 (ko) * 2004-11-02 2007-03-02 삼성전자주식회사 브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법
US8539397B2 (en) * 2009-06-11 2013-09-17 Advanced Micro Devices, Inc. Superscalar register-renaming for a stack-addressed architecture
US8612731B2 (en) 2009-11-06 2013-12-17 International Business Machines Corporation Branch target buffer for emulation environments
US9460018B2 (en) 2012-05-09 2016-10-04 Qualcomm Incorporated Method and apparatus for tracking extra data permissions in an instruction cache
US8819342B2 (en) 2012-09-26 2014-08-26 Qualcomm Incorporated Methods and apparatus for managing page crossing instructions with different cacheability
US9286073B2 (en) * 2014-01-07 2016-03-15 Samsung Electronics Co., Ltd. Read-after-write hazard predictor employing confidence and sampling
US20160124859A1 (en) * 2014-10-30 2016-05-05 Samsung Electronics Co., Ltd. Computing system with tiered fetch mechanism and method of operation thereof
CN110737474B (zh) * 2019-09-29 2023-03-14 上海高性能集成电路设计中心 一种指令地址压缩存储方法
US11532348B2 (en) 2020-12-02 2022-12-20 Micron Technology, Inc. Power management across multiple packages of memory dies
US11520497B2 (en) 2020-12-02 2022-12-06 Micron Technology, Inc. Peak power management in a memory device

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4310928A (en) * 1979-07-30 1982-01-19 American Hospital Supply Corporation Surgeon's glove and talc free process for forming same
US4442133A (en) * 1982-02-22 1984-04-10 Greco Ralph S Antibiotic bonding of vascular prostheses and other implants
US4499154A (en) * 1982-09-03 1985-02-12 Howard L. Podell Dipped rubber article
US4576476A (en) * 1983-04-29 1986-03-18 Texaco, Inc. Method and system for accurately measuring speed of a ship relative to a body of water
US4675347A (en) * 1983-10-29 1987-06-23 Unitika Ltd. Antimicrobial latex composition
DE3542516A1 (de) * 1985-12-02 1987-06-04 Henkel Kgaa Desinfektionsmittel
US4853978A (en) * 1987-07-24 1989-08-08 Surgikos, Inc. Antimicrobial medical glove
US5019096A (en) * 1988-02-11 1991-05-28 Trustees Of Columbia University In The City Of New York Infection-resistant compositions, medical devices and surfaces and methods for preparing and using same
US5133090A (en) * 1988-02-11 1992-07-28 The Trustees Of Columbia University In The City Of New York Antiviral glove
IL85934A (en) * 1988-03-30 1992-02-16 Univ Ramot Composition for desorbing bacteria containing amphipathic cations
US5261421A (en) * 1988-04-23 1993-11-16 Smith & Nephew Plc Gloves, their manufacture and use
US5888441A (en) * 1988-08-24 1999-03-30 Ansell Healthcare Products Inc. Preparation of antimicrobial articles
US5089205A (en) * 1989-09-25 1992-02-18 Becton, Dickinson And Company Process for producing medical devices having antimicrobial properties
US5284607A (en) * 1991-11-22 1994-02-08 Johnson & Johnson Medical, Inc. Process for forming powder-free medical gloves
US5335373A (en) * 1991-11-29 1994-08-09 Dresdner Jr Karl P Protective medical gloves and methods for their use
GB2263987B (en) * 1992-02-06 1996-03-06 Intel Corp End bit markers for instruction decode
AU3776793A (en) * 1992-02-27 1993-09-13 Intel Corporation Dynamic flow instruction cache memory
DE69308172D1 (de) * 1992-06-10 1997-03-27 Maxxim Med Inc Biegsamer Gummigegenstand und Verfahren zu seiner Herstellung
GB9216780D0 (en) * 1992-08-07 1992-09-23 Ici Plc Ammonium organo-phosphorus acid salts
US5395666A (en) * 1993-01-08 1995-03-07 Lrc Products Ltd. Flexible elastomeric article with enhanced lubricity
US6075081A (en) * 1997-04-23 2000-06-13 Ansell Healthcare Products Inc. Manufacture of rubber articles
CA2132783C (en) * 1993-10-18 2001-12-25 Leonard Pinchuk Lubricious silicone surface modification
US5604909A (en) * 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
US5661170A (en) * 1994-03-21 1997-08-26 Woodward Laboratories, Inc. Antimicrobial compositions and methods for using the same
DE69533724T2 (de) * 1994-03-28 2005-10-27 The Trustees Of Columbia University In The City Of New York Zusammensetzung zum inaktivieren von reizstoffen in flüssigkeiten
US5993839A (en) * 1994-05-09 1999-11-30 Phoenix Medical Technology, Inc. Antimicrobial gloves and a method of manufacture thereof
US5906823A (en) * 1994-05-09 1999-05-25 Mixon; Grover C. Antimicrobial gloves and a method of manufacture thereof
US5487896A (en) * 1994-05-12 1996-01-30 Trustees Of Columbia University In The City Of New York Antimicrobial glove comprising a rapid release matrix system for antiinfective agent delivery
US5776430A (en) * 1994-11-01 1998-07-07 Calgon Vestal, Inc. Topical antimicrobial cleanser containing chlorhexidine gluconate and alcohol
US5640526A (en) * 1994-12-21 1997-06-17 International Business Machines Corporation Superscaler instruction pipeline having boundary indentification logic for variable length instructions
US5534350A (en) * 1994-12-28 1996-07-09 Liou; Derlin Powerfree glove and its making method
US5712346A (en) * 1995-02-14 1998-01-27 Avery Dennison Corporation Acrylic emulsion coatings
NZ308819A (en) * 1995-06-07 1999-10-28 Allegiance Corp Surgeon's gloves from neoprene copolymers
WO1997000667A1 (en) * 1995-06-22 1997-01-09 Minnesota Mining And Manufacturing Company Stable hydroalcoholic compositions
US6623744B2 (en) * 1995-06-22 2003-09-23 3M Innovative Properties Company Stable hydroalcoholic compositions
US6383552B1 (en) * 1995-08-30 2002-05-07 Audra Noecker Thin-walled natural rubber latex material substantially free of sulfur and nitrosamines, and method of making same
US6051320A (en) * 1995-08-30 2000-04-18 Audra International, L.L.C. Thin-walled natural rubber latex material substantially free of sulfur and nitrosamines
US6503952B2 (en) * 1995-11-13 2003-01-07 The Trustees Of Columbia University In The City Of New York Triple antimicrobial composition
US6730380B2 (en) * 1996-02-20 2004-05-04 Safeskin Corp. Readily-donned elastomeric articles
US5792531A (en) * 1996-02-20 1998-08-11 Tactyl Technologies, Inc. Readily donned, powder free elastomeric article
US5742943A (en) * 1996-06-28 1998-04-28 Johnson & Johnson Medical, Inc. Slip-coated elastomeric flexible articles and their method of manufacture
DE19628719B4 (de) * 1996-07-17 2006-10-05 Hans-Werner Prof. Dr. Schmidt Elektronenleitende Schicht in organischen, elektrolumineszierenden Anordnungen
US5993972A (en) * 1996-08-26 1999-11-30 Tyndale Plains-Hunter, Ltd. Hydrophilic and hydrophobic polyether polyurethanes and uses therefor
AT409819B (de) * 1996-09-12 2002-11-25 Semperit Ag Holding Gegenstand aus einem flexiblen gummi und/oder kunststoff
US6306514B1 (en) * 1996-12-31 2001-10-23 Ansell Healthcare Products Inc. Slip-coated elastomeric flexible articles and their method of manufacture
US6046144A (en) * 1997-06-02 2000-04-04 R.T. Vanderbilt Co., Inc. Combination of phosphate based additives and sulfonate salts for hydraulic fluids and lubricating compositions
US6019922A (en) * 1997-10-01 2000-02-01 Johnson & Johnson Mfg Sn Bhd Powder-free medical gloves
US5994383A (en) * 1997-11-18 1999-11-30 Woodward Laboratories, Inc. Surfactant-based antimicrobial compositions and methods for using the same
US5978899A (en) * 1997-12-23 1999-11-02 Intel Corporation Apparatus and method for parallel processing and self-timed serial marking of variable length instructions
JP2967409B2 (ja) * 1998-02-17 1999-10-25 ショーワ株式会社 塩化ビニル製手袋
US6195805B1 (en) * 1998-02-27 2001-03-06 Allegiance Corporation Powder free neoprene surgical gloves
US6016570A (en) * 1998-05-11 2000-01-25 Maxxim Medical, Inc. Powderfree medical glove
US20020009561A1 (en) * 1998-08-15 2002-01-24 William Joseph Weikel Lubricated elastomeric article
US6347408B1 (en) * 1998-11-05 2002-02-19 Allegiance Corporation Powder-free gloves having a coating containing cross-linked polyurethane and silicone and method of making the same
US6656456B2 (en) * 1998-11-23 2003-12-02 The Procter & Gamble Company Skin deodorizing compositions
US6391409B1 (en) * 1999-02-12 2002-05-21 Allegiance Corporation Powder-free nitrile-coated gloves with an intermediate rubber-nitrile layer between the glove and the coating and method of making same
US6488948B1 (en) * 1999-04-30 2002-12-03 Sintal International, Inc. Anti-bacterial composition and use thereof for skin care and fabric treatment
US6198805B1 (en) * 1999-08-19 2001-03-06 General Electric Company X-ray-tube target assembly and method for making
US6358557B1 (en) * 1999-09-10 2002-03-19 Sts Biopolymers, Inc. Graft polymerization of substrate surfaces
EP1179352A1 (en) * 2000-08-08 2002-02-13 MONTERESEARCH S.r.l. Topical composition for covering a skin lesion
ATE323517T1 (de) * 2000-08-15 2006-05-15 Surmodics Inc Matrix zur aufnahme von arzneimitteln
US20020103333A1 (en) * 2000-12-06 2002-08-01 Honeycutt Travis W. Latex with decreased allergic reaction and improved physical properties
US6582719B2 (en) * 2001-02-02 2003-06-24 The Trustees Of Columbia University In The City Of New York Combinations of antiseptic and antibiotic agents that inhibit the development of resistant microorganisms
DE10297863B3 (de) * 2001-03-12 2021-08-26 Allegiance Corp. Latexzusammensetzung

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009503700A (ja) * 2005-07-29 2009-01-29 クゥアルコム・インコーポレイテッド 可変長命令の固定数を持つ命令キャッシュ
JP2012074046A (ja) * 2005-07-29 2012-04-12 Qualcomm Inc 可変長命令の固定数を持つ命令キャッシュ

Also Published As

Publication number Publication date
KR20020039689A (ko) 2002-05-27
EP1224539A1 (en) 2002-07-24
US20040168043A1 (en) 2004-08-26
WO2001027749A1 (en) 2001-04-19

Similar Documents

Publication Publication Date Title
US6502185B1 (en) Pipeline elements which verify predecode information
US6622237B1 (en) Store to load forward predictor training using delta tag
US5845101A (en) Prefetch buffer for storing instructions prior to placing the instructions in an instruction cache
US7937574B2 (en) Precise counter hardware for microcode loops
EP1244961B1 (en) Store to load forwarding predictor with untraining
US6542984B1 (en) Scheduler capable of issuing and reissuing dependency chains
US6694424B1 (en) Store load forward predictor training
US6122729A (en) Prefetch buffer which stores a pointer indicating an initial predecode position
US7685410B2 (en) Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
US5790827A (en) Method for dependency checking using a scoreboard for a pair of register sets having different precisions
EP1244962B1 (en) Scheduler capable of issuing and reissuing dependency chains
US6481251B1 (en) Store queue number assignment and tracking
US6647490B2 (en) Training line predictor for branch targets
US5983321A (en) Cache holding register for receiving instruction packets and for providing the instruction packets to a predecode unit and instruction cache
US6721877B1 (en) Branch predictor that selects between predictions based on stored prediction selector and branch predictor index generation
US6564315B1 (en) Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction
US20080127197A1 (en) Method and system for on-demand scratch register renaming
WO2000017745A1 (en) Method for calculating indirect branch targets
US6622235B1 (en) Scheduler which retries load/store hit situations
US7366885B1 (en) Method for optimizing loop control of microcoded instructions
US6363471B1 (en) Mechanism for handling 16-bit addressing in a processor
JP2003511789A (ja) 整列情報をキャッシュするための装置および方法
US6546478B1 (en) Line predictor entry with location pointers and control information for corresponding instructions in a cache line
US20070033385A1 (en) Call return stack way prediction repair

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070807