JP2003514299A - インデックスおよび任意の様式一致に基づいてデータを転送するストアバッファ - Google Patents

インデックスおよび任意の様式一致に基づいてデータを転送するストアバッファ

Info

Publication number
JP2003514299A
JP2003514299A JP2001536680A JP2001536680A JP2003514299A JP 2003514299 A JP2003514299 A JP 2003514299A JP 2001536680 A JP2001536680 A JP 2001536680A JP 2001536680 A JP2001536680 A JP 2001536680A JP 2003514299 A JP2003514299 A JP 2003514299A
Authority
JP
Japan
Prior art keywords
store
load
data
hit
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.)
Granted
Application number
JP2001536680A
Other languages
English (en)
Other versions
JP4699666B2 (ja
JP2003514299A5 (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 JP2003514299A publication Critical patent/JP2003514299A/ja
Publication of JP2003514299A5 publication Critical patent/JP2003514299A5/ja
Application granted granted Critical
Publication of JP4699666B2 publication Critical patent/JP4699666B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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

Landscapes

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

Abstract

(57)【要約】 装置は、ストアメモリ動作に対応する情報をストアするように構成されたバッファと、バッファにおいて示されているストアの1つにヒットするロードを検出する回路とを含む。より具体的には、この回路は、ロードアドレスのインデックス部をバッファにストアされたストアアドレスのインデックス部と比較する。これらのインデックスが一致しかつロードおよびストア双方がデータキャッシュ内でヒットしていれば、ロードおよびストアは同じキャッシュラインにアクセスしている。キャッシュライン内の1以上のバイトがストアにより更新されロードにより読出される場合、ストアデータはロードのために転送される。ある実施例において、この回路は、ロードおよびストアインデックスが一致しかつストアがデータキャッシュ内でヒットしていれば、データを投機的に転送する。次に、ロードがキャッシュ内でヒット/ミスであると判断されれば、この転送がロードのヒット/ミス表示を用いて検査される。セットアソシアティブの実施例では、ロードがヒットする様式をストアがヒットする様式と比較してこの転送が正確かどうかがさらに検査される。

Description

【発明の詳細な説明】
【0001】
【発明の分野】
本発明は、プロセッサの分野に関し、より特定的にはデータをストアバッファ
から従属するロードのために転送することに関する。
【0002】
【関連技術の説明】
プロセッサは典型的に、ストアメモリ動作をストアするためのバッファを用い
る。このストアメモリ動作は、実行済みである(たとえばストアアドレスが既に
生成されている、ストアデータがあるかもしれない)が、まだ投機的であるため
メモリ(またはこのプロセッサが用いるデータキャッシュ)に記憶させる準備が
整っていないものである。本明細書で用いている「メモリ動作」という用語は、
プロセッサおよびメモリ間のデータ転送(この転送はキャッシュ内で行なわれる
可能性がある)を指定する動作を意味する。ロードメモリ動作は、メモリからプ
ロセッサへのデータ転送を指定し、ストアメモリ動作はプロセッサからメモリへ
のデータ転送を指定する。本明細書においては、ロードメモリ動作をより簡潔に
「ロード」と呼ぶこともあり、同様に、ストアメモリ動作を「ストア」と呼ぶこ
ともある。メモリ動作は、プロセッサが用いる命令セット次第で、メモリオペラ
ンドに直接アクセスして定められた機能(たとえば算術演算、論理など)を果た
すための命令内で暗示されていることもあり、データ転送のみを行なう明示命令
のこともある。一般的に、メモリ動作は、このメモリ動作の1以上のオペランド
から生成されたアドレスを介して関係する記憶場所を指定する。本明細書ではこ
のアドレスのことを一般的に「データアドレス」と呼ぶ、または、(対応するメ
モリ動作がロードであれば)ロードアドレスと呼び、(対応するメモリ動作がス
トアであれば)ストアアドレスと呼ぶ。他方、命令そのもののメモリ内での場所
を示すアドレスは「命令アドレス」と呼ぶ。
【0003】 ストアは、後に続くロードが実行される際にバッファ内で待ち行列に入れられ
ていることがあり、そのため、典型的にプロセッサはバッファを検査して、ロー
ドが読出す1以上のバイトを更新するストアがバッファ内で待ち行列に入れられ
ているかどうか判断する(すなわちこのロードがストアに従属するのかまたはス
トアに「ヒット」するのか判断)。一般的には、ロードアドレスをストアアドレ
スと比較してロードがストアにヒットしているかどうか判断する。ヒットが検出
されれば、このロードのためにストアデータをキャッシュデータの代わりに転送
する。したがって、ヒットを、キャッシュからデータにアクセスするのに要する
時間と同じまたはそれより短い時間で検出することが望ましい。
【0004】 ロードの待ち時間(たとえば、あるロードを実行してからこのロードによって
読出されたデータを使用できるようになるまでの時間)を最短にすることは、多
くのプロセッサの性能にとって重要である。あいにく、アドレスの比較は、アド
レスのビット数が比較的多い(たとえば32ビット、または32ビットを超えて
64ビットまでが一般的になりつつある)ため、時間のかかる作業である。した
がって、ロードがバッファ内のストアにヒットしているかどうか判断するのに要
する時間を短縮化することが、プロセッサの性能を高めることになる。なぜなら
、この短縮化がロードの待ち時間の短縮になり得るからである。その代わりとし
ては、アドレスを比較するのにかかる時間が減少すれば、所与のサイクル時間お
よび所与のロード待ち時間に対するタイミングの制約を満たしやすくなる。
【0005】 仮想アドレス指定およびアドレス変換を用いると、ロードアドレスをバッファ
内のストアアドレスと照合する間に経過する時間を短縮するというさらなる問題
が生じ得る。仮想アドレス指定を用いる場合、ロードおよびストアの実行により
生成されるデータアドレスは、(たとえばページング変換方式によって)物理ア
ドレスに変換される仮想アドレスである。複数の仮想アドレスが所与の物理アド
レスに対応しているかもしれないため(「別名(エイリアス)」と呼ばれる)、
ロードおよびストアの物理データアドレスを比較して確実にバッファから正確な
転送を行なう(または行なわない)ようにする。不都合なことにロードの物理ア
ドレスは、典型的に変換索引バッファ(TLB)から生成されるため、キャッシ
ュアクセスがほぼ完了するまで利用できないことが多く、バッファ内のストアに
ヒットしていることを迅速だが正確なやり方で検出するという問題がさらに悪化
する。
【0006】
【発明の概要】
上記の問題は主として、本明細書で説明するようにストアデータをロードのた
めに転送する装置により解決される。この装置は、ストアメモリ動作に対応する
情報をストアするように構成されたバッファと、バッファにおいて示されたスト
アの1つにヒットするロードを検出する回路とを含む。より具体的には、この回
路は、ロードアドレスのインデックス部をバッファにストアされているストアア
ドレスのインデックス部と比較する。これらのインデックスが一致しかつロード
およびストア双方がデータキャッシュ内でヒットしていれば、ロードおよびスト
アは同じキャッシュラインにアクセスしている。このキャッシュライン内の1以
上のバイトがストアにより更新されロードにより読出されるならば、ストアデー
タはそのロードのために転送される。好都合なことに、この比較的小規模のロー
ドおよびストアインデックス比較は速やかに完了する。加えて、(すべてではな
いにしても)ほとんどのインデックスが典型的には物理(変換されていない)ビ
ットなので、比較は、変換されているロードアドレスよりも前に実施することが
でき、比較の正確性に大きな影響はない。
【0007】 ある実施例では、上記回路は、ロードおよびストアインデックスが一致しかつ
ストアがデータキャッシュ内でヒットしていれば、データを投機的に転送する。
次に、ロードがキャッシュ内でヒット/ミスしていると判断されると、この転送
が、ロードのヒット/ミス表示を用いて検査される。セットアソシアティブの実
施例では、ロードのヒットの様式(仕方)をストアのヒットの様式(仕方)と比
較して転送の正確度をさらに検査する。
【0008】 概して、ある装置が意図されている。この装置は、バッファとバッファに結合
された回路とを含む。バッファは複数のエントリを含み、複数のエントリは各々
、(i)ストアメモリ動作のストアアドレスの少なくともインデックス部と、(
ii)ストアメモリ動作がデータキャッシュ内でヒットしているかどうか示すヒッ
ト表示と、(iii)このストアメモリ動作に対応するストアデータとをストアす
るように構成される。回路は、(i)データキャッシュを探索するロードメモリ
動作のロードアドレスのインデックス部と、(ii)ロードメモリ動作がデータキ
ャッシュ内でヒットしているかどうか示すロードヒット信号とを受けるように結
合される。この回路は、ストアデータを、複数のエントリのうち第1のエントリ
から、第1のエントリにストアされたインデックス部がロードアドレスのインデ
ックス部に一致することに応じて、かつさらに、第1のエントリのヒット表示が
ヒットを示しロードヒット信号がヒットを示すことに応じて、転送するように構
成される。
【0009】 さらに、データキャッシュとデータキャッシュに結合されたロード/ストアユ
ニットとを含むプロセッサが意図されている。ロード/ストアユニットは、複数
のエントリを含むバッファを備え、複数のエントリは各々、(i)ストアメモリ
動作のストアアドレスの少なくともインデックス部と、(ii)ストアメモリ動作
がデータキャッシュ内でヒットしているかどうか示すヒット表示と、(iii)こ
のストアメモリ動作に対応するストアデータとをストアするように構成される。
ロード/ストアユニットは、ロードアドレスを用いてデータキャッシュを探索し
、それに応じてデータキャッシュからヒット信号を受けるように構成される。加
えて、ロード/ストアユニットは、ストアデータを、複数のエントリのうち第1
のエントリから、ロードアドレスのインデックス部が第1のエントリにストアさ
れたインデックス部に一致することに応じて、かつさらに、第1のエントリのヒ
ット表示がヒットを示しヒット信号がヒットを示すことに応じて、転送すると決
定する。
【0010】 さらに、ある方法が意図されている。データキャッシュはロードアドレスを用
いて探索される。ロードアドレスのインデックス部がバッファにストアされたス
トアアドレスのインデックス部と比較される。ストアアドレスに対応するストア
データが、ロードアドレスに対応するロードメモリ動作のために転送される。こ
の転送は、比較によりロードアドレスのインデックス部がストアアドレスのイン
デックス部と一致すると判断されたことに応じて、かつさらに、ロードアドレス
およびストアアドレス双方がデータキャッシュ内でヒットしていることに応じて
、行なわれる。
【0011】 本発明の上記以外の目的および利点は、以下の詳細な説明を読み添付の図面を
参照することによって明らかになるであろう。
【0012】 本発明には種々の変形および代替形が可能であり、本発明の具体的な実施例が
図面において例示され本明細書において詳細に説明されている。しかしながら、
図面およびその詳細な説明は本発明を開示された特定の形態に限定することを意
図したものではなく、反対に、前掲の特許請求の範囲において定められた本発明
の精神および範囲に含まれるすべての変形、等価物および代替形を包含すること
を意図している。
【0013】
【好ましい実施例の詳細な説明】
次に図1を参照して、ストア待ち行列400、ヒット制御回路402ならびに
比較器404および406の一実施例のブロック図が示される。この図1に示し
た装置は、ストアに関連する情報をストアがデータキャッシュ(および/または
メモリ)に与えられるまで保持するデータキャッシュを有するプロセッサにおい
て用いることができ、さらに、ストアにヒットするロードを検出しストアデータ
をストア待ち行列400からロードのために転送するのに用いることができる。
他の実施例も可能であり意図されている。図1の実施例では、ストア待ち行列4
00は、実行されたストアに対応するストア情報を受けるように結合され、さら
にヒット制御回路402ならびに比較器404および406に結合される。比較
器404および406はさらに、ヒット制御回路402に結合される。ヒット制
御回路402は、転送信号および転送取消信号を与えるように結合される。
【0014】 概して、図1に示した装置は、ストア待ち行列400において示されているス
トアにヒットするロードを検出し、そのロードのためにストアに対応するデータ
を(データキャッシュからのキャッシュデータの代わりに)ストア待ち行列40
0から転送するように構成される。この装置は、ロードアドレス全体をストア待
ち行列400にストアされたストアアドレスと比較するのではなく、ロードアド
レスのインデックス部(「ロードインデックス」)をストアアドレスのインデッ
クス部(「ストアインデックス」)と比較する。アドレスの一部を比較するため
、この比較はより速やかに行なわれ、結果として、ロードがストア待ち行列40
0に示されたストアにヒットするかどうか判断するのに要する時間が短縮される
。ロードおよびストア双方がデータキャッシュにおいてヒットしかつインデック
ス部が一致すれば、ロードおよびストアはデータキャッシュ内の同じキャッシュ
ラインにアクセスしている。データキャッシュが直接マッピングの場合、ロード
およびストアは同じキャッシュラインにアクセスしている。データキャッシュが
セットアソシアティブの場合、ストアのヒットの様式およびロードのヒットの様
式を比較して、ロードおよびストアが同じキャッシュラインにアクセスしている
かどうか判断することができる。ロードがヒットでありストアがミスである(ま
たはその逆)の場合、ロードおよびストアは同じキャッシュラインにアクセスし
ていない(インデックス部はどれも仮想でないと仮定)。したがって、ロードは
ストアにヒットしておらず、ストアデータをストア待ち行列400から転送する
必要はない。ロードおよびストア双方がミスの場合、ロードおよびストアは同じ
キャッシュラインにアクセスしているかもしれない。しかしながら、データキャ
ッシュは、ロードがミスの場合データをキャッシュからロードのために転送して
おらず、したがって、ストアデータをストア待ち行列400から転送する必要は
ない。ロードを、データキャッシュがロードが読出したキャッシュラインで満た
された後に(または満たすデータをキャッシュに書込んでいる間に)再び試みて
もよく、そのキャッシュラインへのストアがキャッシュを満たす間にヒットとな
る可能性がある。こうして、再度ロードを試みる間に、ロードがストアにヒット
することが検出される可能性がある。
【0015】 典型的に、仮想アドレスから物理アドレスへの変換は、ページの粒度に対して
実施される。最下位アドレスビットは、ページに対するオフセットを形成しこの
変換では変更されない。最上位アドレスビットは仮想から物理に変換される。た
とえば、32ビットの仮想アドレスおよび4キロバイトのページサイズを用いた
実施例では、最下位12ビットがページオフセットであり最上位20ビットが変
換される。これ以外のページサイズが意図されている。典型的には、アドレスの
インデックス部の(すべてではないにしても)ほとんどの部分は、ページオフセ
ット内にあるため、仮想から物理へのアドレス変換中に変更されることはない。
したがって、ロードがストアにヒットするかどうか検出する際の正確度に対する
エイリアスの影響を、減じるまたは排除することができる。さらに、仮想ロード
アドレスを比較において用い、物理ストアアドレス(メモリなどに与えるために
用いられる)をストア待ち行列400にストアしてもよい。インデックス部の1
以上のビットが仮想−物理変換において変更されるならば、仮想ビットもストア
すればよい。したがって、仮想ロードアドレスと比較するために仮想ストアアド
レスをストアするのに追加する記憶量は最小でよい(たとえば変換されかつイン
デックスの一部でもあるビット)。
【0016】 図1に示した実施例を、セットアソシアティブデータキャッシュを用いたプロ
セッサで使用してもよい。直接マッピングデータキャッシュを用いる実施例では
、様式表示および関連する比較器はない。より具体的には、ストア待ち行列40
0が複数のエントリを含む。たとえば、図1にはエントリ408Aおよび408
Bが示されており、ストア待ち行列400はさらなるエントリ(図示せず)を含
み得る。各エントリ408は、ストアメモリ動作に対応する情報をストアするよ
うに構成されている。ストア待ち行列400は、ストアに対応する情報をこのス
トアの実行の際に受取り、この情報を、ストアが回収されてデータキャッシュお
よび/またはメモリに与えられてしまうまで保持する。ここに示されている実施
例では、ひとつのエントリは、有効表示(V)、ヒット表示(H)、回収表示(
R)、アドレスタグ部(ADDR−Tag)、アドレスインデックス部(ADDR−Index)
、オフセットおよびサイズ情報(Offset and Size)、様式表示(Way)、および
データ(Data)を含む。有効表示は、エントリが有効かどうか(たとえばストア
がエントリ内の情報で表わされているかどうか)示す。ヒット表示は、ストアが
データキャッシュ内でヒットしているかどうか示す。回収表示は、ストアが回収
されている(したがって、データキャッシュおよび/またはメモリに与えるのに
適切である)かどうか示す。この有効、ヒットおよび回収表示に対しては適切な
表示を用いればよい。たとえば、各表示は、セットされると一方の状態を示しク
リアされると他方の状態を示すビットを含み得る。以下の説明(下記図5および
6に示された実施例の説明を含む)では、有効、ヒットおよび回収表示のことを
、有効、ヒットおよび回収ビットと呼ぶ。しかしながら、他の実施例でこの符号
化を逆にしたり他の符号化を用いることもある。アドレスタグ部はタグとしてデ
ータキャッシュにストアされるアドレスの部分であり、アドレスインデックス部
はインデックスとしてデータキャッシュが用いる部分である。オフセットおよび
サイズ情報は、ストアにより更新されてキャッシュライン内にあるバイトを示す
。様式表示は、ヒットビットがセットされた場合(ストアのヒットを示す)、(
セットアソシアティブの実施例において)ストアがデータキャッシュでヒットす
る様式を示す。最後に、ここでのデータは、データキャッシュおよび/またはメ
モリに与えられるストアデータである。
【0017】 比較器404は、ストア待ち行列400の各エントリからストアインデックス
を受けるように結合され、かつ、実行されているロードのロードインデックスを
受けるように結合される。比較器404は、ロードおよびストアインデックスを
比較し、一致が検出されるとヒット制御回路402に対し信号をアサートする。
比較器404はこのように、ストア待ち行列400の各エントリに対する比較器
回路を表わしており、各比較器回路が出力信号をヒット制御回路402に与える
。同様に、比較器406はストア待ち行列400の各エントリにストアされた様
式表示を受けるように結合され、かつ、ロード様式表示を受けるように結合され
る。比較器406は、ロードおよびストア様式表示を比較し、一致が検出される
とヒット制御回路402に対し信号をアサートする。比較器406はこのように
、ストア待ち行列400の各エントリに対する比較器回路を表わしており、各比
較器回路が出力信号をヒット制御回路402に与える。なお、所望されれば比較
器404および406を連想記憶装置(CAM)構成としてストア待ち行列40
0に組み込んでもよい。
【0018】 ヒット制御回路402は、各エントリからのヒットビットおよび実行されてい
るロードについてのヒット信号を受けるように結合される。ロードインデックス
およびストア待ち行列400に示されたストアのストアインデックスが一致すれ
ば、ロードおよびこのストアはヒットであり、ロードおよびこのストアの様式表
示は一致し、ヒット制御回路402により、データがストア待ち行列400から
ロードのために転送される。より具体的には、ヒット制御回路402は、ストア
待ち行列400に、ヒットしているエントリのエントリ番号の表示で知らせ、ス
トア待ち行列400は、このエントリからのデータを、データキャッシュからの
キャッシュデータの代わりに転送するために与える。
【0019】 なお、ロードアドレスは、ロードによるデータキャッシュの探索の開始時に、
比較のために利用でき、ロードヒット信号は、データキャッシュの探索の終了近
くまで(たとえばロードアドレスが変換されてキャッシュタグと比較された後)
決定されない。さらに、ロードの様式表示も、ヒット信号が決定されるまで決定
されない。したがって、この実施例において、ヒット制御回路402は、ロード
インデックスおよびストアインデックスの一致、ならびに、ストアのヒットビッ
トがストアがヒットであると示すことに応じて、ストア待ち行列400からのデ
ータ転送を合図する(かつストア待ち行列400にデータを転送させる)ように
構成される。ヒット制御回路402は、図1に示した転送信号をアサートしてデ
ータ転送を知らせる。次に、ロードのために、ヒット信号および様式表示を求め
る。ヒット制御回路402は、ロードがストアにヒットしていることを、ロード
様式表示をストア様式表示と比較しヒット信号がアサートされてヒットを示して
いることを確認することにより、確かめる。様式表示が一致しかつロードのヒッ
ト信号がヒットを示しているならば、ヒット制御回路402は、転送が正しいと
判断する。他方、転送が誤りである場合、ヒット制御回路402は、図1に示し
た転送取消信号をアサートして、転送されたストアデータを受けたプロセッサの
部分に、転送が誤りであると知らせる。ある具体的な実施例では、データの転送
を第1のクロックサイクルで行ない、転送の取消しを第1のクロックサイクルに
続く第2のクロックサイクルで行なう。
【0020】 上記は、図1に示した装置の、1つのロードが実行される場合の動作について
説明したものである。しかしながら、複数のロードが同時に実行される実施例も
意図されている。上記のように各ロードを同時に処理することができる。
【0021】 ロードおよびストアインデックス(ならびにデータアドレスのヒット様式)を
比較して、ロードおよびストアが同じキャッシュラインにアクセスしていると判
断する。さらなる情報を用いて、ロードが読出した少なくとも1バイトがストア
により更新されていると判断する。たとえば、アドレスのオフセット部分ならび
にロードおよびストアに影響されるサイズ(すなわちバイト数)を用いることが
できる。オフセットおよびサイズ情報は、設計上の選択によって、何らかの適切
なフォーマットで与えて符号化することができる。たとえば、オフセットおよび
サイズ情報は、バイトイネーブルマスクを含み、ここで各バイトの1ビットがキ
ャッシュラインにある。このビットがセットされると、対応するバイトがアクセ
スされる。ロードおよびストアに対するバイトイネーブルマスクの各ビットの論
理和をとり、このバイトがロードにより読出されかつストアにより書込まれるか
どうか判断する。バイトイネーブルマスクを、キャッシュラインの一部のために
生成してもよく(たとえばキャッシュが1キャッシュラインあたり複数のバンク
を有する場合)、バンク選択のために用いるオフセットの部分を、バイトイネー
ブルマスクビットの論理和に加え、ロードおよびストアアドレス間で比較する。
ロードおよびストアアドレスのオフセットの部分を、インデックス比較に加えて
、比較器404を用いて比較する。ヒット制御回路402は、(上記のインデッ
クス比較、ヒットビットおよび様式表示に加えて)オフセットおよびサイズ情報
を用いて、ストア待ち行列400にストアされたデータをロードのために転送す
るかどうか判断する。
【0022】 なお、ロードの実行中にストア待ち行列400の2以上のエントリがヒットす
る場合がある。ヒット制御回路402は、ヒットしているエントリに対応するス
トアのうち、プログラム順序で最も新しい(最後に実行された)ストアを求め、
データをそのエントリから転送する。また、ロードが読出した1以上のバイトを
、ロードがヒットしたストアが、ロードが読出した1以上の他のバイトについて
は更新しない場合がある。その場合、データキャッシュは、ストアデータをキャ
ッシュデータと組合せて、ロードが読出したバイトを与える。複数のストアが、
あるロードが読出したバイトのうち異なるバイトを与える場合、このロードを回
収して再び試みる。複数のストアのうち1以上を回収してデータキャッシュに与
え、これらストアにより更新されロードによって読出されたバイトを、データキ
ャッシュから与える。その代わりとして、図1の装置は、異なるストアからのバ
イトを組合せてロードデータを与えてもよい。所望に応じ、これ以外の実施例に
おいて上記のモデルを他のやり方で処理してもよい。
【0023】 なお、ここで示されている比較器406は、ストア待ち行列400にストアさ
れた様式表示をロードの様式表示と比較しているが、これに代わる実施例では、
ロードのためにデータを転送するのに用いるエントリから様式表示を読出し(こ
の転送がインデックス比較およびデータキャッシュにおけるストアヒットに基づ
く場合)、読出された様式表示をロード様式表示と比較してロードおよびストア
が同じ様式でヒットしているかどうか検査する。
【0024】 本明細書で用いているアドレスのインデックス部(または簡潔に「インデック
ス」)は、このアドレスに対応するデータをストアするのに適切な1以上のキャ
ッシュエントリを選択するために用いる部分である。加えて、データアドレスは
、データキャッシュ内で、このデータアドレスが識別するデータがそのデータキ
ャッシュにストアされている場合に「ヒットする」。データアドレスは、データ
キャッシュ内で、このデータアドレスが識別するデータがそのデータキャッシュ
にストアされている場合に「ミスする」。さらに、セットアソシアティブデータ
キャッシュは、所与のインデックスに対応するキャッシュラインをストアするの
に適切な複数のキャッシュエントリを含む。各エントリはそのインデックスに対
しては異なる様式である。
【0025】 図2は、ロード/ストアユニット内でストア待ち行列400を用いるプロセッ
サの実施例を示す。その代わりとして、このプロセッサおよびロード/ストアユ
ニットは、図4−6に関連して説明する待ち行列構成を用いてもよい。図1の装
置または図4−6の実施例を用いるこれ以外のプロセッサの実施例も意図されて
いる。
【0026】 プロセッサ概観 次に図2を参照して、プロセッサ10の一実施例のブロック図が示される。こ
れ以外の実施例が可能であり意図されている。図2に示すように、プロセッサ1
0は、プリフェッチ/プリデコードユニット12と、分岐予測ユニット14と、
命令キャッシュ16と、命令アライメントユニット18と、複数のデコードユニ
ット20A−20Cと、複数のリザベーション(保留、reservation)ステーシ
ョン22A−22Cと、複数の機能ユニット24A−24Cと、ロード/ストア
ユニット26と、データキャッシュ28と、レジスタファイル30と、リオーダ
(reorder)バッファ32と、MROMユニット34と、バスインターフェイス
ユニット37とを含む。本明細書において特定の参照番号およびこれに続く文字
で示されている構成要素はまとめて、参照番号のみを用いて表わす。例として、
デコードユニット20A−20Cはまとめてデコードユニット20と示す。
【0027】 プリフェッチ/プリデコードユニット12は、バスインターフェイスユニット
37から命令を受けるように結合され、かつさらに、命令キャッシュ16および
分岐予測ユニット14に結合される。同様に、分岐予測ユニット14は、命令キ
ャッシュ16に結合される。さらに、分岐予測ユニット14は、デコードユニッ
ト20および機能ユニット24に結合される。命令キャッシュ16はさらに、M
ROMユニット34および命令アライメントユニット18に結合される。命令ア
ライメントユニット18は、デコードユニット20に結合される。各デコードユ
ニット20A−20Cは、ロード/ストアユニット26およびそれぞれのリザベ
ーションステーション22A−22Cに結合される。リザベーションステーショ
ン22A−22Cはさらに、それぞれの機能ユニット24A−24Cに結合され
る。加えて、デコードユニット20およびリザベーションステーション22は、
レジスタファイル30およびリオーダバッファ32に結合される。機能ユニット
24はまた、ロード/ストアユニット26、レジスタファイル30およびリオー
ダバッファ32に結合される。データキャッシュ28は、ロード/ストアユニッ
ト26およびバスインターフェイスユニット37に結合される。バスインターフ
ェイスユニット37はさらに、L2キャッシュへのL2インターフェイスおよび
バスに結合される。最後に、MROMユニット34は、デコードユニット20に
結合される。
【0028】 命令キャッシュ16は、命令をストアするために設けられた高速キャッシュメ
モリである。命令は、命令キャッシュ16からフェッチされデコードユニット2
0にディスパッチされる。ある実施例において、命令キャッシュ16は、64キ
ロバイトまでの命令を、64のバイトライン(1バイトは8バイナリビットを含
む)を有する2ウェイセットアソシアティブ構成内にストアするように構成され
る。その代わりとして、これ以外の所望の構成およびサイズを用いてもよい。例
として、命令キャッシュ16を、フルアソシアティブ、セットアソシアティブま
たはダイレクトマッピング構成として実現してもよい。
【0029】 命令は、プリフェッチ/プリデコードユニット12により、命令キャッシュ1
6にストアされる。命令を、要求される前に、命令キャッシュ16からプリフェ
ッチ方法に従いプリフェッチしてもよい。プリフェッチ/プリデコードユニット
12は、種々のプリフェッチ方法を用いることができる。プリフェッチ/プリデ
コードユニット12は、命令を命令キャッシュ16に転送する際、命令の各バイ
トにつき3つのプリデコードビットすなわちスタートビット、エンドビットおよ
び機能ビットを生成する。プリデコードビットは、各命令の境界を示すタグを形
成する。プリデコードタグは、以下でより具体的に説明するように、所与の命令
をデコードユニット20が直接デコードできるかどうか、または、命令をMRO
Mユニット34が制御するマイクロコード手続を呼出すことにより実行するかど
うかといった、さらなる情報も伝える。さらに、プリフェッチ/プリデコードユ
ニット12を、分岐命令を検出し分岐命令に対応する分岐予測情報を分岐予測ユ
ニット14にストアするように構成してもよい。これ以外の実施例において何ら
かの適切なプリデコード方法を用いてもよい。
【0030】 次に、可変バイト長命令セットを用いるプロセッサ10のある実施例において
プリデコードタグを符号化することについて説明する。可変バイト長命令セット
は、異なる命令が異なる数のバイトを占める命令セットである。プロセッサ10
の一実施例で用いる可変バイト長命令セットの一例としてx86命令セットを挙
げる。
【0031】 ここで例として挙げる符号化では、所与のバイトがある命令の第1のバイトで
ある場合、このバイトに対しスタートビットがセットされる。このバイトが命令
の最終バイトである場合、このバイトに対しエンドビットがセットされる。デコ
ードユニット20が直接デコードできる命令のことを「高速経路」命令と呼ぶ。
残りのx86命令のことを、ある実施例ではMROM命令と呼ぶ。高速経路命令
については、機能ビットは、命令に含まれる各プレフィックスバイトに対しセッ
トされ、これ以外のバイトに対してはクリアされる。その代わりとして、MRO
M命令については、機能ビットは、各プレフィックスバイトに対しクリアされ、
これ以外のバイトに対してはセットされる。命令の種類を、エンドバイトに対応
する機能ビットを調べることによって決定できる。この機能ビットがクリアされ
ている場合、命令は高速経路命令である。逆に、この機能ビットがセットされて
いる場合、命令はMROM命令である。したがって、ある命令の演算コードの場
所は、デコードユニット20により直接デコードされる命令内の、命令の第1の
クリアの機能ビットに関連するバイトとして、求めることができる。たとえば、
2つのプレフィックスバイト、Mod R/Mバイト、および中間バイトを含む高速経
路命令は、以下のようなスタート、エンドおよび機能ビットを有する。
【0032】 スタートビット10000 エンドビット 00001 機能ビット 11000 MROM命令は、デコードユニット20がデコードするには複雑すぎると判断
される命令である。MROM命令は、MROMユニット34を呼出すことによっ
て実行される。より具体的には、MROM命令がある場合、MROMユニット3
4は、この命令を解析し規定された高速経路命令のサブセットに発行して所望の
動作を実施する。MROMユニット34は、この高速経路命令のサブセットをデ
コードユニット20にディスパッチする。
【0033】 プロセッサ10は、条件付分岐命令に続く命令を投機的にフェッチするために
分岐予測を用いる。分岐予測ユニット14は、分岐予測動作を行なうために含ま
れている。ある実施例では、分岐予測ユニット14は、命令キャッシュ16内の
1つのキャッシュラインの16バイト部分につき2つまでの分岐ターゲットアド
レスおよび対応するテイクン/ノットテイクン(taken/not taken)予測をキャ
ッシュする分岐ターゲットバッファを用いる。この分岐ターゲットバッファは、
たとえば2048のエントリまたはこれ以外の適切な数のエントリを含む。プリ
フェッチ/プリデコードユニット12は、特定のラインがプリデコードされたと
きに最初の分岐ターゲットを求める。続いて、キャッシュラインに対応する分岐
ターゲットの更新が、キャッシュライン内で命令を実行したことによって発生す
る。命令キャッシュ16は、フェッチされている命令アドレスを示し、分岐予測
ユニット14は、どの分岐ターゲットアドレスを選択して分岐予測を形成するか
判断する。デコードユニット20および機能ユニット24は、分岐予測ユニット
14に更新情報を与える。デコードユニット20は、分岐予測ユニット14が予
測しなかった分岐命令を検出する。機能ユニット24は、分岐命令を実行し、予
測された分岐方向が誤りかどうか判断する。分岐方向が「テイクン」となるのは
、後続の命令が分岐命令のターゲットアドレスからフェッチされる場合である。
逆に、分岐方向が「ノットテイクン」であるのは、後続の命令が分岐命令に続く
記憶場所からフェッチされる場合である。分岐命令予測誤りが検出されると、誤
って予測された分岐に続く命令が、プロセッサ10の多様なユニットから廃棄さ
れる。これに代わる構成では、分岐予測ユニット14は、デコードユニット20
および機能ユニット24ではなくリオーダバッファ32に結合されて、リオーダ
バッファ32から分岐予測誤り情報を受ける。分岐予測ユニット14は種々の適
切な分岐予測アルゴリズムを用いることができる。
【0034】 命令キャッシュ16からフェッチされた命令は、命令アライメントユニット1
8に送られる。命令が命令キャッシュ16からフェッチされると、対応するプリ
デコードデータがスキャンされ、命令アライメントユニット18に(かつMRO
Mユニット34に)、フェッチされた命令に関する情報が与えられる。命令アラ
イメントユニット18は、スキャンデータを用いて各デコードユニット20に命
令を整列させる。ある実施例において、命令アライメントユニット18は、3組
の8命令バイトからの命令をデコードユニット20に整列させる。デコードユニ
ット20Aは、現在デコードユニット20Bおよび20Cが受けている命令に(
プログラム順序で)先行する命令を受ける。同様に、デコードユニット20Bは
、現在デコードユニット20Cが受けている命令にプログラム順序で先行する命
令を受ける。
【0035】 デコードユニット20は、命令アライメントユニット18から受けた命令をデ
コードするように構成される。レジスタオペランド情報が検出され、レジスタフ
ァイル30およびリオーダバッファ32に送られる。さらに、命令が1以上のメ
モリ動作の実施を要求するものであれば、デコードユニット20は、このメモリ
動作をロード/ストアユニット26に送る。各命令は、機能ユニット24に対す
る1組の制御値にデコードされ、これらの制御値が、オペランドアドレス情報お
よび命令に含まれた変位または即値データとともに、リザベーションステーショ
ン22に送られる。ある特定の実施例では、各命令は、2つまでの動作にデコー
ドされ、機能ユニット24A−24Cにより別々に実行される。
【0036】 プロセッサ10は、命令順変更(アウトオブオーダ、out-of-order)実行をサ
ポートし、そのため、リオーダバッファ32を用いて、レジスタの読出および書
込動作の当初のプログラムシーケンスを追跡し、レジスタ再命名を実施し、投機
的な命令が実行され分岐予測誤りが修復されるようにし、的確な例外にし易くす
くする。リオーダバッファ32内の一時記憶場所を、レジスタを更新して投機的
レジスタ状態をストアすることを含む命令のデコードの際に確保しておく。分岐
予測が誤りであれば、予測誤り経路に沿い投機的に実行された命令の結果を、バ
ッファにおいて、レジスタファイル30への書込み前に無効化することができる
。同様に、特定の命令が結果として例外をもたらした場合、その特定の命令に続
く命令を廃棄する。このようにして、例外は「的確」となる(すなわち例外を生
じさせる特定の命令に続く命令は、その命令の前に完了しない)。なお、特定の
命令は、プログラム順序でその特定の命令に先行する命令よりも先に実行される
場合、投機的に実行される。先行する命令は、分岐命令または例外発生命令であ
り、その場合、リオーダバッファ32は投機的結果を廃棄する。
【0037】 デコードユニット20の出力で与えられた命令制御値および即値または変位デ
ータは直接それぞれのリザベーションステーション22に送られる。ある実施例
では、各リザベーションステーション22が、対応する機能ユニットに発行され
るのを待っている6つまでのペンディング命令についての命令情報(すなわち命
令制御値、オペランド値、オペランドタグおよび/または即値データ)を保持で
きる。なお、図2の実施例では、各リザベーションステーション22は専用の機
能ユニット24と関連付けられている。したがって、リザベーションステーショ
ン22および機能ユニット24により3つの専用「発行位置」が形成される。言
換えれば、発行位置0がリザベーションステーション22Aおよび機能ユニット
22Aにより形成される。整列してリザベーションステーション22Aにディス
パッチされる命令を、機能ユニット24Aが実行する。同様に、発行位置1は、
リザベーションステーション22Bおよび機能ユニット24Bにより形成され、
発行位置2は、リザベーションステーション22Cおよび機能ユニット24Cに
より形成される。
【0038】 特定の命令をデコードしたときに、必要なオペランドがレジスタ場所であった
場合、レジスタアドレス情報が同時にリオーダバッファ32およびレジスタファ
イル30に送られる。当業者であれば、x86レジスタファイルが8つの32ビ
ット実レジスタを含む(すなわち典型的にはEAX、EBX、ECX、EDX、
EBP、ESI、EDIおよびESPと呼ばれる)ことがわかるであろう。x8
6プロセッサアーキテクチャを用いたプロセッサ10の実施例では、レジスタフ
ァイル30は、各32ビット実レジスタに対する記憶場所を含む。さらなる記憶
場所がMROMユニット34が使用するためにレジスタファイル30内に含まれ
ている。リオーダバッファ32に含まれる一時記憶場所は、こうしたレジスタの
内容を変更してアウトオブオーダ(命令順変更)実行が行なえるようにするため
のものである。リオーダバッファ32の一時記憶場所が、各命令に対して確保さ
れ、これは、デコードの際に実レジスタのうち1つの内容を変更するものと決定
される。したがって、特定のプログラムの実行中の種々のポイントで、リオーダ
バッファ32は、所与のレジスタの投機的に実行された内容を含む1以上の場所
を含み得る。所与の命令のデコードに続いて、リオーダバッファ32が所与の命
令においてオペランドとして用いられたレジスタに割当てられた以前のひとつま
たは複数の場所を有すると判断されれば、リオーダバッファ32は、対応するリ
ザベーションステーションに、1)最後に割当てられた場所の値、または2)そ
の値を、最終的には以前の命令を実行する機能ユニットが生成していない場合は
、最後に割当てられた場所のタグを転送する。リオーダバッファ32が、所与の
レジスタのために確保された場所を有していれば、オペランド値(またはリオー
ダバッファタグ)が、レジスタファイル30からではなくリオーダバッファ32
から与えられる。リオーダバッファ32において必要とされるレジスタのために
確保された場所がなければ、その値は直接レジスタファイル30から取込まれる
。オペランドが記憶場所に対応していれば、オペランド値がロード/ストアユニ
ット26を通してリザベーションステーションに与えられる。
【0039】 ある具体的な実施例において、リオーダバッファ32は、同時にデコードされ
た命令を1単位としてストアし操作するように構成される。この構成のことを本
明細書では「ライン指向」と呼ぶ。いくつかの命令をまとめて処理することによ
り、リオーダバッファ32内で用いるハードウェアを単純化することができる。
たとえば、この実施例に含まれるライン指向リオーダバッファは、デコードユニ
ット20が1以上の命令をディスパッチするときは常に、3つの命令(各デコー
ドユニット20から1つずつ)に関する命令情報に十分な記憶を割当てる。対照
的に、従来のリオーダバッファでは、実際にディスパッチされる命令の数に応じ
て、可変量の記憶が割当てられる。この可変量の記憶を割当てるには比較的多数
の論理ゲートが必要である。同時にデコードされた命令の各々が実行されたとき
、命令結果は同時にレジスタファイル30にストアされる。したがって、記憶は
、同時にデコードされる命令の別の組に割当てるために空いている。さらに、1
命令当り用いられる制御論理回路の量は減少する。なぜなら、制御論理は同時に
デコードされるいくつかの命令に対して償却されるからである。特定の命令を識
別するリオーダバッファタグを、2つのフィールド、すなわちラインタグおよび
オフセットタグに分割できる。ラインタグは、特定の命令を含む同時にデコード
された命令の組を識別し、オフセットタグは、この組内のどの命令が特定の命令
に対応するか識別する。なお、命令結果をレジスタファイル30にストアし対応
する記憶を空けることを、命令を「回収する」という。さらに、プロセッサ10
の種々の実施例においていかなるリオーダバッファ構成を用いてもよい。
【0040】 先に述べたように、リザベーションステーション22は、命令を、その命令が
対応する機能ユニット24によって実行されるまでストアする。ある命令が実行
のために選択されるのは、(i)その命令のオペランドが既に与えられている場
合、および(ii)同じリザベーションステーション22A−22Cにありプログ
ラム順序で上記命令に先行している命令のためのオペランドがまだ与えられてい
ない場合である。なお、ある命令を機能ユニット24の1つが実行すると、その
命令の結果は直接、その結果を待っているリザベーションステーション22に送
られ、同時にその結果が送られてリオーダバッファ32を更新する(この技術を
一般に「結果転送」と呼ぶ)。ある命令は、実行のために選択されて機能ユニッ
ト24A−24Cに送られるが、これは、関連する結果が転送されるクロックサ
イクル中に行なわれる。この場合、リザベーションステーション22は、転送さ
れた結果を機能ユニット24に送る。命令が複数の動作にデコードされて機能ユ
ニット24により実行される実施例では、この動作は別々にスケジューリングさ
れる。
【0041】 ある実施例において、各機能ユニット24は、加算および減算という整数算術
演算、シフト、ローテート、論理演算ならびに分岐演算を行なうように構成され
ている。これらの動作(演算)は、デコードユニット20が特定の命令のために
デコードした制御値に応じて行なわれる。なお、浮動小数点ユニット(図示せず
)を用いて浮動小数点演算に対応してもよい。浮動小数点ユニットは、コプロセ
ッサとして動作し、MROMユニット34またはリオーダバッファ32から命令
を受けた後にリオーダバッファ32と連絡してその命令を完了する。加えて、機
能ユニット24は、ロード/ストアユニット26が実行するロードおよびストア
メモリ動作のためにアドレス生成を行なうように構成されていてもよい。ある特
定の実施例で、各機能ユニット24は、アドレスを生成するためのアドレス生成
ユニットおよび残余の機能を果たすための実行ユニットを含む。これら2つのユ
ニットは、1クロックサイクルにおいて異なる命令または動作に対し独立して動
作する。
【0042】 各機能ユニット24はまた、条件付分岐命令の実行に関連する情報を分岐予測
ユニット14に与える。分岐予測が誤っている場合、分岐予測ユニット14は、
既に命令処理パイプラインに入っている誤って予測された分岐に続く命令をフラ
ッシュし、命令キャッシュ16またはメインメモリから必要な命令をフェッチす
る。なお、こうした状況下では、当初のプログラムシーケンスにおいて予測誤り
分岐命令後に発生した命令の結果は廃棄され、これは、投機的に実行され一時的
にロード/ストアユニット26およびリオーダバッファ32にストアされている
ものを含む。なお、分岐実行結果は、機能ユニット24がリオーダバッファ32
に与えるもので、これは、機能ユニット24に分岐の予測誤りを示す。
【0043】 機能ユニット24が生成した結果は、レジスタ値が更新されていればリオーダ
バッファ32に送られ、記憶場所の内容が変更されていればロード/ストアユニ
ット26に送られる。結果をレジスタにストアするのであれば、リオーダバッフ
ァ32は、命令がデコードされたときにレジスタの値のために確保しておいた場
所に結果をストアする。複数の結果バス38が、機能ユニット24およびロード
/ストアユニット26から結果を転送するために含まれている。結果バス38は
、発生した結果、および、実行されている命令を識別するリオーダバッファタグ
を送る。
【0044】 ロード/ストアユニット26は、機能ユニット24およびデータキャッシュ2
8間のインターフェイスを与える。ある実施例において、ロード/ストアユニッ
ト26は、データキャッシュ28にまだアクセスしていないペンディング中のロ
ードまたはストアのデータおよびアドレス情報のための記憶場所を有する第1の
ロード/ストアバッファと、既にデータキャッシュ28にアクセスしているロー
ドおよびストアのデータおよびアドレス情報のための記憶場所を有する第2のロ
ード/ストアバッファとを含むように構成されている。たとえば、第1のバッフ
ァは12の場所を含み、第2のバッファは32の場所を含む。デコードユニット
20は、ロード/ストアユニット26へのアクセスを調停する。第1のバッファ
が一杯であるとき、デコードユニットは、ペンディング中のロードまたはストア
要求情報のための場所がロード/ストアユニット26にできるまで、待機しなけ
ればならない。ロード/ストアユニット26はまた、ロードメモリ動作の、ペン
ディング中のストアメモリ動作に対する従属性検査も行ない、データコヒーレン
シ(一貫性)が確実に維持されるようにする。メモリ動作は、プロセッサ10お
よびメインメモリサブシステム間のデータ転送である。メモリ動作は、メモリに
ストアされたオペランドを用いる命令の結果である、または、データ転送を行な
わせるが他の動作は行なわせないロード/ストア命令の結果である。加えて、ロ
ード/ストアユニット26は、セグメントレジスタなどの特殊レジスタおよびx
86プロセッサアーキテクチャが定めるアドレス変換メカニズムに関する他のレ
ジスタのための特殊レジスタ記憶を含む。
【0045】 データキャッシュ28は、ロード/ストアユニット26およびメインメモリサ
ブシステム間で転送されているデータを一時的にストアするために設けられた高
速キャッシュメモリである。ある実施例では、データキャッシュ28には、2ウ
ェイセットアソシアティブ構成において64キロバイトまでのデータをストアす
る容量がある。データキャッシュ28を、セットアソシアティブ構成、フルアソ
シアティブ構成、ダイレクトマッピング構成およびその他の構成の適切な大きさ
を含む、種々の特殊メモリ構成で実現できることがわかるであろう。
【0046】 x86プロセッサアーキテクチャを用いたプロセッサ10の特定の実施例では
、命令キャッシュ16およびデータキャッシュ28は、線形的にアドレス指定さ
れ物理的にタグ付けされる。線形アドレスは、命令が特定するオフセットおよび
x86アドレス変換メカニズムのセグメント部が特定するベースアドレスから形
成される。任意として、線形アドレスをメインメモリへのアクセスのために物理
アドレスに変換してもよい。線形−物理変換は、x86アドレス変換メカニズム
のページング部によって指定されている。物理アドレスは、物理タグと比較され
てヒット/ミス状態が判断される。
【0047】 バスインターフェイスユニット37は、コンピュータシステム内でバスを介し
てプロセッサ10とこれ以外の構成要素との間で連絡が行なえるように構成され
ている。たとえば、このバスは、Digital Equipment Corporationが開発したE
V−6バス互換のものでもよい。その代わりとして、パケットに基づいたもの、
単方向リンクまたは双方向リンクなどを含む適切な相互接続構成を用いてもよい
。任意のL2キャッシュインターフェイスを用いてレベル2キャッシュに対する
インターフェイスを設けてもよい。
【0048】 ロード/ストアユニット 次に、ロード/ストアユニット26のある実施例についてより詳細に説明する
。これ以外の実施例が可能であり意図されている。図3は、プロセッサ10のあ
る実施例に従う、ロード/ストアユニット26、リオーダバッファ32、データ
キャッシュ28、バスインターフェイスユニット(BIU)37、デコードユニ
ット20A、リザベーションステーション22Aおよび機能ユニット24Aを示
し、相互接続を強調している。他の実施例において、所望に応じてさらなる、代
替のまたはこれに化わる相互接続を用いてもよい。デコードユニット20B−2
0C、リザベーションステーション22B−22C、機能ユニット24B−24
Cおよび図3に示した他のユニット間の相互接続も図3に示したものと同様であ
る。
【0049】 デコードユニット20Aは、命令アライメントユニット18から命令を受けて
その命令をデコードする。デコードユニット20Aは、デコードした命令をリザ
ベーションステーション22Aに与え、リザベーションステーション22Aは、
デコードされた命令を、この命令が実行のために選択されるまでストアする。加
えて、この命令がロードまたはストアメモリ動作を指定していれば、デコードユ
ニット20Aは、L/Sライン46Aを介してロード/ストアユニット26に信
号を送る。ロード/ストアユニット26はデコードユニット20B−20Cから
も同様の信号を受ける。L/Sライン46Aは、デコードされている命令が指定
しているのはロードメモリ動作なのか、ストアメモリ動作なのかまたは双方なの
かを示す。たとえば、L/Sライン46Aは、ロードラインおよびストアライン
を含み得る。何のメモリ動作も指定されていない場合、双方のラインの信号はデ
アサートされる。ロードライン上の信号は、ロードメモリ動作が指定された場合
にアサートされ、同様に、ストアライン上の信号はストアメモリ動作が指定され
た場合にアサートされる。ロードメモリ動作およびストアメモリ動作双方が指定
されていれば、これらの信号双方がアサートされる。L/Sライン46A上の信
号に応答して、ロード/ストアユニット26は、含まれているロード/ストアバ
ッファにエントリを割当てて、対応するメモリ動作をストアする。
【0050】 上記に加え、デコードユニット20Aは、リオーダバッファ32に、デコード
されている命令に関する情報を与える。リオーダバッファ32は、この情報(同
様の情報が他のデコードユニット20B−20Cから与えられる)を受け、これ
に応じてリオーダバッファエントリを割当てる。割当てられたリオーダバッファ
エントリは、命令タグバス48でロード/ストアユニット26に送られるリオー
ダバッファタグにより識別される。命令タグバス48は、可能な命令各々(たと
えばこの実施例では3つありこれらはそれぞれデコードユニット20A−20C
からのものである)に対するタグを送るように構成される。これに代えて、上記
のライン指向構成を用いる実施例では、リオーダバッファ32を、ラインのライ
ンタグを送るように構成し、ロード/ストアユニット26が、特定のロードまた
はストアを信号で知らせる発行位置のオフセットタグで、ラインタグを増大して
もよい。
【0051】 リオーダバッファ32はさらに、命令のレジスタオペランドに対する従属性検
査を実施するように構成されてもよい。レジスタオペランドは、デコードユニッ
ト20が送る命令情報において識別される。ストアメモリ動作については、スト
アデータは、ロード/ストアユニット26がストアアドレスに加えて受けるソー
スオペランドである。したがって、リオーダバッファ32は、各ストアメモリ動
作に対しストアデータを生成した命令を求め、ストアデータ/タグバス50で、
ストアデータ(ストアメモリ動作のディスパッチの際にリオーダバッファ32ま
たはレジスタファイル30で利用できる場合)、または、そのストアデータに対
するストアデータタグを送る。ストアメモリ動作に対応する命令が、レジスタの
内容をメモリにストアするという明示ストア命令であれば、ストアデータを生成
する命令の命令タグ(利用できるならばストアデータ)が送られる。他方、命令
がストアメモリ動作を暗示動作として含む場合は、命令そのものがストアデータ
を生成する。こうした場合、リオーダバッファ32は、この命令の命令タグをス
トアデータタグとして与える。
【0052】 図3では簡潔にするために示していないが、リザベーションステーション22
Aは、リオーダバッファ32から、命令のオペランドタグおよび/またはデータ
も受ける。リザベーションステーション22Aは、オペランドタグおよび/また
はデータを入手し、結果バス38から残りのオペランドデータ(オペランドタグ
が識別するもの)が送られるのを待つ。ある命令がそのオペランドを受けると、
機能ユニット24Aはそれを実行することができる。より具体的にいえば、ここ
に示している実施例では、機能ユニット24Aは、実行ユニット(EXU)40
およびアドレス生成ユニット(AGU)42を含む。実行ユニット40は、命令
動作を行ない(たとえば算術演算および論理演算)、結果を生成し、その結果が
結果バス38A(結果バス38の1つ)でロード/ストアユニット26、リザベ
ーションステーション22およびリオーダバッファ32に転送される。AGU4
2は、データアドレスを生成しこのデータアドレスは命令が指定した1つまたは
複数のメモリ動作で使用され、AGU42はこのデータアドレスをアドレスバス
44Aを介してロード/ストアユニット26に送る。なお、AGU42および実
行ユニット40が結果バス38Aを共有し機能ユニット24Aがアドレス生成お
よびその他命令実行動作を実施する実行ユニットのみを含む実施例を用いてもよ
い。ロード/ストアユニット26はさらに、他の機能ユニット24B−24C内
の実行ユニットおよびAGUからの結果バスおよびアドレスバスを受けるように
結合される。
【0053】 ここで示している実施例ではAGU42を用いているため、リザベーションス
テーション22Aはある命令のアドレス生成部を選択し、AGU42がこれを実
行するが、これは、アドレスを形成するオペランドは既に受けているが命令が指
定するさらなるオペランドをまだ受けていないときに行なわれる。AGU42は
、発生したアドレスを、ロード/ストアユニット26に、アドレスバス44Aで
、データアドレスを生成した命令の命令タグとともに送る。これに応じて、ロー
ド/ストアユニット26は、アドレスバス44Aで受けたタグを、ロード/スト
アバッファにストアされた命令タグと比較して、データアドレスが対応するのは
ロードなのかストアなのかを判断する。
【0054】 ロード/ストアユニット26は、結果バス38で与えられた結果タグをモニタ
して、ストアメモリ動作のストアデータを入手する。結果タグがロード/ストア
ユニット内のストアデータタグと一致していれば、ロード/ストアユニット26
は、対応するデータを入手し、このデータを対応するストア命令と関連付ける。
【0055】 ロード/ストアユニット26は、データキャッシュインターフェイスを介して
データキャッシュ28に結合される。ロード/ストアユニット26は、メモリ動
作を選択して、データキャッシュインターフェイスを介してデータキャッシュ2
8を探索し、データキャッシュインターフェイスから探索結果を受ける。一般的
に、特定のメモリ動作に対するデータキャッシュの「探索」は、その特定のメモ
リ動作のデータアドレスをデータキャッシュ28に送りデータキャッシュ28に
よりデータアドレスがヒットしているかどうかを判断されることを含む。データ
キャッシュ28は、探索結果(たとえばヒット/ミス表示)をロード/ストアユ
ニット26に返す。加えて、特定のメモリ動作がロードでありヒットしていれば
、データキャッシュ28は対応するロードデータを結果バス38Dでリザベーシ
ョンステーション22、リオーダバッファ32およびロード/ストアユニット2
6に転送する。ある実施例において、データキャッシュ28は、2つのポートを
含みこれに応じて2つまでの探索を同時に受ける。データキャッシュ28は、た
とえばバンク構成を用い、この構成では、キャッシュラインが少なくとも2つの
バンクにわたりストアされ、2つの探索が、異なるバンクにアクセスしている限
り同時に処理される。ある特定の実施例では、データキャッシュ28は8つのバ
ンクを用いる。データキャッシュインターフェイスの種々の実施例について以下
でさらに詳しく説明する。
【0056】 データキャッシュ28は、ミスであった探索に応じてキャッシュラインを割当
てるように構成され、バスインターフェイスユニット37と連絡してミスのキャ
ッシュラインをフェッチする。加えて、データキャッシュ28は、取戻した変更
されているキャッシュラインを、メインメモリ更新のためにバスインターフェイ
スユニット27に送る。
【0057】 バスインターフェイスユニット37は、データキャッシュ28に結合されまた
スヌープインターフェイス52を介してロード/ストアユニット26にも結合さ
れる。バスインターフェイスユニット37がスヌープインターフェイス52を用
いて、上記バスから受けるスヌープ動作に応じてコヒーレンシ(coherency)動
作を行なう必要があるかどうかが判断される。一般的に、「スヌープ動作」は、
バス上で、このバスに接続されたキャッシュに対するメモリのコヒーレンシを保
つために(たとえばプロセッサ内で)行なわれる動作である。コヒーレンシが適
切に保たれていれば、特定の記憶場所に対応しキャッシュの1つにストアされて
いるデータのコピーは、他のキャッシュ各々にストアされたコピーと一致してい
る。スヌープ動作は、明示動作である、または、特定の記憶場所のアドレスに対
して実施される動作の暗示部分である。一般的に、スヌープ動作は、スヌープさ
れるアドレス(「スヌープアドレス」)を指定し、かつ、アドレスがキャッシュ
にストアされている場合はキャッシュラインの所望の状態を指定する。バスイン
ターフェイスユニットは、スヌープインターフェイス52を介してスヌープ要求
をデータキャッシュ28およびロード/ストアユニット26に送り、スヌープ動
作を行なう。
【0058】 リオーダバッファ32は、命令の回収を管理する。リオーダバッファ32は、
回収インターフェイス54を介してロード/ストアユニット26と連絡をとり、
回収されているかこれから回収されようとしている命令を識別する。たとえば、
ある実施例では、ストアは、回収されるまでデータキャッシュ28(またはメイ
ンメモリ)を更新しない。加えて、いくつかのロード命令を非投機的実行に制限
してもよい。リオーダバッファ32は、回収インターフェイス54を介してロー
ド/ストアユニット26に、回収されているまたは回収可能なメモリ動作を示す
。このように、デコードユニット20が各命令のためにリオーダバッファ32に
与える命令情報は、この命令がロードまたはストア動作を含むかどうかを示す。
ロード/ストアユニット26は、特定のメモリ動作が回収されたときにロギング
されているという肯定応答をリオーダバッファ32に返し、リオーダバッファ3
2はこれに続いて対応する命令を回収する。
【0059】 ロード/ストアバッファは一杯になることがあるため、ロード/ストアユニッ
ト26は、フロー制御メカニズムを用い、デコードユニット20で、後続のメモ
リ動作を、その後続のメモリ動作のために十分なエントリがロード/ストアバッ
ファにおいて(先のメモリ動作の完了によって)空になるまで、停止させる。た
とえば、ロード/ストアユニット26は、空いているエントリの数のカウントを
デコードユニット20に一斉に送り、デコードユニットは、このカウントが、デ
コードされている命令のメモリ動作に利用できるエントリが不十分であることを
示す場合、停止する。ある特定の実施例に従うと、同時にデコードユニット20
によりデコードされている命令は、ロックステップ(lockstep)でリザベーショ
ンステーション22に移動する。(図2に関して先に述べたようにラインが命令
のためにリオーダバッファ32に割当てられる)このような実施例では、デコー
ドユニット20は、同時にデコードされる命令の組内ですべてのメモリ動作に対
して十分なエントリが利用できるまで停止する。これに代わるものとして、ロー
ド/ストアユニット26が、後続のメモリ動作をバッファエントリが利用できる
ようになるまで停止させるための停止信号を用いてもよい。何らかの適切なフロ
ー制御メカニズムを用いればよい。
【0060】 次に図4を参照して、ロード/ストアユニット26のある実施例のブロック図
が示される。これ以外の実施例が可能であり意図されている。図4に示した実施
例では、ロード/ストアユニット26は、第1のロード/ストアバッファ(LS
1バッファ)60、第2のロード/ストアバッファ(LS2バッファ)62、L
S1制御回路64、LS2制御回路66、一時バッファ68、セグメント加算器
70、ポート0マルチプレクサ(mux)72、ポート1マルチプレクサ74、
およびLS2再探索マルチプレクサ76を含む。セグメント加算器70は、機能
ユニット24A−24C内のAGU42からデータアドレスを受けるように結合
される。(たとえば図3に示したアドレスバス44Aの一部、アドレスバス44
AAは、機能ユニット24A内のAGU42からのデータアドレスを送る。)マ
ルチプレクサ70および72は、AGU42からのデータアドレスおよびセグメ
ント加算器70の出力を受けるように結合され、LS1バッファ60にも結合さ
れる。マルチプレクサ72はまた、LS2再探索マルチプレクサ76からの入力
を受ける。さらに、LS1バッファ60は、セグメント加算器70、LS1制御
回路64、一時バッファ68、命令タグバス48、ストアデータ/タグバス50
および結果バス38a(結果バス38の結果データ部分)に結合される。LS1
制御回路64は、マルチプレクサ72および74ならびにLS2制御回路66に
結合される。さらに、LS1制御回路64は、AGU42からのアドレスタグ(
たとえば図3に示したアドレスタグバス44Aの一部、アドレスタグバス44A
Bは、機能ユニット24A内のAGU42からのアドレスタグを送る)、結果タ
グバス38bを介して結果タグ(結果バス38の結果タグ部分)、およびL/S
ライン46(デコードユニット20AからのL/Sライン46Aを含む)を受け
るように結合される。一時バッファ68およびLS2バッファ62は、結果バス
38aおよび結果タグバス38bに結合される。LS2バッファ62はさらに、
MABタグバス78上のミスアドレスバッファ(MAB)タグを受け、データキ
ャッシュ28からの、物理アドレスバス80上の物理アドレスを受けるように結
合される。LS2バッファ62はさらに、マルチプレクサ76、LS2制御回路
66および一時バッファ68に結合される。LS2制御回路66はさらに、マル
チプレクサ76、回収インターフェイス54、結果タグバス38b、スヌープイ
ンターフェイス52、データキャッシュ28からのヒット/ミス信号82、およ
びバスインターフェイスユニット37からの充填タグバス84に結合される。
【0061】 一般的に、ロード/ストアユニット26は、プリキャッシュバッファ(LS1
バッファ60)およびポストキャッシュバッファ(LS2バッファ62)を含む
。メモリ動作は、プロセッサ10内でディスパッチの際にLS1バッファ60に
割当てられ、選択されてデータキャッシュ28の探索が行なわれるまでLS1バ
ッファ60内にある。データキャッシュ28の探索に続き、メモリ動作は、探索
状態(たとえばヒット/ミスなど)にかかわらず、LS2バッファ62に移され
る。
【0062】 ミスしたメモリ動作は、その後LS2再探索マルチプレクサ76およびポート
0マルチプレクサ72を通して選択して、データキャッシュ28を再び探索すれ
ばよい。本明細書で用いる「再探索」という用語は、特定の動作に対する第1の
探索の後に第2のまたは後続の試みとしてキャッシュを探索することを指す。加
えて、ストアメモリ動作を、ストアが回収の状態になるまでLS2バッファ62
内に保持しておいてもよい。
【0063】 L/Sライン46上の信号に応答して、LS1制御回路64は、LS1バッフ
ァ60内のエントリを識別されたロードおよびストアメモリ動作に割当てる。L
S1制御回路64の制御により、LS1バッファ60はそれぞれの命令タグおよ
びストアデータ/タグ(適用できる場合)を割当てられたエントリに受ける。次
に、対応するデータアドレスをAGUから受けて(LS1制御回路64が受けた
アドレスタグにより識別される)、割当てられたエントリにストアされる。
【0064】 メモリ動作はそのアドレスを受けるとデータキャッシュ28を探索できるよう
になる。LS1制御回路64は、メモリ動作を求めてLS1バッファエントリを
スキャンしてデータキャッシュ28を探索し、ポート0マルチプレクサ72およ
びポート1マルチプレクサ74のために選択制御を生成する。したがって、ここ
で示している実施例では、1クロックサイクル当り2つまでのメモリ動作がデー
タキャッシュ28を探索することができる。ある具体的な実施例に従うと、LS
1制御回路64は、データキャッシュ28を探索するためにプログラム順序でメ
モリ動作を選択する。よって、LS1制御回路64を、LS1バッファ60内の
最も古いメモリ動作に対するスキャンに制限するように構成してもよい。メモリ
動作の「プログラム順序」とは、命令のフェッチおよび実行が一度に1つずつ行
なわれる場合の命令の実行順序である。さらに、投機的にフェッチされた命令の
プログラム順序とは(たとえば分岐予測に従ったもの)、上記のようにこの投機
が正しいと仮定した上で命令が実行される順序である。命令がプログラム順序で
他の命令に先行する場合、前者の命令は他の命令よりも古いといえる。逆に、命
令がプログラム順序で他の命令の後続命令の場合、前者の命令は他の命令よりも
新しいといえる。なお、他の実現化例では、所望に応じ順序を崩してメモリ動作
を選択しデータキャッシュ28を探索してもよい。
【0065】 LS1制御回路64は、メモリ動作を選択して、データアドレスを受けたとき
にデータキャッシュ28を探索するように構成される。(この実施例ではメモリ
動作がLS1制御回路64によりスキャンされているエントリ内にあると仮定す
る。)AGU42から受けたアドレスタグがそうでなければ選択可能なメモリ動
作の命令タグに一致していれば、LS1制御回路64は、マルチプレクサ72お
よび74の一方を介してAGU42から受けた対応するデータアドレスを選択す
る。
【0066】 データアドレスは、ロード/ストアユニット26に与えられたときに選択され
探索が行なわれるが、データアドレスは、セグメント加算器70の1つにも与え
られる。この実施例では、セグメント加算器70は、x86アドレス指定方法の
セグメント化部分を処理するために設けられている。x86命令セットアーキテ
クチャを用いない実施例では、セグメント加算器70がなくてもよい。一般的に
、AGU42はメモリ動作に対応する論理アドレスを生成する。この論理アドレ
スは、命令のアドレスオペランドの加算により生成されるアドレスである。x8
6アーキテクチャでは、2段の変換方法が定められており、セグメント化方法に
より論理アドレスから線形アドレスに、次にページング方法により物理アドレス
に変換される。AGU42は命令のアドレスオペランドを加算するため、AGU
が与えるデータアドレスは論理アドレスである。しかしながら、現代の命令コー
ドは一般的に「フラットアドレス指定モード」を用いており、このモードでは、
セグメントベースアドレス(論理アドレスに加算されて線形アドレスを形成する
もの)は、ゼロにプログラミングされる。したがって、ロード/ストアユニット
26は、セグメントベースアドレスがゼロである(したがって論理および線形ア
ドレスが等しい)と推定し、論理アドレスを選択してデータキャッシュ28を探
索する。セグメント加算器70は、メモリ動作のために選択されたセグメントの
セグメントベースアドレスを加算し、線形アドレスをマルチプレクサ72および
74ならびにLS1バッファ60に送って記憶させる。特定のメモリ動作に対す
るセグメントベースアドレスが非ゼロであり、メモリ動作を選択して論理アドレ
スを受けた際にデータキャッシュ28を探索するのであれば、LS1制御回路6
4は、先行するアクセスを取消して(ロードデータが転送されないように)、対
応する線形アドレスを対応するセグメント加算器70の出力から選択してデータ
キャッシュ28を探索する。これ以外の代替実施例では、AGU42がセグメン
トベースアドレスを受け線形アドレスを生成してもよい。さらに他の実施例では
、フラットアドレス指定モードを要求してセグメントベースアドレスを無視して
もよい。
【0067】 マルチプレクサ72および74は、LS1バッファ60内のエントリからデー
タアドレスを受けるようにも結合される。メモリ動作に対応するデータアドレス
は、AGU42から受けた際にメモリ動作に割当てられるLS1エントリにスト
アされる。データアドレスが、メモリ動作選択に際してエントリから選択され、
データキャッシュ28が探索される。なお、データアドレスに加え、他の情報を
マルチプレクサ70および72を介してデータキャッシュ28に送ってもよい。
たとえば、メモリ動作がロードであるかストアであるかを示すものを送ってもよ
い。メモリ動作の命令タグを送って、ロードメモリ動作のためのロードデータと
ともに結果バス38Dで転送することができる。この動作(適切なデータをマル
チプレクスする)のサイズを送ることもできる。設計上の選択に応じて所望の情
報を送ることができる。
【0068】 ストアデータはストアメモリ動作のために与えられ、ストアメモリ動作はLS
1バッファ60にある。これに応じて、LS1制御回路64は結果タグバス38
bをモニタする。LS1バッファ64内のストアデータタグに一致するタグが与
えられると、結果バス38aのうち対応する結果バスからの対応するストアデー
タが、一致するストアデータタグを有するエントリ内に取り込まれる。
【0069】 LS1制御回路64は、LS1バッファ60から、メモリ動作を、メモリ動作
のデータキャッシュ28探索に応じて除去する。ある具体的な実施例では、メモ
リ動作は、データキャッシュ28の探索のために選択された後のサイクルで除去
される。上記後のサイクルを用いて、メモリ動作がAGU42の1つによりデー
タアドレスの生成が行なわれた際に選択された場合は、データアドレスをLS1
バッファ60に伝搬してもよい。他の実施例では、メモリ動作が選択されたサイ
クル中にメモリ動作を除去することを選択してもよい。メモリ動作は選択された
後のサイクルで除去されるため、LS1制御回路64は、LS1バッファ60内
の最も古い4つのエントリをスキャンしてメモリ動作を選択してデータキャッシ
ュ28を探索するように構成される(先行するクロックサイクルでは2つまでの
エントリを選択し現在のクロックサイクルでは2つまでのエントリを選択できる
)。
【0070】 LS1バッファ60から除去されたメモリ動作は、一時バッファ68に移され
る。一時バッファ68を設けて、LS1バッファ60からエントリを読出しこれ
らをLS2バッファ62に書込む際のタイミング上の制約を緩和してもよい。し
たがって、一時バッファ68は、設計上好都合であるに過ぎず、全く任意である
。メモリ動作が一時バッファ68に移された後のクロックサイクルで、メモリ動
作はLS2バッファ62に移される。ストアデータは、ストアメモリ動作が一時
バッファ68に保持されているクロックサイクル中に結果バス38上で与えられ
るので、一時バッファ68は、結果タグバス38b上の結果タグをモニタし、L
S1バッファ60がデータを収集するのと同じやり方で結果バス38aからデー
タを収集する。
【0071】 このように、データキャッシュ28を探索したメモリ動作は、LS2バッファ
62に与えられる。この実施例では、すべてのメモリ動作が、データキャッシュ
28の最初の探索後にLS2バッファ62に与えられる。ストアは、データキャ
ッシュ28に与えられるまでLS2バッファ62に保持される(すなわちデータ
キャッシュ28を更新できるようになるまで)。一般的に、ストアは、投機的で
なくなったときに与えられる。ある実施例では、ストアは、回収に応じて(回収
インターフェイス54を介して示される)またはその後いずれかの時点で与えら
れる。ロードは、この実施例でも回収までLS2バッファ62に保持される。ロ
ードヒットは、スヌープのためLS2バッファ62内に留まる。ロードミスは、
少なくともロードがアクセスするキャッシュラインがデータキャッシュ28に送
られるまではLS2に保持される。キャッシュライン(またはロードデータを含
むその一部分)がキャッシュの更新にスケジューリングされていることに応じて
、ロードミスはデータキャッシュ28の再探索にスケジューリングされる。再探
索の際、ロードミスはロードヒットとなり(かつロードデータはデータキャッシ
ュ28により転送される)、ヒットとして回収まで保持される。
【0072】 LS2制御回路66は、データキャッシュ28を探索したメモリ動作のために
LS2バッファ62内にエントリを割当てる。加えて、LS2制御回路66は、
データキャッシュ28から、ヒット/ミス信号82の各探索について、探索状態
情報を受ける。ヒット/ミス情報は、探索状態が与えられたメモリ動作に対応す
るLS2バッファエントリにストアされる。ある実施例では、データキャッシュ
28は、データキャッシュへのアクセスと並行して仮想アドレスを物理アドレス
に変換しようと試みるアドレス変換回路を含む。アドレス変換回路で変換を行な
うことができなければ、変換が行なわれるまで探索はミスであると識別される(
たとえばメインメモリ内のソフトウェア管理変換テーブルを探索することによっ
て)。ある具体的な実現化例では、データキャッシュ28内のアドレス変換回路
は、32エントリレベル1TLBと、4ウェイセットアソシアティブ、256エ
ントリレベル2TLBとを含む、2レベル変換索引バッファ(TLB)構成を有
する。
【0073】 メモリ動作のデータアドレスをデータキャッシュ28が変換することができれ
ば、対応する物理アドレスが物理アドレスバス28で与えられる。LS2制御回
路は、対応するエントリが仮想アドレスを物理アドレスで上書きするようにする
。しかしながら、再探索におけるインデックス付けのためにいくつかの仮想アド
レスビットは別に保持しておき、ストアデータは、データキャッシュ28に対す
る仮想インデックス付けおよび物理的タグ付けが行なわれる実施例においては与
えられる。
【0074】 データキャッシュ28にミスするメモリ動作に対し、データキャッシュ28は
エントリを含まれているミスアドレスバッファ内に割当てる。ミスアドレスバッ
ファは、ミスアドレスを、バスインターフェイスユニット37に送るために待ち
行列に入れ、インターフェイスユニット37はアドレスをL2キャッシュからま
たはメインメモリからフェッチする。ミスアドレスバッファ内のエントリを識別
するタグ(MABタグ)が、ミスした各メモリ動作に対しMABタグバス78上
に与えられる。なお、データキャッシュ28は、ミスアドレスバッファエントリ
をキャッシュラインに基づいて割当てる。したがって、後続の、同じキャッシュ
ラインに対するミスは、同じMABタグを受け、さらなるミスアドレスバッファ
エントリが割当てられないようにする。
【0075】 次に、バスインターフェイスユニット37は、ミスのキャッシュラインをフェ
ッチし、このキャッシュラインを充填データとしてデータキャッシュ28に戻す
。バスインターフェイスユニット37はまた、キャッシュラインに対応するMA
Bタグを充填タグとして充填タグバス84上に置く。LS2制御回路66は、充
填タグをLS2バッファ62内のMABタグと比較する。ロードメモリ動作につ
いてMABタグの一致が生じれば、そのロードを選択してデータキャッシュ28
を再探索する。2以上の一致が検出されれば、最も古い一致ロードを、後続のク
ロックサイクル中に選択される他のメモリ動作とともに選択する。MABタグに
一致するストアはヒットとしてマークされるが、データを与える試みを行なう前
に非投機となるのを待つ。
【0076】 ある実施例では、データのキャッシュラインは、複数のパケットを用いて戻さ
れる。各ロードメモリ動作は、どのパケットにアクセスしているかを記録し(ま
たはそのパケットはロードアドレスの適切なアドレスビットから区別される)、
バスインターフェイスユニット37は、充填タグとともに戻されているパケット
を識別する。このように、戻されるパケットにアクセスするロードのみを選択し
て再探索を行なう。
【0077】 バスインターフェイスユニット37は、充填データよりも前に充填タグを与え
て、ロードが再探索のために選択されポート0を介してデータキャッシュ28に
送られて、データキャッシュ28にデータのパケットが届くのと同時にデータ転
送段に達するようにする。アクセスされたデータをこうして転送することができ
る。
【0078】 ストアがデータキャッシュ28の探索後にLS2バッファ62に送られ後続の
ロードがLS1バッファ60からデータキャッシュ28を探索しそこからデータ
を転送できるようになっているため、古いストアと同じ記憶場所にアクセスして
いる新しいロードは、古いストアがデータをデータキャッシュ28に与える前に
、データキャッシュ28を探索することができる。ロードの正しい結果とは、そ
の古いストアに対応するストアデータを受けることである。したがって、LS2
制御回路66は、探索アドレスをモニタし、このアドレスへの古いストアがLS
2バッファ62内にあるかどうか判断する。一致が検出されストアデータをLS
2バッファ62内で利用できるのであれば、LS2制御回路66はデータキャッ
シュ28に信号で知らせ転送のためにLS2バッファから与えられるデータを選
択し、選択されたデータを与える。他方、一致が検出されストアデータをLS2
バッファ62内で利用することができなければ、データキャッシュ28からのデ
ータ転送は取消される。ロードはLS2バッファ62に送られ、ストアデータを
利用できるようになるまで探索のために選択される。ストアからロードへの転送
についてのさらなる詳細事項については以下に示す。
【0079】 一般的に、LS2制御回路66は、LS2バッファ62内のエントリをスキャ
ンしメモリ動作を選択してデータキャッシュ28を再探索するように構成されて
いる。ロードミスを選択し、データがデータキャッシュ28に戻されることに応
じて再探索を行なう。古いストアにヒットしたロードを選択し、現在再探索を行
なっていないならば再探索を行なう。ストアを選択し、回収されたことに応じて
再探索を行なう。複数のメモリ動作を選択できる場合、LS2制御回路66は、
複数のメモリ動作のうち最も古いものを選択する。LS2制御回路66は、ポー
ト0を使用している(ポート0マルチプレクサ72を介して)ならば、LS1制
御回路64に信号で知らせ、制御回路64は、ポート0マルチプレクサ72を通
してLS2入力を選択し、そのクロックサイクルでポート0上のLS1バッファ
60からのメモリ動作の選択を不能にする。
【0080】 LS2制御回路66はさらに、スヌープインターフェイス52を介してバスイ
ンターフェイスユニット37からスヌープ要求を受けるように結合される。一般
的に、LS2バッファ62内のメモリ動作はスヌープされる。なぜなら、このメ
モリ動作は既にデータキャッシュ28を探索しておりスヌープ動作に応じて訂正
作業が必要だからである。たとえば、ロードヒット(従属する命令にデータを転
送済み)は、廃棄されて再び実行されなければならない。ストアは、探索から変
更の必要があるキャッシュ状態をストアしている。対照的に、LS1バッファ6
0内のメモリ動作は、データキャッシュ28を探索しておらずしたがってスヌー
プの必要はない。
【0081】 LS2制御回路66は、スヌープ要求を受け、LS2バッファエントリをスヌ
ープ要求に対して調べて、スヌープインターフェイス52を介してバスインター
フェイスユニット37に応答する。加えて、LS2制御回路66は、スヌープに
応じてLS2バッファエントリ内で更新を行なってもよい。
【0082】 一般的に、バッファは、2以上の情報項目を後で検索するためにストアするの
に用いられる記憶素子である。バッファは、複数のレジスタ、ラッチ、フリップ
フロップまたは他のクロックされた記憶装置を含む。その代わりとして、バッフ
ァが、適切に配列された1組のランダムアクセスメモリ(RAM)セルを含んで
いてもよい。バッファは多数のエントリに分割され、各エントリは、バッファの
設計対象である1つの情報項目をストアするように設計されている。エントリは
、適切な方法で割当および割当解除可能である。たとえば、バッファは、シフト
先入れ先出し(FIFO)バッファとして動作してもよく、この場合、エントリ
は、古いエントリが削除されるときにシフトダウンされる。それに代えて、ヘッ
ドおよびテールポインタを用いてバッファ内の最も古いおよび最も新しいエント
リを示してもよく、エントリは、削除されるまでバッファの特定の記憶場所に保
持される。図1に示したストア待ち行列400は、一種のバッファである。本明
細書で用いる「制御回路」という用語は、入力に対し動作を行なってこれに応じ
て出力を生成し上記の動作を実現する、組合せ論理回路、クロック記憶回路およ
び/またはステートマシンの組合せのことをいう。
【0083】 なお、ある実施例では、ロード/ストアユニット26は、LS1からのストア
探索を同じポート上の古いストアのデータ提供で上書きしようとする。これが実
施される理由は、ストア探索ではヒット/ミスについてデータキャッシュタグを
検査しているだけでデータ記憶内のデータの検索または更新の試みがされていな
いからである。さらに、上記の説明では、すべてのメモリ動作がLS2バッファ
62内にあるものとして実施例の説明をしているが、これ以外の実施例ではこの
ような方法で動作が行なわれないかもしれない。たとえば、ロードヒットは実施
例によってはLS2バッファ62内にストアされないことがある。例として、こ
うした実施例は厳密なメモリ順序が望まれない場合に用いられる。
【0084】 ストア−ロード転送 図5は、ロード/ストアユニット26およびデータキャッシュ28の一部の一
実施例を示す。これ以外の実施例が可能であり意図されている。図5の実施例で
は、ロード/ストアユニット26は、LS2バッファ62、LS2制御回路66
、データ転送マルチプレクサ100、ならびにアドレスおよび様式比較器102
A−102Bを含む。加えて、図5に示した実施例では、データキャッシュ28
は、ポート1データマルチプレクサ110およびポート0データマルチプレクサ
112を含む。LS2バッファ62は、データ転送マルチプレクサ100、比較
器102A−102BおよびLS2制御回路66に結合される。LS2制御回路
66はさらに、マルチプレクサ100、110および112に結合される。LS
2制御回路66はさらに、比較器102A−102Bに結合される。比較器10
2A−102Bは、データキャッシュ28のポート0および1上に与えられたデ
ータアドレスおよび様式を受けるように結合される。マルチプレクサ112は、
結果を結果バス38DAに与えるように結合され、同様に、マルチプレクサ11
0は、結果を結果バス38DBに与えるように結合される。結果バス38DA−
38DBは、図3に示す結果バス38Dの一実施例を成す。
【0085】 一般的に、ロード/ストアユニット26は、ロードメモリ動作の探索がLS2
バッファ62にストアされた古いストアメモリ動作にヒットする場合を処理する
ように構成される。ロード/ストアユニット26は、LS1バッファ60からデ
ータキャッシュ28を探索するメモリ動作のデータアドレスのインデックス部を
、LS2バッファ62内のメモリ動作のデータアドレスのインデックス部と比較
する。これらのインデックスが一致しメモリ動作がデータキャッシュ28内でデ
ータキャッシュ28と同じ様式にヒットしていれば、探索しているメモリ動作は
LS2バッファ62内のストアにヒットしている。探索しているロードがLS2
バッファ62内のストアにヒットしておりストアデータがLS2バッファ62で
利用できるのであれば、ストアデータはデータキャッシュ28に送られてキャッ
シュにあるロードデータの代わりに転送される。他方、探索しているロードが、
ストアデータが利用できないLS2バッファ62内のストアにヒットするかもし
れない。このような場合、データキャッシュ28からのデータ転送は取消され、
ロード記憶動作を選択して、ストアデータが利用できるようになるまでLS2バ
ッファ62からの再探索を行なう。最終的に、ストアデータはLS2内で利用で
きるようになり、バッファから、ロードによる再探索中に転送される、または、
ストアがデータキャッシュ28を更新しデータがデータキャッシュ28からロー
ドによる再探索中に転送される。
【0086】 一般的に、ストアデータが記憶場所から「利用可能」であるのは、このストア
データが実際にその記憶場所にストアされている場合である。その後のある時点
でデータが記憶場所にストアされるかもしれないがまだそこにストアされていな
い場合、データは、「利用可能でない」、「まだ利用可能でない」または「利用
できない」。たとえば、ストアデータは、そのストアデータがストアデータのソ
ースからLS2バッファエントリにまだ転送されていない場合は、LS2バッフ
ァエントリにおいて利用可能でない。ストアデータのソースとは、実行によりス
トアデータを発生させる命令であり、ストアが対応する命令と同じ命令である(
メモリオペランドを宛先として指定する命令)、またはより古い命令である。ス
トアデータタグは、ストアデータのソースを識別し、よって、実行ユニット40
からの結果タグと比較されてストアデータを収集する。
【0087】 上記のように、ロードアドレスおよび様式表示が、LS2バッファ62内のス
トアアドレスおよび様式表示と比較され、古いストアにヒットするロードが検出
される。したがって、比較器102のような比較器が設けられる。比較器102
は、データキャッシュ28の各ポート上のアドレスおよび様式表示をLS2バッ
ファ62内にストアされたデータアドレスおよび様式表示と比較するために設け
られる。さらに、所望されれば、比較器102をLS2バッファ62にCAM構
成として組込んでもよい。
【0088】 ストアエントリ上のロードヒットが検出され対応するストアデータが利用可能
の場合、LS2制御回路66は、データ転送マルチプレクサ100を用いてスト
アデータを選択し、そのデータをポート0マルチプレクサ112またはポート1
マルチプレクサ110のいずれかに、ヒットが検出されたポートに基づいて与え
る。したがって、データ転送マルチプレクサ100は、各ポートに1つずつ、1
組の独立したマルチプレクサを含む。加えて、LS2制御回路66は、データキ
ャッシュ28に対して対応する信号をアサートし、データキャッシュ28が、ヒ
ットしているロードに対しデータキャッシュ28から読出されたキャッシュデー
タの代わりに転送されたデータを選択できるようにする。
【0089】 さらに、この実施例は、LS2バッファ62を用いるものとして示されている
が、他の実施例も意図されている。この他の実施例においては、上記のストア転
送メカニズムが、従来のストア待ち行列とともに実施され、このストア待ち行列
は、データキャッシュ28を既に探索しているストアメモリ動作のみをストアす
る。(たとえばストア待ち行列400をある特定の実施例で用いることができる
)。またさらに、ここで示されているマルチプレクサ110および112はデー
タキャッシュ28内にあるが、この回路を所望に応じてロード/ストアユニット
26内で用いてもよい。加えて、ここで示されているマルチプレクサ100はL
S2バッファ62からデータを選択して転送するものであるが、マルチプレクサ
100を省いて、読出エントリ番号をデータを読出したLS2バッファ62に与
えてもよい。これは、LS2バッファ62が離散クロック記憶装置(たとえばレ
ジスタ)ではなくRAM構成の場合である。
【0090】 さらに、ある具体的な実現化例では、ロード/ストアユニット26が、従属性
リンクファイルを用いて、対応するストアデータが利用可能でないストアにヒッ
トするロードが検出されたときにデータの転送を加速してもよい。このようなロ
ードの検出に応じて、ロード/ストアユニット26は、ロードのために従属性リ
ンクファイルにエントリを割当てる。従属性リンクファイルエントリは、ストア
にヒットしたロードを識別するロード識別子(たとえばリオーダバッファ32が
ロードに対応する命令に割当てた命令タグ)およびロードがヒットしたストアに
対応するストアデータのソースを識別するストアデータ識別子(たとえばストア
データタグ)をストアする。次に、ロード/ストアユニット26は、従属性リン
クファイル内にストアされたストアデータタグに対し、結果バス38をモニタす
る。ストアデータが結果バス38の1つに与えられていることが検出されると、
ロード/ストアユニット26は、データキャッシュ28に、対応する結果バスか
らのデータをデータキャッシュ28からの結果バスに転送させる。加えて、対応
するエントリからのロード識別子が結果タグとして転送される。なお、従属性リ
ンクファイルは、全く任意の性能の向上のためのものである。従属性リンクファ
イルを用いない実施例も意図されている。
【0091】 次に図6を参照して、LS2制御回路66およびLS2エントリ94の一実施
例の一部のブロック図が示される。これ以外の実施例および特定の実現化例が意
図されている。図6の実施例は、比較器102AA、比較器102AB、AND
ゲート120、ヒット制御回路132、およびデータ転送マルチプレクサ100
を含む。ヒット制御回路132はヒットエントリレジスタ134を含む。比較器
102AAは、ポート0からデータアドレスの少なくともインデックス部を受け
(参照番号136)、かつ、エントリ94のアドレス−インデックスフィールド
96Aにストアされたデータアドレスのインデックス部を受けるように結合され
る。比較器102AAは、出力をANDゲート120に与え、ANDゲート12
0はさらに、エントリ94からストア有効ビット(STVフィールド96B)お
よびヒットビット(Hフィールド96C)を受けるように結合される。ANDゲ
ート120の出力は、ヒットストア信号としてヒット制御回路132に結合され
、ヒット制御回路132はさらに、ポート0ロード信号(参照番号140)、ポ
ート0ヒット信号(参照番号122)およびポート0オフセットおよびサイズ情
報(参照番号124)を受ける。比較器102ABは、様式フィールド96Eの
内容を受けるように結合され、かつ、ポート0様式表示(参照番号142)を受
けるように結合される。比較器102ABは、出力をヒット様式信号としてヒッ
ト制御回路132に与えるように結合される。ヒット制御回路132はさらに、
データ有効フィールド96Gからデータ有効ビットを受け、オフセットおよびサ
イズフィールド96Fからオフセットおよびサイズ情報を受けるように結合され
る。ヒット制御回路132は、他のエントリに対応する、同様のヒットストア、
ヒット様式、データ有効ならびにオフセットおよびサイズ信号を受ける。ヒット
制御回路132は、リザベーションステーション22およびリオーダバッファ3
2に取消しデータFWD信号を与え(参照番号146)、データキャッシュ28
にLS2信号を選択する(参照番号148)ように結合される。加えて、ヒット
制御回路132は、選択制御をマルチプレクサ100に与えるように結合される
。マルチプレクサ100は、ストアデータフィールド96Hからのストアデータ
(および他のLS2バッファエントリからのストアデータ)を受けるように結合
される。
【0092】 一般に、図6に示した論理では、エントリ94内のストアに対するポート0上
のロードのヒットを検出する。ポート1およびエントリ94について、ならびに
他のエントリに対する上記ポート双方について、同様の論理を用いることができ
る。より具体的には、比較器102AAは、ポート0上のデータアドレスのイン
デックス部をアドレス−インデックスフィールド96Cのインデックスと比較す
る。これらのインデックスが一致していれば、比較器102AAはその出力信号
をアサートする。ANDゲート120は、比較器102AAの出力信号を受け、
この出力信号をストア有効ビットおよびヒットビットと組合せる。ストア有効ビ
ットは、エントリ94がストアメモリ動作に対応する情報をストアしているかど
うかを示し(なぜならエントリ94および他のLS2バッファエントリはロード
およびストアいずれかに対応する情報をストアしている可能性があるため)、ヒ
ットビットは、ストアがデータキャッシュ28を探索したときにデータキャッシ
ュ28内でヒットしているかどうかを示す。したがって、ANDゲート120が
与えるヒットストア信号は、アサートされたときに、ロードインデックスが、デ
ータキャッシュ28内でヒットであるストアインデックスにヒットしたことを示
す。
【0093】 ヒット制御回路132は、エントリ94に対応するヒットストア信号、ポート
0に対応する他のヒットストア信号、およびポート0ロード信号140を組合せ
て、ポート0上にメモリ動作のためのデータ転送信号を生成する。この実施例で
は、ヒット制御回路132は、ロードについて2つの場合を検出する。すなわち
(i)ヒットストア信号がアサートされ対応するデータ有効ビット96Gがセッ
トされる。(ii)ヒットストア信号がアサートされ対応するデータ有効ビット9
6Gがクリアされる。アサートされるヒットストア信号がない場合、またはポー
ト0上のメモリ動作がロードでない場合、ヒット制御回路132は、そのメモリ
動作には使用されない。この実施例では、同様のヒット制御回路を用いてポート
1上のメモリ動作を行なうことができる。
【0094】 (i)の場合、ヒット制御回路132は、データ転送マルチプレクサ100に
対しマルチプレクサ選択信号を生成し、これにより、データ転送マルチプレクサ
100は、アサートされたヒットストア信号に対応するLS2バッファエントリ
のストアデータフィールド96Hからのストアデータを選択する。たとえば、A
NDゲート120が生成したヒットストア信号がアサートされる場合、ヒット制
御回路132は、マルチプレクサ100が、エントリ94からストアデータフィ
ールド96Hからのストアデータを選択するようにし、ポート0マルチプレクサ
112に対応する選択LS2信号148をアサートする。選択されたデータは、
データキャッシュ28により転送されるが、これは図5について先に説明したと
おりである。(ii)の場合、ヒット制御回路132は、転送(FWD)取消信号
146をリザベーションステーション22およびリオーダバッファ32に対して
アサートして、これらの構成要素に、そのクロックサイクル中ポート0上のロー
ドに対して転送されたデータを無視するよう伝える。
【0095】 このように、ヒット制御回路132は、エントリ94からのデータを、エント
リ94内のストアインデックスおよびロードインデックスの一致に基づいて、か
つ、ストアがデータキャッシュ28内でヒットであることに基づいて、転送する
。特に、ロードがデータキャッシュ28内でヒットしているかどうかまたはロー
ドおよびストアが同じ様式でヒットしているかどうか判断されていないことがあ
る。この情報は、ロードの探索が終了するまで利用できないかもしれない。この
ような事態は、この実施例では後続のクロックサイクルで生じる。したがって、
ヒット制御回路132は、ヒットエントリレジスタ134内で、転送されたデー
タがもとあったLS2バッファ62のエントリ数を収集する。次のクロックサイ
クル中に、ヒット制御回路132は、LS2バッファ62から転送されたデータ
が正しいかどうか判断する。データ転送が正しいのは、ロードがデータキャッシ
ュ28内でヒットし(ポート0ヒット信号122で通知される)、ヒットエント
リレジスタ134により識別されたエントリ内のロードおよびストアの様式表示
が一致する場合(たとえば比較器102ABがポート0の様式表示および様式フ
ィールド96Eからの様式表示が一致することを検出した場合、エントリ94が
ヒットエントリレジスタ134によって示されている場合)である。転送が誤り
であれば、ヒット制御回路132は、転送取消信号146をアサートして、リザ
ベーションステーション22および/またはリオーダバッファ32に、以前に転
送されたポート0上のデータを無視するよう知らせる。ヒット制御回路132は
、別のデータ転送取消信号146を与えて転送を取消すようにしてもよい。これ
は、(上記のように)データが利用可能でないため、および、ストア(データは
ここから転送された)と異なる様式のミスまたはヒットであるロードに対する誤
った転送のためである。上記信号は、同じロードに対して異なる時間にアサート
し得る。
【0096】 図1に関して先に述べたように、ヒット制御回路132はさらに、LS2バッ
ファ62からのストアデータをロードのために転送すべきかどうかをロードおよ
びストアに対する(キャッシュライン内の)オフセットおよびサイズ情報を用い
て判断し、ロードが読出す少なくとも1バイトをストアにより更新するかどうか
決定する。オフセットおよびサイズ情報は上記のようにどのような適切なフォー
マットで与えてもよい(たとえばアドレスビットおよびバイトイネーブルマスク
の組合せ)。なお、ヒット制御回路132がロードおよびストアアドレスのオフ
セットの一部を比較する場合、その部分を、所望される場合はインデックス部に
加えて比較器102AAで比較することができる。
【0097】 さらに、ヒット制御回路132は、所与のロードについて2以上のストアのヒ
ットを検出してもよい。ヒット制御回路132は、データ転送のためにロードよ
りも古い、最も新しいストアを求める。それに代えて、各LS2バッファエント
リが、所与のアドレスを更新するLS2バッファ62内の最後のストアを識別す
るバッファ表示の最終を含んでいてもよい。ANDゲート120内でLIB表示
を用いて、ヒットストア信号が、LS2バッファ62内の最も新しいストアを除
いてアサートされないようにする。このように、複数のヒットの優先順位をつけ
ないようにする。ストアはLS2バッファ62内に置かれているため、そのLI
Bビットをセットし、同じアドレスへの古いストアのLIBビットをクリアして
もよい。
【0098】 なお、ここで示している比較器102ABは、LS2バッファエントリ94に
ストアされた様式表示をロードの様式表示と比較するが、代替実施例においては
、ロードのためにデータを転送するのに用いるエントリからの様式表示を読出し
て(転送がインデックス比較およびストアのデータキャッシュでのヒットに基づ
いている場合)、読出された様式表示をロード様式表示と比較して、ロードおよ
びストアが同じ様式でヒットしていることを確認する。様式表示を、ヒットエン
トリレジスタ134と同様のレジスタにストアして、将来の比較に備えることが
できる。
【0099】 さらに、ロードが読出した1以上のバイトが、ロードが読出した1以上の他の
バイトについてロードがヒットしたストアによって、更新されないことがある。
このような場合、データキャッシュは、ストアデータをキャッシュデータと併合
して、ロードが読出したバイトを与える。複数のストアが、ロードが読出したバ
イトのうち異なるバイトを与えるとき、このロードを回収して再探索する。複数
のストアのうち1つ以上のストアを回収してデータキャッシュに与えてもよく、
これらのストアが更新しロードが読出したバイトをデータキャッシュから与えて
もよい。その代わりとして、図6の装置が、異なるストアからのバイトを併合し
てロードデータを与えてもよい。これ以外の実施例では、所望に応じて上記の方
法を他のやり方で処理する。
【0100】 なお、図6に示した論理は例示にすぎない。適切な組合せ論理(ここで示して
いる論理のブール等価物を含む)を用いることができる。なお、エントリ94は
LS2バッファエントリの一例である。エントリ94は、設計上の選択に応じて
図6に示したものの上にさらなる情報をストアしてもよい。
【0101】 次に図7を参照して、LS1バッファ60からデータキャッシュ28を探索す
るメモリ動作のパイプラインの例を示すタイミング図が示されている。異なるパ
イプラインを用いたこれ以外の実施例が可能であり意図されている。図7におい
て、クロックサイクルは垂直方向の実線で区切られている。水平方向の点線も示
されている。プロセッサ10の他の部分に関連するパイプライン段を示して、他
の構成要素のロード/ストアユニット26へのインターフェイスを示している。
【0102】 クロックサイクルCLK0は、メモリ動作を指定する命令のデコード/ディス
パッチサイクルである。クロックサイクルCLK0において、この命令をデコー
ドするデコードユニット20は、メモリ動作に関しロード/ストアユニット26
に信号を送る。LS1制御回路64は、対応する命令に対するデコード/ディス
パッチ段においてメモリ動作のためにLS1バッファエントリを割当てる。加え
て、デコードユニット20は、デコードされた命令を対応するリザベーションス
テーション22に送る。
【0103】 クロックサイクルCLK1において、アドレス生成ユニットは、このメモリ動
作のためにデータアドレスを生成し、このデータアドレスをロード/ストアユニ
ット26に送る。このクロックサイクル中に、メモリ動作は、LS1制御回路6
4による(与えられたデータアドレスにより行なう)スキャンに加わり、データ
キャッシュ28を探索するために選択される。このようにして、メモリ動作はL
S1パイプラインのスキャンパイプライン段にある。
【0104】 クロックサイクルCLK2において、データアドレスはデータキャッシュ28
に送られる。クロックサイクルCLK2内の矢印で示しているように、メモリ動
作は、LS1バッファ60から、クロックサイクルCLK2の最後に一時バッフ
ァ68に移動する。メモリ動作は、クロックサイクルCLK2の間は、LS1パ
イプラインのデータキャッシュ段へのアドレスにある。
【0105】 クロックサイクルCLK3において、データアドレスはデータキャッシュ28
にアクセスする。メモリ動作に対応するデータは(メモリ動作がロードの場合)
、クロックサイクルCLK3の最後に転送される。より具体的には、ロードアド
レスのインデックス部がLS2バッファ62内のストアアドレスのインデックス
部と一致し、かつ、ストアがデータキャッシュ28内でヒットしていれば、LS
2バッファ62からのデータは、クロックサイクルCL3においてキャッシュデ
ータの代わりに転送される。加えて、メモリ動作は、一時バッファ68からLS
2バッファ62に送られる。メモリ動作は、クロックサイクルCLK3において
はキャッシュアクセス段にある。
【0106】 クロックサイクルCLK4において、メモリ動作に従属する命令(メモリ動作
がロードの場合)が実行される。したがって、図7に示したパイプラインでは、
3クロックサイクルアドレス生成が、従属動作実行ロード待ち時間について与え
られている。加えて、メモリ動作は、クロックサイクル4においては応答パイプ
ライン段にある。データキャッシュ28は、この応答段においてヒット/ミス情
報(ヒットの様式表示を含む)および物理アドレスを与える。このように、LS
2制御回路66は、ヒット/ミス情報および物理アドレスをこの応答段において
メモリ動作と関連付ける。さらに、ロードに対するヒット/ミス表示および様式
表示を用いて、クロックサイクルCLK3においてLS2バッファ62から転送
されたデータを確認する(利用できる場合)。転送されたデータが、ロードがミ
スであるまたは異なる様式でヒットしたために誤って転送されたものであれば、
転送取消信号がアサートされる。
【0107】 クロックサイクルCLK5において、メモリ動作は応答2パイプライン段にあ
る。この段の間、メモリ動作がアクセスしたキャッシュラインに割当てられたミ
スアドレスバッファエントリを識別するミスアドレスバッファタグ(メモリ動作
がミスの場合)が、データキャッシュ28により与えられる。このように、LS
2制御回路66は、データキャッシュ28から受けたMABタグを応答2段のメ
モリ動作に関連付ける。
【0108】 次に図8を参照して、LS2バッファ62からデータキャッシュ28を再探索
するメモリ動作のパイプラインの例を示すタイミング図が示されている。異なる
パイプラインを用いたこれ以外の実施例が可能であり意図されている。図8にお
いて、クロックサイクルは垂直方向の実線で区切られている。水平方向の点線も
示されている。プロセッサ10の他の部分に関連するパイプライン段を示して、
他の構成要素のロード/ストアユニット26へのインターフェイスを示している
【0109】 クロックサイクルCLK0において、メモリ動作は、LS2バッファエントリ
のスキャンに加わり、データキャッシュ28を再探索するために選択される。ク
ロックサイクルCLK0の下の矢印によって示しているように、このメモリ動作
が選択されるのは、メモリ動作についてMABタグに一致する充填タグを受けた
場合、メモリ動作がLS2バッファ62内のより古いストアにヒットしているロ
ードである場合(データは過去の探索に利用可能でなかった)、または、メモリ
動作がリオーダバッファ32が回収したストアである場合、である。
【0110】 クロックサイクルCLK1において、スキャン1段で選択されたメモリ動作は
スキャン2段に進む。スキャン2段において、メモリ動作はマルチプレクサ76
および72を通して選択されてデータキャッシュ28に送られる。したがって、
LS2制御回路66は、マルチプレクサ76を通してスキャン2段のメモリ動作
を選択する。クロックサイクルCLK2、CLK3、CLK4およびCLK5は
、LS2バッファ再探索パイプラインのデータキャッシュへのアドレス、キャッ
シュアクセス、応答、および応答2段であり、先に述べた対応する段と同様であ
る。したがって、この実施例では、バスインターフェイスユニット37は、対応
するデータを与える4クロック前にMABタグを与えて、対応する充填データに
アクセスするロードの選択が、充填データがデータキャッシュ28に到達した(
従って充填データは転送された)クロックサイクルのキャッシュアクセス段にお
いて行なわれるようにする。
【0111】 なお、図7および8の点線の上の命令パイプライン段と点線の下のメモリ動作
パイプライン段との間のタイミングを、図7および8に示したものから延長して
もよい。たとえば、図7では、アドレスは、厳密にデコード/ディスパッチサイ
クル直後のクロックサイクルで生成されない場合がある。その代わりに、オペラ
ンドが利用できないまたはアドレス生成のために古い命令が選択される場合があ
る。さらに、メモリ動作は、アドレスが与えられたクロックサイクル中にアクセ
スのためにスキャンされないかもしれず、他の古いメモリ動作がその代わりにス
キャンされるかもしれない。
【0112】 次に図9を参照して、ヒット制御回路132が、ロードの探索中にデータを選
択してLS2バッファ62から転送する実施例の動作を示すフローチャートが示
される(たとえばロードの探索のキャッシュアクセスパイプライン段)。他の実
施例が可能であり意図されている。図9に示したステップは、理解しやすくする
ために特定の順序で示されているが、その他の適切な順序を用いてもよい。加え
て、ステップを、ヒット制御回路132内で組合せ論理により並列に実行しても
よい。
【0113】 ヒット制御回路132は、ロードがストアにヒットしストアがキャッシュヒッ
トであるかどうかを判断する(判断ブロック150)。より具体的には、ヒット
制御回路132は、ロードインデックスがストアインデックスに一致している(
かつオフセットおよびサイズ情報が一致している)場合にロードがストアにヒッ
トしていると判断する。この判断は、ロードヒット情報および様式表示を後続の
クロックサイクルで利用できるときに、その正誤が検査される(図10に示す)
。判断ブロック150の結果が「イエス」であれば、ヒット制御回路132は、
データキャッシュ28に信号を送り、キャッシュデータの代わりに、LS2バッ
ファ62から与えられるデータを選択し、ヒットであるエントリからのデータを
多重化し(ステップ152)、ヒットであるLS2バッファエントリをヒットエ
ントリレジスタ134に記録する(ステップ154)。判断ブロック150の結
果が「ノー」であれば、ヒット制御回路132はロードに関してそれ以上の作業
は行なわない。
【0114】 図10は、ヒット制御回路132がロードの探索中にLS2バッファ62から
の転送を検査する実施例の動作を示すフローチャートである(たとえばロードの
探索の応答パイプライン段)。これ以外の実施の形態が可能であり意図されてい
る。図10に示したステップは理解しやすくするために特定の順序で示されてい
るが、これ以外の適切な順序を用いてもよい。加えて、これらのステップをヒッ
ト制御回路132内で組合せ論理により並列に実行してもよい。
【0115】 ヒット制御回路132は、エントリがヒットエントリレジスタ134に記録さ
れているかどうか判断する(判断ブロック160)。たとえば、ヒットエントリ
レジスタ134は、データがインデックス比較およびストアがヒットであること
に基づいて転送されたときにセットされ、ロードのヒットの検査および様式表示
の一致後にリセットされる、有効ビットを含み得る。エントリがヒットエントリ
レジスタ134に記録されていなければ、ヒット制御回路132はロードに関し
てさらなる作業は行なわない。エントリがヒットエントリレジスタ134に記録
されていれば、ヒット制御回路134は、ロード様式表示がヒットエントリレジ
スタ134に記録されたエントリのストア様式表示に一致しているかどうか、お
よび、ロードがヒットかどうか判断する(判断ブロック162)。ロードがミス
であるまたはロード様式表示がストア様式表示に一致していなければ、ヒット制
御回路132は、転送取消信号をアサートする(ステップ164)。ロードがヒ
ットでありロード様式表示がヒットエントリレジスタ134に記録されたエント
リのストア様式表示に一致していれば、ヒット制御回路132はロードに関しさ
らなる作業は行なわない。
【0116】 なお、ここでは種々の信号のアサートについて述べている。本明細書では、あ
る信号は、この信号が特定の状態を示す値を伝える場合に「アサートされる」。
逆に、ある信号は、その信号が特定の状態がないことを示す値を伝える場合に「
デアサートされる」。ある信号は、論理ゼロ値を伝える場合または逆に論理1値
を伝える場合にアサートされると定義してもよい。
【0117】 コンピュータシステム 次に図11を参照して、バスブリッジ202を通して種々のシステム構成要素
に結合されたプロセッサ10を含むコンピュータシステム200の一実施例のブ
ロック図が示される。これ以外の実施例が可能であり意図されている。ここで示
しているシステムでは、メインメモリ204はメモリバス206を通してバスブ
リッジ202に結合され、グラフィックスコントローラ208はAGPバス21
0を通してバスブリッジ202に結合される。最後に、複数のPCI装置212
A−212BがPCIバス214を通してバスブリッジ202に結合される。第
2のバスブリッジ216をさらに設けて、EISA/ISAバス220を通して
1以上のEISAまたはISA装置218への電気的インターフェイスに対応す
るようにしてもよい。プロセッサ10は、CPUバス224を通してバスブリッ
ジ202に結合され、任意のL2キャッシュ228に結合される。CPUバス2
24およびL2キャッシュ228へのインターフェイスは、バスインターフェイ
スユニット37が結合されたインターフェイスを含むものでもよい。
【0118】 バスブリッジ202は、プロセッサ10、メインメモリ204、グラフィック
スコントローラ208およびPCIバス214に取付けられた装置間のインター
フェイスとなる。バスブリッジ202に接続されたこれら装置のうち1つから動
作を受けると、バスブリッジ202はその動作のターゲットを識別する(たとえ
ば特定の装置、または、PCIバス214の場合はターゲットがPCIバス21
4にあることを識別)。バスブリッジ202は、その動作をターゲットの装置に
送る。一般的に、バスブリッジ202は、ある動作を、ソースである装置または
バスが用いるプロトコルから、ターゲットである装置またはバスが用いるプロト
コルに変換する。
【0119】 第2のバスブリッジ216は、PCIバス214に対してISA/EISAバ
スへのインターフェイスを与えることに加え、所望に応じてさらなる機能を取入
れてもよい。入出力コントローラ(図示せず)は、第2のバスブリッジ216外
のものでもバスブリッジ216と一体化されたものであっても、コンピュータシ
ステム200内に設けられて、所望に応じて、キーボードおよびマウス222の
ためのならびに種々のシリアルおよびパラレルポートのための動作支援を行なっ
てもよい。他の実施例において、外部キャッシュユニット(図示せず)をさらに
、プロセッサ10およびバスブリッジ202間でCPUバス224に結合しても
よい。その代わりに、外部キャッシュをバスブリッジ202に結合し、外部キャ
ッシュのためのキャッシュ制御回路をバスブリッジ202と一体化させてもよい
。L2キャッシュ228が、プロセッサ10の裏側の構成として示されている。
なお、L2キャッシュ228はプロセッサ10から離れていてもよく、プロセッ
サ10とともにカートリッジに組込まれていてもよく(たとえばスロット1また
はスロットA)、またはプロセッサ10とともに半導体基板上に集積されてもよ
い。
【0120】 メインメモリ204は、アプリケーションプログラムがストアされているメモ
リであり、このメモリから、プロセッサ10は主として実行する。適切なメイン
メモリ204は、DRAM(ダイナミックランダムアクセスメモリ)を含む。た
とえば、SDRAM(同期(synchronous)DRAM)またはランバス(Rambus)
DRAM(RDRAM)の複数のバンクが適切である。
【0121】 PCI装置212A−212Bは、例えばネットワークインターフェイスカー
ド、ビデオアクセラレータ、オーディオカード、ハードまたはフロッピー(R)
ディスクドライブまたはドライブコントローラ、SCSI(スモールコンピュー
タシステムインターフェイス)アダプタおよびテレホンカードといった種々の周
辺装置の例である。同様に、ISA装置218は、モデム、サウンドカードおよ
び種々のデータ取得カード(たとえばGPIBまたはフィールドバスインターフ
ェイスカード)といった種々の周辺装置の例である。
【0122】 グラフィックスコントローラ208は、テキストおよび画像のディスプレイ2
26へのレンダリングを制御するために設けられる。グラフィックスコントロー
ラ208は、一般的に当該技術ではメインメモリ204におよびメインメモリ2
04から効果的にシフト可能な3次元データ構造をレンダリングする典型的なグ
ラフィックスアクセラレータを実現している。グラフィックスコントローラ20
8はしたがって、バスブリッジ202内のターゲットインターフェイスにアクセ
スを要求しアクセスを受けることができ、そのようにしてメインメモリ204へ
のアクセスを得るという点において、AGPバス210のマスタである。専用グ
ラフィックスバスが、メインメモリ204からデータを迅速に取出すことができ
るようにする。いくつかの動作では、グラフィックスコントローラ208がさら
に、AGPバス210上でPCIプロトコルトランザクションを生成するように
構成されていてもよい。バスブリッジ202のAGPインターフェイスはこのよ
うに、AGPプロトコルトランザクションならびにPCIプロトコルターゲット
およびイニシエータトランザクション双方を支援する機能を有する。ディスプレ
イ226は、画像またはテキストを表示できる電子表示装置である。適切なディ
スプレイ226は、陰極線管(「CRT」)、液晶ディスプレイ(「LCD」)
などを含む。
【0123】 上記の説明ではAGP、PCI、およびISAまたはEISAバスを例として
用いているが、所望に応じていかなるバスアーキテクチャに代えてもよい。さら
に、コンピュータシステム200は、さらなるプロセッサ(たとえばコンピュー
タシステム200の任意構成要素としてのプロセッサ10a)を含む多重処理コ
ンピュータシステムでもよい。プロセッサ10aはプロセッサ10と同様のもの
である。より具体的には、プロセッサ10aは、プロセッサ10をそのままコピ
ーしたものである。プロセッサ10aは独立したバス(図11に示したもの)を
介してバスブリッジ202に接続されていてもよく、プロセッサ10とCPUバ
ス224を共有していてもよい。さらに、プロセッサ10aはL2キャッシュ2
28と同様の任意のL2キャッシュ228aに結合されていてもよい。
【0124】 次に図12を参照して、コンピュータシステム300のもう1つの実施例が示
されている。これ以外の実施例が可能であり意図されている。図12に示した実
施例では、コンピュータシステム300は、数個の処理ノード312A、312
B、312Cおよび312Dを含む。各処理ノードは、それぞれ処理ノード31
2A−312D内に含まれたメモリコントローラ316A−316Dを介してメ
モリ314A−314D各々に結合される。加えて、処理ノード312A−31
2Dは、処理ノード312A−312D間の連絡に用いられるインターフェイス
論理を含む。たとえば、処理ノード312Aは、処理ノード312Bとの連絡の
ためのインターフェイス論理318A、処理ノード312Cとの連絡のためのイ
ンターフェイス論理318B、および、別のさらなる処理ノード(図示せず)と
の連絡のための第3のインターフェイス論理318Cを含む。同様に、処理ノー
ド312Bは、インターフェイス論理318D、318Eおよび318Fを含み
、処理ノード312Cは、インターフェイス論理318G、318Hおよび31
8Iを含み、処理ノード312Dは、インターフェイス論理318J、318K
および318Lを含む。処理ノード312Dは、複数の入出力装置(たとえばデ
イジーチェーン構成の装置320A−320B)とインターフェイス論理318
Lを介して連絡するよう結合されている。同様にこれ以外の処理ノードが他のI
/O装置と連絡してもよい。
【0125】 処理ノード312A−312Dは、プロセス間ノード通信のためのパケットに
基づいたリンクを実現する。この実施例において、このリンクは、単方向ライン
の組として実現される。(たとえばライン324Aは処理ノード312Aから処
理ノード312Bにパケットを転送するために用いられ、ライン324Bは処理
ノード312Bから処理ノード312Aにパケットを転送するために用いられる
。)図12に示されているように、これ以外のライン324C−324Hの組を
用いて他の処理ノード間でのパケットの転送を行なう。一般的に、ライン324
の組各々は、1以上のデータライン、このデータラインに対応する1以上のクロ
ックラインおよび送られているパケットの種類を示す1以上の制御ラインを含む
。リンクは、処理ノード間の通信に対してはキャッシュコヒーレントの態様で動
作し、または、処理ノードおよびI/O装置間の(またはバスブリッジからPC
IバスまたはISAバスといった従来の構成のI/Oバスへの)通信については
、非コヒーレントな態様で動作する。さらに、リンクは、図示のようなI/O装
置間のデイジーチェーン構成を用いて非コヒーレントな態様で動作してもよい。
なお、1つの処理ノードから別の処理ノードに転送されるパケットは、1以上の
中間ノードを通過し得る。たとえば、処理ノード312Aにより処理ノード31
2Dに転送されるパケットは、図12に示すように、処理ノード312Bまたは
処理ノード312Cを通過する。適切な経路アルゴリズムを用いることができる
。コンピュータシステム300のこれ以外の実施例では、図12に示した実施例
よりも多いまたは少ない処理ノードを含み得る。
【0126】 一般的に、パケットは、ノード間のライン324上で1以上のビットタイムと
して転送される。ビットタイムとは、対応するクロックライン上のクロック信号
の立上がりまたは立下がりエッジである。パケットは、トランザクション開始の
ためのコマンドパケット、キャッシュコヒーレント維持のための探索パケット、
および探索およびコマンドへの応答のための応答パケットを含み得る。
【0127】 処理ノード312A−312Dは、メモリコントローラおよびインターフェイ
ス論理に加えて、1以上のプロセッサを含む。一般的にいえば、処理ノードは少
なくとも1つのプロセッサを含み、任意として、所望に応じてメモリおよび他の
論理との通信のためのメモリコントローラを含む。具体的には、処理ノード31
2A−321Dはプロセッサ10を含む。外部インターフェイスユニット46は
、ノード内のインターフェイス論理318およびメモリコントローラ316を含
む。
【0128】 メモリ314A−314Dは、適切な記憶装置を含む。たとえば、メモリ31
4A−314Dは、1以上のランバスDRAM(RDRAM)、同期DRAM(
SDRAM)、スタティックRAMなどを含む。コンピュータシステム300の
アドレス空間は、メモリ314A−314D間で分割される。各処理ノード31
2A−312Dは、どのアドレスがどのメモリ314A−314Dにマッピング
されているかを判断して、特定のアドレスに対するメモリ要求をどの処理ノード
312A−312Dに送るかを判断するために用いるメモリマップを含む。ある
実施例では、コンピュータシステム300内のアドレスに対するコヒーレントな
ポイントは、アドレスに対応するバイトをストアするメモリに結合されたメモリ
コントローラ316A−316Dである。言い換えれば、メモリコントローラ3
16A−316Dは、対応するメモリ314A−314Dへの各メモリアクセス
が確実にキャッシュコヒーレントな態様で生じるようにする。メモリコントロー
ラ316A−316Dは、メモリ314A−314Dへのインターフェイスのた
めの制御回路を含む。加えて、メモリコントローラ316A−316Dは、メモ
リ要求を待ち行列に入れるための要求待ち行列を含む。
【0129】 一般的に、インターフェイス論理318A−318Lは、リンクからパケット
を受けるためかつそのリンク上で転送されるパケットをバッファするための種々
のバッファを含む。コンピュータシステム300は、パケット転送のために適切
なフロー制御メカニズムを用いる。たとえば、ある実施例では、各インターフェ
イス論理318は、そのインターフェイス論理が接続されたリンクの他端の受信
機内のバッファの各種類の数のカウントをストアする。インターフェイス論理は
、受けたインターフェイス論理にパケットをストアする空きのバッファがないの
であればパケットを転送しない。受けたバッファをパケットを送出することによ
って空にすれば、受けたインターフェイス論理は送ったインターフェイス論理に
メッセージを送信してバッファが空になっていることを知らせる。こうしたメカ
ニズムのことを「クーポンに基づいた」システムと呼ぶ。
【0130】 I/O装置320A−320Bは、適切なI/O装置である。たとえば、I/
O装置320A−320Bは、ネットワークインターフェイスカード、ビデオア
クセラレータ、オーディオカード、ハードまたはフロッピー(R)ディスクドラ
イブまたはドライブコントローラ、SCSI(スモールコンピュータシステムイ
ンターフェイス)アダプタおよびテレホンカード、モデム、サウンドカード、な
らびに種々のデータ取得カード(GPIBまたはフィールドバスインターフェイ
スカードなど)を含む。
【0131】 上記の開示を十分に理解すれば当業者には多数の変形例および修正例が明らか
になるであろう。前掲の特許請求の範囲はこうした変形例および修正例すべてを
含むと解釈すべきものである。
【図面の簡単な説明】
【図1】 ストア待ち行列の一実施例のブロック図である。
【図2】 プロセッサの一実施例のブロック図である。
【図3】 図2に示したデコードユニット、リザベーションステーション、
機能ユニット、リオーダバッファ、ロード/ストアユニット、データキャッシュ
およびバスインターフェイスユニットの一実施例を示すブロック図であり、相互
接続の一実施例を強調している。
【図4】 図2および3に示したロード/ストアユニットの一実施例のブロ
ック図である。
【図5】 ロード/ストアユニットおよびデータキャッシュの一実施例の一
部のブロック図である。
【図6】 図5に示した制御回路の一部を示すブロック図である。
【図7】 一実施例に従う図4に示したLS1バッファから選択されるメモ
リ動作に対応するタイミング図である。
【図8】 一実施例に従う図4に示したLS2バッファから選択されるメモ
リ動作に対応するタイミング図である。
【図9】 図6に示した制御回路の一実施例の、ストアアドレスにヒットす
るロードアドレスの検出中の動作を示すフローチャートである。
【図10】 図6に示した制御回路の一実施例の、ロードアドレスがストア
アドレスにヒットすることを検査する際の動作を示すフローチャートである。
【図11】 コンピュータシステムの第1の実施例のブロック図である。
【図12】 コンピュータシステムの第2の実施例のブロック図である。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成14年1月9日(2002.1.9)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0005
【補正方法】変更
【補正の内容】
【0005】 仮想アドレス指定およびアドレス変換を用いると、ロードアドレスをバッファ
内のストアアドレスと照合する間に経過する時間を短縮するというさらなる問題
が生じ得る。仮想アドレス指定を用いる場合、ロードおよびストアの実行により
生成されるデータアドレスは、(たとえばページング変換方式によって)物理ア
ドレスに変換される仮想アドレスである。複数の仮想アドレスが所与の物理アド
レスに対応しているかもしれないため(「別名(エイリアス)」と呼ばれる)、
ロードおよびストアの物理データアドレスを比較して確実にバッファから正確な
転送を行なう(または行なわない)ようにする。不都合なことにロードの物理ア
ドレスは、典型的に変換索引バッファ(TLB)から生成されるため、キャッシ
ュアクセスがほぼ完了するまで利用できないことが多く、バッファ内のストアに
ヒットしていることを迅速だが正確なやり方で検出するという問題がさらに悪化
する。 欧州特許EP0871109は、ストア命令に関連するデータをロード命令に
転送して、ロード命令の実行をストアまたはフラッシュを待たずに続行出来るよ
うにしたスーパースカラプロセッサを開示している。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0008
【補正方法】変更
【補正の内容】
【0008】 概して、ある装置が意図されている。この装置は、バッファとバッファに結合
された回路とを含む。バッファは複数のエントリを含み、複数のエントリは各々
、(i)ストアメモリ動作のストアアドレスの少なくともインデックス部と、(
ii)ストアメモリ動作がデータキャッシュ内でヒットしているかどうかを示すヒ
ット表示とをストアするように構成される。この回路は、(i)データキャッシ
ュを探索するロードメモリ動作のロードアドレスのインデックス部と、(ii)ロ
ードメモリ動作がデータキャッシュ内でヒットしているかどうか示すロードヒッ
ト信号とを受けるように結合される。上記回路は、データキャッシュを探索する
ロードメモリ動作のロードアドレスのインデックス部と、ロードメモリ動作がデ
ータキャッシュ内でヒットしているかどうか示すロードヒット信号とを受けるよ
うに構成される。上記回路は、ストアデータを、複数のエントリのうち第1のエ
ントリから、第1のエントリにストアされたインデックス部がロードアドレスの
インデックス部に一致することに応じて、かつさらに、第1のエントリのヒット
表示がヒットを示しロードヒット信号がヒットを示すことに応じて、転送するよ
うに構成される。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0009
【補正方法】変更
【補正の内容】
【0009】 さらに、上記の装置を含むプロセッサが意図されている。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0010
【補正方法】変更
【補正の内容】
【0010】 さらに、ある方法が意図されている。データキャッシュはロードアドレスを用
いて探索される。ロードアドレスのインデックス部がバッファにストアされたス
トアアドレスのインデックス部と比較される。ストアアドレスに対応するストア
データが、ロードアドレスに対応するロードメモリ動作のために転送される。こ
の転送は、比較によりロードアドレスのインデックス部がストアアドレスのイン
デックス部と一致すると判断されたことに応じて、さらに、ロードアドレスがス
トアアドレスのインデックス部と一致することに応じて、さらに、ロードアドレ
スおよびストアアドレス双方がデータキャッシュ内でヒットしていることに応じ
て、行なわれる。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),JP,KR (72)発明者 ヒューズ,ウィリアム・エイ アメリカ合衆国、94010 カリフォルニア 州、バーリンゲーム、エッジヒル・ドライ ブ、852 Fターム(参考) 5B005 JJ12 KK12 MM01 MM23 MM31 NN12 5B013 CC01 CC03 CC10 CC11 【要約の続き】 れる。

Claims (24)

    【特許請求の範囲】
  1. 【請求項1】 装置であって、 複数のエントリを有するバッファを含み、前記複数のエントリは各々、(i)
    ストアメモリ動作のストアアドレスの少なくともインデックス部と、(ii)前記
    ストアメモリ動作がデータキャッシュ内でヒットしているかどうかを示すヒット
    表示と、(iii)前記ストアメモリ動作に対応するストアデータとをストアする
    ように構成され、前記装置はさらに、 前記バッファに結合された回路を含み、前記回路は、(i)前記データキャッ
    シュを探索するロードメモリ動作のロードアドレスの前記インデックス部と、(
    ii)前記ロードメモリ動作が前記データキャッシュ内でヒットしているかどうか
    を示すロードヒット信号とを受けるように結合され、前記回路は、前記ストアデ
    ータが、前記複数のエントリのうち第1のエントリから、前記第1のエントリに
    ストアされた前記インデックス部が前記ロードアドレスの前記インデックス部と
    一致していることに応じてかつさらに前記第1のエントリ内の前記ヒット表示が
    ヒットを示し前記ロードヒット信号がヒットを示すことに応じて、転送されるよ
    うに構成される、装置。
  2. 【請求項2】 前記回路は、前記ロードアドレスの前記インデックス部が前
    記ストアアドレスの前記インデックス部と一致することに応じて、転送信号をア
    サートするように構成される、請求項1に記載の装置。
  3. 【請求項3】 前記回路は、さらに前記ヒット表示がヒットを示すことに応
    じて、前記転送信号をアサートするように構成される、請求項2に記載の装置。
  4. 【請求項4】 前記回路は、その後前記ロードヒット信号を受け、前記ロー
    ドヒット信号が前記ロードが前記データキャッシュ内でミスしていると示すこと
    に応じて、転送取消信号をアサートするように構成される、請求項3に記載の装
    置。
  5. 【請求項5】 前記複数のエントリは各々、前記データキャッシュにおいて
    前記ストアメモリ動作がヒットする様式を示すストア様式表示をストアするよう
    に構成される、請求項4に記載の装置。
  6. 【請求項6】 前記回路はさらに、前記データキャッシュにおいて前記ロー
    ドメモリ動作がヒットする前記様式を示すロード様式表示を受けるように結合さ
    れ、前記回路は、前記第1のエントリにストアされた前記ストア様式表示が前記
    ロード様式表示と一致しないことに応じて前記転送取消信号をアサートするよう
    に構成される、請求項5に記載の装置。
  7. 【請求項7】 前記複数のエントリは各々、前記データキャッシュにおいて
    前記ストアメモリ動作がヒットする様式を示すストア様式表示をストアするよう
    に構成される、請求項4に記載の装置。
  8. 【請求項8】 前記回路はさらに、前記データキャッシュにおいて前記ロー
    ドメモリ動作がヒットする前記様式を示すロード様式表示を受けるように結合さ
    れ、前記回路は、前記ストアデータが、さらに前記ロード様式表示および前記第
    1のエントリにストアされた前記ストア様式表示が一致することに応じて転送さ
    れるように構成される、請求項7に記載の装置。
  9. 【請求項9】 プロセッサであって、 データキャッシュと、 前記データキャッシュに結合されたロード/ストアユニットとを含み、前記ロ
    ード/ストアユニットは、複数のエントリを有するバッファを含み、前記複数の
    エントリは各々、(i)ストアメモリ動作のストアアドレスの少なくともインデ
    ックス部と、(ii)前記ストアメモリ動作が前記データキャッシュ内でヒットし
    ているかどうかを示すヒット表示と、(iii)前記ストアメモリ動作に対応する
    ストアデータとをストアするように構成され、前記ロード/ストアユニットは、
    前記データキャッシュをロードアドレスを用いて探索し、それに応じて前記デー
    タキャッシュからヒット信号を受けるように構成され、前記ロード/ストアユニ
    ットは、ストアデータを、前記複数のエントリのうち第1のエントリから、前記
    ロードアドレスのインデックス部が前記第1のエントリにストアされた前記イン
    デックス部と一致していることに応じてかつさらに前記第1のエントリ内の前記
    ヒット表示がヒットを示し前記ヒット信号がヒットを示すことに応じて、転送す
    ると決定するように構成される、プロセッサ。
  10. 【請求項10】 前記ロード/ストアユニットは、前記データキャッシュに
    対し転送データ信号をアサートするように構成され、前記データキャッシュは、
    前記ストアデータを前記データキャッシュから読出したキャッシュデータの代わ
    りに転送するように構成される、請求項9に記載のプロセッサ。
  11. 【請求項11】 前記ロード/ストアユニットは、前記ロードアドレスの前
    記インデックス部が前記第1のエントリにストアされた前記インデックス部と一
    致することに応じて、前記転送データ信号をアサートするように構成される、請
    求項10に記載のプロセッサ。
  12. 【請求項12】 前記ロード/ストアユニットは、さらに前記第1のエント
    リ内の前記ヒット表示がヒットを示すことに応じて前記転送データ信号をアサー
    トするように構成される、請求項11に記載のプロセッサ。
  13. 【請求項13】 前記ロード/ストアユニットは、前記ヒット信号がミスを
    示すことに応じて転送取消信号をアサートするように構成される、請求項12に
    記載のプロセッサ。
  14. 【請求項14】 前記転送取消信号を受けるように結合された1以上のリザ
    ベーションステーションをさらに含み、前記1以上のリザベーションステーショ
    ンは、前記転送取消信号に応じて前記ロードのために転送された前記ストアデー
    タを無効にするように構成される、請求項13に記載のプロセッサ。
  15. 【請求項15】 前記複数のエントリは各々、前記データキャッシュにおい
    て前記ストアメモリ動作がヒットする様式を示すストア様式表示をストアするよ
    うに構成される、請求項13に記載のプロセッサ。
  16. 【請求項16】 前記データキャッシュは、前記データキャッシュにおいて
    前記ロードメモリ動作がヒットする様式を示すロード様式表示を前記ロード/ス
    トアユニットに与えるように構成され、前記ロード/ストアユニットは、前記第
    1のエントリ内の前記ストア様式表示が前記ロード様式表示と一致しないことに
    応じて前記転送取消信号をアサートするように構成される、請求項15に記載の
    プロセッサ。
  17. 【請求項17】 前記複数のエントリは各々、前記データキャッシュにおい
    て前記ストアメモリ動作がヒットする様式を示すストア様式表示をストアするよ
    うに構成される、請求項9に記載のプロセッサ。
  18. 【請求項18】 前記データキャッシュは、前記データキャッシュにおいて
    前記ロードメモリ動作がヒットする様式を示すロード様式表示を前記ロード/ス
    トアユニットに与えるように構成され、前記ロード/ストアユニットは、さらに
    前記第1のエントリにストアされた前記ストア様式表示が前記ロード様式表示と
    一致することに応じて、ストアデータを前記第1のエントリから転送すると決定
    するように構成される、請求項17に記載のプロセッサ。
  19. 【請求項19】 方法であって、 データキャッシュをロードアドレスを用いて探索するステップと、 前記ロードアドレスのインデックス部をバッファにストアされたストアアドレ
    スのインデックス部と比較するステップと、 前記ストアアドレスに対応するストアデータを、前記ロードアドレスに対応す
    るロードメモリ動作のために転送するステップとを含み、前記転送するステップ
    は、前記比較により前記ロードアドレスの前記インデックス部が前記ストアアド
    レスの前記インデックス部と一致していると判断されたことに応じてかつさらに
    前記ロードアドレスおよび前記ストアアドレス双方がデータキャッシュ内でヒッ
    トしていることに応じて行なわれる、方法。
  20. 【請求項20】 前記転送するステップは、前記比較により前記ロードアド
    レスの前記インデックス部が前記ストアアドレスの前記インデックス部と一致し
    ていると判断されたことに応じて、転送データ信号をアサートするステップを含
    む、請求項19に記載の方法。
  21. 【請求項21】 前記アサートするステップは、さらに前記ストアアドレス
    が前記データキャッシュにおいてヒットしていることに応じて行なわれる、請求
    項20に記載の方法。
  22. 【請求項22】 前記転送するステップはさらに、前記ロードアドレスが前
    記データキャッシュ内でミスしていることに応じて転送取消信号をアサートする
    ステップを含む、請求項21に記載の方法。
  23. 【請求項23】 前記方法はさらに、前記バッファにストアされたストア様
    式表示を前記ロードアドレスに対応するロード様式表示と比較するステップを含
    み、前記ストア様式表示は、前記データキャッシュにおいて前記ストアアドレス
    がヒットする様式を示し、前記ロード様式表示は、前記データキャッシュにおい
    て前記ロードアドレスがヒットする様式を示し、前記方法はさらに、前記比較に
    よりストア様式表示が一致しないと判断されたことに応じて、前記取消信号をア
    サートするステップを含む、請求項22に記載の方法。
  24. 【請求項24】 前記方法はさらに、前記バッファにストアされたストア様
    式表示を前記ロードアドレスに対応するロード様式表示と比較するステップを含
    み、前記ストア様式表示は、前記データキャッシュにおいて前記ストアアドレス
    がヒットする様式を示し、前記ロード様式表示は、前記データキャッシュにおい
    て前記ロードアドレスがヒットする様式を示し、前記方法はさらに、さらに前記
    比較によりストア様式表示が一致しないと判断されたことに応じて、ストアデー
    タを転送するステップを含む、請求項19に記載の方法。
JP2001536680A 1999-11-10 2000-04-20 インデックスおよび任意選択的ウェイ一致に基づいてデータをフォワードするストアバッファ Expired - Lifetime JP4699666B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US16452699P 1999-11-10 1999-11-10
US60/164,526 1999-11-10
US09/482,399 2000-01-12
US09/482,399 US6662280B1 (en) 1999-11-10 2000-01-12 Store buffer which forwards data based on index and optional way match
PCT/US2000/010961 WO2001035212A1 (en) 1999-11-10 2000-04-20 Store buffer which forwards data based on index and optional way match

Publications (3)

Publication Number Publication Date
JP2003514299A true JP2003514299A (ja) 2003-04-15
JP2003514299A5 JP2003514299A5 (ja) 2011-02-24
JP4699666B2 JP4699666B2 (ja) 2011-06-15

Family

ID=26860645

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001536680A Expired - Lifetime JP4699666B2 (ja) 1999-11-10 2000-04-20 インデックスおよび任意選択的ウェイ一致に基づいてデータをフォワードするストアバッファ

Country Status (7)

Country Link
US (1) US6662280B1 (ja)
EP (1) EP1228426B1 (ja)
JP (1) JP4699666B2 (ja)
KR (1) KR100708010B1 (ja)
DE (1) DE60025028T2 (ja)
TW (1) TW548548B (ja)
WO (1) WO2001035212A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007527563A (ja) * 2003-07-08 2007-09-27 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド インデックス付ルックアップを使用したストア−ロードフォーワード(stl)バッファ
JP2011525675A (ja) * 2008-06-23 2011-09-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 効果的なロードキュー・スヌーピング
JP2015210577A (ja) * 2014-04-24 2015-11-24 富士通株式会社 演算処理装置および演算処理装置の制御方法

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065632B1 (en) * 2000-04-07 2006-06-20 Ip First Llc Method and apparatus for speculatively forwarding storehit data in a hierarchical manner
JP3727244B2 (ja) * 2001-01-30 2005-12-14 Necエレクトロニクス株式会社 キャッシュシステムの制御回路
US6845233B2 (en) * 2001-10-09 2005-01-18 Freescale Semiconductor, Inc. RF receivers with reduced spurious response for mobile stations and methods therefor
US6735604B2 (en) * 2001-10-09 2004-05-11 Arthur O. Miller Method for storing and retrieving data objects
US6842822B2 (en) * 2002-04-05 2005-01-11 Freescale Semiconductor, Inc. System and method for cache external writing
US7222226B1 (en) 2002-04-30 2007-05-22 Advanced Micro Devices, Inc. System and method for modifying a load operation to include a register-to-register move operation in order to forward speculative load results to a dependent operation
US6845442B1 (en) 2002-04-30 2005-01-18 Advanced Micro Devices, Inc. System and method of using speculative operand sources in order to speculatively bypass load-store operations
US7028166B2 (en) 2002-04-30 2006-04-11 Advanced Micro Devices, Inc. System and method for linking speculative results of load operations to register values
US7114043B2 (en) * 2002-05-15 2006-09-26 Broadcom Corporation Ambiguous virtual channels
US7471675B2 (en) * 2002-07-12 2008-12-30 Intel Corporation Arrangements facilitating ordered transactions
US7089400B1 (en) 2002-08-29 2006-08-08 Advanced Micro Devices, Inc. Data speculation based on stack-relative addressing patterns
US7024537B2 (en) 2003-01-21 2006-04-04 Advanced Micro Devices, Inc. Data speculation based on addressing patterns identifying dual-purpose register
US7181590B2 (en) * 2003-08-28 2007-02-20 Intel Corporation Method for page sharing in a processor with multiple threads and pre-validated caches
EP1719290A1 (en) * 2004-02-27 2006-11-08 Actix Limited Data storage and processing systems
US7937569B1 (en) 2004-05-05 2011-05-03 Advanced Micro Devices, Inc. System and method for scheduling operations using speculative data operands
US7263600B2 (en) * 2004-05-05 2007-08-28 Advanced Micro Devices, Inc. System and method for validating a memory file that links speculative results of load operations to register values
US8775740B2 (en) * 2004-08-30 2014-07-08 Texas Instruments Incorporated System and method for high performance, power efficient store buffer forwarding
US7464242B2 (en) * 2005-02-03 2008-12-09 International Business Machines Corporation Method of load/store dependencies detection with dynamically changing address length
US7533237B1 (en) 2006-05-11 2009-05-12 Nvidia Corporation Off-chip memory allocation for a unified shader
US7533236B1 (en) * 2006-05-11 2009-05-12 Nvidia Corporation Off-chip out of order memory allocation for a unified shader
US7600097B1 (en) * 2006-09-05 2009-10-06 Sun Microsystems, Inc. Detecting raw hazards in an object-addressed memory hierarchy by comparing an object identifier and offset for a load instruction to object identifiers and offsets in a store queue
US7603527B2 (en) * 2006-09-29 2009-10-13 Intel Corporation Resolving false dependencies of speculative load instructions
US7594100B2 (en) * 2006-09-29 2009-09-22 Sun Microsystems, Inc. Efficient store queue architecture
US7721066B2 (en) * 2007-06-05 2010-05-18 Apple Inc. Efficient encoding for detecting load dependency on store with misalignment
US8468306B2 (en) * 2008-02-15 2013-06-18 International Business Machines Corporation Microprocessor and method for deferred store data forwarding for store background data in a system with no memory model restrictions
US8521992B2 (en) * 2009-12-22 2013-08-27 International Business Machines Corporation Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
US8468325B2 (en) 2009-12-22 2013-06-18 International Business Machines Corporation Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
US8601240B2 (en) * 2010-05-04 2013-12-03 Oracle International Corporation Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution
US8626963B2 (en) 2010-05-04 2014-01-07 Mediatek Inc. Packet based data transfer system and method for host-slave interface
US8904153B2 (en) * 2010-09-07 2014-12-02 International Business Machines Corporation Vector loads with multiple vector elements from a same cache line in a scattered load operation
US20120144118A1 (en) * 2010-12-07 2012-06-07 Advanced Micro Devices, Inc. Method and apparatus for selectively performing explicit and implicit data line reads on an individual sub-cache basis
US9152570B2 (en) * 2012-02-27 2015-10-06 Vmware, Inc. System and method for supporting finer-grained copy-on-write page sizes
US9996348B2 (en) 2012-06-14 2018-06-12 Apple Inc. Zero cycle load
US8984254B2 (en) * 2012-09-28 2015-03-17 Freescale Semiconductor, Inc. Techniques for utilizing translation lookaside buffer entry numbers to improve processor performance
US9116817B2 (en) * 2013-05-09 2015-08-25 Apple Inc. Pointer chasing prediction
US9632947B2 (en) * 2013-08-19 2017-04-25 Intel Corporation Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early
GB2521227B (en) * 2013-12-16 2020-11-25 Advanced Risc Mach Ltd Invalidation of index items for a temporary data store
US9418018B2 (en) 2013-12-31 2016-08-16 Samsung Electronics Co., Ltd. Efficient fill-buffer data forwarding supporting high frequencies
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
US11068271B2 (en) 2014-07-28 2021-07-20 Apple Inc. Zero cycle move using free list counts
US9483409B2 (en) 2015-02-05 2016-11-01 International Business Machines Corporation Store forwarding cache
US9996356B2 (en) * 2015-12-26 2018-06-12 Intel Corporation Method and apparatus for recovering from bad store-to-load forwarding in an out-of-order processor
CN111782577B (zh) 2019-04-04 2023-03-24 安徽寒武纪信息科技有限公司 数据处理装置及方法以及相关产品
CN111831337B (zh) 2019-04-19 2022-11-29 安徽寒武纪信息科技有限公司 数据同步方法及装置以及相关产品
KR102550451B1 (ko) * 2019-04-04 2023-06-30 캠브리콘 테크놀로지스 코퍼레이션 리미티드 데이터 처리방법과 장치 및 관련 제품
TWI714116B (zh) * 2019-06-05 2020-12-21 大陸商合肥沛睿微電子股份有限公司 記憶體控制器、記憶體控制方法、以及電腦系統
US11200062B2 (en) 2019-08-26 2021-12-14 Apple Inc. History file for previous register mapping storage and last reference indication
US11416254B2 (en) 2019-12-05 2022-08-16 Apple Inc. Zero cycle load bypass in a decode group
US11841802B2 (en) 2021-05-07 2023-12-12 Ventana Micro Systems Inc. Microprocessor that prevents same address load-load ordering violations
US11481332B1 (en) 2021-05-07 2022-10-25 Ventana Micro Systems Inc. Write combining using physical address proxies stored in a write combine buffer
US11397686B1 (en) * 2021-05-07 2022-07-26 Ventana Micro Systems Inc. Store-to-load forwarding using physical address proxies to identify candidate set of store queue entries
US11868263B2 (en) 2021-05-07 2024-01-09 Ventana Micro Systems Inc. Using physical address proxies to handle synonyms when writing store data to a virtually-indexed cache
US11836080B2 (en) 2021-05-07 2023-12-05 Ventana Micro Systems Inc. Physical address proxy (PAP) residency determination for reduction of PAP reuse
US11860794B2 (en) 2021-05-07 2024-01-02 Ventana Micro Systems Inc. Generational physical address proxies
US11416406B1 (en) 2021-05-07 2022-08-16 Ventana Micro Systems Inc. Store-to-load forwarding using physical address proxies stored in store queue entries
US11989286B2 (en) 2021-05-07 2024-05-21 Ventana Micro Systems Inc. Conditioning store-to-load forwarding (STLF) on past observations of STLF propriety
US11416400B1 (en) 2021-05-07 2022-08-16 Ventana Micro Systems Inc. Hardware cache coherency using physical address proxies
US11989285B2 (en) 2021-05-07 2024-05-21 Ventana Micro Systems Inc. Thwarting store-to-load forwarding side channel attacks by pre-forwarding matching of physical address proxies and/or permission checking
TW202331504A (zh) * 2021-12-21 2023-08-01 美商賽發馥股份有限公司 處理器管線之儲存-載入轉送

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998002804A1 (en) * 1996-07-16 1998-01-22 Advanced Micro Devices, Inc. Load/store unit and method for non-blocking completion of loads in a superscalar microprocessor
US6065103A (en) * 1997-12-16 2000-05-16 Advanced Micro Devices, Inc. Speculative store buffer

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276828A (en) 1989-03-01 1994-01-04 Digital Equipment Corporation Methods of maintaining cache coherence and processor synchronization in a multiprocessor system using send and receive instructions
US5487156A (en) 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
JP2645163B2 (ja) * 1990-03-13 1997-08-25 三菱電機株式会社 非接触型icカード
US5440752A (en) 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
JP3199465B2 (ja) 1992-07-22 2001-08-20 株式会社日立製作所 情報処理装置
EP0663083B1 (en) 1992-09-29 2000-12-20 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
IE80854B1 (en) 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution
US5878245A (en) 1993-10-29 1999-03-02 Advanced Micro Devices, Inc. High performance load/store functional unit and data cache
US5666537A (en) * 1994-08-12 1997-09-09 Intel Corporation Power down scheme for idle processor components
US6216200B1 (en) 1994-10-14 2001-04-10 Mips Technologies, Inc. Address queue
US5887152A (en) 1995-04-12 1999-03-23 Advanced Micro Devices, Inc. Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
US5832297A (en) 1995-04-12 1998-11-03 Advanced Micro Devices, Inc. Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
US5802588A (en) 1995-04-12 1998-09-01 Advanced Micro Devices, Inc. Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
US5848433A (en) * 1995-04-12 1998-12-08 Advanced Micro Devices Way prediction unit and a method for operating the same
US5625835A (en) 1995-05-10 1997-04-29 International Business Machines Corporation Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor
US5761712A (en) 1995-06-07 1998-06-02 Advanced Micro Devices Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
US5652859A (en) 1995-08-17 1997-07-29 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US5987561A (en) * 1995-08-31 1999-11-16 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US5751983A (en) 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US5781790A (en) 1995-12-29 1998-07-14 Intel Corporation Method and apparatus for performing floating point to integer transfers and vice versa
US5742791A (en) 1996-02-14 1998-04-21 Advanced Micro Devices, Inc. Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor
US5768555A (en) 1997-02-20 1998-06-16 Advanced Micro Devices, Inc. Reorder buffer employing last in buffer and last in line bits
US6021485A (en) 1997-04-10 2000-02-01 International Business Machines Corporation Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching
US6266744B1 (en) * 1999-05-18 2001-07-24 Advanced Micro Devices, Inc. Store to load forwarding using a dependency link file
FR2804819B1 (fr) * 2000-02-03 2002-05-03 Gemplus Card Int Gestion de temps au niveau communication pour entite du type carte a puce
JP2001266094A (ja) * 2000-03-15 2001-09-28 Toshiba Corp 非接触通信装置及び非接触通信装置の制御方法
US20020166075A1 (en) * 2001-05-04 2002-11-07 Sanjay Agarwal Low power interface between a control processor and a digital signal processing coprocessor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998002804A1 (en) * 1996-07-16 1998-01-22 Advanced Micro Devices, Inc. Load/store unit and method for non-blocking completion of loads in a superscalar microprocessor
US6065103A (en) * 1997-12-16 2000-05-16 Advanced Micro Devices, Inc. Speculative store buffer

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007527563A (ja) * 2003-07-08 2007-09-27 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド インデックス付ルックアップを使用したストア−ロードフォーワード(stl)バッファ
JP2011525675A (ja) * 2008-06-23 2011-09-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 効果的なロードキュー・スヌーピング
JP2015210577A (ja) * 2014-04-24 2015-11-24 富士通株式会社 演算処理装置および演算処理装置の制御方法

Also Published As

Publication number Publication date
WO2001035212A1 (en) 2001-05-17
KR20020087929A (ko) 2002-11-23
DE60025028D1 (de) 2006-01-26
KR100708010B1 (ko) 2007-04-16
US6662280B1 (en) 2003-12-09
JP4699666B2 (ja) 2011-06-15
EP1228426B1 (en) 2005-12-21
EP1228426A1 (en) 2002-08-07
DE60025028T2 (de) 2006-08-24
TW548548B (en) 2003-08-21

Similar Documents

Publication Publication Date Title
JP4699666B2 (ja) インデックスおよび任意選択的ウェイ一致に基づいてデータをフォワードするストアバッファ
US6393536B1 (en) Load/store unit employing last-in-buffer indication for rapid load-hit-store
JP2003514299A5 (ja)
US6622237B1 (en) Store to load forward predictor training using delta tag
US6065103A (en) Speculative store buffer
US6651161B1 (en) Store load forward predictor untraining
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
US7133968B2 (en) Method and apparatus for resolving additional load misses in a single pipeline processor under stalls of instructions not accessing memory-mapped I/O regions
US5944815A (en) Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access
US6279106B1 (en) Method for reducing branch target storage by calculating direct branch targets on the fly
US6510508B1 (en) Translation lookaside buffer flush filter
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
US6694424B1 (en) Store load forward predictor training
US6481251B1 (en) Store queue number assignment and tracking
US7191291B2 (en) Microprocessor with variable latency stack cache
EP0795828A2 (en) Dynamic set prediction method and apparatus for a multi-level cache system
KR100747128B1 (ko) 발행 후에 명령의 비투기적 성질을 발견하고 상기 명령을 재발행하는 스케줄러
EP1555611B1 (en) Microprocessor and apparatus for performing fast speculative pop operation from a stack memory cache
US6427192B1 (en) Method and apparatus for caching victimized branch predictions
US6092182A (en) Using ECC/parity bits to store predecode information
EP1555616A2 (en) Microprocessor and apparatus for performing speculative load operation from a stack memory cache
US6493819B1 (en) Merging narrow register for resolution of data dependencies when updating a portion of a register in a microprocessor
US6542986B1 (en) Resolving dependencies among concurrently dispatched instructions in a superscalar microprocessor
US20070033385A1 (en) Call return stack way prediction repair
US20030074530A1 (en) Load/store unit with fast memory data access mechanism

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070405

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070405

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100518

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100727

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101221

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20101221

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110303

R150 Certificate of patent or registration of utility model

Ref document number: 4699666

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term