【実施例】
【0010】
本明細書には、同じキャッシュ線をいくつかの要求エージェントがアクセスしようとする場合の競合の解決及び回避をはじめとする、マルチプロセッサ内及び/又はマルチコア・コンピュータ・システム内の従来技術のキャッシュ手法に関連した課題を解決するための、本発明の種々の実施例を記載している。本発明の少なくとも1つの実施例では、関連したキャッシュ(レベル1(L1)キャッシュなど)を有するいくつかのプロセッサ又はプロセッサ・コアとともに、包含的なキャッシュ構造(最終レベル・キャッシュ(LLC)など)を用いる。包含的なキャッシュ構造(LLCなど)は、包含的なキャッシュ構造が対応する他のキャッシュと少なくとも同じデータを含む構造を含む。包含的なキャッシュ構造と、対応するコア及び/プロセッサ・キャッシュとの間のコヒーレンスを維持することによって、対応するコア/プロセッサ・キャッシュへのアクセスは、包含的なキャッシュによって処理される。それによって、対応するコア/プロセッサへのバス・トラフィックが削減され、コア/プロセッサに余裕が与えられる。
【0011】
包含的なキャッシュ構造が用いられる本発明の実施例は、包含的なキャッシュ構造内の同じキャッシュ線をいくつかのプロセッサ及び/又はプロセッサ・コアがアクセスしようとする場合に生じ得る競合の数及び/又はタイプを削減又は軽減することも可能である。例えば、本発明の少なくとも1つの実施例は、コア・キャッシュとして立ち退かされており、立ち退かされており、かつ同じ組へのLLCへの別のフィルの結果である、包含的キャッシュ構造内(LLC内など)の線への、マルチプロセッサ・システム内のプロセッサからの、かつ/又はマルチコア・プロセッサ内のコアからのキャッシュ要求、及び線が対応する、立ち退かされているコアからのライトバックによってもたらされるキャッシュ競合を軽減する。更に、少なくとも1つの実施例は、フィルされている、共有された包含的キャッシュ内(LLC内など)の線への、マルチプロセッサ・システム内のプロセッサからの、かつ/又はマルチコア・プロセッサ内のコアからのキャッシュ要求、及び結果として生じる、共有された包含的キャッシュの線の立ち退きによってもたらされるキャッシュ競合を軽減する。他の実施例は、種々の要求エージェントから、立ち退かされた包含的なキャッシュ線への複数アクセスから生じる他の競合を解決することができる。
【0012】
図2は、立ち退かされた包含的なキャッシュ線へのいくつかのアクセス間の競合を解決する、本発明の一実施例によるキャッシュ・ブリッジ・アーキテクチャを示す。特に、
図2のキャッシュ・ブリッジ・アーキテクチャは、コンピュータ・システム相互接続インタフェース205(フロントサイド・バス・インタフェースやポイントツーポイント・インタフェースなど)を介して外部エージェントによってアクセスすることができるLLC201を示す。更に、LLCは、コア0(210)及び/又はコア1(215)によってコア相互接続インタフェース213及び217それぞれを介してアクセスすることができる。キャッシュ・ブリッジ・スケジューリング及びオーダリング(CBSO)ロジック220は、本発明の少なくとも1つの実施例において、外部エージェント及び/又はコア・エージェントによって行われる、LLCへのアクセスに対応するコマンド、アドレス、及び/又はデータを記憶するのに用いることが可能な内部要求キュー225及び外部要求キュー230それぞれを用いて、外部エージェント及びコア・エージェントからのLLCへのアクセスを管理する。
【0013】
本発明の少なくとも1つの実施例では、CBSOロジックを用いて、LLCルックアップ、LLCキャッシュ立ち退き、LLC線のフィル、及びクロス・スヌープ、のトランザクションをはじめとするいくつかのトランザクションから生じる競合を管理し、解決することができる。
【0014】
LLCルックアップには通常、所望のキャッシュ線を読み取るか、そうしたキャッシュ線の所有権を得るためにLLCにアクセスするコアからの読み取り、及び所有権のための読み取りのトランザクションが関係する。LLCルックアップがミスをもたらした場合、コンピュ―タ・システム相互接続インタフェースに対応する外部要求キューに要求を割り当てることができる。しかし、LLCルックアップがヒットをもたらしており、対応するLLC線が、別のコア又はプロセッサによって排他的に所有されるものでない場合、要求を完了し、要求しているコアにデータを戻すことが可能である。要求エージェントからの特定のコアへのアクセスは、LLCの要求線を別のコアが排他的に所有しているか否かのレコードを保持することによって削減することができる。レコードは、プロセッサ内のコアの数に対応する、レジスタ内のビット数であり得る。各ビットは、対応するコア/プロセッサが、要求LLC線を所有しているか否かを示している。しかし、レコードは他のやり方で実現することができる。
【0015】
LLC立ち退きには、LLCキャッシュ線を入れ替えるために1つ又は複数のコア若しくはプロセッサへのスヌープ(「バック・スヌープ」)が必要であり得る。バック・スヌープが複数のコア又はプロセッサに送出された場合、バック・スヌープを1つ又は複数のコア/プロセッサが受信しない状態が存在し得る。よって、協業が生じ得る。
【0016】
LLCへのフィルは通常、元の要求がLLCをミスした場合に、コア又はプロセッサがデータをLLCに書き込むことによって生じる。メモリ・エージェント(ダイ上のメモリ・コントローラ又はダイ外のメモリ・コントローラであり得る)から、新たなデータ及びコヒーレンス状態を得ることが可能である。要求しているコアに新たなデータ及びコヒーレンス状態を戻した後、この線はLLCにフィルインされる。フィルが行われているキャッシュ組が満杯の場合、LLCからの立ち退きが行われる。この立ち退きは、LLCにおける容量の制約によってもたらされるので「容量立ち退き」と、場合によっては呼ばれている。フィルは、フィルする対象のLLC線が対応するコアに応じて、マルチコア・プロセッサ内のコアからのものであり得る。更に、本発明の一実施例では、フィルされたLLC線は、いくつかの所有状態(共有、排他的や修正など)にあり得る。特定のマルチコア・プロセッサでは、LLCコヒーレンシ状態は、マルチコア・プロセッサの外部のエージェントへキャッシュ線の状態を示すのに対してコアにキャッシュ線の状態を示すための拡張状態を含み得る。例えば、特定の実施例では、LLCコヒーレンシ状態ESは、フィルされたLLC線が共有されている旨を他のコアに示す一方で、フィルされたLLC線が特定のコアによって排他的に所有されている旨を、マルチコア・プロセッサの外部のエージェントに示す。同様に、MSコヒーレンシ状態は、LLC線が共有されている旨をコアに示す一方で、LLC線が修正されていることを外部エージェントに示し得る。
【0017】
LLC線が別のコア又はエージェントによって所有されていることを、コアや他のエージェントからの所有要求が判定する場合に、LLCへのクロス・スヌープ・トランザクションが通常、生じる。この場合、所有を要求するコア/エージェントは、線を所有しているコア/エージェントへのスヌープ(「クロス・スヌープ」)を行う。これにより、用いられる特定のコヒーレンシ・プロトコルに応じて線状態が「排他的」から「無効」又は「共有」に変動し得る。
【0018】
前述のトランザクション(バック・スヌープ、クロス・スヌープ、読み取り及び立ち退き)の何れかがほぼ同時に起こる場合、プロセッサ及び/又はシステムの性能に不利な影響を及ぼす競合が生じ得る。よって、本発明の一実施例は、前述のトランザクションのうちの2つの間の競合を防止するか、又は少なくとも管理する(「2重競合」管理)。更に、本発明の別の実施例は、前述のトランザクションのうちの3つの間の競合を防止するか、又は少なくとも管理する(「3重競合」管理)。
【0019】
本発明の一実施例では、CBSOロジックは、LLCから立ち退かされている線へのコア・エージェント又は外部バス・エージェントからのLLCへのライトバックからもたらされる競合を管理又は防止する。立ち退かされている同じLLC線にライトバックが行われている場合、ライトバックを行っているコア又はエージェントとは別のコア又はエージェントからバック・スヌープがデータを取り出していれば、立ち退きから生じるバック・スヌープとライトバック処理との間で競合が生じ得る。競合によって、誤ったデータが、立ち退かされたLLC線に書き込まれることになり得る。
【0020】
別の実施例では、CBSOロジックは、
図2のコンピュータ・システム・インタフェース上のエージェントからのLLC線へのスヌープ、コアからのLLC線へのライトバック、及びラインをフィルするためのLLCバック・スヌープから生じる競合を管理又は防止する。バック・スヌープ及びライトバックが行われている同じLLC線に外部スヌープが行われる場合、外部エージェントは、誤ったデータを取り出しかねない。LLC線は、コアからのライトバック、又はバック・スヌープから生じるコアからのデータによってフィルすることが可能であるからである。
【0021】
図3は、本発明の一実施例による、通常のクロス・スヌープ・トランザクションに関連した処理を示す状態図である。アイドル状態301から、LLCへの読み取りトランザクション(マルチコア・プロセッサ内のコアからなど)によって、状態図が保留状態303に遷移する。要求エージェントに線を付与することが可能になった時点で状態はルックアップ状態305に変わる。ルックアップ状態の間、LLCは、要求された線のコヒーレンシ状態(別のコアが現在、要求された線を所有している旨を示し得る)を、要求しているコアに戻す。LLC内の要求された線を別のコアが所有している場合、状態308で、別のコア又はエージェントへのLLCからのクロス・スヌープが起動される。肯定応答が、クロス・スヌープを起動させる対象のコアから送出された後、状態310で、クロス・スヌープが発行される。クロス・スヌープ・データがコアから取り出された後、状態313で、クロス・スヌープは完了し、状態315で、クロス・スヌープ・データは要求しているコアに供給される。状態320で、LLCはクロス・スヌープ・データによって更新され、アイドル状態に戻される。
【0022】
状態308乃至320の間、クロス・スヌープは、要求が対応するLLCの立ち退きから生じる処理との競合を受け得る。クロス・スヌープと競合し得る、LLC立ち退きから生じる処理の1つは、立ち退かされたLLC線が対応するコアからのライトバックである。LLC内の立ち退かされた線にライトバックをそこから行うそのコアへのクロス・スヌープを読み取り要求がもたらす場合に別の競合が生じ得る。クロス・スヌープの前にライトバックが行われた場合、間違ったデータが、要求しているコア又はエージェントに戻され得る。更に、立ち退き、クロス・スヌープ及びライトバックと同じLLCアドレスを伴う外部スヌープがLLCにほぼ同時に行われる場合に競合が生じ得る。
【0023】
本発明の一実施例では、LLCにおいて要求が行われる対象の線のコヒーレンス情報を一時的な記憶場所に複製し、後のトランザクション(「アトミック」)に線が無効に見えるように、対応するLLC線を無効にし、それによって、要求から生じるクロス・スヌープとトランザクションが競合することになり得る、LLC線の立ち退きがないようにすることによって、前述の競合がないようにすることが可能である。読み取り要求を受信した後にLLC線コヒーレンシ情報を記憶することによって、結果として生じるクロス・スヌープによって、最新のデータを要求者に供給することが保証される。更に、LLC線をアトミックに無効にすることによって、LLCの立ち退きが、後のトランザクションによって回避され、したがって、LLC線への競合LLC立ち退きは何ら生じないことになる。
【0024】
要求されたデータを要求者に供給した後、データ及びコヒーレンシ情報を、無効化LLC線に記憶して包含を維持することができる。別の実施例では、一機構を用いて、LLCへのアクセスがクロス・スヌープをもたらさないようにし得るトランザクションを何れも取り消すことができる。この状態は、例えば、LLC線への読み取りの後にLLC線へのライトバックが行われる場合に生じ得る。
【0025】
図4は、本発明の一実施例に関係した処理を示す流れ図である。処理401では、コア・キャッシュ線への読み取り要求が検出され、対応するコア・キャッシュへの読み取り要求から「ミス」が生じた場合に、それに応じて、対応するLLC線がアクセスされる。処理405では、LLC線のコヒーレンシ状態情報が保存される。一実施例では、コヒーレンシ状態データが、
図2のCBSOロジック内のレジスタに保存される。他の実施例では、コヒーレンシ情報は、メモリ又は特定の他の記憶構造に保存することができる。コヒーレンシ状態情報が保存された後、要求がクロス・スヌープをもたらすことになり、CBSOロジックによって取り消し信号が何ら検出されなかった場合に、LLC線が無効にされていると後のトランザクションがみなすことになるようにLLC内の対応する線が処理410でアトミックに無効にされる。処理415で、適切なコア又はプロセッサへのLLCによるクロス・スヌープによって、要求されたデータがコア又はプロセッサから、要求エージェントに戻されることになる。
【0026】
本発明の一実施例では、
図4に示す処理の少なくとも一部は、
図2のCBSOロジックによって行われる。別の実施例では、処理は、他の手段(ソフトウェアなど)、又は、
図2のキャッシュ・ブリッジ・アーキテクチャ内の特定の他のロジックによって行うことができる。
【0027】
図5は、本発明の一実施例を用い得るフロントサイドバス(FSB)コンピュータ・システムを示す。プロセッサ505が、レベル1(L1)キャッシュ・メモリ510及び主メモリ515からデータをアクセスする。本発明の他の実施例では、キャッシュ・メモリは、コンピュータ・システム・メモリ階層内のレベル2(L2)キャッシュや他のメモリであり得る。更に、特定の実施例では、
図5のコンピュータ・システムは、コヒーレンシ・データがL1キャッシュとL2キャッシュとの間で共有される包含的なキャッシュ階層を備えるL1キャッシュ及びL2キャッシュを含み得る。
【0028】
図5のプロセッサ内には、本発明の一実施例506を示す。特定の実施例では、
図5のプロセッサはマルチコア・プロセッサであり得る。
【0029】
種々のメモリ・ソース(動的ランダムアクセス・メモリ(DRAM)、ハード・ディスク・ドライブ(HDD)520など)、又は種々の記憶装置及び技術を含む、ネットワーク・インタフェース530を介してコンピュータ・システムから離れた場所にあるメモリ・ソースにおいて実現することができる。キャッシュ・メモリは、プロセッサ内、又はプロセッサ近接(プロセッサの局所バス507上)にあり得る。更に、キャッシュ・メモリは、速度が比較的高いメモリ・セル(6トランジスタ型(6T)のセルなど)や、アクセス速度がほぼ等しいか、又は更に高い他のメモリ・セルを含み得る。
【0030】
図5のコンピュータ・システムは、ポイントツ―ポイント・ネットワーク(PtP)上の各エージェントに特化したバス信号を介して通信するバス・エージェント(マイクロプロセッサなど)から成るPtPであり得る。記憶処理をバス・エージェント間で迅速に促進することが可能であるように、本発明の少なくとも一実施例506が、各バス・エージェント内にあるか、又は各バス・エージェントに少なくとも関係付けられている。
【0031】
図6は、ポイントツーポイント(PtP)構成に配置されたコンピュータ・システムを示す。特に、
図6は、プロセッサ、メモリ、及び入出力装置が、いくつかのポイントツーポイント・インタフェースによって相互接続されるシステムを示す。
【0032】
図6のシステムは、いくつかのプロセッサ(明瞭にするためにこのうち、2つのプロセッサ(プロセッサ670、680)のみを示している)も含み得る。プロセッサ670、680はそれぞれ、メモリ62、64と接続するための局所メモリ・コントローラ・ハブ(MCH)672、682を含む。プロセッサ670、680は、ポイントツーポイント(PtP)インタフェース650を介してPtPインタフェース回路678、688を用いてデータを交換することができる。プロセッサ670、680はそれぞれ、ポイントツーポイント・インタフェース回路676、694、686、698を用いて個々のPtPインタフェース652、654を介してチップセット690とデータを交換することができる。チップセット690は、高性能グラフィックス・インタフェース639を介して高性能グラフィックス回路638とデータを交換することもできる。
【0033】
本発明の少なくとも1つの実施例は、プロセッサ670内及びプロセッサ680内にあり得る。しかし、本発明の他の実施例は、
図6のシステム内の他の回路内、ロジック・ユニット内、又はデバイス内に存在し得る。更に、本発明の他の実施例を、
図6に示すいくつかの回路、ロジック・ユニット、又はデバイスにわたって分散させることができる。
【0034】
本明細書記載の本発明の実施例は、相補性金属酸化膜半導体デバイス若しくは「ハードウェア」を用いた回路によって、又は、マシン(プロセッサなど)によって実行されると、本発明の実施例に関連した処理を行う、媒体に記憶された命令組、若しくは「ソフトウェア」を用いて実現することができる。あるいは、本発明の実施例は、ハードウェア及びソフトウェアの組み合わせを用いて実現することができる。
【0035】
例証的な実施例を参照して本発明を説明したが、この説明は、限定的な意味合いで解されることを意図するものでない。本発明が関係する当該技術分野における当業者に明らかである例証的な実施例の種々の修正及びその他の実施例は、本発明の趣旨及び範囲内に収まるものと認められる。