(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-01-09
(54)【発明の名称】連続キャッシュアクセスのための可変ディスパッチウォーク
(51)【国際特許分類】
G06F 12/0877 20160101AFI20241226BHJP
G06T 15/00 20110101ALI20241226BHJP
G06F 12/0875 20160101ALI20241226BHJP
【FI】
G06F12/0877
G06T15/00 501
G06F12/0875 106
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024535350
(86)(22)【出願日】2022-12-19
(85)【翻訳文提出日】2024-06-25
(86)【国際出願番号】 US2022053381
(87)【国際公開番号】W WO2023122025
(87)【国際公開日】2023-06-29
(32)【優先日】2021-12-21
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】サウラブ シャルマ
(72)【発明者】
【氏名】ジェレミー ルカーチ
(72)【発明者】
【氏名】ハシェム ハシェミ
(72)【発明者】
【氏名】ジャンパオロ トマージ
(72)【発明者】
【氏名】グエンナディ リグール
(72)【発明者】
【氏名】マーク フォウラー
(72)【発明者】
【氏名】ランディー ラムジー
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205JJ13
5B205LL15
5B205MM03
5B205VV01
(57)【要約】
処理システム[100]は、ワークアイテムのディスパッチ[135]の第1のキャッシュアクセスパターンを、並列処理ユニット[110]のキャッシュ[120]に記憶されたデータがメモリ階層のより遠隔のレベルに追い出される前に、後続のアクセスによってそのデータの消費を容易にするキャッシュアクセスパターン[145]に変換するように構成されている。リードアフターリードデータ局所性を有する連続キャッシュアクセスの場合、処理システムは、第1のキャッシュアクセスパターンを空間充填曲線に変換する[506]。リードアフターライトデータ局所性を有する連続アクセスの場合、処理システムは、第1のアクセスのために昇順で進む第1のタイプライタキャッシュアクセスパターン[512]を、後続のキャッシュアクセスのために降順で進む逆タイプライタキャッシュアクセスパターン[514]に変換する。データ局所性に基づいてキャッシュアクセスパターンを変換することによって、処理システムは、キャッシュのヒット率を増加させる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
方法であって、
処理システムで実行されるアプリケーションのために、キャッシュに記憶されたデータのデータ局所性に基づいて、ワークアイテムのディスパッチによる複数のキャッシュアクセスのための第1のキャッシュアクセスパターンを変換することと、
前記処理システムの並列処理ユニットにおいて、変換されたキャッシュアクセスパターンに基づく順序で、前記キャッシュに記憶されたデータにアクセスすることと、を含む、
方法。
【請求項2】
前記複数のキャッシュアクセスは、単一のディスパッチに含まれる、
請求項1の方法。
【請求項3】
前記複数のキャッシュアクセスのうち第1のキャッシュアクセスと、前記第1のキャッシュアクセスの直後の前記複数のキャッシュアクセスのうち第2のキャッシュアクセスとは、前記キャッシュに記憶されたデータを読み取ることを含む、
請求項1又は2の方法。
【請求項4】
前記第1のキャッシュアクセスパターンを変換することは、
前記第1のキャッシュアクセスパターンを空間充填曲線に変換することを含む、
請求項3の方法。
【請求項5】
前記空間充填曲線は、擬似ヒルベルト空間曲線及びモートン空間曲線のうち何れかである、
請求項4の方法。
【請求項6】
前記複数のキャッシュアクセスのうち第1のキャッシュアクセスは、第1のディスパッチのために前記キャッシュにデータを書き込むことを含み、前記複数のキャッシュアクセスのうちの第2のキャッシュアクセスは、第2のディスパッチのために前記第1のディスパッチによって前記キャッシュに書き込まれた前記データを読み取ることを含む、
請求項1の方法。
【請求項7】
前記第1のキャッシュアクセスパターンを変換することは、前記第1のディスパッチについて昇順タイプライタ順序を選択することと、前記第2のディスパッチについて降順タイプライタ順序を選択することと、を含む、
請求項6の方法。
【請求項8】
前記複数のキャッシュアクセスについて、前記キャッシュに記憶されたデータのデータ再利用パターンを分析することを含む、
請求項1の方法。
【請求項9】
方法であって、
処理システムの並列処理ユニットにおいて、前記処理システムで実行されるアプリケーションのために、キャッシュに記憶されたデータのデータ再利用に基づいて、複数のキャッシュアクセスのための前記キャッシュへのアクセスパターンを変換することと、
前記並列処理ユニットにおいて、変換されたアクセスパターンに基づいて、キャッシュに記憶されたデータを第1の順序で読み取ることと、を含む、
方法。
【請求項10】
前記読み取ることと、前記キャッシュへの直前のアクセスとは、単一のディスパッチに含まれる、
請求項9の方法。
【請求項11】
前記直前のアクセスは、前記キャッシュに記憶されたデータを読み取ることを含む、
請求項9又は10の方法。
【請求項12】
前記変換することは、
第1のアクセスパターンを空間充填曲線に変換することを含む、
請求項11の方法。
【請求項13】
前記空間充填曲線は、擬似ヒルベルト空間曲線及びモートン空間曲線のうち何れかである、
請求項12の方法。
【請求項14】
前記複数のキャッシュアクセスのうち第1のキャッシュアクセスは、第1のディスパッチのために前記キャッシュにデータを書き込むことを含み、前記複数のキャッシュアクセスのうち第2のキャッシュアクセスは、第2のディスパッチのために前記第1のディスパッチによって前記キャッシュに書き込まれた前記データを読み取ることを含む、
請求項9の方法。
【請求項15】
前記アクセスパターンを変換することは、前記第1のディスパッチについて昇順を選択することと、前記第2のディスパッチについて降順を選択することと、を含む、
請求項14の方法。
【請求項16】
前記複数のキャッシュアクセスについて、前記キャッシュに記憶されたデータのデータ再利用パターンを分析することを含む、
請求項9の方法。
【請求項17】
デバイスであって、
並列処理ユニットを備え、
前記並列処理ユニットは、
キャッシュと、
処理システムで実行されるアプリケーションのために、前記キャッシュに記憶されたデータのデータ局所性に基づいて、ワークアイテムのディスパッチによる複数のキャッシュアクセスのためのキャッシュアクセスパターンを選択するための変換モジュールと、を備え、
前記並列処理ユニットは、前記選択されたキャッシュアクセスパターンに基づく順序で、前記キャッシュに記憶されたデータにアクセスする、
デバイス。
【請求項18】
前記複数のキャッシュアクセスは、単一のディスパッチに含まれており、
前記変換モジュールは、第1のアクセスパターンを空間充填曲線に変換する、
請求項17のデバイス。
【請求項19】
前記複数のキャッシュアクセスのうち第1のキャッシュアクセスと、前記複数のキャッシュアクセスのうち前記第1のキャッシュアクセスの直後の第2のキャッシュアクセスとは、前記キャッシュに記憶されたデータを読み取ることを含む、
請求項17又は18のデバイス。
【請求項20】
前記複数のキャッシュアクセスのうち第1のキャッシュアクセスは、第1のディスパッチのために前記キャッシュにデータを書き込むことを含み、前記複数のキャッシュアクセスのうち第2のキャッシュアクセスは、第2のディスパッチのために前記第1のディスパッチによって前記キャッシュに書き込まれた前記データを読み取ることを含み、前記変換モジュールは、前記第1のディスパッチについて昇順を有するアクセスパターンを選択し、前記第2のディスパッチについて降順を有するアクセスパターンを選択する、
請求項17のデバイス。
【発明の詳細な説明】
【背景技術】
【0001】
グラフィックス処理ユニット(Graphics Processing Unit、GPU)及び他のマルチスレッド処理ユニット等の並列処理ユニットは、典型的には、複数のデータセットに対して単一のプログラムの複数のインスタンスを同時に実行する複数の処理要素(プロセッサコア又は計算ユニットとも称される)を実装する。例えば、処理要素は、単一命令複数データ(Single-Instruction-Multiple-Data、SIMD)プロトコルを実装して、複数のプロセッサコアを使用して複数のデータセットに対して同じ命令を同時に実行することができる。
【0002】
階層実行モデルは、異なるデータセットを使用して実行される命令のカーネルを定義する。例えば、ワークアイテム(本明細書ではスレッド又はストリームとも呼ばれる)のグリッドのディスパッチは、並列処理ユニットのキャッシュに記憶されたデータセットにアクセスする。テクスチャ等のいくつかのデータセットは、ディスパッチのワークアイテムによって複数回アクセスされるか又は連続するディスパッチによって修正され、読み取られる。しかしながら、キャッシュに記憶することができるデータの量は、キャッシュのサイズによって制約され、データは、後続のディスパッチによって読み取ることができる前にキャッシュから追い出される(エビクトされる)ことが多い。
【発明の概要】
【課題を解決するための手段】
【0003】
例示的な方法は、処理システムにおいて実行中のアプリケーションのためにキャッシュに記憶されたデータのデータ局所性に基づいて、ワークアイテムのディスパッチによる複数のキャッシュアクセスのための第1のキャッシュアクセスパターンを変換することを含む。例示的な方法は、処理システムの並列処理ユニットにおいて、変換されたキャッシュアクセスパターンに基づく順序でキャッシュに記憶されたデータにアクセスすることを更に含む。いくつかの例では、複数のキャッシュアクセスは単一のディスパッチに含まれる。
【0004】
いくつかの例では、複数のキャッシュアクセスのうち第1のキャッシュアクセスと、第1のキャッシュアクセスの直後に続く複数のキャッシュアクセスのうち第2のキャッシュアクセスとは、キャッシュに記憶されたデータを読み取ることを含む。いくつかの例では、第1のキャッシュアクセスパターンを変換することは、第1のキャッシュアクセスパターンを空間充填曲線(space-filling curve)に変換することを含む。いくつかの例では、空間充填曲線は、擬似ヒルベルト空間曲線(pseudo-Hilbert space curve)及びモートン空間曲線(Morton space curve)のうち何れかである。
【0005】
いくつかの例では、複数のキャッシュアクセスのうち第1のキャッシュアクセスは、第1のディスパッチのためにキャッシュにデータを書き込むことを含み、複数のキャッシュアクセスのうち第2のキャッシュアクセスは、第2のディスパッチのために第1のディスパッチによってキャッシュに書き込まれたデータを読み取ることを含む。いくつかの例では、第1のキャッシュアクセスパターンを変換することは、第1のディスパッチのために昇順タイプライタ順序(ascending typewriter order)を選択することと、第2のディスパッチのために降順タイプライタ順序(descending typewriter order)を選択することと、を含む。いくつかの例では、本方法は、複数のキャッシュアクセスについてキャッシュに記憶されたデータのデータ再利用パターンを分析することを更に含む。
【0006】
別の例示的な方法は、処理システムの並列処理ユニットにおいて、処理システムにおいて実行中のアプリケーションのためにキャッシュに記憶されたデータのデータ再利用に基づいて、複数のキャッシュアクセスのためのキャッシュへのアクセスパターンを変換することを含む。例示的な方法は、並列処理ユニットにおいて、変換されたアクセスパターンに基づいて第1の順序でキャッシュに記憶されたデータを読み取ることを更に含む。
【0007】
いくつかの例では、読み取り及びキャッシュへの直前のアクセスは、単一のディスパッチに含まれる。いくつかの例では、直前のアクセスは、キャッシュに記憶されたデータを読み取ることを含む。変換することは、いくつかの例では、第1のアクセスパターンを空間充填曲線に変換することを含む。いくつかの例では、空間充填曲線は、擬似ヒルベルト空間曲線及びモートン空間曲線のうち何れかである。
【0008】
いくつかの例では、複数のキャッシュアクセスのうち第1のキャッシュアクセスは、第1のディスパッチのためにキャッシュにデータを書き込むことを含み、複数のキャッシュアクセスのうち第2のキャッシュアクセスは、第2のディスパッチのために第1のディスパッチによってキャッシュに書き込まれたデータを読み取ることを含む。アクセスパターンを変換することは、いくつかの例では、第1のディスパッチのために昇順を選択することと、第2のディスパッチのために降順を選択することと、を含む。いくつかの例では、本方法は、複数のキャッシュアクセスについてキャッシュに記憶されたデータのデータ再利用パターンを分析することを更に含む。
【0009】
別の例では、デバイスは並列処理ユニットを含む。並列処理ユニットは、キャッシュと、処理システムにおいて実行中のアプリケーションのためにキャッシュに記憶されたデータのデータ局所性に基づいて、ワークアイテムのディスパッチによる複数のキャッシュアクセスのためのキャッシュアクセスパターンを選択するように構成された変換モジュールと、を含む。並列処理ユニットは、選択されたキャッシュアクセスパターンに基づく順序で、キャッシュに記憶されたデータにアクセスするように構成されている。
【0010】
いくつかの例では、複数のキャッシュアクセスは単一のディスパッチに含まれ、変換モジュールは、第1のアクセスパターンを空間充填曲線に変換する。いくつかの例では、複数のキャッシュアクセスのうち第1のキャッシュアクセスと、第1のキャッシュアクセスの直後の複数のキャッシュアクセスのうち第2のキャッシュアクセスとは、キャッシュに記憶されたデータを読み取ることを含む。いくつかの例では、複数のキャッシュアクセスのうち第1のキャッシュアクセスは、第1のディスパッチのためにキャッシュにデータを書き込むことを含み、複数のキャッシュアクセスのうち第2のキャッシュアクセスは、第2のディスパッチのために第1のディスパッチによってキャッシュに書き込まれたデータを読み取ることを含む。変換モジュールは、第1のディスパッチのために昇順を有するアクセスパターンを選択し、第2のディスパッチのために降順を有するアクセスパターンを選択するように構成されている。
【0011】
本開示は、添付の図面を参照することによってより良好に理解され、その数々の特徴及び利点が当業者に明らかになり得る。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0012】
【
図1】いくつかの実施形態による、連続ディスパッチによってアクセスされるデータの局所性に基づいて並列処理ユニットのキャッシュのアクセスパターンを変換するように構成された処理システムのブロック図である。
【
図2】いくつかの実施形態による、ディスパッチ内のテクスチャキャッシュへの連続読み取りアクセスのためにタイプライタアクセスパターンを空間充填曲線アクセスパターンに変換する並列処理ユニットの変換モジュールのブロック図である。
【
図3】いくつかの実施形態による、交互の昇順及び降順でのディスパッチ間のテクスチャキャッシュへの連続アクセスのブロック図である。
【
図4】いくつかの実施形態による、データ局所性に基づいてディスパッチ又は一連の連続ディスパッチのためのキャッシュアクセスパターンを変換する方法を示すフロー図である。
【
図5】いくつかの実施形態による、キャッシュアクセスパターンを空間充填曲線又は交互の昇順及び降順に変換するための方法を示すフロー図である。
【発明を実施するための形態】
【0013】
命令を実行する過程で、並列処理ユニットのプロセッサコアは、プロセッサコアによって開始されるアクセスが比較的迅速に且つ比較的低いエネルギー消費で実施されるローカルキャッシュに、又は、プロセッサコアによって開始されるアクセスが比較的ゆっくり且つ比較的高いエネルギー消費で実施されるメモリ階層のより遠隔のレベルに記憶されたデータにアクセスする。典型的には、そのデータがメモリ階層内でプロセッサコアに近接して記憶されるほど、プロセッサコアによってより迅速且つエネルギー効率的にアクセスされる。処理効率を高めるために、処理システムは、メモリ階層の各レベルに記憶された特定のデータセットを管理するメモリ管理プロトコルを実装する。例えば、いくつかの処理システムは、データが近い将来にプロセッサコアによって再びアクセスされることを期待して、アクセスのために最近要求されたデータをプロセッサコアにより近いメモリ階層のレベルに移動させ、最近アクセスされていないデータをメモリ階層のより遠隔のレベルに移動させるメモリ管理プロトコルを実装する。
【0014】
並列処理ユニットのプロセッサコアは、空間的及び/又は時間的データ局所性がディスパッチ内及びディスパッチ間に存在するように、同じデータセットに連続的にアクセスするワークアイテムのディスパッチを実行することが多い。例示のために、ワークアイテムの一連のディスパッチに添付されるテクスチャ等のサーフェスが、連続するレンダリングパス又はノイズ除去パスにおいて読み取られる。例えば、シーン内のオブジェクトをレンダリングするピクセルに対応するワークアイテムの第1のディスパッチはグローバルイルミネーションを生成し、ワークアイテムの第2のディスパッチはシャドーイングを生成する。第1のディスパッチ及び第2のディスパッチの両方は、ピクセルにマッピングする同じテクスチャデータを必要とする。いくつかの例では、ディスパッチ内のワークアイテムは、リードアフターリード(read-after-read)局所性と呼ばれるものにおいて、サーフェスを複数回読み取る。他の場合には、第1のディスパッチのワークアイテムは、リードアフターライト局所性と呼ばれるものにおけるテクスチャとして後続のディスパッチのワークアイテムによって消費される、順序付けられていないアクセスビュー(unordered access view、UAV)バッファ又はレンダリングターゲット等のデータを生成する。
【0015】
従来、ディスパッチのワークアイテムは、タイプライタ順序で、キャッシュの最低インデックス位置(「0,0」と呼ばれる)から開始し、キャッシュの最高インデックス位置(「1,1」と呼ばれる)に到達するまで、左から右に、上から下に移動して、ローカルキャッシュに記憶されたデータにアクセスする。しかしながら、ワークアイテムの後続のディスパッチがキャッシュのデータにアクセスし始めるときまでに、最長時間未使用データ(この例では、キャッシュの左上隅のデータ)は、既にキャッシュから追い出されている場合がある。データが後続のディスパッチによってアクセスされ得るようにメモリ階層のより遠隔のレベルからデータを取り出すことは、リソースを消費し、待ち時間を増加させる。
【0016】
図1~
図5は、処理システムが、初期キャッシュアクセスパターンを、並列処理ユニットのキャッシュに記憶されたデータがメモリ階層のより遠隔のレベルに追い出される前に後続のアクセスによってそのデータの消費を容易にするキャッシュアクセスパターンに変換するための技術を示す。リードアフターリード局所性を有する連続キャッシュアクセスの場合、いくつかの実施形態では、処理システムは、初期キャッシュアクセスパターンを、Z次空間曲線、モートン空間曲線又はヒルベルト(又は擬似ヒルベルト)空間曲線等の空間充填曲線に変換する。空間充填曲線は、その範囲が2次元単位正方形全体を含む曲線であり、Z次空間曲線又はモートン空間曲線は、データ点の局所性を保ちながら多次元データを1次元にマッピングする空間充填曲線である。ヒルベルト空間曲線は、区分線形曲線の限界として構成された連続フラクタル空間充填曲線である。いくつかの実施形態では、リードアフターライト局所性を有する連続アクセスの場合、処理システムは、第1のアクセスのために昇順で進む初期タイプライタキャッシュアクセスパターンを、後続のキャッシュアクセスのために降順で進む逆タイプライタキャッシュアクセスパターンに変換する。データ局所性に基づいてキャッシュアクセスパターンを変換することによって、処理システムは、後続のキャッシュアクセスによってアクセスされているデータが依然としてキャッシュ内に存在し、未だ追い出されていない確率を増加させ、したがって、キャッシュのヒット率を増加させ、リソース及びレイテンシの消費を減少させ、ユーザエクスペリエンスを改善する。
【0017】
図1は、いくつかの実施形態による、連続ディスパッチによってアクセスされるデータの局所性に基づいて、並列処理ユニットのキャッシュのアクセスパターンを変換するように構成された処理システム100を示している。処理システム100は、いくつかの実施形態による、ディスプレイ175に出力するように意図された視覚画像を創出するためのグラフィック処理ユニット(GPU)等の並列処理ユニット110を含む。並列プロセッサは、単一の命令を複数のデータ又はスレッドに対して並列に実行することができるプロセッサである。並列プロセッサの例は、グラフィックス、機械知能又は計算動作を実行するための、グラフィックス処理ユニット(GPU)、超並列プロセッサ、単一命令複数データ(SIMD)アーキテクチャプロセッサ、及び、単一命令複数スレッド(single instruction multiple thread、SIMT)アーキテクチャプロセッサ等のプロセッサを含む。いくつかの実施形態では、並列プロセッサは、コンピュータの一部として含まれる個別のデバイスである。高度プロセッサユニット等の他の実施形態では、並列プロセッサは、中央プロセッサユニット(central processor unit、CPU)等のホストプロセッサとともに単一のデバイスに含まれる。以下の説明は、例示の目的でグラフィックス処理ユニット(GPU)を使用するが、以下に説明される実施形態は、他のタイプの並列プロセッサに適用可能である。
【0018】
処理システム100は、メモリ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を含む。
【0019】
処理システム100は、概して、アプリケーション155等の命令セット(例えばコンピュータプログラム)を実行して、電子デバイスのための指定されたタスクを実行するように構成されている。そのようなタスクの例は、電子デバイスの動作のアスペクトを制御すること、ユーザに情報を表示して、特定のユーザエクスペリエンスを提供すること、他の電子デバイスと通信すること等を含む。したがって、異なる実施形態では、処理システム100は、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、ゲームコンソール、タブレット、スマートフォン等の多数のタイプの電子デバイスのうち何れかで採用されている。処理システム100は、
図1に示すよりも多い又は少ない構成要素を含み得ることを理解されたい。例えば、処理システム100は、1つ以上の入力インターフェース、不揮発性ストレージ、1つ以上の出力インターフェース、ネットワークインターフェース、及び、1つ以上のディスプレイ又はディスプレイインターフェースを更に含み得る。
【0020】
処理システム100は、命令を実行するための中央処理ユニット(CPU)105を含む。CPU105のいくつかの実施形態は、同時に又は並列に命令を独立して実行する複数のプロセッサコア(明確化のために図示せず)を含む。また、CPU105は、バス160に接続され、したがって、バス160を介して並列処理ユニット110及びメモリ150と通信する。CPU105は、メモリ150に記憶されたアプリケーション155のためのプログラムコード等の命令を実行し、CPU105は、実行された命令の結果等の情報をメモリ150に記憶する。また、CPU105は、並列処理ユニット110にドローコールを発行することによって、グラフィックス処理を開始することができる。ドローコールは、CPU105によって生成され、並列処理ユニット110がフレーム内のオブジェクト(又はオブジェクトの一部分)をレンダリングするように命令するために並列処理ユニット110に送信されるコマンドである。ドローコールのいくつかの実施形態は、オブジェクト又はその部分をレンダリングするために、並列処理ユニット110によって使用されるテクスチャ、状態、シェーダ、レンダリングオブジェクト、バッファ等を定義する情報を含む。並列処理ユニット110は、オブジェクトをレンダリングして、ディスプレイ175に提供されるピクセルの値を生成し、ディスプレイ175は、ピクセル値を使用して、レンダリングされたオブジェクトを表す画像を表示する。
【0021】
いくつかの実施形態では、レンダリングされる各フレームは、複数のパスにおいて、並列処理ユニット110のグラフィックスパイプラインによって処理される。例えば、シーンのジオメトリに対する第1のパス中に、ピクセル単位の照明を計算するために必要な属性のみがGバッファに書き込まれる。第2のパス中、グラフィックスパイプラインは、拡散及びスペキュラ照明データのみを出力する。グラフィックスパイプラインを通るフレームの第3のパスでは、グラフィックスパイプラインは、バックライトデータを読み取り、最終ピクセル単位シェーディングを出力する。したがって、マルチパスレンダリングでは、フレームのシーン及び関連付けられたオブジェクトが複数回レンダリングされる。オブジェクトが描かれる毎に、グラフィックスパイプラインは、オブジェクトの外観の追加のアスペクトを計算し、追加のアスペクトを以前の結果と組み合わせる。フレーム又はフレームのオブジェクトがグラフィックスパイプラインによってレンダリングされる毎に、レンダリングパスと称される。
【0022】
入力/出力(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に書き込むことができる。
【0023】
いくつかの実施形態では、並列処理ユニット110は、ドローコールに応じて異なるプリミティブを同時に処理するように構成された複数の段階(ステージ)を含むグラフィックスパイプライン(明確化のために
図1には図示せず)を実装する。並列処理ユニット110内のグラフィックスパイプラインの段階は、ビデオゲーム等のアプリケーションによって生成された異なるプリミティブを同時に処理することができる。ジオメトリがグラフィックスパイプラインに提示される場合、ハードウェア状態設定は、グラフィックスパイプラインの状態を定義するように選択される。状態の例としては、シーンのレンダリングに使用される、ラスタライザ状態、ブレンド状態、深度ステンシル状態、提示されたジオメトリのプリミティブトポロジタイプ、及び、シェーダ(例えば、頂点シェーダ、ドメインシェーダ、ジオメトリシェーダ、ハルシェーダ、ピクセルシェーダ等)が挙げられる。グラフィックスパイプライン状態に実装されるシェーダは、対応するバイトコードによって表される。場合によっては、グラフィックスパイプライン状態を表す情報をハッシュ又は圧縮して、グラフィックスパイプライン状態のより効率的な表現を提供する。
【0024】
ドライバ165は、アプリケーション155から等のより高いレベルのグラフィックコンピューティングプログラムが並列処理ユニット110と相互作用することを可能にするコンピュータプログラムである。例えば、ドライバ165は、アプリケーション155から受信した標準コードを、並列処理ユニット110によって理解されるネイティブフォーマットコマンドストリームに変換する。ドライバ165は、アプリケーション155からの入力が、並列処理ユニット110の設定を指示することを可能にする。そのような設定には、レンダリングモード、アンチエイリアシング制御、テクスチャフィルタ制御、バッチビニング制御及び遅延ピクセルシェーディング制御の選択が含まれる。
【0025】
CPUから受信したコマンドのセットを実行するために、並列処理ユニット110は、コマンドプロセッサ125、ディスパッチユニット130、複数の計算ユニット115、及び、キャッシュ120を含む。コマンドプロセッサ125は、CPU105からコマンドを受信し、受信したコマンドを処理するために準備するように構成されたハードウェアのセットである。例えば、いくつかの実施形態では、コマンドプロセッサ125は、受信したコマンドをバッファリングし、受信したコマンドを処理するために1つ以上のキューに編成し、受信したコマンドを復号するか又は他の方法で解釈するための動作等を実施する。
【0026】
ディスパッチユニット130は、コマンドプロセッサ125から受信したディスパッチコマンド(図示せず)に応じてディスパッチ動作を実施するように構成されたハードウェアのセットである。ディスパッチコマンドに応じて、ディスパッチユニット130は、ワークアイテムのグリッドにアクセスし、ワークアイテムのサブセット(例えば、ディスパッチ135)を、ウェーブフロントとして処理するために計算ユニット115にディスパッチする。ドローコールとは異なり、ディスパッチ135は、グラフィックスパイプラインを経由せずに並列処理ユニット110によって処理することができる。
【0027】
複数の計算ユニット115は、ディスパッチユニット130によってディスパッチされたディスパッチ(例えば、ディスパッチ135)に対してシェーディング動作を一緒に実施する。異なる実施形態では、計算ユニット115は、コマンドプロセッサ125から受信されたコマンドに基づいて、ジオメトリ演算、テクスチャ演算、テッセレーション演算、頂点演算、メッシュ演算、プリミティブ演算、レイトレーシング演算、計算演算等、又は、それらの任意の組み合わせを実施する。いくつかの実施形態では、これらの演算を実施するために、計算ユニット115の各々は、受信されたディスパッチのワークアイテムを使用して指定された演算を実行するように構成された1つ以上のSIMD要素を含む。
【0028】
キャッシュ120は、複数の計算ユニット115のためのデータを記憶する。したがって、シェーダ動作を実行する過程で、複数の計算ユニット115は、キャッシュ120に対してデータを記憶し、取り出す。記憶され、取り出されたデータは、処理されている特定のワークアイテムに基づく。例えば、いくつかの実施形態では、ディスパッチ135の各ワークアイテムは、画像の個々のピクセルに対応し、キャッシュ120は、ディスパッチ135に含まれる個々のピクセルごと、又は、個々のピクセルのサブセットごとのデータ(例えば、テクスチャ値)を記憶する。いくつかの実施形態では、並列処理ユニット110は、複数のキャッシュレベル及びシステムメモリ150を有するメモリ階層に関連付けられ、キャッシュ120は、複数のキャッシュレベルのうち何れかを表す。
【0029】
ディスパッチ内及びディスパッチ間のデータ局所性を活用するキャッシュ120へのアクセスを容易にするために、並列処理ユニット110は変換モジュール140を含む。変換モジュール140は、ディスパッチ135等のディスパッチについてキャッシュ120に記憶されたデータの局所性を分析し、アプリケーション155のワークアイテムのディスパッチについてキャッシュ120に記憶されたデータのデータ局所性に基づいて、初期キャッシュアクセスパターン(タイプライタウォーク等)をキャッシュアクセスパターン145に変換する。変換モジュール140は、ディスパッチごとにテクスチャリソースのリストを使用して、ディスパッチによってテクスチャリソースがどのようにアクセスされるかを決定する。例えば、テクスチャリソースAが第1のディスパッチによって書き込まれ、次のディスパッチによって読み取られる場合、変換モジュールは、リードアフターライトデータ局所性が存在すると判定する。順次ディスパッチの場合、通常、スレッドグループ内のスレッドによってアクセスされるテクスチャリソース内の各アドレスは、異なるディスパッチ内の対応するスレッドと同じアドレスになる。個々のディスパッチ内では、隣接するワークアイテムが隣接するアドレスを読み取ることもできる。スレッドがリソース内の複数のアドレスにアクセスする場合、変換モジュール140は、リードアフターリードデータ局所性が存在すると判定する。
【0030】
いくつかの実施形態において、変換モジュール140は、1つの値から他の値へのマッピングであるプログラム可能テーブル(図示せず)を含む。各ディスパッチ135は、番号付けされたワークアイテムから構成される。番号付けされたワークアイテムごとに、シーケンス値は、変換モジュール140内のプログラム可能テーブルに索引付けされて、新しいシーケンス値を生成する。いくつかの実施形態では、インデックス付けは、入力が与えられると新しいシーケンス値を生成する式を使用して、又は、メモリ内のテーブルへのインデックスとしてシーケンス値を使用することによって実施される。
【0031】
変換モジュール140が、ディスパッチ135についてリードアフターリードデータ局所性が存在すると判定した場合、いくつかの実施形態では、変換モジュール140は、タイプライタウォークの初期データアクセスパターンを、モートン又はヒルベルト空間充填曲線等の空間充填曲線のアクセスパターン145に変換する。変換モジュール140が、ディスパッチ135に対してリードアフターライトデータ局所性が存在すると判定した場合、いくつかの実施形態では、変換モジュール140は、タイプライタウォークの初期データアクセスパターンを、連続するディスパッチ135ごとに交互の昇順及び降順タイプライタ順序のアクセスパターン145に変換する。いくつかの実施形態では、変換モジュール140は、並列処理ユニット110のドライバ165及び他の構成要素に透過的な方法でキャッシュ120へのアクセス順序を変換するために、例えばテーブル又は他の構造を使用して、ハードウェアで変換を実施する。ディスパッチ135内及びディスパッチ間に存在するデータ局所性に基づいてアクセスパターンを変換することによって、変換モジュール140は、キャッシュ120への後続アクセスに必要なデータが後続アクセス時にキャッシュ120内に依然として存在する確率を増加させ、したがって、キャッシュ120におけるヒット率を増加させ、ディスパッチ間のレイテンシを減少させる。
【0032】
図2は、いくつかの実施形態による、ディスパッチ内のテクスチャキャッシュへの連続読み取りアクセスのためにタイプライタアクセスパターンを空間充填曲線アクセスパターンに変換する、
図1の並列処理ユニット110の変換モジュール140のブロック
図200である。ビュー205は、初期昇順タイプライタモードにおけるワークアイテムの順序付けを示す。ワークアイテムは、キャッシュ120のビュー205の左上隅の0から開始して、行の右端のエントリに達するまで行の各エントリを通って進み、次に、次の行の左端のエントリに進み、したがって、最後のエントリ63がキャッシュ120のビュー205の右下隅にあるように、左から右に、上から下に進むように順次順序付けられる。
【0033】
リードアフターリードデータ局所性がディスパッチ135のためにキャッシュ120に存在すると判定したことに応じて、変換モジュール140は、初期昇順タイプライタアクセスパターンをビュー210に示すモートン空間充填曲線に変換する。変換モジュール140は、プログラム可能テーブル215を使用して、ビュー205のアクセスパターンをビュー210のアクセスパターンに変換する。プログラム可能テーブル215は、ディスパッチ135のワークアイテムを再順序付けして、キャッシュ120に記憶されたデータにモートンウォーク順序でアクセスするようにする。例えば、いくつかの実施形態では、プログラム可能テーブルは複数のエントリを含み、各エントリはワークアイテムに対応する。テーブルの各エントリは、対応するワークアイテムが出力パターン内の何処に配置されるか、すなわち、ビュー210内の対応するワークアイテムの順序を示す値を記憶する。
【0034】
ビュー210は、モートンアクセスパターンにおけるスレッドの順序付けを示す。例えば、ビュー210の左上の4つのブロックは、ワークアイテム0~3の順序付けを示し、ビュー210の右下の4つのブロックは、ワークアイテム60~63の順序付けを示す。ワークアイテムは、ビュー210の左上の4つのブロックによって示される4つのワークアイテム0~3を含むタイル等の2×2タイルにグループ化される。モートンアクセスパターンのビュー210において、2×2タイルは、連続した数字を含む2×2タイルの2×2セットに配列される。例えば、第1のセットはタイル0~3を含み、第2のセットはタイル4~7を含み、第3のセットはタイル8~11を含み、第4のセットはタイル12~15を含む。ワークアイテムは、2×2タイルのそれぞれの中に順次配置され、例えば、上方左端のタイルはワークアイテム0~3を含み、下方右端のタイルはワークアイテム60~63を含む。いくつかの実施形態では、リードアフターリードデータ局所性をキャプチャするために、変換モジュール140は、初期昇順タイプライタアクセスパターンをヒルベルト又は擬似ヒルベルト空間充填曲線に変換する。
【0035】
図3は、いくつかの実施形態による、交互の昇順及び降順での連続ディスパッチのためのテクスチャキャッシュ120への連続アクセスのビュー305、315、325のブロック
図300である。ビュー305は、初期昇順タイプライタモードにおけるディスパッチ1 310のワークアイテムの順序付けを示す。ワークアイテムは、キャッシュ120のビュー305の左上隅の0,0から開始して、行の右端のエントリに到達するまで行の各エントリを通って進み、次いで、次の行の左端のエントリに進み、したがって、最後のエントリN,Nがキャッシュ120のビュー305の右下隅にあるように、左から右に、上から下に進むように順次順序付けられる。
【0036】
後続のディスパッチ、ディスパッチ2 320のためにリードアフターライトデータ局所性がキャッシュ120に存在すると判定したことに応じて、変換モジュール140は、ビュー315に示すように、初期昇順タイプライタアクセスパターンを降順タイプライタアクセスパターンに変換する。ビュー315に示される降順タイプライタアクセスパターンでは、ワークアイテムは、キャッシュ120のビュー315の右下隅のN,Nから開始して、行の左端のエントリに達するまで行の各エントリを通って進み、次に、次に高い行の右端のエントリから進み、したがって、アクセスされる最後のエントリがキャッシュ120のビュー315の左上隅のエントリ0,0であるように、右から左及び下から上に進むように順次順序付けられる。したがって、ディスパッチ2 320のアクセス順序は、ディスパッチ1 310のアクセス順序の逆である。
【0037】
最長時間未使用キャッシュ管理プロトコルの下では、ディスパッチ1 310からのキャッシュ120の最長時間アクセスされていないエントリは、0,0におけるエントリであり、これは、ディスパッチ2 320のワークアイテムがキャッシュ120にアクセスし始める時までにキャッシュ120から既に追い出されている場合がある。したがって、ディスパッチ2 320のアクセス順序を逆にすると、ディスパッチ2 320のワークアイテムは、ディスパッチ1 310のワークアイテムによって生成されたデータをキャッシュ120から追い出す前に、ディスパッチ2 320のアクセス順序がディスパッチ1 310のアクセス順序と同じであった場合に可能であるよりも多くのデータを消費することができる。
【0038】
同様に、リードアフターライトデータ局所性がディスパッチ2 320とディスパッチ3 330との間に存在すると判定したことに応じて、変換モジュール140は、ディスパッチ2 320のアクセス順序に対してディスパッチ3 330のワークアイテムのアクセス順序を再び逆にする。ビュー325は、初期昇順タイプライタモードにおけるディスパッチ3 330のワークアイテムの順序付けを示す。ワークアイテムは、キャッシュ120のビュー325の左上隅の0,0から開始して、行の右端のエントリに到達するまで行の各エントリを通って進み、次いで、次の行の左端のエントリに進み、したがって、最後のエントリN,Nがキャッシュ120のビュー325の右下隅にあるように、左から右に、上から下に進むように順次順序付けられる。したがって、ディスパッチ3 330のアクセス順序は、ディスパッチ2 320のアクセス順序の逆であり、データがキャッシュ120から追い出される前に、ディスパッチ3 330のワークアイテムが、ディスパッチ2 320のワークアイテムによって生成されたより多くのデータを消費することを可能にする。
【0039】
図4は、いくつかの実施形態による、データ局所性に基づいてディスパッチ又は一連の連続ディスパッチのキャッシュアクセスパターンを変換するための方法400を示すフロー図である。いくつかの実施形態では、方法400は、
図1に示される処理システム100等の処理システムによって実施される。ブロック402において、変換モジュール140は、アプリケーション155のディスパッチ内及びディスパッチ間のデータ局所性を分析する。ブロック404で、データ局所性がディスパッチ135内又はディスパッチ135間に存在すると判定したことに応じて、変換モジュール140は、データ局所性に基づいてディスパッチ135のキャッシュアクセスパターン145を選択して、データが追い出される前にキャッシュ120におけるデータの再利用を最大化する。例えば、いくつかの実施形態では、ディスパッチ内(すなわち、リードアフターリード)データ局所性が存在すると判定したことに応じて、変換モジュール140は、キャッシュ120への後続アクセスのためのアクセスパターンとして空間充填曲線を選択する。ディスパッチ内(すなわち、リードアフターライト)データ局所性が存在すると判定したことに応じて、変換モジュール140は、キャッシュ120にアクセスする連続ディスパッチのためのアクセスパターンとして、交互の昇順及び降順タイプライタモードを選択する。
【0040】
ブロック406において、変換モジュール140は、プログラム可能テーブル215を使用して初期キャッシュアクセスパターンを選択されたキャッシュアクセスパターン145に変換して、ディスパッチ135のワークアイテムを再順序付けするので、ワークアイテムは、選択されたキャッシュアクセスパターン145の順序でキャッシュ120に記憶されたデータにアクセスする。ブロック408において、ディスパッチ135のワークアイテムは、選択されたキャッシュアクセスパターン145に基づく順序でキャッシュ120にアクセスする。
【0041】
図5は、いくつかの実施形態による、データ局所性に基づいてキャッシュアクセスパターンを空間充填曲線又は交互の昇順及び降順に変換するための方法500を示すフロー図である。ブロック502において、変換モジュール140は、アプリケーション155の複数のディスパッチ135のデータ局所性を分析する。ブロック504において、変換モジュール140は、リードアフターリードデータ局所性が単一のディスパッチ135内に存在するかどうかを判定する。ブロック504において、変換モジュール140が、リードアフターリード局所性が単一のディスパッチ135内に存在すると判定した場合、方法フローはブロック506に続く。ブロック506において、変換モジュール140は、ディスパッチ135のアクセスパターンを空間充填曲線に変換する。いくつかの実施形態において、空間充填曲線は、Z次曲線、モートン曲線又はヒルベルト曲線のうち何れかである。ブロック508において、ディスパッチ135のワークアイテムは、空間充填曲線に基づく順序でキャッシュ120にアクセスする。
【0042】
ブロック504において、変換モジュール140が、ディスパッチ135についてリードアフターリードデータ局所性が存在しないと判定した場合、方法フローはブロック510に続く。ブロック510で、変換モジュール140は、リードアフターライトデータ局所性が連続ディスパッチ135内に存在するかどうかを判定する。ブロック504において、変換モジュール140が、リードアフターライトデータ局所性が連続ディスパッチ135に存在すると判定した場合、方法フローはブロック512に続く。ブロック512において、変換モジュール140は、第1のディスパッチであるディスパッチ1 310のワークアイテムに対するアクセスパターンを昇順タイプライタ順序に変換する。第1のディスパッチ310のワークアイテムに対する初期アクセスパターンが昇順タイプライタ順序である場合、変換モジュール140は、第1のディスパッチ310に対するアクセスパターンを変換することを控える。ブロック514において、変換モジュール140は、第1のディスパッチ1 310によって書き込まれたデータがキャッシュ120から追い出される前に第2のディスパッチ2 320によって消費されることを容易にするために、第2のディスパッチであるディスパッチ2 320のワークアイテムのアクセスパターンを降順タイプライタ順序に変換する。ブロック510において、変換モジュール140が、リードアフターライトデータ局所性が連続ディスパッチ135に存在しないと判定した場合、方法フローは、次のディスパッチ135のためにブロック502に戻る。
【0043】
いくつかの実施形態では、上記の装置及び技術は、
図1~
図5を参照して上述した処理システム等の1つ以上の集積回路(integrated circuit、IC)デバイス(集積回路パッケージ又はマイクロチップとも呼称される)を含むシステムに実装されている。電子設計自動化(electronic design automation、EDA)及びコンピュータ支援設計(computer aided design、CAD)ソフトウェアツールは、これらのICデバイスの設計及び製造に使用することができる。これらの設計ツールは、典型的には、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計するか又は適応させるためのプロセスの少なくとも一部を実行するために、1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作するための、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含み得る。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上の段階を表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶され、そこからアクセスされる。
【0044】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
【0045】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
【0046】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0047】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【手続補正書】
【提出日】2024-08-14
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
方法であって、
処理システムで実行されるアプリケーションのために、キャッシュに記憶されたデータのデータ局所性に基づいて、ワークアイテムのディスパッチによる複数のキャッシュアクセスのための第1のキャッシュアクセスパターンを変換することと、
前記処理システムの並列処理ユニットにおいて、変換されたキャッシュアクセスパターンに基づく順序で、前記キャッシュに記憶されたデータにアクセスすることと、を含む、
方法。
【請求項2】
前記複数のキャッシュアクセスは、単一のディスパッチに含まれる、
請求項1の方法。
【請求項3】
前記複数のキャッシュアクセスのうち第1のキャッシュアクセスと、前記第1のキャッシュアクセスの直後の前記複数のキャッシュアクセスのうち第2のキャッシュアクセスとは、前記キャッシュに記憶されたデータを読み取ることを含む、
請求項1又は2の方法。
【請求項4】
前記第1のキャッシュアクセスパターンを変換することは、
前記第1のキャッシュアクセスパターンを空間充填曲線に変換することを含む、
請求項3の方法。
【請求項5】
前記空間充填曲線は、擬似ヒルベルト空間曲線及びモートン空間曲線のうち何れかである、
請求項4の方法。
【請求項6】
前記複数のキャッシュアクセスのうち第1のキャッシュアクセスは、第1のディスパッチのために前記キャッシュにデータを書き込むことを含み、前記複数のキャッシュアクセスのうちの第2のキャッシュアクセスは、第2のディスパッチのために前記第1のディスパッチによって前記キャッシュに書き込まれた前記データを読み取ることを含む、
請求項1の方法。
【請求項7】
前記第1のキャッシュアクセスパターンを変換することは、前記第1のディスパッチについて昇順タイプライタ順序を選択することと、前記第2のディスパッチについて降順タイプライタ順序を選択することと、を含む、
請求項6の方法。
【請求項8】
前記複数のキャッシュアクセスについて、前記キャッシュに記憶されたデータのデータ再利用パターンを分析することを含む、
請求項1の方法。
【請求項9】
デバイスであって、
並列処理ユニットを備え、
前記並列処理ユニットは、
キャッシュ
を備え、
処理システムで実行されるアプリケーションのために、前記キャッシュに記憶されたデータのデータ局所性に基づいて、ワークアイテムのディスパッチによる複数のキャッシュアクセスのためのキャッシュアクセスパターンを選択する
ことと、
前記並列処理ユニットは、前記選択されたキャッシュアクセスパターンに基づく順序で、前記キャッシュに記憶されたデータにアクセスする
ことと、
を行うように構成されている、
デバイス。
【請求項10】
前記複数のキャッシュアクセスは、単一のディスパッチに含まれ
る、
請求項
9のデバイス。
【請求項11】
前記複数のキャッシュアクセスのうち第1のキャッシュアクセスと、前記複数のキャッシュアクセスのうち前記第1のキャッシュアクセスの直後の第2のキャッシュアクセスとは、前記キャッシュに記憶されたデータを読み取ることを含む、
請求項
9又は10のデバイス。
【請求項12】
前記並列処理ユニットは、第1のキャッシュアクセスパターンを空間充填曲線に変換する、
請求項9のデバイス。
【請求項13】
前記複数のキャッシュアクセスのうち第1のキャッシュアクセスは、第1のディスパッチのために前記キャッシュにデータを書き込むことを含み、前記複数のキャッシュアクセスのうち第2のキャッシュアクセスは、第2のディスパッチのために前記第1のディスパッチによって前記キャッシュに書き込まれた前記データを読み取ることを含
む、
請求項9のデバイス。
【請求項14】
前記並列処理ユニットは、前記第1のディスパッチについて昇順を有するアクセスパターンを選択し、前記第2のディスパッチについて降順を有するアクセスパターンを選択する、
請求項13のデバイス。
【請求項15】
前記並列処理ユニットは、前記複数のキャッシュアクセスについて、前記キャッシュに記憶されたデータのデータ再利用パターンを分析する、
請求項9のデバイス。
【国際調査報告】