(57)【要約】ハイブリッドキャッシュを実装するためのシステム、装置及び方法が開示される。プロセッサは、プロセッサがＬ２キャッシュのサイズ及びＬ３キャッシュのサイズを動的に調整することを可能にするハイブリッドＬ２／Ｌ３キャッシュを含むことができる。いくつかの実施形態では、プロセッサは、マルチコアプロセッサであってもよく、複数のコアによって使用される論理Ｌ２キャッシュ及び論理Ｌ３キャッシュに分割された単一のキャッシュを設けてもよい。一実施形態において、プロセッサは、論理Ｌ２及びＬ３キャッシュのキャッシュヒット率を追跡し、当該キャッシュヒット率に基づいて論理Ｌ２及びＬ３キャッシュのサイズを調整してもよい。別の実施形態では、プロセッサは、どのアプリケーションがプロセッサによって現在実行されているかに基づいて、論理Ｌ２及びＬ３キャッシュのサイズを調整してもよい。【選択図】図８
2019502996.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュと、
コントロールユニットと、を備え、
前記コントロールユニットは、前記キャッシュを第１論理キャッシュ及び第２論理キャッシュに分割するように構成されており、前記第１論理キャッシュはキャッシュ階層の第１レベルを表し、前記第２論理キャッシュは前記キャッシュ階層の第２レベルを表す、
プロセッサ。
【請求項２】
前記キャッシュのサイズは固定されており、前記第１論理キャッシュはレベル２（Ｌ２）キャッシュであり、前記第２論理キャッシュはレベル３（Ｌ３）キャッシュである、請求項１に記載のプロセッサ。
【請求項３】
前記コントロールユニットは、前記第１論理キャッシュと前記第２論理キャッシュとの間で記憶容量を再割り当てするように構成されている、請求項１に記載のプロセッサ。
【請求項４】
前記プロセッサは、第１キャッシュのメトリックが第１閾値よりも大きいと判別したことに応じて、前記第１論理キャッシュのサイズを変更し、前記第２論理キャッシュのサイズを変更するように構成されている、請求項１に記載のプロセッサ。
【請求項５】
前記プロセッサは、
第１要求を前記第２論理キャッシュの第１部分からメモリに送信することであって、前記第１要求は第１メモリアドレスをターゲットとする、ことと、
前記第１要求をメモリに送信した後であって第１フィルデータをメモリから受信する前に、前記第２論理キャッシュの前記第１部分を前記第１論理キャッシュに再割り当てすることであって、前記第１フィルデータは前記第１要求に対応している、ことと、
前記第１論理キャッシュにおいて前記第１フィルデータをメモリから受信することと、
前記第１メモリアドレスが前記第２論理キャッシュの第２部分に再マッピングされたことを判別することであって、前記第２論理キャッシュの前記第１部分を前記第１論理キャッシュに再割り当てすることにより、前記第１メモリアドレスが前記第２論理キャッシュの前記第２部分に再マッピングされる、ことと、
前記第１フィルデータを前記第１論理キャッシュから前記第２論理キャッシュの前記第２部分に転送することと、
を行うように構成されている、請求項１に記載のプロセッサ。
【請求項６】
前記プロセッサは、第１アプリケーションの実行から第２アプリケーションの実行への切り替えに応じて、前記第１論理キャッシュの記憶容量を減らし、前記第２論理キャッシュの記憶容量を増加させるように構成されている、請求項１に記載のプロセッサ。
【請求項７】
前記プロセッサは、
前記第２論理キャッシュの第１ウェイを前記第１論理キャッシュに再割り当てすることと、
前記第２論理キャッシュの前記第１ウェイに記憶した第１キャッシュラインを識別することと、
前記第１ウェイを前記第２論理キャッシュから前記第１論理キャッシュに再割り当てすることに応じて、前記第１キャッシュラインを無効化することと、
を行うように構成されている、請求項１に記載のプロセッサ。
【請求項８】
キャッシュを第１論理キャッシュ及び第２論理キャッシュに分割することであって、前記第１論理キャッシュはキャッシュ階層の第１レベルを表し、前記第２論理キャッシュは前記キャッシュ階層の第２レベルを表す、ことを含む、
方法。
【請求項９】
前記キャッシュのサイズは固定されており、前記第１論理キャッシュはレベル２（Ｌ２）キャッシュであり、前記第２論理キャッシュはレベル３（Ｌ３）キャッシュである、請求項８に記載の方法。
【請求項１０】
前記第１論理キャッシュと前記第２論理キャッシュとの間で記憶容量を再割り当てすることを含む、請求項８に記載の方法。
【請求項１１】
第１キャッシュのメトリックが第１閾値よりも大きいと判別したことに応じて、前記第１論理キャッシュのサイズを変更し、前記第２論理キャッシュのサイズを変更することを含む、請求項８に記載の方法。
【請求項１２】
第１要求を前記第２論理キャッシュの第１部分からメモリに送信することであって、前記第１要求は第１メモリアドレスをターゲットとする、ことと、
前記第１要求をメモリに送信した後であって第１フィルデータをメモリから受信する前に、前記第２論理キャッシュの前記第１部分を前記第１論理キャッシュに再割り当てすることであって、前記第１フィルデータは前記第１要求に対応している、ことと、
前記第１論理キャッシュにおいて前記第１フィルデータをメモリから受信することと、
前記第１メモリアドレスが前記第２論理キャッシュの第２部分に再マッピングされたことを判別することであって、前記第２論理キャッシュの前記第１部分を前記第１論理キャッシュに再割り当てすることにより、前記第１メモリアドレスが前記第２論理キャッシュの前記第２部分に再マッピングされる、ことと、
前記第１フィルデータを前記第１論理キャッシュから前記第２論理キャッシュの前記第２部分に転送することと、を含む、請求項８に記載の方法。
【請求項１３】
第１アプリケーションの実行から第２アプリケーションの実行への切り替えに応じて、前記第１論理キャッシュの記憶容量を減らし、前記第２論理キャッシュの記憶容量を増加させることを含む、請求項８に記載の方法。
【請求項１４】
前記第２論理キャッシュの第１ウェイを前記第１論理キャッシュに再割り当てすることと、
前記第２論理キャッシュの前記第１ウェイに記憶した第１キャッシュラインを識別することと、
前記第１ウェイを前記第２論理キャッシュから前記第１論理キャッシュに再割り当てすることに応じて、前記第１キャッシュラインを無効化することと、を含む、請求項８に記載の方法。
【請求項１５】
メモリと、
キャッシュ及びコントロールユニットを含むプロセッサと、を備え、
前記コントロールユニットは、前記キャッシュを第１論理キャッシュ及び第２論理キャッシュに分割するように構成されており、前記第１論理キャッシュはキャッシュ階層の第１レベルを表し、前記第２論理キャッシュは前記キャッシュ階層の第２レベルを表す、
システム。
【請求項１６】
前記キャッシュのサイズは固定されており、前記第１論理キャッシュはレベル２（Ｌ２）キャッシュであり、前記第２論理キャッシュはレベル３（Ｌ３）キャッシュである、請求項１５に記載のシステム。
【請求項１７】
前記コントロールユニットは、前記第１論理キャッシュと前記第２論理キャッシュとの間で記憶容量を再割り当てするように構成されている、請求項１５に記載のシステム。
【請求項１８】
前記プロセッサは、第１キャッシュのメトリックが第１閾値よりも大きいと判別したことに応じて、前記第１論理キャッシュのサイズを変更し、前記第２論理キャッシュのサイズを変更するように構成されている、請求項１５に記載のシステム。
【請求項１９】
前記プロセッサは、
第１要求を前記第２論理キャッシュの第１部分からメモリに送信することであって、前記第１要求は第１メモリアドレスをターゲットとする、ことと、
前記第１要求をメモリに送信した後であって第１フィルデータをメモリから受信する前に、前記第２論理キャッシュの前記第１部分を前記第１論理キャッシュに再割り当てすることであって、前記第１フィルデータは前記第１要求に対応している、ことと、
前記第１論理キャッシュにおいて前記第１フィルデータをメモリから受信することと、
前記第１メモリアドレスが前記第２論理キャッシュの第２部分に再マッピングされたことを判別することであって、前記第２論理キャッシュの前記第１部分を前記第１論理キャッシュに再割り当てすることにより、前記第１メモリアドレスが前記第２論理キャッシュの前記第２部分に再マッピングされる、ことと、
前記第１フィルデータを前記第１論理キャッシュから前記第２論理キャッシュの前記第２部分に転送することと、
を行うように構成されている、請求項１５に記載のシステム。
【請求項２０】
前記プロセッサは、第１アプリケーションの実行から第２アプリケーションの実行への切り替えに応じて、前記第１論理キャッシュの記憶容量を減らし、前記第２論理キャッシュの記憶容量を増加させるように構成されている、請求項１５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載されている実施形態は、プロセッサに関し、より詳細には、プロセッサのキャッシュの利用に関する。
【背景技術】
【０００２】
多くの最新のコンピューティングデバイス（例えば、ラップトップ／デスクトップコンピュータ、スマートフォン、セットトップボックス、電気製品等）は、１つ以上のキャッシュを有する処理サブシステムを含む。キャッシュは、一般に、処理サブシステム内又はその近傍に配置された比較的小型の高速アクセスメモリ回路であり、コンピューティングデバイス内のより高いレベルのメモリ階層（すなわち、他のより大きなキャッシュ及び／又はメモリ）から読み出されたデータを記憶し、記憶されたデータに対するより高速なアクセスを可能にするために使用することができる。
【０００３】
一般に、コンピュータシステムのメインメモリは、ページレベルの粒度でメモリ構成を有する。通常、ページは４キロバイト（ＫＢ）のページであるが、特定の実施態様に対して他のサイズのページを定義することもできる。キャッシュメモリの構成は、一般に、キャッシュラインレベルの粒度である。キャッシュラインは、連続するメモリ位置に記憶された複数のバイトのセットであり、コヒーレンシ用のユニットとして扱われる。本明細書で使用する場合、「キャッシュライン」及び「キャッシュブロック」という用語は、同じ意味で用いられる。キャッシュラインのバイト数は、設計上の選択によって異なり、任意のサイズであってもよい。
【０００４】
最新のプロセッサには、マルチレベルのキャッシュ階層が使用されることが多い。例えば、マルチコアプロセッサの場合、各コアは、データ及び／又は命令を記憶するためのレベル１（Ｌ１）キャッシュを含むことができる。マルチレベルのキャッシュ階層は、通常、コア毎に、専用レベル２（Ｌ２）キャッシュと、複数のコアで共有されるより大きなレベル３（Ｌ３）キャッシュと、を含む。プロセッサは、異なるデータ処理量及び異なるデータアクセスパターンを有する多くの異なるタイプのアプリケーションを実行することができる。アプリケーションの中には、大量のデータを処理するものもあれば、データの同じ部分を徐々に変更することによって、少量のデータで動作するものもある。しかしながら、従来のマルチレベルのキャッシュ階層を使用すると、いくつかのアプリケーションでは、最適効率より悪い状態でプロセッサによって実行される結果となる場合がある。
【発明の概要】
【課題を解決するための手段】
【０００５】
ハイブリッドキャッシュを実装するシステム、装置及び方法が考察される。
【０００６】
各種実施形態において、マルチコアプロセッサは、マルチレベルのキャッシュ階層を含むことができる。プロセッサは、キャッシュ階層の第１レベル及び第２レベルを、各コアが使用するために論理的に分割される単一のキャッシュに効果的に組み合わせるキャッシュ構成を有することができる。各種実施形態において、キャッシュは、レベル２（Ｌ２）及びレベル３（Ｌ３）のキャッシュに論理的に分割され、各コアには所定の論理Ｌ２及びＬ３キャッシュが割り当てられる。各種実施形態において、キャッシュ階層の第１レベル及び第２レベルのサイズは、静的に設定されてもよいし、動的に調整されてもよい。
【０００７】
例えば、論理キャッシュのサイズは、製造時に固定されてもよい。他の実施形態では、論理キャッシュのサイズは、現在の動作条件に基づいて動的に調整されてもよい。例えば、プロセッサは、より小さいＬ２キャッシュを犠牲にして、より大きなＬ３キャッシュから利益を得る第１アプリケーションを実行することができる。プロセッサは、第１アプリケーションを実行する場合に、Ｌ２キャッシュのサイズを減らし、Ｌ３キャッシュのサイズを増加させることができる。その後、プロセッサは、第１アプリケーションの実行から第２アプリケーションの実行に切り替えることができ、プロセッサは、第２アプリケーションが、より小さいＬ３キャッシュを犠牲にして、より大きなＬ２キャッシュから利益を得るという指示を決定又は受信することができる。これにより、プロセッサは、Ｌ３キャッシュのサイズを減らし、Ｌ２キャッシュのサイズを増加させることができる。
【０００８】
更なる実施形態において、プロセッサは、キャッシュ階層の異なるレベルに関連する様々なパラメータを監視することができる。この実施形態において、プロセッサは、監視されたパラメータに基づいて、キャッシュ階層の２つ以上のレベルのサイズを動的に調整することができる。これらのパラメータは、第１キャッシュのキャッシュヒット率と、第２キャッシュのキャッシュヒット率と、別々のプロセッサコアに対応する異なる第１キャッシュ間のキャッシュラインのマイグレーション率と、を含むことができる。各種実施形態において、プロセッサは、１つ以上のパラメータを１つ以上の閾値と比較することができる。プロセッサは、比較結果に基づいて、第１キャッシュ（例えば、Ｌ２キャッシュ）のサイズを減らし、第２キャッシュ（例えば、Ｌ３キャッシュ）のサイズを増加させることができ、第１キャッシュのサイズを増加させて、第２キャッシュのサイズを減らすことができ、又は、第１キャッシュ及び第２キャッシュの現在のサイズを維持することができる。
【０００９】
これらの特徴及び利点、並びに、他の特徴及び利点は、本明細書に提示される以下の詳細な説明を参照することによって、当業者に明らかになるであろう。
【００１０】
方法及びメカニズムの上記及び更なる利点は、添付の図面と併せて以下の説明を参照することによって、より良く理解することができる。
【図面の簡単な説明】
【００１１】
【図１】コンピューティングシステムの一実施形態のブロック図である。
【図２】論理キャッシュの一実施形態のブロック図である。
【図３】コントロールユニットの一実施形態のブロック図である。
【図４】プロセッサの一実施形態のブロック図である。
【図５】プロセッサの別の実施形態のブロック図である。
【図６】３つの異なる時点における論理キャッシュの一実施形態のブロック図である。
【図７】複数のキャッシュラインのタグビットを示す図である。
【図８】キャッシュサイズを動的に調整する方法の一実施形態を示す一般化されたフロー図である。
【図９】キャッシュサイズを動的に調整する方法の別の実施形態を示す一般化されたフロー図である。
【図１０】キャッシュサイズをいつ調整するかを決定する方法の一実施形態を示す一般化されたフロー図である。
【図１１】キャッシュサイズをいつ調整するかを決定する方法の別の実施形態を示す一般化されたフロー図である。
【図１２】キャッシュ階層のマイグレーション率を監視する方法の一実施形態を示す一般化されたフロー図である。
【図１３】隣接するキャッシュレベル間で異なる容量割り当てを利用する方法の一実施形態を示す一般化されたフロー図である。
【図１４】フィルデータ（fill data）を転送する方法の一実施形態を示す一般化されたフロー図である。
【図１５】論理キャッシュの一部を再割り当てする方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【００１２】
以下の説明では、本明細書に提示される方法及びメカニズムの完全な理解を提供するために、多数の特定の詳細が示されている。しかしながら、当業者であれば、これらの具体的な詳細無しに各種実施形態を実施可能であると認識すべきである。場合によっては、本明細書に記載されている方法を不明瞭にするのを避けるために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡潔且つ明瞭にするために、図示されている要素は、必ずしも一定の縮尺で描かれていないことを理解されたい。例えば、いくつかの要素の寸法は、他の要素に対して誇張されていてもよい。
【００１３】
図１を参照すると、コンピューティングシステム１００の一実施形態を示すブロック図が示されている。システム１００は、プロセッサ１０５と、メモリ１３０と、を含むことができる。システム１００は、図を不明瞭にするのを避けるために図１に示されていない他のコンポーネント（例えば、ディスプレイ、入出力（Ｉ／Ｏ）インタフェース、ネットワークインタフェース）を含むことができる。実施形態に応じて、システム１００は、モバイルデバイス（例えば、スマートフォン、タブレット）、コンピュータ、テレビ、エンタテイメントデバイス、サーバ等を含む様々なタイプのコンピューティングシステムの何れかであってもよい。プロセッサ１０５は、命令を実行し、計算動作を実行するための任意のタイプのプロセッサ（例えば、グラフィックス処理ユニット（ＧＰＵ）、中央処理ユニット（ＣＰＵ）、高速処理ユニット（ＡＰＵ））を表す。
【００１４】
一実施形態において、プロセッサ１０５は、図１に示すように４つのコア１１０Ａ〜１１０Ｄ及びキャッシュ１１５Ａ〜１１５Ｄを有するマルチコアプロセッサであってもよい。他の実施形態において、プロセッサ１０５は、他の数のコアを含むことができる。各種実施形態において、各キャッシュ１１５Ａ〜１１５Ｄは、以下に詳細に説明するように、複数の論理キャッシュに分割された単一の物理キャッシュであってもよい。各コア１１０Ａ〜１１０Ｄは、命令及び／又はデータを記憶するレベル１（Ｌ１）キャッシュ（図示省略）を含むことができる。また、各コア１１０Ａ〜１１０Ｄは、対応する物理キャッシュ１１５Ａ〜１１５Ｄを包み、及び／又は、それに接続されてもよい。キャッシュ１１５Ａ〜１１５Ｄの各々は、キャッシュされたデータ及び命令を記憶するために使用されるメモリ回路を含むことができる。例えば、キャッシュ１１５Ａ〜１１５Ｄは、１つ以上のスタティックランダムアクセスメモリ（ＳＲＡＭ）、埋め込みダイナミックランダムアクセスメモリ（ｅＤＲＡＭ）、ＤＲＡＭ、ダブルデータレート同期型ＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）及び／又は他のタイプのメモリ回路を含むことができる。
【００１５】
一実施形態において、各キャッシュ１１５Ａ〜１１５Ｄは、キャッシュ部のサイズを変更することの可能なプロセッサ１０５を用いて、共用レベル３（Ｌ３）キャッシュの構成可能なスライス（又は部分）と論理的に組み合わされた構成可能なレベル２（Ｌ２）キャッシュを含むことができる。プロセッサ１０５は、特定のキャッシュ１１５Ａ〜１１５ＤのＬ２部分のサイズを所定量だけ減らす場合、特定のキャッシュ１１５Ａ〜１１５ＤのＬ３部分のサイズを当該所定量だけ増加させることができる。又は、プロセッサ１０５は、特定のキャッシュ１１５Ａ〜１１５ＤのＬ２部分のサイズを所定量だけ増加させる場合、特定のキャッシュ１１５Ａ〜１１５ＤのＬ３部分のサイズを当該所定量だけ減らすことができる。言い換えれば、各キャッシュ１１５Ａ〜１１５Ｄは、Ｌ２キャッシュとＬ３スライスとの間で分割される固定記憶容量を有する。したがって、所定のキャッシュ１１５Ａ〜１１５ＤのＬ２キャッシュのサイズに対する如何なる変更は、所定のキャッシュ１１５Ａ〜１１５ＤのＬ３スライスのサイズに対して逆の変化を引き起こす。
【００１６】
Ｌ２及びＬ３キャッシュのサイズを動的に変更する例が図１に関連して示され、説明されているが、これは非限定的な例を意味しており、プロセッサは、キャッシュ階層の２つ以上の隣接レベルのサイズを動的に変更可能であることを理解されたい。同様に、本開示を通じて、Ｌ２及びＬ３キャッシュ部分のサイズを動的に変更する例が説明される場合、これらの技術は、キャッシュ階層の他のレベルで利用可能であることを理解されたい。いくつかの実施形態では、本明細書において記載されている技術を使用して、３レベル以上のキャッシュ階層のサイズを動的に調整することができる。
【００１７】
一実施形態において、プロセッサ１０５は、各キャッシュ１１５Ａ〜１１５ＤのＬ２及びＬ３部分のサイズを動的に変更することができる。したがって、本実施形態において、Ｌ２及びＬ３キャッシュの記憶容量を実行時に変更することができる。一実施形態において、Ｌ２及びＬ３キャッシュの構成を、ソフトウェア（例えば、オペレーティングシステム、ハイパーバイザ、アプリケーション）によって変更することができる。別の実施形態では、ハードウェアコントローラ（例えば、コントロールユニット１２０）は、システム性能メトリック（例えば、Ｌ２及びＬ３キャッシュのヒット率）を監視し、Ｌ２及びＬ３の割り当てサイズを動的に変更して、いくつかの目的を最適化する（例えば、パフォーマンスを最大にする）ことができる。さらに別の実施形態では、Ｌ２及びＬ３キャッシュの構成を、ソフトウェア及びハードウェアの組み合せによって設定することができる。
【００１８】
各種実施形態において、プロセッサ１０５は、１つ以上の条件を検出したことに応じて、各キャッシュ１１５Ａ〜１１５ＤのＬ２及びＬ３部分のサイズを動的に変更することができる。１つ以上の条件は、Ｌ２及びＬ３キャッシュに関連して監視されたパラメータ、及び／又は、プロセッサ１０５によって実行されるアプリケーションの変更に依存し得る。プロセッサ１０５は、Ｌ２及びＬ３キャッシュのヒット率、異なるコアの異なるＬ２キャッシュ間のキャッシュラインのマイグレーション率、及び／又は、Ｌ２及びＬ３キャッシュに関連する他のパラメータを監視するように構成されてもよい。プロセッサ１０５は、これらのパラメータを１つ以上の閾値と比較して、キャッシュ１１５Ａ〜１１５ＤのＬ２及びＬ３部分間で記憶容量を動的に再割り当てするか否かを決定することができる。
【００１９】
別の実施形態では、プロセッサ１０５は、実行されているアプリケーションを監視し、実行されているアプリケーション毎に、Ｌ２及びＬ３キャッシュサイズの最適な割り当てを決定することができる。いくつかの場合には、プロセッサ１０５は、キャッシュサイズをどのように配分することによってアプリケーションがより効率的に動作することができるかを決定するために、アプリケーションに関連する動作履歴データを維持することができる。他の場合には、各アプリケーションは、アプリケーションの好適又は最適なキャッシュサイズを示す所定の設定を有することができる。例えば、第１アプリケーションは、第１アプリケーションが、比較的小さなＬ２キャッシュ及び比較的大きなＬ３キャッシュから利益を得ることを示す設定を含むことができる。したがって、プロセッサ１０５は、第１アプリケーションを実行する場合、各コアのＬ２キャッシュのサイズを減らし、Ｌ３スライスのサイズを増加させることができる。プロセッサは、その後の時点で、比較的大きなＬ２キャッシュ及び比較的小さなＬ３キャッシュから利益を得ることを示す設定を含む第２アプリケーションを実行することができる。したがって、プロセッサは、第２アプリケーションを実行することに応じて、各コアのＬ２キャッシュを増加させ、Ｌ３スライスのサイズを減らすことができる。
【００２０】
別の実施形態では、キャッシュ１１５Ａ〜１１５ＤのＬ２及びＬ３キャッシュのサイズは、プロセッサ１０５の製造又は製造プロセスの一部として静的に調整されてもよい。本実施形態において、Ｌ２及びＬ３キャッシュ構成は、製造時に設定されてもよい。これにより、同じシリコン設計を様々な異なる構成として展開することが可能になる。本実施形態において、１つのシステムオンチップ（ＳｏＣ）を複数の在庫保管ユニット（ＳＫＵ）と共に利用することができる。例えば、構成ヒューズを用いて、キャッシュ１１５Ａ〜１１５ＤのＬ２及びＬ３キャッシュの所望の構成を設定することができる。あるいは、キャッシュ１１５Ａ〜１１５ＤのＬ２及びＬ３キャッシュのサイズは、システムの起動中にキャッシュサイズを設定するブートアップ中にＢＩＯＳが読み取る読出し専用メモリ（ＲＯＭ）の構成ビットに記憶されてもよい。
【００２１】
一実施形態において、コントロールユニット１２０は、各キャッシュ１１５Ａ〜１１５Ｄが可変サイズのＬ２キャッシュにどれだけ割り当てられているか、及び、各キャッシュ１１５Ａ〜１１５Ｄが可変サイズのＬ３スライスにどれだけ割り当てられているかを決定するように構成されてもよい。コントロールユニット１２０及びメモリコントローラ１２５は、同じバスを介してキャッシュ１１５Ａ〜１１５Ｄに接続されているように示されているが、これは単に例示を容易にするためのものであり、コントロールユニット１２０及びメモリコントローラ１２５をキャッシュ１１５Ａ〜１１５Ｄに接続するために異なる物理コネクションが利用可能であることを理解されたい。
【００２２】
メモリ１３０は、コンピューティングシステム１００の「メインメモリ」を形成するメモリ回路を備える。メモリ１３０は、プロセッサ１０５のコア１１０Ａ〜１１０Ｄによって使用される命令及びデータを記憶するために用いられてもよい。メモリ１３０は、任意の数、容量及びタイプのメモリデバイスを表す。様々なタイプのメモリ１３０（ランダムアクセスメモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、高速ＣＭＯＳ、高密度ＤＲＡＭ、ｅＤＲＡＭ、３Ｄスタックメモリ（例えば、スタックＤＲＡＭ）、インターポーザベースの集積メモリ、マルチチップモジュール（ＭＣＭ）、マザーボード上のオフチップＤＲＡＭ、不揮発性ＲＡＭ（ＮＶＲＡＭ）、光磁気記憶媒体、読出し専用メモリ（ＲＯＭ）、同期型ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、相変化メモリ、スピン移行トルク磁気ＲＡＭ（spin-transfer torque magnetic RAM）、メモリスタ、拡張データ出力（ＥＤＯ）ＲＡＭ、ラムバスＲＡＭ、ラムバスＤＲＡＭ、消去可能プログラマブルメモリ（ＥＥＰＲＯＭ）、ソリッドステートメモリ、ハードディスクドライブ、光記憶媒体等を含む）をシステム１００に利用することができる。
【００２３】
図２を参照すると、キャッシュ２００の一実施形態のブロック図が示されている。一実施形態において、（図１の）各キャッシュ１１５Ａ〜１１５Ｄは、キャッシュ２００のコンポーネントを含むことができる。他の実施形態において、論理キャッシュの他のタイプ及び／又は構造を利用することができる。図２に示すように、キャッシュ２００は、関連するキャッシュコントローラ２１５及びキャッシュメモリアレイ２１０を有する。一実施形態において、キャッシュメモリアレイ２１０は、セットアソシエティブキャッシュとして構成されてもよい。キャッシュメモリアレイ２１０は、「Ｍ」個のセットを含むことができ、「Ｍ」は実施形態毎に異なる。各セットは、「Ｎ」個のウェイを含むことができ、「Ｎ」は実施形態毎に異なる。ここで、「Ｍ」及び「Ｎ」は正の整数である。
【００２４】
一実施形態において、各セットの「Ｘ」個のウェイをキャッシュ２００のＬ２部分に割り当て、各セットの「Ｎ−Ｘ」個のウェイをキャッシュ２００のＬ３部分に割り当てることができる。したがって、Ｌ２部分のルックアップが実行される場合、キャッシュコントローラ２１５は、ターゲットアドレスに対して対応するセットの「Ｘ」個のウェイのみルックインしてもよい。ルックアップがミスである場合、Ｌ３キャッシュの「Ｎ−Ｘ」個のウェイのルックアップが実行されてもよい。所定のコアに対するＬ３キャッシュのルックアップは、アドレスインターリーブ方式、及び、メモリ要求によってターゲットとされるアドレスに応じて、同じ論理キャッシュ又は異なる論理キャッシュの何れかに対して実行されてもよい。
【００２５】
キャッシュコントローラ２１５は、キャッシュ２００の動作を制御するための様々な機能を実行することができる。例えば、キャッシュコントローラ２１５は、キャッシュラインを記憶、無効化及び／又は追い出し、キャッシュラインのルックアップを実行し、コヒーレンシ動作を処理し、キャッシュラインに対するキャッシュ２００からの要求に応じることができる。キャッシュコントローラ２１５は、キャッシュ２００のＬ２及びＬ３部分間の容量を再割り当てするように構成されてもよい。例えば、一実施形態において、キャッシュコントローラ２１５は、キャッシュ２００がＬ２及びＬ３部分にどのように分割されるかを示す更新情報を受信するコントロールユニット（例えば、図１のコントロールユニット１２０）に接続されてもよい。キャッシュコントローラ２１５は、コントロールユニットから更新情報を受信したことに応じて、キャッシュ２００のＬ２及びＬ３部分のサイズを動的に再調整するように構成されてもよい。
【００２６】
図３を参照すると、コントロールユニット３００の一実施形態が示されている。一実施形態において、図１のコントロールユニット１２０は、コントロールユニット３００のコンポーネントを含むことができる。コントロールユニット３００は、少なくとも再マッピングユニット３０５及びテーブル３１０を含むことができる。再マッピングユニット３０５は、論理キャッシュがＬ２及びＬ３部分間でサイズ変更された後に、論理キャッシュ（例えば、図２のキャッシュ２００）のデータを再マッピングするように構成されてもよい。ウェイ又は他の部分が論理キャッシュのＬ２からＬ３部分に、又は、論理キャッシュのＬ３からＬ２部分に再割り当てされると、ウェイに記憶されたデータをもはや正しい位置にマッピングすることができなくなる可能性がある。したがって、再マッピングユニット３０５は、Ｌ２及びＬ３構成が変更された後にデータを再マッピング及びマイグレーションするように構成されてもよい。あるいは、コントロールユニット３００は、データをマイグレーションする代わりに、Ｌ２及びＬ３構成が変更された後にデータを無効化してもよい。
【００２７】
コントロールユニット３００は、プロセッサ、アプリケーション及びキャッシュに関連する様々なパラメータを監視するように構成されてもよい。一実施形態において、コントロールユニット３００は、パラメータ値を１つ以上のテーブル３１０に記憶することができる。テーブル３１０は、ホストプロセッサの動作条件に関連するデータを記憶するために利用され得る任意の数及びタイプの構造を表す。例えば、一実施形態において、コントロールユニット３００は、ホストプロセッサによって実行されている複数のアプリケーションに対して好適なＬ２及びＬ３キャッシュサイズをテーブル３１０Ａに記憶することができる。あるいは、いくつかの実施形態では、コントロールユニット３００は、テーブル３１０Ａを利用する代わりに、実行されている現在のアプリケーションについての設定をソフトウェアから読み出し又は受信することができる。コントロールユニット３００は、この設定を利用して、Ｌ２及びＬ３キャッシュ間の容量の現在の割り付けを調整又は維持するかを決定することができる。
【００２８】
テーブル３１０Ａは、ホストプロセッサによって実行されている所定のアプリケーションの好適なＬ２及びＬ３キャッシュサイズを決定するために、コントロールユニット３００によって利用されるテーブルの例である。任意の数のアプリケーションに対する任意の数の設定をテーブル３１０Ａに記憶することができる。テーブル３１０Ａに示すように、第１アプリケーションは、１２８ＫＢの好適なＬ２キャッシュサイズと、コア毎の論理キャッシュのための８９６ＫＢの好適なＬ３スライスサイズと、を有することができ、第２アプリケーションは、３８４ＫＢの好適なＬ２キャッシュサイズと、コア毎の論理キャッシュのための６４０ＫＢの好適なＬ３スライスサイズと、を有することができ、第３アプリケーションは、２５６ＫＢの好適なＬ２キャッシュサイズと、コア毎の論理キャッシュのための７６８ＫＢの好適なＬ３スライスサイズと、を有することができ、以下同様である。ここでの説明のために、Ｌ２及びＬ３部分のコア毎の論理キャッシュサイズの合計が１ＭＢであると仮定してもよい。コア毎の論理キャッシュサイズの記憶容量は、実施形態に従って変更されてもよい。
【００２９】
テーブル３１０Ｂは、各コアの論理キャッシュ毎にＬ２及びＬ３キャッシュサイズをいつ調整するかを決定するために、コントロールユニット３００によって利用されるテーブルの別の例である。テーブル３１０Ｂは、１つ以上の閾値との比較に利用され得るＬ２及びＬ３キャッシュに関連するパラメータの現在の値を含むことができる。一実施形態において、ソフトウェア及び／又は他の制御ロジックは、テーブル３１０Ｂに記憶された閾値をプログラムするように構成されてもよい。別の実施形態では、テーブル３１０Ｂに記憶される閾値は、予め定められていてもよい。コントロールユニット３００は、Ｌ２及びＬ３キャッシュ部分のサイズを動的に変更するのをサポートするために、又は、サイズ変更後にデータを再配置するために利用され得る他のテーブル（例えば、再マッピングテーブル）を含み得ることに留意されたい。
【００３０】
図４を参照すると、プロセッサ４００の一実施形態が示されている。プロセッサ４００は、コア４０５Ａ〜４０５Ｄ及びキャッシュ４１０Ａ〜４１０Ｄを含むことができる。他の実施形態において、プロセッサ４０５は、他の数のコア及び対応するキャッシュを含むことができる。各キャッシュ４１０Ａ〜４１０Ｄは、Ｌ２キャッシュ及びＬ３スライスを含み、Ｌ２キャッシュ及びＬ３スライスのサイズは調整可能である。各キャッシュ４１０Ａ〜４１０Ｄの合計サイズは、Ｌ２部分のサイズの増加がＬ３部分のサイズの減少によって相殺されるように、固定されてもよい。所定のキャッシュ４１０Ａ〜４１０ＤのＬ２及びＬ３部分間のサイズミックスは、現在の動作条件及び／又はプロセッサ４００によって実行されている現在のアプリケーションに対してプロセッサ性能が最適化されるように調整されてもよい。
【００３１】
図４に示すキャッシュ４１０Ａ〜４１０Ｄのリソースの割り当ては、キャッシュ４１０Ａ〜４１０ＤのＬ２及びＬ３部分間でスペースをどのように割り当てることができるかという一例を示している。図４に示すように、キャッシュ４１０Ａの２つのウェイがＬ２キャッシュに割り当てられており、キャッシュ４１０Ａの４つのウェイがＬ３キャッシュに割り当てられている。ここでの説明のために、キャッシュ４１０Ａには６つのウェイが存在すると仮定することができ、Ｌ２キャッシュに割り当てられるキャッシュ４１０Ａの容量が２５６キロバイト（ＫＢ）であり、Ｌ３キャッシュに割り当てられるキャッシュ４１０Ａの容量が５１２ＫＢであると仮定することもできる。キャッシュ４１０Ａについて示されたＬ２及びＬ３部分の割り当ては、キャッシュ４１０Ｂ〜４１０Ｄに使用されてもよい。しかしながら、Ｌ２及びＬ３部分に対する容量の割り当てがキャッシュ４１０Ａ〜４１０Ｄの各々で同一である必要はないことを理解されたい。
【００３２】
Ｌ３キャッシュ４１５は、コア４０５Ａ〜４０５Ｄ間の共有キャッシュであってもよく、４つのＬ３スライスの全てが一緒に追加された場合、Ｌ３キャッシュ４１５に割り当てられた容量の合計は２メガバイト（ＭＢ）である。プロセッサ４００は、所定のコア４０５Ａ〜４０５Ｄに対する要求が、所定のコア４０５Ａ〜４０５Ｄに対応するキャッシュ４１０Ａ〜４１０Ｄとは異なるキャッシュ４１０Ａ〜４１０ＤのＬ３スライスにマッピングされるように、アドレスインターリーブを利用することができる。例えば、コア４０５Ａによって生成されたメモリ要求のアドレスは、キャッシュ４１０Ａ、キャッシュ４１０Ｂ、キャッシュ４１０Ｃ及びキャッシュ４１０ＤのＬ３部分にマッピングされてもよい。他のコアは、同様のアドレスインターリーブ方式を用いて、キャッシュ４１０Ａ〜４１０Ｄの全てにマッピングすることもできる。
【００３３】
キャッシュ４１０Ａ〜４１０Ｄが、Ｌ２キャッシュに割り当てられたウェイの第１部分と、Ｌ３キャッシュに割り当てられたウェイの第２部分と、を有し得ることが図４に示されているが、これは、キャッシュを分割するためのスキームの単なる一例であることを理解されたい。他の実施形態において、キャッシュ４１０Ａ〜４１０Ｄは、Ｌ２及びＬ３部分間で他の次元の部分（例えば、セット、バンク）に分割されてもよい。例えば、別の実施形態では、キャッシュ４１０Ａ〜４１０Ｄ毎に、第１の数のセットをＬ２キャッシュに割り当て、第２の数のセットをＬ３キャッシュに割り当てることができる。
【００３４】
図５を参照すると、プロセッサ５００の別の実施形態のブロック図が示されている。プロセッサ５００は、コア５０５Ａ〜５０５Ｄ及びキャッシュ５１０Ａ〜５１０Ｄを含むことができる。他の実施形態において、プロセッサ５０５は、他の数のコアを含むことができる。各キャッシュ５１０Ａ〜５１０ＤはＬ２部分及びＬ３部分を含み、Ｌ２部分及びＬ３部分のサイズは調整可能である。プロセッサ５００は、各キャッシュ５１０Ａ〜５１０ＤのＬ２及びＬ３部分を動的に調整するように構成されてもよい。
【００３５】
キャッシュ実装の一例が図５に示されている。キャッシュ５１０Ａ〜５１０Ｄ毎に、３つのウェイがＬ２キャッシュに割り当てられており、３つのウェイがＬ３スライスに割り当てられている。一実施形態において、プロセッサ５００は、Ｌ２キャッシュ及びＬ３キャッシュのサイズが調整された後のある時点でのプロセッサ４００を表してもよい。本実施形態において、Ｌ３スライスは、各キャッシュ５１０Ａ〜５１０Ｄの４つのウェイから各キャッシュ５１０Ａ〜５１０Ｄの３つのウェイに減らされている。プロセッサ５００は、１つ以上の条件を検出したことに応じて、Ｌ３キャッシュ５１５及びＬ２キャッシュのサイズを調整することができる。キャッシュサイズを調整するための条件の例は、図８〜１３に関連して以下にさらに詳述される。
【００３６】
図５に示す実施形態では、各ウェイは、キャッシュ５１０Ａ〜５１０Ｄ毎に１２８ＫＢのデータに対応すると仮定することができる。したがって、キャッシュ５１０Ａ〜５１０Ｄの各Ｌ２キャッシュは３８４ＫＢの容量を含み、キャッシュ５１０Ａ〜５１０Ｄの各Ｌ３スライスは３８４ＫＢの容量を含む。共用Ｌ３キャッシュ５１５の容量の合計は、本実施形態では１．５ＭＢである。他の実施形態では、キャッシュ５１０Ａ〜５１０Ｄ毎に異なる数のウェイ、及び／又は、ウェイ毎に他の容量を有することができる。
【００３７】
一実施形態において、コア５０５Ａは、そのＬ２キャッシュのキャッシュライン「Ｘ」のコピーをキャッシュすることができる。コア５０５Ｃは、キャッシュライン「Ｘ」のコピーを各Ｌ２キャッシュにキャッシュすることができる。しかしながら、ここでの説明のために、コア５０５Ｂは、キャッシュライン「Ｘ」のコピーをＬ２キャッシュに有しないと仮定することができる。キャッシュスライス５１０ＢのＬ２スライスのキャッシュミスの際に、コア５０５Ｂは、Ｌ３アドレスインターリーブがキャッシュライン「Ｘ」をコア５０５ＤのＬ３スライスにマッピングすると仮定して、要求をコア５０５Ｄに送信することができる。したがって、コア５０５ＤのＬ３スライスのキャッシュライン「Ｘ」を見つけるためにルックアップが実行され、コア５０５Ｂに提供される。
【００３８】
図６を参照すると、３つの異なる時点でのキャッシュ６００の一実施形態のブロック図が示されている。キャッシュ６００Ａは、図６の上部に示されており、Ｌ２キャッシュ６０５Ａと、Ｌ３スライス６１０Ａと、を含む。Ｌ３スライス６１０Ａは、他のコアに対応する他のキャッシュ（図示省略）のＬ３スライスを含むより大きなＬ３キャッシュの一部であってもよい。キャッシュ６００Ａは、動作条件の変更に応じて、Ｌ２キャッシュ６０５Ａ及びＬ３スライス６１０Ａのサイズを動的に調整するように構成されてもよい。キャッシュ６００Ａに示すように、Ｌ２キャッシュ６０５Ａはウェイ０〜ウェイ２を含み、Ｌ３スライス６１０Ａはウェイ３〜ウェイ７を含む。他の実施形態において、キャッシュ６００Ａは、他の数のウェイを含むことができる。キャッシュ６００Ａは、「Ｎ」個のセットを含むこともでき、「Ｎ」は、実施形態によって異なり得る正の整数である。キャッシュライン６２５は、キャッシュ６００Ａのセット０のウェイ３に記憶されており、キャッシュライン６３０は、キャッシュ６００Ａのセット１のウェイ３に記憶されており、キャッシュライン６３５は、キャッシュ６００ＡのセットＮのウェイ３に記憶されているものと示されている。キャッシュ６００Ａは、図を不明瞭にするのを避けるために図示されていない他のキャッシュラインを記憶可能であることに留意されたい。
【００３９】
ここでの説明のために、キャッシュ６００Ａの容量は、１つ以上の条件を検出することに応じて、ソフトウェアからコマンドを受信することに応じて、及び／又は、他のイベントに応じて、Ｌ２及びＬ３部分間で動的に再割り当てされると仮定することができる。図６の中央のキャッシュ６００Ｂは、Ｌ２及びＬ３部分のサイズが変更された後の時点でのキャッシュ６００Ａを表すことを意図している。キャッシュ６００Ｂに示すように、ウェイ３は、Ｌ３スライス６１０ＢからＬ２キャッシュ６０５Ｂに再割り当てされている。キャッシュライン６２５，６３０，６３５は、ウェイ３の同じ物理位置に留まることができるが、Ｌ３スライス６１０ＢではなくＬ２キャッシュ６０５Ｂに記憶されている。しかしながら、キャッシュライン６２５，６３０，６３５は、Ｌ２キャッシュ６０５Ｂのルックアップが実行された場合にキャッシュコントローラ（図示省略）がこれらのキャッシュラインを見つけるのを防ぐＬ２キャッシュ６０５Ｂのこれらの位置にマッピングしなくてもよい。
【００４０】
したがって、キャッシュコントローラは、Ｌ２キャッシュ６０５Ｂ及びＬ３スライス６１０Ｂの動的なサイズ変更に応じて、サイズ変更によって影響を受けたキャッシュラインを、それらのアドレスの適切なビットに基づいて、それらが実際にマッピングされる位置に再マッピング及びマイグレーションするように構成されてもよい。図６の下部のキャッシュ６００Ｃ（Ｌ２キャッシュ６０５Ｃ及びＬ３スライス６１０Ｃを含む）は、キャッシュライン６２５，６３０，６３５が、Ｌ２マッピングに対応するそれらのアドレスビットに基づいて適切な位置に再マッピングされた後の時点でのキャッシュ６００Ｂを表すことを意図している。ここでの説明のために、キャッシュライン６２５は、Ｌ２キャッシュ６０５Ｃのセット１のウェイ１に再マッピング及びマイグレーションされており、キャッシュライン６３０は、Ｌ２キャッシュ６０５ＣのセットＮ−１のウェイ０に再マッピング及びマイグレーションされており、キャッシュライン６３５は、Ｌ２キャッシュ６０５Ｃのセット０のウェイ０に再マッピング及びマイグレーションされている、と仮定することができる。あるいは、キャッシュライン６２５，６３０，６３５を再マッピング及びマイグレーションするのではなく、これらのキャッシュラインを無効化することができる。これらのキャッシュラインが将来再度要求された場合にはキャッシュミスが発生し、キャッシュラインは、アドレスビット及びＬ２マッピングに基づいて適切な位置でＬ２キャッシュに挿入される。
【００４１】
これらの再マッピングは、影響を受けたキャッシュラインのタグビット及びキャッシュマッピング方式に応じて変化する再マッピングスキームの一例を説明することを単に意図している。キャッシュ６００の構成は、キャッシュの可能な構成の１つを示すことを意図していることを理解されたい。他の実施形態においては、他の数のセット、ウェイ及び／又は他のキャッシュ次元を用いて、他の構造のキャッシュを実装することができる。
【００４２】
図７を参照すると、複数のキャッシュラインのアドレスビットを示す図が示されている。サンプルのキャッシュラインアドレス７００が図７の上部に示されており、サンプルのキャッシュライン７００は、実施形態に応じて任意の数のビットを含む。アドレス７００のビットの第１部分７１５は、Ｌ３キャッシュの所定のスライス（例えば、図６のＬ３スライス６１０Ａ）を選択するために使用され、アドレス７００のビットの第２部分７２０は、Ｌ２キャッシュ（例えば、図６のＬ２キャッシュ６０５Ａ）の所定のセットを選択するために使用され、アドレス７００のビットの第３部分７２５は、Ｌ３スライス（例えば、Ｌ３スライス６１０Ａ）の所定のセットを選択するためのＬ３タグビットとして使用され得る。Ｌ３スライスインデックスビット７１５が２ビットを含み、Ｌ２セットインデックスビット７２０及びＬ３セットインデックスビット７２５が３ビットを含むことが示されているが、これは一実施形態の単なる例であり、他の実施形態では他の数のＬ３スライスインデックスビットと、Ｌ２及びＬ３セットインデックスビットと、を有してもよい。各種実施形態において、Ｌ２インデックスビットと、Ｌ３スライスビットと、Ｌ３インデックスビットとは、互いに別のものであってもよい。あるいは、各種実施形態では、Ｌ２インデックスと、Ｌ３スライスと、Ｌ３インデックスと、のうち１つ以上のビットが重複してもよい。
【００４３】
キャッシュライン６２５，６３０，６３５のアドレスビットは、図７の下部に示されている。ここでの説明のために、キャッシュライン６２５，６３０，６３５のＬ３スライスインデックスビット「００」は、キャッシュ６００Ａに示すように、キャッシュライン６２５，６３０，６３５の各々をＬ３スライス６１０Ａにマッピングするために使用されると仮定することができる。ここでの説明のために、キャッシュライン６２５，６３０，６３５のＬ３セットインデックスビットは、キャッシュ６００Ａに示すように、キャッシュライン６２５，６３０，６３５の各々をＬ３スライス６１０Ａの正しいセットにマッピングするために使用されると仮定することもできる。したがって、キャッシュライン６２５のアドレスのＬ３セットインデックス部分は、キャッシュライン６２５をＬ３スライス６１０Ａのセット０にマッピングする「０００」であり、キャッシュライン６３０のアドレスのＬ３セットインデックス部分は、キャッシュライン６３０をＬ３スライス６１０Ａのセット１にマッピングする「００１」であり、キャッシュライン６３５のアドレスのＬ３セットインデックス部分は、キャッシュライン６３５をＬ３スライス６１０ＡのセットＮ−１にマッピングする「１１１」である。この特定の実施形態では、「Ｎ」が８に等しいと仮定することができる。そして、ウェイ３がＬ３スライス６１０ＡからＬ２キャッシュ６０５Ｂに再割り当てされると、キャッシュライン６２５，６３０，６３５のアドレスのＬ２セットインデックス部分を使用して、キャッシュライン６２５，６３０，６３５の各々を、キャッシュ６００Ｃで示すように、Ｌ２キャッシュ６０５Ｃの正しいセットに再マッピング及びマイグレーションすることができる。したがって、キャッシュライン６２５のアドレスのＬ２セットインデックス部分は、キャッシュライン６２５をＬ２キャッシュ６０５Ｃセット１にマッピングする「００１」であり、キャッシュライン６３０のアドレスのＬ２セットインデックス部分は、キャッシュライン６３０をＬ２キャッシュ６０５ＣのセットＮ−１にマッピングする「１１１」であり、キャッシュライン６３５のアドレスのＬ２セットインデックス部分は、キャッシュライン６３５をＬ２キャッシュ６０５Ｃのセット０にマッピングする「０００」である。
【００４４】
図７に示すキャッシュスライス及びセットマッピングを決定するために使用される特定のアドレスビットの例は、実施可能な形態の１つに過ぎないことを理解されたい。他の実施形態では、他のアドレスビットを使用して、対応するキャッシュのＬ２キャッシュ及びＬ３スライス内の位置へのキャッシュラインのマッピングを決定することができる。
【００４５】
図８を参照すると、論理キャッシュサイズを動的に調整する方法８００の一実施形態が示されている。説明のために、本実施形態におけるステップは順番に示されている。後述する方法の各種実施形態では、説明した１つ以上の要素が、並行して、図示された順序と異なる順序で実行されてもよく、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素を実行することもできる。本明細書で説明する各種システム又はプロセッサの何れかは、方法８００を実施するように構成されてもよい。
【００４６】
プロセッサは、第１論理キャッシュ及び第２論理キャッシュに関連する１つ以上のパラメータを監視することができる（ブロック８０５）。一実施形態において、単一のキャッシュを第１論理キャッシュ及び第２論理キャッシュに論理的に分割することができる。ここで、第１論理キャッシュはＬ２キャッシュを表し、第２論理キャッシュはＬ３キャッシュを表す。他の実施形態において、第１及び第２論理キャッシュは、プロセッサのキャッシュ階層の他のレベルを表すことができる。１つ以上のパラメータは、第１論理キャッシュ及び／又は第２論理キャッシュのキャッシュヒット率、第１論理キャッシュ及び／又は第２論理キャッシュのキャッシュミス率、異なる第１論理キャッシュ間及び／又は他のパラメータ間のキャッシュラインのマイグレーション率を含むことができる。
【００４７】
次に、プロセッサは、１つ以上のパラメータを１つ以上の閾値と比較することができる（ブロック８１０）。例えば、各種実施形態では、プロセッサは、第１論理キャッシュのキャッシュヒット率を第１閾値と比較し、第２論理キャッシュのキャッシュヒット率を第２閾値と比較し、第１論理キャッシュのヒット率と第２論理キャッシュのヒット率との差を第３閾値と比較し、マイグレーション率を第４閾値と比較し、及び／又は、他の比較を実行することができる。キャッシュヒット率又はキャッシュラインマイグレーション率が算出される時間は、実施形態に応じて変化し得る。いくつかの実施形態では、重要度の順に比較をランク付けしてもよく、その結果、所定の閾値における最高ランクの比較結果を超える場合には、他の全ての比較に優先する。別の実施形態では、１つの比較の結果が別の比較の結果を相殺するように、比較が等しく扱われてもよい。全般に、実施形態では、１つ以上の比較の１つ以上を個別に又は組み合わせて（例えば、第１及び第２の比較の各々が第１及び第２の所定の閾値を超える場合等）考慮する任意の機能を利用することができる。
【００４８】
次に、プロセッサは、第１及び第２論理キャッシュのサイズを調整すべきであると比較が示すかどうかを判別することができる（条件つきブロック８１５）。例えば、比較は、プロセッサ性能の改善を達成するために、第１論理キャッシュのサイズを減らし、第２論理キャッシュのサイズを増加させることを示すことができる。あるいは、比較は、プロセッサ性能の改善を達成するために、第１論理キャッシュのサイズを増加させ、第２論理キャッシュのサイズを減らすことを示してもよい。
【００４９】
第１及び第２論理キャッシュのサイズを調整すべきことを比較が示す場合（条件つきブロック８１５：「はい」）、プロセッサは、第１及び第２論理キャッシュのサイズを動的に調整することができる（ブロック８２０）。第１及び第２論理キャッシュのサイズを調整すべきことを比較が示さない場合（条件つきブロック８１５：「いいえ」）、プロセッサは、第１及び第２論理キャッシュの現在のサイズを維持することができる（ブロック８２５）。ブロック８２０，８２５の後、方法８００は終了してもよい。方法８００は、定期的な間隔で実行されてもよいことに留意されたい。以下の図９〜１２は、特定のパラメータが監視され、１つ以上の閾値と比較される実施形態の更なる詳細を提供する。
【００５０】
図９を参照すると、キャッシュサイズを動的に調整する方法９００の別の実施形態が示されている。説明のために、本実施形態におけるステップは、順番に示されている。後述する方法の各種実施形態では、説明した１つ以上の要素が、並行して、図示された順序と異なる順序で実行されてもよく、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素を実行することもできる。本明細書で説明する各種システム又はプロセッサの何れかは、方法９００を実施するように構成されてもよい。
【００５１】
プロセッサは、第１キャッシュのキャッシュヒット率を監視することができる（ブロック９０５）。あるいは、ブロック９０５において、プロセッサは、第１キャッシュのキャッシュミス率（１−キャッシュヒット率に等しい）を監視することができる。一実施形態において、プロセッサは、実施形態毎に変化する数のコアを有するマルチコアプロセッサであってもよい。各種実施形態において、単一のキャッシュは、第１（論理）キャッシュ及び第２（論理）キャッシュに論理的に分割される。一実施形態において、第１キャッシュはＬ２キャッシュであってもよく、第２キャッシュはＬ３キャッシュであってもよい。次に、プロセッサは、第１キャッシュのヒット率を閾値と比較してもよい（ブロック９１０）。一実施形態において、閾値はプログラム可能であってもよい。
【００５２】
第１キャッシュのヒット率が閾値より大きい場合（条件つきブロック９１５：「はい」）、プロセッサは、第１キャッシュのサイズを増加させ、第２キャッシュのサイズを減らすことができる（ブロック９２０）。第１キャッシュのヒット率が閾値より低い場合（条件つきブロック９１５：「いいえ」）、プロセッサは、第１キャッシュ及び第２キャッシュの現在のサイズを維持することができる（ブロック９２５）。ブロック９２０，９２５の後、方法９００は終了してもよい。一実施形態において、方法９００は、定期的な間隔で繰り返され、キャッシュサイズが第１キャッシュのヒット率に基づいて調整されるべきかどうかを決定することができる。方法９００は、１つ以上の他の方法（例えば、図１０〜１２の方法１０００，１１００，１２００）と並行してプロセッサによって実行されてもよいことに留意されたい。全般に、実施形態は、１つ以上の比較を個別に又は組み合わせて（例えば、第１及び第２の比較の各々が第１及び第２の所定の閾値を超える場合等）考慮する任意の機能を利用することができる。
【００５３】
図１０を参照すると、キャッシュサイズをいつ調整するかを決定する方法１０００の一実施形態が示されている。説明のために、本実施形態におけるステップは、順番に示されている。後述する方法の各種実施形態では、説明した１つ以上の要素、並行して、図示された順序とは異なる順序で実行されてもよく、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素を実行することもできる。本明細書で説明される各種システム又はプロセッサの何れかは、方法１０００を実施するように構成されてもよい。
【００５４】
プロセッサは、第１キャッシュ及び第２キャッシュのヒット率を監視することができる（ブロック１００５）。ここでの説明のために、第１（論理）キャッシュは、単一の物理キャッシュ内の第２（論理）キャッシュと接続されていると仮定することができる。一実施形態において、第１キャッシュはＬ２キャッシュであってもよく、第２キャッシュはＬ３キャッシュであってもよい。他の実施形態において、第１及び第２キャッシュは、マルチレベルキャッシュ階層の他のキャッシュレベルであってもよい。次に、プロセッサは、第１キャッシュのヒット率と第２キャッシュのヒット率との間の差を第１及び第２閾値と比較することができる（ブロック１０１０）。一実施形態において、第１及び第２閾値は、プログラム可能であってもよい。
【００５５】
第１キャッシュの（ＦＣ）ヒット率が、第１閾値による第２キャッシュの（ＳＣ）ヒット率よりも大きい場合（条件つきブロック１０１５：「はい」）、プロセッサは、第１キャッシュのサイズを増加させ、第２キャッシュのサイズを減らすことができる（ブロック１０２０）。第１キャッシュのヒット率が、第１閾値による第２キャッシュのヒット率よりも大きくない場合（条件つきブロック１０１５：「いいえ」）、プロセッサは、第２キャッシュのヒット率が、第２閾値による第１キャッシュのヒット率よりも大きいかどうかを決定することができる（条件つきブロック１０２５）。第２キャッシュのヒット率が、第２閾値による第１キャッシュのヒット率よりも大きい場合（条件つきブロック１０２５：「はい」）、プロセッサは、第２キャッシュのサイズを増加させ、第１キャッシュのサイズを減らすことができる（ブロック１０３０）。第２キャッシュのヒット率が、第２閾値による第１キャッシュのヒット率よりも大きくない場合（条件つきブロック１０２５：「いいえ」）、プロセッサは、第１キャッシュ及び第２キャッシュの現在のサイズを維持することができる（ブロック１０３５）。ブロック１０２０，１０３０，１０３５の後、方法１０００は終了してもよい。一実施形態において、方法１０００は、定期的に繰り返され、キャッシュサイズが第１及び第２キャッシュのヒット率の差に基づいて調整されるべきかどうかを決定してもよい。
【００５６】
図１１を参照すると、キャッシュサイズをいつ調整するかについて決定する方法１１００の別の実施形態が示されている。説明のために、本実施形態におけるステップは、順番に示されている。後述する方法の各種実施形態では、説明した１つ以上の要素は、並行して、図示された順序とは異なる順序で実行されてもよく、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素を実行することができる。本明細書で説明される各種システム又はプロセッサの何れかは、方法１１００を実施するように構成されてもよい。
【００５７】
プロセッサは、第１キャッシュ及び第２キャッシュのヒット率を監視することができる（ブロック１１０５）。ここでの説明のために、単一の物理キャッシュが第１及び第２キャッシュに論理的に分割されると仮定することができる。一実施形態において、第１キャッシュはＬ２キャッシュであってもよく、第２キャッシュはＬ３キャッシュであってもよい。他の実施形態において、第１及び第２キャッシュは、マルチレベルキャッシュ階層の他のキャッシュレベルであってもよい。次に、プロセッサは、第１キャッシュのヒット率を第１閾値と比較することができる（ブロック１１１０）。
【００５８】
第１キャッシュのヒット率が第１閾値よりも低い場合（条件つきブロック１１１５：「はい」）、プロセッサは、第２キャッシュのヒット率を第２閾値と比較することができる（ブロック１１２０）。一実施形態において、第１及び第２閾値は、プログラム可能であってもよい。第１キャッシュのヒット率が第１閾値よりも大きい場合（条件つきブロック１１１５：「いいえ」）、プロセッサは、第１及び第２キャッシュの現在のサイズを維持することができる（ブロック１１２５）。いくつかの実施形態では、プロセッサは、第１キャッシュのヒット率を複数の閾値と比較してもよく、第１閾値は比較的低い閾値である。プロセッサは、いくつかのシナリオでは、第１キャッシュのヒット率を比較的高い閾値と比較することができ、第１キャッシュのヒット率が比較的高い閾値を超えたことに応じて第１キャッシュのサイズを増加させ、第２キャッシュのサイズを減らすことができる。このような実施形態は、図９の方法９００に関して説明されている。
【００５９】
第２キャッシュのヒット率が第２閾値よりも低い場合（条件つきブロック１１３０：「はい」）、プロセッサは、第２キャッシュのサイズを増加させ、第１キャッシュのサイズを減らすことができる（ブロック１１３５）。第１及び第２キャッシュのヒット率の各々が対応する閾値未満である場合、第２キャッシュに含まれるよりも多くのデータにプロセッサがアクセスしていることを示しているので、プロセッサは、第２キャッシュのサイズを増加させ、第１キャッシュのサイズを減らすことによって、性能を高めることができる。第２キャッシュのヒット率が第２閾値よりも大きい場合（条件つきブロック１１３０：「いいえ」）、プロセッサは、第１及び第２キャッシュの現在のサイズを維持することができる（ブロック１１２５）。ブロック１１２５，１１３５の後、方法１１００は終了してもよい。
【００６０】
図１２を参照すると、キャッシュ階層のマイグレーション率を監視する方法１２００の一実施形態が示されている。説明のために、本実施形態におけるステップは、順番に示されている。後述する方法の各種実施形態では、説明した１つ以上の要素が、並行して、図示されたものとは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素を実行することもできる。本明細書で説明されている各種システム又はプロセッサの何れかは、方法１２００を実施するように構成されてもよい。
【００６１】
マルチレベルキャッシュ階層を有するマルチコアプロセッサは、マルチレベルキャッシュ階層の所定のレベルのキャッシュ間のマイグレーション率を監視することができる（ブロック１２０５）。一実施形態において、所定のレベルは、キャッシュ階層のＬ２レベルであってもよい。次に、プロセッサは、マイグレーション率を閾値と比較することができる（ブロック１２１０）。一実施形態において、閾値は、プログラム可能であってもよい。マイグレーション率が閾値よりも大きい場合（条件つきブロック１２１５：「はい」）、プロセッサは、所定のレベルのキャッシュのサイズを減らし、キャッシュ階層内で次に高いレベルのキャッシュのサイズを増加させることができる（ブロック１２２０）。一実施形態において、次に高いレベルは、キャッシュ階層のＬ３レベルであってもよい。マイグレーション率が閾値よりも低い場合（条件つきブロック１２１５：「いいえ」）、プロセッサは、所定のレベル及び次に高いレベルの現在のキャッシュサイズを維持することができる（ブロック１２２５）。ブロック１２２０，１２２５の後、方法１２００は終了してもよい。
【００６２】
図１３を参照すると、隣接するキャッシュレベル間で異なる容量の割り当てを利用する方法１３００の一実施形態が示されている。説明のために、本実施形態におけるステップは、順番に示されている。後述する方法の各種実施形態では、説明した１つ以上の要素が、並行して、図示されたものとは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素が実行されてもよい。本明細書に記載されている各種システム又はプロセッサの何れかは、方法１３００を実施するように構成されてもよい。
【００６３】
マルチレベルキャッシュ階層を有するプロセッサは、第１アプリケーションを実行することができる（ブロック１３０５）。マルチレベルキャッシュ階層は、第１論理キャッシュ（又は第１キャッシュ）及び第２論理キャッシュ（又は第２キャッシュ）の一部を含む物理キャッシュを含んでもよい。一実施形態において、第１キャッシュはＬ２キャッシュであってもよく、第２キャッシュはＬ３キャッシュであってもよい。プロセッサは、第１アプリケーションを実行している間に、物理キャッシュの第１キャッシュと第２キャッシュとの間で第１容量割り当てを利用することができる（ブロック１３１０）。一実施形態において、第１容量割り当ては、第１キャッシュに割り当てられる第１容量と、第２キャッシュに割り当てられる第２容量と、を含むことができ、第１アプリケーションの好適な割り当てであってもよい。第１容量及び第２容量の組み合わせ（又は合計）は、第３容量に等しくてもよく、第３容量は、所定の物理キャッシュに対して固定であってもよい。
【００６４】
次に、プロセッサは、第２アプリケーションを実行するための切り替えを検出することができる（ブロック１３１５）。プロセッサは、第２アプリケーションを実行するための切り替えを検出したことに応じて、第２アプリケーションを実行している間に、物理キャッシュの第１キャッシュと第２キャッシュとの間で第２容量割り当てを利用することができる（ブロック１３２０）。ここでの説明のために、第２容量割り当ては、第２アプリケーションの好適な割り当てであると仮定することができる。第２容量割り当ては、第１容量割り当てとは異なり、第１キャッシュに割り当てられる第４容量と、第２キャッシュに割り当てられる第５容量と、を含む。言い換えれば、第４容量は第１容量と異なり、第５容量は第２容量と異なる。また、第４容量及び第５容量の組み合わせは、第３容量に等しくてもよい。ブロック１３２０の後、方法１３００は終了してもよい。なお、場合によっては、プロセッサが異なるアプリケーションの実行を切り替える場合に、異なるアプリケーションは第１及び第２キャッシュに対して同一の好適な容量割り当てを有することがあることに留意されたい。したがって、プロセッサは、異なるアプリケーションが同一の好適な容量割り当てを共有する場合、異なるアプリケーションを実行する間に切り替えるときに容量割り当てを変更しなくてもよい。
【００６５】
図１４を参照すると、フィルデータを転送するための方法１４００の一実施形態が示されている。説明のために、本実施形態におけるステップは、順番に示されている。後述する方法の各種実施形態では、説明した１つ以上の要素が、並行して、図示された順序とは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素を実行することもできる。本明細書で説明されている各種システム又はプロセッサの何れかは、方法１４００を実施するように構成されてもよい。
【００６６】
プロセッサは、第１メモリアドレスをターゲットとする第１要求を第２キャッシュの第１部分からメモリに送信することができる（ブロック１４０５）。一実施形態において、プロセッサは、第２キャッシュの第１部分ではミスになっている第１要求に応じて、第１要求をメモリに送信することができる。各種実施形態において、第１キャッシュは論理Ｌ２キャッシュであってもよく、第２キャッシュは論理Ｌ３キャッシュであってもよい。他の実施形態において、第１及び第２キャッシュは、マルチレベルキャッシュ階層の他の論理レベルにあってもよい。
【００６７】
次に、キャッシュコントローラは、第１要求に対応する第１フィルデータをメモリから受信する前に、第１要求をメモリに送信した後に第２キャッシュの第１部分を第１キャッシュに再割り当てすることができる（ブロック１４１０）。次いで、キャッシュコントローラは、第１フィルデータをメモリから受信することができる（ブロック１４１５）。キャッシュコントローラは、第１メモリアドレスが第２キャッシュの第２部分に再マッピングされたと判別することができる（ブロック１４２０）。ここでの説明のために、第２キャッシュの第１部分を第１キャッシュに再割り当てすることによって、第１メモリアドレスが第２キャッシュの第２部分に再マッピングされたと仮定することができる。キャッシュコントローラは、第１メモリアドレスが第２キャッシュの第２部分に再マッピングされたと判別したことに応じて、第１フィルデータを第２キャッシュの第２部分に転送することができる（ブロック１４２５）。別の実施形態では、キャッシュコントローラは、第１フィルデータを第２キャッシュの第２部分に転送するのではなく、第１フィルデータをドロップ（drop）してもよい。ブロック１４２５の後、方法１４００は終了してもよい。
【００６８】
図１５を参照すると、物理キャッシュの一部を再割り当てする方法１５００の一実施形態が示されている。説明のために、本実施形態におけるステップは、順番に示されている。後述する方法の各種実施形態では、説明した１つ以上の要素が、並行して、図示される順序とは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素が実行されてもよい。本明細書で説明されている各種システム又はプロセッサの何れかは、方法１５００を実施するように構成されてもよい。
【００６９】
プロセッサは、所定の時点で、物理キャッシュの第１部分を第１論理キャッシュの一部として利用することができる（ブロック１５０５）。一実施形態において、物理キャッシュは、第１論理キャッシュ及び第２論理キャッシュを含み、第１論理キャッシュはＬ２キャッシュであってもよく、第２論理キャッシュはＬ３キャッシュ（又はＬ３キャッシュのスライス）であってもよい。実施形態に応じて、第１部分は、物理キャッシュの第１ウェイ、第１セット、第１バンク又は別の部分であってもよい。プロセッサは、イベント又は１つ以上の条件の検出に応じて、物理キャッシュの第１部分を第２論理キャッシュに動的に再割り当てすることができる（ブロック１５１０）。実施形態に応じて、イベントは、第１アプリケーションから第２アプリケーションへ切り替えること、キャッシュヒット率が閾値を上回るか下回ったことを検出したこと、キャッシュヒット率の差が閾値を上回ると検出したこと、及び／又は、１つ以上の他の条件であってもよい。
【００７０】
次に、プロセッサは、物理キャッシュの第１部分を第２論理キャッシュの一部として利用することができる（ブロック１５１５）。例えば、プロセッサは、ブロック１５１５において、第２論理キャッシュによって受信されたキャッシュラインを物理キャッシュの第１部分に記憶することができる。ブロック１５１５の後、方法１５００は終了してもよい。プロセッサは、プロセッサの長い動作期間に亘って何回も第１及び第２論理キャッシュ間の容量を動的に再割り当てすることができ、物理キャッシュの第１部分が第１及び第２論理キャッシュ間を複数回行き来することができるということに留意されたい。
【００７１】
各種実施形態において、ソフトウェアアプリケーションのプログラム命令を用いて、上述した方法及び／又はメカニズムを実装することができる。プログラム命令は、ハイレベルプログラミング言語（例えばＣ言語）におけるハードウェアの挙動を記述することができる。あるいは、Ｖｅｒｉｌｏｇ等のハードウェア設計言語（ＨＤＬ）を使用することができる。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶されてもよい。数多くのタイプの記憶媒体が利用可能である。記憶媒体は、プログラムの実行のためにプログラム命令及び付随するデータをコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能であってもよい。コンピューティングシステムは、少なくとも、１つ以上のメモリと、プログラム命令を実行するように構成された１つ以上のプロセッサと、を含むことができる。
【００７２】
上記の実施形態は実装の非限定的な例に過ぎないことを強調しておく。上記の開示が完全に理解されれば、当業者には数多くの変形及び修正が明らかになるであろう。以下の特許請求の範囲は、かかる変形及び修正の全てを包含するものと解釈されることを意図している。
【図１】
2019502996.tif 000003
【図２】
2019502996.tif 000004
【図３】
2019502996.tif 000005
【図４】
2019502996.tif 000006
【図５】
2019502996.tif 000007
【図６】
2019502996.tif 000008
【図７】
2019502996.tif 000009
【図８】
2019502996.tif 000010
【図９】
2019502996.tif 000011
【図１０】
2019502996.tif 000012
【図１１】
2019502996.tif 000013
【図１２】
2019502996.tif 000014
【図１３】
2019502996.tif 000015
【図１４】
2019502996.tif 000016
【図１５】
2019502996.tif 000017
【国際調査報告】
2019502996.tif 000018
2019502996.tif 000019