JP2003519835A - ウェイ予測がミスした時にサーチを方向付けるための、予測されないウェイからの部分的なタグを提供するキャッシュ - Google Patents

ウェイ予測がミスした時にサーチを方向付けるための、予測されないウェイからの部分的なタグを提供するキャッシュ

Info

Publication number
JP2003519835A
JP2003519835A JP2001550564A JP2001550564A JP2003519835A JP 2003519835 A JP2003519835 A JP 2003519835A JP 2001550564 A JP2001550564 A JP 2001550564A JP 2001550564 A JP2001550564 A JP 2001550564A JP 2003519835 A JP2003519835 A JP 2003519835A
Authority
JP
Japan
Prior art keywords
way
cache
address
tag
partial
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.)
Pending
Application number
JP2001550564A
Other languages
English (en)
Other versions
JP2003519835A5 (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 JP2003519835A publication Critical patent/JP2003519835A/ja
Publication of JP2003519835A5 publication Critical patent/JP2003519835A5/ja
Pending legal-status Critical Current

Links

Classifications

    • 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
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 キャッシュ(14)は予測されるウェイに応答して出力バイトを与える。さらに、予測されるウェイからタグが読取られてもよく、予測されないウェイからは部分タグのみが読取られる。タグは入力アドレスのタグ部分と比較され、部分タグは入力アドレスの対応する部分タグ部分と比較される。予測されるウェイにおけるミスが検出されると、部分タグ比較が用いられる。どの部分タグも入力アドレスの対応する部分タグ部分とマッチしないとき、そのキャッシュにおけるミスが定められる。一方、部分タグの1つまたはそれ以上が入力アドレスの対応する部分タグ部分とマッチするとき、キャッシュ(14)は対応するウェイをサーチして、入力アドレスがキャッシュ(14)においてヒットするかまたはミスするかどうかを定める。

Description

【発明の詳細な説明】
【0001】
【発明の背景】
1.技術分野 この発明はプロセッサの分野に関し、より特定的にはプロセッサ内のキャッシ
ング機構に関する。
【0002】 2.背景技術 スーパースカラプロセッサは、クロックサイクル中で複数の命令を同時に実行
し、またその設計に一致する可能な最短クロックサイクルを特定化することによ
って高性能を達成する。ここで用いられる「クロックサイクル」という語は、プ
ロセッサのパイプラインステージがその意図される機能を行なう時間間隔を示す
。クロックサイクルの最後に、その結果得られた値が次のパイプラインステージ
に移動される。クロックサイクルを定めるクロック信号に応答して、クロックさ
れた記憶装置(たとえばレジスタ、ラッチ、フロップなど)がそれらの値を捕捉
してもよい。
【0003】 有効なメモリ待ち時間を減少させるため、プロセッサは典型的にキャッシュを
含む。キャッシュは、以前にフェッチされた命令および/またはデータバイトを
記憶するために用いられる高速メモリである。キャッシュメモリは、プロセッサ
を含むコンピュータシステム内で用いられるメインメモリよりも実質的に低いメ
モリ待ち時間を提供できてもよい。
【0004】 キャッシュは「セット連想型」構造に組織化されてもよい。セット連想型構造
において、キャッシュは行(しばしば「セット」と呼ばれる)および列(しばし
ば「ウェイ」と呼ばれる)を有する二次元アレイとして組織化される。あるアド
レスに存在するバイトに対してキャッシュがサーチされるとき、キャッシュへの
「索引」としてアドレスからのいくつかのビットが用いられる。索引は二次元ア
レイ内の特定のセットを選択するため、索引に必要なアドレスビットの数は、キ
ャッシュに構成されるセットの数によって定められる。索引によってセットを選
択する作用を「索引付け」と呼ぶ。キャッシュの各ウェイは、選択されたセット
のメンバである1つのキャッシュライン記憶場所を有する(ここでキャッシュラ
インとはキャッシュにおける記憶のための単位として扱われるいくつかの連続し
たバイトであり、典型的には16−64バイトの範囲であってもよいが、キャッ
シュラインを構成するためにあらゆる数のバイトが定められてもよい)。選択さ
れたセットのウェイに記憶されるバイトに関連するアドレスが調べられて、その
セットに記憶されるアドレスのいずれかが要求されるアドレスにマッチするかど
うかが定められる。マッチが見出されれば、そのアクセスは「ヒット」であると
いわれ、キャッシュは関連するバイトを提供する。マッチが見出されないときは
、そのアクセスは「ミス」であるといわれる。ミスが検出されると、そのバイト
はメインメモリシステムからキャッシュに移される。キャッシュに記憶されるバ
イトに関連するアドレスも記憶される。これらの記憶されたアドレスは「タグ」
または「タグアドレス」と呼ばれる。
【0005】 前述のとおり、キャッシュの各ウェイからのキャッシュライン記憶場所は選択
されたセットのメンバである(すなわちセットの選択に応答してアクセスされる
)。ウェイの1つに記憶される情報はキャッシュの出力として与えられ、そのウ
ェイはキャッシュにウェイ選択を与えることによって選択される。ウェイ選択は
出力として選択されるウェイを識別する。典型的なセット連想型キャッシュにお
いて、ウェイ選択は、セット内のタグを調べ、タグの1つと要求されるアドレス
とのマッチを見出すことによって定められる。
【0006】 残念ながら、出力に対するウェイ選択を定めるためのタグ比較のために、セッ
ト連想型キャッシュは直接マップされたキャッシュ(索引ごとに1つのキャッシ
ュライン記憶場所を与える)よりも待ち時間が長くなり得る。さらに、ウェイ選
択はアクセス前には知られないため、各ウェイが典型的にアクセスされ、対応す
るウェイ選択は後でヒットが検出されたときに出力バイトを選択するために用い
られる。すべてのウェイにアクセスすることは、望ましくない高電力消費をもた
らし得る。最近のプロセッサにおいて、電力消費の制限は動作速度(または周波
数)の増加と急速に同等になってきている。したがって、セット連想型キャッシ
ュにアクセスするための待ち時間が少なく電力消費の低い方法が望まれている。
【0007】
【発明の開示】
上に概略的に述べた問題の大部分は、ここに開示されるキャッシュによって解
決される。このキャッシュは、入力アドレスおよび対応するウェイ予測を受取る
ように結合される。このキャッシュは(出力バイトを選択するためにタグ比較を
行なう代わりに)予測されるウェイに応答して出力バイトを与えることによって
、タグ比較を行なう場合に比べてアクセス待ち時間を減らし得る。さらに、タグ
は予測されるウェイから読取られてもよく、予測されないウェイからは部分的な
タグのみが読取られる。タグは入力アドレスのタグ部と比較され、部分的なタグ
は入力アドレスの対応する部分的なタグ部と比較される。タグが入力アドレスの
タグ部とマッチするときは、予測されるウェイにおけるヒットが検出され、予測
されるウェイに応答して与えられたバイトは正しい。タグが入力アドレスのタグ
部とマッチしないときは、予測されるウェイにおけるミスが検出される。部分的
なタグのいずれも入力アドレスの対応する部分的なタグ部とマッチしないときに
は、キャッシュにおけるミスが定められる。一方、部分的なタグの1つまたはそ
れ以上が入力アドレスの対応する部分的なタグ部とマッチするときには、キャッ
シュは対応するウェイをサーチして、(たとえば部分的なタグマッチが検出され
たウェイに対する全タグ比較を行なうことによって)入力アドレスがキャッシュ
においてヒットまたはミスしたかどうかを定める。予測されないウェイからは部
分的なタグが読取られるため、各ウェイから全タグを読取る場合に比べて電力を
節約できる。有利には、アクセス待ち時間および電力消費の両方を減少できる。
さらに、部分的なタグを与えることによって、サーチされる他のウェイが識別さ
れてもよく、サーチされるウェイの数が減少されてもよい(たとえば部分的なタ
グミスを有する各ウェイはサーチされなくてもよい)。
【0008】 概して、キャッシュが予期される。このキャッシュはタグアレイと、そのタグ
アレイに結合される制御回路とを含む。タグアレイは読取アドレスの索引および
ウェイ選択を受取るように結合され、複数のウェイを含む。タグアレイは複数の
部分タグを出力するように構成され、部分タグの各々は複数のウェイの1つから
のものである。制御回路は、読取アドレスがタグアレイの複数のウェイの第1の
ウェイにおいてミスしたことに応答してサーチウェイを識別するサーチウェイ選
択を生成するように構成される。第1のウェイはウェイ選択によって識別される
。サーチウェイからの第1の部分タグは読取アドレスの対応する部分にマッチす
る。
【0009】 加えて、プロセッサが予期される。このプロセッサは、フェッチアドレスに応
答してウェイ予測を与えるように構成されるライン予測子と、ウェイ予測および
フェッチアドレスを受取るように結合される命令キャッシュとを含む。命令キャ
ッシュはセット連想型であり、フェッチアドレスの索引に応答して複数の部分タ
グを出力するように構成されるタグアレイを含む。命令キャッシュは、フェッチ
アドレスがウェイ予測によって識別される第1のウェイにおいてミスしたことに
応答して、複数の部分タグの対応する部分タグがフェッチアドレスの対応する部
分にマッチするようなタグアレイの第2のウェイをサーチするように構成される
。さらに、コンピュータシステムが予期され、このコンピュータシステムはプロ
セッサと入力/出力(I/O)装置とを含み、このI/O装置はコンピュータシ
ステムとこのI/O装置が結合可能な別のコンピュータシステムとを通信するよ
うに構成される。
【0010】 さらに、方法が予期される。フェッチアドレスに応答してキャッシュから複数
の部分タグが読取られる。キャッシュの予測されるウェイにおいてフェッチアド
レスがヒットしたかどうかが判断される。フェッチアドレスがキャッシュの予測
されるウェイにおいてヒットしないという判断に応答して、キャッシュの第2の
ウェイでヒットがサーチされる。第2のウェイは予測されるウェイとは異なり、
第2のウェイに対応する複数の部分タグのうち第1の部分タグがフェッチアドレ
スの対応する部分とマッチする。
【0011】 以下の詳細な説明を読み、添付の図面を参照することによって、この発明のそ
の他の目的および利点が明らかになるであろう。
【0012】 この発明にはさまざまな変更形および代替形が可能であり、ここではその特定
の実施例を例として図面に示し、詳細に説明する。しかし、図面およびその詳細
な説明は、この発明を開示される特定の形に制限することを意図するものではな
く、反対に添付の請求項によって定められるこの発明の趣旨および範囲内にある
すべての変更形、同等のものおよび代替形を包含することを意図するものである
ことが理解されるべきである。
【0013】
【この発明を実行するためのモード】
プロセッサの概観 図1を参照すると、プロセッサ10の実施例の1つのブロック図が示される。
その他の実施例も可能であり予期される。図1の実施例において、プロセッサ1
0はライン予測子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生成ユニット18と、PCサイロ48と、整列
ユニット16とに結合される。ライン予測子12はまたI−キャッシュ14に結
合されてもよい。I−キャッシュ14は整列ユニット16と分岐予測/フェッチ
PC生成ユニット18とに結合され、分岐予測/フェッチPC生成ユニット18
はさらにPCサイロ48に結合される。整列ユニット16は予測子ミスデコード
ユニット26とデコードユニット24A−24Dとにさらに結合される。デコー
ドユニット24A−24Dはマップユニット30にさらに結合され、デコードユ
ニット24Dはマイクロコードユニット28に結合される。マップユニット30
は、(アーキテクチャ再命名ファイル34に結合される)リタイアキュー32と
、フューチャファイル20と、スケジューラ36と、PCサイロ48とに結合さ
れる。アーキテクチャ再命名ファイル34はフューチャファイル20に結合され
る。スケジューラ36はレジスタファイル38A−38Bに結合され、レジスタ
ファイルはさらに互いに結合され、かつそれぞれの実行コア40A−40Bに結
合される。実行コア40A−40Bはロード/ストアユニット42とスケジュー
ラ36とにさらに結合される。実行コア40AはD−キャッシュ44にさらに結
合される。ロード−ストアユニット42はスケジューラ36と、D−キャッシュ
44と、外部インターフェイスユニット46とに結合される。D−キャッシュ4
4はレジスタファイル38に結合される。外部インターフェイスユニット46は
外部インターフェイス52とI−キャッシュ14とに結合される。ここで参照番
号の後に文字を付けて示される構成要素は、参照番号のみによって集合的に示さ
れる。たとえば、デコードユニット24A−24Dはデコードユニット24とし
て集合的に示される。
【0014】 図1の実施例において、プロセッサ10は可変バイト長の複雑命令セットコン
ピューティング(CISC)命令セットアーキテクチャを用いる。たとえば、プ
ロセッサ10はx86命令セットアーキテクチャ(IA−32とも呼ばれる)を
用いてもよい。その他の実施例は、固定長命令セットアーキテクチャおよび縮小
命令セットコンピューティング(RISC)命令セットアーキテクチャを含むそ
の他の命令セットアーキテクチャを用いてもよい。このようなアーキテクチャに
おいては、図1に示される特定の特徴は省略されてもよい。
【0015】 分岐予測/フェッチPC生成ユニット18は、I−キャッシュ14と、ライン
予測子12と、PCサイロ48とにフェッチアドレス(フェッチPC)を与える
ように構成される。分岐予測/フェッチPC生成ユニット18は、フェッチアド
レスの生成を助けるために用いられる好適な分岐予測機構を含んでもよい。フェ
ッチアドレスに応答して、ライン予測子12は整列ユニット16に複数の命令に
対応する整列情報を与え、また与えられた命令情報によって識別される命令に続
いて命令をフェッチするための次のフェッチアドレスを与えてもよい。次のフェ
ッチアドレスは、所望に応じて分岐予測/フェッチPC生成ユニット18に与え
られてもよく、またはI−キャッシュ14に直接与えられてもよい。分岐予測/
フェッチPC生成ユニット18は(トラップが検出されるときには)PCサイロ
48からトラップアドレスを受取ってもよく、トラップアドレスは分岐予測/フ
ェッチPC生成ユニット18によって生成されるフェッチPCを含んでもよい。
そうでなければ、フェッチPCは分岐予測情報およびライン予測子12からの情
報を用いて生成されてもよい。一般的にライン予測子12は、プロセッサ10に
よって以前に投機的にフェッチされた命令に対応する情報を記憶する。実施例の
1つにおいて、ライン予測子12は2Kエントリを含み、各エントリはここで命
令の「ライン」と呼ばれる1つまたはそれ以上の命令の群の場所を定める。命令
のラインは、スケジューラ36に置かれることを通じて、プロセッサ10の命令
処理パイプラインによって同時に処理されてもよい。
【0016】 I−キャッシュ14は命令バイトを記憶するための高速キャッシュメモリであ
る。実施例の1つに従うと、I−キャッシュ14はたとえば64バイトキャッシ
ュラインを用いる128Kバイトの4ウェイセット連想型組織を含んでもよい。
しかし、(直接マップされた構造を含む)あらゆるI−キャッシュ構造が好適で
あり得る。
【0017】 整列ユニット16はライン予測子12からの命令整列情報と、I−キャッシュ
14からのフェッチアドレスに対応する命令バイトとを受取る。整列ユニット1
6は、与えられた命令整列情報に従って各デコードユニット24A−24Dへの
命令バイトを選択する。より特定的には、ライン予測子12は各デコードユニッ
ト24A−24Dに対応する命令ポインタを与える。命令ポインタは、対応する
デコードユニット24A−24Dへの運搬のための、フェッチされた命令バイト
内の命令の場所を定める。実施例の1つにおいては、特定の命令が1つよりも多
くのデコードユニット24A−24Dに運ばれてもよい。したがってここに示す
実施例において、ライン予測子12からの命令のラインは最大4つの命令を含ん
でもよいが、その他の実施例はライン内のより多いかまたはより少ない命令を与
えるためのより多いかまたはより少ないデコードユニット24を含んでもよい。
【0018】 デコードユニット24A−24Dは与えられた命令をデコードし、各デコード
ユニット24A−24Dはその命令に対応する1つまたはそれ以上の命令演算(
またはROP)を識別する情報を生成する。実施例の1つにおいて、各デコード
ユニット24A−24Dは命令当り最大2つの命令演算を生成してもよい。ここ
で用いられる命令演算(またはROP)とは、実行コア40A−40B内の実行
ユニットが単一エンティティとして実行するよう構成される演算である。簡単な
命令は単一の命令演算に対応し得るが、より複雑な命令は複数の命令演算に対応
してもよい。より複雑な命令のうちのあるものは、(この実施例においてデコー
ドユニット24Dを介して中の読取専用メモリからフェッチされる)マイクロコ
ードルーチンとしてマイクロコードユニット28内に実現されてもよい。さらに
、その他の実施例は各命令に対する単一の命令演算を用いてもよい(すなわちこ
うした実施例においては命令と命令演算とが同義になり得る)。
【0019】 PCサイロ48は各命令フェッチに対するフェッチアドレスおよび命令情報を
記憶し、例外(プロセッサ10によって用いられる命令セットアーキテクチャに
よって定められる命令トラップ、分岐予測誤り、およびその他のマイクロアーキ
テクチャ的に定められたトラップなど)に対する命令フェッチングを再方向付け
する。PCサイロ48は、プロセッサ10内で未処理であり得る命令の複数のラ
インに対応するフェッチアドレスおよび命令情報を記憶するための循環バッファ
を含んでもよい。命令のラインのリタイアに応答して、PCサイロ48は対応す
るエントリを廃棄してもよい。例外に応答して、PCサイロ48は分岐予測/フ
ェッチPC生成ユニット18にトラップアドレスを与えてもよい。リタイアおよ
び例外情報はスケジューラ36によって与えられてもよい。実施例の1つにおい
て、PCサイロ48は各命令にシーケンス数(R♯)を割当てて、プロセサ10
内で未処理の命令の順序を識別する。スケジューラ36はPCサイロ48にR♯
を戻すことによって、例外を経験しているかまたは命令演算をリタイアしている
命令演算を識別してもよい。
【0020】 ライン予測子12においてミスを検出すると、整列ユニット16はI−キャッ
シュ14から予測子ミスデコードユニット26へと対応する命令バイトを経路付
ける。予測子ミスデコードユニット26は命令をデコードし、プロセッサ10の
設計に従って命令のラインにおけるあらゆる制限(たとえば命令演算の最大数、
命令の最大数、分岐命令の終了など)を強制する。ラインを終了させる際に、予
測子ミスデコードユニット26は記憶のための情報をライン予測子12に与える
。なお、予測子ミスデコードユニット26は、命令がデコードされる際に命令を
ディスパッチするよう構成されてもよい。代替的には、予測子ミスデコードユニ
ット26は命令情報のラインをデコードしてそれを記憶のためにライン予測子1
2に与えてもよい。その後、ミスしたフェッチアドレスはライン予測子12にお
いて再試行されてもよく、ヒットが検出されてもよい。
【0021】 ライン予測子12のミスの際に命令をデコードすることに加え、予測子ミスデ
コードユニット26は、ライン予測子12によって与えられた命令情報が無効で
あるときに命令をデコードするように構成されてもよい。実施例の1つにおいて
、プロセッサ10はライン予測子12中の情報をI−キャッシュ14内の命令と
コヒーレントに保つことを試みない(たとえば、命令がI−キャッシュ14にお
いて置換または無効化されるとき、対応する命令情報は積極的に無効化されなく
てもよい)。デコードユニット24A−24Dは与えられた命令情報を検査して
もよく、無効の命令情報が検出されたときには予測子ミスデコードユニット26
に信号を送ってもよい。特定の実施例の1つに従うと、以下の命令演算はプロセ
ッサ10によって支持される。すなわち、整数(算術演算、論理演算、シフト/
回転演算、および分岐演算を含む)、浮動小数点(マルチメディア演算を含む)
、およびロード/ストアである。
【0022】 デコードされた命令演算ならびにソースおよび宛先レジスタ数は、マップユニ
ット30に与えられる。マップユニット30は、各命令演算の各宛先レジスタオ
ペランドおよびソースレジスタオペランドに物理レジスタ数(PR♯)を割当て
ることによってレジスタ再命名を行なうように構成される。物理レジスタ数は、
レジスタファイル38A−38B内のレジスタを識別する。マップユニット30
は、命令演算のソースオペランドに割当てられた各物理レジスタ数を更新する命
令演算のR♯を与えることによって、各命令演算に対する従属性の表示を付加的
に与える。マップユニット30は、対応する論理レジスタ数に基づいて各宛先レ
ジスタ(および対応する命令演算のR♯)に割当てられた物理レジスタ数によっ
てフューチャファイル20を更新する。加えて、マップユニット30は宛先レジ
スタの論理レジスタ数と、割当てられた物理レジスタ数と、リタイアキュー32
中の以前に割当てられた物理レジスタ数とを記憶する。命令がリタイアされると
き(スケジューラ36によってマップユニット30に示される)、リタイアキュ
ー32はアーキテクチャ再命名ファイル34を更新し、もはや用いられないあら
ゆるレジスタを解放する。したがって、アーキテクチャレジスタファイル34中
の物理レジスタ数はプロセッサ10のコミットされたアーキテクチャ状態を記憶
する物理レジスタを識別するのに対し、フューチャファイル20はプロセッサ1
0の投機的状態を表わす。言換えると、アーキテクチャ再命名ファイル34は、
各論理レジスタに対するコミットされたレジスタ状態を表わす、各論理レジスタ
に対応する物理レジスタ数を記憶する。フューチャファイル20は、各論理レジ
スタに対する投機的レジスタ状態を表わす、各論理レジスタに対応する物理レジ
スタ数を記憶する。
【0023】 命令演算のラインと、ソース物理レジスタ数と、宛先物理レジスタ数とは、P
Cサイロ48によって割当てられたR♯に従ってスケジューラ36に記憶される
。さらに、特定の命令演算に対する従属性は、スケジューラに記憶される他の命
令演算に対する従属性として示されてもよい。実施例の1つにおいて、命令演算
はリタイアされるまでスケジューラ36中に残る。
【0024】 スケジューラ36は、各命令演算に対して示される従属性が満足されるまでそ
の命令演算を記憶する。実行に対する特定の命令演算のスケジューリングに応答
して、スケジューラ36はその特定の命令演算がどのクロックサイクルにおいて
レジスタファイル38A−38Bを更新するかを定めてもよい。実行コア40A
−40B内の異なる実行ユニットは、異なる数のパイプラインステージ(および
異なる待ち時間)を用いてもよい。さらに、特定の命令はその他のものよりもパ
イプライン内でより多くの待ち時間を経験してもよい。したがって、(多数のク
ロックサイクルにおける)特定の命令演算に対する待ち時間を測定するカウント
ダウンが生成される。スケジューラ36は、(レジスタファイルを読取る従属命
令演算の前に、またはそれと同時に更新が起こるまで)特定化された数のクロッ
クサイクルだけ待ち、次いでその特定の命令演算に従属する命令演算がスケジュ
ーリングされ得ることを示す。なお、スケジューラ36は、ある命令の従属性が
満たされたときにその命令をスケジューリングしてもよい(すなわちスケジュー
ラキュー内のその順序に関してアウトオブオーダである)。
【0025】 整数およびロード/ストア命令演算は、レジスタファイル38Aからのソース
物理レジスタ数に従ってソースオペランドを読取り、実行のために実行コア40
Aに運ばれる。実行コア40Aは命令演算を実行し、レジスタファイル38A内
の宛先に割当てられた物理レジスタを更新する。加えて、実行コア40Aはスケ
ジューラ36に、命令演算およびその命令演算に関する例外情報(あれば)のR
♯を報告する。レジスタファイル38Bおよび実行コア40Bは、浮動小数点命
令演算に関して類似の態様で動作してもよい(また、ロード/ストアユニット4
2に浮動小数点ストアに対するストアデータを与えてもよい)。
【0026】 実施例の1つにおいて、実行コア40Aはたとえば、2つの整数ユニットと、
分岐ユニットと、(対応する変換ルックアサイドバッファまたはTLBを有する
)2つのアドレス生成ユニットとを含んでもよい。実行コア40Bは浮動小数点
/マルチメディア乗算器と、浮動小数点/マルチメディア加算器と、ロッド/ス
トアユニット42にストアデータを配達するためのストアデータユニットとを含
んでもよい。実行ユニットのその他の構成も可能である。
【0027】 ロード/ストアユニット42は、メモリ動作を行ない、かつD−キャッシュ4
4をミスしたメモリ動作に対するフィル動作をスケジューリングするためにD−
キャッシュ44にインターフェイスを与える。ロードメモリ動作は、アドレス生
成を行ない、かつデータを(D−キャッシュ44またはロード/ストアユニット
42内のストアキューから)レジスタファイル38A−38Bに転送する実行コ
ア40Aによって完了されてもよい。ストアアドレスは、実行コア40Aによる
その生成の際に(実行コア40AおよびD−キャッシュ44間の接続を介して直
接)D−キャッシュ44に与えられてもよい。ストアアドレスにはストアキュー
エントリが割当てられる。設計の選択に従って、ストアデータは同時に与えられ
ても、またはその後に与えられてもよい。ストア命令のリタイアの際に、データ
はD−キャッシュ44に記憶される(ただしリタイアとD−キャッシュ44の更
新との間にはいくらかの遅延があり得る)。加えて、ロード/ストアユニット4
2は、(外部インターフェイスユニット46を介した)その後のキャッシュフィ
ルのためにD−キャッシュ44をミスしたロード/ストアアドレスを記憶し、そ
のミスしたロード/ストア演算を再試行するためのロード/ストアバッファを含
んでもよい。ロード/ストアユニット42は、ロード/ストアメモリ従属性を取
扱うようにさらに構成される。
【0028】 D−キャッシュ44は、プロセッサ10によってアクセスされるデータを記憶
するための高速キャッシュメモリである。D−キャッシュ44はあらゆる好適な
構造(直接マップされる構造およびセットアソシアティブ構造を含む)を含んで
もよいが、D−キャッシュ44の実施例の1つは、64バイトラインを有する1
28Kバイトの2ウェイセットアソシアティブキャッシュを含んでもよい。
【0029】 外部インターフェイスユニット46は、外部インターフェイス52を介して他
の装置と通信するように構成される。L2キャッシュに対するインターフェイス
およびプロセッサ10を他の装置に接続するための外部バスを含む、あらゆる好
適な外部インターフェイス52が用いられてもよい。外部インターフェイスユニ
ット46はI−キャッシュ16およびD−キャッシュ44に対するフィルをフェ
ッチし、またD−キャッシュ44から外部インターフェイスに廃棄された更新済
キャッシュラインを書込む。さらに、外部インターフェイスユニット46は、プ
ロセッサ10によって生成されるキャッシュできない読取および書込を行なって
もよい。
【0030】 次に図2を参照すると、プロセッサ10の実施例の1つによって用いられ得る
パイプラインステージの例示的なセットを例示する例示的なパイプライン図が示
される。その他の実施例は異なるパイプライン、すなわち図2に示されるパイプ
ラインよりも多いかまたは少ないパイプラインステージを含むパイプラインを用
いてもよい。図2に示されるステージは、垂直の破線によって区切られている。
各ステージは、プロセッサ10内の記憶素子(たとえばレジスタ、ラッチ、フロ
ップなど)をクロックするために用いられるクロック信号の1つのクロックサイ
クルである。
【0031】 図2に例示されるとおり、例示的なパイプラインはCAM0ステージと、CA
M1ステージと、ライン予測子(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−IM
4)のステージを含む。
【0032】 CAM0およびCAM1ステージの間に、ライン予測子12は分岐予測/フェ
ッチPC生成ユニット18によって与えられるフェッチアドレスと、そこに記憶
されるラインのアドレスとを比較する。加えて、CAM0およびCAM1ステー
ジの間に、フェッチアドレスは仮想アドレス(たとえばx86アーキテクチャに
おける線形アドレスなど)から物理アドレスに変換される。CAM0およびCA
M1ステージの間にヒットを検出することに応答して、ライン予測子ステージに
おいてライン予測子から対応するライン情報が読取られる。また、ライン予測子
ステージの間にI−キャッシュ14が(物理アドレスを用いて)読取を開始する
。その読取は命令キャッシュステージの間に完了する。
【0033】 なお、図2に例示されるパイプラインはフェッチアドレスに対するライン予測
子12におけるヒットを検出するために2つのクロックサイクルを用いるが、そ
の他の実施例はこの動作を行なうために単一のクロックサイクル(およびステー
ジ)を用いてもよい。さらに、実施例の1つにおいて、ライン予測子12はI−
キャッシュ14に対する次のフェッチアドレスと、ヒットに対するライン予測子
12中の次のエントリとを与えることによって、ライン予測子12における前の
ヒットの結果得られるフェッチに対してCAM0およびCAM1ステージがスキ
ップされてもよい。
【0034】 I−キャッシュ14によって与えられる命令バイトは、ライン予測子12から
の対応するライン情報に応答して整列ステージの間に整列ユニット16によって
デコードユニット24A−24Dに整列される。デコードユニット24A−24
Dはデコードステージの間に与えられた命令をデコードし、その命令に対応する
ROPおよびオペランド情報を識別する。マップ1ステージにおいて、マップユ
ニット30は与えられた情報からROPを生成し、レジスタ再命名(フューチャ
ファイル20の更新)を行なう。マップ2ステージの間に、ROPおよび割当て
られた再命名はリタイアキュー32に記録される。さらに、各ROPが従属する
ROPが定められる。各ROPはフューチャファイルに記録される際に前のRO
Pに従属するレジスタであってもよく、またその他の種類の従属性(たとえば前
の直列化した命令に対する従属性など)を示してもよい。
【0035】 生成されたROPは、書込スケジューラステージの間にスケジューラ36に書
込まれる。このステージまで、情報の特定のラインによって場所を定められるR
OPは1単位としてパイプラインを流れる。しかし、スケジューラ36に書込ま
れた後に、ROPは異なる時間に独立して残りのステージを流れてもよい。一般
的に、(たとえば前述のように、特定のROPが従属するROPが実行のために
選択された後に)特定のROPはスケジューラ36によって実行のために選択さ
れるまでこのステージに残る。したがって、特定のROPは書込スケジューラ書
込ステージと読取スケジューラステージとの間に、遅延の1つまたはそれ以上の
クロックサイクルを経験してもよい。読取スケジューラステージの間に、スケジ
ューラ36内の選択論理に関係する特定のROPが実行のために選択され、スケ
ジューラ36から読出される。次いでその特定のROPは、レジスタファイル読
取ステージにおいて(ROPの種類に依存して)レジスタファイル38A−38
Bの1つからレジスタファイル演算を読取るために進行する。
【0036】 実行ステージの間に、特定のROPおよびオペランドが対応する実行コア40
Aまたは40Bに与えられ、オペランドに対して命令演算が行なわれる。前述の
とおり、いくつかのROPは実行のいくつかのパイプラインステージを有する。
たとえば、メモリ命令演算(たとえばロードおよびストア)は、アドレス生成ス
テージ(メモリ命令演算によってアクセスされるメモリ場所のデータアドレスが
生成される)と、変換ステージ(アドレス生成ステージによって与えられる仮想
データアドレスが変換される)と、D−キャッシュ44がアクセスされる1対の
データキャッシュステージとを通じて実行される。浮動小数点演算は最大4クロ
ックサイクルの実行を用いてもよく、整数乗算も同様に最大4クロックサイクル
の実行を用いてもよい。
【0037】 実行ステージを完了する際に、特定のROPはレジスタファイル書込ステージ
の間にその割当てられた物理レジスタを更新する。最後に、特定のROPは(リ
タイアステージにおいて)前のROPの各々がリタイアされた後にリタイアされ
る。ここでも、特定のROPに対してレジスタファイル書込ステージとリタイア
ステージとの間に1つまたはそれ以上のクロックサイクルが経過してもよい。さ
らに、当該技術分野において周知のとおり、パイプラインストール状態のために
、特定のROPがあらゆるステージにおいてストールされてもよい。
【0038】 キャッシュアクセス 図3を参照すると、分岐予測/フェッチPC生成ユニット18と、ライン予測
子12と、I−キャッシュ14と、命令TLB(ITLB)60と、フェッチア
ドレスmux64との実施例の1つを例示するブロック図が示される。その他の
実施例も可能であり予期される。図3の実施例において、分岐予測/フェッチP
C生成ユニット18はPCサイロ48からトラップPCを受取るように結合され
、ITLB60と、ライン予測子12と、I−キャッシュ14と、フェッチアド
レスmux64とにさらに結合される。ITLB60はフェッチアドレスmux
64にさらに結合され、フェッチアドレスmuxはI−キャッシュ14に結合さ
れる。ライン予測子12はI−キャッシュ14とフェッチアドレスmux64と
に結合される。
【0039】 一般的に、分岐予測/フェッチPC生成ユニット18は、フェッチされる命令
に対するフェッチアドレス(フェッチPC)を生成する。フェッチアドレスはラ
イン予測子12およびTLB60(ならびに図1に示されるとおり、PCサイロ
48)に与えられる。ライン予測子12はそのフェッチアドレスをその中に記憶
されるフェッチアドレスと比較することによって、そのフェッチアドレスに対応
するライン予測子エントリがライン予測子12内に存在するかどうかを判断する
。対応するライン予測子エントリが見出されるとき、ライン予測子エントリに記
憶される命令ポインタが整列ユニット16に与えられる。ライン予測子12がラ
イン予測子エントリをサーチするのと並行して、ITLB60はフェッチアドレ
ス(この実施例においては仮想アドレスである)をI−キャッシュ14へのアク
セスのための物理アドレス(物理PC)に変換する。ITLB60はその物理ア
ドレスをフェッチアドレスmux64に与え、分岐予測/フェッチPC生成ユニ
ット18Dはmux64を制御して物理アドレスを選択する。図面および説明に
おいては、明瞭さのためにmux64の出力をキャッシュフェッチアドレス(ま
たはキャッシュフェッチPC)と呼ぶ。I−キャッシュ14はこの物理アドレス
に対応する命令バイトを読取り、その命令バイトを整列ユニット16に与える。
【0040】 この実施例において、各ライン予測子エントリはまた次のフェッチアドレス(
次のフェッチPC)を与える。次のフェッチアドレスはmux64に与えられ、
ライン予測子12に応答してI−キャッシュ14にアクセスするためのキャッシ
ュフェッチアドレスがヒットを検出する際に、分岐予測/フェッチPC生成ユニ
ット18はmux64を通じてアドレスを選択する。この態様で、フェッチアド
レスがライン予測子においてヒットし続ける限り、次のフェッチアドレスがより
迅速にI−キャッシュ14に与えられてもよい。ライン予測子エントリはまた、
(次のフェッチアドレスに対応する)ライン予測子12内の次のライン予測子エ
ントリの表示を含むことによって、ライン予測子12が次のフェッチアドレスに
対応する命令ポインタをフェッチできるようにしてもよい。したがって、フェッ
チアドレスがライン予測子12においてヒットし続ける限り、命令のラインのフ
ェッチは図2に示されるパイプラインのライン予測子ステージから開始されても
よい。(スケジューラ36に応答して)PCサイロ48によって開始されるトラ
ップ、次のフェッチアドレスに対してライン予測子12によって行なわれる予測
と分岐予測/フェッチPC生成ユニット18によって生成される次のフェッチア
ドレスとの不一致のために、分岐予測/フェッチPC生成ユニット18によって
生成されるフェッチアドレスがライン予測子12中でサーチされてもよい。
【0041】 加えて、ライン予測子12はキャッシュフェッチアドレスに対応するウェイ予
測を与える。I−キャッシュ14はウェイ予測によって識別される予測されるウ
ェイを読取って、読取命令バイトを整列ユニット16に与えてもよい。出力デー
タを選択するためにタグ比較が用いられないため、I−キャッシュ14にアクセ
スするための待ち時間が減少され得ることが有利である。さらに、予測されない
ウェイをアイドル状態にする(すなわち予測されないウェイにアクセスしない)
ことによって電力消費を減少させてもよく、つまり予測されないウェイにアクセ
スすることによって消費される電力が節約される。さらに、I−キャッシュ14
は予測されるウェイからのタグおよび予測されないウェイからの部分タグにアク
セスしてもよい。部分タグは全タグの1つまたはそれ以上のビットを排除してお
り、予測されるウェイにおいてフェッチアドレスがミスしたときに予測されない
ウェイのサーチを方向付けるために用いられてもよい。予測されるウェイからの
全タグにアクセスするが予測されないウェイからの部分タグにしかアクセスしな
いことによって、さらに付加的な電力が節約されてもよい。フェッチアドレスが
予測されるウェイをミスするとき、I−キャッシュ14は、対応する部分タグが
フェッチアドレスの対応する部分にマッチする予測されないウェイをサーチして
もよい。部分タグがフェッチアドレスの対応する部分にマッチしないときには、
全タグもマッチしないため、部分タグがマッチしないウェイはサーチにおいてス
キップされてもよい。したがって、各ウェイからの全タグにアクセスすることに
比べると、サーチはなおも電力消費の減少を可能にしてより効率的になり得る。
【0042】 ウェイ予測ミスが検出されるとき、I−キャッシュ14は分岐予測/フェッチ
PC生成ユニット18およびライン予測子12にストール信号をアサートしても
よい。そのストール信号によって、分岐予測/フェッチPC生成ユニット18お
よびライン予測子12はフェッチアドレスのさらなる生成を中断し、I−キャッ
シュ14が予測されないウェイにおけるヒットをサーチできるようにしてもよい
。一旦ヒットが検出されると、I−キャッシュ14はライン予測子12に更新さ
れたウェイ予測を与えて、ストール信号をデアサートしてもよい。ライン予測子
12は更新されたウェイ予測によって対応するライン予測子エントリを更新して
もよい。ミスが検出されるとき(すなわちどのウェイもマッチするタグを有さな
いとき)、I−キャッシュ14は置換ウェイを選択し、その置換ウェイを更新さ
れたウェイ予測として与えてもよい。代替的には、外部インターフェイスユニッ
ト46からI−キャッシュ14に対応する命令バイトが与えられるときに置換ウ
ェイが選択されてもよい。
【0043】 ライン予測子12によって次のフェッチアドレスが生成され、ライン予測子1
2においてヒットしている間にも、分岐予測/フェッチPC生成ユニット18は
PCサイロ48によるロギングのためにフェッチアドレスを生成し続ける。さら
に、分岐予測/フェッチPC生成ユニット18は、その中に含まれる1つまたは
それ以上の分岐予測を介してライン予測子12によって与えられる次のフェッチ
アドレスを確認してもよい。ライン予測子12内のライン予測子エントリは、タ
イプによって命令のライン内の終了命令を識別し、ライン予測子12はそのタイ
プ情報を分岐予測/フェッチPC生成ユニット18および終了命令の予測される
方向に伝送する(図3の状態)。さらに、分岐命令内に含まれる分岐変位を介し
て目標アドレスを形成する分岐に対して、ライン予測子12は分岐変位の表示を
与えてもよい。この情報および分岐予測子に記憶される情報から、分岐予測/フ
ェッチPC生成ユニット18は仮想的な次のフェッチアドレスを生成してもよい
。実施例の1つにおいて、分岐予測子は条件付分岐予測子と、間接分岐目標アド
レスキャッシュと、復帰スタックとを含む。
【0044】 なお、実施例の1つにおいて、I−キャッシュ14はフェッチアドレスによっ
て場所を定められる命令バイトから始まる、命令フェッチ当り固定された数の命
令バイトを与えてもよい。フェッチアドレスはキャッシュライン内のあらゆると
ころにバイトの場所を定めてもよいため、I−キャッシュ14はフェッチアドレ
スに応答して2つのキャッシュラインにアクセスしてもよい(フェッチアドレス
によって索引付けされるキャッシュライン、およびキャッシュ中の次の索引にお
けるキャッシュライン)。その他の実施例は、与えられる命令バイトの数を最大
固定された数まで、またはキャッシュラインの最後までのうちいずれか先に来る
方に制限してもよい。実施例の1つにおいて、その固定された数は16であるが
、その他の実施例は16よりも大きいかまたは小さい固定数を用いてもよい。2
つのキャッシュラインにアクセスする実施例において、2つのウェイ予測が与え
られてもよい。図4−9に関する以下の考察は1つのウェイ予測を参照してもよ
いが、複数の同時のウェイ予測に拡張されてもよい。
【0045】 ここで用いられる「アドレス」とは、プロセッサ10が結合可能なメモリシス
テム内のバイトを識別する値である。「フェッチアドレス」は、プロセッサ10
内の命令として実行される命令バイトをフェッチするために用いられるアドレス
である。前述のとおり、プロセッサ10は、仮想アドレス(命令のオペランドに
応答して生成される)を物理アドレス(メモリシステム中の場所を物理的に識別
する)に変換するアドレス変換機構を用いてもよい。x86命令セットアーキテ
クチャにおいて、仮想アドレスは命令のオペランドから生成される論理アドレス
に対して動作するセグメンテーション機構に従って生成された線形アドレスであ
ってもよい。その他の命令セットアーキテクチャは異なる態様で仮想アドレスを
定めてもよい。
【0046】 図4を参照すると、I−キャッシュ14の実施例の1つのブロック図が示され
る。その他の実施例も可能であり予期される。図4の実施例において、I−キャ
ッシュ14はタグアレイ70と、命令アレイ72と、残存タグ比較器74と、複
数の部分的タグ比較器76A−76Dと、制御回路78と、ウェイマルチプレク
サ(mux)80と、アドレスmux82と、アドレスレジスタ84とを含む。
アドレスmux82およびアドレスレジスタ84はI−キャッシュ14に与えら
れるキャッシュフェッチアドレスを受取るように結合され、アドレスレジスタ8
4はアドレスmux82にさらに結合される。アドレスmux82の出力はタグ
アレイ70および命令アレイ72、ならびに比較器74および76A−76Dに
結合される。ウェイmux80はI−キャッシュ14に与えられるウェイ予測を
受取るように結合され、また制御回路78からのサーチウェイ選択を受取るよう
に結合される。ウェイmux80の出力はタグアレイ70および命令アレイ72
に結合される。mux80および82は制御回路78から選択信号を受取るよう
に結合され、アドレスレジスタ84は制御回路78から保持制御信号を受取るよ
うに結合される。残存タグ比較器74はタグアレイ70から予測されるウェイ残
存タグ(RTag)を受取るように結合され、また制御回路78に出力信号を与
えるように結合される。各々の部分タグ比較器76A−76Dはタグアレイ70
からそれぞれの部分タグ(PTag0−PTag3)を受取るように結合され、
また制御回路78にそれぞれの出力信号を与えるように結合される。制御回路7
8は外部インターフェイスユニット46にミス信号を与え、ライン予測子12に
ウェイ予測更新信号を与え、ライン予測子12および分岐予測/フェッチPC生
成ユニット18にストール信号を与えるように結合される。制御回路78はウェ
イmux80からウェイ選択を受取るように結合される。なお、I−キャッシュ
14は、所望に応じてスヌープトランザクションなどを管理するために、ミスに
応答してI−キャッシュ14へのキャッシュラインの伝達を管理するための付加
的な回路(図示せず)を含んでもよい。
【0047】 タグアレイ70はI−キャッシュ14に記憶される命令バイトのキャッシュラ
インのタグを記憶し、命令アレイ72は命令バイトのキャッシュラインを記憶す
る。タグアレイ70および命令アレイ72は、たとえばランダムアクセスメモリ
(RAM)アレイを含んでもよい。タグアレイ70におけるタグ記憶場所と、命
令アレイ72におけるキャッシュライン記憶場所とは1対1で対応する。より特
定的には、タグアレイ70および命令アレイ72は同数のセット(すなわち索引
ビットの同じセットによって索引付けされる)および同数のウェイを含んでもよ
い。
【0048】 一般的に、予測されるウェイにおけるミスのために制御回路78が予測されな
いウェイにおけるフェッチアドレスのヒットをサーチしていないとき、制御回路
78はアドレスmux82を通じてキャッシュフェッチアドレスを選択し、ウェ
イmux80を通じてウェイ予測を選択する。したがって、キャッシュフェッチ
アドレスと予測されるウェイとがタグアレイ70および命令アレイ72に与えら
れる。より特定的には、キャッシュフェッチアドレスの索引部分が各アレイに与
えられ、対応するセットが選択される。さらに、命令アレイ72においては、(
ウェイ予測に応答して)セットの予測されるウェイがアクセスされ、予測されな
いウェイは電力を節約するためにアイドル状態に保持される。読取アクセスの間
にアレイによって消費される電力は一般的にアクセスされる情報の量(たとえば
ビットまたはバイトの数)に比例するため、アクセスされても出力において選択
されないアレイ(たとえば命令アレイ72の予測されないウェイなど)のアイド
ル状態の部分によって、消費される電力が減少される。予測されるウェイに記憶
される命令バイトは、命令アレイ72から整列ユニット16に出力される。加え
て、タグアレイ70の各ウェイから部分タグが読取られ、残存タグ(すなわち部
分タグから排除されるタグの部分)がタグアレイ70の予測されるウェイから読
取られる。ここでも予測されないウェイからは部分タグしか読取られないため、
各ウェイから全タグを読取る場合に比べて電力を節約できる。予測されるウェイ
からの部分タグと予測されるウェイからの残存タグとの組合せは、予測されるウ
ェイからのタグを含む。
【0049】 残存タグ比較器74は、予測されるウェイからの残存タグをフェッチアドレス
の対応する部分と比較する。残存タグとフェッチアドレスの対応する部分とが同
等であるとき、残存タグ比較器74はその出力信号を制御回路78にアサートす
る。そうでなければ、残存タグ比較器74はその出力信号を制御回路78にデア
サートする。同様に、部分タグ比較器76A−76Dの各々はタグアレイ70の
それぞれのウェイからの部分タグを受取り、その受取った部分タグをフェッチア
ドレスの対応する部分と比較する。受取った部分タグとフェッチアドレスの対応
する部分とが同等であるときには、部分タグ比較器76A−76Dはその出力信
号をアサートする。そうでなければ、部分タグ比較器76A−76Dはその出力
信号をデアサートする。
【0050】 予測されるウェイに対応する残存タグ比較器74および部分タグ比較器76A
−76Dの両方が出力信号をアサートするとき、制御回路78は予測されるウェ
イにおけるヒットを検出し、命令アレイ72によって与えられる対応する命令バ
イトは正しい。制御回路78はストール信号またはミス信号をアサートせず、そ
の後のアクセスが継続してもよい。制御回路78はタグアレイ70に与えられる
ウェイ選択を受取り、どの部分タグ比較器76A−76Dが選択されるウェイに
対応するかを定める。
【0051】 一方、予測されるウェイに対応する残存タグ比較器74または部分タグ比較器
76A−76Dのいずれもが出力信号をアサートしないとき、制御回路78は予
測されるウェイにミスを検出する。他のどの部分タグ比較器76A−76Dも出
力信号をアサートしないとき、フェッチアドレスはI−キャッシュ14における
ミスであり、制御回路78は外部インターフェイスユニット46にミス信号をア
サートしてミスした命令バイトをフェッチさせる。逆に、他の部分タグ比較器7
6A−76Dからの出力信号の少なくとも1つがアサートされ、かつ予測される
ウェイにおけるミスが検出されるとき、制御回路78はサーチウェイ選択を生成
し、ウェイmux80にサーチウェイ選択を与え、ライン予測子12および分岐
予測/フェッチPC生成ユニット18にストール信号をアサートする。サーチウ
ェイ選択は、部分タグがフェッチアドレスの対応する部分とマッチするウェイを
識別する。制御回路78はウェイmux80を通じてサーチウェイ選択を選択し
、アドレスmux84を通じてアドレスレジスタ84中の値を選択する。サーチ
ウェイがアクセスされ、サーチウェイにおいてヒットが検出されるかどうかを定
めるための比較は、予測されるウェイアクセスと類似の態様で行なわれる。ヒッ
トが検出されるとき、制御回路78はウェイ予測更新としてヒットするサーチウ
ェイ選択をライン予測子12に伝送する。
【0052】 一般的に、アドレスレジスタ84は各クロックサイクルにI−キャッシュ14
に与えられるキャッシュフェッチアドレスを捕捉する。しかし、アドレスレジス
タ84は保持制御を含み、この保持制御はアサートされるときにアドレスレジス
タ84にその現行値を保持させる。保持制御は、制御回路78がウェイmux8
0を通じてサーチウェイ選択を選択し、アドレスmux82を通じてアドレスレ
ジスタ84の内容を選択するクロックサイクルにおいてアサートされる。この態
様で、予測されるウェイにおいてミスしたフェッチアドレスはタグアレイ70お
よび命令アレイ72に再び提供され、サーチウェイ選択はウェイ選択としてタグ
アレイ70および命令アレイ72に与えられる。
【0053】 制御回路78がサーチウェイにおいてヒットを検出しないとき、制御回路78
は部分タグヒットが検出される各ウェイがサーチされるまで付加的なサーチウェ
イを生成する。実施例の1つにおいて、第1のサーチウェイは部分タグヒットが
検出される最低の数が付けられたウェイであってもよく、その後のサーチウェイ
は増加する順序で生成されてもよい(たとえばこの実施例においては、ウェイ0
が第1にサーチされ、ウェイ3が最後にサーチされる)。制御回路78はサーチ
が継続する際にストール信号をアサートし続ける。部分タグヒットを有するウェ
イの各々がヒットに対してサーチされ、かつヒットが検出されないとき、制御回
路78は外部インターフェイスユニット46にミス信号をアサートする。したが
って、ミスしたキャッシュラインはフェッチされてI−キャッシュ14に記憶さ
れてもよい。ミス信号のアサートによって、外部インターフェイスユニット46
からミスした命令バイトが与えられるまでライン予測子12および分岐予測/フ
ェッチPC生成ユニット18がストールするようにしてもよい。代替的には、ミ
スした命令バイトが与えられるまで制御回路78がストール信号をアサートし続
けてもよい。
【0054】 なお、命令アレイ72における選択されたウェイにのみアクセスすることに加
えて、命令アレイ72はキャッシュライン内の複数のバンクを用いてもよい。命
令アレイ72は1つまたはそれ以上のキャッシュラインオフセットビットを用い
てアクセスするバンクを選択し、その他のバンクはアイドル状態に保持されても
よい。さらに、アレイの一部が、アレイのその部分にアクセスしないことによっ
てアイドル状態に保持されてもよい。たとえば、アレイからデータを出力するた
めにその部分から記憶セルが選択されないときには、その部分はアイドル状態で
あってもよい。言い換えると、アイドル状態にされた部分は「パワーアップ」さ
れなくてもよい。さらに、ウェイ予測および部分タグの用法の一例として命令キ
ャッシュを用いたが、その他のキャッシュも類似の構造を用いてもよい。たとえ
ば、データキャッシュまたは組合された命令/データキャッシュが類似の構造を
用いてもよい。
【0055】 なお、代替的な構成が可能である。たとえば、部分ヒットが検出される各ウェ
イをサーチする代わりに、タグアレイ70は、選択されるウェイから全タグを読
取ってその他のウェイから部分タグを読取ることに加えて各ウェイからの全タグ
読取を与えるように構成されてもよい。1つまたはそれ以上の部分タグヒットが
検出されるとき、制御回路78は全タグ読取を行なってもよく、各ウェイに対し
て全タグ比較器が与えられてもよい。この態様で、ヒットに対するサーチは、前
述のように1つまたはそれ以上の読取ではなく、タグの1つの読取において完了
してもよい。さらに、アドレスmux82およびmux64(図3に示す)は所
望であれば単一のmuxにマージされて、アドレスレジスタ84と、ITLB6
0によって与えられる物理アドレスと、ライン予測子12によって与えられる次
のフェッチアドレスとを選択してもよい。
【0056】 次に図5を参照すると、タグアレイ70の実施例の1つのブロック図が示され
る。その他の実施例も可能であり予期される。図5の実施例において、タグアレ
イ70は索引を受取るように結合される部分タグデコーダ90と、索引およびウ
ェイ選択を受取るように結合される残存タグデコーダ92とを含む。タグアレイ
70はさらに、セットに配列されたRAMセル94のセットを含む。例示的なセ
ット96が2本の水平な破線の間に例示されており、その他のセットはデコーダ
90および92からの異なる信号を受取る同一の構成を含んでもよい。セット9
6は残存タグセル98A−98Dと部分タグセル100とを含む。残存タグセン
ス増幅器(センス増幅器)102および部分タグセンス増幅器104も示される
。なお、セットアソシアティブRAM設計に好適なあらゆる態様でタグアレイ7
0を更新するために付加的な回路(図示せず)が含まれてもよい。
【0057】 典型的なRAMアレイにおいて、デコーダは受取った索引をデコードしてセッ
トを選択し、そのセット内のRAMセルに対するワードラインを活性化する。各
RAMセルは1対のビットライン(一般的にビットおよびビットバーと呼ばれる
)に結合され、RAMセルに記憶されるビットに応答してRAMセルはその1つ
を放電する。センス増幅器はビットラインに結合され、そのビットライン対間の
差動電圧に応答してセット中の各セルに対してバイナリゼロまたはバイナリ1を
生成するように構成される。図5に例示されるタグアレイ70の実施例において
、セル98A−98Dおよびセル100は各セルに対するビットラインの対に結
合されており、それはセルをセンス増幅器102または104の1つに結合する
垂直線によって表わされる。よって、セル98A中の各ビットに対して、1対の
ビットラインが与えられて残存タグセンス増幅器102に結合されてもよい。同
様に、セル98B中の各ビットに対して、1対のビットラインが与えられて残存
タグセンス増幅器102に結合されてもよい(セル98C−98Dに対しても同
様)。セル100の各ビットに対して1対のビットラインが与えられて部分タグ
センス増幅器104に結合されてもよい。他のセット(図5に示さず)のセル9
8A−98Dおよび100は、それぞれセル98A−98Dおよび100と同じ
ビットラインのセットに結合される。
【0058】 一般的に、部分タグセル100はセット96に記憶される各タグの部分タグ部
を記憶する。たとえば、例示される実施例において、タグアレイ70は4ウェイ
セットアソシアティブである。よって、このような実施例に対して、部分タグセ
ル100は4つの部分タグ(各ウェイに対して1つ)の各ビットを記憶するため
のセルを含む。残存タグセル98A−98Dの各々は、1つの残存タグの各ビッ
トを記憶するためのセルを含む(よってこの4ウェイセットアソシアティブの実
施例に対しては4つのタグセル98A−98Dが例示される)。
【0059】 部分タグデコーダ90はタグアレイが受取った索引をデコードし、選択された
セットに対する部分タグワードラインを活性化する。各セットは部分タグデコー
ダ90から異なるワードラインを受取る。たとえば、図5は部分タグデコーダ9
0からワードラインを受取るセット96中の部分タグ100を例示する。活性化
されたワードラインに応答して、部分タグセル100はそこに結合されたビット
ラインを放電し、部分タグセンス増幅器104はビットライン上の差動電圧を介
して部分タグのビットを検知する。この態様で、各ウェイからの部分タグが比較
器76A−76Dに出力される。なお、部分タグに対するワードラインは実際に
は各ウェイに対する別個のワードラインを含むことによって、残りの部分タグを
不変のままにしながら1つの部分タグ部を更新できるようにしてもよい。読取の
目的のために、ワードラインの各々は部分タグの各々を読取るために活性化され
る。
【0060】 残存タグデコーダ92は索引をデコードして選択されるセットを定め、またウ
ェイ選択をデコードして選択されたセットに記憶される残存タグの1つを選択す
る。残存タグデコーダ92は各セットに対して複数のワードラインを与え、ウェ
イ選択に応答して選択されたセットに対するワードラインの1つを活性化する。
たとえば、図5に例示される残存タグデコーダ92は第1のワードラインを残存
タグセル98Aに与え、第2のワードラインを残存タグセル98Bに与え、第3
のワードラインを残存タグセル98Cに与え、第4のワードラインを残存タグセ
ル98Dに与える。その他のセットは異なる複数のワードラインを受取る。活性
化されたワードラインに応答して、残存タグセル98A−98Dの1つが対応す
るビットラインを放電し、残存タグセンス増幅器102は差動電圧を介して残存
タグのビットを検知する。この態様で、選択されたウェイからの残存タグが比較
器74に出力される。なお、例示される実施例において、残存タグセンス増幅器
102はセット中のいくつかの残存タグからの1つの残存タグを与える。よって
残存タグセンス増幅器102はウェイ選択(または代替的には、残存タグデコー
ダ92からの制御信号)を受取って、検知するための残存タグセル98A−98
Dの1つに対応するビットラインの1つのセットを選択する。言い換えると、残
存タグセル98A−98Dの各々からのビットラインは、センス増幅器回路に入
力される前に「列多重化」されてもよい。センス増幅器は典型的にアレイによっ
て消費されるかなりの量の電力を消費するため、検知されるビットラインの数を
制限することによって電力をさらに減少できる。代替的には、残存タグは所望に
応じて、別個のセンス増幅器によって検知された後に多重化されてもよい。
【0061】 代替的な構成において、タグアレイ70はセット当り単一のデコーダおよび単
一のワードラインを用いてもよいが、前述のように1つの残存タグセンス増幅器
102および列muxを与えてもよい。このような実施例において、選択された
セットにおける各残存タグセル98A−98Dはその対応するビットラインを放
電するが、検知されるビットラインの数はなおも制限されているため、センス増
幅器によって消費される電力は制限され得る。さらに、全タグ読取を与える実施
例において、タグアレイ70はセットに記憶される各ビットに対するセンス増幅
器を用いてもよいが、全タグ読取が行なわれない限り、部分タグセンス増幅器お
よび残存タグセンス増幅器のうち1つだけを活性化してもよい。
【0062】 なお、図5に示されるようなセット内のセルの分布は、図面における便利さお
よび明瞭性のためだけのものである。設計の選択に従って、セルはあらゆる好適
な態様で物理的に配置されてもよい。
【0063】 図6を参照すると、例示的なフェッチアドレス110が示され、I−キャッシ
ュ14と関係する際のフェッチアドレスのさまざまな部分が例示される。フェッ
チアドレスの最上位ビットは図6の左側であり、最下位ビットは図6の右側であ
る。図6に示されるとおり、フェッチアドレス110はオフセットフィールド1
12と、索引フィールド114と、タグフィールド116とに分割される。タグ
フィールド116は部分タグフィールド118と残存タグフィールド120とに
細分化される。
【0064】 オフセットフィールド112を形成するフェッチアドレス110の部分は、命
令キャッシュライン内のアドレス指定されたバイトのオフセットを定めるフェッ
チアドレス110のビットである。したがって、オフセットフィールド112内
のビットの数はキャッシュライン内のバイトの数に依存する。たとえば実施例の
1つにおいて、I−キャッシュ14は64バイトキャッシュラインを含む。この
ような実施例に対し、オフセットフィールド112はキャッシュラインの最下位
6ビットである。
【0065】 索引フィールド114は、I−キャッシュ14中のセットを選択するためのキ
ャッシュ索引を形成するビットを含む。ここに示される実施例において、索引フ
ィールド114はオフセットフィールド112を除くフェッチアドレス110の
最下位ビットを含む。たとえば実施例の1つにおいて、I−キャッシュ14は6
4バイトラインを有する4ウェイセットアソシアティブ構造における128Kバ
イトである。このような実施例は512セットを有するため、索引はセットの選
択を与えるために9ビットを含む(29=512)。
【0066】 タグフィールド116は、索引フィールド114およびオフセットフィールド
112を除くフェッチアドレス110の部分を含む。タグフィールド116は、
タグアレイ70中のキャッシュライン(「タグ」と呼ばれる)を一意に識別する
ためにI−キャッシュ14によって記憶されるフェッチアドレス110の部分を
含む。オフセットフィールド112はキャッシュライン内のバイトを定めるため
、オフセットフィールド112は記憶されない。さらに、索引はI−キャッシュ
14内のセットを選択するため、索引はタグを記憶するI−キャッシュ14の場
所において固有のものである。したがって、タグフィールド116を選択された
セットに記憶されるタグと比較することによって、(マッチが検出されるときに
)I−キャッシュ14に記憶されるフェッチアドレスに対応するキャッシュライ
ンが識別される。
【0067】 ここに例示される実施例において、部分タグフィールド118は、予測される
ウェイがミスしたときにどのウェイにヒットをサーチするかを定めるために各ウ
ェイに対してタグアレイ70によって与えられるタグフィールド116の部分で
あり、またタグアレイ70によって与えられる部分タグとの比較のために部分タ
グ比較器76A−76Dに与えられるフェッチアドレスの部分である。例示され
る実施例において、部分タグフィールド118はタグフィールド116の最下位
ビットを含む。多くのプログラムは、命令がメモリ中で互いの近くに物理的に置
かれる「参照の局所性」を示し、またI−キャッシュ14は典型的に命令バイト
の最も最近アクセスされたキャッシュラインを記憶するため、統計的にフェッチ
アドレスとは異なると考えられるタグのビットがタグの最下位ビットである。し
たがって、これらのビットを部分タグフィールド118として選択することによ
り、予測されないウェイのサーチを制限する可能性が増加し、より迅速にヒット
するウェイの場所が定められるか、またはミスが検出される。その他の実施例は
、部分タグを形成するためにタグフィールド116のあらゆる好適な部分を選択
してもよい。
【0068】 ここに例示される実施例において、残存タグフィールド120は、ウェイにお
けるヒットが検出されたかどうかを定めるための予測または選択されたウェイに
対してタグアレイ70によって与えられるタグフィールド116の部分であり、
またタグアレイ70によって与えられる残存タグとの比較のために残存タグ比較
器74に与えられるフェッチアドレスの部分である。残存タグフィールド120
は、部分タグフィールド118を除くタグフィールド116の残りのビットを含
む。
【0069】 部分タグフィールド118に含まれるビットの数は、設計選択に従って選択さ
れてもよい。一般的に、選択されるビットの数は、サーチにおいてウェイが除去
されるかまたは含まれる正確さと、節約される電力量との兼ね合いであってもよ
い。部分タグに含まれるビットの数が大きくなるほど、予測されないウェイにお
けるヒットのサーチからマッチしないタグを記憶するウェイが除外されやすくな
るが、電力の節約は少なくなる。たとえば、4ウェイセットアソシアティブキャ
ッシュを有する実施例において、部分タグフィールド118にタグフィールド1
16中の3分の1のビットを割当てながら、全タグ読取の電力のほぼ半分を消費
してもよい(1つの全タグと、各々が全タグの3分の1の大きさの3つの部分タ
グとが読取られて、2つの全タグと同等になるため)。あらゆる数のビットが部
分タグに含まれてもよい。一般的に部分タグはタグの少なくとも1ビットを除き
、また複数のビットを除いてもよい。
【0070】 次に図7を参照すると、制御回路78の実施例の1つによって用いられ得る例
示的な状態マシンが示される。その他の実施例も可能であり予期される。図7の
実施例において、状態マシンはアクセス状態130とサーチ状態132とを含む
【0071】 アクセス状態130は、I−キャッシュ14からの通常のフェッチが行なわれ
る状態である。したがって、フェッチが予測されるウェイにヒットするときには
状態マシンはアクセス状態130のままである。加えて、フェッチが予測される
ウェイにおいてミスしたが部分タグと比較したときにもミスであるとき(すなわ
ちどの部分タグもフェッチアドレスの対応する部分とマッチしないとき)には、
状態マシンはアクセス状態130のままである。一方、予測されるウェイにおい
てミスしたフェッチと、少なくとも1つの部分タグがフェッチアドレスの対応す
る部分とマッチすること(「部分タグヒット」)とに応答して、状態マシンはア
クセス状態130からサーチ状態132に遷移する。
【0072】 サーチ状態132は、I−キャッシュ14が、予測されるウェイをミスしたフ
ェッチアドレスに対する部分タグヒットを有する予測されないウェイをサーチす
る状態である。フェッチアドレスが現行サーチのサーチウェイをミスし、部分タ
グヒットを有する少なくとも1つの他のウェイがサーチされるとき、状態マシン
はサーチ状態132のままである。サーチウェイがヒットするか、または各々の
部分タグヒットがなくなった(すなわちサーチされてミスであることが見出され
た)ときに、状態マシンはサーチ状態132からアクセス状態130に遷移する
【0073】 次に図8を参照すると、状態マシンがアクセス状態130にあるときの制御回
路78の実施例の1つの動作を例示するフローチャートが示される。その他の実
施例も可能であり予期される。図8においては、理解を容易にするためにステッ
プを特定の順序で示すが、あらゆる好適な順序が用いられてもよい。さらに、ス
テップは制御回路78内で用いられる組合せ論理によって並行して行なわれても
よい。
【0074】 フェッチアドレスが与えられるとき、制御回路78はそのフェッチアドレスが
予測されるウェイにおいてミスするかどうかを定める(判断ブロック140)。
たとえば、制御回路78は予測されるウェイに対応する残存タグ比較器74およ
び部分タグ比較器76A−76Dからの出力信号を調べる。フェッチアドレスが
予測されるウェイにおいてヒットするとき、制御回路78はそれ以上のことを行
なわない。一方、フェッチアドレスが予測されるウェイにおいてミスしたとき、
制御回路78は部分タグヒットがあるかどうかを定める(判断ブロック142)
。たとえば、制御回路78はその他の部分タグ比較器76A−76Dの各々から
の出力信号を調べることによって部分タグヒットがあるかどうかを定めてもよい
。部分タグヒットが検出されないとき、制御回路78は外部インターフェイスユ
ニット46にミス信号をアサートし、ミスしたキャッシュラインのフェッチを開
始する(ステップ144)。一方、部分タグヒットが検出されるときには、制御
回路78はストール信号をアサートする(ステップ146)。加えて、制御回路
78は、対応する部分タグがフェッチアドレスにヒットする第1のウェイの読取
を開始する(ステップ148)。次いで制御回路78は状態マシンをサーチ状態
に移す(ステップ150)。
【0075】 図9は、状態マシンがサーチ状態132にあるときの制御回路78の実施例の
1つの動作を例示するフローチャートである。その他の実施例も可能であり予期
される。理解を容易にするために、図9においてはステップを特定の順序で示す
が、あらゆる好適な順序が用いられてもよい。さらに、ステップは制御回路78
内で用いられる組合せ論理によって並行して行なわれてもよい。
【0076】 制御回路78は、フェッチアドレスがサーチウェイにおいてヒットするかどう
かを定める(判断ブロック160)。たとえば、制御回路78はサーチウェイに
対応する残存タグ比較器74および部分タグ比較器76A−76Dからの出力信
号を調べる。サーチウェイにおいてフェッチアドレスがヒットするとき、制御回
路78はライン予測子12に更新されたウェイ予測を伝送し(ステップ162)
、ストール信号をデアサートし(ステップ164)、状態マシンをアクセス状態
に移す(ステップ166)。
【0077】 一方、フェッチアドレスがサーチウェイにおいてヒットしないときには、制御
回路78はサーチするための付加的な部分タグヒットがあるかどうかを定める(
判断ブロック168)。たとえば、制御回路78は部分タグヒットが検出される
サーチウェイよりも高い数字を付けられたウェイがあるかどうかを定めてもよい
。付加的な部分タグヒットが検出されるとき、制御回路78は次の部分タグヒッ
トの読取を開始する(ステップ170)。たとえば、制御回路78は部分タグヒ
ットが検出されるサーチウェイの次に高い数字を付けられたウェイを選択しても
よい。加えて、制御回路78はストール信号をアサートし続けることによって次
のウェイがサーチされることを可能にしてもよい(ステップ172)。サーチに
対する付加的な部分タグヒットがないとき、制御回路78は外部インターフェイ
スユニット46にミス信号をアサートし(ステップ174)、状態マシンをアク
セス状態に移す(ステップ176)。
【0078】 なお、ここで用いられる制御回路という語は、前述のように入力に動作し、そ
れに応答して出力を生成する回路(たとえば組合せ論理ゲート、muxなどのデ
ータフロー素子、レジスタ、ラッチ、フロップ、加算器、シフタ、回転子など、
および/または状態マシンを実現する回路)のあらゆる組合せを示す。加えて、
ここで用いられる「アサートされる」という語は、信号またはビットに対する論
理的に真の値を与えることを示す。信号またはビットは、特定の状態を示す値を
運ぶときにアサートされてもよい。反対に、信号またはビットは、特定の状態が
ないことを示す値を運ぶときに「デアサート」されてもよい。信号またはビット
は、論理ゼロ値を運ぶとき、または反対に論理1値を運ぶときにアサートされる
ことが定められてもよく、また信号またはビットは反対の論理値が運ばれるとき
にデアサートされることが定められてもよい。
【0079】 コンピュータシステム 図10を参照すると、バスブリッジ202を通じてさまざまなシステム構成要
素に結合されるプロセッサ10を含むコンピュータシステム200の実施例の1
つのブロック図が示される。その他の実施例も可能であり予期される。図示され
るシステムにおいて、メインメモリ204はメモリバス206を通じてバスブリ
ッジ202に結合され、グラフィックコントローラ208はAGPバス210を
通じてバスブリッジ202に結合される。最後に、複数のPCI装置212A−
212BがPCIバス214を通じてバスブリッジ202に結合される。EIS
A/ISAバス220を通じた1つまたはそれ以上のEISAまたはISA装置
218に対する電気的インターフェイスに適合するために、二次的なバスブリッ
ジ216がさらに与えられてもよい。プロセッサ10はCPUバス224を通じ
てバスブリッジ202に結合され、また任意のL2キャッシュ228に結合され
る。CPUバス224およびL2キャッシュ228へのインターフェイスは、外
部インターフェイス52を含んでもよい。
【0080】 バスブリッジ202はプロセッサ10と、メインメモリ204と、グラフィッ
クコントローラ208と、PCIバス214に取付けられる装置との間のインタ
ーフェイスを提供する。バスブリッジ202に接続される装置の1つから動作が
受取られるとき、バスブリッジ202はその動作の目標を識別する(たとえば特
定の装置、またはPCIバス214の場合にはその目標はPCIバス214上に
ある)。バスブリッジ202はその動作をターゲット決めされた装置に経路付け
る。バスブリッジ202は一般的に、動作をソース装置またはバスによって用い
られるプロトコルから目標装置またはバスによって用いられるプロトコルに変換
する。
【0081】 二次的なバスブリッジ216は、PCIバス214に対するISA/EISA
バスへのインターフェイスを与えることに加えて、所望に応じて付加的な機能を
さらに組入れてもよい。コンピュータシステム200内にはまた、二次的なバス
ブリッジ216の外部にあるかまたはそれと一体化された入力/出力コントロー
ラ(図示せず)が含まれることによって、所望に応じてキーボードおよびマウス
222ならびにさまざまな直列および並列ポートに対する動作的支持が与えられ
てもよい。他の実施例においては、プロセッサ10とバスブリッジ202との間
のCPUバス224に外部キャッシュユニット(図示せず)がさらに結合されて
もよい。代替的には、外部キャッシュがバスブリッジ202に結合されてもよく
、外部キャッシュに対するキャッシュ制御論理がバスブリッジ202に一体化さ
れてもよい。プロセッサ10に対する後部構造において、L2キャッシュ228
がさらに示される。なお、L2キャッシュ228はプロセッサ10と分離してい
ても、プロセッサ10とともにカートリッジ(たとえばスロット1またはスロッ
トA)に一体化されても、またはプロセッサ10とともに半導体基板上に一体化
されてもよい。
【0082】 メインメモリ204は、中にアプリケーションプログラムが記憶されており、
プロセッサ10が主にそこから実行するメモリである。好適なメインメモリ20
4はDRAM(動的ランダムアクセスメモリ)を含む。たとえば、SDRAM(
同期DRAM)またはラムバスDRAM(RDRAM)の複数のバンクが好適で
あり得る。
【0083】 PCI装置212A−212Bは、たとえばネットワークインターフェイスカ
ード、ビデオ加速器、音声カード、ハードもしくはフロッピー(登録商標)ディ
スクドライブまたはドライブコントローラ、SCSI(小型コンピュータシステ
ムインターフェイス)アダプタ、およびテレフォンカードなどのさまざまな周辺
装置を例示するものである。同様に、ISA装置218はモデム、サウンドカー
ド、およびGPIBまたはフィールドバスインターフェイスカードなどのさまざ
まなデータ取得カードなどのさまざまな種類の周辺装置を例示するものである。
【0084】 グラフィックコントローラ208は、ディスプレイ226上のテキストおよび
画像のレンダリングを制御するために設けられる。グラフィックコントローラ2
08は、メインメモリ204に、およびそこから効果的にシフトできる3次元デ
ータ構造をレンダリングするための当該技術分野において一般的に公知の典型的
なグラフィック加速器を包含してもよい。したがって、グラフィックコントロー
ラ208は、バスブリッジ202内のターゲットインターフェイスへのアクセス
を要求しかつそれを受取ることによってメインメモリ204へのアクセスを得る
ことができるという意味において、AGPバス210のマスタであってもよい。
専用のグラフィックバスは、メインメモリ204からのデータの迅速な検索に適
合する。特定の動作に対して、グラフィックコントローラ208はAGPバス2
10上にPCIプロトコルトランザクションを生成するようにさらに構成されて
もよい。よってバスブリッジ202のAGPインターフェイスは、AGPプロト
コルトランザクションならびにPCIプロトコルターゲットおよびイニシエータ
トランザクションの両方を支持するための機能を含んでもよい。ディスプレイ2
26は、その上に画像またはテキストを示すことができるあらゆる電気的ディス
プレイである。好適なディスプレイ226は陰極線管(“CRT”)、液晶ディ
スプレイ(“LCD”)などを含む。
【0085】 なお、前述の説明においてはAGP、PCIおよびISAまたはEISAバス
を例として用いたが、所望に応じてあらゆるバスアーキテクチャが置換されても
よい。さらに、コンピュータシステム200は付加的なプロセッサ(たとえばコ
ンピュータシステム200の任意の構成要素として示されるプロセッサ10aな
ど)を含む多重処理コンピュータシステムであってもよい。プロセッサ10aは
プロセッサ10と類似のものであってもよい。より特定的には、プロセッサ10
aはプロセッサ10の同一のコピーであってもよい。プロセッサ10aは(図1
0に示されるように)独立のバスを介してバスブリッジ202に接続されても、
またはプロセッサ10とCPUバス224を共有してもよい。さらに、プロセッ
サ10aはL2キャッシュ228と類似の任意のL2キャッシュ228aに結合
されてもよい。
【0086】 図11を参照すると、コンピュータシステム300の別の実施例が示される。
その他の実施例も可能であり予期される。図11の実施例において、コンピュー
タシステム300はいくつかの処理ノード312A、312B、312Cおよび
312Dを含む。各処理ノードは、それぞれの処理ノード312A−312Dの
各々の中に含まれるメモリコントローラ316A−316Dを介してそれぞれの
メモリ314A−314Dに結合される。付加的には、処理ノード312A−3
12Dは処理ノード312A−312D間の通信に用いられるインターフェイス
論理を含む。たとえば、処理ノード312Aは処理ノード312Bと通信するた
めのインターフェイス論理318Aと、処理ノード312Cと通信するためのイ
ンターフェイス論理318Bと、さらに別の処理ノード(図示せず)と通信する
ための第3のインターフェイス論理318Cとを含む。同様に、処理ノード31
2Bはインターフェイス論理318D、318Eおよび318Fを含み、処理ノ
ード312Cはインターフェイス論理318G、318Hおよび318Iを含み
、処理ノード312Dはインターフェイス論理318J、318Kおよび318
Lを含む。処理ノード312Dは、インターフェイス論理318Lを介して複数
の入力/出力装置(たとえばデイジーチェーン構成の装置320A−320Bな
ど)と通信するように結合される。その他の処理ノードは類似の態様で他のI/
O装置と通信してもよい。
【0087】 処理ノード312A−312Dは、処理ノード間通信のためのパケットベース
のリンクを実現する。この実施例において、リンクは1方向ラインのセット(た
とえば、ライン324Aは処理ノード312Aから処理ノード312Bにパケッ
トを伝送するために用いられ、ライン324Bは処理ノード312Bから処理ノ
ード312Aにパケットを伝送するために用いられる)として実現される。図1
1に例示されるように、ラインのその他のセット324C−324Hは、その他
の処理ノード間でパケットを伝送するために用いられる。一般的に、ライン32
4の各セットは、1つまたはそれ以上のデータラインと、そのデータラインに対
応する1つまたはその以上のクロックラインと、運ばれるパケットの種類を示す
1つまたはそれ以上の制御ラインとを含んでもよい。リンクは、処理ノード間の
通信のためにキャッシュコヒーレントの態様で動作されても、または処理ノード
およびI/O装置(またはPCIバスまたはISAバスなどの従来の構成のI/
Oバスに対するバスブリッジ)の間の通信のために非コヒーレントの態様で動作
されてもよい。さらに、リンクはここに示されるようにI/O装置間のデイジー
チェーン構造を用いて非コヒーレントの態様で動作されてもよい。なお、1つの
処理ノードから別の処理ノードに移されるパケットは、1つまたはそれ以上の中
間ノードを通ってもよい。たとえば、処理ノード312Aによって処理ノード3
12Dに伝送されるパケットは、図11に示されるとおり、処理ノード312B
または処理ノード312Cのいずれを通過してもよい。あらゆる好適な経路付け
アルゴリズムが用いられてもよい。コンピュータシステム300のその他の実施
例は、図11に示される実施例よりも多いかまたは少ない処理ノードを含んでも
よい。
【0088】 一般的にパケットは、ノード間のライン324において1つまたはそれ以上の
ビット時間として伝送されてもよい。ビット時間は対応するクロックライン上の
クロック信号の立上がりまたは立下がり端であってもよい。パケットはトランザ
クションを開始するためのコマンドパケットと、キャッシュコヒーレンシを維持
するためのプローブパケットと、プローブおよびコマンドに対する応答による応
答パケットとを含んでもよい。
【0089】 処理ノード312A−312Dは、メモリコントローラおよびインターフェイ
ス論理に加えて、1つまたはそれ以上のプロセッサを含んでもよい。概して処理
ノードは少なくとも1つのプロセッサを含み、また所望に応じてメモリおよびそ
の他の論理と通信するためのメモリコントローラを任意に含んでもよい。より特
定的には、処理ノード312A−312Dはプロセッサ10を含んでもよい。外
部インターフェイスユニット46は、ノード内のインターフェイス論理318お
よびメモリコントローラ316を含んでもよい。
【0090】 メモリ314A−314Dはあらゆる好適なメモリ装置を含んでもよい。たと
えば、メモリ314A−314Dは1つまたはそれ以上のラムバスDRAM(R
DRAM)、同期DRAM(SDRAM)、静的RAMなどを含んでもよい。コ
ンピュータシステム300のアドレス空間は、メモリ314A−314Dに分割
される。各処理ノード312A−312Dは、どのアドレスがどのメモリ314
A−314Dにマップされるのか、および特定のアドレスに対するメモリ要求を
どの処理ノード312A−312Dに経路付けるべきかを定めるために用いられ
るメモリマップを含んでもよい。実施例の1つにおいて、コンピュータシステム
300内のアドレスに対するコヒーレンシ点は、そのアドレスに対応するバイト
を記憶するメモリに結合されるメモリコントローラ316A−316Dである。
言い換えると、メモリコントローラ316A−316Dは、対応するメモリ31
4A−314Dに対する各メモリアクセスがキャッシュコヒーレントの態様で起
こることを確実にする。メモリコントローラ316A−316Dは、メモリ31
4A−314Dとインターフェイスするための制御回路を含んでもよい。加えて
、メモリコントローラ316A−316Dはメモリ要求をキューに入れるための
要求キューを含んでもよい。
【0091】 一般的に、インターフェイス論理318A−318Lは、リンクからパケット
を受取り、またリンクに対して伝送されるパケットをバッファするためのさまざ
まなバッファを含んでもよい。コンピュータシステム300は、パケットを伝送
するためのあらゆる好適なフロー制御機構を用いてもよい。たとえば実施例の1
つにおいて、各インターフェイス論理318は、そのインターフェイス論理が接
続されるリンクの他方端における受信器内の各種のバッファの数のカウントを記
憶する。受信インターフェイス論理がパケットを記憶するための自由バッファを
有さない限り、インターフェイス論理はパケットを伝送しない。受信バッファが
パケットを前方に経路付けることによって解放されると、受信インターフェイス
論理は送信インターフェイス論理にメッセージを送って、そのバッファが解放さ
れたことを示す。このような機構は「クーポンベース」システムと呼ばれてもよ
い。
【0092】 I/O装置320A−320Bはあらゆる好適なI/O装置であってもよい。
たとえば、I/O装置320A−320Bはネットワークインターフェイスカー
ド、ビデオ加速器、音声カード、ハードもしくはフロッピーディスクドライブま
たはドライブコントローラ、SCSI(小型コンピュータシステムインターフェ
イス)アダプタおよびテレフォンカード、モデム、サウンドカード、ならびにG
PIBまたはフィールドバスインターフェイスカードなどのさまざまなデータ取
得カードを含んでもよい。
【0093】 前述の開示が完全に認識されるとき、当業者には多数の修正形および変更形が
明らかになるであろう。添付の請求項はすべてのこうした修正形および変更形を
含むと解釈されることが意図される。
【0094】 産業上の適用可能性 この発明はプロセッサおよびコンピュータシステムに適用可能である。
【図面の簡単な説明】
【図1】 プロセッサの実施例の1つを示すブロック図である。
【図2】 図1に示されるプロセッサによって用いられ得るパイプラインの
実施例の1つを例示するパイプライン図である。
【図3】 図1に示される分岐予測/フェッチPC生成ユニット、ライン予
測子およびI−キャッシュ、ならびにITLBのブロック図であり、ユニットの
実施例の1つに従ってそれらの間の相互接続を例示する。
【図4】 図1および3に示されるI−キャッシュの実施例の1つを示すブ
ロック図である。
【図5】 図4に示されるタグアレイの実施例の1つを示すブロック図であ
る。
【図6】 例示的なアドレス内のフィールドを例示する図である。
【図7】 図4に示される制御回路の実施例の1つによって用いられ得る状
態マシンを例示する状態マシン図である。
【図8】 図7に示されるアクセス状態における、図4に示される制御回路
の実施例の1つの動作を例示するフローチャートである。
【図9】 図7に示されるサーチ状態における、図4に示される制御回路の
実施例の1つの動作を例示するフローチャートである。
【図10】 図1に示されるプロセッサを含むコンピュータシステムの実施
例の1つを示すブロック図である。
【図11】 図1に示されるプロセッサを含むコンピュータシステムの第2
の実施例を示すブロック図である。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成14年3月14日(2002.3.14)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0002
【補正方法】変更
【補正の内容】
【0002】 2.背景技術 EP−A−0 675 443号は、直接マップされたキャッシュにアクセス
するための装置および方法を開示する。このキャッシュは予測索引を与える予測
機構を含み、ヒットとなるキャッシュ場所を予測する。予測される場所における
ミスが起こると、比較器が全タグを比較して第2の予測索引を生成する。 WO−A−98/20421号は、アクセスがヒットするアソシアティブキャ
ッシュのウェイを予測するウェイ予測構造を開示する。タグ比較ブロックは、全
タグを要求アドレスと比較することによって、要求アドレスが予測されるウェイ
においてヒットするか、予測されないウェイにおいてヒットするか、またはミス
するかどうかを定める。 R.E.ケスラーらの「セットアソシアティビティの安価な実現例(Inexpens
ive Implementations of Set-Associativity)」と題される文献(コンピュータ
・アーキテクチャ会議会議録(Computer Architecture Conference Proceedings
)、第17巻、第3号、1989年6月、ワシントン、US)は、タグアレイの
第1の読取が記憶されるタグの各々から部分タグを読取り、その部分タグを入力
アドレスの対応するビットと比較する部分比較アプローチを開示する。マッチの
場合には、タグアレイの第2の読取が部分タグ比較においてマッチしたタグ場所
を読取り、ヒットまたはミスが起こったかどうかを定める。 JP−A−07334423号は、キャッシュウェイ予測部分を有するキャッ
シュを含むプロセッサを開示する。ウェイ予測部分はどのウェイがセットアップ
されるかを予測し、予測されるウェイに対するデータ記憶部分のみ、または予測
されるタグ記憶部分およびデータ記憶部分が駆動される。 スーパースカラプロセッサは、クロックサイクル中で複数の命令を同時に実行
し、またその設計に一致する可能な最短クロックサイクルを特定化することによ
って高性能を達成する。ここで用いられる「クロックサイクル」という語は、プ
ロセッサのパイプラインステージがその意図される機能を行なう時間間隔を示す
。クロックサイクルの最後に、その結果得られた値が次のパイプラインステージ
に移動される。クロックサイクルを定めるクロック信号に応答して、クロックさ
れた記憶装置(たとえばレジスタ、ラッチ、フロップなど)がそれらの値を捕捉
してもよい。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0012
【補正方法】変更
【補正の内容】
【0012】 この発明にはさまざまな変更形および代替形が可能であり、ここではその特定
の実施例を例として図面に示し、詳細に説明する。しかし、図面およびその詳細
な説明は、この発明を開示される特定の形に制限することを意図するものではな
く、反対に添付の請求項によって定められるこの発明の範囲内にあるすべての変
更形、同等のものおよび代替形を包含することを意図するものであることが理解
されるべきである。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0038
【補正方法】変更
【補正の内容】
【0038】 キャッシュアクセス 図3を参照すると、分岐予測/フェッチPC生成ユニット18と、ライン予測
子12と、I−キャッシュ14と、命令TLB(ITLB)60と、フェッチア
ドレスmux64との実施例の1つを例示するブロック図が示される。図3の実
施例において、分岐予測/フェッチPC生成ユニット18はPCサイロ48から
トラップPCを受取るように結合され、ITLB60と、ライン予測子12と、
I−キャッシュ14と、フェッチアドレスmux64とにさらに結合される。I
TLB60はフェッチアドレスmux64にさらに結合され、フェッチアドレス
muxはI−キャッシュ14に結合される。ライン予測子12はI−キャッシュ
14とフェッチアドレスmux64とに結合される。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0046
【補正方法】変更
【補正の内容】
【0046】 図4を参照すると、I−キャッシュ14の実施例の1つのブロック図が示され
る。図4の実施例において、I−キャッシュ14はタグアレイ70と、命令アレ
イ72と、残存タグ比較器74と、複数の部分的タグ比較器76A−76Dと、
制御回路78と、ウェイマルチプレクサ(mux)80と、アドレスmux82
と、アドレスレジスタ84とを含む。アドレスmux82およびアドレスレジス
タ84はI−キャッシュ14に与えられるキャッシュフェッチアドレスを受取る
ように結合され、アドレスレジスタ84はアドレスmux82にさらに結合され
る。アドレスmux82の出力はタグアレイ70および命令アレイ72、ならび
に比較器74および76A−76Dに結合される。ウェイmux80はI−キャ
ッシュ14に与えられるウェイ予測を受取るように結合され、また制御回路78
からのサーチウェイ選択を受取るように結合される。ウェイmux80の出力は
タグアレイ70および命令アレイ72に結合される。mux80および82は制
御回路78から選択信号を受取るように結合され、アドレスレジスタ84は制御
回路78から保持制御信号を受取るように結合される。残存タグ比較器74はタ
グアレイ70から予測されるウェイ残存タグ(RTag)を受取るように結合さ
れ、また制御回路78に出力信号を与えるように結合される。各々の部分タグ比
較器76A−76Dはタグアレイ70からそれぞれの部分タグ(PTag0−P
Tag3)を受取るように結合され、また制御回路78にそれぞれの出力信号を
与えるように結合される。制御回路78は外部インターフェイスユニット46に
ミス信号を与え、ライン予測子12にウェイ予測更新信号を与え、ライン予測子
12および分岐予測/フェッチPC生成ユニット18にストール信号を与えるよ
うに結合される。制御回路78はウェイmux80からウェイ選択を受取るよう
に結合される。なお、I−キャッシュ14は、所望に応じてスヌープトランザク
ションなどを管理するために、ミスに応答してI−キャッシュ14へのキャッシ
ュラインの伝達を管理するための付加的な回路(図示せず)を含んでもよい。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0056
【補正方法】変更
【補正の内容】
【0056】 次に図5を参照すると、タグアレイ70の実施例の1つのブロック図が示され
る。図5の実施例において、タグアレイ70は索引を受取るように結合される部
分タグデコーダ90と、索引およびウェイ選択を受取るように結合される残存タ
グデコーダ92とを含む。タグアレイ70はさらに、セットに配列されたRAM
セル94のセットを含む。例示的なセット96が2本の水平な破線の間に例示さ
れており、その他のセットはデコーダ90および92からの異なる信号を受取る
同一の構成を含んでもよい。セット96は残存タグセル98A−98Dと部分タ
グセル100とを含む。残存タグセンス増幅器(センス増幅器)102および部
分タグセンス増幅器104も示される。なお、セットアソシアティブRAM設計
に好適なあらゆる態様でタグアレイ70を更新するために付加的な回路(図示せ
ず)が含まれてもよい。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0073
【補正方法】変更
【補正の内容】
【0073】 次に図8を参照すると、状態マシンがアクセス状態130にあるときの制御回
路78の実施例の1つの動作を例示するフローチャートが示される。図8におい
ては、理解を容易にするためにステップを特定の順序で示すが、あらゆる好適な
順序が用いられてもよい。さらに、ステップは制御回路78内で用いられる組合
せ論理によって並行して行なわれてもよい。
【手続補正8】
【補正対象書類名】明細書
【補正対象項目名】0079
【補正方法】変更
【補正の内容】
【0079】 コンピュータシステム 図10を参照すると、バスブリッジ202を通じてさまざまなシステム構成要
素に結合されるプロセッサ10を含むコンピュータシステム200の実施例の1
つのブロック図が示される。図示されるシステムにおいて、メインメモリ204
はメモリバス206を通じてバスブリッジ202に結合され、グラフィックコン
トローラ208はAGPバス210を通じてバスブリッジ202に結合される。
最後に、複数のPCI装置212A−212BがPCIバス214を通じてバス
ブリッジ202に結合される。EISA/ISAバス220を通じた1つまたは
それ以上のEISAまたはISA装置218に対する電気的インターフェイスに
適合するために、二次的なバスブリッジ216がさらに与えられてもよい。プロ
セッサ10はCPUバス224を通じてバスブリッジ202に結合され、また任
意のL2キャッシュ228に結合される。CPUバス224およびL2キャッシ
ュ228へのインターフェイスは、外部インターフェイス52を含んでもよい。
【手続補正9】
【補正対象書類名】明細書
【補正対象項目名】0086
【補正方法】変更
【補正の内容】
【0086】 図11を参照すると、コンピュータシステム300の別の実施例が示される。
図11の実施例において、コンピュータシステム300はいくつかの処理ノード
312A、312B、312Cおよび312Dを含む。各処理ノードは、それぞ
れの処理ノード312A−312Dの各々の中に含まれるメモリコントローラ3
16A−316Dを介してそれぞれのメモリ314A−314Dに結合される。
付加的には、処理ノード312A−312Dは処理ノード312A−312D間
の通信に用いられるインターフェイス論理を含む。たとえば、処理ノード312
Aは処理ノード312Bと通信するためのインターフェイス論理318Aと、処
理ノード312Cと通信するためのインターフェイス論理318Bと、さらに別
の処理ノード(図示せず)と通信するための第3のインターフェイス論理318
Cとを含む。同様に、処理ノード312Bはインターフェイス論理318D、3
18Eおよび318Fを含み、処理ノード312Cはインターフェイス論理31
8G、318Hおよび318Iを含み、処理ノード312Dはインターフェイス
論理318J、318Kおよび318Lを含む。処理ノード312Dは、インタ
ーフェイス論理318Lを介して複数の入力/出力装置(たとえばデイジーチェ
ーン構成の装置320A−320Bなど)と通信するように結合される。その他
の処理ノードは類似の態様で他のI/O装置と通信してもよい。
【手続補正10】
【補正対象書類名】明細書
【補正対象項目名】0093
【補正方法】削除
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ケラー,ジェイムズ・ビィ アメリカ合衆国、94303 カリフォルニア 州、パロ・アルト、アイリス・ウェイ、 210 (72)発明者 シャケル,キース・アール アメリカ合衆国、95131 カリフォルニア 州、サン・ノゼ、ランニング・スプリング ス・ロード、6238 (72)発明者 シャーマ,プニート シンガポール、448912 シンガポール、シ グラップ・ロード、5、ユニット・ナンバ ー・19−38 Fターム(参考) 5B005 JJ00 JJ11 MM01 NN56 TT02

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 アドレスの索引およびウェイ選択を受取るように結合される
    タグアレイ(70)を含み、前記タグアレイ(70)は複数のウェイ(way)を
    含み、前記タグアレイ(70)は複数の部分タグを出力するように構成され、前
    記複数の部分タグの各々は前記複数のウェイの1つに対応し、さらに 前記タグアレイ(70)に結合される制御回路(78)を含み、前記制御回路
    (78)は前記アドレスが前記タグアレイ(70)の前記複数のウェイの第1の
    ウェイにおいてミスしたことに応答してサーチウェイを識別するサーチウェイ選
    択を生成するように構成され、前記第1のウェイは前記ウェイ選択によって識別
    され、前記サーチウェイからの第1の部分タグは前記アドレスの対応する部分と
    マッチする、キャッシュ。
  2. 【請求項2】 入力ウェイ予測および前記サーチウェイ選択を受取るように
    結合されるマルチプレクサ(80)をさらに含み、前記マルチプレクサ(80)
    は前記入力ウェイ予測および前記サーチウェイ選択の間で選択するように構成さ
    れ、かつ前記タグアレイ(70)に前記ウェイ選択を与えるように結合され、前
    記制御回路(78)は前記マルチプレクサ(80)に選択制御を与えるように結
    合され、かつ前記制御回路(78)が前記サーチウェイ選択を生成しないことに
    応答して前記入力ウェイ予測の選択をもたらすように構成され、前記制御回路(
    78)は前記サーチウェイ選択を生成することに応答して前記サーチウェイ選択
    の選択をもたらすように構成される、請求項1に記載のキャッシュ。
  3. 【請求項3】 前記アドレスが前記サーチウェイをミスしたとき、前記制御
    回路(78)は前記第2のサーチウェイからの第2の部分タグが前記アドレスの
    前記対応する部分にマッチすることに応答して第2のサーチウェイ選択を生成す
    るように構成される、請求項1に記載のキャッシュ。
  4. 【請求項4】 前記制御回路(78)は、前記アドレスが前記第1のウェイ
    においてミスし、かつ前記複数の部分タグのいずれもが前記アドレスの前記対応
    する部分にマッチしないことに応答してミス信号をアサートするように構成され
    る、請求項1に記載のキャッシュ。
  5. 【請求項5】 前記制御回路(78)は、前記アドレスが前記第1のウェイ
    においてミスし、対応する部分タグが前記アドレスの前記対応する部分にマッチ
    する前記複数のウェイの各々をサーチし、かつ前記複数のウェイの前記各々にお
    いてミスすることに応答してミス信号をアサートするように構成される、請求項
    1に記載のキャッシュ。
  6. 【請求項6】 フェッチアドレスに応答してウェイ予測を与えるように構成
    されるライン予測子(12)と、 前記ウェイ予測および前記フェッチアドレスを受取るように結合される、請求
    項1から5のいずれかに記載のキャッシュ(14)とを含む、プロセッサ。
  7. 【請求項7】 前記第2のウェイまたは前記付加的なウェイにおいてヒット
    を検出することに応答して、前記キャッシュ(14)は前記ライン予測子(12
    )に更新されたウェイ予測を与えるように構成される、請求項6に記載のプロセ
    ッサ。
  8. 【請求項8】 アドレスに応答してキャッシュ(14)から複数の部分タグ
    を読取るステップと、 前記アドレスが前記キャッシュ(14)の予測されるウェイにおいてヒットす
    るかどうかを定めるステップと、 前記アドレスが前記キャッシュ(14)の前記予測されるウェイにおいてヒッ
    トしないことを定めるステップに応答して、ヒットに対して前記キャッシュ(1
    4)の第2のウェイをサーチするステップとを含み、前記第2のウェイは前記予
    測されるウェイとは異なり、前記第2のウェイに対応する前記複数の部分タグの
    第1の部分タグは前記アドレスの対応する部分にマッチする、方法。
  9. 【請求項9】 前記アドレスが前記第2のウェイにおいてヒットするかどう
    かを定めるステップと、 前記アドレスが前記キャッシュ(14)の前記第2のウェイにおいてヒットし
    ないことを定めるステップに応答して、ヒットに対して前記キャッシュ(14)
    の第3のウェイをサーチするステップとをさらに含み、前記第3のウェイは前記
    予測されるウェイおよび前記第2のウェイとは異なり、前記第3のウェイに対応
    する前記複数の部分タグの第2の部分タグは前記アドレスの前記対応する部分に
    マッチする、請求項8に記載の方法。
  10. 【請求項10】 前記アドレスが前記予測されるウェイにおいてヒットしな
    いことを定めるステップおよび前記複数の部分タグのいずれも前記アドレスの前
    記対応する部分にマッチしないことに応答してミス信号を生成するステップと、 前記アドレスが前記予測されるウェイにおいてヒットしないことを定めるステ
    ップおよび前記複数の部分タグの対応する部分タグが前記アドレスの前記対応す
    る部分にマッチする各ウェイのサーチにおいてヒットを検出しないことに応答し
    てミス信号を生成するステップとをさらに含む、請求項8に記載の方法。
JP2001550564A 2000-01-03 2000-08-08 ウェイ予測がミスした時にサーチを方向付けるための、予測されないウェイからの部分的なタグを提供するキャッシュ Pending JP2003519835A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/476,577 US6687789B1 (en) 2000-01-03 2000-01-03 Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
US09/476,577 2000-01-03
PCT/US2000/021756 WO2001050272A1 (en) 2000-01-03 2000-08-08 Cache which provides partial tags from non-predicted ways to direct search if way prediction misses

Publications (2)

Publication Number Publication Date
JP2003519835A true JP2003519835A (ja) 2003-06-24
JP2003519835A5 JP2003519835A5 (ja) 2007-09-20

Family

ID=23892412

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001550564A Pending JP2003519835A (ja) 2000-01-03 2000-08-08 ウェイ予測がミスした時にサーチを方向付けるための、予測されないウェイからの部分的なタグを提供するキャッシュ

Country Status (7)

Country Link
US (1) US6687789B1 (ja)
EP (1) EP1244970B1 (ja)
JP (1) JP2003519835A (ja)
KR (1) KR100747127B1 (ja)
CN (1) CN1208726C (ja)
DE (1) DE60003235T2 (ja)
WO (1) WO2001050272A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011049051A1 (ja) * 2009-10-20 2011-04-28 国立大学法人電気通信大学 キャッシュメモリおよびその制御方法
US7945766B2 (en) 2008-03-21 2011-05-17 Fujitsu Limited Conditional execution of floating point store instruction by simultaneously reading condition code and store data from multi-port register file

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4027620B2 (ja) * 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
US6944713B2 (en) * 2002-06-18 2005-09-13 Intel Corporation Low power set associative cache
US20040054867A1 (en) * 2002-09-13 2004-03-18 Paulus Stravers Translation lookaside buffer
US6973557B2 (en) * 2003-02-04 2005-12-06 Sun Microsystems, Inc. Apparatus and method for dual access to a banked and pipelined data cache memory unit
US20040181626A1 (en) * 2003-03-13 2004-09-16 Pickett James K. Partial linearly tagged cache memory system
TWI246658B (en) * 2003-04-25 2006-01-01 Ip First Llc Microprocessor, apparatus and method for selectively associating store buffer cache line status with response buffer cache line status
US20040243767A1 (en) * 2003-06-02 2004-12-02 Cierniak Michal J. Method and apparatus for prefetching based upon type identifier tags
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US7117290B2 (en) * 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US7085894B2 (en) * 2003-09-11 2006-08-01 International Business Machines Corporation Selectively accepting cache content
US6961276B2 (en) * 2003-09-17 2005-11-01 International Business Machines Corporation Random access memory having an adaptable latency
US7669009B2 (en) * 2004-09-23 2010-02-23 Intel Corporation Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
KR100688503B1 (ko) * 2004-11-02 2007-03-02 삼성전자주식회사 브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법
US7793040B2 (en) * 2005-06-01 2010-09-07 Microsoft Corporation Content addressable memory architecture
US7707387B2 (en) 2005-06-01 2010-04-27 Microsoft Corporation Conditional execution via content addressable memory and parallel computing execution model
US20060274787A1 (en) * 2005-06-07 2006-12-07 Fong Pong Adaptive cache design for MPT/MTT tables and TCP context
US20060277352A1 (en) * 2005-06-07 2006-12-07 Fong Pong Method and system for supporting large caches with split and canonicalization tags
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US7594079B2 (en) * 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US20100332762A1 (en) * 2009-06-30 2010-12-30 Moga Adrian C Directory cache allocation based on snoop response information
US8392665B2 (en) 2010-09-25 2013-03-05 Intel Corporation Allocation and write policy for a glueless area-efficient directory cache for hotly contested cache lines
CN102193875B (zh) * 2011-04-26 2013-08-14 北京工业大学 多核下基于Cache划分的自适应路预测算法
US20120297256A1 (en) * 2011-05-20 2012-11-22 Qualcomm Incorporated Large Ram Cache
US8458447B2 (en) * 2011-06-17 2013-06-04 Freescale Semiconductor, Inc. Branch target buffer addressing in a data processor
US9460016B2 (en) 2014-06-16 2016-10-04 Analog Devices Global Hamilton Cache way prediction
KR102354990B1 (ko) * 2014-09-17 2022-01-24 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
US9846648B2 (en) * 2015-05-11 2017-12-19 Intel Corporation Create page locality in cache controller cache allocation
GB2553102B (en) * 2016-08-19 2020-05-20 Advanced Risc Mach Ltd A memory unit and method of operation of a memory unit to handle operation requests
US10324850B2 (en) 2016-11-11 2019-06-18 Microsoft Technology Licensing, Llc Serial lookup of tag ways
GB2560336B (en) 2017-03-07 2020-05-06 Imagination Tech Ltd Address generators for verifying integrated circuit hardware designs for cache memory
US10565122B2 (en) 2017-05-30 2020-02-18 Microsoft Technology Licensing, Llc Serial tag lookup with way-prediction
US10545875B2 (en) 2017-12-27 2020-01-28 Advanced Micro Devices, Inc. Tag accelerator for low latency DRAM cache
US11507174B2 (en) * 2020-02-25 2022-11-22 Qualcomm Incorporated System physical address size aware cache memory
CN111988444B (zh) * 2020-08-19 2022-10-18 成都安可信电子股份有限公司 一种同步总线快速搜索终端地址搜索方法
US11928472B2 (en) 2020-09-26 2024-03-12 Intel Corporation Branch prefetch mechanisms for mitigating frontend branch resteers

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62293596A (ja) * 1986-06-12 1987-12-21 Matsushita Electric Ind Co Ltd 連想記憶装置
JPS63163939A (ja) * 1986-12-26 1988-07-07 Nippon Telegr & Teleph Corp <Ntt> キヤツシユメモリの制御方法
JPH02156352A (ja) * 1988-12-09 1990-06-15 Hitachi Ltd キャッシュメモリ
JPH05120135A (ja) * 1991-10-25 1993-05-18 Oki Electric Ind Co Ltd キヤツシユ制御方式
JPH0721785A (ja) * 1993-06-29 1995-01-24 Kawasaki Steel Corp 半導体メモリ
JPH07334423A (ja) * 1994-06-07 1995-12-22 Hitachi Ltd セットアソシアティブ方式のメモリ装置
JPH08263370A (ja) * 1995-03-27 1996-10-11 Toshiba Microelectron Corp キャッシュメモリシステム
JPH1139216A (ja) * 1997-07-24 1999-02-12 Hitachi Ltd 半導体記憶装置及びキャッシュメモリシステム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4914582A (en) 1986-06-27 1990-04-03 Hewlett-Packard Company Cache tag lookaside
US5235697A (en) 1990-06-29 1993-08-10 Digital Equipment Set prediction cache memory system using bits of the main memory address
US5418922A (en) 1992-04-30 1995-05-23 International Business Machines Corporation History table for set prediction for accessing a set associative cache
US5671444A (en) 1994-02-28 1997-09-23 Intel Corporaiton Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers
EP0675443A1 (en) 1994-03-30 1995-10-04 Digital Equipment Corporation Apparatus and method for accessing direct mapped cache
US5732242A (en) * 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US5752069A (en) 1995-08-31 1998-05-12 Advanced Micro Devices, Inc. Superscalar microprocessor employing away prediction structure
US5845323A (en) * 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5893146A (en) 1995-08-31 1999-04-06 Advanced Micro Design, Inc. Cache structure having a reduced tag comparison to enable data transfer from said cache
US5802594A (en) 1995-09-06 1998-09-01 Intel Corporation Single phase pseudo-static instruction translation look-aside buffer
WO1998020421A1 (en) 1996-11-04 1998-05-14 Advanced Micro Devices, Inc. A way prediction structure
US5848428A (en) 1996-12-19 1998-12-08 Compaq Computer Corporation Sense amplifier decoding in a memory device to reduce power consumption
US5956746A (en) * 1997-08-13 1999-09-21 Intel Corporation Computer system having tag information in a processor and cache memory
US6016545A (en) 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62293596A (ja) * 1986-06-12 1987-12-21 Matsushita Electric Ind Co Ltd 連想記憶装置
JPS63163939A (ja) * 1986-12-26 1988-07-07 Nippon Telegr & Teleph Corp <Ntt> キヤツシユメモリの制御方法
JPH02156352A (ja) * 1988-12-09 1990-06-15 Hitachi Ltd キャッシュメモリ
JPH05120135A (ja) * 1991-10-25 1993-05-18 Oki Electric Ind Co Ltd キヤツシユ制御方式
JPH0721785A (ja) * 1993-06-29 1995-01-24 Kawasaki Steel Corp 半導体メモリ
JPH07334423A (ja) * 1994-06-07 1995-12-22 Hitachi Ltd セットアソシアティブ方式のメモリ装置
JPH08263370A (ja) * 1995-03-27 1996-10-11 Toshiba Microelectron Corp キャッシュメモリシステム
JPH1139216A (ja) * 1997-07-24 1999-02-12 Hitachi Ltd 半導体記憶装置及びキャッシュメモリシステム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7945766B2 (en) 2008-03-21 2011-05-17 Fujitsu Limited Conditional execution of floating point store instruction by simultaneously reading condition code and store data from multi-port register file
WO2011049051A1 (ja) * 2009-10-20 2011-04-28 国立大学法人電気通信大学 キャッシュメモリおよびその制御方法
JP5622155B2 (ja) * 2009-10-20 2014-11-12 国立大学法人電気通信大学 キャッシュメモリおよびその制御方法
US8904111B2 (en) 2009-10-20 2014-12-02 The University Of Electro-Communications Cache memory with CAM and SRAM sub-tags and generation control

Also Published As

Publication number Publication date
EP1244970A1 (en) 2002-10-02
DE60003235T2 (de) 2004-04-08
DE60003235D1 (de) 2003-07-10
WO2001050272A1 (en) 2001-07-12
US6687789B1 (en) 2004-02-03
CN1415092A (zh) 2003-04-30
KR20020067596A (ko) 2002-08-22
CN1208726C (zh) 2005-06-29
KR100747127B1 (ko) 2007-08-09
EP1244970B1 (en) 2003-06-04

Similar Documents

Publication Publication Date Title
EP1244970B1 (en) Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
US8458408B2 (en) Cache directed sequential prefetch
US6425075B1 (en) Branch prediction device with two levels of branch prediction cache
US6502185B1 (en) Pipeline elements which verify predecode information
JP3542021B2 (ja) セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置
JP3907809B2 (ja) 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ
KR100708010B1 (ko) 인덱스와 선택적 경로 정합에 기반하여 데이터를 포워딩하는 저장 버퍼
US5802602A (en) Method and apparatus for performing reads of related data from a set-associative cache memory
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
US6481251B1 (en) Store queue number assignment and tracking
US5793941A (en) On-chip primary cache testing circuit and test method
US7003629B1 (en) System and method of identifying liveness groups within traces stored in a trace cache
US6622237B1 (en) Store to load forward predictor training using delta tag
US6321326B1 (en) Prefetch instruction specifying destination functional unit and read/write access mode
EP1244961B1 (en) Store to load forwarding predictor with untraining
US20050268076A1 (en) Variable group associativity branch target address cache delivering multiple target addresses per cache line
US5774710A (en) Cache line branch prediction scheme that shares among sets of a set associative cache
US6564315B1 (en) Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction
US7571283B2 (en) Mechanism in a multi-threaded microprocessor to maintain best case demand instruction redispatch
US20030182543A1 (en) Training line predictor for branch targets
US5737749A (en) Method and system for dynamically sharing cache capacity in a microprocessor
US8635408B2 (en) Controlling power of a cache based on predicting the instruction cache way for high power applications
US6363471B1 (en) Mechanism for handling 16-bit addressing in a processor
US6704854B1 (en) Determination of execution resource allocation based on concurrently executable misaligned memory operations
WO2022026578A1 (en) Method and apparatus for back end gather/scatter memory coalescing

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070720

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070720

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101207

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110426