様々な態様を、添付図面を参照して詳細に説明する。可能な場合には必ず、同一のまたは同様の部分を参照するために図面全体を通じて同一の参照番号が使用される。特定の例および実施態様に対して行われる言及は、説明を目的とし、本発明の範囲または特許請求の範囲を限定することは意図されていない。
「コンピューティングデバイス」および「モバイルデバイス」という用語は、セルラー電話機、スマートフォン、パーソナルまたはモバイルのマルチメディアプレイヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メールレシーバ、マルチメディアインターネット対応セルラー電話機、ワイヤレスゲーミングコントローラ、ならびにメモリおよびプログラマブルプロセッサを含む同様のパーソナル電子デバイスのうちのいずれか1つまたはすべてを指すのに、本明細書内で交換可能に使用される。様々な態様は、制限されたエネルギーリソースを有するスマートフォンなどのモバイルコンピューティングデバイスに特に有用であるが、諸態様は、メモリデバイスの電力消費の削減がモバイルコンピューティングデバイスのバッテリー動作時間を延長することができる、複数のメモリデバイスおよび制限されたエネルギーバジェットを実施するすべての電子デバイスにおいて全般的に有用である。
「システムオンチップ」(SoC)という用語は、排他的にではなく通常、ハードウェアコア、メモリ、および通信インターフェースを含む相互接続された電子回路のセットを指すのに本明細書内で使用される。ハードウェアコアは、汎用プロセッサ、中央処理装置(CPU)、デジタル信号プロセッサ(DSP)、グラフィックス処理ユニット(GPU)、アクセラレーテッドプロセッシングユニット(APU:accelerated processing unit)、補助プロセッサ、シングルコアプロセッサ、およびマルチコアプロセッサなどの様々な異なるタイプのプロセッサを含むことができる。ハードウェアコアは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASCI)、他のプログラマブル論理デバイス、ディスクリートゲート論理、トランジスタ論理、性能監視ハードウェア、ウォッチドッグハードウェア、および時間基準などの他のハードウェアおよびハードウェアの組合せをさらに実施することができる。集積回路は、集積回路のコンポーネントがシリコンなどの単体の半導体材料上に存在するように構成され得る。
一態様において、キャッシュをパーティショニングするための方法は、キャッシュウェイおよびキャッシュセットにまたがるパーティショニングが、コンポーネントキャッシュを作成するための従来の方法を用いて達成可能であるものより小さいコンポーネントキャッシュであるコンポーネントキャッシュを作成することを可能にする。コンポーネントキャッシュ構成テーブルは、セットの総数またはサイズに関するパラメータ、コンポーネントキャッシュが占有するセットの位置、コンポーネントキャッシュが占有するウェイ、コンポーネントキャッシュがカスタムインデックス(たとえば、仮想アドレスから導出される)または物理アドレスから導出されるセットインデックス(インデックスモード)のどちらを使用してアクセスされるのか、およびコンポーネントキャッシュの置換ポリシーを含む、コンポーネントキャッシュの特徴を定義する各コンポーネントキャッシュのパラメータを記憶することができる。コンポーネントキャッシュ構成テーブルは、クライアントがキャッシュアクセスを要求する時に動的に投入され得、あるいは、コンポーネントキャッシュ構成テーブルは、ブート時に投入され、複数のコンポーネントキャッシュを定義し、ランタイムに静的なままになることができる。各コンポーネントキャッシュは、コンポーネントキャッシュ構成テーブル内のコンポーネントキャッシュ識別子のパラメータのグループに対応するコンポーネントキャッシュ識別子を与えられる。
ウェイおよびセットによってパーティショニングされたコンポーネントキャッシュにアクセスするために、クライアントは、バス相互接続を介して、コンポーネントキャッシュにパーティショニングされたシステムキャッシュへのアクセスを要求することができる。アクセス要求は、システムメモリ内の物理アドレスおよびコンポーネントキャッシュ識別子を含むことができる。システムキャッシュコントローラは、コンポーネントキャッシュ構成テーブル内でコンポーネントキャッシュ識別子のパラメータをルックアップすることができる。システムキャッシュ内のセットの個数またはサイズを定義するパラメータ、コンポーネントキャッシュがシステムキャッシュ内で占有するセットの位置、およびコンポーネントキャッシュのインデックスモードが、コンポーネントキャッシュ構成テーブルから読み取られ得る。システムキャッシュコントローラは、システムキャッシュアクセスのセットインデックスおよびタグを計算することができる。インデックスモードは、システムキャッシュ内の位置を計算するのに物理アドレスが使用されるか、それともカスタムインデックスが使用されるかを決定することができる。どちらの場合でも、オフセットは、物理アドレスの複数の最下位ビットから直接にまたはカスタムインデックスから導出され得る。セットの個数またはサイズを示すパラメータによって決定される物理アドレスの中央部分のいくつかのビットは、破棄され得、破棄されるビットは、セットインデックスを決定するためにコンポーネントキャッシュが占有するセットの位置を示すパラメータによって置換され得る。物理アドレスの新たに形成される中央部分のビットは、並べ変えられ得る。タグは、破棄されるビットを付加された物理アドレスの最上位ビットを含むことができる。
システムキャッシュコントローラは、ランタイムにコンポーネントキャッシュ(システムキャッシュの諸部分)をインスタンス化することができる。キャッシュメモリコントローラは、デバイスのクライアントのタスク要求に基づいて、コンポーネントキャッシュをアクティブ化し、非アクティブ化することができる。クライアントは、タスクのためのコンポーネントキャッシュのアクティブ化を要求することができ、コンポーネントキャッシュアクティブ化/非アクティブ化制御コマンドレジスタは、コンポーネントキャッシュアクティブ化に関するパラメータをシステムキャッシュコントローラに送ることができる。レジスタ内に記憶されたこれらのパラメータは、動作をトリガするビット、コンポーネントキャッシュをアクティブ化し、非アクティブ化する動作コード、コンポーネントキャッシュの構成を識別するのに使用され得るコンポーネントキャッシュ識別子、コンポーネントキャッシュ内で使用されるターゲットウェイを指定するターゲットウェイパラメータ、およびターゲットウェイに動作情報を適用するビットを含むことができる。
コンポーネントキャッシュのアクティブ化は、コンポーネントキャッシュの予約をもたらすことができる。アクティブ化は、タスクに関するクライアントによる使用のために指定されるキャッシュウェイを指定することができる。システムキャッシュコントローラは、要求するクライアントによる使用のために、コンポーネントキャッシュ、特にコンポーネントキャッシュの指定されたウェイに対応するシステムキャッシュのラインを予約することができる。予約は、キャッシュコントローラが、キャッシュのセクションがコンポーネントキャッシュをアクティブ化するマスタのために予約されることを注記するために予約ビットをセットすることをもたらすことができる。コンポーネントキャッシュのキャッシュラインは、マスタがコンポーネントキャッシュにターゲティングされた書込を発行する時に、書き込まれ得る。コンポーネントキャッシュの予約は、コンポーネントキャッシュの予約されたラインにデータを書き込むことを望む他のクライアントとの衝突を回避する。コンポーネントキャッシュアクティブウェイテーブルは、アクティブであるキャッシュウェイを示すのに使用され、同一の占有されたコンポーネントキャッシュにラインを割り振る試みによるクライアント衝突を回避するのに使用され得る。コンポーネントキャッシュアクティブ/非アクティブ制御状況レジスタは、タスクが完了するかどうかを示すことができる。ターゲティングされたキャッシュウェイによって部分的に指定される、コンポーネントキャッシュの予約された空間は、タスクがより多いまたはより少ないキャッシュメモリを要求する時にクライアントのタスクをサポートするために動的に変更され得る。タスクの完了時に、キャッシュメモリコントローラは、コンポーネントキャッシュを非アクティブ化し、サブキャッシュの以前に予約されていたセクションを、任意のクライアントが使用するために使用可能にすることができる。コンポーネントキャッシュは、システムキャッシュの連続する部分を占有することができ、あるいは、システムキャッシュの不連続な部分を占有することができる。
図1に、様々な態様と共に使用するのに適する、リモートコンピューティングデバイス50と通信しているコンピューティングデバイス10を含むシステムを示す。コンピューティングデバイス10は、プロセッサ14、メモリ16、通信インターフェース18、およびストレージインターフェース20を含むSoC 12を含むことができる。コンピューティングデバイスは、有線モデムもしくはワイヤレスモデムなどの通信コンポーネント22、ストレージコンポーネント24、ワイヤレスネットワーク30へのワイヤレス接続32を確立するためのアンテナ26、および/またはインターネット40への有線接続44に接続するためのネットワークインターフェース28をさらに含むことができる。プロセッサ14は、様々なハードウェアコアのいずれか、ならびにいくつかのプロセッサコアを含むことができる。SoC 12は、1つまたは複数のプロセッサ14を含むことができる。コンピューティングデバイス10は、SoC 12より多くを含み、これによって、プロセッサ14およびプロセッサコアの数を増加させることができる。コンピューティングデバイス10は、SoC 12に関連付けられていないプロセッサコア14を含むことができる。個々のプロセッサ14は、図2を参照して下で説明されるマルチコアプロセッサとすることができる。プロセッサ14は、それぞれ、コンピューティングデバイス10の他のプロセッサ14と同一であっても異なっていてもよい特定の目的のために構成され得る。同一のまたは異なる構成のプロセッサ14およびプロセッサコアのうちの1つまたは複数は、下で図3を参照して説明されるコンピューティングデバイス10の1つまたは複数のサブシステムの一部として一緒にグループ化され得る。
SoC 12のメモリ16は、プロセッサ14によるアクセスのためにデータおよびプロセッサ実行可能コードを記憶するように構成された、揮発性または不揮発性のメモリとすることができる。一態様では、メモリ16は、図5、図13、および図14を参照して下で説明される、セットおよびウェイによってパーティショニングされたキャッシュメモリのコンポーネントキャッシュを管理するためのテーブルなどのデータ構造を少なくとも一時的に記憶するように構成され得る。下でさらに詳細に議論するように、プロセッサコアの各々は、キャッシュメモリの様々なコンポーネントキャッシュにアクセスすることができる。
コンピューティングデバイス10および/またはSoC 12は、様々な目的のために構成された1つまたは複数のメモリ16を含むことができる。一態様において1つまたは複数のメモリ16は、データ構造情報が、プロセッサ14によるコンポーネントキャッシュアクセス要求を管理するためにアクセスされることを可能にする形で、コンポーネントキャッシュ情報を記憶するためのデータ構造を記憶することに専用になるように構成され得る。データ構造を記憶するメモリ16が、不揮発性である時には、メモリ16は、コンピューティングデバイス10の電力がシャットオフされた後であってもデータ構造の情報を保持することができる。電力がオンに戻され、コンピューティングデバイス10がリブートする時に、不揮発性メモリ16内に記憶されたデータ構造の情報は、コンピューティングデバイス10から使用可能にされ得る。
通信インターフェース18、通信コンポーネント22、アンテナ26、および/またはネットワークインターフェース28は、コンピューティングデバイス10がワイヤレス接続32および/または有線ネットワーク44を介してワイヤレスネットワーク30上でリモートコンピューティングデバイス50と通信することを可能にするために協調して働くことができる。ワイヤレスネットワーク30は、コンピューティングデバイス10がそれによってリモートコンピューティングデバイス50とデータを交換することができるインターネット40へのコンピューティングデバイス10に接続を提供するために、たとえばワイヤレス通信に使用される無線周波数スペクトルを含む、様々なワイヤレス通信技術を使用して実施され得る。
ストレージインターフェース20およびストレージコンポーネント24は、コンピューティングデバイス10が不揮発性記憶媒体上にデータを記憶することを可能にするために、協調して働くことができる。ストレージコンポーネント24は、データ構造情報が1つまたは複数のプロセッサ14によってアクセスされ得るように、ストレージコンポーネント24がデータ構造を記憶することができるメモリ16の一態様とほとんど同様に構成され得る。不揮発性であるストレージコンポーネント24は、コンピューティングデバイス10の電力が切断された後であってもデータ構造情報を保持することができる。電力がオンに戻され、コンピューティングデバイス10がリブートする時に、ストレージコンポーネント24上に記憶されたデータ構造情報は、コンピューティングデバイス10から使用可能にされ得る。ストレージインターフェース20は、ストレージコンポーネント24へのアクセスを制御し、プロセッサ14がストレージコンポーネント24からデータを読み取り、ストレージコンポーネント24にデータを書き込むことを可能にすることができる。
コンピューティングデバイス10のコンポーネントのいくつかまたはすべては、依然として必要な機能を果たしながら、異なって配置され、かつ/または結合され得る。その上、コンピューティングデバイス10は、コンポーネントの各々の1つに限定されないものとすることができ、各コンポーネントの複数のインスタンスは、コンピューティングデバイス10の様々な構成に含まれ得る。
図2に、一態様を実施するのに適するマルチコアプロセッサ14を示す。マルチコアプロセッサ14は、複数の同等のプロセッサコア200、201、202、203を有することができる。プロセッサコア200、201、202、203は、単一のプロセッサ14のプロセッサコア200、201、202、203が同一の目的のために構成され、同一のまたは類似する性能特性を有するように構成され得るという点で、同等とすることができる。たとえば、プロセッサ14は、汎用プロセッサとすることができ、プロセッサコア200、201、202、203は、同等の汎用プロセッサコアとすることができる。代替案では、プロセッサ14は、グラフィックス処理ユニットまたはデジタル信号プロセッサとすることができ、プロセッサコア200、201、202、203は、それぞれ、同等のグラフィックスプロセッサコアまたはデジタル信号プロセッサコアとすることができる。製造プロセスおよび材料の変化を介して、プロセッサコア200、201、202、203の性能特性は、同一のマルチコアプロセッサ14内または同一の設計を有するプロセッサコアを使用する別のマルチコアプロセッサ14内で、プロセッサコアごとに異なることができる。図2に示された例では、マルチコアプロセッサ14は、4つのプロセッサコア200、201、202、203(すなわち、プロセッサコア0、プロセッサコア1、プロセッサコア2、およびプロセッサコア3)を含む。説明を容易にするために、本明細書の例は、図2に示された4つのプロセッサコア200、201、202、203を参照することができる。しかし、図2に示され、本明細書で説明される4つのプロセッサコア200、201、202、203が、単に例として提供され、限定的であることが全く意図されていないことに留意されたい。コンピューティングデバイス10、SoC 12、またはマルチコアプロセッサ14は、図示され本明細書で説明される4つのプロセッサコア200、201、202、203よりも少数またはより多数のプロセッサコアを個々にまたは組合せで含むことができる。
図3に、セットおよびウェイによってキャッシュメモリをコンポーネントキャッシュにパーティショニングするように構成されたコンピューティングデバイスを示す。SoC 12は、上で説明された様々コンポーネントを含むことができる。いくつかのそのようなコンポーネントおよび追加のコンポーネントが、コンポーネントキャッシュを実施するのに使用され得る。たとえば、コンポーネントキャッシュを実施するように構成されたSoC 12は、システムハブ300、システムキャッシュ302、システムキャッシュコントローラ304、CPUクラスタ306、プロトコルコンバータ308、GPU 310、モデムDSP 312、アプリケーションDSP 314、メモリインターフェース316、カメラサブシステム318、ビデオサブシステム320、ディスプレイサブシステム322、システムネットワークオンチップ(NoC) 324、メモリコントローラ326、およびランダムアクセスメモリ(RAM) 328を含むことができる。システムハブ300は、様々なプロセッサ308、310、312、314による様々なメモリへのアクセスを管理する、SoC 12のコンポーネントとすることができる。一態様において、システムハブ300は、SoC 12のシステムキャッシュ302へのおよびRAM 328へのアクセスを管理することができる。様々なメモリにアクセスすることができるプロセッサのうちのいくつかは、CPUクラスタ306内ならびにカメラサブシステム318、ビデオサブシステム320、およびディスプレイサブシステム322などの様々なサブシステム内に含まれ得、GPU 310、モデムDSP 312、およびアプリケーションDSP 314などの他の特殊化されたプロセッサを含むこともできる。
システムキャッシュ302は、様々なプロセッサおよび/またはサブシステムに関連付けられ得るキャッシュメモリを置換しまたは増補するのに使用される、SoC 12内の共有されるメモリデバイスとすることができる。システムキャッシュ302は、様々なプロセッサおよびサブシステムが繰り返されるアクセスおよび/またはすばやいアクセスのために指定されたプログラムコマンドおよびデータを読み取り、書き込むためにシステムキャッシュ302にアクセスできるようにするために、SoC 12のキャッシュメモリリソースを集中化することができる。システムキャッシュ302は、様々なプロセッサおよびサブシステムから、ならびに、メインメモリ、RAM 328、およびストレージデバイス(たとえば、ハードディスク(disk)ドライブ)などのコンピューティングデバイスの他のメモリからも、データを記憶することができる。一態様において、システムキャッシュ302は、システムキャッシュ302に要求されたアイテムをロードできないのでキャッシュミスが発生する場合に、そのようなメモリおよびストレージデバイスによってバックアップされ得る。一態様において、システムキャッシュ302は、様々なプロセッサおよびサブシステムのためのスクラッチパッドメモリとして使用され得る。システムキャッシュ302は、システムキャッシュ302を使用しない同様のアーキテクチャのSoCのローカルキャッシュメモリの組合せより、記憶空間および物理サイズにおいて小さいものとすることができる。しかしながら、本明細書でさらに説明されるシステムキャッシュ302の管理は、システムキャッシュのより小さい記憶空間および物理サイズにもかかわらず、より多くのエネルギー節約および同等以上のSoC 12の性能速度を可能にすることができる。
システムキャッシュコントローラ304は、様々なプロセッサおよびサブシステムによるシステムキャッシュ302へのアクセスを管理することができる。システムキャッシュ302のアクセス管理の一部は、ウェイとセットとの両方によるシステムキャッシュメモリ空間のパーティショニングを含むことができる。ウェイとセットとの両方によるシステムキャッシュメモリ空間のパーティショニングは、システムキャッシュメモリ空間を、様々なサイズおよびシステムキャッシュメモリ空間内の位置のコンポーネントキャッシュへのパーティショニングをもたらすことができる。システムキャッシュコントローラ304は、本明細書でさらに説明されるように、これらのコンポーネントキャッシュのレコードを維持し、様々な特色/特徴/パラメータをコンポーネントキャッシュの各々に関係付けることができる。
システムキャッシュコントローラ304は、特定のコンポーネントキャッシュを指定するシステムキャッシュアクセス要求を受け取ることができる。システムキャッシュアクセス要求は、システムキャッシュアクセス要求のコンポーネントキャッシュの特色をも含むことができる。一態様において、コンポーネントキャッシュの特色は、システムキャッシュコントローラ304によって、同一の通信バス上または異なる通信バス上で、コンポーネントキャッシュ構成要求内で別々に受け取られ得る。コンポーネントキャッシュ構成要求は、独立型の信号とすることができ、あるいは、システムキャッシュアクセス要求に関連付けられ得る。コンポーネントキャッシュ構成要求は、システムキャッシュコントローラ304によって、システムキャッシュアクセス要求のコンポーネントとして受け取られ得る。説明の簡単さのために、以下の例は、システムキャッシュアクセス要求の一部として受け取られるコンポーネントキャッシュ特色に関して説明されるが、これは、システムキャッシュコントローラ304がそれによってコンポーネントキャッシュ特色を受け取ることができる形を限定することを意図されたものではない。コンポーネントキャッシュ特色が、様々な関連する信号または独立の信号を介して受け取られ得ることを理解されたい。
システムキャッシュコントローラ304は、コンポーネントキャッシュおよびこれに関するレコードへのアクセスを制御し、更新し、かつ/または作成するために、指定されたコンポーネントキャッシュおよび関係する特色の情報を使用することができる。一態様において、システムキャッシュコントローラ304は、システムキャッシュ302のクライアントからのシステムキャッシュアクセス要求に基づいて、システムキャッシュメモリ空間をコンポーネントキャッシュに動的にパーティショニングすることができる。これらのクライアントは、SoC 12の様々なプロセッサおよびサブシステムを含むことができる。
CPUクラスタ306は、複数の汎用プロセッサおよび/または汎用プロセッサコアのグループ化を含むことができる。CPUクラスタ306は、システムキャッシュコントローラ304を介してシステムキャッシュ302にアクセスすることができる。CPUクラスタ306とシステムキャッシュコントローラ304との間の通信は、それらの間のインターオペラビリティを達成するために、プロトコルコンバータ308によって、CPUクラスタ306とシステムキャッシュコントローラ304とのうちの一方の標準プロトコルまたはプロプライエタリプロトコルから他方に適するプロトコルに変換される。CPUクラスタ306は、特定のコンポーネントキャッシュおよび/または指定されたコンポーネントキャッシュの特色を指定するシステムキャッシュアクセス要求をシステムキャッシュコントローラ304に送ることができる。返報として、システムキャッシュコントローラは、指定されたコンポーネントキャッシュのレコードを更新し、かつ/または作成し、指定されたコンポーネントキャッシュへのアクセスを許可しまたは拒否し、指定されたコンポーネントキャッシュ内に記憶された情報をCPUクラスタ306に返す。
CPUクラスタ306に似て、GPU 310、モデムDSP 312、およびアプリケーションDSP 314などの特殊化されたプロセッサは、システムキャッシュコントローラ304を介してシステムキャッシュ302にアクセスすることができる。特殊化されたプロセッサ310、312、314、およびシステムキャッシュコントローラ304の間の通信は、専用の個々のメモリインターフェース316によって管理され得る。一態様において、メモリインターフェース316は、複数の同様のまたは異なる特殊化されたプロセッサ310、312、314、およびシステムキャッシュコントローラ304の間の通信を管理することができる。
カメラサブシステム318、ビデオサブシステム320、およびディスプレイサブシステム322などの様々なサブシステムは、システムキャッシュコントローラ304およびメモリインターフェース316を介してシステムキャッシュ302に同様にアクセスすることができる。NoC 324は、サブシステム318、320、322、およびシステムハブ300ならびにSoC 12の他のコンポーネントの間の通信トラフィックを管理することができる。
システムキャッシュコントローラ304は、SoC 12の様々なプロセッサおよびサブシステムによるRAM 328へのアクセスをも管理することができる。様々なプロセッサおよびサブシステムは、メモリコントローラ326を介してRAM 328の直接アクセス要求を行うことができるが、ある種の場合に、システムキャッシュアクセス要求は、RAM 328に向けられ得る。一態様において、システムキャッシュアクセス要求は、指定されたコンポーネントキャッシュに要求された情報が、指定されたコンポーネントキャッシュ内に見つからない時に、キャッシュミスをもたらす可能性がある。その結果、システムキャッシュコントローラ304は、コンポーネントキャッシュ内で見つからなかった要求された情報を取り出すために、システムキャッシュアクセス要求をRAM 328に向けることができる。一態様において、RAM 328に向けられた情報の要求は、まず、RAM 328へのアクセスを制御することができるメモリコントローラ326に向けられる。RAM 328に向けられた情報の要求は、システムキャッシュコントローラ304によって送られ得、結果の情報は、コンポーネントキャッシュへの書込のためにシステムキャッシュコントローラ304に返され、コンポーネントキャッシュからシステムキャッシュアクセス要求を行ったコンポーネントに返され得る。一態様において、結果の情報は、直接にまたはシステムキャッシュコントローラ304を介して、コンポーネントキャッシュへの書込なしで、システムキャッシュアクセス要求を行ったコンポーネントに返され得る。
いくつかの態様において、キャッシュメモリコントローラ304は、態様方法の動作を実行するために、ファームウェア内で実施され、構成される。いくつかの態様において、キャッシュメモリコントローラ304は、態様方法の動作を実行するために、コントローラ実行可能命令によって構成されるプログラマブルコントローラとされ得る。いくつかの態様において、キャッシュメモリコントローラ304は、態様方法の動作を実行するために、ファームウェアとコントローラ実行可能命令との組合せを介して実施され、構成され得る。
SoC 12およびその様々なコンポーネントの本明細書での説明は、例示的であることだけを意図され、決して限定的ではない。SoC 12のコンポーネントのうちの複数が、可変に構成され、組み合わされ、分離され得る。コンポーネントのうちの複数が、より多数またはより少数で含まれ得、SoC 12内でまたはSoC 12とは別々に、異なって配置され、接続され得る。同様に、他のメモリ、プロセッサ、サブシステム、インターフェース、およびコントローラなどの多数の他のコンポーネントが、システムキャッシュ302にアクセスするために、SoC 12内に含まれ、システムキャッシュコントローラ304と通信していることが可能である。
図4に、コンポーネントキャッシュを可能にするためにセットおよびウェイによって可変にパーティショニングされた例のシステムキャッシュメモリを示す。上で図3で説明されたシステムキャッシュなどのシステムキャッシュ400は、複数のウェイ402、404、406、408、410、412、414、および416と、N個のセット418とを含むように構成され得、ここでNは正の整数である。システムキャッシュ400をウェイ402〜416によって分割することが、既知である。この例において、システムキャッシュ400は、8つのウェイ402〜416を含み、8つのウェイ402〜416の各々によるシステムキャッシュ400の分割は、それぞれが1つのウェイ402〜416とそれぞれのウェイ402〜416のN個のセット418のすべてとを含む8つのパーティションを有するパーティショニングされたシステムキャッシュ400をもたらすことになる。一態様において、システムキャッシュ400は、ウェイ402〜416のグループを使用してもパーティショニングされ得る。8つのウェイ402〜416を有するシステムキャッシュ400の例を継続すると、各パーティションは、4つのパーティションをもたらすウェイ402〜416のうちの2つ、または2つのパーティションをもたらすウェイ402〜416のうちの4つを含むことができる。
コンポーネントキャッシュを作成するために、システムキャッシュ400は、N個のセットの定義されたグループによってさらにパーティショニングされる。一態様において、システムキャッシュコントローラによって使用されるコンポーネントキャッシュの特色は、N個のセットが何個のセットグループにパーティショニングされ得るのかを決定することができる。一態様において、この特色は、セットシフト特色と呼ばれる場合がある。たとえば、システムキャッシュ400は、セットグループにパーティショニングされず、したがって、セットシフト特色は、ヌル値または0など、セットグループによるパーティショニングがないことを示す値とすることができる。別の例において、システムキャッシュ420は、2つのセットグループ422、424にパーティショニングされ得る。システムキャッシュ420は、システムキャッシュ400と同一のシステムキャッシュであるが、システムキャッシュ420は、セットシフト特色が、2つのセットグループ422、424によるパーティショニングを示す値である時のシステムキャッシュ400を示す。システムキャッシュ420に関して、システムキャッシュコントローラは、2つのセットグループ422、424によるシステムキャッシュ420のパーティションによって作成された余分のコンポーネントキャッシュを使用してシステムキャッシュメモリ空間の使用を管理することができる。コンポーネントキャッシュは、本明細書でさらに詳細に説明されるように、ウェイパーティションおよびセットグループパーティションの任意の組合せによって作成されるシステムキャッシュ420のパーティションを含むことができる。
同様に、システムキャッシュ430は、システムキャッシュ430が、セットシフト特色が4つのセットグループ432、434、436、438によるパーティショニングを示す値である時のシステムキャッシュ400を示すことを除いて、システムキャッシュ400と同一とすることができる。同様に、システムキャッシュ440は、セットシフト特色が8つのセットグループ442、444、446、448、450、452、454、456によるパーティショニングを示す値である時のシステムキャッシュ400を示す。図4に示されたこれらの例のシステムキャッシュ430および440の各々において、システムキャッシュコントローラは、4つのセットグループ432、434、436、438または8つのセットグループ442〜456によってシステムキャッシュ430および440をパーティショニングすることによって作成された余分のコンポーネントキャッシュを使用してシステムキャッシュメモリ空間の使用を管理することができる。これらの例のコンポーネントキャッシュは、本明細書でさらに説明されるように、ウェイパーティションおよびセットグループパーティションの任意の組合せによって作成されるシステムキャッシュ430、440のパーティションを含むことができる。
様々な形の表記が、整数などのセットシフト特色を示すのに使用され得る。一態様において、システムキャッシュメモリ空間がそれによってパーティショニングされるセットグループの個数を示すセットシフト特色は、セットグループの個数の増分変化を示すことができる。たとえば、セットグループの個数の次に大きい変化を示すためのセットシフト特色値の変化は、セットグループの個数を加算し、乗算し、指数関数的に増加させ、またはなんらかの他の関数によって増加させることの増分変化を示すことができる。図4の例に関して、セットグループの個数は、2のべきであり、そのべきが、セットシフト特色である。セットグループは、サイズにおいて等しいものとすることができ、1セットグループあたりのセットの個数も、2のべきとすることができる。セットの個数を別の数のべきにすることができることが考えられ、これは、下でさらに説明されるように、セットインデックスを計算するように異なって構成された(整数2の非べきによる除算など)なんらかのハードウェアを必要とする可能性がある。
一態様において、システムキャッシュコントローラによって使用されるコンポーネントキャッシュの特色は、コンポーネントキャッシュが422、424、432、434、436、438、442、444、446、448、450、452、454、456のうちのどのセットグループに配置されるのかを決定することができる。一態様において、この特色は、セットオフセット特色と呼ばれる場合がある。様々な形の表記が、セットオフセット特色を示すのに使用され得る。
本明細書で説明される例のセットグループを継続すると、説明されるセットグループの総数は、セット418のN個をカウントせずに、14個である。この例に関して、セットオフセット特色は、3ビットの2進コードとすることができ、ここにおいて、セットグループが実施されない時にはセットオフセット特色は不必要である。2つのセットグループが実施される時には、セットグループ422、424は、それぞれセットオフセット特色=000および100に相関する。4つのセットグループが実施される時には、セットグループ432、434、436、438は、それぞれセットオフセット特色=000、010、100、および110に相関することができる。同様に、8つのセットグループが実施される時には、セットグループ442〜456は、それぞれセットオフセット特色=000、001、010、011、100、101、110、および111に相関することができる。
図5に、様々なコンポーネントキャッシュの特色を管理するのにシステムキャッシュコントローラによって使用され得るコンポーネントキャッシュ構成テーブル500を示す。コンポーネントキャッシュ構成テーブル500は、コンポーネントキャッシュ識別子フィールド502、有効性インジケータ特色フィールド504、セットシフト特色フィールド506、セットオフセット特色フィールド508、ターゲットウェイ特色フィールド510、全ウェイプローブ特色フィールド512、インデックスモード特色フィールド514、置換ポリシー特色フィールド516、およびキャッシュラインサイズ特色フィールド528を含むことができる。システムキャッシュの各コンポーネントキャッシュは、コンポーネントキャッシュ識別子フィールド502内に示されているように、個々のコンポーネントキャッシュ識別子に相関され得る。
コンポーネントキャッシュ識別子は、SoC上のクライアントからのシステムキャッシュアクセス要求内でシステムキャッシュコントローラによって受け取られ、システムキャッシュアクセス要求を正しいコンポーネントキャッシュおよびその特色と一致させるのにシステムキャッシュコントローラによって使用され得る。一態様において、コンポーネントキャッシュ構成テーブル500内に存在しないコンポーネントキャッシュ識別子が受け取られる時に、システムキャッシュコントローラは、受け取られたコンポーネントキャッシュ識別子を含めるためにコンポーネントキャッシュ構成テーブル500を更新することができる。
一態様では、受け取られたコンポーネントキャッシュ識別子は、コンポーネントキャッシュ構成テーブル500内に存在することができるが、コンポーネントキャッシュ識別子に相関された他のコンポーネントキャッシュ特色のうちの1つまたは複数が、受け取られたコンポーネントキャッシュ特色を受け取られたコンポーネントキャッシュ識別子と一致させることができない。そのような状況では、システムキャッシュコントローラは、受け取られたコンポーネントキャッシュ特色を使用して、コンポーネントキャッシュ識別子と相関されたコンポーネントキャッシュ構成テーブル500内のコンポーネントキャッシュ特色を更新することができる。様々な表記が、コンポーネントキャッシュ識別子フィールド502内のコンポーネントキャッシュ識別子の値を表すのに使用され得る。
システムキャッシュの各コンポーネントキャッシュは、有効性インジケータ特色フィールド504内に示されているように有効性インジケータに相関され得、コンポーネントキャッシュ構成テーブル500内の相関されたコンポーネントキャッシュの有効なエントリを示すのに使用され得る。様々な状況に関して、コンポーネントキャッシュのレコードは、有効状態または無効状態に相関された値またはフラグ(たとえば、「0」または「1」)を用いるなど、有効または無効としてマークされ得る。有効性インジケータ特色フィールド504内の有効な識別子に相関されたコンポーネントキャッシュ識別子のシステムキャッシュアクセス要求は、システムキャッシュコントローラによって許可され得る。有効性インジケータ特色フィールド504内の無効な識別子に相関されたコンポーネントキャッシュ識別子のシステムキャッシュアクセス要求が受け取られる時に、システムキャッシュコントローラは、そのシステムキャッシュアクセス要求をエラーとして扱うことができる。
コンポーネントキャッシュ構成テーブル500内のセットシフト特色フィールド506は、上で説明されたセットシフト特色を示すのに使用され得る。上で説明されたように、セットシフト特色は、それぞれのセットシフト値と相関されるコンポーネントキャッシュの各々についてシステムキャッシュメモリ空間がそれに分割されるセットグループの個数を識別する。たとえば、2つのみのセットグループパーティションを示すセットシフト特色に関するセットパーティションおよびウェイパーティションの様々な組合せから構成される多数のコンポーネントキャッシュがある場合がある。たとえば、図5において、行522は、セットシフト特色=1を含み、これは、この例において、2つのセットグループパーティションを示す。行522は、セットオフセット特色フィールド508内の1つの値およびターゲットウェイ特色フィールド510内の1つの値を含む、コンポーネントキャッシュセットパーティションおよびコンポーネントキャッシュウェイパーティションのうちの1つのみを表す。セットオフセット特色フィールド508内の同一の値とセットシフト特色フィールド506内の同一の値に相関されたターゲットウェイ特色フィールド510内の他の値との多数の他の組合せがある場合がある。セットシフト特色フィールド506内のセットシフト特色=1によって示される2つのセットグループパーティションのうちの他方を表すセットオフセット特色フィールド508の可能な他の値に関して、さらなる組合せさえ可能である。同様の例は、セットシフト特色フィールド506内の他の可能な値に関する異なるコンポーネントキャッシュのセットパーティションおよびウェイパーティションの多数の組合せを含む。一態様において、システムキャッシュの既知のパーティション(すなわち、キャッシュ全体またはウェイのみのキャッシュパーティション)は、コンポーネントキャッシュ構成テーブル500内に含まれ得る。これらの既知のパーティションがセットによるシステムキャッシュのパーティションを含まないので、コンポーネントキャッシュ構成テーブル500は、以前はこれらの既知のパーティションに関して不必要であったが、これらの既知のパーティションは、コンポーネントキャッシュ構成テーブル500内に含まれ得る。システムキャッシュの既知のパーティションは、行518および526のように、セットシフト特色フィールド506がセットシフト特色=0またはヌル値を含む時に、コンポーネントキャッシュ構成テーブル500内で定義され得る。このセットシフト特色値は、これに関連するコンポーネントキャッシュがセットによってパーティショニングされないことを示すことができる。セットによってパーティショニングされるコンポーネントキャッシュは、0より大きいセットシフト特色値に関連付けられ得る。様々な表記が、コンポーネントセットシフト特色フィールド506内のセットシフト特色の値を表すのに使用され得る。
コンポーネントキャッシュ構成テーブル500内のセットオフセット特色フィールド508は、相関されたコンポーネントキャッシュがその中に存在するセットグループを示すことができるセットオフセット特色を示すのに使用され得る。上で議論したように、コンポーネントキャッシュは、部分的に、ウェイパーティションと組み合わされたセットグループパーティションから作られる。セットシフト特色は、セットグループパーティションの個数を識別することができ、セットオフセット特色は、相関されたコンポーネントキャッシュを含むセットグループパーティションのその個数以内の特定のセットグループを示すことができる。上で議論したように、各セットグループは、セットオフセット特色フィールド508内で、コンポーネントキャッシュ構成テーブル500内で表される特定のセットオフセット特色値に相関され得る。より具体的には、一態様において、あるセットシフト特色値のセットオフセット特色値が、別のセットシフト特色値のセットオフセット特色値とオーバーラップする可能性があるので、セットシフト特色とセットオフセット特色との組合せは、コンポーネントキャッシュを含むセットグループを定義することができる。たとえば、すべてのセットシフト特色は、第1のセットグループに相関することができるセットオフセット特色=000を含むことができる。これは、複数のセットグループを示すセットシフト特色値ごとに、少なくとも第1のセットグループがあるからである。したがって、セットシフト特色=1のセットオフセット特色=000は、別のセットシフト特色値のセットオフセット特色=000の異なるセットグループを表すことができる。様々な可能なセットグループに一意のセットオフセット特色値を割り当てることも可能である。様々な表記が、コンポーネントセットオフセット特色フィールド508内のセットオフセット特色の値を表すのに使用され得る。
コンポーネントキャッシュ構成テーブル500内のターゲットウェイ特色フィールド510は、相関されたコンポーネントキャッシュがその中に存在するウェイグループパーティションを示すことができるターゲットウェイ特色を示すのに使用され得る。セットグループによく似て、ウェイグループは、コンポーネントキャッシュがその中に存在することができるシステムキャッシュメモリ空間のウェイを含むことができる。任意のコンポーネントキャッシュに関して、セットシフト特色またはセットオフセット特色のいずれであれ、ターゲットウェイは、システムキャッシュの単一のまたは連続するウェイの任意の組合せを示すことができる。コンポーネントキャッシュのウェイグループパーティションは、ランタイムに、静的と動的との両方での、コンポーネントキャッシュのアソシアティビティのカスタマイゼーションを可能にすることができる。コンポーネントキャッシュ構成テーブル500内では、ターゲットウェイ値のすべての組合せが、セットシフト特色値とセットオフセット特色値との任意の組合せと相関され得る。コンポーネントキャッシュ構成テーブル500内でのセットシフト特色、セットオフセット特色、およびターゲットウェイの組合せは、システムキャッシュコントローラのために、可能なコンポーネントキャッシュのすべてを定義する。一態様において、ターゲットウェイ特色値は、ビットベクトルによって表され得、このベクトル内の各ビットは、システムキャッシュの個々のウェイを表す。コンポーネントキャッシュ構成テーブル500内では、ビットベクトルは、16進数で表される。行522に関する例に戻ると、行522内で表されるシステムキャッシュは、図4内のシステムキャッシュ420と同一であり、8つのウェイおよび2つのセットグループを有する。この例において、ターゲットウェイ特色フィールド510は、0xF0の値を含み、これは、2進ビットベクトルとして1111 0000としても表され得る。したがって、この例において、コンポーネントキャッシュは、「F」の値または「1」のああ値によって示された4つのウェイ内に存在し、これは、図4内のシステムキャッシュ420のウェイ402、404、406、および408に相関する。様々な表記が、ターゲットウェイ特色フィールド510内のターゲットウェイの値を表すのに使用され得る。
コンポーネントキャッシュ構成テーブル500内の全ウェイプローブ特色フィールド512は、システムキャッシュのすべてのウェイのタグがコンポーネントキャッシュへのアクセスのためにルックアップされまたはプローブされるのかどうかを示すのに使用され得る。全ウェイプローブ特色が、システムキャッシュのウェイのすべてをプローブすべきであることを示す時に、コンポーネントキャッシュのプローブは、ターゲットウェイ値によって制限されないものとすることができる。これは、そのセットグループ内のサイズを変更するすなわち、そのターゲットウェイを変更することができるものとすることができる動的コンポーネントキャッシュにあてはまる可能性がある。したがって、コンポーネントキャッシュが異なる時に増大しまたは縮小する場合に、もやはコンポーネントキャッシュの一部ではないウェイに記憶された情報は、それでも、システムキャッシュ内の同一のセットグループ内で見つけられる可能性がある。コンポーネントキャッシュが静的であり、コンポーネントキャッシュが占有するウェイグループを変更しない時には、全ウェイプローブ特色フィールド512は、ヌル値または全ウェイプローブ特徴が相関されたコンポーネントキャッシュについて使用可能にされないことを示す値を含むことができる。これは、システムキャッシュのすべてのウェイにわたるタグルックアップ動作および比較動作を最小化することによって、電力消費を低下させることができる。
コンポーネントキャッシュ構成テーブル500内のインデックスモード特色フィールド514は、相関されたコンポーネントキャッシュが、物理インデクシングモード(PI)において物理アドレスを使用してインデクシングされ得るか、それともカスタムインデクシングモード(CI)においてカスタムインデックスを使用してインデクシングされ得るかを示すのに使用され得る。一態様において、物理アドレッシングは、予測不能で時には過度のキャッシュ衝突(メモリ割振りに依存する)をもたらす可能性があり、したがって、カスタムインデクシングモードが、コンポーネントキャッシュにアクセスするのに使用され得る。任意の形のカスタムインデックスが、使用され得る。一態様において、カスタムインデックスは、高水準オペレーティングシステムメモリ割振り方式によるなど、予測可能な衝突ミスを保証するために、仮想アドレスインデックスを含むことができる。別の態様は、衝突ミスを最小化するために、仮想アドレス最上位ビットを有するカスタムインデックスのハッシュを使用することができる。物理インデクシングモードにおいて、システムキャッシュコントローラは、クライアントからシステムキャッシュアクセス要求の一部としてシステムキャッシュの物理アドレスを受け取り、システムキャッシュの受け取られた物理アドレスをシステムキャッシュ内のコンポーネントキャッシュの物理アドレスに変換するのにシステムキャッシュの受け取られた物理アドレスを使用することができる。カスタムインデクシングモードにおいて、システムキャッシュコントローラは、クライアントからシステムキャッシュアクセス要求の一部としてシステムキャッシュの物理アドレスおよびカスタムインデックスを受け取り、システムキャッシュの受け取られた物理アドレスおよび受け取られたカスタムインデックスをシステムキャッシュ内のコンポーネントキャッシュの物理アドレスに変換するのに、システムキャッシュの受け取られた物理アドレスおよび受け取られたカスタムインデックスを使用することができる。システムキャッシュの受け取られた物理アドレスおよび/または受け取られたカスタムインデックスをシステムキャッシュ内のコンポーネントキャッシュの物理アドレスに変換する態様プロセスは、本明細書でさらに説明される。
コンポーネントキャッシュ構成テーブル500内の置換ポリシー特色フィールド516は、相関されたコンポーネントキャッシュ内に記憶された情報の置換ポリシーを示すのに使用され得る。いくつかのそのような置換ポリシーは、most recently used、least recently used、先入れ先出し、後入先出し、およびランダム置換ポリシーを含む既知の置換ポリシーを含むことができる。他の既知のおよびプロプライエタリな置換ポリシーが、様々なコンポーネントキャッシュ内に記憶された情報について使用され得る。置換ポリシーは、置換ポリシー特色フィールド516に従ってコンポーネントキャッシュごとにカスタマイズされ得る。
コンポーネントキャッシュ構成テーブル500内のキャッシュラインサイズ特色フィールド528は、相関されたコンポーネントキャッシュのキャッシュラインのデフォルトサイズまたはカスタマイズされたサイズを示すのに使用され得る。デフォルトキャッシュラインサイズは、システムキャッシュメモリの標準キャッシュラインサイズとすることができる。一態様において、キャッシュラインサイズ特色フィールド528は、対応するコンポーネントキャッシュがコンポーネントキャッシュ構成テーブル500内で作成される時に、コンポーネントキャッシュの一部またはすべてについて、デフォルトキャッシュラインサイズをセットされ得る。一態様において、ヌル値が、デフォルトキャッシュラインサイズを示すこともできる。一態様において、キャッシュラインサイズ特色フィールド528は、コンポーネントキャッシュがコンポーネントキャッシュ構成テーブル500内で作成される時に、またはシステムキャッシュアクセス要求に関連して、メモリからセットされ得るカスタムキャッシュラインサイズをセットされ得る。カスタムキャッシュラインサイズは、示されたカスタムキャッシュラインサイズがデフォルトキャッシュラインサイズと同一である時に、デフォルトキャッシュラインサイズを含むことができる。図5に示された例において、行518〜526内で表されるコンポーネントキャッシュは、キャッシュラインサイズ特色フィールド528内に異なる値を含むことができる。図示されているように、この値は、ビット、バイト、メガバイト、および他の変形など、デジタル情報の単位で測定されたサイズ値によって表され得る。この値は、キャッシュラインがそれにまたがることのできるシステムキャッシュメモリのセットおよび/またはウェイの個数に関して表されることも可能である。
一態様において、キャッシュラインサイズは、セットシフト特色フィールド506および/またはターゲットウェイ特色フィールド510を使用して判定されることも可能である。上で説明したように、セットシフト特色フィールド506は、コンポーネントキャッシュ内で使用されるシステムキャッシュメモリのセットの個数を示すことができ、ターゲットウェイ特色フィールド510は、システムキャッシュメモリのウェイを示すことができる。コンポーネントキャッシュ内のキャッシュラインのサイズは、コンポーネントキャッシュを構成するキャッシュセットおよび/またはウェイの個数に依存する可能性がある。したがって、対応するコンポーネントキャッシュのキャッシュラインサイズをカスタマイズすることは、セットシフト特色フィールド506および/またはターゲットウェイ特色フィールド510をセットすることによって達成され得る。
一態様において、コンポーネントキャッシュ構成テーブル500は、すべての可能なコンポーネントキャッシュが、コンポーネントキャッシュ構成テーブル500内で少なくともコンポーネントキャッシュ識別子フィールド502、セットシフト特色フィールド506、セットオフセット特色フィールド508、およびターゲットウェイ特色フィールド510に関して表現され得るという点で、静的とすることができる。他のフィールド502、512、514、および516は、必ずしもコンポーネントキャッシュを定義するのではなく、静的または可変とすることができるコンポーネントキャッシュの特色を表す。したがって、静的なコンポーネントキャッシュ構成テーブル500内では、行が、コンポーネントキャッシュ識別に相関されたセットシフト特色とセットオフセット特色とターゲットウェイとの組合せごとに存在することができる。静的なコンポーネントキャッシュ構成テーブル500内では、他のフィールド502、512、514、および516は、それでも、可変であり、その値に対する変更を可能にすることができる。一態様において、コンポーネントキャッシュ構成テーブル500は、コンポーネントキャッシュ識別子に相関されたセットシフト特色、セットオフセット特色、およびターゲットウェイの様々な組合せを含む行が、ランタイム中にコンポーネントキャッシュ構成テーブル500に追加され、これから削除され得るという点で、動的とすることができる。静的なコンポーネントキャッシュ構成テーブル500に似て、他のフィールド502、512、514、および516は、必ずしもコンポーネントキャッシュを定義するのではなく、可変であり、その値に対する変更を可能にすることができる。
図6に、セットおよびウェイによってコンポーネントキャッシュに可変にパーティショニングされたシステムキャッシュ600を示す。図6に示され本明細書で説明されるコンポーネントキャッシュは、例であることだけが意図され、いかなる形でも限定的であることは意図されていない。図6に示されたコンポーネントキャッシュは、図5の行518、520、522、524、および526内に示されたコンポーネントキャッシュの非限定的な例に相関する。コンポーネントキャッシュ602は、コンポーネントキャッシュ構成テーブル500内の行518に相関する。この例において、行518内で、セットシフト特色値は、ヌルまたは0である。セットオフセット特色値は、セットグループパーティションがないので無関係であるが、やはりヌルまたは0とすることができる。ターゲットウェイは、上で説明したように、ビットベクトル内で1111 1111として表され得るターゲットウェイ=0xFFによって示されるように、システムキャッシュ600のウェイ402〜416のすべてを含む。
図6に示された例において、コンポーネントキャッシュ604は、コンポーネントキャッシュ構成テーブル500内の行520に相関する。この例において、行520内で、セットシフト特色=3は、システムキャッシュ600が、8つのセットグループ442〜456にパーティショニングされることを表すことができる。セットオフセット特色=100は、コンポーネントキャッシュ604が、セットグループ450内に配置されることを表すことができる。ビットベクトル0000 1100によって表されるターゲットウェイ=0x0Cは、コンポーネントキャッシュ604が、ウェイ410および412内に配置されることを表すことができる。
図6に示された例において、コンポーネントキャッシュ606は、コンポーネントキャッシュ構成テーブル500内の行522に相関する。この例において、行522内で、セットシフト特色=1は、システムキャッシュ600が、2つのセットグループ422、424にパーティショニングされることを表すことができる。セットオフセット特色=000は、コンポーネントキャッシュ606が、セットグループ422内に配置されることを表すことができる。ビットベクトル1111 0000によって表されるターゲットウェイ=0xF0は、コンポーネントキャッシュ606が、ウェイ402、404、406、および408内に配置されることを表すことができる。
図6に示された例において、コンポーネントキャッシュ608は、コンポーネントキャッシュ構成テーブル500内の行524に相関する。この例において、行524内で、セットシフト特色=2は、システムキャッシュ600が、4つのセットグループ432、434、436、438にパーティショニングされることを表すことができる。セットオフセット特色=110は、コンポーネントキャッシュ608が、セットグループ438内に配置されることを表すことができる。ビットベクトル0111 1000によって表されるターゲットウェイ=0x78は、コンポーネントキャッシュ608が、ウェイ404、406、408、および410内に配置されることを表すことができる。
図6に示された例において、コンポーネントキャッシュ610は、コンポーネントキャッシュ構成テーブル500内の行526に相関する。この例において、行526内で、セットシフト特色値は、ヌルまたは0である。セットオフセット特色値は、セットグループパーティションがないので無関係であるが、やはりヌルまたは0とすることができる。ターゲットウェイは、ビットベクトル内で0000 0001として表され得るターゲットウェイ=0x01によって示されるように、システムキャッシュ600のウェイ416を含む。
図6は、コンポーネントキャッシュ構成テーブル500を使用してシステムキャッシュコントローラによって管理され得る潜在的なコンポーネントキャッシュの小さいサンプルにすぎない。コンポーネントキャッシュ604、606、608、および610が、図6内ではシステムキャッシュ600内のオーバーラップしない位置を占有するものとして図示されている(コンポーネントキャッシュ602を除く)が、これが、説明の簡単さのみのために行われることと、コンポーネントキャッシュの多くが、コンポーネントキャッシュ602とオーバーラップするように、他のコンポーネントキャッシュとオーバーラップすることができることとに留意されたい。すべてのコンポーネントキャッシュが、同時にアクティブであるとは限らず、したがって、コンポーネントキャッシュのオーバーラップの使用は、本明細書でさらに議論されるように、システムキャッシュコントローラによって管理され得る。また、異なるコンポーネントキャッシュのパラメータが、1コンポーネントキャッシュあたりの異なるキャッシュラインサイズをもたらす可能性があることに留意されたい。各コンポーネントキャッシュが、システムキャッシュのキャッシュセットの全体のパーティションを含むので、各コンポーネントキャッシュに関連するキャッシュラインは、キャッシュウェイ内のキャッシュセットのすべてより少ない可能性がある。これは、キャッシュセットによってパーティショニングされない場合より小さいキャッシュラインをもたらすことができ、セットシフト特色によって定義されるコンポーネントキャッシュあたりのキャッシュセットの個数は、コンポーネントキャッシュあたりのキャッシュラインサイズを決定することができる。
図7に、コンポーネントキャッシュのクライアントアクセスの例を示す。クライアントは、たとえば、プログラムソフトウェア、オペレーティングシステムソフトウェア、コンピューティングデバイスファームウェア、プロセッサ、プロセッサコアもしくはコンピューティングデバイスサブシステム、およびシステムメモリ管理ユニットを含むことができ、システムキャッシュ302のコンポーネントキャッシュから読み取り、これに書き込むためにシステムキャッシュアクセス要求を行うことができる。1つまたは複数のクライアントによって行われたシステムキャッシュアクセス要求は、システムキャッシュに対して行われる要求およびシステムキャッシュから受け取られる応答において変化することができる。クライアントからのシステムキャッシュアクセス要求は、システムキャッシュ302から読み取りまたはこれに書き込むことを要求するために信号を送る、プロセッサコアA 700、プロセッサコアB 702、プロセッサコアC 704、プロセッサコアD 706、およびプロセッサコアE 708などのプロセッサコアを含むことができる。
プロセッサ700〜708は、読み取るか書き込むためのシステムキャッシュアクセス要求と共に仮想アドレスまたは物理アドレス、コンポーネントキャッシュ識別子、およびコンポーネントキャッシュ特色を含むことができる。一態様において、システムメモリ管理ユニット710、712、716、718は、SoC上でプロセッサ、プロセッサコアもしくはサブシステム、およびシステムキャッシュコントローラの間の別々のコンポーネントとするか、または同一のコンポーネントのうちの1つまたは複数に統合され得る。システムメモリ管理ユニット710、712、716、718は、システムキャッシュアクセス要求、仮想アドレス、コンポーネントキャッシュ識別子、およびコンポーネントキャッシュ特色を受け取ることができる。仮想アドレスから、システムメモリ管理ユニット710、712、716、718は、システムキャッシュメモリ空間の相関された物理アドレスを判定することができる。一態様において、システムメモリ管理ユニット710、712、716、718は、仮想アドレスからカスタムインデックスを構成することができる。システムメモリ管理ユニット710、712、716、718は、システムキャッシュアクセス要求、システムキャッシュの物理アドレス、カスタムインデックス、コンポーネントキャッシュ識別子、およびコンポーネントキャッシュ特色をシステムキャッシュ302に転送することができる。一態様において、本明細書でさらに説明されるように、システムキャッシュコントローラは、システムメモリ管理ユニット710、712、716、718によって転送された情報を受け取り、システムキャッシュメモリ空間の物理アドレスを識別されたコンポーネントキャッシュの物理アドレスに変換することができる。
以下の例は、システムキャッシュメモリアクセス要求の様々なタイプについて説明する。1つの例は、プロセッサコアA 700が、物理インデクシングモードの使用を指定する、コンポーネントキャッシュA 720へのシステムキャッシュメモリアクセス要求を行うことを含む。プロセッサコアA 700は、コンポーネントキャッシュA 720のコンポーネントキャッシュ識別子、システムキャッシュメモリ空間の仮想アドレス、および少なくとも物理インデクシングモード特色インジケータを有するそのシステムキャッシュメモリアクセス要求を送ることができる。システムメモリ管理ユニットA 710は、プロセッサコアA 700によって送られた情報を受け取り、仮想アドレスに相関されたシステムキャッシュメモリ空間内の物理アドレスを判定し、システムキャッシュの、コンポーネントキャッシュ識別子、コンポーネントキャッシュ特色、および物理アドレスと共にシステムキャッシュメモリアクセス要求を転送することができる。一態様において、システムメモリ管理ユニットA 710は、カスタムインデックスを構成してもしなくてもよい。カスタムインデックスの構成は、物理インデクシングモードが指定されるのでこの例では必要ではなく、したがって、カスタムインデックスは使用されない。しかしながら、一態様において、カスタムインデックスは、構成され、転送され、使用されないものとされ得る。インデクシングモードが指定されない態様において、カスタムインデクシングモードは、コンポーネントキャッシュ構成テーブル内のコンポーネントキャッシュ識別子と相関され得、これは、とにかくカスタムインデックスを提供するためにインデクシングモードが指定されない場合に有益である可能性がある。システムメモリ管理ユニットA 710によって転送された情報は、コンポーネントキャッシュA 720にアクセスするためにシステムキャッシュ302によって使用され得る。一態様において、コンポーネントキャッシュA 720は、それが記憶するデータ内の変化をRAM 328と一致させることができる。
別の例は、プロセッサコアB 702が、カスタムインデクシングモードの使用を指定するシステムキャッシュメモリアクセス要求をコンポーネントキャッシュB 722に対して行うことを含むことができる。プロセッサコアB 702は、コンポーネントキャッシュB 722のコンポーネントキャッシュ識別子、システムキャッシュメモリ空間の仮想アドレス、および少なくともカスタムインデクシングモード特色インジケータと共にそのシステムキャッシュメモリアクセス要求を送ることができる。システムメモリ管理ユニットB 712は、プロセッサコアB 702によって送られた情報を受け取り、仮想アドレスに相関されたシステムキャッシュメモリ空間内の物理アドレスを判定し、カスタムインデックスを構成し、システムキャッシュメモリアクセス要求、コンポーネントキャッシュ識別子、コンポーネントキャッシュ特色、システムキャッシュの物理アドレス、およびカスタムインデックスを転送することができる。システムメモリ管理ユニットB 712によって転送される情報は、コンポーネントキャッシュB 722にアクセスするためにシステムキャッシュ302によって使用され得る。一態様において、コンポーネントキャッシュB 722は、それが記憶するデータの変化をRAM 328と一致させることができる。
一例において、プロセッサコアC 704は、システムキャッシュの物理アドレスを使用して、コンポーネントキャッシュC 724へのシステムキャッシュメモリアクセス要求を行うことができる。プロセッサコアC 704は、そのシステムキャッシュメモリアクセス要求を、コンポーネントキャッシュC 724のコンポーネントキャッシュ識別子、システムキャッシュメモリ空間の物理アドレス、および任意のコンポーネントキャッシュ特色と共にシステムキャッシュ302に直接送ることができる。プロセッサコアC 704によって送られた情報は、コンポーネントキャッシュC 724にアクセスするためにシステムキャッシュ302によって使用され得る。
別の例は、プロセッサコアD 706が、システムキャッシュのパーティションを包含するコンポーネントキャッシュではなく、図6のコンポーネントキャッシュ602など、システムキャッシュ全体を包含するコンポーネントキャッシュを表すことができるデフォルトコンポーネントキャッシュD 726へのシステムキャッシュメモリアクセス要求を行うことを含むことができる。プロセッサコアD 706は、システムキャッシュメモリ空間の仮想アドレスと共にそのシステムキャッシュメモリアクセス要求を送ることができる。システムキャッシュメモリアクセス要求が、デフォルトコンポーネントキャッシュD 726に関するので、コンポーネントキャッシュ識別子またはコンポーネントキャッシュ特色は、プロセッサコアD 706によって送られる必要がない。ヌルまたは0などのデフォルトコンポーネントキャッシュ識別子は、システムキャッシュメモリアクセス要求がデフォルトコンポーネントキャッシュに関することをコンポーネントキャッシュ構成テーブル内で識別するために、送られ、使用され得る。システムメモリ管理ユニットD 716は、プロセッサコアD 706によって送られた情報を受け取り、仮想アドレスに相関されたシステムキャッシュメモリ空間内の物理アドレスを判定し、システムキャッシュメモリアクセス要求、提供される時にコンポーネントキャッシュ識別子、およびシステムキャッシュの物理アドレスを転送することができる。システムメモリ管理ユニットD 716によって転送された情報は、デフォルトコンポーネントキャッシュD 726にアクセスするためにシステムキャッシュ302によって使用され得る。一態様において、デフォルトコンポーネントキャッシュD 726は、それが記憶するデータの変化をRAM 328と一致させることができる。
一例において、プロセッサコアE 708は、非キャッシュ可能システムキャッシュメモリアクセス要求を行うことができる。この例において、非キャッシュ可能システムキャッシュメモリアクセス要求は、システムキャッシュ302を介してRAM 328に向けられ得る。プロセッサコアE 708は、その非キャッシュ可能システムキャッシュメモリアクセス要求をシステムキャッシュメモリ空間の仮想アドレスと共に送ることができる。システムメモリ管理ユニットE 718は、プロセッサコアE 708によって送られた情報を受け取り、仮想アドレスに相関されたシステムキャッシュメモリ空間内の物理アドレスを判定し、システムキャッシュメモリアクセス要求およびシステムキャッシュの物理アドレスを転送することができる。システムメモリ管理ユニットE 718によって転送される情報は、要求されたメモリアクセス機能を実行するためにRAM 328にアクセスするためにシステムキャッシュ302によって使用され得る。
図8に、コンポーネントキャッシュにアクセスするためのアドレス変換を示す。上で言及したシステムキャッシュコントローラによるアドレス変換は、システムキャッシュメモリ空間800内の物理アドレスをシステムキャッシュメモリ空間内のコンポーネントキャッシュ814の物理アドレスに変換する。一態様において、システムキャッシュメモリ空間800内の物理アドレスは、タグ802と、セットインデックス804およびブロックオフセット806を含む物理インデックスとを含むことができる。コンポーネントキャッシュ814の物理アドレスは、拡張されたタグ816と、セットインデックス818およびブロックオフセット820を含む変更された物理インデックスとを含む。上で説明したように、システムキャッシュコントローラは、システムキャッシュメモリ空間800内の物理アドレス、コンポーネントキャッシュ識別子、およびインデクシングモードなどのコンポーネントキャッシュ特色を含む、システムキャッシュアクセス要求の情報およびシステムキャッシュアクセス要求に関する情報を受け取ることができる。システムキャッシュコントローラは、コンポーネントキャッシュ814の物理アドレスを判定するのにこの情報を使用することができる。システムキャッシュコントローラは、システムキャッシュアクセス要求と共に供給される時に、コンポーネントキャッシュインデクシングモード特色を使用して、やはりシステムキャッシュアクセス要求と共に受け取られた対応するコンポーネントキャッシュ識別子のコンポーネントキャッシュ構成テーブル500内のインデクシングモード特色フィールドを更新することができる。システムキャッシュコントローラは、コンポーネントキャッシュ識別子のコンポーネントキャッシュ814の物理アドレスを判定するために使用すべき適当なインデクシングモード、セットシフト特色、およびセットオフセット特色をコンポーネントキャッシュ構成テーブル500から判定するのにコンポーネントキャッシュ識別子を使用することができる。
システムキャッシュコントローラは、コンポーネントキャッシュ814の物理アドレスを判定することの諸部分を判定するために、システムキャッシュメモリ空間800内の物理アドレスの諸部分を使用することができる。たとえば、システムキャッシュコントローラは、コンポーネントキャッシュ814の物理アドレスのブロックオフセット820を判定するのに、システムキャッシュメモリ空間800内の物理アドレスからのブロックオフセット806を使用することができる。態様において、ブロックオフセット806内の値およびブロックオフセット820内の値は、同一とすることができる。システムキャッシュコントローラは、それぞれコンポーネントキャッシュ814の物理アドレスのタグ816およびセットインデックス818を判定するのに、タグ802とシステムキャッシュメモリ空間800内の物理アドレスのセットインデックス804および/またはカスタムインデックス808とを使用することができる。
一態様において、タグ802およびセットインデックス804は、タグ816およびセットインデックス818を判定するために変更され得る。タグ802およびセットインデックス804を変更するために、システムキャッシュコントローラは、物理インデクシングモードが示される時にセットインデックス804のビットの第1のセットを使用するのか、あるいはカスタムインデクシングモードが示される時にカスタムインデックス808によってセットインデックス804のビットの第1のセットを置換するのかを選択する810ために、対応するコンポーネントキャッシュ識別子のコンポーネントキャッシュ構成テーブル500内のインデクシングモード特色を使用することができる。インデクシングモードは、セットインデックス804のビットの第1のセットまたはカスタムインデックス808のいずれかを使用して構成されたセットインデックス818のビットの第1のセットの構成を決定することができる。セットインデックス804のビットの第1のセットまたはカスタムインデックス808のいずれが選択されようとも、システムキャッシュコントローラは、セットインデックス804のビットの第2のセットをセットインデックス818のビットの第2のセットとして使用し、これらを、セットインデックス804のビットの第1のセットまたはカスタムインデックス808のいずれかと組み合わせることができる。また、セットインデックス804のビットの第1のセットまたはカスタムインデックス808のいずれが選択されようとも、システムキャッシュコントローラは、破棄(またはシフト)および連結動作812の実施を判定するのに、対応するコンポーネントキャッシュ識別子のセットシフト特色およびセットオフセット特色を使用することができる。セットシフト特色は、破棄し、タグ816に追加する(またはシフトする)べきセットインデックス804のビットの第1のセットまたはカスタムインデックス808からの最上位ビットの個数を定義し、これによって、タグ816を決定するために破棄された(またはシフトされた)ビットをタグ802に付加し、タグ816のサイズをタグ802のサイズから同一のビット数だけ拡張することができる。セットオフセット特色は、セットインデックス818内の破棄される(またはシフトされる)ビットを置換するのに使用され得る。
図9に、コンポーネントキャッシュにアクセスするための物理アドレスを使用するアドレス変換を示す。図8を参照して説明したように、ブロックオフセット806は、ブロックオフセット820に転移され得る。インデクシングモードが、物理インデクシングを示す時に、セットインデックス804は、セットインデックス804のビットの第1のセット、一態様においては最上位ビット900を破棄する(またはシフトアウトする)ように変更され得る。セットインデックス804のビットの第1のセットの個数は、コンポーネントキャッシュのセットシフト特色の値に依存することができる。一態様においてセットインデックス804の残りのビット906である、セットインデックス804のビットの第2のセットは、セットインデックス818のビットの第2のセットとして使用され得る。一態様において、残りのビット906は、セットインデックス818の同一のビット908に転移され得る。コンポーネントキャッシュのセットオフセット特色902のビットは、セットインデックス818のビットの第1のセット、一態様においてはセットインデックス818の最上位ビット904として、セットインデックス804の破棄される(またはシフトアウトされる)ビットの第1のセット、たとえばセットインデックス804の最上位ビット900を置換することができる。セットインデックス804の破棄される(またはシフトアウトされる)ビットの第1のセット、たとえばセットインデックス804の最上位ビット900と組み合わされた(たとえば、これに付加された)タグ802は、タグ816に転移され得る。
図10に、コンポーネントキャッシュにアクセスするための、カスタムインデックスを使用するアドレス変換を示す。上で図8を参照して説明したように、ブロックオフセット806は、ブロックオフセット820に転移され得る。インデクシングモードが、カスタムインデクシングを示す時に、セットインデックス804は、セットインデックス804のビットの第1のセット、一態様においては最上位ビット900を破棄する(または、シフトアウトする)ために変更され得る。セットインデックス804のビットの第1のセットの個数は、コンポーネントキャッシュのセットシフト特色の値に依存することができる。一態様においてはセットインデックス804の中央ビット1006および下位ビット1000であるセットインデックス804のビットの残りの第2のセットは、セットインデックス818のビットの第2のセットとして使用され得る。一態様において、下位ビット1000は、セットインデックス818の同一のビット1002に転移され得る。カスタムインデックス808は、セットインデックス818の対応する中央ビット1004内の中央ビット1006を置換することができる。コンポーネントキャッシュのセットオフセット特色902のビットは、一態様においてはセットインデックス818の最上位ビット904であるセットインデックス818のビットの第1のセットとして、セットインデックス804のビットの第1のセット、たとえばセットインデックス804の最上位ビット900を置換することができる。セットインデックス804の破棄される(またはシフトアウトされる)ビットの第1のセット、たとえばセットインデックス804の最上位ビット900と組み合わされた(またはこれに付加された)タグ802は、タグ816に転移され得る。
物理アドレス800、セットオフセット特色902、およびカスタムインデックス808のビットを破棄し、シフトし、転移させ、組み合わせ、付加することの上記の例が、単なる例であり、限定的であることが全く意図されていないことに留意されたい。物理アドレス814のビットを配置するために、これらのコンポーネントのビットを任意の複数の形で操作し、組み合わせることが可能である。たとえば、セットオフセット特色902のビットは、セットインデックス804の最上位ビット、最下位ビット、または中央ビットを置換することができる。
一態様において、コンポーネントキャッシュは、アクティブ化され、非アクティブ化され得る。システムキャッシュメモリ空間内にオーバーラップするコンポーネントキャッシュの可能性があるので、キャッシュ衝突を回避するために、アクティブなコンポーネントキャッシュにオーバーラップするコンポーネントキャッシュは、非アクティブ化され得る。また、電力を節約するために、使用中ではないコンポーネントキャッシュは、非アクティブ化され得る。コンポーネントキャッシュは、部分的にはシステムキャッシュメモリ空間および割り当てられたコンポーネントキャッシュを指定されたクライアントに動的にパーティショニングするために、ランタイムにアクティブ化され、非アクティブ化され得る。システムキャッシュのクライアントの一部が、相対的に短い時間期間の間に限ってコンポーネントキャッシュを必要とする場合があり、そのコンポーネントキャッシュによって使用されつつあるシステムキャッシュメモリ空間が、システムキャッシュを使用する他のクライアントとのキャッシュ衝突を回避するために、そのクライアントのために予約される場合がある。さらに、クライアントがコンポーネントキャッシュの用がなくなる時に、そのコンポーネントキャッシュは、非アクティブ化され得、システムキャッシュ空間は、非予約済みにされ得、システムキャッシュメモリ空間およびコンポーネントキャッシュが他のクライアントから使用可能にされる。
図11に、コンポーネントキャッシュアクティブ化およびメモリアクセス動作に関する情報を記憶するためのレジスタを含むことができる、例のコンポーネントキャッシュアクティブ化/非アクティブ化制御コマンド1100を示す。一態様において、コンポーネントキャッシュアクティブ化/非アクティブ化制御コマンド1100は、トリガ1102、動作コード1104、コンポーネントキャッシュ識別子1106、ターゲットウェイ適用1108、およびターゲットウェイ1110などの情報を含むことができる。トリガ1102は、コンポーネントキャッシュに関するシステムキャッシュメモリアクセスを開始すべきかどうかを示す、1ビットコードなどのフラグとすることができる。たとえば、「0」のビット値は、システムキャッシュメモリアクセスが開始してはならないことを示すことができ、「1」のビット値は、システムキャッシュメモリアクセスが開始してもよいことを示すことができる。動作コード1104は、コンポーネントキャッシュをアクティブ化すべきか、それとも非アクティブ化すべきかを示すコードとすることができる。たとえば、「01」がアクティブ化を意味し、「10」が非アクティブ化を意味する2ビットコードが、動作コード1104に関して使用され得る。コンポーネントキャッシュ識別子1106は、コンポーネントキャッシュアクティブ化/非アクティブ化制御コマンド1100の他の情報に関する特定のコンポーネントキャッシュに関連する値を記憶することができる。ターゲットウェイ適用1108は、システムキャッシュメモリアクセスにおいてターゲットウェイ1110内に記憶された情報を使用すべきかどうかを意味するフラグとすることができる。たとえば、「0」のビット値は、ターゲットウェイ1110内に記憶された情報を使用しないことを示すことができ、「1」のビット値は、ターゲットウェイ1110内に記憶された情報を使用すべきであることを示すことができる。ターゲットウェイ1110は、システムキャッシュメモリ空間内のコンポーネントキャッシュ内でアクティブ化すべきウェイを記憶することができ、動作コード1104がアクティブ化を意味する時に限って有効とすることができる。一態様において、クライアントが、システムキャッシュメモリアクセスに関してコンポーネントキャッシュ全体を使用する必要がない場合があり、コンポーネントキャッシュ内のある種のウェイだけをアクティブ化することを指定することができる。クライアントが、コンポーネントキャッシュ内のより多くのウェイの使用を必要とする時には、コンポーネントキャッシュのウェイのうちのより多くが、ターゲットウェイ1110によって指定され得る。
図12に、コンポーネントキャッシュメモリアクセス動作に関する情報を記憶するためのレジスタを含むことができる、コンポーネントキャッシュアクティブ化/非アクティブ化制御状況1200を示す。一態様において、コンポーネントキャッシュアクティブ化/非アクティブ化制御状況1200は、フラグとすることができる終了レジスタ1202などの情報を含むことができる。たとえば、「0」のビット値は、システムキャッシュメモリアクセス動作がまだ開始されていないか進行中であることを示すことができ、「1」のビット値は、システムキャッシュメモリアクセス動作が完了したことを示すことができる。
コンポーネントキャッシュアクティブ化/非アクティブ化制御コマンド1100およびコンポーネントキャッシュアクティブ化/非アクティブ化制御状況1200は、システムキャッシュメモリ空間を管理するためにシステムキャッシュコントローラによって読み取られ得る。加えて、図13に、コンポーネントキャッシュ内のウェイの使用を管理するのにシステムキャッシュコントローラによって使用され得るコンポーネントキャッシュアクティブウェイテーブル1300を示す。上で説明したように、クライアントは、システムキャッシュメモリアクセスに関してコンポーネントキャッシュ全体を使用することを必要とする場合とそうでない場合とがあり、コンポーネントキャッシュ内である種のウェイだけをアクティブ化することを指定することができる。システムキャッシュコントローラは、コンポーネントキャッシュアクティブウェイテーブル1300を更新することによって、コンポーネントキャッシュの各々のアクティブウェイを追跡することができる。コンポーネントキャッシュアクティブウェイテーブル1300内では、コンポーネントキャッシュ識別子フィールド1302は、コンポーネントキャッシュ構成テーブル内のコンポーネントキャッシュ識別子フィールドと同様に、対応するアクティブウェイフィールド1304に相関され得る。システムキャッシュコントローラは、ターゲットウェイ適用が、ターゲットウェイを適用すべきであることを示す時に、コンポーネントキャッシュアクティブ化/非アクティブ化制御コマンドのターゲットウェイから読み出された、クライアントによって要求されたターゲットウェイをアクティブウェイフィールド1304内に記憶することができる。ターゲットウェイ適用が、ターゲットウェイを適用すべきではないことを示す時には、アクティブウェイフィールド1304は、デフォルト値、ヌル値、またはコンポーネントキャッシュ構成テーブル内で指定されるコンポーネントキャッシュのターゲットウェイのすべてを示す値をセットされ得る。
図14に、上で説明したコンポーネントキャッシュアクティブウェイテーブルに対するコンパニオンテーブルとすることができる、コンポーネントキャッシュ予約テーブル1400の一態様を示す。コンポーネントキャッシュ予約テーブル1400は、コンポーネントキャッシュにパーティショニングされたシステムキャッシュのウェイおよびグループを表すことができる、ウェイ列1402、1404、1406、1408、1410、1412、1414、1416およびセットグループ行1418、1420、1422、1424、1426、1428、1430、1432を含むことができる。コンポーネントキャッシュ予約テーブル1400は、クライアントによって予約された/または予約されていないシステムキャッシュ内のウェイおよびセットグループのペアリングごとに、予約済みインジケータおよび/または非予約済みインジケータをセットすることができる。一態様によるコンポーネントキャッシュ予約テーブル1400は、システムキャッシュコントローラがクライアントによって使用されつつあるシステムキャッシュ内の位置を記録することを可能にし、クライアントが別のクライアントによって使用されつつあるか予約されたシステムキャッシュ位置を使用することを許可しないことによってキャッシュ衝突を回避することができる。一態様において、予約済みインジケータは、システムキャッシュアクティブウェイテーブルのコンポーネントキャッシュ識別子に相関されたセットグループとコンポーネントキャッシュ構成テーブルのコンポーネントキャッシュ識別子に相関されたセットグループとを一致させ、システムキャッシュアクティブウェイテーブル内で示されるウェイを一致させることができる。クライアントが、それが予約したコンポーネントキャッシュスペースを使い終えた後に、予約済みインジケータは、コンポーネントキャッシュ予約テーブル1400内の対応する位置から除去され、あるいはその位置に関する非予約済みインジケータに変更され得る。
一例において、図13内に示されたコンポーネントキャッシュアクティブウェイテーブル1300は、4つのコンポーネントキャッシュ識別子のアクティブウェイを示す。システムキャッシュコントローラは、コンポーネントキャッシュ識別子の各々のシステムキャッシュ位置を予約し、予約されたウェイを示されたアクティブウェイに制限することができる。システムキャッシュ位置は、コンポーネントキャッシュ構成テーブルのセットシフト特色およびセットオフセット特色と、コンポーネントキャッシュアクティブウェイテーブル1300内のアクティブウェイとから判定され得る。システムキャッシュコントローラは、コンポーネントキャッシュ予約テーブル1400内で予約されたシステムキャッシュ位置をマークすることによって、システムキャッシュ内の位置を予約することができる。したがって、図14内に示された例において、コンポーネントキャッシュ予約テーブル1400は、指定されたグループおよびアクティブウェイが、コンポーネントキャッシュ識別子とコンポーネントキャッシュ構成テーブル内およびコンポーネントキャッシュアクティブウェイテーブル1300内の対応するコンポーネントキャッシュ特色とによって指定されるシステムキャッシュ位置の各々について予約されることを示すデータを含む。
ありそうにはないが、システムキャッシュ全体のコンポーネントキャッシュを表すコンポーネントキャッシュ構成テーブル500からのコンポーネントキャッシュ識別子「0」が、コンポーネントキャッシュアクティブウェイテーブル1300内およびコンポーネントキャッシュ予約テーブル1400内に含まれることが可能であることに留意されたい。というのは、これが、このコンポーネントキャッシュのアクティブウェイが制限されない限り、システムキャッシュ全体を予約するからである。これによって、ウェイのうちの少なくともいくつかが非アクティブ化されるまで、他のクライアントがシステムキャッシュを使用できないことになる。
一態様において、コンポーネントキャッシュは、2つのWビットベクトルを使用してサイズを変更され得、Wは、キャッシュウェイの個数であり、このベクトル内の各ビットは、特定のキャッシュウェイを表す。各コンポーネントキャッシュは、Wビットベクトルの一方または両方に関連付けられ得る。予約済みベクトルまたは第1のベクトルは、アクティブ化された時に関連するコンポーネントキャッシュへの割振りのために予約済みキャッシュウェイを示すことができる。ボーナスベクトルまたは第2のベクトルは、空きであるかどのコンポーネントキャッシュによっても予約されていない時に関連するコンポーネントキャッシュに割り振られ得る余分なキャッシュウェイを示すことができる。上で議論したように、コンポーネントキャッシュは、コンピューティングデバイスの処理コンポーネントまたはサブコンポーネントなどの特定のクライアントに関連付けられ得る。
図15に、様々なコンポーネントキャッシュに割り振られた予約済みキャッシュウェイを有する例のシステムキャッシュメモリを示す。システムキャッシュメモリ1500は、複数のウェイを含むことができ、この例において、システムキャッシュメモリ1500は、16個のウェイ1502、1504、1506、1508、1510、1512、1514、1518、1520、1522、1524、1526、1528、1530、1532、および1534を含む。この例に関して、2つのWビットベクトルは、16ビットベクトルとすることができる。予約済みキャッシュウェイ1536は、CPUなどの第1のクライアントの第1のコンポーネントキャッシュに割り振られ得、キャッシュウェイ1502〜1508を含むことができる。予約済みキャッシュウェイ1536は、16進表記の第1の予約済みベクトル=0xF000によって表され得る。2進形式において、予約済みキャッシュウェイ1536は、第1の予約済みベクトル=1111 0000 0000 0000によって表され得る。第1の予約済みキャッシュベクトルの2進形式をキャッシュウェイ1502〜1534と比較すると、「1」ビットは、キャッシュウェイ1502〜1508を含む予約済みキャッシュウェイ1536に対応する。同様に、予約済みキャッシュウェイ1538は、コンピューティングデバイスの他の処理コンポーネントまたはサブシステムのうちの1つなどの第2のクライアントの第2のコンポーネントキャッシュに割り振られ得、キャッシュウェイ1506〜1518を含むことができる。予約済みキャッシュウェイ1538は、16進表記の第2の予約済みベクトル=0x3F00によって表され得る。予約済みキャッシュウェイ1540は、コンピューティングデバイスの他の処理コンポーネントまたはサブシステムのうちの1つなどの第3のクライアントの第3のコンポーネントキャッシュに割り振られ得、キャッシュウェイ1520〜1526を含むことができる。予約済みキャッシュウェイ1540は、16進表記の第3の予約済みベクトル=0x00F0によって表され得る。非予約済みキャッシュウェイ1542は、キャッシュウェイ1528〜1534を含むことができる。さらに、第1のコンポーネントキャッシュは、第1のコンポーネントキャッシュをキャッシュウェイ1510〜1534に拡張する潜在能力を表す、16進表記の第1のボーナスベクトル=0x0FFFに関連付けられ得る。予約済みキャッシュウェイ1536、1538を用いて立証されるように、予約済みキャッシュウェイは、コンポーネントキャッシュの間でオーバーラップすることができる。これが可能であるのは、コンポーネントキャッシュが、システムキャッシュの同一のウェイ内で異なるセットグループを占有できるからである。したがって、複数のコンポーネントキャッシュが、同一のキャッシュウェイ内でアクティブ化され得る。一態様において、図5内の行518内に示されたコンポーネントキャッシュ識別子「0」を有する図6内のコンポーネントキャッシュ602は、他のコンポーネントキャッシュの予約済みベクトルとオーバーラップすることができる関連する予約済みベクトルを有することができる。
第1のコンポーネントキャッシュが第1のボーナスベクトルによって示されるキャッシュウェイ1510〜1534に拡張するために、コンポーネントキャッシュがそれに拡張する各キャッシュウェイ1510〜1534は、非予約済みでなければならない。予約済みベクトルは、コンポーネントキャッシュごとにアクティブ化コマンド内で指定され得る。コンピューティングデバイスは、アクティブ化コマンドの予約済みベクトルに従って、適当なコンポーネントキャッシュのキャッシュウェイ1502〜1534のうちの1つまたは複数を予約し、割り振ることができる。予約済みキャッシュウェイは、レジスタなどのメモリデバイス内に記憶され得る。コンピューティングデバイスは、各コンポーネントキャッシュのボーナスベクトルをレジスタなどのメモリデバイス内に記憶することもできる。ボーナスベクトルは、ブート時にメモリデバイスに書き込まれ得、かつ/またはリソースマネージャが、ユースケースに基づいて各コンポーネントキャッシュにボーナスベクトルを割り当てることができる。特定のコンポーネントキャッシュの割り振られたキャッシュウェイを記憶するメモリデバイスは、ボーナスベクトル内のキャッシュウェイがコンポーネントキャッシュに割り振られることに応答して、これらのキャッシュウェイを含むように増補され得る。一態様においてシステムキャッシュコントローラとされ得るコンピューティングデバイスは、コンポーネントキャッシュの予約済みベクトルおよび/またはボーナスベクトルに関して、コンポーネントキャッシュへの割振りに使用可能なウェイを計算することができる。この計算は、次式を使用して達成され得る。
上の式内で、Xは、関係するコンポーネントキャッシュのコンポーネントキャッシュ識別子とすることができ、Nは、コンポーネントキャッシュの総数とすることができ、Iは、すべてのコンポーネントキャッシュのコンポーネントキャッシュ識別子とすることができる。ReservedVecX、ReservedVecI、およびBonusVecXは、それぞれ、XおよびIによって示されるコンポーネントキャッシュの予約済みベクトルおよびボーナスベクトルである。Active1は、Iのコンポーネントキャッシュがアクティブである時にアサートされ得る。和は、コンポーネントキャッシュごとに適用されるビット単位の論理和演算子とすることができる。コンポーネントキャッシュのボーナスベクトル内に含まれる使用可能なキャッシュウェイの計算に応答して、コンポーネントキャッシュは、使用可能なキャッシュウェイに割り振られ得る。
図16に、一態様による、コンポーネントキャッシュに割り振られた予約済みキャッシュウェイおよびボーナスキャッシュウェイを有する例のシステムキャッシュメモリを示す。図15内の例を継続すると、第1のコンポーネントキャッシュは、システムキャッシュメモリ1500内のキャッシュウェイ1502〜1510および1528〜1534を使用することができる。上で注記したように、キャッシュウェイ1502〜1510は、第1のコンポーネントキャッシュの予約済みベクトルの範囲内に含まれ得るが、キャッシュウェイ1528〜1534は、第1のコンポーネントキャッシュのボーナスベクトルの範囲内に含まれる。キャッシュウェイ1528〜1534は、コンピューティングデバイスがキャッシュウェイ1528〜1534を第1のコンポーネントキャッシュに割り振るために、別のコンポーネントキャッシュによって予約されないものとすることができる。キャッシュウェイ1528〜1534は、この例においては予約されないが、第1のコンポーネントキャッシュのボーナスキャッシュベクトルは、図15内に示されているように、キャッシュウェイ1510〜1526を含む予約済みキャッシュウェイ1538および1540とオーバーラップする。キャッシュウェイ1528〜1534を第1のコンポーネントキャッシュに割り振るために、コンピューティングデバイスは、第1のコンポーネントキャッシュのボーナスベクトル内で示されるキャッシュウェイ1510〜1534のすべてを割り振ることができる。コンピューティングデバイスは、キャッシュウェイ1510〜1526を予約解除するために第2および第3のコンポーネントキャッシュを非アクティブ化し、図15内の予約済みキャッシュウェイ1538に加えて、キャッシュウェイ1510〜1534を第1のコンポーネントキャッシュに割り振ることができる。第1のコンポーネントキャッシュは、キャッシュウェイ1502〜1534のすべてを含む予約済みキャッシュウェイ1600を割り振られ得る。
図17に、一態様による、様々なコンポーネントキャッシュに割り振られた予約済みキャッシュウェイを有する例のシステムキャッシュメモリを示す。以下の例は、異なる予約済みキャッシュウェイ1700および1702と非予約済みキャッシュウェイ1704とを伴うのみの、図15の同一のシステムキャッシュ1500を使用する。予約済みキャッシュウェイ1700は、第1のコンポーネントキャッシュを割り振られ得、キャッシュウェイ1502〜1508を含むことができる。予約済みキャッシュウェイ1700は、16進表記の第1の予約済みベクトル=0xF000によって表され得る。予約済みキャッシュウェイ1702は、第2のコンポーネントキャッシュを割り振られ得、キャッシュウェイ1506〜1518を含むことができる。予約済みキャッシュウェイ1702は、16進表記の第2の予約済みベクトル=0x3F00によって表され得る。非予約済みキャッシュウェイ1704は、キャッシュウェイ1520〜1534を含むことができる。さらに、第2のコンポーネントキャッシュは、第2のコンポーネントキャッシュをキャッシュウェイ1502および1504に拡張する潜在能力を表す、16進表記の第2のボーナスベクトル=0xC000に関連付けられ得る。
図18に、一態様による、コンポーネントキャッシュに割り振られた予約済みキャッシュウェイおよびボーナスキャッシュウェイを有する例のシステムキャッシュメモリを示す。図17内の例を継続すると、第2のコンポーネントキャッシュは、システムキャッシュ1500内のキャッシュウェイ1506〜1518を使用することができる。上で注記したように、キャッシュウェイ1506〜1518は、第2のコンポーネントキャッシュの使用済みベクトルの範囲内に含まれ得る。キャッシュウェイ1506〜1518は、コンピューティングデバイスがキャッシュウェイ1506〜1518を第2のコンポーネントキャッシュに割り振るために、別のコンポーネントキャッシュによって予約されないものとすることができる。しかしながら、キャッシュウェイ1506および1508は、図17に示されたキャッシュウェイ1502〜1508を含む、予約済みキャッシュウェイ1700とオーバーラップする。キャッシュウェイ1506〜1518を第2のコンポーネントキャッシュに割り振るために、コンピューティングデバイスは、キャッシュウェイ1506および1508を予約解除するために第1のコンポーネントキャッシュを非アクティブ化し、キャッシュウェイ1502〜1518を第2のコンポーネントキャッシュに割り振ることができる。第2のコンポーネントキャッシュは、第2のコンポーネントキャッシュのボーナスキャッシュベクトル内に含まれる第1のコンポーネントキャッシュの非アクティブ化によって、予約済みキャッシュウェイ1702と余分なキャッシュウェイ1502および1504とを含む予約済みキャッシュウェイ1800を割り振られ得る。
図19に、セットおよびウェイによってコンポーネントキャッシュにパーティショニングされたシステムキャッシュメモリのコンポーネントキャッシュにアクセスするための態様方法1900を示す。方法1900は、システムキャッシュコントローラによるなど、本明細書で説明されるコンピューティングデバイスによって実行され得る。ブロック1902において、コンピューティングデバイスは、コンポーネントキャッシュ構成テーブルをロードすることができる。静的コンポーネントキャッシュ構成テーブルを有する一態様において、コンポーネントキャッシュ構成テーブルのローディングは、コンピューティングデバイスのブート時中に行われ得、コンポーネントキャッシュ構成テーブルは、システムキャッシュに関して可能とすることができるコンポーネントキャッシュのすべての組合せを投入され得る。コンポーネントキャッシュ構成テーブルは、少なくとも、コンポーネントキャッシュ識別子、セットシフト特色、セットオフセット特色、およびターゲットウェイ特色を投入され得る。本明細書で説明される動的コンポーネントキャッシュ構成テーブルを有する一態様において、コンポーネントキャッシュ構成テーブルは、ブート時またはコンポーネントキャッシュアクセスの最初の要求時にロードされ得る。動的コンポーネントキャッシュ構成テーブルは、コンピューティングデバイスによって保存された可能性があるコンポーネントキャッシュ構成テーブルの最新版からロードされ得、あるいは、受け取られたコンポーネントキャッシュアクセス要求に基づいて投入される空のテーブルとすることができる。
ブロック1904において、コンピューティングデバイスは、システムキャッシュアクセス要求を受け取ることができる。上で説明したように、システムキャッシュアクセス要求は、コンピューティングデバイス上のクライアントから発し、システムキャッシュコントローラによって受け取られ得る。システムキャッシュ要求は、システムキャッシュから読み取りまたはこれに書き込む要求、コンポーネントキャッシュ識別子、コンポーネントキャッシュ特色、システムキャッシュの物理アドレス、およびカスタムインデックスを含むことができる。判定ブロック1906において、コンピューティングデバイスは、システムキャッシュアクセス要求がコンポーネントキャッシュ識別子(CCID)を含むかどうかを判定する。システムキャッシュアクセス要求がコンポーネントキャッシュ識別子を含まないとの判定(すなわち、判定ブロック1906=「No」)に応答して、コンピューティングデバイスは、ブロック1908において、システムキャッシュアクセス要求を、既知の方法によって通常のアクセス要求として扱うことができる。
システムキャッシュアクセス要求がコンポーネントキャッシュ識別子を含むとの判定(すなわち、判定ブロック1906=「Yes」)に応答して、コンピューティングデバイスは、ブロック1910において、コンポーネントキャッシュ構成テーブル内でコンポーネントキャッシュ識別子に相関するレコードをルックアップすることができる。上で説明したように、コンポーネントキャッシュ構成テーブルが静的である一態様において、システムキャッシュのコンポーネントキャッシュ識別子を有するすべての可能なコンポーネントキャッシュのレコードがある。オプションのブロック1912において、コンピューティングデバイスは、すでにレコード内にあるコンポーネントキャッシュ特色とは異なる可能性がある受け取られたコンポーネントキャッシュ特色のいずれかを用いてコンポーネントキャッシュ構成テーブル内のコンポーネントキャッシュ識別子に対応するレコードを更新することができる。代替案では、コンピューティングデバイスは、レコード内のコンポーネントキャッシュ特色が異なるかどうかを判定せずに、それらのコンポーネントキャッシュ特色のすべてを置換することができる。
ブロック1914において、コンピューティングデバイスは、システムキャッシュアクセス要求と共に受け取られた物理アドレスを、システムキャッシュ内のコンポーネントキャッシュの対応する物理アドレスに変換することができる。本明細書でより詳細に説明されるように、アドレスの変換は、コンポーネントキャッシュのインデクシングモード特色が物理インデクシングか、それともカスタムインデクシングかを判定することを含むことができる。
判定ブロック1916において、コンピューティングデバイスは、コンポーネントキャッシュが使用可能であるかどうかを判定することができる。本明細書でさらに説明されるように、コンポーネントキャッシュが使用可能であるかどうかの判定は、コンポーネントキャッシュのシステムキャッシュ位置がコンピューティングデバイスの別のクライアントのために予約されているかどうかを判定することを含むことができる。コンポーネントキャッシュが使用可能ではないとの判定(すなわち、判定ブロック1916=「No」)に応答して、コンピューティングデバイスは、ブロック1918において、コンポーネントキャッシュが使用可能になるまでシステムキャッシュアクセス要求を保留することができる。ブロック1920において、コンピューティングデバイスは、要求された読取動作または書込動作を実施するために、システムキャッシュアクセス要求のコンポーネントキャッシュ識別子に関連するコンポーネントキャッシュにアクセスすることができる。
図20に、セットおよびウェイによってコンポーネントキャッシュにパーティショニングされたシステムキャッシュメモリのコンポーネントキャッシュにアクセスするための態様方法2000を示す。方法2000は、システムキャッシュコントローラによるなど、本明細書で説明されるコンピューティングデバイスによって実行され得る。一態様において、方法2000は、本明細書で説明されるロードされた動的コンポーネントキャッシュ構成テーブルに関して実施され得る。ブロック2002において、コンピューティングデバイスは、システムキャッシュアクセス要求を受け取ることができる。上で説明したように、システムキャッシュアクセス要求は、コンピューティングデバイス上のクライアントから発し、システムキャッシュコントローラによって受け取られ得る。システムキャッシュアクセス要求は、システムキャッシュから読み取りまたはこれに書き込む要求、コンポーネントキャッシュ識別子、コンポーネントキャッシュ特色、システムキャッシュの物理アドレス、およびカスタムインデックスを含むことができる。
判定ブロック2004において、コンピューティングデバイスは、システムキャッシュアクセス要求がコンポーネントキャッシュ識別子(CCID)を含むかどうかを判定する。システムキャッシュアクセス要求がコンポーネントキャッシュ識別子を含まないとの判定(すなわち、判定ブロック2004=「No」)に応答して、コンピューティングデバイスは、ブロック2006において、システムキャッシュアクセス要求を、既知の方法によって通常のアクセス要求として扱うことができる。
システムキャッシュアクセス要求がコンポーネントキャッシュ識別子を含むとの判定(すなわち、判定ブロック2004=「Yes」)に応答して、コンピューティングデバイスは、判定ブロック2008において、コンポーネントキャッシュ識別子のレコードがコンポーネントキャッシュ構成テーブル内に存在するかどうかを判定することができる。動的コンポーネントキャッシュ構成テーブルにおいては、コンポーネントキャッシュ識別子のレコードが、ロードされたコンポーネントキャッシュ構成テーブルの一部ではない場合があり、あるいは、レコードが、たとえばコンポーネントキャッシュが非アクティブ化される時にテーブルから除去される可能性があるので、コンポーネントキャッシュ識別子のレコードは、コンポーネントキャッシュ構成テーブル内に存在する場合と存在しない場合とがある。
コンポーネントキャッシュのレコードがコンポーネントキャッシュ構成テーブル内に存在しないとの判定(すなわち、判定ブロック2008=「No」)に応答して、コンピューティングデバイスは、ブロック2010において、コンポーネントキャッシュ構成テーブル内にコンポーネントキャッシュのレコードを作成することができる。一態様において、システムキャッシュコントローラは、コンポーネントキャッシュ構成テーブル内にコンポーネントキャッシュのレコードを作成するために、コンポーネントキャッシュ識別子およびコンポーネントキャッシュ特色を含む、システムキャッシュアクセス要求と共に提供される情報を使用することができる。
コンポーネントキャッシュのレコードがコンポーネントキャッシュ構成テーブル内に存在するとの判定(すなわち、判定ブロック2008=「Yes」)に応答して、コンピューティングデバイスは、ブロック2012において、コンポーネントキャッシュ構成テーブル内でコンポーネントキャッシュ識別子に相関するレコードをルックアップすることができる。オプションのブロック2014において、コンピューティングデバイスは、すでにレコード内にあるコンポーネントキャッシュ特色とは異なる可能性がある受け取られたコンポーネントキャッシュ特色のいずれかを用いてコンポーネントキャッシュ構成テーブル内のコンポーネントキャッシュ識別子に対応するレコードを更新することができる。代替案では、コンピューティングデバイスは、レコード内のコンポーネントキャッシュ特色が異なるかどうかを判定せずに、それらのコンポーネントキャッシュ特色のすべてを置換することができる。
ブロック2016において、コンピューティングデバイスは、システムキャッシュアクセス要求と共に受け取られた物理アドレスを、システムキャッシュ内のコンポーネントキャッシュの対応する物理アドレスに変換することができる。本明細書でより詳細に説明されるように、アドレスの変換は、コンポーネントキャッシュのインデクシングモード特色が物理インデクシングか、それともカスタムインデクシングかを判定することを含むことができる。
判定ブロック2018において、コンピューティングデバイスは、コンポーネントキャッシュが使用可能であるかどうかを判定することができる。本明細書で説明されるように、コンポーネントキャッシュが使用可能であるかどうかの判定は、コンポーネントキャッシュのシステムキャッシュ位置がコンピューティングデバイスの別のクライアントのために予約されているかどうかを判定することを含むことができる。コンポーネントキャッシュが使用可能ではないとの判定(すなわち、判定ブロック2018=「No」)に応答して、コンピューティングデバイスは、ブロック2020において、コンポーネントキャッシュが使用可能になるまでシステムキャッシュアクセス要求を保留することができる。ブロック2022において、コンピューティングデバイスは、要求された読取動作または書込動作を実施するために、システムキャッシュアクセス要求のコンポーネントキャッシュ識別子に関連するコンポーネントキャッシュにアクセスすることができる。
図21に、セットおよびウェイによってコンポーネントキャッシュにパーティショニングされたシステムキャッシュメモリのコンポーネントキャッシュにアクセスするためにキャッシュメモリアドレスを変換するための態様方法2100を示す。方法2100は、図19内の方法1900のブロック1914の一部として、および図20内の方法2000のブロック2016の一部として、実施され得る。方法2100は、システムキャッシュコントローラによるなど、本明細書で説明されるコンピューティングデバイスによって実行され得る。
判定ブロック2102において、コンピューティングデバイスは、相関されたコンポーネントキャッシュ識別子のインデクシングモード特色が物理インデクシングを示すか、それともカスタムインデクシングを示すかを判定することができる。コンピューティングデバイスは、インデクシングモードが物理インデクシングを示すか、それともカスタムインデクシングを示すかを判定するために、相関されたコンポーネントキャッシュ識別子のレコードに関してコンポーネントキャッシュ構成テーブル内のインデクシングモード特色フィールドをチェックすることができる。相関されたコンポーネントキャッシュ識別子のインデクシングモード特色がカスタムインデクシングを示すとの判定(すなわち、判定ブロック2102=「CI」)に応答して、コンピューティングデバイスは、ブロック2104において、受け取られた物理アドレスのセットインデックスの中央ビットを受け取られたカスタムインデックスに置換することができる。上で注記したように、セットインデックスの中央ビットは、セットインデックスからシフトアウトされる最上位ビットと、コンポーネントキャッシュの物理アドレスのセットインデックスの下位ビットに転移されるセットインデックスの下位ビットとの間のビットである。
ブロック2106において、コンピューティングデバイスは、受け取られた物理アドレスのセットインデックスの複数の最上位ビットをシフトアウトすることができる。セットインデックスのシフトアウトされる最上位ビットの個数は、コンポーネントキャッシュ構成テーブル内の対応するコンポーネントキャッシュ識別子のセットシフト特色の値によって決定され得る。ブロック2108において、コンピューティングデバイスは、受け取られた物理アドレスのタグにセットインデックスのシフトされた最上位ビットを付加し、シフトされたビットと組み合わされたタグをタグとして使用することができる。ブロック2110において、コンピューティングデバイスは、コンポーネントキャッシュ構成テーブル内に対応するコンポーネントキャッシュ識別子のセットオフセット特色の値を挿入することができる。ブロック2112において、コンピューティングデバイスは、受け取られた物理アドレスの同一のブロックオフセットを使用することができる。したがって、システムキャッシュ内のコンポーネントキャッシュの物理アドレスは、システムキャッシュアクセス要求に関して受け取られた物理アドレスの関数であり、ここで、セットインデックスは、最上位ビットをシフトすることと、シフトされたビットを指定された値に置換することと、同一の中央ビットを使用することまたはそれらをカスタムインデックスに置換することの二者択一と、同一の下位ビットを使用することと、シフトされたビットを付加された同一のタグを使用することと、同一のブロックオフセットを使用することとによって、受け取られたセットインデックスから変更される。
図22に、セットおよびウェイによってコンポーネントキャッシュにパーティショニングされたシステムキャッシュメモリのコンポーネントキャッシュを動的にアクティブ化するための態様方法2200を示す。方法2200は、アクティブ化されたコンポーネントキャッシュのシステムキャッシュ位置の一部またはすべてがクライアントのために予約され得、これによって他のクライアントがシステムキャッシュの動的にパーティショニングされる部分を使用することを防ぐので、コンポーネントキャッシュを使用するシステムキャッシュの動的パーティショニングとも考えられ得る。方法2200は、図19内の方法1900のブロック1916〜1920の一部として、および図20内の方法2000のブロック2018〜2022の一部として実施され得る。方法2200は、システムキャッシュコントローラによるなど、本明細書で説明されるコンピューティングデバイスによって実行され得る。
ブロック2202において、コンピューティングデバイスは、コンポーネントキャッシュ識別子のコンポーネントキャッシュ位置に関してコンポーネントキャッシュ予約テーブル内のシステムキャッシュ位置の予約インジケータをチェックすることができる。本明細書で説明されるように、コンポーネントキャッシュ位置、およびこれによってシステムキャッシュ位置は、コンポーネントキャッシュ構成テーブル内のコンポーネントキャッシュ識別子の、セットシフト特色、セットオフセット特色、およびターゲットウェイの組合せによって決定され得る。一態様において、予約されたコンポーネントキャッシュ位置は、コンポーネントキャッシュアクティブウェイテーブル内のコンポーネントキャッシュ識別子のアクティブウェイによっても調整され得る。アクティブウェイは、予約された位置を示すことができ、ターゲットウェイは、予約された位置またはコンポーネントキャッシュによって使用され、予約され得るが必ずしも使用されずまたは予約されないタグの全体のいずれかを示すことができる。
判定ブロック2204において、コンピューティングデバイスは、コンポーネントキャッシュ位置が予約されているかどうかを判定することができる。上で議論したように、コンポーネントキャッシュ位置が予約されているかどうかは、アクティブウェイコンポーネントキャッシュテーブル内の対応するコンポーネントキャッシュのアクティブウェイに依存することができる。コンポーネントキャッシュ位置が予約されているとの判定(すなわち、判定ブロック2204=「Yes」)に応答して、コンピューティングデバイスは、ブロック2202において、位置が予約されているかどうかをもう一度チェックすることができる。
コンポーネントキャッシュ位置が予約されていないとの判定(すなわち、判定ブロック2204=「No」)に応答して、コンピューティングデバイスは、ブロック2206において、コンポーネントキャッシュ識別子に関してアクティブウェイテーブルを更新することができる。コンポーネントキャッシュ識別子に関するアクティブウェイテーブルの更新は、システムキャッシュアクセス要求のコンポーネントキャッシュが、コンポーネントキャッシュ識別子のセットシフト特色、セットオフセット特色、およびアクティブウェイによって表されるシステムキャッシュメモリ位置を予約する可能性があることを示す。ブロック2208において、コンピューティングデバイスは、コンポーネントキャッシュのコンポーネントキャッシュ予約テーブル内でシステムキャッシュ位置の予約インジケータを更新することができる。システムキャッシュ位置がコンポーネントキャッシュ予約テーブル内でコンポーネントキャッシュに関して予約された後に、これらの位置は、特定の要求するクライアントのために予約されているので、システムキャッシュの残りから有効に動的にパーティショニングされる。システムキャッシュの予約された位置へのアクセスを要求する他のクライアントは、予約された位置がその位置を予約したクライアントに関して非アクティブ化されるまで、予約された位置へのアクセスを拒否され得る。
図23に、セットおよびウェイによってコンポーネントキャッシュにパーティショニングされたシステムキャッシュメモリのコンポーネントキャッシュを動的に非アクティブ化するための態様方法2300を示す。方法2300は、図19内の方法1900のブロック1920の一部として、および図20内の方法2000のブロック622の一部として実施され得る。方法2300は、システムキャッシュコントローラによるなど、本明細書で説明されるコンピューティングデバイスによって実行され得る。ブロック2302において、コンピューティングデバイスは、システムキャッシュアクセス要求のコンポーネントキャッシュ識別子に関連するコンポーネントキャッシュの予約された位置から読み取り、かつ/またはこれに書き込むことができる。判定ブロック2304において、コンピューティングデバイスは、システムキャッシュアクセスが完了したかどうかを判定することができる。システムキャッシュアクセスが完了していないとの判定(すなわち、判定ブロック2304=「No」)に応答して、コンピューティングデバイスは、ブロック2302において、コンポーネントキャッシュの予約された位置からの読取および/またはこれへの書込を継続することができる。システムキャッシュアクセスが完了したとの判定(すなわち、判定ブロック2304=「Yes」)に応答して、コンピューティングデバイスは、ブロック2306において、コンポーネントキャッシュによって予約された位置を解放/非アクティブ化するために、コンポーネントキャッシュ予約テーブル内のシステムキャッシュ位置の予約インジケータを更新することができる。
一態様において、システムキャッシュ空間がそれのために予約されるクライアントは、追加のまたはより少ないコンポーネントキャッシュ空間を動的に要求し、これによってシステムキャッシュ空間を予約することができる。方法2200において、より多くの空間を要求するクライアントは、まだ予約されていないコンポーネントキャッシュのシステムキャッシュ位置に関してそれを行うことができる。方法2300において、より少ない空間を要求するクライアントは、コンポーネントキャッシュの予約されたシステムキャッシュ位置の一部のみのアクセスを完了することによってそれを行うことができる。
図24に、セットおよびウェイによってコンポーネントキャッシュにパーティショニングされたシステムキャッシュメモリのコンポーネントキャッシュを動的にサイズ変更するための態様方法2400を示す。方法2400は、図19内の方法1900のブロック1916〜1920の一部として、および図20内の方法2000ブロック2018〜2022の一部として実施され得る。方法2400は、システムキャッシュコントローラによるなど、本明細書で説明されるコンピューティングデバイスによって実行され得る。ブロック2402において、コンピューティングデバイスは、少なくとも1つのコンポーネントキャッシュ識別子のボーナスベクトルをロードすることができる。上で議論したように、ボーナスベクトルは、ボーナスベクトルに関するコンポーネントキャッシュ識別子に関連する関連するコンポーネントキャッシュがそれに拡張するための1つまたは複数のキャッシュウェイを示すことができる。ボーナスベクトルのロードは、ブート時および/またはランタイムに行われ得、ボーナスベクトルは、レジスタ内に記憶され得る。コンピューティングデバイスは、ボーナスベクトルのすべてまたは一部をロードすることができる。ブロック2404において、コンピューティングデバイスは、少なくとも1つのコンポーネントキャッシュ識別子の予約済みベクトルを受け取ることができる。上で議論したように、予約済みベクトルは、予約済みベクトルに関するコンポーネントキャッシュ識別子に関連する関連するコンポーネントキャッシュのために予約される1つまたは複数のキャッシュウェイを示すことができる。
判定ブロック2406において、コンピューティングデバイスは、予約済みベクトルの1つまたは複数のキャッシュウェイが別のコンポーネントキャッシュによって予約されているかどうかを判定することができる。この判定を行うために、コンピューティングデバイスは、上で議論した式を実施することができる。予約済みベクトルのキャッシュウェイが別のコンポーネントキャッシュによって予約されているとの判定(すなわち、判定ブロック2406=「Yes」)に応答して、コンピューティングデバイスは、ブロック2408において、他のコンポーネントキャッシュを非アクティブ化することができる。他のコンポーネントキャッシュの非アクティブ化は、他のコンポーネントキャッシュによって予約されたキャッシュを予約解除し、これによって、予約済みベクトルのキャッシュウェイとオーバーラップするキャッシュウェイを予約解除することをもたらすことができる。予約済みベクトルのキャッシュウェイが非予約済みであるとの判定(すなわち、判定ブロック2406=「No」)に応答して、コンピューティングデバイスは、判定ブロック2410において、コンポーネントキャッシュの使用が関連するボーナスベクトルのキャッシュウェイのうちの1つまたは複数を使用することを含むかどうかを判定することができる。
コンポーネントキャッシュの使用が関連するボーナスベクトルのキャッシュウェイのうちの1つまたは複数を使用することを含まないとの判定(すなわち、判定ブロック2410=「No」)に応答して、コンピューティングデバイスは、ブロック2412において、関連するコンポーネントキャッシュの非予約済みキャッシュウェイを予約することができる。キャッシュウェイの予約は、予約済みキャッシュウェイデータを含むレジスタに予約済みベクトルを書き込むことによって達成され得る。コンポーネントキャッシュの使用が関連するボーナスベクトルのキャッシュウェイのうちの1つまたは複数を使用することを含むとの判定(すなわち、判定ブロック2410=「Yes」)に応答して、コンピューティングデバイスは、判定ブロック2414において、ボーナスベクトルの1つまたは複数のキャッシュウェイが別のコンポーネントキャッシュによって予約されているかどうかを判定することができる。ボーナスベクトルの1つまたは複数のキャッシュウェイが別のコンポーネントキャッシュによって予約されていないとの判定(すなわち、判定ブロック2414=「No」)に応答して、コンピューティングデバイスは、ブロック2412において、関連するコンポーネントキャッシュの非予約済みキャッシュウェイを予約することができる。ボーナスベクトルの1つまたは複数のキャッシュウェイが別のコンポーネントキャッシュによって予約されているとの判定(すなわち、判定ブロック2414=「Yes」)に応答して、コンピューティングデバイスは、ブロック2416において、他のコンポーネントキャッシュを非アクティブ化することができる。ブロック2412において、コンピューティングデバイスは、関連するコンポーネントキャッシュの非予約済みキャッシュウェイを予約することができる。
図25に、様々な態様と共に使用するのに適する例のモバイルデバイスを示す。モバイルデバイス2500は、タッチスクリーンコントローラ2504および内部メモリ2506に結合されたプロセッサ2502を含むことができる。プロセッサ2502は、一般の処理タスクまたは特定の処理タスクに関して指定された1つまたは複数のマルチコア集積回路とすることができる。内部メモリ2506は、揮発性メモリまたは不揮発性メモリとすることができ、セキュアメモリおよび/もしくは暗号化されたメモリ、アンセキュアメモリおよび/もしくは暗号化されないメモリ、またはその任意の組合せとすることもできる。活用され得るメモリタイプの例は、DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM、および埋め込みDRAMを含むが、これに限定されない。タッチスクリーンコントローラ2504およびプロセッサ2502は、抵抗感知タッチスクリーン、容量感知タッチスクリーン、赤外線感知タッチスクリーンなどのタッチスクリーンパネル2512に結合されることも可能である。加えて、コンピューティングデバイス2500のディスプレイは、タッチスクリーン機能を有する必要はない。
モバイルデバイス2500は、お互いおよび/またはプロセッサ2502に結合された、通信を送り、受信するための1つまたは複数の無線信号トランシーバ2508(たとえば、Peanut、Bluetooth(登録商標)、Zigbee、Wi-Fi、RF無線)およびアンテナ2510を有することができる。トランシーバ2508およびアンテナ2510は、様々なワイヤレス送信プロトコルスタックおよびインターフェースを実施するために、上述の回路と共に使用され得る。モバイルデバイス2500は、セルラーネットワークを介する通信を可能にし、プロセッサに結合されたセルラーネットワークワイヤレスモデムチップ2516を含むことができる。
モバイルデバイス2500は、プロセッサ2502に結合された周辺デバイス接続インターフェース2518を含むことができる。周辺デバイス接続インターフェース2518は、1つのタイプの接続を受け入れるように単独で構成され得、あるいは、USB、FireWire、Thunderbolt、またはPCIeなど、一般的なまたはプロプライエタリの様々なタイプの物理接続および通信接続を受け入れるように構成され得る。周辺デバイス接続インターフェース2518は、同様に構成された周辺デバイス接続ポート(図示せず)にも結合され得る。
モバイルデバイス2500は、オーディオ出力を提供するためのスピーカ2514をも含むことができる。モバイルデバイス2500は、プラスチック、金属、または材料の組合せから構成された、本明細書で議論されるコンポーネントのすべてまたはいくつかを収容するためのハウジング2520をも含むことができる。モバイルデバイス2500は、使い捨てバッテリーまたは再充電可能バッテリーなど、プロセッサ2502に結合された電源2522を含むことができる。再充電可能バッテリーは、モバイルデバイス2500の外部にある電源から充電電流を受けるために、周辺デバイス接続ポートにも結合され得る。モバイルデバイス2500は、ユーザ入力を受け取るための物理ボタン2524をも含むことができる。モバイルデバイス2500は、モバイルデバイス2500をオンおよびオフに切り替えるための電源ボタン2526を含むことができる。
上で説明した様々な態様は、図26に示されたラップトップコンピュータ2600などの様々なモバイルデバイス内でも実施され得る。多くのラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドタッチ面2617を含み、したがって、タッチスクリーンディスプレイを装備した上で説明したコンピューティングデバイス上で実施されるものと同様のドラッグジェスチャ、スクロールジェスチャ、およびフリックジェスチャを受け取ることができる。ラップトップコンピュータ2600は通常、揮発性メモリ2612と、フラッシュメモリのディスク(disk)ドライブ2613などの大容量不揮発性メモリとに結合されたプロセッサ2611を含む。加えて、ラップトップコンピュータ2600は、プロセッサ2611に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ2616に接続され得る、電磁放射を送り、受信するための1つまたは複数のアンテナ2608を有することができる。コンピュータ2600は、プロセッサ2611に結合されたフロッピーディスク(disk)ドライブ2614およびコンパクトディスク(disc)(CD)ドライブ2615を含むことができる。ノートブック構成において、コンピュータハウジングは、すべてがプロセッサ2611に結合された、タッチパッド2617、キーボード2618、およびディスプレイ2619を含む。コンピューティングデバイスの他の構成は、様々な態様に関連しても使用され得る、周知のようにプロセッサに結合される(たとえば、USB入力を介して)コンピュータマウスまたはトラックボールを含むことができる。
様々な態様の動作を実行するためのプログラマブルプロセッサ上での実行のためのコンピュータプログラムコードまたは「プログラムコード」は、C、C++、C#、Smalltalk、Java(登録商標)、JavaScript(登録商標)、Visual Basic、構造化照会言語(たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語または様々な他のプログラミング言語で記述され得る。本出願において使用される時に、コンピュータ可読記憶媒体上に記憶されたプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である機械語コード(オブジェクトコードなど)を指すことができる。
多くのコンピューティングデバイスオペレーティングシステムカーネルは、ユーザ空間(非特権コードが走行する)およびカーネル空間(特権コードが走行する)に編成される。この分離は、カーネル空間の一部であるコードが一般公有使用許諾(GPL)許諾されなければならない一方で、ユーザ空間内で走行するコードがGPL許諾されなくてもよい、Androidおよび他のGPL環境において特に重要である。本明細書で議論される様々なソフトウェアコンポーネント/モジュールは、別段に明記されていない限り、カーネル空間またはユーザ空間のいずれかにおいて実施され得ることを理解されたい。
前述の方法の説明およびプロセス流れ図は、単に例示的な例として提供され、様々な態様の動作が提示された順序で実行されなければならないことを要求しまたは暗示することは意図されていない。当業者によって了解されるように、前述の態様における動作の順序は、任意の順序で実行され得る。「その後」、「次いで」、「次に」などの語は、動作の順序を限定するものではなく、これらの語は単に、方法の説明を通じて読者を導くために使用される。さらに、たとえば、冠詞「a」、「an」または「the」を使用する、単数形での請求項の要素へのいかなる言及も、その要素を単数形に限定するものとして解釈されるべきではない。
様々な態様に関連して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズム動作は、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実施され得る。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、および動作は、上では全般的にそれらの機能に関して説明された。そのような機能がハードウェアとして実施されるか、それともソフトウェアとして実施されるのかは、特定の応用例と全体的なシステムに課された設計制約とに依存する。当業者は、特定の応用例ごとに変化する形で、説明された機能性を実施することができるが、そのような実施判断が、本発明の範囲からの逸脱を引き起こすと解釈されてはならない。
本明細書で開示される態様に関連して説明された様々な例示的な論理、論理ブロック、モジュール、および回路を実施するのに使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、ディスクリートゲート論理もしくはトランジスタ論理、ディスクリートハードウェアコンポーネント、または本明細書で説明された機能を実行するように設計されたそれらの任意の組合せを用いて実施されまたは実行され得る。汎用プロセッサは、マイクロプロセッサとすることができるが、代替案では、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械とすることができる。プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPおよびマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアに関連する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成としても実施され得る。代替案では、一部の動作または方法が、所与の機能に固有の回路網によって実行され得る。
1つまたは複数の態様において、説明される機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実施され得る。ソフトウェアにおいて実施される場合に、機能は、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体上に1つまたは複数の命令またはコードとして記憶され得る。本明細書で開示される方法またはアルゴリズムの動作は、非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュールにおいて実施され得る。非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体とすることができる。限定ではなく例として、そのような非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスク(disc)ストレージ、磁気ディスク(disk)ストレージもしくは他の磁気ストレージデバイス、または命令もしくはデータ構造の形で所望のプログラムコードを記憶するのに使用され得、コンピュータによってアクセスされ得る任意の他の媒体を含むことができる。ディスク(diskおよびdisc)は、本明細書で使用される時に、コンパクトディスク(disc) (CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc) (DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、diskは、通常はデータを磁気的に再生し、discは、レーザを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読記憶媒体および非一時的プロセッサ可読記憶媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品内に組み込まれ得る、非一時的プロセッサ可読記憶媒体および/または非一時的コンピュータ可読記憶媒体上に、コードおよび/もしくは命令の1つまたはその任意の組合せもしくはセットとして存在することができる。
開示される態様の先行する説明は、当業者が本発明を製作しまたは使用することを可能にするために提供される。これらの態様に対する様々な変更は、当業者に容易に明らかになり、本明細書で定義される包括的な原理は、本発明の趣旨または範囲から逸脱することなく、他の態様に適用され得る。したがって、本発明は、本明細書に示された態様に限定されるものではなく、以下の特許請求の範囲ならびに本明細書で開示されする原理および新規の特徴と一致する最も広い範囲を与えられるべきである。