(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-01-28
(54)【発明の名称】マルチメディア圧縮フレーム認識キャッシュ置換ポリシー
(51)【国際特許分類】
G06F 12/123 20160101AFI20250121BHJP
【FI】
G06F12/123
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024539049
(86)(22)【出願日】2022-11-14
(11)【特許番号】
(45)【特許公報発行日】2025-01-09
(85)【翻訳文提出日】2024-06-26
(86)【国際出願番号】 US2022049820
(87)【国際公開番号】W WO2023129291
(87)【国際公開日】2023-07-06
(32)【優先日】2021-12-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】ヒラル・ナンドゥ
(72)【発明者】
【氏名】スッバラオ・パラチャルラ
(72)【発明者】
【氏名】ジョージ・パトシララス
(72)【発明者】
【氏名】アラン・アルティエリ
(72)【発明者】
【氏名】サイモン・ピーター・ウィリアム・ブース
(72)【発明者】
【氏名】ヴィプル・ガンディー
(72)【発明者】
【氏名】ギリシュ・バート
(72)【発明者】
【氏名】イェン-クアン・ウー
(72)【発明者】
【氏名】ユンフン・キム
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205NN46
5B205QQ01
5B205QQ06
5B205QQ11
(57)【要約】
様々な実施形態は、コンピューティングデバイスによって基準認識キャッシュ置換ポリシーを実施する方法およびデバイスを含む。実施形態は、ステーリングカウンタを更新することと、関連データがシステムキャッシュに書き込まれるときの(すなわち、そのときの)ステーリングカウンタの値を含む、ローカルカウンタの値をデータのシステムキャッシュ内の位置に関連してシステムキャッシュに書き込むことと、関連データのローカルカウンタの値を使用して、関連データが古いかどうかを判定することと、を含むことができる。
【特許請求の範囲】
【請求項1】
コンピューティングデバイスによって基準認識キャッシュ置換ポリシーを実施する方法であって、
ステーリングカウンタを更新するステップと、
関連データのシステムキャッシュ内の位置に関連してシステムキャッシュにローカルカウンタの値を書き込むステップであって、前記ローカルカウンタの前記値が、前記関連データが前記システムキャッシュに書き込まれるときの前記ステーリングカウンタの値を含む、ステップと、
前記関連データの前記ローカルカウンタの前記値を使用して、前記関連データが古いかどうかを判定するステップと
を含む、方法。
【請求項2】
前記ステーリングカウンタを更新するステップが、
前記ステーリングカウンタを更新すべきかどうかを示すように構成される前記コンピューティングデバイスのクライアントから信号を受信するステップと、
前記信号に基づいて前記ステーリングカウンタを更新すべきかどうかを判定するステップと、
前記ステーリングカウンタを更新すべきと判定したことに応じて、前記ステーリングカウンタを更新するステップと
を含む、請求項1に記載の方法。
【請求項3】
前記信号が、レジスタ書き込みコマンドであり、
前記コンピューティングデバイスの前記クライアントから前記信号を受信するステップが、前記クライアントによって設定されたレジスタから値を読み取るステップを含み、
前記信号に基づいて前記ステーリングカウンタを更新すべきかどうかを判定するステップが、前記レジスタからの前記値に基づいて、前記ステーリングカウンタを更新すべきかどうかを判定するステップを含む、
請求項2に記載の方法。
【請求項4】
時間ベースの基準に基づいて、前記コンピューティングデバイスの前記クライアントによって前記レジスタにおける前記値を設定するステップをさらに含む、請求項3に記載の方法。
【請求項5】
イベントベースの基準に基づいて、前記コンピューティングデバイスの前記クライアントによって前記レジスタにおける前記値を設定するステップをさらに含む、請求項3に記載の方法。
【請求項6】
メモリ書き込みコマンドを受信するステップをさらに含み、前記関連データの前記システムキャッシュ内の前記位置に関連して前記ローカルカウンタの前記値を前記システムキャッシュに書き込むステップが、前記ステーリングカウンタを更新する前に行われ、前記関連データが、前記書き込みメモリコマンドのデータである、請求項1に記載の方法。
【請求項7】
前記関連データの前記ローカルカウンタの前記値を使用して、前記関連データが古いかどうかを判定するステップが、
前記ステーリングカウンタの値および前記ローカルカウンタの前記値を使用して置換値を計算するステップと、
前記置換値がステーリング閾値を上回るかどうかを判定するステップであって、前記置換値が前記ステーリング閾値を上回ると判定したステップに応じて、前記関連データが古いと判定される、ステップと
を含む、請求項1に記載の方法。
【請求項8】
メモリアクセスコマンドを受信するステップと、
前記メモリアクセスコマンドのデータを、前記置換値が前記ステーリング閾値を上回る位置で前記システムキャッシュに書き込むステップであって、前記システムキャッシュに書き込まれた前記メモリアクセスコマンドの前記データが、前記関連データである、ステップと
をさらに含む、請求項7に記載の方法。
【請求項9】
メモリ書き込みコマンドを受信するステップと、
前記置換値が前記ステーリング閾値を上回る位置におけるデータを無効化するステップと、
前記メモリ書き込みコマンドのデータを、前記無効化されたデータを有する位置で前記システムキャッシュに書き込むステップであって、前記システムキャッシュに書き込まれた前記メモリ書き込みコマンドの前記データが、前記関連データである、ステップと
をさらに含む、請求項7に記載の方法。
【請求項10】
メモリ書き込みアクセスコマンドを受信するステップと、
置換値が前記ステーリング閾値を上回らないと判定したステップに応じて、前記メモリ書き込みアクセスコマンドのデータを、別のキャッシュ置換ポリシーに従った位置で前記システムキャッシュに書き込むステップと
をさらに含む、請求項7に記載の方法。
【請求項11】
コンピューティングデバイスであって、
メモリ制御デバイスであって、
ステーリングカウンタを更新し、
関連データがシステムキャッシュに書き込まれるときの前記ステーリングカウンタの値を含む、ローカルカウンタの値を前記関連データの前記システムキャッシュ内の位置に関連して前記システムキャッシュに書き込み、
前記関連データの前記ローカルカウンタの前記値を使用して、前記関連データが古いかどうかを判定する
ように構成されるメモリ制御デバイス
を備える、コンピューティングデバイス。
【請求項12】
前記メモリ制御デバイスが、
前記ステーリングカウンタを更新すべきかどうかを示すように構成される前記コンピューティングデバイスのクライアントから信号を受信することと、
前記信号に基づいて前記ステーリングカウンタを更新すべきかどうかを判定することと、
前記ステーリングカウンタを更新すべきと判定したことに応じて、前記ステーリングカウンタを更新することと、
によって、前記ステーリングカウンタを更新するようにさらに構成される、請求項11に記載のコンピューティングデバイス。
【請求項13】
前記信号が、レジスタ書き込みコマンドであり、
前記メモリ制御デバイスが、
前記クライアントによって設定されたレジスタから値を読み取ることによって、前記コンピューティングデバイスの前記クライアントから前記信号を受信し、
前記レジスタからの前記値に基づいて、前記ステーリングカウンタを更新すべきかどうかを判定することによって、前記信号に基づいて前記ステーリングカウンタを更新すべきかどうかを判定する
ようにさらに構成される、請求項12に記載のコンピューティングデバイス。
【請求項14】
時間ベースの基準に基づいて前記レジスタにおける前記値を設定するように構成されるクライアントをさらに備える、請求項13に記載のコンピューティングデバイス。
【請求項15】
イベントベースの基準に基づいて前記レジスタにおける前記値を設定するように構成されるクライアントをさらに備える、請求項13に記載のコンピューティングデバイス。
【請求項16】
前記メモリ制御デバイスが、
メモリ書き込みコマンドを受信することと、
前記ステーリングカウンタを更新する前に、前記関連データの前記システムキャッシュ内の前記位置に関連して前記ローカルカウンタの前記値を前記システムキャッシュに書き込むことであって、前記関連データが、前記書き込みメモリコマンドのデータである、ことと
を行うようにさらに構成される、請求項11に記載のコンピューティングデバイス。
【請求項17】
前記メモリ制御デバイスが、前記関連データの前記ローカルカウンタの前記値を使用して、
前記ステーリングカウンタの値および前記ローカルカウンタの前記値を使用して置換値を計算することと、
前記置換値がステーリング閾値を上回るかどうかを判定することであって、前記置換値が前記ステーリング閾値を上回ると判定したことに応じて、前記関連データが古いと判定される、ことと
によって前記関連データが古いかどうかを判定するようにさらに構成される、請求項11に記載のコンピューティングデバイス。
【請求項18】
前記メモリ制御デバイスが、
メモリアクセスコマンドを受信することと、
前記メモリアクセスコマンドのデータを、前記置換値が前記ステーリング閾値を上回る位置で前記システムキャッシュに書き込むことであって、前記システムキャッシュに書き込まれた前記メモリアクセスコマンドの前記データが、前記関連データである、ことと
を行うようにさらに構成される、請求項17に記載のコンピューティングデバイス。
【請求項19】
前記メモリ制御デバイスが、
メモリ書き込みコマンドを受信することと、
前記置換値が前記ステーリング閾値を上回る位置におけるデータを無効化することと、
前記メモリ書き込みコマンドのデータを、前記無効化されたデータを有する位置で前記システムキャッシュに書き込むことであって、前記システムキャッシュに書き込まれた前記メモリ書き込みコマンドの前記データが、前記関連データである、ことと
を行うようにさらに構成される、請求項17に記載のコンピューティングデバイス。
【請求項20】
前記メモリ制御デバイスが、
メモリ書き込みアクセスコマンドを受信し、
置換値が前記ステーリング閾値を上回らないと判定したことに応じて、前記メモリ書き込みアクセスコマンドのデータを、基準認識キャッシュ置換ポリシーとは異なるキャッシュ置換ポリシーに従った位置で前記システムキャッシュに書き込む
ようにさらに構成される、請求項17に記載のコンピューティングデバイス。
【請求項21】
コンピューティングデバイスであって、
ステーリングカウンタを更新する手段と、
関連データのシステムキャッシュ内の位置に関連してシステムキャッシュにローカルカウンタの値を書き込む手段であって、前記ローカルカウンタの前記値が、前記関連データが前記システムキャッシュに書き込まれるときの前記ステーリングカウンタの値を含む、手段と、
前記関連データの前記ローカルカウンタの前記値を使用して、前記関連データが古いかどうかを判定する手段と
を備える、コンピューティングデバイス。
【請求項22】
前記ステーリングカウンタを更新する手段が、
前記ステーリングカウンタを更新すべきかどうかを示すように構成される前記コンピューティングデバイスのクライアントから信号を受信する手段と、
前記信号に基づいて前記ステーリングカウンタを更新すべきかどうかを判定する手段と、
前記ステーリングカウンタを更新すべきと判定したことに応じて、前記ステーリングカウンタを更新する手段と
を備える、請求項21に記載のコンピューティングデバイス。
【請求項23】
前記信号が、レジスタ書き込みコマンドであり、
前記コンピューティングデバイスの前記クライアントから前記信号を受信する手段が、前記クライアントによって設定されたレジスタから値を読み取る手段を含み、
前記信号に基づいて前記ステーリングカウンタを更新すべきかどうかを判定する手段が、前記レジスタからの前記値に基づいて、前記ステーリングカウンタを更新すべきかどうかを判定する手段を含む、
請求項22に記載のコンピューティングデバイス。
【請求項24】
時間ベースの基準に基づいて前記コンピューティングデバイスの前記クライアントによって前記レジスタにおける前記値を設定するまたはイベントベースの基準に基づいて前記コンピューティングデバイスの前記クライアントによって前記レジスタにおける前記値を設定する手段をさらに備える、請求項23に記載のコンピューティングデバイス。
【請求項25】
メモリ書き込みコマンドを受信する手段をさらに備え、前記関連データの前記システムキャッシュ内の前記位置に関連して前記ローカルカウンタの前記値を前記システムキャッシュに書き込む手段が、前記ステーリングカウンタを更新する前に実装され、前記関連データが、前記書き込みメモリコマンドのデータである、請求項21に記載のコンピューティングデバイス。
【請求項26】
前記関連データの前記ローカルカウンタの前記値を使用して、前記関連データが古いかどうかを判定する手段が、
前記ステーリングカウンタの値および前記ローカルカウンタの前記値を使用して置換値を計算する手段と、
前記置換値がステーリング閾値を上回るかどうかを判定する手段であって、前記置換値が前記ステーリング閾値を上回ると判定したことに応じて、前記関連データが古いと判定される、手段と
を備える、請求項21に記載のコンピューティングデバイス。
【請求項27】
メモリアクセスコマンドを受信する手段と、
前記メモリアクセスコマンドのデータを、前記置換値が前記ステーリング閾値を上回る位置で前記システムキャッシュに書き込む手段であって、前記システムキャッシュに書き込まれた前記メモリアクセスコマンドの前記データが、前記関連データである、手段と
をさらに備える、請求項26に記載のコンピューティングデバイス。
【請求項28】
メモリ書き込みコマンドを受信する手段と、
前記置換値が前記ステーリング閾値を上回る位置におけるデータを無効化する手段と、
前記メモリ書き込みコマンドのデータを、無効化されたデータを有する位置で前記システムキャッシュに書き込む手段であって、前記システムキャッシュに書き込まれた前記メモリ書き込みコマンドの前記データが、前記関連データである、手段と
をさらに備える、請求項26に記載のコンピューティングデバイス。
【請求項29】
メモリ書き込みアクセスコマンドを受信する手段と、
置換値が前記ステーリング閾値を上回らないと判定したことに応じて、前記メモリ書き込みアクセスコマンドのデータを、基準認識キャッシュ置換ポリシーとは異なるキャッシュ置換ポリシーに従った位置で前記システムキャッシュに書き込む手段と
をさらに備える、請求項26に記載のコンピューティングデバイス。
【請求項30】
処理デバイスに動作を実行させるように構成されるプロセッサ実行可能命令が記憶された非一時的プロセッサ可読媒体であって、前記動作が、
ステーリングカウンタを更新することと、
関連データのシステムキャッシュ内の位置に関連してシステムキャッシュにローカルカウンタの値を書き込むことであって、前記ローカルカウンタの前記値が、前記関連データが前記システムキャッシュに書き込まれるときの前記ステーリングカウンタの値を含む、ことと、
前記関連データの前記ローカルカウンタの前記値を使用して、前記関連データが古いかどうかを判定することと
を含む、非一時的プロセッサ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本出願は、2021年12月31日に出願された米国非仮特許出願第17/646,690号からの優先権の利益を主張し、その出願の内容全体は、参照により本明細書に組み込まれる。
【背景技術】
【0002】
コンピューティングデバイスのシステムキャッシュは、nMRU(not-most recently used)および容量ベースのFIFO(first-in,first-out)などの、1つまたは複数の置換ポリシーに従ってデータを記憶することができる。nMRUおよびFIFOポリシーは、時間局所性がフレーム時間境界内にあり、かつ容量割振りが圧縮率に基づいて変化し得るマルチメディアフレームベースのクライアントなどの、様々なユースケースに最適ではない。
【発明の概要】
【0003】
本開示の様々な態様は、コンピューティングデバイスによって基準認識キャッシュ置換ポリシーを実施するそのような方法を実装する方法および装置を含む方法を提供し、そのような方法は、ステーリングカウンタを更新することと、関連データがシステムキャッシュに書き込まれるときのステーリングカウンタの値を含む、ローカルカウンタの値を関連データのシステムキャッシュ内の位置に関連してシステムキャッシュに書き込むことと、関連データのローカルカウンタの値を使用して、関連データが古いかどうかを判定することと、を含むことができる。
【0004】
いくつかの態様では、ステーリングカウンタを更新することは、ステーリングカウンタを更新すべきかどうかを示すように構成されるコンピューティングデバイスのクライアントから信号を受信することと、信号に基づいてステーリングカウンタを更新すべきかどうかを判定することと、ステーリングカウンタを更新すべきと判定したことに応じて、ステーリングカウンタを更新することと、を含むことができる。
【0005】
いくつかの態様では、信号は、レジスタ書き込みコマンドであり、コンピューティングデバイスのクライアントから信号を受信することは、クライアントによって設定されたレジスタから値を読み取ることを含むことができ、信号に基づいてステーリングカウンタを更新すべきかどうかを判定することは、レジスタからの値に基づいて、ステーリングカウンタを更新すべきかどうかを判定することを含むことができる。
【0006】
いくつかの態様は、時間ベースの基準に基づいて、コンピューティングデバイスのクライアントによってレジスタにおける値を設定することを含むことができる。
【0007】
いくつかの態様は、イベントベースの基準に基づいて、コンピューティングデバイスのクライアントによってレジスタにおける値を設定することを含むことができる。
【0008】
いくつかの態様は、メモリ書き込みコマンドを受信することを含むことができ、関連データのシステムキャッシュ内の位置に関連してローカルカウンタの値をシステムキャッシュに書き込むことは、ステーリングカウンタを更新する前に行うことができ、関連データは、書き込みメモリコマンドのデータである。
【0009】
いくつかの態様では、関連データのローカルカウンタの値を使用して、関連データが古いかどうかを判定することは、ステーリングカウンタの値およびローカルカウンタの値を使用して置換値を計算することと、置換値がステーリング閾値を上回るかどうかを判定することと、を含むことができ、置換値がステーリング閾値を上回ると判定したことに応じて、関連データが古いと判定される。
【0010】
いくつかの態様は、メモリアクセスコマンドを受信することと、メモリアクセスコマンドのデータを、置換値がステーリング閾値を上回る位置でシステムキャッシュに書き込むことと、を含むことができ、システムキャッシュに書き込まれたメモリアクセスコマンドのデータは、関連データである。
【0011】
いくつかの態様は、メモリ書き込みコマンドを受信することと、置換値がステーリング閾値を上回る位置におけるデータを無効化することと、メモリ書き込みコマンドのデータを、無効化されたデータを有する位置でシステムキャッシュに書き込むことと、を含むことができ、システムキャッシュに書き込まれたメモリ書き込みコマンドのデータは、関連データである。
【0012】
いくつかの態様は、メモリ書き込みアクセスコマンドを受信することと、置換値がステーリング閾値を上回らないと判定したことに応じて、メモリ書き込みアクセスコマンドのデータを、別のキャッシュ置換ポリシーに従った位置でシステムキャッシュに書き込むことと、を含むことができる。
【0013】
更なる態様は、上記で要約した方法のうちのいずれかの動作を実行するように構成されるメモリ制御デバイスを含むコンピューティングデバイスを含む。更なる態様は、上記で要約した方法のうちのいずれかの動作をプロセッサに実行させるように構成されるプロセッサ実行可能ソフトウェア命令を記憶した、非一時的プロセッサ可読記憶媒体を含む。更なる態様は、上記で要約した方法のうちのいずれかの機能を達成する手段を有するコンピューティングデバイスを含む。
【0014】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、様々な実施形態のうちの例示的な実施形態を示し、上記の一般的な説明および下記の発明を実施するための形態とともに、特許請求の範囲の特徴を説明するのに役立つ。
【図面の簡単な説明】
【0015】
【
図1】様々な実施形態を実装するのに適した例示的なコンピューティングデバイスを示す構成要素ブロック図である。
【
図2】様々な実施形態を実装するのに適した例示的なシステムオンチップを示す構成要素ブロック図である。
【
図3A】一実施形態による、基準認識キャッシュ置換ポリシーの実施例を示すプロセス構成要素シグナリング図である。
【
図3B】一実施形態による、基準認識キャッシュ置換ポリシーの実施例を示すプロセス構成要素シグナリング図である。
【
図4】一実施形態による、基準認識キャッシュ置換ポリシーの一実施例を示すメモリフロー図である。
【
図5】一実施形態による、ローカルカウンタの値に基づいてデータを置き換える基準認識キャッシュ置換ポリシーの一実施例を示すメモリフロー図である。
【
図6】一実施形態による、ローカルカウンタの基準認識キャッシュ置換ポリシーを実施する方法を示すプロセスフロー図である。
【
図7】一実施形態による、ローカルカウンタの値に基づいてデータを置き換える基準認識キャッシュ置換ポリシーを実施する方法を示すプロセスフロー図である。
【
図8】一実施形態による、ローカルカウンタの値に基づいてデータを置き換える基準認識キャッシュ置換ポリシーを実施する方法を示すプロセスフロー図である。
【
図9】一実施形態による、ローカルカウンタの値に基づいてデータを無効化することに基づいてデータを置き換える基準認識キャッシュ置換ポリシーを実施する方法を示すプロセスフロー図である。
【
図10】一実施形態による、ローカルカウンタの値に基づいてデータを無効化することに基づいてデータを置き換える基準認識キャッシュ置換ポリシーを実施する方法を示すプロセスフロー図である。
【
図11】一実施形態による、ローカルカウンタの基準認識キャッシュ置換ポリシーを実施する方法を示すプロセスフロー図である。
【
図12】一実施形態による、ローカルカウンタの値に基づいてデータを置き換える基準認識キャッシュ置換ポリシーを実施する方法を示すプロセスフロー図である。
【
図13】一実施形態による、ローカルカウンタの値に基づいてデータを置き換える基準認識キャッシュ置換ポリシーを実施する方法を示すプロセスフロー図である。
【
図14】様々な実施形態を実装するのに適した例示的なモバイルコンピューティングデバイスを示す構成要素ブロック図である。
【
図15】様々な実施形態を実装するのに適した例示的なモバイルコンピューティングデバイスを示す構成要素ブロック図である。
【
図16】様々な実施形態を実装するのに適した例示的なサーバを示す構成要素ブロック図である。
【発明を実施するための形態】
【0016】
添付の図面を参照しながら、様々な実施形態について詳細に説明する。可能な場合はどこでも、同じかまたは同様の部分を指すために、図面全体にわたって同じ参照番号が使用される。特定の例および実装形態に対してなされる参照は、例示を目的としており、特許請求の範囲を限定するものではない。
【0017】
様々な実施形態は、基準認識キャッシュ置換ポリシーを実施する方法、およびそのような方法を実装するコンピューティングデバイスを含む。実施形態は、システムキャッシュに書き込まれたデータをローカルカウンタに関連付けることを含んでもよい。ローカルカウンタの値は、関連データがシステムキャッシュに書き込まれるときの(すなわち、そのときの)ステーリングカウンタの値を含むことができる。システムキャッシュ内のデータに対する置換値は、関連データのローカル値を使用して計算され、ステーリング閾値と比較されてもよい。関連データのローカルカウンタの値を使用して、関連データが古いかどうかを判定することができる。置換値を計算するために使用されるローカルカウンタに関連付けられたシステムキャッシュ内のデータは、置換値がステーリング閾値を上回る、かつ/またはそれに等しいことに応じて、置き換えることができる。
【0018】
「コンピューティングデバイス」という用語は、パーソナルコンピュータ、デスクトップコンピュータ、オールインワンコンピュータ、ワークステーション、スーパーコンピュータ、メインフレームコンピュータ、埋め込み型コンピュータ(ビークルおよび他のより大きいシステム内のなど)、コンピュータ化されたビークル(例えば、乗用ビークル、商用ビークル、レクリエーショナルビークル、軍用ビークル、ドローンなどの、部分的または完全に自律型の地上、航空、および/または水中ビークル)、サーバ、マルチメディアコンピュータ、およびゲームコンソールを含む固定コンピューティングデバイスを指すために本明細書で使用される。「コンピューティングデバイス」および「モバイルコンピューティングデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、コンバーチブルラップトップ/タブレット(2-in-1コンピュータ)、スマートブック、ウルトラブック、ネットブロック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、モバイルゲームコンソール、ワイヤレスゲームコントローラ、並びに、メモリおよびプログラマブルプロセッサを含む同様のパーソナル電子デバイスのうちのいずれか1つまたはすべてを指すために本明細書において互換的に使用される。
【0019】
説明を容易かつ明瞭にするために、様々な実施形態をコード、例えばプロセッサ実行可能命令に関して説明するが、任意のデータ、例えばコード、プログラムデータ、またはメモリに記憶された他の情報に同様に適用可能である場合がある。「コード」、「データ」、および「情報」という用語は、本明細書では互換的に使用され、様々な実施形態を説明する際に例として使用されるコード、データ、情報のタイプに請求項および説明の範囲を制限するように意図されない。
【0020】
典型的には、コンピューティングデバイスのシステムキャッシュは、nMRU(not-most recently used)およびFIFO(first-in,first-out)などの1つまたは複数のデータ置換ポリシーを使用して、データがキャッシュされるメモリスペースを制御する。nMRUおよびFIFOポリシーは、例えば、時間局所性がフレーム時間境界内にあり、かつ容量割振りが圧縮率に基づいて変化し得るマルチメディアフレームベースのクライアントを含む、様々なユースケースに最適ではない。NMRUの置換ポリシーは、マルチメディアクライアントからアクセスされたキャッシュラインが、異なるアクセス頻度を有し、特定の時間枠の間のみ有効であるとき、不十分である。FIFO置換挙動は、自己適応分割では保証されず、この場合、サブキャッシュが圧縮フレームで満たされるとき、キャッシュのパーティションのサイズが経時的に変化する可能性がある。
【0021】
様々な実施形態は、従来のキャッシュ置換ポリシーにおける制限に対処し、それらを解決する。プロセッサまたはプロセッサによって実行されるソフトウェアプログラム(例えば、オペレーティングシステムおよび/またはアプリケーション)のプロセスなどのクライアントは、システムキャッシュ内のデータのステーリングカウンタを更新する必要性を(例えば、通信、レジスタ書き込み、直接割込みなどを介して)シグナリングすることができる。説明を容易にするために、いくつかの実施例は、本明細書ではレジスタ書き込みに関して説明することがある。しかしながら、そのような実施例は、特許請求の範囲または説明の範囲をレジスタ書き込みに限定するものではない。当業者は、プロセッサにシグナリングする他のタイプまたは方法が同じまたは同様の機能を果たし得ることを理解するであろう。レジスタ書き込みは、時間(すなわち、時間ベースの基準)、イベント(すなわち、イベントベースの基準)、および/または他のメトリックなどの基準に基づいて発行することができる。例えば、レジスタ書き込みは、フレーム時間境界、圧縮マルチメディアデータのフレーム内の色フィールドなどに基づいて、圧縮マルチメディアデータのフレームの最初および/または最後に発行することができる。プロセッサまたはシステムキャッシュは、ローカルカウンタとして、ステーリングカウンタの値をシステムキャッシュ内のデータと関連付けることができる。例えば、プロセッサまたはシステムキャッシュは、システムキャッシュラインにおけるデータの挿入または使用中に、システムキャッシュラインのタグ内のステーリングカウンタの値を関連付けることができる。プロセッサまたはシステムキャッシュは、関連データがシステムキャッシュに書き込まれるときに(すなわち、そのときに)、ステーリングカウンタの値を含むローカルカウンタをデータと関連付けることができる。ローカルカウンタは、関連データがシステムキャッシュに書き込まれるときに、システムキャッシュ内のデータに関連付けられるので、ステーリングカウンタは、システムキャッシュ内のデータを区別することによって古いデータを示すことができ、したがって、プロセッサによって使用する、または新しい書き込みコマンドのための候補置換メモリ位置を識別するのを助けるために使用することができる。
【0022】
プロセッサまたはシステムキャッシュによってステーリング閾値を使用して、システムキャッシュ内のデータが古く、システムキャッシュへのデータの次の書き込みで置き換えることができるかどうかを判定することができる。ステーリング閾値は、基準認識キャッシュ置換ポリシーに基づいて事前構成することができる。システムキャッシュ内のデータの置換値は、ステーリングカウンタおよびデータに関連付けられたローカルカウンタの値を使用して計算することができ、ステーリング閾値と比較して、関連データが古いかどうかを判定することができ、システムキャッシュへのデータの次の書き込みで置き換えることができる。
【0023】
様々な実施形態は、システムキャッシュへのデータの次の書き込みにおいて、古いデータが古いデータでないデータよりも置き換えられる可能性が高くなるように、キャッシュ内の古いデータを追跡することができるキャッシュ置換ポリシー方法を提供する。様々な実施形態の方法を使用して古いデータを識別することにより、決定論的キャッシュ使用を可能にし、したがって、ダブルデータレート(double data rate、DDR)シンクロナスダイナミックランダムアクセスメモリ(synchronous dynamic random-access memory、SDRAM)におけるラストレベルキャッシュ使用および低減されたトラフィックを改善することによって、コンピューティングデバイスの動作を改善することができる。
【0024】
図1は、様々な実施形態とともに使用するのに適したコンピューティングデバイス100を含むシステムを示す。コンピューティングデバイス100は、中央処理ユニット104と、メモリ106と、通信インターフェース108と、メモリインターフェース110と、周辺デバイスインターフェース120と、処理デバイス124とを有するシステムオンチップ(SoC)102を含んでもよい。コンピューティングデバイス100は、ワイヤードまたはワイヤレスモデムなどの通信構成要素112、メモリ114、ワイヤレス通信リンクを確立するためのアンテナ116、および/または周辺デバイス122をさらに含んでもよい。プロセッサ124は、様々な処理デバイスのいずれか、例えば、いくつかのプロセッサコアを含んでもよい。
【0025】
「システムオンチップ」または「SoC」という用語は、通常、限定はしないが、処理デバイス、メモリ、および通信インターフェースを含む相互接続された電子回路のセットを指すために本明細書において使用される。処理デバイスは、中央処理ユニット(CPU)104、ならびに/または汎用プロセッサ、中央処理ユニット(CPU)104、デジタル信号プロセッサ(DSP)、グラフィックス処理ユニット(GPU)、加速処理ユニット(APU)、セキュア処理ユニット(SPU)、知的財産ユニット(IPU)、カメラサブシステム用の画像プロセッサもしくはディスプレイ用のディスプレイプロセッサなどのコンピューティングデバイスの特定の構成要素のサブシステムプロセッサ、補助プロセッサ、周辺デバイスプロセッサ、シングルコアプロセッサ、マルチコアプロセッサ、コントローラ、および/もしくはマイクロコントローラを含むプロセッサ124などの、様々な異なるタイプのプロセッサならびに/またはプロセッサコアを含んでもよい。処理デバイスは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、他のプログラマブル論理デバイス、個別ゲート論理、トランジスタ論理、性能監視ハードウェア、ウォッチドッグハードウェア、および/または時間基準などの、他のハードウェアおよびハードウェアの組合せをさらに組み入れてもよい。集積回路は、集積回路の構成要素がシリコンなどの単体の半導体材料上に存在するように構成されてもよい。
【0026】
SoC102は、1つまたは複数のCPU104およびプロセッサ124を含んでもよい。コンピューティングデバイス100は、2つ以上のSoC102を含み、それによって、CPU104、プロセッサ124、およびプロセッサコアの数を増やしてもよい。コンピューティングデバイス100はまた、SoC102に関連付けられていないCPU104およびプロセッサ124を含んでもよい。個々のCPU104およびプロセッサ124は、マルチコアプロセッサであってもよい。CPU104およびプロセッサ124は各々、コンピューティングデバイス100の他のCPU104およびプロセッサ124と同じであることも異なっていることもある、特定の目的のために構成されてもよい。同じ構成または異なる構成のCPU104、プロセッサ124、およびプロセッサコアのうちの1つまたは複数は、一緒にグループ化されてもよい。CPU104、プロセッサ124、またはプロセッサコアのグループは、マルチプロセッサクラスタと呼ばれることがある。
【0027】
SoC102のメモリ106は、SoC102のCPU104、プロセッサ124、または他の構成要素によるアクセスのためにデータおよびプロセッサ実行可能コードを記憶するように構成される、揮発性または不揮発性のメモリであってもよい。コンピューティングデバイス100および/またはSoC102は、様々な目的のために構成される1つまたは複数のメモリ106を含んでもよい。1つまたは複数のメモリ106は、メインメモリまたはキャッシュメモリとして実装される、DDRメモリを含む、ランダムアクセスメモリ(random-access memory、RAM)などの揮発性メモリを含んでもよい。これらのメモリ106は、データセンサもしくはサブシステムから受信されたデータ、不揮発性メモリから要求され、様々なファクタに基づいて将来のアクセスを予想して不揮発性メモリからメモリ106にロードされるデータおよび/もしくはプロセッサ実行可能コード命令、ならびに/またはCPU104および/もしくはプロセッサ124によって生成され、不揮発性メモリには記憶されずに将来迅速にアクセスできるように一時的に記憶される中間処理データおよび/もしくはプロセッサ実行可能コード命令の限られた量を、一時的に保持するように構成されてもよい。メモリ106は、SoC102のCPU104、プロセッサ124、または他の構成要素のうちの1つまたは複数によるアクセスのために、別のメモリ106またはメモリ114などの、別のメモリデバイスからメモリ106にロードされるデータおよびプロセッサ実行可能コードを、少なくとも一時的に記憶するように構成されてもよい。いくつかの実施形態では、任意の数および組合せのメモリ106が、ワンタイムプログラマブルまたは読み取り専用メモリを含んでもよい。
【0028】
メモリインターフェース110およびメモリ114は、コンピューティングデバイス100がデータおよびプロセッサ実行可能コードを揮発性および/または不揮発性記憶媒体に記憶し、データおよびプロセッサ実行可能コードを揮発性および/または不揮発性記憶媒体から検索することを可能にするために同時に作動してもよい。メモリ114は、メモリ114がSoC102のCPU104、プロセッサ124、または他の構成要素のうちの1つまたは複数によるアクセスのためにデータまたはプロセッサ実行可能コードを記憶してもよい、メインメモリなどのメモリ106の実施形態とほとんど同じように構成されてもよい。いくつかの実施形態では、不揮発性であるメモリ114は、コンピューティングデバイス100の電源が切断された後に情報を保持してもよい。電源が再び投入され、コンピューティングデバイス100が再起動すると、メモリ114上に記憶された情報は、コンピューティングデバイス100に利用可能であってもよい。いくつかの実施形態では、揮発性であるメモリ114は、コンピューティングデバイス100の電源が切断された後に情報を保持しなくてもよい。メモリインターフェース110は、メモリ114へのアクセスを制御し、SoC102のCPU104、プロセッサ124、または他の構成要素がメモリ114からデータを読み取り、メモリ114にデータを書き込むことを可能にしてもよい。
【0029】
コンピューティングデバイス100および/またはSoC102の構成要素の一部または全部は、依然として様々な実施形態の機能をサポートしながら、異なるように配置され、かつ/または組み合わされてもよい。コンピューティングデバイス100は、構成要素の各々のうちの1つに限定されなくてもよく、各構成要素の複数のインスタンスが、コンピューティングデバイス100の様々な構成の中に含まれてもよい。
【0030】
図2は、様々な実施形態を実装するのに適した例示的なSoCを示す。
図1および
図2を参照すると、SoC200(例えば、
図1のSoC102)は、任意の数および組合せのプロセッサ202(例えば、
図1のCPU104、プロセッサ124)、L3キャッシュ216(例えば、
図1のメモリ106)、システムキャッシュ218(例えば、
図1のメモリ106)、および/またはシステムメモリ224(例えば、
図1のメモリ106)を含む、構成要素の様々な組合せを含むことができる。
【0031】
プロセッサ202は、任意の数および組合せのプロセッサコア204a、204b、204c、206a、206b、206cを含んでもよい。例えば、マルチコアプロセッサ202は、複数の同種または異種のプロセッサコア204a、204b、204c、206a、206b、206cを有することができる。同種のマルチコアプロセッサは、複数の同種のプロセッサコアを含み得る。マルチコアプロセッサ202のプロセッサコア204a、204b、204c、206a、206b、206cが同じ目的のために構成することができ、同じまたは同様の性能特性を有することができるという点で、プロセッサコア204a、204b、204c、206a、206b、206cは、同種であってもよい。例えば、マルチコアプロセッサ202は、汎用プロセッサであってもよく、プロセッサコア204a、204b、204c、206a、206b、206cは、同種の汎用プロセッサコアであってもよい。別の例として、マルチコアプロセッサ202は、グラフィックス処理ユニットまたはデジタル信号プロセッサであってもよく、プロセッサコア204a、204b、204c、206a、206b、206cはそれぞれ、同種のグラフィックスプロセッサコアまたはデジタル信号プロセッサコアであってもよい。
【0032】
異種のマルチコアプロセッサは、複数の異種のプロセッサコアを含み得る。マルチコアプロセッサ202のプロセッサコア204a、204b、204c、206a、206b、206cが異なる目的のために構成することができ、かつ/または異なる性能特性を有することができるという点で、プロセッサコア204a、204b、204c、206a、206b、206cは、異種であってもよい。そのような異種プロセッサコアの不均質性は、異なる命令セットアーキテクチャ、パイプライン、動作周波数などを含むことができる。そのような異種プロセッサコアの例としては、より低速で低電力のプロセッサコアをより強力かつ電力を消費するプロセッサコアと結合することができる、「big.LITTLE」アーキテクチャとして知られるものを挙げることができる。
【0033】
プロセッサコア204a、204b、204c、206a、206b、206cは、プロセッサコアクラスタ212、214として一緒にグループ化することができる。一般に、プロセッサコアクラスタ212、214は、各プロセッサコアクラスタ212、214内に同種のプロセッサコアを含むことができる。プロセッサコアクラスタ212、214は、他のプロセッサコアクラスタ212、214と同種または異種であってもよい。例えば、プロセッサコアクラスタ212、214は、互いに同じプロセッサコアを有する同種であってもよい。別の例として、プロセッサコアクラスタ212、214は、互いに異なるプロセッサコアを有する異種であってもよい。説明を容易にするために、「プロセッサ」、「プロセッサコア」、および「プロセッサコアクラスタ」という用語は、本明細書で互換的に使用されることがある。
【0034】
プロセッサ202は、任意の数および組合せのL2キャッシュ208a、208b、208c、210a、210b、210c(例えば、
図1のメモリ106)をさらに含んでもよい。例えば、各プロセッサコアクラスタ212、214および/または各プロセッサコア204a、204b、204c、206a、206b、206cは、専用L2キャッシュ208a、208b、208c、210a、210b、210cを有してもよい。各L2キャッシュ208a、208b、208c、210a、210b、210cは、指定されたプロセッサコアクラスタ212、214および/またはプロセッサコア204a、204b、204c、206a、206b、206cによる読み取りおよび/または書き込みアクセスのために指定することができる。L2キャッシュ208a、208b、208c、210a、210b、210cは、データおよび/または命令を記憶し、記憶されたデータおよび/または命令を指定されたプロセッサコアクラスタ212、214および/またはプロセッサコア204a、204b、204c、206a、206b、206cに利用可能にすることができる。L2キャッシュ208a、208b、208c、210a、210b、210cは、
図1のメモリ106を参照して本明細書で説明したような揮発性メモリを含むことができる。
【0035】
L3キャッシュ216、システムキャッシュ218、およびシステムメモリ224は、プロセッサコアクラスタ212、214および/またはプロセッサコア204a、204b、204c、206a、206b、206cによって共有され、それらによる読み取りおよび/または書き込みアクセスのために構成することができる。L3キャッシュ216、システムキャッシュ218、およびシステムメモリ224は、データおよび/または命令を記憶し、記憶されたデータおよび/または命令をプロセッサコアクラスタ212、214および/またはプロセッサコア204a、204b、204c、206a、206b、206cに利用可能にすることができる。L3キャッシュ216、システムキャッシュ218、および/またはシステムメモリ224は、プロセッサ202に入力され、かつ/またはそこから出力されるデータおよび/または命令のためのバッファとして機能することができる。L3キャッシュ216、システムキャッシュ218、およびシステムメモリ224は、
図1のメモリ106を参照して本明細書で説明したような揮発性メモリを含むことができる。
【0036】
プロセッサ202は、L2キャッシュ208a、208b、208c、210a、210b、210c、L3キャッシュ216、および/またはシステムキャッシュ218へのメモリアクセスを管理するように構成されるメモリコントローラ220を含んでもよい。メモリコントローラは、プロセッサコア204a、204b、204c、206a、206b、206cからメモリアクセスコマンドを受信し、キャッシュ208a、208b、208c、210a、210b、210c、216、218へのメモリアクセスを許可し、実施し、かつ/または拒否することができる。メモリコントローラ220は、キャッシュメンテナンス、キャッシュコヒーレンシ、および/またはキャッシュ置換ポリシーを実施するように構成することができる。メモリコントローラ220は、仮想キャッシュアドレス変換を実施するように構成することができる。
【0037】
プロセッサ202は、少量のデータを一時的に記憶するように構成することができる任意の数および組合せのレジスタ222を含んでもよい。レジスタ222は、ハードウェアにおいて、および/またはキャッシュ208a、208b、208c、210a、210b、210c、216、218内のメモリ位置として実装することができる。任意の数のレジスタを、レジスタ222に関連付けられた特定の目的のためにデータを個別におよび/または組み合わせて記憶するように構成することができる。例えば、レジスタは、レジスタ222に関連付けられた特定の目的に関する情報をプロセッサ202に示すように構成されるデータを記憶することができる。別の例として、レジスタ222のアレイは、任意の数および組合せのビットがレジスタ222のアレイに関連付けられた特定の目的に関する情報をプロセッサ202に示すことができる、データベクトルを記憶することができる。
【0038】
Soc200および/またはプロセッサ202の構成要素の一部または全部は、依然として様々な実施形態の機能をサポートしながら、異なるように配置され、かつ/または組み合わされてもよい。例えば、メモリコントローラ220は、プロセッサ202とは別個のSoC200の構成要素であってもよい。
【0039】
図3Aおよび
図3Bは、様々な実施形態による、基準認識キャッシュ置換ポリシーの一実施例のための構成要素およびシグナリングを示す。
図1~
図3を参照すると、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214)は、システムキャッシュ218にメモリアクセスコマンドを発行することができるクライアント300を実装することができる。例えば、プロセッサは、クライアント300であってもよい。別の例として、プロセッサは、オペレーティングシステムおよび/またはアプリケーションなどの、クライアント300であってもよいソフトウェアプログラムのプロセスを実行することができる。
【0040】
図3Aに示す実施例では、クライアント300は、メモリコントローラ220によって受信することができる、システムキャッシュへの書き込みメモリコマンドなどのメモリアクセスコマンド302を発行することができる。クライアント300はまた、レジスタ222内にステーリングカウンタ更新値を設定することができる、1つまたは複数のレジスタ222へのレジスタ書き込み304を実施することができる。レジスタ222は、基準認識キャッシュ置換ポリシーのためのステーリングカウンタ更新機能に関連付けられてもよい。レジスタ222に記憶された値は、基準認識キャッシュ置換ポリシーによる使用のために構成されるステーリングカウンタ(図示せず)を更新すべきかどうかをメモリコントローラ220に示すように構成することができる。例えば、レジスタ書き込み304は、ステーリングカウンタ更新値を、ステーリングカウンタを更新するようにメモリコントローラ220に示すように構成される「1」値に設定することができる。クライアント300は、基準認識キャッシュ置換ポリシーのための基準に基づいて、レジスタ書き込み304を実施することができる。様々な実施形態では、基準は、時間ベースの基準、イベントベースの基準、または別のタイプの基準であってもよい。時間ベースの基準の例として、クライアント300は、期間、プロセッサクロックサイクルの数、実行された命令の数などに基づいてレジスタ書き込み304を実施することができる。イベントベースの基準の例として、クライアント300は、タスク、プロセス、および/もしくはアプリケーションの完了、一時停止、および/もしくは終了、タスク、プロセス、および/もしくはアプリケーションの開始、再開、および/もしくはローディング、割込み信号、エラー、ならびに/または障害信号などに基づいてレジスタ書き込み304を実施することができる。他の基準の例として、クライアント300は、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202)、メモリ(例えば、
図1のメモリ106、114、
図2のキャッシュ208a、208b、208c、210a、210b、210c、216、218)、周辺デバイス(例えば、
図1の周辺デバイス122)、通信構成要素(例えば、通信構成要素112)などの電力状態、セキュリティ状態、可用性状態などの特定の状態または状態の変化に基づいてレジスタ書き込み304を実施することができる。別の例として、クライアント300は、フレーム時間境界に基づく圧縮マルチメディアデータのフレーム、圧縮マルチメディアデータのフレーム内の色フィールドなどのデータの一部分の開始および/または終了に基づいてレジスタ書き込み304を実施することができる。
【0041】
書き込みメモリコマンド302を受信したことに応じて、メモリコントローラ220は、ステーリングカウンタを更新すべきかどうかを判定するためにレジスタ222を読み取ることができる(306)。メモリコントローラ220は、レジスタ222の値を取り出し、レジスタからの値がステーリングカウンタを更新するようにメモリコントローラ220に示すかどうかを判定することができる。
【0042】
レジスタ222の値がステーリングカウンタを更新するようにメモリコントローラ220に示すと判定したことに応じて、メモリコントローラ220は、ステーリングカウンタを更新することができる(308)。ステーリングカウンタは、メモリコントローラ220によって読み取りおよび書き込みアクセス可能であり得るメモリ(例えば、
図1のメモリ106、メモリ114、
図2のL2キャッシュ208a、208b、208c、210a、210b、210c、L3キャッシュ216、
図2および
図3のシステムキャッシュ218、レジスタ222)に記憶された値を含むことができる。メモリコントローラ220は、ステーリングカウンタをインクリメントおよび/またはデクリメントすることによってなど、任意の数学演算、アルゴリズム演算、ヒューリスティック演算などによって、ステーリングカウンタを更新してもよい。レジスタ222の値がステーリングカウンタを更新しないようにメモリコントローラ220に示すと判定したことに応じて、メモリコントローラ220は、ステーリングカウンタを更新すること(308)を取り止めることができる。
【0043】
メモリ制御220は、システムキャッシュ218内の位置のデータのローカルカウンタを読み取ることができる(310)。ローカルカウンタの値は、前の書き込みメモリコマンドに応じてシステムキャッシュ218に関連データが書き込まれることに関連して記憶されたステーリングカウンタの値を含むことができる。一実施例では、メモリコントローラ220は、書き込みメモリコマンドによってターゲットにされたメモリ位置のキャッシュタグとともに記憶された1つまたは複数のローカルカウンタ値を読み取ることができる。別の実施例では、メモリコントローラ220は、システムキャッシュ218のブロック、パーティション、全体、および/または任意の他の部分内の位置に対する1つまたは複数のローカルカウンタ値を読み取ることができる。
【0044】
メモリコントローラ220は、ローカルカウンタの取り出された値を使用して、書き込みメモリコマンドを実施するときに基準認識キャッシュ置換ポリシーに従ってシステムキャッシュ218のどの部分を置き換えるべきかを判定するのを助けることができる。動作312において、メモリコントローラ220は、置換値を計算し、置換値とステーリング閾値とを比較することができる。例えば、メモリコントローラ220は、算術演算を使用して、ローカルカウンタの値とステーリングカウンタ値とを使用して置換値を生成することができる。例えば、メモリコントローラ220は、ステーリングカウンタの値からローカルカウンタの値を減算して、置換値を判定することができる。メモリコントローラ220は、置換値とステーリング閾値とを比較して、ローカルカウンタ値に関連付けられたデータを置き換えるかどうかを判定することができる。ステーリング閾値は、事前構成される値であってもよい。例えば、ステーリング閾値は、基準認識キャッシュ置換ポリシーに基づいて事前構成することができる。別の例として、ステーリング閾値は、システムキャッシュ218のサイズ、状態、使用量、可用性などに基づいて事前構成することができる。別の例として、ステーリング閾値は、プロセッサおよび/またはコンピューティングデバイス(例えば、
図1のコンピューティングデバイス100)の状態、使用量、電力利用可能性などに基づいて事前構成することができる。別の例として、ステーリング閾値は、クライアント300によって実行される、かつ/または実行されたタスク、プロセス、および/またはアプリケーションに基づいて事前構成することができる。
【0045】
置換値とステーリング閾値との比較の結果は、基準認識キャッシュ置換ポリシーがローカルカウンタ値に関連付けられたデータを置き換えるべきかどうかをメモリコントローラ220に示すことができる。例えば、置換値がステーリング閾値以上であることに応じて、メモリコントローラ220は、基準認識キャッシュ置換ポリシーを実施して、ローカルカウンタ値に関連付けられたデータを書き込みメモリコマンドのデータと置き換えることができる。メモリコントローラ220は、ローカルカウンタに関連付けられたデータを記憶するシステムキャッシュ218内の位置に書き込みメモリコマンドのデータを書き込む(314)ことによって、ローカルカウンタ値に関連付けられたデータを置き換えることができる。そうでない場合、メモリコントローラ220は、書き込みメモリコマンドのデータをシステムキャッシュ218内の他の位置に書き込むことができる(314)。メモリコントローラ220はまた、システムキャッシュ218に書き込まれた書き込みメモリコマンドのデータに関連して、システムキャッシュ218にローカルカウンタとしてステーリングカウンタの値を書き込むことができる(316)。例えば、メモリコントローラ220は、システムキャッシュ218に書き込まれた書き込みメモリコマンドのデータに関連付けられたシステムキャッシュ218内のタグ位置にステーリングカウンタの値を書き込むことができる(316)。
【0046】
図3Bに示す実施例では、クライアント300は、メモリコントローラ220によって受信することができる、システムキャッシュへの読み取りメモリコマンドなどのメモリアクセスコマンド302を発行することができる。クライアント300はまた、レジスタ222内にステーリングカウンタ更新値を設定することができる、1つまたは複数のレジスタ222へのレジスタ書き込み304を実施することができる。読み取りメモリコマンド302を受信したことに応じて、メモリコントローラ220は、ステーリングカウンタを更新すべきかどうかを判定するためにレジスタ222を読み取ることができる(306)。レジスタ222の値がステーリングカウンタを更新するようにメモリコントローラ220に示すと判定したことに応じて、メモリコントローラ220は、ステーリングカウンタを更新することができる(308)。メモリコントローラ220は、ローカルカウンタに関連付けられ、かつ読み取りメモリコマンドによってターゲットにされたデータを記憶するシステムキャッシュ218内の位置におけるデータを読み出すこと(315)によって、ローカルカウンタ値に関連付けられたデータを読み取ることができる。メモリコントローラ220はまた、読み取りメモリコマンドによってターゲットにされたシステムキャッシュ218内の位置におけるデータに関連して、システムキャッシュ218にローカルカウンタとしてステーリングカウンタの値を書き込むことができる(317)。例えば、メモリコントローラ220は、読み取りメモリコマンドによってターゲットにされたシステムキャッシュ218内の位置におけるデータに関連付けられたシステムキャッシュ218内のタグ位置にステーリングカウンタの値を書き込むことができる(317)。
【0047】
図3Aの信号302、304、308、310、312、314、316および
図3Bの信号302、304、308、315、317の順序は、例に過ぎず、信号302、304、308、310、312、314、315、316、317の順序は、異なる順序で実行されてもよい。例えば、信号302および304の順序、信号314および316の順序、ならびに/または信号315および317の順序は、逆にすることができる。別の例として、信号302および304、信号314および316、ならびに/または信号315および317は、同時に送信することができる。
【0048】
図4は、一実施形態による、基準認識キャッシュ置換ポリシーを実施するためのメモリフローの一実施例を示す。
図1~
図4を参照すると、メモリコントローラ(例えば、
図2および
図3のメモリコントローラ220)は、システムキャッシュ400(例えば、
図2および
図3のシステムキャッシュ218)内に書き込みメモリコマンド410a、410b、410cを実施し、ステーリングカウンタ402のステーリングカウンタ更新412a、412bを実施することができる。書き込みメモリコマンド410a、410b、410cは、コンピューティングデバイス(例えば、
図1のコンピューティングデバイス100)のクライアント(例えば、クライアント300)によって発行することができる。
【0049】
書き込みメモリコマンド410aは、メモリコントローラによって受信され、システムキャッシュ400にデータを書き込むようにメモリコントローラに促すことができる。書き込みメモリコマンド410aを実施するときのステーリングカウンタ402は、「1」であってもよい。書き込みメモリコマンド410aのデータは、データが書き込まれるシステムキャッシュ内の位置404に関連付けられたローカルカウンタとしてのステーリングカウンタ値「1」とともにシステムキャッシュ400に書き込まれてもよい。
【0050】
別の書き込みメモリコマンド410bは、メモリコントローラによって受信されてもよく、システムキャッシュ400にデータを書き込むようにメモリコントローラに促すことができ、ステーリングカウンタは、レジスタ(例えば、
図2および
図3のレジスタ222)からメモリコントローラによって読み取られたレジスタ値に応じて更新することができる(412a)。レジスタ値は、書き込みメモリコマンド410bとともにクライアントによって実施されるレジスタ書き込み(例えば、
図3のレジスタ書き込み304)によって設定することができる。書き込みメモリコマンド410cを実施するときのステーリングカウンタ402は、「2」であってもよい。書き込みメモリコマンド410bのデータは、データが書き込まれるシステムキャッシュ内の位置406に関連付けられたローカルカウンタとしてのステーリングカウンタ値「2」とともにシステムキャッシュ400に書き込まれてもよい。この実施例では、位置406は、書き込みメモリコマンド410bのデータおよびローカルカウンタが位置406に書き込まれる前に、オープン位置であってもよい。書き込みメモリコマンド410bは、置き換えられるべきデータのシステムキャッシュ400をチェックするように基準認識キャッシュ置換ポリシーに促すことができるが、置換は、システムキャッシュ400内に実施されなくてもよい。置換は、基準認識キャッシュ置換ポリシーの基準を満たさないデータに対して実施されなくてもよい。例えば、基準認識キャッシュ置換ポリシーは、データが書き込まれたシステムキャッシュ400内の位置404のためのローカルカウンタ(この実施例では「1」)と、書き込みメモリコマンド410bのときのステーリングカウンタ402(この実施例では「2」)との間の差がステーリング閾値未満であり得るかどうかを判定することができる。
【0051】
別の書き込みメモリコマンド410cは、メモリコントローラによって受信されてもよく、システムキャッシュ400にデータを書き込むようにメモリコントローラに促すことができ、ステーリングカウンタは、メモリコントローラによって読み取られたレジスタ値に応じて更新することができる(412b)。レジスタ値は、書き込みメモリコマンド410cとともにクライアントによって実施されるレジスタ書き込み(例えば、
図3のレジスタ書き込み304)によって設定することができる。書き込みメモリコマンド410cを実施するときのステーリングカウンタ402は、「3」であってもよい。書き込みメモリコマンド410cのデータは、データが書き込まれるシステムキャッシュ内の位置404に関連付けられたローカルカウンタとしてのステーリングカウンタ値「3」とともにシステムキャッシュ400に書き込まれてもよい。この実施例では、位置404は、書き込みメモリコマンド410cのデータおよびローカルカウンタが位置404に書き込まれる前に、占有位置であってもよい。書き込みメモリコマンド410bは、置き換えられるべきデータのシステムキャッシュ400をチェックするように基準認識キャッシュ置換ポリシーに促すことができる。この実施例では、置換は、システムキャッシュ400内で、いくつかの位置404に対して実施され、他の位置406に対しては実施されなくてもよい。置換は、基準認識キャッシュ置換ポリシーの基準を満たさないデータに対して実施されなくてもよい。例えば、基準認識キャッシュ置換ポリシーは、データが書き込まれたシステムキャッシュ400内の位置406のためのローカルカウンタ(この実施例では「2」)と、書き込みメモリコマンド410cのときのステーリングカウンタ402(この実施例では「3」)との間の差がステーリング閾値未満であり得るかどうかを判定することができる。置換は、基準認識キャッシュ置換ポリシーの基準を満たすデータに対して実施されてもよい。例えば、基準認識キャッシュ置換ポリシーは、データが書き込まれたシステムキャッシュ400内の位置404のためのローカルカウンタ(この実施例では「1」)と、書き込みメモリコマンド410cのときのステーリングカウンタ402(この実施例では「3」)との間の差がステーリング閾値以上であり得るかどうかを判定することができる。メモリコントローラは、位置404のためのデータおよびローカルカウンタを書き込みメモリコマンド410cのためのデータおよびステーリングカウンタの値と置き換えることができる。
【0052】
図5は、一実施形態による、基準認識キャッシュ置換ポリシーを実施するためのメモリフローの一実施例を示す。
図1~
図5を参照すると、メモリコントローラ(例えば、
図2および
図3のメモリコントローラ220)は、システムキャッシュ(例えば、
図2および
図3のシステムキャッシュ218、
図4のシステムキャッシュ400)内に書き込みメモリコマンド(書き込みN)および読み取りメモリコマンド(読み取りN)を実施することができる。書き込みメモリコマンドおよび読み取りメモリコマンドは、コンピューティングデバイス(例えば、
図1のコンピューティングデバイス100)のプロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)(例えば、
図5のプロセッサ1およびプロセッサ2)によって発行することができる。
【0053】
プロセッサ1からの書き込み0書き込みメモリコマンドの時間において、ステーリングカウンタは、「0」の値を有することができる。書き込み0のデータは、書き込み0のデータに関連付けられたローカルカウンタとしてのステーリングカウンタ値「0」とともにシステムキャッシュに書き込まれてもよい。
【0054】
書き込み0の後に、プロセッサ2からの読み取り0読み取りメモリコマンドが続いてもよい。メモリコントローラは、読み取り0によってターゲットとされたシステムキャッシュ内のデータを読み出してもよい。例えば、メモリコントローラは、「0」のローカルカウンタ値に関連付けられたシステムキャッシュ内の位置におけるデータを読み出すことができる。
【0055】
読み取り0の後に、プロセッサ1からの書き込み1書き込みメモリコマンドが続いてもよい。ステーリングカウンタは、更新されていてもよく、書き込み1のときに「1」の値を有してもよい。書き込み1は、システムキャッシュ内のデータに関連付けられたローカルカウンタをステーリング閾値と比較することによって、古いデータをチェックするように基準認識キャッシュ置換ポリシーに促すことができる。例えば、メモリコントローラは、システムキャッシュからローカルカウンタを読み取り、ステーリングカウンタの値とローカルカウンタの値との間の差を計算し、その差をステーリング閾値と比較することができる。差がステーリング閾値未満であることに応じて、基準認識キャッシュ置換ポリシーは、書き込み1の実施例のように、システムキャッシュ内のローカルカウンタに関連付けられたデータを置き換えないと判定することができる。この実施例では、書き込み1のデータは、書き込み1のデータに関連付けられたローカルカウンタとしてのステーリングカウンタ値「2」とともに、システムキャッシュ内のオープン位置に書き込まれてもよい。
【0056】
書き込み1の後に、プロセッサ1からの第2の(すなわち、書き込み2)書き込みメモリコマンドが続いてもよい。ステーリングカウンタは、更新されていてもよく、書き込み2のときに「2」の値を有してもよい。書き込み2は、システムキャッシュ内のデータに関連付けられたローカルカウンタをステーリング閾値と比較することによって、古いデータをチェックするように基準認識キャッシュ置換ポリシーに促すことができる。例えば、メモリコントローラは、システムキャッシュからローカルカウンタを読み取り、ステーリングカウンタの値とローカルカウンタの値との間の差を計算し、その差をステーリング閾値と比較することができる。差がステーリング閾値未満であることに応じて、基準認識キャッシュ置換ポリシーは、システムキャッシュ内のローカルカウンタに関連付けられたデータを置き換えないと判定することができる。差がステーリング閾値以上であることに応じて、基準認識キャッシュ置換ポリシーは、システムキャッシュ内のローカルカウンタに関連付けられたデータを置き換えると判定することができる。この実施例では、ステーリングカウンタとローカルカウンタとの間の差がステーリング閾値以上であり得るので、値「0」を有するローカルカウンタに関連付けられたデータは、古いと判定することができる。結果として、基準認識キャッシュ置換ポリシーは、値「0」を有するローカルカウンタに関連付けられたデータを置き換えると判定することができる。ステーリングカウンタとローカルカウンタとの間の差がステーリング閾値未満であるので、値「1」を有するローカルカウンタに関連付けられたデータは、古くないと判定することができる。結果として、基準認識キャッシュ置換ポリシーは、値「2」を有するローカルカウンタに関連付けられたデータを置き換えないと判定することができる。書き込み2のデータは、書き込み2のデータに関連付けられたローカルカウンタとしてのステーリングカウンタ値「2」とともに、システムキャッシュ内のオープン位置および「0」のローカルカウンタ値に関連付けられたデータで占有された位置に書き込まれてもよい。
【0057】
書き込み2の後に、プロセッサ2からの読み取り1読み取りメモリコマンドが続いてもよい。メモリコントローラは、読み取り1によってターゲットとされたシステムキャッシュ内のデータを読み出してもよい。例えば、メモリコントローラは、「1」のローカルカウンタ値に関連付けられたシステムキャッシュ内の位置におけるデータを読み出すことができる。
【0058】
読み取り1の後に、プロセッサ1からの書き込み3書き込みメモリコマンドが続いてもよい。ステーリングカウンタは、更新されていてもよく、書き込み3のときに「3」の値を有してもよい。書き込み3は、システムキャッシュ内のデータに関連付けられたローカルカウンタをステーリング閾値と比較することによって、古いデータをチェックするように基準認識キャッシュ置換ポリシーに促すことができる。例えば、メモリコントローラは、システムキャッシュからローカルカウンタを読み取り、ステーリングカウンタの値とローカルカウンタの値との間の差を計算し、その差をステーリング閾値と比較することができる。差がステーリング閾値未満であることに応じて、基準認識キャッシュ置換ポリシーは、システムキャッシュ内のローカルカウンタに関連付けられたデータを置き換えないと判定することができる。差がステーリング閾値以上であることに応じて、基準認識キャッシュ置換ポリシーは、システムキャッシュ内のローカルカウンタに関連付けられたデータを置き換えると判定することができる。この実施例では、ステーリングカウンタとローカルカウンタとの間の差がステーリング閾値以上であり得るので、値「0」または「1」を有するローカルカウンタに関連付けられたデータは、古いと判定することができる。結果として、基準認識キャッシュ置換ポリシーは、値「0」または「1」を有するローカルカウンタに関連付けられたデータを置き換えると判定することができる。ステーリングカウンタとローカルカウンタとの間の差がステーリング閾値未満であり得るので、値「2」を有するローカルカウンタに関連付けられたデータは、古くないと判定することができる。結果として、基準認識キャッシュ置換ポリシーは、値「2」を有するローカルカウンタに関連付けられたデータを置き換えないと判定することができる。しかしながら、基準認識キャッシュ置換ポリシーは、システムキャッシュ内のデータのすべての置換を制御しない場合がある。例えば、システムキャッシュにデータを書き込むためのメカニズムは、特定の状況下では、基準認識キャッシュ置換ポリシーと完全に整合しなくてもよいように定義されてもよい。書き込み3のデータは、書き込み2のデータに関連付けられたローカルカウンタとしてのステーリングカウンタ値「3」とともに、「0」または「1」のローカルカウンタ値に関連付けられたデータで占有されたシステムキャッシュ内の位置に書き込まれてもよい。しかしながら、システムキャッシュにデータを書き込むためのメカニズムは、セット内のラインの数によって判定される方法でデータを書き込むことができる。したがって、「2」のローカルカウンタ値に関連付けられたデータなどの、基準認識キャッシュ置換ポリシーの下で古くないデータを、書き込み3によって置き換えることができる状況が生じ得る。
【0059】
書き込み3の後に、プロセッサ2からの読み取り2読み取りメモリコマンドが続いてもよい。メモリコントローラは、読み取り2によってターゲットとされたシステムキャッシュ内のデータを読み出してもよい。例えば、メモリコントローラは、「2」のローカルカウンタ値に関連付けられたシステムキャッシュ内の位置におけるデータを読み出すことができる。読み取り2によってターゲットにされたデータは、書き込み3によってシステムキャッシュに書き込まれたデータによって部分的に置き換えられてもよいが、nMRU(not-most recently used)および容量ベースのFIFO(first-in,first-out)などの他のキャッシュ置換ポリシーとは対照的に、基準認識キャッシュ置換ポリシーは、システムキャッシュ内のデータに対してより高いヒット率(またはより低いミス率)を可能にする。
【0060】
図6は、いくつかの実施形態による、基準認識キャッシュ置換ポリシーを実施する方法600を示す。
図1~
図6を参照すると、方法600は、コンピューティングデバイス(例えば、
図1のコンピューティングデバイス100)において、ハードウェアにおいて、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)において実行されるソフトウェア(例えば、
図3のクライアント300)において、またはソフトウェアで構成されるプロセッサと、様々なメモリ/キャッシュ(例えば、
図1のメモリ106、メモリ114、
図2のL2キャッシュ208a、208b、208c、210a、210b、210c、L3キャッシュ216、
図2および
図3のシステムキャッシュ218、レジスタ222、
図4のシステムキャッシュ400)および様々なメモリ/キャッシュコントローラ(例えば、
図2および
図3のメモリコントローラ220)などの他の個々の構成要素を含む専用ハードウェアとの組合せにおいて実装することができる。様々な実施形態において可能な代替構成を包含するために、方法600を実装するハードウェアは、本明細書では「クライアント」および「メモリ制御デバイス」と呼ばれる。
【0061】
ブロック602において、クライアントは、システムキャッシュ(例えば、
図2および
図3のシステムキャッシュ218、
図4のシステムキャッシュ400)をターゲットとする書き込みメモリコマンドを送信することができる。ブロック604において、クライアントは、システムキャッシュ内のデータのステーリングカウンタを更新するために、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)にシグナリングすることができる。プロセッサへのシグナリングは、例えば、レジスタ(例えば、
図2および
図3のレジスタ222)へのレジスタ書き込み、プロセッサへの直接割込みなどを含む、様々なタイプの信号通信を使用して達成することができる。レジスタは、基準認識キャッシュ置換ポリシーのためのステーリングカウンタ更新機能に関連付けられてもよい。レジスタへの書き込みは、ステーリングカウンタを更新すべきかどうかをメモリ制御デバイスに示すように構成されるレジスタの値を設定することができる。いくつかの実施形態では、ブロック602において書き込みメモリコマンドを送信し、ブロック604においてシステムキャッシュ内のデータのステーリングカウンタを更新するためにプロセッサにシグナリングするクライアントは、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)、ならびに/またはオペレーティングシステムおよび/もしくはアプリケーションなどのソフトウェアプログラム(例えば、
図3のクライアント300)であってもよい。
【0062】
ブロック606において、メモリ制御デバイスは、書き込みメモリコマンドを受信してもよい。メモリ制御デバイスは、システムキャッシュのためのメモリアクセス、キャッシュメンテナンス、キャッシュコヒーレンシ、および/またはキャッシュ置換ポリシーを管理、制御、および/または実施するように構成することができる。ブロック608において、メモリ制御デバイスは、書き込みメモリコマンドのデータをシステムキャッシュに書き込むための基準認識キャッシュ置換ポリシーを実施することができる。ブロック606において書き込みメモリコマンドを受信し、ブロック608において基準認識キャッシュ置換ポリシーを実施するメモリ制御デバイスは、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)および/またはメモリコントローラ(例えば、
図2および
図3のメモリコントローラ220)であってもよい。
【0063】
図7は、いくつかの実施形態による、ローカルカウンタの値に基づいてデータを置き換える基準認識キャッシュ置換ポリシーを実施する方法700を示す。
図1~
図7を参照すると、方法700は、コンピューティングデバイス(例えば、
図1のコンピューティングデバイス100)において、ハードウェアにおいて、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)において実行されるソフトウェア(例えば、
図3のクライアント300)において、またはソフトウェアで構成されるプロセッサと、様々なメモリ/キャッシュ(例えば、
図1のメモリ106、メモリ114、
図2のL2キャッシュ208a、208b、208c、210a、210b、210c、L3キャッシュ216、
図2および
図3のシステムキャッシュ218、レジスタ222、
図4のシステムキャッシュ400)および様々なメモリ/キャッシュコントローラ(例えば、
図2および
図3のメモリコントローラ220)などの他の個々の構成要素を含む専用ハードウェアとの組合せにおいて実装することができる。様々な実施形態において可能な代替構成を包含するために、方法700を実装するハードウェアは、本明細書では「メモリ制御デバイス」と呼ばれる。方法700のブロック702~714は、
図6を参照して説明した方法600のブロック608において実行することができる動作をさらに詳細に説明している。
【0064】
ブロック702において、メモリ制御デバイスは、システムキャッシュ(例えば、
図2および
図3のシステムキャッシュ218、ならびに
図4のシステムキャッシュ400)内のデータのステーリングカウンタを更新するための信号を受信することができる。例えば、メモリ制御デバイスは、システムキャッシュ内のデータのステーリングカウンタを更新するために、レジスタ(例えば、
図2および
図3のレジスタ222)を読み取り、直接割込みを受信することなどができる。レジスタは、基準認識キャッシュ置換ポリシーのためのステーリングカウンタ更新機能に関連付けられてもよく、ステーリングカウンタを更新すべきかどうかをメモリ制御デバイスに示すように構成される値を有することができる。レジスタの値は、例えば、方法600(
図6)のブロック604に関して説明したように、システムキャッシュ内のデータのステーリングカウンタを更新するためにレジスタに書き込むことによって、設定することができる。メモリ制御デバイスは、ステーリングカウンタを更新するためのレジスタの値を読み取ることができる。いくつかの実施形態では、ブロック702においてシステムキャッシュ内のデータのステーリングカウンタを更新するための信号を受信するメモリ制御デバイスは、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)および/またはメモリコントローラ(例えば、
図2および
図3のメモリコントローラ220)であってもよい。
【0065】
任意選択の判定ブロック704において、メモリ制御デバイスは、ブロック702において読み取られたレジスタ値を解釈して、メモリ制御デバイスがステーリングカウンタを更新すべきであることをレジスタ値が示すかどうかを判定することができる。レジスタに記憶された値は、メモリ制御デバイスにステーリングカウンタを更新すべきかどうかを示すように構成することができる。例えば、レジスタ値は、ステーリングカウンタが更新されるべきであることをメモリ制御デバイスに示すために「1」値に設定され、ステーリングカウンタが更新されるべきではないことをメモリ制御デバイスに示すために「0」値に設定されてもよく、またはその逆であってもよい。いくつかの実施形態では、メモリ制御デバイスは、ステーリングカウンタを更新するためのレジスタの値を読み取ることができる。いくつかの実施形態では、任意選択の判定ブロック704において、レジスタ値がメモリ制御デバイスにステーリングカウンタを更新することを示すかどうかを判定するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0066】
ブロック702において、システムキャッシュ内のデータのステーリングカウンタを更新するための信号を受信した後に、またはレジスタ値がメモリ制御デバイスにステーリングカウンタを更新することを示すと判定したこと(すなわち、任意選択の判定ブロック704=「はい」)に応じて、メモリ制御デバイスは、ブロック706においてステーリングカウンタを更新することができる。いくつかの実施形態では、ブロック706においてステーリングカウンタを更新することは、データがシステムキャッシュに書き込まれるときに(すなわち、そのときに)実行することができる。ステーリングカウンタは、メモリ制御デバイスによって読み取りおよび書き込みアクセス可能であり得るメモリ(例えば、
図1のメモリ106、メモリ114、
図2のL2キャッシュ208a、208b、208c、210a、210b、210c、L3キャッシュ216、
図2および
図3のシステムキャッシュ218、レジスタ222、
図4のシステムキャッシュ400)に記憶された値を含むことができる。ステーリングカウンタを更新することは、ステーリングカウンタをインクリメントおよび/またはデクリメントすることによってなど、任意の数学演算、アルゴリズム演算、ヒューリスティック演算などによって実施することができる。いくつかの実施形態では、ブロック706においてステーリングカウンタを更新するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0067】
レジスタ値がステーリングカウンタを更新しないことをメモリ制御デバイスに示すと判定したこと(すなわち、任意選択の判定ブロック704=「いいえ」)に応じて、またはブロック706においてステーリングカウンタを更新した後に、メモリ制御デバイスは、ブロック708においてローカルカウンタに関連付けられたデータに対する置換値を計算することができる。いくつかの実施形態では、ブロック708においてローカルカウンタに関連付けられたデータに対する置換値を計算するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。ローカルカウンタは、前の書き込みメモリコマンドに応じてシステムキャッシュに書き込まれたデータに関連して記憶されたステーリングカウンタの値を含むことができる。一実施例では、メモリ制御デバイスは、
図6を参照して説明した方法600のブロック606において受信された書き込みメモリコマンドによってターゲットにされたメモリ位置のキャッシュタグとともに記憶された1つまたは複数のローカルカウンタ値を読み取ることができる。別の実施例では、メモリ制御デバイスは、システムキャッシュのブロック、パーティション、全体、および/または任意の他の部分内の位置に対する1つまたは複数のローカルカウンタ値を読み取ることができる。
【0068】
ステーリング閾値は、事前構成される値であってもよい。例えば、ステーリング閾値は、基準認識キャッシュ置換ポリシーに基づいて事前構成することができる。別の例として、ステーリング閾値は、システムキャッシュのサイズ、状態、使用量、可用性などに基づいて事前構成することができる。別の例として、ステーリング閾値は、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)および/またはコンピューティングデバイス(例えば、
図1のコンピューティングデバイス100)の状態、使用量、電力利用可能性などに基づいて事前構成することができる。別の例として、ステーリング閾値は、タスク、プロセス、および/またはアプリケーションに基づいて事前構成することができる。
【0069】
メモリ制御デバイスは、ステーリング閾値で置換値を計算してもよい。例えば、メモリ制御デバイスは、算術演算を使用して、ローカルカウンタの値とステーリングカウンタ値とを使用して置換値を生成することができる。例えば、メモリ制御デバイスは、ステーリングカウンタの値からローカルカウンタの値を減算して、置換値を判定することができる。
【0070】
判定ブロック709において、メモリ制御デバイスは、システムキャッシュのブロック、パーティション、全体、および/または任意の他の部分内の位置におけるすべてのデータに対する置換値が同じであるかどうかを判定することができる。メモリ制御デバイスは、判定ブロック709において、ブロック708で計算された置換値を互いに比較することができる。例えば、メモリ制御デバイスは、置換値が互いに等しいかどうかを比較から判定してもよい。いくつかの実施形態では、判定ブロック709においてシステムキャッシュのブロック、パーティション、全体、および/または任意の他の部分内の位置におけるすべてのデータに対する置換値が同じであるかどうかを判定するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0071】
システムキャッシュのブロック、パーティション、全体、および/または任意の他の部分内の位置におけるすべてのデータに対する置換値が同じであると判定したこと(すなわち、判定ブロック709=「はい」)に応じて、メモリ制御デバイスは、ブロック711において、基準認識キャッシュ置換ポリシー以外のキャッシュ置換ポリシーを選択することができる。例えば、メモリ制御デバイスは、nMRU、FIFO、ランダムなどのキャッシュ置換ポリシーを選択することができる。いくつかの実施形態では、ブロック711において基準認識キャッシュ置換ポリシー以外のキャッシュ置換ポリシーを選択するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0072】
ブロック711において基準認識キャッシュ置換ポリシー以外のキャッシュ置換ポリシーを選択した後、メモリ制御デバイスは、
図6を参照して説明したように、方法600のブロック606において書き込みメモリコマンドを受信することができる。ブロック606において書き込みメモリコマンドを受信するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0073】
システムキャッシュのブロック、パーティション、全体、および/または任意の他の部分内の位置におけるすべてのデータに対する置換値が同じではないと判定したこと(すなわち、判定ブロック709=「いいえ」)に応じて、メモリ制御デバイスは、判定ブロック710において、置換値がステーリング閾値以上であるかどうかを判定することができる。メモリ制御デバイスは、ブロック708において計算された置換値とステーリング閾値とを比較して、ローカルカウンタ値に関連付けられたデータを置き換えるかどうかを判定することができる。例えば、メモリ制御デバイスは、比較から、置換値がステーリング閾値を上回る、ステーリング閾値に等しい、またはステーリング閾値以上かを判定することができる。いくつかの実施形態では、判定ブロック710において置換値がステーリング閾値以上であるかどうかを判定するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0074】
置換値がステーリング閾値以上であると判定したこと(すなわち、判定ブロック710=「はい」)に応じて、メモリ制御デバイスは、方法700(
図7)のブロック712において、方法600(
図6)のブロック606で受信された書き込みメモリコマンドのデータとステーリングカウンタの値とを置換値がステーリング閾値以上である位置でメモリに書き込むことができる。判定ブロック710における置換値とステーリング閾値との比較の結果は、基準認識キャッシュ置換ポリシーが、ブロック708において置換値を計算するために使用されたローカルカウンタ値に関連付けられたデータを置き換えるべきかどうかをメモリ制御デバイスに示すことができる。例えば、置換値がステーリング閾値以上であることに応じて、メモリ制御デバイスは、基準認識キャッシュ置換ポリシーを実施して、ローカルカウンタ値に関連付けられたデータを書き込みメモリコマンドのデータと置き換えることができる。メモリ制御デバイスは、ローカルカウンタに関連付けられたデータを記憶するシステムキャッシュ内の位置に書き込みメモリコマンドのデータを書き込むことによって、ローカルカウンタ値に関連付けられたデータを置き換えることができる。メモリ制御デバイスはまた、システムキャッシュに書き込まれた書き込みメモリコマンドのデータに関連して、システムキャッシュにローカルカウンタとしてステーリングカウンタの値を書き込むことができる。例えば、メモリ制御デバイスは、システムキャッシュに書き込まれた書き込みメモリコマンドのデータに関連付けられたシステムキャッシュ内のタグ位置にステーリングカウンタの値を書き込むことができる。いくつかの実施形態では、ブロック712において書き込みメモリコマンドのデータおよびステーリングカウンタの値を置換値がステーリング閾値以上である位置でメモリに書き込むメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0075】
置換値がステーリング閾値以上でないと判定したこと(すなわち、判定ブロック710=「いいえ」)に応じて、メモリ制御デバイスは、ブロック714において、方法600(
図6)のブロック606において受信された書き込みメモリコマンドのデータとステーリングカウンタの値とを、基準に従った位置でメモリに書き込むことができる。書き込みメモリコマンドのデータおよびステーリングカウンタの値をシステムキャッシュに書き込む場所を判定するために使用される基準は、キャッシュ配置ポリシー、キャッシュ置換ポリシー、キャッシュコヒーレンシポリシーなどの任意の既知の基準であってもよい。メモリ制御デバイスはまた、システムキャッシュに書き込まれた書き込みメモリコマンドのデータに関連して、システムキャッシュにローカルカウンタとしてステーリングカウンタの値を書き込むことができる。例えば、メモリ制御デバイスは、システムキャッシュに書き込まれた書き込みメモリコマンドのデータに関連付けられたシステムキャッシュ内のタグ位置にステーリングカウンタの値を書き込むことができる。いくつかの実施形態では、ブロック714において書き込みメモリコマンドのデータおよびステーリングカウンタの値を基準に従った位置でメモリに書き込むメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0076】
ブロック712において書き込みメモリコマンドのデータおよびステーリングカウンタの値を置換値がステーリング閾値以上である位置でメモリに書き込んだ、またはブロック714において書き込みメモリコマンドのデータおよびステーリングカウンタの値を基準に従った位置でメモリに書き込んだ後、メモリ制御デバイスは、
図6を参照して説明したように、方法600のブロック606において書き込みメモリコマンドを受信することができる。ブロック606において書き込みメモリコマンドを受信するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0077】
図8は、いくつかの実施形態による、ローカルカウンタの値に基づいてデータを置き換える基準認識キャッシュ置換ポリシーを実施する方法800を示す。
図1~
図8を参照すると、方法800は、コンピューティングデバイス(例えば、
図1のコンピューティングデバイス100)において、ハードウェアにおいて、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)において実行されるソフトウェア(例えば、
図3のクライアント300)において、またはソフトウェアで構成されるプロセッサと、様々なメモリ/キャッシュ(例えば、
図1のメモリ106、メモリ114、
図2のL2キャッシュ208a、208b、208c、210a、210b、210c、L3キャッシュ216、
図2および
図3のシステムキャッシュ218、レジスタ222、
図4のシステムキャッシュ400)および様々なメモリ/キャッシュコントローラ(例えば、
図2および
図3のメモリコントローラ220)などの他の個々の構成要素を含む専用ハードウェアとの組合せにおいて実装することができる。様々な実施形態において可能な代替構成を包含するために、方法800を実装するハードウェアは、本明細書では「メモリ制御デバイス」と呼ばれる。方法800のブロック802~814は、
図6を参照して説明した方法600のブロック608において実行することができる動作をさらに詳細に説明している。
【0078】
ブロック802において、メモリ制御デバイスは、ローカルカウンタに関連付けられたデータに対する置換値を計算することができる。いくつかの実施形態では、ブロック802においてローカルカウンタに関連付けられたデータに対する置換値を計算するメモリ制御デバイスは、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)および/またはメモリコントローラ(例えば、
図2および
図3のメモリコントローラ220)であってもよい。ローカルカウンタは、前の書き込みメモリコマンドに応じてシステムキャッシュ(例えば、
図2および
図3のシステムキャッシュ218、
図4のシステムキャッシュ400)に書き込まれたデータに関連して記憶されたステーリングカウンタの値を含むことができる。ステーリングカウンタは、メモリ制御デバイスによって読み取りおよび書き込みアクセス可能であり得るメモリ(例えば、
図1のメモリ106、メモリ114、
図2のL2キャッシュ208a、208b、208c、210a、210b、210c、L3キャッシュ216、
図2および
図3のシステムキャッシュ218、レジスタ222、
図4のシステムキャッシュ400)に記憶された値を含むことができる。一実施例では、メモリ制御デバイスは、
図6を参照して説明した方法600のブロック606において受信された書き込みメモリコマンドによってターゲットにされたメモリ位置のキャッシュタグとともに記憶された1つまたは複数のローカルカウンタ値を読み取ることができる。別の実施例では、メモリ制御デバイスは、システムキャッシュのブロック、パーティション、全体、および/または任意の他の部分内の位置に対する1つまたは複数のローカルカウンタ値を読み取ることができる。
【0079】
ステーリング閾値は、事前構成される値であってもよい。例えば、ステーリング閾値は、基準認識キャッシュ置換ポリシーに基づいて事前構成することができる。別の例として、ステーリング閾値は、システムキャッシュのサイズ、状態、使用量、可用性などに基づいて事前構成することができる。別の例として、ステーリング閾値は、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)および/またはコンピューティングデバイス(例えば、
図1のコンピューティングデバイス100)の状態、使用量、電力利用可能性などに基づいて事前構成することができる。別の例として、ステーリング閾値は、タスク、プロセス、および/またはアプリケーションに基づいて事前構成することができる。
【0080】
メモリ制御デバイスは、ステーリング閾値で置換値を計算してもよい。例えば、メモリ制御デバイスは、算術演算を使用して、ローカルカウンタの値とステーリングカウンタ値とを使用して置換値を生成することができる。例えば、メモリ制御デバイスは、ステーリングカウンタの値からローカルカウンタの値を減算して、置換値を判定することができる。
【0081】
判定ブロック803において、メモリ制御デバイスは、システムキャッシュのブロック、パーティション、全体、および/または任意の他の部分内の位置におけるすべてのデータに対する置換値が同じであるかどうかを判定することができる。この判定において、メモリ制御デバイスは、ブロック802で計算された置換値を互いに比較してもよい。例えば、メモリ制御デバイスは、置換値が互いに等しいかどうかを比較から判定してもよい。いくつかの実施形態では、判定ブロック803においてシステムキャッシュのブロック、パーティション、全体、および/または任意の他の部分内の位置におけるすべてのデータに対する置換値が同じであるかどうかを判定するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0082】
システムキャッシュのブロック、パーティション、全体、および/または任意の他の部分内の位置におけるすべてのデータに対する置換値が同じであると判定したこと(すなわち、判定ブロック803=「はい」)に応じて、メモリ制御デバイスは、ブロック805において、基準認識キャッシュ置換ポリシー以外のキャッシュ置換ポリシーを選択することができる。例えば、メモリ制御デバイスは、nMRUまたはFIFOキャッシュ置換ポリシーを選択することができる。いくつかの実施形態では、ブロック805において基準認識キャッシュ置換ポリシー以外のキャッシュ置換ポリシーを選択するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0083】
ブロック805において基準認識キャッシュ置換ポリシー以外のキャッシュ置換ポリシーを選択した後、メモリ制御デバイスは、
図6を参照して説明したように、方法600のブロック606において書き込みメモリコマンドを受信することができる。ブロック606において書き込みメモリコマンドを受信するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0084】
システムキャッシュのブロック、パーティション、全体、および/または任意の他の部分内の位置におけるすべてのデータに対する置換値が同じではないと判定したこと(すなわち、判定ブロック709=「いいえ」)に応じて、メモリ制御デバイスは、判定ブロック804において、置換値がステーリング閾値以上であるかどうかを判定することができる。メモリ制御デバイスは、ブロック802において計算された置換値とステーリング閾値とを比較して、ローカルカウンタ値に関連付けられたデータを置き換えるかどうかを判定することができる。例えば、メモリ制御デバイスは、比較から、置換値がステーリング閾値を上回る、ステーリング閾値に等しい、またはステーリング閾値以上であるかを判定することができる。いくつかの実施形態では、判定ブロック804において置換値がステーリング閾値以上であるかどうかを判定するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0085】
置換値がステーリング閾値以上であると判定したこと(すなわち、判定ブロック804=「はい」)に応じて、メモリ制御デバイスは、ブロック806において、方法600(
図6)のブロック606で受信された書き込みメモリコマンドのデータとステーリングカウンタの値とを置換値がステーリング閾値以上である位置でメモリに書き込むことができる。判定ブロック804における置換値とステーリング閾値との比較の結果は、基準認識キャッシュ置換ポリシーが、ブロック802において置換値を計算するために使用されたローカルカウンタ値に関連付けられたデータを置き換えるべきかどうかをメモリ制御デバイスに示すことができる。例えば、置換値がステーリング閾値以上であることに応じて、メモリ制御デバイスは、基準認識キャッシュ置換ポリシーを実施して、ローカルカウンタ値に関連付けられたデータを書き込みメモリコマンドのデータと置き換えることができる。メモリ制御デバイスは、ローカルカウンタに関連付けられたデータを記憶するシステムキャッシュ内の位置に書き込みメモリコマンドのデータを書き込むことによって、ローカルカウンタ値に関連付けられたデータを置き換えることができる。メモリ制御デバイスはまた、システムキャッシュに書き込まれた書き込みメモリコマンドのデータに関連して、システムキャッシュにローカルカウンタとしてステーリングカウンタの値を書き込むことができる。例えば、メモリ制御デバイスは、システムキャッシュに書き込まれた書き込みメモリコマンドのデータに関連付けられたシステムキャッシュ内のタグ位置にステーリングカウンタの値を書き込むことができる。いくつかの実施形態では、ブロック806において書き込みメモリコマンドのデータおよびステーリングカウンタの値を置換値がステーリング閾値以上である位置でメモリに書き込むメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0086】
置換値がステーリング閾値以上でないと判定したこと(すなわち、判定ブロック804=「いいえ」)に応じて、メモリ制御デバイスは、ブロック808において、方法600(
図6)のブロック606において受信された書き込みメモリコマンドのデータとステーリングカウンタの値とを、基準に従った位置でメモリに書き込むことができる。書き込みメモリコマンドのデータおよびステーリングカウンタの値をシステムキャッシュに書き込む場所を判定するために使用される基準は、キャッシュ配置ポリシー、キャッシュ置換ポリシー、キャッシュコヒーレンシポリシーなどの任意の既知の基準であってもよい。メモリ制御デバイスはまた、システムキャッシュに書き込まれた書き込みメモリコマンドのデータに関連して、システムキャッシュにローカルカウンタとしてステーリングカウンタの値を書き込むことができる。例えば、メモリ制御デバイスは、システムキャッシュに書き込まれた書き込みメモリコマンドのデータに関連付けられたシステムキャッシュ内のタグ位置にステーリングカウンタの値を書き込むことができる。いくつかの実施形態では、ブロック808において書き込みメモリコマンドのデータおよびステーリングカウンタの値を基準に従った位置でメモリに書き込むメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0087】
ブロック806において書き込みメモリコマンドのデータおよびステーリングカウンタの値を置換値がステーリング閾値以上である位置でメモリに書き込んだ、またはブロック808において書き込みメモリコマンドのデータおよびステーリングカウンタの値を基準に従った位置でメモリに書き込んだ後、またはその一部として、メモリ制御デバイスは、システムキャッシュ内のデータのステーリングカウンタを更新するための信号を受信することができる。例えば、メモリ制御デバイスは、ブロック810において、システムキャッシュ内のデータのステーリングカウンタを更新するために、レジスタ(例えば、
図2および
図3のレジスタ222)を読み取り、直接割込みを受信することなどができる。レジスタは、基準認識キャッシュ置換ポリシーのためのステーリングカウンタ更新機能に関連付けられてもよく、ステーリングカウンタを更新すべきかどうかをメモリ制御デバイスに示すように構成される値を有することができる。レジスタの値は、例えば、
図6を参照して方法600のブロック604に関して説明したように、システムキャッシュ内のデータのステーリングカウンタを更新するためにレジスタに書き込むことによって、設定することができる。メモリ制御デバイスは、ステーリングカウンタを更新するためのレジスタの値を読み取ることができる。いくつかの実施形態では、ブロック810においてシステムキャッシュ内のデータのステーリングカウンタを更新するための信号を受信するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0088】
任意選択の判定ブロック812において、メモリ制御デバイスは、レジスタ値がメモリ制御デバイスにステーリングカウンタを更新することを示すかどうかを判定することができる。レジスタに記憶された値は、メモリ制御デバイスにステーリングカウンタを更新すべきかどうかを示すように構成することができる。例えば、レジスタ値は、ステーリングカウンタ更新値を、メモリ制御デバイスにステーリングカウンタを更新することを示すように構成される「1」値、およびメモリ制御デバイスにステーリングカウンタを更新しないことを示すように構成される「0」値に設定することができ、またはその逆であってもよい。メモリ制御デバイスは、ブロック810において読み取られたレジスタ値を解釈して、レジスタ値がステーリングカウンタを更新することを示すかどうかを判定することができる。いくつかの実施形態では、メモリ制御デバイスは、ステーリングカウンタを更新するためのレジスタの値を読み取ることができる。いくつかの実施形態では、任意選択の判定ブロック812において、レジスタ値がメモリ制御デバイスにステーリングカウンタを更新することを示すかどうかを判定するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0089】
ブロック810において、システムキャッシュ内のデータのステーリングカウンタを更新するための信号を受信した後に、またはレジスタ値がメモリ制御デバイスにステーリングカウンタを更新することを示すと判定したこと(すなわち、任意選択の判定ブロック812=「はい」)に応じて、メモリ制御デバイスは、ブロック814においてステーリングカウンタを更新することができる。いくつかの実施形態では、ブロック814においてステーリングカウンタを更新することは、(例えば、ブロック806または808において)データがシステムキャッシュに書き込まれるときに(すなわち、ほぼ同時に)実行することができる。ステーリングカウンタを更新することは、ステーリングカウンタをインクリメントおよび/またはデクリメントすることによってなど、任意の数学演算、アルゴリズム演算、ヒューリスティック演算などによって実施することができる。いくつかの実施形態では、ブロック814においてステーリングカウンタを更新するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0090】
ブロック814でステーリングカウンタを更新した後、またはレジスタ値がメモリ制御デバイスにステーリングカウンタを更新しないことを示すと判定したこと(すなわち、任意選択の判定ブロック812=「いいえ」)に応じて、メモリ制御デバイスは、
図6を参照して説明したように、方法600のブロック606において書き込みメモリコマンドを受信することができる。ブロック606において書き込みメモリコマンドを受信するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0091】
図9は、いくつかの実施形態による、ローカルカウンタの値に基づいてデータを無効化することに基づいてデータを置き換える基準認識キャッシュ置換ポリシーを実施する方法900を示す。
図1~
図9を参照すると、方法900は、コンピューティングデバイス(例えば、
図1のコンピューティングデバイス100)において、ハードウェアにおいて、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)において実行されるソフトウェア(例えば、
図3のクライアント300)において、またはソフトウェアで構成されるプロセッサと、様々なメモリ/キャッシュ(例えば、
図1のメモリ106、メモリ114、
図2のL2キャッシュ208a、208b、208c、210a、210b、210c、L3キャッシュ216、
図2および
図3のシステムキャッシュ218、レジスタ222、
図4のシステムキャッシュ400)および様々なメモリ/キャッシュコントローラ(例えば、
図2および
図3のメモリコントローラ220)などの他の個々の構成要素を含む専用ハードウェアとの組合せにおいて実装することができる。様々な実施形態において可能な代替構成を包含するために、方法900を実施するハードウェアは、本明細書では「メモリ制御デバイス」と呼ばれる。方法900のブロック702~711、714、902、904は、
図6を参照して説明した方法600のブロック608における動作の一部として実行することができる動作を説明している。ブロック702~711、714は、
図7を参照して説明した方法700の同様に番号付けされたブロックと同様に実施されてもよい。
【0092】
置換値がステーリング閾値以上であると判定したこと(すなわち、判定ブロック710=「はい」)に応じて、メモリ制御デバイスは、ブロック902において、置換値がステーリング閾値以上である位置におけるデータを無効化することができる。判定ブロック710における置換値とステーリング閾値との比較の結果は、基準認識キャッシュ置換ポリシーが、ブロック708において置換値を計算するために使用されたローカルカウンタ値に関連付けられたデータを置き換えるべきかどうかをメモリ制御デバイスに示すことができる。例えば、置換値がステーリング閾値以上であることに応じて、メモリ制御デバイスは、基準認識キャッシュ置換ポリシーを実施して、ローカルカウンタ値に関連付けられたデータを書き込みメモリコマンドのデータと置き換えることができる。メモリ制御デバイスは、メモリ内のデータを無効化する既知の方法を用いてデータを無効化してもよい。例えば、メモリ制御デバイスは、ブロック708において置換値を計算するために使用されたローカルカウンタ値に関連付けられたシステムキャッシュ(例えば、
図2および
図3のシステムキャッシュ218、
図4のシステムキャッシュ400)の位置に関連付けられた有効/無効ビットの値を書き込むことができる。有効/無効ビットの値は、システムキャッシュの位置におけるデータが有効/無効であるかどうかをメモリ制御デバイスに示すように構成することができる。いくつかの実施形態では、ブロック902において置換値がステーリング閾値以上である位置におけるデータを無効化するメモリ制御デバイスは、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)および/またはメモリコントローラ(例えば、
図2および
図3のメモリコントローラ220)であってもよい。
【0093】
ブロック904において、メモリ制御デバイスは、方法600(
図6)のブロック606において受信された書き込みメモリコマンドのデータとステーリングカウンタの値とをデータが無効である位置でメモリに書き込むことができる。メモリ制御デバイスは、システムキャッシュ内の位置の有効/無効ビットを読み取って、どの位置が有効/無効であるデータを有するかを判定することができる。メモリ制御デバイスは、有効/無効ビットに関連付けられたデータを記憶するシステムキャッシュ内の位置に書き込みメモリコマンドのデータを書き込むことによって、ローカルカウンタ値に関連付けられたデータを置き換えることができる。メモリ制御デバイスはまた、システムキャッシュに書き込まれた書き込みメモリコマンドのデータに関連して、システムキャッシュにローカルカウンタとしてステーリングカウンタの値を書き込むことができる。例えば、メモリ制御デバイスは、システムキャッシュに書き込まれた書き込みメモリコマンドのデータに関連付けられたシステムキャッシュ内のタグ位置にステーリングカウンタの値を書き込むことができる。いくつかの実施形態では、ブロック904において書き込みメモリコマンドのデータおよびステーリングカウンタの値をデータが無効である位置でメモリに書き込むメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0094】
ブロック904において書き込みメモリコマンドのデータおよびステーリングカウンタの値をデータが無効である位置でメモリに書き込んだ、またはブロック714において書き込みメモリコマンドのデータおよびステーリングカウンタの値を基準に従った位置でメモリに書き込んだ後、メモリ制御デバイスは、
図6を参照して説明したように、方法600のブロック606において書き込みメモリコマンドを受信することができる。ブロック606において書き込みメモリコマンドを受信するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0095】
図10は、いくつかの実施形態による、ローカルカウンタの値に基づいてデータを無効化することに基づいてデータを置き換える基準認識キャッシュ置換ポリシーを実施する方法1000を示す。
図1~
図10を参照すると、方法1000は、コンピューティングデバイス(例えば、
図1のコンピューティングデバイス100)において、ハードウェアにおいて、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)において実行されるソフトウェア(例えば、
図3のクライアント300)において、またはソフトウェアで構成されるプロセッサと、様々なメモリ/キャッシュ(例えば、
図1のメモリ106、メモリ114、
図2のL2キャッシュ208a、208b、208c、210a、210b、210c、L3キャッシュ216、
図2および
図3のシステムキャッシュ218、レジスタ222、
図4のシステムキャッシュ400)および様々なメモリ/キャッシュコントローラ(例えば、
図2および
図3のメモリコントローラ220)などの他の個々の構成要素を含む専用ハードウェアとの組合せにおいて実装することができる。様々な実施形態において可能な代替構成を包含するために、方法1000を実装するハードウェアは、本明細書では「メモリ制御デバイス」と呼ばれる。方法1000のブロック802~805、808~814、1002、1004は、
図6を参照して説明した方法600のブロック608の一部として実行することができる動作を説明することができる。ブロック802~805、808~814は、
図8を参照して本明細書で説明した方法900の同様に番号付けされたブロックと同様に実施されてもよい。
【0096】
置換値がステーリング閾値以上であると判定したこと(すなわち、判定ブロック804=「はい」)に応じて、メモリ制御デバイスは、ブロック1002において、置換値がステーリング閾値以上である位置におけるデータを無効化することができる。判定ブロック804における置換値とステーリング閾値との比較の結果は、基準認識キャッシュ置換ポリシーがブロック802において置換値を計算するために使用されたローカルカウンタ値に関連付けられたデータを置き換えるべきかどうかをメモリ制御デバイスに示すことができる。例えば、置換値がステーリング閾値以上であることに応じて、メモリ制御デバイスは、基準認識キャッシュ置換ポリシーを実施して、ローカルカウンタ値に関連付けられたデータを書き込みメモリコマンドのデータと置き換えることができる。メモリ制御デバイスは、メモリ内のデータを無効化する既知の方法を用いてデータを無効化してもよい。例えば、メモリ制御デバイスは、ブロック802において置換値を計算するために使用されたローカルカウンタ値に関連付けられたシステムキャッシュ(例えば、
図2および
図3のシステムキャッシュ218、
図4のシステムキャッシュ400)の位置に関連付けられた有効/無効ビットの値を書き込むことができる。有効/無効ビットの値は、システムキャッシュの位置におけるデータが有効/無効であるかどうかをメモリ制御デバイスに示すように構成することができる。いくつかの実施形態では、ブロック1002において置換値がステーリング閾値以上である位置におけるデータを無効化するメモリ制御デバイスは、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)および/またはメモリコントローラ(例えば、
図2および
図3のメモリコントローラ220)であってもよい。
【0097】
ブロック1004において、メモリ制御デバイスは、方法600(
図6)のブロック606において受信された書き込みメモリコマンドのデータとステーリングカウンタの値とをデータが無効である位置でメモリに書き込むことができる。メモリ制御デバイスは、システムキャッシュ内の位置の有効/無効ビットを読み取って、どの位置が有効/無効であるデータを有するかを判定することができる。メモリ制御デバイスは、有効/無効ビットに関連付けられたデータを記憶するシステムキャッシュ内の位置に書き込みメモリコマンドのデータを書き込むことによって、ローカルカウンタ値に関連付けられたデータを置き換えることができる。メモリ制御デバイスはまた、システムキャッシュに書き込まれた書き込みメモリコマンドのデータに関連して、システムキャッシュにローカルカウンタとしてステーリングカウンタの値を書き込むことができる。いくつかの実施形態では、ブロック1004において書き込みメモリコマンドのデータに関連してシステムキャッシュにローカルカウンタとしてステーリングカウンタの値を書き込むことによってステーリングカウンタを更新することは、データがシステムキャッシュに書き込まれるときに(すなわち、ほぼ同時に)実行することができる。例えば、メモリ制御デバイスは、システムキャッシュに書き込まれた書き込みメモリコマンドのデータに関連付けられたシステムキャッシュ内のタグ位置にステーリングカウンタの値を書き込むことができる。いくつかの実施形態では、ブロック1004において書き込みメモリコマンドのデータおよびステーリングカウンタの値をデータが無効である位置でメモリに書き込むメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0098】
図11は、いくつかの実施形態による、基準認識キャッシュ置換ポリシーを実施する方法1100を示す。
図1~
図11を参照すると、方法1100は、コンピューティングデバイス(例えば、
図1のコンピューティングデバイス100)において、ハードウェアにおいて、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)において実行されるソフトウェア(例えば、
図3のクライアント300)において、またはソフトウェアで構成されるプロセッサと、様々なメモリ/キャッシュ(例えば、
図1のメモリ106、メモリ114、
図2のL2キャッシュ208a、208b、208c、210a、210b、210c、L3キャッシュ216、
図2および
図3のシステムキャッシュ218、レジスタ222、
図4のシステムキャッシュ400)および様々なメモリ/キャッシュコントローラ(例えば、
図2および
図3のメモリコントローラ220)などの他の個々の構成要素を含む専用ハードウェアとの組合せにおいて実装することができる。様々な実施形態において可能な代替構成を包含するために、方法1100を実装するハードウェアは、本明細書では「クライアント」および「メモリ制御デバイス」と呼ばれる。
【0099】
ブロック1102において、クライアントは、システムキャッシュ(例えば、
図2および
図3のシステムキャッシュ218、
図4のシステムキャッシュ400)をターゲットとする読み取りメモリコマンドを送信することができる。
【0100】
ブロック1104において、クライアントは、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)に、プロセッサがシステムキャッシュ内のデータのステーリングカウンタを更新すべきであることを示す信号を送信することができる。クライアントは、例えば、レジスタ(例えば、
図2および
図3のレジスタ222)へのレジスタ書き込み、プロセッサへの直接割込みなどを含む、様々なタイプの信号通信を使用してプロセッサにシグナリングすることができる。レジスタは、基準認識キャッシュ置換ポリシーのためのステーリングカウンタ更新機能に関連付けられてもよい。レジスタへの書き込みは、メモリ制御デバイスがステーリングカウンタを更新すべきかどうかをメモリ制御デバイスに示すように構成されるレジスタの値を設定することができる。いくつかの実施形態では、ブロック1102において読み取りメモリコマンドを送信し、ブロック1104においてシステムキャッシュ内のデータのステーリングカウンタを更新するためにプロセッサにシグナリングするクライアントは、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)、ならびに/またはオペレーティングシステムおよび/もしくはアプリケーションなどのソフトウェアプログラム(例えば、
図3のクライアント300)であってもよい。
【0101】
ブロック1106において、メモリ制御デバイスは、読み取りメモリコマンドを受信してもよい。メモリ制御デバイスは、システムキャッシュのためのメモリアクセス、キャッシュメンテナンス、キャッシュコヒーレンシ、および/またはキャッシュ置換ポリシーを管理、制御、および/または実施するように構成することができる。
【0102】
ブロック1108において、メモリ制御デバイスは、読み取りメモリコマンドのデータをシステムキャッシュに書き込むための基準認識キャッシュ置換ポリシーを実施することができる。ブロック1106において読み取りメモリコマンドを受信し、ブロック1108において基準認識キャッシュ置換ポリシーを実施するメモリ制御デバイスは、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)および/またはメモリコントローラ(例えば、
図2および
図3のメモリコントローラ220)であってもよい。
【0103】
図12は、いくつかの実施形態による、ローカルカウンタの値に基づいてデータを無効化することに基づいてデータを置き換える基準認識キャッシュ置換ポリシーを実施する方法1200を示す。
図1~
図12を参照すると、方法1200は、コンピューティングデバイス(例えば、
図1のコンピューティングデバイス100)において、ハードウェアにおいて、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)において実行されるソフトウェア(例えば、
図3のクライアント300)において、またはソフトウェアで構成されるプロセッサと、様々なメモリ/キャッシュ(例えば、
図1のメモリ106、メモリ114、
図2のL2キャッシュ208a、208b、208c、210a、210b、210c、L3キャッシュ216、
図2および
図3のシステムキャッシュ218、レジスタ222、
図4のシステムキャッシュ400)および様々なメモリ/キャッシュコントローラ(例えば、
図2および
図3のメモリコントローラ220)などの他の個々の構成要素を含む専用ハードウェアとの組合せにおいて実装することができる。様々な実施形態において可能な代替構成を包含するために、方法1200を実装するハードウェアは、本明細書では「メモリ制御デバイス」と呼ばれる。方法1200のブロック702~706、1202は、
図11を参照して説明した方法1100のブロック1108における動作の一部として実行することができる動作を説明している。ブロック702~706は、
図7を参照して説明した方法700の同様に番号付けされたブロックと同様に実施されてもよい。
【0104】
メモリ制御デバイスがステーリングカウンタを更新すべきでないことをレジスタ値が示すと判定したこと(すなわち、任意選択の判定ブロック704=「いいえ」)に応じて、またはブロック706においてステーリングカウンタを更新した後に、メモリ制御デバイスは、方法1100(
図11)のブロック1106において受信された読み取りメモリコマンドによってターゲットにされた位置でメモリからデータを読み取り、メモリにステーリングカウンタの値を書き込むことができる。メモリ制御デバイスは、読み取りメモリコマンドによってターゲットにされたシステムキャッシュ(例えば、
図2および
図3のシステムキャッシュ218、
図4のシステムキャッシュ400)内の位置におけるデータを読み取ることができる。メモリ制御デバイスはまた、システムキャッシュ内の読み取りメモリコマンドによってターゲットにされたデータに関連して、システムキャッシュにローカルカウンタとしてステーリングカウンタの値を書き込むことができる。例えば、メモリ制御デバイスは、システムキャッシュ内の読み取りメモリコマンドによってターゲットにされたデータに関連付けられたシステムキャッシュ内のタグ位置にステーリングカウンタの値を書き込むことができる。いくつかの実施形態では、ブロック1202において読み取りメモリコマンドによってターゲットにされた位置でメモリからデータを読み取り、メモリにステーリングカウンタの値を書き込むメモリ制御デバイスは、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)および/またはメモリコントローラ(例えば、
図2および
図3のメモリコントローラ220)であってもよい。
【0105】
ブロック1202において読み取りメモリコマンドによってターゲットにされた位置でメモリからデータを読み取り、メモリにステーリングカウンタの値を書き込んだ後、メモリ制御デバイスは、
図6を参照して説明したように、方法600のブロック606において書き込みメモリコマンドを受信することができる。ブロック606において書き込みメモリコマンドを受信するメモリ制御デバイスは、プロセッサおよび/またはメモリコントローラであってもよい。
【0106】
図13は、いくつかの実施形態による、ローカルカウンタの値に基づいてデータを無効化することに基づいてデータを置き換える基準認識キャッシュ置換ポリシーを実施する方法1300を示す。
図1~
図13を参照すると、方法1300は、コンピューティングデバイス(例えば、
図1のコンピューティングデバイス100)において、ハードウェアにおいて、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)において実行されるソフトウェア(例えば、
図3のクライアント300)において、またはソフトウェアで構成されるプロセッサと、様々なメモリ/キャッシュ(例えば、
図1のメモリ106、メモリ114、
図2のL2キャッシュ208a、208b、208c、210a、210b、210c、L3キャッシュ216、
図2および
図3のシステムキャッシュ218、レジスタ222、
図4のシステムキャッシュ400)および様々なメモリ/キャッシュコントローラ(例えば、
図2および
図3のメモリコントローラ220)などの他の個々の構成要素を含む専用ハードウェアとの組合せにおいて実装することができる。様々な実施形態において可能な代替構成を包含するために、方法1300を実装するハードウェアは、本明細書では「メモリ制御デバイス」と呼ばれる。方法1200のブロック810~814、1202は、
図11を参照して説明した方法1100のブロック1108における動作の一部として実行することができる動作を説明している。ブロック810~814は、
図8を参照して説明した方法800の同様に番号付けされたブロックと同様に実施されてもよい。
【0107】
ブロック1302において、メモリ制御デバイスは、方法1100(
図11)のブロック1106において受信された読み取りメモリコマンドによってターゲットにされた位置でメモリからデータを読み取り、メモリにステーリングカウンタ値を書き込むことができる。メモリ制御デバイスは、読み取りメモリコマンドによってターゲットにされたシステムキャッシュ(例えば、
図2および
図3のシステムキャッシュ218、
図4のシステムキャッシュ400)内の位置におけるデータを読み取ることができる。メモリ制御デバイスはまた、システムキャッシュ内の読み取りメモリコマンドによってターゲットにされたデータに関連して、システムキャッシュにローカルカウンタとしてステーリングカウンタの値を書き込むことができる。例えば、メモリ制御デバイスは、システムキャッシュ内の読み取りメモリコマンドによってターゲットにされたデータに関連付けられたシステムキャッシュ内のタグ位置にステーリングカウンタの値を書き込むことができる。いくつかの実施形態では、ブロック1302において読み取りメモリコマンドによってターゲットにされた位置でメモリからデータを読み取り、メモリにステーリングカウンタの値を書き込むメモリ制御デバイスは、プロセッサ(例えば、
図1のCPU104、プロセッサ124、
図2のプロセッサ202、プロセッサコア204a、204b、204c、206a、206b、206c、プロセッサコアクラスタ212、214、
図3のクライアント300)および/またはメモリコントローラ(例えば、
図2および
図3のメモリコントローラ220)であってもよい。
【0108】
(限定はしないが、
図1~
図13を参照して上記で説明した実施形態を含む)様々な実施形態によるシステムは、モバイルコンピューティングデバイスを含む多種多様なコンピューティングシステムにおいて実装されてもよく、様々な実施形態とともに使用するのに適したモバイルコンピューティングデバイスの一実施例が
図14に示されている。モバイルコンピューティングデバイス1400は、タッチスクリーンコントローラ1404と内部メモリ1406とに結合されたプロセッサ1402を含んでもよい。プロセッサ1402は、汎用処理タスクまたは特定の処理タスクに指定された1つまたは複数のマルチコア集積回路であってもよい。内部メモリ1406は、揮発性または不揮発性のメモリであってもよく、また、セキュアメモリおよび/もしくは暗号化メモリ、または非セキュアメモリおよび/もしくは非暗号化メモリ、またはそれらの任意の組合せであってもよい。活用することができるメモリタイプの例としては、DDR、低電力DDR(Low-Power DDR、LPDDR)、グラフィックスDDR(Graphics DDR、GDDR)、WIDEIO、RAM、スタティックRAM(Static RAM、SRAM)、ダイナミックRAM(Dynamic RAM、DRAM)、パラメータRAM(Parameter RAM、P-RAM)、抵抗性RAM(Resistive RAM、R-RAM)、磁気抵抗RAM(Magnetoresistive RAM、M-RAM)、スピントランスファートルクRAM(Spin-Transfer Torque RAM、STT-RAM)、および埋め込みDRAMが挙げられるが、これらに限定されない。タッチスクリーンコントローラ1404およびプロセッサ1402はまた、抵抗感知タッチスクリーン、容量性感知タッチスクリーン、赤外線感知タッチスクリーンなどの、タッチスクリーンパネル1412に結合されていてもよい。追加として、モバイルコンピューティングデバイス1400のディスプレイは、タッチスクリーン機能を有する必要はない。
【0109】
モバイルコンピューティングデバイス1400は、互いに結合され、かつ/またはプロセッサ1402に結合された、通信を送信および受信するための1つまたは複数の無線信号送受信機1408(例えば、Peanut、Bluetooth、ZigBee、Wi-Fi、RF無線)およびアンテナ1410を有する場合がある。送受信機1408およびアンテナ1410は、様々なワイヤレス送信プロトコルスタックおよびインターフェースを実装するために、上述の回路とともに使用されてもよい。モバイルコンピューティングデバイス1400は、セルラーネットワークを経由した通信を可能にするとともにプロセッサに結合されているセルラーネットワークワイヤレスモデムチップ1416を含んでもよい。
【0110】
モバイルコンピューティングデバイス1400は、プロセッサ1402に結合された周辺デバイス接続インターフェース1418を含んでもよい。周辺デバイス接続インターフェース1418は、1つのタイプの接続を受け入れるように単独で構成することができ、またはユニバーサルシリアルバス(Universal Serial Bus、USB)、FireWire、Thunderbolt、もしくはPCIeなどの、一般的もしくはプロプライエタリな様々なタイプの物理接続および通信接続を受け入れるように構成することができる。周辺デバイス接続インターフェース1418はまた、同様に構成される周辺デバイス接続ポート(図示せず)に結合されていてもよい。
【0111】
モバイルコンピューティングデバイス1400はまた、オーディオ出力を提供するスピーカ1414を含んでもよい。モバイルコンピューティングデバイス1400はまた、本明細書で説明する構成要素の全部または一部を収容する、プラスチック、金属、または材料の組合せから構成されるハウジング1420を含んでもよい。モバイルコンピューティングデバイス1400は、使い捨てバッテリまたは充電式バッテリなどの、プロセッサ1402に結合された電源1422を含んでもよい。充電式バッテリはまた、モバイルコンピューティングデバイス1400の外部のソースから充電電流を受け取るために、周辺デバイス接続ポートに結合されていてもよい。モバイルコンピューティングデバイス1400はまた、ユーザ入力を受け取る物理ボタン1424を含んでもよい。モバイルコンピューティングデバイス1400はまた、モバイルコンピューティングデバイス1400をオンオフする電源ボタン1426を含んでもよい。
【0112】
(限定はしないが、
図1~
図12を参照して上記で説明した実施形態を含む)様々な実施形態によるシステムは、その一実施例が
図15に示されているラップトップコンピュータ1500を含む多種多様なコンピューティングシステムにおいて実装されてもよい。多くのラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドのタッチ面1517を含み、したがって、タッチスクリーンディスプレイを装備した上述のコンピューティングデバイス上で実施されるものと同様のドラッグジェスチャ、スクロールジェスチャ、およびフリックジェスチャを受信することができる。ラップトップコンピュータ1500は、典型的には、揮発性メモリ1512と、フラッシュメモリのディスクドライブ1513などの大容量不揮発性メモリとに結合されたプロセッサ1502を含む。加えて、コンピュータ1500は、プロセッサ1502に結合されたワイヤレスデータリンクおよび/またはセルラー電話送受信機1516に接続されていてもよい、電磁放射を送受信するための1つまたは複数のアンテナ1508を有することができる。コンピュータ1500はまた、プロセッサ1502に結合されたフロッピーディスクドライブ1514およびコンパクトディスク(compact disc、CD)ドライブ1515を含む場合がある。ノートブック構成では、コンピュータハウジングは、すべてがプロセッサ1502に結合されたタッチパッド1517、キーボード1518、およびディスプレイ1519を含む。コンピューティングデバイスの他の構成はよく知られているように、(例えば、USB入力を介して)プロセッサに結合されたコンピュータマウスまたはトラックボールを含んでよく、それらはまた、様々な実施形態とともに使用されてもよい。
【0113】
(限定はしないが、
図1~
図12を参照して上記で説明した実施形態を含む)様々な実施形態によるシステムが、様々な市販のサーバのうちのいずれかなど、固定コンピューティングシステムにおいて実装されてもよい。例示的なサーバ1600を
図16に示す。そのようなサーバ1600は、典型的には、揮発性メモリ1602と、ディスクドライブ1604などの大容量不揮発性メモリとに結合された、1つまたは複数のマルチコアプロセッサアセンブリ1601を含む。
図16に示すように、マルチコアプロセッサアセンブリ1601は、それらをアセンブリのラックに挿入することによって、サーバ1600に追加されてもよい。サーバ1600はまた、プロセッサ1601に結合されたフロッピーディスクドライブ、コンパクトディスク(CD)またはデジタル多用途ディスク(digital versatile disc、DVD)ディスクドライブ1606を含んでもよい。サーバ1600はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワーク、インターネット、公衆交換電話網、ならびに/またはセルラーデータネットワーク(例えば、CDMA、TDMA、GSM、PCS、3G、4G、LTE、5G、または任意の他のタイプのセルラーデータネットワーク)などのネットワーク1605とのネットワークインターフェース接続を確立するための、マルチコアプロセッサアセンブリ1601に結合されたネットワークアクセスポート1603を含んでもよい。
【0114】
実装例について、以下の段落において説明する。以下の実装形態例のいくつかについて、例示的なシステム、デバイス、または方法に関して説明するが、更なる例示的な実装形態は、例示的なシステムまたはデバイスの動作を実行する方法として実装される、以下の段落において論じられる例示的なシステムまたはデバイス、例示的なシステム、デバイス、または方法の動作を実行するための処理デバイス実行可能命令を伴って構成される処理デバイスを備えるコンピューティングデバイスによって実装される、以下の段落において論じられる例示的なシステム、デバイス、または方法、例示的なシステム、デバイス、または方法の動作を実行するように構成されるメモリ制御デバイスを備えるコンピューティングデバイス、例示的なシステム、デバイス、または方法の機能を実行する手段を含むコンピューティングデバイスによって実装される、以下の段落において論じられる例示的なシステム、デバイス、または方法、およびコンピューティングデバイスのプロセッサに例示的なシステム、デバイス、または方法の動作を実行させるように構成されるプロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体として実装される、以下の段落において論じられる例示的なシステム、デバイス、または方法を含んでもよい。
【0115】
実施例1.コンピューティングデバイスによって基準認識キャッシュ置換ポリシーを実施する方法であって、ステーリングカウンタを更新することと、関連データがシステムキャッシュに書き込まれるときのステーリングカウンタの値を含む、ローカルカウンタの値を関連データのシステムキャッシュ内の位置に関連してシステムキャッシュに書き込むことと、関連データのローカルカウンタの値を使用して、関連データが古いかどうかを判定することと、を含む、方法。
【0116】
実施例2.ステーリングカウンタを更新することが、ステーリングカウンタを更新すべきかどうかを示すように構成されるコンピューティングデバイスのクライアントから信号を受信することと、信号に基づいてステーリングカウンタを更新すべきかどうかを判定することと、ステーリングカウンタを更新すべきと判定したことに応じて、ステーリングカウンタを更新することと、を含む、実施例1に記載の方法。
【0117】
実施例3.信号が、レジスタ書き込みコマンドであり、コンピューティングデバイスのクライアントから信号を受信することが、クライアントによって設定されたレジスタから値を読み取ることを含み、信号に基づいてステーリングカウンタを更新すべきかどうかを判定することが、レジスタからの値に基づいて、ステーリングカウンタを更新すべきかどうかを判定することを含む、実施例1または2に記載の方法。
【0118】
実施例4.時間ベースの基準に基づいて、コンピューティングデバイスのクライアントによってレジスタにおける値を設定することをさらに含む、実施例3に記載の方法。
【0119】
実施例5.イベントベースの基準に基づいて、コンピューティングデバイスのクライアントによってレジスタにおける値を設定することをさらに含む、実施例3に記載の方法。
【0120】
実施例6.メモリ書き込みコマンドを受信することをさらに含み、関連データのシステムキャッシュ内の位置に関連してローカルカウンタの値をシステムキャッシュに書き込むことが、ステーリングカウンタを更新する前に行うことができ、関連データが、書き込みメモリコマンドのデータである、実施例1から5のいずれか一項に記載の方法。
【0121】
実施例7.関連データのローカルカウンタの値を使用して、関連データが古いかどうかを判定することが、ステーリングカウンタの値およびローカルカウンタの値を使用して置換値を計算することと、置換値がステーリング閾値を上回るかどうかを判定することと、を含み、置換値がステーリング閾値を上回ると判定したことに応じて、関連データが古いと判定される、実施例1から6のいずれか一項に記載の方法。
【0122】
実施例8.メモリアクセスコマンドを受信することと、メモリアクセスコマンドのデータを、置換値がステーリング閾値を上回る位置でシステムキャッシュに書き込むことと、をさらに含み、システムキャッシュに書き込まれたメモリアクセスコマンドのデータが、関連データである、実施例7に記載の方法。
【0123】
実施例9.メモリ書き込みコマンドを受信することと、置換値がステーリング閾値を上回る位置におけるデータを無効化することと、メモリ書き込みコマンドのデータを、無効化されたデータを有する位置でシステムキャッシュに書き込むことと、をさらに含み、システムキャッシュに書き込まれたメモリ書き込みコマンドのデータが、関連データである、実施例7に記載の方法。
【0124】
実施例10.メモリ書き込みアクセスコマンドを受信することと、置換値がステーリング閾値を上回らないと判定したことに応じて、メモリ書き込みアクセスコマンドのデータを、別のキャッシュ置換ポリシーに従った位置でシステムキャッシュに書き込むことと、をさらに含む、実施例1から9のいずれか一項に記載の方法。
【0125】
様々な実施形態の動作を実行するためのプログラマブルプロセッサ上での実行のためのコンピュータプログラムコードまたは「プログラムコード」は、C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、Structured Query Language(例えば、Transact-SQL)、Perlなどの高水準プログラミング言語または様々な他のプログラミング言語で記述される場合がある。本出願で使用するコンピュータ可読記憶媒体上に記憶されたプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である(オブジェクトコードなどの)機械語コードを指す場合がある。
【0126】
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供されており、様々な実施形態の動作が提示された順序で実行されなければならないことを要求または暗示するものではない。当業者によって理解されるように、上述の実施形態における動作の順序は、任意の順序で実施されてもよい。「その後(thereafter)」、「次いで(then)」、「次に(next)」などの語は、動作の順序を限定するものではない。これらの語は、方法の説明を通じて単に読者を導くために使用される。さらに、例えば、冠詞「a」、「an」、または「the」を使用する、単数形での請求項要素へのいかなる言及も、その要素を単数形に限定するものとして解釈されるべきではない。
【0127】
様々な実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズム動作は、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装されてもよい。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路および動作について、概してそれらの機能性に関して上記してきた。そのような機能がハードウェアとして実装されるのかまたはソフトウェアとして実装されるのかは、具体的な適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装してよいが、そのような実装決定は、特許請求の範囲からの逸脱を引き起こすものとして解釈されるべきではない。
【0128】
本明細書で開示する実施形態に関して説明した様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲート論理もしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行されてもよい。汎用プロセッサはマイクロプロセッサであってもよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、例えば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つまたは複数のマイクロプロセッサ、または任意の他のそのような構成として実装されてもよい。代替的に、いくつかの動作または方法は、所与の機能に固有の回路によって実行されてもよい。
【0129】
1つまたは複数の実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装されてもよい。ソフトウェアにおいて実現される場合、機能は、1つまたは複数の命令またはコードとして、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体上に記憶されてもよい。本明細書で開示する方法またはアルゴリズムの動作は、非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュールにおいて具現化されてもよい。非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であってもよい。限定ではなく例として、そのような非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用されてよく、コンピュータによってアクセスされてよい、任意の他の媒体を含んでよい。本明細書で使用するディスク(Disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびBlu-ray(登録商標)ディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読およびプロセッサ可読媒体の範囲内に含まれる。追加として、方法またはアルゴリズムの動作は、コンピュータプログラム製品の中に組み込まれてもよい非一時的プロセッサ可読媒体および/または非一時的コンピュータ可読媒体上のコードおよび/または命令のうちの1つ、またはその任意の組合せもしくはセットとして存在してもよい。
【0130】
開示する実施形態の前述の説明は、任意の当業者が特許請求の範囲を製作または使用することを可能にするために提供される。これらの実施形態への様々な修正が当業者には容易に明らかになり、本明細書において定義される一般原理は、特許請求の範囲から逸脱することなく他の実施形態および実装形態に適用されてもよい。したがって、本開示は、本明細書で説明した実施形態および実装形態に限定されることが意図されるものではなく、以下の特許請求の範囲、ならびに本明細書で開示される原理および新規の特徴と一致する最も広い範囲が与えられるべきである。
【手続補正書】
【提出日】2024-06-26
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピューティングデバイスによって基準認識キャッシュ置換ポリシーを実施する方法であって、
ステーリングカウンタを更新するステップと、
関連データのシステムキャッシュ内の位置に関連してシステムキャッシュにローカルカウンタの値を書き込むステップであって、前記ローカルカウンタの前記値が、前記関連データが前記システムキャッシュに書き込まれるときの前記ステーリングカウンタの値を含む、ステップと、
前記ステーリングカウンタの値及び前記関連データの前記ローカルカウンタの前記値を使用して置換値を計算するステップと、
前記システムキャッシュの一部分における複数の関連データに対するすべての置換値が互いに等しいかどうかを判定するステップと、
前記システムキャッシュの前記一部分における前記複数の関連データに対する前記置換値のすべてが互いに等しくはないと判定したことに応じて、前記置換値がステーリング閾値を上回るかどうかを判定するステップであって、前記置換値が前記ステーリング閾値を上回ると判定したに応じて、前記関連データが古いと判定される、ステップと
を含む、方法。
【請求項2】
前記ステーリングカウンタを更新するステップが、
前記ステーリングカウンタを更新すべきかどうかを示すように構成される前記コンピューティングデバイスのクライアントから信号を受信するステップと、
前記信号に基づいて前記ステーリングカウンタを更新すべきかどうかを判定するステップと、
前記ステーリングカウンタを更新すべきと判定したことに応じて、前記ステーリングカウンタを更新するステップと
を含む、請求項1に記載の方法。
【請求項3】
前記信号が、レジスタ書き込みコマンドであり、
前記コンピューティングデバイスの前記クライアントから前記信号を受信するステップが、前記クライアントによって設定されたレジスタから値を読み取るステップを含み、
前記信号に基づいて前記ステーリングカウンタを更新すべきかどうかを判定するステップが、前記レジスタからの前記値に基づいて、前記ステーリングカウンタを更新すべきかどうかを判定するステップを含む、
請求項2に記載の方法。
【請求項4】
時間ベースの基準に基づいて、前記コンピューティングデバイスの前記クライアントによって前記レジスタにおける前記値を設定するステップをさらに含む、請求項3に記載の方法。
【請求項5】
イベントベースの基準に基づいて、前記コンピューティングデバイスの前記クライアントによって前記レジスタにおける前記値を設定するステップをさらに含む、請求項3に記載の方法。
【請求項6】
メモリ書き込みコマンドを受信するステップをさらに含み、前記関連データの前記システムキャッシュ内の前記位置に関連して前記ローカルカウンタの前記値を前記システムキャッシュに書き込むステップが、前記ステーリングカウンタを更新する前に行われ、前記関連データが、前記書き込みメモリコマンドのデータである、請求項1に記載の方法。
【請求項7】
メモリアクセスコマンドを受信するステップと、
前記メモリアクセスコマンドのデータを、前記置換値が前記ステーリング閾値を上回る位置で前記システムキャッシュに書き込むステップであって、前記システムキャッシュに書き込まれた前記メモリアクセスコマンドの前記データが、前記関連データである、ステップと
をさらに含む、請求項
1に記載の方法。
【請求項8】
メモリ書き込みコマンドを受信するステップと、
前記置換値が前記ステーリング閾値を上回る位置におけるデータを無効化するステップと、
前記メモリ書き込みコマンドのデータを、前記無効化されたデータを有する位置で前記システムキャッシュに書き込むステップであって、前記システムキャッシュに書き込まれた前記メモリ書き込みコマンドの前記データが、前記関連データである、ステップと
をさらに含む、請求項
1に記載の方法。
【請求項9】
メモリ書き込みアクセスコマンドを受信するステップと、
置換値が前記ステーリング閾値を上回らないと判定したことに応じて、前記メモリ書き込みアクセスコマンドのデータを、別のキャッシュ置換ポリシーに従った位置で前記システムキャッシュに書き込むステップと
をさらに含む、請求項
1に記載の方法。
【請求項10】
前記ステーリングカウンタの前記値及び前記関連データの前記ローカルカウンタの前記値を使用して前記置換値を計算するステップが、前記ステーリングカウンタの前記値と前記ローカルカウンタの前記値との間の差を計算するステップを含む、請求項1に記載の方法。
【請求項11】
コンピューティングデバイスであって、
メモリ制御デバイスであって、
ステーリングカウンタを更新することと、
関連データのシステムキャッシュ内の位置に関連してシステムキャッシュにローカルカウンタの値を書き込むことであって、前記ローカルカウンタの前記値が、前記関連データが前記システムキャッシュに書き込まれるときの前記ステーリングカウンタの値を含む、ことと、
前記ステーリングカウンタの値及び前記関連データの前記ローカルカウンタの前記値を使用して置換値を計算することと、
前記システムキャッシュの一部分における複数の関連データに対するすべての置換値が互いに等しいかどうかを判定することと、
前記システムキャッシュの前記一部分における前記複数の関連データに対する前記置換値のすべてが互いに等しくはないと判定したことに応じて、前記置換値がステーリング閾値を上回るかどうかを判定することであって、前記置換値が前記ステーリング閾値を上回ると判定したことに応じて、前記関連データが古いと判定される、ことと
を行うように構成されるメモリ制御デバイス
を備える、コンピューティングデバイス。
【請求項12】
前記メモリ制御デバイスが、
前記ステーリングカウンタを更新すべきかどうかを示すように構成される前記コンピューティングデバイスのクライアントから信号を受信することと、
前記信号に基づいて前記ステーリングカウンタを更新すべきかどうかを判定することと、
前記ステーリングカウンタを更新すべきと判定したことに応じて、前記ステーリングカウンタを更新することと、
によって、前記ステーリングカウンタを更新するようにさらに構成される、請求項11に記載のコンピューティングデバイス。
【請求項13】
前記信号が、レジスタ書き込みコマンドであり、
前記メモリ制御デバイスが、
前記クライアントによって設定されたレジスタから値を読み取ることによって、前記コンピューティングデバイスの前記クライアントから前記信号を受信し、
前記レジスタからの前記値に基づいて、前記ステーリングカウンタを更新すべきかどうかを判定することによって、前記信号に基づいて前記ステーリングカウンタを更新すべきかどうかを判定する
ようにさらに構成される、請求項12に記載のコンピューティングデバイス。
【請求項14】
時間ベースの基準に基づいて前記レジスタにおける前記値を設定するように構成されるクライアントをさらに備える、請求項13に記載のコンピューティングデバイス。
【請求項15】
イベントベースの基準に基づいて前記レジスタにおける前記値を設定するように構成されるクライアントをさらに備える、請求項13に記載のコンピューティングデバイス。
【請求項16】
前記メモリ制御デバイスが、
メモリ書き込みコマンドを受信することと、
前記ステーリングカウンタを更新する前に、前記関連データの前記システムキャッシュ内の前記位置に関連して前記ローカルカウンタの前記値を前記システムキャッシュに書き込むことであって、前記関連データが、前記書き込みメモリコマンドのデータである、ことと
を行うようにさらに構成される、請求項11に記載のコンピューティングデバイス。
【請求項17】
前記メモリ制御デバイスが、
メモリアクセスコマンドを受信し、
前記メモリアクセスコマンドのデータを、前記置換値が前記ステーリング閾値を上回る位置で前記システムキャッシュに書き込むことであって、前記システムキャッシュに書き込まれた前記メモリアクセスコマンドの前記データが、前記関連データである、ことと
を行うようにさらに構成される、請求項
11に記載のコンピューティングデバイス。
【請求項18】
前記メモリ制御デバイスが、
メモリ書き込みコマンドを受信し、
前記置換値が前記ステーリング閾値を上回る位置におけるデータを無効化し、
前記メモリ書き込みコマンドのデータを、前記無効化されたデータを有する位置で前記システムキャッシュに書き込む、
ようにさらに構成され、前記システムキャッシュに書き込まれた前記メモリ書き込みコマンドの前記データが、前記関連データである、
請求項
11に記載のコンピューティングデバイス。
【請求項19】
前記メモリ制御デバイスが、
メモリ書き込みアクセスコマンドを受信し、
置換値が前記ステーリング閾値を上回らないと判定したことに応じて、前記メモリ書き込みアクセスコマンドのデータを、基準認識キャッシュ置換ポリシーとは異なるキャッシュ置換ポリシーに従った位置で前記システムキャッシュに書き込む、
ようにさらに構成される、請求項
11に記載のコンピューティングデバイス。
【請求項20】
前記メモリ制御デバイスが、前記ステーリングカウンタの前記値と前記ローカルカウンタの前記値との間の差として前記置換値を計算するようにさらに構成される、請求項11に記載のコンピューティングデバイス。
【請求項21】
コンピューティングデバイスであって、
ステーリングカウンタを更新する手段と、
関連データのシステムキャッシュ内の位置に関連してシステムキャッシュにローカルカウンタの値を書き込む手段であって、前記ローカルカウンタの前記値が、前記関連データが前記システムキャッシュに書き込まれるときの前記ステーリングカウンタの値を含む、手段と、
前記ステーリングカウンタの値及び前記関連データの前記ローカルカウンタの前記値を使用して置換値を計算する手段と、
前記システムキャッシュの一部分における複数の関連データに対するすべての置換値が互いに等しいかどうかを判定する手段と、
前記システムキャッシュの前記一部分における前記複数の関連データに対する前記置換値のすべてが互いに等しくはないと判定したことに応じて、前記置換値がステーリング閾値を上回るかどうかを判定する手段であって、前記置換値が前記ステーリング閾値を上回ると判定したことに応じて、前記関連データが古いと判定される、手段と
を備える、コンピューティングデバイス。
【請求項22】
前記ステーリングカウンタを更新する手段が、
前記ステーリングカウンタを更新すべきかどうかを示すように構成される前記コンピューティングデバイスのクライアントから信号を受信する手段と、
前記信号に基づいて前記ステーリングカウンタを更新すべきかどうかを判定する手段と、
前記ステーリングカウンタを更新すべきと判定したことに応じて、前記ステーリングカウンタを更新する手段と
を備える、請求項21に記載のコンピューティングデバイス。
【請求項23】
前記信号が、レジスタ書き込みコマンドであり、
前記コンピューティングデバイスの前記クライアントから前記信号を受信する手段が、前記クライアントによって設定されたレジスタから値を読み取る手段を含み、
前記信号に基づいて前記ステーリングカウンタを更新すべきかどうかを判定する手段が、前記レジスタからの前記値に基づいて、前記ステーリングカウンタを更新すべきかどうかを判定する手段を含む、
請求項22に記載のコンピューティングデバイス。
【請求項24】
時間ベースの基準に基づいて前記コンピューティングデバイスの前記クライアントによって前記レジスタにおける前記値を設定する又はイベントベースの基準に基づいて前記コンピューティングデバイスの前記クライアントによって前記レジスタにおける前記値を設定する手段をさらに備える、請求項23に記載のコンピューティングデバイス。
【請求項25】
メモリ書き込みコマンドを受信する手段をさらに備え、前記関連データの前記システムキャッシュ内の前記位置に関連して前記ローカルカウンタの前記値を前記システムキャッシュに書き込む手段が、前記ステーリングカウンタを更新する前に実装され、前記関連データが、前記書き込みメモリコマンドのデータである、請求項21に記載のコンピューティングデバイス。
【請求項26】
メモリアクセスコマンドを受信する手段と、
前記メモリアクセスコマンドのデータを、前記置換値が前記ステーリング閾値を上回る位置で前記システムキャッシュに書き込む手段であって、前記システムキャッシュに書き込まれた前記メモリアクセスコマンドの前記データが、前記関連データである、手段と
をさらに備える、請求項
21に記載のコンピューティングデバイス。
【請求項27】
メモリ書き込みコマンドを受信する手段と、
前記置換値が前記ステーリング閾値を上回る位置におけるデータを無効化する手段と、
前記メモリ書き込みコマンドのデータを、無効化されたデータを有する位置で前記システムキャッシュに書き込む手段であって、前記システムキャッシュに書き込まれた前記メモリ書き込みコマンドの前記データが、前記関連データである、手段と
をさらに備える、請求項
21に記載のコンピューティングデバイス。
【請求項28】
メモリ書き込みアクセスコマンドを受信する手段と、
置換値が前記ステーリング閾値を上回らないと判定したことに応じて、前記メモリ書き込みアクセスコマンドのデータを、基準認識キャッシュ置換ポリシーとは異なるキャッシュ置換ポリシーに従った位置で前記システムキャッシュに書き込む手段と、
をさらに備える、
請求項
21に記載のコンピューティングデバイス。
【請求項29】
前記ステーリングカウンタの前記値及び前記関連データの前記ローカルカウンタの前記値を使用して前記置換値を計算する手段が、前記ステーリングカウンタの前記値と前記ローカルカウンタの前記値との間の差を計算する手段を含む、請求項21に記載のコンピューティングデバイス。
【請求項30】
処理デバイスに動作を実行させるように構成されるプロセッサ実行可能命令が記憶された非一時的プロセッサ可読
記憶媒体であって、前記動作が、
ステーリングカウンタを更新することと、
関連データのシステムキャッシュ内の位置に関連してシステムキャッシュにローカルカウンタの値を書き込むことであって、前記ローカルカウンタの前記値が、前記関連データが前記システムキャッシュに書き込まれるときの前記ステーリングカウンタの値を含む、ことと、
前記ステーリングカウンタの値及び前記関連データの前記ローカルカウンタの前記値を使用して置換値を計算することと、
前記システムキャッシュの一部分における複数の関連データに対するすべての置換値が互いに等しいかどうかを判定することと、
前記システムキャッシュの前記一部分における前記複数の関連データに対する前記置換値のすべてが互いに等しくはないと判定したことに応じて、前記置換値がステーリング閾値を上回るかどうかを判定することであって、前記置換値が前記ステーリング閾値を上回ると判定したことに応じて、前記関連データが古いと判定される、ことと
を含む、非一時的プロセッサ可読
記憶媒体。
【国際調査報告】