(58)【調査した分野】(Int.Cl.,DB名)
前記アトミックコマンドは、インラインデータとして前記ポストシンクロナイゼーションオペレーションセットを含むか、若しくは1または複数の事前にロードされたインプリシットレジスタから間接的なデータとして前記ポストシンクロナイゼーションオペレーションセットを受け付ける、請求項2に記載のシステム。
前記アトミックコマンドはリターンビットを含み、前記リターンビットが設定されている場合、前記グラフィックハードウェアフロントエンドは、前記アトミックコマンドの発信者へ読み取られたデータを戻すか、または読み取られたデータをインプリシットレジスタへ格納する、請求項2に記載のシステム。
前記グラフィックプロセッサはさらに、特別なビット表示を有する1または複数のコマンドを前記ポストシンクロナイゼーションオペレーションセットであるものとして見なすコマンドストリーマモジュールを有する、請求項1または2に記載のシステム。
前記修正オペレーションは、Add、Subtract、Increment、Decrement、Max、Min、AND、OR、XOR、またはCompareオペレーションのうち1または複数を含む、請求項7に記載のシステム。
前記アトミックコマンドは、インラインデータとして前記ポストシンクロナイゼーションオペレーションセットを含むか、若しくは1または複数の事前にロードされたインプリシットレジスタから間接的なデータとして前記ポストシンクロナイゼーションオペレーションセットを受け付ける、請求項14に記載の装置。
前記アトミックコマンドはリターンビットを含み、前記リターンビットが設定されている場合、前記グラフィックハードウェアフロントエンドは、前記アトミックコマンドの発信者へ読み取られたデータを戻すか、または読み取られたデータをインプリシットレジスタへ格納する、請求項14に記載の装置。
特別なビット表示を有する1または複数のコマンドを前記ポストシンクロナイゼーションオペレーションセットであるものとして見なすコマンドストリーマモジュールをさらに備える、請求項13または14に記載の装置。
前記修正オペレーションは、Add、Subtract、Increment、Decrement、Max、Min、AND、OR、XOR、またはCompareオペレーションのうち1または複数を含む、請求項19に記載の装置。
【発明を実施するための形態】
【0003】
図1は、グラフィックアーキテクチャにおけるコマンドを処理するアプローチを示す。図示される例において、1または複数のコマンド10により表されるワークロードは、(例えば、図示されていないホストプロセッサ/CPUに対して)高度に並列化され効率のよいやり方でコマンド10を実行するよう構成され得るグラフィックパイプライン12へ送信される。コマンド10は、ホストプロセッサ、グラフィックパイプラインを含むグラフィックプロセッサ、その他、またはこれらの何らかの組み合わせで実行されているソフトウェアドライバにより発行され得る。パイプ制御コマンド14も(例えばドライバにより)発行され得る。ここで、図示されているパイプ制御コマンド14は、ポストシンクロナイゼーションオペレーション16のセットを含むインライン部分を含む。このインラインの同期オペレーション16は、コマンド10と同様にホストによりプログラミングされ得る何らかのコマンドセットであり得る。加えて、パイプ制御コマンド14は概して、コマンド10のワークロード実行の間に遭遇される同期ポイントに関連し得る。同じくより詳細に説明されるようにアトミックコマンドおよび/またはセマフォコマンド(図示せず)も、ポストシンクロナイゼーションオペレーション16のセットを特定するために用いられ得る。
【0004】
ポストシンクロナイゼーションオペレーション16のセットを特定するためにアトミックコマンドが用いられる場合、アトミックコマンドは、インラインデータとしてポストシンクロナイゼーションオペレーション16のセットを含み得るか、若しくは1または複数の事前にロードされたインプリシットレジスタから間接的なデータとしてポストシンクロナイゼーションオペレーションセットを受け付け得る。インプリシットレジスタは、メモリ、または他の何らかのレジスタからインラインデータを含む明示的なコマンドを通じてプリロードされ得る。さらに、アトミックコマンドは、読み取られたデータが、(例えば、コマンドにおけるリターンビットに基づき)アトミックコマンドの発信者へ戻される、および/またはさらに用いられるようにインプリシットレジスタに格納されることをサポートし得る。一例において、グラフィックハードウェアフロントエンドは、リターンビットが設定されている場合、読み取られたデータをアトミックコマンドの発信者へ戻すか、または、さらに用いられるように、読み取られたデータをインプリシットレジスタに格納し得る。
【0005】
一般的に、いずれのコマンドも、即座に実行するのではなく当該コマンドをポストシンクロナイゼーションオペレーションとする、当該コマンドの特別なビットを介して渡される情報を有するポストシンクロナイゼーションオペレーションとされ得る。一例において、何らかのコマンドセットが、それらをポストシンクロナイゼーションオペレーションとして扱うためにインラインデータとしてパイプ制御コマンド14にパックされ得る。より詳細に説明されるように、そのようなアプローチによって、グラフィックパイプライン12を下ってマーカ22が送信されることになり得る。ここで、「フラッシュ完了」状態の検出により、これらのコマンドが実行されることになり得る。他の例において、(何らかのコマンドでもあり得る)コマンドがポストシンクロナイゼーションオペレーションとして示されるべきであることを示す特別なビットが当該コマンドに設定され得る。したがって、このビットが設定されている場合、コマンドによって、グラフィックパイプライン12を下ってマーカが送信され得、対応するマーカのフラッシュが完了したことに応じてポストシンクロナイゼーションオペレーションとして実行されるためにコマンドが記憶装置に入れられることになる。
【0006】
ポストシンクロナイゼーションオペレーション16のセットは、グラフィックパイプライン12を通るコマンド10の進捗度に関して、リソース、ブックキーピング、その他をトラッキングするのに有用であり得る。より詳細に説明されるように、ポストシンクロナイゼーションオペレーション16のセットは、メモリへの単純な書き込みよりもより複雑な機能を実行するアトミックオペレーション(「アトミック」。例えば、読み取り、修正、書き込み)を含み得る。例えば、Add、Subtract、Increment、Decrement、Max、Min、AND、OR、XOR、Compare、その他などのロジック的および/または演算的な修正オペレーションが全て例えば、アトミックオペレーションに組み込まれ得る。したがって、図示されるアプローチは、グラフィック処理アーキテクチャにおけるポストシンクロナイゼーションオペレーションとしてアトミックオペレーションをサポートする。
【0007】
より詳細には、ポストシンクロナイゼーションオペレーション16のセットは、例えば、グラフィックプロセッサ上のローカルキャッシュ、レジスタ、および/またはファーストインファーストアウト(FIFO)バッファ、専用のグラフィックダブルデータレート(DDR)メモリモジュール、その他などのグラフィックメモリ20に格納され得る。加えて、分離トークン18が、パイプ制御コマンド14などの連続するパイプ制御コマンドの間のセパレータとしての役割を果たすべくグラフィックメモリ20に格納され得る。また図示されるアプローチは、フラッシュマーカ22をグラフィックパイプラインへ送信する段階を提供し得る。フラッシュマーカ22がグラフィックパイプライン12を抜け出たとの決定に応じて、ポストシンクロナイゼーション実行モジュール24は、パイプライン処理方式でグラフィックメモリ20からのポストシンクロナイゼーションオペレーション16のセットを処理し得る。ポストシンクロナイゼーション実行モジュール24は、ポストシンクロナイゼーションオペレーション16を処理するための専用であるか、または、ポストシンクロナイゼーションオペレーション16とコマンド10との間で共有され得る。共有される場合の例において、実行モジュール24は、グラフィックパイプライン12のハードウェアフロントエンドに組み込まれ得る。ここで実行モジュール24は、2つのコマンドストリーム間で多重化を行い得る。
【0008】
図2および3はそれぞれ、ポストシンクロナイゼーションオペレーションを伴うコマンドシーケンス26およびグラフィック処理アーキテクチャ28を示す。図示される例において、第1パイプ制御コマンド(「PC1」が解析され、第1ポストシンクロナイゼーションオペレーションセット(「PS1」)をグラフィックメモリ20(例えば、「ポストシンクオペレーション記憶装置」)へ格納することにより、第1ポストシンクロナイゼーションオペレーションセットPS1は保留される。既に言及したように、ポストシンクロナイゼーションオペレーションセットは、データを修正することが出来る1または複数のアトミックオペレーション(例えば、Add、Subtract、Increment、Decrement、Max、Min、AND、OR、XOR、Compare、およびその他)を表し得る。ポストシンクロナイゼーションオペレーションセットは、他の非アトミックオペレーション(例えば、グラフィックハードウェアによりサポートされるコマンドの何らかの組み合わせ)も含み得る。簡単に説明すると、第1ポストシンクロナイゼーションオペレーションセットPS1は、コマンドの何らかの組み合わせ(例えば、図示されていないC9、C10、C11...)であり得る。一例において、ポストシンクロナイゼーションを示す特別なビットを有する何らかのコマンドは、ポストシンクロナイゼーションコマンドとして対象のコマンドを含むようにパイプ制御コマンドがプログラミングされているかのように同じようなやり方で挙動し得る。
【0009】
加えて、第1マーカ(「M1」)が、グラフィックパイプライン12(12a〜12f)により生成および前処理され得る。グラフィックパイプライン12は、例えば、グラフィックハードウェア(HW)フロントエンド(FE)12a、入力アセンブラ12b、1または複数の事前ラスター化シェーダ12c、ラスタライザー12d、ピクセルシェーダ12e、出力マージャステージ12f、およびその他を含み得る。アーキテクチャ28は、分離トークン18(18a〜18d)が概して、対応するポストシンクロナイゼーションオペレーションセットの後にグラフィックメモリ20に格納され得ることを示す。例えばポストシンクロナイゼーション(「EOPS」)分離トークン18aの最後は、第1ポストシンクロナイゼーションオペレーションセットPS1の最後をシグナリングするために、第1ポストシンクロナイゼーションオペレーションセットPS1がグラフィックメモリ20に格納された後にグラフィックメモリ20に格納され得る。
【0010】
図示されるコマンドシーケンス26は、第1コマンド(「C1」)も、グラフィックパイプライン12により解析および処理され得、第2コマンド(「C2」)がその後に続くことを示し得る。その後第2パイプ制御コマンド(「PC2」)が解析され得る。ここで第2ポストシンクロナイゼーションオペレーションセット(「PS2」)を他のEOPS分離トークン18bと併せてグラフィックメモリ20に格納することにより、第2ポストシンクロナイゼーションオペレーションセットPS2が保留され得る。ここでも、第2ポストシンクロナイゼーションオペレーションセットPS2は、コマンド(例えば、図示されていないC12)の何らかの組み合わせであり得る。加えて、第2マーカ(「M2」がグラフィックパイプライン12により生成および前処理され得る。図示される例において、第3コマンド(「C3」)がグラフィックパイプライン12により解析および処理され、第1マーカM1がグラフィックパイプライン12の出力マージャステージ12fを抜け出た時に、第1フラッシュインジケータ(「F1」)が生成される。第1フラッシュインジケータF1を検出したことに応答して、実行モジュール24はグラフィックメモリ20からの第1ポストシンクロナイゼーションオペレーションセットPS1の後処理を開始し得る。ここで第1ポストシンクロナイゼーションオペレーションセットPS1の後処理は、グラフィックメモリ20においてEOPS分離トークン18aに遭遇したことに応じて中断され得る。
【0011】
加えて、図示されるコマンドシーケンス26は、第3パイプ制御コマンド(「PC3」)がその後解析され得ることを示す。ここで、第3ポストシンクロナイゼーションオペレーションセット(「PS3」)を関連するEOPS分離トークン18cと併せてグラフィックメモリ20に格納することにより、第3ポストシンクロナイゼーションオペレーションセットPS3が保留され得る。さらに、第3マーカ(「M3」)が、グラフィックパイプライン12により生成および前処理され得る。図示される例において、第4コマンド(「C4」)がグラフィックパイプライン12により解析および処理され、第2マーカM2がグラフィックパイプライン12の出力マージャステージ12fを抜け出たことを、第2フラッシュインジケータ(「F2」)が実行モジュール24に対してシグナリングする。したがって、図示される実行モジュール24は、第2マーカM2がグラフィックパイプライン12を抜け出ることに応答して(例えば、一旦、第1ポストシンクロナイゼーションオペレーションセットPS1の後処理が完了した場合)第2ポストシンクロナイゼーションオペレーションセットPS2を後処理する。
【0012】
加えて、第4パイプ制御コマンド(「PC4」)が解析され得る。ここで、第4ポストシンクロナイゼーションオペレーションセット(「PS4」)を他のEPOS分離トークン18dと併せてグラフィックメモリ20に格納することにより、第4ポストシンクロナイゼーションオペレーションセットPS4は保留される。第4マーカ(「M4」)もグラフィックパイプライン12により生成および前処理され得る。図示されるパイプ制御コマンドPC4は、次のコマンド(つまり、「C5」)へ進む前に自身の対応する第4ポストシンクロナイゼーションオペレーションセットPS4が完了するのを待機する「ストール」コマンドとして機能し得る。したがって、図示される例において、第3フラッシュインジケータ(「F3」)が検出されるまでパイプライン12へ「バブル」が意図的に挿入される。第3マーカM3がグラフィックパイプライン12を抜け出るのに応答して生成され得る第3フラッシュインジケータF3が、実行モジュール24による第3ポストシンクロナイゼーションオペレーションセットPS3の後処理を引き起こし得る。同様に、第4マーカM4がグラフィックパイプライン12を抜け出ると、第4フラッシュインジケータF4は、実行モジュール24に、第4ポストシンクロナイゼーションオペレーションセットPS4を後処理させ得る。
【0013】
ここで
図4を参照すると、ポストシンクロナイゼーションオペレーションを処理する方法30が示されている。方法30は、メモリのマシンまたはコンピュータ可読記憶媒体に格納されたロジック命令セットとして実行可能ソフトウェアにおいて実装され得る。メモリの例としては、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、プログラム可能ROM(PROM)、ファームウェア、フラッシュメモリ、その他などが挙げられる。方法30は、例えば、プログラム可能ロジックアレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)など構成可能なロジックで、例えば、特定用途向け集積回路(ASIC)、相補型金属酸化物半導体(CMOS)またはトランジスタ−トランジスタロジック(TTL)技術などの回路技術を用いる機能固定型ロジックハードウェアで、またはこれらの何らかの組み合わせで実装され得る。
【0014】
図示される処理ブロック32は、ポストシンクロナイゼーションオペレーションセットをグラフィックメモリへ格納する段階を提供する。既に言及されたように、ブロック32は、ポストシンクロナイゼーションオペレーションセットがグラフィックメモリに格納された後に、分離トークンをグラフィックメモリに格納することも伴い得る。加えて、ブロック34において、フラッシュマーカがグラフィックパイプラインへ送信され得る。ここで、ブロック36において、フラッシュマーカがグラフィックパイプラインを抜け出ることに応答して、ポストシンクロナイゼーションオペレーションセットが処理され得る。
【0015】
図5A〜5Cはそれぞれ、前処理、後処理、およびアトミック処理コマンドのより詳細なアプローチを示す。図示されるアプローチは、メモリのマシンまたはコンピュータ可読記憶媒体に格納されたロジック命令セットとして実行可能ソフトウェアにおいて実装され得る。メモリの例としては、RAM、ROM、PROM、ファームウェア、フラッシュメモリ、その他などが挙げられる。図示されるアプローチは、例えば、PLA、FPGA、CPLDなど構成可能なロジックで、例えば、ASIC、CMOS、TTL技術などの回路技術を用いる機能固定型ロジックハードウェアで、またはこれらの何らかの組み合わせで実装され得る。
【0016】
図5Aにおいてよく示されるように、図示される処理ブロック38はコマンドバッファ処理を開始する。ここでブロック40において、コマンドバッファが空であるか否かの決定がなされる。結果が肯定的である場合、ブロック42において処理が終了し得る。そうでない場合、図示されるブロック44において、バッファから次のコマンドが取得され、ブロック46において、取得したコマンドがパイプ制御コマンドであるか否かの決定がなされ得る。既に言及されたように、例えば適切に構成されたアトミックコマンドまたはセマフォコマンドなどの他のコマンドも、パイプ制御コマンドの代わりに、および/またはそれに加えて用いられ得る。実際、ハードウェアによりサポートされるどのようなコマンドも、ポストシンクロナイゼーションオペレーションとして見なされるよう構成され得る。取得したコマンドがパイプコマンドでない場合、図示されるブロック48において、コマンドが実行され、他のバッファチェックがブロック40において行われる。
【0017】
コマンドがパイプ制御コマンドである場合、ブロック50において、例えばグラフィックメモリ20(
図1および3)などのグラフィックメモリにおいて領域が利用可能であるか否かが決定され得る。結果が否定的な場合、図示される前処理手順は、十分なメモリ領域が解放されるまで待機する。そうでなければ、ブロック52において、ポストシンクロナイゼーションオペレーションセットがパイプ制御コマンドから解析され、グラフィックメモリに格納され得、ブロック54において、分離トークンが生成されグラフィックメモリに格納され得る。代替的に、利用可能な格納領域を越えてしまう場合には、ソフトウェアが、ポストシンクロナイゼーションオペレーションを複数のパイプ制御コマンドに亘って分割することにより、任意の1つのパイプ制御コマンドが利用可能な格納領域を超えるポストシンクロナイゼーションオペレーションを有さないようにし得る。そのような場合、ブロック50における決定は迂回され得る。
【0018】
図示されるブロック56において、記憶領域カウンタ58にインタフェースし、ポストシンクロナイゼーションオペレーションセットのサイズおよびトークンのサイズに基づき、メモリ領域の利用可能な量がデクリメントされる。加えて、ブロック60においてフラッシュマーカがグラフィックパイプラインへ送信され得る。ブロック60は、アウトスタンディングマーカ完了トラッカ62をインクリメントすることも伴い得る。コマンドがストールさせるパイプ制御コマンドであるか否かの決定がブロック64においてなされ得る。結果が否定的な場合、前処理手順はブロック40に戻り、他のバッファチェックを実行し得る。そうでない場合、アウトスタンディングマーカ完了トラッカ62からの情報に基づき、全てのフラッシュが完了したか否かの決定がブロック66においてなされ得る。ブロック66における決定は、全てのフラッシュが完了するまで反復され得る。
【0019】
図5Bにおいてよく示されるように、ブロック68においてフラッシュインジケータに遭遇することに応じて(例えば、マーカがグラフィックパイプラインを抜け出た場合)、フラッシュ完了カウンタ70がインクリメントされ得、これにより、ブロック72における図示される後処理手順が開始される。EOPS分離トークンがグラフィックメモリにおいて遭遇されたか否かの決定がブロック74においてなされ得る。結果が否定的な場合、図示されるブロック76において、グラフィックメモリの次のポストシンクロナイゼーション(「ポストシンク」)オペレーションが処理され、ブロック78は、グラフィックメモリの次の位置に進み得る。
【0020】
EOPSトークンがグラフィックメモリにおいて遭遇された場合、図示されるブロック80において、フラッシュ完了カウンタ70がデクリメントされ、グラフィックメモリから削除されるポストシンクオペレーションおよびトークンのサイズに基づき、ブロック82において、記憶領域カウンタ58(
図5A)のメモリ領域がインクリメントされる。加えて、ブロック84において、アウトスタンディングマーカ完了トラッカ62(
図5A)がデクリメントされ得る。ここで、図示される後処理手順はブロック86で終了し得る。したがって、
図5Aの前処理手順および
図5Bの後処理手順は、図示される例において、互いに分断される。
【0021】
図5Cにおいてよく示されるように、グラフィックHW FE12a(
図3)などのグラフィックハードウェアフロントエンドは概して、アトミックコマンドがポストシンクロナイゼーション処理に対応する特別なビット表示を有さない(例えば、ポストシンクロナイゼーションビットが設定されていない)場合に、即座の処理のためにアトミックコマンドを用意し得る。より詳細には、ブロック39においてアトミック処理が開始され得る。ここで、図示されるブロック41において、受信されるアトミックコマンドがインラインデータを含むか否かの決定がなされる。結果が否定的な場合、ブロック43において、適切なソース(例えば、レジスタ、バッファ、その他)から間接的なデータが取得され得る。加えてブロック45において、アトミックパケットが組み立てられ得る。ここでアトミックパケットは、例えば、アトミックオペレーションが実行されることになるメモリアドレス、実行されることになるアトミックオペレーションの種類、アトミックオペレーションのオペランドサイズ(例えば、dword、qword、octword)、追加のオペレーション(例えば、アトミックオペレーションに依存する第2および第3のオペランド)、要求される読み取られたリターンデータ、およびその他を含み得る。
【0022】
図示されるブロック47は、メモリ位置の所有権を取得する段階を提供する。ここで所有権は、他の処理および/またはデバイスが確実に、メモリ位置を修正しないようにし得る。ブロック49において、メモリ位置からデータが取得され得る。読み取られたリターンデータが要求されたか否かの決定がブロック51においてなされ得る。結果が肯定的な場合、ブロック53において、メモリから取得されたデータが1または複数のレジスタに格納され得る。ブロック55において、アトミックコマンドに基づきアトミック修正が実行され得る。ここで、図示されるブロック57は、修正されたデータをメモリ位置に戻すように格納する段階を提供する。ブロック59は、メモリ位置の所有権をリリースし得る。
【0023】
ここで
図6を参照すると、ロジックアーキテクチャ88(88a〜88d)が示されている。ロジックアーキテクチャ88は概して、例えば、既に説明したグラフィックHW FE12a(
図3)などのグラフィックハードウェア(HW)フロントエンド(FE)において実装され得る。図示される例において、アーキテクチャ88はパイプ制御コマンド、アトミックコマンド、セマフォコマンド、その他、またはこれらの何らかの組み合わせからポストシンクロナイゼーションオペレーションセットを取得するコマンドストリーマ(CS)モジュール88a(例えば、レンダリング、ブリッタ、動画、および/または動画補正コマンドストリーマインタフェース)を含む。メモリモジュール88bは、ポストシンクロナイゼーションオペレーションセットをグラフィックメモリに格納し得る。ここでパイプラインモジュール88cは、各ポストシンクロナイゼーションオペレーションセットのために、フラッシュマーカをグラフィックパイプラインへ送信し得る。さらに、実行モジュール88dは、対応するフラッシュマーカがグラフィックパイプラインを抜け出ることに応答して、各ポストシンクロナイゼーションオペレーションセットを処理し得る。したがって実行モジュール88dは、既に説明したポストシンクオペレーション実行モジュール24(
図1および3)と同様に機能し得る。
【0024】
ここで
図7を参照すると、コンピューティングシステム90が示されている。ここでシステム90は、ラップトップ、モバイルインターネットデバイス(MID)、携帯情報端末(PDA)、メディアプレーヤ、撮像デバイス、その他などのモバイルプラットフォーム、スマートフォン、スマートタブレット、スマートTV(テレビ)、およびその他などの何らかのスマートデバイス、またはこれらの何らかの組み合わせの一部であり得る。システム90は、パーソナルコンピュータ(PC)、サーバ、ワークステーション、その他などの固定されたプラットフォームの一部でもあり得る。図示されるシステム90は、中央処理装置(CPU。例えばホストプロセッサ)92を含む。CPU92は、内蔵型メモリコントローラ(iMC)94を有し、iMC94は、例えばダブルデータレート(DDR)シンクロナスダイナミックランダムアクセスメモリ(SDRAM。例えば、DDR3 SDRAM JEDEC Standard JESD79−3C,April 2008)モジュールを含み得るシステムメモリ96へのアクセスを提供する。システムメモリ96のモジュールは、例えば、シングルインラインメモリモジュール(SIMM)、デュアルインラインメモリモジュール(DIMM)、スモールアウトラインDIMM(SODIMM)、およびその他に組み込まれ得る。
【0025】
CPU92は、1または複数のドライバ98および/またはプロセッサコア(図示せず)も有し得る。ここで各コアは、命令フェッチユニット、命令デコーダ、レベル1(L1)キャッシュ、実行ユニット、およびその他と共に完全に機能し得る。一例において、ドライバ98は、パイプ制御コマンド、アトミックコマンド、セマフォコマンド、およびその他でポストシンクロナイゼーションオペレーションセットを発行するよう構成される。代替的にCPU92は、システム90のコンポーネントのそれぞれを相互接続するフロントサイドバスまたはポイントツーポイントファブリックを介して、ノースブリッジとしても知られるiMC94の外部チップである変形例と通信し得る。CPU92は、オペレーティングシステム(OS)100も実行し得る。
【0026】
図示されるCPU92は、バスを介して、サウスブリッジとしても知られる入出力(IO)モジュール102と通信し得る。iMC94/CPU92、およびIOモジュール102は、場合によってはチップセットと呼ばれる。またCPU92は、IOモジュール102および様々な他のコントローラ104を通じ、ネットワークポートを介してネットワーク(図示せず)と操作可能に接続され得る。したがって、他のコントローラ104は有線通信および無線通信などの多種多様な目的のためにオフプラットフォーム通信機能を提供し得る。それら目的には、携帯電話(例えば、Wideband Code Division Multiple Access、W−CDMA(Universal Mobile Telecommunications System/UMTS)、CDMA2000(IS−856/IS−2000)、その他)、Wi−Fi(登録商標)(Wireless Fidelity。例えば、Institute of Electrical and Electronics Engineers/IEEE 802.11,2007 Edition)、Bluetooth(登録商標)(例えば、IEEE 802.15.1−2005、Wireless Personal Area Networks)、WiMax(登録商標)(例えば、IEEE 802.16−2004)、全地球測位システム(GPS)、スペクトル拡散(例えば、900MHz)、並びに、他の無線周波数(RF)電話技術における目的が含まれるがこれらに限定されない。またIOモジュール102は、動画、画像、および他のコンテンツの視覚的な出力/表現を提供すべくディスプレイ106と通信し得る。また、ユーザがシステム90とインタラクトし、システム90からの情報を知覚出来るようにするために、他のコントローラ104は、キーパッド、マウス、その他などのユーザインタフェースデバイス(図示せず)に関するサポートを提供すべくIOモジュール102と通信し得る。
【0027】
IOモジュール102は、USB(Universal Serial Bus。例えば、USB Specification 2.0,USB Implementers Forum)、Serial ATA(SATA。例えば、SATA Rev. 3.0 Specification,May 27,2009,SATA International Organization/SATA−IO)、High Definition Audio、および他のコントローラなど内部コントローラ(図示せず)も有し得る。図示されるIOモジュール102は、ハードドライブ108、読み取り専用メモリ(ROM)、光ディスク、フラッシュメモリ(図示せず)、その他を含み得る記憶装置とも結合され得る。
【0028】
図示されるシステム90は、専用グラフィックメモリ112に結合された専用のグラフィック処理ユニット(GPU。グラフィックプロセッサ)110も含む。専用グラフィックメモリ112は、例えば、GDDR(グラフィックDDR)、またはDDR SDRAMモジュール、若しくは、グラフィックレンダリングをサポートするのに適した他の何らかのメモリ技術を含み得る。GPU110およびグラフィックメモリ112は、グラフィック/ビデオカードにインストールされ得る。ここでGPU110は、PCI Express Graphics(PEG。例えば、Peripheral Components Interconnect/PCI Express x16 Graphics 150W−ATX Specification 1.0、PCI Special Interest Group)バス、またはAccelerated Graphics Port(例えば、AGP V3.0 Interface Specification,September 2002)バスなどのグラフィックバス114を介して、CPU92と通信し得る。グラフィックカードは、システムマザーボードまたはメインCPU92ダイに統合され得、若しくは、マザーボード、その他の別個のカードとして構成され得る、などである。またGPU110は、1または複数のドライバ116を実行し得、グラフィックパイプライン118、並びに命令および他のデータを格納する内部キャッシュ120を含み得る。
【0029】
代替的に、GPU110は専用グラフィックメモリを有しておらず、代わりにCPU92とシステムメモリ96を共有し得る。そのような構成は、GPU110とCPU92とが同じダイの一部である(例えば、適切なインタフェースを通じて接続される)統合されたグラフィックアーキテクチャのために用いられ得る。
【0030】
図示されるグラフィックパイプライン118は、既に説明したロジックアーキテクチャ88(
図6)と同様に機能するよう構成されたフロントエンド(FE)ロジック122を含む。したがって、FEロジック122は、例えば、キャッシュ120および/または専用グラフィックメモリ112などのグラフィックメモリへポストシンクロナイゼーションオペレーションセットを格納し、フラッシュマーカをグラフィックパイプライン118の残りへ送信し得る。ここで、ポストシンクロナイゼーションオペレーションセットは、ディスプレイ106上で提示されるコンテンツと関連する。またGPU110は、フラッシュマーカがグラフィックパイプライン118を抜け出るのに応答してポストシンクロナイゼーションオペレーションセットを処理するよう構成された実行モジュール124を含み得る。
【0031】
アトミックコマンドの例示的な仕様(「MI_ATOMIC」)が以下に表Iに示されている。ここでアトミックコマンドは、インラインデータとしてポストシンクロナイゼーションオペレーションを含むよう構成され得る。
【0033】
図8は、システム700の実施形態を示す。実施形態において、システム700はメディアシステムであり得るが、システム700はこの文脈に限定されない。例えばシステム700は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビ、スマートデバイス(例えば、スマートフォン、スマートタブレット、またはスマートテレビ)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス、並びにその他に組み込まれ得る。したがってシステム700は、本明細書に説明されるように画像をレンダリングするために用いられ得る。
【0034】
実施形態において、システム700はディスプレイ720に結合されたプラットフォーム702を備える。プラットフォーム702は、コンテンツサービスデバイス730またはコンテンツ配信デバイス740、若しくは他の同様のコンテンツソースなどのコンテンツデバイスから動画ビットストリームコンテンツを受信し得る。例えばプラットフォーム702および/またはディスプレイ720とインタラクトするために、1または複数のナビゲーション機能を備えるナビゲーションコントローラ750が用いられ得る。これらのコンポーネントのそれぞれは、以下により詳細に説明される。
【0035】
実施形態において、プラットフォーム702は、チップセット705、プロセッサ710、メモリ712、記憶装置714、グラフィックサブシステム715、アプリケーション716、および/または無線機718の何らかの組み合わせを備え得る。チップセット705は、プロセッサ710、メモリ712、記憶装置714、グラフィックサブシステム715、アプリケーション716、および/または無線機718の間の相互通信を提供し得る。例えば、チップセット705は、記憶装置714との相互通信を提供可能な記憶アダプタ(図示せず)を含み得る。
【0036】
プロセッサ710は、Complex Instruction Set Computer(CISC)またはReduced Instruction Set Computer(RISC)プロセッサ、x86命令セットと互換性のあるプロセッサ、マルチコア、若しくは他の何らかのマイクロプロセッサまたは中央処理装置(CPU)として実装され得る。実施形態において、プロセッサ710は、デュアルコアプロセッサ、デュアルコアモバイルプロセッサ、およびその他を備え得る。
【0037】
メモリ712は、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、またはスタティックRAM(SRAM)などであるがこれらに限定されない揮発性メモリデバイスとして実装され得る。
【0038】
記憶装置714は、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部記憶デバイス、取り付けられた記憶デバイス、フラッシュメモリ、バッテリーバックアップ式のSDRAM(シンクロナスDRAM)、および/またはネットワークアクセス可能な記憶デバイスなどであるがこれらに限定されない不揮発性記憶デバイスとして実装され得る。実施形態において、記憶装置714は、例えば複数のハードドライブが含まれる場合に、貴重なデジタルメディアの保護を高めるために記憶性能を向上させる技術を備え得る。
【0039】
グラフィックサブシステム715は、表示のために静止画または動画などの画像の処理を実行し得る。グラフィックサブシステム715は、例えば、グラフィック処理ユニット(GPU)またはビジュアル処理ユニット(VPU)であり得る。したがってグラフィックサブシステム715は、既に説明したGPU110(
図7)を含み得る。加えて、プロセッサ710は、メモリ712、記憶装置714、または他の適したソースから取得された命令を介して、既に説明したCPU92(
図7)などとして動作するよう構成され得る。グラフィックサブシステム715およびディスプレイ720を通信可能に結合するために、アナログまたはデジタルインタフェースが用いられ得る。例えば、インタフェースは、High−Definition Multimedia Interface、DisplayPort、無線HDMI(登録商標)、および/または無線HD準拠技術のうちいずれかであり得る。グラフィックサブシステム715は、プロセッサ710またはチップセット705に統合され得る。グラフィックサブシステム715は、チップセット705と通信可能に結合されたスタンドアロン型カードであり得る。
【0040】
本明細書に説明されるグラフィックおよび/または動画処理技術は、様々なハードウェアアーキテクチャで実装され得る。例えば、グラフィックおよび/または動画機能は、チップセット内で統合され得る。代替的に、別個のグラフィックおよび/または動画プロセッサが用いられ得る。さらに他の実施形態として、グラフィックおよび/または動画機能は、マルチコアプロセッサを含む汎用プロセッサにより実装され得る。さらなる実施形態において、機能は、家庭用電子機器で実装され得る。
【0041】
無線機718は、様々な適した無線通信技術を用いて信号を送受信可能な1または複数の無線機を含み得る。そのような技術は、1または複数の無線ネットワークを介した通信を伴い得る。例示的な無線ネットワークとしては(これらに限定されるわけではないが)、無線ローカルエリアネットワーク(WLAN)、無線パーソナルエリアネットワーク(WPAN)、無線メトロポリタンエリアネットワーク(WMAN)、セルラーネットワーク、および衛星ネットワークが含まれる。そのようなネットワークを介した通信において、無線機718は、いずれかのバージョンの1または複数の適用可能な規格に準拠して動作し得る。
【0042】
実施形態において、ディスプレイ720は、何らかのテレビ型のモニタまたはディスプレイを備え得る。ディスプレイ720は例えば、コンピュータディスプレイ画面、タッチスクリーンディスプレイ、ビデオモニタ、テレビ型デバイス、および/またはテレビを備え得る。ディスプレイ720は、デジタルおよび/またはアナログであり得る。実施形態において、ディスプレイ720はホログラフィックディスプレイであり得る。また、ディスプレイ720は、視覚投影を受ける透明な面であり得る。そのような投影は、様々な形態の情報、画像、および/またはオブジェクトを伝達し得る。例えば、そのような投影は、モバイル拡張現実(MAR)アプリケーションのための視覚的なオーバーレイであり得る1または複数のソフトウェアアプリケーション716の制御下で、プラットフォーム702は、ユーザインタフェース722をディスプレイ720に表示し得る。
【0043】
実施形態において、コンテンツサービスデバイス730は、国ごとの、国際的な、および/または独立した何らかのサービスによりホストされ得、これにより、例えば、インターネットを介してプラットフォーム702にアクセス可能であり得る。コンテンツサービスデバイス730は、プラットフォーム702および/またはディスプレイ720に結合され得る。プラットフォーム702および/またはコンテンツサービスデバイス730は、ネットワーク760へ/からメディア情報を通信(例えば、送信および/または受信)すべく、ネットワーク760に結合され得る。コンテンツ配信デバイス740も、プラットフォーム702および/またはディスプレイ720へ結合され得る。
【0044】
実施形態において、コンテンツサービスデバイス730は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、インターネット利用可能デバイスまたはデジタル情報および/またはコンテンツを伝達可能な電気製品、並びに、コンテンツプロバイダと、プラットフォーム702およびディスプレイ720との間でネットワーク760を介して、または直接的に、一方向または双方向にコンテンツを通信可能な他の何らかの同様のデバイスを備え得る。コンテンツは、システム700内のコンポーネントのうちいずれか1つおよびコンテンツプロバイダへ/からネットワーク760を介して、一方向および/または双方向に通信され得ることが理解されよう。コンテンツの例には、例えば動画、音楽、医療またはゲームに関する情報、およびその他を含む何らかのメディア情報が含まれ得る。
【0045】
コンテンツサービスデバイス730は、メディア情報、デジタル情報、および/または他のコンテンツを含むケーブルテレビプログラムなどのコンテンツを受信し得る。コンテンツプロバイダの例には、何らかのケーブルまたは衛星テレビ、若しくは無線またはインターネットコンテンツプロバイダが含まれ得る。提供される例は、実施形態を限定するよう意図されていない。
【0046】
実施形態において、プラットフォーム702は、1または複数のナビゲーション機能を有するナビゲーションコントローラ750から制御信号を受信し得る。コントローラ750のナビゲーション機能は、例えば、ユーザインタフェース722とインタラクトするために用いられ得る。実施形態において、ナビゲーションコントローラ750は、ユーザが空間(例えば、連続的であり多次元の)データをコンピュータに入力することを可能とするコンピュータハードウェア構成要素(詳細には、ヒューマンインタフェースデバイス)であり得るポインティングデバイスであり得る。グラフィカルユーザインタフェース(GUI)などの多くのシステム、並びにテレビおよびモニタは、身体的なジェスチャを用いてユーザがコンピュータまたはテレビを制御すること、およびこれらにデータを提供することを可能とする。
【0047】
コントローラ750のナビゲーション機能の動きは、ディスプレイ上に表示されるポインタ、カーソル、フォーカスリング、または他の視覚的なインジケータの動きにより、ディスプレイ(例えばディスプレイ720)上で反映され得る。例えば、ソフトウェアアプリケーション716の制御下で、ナビゲーションコントローラ750上に位置付けられるナビゲーション機能は、例えば、ユーザインタフェース722上に表示される仮想的なナビゲーション機能へとマッピングされ得る。実施形態において、コントローラ750は別個のコンポーネントではなく、プラットフォーム702および/またはディスプレイ720に統合され得る。しかし実施形態は、本明細書に示される、または説明される要素または文脈に限定されない。
【0048】
実施形態において、ドライバ(図示せず)は、例えば、テレビのように、有効にされた場合に、ユーザが最初のブートアップの後にボタンに触れると瞬時にプラットフォーム702の電源を入れたり、切ったりすることを可能とする技術を備え得る。プログラムロジックは、プラットフォーム702の電源が「切られた」場合に、プラットフォームがコンテンツを、メディアアダプタ、若しくは他のコンテンツサービスデバイス730またはコンテンツ配信デバイス740へストリーミングすることを可能とし得る。加えて、チップセット705は、例えば、5.1サラウンドサウンドオーディオおよび/または高解像度の7.1サラウンドサウンドオーディオのためのハードウェアおよび/またはソフトウェアサポートを備え得る。ドライバは、統合されたグラフィックプラットフォームのためのグラフィックドライバを含み得る。実施形態において、グラフィックドライバはペリフェラルコンポーネントインターコネクト(PCI)Expressグラフィックカードを備え得る。
【0049】
様々な実施形態において、システム700に示されるコンポーネントのうちいずれか1つまたは複数は統合され得る。例えば、プラットフォーム702とコンテンツサービスデバイス730とが統合され得、プラットフォーム702とコンテンツ配信デバイス740とが統合され得、プラットフォーム702と、コンテンツサービスデバイス730とコンテンツ配信デバイス740とが例えば統合され得る。様々な実施形態において、プラットフォーム702とディスプレイ720とは統合されたユニットであり得る。例えば、ディスプレイ720とコンテンツサービスデバイス730とが統合され得、またはディスプレイ720とコンテンツ配信デバイス740とが統合され得る。これらの例は実施形態を限定するよう意図されていない。
【0050】
様々な実施形態において、システム700は、無線システム、有線システム、または両方の組み合わせとして実装され得る。無線システムとして実装される場合、システム700は、1または複数のアンテナ、送信機、受信機、送受信機、増幅器、フィルタ、制御ロジック、およびその他など無線共有媒体上での通信に適したコンポーネントおよびインタフェースを含み得る。無線共有媒体の例には、RFスペクトルおよびその他など無線スペクトルの一部が含まれ得る。有線システムとして実装される場合、システム700は、入出力(I/O)アダプタ、I/Oアダプタを対応する有線通信媒体と接続する物理コネクタ、ネットワークインタフェースカード(NIC)、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ、およびその他など有線通信媒体上での通信に適したコンポーネントおよびインタフェースを含み得る。有線通信媒体の例には、電線、ケーブル、金属鉛、プリント基板(PCB)、バックプレーン、スイッチファブリック、半導体材料、ツイストペア線、同軸ケーブル、光学繊維、およびその他が含まれ得る。
【0051】
プラットフォーム702は、情報を通信するための1または複数のロジックチャネルまたは物理チャネルを確立し得る。情報は、メディア情報および制御情報を含み得る。メディア情報とは、ユーザ向けのコンテンツを表す何らかのデータを指し得る。コンテンツの例には、例えば、音声会話、ビデオ会議、ストリーミング動画、電子メール(「eメール」)メッセージ、ボイスメールメッセージ、英数字記号、グラフィック、画像、動画、テキスト、およびその他からのデータを含み得る。音声会話からのデータは例えば、会話情報、静寂の期間、背景雑音、快適雑音、トーン、およびその他であり得る。制御情報とは、自動化されたシステム向けのコマンド、命令、または制御語を表す何らかのデータを指し得る。例えば、制御情報は、システムを通じてメディア情報をルーティングする、または、予め定められたやり方でメディア情報を処理するようノードに命令するために用いられ得る。しかし実施形態は、
図8に示される、または説明される要素または文脈に限定されない。
【0052】
上記にて説明したように、システム700は、異なる物理的なスタイルまたはフォームファクタで実施され得る。
図9は、システム700が実施され得る小さなフォームファクタのデバイス800の実施形態を示す。実施形態において、例えば、デバイス800は、無線機能を有するモバイルコンピューティングデバイスとして実装され得る。モバイルコンピューティングデバイスとは、例えば、処理システムと、1または複数のバッテリーなどモバイル電力ソースまたはサプライとを有する何らかのデバイスを指し得る。
【0053】
上記にて説明したように、モバイルコンピューティングデバイスの例には、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビ、スマートデバイス(例えば、スマートフォン、スマートタブレット、またはスマートテレビ)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス、並びにその他を含み得る。
【0054】
またモバイルコンピューティングデバイスの例には、リスト(wrist)コンピュータ、フィンガーコンピュータ、リングコンピュータ、アイグラスコンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、シュー(shoe)コンピュータ、衣服コンピュータ、および他のウェアラブルコンピュータなど人により着用されるよう構成されコンピュータが含まれ得る。実施形態において、例えば、モバイルコンピューティングデバイスは、コンピュータアプリケーション、並びに音声通信および/またはデータ通信を実行可能なスマートフォンとして実装され得る。いくつかの実施形態は、例としてスマートフォンとして実装されるモバイルコンピューティングデバイスを用いて説明されるかもしれないが、他の無線モバイルコンピューティングデバイスを用いて他の実施形態が実装され得ることが理解されよう。実施形態はこの文脈に限定されない。
【0055】
図9に示されるように、デバイス800は、筐体802、ディスプレイ804、入出力(I/O)デバイス806、およびアンテナ808を備え得る。デバイス800は、ナビゲーション機能812も備え得る。ディスプレイ804は、モバイルコンピューティングデバイスにとって適切な情報を表示するための何らかの適したディスプレイユニットを備え得る。I/Oデバイス806は、モバイルコンピューティングデバイスへ情報を入力するための適した何らかのI/Oデバイスを備え得る。I/Oデバイス806の例には、英数字キーボード、数字キーパッド、タッチパッド、入力キー、ボタン、スイッチ、ロッカースイッチ、マイク、スピーカ、音声認識デバイスおよびソフトウェア、並びにその他が含まれ得る。また情報は、マイクを用いてデバイス800へ入力され得る。そのような情報は、音声認識デバイスによりデジタル化され得る。実施形態はこの文脈に限定されない。
【0057】
実施例1は、コマンドを処理するシステムであり、
視覚的コンテンツを提示するディスプレイと、
上記視覚的コンテンツに関連するポストシンクロナイゼーションオペレーションセットを発行するドライバを実行するホストプロセッサと
を備えるシステムを含み得る。またシステムは、
グラフィックメモリと、
グラフィックプロセッサとを備え得、
上記グラフィックプロセッサは、
上記グラフィックメモリに上記ポストシンクロナイゼーションオペレーションセットを格納するメモリモジュールと、
グラフィックパイプラインへフラッシュマーカを送信するパイプラインモジュールと、
上記フラッシュマーカが上記グラフィックパイプラインを抜け出ることに応答して上記ポストシンクロナイゼーションオペレーションセットを処理する実行モジュールと
を有する。
【0058】
実施例2は、上記メモリモジュールが、上記ポストシンクロナイゼーションオペレーションセットが上記グラフィックメモリに格納された後に上記グラフィックメモリにトークンを格納し、上記実行モジュールは、上記トークンが上記グラフィックメモリにおいて遭遇された場合に上記ポストシンクロナイゼーションオペレーションセットの処理を中断する、実施例1に記載のシステムを含み得る。
【0059】
実施例3は、上記グラフィックプロセッサがさらに、パイプ制御コマンドまたはアトミックコマンドのうち一方から上記ポストシンクロナイゼーションオペレーションセットを取得するグラフィックハードウェアフロントエンドを有する、実施例1に記載のシステムを含み得る。
【0060】
実施例4は、上記アトミックコマンドが、インラインデータとして上記ポストシンクロナイゼーションオペレーションセットを含むか、若しくは1または複数の事前にロードされたインプリシットレジスタから間接的なデータとして上記ポストシンクロナイゼーションオペレーションセットを受け付ける、実施例3に記載のシステムを含み得る。
【0061】
実施例5は、上記アトミックコマンドがリターンビットを含み、上記リターンビットが設定されている場合、上記グラフィックハードウェアフロントエンドは、上記アトミックコマンドの発信者へ読み取られたデータを戻すか、または読み取られたデータをインプリシットレジスタへ格納する、実施例3に記載のシステムを含み得る。
【0062】
実施例6は、上記グラフィックプロセッサがさらに、特別なビット表示を有する1または複数のコマンドを上記ポストシンクロナイゼーションオペレーションセットであるものとして見なすコマンドストリーマモジュールを有する、実施例1に記載のシステムを含み得る。
【0063】
実施例7は、上記ポストシンクロナイゼーションオペレーションセットが、1または複数のアトミックオペレーションを含む、実施例1から6のいずれか一つに記載のシステムを含み得る。
【0064】
実施例8は、上記1または複数のアトミックオペレーションが、読み取りオペレーション、修正オペレーション、および書き込みオペレーションを含む、実施例7に記載のシステムを含み得る。
【0065】
実施例9は、上記修正オペレーションが、Add、Subtract、Increment、Decrement、Max、Min、AND、OR、XOR、またはCompareオペレーションのうち1または複数を含む、実施例8に記載のシステムを含み得る。
【0066】
実施例10は、グラフィックメモリにポストシンクロナイゼーションオペレーションセットを格納する段階と、
グラフィックパイプラインへフラッシュマーカを送信する段階と、
上記フラッシュマーカが上記グラフィックパイプラインを抜け出ることに応答して上記ポストシンクロナイゼーションオペレーションセットを処理する段階と
を備える、コマンドを処理する方法を含み得る。
【0067】
実施例11は、上記ポストシンクロナイゼーションオペレーションセットが上記グラフィックメモリに格納された後に上記グラフィックメモリにトークンを格納する段階と、
上記トークンが上記グラフィックメモリにおいて遭遇された場合に上記ポストシンクロナイゼーションオペレーションセットの処理を中断する段階と
をさらに備える、実施例10に記載の方法を含み得る。
【0068】
実施例12は、パイプ制御コマンドまたはアトミックコマンドのうち一方から上記ポストシンクロナイゼーションオペレーションセットを取得する段階をさらに備える、実施例10に記載の方法を含み得る。
【0069】
実施例13は、コンピューティングデバイスにより実行された場合に、上記コンピューティングデバイスに実施例7の方法を実行させる命令セットを備える、少なくとも1つのコンピュータ可読記憶媒体を含み得る。
【0070】
実施例14は、上記命令は実行された場合に、コンピューティングデバイスに、
上記ポストシンクロナイゼーションオペレーションセットが上記グラフィックメモリに格納された後に上記グラフィックメモリにトークンを格納させ、
上記トークンが上記グラフィックメモリにおいて遭遇された場合に上記ポストシンクロナイゼーションオペレーションセットの処理を中断させる、実施例13に記載の少なくとも1つのコンピュータ可読記憶媒体を含み得る。
【0071】
実施例15は、上記命令は実行された場合に、コンピューティングデバイスに、パイプ制御コマンドまたはアトミックコマンドのうち一方から上記ポストシンクロナイゼーションオペレーションセットを取得させる、実施例13に記載の少なくとも1つのコンピュータ可読記憶媒体を含み得る。
【0072】
実施例16は、グラフィックメモリにポストシンクロナイゼーションオペレーションセットを格納するメモリモジュールと、
グラフィックパイプラインへフラッシュマーカを送信するパイプラインモジュールと、
上記フラッシュマーカが上記グラフィックパイプラインを抜け出ることに応答して上記ポストシンクロナイゼーションオペレーションセットを処理する実行モジュールと
を備える、コマンドを処理する装置を含み得る。
【0073】
実施例17は、上記メモリモジュールが、上記ポストシンクロナイゼーションオペレーションセットが上記グラフィックメモリに格納された後に上記グラフィックメモリにトークンを格納し、上記実行モジュールは、上記トークンが上記グラフィックメモリにおいて遭遇された場合に上記ポストシンクロナイゼーションオペレーションセットの処理を中断する、実施例16に記載の装置を含み得る。
【0074】
実施例18は、パイプ制御コマンドまたはアトミックコマンドのうち一方から上記ポストシンクロナイゼーションオペレーションセットを取得するコマンドストリーマモジュールさらにを備える、実施例16に記載の装置を含み得る。
【0075】
実施例19は、上記アトミックコマンドが、インラインデータとして上記ポストシンクロナイゼーションオペレーションセットを含むか、若しくは1または複数の事前にロードされたインプリシットレジスタから間接的なデータとして上記ポストシンクロナイゼーションオペレーションセットを受け付ける、実施例18に記載の装置を含み得る。
【0076】
実施例20は、上記アトミックコマンドがリターンビットを含み、上記リターンビットが設定されている場合、上記グラフィックハードウェアフロントエンドは、上記アトミックコマンドの発信者へ読み取られたデータを戻すか、または読み取られたデータをインプリシットレジスタへ格納する、実施例18に記載の装置を含み得る。
【0077】
実施例21は、上記グラフィックプロセッサがさらに、特別なビット表示を有する1または複数のコマンドを上記ポストシンクロナイゼーションオペレーションセットであるものとして見なすコマンドストリーマモジュールを有する、実施例16に記載の装置を含み得る。
【0078】
実施例22は、上記ポストシンクロナイゼーションオペレーションセットが、1または複数のアトミックオペレーションを含む、実施例16から21のいずれか一つに記載の装置を含み得る。
【0079】
実施例23は、上記1または複数のアトミックオペレーションが、読み取りオペレーション、修正オペレーション、および書き込みオペレーションを含む、実施例22に記載の装置を含み得る。
【0080】
実施例24は、上記修正オペレーションが、Add、Subtract、Increment、Decrement、Max、Min、AND、OR、XOR、またはCompareオペレーションのうち1または複数を含む、実施例23に記載の装置を含み得る。
【0081】
実施例25は、上記アトミックコマンドがポストシンクロナイゼーション処理に対応する特別なビット表示を有さない場合に、即座の処理のためにアトミックコマンドを用意するグラフィックハードウェアフロントエンドをさらに備える、実施例16の装置を含み得る。
【0082】
実施例26は、実施例10から12のいずれか一つに記載の方法を実行するための手段を備える、コマンドを処理する装置を含み得る。
【0083】
したがって、本明細書に説明される技術は、グラフィックハードウェアフロントエンドからのアトミックサポートを提供し得、いずれかのハードウェアグラフィックコンポーネントおよびホストプロセッサソフトウェアにより同時にデータ要素を修正する機能を提供し得る。そのようなアプローチは、異なるハードウェアエージェントおよびソフトウェアの間でのデータの同期に関するドライバオーバヘッドを最適化および単純化し得る。そしてこれにより、より効率のよいハードウェア−ソフトウェアインタフェース、および実質的な電力節約が実現され得る。
【0084】
様々な実施形態は、ハードウェア要素、ソフトウェア要素、またはこれら両方の組み合わせを用いて実装され得る。ハードウェア要素の例には、プロセッサ、マイクロプロセッサ、回路、回路要素(例えば、トランジスタ、抵抗、コンデンサ、誘電子、およびその他)、集積回路、特定用途向け集積回路(ASIC)、プログラム可能ロジックデバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、ロジックゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット、およびその他が含まれ得る。ソフトウェアの例には、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、方法、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはこれらの何らかの組み合わせが含まれ得る。実施形態をハードウェア要素を用いて実装する、および/またはソフトウェア要素を用いて実装することについての決定は、所望される演算レート、電力レベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバススピード、および他の設計または性能制約など任意の数の要因に従って変わり得る。
【0085】
少なくとも1つの実施形態の1または複数の態様は、マシンに読み取られた場合に、当該マシンに本明細書に説明される技術を実行するためのロジックを組み立てさせる、プロセッサ内の様々なロジックを表す、マシン可読媒体に格納された代表的な命令により実装され得る。「IPコア」として知られるそのような表現は、有形のマシン可読媒体に格納され、実際にロジックまたはプロセッサを作成する組み立てマシンにロードする様々な顧客または製造施設へ供給され得る。
【0086】
実施形態は、全てのタイプの半導体集積回路(「IC」)チップでの使用に適用可能である。これらICチップの例には、これらに限定されるわけではないが、プロセッサ、コントローラ、チップセットコンポーネント、プログラム可能ロジックアレイ(PLA)、メモリチップ、ネットワークチップ、およびその他が含まれる。加えて、いくつかの図面において、信号線は線で表されている。あるものはより多くの成分信号パスを示すべく異なっており、あるものは多数の成分信号パスを示すべく数の符号を有しており、および/または、あるものは主な情報のフロー方向を示すべく、1または複数の端部において矢印を有している。しかしこのことは、限定的に解釈されるべきではない。むしろそのような追加された詳細は、回路の容易な理解を促すべく、1または複数の例示的な実施形態に関連して用いられ得る。追加的な情報を有していようといなかろうと、何らかの示された信号線は、実際には複数の方向に移動し得る1または複数の信号を備え得、例えば、差動対を用いて実装されるデジタルまたはアナログ線、光ファイバー線、および/またはシングルエンド線など何らかの適したタイプの信号方式を用いて実装され得る。
【0087】
例示的なサイズ/モデル/値/範囲が提示されているかもしれないが、実施形態はそれらに限定されない。製造技術(例えばフォトリソグラフィ)が時の経過と共に成熟するにつれ、より小さいサイズのデバイスが製造され得ることが予期される。加えて、ICチップおよび他のコンポーネントへの周知の電力/接地接続が図面内に示されていることもあり、示されていないこともある。これは図示および説明を単純にするためであり、実施形態の特定の態様を曖昧にしないようにするためである。さらに、実施形態を曖昧にすることを避けるために、および、そのようなブロック図の構成の実装に関する詳細が、実施形態が実装されるプラットフォームに大いに依存している、つまり、そのような詳細が十分に当業者の理解の範囲内であるという事実に鑑みて、ブロック図の形態で構成が示されているかもしれない。例示的な実施形態を説明するために特定の詳細(例えば回路)が明記されている場合、実施形態がこれら特定の詳細を用いなくとも、またはそれらの変形例を用いて実施され得ることが当業者には明らかであろう。したがって説明は、限定するものではなく例示するものとして見なされるべきである。
【0088】
いくつかの実施形態は、例えば、マシン、若しくはマシンにより実行された場合に実施形態に係る方法および/またはオペレーションを当該マシンに実行させる命令または命令セットを格納し得る有形のコンピュータ可読媒体または物品を用いて実装され得る。そのようなマシンには、例えば、何らかの適した処理プラットフォーム、コンピューティングプラットフォーム、コンピューティングデバイス、処理デバイス、コンピューティングシステム、処理システム、コンピュータ、プロセッサ、またはその他が含まれ得、ハードウェアおよび/またはソフトウェアの何らかの適した組み合わせを用いて実装され得る。マシン可読媒体または物品には、例えば、何らかの適したタイプのメモリユニット、メモリデバイス、メモリ物品、メモリ媒体、記憶デバイス、記憶物品、記憶媒体、および/または記憶ユニットが含まれ得、それらの例には、例えば、メモリ、取り外し可能または取り外し不可能な媒体、消去可能または消去不可能な媒体、書き込み可能または再書き込み可能な媒体、デジタルまたはアナログ媒体、ハードディスク、フロッピー(登録商標)ディスク、コンパクトディスク読み取り専用メモリ(CD−ROM)、コンパクトディスクレコーダブル(CD−R)、コンパクトディスクリライタブル(CD−RW)、光ディスク、磁気媒体、光磁気媒体、取り外し可能メモリカードまたはディスク、様々なタイプのデジタル多用途ディスク(DVD)、テープ、カセット、またはその他が含まれ得る。命令は、何らかの適した高級言語、低級言語、オブジェクト指向言語、視覚言語、コンパイラ型および/またはインタープリタ型プログラミング言語を用いて実装される、ソースコード、コンパイラ型コード、インタープリタ型コード、実行可能コード、静的コード、動的コード、暗号化コード、およびその他など何らかの適したタイプのコードを含み得る。
【0089】
特に異なるように述べない限り、「処理」、「演算」、「計算」、「決定」、またはその他などの用語は、コンピューティングシステムのレジスタおよび/またはメモリ内で物理量(例えば、電子的)として表されるデータを操作する、および/またはコンピューティングシステムのメモリ、レジスタ、または他のそのような情報記憶、送信またはディスプレイデバイス内で同様に物理量として表される他のデータに変換する、コンピュータまたはコンピューティングシステム、若しくは同様の電子コンピューティングデバイスの動作および/または処理を指し得ることが理解されよう。実施形態はこの文脈に限定されない。
【0090】
「結合された」という用語は本明細書において、対象のコンポーネント間の直接的または間接的な何らかのタイプの関係を指すのに用いられ得、電子的、機械的、流体的、光学的、電磁気的、電気機械的、または他のタイプの接続に適用され得る。加えて、「第1」、「第2」、その他の用語は本明細書において、説明を容易にするためのみに用いられており、異なるように示されていない限り、何ら特定の時間的または時系列的な意味を伝えない。
【0091】
当業者は上記の説明から、実施形態の幅広い技術が、様々な形態で実装され得ることを理解されよう。したがって、特定の例に関連して実施形態が説明がされてきたが、実施形態の真の態様はそのように限定されるべきではない。なぜなら、当業者が図面、明細書、および以下の請求項を検討することにより、他の修正が明らかとなるからである。
本実施形態の例を下記の各項目として示す。
[項目1]
複数のコマンドを処理するシステムであり、
視覚的コンテンツを提示するディスプレイと、
前記視覚的コンテンツに関連するポストシンクロナイゼーションオペレーションセットを発行するドライバを実行するホストプロセッサと、
グラフィックメモリと、
グラフィックプロセッサとを備え、
前記グラフィックプロセッサは、
前記グラフィックメモリに前記ポストシンクロナイゼーションオペレーションセットを格納するメモリモジュールと、
グラフィックパイプラインへフラッシュマーカを送信するパイプラインモジュールと、
前記フラッシュマーカが前記グラフィックパイプラインを抜け出ることに応答して前記ポストシンクロナイゼーションオペレーションセットを処理する実行モジュールと
を有する、システム。
[項目2]
前記メモリモジュールは、前記ポストシンクロナイゼーションオペレーションセットが前記グラフィックメモリに格納された後に前記グラフィックメモリにトークンを格納し、前記実行モジュールは、前記トークンが前記グラフィックメモリにおいて遭遇された場合に前記ポストシンクロナイゼーションオペレーションセットの処理を中断する、項目1に記載のシステム。
[項目3]
前記グラフィックプロセッサはさらに、パイプ制御コマンドまたはアトミックコマンドのうち一方から前記ポストシンクロナイゼーションオペレーションセットを取得するグラフィックハードウェアフロントエンドを有する、項目1に記載のシステム。
[項目4]
前記アトミックコマンドは、インラインデータとして前記ポストシンクロナイゼーションオペレーションセットを含むか、若しくは1または複数の事前にロードされたインプリシットレジスタから間接的なデータとして前記ポストシンクロナイゼーションオペレーションセットを受け付ける、項目3に記載のシステム。
[項目5]
前記アトミックコマンドはリターンビットを含み、前記リターンビットが設定されている場合、前記グラフィックハードウェアフロントエンドは、前記アトミックコマンドの発信者へ読み取られたデータを戻すか、または読み取られたデータをインプリシットレジスタへ格納する、項目3に記載のシステム。
[項目6]
前記グラフィックプロセッサはさらに、特別なビット表示を有する1または複数のコマンドを前記ポストシンクロナイゼーションオペレーションセットであるものとして見なすコマンドストリーマモジュールを有する、項目1に記載のシステム。
[項目7]
前記ポストシンクロナイゼーションオペレーションセットは、1または複数のアトミックオペレーションを含む、項目1から6のいずれか一項に記載のシステム。
[項目8]
前記1または複数のアトミックオペレーションは、読み取りオペレーション、修正オペレーション、および書き込みオペレーションを含む、項目7に記載のシステム。
[項目9]
前記修正オペレーションは、Add、Subtract、Increment、Decrement、Max、Min、AND、OR、XOR、またはCompareオペレーションのうち1または複数を含む、項目8に記載のシステム。
[項目10]
グラフィックメモリにポストシンクロナイゼーションオペレーションセットを格納する段階と、
グラフィックパイプラインへフラッシュマーカを送信する段階と、
前記フラッシュマーカが前記グラフィックパイプラインを抜け出ることに応答して前記ポストシンクロナイゼーションオペレーションセットを処理する段階と
を備える、複数のコマンドを処理する方法。
[項目11]
前記ポストシンクロナイゼーションオペレーションセットが前記グラフィックメモリに格納された後に前記グラフィックメモリにトークンを格納する段階と、
前記トークンが前記グラフィックメモリにおいて遭遇された場合に前記ポストシンクロナイゼーションオペレーションセットの処理を中断する段階と
をさらに備える、項目10に記載の方法。
[項目12]
パイプ制御コマンドまたはアトミックコマンドのうち一方から前記ポストシンクロナイゼーションオペレーションセットを取得する段階をさらに備える、項目10に記載の方法。
[項目13]
グラフィックメモリにポストシンクロナイゼーションオペレーションセットを格納する手順と、
グラフィックパイプラインへフラッシュマーカを送信する手順と、
前記フラッシュマーカが前記グラフィックパイプラインを抜け出ることに応答して前記ポストシンクロナイゼーションオペレーションセットを処理する手順と
をコンピューティングデバイスに実行させるプログラム。
[項目14]
前記ポストシンクロナイゼーションオペレーションセットが前記グラフィックメモリに格納された後に前記グラフィックメモリにトークンを格納する手順と、
前記トークンが前記グラフィックメモリにおいて遭遇された場合に前記ポストシンクロナイゼーションオペレーションセットの処理を中断する手順と
をコンピューティングデバイスに実行させる、項目13に記載のプログラム。
[項目15]
パイプ制御コマンドまたはアトミックコマンドのうち一方から前記ポストシンクロナイゼーションオペレーションセットを取得する手順をコンピューティングデバイスに実行させる、項目13に記載のプログラム。
[項目16]
グラフィックメモリにポストシンクロナイゼーションオペレーションセットを格納するメモリモジュールと、
グラフィックパイプラインへフラッシュマーカを送信するパイプラインモジュールと、
前記フラッシュマーカが前記グラフィックパイプラインを抜け出ることに応答して前記ポストシンクロナイゼーションオペレーションセットを処理する実行モジュールと
を備える、複数のコマンドを処理する装置。
[項目17]
前記メモリモジュールは、前記ポストシンクロナイゼーションオペレーションセットが前記グラフィックメモリに格納された後に前記グラフィックメモリにトークンを格納し、前記実行モジュールは、前記トークンが前記グラフィックメモリにおいて遭遇された場合に前記ポストシンクロナイゼーションオペレーションセットの処理を中断する、項目16に記載の装置。
[項目18]
パイプ制御コマンドまたはアトミックコマンドのうち一方から前記ポストシンクロナイゼーションオペレーションセットを取得するグラフィックハードウェアフロントエンドをさらに備える、項目16に記載の装置。
[項目19]
前記アトミックコマンドは、インラインデータとして前記ポストシンクロナイゼーションオペレーションセットを含むか、若しくは1または複数の事前にロードされたインプリシットレジスタから間接的なデータとして前記ポストシンクロナイゼーションオペレーションセットを受け付ける、項目18に記載の装置。
[項目20]
前記アトミックコマンドはリターンビットを含み、前記リターンビットが設定されている場合、前記グラフィックハードウェアフロントエンドは、前記アトミックコマンドの発信者へ読み取られたデータを戻すか、または読み取られたデータをインプリシットレジスタへ格納する、項目18に記載の装置。
[項目21]
特別なビット表示を有する1または複数のコマンドを前記ポストシンクロナイゼーションオペレーションセットであるものとして見なすコマンドストリーマモジュールをさらに備える、項目16に記載の装置。
[項目22]
前記ポストシンクロナイゼーションオペレーションセットは、1または複数のアトミックオペレーションを含む、項目16から21のいずれか一項に記載の装置。
[項目23]
前記1または複数のアトミックオペレーションは、読み取りオペレーション、修正オペレーション、および書き込みオペレーションを含む、項目22に記載の装置。
[項目24]
前記修正オペレーションは、Add、Subtract、Increment、Decrement、Max、Min、AND、OR、XOR、またはCompareオペレーションのうち1または複数を含む、項目23に記載の装置。
[項目25]
項目10から12のいずれか一項に記載の方法を実行するための手段を備える、コマンドを処理する装置。