IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特表2024-544866キャッシュアソシアティビティ割り当て
<>
  • 特表-キャッシュアソシアティビティ割り当て 図1
  • 特表-キャッシュアソシアティビティ割り当て 図2
  • 特表-キャッシュアソシアティビティ割り当て 図3
  • 特表-キャッシュアソシアティビティ割り当て 図4
  • 特表-キャッシュアソシアティビティ割り当て 図5
  • 特表-キャッシュアソシアティビティ割り当て 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-05
(54)【発明の名称】キャッシュアソシアティビティ割り当て
(51)【国際特許分類】
   G06F 12/0864 20160101AFI20241128BHJP
   G06F 12/128 20160101ALI20241128BHJP
【FI】
G06F12/0864
G06F12/128
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024526934
(86)(22)【出願日】2022-12-14
(85)【翻訳文提出日】2024-06-17
(86)【国際出願番号】 US2022052885
(87)【国際公開番号】W WO2023121933
(87)【国際公開日】2023-06-29
(31)【優先権主張番号】17/557,731
(32)【優先日】2021-12-21
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジェフリー クリストファー アラン
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205QQ02
5B205QQ11
5B205UU45
5B205VV03
5B205VV04
(57)【要約】
キャッシュアソシアティビティ割り当てについて記載する。記載される技術によれば、キャッシュのアソシアティビティの一部が、キャッシュ要求のカテゴリに割り当てられる。アソシアティビティの一部は、キャッシュのキャッシュラインのサブセットに対応する。キャッシュにアクセスする要求が受信され、キャッシュラインのサブセットのキャッシュラインが、要求に関連付けられたカテゴリに基づいて、要求に割り当てられる。要求に対応するデータが、キャッシュラインのサブセットのキャッシュラインにロードされる。
【選択図】図1
【特許請求の範囲】
【請求項1】
方法であって、
キャッシュのアソシアティビティの一部をキャッシュ要求のカテゴリに割り当てることであって、前記アソシアティビティの一部は、前記キャッシュのキャッシュラインのサブセットに対応する、ことと、
前記キャッシュにアクセスする要求を受信することと、
前記要求に関連付けられたカテゴリに基づいて、前記要求に前記キャッシュラインのサブセットのキャッシュラインを割り当て、前記要求に対応するデータを前記キャッシュラインのサブセットのキャッシュラインにロードすることと、を含む、
方法。
【請求項2】
前記アソシアティビティの一部を割り当てることは、ツリー構造の少なくとも1つのノードのトラバースをある方向にロックすることを含み、前記ツリー構造は、何れのキャッシュラインを要求に割り当てるかを識別するためにトラバースされ、前記トラバースは、前記カテゴリに関連付けられた要求に対して前記方向にロックされる、
請求項1の方法。
【請求項3】
前記キャッシュのアソシアティビティの追加部分をキャッシュ要求の追加カテゴリに割り当てることを含み、前記アソシアティビティの追加部分は、前記追加カテゴリに関連付けられた要求に対して、前記ツリー構造の前記少なくとも1つのノードのトラバースを異なる方向にロックすることによって割り当てられる、
請求項2の方法。
【請求項4】
前記ツリー構造は、何れのキャッシュラインを前記要求に割り当てるかを識別するために、擬似最長時間未使用アルゴリズムに従ってトラバースされるバイナリツリーである、
請求項2の方法。
【請求項5】
前記キャッシュラインのサブセットのキャッシュラインを割り当てることと、前記ツリー構造をトラバースすることによって、前記要求に対応するデータをロードすることと、を含む、
請求項2の方法。
【請求項6】
前記キャッシュのアソシアティビティの追加部分をキャッシュ要求の追加カテゴリに割り当てることであって、前記アソシアティビティの追加部分は、前記キャッシュのキャッシュラインの追加サブセットに対応する、ことと、
前記キャッシュにアクセスするために、前記追加カテゴリに関連付けられた追加要求を受信することと、
前記キャッシュラインの追加サブセットのキャッシュラインを前記追加要求に割り当て、前記追加要求に対応する追加データを前記キャッシュラインの追加サブセットのキャッシュラインにロードすることと、を含む、
請求項1の方法。
【請求項7】
前記カテゴリは、第1のワークロード又はスレッドに対応し、前記追加カテゴリは、第2のワークロード又はスレッドに対応する、
請求項6の方法。
【請求項8】
前記要求に関連付けられたカテゴリがキャッシュ要求のカテゴリに対応すると決定することを含む、
請求項1の方法。
【請求項9】
前記キャッシュ要求のカテゴリは、
前記キャッシュ要求のワークロード若しくはスレッド、
前記キャッシュ要求の発信元、
前記キャッシュ要求の宛先、又は、
前記キャッシュ要求の特性
のうち少なくとも1つに関連付けられている、
請求項1の方法。
【請求項10】
前記キャッシュのアソシアティビティの一部を前記キャッシュ要求のカテゴリに割り当てることは、トリガイベントに応じて発生し、
前記トリガイベントは、
アプリケーションを起動すること、
ワークロード若しくはスレッドを初期化すること、又は、
前記キャッシュの使用量が閾値使用量を超えると決定すること
のうち何れかを含む、
請求項1の方法。
【請求項11】
前記要求に対応するデータは、データストアから取得される、
請求項1の方法。
【請求項12】
前記データストアは、仮想メモリを含む、
請求項11の方法。
【請求項13】
システムであって、
キャッシュラインに分割されたキャッシュと、
コントローラと、を備え、
前記コントローラは、
前記キャッシュのアソシアティビティの一部をキャッシュ要求のカテゴリに割り当てることであって、前記キャッシュのアソシアティビティの一部は、前記キャッシュラインのサブセットに対応する、ことと、
要求のカテゴリに基づいて、前記キャッシュラインのサブセットのキャッシュラインを前記要求に割り当て、前記要求に対応するデータを前記キャッシュラインのサブセットのキャッシュラインにロードすることと、
を行うように構成されている、
システム。
【請求項14】
前記コントローラは、ツリー構造の少なくとも1つのノードのトラバーサルをある方向にロックすることによって、前記キャッシュのアソシアティビティの一部を割り当て、前記ツリー構造は、何れのキャッシュラインを要求に割り当てるかを識別するためにトラバースされ、前記トラバースは、前記カテゴリに関連付けられた要求に対して前記方向にロックされる、
請求項13のシステム。
【請求項15】
前記コントローラは、前記キャッシュのアソシアティビティの追加部分をキャッシュ要求の追加カテゴリに割り当てるように構成されており、前記アソシアティビティの追加部分は、前記追加カテゴリに関連付けられた要求に対して、前記ツリー構造の前記少なくとも1つのノードのトラバースを異なる方向にロックすることによって割り当てられる、
請求項14のシステム。
【請求項16】
前記ツリー構造は、何れのキャッシュラインを前記要求に割り当てるかを識別するために、擬似最長時間未使用アルゴリズムに従ってトラバースされるバイナリツリーである、
請求項15のシステム。
【請求項17】
前記キャッシュは、外部メモリに接続されている、
請求項13のシステム。
【請求項18】
前記システムは、サーバ、パーソナルコンピュータ又はモバイルデバイスを含む、
請求項13のシステム。
【請求項19】
方法であって、
キャッシュのアソシアティビティを少なくとも第1の部分及び第2の部分に分割することと、
前記キャッシュのアソシアティビティの第1の部分をキャッシュ要求の第1のカテゴリに割り当てることであって、キャッシュミスに応じて、前記キャッシュのアソシアティビティの第1の部分を使用してデータをロードするように、前記キャッシュ要求の第1のカテゴリを制限する、ことと、
前記キャッシュのアソシアティビティの第2の部分をキャッシュ要求の第2のカテゴリに割り当てることであって、キャッシュミスに応じて、前記キャッシュのアソシアティビティの第2の部分を使用してデータをロードするように、前記キャッシュ要求の第2のカテゴリを制限する、ことと、を含む、
方法。
【請求項20】
前記キャッシュのアソシアティビティの第1の部分をキャッシュ要求の第1のカテゴリに割り当てることは、前記キャッシュ要求の第1のカテゴリが前記キャッシュのアソシアティビティの第1の部分及び第2の部分の両方にアクセスすることを許可するが、前記キャッシュ要求の第1のカテゴリが、前記キャッシュミスに応じて、前記キャッシュのアソシアティビティの第2の部分を使用してデータをロードするのを防止し、
前記キャッシュのアソシアティビティの第2の部分をキャッシュ要求の第2のカテゴリに割り当てることは、前記キャッシュ要求の第2のカテゴリが前記キャッシュのアソシアティビティの第1の部分及び第2の部分の両方にアクセスすることを許可するが、前記キャッシュ要求の第2のカテゴリが、前記キャッシュミスに応じて、前記キャッシュのアソシアティビティの第1の部分を使用してデータをロードするのを防止する、
請求項19の方法。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願)
本願は、2021年12月21日に出願された「Cache Associativity Allocation」と題する米国特許出願第17/557,731号の優先権を主張し、その開示全体は、参照により本明細書に組み込まれる。
【背景技術】
【0002】
キャッシュは、データに対する将来の要求が、データがメインメモリから供給された場合よりも速く供給されるように、データを(少なくとも一時的に)記憶するハードウェア又はソフトウェア構成要素である。「キャッシュヒット」は、要求されたデータをキャッシュ内で見つけることができる場合に発生し、一方、「キャッシュミス」は、要求されたデータがキャッシュ内で見つけることができない場合に発生する。キャッシュミスは、例えば、要求されたデータが未だキャッシュにロードされていないシナリオにおいて、又は、要求されたデータが要求の前にキャッシュから追い出された(エビクトされた)場合に発生する。キャッシュ置換ポリシーは、要求されたデータを、キャッシュミスに応じて、選択されたキャッシュラインにロードすることができるように、キャッシュの何れかのキャッシュラインを追い出すために選択するためのルールを定義する。
【0003】
詳細な説明は、添付の図面を参照して説明される。
【図面の簡単な説明】
【0004】
図1】いくつかの実施形態による、キャッシュ及びアソシアティビティアロケータを有するコントローラを有する非限定的な例示的なシステムのブロック図である。
図2】アソシアティビティアロケータがキャッシュ要求のカテゴリにキャッシュのアソシアティビティの一部を割り当てる非限定的な例を示す図である。
図3】キャッシュラインを選択するためのキャッシュ置換ポリシーのトラバーサルアルゴリズムに従って、キャッシュ置換ポリシーのツリー構造がトラバースされる非限定的な例を示す図である。
図4】キャッシュ置換ポリシーが、キャッシュ要求のカテゴリにキャッシュのアソシアティビティの一部を割り当てるように修正される実施形態の非限定的な例を示す図である。
図5】キャッシュ要求のカテゴリにキャッシュのアソシアティビティの一部を割り当てる例示的な実施形態における手順を示す図である。
図6】キャッシュのアソシアティビティを分割し、キャッシュ要求の異なるカテゴリにキャッシュのアソシアティビティの一部を割り当てる例示的な実施形態における手順を示す図である。
【発明を実施するための形態】
【0005】
(概要)
キャッシュのアソシアティビティは、キャッシュミスに応じて、データがロードされることが許可されるキャッシュのキャッシュラインのセットを定義する。「フルアソシアティブ(fully associative)」であるキャッシュは、例えば、データがキャッシュの任意のキャッシュラインにロードされることを許可する。しかしながら、フルアソシアティブキャッシュは、キャッシュへの大量の要求を伴う特定のワークロードによって支配される可能性があり、他のワークロードがキャッシュを利用することを困難にする。
【0006】
この問題を解決するために、キャッシュアソシアティビティ割り当てが本明細書で説明される。説明される技術は、キャッシュ要求の第1のカテゴリにアソシアティビティの第1の部分を割り当て、キャッシュ要求の第2のカテゴリにアソシアティビティの第2の部分を割り当てること等によって、キャッシュ要求の異なるカテゴリにキャッシュのアソシアティビティの一部を割り当てる。異なるカテゴリは、例えば、キャッシュクライアントによって実行される異なるワークロード又はスレッドに対応する。例えば、第1のカテゴリは、第1のワークロードに対応する要求に関連付けられ、第2のカテゴリは、第2のワークロードに対応する要求に関連付けられる。キャッシュのアソシアティビティの一部は、特定のカテゴリのためにキャッシュのキャッシュラインのサブセットを予約することによってキャッシュ要求の特定のカテゴリに割り当てられ、その結果、カテゴリのキャッシュ要求に関連付けられたデータが、例えば、キャッシュミスに応じて、予約されたキャッシュラインのサブセットにロードされる。
【0007】
1つ以上の実施形態では、キャッシュミスに応じて、キャッシュにデータをロードすることを制御するキャッシュ置換ポリシーは、キャッシュのキャッシュラインに対応するリーフノードを有するバイナリツリーを含み、キャッシュミスに応じてエビクトするキャッシュラインを選択するためにバイナリツリーをトラバースするために利用される擬似最長時間未使用アルゴリズムも含む。カテゴリにキャッシュのアソシアティビティの一部を割り当てるために、この実施形態では、擬似最長時間未使用アルゴリズムは、要求の第1のカテゴリについては第1の方向(例えば、左)に、要求の第2のカテゴリについては第2の方向(例えば、右)にバイナリツリーのノードのトラバーサル方向インジケータを「ロック」するか、又は、他の方法で設定することによって修正される。このように、キャッシュ要求の第1のカテゴリは、バイナリツリーのロックされたノードの左に向けられたリーフノードに対応するキャッシュラインにデータをロードすることに限定され、キャッシュ要求の第2のカテゴリは、バイナリツリーのロックされたノードの右に向けられたリーフノードに対応するキャッシュラインにデータをロードすることに限定される。
【0008】
キャッシュ要求の異なるカテゴリにキャッシュのアソシアティビティの一部を割り当てることによって、説明される技術は、データに関連付けられた要求のカテゴリ、例えば、要求が対応するワークロードに基づいて、何れのキャッシュラインデータがロードされることを許可されるかを制限する。カテゴリに基づいて、データがロードされることを許可されるキャッシュラインを更に制限することによって、説明される技術は、キャッシュ要求の特定のカテゴリが、キャッシュの全てのキャッシュラインの使用を支配することを防止し、そうでなければ、キャッシュの使用は、従来のキャッシュ置換ポリシーによって許可される。
【0009】
いくつかの態様では、本明細書で説明する技術は、キャッシュ要求のカテゴリにキャッシュのアソシアティビティの一部であって、キャッシュのキャッシュラインのサブセットに対応する、アソシアティビティの一部を割り当てることと、キャッシュにアクセスする要求を受信することと、要求に関連付けられたカテゴリに基づいて、要求にキャッシュラインのサブセットのキャッシュラインを割り当て、キャッシュラインのサブセットのキャッシュラインに、要求に対応するデータをロードすることと、を含む、方法に関する。
【0010】
いくつかの態様では、本明細書で説明される技術は、アソシアティビティの一部を割り当てることが、ツリー構造の少なくとも1つのノードのトラバーサルをある方向にロックすることを含み、ツリー構造が、要求に何れのキャッシュラインを割り当てるかを識別するためにトラバースされ、トラバーサルが、カテゴリに関連付けられた要求に対して、上記方向にロックされる、方法に関する。
【0011】
いくつかの態様では、本明細書で説明する技術は、キャッシュ要求の追加カテゴリにキャッシュのアソシアティビティの追加部分を割り当てることを更に含み、アソシアティビティの追加部分が、追加カテゴリに関連付けられた要求に対して、ツリー構造の少なくとも1つのノードのトラバーサルを異なる方向にロックすることによって割り当てられる、方法に関する。
【0012】
いくつかの態様では、本明細書で説明する技術は、ツリー構造が、要求に何れのキャッシュラインを割り当てるかを識別するために、擬似最長時間未使用アルゴリズムに従ってトラバースされるバイナリツリーである、方法に関する。
【0013】
いくつかの態様では、本明細書で説明する技術は、キャッシュラインのサブセットのキャッシュラインを割り当て、ツリー構造をトラバースすることによって、要求に対応するデータをロードすることを更に含む、方法に関する。
【0014】
いくつかの態様では、本明細書で説明する技術は、キャッシュ要求の追加カテゴリにキャッシュのアソシアティビティの追加部分であって、キャッシュのキャッシュラインの追加サブセットに対応する、アソシアティビティの追加部分を割り当てることと、キャッシュにアクセスするための追加カテゴリに関連付けられた追加要求を受信することと、追加要求にキャッシュラインの追加サブセットのキャッシュラインを割り当て、追加要求に対応する追加データをキャッシュラインの追加サブセットのキャッシュラインにロードすることと、を更に含む、方法に関する。
【0015】
いくつかの態様では、本明細書で説明する技術は、カテゴリが、第1のワークロード又はスレッドに対応し、追加カテゴリが、第2のワークロード又はスレッドに対応する、方法に関する。
【0016】
いくつかの態様では、本明細書で説明する技術は、要求に関連付けられたカテゴリが、キャッシュ要求のカテゴリに対応すると決定することを更に含む、方法に関する。
【0017】
いくつかの態様では、本明細書で説明する技術は、キャッシュ要求のカテゴリが、キャッシュ要求のワークロード若しくはスレッド、キャッシュ要求の発信元、キャッシュ要求の宛先、又は、キャッシュ要求の特性のうち少なくとも1つに関連付けられている、方法に関する。
【0018】
いくつかの態様では、本明細書で説明される技術は、キャッシュ要求のカテゴリにキャッシュのアソシアティビティの一部を割り当てることが、トリガイベントに応じて発生し、トリガイベントが、アプリケーションを起動すること、ワークロード若しくはスレッドを初期化すること、又は、キャッシュの使用量が閾値使用量を超えると決定することのうち何れかを含む、方法に関する。
【0019】
いくつかの態様では、本明細書で説明する技術は、要求に対応するデータがデータストアから取得される、方法に関する。
【0020】
いくつかの態様では、本明細書で説明する技術は、データストアが仮想メモリを含む、方法に関する。
【0021】
いくつかの態様では、本明細書で説明する技術は、システムであって、キャッシュラインに分割されたキャッシュと、コントローラであって、キャッシュ要求のカテゴリにキャッシュのアソシアティビティの一部であって、キャッシュラインのサブセットに対応する、アソシアティビティの一部を割り当て、要求のカテゴリに基づいて、キャッシュラインのサブセットのキャッシュラインを要求に割り当て、キャッシュラインのサブセットのキャッシュラインに、要求に対応するデータをロードするためのコントローラと、を含む、システムに関する。
【0022】
いくつかの態様では、本明細書で説明される技術は、コントローラが、ツリー構造の少なくとも1つのノードのトラバーサルをある方向にロックすることによって、キャッシュのアソシアティビティの一部を割り当て、ツリー構造が、要求に何れのキャッシュラインを割り当てるかを識別するためにトラバースされ、トラバーサルが、カテゴリに関連付けられた要求に対して、上記方向にロックされる、システムに関する。
【0023】
いくつかの態様では、本明細書で説明する技術は、コントローラが、キャッシュ要求の追加カテゴリにキャッシュのアソシアティビティの追加部分を割り当てるように更に構成されており、アソシアティビティの追加部分が、追加カテゴリに関連付けられた要求に対して、ツリー構造の少なくとも1つのノードのトラバーサルを異なる方向にロックすることによって割り当てられる、システムに関する。
【0024】
いくつかの態様では、本明細書で説明する技術は、ツリー構造が、要求に何れのキャッシュラインを割り当てるかを識別するために、擬似最長時間未使用アルゴリズムに従ってトラバースされるバイナリツリーである、システムに関する。
【0025】
いくつかの態様では、本明細書で説明する技術は、キャッシュが外部メモリに接続される、システムに関する。
【0026】
いくつかの態様では、本明細書で説明する技術は、サーバ、パーソナルコンピュータ又はモバイルデバイスを含む、システムに関する。
【0027】
いくつかの態様では、本明細書で説明する技術は、キャッシュのアソシアティビティを少なくとも第1の部分及び第2の部分に分割することと、キャッシュ要求の第1のカテゴリにキャッシュのアソシアティビティの第1の部分を割り当てることであって、割り当てることにより、キャッシュ要求の第1のカテゴリが、キャッシュミスに応じて、キャッシュのアソシアティビティの第1の部分を使用してデータをロードすることに制限される、ことと、キャッシュ要求の第2のカテゴリにキャッシュのアソシアティビティの第2の部分を割り当てることであって、割り当てることにより、キャッシュ要求の第2のカテゴリが、キャッシュミスに応じて、キャッシュのアソシアティビティの第2の部分を使用してデータをロードすることに制限される、ことと、を含む、方法に関する。
【0028】
いくつかの態様では、本明細書で説明する技術は、キャッシュ要求の第1のカテゴリにキャッシュのアソシアティビティの第1の部分を割り当てることは、キャッシュ要求の第1のカテゴリがキャッシュのアソシアティビティの第1の部分及びアソシアティビティの第2の部分の両方にアクセスすることを許可するが、キャッシュ要求の第1のカテゴリが、キャッシュミスに応じて、キャッシュのアソシアティビティの第2の部分を使用してデータをロードすることを防止し、キャッシュ要求の第2のカテゴリにキャッシュのアソシアティビティの第2の部分を割り当てることは、キャッシュ要求の第2のカテゴリがキャッシュのアソシアティビティの第1の部分及びアソシアティビティの第2の部分の両方にアクセスすることを許可するが、キャッシュ要求の第2のカテゴリが、キャッシュミスに応じて、アソシアティビティの第1の部分キャッシュを使用してデータをロードすることを防止する、方法に関する。
【0029】
図1は、いくつかの実施形態による、キャッシュ及びアソシアティビティアロケータを有するコントローラを有する非限定的な例示的なシステム100のブロック図である。特に、システムは、キャッシュ102、キャッシュクライアント104、データストア106、及び、コントローラ108を含み、コントローラ108は、アソシアティビティアロケータ110及びキャッシュ置換ポリシー112を含む。説明される技術によれば、キャッシュ102、キャッシュクライアント104及びデータストア106は、有線又は無線接続を介して互いに結合される。例示的な有線接続は、キャッシュ102、キャッシュクライアント104及びデータストア106のうち2つ以上を接続するバスを含むが、これらに限定されない。システム100の例は、限定ではなく例として、パーソナルコンピュータ、ラップトップ、デスクトップ、サーバ、ゲームコンソール、セットトップボックス、タブレット、スマートフォン、モバイルデバイス、及び、他のコンピューティングデバイスを含む。
【0030】
キャッシュ102は、データに対する将来の要求がデータストア106からよりもキャッシュ102から速く供給されるように、データを(例えば、少なくとも一時的に)記憶するハードウェア又はソフトウェア構成要素である。1つ以上の実施形態では、キャッシュ102は、データストア106よりも小さいこと、データストア106よりもキャッシュクライアント104にデータを供給するのが速いこと、又は、データストア106よりもキャッシュクライアント104にデータを供給するのが効率的であることうち少なくとも1つである。追加的又は代替的に、キャッシュ102は、データストア106よりもキャッシュクライアント104の近くに位置する。様々な実施形態では、キャッシュ102は、キャッシュ102からキャッシュクライアント104に少なくともいくつかのデータを供給することを、データストア106からそのようなデータを供給することよりも有利にする追加又は異なる特性を有することを理解されたい。
【0031】
1つ以上の実施形態では、キャッシュ102は、特定のレベルのキャッシュ(例えば、L1キャッシュ)等のメモリキャッシュであり、特定のレベルは、複数のキャッシュレベル(例えば、L0、L1、L2、L3、L4)の階層に含まれる。いくつかの変形例では、キャッシュ102は、キャッシュクライアント104に組み込まれ、それによって使用されるハードウェア構成要素である。他の例では、キャッシュ102は、キャッシュクライアント104がウェブブラウザ又はウェブサーバである少なくとも1つのシナリオ等において、少なくとも部分的にソフトウェアで実装される。また、キャッシュ102は、説明される技術の趣旨又は範囲から逸脱することなく、異なる方式で実装可能である。
【0032】
キャッシュクライアント104は、そのようなデータに関連する1つ以上の動作を実行するためにデータへのアクセスを要求する構成要素である。キャッシュクライアント104の例は、いくつか例を挙げると、中央処理装置、並列加速プロセッサ(例えば、グラフィックス処理ユニット)、デジタル信号プロセッサ、ハードウェアアクセラレータ、オペレーティングシステム、ウェブブラウザ、ウェブサーバ、アプリケーション、及び、下位レベルキャッシュ(例えば、キャッシュ102よりも下位レベルのキャッシュ階層)を含むが、これらに限定されない。
【0033】
様々な実施形態において、キャッシュクライアント104は、データへのアクセスの要求114を提供する。例として、要求114は、データへの書き込みアクセスの要求又はデータへの読み出しアクセスの要求である。説明される技術によれば、要求114は、キャッシュにアクセスしてキャッシュ102内のデータを見つけようと試みるために受信される。例えば、要求114は、コントローラ108によって受信される。要求114に応じて、例えば、コントローラ108は、キャッシュ102を検索して、データがキャッシュ102に記憶されているかどうかを決定する。キャッシュ102を検索することによって、データがキャッシュ102に記憶されていることをコントローラ108が識別した場合、コントローラ108は、次いで、キャッシュ102内のデータへのアクセスを提供する。本明細書で説明するように、「キャッシュヒット」は、コントローラ108が、要求114によって識別されたデータがキャッシュ102に記憶されていることを識別することができる場合に発生する。要求114が書き込みアクセスのためのものである場合、キャッシュヒット時に、コントローラ108は、要求114によって識別されるキャッシュ102内のデータを修正(例えば、更新)する。要求114が読み出しアクセスのためのものである場合、キャッシュヒット時に、コントローラ108は、要求114によって識別されるキャッシュ102内のデータを取り出す。図示された例では、要求114に基づいてキャッシュ102から取り出されたデータは、キャッシュデータ116として示されている。コントローラ108は、キャッシュされたデータ116をキャッシュクライアント104に提供する。
【0034】
図示された例は、要求されたデータ118も示す。要求されたデータ118は、要求114に応じてキャッシュクライアント104に提供されるデータに対応する。要求114において識別されたデータがキャッシュ102から供給される場合、例えば、キャッシュヒット時に、要求されたデータ118は、キャッシュされたデータ116に対応する。しかし、1つ以上のシナリオでは、要求114で識別されたデータは、データストア106から供給される。データがキャッシュ102内で見つからず、データストア106のキャッシュ不可能な場所に記憶されているものとしてフラグ付けされているシナリオでは、例えば、要求されたデータ118は、データストア106からキャッシュクライアント104に提供されたデータに対応する。本明細書で説明するように、「キャッシュミス」は、コントローラ108が、要求114によって識別されたデータをキャッシュ102内で識別しない場合に発生する。キャッシュミスは、例えば、要求114によって識別されたデータが未だキャッシュ102にロードされていない場合、又は、要求114によって識別されたデータが要求114の前にキャッシュ102から追い出された場合に発生する。
【0035】
様々なシナリオでは、コントローラ108は、キャッシュミスに応じて、要求によって識別されたデータをデータストア106からキャッシュ102にロードする。図示された例では、データストア106から取り出され、キャッシュ102にロードされたデータは、データストアデータ120として示されている。キャッシュミスが決定されると、例えば、要求114によって要求されたデータがデータストア106において識別され、データストア106からキャッシュ102内の1つ以上の「場所」に、例えば、キャッシュ102の1つ以上のキャッシュラインにロードされる。これは、同じデータに対する将来の要求が、データストア106からではなくキャッシュ102から供給されることを可能にする。以下でより詳細に説明されるように、コントローラ108は、アソシアティビティアロケータ110又はキャッシュ置換ポリシー112のうち少なくとも1つに基づいて、データストア106からのデータ(例えば、データストアデータ120)をキャッシュ102にロードする。
【0036】
説明される技術によれば、データストア106は、データを記憶するコンピュータ可読記憶媒体である。データストア106の例は、いくつか例を挙げると、メインメモリ(例えば、ランダムアクセスメモリ)、外部メモリ、高レベルキャッシュ(例えば、キャッシュ102がL1キャッシュである場合のL2キャッシュ)、二次記憶装置(例えば、大容量記憶デバイス)、及び、リムーバブルメディア(例えば、フラッシュドライブ、メモリカード、コンパクトディスク、及び、デジタルビデオディスク)が挙げられるが、これらに限定されない。また、データストア106の例は、1つ以上のメモリ管理技術に従ってコンピューティングデバイスの基礎となる二次記憶装置を活用する仮想メモリを含む。データストア106は、説明される技術の趣旨又は範囲から逸脱することなく、様々な方式で構成可能であることを理解されたい。
【0037】
上述したように、コントローラ108は、例えばキャッシュミスに応じて、データストア106からキャッシュ102にデータをロードする。説明される技術によれば、コントローラ108は、アソシアティビティアロケータ110又はキャッシュ置換ポリシー112のうち少なくとも1つに基づいて、そのようなデータをキャッシュ102にロードする。
【0038】
キャッシュ置換ポリシー112は、キャッシュ102の何れのキャッシュラインが、例えば、キャッシュミスに応じて、それらのデータを追い出し、要求114に対応するデータストア106からのデータと共にロードするかを制御する。1つ以上の実施形態では、キャッシュ置換ポリシー112は、基礎となるアルゴリズムに従ってキャッシュラインの置換を管理するハードウェア維持構造であるか又はそれを含む。代替的又は追加的に、キャッシュ置換ポリシー112は、基礎となるアルゴリズムに従ってキャッシュラインの置換を管理するコンピュータプログラムであるか又はそれを含む。例示的なキャッシュ置換ポリシーは、いくつか例を挙げると、先入れ先出し(first in first out)、後入れ先出し(last in first out)、最長時間未使用(least recently used)、時間認識最長時間未使用(time-aware least recently used)、最短時間未使用(most recently used)、擬似最長時間未使用(pseudo least recently used)、ランダム置換(random replacement)、セグメント化最長時間未使用(segmented least recently used)、最低頻度使用(least-frequently used)、最低頻度最新使用(least frequently recently used)、及び、動的持効を伴う最低頻度使用(least frequently used with dynamic aging)を含むが、これらに限定されない。キャッシュ置換ポリシー112が少なくとも部分的に擬似最長時間未使用アルゴリズムに従って構成される例示的な実施形態は、図3及び図4に関してより詳細に説明する。
【0039】
アソシアティビティアロケータ110は、データをキャッシュ102にロードするキャッシュ要求の異なるカテゴリに何れのキャッシュラインが利用可能であるかを制限する。特に、アソシアティビティアロケータ110は、キャッシュ要求の第1のカテゴリにアソシアティビティの第1の部分を割り当て、キャッシュ要求の第2のカテゴリにアソシアティビティの第2の部分を割り当てること等によって、キャッシュ要求の異なるカテゴリにキャッシュ102のアソシアティビティの一部を割り当てる。1つ以上の実施形態では、異なるカテゴリは、キャッシュクライアント104によって実行される異なるワークロード又はスレッドに対応する。例えば、第1のカテゴリは、第1のワークロードに対応する要求に関連付けられ、第2のカテゴリは、第2のワークロードに対応する要求に関連付けられる。代替的又は追加的に、カテゴリは、いくつか例を挙げると、要求の発信元又は宛先(例えば、要求は、特定のコンピューティングユニットから発信されるか、又は、ローカルスクラッチメモリに供給される)、要求特性(例えば、ロード、ストア、画像サンプル、レイトレーシング、サーフェス、バッファ、又は、シェーダリソース)、メモリ要求ポリシー又はコヒーレンシ(例えば、ストリーミング、ローカルキャッシュ、又は、グローバルコヒーレント)、及び、要求エイジ又は強制順方向進行フラグ(例えば、所定の要求ストリームが、独立した要求ストリームに起因して、ある時間量の間、アウトオブオーダキャッシュでストールされる場合、所定の要求ストリームは、順方向進行を保証するために分離可能である)を含むがこれらに限定されない、異なる態様に基づいて要求に関連付けられる。アソシアティビティアロケータ110は、様々な実施形態において、異なる数の要求のカテゴリにキャッシュ102のアソシアティビティの一部を割り当てることを理解されたい。例えば、いくつかの変形例において、アソシアティビティアロケータ110は、キャッシュ要求の単一のカテゴリにアソシアティビティの一部を割り当てる。別の例では、アソシアティビティアロケータ110は、キャッシュ要求の2つ以上のカテゴリにアソシアティビティの一部を割り当てる。
【0040】
アソシアティビティアロケータ110は、カテゴリに対応するデータストア106からのデータがサブセットのキャッシュラインにロードされるように、キャッシュ102のキャッシュラインのサブセットをカテゴリのために予約することによって、キャッシュ要求のカテゴリにキャッシュ102のアソシアティビティの一部を割り当てる。キャッシュ要求の追加カテゴリが与えられると、アソシアティビティアロケータ110は、追加カテゴリのためにキャッシュラインの追加サブセットを予約することによって、アソシアティビティの追加部分を追加カテゴリに割り当てる。追加カテゴリに対応するデータストア106からのデータは、この追加サブセットのキャッシュラインにロードされる。したがって、キャッシュ要求の複数のカテゴリについて、アソシアティビティアロケータ110は、キャッシュ102のアソシアティビティを少なくとも2つの部分に分割し、アソシアティビティの各部分は、キャッシュ102のキャッシュラインのそれぞれのサブセットに対応する。
【0041】
説明される技術によれば、アソシアティビティは、データストア106内の場所におけるデータが、例えばキャッシュミスに応じてロードされることが許可されるキャッシュ102のキャッシュラインのセットを定義する。1つ以上の実施形態では、例えば、キャッシュ102はフルアソシアティブであり、これは、キャッシュ102が、データストア106内の場所におけるデータがキャッシュ102の任意のキャッシュラインにロードされるのを許可することを意味する。したがって、そのような実施形態では、キャッシュラインのセットは、キャッシュ102の全てのキャッシュラインに対応する。
【0042】
しかし、キャッシュ要求のカテゴリにアソシアティビティの一部を割り当てることによって、アソシアティビティアロケータ110は、データに関連付けられた要求のカテゴリ、例えば、要求が対応するワークロードに基づいて、データストア106内の場所におけるデータがロードされることが許可される、定義されたキャッシュラインのセットのうち何れのキャッシュラインかを更に制限する。したがって、アソシアティビティアロケータ110は、データストア106内の場所におけるデータが、要求のカテゴリに基づいて、定義されたキャッシュラインのセットのサブセットにロードされることを許可する。カテゴリに基づいて、データストア106内の異なる場所にあるデータが定義されたセットの何れのキャッシュラインにロードされることを許可されるかを更に制限することによって、アソシアティビティアロケータ110は、キャッシュ要求の特定のカテゴリが、定義されたセットの全てのキャッシュラインの使用を支配することを防止し、そうでなければ、例えば、キャッシュ102のアソシアティビティを考慮して、キャッシュラインの使用が許可される。例えば、アウトオブオーダキャッシュに関連して使用される場合、アソシアティビティアロケータ110によって割り当てられたアソシアティビティは、要求の順方向進行を改善するが、いくつかの従来技術では、要求ストリームがアウトオブオーダキャッシュを支配し、他の要求ストリームを枯渇させることができる。上記及び下記のようにキャッシュのアソシアティビティを割り当てることは、チューニング動作及びデバッギング動作に関連付けられた決定論的挙動のためのマルチスレッドのキャッシュインパクトを分離する。
【0043】
1つ以上の実施形態では、アソシアティビティアロケータ110は、要求114によって識別されたデータがキャッシュ102に記憶されているかどうかを決定するために、例えば、キャッシュミス又はキャッシュヒットを検出するために、コントローラ108が要求114に基づいて何れのキャッシュラインを検索するかを制限しない。むしろ、アソシアティビティアロケータ110は、キャッシュ置換ポリシー112を使用して、キャッシュミスに関連してコントローラ108が何れのキャッシュラインからデータを追い出し、何れのキャッシュラインにデータをロードすることを許可されるかを制限する。例えば、コントローラ108は、要求114に関連付けられたカテゴリを決定する。カテゴリに割り当てられたアソシアティビティの一部により、アソシアティビティアロケータ110は、何れのキャッシュラインが要求114に対応するデータへの割り当てに利用可能であるかを制限する。キャッシュ要求のカテゴリにキャッシュのアソシアティビティの一部を割り当てることのコンテキストにおいて、図2の以下の説明を検討する。
【0044】
図2は、アソシアティビティアロケータがキャッシュ要求のカテゴリにキャッシュのアソシアティビティの一部を割り当てる非限定的な例200を示す。例200は、図1のキャッシュ102及びアソシアティビティアロケータ110を含む。
【0045】
この例200では、キャッシュ102は、キャッシュライン202~216を含む。キャッシュ102は、示された例200において8つのキャッシュラインを有するように示されているが、キャッシュ102は、説明された技術から逸脱することなく、様々な実施形態において異なる数のキャッシュラインを含むことを理解されたい。
【0046】
例200は、第1の段階218及び第2の段階220におけるアソシアティビティアロケータ110及びキャッシュ102を示し、第2の段階220は、第1の段階218に対応する時間の後の時間に対応する。第1の段階218は、アソシアティビティアロケータ110がキャッシュ要求のカテゴリにキャッシュ102のアソシアティビティの一部を割り当てるときよりも前のキャッシュ102を示す。
【0047】
例200は、第2の段階220におけるトリガイベント222を含む。トリガイベント222は、様々なイベントのうち少なくとも1つに対応し、アソシアティビティアロケータ110をトリガして、キャッシュ要求のカテゴリにキャッシュ102のアソシアティビティの一部を割り当てる。トリガイベント222の例は、いくつか例を挙げると、キャッシュクライアント104を介して実行するためのアプリケーション及び/又はプロセスを起動すること、(例えば、キャッシュクライアント104を介してワークロード又はスレッドが実行されている間に)追加ワークロード又はスレッドを初期化又は起動すること、キャッシュ要求のカテゴリに関連付けられた要求が、定義されたセットのキャッシュライン(例えば、キャッシュライン202~216)の使用を支配しており、その結果、キャッシュ要求の追加カテゴリに関連付けられた要求に関連する性能が低下する可能性が高いと決定すること、キャッシュ102の使用量が閾値使用量(例えば、使用頻度閾値、ストールの閾値数、時間間隔ごとのキャッシュミスの閾値数)を超えると決定すること、決定されたリアルタイム性能フィードバック(例えば、ヒット/ミス率)、又は、ハードウェアイベントへの応答(例えば、スローされた例外)が挙げられるが、これらに限定されない。トリガイベント222の別の例は、(例えば、アプリケーションから直接、又は、コンパイル及び/若しくはドライバからのフィードバックに基づいて)ソフトウェアによるアソシアティビティの割り当てを開始する、ソフトウェアによるトリガリングである。様々な実施形態において、例えば、ソフトウェアは、チューニング及び/又はバランシングのためにアソシアティビティの割り当てをトリガし、アソシアティビティは、単一のワークロード(又はスレッド)又は複数のワークロード(又はスレッド)のためのカテゴリのプログラムされた組み合わせに従って割り当てられる。追加の例示的なトリガイベント222は、無関係なワークロードの一緒の実行(例えば、独立したワークロードが他のワークロードの知識なしに単一のコンピューティングユニットを共有する場合の仮想化中等)と、コントローラ108によるカテゴリ(例えば、「新しい」カテゴリ)の受信を含む。様々な実施形態では、異なるトリガイベントにより、アソシアティビティアロケータ110が、キャッシュ要求のカテゴリにキャッシュ102のアソシアティビティの一部を割り当てることを理解されたい。
【0048】
トリガイベント222に基づいて、アソシアティビティアロケータ110は、部分的に、アソシアティビティを少なくとも第1の部分及び第2の部分に分割することによって、キャッシュ102のアソシアティビティを割り当てる。この例200では、例えば、キャッシュ102は、キャッシュライン202~216のセットに対してフルアソシアティブである。これは、キャッシュ102が、例えばキャッシュミスに応じて、データストア106内の場所からのデータが第1の段階218においてキャッシュライン202~216のうち何れかにロードされるのを許可することを意味する。説明される技術によれば、アソシアティビティアロケータ110は、トリガイベント222に基づいて、キャッシュ102のアソシアティビティを、キャッシュ102のキャッシュライン(例えば、キャッシュライン202、204、206、208)の第1のサブセットに対応する第1の部分及びキャッシュ102のキャッシュライン(例えば、キャッシュライン210、212、214、216)の第2のサブセットに対応する第2の部分に分割する。
【0049】
アソシアティビティが分割されると、アソシアティビティアロケータ110は、アソシアティビティの第1の部分をキャッシュ要求の第1のカテゴリ224に割り当てる。その結果、キャッシュ102のアソシアティビティによって許可されるように、コントローラ108がキャッシュ要求の第1のカテゴリ224に対応するデータをキャッシュライン202~216の何れかにロードするのを許可するのではなく、アソシアティビティアロケータ110は、コントローラ108がそのようなデータをキャッシュライン202~208にロードすることを制限する。1つ以上の実施形態では、アソシアティビティアロケータ110は、アソシアティビティの第2の部分をキャッシュ要求の第2のカテゴリ(図示せず)に割り当てる。そのような実施形態では、アソシアティビティアロケータ110は、キャッシュ102のアソシアティビティによって許可されるように、コントローラ108がそのデータをキャッシュライン210~216の何れかにロードするのを許可するのではなく、コントローラ108がキャッシュ要求の第2のカテゴリに対応するデータをキャッシュライン202~216にロードすることを制限する。
【0050】
様々な実施形態において、アソシアティビティアロケータ110は、異なる方式でアソシアティビティを分割する。例えば、キャッシュ要求の2つのカテゴリ(例えば、第1のワークロード又はスレッドに対応する要求の第1のカテゴリ及び第2のワークロード又はスレッドに対応する要求の第2のカテゴリ)を伴う少なくとも1つのシナリオでは、アソシアティビティアロケータ110は、キャッシュ102のアソシアティビティを、要求の第1のカテゴリがキャッシュラインの半分にロードされるそれらのそれぞれのデータを有するように制限され、要求の第2のカテゴリがキャッシュラインの他方の半分にロードされるそれらのそれぞれのデータを有するように制限される等しい部分等の2つの部分に分割する。
【0051】
別の例では、アソシアティビティアロケータ110は、キャッシュ102のアソシアティビティを、キャッシュ要求の4つのカテゴリ、例えば、第1のワークロード又はスレッドに対応する要求の第1のカテゴリ、第2のワークロード又はスレッドに対応する要求の第2のカテゴリ、第3のワークロード又はスレッドに対応する要求の第3のカテゴリ、及び、第4のワークロード又はスレッドに対応する要求の第4のカテゴリを伴うシナリオ等において、4つの部分に分割する。少なくとも1つのそのようなシナリオでは、アソシアティビティアロケータ110は、各カテゴリを、そのデータをキャッシュラインのそれぞれの4分の1にロードするように制限することによって、アソシアティビティを均等に分割する。しかしながら、1つ以上のシナリオでは、アソシアティビティアロケータ110は、キャッシュ要求の3つのカテゴリを伴う少なくとも1つのシナリオ等のように、キャッシュ要求のカテゴリ間でアソシアティビティを均等に分割しないことを理解されたい。アソシアティビティの様々な分割が上述されたが、アソシアティビティアロケータ110は、説明される技術から逸脱することなく、異なる方式でキャッシュラインのセットのアソシアティビティを分割し、割り当てるように構成される。
【0052】
アソシアティビティアロケータ110は、カテゴリにアソシアティビティの一部を割り当てることによって、例えば、キャッシュミスに応じて、カテゴリに対応するデータを追い出し、ロードするために、キャッシュ置換ポリシー112が何れのキャッシュラインを選択するのを許可されるかを制限する。例えば、所定の要求について、キャッシュ置換ポリシー112は、要求に対応するカテゴリのために予約されたキャッシュラインのサブセット内のキャッシュラインを選択することに限定される。これに関連して、図3及び図4の以下の説明を検討する。
【0053】
図3は、キャッシュラインを選択するためのキャッシュ置換ポリシーのトラバーサルアルゴリズムに従って、キャッシュ置換ポリシーのツリー構造がトラバースされる非限定的な例300を示す。
【0054】
図示された例300は、ツリー構造302を含む。この例300では、ツリー構造は、バイナリツリーである。しかしながら、他の例では、キャッシュ置換ポリシー112は、他のツリー構造を使用して実装されるか、又は、ツリー構造を使用せずに実装される。図示したように、ツリー構造302は、リーフノード304、306、308、310を含む。本明細書で説明するように、「リーフノード」は、子ノードを持たないバイナリツリー内のノードに対応する。リーフノード304、306、308、310は、キャッシュ102のキャッシュラインに対応する。例として、リーフノード304は、キャッシュライン202に対応し、リーフノード306は、キャッシュライン204に対応し、リーフノード308は、キャッシュライン206に対応し、リーフノード310は、キャッシュライン208に対応する。キャッシュ置換ポリシー112のトラバーサルアルゴリズムは、1つ以上のキャッシュラインが置換不可能であることに起因して、又は、アソシアティビティに対する制約に起因して等のように、リーフノード304~310に対応するキャッシュラインのうち何れかを選択することを防止されないシナリオでは、トラバーサルアルゴリズムは、単に、それぞれのルールセットに従ってツリー構造をトラバースさせて、データを追い出し、ロードするためのキャッシュラインを選択する。
【0055】
図示された例300において、トラバーサルアルゴリズムは、複数の段階においてツリー構造302をトラバースし、各段階において追い出し及びロードのためのキャッシュラインを選択することが示されている。図示された段階は、第1の段階312、第2の段階314、第3の段階316、第4の段階318、第5の段階320、及び、第6の段階322を含む。特に、複数の段階312~322は、バイナリツリーをトラバースするためのトラバーサルアルゴリズムの一例である、擬似最長時間未使用アルゴリズムによるツリーのトラバーサルを示す。上述したように、様々な実施形態では、キャッシュ置換ポリシー112は、説明される技術の趣旨又は範囲から逸脱することなく、異なるアルゴリズムに基づいて構成される。
【0056】
擬似最長時間未使用法によれば、ツリー構造302の各ノードは、ノードから子ノードへのツリー構造のトラバーサルの方向を示すトラバーサル方向インジケータを含むか、又は、それに関連付けられ、例えば、インジケータは、トラバーサルがノードから左の子ノードに進むか、又は、右の子ノードに進むかを示す。トラバーサル中にノードがトラバースされる場合、方向のインジケータは、後続のトラバーサルのための他の方向を示すように切り替えられ、例えば、ノードのインジケータがトラバーサルの前に左の子ノードに進むことを示し、ノードがトラバーサル中にトラバースされる場合(例えば、インジケータによって導かれるようにノードから左の子ノードに進むことによって)、インジケータは、ノードが次にトラバースされる場合にノードから右の子ノードに進むことを示すように切り替えられ、逆もまた同様である。
【0057】
リーフノード304~310に加えて、この例300におけるツリー構造302は、ノード324、326、328も含む。ツリー構造302はバイナリツリーであるので、各ノード(リーフノード以外)は2つの子ノードを有する。この例では、ノード324及びノード326は、ノード328の「子」ノードであり、したがって、ノード324及びノード326の「親」である。同様に、リーフノード304及び306は、ノード324の「子」ノードであり(したがって、リーフノード304及び306の「親」である)、リーフノード308及び310は、ノード326の「子」ノードである(したがって、リーフノード308及び310の親である)。
【0058】
この例では、ノード324、326、328の各々は、それぞれのトラバーサル方向インジケータのグラフィカル表現で示されている。第1の段階312において、例えば、グラフィカル表現は、ノード328がトラバースされる場合、ノード328のトラバーサル方向インジケータがアルゴリズムを左に導き、ノード324がトラバースされる場合、ノード324のトラバーサル方向インジケータがアルゴリズムを左に導き、ノード326がトラバースされる場合、ノード326のトラバーサル方向インジケータがアルゴリズムを左に導くことを示す。上述したように、擬似最長時間未使用法によれば、トラバーサル中にノードがトラバースされる場合、次いで、ノードのトラバーサル方向インジケータは、例えば、左の子ノードを右に指すことから、又は、右の子ノードを左に指すことから切り替えられる。
【0059】
擬似最長時間未使用に従ってツリー構造302をトラバースするために、キャッシュ置換ポリシー112のトラバーサルアルゴリズムは、ルートノード、すなわちノード328から開始する。第1の段階312において、ノード328のトラバーサル方向インジケータは、ノード328からその左の子ノード、すなわちノード324に進むようにトラバーサルアルゴリズムを導く。したがって、トラバーサルアルゴリズムは、ノード324をトラバースする。ノード324のトラバーサル方向インジケータは、トラバーサルアルゴリズムを、ノード324からその左の子ノード、すなわち、この例ではキャッシュライン202に対応するリーフノード304に進むように導く。ノード324の子ノードはリーフノードであるので、アルゴリズムはリーフノード304で停止し、したがって、データを追い出し、新しいデータをデータストア106からロードさせるために、リーフノード304に対応するキャッシュラインを選択する。図示された例300では、データストアデータ330(「A」としてグラフィカルに表される)は、したがって、キャッシュライン202にロードされる。データを追い出し、データストアデータ330をロードするためのトラバースに応じて、トラバースされたノードのトラバーサル方向インジケータが切り替えられる。ノード324、328は、データを追い出し、データストアデータ330をロードするためにトラバースされるので、これらのノードのトラバーサルインジケータは、アルゴリズムを左に導くことから、アルゴリズムを右に導くことに切り替えられる。ノード326は第1の段階312においてトラバースされないので、ノード326のトラバースインジケータは切り替えられず、アルゴリズムを左に導いたままである。
【0060】
したがって、第2の段階314において、それぞれのトラバーサル方向インジケータのグラフィカル表現は、ノード328がトラバースされる場合、ノード328のトラバーサル方向インジケータがアルゴリズムを右に導き、ノード324がトラバースされる場合、ノード324のトラバーサル方向インジケータがアルゴリズムを右に導き、ノード326がトラバースされる場合、ノード326のトラバーサル方向インジケータがアルゴリズムを左に導くことを示す。第2の段階314において、キャッシュ置換ポリシー112のトラバーサルアルゴリズムは、ルートノード、すなわちノード328においてツリー構造302のトラバースを開始する。第2の段階314において、ノード328のトラバーサル方向インジケータは、ノード328からその右の子ノード、すなわちノード326に進むようにトラバーサルアルゴリズムを導く。したがって、トラバーサルアルゴリズムは、ノード326をトラバースする。ノード326のトラバーサル方向インジケータは、トラバーサルアルゴリズムを、ノード326からその左の子ノード、すなわち、この例ではキャッシュライン206に対応するリーフノード308に進むように導く。
【0061】
ノード326の子ノードはリーフノードであるので、アルゴリズムはリーフノード308で停止し、したがって、データを追い出し、新しいデータをデータストア106からロードさせるために、リーフノード308に対応するキャッシュラインを選択する。図示された例300では、データストアデータ332(「B」としてグラフィカルに表される)は、したがって、キャッシュライン206にロードされる。データを追い出し、データストアデータ332をロードするためのトラバースに応じて、トラバースされたノードのトラバーサル方向インジケータが切り替えられる。ノード326、328は、データを追い出し、データストアデータ332をロードするためにトラバースされるので、これらのノードのトラバーサル方向インジケータが切り替えられる。具体的には、ノード328のトラバーサル方向インジケータは、アルゴリズムを右に導くことからアルゴリズムを左に導くことに切り替えられ、ノード326のトラバーサル方向インジケータは、アルゴリズムを左に導くことからアルゴリズムを右に導くことに切り替えられる。ノード324は第2の段階314においてトラバースされないので、ノード324のトラバースインジケータは切り替えられず、アルゴリズムを右に導いたままである。
【0062】
したがって、第3の段階316において、グラフィカル表現は、ノード328がトラバースされる場合、ノード328のトラバーサル方向インジケータがアルゴリズムを左に導き、ノード324がトラバースされる場合、ノード324のトラバーサル方向インジケータがアルゴリズムを右に導き、ノード326がトラバースされる場合、ノード326のトラバーサル方向インジケータがアルゴリズムを右に導くことを示す。第3の段階316において、キャッシュ置換ポリシー112のトラバーサルアルゴリズムは、ルートノード、すなわちノード328においてツリー構造302のトラバースを開始する。第3の段階316において、ノード328のトラバーサル方向インジケータは、ノード328からその左の子ノード、すなわちノード324に進むようにトラバーサルアルゴリズムを導く。したがって、トラバーサルアルゴリズムは、ノード324をトラバースする。ノード324のトラバーサル方向インジケータは、トラバーサルアルゴリズムを、ノード324からその右の子ノード、すなわち、この例ではキャッシュライン204に対応するリーフノード306に進むように導く。
【0063】
ノード324の子ノードはリーフノードであるので、アルゴリズムはリーフノード306で停止し、したがって、データを追い出し、新しいデータをデータストア106からロードさせるために、リーフノード306に対応するキャッシュラインを選択する。図示された例300では、データストアデータ334(「C」としてグラフィカルに表される)は、したがって、キャッシュライン204にロードされる。データを追い出し、データストアデータ334をロードするためのトラバースに応じて、トラバースされたノードのトラバーサル方向インジケータが切り替えられる。ノード324、328は、データを追い出し、データストアデータ334をロードするためにトラバースされるので、これらのノードのトラバーサル方向インジケータが切り替えられる。具体的には、ノード328のトラバーサル方向インジケータは、アルゴリズムを左に導くことからアルゴリズムを右に導くことに切り替えられ、ノード324のトラバーサル方向インジケータは、アルゴリズムを右に導くことからアルゴリズムを左に導くことに切り替えられる。ノード326は第3の段階316においてトラバースされないので、ノード326のトラバースインジケータは切り替えられず、アルゴリズムを右に導いたままである。
【0064】
キャッシュ置換ポリシー112のトラバーサルアルゴリズムは、トラバーサル方向インジケータに従ってキャッシュ置換ポリシー112のツリー構造302をトラバースし続け、それぞれ、第4、第5、第6の段階318、320、322にわたってトラバースされるノードのインジケータを切り替え続ける。そのようなトラバースに関連して、キャッシュ置換ポリシー112は、データの追い出し、並びに、データストアデータ336(図では「D」として表される)及びデータストアデータ338(図では「E」として表される)の、図示されたリーフノードに対応するキャッシュラインへのロードを更に導く。キャッシュ置換ポリシー112をキャッシュ要求の異なるカテゴリに割り当てるためにキャッシュ置換ポリシーを修正するコンテキストにおいて、以下の説明を検討する。
【0065】
図4は、キャッシュ置換ポリシーが、キャッシュ要求のカテゴリにキャッシュのアソシアティビティの一部を割り当てるように修正される実施形態の非限定的な例400を示す。図示された例400では、アソシアティビティアロケータ110は、キャッシュ置換ポリシー112のトラバーサルアルゴリズムを部分的に修正して、キャッシュ要求の2つのカテゴリにキャッシュ102のアソシアティビティの一部を割り当てる。
【0066】
図示された例400は、ツリー構造402を含む。この例では、ツリー構造は、バイナリツリーであるが、キャッシュ置換ポリシーは、様々な実施形態において他のツリー構造を使用して実装されるか、又は、ツリー構造を使用せずに実装される。図示されたように、ツリー構造は、リーフノード404、406、408、410、及び、ノード412、414、416を含む。リーフノード404~410は、キャッシュ102のキャッシュラインに対応する。例として、リーフノード404は、キャッシュライン202に対応し、リーフノード406は、キャッシュライン204に対応し、リーフノード408は、キャッシュライン206に対応し、リーフノード410は、キャッシュライン208に対応する。リーフノード404~410は、ノード412及びノード414の「子」ノードである。更に、ノード412及びノード414は、ノード416の「子」ノードであり、したがって、ノード412及びノード414の「親」である。
【0067】
例400において、アソシアティビティアロケータ110は、ツリー構造402の特定のノードにおいて、ツリー構造402をトラバースするために使用されるトラバーサルアルゴリズムを修正することによって、キャッシュ102のアソシアティビティをキャッシュ要求のカテゴリに割り当てる。この例では、アソシアティビティアロケータ110は、ノード416におけるトラバーサルアルゴリズムを修正するが、ツリー構造402の他のノードにおけるトラバーサルアルゴリズムを修正しない。ただし、変形例では、アソシアティビティアロケータ110は、説明される技術の趣旨又は範囲から逸脱することなく、アソシアティビティを割り当てるために、2つ以上のノードにおいてトラバーサルアルゴリズムを修正するか、又は、異なる方式でトラバーサルアルゴリズムを修正する。例えば、いくつかの変形例において、アソシアティビティアロケータ110は、ツリー構造の同じレベルにわたる複数のノードにおいてトラバーサルアルゴリズムを修正する。
【0068】
この例400では、キャッシュ置換ポリシー112のトラバーサルアルゴリズムは、擬似最長時間未使用であり、その詳細は、図3に関連して上記でより詳細に説明される。アソシアティビティアロケータ110は、キャッシュ102のアソシアティビティの第1の部分を(例えば、第1のワークロード又はスレッドに対応する)要求の第1のカテゴリに割り当て、キャッシュ102のアソシアティビティの第2の部分を(例えば、第2のワークロード又はスレッドに対応する)要求の第2のカテゴリに割り当てる。カテゴリにアソシアティビティの一部を割り当てるために、この例400では、アソシアティビティアロケータ110は、ノード416のトラバーサル方向インジケータを、要求の第1のカテゴリに対する第1の方向(例えば、左)及び要求の第2のカテゴリに対する第2の方向(例えば、右)に「ロック」するか又は他の方法で設定することによって、トラバーサルアルゴリズムを修正する。
【0069】
ノード416のトラバーサル方向インジケータを要求の第1及び第2のカテゴリに対して異なる方向にロックすることによって、アソシアティビティアロケータ110は、キャッシュ置換ポリシー112のトラバーサルアルゴリズムを、それぞれ、リーフノード404、406に対応する第1のカテゴリのキャッシュライン202、204を選択するように制限する。アソシアティビティアロケータ110は、トラバーサルアルゴリズムを、それぞれ、リーフノード408、410に対応する第2のカテゴリのキャッシュライン206、208を選択することに更に制限する。このようにして、アソシアティビティアロケータは、アソシアティビティの半分(キャッシュライン202及び204に対応する)を第1のカテゴリのキャッシュ要求に予約し、アソシアティビティの残りの半分(キャッシュライン206及び208に対応する)を第2のカテゴリのキャッシュ要求に予約する。
【0070】
これを示すために、例400は、第1の一連の段階418、420、422を含み、ノード416のトラバーサル方向インジケータは、第1のカテゴリに対応する要求に対して左を指してロックされている。また、例400は、第2の一連の段階424、426、428を含み、ノード416のトラバーサル方向インジケータは、第2のカテゴリに対応する要求に対して右を指してロックされている。
【0071】
この例400では、データストアデータ430(「A」としてグラフィカルに表される)及びデータストアデータ432(「B」としてグラフィカルに表される)は、キャッシュ要求の第1のカテゴリに対応する。例えば、データストアデータ430は、キャッシュミスをもたらしたキャッシュ102にアクセスする要求に対応し、要求は、第1のワークロード又はスレッド等の第1のカテゴリに関連付けられる。更に、データストアデータ432は、キャッシュミスをもたらしたキャッシュ102にアクセスするための追加要求に対応し、追加要求も、第1のワークロード又はスレッド等の第1のカテゴリに関連付けられる。
【0072】
第1のシリーズの第1の段階418において、キャッシュ置換ポリシー112は、ルートノード、すなわちノード416においてツリー構造402のトラバースを開始する。アソシアティビティアロケータ110は、第1のカテゴリに対してそのトラバーサル方向インジケータを左にロックすることによって、ノード416におけるトラバーサルアルゴリズムを修正しているので、トラバーサルアルゴリズムは、ノード416からその左の子ノード、すなわちノード412に進む。したがって、トラバーサルアルゴリズムは、ノード412をトラバースする。ノード412はロックされていないので、ノード412は、この例で使用される擬似最長時間未使用による未修正のトラバーサルアルゴリズムに従ってトラバースされる。ノード412のトラバーサル方向インジケータは、トラバーサルアルゴリズムを、ノード412からその左の子ノード、すなわち、この例ではキャッシュライン202に対応するリーフノード404に進むように導く。ノード412の子ノードはリーフノードであるので、アルゴリズムはリーフノード404で停止し、したがって、データを追い出し、新しいデータをデータストア106からロードさせるために、リーフノード404に対応するキャッシュラインを選択する。
【0073】
図示された例400では、データストアデータ430は、したがって、キャッシュライン202にロードされる。データを追い出し、データストアデータ430をロードするためのトラバースに応じて、トラバースされたノードのトラバーサル方向インジケータは、擬似最長時間未使用に従って切り替えられる。ノード412は、データを追い出し、データストアデータ430をロードするためにトラバースされるので、ノード412のトラバースインジケータは、アルゴリズムを左に導くことからアルゴリズムを右に導くことに切り替えられる。ノード416はアソシアティビティアロケータ110によってロックされているので、ノード416のトラバーサル方向インジケータは切り替えられず、第1のカテゴリの要求に関連するトラバーサルを左に導いたままである。
【0074】
第1のシリーズの第2の段階420において、キャッシュ置換ポリシー112は、ルートノード、すなわちノード416においてツリー構造402のトラバースを開始する。ノード416のトラバーサル方向インジケータは左にロックされているので、トラバーサルアルゴリズムは、ノード416からその左の子ノード、すなわちノード412に進む。したがって、トラバーサルアルゴリズムは、ノード412をトラバースする。上述したように、ノード412はロックされず、そのトラバーサル方向インジケータは、後続のトラバースにおいてアルゴリズムを右に導くために、第1の段階418におけるトラバースによって切り替えられる。その結果、第2の段階420において、ノード412のトラバーサル方向インジケータは、ノード412からその右の子ノード、すなわち、この例ではキャッシュライン204に対応するリーフノード406に進むようにトラバーサルアルゴリズムに導く。ノード412のこの子ノードはリーフノードであるので、アルゴリズムはリーフノード406で停止し、したがって、データを追い出し、新しいデータをデータストア106からロードさせるために、リーフノード406に対応するキャッシュラインを選択する。
【0075】
図示された例400では、データストアデータ432は、したがって、キャッシュライン204にロードされる。データを追い出し、データストアデータ432をロードするためのトラバースに応じて、トラバースされたノードのトラバーサル方向インジケータは、擬似最長時間未使用に従って切り替えられる。ノード412は、データを追い出し、データストアデータ432をロードするためにトラバースされるので、ノード412のトラバースインジケータは、第1のシリーズの第3の段階422に示されるように、アルゴリズムを右に導くことからアルゴリズムを左に導くことに切り替えられる。ノード416はアソシアティビティアロケータ110によってロックされているので、ノード416のトラバーサル方向インジケータは切り替えられず、第1のカテゴリの要求に関連するトラバーサルを左に導いたままである。
【0076】
対照的に、データストアデータ434(「C」としてグラフィカルに表される)及びデータストアデータ436(「D」としてグラフィカルに表される)は、キャッシュ要求の第2のカテゴリに対応する。例えば、データストアデータ434は、キャッシュミスをもたらしたキャッシュ102にアクセスする要求に対応し、要求は、第2のワークロード又はスレッド等の第2のカテゴリに関連付けられる。更に、データストアデータ436は、キャッシュミスをもたらしたキャッシュ102にアクセスするための追加要求に対応し、追加要求は、第2のワークロード又はスレッド等の第2のカテゴリに関連付けられる。
【0077】
第2のシリーズの第1の段階424において、キャッシュ置換ポリシー112は、ルートノード、すなわちノード416においてツリー構造402のトラバースを開始する。アソシアティビティアロケータ110は、第2のカテゴリに対してそのトラバーサル方向インジケータを右にロックすることによって、ノード416におけるトラバーサルアルゴリズムを修正しているので、トラバーサルアルゴリズムは、ノード416からその右の子ノード、すなわちノード414に進む。したがって、トラバーサルアルゴリズムは、ノード414をトラバースする。ノード414はロックされていないので、ノード414は、この例で使用される擬似最長時間未使用による未修正のトラバーサルアルゴリズムに従ってトラバースされる。ノード414のトラバーサル方向インジケータは、トラバーサルアルゴリズムを、ノード414からその左の子ノード、すなわち、この例ではキャッシュライン206に対応するリーフノード408に進むように導く。ノード414の子ノードはリーフノードであるので、アルゴリズムはリーフノード408で停止し、したがって、データを追い出し、新しいデータをデータストア106からロードさせるために、リーフノード408に対応するキャッシュラインを選択する。
【0078】
図示された例400では、データストアデータ434は、したがって、キャッシュライン206にロードされる。データを追い出し、データストアデータ434をロードするためのトラバースに応じて、トラバースされたノードのトラバーサル方向インジケータは、擬似最長時間未使用に従って切り替えられる。ノード414は、データを追い出し、データストアデータ434をロードするためにトラバースされるので、ノード414のトラバースインジケータは、アルゴリズムを左に導くことからアルゴリズムを右に導くことに切り替えられる。ノード416はアソシアティビティアロケータ110によってロックされているので、ノード416のトラバーサル方向インジケータは切り替えられず、第2のカテゴリの要求に関連するトラバーサルを右に導いたままである。
【0079】
第2のシリーズの第2の段階426において、キャッシュ置換ポリシー112は、ルートノード、すなわちノード416においてツリー構造402のトラバースを開始する。ノード416のトラバーサル方向インジケータは、第2のカテゴリに対して右にロックされているので、トラバーサルアルゴリズムは、ノード416からその右の子ノード、すなわちノード414に進む。したがって、トラバーサルアルゴリズムは、ノード414をトラバースする。上述したように、ノード414はロックされず、そのトラバーサル方向インジケータは、後続のトラバースにおいてアルゴリズムを右に導くために、第1の段階424におけるトラバースによって切り替えられる。その結果、第2の段階426において、ノード414のトラバーサル方向インジケータは、ノード414からその右の子ノード、すなわち、この例ではキャッシュライン208に対応するリーフノード410に進むようにトラバーサルアルゴリズムに導く。ノード414のこの子ノードはリーフノードであるので、アルゴリズムはリーフノード410で停止し、したがって、データを追い出し、新しいデータをデータストア106からロードさせるために、リーフノード410に対応するキャッシュラインを選択する。
【0080】
図示された例400では、データストアデータ436は、したがって、キャッシュライン208にロードされる。データを追い出し、データストアデータ436をロードするためのトラバースに応じて、トラバースされたノードのトラバーサル方向インジケータは、擬似最長時間未使用に従って切り替えられる。ノード414は、データを追い出し、データストアデータ436をロードするためにトラバースされるので、ノード414のトラバースインジケータは、第2のシリーズの第3の段階428に示されるように、アルゴリズムを右に導くことからアルゴリズムを左に導くことに切り替えられる。ノード416はアソシアティビティアロケータ110によってロックされているので、ノード416のトラバーサル方向インジケータは切り替えられず、第1のカテゴリの要求に関連するトラバーサルを左に導いたままである。
【0081】
図5は、キャッシュ要求のカテゴリにキャッシュのアソシアティビティの一部を割り当てる例示的な実施形態における手順500を示す。
【0082】
キャッシュのアソシアティビティの一部は、キャッシュ要求のカテゴリに割り当てられる(ブロック502)。本明細書で説明される原理によれば、アソシアティビティの一部は、キャッシュのキャッシュラインのサブセットに対応する。例として、アソシアティビティアロケータ110は、カテゴリに対応するデータストア106からのデータがサブセットのキャッシュラインにロードされるように、キャッシュ102のキャッシュラインのサブセットをカテゴリのために予約することによって、キャッシュ要求のカテゴリにキャッシュ102のアソシアティビティの一部を割り当てる。例として、アソシアティビティアロケータ110は、キャッシュ102のアソシアティビティの第1の部分をキャッシュ要求の第1のカテゴリ224に割り当てる。キャッシュ102のアソシアティビティの第1の部分は、例えば、キャッシュライン202~208に対応する。キャッシュ102のアソシアティビティの第1の部分を第1のカテゴリ224に割り当てることによって、アソシアティビティアロケータ110は、コントローラ108が、第1のカテゴリ224による後続のキャッシュ要求に関連付けられたデータをキャッシュライン202~208にロードすることを制限する。
【0083】
キャッシュにアクセスする要求が受信され(ブロック504)、要求がカテゴリに関連付けられていることが決定される(ブロック506)。例として、コントローラ108は、キャッシュ102にアクセスする要求114を受信し、コントローラ108は、要求114に関連付けられたカテゴリを決定する。例えば、コントローラ108は、要求114が第1のカテゴリ224に関連付けられていると決定する。
【0084】
キャッシュラインのサブセットのキャッシュラインが要求に割り当てられ、要求に対応するデータが、キャッシュラインのサブセットのキャッシュラインにロードされる(ブロック508)。例として、要求114がキャッシュ要求の第1のカテゴリ224に関連付けられているとコントローラ108が決定した場合、次いで、要求114に対応するデータストアデータ120は、アソシアティビティアロケータによってキャッシュ要求の第1のカテゴリ224に割り当てられているキャッシュ102のキャッシュライン202~208のうち何れかにロードされる。
【0085】
図6は、キャッシュのアソシアティビティを分割し、キャッシュ要求の異なるカテゴリにキャッシュのアソシアティビティの一部を割り当てる例示的な実施形態における手順600を示す。
【0086】
キャッシュのアソシアティビティは、少なくとも第1の部分及び第2の部分に分割される(ブロック602)。例として、アソシアティビティアロケータ110は、キャッシュ102のアソシアティビティを、キャッシュ102のキャッシュライン(例えば、キャッシュライン202、204、206、208)の第1のサブセットに対応する第1の部分及びキャッシュ102のキャッシュライン(例えば、キャッシュライン210、212、214、216)の第2のサブセットに対応する第2の部分に分割する。
【0087】
キャッシュのアソシアティビティの第1の部分は、キャッシュ要求の第1のカテゴリに割り当てられる(ブロック604)。ここで説明される原理によれば、割り当てることは、キャッシュ要求の第1のカテゴリを、キャッシュミスに応じて、キャッシュのアソシアティビティの第1の部分を使用してデータをロードすることに制限する。例として、アソシアティビティが分割されると、アソシアティビティアロケータ110は、キャッシュ102のアソシアティビティの第1の部分をキャッシュ要求の第1のカテゴリ224に割り当てる。その結果、キャッシュ102のアソシアティビティによって許可されるように、コントローラ108がキャッシュ要求の第1のカテゴリ224に対応するデータをキャッシュライン202~216の何れかにロードすることを許可するのではなく、アソシアティビティアロケータ110は、コントローラ108を、キャッシュライン202、204、206、208に対応するキャッシュ102のアソシアティビティの第1の部分を使用してそのようなデータをロードするように制限する。
【0088】
キャッシュのアソシアティビティの第2の部分は、キャッシュ要求の第2のカテゴリに割り当てられる(ブロック606)。本明細書で説明される原理によれば、割り当てることは、キャッシュ要求の第2のカテゴリを、キャッシュミスに応じて、キャッシュのアソシアティビティの第2の部分を使用してデータをロードすることに制限する。例として、アソシアティビティアロケータ110は、アソシアティビティの第2の部分をキャッシュ要求の第2のカテゴリに割り当てる。そのような実施形態では、アソシアティビティアロケータ110は、キャッシュ102のアソシアティビティによって許可されるように、コントローラ108がそのデータをキャッシュライン210~216の何れかにロードするのを許可するのではなく、コントローラ108がキャッシュ要求の第2のカテゴリに対応するデータをキャッシュライン202~216にロードすることを制限する。
【0089】
本明細書の開示に基づいて、多くの変形例が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに他の特徴及び要素との様々な組み合わせで使用可能である。
【0090】
図に示され及び/又は本明細書で説明される様々な機能ユニット(適切な場合、キャッシュ102、キャッシュクライアント104、データストア106、コントローラ108、アソシアティビティアロケータ110、及び、キャッシュ置換ポリシー112を含む)は、ハードウェア回路、プログラマブルプロセッサ上で実行されるソフトウェア若しくはファームウェア、又は、ハードウェア、ソフトウェア及びファームウェアのうち2つ以上の任意の組み合わせ等のように、様々な異なる様式の何れかで実装される。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコア等の様々なデバイスの何れかにおいて実装される。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタルシグナルプロセッサ(digital signal processor、DSP)、グラフィックス処理ユニット(graphics processing unit、GPU)、並列加速プロセッサ、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態マシンが挙げられる。
【0091】
1つ以上の実施形態では、本明細書に提供される方法は、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実施することができる。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(random access memory、RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
【0092】
(結論)
システム及び技術は、構造的特徴及び/又は方法論的行為に特有の言語で説明されてきたが、添付の特許請求の範囲において定義されるシステム及び技術は、説明される特定の特徴又は行為に必ずしも限定されないことを理解されたい。むしろ、特定の特徴及び行為は、特許請求される発明を実施する例示的な形態として開示される。
図1
図2
図3
図4
図5
図6
【国際調査報告】