JP5973590B2 - キャッシュのプレローディングにgpuコントローラを使用するための機構 - Google Patents

キャッシュのプレローディングにgpuコントローラを使用するための機構 Download PDF

Info

Publication number
JP5973590B2
JP5973590B2 JP2014546668A JP2014546668A JP5973590B2 JP 5973590 B2 JP5973590 B2 JP 5973590B2 JP 2014546668 A JP2014546668 A JP 2014546668A JP 2014546668 A JP2014546668 A JP 2014546668A JP 5973590 B2 JP5973590 B2 JP 5973590B2
Authority
JP
Japan
Prior art keywords
memory
cache
command message
message
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014546668A
Other languages
English (en)
Other versions
JP2015505091A5 (ja
JP2015505091A (ja
Inventor
リグール グエンナディ
リグール グエンナディ
リチマノフ ユーリ
リチマノフ ユーリ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ATI Technologies ULC
Original Assignee
ATI Technologies ULC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ATI Technologies ULC filed Critical ATI Technologies ULC
Publication of JP2015505091A publication Critical patent/JP2015505091A/ja
Publication of JP2015505091A5 publication Critical patent/JP2015505091A5/ja
Application granted granted Critical
Publication of JP5973590B2 publication Critical patent/JP5973590B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Processing (AREA)

Description

本発明は、概して、コンピューティングシステムで実行される計算操作に関する。より具体的には、本発明は、コンピューティングシステムで実行されるグラフィック処理タスクに関する。
グラフィック処理ユニット(GPU)は、グラフィック処理タスクを行うように特別に設計された複雑な集積回路である。例えば、GPUは、ビデオゲームアプリケーション等のエンドユーザアプリケーションによって要求されるグラフィック処理タスクを実行することができる。GPUの演算能力は、対応する中央処理装置(CPU)プラットフォームの演算能力を上回る速度で発展している。この発展は、モバイルコンピューティング市場(例えば、ノートブック、モバイルスマートフォン、タブレット等)およびそれに必要な支援サーバ/企業システムの拡大と相まって、所望のユーザ体験の特定の質を提供するために使用されている。
しかしながら、GPUは、従来、主にグラフィックの高速化のために利用可能な制約されたプログラミング環境で動作している。これらの制約は、GPUが、CPUほどプログラミングエコシステムが豊富でなかったという事実から生じていた。したがって、その使用は、ほとんどが、二次元(2D)および三次元(3D)のグラフィックに限定され、グラフィックおよびビデオのアプリケーションプログラミングインターフェース(API)を扱うことが既に当然となっている少数の最先端のマルチメディアのアプリケーションに限定されている。
マルチベンダがサポートする標準APIおよび支援ツールである、OpenCL(登録商標)およびDirectCompute(登録商標)の出現により、従来のアプリケーションにおけるGPUの制限は、従来のグラフィックを越えて拡大されている。OpenCL(登録商標)およびDirectCompute(登録商標)は、将来性のある始まりではあるが、CPUとGPUとの組み合わせを、大多数のプログラムタスクに対してCPUと同じように流動的に使用することを可能にする環境およびエコシステムを生成するには、多くの障害が残されている。
一般に、エンドユーザアプリケーションとGPUとの間には、ソフトウェアの複数の層が存在する。エンドユーザアプリケーションは、アプリケーションプログラミングインターフェース(API)と通信する。APIは、エンドユーザアプリケーションが、GPUに依存する形式ではなく、標準化された形式で、グラフィックデータおよびコマンドを出力することを可能にする。APIは、ドライバと通信する。ドライバは、APIから受信した標準的なコードを、GPUによって理解されるネイティブの形式の命令に変換する。ドライバは、典型的に、GPUの製造業者によって作られている。GPUは、次いで、ドライバからの命令を実行する。
標準的なGPUは、レンダリングとして知られるプロセスにおいて、画像をその構成要素のより高レベルな記述から作り上げるピクセルを生成する。GPUは、典型的に、パイプラインの使用による連続的なレンダリングの概念を利用して、ピクセル、テクスチャおよび幾何学的データを処理する。これらのパイプラインは、しばしば、ラスタライザ、セットアップエンジン、カラーブレンダ、テクスチャマッピング、および、シェーダパイプまたはシェーダパイプラインで達成することができるプログラム可能ステージ等の固定機能特殊用途パイプラインの集団と称される。「シェーダ」とは、コンピュータグラフィックにおいて、主にレンダリング効果を行うためにグラフィックリソースによって使用されるソフトウェア命令のセットを指す用語である。さらに、GPUは、より高度なスループットを得るために、並列処理設計において複数のプログラム可能パイプラインを利用することもできる。複数のシェーダパイプラインは、シェーダパイプアレイと称され得る。
さらに、GPUは、テクスチャマッピングとして知られる概念に対応する。テクスチャマッピングは、テクスチャの近隣ピクセル、または、テクセルの色の使用を通じて、テクスチャマッピングされるピクセルのテクスチャ色を判定するために使用されるプロセスである。このプロセスは、テクスチャ平滑化またはテクスチャ補間とも称される。しかしながら、高画質のテクスチャマッピングは、高度な計算複雑性を要する。さらに、単一の(統合された)シェーダが搭載されたGPUは、多くの種類のシェーダ処理に同時に対応する。したがって、高性能な汎用メモリアクセス能力に対する要望が増えている。
シェーダエンジンは、テクスチャ、シェーダコードおよび他の種類のデータに関して、ローカルキャッシュメモリへの高速アクセスに依存している。データとともにキャッシュをプレローディングすることにより、時間が集中的であり得る動画またはデータの主要システムメモリへのアクセスの必要がないため、GPUの操作実行時間を低減させる。これは、メモリの同一または類似の部分にアクセスし、毎回GPUが実行を開始する場合、GPUの性能の改善をもたらす。現在、GPUは、データとともにキャッシュをプレローディングする機能を提供する専用のプログラム可能コントローラを有していない。
新たなソフトウェアアプリケーションの高まり続ける複雑性を考えると、効率的で高品質のレンダリング、テクスチャフィルタリングおよびエラー補正を提供するGPUに対する要望が高まっている。
したがって、前述の欠点を軽減するためのシステムおよび/または方法が必要とされる。特に、実行用のメモリの関連する部分を有する、選択されたAPDキャッシュの明示的および暗黙的なプレローディングを管理する専用コントローラが必要とされている。
GPU、アクセラレイテッド処理ユニット(APU)およびグラフィック処理ユニットの汎用使用(GPGPU)は、この分野では広く使用されている用語であるが、「アクセラレイテッド処理デバイス(APD)」という表現は、より広範な表現であると考えられる。例えば、APDは、加速グラフィック処理タスク、データ並列タスクおよびネスト型データ並列タスクを加速させることに関連するそれらの機能および計算を加速した方式で行う、ハードウェアおよび/またはソフトウェアの任意の協働体を指す。
本発明の実施形態は、ある特定の状況において、キャッシュをプレローディングするための方法およびシステムを含む。本システムは、キャッシュに電気的に接続されたAPDを備え、メモリの一部に関連するデータを含むコマンドメッセージを出力するように構成されたホストプロセッサと、コマンドメッセージを解釈して、(i)キャッシュに関連するポリシー情報を識別することと、(ii)前記一部の位置およびサイズを判定することと、(iii)前記一部の内容に関連するデータを含むフェッチメッセージを作成することと、を行うように構成されたコントローラと、を備え、コントローラは、フェッチメッセージをキャッシュに出力するように構成されている。
本発明のさらなる実施形態は、キャッシュに電気的に接続されたAPDから構成されているシステムを含み、このシステムは、(i)キャッシュにメモリの一部のプレローディングを明示的に要求するデータを含むコマンドメッセージを受信することと、(ii)キャッシュに関連するポリシー情報を識別することと、(iii)前記一部の位置およびサイズを判定することと、(iv)前記一部の内容に関連するデータを含むフェッチメッセージを作成することと、を行うように構成されたコントローラを備え、コントローラは、フェッチメッセージをキャッシュに出力するように構成されている。
本発明のさらなる特徴および利点ならびに本発明の種々の実施形態の構造および操作は、添付の図面を参照して、以下に詳細に記載されている。本発明は、本明細書に記載された特定の実施形態に限定されないことに留意されたい。そのような実施形態は、例示目的のみのために本明細書に提示されている。本明細書に含まれる教示に基づき、追加的な実施形態が当業者において明白となるであろう。
本明細書に組み込まれ、本明細書の一部を形成する添付の図面は、本発明を例示し、さらに、説明とともに本発明の原理を説明するように機能し、当業者が本発明を実施し、利用することを可能にする。本発明の種々の実施形態は、図面を参照して以下に記載され、同様の参照番号は、全体を通じて同様の構成要素を参照して使用される。
本発明の実施形態による処理システムの例示的なブロック図である。 図1Aに例示されるAPDの例示的なブロック図である。 一実施形態による、メモリの一部とともにキャッシュをプレローディングするAPDの例示的なフローチャートである。 一実施形態による、メモリの一部とともにキャッシュをプレローディングするAPDの別の例示的なフローチャートである。
本発明を、添付の図面を参照して記載する。一般に、要素が最初に現れる図面は、典型的に、対応する参照番号の左端の数字によって示されている。
以下の詳細な説明において、「一実施形態」、「実施形態」、「例示的な実施形態」等への言及は、記載される実施形態が、特定の特徴、構造または特性を含み得ることを示すが、全ての実施形態が、特定の特徴、構造または特性を必ずしも含むわけではない。さらに、このような語句は、必ずしも同じ実施形態を指すわけではない。さらに、特定の特徴、構造または特性が、実施形態に関連して記載される場合には、かかる特徴、構造または特性を、他の実施形態に関連して達成することは、明確に記載されているか否かにかかわらず、当業者の知識の範囲内であると考えられる。
「本発明の実施形態」という用語は、本発明の全ての実施形態が、提案されている特徴、利点または操作のモードを含むことを要するものではない。本発明の範囲から逸脱することなく、代替の実施形態が発明されてもよく、本発明の周知の要素は、詳細には記述されないか、または、本発明に関連する細部を曖昧にしないために割愛される場合がある。さらに、本明細書に使用される用語は、特定の実施形態を説明する目的のみであり、制限するように意図しているものではない。例えば、本明細書に使用される際、単数形の「1つの(a)」、「1つの(an)」および「その(the)」は、文脈により別途明確に示されない限り、複数形を含むことを意図している。「備える(comprises)」、「備えている(comprising)」、「含む(includes)」および/または「含んでいる(including)」という用語は、本明細書で使用される際、言及される特徴、完全体、ステップ、操作、要素および/または構成要素の存在を明示するが、1つ以上の他の特徴、完全体、ステップ、操作、要素、構成要素および/またはこれらの群の存在を排除するものではない。
図1Aは、CPU102およびAPD104の2つのプロセッサを含む、統合型コンピューティングシステム100の例示的な図である。CPU102は、1つ以上の単一コアまたはマルチコアのCPUを含み得る。本発明の一実施形態において、システム100は、統合型プログラミングおよび実行環境を提供するために、CPU102およびAPD104を組み合わせて、単一のシリコンダイまたはパッケージ上に形成されている。この環境は、APD104を、いくつかのプログラミングタスクについて、CPU102と同程度またはそれと近い程度に流動的に使用することを可能にする。しかしながら、CPU102およびAPD104が単一のシリコンダイ上に形成されることは、本発明の絶対的な要件ではない。いくつかの実施形態においては、これらを別個に形成し、同一のまたは異なる基板上に取り付けることが可能である。
一実施例において、システム100は、システムメモリ106、オペレーティングシステム108および通信基盤109を含む。オペレーティングシステム108および通信基盤109は、以下に、より詳細に説明される。
システム100は、カーネルモードドライバ(KMD)110と、ソフトウェアスケジューラ(SWS)112と、例えば入出力メモリ管理ユニット(IOMMU)等のメモリ管理ユニット116とを含む。システム100の構成要素は、ハードウェア、ファームウェア、ソフトウェアまたはこれらの任意の組み合わせとして実装され得る。当業者であれば、システム100が、図1Aに示される実施形態で示されているものに加えて、または、それらとは異なる、1つ以上のソフトウェア、ハードウェアおよびファームウェア構成要素を含んでもよいことを理解するであろう。
一実施形態において、KMD110等のドライバは、典型的に、ハードウェアが接続するコンピュータバスまたは通信サブシステムを通じて、デバイスと通信する。コールプログラムがドライバ内のルーチンを呼び出す際、ドライバは、デバイスに対してコマンドを発行する。デバイスがドライバにデータを送り返すと、ドライバは、元のコールプログラムのルーチンを呼び出す。一実施形態において、ドライバは、ハードウェア依存性であり、オペレーティングシステム固有である。これらは、通常、任意の必要な非同期時間依存性ハードウェアインターフェースに必要とされる割り込み処理を提供する。
デバイスドライバは、特に最新のMicrosoft Windows(登録商標)プラットフォーム上では、カーネルモード(Ring0)またはユーザモード(Ring3)で作動し得る。ユーザモードでドライバを作動させる主な利点は、下手に作られたユーザモードデバイスドライバがカーネルメモリを上書きすることによって、システムの機能を停止させるのを抑制できるため、安定性が向上することである。一方で、ユーザ/カーネル−モードの移行は、通常、相当な性能オーバーヘッドを課し、それによって、ユーザモードドライバの短い待ち時間と高いスループットに対する要件とを妨げる。カーネル空間は、システムコールの使用を通じてのみ、ユーザモジュールによってアクセスされ得る。UNIX(登録商標)シェルまたは他のGUIに基づくアプリケーションのようなエンドユーザプログラムは、ユーザ空間の一部である。これらのアプリケーションは、カーネルがサポートする機能を通じて、ハードウェアとやりとりする。
CPU102は、制御プロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)またはデジタル信号プロセッサ(DSP)のうち1つ以上を含み得る(図示されない)。CPU102は、例えば、オペレーティングシステム108、KMD110、SWS112およびアプリケーション111を含むコンピューティングシステム100の操作を制御する制御論理を実行する。この例示的な実施形態において、CPU102は、一実施形態によると、アプリケーション111の実行の開始および制御を、例えば、そのアプリケーションに関連する処理をCPU102およびAPD104等の他の処理リソースにわたって分散させることによって行う。
APD104は、とりわけ、例えば、特に並列処理に好適であり得るグラフィック操作および他の操作等の選択された機能のためのコマンドおよびプログラムを実行する。一般に、APD104は、ピクセル操作、幾何学的計算、および、画像をディスプレイにレンダリングすること等のグラフィックパイプライン操作を実行するために、頻繁に使用され得る。本発明の種々の実施形態において、APD104は、CPU102から受信したコマンドまたは命令に基づいて、計算処理操作(例えば、動画操作、物理学シミュレーション、計算流体力学等のグラフィックとは関連性のない操作)を実行することができる。
例えば、コマンドは、典型的には、命令セットアーキテクチャ(ISA)で定義されない特別な命令とみなされ得る。コマンドは、ディスパッチプロセッサ、コマンドプロセッサまたはネットワークコントローラ等の特別なプロセッサによって実行され得る。一方、命令は、例えば、コンピュータアーキテクチャ内のプロセッサの単一の操作とみなされ得る。一実施形態において、2つのセットのISAを使用する場合には、一部の命令は、x86プログラムの実行に用いられ、一部の命令は、APD計算ユニット上でのカーネルの実行に用いられる。
例示的な実施形態において、CPU102は、選択されたコマンドをAPD104に伝送する。これらの選択されたコマンドは、並列実行に適切なグラフィックコマンドおよび他のコマンドを含み得る。計算処理コマンドも含み得るこれらの選択されたコマンドは、CPU102から実質的に独立して実行され得る。
APD104は、限定されないが、1つ以上のSIMD処理コア等のように、その独自の計算ユニット(図示されない)を含み得る。本明細書に参照される際、SIMDは、カーネルが、独自のデータおよび共有のプログラムカウンタを有する複数の処理要素上で同時に実行される、パイプラインまたはプログラミングモデルである。全ての処理要素は、同一の命令セットを実行する。条件付き実行制御の使用により、発行されたコマンドの各々に対してワークアイテムが関与するか否かを可能にする。
一実施形態において、各APD104計算ユニットは、1つ以上のスカラーおよび/もしくはベクトル浮動小数点数演算ユニットならびに/または算術論理ユニット(ALU)を含み得る。APD計算ユニットは、逆二乗根ユニットおよびサイン/コサインユニット等の特殊目的の処理ユニット(図示されない)を含み得る。一実施形態において、APD計算ユニットは、本明細書において、シェーダコア122と総称される。
1つ以上のSIMDを有することは、一般的に、APD104を、グラフィック処理において一般的なもの等のデータ並列タスクの実行に理想的に適したものにする。
ピクセル処理等の一部のグラフィックパイプライン操作と、他の並列計算操作とは、同じコマンドの流れまたは計算カーネルが、入力データ要素の流れまたは集団上で実行されることを必要とし得る。同じ計算カーネルのそれぞれのインスタンス作成は、そのようなデータ要素を並列に処理するために、シェーダコア122内の複数の計算ユニット上で同時に実行され得る。本明細書で参照される際、例えば、計算カーネルは、プログラムで宣言され、APD計算ユニットで実行される命令を含む関数である。この関数は、カーネル、シェーダ、シェーダプログラムまたはプログラムとも称される。
一つの例示的な実施形態において、各計算ユニット(例えば、SIMD処理コア)は、受信データを処理するために、特定のワークアイテムのそれぞれのインスタンス作成を実行し得る。ワークアイテムは、コマンドによってデバイス上に呼び出されるカーネルの並列実行の集合の1つである。ワークアイテムは、計算ユニットで実行するワークグループの一部として、1つ以上の処理要素によって実行され得る。
一実施形態において、ワークアイテムは、コマンドによってデバイスに呼び出されるカーネルの並列実行の集合の1つである。ワークアイテムは、計算ユニットで実行するワークグループの一部として、1つ以上の処理要素によって実行される。
ワークアイテムは、そのグローバルIDおよびローカルIDにより、集合内の他の実行と区別される。一実施形態において、SIMD上で同時に実行するワークグループのワークアイテムのサブセットは、ウェーブフロント136と称され得る。ウェーブフロントの幅は、計算ユニット(例えば、SIMD処理コア)のハードウェアの特性である。本明細書で参照される場合、1つのワークグループとは、単一の計算ユニット上で実行する関連ワークアイテムの集合である。グループ内のワークアイテムは、同じカーネルを実行し、ローカルメモリおよびワークグループバリアを共有する。
例示的な実施形態において、1つのワークグループからの全てのウェーブフロントは、同じSIMD処理コア上で処理される。ウェーブフロント全体にわたる命令が1つずつ発行され、全てのワークアイテムが同じ制御フローに従う場合、各ワークアイテムは同じプログラムを実行する。ウェーブフロントは、ワープ、ベクトルまたはスレッドと称され得る。
実行マスクおよびワークアイテム条件付き実行制御を使用して、ウェーブフロント内で分散した制御フローを可能し、個別のワークアイテムがカーネルを通じて固有のコードパスを実際に取得することができる。ウェーブフロント開始時に完全なワークアイテムセットが利用可能でない場合には、部分実装(partially populated)ウェーブフロントが処理され得る。例えば、シェーダコア122は、所定数のウェーブフロント136を同時に実行することができ、各ウェーブフロント136は複数のワークアイテムを含む。
システム100内では、APD104は、例えばグラフィックメモリ130などの独自のメモリを含む(ただし、メモリ130は、グラフィックのみの使用に限定されない)。グラフィックメモリ130は、APD104での計算時に使用するためのローカルメモリを提供する。シェーダコア122内の個別の計算ユニット(図示されない)は、それらの独自のローカルデータストア(図示されない)を有し得る。一実施形態において、APD104は、ローカルグラフィックメモリ130へのアクセスと、メモリ106へのアクセスとを含む。別の実施形態において、APD104は、ダイナミックランダムアクセスメモリ(DRAM)へのアクセス、または、APD104に直接取り付けられ、メモリ106から分離して取り付けられた他のメモリ(図示されない)へのアクセスを含み得る。
示される実施形態において、APD104は、1つまたは「n」個のコマンドプロセッサ(CP)124を含む。CP124は、APD104内での処理を制御する。CP124は、実行されるコマンドをメモリ106内のコマンドバッファ125から取り出し、APD104上でそれらのコマンドの実行を調整する。
一実施形態において、CPU102は、アプリケーション111に基づいて、コマンドを適切なコマンドバッファ125に入力する。本明細書に参照される際、アプリケーションとは、CPUおよびAPD内の計算ユニット上で実行することになるプログラム部分の組み合わせである。
複数のコマンドバッファ125は、APD104における各プロセスの実行がスケジュールされた状態で維持される。
CP124は、ハードウェア、ファームウェア、ソフトウェアまたはこれらの組み合わせで実装され得る。一実施形態において、CP124は、スケジューリング論理(logic)を含む論理を実装するためのマイクロコードを有する縮小命令セットコンピュータ(RISC)エンジンとして実装される。
APD104は、1つまたは「n」個のディスパッチコントローラ(DC)126を含む。本願では、ディスパッチという用語は、1セットの計算ユニット上で1セットのワークグループのカーネルの実行を開始するためにコンテキスト状態を使用するディスパッチコントローラによって実行されるコマンドを指す。DC126は、シェーダコア122内でワークグループを開始するための論理を含む。いくつかの実施形態において、DC126は、CP124の一部として実装され得る。
システム100は、APD104における実行のためのランリスト150からプロセスを選択するためのハードウェアスケジューラ(HWS)128を含む。HWS128は、ラウンドロビン方式、優先レベルを使用して、または、他のスケジューリング方針に基づいて、ランリスト150からプロセスを選択し得る。優先レベルは、例えば動的に判定され得る。HWS128は、例えば、新たなプロセスを追加することによって、および、ランリスト150から現行のプロセスを削除することによって、ランリスト150を管理する機能を含む。HWS128のランリスト管理論理は、時には、ランリストコントローラ(RLC)と称される。
本発明の種々の実施形態において、HWS128がランリスト150からプロセスの実行を開始すると、CP124は、対応するコマンドバッファ125からのコマンドの取り出しおよび実行を開始する。いくつかの場合において、CP124は、APD104内で実行される1つ以上のコマンドを生成することができ、これは、CPU102から受信されるコマンドと一致する。一実施形態において、CP124は、他の構成要素とともに、APD104のリソースおよび/またはシステム100のリソースの利用を改善または最大化する方式で、APD104上にコマンドの優先順位付けおよびスケジューリングを実装する。
APD104は、割り込みジェネレータ146へのアクセスを有してもよいし、割り込みジェネレータ146を含んでもよい。割り込みジェネレータ146は、APD104がページフォルト等の割り込みイベントを生じた場合に、オペレーティングシステム108に割り込むようにAPD104によって構成され得る。例えば、APD104は、上述のページフォルト割り込みを生成することを、IOMMU116内の割り込み生成論理に依存し得る。
APD104は、シェーダコア122内で現在作動しているプロセスに先制するために、先制およびコンテキストスイッチ論理120を含み得る。コンテキストスイッチ論理120は、例えば、プロセスを停止させ、その現在の状態(例えば、シェーダコア122の状態およびCP124の状態)を保存するための機能性を含む。
本明細書で参照される際、状態という用語は、初期状態、中間状態および/または最終状態を含み得る。初期状態は、マシンが、プログラミング命令に従って入力データセットを処理して、出力データセットを作成する開始点である。例えば、処理が進行することを可能にするために、複数の時点で記憶することが必要な中間状態が存在する。この中間状態は、何らかの他のプロセスによる割り込みの際に、後で実行を継続することを可能にするために記憶される場合がある。出力データセットの一部として記録され得る最終状態もまた存在する。
先制およびコンテキストスイッチ論理120は、別のプロセスをAPD104にコンテキストスイッチするための論理を含み得る。別のプロセスをAPD104上での作動にコンテキストスイッチするための機能は、例えば、CP124およびDC126を通じて、APD104上で作動するプロセスのインスタンス化を行うことと、そのプロセスについて前に保存された状態を回復させることと、その実行を開始することと、を含み得る。
メモリ106は、DRAM(図示されない)等の非永続的メモリを含み得る。メモリ106は、アプリケーションまたは他の処理論理の部分の実行中に、例えば、処理論理命令、定数および変数を記憶し得る。例えば、一実施形態において、CPU102上で1つ以上の操作を行う制御論理の一部は、CPU102による操作のそれぞれの部分の実行中にメモリ106内に存在し得る。
実行中、それぞれのアプリケーション、オペレーティングシステムの機能、処理論理コマンドおよびシステムソフトウェアは、メモリ106内に存在し得る。オペレーティングシステム108に必須の制御論理コマンドは、通常、実行中にメモリ106内に存在する。例えば、カーネルモードドライバ110およびソフトウェアスケジューラ112を含む他のソフトウェアコマンドも、システム100の実行中、メモリ106内に存在し得る。
この実施形態において、メモリ106は、コマンドをAPD104に送信するためにCPU102によって使用されるコマンドバッファ125を含む。メモリ106は、プロセスリストおよびプロセス情報(例えば、アクティブリスト152およびプロセス制御ブロック154)を含む。これらのリストおよび情報は、スケジューリング情報をAPD104および/または関連するスケジューリングハードウェアに伝達するために、CPU102上で実行するスケジューリングソフトウェアによって使用される。メモリ106へのアクセスは、メモリ106に連結されているメモリコントローラ140によって管理され得る。例えば、メモリ106から読み取り、または、メモリ106への書き込みを行うためのCPU102または他のデバイスからの要求は、メモリコントローラ140によって管理される。
システム100の他の態様に戻って参照すると、IOMMU116は、マルチコンテキストメモリ管理ユニットである。
本明細書に使用される際、コンテキストは、カーネルが実行される環境、ならびに、同期およびメモリ管理が定義されるドメインとみなされ得る。コンテキストは、1セットのデバイスと、それらのデバイスにアクセス可能なメモリと、その対応するメモリ特性と、カーネルの実行またはメモリオブジェクトへの操作を計画するために使用される1つ以上のコマンドキューと、を含む。
図1Aに示される実施例に戻って参照すると、IOMMU116は、APD104を含むデバイスのメモリページアクセスのための、仮想アドレスから物理アドレスへの変換を行う論理を含む。IOMMU116は、例えば、APD104等のデバイスによるページアクセスがページフォルトとなった場合に、割り込みを生成する論理を含んでもよい。IOMMU116は、変換索引バッファ(TLB)118を含んでもよいし、TLB118へのアクセスを有し得る。TLB118は、一例として、APD104によって作成されるメモリ106内のデータに対する要求に対して、論理(すなわち、仮想)メモリアドレスから物理メモリアドレスへの変換を加速させるための内容アドレスメモリ(CAM)において実装され得る。
示される実施例において、通信基盤109は、必要に応じて、システム100の構成要素を相互接続する。通信基盤109は、周辺構成要素相互接続(PCI)バス、拡張PCI(PCI−E)バス、アドバンストマイクロコントローラバスアーキテクチャ(AMBA)バス、アドバンストグラフィックポート(AGP)または他のこのような通信基盤のうち1つ以上を含み得る(図示されない)。通信基盤109は、イーサネット(登録商標)、同様のネットワークまたはアプリケーションのデータ変換率要件を満たす任意の好適な物理的通信基盤を含み得る。通信基盤109は、コンピューティングシステム100の構成要素を含む構成要素を相互接続するための機能を含む。
この実施例において、オペレーティングシステム108は、システム100のハードウェア構成要素を管理し、共通のサービスを提供するための機能を含む。種々の実施形態において、オペレーティングシステム108は、CPU102上で実行し、共通のサービスを提供し得る。これらの共通のサービスは、例えば、CPU102内での実行のためのスケジューリングアプリケーション、フォルト管理、割り込みサービスおよび他のアプリケーションの入出力を処理することを含み得る。
いくつかの実施形態において、オペレーティングシステム108は、割り込みコントローラ148等の割り込みコントローラによって生成される割り込みに基づいて、適切な割り込み処理ルーチンを呼び出す。例えば、オペレーティングシステム108は、ページフォルト割り込みを検出すると、割り込みハンドラを呼び出して、関連ページのメモリ106へのロードを開始し、対応するページテーブルを更新することができる。
オペレーティングシステム108は、ハードウェア構成要素へのアクセスがオペレーティングシステムによって管理されるカーネル機能を通じて媒介されるようにするのを確実にすることによって、システム100を保護するための機能を含み得る。実際には、オペレーティングシステム108は、アプリケーション111等のアプリケーションが、CPU102上でユーザ空間において作動することを確実にする。オペレーティングシステム108は、アプリケーション111が、ハードウェアおよび/または入出力機能にアクセスするために、オペレーティングシステムによって提供されるカーネル機能性を呼び出すことを確実にする。
例として、アプリケーション111は、CPU102上でも実行されるユーザ計算を行うための様々なプログラムまたはコマンドを含む。CPU102は、APD104での処理のために選択されたコマンドを、連続的に送信することができる。
一実施例において、KMD110は、アプリケーションプログラムインターフェース(API)を実装し、それを通じて、CPU102、またはCPU102もしくは他の論理上で実行するアプリケーションが、APD104の機能を呼び出し得る。例えば、KMD110は、CPU102からのコマンドをコマンドバッファ125のキューに入れることができ、そこからAPD104がその後でコマンドを取り出す。さらに、KMD110は、SWS112とともに、APD104上で実行されるプロセスのスケジューリングを行うことができる。SWS112は、例えば、APD上で実行されるプロセスの優先順位付けされたリストを維持するための論理を含み得る。
本発明の他の実施形態において、CPU102上で実行するアプリケーションは、コマンドをキューに入れるときに、KMD110を完全にバイパスし得る。
いくつかの実施形態において、SWS112は、APD104上で実行されるプロセスのアクティブリスト152をメモリ106内に維持する。SWS112は、ハードウェア内のHWS128によって管理されるアクティブリスト152内のプロセスのサブセットを選択する。例示的な実施形態において、プロセスのこの2レベルランリストは、プロセス管理の柔軟性を増加させ、ハードウェアが処理環境の変化に迅速に応答することを可能にする。別の実施形態において、APD104上で各プロセスを作動させることに関する情報は、プロセス制御ブロック(PCB)154を通じて、CPU102からAPD104に伝達される。
アプリケーション、オペレーティングシステムおよびシステムソフトウェアの処理論理は、マスクワーク/フォトマスクの生成を通じた製造プロセスを最終的に構成して、本明細書に記載される発明の態様を具現化するハードウェアデバイスを生成することを可能にするために、C等のプログラム言語および/またはVerilog、RTLもしくはネットリスト等のハードウェア記述言語で指定されるコマンドを含み得る。
当業者であれば、本明細書を読むことにより、コンピューティングシステム100が図1Aに示されるものよりも多いまたは少ない構成要素を含み得ることを理解するであろう。例えば、コンピューティングシステム100は、1つ以上の入力インターフェース、不揮発性記憶装置、1つ以上の出力インターフェース、ネットワークインターフェースおよび/または1つ以上のディスプレイもしくはディスプレイインターフェースを含み得る。
図1Bは、図1Aに示されるAPD104のより詳細な図を示す実施形態である。図1Bにおいて、CP124は、CPパイプライン124a,124b,124cを含み得る。CP124は、図1Aに示されるコマンドバッファ125からの入力として提供されるコマンドリストを処理するように構成され得る。図1Bの例示的な操作において、CP入力0(124a)は、コマンドをグラフィックパイプライン162へと進行させることを担う。CP入力1,2(124b,124c)は、コマンドを計算パイプライン160へと進める。また、HWS128の操作を制御するためのコントローラ機構166も提供される。
図1Bにおいて、グラフィックパイプライン162は、本明細書では順序パイプライン(ordered pipeline)164と称されるブロックのセットを含み得る。例として、順序パイプライン164は、頂点グループ変換器(VGT)164a、初期アセンブラ(PA)164b、スキャンコンバータ(SC)164cおよびシェーダエクスポートレンダーバックユニット(SX/RB)176を含む。順序パイプライン164内の各ブロックは、グラフィックパイプライン162内で処理されるグラフィックの異なる段階を表し得る。順序パイプライン164は、固定関数ハードウェアパイプラインであり得る。本発明の精神および範囲内に含まれる他の実現形態が用いられてもよい。
少量のデータのみがグラフィックパイプライン162への入力として提供され得るが、このデータは、グラフィックパイプライン162からの出力として提供されるときまでに増幅されることになる。また、グラフィックパイプライン162は、CPパイプライン124aから受信したワークアイテムグループ内の範囲を通して計数を行うためのDC166を含む。DC166を通じて提出される計算ワークは、グラフィックパイプライン162と準同期である。
計算パイプライン160は、シェーダDC168,170を含む。DC168,170のそれぞれは、CPパイプライン124b,124cから受信されたワークグループ内の計算範囲を通して計数を行うように構成されている。
図1Bに図示されるDC166,168,170は、入力ワークグループを受信し、ワークグループをウェーブフロントに分解し、次いで、ウェーブフロントをシェーダコア122に転送する。
グラフィックパイプライン162は、一般に固定関数パイプラインであるため、その状態を保存および復元することは困難であり、結果として、グラフィックパイプライン162は、コンテキストスイッチを行うことが困難である。したがって、ほとんどの場合において、本明細書に記載されるように、コンテキストスイッチは、グラフィック処理間のコンテキストスイッチには関連しない。シェーダコア122内のグラフィックワークに対しては例外であり、コンテキストスイッチが行われ得る。
グラフィックパイプライン162内でのワーク処理が完了した後、完了したワークは、奥行きおよび色の計算を行った後に、その最終結果をメモリ130に書き込むレンダーバックユニット176を通じて処理される。
シェーダコア122は、グラフィックパイプライン162および計算パイプライン160によって共有され得る。シェーダコア122は、ウェーブフロントを作動させるように構成される汎用プロセッサであり得る。一実施例において、計算パイプライン160内の全ワークは、シェーダコア122内で処理される。シェーダコア122は、プログラム可能なソフトウェアコードを作動させ、状態データ等の種々の形態のデータを含む。シェーダコア122は、RW L2キャッシュ174に接続されている。
図2は、本発明の実施形態による例示的な方法200を示すフローチャートである。方法200は、図2の記載を通じて参照される、図1Aおよび1Bのシステム100上で動作し得る。一実施例において、方法200は、APD104のRW L2キャッシュ174等のAPDのキャッシュをプレローディングするために使用され得る。方法200は、図示された順序で発生してもよいし、図示された順序で発生しなくてもよいし、全ての操作を必要としなくてもよい。
方法200は、操作202で開始し、操作204へと続く。操作204では、コマンドメッセージがコントローラによって受信される。一実施形態によると、ホストプロセッサは、メモリの一部に関連するデータを含むコマンドメッセージを出力するように構成されている。ホストプロセッサは、例えば、CPU102であり得る。コマンドメッセージは、グラフィックメモリ130等のメモリの一部に関連するデータを含み得る。一実施形態によると、コマンドメッセージは、ピクセル操作、幾何学的計算および画像をディスプレイにレンダリングすることに関連する、APDによって処理される命令を含む。一般に、一連のコマンドメッセージがコントローラによって受信され得る。コントローラは、例えば、限定されないが、APD104のCP124であり得る。当業者であれば、CP124以外の専用コントローラが、コマンドメッセージを受信するように構成されてもよいことを理解するであろう。
操作206において、コマンドメッセージは、例えば、コマンドプロセッサ124によって解釈される。上述のように、コマンドメッセージは、APDによって行われる一連の操作または計算に関連するデータを含み得る。コマンドメッセージは、命令のリストを含み、その各命令は、APD104による命令の処理中にアクセスされることになるメモリの一部に関連するデータを含む。例えば、コマンドメッセージは、グラフィックメモリ130の一部に対する参照ポインタを含んでもよく、これは、画像をディスプレイにレンダリングするための処理中に使用され得るピクセルデータまたは定数を含み得る。
一実施形態によると、コマンドメッセージの解釈は、どのメモリの部分をキャッシュにプレローディングするかを判定することを含む。一実施形態において、プレローディングされるメモリの部分は、参照情報のローカリティ(locality)に基づいて判定される。このローカリティは、APDが、等しい確率で、そのデータの全てに一度にアクセスしないという原理に基づく。参照情報のローカリティは、メモリの一部の時間的(temporal)ローカリティに基づき得る。
例えば、コマンドメッセージが、特定のメモリの一部を参照する命令を含む場合には、同じメモリの部分が、近い将来再び参照される確率が高い。参照情報のローカリティは、例えば、空間的ローカリティに基づくものであってもよい。例えば、コマンドメッセージが、特定のメモリの一部を参照する命令を含む場合には、メモリの当該部分の付近に存在するデータも近い将来参照される確率が高い。
操作208において、プレローディングが必要であるかどうかを判定する。図2の実施例において、プレローディングの判定は、CP124によって行われる。一実施形態によると、コントローラ(例えば、CP124)は、キャッシュのアクセス履歴を追跡するように構成され得る。コマンドメッセージの処理中に、命令は、メモリ130内の位置等のメモリ位置にアクセスし得る。命令がメモリ位置にアクセスする際、APDは、まず、メモリ位置がキャッシュ内に複製されているかどうかを調べる。具体的には、メモリアクセスに関連するアドレスを、キャッシュ内の全てのタグと比較する。所望のメモリ位置がキャッシュ内で検出された場合には、キャッシュヒットが発生する。APD104は、直ちに、識別されたキャッシュライン内のデータまたは命令等の情報を読み取り、または、書き込む。所望のメモリ位置がキャッシュ内で検出されない場合には、キャッシュミスとみなされ、結果として、グラフィックメモリ130等の別のソースからのデータ取り出しをもたらす。
一実施形態によると、コマンドメッセージが受信され解釈された際に、CP124は、キャッシュアクセス履歴に基づいて、プレローディングが必要であるかどうかを判定するように構成されている。キャッシュヒットまたはキャッシュミスをもたらしたデータは、再びアクセスされる確率の高いデータとみなされる。このデータ、および、グラフィックメモリ130の一部内の当該データの位置に関連する情報は、CP124によってログをとり、データベースに記憶される。コマンドメッセージが受信された際、CP124は、コマンドメッセージの命令を、データベースに記憶されたキャッシュアクセス履歴と比較するように構成されている。メモリ位置に関連するコマンドメッセージデータが、キャッシュアクセス履歴データベース内のいずれかのデータに類似する場合には、プレローディングが必要である。方法200は、プレローディングが必要であると判定すると、操作210へと進行し得る。プレローディングが必要ない場合には、方法200は、操作214で終了する。
操作210において、プレローディングされるメモリの部分が決定される。例えば、プレローディングされるメモリの部分は、CP124によって決定される。一実施形態によると、プレローディングされるメモリの部分は、参照情報のローカリティに基づく。上述したように、プレローディングされるメモリの部分は、メモリの部分の時間的または空間的ローカリティに基づき得る。CP124が、コマンドメッセージ命令において参照されるメモリの部分を識別すると、その同じメモリの部分は、隣接または付近のメモリブロックに存在するメモリとともに、プレローディングされるメモリの部分として識別され得る。
別の実施形態によると、プレローディングされるメモリの部分は、キャッシュのポリシー情報に基づく。キャッシュのポリシー情報は、いつキャッシュブロックが書き込まれるかを決定することができる。例えば、キャッシュブロックに関連するポリシー情報が「読み取り専用に割り付け」である場合には、キャッシュブロックは、書き込み操作の際に修正されることはない。キャッシュブロックに関連するポリシー情報が「読み取りおよび書き込みに割り付け」である場合、このキャッシュブロックは、書き込みおよび読み取りの両方の操作の際に更新され得る。さらに、システムが複数のキャッシュを含む場合には、ポリシー情報により、どのキャッシュを使用して、特定の情報を記憶するかを決定することができる。キャッシュのポリシー情報は、プレローディングされると識別されたメモリの部分が、どのようにキャッシュ内に記憶されるかを決定する。
操作212では、フェッチメッセージが出力される。例えば、フェッチメッセージは、CP124によって、RW L2キャッシュ174等の指定キャッシュに出力される。プレローディングされるメモリの部分が識別されると、フェッチメッセージが、ポリシー情報と関連するデータを含むCP124によって生成される。一実施形態によると、フェッチメッセージは、キャッシュに、ポリシー情報に基づいてメモリの部分からデータをロードさせる。方法200は、次いで、操作214で終了する。
図3は、本発明の実施形態による例示的な方法300を示すフローチャートである。方法300は、図3の記載を通じて参照される、図1Aおよび1Bのシステム100上で動作し得る。一実施例において、方法300は、APD104のRW L2キャッシュ174等のAPDのキャッシュをプレローディングするために使用され得る。方法300は、図示される順序で発生してもよいし、図示される順序で発生しなくてもよいし、全ての操作を必要としなくてもよい。
方法300は、操作302で開始して、操作304に続く。操作304では、コマンドメッセージがコントローラによって受信される。一実施形態によると、ホストプロセッサは、プリフェッチ命令を含むコマンドメッセージを出力するように構成されている。ホストプロセッサは、例えば、CPU102であり得る。一実施形態によると、コマンドメッセージは、キャッシュにプレローディングされるメモリの部分を明示的に特定するプレローディング命令を含む。例えば、プレローディング命令は、APD104のRW L2キャッシュ174にプレローディングされるメモリの部分の物理アドレスを含み得る。あるいは、プレローディング命令は、RW L2キャッシュ174にプレローディングされるメモリの部分の仮想アドレスを含み得る。仮想アドレスは、仮想メモリ内のメモリの部分の位置である。仮想アドレスは、多数の異なる物理アドレスにマッピングされ得る。この実施形態では、CP124は、メモリの部分の仮想アドレスを物理アドレスに変換するために、例えばIOMMU116などのメモリ管理ユニット(MMU)にコールを行うように構成されている。
操作306において、プレローディングされるメモリの部分は、例えば、CP124によって決定される。一実施形態によると、プレローディングされるメモリの部分は、コマンドメッセージに含まれる物理アドレスに基づく。物理アドレスは、キャッシュにプレローディングされるメモリの部分の位置を明示的に特定する。プレローディングされるメモリの部分は、コマンドメッセージに含まれる仮想アドレスに基づく。コマンドメッセージに含まれる仮想アドレスを物理アドレスに変換した後、プレローディングされるメモリの部分の正確な位置が特定される。
一実施形態において、プレローディングされるメモリの部分は、メモリの部分の時間的または空間的ローカリティに基づき得る。CP124が、物理アドレスまたは仮想アドレスによって特定されるメモリの部分の位置を判定すると、同じメモリの部分は、隣接または付近のメモリブロックに存在するメモリとともに、プレローディングされるメモリの部分として特定され得る。一実施形態において、キャッシュに関するポリシー情報を使用して、いつおよびどの程度の特定されたメモリの部分をキャッシュにプレローディングするかを決定することができる。
操作308では、フェッチメッセージが、例えば、CP124によって、RW L2キャッシュ174のキャッシュコントローラに出力される。プレローディングされるメモリの部分が特定されると、フェッチメッセージが、この情報と関連するデータを含むCP124によって生成される。一実施形態によると、フェッチメッセージは、キャッシュに、メモリの部分からデータをロードさせる。方法300は、次いで、操作310で終了する。
本発明は、ハードウェア、ソフトウェア、ファームウェアまたはこれらの任意の組み合わせで具現化され得る。本発明の実施形態またはこの部分は、ハードウェア記述言語(HDL)、アセンブリ言語、C言語およびネットリスト等の多数のプログラミング言語でコード化され得る。例えば、Verilog等のHDLを使用して、本発明の1つ以上の実施形態の態様を実現するデバイス(例えば、プロセッサ、特定用途向け集積回路(ASIC)および/または他のハードウェア要素)を、合成、シミュレーションおよび製造することができる。Verilogコードは、コンテンツ認識シームカービングを用いてフレームを拡大縮小することができるプロセッサをモデル化、設計、検証および/または実装するために使用され得る。
例えば、Verilogを使用して、論理のレジスタ転送レベル(RTL)記述を生成することができ、これを使用して、コンテンツ認識シームカービングを用いてフレームを拡大縮小することができるように、命令を実行することができる。次いで、論理のRTL記述を使用して、所望される論理またはデバイスを製造するために使用されるデータ(例えば、グラフィック設計システム(GDS)またはGDS IIのデータ)を生成することができる。Verilogのコード、RTL記述および/またはGDS IIのデータは、コンピュータ可読媒体に記憶され得る。本発明の態様を行うために論理によって実行される命令は、CおよびC++等の広範なプログラミング言語でコードされ、論理または他のデバイスによって実行され得るオブジェクトコードにコンパイルされ得る。
本発明の態様は、全体的または部分的にコンピュータ可読媒体に記憶され得る。コンピュータ可読媒体に記憶された命令を、全体的もしくは部分的に本発明を行うようにプロセッサを適合させるか、または、部分的もしくは全体的に本発明を行うように特別に適合されるデバイス(例えば、プロセッサ、ASIC、他のハードウェア)を生成するように適合され得る。これらの命令は、最終的にマスクワーク/フォトワークの生成を通じた製造プロセスを構成して、本明細書に記載される本発明の態様を具現化するハードウェアデバイスを生成するために使用され得る。
発明の概要および要約の部分ではなく、発明を実施するための形態が、特許請求の範囲を解釈するために使用されることを意図していることを理解されたい。発明の概要および要約の部分は、本発明者によって企図される本発明の1つ以上ではあるが全てではない例示的な実施形態を示してもよく、したがって、本発明および添付の特許請求の範囲を如何様にも限定することを意図するものではない。
本発明は、特定の機能の実現およびそれらの関係を示す機能的な構成要素を用いて上述されている。これらの機能の構成要素の境界線は、説明の便宜のために本明細書に恣意的に定義されている。特定の機能の実現およびそれらの関係が適切に行われる限り、代替的な境界線が定義されてもよい。
特定の実施形態について上述した説明は、当業者の知識の範囲内で適用されることにより、他者が、様々な応用のために、このような特定の実施形態を、過度な実験をすることなく、本発明の概括的な概念から逸脱することなく、容易に変更および/または改造し得る、本発明の概括的な特徴を十分に公表しているであろう。したがって、そのような改造および変更は、本明細書に提示される教示および指導に基づいて、開示される実施形態の均等物の意味および範囲内に含まれることが意図される。本明細書の語法または用語法は、教示および指導に鑑み、当業者により理解されるべきものであるように、本明細書における語法または用語法は、説明目的であって、制限する目的ではないことを理解されたい。
本発明の広がりや範囲は、上記の例示的な実施形態のいずれによっても限定されるべきではなく、以下の特許請求の範囲およびそれらの均等物によってのみ定義されるべきである。

Claims (17)

  1. キャッシュに電気的に接続されたアクセラレイテッド処理デバイスを含むシステムであって、
    コントローラを備え、
    前記コントローラは、
    コマンドメッセージを受信することであって、前記コマンドメッセージは、前記アクセラレイテッド処理デバイスによる処理の間にアクセスされる命令を含み、前記命令は、メモリの複数の部分のうち一部に関連するデータを含む、ことと、
    前記コマンドメッセージが、前記メモリのうちアクセスされる前記一部を前記キャッシュにプレローディングするためのプレローディング命令を含むか否かを判別することによって前記コマンドメッセージを解釈することであって前記コマンドメッセージが前記プレローディング命令を含むと判別された場合に、少なくとも前記メモリの前記一部を前記キャッシュにプレローディングし、前記コマンドメッセージが前記プレローディング命令を含んでいないと判別された場合に、前記コマンドメッセージの命令をキャッシュアクセス履歴と比較し、前記コマンドメッセージと前記キャッシュアクセス履歴との比較に基づいて、少なくとも前記メモリの前記一部を前記キャッシュにプレローディングすると判別する、ことと、
    (i)ローカリティ参照情報および(ii)前記キャッシュポリシー情報の少なくとも一方に基づいて、前記メモリのうちどの前記複数の部分を前記キャッシュにプレローディングするのか判別することと、
    記一部の内容に関連するデータを含むフェッチメッセージを作成することと、
    記フェッチメッセージを前記キャッシュに出力することと、
    を行うように構成されている、システム。
  2. 前記メモリの前記一部に関連するデータを含む前記コマンドメッセージを出力するように構成されたホストプロセッサをさらに備える、請求項1に記載のシステム。
  3. 前記ポリシー情報は、
    前記メモリのうちプレローディングされる前記一部がどのように前記キャッシュに記憶されるのか、及び、前記キャッシュのブロックが、(1)読み取りのみ、又は、(2)読み取りと書き込みの両方、の何れのときに書き込まれるのか、を決定し、
    前記フェッチメッセージは、前記キャッシュに、前記ポリシー情報に基づいて前記データを前記メモリの一部からロードさせる、請求項1に記載のシステム。
  4. 前記コマンドメッセージは、参照情報のローカリティを含む、請求項に記載のシステム。
  5. 前記ローカリティ参照情報は、前記メモリの一部の時間的ローカリティに基づいている、請求項に記載のシステム。
  6. 前記ローカリティ参照情報は、前記メモリの一部の空間的ローカリティに基づいている、請求項に記載のシステム。
  7. キャッシュをプレローディングするための、コンピュータで実施される方法であって、
    マンドメッセージを受信することであって、前記コマンドメッセージは、前記アクセラレイテッド処理デバイスによる処理の間にアクセスされる命令を含み、前記命令は、メモリの複数の部分のうち一部に関連するデータを含む、ことと、
    前記コマンドメッセージが、前記メモリのうちアクセスされる前記一部を前記キャッシュにプレローディングするためのプレローディング命令を含むか否かを判別することによって前記コマンドメッセージを解釈することであって前記コマンドメッセージが前記プレローディング命令を含むと判別された場合に、少なくとも前記メモリの前記一部を前記キャッシュにプレローディングし、前記コマンドメッセージが前記プレローディング命令を含んでいないと判別された場合に、前記コマンドメッセージの命令をキャッシュアクセス履歴と比較し、前記コマンドメッセージと前記キャッシュアクセス履歴との比較に基づいて、少なくとも前記メモリの前記一部を前記キャッシュにプレローディングすると判別する、ことと、
    (i)特定されたローカリティ参照情報および(ii)特定された前記キャッシュのポリシー情報の少なくとも一方に基づいて、前記メモリのうちどの前記複数の部分を前記キャッシュにプレローディングするのか判別することと、
    前記一部の内容に関連するデータを含むフェッチメッセージを作成することと、
    前記フェッチメッセージを前記キャッシュに送信することと、
    を含む、方法。
  8. 前記ポリシー情報は、
    前記メモリのうちプレローディングされる前記一部がどのように前記キャッシュに記憶されるのか、及び、前記キャッシュのブロックが、(1)読み取りのみ、又は、(2)読み取りと書き込みの両方、の何れのときに書き込まれるのか、を決定し、
    前記フェッチメッセージは、前記キャッシュに前記メモリの一部からデータをロードさせる、請求項に記載の方法。
  9. 前記コマンドメッセージは、前記ローカリティ参照情報を含む、請求項に記載の方法。
  10. 前記参照情報のローカリティは、前記メモリの一部の時間的ローカリティに基づいている、請求項に記載の方法。
  11. 前記参照情報のローカリティは、前記メモリの一部の空間的ローカリティに基づいている、請求項に記載の方法。
  12. 前記コントローラは、前記コマンドメッセージが、メモリの各部分に対する物理アドレスを有するプレローディング命令を含むか否かを判別することによって、前記コマンドメッセージを解釈するように構成されている、請求項に記載のシステム。
  13. 前記コントローラは、前記コマンドメッセージが、前記メモリの一部に対する仮想アドレスを有するプレローディング命令を含むか否かを判別することによって、コマンドメッセージを解釈するように構成されている、請求項に記載のシステム。
  14. 前記コントローラは、前記メモリの一部に対する仮想アドレスを物理アドレスに変換するように構成されている、請求項13に記載のシステム。
  15. 前記コマンドメッセージを解釈することは、前記メモリの一部に対する仮想アドレスを有するプレローディング命令を含むか否かを判別することをさらに含む、請求項に記載の方法。
  16. 前記メモリの一部に対する仮想アドレスを物理アドレスに変換することをさらに含む、請求項15に記載の方法。
  17. 前記コマンドメッセージを解釈することは、前記メモリの一部に対する物理アドレスを有するプレローディング命令を含むか否かを判別することをさらに含む、請求項に記載の方法。
JP2014546668A 2011-12-13 2012-12-12 キャッシュのプレローディングにgpuコントローラを使用するための機構 Active JP5973590B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/324,432 US9239793B2 (en) 2011-12-13 2011-12-13 Mechanism for using a GPU controller for preloading caches
US13/324,432 2011-12-13
PCT/IB2012/002938 WO2013108070A1 (en) 2011-12-13 2012-12-12 Mechanism for using a gpu controller for preloading caches

Publications (3)

Publication Number Publication Date
JP2015505091A JP2015505091A (ja) 2015-02-16
JP2015505091A5 JP2015505091A5 (ja) 2016-02-12
JP5973590B2 true JP5973590B2 (ja) 2016-08-23

Family

ID=48573113

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014546668A Active JP5973590B2 (ja) 2011-12-13 2012-12-12 キャッシュのプレローディングにgpuコントローラを使用するための機構

Country Status (6)

Country Link
US (1) US9239793B2 (ja)
EP (1) EP2791933B1 (ja)
JP (1) JP5973590B2 (ja)
KR (1) KR101868997B1 (ja)
CN (1) CN104025185B (ja)
WO (1) WO2013108070A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8842122B2 (en) * 2011-12-15 2014-09-23 Qualcomm Incorporated Graphics processing unit with command processor
US9342712B2 (en) * 2012-06-08 2016-05-17 Advanced Micro Devices, Inc. Method and system for accelerating cryptographic processing
US9092341B2 (en) 2012-07-10 2015-07-28 International Business Machines Corporation Methods of cache preloading on a partition or a context switch
US10922851B2 (en) * 2014-09-25 2021-02-16 The Boeing Company Virtual reality environment color and contour processing system
CN107423232B (zh) * 2016-05-24 2020-10-16 北京忆芯科技有限公司 Ftl快速访问方法与装置
CN106127673B (zh) * 2016-07-19 2019-02-12 腾讯科技(深圳)有限公司 一种视频处理方法、装置及计算机设备
US20180336034A1 (en) * 2017-05-17 2018-11-22 Hewlett Packard Enterprise Development Lp Near memory computing architecture
GB2567466B (en) 2017-10-12 2020-01-22 Advanced Risc Mach Ltd Cache stashing in a data processing system
CN109634491A (zh) * 2018-12-14 2019-04-16 珠海市小源科技有限公司 一种双向分段加载数据并显示的方法、计算机装置及计算机可读存储介质
US10877896B2 (en) 2019-03-07 2020-12-29 Micron Technology, Inc. Adaptive readahead cache manager based on detected active streams of read commands
US11232533B2 (en) * 2019-03-15 2022-01-25 Intel Corporation Memory prefetching in multiple GPU environment
CN110187835B (zh) * 2019-05-24 2023-02-03 北京百度网讯科技有限公司 用于管理访问请求的方法、装置、设备和存储介质
US12028206B2 (en) 2019-07-19 2024-07-02 Nokia Solutions And Networks Oy Mechanism for reducing logging entries based on content
CN111522771B (zh) * 2020-04-20 2023-08-15 北京百度网讯科技有限公司 眼底图像处理方法、终端设备及存储介质
US20230069890A1 (en) * 2021-09-03 2023-03-09 Advanced Micro Devices, Inc. Processing device and method of sharing storage between cache memory, local data storage and register files

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761720A (en) 1996-03-15 1998-06-02 Rendition, Inc. Pixel engine pipeline processor data caching mechanism
US6347369B1 (en) 1997-11-17 2002-02-12 Advanced Micro Devices, Inc. Method and circuit for single cycle multiple branch history table access
KR100291628B1 (ko) 1999-06-19 2001-05-15 윤덕용 3차원 그래픽 텍스쳐 맵핑용 캐쉬 메모리 및 그의 캐쉬 미스페널티 저감방법
US20050010726A1 (en) 2003-07-10 2005-01-13 Rai Barinder Singh Low overhead read buffer
US20050195200A1 (en) 2004-03-03 2005-09-08 Chuang Dan M. Embedded system with 3D graphics core and local pixel buffer
US7360027B2 (en) 2004-10-15 2008-04-15 Intel Corporation Method and apparatus for initiating CPU data prefetches by an external agent
US7502913B2 (en) 2006-06-16 2009-03-10 Microsoft Corporation Switch prefetch in a multicore computer chip
US8325184B2 (en) * 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
JP2009230374A (ja) * 2008-03-21 2009-10-08 Fujitsu Ltd 情報処理装置,プログラム,及び命令列生成方法
US20100123717A1 (en) 2008-11-20 2010-05-20 Via Technologies, Inc. Dynamic Scheduling in a Graphics Processor
US8489851B2 (en) 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
US20100153934A1 (en) 2008-12-12 2010-06-17 Peter Lachner Prefetch for systems with heterogeneous architectures
US8171219B2 (en) * 2009-03-31 2012-05-01 Intel Corporation Method and system to perform caching based on file-level heuristics
US8140769B2 (en) * 2009-04-20 2012-03-20 Oracle America, Inc. Data prefetcher
US9582222B2 (en) 2009-04-30 2017-02-28 Western Digital Technologies, Inc. Pre-cache similarity-based delta compression for use in a data storage system
US8219758B2 (en) * 2009-07-10 2012-07-10 Apple Inc. Block-based non-transparent cache
US9354944B2 (en) 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
US8803897B2 (en) 2009-09-03 2014-08-12 Advanced Micro Devices, Inc. Internal, processing-unit memory for general-purpose use
US20110072218A1 (en) * 2009-09-24 2011-03-24 Srilatha Manne Prefetch promotion mechanism to reduce cache pollution
CN101866318B (zh) * 2010-06-13 2012-02-22 北京北大众志微系统科技有限责任公司 一种高速缓存替换策略的管理系统及方法
US8937622B2 (en) 2010-09-20 2015-01-20 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform

Also Published As

Publication number Publication date
US20130151787A1 (en) 2013-06-13
CN104025185B (zh) 2017-08-01
EP2791933A4 (en) 2015-08-05
EP2791933B1 (en) 2018-09-05
KR101868997B1 (ko) 2018-06-20
KR20140102709A (ko) 2014-08-22
EP2791933A1 (en) 2014-10-22
CN104025185A (zh) 2014-09-03
JP2015505091A (ja) 2015-02-16
WO2013108070A1 (en) 2013-07-25
US9239793B2 (en) 2016-01-19

Similar Documents

Publication Publication Date Title
JP5973590B2 (ja) キャッシュのプレローディングにgpuコントローラを使用するための機構
US9606936B2 (en) Generalized control registers
JP6373586B2 (ja) 異種処理デバイスの動的ワークパーティション
US11741019B2 (en) Memory pools in a memory model for a unified computing system
JP6228459B2 (ja) システムコール要求の通信の最適化
US9606808B2 (en) Method and system for resolving thread divergences
US9009419B2 (en) Shared memory space in a unified memory model
US20120198458A1 (en) Methods and Systems for Synchronous Operation of a Processing Device
US20120188259A1 (en) Mechanisms for Enabling Task Scheduling
WO2012082777A1 (en) Managed task scheduling on an accelerated processing device (apd)
US20130155074A1 (en) Syscall mechanism for processor to processor calls
US9329893B2 (en) Method for resuming an APD wavefront in which a subset of elements have faulted
US20130141446A1 (en) Method and Apparatus for Servicing Page Fault Exceptions
US20130262814A1 (en) Mapping Memory Instructions into a Shared Memory Address Place
WO2013085794A1 (en) Method and apparatus for servicing page fault exceptions
WO2013090605A2 (en) Saving and restoring shader context state and resuming a faulted apd wavefront

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151214

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151214

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20151214

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160119

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160419

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160614

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160714

R150 Certificate of patent or registration of utility model

Ref document number: 5973590

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250