(57)【要約】高速キャッシュシャットダウンを可能にする装置および方法が開示される。一実施形態では、キャッシュサブシステムは、キャッシュメモリと、キャッシュメモリに連結されたキャッシュコントローラと、を含む。キャッシュコントローラは、キャッシュサブシステムへの電源が復旧したときに、変更済みデータをキャッシュメモリへ独占的に書き込むのを禁止するように構成されている。【選択図】図５
2015515687.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリに連結されるためのキャッシュコントローラを備えるキャッシュサブシステムであって、
前記キャッシュコントローラは、前記キャッシュサブシステムへの電源が復旧したことに応じて、変更済みデータを前記キャッシュメモリへ独占的に書き込むことを禁止するように構成されている、
キャッシュサブシステム。
【請求項２】
前記キャッシュコントローラは、メモリ階層において前記キャッシュメモリよりも下位にある少なくとも１つの追加的な位置にも変更済みデータが書き込まれる場合には、電源復旧の後に前記変更済みデータを前記キャッシュメモリに書き込むように構成されている、請求項１に記載のキャッシュサブシステム。
【請求項３】
前記キャッシュコントローラは、変更済みデータがより下位レベルのキャッシュにも書き込まれる場合には、電源復旧の後に前記変更済みデータを前記キャッシュメモリに書き込むように構成されている、請求項２に記載のキャッシュサブシステム。
【請求項４】
前記キャッシュコントローラは、変更済みデータがメインメモリにも書き込まれる場合には、電源復旧の後に前記変更済みデータを前記キャッシュメモリに書き込むように構成されている、請求項２に記載のキャッシュサブシステム。
【請求項５】
前記キャッシュコントローラは、変更済みデータが前記キャッシュメモリに書き込まれることを禁止するように構成されており、変更済みデータを、メモリ階層において前記キャッシュメモリよりも下位にある少なくとも１つの追加的な位置に書き込むように構成されている、請求項１に記載のキャッシュサブシステム。
【請求項６】
前記キャッシュコントローラは、変更済みデータを、前記メモリ階層においてより下位レベルのキャッシュに書き込むように構成されている、請求項５に記載のキャッシュサブシステム。
【請求項７】
前記キャッシュコントローラは、変更済みデータを、メインメモリに書き込むように構成されている、請求項５に記載のキャッシュサブシステム。
【請求項８】
前記キャッシュコントローラは、閾値に到達するまでは、変更済みデータが前記キャッシュメモリへ独占的に書き込まれるのを禁止するように構成されており、前記キャッシュコントローラは、前記閾値に到達した後に、変更済みデータが前記キャッシュメモリへ独占的に書き込まれるのを許可するようにさらに構成されている、請求項１に記載のキャッシュサブシステム。
【請求項９】
前記閾値は事象の数である、請求項８に記載のキャッシュサブシステム。
【請求項１０】
前記事象は、変更済みデータを、メモリ階層における少なくとも１つの記憶ユニットに書き込むインスタンスである、請求項９に記載のキャッシュサブシステム。
【請求項１１】
前記閾値は、前記キャッシュサブシステムへの電源が復旧したときからの時間である、請求項８に記載のキャッシュサブシステム。
【請求項１２】
キャッシュサブシステムへの電源を復旧することと、
前記キャッシュサブシステムへの電源が復旧したことに応じて、変更済みデータが前記キャッシュメモリへ独占的に書き込まれるのを禁止することと、
を含む方法。
【請求項１３】
前記禁止することは、キャッシュコントローラにより実行され、
前記方法は、
前記キャッシュコントローラが、閾値に到達する前に、変更済みデータを前記キャッシュメモリへ独占的に書き込むのを禁止することと、
前記キャッシュコントローラが、前記閾値に到達した後に、変更済みデータを前記キャッシュメモリへ独占的に書き込むのを許可することと、
をさらに含む、請求項１２に記載の方法。
【請求項１４】
前記閾値は、所定の事象数である、請求項１３に記載の方法。
【請求項１５】
前記事象は、変更済みデータを、メモリ階層における少なくとも１つの記憶ユニットに書き込むインスタンスである、請求項１４に記載の方法。
【請求項１６】
前記閾値は、前記キャッシュサブシステムへの電源が復旧したときからの時間である、請求項１３に記載の方法。
【請求項１７】
前記キャッシュサブシステムへの電源が復旧することと、前記閾値に到達することとの間の期間に、変更済みデータを、前記キャッシュメモリと、より下位レベルのキャッシュメモリおよびメインメモリのうち少なくとも１つと、に書き込むことをさらに含む、請求項１３に記載の方法。
【請求項１８】
変更済みデータが前記キャッシュメモリに書き込まれるのを禁止する一方で、変更済みデータを、メモリ階層において前記キャッシュメモリよりも下位にある少なくとも１つの追加的な位置に書き込むことをさらに含む、請求項１３に記載の方法。
【請求項１９】
前記少なくとも１つの追加的な位置は、より下位レベルのキャッシュメモリ内にある、請求項１８に記載の方法。
【請求項２０】
前記少なくとも１つの追加的な位置は、メインメモリ内にある、請求項１８に記載の方法。
【請求項２１】
前記閾値に到達する前にプロセッサコアがアイドル状態になることに応じて、前記キャッシュサブシステムを含む前記プロセッサコアから電源を遮断することをさらに含む、請求項１３に記載の方法。
【請求項２２】
少なくとも１つのプロセッサコアを有するプロセッサを備えるシステムであって、
前記少なくとも１つのプロセッサコアはキャッシュサブシステムを含み、
前記キャッシュサブシステムは、
第１キャッシュメモリと、
前記第１キャッシュメモリに連結されたキャッシュコントローラであって、前記第１プロセッサコアへの電源が復旧すると、変更済みデータを前記第１キャッシュメモリへ独占的に書き込むのを禁止するように構成されたキャッシュコントローラと、を含む、
システム。
【請求項２３】
前記プロセッサは、メモリ階層において前記第１キャッシュメモリよりも下位にある第２キャッシュメモリをさらに含み、前記システムは、前記プロセッサに連結されたメインメモリを含み、前記メインメモリは、前記メモリ階層において前記第２キャッシュメモリよりも下位にある、請求項２２に記載のシステム。
【請求項２４】
前記キャッシュコントローラは、変更済みデータのブロックが前記第２キャッシュメモリおよび前記メインメモリのうち少なくとも１つに書き込まれる場合に、前記変更済みデータのブロックが前記第１キャッシュメモリに書き込まれるのを許可するように構成されている、請求項２３に記載のシステム。
【請求項２５】
前記少なくとも１つのプロセッサコアが変更済みデータのブロックを生成することに応じて、前記キャッシュコントローラは、前記変更済みデータのブロックが前記第１キャッシュメモリに書き込まれるのを禁止するように構成されており、前記プロセッサコアは、前記変更済みデータのブロックを、前記第２キャッシュメモリおよび前記メインメモリのうち少なくとも１つに書き込むように構成されている、請求項２３に記載のシステム。
【請求項２６】
前記第１コントローラは、閾値に到達した場合に、変更済みデータを前記第１キャッシュメモリへ独占的に書き込むのを禁止することを中断するように構成されている、請求項２２に記載のシステム。
【請求項２７】
電源管理ユニットをさらに含み、前記電源管理ユニットは、前記閾値に到達する前に前記少なくとも１つのプロセッサコアがアイドル状態になったと判定したことに応じて、前記少なくとも１つのプロセッサコアから電源を遮断するように構成されている、請求項２６に記載のシステム。
【請求項２８】
コンピュータシステム上で実行可能なプログラムにより操作されるデータ構造を含むコンピュータ可読記憶媒体であって、前記プログラムは、前記データ構造によって記述された回路を含む集積回路を製造するためのプロセスの一部を実行するために、前記データ構造上で動作し、前記データ構造によって記述された回路は、
キャッシュメモリに連結されたキャッシュコントローラであって、前記キャッシュサブシステムへの電源を復旧すると、変更済みデータを前記キャッシュメモリへ独占的に書き込むのを禁止するように構成されたキャッシュコントローラを含む、
コンピュータ可読記憶媒体。
【請求項２９】
前記データ構造によって記述された前記キャッシュコントローラは、閾値に到達したことに応じて、変更済みデータを前記キャッシュメモリへ独占的に書き込むのを禁止することを中断するように構成されている、請求項２８に記載のコンピュータ可読記憶媒体。
【請求項３０】
前記データ構造は、
ＨＤＬ（高位設計言語）データ、
ＲＴＬ（レジスタ転送レベル）データ、および
グラフィックデータシステム（ＧＤＳ）ＩＩデータ
のうち１つ以上の種類を含む、請求項２８に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は集積回路に関し、さらに詳細には、プロセッサ内のキャッシュサブシステムに関する。
【背景技術】
【０００２】
トランジスタのサイズは、集積回路技術の発展とともに縮小し続けてきた。これにより、より多くの回路を、単一の集積回路ダイ上に実装することが可能となった。このため、集積回路上により多くの機能を実装することが可能となった。複数コアを有するプロセッサは、集積回路上に実装され得る機能の総数が増加したことの一例である。
【０００３】
複数コアを有するプロセッサの動作中に、少なくとも１つのコアがインアクティブ（ｉｎａｃｔｉｖｅ）状態になる場合がある。係る場合には、インアクティブ状態のプロセッサコアは、全体的な電力消費を低下させるために、電源が遮断され得る。アイドル状態のプロセッサコアの電源遮断は、プロセッサコア内に実装された様々なサブシステム（キャッシュを含む）の電源遮断を含み得る。場合によっては、キャッシュは、プロセッサコアが電源遮断されると判定された時点における変更済みデータを格納し得る。変更済みデータがプロセッサコア内のキャッシュのみに存在する場合には、当該データは、より下位レベルのキャッシュに（例えば、レベル１（すなわちＬ１キャッシュ）からレベル２（すなわちＬ２キャッシュ）に）書き込まれるか、メモリにライトバックされ得る。変更済みデータがより下位レベルのキャッシュに書き込まれるか、メモリにライトバックされた後に、キャッシュは、プロセッサコアの他の部分の電源遮断が可能な状況であるならば、電源遮断が可能な状況となり得る。
【発明の概要】
【課題を解決するための手段】
【０００４】
高速キャッシュシャットダウンを可能にする装置および方法が開示される。一実施形態では、キャッシュサブシステムは、キャッシュメモリと、キャッシュメモリに連結されたキャッシュコントローラと、を含む。キャッシュコントローラは、キャッシュサブシステムに対する電源を復旧すると、変更済みデータをキャッシュメモリに独占的に書き込むことを禁止するように構成されている。
【０００５】
一実施形態では、方法は、キャッシュメモリを含むキャッシュサブシステムへの電源を復旧するステップを含む。この方法は、変更済みデータがキャッシュメモリに独占的に書き込まれることを禁止するステップをさらに含む。
【０００６】
本開示の他の態様は、以下の詳細な説明を読むこと、および以下で簡略に説明される添付の図面を参照すること、により明らかになる。
【０００７】
本発明では、様々な改変例および代替的形態が可能であるが、それらのうち特定的な実施形態が、図面において一例として示されており、本明細書において詳述されている。しかし、本明細書に関する図面および説明は、本発明を、開示された特定の形態に制限することを意図するものではなく、むしろ本発明は、添付の請求項により定められる本発明の精神および範囲に含まれるすべての改変例、均等物、および代替物を含むことを理解すべきである。
【図面の簡単な説明】
【０００８】
【図１】コンピュータシステムの一実施形態のブロック図である。
【図２】複数コアおよび共有キャッシュを有するプロセッサの一実施形態のブロック図である。
【図３】キャッシュサブシステムの一実施形態のブロック図である。
【図４】電源が復旧して閾値に到達する前に、変更済みデータがキャッシュから除外されるキャッシュサブシステムを動作させる方法の一実施形態のフローチャートである。
【図５】ライトバイパスモードでキャッシュサブシステムを動作させるための方法の一実施形態のフローチャートである。
【図６】ライトバイパスモードにおける動作を示すキャッシュサブシステムの一実施形態のブロック図である。
【図７】ライトスルーモードでキャッシュサブシステムを動作させるための方法の一実施形態のフローチャートである。
【図８】ライトスルーモードにおける動作を示すキャッシュサブシステムの一実施形態のブロック図である。
【図９】キャッシュサブシステムの一実施形態を示すデータ構造を含むコンピュータ可読媒体の一実施形態を示すブロック図である。
【発明を実施するための形態】
【０００９】
本開示は、電源が復旧すると、キャッシュメモリが、メモリ階層における他の位置を除いて変更済みデータを記憶することを、限られた時間だけ禁止するための方法および装置に関する。限られた時間は、閾値により定められてもよい。先行技術に係るキャッシュサブシステムでは、キャッシュを電源遮断してスリープ状態（例えば、この状態では、対応するプロセッサコアはアイドル状態にある）に置くことは、キャッシュコントローラが、対応するキャッシュの変更済みデータ用の記憶位置を調べることを含み得る。変更済みデータが１つ以上の記憶位置で検出された場合には、変更済みデータは、メモリ階層においてより低い階層の他のキャッシュに（例えばＬ１キャッシュからＬ２キャッシュに）、または、メインメモリに書き込まれ得る。一方、本開示のキャッシュサブシステムでは、閾値に到達していなければ、キャッシュメモリから変更済みデータを調べることなく電源遮断され得る。キャッシュメモリは、閾値到達前に、メモリ階層における他のキャッシュおよびメモリを除いて変更済みデータを記憶することが禁止されているため、電源遮断の前にキャッシュをチェックする必要がない。したがって、係るキャッシュサブシステムを含むプロセッサコアまたは他の機能ユニットは、機能ユニットがアイドル状態にある場合に、変更済みデータが存在するか否かを判定することによって生じる本質的な遅延なしに、省電化のために電源遮断され得る。概して、本開示で説明するキャッシュサブシステムは、プロセッサコア（または他の機能ユニット）内で実装された場合に、短期間でスリープ状態から抜け出てタスクを実行することと、変更済みデータを検索して、係る変更済みデータをメモリまたは他のキャッシュにライトバックすることに起因する遅延を生じさせることなく、スリープ状態に高速に戻ることと、を可能にし得る。
【００１０】
閾値は様々な方法で実装され得る。一実施形態では、閾値は、キャッシュサブシステムへの電源が復旧した時間からの所定の所要時間であってもよい。所定の所要時間の経過前では、キャッシュコントローラは、変更済みデータを、対応するキャッシュへ独占的に書き込むことを禁止ししてもよい。所定の所要時間が経過する前にキャッシュサブシステム（および／またはキャッシュサブシステムを内部に実装するユニット）がアイドル状態になると、キャッシュサブシステムは、キャッシュから変更済みデータを検索し、検出された変更済みデータを他のキャッシュまたはメインメモリに書き込む必要なしに、再び電源遮断され得る。キャッシュサブシステムが所定の所要時間の経過前にアイドル状態にない場合には、キャッシュコントローラは、変更済みデータが対応するキャッシュへ独占的に書き込まれることを許可し得る。
【００１１】
他の実施形態では、閾値は、事象の発生回数によって定められてもよい。係る事象は、例えば、キャッシュ追い出し、変更済みデータが実行ユニットにより生成されること、キャッシュからのトラフィックおよび／またはキャッシュへのトラフィック、などであってよい。概して、事象は、キャッシュサブシステムに関連する回路において生じる処理活動のレベルを示し得るタイプの事象であってよい。閾値が事象ベースである実施形態では、閾値の到達時間は、電源がキャッシュサブシステムに投入される毎に変化し得る。
【００１２】
キャッシュサブシステムの電源投入と閾値の到達との間の期間における変更済みデータの取り扱いは、異なる方法で実現され得る。一実施形態では、キャッシュサブシステムは、ライトスルーモードで動作し得る。ライトスルーモードで動作している場合、変更済みデータは、キャッシュと、メモリ階層においてより下位にある他の記憶位置（例えば、下位キャッシュまたはメインメモリなど）と、の各々に書き込まれ得る。したがって、変更済みデータは、キャッシュに加えて、メモリ階層においてより下位の位置にも記憶される。そのため、キャッシュの電源を遮断する前に、変更済みデータをキャッシュからコピーおよびライトバックする必要はない。なぜならば、変更済みデータが、メモリ階層においてより下位にある少なくとも１つの記憶位置に既に記憶されているからである。キャッシュサブシステムは、閾値に到達した場合、または電源がキャッシュサブシステムから遮断された場合に、ライトスルーモードでの動作を中断してもよい。ライトスルーモードでの動作は、スリープ状態（または、他の電源供給されない状態）からキャッシュに電源が復旧したときに、再開してもよい。
【００１３】
他の実施形態では、キャッシュサブシステムは、ライトバイパスモードで動作してもよい。ライトバイパスモードで動作している場合、キャッシュコントローラは、いかなる変更済みデータもキャッシュに書き込まれることを禁止してもよい。その代わりに、ライトバイパスモードでの動作中に生成される変更済みデータは、メモリ階層においてより下位にある少なくとも１つの記憶位置に書き込まれる。例えば、Ｌ１データキャッシュに対するキャッシュサブシステムがライトバイパスモードで動作中である場合、実行ユニットにより生成される変更済みデータは、Ｌ２キャッシュ、Ｌ３キャッシュおよび／またはメインメモリに書き込まれ得る。キャッシュサブシステムは、閾値に到達したことに応じて、または電源がキャッシュサブシステムから遮断されると、ライトバイパスモードでの動作を中断してもよい。ライトバイパスモードでの動作の再開は、キャッシュサブシステムへの電源が復旧した場合に、生じ得る。
【００１４】
変更済みデータが、メモリ階層において同一レベルではあるが異なる電力領域にある他のキャッシュに記憶されるような実施形態も可能であり、想定されることにも留意されたい。
【００１５】
いくつかの実施形態では、複数のキャッシュおよびそれらに対応するサブシステムが、上述のモードのうち１つのモードで動作し得ることも留意されたい。例えば、Ｌ１キャッシュおよびＬ２キャッシュを有するプロセッサコアでは、対応するキャッシュサブシステムは、共に、ライトスルーモードまたはライトバイパスモードのうち一方で動作し得る。したがって、２つの異なるキャッシュが同一の電源分散回路に連結されている場合にも、高速遮断による利益を依然として得ることが可能である。
【００１６】
さらに、複数レベルのキャッシュメモリが上述のモードで動作し得る実施形態では、両方のキャッシュサブシステムが必ずしも同一のモードで動作する必要はない。例えば、Ｌ１キャッシュがライトバイパスモードで動作する一方で、Ｌ２キャッシュがライトスルーモードで動作してもよい。
【００１７】
図１は、コンピュータシステム１０の一実施形態のブロック図である。図示の実施形態では、コンピュータシステム１０は、メモリ６に連結された集積回路（ＩＣ）２を含む。図示の実施形態では、ＩＣ２は、いくつかのプロセッサコア１１（本実施形態におけるプロセッサコアである）を有するシステム・オン・チップ（ＳＯＣ）である。様々な実施形態では、プロセッサコアの個数は、１つのみであってもよいし、ＩＣダイ上に可能なかぎり多数のプロセッサコアが実装されてもよい。マルチコアの実施形態では、プロセッサコア１１の各々は同一であってもよいし（すなわち対称型マルチコア）、１つ以上のコアが他のコアと異なってもよい（すなわち非対称型マルチコア）。プロセッサコア１１の各々は、１つ以上の実行ユニット、キャッシュメモリ、スケジューラ、分岐予測回路などを含み得る。さらに、プロセッサコア１１の各々は、メモリ６へのアクセスに対する要求をアサート（ａｓｓｅｒｔ）するよう構成され得る。なお、このメモリ６は、コンピュータシステム１０に対するメインメモリとして機能する。係る要求は、読み出し要求および／または書き込み要求を含んでもよく、ノースブリッジ１２によって各プロセッサコア１１から最初に受け取られ得る。メモリ６に対するアクセスの要求は、特定の命令を実行することに応じて開始される場合もあり、プリフェッチ動作に応じて開始される場合もある。
【００１８】
図示の実施形態では、Ｉ／Ｏインターフェース１３もノースブリッジ１２に連結され得る。Ｉ／Ｏインターフェース１３は、コンピュータシステム１０においてサウスブリッジデバイスとして機能し得る。いくつかの異なる種類の周辺バスが、Ｉ／Ｏインターフェース１３に連結されてもい。この特定の事例では、バスの種類は、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バス、ＰＣＩ−Ｅｘｔｅｎｄｅｄ（ＰＣＩ−Ｘ）バス、ＰＣＩＥ（ＰＣＩ  Ｅｘｐｒｅｓｓ）バス、ギガビットイーサネット（登録商標）（ＧＢＥ）バスおよび汎用シリアルバス（ＵＳＢ）を含む。しかし、これらのバスの種類は例示であって、他の多数の種類のバスがＩ／Ｏインターフェース１３に連結されてもよい。様々な種類の周辺装置（ここでは図示せず）が、周辺バスの一部または全部に連結されてもよい。係る周辺装置は、キーボード、マウス、プリンタ、スキャナ、ジョイスティック、または、他の種類のゲームコントローラ、媒体読み出しデバイス、外部ストレージデバイス、ネットワークインターフェースカードなどを含む（が、これらに限定されない）。対応する周辺バスを介してＩ／Ｏユニット１３に連結され得る周辺装置のうち少なくともいくつかは、ダイレクトメモリアクセス（ＤＭＡ）を用いてメモリアクセス要求をアサートし得る。これらの要求（読み出し要求および書き込み要求を含み得る）は、Ｉ／Ｏインターフェース１３を介してノースブリッジ１２に伝えられ得る。
【００１９】
図示の実施形態では、ＩＣ２は、コンピュータシステム１０のディスプレイ３に連結されたグラフィックス処理ユニット１４を含む。ディスプレイ３は、フラットパネル型ＬＣＤ（液晶ディスプレイ）、プラズマディスプレイ、ＣＲＴ（カソードレイチューブ）、または任意の他の好適な種類のディスプレイであり得る。ＧＰＵ１４は、様々なビデオ処理機能を実行し、処理された情報を、視覚情報として出力するためにディスプレイ３に提供し得る。
【００２０】
図示する実施形態におけるメモリコントローラ１８は、ノースブリッジ１２と一体化されているが、他の実施形態では、メモリコントローラ１８は、ノースブリッジ１２から分離されていてもよい。メモリコントローラ１８は、ノースブリッジ１２から伝えられるメモリ要求を受け取り得る。読み出し要求（プリフェッチを含む）に応じてメモリ６からアクセスされるデータは、ノースブリッジ１２を介してメモリコントローラ１８により要求エージェントに伝えられ得る。書き込み要求に応じて、メモリコントローラ１８は、要求と、書き込まれるデータとの両方を、要求エージェントからノースブリッジ１２を介して受け取り得る。複数のメモリアクセス要求が所与の時間に保留状態にある場合には、メモリコントローラ１８は、これらの要求を調停し得る。
【００２１】
図示の実施形態におけるメモリ６は、一実施形態では、複数のメモリモジュールとして実装され得る。各メモリモジュールは、メモリモジュール上に実装された１つ以上のメモリデバイス（例えばメモリチップなど）を含み得る。他の実施形態では、メモリ６は、マザーボード上に実装され、または、ＩＣ２が装着された他の担持体上に実装された、１つ以上のメモリデバイスを含み得る。さらに他の実施形態では、メモリ６の少なくとも１部分は、ＩＣ２自身のダイ上に実装され得る。上述した様々な実装の組み合わせを有する実施形態も可能であり、想定され得る。メモリ６は、動作中、ＩＣ２とともに用いるためのランダムアクセスメモリ（ＲＡＭ）を実装するために用いられ得る。実装されるＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ）またはダイナミックＲＡＭ（ＤＲＡＭ）であり得る。メモリ６を実装するために用いられ得るＤＲＡＭの種類は、ダブルデータレート（ＤＤＲ）ＤＲＡＭ、ＤＤＲ２ＤＲＡＭ、ＤＤＲ３ＤＲＡＭなどを含む（がこれらに限定されない）。
【００２２】
図１では明確には図示しないが、ＩＣ２は、プロセッサコア１１の外部に位置する１つ以上のキャッシュメモリを含み得る。以下で論じるように、各プロセッサコア１１は、Ｌ１データキャッシュおよびＬ１命令キャッシュを含み得る。いくつかの実施形態では、各プロセッサコア１１は、対応するＬ２キャッシュに関連付けられ得る。各Ｌ２キャッシュは、対応するプロセッサコアの内部または外部に位置し得る。全てのプロセッサコア１１間で共有されるＬ３キャッシュも、ＩＣ２の一実施形態に含まれ得る。概して、ＩＣ２の様々な実施形態では、いくつかの異なるレベルのキャッシュメモリが実装されてもよく、いくつかのキャッシュメモリがプロセッサコア間で共有される一方で、他のキャッシュメモリが、プロセッサコア１１のうち特定のプロセッサコアに割り当てられてもよい。
【００２３】
図示の実施形態におけるノースブリッジ１２は、電源管理ユニット１５も含み得る。電源管理ユニット１５は、ＩＣ２の様々な機能ユニットにおける電力消費を監視および制御するために用いられ得る。さらに詳細には、電源管理ユニット１５は、ＩＣ２の他の機能ユニットの各々の活動レベルを監視してもよく、アイドル状態（例えば特定の時間量にわたり活動を示さなかった）であると判定された所与の機能ユニットにおいて、電源管理動作を実行してもよい。加えて、電源管理ユニット１５は、アイドル状態にある機能ユニットがタスクを実行するために作動される必要がある場合にも、電源管理動作を実行してもよい。電源管理動作は、電源を遮断することと、クロック信号をゲート制御することと、電源を復旧することと、クロック信号を復旧することと、電圧を増減または動作させることと、クロック信号の周波数を増減することと、を含み得る。いくつかの場合では、電源管理ユニット１５は、各プロセッサコア１１が熱設計電力限界内に留まり得るように、プロセッサコア１１間での作業負荷の再割り当てを実行し得る。概して、電源管理ユニット１５は、ＩＣ２の他の機能ユニットに対する電源の制御および分配に関するあらゆる機能を実行し得る。
【００２４】
図２は、プロセッサコア１１の一実施形態のブロック図である。プロセッサコア１１は、システムメモリ（例えば図１のメモリ６など）内に記憶された命令を実行するように構成されている。これらの命令の多数は、メモリ６に記憶されたデータ上で動作し得る。メモリ６は、コンピュータシステム全体にわたって物理的に分散され、および／または１つ以上の処理ノード１１によりアクセスされ得ることに留意されたい。
【００２５】
図示の実施形態では、プロセッサコア１１は、Ｌ１命令キャッシュ１０６およびＬ１データキャッシュ１２８を含み得る。プロセッサコア１１は、命令キャッシュ１０６に連結されたプリフェッチユニット１０８を含み得る。これについては以下でより詳細に説明する。ディスパッチユニット１０４は、命令キャッシュ１０６から命令を受け取り、動作をスケジューラ（単数または複数）１１８にディスパッチするように構成され得る。１つ以上のスケジューラ１１８は、ディスパッチユニット１０４からディスパッチされた動作を受け取り、動作を１つ以上の実行ユニット１２４に発行するために、連結され得る。実行ユニット１２４は、１つ以上の整数ユニット、１つ以上の浮動小数点ユニットを含み得る。少なくとも１つのロードストアユニット１２６が、図示の実施形態における実行ユニット１２４に含まれる。実行ユニット１２４により生成される結果は、１つ以上のリザルトバス１３０に出力され得る（本開示では、単一のリザルトバスが明瞭化のために図示されているが、複数のリザルトバスも可能であり、想定される）。これらの結果は、引き続いて発行される命令に対するオペランド値として用いられてもよく、および／またはレジスタファイル１１６に記憶されてもよい。リタイアキュー１０２は、スケジューラ１１８およびディスパッチユニット１０４に連結され得る。リタイアキュー１０２は、発行される各動作がいつリタイアされ得るかを判定するように構成され得る。
【００２６】
一実施形態では、プロセッサコア１１は、ｘ８６アーキテクチャ（Ｉｎｔｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ３２またはＩＡ−３２としても知られる）と互換性を有するように設計され得る。他の実施形態では、プロセッサコア１１は、６４ビットアーキテクチャと互換性を有し得る。他のアーキテクチャと互換性を有するプロセッサコア１１の実施形態も考えられる。
【００２７】
プロセッサコア１１が多数の他の構成要素も含み得ることに留意されたい。例えば、プロセッサコア１１は、実行中の命令スレッドにおいて分岐を予測するように構成された分岐予測ユニット（図示せず）を含み得る。いくつかの実施形態（例えばスタンドアロン型プロセッサとして実装される場合など）では、プロセッサコア１１は、メモリ６に関する読み出しおよび書き込みを制御するように構成されたメモリコントローラも含み得る。
【００２８】
命令キャッシュ１０６は、ディスパッチユニット１０４によるフェッチのための命令を記憶し得る。命令コードは、プリフェッチユニット１０８を通してシステムメモリ２００からコードをフェッチすることにより、記憶のために命令キャッシュ１０６に提供され得る。命令キャッシュ１０６は、様々な構成（例えばセットアソシアティブ方式、フルアソシアティブ方式、またはダイレクトマップ方式など）で実装され得る。
【００２９】
プロセッサコア１１は、Ｌ２キャッシュ１２９にも関連付けられ得る。図示の実施形態では、Ｌ２キャッシュ１２９は、プロセッサコア１１と同一の電力領域内にあり、当該電力領域に含まれる。Ｌ２キャッシュ１２９がプロセッサコア１１と同一の電力領域の外部に位置し且つ当該電力領域から分離している実施形態も可能であり、想定される。命令キャッシュ１０６が命令を記憶するために用いられ、データキャッシュ１２８がデータ（例えばオペランドなど）を記憶するために用いられ得る一方で、Ｌ２キャッシュ１２９は、命令およびデータを記憶するために用いられるユニファイドキャッシュであり得る。一方、別個のＬ２キャッシュが、命令およびデータのために実装される実施形態も可能であり、想定される。
【００３０】
ディスパッチユニット１０４は、実行ユニット（単数または複数）１２４により実行可能な動作の他にも、オペランドアドレス情報、即値データおよび／または変位データを出力し得る。いくつかの実施形態では、ディスパッチユニット１０４は、実行ユニット１２４内で実行可能な動作に特定の命令をデコードするためのデコード回路（図示せず）を含み得る。簡単な指示は、単一の動作に対応し得る。いくつかの実施形態では、より複雑な指示は、複数の動作に対応し得る。レジスタの更新を伴う動作をデコードすると、レジスタファイル１１６内のレジスタ位置は、投機的レジスタ状態を記憶するために予約され得る（代替的な実施形態では、リオーダバッファが、各レジスタごとの１つ以上の投機的レジスタ状態を記憶するために用いられてもよく、レジスタファイル１１６が、各レジスタごとにコミットされたレジスタ状態を記憶するために用いられてもよい）。レジスタマップ１３４は、レジスタリネーミングを促進するために、ソースオペランドおよびデスティネーションオペランドの論理レジスタ名を物理レジスタ番号に変換し得る。レジスタマップ１３４は、レジスタファイル１１６内のいずれのレジスタが現在割り当てられているか、割り当てられていないかを追跡し得る。
【００３１】
図２のプロセッサコア１１は、アウトオブオーダ実行をサポートし得る。リタイアキュー１０２は、レジスタの読み出し動作および書き込み動作のために元のプログラムシーケンスを追跡し続け、投機的命令実行および分岐予測ミス回復を可能にし、正確な例外を促進し得る。いくつかの実施形態では、リタイアキュー１０２は、（例えば、リオーダバッファと同様に）投機的レジスタ状態のためにデータ値格納を提供することによって、レジスタリネーミングもサポートし得る。他の実施形態では、リタイアキュー１０２は、リオーダバッファと同様に機能し得るが、データ値格納は提供しないかもしれない。動作がリタイアされると、リタイアキュー１０２は、投機的レジスタ状態を格納するためにはもはや不要となったレジスタファイル１１６内のレジスタの割り当てを解除し、どのレジスタが現在フリーであるかを示す信号をレジスタマップ１３４に提供し得る。これらの状態を生成した動作が有効化されるまで投機的レジスタ状態をレジスタファイル１１６内に（代替的な実施形態では、リオーダバッファ内に）保持することにより、予測ミス経路に沿って投機的実行された動作の結果は、分岐予測が誤りである場合に、レジスタファイル１１６内で無効化され得る。
【００３２】
１つの実施形態では、レジスタファイル１１６の所与のレジスタは、実行された命令のデータ結果を記憶するように構成されてもよく、実行された命令により更新され得る１つ以上のフラグビットも記憶してもよい。フラグビットは、後続の命令を実行する際に重要となり得る様々な種類の情報（例えば加算演算または乗算演算の結果としてキャリーまたはオーバーフローの状態が存在することを示す）を伝え得る。アーキテクチャ的に、フラグを記憶するフラグレジスタが定義されてもよい。したがって、所与のレジスタに対する書き込みは、論理レジスタおよびフラグレジスタの両方を更新し得る。必ずしも全ての命令が１つ以上のフラグを更新するとは限らないことに留意されたい。
【００３３】
レジスタマップ１３４は、物理レジスタを、動作に対するデスティネーションオペランドとして指定された特定の論理レジスタ（例えばアーキテクチャレジスタまたはマイクロアーキテクチャ的に指定されたレジスタなど）に割り当て得る。ディスパッチユニット１０４は、レジスタファイル１１６が、所与の動作におけるソースオペランドとして指定された論理レジスタに割り当てられた、予め割り当てられた物理レジスタ（ｐｒｅｖｉｏｕｓｌｙ  ａｌｌｏｃａｔｅｄ  ｐｈｙｓｉｃａｌ  ｒｅｇｉｓｔｅｒ）を有することを判定し得る。レジスタマップ１３４は、論理レジスタに直近に割り当てられた物理レジスタに対して、タグを提供し得る。このタグは、レジスタファイル１１６内のオペランドのデータ値にアクセスするために、または、リザルトバス１３０上のリザルトフォワーディングを介してデータ値を受け取るために用いられ得る。オペランドがメモリ位置に対応する場合には、オペランド値は（リザルトフォワーディングおよび／またはレジスタファイル１１６内に格納するために）ロードストアユニット１２６を通してリザルトバス上に提供され得る。オペランドデータ値は、動作が何れかのスケジューラ１１８によって発行されると、実行ユニット１２４に提供され得る。代替的な実施形態では、オペランド値は、（動作が発行されたときに、対応する実行ユニット１２４に提供されることに代わって）動作がディスパッチされたときに、対応するスケジューラ１１８に提供され得ることに留意されたい。
【００３４】
本開示で用いられるスケジューラは、動作の実行準備がいつ整うかを検出し、準備の整った動作を１つ以上の実行ユニットに発行するデバイスである。例えば、リザベーションステーションは、スケジューラの１種類であり得る。実行ユニット毎に独立的なリザベーションステーションが提供されてもよいし、動作の発行元である中央（ｃｅｎｔｒａｌ）リザベーションステーションが提供されてもよい。他の実施形態では、リタイアまで動作を保持する中央スケジューラが用いられ得る。各スケジューラ１１８は、実行ユニット１２４への発行を待機中のいくつかの保留中の動作に対する動作情報（例えば、動作ならびにオペランド値、オペランドタグ、および／または、即値データなど）を保持する機能を有し得る。いくつかの実施形態では、各スケジューラ１１８は、オペランド値格納を提供しない場合もある。代わりに、各スケジューラは、オペランド値が実行ユニット１２４によっていつ読み出し可能となるかを（レジスタファイル１１６またはリザルトバス１３０から）判定するために、発行された動作と、レジスタファイル１１６で入手可能な結果とを監視し得る。
【００３５】
プリフェッチユニット１０８は、命令キャッシュ１０６内に格納するために、命令コードをメモリ６からプリフェッチし得る。図示の実施形態では、プリフェッチユニット１０８は、様々な特定的コードプリフェッチ技術およびアルゴリズムのうち２つ以上の異なる技術およびアルゴリズムを用い得る、ハイブリッドプリフェッチユニットである。プリフェッチユニット１０８によって実装されるプリフェッチアルゴリズムは、データがプリフェッチされレジスタおよび／またはキャッシュにロードされるアドレスを生成するために用いられ得る。プリフェッチユニット１０８は、生成されたアドレスのうちどのアドレスが、プリフェッチ動作の所与のインスタンスを実行するために用いられるのかを選択するために、調停を実行するように構成され得る。
【００３６】
上述のように、プロセッサコア１１は、Ｌ１データキャッシュおよびＬ１命令キャッシュを含み、少なくとも１つのＬ２キャッシュに関連付けられている。いくつかの事例では、個別のＬ２キャッシュは、それぞれデータおよび命令のために提供され得る。Ｌ１データキャッシュおよびＬ１命令キャッシュは、１つのメモリ階層の一部であり、当該階層内においてプロセッサコア１１のアーキテクチャレジスタの下位にあり得る。Ｌ２キャッシュは、メモリ階層においてＬ１データキャッシュおよびＬ１命令キャッシュの下位であり得る。明らかには図示しないが、Ｌ３キャッシュも存在し（複数のプロセッサコア１１間で共有され）得る。なおここでは、Ｌ３キャッシュはメモリ階層において全てのＬ２キャッシュの下位にある。メインメモリは、メモリ階層において様々なレベルのキャッシュメモリの下位にあり、ディスクストレージ（またはフラッシュストレージ）はメインメモリの下位にある。
【００３７】
図３は、代表的なキャッシュサブシステムの１つの実施形態を示すブロック図である。この特定の事例では、キャッシュサブシステムは、プロセッサコアのＬ２データキャッシュを対象とする。一方、ここで示す全般的な構成は、変更済みデータが対応するキャッシュに格納される任意のキャッシュサブシステムに適用され得る。
【００３８】
図示の実施形態では、キャッシュサブシステム２２０は、Ｌ２データキャッシュ２２９およびキャッシュコントローラ２２８を含む。Ｌ２データキャッシュは、データ（例えばオペランドなど）を格納するために用いられ得るキャッシュであり、様々な構成（例えばセットアソシアティブ方式、フルアソシアティブ方式またはダイレクトマップ方式など）で構成され得る。
【００３９】
キャッシュコントロール２２８は、読み出し動作および書き込み動作の両方のために、Ｌ２データキャッシュ２２９へのアクセスを制御するように構成され得る。図３に示す特定の実装では、キャッシュコントローラ２２８は、Ｌ２データキャッシュ２２９からデータを読み出し、当該データを、実行ユニット１２４（または特定の命令を実行するために、実行ユニットによりアクセスされるレジスタ）に提供し得る。また、キャッシュコントローラ２２８は、キャッシュラインに格納されたデータが古い場合、または、係るデータを削除して新規データを追加する場合に、キャッシュラインの追い出しも実行し得る。キャッシュコントローラ２２８は、データを、メモリ階層におけるより下位レベルにある記憶位置に書き込むために、他のキャッシュサブシステム（例えばＬ１キャッシュに対するキャッシュコントローラ）およびメモリコントローラとの通信も実行し得る。
【００４０】
図示の実施形態におけるキャッシュ制御ユニット２２８により提供される他の機能は、変更済みデータがＬ２データキャッシュ２２９にいつ書き込まれ、Ｌ２データキャッシュ２２９に独占的に記憶されことが可能であるかを制御することにある。キャッシュコントローラ２２８は、実行ユニット１２４により実行された命令から結果的に生成されたデータを受け取り、当該データをＬ２データキャッシュ２２９に書き込むことを制御し得る。この実施形態では、キャッシュコントローラ２２８は、キャッシュサブシステム２２０への電源が復旧すると、特定の期間にわたって変更済みデータがＬ２データキャッシュ２２９に独占的に書き込まれることを禁止し得る。すなわち、特定の期間にわたって、キャッシュコントローラ２２８は、メモリ階層においてさらに下位にある他の位置に変更済みデータが書き込まれない限り、変更済みデータがＬ２データキャッシュ２２９に書き込まれることを禁止してもよく、または、変更済みデータがＬ２データキャッシュ２２９に書き込まれることを完全に禁止してしもよい。
【００４１】
キャッシュコントローラが、Ｌ２データキャッシュ２２９における変更済みデータの独占的な書き込みおよび格納を禁止する期間は、閾値に基づいて決定され得る。閾値は、時間ベースであってもよいし、事象ベースであってもよい。図示の実施形態では、キャッシュコントローラ２２８は、キャッシュサブシステム２２０への電源が復旧したときからの時間を、所定の時間閾値に対して追跡するように構成されたタイマ２３２を含む。図示の実施形態におけるキャッシュコントローラ２２８は、所定の事象（例えば、変更済みデータが実行ユニットにより生成されること、命令が実行されること、または、メモリアクセスなど）の発生回数を計数および追跡するように構成されたイベントカウンタ２３４も含む。計数された事象の回数は、対応する閾値と比較され得る。様々な実施形態では、キャッシュコントローラ２２８が、タイマ２３２またはイベントカウンタ２３４のうち一方のみを含み得ることに留意されたい。概して、閾値を実装するための任意の好適な機構が、キャッシュコントローラ２２８の所与の実施形態に含まれ得る。
【００４２】
キャッシュサブシステム２２０の電源復旧後に閾値に到達または超過した場合に、キャッシュコントローラ２２８は、Ｌ１データキャッシュが、メモリ階層におけるより下位の位置に対して変更済みデータを独占的に格納するのを禁止することを中断し得る。閾値に到達した後に実行ユニット（または他のソース）が変更済みデータを発行した場合には、その追い出しの前にさらなるライトバックを要求することなく、変更済みデータがＬ２データキャッシュ２２９に書き込まれることになり得る。
【００４３】
いくつかの事例では、キャッシュサブシステム２２０またはその対応する機能ユニット（例えば上述のプロセッサコア１１など）の前に閾値に到達しない場合もある。係る場合には、キャッシュサブシステム２２０（およびその対応する機能ユニット）は、キャッシュサブシステム２２０から電源を遮断することにより、スリープ状態に置かれ得る。この場合、閾値に到達していないため、Ｌ２データキャッシュ２２９には変更済みデータが格納されていないことになる。したがって、変更済みデータがＬ２データキャッシュ２２９内に格納されていないので、キャッシュから変更済みデータを検索すること、または、検出された変更済みデータを、メモリ階層においてより下位の位置にライトバックすること、を行う必要がない。これにより、キャッシュを電源遮断する決定がなされた後にスリープ状態に入るのに必要な時間量が、顕著に短縮されることとなり得る。その結果、消費電力が低減され得る。さらに、高速にスリープ状態に入る機能またはスリープ状態から脱する機能は、キャッシュサブシステム（および対応する機能ユニット）が、短期的に実行されるタスクのために電源投入された後に、スリープ状態に入るために高速に再度電源遮断されることを可能にし得る。
【００４４】
図４は、電源が復旧して閾値に到達する前に、変更済みデータがキャッシュから除外されるキャッシュサブシステムを動作させるための方法の一実施形態のフローチャートである。本開示で説明する方法４００の実施形態は、プロセッサコアまたは（例えば上述の）他の種類の処理ノードに実装されるキャッシュサブシステムを対象とする。一方、キャッシュサブシステムが他の機能ユニットの一部として実装されるかどうか、または、他の機能ユニットとは別個に実装されるかどうかに関わらず、同様の方法体系が、任意のキャッシュサブシステムに適応され得る。
【００４５】
方法４００は、キャッシュサブシステムを含む処理ノードに対する電源の復旧から始まる（ブロック４０５）。処理ノードへの電源を復旧させると、命令の実行が始まり得る（ブロック４１０）。命令の実行は、実行ユニットまたは他の好適な回路により行われ得る。いくつかの事例では、命令の実行は、メモリからキャッシュへ事前に提供されたデータを変更し得る。しかし、閾値に到達する前までの時間にわたって、キャッシュコントローラは、キャッシュが、メモリ階層における他の記憶位置を除いて変更済みデータを記憶することを禁止し得る（ブロック４１５）。一実施形態では、このことは、変更済みデータを、キャッシュに書き込むことに加えて、メモリ階層において下位にある少なくとも１つの他の位置にも書き込むことによって、達成され得る。他の実施形態では、このことは、いかなる変更済みデータもキャッシュに書き込まれることを禁止する代わりに、メモリ階層のより下位レベルにある記憶位置に変更済みデータを強制的に書き込むことによって、達成され得る。メモリ階層のより下位位置を除いてキャッシュが変更済みデータを記憶するのを禁止することは、閾値に到達していない限り継続し得る。
【００４６】
閾値に到達せず（ブロック４２０にて「いいえ」）、且つ、処理ノードがアイドル状態ではない（ブロック４２５にて「いいえ」）場合には、処理が継続し得る（ブロック４３５）。閾値に到達せず（ブロック４２０にて「いいえ」）、且つ、処理ノードがアイドル状態である（ブロック４２５にて「はい」）場合には、処理ノードは、電源を遮断すること（ブロック４３０）により、スリープモードに置かれ得る。電源遮断の前に閾値に到達していないため、キャッシュへ独占的に記憶された変更済みデータをキャッシュから検索する必要がなく、係る変更済みデータを、メモリまたはメモリ階層のより下位レベルのキャッシュにライトバックする必要がない。したがって、スリープモードに入ることが、変更済みデータがキャッシュメモリ内に独占的に記憶されている場合よりも、より高速に達成され得る。
【００４７】
処理ノードがアイドル状態になる（ブロック４２５にて「はい」）前に閾値に到達した場合には、キャッシュコントローラは、変更済みデータがキャッシュメモリに独占的に記憶されるのを許可し得る。処理ノードがアイドル状態ではない（ブロック４２５）場合には、処理が継続し得る。なおここでは、キャッシュコントローラは、変更済みデータがキャッシュへ独占的に書き込まれるのを許可している。閾値に到達すると、処理ノードがアイドル状態になるまで、ブロック４２０は、「はい」経路上に保持され得ることに留意されたい。処理ノードがアイドル状態になる（ブロック４２５にて「はい」）と、電源が処理ノードから遮断され、処理ノードはスリープ状態に置かれ得る。しかし、処理ノードがアイドル状態になる前に閾値に到達しているため、スリープモードに入る前に、変更済みデータがキャッシュメモリから検索され得る。次に、キャッシュから検出された変更済みデータは、メモリまたはより下位レベルのキャッシュメモリにライトバックされ得る。
【００４８】
図５および図６は、ライトバイパスモードと呼ばれるモードにおけるキャッシュサブシステムの動作を示す。動作については、図３で説明したキャッシュサブシステム２２０の実施形態を参照して説明するが、ここで説明する方法体系は、キャッシュサブシステムの他の実施形態とともに実行される得ることに留意されたい。
【００４９】
図５に示すように、ライトバイパスモードで動作する場合には、キャッシュコントローラ２２８は、いかなる変更済みデータもＬ１データキャッシュ２２８に書き込まれるのを禁止し得る。変更済みデータは、特定の命令の実行中に実行ユニット（単数または複数）１２４により生成され得る（１）。キャッシュコントローラ２２８は、変更済みデータがＬ２データキャッシュ２２９に書き込まれるのを防止し得る（２）。代わって、変更済みデータは、より下位レベルのキャッシュメモリまたはメインメモリのうち少なくとも１つに書き込まれる（３）。したがって、Ｌ２データキャッシュ２２９は、ライトバイパスモードで動作中、いかなる変更済みデータも受け取らず格納しない。
【００５０】
図６は、ライトバイパスモードにおける動作をさらに図示する。方法５００は、キャッシュサブシステムへの電源を復旧する（例えばスリープ状態から出る）ことから始まる（ブロック５０５）。この方法は、いくつかの場合に変更済みデータを生成し得る命令を実行することをさらに含む（ブロック５１０）。変更済みデータが命令の実行に応答して生成された場合（ブロック５１５にて「はい」）、キャッシュコントローラは、変更済みデータが対応するキャッシュに書き込まれるのを禁止する代わりに、変更済みデータをより下位レベルのキャッシュまたはメインメモリに書き込むことを行い得る（ブロック５２０）。命令が変更済みデータを生成しない場合（ブロック５１５にて「いいえ」）、この方法はブロック５２５に進行し得る。
【００５１】
閾値に到達しておらず（ブロック５２５にて「いいえ」）、且つ、キャッシュサブシステムに関連付けられた処理ノードがアイドル状態ではない（ブロック５３０にて「いいえ」）場合には、この方法はブロック５１０に戻る。閾値に到達しておらず（ブロック５２５にて「いいえ」）、且つ、処理ノードがアイドル状態になった（ブロック５３０にて「はい」）場合には、キャッシュサブシステム（および対応する処理ノード）は、電源を遮断すること（ブロック５３５）によって、スリープ状態に置かれ得る。この事例では、閾値に到達していないので、キャッシュから変更済みデータを検索する必要がない。なぜならば、変更済みデータをキャッシュに書き込むことが禁止されているためである。
【００５２】
閾値に到達した（ブロック５２５にて「はい」）場合には、変更済みデータをキャッシュに書き込むことが許可される（ブロック５４０）一方で、処理は継続し得る。変更済みデータは、キャッシュ内に独占的に書き込まれ、格納され得る。キャッシュは、新規データのために追い出されるまで、または、キャッシュサブシステムの電源が遮断されるまで、変更済みデータの独占的格納を保持し得る。これら２つの事象のうちいずれか１つの事象が生じると、変更済みデータは、より下位レベルのキャッシュまたはメインメモリに書き込まれ得る。ブロック５４５において、処理ノードは、アイドル状態になるまで動作を継続し得る。アイドル状態に達すると、処理ノードから電源が遮断され得る（ブロック５３５）。
【００５３】
Ｌ２キャッシュが共有キャッシュ（すなわちデータおよび命令の両方を格納する）である実施形態では、ライトバイパスモードの変形例が実装され得る。係る実施形態では、閾値に到達する前には、Ｌ２キャッシュは、命令キャッシュとして独占的に動作し得る。したがって、閾値に到達していない場合、いかなるデータもＬ２キャッシュに書き込まれない。そのため、対応するキャッシュサブシステムがアイドル状態になるまでに閾値に到達しない場合には、キャッシュサブシステムは、Ｌ２キャッシュから変更済みデータを検索することなく、スリープ状態に置かれ得る。なぜならば、データがＬ２キャッシュに書き込まれていないためである。一方、キャッシュサブシステムがアイドル状態になる前に閾値に到達した場合には、以降のＬ２キャッシュへのデータ（変更済みデータおよび無変更データの両方）の書き込みが許可され得る。
【００５４】
図７および図８は、ライトスルーモードと呼ばれるモードにおけるキャッシュサブシステムの動作を示す。動作については、図３で説明したキャッシュサブシステム２２０の実施形態を参照して説明するが、ここで説明する方法体系は、キャッシュサブシステムの他の実施形態とともに実行される得ることに留意されたい。
【００５５】
図７に示すように、ライトスルーモードでの動作中におけるＬ１データキャッシュへの変更済みデータの書き込みは、メモリ階層においてさらに下位にある記憶位置に変更済みデータを追加的に書き込むことを伴い得る。変更済みデータは、特定の命令の実行中に実行ユニット１２４により生成され得る（１）。キャッシュコントローラ２２８は、変更済みデータをＬ２データキャッシュ２２９に書き込むことにより応答し得る（２）。加えて、変更済みデータは、メモリ階層においてさらに下位にある少なくとも１つの記憶位置（例えばより下位レベルのキャッシュまたはメインメモリ）にも書き込まれ得る（３）。変更済みデータがより下位レベルのキャッシュに書き込まれる場合、変更済みデータは、少なくとも２つの異なる位置に記憶されているので、Ｌ２データキャッシュ２２９に独占的に記憶されていない。変更済みデータがメモリにライトバックされる場合には、Ｌ２データキャッシュ２２９の対応するダーティビットがクリアされ、それによって、変更されたデータの状態が除去され得る。
【００５６】
ライトスルーモードにおける動作について、図８でさらに示す。方法７００は、キャッシュサブシステムへの電源を復旧する（例えばスリープ状態から出る）ことから始まる（ブロック７０５）。この方法は、いくつかの場合に変更済みデータを生成し得る命令を実行することをさらに含む（ブロック７１０）。変更済みデータが命令の実行に応答して生成された場合（ブロック７１５にて「はい」）、キャッシュコントローラは、変更済みデータが対応するキャッシュに書き込まれることを許可し、当該データを、より下位レベルのキャッシュまたはメインメモリに書き込ませ得る（ブロック７２０）。命令が変更済みデータを生成しない場合（ブロック７１５にて「いいえ」）、この方法はブロック７２５に進行し得る。
【００５７】
閾値に到達せず（ブロック７２５にて「いいえ」）、且つ、キャッシュサブシステムに関連付けられた処理ノードがアイドル状態ではない場合（ブロック７３０にて「いいえ」）、この方法はブロック７１０に戻る。閾値に到達せず（ブロック７２５にて「いいえ」）、且つ、処理ノードがアイドル状態になった場合（ブロック７３０にて「はい」）、キャッシュサブシステム（および対応する処理ノード）は、電源を遮断すること（ブロック７３５）によって、スリープ状態に置かれ得る。この事例では、閾値に到達していないために、キャッシュから変更済みデータを検索する必要がない。なぜならば、キャッシュに書き込まれたいかなる変更済みデータは、メモリ階層においてさらに下位にある少なくとも１つの記憶位置にも記憶されているためである。
【００５８】
閾値に到達した場合（ブロック７２５にて「はい」）、変更済みデータをキャッシュに書き込むのを許可する（ブロック７４０）一方で、処理が継続し得る。変更済みデータは、キャッシュ内に独占的に書き込まれ、格納され得る。キャッシュは、新規データのために追い出されるまで、または、キャッシュサブシステムの電源が遮断されるまで、変更済みデータの独占的格納を保持し得る。これら２つの事象のうちいずれか１つの事象が生じると、変更済みデータは、より下位レベルのキャッシュまたはメインメモリに書き込まれ得る。ブロック７４５において、処理ノードは、アイドル状態になるまで動作を継続し得る。アイドル状態に達すると、電源は、処理ノードから遮断され得る（ブロック７３５）。
【００５９】
次に図９を参照すると、システム１０を表すデータベース９０５を含むコンピュータアクセス可能記憶媒体９００のブロック図が示されている。概して、コンピュータアクセス可能記憶媒体９００は、使用中に命令および／またはデータをコンピュータに提供するためにコンピュータによりアクセス可能なあらゆる非一時的記憶媒体を含み得る。例えば、コンピュータアクセス可能記憶媒体９００は、磁気媒体または光媒体などの記憶媒体（例えば、ディスク（固定式もしくは着脱式）、テープ、ＣＤ−ＲＯＭもしくはＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、または、ブルーレイ（登録商標）など）を含み得る。さらに、記憶媒体は、ＲＡＭ（例えばシンクロナスダイナミックＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３など）ＳＤＲＡＭ、低消費電力ＤＤＲ（ＬＰＤＤＲ２など）ＳＤＲＡＭ、ラムバスＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）など）、ＲＯＭ、フラッシュメモリ、周辺機器インターフェース（例えば、汎用シリアルバス（ＵＳＢ）インターフェースなど）を介してアクセス可能な不揮発性メモリ（例えば、フラッシュメモリなど）などの、揮発性メモリ媒体または不揮発性メモリ媒体を含み得る。記憶媒体は、微小電気機械システム（ＭＥＭＳ）の他にも、通信媒体（例えば、ネットワークおよび／またはワイヤレスリンクなど）を介してアクセス可能な記憶媒体も含み得る。
【００６０】
全般に、コンピュータアクセス可能記憶媒体９００で送られるシステム１０および／またはシステム１０の一部を表すデータ９０５は、データベースであってもよいし、システム１０を含むハードウェアを製造するために直接的または間接的にプログラムによる読み出しおよび使用が可能な他のデータ構造であってもよい。例えば、データベース９０５は、ＶｅｒｉｌｏｇやＶＨＤＬなどの高位設計言語（ＨＤＬ）を用いたハードウェア機能に関する動作レベル記述またはレジスタ転送レベル（ＲＴＬ）記述であり得る。これらの記述は、合成ツールにより読み出されてもよく、合成ツールは、記述を合成して、合成ライブラリからのゲートの一覧を含むネットリストを作成する。ネットリストは、１組のゲートを含み、この１組のゲートも、システム１０を含むハードウェアの機能を表す。次に、ネットリストは、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置および経路設定され得る。次いで、マスクは、システム１０に対応する半導体回路を製造するための様々な半導体製造ステップにおいて用いられ得る。代替的に、コンピュータアクセス可能記憶媒体９００上のデータベース９０５は、ネットリスト（合成ライブラリを有する、もしくは、合成ライブラリを有さない）、データセット、または、所望によりグラフィックデータシステム（ＧＤＳ）ＩＩデータであり得る。
【００６１】
コンピュータアクセス可能記憶媒体９００は、システム１０の表現を運ぶ一方で、他の実施形態では、所望により、ＩＣ２、エージェント（例えば、処理コア１１、Ｉ／Ｏインターフェース１３、ノースブリッジ１２、キャッシュサブシステムなど）の任意の組、または、エージェントの一部を含むシステム１０の任意の一部の表現を運び得る。
【００６２】
本発明について特定の実施形態を参照して説明してきたが、これらの実施形態は例示を旨とするものであり、本発明の範囲がこれらの実施形態により限定されるものではないことを理解されたい。説明した実施形態に対する任意の変形、改変、追加、改善が可能である。これらの変形、改変、追加および改善は、以下の請求項において詳述される本発明の範囲に含まれ得る。
【図１】
2015515687.tif 000003
【図２】
2015515687.tif 000004
【図３】
2015515687.tif 000005
【図４】
2015515687.tif 000006
【図５】
2015515687.tif 000007
【図６】
2015515687.tif 000008
【図７】
2015515687.tif 000009
【図８】
2015515687.tif 000010
【図９】
2015515687.tif 000011
【手続補正書】
【提出日】平成27年3月30日(2015.3.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
キャッシュメモリに連結されるためのキャッシュコントローラを備えるキャッシュサブシステムであって、
前記キャッシュコントローラは、前記キャッシュサブシステムへの電源が復旧したことに応じて、変更済みデータを前記キャッシュメモリへ独占的に書き込むことを禁止するように構成されており、
前記キャッシュコントローラは、閾値に到達するまでは、変更済みデータが前記キャッシュメモリへ独占的に書き込まれるのを禁止するように構成されており、前記キャッシュコントローラは、前記閾値に到達した後に、変更済みデータが前記キャッシュメモリへ独占的に書き込まれるのを許可するようにさらに構成されている、
キャッシュサブシステム。
【請求項２】
前記キャッシュコントローラは、メモリ階層において前記キャッシュメモリよりも下位にある少なくとも１つの追加的な位置にも変更済みデータが書き込まれる場合には、電源復旧の後に前記変更済みデータを前記キャッシュメモリに書き込むように構成されている、請求項１に記載のキャッシュサブシステム。
【請求項３】
前記キャッシュコントローラは、変更済みデータがより下位レベルのキャッシュにも書き込まれる場合には、電源復旧の後に前記変更済みデータを前記キャッシュメモリに書き込むように構成されている、請求項２に記載のキャッシュサブシステム。
【請求項４】
前記キャッシュコントローラは、変更済みデータがメインメモリにも書き込まれる場合には、電源復旧の後に前記変更済みデータを前記キャッシュメモリに書き込むように構成されている、請求項２に記載のキャッシュサブシステム。
【請求項５】
前記キャッシュコントローラは、変更済みデータが前記キャッシュメモリに書き込まれることを禁止するように構成されており、変更済みデータを、メモリ階層において前記キャッシュメモリよりも下位にある少なくとも１つの追加的な位置に書き込むように構成されている、請求項１に記載のキャッシュサブシステム。
【請求項６】
前記キャッシュコントローラは、変更済みデータを、前記メモリ階層においてより下位レベルのキャッシュに書き込むように構成されている、請求項５に記載のキャッシュサブシステム。
【請求項７】
前記キャッシュコントローラは、変更済みデータを、メインメモリに書き込むように構成されている、請求項５に記載のキャッシュサブシステム。
【請求項８】
前記閾値は事象の数である、請求項１に記載のキャッシュサブシステム。
【請求項９】
前記事象は、変更済みデータを、メモリ階層における少なくとも１つの記憶ユニットに書き込むインスタンスである、請求項８に記載のキャッシュサブシステム。
【請求項１０】
前記閾値は、前記キャッシュサブシステムへの電源が復旧したときからの時間である、請求項１に記載のキャッシュサブシステム。
【請求項１１】
キャッシュサブシステムへの電源を復旧することと、
前記キャッシュサブシステムへの電源が復旧したことに応じて、変更済みデータが前記キャッシュメモリへ独占的に書き込まれるのをキャッシュコントローラによって禁止することと、を含む方法であって、
前記キャッシュコントローラが、閾値に到達する前に、変更済みデータを前記キャッシュメモリへ独占的に書き込むのを禁止することと、
前記キャッシュコントローラが、前記閾値に到達した後に、変更済みデータを前記キャッシュメモリへ独占的に書き込むのを許可することとをさらに含む方法。
【請求項１２】
前記閾値は、所定の事象数である、請求項１１に記載の方法。
【請求項１３】
前記事象は、変更済みデータを、メモリ階層における少なくとも１つの記憶ユニットに書き込むインスタンスである、請求項１２に記載の方法。
【請求項１４】
前記閾値は、前記キャッシュサブシステムへの電源が復旧したときからの時間である、請求項１１に記載の方法。
【請求項１５】
前記キャッシュサブシステムへの電源が復旧することと、前記閾値に到達することとの間の期間に、変更済みデータを、前記キャッシュメモリと、より下位レベルのキャッシュメモリおよびメインメモリのうち少なくとも１つと、に書き込むことをさらに含む、請求項１１に記載の方法。
【請求項１６】
変更済みデータが前記キャッシュメモリに書き込まれるのを禁止する一方で、変更済みデータを、メモリ階層において前記キャッシュメモリよりも下位にある少なくとも１つの追加的な位置に書き込むことをさらに含む、請求項１１に記載の方法。
【請求項１７】
前記少なくとも１つの追加的な位置は、より下位レベルのキャッシュメモリ内にある、請求項１６に記載の方法。
【請求項１８】
前記少なくとも１つの追加的な位置は、メインメモリ内にある、請求項１６に記載の方法。
【請求項１９】
前記閾値に到達する前にプロセッサコアがアイドル状態になることに応じて、前記キャッシュサブシステムを含む前記プロセッサコアから電源を遮断することをさらに含む、請求項１１に記載の方法。
【請求項２０】
少なくとも１つのプロセッサコアを有するプロセッサを備えるシステムであって、
前記少なくとも１つのプロセッサコアはキャッシュサブシステムを含み、
前記キャッシュサブシステムは、
第１キャッシュメモリと、
前記第１キャッシュメモリに連結されたキャッシュコントローラであって、前記第１プロセッサコアへの電源が復旧すると、変更済みデータを前記第１キャッシュメモリへ独占的に書き込むのを禁止するように構成されたキャッシュコントローラと、を含み、
前記キャッシュコントローラは、閾値に到達した場合に、変更済みデータを前記第１キャッシュメモリへ独占的に書き込むのを禁止することを中断するように構成されている、システム。
【請求項２１】
前記プロセッサは、メモリ階層において前記第１キャッシュメモリよりも下位にある第２キャッシュメモリをさらに含み、前記システムは、前記プロセッサに連結されたメインメモリを含み、前記メインメモリは、前記メモリ階層において前記第２キャッシュメモリよりも下位にある、請求項２０に記載のシステム。
【請求項２２】
前記キャッシュコントローラは、変更済みデータのブロックが前記第２キャッシュメモリおよび前記メインメモリのうち少なくとも１つに書き込まれる場合に、前記変更済みデータのブロックが前記第１キャッシュメモリに書き込まれるのを許可するように構成されている、請求項２１に記載のシステム。
【請求項２３】
前記少なくとも１つのプロセッサコアが変更済みデータのブロックを生成することに応じて、前記キャッシュコントローラは、前記変更済みデータのブロックが前記第１キャッシュメモリに書き込まれるのを禁止するように構成されており、前記プロセッサコアは、前記変更済みデータのブロックを、前記第２キャッシュメモリおよび前記メインメモリのうち少なくとも１つに書き込むように構成されている、請求項２１に記載のシステム。
【請求項２４】
電源管理ユニットをさらに含み、前記電源管理ユニットは、前記閾値に到達する前に前記少なくとも１つのプロセッサコアがアイドル状態になったと判定したことに応じて、前記少なくとも１つのプロセッサコアから電源を遮断するように構成されている、請求項２０に記載のシステム。
【請求項２５】
コンピュータシステム上で実行可能なプログラムにより操作されるデータ構造を含むコンピュータ可読記憶媒体であって、前記プログラムは、前記データ構造によって記述された回路を含む集積回路を製造するためのプロセスの一部を実行するために、前記データ構造上で動作し、前記データ構造によって記述された回路は、
キャッシュメモリに連結されたキャッシュコントローラであって、前記キャッシュサブシステムへの電源を復旧すると、変更済みデータを前記キャッシュメモリへ独占的に書き込むのを禁止するように構成されたキャッシュコントローラを含み、
前記データ構造によって記述された前記キャッシュコントローラは、閾値に到達したことに応じて、変更済みデータを前記キャッシュメモリへ独占的に書き込むのを禁止することを中断するように構成されている、
コンピュータ可読記憶媒体。
【請求項２６】
前記データ構造は、
ＨＤＬ（高位設計言語）データ、
ＲＴＬ（レジスタ転送レベル）データ、および
グラフィックデータシステム（ＧＤＳ）ＩＩデータ
のうち１つ以上の種類を含む、請求項２５に記載のコンピュータ可読記憶媒体。
【国際調査報告】
2015515687.tif 000012
2015515687.tif 000013
2015515687.tif 000014