(57)【要約】      （修正有）【課題】ハイブリッド環境におけるビデオ処理の分散処理環境において、アクセス脆弱性を改善したビデオ処理システム、方法及びコンピュータプログラム製品を提供する。【解決手段】グラフィックプロセッサを含むビデオ処理システムにおいて、第１のグラフィックプロセッサと、協働してビデオデータを処理するための第２のグラフィックプロセッサを設け、第１のグラフィックプロセッサと第２のグラフィックプロセッサとの通信を暗号化する。【選択図】図１
2010063082.tif 000002
【特許請求の範囲】
【請求項１】
第１のグラフィックプロセッサと、
前記第１のグラフィックプロセッサと通信し、協働してビデオデータを処理するための第２のグラフィックプロセッサと、
を備え、
前記通信が暗号化される、装置。
【請求項２】
前記第１のグラフィックプロセッサ及び前記第２のグラフィックプロセッサは、対称型である、請求項１に記載の装置。
【請求項３】
前記第１のグラフィックプロセッサ及び前記第２のグラフィックプロセッサは、非対称型である、請求項１に記載の装置。
【請求項４】
前記第１のグラフィックプロセッサは、別個のグラフィックプロセッサであり、前記第２のグラフィックプロセッサは、ホストシステムに一体化された一体化グラフィックプロセッサである、請求項３に記載の装置。
【請求項５】
前記ビデオデータを協働して処理するために、前記別個のグラフィックプロセッサが複数個含まれる、請求項４に記載の装置。
【請求項６】
前記別個のグラフィックプロセッサは、前記ビデオデータを、該ビデオデータの受信後に、デコードする、請求項４に記載の装置。
【請求項７】
前記別個のグラフィックプロセッサは、前記ビデオデータを、該ビデオデータの前記デコードの後に、暗号化する、請求項６に記載の装置。
【請求項８】
前記ホストシステムは、前記別個のグラフィックプロセッサから受け取られる前記暗号化ビデオデータを記憶するためのシステムメモリを含む、請求項７に記載の装置。
【請求項９】
前記一体化グラフィックプロセッサは、前記暗号化ビデオデータを解読する、請求項８に記載の装置。
【請求項１０】
前記一体化グラフィックプロセッサのグラフィックエンジンが前記暗号化ビデオデータを解読する、請求項８に記載の装置。
【請求項１１】
前記一体化グラフィックプロセッサは、前記解読ビデオデータを前記システムメモリへ書き込む、請求項１０に記載の装置。
【請求項１２】
前記一体化グラフィックプロセッサのビデオエンジンが前記ビデオデータを使用してディスプレイを駆動する、請求項１０に記載の装置。
【請求項１３】
前記一体化グラフィックプロセッサの前記グラフィックエンジン及び前記ビデオエンジンによる処理を連携させるために、少なくとも一つのセマフォが使用される、請求項１２に記載の装置。
【請求項１４】
前記第１のグラフィックプロセッサ及び前記第２のグラフィックプロセッサによる処理を連携させるために、少なくとも一つのセマフォが使用される、請求項１に記載の装置。
【請求項１５】
前記通信は、バスを通して実施される、請求項１に記載の装置。
【請求項１６】
前記バスは、周辺コンポーネント相互接続（ＰＣＩ）バスを含む、請求項１５に記載の装置。
【請求項１７】
前記第１のグラフィックプロセッサ及び前記第２のグラフィックプロセッサは各々、グラフィック処理ユニットを含む、請求項１に記載の装置。
【請求項１８】
コンピュータ読み取り可能な媒体で実施されるコンピュータプログラム製品において、
第１のグラフィックプロセッサを使用してビデオデータを処理するためのコンピュータコードと、
前記ビデオデータを暗号化するのに使用されるキーを与えるためのコンピュータコードと、
第２のグラフィックプロセッサを使用して前記ビデオデータを更に処理するためのコンピュータコードと、
を含むコンピュータプログラム製品。
【請求項１９】
前記コンピュータコードは、前記第１のグラフィックプロセッサ及び前記第２のグラフィックプロセッサを制御するのに使用されるドライバーのコンポーネントである、請求項１８に記載のコンピュータプログラム製品。
【請求項２０】
第１のグラフィックプロセッサを使用してビデオデータを処理するステップと、
前記ビデオデータを暗号化するステップと、
前記ビデオデータを、更に処理するため第２のグラフィックプロセッサへ送るステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明は、ビデオ処理に関するものであり、より詳細には、ハイブリッド環境におけるビデオ処理に関するものである。
【背景技術】
【０００２】
[0002]従来のコンピューティング環境では、ビデオ処理は、グラフィックプロセッサにおいて実施されることが多い。このようなビデオ処理を強化するために、複数の異なるグラフィックプロセッサ間で、当該処理を分散させることがよく行われている。しかしながら、このような分散処理環境では、一般に、種々の制限が出現することが分かっている。例えば、分散グラフィックプロセッサ間の通信は、通当該通信に対して望ましくないアクセスに脆弱であることが多く、また、当該通信に対する望まれない変更に脆弱であることが多い。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
[0003]従って、従来技術に伴うこれらの問題及び／又はその他の問題に対処することが必要とされている。
【課題を解決するための手段】
【０００４】
[0004]複数のグラフィックプロセッサ間での通信を暗号化するためのビデオ処理システム、方法及びコンピュータプログラム製品を提供する。第１のグラフィックプロセッサが設けられる。加えて、第１のグラフィックプロセッサと通信し、且つ、協働してビデオデータを処理するための第２のグラフィックプロセッサが設けられる。さらに、このような通信が暗号化される。
【図面の簡単な説明】
【０００５】
【図１】一実施形態による複数のグラフィックプロセッサを含むビデオ処理システムを示す図である。
【図２】別の実施形態による複数のグラフィックプロセッサを含むビデオ処理システムを示す図である。
【図３】更に別の実施形態による別個のグラフィック処理装置（ＧＰＵ）を使用してシステムメモリへ暗号化ビデオデータを転送するための方法を示す図である。
【図４】更に別の実施形態による一体化ＧＰＵを使用して解読ビデオデータでディスプレイを駆動するための方法を示す。
【図５】別の実施形態による複数のＧＰＵを同期化するためのシステムを示す図である。
【図６】更に別の実施形態によるセマフォを使用して複数のＧＰＵを同期化するための方法を示す図である。
【図７】更に別の実施形態による複数のセマフォを使用して複数のＧＰＵを同期化するための方法を示す図である。
【図８】種々の前述の実施形態の種々のアーキテクチャー及び／又は機能を実施することができる典型的なシステムを例示する図である。
【発明を実施するための形態】
【０００６】
[0013]図１は、一実施形態による複数のグラフィックプロセッサを含むビデオ処理システム１００を示している。図示するように、第１のグラフィックプロセッサ１０２は、第２のグラフィックプロセッサ１０４と通信する。一実施形態では、第１のグラフィックプロセッサ１０２は、バスを介して第２のグラフィックプロセッサ１０４と通信することができる。例えば、バスは、周辺コンポーネント相互接続（ＰＣＩ）バス、ＰＣＩエクスプレス（ＰＣＩＥ）バス等であってもよい。しかしながら、勿論、第１のグラフィックプロセッサ１０２は、任意の所望の態様にて第２のグラフィックプロセッサ１０４と通信することができる。
【０００７】
[0014]本実施形態については、第１のグラフィックプロセッサ１０２及び第２のグラフィックプロセッサ１０４は、ビデオデータを処理することのできる任意のタイプのグラフィックプロセッサ（例えば、グラフィック処理ユニット（ＧＰＵ））であってもよい。オプションとして、第１のグラフィックプロセッサ１０２及び第２のグラフィックプロセッサ１０４は、対称型であってよい。別のオプションとして、第１のグラフィックプロセッサ１０２及び第２のグラフィックプロセッサ１０４は、非対称型であってもよい。
【０００８】
[0015]また、一実施形態では、第１のグラフィックプロセッサ１０２は、別個のグラフィックプロセッサを含み得る。第１のグラフィックプロセッサ１０２は、所定のタスクを行うことに専用のものとなっていてもよい。このような所定のタスクとしては、単なる例示ではあるが、ビデオデータ（例えば、アプリケーションから受け取ったビデオの少なくとも一つのフレーム等）のレンダリングがある。この目的で、第１のグラフィックプロセッサ１０２は、レンダリング用にアプリケーションからビデオデータを受け取るために、当該アプリケーションと通信することができる。
【０００９】
[0016]別の実施形態では、第２のグラフィックプロセッサ１０４は、一体化グラフィックプロセッサを含み得る。例えば、第２のグラフィックプロセッサ１０４は、ホストシステム（例えば、第１のグラフィックプロセッサ１０２及び第２のグラフィックプロセッサ１０４を使用するシステム等）に一体化することができる。別の例として、第２のグラフィックプロセッサ１０４は、（例えば、ホストシステムの）マザーボードに一体化することができる。
【００１０】
[0017]第２のグラフィックプロセッサ１０４も、オプションとして、第１のグラフィックプロセッサ１０２に専用の所定のタスクとは異なる所定のタスクを行うことに専用のものとなっていてもよい。例えば、第２のグラフィックプロセッサ１０４は、ビデオデータを表示及び／又はオーバーレイすることに専用のものとすることができる。従って、第２のグラフィックプロセッサ１０４は、ビデオデータを表示及び／又はオーバーレイするためにディスプレイと通信することができる。
【００１１】
[0018]従って、一実施形態では、第１のグラフィックプロセッサ１０２及び第２のグラフィックプロセッサ１０４は、ビデオデータを協働して処理するために通信することができる。オプションとして、第１のグラフィックプロセッサ１０２は、少なくとも第１のタイプのビデオデータ処理を行い、第２のグラフィックプロセッサ１０４は、少なくとも第２のタイプのビデオデータ処理を行うことができる。単なる例示として、第１のグラフィックプロセッサ１０２は、ビデオデータをレンダリングし、第２のグラフィックプロセッサ１０４は、レンダリングされたビデオデータを表示することができる。
【００１２】
[0019]別のオプションとして、第１のグラフィックプロセッサ１０２は、ビデオデータの第１の部分を処理し、第２のグラフィックプロセッサ１０４がそのビデオデータの第２の部分を処理することができる。さらに、第１のグラフィックプロセッサ１０２及び第２のグラフィックプロセッサ１０４は、任意の所望の順序にてビデオデータを協働して処理することができる。種々の実施例について前述してきたが、勿論、第１のグラフィックプロセッサ１０２及び第２のグラフィックプロセッサ１０４は、任意の所望の態様にて、ビデオデータを協働して処理することもできることに注意されたい。
【００１３】
[0020]さらに、第１のグラフィックプロセッサ１０２も第２のグラフィックプロセッサ１０４も一つのみ示してあるが、任意の数の第１のグラフィックプロセッサ１０２が、任意の数の第２のグラフィックプロセッサ１０４と通信できるようにすることもできることに注意されたい。従って、オプションとして、複数の第１のグラフィックプロセッサ１０２（例えば、別個のグラフィックプロセッサ）が、ビデオデータを協働して処理するために、ビデオ処理システム１００に含まれていてもよい。単なる例示として、複数の第１のグラフィックプロセッサ１０２は、ビデオデータに対して少なくとも一つの所定のタスクを協働して行うことができる。
【００１４】
[0021]さらに、第１のグラフィックプロセッサ１０２及び第２のグラフィックプロセッサ１０４がビデオデータを共同して処理するために通信する前述の実施形態については、第１のグラフィックプロセッサ１０２と第２のグラフィックプロセッサ１０４との間の通信を、暗号化することができる。この通信は、任意の所望の態様にて暗号化し得る。例えば、この通信は、ターボサイファー暗号化機構、ビット移動ユニット、ビットスクランブリング（例えば、ピクセルシェーダー機能を通してビットをスワッピングする、等）、及び／又は通信を暗号化することのできるその他の任意のアルゴリズムを使用して、暗号化することができる。
【００１５】
[0022]一つの典型的な実施形態では、第１のグラフィックプロセッサ１０２が、ビデオデータを処理することができる（例えば、デコードする）。例えば、第１のグラフィックプロセッサ１０２は、ビデオデータを（例えば、そのアプリケーションから）受信後、そのビデオデータを処理することができる。さらに、そのビデオデータは、暗号化され得る。例えば、第１のグラフィックプロセッサ１０２は、デコーディング後に、ビデオデータを暗号化することができる。さらに、ビデオデータは、更なる処理のために、第２のグラフィックプロセッサ１０４へと送られてもよい。単なる例示として、第１のグラフィックプロセッサ１０２は、第２のグラフィックプロセッサ１０４へ（例えば、バスを通して）通信するために、処理されたビデオデータを暗号化することができる。このようにして、暗号化ビデオデータが第１のグラフィックプロセッサ１０２から第２のグラフィックプロセッサ１０４により受け取られる時、第２のグラフィックプロセッサ１０４は、暗号化ビデオデータを解読して、解読されたビデオデータを処理することができる。
【００１６】
[0023]別の典型的な実施形態では、第１のグラフィックプロセッサ１０２が、ビデオデータを処理することができる（例えば、デコードする）。そして、ビデオデータの暗号化に使用するために、キー（例えば、暗号化キー）が（例えば、第１のグラフィックプロセッサ１０２に）与えられる。さらに、第２のグラフィックプロセッサ１０４は、そのビデオデータを更に処理することができる。暗号化ビデオデータは、更なる処理のために、第２のグラフィックプロセッサ１０４へと送られてもよい。別のオプションとして、キーは、暗号化ビデオデータの解読に使用するために、第２のグラフィックプロセッサ１０４に与えられてもよい。
【００１７】
[0024]一つのオプションの実施形態では、キーは、第１のグラフィックプロセッサ１０２及び／又は第２のグラフィックプロセッサ１０４を当該キーでプログラミングすることにより、第１のグラフィックプロセッサ１０２及び／又は第２のグラフィックプロセッサ１０４へと与えることができる。例えば、第１のグラフィックプロセッサ１０２及び／又は第２のグラフィックプロセッサ１０４は、これら第１のグラフィックプロセッサ１０２及び／又は第２のグラフィックプロセッサ１０４の初期化（例えば、ブートアップ）時に当該キーでプログラムされてもよい。
【００１８】
[0025]別の実施形態では、第１のグラフィックプロセッサ１０２及び第２のグラフィックプロセッサ１０４の動作は、それらの間の通信のセキュリティーのために、同期化されてもよい。オプションとして、通信のセキュリティーは、暗号化動作を行うことにより、保証されてもよい。例えば、前述したように、第１のグラフィックプロセッサ１０２と第２のグラフィックプロセッサ１０４との間の通信が暗号化されてもよい。また、前述したように、この暗号化動作を、例えば、ビデオデータに対して実行して、暗号化ビデオデータを生成してもよい。
【００１９】
[0026]別のオプションとして、第１のグラフィックプロセッサ１０２及び第２のグラフィックプロセッサ１０４の同期化動作は、これら第１のグラフィックプロセッサ１０２及び第２のグラフィックプロセッサ１０４によって行われる処理を同期化（例えば、コーディネーティング）することを含んでいてもよい。このような処理は、デコードされたビデオデータをそれ自身のフレームバッファからシステムメモリへと第１のグラフィックプロセッサ１０２により転送することを含むことができる。別のオプションとして、この処理は、第２のグラフィックプロセッサ１０４によるシステムメモリからのビデオデータの読み取り（例えば、その解読及び／又は表示のため）を含むことができる。このようにして、ビデオデータの処理における望まれないグリッチは、第１のグラフィックプロセッサ１０２及び第２のグラフィックプロセッサ１０４の動作を同期化することにより、防止される。
【００２０】
[0027]更に別のオプションとして、第１のグラフィックプロセッサ１０２及び第２のグラフィックプロセッサ１０４の動作を同期化してこれらプロセッサ間の通信のセキュリティーを保証するのに使用するためのデータ構造（図示せず）が与えられてもよい。このデータ構造は、一実施形態では、少なくとも一つのセマフォを含むことができる。このようなセマフォは、データ（例えば、３２ビット値）を記憶するためのメモリの記憶域を含むことができる。
【００２１】
[0028]例えば、セマフォは、第１のグラフィックプロセッサ１０２及び／又は第２のグラフィックプロセッサ１０４に対して、これらプロセッサの動作（例えば、ビデオデータの処理）が開始される時を指示するデータを記憶することができる。このために、セマフォは、第１のグラフィックプロセッサ１０２と第２のグラフィックプロセッサ１０４との間で同期化されるべき各エンジンによって、連続的に、周期的にといったようにポーリングされ得る。勿論、第１のグラフィックプロセッサ１０２及び第２のグラフィックプロセッサ１０４の動作は、任意の所望の態様にて同期化することができることに注意されたい。
【００２２】
[0029]種々のオプションのアーキテクチャー及び特徴についてより例示的な情報を、以下に説明する。前述したフレームワークは、ユーザの希望に応じてこれらアーキテクチャー及び特徴を用いて実施されてもよく、又は、これらを用いて実施されなくてもよい。次の情報は、例示のために説明するものであって、いかようにも限定のためのものとして解釈されるべきでないことに、特に注意されたい。次の特徴の何れもが、説明する他の特徴と共に、又は、当該他の特徴を除外することなく、任意に組み入れられ得る。
【００２３】
[0030]図２は、別の実施形態による複数のグラフィックプロセッサを含むビデオ処理システム２００を示している。オプションとして、このビデオ処理システム２００は、図１のビデオ処理システム１００にて実施することができる。しかしながら、勿論、このビデオ処理システム２００は、任意の所望の環境にて実施することもできる。本説明においても、前述した定義が適用できることに、注意されたい。
【００２４】
[0031]図示するように、第１のグラフィックプロセッサ２０２（以下、別個のグラフィックプロセッサ２０２）は、第２のグラフィックプロセッサ２０６（以下、一体化グラフィックプロセッサ２０６）と通信する。別個のグラフィックプロセッサ２０２及び一体化グラフィックプロセッサ２０６は、暗号化ビデオデータ及び解読ビデオデータを記憶するシステムメモリ２０４とも通信する。システムメモリ２０４は、ホストシステム（図示せず）に含まれていてもよい。このような通信（例えば、別個のグラフィックプロセッサ２０２、一体化グラフィックプロセッサ２０６、及び／又はシステムメモリ２０４の間）は、例えば、バスを通して行われる。
【００２５】
[0032]オプションとして、別個のグラフィックプロセッサ２０２及び一体化グラフィックプロセッサ２０６は、ドライバー２０７により制御されてもよい。例えば、ドライバー２０７は、これら別個のグラフィックプロセッサ２０２及び一体化グラフィックプロセッサ２０６を制御するための複数のコンポーネント（例えば、コンピュータコード）を含み得る。このドライバー２０７は、別個のグラフィックプロセッサ２０２及び一体化グラフィックプロセッサ２０６が置かれているシステムのアプリケーションに基づいて、それら別個のグラフィックプロセッサ２０２及び一体化グラフィックプロセッサ２０６を制御してもよい。
【００２６】
[0033]ドライバー２０７は、複数の命令シーケンス（例えば、コマンドのバッチ等）を生成し、そのような命令を別個のグラフィックプロセッサ２０２及び／又は一体化グラフィックプロセッサ２０６へと送ることができる。本実施形態については、それら命令は、別個のグラフィックプロセッサ２０２及び／又は一体化グラフィックプロセッサ２０６に後述するようなオペレーションのうちの何れかを行うように命令することができる。
【００２７】
[0034]一実施形態では、別個のグラフィックプロセッサ２０２は、アプリケーション（図示せず）からビデオデータを受け取る。アプリケーションは、入力装置（例えば、デジタルビデオディスク（ＤＶＤ）プレーヤー等）に対するインターフェースを含み得る。従って、別個のグラフィックプロセッサ２０２は、アプリケーションからの入力としてビデオデータを受け取ることができる。オプションとして、受け取られたビデオデータは、（例えば、保護の目的で）エンコードされてもよい。
【００２８】
[0035]別個のグラフィックプロセッサ２０２によりビデオデータが受け取られると、当該別個のグラフィックプロセッサ２０２は、そのビデオデータを処理することができる。例えば、別個のグラフィックプロセッサ２０２のビデオ／３次元（３Ｄ）エンジン２１０がビデオデータを処理することができる。このような処理は、オプションとして、ビデオデータをデコードすることを含み得る。別のオプションとして、この処理は、別個のグラフィックプロセッサ２０２のフレームバッファ２０８にビデオデータを記憶させることを含み得る。更に別のオプションとして、この処理は、別個のグラフィックプロセッサ２０２のフレームバッファ２０８からビデオデータを読み出し、当該ビデオデータをレンダリングすることを含み得る。
【００２９】
[0036]更に別のオプションとして、この処理は、レンダリングされたビデオデータを暗号化することを含み得る。例えば、別個のグラフィックプロセッサ２０２は、ビデオデータが暗号化されるべきか否かの判定に基づいて、当該ビデオデータを条件付きにて暗号化することができる。このような判定は、一実施形態では、ドライバー２０７から受け取られるコマンドに基づいてなされてもよい。例えば、ビデオデータが記憶されるべきシステムメモリ２０４に関連付けられた仮想アドレスを、そのコマンドが参照している場合には、別個のグラフィックプロセッサ２０２は、ページテーブルを使用して、当該仮想アドレスをシステムメモリ２０４における関連物理アドレスへとマッピングすることができる。
【００３０】
[0037]さらに、別個のグラフィックプロセッサ２０２は、物理アドレスがキー（例えば、暗号化キー）で保護されるシステムメモリ２０４の部分に関連付けられるものとして予め定められているか否かについて、判定することができる。その物理アドレスがキーで保護されるシステムメモリ２０４の部分と関連付けられていると予め定められている場合には、別個のグラフィックプロセッサ２０２は、ビデオデータを暗号化することができる。一実施形態では、別個のグラフィックプロセッサ２０２は、ビデオデータを暗号化するのに使用するためのキーでプログラムされていてもよい。
【００３１】
[0038]さらに、別個のグラフィックプロセッサ２０２は、システムメモリ２０４に暗号化ビデオデータを記憶するために（例えば、暗号化ビデオデータをシステムメモリ２０４へ書き込むために）、システムメモリ２０４と通信し得る。図示するように、システムメモリ２０４は、暗号化部分２０４Ａと非暗号化部分２０４Ｂとを含み得る。暗号化部分２０４Ａは、キーで保護されるシステムメモリ２０４の部分を含んでいてもよい。別のオプションとして、暗号化部分２０４Ａは、暗号化ビデオデータを記憶するためのバッファを含んでいてもよい。更に別のオプションとして、非暗号化部分２０４Ｂは、キーで保護されないシステムメモリ２０４の部分を含み得る。このような非暗号化部分２０４Ｂは、非暗号化ビデオデータを記憶するためのバッファを含んでいてもよい。
【００３２】
[0039]このために、別個のグラフィックプロセッサ２０２は、例えば、暗号化ビデオデータをシステムメモリ２０４の暗号化部分２０４Ａに書き込むことにより、システムメモリ２０４の暗号化部分２０４Ａに暗号化ビデオデータを記憶することができる。システムメモリ２０４における暗号化ビデオデータの記憶に応答して、別個のグラフィックプロセッサ２０２（例えば、別個のグラフィックプロセッサ２０２のビデオ／３Ｄエンジン２１０）は、第１のセマフォ２１２をシステムメモリ２０４へ書き込むことができる。第１のセマフォ２１２は、暗号化ビデオデータがシステムメモリ２０４に記憶されたこと、従って、一体化グラフィックプロセッサ２０６が記憶された暗号化ビデオデータを処理することができること、を指示する。例えば、このような指示に関連付けられた所定の値が第１のセマフォ２１２に記憶され得る。
【００３３】
[0040]さらに、一体化グラフィックプロセッサ２０６は、システムメモリ２０４から暗号化ビデオデータを（例えば、システムメモリ２０４の暗号化部分２０４Ａから暗号化ビデオデータを読み取ることにより）取り出すことができる。一実施形態では、一体化グラフィックプロセッサ２０６は、第１のセマフォ２１２に基づいて、システムメモリ２０４から暗号化ビデオデータを取り出すことができる。例えば、一体化グラフィックプロセッサ２０６は、暗号化ビデオデータがシステムメモリ２０４に記憶されていることを第１のセマフォ２１２が指示している場合にのみ、システムメモリ２０４から暗号化ビデオデータを取り出すことができる。このようにして、第１のセマフォ２１２は、別個のグラフィックプロセッサ２０２がシステムメモリ２０４への暗号化ビデオデータの記憶を完了するまでは、一体化グラフィックプロセッサ２０６がシステムメモリ２０４から暗号化ビデオデータを取り出すことがないことを保証するために、使用することができる。
【００３４】
[0041]従って、第１のセマフォ２１２は、暗号化ビデオデータがシステムメモリ２０４に記憶されていることを、当該第１のセマフォ２１２が指示しているかを判定するために、連続的、周期的等といったように、ポーリングされ得る。オプションとして、第１のセマフォ２１２は、別個のグラフィックプロセッサ２０２及び／又は一体化グラフィックプロセッサ２０６による処理をスケジューリングするホストプロセッサ（図示せず）によりポーリングされてもよい。別のオプションとして、暗号化ビデオデータがシステムメモリ２０４に記憶されていることを第１のセマフォ２１２が指示しているとの判定に応答して、ドライバー２０７は、システムメモリ２０４から暗号化ビデオデータを取り出すよう一体化グラフィックプロセッサ２０６に命令するために（例えば、ホストプロセッサにより）命令されてもよい。
【００３５】
[0042]図示するように、一体化グラフィックプロセッサ２０６の３Ｄエンジン２１４（例えば、グラフィックエンジン）は、システムメモリ２０４から暗号化ビデオデータを取り出すことができる。さらに、一体化グラフィックプロセッサ２０６（例えば、一体化グラフィックプロセッサ２０６の３Ｄエンジン２１４）は、取り出した暗号化ビデオデータを処理することができる。一実施形態では、この処理は、暗号化ビデオデータを解読することを含み得る。別の実施形態では、この処理は、システムメモリ２０４に解読ビデオデータを（例えば、システムメモリ２０４へその解読ビデオデータを書き込むことにより）記憶させることを含み得る。例えば、解読ビデオデータは、システムメモリ２０４の非暗号化部分２０４Ｂに記憶され得る。
【００３６】
[0043]オプションとして、システムメモリ２０４への解読ビデオデータの記憶に応答して、グラフィックプロセッサ２０６（例えば、一体化グラフィックプロセッサ２０６の３Ｄエンジン２１４）は、第２のセマフォ２１６をローカルメモリへ書き込むことができる。この第２のセマフォ２１６は、解読ビデオデータがシステムメモリ２０４に記憶されていること、従って、一体化グラフィックプロセッサ２０６のビデオエンジン２１８が解読ビデオデータを処理することができ、又はディスプレイエンジンが解読ビデオデータを表示することができることを、指示することができる。例えば、このような指示に関連付けられた所定の値が、第２のセマフォ２１６に記憶される。このために、一体化グラフィックプロセッサ２０６のビデオエンジン２１８及び３Ｄエンジン２１４は、第２のセマフォ２１６を使用して同期化され得る。
【００３７】
[0044]例えば、一体化グラフィックプロセッサ２０６（例えば、一体化グラフィックプロセッサ２０６のビデオエンジン２１８）は、システムメモリ２０４から解読ビデオデータを（例えば、システムメモリ２０４の非暗号化部分２０４Ｂから解読ビデオデータを読み取ることにより）取り出すことができる。一実施形態では、一体化グラフィックプロセッサ２０６は、第２のセマフォ２１６に基づいて、システムメモリ２０４から解読ビデオデータを取り出すことができる。例えば、一体化グラフィックプロセッサ２０６は、暗号化ビデオデータがシステムメモリ２０４に記憶されていることを第２のセマフォ２１６が指示している場合にのみ、システムメモリ２０４から解読ビデオデータを取り出すことができる。従って、第２のセマフォ２１６は、解読ビデオデータがシステムメモリ２０４に記憶されていることを当該第２のセマフォ２１６が指示しているか否かを判定するために、連続的、周期的等といったようにポーリングされ得る。このようにして、第２のセマフォ２１６を利用して、一体化グラフィックプロセッサ２０６による（例えば、一体化グラフィックプロセッサ２０６の３Ｄエンジン２１４及びビデオエンジン２１８による）処理を連携させることができる。
【００３８】
[0045]さらに、一体化グラフィックプロセッサ２０６による解読ビデオデータの取り出しに応答して、一体化グラフィックプロセッサ２０６（例えば、一体化グラフィックプロセッサ２０６のビデオエンジン２１８）は、第２のセマフォ２１６へ書き込みを行って、当該第２のセマフォ２１６をリセットすることができる。また、一体化グラフィックプロセッサ２０６による解読ビデオデータの取り出しに応答して、一体化グラフィックプロセッサ２０６（例えば、一体化グラフィックプロセッサ２０６のビデオエンジン２１８）は、解読ビデオデータを更に処理することができる。このような処理は、解読ビデオデータを表示することを含み得る。例えば、一体化グラフィックプロセッサ２０６のビデオエンジン２１８は、解読ビデオデータを使用してディスプレイ（図示せず）を駆動するために、当該ディスプレイと通信することができる。
【００３９】
[0046]一体化グラフィックプロセッサ２０６による暗号化ビデオデータの取り出し時に、当該一体化グラフィックプロセッサ２０６は、暗号化ビデオデータが取り出されたことを別個のグラフィックプロセッサ２０２に対して指示するために、第１のセマフォ２１２に書き込むことができる。例えば、このような指示に関連付けられた所定の値が、第１のセマフォ２１２に記憶され得る。従って、第１のセマフォ２１２は、暗号化ビデオデータが一体化グラフィックプロセッサ２０６によりシステムメモリ２０４から取り出されたか否かを判定するために使用することができ、他の暗号化ビデオデータが別個のグラフィックプロセッサ２０２によりシステムメモリ２０４に（例えば、システムメモリ２０４の暗号化部分２０４Ａに）記憶され得るようにする。この目的で、第１のセマフォ２１２は、別個のグラフィックプロセッサ２０２及び一体化グラフィックプロセッサ２０６による処理を連携させるために使用され得る。
【００４０】
[0047]図３は、更に別の実施形態による別個のグラフィック処理装置（ＧＰＵ）を使用して暗号化ビデオデータをシステムメモリへと転送するための方法３００を示している。オプションとして、この方法３００は、図１及び図２の機能及びアーキテクチャーで実施され得る。しかしながら、勿論、この方法３００は、任意の所望の環境において実施することができる。ここでの説明においても前述の定義が適用できることに注意されたい。
【００４１】
[0048]判断３０２で示すように、ホストシステムがハイブリッドモードにて動作しているか否かの判定がなされる。この実施形態については、ホストシステムは、別個のＧＰＵ及び一体化ＧＰＵを含み、且つ、それら別個のＧＰＵ及び一体化ＧＰＵを使用してビデオデータを協働して処理することのできるシステムを含むことができる。従って、ホストシステムがハイブリッドモードにて動作しているか否かの判定は、別個のＧＰＵ及び一体化ＧＰＵの両者がホストシステムにて動作（例えば、初期化、イネーブル化等）しているか否かの判定を含み得る。例えば、別個のＧＰＵ及び一体化ＧＰＵは、ビデオデータを処理するためにホストシステムにより選択的に使用され得る。
【００４２】
[0049]ホストシステムがハイブリッドモードで動作していないと判定される場合には、この方法３００は、ホストシステムがハイブリッドモードにて動作するようになるまで待つ。しかしながら、ホストシステムがハイブリッドモードにて動作していると判定される場合には、ドライバー初期化中にキーが確立される。オペレーション３０４に注意されたい。この実施形態に関しては、キーは、ビデオデータを暗号化するのに使用することのできる任意のキーを含むことができる。
【００４３】
[0050]一実施形態では、このキーの確立は、当該キーで別個のＧＰＵをプログラミングすることを含み得る。オプションとして、一体化ＧＰＵも又、当該キーでプログラムされ得る。例えば、ホストシステムのドライバーが、別個のＧＰＵ及び一体化ＧＰＵをそのキーでプログラムすることができる。
【００４４】
[0051]別の実施形態では、ドライバー初期化中のキーの確立は、ホストシステムのドライバーが別個のＧＰＵ及び／又は一体化ＧＰＵを初期化するときにキーを確立することを含み得る。単なる例示として、ドライバーは、ホストシステムのオペレーティングシステムが起動される（例えば、パワーアップされる）時に、別個のＧＰＵを初期化し、従って、当該別個のＧＰＵをそのキーでプログラムすることができる。別の実施例として、ドライバーは、ホストシステムが起動される時に、一体化ＧＰＵを初期化し、従って、一体化ＧＰＵをそのキーでプログラムすることができる。
【００４５】
[0052]また、オペレーション３０６にて示すように、エンコードされたビデオデータが別個のＧＰＵにて受け取られる。エンコードされたビデオデータは、一つのフォーマットから別のフォーマットへと変換された任意のビデオデータを含み得る。例えば、ビデオデータは、望まれない使用から当該ビデオデータを保護するために、エンコードされ得る。オプションとして、ビデオデータは、そのビデオデータの発行者によってエンコードされてもよい。
【００４６】
[0053]一実施形態では、エンコードされたビデオデータは、アプリケーションにより受け取られる。単なる例示として、エンコードされたビデオデータは、ホストシステムと、ビデオデータがそこからホストシステムにより受け取られる入力装置との間のインターフェーシングを行うアプリケーションにより受け取られる。このようなアプリケーションは、ホストシステムにインストールされていて、そこで実行されてもよい。
【００４７】
[0054]さらに、オペレーション３０８にて示すように、ビデオデータは、別個のＧＰＵでデコードされる。オプションとして、ビデオデータは、別個のＧＰＵに対して既知のアルゴリズムを使用してデコードされてもよい。例えば、ビデオデータは、（例えば、そのビデオデータが受け取られているときの）第１のフォーマットから（例えば、ホストシステムの一体化ＧＰＵを介して表示され得るような）第１のフォーマットへと、当該ビデオデータを変換することにより、デコードされ得る。
【００４８】
[0055]さらに、ビデオデータは、レンダリングされ、別個のＧＰＵのフレームバッファに記憶される。オペレーション３１０に注意されたい。一実施形態では、ビデオデータは、当該ビデオデータから画像を生成することによりレンダリングされ得る。従って、当該画像がフレームバッファに記憶される。任意なものとして、このようなフレームバッファは、別個のＧＰＵによってのみ使用するものとして指定されていてもよい。従って、別個のＧＰＵは、フレームバッファへデータを書込み、また、フレームバッファからデータを読み取ることのできる唯一のデバイスとなり得る。
【００４９】
[0056]また図示するように、ビデオデータは、暗号化され、システムメモリへと転送される。オペレーション３１２に注意されたい。一つのオプションの実施形態では、ビデオデータは、当該ビデオデータを暗号化するために、別個のＧＰＵのフレームバッファから当該別個のＧＰＵにより読み取られてもよい。オプションとして、ビデオデータは、ドライバー初期化（オペレーション３０４における）中に確立されるキーを使用して暗号化されてもよい。
【００５０】
[0057]さらに、システムメモリへのビデオデータの転送は、システムメモリへ当該ビデオデータを書き込むことを含み得る。オプションとして、ドライバーから受け取られる命令であってビデオデータをシステムメモリへ転送することを別個のＧＰＵに命令する当該命令が、ビデオデータが転送されるべきシステムメモリの位置を指示することができる。例えば、この命令は、システムメモリに関連付けられた仮想アドレスの指示を含み、別個のＧＰＵは、ページテーブルを使用して仮想アドレスを物理アドレスに翻訳し、別個のＧＰＵは、ビデオデータを物理アドレスにてシステムメモリに記憶させてもよい。
【００５１】
[0058]このために、暗号化ビデオデータは、別個のＧＰＵを使用してシステムメモリへ転送され得る。さらに、システムメモリに記憶されたビデオデータの処理が、図４に関して説明するように、一体化ＧＰＵによって更に行われてもよい。
【００５２】
[0059]図４は、更に別の実施形態による一体化ＧＰＵを使用して解読ビデオデータでディスプレイを駆動するための方法４００を示している。オプションとして、この方法４００は、図１から図３の機能及びアーキテクチャーにおいて実施され得る。しかしながら、勿論、この方法４００は、任意の所望の環境において実施することもできる。この説明においても前述の定義を適用できることに注意されたい。
【００５３】
[0060]オペレーション４０２で示すように、暗号化ビデオデータが、一体化ＧＰＵを使用してシステムメモリから取り出される。一実施形態では、暗号化ビデオデータは、当該暗号化ビデオデータを読み取ることにより、取り出される。別の実施形態では、暗号化ビデオデータは、当該暗号化ビデオデータがシステムメモリへ転送されていることをセマフォが指示しているとの判定に応答して、取り出される。
【００５４】
[0061]さらに、オペレーション４０４で示すように、ビデオデータは、解読され、システムメモリへ書き込まれる。この実施形態に関しては、ビデオデータは、一体化ＧＰＵを使用して、解読され、システムメモリへ書き込まれる。オプションとして、ビデオデータは、ドライバー初期化中に確立されるキー（例えば、図３のオペレーション３０４参照）を使用して解読されてもよい。
【００５５】
[0062]さらに、セマフォが書き込まれる。オペレーション４０６に注意されたい。このセマフォは、例えば、一体化ＧＰＵにより書き込まれ得る。この実施形態に関しては、セマフォは、システムメモリの記憶域であって暗号化ビデオデータがシステムメモリから取り出されたか否かの指示を与えるよう特化された当該記憶域を含み得る。例えば、暗号化ビデオデータがシステムメモリから取り出されていることをセマフォが指示している場合には、かかる指示によって、別個のＧＰＵがシステムメモリに追加の暗号化ビデオデータを記憶させることが可能となる。従って、このセマフォは、暗号化ビデオデータが取り出されていることを指示する所定の値で書き込まれる。
【００５６】
[0063]さらに、オペレーション４０８で示すように、ディスプレイは、一体化ＧＰＵを使用して解読ビデオデータで駆動される。例えば、一体化ＧＰＵは、解読ビデオデータをディスプレイに対して走査することができる。このようにして、解読ビデオデータが表示され得る。
【００５７】
[0064]判断４１０において、一体化ＧＰＵがビデオデータでのディスプレイの駆動を完了しているか否かの決定がなされる。例えば、ビデオデータの全てが表示されているか否かの判定がなされる。一体化ＧＰＵがビデオデータでのディスプレイの駆動を完了していないと判定される場合には、この方法４００は、一体化ＧＰＵを使用して解読ビデオデータでディスプレイが駆動されるように継続される。
【００５８】
[0065]しかしながら、一体化ＧＰＵがビデオデータでのディスプレイの駆動を完了していると判定される場合には、別個のＧＰＵにそのことが通知される。オペレーション４１２に注意されたい。一実施形態では、別個のＧＰＵには、セマフォを使用して通知されてもよい。例えば、一体化ＧＰＵがビデオデータでのディスプレイの駆動を完了すると、ホストプロセッサが、セマフォをチェックして、暗号化ビデオデータが取り出されていることを当該セマフォが指示しているか否かの判定を行うことができ、暗号化ビデオデータが取り出されていることを、別個のＧＰＵに通知することができる。このようにして、別個のＧＰＵは、追加の暗号化ビデオデータをシステムメモリに記憶することができるようになる。
【００５９】
[0066]図５は、別の実施形態による複数のＧＰＵを同期化するためのシステム５００を示している。オプションとして、このシステム５００は、図１から図４の機能及びアーキテクチャーにおいて実施することができる。しかしながら、勿論、このシステム５００は、任意の所望の環境においても実施することができる。この説明においても、前述の定義が適用できることに注意されたい。
【００６０】
[0067]図示するように、第１のグラフィックプロセッサ５０２及び第２のグラフィックプロセッサ５１０は、システムメモリ５０４と通信する。この実施形態に関しては、第１のグラフィックプロセッサ５０２は、別個のグラフィックプロセッサを含むことができる。また、この実施形態に関しては、第２のグラフィックプロセッサ５１０は、一体化グラフィックプロセッサを含むことができる。
【００６１】
[0068]更に、システムメモリ５０４は、暗号化部分５０６及び解読部分５０８を含む。暗号化部分５０６は、暗号化ビデオデータをそこに記憶するための複数のバッファ（Ｔ０及びＴ１）を含むことができる。また、解読部分５０８は、解読ビデオデータをそこに記憶するための複数のバッファ（ＩＯ［Ａ］及びＩＯ［Ｂ］）を含むことができる。
【００６２】
[0069]暗号化部分５０６のバッファは、暗号化ビデオデータをそこに記憶するために、第１のグラフィックプロセッサ５０２により交互に使用され得る。同様に、解読部分５０８は、解読ビデオデータをそこに記憶するために、第２のグラフィックプロセッサ５１０により交互に使用され得る。
【００６３】
[0070]例えば、一実施形態では、第１のグラフィックプロセッサ５０２は、アプリケーションから第１のビデオデータを受け取る。第１のビデオデータは、例えば、ビデオデータのフレームを含むことができる。第１のグラフィックプロセッサ５０２は、第１のビデオデータを処理し、当該第１のビデオデータを暗号化することができる。第１のビデオデータを暗号化すると、第１のグラフィックプロセッサ５０２は、このような暗号化された第１のビデオデータを、システムメモリ５０４の暗号化部分５０６の第１のバッファ（Ｔ０）へ書き込むことができる。
【００６４】
[0071]暗号化された第１のビデオデータを暗号化部分５０６の第１のバッファへ書き込んだ後、第１のグラフィックプロセッサ５０２は、暗号化部分５０６の第１のバッファに関連付けられた第１のセマフォをリリースすることができる。例えば、第１のグラフィックプロセッサ５０２は、暗号化ビデオデータが第１のバッファへ書き込まれたことを指示するために予め定められた値を第１のセマフォへ書き込んでもよい。
【００６５】
[0072]このために、第２のグラフィックプロセッサ５１０は、第１のセマフォのリリースを（例えば、第１のセマフォのポーリングに基づく等して）識別して、当該第１のセマフォを取得する。第１のセマフォは、第１のバッファに記憶された暗号化ビデオデータが読み取られている途中にあることを指示するために予め定められた値を第１のセマフォに書き込むことにより、取得される。さらに、第２のグラフィックプロセッサ５１０は、暗号化部分５０６の第１のバッファに記憶された暗号化ビデオデータを読み取ることができる。
【００６６】
[0073]第２のグラフィックプロセッサ５１０が第１のセマフォを取得している間、第１のグラフィックプロセッサ５０２は、アプリケーションから第２のビデオデータを受け取り、第２のビデオデータを処理し、第２のビデオデータを暗号化し、そのように暗号化された第２のビデオデータを、システムメモリ５０４の暗号化部分５０６の第２のバッファ（Ｔ１）に記憶させることができる。暗号化された第２のビデオデータを暗号化部分５０６の第２のバッファに記憶させた後に、第１のグラフィックプロセッサ５０２は、暗号化部分５０６の第２のバッファに関連付けられた第２のセマフォをリリースする。
【００６７】
[0074]第２のグラフィックプロセッサ５１０により、暗号化部分５０６の第１のバッファから暗号化ビデオデータを読み取ると、当該第２のグラフィックプロセッサ５１０は、第１のセマフォを（例えば、第１のバッファに記憶された暗号化ビデオデータが読み取られたことを指示するために予め定められた値を第１のセマフォに書き込むことにより）リリースすることができる。従って、第１のグラフィックプロセッサ５０２は、第１のセマフォのリリースを（例えば、第１のセマフォのポーリングに基づく等して）識別し、暗号化部分５０６の第１のバッファに更なる他のビデオデータを記憶するため第１のセマフォを取得することができる。このために、暗号化部分５０６のバッファにおける暗号化ビデオデータの初期記憶の後、第１のグラフィックプロセッサ５０２は、第２のグラフィックプロセッサ５１０による暗号化部分５０６のバッファに関連付けられたセマフォのリリースに基づいて、そのような暗号化部分５０６の複数のバッファの間での暗号化ビデオデータの記憶を交互に行うことができる。
【００６８】
[0075]さらに、第２のグラフィックプロセッサ５１０によって暗号化ビデオデータを受け取ると、当該第２のグラフィックプロセッサ５１０は、その暗号化ビデオデータを解読することができる。第２のグラフィックプロセッサ５１０はまた、システムメモリ５０４の解読部分５０８の第１のバッファ（ＩＯ［Ａ］）に関連付けられた第３のセマフォを取得することができる。解読部分５０８の第１のバッファに関連付けられた第３のセマフォの取得は、解読ビデオデータが解読部分５０８の第１のバッファへ書き込まれている途中にあることを指示するための値を第３のセマフォへ書き込むことを含み得る。
【００６９】
[0076]第２のグラフィックプロセッサ５１０は、取り出された暗号化ビデオデータを解読し、その解読ビデオデータをシステムメモリ５０４の解読部分５０８の第１のバッファへ書き込むことができる。第２のグラフィックプロセッサ５１０は、解読ビデオデータが解読部分５０８の第１のバッファへ書き込まれると、第３のセマフォをリリースすることができる。第３のセマフォをリリースすると、第２のグラフィックプロセッサ５１０は、更に、解読部分５０８の第１のバッファから解読ビデオデータを読み取り、当該解読ビデオデータをディスプレイに表示することができる。
【００７０】
[0077]解読ビデオデータが表示されている間、第２のグラフィックプロセッサ５１０は、第１のグラフィックプロセッサ５０２による暗号化部分５０６の第２のバッファに関連付けられた第２のセマフォのリリースを識別し、第２のセマフォを取得することができる。さらに、第２のグラフィックプロセッサ５１０は、暗号化部分５０６の第２のバッファに記憶された暗号化ビデオデータを読み取ることができる。
【００７１】
[0078]暗号化ビデオデータが暗号化部分５０６の第２のバッファから読み取られると、第２のグラフィックプロセッサ５１０は、暗号化部分５０６の第２のバッファに関連付けられた第２のセマフォをリリースし、第１のグラフィックプロセッサ５０２が、前述したように、他の暗号化ビデオデータをそこに書き込むことを可能とし得る。第２のグラフィックプロセッサ５１０により暗号化ビデオデータが受け取られると、当該第２のグラフィックプロセッサ５１０は、暗号化ビデオデータを解読することができる。また、第２のグラフィックプロセッサ５１０は、システムメモリ５０４の解読部分５０８の第２のバッファ（ＩＯ［Ｂ］）に関連付けられた第４のセマフォを取得することができる。
【００７２】
[0079]第２のグラフィックプロセッサ５１０は、取り出された暗号化ビデオデータを解読し、その解読ビデオデータをシステムメモリ５０４の解読部分５０８の第２のバッファへと書き込むことができる。第２のグラフィックプロセッサ５１０は、解読ビデオデータが解読部分５０８の第２のバッファへと書き込まれると、第４のセマフォをリリースすることができる。第４のセマフォをリリースすると、第２のグラフィックプロセッサ５１０は、更に、解読部分５０８の第２のバッファから解読ビデオデータを読み取り、当該解読ビデオデータをディスプレイに表示することができる。システムメモリ５０４の解読部分５０８のバッファにおける解読ビデオデータの初期記憶の後、第２のグラフィックプロセッサ５１０は、当該第２のグラフィックプロセッサ５１０による解読部分５０８のバッファに関連付けられたセマフォのリリースに基づいて、そのような解読部分５０８のバッファ間での解読ビデオデータの記憶を交互に行うことができる。
【００７３】
[0080]従って、一つの典型的な実施形態において、システムメモリ５０４の暗号化部分５０６に関しては、第１のグラフィックプロセッサ５０２は、暗号化ビデオデータをシステムメモリ５０４の第１のバッファ（Ｔ０）へ書込み、第２のグラフィックプロセッサ５１０は、第１のグラフィックプロセッサが暗号化ビデオデータをシステムメモリ５０４の第１のバッファ（Ｔ０）へ書き込む時（例えば、書き込む間）、システムメモリ５０４の第２のバッファ（Ｔ１）から暗号化ビデオデータを読み取ることができる。さらに、第１のグラフィックプロセッサ５０２は、暗号化ビデオデータをシステムメモリ５０４の第２のバッファ（Ｔ１）へ書き込み、第２のグラフィックプロセッサ５１０は、第１のグラフィックプロセッサ５０２が暗号化ビデオデータをシステムメモリ５０４の第２のバッファ（Ｔ１）へ書き込む時に、システムメモリ５０４の第１のバッファ（Ｔ０）から暗号化ビデオデータを読み取ることができる。このようにしてバッファを交互に使用することにより、第１のグラフィックプロセッサ５０２及び第２のグラフィックプロセッサ５１０によるバッファへのビデオデータの書き込み及びそれらバッファからのビデオデータの読み取りに伴う遅延を防止することができる。
【００７４】
[0081]別の典型的な実施形態では、前述したように、セマフォは、第１のグラフィックプロセッサ５０２がシステムメモリ５０４の第１のバッファ（Ｔ０）への暗号化ビデオデータの書き込みを完了するまでは、第２のグラフィックプロセッサ５１０がシステムメモリ５０４の第１のバッファ（Ｔ０）からの暗号化ビデオデータを読み取らないことを保証するために使用され得る。さらに、セマフォは、第１のグラフィックプロセッサ５０２がシステムメモリ５０４の第２のバッファ（Ｔ１）への暗号化ビデオデータの書き込みを完了するまでは、第２のグラフィックプロセッサ５１０がシステムメモリ５０４の第２のバッファ（Ｔ１）からの暗号化ビデオデータを読み取らないことを保証し得る。
【００７５】
[0082]図６は、更に別の実施形態によるセマフォを使用して複数のＧＰＵを同期化するための方法６００を示している。オプションとして、この方法６００は、図１から図５の機能及びアーキテクチャーで実施し得る。しかしながら、勿論、この方法６００は、任意の所望の環境においても実施することができる。この説明を通して、前述の定義が適用できることに注意されたい。
【００７６】
[0083]判断６０２で示すように、別個のグラフィックプロセッサが、暗号化ビデオデータを、ローカルバッファ（ｄＡ）からシステムメモリの暗号化部分（Ｔ）へコピー（例えば、書き込み）するか否かの判定がなされる。このようなローカルメモリは、例えば、別個のグラフィックプロセッサに対してローカルなメモリを含み得る。別個のグラフィックプロセッサが暗号化ビデオデータを、ローカルバッファからシステムメモリの暗号化部分へコピーしていないと判定される場合には、この方法は、その別個のグラフィックプロセッサが、暗号化ビデオデータを、そのローカルバッファからシステムメモリの暗号化部分へとコピーするのを待ち続ける。
【００７７】
[0084]別個のグラフィックプロセッサが暗号化ビデオデータをローカルバッファからシステムメモリの暗号化部分へとコピーすると判定される場合には、当該別個のグラフィックプロセッサがセマフォを（例えば、値「１」をセマフォに書き込むことにより）リリースするか否かの判定がなされる。判断６０４に注意されたい。この実施形態に関しては、別個のグラフィックプロセッサは、ローカルバッファからシステムメモリの暗号化部分への暗号化ビデオデータのコピーが完了した後、セマフォをリリースすることができる。
【００７８】
[0085]別個のグラフィックプロセッサがセマフォをリリースしていないと判定されるならば、この方法６００は、当該別個のグラフィックプロセッサがそのセマフォをリリースするのを待ち続ける。例えば、セマフォは、当該セマフォがリリースされたことをその値が指示しているか否かを判定するために連続的にポーリングされてもよい。
【００７９】
[0086]別個のグラフィックプロセッサがセマフォをリリースすると判定される場合には、当該セマフォが取得されるか否かの判定がなされる（判断６０６参照）。単なる例示として、セマフォは、別個のグラフィックプロセッサが当該セマフォをリリースしたとの判定時に、一体化グラフィックプロセッサにより取得される。図示するように、セマフォは、値「１」を当該セマフォへ書き込むことにより取得される。
【００８０】
[0087]セマフォが取得されていないと判定される場合には、この方法６００は、当該セマフォが取得されるのを待ち続ける。セマフォが取得されていると判定されるならば、暗号化ビデオデータがシステムメモリの暗号化部分から読み取られ、解読され、システムメモリの非暗号化部分（ＩＯ［Ａ］）へとコピーされる。オペレーション６０８に注意されたい。
【００８１】
[0088]さらに、一体化グラフィックプロセッサのビデオエンジンは、オペレーション６０９で示すように、システムメモリの非暗号化部分に記憶された解読ビデオデータでディスプレイを駆動する。例えば、ビデオエンジンは、システムメモリの非暗号化部分から解読ビデオデータを読み取り、このような解読ビデオデータを表示することができる。さらに、セマフォが、オペレーション６１０で示すように、（例えば、値「０」をセマフォに書き込むことにより）リリースされる。例えば、セマフォは、一体化グラフィックプロセッサによりリリースされ得る。
【００８２】
[0089]また、図示するように、セマフォは、再び、（例えば、値「１」をそのセマフォへ書き込むことにより）取得される。オペレーション６１２に注意されたい。一実施形態では、セマフォは、一体化グラフィックプロセッサによるセマフォのリリース時に、別個のグラフィックプロセッサにより取得され得る。従って、別個のグラフィックプロセッサは、追加の暗号化ビデオデータをローカルバッファからシステムメモリの暗号化部分へとコピーすることができる。
【００８３】
[0090]図７は、更に別の実施形態による複数のセマフォを使用して複数のＧＰＵを同期化するための方法７００を示している。オプションとして、この方法７００は、図１から図６の機能及びアーキテクチャーにおいて実施することができる。しかしながら、勿論、この方法７００は、任意の所望の環境においても実施することができる。ここでもまた、この説明を通して、前述した定義を適用できることに注意されたい。
【００８４】
[0091]判断７０２で示すように、別個のグラフィックプロセッサが暗号化ビデオデータを第１のローカルバッファ（ｄ０Ａ）からシステムメモリの暗号化部分の第１のバッファ（Ｔ０）へとコピー（例えば、書き込む）するか否かの判定がなされる。このような第１のローカルバッファは、例えば、別個のグラフィックプロセッサに対してローカルなメモリを含むことができる。別個のグラフィックプロセッサが暗号化ビデオデータを第１のローカルバッファからシステムメモリの暗号化部分の第１のバッファへとコピーしていないと判定される場合には、この方法７００は、別個のグラフィックプロセッサが暗号化ビデオデータを第１のローカルバッファからシステムメモリの暗号化部分の第１のバッファへとコピーするのを待ち続ける。
【００８５】
[0092]別個のグラフィックプロセッサが暗号化ビデオデータを第１のローカルバッファからシステムメモリの暗号化部分の第１のバッファへとコピーしていると判定されるならば、別個のグラフィックプロセッサが第１のセマフォを（例えば、値「１」をこの第１のセマフォに書き込むことにより）リリースするか否かの判定がなされる。判断７０４に注意されたい。第１のセマフォは、システムメモリの暗号化部分の第１のバッファに関連付けられている。この実施形態に関しては、別個のグラフィックプロセッサは、第１のローカルバッファからシステムメモリの暗号化部分の第１のバッファへの暗号化ビデオデータのコピーの完了後、第１のセマフォをリリースする。
【００８６】
[0093]別個のグラフィックプロセッサが第１のセマフォをリリースしていないと判定される場合には、この方法７００は、別個のグラフィックプロセッサが第１のセマフォをリリースするのを待ち続ける。例えば、第１のセマフォは、当該第１のセマフォがリリースされたか否かを判定するために連続的にポーリングされてもよい。
【００８７】
[0094]別個のグラフィックプロセッサが第１のセマフォをリリースしていると判定される場合には、図示するように、並列処理が行われる。例えば、オペレーション７１２から７１６及び７２６が、オペレーション７０６から７１０及び７１８から７２４のうちのいずれかと並列に行われる。一実施形態では、第１のセマフォが取得されるか否かの判定がなされる（判断７０６参照）。単なる例示として、第１のセマフォは、別個のグラフィックプロセッサがその第１のセマフォをリリースしたとの判定時に、一体化グラフィックプロセッサにより取得されてもよい。図示するように、第１のセマフォは、値「１」を当該第１のセマフォへ書き込むことにより取得されてもよい。
【００８８】
[0095]第１のセマフォが取得されていないと判定される場合には、この方法７００は、第１のセマフォが取得されるのを待ち続ける。第１のセマフォが取得されていると判定される場合には、暗号化ビデオデータが、システムメモリの暗号化部分の第１のバッファから読み取られ、解読され、システムメモリの非暗号化部分（ＩＯ［Ａ］）の第１のバッファへとコピーされる。オペレーション７０８に注意されたい。
【００８９】
[0096]さらに、一体化グラフィックプロセッサのビデオエンジンは、オペレーション７０９で示すように、システムメモリの非暗号化部分の第１のバッファに記憶された解読ビデオデータでディスプレイを駆動する。例えば、ビデオエンジンは、システムメモリの非暗号化部分の第１のバッファから解読ビデオデータを読み取り、そのような解読ビデオデータを表示することができる。さらに、第１のセマフォは、オペレーション７１０で示すように、（例えば、値「０」をそのセマフォへ書き込むことにより）リリースされる。例えば、第１のセマフォは、一体化グラフィックプロセッサによりリリースされ得る。
【００９０】
[0097]別の実施形態では、別個のグラフィックプロセッサが第２のセマフォを取得するか否かの判定がなされる。判定７１２に注意されたい。従って、一体化グラフィックプロセッサが第１のセマフォを取得するか否かの判定がなされる（判定７０６）間に、別個のグラフィックプロセッサが第２のセマフォを取得するか否かの判定がなされる（判定７１２）。
【００９１】
[0098]第２のセマフォは、システムメモリの暗号化部分の第２のバッファに関連付けられている。この実施形態に関しては、別個のグラフィックプロセッサは、第２のセマフォが、（例えば、一体化グラフィックプロセッサにより）リリースされた場合にのみ、第２のセマフォを取得することができる。この第２のセマフォの取得は、暗号化ビデオデータがシステムメモリの暗号化部分の第２のバッファへ書き込まれていることを指示するために、値「０」を第２のセマフォへ書き込むことを含むことができる。
【００９２】
[0099]第２のセマフォが別個のグラフィックプロセッサにより取得されていないと判定される場合には、この方法７００は、別個のグラフィックプロセッサがその第２のセマフォを取得するのを待ち続ける。第２のセマフォが別個のグラフィックプロセッサにより取得されていると判定される場合には、別個のグラフィックプロセッサは、他の暗号化ビデオデータを第２のローカルバッファ（ｄ０Ｂ）からシステムメモリの暗号化部分の第２のバッファ（Ｔ１）へとコピー（例えば、書き込み）する。オペレーション７１４に注意されたい。このような第２のローカルバッファは、例えば、別個のグラフィックプロセッサに対してローカルなメモリを含むことができる。別個のグラフィックプロセッサが暗号化ビデオデータを第２のローカルバッファからシステムメモリの暗号化部分の第２のバッファへとコピーしていないと判定される場合には、この方法７００は、別個のグラフィックプロセッサが暗号化ビデオデータを第２のローカルバッファからシステムメモリの暗号化部分の第２のバッファへとコピーするのを待ち続ける。
【００９３】
[0100]別個のグラフィックプロセッサが暗号化ビデオデータを第２のローカルバッファからシステムメモリの暗号化部分の第２のバッファへとコピーしていると判定される場合には、別個のグラフィックプロセッサが第２のセマフォを、（例えば、値「１」をその第２のセマフォに書き込むことにより）リリースするか否かの判定がなされる。判定７１６に注意されたい。第２のセマフォは、システムメモリの暗号化部分の第２のバッファに関連付けられている。この実施形態に関しては、別個のグラフィックプロセッサは、第２のローカルバッファからシステムメモリの暗号化部分の第２のバッファへの暗号化ビデオデータのコピーの完了後に、第２のセマフォをリリースすることができる。
【００９４】
[0101]別個のグラフィックプロセッサが第２のセマフォをリリースしていないと判定される場合には、この方法７００は、当該別個のグラフィックプロセッサが第２のセマフォをリリースするのを待ち続ける。例えば、第２のセマフォは、当該第２のセマフォがリリースされたことをその値が指示しているか否かを判定するために、連続的にポーリングされてもよい。
【００９５】
[0102]別個のグラフィックプロセッサが第２のセマフォをリリースしていると判定される場合には、図示するように、並列処理が行われる。一実施形態では、第２のセマフォが取得される否かの判定がなされる（判定７１８参照）。単なる例示として、第２のセマフォは、別個のグラフィックプロセッサが第２のセマフォをリリースしたとの判定時に、一体化グラフィックプロセッサにより取得され得る。図示するように、第２のセマフォは、値「１」を第２のセマフォへ書き込むことにより取得されてもよい。
【００９６】
[0103]第２のセマフォが取得されていないと判定される場合には、この方法７００は、その第２のセマフォが取得されるのを待ち続ける。第２のセマフォが取得されていると判定される場合には、暗号化ビデオデータがシステムメモリの暗号化部分の第２のバッファから読み取られ、解読され、システムメモリの非暗号化部分（ＩＯ［Ｂ］）へとコピーされる。オペレーション７２０に注意されたい。
【００９７】
[0104]さらに、一体化グラフィックプロセッサのビデオエンジンは、オペレーション７２２で示すように、システムメモリの非暗号化部分の第２のバッファに記憶された解読ビデオデータでディスプレイを駆動する。例えば、ビデオエンジンは、システムメモリの非暗号化部分の第２のバッファから解読ビデオデータを読み取り、そのような解読ビデオデータを表示することができる。さらに、第２のセマフォは、オペレーション７２４で示すように、（例えば、値「０」を第２のセマフォへ書き込むことにより）リリースされる。例えば、第２のセマフォは、一体化グラフィックプロセッサによりリリースされてもよい。
【００９８】
[0105]別の実施形態では、別個のグラフィックプロセッサが第１のセマフォを取得するか否かの判定が行われる。判定７２６に注意されたい。従って、一体化グラフィックプロセッサが第２のセマフォを取得するか否かの判定がなされる（判定７１８）間に、別個のグラフィックプロセッサが第１のセマフォを取得するか否かの判定がなされる（判定７２６）。
【００９９】
[0106]従って、第１のセマフォは、再度、別個のグラフィックプロセッサにより（例えば、値「１」をその第１のセマフォへ書き込むことにより）取得され得る。一実施形態では、第１のセマフォは、一体化グラフィックプロセッサによる第１のセマフォのリリース時に、別個のグラフィックプロセッサにより取得され得る。従って、別個のグラフィックプロセッサは、付加的な暗号化ビデオデータを第１のローカルバッファからシステムメモリの暗号化部分の第１のバッファへとコピーすることができる（判定７０２）。
【０１００】
[0107]図８は、前述の種々の実施形態の種々のアーキテクチャー及び／又は機能が実施され得る典型的なシステム８００を例示している。図示するように、このシステム８００は、通信バス８０２に接続される少なくとも一つのホストプロセッサ８０１を含んで提供される。このシステム８００は、主メモリ８０４も含み得る。制御ロジック（ソフトウエア）及びデータは、主メモリ８０４に記憶される。この主メモリは、ランダムアクセスメモリ（ＲＡＭ）の形式を取り得る。
【０１０１】
[0108]システム８００は、グラフィックプロセッサ８０６及びディスプレイ８０８、即ち、コンピュータモニタも含む。一実施形態では、グラフィックプロセッサ８０６は、複数のシェーダーモジュール、ラスタリゼーションモジュール等を含むことができる。前述のモジュールの各々は、グラフィック処理装置（ＧＰＵ）を形成するように、単一半導体プラットフォーム上に配設することもできる。
【０１０２】
[0109]本説明では、単一半導体プラットフォームは、ソールユニタリ半導体ベース集積回路又はチップを指すことができる。また、「単一半導体プラットフォーム」との用語は、オンチップオペレーションをシミュレートし、従来の中央処理装置（ＣＰＵ）及びバスインプリメンテーションを使用するよりも実質的な改善をなすことのできる接続性を増したマルチチップモジュールを指すことができることに注意されたい。勿論、ユーザの希望に応じて、種々なモジュールを、別々に、又は半導体プラットフォームの種々な組合せにて配設することもできる。
【０１０３】
[0110]このシステム８００は、２次記憶装置８１０を含むこともできる。この２次記憶装置８１０は、例えば、ハードディスクドライブ及び／又はフロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブ等のリムーバブル記憶装置ドライブを含む。リムーバブル記憶装置ドライブは、周囲の方法にてリムーバブル記憶装置からの読み取り及び／又はリムーバブル記憶装置への書き込みを行う。
【０１０４】
[0111]コンピュータプログラム、即ちコンピュータ制御ロジックアルゴリズムは、主メモリ８０４及び／又は２次記憶装置８１０に記憶され得る。このようなコンピュータプログラムは、実行時に、システム８００が種々な機能を遂行できるようにする。メモリ８０４、記憶装置８１０及び／又は任意の他の記憶装置は、コンピュータ読み取り可能な媒体の候補例である。
【０１０５】
[0112]一実施形態では、前述した種々の図のアーキテクチャー及び／又は機能は、ホストプロセッサ８０１、グラフィックプロセッサ８０６、ホストプロセッサ８０１及びグラフィックプロセッサ８０６の両者の能力の少なくとも一部分を担うことのできる集積回路（図示せず）、チップセット（即ち、関連する機能を遂行するためのユニットとして販売され作用するように設計された一群の集積回路等）、及び／又はそのための任意の他の集積回路で実施することができる。
【０１０６】
[0113]さらに、前述した種々な図のアーキテクチャー及び／又は機能は、汎用コンピュータシステム、サーキットボードシステム、娯楽目的専用のゲームコンソールシステム、特定用途向けシステム、及び／又は任意の他の希望のシステムにおいて実施することができる。例えば、このシステム８００は、デスクトップコンピュータ、ラップトップコンピュータ、及び／又は任意の他のタイプのロジックの形を取ることができる。さらに、システム８００は、これらに限定されるものではないが、個人向け携帯情報端末（ＰＤＡ）装置、モバイルホン装置、テレビジョン等を含む種々の他の装置の形をとることができる。
【０１０７】
[0114]さらに、図示していないが、システム８００は、通信目的のネットワーク（例えば、遠隔通信ネットワーク、ローカルエリアネットワーク（ＬＡＮ）、ワイヤレスネットワーク、インターネットの如きワイドエリアネットワーク（ＷＡＮ）、ピアツーピアネットワーク、ケーブルネットワーク等）に結合されてもよい。
【０１０８】
[0115]種々の実施形態について前述してきたが、これらは、単なる例示としてのものであって、これらに限定するものでないことに注意されたい。従って、好ましい実施形態の広さ及び範囲は、前述した典型的な実施形態のいずれによっても限定されるべきでなく、それらは、特許請求の範囲の記載及びそれらの均等の範囲においてのみ定められるべきものである。
【符号の説明】
【０１０９】
１００…ビデオ処理システム、１０２…第１のグラフィックプロセッサ、１０４…第２のグラフィックプロセッサ、２００…ビデオ処理システム、２０２…第１のグラフィックプロセッサ（別個のグラフィックプロセッサ）、２０４…システムメモリ、２０４Ａ…暗号化部分、２０４Ｂ…非暗号化部分、２０６…第２のグラフィックプロセッサ（一体化グラフィックプロセッサ）、２０７…ドライバー、２０８…フレームバッファ、２１０…ビデオ／３次元（３Ｄ）エンジン、２１２…第１のセマフォ、２１４…一体化グラフィックプロセッサの３Ｄエンジン、２１６…第２のセマフォ、２１８…一体化グラフィックプロセッサのビデオエンジン、５００…複数のＧＰＵを同期化するためのシステム、５０２…第１のグラフィックプロセッサ、５０４…システムメモリ、５０６…暗号化部分、Ｔ０…第１のバッファ、Ｔ１…第２のバッファ、５０８…解読部分、ＩＯ［Ａ］…第１のバッファ、ＩＯ［Ｂ］…第２のバッファ、５１０…第２のグラフィックプロセッサ、８００…システム、８０１…ホストプロセッサ、８０２…通信バス、８０４…主メモリ、８０６…グラフィックプロセッサ、８０８…ディスプレイ、８１０…２次記憶装置。
【図１】
2010063082.tif 000003
【図２】
2010063082.tif 000004
【図３】
2010063082.tif 000005
【図４】
2010063082.tif 000006
【図５】
2010063082.tif 000007
【図６】
2010063082.tif 000008
【図７】
2010063082.tif 000009
【図８】
2010063082.tif 000010
【外国語明細書】
2010063082000001.pdf