説明

柔軟な構成を有するキャッシュ、それを使用するデータ処理システム、およびそのための方法

キャッシュ(120)は、バス(116)に結合することができ、アレイ(125)と、コントローラ(122)とを備える。アレイ(125)は、複数のセット(200,210,220)を有し、各セットは、複数のキャッシュ・ライン(202)を有し、各セット内の各キャッシュ・ラインは、タグおよび複数のデータ語を含む。コントローラ(122)は、アレイ(125)と結合していて、コンフィグレーション値(232,234)により、各セットの複数のキャッシュ・ライン(202)の第1の部分(205)を第1のバス動作タイプと関連付け、各セットの複数のキャッシュ・ライン(202)の第2の部分(206)を第2のバス動作タイプと関連付ける。コントローラ(122)は、また、バス動作中、バス(116)を通るデータを、バス動作のタイプが第1のバス動作タイプである場合には、第1の部分(205)に選択的に格納するか、またはバス動作のタイプが第2のバス動作タイプである場合には、第2の部分(206)に選択的に格納する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、データ処理システムに関し、特に、データ処理システムで使用するためのキャッシュに関する。
【背景技術】
【0002】
コンピュータ・システムの性能を向上するための周知の方法は、キャッシュと呼ばれるローカル高速メモリを内蔵させる方法である。キャッシュはシステムの性能を向上する。何故なら、中央処理装置(CPU)が特定のアドレスでデータ(データまたはデータ・オペランド)にアクセスした場合、そのすぐ後でそのデータまたは隣接するアドレスのところのデータにアクセスする確率が高いからである。キャッシュは、速度の遅いメインメモリまたは下位レベル・キャッシュから、要求されたデータに隣接して位置するデータを取り出し、格納する。
【0003】
非常に高性能なコンピュータ・システムにおいては、いくつかのキャッシュを階層的に配置することができる。上位レベルまたは「L1」キャッシュと呼ばれるCPUに最も近いキャッシュは、階層で最上位レベルのキャッシュであり、一般に最も高速なキャッシュである。次に、他の一般に速度の遅いキャッシュは、メインメモリに接続している最下位レベルのキャッシュまで「L2」キャッシュから開始して、階層に降順に配置される。最近のシングル・チップ・マイクロプロセッサまたはシステム・オン・チップ(SOC)は、通常、チップ上にL1およびL2キャッシュの両方を備える。
【0004】
キャッシュ階層のレベルの他に、それが格納しているデータのタイプによりキャッシュを分類することもできる。命令キャッシュは、メモリから取り出した命令を格納する。データ・キャッシュは、メモリからキャッシュに割り当てられたデータ・オペランドを格納する。普及しているシステム構成は、別々のL1命令およびデータ・キャッシュおよび複合命令およびL2レベルのところにデータ・キャッシュを備える。
【0005】
基本キャッシュは、複数語キャッシュ・ラインに分割されている大型のスタティック・ランダム・アクセス・メモリ(SRAM)を備える。キャッシュは、キャッシュ・ラインの結合性の度合いによって変わる。完全結合性キャッシュの場合には、メモリからの任意のラインをキャッシュ内の任意のラインに格納することができる。セット結合性キャッシュは、セット内の各キャッシュ・ラインが、セット内の他のキャッシュ・ラインと共通の、セット索引と呼ばれるそのアドレスの一部を有するセットにグループ分けされたキャッシュ・ラインを備える。ダイレクト・マッピングしたキャッシュは、メモリの各ラインのための特定の位置を有する。セット結合性技術が通常使用される。何故なら、この技術は、管理できる量にアクセス中アドレス比較の数を制限し、それにより妥当な大きさの回路エリアで大型のキャッシュ・アレイを構成することができるからである。
【0006】
セット結合性キャッシュにおいては、セット内の各キャッシュ・ラインまたは「ウェイ」は、アドレスの一部を格納する対応するタグを有する。アクセス・アドレスのこの部分と、対応するセット内の有効なキャッシュ・ラインのタグ間の一致はキャッシュ・ヒットと呼ばれる。タグは、通常、アクセス・アドレスを、セット内の各キャッシュ・ラインのタグと迅速に比較するために、内容アドレス可能メモリ(CAM:content addressable memory)と一緒に実施される。
【0007】
キャッシュの回路エリアの大部分はSRAMであるので、キャッシュのある部分を独立SRAMとして使用するためにプログラムすることができることはよく知られている。Terry Biggs他は、米国特許第5,410,669号に、キャッシュの一部をセット単位でSRAMとして使用することができるようにする技術を開示している。この分割により、プログラマはより柔軟にプログラムすることができる。
【0008】
キャッシュが完全にデータで満たされると、近い将来必要になる可能性が低いデータを置換することにより、キャッシュ・ライン内に新しいデータを格納する必要がある。それ故、最長時間未使用(LRU:least−recently used)キャッシュ・ラインを除去するために選択することが望ましい。真のLRUシステムを実施する際にこの問題を解決するために、大部分のキャッシュは擬似LRUシステムを使用する。
【特許文献1】米国特許第5,410,669号
【発明の開示】
【発明が解決しようとする課題】
【0009】
CPUが必要とする命令およびデータ・オペランドの他に、キャッシュは、また、後の処理のためにデータ通信フレームを格納するための便利な場所でもある。しかし、この目的のためにキャッシュを使用すると、高速データ通信トラフィック中に効率が低下する恐れがある。ネットワーク上の集中的活動中に、データ通信フレームのために使用したキャッシュの一部が成長し、CPU命令およびデータを格納するために使用することができる位置を押し出す(crowd out)恐れがある。この押し出しによって、CPUの動作の効率が低下させる恐れがある。何故なら、CPUはメモリ階層の下位レベルから必要な命令およびデータを取り出し、より頻繁にメインメモリに比較的遅いアクセスを行わなければならないからである。
【0010】
それ故、押し出しが制限または制御されるキャッシュ・システムが求められている。
【課題を解決するための手段】
【0011】
本発明は、そのようなキャッシュ・システムを提供する。その機能および利点は、添付の図面を参照しながら下記の詳細な説明を読めば明らかになるだろう。
類似の参照符号が類似のまたは同一のアイテムを示す添付の図面を参照すれば、当業者であれば本明細書をよりよく理解することができるだろうし、その多くの機能および利点を理解することができるだろう。
【0012】
異なる図面の同じ参照符号は、類似のまたは同一のアイテムを示す。
ある形態の場合には、キャッシュはバスと結合して、アレイと、コントローラとを備える。アレイは、それぞれが複数のキャッシュ・ラインを有する複数のセットを有し、各セット内の各キャッシュ・ラインは、タグおよび複数のデータ語を含む。コントローラは、アレイに結合していて、コンフィグレーション値により、各セットの複数のキャッシュ・ラインの第1の部分を第1のバス動作タイプと関連付け、各セットの複数のキャッシュ・ラインの第2の部分を第2のバス動作タイプと関連付ける。コントローラは、また、バス動作中、バスを通るデータを、バス動作のタイプが第1のバス動作タイプである場合には、第1の部分に選択的に格納するか、またはバス動作のタイプが第2のバス動作タイプである場合には、第2の部分に選択的に格納する。
【0013】
このようなキャッシュの場合には、第1のバス動作のタイプは、入出力スタッシュ・バス動作であってもよいし、第2のバス動作のタイプは、プロセッサ・バス動作であってもよい。この場合、コントローラは、さらに、コンフィグレーション値によりスタティック・ランダム・アクセス・メモリとして使用する各セットの複数のキャッシュ・ラインの第3の部分を関連付けることができる。キャッシュは、さらに、コンフィグレーション値を格納するためにコンフィグレーション・レジスタを含むことができる。コンフィグレーション・レジスタは、第1の部分のサイズを決定するための第1のフィールド、および第3の部分のサイズを決定するための第2のフィールドを含むことができる。第2の部分のサイズは、第1の部分または第3の部分に位置していない複数のキャッシュ・ラインの残りの部分である。
【0014】
またこのようなキャッシュの場合、コントローラは、バス動作のタイプに対応する複数のキャッシュ・ラインの第1および第2の部分のうちの一方から置換のためのキャッシュ・ラインを選択するために、バス動作のアドレスに応じる置換ロジックを含むことができる。置換ロジックは、さらに、置換のためのキャッシュ・ラインを選択するために、擬似最長時間未使用(LRU)アルゴリズムを実行することができる。各セットは、また、複数の履歴ビットを格納することができ、コントローラは、コンフィグレーション値により識別した不適格ライン(ineligible line)を避けながら、置換のためのキャッシュ・ラインを決定するために複数の履歴ビット上で動作することができる。
【0015】
他の形態の場合には、データ処理システムは、第1のバスと、中央処理装置(CPU)と、入出力コントローラと、キャッシュとを含む。CPUは、第1のバスに結合していて、第1のバス上でプロセッサ・バス動作を実行する。入出力コントローラは、第1のバス上で入出力スタッシュ・バス動作を実行する。キャッシュは、第1のバスに結合していて、アレイおよびコントローラを含む。アレイは、それぞれが、複数のキャッシュ・ラインを有する複数のセットを有し、各セットの各キャッシュ・ラインは、タグと複数のデータ語を含む。コントローラは、アレイに結合していて、コンフィグレーション値により、各セットの複数のキャッシュ・ラインの第1の部分を入出力スタッシュ・バス動作と関連付け、各セットの複数のキャッシュ・ラインの第2の部分をプロセッサ・バス動作と関連付ける。コントローラは、また、バス動作中、第2のバスを通るデータを、バス動作が入出力スタッシュ・バス動作である場合には、第1の部分に選択的に格納するか、またはバス動作がプロセッサ・バス動作である場合には、第2の部分に選択的に格納する。
【0016】
第1のバス、中央処理装置、入出力コントローラ、およびキャッシュを1つの集積回路上で結合することができる。この場合、データ処理システムは、入出力コントローラと結合している第2のバスと、第1のバスおよび第1のバスに第2のバス上の入出力スタッシュ・バス動作を提供する第2のバスと結合しているコヒーレンシ・モジュールとを含むことができる。この場合、入出力コントローラは、さらに、入出力スタッシュ・バス動作でない他のバス動作を実行することができる。例えば、入出力コントローラは、データ通信ヘッダに対して入出力スタッシュ・バス動作を実行することができ、データ通信ペイロード・データに対して入出力スタッシュ・バス動作でない他のバス動作を実行することができる。
【0017】
ある特定の実施形態の場合には、中央処理装置は、レベル1(L1)キャッシュと、レベル2(L2)キャッシュとしてのキャッシュ機能とを含む。
コントローラは、バス動作のタイプに対応する複数のキャッシュ・ラインの第1および第2の部分のうちの一方から置換のためのキャッシュ・ラインを選択するために、バス動作のアドレスに応じる置換ロジックを備えることができる。このような置換ロジックは、さらに、置換のためのキャッシュ・ラインを選択するために、擬似最長時間未使用(LRU)アルゴリズムを実行することができる。この場合、各セットは、複数の履歴ビットを格納することができ、コントローラは、コンフィグレーション値により識別した不適格ラインを避けながら、置換のためのキャッシュ・ラインを決定するために複数の履歴ビット上で動作することができる。
【0018】
さらに他の形態は、キャッシュを編成するための方法を提供する。キャッシュのアレイが、それぞれが複数のキャッシュ・ラインを有する複数のセットに編成され、各キャッシュ・ラインは、タグおよび複数のデータ語を含む。コンフィグレーション値が受信され、格納される。コンフィグレーション値により、各セットの複数のキャッシュ・ラインの第1の部分は、第1のバス動作タイプと関連付けられ、各セットの複数のキャッシュ・ラインの第2の部分は、第2のバス動作タイプと関連付けられる。バス動作中、バスを通るデータは、バス動作が第1のバス動作タイプである場合には、第1の部分に選択的に格納されるか、またはバス動作が第2のバス動作タイプである場合には、第2の部分に選択的に格納される。
【0019】
複数のキャッシュ・ラインの第1の部分と第1のバス動作タイプとの関連付けのステップは、さらに、複数のキャッシュ・ラインの第1の部分と入出力スタッシュ・バス動作との関連付けのステップを含むことができ、複数のキャッシュ・ラインの第2の部分と第2のバス動作タイプとの関連付けのステップは、複数のキャッシュ・ラインの第2の部分とプロセッサ・バス動作タイプとの関連付けのステップを含むことができる。この方法は、また、コンフィグレーション値によりスタティック・ランダム・アクセス・メモリとして使用する各セットの複数のキャッシュ・ラインの第3の部分の関連付けのステップを含むこともできる。
【発明を実施するための最良の形態】
【0020】
ここで図面を参照すると、図1は、本発明によるデータ処理システム100のブロック図である。データ処理システム100は、一般に、中央処理装置(CPU)コア110と、レベル2(「L2」)キャッシュ120と、コヒーレンシ・モジュール130と、バス140と、ダブルデータ・レート(DDR)同期式ダイナミック・ランダム・アクセス・メモリ(SDRAM)コントローラ150と、ローカル・バス・インタフェース160と、イーサネット(登録商標)・コントローラの形式の入出力コントローラ170および180と、以下にさらに詳細に説明する種々の周辺装置が取り付けられている周辺ハブ190とを含む。図の実施形態の場合には、データ処理システム100の構成要素は、1つの集積回路に結合している。それ故、ローカル・バス・インタフェース160は、オフチップ・ローカル・バスに接続していて、DDR SDRAMコントローラ150は、オフ・チップDDR SDRAMに接続している。データ処理システム100の同じ基本構成要素を使用して、種々の他の集積回路構成が可能であることを理解することができるだろう。
【0021】
ここでデータ処理システム100の構成要素を参照すると、CPUコア110は、高性能縮小命令セット・コンピュータ(RISC)コアである。高性能の一部として、CPUコア110は、レベル1(「L1」)データ・キャッシュ112およびL1命令キャッシュ114を含む。CPUコア110は、また、ロードおよび格納アクセスを行うフロントサイド・バス116へのインタフェースを含む。
【0022】
L2キャッシュ120は、フロントサイド・バス116への2方向接続を含み、非排他的配置構成でL1データ・キャッシュ112およびL1命令キャッシュ114と連動して動作する複合命令およびデータ・キャッシュである。より詳細に説明すると、L2キャッシュ120は、CPU命令およびデータ・オペランド、および入出力データを格納する。入出力データは、以下にさらに詳細に説明するように、データ通信フレームの一部の形をしている。L2キャッシュ120は、一般に、コントローラ122およびキャッシュ・ライン125のアレイを含む。以下にさらに詳細に説明するように、アレイ125は、キャッシュ・ラインを格納するためのSRAM、およびタグを格納するためのキャッシュ・ラインに対応する位置を有するCAMを含む。
【0023】
コヒーレンシ・モジュール130は、フロントサイド・バス116および内部バス140の両方に2方向に接続している。コヒーレンシ・モジュールは、2つの基本機能を実行する。最初に、このモジュールは、バス140上で読取り/書込み動作をスヌープし(snoop)、キャッシュ112、114および120に、キャッシュ・ヒットを探索させ、ある入出力トランザクションのデータを格納させる。次に、このモジュールは、バス116とバス140の間にブリッジを形成し、そのためCPUコア110は、内部バス140上の装置にアクセスすることができる。
【0024】
ローカル・バス・インタフェース160は、バス140および外部バス上のトランザクション間でブリッジとしての働きをする。外部バスは、例えば、汎用メモリ・バスであってもよい。
【0025】
イーサネット・コントローラ170および180は、別のイーサネット・リンクに接続していて、これらのリンクとの間でデータ・フレームを送受信する。図に示すように、これらのコントローラは、データ・リンク層機能の少なくとも一部を実行し、オフ・チップ物理層装置へのインタフェースとしての働きをする。それ故、イーサネット・コントローラ170および180は、データ通信フレームのためのソースであり、シンクである。コヒーレンシ・モジュール130は、スヌープのためにグローバルに可視的でなければならないトランザクションを認識し、それらをL2キャッシュ120内に格納するためにフロントサイド・バス116を通してトランザクションを提供する。それ故、イーサネット・コントローラ170および180は、データ通信フレーム負荷を有利に提供し、それらをスヌープのためにグローバルに可視的であるものとして識別する属性と一緒にトランザクションを格納する。
【0026】
DDR SDRAMコントローラ150は、JEDEC標準JESD−79に適合する外部大容量記憶装置に対してインタフェースとしての働きをする。他の実施形態の場合には、DDR SDRAMコントローラ150は、いわゆるDDR−II標準、JESD−90標準、ある他の標準、または従来の非同期式DRAMに適合するものであってもよい。
【0027】
ハブ190は、種々様々な周辺装置へ接続するための相互接続点またはブリッジである。データ処理システム100は、入出力メッセージング・ユニット191と、最大4つのレーンを有するリンク193への1つのブロック192として示すRapidIO Trade Associationが発行するプロトコルのシリアル形式により動作する「SRIO」で示す4つのリンクと、最大8つのレーンを有するリンク195へのPCI−E(Peripheral Component Interconnect−Express)バス・インタフェース194と、対応するPCIリンク197に接続している専用PCIまたはPCI−Xコントローラ196と、ダイレクト・メモリ・アクセス(DMA)コントローラ198とを含むこのような装置の種々のものを含む。ハブ190に接続している周辺装置は、単に例示としてのものに過ぎないことを理解されたい。
【0028】
イーサネット・コントローラ170および180は、通常の10メガビット/秒(Mbps)イーサネット・リンク、100Mbpsでの高速イーサネット、または1ギガビット/秒(Gbps)でのギガビット・イーサネットで動作することができる。理解してもらえると思うが、このような高速での通信は、時として、L2キャッシュ120内に大容量のフレーム・データが蓄積する結果になり、そうなると最終的には押し出し効果によりCPUコア110の性能の劣化が始まる。しかし、本発明によれば、L2キャッシュ120は、入出力(I/O)データまたはCPUデータのためにアレイ125の一部を専用に使用することができる。I/Oスタッシング(I/O stashing)と呼ばれるI/O動作については、図2〜図4のところで以下にさらに詳細に説明する。しかし、一般に、I/Oスタッシングという用語は、I/Oバス動作中に行われたデータをキャッシュ内に格納することを意味する。例えば、イーサネット・コントローラ170は、バス140を通してメモリにイーサネット・フレーム・データを書き込むことができ、L2キャッシュ120は、このデータを有利にスタッシュすることができる。何故なら、すぐ後でCPUコア110による処理のためにこれが必要になるからである。この機能により、データ通信タスクをサポートするために、L2キャッシュ120の第1のプログラム可能な部分を入出力動作のために取っておく(すなわち、入出力動作と関連付ける)ことができ、押し出しを実質的に避けるために第2のプログラム可能な部分をCPU命令およびオペランド・データのために取っておくことができる。さらに、以下に説明するように、キャッシュ120の第3のプログラム可能な部分を汎用SRAMとして専用に使用することができ、異なるシステムのニーズに対して高度な柔軟性を提供することができる。
【0029】
図2は、その編成を理解するのに役立つ図1のキャッシュ120の一部のブロック図である。図2に示すように、キャッシュ120は、アレイ125、およびコントローラ122と関連する「L2キャッシュ制御レジスタ」で示す制御レジスタ230を含む。アレイ125は、「セット0」で示すセット200と、「セット1」で示すセット210と、「セットN」で示すセット220とを含むN組のキャッシュ・ラインを含む。各セットは、8つのキャッシュ・ライン202と、共通の一組の擬似最長時間未使用(PLRU)ビット204とを有する8ウェイ・アソシアティブである。本明細書に記載するように、PLRUビット204は、セット200のキャッシュ・ラインへのアクセスの履歴を格納するための履歴ビットとしての働きをする。各キャッシュ・ラインは、ウェイ0〜ウェイ7のグループのウェイおよび「語[0〜7]」で示す8つのデータ語のグループの両方に対応する「アドレス・タグ0」〜「アドレス・タグ7」で示す対応するタグを有する。各キャッシュ・ラインも、キャッシュ・ラインが有効か否かを示す有効ビットを含む、図2には詳細に示していない、キャッシュ・コヒーレンシを実施するための制御ビットを含む。
【0030】
アレイ125のセットは、さらに、バンクと呼ばれるセットのグループに編成される。例えば、アレイ125は、各セットが32バイトの8つのキャッシュ・ラインまたは「ウェイ」を含む256組の8つのバンクに編成される。それ故、キャッシュ120は、8×256×8×32=512Kバイトのメモリを含む。図2の特定の実施形態の場合には、1語の長さは4バイトであるが、他の実施形態の場合には、キャッシュ・ラインは、異なる長さであってもよいことに留意されたい。
【0031】
PLRUビット204は、キャッシュ置換アルゴリズムを実施するために使用される。例えば、特定のアクセス・アドレスのバンクおよびセット索引は、セット0内のラインに新しいデータが割り当てられることを示す。PLRUビット204は、バス動作タイプおよびロッキング機構の関連と一緒に、図4のところで以下にさらに詳細に説明するように、どのキャッシュ・ラインをキャストアウトしなければならないかを決定する。
【0032】
押し出しを実質的に避けるために、L2キャッシュ制御レジスタ230は、各セットの第1の部分をI/Oスタッシュ動作と関連付け、各セットの第2の部分をプロセッサ・バス動作と関連付けるためにコンフィグレーション値を格納する。この関連付けにより、ネットワーク・トラフィックが込み合っている時間でも、ある量のキャッシュをプロセッサが確実に使用できるようにする。プロセッサは引き続き効率的に動作することができる。特定のアーキテクチャにおいては、コントローラ122が、バス・トランザクション中に、バス・マスタが発行した「転送タイプ」と呼ばれる一組の信号、およびトランザクションのアドレスの両方を検査することによりバス動作タイプを決定する。転送タイプおよびアドレスの両方を考慮に入れた場合には、コントローラ122は、イーサネット・コントローラ170および180が始動したトランザクションのうちのあるものだけを、キャッシュする必要があるI/Oスタッシュ動作として解釈することができる。それ故、例えば、CPUコア110によりシーケンシャルに処理されるデータ通信ヘッダ・データをキャッシュ120で使用することができ、一方、ペイロード・データはキャッシュに格納されない。しかし、他の実施形態の場合には、これらおよび他の要因をバス動作タイプを決定するために他の方法で使用することができる。
【0033】
L2キャッシュ120も、各セットの一部をSRAM専用に使用することができ、高速スクラッチパッド・メモリ用の専用SRAMを必要とするシステムの柔軟性を改善する。
「L2SRAM」で示す最初の3ビット・フィールド232は、上部から開始する各セットのどの部分が、SRAM部分207として示すSRAM機能と関連するのかを決定する。L2SRAMにより、0、1、2、4および8ウェイのサイズをSRAM機能と関連付けることができる。「L2STASHCTL」で示す第2の2ビット・フィールド234は、底部から開始する各セットのどの部分を、I/O STASH部分205で示すI/Oスタッシュ機能と関連付けるのかを決定する。L2STASHCTLにより、0、1、2および4ウェイをI/Oスタッシュ機能と関連付けることができる。中央の残りの任意の部分は、PROCESSOR CACHE部分206で示すプロセッサ・キャッシュ機能と関連する。L2SRAMフィールド232およびL2STASHCTLフィールド234は、L2CACHE CONTROL REGISTER230が、フィールドのうちの任意の2つのサイズを指定することにより各セットの3つのすべての部分のサイズを決定することができ、これら3つの部分のサイズを決定するためのフィールドが他の実施形態で変化することができる3つの部分に対するコンフィグレーション値を集合的に形成する。
【0034】
図2の例の場合には、L2SRAMフィールド232は、SRAM部分が、ウェイ0およびウェイ1に対応する各セット内に上部の2つのキャッシュ・ラインを含んでいることを示すために「100」の値を有する。L2STASHCTLフィールド234は、I/Oスタッシュ・エリアが、ウェイ6およびウェイ7に対応する各セット内に2つのキャッシュ・ラインを含んでいることを示すために「10」の値を有する。それ故、プロセッサ・キャッシュ・エリアは、ウェイ2〜ウェイ5に対応する各セットの中央に残りの4つのキャッシュ・ラインを含む。
【0035】
図3は、図1のキャッシュ・コントローラ122内のキャッシュ・アクセス・ロジックが使用するキャッシュ・アクセス・アルゴリズムのブロック図である。コントローラ122は、「ADDR」320で示す36ビット・アクセス・アドレスを検査することによりルックアップ・プロセスを実行する。ADDR320は、8つの使用可能なバンクのうちの1つを選択するために、コントローラ122が3ビット・バンクとして使用するビット20〜22に対応する第1の部分322と、選択したバンク内の256の使用可能なセットのうちの1つを選択するために、コントローラ122が8ビットのセット索引332として使用するビット23〜30に対応する第2の部分324と、3ビット・ウェイ選択索引334を形成するために、コントローラ122が間接的に使用するビット0〜19に対応する第3の部分326と、5ビット・バイト選択索引336としてコントローラ122が使用するビット31〜35に対応する第4の部分328とを含む。バンクおよびセットが決定すると、20ビット・ウェイ選択比較が、8つの20ビット・タグ310を使用して並列に8回の比較を行うことにより、キャッシュ内にラインが格納されているか否かを判定する。一致した場合(および有効ビットが示すようにラインが有効である場合)、ADDRのタグ部分と一致する8つのキャッシュ・ラインのうちの1つが選択したウェイを示す。
【0036】
ヒットが存在しない場合には、ADDR320に対応するキャッシュ・ラインを、キャッシュの選択したエリアに割り当てることができる。割り当てプロセスは、既存のキャッシュ・ラインを新しいキャッシュ・ラインで置換するステップを含む。コントローラ122は、プロセッサ・キャッシュまたはI/Oスタッシュであるバス動作タイプにより示すように、データのソースに割り当てられているキャッシュの一部内に新しいキャッシュ・ラインを格納するように、特に修正した擬似LRUアルゴリズムにより既存のどのキャッシュ・ラインを置換するのかを決定する。
【0037】
以下に置換アルゴリズムについて説明する。図4は、図1のキャッシュ・コントローラ122内のキャッシュ置換ロジックが使用するキャッシュ置換アルゴリズム400である。キャッシュ・ラインを割り当てる場合には、アクセス・アドレスのブロックおよびセット索引によりセットが最初に選択される。次に、PLRUビット204が、適当なウェイを選択するために使用される。決定ツリーであるキャッシュ置換アルゴリズム400の一般的な流れについて最初に説明する。ステップ410において、ビットP0が検査される。P0=0である場合には、流れはステップ420に進む。ここでビットP1の状態が検査される。P1=0である場合には、流れはステップ430に進み、ここでビットP3の状態が試験される。P3=0である場合には、キャッシュ・コントローラ122は、ウェイ0を割り当てる。一方、P3=1である場合には、キャッシュ・コントローラ122は、ウェイ1を割り当てる。P1=1である場合には、流れはステップ440に進み、ここでビットP4の状態が試験される。P4=0である場合には、キャッシュ・コントローラ122は、ウェイ2を割り当てる。一方、P4=1である場合には、キャッシュ・コントローラ122は、ウェイ3を割り当てる。P0=1である場合には、流れはステップ450に進み、ここでビットP2の状態が検査される。P2=0である場合には、流れはステップ460に進み、ここでビットP5の状態が試験される。P5=0である場合には、キャッシュ・コントローラ122は、ウェイ4を割り当てる。一方、P5=1である場合には、キャッシュ・コントローラ122は、ウェイ5を割り当てる。P2=1である場合には、流れはステップ470に進み、ここでビットP6の状態が試験される。P6=0である場合には、キャッシュ・コントローラ122は、ウェイ6を割り当てる。一方、P6=1である場合には、キャッシュ・コントローラ122は、ウェイ7を割り当てる。
【0038】
次に、バス動作タイプを考慮に入れない従来の擬似LRUアルゴリズムについて説明する。ウェイ3は、LRUキャッシュ・ラインであると仮定する。PLRUビット204は、値[011xxxx]を有する。ここで、「x」は、「ドントケア」状態を表す。P0=0であるので、流れはボックス410から左の方向のボックス420に進む。P1=1であるので、流れは、次に右の方向のボックス440に進む。最後にP4=1であるので、ウェイ3が割り当てられる。
【0039】
本発明により修正した擬似LRUアルゴリズムについて以下に説明する。一般に、コントローラ122は、L2 CACHE CONTROL REGISTER230内に格納しているコンフィグレーション値により識別した不適格ラインを避けながら、決定ツリー内を移動するためにキャッシュ置換アルゴリズム400を修正する。この場合も、ウェイ3はLRUキャッシュ・ラインであるが、バス動作タイプはI/Oスタッシュ動作であると仮定する。L2STASHCTLが、ウェイ6およびウェイ7に対応する2つのラインをI/Oスタッシュ動作に割り当てているので、判定ボックス410からの左方向への流れは、P0の状態が何であれ不適格遷移(ineligible transition)であるので、流れは右方向の判定ボックス450に進む。同様に、判定ボックス450からの左方向への流れは、不適格遷移であるので、流れは右方向の判定ボックス470に進む。次に、P6の状態がウェイ6またはウェイ7内のキャッシュ・ラインを新しいキャッシュ・ラインで置換するのか否かを判定する。
【0040】
この擬似LRUアルゴリズムを使用すれば、キャッシュ・ロッキング機構と容易に統合することができる。キャッシュ内のラインがロックされると、PLRUビットの状態が何であれ、割当て解除することはできない。それ故、ロッキングをサポートするために、コントローラ122も、ロックしたラインに応じて不適格状態遷移を認識する。
【0041】
上記詳細な説明では少なくとも1つの例示としての実施形態について説明してきたが、非常に多数の変形版が存在することを理解されたい。また、例示としての1つの実施形態または例示としての複数の実施形態は、単に例示としてのものに過ぎないものであり、これらの実施形態は本発明の範囲、適用性または構成を如何なる意味でも制限するものではないことを理解されたい。それどころか、上記詳細な説明は、当業者に例示としての1つの実施形態または例示としての複数の実施形態を実施するための便利な道しるべである。例えば、データ処理システム100は、1つの集積回路(IC)として実施することもできるし、またはL2キャッシュ120のような種々の構成要素は、別々のICまたはシステムとして実施することができる。コントローラ122は、I/Oスタッシュ・バス動作およびプロセッサ・バス動作の他にバス動作タイプの他の組合わせに基づいて各セットの一部を分離することができる。さらに、図の例のほかに多くの他のキャッシュ編成も使用することができる。添付の特許請求の範囲およびその法的等価物に記載する本発明の範囲から逸脱することなしに、要素の機能および配置構成を種々に変更することができることを理解されたい。
【図面の簡単な説明】
【0042】
【図1】本発明によるデータ処理システムのブロック図。
【図2】その編成の理解に役に立つ図1のキャッシュの一部のブロック図。
【図3】図1のキャッシュ・コントローラ内のキャッシュ・アクセス・ロジックが使用するキャッシュ・アクセス・アルゴリズムのブロック図。
【図4】図1のキャッシュ・コントローラ内のキャッシュ置換ロジックが使用するキャッシュ置換アルゴリズムの流れ図。

【特許請求の範囲】
【請求項1】
バス(116)と結合することができるキャッシュ(120)であって、
複数のセット(200,210,220)を有するアレイ(125)であって、各セットが複数のキャッシュ・ライン(202)を有し、各セット内の各キャッシュ・ラインがタグおよび複数のデータ語を含むアレイ(125)と、
前記アレイ(125)と結合しているコントローラ(122)であって、コンフィグレーション値(232,234)により、各セットの前記複数のキャッシュ・ライン(202)の第1の部分(205)を第1のバス動作タイプと関連付け、各セットの前記複数のキャッシュ・ライン(202)の第2の部分を第2のバス動作タイプと関連付け、バス動作中、前記バス(116)を通るデータを、前記バス動作のタイプが前記第1のバス動作タイプである場合には、前記第1の部分(205)に選択的に格納するか、または前記バス動作のタイプが前記第2のバス動作タイプである場合には、前記第2の部分(206)に選択的に格納するコントローラ(122)と、
を備えるキャッシュ。
【請求項2】
前記第1のバス動作タイプが、入出力スタッシュ・バス動作であり、前記第2のバス動作タイプが、プロセッサ・バス動作である請求項1に記載のキャッシュ(120)。
【請求項3】
前記コントローラ(122)が、前記コンフィグレーション値(232,234)により、スタティック・ランダム・アクセス・メモリとして使用する各セットの前記複数のキャッシュ・ライン(202)の第3の部分(207)とさらに関連付ける、請求項2に記載のキャッシュ(120)。
【請求項4】
前記コンフィグレーション値(232,234)を格納するためのコンフィグレーション・レジスタ(230)をさらに備える請求項3に記載のキャッシュ(120)。
【請求項5】
前記コンフィグレーション・レジスタ(230)が、前記第1の部分(205)のサイズを決定するための第1のフィールド(234)および前記第3の部分(207)のサイズを決定するための第2のフィールド(232)を含み、前記第2の部分(206)のサイズが、前記第1の部分(205)または前記第3の部分(207)に位置していない前記複数のキャッシュ・ライン(202)の残りである請求項4に記載のキャッシュ(120)。
【請求項6】
前記コントローラ(122)が、前記バス動作のタイプに対応する前記複数のキャッシュ・ラインの前記第1および第2の部分のうちの一方から置換のためのキャッシュ・ラインを選択するために、前記バス動作のアドレスに応じる置換ロジック(122,400)を備える請求項1に記載のキャッシュ(120)。
【請求項7】
前記置換ロジック(122,400)が、置換のための前記キャッシュ・ラインを選択するために、擬似最長時間未使用(LRU)アルゴリズムをさらに実行する請求項6に記載のキャッシュ(120)。
【請求項8】
各セットが、複数の履歴ビット(204)を格納し、前記コントローラ(122)が、前記コンフィグレーション値(232,234)が識別した不適格ラインを避けながら、置換のためのキャッシュ・ラインを決定するために、前記複数の履歴ビット(204)上で動作する請求項7に記載のキャッシュ(120)。
【請求項9】
データ処理システム(100)であって、
第1のバス(116)と、
前記第1のバス(116)上でプロセッサ・バス動作を実行するために前記第1のバス(116)と結合している中央処理装置(CPU)(110)と、
前記第1のバス(116)上で入出力スタッシュ・バス動作を実行するための入出力コントローラ(170)と、
前記第1のバス(116)と結合しているキャッシュ(120)であって、
複数のセット(200,210,220)を有するアレイ(125)であって、各セットが、複数のキャッシュ・ライン(202)を有し、各セット内の各キャッシュ・ラインが、タグおよび複数のデータ語を含むアレイ(125)と、
前記アレイ(125)と結合しているコントローラ(122)であって、コンフィグレーション値(232,234)により、各セットの前記複数のキャッシュ・ライン(202)の第1の部分を入出力スタッシュ・バス動作と関連付け、各セットの前記複数のキャッシュ・ライン(202)の第2の部分(206)を前記プロセッサ・バス動作と関連付け、バス動作中、前記バス(116)を通るデータを、前記バス動作が入出力スタッシュ・バス動作である場合には、前記第1の部分(205)に選択的に格納するか、または前記バス動作が前記プロセッサ・バス動作である場合には、前記第2の部分(206)に選択的に格納するコントローラ(122)と
を備えるキャッシュ(120)と
を備えるデータ処理システム(100)。
【請求項10】
前記第1のバス(116)、前記中央処理装置(110)、前記入出力コントローラ(170)、および前記キャッシュ(120)が、1つの集積回路上で結合している、請求項9に記載のデータ処理システム(100)。
【請求項11】
前記入出力コントローラ(170)と結合している第2のバス(140)と、
前記第1のバス(116)および前記第1のバス(116)に前記第2のバス(140)上で入出力スタッシュ・バス動作を提供する前記第2のバス(140)と結合しているコヒーレンシ・モジュール(130)とをさらに備える、請求項9に記載のデータ処理システム(100)。
【請求項12】
前記入出力コントローラ(170)が、前記入出力スタッシュ・バス動作でない他のバス動作をさらに実行する請求項11に記載のデータ処理システム(100)。
【請求項13】
前記入出力コントローラ(170)が、データ通信ヘッダ・データのために前記入出力スタッシュ・バス動作を実行し、データ通信ペイロード・データのために前記入出力スタッシュ・バス動作でない前記他のバス動作を実行する請求項12に記載のデータ処理システム(100)。
【請求項14】
前記中央処理装置(110)が、レベル1(L1)キャッシュ(112)を含み、前記キャッシュ(120)が、レベル2(L2)キャッシュとして機能する、請求項9に記載のデータ処理システム(100)。
【請求項15】
前記コントローラ(122)が、前記バス動作の前記タイプに対応する前記複数のキャッシュ・ラインの前記第1および第2の部分のうちの一方から置換のためのキャッシュ・ラインを選択するために、前記バス動作のアドレスに応じる置換ロジック(122,400)を備える請求項9に記載のデータ処理システム(100)。
【請求項16】
前記置換ロジック(400)が、置換のための前記キャッシュ・ラインを選択するために、擬似最長時間未使用(LRU)アルゴリズムをさらに実行する、請求項15に記載のデータ処理システム(100)。
【請求項17】
各セットが、複数の履歴ビット(204)を格納し、前記コントローラ(122)が、前記コンフィグレーション値(232,234)が識別した不適格ラインを避けながら、置換のためのキャッシュ・ラインを決定するために、前記複数の履歴ビット(204)上で動作する、請求項16に記載のデータ処理システム(100)。
【請求項18】
キャッシュ(120)を編成するための方法であって、
複数のセット(200,210,220)に前記キャッシュ(120)のアレイ(125)を編成するステップであって、各セットが、複数のキャッシュ・ライン(202)を有し、各キャッシュ・ラインが、タグおよび複数のデータ語を含むステップと、
コンフィグレーション値(232,234)を受信し、格納するステップと、
前記コンフィグレーション値(232,234)により、各セットの前記複数のキャッシュ・ライン(202)の第1の部分(205)を第1のバス動作タイプと関連付け、各セットの前記複数のキャッシュ・ライン(202)の第2の部分(206)を第2のバス動作タイプと関連付けるステップと、
バス動作中、バス(116)を通るデータを、前記バス動作が前記第1のバス動作タイプであった場合には、前記第1の部分(205)に選択的に格納するか、または前記バス動作が前記第2のバス動作タイプであった場合には、前記第2の部分(206)に選択的に格納するステップと、を含む方法。
【請求項19】
前記複数のキャッシュ・ライン(202)の前記第1の部分(205)を前記第1のバス動作タイプと関連付ける前記ステップが、前記複数のキャッシュ・ライン(202)の前記第1の部分(205)を入出力スタッシュ・バス動作と関連付けるステップを含み、前記複数のキャッシュ・ライン(202)の前記第2の部分(206)を前記第2のバス動作タイプと関連付ける前記ステップが、前記複数のキャッシュ・ライン(202)の前記第2の部分(206)をプロセッサ・バス動作タイプと関連付けるステップを含む、請求項18に記載の方法。
【請求項20】
前記コンフィグレーション値(232,234)により、スタティック・ランダム・アクセス・メモリとして使用する各セットの前記複数のキャッシュ・ライン(202)の第3の部分を関連付けるステップをさらに含む、請求項19に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公表番号】特表2008−544366(P2008−544366A)
【公表日】平成20年12月4日(2008.12.4)
【国際特許分類】
【出願番号】特願2008−516802(P2008−516802)
【出願日】平成17年6月15日(2005.6.15)
【国際出願番号】PCT/US2005/021146
【国際公開番号】WO2007/001257
【国際公開日】平成19年1月4日(2007.1.4)
【出願人】(504199127)フリースケール セミコンダクター インコーポレイテッド (806)
【Fターム(参考)】