以下の説明においては、本発明の完全な理解をもたらすために多くの特定の詳細が示されている。しかし、当業者であれば、これらの特定の詳細なしに本発明が実施され得ることを認識すべきである。幾つかの例では、周知の回路、構造及び技術は、本発明を不明瞭にすることを避けるために、詳細には示されていない。
図1を参照すると、コンピュータシステム100の1つの実施形態が示されている。一般的に言えば、コンピュータシステム100は複数の処理ノード110a〜110dを含む。ここで用いられているように、文字が続く参照番号によって参照される要素は、当該番号単独によって集合的に参照されることがある。例えば、処理ノード110a〜110dは、処理ノード110又はノード110として集合的に参照されることがある。図1には4つのノード110が示されているが、他の実施形態は、1個の、2個の、6個の、又は任意の異なる数のノードを備えていてよく、各ノード110は1つ以上のプロセッサコアを備えている。
各ノード110は、それぞれのメモリ制御器(MC)120を介してそれぞれのメモリ130に結合されてよい。加えて、各処理ノード110は、他の処理ノード110と通信するために用いられるインタフェース(IF)論理140を含んでいてよい。例えば、処理ノード110aは、処理ノード110b及び110cと通信するためのインタフェース論理140aを含む。同様に、処理ノード110bは、処理ノード110a及び110dと通信するためのインタフェース論理140bを含み、他も同様である。図1の実施形態においては、処理ノード110dは、インタフェース論理140dを介して入力/出力(I/O)デバイス160aと通信するように結合されるものとして示されている。I/Oデバイス160aは更に第2のI/Oデバイス160bに結合される。また、処理ノード110dは、グラフィクス処理ユニット(GPU)170と通信するように結合されるものとして示されている。他の処理ノードも同じようにして他のI/Oデバイス、他のGPU、又は他の要素と通信してよい。代替的には、処理ノード110はI/Oブリッジと通信してよく、I/OブリッジはI/Oバスに結合される。
1つの実施形態では、コンピュータシステム100は、I/Oデバイス160及びGPU170に結合するものとして示されるノード110dのような唯一の処理ノード110を有していてよい。そのような実施形態の例は、モバイルラップトップシステム、デスクトップ、低位機サーバシステム、中位機ワークステーション、その他を含む。そのような実施形態に対しては、単一の処理ノード110が通信のためのシステムバス制御器を内部的に利用してよい。システムバス制御器の1つの例は、AMD−762(商標)ノースブリッジシステムバス制御器(Northbridge system bus controller)である。
別の実施形態においては、コンピュータシステム100は多重処理ノード110を含んでいてよい。そのような実施形態に対しては、コンピュータシステム100がノード間通信のためのパケットベースのリンクを実装していてよい。図示される実施形態においては、複数の単方向性の線の複数のセットとしてリンクが実装される(例えば、処理ノード110aから処理ノード110bへパケットを送信するために複数の線150aが用いられ、そして処理ノード110bから処理ノード110aへパケットを送信するために複数の線150bが用いられる)。図1に示される他の処理ノードの間でパケットを送信するために他の線150c〜150hのセットが用いられる。
リンク150は、複数の処理ノード間での通信のためのキャッシュコヒーレントなやり方で動作させられてよく、又はI/Oデバイス160a〜160b(及び所望に応じて追加的なI/Oデバイス)の間でのデイジーチェイン(daisy-chain)構成として非コヒーレントなやり方で動作させられてよい。尚、1つの処理ノード110から他へ送信されるべきパケットは、1つ以上の中間ノードを通過してよい。例えば、処理ノード110aによって処理ノード110dへ送信されるパケットは、図1に示されるような処理ノード110b又は処理ノード110cのいずれかを通過してよい。任意の適切な経路付けアルゴリズムが用いられてよい。コンピュータシステム100の他の実施形態は、図1に示される実施形態よりも多い又は少ない処理ノードを含んでいてよい。また、各処理ノードが点対点ネットワークを介して全ての他の処理ノードと結合される他の実施形態も可能である。
図示されるメモリ制御器及びインタフェース論理に加えて、各処理ノード110は、後で更に説明されるように1つ以上のプロセッサ及び関連するキャッシュを含んでいてよい。概して処理ノード110は、少なくとも1つのプロセッサを備えており、そして所望に応じて、メモリ及び他の論理と通信するためのメモリ制御器を随意的に含んでいてよい。
メモリ130は任意の適切なメモリデバイスを備えていてよい。例えばメモリ130は、1つ以上のRAMBUSダイナミックランダムアクセスメモリ(DRAM)、同期DRAM(SDRAM)、DRAM、スタティックRAM等を備えていてよい。コンピュータシステム100のアドレス空間は複数のメモリ130間で分割される。各処理ノード110は、どのアドレスがどのメモリ130にアドレスされるか、及びこれに伴い特定のアドレスに対するメモリ要求がどの処理ノード110に経路付けられるべきかを決定するために用いられるメモリマップを含んでいてよい。1つの実施形態では、コンピュータシステム100内でのアドレスに対するコヒーレンシ点は、そのアドレスに対応するバイトを記憶しているメモリに結合されるメモリ制御器120である。メモリ制御器120は、メモリ130とインタフェースするための制御回路を備えていてよい。加えて、メモリ制御器120は、メモリ要求を待ち行列に入れるための要求キュー(request queues for queuing memory requests)を含んでいてよい。
概してインタフェース論理140は、リンクからのパケットを受信するため及びリンク上に送信されるべきパケットをバッファするためのバッファを備えていてよい。コンピュータシステム100は、パケットを送信するための任意の適切なフロー制御メカニズムを採用していてよい。I/Oデバイス160は任意の所望の周辺デバイスとして図示されている。例えばI/Oデバイス160は、ネットワークインタフェースカード、ビデオアクセラレータ、オーディオカード、ハード又はフロッピー(登録商標)のディスクドライブ又はドライブ制御器、スモールコンピュータシステムズインタフェース(SCSI)アダプタ及びテレホンカード(telephony cards)、モデム、サウンドカード、並びに汎用インタフェースバス(GPIB)又はフィールドバスインタフェースカードのような種々のデータ収集カードを備えていてよい。
図2は例示的な処理ノード110の1つの実施形態のブロック図である。図1の回路部分に対応する回路部分には同一の数字が付されている。処理ノード110は、メモリ制御器120と、インタフェース論理140と、プロセッサコア112及び対応するキャッシュメモリサブシステム114を含み得る1つ以上の処理ユニット115と、システム通信論理116と、共有キャッシュメモリサブシステム118とを含んでいてよい。1つの実施形態では、処理ノード110の図示される機能は単一の集積回路上に組み込まれている。別の実施形態では、図示される機能はコンピュータマザーボード上のチップセット内に組み込まれる。
1つの実施形態では、処理ノード110は、モバイルコンピュータ、デスクトップ、その他におけるスタンドアローンシステムである。1つの実施形態では、システム通信論理116はシステムバスである。別の実施形態では、ユニット115をメモリ130、I/Oデバイス160、GPU170、その他に結合するために、処理ノード110はノースブリッジシステムバス制御器を論理116内に組み込んでいる。そのような実施形態においては、システム通信論理116は、メモリ制御器120及びインタフェース論理140の機能を置換し又は組み込んでいてよい。1つの実施形態では、論理116はノースブリッジ及びサウスブリッジ両方のシステムバス制御器を組み込んでいてよい。ノースブリッジプロトコルは、ユニット115をメモリ130及びGPU170に結合するために用いられてよい。サウスブリッジプロトコルは、ユニット115をI/Oデバイス160、リアルタイムクロック、電力管理ユニット、その他に結合するために用いられてよい。論理116のそのような実施形態の1つの例は、AMD−762(商標)ノースブリッジシステム制御器及びAMD−768(商標)サウスブリッジ周辺バス制御器を含んでいてよい。
別の実施形態においては、処理ノード110は多重ソケットシステムの1つのソケットである。そのような実施形態においては、システム通信論理116はパケット処理論理を組み込んでいてよい。概してシステム通信論理116は、プロセッサコア112及び/又はキャッシュメモリサブシステム114に応答して制御パケットを生成すること、メモリ制御器120によって選択されるサービスのためのトランザクションに応答してプローブコマンド(probe commands)及び応答パケットを生成すること、並びにインタフェース論理140を介して他のノードへの中間ノードであるノード110に対してパケットを経路付けることのために、処理ノード110が結合されているリンク上で受信される制御パケットに応答するように構成されてよい。インタフェース論理140は、パケットを受信し且つ論理116内のパケット処理論理によって用いられる内部クロックにパケットを同期させる論理を含んでいてよい。
プロセッサコア112は、所定の命令セットに従って命令を実行するための回路を含む。例えば、x86命令セットアーキテクチャ(ISA)が選択されてよい。代替的には、アルファ(Alpha)、パワーPC(PowerPC)、又は任意の他の命令セットアーキテクチャが選択されてよい。概してプロセッサコア112は、データ及び命令に対してそれぞれキャッシュメモリサブシステム114にアクセスする。ここで用いられているように、キャッシュメモリサブシステムに関して「アクセスする(access)」の用語は、対応する要求アドレスの要求されたデータがキャッシュ内に存在する場合におけるキャッシュヒット又はキャッシュ内にそれが存在しない場合におけるキャッシュミスをもたらし得る読み出し又は書き込み要求動作を実行することを参照する。
要求されたブロックがキャッシュメモリサブシステム114内又は共有キャッシュメモリサブシステム118内で発見されないようなキャッシュミスが生じると、読み出し要求が生成されてよく、読み出し要求はミスしているブロックがマッピングされているノード内のメモリ制御器へ送信されてよい。要求されたブロックを伴う対応するキャッシュフィルライン(cache fill line)は、元の読み出し又は書き込み要求を完了するために、対応するキャッシュへと運ばれてよい。また、キャッシュフィルラインは、そのキャッシュ内の対応するセット内に置かれてよい。対応するセット内に利用可能なウエイ(ways)がない場合には、典型的には最長時間未使用(Least Recently Used)(LRU)アルゴリズムが、セット内のどのウエイがそのデータを退去させると共にキャッシュフィルラインデータで置換されるべきかを決定する。ここで用いられているように、「割り当てる(allocate)」の用語は、より低レベルのキャッシュ階層からフェッチされたキャッシュフィルラインを、特定のキャッシュへのキャッシュミスに続いてその特定のキャッシュのウエイ内に記憶することを参照する。
キャッシュサブシステム114及び118は、データのブロックを記憶するように構成される高速キャッシュメモリを備えていてよい。キャッシュメモリサブシステム114は、それぞれのプロセッサコア112内に一体化されていてよい。代替的には、キャッシュメモリサブシステム114は、所望に応じてバックサイドキャッシュ構成又はインライン構成でプロセッサコア112と結合されていてよい。更には、キャッシュメモリサブシステム114は、キャッシュの階層として実装されてよい。プロセッサコア112(階層内)のより近くに位置しているキャッシュは、所望に応じてプロセッサコア112内に一体化されていてよい。1つの実施形態では、キャッシュメモリサブシステム114は各々L2キャッシュ構造を代表し、そして共有キャッシュサブシステム118はL3キャッシュ構造を代表する。別の実施形態では、キャッシュメモリサブシステム114は各々L1キャッシュ構造を代表し、そして共有キャッシュサブシステム118はL2キャッシュ構造を代表する。他の実施形態もまた可能であり、そして検討されている。
キャッシュメモリサブシステム114及び共有キャッシュメモリサブシステム118の両方が、対応するキャッシュ制御器に結合されるキャッシュメモリ又はキャッシュアレイを含んでいてよい。1つの実施形態では、セットアソシアティブ(set-associative)共有キャッシュメモリサブシステム118のためのキャッシュ制御器は、プログラム可能な構成及び状態レジスタ(configuration and status registers(CSR)並びに論理を含んでいてよい。サブシステム118を使用している種々のソースが、キャッシュミスに続くデータ、例えばキャッシュフィルラインを同一の領域内に割り当てることを防止するために、CSR及び対応する論理は、サブシステム118のキャッシュアレイを多重独立セクションにセグメント化するために利用されてよい。
キャッシュ内に現在すでに記憶されているデータは、CSR内に記憶されている値にかかわらず読み出し又は書き込みアクセスに対して任意のソースによってヒットされてよい。例えば、キャッシュは修正されたデータを有しているであろうから、より低レベルのメモリ階層は対応する古いデータ(stale data)を有しているかもしれない。要求中のソースは、要求されたキャッシュラインの更新されたコピーを受信するべきである。従って、共有キャッシュの特定のセット内の特定のウエイに対しては、任意のソースからのアクセスが許可される一方で、キャッシュミスに起因する割り当ては、CSR内に記憶されている値によって決定される。そのようなスキームは、有用なデータの退去を制限し、あるいは有用でないデータによる共有ャッシュの汚染を制限するであろう。アクセスは任意のソースによって許可されるが、アクセスに対するアドレスの範囲は、各ソースに対して予め定められていてよい。
データは共有キャッシュメモリ118のアレイ内に種々の方法で記憶され得る。例えば、図3は16ウエイセットアソシアティブキャッシュ組織(organization)を用いてデータが記憶される記憶配置(storage arrangement)300の1つの実施形態を示している。セットアソシアティブキャッシュ内の異なる数のウエイ、例えば4ウエイ、8ウエイ、その他が選択されてよい。所与のキャッシュセット332は、共有キャッシュメモリサブシステム118のようなセットアソシアティブキャッシュにアクセスするのに用いられるアドレス310のブロックインデックス318部によって他のセットから選択されてよい。ブロックタグ312及び336が同一の値を含み且つ対応するブロック状態334が有効キャッシュブロックのような予め定められたマッチ値を指定する場合に、キャッシュブロックヒットが生じてよい。
1つの実施形態では、キャッシュ330内のキャッシュライン又はキャッシュブロックのデータ部338は、64バイトを記憶するように構成される。他のサイズも可能であり、そして検討されている。キャッシュ330の16ウエイの各々はまた、状態情報334を記憶してよい。このブロック状態334は、有効ビットと、対応するキャッシュブロックを所有しているソースを表示するキャッシュブロックオーナーエンコーディングと、キャッシュ制御器によって採用されているキャッシュ交換アルゴリズムに関連して使用される最長時間未使用(LRU)退去情報と、キャッシュコヒーレンシ状態、例えば修正された状態、排他的な状態、所有された状態、共有された状態、無効にされた状態、その他の状態を指定する表示とのうちの少なくとも1つ又は2つ以上を備えていてよい。他の含まれる状態情報も可能であり、そして検討されている。ブロックタグ336は、選択されたキャッシュセット332内で16キャッシュラインのどれがアクセスされている最中であるかを決定するために用いられてよい。加えて、アドレス310のオフセット320が、キャッシュライン内の具体的なバイト又はワードを表示するために用いられてよい。
キャッシュセット332は、アドレス310のブロックインデックス318によって選択されてよい。ブロック状態334及びブロックタグ336は、各キャッシュウエイ内のデータ338と共に連続するビット内に記憶されていてよいが、1つの実施形態では、ブロック状態334及びブロックタグ336は、データ338と同じアレイ内よりはむしろ、別個のアレイ内に記憶されていてよい。
キャッシュアレイ内でのキャッシュミスに続くメモリ要求のデータ記憶の割り当てを制御することは有用であろう。特定のキャッシュの対応するセット内に利用可能なウエイがない場合には、対応するセット内に現在記憶されているキャッシュラインは退去させられる必要がある。典型的には、現在記憶されているキャッシュラインを退去のために選択するのに最長時間未使用(LRU)スキームが利用される。例えば、コア112a及びコア112bは共有キャッシュ118の特定のセクション内のみに割り当てることを許可されてよく、I/Oデバイスは別個のセクションに割り当てることに制限されてよく、そしてグラフィクス処理ユニット(GPU)は更に別の別個のセクション内のみに割り当てることに制限されてよい。
例えばキャッシュ330内の記憶配置に関しては、コア112aはウエイ15〜12内のみに割り当てることを許可されてよく、コア112bはウエイ11〜8内のみに割り当てることを許可されてよく、GPUはウエイ7及び6内のみに割り当てることを許可されてよく、そして3つの別個のI/Oデバイスは各2ウエイ内のみに、例えばそれぞれウエイ5及び4内のみと、ウエイ3及び2内のみと、ウエイ1及び0内のみとに割り当てることを許可されてよい。従って、コア112a及び112bは各々共有キャッシュの1/4を割り当てることができ、そしてGPU170及び3つのI/Oデバイス160の各々は、同じ共有キャッシュの1/8を各々が割り当てることができる。割り当てのための予め定められた許可を提供するメカニズムについては簡単に説明されるであろう。このようにして、別個のセクション内で各ソースに関連する非共有、独立のデータ記憶を維持することによって、これらのソースはサブシステム118のキャッシュアレイを効率的に共有することができる。1つの実施形態では、例において説明されるように、コア112は、データ割り当てに対してGPU170及び任意のI/Oデバイス160よりも大きな共有キャッシュ118のセクションを有していてよい。
尚、割り当てる許可を有していないソースによる特定のウエイ内への書き込み動作キャッシュヒットは、通常どおりに行われる。上述の例を用いると、I/Oデバイス160は、ウエイ15内に割り当てる許可を有していないであろう。もし、I/Oデバイス160が特定のセット内のキャッシュラインの読み出し動作を実行してキャッシュミスが生じると、要求されたキャッシュラインを含んでいるキャッシュフィルラインが、より低レベルのメモリ階層からフェッチされる。このキャッシュフィルラインは読み出し動作を完了するために用いられる。それに続いて又は同時に、キャッシュセット内の全てのキャッシュウエイの間で選択するよりはむしろ、対応するキャッシュセット内の予め定められた数のウエイ内で、置換されるべきキャッシュウエイを選択するために、最長時間未使用(LRU)アルゴリズムのようなメカニズムが展開されてよい。対応するCSR内に記憶されるエンコードされた値が、キャッシュウエイ1及び0のみがI/Oデバイス160に対する割り当てのために用いられ得ることを決定するのに使用されてよい。それに続く退去はキャッシュウエイ1及び0内でのみ生じてよく、そしてこれら2つのキャッシュウエイの最長時間未使用キャッシュウエイが選択されてよい。1つの実施形態では、I/Oデバイス160が特定のセット内への書き込み動作を実行し且つウエイ15内へのキャッシュヒットが生じている場合には、I/Oデバイス160はウエイ15内のデータを修正してよい。
別の実施形態においては、コア112a及び112bはデータを共有してよいが、このデータはGPU170又は3つの別個のI/Oデバイス160とは共有されなくてよい。両コア112a及び112bはウエイ15〜8のみを割り当てることを許可されてよく、GPU170はウエイ7及び6のみを割り当てることを許可されてよく、そして3つの別個のI/Oデバイス160は各2ウエイのみ、例えばそれぞれウエイ5及び4のみと、ウエイ3及び2のみと、ウエイ1及び0のみとを割り当てることを許可されてよい。従って、コア112a及び112bは共有キャッシュの1/2を割り当てる許可を有し、そしてGPU170及び3つのI/Oデバイス160の各々は、同じ共有キャッシュの1/8を各々が割り当てる許可を有している。
1つの実施形態では、構成及び状態レジスタ(CSR)は、システム内で指定されたキャッシュ、例えばキャッシュメモリサブシステム118を使用する各ソース、例えばコア112a、I/Oデバイス160、GPU170、その他に対する割り当て空間を制御するために、エンコードされた値を記憶するのに用いられてよい。例えば、メモリ要求のソースに基く16ウエイセットアソシアティブ指定キャッシュの分割(partitioning)は、5ビットマスクエンコーディングを利用してよい。エンコーディング値の1つの例が表1に示されている。
上掲の表1に示されるエンコーディングは、システム内で指定されるキャッシュを共有している各ソースに対する割り当て空間を制御することができる。1つの実施形態では、コア112aに対する5ビットCSRは、コア112aがキャッシュ118の16ウエイの半分内にデータを割り当てることを可能にする表1における表項目2のような値「00011」を記憶するようにプログラムされてよい。これらの特定のウエイはウエイ7〜0に指定されてよく、ここでは、図3におけるキャッシュ330の例示的な記憶配置と同様に、ウエイは、キャッシュのセット内で左から右へ15〜0の番号を付されている。他の標識付けスキームも可能であり、そして検討されている。
同様に、GPU170に対する5ビットCSRは、GPUがキャッシュ118の16ウエイの4つ内にデータを割り当てることを可能にする表1における表項目3のような値「01001」を記憶していてよい。これらの特定のウエイはウエイ11〜8に指定されてよい。第1のI/Oデバイス160に対する第3の5ビットCSRは、第1のI/Oデバイスがキャッシュ118の2つのウエイ内にデータを割り当てることを可能にする表1における表項目2のような値「01100」を記憶していてよい。これらの特定のウエイはウエイ13〜12に指定されてよい。最後に、第2のI/Oデバイス160に対する第4の5ビットCSRは、第2のI/Oデバイスがキャッシュ118の2つのウエイ内にデータを割り当てることを可能にする表1における表項目4のような値「01110」を記憶していてよい。これらの特定のウエイはウエイ15〜14に指定されてよい。同様に、キャッシュ118は異なる数のウエイを利用してよく、また表1のエンコーディングは、異なる数のウエイ、例えば4ウエイ、8ウエイ、又は他のセットアソシアティブ選択に適合するように変更されてよい。
尚、キャッシュのある領域、例えばウエイ1及び0、即ち16ウエイセットアソシアティブキャッシュの1/8は、全てのソースによる割り当てに対して無効にされていてよく、同時に全てのソースによる割り当てのためにキャッシュの他の領域を有効にしてよい。1つの実施形態では、各ソースが対応する個々のCSRを利用することに加えて、グローバルCSRが全てのソースによって利用されてよい。グローバルCSR内に記憶されるエンコードされた値は、個々のCSR内に記憶されるエンコードされた値をオーバーライド(override)してよい。例えば1つの実施形態では、グローバルCSRは、表1の表項目6のような値「10000」を記憶するようにプログラムされてよい。表1に従うこの値は、対応するセットアソシアティブキャッシュのウエイ1及び0について任意のソースによる割り当てを無効にする。キャッシュのウエイ1及び0以外の追加的なウエイは、対応する個々のCSRに従って特定のソースによる割り当てに対して無効にされてよいが、ウエイ1及び0は、個々のCSRの記憶されているエンコードされた値にかかわらず、無効にされていることが保証される。別の実施形態では、グローバルCSRを利用するよりはむしろ、特定のソースのための各個々のCSRが、ウエイ1及び0を無効にするために修正されたその内容を有していてよい。いまや、ウエイ1及び0内に記憶されている情報は、後のフィルトランザクション(later fill transaction)によりビクティム化されること(being victimized)が防止されている。これら特定のウエイ、即ちこのケースにおけるウエイ1及び0は、割り当てのために先に使用されていてよい。そのような使用の更なる詳細は後で提供される。
1つの実施形態では、処理ノード110内のキャッシュ118のためのキャッシュ制御器は、特定のキャッシュアクセス要求のソースを認識しているので、キャッシュ制御器及び対応する論理は、どのCSRがキャッシュのウエイ有効及びウエイ無効制御のためにアクセスしているのかを知っていることになる。1つの実施形態では、特定のソースへの特定のCSRの割り当て及び特定のCSRの記憶されている値の両方ともが、システムの起動の間に基本入力出力ソフトウエア(BIOS)によってセットされる。従って、割り当て及び値は1回だけセットされ、このことはセキュリティの理由からなされていてよく、その一方でBIOSは後で変更され又は更新されてよい。別の実施形態では、デバイスドライバによって動的にロードされ且つオペレーティングシステム更新メカニズムを介して透過的に(transparently)更新されるファームウエアが、CSRの割り当て及び記憶される値の両方をそのような許可が与えられている場合に変更するために用いられてよい。更に別の実施形態では、CSRの割り当て及び記憶される値をプログラムしまた再プログラムするために、例えば特定のアプリケーションのための制御をソフトウエアプログラマに提供することのような他のソフトウエアメカニズムが利用されてよい。繰り返すが、そのような制御はセキュリティを理由として制限されてよい。
下の表2は表1に示されるエンコーディングを拡張している。表2に関して、1つの実施形態では、ベクトル[15:0]内の論理「1」は指定されたセットアソシアティブキャッシュ内で有効にされているウエイを定義していてよく、そして論理「0」は無効にされているウエイを定義していてよい。
既に述べたように、構成及び状態レジスタ(CSR)は、共有されている資源内での各ソースに対する割り当て空間を制御するために、表1又は表2に示される値のようなエンコードされた値を記憶するのに用いられてよい。例えば、上で議論されたように、I/O要求ソースは、16ウエイセットアソシアティブキャシュの2ウエイのみ、例えばキャッシュのウエイ15及び14のみを割り当てるようにプログラムされてよい。このことは、これらのI/O要求に対応するCSRが5ビット値「01110」を記憶するようにCSRをプログラムすることによって達成され得る。表1の表項目4及び表2の表項目15は両方とも5ビット値「01110」に対応しており、ウエイ15及び14がこのエンコーディングに対して有効にされることを示している。上述の実施形態におけるそのようなエンコーディングは、共有キャッシュ内の記憶の1/8を超えてI/O要求が割り当てることを可能にはしなくてよい。
セットアソシアティブキャッシュのような共有資源の割り当てのためにメモリ要求のソースを利用することに加えて、メモリ要求の種類が用いられてもよい。共有キャッシュの特定のウエイの対応するキャッシュラインを割り当てることをメモリ要求が許可されているかどうかを決定するために、メモリ要求の種類がキャッシュ制御器内の制御論理のような論理によって利用されてよい。オプコード(opcode)にエンコードされているであろうメモリ要求の種類、及びCSR内に記憶される値は両方とも、キャッシュミスに由来するキャッシュフィルトランザクションの間にキャッシュラインを割り当てるかどうか、及び対応するセットのどのウエイにキャッシュフィルラインが割り当てられるかの両方を決定するために、制御論理によって利用されてよい。更なる詳細が簡潔に提供される。概して、キャッシュをヒットする読み出し要求に対しては、対応するキャッシュラインのデータ部は修正されない。しかし、状態情報、例えばコヒーレンシ状態、LRU情報、その他は更新されることがある。キャッシュをミスする読み出し要求に対しては、同様に、対応する要求されたキャッシュラインのデータ部は修正されないが、状態情報は更新されることがある。ミスしている対応するキャッシュラインは、より低レベルのメモリ階層からフェッチされたものであろう。この対応するキャッシュラインは、予め定められたキャッシュラインフィル要求に応じて共有キャッシュ内に記憶されても記憶されなくてもよく、又は割り当てられても割り当てられなくてもよい。
一方、概してキャッシュをヒットする書き込み要求に対しては、対応するキャッシュラインのデータ部は、キャッシュコヒーレンシ、オーナーシップ状態、及び/又はその他のような他の要求が満たされている場合に修正される。加えて、対応する状態情報について更新が生じることがある。共有キャッシュをミスする書き込み要求は、同様に他の要求が満たされている場合に、フェッチされたキャッシュフィルラインのデータ部が修正されるのを可能にしてよい。読み出し要求ミスと同様に、書き込みミスに対する対応するキャッシュラインは、より低レベルのメモリ階層からフェッチされたものであろう。この対応するキャッシュラインは、予め定められたキャッシュラインフィル要求に応じて共有キャッシュ内に記憶されても記憶されなくてもよく、又は割り当てられても割り当てられなくてもよい。
キャッシュラインフィル要求を決定する制御論理は、表1及び2に示される例のようなソースに基くエンコーディング情報に加えて、入ってくるメモリ要求の命令種類を利用してよい。共有可能なキャッシュは、多重の異なる種類の要求をサポートしてよい。共有可能なキャッシュによってサポートされるメモリ要求の幾つかの例が表3に示されている。
ソース及びメモリ要求種類の組み合わせは、キャッシュラインの単一又は複数のデータ部及び同時に対応する状態情報が割り当てられる条件をユーザがプログラムすることに対する柔軟性を提供し得る。所与の要求ソースからの要求の予め定められた種類のみが、キャッシュ内への割り当てのために考えられてよい。1つの実施形態では、表2に示されるエンコーディングと同様のエンコーディングを伴う各ソースからの各コマンド種類に対するシステム内の1つ以上のCSRの追加によって、プログラム可能性が提供され得る。このプログラム可能性は、キャッシュ制御器によるトランザクション毎に基いて強化され得る。割り当てに対してプログラムされていない要求は、キャッシュミスの間キャッシュ内へは割り当てられない。
別の実施形態では、表2に示されるエンコーディングと同様のエンコーディングを伴うメモリ要求の各ソースに対するシステム内の1つ以上のCSRの追加によって、プログラム可能性が提供され得る。キャッシュミスに起因するキャッシュフィルイベントの場合、キャッシュフィルラインがキャッシュ内へ割り当てること及び場合によってはキャッシュの同じセット内の別のキャッシュラインの退去を生じさせることを許可されているか否かを決定するために、メモリ要求のオプコード又はコマンドの種類がキャッシュ制御器内の論理によって利用されてよい。表2における例のようなソースに基く表エンコーディング値は、そのような割り当てが生じることを可能にするが、このエンコーディング値は、セットのどのウエイが割り当てられ得るかを制限することがある一方で、コマンド種類がこの許可をオーバーライドして割り当てを阻むであろう。更に別の実施形態では、予め定められた値を記憶しているCSRが前述したように各ソースに対して存在していてよいが、1つ以上のCSR内の値は、入ってくるコマンド種類によって変更されてよい。予め定められた値の変更は、それが生じることをセキュリティ制限が許す場合にのみ可能であってよい。例えば、CSR値は、典型的なソフトウエアアプリケーションの実行に基いては変化させられることを許可されなくてよい。
この付加された特徴は、どの種類の要求がキャッシュ内へ割り当てることを許可されているのかをユーザが選択し得るので極めて有用であろう。例えばCLVICBLKメモリ要求がキャッシュ内でミスする場合、このラインを、より良いプローブフィルタリング(probe filtering)結果のためだけに追跡されることを必要とするクリーンビクティム(clean victims)としてキャッシュ内へ割り当てないことが有益であろう。また、特定のI/Oデバイス160に対しては、このデバイスに対するデータが殆ど用いられない場合、共有可能キャッシュ内でミスしているこの特定のI/Oデバイス160からの読み出し及び書き込みメモリ要求は、プロセッサコアに対して有用なデータを不注意に退去させてしまうかもしれない。このような状況においては、共有可能なキャッシュのかなりの部分が、再び用いられないであろうデータを記憶していることがある一方で、有用な情報は退去させられてしまう。このように、システム性能が劣ってしまうであろう。表1〜3によって説明されキャッシュ制御器内の論理によって強化されるプログラム可能性は、そのような状況を回避すること及びシステム性能を高めることを支援し得る。
更に、システムアーキテクチャは、1つの実施形態においては、メモリ要求と共に例えば対応するパケット内に含まれるべき予め定められたヒントビット(hint bits)の付加及び使用を支援してよい。このヒント情報は、オプコードに連続して位置させられ又はメモリ要求命令若しくはパケット内の別の場所に置かれるビットであってよい。キャッシュ制御器内の論理は、オプコード又はコマンド種類情報と同様にこれらのヒントビットを利用して、例えばキャッシュミスに由来するフィルイベントの間に、対応するメモリ要求が共有可能キャッシュ内へ割り当てることを許可されているか否かを決定してよい。
1つの実施形態では、これらのヒントビットは、オプコードによって供給されるメモリ要求に加えてよりはむしろ単独で用いられてよい。別の実施形態では、これらのヒントビットは、当該決定を行うためにオプコードと一緒に用いられてよい。例えば、ヒントビットの第1の値は、オプコードが単独で決定のために用いられるべきであることを表示してよい。ヒントビットの第2の値は、オプコード値がバイパスされ、そしてヒントビットのみが決定のために用いられることを表示してよい。第3の値は、ヒントビット及びオプコード値の両方が決定のために考慮される必要があることを表示してよい。状態図(state diagram)において用いられ得る他の組み合わせが可能であり、そして検討されている。
前述したように、1つの実施形態では、表2における例のようなソースに基く表エンコーディング値は、フィルイベントが共有キャッシュ内に割り当てることを可能にするであろうが、ヒントビット又はヒントビットとコマンド種類の組み合わせは、この許可をオーバーライドして割り当てを阻むであろう。更に別の実施形態では、予め定められた値を記憶しているCSRが前述したように各ソースに対して存在していてよいが、1つ以上のCSR内の値は、入ってくるコマンド種類のヒントビットによって変更されてよい。予め定められた値の変更は、それが生じることをセキュリティ制限が許す場合にのみ可能であってよい。繰り返すが、CSR値は、典型的なユーザによって書かれた典型的なソフトウエアアプリケーションの実行に基いては変化させられることを許可されなくてよい。
ヒントビットにより供給されるトランザクション毎ベースの表示は、特定のトランザクションに属しているデータの再使用される見込みが殆どない状況において有用であり、従って、フィルメカニズムは、このデータをミスの後に表2のような予め定められた表に従ってキャッシュ内へと割り当てることはしないが、メモリ要求命令種類はキャッシュ修正可能であってよい。1つの実施形態では、この特徴は、I/Oデバイス160のようなI/O要求ソースに対して広範囲に用いられてよい。そのようなメカニズムはキャッシュの汚染を防止することができる。
図4は共有資源におけるデータの効率的な割り当てのための方法400を示している。方法400は、代替的な実施形態を導き出すために当業者によって修正され得る。また、この実施形態におけるステップは逐次的な順序で示されている。しかし、幾つかのステップは図示されているのとは異なる順序で起こってよく、幾つかのステップは同時に実行されてよく、幾つかのステップは他のステップと組み合わされてよく、そして幾つかのステップは別の実施形態ではなくてよい。図示される実施形態においては、入ってくる動作による割り当てに対して共有資源のどのサブ部分が有効にされているか又は無効にされているかを決定するために用いられる初期割り当てが、ブロック402においてセットされる。例えば、表2のような表において定義される初期エンコーディング値が適切なGSR内に記憶されてよい。
ブロック404においては、1つ以上のコンピュータプログラム又はソフトウエアアプリケーションが実行される。これらのアプリケーションは、1つ以上のプロセッサコア112、グラフィック処理ユニット(GPU)170、I/Oデバイス160、その他によって実行されてよい。ソフトウエアアプリケーションを実行するこれら構成要素は、各々データキャッシュのような共有可能資源にアクセスしてよい。1つの実施形態では、共有可能資源は、図2における共有キャッシュメモリサブシステム118のような共有可能L2又はL3キャッシュであってよい。プロセッサコア112による共有キャッシュのアクセス又はメモリ要求は、GPU170又はI/Oデバイス160のような他のソースに由来するアクセスよりも強い衝撃(higher impact)をシステム性能に対して有するであろう。
共有キャッシュに対してメモリ要求が提示されると(条件ブロック406)、ブロック408において、共有キャッシュの対応するセット内での割り当てに対する可能なウエイの決定が行われる。メモリ要求のソースは知られており、そして対応するCSRにアクセスするために用いられてよく、CSRの記憶されている値は、対応するセット内の可能なウエイの集合(collection)を決定する。他の実施形態においては、メモリ要求種類及び/又はヒントビットが、表3に関して先に述べたように、可能なウエイの集合を決定するために用いられてもよい。
メモリ要求がキャッシュをミスし、従って正しいラインが低レベルのメモリから検索されること(to be retrieved)を必要とする場合(条件ブロック410)、フィルラインが共有キャッシュ内へ割り当てられることを許可されているか否かに関する決定が行われる(条件ブロック414)。この決定はソース、オプコードによって決定され得るコマンド種類、命令又はパケット内に含まれるヒントビット、これらの因子の組み合わせ、その他に基いていてよい。
メモリ要求が共有キャッシュ内へ割り当てることを許可されない場合(条件ブロック414)、メモリ要求の動作はブロック416へ進んでよく、例えば検索されたフィルラインの内容が読み出され又は書き込まれるが、フィルラインは共有キャッシュ内には置かれない。例えば、対応するデータを再使用しないものとして知られているI/Oデバイス160が、キャッシュミスに続き共有キャッシュ内へ値を割り当てることができないように、対応するCSR内に記憶されている値によってプログラムされてよい。従って、共有キャッシュ内のより多い空間が、1つ以上のプロセッサコア112又はGPU170のような他のソースに対して利用され得る。
メモリ要求がキャッシュミスに続いて共有キャッシュを割り当てることを許可される場合(条件ブロック414)には、メモリ要求の動作はブロック418へ進んでよく、例えば検索されたフィルラインの内容が読み出され又は書き込まれ、加えてフィルラインは共有キャッシュ内に置かれる。共有キャッシュ内へ置くことの間、CSRの内容が、どのキャッシュウエイが修正されることが可能かを決定してよい。例えば、コア112aは、ウエイ15〜8のようなキャッシュの半分を修正し又は割り当てることを許可されてよい。一方、I/Oデバイス160は、ウエイ5及び4のようなキャッシュの1/8のみを修正し又は割り当てることを許可されてよい。既に満杯のセットに対しては、LRUスキームに基くキャッシュラインの退去が割り当てプロセスの間に生じてよい。また、セットは満杯でないが、特定のソースに対するセットの全ての可能なウエイ、例えば上述の例におけるI/Oデバイス160に対するウエイ5及び4が満杯である場合には、LRU又は他のスキームに基くキャッシュラインの退去が割り当てプロセスの間に生じてよい。
上述の方法は、キャッシュの特定の指定されたラインをロードし且つロックし又は退去させられることから回避するために用いられてもよい。これらのロックされたラインは、全てのソースによる割り当てに対して無効にされてよい。これらのロックされたラインは、擬似ランダムアクセスメモリ(RAM)として用いられてよい。そのようなメカニズムは、次いで、システム起動の間に基本入力出力ソフトウエア(BIOS)がキャッシュのセクションをロードし且つロックすることを可能にするために用いられてよい。例えば、そのようなメカニズムは、システム内のダイナミックランダムアクセスメモリ(DRAM)が未だ初期化されていない場合に、BIOSが共有キャッシュ118その他のようなキャッシュを汎用記憶のために用いることを可能にするために用いられてよい。この特徴は、システム起動のために必要な時間を短縮することができる。
BIOSは、いまや、キャッシュ内の特定のセグメントを利用して、他のソースによって退去させられているそれらのロックされたラインなしでデータ構造を記憶することができる。例えば、そのようなキャッシュウエイロックスキームは、I/O空間、例えばプログラム可能リードオンリメモリ(PROM)イメージからの起動コードの読み出し動作のようなキャッシュへの他のフィル要求をシステムが実行する場合に、BIOSがデータを記憶しているラインが退去させられないことを確実にし得る。
次に図5を参照すると、効率的なキャッシュラインロックメカニズムのための方法が示されている。方法500は、代替的な実施形態を導き出すために当業者によって修正され得る。また、この実施形態におけるステップは逐次的な順序で示されている。しかし、幾つかのステップは図示されているのとは異なる順序で起こってよく、幾つかのステップは同時に実行されてよく、幾つかのステップは他のステップと組み合わされてよく、そして幾つかのステップは別の実施形態ではなくてよい。図示される実施形態においては、コンピュータシステムのためのセットアップソフトウエアがブロック502で実行される。
ブロック504においては、システム内の1つ以上のCSRが、共有キャッシュ内に特定のウエイを割り当てる許可を表示する値を記憶するようにプログラムされてよい。例えば、「00000」のエンコーディング値に対応する表2の表項目1が、16ウエイセットアソシアティブ共有キャッシュのウエイ1及び0内への割り当てを可能にするために用いられてよい。共有キャッシュの全サイズの1/8のサイズの領域がこのようにしてマッピングされてよく、そして擬似RAMとして用いられてよい。
次いでブロック506においては、BIOSのようなセットアップソフトウエアが、共有キャッシュのキャッシュラインと同一のサイズ及びアライメントを有する擬似RAM内のロケーションを初期化してよい。この初期化を実行するために、BIOSは、未だ初期化されておらず且つこのキャッシュラインロケーションの少なくとも1バイトへのロード動作又は読み出し動作を未だ発行してしてない書き戻し(write-back)DRAMへキャッシュラインをマッピングしてよい。このロードの一部として発行される、結果としてのフィルトランザクションは、DRAMを未だ初期化していない無効にされたメモリ制御器へと送られてよい。メモリ制御器は、全論理ゼロのデータ値を返送してよく、そして係属中のフィル要求を完了してよい。このデータは次いで共有キャッシュ内へ割り当てられる。BIOSは、このキャッシュラインが共有キャッシュに割り当てられた後であれば、このキャッシュに対して記憶動作又は書き込み動作を実行してよい。
共有キャッシュの終点に達していない場合(条件ブロック508)、例えば初期化されている最中の可能なウエイに対応する最後の非初期化キャッシュラインである場合、方法500の制御フローはブロック506に戻る。それ以外の場合には、共有キャッシュの別の可能なウエイが同様にして初期化されてよい(条件ブロック510)。共有キャッシュの全ての可能なウエイが既に初期化されている場合(条件ブロック510)には、次いでブロック512において、BIOSのようなセットアップソフトウエアが所望の情報をこれら初期化された領域内へ記憶してよい。ブロック514においては、これらの修正されたラインは、前もって割り当てのために用いられたのと同じウエイに対する割り当てを無効にすることによって、共有キャッシュ内へロックされてよい。例えば、対応するCSRが表2の表項目17に記憶される値「10000」を保持するようにセットすることによって、ウエイ1及び0はいまや割り当てに対して無効にされているであろう。いまやウエイ1及び2は、他のソースによって割り当てられないようにされ、又はより新しいフィルトランザクションによって退去させられないようにされている。
加えて、上述した割り当ての方法は、キャッシュが動作している最中にキャッシュのサイズを徐々に減少させことによって、キャッシュの一部分又は全部をパワーダウン状態に置くために用いられてよい。システムレベルでの電力管理のためには、キャッシュのセクションへの電力をオフにし又はゲートする一方で他のセクションが機能しているのを維持することが望ましいであろう。さもなければ、キャッシュは全ての機能を停止する一方で、特定のセクションがパワーダウンされると共にエイリアシング(aliasing)問題を回避するためにキャッシュラインの退去及びリロードが生じるので、システム性能を低下させる待ち時間(latencies)が導入されてしまうであろう。キャッシュが動作を継続しつつパワーダウンメカニズムを介してキャッシュのサイズを徐々に減少させることは、異なる性能及び電力消費特性を伴う幾つかの中間キャッシュスリープ状態を生み出す。キャッシュを監視しているシステム電力管理ハードウエアは、これらの異なる状態を用いてアプリケーション性能とバッテリ寿命の間でトレードオフすることができる。加えて、そのようなパワーダウンシーケンスは、製造不良に悩まされるキャッシュに対して用いられてよい。そのようなキャッシュは廃棄され又は半分に切断され、そしてより低い価格で販売されるであろう。
表1及び表2で指定される値のようなプログラム可能エンコーディング値を介してセットアソシアティブキャッシュ内で特定のウエイの割り当てを有効にすること及び無効にすることは、キャッシュが動作しながらキャッシュのサイズを徐々に削減し、そして最終的にはキャッシュ全体を停止させるために用いられてよい。例えば、16ウエイセットアソシアティブキャッシュ内の全てのウエイが割り当てに対して有効である上述の表2の表項目8のようなエンコーディング値「00111」から、キャッシュのサイズを連続的に減少させる他の複数のエンコーディング値へと徐々に移行させることができ、例えば、「10000」(14ウエイを有効にする表項目17)、「10001」(12ウエイを有効にする表項目18)、「01011」(8ウエイを有効にする表項目12)、「01101」(4ウエイを有効にする表項目14)、「01110」(2ウエイを有効にする表項目15)、そして最終的には「10111」(全てのウエイを無効にする表項目24)へと徐々に移行させることができる。
上述の進行は、対応するアドレスのインデックス部を単一ビットだけ減少させることによって直接的にキャッシュを半分にするよりも効率的であろう。また、アドレスのインデックス部を減少させることによりキャッシュを半分にすることは、キャッシュのパワーダウンされた半分内に通常は置かれる他のアドレスを、むしろパワーアップされ小型にされたキャッシュ内に置いてしまうかもしれない。それにより、そのようなシナリオは、キャッシュのサイズが再び増加させられる必要のあることが後で決定された場合に、これらのアドレスを退去させる付加的な作業を生み出してしまう。
次に図6を参照すると、効率的なキャッシュセクターパワーダウンシーケンスのための方法が示されている。方法400及び500と同様に、方法600のような追加的な方法は、代替的な実施形態を導き出すために当業者によって修正され得る。また、この実施形態におけるステップは逐次的な順序で示されている。しかし、幾つかのステップは図示されているのとは異なる順序で起こってよく、幾つかのステップは同時に実行されてよく、幾つかのステップは他のステップと組み合わされてよく、そして幾つかのステップは別の実施形態ではなくてよい。図示される実施形態では、入ってくる動作による割り当てに対して共有資源のどのサブ部分が有効にされ又は無効にされるのかを決定するために用いられる初期割り当てが、ブロック602においてセットされる。例えば、表2のような表において定義される初期エンコーディング値が、適切なCSR内に記憶されてよい。
ブロック604においては、1つ以上のコンピュータプログラム又はソフトウエアアプリケーションが実行される。これらのアプリケーションは、1つ以上のプロセッサコア112、グラフィック処理ユニット(GPU)170、I/Oデバイス160、その他によって実行されてよい。ソフトウエアアプリケーションを実行するこれら構成要素は、各々データキャッシュのような共有可能資源にアクセスしてよい。1つの実施形態では、共有可能資源は、図2における共有キャッシュメモリサブシステム118のような共有可能L2又はL3キャッシュであってよい。プロセッサコア112による共有キャッシュのアクセス又はメモリ要求は、GPU170又はI/Oデバイス160のような他のソースに由来するアクセスよりも強い衝撃をシステム性能に対して有するであろう。
パワーダウン条件が存在すると決定されると(条件ブロック606)、表2のような表において定義される初期エンコーディング値のような1つ以上のCSR内に記憶されている値は、ブロック608において変更されてよい。処理システムの内部又は外部のいずれかから、例えば図1における処理ノード110からキャッシュ制御器へ入ってくる信号が、特定のキャッシュセクターがパワーダウンされるべきであることを表示している場合に、パワーダウン条件が存在し得る。1つの実施形態では、キャッシュ制御器は、処理システム内の共有キャッシュに対応する。そのような表示を提供するために、種々のパワーダウンメカニズムが当業者によって用いられるであろう。
キャッシュ制御器又は他の論理へ入ってくるパワーダウン表示が、CSRによって記憶されているエンコードされた値を徐々に移行させるための方法を決定するために用いられてよい。影響を受けるCSRは、特定のソースのための個々のCSR、キャッシュ全体に対応する単一のマスターCSR、組み合わせ、その他を含んでいてよい。1つの実施形態では、キャッシュ制御器は、ウエイマスキングによりキャッシュの特定のセクターを割り当てに対して無効にするために、現在の記憶されているエンコーディング値を変化させてよい。1つの実施形態では、キャッシュ全体のための単一のマスターCSRが存在してよい。特定のソースに対しては、メモリ要求割り当てに対して用いられるべきキャッシュの可能なウエイは、マスターCSR及び特定ソース向けCSRの両方に記憶されている値を入力とする論理によって決定されてよい。パワーダウン又はパワーアップのシーケンスに対しては、各ソースのための各CSRに対して単一のマスターCSRのみが修正されてよい。従って、上述したような単一の移行(例えば「00111」から「10000」〜「10001」等)のみが利用されてよい。別の実施形態においては、システム内の各CSRに対して別個の移行が用いられてよい。
ブロック610においては、キャッシュ制御器は、例えば各可能なインデックスにアクセスしながら又は支持する回路が存在する場合には多重インデックス及び対応するセットにアクセスしながらキャッシュのセットを介して移行し、そして無効にされているキャッシュウエイの内容をフラッシュする(flushes)。このステップの間キャッシュそれ自身はまだ機能しており、またメモリ要求はまだ処理されている。
1つの実施形態では、フラッシュすることが完了すると、キャッシュ制御器は、ブロック612において、キャッシュ全体へのメモリ要求の処理をブロックする。別の実施形態では、フラッシュすることが完了すると、キャッシュ制御器は、ブロック612において、無効にされているキャッシュウエイのみへのメモリ要求の処理をブロックする。従って、メモリ要求アクセスは無効にされているウエイのみに対して選択的にブロックされてよく、あるいはメモリ要求アクセスはキャッシュ全体に対してブロックされてよい。次いでブロック614においては、キャッシュ制御器はパワーダウン連絡をキャッシュアレイへ送信する。例えば、キャッシュの目標セクタをウエイマスキングによりパワーダウンするために、キャッシュ制御器からキャッシュアレイへとコマンドが発行されてよい。パワーダウン処理は幾つかのクロックサイクルを必要とするであろうし、それらのクロックサイクルはパワーダウン要求に際して知られていても知られていなくてもよい。キャッシュアレイのパワーダウンが完了した旨の表示が提供されると(条件ブロック616)、キャッシュ制御器は、ブロック618において、メモリ要求がキャッシュにアクセスすることを再び有効にする。このステップは、キャッシュ全体がメモリ要求アクセスに対して事前に無効にされていた場合に、キャッシュ全体へのアクセスを再び有効にしてよい。そうではない場合において、無効にされているキャッシュウエイへのメモリ要求のみがアクセスしないように事前にされていたときには、このステップはスキップされてよい。方法600の制御フローは次いでブロック604へ戻り、ここでは有効にされているキャッシュウエイのみがコンピュータプログラムの実行の間にアクセスされる。
次に図7を参照すると、効率的なキャッシュセクターパワーアップシーケンスのための方法が示されている。ブロック702では、1つ以上のコンピュータプログラム又はソフトウエアアプリケーションが実行される。これらのアプリケーションは、1つ以上のプロセッサコア112、グラフィック処理ユニット(GPU)170、I/Oデバイス160、その他によって実行されてよい。ソフトウエアアプリケーションを実行するこれら構成要素は、各々データキャッシュのような共有可能資源にアクセスしてよい。この共有キャッシュは、例えば方法600と同様の方法によって事前にパワーダウンさせられた特定のセクター又は部分を有していてよい。
対応する論理による場合又はパワーアップ表示が受信される場合のようにパワーアップ条件が存在すると決定されると(条件ブロック704)、1つの実施形態では、ブロック706において、キャッシュ制御器がキャッシュ全体へのメモリ要求の処理をブロックする。別の実施形態においては、パワーアップ条件が存在すると決定されると、キャッシュ制御器は、キャッシュの無効にされた(事前にパワーダウンされた)キャッシュウエイのみへのメモリ要求の処理を単にブロックし続けてよい。従って、メモリ要求アクセスは、無効にされたウエイのみに対して選択的にブロックされ続けてよく、あるいはメモリ要求アクセスはキャッシュ全体に対してブロックされてよい。1つの実施形態では、パワーアップされるべきキャッシュセクターは、キャッシュの全ての無効にされた(事前にパワーダウンされた)キャッシュウエイであってよい。別の実施形態では、パワーアップされるべきキャッシュセクターは、特定のソースのための個々のCSR、キャッシュ全体に対応する単一のマスターCSR、組み合わせ、その他に記憶されるエンコードされた値によって決定されてよい。
次いでブロック708においては、キャッシュ制御器はパワーアップ連絡をキャッシュアレイへ送信する。例えば、キャッシュの目標セクタ又は部分をパワーアップするために、キャッシュ制御器からキャッシュアレイへとコマンドが発行されてよい。同様に、目標セクタは、1つ以上のCSR内に記憶されるエンコードされた値によって決定されてよい。パワーアップ処理は幾つかのクロックサイクルを必要とするであろうし、それらのクロックサイクルはパワーアップ要求に際して知られていても知られていなくてもよい。1つの実施形態では、キャッシュアレイは、ウエイクアップトランジスタを用いて新たなセクターのノード及びワイヤルートを駆動して論理0及び1値を埋める。一旦このステップが完了すると、アレイはトランジスタをフルパワーにオンする。次いで内部初期化が実行され、内部ブロッキングビットがセットされる。
キャッシュアレイのパワーアップが完了した旨の表示が提供されると(条件ブロック710)、キャッシュ制御器は、キャッシュ全体へのアクセスが事前に無効にされていた場合には、ブロック712において、メモリ要求がキャッシュにアクセスすることを再び有効にする。しかし、同時に、キャッシュ制御器はキャッシュウエイマスキングを利用して、直近にパワーオンされたセクターにメモリ要求がアクセスしないようにしてよい。別の実施形態では、キャッシュは状態情報を更新して、直近にパワーオンされたセクターが非アクティブであることを表示してよい。代替的な実施形態では、ウエイマスキング及び状態情報の両方が、キャッシュの直近にパワーオンされたセクターにメモリ要求がアクセスしないようにする一方で、事前にパワーオンされたセクターへのアクセスが再開する(resume)ことの両方に用いられてよい。
ブロック714においては、直近にパワーオンされたセクター又はキャッシュウエイに関して、状態情報が初期化され、またキャッシュチェックが再び有効にされる。1つの実施形態では、キャッシュ制御器は状態マシンを用いて、直接ウエイアクセスを通して直近にパワーオンされたキャッシュウエイを並べ、そして対応する有効ビットがリセットされる。また、ヒット及びパリティ(parity)チェック論理が再び有効にされる。初期キャッシュコヒーレンシプロトコル状態は無効状態にセットされてよい。同様に、このステップと並行して、メモリ要求によるキャッシュの他のセクターへのアクセスが生じる。
ブロック714におけるステップが完了すると、キャッシュアレイは対応する表示をキャッシュ制御器へ送ってよい。続いてブロック716においては、直近にパワーオンされたセクターに対してキャッシュウエイマスキングがいまや有効にされており、1つ以上のCSR内に記憶されている値、例えば表2のような表において定義される初期エンコーディング値は、ブロック716において変更されてよく又は再プログラムされてよい。尚、直近にパワーオンされたキャッシュウエイへの初期アクセスはキャッシュミスを経験するであろうし、またそれに続く割り当ては、1つ以上のCSR内に記憶されるエンコードされた値に少なくとも一部分は基いて決定されてよい。直近にパワーオンされたキャッシュウエイに対しては、初期キャッシュミスは無効データの退去を必要とはしないであろう。
上述の実施形態はかなり詳細に説明されてきたが、上述の開示が完全に理解されるならば、多くの変形及び修正が当業者にとって明らかであろう。後述の特許請求の範囲は、そのような全ての変形及び修正を包含するものとして解釈されることが意図されている。