(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-19
(54)【発明の名称】並列処理ユニットにおけるサーフェスキャッシュ可能性の確率的最適化
(51)【国際特許分類】
G06T 15/00 20110101AFI20241212BHJP
G06F 12/0875 20160101ALI20241212BHJP
G06F 12/0888 20160101ALI20241212BHJP
【FI】
G06T15/00 501
G06F12/0875 106
G06F12/0888 102
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024535348
(86)(22)【出願日】2022-12-15
(85)【翻訳文提出日】2024-06-25
(86)【国際出願番号】 US2022052964
(87)【国際公開番号】W WO2023121943
(87)【国際公開日】2023-06-29
(32)【優先日】2021-12-21
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】サウラブ シャルマ
(72)【発明者】
【氏名】ジェレミー ルカーチ
(72)【発明者】
【氏名】ハシェム ハシェミ
(72)【発明者】
【氏名】ジャンパオロ トマージ
(72)【発明者】
【氏名】クリストファー ブレナン
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205JJ13
5B205KK22
5B205LL15
5B205NN95
(57)【要約】
処理システム[100]は、キャッシュの記憶容量を超えるデータの繰り返しパターン[420]のキャッシュラインに並列処理ユニット[110]のローカルキャッシュ[120]におけるストレージを選択的に割り当てる。処理システムは、キャッシュの記憶容量を超える再使用距離を有するキャッシュラインを有するデータの繰り返しパターンを識別する。キャッシュコントローラ[130]は、キャッシュにおいてデータの繰り返しパターンのキャッシュラインのサブセット[140]のみにストレージを割り当て、データの繰り返しパターンのキャッシュラインの残り[415]をキャッシュから除外する。データの繰り返しパターンのキャッシュラインのサブセットのみを記憶するようにキャッシュを制限することによって、キャッシュコントローラは、キャッシュラインのサブセットに対するキャッシュでのヒット率を増加させる。
【選択図】
図8
【特許請求の範囲】
【請求項1】
キャッシュの記憶容量を超える数のキャッシュラインを有するデータの繰り返しパターンを識別することと、
前記キャッシュにおいて、識別されたデータの繰り返しパターンのキャッシュラインのサブセットのみにストレージを割り当てることと、を含む、
方法。
【請求項2】
前記データの繰り返しパターンのキャッシュラインの残りを前記キャッシュに記憶するのをバイパスすることを含む、
請求項1の方法。
【請求項3】
前記サブセットのみにストレージを割り当てることは、
前記キャッシュが記憶することができるキャッシュラインの最大数を超える前記データの繰り返しパターンのキャッシュラインを前記残りとして選択することを含む、
請求項2の方法。
【請求項4】
前記繰り返しパターンを識別することは、
前記データの繰り返しパターンのキャッシュラインの再使用距離が、前記キャッシュに記憶することができるキャッシュラインの数よりも大きいと決定することと、
前記サブセットを、前記キャッシュに記憶することができるキャッシュラインの数に制限することと、を含む、
請求項1~4の何れかの方法。
【請求項5】
前記キャッシュから除外する前記データの繰り返しパターンのキャッシュラインを反復的に選択することと、
前記キャッシュから除外されない前記データの繰り返しパターンのキャッシュラインのサブセットについてのヒット率を決定することと、
前記ヒット率に基づいて、前記キャッシュから除外する前記データの繰り返しパターンのキャッシュラインを選択することと、を含む、
請求項4の方法。
【請求項6】
前記キャッシュを2つ以上の部分に区分することと、
前記キャッシュの第1の部分を前記データの繰り返しパターンに割り当てることと、を含み、
前記データの繰り返しパターンのキャッシュラインの前記再使用距離が、前記キャッシュに記憶することができるキャッシュラインの数よりも大きいと決定することは、前記データの繰り返しパターンのキャッシュラインの前記再使用距離が、前記キャッシュの前記第1の部分に記憶することができるキャッシュラインの数よりも大きいと決定することを含む、
請求項4の方法。
【請求項7】
前記データの繰り返しパターンは、テクスチャを含む、
請求項1の方法。
【請求項8】
データの繰り返しパターンの全てのキャッシュラインがキャッシュの記憶容量を超えると決定したことに応じて、前記キャッシュのエントリを、前記データの繰り返しパターンのキャッシュラインのサブセットのみに割り当てることを含む、
方法。
【請求項9】
前記データの繰り返しパターンのキャッシュラインの残りを前記キャッシュに記憶するのをバイパスすることを含む、
請求項8の方法。
【請求項10】
前記キャッシュのエントリを前記サブセットのみに割り当てることは、
前記キャッシュが記憶することができるキャッシュラインの最大数を超える前記データの繰り返しパターンのキャッシュラインを前記残りとして選択することを含む、
請求項9の方法。
【請求項11】
前記データの繰り返しパターンのキャッシュラインの再使用距離が、前記キャッシュに記憶することができるキャッシュラインの数よりも大きいと決定することと、
前記サブセットを、前記キャッシュに記憶することができるキャッシュラインの数に制限することと、を含む、
請求項8~10の何れかの方法。
【請求項12】
前記キャッシュから除外する前記データの繰り返しパターンのキャッシュラインを反復的に選択することと、
前記キャッシュから除外されない前記データの繰り返しパターンのキャッシュラインについてのヒット率を決定することと、
前記ヒット率に基づいて、前記キャッシュから除外する前記データの繰り返しパターンのキャッシュラインを選択することと、を含む、
請求項11の方法。
【請求項13】
前記キャッシュを2つ以上の部分に区分することと、
前記キャッシュの第1の部分を前記データの繰り返しパターンに割り当てることと、を含み、
前記データの繰り返しパターンのキャッシュラインの前記再使用距離が、前記キャッシュに記憶することができるキャッシュラインの数よりも大きいと決定することは、前記データの繰り返しパターンのキャッシュラインの前記再使用距離が、前記キャッシュの前記第1の部分に記憶することができるキャッシュラインの数よりも大きいと決定することを含む、
請求項11の方法。
【請求項14】
前記データの繰り返しパターンは、テクスチャを含む、
請求項8の方法。
【請求項15】
デバイスであって、
並列処理ユニットを備え、
前記並列処理ユニットは、
キャッシュと、
キャッシュコントローラと、を備え、
前記キャッシュコントローラは、
前記キャッシュの記憶容量を超える数のキャッシュラインを有するデータの繰り返しパターンを識別し、
前記キャッシュにおいて、前記データの繰り返しパターンのキャッシュラインのサブセットのみにストレージを割り当てる、
デバイス。
【請求項16】
前記キャッシュコントローラは、
前記データの繰り返しパターンのキャッシュラインの残りを前記キャッシュに記憶するのをバイパスする、
請求項15のデバイス。
【請求項17】
前記キャッシュコントローラは、
前記キャッシュが記憶することができるキャッシュラインの最大数を超える前記データの繰り返しパターンのキャッシュラインを前記残りとして選択する、
請求項16のデバイス。
【請求項18】
前記キャッシュコントローラは、
前記データの繰り返しパターンのキャッシュラインの再使用距離が、前記キャッシュに記憶することができるキャッシュラインの数よりも大きいかどうかを決定し、
前記サブセットを、前記キャッシュに記憶することができるキャッシュラインの数に制限する、
請求項15~17の何れかのデバイス。
【請求項19】
前記キャッシュコントローラは、
前記キャッシュから除外する前記データの繰り返しパターンのキャッシュラインを反復的に選択し、
前記キャッシュから除外されない前記データの繰り返しパターンのキャッシュラインについてのヒット率を決定し、
前記ヒット率に基づいて、前記キャッシュから除外する前記データの繰り返しパターンのキャッシュラインを選択する、
請求項18のデバイス。
【請求項20】
前記キャッシュコントローラは、
前記キャッシュを2つ以上の部分に区分し、
前記キャッシュの第1の部分をデータの前記繰り返しパターンに割り当て、
前記データの第1の繰り返しパターンのキャッシュラインの再使用距離が、前記キャッシュの前記第1の部分に記憶することができるキャッシュラインの数よりも大きいと決定することによって、前記データの第1の繰り返しパターンのキャッシュラインの再使用距離が、前記キャッシュに記憶することができるキャッシュラインの数よりも大きいと決定する、
請求項18のデバイス。
【発明の詳細な説明】
【背景技術】
【0001】
グラフィックス処理ユニット(graphics processing units、GPU)等の並列処理ユニットを含む処理システムは、頻繁にアクセスされるデータを記憶するために様々な速度のキャッシュの階層を使用するキャッシュ階層(又はマルチレベルキャッシュ)を実装する。より頻繁に要求されるデータは、典型的には、プロセッサコア又は計算ユニットに物理的に(又は論理的に)より近く配置された比較的高速のキャッシュ(L1キャッシュ等)にキャッシュされる。より高いレベルのキャッシュ(L2キャッシュ、L3キャッシュ等)は、より低い頻度で要求されるデータを記憶する。最終レベルキャッシュ(LLC)は、最高レベル(及び最低アクセス速度)キャッシュであり、LLCは、システムメモリから直接データを読み取り、システムメモリに直接データを書き込む。キャッシュは、新しいデータがキャッシュラインに書き込まれる必要があることに応じてキャッシュライン内のデータを置換するキャッシュ置換ポリシーを実装するため、システムメモリとは異なる。例えば、LRU(least-recently-used)ポリシーは、LRUキャッシュライン内のデータを追い出し(エビクトし)、新しいデータをLRUキャッシュラインに書き込むことによって、最長時間アクセスされていないキャッシュライン内のデータを置換する。
【発明の概要】
【課題を解決するための手段】
【0002】
一例は、キャッシュの記憶容量を超える数のキャッシュラインを有するデータの繰り返しパターンを識別することと、キャッシュにおいて、識別されたデータの繰り返しパターンのキャッシュラインのサブセットのみにストレージを割り当てることと、を含む方法を含む。いくつかの例では、本方法は、データの繰り返しパターンのキャッシュラインの残りをキャッシュに記憶するのをバイパスすることを更に含む。いくつかの例では、サブセットのみにストレージを割り当てることは、キャッシュが残りとして記憶することができるキャッシュラインの最大数を超えるデータの繰り返しパターンのキャッシュラインを選択することを含む。
【0003】
いくつかの例では、繰り返しパターンを識別することは、データの繰り返しパターンのキャッシュラインの再使用距離(reuse distance)が、キャッシュに記憶することができるキャッシュラインの数よりも大きいと決定することと、サブセットを、キャッシュに記憶することができるキャッシュラインの数に制限することと、を含む。いくつかの例では、本方法は、キャッシュから除外するデータの繰り返しパターンのキャッシュラインを反復的に選択することと、キャッシュから除外されないデータの繰り返しパターンのキャッシュラインのサブセットについてのヒット率を決定することと、ヒット率に基づいて、キャッシュから除外するデータの繰り返しパターンのキャッシュラインを選択することと、を更に含む。
【0004】
いくつかの例では、本方法は、キャッシュを2つ以上の部分に区分することと、キャッシュの第1の部分をデータの繰り返しパターンに割り当てることと、を更に含む。データの繰り返しパターンのキャッシュラインの再使用距離が、キャッシュに記憶することができるキャッシュラインの数よりも大きいと決定することは、いくつかの例では、データの繰り返しパターンのキャッシュラインの再使用距離が、キャッシュの第1の部分に記憶することができるキャッシュラインの数よりも大きいと決定することを含む。いくつかの例では、データの繰り返しパターンは、テクスチャを含む。
【0005】
別の例示的な方法は、データの繰り返しパターンの全てのキャッシュラインがキャッシュの記憶容量を超えると決定したことに応じて、キャッシュのエントリを、データの繰り返しパターンのキャッシュラインのサブセットのみに割り当てることを含む。いくつかの例では、本方法は、データの繰り返しパターンのキャッシュラインの残りをキャッシュに記憶するのをバイパスすることを更に含む。キャッシュのエントリをサブセットのみに割り当てることは、いくつかの例では、キャッシュが残りとして記憶することができるキャッシュラインの最大数を超えるデータの繰り返しパターンのキャッシュラインを選択することを含む。
【0006】
いくつかの例では、本方法は、データの繰り返しパターンのキャッシュラインの再使用距離が、キャッシュに記憶することができるキャッシュラインの数よりも大きいと決定することと、サブセットを、キャッシュに記憶することができるキャッシュラインの数に制限することと、を更に含む。本方法は、いくつかの例では、キャッシュから除外するデータの繰り返しパターンのキャッシュラインを反復的に選択することと、キャッシュから除外されないデータの繰り返しパターンのキャッシュラインについてのヒット率を決定することと、ヒット率に基づいて、キャッシュから除外するデータの繰り返しパターンのキャッシュラインを選択することと、を更に含む。
【0007】
いくつかの例では、本方法は、キャッシュを2つ以上の部分に区分することと、キャッシュの第1の部分をデータの繰り返しパターンに割り当てることと、を更に含む。データの繰り返しパターンのキャッシュラインの再使用距離が、キャッシュに記憶することができるキャッシュラインの数よりも大きいと決定することは、データの繰り返しパターンのキャッシュラインの再使用距離が、キャッシュの第1の部分に記憶することができるキャッシュラインの数よりも大きいと決定することを含む。いくつかの例では、データの繰り返しパターンは、テクスチャを含む。
【0008】
別の例では、デバイスは、並列処理ユニットを含む。並列処理ユニットは、キャッシュと、キャッシュの記憶容量を超える数のキャッシュラインを有するデータの繰り返しパターンを識別し、キャッシュにおいてデータの繰り返しパターンのキャッシュラインのサブセットのみにストレージを割り当てるためのキャッシュコントローラと、を含む。キャッシュコントローラは、いくつかの例では、データの繰り返しパターンのキャッシュラインの残りをキャッシュに記憶するのをバイパスするためのものである。
【0009】
いくつかの例では、キャッシュコントローラは、キャッシュが残りとして記憶することができるキャッシュラインの最大数を超えるデータの繰り返しパターンのキャッシュラインを選択するように構成されている。キャッシュコントローラは、いくつかの例では、データの繰り返しパターンのキャッシュラインの再使用距離が、キャッシュに記憶することができるキャッシュラインの数よりも大きいかどうかを決定し、サブセットを、キャッシュに記憶することができるキャッシュラインの数に制限するように構成されている。一例では、キャッシュコントローラは、キャッシュから除外するデータの繰り返しパターンのキャッシュラインを反復的に選択し、キャッシュから除外されないデータの繰り返しパターンのキャッシュラインについてのヒット率を決定し、ヒット率に基づいて、キャッシュから除外するデータの繰り返しパターンのキャッシュラインを選択するように構成されている。
【0010】
別の例では、キャッシュコントローラは、キャッシュを2つ以上の部分に区分し、キャッシュの第1の部分をデータの繰り返しパターンに割り当てるように構成されている。キャッシュコントローラは、データの第1の繰り返しパターンのキャッシュラインの再使用距離が、キャッシュの第1の部分に記憶することができるキャッシュラインの数よりも大きいと決定することによって、データの第1の繰り返しパターンのキャッシュラインの再使用距離が、キャッシュに記憶することができるキャッシュラインの数よりも大きいと決定するように更に構成されている。
【0011】
本開示は、添付の図面を参照することによってより良好に理解され、その数々の特徴及び利点が当業者に明らかになり得る。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0012】
【
図1】いくつかの実施形態による、データの繰り返しパターンのサブセットを選択的にキャッシュするように構成された処理システムのブロック図である。
【
図2】いくつかの実施形態による、繰り返しパターンのサブセットを選択することがない、データの繰り返しパターンのキャッシングの図である。
【
図3】いくつかの実施形態による、データの繰り返しパターンのキャッシングの図である。
【
図4】いくつかの実施形態による、データの繰り返しパターンのキャッシュラインのサブセットのみにキャッシュにおけるストレージを割り当てるキャッシュコントローラのブロック図である。
【
図5】いくつかの実施形態による、キャッシュを区分し、データの繰り返しパターンのキャッシュラインのサブセットのみにキャッシュの一部におけるストレージを割り当てるキャッシュコントローラのブロック図である。
【
図6】いくつかの実施形態による、データの繰り返しパターンのキャッシュラインを選択的にキャッシュする図である。
【
図7】いくつかの実施形態による、データの繰り返しパターンのキャッシュラインを選択的にキャッシュする図である。
【
図8】いくつかの実施形態による、データの繰り返しパターンのキャッシュラインを選択的にキャッシュする方法を示すフロー図である。
【発明を実施するための形態】
【0013】
並列処理ユニットのプロセッサコアは、しばしば、サーフェス等のデータの繰り返しパターンに連続的にアクセスする作業アイテムのディスパッチを実行する。例示のために、作業アイテムの一連のディスパッチに添付されるテクスチャ等のサーフェスが、連続するレンダリングパス又はノイズ除去パスにおいて読み取られる。例えば、ビデオゲームのシーンの多くの要素は、カメラビューの位置又は角度が変化するにつれて、連続するフレームにおいてレンダリングされる。連続するパスは、ピクセルにマッピングする同じテクスチャデータを必要とする。場合によっては、テクスチャのサイズは、並列処理ユニットの最下位レベルキャッシュ(L1キャッシュ)の記憶容量を超える。
【0014】
従来、L1キャッシュのキャッシュコントローラは、LRUキャッシュ置換ポリシーを採用し、L1キャッシュに現在記憶されていないプロセッサコアによって要求されたデータ(すなわち、キャッシュミス)をキャッシュ階層内のより高いレベルのキャッシュからフェッチする。要求されたキャッシュラインのための空きを生成するために、L1キャッシュ内の最も長い間使用されていないキャッシュラインが追い出される。しかしながら、データの繰り返しパターンの再使用距離(すなわち、パターンの各繰り返しにおけるキャッシュラインの数)がL1キャッシュの記憶容量を超える場合、データの繰り返しパターンにおけるキャッシュラインに対する新しい要求がキャッシュコントローラによって受信されるまでに、キャッシュラインは、既にキャッシュから追い出されており、低い(又は0の)ヒット率をもたらす。データが後続のディスパッチによってアクセスすることができるようにメモリ階層のより遠隔のレベルからデータを取り出すことは、リソースを消費し、待ち時間を増加させる。
【0015】
図1~
図8は、繰り返しパターンがキャッシュの記憶容量を超えるサイズである場合に、データの繰り返しパターンのキャッシュラインに並列処理ユニットのローカルキャッシュにおけるストレージを選択的に割り当てるための処理システムのための技術を示す。処理システムは、キャッシュの記憶容量を超える再使用距離を有するキャッシュラインを有するデータの繰り返しパターンを識別する。キャッシュコントローラは、キャッシュにおいてデータの繰り返しパターンのキャッシュラインのサブセット(すなわち、全てではないがいくつか)のみにストレージを割り当て、データの繰り返しパターンのキャッシュラインの残りをキャッシュから除外する。例えば、キャッシュが一度に記憶することができるキャッシュラインの最大数がX個のキャッシュラインであり、処理システムがX+Y個のキャッシュラインであるデータの繰り返しパターンを識別する場合、いくつかの実施形態では、キャッシュコントローラは、データの繰り返しパターンの最初のX個のキャッシュラインのみにストレージを割り当て、残りのY個のキャッシュラインをキャッシュに記憶されることから除外する。残りのY個のキャッシュラインに対するプロセッサコアからの要求に応じて、キャッシュコントローラは、残りのY個のキャッシュラインをキャッシュ階層のより高いレベルからプロセッサコアに直接提供し、Y個のキャッシュラインをキャッシュに記憶することをバイパスする。データの繰り返しパターンの最初のX個のキャッシュラインのみを記憶するようにキャッシュを制限することによって、キャッシュコントローラは、最初のX個のキャッシュラインに対するキャッシュでのヒット率を増加させ、したがって、待ち時間を減少させ、ユーザエクスペリエンスを改善する。
【0016】
いくつかの実施形態では、処理システムは、反復プロセスにおいて、キャッシュに記憶するデータの繰り返しパターンからのキャッシュラインのサブセットを確率的に選択する。処理システムは、キャッシュラインの選択されたサブセットの各々についてヒット率を測定し、ヒット率に基づいて、キャッシュから除外するデータの繰り返しパターンのキャッシュラインを選択する。いくつかの実施形態では、キャッシュコントローラは、キャッシュを2つ以上の部分に区分し、キャッシュの一部をデータの第1の繰り返しパターンのキャッシュラインのサブセットを記憶するように割り当て、キャッシュの別の部分をデータの第2の繰り返しパターンのキャッシュラインのサブセットを記憶するように割り当てる。区分されたキャッシュについて、キャッシュコントローラは、データの第1の繰り返しパターンのキャッシュラインの再使用距離を、データの第1の繰り返しパターンが割り当てられるキャッシュの一部の記憶容量と比較する。再使用距離及びキャッシュの一部の記憶容量に基づいて、キャッシュコントローラは、キャッシュに記憶するデータの第1の繰り返しパターンのキャッシュラインのサブセットを選択し、データの第1の繰り返しパターンの残りのキャッシュラインをキャッシュから除外する。
【0017】
図1は、いくつかの実施形態による、キャッシュの記憶容量を超えるデータの繰り返しパターンのキャッシュラインに並列処理ユニットのローカルキャッシュにおけるストレージを選択的に割り当てるように構成された処理システム100を示す。処理システム100は、いくつかの実施形態による、ディスプレイ175に出力するように意図された視覚画像を生成するためのグラフィック処理ユニット(GPU)等の並列処理ユニット110を含む。並列プロセッサは、単一の命令を複数のデータ又はスレッドに対して並列に実行することができるプロセッサである。
【0018】
並列プロセッサの例は、グラフィックス、機械知能又は計算動作を実行するためのグラフィックス処理ユニット(GPU)、超並列プロセッサ、単一命令複数データ(SIMD)アーキテクチャプロセッサ及び単一命令複数スレッド(SIMT)アーキテクチャプロセッサ等のプロセッサを含む。いくつかの実施形態では、並列プロセッサは、コンピュータの一部として含まれる個別のデバイスである。高度プロセッサユニット等の他の実施形態では、並列プロセッサは、中央プロセッサユニット(central processor unit、CPU)等のホストプロセッサとともに単一のデバイスに含まれる。以下の説明は、例示の目的でグラフィックス処理ユニット(GPU)を使用するが、以下に説明される実施形態は、他のタイプの並列プロセッサに適用可能である。
【0019】
処理システム100は、システムメモリ150(本明細書ではメモリ150と呼ばれる)を含む。メモリ150のいくつかの実施形態は、ダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)として実装される。しかしながら、メモリ150は、スタティックランダムアクセスメモリ(static random access memory、SRAM)、不揮発性RAM等を含む他のタイプのメモリを使用して実装することもできる。図示された実施形態では、並列処理ユニット110は、バス160を介してメモリ150と通信する。しかしながら、並列処理ユニット110のいくつかの実施形態は、直接接続で、又は、他のバス、ブリッジ、スイッチ、ルータ等を介して、メモリ150と通信する。並列処理ユニット110は、メモリ150に記憶された命令を実行し、並列処理ユニット110は、実行された命令の結果等の情報をメモリ150に記憶する。例えば、メモリ150は、並列処理ユニット110によって実行されるアプリケーション155から命令のコピーを記憶することができる。並列処理ユニット110のいくつかの実施形態は、命令を同時に又は並列に独立して実行する複数のプロセッサコア(計算ユニットと呼ばれる)115を含む。
【0020】
処理システム100は、概して、アプリケーション155等の命令セット(例えばコンピュータプログラム)を実行して、電子デバイスのための指定されたタスクを実行するように構成されている。そのようなタスクの例は、電子デバイスの動作の側面(aspects)を制御すること、ユーザに情報を表示して、特定のユーザエクスペリエンスを提供すること、他の電子デバイスと通信すること等を含む。したがって、異なる実施形態では、処理システム100は、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、ゲームコンソール、タブレット、スマートフォン等の多数のタイプの電子デバイスのうち何れかで採用されている。処理システム100の構成要素は、ハードウェア、ファームウェア、ソフトウェア、又は、それらの任意の組み合わせとして実装される。処理システム100が、
図1に示すよりも多くの又は少ない構成要素を含んでもよいことを理解されたい。例えば、処理システム100は、1つ以上の入力インターフェース、不揮発性ストレージ、1つ以上の出力インターフェース、ネットワークインターフェース、及び、1つ以上のディスプレイ若しくはディスプレイインターフェースを更に含んでもよい。
【0021】
処理システム100は、命令を実行するための中央処理ユニット(CPU)105を含む。CPU105のいくつかの実施形態は、同時に又は並列に命令を独立して実行する複数のプロセッサコア(明確化のために図示せず)を含む。また、CPU105は、バス160に接続され、したがって、バス160を介して並列処理ユニット110及びメモリ150と通信する。CPU105は、メモリ150に記憶されたアプリケーション155のプログラムコード等の命令を実行し、CPU105は、実行された命令の結果等の情報をメモリ150に記憶する。また、CPU105は、並列処理ユニット110にドローコールを発行することによって、グラフィックス処理を開始することができる。ドローコールは、CPU105によって生成され、並列処理ユニット110がフレーム内のオブジェクト(又はオブジェクトの一部)をレンダリングするように命令するために並列処理ユニット110に送信されるコマンドである。ドローコールのいくつかの実施形態は、オブジェクト又はその一部をレンダリングするために並列処理ユニット110によって使用されるテクスチャ、状態、シェーダ、レンダリングオブジェクト、バッファ等を定義する情報を含む。並列処理ユニット110は、オブジェクトをレンダリングして、ディスプレイ175に提供されるピクセルの値を生成し、ディスプレイ175は、ピクセル値を使用して、レンダリングされたオブジェクトを表す画像を表示する。
【0022】
いくつかの実施形態では、レンダリングされる各フレームは、複数のパスにおいて、並列処理ユニット110のグラフィックスパイプラインによって処理される。例えば、シーンのジオメトリに対する第1のパス中に、ピクセル単位の照明を計算するために必要な属性のみがGバッファに書き込まれる。第2のパス中、グラフィックスパイプラインは、拡散及びスペキュラ照明データのみを出力する。グラフィックスパイプラインを通るフレームの第3のパスでは、グラフィックスパイプラインは、バックライトデータを読み取り、最終ピクセル単位シェーディングを出力する。したがって、マルチパスレンダリングでは、フレームのシーン及び関連付けられたオブジェクトが複数回レンダリングされる。オブジェクトが描かれる毎に、グラフィックスパイプラインは、オブジェクトの外観の追加のアスペクトを計算し、追加のアスペクトを以前の結果と組み合わせる。フレーム又はフレームのオブジェクトがグラフィックスパイプラインによってレンダリングされる毎に、レンダリングパスと称される。
【0023】
入力/出力(input/output、I/O)エンジン170は、ディスプレイ175に関連付けられた入力又は出力動作、及び、キーボード、マウス、プリンタ、外部ディスク等の処理システム100の他の要素を扱う。I/Oエンジン170は、I/Oエンジン170が並列処理ユニット110、メモリ150又はCPU105と通信するように、バス160に結合されている。図示された実施形態では、I/Oエンジン170は、コンパクトディスク(CD)、デジタルビデオディスク(DVD)等の外部記憶媒体180に記憶された情報を読み取るように構成されている。外部記憶媒体180は、ビデオゲーム等のアプリケーションを実施するために使用されるプログラムコードを表す情報を記憶する。外部記憶媒体180上のプログラムコードは、並列処理ユニット110又はCPU105によって実行される命令のコピーを形成するためにメモリ150に書き込むことができる。
【0024】
いくつかの実施形態では、並列処理ユニット110は、ドローコールに応じて異なるプリミティブを同時に処理するように構成された複数の段階(ステージ)を含むグラフィックスパイプライン(明確化のために
図1には図示せず)を実装する。並列処理ユニット110内のグラフィックスパイプラインの段階は、ビデオゲーム等のアプリケーションによって生成された異なるプリミティブを同時に処理することができる。ジオメトリがグラフィックスパイプラインに提示される場合に、ハードウェア状態設定は、グラフィックスパイプラインの状態を定義するように選択される。状態の例としては、シーンのレンダリングに使用される、ラスタライザ状態、ブレンド状態、深度ステンシル状態、提示されたジオメトリのプリミティブトポロジタイプ、及び、シェーダ(例えば、頂点シェーダ、ドメインシェーダ、ジオメトリシェーダ、ハルシェーダ、ピクセルシェーダ等)が挙げられる。グラフィックスパイプライン状態に実装されるシェーダは、対応するバイトコードによって表される。場合によっては、グラフィックスパイプライン状態を表す情報をハッシュ又は圧縮して、グラフィックスパイプライン状態のより効率的な表現を提供する。
【0025】
ドライバ165は、アプリケーション155から等のより高いレベルのグラフィックコンピューティングプログラムが並列処理ユニット110と相互作用することを可能にするコンピュータプログラムである。例えば、ドライバ165は、アプリケーション155から受信した標準的なコードを、並列処理ユニット110によって理解されるネイティブフォーマットコマンドストリームに変換する。ドライバ165は、アプリケーション155からの入力が、並列処理ユニット110の設定を指示することを可能にする。そのような設定には、レンダリングモード、アンチエイリアシング制御、テクスチャフィルタ制御、バッチビニング制御、及び、遅延ピクセルシェーディング制御の選択が含まれる。
【0026】
CPUから受信したコマンドのセットを実行するために、並列処理ユニット110は、複数の計算ユニット115及びL1キャッシュ120を含む。複数の計算ユニット115は、共に、作業アイテム(図示せず)のディスパッチに対してシェーディング演算を実行する。異なる実施形態では、計算ユニット115は、コマンドプロセッサ(図示せず)から受信されたコマンドに基づいて、ジオメトリ演算、テクスチャ演算、テッセレーション演算、頂点演算、メッシュ演算、プリミティブ演算、レイトレーシング演算、計算演算等、又は、それらの任意の組合せを実行する。いくつかの実施形態では、これらの演算を実行するために、計算ユニット115の各々は、受信されたディスパッチの作業アイテムを使用して指定された演算を実行するように構成された1つ以上のSIMD要素を含む。
【0027】
L1キャッシュ120は、複数の計算ユニット115のためのデータを記憶する。したがって、シェーダ演算を実行する過程で、複数の計算ユニット115は、L1キャッシュ120からのデータを記憶し取り出し、記憶され取り出されたデータは、処理されている特定の作業アイテムに基づく。例えば、いくつかの実施形態では、ディスパッチの各作業アイテムは、画像の個々のピクセルに対応し、L1キャッシュ120は、ディスパッチに含まれる個々のピクセルごと、又は、個々のピクセルのサブセットのデータ(例えば、テクスチャ値)を記憶する。いくつかの実施形態では、並列処理ユニット110は、複数のキャッシュレベル及びシステムメモリ150を有するメモリ階層に関連付けられ、L1キャッシュ120は、複数のキャッシュレベルのうち最下位レベルを表す。
【0028】
L1キャッシュ120の記憶容量を超えるデータの繰り返しパターンについてのL1キャッシュ120におけるヒット率を高めるために、並列処理ユニット110は、L1キャッシュ120においてデータの繰り返しパターンのキャッシュラインのサブセット140のみにストレージを割り当て、且つ、データの繰り返しパターンのキャッシュラインの残りをキャッシュから除外するように構成されたキャッシュコントローラ130を含む。データの繰り返しパターンのキャッシュラインの残りに対する計算ユニット115からの要求に応じて、キャッシュコントローラ130は、残りのキャッシュラインをキャッシュ階層(図示せず)のより高いレベルから計算ユニット(単数又は複数)115に直接提供し、残りのキャッシュラインをL1キャッシュ120に記憶することをバイパスする。L1キャッシュ120の記憶容量内に同時に収まるデータの繰り返しパターンのキャッシュラインのみを記憶するようにL1キャッシュ120を制限することによって、キャッシュコントローラ130は、キャッシュラインの選択されたサブセット140についてのL1キャッシュ120におけるヒット率を増加させる。
【0029】
キャッシュコントローラ130は、L1キャッシュ120の記憶容量を超えるデータの繰り返しパターンを識別するように構成されたパターン認識ユニット135を含む。パターン認識ユニット135は、データの繰り返しパターンにおけるキャッシュラインの再使用距離(すなわち、パターンの各繰り返しにおけるキャッシュラインの数)を測定し、再使用距離DRを、L1キャッシュ120が記憶することができるキャッシュラインの総数CL1(すなわち、L1キャッシュ120の記憶容量)と比較する。再使用距離DRがL1キャッシュ120の記憶容量CL1を超える場合、キャッシュコントローラ130は、L1キャッシュ120内の記憶空間に割り当てられるデータの繰り返しパターンのキャッシュラインの数を、L1キャッシュ120の記憶容量CL1内に収まるキャッシュラインのサブセット140に制限する。キャッシュコントローラ130は、データの繰り返しパターンの残りの(DR-CL1)個のキャッシュラインをL1キャッシュ120から除外する。いくつかの実施形態では、L1キャッシュ120が比較的低いヒット率を示したことに応じて、パターン認識ユニット135は、反復プロセスにおいて、L1キャッシュ120に記憶するデータの繰り返しパターンからのキャッシュラインのサブセットを確率的に選択する。キャッシュコントローラ130は、キャッシュラインの選択されたサブセットの各々についてヒット率を測定し、ヒット率に基づいて、キャッシュから除外するデータの繰り返しパターンのキャッシュラインを選択する。
【0030】
いくつかの実施形態では、各ドローコールは、識別子(図示せず)に関連付けられ、作業アイテムの一連のディスパッチに対する要求ストリームは、ドローコール識別子と、ドローコールが動作することになるサーフェスと、を含む。パターン認識ユニット135は、L1キャッシュ120から除外されたドローコール識別子/サーフェスの組合せに対する要求の数を追跡する。パターン認識ユニット135は、L1キャッシュ120から除外される頻度に従って、ドローコール識別子/サーフェスの組合せを列挙する。いくつかの実施形態では、キャッシュコントローラ130は、L1キャッシュ120からのドローコール識別子/サーフェスの組合せの包含又は除外に基づいて、キャッシュライン140の選択されたサブセットについてのヒット率をシミュレートして、ヒット率を高めるために、何れのドローコール識別子/サーフェスの組合せをL1キャッシュ120から除外するかを決定する。
【0031】
いくつかの実施形態では、キャッシュコントローラ130は、L1キャッシュ120を2つ以上の部分(図示せず)に区分し、L1キャッシュ120の一部をデータの第1の繰り返しパターンのキャッシュラインのサブセットを記憶するように割り当て、L1キャッシュ120の別の部分をデータの第2の繰り返しパターンのキャッシュラインのサブセットを記憶するように割り当てる。区分されたL1キャッシュ120について、キャッシュコントローラ130は、データの第1の繰り返しパターンのキャッシュラインの再使用距離DRを、データの第1の繰り返しパターンが割り当てられるキャッシュの一部の記憶容量と比較する。再使用距離DR及びキャッシュの一部の記憶容量に基づいて、キャッシュコントローラ130は、キャッシュに記憶するデータの第1の繰り返しパターンのキャッシュラインのサブセットを選択し、データの第1の繰り返しパターンの残りのキャッシュラインをキャッシュから除外する。
【0032】
図2は、いくつかの実施形態による、再使用距離に基づいてキャッシュラインのサブセットを選択することがない、データの繰り返しパターンのキャッシングのイラスト200である。図示された例では、L1キャッシュ120は、一度に3つまでのキャッシュラインを保持するサイズである。L1キャッシュ120がフラッシュされた後、時間T1において、キャッシュコントローラ130は、キャッシュライン-1 202に対する要求を計算ユニット115から受信する。L1キャッシュ120が有効なデータを含まないので、要求は、L1キャッシュ120においてミスになり、キャッシュコントローラ130は、キャッシュ階層内のより高いレベルのキャッシュであるL2キャッシュ220からキャッシュライン-1 202をL1キャッシュ120にコピーし、キャッシュライン-1 202を計算ユニット115に提供する。後続の時間T2において、キャッシュコントローラ130は、キャッシュライン-2 204に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-2 204を含まないので、要求は、L1キャッシュ120においてミスになり、キャッシュコントローラ130は、キャッシュライン-2 204をL2キャッシュ220からL1キャッシュ120にコピーし、キャッシュライン-2 204を計算ユニット115に提供する。後続の時間T3において、キャッシュコントローラは、キャッシュライン-3 206に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-3 206を含まないので、要求は、L1キャッシュ120においてミスになり、キャッシュコントローラ130は、キャッシュライン-3 206をL2キャッシュ220からL1キャッシュ120にコピーし、キャッシュライン-3 206を計算ユニット115に提供する。
【0033】
後続の時間T4において、キャッシュコントローラ130は、キャッシュライン-4 208に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-4 208を含まないので、要求は、L1キャッシュ120においてミスとなる。キャッシュライン-4 208のための空きをL1キャッシュ120に生成するために、キャッシュコントローラは、キャッシュライン-1 202が最も長い間使用されていないキャッシュラインであるので、キャッシュライン-1 202を追い出す。キャッシュコントローラ130は、キャッシュライン-4 208をL2キャッシュ220からL1キャッシュ120にコピーし、キャッシュライン-4 208を計算ユニット115に提供する。
【0034】
後続の時間T5において、キャッシュコントローラ130は、キャッシュライン-5 210に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-5 210を含まないので、要求は、L1キャッシュ120においてミスとなる。キャッシュライン-5 208のための空きをL1キャッシュ120に生成するために、キャッシュコントローラは、キャッシュライン-2 204が最も長い間使用されていないキャッシュラインであるので、キャッシュライン-2 204を追い出す。キャッシュコントローラ130は、キャッシュライン-5 210をL2キャッシュ220からL1キャッシュ120にコピーし、キャッシュライン-5 210を計算ユニット115に提供する。したがって、キャッシュライン202、204、206、208、210に対するアクセス要求の最初の5サイクルT1~T5では、キャッシュヒット率は0%である。
【0035】
図3は、
図2のデータの繰り返しパターンのキャッシングの継続のイラスト300である。後続の時間T6において、キャッシュコントローラ130は、キャッシュライン-1 202に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-1 202を含まないので(キャッシュライン-1 202が時間T4において以前に追い出されたので)、要求は、L1キャッシュ120においてミスとなる。キャッシュライン-1 202のための空きをL1キャッシュ120に生成するために、キャッシュコントローラ130は、キャッシュライン-3 206が最も長い間使用されていないキャッシュラインであるので、キャッシュライン-3 206を追い出す。キャッシュコントローラ130は、キャッシュライン-1 202をL2キャッシュ220からL1キャッシュ120にコピーし、キャッシュライン-1 202を計算ユニット115に提供する。
【0036】
後続の時間T7において、キャッシュコントローラ130は、キャッシュライン-2 204に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-2 204を含まないので(キャッシュライン-2 202が時間T5において以前に追い出されたので)、要求は、L1キャッシュ120においてミスとなる。キャッシュライン-2 204のための空きをL1キャッシュ120に生成するために、キャッシュコントローラ130は、キャッシュライン-4 208が最も長い間使用されていないキャッシュラインであるので、キャッシュライン-4 208を追い出す。キャッシュコントローラ130は、キャッシュライン-2 204をL2キャッシュ220からL1キャッシュ120にコピーし、キャッシュライン-2 204を計算ユニット115に提供する。
【0037】
後続の時間T8において、キャッシュコントローラ130は、キャッシュライン-3 206に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-3 206を含まないので(キャッシュライン-3 206が時間T6において以前に追い出されたので)、要求は、L1キャッシュ120においてミスとなる。キャッシュライン-3 206のための空きをL1キャッシュ120に生成するために、キャッシュコントローラ130は、キャッシュライン-5 210が最も長い間使用されていないキャッシュラインであるので、キャッシュライン-5 210を追い出す。キャッシュコントローラ130は、キャッシュライン-3 206をL2キャッシュ220からL1キャッシュ120にコピーし、キャッシュライン-3 206を計算ユニット115に提供する。
【0038】
後続の時間T9において、キャッシュコントローラ130は、キャッシュライン-4 208に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-4 208を含まないので(キャッシュライン-4 208が時間T7において以前に追い出されたので)、要求は、L1キャッシュ120においてミスとなる。キャッシュライン-4 208のための空きをL1キャッシュ120に生成するために、キャッシュコントローラは、キャッシュライン-1 202が最も長い間使用されていないキャッシュラインであるので、キャッシュライン-1 202を追い出す。キャッシュコントローラ130は、キャッシュライン-4 208をL2キャッシュ220からL1キャッシュ120にコピーし、キャッシュライン-4 208を計算ユニット115に提供する。
【0039】
後続の時間T10において、キャッシュコントローラ130は、キャッシュライン-5 210に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-4 208を含まないので(キャッシュライン-5 210が時間T8において以前に追い出されたので)、要求は、L1キャッシュ120においてミスとなる。キャッシュライン-5 210のための空きをL1キャッシュ120に生成するために、キャッシュコントローラは、キャッシュライン-2 204が最も長い間使用されていないキャッシュラインであるので、キャッシュライン-2 204を追い出す。キャッシュコントローラ130は、キャッシュライン-5 210をL2キャッシュ220からL1キャッシュ120にコピーし、キャッシュライン-5 210を計算ユニット115に提供する。したがって、キャッシュライン202、204、206、208、210のデータの繰り返しの5つのキャッシュラインのパターンでは、LRU置換ポリシーを使用するキャッシングは、サイクルT6~T10に対してL1キャッシュ120について0%のヒット率をもたらし、
図2に示されるコールドスタートシナリオの0%のヒット率に対して改善はない。
【0040】
図4は、いくつかの実施形態による、データの繰り返しパターン420のキャッシュラインのサブセット140のみにL1キャッシュ120におけるストレージを割り当てる、
図1のキャッシュコントローラ130のブロック
図400である。図示された例では、L1キャッシュ120は、一度に3つまでのキャッシュラインを保持するサイズである。データの繰り返しパターン420は、5つのキャッシュライン(1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、...)を含み、したがって、L1キャッシュ120の記憶容量を超える。キャッシュコントローラ130は、キャッシュラインがより高いレベルのキャッシュからフェッチされる場合にL1キャッシュ120がフルである場合に、最も長い間使用されていないキャッシュラインを追い出すキャッシュ置換ポリシー405を採用する。
【0041】
パターン認識ユニット135は、データがGPUメモリ410からフェッチされる場合にデータの繰り返しパターン420を識別し、データの繰り返しパターン420のキャッシュラインがL1キャッシュ120の記憶容量を超える再使用距離を有すると決定する。データの繰り返しパターン420のキャッシュラインがL1キャッシュ120の記憶容量を超える再使用距離を有するとパターン認識ユニット135が決定したことに応じて、キャッシュコントローラ130は、L1キャッシュ120に一度に記憶することができるキャッシュラインのサブセット140(例えば、キャッシュライン1、2、3)のみにストレージを割り当て、データの繰り返しパターン420のキャッシュラインの残り415(キャッシュライン4及び5)をL1キャッシュ120から除外する。したがって、計算ユニット115がキャッシュラインのサブセット140のキャッシュライン1、2、3の各々を要求すると、キャッシュコントローラは、キャッシュライン1、2、3のためのエントリを割り当て、それらをL1キャッシュ120に記憶する。しかしながら、計算ユニット115がキャッシュラインの残り415(キャッシュライン4及び5)を要求すると、キャッシュコントローラは、キャッシュラインの残り415をL2キャッシュ220から計算ユニット115に直接提供し、キャッシュラインの残り415をL1キャッシュ120に記憶することをバイパスする。
【0042】
図5は、いくつかの実施形態による、L1キャッシュ120を区分し、データの繰り返しパターンのキャッシュラインのサブセットのみにキャッシュの一部におけるストレージを割り当てるキャッシュコントローラ130のブロック
図500である。時に、並列処理ユニット110は、2つ以上のテクスチャに並列にアクセスするドローコールを処理する。図示した例では、キャッシュコントローラ130は、重複アクセスのためにGPUメモリ410から2つのテクスチャ、すなわち、データの第1の繰り返しパターン520とデータの第2の繰り返しパターン530とをフェッチする。データの第1の繰り返しパターン520及びデータの第2の繰り返しパターン530についてのヒット率を増加させるために、キャッシュコントローラ130は、L1キャッシュ120を第1の部分540と第2の部分545とに区分する。
【0043】
パターン認識ユニット135がデータの第1の繰り返しパターン520を識別し、データの第1の繰り返しパターン520のキャッシュラインの再使用距離550がL1キャッシュの第1の部分540の記憶容量555を超えると決定したことに応じて、キャッシュコントローラ130は、データの第1の繰り返しパターン520のキャッシュラインのサブセット525を記憶するために第1の部分540におけるストレージを割り当てる。同様に、パターン認識ユニット135がデータの第2の繰り返しパターン530を識別し、データの第2の繰り返しパターン530のキャッシュラインの再使用距離560がL1キャッシュの第2の部分545の記憶容量565を超えると決定したことに応じて、キャッシュコントローラ130は、データの第2の繰り返しパターン530のキャッシュラインのサブセット535を記憶するために第2の部分545におけるストレージを割り当てる。
【0044】
図6は、いくつかの実施形態による、データの繰り返しパターンのキャッシュラインを選択的にキャッシュするイラスト600である。
図2のイラスト200と同様に、データの繰り返しパターンは、5つのキャッシュラインを含むが、L1キャッシュ120は、3つのキャッシュラインの記憶容量を有する。しかしながら、
図2のイラスト200とは異なり、キャッシュコントローラ130は、図示された例では、データの繰り返しパターンのための選択的キャッシングを実施する。データの繰り返しパターンのキャッシュラインがL1キャッシュ120の記憶容量を超える再使用距離を有するとパターン認識ユニット135が決定したことに応じて、キャッシュコントローラは、データの繰り返しパターンのキャッシュラインのサブセット(キャッシュライン202、204、206)のみにL1キャッシュ120内の空間を割り当て、データの繰り返しパターンのキャッシュラインの残りをL1キャッシュ120から除外する。
【0045】
L1キャッシュ120がフラッシュされた後、時間T1において、キャッシュコントローラ130は、キャッシュライン-1 202に対する要求を計算ユニット115から受信する。L1キャッシュ120が有効なデータを含まないので、要求は、L1キャッシュ120においてミスとなる。キャッシュライン-1 202が、キャッシュコントローラ130がL1キャッシュ120内のストレージを割り当てたキャッシュラインのサブセットに含まれるので、キャッシュコントローラ130は、キャッシュライン-1 202をL2キャッシュ220からL1キャッシュ120にコピーし、キャッシュライン-1 202を計算ユニット115に提供する。
【0046】
後続の時間T2において、キャッシュコントローラ130は、キャッシュライン-2 204に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-2 204を含まないので、要求は、L1キャッシュ120においてミスとなる。キャッシュコントローラ130は、L1キャッシュ120においてストレージが割り当てられたキャッシュラインのサブセットにキャッシュライン-2 204を含めているので、キャッシュコントローラ130は、キャッシュライン-2 204をL2キャッシュ220からL1キャッシュ120にコピーし、キャッシュライン-2 204を計算ユニット115に提供する。
【0047】
後続の時間T3において、キャッシュコントローラは、キャッシュライン-3 206に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-3 206を含まないので、要求は、L1キャッシュ120においてミスとなる。キャッシュコントローラ130は、L1キャッシュ120においてストレージが割り当てられたキャッシュラインのサブセットにキャッシュライン-3 206を含めているので、キャッシュコントローラ130は、キャッシュライン-3 206をL2キャッシュ220からL1キャッシュ120にコピーし、キャッシュライン-3 206を計算ユニット115に提供する。
【0048】
後続の時間T4において、キャッシュコントローラ130は、キャッシュライン-4 208に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-4 208を含まないので、要求は、L1キャッシュ120においてミスとなる。キャッシュコントローラ130は、L1キャッシュ120においてストレージが割り当てられたデータの繰り返しパターンのキャッシュラインのサブセットにキャッシュライン-4 208を含めていないので、キャッシュコントローラは、キャッシュライン-4 208をL2キャッシュ220から計算ユニット115に直接提供し、キャッシュライン-4 208をL1キャッシュ120から除外する。
【0049】
後続の時間T5において、キャッシュコントローラ130は、キャッシュライン-5 210に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-5 210を含まないので、要求は、L1キャッシュ120においてミスとなる。キャッシュコントローラ130は、L1キャッシュ120においてストレージが割り当てられたデータの繰り返しパターンのキャッシュラインのサブセットにキャッシュライン-5 210を含めていないので、キャッシュコントローラは、キャッシュライン-5 210をL2キャッシュ220から計算ユニット115に直接提供し、キャッシュライン-5 210をL1キャッシュ120から除外する。したがって、
図2のイラスト200と同様に、キャッシュライン202、204、206、208、210に対するアクセス要求の最初の5サイクルT1~T5では、キャッシュヒット率は0%である。
【0050】
図7は、
図6のデータの繰り返しパターンの選択的キャッシングの継続のイラスト700である。後続の時間T6において、キャッシュコントローラ130は、キャッシュライン-1 202に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-1 202を含むので、要求は、L1キャッシュ120においてヒットとなり、キャッシュコントローラ130は、キャッシュライン-1 202を計算ユニット115に提供する。後続の時間T7において、キャッシュコントローラ130は、キャッシュライン-2 204に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-2 204を含むので、要求は、L1キャッシュ120においてヒットとなり、キャッシュコントローラ130は、キャッシュライン-2 204を計算ユニット115に提供する。後続の時間T8において、キャッシュコントローラ130は、キャッシュライン-3 206に対する要求を計算ユニット115から受信する。L1キャッシュ120がキャッシュライン-3 206を含むので、要求は、L1キャッシュ120においてヒットとなり、キャッシュコントローラ130は、キャッシュライン-3 206を計算ユニット115に提供する。
【0051】
後続の時間T9において、キャッシュコントローラ130は、キャッシュライン-4 208に対する要求を計算ユニット115から受信する。キャッシュコントローラ130がキャッシュライン-4 208をL1キャッシュ120から除外しているので、L1キャッシュ120は、キャッシュライン-4 208を含まない。したがって、要求は、L1キャッシュ120においてミスとなる。キャッシュコントローラ130は、キャッシュライン-4 208をL2キャッシュ220からフェッチし、キャッシュライン-4 208を計算ユニット115に直接提供し、キャッシュライン-4 208が、L1キャッシュ120において空間が割り当てられているキャッシュラインのサブセットに含まれていないので、キャッシュライン-4 208をL1キャッシュ120に記憶することをバイパスする。
【0052】
後続の時間T10において、キャッシュコントローラ130は、キャッシュライン-5 210に対する要求を計算ユニット115から受信する。キャッシュコントローラ130がキャッシュライン-5 210をL1キャッシュ120から除外しているので、L1キャッシュ120は、キャッシュライン-5 210を含まない。したがって、要求は、L1キャッシュ120においてミスとなる。キャッシュコントローラ130は、キャッシュライン-5 210をL2キャッシュ220からフェッチし、キャッシュライン-5 210を計算ユニット115に直接提供し、キャッシュライン-5 210が、L1キャッシュ120において空間が割り当てられているキャッシュラインのサブセットに含まれていないので、キャッシュライン-5 210をL1キャッシュ120に記憶することをバイパスする。したがって、キャッシュライン202、204、206、208、210のデータの繰り返しの5つのキャッシュラインのパターンでは、LRU置換ポリシーを使用する選択的キャッシングは、サイクルT6~T10に対してL1キャッシュ120について60%のヒット率をもたらし、これは、
図3に示される従来のキャッシングシナリオの0%のヒット率に対して大幅な増加である。更に、データの同じ繰り返しパターンの追加のサイクルは、選択的キャッシングを使用するL1キャッシュ120に対して同様の増加したヒット率をもたらすと予想することができる。
【0053】
図8は、いくつかの実施形態による、データの繰り返しパターンのキャッシュラインを選択的にキャッシュする方法800を示すフロー図である。いくつかの実施形態では、方法800は、
図1に示す処理システム100等の処理システムによって実行される。ブロック802において、パターン認識ユニット135は、データの繰り返しパターン420を識別する。ブロック804において、パターン認識ユニット135は、データの繰り返しパターン420のキャッシュラインの再使用距離を、L1キャッシュ120が一度に記憶することができるキャッシュラインの最大数と比較し、再使用距離がL1キャッシュ120の記憶容量を超えるかどうかを決定する。
【0054】
ブロック804において、パターン認識ユニット135が、データの繰り返しパターン420のキャッシュラインの再使用距離がL1キャッシュ120の記憶容量を超えないと決定した場合、方法フローは、ブロック806に続く。ブロック806において、キャッシュコントローラ130は、L1キャッシュ120においてデータの繰り返しパターンの全てのキャッシュラインをキャッシュする。
【0055】
ブロック804において、パターン認識ユニット135が、データの繰り返しパターン420のキャッシュラインの再使用距離がL1キャッシュ120の記憶容量を超えると決定した場合、方法フローは、ブロック808に続く。ブロック808において、キャッシュコントローラ130は、データの繰り返しパターン420のキャッシュラインのサブセット140のみにL1キャッシュ120におけるストレージを割り当て、データの繰り返しパターン420のキャッシュラインの残り415をL1キャッシュ120から除外する。いくつかの実施形態では、パターン認識ユニット135は、反復プロセスにおいて、L1キャッシュ120に記憶するデータの繰り返しパターンからのキャッシュラインのサブセットを確率的に選択する。キャッシュコントローラ130は、キャッシュラインの選択されたサブセットの各々についてヒット率を測定し、ヒット率に基づいて、L1キャッシュ120から除外するデータの繰り返しパターン420のキャッシュラインのサブセット140を選択する。
【0056】
いくつかの実施形態では、キャッシュコントローラ130は、L1キャッシュ120を第1の部分540と第2の部分545とに区分する。パターン認識ユニット135がデータの第1の繰り返しパターン520を識別し、データの第1の繰り返しパターン520のキャッシュラインの再使用距離がL1キャッシュの第1の部分540の記憶容量を超えると決定したことに応じて、キャッシュコントローラ130は、データの第1の繰り返しパターン520のキャッシュラインのサブセット525を記憶するために第1の部分540におけるストレージを割り当てる。
【0057】
いくつかの実施形態では、上記の装置及び技術は、
図1~
図8を参照して上述した処理システム等の1つ以上の集積回路(integrated circuit、IC)デバイス(集積回路パッケージ又はマイクロチップとも呼称される)を含むシステムに実装されている。電子設計自動化(electronic design automation、EDA)及びコンピュータ支援設計(computer aided design、CAD)ソフトウェアツールは、これらのICデバイスの設計及び製造に使用することができる。これらの設計ツールは、典型的には、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計するか又は適応させるためのプロセスの少なくとも一部を実行するために、1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作するための、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含み得る。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上の段階を表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶され、そこからアクセスされる。
【0058】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
【0059】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
【0060】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0061】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【手続補正書】
【提出日】2024-08-14
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
キャッシュの記憶容量を超える数のキャッシュラインを有するデータの繰り返しパターンを識別することと、
前記キャッシュにおいて、識別されたデータの繰り返しパターンのキャッシュラインのサブセットのみにストレージを割り当てることと、を含む、
方法。
【請求項2】
前記データの繰り返しパターンのキャッシュラインの残りを前記キャッシュに記憶するのをバイパスすることを含む、
請求項1の方法。
【請求項3】
前記サブセットのみにストレージを割り当てることは、
前記キャッシュが記憶することができるキャッシュラインの最大数を超える前記データの繰り返しパターンのキャッシュラインを前記残りとして選択することを含む、
請求項2の方法。
【請求項4】
前記繰り返しパターンを識別することは、
前記データの繰り返しパターンのキャッシュラインの再使用距離が、前記キャッシュに記憶することができるキャッシュラインの数よりも大きいと決定することと、
前記サブセットを、前記キャッシュに記憶することができるキャッシュラインの数に制限することと、を含む、
請求項
1~3の何れかの方法。
【請求項5】
前記キャッシュから除外する前記データの繰り返しパターンのキャッシュラインを反復的に選択するこ
とを含む、
請求項
1の方法。
【請求項6】
前記キャッシュから除外されない前記データの繰り返しパターンのキャッシュラインのサブセットについてのヒット率を決定することと、
前記ヒット率に基づいて、前記キャッシュから除外する前記データの繰り返しパターンのキャッシュラインを選択することと、を含む、
請求項1の方法。
【請求項7】
前記キャッシュを2つ以上の部分に区分することと、
前記キャッシュの第1の部分を前記データの繰り返しパターンに割り当てることと、を含み、
前記データの繰り返しパターンのキャッシュラインの前記再使用距離が、前記キャッシュに記憶することができるキャッシュラインの数よりも大きいと決定することは、前記データの繰り返しパターンのキャッシュラインの前記再使用距離が、前記キャッシュの前記第1の部分に記憶することができるキャッシュラインの数よりも大きいと決定することを含む、
請求項
1の方法。
【請求項8】
前記データの繰り返しパターンは、テクスチャを含む、
請求項1の方法。
【請求項9】
デバイスであって、
並列処理ユニットを備え、
前記並列処理ユニットは、
キャッシュと、
キャッシュコントローラと、を備え、
前記キャッシュコントローラは、
前記キャッシュの記憶容量を超える数のキャッシュラインを有するデータの繰り返しパターンを識別し、
前記キャッシュにおいて、前記データの繰り返しパターンのキャッシュラインのサブセットのみにストレージを割り当てる、
デバイス。
【請求項10】
前記キャッシュコントローラは、
前記データの繰り返しパターンのキャッシュラインの残りを前記キャッシュに記憶するのをバイパスする、
請求項
9のデバイス。
【請求項11】
前記キャッシュコントローラは、
前記キャッシュが記憶することができるキャッシュラインの最大数を超える前記データの繰り返しパターンのキャッシュラインを前記残りとして選択する、
請求項
10のデバイス。
【請求項12】
前記キャッシュコントローラは、
前記データの繰り返しパターンのキャッシュラインの再使用距離が、前記キャッシュに記憶することができるキャッシュラインの数よりも大きいかどうかを決定し、
前記サブセットを、前記キャッシュに記憶することができるキャッシュラインの数に制限する、
請求項
9~11の何れかのデバイス。
【請求項13】
前記キャッシュコントローラは、
前記キャッシュを2つ以上の部分に区分し、
前記キャッシュの第1の部分をデータの前記繰り返しパターンに割り当て、
前記データの第1の繰り返しパターンのキャッシュラインの再使用距離が、前記キャッシュの前記第1の部分に記憶することができるキャッシュラインの数よりも大きいと決定することによって、前記データの第1の繰り返しパターンのキャッシュラインの再使用距離が、前記キャッシュに記憶することができるキャッシュラインの数よりも大きいと決定する、
請求項
12のデバイス。
【請求項14】
前記キャッシュコントローラは、
前記キャッシュから除外する前記データの繰り返しパターンのキャッシュラインを反復的に選択する、
請求項9のデバイス。
【請求項15】
前記キャッシュコントローラは、
前記キャッシュから除外されない前記データの繰り返しパターンのキャッシュラインについてのヒット率を決定し、
前記ヒット率に基づいて、前記キャッシュから除外する前記データの繰り返しパターンのキャッシュラインを選択する、
請求項14のデバイス。
【国際調査報告】