JP6419856B2 - 非特権アプリケーションによるグラフィクスワークロード・サブミッション - Google Patents

非特権アプリケーションによるグラフィクスワークロード・サブミッション Download PDF

Info

Publication number
JP6419856B2
JP6419856B2 JP2016572728A JP2016572728A JP6419856B2 JP 6419856 B2 JP6419856 B2 JP 6419856B2 JP 2016572728 A JP2016572728 A JP 2016572728A JP 2016572728 A JP2016572728 A JP 2016572728A JP 6419856 B2 JP6419856 B2 JP 6419856B2
Authority
JP
Japan
Prior art keywords
submission
commands
controller
workload
graphics
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
JP2016572728A
Other languages
English (en)
Other versions
JP2017526998A (ja
Inventor
ラマドス,ムラーリ
アール. ペンドルル,ニシャンス
アール. ペンドルル,ニシャンス
エス. フリッツェル,ジェフリー
エス. フリッツェル,ジェフリー
エヌ. シャー,アンカー
エヌ. シャー,アンカー
Original Assignee
インテル コーポレイション
インテル コーポレイション
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 インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2017526998A publication Critical patent/JP2017526998A/ja
Application granted granted Critical
Publication of JP6419856B2 publication Critical patent/JP6419856B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)
  • User Interface Of Digital Computer (AREA)
  • Power Sources (AREA)
  • Advance Control (AREA)

Description

(関連出願の相互参照)
本出願は、2014年6月26日に出願された米国特許出願第14/315,626号の優先権を主張する。
(背景技術)
例えば3次元(3D)レンダリング及びメディアプレーヤアプリケーションのようなグラフィクス関連アプリケーションは、グラフィック処理ユニット(GPU)リソースへの直接アクセスを提供する特権(privilege)を有していないことがある。したがって、相対的に非特権の(例えばシステムレベル特権を持っていない)「リング3」保護レベルに存在する所与のグラフィクスアプリケーションは、グラフィクスユーザモード・ドライバ(UMD)をロードする可能性があり、このグラフィクスユーザモード・ドライバ(UMD)は、(例えばシステムレベル特権を有する)「リング0」保護レベルに存在するオペレーティングシステム(OS)及び/又はカーネルモード・ドライバ(KMD)へワークロードをサブミット(提示)(submit)する。OSは、例えばページングのようなメモリ操作を管理し、KMDは、例えばGPUコマンドバッファ及びハードウェアレジスタに、サブミットされたワークロードに対応するコマンドを追加(populate)することがあり、GPUは、これらのコマンドを使用してワークロードを実行し得る。OS及びKMDによるワークロードの中間処理は、中央処理ユニット(CPU)にオーバヘッドを与え、処理遅延を増大させる可能性がある。そのような処理遅延は、性能、消費電力及び/又はバッテリ寿命に悪影響を及ぼす可能性がある。
実施形態の様々な利点は、下記の明細書及び添付の特許請求の範囲を読み、下記の図面を参照することにより当業者に明らかになるであろう。
一実施形態に係るグラフィクスワークロード・サブミッション環境の例を示すブロック図である。 一実施形態に係るキューベースのグラフィクスワークロード・サブミッションアーキテクチャの例を示すブロック図である。 一実施形態に係るアプリケーションの動作方法の例を示すフローチャートである。 一実施形態に係るメモリデバイスの動作方法の例を示すフローチャートである。 一実施形態に係るコントローラの動作方法の例を示すフローチャートである。 一実施形態に係るコントローラの例を示すブロック図である。 一実施形態に係るシステムの例を示すブロック図である。 一実施形態に係るナビゲーションコントローラを有するシステムの例を示すブロック図である。 一実施形態に係る小さなフォームファクタを有するシステムの例を示すブロック図である。
図1は、非特権保護レベル(例えばリング3保護レベル)で動作する様々なアプリケーション10(10a〜10d)が、ディスプレイ又は他の適切なデバイス(図示せず)による画像、ビデオ、グラフィクス、データ及び/又は他の情報の視覚的出力に関連付けられる、ワークロードを生成する環境を図示している。例えば第1のアプリケーション10a(「アプリケーション#1」)は、3次元(3D)シーンを表示するビデオゲームを含む可能性があり、第2のアプリケーション10b(「アプリケーション#2」)は、ムービー(映画)及び/又はビデオクリップの再生を提供するメディアプレーヤを含んでよく、第3のアプリケーション10c(「アプリケーション#3」)は、オンラインコンテンツをストリーミングするウェブブラウザを含む可能性があり、第4のアプリケーション10d(「アプリケーション#4」)は、メッセージングコンテンツを表示する電子メールプログラムを含んでよい。
図示される例において、アプリケーション10は、様々なタイプのグラフィクスユーザモード・ドライバ(UMD)14(14a〜14d)及び/又は他のミドルウェアをロードして、ワークロード・サブミッション(workload submission)を容易にする。例えば第1及び第2のUMD14a、14bは、特定のタイプ(「タイプA」、例えばマイクロソフト社の登録商標であるDIRECTX)である可能性があり、第3のUMD14cは別のタイプ(「タイプB」、例えばSilicon Graphics社の登録商標であるOPENGL)であってよく、第4のUMD14dは更に別のタイプ(「タイプC」、例えばKhronos Groupのマークであるオープンコンピューティング言語/OPENCL)等であってよい。図示されるUMD14は、これらのそれぞれのコンテンツのレンダリングに関連付けられるグラフィクスワークロードを、コントローラ12(例えばマイクロコントローラ、埋込みコントローラ)にサブミットする。コントローラ12は、特権保護レベルに存在してよく(例えばコントローラは、GPU内のレジスタのようなハードウェアリソースへのアクセスを有することができる)、例えばグラフィクスプロセッサ、パイプライン、レジスタ、コマンドバッファ、キュー、ディスプレイ等のようなグラフィクスハードウェア(HW)16へワークロードを直接サブミットする権限を有する。
特に注目すべきことは、図示されるワークロード・サブミッションの転送(transfer)が、(例えば図示されていないホストプロセッサに関連付けられるか、かつ/又はホストプロセッサ上で動作する)オペレーティングシステム(OS)モジュールと、グラフィクスハードウェア16に関連付けられるか、かつ/又はグラフィクスハードウェア上で動作するグラフィクスカーネルモード・ドライバ(KMD)20をバイパスすることである。図示されるものは、グラフィクス・スケジューリングをOSモジュール18及びKMD20からコントローラ12へオフロードすることによって、レイテンシを低減し、ホストプロセッサのオーバヘッドを低減し、性能を改善し、消費電力を減少させ、バッテリ寿命を延ばすこと等ができる。
次に図2に移ると、キューべースのグラフィクスワークロード・サブミッションアーキテクチャが図示されている。図示される例では、システムレベル特権を持っていない第1のアプリケーション22(「アプリケーションA」)が、例えば赤(R)プリミティブのような3Dレンダリングを伴う、第1のワークロード24(「グラフィクスワーク#A1」)を生成し、(例えば図示されていないUMDを介して)第1のワークロード24を、第1のアプリケーション22に関連付けられるワークキュー28(例えば循環バッファ)へサブミットする。ワークキュー28内への第1のワークロード24のサブミッション(「サブミッション#A1」)の配置の後、第1のアプリケーション22は、例えば第1のアプリケーション22に関連付けられるキャッシュライン又は他のアドレス/メモリ位置への書込みにより、ドアベル(doorbell)30をトリガすることができる。モニタ32(例えばメモリデバイス内で動作する割込みハンドラ又はスヌープモジュール(図示せず))は、ドアベル30のトリガを検出し、ドアベルアドレスに基づいて第1のアプリケーション22を特定し、第1のアプリケーション22によるワークロード・サブミッションの通知を、システムレベル特権を有するコントローラ34へ直接発行することができる。一例において、通知は割込み(interrupt)である。
コントローラ34は、既に述べたコントローラ12(図1)と同様であってよいが、(例えばホストプロセッサ上で動作するドライバによってロードされるか、内部不揮発性メモリ/NMVからロードされるような)ファームウェア命令を実行して、モニタ32からワークロード・サブミッションの通知を受け取り、ワークキュー28からワークロード・サブミッションを取り出し、実行のためにグラフィクスハードウェアのコンポーネントへのワークロード・サブミッションの転送をスケジュールすることができる。既に示したように、ワークロード・サブミッションの転送は、ホストプロセッサのオーバヘッド及びグラフィクスサブミッション時間を減らすために、OS及び/又はKMD(図示せず)をバイパスすることができる。より具体的には、コントローラ34は、ワークロード・サブミッションを解析して、1つ以上のコマンドを取得し、該1つ以上のコマンドをグラフィクスハードウェア36内のサブミッションキュー38に追加し、グラフィクスサブミッションポリシー(例えばタイマーの満了期間、ワーク完了イベント)に基づいて、その1つ以上のコマンドをサブミッションキュー38からグラフィクスハードウェア36の他のコンポーネントへ転送することができる。
したがって、コマンドは、サブミッションキュー38から、例えばグラフィクスパイプラインコンポーネント(例えばコマンドストリーマ、頂点処理、ラスタ化/Zバッファリング、メディアサンプラー、テクスチャサンプラー、メディアピクセル操作/Ops、ピクセル操作/Ops)、実行ユニットコンポーネント40、メディア処理コンポーネント42、マルチフォーマット・コーデック・コンポーネント44、ディスプレイコンポーネント46等のようなコンポーネントへ直接転送され得る。加えて、ワークロード・サブミッションを解析することは、例えばコマンドを修正、追加及び/又は優先順位を付けること、コマンドをチェックすること、並びに信頼できないユーザモードアプリケーションが、特権コマンドをハードウェアへサブミットする(例えば非合法コマンドをドロップする)ことができないことを保証することを含み得る。
同様に、システムレベル特権を持たない第2のアプリケーション48(「アプリケーションB」)は、例えばメディアコンテンツの再生を伴う、第2のワークロード50(「グラフィクスワーク#B1」)を生成し得る。図示される第2のアプリケーション48は、(例えば図示されないUMDを介して)第2のワークロード50を、第2のアプリケーション48に関連付けられるワークキュー52(例えば循環バッファ)にサブミットする。ワークキュー52内への第2のワークロード50のサブミッション(「サブミッション#B1」)の配置の後、第2のアプリケーション48は、例えば第2のアプリケーション48に関連付けられるキャッシュライン又は他のアドレス/メモリ位置への書込みにより、ドアベル54をトリガすることができる。モニタ32は、ドアベル54のトリガを検出し、ドアベルアドレスに基づいて第2のアプリケーション48を特定し、第2のアプリケーション48によるワークロード・サブミッションの通知(例えばDPC、割込み)を、システムレベル特権を有するコントローラ34へ直接発行することができる。コントローラ34は、OSモジュール又はKMDに関与することなく、グラフィクスハードウェア36の1つ以上のコンポーネントへのワークロード・サブミッションの転送をスケジュールすることができる。第1のアプリケーション22によって生成される第3のワークロード26は、同様に、OS及びKMDをバイパスするやり方で処理され得る。コントローラ34は、グラフィクスハードウェア36内に組み込まれてもよく、グラフィクスハードウェア36の外部に実装されてもよい。
図3A、図3B、図3Cはそれぞれ、アプリケーション、メモリデバイス及びコントローラを動作させる方法56、58及び60を図示している。方法56、58及び60は、マシン又はコンピュータ読取可能メモリ内に記憶される論理命令のセットとして実行可能ソフトウェアのモジュールとして実装されてよい。そのようなマシン又はコンピュータ読取可能メモリは、例えばプログラム可能論理アレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、結合プログラム可能論理回路(CPLD)のような構成可能ロジックで、例えば特定用途向け集積回路(ASIC)、相補型MOS(CMOS)又はトランジスタ−トランジスタ論理回路(TTL)技術のような回路技術を使用する固定機能の論理ハードウェア又はこれらの任意の組合せによる、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、プログラム可能ROM(PROM)、ファームウェア、フラッシュメモリ等である。
特に図3Aを参照すると、方法56は、例えばアプリケーション10(図1)、第1のアプリケーション22(図2)、第2のアプリケーション48(図2)等のうちの1つ以上のような、アプリケーションへ組み込まれ得る。図示される処理ブロック62は、グラフィクスワークロードを作成することを提供し、ブロック64において、グラフィクスワークロードは、ワークキューにサブミットされ得る。ブロック66は、そのアプリケーションに割り当てられるドアベルへ書込みを行うか、他の方法でそのドアベルをトリガし、システムにグラフィクスワークロードの可用性についてアラートを出すことができる。
特に図3Bを参照すると、方法58は、例えば既に述べたモニタ32(図2)のようなメモリデバイスモニタへ組み込まれ得る。図示される例では、ブロック68は、キャッシュライン書込みのようなドアベルのトリガを検出し、ブロック70において、そのドアベルに関連付けられるアプリケーションを特定する。アプリケーションはシステムレベル特権を持っていなくてよい。図示されるブロック72は、特定されたアプリケーションによるワークロード・サブミッションの通知を、システムレベル特権を有するコントローラへ直接発行する。
特に図3Cを参照すると、方法60は、例えばコントローラ12(図1)、コントローラ34(図2)等のようなコントローラへ組み込まれ得る。図示される処理ブロック74は、システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知(例えばDPC、割込み)を受け取ることを提供する。一般に、システムレベル特権を有するコントローラを使用して、ワークロード・サブミッションを、実行のためにグラフィクスハードウェアコンポーネントへ転送することができる。より具体的には、ブロック76において、アプリケーションに関連付けられるワークキューからワークロード・サブミッションを取り出すことができ、ブロック78において、ワークロード・サブミッションを解析して、1つ以上のコマンドを取得することができる。ブロック78は、例えば1つ以上のコマンドのうちの少なくとも1つを修正すること、上記1つ以上のコマンドに少なくとも1つのコマンドを追加すること、上記1つ以上のコマンドに優先順位を付けること等、あるいはその任意の組合せを含んでよい。加えて、ブロック80において、上記1つ以上のコマンドを、グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加することができる。上記1つ以上のコマンドは、ブロック82において、グラフィクスサブミッションポリシー(例えばタイマーの満了期間、ワーク完了イベント)に従って、サブミッションキューからグラフィクスハードウェアコンポーネントに転送され得る。
図4は、グラフィクスワークロードを管理するように構成され得るコントローラ84を図示している。コントローラ84は、コントローラ12(図1)及び/又はコントローラ34(図2)と容易に代替されてることがあり、方法60(図3C)の1つ以上の態様を実装し得る。図示される例では、通知モジュール86が、システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知(例えば割込み)を受け取り、スケジューラ88(88a〜88d)が、実行のために1つ以上のグラフィクスハードウェアコンポーネントへのワークロード・サブミッションの転送をスケジュールすることができる。スケジューラ88及び/又はコントローラ84は、システムレベル特権を有してよい。既に示したように、ワークロード・サブミッションの転送は、OS、並びにグラフィクスハードウェアコンポーネントに関連付けられるKMDをバイパスすることができる。
一例において、スケジューラ88は、アプリケーションに関連付けられるワークキューからワークロード・サブミッションを取り出す、取出しモジュール88aと、ワークロード・サブミッションを解析してコマンドを取得するパーサ88bを含む。パーサ88bは、例えばコマンドを修正し、コマンドを追加し、コマンドに優先順位を付けること等ができる。スケジューラ88は、1つ以上のグラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューにコマンドを追加するエンキューコンポーネント88cと、グラフィクスサブミッションポリシーに従って、コマンドをサブミッションキューから1つ以上のグラフィクスハードウェアコンポーネントに転送するデキューコンポーネント88dも含み得る。グラフィクスサブミッションポリシーは、例えばタイマーが有効期間を満了しているかどうかを判断すること、ワーク完了イベントが起きたかどうかを判断すること等を含み得る。加えて、システムメモリレイテンシに対する影響を軽減するよう、通知モジュール86及び/又はスケジューラ88を動作させるファームウェア/コード及び必要なデータ構造が、内部の静的ランダムアクセスメモリ(SRAM)90又は他の適切なメモリに記憶され得る。コントローラ84は、グラフィクスワークロードの管理操作を容易にするように、タイマー91、メモリマップ入出力(MMIO)93、ページテーブル95等も含み得る。
次に図5に移ると、コンピューティングシステム92が図示されている。システム92は、ラップトップ、モバイルインターネットデバイス(MID)、パーソナルデジタルアシスタント(PDA)、メディアプレーヤ、イメージングデバイス、ウェアラブルコンピュータ等のモバイルプラットフォームの一部、スマートフォンやスマートタブレット、スマートTV(テレビジョン)等のような任意のスマートデバイス、あるいはこれらの任意の組合せであってよい。また、システム92は、パーソナルコンピュータ(PC)、サーバ、ワークステーション等のような固定のプラットフォームの一部であってもよい。図示されるシステム92は、システムメモリ98へのアクセスを提供する統合メモリコントローラ(iMC:integrated memory controller)96を有する中央処理ユニット(CPU、例えばホストプロセッサ)94を含む。システムメモリ98は、例えばダブルデータレート(DDR)同期動的ランダムアクセスメモリ(SDRAM、例えばDDR3 SDRAM JEDEC規格JESD79−3C、2008年4月)モジュールを含み得る。システムメモリ98のモジュールは、例えばシングルインライン・メモリモジュール(SIMM)、デュアルインライン・メモリモジュール(DIMM)、スモールアウトラインDIMM(SODIMM)等に組み込まれ得る。
CPU94は、システムレベル特権を持たない1つ以上の実行アプリケーション102によってロードされる1つ以上のユーザモード・ドライバ(UMD)100、並びに1つ以上のプロセッサコア(図示せず)も有してよく、各コアは、命令フェッチユニット、命令デコーダ、レベル1(L1)キャッシュ、実行ユニット等とともに十分に機能的であり得る。一例では、アプリケーション102及び/又はUMD100は、グラフィクスワークロードを作成して、該グラフィクスワークロードをワークキューにサブミットし、関連付けられるドアベルへ書き込む/ドアベルをトリガするように構成される。あるいは、CPU94は、システム92内のコンポーネントの各々を相互接続するフロントサイドバス又はポイントツーポイントファブリックを介して、ノースブリッジとしても知られるiMC96のオフチップバリエーションと通信してもよい。一例において、iMC96は、例えばドアベルのトリガを検出し、ドアベルのトリガに関連付けられるアプリケーションを特定し、特定されたアプリケーションによるワークロード・サブミッションの通知を、システムレベル特権を有するコントローラ84に直接発行するように構成される、モニタ32(図2)のようなモニタを含む。また、CPU94はオペレーティングシステム(OS)104を実行してもよい。
図示されるCPU94は、バスを介して、サウスブリッジとしても知られる入出力(IO)モジュール106と通信する。iMC96/CPU94及びIOモジュールは、時々チップセットと呼ばれることがある。CPU94は、ネットワークポートを介して、IOモジュール106及び様々な他のコントローラ108を通して、ネットワーク(図示せず)に動作可能に接続されることもある。したがって、他のコントローラ108は、有線通信又は無線通信のような広範な目的のためにオフプラットフォームの通信機能を提供することができる。そのような通信は、これらに限られないが、携帯電話(例えば広帯域符号分割多重アクセス、W-CDMA(UMTS:Universal Mobile Telecommunications System)、CDMA2000(IS-856/IS-2000)等)、Wi-Fi(例えばIEEE802.11、2007版)、Bluetooth(登録商標)(例えばIEEE802.15.1-2005、無線パーソナルエリアネットワーク)、WiMax(例えばIEEE802.16-2004)、全地球測位システム(GPS)、スペクトル拡散(例えば900MHz)及び他の無線周波数(RF)電話技術目的を含む。また、IOモジュール106はディスプレイ110と通信して、ビデオ、画像及び他のコンテンツの視覚的出力/プレゼンテーションも提供し得る。また、他のコントローラ108はIOモジュール106と通信し、ユーザがシステム92とやり取りをし、システム92からの情報を認識することを可能にするために、キーパッド、マウス等のようなユーザインタフェースデバイス(図示せず)のためのサポートを提供することもできる。
IOモジュール106は、USB(ユニバーサルシリアルバス、例えばUSB仕様2.0、USB Implementer Forum)、シリアルATA(SATA、例えばSATA Rev.3.0仕様、2009年5月27日、SATA-IO(SATA International Organization))、ハイディフィニション・オーディオ及び他のコントローラといった、内部コントローラ(図示せず)も有することがある。図示されるIOモジュール106は、ハードドライブ112、読取専用メモリ(ROM)、光ディスク、フラッシュメモリ(図示せず)等を含み得るストレージにも結合される。
図示されるシステム92は、専用のグラフィクスメモリ116に結合される専用のグラフィック処理ユニット(GPU、グラフィクスプロセッサ)114も含む。専用のグラフィクスメモリ116は、例えばGDDR(グラフィクスDDR)又はDDR SDRAMモジュール、あるいはグラフィクスレンダリングをサポートするのに適した任意の他のメモリ技術を含み得る。GPU114及びグラフィクスメモリ116は、グラフィクス/ビデオカード上にインストールされてもよく、GPU114は、PCIエクスプレスグラフィクス(PEG、例えば周辺コンポーネント相互接続/PCI Express xl6 Graphics 150W-ATX仕様1.0、PCI Special Interest Group)バス又はアクセラレイテッド・グラフィクスポート(例えばAGP V3.0インタフェース仕様、2002年9月)バスといったグラフィクスバス118を介してCPU94と通信してもよい。グラフィクスカード及び/又はGPU114は、システムマザーボード上に統合されるか、(例えば統合GPU/iGPU構成で)メインCPU94ダイへ統合されてもよく、マザーボード上の別個のカード等として構成されてもよい。また、CPU94はカーネルモード・ドライバ(KMD)120を実行してもよく、GPU114は、グラフィクスパイプライン122及び内部キャッシュ124を含み、命令及び他のデータを記憶する。
あるいは、GPU114は、専用のグラフィクスメモリを持たず、代わりにCPU94とシステムメモリ98を共有してもよい。そのような構成は、GPU114及びCPU94が同じダイの一部である(かつ、例えば適切なインタフェースを通して接続される)統合グラフィクスアーキテクチャのために使用される可能性がある。
図示されるGPU114は、ワークロード・サブミッションの通知を受け取り、例えばグラフィクスパイプライン122のようなグラフィクスハードウェアコンポーネントへのワークロード・サブミッションの転送をスケジュールするように構成され得る、コントローラ84も含む。この転送は、OS104並びにKMD120をバイパスすることができる。加えて、コントローラ84はGPU114上に存在するものとして図示されているが、コントローラ84は、代わりに、例えばCPU94上又は別のチップ上のように、システム92内の他の場所に配置されてもよい。
図6は、システム700の実施形態を図示する。実施形態において、システム700はメディアシステムであってよいが、システム700はこのコンテキストには限定されない。例えばシステム700は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パルムトップコンピュータ、パーソナルデジタルアシスタント(PDA)、携帯電話、携帯電話/PDAの組合せ、テレビ、スマートデバイス(例えばスマートフォン、スマートタブレット又はスマートテレビ)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス等に組み込まれることがある。
実施形態において、システム700は、視覚コンテンツを提示するディスプレイ720に結合されるプラットフォーム702を備える。プラットフォーム702は、コンテンツサービスデバイス730又はコンテンツ配信デバイス740等のコンテンツデバイスから、あるいは他の同様のコンテンツソースからビデオビットストリームコンテンツを受け取ることができる。1つ以上のナビゲーション機能を備えるナビゲーションコントローラ750を使用して、例えばプラットフォーム702及び/又はディスプレイ720とやり取りをすることができる。これらのコンポーネントの各々は以下で更に詳細に説明される。
実施形態において、プラットフォーム702は、チップセット705、プロセッサ710、メモリ712、ストレージ714、グラフィクスサブシステム715、アプリケーション716及び/又は無線機718(例えばネットワークコントローラ)の任意の組合せを備え得る。チップセット705は、プロセッサ710、メモリ712、ストレージ714、グラフィクスサブシステム715、アプリケーション716及び/又は無線機718の中の相互通信を提供することができる。例えばチップセット705は、ストレージ714との相互通信を提供する能力を有するストレージアダプタ(図示せず)を含み得る。
プロセッサ710は、複合命令セットコンピュータ(CISC)又は縮小命令セットコンピュータ(RISC)プロセッサ、x86命令セット互換プロセッサ、マルチコア又は任意の他のマイクロプロセッサ又は中央処理ユニット(CPU)として実装され得る。実施形態において、プロセッサ710は、デュアルコアプロセッサ、デュアルコアモバイルプロセッサ等を備え得る。
メモリ712は、これらに限られないが、ランダムアクセスメモリ(RAM)、動的ランダムアクセスメモリ(DRAM)又は静的RAM(SRAM)のような揮発性メモリとして実装され得る。
ストレージ714は、これらに限られないが、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部ストレージデバイス、外付けストレージデバイス、フラッシュメモリ、バッテリバックアップSDRAM(同期DRAM)及び/又はネットワークアクセス可能ストレージデバイスのような不揮発性ストレージデバイスとして実装され得る。実施形態において、ストレージ714は、例えば複数のハードドライブが含まれるとき、価値あるデジタルメディアのためにストレージ性能の高度保護を向上させる技術を備え得る。
グラフィクスサブシステム715は、表示のために静止画又はビデオのような画像の処理を実行することができる。グラフィクスサブシステム715は、例えばグラフィック処理ユニット(GPU)又はビジュアル処理ユニット(VPU)であり得る。グラフィクスサブシステム715は、したがって、既に述べたGPU114(図5)を含み得る。加えて、プロセッサ710は、既に述べたCPU94(図5)を含むように構成され得る。アナログ又はデジタルインタフェースは、グラフィクスサブシステム715及びディスプレイ720に通信可能に結合するのに使用され得る。例えばインタフェースは、高精細度マルチメディアインタフェース(HDMI(登録商標))、MIPI(登録商標)(Mobile Industry Processor Interface)、WiGIG(登録商標)(Wireless Gigabit Alliance)、ディスプレイポート、無線HDMI(登録商標)及び/又は無線HD準拠技術のいずれかとすることができる。グラフィクスサブシステム715は、プロセッサ710又はチップセット705に統合されてもよい。グラフィクスサブシステム715は、チップセット705に通信可能に結合されるスタンドアロンカードであってもよい。
本明細書で説明されるグラフィクス及び/又はビデオ処理技術は、様々なハードウェアアーキテクチャで実装され得る。例えばグラフィクス及び/又はビデオ機能はチップセット内に統合されてもよい。あるいは、別個のグラフィクス及び/又はビデオプロセッサを使用してもよい。更に別の実施形態として、グラフィクス及び/又はビデオ機能は、マルチコアプロセッサを含め、汎用プロセッサによって実装されてもよい。更なる実施形態では、上記機能は家庭用電子デバイスで実装されてもよい。
無線機718は、様々な適切な信号通信技術を使用して信号を送受信することができる1つ以上の無線機を含む、ネットワークコントローラであり得る。そのような技術は、1つ以上の無線ネットワークにまたがる通信を伴うことがある。例示の無線ネットワークは、(これらに限定されないが)無線ローカルエリアネットワーク(WLAN)、無線パーソナルエリアネットワーク(WPAN)、無線メトロポリタンエリアネットワーク(WMAN)、セルラネットワーク及び衛星ネットワークを含む。そのようなネットワークにまたがって通信する際に、無線機718は、任意のバージョンの1つ以上の適用可能な規格に従って動作し得る。
実施形態において、ディスプレイ720は、任意のテレビ型のモニタ又はディスプレイを備え得る。ディスプレイ720は、例えばコンピュータディスプレイ画面、タッチスクリーンディスプレイ、ビデオモニタ、テレビのようなデバイス及び/テレビを備え得る。ディスプレイ720は、デジタル及び/又はアナログであり得る。実施形態において、ディスプレイ720は、ホログラフィクスディスプレイであってよい。また、ディスプレイ720は、視覚的投影(visual projection)を受け取る透明な面であってもよい。そのような投影は、様々な形の情報、画像及び/又は物体を伝達することができる。例えばそのような投影は、モバイル拡張現実(MAR)アプリケーションのための視覚的オーバーレイであってよい。1つ以上のソフトウェアアプリケーション716の制御下において、プラットフォーム702は、ディスプレイ720上にユーザインタフェース722を表示することができる。
実施形態において、コンテンツサービスデバイス730は、いずれかの国、国際的及び/又は独立のサービスによってホストされ、したがって、例えばインターネットを介してプラットフォーム702に対してアクセス可能であり得る。コンテンツサービスデバイス730は、プラットフォーム702及び/又はディスプレイ720に結合され得る。プラットフォーム702及び/又はコンテンツサービスデバイス730はネットワーク760に結合され、ネットワーク760との間でメディア情報を通信(例えば送信及び/又は受信)し得る。コンテンツ配信デバイス740は、プラットフォーム702及び/又はディスプレイ720にも結合され得る。
実施形態において、コンテンツサービスデバイス730は、デジタル情報及び/又はコンテンツを配信することができる、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、インターネット対応デバイス又は機器、並びにコンテンツプロバイダとプラットフォーム702及び/又はディスプレイ720との間で一方向又は双方向にネットワーク760を介して又は直接的にコンテンツを通信することができる任意の他の同様のデバイスを備え得る。コンテンツは、コンテンツプロバイダ及びシステム700内のコンポーネントのうちのいずれか1つへ及びそのいずれか1つから、ネットワーク760を介して一方向及び/又は双方向で通信され得ることが認識されよう。コンテンツの例は、例えばビデオ、音楽、医療及びゲーム情報等を含め、任意のメディア情報を含み得る。
コンテンツサービスデバイス730は、メディア情報、デジタル情報及び/又は他のコンテンツを含め、ケーブルテレビ番組のようなコンテンツを受け取る。コンテンツプロバイダの例は、任意のケーブル又は衛星テレビ又はラジオ又はインターネットコンテンツプロバイダを含み得る。提供される例は、実施形態を限定するように意図されていない。
実施形態において、プラットフォーム702は、1つ以上のナビゲーション機能を有するナビゲーションコントローラ750から制御信号を受け取ることができる。コントローラ750のナビゲーション機能は、例えばユーザインタフェース722とやり取りするのに使用され得る。実施形態において、ナビゲーションコントローラ750は、ポインティングデバイスであってよい。ポインティングデバイスは、ユーザが空間(例えば連続的で多次元の)データをコンピュータへ入力することを可能にする、(コンピュータハードウェアコンポーネント(特にヒューマンインタフェースデバイス)であり得る。グラフィカルユーザインタフェース(GUI)及びテレビとモニタのような多くのシステムは、ユーザが、身体的ジェスチャを使用してコンピュータ又はテレビへのデータを制御及び提供することを可能にする。
コントローラ750のナビゲーション機能の動きは、ディスプレイ(例えばディスプレイ720)上で、このディスプレイ上に表示されるポインタ、カーソル、フォーカスリング又は他の視覚的インジケータの動きによって反射(echo)され得る。例えばソフトウェアアプリケーション716の制御下において、ナビゲーションコントローラ750上に置かれるナビゲーション機能は、例えばユーザインタフェース722上に表示される仮想ナビゲーション機能にマップされ得る。実施形態において、コントローラ750は、別個のコンポーネントではなく、プラットフォーム702及び/又はディスプレイ720に統合されてもよい。しかしながら、実施形態は、本明細書で図示及び説明される要素又はコンテキストに限定されない。
実施形態において、ドライバ(図示せず)は、例えばイネーブルされると、初期ブートアップ後に、ボタンのタッチによりユーザが、プラットフォーム702のようなテレビをすぐにターンオン及びターンオフすることを可能にする技術を備え得る。プログラムロジックは、プラットフォーム702がターン「オフ」されるときに、該プラットフォーム702が、メディア・アダプタ又は他のコンテンツサービスデバイス730又はコンテンツ配信デバイス740にコンテンツをストリームすることを可能にする。加えて、チップセット705は、例えば5.1サラウンドサウンドオーディオ及び/又は高精細度の7.1サラウンドサウンドオーディオのためのハードウェア及び/又はソフトウェアサポートを備え得る。ドライバは、一体型グラフィクスプラットフォームのためのグラフィクスドライバを含み得る。実施形態において、グラフィクスドライバは、周辺コンポーネント相互接続(PCI)エクスプレスグラフィクスカードを備え得る。
様々な実施形態では、システム700内に示されるコンポーネントのいずれか1つ以上を統合してもよい。例えばプラットフォーム702とコンテンツサービスデバイス730を統合してもよく、プラットフォーム702とコンテンツ配信デバイス740を統合してもよく、あるいはプラットフォーム702と、コンテンツサービスデバイス730と、コンテンツ配信デバイス740を統合してもよい。様々な実施形態では、プラットフォーム702とディスプレイ720は一体型ユニットであってよい。例えばディスプレイ720とコンテンツサービスデバイス730を統合してもよく、ディスプレイ720とコンテンツ配信デバイス740を統合してもよい。これらの例は範囲を限定するように意図されていない。
様々な実施形態において、システム700は、無線システム、有線システム又はその双方の組合せとして実装され得る。無線システムとして実装されるとき、システム700は、1つ以上のアンテナ、トランスミッタ、レシーバ、トランシーバ、増幅器、フィルタ、制御ロジック等のように、無線共有媒体上での通信に適したコンポーネント及びインタフェースを含む。無線共有媒体の例には、RFスペクトル等のような無線スペクトルの部分が含まれ得る。有線システムとして実装されるとき、システム700は、入出力(I/O)アダプタ、対応する有線通信媒体を有するI/Oアダプタに接続する物理コネクタ、ネットワークインタフェースカード(NIC)、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ等のように、有線通信媒体上での通信に適したコンポーネント及びインタフェースを含み得る。有線通信媒体の例には、ワイヤ、ケーブル、金属リード、プリント基板(PCB)、バックプレーン、スイッチファブリック、半導体物質、ツイストペアワイヤ、同軸ケーブル、光ファイバ等が含まれ得る。
プラットフォーム702は、1つ以上の論理又は物理チャネルを確立して情報を通信してもよい。この情報には、メディア情報及び制御情報が含まれ得る。メディア情報は、ユーザ向けのコンテンツを表す任意のデータを指し得る。コンテンツの例は、音声会話からのデータ、ビデオ会議、ストリーミングビデオ、電子メール(「email」)メッセージ、ボイスメールメッセージ、英数字記号、グラフィック、画像、ビデオ、テキスト等を含み得る。音声会話からのデータは、例えばスピーチ情報、沈黙期間、背景雑音、快適雑音、トーン等を含み得る。制御情報は、自動システム向けのコマンド、命令又は制御ワードを表す任意のデータを指し得る。例えば制御情報は、システムを通してメディア情報をルーティングし、メディア情報を所定の方法で処理するようノードに命令するのに使用され得る。しかしながら、実施形態は、図6に図示又は説明される要素及びそのコンテキストに限定されない。
上述のように、システム700は、様々な物理的スタイル又はフォームファクタで具現化され得る。図7は、システム700が具現化され得る小さなフォームファクタデバイス800の実施形態を図示する。実施形態では、例えばデバイス800は、無線能力を有するモバイルコンピューティングデバイスとして実装され得る。モバイルコンピューティングデバイスは、処理システムと、例えば1つ以上のバッテリのようなモバイル電源又は電力供給とを有する任意のデバイスを指し得る。
上述のように、モバイルコンピューティングデバイスの例には、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パルムトップコンピュータ、パーソナルデジタルアシスタント(PDA)、携帯電話、携帯電話/PDAの組合せ、テレビ、スマートデバイス(例えばスマートフォン、スマートタブレット又はスマートテレビ)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス等が含まれ得る。
モバイルコンピューティングデバイスの例には、人によって装着されるように構成されるコンピュータ、例え手首用コンピュータ、指用コンピュータ、指輪コンピュータ、眼鏡コンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、靴用コンピュータ、衣服用コンピュータ及び他のウェアラブルコンピュータを含み得る。実施形態では、例えばモバイルコンピューティングデバイスは、コンピュータアプリケーションだけでなく、音声通信及び/又はデータ通信を実行することができるスマートフォンとして実装され得る。一部の実施形態は、例としてスマートフォンとして実装されるモバイルコンピューティングデバイスを用いて説明され得るが、他の実施形態は、同様に他の無線モバイルコンピューティングデバイスを使用して実装されてもよいことが認識され得る。実施形態は、このコンテキストに限定されない。
図7に図示されるように、デバイス800は、ハウジング802、ディスプレイ804、入出力(I/O)デバイス806及びアンテナ808を備え得る。デバイス800は、ナビゲーション機能812も備えることができる。ディスプレイ804は、モバイルコンピューティングデバイスに適切な情報を表示するための任意の適切なI/Oデバイスを備え得る。I/Oデバイス806の例は、英数字キーボード、数字キーボード、タッチパッド、入力キー、ボタン、スイッチ、ロッカースイッチ、マイクロフォン、スピーカ、音声認識デバイス及びソフトウェア等を含み得る。マイクロフォンによって情報がデバイス800に入力されてもよい。そのような情報は、音声認識デバイスによってデジタル化され得る。実施形態は、このコンテキストに限定されない。
附記及び実施例:
例1は、グラフィクスワークロードを管理するためのシステムを含み、当該システムは、グラフィクスハードウェアコンポーネントと、システムレベル特権を持っていないアプリケーションを実行するホストプロセッサと、アプリケーションによるワークロード・サブミッションの通知を発行するメモリデバイスと、コントローラを備える。コントローラは、ワークロード・サブミッションの通知を受け取る通知モジュールと、実行のためにグラフィクスハードウェアコンポーネントへのワークロード・サブミッションの転送をスケジュールするスケジューラとを含み得る。
例2は、例1のシステムを含んでよく、上記の転送は、ホストプロセッサに関連付けられるオペレーティングシステムをバイパスする。
例3は、例1のシステムを含んでよく、上記の転送は、グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする。
例4は、例1のシステムを含んでよく、上記の通知は割込みである。
例5は、例1乃至例4のいずれか1つのシステムを含んでよく、スケジューラは、アプリケーションに関連付けられるワークキューからワークロード・サブミッションを取り出す、取出しコンポーネントと、ワークロード・サブミッションを解析して1つ以上のコマンドを取得するパーサと、1つ以上のコマンドを、グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加する、エンキューコンポーネントと、グラフィクスサブミッションポリシーに従って、サブミッションキューからグラフィクスハードウェアコンポーネントへ1つ以上のコマンドを転送する、デキューコンポーネントとを含む。
例6は、例5のシステムを含んでよく、パーサは、1つ以上のコマンドのうちの少なくとも1つを修正し、1つ以上のコマンドに少なくとも1つのコマンドを追加し、1つ以上のコマンドに優先順位を付ける。
例7は、コントローラを動作させる方法を含み、当該方法は、コントローラにおいて、システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知を受け取るステップと、コントローラを使用して、実行のためにグラフィクスハードウェアコンポーネントへのワークロード・サブミッションの転送をスケジュールするステップとを備え、コントローラはシステムレベル特権を有する。
例8は、例7の方法を含んでよく、上記の転送は、オペレーティングシステムをバイパスする。
例9は、例7の方法を含んでよく、上記の転送は、グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする。
例10は、例7の方法を含んでよく、上記の通知は割込みである。
例11は、例7乃至例10のいずれか1つの方法を含んでよく、コントローラを使用して、転送をスケジュールするステップは、アプリケーションに関連付けられるワークキューからワークロード・サブミッションを取り出すステップと、ワークロード・サブミッションを解析して1つ以上のコマンドを取得するステップと、1つ以上のコマンドを、グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加するステップと、グラフィクスサブミッションポリシーに従って、サブミッションキューからグラフィクスハードウェアコンポーネントへ1つ以上のコマンドを転送するステップを含む。
例12は、例11の方法を含んでよく、ワークロード・サブミッションを解析することは、1つ以上のコマンドのうちの少なくとも1つを修正するステップと、1つ以上のコマンドに少なくとも1つのコマンドを追加するステップと、1つ以上のコマンドに優先順位を付けるステップを含む。
例13は、グラフィクスワークロードを管理するコントローラを含み、当該コントローラは、システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知を受け取る通知モジュールと、実行のためにグラフィクスハードウェアコンポーネントへのワークロード・サブミッションの転送をスケジュールするスケジューラであって、システムレベル特権を有するスケジューラとを備える。
例14は、例13のコントローラを含んでよく、上記の転送は、オペレーティングシステムをバイパスする。
例15は、例13のコントローラを含んでよく、上記の転送は、グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする。
例16は、例13のコントローラを含んでよく、上記の通知は割込みである。
例17は、例13乃至例16のいずれか1つのコントローラを含んでよく、スケジューラは、アプリケーションに関連付けられるワークキューからワークロード・サブミッションを取り出す、取出しコンポーネントと、ワークロード・サブミッションを解析して1つ以上のコマンドを取得するパーサと、1つ以上のコマンドを、グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加する、エンキューコンポーネントと、グラフィクスサブミッションポリシーに従って、サブミッションキューからグラフィクスハードウェアコンポーネントへ1つ以上のコマンドを転送する、デキューコンポーネントとを含む。
例18は、例17のコントローラを含んでよく、パーサは、1つ以上のコマンドのうちの少なくとも1つを修正し、1つ以上のコマンドに少なくとも1つのコマンドを追加し、1つ以上のコマンドに優先順位を付ける。
例19は、コントローラによって実行されると、該コントローラに、システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知を受け取らせ、実行のためにグラフィクスハードウェアコンポーネントへのワークロード・サブミッションの転送をスケジュールさせる命令のセットを備える、少なくとも1つのコンピュータ読取可能記憶媒体を含み、上記において、コントローラはシステムレベル特権を有する。
例20は、例19の少なくとも1つのコンピュータ読取可能記憶媒体を含んでよく、上記の転送は、オペレーティングシステムをバイパスする。
例21は、例19の少なくとも1つのコンピュータ読取可能記憶媒体を含んでよく、上記の転送は、グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする。
例22は、例19の少なくとも1つのコンピュータ読取可能記憶媒体を含んでよく、上記の通知は割込みである。
例23は、例19乃至例22のいずれか1つの少なくとも1つのコンピュータ読取可能記憶媒体を含んでよく、上記の命令は、実行されると、コントローラに、アプリケーションに関連付けられるワークキューからワークロード・サブミッションを取り出させ、ワークロード・サブミッションを解析して1つ以上のコマンドを取得させ、1つ以上のコマンドを、グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加させ、グラフィクスサブミッションポリシーに従って、サブミッションキューからグラフィクスハードウェアコンポーネントへ1つ以上のコマンドを転送させる。
例24は、例23の少なくとも1つのコンピュータ読取可能記憶媒体を含んでよく、上記の命令は、実行されると、コントローラに、1つ以上のコマンドのうちの少なくとも1つを修正させ、1つ以上のコマンドに少なくとも1つのコマンドを追加させ、1つ以上のコマンドに優先順位を付けさせる。
例25は、例7乃至例12のいずれかの方法を実行するための手段を備える、グラフィクスワークロードを管理するコントローラを含み得る。
本明細書で説明される技術は、したがって、GPUスケジューリングをOS及びカーネルモード・ドライバからオフロードすることができる。そのようなアプローチは、ユーザモードアプリケーションに対する特権昇格を引き起こすことなく、低ディスパッチオーバヘッド/レイテンシ、進歩したタスク処理/キュー処理オプション(例えば順番を問わない実行、GPUベースのサブミッション/プリエンプション(preemption)/再エンキュー)等を提供することができる。加えて、OSが必要とされるセマンティクス(OS required semantics)(例えば順番通りの要件)及び他のOSサポート機能を保ちつつ、従来的なOS/ドライバ経路を通してサブミットされるレガシーワークロードをサポートすることができる。さらに、優先順位に基づくスケジューリングオプションは、高い優先順位の作業(ワーク)がより早く実行されることを可能にし、(直接及びOSサブミッションのインタリーブを含め)全てのコンテキストの間で公平なスケジューリングを達成することができる。加えて、KMDとの制御インタフェースは、コンテキストデータの共有、不十分なハードウェアリソースの仮想化、破損及び/又はクラッシュしたアプリケーションを含む「エッジケース」の対処等を管理することができる。これらの技術は、レイテンシの目標に合致し、かつファームウェアが十分なGPU利用を達成することに関する制限要因でないことを保証するように、コントローラ上のファームウェアの低い実行オーバヘッドも可能にすることができる。実際、最小限のワークロード解析と、コード及びキーデータ構造を記憶するためにコントローラに対して内部にあるSRAMの使用は、システムメモリのレイテンシを低減することができる。
様々な実施形態が、ハードウェア要素、ソフトウェア要素又はその双方の組合せを使用して実装され得る。ハードウェア要素の例には、プロセッサ、マイクロプロセッサ、回路、回路要素(例えばトランジスタ、レジスタ、キャパシタ、インダクタ等)、集積回路、特定用途向け集積回路(ASIC)、プログラム可能論理デバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等が含まれ得る。ソフトウェアの例には、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラミングインタフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル又はこれらの任意の組合せが含まれ得る。実施形態が、ハードウェア要素及び/又はソフトウェア要素を使用して実装されるかどうかを判断することは、所望の演算レート、電力レベル、熱耐性、処理サイクル量、入力データレート、出力データレート、メモリリソース、データバス・スピード及び他の設計的又は性能的制約といった、任意の数のファクタに従って変化し得る。
少なくとも1つの実施形態の1つ以上の態様は、マシンによって読み出されると、該マシンに、本明細書で説明される技術を実行するロジックを作成させる様々なロジックを表す、マシン読取可能媒体上に記憶される表現的命令によって実装され得る。「IPコア」としても知られるそのような表現は、有形のマシン読取可能媒体上に記憶され、ロジック又はプロセッサを実際に作る作成マシンにロードするよう様々な顧客又は製造施設に供給され得る。
実施形態は、全てのタイプの半導体集積回路(「IC」)チップとの使用に適用可能である。これらのICチップの例には、これらに限られないが、プロセッサ、コントローラ、チップセットコンポーネント、プログラマブルゲートアレイ(PLA)、メモリチップ、ネットワークチップ等が含まれる。加えて、図面の一部では、信号導体線が線で表されている。幾つかは、更なる構成信号経路を示すように異なっていることがあり、構成信号経路の数を示すように数字のラベルを有することがあり、かつ/又は主な情報の流れの方向を示すように1つ以上の端部で矢印を有することがある。しかしながら、これは限定的に解釈されるべきではない。むしろ、そのような付加的な詳細は、1つ以上の例示の実施形態との関連で、回路のより容易な理解を促進するように用いられ得る。表された全ての信号線は、付加的情報を有しているか否かに関わらず、複数の方向に進み得る1つ以上の信号を実際に備えていることがあり、任意の適切なタイプの信号スキーム、例えば差動ペア(differential pair)で実装されるデジタル若しくはアナログ線、光ファイバ線及び/又はシングルエンド線で実装されてもよい。
例示のサイズ/モデル/値/範囲が与えられていることがあるが、実施形態はこれらに限定されない。製造技術(例えばフォトリソグラフィー)が時間とともに成熟するにつれて、より小さいサイズのデバイスが製造され得ることが予期される。加えて、ICチップ及び他のコンポーネントへの周知の電力/接地接続は、図示及び議論の簡潔性のため、そして実施形態の特定の態様をあいまいにしないように、図面に示されていることも、示されていないこともある。さらに、実施形態をあいまいにすることを避けるため、ブロック図の配置構成の実装に関する詳細は、実施形態が実装されることになるプラットフォームに多いに依存するという事実に鑑みて、配置構成がブロック図の形で示されていることがある。すなわち、そのような詳細は十分に当業者の視野の範囲内にあるはずである。例示の実施形態を説明するために特定の詳細が(例えば回路)が順番に説明されている場合、これらの特定の詳細を用いることなく、あるいはこれらの特定の詳細の変形したものを用いて実施形態を実施することが可能であることが当業者に明らかであろう。したがって、説明は、限定ではなく例示として解釈されるべきである。
一部の実施形態は、例えばマシンによって実行されると、該マシンに、実施形態に係る方法及び/又は動作を実行させる命令又は命令のセットを記憶することができる、マシン若しくは有形のコンピュータ読取可能媒体又は製品を使用して実装され得る。そのようなマシンは、例えば任意の適切な処理プラットフォーム、コンピューティングプラットフォーム、コンピューティングデバイス、処理デバイス、コンピューティングシステム、処理システム、コンピュータ、プロセッサ等を含んでよく、ハードウェア及び/又はソフトウェアの任意の適切な組合せを使用して実装され得る。マシン読取可能媒体又は製品は、例えば任意の適切なタイプのメモリユニット、メモリデバイス、メモリ製品、メモリ媒体、記憶デバイス、記憶製品、記憶媒体及び/又は記憶ユニット、例えばメモリ、取外し可能又は取外し不可能媒体、消去可能又は消去不可能媒体、書込み可能又は再書込み可能媒体、デジタル又はアナログ媒体、ハードディスク、フロッピーディスク、コンパクトディスク読取専用メモリ(CD−ROM)、コンパクトディスク記録可能(CD−R)、コンパクトディスク再書込み可能(CD−RW)、光ディスク、磁気媒体、磁気光学媒体、取外し可能メモリカード又はディスク、様々なタイプのデジタル多用途ディスク(DVD)、テープ、カセット等を含み得る。命令は、任意の適切な高レベル、低レベル、オブジェクト指向、ビジュアル、コンパイル済み及び/又は解釈済みプログラミング言語を使用して実装される、ソースコード、コンパイル済みコード、解釈済みコード、実行可能コード、静的コード、動的コード、暗号化済みコード等のような任意の適切なタイプのコードを含み得る。
別段の定めがない限り、「処理する」、「演算する」、「計算する」、「決定する」等のような用語は、コンピューティングシステムのレジスタ及び/メモリ内の物理量(例えば電子)として表されるデータを、コンピューティングシステムのメモリ、レジスタ又は他の上記の情報ストレージ、トランスミッション又はディスプレイデバイス内の物理量として同様に表される他のデータへと操作及び/又は変換する、コンピュータ又はコンピューティングシステム、あるいは同様の電子的コンピューティングデバイスのアクション及び/又は処理を指す。実施形態は、このコンテキストに限定されない。
「結合される」という用語は、問題となっているコンポーネントの間の直接又は間接的な任意のタイプの関係を指すのに使用されてよく、電気、機械、流体、光、電磁気、電気機械又は他の接続に当てはまることがある。加えて、「第1」、「第2」等の用語は、別段の定めがない限り、本明細書では単に説明を容易にするために使用され、特定の時間的又は年代的な重要性を持っていないことがある。
当業者には、上記の説明から、実施形態の広範な技術を様々な形で実装することができることが認識されよう。したがって、実施形態は、その特定の例との関連で説明されているが、図面、明細書及び特許請求の範囲の教示により、当業者には他の修正形態が明らかになるので、実施形態の真の範囲はそのように限定されるべきではない。

Claims (26)

  1. グラフィクスワークロードを管理するためのシステムであって:
    グラフィクスハードウェアコンポーネントと;
    システムレベル特権を持っていないアプリケーションを実行するホストプロセッサと;
    前記アプリケーションによるワークロード・サブミッションの通知を発行するメモリデバイスと;
    前記ワークロード・サブミッションの通知を受け取る通知モジュール、及び
    実行のために前記グラフィクスハードウェアコンポーネントへの前記ワークロード・サブミッションの転送をスケジュールするスケジューラ、
    を含むコントローラと;
    を備え、前記スケジューラは、前記ワークロード・サブミッションを解析して1つ以上のコマンドを取得するパーサを含み、前記ワークロード・サブミッションを解析することは、1つ以上の信頼できないアプリケーションが特権コマンドを前記グラフィクスハードウェアコンポーネントにサブミットすることを防ぐことを含む、システム。
  2. 前記転送は、前記ホストプロセッサに関連付けられるオペレーティングシステムをバイパスする、
    請求項1に記載のシステム。
  3. 前記転送は、前記グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする、
    請求項1に記載のシステム。
  4. 前記通知は割込みである、
    請求項1に記載のシステム。
  5. 前記スケジューラは、
    前記アプリケーションに関連付けられるワークキューから前記ワークロード・サブミッションを取り出す、取出しコンポーネントと
    前記1つ以上のコマンドを、前記グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加する、エンキューコンポーネントと、
    グラフィクスサブミッションポリシーに従って、前記サブミッションキューから前記グラフィクスハードウェアコンポーネントへ前記1つ以上のコマンドを転送する、デキューコンポーネントと、
    を含む、請求項1乃至3のいずれか一項に記載のシステム。
  6. 前記パーサは、前記1つ以上のコマンドのうちの少なくとも1つを修正し、前記1つ以上のコマンドに少なくとも1つのコマンドを追加し、前記1つ以上のコマンドに優先順位を付ける、
    請求項5に記載のシステム。
  7. コントローラを動作させる方法であって:
    前記コントローラにおいて、システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知を受け取るステップと;
    前記ワークロード・サブミッションを解析して1つ以上のコマンドを取得するステップであって、前記ワークロード・サブミッションを解析することは、1つ以上の信頼できないアプリケーションが特権コマンドをグラフィクスハードウェアコンポーネントにサブミットすることを防ぐことを含む、ステップと;
    前記コントローラを使用して、実行のために前記グラフィクスハードウェアコンポーネントへの前記ワークロード・サブミッションの転送をスケジュールするステップと;
    を備え、前記コントローラはシステムレベル特権を有する、
    方法。
  8. 前記転送は、オペレーティングシステムをバイパスする、
    請求項7に記載の方法。
  9. 前記転送は、前記グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする、
    請求項7に記載の方法。
  10. 前記通知は割込みである、
    請求項7に記載の方法。
  11. 前記コントローラを使用して、前記転送をスケジュールするステップは、
    前記アプリケーションに関連付けられるワークキューから前記ワークロード・サブミッションを取り出すステップと
    前記1つ以上のコマンドを、前記グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加するステップと、
    グラフィクスサブミッションポリシーに従って、前記サブミッションキューから前記グラフィクスハードウェアコンポーネントへ前記1つ以上のコマンドを転送するステップと、
    を含む、請求項7乃至10のいずれか一項に記載の方法。
  12. 前記ワークロード・サブミッションを解析することは、
    前記1つ以上のコマンドのうちの少なくとも1つを修正するステップと、
    前記1つ以上のコマンドに少なくとも1つのコマンドを追加するステップと、
    前記1つ以上のコマンドに優先順位を付けるステップと、
    を含む、請求項11に記載の方法。
  13. グラフィクスワークロードを管理するコントローラであって:
    システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知を受け取る通知モジュールと;
    前記ワークロード・サブミッションを解析して1つ以上のコマンドを取得するパーサであって、前記ワークロード・サブミッションを解析することは、1つ以上の信頼できないアプリケーションが特権コマンドをグラフィクスハードウェアコンポーネントにサブミットすることを防ぐことを含む、パーサと;
    実行のために前記グラフィクスハードウェアコンポーネントへの前記ワークロード・サブミッションの転送をスケジュールするスケジューラであって、システムレベル特権を有するスケジューラと;
    を備える、コントローラ。
  14. 前記転送は、オペレーティングシステムをバイパスする、
    請求項13に記載のコントローラ。
  15. 前記転送は、前記グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする、
    請求項13に記載のコントローラ。
  16. 前記通知は割込みである、
    請求項13に記載のコントローラ。
  17. 前記スケジューラは、
    前記アプリケーションに関連付けられるワークキューから前記ワークロード・サブミッションを取り出す、取出しコンポーネントと
    前記1つ以上のコマンドを、前記グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加する、エンキューコンポーネントと、
    グラフィクスサブミッションポリシーに従って、前記サブミッションキューから前記グラフィクスハードウェアコンポーネントへ前記1つ以上のコマンドを転送する、デキューコンポーネントと、
    を含む、請求項13乃至16のいずれか一項に記載のコントローラ。
  18. 前記パーサは、前記1つ以上のコマンドのうちの少なくとも1つを修正し、前記1つ以上のコマンドに少なくとも1つのコマンドを追加し、前記1つ以上のコマンドに優先順位を付ける、
    請求項17に記載のコントローラ。
  19. コントローラによって実行されると、該コントローラに、
    システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知を受け取らせ、
    前記ワークロード・サブミッションを解析させて1つ以上のコマンドを取得させることであって、前記ワークロード・サブミッションの解析は、1つ以上の信頼できないアプリケーションが特権コマンドをグラフィクスハードウェアコンポーネントにサブミットすることを防ぐことを含むことと;
    実行のために前記グラフィクスハードウェアコンポーネントへの前記ワークロード・サブミッションの転送をスケジュールさせ、
    前記コントローラがシステムレベル特権を有する、
    コンピュータプログラム。
  20. 前記転送は、オペレーティングシステムをバイパスする、
    請求項19に記載のコンピュータプログラム。
  21. 前記転送は、前記グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする、
    請求項19に記載のコンピュータプログラム。
  22. 前記通知は割込みである、
    請求項19に記載のコンピュータプログラム。
  23. 実行されると、前記コントローラに、
    前記アプリケーションに関連付けられるワークキューから前記ワークロード・サブミッションを取り出させ
    前記1つ以上のコマンドを、前記グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加させ、
    グラフィクスサブミッションポリシーに従って、前記サブミッションキューから前記グラフィクスハードウェアコンポーネントへ前記1つ以上のコマンドを転送させる、
    請求項19乃至22のいずれか一項に記載のコンピュータプログラム。
  24. 実行されると、前記コントローラに、
    前記1つ以上のコマンドのうちの少なくとも1つを修正させ、
    前記1つ以上のコマンドに少なくとも1つのコマンドを追加させ、
    前記1つ以上のコマンドに優先順位を付けさせる、
    請求項23に記載のコンピュータプログラム。
  25. グラフィクスワークロードを管理するコントローラであって:
    当該コントローラにおいて、システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知を受け取るための手段と;
    前記ワークロード・サブミッションを解析して1つ以上のコマンドを取得するための手段であって、前記ワークロード・サブミッションを解析することは、1つ以上の信頼できないアプリケーションが特権コマンドをグラフィクスハードウェアコンポーネントにサブミットすることを防ぐことを含む、手段と;
    当該コントローラを使用して、実行のために前記グラフィクスハードウェアコンポーネントへの前記ワークロード・サブミッションの転送をスケジュールするための手段と;
    を備え、当該コントローラはシステムレベル特権を有する、
    コントローラ。
  26. 請求項19乃至24のいずれか一項に記載のコンピュータプログラムを記憶する、少なくとも1つのコンピュータ読取可能記憶媒体。
JP2016572728A 2014-06-26 2015-06-09 非特権アプリケーションによるグラフィクスワークロード・サブミッション Active JP6419856B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/315,626 2014-06-26
US14/315,626 US9773292B2 (en) 2014-06-26 2014-06-26 Graphics workload submissions by unprivileged applications
PCT/US2015/034890 WO2015199971A1 (en) 2014-06-26 2015-06-09 Graphics workload submissions by unprivileged applications

Publications (2)

Publication Number Publication Date
JP2017526998A JP2017526998A (ja) 2017-09-14
JP6419856B2 true JP6419856B2 (ja) 2018-11-07

Family

ID=54931074

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016572728A Active JP6419856B2 (ja) 2014-06-26 2015-06-09 非特権アプリケーションによるグラフィクスワークロード・サブミッション

Country Status (7)

Country Link
US (1) US9773292B2 (ja)
EP (1) EP3161759A4 (ja)
JP (1) JP6419856B2 (ja)
KR (1) KR102223446B1 (ja)
CN (1) CN106605243A (ja)
SG (1) SG11201609203VA (ja)
WO (1) WO2015199971A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10410311B2 (en) * 2016-03-07 2019-09-10 Intel Corporation Method and apparatus for efficient submission of workload to a high performance graphics sub-system
US10613972B2 (en) * 2017-12-29 2020-04-07 Intel Corporation Dynamic configuration of caches in a multi-context supported graphics processor
US10424043B1 (en) * 2018-07-02 2019-09-24 Intel Corporation Efficiently enqueuing workloads from user mode to hardware across privilege domains
US11863469B2 (en) * 2020-05-06 2024-01-02 International Business Machines Corporation Utilizing coherently attached interfaces in a network stack framework

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6070219A (en) * 1996-10-09 2000-05-30 Intel Corporation Hierarchical interrupt structure for event notification on multi-virtual circuit network interface controller
US5861893A (en) * 1997-05-27 1999-01-19 Intel Corporation System and method for graphics data concurrency and coherency
US7421694B2 (en) 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
US8478907B1 (en) * 2004-10-19 2013-07-02 Broadcom Corporation Network interface device serving multiple host operating systems
US8274518B2 (en) 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems
US7613898B2 (en) * 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
US20090160867A1 (en) 2007-12-19 2009-06-25 Advance Micro Devices, Inc. Autonomous Context Scheduler For Graphics Processing Units
US8780122B2 (en) 2009-09-16 2014-07-15 Nvidia Corporation Techniques for transferring graphics data from system memory to a discrete GPU
US9582919B2 (en) * 2009-10-09 2017-02-28 Microsoft Technology Licensing, Llc Automatic run-time identification of textures
US8872823B2 (en) * 2009-10-09 2014-10-28 Microsoft Corporation Automatic real-time shader modification for texture fetch instrumentation
US8086765B2 (en) * 2010-04-29 2011-12-27 Hewlett-Packard Development Company, L.P. Direct I/O device access by a virtual machine with memory managed using memory disaggregation
US9176794B2 (en) * 2010-12-13 2015-11-03 Advanced Micro Devices, Inc. Graphics compute process scheduling
US9176795B2 (en) * 2010-12-13 2015-11-03 Advanced Micro Devices, Inc. Graphics processing dispatch from user mode
US9294869B2 (en) * 2013-03-13 2016-03-22 Aliphcom Methods, systems and apparatus to affect RF transmission from a non-linked wireless client
US9146785B2 (en) * 2011-09-14 2015-09-29 Microsoft Technology Licensing, Llc Application acceleration in a virtualized environment
US8578129B2 (en) * 2011-12-14 2013-11-05 Advanced Micro Devices, Inc. Infrastructure support for accelerated processing device memory paging without operating system integration
US9099051B2 (en) * 2012-03-02 2015-08-04 Ati Technologies Ulc GPU display abstraction and emulation in a virtualization system
US9304813B2 (en) 2012-07-18 2016-04-05 Intel Corporation CPU independent graphics scheduler for performing scheduling operations for graphics hardware
US9979438B2 (en) * 2013-06-07 2018-05-22 Apple Inc. Controlling a media device using a mobile device

Also Published As

Publication number Publication date
US20150379662A1 (en) 2015-12-31
EP3161759A4 (en) 2018-03-21
KR20160148638A (ko) 2016-12-26
JP2017526998A (ja) 2017-09-14
KR102223446B1 (ko) 2021-03-04
US9773292B2 (en) 2017-09-26
EP3161759A1 (en) 2017-05-03
SG11201609203VA (en) 2016-12-29
CN106605243A (zh) 2017-04-26
WO2015199971A1 (en) 2015-12-30

Similar Documents

Publication Publication Date Title
US9633230B2 (en) Hardware assist for privilege access violation checks
KR101666416B1 (ko) 우선순위 기반의 컨텍스트 선점
KR102266462B1 (ko) 드로우 콜에 걸쳐 공유 리소스 데이터 일관성을 보장하는 효율적인 하드웨어 메커니즘
US20140026137A1 (en) Performing scheduling operations for graphics hardware
US9396513B2 (en) Using group page fault descriptors to handle context switches and process terminations in graphics processors
JP6419856B2 (ja) 非特権アプリケーションによるグラフィクスワークロード・サブミッション
TWI546665B (zh) 用於圖形處理單元的記憶體映射技術
JP5908957B2 (ja) ショートループアトミックアクセス
US9563561B2 (en) Initiation of cache flushes and invalidations on graphics processors
US9823927B2 (en) Range selection for data parallel programming environments
JP5955915B2 (ja) グラフィック処理アーキテクチャにおけるポストシンクロナイゼーションオペレーションとしてのアトミックオペレーションのサポート
TW201602961A (zh) 用以延遲著色之串流壓縮去鋸齒方法
JP5968463B2 (ja) データを別の記憶装置にコピーせずにデータソースによりバッファに格納されたデータを処理するためのポインタのスワッピング
WO2023173315A1 (en) Methods, system, and apparatus to select among image sensors based on device orientation
TWI610178B (zh) 共享函數多埠rom系統及裝置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180406

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: 20180911

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181010

R150 Certificate of patent or registration of utility model

Ref document number: 6419856

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