(57)【特許請求の範囲】
【請求項１】
グラフィクスワークロードを管理するためのシステムであって：
グラフィクスハードウェアコンポーネントと；
システムレベル特権を持っていないアプリケーションを実行するホストプロセッサと；
前記アプリケーションによるワークロード・サブミッションの通知を発行するメモリデバイスと；
前記ワークロード・サブミッションの通知を受け取る通知モジュール、及び
実行のために前記グラフィクスハードウェアコンポーネントへの前記ワークロード・サブミッションの転送をスケジュールするスケジューラ、
を含むコントローラと；
を備え、前記スケジューラは、前記ワークロード・サブミッションを解析して１つ以上のコマンドを取得するパーサを含み、前記ワークロード・サブミッションを解析することは、１つ以上の信頼できないアプリケーションが特権コマンドを前記グラフィクスハードウェアコンポーネントにサブミットすることを防ぐことを含む、システム。
【請求項２】
前記転送は、前記ホストプロセッサに関連付けられるオペレーティングシステムをバイパスする、
請求項１に記載のシステム。
【請求項３】
前記転送は、前記グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする、
請求項１に記載のシステム。
【請求項４】
前記通知は割込みである、
請求項１に記載のシステム。
【請求項５】
前記スケジューラは、
前記アプリケーションに関連付けられるワークキューから前記ワークロード・サブミッションを取り出す、取出しコンポーネントと、
前記１つ以上のコマンドを、前記グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加する、エンキューコンポーネントと、
グラフィクスサブミッションポリシーに従って、前記サブミッションキューから前記グラフィクスハードウェアコンポーネントへ前記１つ以上のコマンドを転送する、デキューコンポーネントと、
を含む、請求項１乃至３のいずれか一項に記載のシステム。
【請求項６】
前記パーサは、前記１つ以上のコマンドのうちの少なくとも１つを修正し、前記１つ以上のコマンドに少なくとも１つのコマンドを追加し、前記１つ以上のコマンドに優先順位を付ける、
請求項５に記載のシステム。
【請求項７】
コントローラを動作させる方法であって：
前記コントローラにおいて、システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知を受け取るステップと；
前記ワークロード・サブミッションを解析して１つ以上のコマンドを取得するステップであって、前記ワークロード・サブミッションを解析することは、１つ以上の信頼できないアプリケーションが特権コマンドをグラフィクスハードウェアコンポーネントにサブミットすることを防ぐことを含む、ステップと；
前記コントローラを使用して、実行のために前記グラフィクスハードウェアコンポーネントへの前記ワークロード・サブミッションの転送をスケジュールするステップと；
を備え、前記コントローラはシステムレベル特権を有する、
方法。
【請求項８】
前記転送は、オペレーティングシステムをバイパスする、
請求項７に記載の方法。
【請求項９】
前記転送は、前記グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする、
請求項７に記載の方法。
【請求項１０】
前記通知は割込みである、
請求項７に記載の方法。
【請求項１１】
前記コントローラを使用して、前記転送をスケジュールするステップは、
前記アプリケーションに関連付けられるワークキューから前記ワークロード・サブミッションを取り出すステップと、
前記１つ以上のコマンドを、前記グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加するステップと、
グラフィクスサブミッションポリシーに従って、前記サブミッションキューから前記グラフィクスハードウェアコンポーネントへ前記１つ以上のコマンドを転送するステップと、
を含む、請求項７乃至１０のいずれか一項に記載の方法。
【請求項１２】
前記ワークロード・サブミッションを解析することは、
前記１つ以上のコマンドのうちの少なくとも１つを修正するステップと、
前記１つ以上のコマンドに少なくとも１つのコマンドを追加するステップと、
前記１つ以上のコマンドに優先順位を付けるステップと、
を含む、請求項１１に記載の方法。
【請求項１３】
グラフィクスワークロードを管理するコントローラであって：
システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知を受け取る通知モジュールと；
前記ワークロード・サブミッションを解析して１つ以上のコマンドを取得するパーサであって、前記ワークロード・サブミッションを解析することは、１つ以上の信頼できないアプリケーションが特権コマンドをグラフィクスハードウェアコンポーネントにサブミットすることを防ぐことを含む、パーサと；
実行のために前記グラフィクスハードウェアコンポーネントへの前記ワークロード・サブミッションの転送をスケジュールするスケジューラであって、システムレベル特権を有するスケジューラと；
を備える、コントローラ。
【請求項１４】
前記転送は、オペレーティングシステムをバイパスする、
請求項１３に記載のコントローラ。
【請求項１５】
前記転送は、前記グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする、
請求項１３に記載のコントローラ。
【請求項１６】
前記通知は割込みである、
請求項１３に記載のコントローラ。
【請求項１７】
前記スケジューラは、
前記アプリケーションに関連付けられるワークキューから前記ワークロード・サブミッションを取り出す、取出しコンポーネントと、
前記１つ以上のコマンドを、前記グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加する、エンキューコンポーネントと、
グラフィクスサブミッションポリシーに従って、前記サブミッションキューから前記グラフィクスハードウェアコンポーネントへ前記１つ以上のコマンドを転送する、デキューコンポーネントと、
を含む、請求項１３乃至１６のいずれか一項に記載のコントローラ。
【請求項１８】
前記パーサは、前記１つ以上のコマンドのうちの少なくとも１つを修正し、前記１つ以上のコマンドに少なくとも１つのコマンドを追加し、前記１つ以上のコマンドに優先順位を付ける、
請求項１７に記載のコントローラ。
【請求項１９】
コントローラによって実行されると、該コントローラに、
システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知を受け取らせ、
前記ワークロード・サブミッションを解析させて１つ以上のコマンドを取得させることであって、前記ワークロード・サブミッションの解析は、１つ以上の信頼できないアプリケーションが特権コマンドをグラフィクスハードウェアコンポーネントにサブミットすることを防ぐことを含むことと；
実行のために前記グラフィクスハードウェアコンポーネントへの前記ワークロード・サブミッションの転送をスケジュールさせ、
前記コントローラがシステムレベル特権を有する、
コンピュータプログラム。
【請求項２０】
前記転送は、オペレーティングシステムをバイパスする、
請求項１９に記載のコンピュータプログラム。
【請求項２１】
前記転送は、前記グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする、
請求項１９に記載のコンピュータプログラム。
【請求項２２】
前記通知は割込みである、
請求項１９に記載のコンピュータプログラム。
【請求項２３】
実行されると、前記コントローラに、
前記アプリケーションに関連付けられるワークキューから前記ワークロード・サブミッションを取り出させ、
前記１つ以上のコマンドを、前記グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加させ、
グラフィクスサブミッションポリシーに従って、前記サブミッションキューから前記グラフィクスハードウェアコンポーネントへ前記１つ以上のコマンドを転送させる、
請求項１９乃至２２のいずれか一項に記載のコンピュータプログラム。
【請求項２４】
実行されると、前記コントローラに、
前記１つ以上のコマンドのうちの少なくとも１つを修正させ、
前記１つ以上のコマンドに少なくとも１つのコマンドを追加させ、
前記１つ以上のコマンドに優先順位を付けさせる、
請求項２３に記載のコンピュータプログラム。
【請求項２５】
グラフィクスワークロードを管理するコントローラであって：
当該コントローラにおいて、システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知を受け取るための手段と；
前記ワークロード・サブミッションを解析して１つ以上のコマンドを取得するための手段であって、前記ワークロード・サブミッションを解析することは、１つ以上の信頼できないアプリケーションが特権コマンドをグラフィクスハードウェアコンポーネントにサブミットすることを防ぐことを含む、手段と；
当該コントローラを使用して、実行のために前記グラフィクスハードウェアコンポーネントへの前記ワークロード・サブミッションの転送をスケジュールするための手段と；
を備え、当該コントローラはシステムレベル特権を有する、
コントローラ。
【請求項２６】
請求項１９乃至２４のいずれか一項に記載のコンピュータプログラムを記憶する、少なくとも１つのコンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
（関連出願の相互参照）
本出願は、2014年6月26日に出願された米国特許出願第14/315,626号の優先権を主張する。
【０００２】
（背景技術）
例えば３次元（３Ｄ）レンダリング及びメディアプレーヤアプリケーションのようなグラフィクス関連アプリケーションは、グラフィック処理ユニット（ＧＰＵ）リソースへの直接アクセスを提供する特権（privilege）を有していないことがある。したがって、相対的に非特権の（例えばシステムレベル特権を持っていない）「リング３」保護レベルに存在する所与のグラフィクスアプリケーションは、グラフィクスユーザモード・ドライバ（ＵＭＤ）をロードする可能性があり、このグラフィクスユーザモード・ドライバ（ＵＭＤ）は、（例えばシステムレベル特権を有する）「リング０」保護レベルに存在するオペレーティングシステム（ＯＳ）及び／又はカーネルモード・ドライバ（ＫＭＤ）へワークロードをサブミット（提示）（submit）する。ＯＳは、例えばページングのようなメモリ操作を管理し、ＫＭＤは、例えばＧＰＵコマンドバッファ及びハードウェアレジスタに、サブミットされたワークロードに対応するコマンドを追加（populate）することがあり、ＧＰＵは、これらのコマンドを使用してワークロードを実行し得る。ＯＳ及びＫＭＤによるワークロードの中間処理は、中央処理ユニット（ＣＰＵ）にオーバヘッドを与え、処理遅延を増大させる可能性がある。そのような処理遅延は、性能、消費電力及び／又はバッテリ寿命に悪影響を及ぼす可能性がある。
【図面の簡単な説明】
【０００３】
実施形態の様々な利点は、下記の明細書及び添付の特許請求の範囲を読み、下記の図面を参照することにより当業者に明らかになるであろう。
【図１】一実施形態に係るグラフィクスワークロード・サブミッション環境の例を示すブロック図である。
【図２】一実施形態に係るキューベースのグラフィクスワークロード・サブミッションアーキテクチャの例を示すブロック図である。
【図３Ａ】一実施形態に係るアプリケーションの動作方法の例を示すフローチャートである。
【図３Ｂ】一実施形態に係るメモリデバイスの動作方法の例を示すフローチャートである。
【図３Ｃ】一実施形態に係るコントローラの動作方法の例を示すフローチャートである。
【図４】一実施形態に係るコントローラの例を示すブロック図である。
【図５】一実施形態に係るシステムの例を示すブロック図である。
【図６】一実施形態に係るナビゲーションコントローラを有するシステムの例を示すブロック図である。
【図７】一実施形態に係る小さなフォームファクタを有するシステムの例を示すブロック図である。
【発明を実施するための形態】
【０００４】
図１は、非特権保護レベル（例えばリング３保護レベル）で動作する様々なアプリケーション１０（１０ａ〜１０ｄ）が、ディスプレイ又は他の適切なデバイス（図示せず）による画像、ビデオ、グラフィクス、データ及び／又は他の情報の視覚的出力に関連付けられる、ワークロードを生成する環境を図示している。例えば第１のアプリケーション１０ａ（「アプリケーション＃１」）は、３次元（３Ｄ）シーンを表示するビデオゲームを含む可能性があり、第２のアプリケーション１０ｂ（「アプリケーション＃２」）は、ムービー（映画）及び／又はビデオクリップの再生を提供するメディアプレーヤを含んでよく、第３のアプリケーション１０ｃ（「アプリケーション＃３」）は、オンラインコンテンツをストリーミングするウェブブラウザを含む可能性があり、第４のアプリケーション１０ｄ（「アプリケーション＃４」）は、メッセージングコンテンツを表示する電子メールプログラムを含んでよい。
【０００５】
図示される例において、アプリケーション１０は、様々なタイプのグラフィクスユーザモード・ドライバ（ＵＭＤ）１４（１４ａ〜１４ｄ）及び／又は他のミドルウェアをロードして、ワークロード・サブミッション（workload  submission）を容易にする。例えば第１及び第２のＵＭＤ１４ａ、１４ｂは、特定のタイプ（「タイプＡ」、例えばマイクロソフト社の登録商標であるDIRECTX）である可能性があり、第３のＵＭＤ１４ｃは別のタイプ（「タイプＢ」、例えばSilicon  Graphics社の登録商標であるOPENGL）であってよく、第４のＵＭＤ１４ｄは更に別のタイプ（「タイプＣ」、例えばKhronos  Groupのマークであるオープンコンピューティング言語／OPENCL）等であってよい。図示されるＵＭＤ１４は、これらのそれぞれのコンテンツのレンダリングに関連付けられるグラフィクスワークロードを、コントローラ１２（例えばマイクロコントローラ、埋込みコントローラ）にサブミットする。コントローラ１２は、特権保護レベルに存在してよく（例えばコントローラは、ＧＰＵ内のレジスタのようなハードウェアリソースへのアクセスを有することができる）、例えばグラフィクスプロセッサ、パイプライン、レジスタ、コマンドバッファ、キュー、ディスプレイ等のようなグラフィクスハードウェア（ＨＷ）１６へワークロードを直接サブミットする権限を有する。
【０００６】
特に注目すべきことは、図示されるワークロード・サブミッションの転送（transfer）が、（例えば図示されていないホストプロセッサに関連付けられるか、かつ／又はホストプロセッサ上で動作する）オペレーティングシステム（ＯＳ）モジュールと、グラフィクスハードウェア１６に関連付けられるか、かつ／又はグラフィクスハードウェア上で動作するグラフィクスカーネルモード・ドライバ（ＫＭＤ）２０をバイパスすることである。図示されるものは、グラフィクス・スケジューリングをＯＳモジュール１８及びＫＭＤ２０からコントローラ１２へオフロードすることによって、レイテンシを低減し、ホストプロセッサのオーバヘッドを低減し、性能を改善し、消費電力を減少させ、バッテリ寿命を延ばすこと等ができる。
【０００７】
次に図２に移ると、キューべースのグラフィクスワークロード・サブミッションアーキテクチャが図示されている。図示される例では、システムレベル特権を持っていない第１のアプリケーション２２（「アプリケーションＡ」）が、例えば赤（Ｒ）プリミティブのような３Ｄレンダリングを伴う、第１のワークロード２４（「グラフィクスワーク＃Ａ１」）を生成し、（例えば図示されていないＵＭＤを介して）第１のワークロード２４を、第１のアプリケーション２２に関連付けられるワークキュー２８（例えば循環バッファ）へサブミットする。ワークキュー２８内への第１のワークロード２４のサブミッション（「サブミッション＃Ａ１」）の配置の後、第１のアプリケーション２２は、例えば第１のアプリケーション２２に関連付けられるキャッシュライン又は他のアドレス／メモリ位置への書込みにより、ドアベル（doorbell）３０をトリガすることができる。モニタ３２（例えばメモリデバイス内で動作する割込みハンドラ又はスヌープモジュール（図示せず））は、ドアベル３０のトリガを検出し、ドアベルアドレスに基づいて第１のアプリケーション２２を特定し、第１のアプリケーション２２によるワークロード・サブミッションの通知を、システムレベル特権を有するコントローラ３４へ直接発行することができる。一例において、通知は割込み（interrupt）である。
【０００８】
コントローラ３４は、既に述べたコントローラ１２（図１）と同様であってよいが、（例えばホストプロセッサ上で動作するドライバによってロードされるか、内部不揮発性メモリ／ＮＭＶからロードされるような）ファームウェア命令を実行して、モニタ３２からワークロード・サブミッションの通知を受け取り、ワークキュー２８からワークロード・サブミッションを取り出し、実行のためにグラフィクスハードウェアのコンポーネントへのワークロード・サブミッションの転送をスケジュールすることができる。既に示したように、ワークロード・サブミッションの転送は、ホストプロセッサのオーバヘッド及びグラフィクスサブミッション時間を減らすために、ＯＳ及び／又はＫＭＤ（図示せず）をバイパスすることができる。より具体的には、コントローラ３４は、ワークロード・サブミッションを解析して、１つ以上のコマンドを取得し、該１つ以上のコマンドをグラフィクスハードウェア３６内のサブミッションキュー３８に追加し、グラフィクスサブミッションポリシー（例えばタイマーの満了期間、ワーク完了イベント）に基づいて、その１つ以上のコマンドをサブミッションキュー３８からグラフィクスハードウェア３６の他のコンポーネントへ転送することができる。
【０００９】
したがって、コマンドは、サブミッションキュー３８から、例えばグラフィクスパイプラインコンポーネント（例えばコマンドストリーマ、頂点処理、ラスタ化／Ｚバッファリング、メディアサンプラー、テクスチャサンプラー、メディアピクセル操作／Ｏｐｓ、ピクセル操作／Ｏｐｓ）、実行ユニットコンポーネント４０、メディア処理コンポーネント４２、マルチフォーマット・コーデック・コンポーネント４４、ディスプレイコンポーネント４６等のようなコンポーネントへ直接転送され得る。加えて、ワークロード・サブミッションを解析することは、例えばコマンドを修正、追加及び／又は優先順位を付けること、コマンドをチェックすること、並びに信頼できないユーザモードアプリケーションが、特権コマンドをハードウェアへサブミットする（例えば非合法コマンドをドロップする）ことができないことを保証することを含み得る。
【００１０】
同様に、システムレベル特権を持たない第２のアプリケーション４８（「アプリケーションB」）は、例えばメディアコンテンツの再生を伴う、第２のワークロード５０（「グラフィクスワーク＃Ｂ１」）を生成し得る。図示される第２のアプリケーション４８は、（例えば図示されないＵＭＤを介して）第２のワークロード５０を、第２のアプリケーション４８に関連付けられるワークキュー５２（例えば循環バッファ）にサブミットする。ワークキュー５２内への第２のワークロード５０のサブミッション（「サブミッション＃Ｂ１」）の配置の後、第２のアプリケーション４８は、例えば第２のアプリケーション４８に関連付けられるキャッシュライン又は他のアドレス／メモリ位置への書込みにより、ドアベル５４をトリガすることができる。モニタ３２は、ドアベル５４のトリガを検出し、ドアベルアドレスに基づいて第２のアプリケーション４８を特定し、第２のアプリケーション４８によるワークロード・サブミッションの通知（例えばＤＰＣ、割込み）を、システムレベル特権を有するコントローラ３４へ直接発行することができる。コントローラ３４は、ＯＳモジュール又はＫＭＤに関与することなく、グラフィクスハードウェア３６の１つ以上のコンポーネントへのワークロード・サブミッションの転送をスケジュールすることができる。第１のアプリケーション２２によって生成される第３のワークロード２６は、同様に、ＯＳ及びＫＭＤをバイパスするやり方で処理され得る。コントローラ３４は、グラフィクスハードウェア３６内に組み込まれてもよく、グラフィクスハードウェア３６の外部に実装されてもよい。
【００１１】
図３Ａ、図３Ｂ、図３Ｃはそれぞれ、アプリケーション、メモリデバイス及びコントローラを動作させる方法５６、５８及び６０を図示している。方法５６、５８及び６０は、マシン又はコンピュータ読取可能メモリ内に記憶される論理命令のセットとして実行可能ソフトウェアのモジュールとして実装されてよい。そのようなマシン又はコンピュータ読取可能メモリは、例えばプログラム可能論理アレイ（ＰＬＡ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、結合プログラム可能論理回路（ＣＰＬＤ）のような構成可能ロジックで、例えば特定用途向け集積回路（ＡＳＩＣ）、相補型ＭＯＳ（ＣＭＯＳ）又はトランジスタ−トランジスタ論理回路（ＴＴＬ）技術のような回路技術を使用する固定機能の論理ハードウェア又はこれらの任意の組合せによる、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、プログラム可能ＲＯＭ（ＰＲＯＭ）、ファームウェア、フラッシュメモリ等である。
【００１２】
特に図３Ａを参照すると、方法５６は、例えばアプリケーション１０（図１）、第１のアプリケーション２２（図２）、第２のアプリケーション４８（図２）等のうちの１つ以上のような、アプリケーションへ組み込まれ得る。図示される処理ブロック６２は、グラフィクスワークロードを作成することを提供し、ブロック６４において、グラフィクスワークロードは、ワークキューにサブミットされ得る。ブロック６６は、そのアプリケーションに割り当てられるドアベルへ書込みを行うか、他の方法でそのドアベルをトリガし、システムにグラフィクスワークロードの可用性についてアラートを出すことができる。
【００１３】
特に図３Ｂを参照すると、方法５８は、例えば既に述べたモニタ３２（図２）のようなメモリデバイスモニタへ組み込まれ得る。図示される例では、ブロック６８は、キャッシュライン書込みのようなドアベルのトリガを検出し、ブロック７０において、そのドアベルに関連付けられるアプリケーションを特定する。アプリケーションはシステムレベル特権を持っていなくてよい。図示されるブロック７２は、特定されたアプリケーションによるワークロード・サブミッションの通知を、システムレベル特権を有するコントローラへ直接発行する。
【００１４】
特に図３Ｃを参照すると、方法６０は、例えばコントローラ１２（図１）、コントローラ３４（図２）等のようなコントローラへ組み込まれ得る。図示される処理ブロック７４は、システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知（例えばＤＰＣ、割込み）を受け取ることを提供する。一般に、システムレベル特権を有するコントローラを使用して、ワークロード・サブミッションを、実行のためにグラフィクスハードウェアコンポーネントへ転送することができる。より具体的には、ブロック７６において、アプリケーションに関連付けられるワークキューからワークロード・サブミッションを取り出すことができ、ブロック７８において、ワークロード・サブミッションを解析して、１つ以上のコマンドを取得することができる。ブロック７８は、例えば１つ以上のコマンドのうちの少なくとも１つを修正すること、上記１つ以上のコマンドに少なくとも１つのコマンドを追加すること、上記１つ以上のコマンドに優先順位を付けること等、あるいはその任意の組合せを含んでよい。加えて、ブロック８０において、上記１つ以上のコマンドを、グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加することができる。上記１つ以上のコマンドは、ブロック８２において、グラフィクスサブミッションポリシー（例えばタイマーの満了期間、ワーク完了イベント）に従って、サブミッションキューからグラフィクスハードウェアコンポーネントに転送され得る。
【００１５】
図４は、グラフィクスワークロードを管理するように構成され得るコントローラ８４を図示している。コントローラ８４は、コントローラ１２（図１）及び／又はコントローラ３４（図２）と容易に代替されてることがあり、方法６０（図３Ｃ）の１つ以上の態様を実装し得る。図示される例では、通知モジュール８６が、システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知（例えば割込み）を受け取り、スケジューラ８８（８８ａ〜８８ｄ）が、実行のために１つ以上のグラフィクスハードウェアコンポーネントへのワークロード・サブミッションの転送をスケジュールすることができる。スケジューラ８８及び／又はコントローラ８４は、システムレベル特権を有してよい。既に示したように、ワークロード・サブミッションの転送は、ＯＳ、並びにグラフィクスハードウェアコンポーネントに関連付けられるＫＭＤをバイパスすることができる。
【００１６】
一例において、スケジューラ８８は、アプリケーションに関連付けられるワークキューからワークロード・サブミッションを取り出す、取出しモジュール８８ａと、ワークロード・サブミッションを解析してコマンドを取得するパーサ８８ｂを含む。パーサ８８ｂは、例えばコマンドを修正し、コマンドを追加し、コマンドに優先順位を付けること等ができる。スケジューラ８８は、１つ以上のグラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューにコマンドを追加するエンキューコンポーネント８８ｃと、グラフィクスサブミッションポリシーに従って、コマンドをサブミッションキューから１つ以上のグラフィクスハードウェアコンポーネントに転送するデキューコンポーネント８８ｄも含み得る。グラフィクスサブミッションポリシーは、例えばタイマーが有効期間を満了しているかどうかを判断すること、ワーク完了イベントが起きたかどうかを判断すること等を含み得る。加えて、システムメモリレイテンシに対する影響を軽減するよう、通知モジュール８６及び／又はスケジューラ８８を動作させるファームウェア／コード及び必要なデータ構造が、内部の静的ランダムアクセスメモリ（ＳＲＡＭ）９０又は他の適切なメモリに記憶され得る。コントローラ８４は、グラフィクスワークロードの管理操作を容易にするように、タイマー９１、メモリマップ入出力（ＭＭＩＯ）９３、ページテーブル９５等も含み得る。
【００１７】
次に図５に移ると、コンピューティングシステム９２が図示されている。システム９２は、ラップトップ、モバイルインターネットデバイス（ＭＩＤ）、パーソナルデジタルアシスタント（ＰＤＡ）、メディアプレーヤ、イメージングデバイス、ウェアラブルコンピュータ等のモバイルプラットフォームの一部、スマートフォンやスマートタブレット、スマートＴＶ（テレビジョン）等のような任意のスマートデバイス、あるいはこれらの任意の組合せであってよい。また、システム９２は、パーソナルコンピュータ（ＰＣ）、サーバ、ワークステーション等のような固定のプラットフォームの一部であってもよい。図示されるシステム９２は、システムメモリ９８へのアクセスを提供する統合メモリコントローラ（ｉＭＣ：integrated  memory  controller）９６を有する中央処理ユニット（ＣＰＵ、例えばホストプロセッサ）９４を含む。システムメモリ９８は、例えばダブルデータレート（ＤＤＲ）同期動的ランダムアクセスメモリ（ＳＤＲＡＭ、例えばＤＤＲ３  ＳＤＲＡＭ  ＪＥＤＥＣ規格ＪＥＳＤ７９−３Ｃ、２００８年４月）モジュールを含み得る。システムメモリ９８のモジュールは、例えばシングルインライン・メモリモジュール（ＳＩＭＭ）、デュアルインライン・メモリモジュール（ＤＩＭＭ）、スモールアウトラインＤＩＭＭ（ＳＯＤＩＭＭ）等に組み込まれ得る。
【００１８】
ＣＰＵ９４は、システムレベル特権を持たない１つ以上の実行アプリケーション１０２によってロードされる１つ以上のユーザモード・ドライバ（ＵＭＤ）１００、並びに１つ以上のプロセッサコア（図示せず）も有してよく、各コアは、命令フェッチユニット、命令デコーダ、レベル１（Ｌ１）キャッシュ、実行ユニット等とともに十分に機能的であり得る。一例では、アプリケーション１０２及び／又はＵＭＤ１００は、グラフィクスワークロードを作成して、該グラフィクスワークロードをワークキューにサブミットし、関連付けられるドアベルへ書き込む／ドアベルをトリガするように構成される。あるいは、ＣＰＵ９４は、システム９２内のコンポーネントの各々を相互接続するフロントサイドバス又はポイントツーポイントファブリックを介して、ノースブリッジとしても知られるｉＭＣ９６のオフチップバリエーションと通信してもよい。一例において、ｉＭＣ９６は、例えばドアベルのトリガを検出し、ドアベルのトリガに関連付けられるアプリケーションを特定し、特定されたアプリケーションによるワークロード・サブミッションの通知を、システムレベル特権を有するコントローラ８４に直接発行するように構成される、モニタ３２（図２）のようなモニタを含む。また、ＣＰＵ９４はオペレーティングシステム（ＯＳ）１０４を実行してもよい。
【００１９】
図示されるＣＰＵ９４は、バスを介して、サウスブリッジとしても知られる入出力（ＩＯ）モジュール１０６と通信する。ｉＭＣ９６／ＣＰＵ９４及びＩＯモジュールは、時々チップセットと呼ばれることがある。ＣＰＵ９４は、ネットワークポートを介して、ＩＯモジュール１０６及び様々な他のコントローラ１０８を通して、ネットワーク（図示せず）に動作可能に接続されることもある。したがって、他のコントローラ１０８は、有線通信又は無線通信のような広範な目的のためにオフプラットフォームの通信機能を提供することができる。そのような通信は、これらに限られないが、携帯電話（例えば広帯域符号分割多重アクセス、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）電話技術目的を含む。また、ＩＯモジュール１０６はディスプレイ１１０と通信して、ビデオ、画像及び他のコンテンツの視覚的出力／プレゼンテーションも提供し得る。また、他のコントローラ１０８はＩＯモジュール１０６と通信し、ユーザがシステム９２とやり取りをし、システム９２からの情報を認識することを可能にするために、キーパッド、マウス等のようなユーザインタフェースデバイス（図示せず）のためのサポートを提供することもできる。
【００２０】
ＩＯモジュール１０６は、ＵＳＢ（ユニバーサルシリアルバス、例えばＵＳＢ仕様2.0、USB  Implementer  Forum）、シリアルＡＴＡ（ＳＡＴＡ、例えばＳＡＴＡ  Rev.3.0仕様、2009年5月27日、SATA-IO（SATA  International  Organization））、ハイディフィニション・オーディオ及び他のコントローラといった、内部コントローラ（図示せず）も有することがある。図示されるＩＯモジュール１０６は、ハードドライブ１１２、読取専用メモリ（ＲＯＭ）、光ディスク、フラッシュメモリ（図示せず）等を含み得るストレージにも結合される。
【００２１】
図示されるシステム９２は、専用のグラフィクスメモリ１１６に結合される専用のグラフィック処理ユニット（ＧＰＵ、グラフィクスプロセッサ）１１４も含む。専用のグラフィクスメモリ１１６は、例えばＧＤＤＲ（グラフィクスＤＤＲ）又はＤＤＲ  ＳＤＲＡＭモジュール、あるいはグラフィクスレンダリングをサポートするのに適した任意の他のメモリ技術を含み得る。ＧＰＵ１１４及びグラフィクスメモリ１１６は、グラフィクス／ビデオカード上にインストールされてもよく、ＧＰＵ１１４は、ＰＣＩエクスプレスグラフィクス（ＰＥＧ、例えば周辺コンポーネント相互接続／PCI  Express  xl6  Graphics  150W-ATX仕様1.0、PCI  Special  Interest  Group）バス又はアクセラレイテッド・グラフィクスポート（例えばＡＧＰ  V3.0インタフェース仕様、2002年9月）バスといったグラフィクスバス１１８を介してＣＰＵ９４と通信してもよい。グラフィクスカード及び／又はＧＰＵ１１４は、システムマザーボード上に統合されるか、（例えば統合ＧＰＵ／ｉＧＰＵ構成で）メインＣＰＵ９４ダイへ統合されてもよく、マザーボード上の別個のカード等として構成されてもよい。また、ＣＰＵ９４はカーネルモード・ドライバ（ＫＭＤ）１２０を実行してもよく、ＧＰＵ１１４は、グラフィクスパイプライン１２２及び内部キャッシュ１２４を含み、命令及び他のデータを記憶する。
【００２２】
あるいは、ＧＰＵ１１４は、専用のグラフィクスメモリを持たず、代わりにＣＰＵ９４とシステムメモリ９８を共有してもよい。そのような構成は、ＧＰＵ１１４及びＣＰＵ９４が同じダイの一部である（かつ、例えば適切なインタフェースを通して接続される）統合グラフィクスアーキテクチャのために使用される可能性がある。
【００２３】
図示されるＧＰＵ１１４は、ワークロード・サブミッションの通知を受け取り、例えばグラフィクスパイプライン１２２のようなグラフィクスハードウェアコンポーネントへのワークロード・サブミッションの転送をスケジュールするように構成され得る、コントローラ８４も含む。この転送は、ＯＳ１０４並びにＫＭＤ１２０をバイパスすることができる。加えて、コントローラ８４はＧＰＵ１１４上に存在するものとして図示されているが、コントローラ８４は、代わりに、例えばＣＰＵ９４上又は別のチップ上のように、システム９２内の他の場所に配置されてもよい。
【００２４】
図６は、システム７００の実施形態を図示する。実施形態において、システム７００はメディアシステムであってよいが、システム７００はこのコンテキストには限定されない。例えばシステム７００は、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パルムトップコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、携帯電話／ＰＤＡの組合せ、テレビ、スマートデバイス（例えばスマートフォン、スマートタブレット又はスマートテレビ）、モバイルインターネットデバイス（ＭＩＤ）、メッセージングデバイス、データ通信デバイス等に組み込まれることがある。
【００２５】
実施形態において、システム７００は、視覚コンテンツを提示するディスプレイ７２０に結合されるプラットフォーム７０２を備える。プラットフォーム７０２は、コンテンツサービスデバイス７３０又はコンテンツ配信デバイス７４０等のコンテンツデバイスから、あるいは他の同様のコンテンツソースからビデオビットストリームコンテンツを受け取ることができる。１つ以上のナビゲーション機能を備えるナビゲーションコントローラ７５０を使用して、例えばプラットフォーム７０２及び／又はディスプレイ７２０とやり取りをすることができる。これらのコンポーネントの各々は以下で更に詳細に説明される。
【００２６】
実施形態において、プラットフォーム７０２は、チップセット７０５、プロセッサ７１０、メモリ７１２、ストレージ７１４、グラフィクスサブシステム７１５、アプリケーション７１６及び／又は無線機７１８（例えばネットワークコントローラ）の任意の組合せを備え得る。チップセット７０５は、プロセッサ７１０、メモリ７１２、ストレージ７１４、グラフィクスサブシステム７１５、アプリケーション７１６及び／又は無線機７１８の中の相互通信を提供することができる。例えばチップセット７０５は、ストレージ７１４との相互通信を提供する能力を有するストレージアダプタ（図示せず）を含み得る。
【００２７】
プロセッサ７１０は、複合命令セットコンピュータ（ＣＩＳＣ）又は縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ、ｘ８６命令セット互換プロセッサ、マルチコア又は任意の他のマイクロプロセッサ又は中央処理ユニット（ＣＰＵ）として実装され得る。実施形態において、プロセッサ７１０は、デュアルコアプロセッサ、デュアルコアモバイルプロセッサ等を備え得る。
【００２８】
メモリ７１２は、これらに限られないが、ランダムアクセスメモリ（ＲＡＭ）、動的ランダムアクセスメモリ（ＤＲＡＭ）又は静的ＲＡＭ（ＳＲＡＭ）のような揮発性メモリとして実装され得る。
【００２９】
ストレージ７１４は、これらに限られないが、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部ストレージデバイス、外付けストレージデバイス、フラッシュメモリ、バッテリバックアップＳＤＲＡＭ（同期ＤＲＡＭ）及び／又はネットワークアクセス可能ストレージデバイスのような不揮発性ストレージデバイスとして実装され得る。実施形態において、ストレージ７１４は、例えば複数のハードドライブが含まれるとき、価値あるデジタルメディアのためにストレージ性能の高度保護を向上させる技術を備え得る。
【００３０】
グラフィクスサブシステム７１５は、表示のために静止画又はビデオのような画像の処理を実行することができる。グラフィクスサブシステム７１５は、例えばグラフィック処理ユニット（ＧＰＵ）又はビジュアル処理ユニット（ＶＰＵ）であり得る。グラフィクスサブシステム７１５は、したがって、既に述べたＧＰＵ１１４（図５）を含み得る。加えて、プロセッサ７１０は、既に述べたＣＰＵ９４（図５）を含むように構成され得る。アナログ又はデジタルインタフェースは、グラフィクスサブシステム７１５及びディスプレイ７２０に通信可能に結合するのに使用され得る。例えばインタフェースは、高精細度マルチメディアインタフェース（ＨＤＭＩ（登録商標））、ＭＩＰＩ（登録商標）（Mobile  Industry  Processor  Interface）、ＷｉＧＩＧ（登録商標）（Wireless  Gigabit  Alliance）、ディスプレイポート、無線ＨＤＭＩ（登録商標）及び／又は無線ＨＤ準拠技術のいずれかとすることができる。グラフィクスサブシステム７１５は、プロセッサ７１０又はチップセット７０５に統合されてもよい。グラフィクスサブシステム７１５は、チップセット７０５に通信可能に結合されるスタンドアロンカードであってもよい。
【００３１】
本明細書で説明されるグラフィクス及び／又はビデオ処理技術は、様々なハードウェアアーキテクチャで実装され得る。例えばグラフィクス及び／又はビデオ機能はチップセット内に統合されてもよい。あるいは、別個のグラフィクス及び／又はビデオプロセッサを使用してもよい。更に別の実施形態として、グラフィクス及び／又はビデオ機能は、マルチコアプロセッサを含め、汎用プロセッサによって実装されてもよい。更なる実施形態では、上記機能は家庭用電子デバイスで実装されてもよい。
【００３２】
無線機７１８は、様々な適切な信号通信技術を使用して信号を送受信することができる１つ以上の無線機を含む、ネットワークコントローラであり得る。そのような技術は、１つ以上の無線ネットワークにまたがる通信を伴うことがある。例示の無線ネットワークは、（これらに限定されないが）無線ローカルエリアネットワーク（ＷＬＡＮ）、無線パーソナルエリアネットワーク（ＷＰＡＮ）、無線メトロポリタンエリアネットワーク（ＷＭＡＮ）、セルラネットワーク及び衛星ネットワークを含む。そのようなネットワークにまたがって通信する際に、無線機７１８は、任意のバージョンの１つ以上の適用可能な規格に従って動作し得る。
【００３３】
実施形態において、ディスプレイ７２０は、任意のテレビ型のモニタ又はディスプレイを備え得る。ディスプレイ７２０は、例えばコンピュータディスプレイ画面、タッチスクリーンディスプレイ、ビデオモニタ、テレビのようなデバイス及び／テレビを備え得る。ディスプレイ７２０は、デジタル及び／又はアナログであり得る。実施形態において、ディスプレイ７２０は、ホログラフィクスディスプレイであってよい。また、ディスプレイ７２０は、視覚的投影（visual  projection）を受け取る透明な面であってもよい。そのような投影は、様々な形の情報、画像及び／又は物体を伝達することができる。例えばそのような投影は、モバイル拡張現実（ＭＡＲ）アプリケーションのための視覚的オーバーレイであってよい。１つ以上のソフトウェアアプリケーション７１６の制御下において、プラットフォーム７０２は、ディスプレイ７２０上にユーザインタフェース７２２を表示することができる。
【００３４】
実施形態において、コンテンツサービスデバイス７３０は、いずれかの国、国際的及び／又は独立のサービスによってホストされ、したがって、例えばインターネットを介してプラットフォーム７０２に対してアクセス可能であり得る。コンテンツサービスデバイス７３０は、プラットフォーム７０２及び／又はディスプレイ７２０に結合され得る。プラットフォーム７０２及び／又はコンテンツサービスデバイス７３０はネットワーク７６０に結合され、ネットワーク７６０との間でメディア情報を通信（例えば送信及び／又は受信）し得る。コンテンツ配信デバイス７４０は、プラットフォーム７０２及び／又はディスプレイ７２０にも結合され得る。
【００３５】
実施形態において、コンテンツサービスデバイス７３０は、デジタル情報及び／又はコンテンツを配信することができる、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、インターネット対応デバイス又は機器、並びにコンテンツプロバイダとプラットフォーム７０２及び／又はディスプレイ７２０との間で一方向又は双方向にネットワーク７６０を介して又は直接的にコンテンツを通信することができる任意の他の同様のデバイスを備え得る。コンテンツは、コンテンツプロバイダ及びシステム７００内のコンポーネントのうちのいずれか１つへ及びそのいずれか１つから、ネットワーク７６０を介して一方向及び／又は双方向で通信され得ることが認識されよう。コンテンツの例は、例えばビデオ、音楽、医療及びゲーム情報等を含め、任意のメディア情報を含み得る。
【００３６】
コンテンツサービスデバイス７３０は、メディア情報、デジタル情報及び／又は他のコンテンツを含め、ケーブルテレビ番組のようなコンテンツを受け取る。コンテンツプロバイダの例は、任意のケーブル又は衛星テレビ又はラジオ又はインターネットコンテンツプロバイダを含み得る。提供される例は、実施形態を限定するように意図されていない。
【００３７】
実施形態において、プラットフォーム７０２は、１つ以上のナビゲーション機能を有するナビゲーションコントローラ７５０から制御信号を受け取ることができる。コントローラ７５０のナビゲーション機能は、例えばユーザインタフェース７２２とやり取りするのに使用され得る。実施形態において、ナビゲーションコントローラ７５０は、ポインティングデバイスであってよい。ポインティングデバイスは、ユーザが空間（例えば連続的で多次元の）データをコンピュータへ入力することを可能にする、（コンピュータハードウェアコンポーネント（特にヒューマンインタフェースデバイス）であり得る。グラフィカルユーザインタフェース（ＧＵＩ）及びテレビとモニタのような多くのシステムは、ユーザが、身体的ジェスチャを使用してコンピュータ又はテレビへのデータを制御及び提供することを可能にする。
【００３８】
コントローラ７５０のナビゲーション機能の動きは、ディスプレイ（例えばディスプレイ７２０）上で、このディスプレイ上に表示されるポインタ、カーソル、フォーカスリング又は他の視覚的インジケータの動きによって反射（echo）され得る。例えばソフトウェアアプリケーション７１６の制御下において、ナビゲーションコントローラ７５０上に置かれるナビゲーション機能は、例えばユーザインタフェース７２２上に表示される仮想ナビゲーション機能にマップされ得る。実施形態において、コントローラ７５０は、別個のコンポーネントではなく、プラットフォーム７０２及び／又はディスプレイ７２０に統合されてもよい。しかしながら、実施形態は、本明細書で図示及び説明される要素又はコンテキストに限定されない。
【００３９】
実施形態において、ドライバ（図示せず）は、例えばイネーブルされると、初期ブートアップ後に、ボタンのタッチによりユーザが、プラットフォーム７０２のようなテレビをすぐにターンオン及びターンオフすることを可能にする技術を備え得る。プログラムロジックは、プラットフォーム７０２がターン「オフ」されるときに、該プラットフォーム７０２が、メディア・アダプタ又は他のコンテンツサービスデバイス７３０又はコンテンツ配信デバイス７４０にコンテンツをストリームすることを可能にする。加えて、チップセット７０５は、例えば５．１サラウンドサウンドオーディオ及び／又は高精細度の７．１サラウンドサウンドオーディオのためのハードウェア及び／又はソフトウェアサポートを備え得る。ドライバは、一体型グラフィクスプラットフォームのためのグラフィクスドライバを含み得る。実施形態において、グラフィクスドライバは、周辺コンポーネント相互接続（ＰＣＩ）エクスプレスグラフィクスカードを備え得る。
【００４０】
様々な実施形態では、システム７００内に示されるコンポーネントのいずれか１つ以上を統合してもよい。例えばプラットフォーム７０２とコンテンツサービスデバイス７３０を統合してもよく、プラットフォーム７０２とコンテンツ配信デバイス７４０を統合してもよく、あるいはプラットフォーム７０２と、コンテンツサービスデバイス７３０と、コンテンツ配信デバイス７４０を統合してもよい。様々な実施形態では、プラットフォーム７０２とディスプレイ７２０は一体型ユニットであってよい。例えばディスプレイ７２０とコンテンツサービスデバイス７３０を統合してもよく、ディスプレイ７２０とコンテンツ配信デバイス７４０を統合してもよい。これらの例は範囲を限定するように意図されていない。
【００４１】
様々な実施形態において、システム７００は、無線システム、有線システム又はその双方の組合せとして実装され得る。無線システムとして実装されるとき、システム７００は、１つ以上のアンテナ、トランスミッタ、レシーバ、トランシーバ、増幅器、フィルタ、制御ロジック等のように、無線共有媒体上での通信に適したコンポーネント及びインタフェースを含む。無線共有媒体の例には、ＲＦスペクトル等のような無線スペクトルの部分が含まれ得る。有線システムとして実装されるとき、システム７００は、入出力（Ｉ／Ｏ）アダプタ、対応する有線通信媒体を有するＩ／Ｏアダプタに接続する物理コネクタ、ネットワークインタフェースカード（ＮＩＣ）、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ等のように、有線通信媒体上での通信に適したコンポーネント及びインタフェースを含み得る。有線通信媒体の例には、ワイヤ、ケーブル、金属リード、プリント基板（ＰＣＢ）、バックプレーン、スイッチファブリック、半導体物質、ツイストペアワイヤ、同軸ケーブル、光ファイバ等が含まれ得る。
【００４２】
プラットフォーム７０２は、１つ以上の論理又は物理チャネルを確立して情報を通信してもよい。この情報には、メディア情報及び制御情報が含まれ得る。メディア情報は、ユーザ向けのコンテンツを表す任意のデータを指し得る。コンテンツの例は、音声会話からのデータ、ビデオ会議、ストリーミングビデオ、電子メール（「ｅｍａｉｌ」）メッセージ、ボイスメールメッセージ、英数字記号、グラフィック、画像、ビデオ、テキスト等を含み得る。音声会話からのデータは、例えばスピーチ情報、沈黙期間、背景雑音、快適雑音、トーン等を含み得る。制御情報は、自動システム向けのコマンド、命令又は制御ワードを表す任意のデータを指し得る。例えば制御情報は、システムを通してメディア情報をルーティングし、メディア情報を所定の方法で処理するようノードに命令するのに使用され得る。しかしながら、実施形態は、図６に図示又は説明される要素及びそのコンテキストに限定されない。
【００４３】
上述のように、システム７００は、様々な物理的スタイル又はフォームファクタで具現化され得る。図７は、システム７００が具現化され得る小さなフォームファクタデバイス８００の実施形態を図示する。実施形態では、例えばデバイス８００は、無線能力を有するモバイルコンピューティングデバイスとして実装され得る。モバイルコンピューティングデバイスは、処理システムと、例えば１つ以上のバッテリのようなモバイル電源又は電力供給とを有する任意のデバイスを指し得る。
【００４４】
上述のように、モバイルコンピューティングデバイスの例には、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パルムトップコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、携帯電話／ＰＤＡの組合せ、テレビ、スマートデバイス（例えばスマートフォン、スマートタブレット又はスマートテレビ）、モバイルインターネットデバイス（ＭＩＤ）、メッセージングデバイス、データ通信デバイス等が含まれ得る。
【００４５】
モバイルコンピューティングデバイスの例には、人によって装着されるように構成されるコンピュータ、例え手首用コンピュータ、指用コンピュータ、指輪コンピュータ、眼鏡コンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、靴用コンピュータ、衣服用コンピュータ及び他のウェアラブルコンピュータを含み得る。実施形態では、例えばモバイルコンピューティングデバイスは、コンピュータアプリケーションだけでなく、音声通信及び／又はデータ通信を実行することができるスマートフォンとして実装され得る。一部の実施形態は、例としてスマートフォンとして実装されるモバイルコンピューティングデバイスを用いて説明され得るが、他の実施形態は、同様に他の無線モバイルコンピューティングデバイスを使用して実装されてもよいことが認識され得る。実施形態は、このコンテキストに限定されない。
【００４６】
図７に図示されるように、デバイス８００は、ハウジング８０２、ディスプレイ８０４、入出力（Ｉ／Ｏ）デバイス８０６及びアンテナ８０８を備え得る。デバイス８００は、ナビゲーション機能８１２も備えることができる。ディスプレイ８０４は、モバイルコンピューティングデバイスに適切な情報を表示するための任意の適切なＩ／Ｏデバイスを備え得る。Ｉ／Ｏデバイス８０６の例は、英数字キーボード、数字キーボード、タッチパッド、入力キー、ボタン、スイッチ、ロッカースイッチ、マイクロフォン、スピーカ、音声認識デバイス及びソフトウェア等を含み得る。マイクロフォンによって情報がデバイス８００に入力されてもよい。そのような情報は、音声認識デバイスによってデジタル化され得る。実施形態は、このコンテキストに限定されない。
【００４７】
附記及び実施例：
例１は、グラフィクスワークロードを管理するためのシステムを含み、当該システムは、グラフィクスハードウェアコンポーネントと、システムレベル特権を持っていないアプリケーションを実行するホストプロセッサと、アプリケーションによるワークロード・サブミッションの通知を発行するメモリデバイスと、コントローラを備える。コントローラは、ワークロード・サブミッションの通知を受け取る通知モジュールと、実行のためにグラフィクスハードウェアコンポーネントへのワークロード・サブミッションの転送をスケジュールするスケジューラとを含み得る。
【００４８】
例２は、例１のシステムを含んでよく、上記の転送は、ホストプロセッサに関連付けられるオペレーティングシステムをバイパスする。
【００４９】
例３は、例１のシステムを含んでよく、上記の転送は、グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする。
【００５０】
例４は、例１のシステムを含んでよく、上記の通知は割込みである。
【００５１】
例５は、例１乃至例４のいずれか１つのシステムを含んでよく、スケジューラは、アプリケーションに関連付けられるワークキューからワークロード・サブミッションを取り出す、取出しコンポーネントと、ワークロード・サブミッションを解析して１つ以上のコマンドを取得するパーサと、１つ以上のコマンドを、グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加する、エンキューコンポーネントと、グラフィクスサブミッションポリシーに従って、サブミッションキューからグラフィクスハードウェアコンポーネントへ１つ以上のコマンドを転送する、デキューコンポーネントとを含む。
【００５２】
例６は、例５のシステムを含んでよく、パーサは、１つ以上のコマンドのうちの少なくとも１つを修正し、１つ以上のコマンドに少なくとも１つのコマンドを追加し、１つ以上のコマンドに優先順位を付ける。
【００５３】
例７は、コントローラを動作させる方法を含み、当該方法は、コントローラにおいて、システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知を受け取るステップと、コントローラを使用して、実行のためにグラフィクスハードウェアコンポーネントへのワークロード・サブミッションの転送をスケジュールするステップとを備え、コントローラはシステムレベル特権を有する。
【００５４】
例８は、例７の方法を含んでよく、上記の転送は、オペレーティングシステムをバイパスする。
【００５５】
例９は、例７の方法を含んでよく、上記の転送は、グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする。
【００５６】
例１０は、例７の方法を含んでよく、上記の通知は割込みである。
【００５７】
例１１は、例７乃至例１０のいずれか１つの方法を含んでよく、コントローラを使用して、転送をスケジュールするステップは、アプリケーションに関連付けられるワークキューからワークロード・サブミッションを取り出すステップと、ワークロード・サブミッションを解析して１つ以上のコマンドを取得するステップと、１つ以上のコマンドを、グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加するステップと、グラフィクスサブミッションポリシーに従って、サブミッションキューからグラフィクスハードウェアコンポーネントへ１つ以上のコマンドを転送するステップを含む。
【００５８】
例１２は、例１１の方法を含んでよく、ワークロード・サブミッションを解析することは、１つ以上のコマンドのうちの少なくとも１つを修正するステップと、１つ以上のコマンドに少なくとも１つのコマンドを追加するステップと、１つ以上のコマンドに優先順位を付けるステップを含む。
【００５９】
例１３は、グラフィクスワークロードを管理するコントローラを含み、当該コントローラは、システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知を受け取る通知モジュールと、実行のためにグラフィクスハードウェアコンポーネントへのワークロード・サブミッションの転送をスケジュールするスケジューラであって、システムレベル特権を有するスケジューラとを備える。
【００６０】
例１４は、例１３のコントローラを含んでよく、上記の転送は、オペレーティングシステムをバイパスする。
【００６１】
例１５は、例１３のコントローラを含んでよく、上記の転送は、グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする。
【００６２】
例１６は、例１３のコントローラを含んでよく、上記の通知は割込みである。
【００６３】
例１７は、例１３乃至例１６のいずれか１つのコントローラを含んでよく、スケジューラは、アプリケーションに関連付けられるワークキューからワークロード・サブミッションを取り出す、取出しコンポーネントと、ワークロード・サブミッションを解析して１つ以上のコマンドを取得するパーサと、１つ以上のコマンドを、グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加する、エンキューコンポーネントと、グラフィクスサブミッションポリシーに従って、サブミッションキューからグラフィクスハードウェアコンポーネントへ１つ以上のコマンドを転送する、デキューコンポーネントとを含む。
【００６４】
例１８は、例１７のコントローラを含んでよく、パーサは、１つ以上のコマンドのうちの少なくとも１つを修正し、１つ以上のコマンドに少なくとも１つのコマンドを追加し、１つ以上のコマンドに優先順位を付ける。
【００６５】
例１９は、コントローラによって実行されると、該コントローラに、システムレベル特権を持っていないアプリケーションによるワークロード・サブミッションの通知を受け取らせ、実行のためにグラフィクスハードウェアコンポーネントへのワークロード・サブミッションの転送をスケジュールさせる命令のセットを備える、少なくとも１つのコンピュータ読取可能記憶媒体を含み、上記において、コントローラはシステムレベル特権を有する。
【００６６】
例２０は、例１９の少なくとも１つのコンピュータ読取可能記憶媒体を含んでよく、上記の転送は、オペレーティングシステムをバイパスする。
【００６７】
例２１は、例１９の少なくとも１つのコンピュータ読取可能記憶媒体を含んでよく、上記の転送は、グラフィクスハードウェアコンポーネントに関連付けられるカーネルモード・ドライバをバイパスする。
【００６８】
例２２は、例１９の少なくとも１つのコンピュータ読取可能記憶媒体を含んでよく、上記の通知は割込みである。
【００６９】
例２３は、例１９乃至例２２のいずれか１つの少なくとも１つのコンピュータ読取可能記憶媒体を含んでよく、上記の命令は、実行されると、コントローラに、アプリケーションに関連付けられるワークキューからワークロード・サブミッションを取り出させ、ワークロード・サブミッションを解析して１つ以上のコマンドを取得させ、１つ以上のコマンドを、グラフィクスハードウェアコンポーネントに関連付けられるサブミッションキューに追加させ、グラフィクスサブミッションポリシーに従って、サブミッションキューからグラフィクスハードウェアコンポーネントへ１つ以上のコマンドを転送させる。
【００７０】
例２４は、例２３の少なくとも１つのコンピュータ読取可能記憶媒体を含んでよく、上記の命令は、実行されると、コントローラに、１つ以上のコマンドのうちの少なくとも１つを修正させ、１つ以上のコマンドに少なくとも１つのコマンドを追加させ、１つ以上のコマンドに優先順位を付けさせる。
【００７１】
例２５は、例７乃至例１２のいずれかの方法を実行するための手段を備える、グラフィクスワークロードを管理するコントローラを含み得る。
【００７２】
本明細書で説明される技術は、したがって、ＧＰＵスケジューリングをＯＳ及びカーネルモード・ドライバからオフロードすることができる。そのようなアプローチは、ユーザモードアプリケーションに対する特権昇格を引き起こすことなく、低ディスパッチオーバヘッド／レイテンシ、進歩したタスク処理／キュー処理オプション（例えば順番を問わない実行、ＧＰＵベースのサブミッション／プリエンプション（preemption）／再エンキュー）等を提供することができる。加えて、ＯＳが必要とされるセマンティクス（OS  required  semantics）（例えば順番通りの要件）及び他のＯＳサポート機能を保ちつつ、従来的なＯＳ／ドライバ経路を通してサブミットされるレガシーワークロードをサポートすることができる。さらに、優先順位に基づくスケジューリングオプションは、高い優先順位の作業（ワーク）がより早く実行されることを可能にし、（直接及びＯＳサブミッションのインタリーブを含め）全てのコンテキストの間で公平なスケジューリングを達成することができる。加えて、ＫＭＤとの制御インタフェースは、コンテキストデータの共有、不十分なハードウェアリソースの仮想化、破損及び／又はクラッシュしたアプリケーションを含む「エッジケース」の対処等を管理することができる。これらの技術は、レイテンシの目標に合致し、かつファームウェアが十分なＧＰＵ利用を達成することに関する制限要因でないことを保証するように、コントローラ上のファームウェアの低い実行オーバヘッドも可能にすることができる。実際、最小限のワークロード解析と、コード及びキーデータ構造を記憶するためにコントローラに対して内部にあるＳＲＡＭの使用は、システムメモリのレイテンシを低減することができる。
【００７３】
様々な実施形態が、ハードウェア要素、ソフトウェア要素又はその双方の組合せを使用して実装され得る。ハードウェア要素の例には、プロセッサ、マイクロプロセッサ、回路、回路要素（例えばトランジスタ、レジスタ、キャパシタ、インダクタ等）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラム可能論理デバイス（ＰＬＤ）、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等が含まれ得る。ソフトウェアの例には、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラミングインタフェース（ＡＰＩ）、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル又はこれらの任意の組合せが含まれ得る。実施形態が、ハードウェア要素及び／又はソフトウェア要素を使用して実装されるかどうかを判断することは、所望の演算レート、電力レベル、熱耐性、処理サイクル量、入力データレート、出力データレート、メモリリソース、データバス・スピード及び他の設計的又は性能的制約といった、任意の数のファクタに従って変化し得る。
【００７４】
少なくとも１つの実施形態の１つ以上の態様は、マシンによって読み出されると、該マシンに、本明細書で説明される技術を実行するロジックを作成させる様々なロジックを表す、マシン読取可能媒体上に記憶される表現的命令によって実装され得る。「ＩＰコア」としても知られるそのような表現は、有形のマシン読取可能媒体上に記憶され、ロジック又はプロセッサを実際に作る作成マシンにロードするよう様々な顧客又は製造施設に供給され得る。
【００７５】
実施形態は、全てのタイプの半導体集積回路（「ＩＣ」）チップとの使用に適用可能である。これらのＩＣチップの例には、これらに限られないが、プロセッサ、コントローラ、チップセットコンポーネント、プログラマブルゲートアレイ（ＰＬＡ）、メモリチップ、ネットワークチップ等が含まれる。加えて、図面の一部では、信号導体線が線で表されている。幾つかは、更なる構成信号経路を示すように異なっていることがあり、構成信号経路の数を示すように数字のラベルを有することがあり、かつ／又は主な情報の流れの方向を示すように１つ以上の端部で矢印を有することがある。しかしながら、これは限定的に解釈されるべきではない。むしろ、そのような付加的な詳細は、１つ以上の例示の実施形態との関連で、回路のより容易な理解を促進するように用いられ得る。表された全ての信号線は、付加的情報を有しているか否かに関わらず、複数の方向に進み得る１つ以上の信号を実際に備えていることがあり、任意の適切なタイプの信号スキーム、例えば差動ペア（differential  pair）で実装されるデジタル若しくはアナログ線、光ファイバ線及び／又はシングルエンド線で実装されてもよい。
【００７６】
例示のサイズ／モデル／値／範囲が与えられていることがあるが、実施形態はこれらに限定されない。製造技術（例えばフォトリソグラフィー）が時間とともに成熟するにつれて、より小さいサイズのデバイスが製造され得ることが予期される。加えて、ＩＣチップ及び他のコンポーネントへの周知の電力／接地接続は、図示及び議論の簡潔性のため、そして実施形態の特定の態様をあいまいにしないように、図面に示されていることも、示されていないこともある。さらに、実施形態をあいまいにすることを避けるため、ブロック図の配置構成の実装に関する詳細は、実施形態が実装されることになるプラットフォームに多いに依存するという事実に鑑みて、配置構成がブロック図の形で示されていることがある。すなわち、そのような詳細は十分に当業者の視野の範囲内にあるはずである。例示の実施形態を説明するために特定の詳細が（例えば回路）が順番に説明されている場合、これらの特定の詳細を用いることなく、あるいはこれらの特定の詳細の変形したものを用いて実施形態を実施することが可能であることが当業者に明らかであろう。したがって、説明は、限定ではなく例示として解釈されるべきである。
【００７７】
一部の実施形態は、例えばマシンによって実行されると、該マシンに、実施形態に係る方法及び／又は動作を実行させる命令又は命令のセットを記憶することができる、マシン若しくは有形のコンピュータ読取可能媒体又は製品を使用して実装され得る。そのようなマシンは、例えば任意の適切な処理プラットフォーム、コンピューティングプラットフォーム、コンピューティングデバイス、処理デバイス、コンピューティングシステム、処理システム、コンピュータ、プロセッサ等を含んでよく、ハードウェア及び／又はソフトウェアの任意の適切な組合せを使用して実装され得る。マシン読取可能媒体又は製品は、例えば任意の適切なタイプのメモリユニット、メモリデバイス、メモリ製品、メモリ媒体、記憶デバイス、記憶製品、記憶媒体及び／又は記憶ユニット、例えばメモリ、取外し可能又は取外し不可能媒体、消去可能又は消去不可能媒体、書込み可能又は再書込み可能媒体、デジタル又はアナログ媒体、ハードディスク、フロッピーディスク、コンパクトディスク読取専用メモリ（ＣＤ−ＲＯＭ）、コンパクトディスク記録可能（ＣＤ−Ｒ）、コンパクトディスク再書込み可能（ＣＤ−ＲＷ）、光ディスク、磁気媒体、磁気光学媒体、取外し可能メモリカード又はディスク、様々なタイプのデジタル多用途ディスク（ＤＶＤ）、テープ、カセット等を含み得る。命令は、任意の適切な高レベル、低レベル、オブジェクト指向、ビジュアル、コンパイル済み及び／又は解釈済みプログラミング言語を使用して実装される、ソースコード、コンパイル済みコード、解釈済みコード、実行可能コード、静的コード、動的コード、暗号化済みコード等のような任意の適切なタイプのコードを含み得る。
【００７８】
別段の定めがない限り、「処理する」、「演算する」、「計算する」、「決定する」等のような用語は、コンピューティングシステムのレジスタ及び／メモリ内の物理量（例えば電子）として表されるデータを、コンピューティングシステムのメモリ、レジスタ又は他の上記の情報ストレージ、トランスミッション又はディスプレイデバイス内の物理量として同様に表される他のデータへと操作及び／又は変換する、コンピュータ又はコンピューティングシステム、あるいは同様の電子的コンピューティングデバイスのアクション及び／又は処理を指す。実施形態は、このコンテキストに限定されない。
【００７９】
「結合される」という用語は、問題となっているコンポーネントの間の直接又は間接的な任意のタイプの関係を指すのに使用されてよく、電気、機械、流体、光、電磁気、電気機械又は他の接続に当てはまることがある。加えて、「第１」、「第２」等の用語は、別段の定めがない限り、本明細書では単に説明を容易にするために使用され、特定の時間的又は年代的な重要性を持っていないことがある。
【００８０】
当業者には、上記の説明から、実施形態の広範な技術を様々な形で実装することができることが認識されよう。したがって、実施形態は、その特定の例との関連で説明されているが、図面、明細書及び特許請求の範囲の教示により、当業者には他の修正形態が明らかになるので、実施形態の真の範囲はそのように限定されるべきではない。
【図１】
0006419856.tif 000002
【図２】
0006419856.tif 000003
【図３Ａ】
0006419856.tif 000004
【図３Ｂ】
0006419856.tif 000005
【図３Ｃ】
0006419856.tif 000006
【図４】
0006419856.tif 000007
【図５】
0006419856.tif 000008
【図６】
0006419856.tif 000009
【図７】
0006419856.tif 000010