以下の説明では、本明細書に提示された方法及びメカニズムの完全な理解を提供するために、数多くの具体的な詳細が記載される。しかし、様々な実施形態が、これら具体的な詳細なく実施され得ることを当業者は認識するはずである。いくつかのインスタンスでは、本明細書に説明するアプローチが不明瞭となることを回避するため、既知の構造、構成要素、信号、コンピュータプログラム命令、及び技術は詳細に示されていない。例示の簡素化及び明瞭さのため、図に示す各要素は必ずしも縮尺通りに描かれていないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張され得る。
本明細書は、「一実施形態」に対する参照を含む。異なる文脈において、表現「一実施形態では」が用いられている場合は、必ずしも同じ実施形態を参照しない。特定の機能、構造又は特性は、本開示に整合する任意の好適な方法で組み合わせ得る。更に、本出願全体を通じて使用されるとき、「〜してもよい(may)」という語は、義務的な意味(すなわち、〜なければならない(must)を意味する)ではなく、許容的な意味で使用される(すなわち、〜する可能性を有していることを意味する)。同様に、「含む(include)」、「含む(including)」、及び「含む(includes)」という語は、〜を含むが、それに限定するものではないことを意味する。
用語。以下の段落は、(付随する特許請求の範囲を含む)本開示内に見られる用語の定義及び/又は文脈を提供する。
「含む」、「備える」。この用語は、オープンエンドである。特許請求の範囲で用いられているこの用語は、追加の構造又は手順を除外しない。「システムキャッシュを含むメモリコントローラ...」と列挙する請求項についての考察。そのような請求項は、追加的構成要素(例えば、メモリチャネルユニット、スイッチ)を含むことからメモリコントローラを除外しない。
「構成される」。様々なユニット、回路又はその他の構成要素は、タスクを実行する「ように構成される」と記載又は特許請求し得る。このような文脈において、「構成される」は、ユニット/回路/構成要素が、動作中に1つ又は複数のタスクを実行する構造体(例えば、回路)を含むことを示すことによって構造体を暗示するときに使用される。したがって、ユニット/回路/構成要素は、特定のユニット/回路/構成要素が現在動作していない(例えば、オンの状態でない)ときでもタスクを実行するように構成されると言い得る。「構成される」という言葉と共に用いられるユニット/回路/構成要素はハードウェア、例えば、回路、動作を実行できるプログラム命令を格納するメモリ、等を含む。ユニット/回路/構成要素が1つ又は複数のタスクを実行するように「構成されている」と記載するのは、そのユニット/回路/構成要素について、米国特許法第112条第6段落を発動しないように明示的に意図している。更に、「構成される」は、ソフトウェア及び/又はファームウェア(例えば、FPGA又はソフトウェアを実行する汎用プロセッサ)によって操作され、問題のタスクを実行可能な方法で動作する一般的な構造体(例えば、一般的な回路)を含む。また、「構成される」は、1つ以上のタスクを実施又は実行するのに適した装置(例えば、集積回路)を組み立てるように製造工程(例えば、半導体組み立て設備)を構成することも含み得る。
「第1」、「第2」等。本明細書で用いられているこれらの用語は、続く名詞の標識として使用され、いかなるタイプの順序付け(例えば、空間的、時間的又は論理的等)も意味しない。例えば、複数のキャッシュラインを伴うキャッシュでは、用語「第1の」及び「第2の」キャッシュラインは、複数のキャッシュラインの任意の2つを参照するために使用され得る。
「基づく」。本明細書で用いられているとき、この用語は、判定に影響を及ぼす1つ以上の要因を言い表すときに使用される。この用語は、判定に影響を及ぼし得る追加の要因を排除しない。即ち、判定はこれらの要因だけに基づくか、又は、少なくとも部分的にこれらの要因に基づき得る。「Bに基づきAを判定する」というフレーズを検討してみる。BはAの判定に影響を及ぼす要因であるが、このようなフレーズはAの判定がCにも基づくことを排除しない。他の例では、AはBだけに基づいて判定されることがあり得る。
図1をここで参照すると、電子デバイスの一部分の一実施形態を示すブロック図が示されている。示された実施形態では、電子デバイス10は、メモリ12、メモリコントローラ14、コヒーレンスポイント18、プロセッサ複合体20、グラフィックスエンジン22、非リアルタイム(NRT)周辺装置24、及びリアルタイム(RT)周辺装置26を含む。電子デバイス10はまた、図1に示されていない他の構成要素も含み得ることに注意されたい。更に、別の実施形態では、図1に示す1つ又はそれ以上の構成要素は、電子デバイス10から取り除かれてもよい。様々な実施形態では、電子デバイス10はまた、装置、モバイル機器、又はコンピューティングデバイスとして参照されてもよい。
メモリ12は、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレート(DDR、DDR2、DDR3等)、SDRAM(mDDR3などのモバイルバージョンのSDRAM、及び/又はLPDDR2などの低電力バージョンのSDRAMを含む)、RAMBUS DRAM(RDRAM)、スタティックRAM(SRAM)などの任意の数及び種類のメモリデバイスを表す。1つ又はそれ以上のメモリデバイスを回路基板に結合して、シングルインラインメモリモジュール(SIMM)、デュアルインラインメモリモジュール(DIMM)などのメモリモジュールを形成し得る。
メモリコントローラ14はメモリ12と相互作用するよう構成された回路を含むことができ、様々な構成要素は、コヒーレンスポイント18を介してメモリコントローラ14に結合されてもよい。他の実施形態では、図1に示す1つ又はそれ以上の他のデバイスは、コヒーレンスポイント18を通しての結合ではなく、メモリコントローラ14に直接結合されてもよい。様々な実施形態では、メモリコントローラ14は、様々な周辺装置、構成要素、及び/又は要求エージェントに結合するための任意の数のポートを含むことができる。
メモリコントローラ14は、メモリ12から取得した、又はこれを対象としたデータを記憶するためのシステムキャッシュ16を含むことができる。システムキャッシュ16は、複数の要求エージェントからのメモリ要求を処理するよう構成されてもよい。1つ又はそれ以上の要求エージェントは、コヒーレンスポイント18に接続された状態で示されている任意のデバイス内に含まれてもよい。一実施形態では、キャッシュラインは、スティッキー状態又は非スティッキー状態のいずれかにてシステムキャッシュ16内に割り付けられてもよい。システムキャッシュ16内にどのデータを保持するかを決定する際に、システムキャッシュ16は、キャッシュラインのスティッキー状態に基づいて決定することができる。例えば、1つのシナリオでは、プロセッサ複合体20にジオメトリデータが提供されてもよく、このジオメトリデータは、グラフィックスエンジン22内の3Dエンジンが理解し得るデータ構造に変換されてもよい。変換が行われた後、3Dエンジンは、変換されたデータ構造を複数回、単一のフレーム内にて参照してもよい。したがって、変換されたデータ構造はスティッキーとしてシステムキャッシュ16内に割り付けられることができ、データ構造を記憶するキャッシュラインがシステムキャッシュ16内にて他のデータによって置き換えられないことを確かにする。再使用されるデータに対するスティッキー割り付けを使用した結果として、メモリ12に行われるアクセス数が低減され得、メモリ要求の待ち時間及び電子デバイス10の電力消費を低減する。
コヒーレンスポイント18は、メモリコントローラ14へ及びからコヒーレント及び非コヒーレントトラフィックを送るよう構成されてもよい。コヒーレンスポイント18はまた、コヒーレンススイッチとして参照されてもよい。図1に示されていないが、コヒーレンスポイント18は、フラッシュコントローラ、カメラ、ディスプレイ、及び他のデバイスなど、他のデバイスに結合されてもよい。
プロセッサ複合体20は、任意の数の中央処理装置(CPU)(図示せず)及び様々な他の構成要素(例えば、キャッシュ、バスインタフェースユニット)を含んでもよい。プロセッサ複合体20のCPU(単一又は複数)は、オペレーティングシステム(OS)を実行する回路を含んでもよい。様々な実施形態では、このOSは任意の種類のOS(例えば、iOS)としてもよい。それぞれのCPUはレベル1(L1)キャッシュ(図示せず)を含むことができ、それぞれのL1キャッシュはレベル2(L2)キャッシュに結合されてもよい。他の実施形態は、更なるキャッシュのレベル(例えば、レベル3(L3)キャッシュ)を含んでもよい。
グラフィックスエンジン22は、任意の種類のグラフィックス処理回路機構を含むことができる。一般的に、グラフィックスエンジン22は、フレームバッファ(図示せず)内に表示されるオブジェクトをレンダーリングするよう構成されてもよい。グラフィックスエンジン22は、グラフィック動作の一部又はすべてを実行するグラフィックソフトウェア及び/又は特定のグラフィック動作のハードウェアアクセラレーションを実行するグラフィックスプロセッサを有してもよい。ハードウェアアクセラレーション及びソフトウェア実装の量は、実施形態によって異なり得る。NRT周辺装置24は、任意の非リアルタイム周辺装置を含んでよい。NRT周辺装置24の様々な実施形態は、ビデオ符号器及び復号器、スケーラ/ローテータ回路、画像圧縮/復元回路、等を含んでもよい。RT周辺装置26は、任意の数及び種類のリアルタイム周辺装置を含んでもよい。
他の実施形態は、図1に示す構成要素及び/又は他の構成要素の下位集合又は上位集合を含む他の組み合わせの構成要素を含み得ることに注意されたい。所与の構成要素の1つの事例は図1に示され得、他の実施形態は、所与の構成要素の2つ又はそれ以上の事例を含んでもよい。同様に、本詳細説明を通して、1つのみが示されているとしても、所与の構成要素の2つ又はそれ以上の事例が含まれ得、及び/又は、複数の事例が示されているとしても、1つの事例のみを含む実施形態が使用され得る。
ここで図2を参照すると、集積回路の一部分の一実施形態が示されている。集積回路(IC)30は、要求エージェント32A〜C、スイッチインタフェース34、コヒーレンスポイント36並びに38、及びメモリコントローラ40を含むことができる。メモリコントローラ40は、メモリコントローラキャッシュ42並びに44、メモリチャネルスイッチ46、及びメモリチャネルユニット48並びに50を含むことができる。メモリコントローラ40は、1つ又はそれ以上のメモリデバイス(図示せず)に結合されてもよい。様々な実施形態では、IC 30は、モバイル、バッテリ式デバイスを含む、任意の様々な種類の電子デバイス内に含まれてもよい。IC 30はまた、システムオンチップ(SoC)として参照されてもよい。IC 30は、図2に示されていない他の構成要素及びインタフェースを含み得ることに注意されたい。
要求エージェント32A〜Cはシステム内で様々な動作を行うよう構成されてもよく、これらの動作を行う一部としてメモリにアクセスしてもよい。例えば、要求エージェント32は、プロセッサ(汎用プロセッサ又はグラフィックスプロセッサなどの専用プロセッサのいずれ)としてもよい。プロセッサは実行のための命令をフェッチするためにメモリにアクセスするよう構成されてもよく、また、命令の実行に応じてメモリ内の命令の様々なデータオペランドにアクセスするよう構成されてもよい。他の要求エージェントは、固定機能回路(例えば、DMAコントローラ、周辺インターフェイスコントローラ)を含むことができる。要求エージェント32は、プロセッサの別々のインスタンスなど、物理的に分離した回路としてもよい。あるいは、要求エージェントは、単一の物理的プロセッサが複数の論理リクエスタを含むことができるような、プロセッサ上のプロセス又はスレッド実行など、論理エンティティとしてもよい。1つの所与の実施形態に含まれる要求エージェント32A〜Cの数は、1つから任意の数の要求エージェントと異なってもよい。
所与の要求エージェント(物理的又は論理的)は、要求エージェント識別子(ID)によって識別され得る。様々な実施形態では、要求エージェントは、それぞれ個別の要求を別々に追跡するよう、トランザクション識別子(TID)を追加することができる。要求エージェント32A〜Cによって生成されたそれぞれの要求は、グループIDを伴ってもよい。グループIDはまた、データセットIDとして参照されることができる。グループIDは要求エージェントID及びTIDからの別々の識別子とすることができ、グループID値を表すよう使用されるビット数は、実施形態によって異なってもよい。例えば、一実施形態では、4ビットを使用してグループID値を表すことができ、16の別々のグループIDがあってもよい。グループIDは、要求が属するデータフローに基づいて、要求に割り当てられることができる。OS又はデバイスドライバ(実施形態に依存する)は、グループIDを割り当ててもよい。いくつかの種類のデータフローについては、同じグループIDが、複数の要求エージェントIDによって共有されてもよい。一実施形態では、ページング変換テーブルに対する要求は同じデータフローの一部とみなされてもよく、任意のこれらの要求は、要求エージェントIDに関わらず、共通のグループIDに割り当てられてもよい。他の種類のデータフローについては、グループIDは、単一の要求エージェントのみによって利用されてもよい。
コヒーレンスポイント36及び38は、要求エージェント32A〜Cからメモリコントローラ40に伝えられた要求のコヒーレンシー(coherency)を管理するよう構成されてもよい。一実施形態では、要求エージェント32A〜Cからのトラフィックはスイッチインタフェース34内にて分離されてもよく、特定のメモリ要求が対象としているアドレスに依存して特定のコヒーレンスポイントを横断してもよい。他の実施形態は、他の数のコヒーレンスポイントを含むことができる。
メモリコントローラキャッシュ42及び44は別々の物理的キャッシュとしてもよいが、単一の論理メモリコントローラキャッシュとみなしてもよい。より詳細には、メモリコントローラキャッシュ42及び44は単一のアドレス空間を共有することができ、キャッシュ42のアドレス空間を参照するメモリ要求は、スイッチインタフェース34によってコヒーレントポイント36を経由してキャッシュ42に送られることができ、キャッシュ44のアドレス空間を参照するメモリ要求は、スイッチインタフェース34によってコヒーレントポイント38を経由してキャッシュ44に送られることができる。スイッチインタフェース34は任意の種類の通信媒体(例えば、バス、ポイント・ツー・ポイント相互接続、等)とすることができ、任意のプロトコルを実施することができる。インタフェースは、インタフェースの信号定義及び電気的特性を参照することができ、プロトコルは、(例えば、コマンド、順序付け規則、コヒーレンスサポートを含む)インタフェース上の通信の論理定義とすることができる。メモリコントローラキャッシュ42及び44はまた、システムキャッシュとして参照され得ることに注意されたい。他の実施形態では、メモリコントローラ40は、他の数のメモリコントローラキャッシュを含むことができる。例えば、別の実施形態では、メモリコントローラ40は、4つの別々のメモリコントローラキャッシュを含むことができる。
メモリコントローラキャッシュ42及び44は、キャッシュ内に記憶されたそれぞれのキャッシュラインに対するスティッキーステータスを維持するよう構成されることができる。スティッキーステータスは、スティッキー状態、スティッキーフラグ、スティッキービット、スティッキータグ、又は他の同様のフィールドを介して実施されてもよい。一実施形態では、タグメモリは、データメモリ内に記憶されたキャッシュラインに相当するタグエントリを記憶するよう利用されてもよい。タグエントリは、スティッキーステータスフィールド及びグループIDフィールドを含む複数のフィールドを含んでよく、キャッシュラインがキャッシュ内に割り付けられるようにした要求のデータフロー源を同定する。一実施形態では、スティッキーとして割り付けられたキャッシュラインは、キャッシュがスティッキー割り付けをクリアするソフトウェアコマンドを受信するまで維持されてもよい。それぞれのキャッシュ42及び44は、既存のキャッシュラインに対する置き換えポリシーを実施するよう構成されてもよいが、置き換えポリシーは、スティッキーラインを置き換えるものとみなすことからは除外してもよい。キャッシュラインは、要求がスティッキー割り付けヒントを含む場合に、キャッシュ内にてミスした要求に対するスティッキーとして割り付けられることができる。要求エージェントは、特定の要求がスティッキー割り付けヒントを有するべきかの決定を行うことができ、その要求エージェントは、特定の要求により参照されたデータが後続の要求によって使用される可能性があるかどうかに基いて決定を行うことができる。
メモリコントローラスイッチ46は、メモリコントローラキャッシュ42及び44とメモリチャネルユニット48及び50との間にトラフィックを送ることができる。所与の実施形態内に含まれるそれぞれのメモリチャネルに対しては1つのメモリチャネルユニット48及び50があってもよく、他の実施形態は、1つのチャネル又は2つを超えるチャネルを含んでもよい。メモリチャネルユニット48及び50は、メモリチャネル上に送信されるメモリ動作をスケジュールするよう構成されてもよい。メモリチャネルユニット48及び50は、メモリ読み込み動作(又は読み込み)及びメモリ書き込み動作(又は書き込み)を別々に待ち行列に入れるよう構成されてもよく、例えばクレジットベースシステムを使用して、読み込みと書き込みとの間を仲裁するよう構成されてもよい。クレジットベースシステムでは、読み込み及び書き込みは特定のクレジット数に割り付けられてもよい。
一実施形態では、メモリチャネルユニット48及び50は、メモリ動作をバースト動作にてスケジュールしてもよい。スケジューリングにバーストメモリ動作を生成するため、メモリチャネルユニット48及び50は、メモリ動作をアフィニティグループに集約してもよい。メモリ動作は、動作が、時間的に極めて接近して行われたときにメモリインタフェース上にて効果的に行われ得る場合に、別のメモリ動作とのアフィニティを示していると言うことができる。
図2に例示された機能の分布は、集積回路に利用され得る唯一の考えられるアーキテクチャではないことが理解されるべきである。他の集積回路は、他の構成要素を含むことができ、示されている構成要素を1つ又はそれ以上取り除くことができ、及び/又は構成要素間の機能の異なる配列を含むことができる。
図3をここで参照すると、システムキャッシュの一実施形態のブロック図が示されている。一実施形態では、システムキャッシュ60は、タグメモリ62、データメモリ64、キャッシュ制御ユニット66、及び構成レジスタ68を含むことができる。システムキャッシュ60はまた、図3に示されていない他の構成要素及びロジックを含むことができることに注意されたい。例えば、他の実施形態では、システムキャッシュ60は、各要求間を仲裁する仲裁回路を含むことができる。図3に示すシステムキャッシュアーキテクチャは、実装されることができる単に1つの考えられるアーキテクチャであることが理解されるであろう。他の実施形態では、他のシステムキャッシュアーキテクチャが、本明細書に開示する方法及びメカニズムと共に利用されてもよい。
一実施形態では、タグメモリ62は、メモリ要求に対するアドレスを要求エージェントから受信するよう結合されてもよい。用語「メモリ要求(memory request)」及び「トランザクション(transaction)」は、本開示を通して互換的に使用され得ることに注意されたい。データメモリ64は、トランザクションに対するデータを受信するよう、又はデータを提供するよう結合されてもよい。様々な実施形態では、タグメモリ62及びデータメモリ64は複数のウェイを含むことができ、それぞれのウェイは、インデックスによってアドレス可能とすることができる。例えば、一実施形態では、タグメモリ62及びデータメモリ64は、それぞれ16のウェイを含むことができる。他の実施形態では、タグメモリ62及びデータメモリ64は、他の数のウェイを含むことができる。
キャッシュ制御ユニット66はタグメモリ62及びデータメモリ64に結合されており、キャッシュ制御ユニット66は、受信したトランザクションに関する様々な制御データを受信し、受信した制御データに応答するよう構成されてもよい。キャッシュ制御ユニット66はスティッキー抜去エンジン69を含むことができ、スティッキー抜去エンジン69は、タグメモリ62内のすべてのタグインデックスをウォークスルーし、所与のグループIDに対するスティッキー状態を、ソフトウェアが所与のグループIDに対するスティッキー状態を解除したときに抜去するよう構成されることができる。様々な実施形態では、スティッキー抜去エンジン69は、ハードウェア、ソフトウェア、又は任意のそれらの組み合わせとすることができる。キャッシュ制御ユニット66は単一のユニットとして図3に示されているが、他の実施形態では、キャッシュ制御ユニット66は、システムキャッシュ60内の複数のユニットに分離され得ることに注意されたい。構成レジスタ68は、システムキャッシュ60内に記憶されたデータに関連付けられた様々なグループIDに対する構成情報を含むことができる。構成レジスタ68は、OS及び/又は様々な要求エージェントからキャッシュ制御ユニット66に送信されたソフトウェアコマンドによってプログラムされてもよい。
構成レジスタ68は、システムキャッシュ60の一部として利用され得る任意の数の構成レジスタを表す。例えば、一実施形態では、システムキャッシュ60を使用するようOSによって割り当てられたそれぞれのグループ識別子(ID)に対する別々の構成レジスタ68があってもよい。この実施形態では、それぞれの構成レジスタは、各グループIDに対するステータス、割当量、及びクリアランスポリシーを定義することができる。ステータスは、システムキャッシュ60に送信されたソフトウェアコマンドによってアクティブ又はインアクティブのいずれかにセットされることができる。ステータスがインアクティブにセットされているときは、これはキャッシュ制御ユニット66を起動し、この特定グループIDに割り付けられているすべてのラインを無効にする。割当量は、システムキャッシュ60内にて各グループIDに対して割り付けられ得るラインの数量を制限するようセットされてもよい。一実施形態では、キャッシュ制御ユニット66内のそれぞれのグループIDに対する割当量カウンタ(図示せず)があってもよい。割当量カウンタは、対応するグループIDに対するシステムキャッシュ60内のキャッシュライン数を把握することができる。置き換えポリシーは、所与のグループIDがその自身のスティッキーラインを新規スティッキーラインと置き換えることができるか指定することができる。一実施形態では、この置き換えポリシーは、スティッキー置き換え構成オプションインジケータを使用して示されてもよい。この置き換えポリシーは、新規スティッキーラインに対して、利用できる非スティッキーキャッシュライン記憶ロケーションがシステムキャッシュ60内にない場合にのみ実行されてもよい。
データメモリ64はデータエントリのセットを含むことができ、それぞれはデータのキャッシュラインを記憶する容量を有する。キャッシュラインは、データメモリ64における割り付け及び割り付け解除の単位とすることができる。キャッシュラインは、32バイト又は64バイトなど、任意の好ましいサイズとすることができるが、他の実施形態では、これより大きいキャッシュラインサイズも小さいキャッシュラインサイズもサポートされてもよい。別の実施形態では、データメモリ64のキャッシュラインは、「キャッシュブロック」として参照されてもよい。
様々な実施形態では、データメモリ64は、任意の種類のメモリデバイスを利用してもよい。一実施形態では、データメモリ64は、例えば、エントリ番号によってインデックスが設けられたRAMを備えてもよい。データメモリ64は、キャッシュライン記憶ロケーションのセットが入力アドレスのインデックス部分(例えば、実施セット数の中から1つのセットを一意的に選択するようデコードされ得るアドレスのビット数)に応答する読み込み/書き込み動作に対して選択されることができるように配列されることができる。アクセスされるキャッシュライン記憶ロケーションは、キャッシュ制御ユニット66によって(例えば、要求に対するキャッシュヒットの検出に応答して、ミスしたキャッシュラインを記憶するキャッシュライン記憶ロケーションの割り付けに応答して)同定されることができる。データはアクセスされたキャッシュライン記憶ロケーションから読み込まれることができ、読み込みキャッシュヒットに対するリクエスタに戻るか、又はシステムキャッシュ60から退去させられたキャッシュラインに対するメモリに送信する。データは、リクエスタからの書き込みキャッシュヒットに対してアクセスされたキャッシュライン記憶ロケーションに書き込まれることができるか、又は、割り付けられたキャッシュライン記憶ロケーション内にミスしたキャッシュラインがキャッシュをフィルするのを完了する。いくつかの実施形態では、データメモリ64はバンクされた実装としてもよく、同様に、バンク選択制御がキャッシュ制御ユニット66から提供されてもよい。
タグメモリ62は、例えばRAMなど、任意の種類のメモリデバイスを利用することができる。あるいは、タグメモリ62は、監視目的の内容参照可能メモリ(CAM)又はRAM/CAMの組み合わせを含むことができる。タグメモリ62は複数のタグエントリを含むことができ、それぞれのエントリは、上記の異なる値のインデックスにより選択されている。選択されたタグエントリは、インデックスにより選択されたシステムキャッシュ60内のキャッシュライン記憶ロケーションのセットに相当するタグを記憶することができる。それぞれのタグは各キャッシュライン記憶ロケーション内のキャッシュラインに相当し、対応するキャッシュラインのアドレスのタグ部分(すなわち、キャッシュライン内のオフセットを定義する最下位ビット及びインデックスに使用されるビットのないアドレス)及び様々な他の状態情報を含むことができる。タグメモリ62は、要求に応じてインデックスをデコードし、処理のためにキャッシュ制御ユニット66にタグを出力するよう構成されることができる。一実施形態では、タグメモリ62はまた、タグを要求アドレスのタグ部分と比較するよう構成されたタグ比較回路を含むことができ、比較結果をキャッシュ制御ユニット66に提供することができる。別の実施形態では、キャッシュ制御ユニット66は、タグを比較することができる。キャッシュ制御ユニット66はまた、タグエントリを書き込むことで、様々なタグの更新を行うよう構成されてもよい。
システムキャッシュ60は任意の構成を有することができる。いくつかの実施形態では、ダイレクトマッピング又はセットアソシエイティブ構成を実装することができる。一般的なダイレクトマッピング及びセットアソシエイティブキャッシュでは、タグエントリとデータエントリとの間に予め構成された1対1の対応がある。ダイレクトマッピング構成では、それぞれアドレスは、1つの可能なエントリ(タグメモリ62及びデータメモリ64)を、対応するキャッシュラインが記憶されるシステムキャッシュ60内にマッピングする。一実施形態では、システムキャッシュ60はアソシエイティブとすることができ、所与のアドレスは、キャッシュラインを記憶するのに適し得るデータメモリ64内の2つ又はそれ以上のキャッシュライン記憶ロケーションにマッピングする。システムキャッシュ60はセットアソシエイティブとすることができ、それぞれのアドレスは、(キャッシュの結合性(associativity)によって決まる)2つ又はそれ以上の考えられるエントリにマッピングする。一実施形態では、Nキャッシュライン記憶ロケーションは、インデックスとして参照されるアドレスビットの下位集合内に同じ値を有するアドレスにマッピングされており、ここでNは1より大きく、かつデータメモリ64内のキャッシュライン記憶ロケーションの合計数未満の1つの整数である。所与のインデックスに対応するセットを形成するNキャッシュライン記憶ロケーションは多くの場合に、「ウェイ(way)」として参照される。他の実施形態はフルアソシエイティブとすることができ、任意のキャッシュライン記憶ロケーションは、任意のアドレスにマッピングされることができる。
キャッシュ制御ユニット66は、データエントリをデータメモリ64内に動的に割り付けることができ、システムキャッシュ60により受信したトランザクションに対するデータを記憶する。このトランザクションは、例えばメモリへの書き込みとすることができる。このトランザクションはまた、要求エージェントから以前に受信し、メモリを対象とした読み込みに応じて、メモリ(図示せず)から提供された(データを伴う)読み込み完了とすることができる。
一実施形態では、システムキャッシュ60により要求エージェントから受信したそれぞれのトランザクションは、グループID番号、キャッシュ割り付けヒント、及び1つ又はそれ以上の他の属性を含むことができる。キャッシュ割り付けヒントは、システムキャッシュ60及びキャッシュ制御ユニット66によって利用されることができ、トランザクションがシステムキャッシュ60内にてミスした場合に、キャッシュラインをトランザクションに対してどのように割り付けるかを決定する。新規のキャッシュラインがトランザクションに対して割り付けられている場合は、グループID番号は、タグメモリ62内の対応するエントリ内に記憶されてもよい。
一実施形態では、キャッシュ制御ユニット66は、利用できるエントリが要求エージェントからのスティッキートランザクションの受信に応じてデータメモリ64内にあるかを判定することができる。トランザクションがスティッキーかつキャッシュミスであり、利用できる非スティッキーエントリがデータメモリ64内にある場合は、新規スティッキーエントリがトランザクションに対して割り付けられてもよく、利用できる非スティッキーエントリを置き換える。トランザクションがスティッキーであり、非スティッキーエントリに対するキャッシュヒットである場合は、非スティッキーエントリはこのヒットによりスティッキーに変換され得ない。別のシナリオでは、非スティッキートランザクションがスティッキーエントリにヒットする場合は、スティッキーエントリはスティッキーのままとされ得る。
タグメモリ62は、システムキャッシュ60内にキャッシュされたキャッシュラインに対する様々なタグを記憶するよう構成されることができる。例えば、一実施形態では、タグは、コヒーレンス状態、スティッキー状態、ダーティインジケータ、最長期間未使用の(LRU)データ、グループ識別(ID)、及び他のデータを含むことができる。実施形態により、これらのタグの一部又はすべては、タグメモリ62のそれぞれのエントリ内に含まれることができる。
一実施形態では、キャッシュラインは、特定の要求エージェントによって非スティッキートランザクションに最初に割り付けられることができる。キャッシュラインが最初に割り付けられた特定の要求エージェントは、そのラインの主ユーザーとみなすことができる。他のグループIDによるこのエントリに対する任意の後続のヒットは二次的なユーザーとみなすことができ、したがって、元の非スティッキー状態は、キャッシュラインに対する後続のヒットがスティッキートランザクションに対するものである場合でも、キャッシュラインに対して維持されることができる。
一実施形態では、第1のグループIDに対して割り付けられたスティッキー状態を伴うキャッシュラインは、第2のグループIDに対するスティッキートランザクションによりヒットされ得る。このシナリオでは、キャッシュラインに対応するタグエントリのグループIDは、第2のグループIDに変更されてもよい。言い換えると、第2のグループIDは、第1のグループIDからのキャッシュラインを受け継ぐことができる。キャッシュラインを受け継ぐこのメカニズムは、特定のグラフィックス処理アプリケーションにおいて、以前のフレームに対するデータが次のフレームに対して再度使用され得る場合に有用となり得る。このデータの再使用を促進するため、キャッシュラインの所有権は、第1のグループIDから第2のグループIDに移されてもよい。
いくつかの実施形態では、キャッシュラインの所有権は、第1のグループIDから第2のグループIDへ、キャッシュ制御ユニット66に送信されたソフトウェアコマンドを介して移されることができる。ソフトウェアコマンドは、第1のグループIDに割り当てられているすべてのキャッシュラインが第2のグループIDに移されることを指定することができる。この機能は、グラフィックスアプリケーションを含む、多くのアプリケーションにて有益であることを証明することができる。
ここで図4を参照すると、一対のタグメモリウェイの一実施形態のブロック図が示されている。タグメモリウェイ70A〜Bは、(図3の)タグメモリ62などのタグメモリ内に含まれ得る任意の数のウェイを表す。一実施形態では、それぞれのタグメモリウェイ70A〜Bは、対応するデータメモリウェイ内に記憶されたキャッシュラインに対応するデータに対する任意の数のエントリを含むことができる。それぞれのタグメモリウェイ70A〜Bに、サンプルエントリを示す。
それぞれのタグエントリは、入力要求アドレスに対して比較されるアドレス(タグアドレス72A〜B)のタグ部分を含むことができる。タグアドレス72A〜Bは、受信したトランザクションに対する実アドレスフィールドの最上位ビットを含むことができる。タグアドレス72フィールドに使用するビット数は、実施形態によって異なってもよい。状態74A〜Bは、データメモリ内に記憶された対応するキャッシュラインの状態を表すことができる。これらは、実施形態によって異なる、状態74A〜Bが採り得る複数の異なる値でもよい。例えば、一実施形態では、異なる考えられる状態は、次の、無効(invalid)、クリーン(clean)、ダーティ(dirty)、データペンディング(data pending)、スティッキークリーン(sticky clean)、スティッキーダーティ(sticky dirty)、及びLRUダーティ(LRU dirty)を含むことができる。キャッシュラインのクリーン/ダーティステータスは、要求エージェントによってシステムキャッシュへのトランザクションと共に運ばれることができる。要求エージェントはまた、トランザクションのスティッキーステータスに対して、ヒントを提供することができる。データペンディング状態は、キャッシュラインに対するデータが現在、メモリからフェッチされていることを示すことができる。無効状態を伴う任意のエントリは、新規ラインがシステムキャッシュに割り付けられる場合に、置き換えに対する最良の候補として選択されることができる。置き換えに対する次善の候補は、LRUダーティ状態を伴う任意のエントリとすることができる。別の実施形態では、タグメモリウェイ70A〜B内のそれぞれエントリはスティッキーフラグ又はスティッキービットを含むことができ、これは、エントリが、状態フィールドではなくて、スティッキーであるかを示すことができることに注意されたい。
トランザクションの生成に責任を負う要求エージェントは、対応するタグエントリに割り当てられる状態を決定するトランザクションと共にヒントを運ぶことができる。このヒントは、トランザクションに関連付けられたデータがシステムキャッシュ内に記憶されているかを決定することができる。例えば、1つのシナリオでは、トランザクションに伴うヒントは、トランザクションがスティッキーであることを特定のトランザクションに対して示すことができる。トランザクションがスティッキーヒントを伴い、トランザクションがシステムキャッシュ内にてミスしている場合には、データはメモリから取得され、スティッキーにセットされたタグ状態74を伴ってシステムキャッシュ内に割り付けられることができる。状態をスティッキーに設定することは、このデータがキャッシュ内に「スティック(stick)」し、システムキャッシュによって抜去されないことを示す。別のスティッキートランザクションに対する異なるグループIDからのデータがシステムキャッシュ内のスペースに割り付けられるよう試みられた場合は、このデータは、他のグループIDからスティッキーラインを置き換えられることが防止される。
一実施形態では、スティッキーデータを抜去する唯一の方法は、システムキャッシュに対して、特定のグループIDに対する特定のスティッキーデータが抜去されてもよいことを示すソフトウェアコマンドを受信することである。別の実施形態では、第1のグループIDに対するスティッキーデータは、対応する構成レジスタの設定に基づいて、第1のグループIDからの他のスティッキーデータによって、システムキャッシュから抜去されてもよい。特定のグループIDに対する構成レジスタの設定が、このグループIDがスティッキーラインを他のスティッキーラインと置き換え得ることを示す場合は、スティッキーラインは、このグループIDに対する別のスティッキーラインによって置き換えられることができる。この設定は、スティッキー構成オプションとして参照されることができる。
いくつかの実施形態では、スティッキーラインの所有権は、1つのグループIDから別のグループIDへ移されてもよい。この所有権の移送は、データが第1のグループIDによって最初に使用され、続いて第2のグループIDによって後に使用され得る様々なシナリオにて利用されることができる。例えば、グラフィックスアプリケーションでは、1つのフレームを構築するために特定のデータが使用されてもよい。第1のグループIDを使用する第1のエージェントは、このグラフィックスフレームに対して最初にデータを割り付けることができる。続いて、第2のグループIDを使用する第2のエージェントは、グラフィックスアプリケーションの次のフレームに対してこのデータを再使用することができる。ソフトウェアは、フレームデータの所有権を第1のグループIDから第2のグループIDに移す要求を生成することができる。システムキャッシュはこのソフトウェア要求を受信することができ、結果として、データをスティッキーとして維持した状態で、第1のグループから第2のグループに所有権を渡すことができる。また、3次元(3D)グラフィックスアプリケーションの現在のフェーズにおいて使用されるテクスチャは、次のフェーズに対して再使用されてもよい。各3Dフェーズとの間には特定の境界タイルといった重複があってもよく、これらのタイルは、連続したフェーズに対する各グループIDとの間で移送されてもよい。各グループIDとの間のキャッシュラインの所有権の移送はまた、単にグラフィックスアプリケーションだけでなく、様々な他のアプリケーションにて起こってもよい。
スティッキー状態を伴うシステムキャッシュ内へのラインの割り付けは結果として、スティッキーラインへの各アクセスの間の時間総量がたとえ大きくても、このラインがシステムキャッシュ内に保持されることとなる。例えば、特定のデータは頻繁にアクセスされ得るが、各アクセスとの間の期間は長くともよい。このデータは、スティッキーにセットされた状態74を伴って、システムキャッシュ内に置かれてもよい。したがって、このデータは各アクセスとの間の期間がどれほど長いかに関わらず、システムキャッシュ内に維持される。例えば、第1のキャッシュラインはスティッキーとしてシステムキャッシュ内に割り付けられることができ、キャッシュ内のすべての他のラインが置き換えられるか、又は第1のキャッシュラインが再度アクセスされる前に少なくとも一度アクセスされるかのいずれとなり得るように時間が経過してもよい。新規のラインがキャッシュ内に割り付けられる必要がある場合は、たとえ非スティッキーラインが第1のキャッシュラインよりも最近にアクセスされていても、新規のラインは、キャッシュ内の非スティッキーラインの1つと置き換わる。第1のキャッシュラインは、たとえそれがキャッシュ内に最長期間未アクセスのラインであっても、キャッシュ内に残ることができる。これは、最近アクセスされたラインがキャッシュ内に保持されている従来のキャッシュとは反対であり、長期間未アクセスのラインは置き換えられる。
LRU 76A〜Bフィールドは、対応するラインに関連付けられた使用ステータスを示す値を記憶することができる。このLRU 76A〜Bフィールドは、対応するラインがどれほど最近に、及び/又はどれほど頻繁にアクセスされたかを示すことができ、このフィールド内のビット数は、実施形態によって異なり得る。グループID 78A〜Bフィールドは、システムキャッシュのデータメモリ内に、対応するラインを所有するグループを同定するグループIDを記憶することができる。グループは、1つ又はそれ以上の要求エージェントによって使用されている特定のデータフローを参照することができる。「グループID」はまた、いくつかの実施形態では「データセットID」として参照され得ることに注意されたい。実施形態により、グループIDを表すことに様々なビット数が利用されてもよい。グループID 78A〜Bフィールドは、対応するキャッシュラインに関連付けられたグループIDが追加されてもよい。
場合によっては、単一のグループIDは2つ又はそれ以上の要求エージェントによって共有されてもよい。例えば、ページング変換テーブルは複数の要求エージェントによって利用されてもよく、ページング変換テーブルを参照する任意のトランザクションは、共通のグループIDを割り当てられてもよい。この共通のグループIDは、複数の要求エージェントにわたって使用されてもよい。また、それぞれの要求エージェントは、複数の別々のグループIDを、要求エージェントによって利用されている異なるデータフローに対して使用することができる。グループIDは、ホスト電子デバイスのOSによって、1つ又はそれ以上の要求エージェントに対するデータフローに割り当てられることができる。一実施形態では、デバイスドライバは、OSからグループIDを要求することができる。要求の一部として、デバイスドライバは、どのデータ型が要求に相当するかを同定することができる。続いて、デバイスドライバからの要求の受信に応じて、OSは、アクセスされているデータ型に基づいて、この要求に使用されるグループIDを指定することができる。
グループIDによって表されたそれぞれのグループは、システムキャッシュ内のキャッシュラインの特定の割当量が割り当てられてもよい。グループがその割当量の合計量に到達すると、このグループは任意の更なるラインをシステムキャッシュ内に割り付けることができなくともよい。その代わり、特定のグループは、キャッシュ内のその既存のラインを、新規に割り付けられたラインと置き換えることができる。一実施形態では、所与のグループIDに対して置き換えられている第1のラインは、LRUダーティ状態を有するラインが続く、無効状態を有するラインとされ得る。
パリティ80A〜Bフィールドは任意の数のパリティビットを含むことができ、全フィールドにわたる全エントリ内のデータの精度の示度を提供する。他の実施形態では、タグメモリウェイ70A〜Bのそれぞれのエントリは、図4に示されていない情報の1つ又はそれ以上の更なるフィールドを含むことができる。例えば、キャッシュラインがどれほど最近に置き換えられたかについての情報はまた、タグメモリウェイ70A〜Bのそれぞれのタグ内に記憶されることができる。また、他の実施形態では、タグメモリウェイ70A〜Bは、任意の他の適当な様式にて構造化されることができる。
図5をここで参照すると、要求をシステムキャッシュに運ぶ要求エージェントの一実施形態が示されている。要求エージェント90は、任意の数及び種類の要求エージェントを表す。要求エージェント90はメモリコントローラ110への直接の送信要求92として示されているが、1つ又はそれ以上の構成要素(例えば、コヒーレントポイント、スイッチ)が、要求エージェント90とメモリコントローラ110との間に位置し得ることに注意されたい。
要求エージェント90から送信されたそれぞれの要求は、複数のフィールドを含むことができる。例えば、一実施形態では、要求92は、送信されている要求の種類(例えば、読み込み、書き込み)を示すコマンド94を含むことができる。要求92はまた、要求92に関連付けられたトランザクションIDを示すトランザクションID 96を含むことができる。トランザクションID 96は、要求エージェント90に対する要求を一意的に同定することができる。トランザクションID 96はまた、「要求ID」として参照され得ることにも注意されたい。更に、他の実施形態では、要求92はまた、要求エージェントを同定するエージェントIDを含むことができる。要求92はまた、(書き込み要求に対する)メモリアドレス及びデータをそれぞれ同定するアドレス98及びデータ100フィールドを含むことができる。
要求92はまた、書き込みデータがダーティであるかを示すダーティ状態標識102を含むことができる。要求92はまた、要求92のグループIDを同定するグループID 104を含むことができる。割り付けヒント106は、要求92がシステムキャッシュ112によってどのように扱われているかを決定することができる。他の実施形態では、割り付けヒント106は、「スティッキーヒント」、「スティッキーフラグ」、「スティッキービット」、又は「スティッキー属性」として参照されることができる。他の属性108は、要求92の一部とすることができる任意の数及び種類の更なる属性(例えば、コヒーレンシー、QoS、要求のサイズ、リクエスタID)を表す。
システムキャッシュ112は単一のユニットとして示されているが、他の実施形態では、システムキャッシュ112は、2つ又はそれ以上の別々のユニットに分離され得ることが理解されるべきである。例えば、メモリコントローラ110は2つのチャネルを含むことができ、システムキャッシュ112は、1つの論理システムキャッシュとして管理された2つの別々の物理的システムキャッシュに分離されてもよい。
ここで図6を参照すると、システムキャッシュ内のスティッキー抜去エンジンの一実施形態のブロック図が示されている。一実施形態では、スティッキー抜去エンジン124は、タグメモリの各インデックスをウォークスルーし、解除されているグループIDに属する、対応するキャッシュラインのスティッキー状態をクリアするよう構成されることができる。タグウェイ122A〜Bは図6に示され、タグウェイ122A〜Bは、タグメモリの任意の数のウェイを表す。タグウェイ122A〜Bのそれぞれのエントリは、図が混乱することを回避するために図6に示されていないインデックス、状態フィールド、グループIDフィールド、及び1つ又はそれ以上の他のフィールドを含むことができる。
一実施形態では、スティッキー抜去エンジン124は、グループID 2に属するキャッシュラインを解除するソフトウェアコマンドを受信することができる。エンジン124は、グループID 2に対するテーブル126内の開始インデックス0のログを取ることができる。エンジン124はグループID 2に対する解除要求を受信する前にアイドル状態であって、したがって、エンジン124は、タグメモリをウォークスルーする際に、インデックス0にて開始し得ることが、この説明の目的として想定されるであろう。
それぞれのインデックスにて、エンジン124は、その特定のインデックスにてそれぞれのウェイ122A〜BにおいてのグループIDマッチを探すことができる。例えば、別の実施形態では、タグメモリは16のウェイを含むことができ、各タグメモリインデックスのそれぞれのステップスルーでは、エンジン124は、クリアされているグループIDに対して、16のウェイすべてのグループIDフィールドを比較することができる。エンジン124がマッチを見つけた場合、エントリの状態フィールドは、LRUダーティに変更されてもよい。別の実施形態では、エンジン124がマッチを見つけた場合、状態フィールドは、対応するキャッシュラインが置き換えに対する主な候補であることを特定する別の状態に変更されてもよい。例えば、一実施形態では、状態フィールドがダーティ(スティッキー又は非スティッキー)の場合はLRUダーティに変更されてもよく、状態フィールドがクリーン(スティッキー又は非スティッキー)の場合は無効に変更されてもよい。対応するキャッシュラインを置き換えるべきであることを示す他の好適な技術が可能であり、想到される。エンジン124は、複数のマッチが見つかった場合に、単一のインデックスでの複数のウェイにおいて複数のエントリを変更し得ることに注意されたい。エンジン124は、テーブル126に示される開始インデックスに戻るまで、インデックスを継続してウォークスルーすることができる。
エンジン124が特定のエントリの状態フィールドをクリアすると、その特定のエントリの対応するキャッシュラインは直ちにはシステムキャッシュから抜去されなくともよい。むしろ、キャッシュラインは、要求がシステムキャッシュ内にてミスし、新規のキャッシュラインがこの要求に対して割り付けられているときは、ある将来の時点にて置き換えられてもよい。これは、クリア処理中に生成されたトラフィック量を低減することで、クリア処理を迅速に終了することを可能とする。いくつかの実施形態では、タグパイプラインは、クロックサイクル毎の単一のトランザクションの生成のみを可能としてもよい。クリア処理が、照合キャッシュラインを直ちにフラッシュするよう構成されていた場合は、これはクリア処理を遅らせ得る。例えば、単一のインデックスにて複数のエントリと共に複数のマッチが見つかった場合は、複数のダーティなキャッシュラインはフラッシュされてメモリに戻される必要がある。この場合、クリア処理は、ダーティなラインがフラッシュされるのを待つことで遅れが生じる。したがって、この種の遅延を回避するため、クリア処理はキャッシュラインを、置き換えに対する主な候補としてマークし、続いてタグメモリの次のインデックスに移動することができる。キャッシュ制御ユニットが後のある時点での置き換え候補を検索しているときは、キャッシュ制御ユニットは、置き換えに対する主な候補としてマークされたこれらのキャッシュラインの1つを置き換えることを好適とすることができる。
一実施形態では、割当量クリア方法は、システムキャッシュの構成レジスタ120に指定されてもよい。スティッキー抜去エンジン124は、レジスタ120に問い合わせることで、割当量クリア方法を決定することができる。割当量クリア方法がフラッシュにセットされている場合は、ダーティなキャッシュラインは、所与のグループIDをシステムキャッシュからクリアする際に、メモリに書き込まれることができる。割当量クリア方法がドロップにセットされている場合は、ダーティなキャッシュラインはメモリに書き戻されず、代わりに無効とされ得る。
構成レジスタ120はまた、グループID毎の割当量有効インジケータを含むことができる。一実施形態では、所与のグループIDに対してクリアランスプロセスを開始するため、ソフトウェアエージェントはコマンドを送ることができ、所与のグループIDに対する割当量有効インジケータをクリアする。システムキャッシュは割当量有効インジケータ上の遷移を検出することができ、続いてシステムキャッシュは、スティッキー抜去エンジン124を起動することができる。スティッキー抜去エンジンは続いて、構成レジスタ120に指定された割当量クリア方法に基づいて、所与のグループIDに対して割り付けられたすべてのキャッシュラインをクリアすることができる。割当量クリア方法がフラッシュにセットされている場合は、所与のグループIDに対するダーティなラインはLRUダーティにセットされ、後にメモリに書き戻されることができる。割当量クリア方法がドロップにセットされている場合は、所与のグループIDに対するダーティなラインは無効とされることができる。所与のグループIDに対するすべてのラインがクリアされた後、構成レジスタ120内の所与のグループIDに対する割当量状態インジケータビットは0にクリアされることができる。クリア処理が依然として実行されている間にソフトウェアエージェントが割当量有効インジケータをセットする場合は、そのグループIDを伴う要求は、クリア処理が完了するまでシステムキャッシュ内に割り付けられ得ない。
図7をここで参照すると、スティッキー抜去エンジンの別の実施形態のブロック図が示されている。図7に示す例は、図6に示すスティッキー抜去エンジン124のインデックスウォークの続きである。スティッキー抜去エンジン124は、タグウェイ122A内のエントリに示すように、インデックス45に到達していてよい。エンジン124は、図6に示すように、インデックス0からインデックス45にウォークスルーしていてよく、グループID 2に対して受信した解除要求に基づき、グループID 2とのマッチを検索する。0の開始インデックスは、グループID 2に対するテーブル126に記録されることができる。
図7に示すように、スティッキー抜去エンジン124がグループID 2を解除するためのインデックスウォークにてインデックス45に到達すると、エンジン124は、グループID 5に対する解除要求を受信することができる。これに応じて、エンジン124は、テーブル126の開始インデックスフィールド内のインデックス45のその現在のロケーションのログを取ることができる。エンジン124はまた、構成レジスタ120に問い合わせることができ、グループID 5に利用する特定の種類のクリアランスプロセスを決定する。続いて、エンジン124はタグウェイ122A〜Bのそのウォークスルーを続けることができ、このときにはグループID 2又は5とのマッチを検索する。
スティッキー抜去エンジン124がタグメモリウェイ122A〜Bの最後のインデックスに到達すると、スティッキー抜去エンジン124はウェイ122A〜Bの第1のインデックスまでラップアラウンドすることができ、インデックスウォークをそこから続けることができる。エンジン124はその時点でグループID 2に対するキャッシュラインのクリア状態を停止することができるが、テーブル126にロギングされた開始インデックス(45)に戻るまで、グループID 5に対するキャッシュラインのクリア状態を続けることができる。エンジン124は、タグウェイ122A〜Bのインデックスウォークスルーを行っている間に、任意の数の解除要求を受信することができることに注意されたい。エンジン124は、解除要求が受信されたそれぞれのグループIDに対する、テーブル126内の開始インデックスを記憶することができる。エンジン124は、任意の数の同時クリアランスプロセスを行うよう構成されてもよい。
ここで図8を参照すると、複数のグループIDに対するスティッキー状態を解除する方法130の一実施形態が示されている。説明のために、この実施形態での各ステップは、発生する順番に示されている。以下に説明する方法の様々な実施形態では、説明された1つ又はそれ以上の要素は、示されたものとは異なる順序にて同時に行われることができ、又は、全体が省略され得ることに注意するべきである。所望に応じて他の追加の要素が実行されてもよい。
一実施形態では、スティッキー抜去エンジンは、第1のグループIDに割り当てられたキャッシュラインに対するスティッキー状態を解除する要求を受信することができる(ブロック132)。この要求の受信に応じて、スティッキー抜去エンジンは、タグメモリの第1のエントリにて始まる、タグメモリへのステップスルーを開始することができる(ブロック134)。他の実施形態では、スティッキー抜去エンジンは、いくつかの他のエントリにて、タグメモリへのそのウォークスルーを始めることができる。それぞれのステップにて、エンジンは、タグが第1のグループIDに割り当てられている場合にタグのスティッキー状態をクリアすることができる(ブロック136)。一実施形態では、タグメモリは、マルチウェイ・セット・アソシエイティブ構成を有することができる。この実施形態では、エンジンは、それぞれのウェイにおけるタグのグループIDフィールドを読み込み、第1のグループIDに割り当てられた任意のタグのスティッキー状態をクリアすることができる。エンジンは、単一のインデックスでの1つを超えるタグが第1のグループIDに割り当てられている場合に、単一のステップでの複数のエントリのスティッキー状態をクリアすることができる。
第1のグループIDのスティッキー状態を解除する、タグメモリのウォークスルー中は、スティッキー抜去エンジンは、第2の解除要求を受信することができる(ブロック138)。第2の解除要求は、第2のグループIDに対するものとすることができ、システムキャッシュからそのキャッシュラインのすべてをクリアする。第2のグループIDに対する第2の解除要求の受信に応じて、エンジンは、タグメモリ内のエンジンの現在のロケーションのインデックスのログを取ることができる(ブロック140)。一実施形態では、このインデックスはテーブル内に記憶されることができ、このインデックスは第2のグループIDに関連付けられているものと同定されることができる。続いて、エンジンはタグメモリのそのウォークスルーを続けることができるが、ここでエンジンは、第1のグループID又は第2のグループIDのいずれかとのマッチを探すその検索を拡げることができる(ブロック142)。エンジンが第1又は第2のグループIDのいずれかとのマッチを見つけると、エンジンは、照合タグエントリのスティッキー状態をクリアすることができる(ブロック144)。一実施形態では、エンジンは、タグの状態をLRUダーティに設定することで、照合タグエントリのスティッキー状態をクリアしてもよい。
エンジンがタグメモリの最後のエントリに到達すると(条件ブロック146、「はい」の分岐)、エンジンは、第1のグループIDに対してスティッキー状態クリア処理が完了したことの示度を生成することができる(ブロック148)。一実施形態では、エンジンは、構成レジスタ内の第1のグループIDに対するインアクティブに対して割当量状態インジケータをクリアすることで、スティッキー状態クリア処理の終了を信号伝達することができる。エンジンがタグメモリの最後のエントリに到達していない場合は、(条件ブロック146、「いいえ」の分岐)、エンジンは、第1のグループID又は第2のグループIDのいずれかとのマッチを探す、タグメモリのそのウォークスルーを続けることができる(ブロック142)。
ブロック148の後、エンジンは、タグメモリの第1のエントリまでラップアラウンドすることができる(ブロック150)。続いて、エンジンは、タグメモリのエントリへのステップスルーを続けることができるが、それぞれのエントリにて、エンジンは、第2のグループIDとのマッチのみを探すことができる(ブロック152)。エンジンが第2のグループIDとのマッチを見つけると、エンジンは照合タグエントリのスティッキー状態をクリアすることができる(ブロック154)。
エンジンが第2のグループIDに対する第2の解除要求の受信時にロギングされたインデックスに戻っている場合は(条件ブロック156、「はい」の分岐)、エンジンは、第2のグループIDに対するスティッキー状態クリア処理が完了したことを信号伝達することができる(ブロック158)。エンジンがロギングしたインデックスに戻っていない場合は(条件ブロック156、「いいえ」の分岐)、エンジンは、第2のグループIDとのマッチを探すためにタグメモリのそのウォークスルーを続けることができる(ブロック152)。ブロック158の後、方法130は終了することができる。
スティッキー抜去エンジンは、2つを超えるグループIDに対してスティッキークリア処理を同時に行うことができることに注意されたい。エンジンは、3つ又はそれ以上のグループIDに対する方法を、方法130と同様の様式にて利用することができる。エンジンがグループIDに対する解除要求を受信する毎に、エンジンは、エンジンの現在のロケーションのタグメモリのインデックスのログを取ることができる。続いて、エンジンは、ロギングしたインデックスに戻るまで、そのウォークスルーにてタグメモリをラップアラウンドすることができる。エンジンは、任意の数のグループIDに対する任意の数のインデックスのログを取ることができ、タグメモリへのそれぞれのステップスルーにて、複数の別々のグループIDを検索することができる。
次に図9を参照すると、システム190の一実施形態のブロック図が示されている。図示のように、システム190は、デスクトップコンピュータ200、ラップトップコンピュータ210、タブレットコンピュータ220、携帯電話230、テレビジョン240(若しくは、テレビジョンに結合されるよう構成されたセットトップボックス)、又はその他のチップ、回路、構成要素、等を表すことができる。図示の実施形態では、システム190は、外部メモリ192に結合される(図2の)IC 30の少なくとも1つのインスタンスを含む。
IC 30は、1つ又はそれ以上の周辺装置194及び外部メモリ192に結合されている。IC 30に供給電圧を供給するとともに、メモリ192及び/又は周辺装置194に1つ以上の供給電圧を供給する電源196も提供されている。様々な実施形態では、電源196は、バッテリ(例えば、スマートフォン、ラップトップ又はタブレットコンピュータの充電式バッテリ)を表すことができる。実施形態によっては、IC 30の1つを超えるインスタンスが含まれてもよい(及び1つを超える外部メモリ192も含まれてよい)。
メモリ192は、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレート(DDR、DDR2、DDR3等)、SDRAM(mDDR3などのモバイルバージョンのSDRAM、及び/又はLPDDR2などの低電力バージョンのSDRAMを含む)、RAMBUS DRAM(RDRAM)、スタティックRAM(SRAM)などの任意のタイプのメモリであり得る。1つ以上のメモリデバイスを回路基板に結合して、シングルインラインメモリモジュール(SIMM)、デュアルインラインメモリモジュール(DIMM)などのメモリモジュールを形成し得る。あるいは、デバイスは、チップ・オン・チップ構成、パッケージ・オン・パッケージ構成、又はマルチチップモジュール構成にてIC 30に装着され得る。
周辺装置194は、システム190の種類に応じて、任意の所望の回路機構を含んでよい。例えば、一実施形態では、周辺機器194は、WiFi(登録商標)、Bluetooth(登録商標)、セルラー、全地球測位システムなどの様々なタイプの無線通信装置を含み得る。また、周辺機器194は、RAM記憶装置、半導体ストレージ、又はディスクストレージなど、追加記憶装置を含み得る。周辺装置194は、タッチ表示画面又はマルチタッチ表示画面を含む表示画面、キーボード又はその他の入力デバイス、マイクロフォン、スピーカなど等のユーザインタフェースデバイスを含んでもよい。
上記の実施形態は、実現形態の非制限例のみであることが強調されるべきである。上述の開示が完全に理解されれば、当業者には数多くの変形及び変更が明らかになるであろう。添付の請求項はこのような変形及び変更をすべて包含するように解釈されることが意図されている。