(57)【特許請求の範囲】
【請求項１】
マイクロプロセッサ・システムであって、
共有された包含的キャッシュを備えた第１のプロセッサを備え、前記共有された包含的キャッシュは、第１のコアによって所有され、前記第１のプロセッサ内の別のコアからの読み出しアクセスに応じて、排他的状態から無効状態に遷移する第１のキャッシュ線を含み、前記無効状態は、前記第１のキャッシュ線が無効である旨を、前記読み出しアクセスに後続するが、前記読み出しアクセスが完了する前のトランザクション全てに示し、
前記第１のプロセッサは、前記読み出しアクセスに応じて、前記第１のキャッシュ線の前記排他的状態のコヒーレンシ情報を記憶し、前記第１のキャッシュ線は、前記読み出しアクセスが完了すると、前記無効状態から前記排他的状態に直接戻るマイクロプロセッサ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、マイクロプロセッサ及びマイクロプロセッサ・システムに関する。特に、本発明の実施例は、同じキャッシュ又はキャッシュ群へのいくつかのアクセスが生じるプロセッサ又はコンピュータ・システム内のキャッシュ・アクセス競合の解決に関する。
【背景技術】
【０００２】
従来技術のプロセッサ及びコンピュータ・システムは、同時に管理可能な特定のキャッシュ又はキャッシュ群へのアクセスの数において制限され得る。この課題に対処するのに用いられる従来技術手法の１つは、1つ又は複数のプロセッサのコア特有のキャッシュ（レベル１（L1）キャッシュなど）のキャッシュ・エントリにキャッシュ・エントリが対応する包含的なキャッシュ構造を用いることである。すなわち、従来技術のマルチコア・プロセッサ、及び／又はマルチプロセッサ・コンピュータ・システムは、共有された包含的なキャッシュ構造（最終レベル・キャッシュ（LLC）など。包含的なキャッシュ構造が対応するプロセッサ・コア又はエージェントのキャッシュ・エントリの全てを含んでいる）にキャッシュ・アクセスの一部を単に導くことによってコア・キャッシュ内のキャッシュ・アクセス競合を削減しようとしてきた。しかし、マルチコア・プロセッサ内のコアからのキャッシュ・アクセスの場合、コアは通常、それ自身のキャッシュからまずデータをアクセスし、次いで、共有キャッシュに頼ろうとする。共有された包含的なキャッシュ構造は、過剰なキャッシュ・アクセスからコア・キャッシュを、よって、他のエージェントからバス・トラフィックを、コアのキャッシュの代わりに包含的なキャッシュから前述のエージェントに要求データを供給することによって遮蔽するので、場合によっては「キャッシュ・フィルタ」と呼ばれる。
【０００３】
種々のエージェントからのキャッシュ要求を処理するためにキャッシュ構造（LLCなど）を用いる従来技術手法は、例えば、特定のプロセッサ・コアによってデータが排他的に所有又は修正されない場合、プロセッサ・コアのキャッシュに頼ることなく必要なデータを要求エージェントが得ることを可能にする一助となる。エージェント（プロセッサやプロセッサ・コアなど）が、要求エージェントがアクセスしようとしている、そのキャッシュのキャッシュ線を所有している範囲で、キャッシュ構造（LLCなど）によって、要求エージェントが、所有しているエージェントがデータを共有するのを待つのではなく、要求しているデータを得ることが可能になる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、LLCを用いてキャッシュ要求を処理する場合、他の競合が生じ得る。例えば、図１は、アクセスされた線のLLCからの立ち退きの間にLLCの同じキャッシュ線をアクセスしようとする２つのコアを示す。特に、コア１が新たなデータのライトバックを起動させている間、コア０は、コア１のキャッシュ内の線への（LLCスヌープを介した）コア・キャッシュ要求を、その線がLLCから立ち退かされている時点とほぼ同時点で起動させている。この場合、コア0は、コア１からのライトバックが行われる前にコア０の要求が行われた場合、誤ったデータをLLCから取り出し得る。特定の場合、コア０のコア要求を満たすために、スヌープをLLCによってコア１のキャッシュに行う必要があり得る（「クロス・スヌープ」）。これによって、コア０の要求と、コア１への、LLCのクロス・スヌープと、LLCの立ち退きと、LLCへの、更新データのコア１のライトバックとの間で４重競合が生じる。
【０００５】
図１に表した従来技術の問題点は、プロセッサ・コアやその他のバス・エージェントの数がシステムにおいて増加するにつれ、悪化する。例えば、図１に表す競合は、図１に示す２つのコアの代わりに４つのコアを含むマルチコア・プロセッサにおいては倍増し得る。同様に、プロセッサ数がコンピュータ・システムにおいて増加するにつれ、何れかの特定のコア・キャッシュへのアクセスの数も増加する。それによって、ＬＬＣ立ち退きの間に生じ得る競合の数が増加する。
【０００６】
キャッシュ競合（図１に表したキャッシュ競合など）は、プロセッサ性能に不利な影響を与え得る。要求エージェントは、LLC立ち退き及び対応するライトバックの完了を待つか、又は競合の結果、誤ったデータの取り出しを検出し、そうした取り出しから回復するからである。よって、特定のキャッシュ構造にアクセスすることができるエージェントの数は、従来技術のプロセッサ及び／又はコンピュータ・システムにおいて制限され得る。
【課題を解決するための手段】
【０００７】
本発明の実施例は、マイクロプロセッサ内及び／又はコンピュータ・システム内のキャッシュ・アーキテクチャに関する。特に、本発明の実施例は、特定のキャッシュ又はキャッシュ群へいくつかのアクセスを行い得るプロセッサ内及び／又はコンピュータ・システム内のキャッシュ・アクセス競合を管理するための手法に関する。
【図面の簡単な説明】
【０００８】
【図１】従来技術のプロセッサ又はコンピュータ・システムにおける同じキャッシュ線へのいくつかのアクセス間の競合を示す図である。
【図２】本発明の一実施例によるキャッシュ・ブリッジ・アーキテクチャを示す図である。
【図３】本発明の一実施例に関して用いるプロセッサのクロス・スヌープ状態マシンを示す図である。
【図４】本発明の少なくとも１つの実施例とともに用いる処理を示す流れ図である。
【図５】本発明の少なくとも１つの実施例を用い得るフロントサイドバスを示す図である。
【図６】本発明の少なくとも１つの実施例を用い得るポイントツーポイント・コンピュータ・システムを示す図である。
【発明を実施するための形態】
【０００９】
本発明は、限定としてではなく例として添付図面の図に示す。同様な参照符号は同様な構成要素を示す。
【実施例】
【００１０】
本明細書には、同じキャッシュ線をいくつかの要求エージェントがアクセスしようとする場合の競合の解決及び回避をはじめとする、マルチプロセッサ内及び／又はマルチコア・コンピュータ・システム内の従来技術のキャッシュ手法に関連した課題を解決するための、本発明の種々の実施例を記載している。本発明の少なくとも１つの実施例では、関連したキャッシュ（レベル１（L1）キャッシュなど）を有するいくつかのプロセッサ又はプロセッサ・コアとともに、包含的なキャッシュ構造（最終レベル・キャッシュ（LLC）など）を用いる。包含的なキャッシュ構造（LLCなど）は、包含的なキャッシュ構造が対応する他のキャッシュと少なくとも同じデータを含む構造を含む。包含的なキャッシュ構造と、対応するコア及び／プロセッサ・キャッシュとの間のコヒーレンスを維持することによって、対応するコア／プロセッサ・キャッシュへのアクセスは、包含的なキャッシュによって処理される。それによって、対応するコア／プロセッサへのバス・トラフィックが削減され、コア／プロセッサに余裕が与えられる。
【００１１】
包含的なキャッシュ構造が用いられる本発明の実施例は、包含的なキャッシュ構造内の同じキャッシュ線をいくつかのプロセッサ及び／又はプロセッサ・コアがアクセスしようとする場合に生じ得る競合の数及び／又はタイプを削減又は軽減することも可能である。例えば、本発明の少なくとも１つの実施例は、コア・キャッシュとして立ち退かされており、立ち退かされており、かつ同じ組へのLLCへの別のフィルの結果である、包含的キャッシュ構造内（LLC内など）の線への、マルチプロセッサ・システム内のプロセッサからの、かつ／又はマルチコア・プロセッサ内のコアからのキャッシュ要求、及び線が対応する、立ち退かされているコアからのライトバックによってもたらされるキャッシュ競合を軽減する。更に、少なくとも１つの実施例は、フィルされている、共有された包含的キャッシュ内（LLC内など）の線への、マルチプロセッサ・システム内のプロセッサからの、かつ／又はマルチコア・プロセッサ内のコアからのキャッシュ要求、及び結果として生じる、共有された包含的キャッシュの線の立ち退きによってもたらされるキャッシュ競合を軽減する。他の実施例は、種々の要求エージェントから、立ち退かされた包含的なキャッシュ線への複数アクセスから生じる他の競合を解決することができる。
【００１２】
図２は、立ち退かされた包含的なキャッシュ線へのいくつかのアクセス間の競合を解決する、本発明の一実施例によるキャッシュ・ブリッジ・アーキテクチャを示す。特に、図２のキャッシュ・ブリッジ・アーキテクチャは、コンピュータ・システム相互接続インタフェース２０５（フロントサイド・バス・インタフェースやポイントツーポイント・インタフェースなど）を介して外部エージェントによってアクセスすることができるLLC２０１を示す。更に、LLCは、コア0（２１０）及び／又はコア１（２１５）によってコア相互接続インタフェース２１３及び２１７それぞれを介してアクセスすることができる。キャッシュ・ブリッジ・スケジューリング及びオーダリング（CBSO）ロジック２２０は、本発明の少なくとも１つの実施例において、外部エージェント及び／又はコア・エージェントによって行われる、LLCへのアクセスに対応するコマンド、アドレス、及び／又はデータを記憶するのに用いることが可能な内部要求キュー２２５及び外部要求キュー２３０それぞれを用いて、外部エージェント及びコア・エージェントからのLLCへのアクセスを管理する。
【００１３】
本発明の少なくとも１つの実施例では、CBSOロジックを用いて、LLCルックアップ、LLCキャッシュ立ち退き、LLC線のフィル、及びクロス・スヌープ、のトランザクションをはじめとするいくつかのトランザクションから生じる競合を管理し、解決することができる。
【００１４】
LLCルックアップには通常、所望のキャッシュ線を読み取るか、そうしたキャッシュ線の所有権を得るためにLLCにアクセスするコアからの読み取り、及び所有権のための読み取りのトランザクションが関係する。LLCルックアップがミスをもたらした場合、コンピュ―タ・システム相互接続インタフェースに対応する外部要求キューに要求を割り当てることができる。しかし、LLCルックアップがヒットをもたらしており、対応するLLC線が、別のコア又はプロセッサによって排他的に所有されるものでない場合、要求を完了し、要求しているコアにデータを戻すことが可能である。要求エージェントからの特定のコアへのアクセスは、LLCの要求線を別のコアが排他的に所有しているか否かのレコードを保持することによって削減することができる。レコードは、プロセッサ内のコアの数に対応する、レジスタ内のビット数であり得る。各ビットは、対応するコア／プロセッサが、要求LLC線を所有しているか否かを示している。しかし、レコードは他のやり方で実現することができる。
【００１５】
LLC立ち退きには、LLCキャッシュ線を入れ替えるために1つ又は複数のコア若しくはプロセッサへのスヌープ（「バック・スヌープ」）が必要であり得る。バック・スヌープが複数のコア又はプロセッサに送出された場合、バック・スヌープを1つ又は複数のコア／プロセッサが受信しない状態が存在し得る。よって、協業が生じ得る。
【００１６】
LLCへのフィルは通常、元の要求がLLCをミスした場合に、コア又はプロセッサがデータをLLCに書き込むことによって生じる。メモリ・エージェント（ダイ上のメモリ・コントローラ又はダイ外のメモリ・コントローラであり得る）から、新たなデータ及びコヒーレンス状態を得ることが可能である。要求しているコアに新たなデータ及びコヒーレンス状態を戻した後、この線はLLCにフィルインされる。フィルが行われているキャッシュ組が満杯の場合、LLCからの立ち退きが行われる。この立ち退きは、LLCにおける容量の制約によってもたらされるので「容量立ち退き」と、場合によっては呼ばれている。フィルは、フィルする対象のLLC線が対応するコアに応じて、マルチコア・プロセッサ内のコアからのものであり得る。更に、本発明の一実施例では、フィルされたLLC線は、いくつかの所有状態（共有、排他的や修正など）にあり得る。特定のマルチコア・プロセッサでは、LLCコヒーレンシ状態は、マルチコア・プロセッサの外部のエージェントへキャッシュ線の状態を示すのに対してコアにキャッシュ線の状態を示すための拡張状態を含み得る。例えば、特定の実施例では、LLCコヒーレンシ状態ESは、フィルされたLLC線が共有されている旨を他のコアに示す一方で、フィルされたLLC線が特定のコアによって排他的に所有されている旨を、マルチコア・プロセッサの外部のエージェントに示す。同様に、MSコヒーレンシ状態は、LLC線が共有されている旨をコアに示す一方で、LLC線が修正されていることを外部エージェントに示し得る。
【００１７】
LLC線が別のコア又はエージェントによって所有されていることを、コアや他のエージェントからの所有要求が判定する場合に、LLCへのクロス・スヌープ・トランザクションが通常、生じる。この場合、所有を要求するコア／エージェントは、線を所有しているコア／エージェントへのスヌープ（「クロス・スヌープ」）を行う。これにより、用いられる特定のコヒーレンシ・プロトコルに応じて線状態が「排他的」から「無効」又は「共有」に変動し得る。
【００１８】
前述のトランザクション（バック・スヌープ、クロス・スヌープ、読み取り及び立ち退き）の何れかがほぼ同時に起こる場合、プロセッサ及び／又はシステムの性能に不利な影響を及ぼす競合が生じ得る。よって、本発明の一実施例は、前述のトランザクションのうちの２つの間の競合を防止するか、又は少なくとも管理する（「２重競合」管理）。更に、本発明の別の実施例は、前述のトランザクションのうちの３つの間の競合を防止するか、又は少なくとも管理する（「３重競合」管理）。
【００１９】
本発明の一実施例では、CBSOロジックは、LLCから立ち退かされている線へのコア・エージェント又は外部バス・エージェントからのLLCへのライトバックからもたらされる競合を管理又は防止する。立ち退かされている同じLLC線にライトバックが行われている場合、ライトバックを行っているコア又はエージェントとは別のコア又はエージェントからバック・スヌープがデータを取り出していれば、立ち退きから生じるバック・スヌープとライトバック処理との間で競合が生じ得る。競合によって、誤ったデータが、立ち退かされたLLC線に書き込まれることになり得る。
【００２０】
別の実施例では、CBSOロジックは、図２のコンピュータ・システム・インタフェース上のエージェントからのLLC線へのスヌープ、コアからのLLC線へのライトバック、及びラインをフィルするためのLLCバック・スヌープから生じる競合を管理又は防止する。バック・スヌープ及びライトバックが行われている同じLLC線に外部スヌープが行われる場合、外部エージェントは、誤ったデータを取り出しかねない。LLC線は、コアからのライトバック、又はバック・スヌープから生じるコアからのデータによってフィルすることが可能であるからである。
【００２１】
図３は、本発明の一実施例による、通常のクロス・スヌープ・トランザクションに関連した処理を示す状態図である。アイドル状態３０１から、LLCへの読み取りトランザクション（マルチコア・プロセッサ内のコアからなど）によって、状態図が保留状態３０３に遷移する。要求エージェントに線を付与することが可能になった時点で状態はルックアップ状態３０５に変わる。ルックアップ状態の間、LLCは、要求された線のコヒーレンシ状態（別のコアが現在、要求された線を所有している旨を示し得る）を、要求しているコアに戻す。LLC内の要求された線を別のコアが所有している場合、状態３０８で、別のコア又はエージェントへのLLCからのクロス・スヌープが起動される。肯定応答が、クロス・スヌープを起動させる対象のコアから送出された後、状態３１０で、クロス・スヌープが発行される。クロス・スヌープ・データがコアから取り出された後、状態３１３で、クロス・スヌープは完了し、状態３１５で、クロス・スヌープ・データは要求しているコアに供給される。状態３２０で、LLCはクロス・スヌープ・データによって更新され、アイドル状態に戻される。
【００２２】
状態３０８乃至３２０の間、クロス・スヌープは、要求が対応するLLCの立ち退きから生じる処理との競合を受け得る。クロス・スヌープと競合し得る、LLC立ち退きから生じる処理の１つは、立ち退かされたLLC線が対応するコアからのライトバックである。LLC内の立ち退かされた線にライトバックをそこから行うそのコアへのクロス・スヌープを読み取り要求がもたらす場合に別の競合が生じ得る。クロス・スヌープの前にライトバックが行われた場合、間違ったデータが、要求しているコア又はエージェントに戻され得る。更に、立ち退き、クロス・スヌープ及びライトバックと同じLLCアドレスを伴う外部スヌープがLLCにほぼ同時に行われる場合に競合が生じ得る。
【００２３】
本発明の一実施例では、LLCにおいて要求が行われる対象の線のコヒーレンス情報を一時的な記憶場所に複製し、後のトランザクション（「アトミック」）に線が無効に見えるように、対応するLLC線を無効にし、それによって、要求から生じるクロス・スヌープとトランザクションが競合することになり得る、LLC線の立ち退きがないようにすることによって、前述の競合がないようにすることが可能である。読み取り要求を受信した後にLLC線コヒーレンシ情報を記憶することによって、結果として生じるクロス・スヌープによって、最新のデータを要求者に供給することが保証される。更に、LLC線をアトミックに無効にすることによって、LLCの立ち退きが、後のトランザクションによって回避され、したがって、LLC線への競合LLC立ち退きは何ら生じないことになる。
【００２４】
要求されたデータを要求者に供給した後、データ及びコヒーレンシ情報を、無効化LLC線に記憶して包含を維持することができる。別の実施例では、一機構を用いて、LLCへのアクセスがクロス・スヌープをもたらさないようにし得るトランザクションを何れも取り消すことができる。この状態は、例えば、LLC線への読み取りの後にLLC線へのライトバックが行われる場合に生じ得る。
【００２５】
図４は、本発明の一実施例に関係した処理を示す流れ図である。処理４０１では、コア・キャッシュ線への読み取り要求が検出され、対応するコア・キャッシュへの読み取り要求から「ミス」が生じた場合に、それに応じて、対応するLLC線がアクセスされる。処理４０５では、LLC線のコヒーレンシ状態情報が保存される。一実施例では、コヒーレンシ状態データが、図２のCBSOロジック内のレジスタに保存される。他の実施例では、コヒーレンシ情報は、メモリ又は特定の他の記憶構造に保存することができる。コヒーレンシ状態情報が保存された後、要求がクロス・スヌープをもたらすことになり、CBSOロジックによって取り消し信号が何ら検出されなかった場合に、LLC線が無効にされていると後のトランザクションがみなすことになるようにLLC内の対応する線が処理４１０でアトミックに無効にされる。処理４１５で、適切なコア又はプロセッサへのLLCによるクロス・スヌープによって、要求されたデータがコア又はプロセッサから、要求エージェントに戻されることになる。
【００２６】
本発明の一実施例では、図４に示す処理の少なくとも一部は、図２のCBSOロジックによって行われる。別の実施例では、処理は、他の手段（ソフトウェアなど）、又は、図２のキャッシュ・ブリッジ・アーキテクチャ内の特定の他のロジックによって行うことができる。
【００２７】
図５は、本発明の一実施例を用い得るフロントサイドバス（FSB）コンピュータ・システムを示す。プロセッサ５０５が、レベル１（L1）キャッシュ・メモリ５１０及び主メモリ５１５からデータをアクセスする。本発明の他の実施例では、キャッシュ・メモリは、コンピュータ・システム・メモリ階層内のレベル２（L２）キャッシュや他のメモリであり得る。更に、特定の実施例では、図５のコンピュータ・システムは、コヒーレンシ・データがL1キャッシュとL2キャッシュとの間で共有される包含的なキャッシュ階層を備えるL1キャッシュ及びL2キャッシュを含み得る。
【００２８】
図５のプロセッサ内には、本発明の一実施例５０６を示す。特定の実施例では、図５のプロセッサはマルチコア・プロセッサであり得る。
【００２９】
種々のメモリ・ソース（動的ランダムアクセス・メモリ（DRAM）、ハード・ディスク・ドライブ（HDD）５２０など）、又は種々の記憶装置及び技術を含む、ネットワーク・インタフェース５３０を介してコンピュータ・システムから離れた場所にあるメモリ・ソースにおいて実現することができる。キャッシュ・メモリは、プロセッサ内、又はプロセッサ近接（プロセッサの局所バス５０７上）にあり得る。更に、キャッシュ・メモリは、速度が比較的高いメモリ・セル（６トランジスタ型（６Ｔ）のセルなど）や、アクセス速度がほぼ等しいか、又は更に高い他のメモリ・セルを含み得る。
【００３０】
図５のコンピュータ・システムは、ポイントツ―ポイント・ネットワーク（PtP）上の各エージェントに特化したバス信号を介して通信するバス・エージェント（マイクロプロセッサなど）から成るPtPであり得る。記憶処理をバス・エージェント間で迅速に促進することが可能であるように、本発明の少なくとも一実施例５０６が、各バス・エージェント内にあるか、又は各バス・エージェントに少なくとも関係付けられている。
【００３１】
図６は、ポイントツーポイント（PtP）構成に配置されたコンピュータ・システムを示す。特に、図６は、プロセッサ、メモリ、及び入出力装置が、いくつかのポイントツーポイント・インタフェースによって相互接続されるシステムを示す。
【００３２】
図６のシステムは、いくつかのプロセッサ（明瞭にするためにこのうち、２つのプロセッサ（プロセッサ６７０、６８０）のみを示している）も含み得る。プロセッサ６７０、６８０はそれぞれ、メモリ６２、６４と接続するための局所メモリ・コントローラ・ハブ（MCH）６７２、６８２を含む。プロセッサ６７０、６８０は、ポイントツーポイント（PｔP）インタフェース６５０を介してPtPインタフェース回路６７８、６８８を用いてデータを交換することができる。プロセッサ６７０、６８０はそれぞれ、ポイントツーポイント・インタフェース回路６７６、６９４、６８６、６９８を用いて個々のPtPインタフェース６５２、６５４を介してチップセット６９０とデータを交換することができる。チップセット６９０は、高性能グラフィックス・インタフェース６３９を介して高性能グラフィックス回路６３８とデータを交換することもできる。
【００３３】
本発明の少なくとも１つの実施例は、プロセッサ６７０内及びプロセッサ６８０内にあり得る。しかし、本発明の他の実施例は、図６のシステム内の他の回路内、ロジック・ユニット内、又はデバイス内に存在し得る。更に、本発明の他の実施例を、図６に示すいくつかの回路、ロジック・ユニット、又はデバイスにわたって分散させることができる。
【００３４】
本明細書記載の本発明の実施例は、相補性金属酸化膜半導体デバイス若しくは「ハードウェア」を用いた回路によって、又は、マシン（プロセッサなど）によって実行されると、本発明の実施例に関連した処理を行う、媒体に記憶された命令組、若しくは「ソフトウェア」を用いて実現することができる。あるいは、本発明の実施例は、ハードウェア及びソフトウェアの組み合わせを用いて実現することができる。
【００３５】
例証的な実施例を参照して本発明を説明したが、この説明は、限定的な意味合いで解されることを意図するものでない。本発明が関係する当該技術分野における当業者に明らかである例証的な実施例の種々の修正及びその他の実施例は、本発明の趣旨及び範囲内に収まるものと認められる。
【符号の説明】
【００３６】
５０５  プロセッサ
【図１】
0005535991.tif 000002
【図２】
0005535991.tif 000003
【図３】
0005535991.tif 000004
【図４】
0005535991.tif 000005
【図５】
0005535991.tif 000006
【図６】
0005535991.tif 000007