(57)【特許請求の範囲】
【請求項１】
ポータブルコンピューティングデバイス(PCD)におけるビクティムキャッシュの改善された動作のための方法であって、
上位レベルキャッシュに対するビクティムとして下位レベルキャッシュを動作させるステップであって、前記下位レベルキャッシュが複数のキャッシュラインを含む、ステップと、
下位レベルビクティムキャッシュに関連してフィルタを動作させるステップと、
前記下位レベルビクティムキャッシュに含まれる前記複数のキャッシュラインを反映するために前記フィルタを更新するステップと、
前記上位レベルキャッシュにミスがあった場合に、要求されたキャッシュラインが、前記下位レベルキャッシュに含まれる前記複数のキャッシュラインのうちの1つであるかどうかを判定するステップであって、前記判定するステップが、前記下位レベルビクティムキャッシュに関連付けられた前記フィルタをチェックするステップを含む、ステップと、
前記判定が、前記要求されたキャッシュラインが、前記下位レベルキャッシュに含まれる前記複数のキャッシュラインのうちの1つであるというものである場合に、前記要求されたキャッシュラインを前記下位レベルビクティムキャッシュから取り出すステップと、
前記判定が、前記要求されたキャッシュラインが、前記下位レベルキャッシュに含まれる前記複数のキャッシュラインのうちの1つではないというものである場合に、前記下位レベルビクティムキャッシュをバイパスし、前記上位レベルキャッシュと通信しているメモリコントローラに前記キャッシュラインを要求するステップと
を含み、
前記フィルタはブルームフィルタであり、
前記下位レベルビクティムキャッシュに含まれる前記複数のキャッシュラインを反映するために前記フィルタを更新するステップは、前記上位レベルキャッシュからのキャッシュラインキャストアウトが前記下位レベルビクティムキャッシュによって受け入れられていることを示すために前記ブルームフィルタを更新するステップをさらに含み、
前記上位レベルキャッシュからのキャッシュラインキャストアウトが前記下位レベルビクティムキャッシュによって受け入れられていることを示すために前記ブルームフィルタを更新するステップは、前記下位レベルキャッシュからのキャッシュラインキャストアウトがクリーンデータキャッシュラインを含むときに、データなしの追出しメッセージを発信するステップをさらに含む、方法。
【請求項２】
前記上位レベルキャッシュは、プロセッサに関連付けられたL2キャッシュを含み、
前記下位レベルビクティムキャッシュは、インターコネクトを介して前記L2キャッシュと通信しているL3キャッシュを含む、請求項1に記載の方法。
【請求項３】
前記下位レベルビクティムキャッシュに含まれる前記複数のキャッシュラインを反映するために前記フィルタを更新するステップは、
前記下位レベルビクティムキャッシュからの追い出されたキャッシュラインが前記下位レベルビクティムキャッシュにもはや存在しないことを示すために前記ブルームフィルタを更新するステップ
をさらに含む、請求項1に記載の方法。
【請求項４】
前記フィルタは、前記下位レベルビクティムキャッシュのための直列化のポイントと通信している、請求項1に記載の方法。
【請求項５】
直列化の前記ポイントは、前記フィルタの一部分を含む、請求項4に記載の方法。
【請求項６】
前記下位レベルビクティムキャッシュをバイパスし、前記上位レベルキャッシュと通信しているメモリコントローラに前記キャッシュラインを要求するステップは、
前記メモリコントローラと通信している非キャッシュメモリに前記キャッシュラインを要求するステップ
をさらに含む、請求項1に記載の方法。
【請求項７】
前記上位レベルキャッシュは、プロセッサに関連付けられた第1のL2キャッシュを含み、
前記下位レベルビクティムキャッシュは、インターコネクトを介して前記第1のL2キャッシュと通信している第2のL2キャッシュを含む、請求項1に記載の方法。
【請求項８】
ポータブルコンピューティングデバイス(PCD)におけるシステムオンチップ(SoC)のためのコンピュータシステムであって、
上位レベルキャッシュと、
前記上位レベルキャッシュと通信しており、前記上位レベルキャッシュに対するビクティムとして動作するように構成され、複数のキャッシュラインを含む下位レベルキャッシュと、
下位レベルビクティムキャッシュと通信しており、前記下位レベルビクティムキャッシュに含まれる前記複数のキャッシュラインを反映するように構成されたフィルタと、
論理手段と
を含み、前記論理手段は、
前記上位レベルキャッシュにミスがあった場合に、要求されたキャッシュラインが、前記下位レベルキャッシュに含まれる前記複数のキャッシュラインのうちの1つであるかどうかを、前記下位レベルビクティムキャッシュに関連付けられた前記フィルタをチェックすることによって判定し、
前記判定が、前記要求されたキャッシュラインが、前記下位レベルキャッシュに含まれる前記複数のキャッシュラインのうちの1つであるというものである場合に、前記要求されたキャッシュラインが前記下位レベルビクティムキャッシュから取り出されるようにし、
前記判定が、前記要求されたキャッシュラインが、前記下位レベルキャッシュに含まれる前記複数のキャッシュラインのうちの1つではないというものである場合に、前記下位レベルビクティムキャッシュをバイパスし、前記上位レベルキャッシュと通信しているメモリコントローラに前記キャッシュラインを要求する
ように構成され、
前記フィルタはブルームフィルタであり、
前記下位レベルビクティムキャッシュに含まれる前記複数のキャッシュラインを反映するように構成された前記フィルタは、前記上位レベルキャッシュからのキャッシュラインキャストアウトが前記下位レベルビクティムキャッシュによって受け入れられていることを反映するように構成された前記ブルームフィルタをさらに含む、コンピュータシステム。
【請求項９】
前記上位レベルキャッシュは、プロセッサに関連付けられたL2キャッシュを含み、
前記下位レベルビクティムキャッシュは、インターコネクトを介して前記L2キャッシュと通信しているL3キャッシュを含む、請求項8に記載のシステム。
【請求項１０】
前記上位レベルキャッシュからのキャッシュラインキャストアウトが前記下位レベルビクティムキャッシュによって受け入れられていることを反映するように構成された前記ブルームフィルタは、
前記下位レベルキャッシュからのキャッシュラインキャストアウトがクリーンデータキャッシュラインを含むときの、データなしの追出しメッセージ
をさらに含む、請求項8に記載のシステム。
【請求項１１】
前記下位レベルビクティムキャッシュに含まれる前記複数のキャッシュラインを反映するように構成された前記フィルタは、
前記下位レベルビクティムキャッシュからの追い出されたキャッシュラインが前記下位レベルビクティムキャッシュにもはや存在しないことを反映するように構成された前記ブルームフィルタ
をさらに含む、請求項8に記載のシステム。
【請求項１２】
前記下位レベルビクティムキャッシュと通信している直列化のポイントをさらに含む、請求項8に記載のシステム。
【請求項１３】
直列化の前記ポイントは、前記フィルタの一部分を含む、請求項12に記載のシステム。
【請求項１４】
前記メモリコントローラと通信している非キャッシュメモリを
さらに含み、前記下位レベルビクティムキャッシュをバイパスし、前記上位レベルキャッシュと通信しているメモリコントローラに前記キャッシュラインを要求するように構成される前記論理手段は、前記非キャッシュメモリに前記キャッシュラインを要求する
ようにさらに構成される、請求項8に記載のシステム。
【請求項１５】
前記上位レベルキャッシュは、プロセッサに関連付けられた第1のL2キャッシュを含み、
前記下位レベルビクティムキャッシュは、インターコネクトを介して前記第1のL2キャッシュと通信している第2のL2キャッシュを含む、請求項8に記載のシステム。
【請求項１６】
コンピュータ可読プログラムコードを具現した非一時的コンピュータ使用可能記憶媒体であって、前記コンピュータ可読プログラムコードは、ポータブルコンピューティングデバイス(PCD)におけるビクティムキャッシュの改善された動作のための方法を実装するために実行されるように適合され、前記方法は、
上位レベルキャッシュに対するビクティムとして下位レベルキャッシュを動作させるステップであって、前記下位レベルキャッシュが複数のキャッシュラインを含む、ステップと、
下位レベルビクティムキャッシュに関連してフィルタを動作させるステップと、
前記下位レベルビクティムキャッシュに含まれる前記複数のキャッシュラインを反映するために前記フィルタを更新するステップと、
前記上位レベルキャッシュにミスがあった場合に、要求されたキャッシュラインが、前記下位レベルキャッシュに含まれる前記複数のキャッシュラインのうちの1つであるかどうかを判定するステップであって、前記判定するステップが、前記下位レベルビクティムキャッシュに関連付けられた前記フィルタをチェックするステップを含む、ステップと、
前記判定が、前記要求されたキャッシュラインが、前記下位レベルキャッシュに含まれる前記複数のキャッシュラインのうちの1つであるというものである場合に、前記要求されたキャッシュラインを前記下位レベルビクティムキャッシュから取り出すステップと、
前記判定が、前記要求されたキャッシュラインが、前記下位レベルキャッシュに含まれる前記複数のキャッシュラインのうちの1つではないというものである場合に、前記下位レベルビクティムキャッシュをバイパスし、前記上位レベルキャッシュと通信しているメモリコントローラに前記キャッシュラインを要求するステップと
を含み、
前記フィルタはブルームフィルタであり、
前記下位レベルビクティムキャッシュに含まれる前記複数のキャッシュラインを反映するために前記フィルタを更新するステップは、前記上位レベルキャッシュからのキャッシュラインキャストアウトが前記下位レベルビクティムキャッシュによって受け入れられていることを示すために前記ブルームフィルタを更新するステップをさらに含み、
前記上位レベルキャッシュからのキャッシュラインキャストアウトが前記下位レベルビクティムキャッシュによって受け入れられていることを示すために前記ブルームフィルタを更新するステップは、前記下位レベルキャッシュからのキャッシュラインキャストアウトがクリーンデータキャッシュラインを含むときに、データなしの追出しメッセージを発信するステップをさらに含む、非一時的コンピュータ使用可能記憶媒体。
【請求項１７】
前記上位レベルキャッシュは、プロセッサに関連付けられたL2キャッシュを含み、
前記下位レベルビクティムキャッシュは、インターコネクトを介して前記L2キャッシュと通信しているL3キャッシュを含む、請求項16に記載の非一時的コンピュータ使用可能記憶媒体。
【請求項１８】
ポータブルコンピューティングデバイス(PCD)におけるビクティムキャッシュの改善された動作のためのコンピュータシステムであって、
上位レベルキャッシュに対するビクティムとして下位レベルキャッシュを動作させるための手段であって、前記下位レベルキャッシュが複数のキャッシュラインを含む、手段と、
下位レベルビクティムキャッシュに関連してフィルタを動作させるための手段と、
前記下位レベルビクティムキャッシュに含まれる前記複数のキャッシュラインを反映するために前記フィルタを更新するための手段と、
前記上位レベルキャッシュにミスがあった場合に、要求されたキャッシュラインが、前記下位レベルキャッシュに含まれる前記複数のキャッシュラインのうちの1つであるかどうかを判定するための手段であって、判定するための前記手段が、前記下位レベルビクティムキャッシュに関連付けられた前記フィルタをチェックするための手段を含む、手段と、
前記判定が、前記要求されたキャッシュラインが、前記下位レベルキャッシュに含まれる前記複数のキャッシュラインのうちの1つであるというものである場合に、前記要求されたキャッシュラインを前記下位レベルビクティムキャッシュから取り出すための手段と、
前記判定が、前記要求されたキャッシュラインが、前記下位レベルキャッシュに含まれる前記複数のキャッシュラインのうちの1つではないというものである場合に、前記下位レベルビクティムキャッシュをバイパスし、前記上位レベルキャッシュと通信しているメモリコントローラに前記キャッシュラインを要求するための手段と
を含み、
前記フィルタはブルームフィルタであり、
前記下位レベルビクティムキャッシュに含まれる前記複数のキャッシュラインを反映するために前記フィルタを更新するための前記手段は、前記上位レベルキャッシュからのキャッシュラインキャストアウトが前記下位レベルビクティムキャッシュによって受け入れられていることを示すために前記ブルームフィルタを更新するための手段をさらに含み、
前記上位レベルキャッシュからのキャッシュラインキャストアウトが前記下位レベルビクティムキャッシュによって受け入れられていることを示すために前記ブルームフィルタを更新するための前記手段は、前記下位レベルキャッシュからのキャッシュラインキャストアウトがクリーンデータキャッシュラインを含むときに、データなしの追出しメッセージを発信するための手段をさらに含む、システム。
【請求項１９】
前記上位レベルキャッシュは、プロセッサに関連付けられたL2キャッシュを含み、
前記下位レベルビクティムキャッシュは、インターコネクトを介して前記L2キャッシュと通信しているL3キャッシュを含む、請求項18に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ポータブルコンピューティングデバイスにおけるビクティムキャッシュモードを改善するためのシステムおよび方法に関する。
【背景技術】
【０００２】
ワイヤレス信号を含めて、様々な通信媒体を通じて他のデバイスと通信するプロセッサを備えたデバイスが至る所にある。ポータブルコンピューティングデバイス(PCD)を含むモバイルデバイスは、ワイヤレス手段、アナログ手段、デジタル手段、および他の手段を介して様々な他のデバイスと通信するために使用される場合がある。これらのモバイルデバイスは、モバイル電話、携帯情報端末(PDA)、ポータブルゲームコンソール、パームトップコンピュータ、タブレットコンピュータ、および他のポータブル電子デバイスを含む場合がある。
【０００３】
主要機能に加えて、PCDは、ゲームのダウンロードおよびプレイ、音楽のダウンロードおよび再生、ビデオのダウンロードおよび視聴、全地球測位システム(GPS)ナビゲーション、ウェブブラウジング、ならびにアプリケーションの実行のために、使用される場合もある。これらのますます増加する用途およびより高い性能の要求に応えるために、現代のPCDは一般に、PCDの様々な機能を制御または実行するための1つまたは複数のコア(たとえば、処理ユニット)を含んでいる。これらのPCDはまた、バスまたはインターコネクトを介して複数のコアまたは処理ユニットによって共有され得る、異なるレベルで階層的に配置されたキャッシュメモリを含み得る。
【０００４】
そのような階層型キャッシュメモリの性能を改善するために、アクセスが遅い大容量下位レベルキャッシュメモリが、アクセスが速い低容量上位レベルキャッシュメモリに対する「ビクティム」キャッシュとして動作し得る。そのような配置では、キャッシュラインが上位レベルキャッシュから除去されるか、または「追い出される」ことに伴い、階層における下位レベル「ビクティム」キャッシュは、上位レベルキャッシュにのみ対応し、上位レベルキャッシュによって完全にポピュレートされる(populated)。たとえば、プロセッサが上位レベルL2キャッシュからデータをフェッチすることがある。データがL2キャッシュにある場合、「ヒット」が生じ、データはプロセッサに提供される。データがL2キャッシュにない場合、「ミス」が生じ、要求されたデータは他の場所から取り出される。要求されたデータはまた、L2キャッシュに置かれ、L2キャッシュにおける既存のキャッシュラインに取って代わる。交換ポリシーによれば、既存のL2キャッシュラインは除去されるか、またはL3キャッシュなどの下位レベルビクティムキャッシュへと追い出される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、そのような「ビクティム」キャッシュシステムは、「ビクティム」キャッシュとして下位レベルキャッシュを動作させることによる利得によって正当化されない、キャッシュメモリによる余分な帯域幅および電力消費を生じさせ得る。したがって、ビクティムキャッシュモードの適応的実装のためのシステムおよび方法が必要である。加えて、「ビクティム」モードで動作しているとき、キャッシュメモリ自体の物理的配置は、キャッシュ間でデータが取り得る遠回りのルートに起因するレイテンシの増大につながり得る。したがって、ビクティムモードでのキャッシュの改善された動作のシステムおよび方法も必要である。
【課題を解決するための手段】
【０００６】
ポータブルコンピューティングデバイス(PCD)におけるビクティムキャッシュの改善された動作を可能にするシステムおよび方法が開示される。動作中、下位レベルキャッシュは、上位レベルキャッシュに対するビクティムとして動作し、下位レベルキャッシュが複数のキャッシュラインを含む。下位レベルビクティムキャッシュに関連してフィルタが動作し、下位レベルビクティムキャッシュに含まれる複数のキャッシュラインを反映するためにフィルタが更新される。上位レベルキャッシュにミスがあった場合、要求されたキャッシュラインが、下位レベルキャッシュに含まれる複数のキャッシュラインのうちの1つであるかどうかの判定が、下位レベルビクティムキャッシュに関連付けられたフィルタをチェックすることによって行われる。判定が、要求されたキャッシュラインが、下位レベルキャッシュに含まれる複数のキャッシュラインのうちの1つであるというものである場合、要求されたキャッシュラインが下位レベルビクティムキャッシュから取り出される。判定が、要求されたキャッシュラインが、下位レベルキャッシュに含まれる複数のキャッシュラインのうちの1つではないというものである場合、下位レベルビクティムキャッシュはバイパスされ、上位レベルキャッシュと通信しているメモリコントローラにキャッシュラインが要求される。
【０００７】
例示的な一実施形態は、ポータブルコンピューティングデバイス(PCD)におけるシステムオンチップ(SoC)のためのコンピュータシステムであって、本システムは、上位レベルキャッシュと、上位レベルキャッシュと通信しており、上位レベルキャッシュに対するビクティムとして動作するように構成され、複数のキャッシュラインを含む下位レベルキャッシュと、下位レベルビクティムキャッシュと通信しており、下位レベルビクティムキャッシュに含まれる複数のキャッシュラインを反映するように構成されたフィルタと、論理とを含み、論理は、上位レベルキャッシュにミスがあった場合に、要求されたキャッシュラインが、下位レベルキャッシュに含まれる複数のキャッシュラインのうちの1つであるかどうかを、下位レベルビクティムキャッシュに関連付けられたフィルタをチェックすることによって判定し、判定が、要求されたキャッシュラインが、下位レベルキャッシュに含まれる複数のキャッシュラインのうちの1つであるというものである場合に、要求されたキャッシュラインが下位レベルビクティムキャッシュから取り出されるようにし、判定が、要求されたキャッシュラインが、下位レベルキャッシュに含まれる複数のキャッシュラインのうちの1つではないというものである場合に、下位レベルビクティムキャッシュをバイパスし、上位レベルキャッシュと通信しているメモリコントローラにキャッシュラインを要求するように構成される。
【０００８】
別の例示的な実施形態は、コンピュータ可読プログラムコードを具現した非一時的コンピュータ使用可能媒体を備えたコンピュータプログラム製品であって、前記コンピュータ可読プログラムコードは、ポータブルコンピューティングデバイス(PCD)におけるビクティムキャッシュの改善された動作のための方法を実装するために実行されるように適合され、本方法は、上位レベルキャッシュに対するビクティムとして下位レベルキャッシュを動作させるステップであって、下位レベルキャッシュが複数のキャッシュラインを含む、ステップと、下位レベルビクティムキャッシュに関連してフィルタを動作させるステップと、下位レベルビクティムキャッシュに含まれる複数のキャッシュラインを反映するためにフィルタを更新するステップと、上位レベルキャッシュにミスがあった場合に、要求されたキャッシュラインが、下位レベルキャッシュに含まれる複数のキャッシュラインのうちの1つであるかどうかを判定するステップであって、判定するステップが、下位レベルビクティムキャッシュに関連付けられたフィルタをチェックするステップを含む、ステップと、判定が、要求されたキャッシュラインが、下位レベルキャッシュに含まれる複数のキャッシュラインのうちの1つであるというものである場合に、要求されたキャッシュラインを下位レベルビクティムキャッシュから取り出すステップと、判定が、要求されたキャッシュラインが、下位レベルキャッシュに含まれる複数のキャッシュラインのうちの1つではないというものである場合に、下位レベルビクティムキャッシュをバイパスし、上位レベルキャッシュと通信しているメモリコントローラにキャッシュラインを要求するステップとを含む。
【０００９】
図面では、別段の指示がない限り、種々の図面全体を通して、同様の参照番号が同様の部分を指している。「102A」または「102B」などの文字指定を伴う参照番号の場合、文字指定は、同じ図に存在する2つの同様の部分または要素を区別することができる。参照番号がすべての図において同じ参照番号を有するすべての部分を含むことを意図するとき、参照番号に対する文字指定は省略される場合がある。同様に、102'などの'指定を伴う参照番号の場合、'指定は、同じ参照番号を有する(ただし、'指定のない)下位要素に対する代替実施形態を示すことができる。
【図面の簡単な説明】
【００１０】
【図１】本発明が実装されてよいポータブルコンピューティングデバイス(PCD)の例示的な実施形態のブロック図である。
【図２】図1に示すPCD実施形態など、PCDにおけるビクティムキャッシュモードの適応的実装のためのシステムの例示的な実施形態を示すブロック図である。
【図３Ａ】図2の例示的なシステムにおけるキャッシュメモリの例示的な実施形態の詳細を示すブロック図である。
【図３Ｂ】図2の例示的なシステムにおけるキャッシュメモリの別の例示的な実施形態の詳細を示すブロック図である。
【図４】図1に示すPCD実施形態など、PCDにおけるキャッシュメモリの改善された動作を伴う、ビクティムキャッシュモードの適応的実装のためのシステムの別の例示的な実施形態を示すブロック図である。
【図５Ａ】PCDにおけるビクティムキャッシュモードの適応的実装のための方法の例示的な実施形態の態様について説明するフローチャートである。
【図５Ｂ】図5Aに示す方法の態様を実行することが可能な例示的な構成要素を示す図である。
【図６Ａ】PCDにおけるビクティムキャッシュモードの適応的実装のための方法の別の例示的な実施形態の態様について説明するフローチャートである。
【図６Ｂ】図6Aに示す方法の態様を実行することが可能な例示的な構成要素を示す図である。
【図７Ａ】PCDにおけるキャッシュメモリの改善された動作を伴う、ビクティムキャッシュモードの適応的実装のための方法の例示的な実施形態の態様について説明するフローチャートである。
【図７Ｂ】図7Aに示す方法の態様を実行することが可能な例示的な構成要素を示す図である。
【発明を実施するための形態】
【００１１】
「例示的」という単語は、本明細書において、例、事例、または例示として機能することを意味するために使用される。「例示的」として本明細書において説明されるいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるべきでない。
【００１２】
本明細書では、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなど、実行可能コンテンツを有するファイルを含むこともある。さらに、本明細書で言及する「アプリケーション」は、開かれる必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなど、本質的に実行可能ではないファイルを含むこともある。
【００１３】
「コンテンツ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなど、実行可能コンテンツを有するファイルを含むこともある。さらに、本明細書で言及する「コンテンツ」は、開かれる必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルもしくはデータ値など、本質的に実行可能ではないファイルを含むこともある。
【００１４】
「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、本明細書で使用されるとき、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかであるコンピュータ関連エンティティを指すものとする。たとえば、構成要素は、限定はしないが、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータであってもよい。例として、コンピューティングデバイス上で実行されるアプリケーションとコンピューティングデバイスの両方が構成要素であってもよい。1つまたは複数の構成要素は、プロセスおよび/または実行のスレッド内に存在してもよく、構成要素は、1つのコンピュータ上に局在化されてもよく、かつ/または2つ以上のコンピュータ間に分散されてもよい。さらに、これらの構成要素は、様々なデータ構造が記憶された様々なコンピュータ可読媒体から実行されてもよい。構成要素は、1つまたは複数のデータパケット(たとえば、ローカルシステム、分散システム内の別の構成要素と対話し、かつ/または、信号によってインターネットなどのネットワークにわたって他のシステムと対話する、1つの構成要素からのデータ)を有する信号などに従って、ローカルプロセスおよび/またはリモートプロセスによって通信する場合がある。
【００１５】
本明細書では、「ポータブルコンピューティングデバイス」(「PCD」)という用語は、バッテリーおよび/またはキャパシタなど、制限された容量の充電式電源において動作するデバイスを記述するために使用される。充電式電源を備えるPCDが、数十年にわたって使用されてきたが、第3世代(「3G」)および第4世代(「4G」)のワイヤレス技術の出現に結び付けられる、充電式バッテリーにおける技術的な進歩により、複数の能力を有する数多くのPCDが可能になった。したがってPCDは、とりわけ、セルラー電話、衛星電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、スマートブックすなわちリーダ、メディアプレーヤ、上記デバイスの組合せ、ワイヤレス接続を有するラップトップコンピュータまたはタブレットコンピュータであってもよい。
【００１６】
本明細書では、「中央処理装置(「CPU」)」、「デジタル信号プロセッサ(「DSP」)」、「グラフィックス処理ユニット(「GPU」)」、「チップ」、「ビデオコーデック」、「システムバス」、「画像プロセッサ」、および「メディアディスプレイプロセッサ(「MDP」)」という用語は、SoC上に実装され得る処理構成要素の非限定的な例である。処理構成要素についてのこれらの用語は、別段に規定されているときを除いて、互換的に使用される。その上、下で論じるように、上記またはそれらの均等物のいずれも、「コア」および/または「サブコア」と本明細書では全般的に呼ばれる1つまたは複数の別個の処理構成要素内で実装され得るか、またはそれらからなり得る。
【００１７】
本明細書では、「作業負荷」、「処理負荷」、「処理作業負荷」および「グラフィカル作業負荷」という用語は互換的に使用され、全般的に、所与の実施形態の所与の処理構成要素に関連付けられるか、または割り当てられ得る処理負担または処理負担の割合を対象にする場合がある。さらに、「フレーム」、「コードブロック」、および「コードのブロック」という関連用語は、所与の作業負荷の部分またはセグメントを指すために交換可能に使用される場合がある。上で定義されるものに加えて、「処理構成要素」などは、限定はしないが、中央処理装置、グラフィカル処理ユニット、コア、メインコア、サブコア、処理エリア、ハードウェアエンジンなど、またはポータブルコンピューティングデバイス内の集積回路内もしくはその外にある任意の構成要素とすることができる。
【００１８】
「MIPS」という用語が、プロセッサが所与の電力周波数において処理することが可能である百万命令毎秒の数を表すことは、当業者には認識されよう。本明細書では、この用語は、例示的な実施形態におけるプロセッサ性能の相対的なレベルを示すための尺度の一般的な単位として使用され、本開示の範囲内に入る任意の所与の実施形態が任意の特定のドライストーン評価または処理能力を有するプロセッサを含むべきであること、または含むべきではないことを示唆するものと、解釈されることはない。さらに、当業者によって理解されるように、プロセッサのMIPS設定は、プロセッサに供給されている電力、周波数、または動作周波数と直接的に相関する。
【００１９】
PCDにおけるビクティムキャッシュモードの適応的実装およびビクティムモード中のキャッシュメモリの改善された動作のための本システムおよび方法は、PCDのアーキテクチャ、作業負荷、動作条件などが、たとえば、データ集中的な作業負荷および/またはアプリケーションのためのデータキャッシュの有効なサイズを増大させるために、ビクティムキャッシュモードでの動作が望ましいことを示すときに、ビクティムキャッシュを動的に実装するためのコスト効果的な方法を提供する。さらに、本システムおよび方法は、ビクティムキャッシュモードで動作するときのキャッシュメモリの改善された動作をもたらす。代替的に、PCDにおけるビクティムキャッシュモードの適応的実装のための本システムおよび方法は、作業負荷、アーキテクチャ、動作条件などが、ビクティムキャッシュモードで動作する利益が十分に実現されていないか、またはビクティムキャッシュモードでの動作によって生じるメモリ帯域幅、電力消費などの点での追加コストが当該利益を上回ることを示すときに、ビクティムキャッシュモードが動的にオフにされることを可能にする。
【００２０】
PCDにおけるビクティムキャッシュモードの適応的実装のための、またビクティムモードでのキャッシュメモリの改善された動作のためのシステムを含む、本明細書で説明するシステム、またはシステムの部分は、ハードウェアまたはソフトウェアにおいて実装され得る。ハードウェアにおいて実装される場合、デバイスはすべてが当技術分野でよく知られている、以下の技術のいずれか、またはそれらの組合せを含むことが可能である:すなわち、適切に構成された半導体デバイスおよび抵抗要素を有する、個別電子構成要素、集積回路、特定用途向け集積回路などである。これらのハードウェアデバイスのうちのいずれも、単独で動作しようと、他のデバイス、またはメモリなどの他の構成要素とともに動作しようと、開示する方法の様々な動作またはステップを実行するための構成要素または手段を形成するかまたは備えてもよい。
【００２１】
本明細書で説明するPCDまたは他のシステムが、ソフトウェアにおいて実装される、または部分的に実装されるとき、ソフトウェア部分は、本明細書で説明する方法の様々なステップを実行するために使用されることがある。様々な要素を表す際に使用されるソフトウェアおよびデータは、メモリ内に記憶され、適切な命令実行システム(マイクロプロセッサ)によって実行されることがある。ソフトウェアは、論理機能を実装するために実行可能な命令の順位リストを備えてよく、シングルコアプロセッサもしくはマルチコアプロセッサまたはプロセッサ包含システム(processor-containing system)など、命令実行システム、装置、またはデバイスによって、またはそれらとともに使用するために任意の「プロセッサ可読媒体」内で実施されることがある。そのようなシステムは、一般に、命令実行システム、装置、またはデバイスから命令にアクセスし、それらの命令を実行することになる。
【００２２】
図1は、本明細書で説明するシステムおよび方法を実装し得るPCD100の例示的な非限定的態様のブロック図である。図1に示すPCD100は、1つまたは複数のワイヤレス通信システムと通信することが可能なワイヤレス電話の形態によるものである。そのようなワイヤレス通信システムは、ロングタームエボリューション(LTE)システム、符号分割多元接続(CDMA)システム、周波数分割多元接続(FDMA)システム、モバイル通信用グローバルシステム(GSM(登録商標):Global System for Mobile Communications)システム、ワイヤレスローカルエリアネットワーク(WLAN)システム、いくつかの他のワイヤレスシステム、またはそれらのうちのいずれかの組合せを含めて、ブロードバンドワイヤレス通信システムであり得る。CDMAシステムは、広帯域CDMA(WCDMA(登録商標))、CDMA 1X、エボリューションデータオプティマイズド(EVDO)、時分割同期CDMA(TD-SCDMA)、またはCDMAの何らかの他のバージョンを実装することができる。
【００２３】
図示するように、PCD100は、互いに結合された異種マルチコア中央処理装置(「CPU」)110およびアナログ信号プロセッサ128を含むオンチップシステム(またはSoC)102を含む。当業者によって理解されるように、CPU110は、第0のコア120、第1のコア122、第2のコア124、および第Nのコア126を備え得る。さらに、当業者によって理解されるように、CPU110の代わりに、デジタル信号プロセッサ(「DSP」)が採用されてもよい。その上、異種マルチコアプロセッサの技術分野で理解されるように、コア120、122、124、126の各々は、同様の動作条件の下で異なる効率で作業負荷を処理することができる。コア120、122、124、126の各々は、PCD100の1つまたは複数の機能を制御することができる。たとえば、第0のコア120は、PCD100内のグラフィックスを制御するためのグラフィックス処理ユニット(GPU)であってよい。そのようなGPU/第0のコア120は、GPUコア120と(バッファを含む)メモリ112との間の通信を制御することを含めて、PCD100内のグラフィックスを制御するために必要なドライバおよび/または他の構成要素をさらに含むことができる。別の例については、第Nのコア126などの異なるコアが、ハイレベルオペレーティングシステム(HLOS)などのPCDオペレーティングシステムを実行する場合がある。そのような第N/HLOSのコア126は、ドライバ、ハードウェアインターフェース、および/または、コア126とメモリ112(フラッシュメモリを含むことができる)との間の通信を含めて、HLOSを実行するために必要な他の構成要素をさらに含むことができる。
【００２４】
コア120、122、124、126のいずれも、CPUなどの別個のプロセッサ、またはデジタル信号プロセッサであってよい。加えて、コアの各々は、以下で説明するサブシステムを形成するために、メモリ112、センサ、またはPCD100の他のハードウェアなどの他の構成要素と、機能的にグループ化されてよい。そのようなサブシステムは、オーディオサブシステム、GPSサブシステム、センササブシステムなど、PCDのある機能を実行するために実装されてよい。そのようなサブシステムの1つまたは複数は、たとえばSoC102が、電力オフ状態またはモードを含めて、低電力または省電力状態またはモードに置かれているときに、動作を続けるためなどに、SoC102とは独立して動作するように構成されてもよい。
【００２５】
さらに、コア120、122、124、126のうちの1つまたは複数は、プロセッサに加えて、1つまたは複数のキャッシュメモリなどの他の構成要素を含み得る。これらのキャッシュメモリは、たとえば、L1キャッシュなど、特定のコアのための専用キャッシュメモリを含み得る。追加または代替として、これらのキャッシュメモリは、たとえば、L2キャッシュなど、他のコアもしくはプロセッサと共有されるか、または他のコアもしくはプロセッサによってアクセス可能なキャッシュメモリを含み得る。
【００２６】
メモリ112もまた、マルチコアCPU110に結合されて図示されている。そのようなメモリ112は、たとえば、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、フラッシュメモリ、またはそれらの任意の組合せであってよい。さらに、メモリ112は、バッファ、メインメモリ、およびキャッシュを含めて、一緒に配置されているか、または互いに離れて配置されている複数の異なるタイプのメモリを備え得る。そのようなキャッシュは、コア120、122、124、126のうちの1つまたは複数によってアクセスされ得る1つまたは複数のL3キャッシュを含み得る。さらに、メモリ112はSoC102に配置されて図示されているが、メモリ112は、マルチコアCPU110および/またはコア120、122、124、126のうちの1つもしくは複数と通信しているDDRメモリなど、SoC102から物理的に離れて配置された1つまたは複数のメモリを含み得る。
【００２７】
図1に示すように、ディスプレイコントローラ129およびタッチスクリーンコントローラ130がマルチコアCPU110に結合される。次に、オンチップシステム102の外部のディスプレイ/タッチスクリーン132が、ディスプレイコントローラ129およびタッチスクリーンコントローラ130に結合される。デジタルカメラ148も、マルチコアCPU110に結合されてよい。そのような実施形態では、デジタルカメラ148は、マルチコアCPU110のコア120、122、124、126のうちの1つによって制御されてよい。例示的な態様では、デジタルカメラ148は、電荷結合デバイス(CCD)カメラまたは相補型金属酸化膜半導体(CMOS)カメラである。
【００２８】
図1のPCD100は、ビデオエンコーダ134、たとえば、マルチコアCPU110に結合された、位相反転線(PAL:phase alternating line)エンコーダ、順次式カラーメモリ(SECAM:sequential couleur a memoire)エンコーダ、もしくは全国テレビジョン方式委員会(NTSC:national television system(s) committee)エンコーダ、または任意の他のタイプのビデオデコーダ134をさらに含む場合がある。さらに、ビデオ増幅器136が、ビデオエンコーダ134およびディスプレイ/タッチスクリーン132に結合される。ビデオポート138がビデオ増幅器136に結合される。図1に示すように、ユニバーサルシリアルバス(USB)コントローラ140がマルチコアCPU110に結合される。同様に、USBポート142がUSBコントローラ140に結合される。加入者識別モジュール(SIM)カード146も、マルチコアCPU110に結合されてよい。他の実施形態では、複数のSIMカード146が実装される場合がある。
【００２９】
図1にさらに示されているように、ステレオオーディオコーデック150がマルチコアCPU110に結合されてよい。その上、オーディオ増幅器152がステレオオーディオコーデック150に結合されてよい。例示的な態様では、第1のステレオスピーカ154および第2のステレオスピーカ156がオーディオ増幅器152に結合される。図1は、マイクロフォン増幅器158がステレオオーディオコーデック150に結合されてもよいことを示している。さらに、マイクロフォン160がマイクロフォン増幅器158に結合されてよい。特定の態様では、周波数変調(FM)無線チューナ162がステレオオーディオコーデック150に結合されてよい。また、FMアンテナ164がFM無線チューナ162に結合される。さらに、ステレオヘッドフォン166がステレオオーディオコーデック150に結合されてよい。
【００３０】
図1は、モデムデバイス/無線周波数(「RF」)トランシーバ168がマルチコアCPU110に結合される場合があることをさらに示す。モデムデバイス168は、GSM(登録商標)、CDMA、W-CDMA、TDSCDMA、LTE、ならびに、限定はしないが、FDB/LTEワイヤレスプロトコルおよびPDD/LTEワイヤレスプロトコルのようなLTEの変形体など、ワイヤレス通信プロトコルのうちの1つまたは複数をサポートする場合がある。さらに、複数のモデムデバイス168が存在する場合があり、そのような実施形態では、異なるモデムデバイス168が、上に記載したワイヤレス通信プロトコルおよび/または技術のうちのいくつかまたはすべてをサポートする場合がある。
【００３１】
いくつかの実装形態では、モデムデバイス168はさらに、別個のプロセッサ、メモリ、および/またはRFトランシーバを含めて、様々な構成要素からなってよい。他の実装形態では、モデムデバイス168は単なるRFトランシーバであってよい。さらに、モデムデバイス168は集積回路に組み込まれる場合がある。すなわち、モデムデバイス168を備える構成要素は、チップ内のフルソリューションであって、本明細書で説明するシステムおよび方法によって監視され得るそれ自体のプロセッサおよび/またはコアを含む場合がある。代替的には、モデムデバイス168を備える様々な構成要素が、マルチコアCPU110に結合され、CPU110のコア120、122、124のうちの1つによって制御される場合がある。RFスイッチ170が、モデムデバイス168およびRFアンテナ172に結合されてよい。様々な実施形態では、複数のRFアンテナ172が存在する場合があり、そのようなRFアンテナ172の各々は、RFスイッチ170を介してモデムデバイス168に結合されてよい。
【００３２】
図1に示すように、キーパッド174が、直接的に、またはアナログ信号プロセッサ128を介してのいずれかで、マルチコアCPU110に結合されてよい。また、マイクロフォン付きモノヘッドセット176が、マルチコアCPU110および/またはアナログ信号プロセッサ128に結合されてよい。さらに、バイブレータデバイス178が、マルチコアCPU110および/またはアナログ信号プロセッサ128に結合される場合もある。図1はまた、電源188がオンチップシステム102に結合されてよいことを示し、いくつかの実装形態では、電源188は、USBコントローラ140を介して結合される。特定の態様では、電源188は電力を必要とするPCD100の様々な構成要素に電力を供給する直流(DC)電源である。さらに、特定の態様では、電源188は、充電式DCバッテリーまたは、交流(AC)電源に接続されたAC-DC変換器から得られるDC電源であってよい。
【００３３】
マルチコアCPU110は、1つまたは複数の内部のオンチップ熱センサ157A、ならびに、1つまたは複数の外部のオフチップ熱センサ157Bに結合されてもよい。オンチップ熱センサ157Aは、縦型PNP構造に基づき、通常は相補型金属酸化物半導体(「CMOS」)の超大規模集積(「VLSI:very large-scale integration」)回路に専用の、1つまたは複数の絶対温度比例(「PTAT:proportional to absolute temperature」)の温度センサを備えてよい。オフチップ熱センサ157Bは、1つまたは複数のサーミスタを備えてよい。熱センサ157は、アナログデジタル変換器(「ADC」)コントローラ103を用いてデジタル信号に変換される、電圧降下を生じさせる場合がある。しかしながら、本開示の範囲から逸脱することなく、他のタイプの熱センサ157が採用されてよい。
【００３４】
図1はさらに、PCD100がまた、データネットワーク、たとえば、ローカルエリアネットワーク、パーソナルエリアネットワーク、または任意の他のネットワークにアクセスするために使用される場合がある、ネットワークカード114を含んでもよいことを示す。ネットワークカード114は、Bluetooth(登録商標)ネットワークカード、WiFiネットワークカード、パーソナルエリアネットワーク(PAN)カード、または当技術分野でよく知られている任意の他のネットワークカードであってよい。さらに、ネットワークカード114は、集積回路の中に統合されてよい。すなわち、ネットワークカード114は、チップ内のフルソリューションであってよく、別個のネットワークカード114でなくてもよい。
【００３５】
図1に示すように、ディスプレイ/タッチスクリーン132、ビデオポート138、USBポート142、カメラ148、第1のステレオスピーカ154、第2のステレオスピーカ156、マイクロフォン160、FMアンテナ164、ステレオヘッドフォン166、RFスイッチ170、RFアンテナ172、キーパッド174、モノヘッドセット176、バイブレータ178、および電源188は、SoC102の外部にある。
【００３６】
SoC102はまた、マルチコアCPU110および/またはコア120、122、124、126のうちの1つもしくは複数をSoC102またはPCD100の他のサブシステムまたは構成要素に通信可能に結合するための様々なバスおよび/またはインターコネクト(図示せず)を含み得る。オンチップシステム102におけるバス/インターコネクトインターフェースを監視するために、任意の数のバスおよび/またはインターコネクトコントローラが実装され配置されてもよいことを理解されたい。代替的には、必要に応じてCPU110とPCD100の様々なサブシステムまたは構成要素との間で信号を通信する2つ以上のバス/インターコネクトインターフェースを監視するように配置された入力を備えた、単一のバス/インターコネクトコントローラが構成されることがある。
【００３７】
特定の態様では、本明細書で説明する方法ステップのうちの1つまたは複数は、メモリ112内および/またはCPU110に配置されたメモリに記憶されたデータおよびプロセッサ命令の組合せを介して使用可能にされる場合がある。これらの命令は、本明細書で説明する方法を実行するために、マルチコアCPU110内の1つもしくは複数のコア120、122、124、126および/またはSoC102のサブシステムによって実行される場合がある。さらに、マルチコアCPU110、コア120、122、124、126のうちの1つもしくは複数、メモリ112、PCD100の他の構成要素、またはこれらの組合せは、ビクティムキャッシュモードの適応的実装および/またはビクティムモードにある間のキャッシュの改善された動作を可能にするために本明細書で説明する方法ステップの1つまたは複数を実行するための手段として機能することができる。
【００３８】
図2は、図1に示すPCD100実施形態など、PCDにおけるビクティムキャッシュモードの適応的実装のためのシステム200の例示的な実施形態を示すブロック図である。図2は、システムオンチップ(SoC)集積回路202を含む例示的なシステム200を示し、SoC集積回路202は(図1のSoC102と同様に)PCDに実装され得る。図2のSoC202は、メモリコントローラ210、第0のコア220、第1のコア222、第Nのコア224、およびL3キャッシュ230を含み、それらすべてがSoC202のインターコネクトまたはバス240に接続される。SoC202のインターコネクト/バス240は、SoC202のアーキテクチャおよび/またはSoC202もしくはPCDが対象とする用途によって決まり得る任意の所望のタイプのバスまたはインターコネクトであってよい。
【００３９】
図2の実施形態に示すように、メモリコントローラ210は、インターコネクト/バス240と通信し、SoC202の外部のメモリ、DDR250とも通信している。メモリコントローラ210は、L3キャッシュ230を含むSoC202の様々なメモリへのアクセスを制御することができ、また、SoC202が電源投入される、および/または機能する状態もしくはモードであるとき、第0のコア220、第1のコア222、および第Nのコア224を含めて、SoC202の様々な構成要素が、外部DDR250メモリにアクセスすることを可能にすることもできる。
【００４０】
SoC202はまた、明快にするために図2に示されていない他の構成要素および/またはサブシステム(図1に示すものを含む)を含み得る。第0のコア220、第1のコア222、および第Nのコア224の各々は、何らかのタイプのプロセッサを含み、各々は、図1に関して上記で説明したコア120、122、124、126のうちの1つとして実装され得る。いくつかの実施形態では、第0のコア220、第1のコア222、および第Nのコア224のうちの1つまたは複数のプロセッサは、汎用処理ユニットとして実装されることがあり、他の実施形態では、プロセッサは、DSPなど、専用プロセッサとして実装される場合がある。第0のコア220、第1のコア222、および第Nのコア224の各々はまた、(第0のコア220のための)L2キャッシュ221、(第1のコア222のための)L2キャッシュ223、および(第Nのコア224のための)L2キャッシュ225として図2に示す少なくとも1つのキャッシュメモリを含む。
【００４１】
様々な実施形態では、第0のコア220、第1のコア222、および第Nのコア224のうちの1つまたは複数は、追加のL1キャッシュなど、図2に示すよりも多いまたは少ない構成要素を含み得る。加えて、いくつかの実施形態では、図2に示す構成要素は、様々な構成でSoC202に物理的に配置されてよく、図2に示す1つまたは複数の構成要素は、SoC202において互いの近くに物理的に配置されなくてよい。
【００４２】
図2に示す実施形態では、L2キャッシュ221、223、225、L3キャッシュ230、およびDDR250は、階層的に編成されてよく、その場合にL2キャッシュ221、223、225は、最小データ容量であるが最速パフォーマンス/最低レイテンシを表し、L3キャッシュ230は、L2キャッシュ221、223、225よりも大きいデータ容量であるが、遅いパフォーマンス/高いレイテンシを有し、DDR250は、最大データ容量および最も遅いパフォーマンス/最高レイテンシを有する。この実施形態では、L3キャッシュ230は、L2キャッシュ221、223、225よりも低いレベルのキャッシュである。加えて、図示の実施形態では、L3キャッシュ230は、第0のコア220、第1のコア222、および第Nのコア224のいずれかによって直接アクセスされ得る独立キャッシュとして動作してよく(「通常モード」)、またはL3キャッシュ230は、上位レベルL2キャッシュ221、223、225のうちの1つもしくは複数のためのビクティムキャッシュであってよい(「ビクティムモード」)。後述のように、通常モードまたはビクティムモードでのL3キャッシュ230の動作は、動的に判定および/または設定され、後にPCDの動作中に変更されることがある。
【００４３】
L3キャッシュ230がL2キャッシュ221、223、225のうちの1つまたは複数に対してビクティムモードで動作しているとき、コア220、222、224のための有効なキャッシュサイズ/容量は、上位レベルL2キャッシュ221、223、225から下位レベルL3キャッシュ230へのキャッシュラインキャストアウトの使用によって増大し、理論的には、第0のコア220、第1のコア222、および/または第Nのコア224によるキャッシュミスの数が減る。一方で、L3キャッシュ230がビクティムキャッシュであることにより、L3キャッシュ230は、上位レベルL2キャッシュ221、223、225から追い出されたキャッシュラインによってポピュレートされるにすぎず、当該キャッシュラインは、L2キャッシュ221、223、225からのクリーンキャッシュラインキャストアウトとダーティキャッシュラインキャストアウトの両方を含むことを必要とする。その結果、(ダーティキャッシュラインのみが追い出されるときの通常モードとは対照的に)L2キャッシュ221、223、225からの追加のダーティキャッシュラインキャストアウトおよびクリーンキャッシュラインキャストアウトのための場所を作るために、L3 230キャッシュにおいて追加のキャストアウトおよびキャストアウト帯域幅(ならびに関連する電力消費増大)が生じる。
【００４４】
L3キャッシュ230が通常モードで動作しているとき、コア220、222、224のための有効なキャッシュサイズ/容量は、上記で説明したように増大することはなく、理論的には、第0のコア220、第1のコア222、および/または第Nのコア224によるキャッシュミスの数が増え、ひいては、DDR250などのメインメモリからデータを取り出さなければならないことからレイテンシが増大する。一方で、L3キャッシュ230への(またL3キャッシュ230からの)キャストアウトの減少が、L3キャッシュにおける帯域幅使用の減少(および関連する電力消費減少)につながる。
【００４５】
図3Aに目を向けると、図2の例示的なシステムにおけるキャッシュメモリの例示的な実施形態の詳細が示されている。図3Aは、図2に示す第Nのコア224のL2キャッシュ225に対応するL2キャッシュ325の態様を示す。同様に、図3Aは、図2に示すL3キャッシュ230に対応するL3キャッシュ330の態様を示す。図3Aは、1つのL2キャッシュ325を示すだけであるが、その原理は、図2に示す追加のL2キャッシュ221、223に等しく適用可能である。
【００４６】
図3Aに示すように、L2キャッシュ325は、キャッシュデータラインの標準セットを含む第1の主要部分325aと、L2データのサンプルセットを含む第2のサンプル部分325bとに分割される。図3Aの実施形態の図示した第2の部分325bは、L2データのビクティムモードサンプルセット326と、L2データの通常モードサンプルセット327とにさらに再分割され、L2キャッシュ325を3つのデータセットに効果的に区分している。
【００４７】
同様に、L3キャッシュ330も、キャッシュデータラインの標準セットを含む第1の主要部分330aと、L3データのサンプルセットを含む第2のサンプル部分330bとに区分される。図3Aの実施形態の図示した第2の部分330bは、L3データのビクティムモードサンプルセット336と、L3データの通常モードサンプルセット337とにさらに再分割され、L3キャッシュ330を3つのデータセットに効果的に区分している。L3データのビクティムモードサンプルセット336およびL3データの通常モードサンプルセット337はいずれも、L3キャッシュ330の論理331と通信している。L3キャッシュ330の論理331は、図2Aに示すL3キャッシュ230の論理231と対応する。論理231/331は、L3キャッシュ230/330の一部として示されているが、L3キャッシュ230/330、L3データのビクティムモードサンプルセット336およびL3データの通常モードサンプルセット337、ならびに/またはL2キャッシュ225/325と通信している別個のハードウェア、ファームウェア、またはソフトウェア構成要素であってよいことに留意されたい。
【００４８】
動作中、L3キャッシュ330が通常モードで動作しているか、L2キャッシュ325に対してビクティムモードで動作しているかにかかわらず、L2キャッシュ325の第2のサンプル部分325bは、L2データのビクティムモードサンプルセット326とL2データの通常モードサンプルセット327の両方を生成する。このサンプルL2データ生成の結果、対応するL3データのビクティムモードサンプルセット336およびL3データの通常モードサンプルセット337が、L3キャッシュ330のサンプル部分330bにおいて生成される。サンプリング期間中、L3キャッシュ330に関連付けられた論理331は、生成されたL3データのビクティムモードサンプルセット336およびL3データの通常モードサンプルセット337に基づいて、L3キャッシュ330がL2キャッシュ325に対するビクティムとしてビクティムモードで動作すべきか、L3キャッシュ330が通常モードで独立して動作すべきかを動的に判定する。
【００４９】
一実施形態では、L2キャッシュ325は、L2データのビクティムモードサンプルセット326およびL2データの通常モードサンプルセット327を継続的に生成し、結果として生じるL3データのビクティムモードサンプルセット336およびL3データの通常モードサンプルセット337が、サンプリング期間中に論理331によって読み取られ、またはさもなければ受信され得るように、L3キャッシュ330において継続的に生成される。他の実施形態では、L2キャッシュ325は、論理331のサンプリング期間中にL2データのビクティムモードサンプルセット326およびL2データの通常モードサンプルセット327を生成する(また、L3キャッシュ330における結果として生じるL3データのビクティムモードサンプルセット336およびL3データの通常モードサンプルセット337の生成をもたらす)だけである。
【００５０】
L2データのビクティムモードサンプルセット326は、クリーンキャッシュラインを追い出すこと、およびL3データのビクティムモードサンプルセット336へのダーティデータの書戻しによるなどして、ビクティムL3キャッシュ330を伴ってL2キャッシュ325の任意の典型的動作を使用して生成され得る。同様に、L3データの通常モードサンプルセット337は、L3データの通常モードサンプルセット337にダーティデータを書き戻すのみで、クリーンキャッシュラインを追い出さないことによるなどして、非ビクティムモードまたは通常モードでL2キャッシュ325およびL3キャッシュ330の任意の典型的動作を使用して生成され得る。
【００５１】
サンプルセットが生成されると、論理331は、L3データのサンプルセット336、337に基づいて、ビクティムモードでL3キャッシュ330を動作させる利益がコストを上回るかどうかを判定する。この判定は、望ましい任意の方法で行われ得る。たとえば、一実施形態では、論理331は、L3データのビクティムモードサンプルセット336およびL3データの通常モードサンプルセット337のキャッシュミスを互いに比較し、かつ/またはしきい値と比較して、最適追出しポリシー、すなわち、L3キャッシュ330が通常モードで動作すべきか、L2キャッシュ325に対してビクティムモードで動作すべきかを判定することができる。そのような実施形態の一実装形態では、論理331は、L3データのビクティムモードサンプルセット336のキャッシュミスの数を判定または測定し、その数をしきい値と比較することができる。別の実装形態では、論理331は、L3データのビクティムモードサンプルセット336のキャッシュミスの数を判定または測定し、その数からL3データの通常モードサンプルセット337の測定されたキャッシュミスの数を差し引き、得られた差をしきい値と比較することができる。
【００５２】
そのような実施形態の場合のしきい値は、ビクティムモードでL3キャッシュ330を動作させる利益が、帯域幅、電力消費などにおいてビクティムモードで動作させる「コスト」を上回るかどうかを論理331が動的に判定できるようにするために、キャッシュ容量、キャッシュレイテンシまたは他のパフォーマンス属性、システムアーキテクチャ、システムによって実行されている作業負荷、実行されている作業負荷のタイプ(たとえば、グラフィックス集中型アプリケーションかオーディオファイル再生アプリケーションか)などのうちの1つまたは複数に基づき得る。様々な実施形態では、しきい値は、単一の固定プリセット値であってよく、異なる条件もしくは作業負荷に対する複数の値(異なるタイプの作業負荷に対する異なるしきい値など)であってよく、または履歴データ、現在の条件などに基づいてプログラムもしくは更新され得る動的な値であってよい。
【００５３】
論理331が判定を行うサンプリング期間は、必要に応じて固定時間間隔または可変時間間隔にあり得、1つもしくは複数のイベントまたは両方によってトリガされ得る。たとえば、一実施形態では、図2に示す第Nのコア224のプロセッサなどのプロセッサ上の作業負荷、アプリケーション、またはスレッドの開始は、第Nのコア224に関連付けられたL2キャッシュ225/325に対してL3キャッシュ330がビクティムモードで動作すべきかどうかの判定を論理331が行うためのサンプリング期間をトリガするイベントであり得る。
【００５４】
いくつかの実施形態では、判定が行われると、L3キャッシュ330は、新しい作業負荷、アプリケーション、またはスレッドの開始まで、その判定モードで動作する。他の実施形態では、作業負荷、アプリケーション、またはスレッドの処理中の1つまたは複数の時間間隔において、作業負荷、アプリケーション、またはスレッドが処理されている間に論理331が周期的に判定を行うことができるようにサンプリング期間が開始される。また他の実施形態では、作業負荷、アプリケーション、またはスレッドの完了は、論理331によるまた別の判定を生じさせるトリガイベントであり得る。
【００５５】
判定が行われると、論理231/331は、L2キャッシュ225/325およびL3キャッシュ230/330に、論理231/331によって有利に判定されたビクティム/通常モードで動作させることができる。図2および図3Aに示す実施形態では、論理231/331は、メモリコントローラ210へのインターコネクト/バス240を介した信号など、別の構成要素に信号を送ることができ、メモリコントローラ210は、L2キャッシュ225/325およびL3キャッシュ230/330に所望のモードで動作させる。他の実施形態では、論理231/331は、L2キャッシュ225/325とL3キャッシュ230/330の両方と通信している別個の構成要素(図示せず)であり得る。そのような実施形態では、それ自体によって働いている論理231/331は、L2キャッシュ225/325およびL3キャッシュ230/330に所望のモードで動作させることができる。
【００５６】
図3Aの説明はハードウェア構成要素に関するものであったが、上記で説明した構成要素および動作は、ソフトウェアにおいて実装され、かつ/またはソフトウェアによって実行されてもよいことに留意されたい。たとえば、一実施形態では、図3Aに示すL2データのサンプルセットを含むL2キャッシュ325の第2のサンプル部分325bは、1つまたは複数のソフトウェア書込み可能レジスタに含まれるL2データのビクティムモードサンプルセット326と、1つまたは複数のソフトウェア書込み可能レジスタに含まれるL2データの通常モードサンプルセット327とに分割され得る。同様に、図3AのL3キャッシュ330も、L3データのサンプルセットを含む第2のサンプル部分330bを有し得る。L3キャッシュ330の第2の部分330bは、1つまたは複数のソフトウェア書込み可能レジスタに含まれるL3データのビクティムモードサンプルセット336と、1つまたは複数のソフトウェア書込み可能レジスタに含まれるL3データの通常モードサンプルセット337とに分割され得る。L3データのビクティムモードサンプルセット336およびL3データの通常モードサンプルセット337はいずれも、この実施形態ではソフトウェア構成要素であり得るL3キャッシュ330の論理331と通信していることがある。この実施形態でソフトウェアにおいて実装された論理331は、ソフトウェアレジスタにおけるL3データのサンプルセット336/337をサンプリングすること、および/または実行されているプログラムもしくは作業負荷についての情報など、ポリシー判定に関連する情報を別途取得することによって、課すべきポリシーを周期的に判定することができる。
【００５７】
図3Bに目を向けると、図2の例示的なシステムにおけるキャッシュメモリの別の例示的な実施形態の詳細が示されている。図3Bは、図2に示す第Nのコア224のL2キャッシュ225に対応するL2キャッシュ325'の態様を示す。同様に、図3Bは、図2に示すL3キャッシュ230に対応するL3キャッシュ330'の態様を示す。図3Bは、1つのL2キャッシュ325'を示すだけであるが、その原理は、図2に示す追加のL2キャッシュ221、223に等しく適用可能である。
【００５８】
図3Bに示すように、L2キャッシュ325'は、キャッシュデータラインの標準セットを含む第1の主要部分325a'と、L2データのサンプルセット326'を含む第2のサンプル部分325b'とに分割される。図3Aに示す実施形態とは異なり、図3Bの実施形態の第2の部分325b'は、L2データの2つの異なるサンプルセットにさらに再分割されない。
【００５９】
同様に、L3キャッシュ330'も、キャッシュデータラインの標準セットを含む第1の主要部分330a'と、L3データのサンプルセット336'を含む第2のサンプル部分330b'とに区分される。L3データのサンプルセット336'は、L3キャッシュ330'の論理331'と通信している。L3キャッシュの論理331'は、図2Aに示すL3キャッシュ230の論理231と対応する。論理231/331'は、L3キャッシュ230/330'の一部として示されているが、L3キャッシュ230/330'、L3データのサンプルセット336'、および/またはL2キャッシュ225/325'と通信している別個のハードウェア、ファームウェア、またはソフトウェア構成要素であってよいことに留意されたい。
【００６０】
動作中、図3BのL2キャッシュ325'は、L3キャッシュ330'の現在の動作モードに応じて、ビクティムモードサンプルセットまたは通常モードサンプルセットのいずれかとなる、いずれかのL2データのサンプルセット326'を生成する。L3キャッシュ330'が通常モードで動作している場合、図3BのL2キャッシュ325'は、L2データのビクティムモードサンプルセット326'を生成する。このビクティムモードサンプルL2データ生成の結果、対応するL3データのビクティムモードサンプルセット336'が、L3キャッシュ330'のサンプル部分330b'において生成される。
【００６１】
一方、L3キャッシュ330'がビクティムモードで動作している場合、図3BのL2キャッシュ325'は、L2データの通常モードサンプルセット326'を生成する。この通常サンプルL2データ生成の結果、対応するL3データの通常モードサンプルセット336'が、L3キャッシュ330'のサンプル部分330b'において生成される。したがって、L2データのサンプルセット326'およびL3データのサンプルセット336'は常に、L3キャッシュ330'の現在の動作モードの反対のポリシー/モードに従う。
【００６２】
サンプリング期間中、L3キャッシュ330'に関連付けられた論理331'は、生成されたL3データのサンプルセット336'および主要部分330a'におけるキャッシュデータラインの標準セットに基づいて、L3キャッシュ330'がL2キャッシュ325'に対するビクティムとしてビクティムモードで動作すべきか、L3キャッシュ330'が通常モードで独立して動作すべきかを動的に判定する。
【００６３】
一実施形態では、L2キャッシュ325'は、L2データのサンプルセット326'を継続的に生成し、結果として生じるL3データのサンプルセット336'が、サンプリング期間中に論理331'によって読み取られ、またはさもなければ受信され得るように、L3キャッシュ330'において継続的に生成される。他の実施形態では、L2キャッシュ325'は、論理331'のサンプリング期間中にL2データのサンプルセット326'を生成する(また、L3キャッシュ330における結果として生じるL3データのサンプルセット336'の生成をもたらす)だけである。
【００６４】
L2データのサンプルセット326'は、図3Aにおいて上述したようにL2キャッシュ325'の任意の典型的動作を使用して生成され得る。たとえば、L2データのビクティムモードサンプルセット326'およびL3データのビクティムモードサンプルセット336'を生成するために、L2キャッシュ325'は、クリーンキャッシュラインを追い出し、L3データのサンプルセット336'にダーティデータを書き戻すことができる。同様に、L2データの通常モードサンプルセット326'およびL3データの通常モードサンプルセット336'は、L3データのサンプルセット336'にダーティデータを書き戻すのみで、クリーンキャッシュラインを追い出さないことによるなどして、ビクティムL3キャッシュ330'を伴わずにL2キャッシュ325'の任意の典型的動作を使用して生成され得る。
【００６５】
論理331'は、L3データのサンプルセット336'が主要部分330a'における標準データよりも良好な行動をもたらしているかどうかを判定する。L3データのサンプルセット336'がより良好な行動をもたらすときはいつでも、L3データのサンプルセット336'および主要部分330a'における標準データのモード/ポリシーは、いずれも変更される。L3データのサンプルセット336'が標準データとは反対のモードで常に動作しているので、L3データのサンプルセット336'のモードがより有利なモードであるときに、両方を変更することで、サンプルセットおよび標準データのモード/ポリシーが反転する。
【００６６】
論理331'は、L3データのサンプルセット336'が望ましい任意の方法でより良好な行動をもたらすかどうかのこの判定を行うことができる。たとえば、一実施形態では、論理331'は、主要部分330a'におけるキャッシュデータラインの標準セットのキャッシュミスとL3データのサンプルセット336'のキャッシュミスを互いに比較し、かつ/またはしきい値と比較して、最適追出しポリシー、すなわち、L3キャッシュ330'が現在のモードで動作すべきか、現在のモードが変更されるべきかを判定することができる。この判定は、図3Aに関して上述したのと同じ方法で行われ得る。
【００６７】
別の実施形態では、クリーンな追出しの数は、どちらのデータセット(通常の325a'またはサンプルの325b')がビクティムモードで動作している場合でもサンプリング期間中に追跡されてよく、その数は、同じデータセットからのキャッシュヒットの数と比較され得る。キャッシュヒットの数をクリーンな追出しの数で割った値がしきい値よりも大きい場合、ビクティムモードが判定モードである。L3キャッシュ330'(すなわち、主要部分330a'における標準データ)がサンプリング期間にビクティムモードで現在動作している場合、変更は行われない。L3データのサンプルセット336'がサンプリング期間にビクティムモードで動作している場合、主要部分330a'およびサンプル部分330b'のモード/ポリシーはいずれも変更され、L3キャッシュ330'にビクティムモードでの動作を開始させる(一方で、L3データのサンプルセット336'は通常モードでのサンプリング/動作を開始する)。
【００６８】
いずれの判定方法の場合のしきい値も、ビクティムモードでL3キャッシュ330'を動作させる利益が、帯域幅、電力消費などにおいてビクティムモードで動作させる「コスト」を上回るかどうかを論理331'が動的に判定できるようにするために、キャッシュ容量、キャッシュレイテンシまたは他のパフォーマンス属性、システムアーキテクチャ、システムによって実行されている作業負荷、実行されている作業負荷のタイプ(たとえば、グラフィックス集中型アプリケーションかオーディオファイル再生アプリケーションか)などのうちの1つまたは複数に基づき得る。様々な実施形態では、しきい値は、単一の固定プリセット値であってよく、異なる条件もしくは作業負荷に対する複数の値(異なるタイプの作業負荷に対する異なるしきい値など)であってよく、または履歴データ、現在の条件などに基づいてプログラムもしくは更新され得る動的な値であってよい。
【００６９】
論理331'が判定を行うサンプリング期間は、必要に応じて固定時間間隔または可変時間間隔にあり得、1つもしくは複数のイベントまたは両方によってトリガされ得る。たとえば、一実施形態では、図2に示す第Nのコア224のプロセッサなどのプロセッサ上の作業負荷、アプリケーション、またはスレッドの開始は、第Nのコア224に関連付けられたL2キャッシュ225/325'に対してL3キャッシュ330'がビクティムモードで動作すべきかどうかの判定を論理331'が行うためのサンプリング期間をトリガするイベントであり得る。
【００７０】
いくつかの実施形態では、判定が行われると、L3キャッシュ330'は、新しい作業負荷、アプリケーション、またはスレッドの開始まで、その判定モードで動作する。他の実施形態では、作業負荷、アプリケーション、またはスレッドの処理中の1つまたは複数の時間間隔において、作業負荷、アプリケーション、またはスレッドが処理されている間に論理331'が周期的に判定を行うことができるようにサンプリング期間が開始される。また他の実施形態では、作業負荷、アプリケーション、またはスレッドの完了は、論理331'によるまた別の判定を生じさせるトリガイベントであり得る。
【００７１】
判定が行われると、論理231/331'は、L2キャッシュ225/325'およびL3キャッシュ230/330'に、論理231/331'によって有利に判定されたビクティム/通常モードで動作させることができる。図2および図3Bに示す実施形態では、論理231/331'は、メモリコントローラ210へのインターコネクト/バス240を介した信号など、別の構成要素に信号を送ることができ、メモリコントローラ210は、L2キャッシュ225/325'およびL3キャッシュ230/330'に所望のモードで動作させる。他の実施形態では、論理231/331'は、L2キャッシュ225/325'とL3キャッシュ230/330'の両方と通信している別個の構成要素(図示せず)であり得る。そのような実施形態では、それ自体によって働いている論理231/331'は、L2キャッシュ225/325'およびL3キャッシュ230/330'に所望のモードで動作させることができる。
【００７２】
本開示の別の態様が図4に示されている。図4は、図1に示すPCD実施形態など、PCDにおけるキャッシュメモリの改善された動作を伴う、ビクティムキャッシュモードの適応的実装のためのシステム400の別の例示的な実施形態を示す。図4は、システムオンチップ(SoC)集積回路402を含む例示的なシステム400を示し、SoC集積回路402は(図1のSoC102と同様に)PCDに実装され得る。図4のSoC402は、メモリコントローラ410、第0のコア420、第1のコア422、第Nのコア424、およびL3キャッシュ430を含み、それらすべてがSoC402のインターコネクトまたはバス440に接続される。SoC402のインターコネクト/バス440は、SoC402のアーキテクチャおよび/またはSoC402もしくはPCDが対象とする用途によって決まり得る任意の所望のタイプのバスまたはインターコネクトであってよい。
【００７３】
図4の実施形態に示すように、メモリコントローラ410は、インターコネクト/バス440と通信し、SoC402の外部のメモリ、DDR450とも通信している。メモリコントローラ410は、L3キャッシュ430を含むSoC402の様々なメモリへのアクセスを制御することができ、また、第0のコア420、第1のコア422、および第Nのコア424を含めて、SoC402の様々な構成要素が、外部DDR450メモリにアクセスすることを可能にすることもできる。
【００７４】
SoC402はまた、明快にするために図4に示されていない他の構成要素および/またはサブシステム(図1に示すものを含む)を含み得る。第0のコア420、第1のコア422、および第Nのコア424の各々は、何らかのタイプのプロセッサを含み、各々は、図1に関して上記で説明したコア120、122、124、126のうちの1つとして実装され得る。いくつかの実施形態では、第0のコア420、第1のコア422、および第Nのコア424のうちの1つまたは複数のプロセッサは、汎用処理ユニットとして実装されることがあり、他の実施形態では、プロセッサは、DSPなど、専用プロセッサとして実装される場合がある。第0のコア420、第1のコア422、および第Nのコア424の各々はまた、(第0のコア420のための)L2キャッシュ421、(第1のコア422のための)L2キャッシュ423、および(第Nのコア424のための)L2キャッシュ425として図4に示す少なくとも1つのキャッシュメモリを含む。
【００７５】
様々な実施形態では、第0のコア420、第1のコア422、および第Nのコア424のうちの1つまたは複数は、追加のL1キャッシュなど、図4に示すよりも多いまたは少ない構成要素を含み得る。加えて、いくつかの実施形態では、図4に示す構成要素は、様々な構成でSoC402に物理的に配置されてよく、図4に示す1つまたは複数の構成要素は、SoC402において互いの近くに物理的に配置されなくてよい。
【００７６】
図4に示す実施形態では、L2キャッシュ421、423、425、L3キャッシュ430、およびDDR450は、階層的に編成されてよく、その場合にL2キャッシュ421、423、425は、最小データ容量であるが最速パフォーマンス/最低レイテンシを表し、L3キャッシュ430は、L2キャッシュ421、423、425よりも大きいデータ容量であるが、遅いパフォーマンス/高いレイテンシを有し、DDR450は、最大データ容量および最も遅いパフォーマンス/最高レイテンシを有する。この実施形態では、L3キャッシュ430は、L2キャッシュ421、423、425よりも低いレベルのキャッシュである。加えて、図示の実施形態では、L3キャッシュ430は、第0のコア420、第1のコア422、もしくは第Nのコア424のいずれかによって直接アクセスされ得る独立キャッシュとして動作してよく(「通常モード」)、またはL3キャッシュ430は、上位レベルL2キャッシュ421、423、425のうちの1つもしくは複数のためのビクティムキャッシュであってよい(「ビクティムモード」)。前述のように、通常モードまたはビクティムモードでのL3キャッシュ430の動作は、動的に判定および/または設定され、後にPCDの動作中に変更されることがある。だが、図4のシステム400の場合、L3キャッシュ430のためのビクティムモードの判定または選択は動的である必要はない。
【００７７】
L3キャッシュ430がビクティムモードで動作しているとき、プロセッサによるL2キャッシュ(たとえば、L2キャッシュ423および第1のコア422)におけるキャッシュミスは、ビクティムL3キャッシュ430に行く。L3キャッシュ430におけるミスは、L3からメモリコントローラ410に、そしてDDR450に行く。DDR450から返されたデータは、メモリコントローラ410からL3キャッシュ430に行き、次いで要求側プロセッサ(この例では第1のコア422)に戻る。これは、L2キャッシュ423のミスのレイテンシを著しく増大させ、L2キャッシュ423に関連付けられたプロセッサ(この例では第1のコア422のプロセッサ)のパフォーマンスを低下させる。
【００７８】
システム400は、インターコネクトまたはバス440と通信して示されているL3フィルタ460により、このL2キャッシュ423ミスレイテンシを減らすのを助ける。L3フィルタ460は、ハードウェアにおいて実装されるタグアレイまたはブルームフィルタなどのより単純な構造による、ビクティムL3キャッシュ430に含まれるデータの複製である。このL3フィルタ460はシステム400のL3キャッシュ430とともに、上記で説明したように継続的にまたは動的に適応型システムの一部として、L3キャッシュ430がビクティムモードで動作しているときに使用され得る。
【００７９】
当業者によって理解されるように、ビクティムモードで動作しているL3キャッシュ430に関して本明細書で説明しているが、説明する事前フィルタの原理は、上位レベルキャッシュに対するビクティムとして動作している任意のキャッシュに等しく適用可能である。たとえば、必要な場合、図4に示すようなL3フィルタ460の代わりに、ブロック460は、L1キャッシュ(図示せず)などの上位レベルキャッシュのためのビクティムとして動作していることがあるL2キャッシュのためのL2フィルタ(図示せず)であり得る。同様に、他の実施形態では、ブロック460は、L3キャッシュ430のためのビクティムとして動作していることがあるL4キャッシュ(図示せず)のためのL4フィルタ(図示せず)であり得る。
【００８０】
図4に示す実施形態では、ビクティムモードでのL3キャッシュ430の動作中、L3キャッシュ430がL2キャッシュ423などのL2キャッシュからのキャッシュラインキャストアウトを受け入れるよう迫られたとき、L3キャッシュ430にキャッシュラインが存在することを示す何らかの注釈をL3フィルタ460が含むように、対応するエントリがL3フィルタ460において作られる。作られる通信および/または注釈の形式は、どのようにL3フィルタ460が実装されるか(たとえば、ブルームフィルタ、タグアレイなど)に依存し得る。同様に、ビクティムモードで動作しているL3キャッシュ430からキャッシュラインが追い出されるとき、L3キャッシュ430にキャッシュラインがもはや存在しないことをL3フィルタ460が反映するように、対応するエントリがL3フィルタ460において作られるか、または更新される。たとえば、L3フィルタ460がブルームフィルタである実装形態では、L3キャッシュ430におけるビクティムライン交換の場合、L3フィルタ460のブルームフィルタを更新するために、ビクティムラインに取って代わられるL3キャッシュ430におけるキャッシュラインがクリーンであるとき、「データなしの追出し」メッセージが発信され得る。
【００８１】
システム400の動作中、第1のコア422のプロセッサなどのプロセッサによるL2キャッシュ423ミスの後、プロセッサは、所望のキャッシュラインがビクティムL3キャッシュ430にあるかどうかを、L3フィルタ460をチェックすることによって迅速に判定することができる。キャッシュラインがL3フィルタ460にある場合、L2キャッシュ423ミスは、キャッシュラインを求めてL3キャッシュ460に進む。キャッシュラインがL3フィルタ460にない場合、L2キャッシュ423ミスは、L3キャッシュ430をチェックする必要がなく、代わりに直接、メモリコントローラ410に、そしてDDR450に進み、L2キャッシュ423ミスレイテンシが大幅に減る。L2キャッシュ423ミスの結果、L2キャッシュ423は更新されて、L2キャッシュ423からビクティムL3キャッシュ430へのキャッシュラインキャストアウトが生じ、L3フィルタ460は、L3キャッシュ430に書き込まれている新しいキャッシュライン、ならびにL3キャッシュ430から追い出されている任意のキャッシュラインを反映するために更新される。
【００８２】
一実施形態では、L3フィルタ460はまた、直列化のポイント(図示せず)を含むこと、または直列化のポイントと通信していることがある。L3フィルタ460に直列化のポイントを含めることによって、またはL3フィルタ460と通信している別個の構成要素として、L3キャッシュ430「ミス」(「ミス」は上記で説明したようにL3フィルタ460をチェックした結果として生じる)の後に続いてDDR450から返される任意のデータは、要求側プロセッサに直接送り戻され得る。これは、L2キャッシュ423ミスに対するレイテンシペナルティをなお一層低減する。L3フィルタ460および直列化のポイントは、1つのハードウェアユニット内に一緒に含まれ得るか、またはそのような実施形態の場合に必要に応じて互いに通信している別個のハードウェアユニットであり得る。
【００８３】
図5Aは、PCDにおけるビクティムキャッシュモードの適応的実装のための方法500の例示的な実施形態の態様について説明するフローチャートである。ブロック502において、上位レベルキャッシュが第1の主要部分と第2のサンプル部分とに区分される。ブロック502の上位レベルキャッシュは、いくつかの実施形態では、たとえば、図1の例示的なシステム200に示すL2キャッシュ221、223、225のうちの1つなど、プロセッサに関連付けられたL2キャッシュであり得る。他の実施形態では、上位レベルキャッシュは、実装形態の特定のアーキテクチャに応じて、L1キャッシュ、L3キャッシュ、または任意のレベルのキャッシュであり得る。
【００８４】
ブロック502の上位レベルキャッシュの第1の主要部分は、L2キャッシュデータラインの標準セットを含むことができ、第2のサンプル部分は、L2データのサンプルセットを含むことができる。たとえば、図3Aの実施形態に示すように、L2キャッシュ325が、キャッシュデータラインの標準セットを含む第1の主要部分325aと、L2データのサンプルセットを含む第2のサンプル部分325bとに分割され得る。
【００８５】
ブロック504において、ブロック502において作成された第2のサンプル部分が、ビクティムモードサンプルデータセットと通常モードサンプルデータセットとにさらに区分され、上位レベルキャッシュを3つのデータセットに効果的に区分する。図3Aの例を続けると、図3Aの実施形態の第2の部分325bは、L2データのビクティムモードサンプルセット326と、L2データの通常モードサンプルセット327とにさらに再分割されるものとして示されており、L2キャッシュ325を3つのデータセットに効果的に区分している。
【００８６】
ブロック506において、下位レベルキャッシュも第1の主要部分と第2のサンプル部分とに区分される。下位レベルキャッシュは、メモリ階層の上位レベルキャッシュに対してレベルが低く、これは一実施形態では、下位レベルキャッシュが上位レベルキャッシュよりも大きい容量および/または上位レベルキャッシュよりも低いパフォーマンスを有することを意味する。上位レベルキャッシュがL2キャッシュである上記の例では、下位レベルキャッシュはL3キャッシュまたはL4キャッシュであり得る。たとえば、図3Aに示すように、上位レベルキャッシュがL2キャッシュ325である場合、下位レベルキャッシュはL3キャッシュ330であってよく、L3キャッシュ330も、キャッシュデータラインの標準セットを含む第1の主要部分330aと、L3データのサンプルセットを含む第2のサンプル部分330bとに分割される。
【００８７】
ブロック508において、ブロック506において作成された第2のサンプル部分が、ビクティムモードサンプルデータセットと通常モードサンプルデータセットとにさらに区分され、下位レベルキャッシュを3つのデータセットに効果的に区分する。これらの3つのデータセットは、上記で説明したブロック502〜504において作成された3つのデータセットと対応し得る。図3Aの例を続けると、図示したL3キャッシュ330の図示した第2の部分330bは、L3データのビクティムモードサンプルセット336と、L3データの通常モードサンプルセット337とにさらに再分割され、L3キャッシュ330を3つのデータセットに効果的に区分している。
【００８８】
ブロック502〜504および506〜508は、図5Aの例示的な方法500において並行して発生するものとして示されているが、他の実施形態では、これらのブロックは、上位レベルキャッシュが最初に区分され、その後に下位レベルキャッシュの区分が続く(その逆もある)形で、連続的に発生し得ることに留意されたい。同様に、ブロック502〜504は方法500において、上位レベルキャッシュのための2つの別個の区分動作を伴うものとして示されているが、他の実施形態では、これらのブロック502〜504が1つのブロックに合成されて、上位レベルキャッシュの3つの部分が生じることがある。同じことは、下位レベルキャッシュのためブロック506〜508の区分動作にも当てはまる。
【００８９】
ブロック510において、トリガイベントが検出される。ブロック510のトリガイベントは、いくつかの実施形態では、システムの起動時または特定の作業負荷の開始時など、システムの動作変更であり得る。ブロック510のトリガイベントはまた、いくつかの実施形態では、規則的(または不規則)間隔でのタイマーの始動など、周期的イベントであり得る。他の実施形態では、たとえば、トリガイベントを特定の作業負荷の初めに検出し、次いで作業負荷の処理中に周期的に検出するなど、動作ベースのトリガイベントおよび時間ベースのトリガイベントの混合が使用され得る。
【００９０】
ブロック510のトリガイベントは、上位レベルキャッシュおよび/または下位レベルキャッシュと通信している任意の構成要素によって検出され得る。一実施形態では、トリガイベントは、図3Aに示すL3キャッシュ330の論理331など、下位レベルキャッシュにおける論理または下位レベルキャッシュと通信している論理によって検出され得る。
【００９１】
ブロック520に目を向けると、方法500は、下位レベルキャッシュからビクティムモードサンプルデータおよび通常モードサンプルデータを取得する。たとえば、図3Aに示すように、L2キャッシュ325の第2のサンプル部分325bは、L2データのビクティムモードサンプルセット326とL2データの通常モードサンプルセット327の両方を生成させられ得る。このサンプルL2データ生成の結果、対応するL3データのビクティムモードサンプルセット336およびL3データの通常モードサンプルセット337が、L3キャッシュ330のサンプル部分330bにおいて生成される。下位レベルキャッシュのこれらのデータセットは次いで、たとえば、下位レベルキャッシュ(たとえば、L3キャッシュ330)に関連付けられた論理331がサンプリング期間中にサンプルデータセットを受信するか、または読み取ることによるなどして、ブロック520に従って取得され得る。
【００９２】
いくつかの実施形態では、上位レベルキャッシュ(図3AのL2キャッシュ325など)は継続的に、結果として生じる下位レベルキャッシュのビクティムモードサンプルデータセットおよび通常モードサンプルデータセットの生成をもたらし得る。そのような実施形態では、これらの継続的に生成されたサンプルデータセットは、サンプリング期間中に受信されるか、または読み取られるだけであり得る。他の実施形態では、上位レベルキャッシュは、サンプリング期間中に、結果として生じる下位レベルキャッシュのビクティムモードサンプルデータセットおよび通常モードサンプルデータセットの生成をもたらすだけであり得る。
【００９３】
ブロック520において取得される下位レベルキャッシュのビクティムモードサンプルデータセットは、任意の所望の方法を使用して生成され得る。たとえば、ビクティムモードサンプルデータセットは、クリーンキャッシュラインを追い出すこと、および下位レベルキャッシュのビクティムモードサンプルセットへのダーティデータの書戻しによるなどして、ビクティムモードとして下位レベルキャッシュが結合された上位レベルキャッシュの任意の典型的動作を使用して生成され得る。同様に、下位レベルキャッシュの通常モードサンプルセットは、下位レベルキャッシュの通常モードサンプルデータセットにダーティデータを書き戻すのみで、クリーンキャッシュラインを追い出さないことによるなどして、非ビクティムモードまたは通常モードで上位レベルキャッシュおよび下位レベルキャッシュの任意の典型的動作を使用して生成され得る。
【００９４】
ブロック520において下位レベルキャッシュからサンプルデータセットが取得されると、方法500は、ブロック530においてビクティムモードで下位レベルキャッシュを動作させることがより有利であるかどうかを判定する。ブロック530の判定は、上位レベルキャッシュおよび/または下位レベルキャッシュと通信している任意の構成要素によって行われ得る。たとえば、一実施形態では、ブロック530の判定は、図3Aに示すL3キャッシュ330の論理331など、下位レベルキャッシュにおける論理または下位レベルキャッシュと通信している論理によって行われ得る。
【００９５】
一実施形態では、ブロック530の判定は、下位レベルキャッシュのビクティムモードサンプルデータセットのキャッシュミスを、下位レベルキャッシュの通常モードサンプルデータセットと、かつ/またはしきい値と比較して、上位レベルキャッシュに対するビクティムとして下位レベルキャッシュを動作させることが最適であるかどうかを判定することを含み得る。判定は、たとえば、下位レベルキャッシュのビクティムモードサンプルデータセットのキャッシュミスの数を測定し、その数をしきい値と比較することを含み得る。別の実装形態では、判定は、下位レベルキャッシュのビクティムモードサンプルデータセットのキャッシュミスの数を測定し、その数から下位レベルキャッシュの通常モードサンプルデータセットの測定されたキャッシュミスの数を差し引き、得られた差をしきい値と比較することを含み得る。
【００９６】
そのような実施形態の場合のしきい値は、ビクティムキャッシュとして下位レベルキャッシュを動作させる利益が、そのような動作の「コスト」を上回るかどうかの動的な判定を可能にするために、キャッシュ容量、キャッシュレイテンシまたは他のパフォーマンス属性、システムアーキテクチャ、システムによって実行されている作業負荷、実行されている作業負荷のタイプ(たとえば、グラフィックス集中型アプリケーションかオーディオファイル再生アプリケーションか)などのうちの1つまたは複数に基づき得る。
【００９７】
ブロック520の判定が、下位レベルキャッシュがビクティムモードで動作すべきではないというものである場合、方法500は、ブロック540に進み、通常の非ビクティムキャッシュモードで下位レベルキャッシュの主要部分を動作させることができる。下位レベルキャッシュの主要部分が通常の非ビクティムモードですでに動作していた場合、ブロック540は、下位レベルキャッシュに動作変更をもたらさない。下位レベルキャッシュは、このモードで動作し続け、方法500はブロック510に戻って、次のトリガイベントが検出されるのを待つ。
【００９８】
一方、通常モードで動作すべきというブロック530の判定が行われたときに、下位レベルキャッシュの主要部分がビクティムキャッシュとして動作していた場合、ブロック540は、下位レベルキャッシュの主要部分に、通常の非ビクティムモードで動作させる。下位レベルキャッシュの主要部分のこの動作変更は、たとえば、図2の例示的なシステム200におけるメモリコントローラ210へのインターコネクト/バス240を介した信号など、望ましい任意の方法でもたらされ得る。その実施形態では、メモリコントローラ210は、上位レベルキャッシュ(この例ではL2キャッシュ225/325)および下位レベルキャッシュ(この例ではL3キャッシュ230/330)に所望の通常モードで動作させる。他の実施形態では、上位レベルと下位レベルの両方と通信しているシステムメモリコントローラとは別の構成要素が、メモリコントローラを使用することなく所望の通常モードで上位レベルキャッシュおよび下位レベルキャッシュに動作させるように働き得る。
【００９９】
ブロック530に戻ると、判定が、上位レベルキャッシュに対するビクティムとして下位レベルキャッシュを動作させるのが有利であるというものである場合、本方法はブロック550に進み、上位レベルキャッシュに対するビクティムとして下位レベルキャッシュの主要部分を動作させる。ブロック550の動作は、ブロック540に関して上述した動作に似ているが、逆である(すなわち、下位レベルキャッシュに、ビクティムキャッシュとしての動作を、そのモードですでに動作している場合に続けさせるが、下位レベルキャッシュに、通常の非ビクティムキャッシュとして現在動作している場合に、ビクティム動作に変更させる)。次いで方法500は、ブロック510に戻り、次のトリガイベントが検出されるのを待つ。
【０１００】
図6Aは、PCDにおけるビクティムキャッシュモードの適応的実装のための方法600の別の例示的な実施形態の態様について説明するフローチャートである。図6Aは、方法600において、上位キャッシュおよび下位キャッシュのための1つのサンプルデータセットのみが生成されることと、サンプルセットが常に、上位キャッシュおよび下位キャッシュの主要部分の動作と反対のモードで動作することによって生成されることとを除いて、図5Aの方法500と同様である。このようにして、上位キャッシュの主要部分は効果的に、前の方法500のサンプルデータの第2のセットに取って代わる。
【０１０１】
方法600はブロック602において始まり、図5Aのブロック502と同様に、上位レベルキャッシュが第1の主要部分と第2のサンプル部分とに区分される。ブロック604において、上位レベルキャッシュの主要部分は、通常モード(上位キャッシュがビクティムキャッシュを有しない場合)またはビクティムモード(下位レベルキャッシュが上位レベルキャッシュに対するビクティムであると想定される場合)のうちの一方で動作する。異なる実施形態では、ブロック604は、上位レベルキャッシュの主要部分に、必要に応じてこれらのモードのいずれかで動作させることができ、モードのうちの一方が、自動的なデフォルトとして設定され得る。どちらのモードが上位レベルキャッシュの主要部分に対して選択されるかにかかわらず、サンプル部分は他方/反対のモードで動作する。
【０１０２】
ブロック606において、図5Aのブロック506と同様に、下位レベルキャッシュも第1の主要部分と第2のサンプル部分とに区分される。ブロック608において、下位レベルキャッシュの主要部分は、上位レベルキャッシュの主要部分と同じモードで動作する。同様に、下位レベルキャッシュのサンプル部分は、上位レベルキャッシュのサンプル部分と同じモードで動作する。したがって、上位レベルキャッシュと同様に、ブロック608は、どちらのモードで下位レベルキャッシュの主要部分が動作するかにかかわらず、サンプル部分は他方/反対のモードで動作する。
【０１０３】
(上位レベルキャッシュのための)ブロック602〜604および(下位レベルキャッシュのための)ブロック606〜608は、図6Aの例示的な方法600において並行して発生するものとして示されている。方法600の他の実施形態では、ブロック602〜604は、並行してではなく連続的に発生し得る。さらに、いくつかの実施形態では、ブロック604は、ブロック602とは別のステップではないことがある(たとえば、ブロック604の部分のためのそれぞれの動作モードが、当該部分が別のステップとしてではなくブロック602において作成されるときに、設定され得る)。同じことは、いくつかの実施形態ではブロック606〜608に当てはまる。
【０１０４】
ブロック610において、トリガイベントが検出される。図5Aのブロック510と同様に、ブロック610のトリガイベントは、いくつかの実施形態では、システムの起動時または特定の作業負荷の開始時など、システムの動作変更であり得る。ブロック610のトリガイベントはまた、いくつかの実施形態では、規則的(または不規則)間隔でのタイマーの始動など、周期的イベントであり得る。他の実施形態では、動作ベースのトリガイベントおよび時間ベースのトリガイベントの混合が使用され得る。さらに、ブロック610のトリガイベントは、上位レベルキャッシュおよび/または下位レベルキャッシュと通信している任意の構成要素によって検出され得る。一実施形態では、トリガイベントは、図3Bに示すL3キャッシュ330'の論理331'など、下位レベルキャッシュにおける論理または下位レベルキャッシュと通信している論理によって検出され得る。
【０１０５】
ブロック620に目を向けると、方法600は、下位レベルキャッシュから主要部分データセットおよびサンプル部分データセットを取得する。下位レベルキャッシュの主要部分およびサンプル部分は、反対のモードで動作しており、これらのデータセットは、上位レベルキャッシュに対するビクティムとしての下位レベルキャッシュの動作を表す1つのデータセットと、通常の非ビクティムキャッシュとしての下位レベルキャッシュの動作を表す1つのデータセットとを含む。
【０１０６】
たとえば、図3Bに示すように、L2キャッシュ325'の主要部分325a'は、方法600のブロック604において設定/選択されたモードに従って動作する。主要部分325a'のためのモードに応じて、上位レベルキャッシュ(L2キャッシュ325')およびシステム200(図2)の動作の結果、ビクティムキャッシュデータセットまたは通常の非ビクティムキャッシュデータセットのいずれかが下位レベルキャッシュ(図3Bの例ではL3キャッシュ330')の主要部分330a'において継続的に生成される。下位レベルキャッシュの主要部分のデータセットがブロック620において取得されるか、または読み取られる。
【０１０７】
同様に、L2キャッシュ325'のサンプル部分325b'は、L2データのサンプルセット326'を生成させられ得、サンプルのタイプ(ビクティムまたは通常)は、主要部分325a'の動作モードに依存する。このサンプルL2データ生成の結果、対応するL3データのサンプルセット336'が、L3キャッシュ330'のサンプル部分330b'において生成される。下位レベルキャッシュのこのサンプルデータセットは次いで、たとえば、下位レベルキャッシュ(たとえば、L3キャッシュ330')に関連付けられた論理331'がサンプリング期間中にサンプルデータセットを受信するか、または読み取ることによるなどして、ブロック620に従って取得され得る。
【０１０８】
いくつかの実施形態では、上位レベルキャッシュ(図3AのL2キャッシュ325'など)は継続的に、結果として生じる下位レベルキャッシュのサンプルデータセットの生成をもたらし得る。そのような実施形態では、この継続的に生成されたサンプルデータセットは、サンプリング期間中に受信されるか、または読み取られるだけであり得る。他の実施形態では、上位レベルキャッシュは、サンプリング期間中に、結果として生じる下位レベルキャッシュのサンプルデータセットの生成をもたらすだけであり得る。
【０１０９】
ブロック620において取得される下位レベルキャッシュのサンプルデータセットは、任意の所望の方法を使用して生成され得る。たとえば、ビクティムモードサンプルデータセットは、クリーンキャッシュラインを追い出すこと、および下位レベルキャッシュのビクティムモードサンプルデータセットへのダーティデータの書戻しによるなどして、ビクティムモードとして下位レベルキャッシュが結合された上位レベルキャッシュの任意の典型的動作を使用して(サンプル部分がビクティムモードで動作するよう指示されたときに)生成され得る。同様に、下位レベルキャッシュの通常モードサンプルセットは、下位レベルキャッシュの通常モードサンプルデータセットにダーティデータを書き戻すのみで、クリーンキャッシュラインを追い出さないことによるなどして、非ビクティムモードまたは通常モードで上位レベルキャッシュおよび下位レベルキャッシュの任意の典型的動作を使用して(サンプル部分がビクティムモードで動作するよう指示されたときに)生成され得る。
【０１１０】
ブロック620において下位レベルキャッシュから主要部分およびサンプル部分データセットが取得されると、方法600は、ブロック630においてサンプルセットのモードで下位レベルキャッシュを動作させることがより有利であるかどうかを判定する。ブロック630の判定は、上位レベルキャッシュおよび/または下位レベルキャッシュと通信している任意の構成要素によって行われ得る。たとえば、一実施形態では、ブロック630の判定は、図3Bに示すL3キャッシュ330'の論理331'など、下位レベルキャッシュにおける論理または下位レベルキャッシュと通信している論理によって行われ得る。
【０１１１】
一実施形態では、ブロック630は、(図3Bの例におけるL3データ336'などの)データのサンプルセットが主要部分(図3Bにおける330a')における標準データよりも良好な行動をもたらしているかどうかを判定する。この判定は、望ましい任意の方法で行われ得る。たとえば、一実施形態では、ブロック630の判定は、主要部分におけるキャッシュデータラインの標準セットのキャッシュミスとサンプル部分からのデータのサンプルセットのキャッシュミスを互いに比較し、かつ/またはしきい値と比較して、下位レベルキャッシュが現在のモードで動作すべきか、現在のモードが変更されるべきかを判定することを含み得る。この判定は、そのような実施形態では、図5Aに関して上述したのと同じ方法で行われ得る。
【０１１２】
別の実施形態では、クリーンな追出しの数は、どちらのデータセット(主要部分またはサンプル部分)がビクティムモードで動作している場合でもサンプリング期間中に追跡されてよく、その数は、同じデータセットからのキャッシュヒットの数と比較され得る。キャッシュヒットの数をクリーンな追出しの数で割った値がしきい値よりも大きい場合、ビクティムモードが判定モードである。キャッシュヒットの数をクリーンな追出しの数で割った値がしきい値よりも大きい場合、非ビクティムモードが判定モードである。そのような実施形態では、ブロック630は次いで、サンプル部分が判定モードで動作している部分であるかどうか(すなわち、サンプル部分のモードで下位レベルキャッシュを動作させることがより有利であるか)を識別または判定する。
【０１１３】
上記で説明したように、いずれの判定方法の場合のしきい値も、キャッシュ容量、キャッシュレイテンシまたは他のパフォーマンス属性、システムアーキテクチャ、システムによって実行されている作業負荷、実行されている作業負荷のタイプ(たとえば、グラフィックス集中型アプリケーションかオーディオファイル再生アプリケーションか)のうちの1つまたは複数に基づき得る。様々な実施形態では、しきい値は、単一の固定プリセット値であってよく、異なる条件もしくは作業負荷に対する複数の値(異なるタイプの作業負荷に対する異なるしきい値など)であってよく、または履歴データ、現在の条件などに基づいてプログラムもしくは更新され得る動的な値であってよい。
【０１１４】
ブロック630における判定がyesである(すなわち、サンプル部分のモードで下位レベルキャッシュを動作させることがより有利である)場合、方法600はブロック640に進み、上位レベルキャッシュと下位レベルキャッシュの両方において主要部分とサンプル部分の両方の動作モードを切り替える。上記で説明したように、動作モードを非ビクティムからビクティムに(またはその逆に)変更することは、上位レベルキャッシュと下位レベルキャッシュの両方と通信している別個の構成要素によって達成されることがあり、またはインターコネクト/バス240を介してメモリコントローラ(図2における210など)にシグナリングすることによって達成されることがある。次いで方法600は、ブロック610に戻って、別のトリガイベントが検出されるのを待つ。
【０１１５】
ブロック630における判定がnoである(すなわち、サンプル部分のモードで下位レベルキャッシュを動作させることがより有利ではない)場合、方法600はブロック610に戻って、別のトリガイベントが検出されるのを待つ。
【０１１６】
したがって、下位レベルキャッシュにおけるデータのサンプルセットがより良好な行動をもたらすときはいつでも、サンプル部分および主要部分のモード/ポリシーはいずれも変更される。サンプル部分は主要部分とは反対のモードで常に動作しているので、両方を変更すると、サンプル部分におけるサンプルセットおよび主要部分の標準データのモード/ポリシーが反転する。
【０１１７】
図7Aは、PCDにおけるキャッシュメモリの改善された動作を伴う、ビクティムキャッシュモードの適応的実装のための方法700の例示的な実施形態の態様について説明するフローチャートである。方法700はブロック710において始まり、下位レベルキャッシュが上位レベルキャッシュに対してビクティムモードで動作する。下位レベルキャッシュは、図5Aおよび図6Aに関して上述したビクティムキャッシュとして動的かつ/または適応的に動作していることがある。他の実施形態では、下位レベルキャッシュは、ビクティムキャッシュとして継続的に動作していることがある。
【０１１８】
上位レベルキャッシュおよび下位レベルキャッシュは、上記で説明したようにメモリ階層の一部である。一実施形態では、下位レベルキャッシュは、上位レベルキャッシュと比較して大きい容量および/または遅いパフォーマンスを有する。上位レベルキャッシュは、一般に、L1またはL2キャッシュなどのプロセッサに関連付けられるが、いくつかの実施形態では、上位レベルキャッシュは任意のレベルのキャッシュ(L3またはL4を含む)であり得、その場合にメモリ階層が、上位キャッシュレベルよりも低い少なくとも1つのレベルのキャッシュを含む。
【０１１９】
ブロック720において、下位レベルビクティムキャッシュに関連してフィルタが動作する。フィルタは、図4に示すフィルタ460であってよく、ブルームフィルタ、タグアレイなど、任意の所望のフィルタ構造であり得る。一実施形態では、フィルタは、より単純な構造で実装される、下位レベルビクティムキャッシュに含まれるデータの複製である。
【０１２０】
ブロック730において、下位レベルビクティムキャッシュのキャッシュラインを反映するためにフィルタが更新される。一実施形態では、(図4に示すL3キャッシュ430などの)上位レベルキャッシュに対するビクティムキャッシュとしての下位レベルキャッシュの動作中、下位レベルキャッシュが上位レベルキャッシュからのキャッシュラインキャストアウトを受け入れるよう迫られたとき、下位レベルビクティムキャッシュにキャッシュラインが存在することを示す何らかの注釈または記録をフィルタが含むように、対応するエントリがフィルタにおいて作られる。
【０１２１】
作られる通信および/または注釈の形式は、どのようにフィルタ460が実装されるか(たとえば、ブルームフィルタ、タグアレイなど)に依存し得る。たとえば、一実装形態では、ブロック730においてフィルタを更新することは、キャッシュラインが下位レベルビクティムキャッシュから追い出されるときに、下位レベルビクティムキャッシュにキャッシュラインがもはや存在しないことを反映するために、フィルタにおいてエントリを作成または改変することを含み得る。この実装形態では、フィルタがブルームフィルタである場合、ブロック730においてフィルタを更新することは、下位レベルキャッシュにおいてビクティムラインに取って代わられるキャッシュラインがクリーンであるときに、「データなしの追出し」メッセージを発信することを含み得る。
【０１２２】
ブロック740において、上位レベルキャッシュにキャッシュミスがあった場合に、下位レベルキャッシュにキャッシュラインがあるかどうかの判定が行われる。一実施形態では、この判定は、上位レベルキャッシュにミスがあった場合に、キャッシュラインを求めてフィルタをチェックすることによって行われ得る。したがって、例として、図4に示す実施形態におけるプロセッサによるL2キャッシュ423ミスの後、プロセッサは、ブロック740においてフィルタをチェックすることによって、所望のキャッシュラインが下位レベルビクティムキャッシュにあるかどうかを迅速に判定することができる。
【０１２３】
ブロック740における判定がyesである場合(すなわち、上位レベルキャッシュミスがフィルタ上でヒットした場合)、ブロック750において上位レベルミスは、キャッシュラインの取出しのために下位レベルビクティムキャッシュに進む。次いで、方法700は戻る。
【０１２４】
ブロック740における判定がnoである場合(すなわち、上位レベルキャッシュミスがフィルタ上でもミスした場合)、ブロック760において上位レベルキャッシュミスは、下位レベルビクティムキャッシュをバイパスする。したがって、キャッシュラインがフィルタにない場合、上位レベルキャッシュミスは、下位レベルキャッシュ自体をチェックする必要がない(また下位レベルビクティムキャッシュへの要求および下位レベルビクティムキャッシュからの返答のレイテンシを生じさせない)。代わりに、ブロック760において、上位レベルキャッシュミスは直接、図4におけるメモリコントローラ410などのメモリコントローラに、そして図4のDDR450などのメインメモリに進む。これは、上位レベルキャッシュミスのレイテンシペナルティを大幅に減らす。
【０１２５】
ブロック760におけるメモリコントローラへの要求の結果として、上位レベルキャッシュが更新された場合、そのような更新は、上位レベルキャッシュから下位レベルビクティムキャッシュへのキャッシュラインキャストアウトを生じさせ得る。ブロック770において、下位レベルキャッシュに書き込まれている新しいキャッシュライン、ならびに下位レベルキャッシュから追い出されている任意のキャッシュラインを反映するために、フィルタが更新される。次いで、方法700は戻る。
【０１２６】
当業者によって理解されるように、図5A、図6A、および図7Aは、それぞれ、開示する方法500、600、および700の例示的な一実施形態を表しているにすぎない。他の実施形態では、図5Aに示す方法500、図6Aに示す方法600、および/または図7Aに示す方法700に追加のブロックまたはステップを加えることができる。同様に、いくつかの実施形態では、図5A、図6A、および/または図7Aに示す様々なブロックまたはステップを結合する、または省略することができる。方法500、方法600、または方法700のそのような変形体は本開示の範囲内である。
【０１２７】
加えて、本発明が説明した実施形態で機能するように、図5A、図6A、または図7Aを含めて、本明細書で説明したプロセスまたはプロセスフロー内のいくつかのステップが、他のステップよりも先行する場合があるのは当然である。しかしながら、そのような順序またはシーケンスが本発明の機能を変更しない場合、本開示は、説明したステップの順序に限定されない。さらに、いくつかのステップが、本開示の範囲から逸脱することなく、他のステップの前、後、またはそれと並行して(実質的に同時に)実行される場合があることを認識されたい。さらに、「それ以降」、「次いで」、「次に」、「後に」などの言葉は、ステップの順序を制限することは意図していない。これらの言葉は単に、例示的な方法の説明に読者を導くために使用される。
【０１２８】
方法500、方法600、および方法700について上記で説明した様々な動作、方法、または機能は、様々なハードウェアおよび/またはソフトウェア構成要素/モジュールによって実行される場合がある。そのような構成要素および/またはモジュールは、説明した様々な動作、方法、または機能を実行するための手段を提供することができる。概して、対応する等価物であるミーンズプラスファンクションを有する、図に示した方法が存在する場合、動作ブロックは、同様に番号付けされたミーンズプラスファンクションに対応する。たとえば、図5Aに示したブロック502〜550は、図5Bに示したミーンズプラスファンクションブロック502'〜550'に対応する。同様に、図6Aに示したブロック602〜640は、図6Bに示したミーンズプラスファンクションブロック602'〜640'に対応する。最後に、図7Aに示したブロック710〜770は、図7Bに示したミーンズプラスファンクションブロック710'〜770'に対応する。
【０１２９】
さらに、プログラミングに関する当業者は、たとえば、本明細書におけるフローチャートおよび関連する説明に基づいて、難なく、開示した発明を実装するコンピュータコードを書くことができるか、または実装するのに適したハードウェアおよび/もしくは回路を識別することができる。したがって、プログラムコード命令または詳細なハードウェアデバイスの特定のセットの開示は、本発明の作製方法および使用方法を十分に理解するのに必要であるとはみなされない。特許請求されるプロセッサ実施プロセスの本発明の機能性は、種々のプロセスフローを例示する場合がある図面とともに、上述の説明において、より詳細に説明されている。
【０１３０】
上で示したような1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装されてよい。ソフトウェアにおいて実装される場合には、その機能は、非一時的プロセッサ可読媒体のようなコンピュータ可読媒体上に1つまたは複数の命令またはコードとして記憶または送信されてよい。コンピュータ可読媒体は、ある場所から別の場所へのプログラムの転送を容易にする任意の媒体を含む、データ記憶媒体とデータ通信媒体との両方を含む。
【０１３１】
記憶媒体は、コンピュータまたはプロセッサによってアクセスされてよい任意の利用可能な媒体であってよい。限定はしないが、例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを搬送もしくは記憶するために使用することができ、コンピュータによってアクセスすることができる任意の他の媒体を含むことができる。ディスク(disk)およびディスク(disc)は、本明細書で使用するとき、コンパクトディスク(disc)(「CD」)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(「DVD」)、フロッピー(登録商標)ディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生する一方で、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体の範囲内に含まれるべきである。
【０１３２】
選択された態様が詳細に図示および説明されたが、以下の特許請求の範囲によって規定されるような本発明から逸脱することなく、本明細書において様々な置換および改変がなされる場合があることは理解されよう。
【符号の説明】
【０１３３】
100  PCD
102  オンチップシステム(またはSoC)
103  アナログデジタル変換器(「ADC」)コントローラ
110  マルチコア中央処理装置(「CPU」)、CPU
112  メモリ
114  ネットワークカード
120  第0のコア、コア、GPU/第0のコア、GPUコア
122  第1のコア、コア
124  第2のコア、コア
126  第Nのコア、コア、第N/HLOSのコア
128  アナログ信号プロセッサ
129  ディスプレイコントローラ
130  タッチスクリーンコントローラ
132  ディスプレイ/タッチスクリーン
134  ビデオエンコーダ
136  ビデオ増幅器
138  ビデオポート
140  ユニバーサルシリアルバス(USB)コントローラ
142  USBポート
146  加入者識別モジュール(SIM)カード
148  デジタルカメラ、カメラ
150  ステレオオーディオコーデック
152  オーディオ増幅器
154  第1のステレオスピーカ
156  第2のステレオスピーカ
157  熱センサ
157A  オンチップ熱センサ
157B  オフチップ熱センサ
158  マイクロフォン増幅器
160  マイクロフォン
162  周波数変調(FM)無線チューナ
164  FMアンテナ
166  ステレオヘッドフォン
168  モデムデバイス/無線周波数(「RF」)トランシーバ、モデムデバイス
170  RFスイッチ
172  RFアンテナ
174  キーパッド
176  マイクロフォン付きモノヘッドセット、モノヘッドセット
178  バイブレータデバイス、バイブレータ
188  電源
200  システム
202  システムオンチップ(SoC)集積回路、SoC
210  メモリコントローラ
220  第0のコア、コア
221  L2キャッシュ、上位レベルL2キャッシュ
222  第1のコア、コア
223  L2キャッシュ、上位レベルL2キャッシュ
224  第Nのコア、コア
225  L2キャッシュ、上位レベルL2キャッシュ
230  L3キャッシュ、下位レベルL3キャッシュ、L3
231  論理
240  インターコネクトまたはバス、インターコネクト/バス
250  DDR、外部DDR
325  L2キャッシュ
325'  L2キャッシュ
325a  第1の主要部分
325a'  第1の主要部分、主要部分
325b  第2のサンプル部分、第2の部分
325b'  第2のサンプル部分、第2の部分、サンプル部分
326  L2データのビクティムモードサンプルセット
326'  L2データのサンプルセット、L2データのビクティムモードサンプルセット、L2データの通常モードサンプルセット
327  L2データの通常モードサンプルセット
330  L3キャッシュ、ビクティムL3キャッシュ
330'  L3キャッシュ、ビクティムL3キャッシュ
330a  第1の主要部分
330a'  第1の主要部分、主要部分
330b  第2のサンプル部分、第2の部分、サンプル部分
330b'  第2のサンプル部分、サンプル部分
331  論理
331'  論理
336  L3データのビクティムモードサンプルセット、L3データのサンプルセット
336'  L3データのサンプルセット、L3データのビクティムモードサンプルセット、L3データの通常モードサンプルセット、L3データ
337  L3データの通常モードサンプルセット、L3データのサンプルセット
400  システム
402  システムオンチップ(SoC)集積回路、SoC
410  メモリコントローラ
420  第0のコア
421  L2キャッシュ、上位レベルL2キャッシュ
422  第1のコア
423  L2キャッシュ、上位レベルL2キャッシュ
424  第Nのコア
425  L2キャッシュ、上位レベルL2キャッシュ
430  L3キャッシュ、ビクティムL3キャッシュ
440  インターコネクトまたはバス、インターコネクト/バス
450  DDR、外部DDR
460  L3フィルタ、ブロック、フィルタ
500  方法
600  方法
700  方法
【要約】
ポータブルコンピューティングデバイス(PCD)におけるビクティムキャッシュの改善された動作のためのシステムおよび方法が提示される。下位レベルキャッシュは、上位レベルキャッシュに対するビクティムとして動作し、下位レベルキャッシュが複数のキャッシュラインを含む。フィルタが、下位レベルビクティムキャッシュに関連して動作し、ビクティムキャッシュに含まれるキャッシュラインを反映する。上位レベルキャッシュにミスがあった場合、要求されたキャッシュラインがビクティムキャッシュにあるかどうかを判定するために、フィルタがチェックされる。フィルタをチェックすることで、要求されたキャッシュラインがビクティムキャッシュにあると判定された場合、要求されたキャッシュラインがビクティムキャッシュから取り出される。フィルタをチェックすることで、要求されたキャッシュラインがビクティムキャッシュにないと判定された場合、ビクティムキャッシュはバイパスされ、キャッシュラインはメモリコントローラに要求される。【図１】
0006266850.tif 000002
【図２】
0006266850.tif 000003
【図３Ａ】
0006266850.tif 000004
【図３Ｂ】
0006266850.tif 000005
【図４】
0006266850.tif 000006
【図５Ａ】
0006266850.tif 000007
【図５Ｂ】
0006266850.tif 000008
【図６Ａ】
0006266850.tif 000009
【図６Ｂ】
0006266850.tif 000010
【図７Ａ】
0006266850.tif 000011
【図７Ｂ】
0006266850.tif 000012