(57)【特許請求の範囲】
【請求項１】
複数のキャッシュラインを備える共有キャッシュメモリシステムのキャッシュコントローラであって、
複数のサービス品質(QoS)クラスのうちのQoSクラスを、前記複数のキャッシュラインの最小パーティションにマッピングするための、最小マッピングビットマスクと、
前記複数のQoSクラスのうちの前記QoSクラスを、前記複数のキャッシュラインの最大パーティションにマッピングするための、最大マッピングビットマスクと
を備える、キャッシュ割振り回路を備え、
前記キャッシュ割振り回路は、
前記複数のQoSクラスのうちの前記QoSクラスに対応するQoS識別子(QoSID)を備えるメモリアクセス要求を受信すること、
前記メモリアクセス要求が前記複数のキャッシュラインのうちのキャッシュラインに対応するか否かを決定すること、ならびに
前記メモリアクセス要求が前記複数のキャッシュラインのうちの前記キャッシュラインに対応しないという決定に応答して、
ターゲットパーティションとして、前記最小マッピングビットマスクによって前記QoSIDに対応する前記QoSクラスにマッピングされた前記最小パーティション、および、前記最大マッピングビットマスクによって前記QoSIDに対応する前記QoSクラスにマッピングされた前記最大パーティションのうちの1つを選択すること、および
キャッシュフィル動作のために、前記ターゲットパーティション内でキャッシュラインを割り振ること
を行うように構成される、キャッシュコントローラ。
【請求項２】
前記キャッシュ割振り回路が、
前記ターゲットパーティション内で前記複数のキャッシュラインのうちの1つまたは複数のキャッシュラインを、1つまたは複数のエビクション候補として識別すること、および
前記共有キャッシュメモリシステムから、前記1つまたは複数のエビクション候補のうちのエビクション候補をエビクトすること
によって、前記ターゲットパーティション内で前記キャッシュラインを割り振るように構成される、請求項1に記載のキャッシュコントローラ。
【請求項３】
前記キャッシュ割振り回路が、平均割振りターゲット値を与えるようにさらに構成され、
前記キャッシュ割振り回路が、前記QoSIDに対応する前記QoSクラスに割り振られたキャッシュラインの実際の割振りを前記平均割振りターゲット値に接近させるために、前記ターゲットパーティションとして、前記最小パーティションおよび前記最大パーティションのうちの1つを選択するように構成される、請求項1に記載のキャッシュコントローラ。
【請求項４】
前記キャッシュコントローラが、前記複数のQoSクラスの間の前記複数のキャッシュラインの割振りの指示を与えるためのキャッシュ使用量モニタをさらに備え、
前記キャッシュ割振り回路が、前記キャッシュ使用量モニタによって与えられた前記指示に基づいて、前記ターゲットパーティションとして、前記最小パーティションおよび前記最大パーティションのうちの1つを選択するように構成される、請求項3に記載のキャッシュコントローラ。
【請求項５】
前記キャッシュ割振り回路が、前記最小パーティションおよび前記最大パーティションのうちの1つを確率的に選択することによって、前記ターゲットパーティションとして、前記最小パーティションおよび前記最大パーティションのうちの1つを選択するように構成される、請求項1に記載のキャッシュコントローラ。
【請求項６】
確率関数プロバイダ回路をさらに備え、
前記キャッシュ割振り回路が、前記確率関数プロバイダ回路に基づいて、前記最小パーティションおよび前記最大パーティションのうちの1つを確率的に選択するように構成される、請求項5に記載のキャッシュコントローラ。
【請求項７】
前記最小マッピングビットマスクおよび前記最大マッピングビットマスクが、前記複数のQoSクラスのうちの前記QoSクラスを、前記QoSクラスの専用である前記複数のキャッシュラインの同じパーティションにマッピングする、請求項1に記載のキャッシュコントローラ。
【請求項８】
前記最小マッピングビットマスクが、前記複数のQoSクラスのうちの前記QoSクラスを、前記QoSクラスの専用である前記最小パーティションにマッピングし、
前記最大マッピングビットマスクが、前記複数のQoSクラスのうちの前記QoSクラスを、前記QoSクラスの専用ではない前記最大パーティションにマッピングする、請求項1に記載のキャッシュコントローラ。
【請求項９】
集積回路(IC)に組み込まれる、請求項1に記載のキャッシュコントローラ。
【請求項１０】
セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤからなるグループから選択されるデバイスに組み込まれる、請求項1に記載のキャッシュコントローラ。
【請求項１１】
共有キャッシュメモリシステムのキャッシュコントローラであって、
複数のサービス品質(QoS)クラスのうちのQoSクラスに対応するQoS識別子(QoSID)を備えるメモリアクセス要求を受信するための手段と、
前記メモリアクセス要求が、前記共有キャッシュメモリシステムの複数のキャッシュラインのうちのキャッシュラインに対応するか否かを決定するための手段と、
前記メモリアクセス要求が前記複数のキャッシュラインのうちの前記キャッシュラインに対応しないという決定に応答して、ターゲットパーティションとして、最小マッピングビットマスクによって前記QoSIDに対応する前記QoSクラスにマッピングされた最小パーティション、および、最大マッピングビットマスクによって前記QoSIDに対応する前記QoSクラスにマッピングされた最大パーティションのうちの1つを選択するための手段と、
前記メモリアクセス要求が前記複数のキャッシュラインのうちの前記キャッシュラインに対応しないという決定に応答して、キャッシュフィル動作のために、前記ターゲットパーティション内で前記複数のキャッシュラインのうちの前記キャッシュラインを割り振るための手段と
を備えるキャッシュコントローラ。
【請求項１２】
前記ターゲットパーティション内で前記キャッシュラインを割り振るための前記手段が、
前記ターゲットパーティション内で前記複数のキャッシュラインのうちの1つまたは複数のキャッシュラインを、1つまたは複数のエビクション候補として識別するための手段と、
前記共有キャッシュメモリシステムから、前記1つまたは複数のエビクション候補のうちのエビクション候補をエビクトするための手段と
を備える、請求項11に記載のキャッシュコントローラ。
【請求項１３】
前記キャッシュコントローラが、平均割振りターゲット値を与えるための手段をさらに備え、
前記ターゲットパーティションとして、前記最小パーティションおよび前記最大パーティションのうちの1つを選択するための前記手段が、前記QoSIDに対応する前記QoSクラスに割り振られたキャッシュラインの実際の割振りを前記平均割振りターゲット値に接近させるために、前記最小パーティションおよび前記最大パーティションのうちの1つを選択するための手段を備える、請求項11に記載のキャッシュコントローラ。
【請求項１４】
前記ターゲットパーティションとして、前記最小パーティションおよび前記最大パーティションのうちの1つを選択するための前記手段が、キャッシュ使用量モニタによって与えられた、前記複数のQoSクラスの間の前記複数のキャッシュラインの割振りの指示に基づいて、前記最小パーティションおよび前記最大パーティションのうちの1つを選択するための手段を備える、請求項13に記載のキャッシュコントローラ。
【請求項１５】
前記ターゲットパーティションとして、前記最小パーティションおよび前記最大パーティションのうちの1つを選択するための前記手段が、前記最小パーティションおよび前記最大パーティションのうちの1つを確率的に選択するための手段を備える、請求項11に記載のキャッシュコントローラ。
【請求項１６】
前記最小パーティションおよび前記最大パーティションのうちの1つを確率的に選択するための前記手段が、確率関数プロバイダ回路に基づく、請求項15に記載のキャッシュコントローラ。
【請求項１７】
前記最小マッピングビットマスクおよび前記最大マッピングビットマスクが、前記複数のQoSクラスのうちの前記QoSクラスを、前記QoSクラスの専用である前記複数のキャッシュラインの同じパーティションにマッピングする、請求項11に記載のキャッシュコントローラ。
【請求項１８】
前記最小マッピングビットマスクが、前記複数のQoSクラスのうちの前記QoSクラスを、前記QoSクラスの専用である前記最小パーティションにマッピングし、
前記最大マッピングビットマスクが、前記複数のQoSクラスのうちの前記QoSクラスを、前記QoSクラスの専用ではない前記最大パーティションにマッピングする、請求項11に記載のキャッシュコントローラ。
【請求項１９】
共有キャッシュメモリシステムのキャッシュラインを割り振るための方法であって、
キャッシュコントローラのキャッシュ割振り回路によって、複数のサービス品質(QoS)クラスのうちのQoSクラスに対応するQoS識別子(QoSID)を備えるメモリアクセス要求を受信するステップと、
前記メモリアクセス要求が、前記共有キャッシュメモリシステムの複数のキャッシュラインのうちのキャッシュラインに対応するか否かを決定するステップと、
前記メモリアクセス要求が前記複数のキャッシュラインのうちの前記キャッシュラインに対応しないという決定に応答して、
ターゲットパーティションとして、最小マッピングビットマスクによって前記QoSIDに対応する前記QoSクラスにマッピングされた最小パーティション、および、最大マッピングビットマスクによって前記QoSIDに対応する前記QoSクラスにマッピングされた最大パーティションのうちの1つを選択するステップと、
キャッシュフィル動作のために、前記ターゲットパーティション内で前記複数のキャッシュラインのうちの前記キャッシュラインを割り振るステップと
を含む方法。
【請求項２０】
前記ターゲットパーティション内で前記複数のキャッシュラインのうちの前記キャッシュラインを割り振るステップが、
前記ターゲットパーティション内で1つまたは複数のキャッシュラインを、1つまたは複数のエビクション候補として識別するステップと、
前記共有キャッシュメモリシステムから、前記1つまたは複数のエビクション候補のうちのエビクション候補をエビクトするステップと
を含む、請求項19に記載の方法。
【請求項２１】
前記方法が、平均割振りターゲット値を与えるステップをさらに含み、
前記ターゲットパーティションとして、前記最小パーティションおよび前記最大パーティションのうちの1つを選択するステップが、前記QoSIDに対応する前記QoSクラスに割り振られたキャッシュラインの実際の割振りを前記平均割振りターゲット値に接近させるために、前記最小パーティションおよび前記最大パーティションのうちの1つを選択するステップを含む、請求項19に記載の方法。
【請求項２２】
前記ターゲットパーティションとして、前記最小パーティションおよび前記最大パーティションのうちの1つを選択するステップが、キャッシュ使用量モニタによって与えられた、前記複数のQoSクラスの間の前記複数のキャッシュラインの割振りの指示に基づいて、前記最小パーティションおよび前記最大パーティションのうちの1つを選択するステップを含む、請求項21に記載の方法。
【請求項２３】
前記ターゲットパーティションとして、前記最小パーティションおよび前記最大パーティションのうちの1つを選択するステップが、前記最小パーティションおよび前記最大パーティションのうちの1つを確率的に選択するステップを含む、請求項19に記載の方法。
【請求項２４】
前記最小パーティションおよび前記最大パーティションのうちの1つを確率的に選択するステップが、確率関数プロバイダ回路に基づく、請求項23に記載の方法。
【請求項２５】
前記最小マッピングビットマスクおよび前記最大マッピングビットマスクが、前記複数のQoSクラスのうちの前記QoSクラスを、前記QoSクラスの専用である前記複数のキャッシュラインの同じパーティションにマッピングする、請求項19に記載の方法。
【請求項２６】
前記最小マッピングビットマスクが、前記複数のQoSクラスのうちの前記QoSクラスを、前記QoSクラスの専用である前記最小パーティションにマッピングし、
前記最大マッピングビットマスクが、前記複数のQoSクラスのうちの前記QoSクラスを、前記QoSクラスの専用ではない前記最大パーティションにマッピングする、請求項19に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権主張
本出願は、その内容全体が参照により本明細書に組み込まれる、2014年11月25日に出願された「PROVIDING FINE-GRAINED AND FLEXIBLE SHARED CACHE MEMORY ALLOCATION CONTROL, AND RELATED METHODS AND SYSTEMS」と題する米国仮特許出願第62/084,480号の米国特許法§119(e)に基づく優先権を主張するものである。
【０００２】
本出願はまた、その内容全体が参照により本明細書に組み込まれる、2015年9月22日に出願された「PROVIDING SHARED CACHE MEMORY ALLOCATION CONTROL IN SHARED CACHE MEMORY SYSTEMS」と題する米国特許出願第14/861,025号の優先権を主張する。
【０００３】
本開示の技術は、一般に共有キャッシュメモリシステムに関し、詳細には、共有キャッシュメモリの割振りを制御することに関する。
【背景技術】
【０００４】
ますます多くのコンピュータハードウェアユニット(たとえば、非限定的な例として、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、デジタル信号処理(DSP)ユニット、および/またはダイレクトメモリアクセス(DMA)エンジン)が、キャッシュ、メモリ、相互接続帯域幅、およびキャッシュ帯域幅など、メモリシステムリソースを共有するように構成されている。コンピュータハードウェアユニット間のリソース干渉および競合は、非限定的な例として、モバイルシステムオンチップ(SoC)上のリアルタイムデッドラインの欠落、または統合サーバ上のサービスレベルアグリーメント(SLA)の違反など、否定的な結果を生じ得る。加えて、いくつかのコンピュータハードウェアユニットに関連付けられた参照ストリームは、時間的局所性をほとんど有しておらず、チェックされないままであった場合、キャッシュ汚染、および全体的な性能に対する悪影響につながり得る。この点について、ユーザが共有リソースの使用量を制御できるようにすることが望ましくなり得る。
【０００５】
しかしながら、システムの大部分の他の性能が重要な構成要素(たとえば、CPU使用量、メモリ使用量、ネットワーク帯域幅、および/またはディスク帯域幅)とは異なり、従来の共有キャッシュメモリの割振りは、ほとんどがユーザの制御の範囲外のままである。結果として、そのような従来の共有キャッシュメモリシステムは、キャッシュ干渉の存在下での最悪状況の性能から保護するために、十分に利用されないままであり得る。その上、既存のキャッシュサービス品質(QoS)およびパーティショニング方式は、非限定的な例として、厳密な容量割振りおよび/またはスループット最大化など、複数の使用事例に対処するために必要な柔軟性を欠くことがある。
【発明の概要】
【課題を解決するための手段】
【０００６】
発明を実施するための形態で開示する態様は、共有キャッシュメモリシステムにおける共有キャッシュメモリ割振り制御を提供することを含む。この点について、一態様では、共有キャッシュメモリのキャッシュコントローラが提供される。キャッシュコントローラは、複数のサービス品質(QoS)クラスをサポートし、その各々は、QoS識別子(QoSID)に対応する。キャッシュコントローラは、キャッシュ割振り回路を提供し、キャッシュ割振り回路は、共有キャッシュメモリのキャッシュラインが、キャッシュコントローラによって受信されたメモリアクセス要求のQoSIDに基づいて、選択的に割り振られることを可能にする。キャッシュ割振り回路は、QoSクラスを共有キャッシュメモリのキャッシュラインの最小パーティションにマッピングする、最小マッピングビットマスクを備える。最小パーティションは、QoSクラスに割り振られ得る共有キャッシュメモリの最小部分を表す。同様に、キャッシュ割振り回路はまた、QoSクラスを共有キャッシュメモリのキャッシュラインの最大パーティションにマッピングする、最大マッピングビットマスクを備える。最大パーティションは、QoSクラスに割り振られ得る共有キャッシュメモリの最大部分を表す。メモリアクセス要求を受信すると、キャッシュ割振り回路は、メモリアクセス要求が複数のキャッシュラインのうちのキャッシュラインに対応するか否かを決定する。そうでない場合(すなわち、キャッシュミスが発生する場合)、キャッシュ割振り回路は、ターゲットパーティションとして、最小マッピングビットマスクによってQoSIDに対応するQoSクラスにマッピングされた最小パーティション、または、最大マッピングビットマスクによってQoSIDに対応するQoSクラスにマッピングされた最大パーティションのいずれかを選択する。次いで、キャッシュ割振り回路は、キャッシュフィル動作のために、ターゲットパーティション内でキャッシュラインを割り振る。このようにして、共有キャッシュメモリが複数のQoSクラスの間でパーティショニングされて、共有キャッシュメモリのキャッシュラインの割振りに対するきめの細かい柔軟な制御が可能になり得る。
【０００７】
別の態様では、共有キャッシュメモリシステムのキャッシュコントローラが提供される。共有キャッシュメモリシステムは、複数のキャッシュラインを備える。キャッシュコントローラは、キャッシュ割振り回路を備える。キャッシュ割振り回路は、複数のQoSクラスのうちのQoSクラスを、複数のキャッシュラインの最小パーティションにマッピングするための、最小マッピングビットマスクを備える。キャッシュ割振り回路は、複数のQoSクラスのうちのQoSクラスを、複数のキャッシュラインの最大パーティションにマッピングするための、最大マッピングビットマスクをさらに備える。キャッシュ割振り回路は、複数のQoSクラスのうちのQoSクラスに対応するQoS識別子(QoSID)を備える、メモリアクセス要求を受信するように構成される。キャッシュ割振り回路は、メモリアクセス要求が複数のキャッシュラインのうちのキャッシュラインに対応するか否かを決定するようにさらに構成される。キャッシュ割振り回路はまた、メモリアクセス要求が複数のキャッシュラインのうちのキャッシュラインに対応しないという決定に応答して、ターゲットパーティションとして、最小マッピングビットマスクによってQoSIDに対応するQoSクラスにマッピングされた最小パーティション、および、最大マッピングビットマスクによってQoSIDに対応するQoSクラスにマッピングされた最大パーティションのうちの1つを選択するようにも構成される。加えて、キャッシュ割振り回路は、キャッシュフィル動作のために、ターゲットパーティション内でキャッシュラインを割り振るように構成される。
【０００８】
別の態様では、共有キャッシュメモリシステムのキャッシュコントローラが提供される。キャッシュコントローラは、複数のQoSクラスのうちのQoSクラスに対応するQoSIDを備える、メモリアクセス要求を受信するための手段を備える。キャッシュコントローラは、メモリアクセス要求が、共有キャッシュメモリシステムの複数のキャッシュラインのうちのキャッシュラインに対応するか否かを決定するための手段をさらに備える。キャッシュコントローラはまた、メモリアクセス要求が複数のキャッシュラインのうちのキャッシュラインに対応しないという決定に応答して、ターゲットパーティションとして、最小マッピングビットマスクによってQoSIDに対応するQoSクラスにマッピングされた最小パーティション、および、最大マッピングビットマスクによってQoSIDに対応するQoSクラスにマッピングされた最大パーティションのうちの1つを選択するための手段を備える。加えて、キャッシュコントローラは、メモリアクセス要求が複数のキャッシュラインのうちのキャッシュラインに対応しないという決定に応答して、キャッシュフィル動作のために、ターゲットパーティション内で複数のキャッシュラインのうちのキャッシュラインを割り振るための手段を備える。
【０００９】
別の態様では、共有キャッシュメモリシステムのキャッシュラインを割り振るための方法が提供される。方法は、キャッシュコントローラのキャッシュ割振り回路によって、複数のQoSクラスのうちのQoSクラスに対応するQoSIDを備える、メモリアクセス要求を受信するステップを含む。方法は、メモリアクセス要求が、共有キャッシュメモリシステムの複数のキャッシュラインのうちのキャッシュラインに対応するか否かを決定するステップをさらに含む。方法はまた、メモリアクセス要求が複数のキャッシュラインのうちのキャッシュラインに対応しないという決定に応答して、ターゲットパーティションとして、最小マッピングビットマスクによってQoSIDに対応するQoSクラスにマッピングされた最小パーティション、および、最大マッピングビットマスクによってQoSIDに対応するQoSクラスにマッピングされた最大パーティションのうちの1つを選択するステップを含む。加えて、方法は、キャッシュフィル動作のために、ターゲットパーティション内で複数のキャッシュラインのうちのキャッシュラインを割り振るステップを含む。
【図面の簡単な説明】
【００１０】
【図１】共有キャッシュメモリ割振り制御を提供するためのキャッシュ割振り回路を備えるキャッシュコントローラを含む、例示的な共有キャッシュメモリシステムを示すブロック図である。
【図２Ａ】図1の共有キャッシュメモリシステムの割振りを実施するための、図1のキャッシュ割振り回路によって採用された、例示的な最小および最大マッピングビットマスクを示すブロック図である。
【図２Ｂ】図1の共有キャッシュメモリシステムの割振りを実施するための、図1のキャッシュ割振り回路によって採用された、例示的な最小および最大マッピングビットマスクを示すブロック図である。
【図２Ｃ】図1の共有キャッシュメモリシステムの割振りを実施するための、図1のキャッシュ割振り回路によって採用された、例示的な最小および最大マッピングビットマスクを示すブロック図である。
【図３Ａ】共有キャッシュメモリ割振り制御を提供するための、図1のキャッシュコントローラの例示的な動作を示すフローチャートである。
【図３Ｂ】共有キャッシュメモリ割振り制御を提供するための、図1のキャッシュコントローラの例示的な動作を示すフローチャートである。
【図３Ｃ】共有キャッシュメモリ割振り制御を提供するための、図1のキャッシュコントローラの例示的な動作を示すフローチャートである。
【図４】共有キャッシュメモリ割振り制御を提供するために、図1のキャッシュコントローラを含み得る、例示的なプロセッサベースシステムのブロック図である。
【発明を実施するための形態】
【００１１】
次に図面を参照しながら、本開示のいくつかの例示的態様について説明する。「例示的」という語は、本明細書において「一例、事例、または例示としての役割を果たすこと」を意味するために使用される。「例示的」として本明細書で説明するいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるべきではない。
【００１２】
この点について、図1は、共有キャッシュメモリシステム100の構造を示すために提供される。共有キャッシュメモリシステム100は、非限定的な例として、半導体ダイにおいて提供され得る。いくつかの態様では、共有キャッシュメモリシステム100は、メモリの階層(図示せず)において、特に、レベル1(L1)キャッシュ、レベル2(L2)キャッシュ、またはレベル3(L3)キャッシュであり得る。図1の例では、共有キャッシュメモリシステム100は、バンク102(0)〜102(X)に編成されたメモリアレイである。バンク102(0)〜102(X)の各々は、1つまたは複数のセット104(0)〜104(Y)を備え、セット104(0)〜104(Y)の各々は、キャッシュライン106(0)〜106(L)のサブセットからなる。セット104(0)〜104(Y)の各々におけるキャッシュライン106(0)〜106(L)の数Zは、共有キャッシュメモリシステム100の「結合性」と呼ばれ、セット104(0)〜104(Y)の各々内の0〜Zの特定の位置にあるキャッシュライン106(0)〜106(L)のグループは、対応する「ウェイ」108(0)〜108(Z)と呼ばれる。したがって、各ウェイ108(0)〜108(Z)は、セット104(0)〜104(Y)のすべてにわたるキャッシュライン106(0)〜106(L)の垂直の「スライス」として視覚化され得る。
【００１３】
本明細書で説明する態様は、要素の任意の特定の構成には限定されず、開示する技法は、共有キャッシュメモリシステム100の様々な構造およびレイアウトに容易に拡張され得ることを理解されたい。図1に示す構成は、説明のためのものにすぎない。いくつかの態様では、共有キャッシュメモリシステム100は、本明細書で示すよりも、より少ないかまたは多いバンク102(0)〜102(X)、より少ないかまたは多いセット104(0)〜104(Y)、より少ないかまたは多いキャッシュライン106(0)〜106(L)、および/あるいはより少ないかまたは多いウェイ108(0)〜108(Z)を備え得る。
【００１４】
引き続き図1を参照すると、キャッシュコントローラ110は、各バンク102(0)〜102(X)に接続可能に結合されている。従来の動作では、既存のソフトウェアアプリケーションなど、要求側エージェント(図示せず)は、メモリアドレス(図示せず)に記憶された命令または値(図示せず)を要求し得る。要求された命令または値が共有キャッシュメモリシステム100内で見つからない場合、キャッシュミスが生じる。それに応じて、キャッシュコントローラ110は、キャッシュフィル動作を開始し得、キャッシュフィル動作によって、キャッシュライン106(0)〜106(L)のうちの1つまたは複数のサイズに等しく、要求された命令または値を含む、システムメモリ(図示せず)の一部分が取り出され、キャッシュライン106(0)〜106(L)のうちの1つにおいて記憶される。
【００１５】
共有キャッシュメモリシステム100は、共有メモリ使用のためのQoSサポートを実施するために、複数のQoSクラス112(0)〜112(N)のためのサポートを提供する。QoSクラス112(0)〜112(N)の各々は、一意のQoSID114(0)〜114(N)に関連付けられる。複数の要求側エージェントの間でキャッシュライン106(0)〜106(L)をより効率的に割り振るために、キャッシュコントローラ110は、いくつかの態様では、キャッシュ割振り回路116を提供し得る。キャッシュ割振り回路116は、QoSID114(0)〜114(N)の各々を特定の要求側エージェントに関連付けること、およびそのQoSID114(0)〜114(N)のためのキャッシュライン106(0)〜106(L)の割振りを指定することによって、共有キャッシュメモリシステム100のキャッシュリソースのユーザ制御を可能にし得る。
【００１６】
従来のキャッシュコントローラは、キャッシュライン106(0)〜106(L)の割振りを可能にし得るが、従来のキャッシュコントローラは、異なる使用事例に対処するために必要とされる柔軟性を提供しないことがある。たとえば、クラウドコンピューティング環境の使用事例では、キャッシュライン106(0)〜106(L)の厳密な割振りを提供し、複数の実行中の仮想マシン(VM)が、キャッシュライン106(0)〜106(L)のサブセットへの排他的アクセスを有するようにすることが望ましくなり得る。他の使用事例では、より柔軟な割振りが望ましくなり得る。柔軟な割振り機構を使用して、キャッシュ使用量は、共有キャッシュメモリシステム100の完全利用下で指定された平均値に接近する。低い競合下で、またはキャッシュ消費側が単独で実行中であるとき、使用量は、示された最大割振りに接近するべきである。キャッシュ消費側が実行中ではないとき、使用量は、示された最小値に接近するべきである。最後に、キャッシュ消費側が、平均割振りを満たすために十分なキャッシュライン106(0)〜106(L)を必要としないとき、余分の容量は、別のクラスによって使用されるべきである。
【００１７】
この点について、キャッシュ割振り回路116は、QoSクラス112(0)〜112(N)のうちの1つまたは複数の各々のための、最小マッピングビットマスク(図示せず)と最大マッピングビットマスク(図示せず)とを与える。各最小マッピングビットマスクは、対応するQoSクラス112(0)〜112(N)を、複数のキャッシュライン106(0)〜106(L)の最小パーティション(すなわち、そのQoSクラス112(0)〜112(N)に割り振られ得る複数のキャッシュライン106(0)〜106(L)の最小部分)にマッピングするために使用される。同様に、各最大マッピングビットマスクは、それの対応するQoSクラス112(0)〜112(N)を、そのQoSクラス112(0)〜112(N)に割り振られ得る複数のキャッシュライン106(0)〜106(L)の最大部分を表す、複数のキャッシュライン106(0)〜106(L)の最大パーティションにマッピングする。いくつかの態様では、最小マッピングビットマスクは、最小マッピングテーブル(図示せず)内に記憶され得るが、最大マッピングビットマスクは、最大マッピングテーブル(図示せず)内に記憶され得る。
【００１８】
数Nビットからなる各最小マッピングビットマスクおよび最大マッピングビットマスクについて、各ビットは、共有キャッシュメモリシステム100の複数のキャッシュライン106(0)〜106(L)の独立の1/Nパーティションに対応する。したがって、最小マッピングビットマスクおよび最大マッピングビットマスクの各々は、キャッシュパーティショニングの論理ビューを表し、特定の態様は、最小マッピングビットマスクおよび最大マッピングビットマスクが実現可能なパーティショニングにどのように変換されるかを決定する。以下でより詳細に説明するように、いくつかの態様はまた、平均割振りターゲット値(図示せず)がQoSクラス112(0)〜112(N)の各々について指定されることを提供し得る。そのような態様では、平均割振りターゲット値は、共有キャッシュメモリシステム100のキャッシュライン106(0)〜106(L)の割合として指定され得、各QoSクラス112(0)〜112(N)に関連付けられた最小マッピングビットマスクおよび最大マッピングビットマスクが異なるとき、ターゲット割振りとして使用され得る。
【００１９】
キャッシュ割振り回路116は、要求側エージェント(図示せず)からメモリアクセス要求118を受信するようにさらに構成される。メモリアクセス要求118は、QoSクラス112(0)〜112(N)のうちの1つに対応するQoSID120を含む。図1の例では、QoSID120は、QoSクラス112(0)のQoSID114(0)に対応する。キャッシュ割振り回路116は、メモリアクセス要求118が共有キャッシュメモリシステム100の複数のキャッシュライン106(0)〜106(L)のうちの1つに対応するか否かを決定する。メモリアクセス要求118が、複数のキャッシュライン106(0)〜106(L)のうちのいずれにも対応しない場合(すなわち、キャッシュミス)、キャッシュ割振り回路116は、最小マッピングビットマスクによってQoSID120に対応するQoSクラス112(0)にマッピングされた最小パーティション、または、最大マッピングビットマスクによってQoSID120に対応するQoSクラス112(0)にマッピングされた最大パーティションのいずれかを選択する。以下でより詳細に説明するように、いくつかの態様では、キャッシュ割振り回路116は、キャッシュ使用量が平均割振りターゲット値に接近することを保証するために、必要に応じて、最小マッピングビットマスクまたは最大マッピングビットマスクを決定論的に選択し得、あるいは、最小マッピングビットマスクまたは最大マッピングビットマスクを確率的に選択し得る。
【００２０】
次いで、キャッシュ割振り回路116は、キャッシュフィル動作のために、ターゲットパーティション内でキャッシュライン106(0)〜106(L)のうちの1つを割り振る。いくつかの態様では、キャッシュ割振り回路116は、最初に、ターゲットパーティション内で1つまたは複数のキャッシュライン106(0)〜106(L)を、1つまたは複数のエビクション候補(本明細書では「エビクション候補106(0)〜106(L)」と呼ばれる)として識別することによって、キャッシュライン106(0)〜106(L)のうちの1つを割り振り得る。次いで、キャッシュ割振り回路116は、共有キャッシュメモリシステム100から、1つまたは複数のエビクション候補106(0)〜106(L)のうちのエビクション候補106(0)〜106(L)をエビクトし得る。
【００２１】
QoSID114(0)〜114(N)の間でキャッシュライン106(0)〜106(L)を割り振ること(したがって、事実上、対応するQoSクラス112(0)〜112(N)の間でキャッシュライン106(0)〜106(L)を割り振ること)によって、共有キャッシュメモリシステム100は、いくつかの使用事例のシナリオにおいてキャッシュ性能を改善し得る。たとえば、いくつかの態様では、共有キャッシュメモリシステム100は、要求側エージェントによって実行される、待ち時間が重要な動作が、リアルタイム要件を満たすために十分なキャッシュメモリを有することを保証するために、リアルタイム制約のサービスを可能にし得る。リアルタイム制約に応答してサービスを提供するために、キャッシュ割振り回路116は、タイムクリティカルな要求側エージェントのためのキャッシュライン106(0)〜106(L)の最小ワーキングセットが、共有キャッシュメモリシステム100において保持されるようになることを保証するように構成され得る。キャッシュ割振り回路116によるキャッシュライン106(0)〜106(L)の割振りはまた、クラウドコンピューティングサービスレベルアグリーメント(SLA)を実施することにおいて、かつ/または、コンピュータ処理システムの全体的なスループットを改善するために、いくつかの要求側エージェントのためのキャッシュライン106(0)〜106(L)のキャッシュ割当てを制限するためにも有用であり得る。異なる使用事例において、図1の共有キャッシュメモリシステム100の割振りを実施するために、図1のキャッシュ割振り回路116によって採用される例示的な最小および最大マッピングビットマスクについて、図2A〜図2Cに関して以下でより詳細に説明する。
【００２２】
いくつかの態様では、キャッシュ割振り回路116はまた、QoSクラス112(0)〜112(N)の各々のための平均割振りターゲット値を与え得る。QoSID120に対応するQoSクラス112(0)〜112(N)のためのターゲットパーティションとして、最小パーティションまたは最大パーティションのいずれかを後で選択するとき、キャッシュ割振り回路116は、それの選択を、QoSクラス112(0)〜112(N)に割り振られたキャッシュライン106(0)〜106(L)の実際の割振りを平均割振りターゲット値に接近させる、どちらのターゲットパーティションにも基づくようにし得る。したがって、QoSクラス112(0)〜112(N)が競合されたシステム内でアクティブに実行中であるとき、キャッシュ割振り回路116は、QoSクラス112(0)〜112(N)のための複数のキャッシュライン106(0)〜106(L)の実際の割振りを、平均割振りターゲット値の近くに保つように試みることになる。QoSクラス112(0)〜112(N)がスケジュールされない場合、または、QoSクラス112(0)〜112(N)が、平均割振りよりも小さい複数のキャッシュライン106(0)〜106(L)の割振りを使用中である場合、実際の割振りは、対応する最小マッピングビットマスクによって表された最小レベルに接近することになる。QoSクラス112(0)〜112(N)が、独立して、または軽いキャッシュプレッシャーを有する他の作業負荷とともに実行中である場合、実際の割振りは、対応する最大マッピングビットマスクによって表された最大レベルに接近することになる。
【００２３】
いくつかの態様によれば、キャッシュ割振り回路116は、ターゲットパーティションとしての最小パーティションまたは最大パーティションの選択を誘導するために、キャッシュ使用量モニタ124からの、複数のQoSクラス112(0)〜112(N)の間の複数のキャッシュライン106(0)〜106(L)の割振りの指示122を使用し得る。非限定的な例として、指示122は、所与のQoSクラス112(0)〜112(N)によるキャッシュ使用量の近似測定値を表し得る。指示122に基づいて、キャッシュ割振り回路116は、いくつかの態様では、次いで、そのQoSクラス112(0)〜112(N)のためのキャッシュ割振りを平均割振りターゲット値の方に向かわせるために、必要に応じて、最小パーティションまたは最大パーティションを選択し得る。
【００２４】
キャッシュフィル動作中にパーティショニングを決定するために、最小マッピングビットマスクまたは最大マッピングビットマスクのいずれかを使用することによって、得られる複数のキャッシュライン106(0)〜106(L)の割振りは、当然、最小使用量と最大使用量との間で変動することになる。たとえば、キャッシュ割振り回路116が最小マッピングビットマスクを選択する場合、対応するQoSクラス112(0)〜112(N)のためのキャッシュ使用量は、その最小パーティションの方に漸減することになる。キャッシュ割振り回路116が最大マッピングビットマスクを選択する場合、対応するQoSクラス112(0)〜112(N)のためのキャッシュ使用量は、最大パーティションの方に増大することになる。したがって、いくつかの態様では、キャッシュ割振り回路116は、現在のキャッシュ使用量が平均割振りターゲット値を上回るとき、最小マッピングビットマスクを決定論的に選択し、現在のキャッシュ使用量が平均割振りターゲット値を下回るとき、最大マッピングビットマスクを決定論的に選択し得る。
【００２５】
いくつかの態様では、キャッシュ割振り回路116が、最小マッピングビットマスクまたは最大マッピングビットマスクを確率的に選択して、キャッシュ割振り回路116が「誤った」ビットマスク(すなわち、現在のキャッシュ使用量が平均割振りターゲット値から離れる結果となるビットマスク)を周期的に選択するようにすることが望ましくなり得る。確率的に選択することによって、キャッシュ割振り回路116は、QoSクラス112(0)〜112(N)の各々のための自然なキャッシングパターンを選好するキャッシュ割振りの検討において、より効果的であり、共有キャッシュメモリシステム100のより効果的かつ効率的な使用を生じ得る。
【００２６】
いくつかの態様によれば、キャッシュ割振り回路116は、確率関数プロバイダ回路126によって与えられた確率関数(図示せず)に基づいて、最小マッピングビットマスクまたは最大マッピングビットマスクを確率的に選択するように構成され得る。いくつかの態様は、確率関数プロバイダ回路126が、非限定的な例として、線形確率関数および/またはシグモイド確率関数に基づき得ることを提供し得る。たとえば、線形確率関数は、実装の容易さが重要である態様において好ましくなり得る。いくつかの態様によれば、シグモイド確率関数の使用は、平均割振りターゲット値の方により速く向かうことを生じ、それによって、変化が生じるとき(たとえば、非限定的な例として、QoSクラス112(0)〜112(N)が頻繁な位相変化を有する状況)、キャッシュ割振り回路116が、より応答することを可能にし得る。シグモイド確率関数を採用する態様では、確率関数プロバイダ回路126は、無作為性のソースとして、線形フィードバックシフトレジスタ(図示せず)とともに、事前にポピュレートされたハードウェアルックアップテーブル(図示せず)として実装され得る。形状パラメータμをとる例示的なシグモイド関数を、以下に示す。
【００２７】
【数１】
0006262407.tif 000002
【００２８】
共有キャッシュメモリシステム100の割振りを実施するための、図1のキャッシュ割振り回路116によって採用され得る、例示的な最小および最大マッピングビットマスクを示すために、図2A〜図2Cが提供される。具体的には、図2Aは、QoSクラス112(0)および112(1)を互いから厳密に分離するために使用され得る、例示的な最小マッピングビットマスクおよび最大マッピングビットマスクを示す。図2Bは、QoSクラス112(0)、112(1)を、各QoSクラス112(0)、112(1)の専用である最小パーティションにマッピングするための、例示的な最小マッピングビットマスクと、QoSクラス112(0)、112(1)を、各QoSクラス112(0)、112(1)の専用ではない最大パーティションにマッピングするための、例示的な最大マッピングビットマスクとを示す。図2Cは、キャッシュスラッシングを生じ得る、QoSクラス112(0)〜112(N)の影響を低減するために使用され得る、例示的な最小マッピングビットマスクおよび最大マッピングビットマスクを示す。図2A〜図2Cでは、QoSクラス112(0)〜112(2)は、キャッシュ割振り回路116によって、最小マッピングビットマスク200(0)〜200(2)、最大マッピングビットマスク202(0)〜202(2)、および平均割振りターゲット値204(0)〜204(2)にそれぞれ関連付けられる。最小マッピングビットマスク200(0)〜200(2)は、QoSクラス112(0)〜112(2)のための最小パーティション206(0)〜206(2)をマッピングするが、最大マッピングビットマスク202(0)〜202(2)は、QoSクラス112(0)〜112(2)のための最大パーティション208(0)〜208(2)をマッピングする。
【００２９】
図2Aの例では、最小マッピングビットマスク200(0)、200(1)、および最大マッピングビットマスク202(0)、202(1)は、QoSクラス112(0)、112(1)を、各QoSクラス112(0)、112(1)の専用である複数のキャッシュライン106(0)〜106(L)の同じターゲットパーティションにマッピングする。これによって、QoSクラス112(0)、112(1)が、共有キャッシュメモリシステム100内で互いから厳密に分離されることになり、このことは、クラウドコンピューティングアプリケーションなどの使用事例において望ましくなり得る。最小マッピングビットマスク200(0)、200(1)、および最大マッピングビットマスク202(0)、202(1)は、所与のQoSクラス112(0)、112(1)について同じであるので、QoSクラス112(0)、112(1)は、最小マッピングビットマスク200(0)、200(1)、および最大マッピングビットマスク202(0)、202(1)によって指定された使用量を決して超えることがない。最小マッピングビットマスク200(0)、200(1)、および最大マッピングビットマスク202(0)、202(1)が同じである、いくつかの態様では、キャッシュ割振り回路116は、ターゲットパーティションを選択するとき、最小マッピングビットマスク200(0)、200(1)、および最大マッピングビットマスク202(0)、202(1)のうちの単一のものを使用し得る。
【００３０】
図2Bでは、最大マッピングビットマスク202(0)、202(1)の各々が、所与のQoSクラス112(0)、112(1)のためのそれぞれの最小マッピングビットマスク200(0)、200(1)のスーパーセットとして指定される。したがって、最小マッピングビットマスク200(0)、200(1)は、QoSクラス112(0)、112(1)を、QoSクラス112(0)、112(1)の専用である最小パーティション206(0)、206(1)にマッピングする。同様に、最大マッピングビットマスク202(0)、202(1)は、QoSクラス112(0)、112(1)を、QoSクラス112(0)、112(1)の専用ではない最大パーティション208(0)、208(1)にマッピングする(すなわち、最大パーティション208(0)、208(1)の部分が、QoSクラス112(0)と112(1)との間で共有される)。この構成は、ユーザが、QoSクラス112(0)、112(1)が各々複数のキャッシュライン106(0)〜106(L)の一部分への排他的アクセスを有することを保証することを可能にし得るが、また、QoSクラス112(0)、112(1)が、軽い競合の下で複数のキャッシュライン106(0)〜106(L)のうちのより多くのものを使用することも可能にし得る。図2Bに見られるように、QoSクラス112(0)、112(1)は、25%の最小割振りを保証されるが、低優先度のアプリケーションが実行中ではないとき、またはそれらの低優先度のアプリケーションが複数のキャッシュライン106(0)〜106(L)の25%よりも多くを使用中ではないとき、複数のキャッシュライン106(0)〜106(L)の最大75%を使用することが可能にされる。この構成では、ビットの配置が重要であることに留意されたい。具体的には、QoSクラス112(0)、112(1)が各々、複数のキャッシュライン106(0)〜106(L)の25%を排他的に与えられ、その理由は、それらの最小マッピングビットマスク200(0)、200(1)におけるビットが重複しないからである。
【００３１】
次に図2Cを参照すると、スループットを最大にするために、最小マッピングビットマスク200(0)〜200(2)、および最大マッピングビットマスク202(0)〜202(2)は、キャッシュをスラッシュするアプリケーションの影響を低減するように設定され得る。図2Cの例では、最小マッピングビットマスク200(0)および最大マッピングビットマスク202(0)は、QoSクラス112(0)のための割振りを厳密に制限する。最小マッピングビットマスク200(1)、200(2)、および最大マッピングビットマスク202(1)、202(2)は、QoSクラス112(1)、112(2)のための最小割振りを保証しながら、QoSクラス112(1)、112(2)が複数のキャッシュライン106(0)〜106(L)の残りを共有することを可能にする。結果として、QoSクラス112(1)、112(2)に関連付けられたアプリケーションによって生じるキャッシュのいかなるスラッシングも、最大パーティション208(1)、208(2)の重複するパーティションに限定されることになり、キャッシュの残りに影響を及ぼさないことになる。
【００３２】
図3A〜図3Cは、共有キャッシュメモリ割振り制御を提供するための、図1のキャッシュ割振り回路116の例示的な動作を示すフローチャートである。明快にするために、図3A〜図3Cについて説明する際に、図1および図2A〜図2Cの要素が参照される。いくつかの態様では、動作は、キャッシュ割振り回路116が平均割振りターゲット値204(0)を与えること(ブロック300)から始まる。したがって、キャッシュ割振り回路116は、本明細書では「平均割振りターゲット値を与えるための手段」と呼ばれることがある。キャッシュ割振り回路116は、複数のQoSクラス112(0)〜112(N)のうちのQoSクラス112(0)に対応するQoSID120を備える、メモリアクセス要求118を受信する(ブロック302)。したがって、キャッシュ割振り回路116は、本明細書では「複数のQoSクラスのうちのQoSクラスに対応するQoSIDを備える、メモリアクセス要求を受信するための手段」と呼ばれることがある。
【００３３】
次いで、キャッシュ割振り回路116は、メモリアクセス要求118が共有キャッシュメモリシステム100の複数のキャッシュライン106(0)〜106(L)のうちのキャッシュライン106(0)に対応するか否かを決定する(ブロック304)。この点について、キャッシュ割振り回路116は、本明細書では「メモリアクセス要求が共有キャッシュメモリシステムの複数のキャッシュラインのうちのキャッシュラインに対応するか否かを決定するための手段」と呼ばれることがある。キャッシュ割振り回路116が、決定ブロック304で、メモリアクセス要求118が複数のキャッシュライン106(0)〜106(L)のうちのキャッシュライン106(0)に対応すると決定する場合、キャッシュ割振り回路116は、キャッシュライン106(0)を戻す(すなわち、キャッシュヒット)(ブロック306)。しかしながら、メモリアクセス要求118が複数のキャッシュライン106(0)〜106(L)のうちのキャッシュライン106(0)に対応しない場合(すなわち、キャッシュミス)、処理は、図3Bのブロック308において再開する。
【００３４】
次に図3Bを参照すると、キャッシュ割振り回路116は、ターゲットパーティションとして、最小マッピングビットマスク200(0)によってQoSID120に対応するQoSクラス112(0)にマッピングされた最小パーティション206(0)、および、最大マッピングビットマスク202(0)によってQoSID120に対応するQoSクラス112(0)にマッピングされた最大パーティション208(0)のうちの1つを選択する(ブロック308)。したがって、キャッシュ割振り回路116は、本明細書では「ターゲットパーティションとして、最小マッピングビットマスクによってQoSIDに対応するQoSクラスにマッピングされた最小パーティション、および、最大マッピングビットマスクによってQoSIDに対応するQoSクラスにマッピングされた最大パーティションのうちの1つを選択するための手段」と呼ばれることがある。いくつかの態様では、最小パーティション206(0)および最大パーティション208(0)のうちの1つを選択するためのブロック308の動作は、QoSID120に対応するQoSクラス112(0)に割り振られたキャッシュライン106(0)〜106(L)の実際の割振りを平均割振りターゲット値204(0)に接近させるために、最小パーティション206(0)および最大パーティション208(0)のうちの1つを選択すること(ブロック310)を含む。したがって、キャッシュ割振り回路116は、本明細書では「QoSIDに対応するQoSクラスに割り振られたキャッシュラインの実際の割振りを平均割振りターゲット値に接近させるために、最小パーティションおよび最大パーティションのうちの1つを選択するための手段」と呼ばれることがある。いくつかの態様は、最小パーティション206(0)および最大パーティション208(0)のうちの1つを選択するためのブロック310の動作が、キャッシュ使用量モニタ124によって与えられた、複数のQoSクラス112(0)〜112(N)の間の複数のキャッシュライン106(0)〜106(L)の割振りの指示122に基づくこと(ブロック312)を提供し得る。非限定的な例として、指示122は、所与のQoSクラス112(0)〜112(N)によるキャッシュ使用量の近似測定値を表し得る。指示122によって示されたキャッシュ使用量の近似測定値に基づいて、キャッシュ割振り回路116は、いくつかの態様では、次いで、そのQoSクラス112(0)〜112(N)のためのキャッシュ割振りを平均割振りターゲット値204(0)の方に向かわせるために、必要に応じて、最小パーティションまたは最大パーティションを選択し得る。この点について、キャッシュ割振り回路116は、本明細書では「キャッシュ使用量モニタによって与えられた、複数のQoSクラスの間の複数のキャッシュラインの割振りの指示に基づいて、最小パーティションおよび最大パーティションのうちの1つを選択するための手段」と呼ばれることがある。
【００３５】
いくつかの態様では、キャッシュ割振り回路116によって、最小パーティション206(0)および最大パーティション208(0)のうちの1つを選択するためのブロック308の動作は、最小パーティション206(0)および最大パーティション208(0)のうちの1つを確率的に選択すること(ブロック314)を含む。したがって、キャッシュ割振り回路116は、本明細書では「最小パーティションおよび最大パーティションのうちの1つを確率的に選択するための手段」と呼ばれることがある。いくつかの態様は、最小パーティション206(0)および最大パーティション208(0)のうちの1つを確率的に選択するためのブロック314の動作が、確率関数プロバイダ回路126に基づくこと(ブロック316)を提供し得る。処理は、図3Cのブロック318において再開する。
【００３６】
次に図3Cを参照すると、キャッシュ割振り回路116は、次に、キャッシュフィル動作のために、ターゲットパーティション内でキャッシュライン106(0)を割り振る(ブロック318)。この点について、キャッシュ割振り回路116は、本明細書では「メモリアクセス要求が複数のキャッシュラインのうちのキャッシュラインに対応しないという決定に応答して、キャッシュフィル動作のために、ターゲットパーティション内でキャッシュラインを割り振るための手段」と呼ばれることがある。いくつかの態様によれば、キャッシュフィル動作のために、ターゲットパーティション内でキャッシュライン106(0)を割り振るためのブロック318の動作は、キャッシュ割振り回路116が、ターゲットパーティション内で1つまたは複数のキャッシュライン106(0)〜106(L)を、1つまたは複数のエビクション候補106(0)〜106(L)として識別すること(ブロック320)を含む。したがって、キャッシュ割振り回路116は、本明細書では「ターゲットパーティション内で1つまたは複数のキャッシュラインを、1つまたは複数のエビクション候補として識別するための手段」と呼ばれることがある。次いで、キャッシュ割振り回路116は、共有キャッシュメモリシステム100から、1つまたは複数のエビクション候補106(0)〜106(L)のうちのエビクション候補106(0)をエビクトし得る(ブロック322)。したがって、キャッシュ割振り回路116は、本明細書では「共有キャッシュメモリシステムから、1つまたは複数のエビクション候補のうちのエビクション候補をエビクトするための手段」と呼ばれることがある。
【００３７】
共有キャッシュメモリシステムにおける共有キャッシュメモリ割振り制御を提供することは、任意のプロセッサベースデバイスにおいて提供されるか、またはそれに組み込まれ得る。例としては、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤが含まれる。
【００３８】
この点について、図4は、図1のキャッシュコントローラ110を有する共有キャッシュメモリシステム(SCMS)100を含み得る、例示的なプロセッサベースシステム400のブロック図である。この例では、プロセッサベースシステム400は、1つまたは複数のプロセッサ404を各々が含む1つまたは複数のCPU402を含む。CPU402は、マスターデバイスであり得る。CPU402は、一時的に記憶されたデータに迅速にアクセスするために、プロセッサ404に結合されたキャッシュメモリ406を有し得る。いくつかの態様では、キャッシュメモリ406は、図1の共有キャッシュメモリシステム100および/またはキャッシュ割振り回路116を備え得る。CPU402は、システムバス408に結合され、プロセッサベースシステム400内に含まれるマスターデバイスとスレーブデバイスとを相互結合することができる。よく知られているように、CPU402は、システムバス408を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU402は、スレーブデバイスの一例として、メモリコントローラ410にバストランザクション要求を通信することができる。
【００３９】
他のマスターデバイスおよびスレーブデバイスがシステムバス408に接続され得る。図4に示されるように、これらのデバイスは、メモリシステム412、1つまたは複数の入力デバイス414、1つまたは複数の出力デバイス416、1つまたは複数のネットワークインターフェースデバイス418、および1つまたは複数のディスプレイコントローラ420を例として含み得る。入力デバイス414は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含み得る。出力デバイス416は、限定はしないが、オーディオインジケータ、ビデオインジケータ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含み得る。ネットワークインターフェースデバイス418は、ネットワーク422との間のデータ交換を可能にするように構成される任意のデバイスであり得る。ネットワーク422は、限定はしないが、ワイヤードネットワークまたはワイヤレスネットワーク、プライベートネットワークまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスローカルエリアネットワーク(WLAN)、ワイドエリアネットワーク(WAN)、BLUETOOTH(登録商標)ネットワーク、およびインターネットを含む、任意のタイプのネットワークであり得る。ネットワークインターフェースデバイス418は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。メモリシステム412は、1つまたは複数のメモリユニット424(0)〜424(N)を含み得る。
【００４０】
CPU402はまた、1つまたは複数のディスプレイ426に送られる情報を制御するために、システムバス408を介してディスプレイコントローラ420にアクセスするように構成され得る。ディスプレイコントローラ420は、1つまたは複数のビデオプロセッサ428を介して、表示されるべき情報をディスプレイ426に送り、ビデオプロセッサ428は、表示されるべき情報を、ディスプレイ426に適したフォーマットになるように処理する。ディスプレイ426は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含む任意のタイプのディスプレイを含み得る。
【００４１】
さらに、本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子ハードウェアとして実装され得ることを当業者は諒解されよう。本明細書で説明するデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて採用され得る。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリであり得、所望の任意のタイプの情報を記憶するように構成され得る。この互換性について明確に説明するために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能がどのように実装されるかは、特定の適用例、設計上の選定、および/または全体的なシステムに課された設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装してもよいが、そのような実装の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００４２】
本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せとともに実装または実行され得る。プロセッサは、マイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装される場合もある。
【００４３】
本明細書の例示的な態様のいずれかにおいて説明される動作ステップは、例および考察を提供するために説明されることにも留意されたい。説明される動作は、図示されるシーケンス以外の多数の異なるシーケンスにおいて実行される場合がある。さらに、単一の動作ステップにおいて説明される動作は、実際にはいくつかの異なるステップにおいて実行される場合がある。加えて、例示的な態様において説明される1つまたは複数の動作ステップは、組み合わされ得る。当業者には容易に明らかになるように、フローチャート図に示される動作ステップは、多数の異なる変更を受ける場合があることを理解されたい。当業者は、情報および信号が様々な異なる技術および技法のいずれかを使用して表される場合があることも理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【００４４】
本開示の上記の説明は、当業者が本開示を実施するかまたは使用することを可能にするために提供される。本開示の様々な変更が、当業者には容易に明らかになり、本明細書で定義される一般原理は、本開示の趣旨または範囲を逸脱することなく、他の変形形態に適用され得る。したがって、本開示は、本明細書で説明する例および設計に限定されるものではなく、本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００４５】
100  共有キャッシュメモリシステム
102(0)〜102(X)  バンク
104(0)〜104(Y)  セット
106(0)〜106(L)  キャッシュライン、エビクション候補
108(0)〜108(Z)  ウェイ
110  キャッシュコントローラ
112(0)〜112(N)  QoSクラス
114(0)〜114(N)、120  QoSID
116  キャッシュ割振り回路
118  メモリアクセス要求
122  指示
124  キャッシュ使用量モニタ
126  確率関数プロバイダ回路
200(0)〜200(2)  最小マッピングビットマスク
202(0)〜202(2)  最大マッピングビットマスク
204(0)〜204(2)  平均割振りターゲット値
206(0)〜206(2)  最小パーティション
208(0)〜208(2)  最大パーティション
400  プロセッサベースシステム
402  CPU
404  プロセッサ
406  キャッシュメモリ
408  システムバス
410  メモリコントローラ
412  メモリシステム
414  入力デバイス
416  出力デバイス
418  ネットワークインターフェースデバイス
420  ディスプレイコントローラ
422  ネットワーク
424(0)〜424(N)  メモリユニット
426  ディスプレイ
428  ビデオプロセッサ
【要約】
共有キャッシュメモリシステムにおける共有キャッシュメモリ割振り制御の提供が開示される。一態様では、複数のキャッシュラインを備える共有キャッシュメモリシステムのキャッシュコントローラが提供される。キャッシュコントローラは、サービス品質(QoS)クラスをキャッシュラインの最小パーティションにマッピングするための、最小マッピングビットマスクと、QoSクラスをキャッシュラインの最大パーティションにマッピングするための、最大マッピングビットマスクとを提供する、キャッシュ割振り回路を備える。キャッシュ割振り回路は、QoSクラスのQoS識別子(QoSID)を備えるメモリアクセス要求を受信し、メモリアクセス要求が複数のキャッシュラインのうちのキャッシュラインに対応するか否かを決定するように構成される。そうでない場合、キャッシュ割振り回路は、ターゲットパーティションとして、QoSクラスにマッピングされた最小パーティション、またはQoSクラスにマッピングされた最大パーティションを選択する。【図１】
0006262407.tif 000003
【図２Ａ】
0006262407.tif 000004
【図２Ｂ】
0006262407.tif 000005
【図２Ｃ】
0006262407.tif 000006
【図３Ａ】
0006262407.tif 000007
【図３Ｂ】
0006262407.tif 000008
【図３Ｃ】
0006262407.tif 000009
【図４】
0006262407.tif 000010