説明

複数のグラフィックプロセッサ間での通信を暗号化するためのビデオ処理システム、方法、及びコンピュータプログラム製品

【課題】ハイブリッド環境におけるビデオ処理の分散処理環境において、アクセス脆弱性を改善したビデオ処理システム、方法及びコンピュータプログラム製品を提供する。
【解決手段】グラフィックプロセッサを含むビデオ処理システムにおいて、第1のグラフィックプロセッサと、協働してビデオデータを処理するための第2のグラフィックプロセッサを設け、第1のグラフィックプロセッサと第2のグラフィックプロセッサとの通信を暗号化する。

【発明の詳細な説明】
【技術分野】
【0001】
[0001]本発明は、ビデオ処理に関するものであり、より詳細には、ハイブリッド環境におけるビデオ処理に関するものである。
【背景技術】
【0002】
[0002]従来のコンピューティング環境では、ビデオ処理は、グラフィックプロセッサにおいて実施されることが多い。このようなビデオ処理を強化するために、複数の異なるグラフィックプロセッサ間で、当該処理を分散させることがよく行われている。しかしながら、このような分散処理環境では、一般に、種々の制限が出現することが分かっている。例えば、分散グラフィックプロセッサ間の通信は、通当該通信に対して望ましくないアクセスに脆弱であることが多く、また、当該通信に対する望まれない変更に脆弱であることが多い。
【発明の概要】
【発明が解決しようとする課題】
【0003】
[0003]従って、従来技術に伴うこれらの問題及び/又はその他の問題に対処することが必要とされている。
【課題を解決するための手段】
【0004】
[0004]複数のグラフィックプロセッサ間での通信を暗号化するためのビデオ処理システム、方法及びコンピュータプログラム製品を提供する。第1のグラフィックプロセッサが設けられる。加えて、第1のグラフィックプロセッサと通信し、且つ、協働してビデオデータを処理するための第2のグラフィックプロセッサが設けられる。さらに、このような通信が暗号化される。
【図面の簡単な説明】
【0005】
【図1】一実施形態による複数のグラフィックプロセッサを含むビデオ処理システムを示す図である。
【図2】別の実施形態による複数のグラフィックプロセッサを含むビデオ処理システムを示す図である。
【図3】更に別の実施形態による別個のグラフィック処理装置(GPU)を使用してシステムメモリへ暗号化ビデオデータを転送するための方法を示す図である。
【図4】更に別の実施形態による一体化GPUを使用して解読ビデオデータでディスプレイを駆動するための方法を示す。
【図5】別の実施形態による複数のGPUを同期化するためのシステムを示す図である。
【図6】更に別の実施形態によるセマフォを使用して複数のGPUを同期化するための方法を示す図である。
【図7】更に別の実施形態による複数のセマフォを使用して複数のGPUを同期化するための方法を示す図である。
【図8】種々の前述の実施形態の種々のアーキテクチャー及び/又は機能を実施することができる典型的なシステムを例示する図である。
【発明を実施するための形態】
【0006】
[0013]図1は、一実施形態による複数のグラフィックプロセッサを含むビデオ処理システム100を示している。図示するように、第1のグラフィックプロセッサ102は、第2のグラフィックプロセッサ104と通信する。一実施形態では、第1のグラフィックプロセッサ102は、バスを介して第2のグラフィックプロセッサ104と通信することができる。例えば、バスは、周辺コンポーネント相互接続(PCI)バス、PCIエクスプレス(PCIE)バス等であってもよい。しかしながら、勿論、第1のグラフィックプロセッサ102は、任意の所望の態様にて第2のグラフィックプロセッサ104と通信することができる。
【0007】
[0014]本実施形態については、第1のグラフィックプロセッサ102及び第2のグラフィックプロセッサ104は、ビデオデータを処理することのできる任意のタイプのグラフィックプロセッサ(例えば、グラフィック処理ユニット(GPU))であってもよい。オプションとして、第1のグラフィックプロセッサ102及び第2のグラフィックプロセッサ104は、対称型であってよい。別のオプションとして、第1のグラフィックプロセッサ102及び第2のグラフィックプロセッサ104は、非対称型であってもよい。
【0008】
[0015]また、一実施形態では、第1のグラフィックプロセッサ102は、別個のグラフィックプロセッサを含み得る。第1のグラフィックプロセッサ102は、所定のタスクを行うことに専用のものとなっていてもよい。このような所定のタスクとしては、単なる例示ではあるが、ビデオデータ(例えば、アプリケーションから受け取ったビデオの少なくとも一つのフレーム等)のレンダリングがある。この目的で、第1のグラフィックプロセッサ102は、レンダリング用にアプリケーションからビデオデータを受け取るために、当該アプリケーションと通信することができる。
【0009】
[0016]別の実施形態では、第2のグラフィックプロセッサ104は、一体化グラフィックプロセッサを含み得る。例えば、第2のグラフィックプロセッサ104は、ホストシステム(例えば、第1のグラフィックプロセッサ102及び第2のグラフィックプロセッサ104を使用するシステム等)に一体化することができる。別の例として、第2のグラフィックプロセッサ104は、(例えば、ホストシステムの)マザーボードに一体化することができる。
【0010】
[0017]第2のグラフィックプロセッサ104も、オプションとして、第1のグラフィックプロセッサ102に専用の所定のタスクとは異なる所定のタスクを行うことに専用のものとなっていてもよい。例えば、第2のグラフィックプロセッサ104は、ビデオデータを表示及び/又はオーバーレイすることに専用のものとすることができる。従って、第2のグラフィックプロセッサ104は、ビデオデータを表示及び/又はオーバーレイするためにディスプレイと通信することができる。
【0011】
[0018]従って、一実施形態では、第1のグラフィックプロセッサ102及び第2のグラフィックプロセッサ104は、ビデオデータを協働して処理するために通信することができる。オプションとして、第1のグラフィックプロセッサ102は、少なくとも第1のタイプのビデオデータ処理を行い、第2のグラフィックプロセッサ104は、少なくとも第2のタイプのビデオデータ処理を行うことができる。単なる例示として、第1のグラフィックプロセッサ102は、ビデオデータをレンダリングし、第2のグラフィックプロセッサ104は、レンダリングされたビデオデータを表示することができる。
【0012】
[0019]別のオプションとして、第1のグラフィックプロセッサ102は、ビデオデータの第1の部分を処理し、第2のグラフィックプロセッサ104がそのビデオデータの第2の部分を処理することができる。さらに、第1のグラフィックプロセッサ102及び第2のグラフィックプロセッサ104は、任意の所望の順序にてビデオデータを協働して処理することができる。種々の実施例について前述してきたが、勿論、第1のグラフィックプロセッサ102及び第2のグラフィックプロセッサ104は、任意の所望の態様にて、ビデオデータを協働して処理することもできることに注意されたい。
【0013】
[0020]さらに、第1のグラフィックプロセッサ102も第2のグラフィックプロセッサ104も一つのみ示してあるが、任意の数の第1のグラフィックプロセッサ102が、任意の数の第2のグラフィックプロセッサ104と通信できるようにすることもできることに注意されたい。従って、オプションとして、複数の第1のグラフィックプロセッサ102(例えば、別個のグラフィックプロセッサ)が、ビデオデータを協働して処理するために、ビデオ処理システム100に含まれていてもよい。単なる例示として、複数の第1のグラフィックプロセッサ102は、ビデオデータに対して少なくとも一つの所定のタスクを協働して行うことができる。
【0014】
[0021]さらに、第1のグラフィックプロセッサ102及び第2のグラフィックプロセッサ104がビデオデータを共同して処理するために通信する前述の実施形態については、第1のグラフィックプロセッサ102と第2のグラフィックプロセッサ104との間の通信を、暗号化することができる。この通信は、任意の所望の態様にて暗号化し得る。例えば、この通信は、ターボサイファー暗号化機構、ビット移動ユニット、ビットスクランブリング(例えば、ピクセルシェーダー機能を通してビットをスワッピングする、等)、及び/又は通信を暗号化することのできるその他の任意のアルゴリズムを使用して、暗号化することができる。
【0015】
[0022]一つの典型的な実施形態では、第1のグラフィックプロセッサ102が、ビデオデータを処理することができる(例えば、デコードする)。例えば、第1のグラフィックプロセッサ102は、ビデオデータを(例えば、そのアプリケーションから)受信後、そのビデオデータを処理することができる。さらに、そのビデオデータは、暗号化され得る。例えば、第1のグラフィックプロセッサ102は、デコーディング後に、ビデオデータを暗号化することができる。さらに、ビデオデータは、更なる処理のために、第2のグラフィックプロセッサ104へと送られてもよい。単なる例示として、第1のグラフィックプロセッサ102は、第2のグラフィックプロセッサ104へ(例えば、バスを通して)通信するために、処理されたビデオデータを暗号化することができる。このようにして、暗号化ビデオデータが第1のグラフィックプロセッサ102から第2のグラフィックプロセッサ104により受け取られる時、第2のグラフィックプロセッサ104は、暗号化ビデオデータを解読して、解読されたビデオデータを処理することができる。
【0016】
[0023]別の典型的な実施形態では、第1のグラフィックプロセッサ102が、ビデオデータを処理することができる(例えば、デコードする)。そして、ビデオデータの暗号化に使用するために、キー(例えば、暗号化キー)が(例えば、第1のグラフィックプロセッサ102に)与えられる。さらに、第2のグラフィックプロセッサ104は、そのビデオデータを更に処理することができる。暗号化ビデオデータは、更なる処理のために、第2のグラフィックプロセッサ104へと送られてもよい。別のオプションとして、キーは、暗号化ビデオデータの解読に使用するために、第2のグラフィックプロセッサ104に与えられてもよい。
【0017】
[0024]一つのオプションの実施形態では、キーは、第1のグラフィックプロセッサ102及び/又は第2のグラフィックプロセッサ104を当該キーでプログラミングすることにより、第1のグラフィックプロセッサ102及び/又は第2のグラフィックプロセッサ104へと与えることができる。例えば、第1のグラフィックプロセッサ102及び/又は第2のグラフィックプロセッサ104は、これら第1のグラフィックプロセッサ102及び/又は第2のグラフィックプロセッサ104の初期化(例えば、ブートアップ)時に当該キーでプログラムされてもよい。
【0018】
[0025]別の実施形態では、第1のグラフィックプロセッサ102及び第2のグラフィックプロセッサ104の動作は、それらの間の通信のセキュリティーのために、同期化されてもよい。オプションとして、通信のセキュリティーは、暗号化動作を行うことにより、保証されてもよい。例えば、前述したように、第1のグラフィックプロセッサ102と第2のグラフィックプロセッサ104との間の通信が暗号化されてもよい。また、前述したように、この暗号化動作を、例えば、ビデオデータに対して実行して、暗号化ビデオデータを生成してもよい。
【0019】
[0026]別のオプションとして、第1のグラフィックプロセッサ102及び第2のグラフィックプロセッサ104の同期化動作は、これら第1のグラフィックプロセッサ102及び第2のグラフィックプロセッサ104によって行われる処理を同期化(例えば、コーディネーティング)することを含んでいてもよい。このような処理は、デコードされたビデオデータをそれ自身のフレームバッファからシステムメモリへと第1のグラフィックプロセッサ102により転送することを含むことができる。別のオプションとして、この処理は、第2のグラフィックプロセッサ104によるシステムメモリからのビデオデータの読み取り(例えば、その解読及び/又は表示のため)を含むことができる。このようにして、ビデオデータの処理における望まれないグリッチは、第1のグラフィックプロセッサ102及び第2のグラフィックプロセッサ104の動作を同期化することにより、防止される。
【0020】
[0027]更に別のオプションとして、第1のグラフィックプロセッサ102及び第2のグラフィックプロセッサ104の動作を同期化してこれらプロセッサ間の通信のセキュリティーを保証するのに使用するためのデータ構造(図示せず)が与えられてもよい。このデータ構造は、一実施形態では、少なくとも一つのセマフォを含むことができる。このようなセマフォは、データ(例えば、32ビット値)を記憶するためのメモリの記憶域を含むことができる。
【0021】
[0028]例えば、セマフォは、第1のグラフィックプロセッサ102及び/又は第2のグラフィックプロセッサ104に対して、これらプロセッサの動作(例えば、ビデオデータの処理)が開始される時を指示するデータを記憶することができる。このために、セマフォは、第1のグラフィックプロセッサ102と第2のグラフィックプロセッサ104との間で同期化されるべき各エンジンによって、連続的に、周期的にといったようにポーリングされ得る。勿論、第1のグラフィックプロセッサ102及び第2のグラフィックプロセッサ104の動作は、任意の所望の態様にて同期化することができることに注意されたい。
【0022】
[0029]種々のオプションのアーキテクチャー及び特徴についてより例示的な情報を、以下に説明する。前述したフレームワークは、ユーザの希望に応じてこれらアーキテクチャー及び特徴を用いて実施されてもよく、又は、これらを用いて実施されなくてもよい。次の情報は、例示のために説明するものであって、いかようにも限定のためのものとして解釈されるべきでないことに、特に注意されたい。次の特徴の何れもが、説明する他の特徴と共に、又は、当該他の特徴を除外することなく、任意に組み入れられ得る。
【0023】
[0030]図2は、別の実施形態による複数のグラフィックプロセッサを含むビデオ処理システム200を示している。オプションとして、このビデオ処理システム200は、図1のビデオ処理システム100にて実施することができる。しかしながら、勿論、このビデオ処理システム200は、任意の所望の環境にて実施することもできる。本説明においても、前述した定義が適用できることに、注意されたい。
【0024】
[0031]図示するように、第1のグラフィックプロセッサ202(以下、別個のグラフィックプロセッサ202)は、第2のグラフィックプロセッサ206(以下、一体化グラフィックプロセッサ206)と通信する。別個のグラフィックプロセッサ202及び一体化グラフィックプロセッサ206は、暗号化ビデオデータ及び解読ビデオデータを記憶するシステムメモリ204とも通信する。システムメモリ204は、ホストシステム(図示せず)に含まれていてもよい。このような通信(例えば、別個のグラフィックプロセッサ202、一体化グラフィックプロセッサ206、及び/又はシステムメモリ204の間)は、例えば、バスを通して行われる。
【0025】
[0032]オプションとして、別個のグラフィックプロセッサ202及び一体化グラフィックプロセッサ206は、ドライバー207により制御されてもよい。例えば、ドライバー207は、これら別個のグラフィックプロセッサ202及び一体化グラフィックプロセッサ206を制御するための複数のコンポーネント(例えば、コンピュータコード)を含み得る。このドライバー207は、別個のグラフィックプロセッサ202及び一体化グラフィックプロセッサ206が置かれているシステムのアプリケーションに基づいて、それら別個のグラフィックプロセッサ202及び一体化グラフィックプロセッサ206を制御してもよい。
【0026】
[0033]ドライバー207は、複数の命令シーケンス(例えば、コマンドのバッチ等)を生成し、そのような命令を別個のグラフィックプロセッサ202及び/又は一体化グラフィックプロセッサ206へと送ることができる。本実施形態については、それら命令は、別個のグラフィックプロセッサ202及び/又は一体化グラフィックプロセッサ206に後述するようなオペレーションのうちの何れかを行うように命令することができる。
【0027】
[0034]一実施形態では、別個のグラフィックプロセッサ202は、アプリケーション(図示せず)からビデオデータを受け取る。アプリケーションは、入力装置(例えば、デジタルビデオディスク(DVD)プレーヤー等)に対するインターフェースを含み得る。従って、別個のグラフィックプロセッサ202は、アプリケーションからの入力としてビデオデータを受け取ることができる。オプションとして、受け取られたビデオデータは、(例えば、保護の目的で)エンコードされてもよい。
【0028】
[0035]別個のグラフィックプロセッサ202によりビデオデータが受け取られると、当該別個のグラフィックプロセッサ202は、そのビデオデータを処理することができる。例えば、別個のグラフィックプロセッサ202のビデオ/3次元(3D)エンジン210がビデオデータを処理することができる。このような処理は、オプションとして、ビデオデータをデコードすることを含み得る。別のオプションとして、この処理は、別個のグラフィックプロセッサ202のフレームバッファ208にビデオデータを記憶させることを含み得る。更に別のオプションとして、この処理は、別個のグラフィックプロセッサ202のフレームバッファ208からビデオデータを読み出し、当該ビデオデータをレンダリングすることを含み得る。
【0029】
[0036]更に別のオプションとして、この処理は、レンダリングされたビデオデータを暗号化することを含み得る。例えば、別個のグラフィックプロセッサ202は、ビデオデータが暗号化されるべきか否かの判定に基づいて、当該ビデオデータを条件付きにて暗号化することができる。このような判定は、一実施形態では、ドライバー207から受け取られるコマンドに基づいてなされてもよい。例えば、ビデオデータが記憶されるべきシステムメモリ204に関連付けられた仮想アドレスを、そのコマンドが参照している場合には、別個のグラフィックプロセッサ202は、ページテーブルを使用して、当該仮想アドレスをシステムメモリ204における関連物理アドレスへとマッピングすることができる。
【0030】
[0037]さらに、別個のグラフィックプロセッサ202は、物理アドレスがキー(例えば、暗号化キー)で保護されるシステムメモリ204の部分に関連付けられるものとして予め定められているか否かについて、判定することができる。その物理アドレスがキーで保護されるシステムメモリ204の部分と関連付けられていると予め定められている場合には、別個のグラフィックプロセッサ202は、ビデオデータを暗号化することができる。一実施形態では、別個のグラフィックプロセッサ202は、ビデオデータを暗号化するのに使用するためのキーでプログラムされていてもよい。
【0031】
[0038]さらに、別個のグラフィックプロセッサ202は、システムメモリ204に暗号化ビデオデータを記憶するために(例えば、暗号化ビデオデータをシステムメモリ204へ書き込むために)、システムメモリ204と通信し得る。図示するように、システムメモリ204は、暗号化部分204Aと非暗号化部分204Bとを含み得る。暗号化部分204Aは、キーで保護されるシステムメモリ204の部分を含んでいてもよい。別のオプションとして、暗号化部分204Aは、暗号化ビデオデータを記憶するためのバッファを含んでいてもよい。更に別のオプションとして、非暗号化部分204Bは、キーで保護されないシステムメモリ204の部分を含み得る。このような非暗号化部分204Bは、非暗号化ビデオデータを記憶するためのバッファを含んでいてもよい。
【0032】
[0039]このために、別個のグラフィックプロセッサ202は、例えば、暗号化ビデオデータをシステムメモリ204の暗号化部分204Aに書き込むことにより、システムメモリ204の暗号化部分204Aに暗号化ビデオデータを記憶することができる。システムメモリ204における暗号化ビデオデータの記憶に応答して、別個のグラフィックプロセッサ202(例えば、別個のグラフィックプロセッサ202のビデオ/3Dエンジン210)は、第1のセマフォ212をシステムメモリ204へ書き込むことができる。第1のセマフォ212は、暗号化ビデオデータがシステムメモリ204に記憶されたこと、従って、一体化グラフィックプロセッサ206が記憶された暗号化ビデオデータを処理することができること、を指示する。例えば、このような指示に関連付けられた所定の値が第1のセマフォ212に記憶され得る。
【0033】
[0040]さらに、一体化グラフィックプロセッサ206は、システムメモリ204から暗号化ビデオデータを(例えば、システムメモリ204の暗号化部分204Aから暗号化ビデオデータを読み取ることにより)取り出すことができる。一実施形態では、一体化グラフィックプロセッサ206は、第1のセマフォ212に基づいて、システムメモリ204から暗号化ビデオデータを取り出すことができる。例えば、一体化グラフィックプロセッサ206は、暗号化ビデオデータがシステムメモリ204に記憶されていることを第1のセマフォ212が指示している場合にのみ、システムメモリ204から暗号化ビデオデータを取り出すことができる。このようにして、第1のセマフォ212は、別個のグラフィックプロセッサ202がシステムメモリ204への暗号化ビデオデータの記憶を完了するまでは、一体化グラフィックプロセッサ206がシステムメモリ204から暗号化ビデオデータを取り出すことがないことを保証するために、使用することができる。
【0034】
[0041]従って、第1のセマフォ212は、暗号化ビデオデータがシステムメモリ204に記憶されていることを、当該第1のセマフォ212が指示しているかを判定するために、連続的、周期的等といったように、ポーリングされ得る。オプションとして、第1のセマフォ212は、別個のグラフィックプロセッサ202及び/又は一体化グラフィックプロセッサ206による処理をスケジューリングするホストプロセッサ(図示せず)によりポーリングされてもよい。別のオプションとして、暗号化ビデオデータがシステムメモリ204に記憶されていることを第1のセマフォ212が指示しているとの判定に応答して、ドライバー207は、システムメモリ204から暗号化ビデオデータを取り出すよう一体化グラフィックプロセッサ206に命令するために(例えば、ホストプロセッサにより)命令されてもよい。
【0035】
[0042]図示するように、一体化グラフィックプロセッサ206の3Dエンジン214(例えば、グラフィックエンジン)は、システムメモリ204から暗号化ビデオデータを取り出すことができる。さらに、一体化グラフィックプロセッサ206(例えば、一体化グラフィックプロセッサ206の3Dエンジン214)は、取り出した暗号化ビデオデータを処理することができる。一実施形態では、この処理は、暗号化ビデオデータを解読することを含み得る。別の実施形態では、この処理は、システムメモリ204に解読ビデオデータを(例えば、システムメモリ204へその解読ビデオデータを書き込むことにより)記憶させることを含み得る。例えば、解読ビデオデータは、システムメモリ204の非暗号化部分204Bに記憶され得る。
【0036】
[0043]オプションとして、システムメモリ204への解読ビデオデータの記憶に応答して、グラフィックプロセッサ206(例えば、一体化グラフィックプロセッサ206の3Dエンジン214)は、第2のセマフォ216をローカルメモリへ書き込むことができる。この第2のセマフォ216は、解読ビデオデータがシステムメモリ204に記憶されていること、従って、一体化グラフィックプロセッサ206のビデオエンジン218が解読ビデオデータを処理することができ、又はディスプレイエンジンが解読ビデオデータを表示することができることを、指示することができる。例えば、このような指示に関連付けられた所定の値が、第2のセマフォ216に記憶される。このために、一体化グラフィックプロセッサ206のビデオエンジン218及び3Dエンジン214は、第2のセマフォ216を使用して同期化され得る。
【0037】
[0044]例えば、一体化グラフィックプロセッサ206(例えば、一体化グラフィックプロセッサ206のビデオエンジン218)は、システムメモリ204から解読ビデオデータを(例えば、システムメモリ204の非暗号化部分204Bから解読ビデオデータを読み取ることにより)取り出すことができる。一実施形態では、一体化グラフィックプロセッサ206は、第2のセマフォ216に基づいて、システムメモリ204から解読ビデオデータを取り出すことができる。例えば、一体化グラフィックプロセッサ206は、暗号化ビデオデータがシステムメモリ204に記憶されていることを第2のセマフォ216が指示している場合にのみ、システムメモリ204から解読ビデオデータを取り出すことができる。従って、第2のセマフォ216は、解読ビデオデータがシステムメモリ204に記憶されていることを当該第2のセマフォ216が指示しているか否かを判定するために、連続的、周期的等といったようにポーリングされ得る。このようにして、第2のセマフォ216を利用して、一体化グラフィックプロセッサ206による(例えば、一体化グラフィックプロセッサ206の3Dエンジン214及びビデオエンジン218による)処理を連携させることができる。
【0038】
[0045]さらに、一体化グラフィックプロセッサ206による解読ビデオデータの取り出しに応答して、一体化グラフィックプロセッサ206(例えば、一体化グラフィックプロセッサ206のビデオエンジン218)は、第2のセマフォ216へ書き込みを行って、当該第2のセマフォ216をリセットすることができる。また、一体化グラフィックプロセッサ206による解読ビデオデータの取り出しに応答して、一体化グラフィックプロセッサ206(例えば、一体化グラフィックプロセッサ206のビデオエンジン218)は、解読ビデオデータを更に処理することができる。このような処理は、解読ビデオデータを表示することを含み得る。例えば、一体化グラフィックプロセッサ206のビデオエンジン218は、解読ビデオデータを使用してディスプレイ(図示せず)を駆動するために、当該ディスプレイと通信することができる。
【0039】
[0046]一体化グラフィックプロセッサ206による暗号化ビデオデータの取り出し時に、当該一体化グラフィックプロセッサ206は、暗号化ビデオデータが取り出されたことを別個のグラフィックプロセッサ202に対して指示するために、第1のセマフォ212に書き込むことができる。例えば、このような指示に関連付けられた所定の値が、第1のセマフォ212に記憶され得る。従って、第1のセマフォ212は、暗号化ビデオデータが一体化グラフィックプロセッサ206によりシステムメモリ204から取り出されたか否かを判定するために使用することができ、他の暗号化ビデオデータが別個のグラフィックプロセッサ202によりシステムメモリ204に(例えば、システムメモリ204の暗号化部分204Aに)記憶され得るようにする。この目的で、第1のセマフォ212は、別個のグラフィックプロセッサ202及び一体化グラフィックプロセッサ206による処理を連携させるために使用され得る。
【0040】
[0047]図3は、更に別の実施形態による別個のグラフィック処理装置(GPU)を使用して暗号化ビデオデータをシステムメモリへと転送するための方法300を示している。オプションとして、この方法300は、図1及び図2の機能及びアーキテクチャーで実施され得る。しかしながら、勿論、この方法300は、任意の所望の環境において実施することができる。ここでの説明においても前述の定義が適用できることに注意されたい。
【0041】
[0048]判断302で示すように、ホストシステムがハイブリッドモードにて動作しているか否かの判定がなされる。この実施形態については、ホストシステムは、別個のGPU及び一体化GPUを含み、且つ、それら別個のGPU及び一体化GPUを使用してビデオデータを協働して処理することのできるシステムを含むことができる。従って、ホストシステムがハイブリッドモードにて動作しているか否かの判定は、別個のGPU及び一体化GPUの両者がホストシステムにて動作(例えば、初期化、イネーブル化等)しているか否かの判定を含み得る。例えば、別個のGPU及び一体化GPUは、ビデオデータを処理するためにホストシステムにより選択的に使用され得る。
【0042】
[0049]ホストシステムがハイブリッドモードで動作していないと判定される場合には、この方法300は、ホストシステムがハイブリッドモードにて動作するようになるまで待つ。しかしながら、ホストシステムがハイブリッドモードにて動作していると判定される場合には、ドライバー初期化中にキーが確立される。オペレーション304に注意されたい。この実施形態に関しては、キーは、ビデオデータを暗号化するのに使用することのできる任意のキーを含むことができる。
【0043】
[0050]一実施形態では、このキーの確立は、当該キーで別個のGPUをプログラミングすることを含み得る。オプションとして、一体化GPUも又、当該キーでプログラムされ得る。例えば、ホストシステムのドライバーが、別個のGPU及び一体化GPUをそのキーでプログラムすることができる。
【0044】
[0051]別の実施形態では、ドライバー初期化中のキーの確立は、ホストシステムのドライバーが別個のGPU及び/又は一体化GPUを初期化するときにキーを確立することを含み得る。単なる例示として、ドライバーは、ホストシステムのオペレーティングシステムが起動される(例えば、パワーアップされる)時に、別個のGPUを初期化し、従って、当該別個のGPUをそのキーでプログラムすることができる。別の実施例として、ドライバーは、ホストシステムが起動される時に、一体化GPUを初期化し、従って、一体化GPUをそのキーでプログラムすることができる。
【0045】
[0052]また、オペレーション306にて示すように、エンコードされたビデオデータが別個のGPUにて受け取られる。エンコードされたビデオデータは、一つのフォーマットから別のフォーマットへと変換された任意のビデオデータを含み得る。例えば、ビデオデータは、望まれない使用から当該ビデオデータを保護するために、エンコードされ得る。オプションとして、ビデオデータは、そのビデオデータの発行者によってエンコードされてもよい。
【0046】
[0053]一実施形態では、エンコードされたビデオデータは、アプリケーションにより受け取られる。単なる例示として、エンコードされたビデオデータは、ホストシステムと、ビデオデータがそこからホストシステムにより受け取られる入力装置との間のインターフェーシングを行うアプリケーションにより受け取られる。このようなアプリケーションは、ホストシステムにインストールされていて、そこで実行されてもよい。
【0047】
[0054]さらに、オペレーション308にて示すように、ビデオデータは、別個のGPUでデコードされる。オプションとして、ビデオデータは、別個のGPUに対して既知のアルゴリズムを使用してデコードされてもよい。例えば、ビデオデータは、(例えば、そのビデオデータが受け取られているときの)第1のフォーマットから(例えば、ホストシステムの一体化GPUを介して表示され得るような)第1のフォーマットへと、当該ビデオデータを変換することにより、デコードされ得る。
【0048】
[0055]さらに、ビデオデータは、レンダリングされ、別個のGPUのフレームバッファに記憶される。オペレーション310に注意されたい。一実施形態では、ビデオデータは、当該ビデオデータから画像を生成することによりレンダリングされ得る。従って、当該画像がフレームバッファに記憶される。任意なものとして、このようなフレームバッファは、別個のGPUによってのみ使用するものとして指定されていてもよい。従って、別個のGPUは、フレームバッファへデータを書込み、また、フレームバッファからデータを読み取ることのできる唯一のデバイスとなり得る。
【0049】
[0056]また図示するように、ビデオデータは、暗号化され、システムメモリへと転送される。オペレーション312に注意されたい。一つのオプションの実施形態では、ビデオデータは、当該ビデオデータを暗号化するために、別個のGPUのフレームバッファから当該別個のGPUにより読み取られてもよい。オプションとして、ビデオデータは、ドライバー初期化(オペレーション304における)中に確立されるキーを使用して暗号化されてもよい。
【0050】
[0057]さらに、システムメモリへのビデオデータの転送は、システムメモリへ当該ビデオデータを書き込むことを含み得る。オプションとして、ドライバーから受け取られる命令であってビデオデータをシステムメモリへ転送することを別個のGPUに命令する当該命令が、ビデオデータが転送されるべきシステムメモリの位置を指示することができる。例えば、この命令は、システムメモリに関連付けられた仮想アドレスの指示を含み、別個のGPUは、ページテーブルを使用して仮想アドレスを物理アドレスに翻訳し、別個のGPUは、ビデオデータを物理アドレスにてシステムメモリに記憶させてもよい。
【0051】
[0058]このために、暗号化ビデオデータは、別個のGPUを使用してシステムメモリへ転送され得る。さらに、システムメモリに記憶されたビデオデータの処理が、図4に関して説明するように、一体化GPUによって更に行われてもよい。
【0052】
[0059]図4は、更に別の実施形態による一体化GPUを使用して解読ビデオデータでディスプレイを駆動するための方法400を示している。オプションとして、この方法400は、図1から図3の機能及びアーキテクチャーにおいて実施され得る。しかしながら、勿論、この方法400は、任意の所望の環境において実施することもできる。この説明においても前述の定義を適用できることに注意されたい。
【0053】
[0060]オペレーション402で示すように、暗号化ビデオデータが、一体化GPUを使用してシステムメモリから取り出される。一実施形態では、暗号化ビデオデータは、当該暗号化ビデオデータを読み取ることにより、取り出される。別の実施形態では、暗号化ビデオデータは、当該暗号化ビデオデータがシステムメモリへ転送されていることをセマフォが指示しているとの判定に応答して、取り出される。
【0054】
[0061]さらに、オペレーション404で示すように、ビデオデータは、解読され、システムメモリへ書き込まれる。この実施形態に関しては、ビデオデータは、一体化GPUを使用して、解読され、システムメモリへ書き込まれる。オプションとして、ビデオデータは、ドライバー初期化中に確立されるキー(例えば、図3のオペレーション304参照)を使用して解読されてもよい。
【0055】
[0062]さらに、セマフォが書き込まれる。オペレーション406に注意されたい。このセマフォは、例えば、一体化GPUにより書き込まれ得る。この実施形態に関しては、セマフォは、システムメモリの記憶域であって暗号化ビデオデータがシステムメモリから取り出されたか否かの指示を与えるよう特化された当該記憶域を含み得る。例えば、暗号化ビデオデータがシステムメモリから取り出されていることをセマフォが指示している場合には、かかる指示によって、別個のGPUがシステムメモリに追加の暗号化ビデオデータを記憶させることが可能となる。従って、このセマフォは、暗号化ビデオデータが取り出されていることを指示する所定の値で書き込まれる。
【0056】
[0063]さらに、オペレーション408で示すように、ディスプレイは、一体化GPUを使用して解読ビデオデータで駆動される。例えば、一体化GPUは、解読ビデオデータをディスプレイに対して走査することができる。このようにして、解読ビデオデータが表示され得る。
【0057】
[0064]判断410において、一体化GPUがビデオデータでのディスプレイの駆動を完了しているか否かの決定がなされる。例えば、ビデオデータの全てが表示されているか否かの判定がなされる。一体化GPUがビデオデータでのディスプレイの駆動を完了していないと判定される場合には、この方法400は、一体化GPUを使用して解読ビデオデータでディスプレイが駆動されるように継続される。
【0058】
[0065]しかしながら、一体化GPUがビデオデータでのディスプレイの駆動を完了していると判定される場合には、別個のGPUにそのことが通知される。オペレーション412に注意されたい。一実施形態では、別個のGPUには、セマフォを使用して通知されてもよい。例えば、一体化GPUがビデオデータでのディスプレイの駆動を完了すると、ホストプロセッサが、セマフォをチェックして、暗号化ビデオデータが取り出されていることを当該セマフォが指示しているか否かの判定を行うことができ、暗号化ビデオデータが取り出されていることを、別個のGPUに通知することができる。このようにして、別個のGPUは、追加の暗号化ビデオデータをシステムメモリに記憶することができるようになる。
【0059】
[0066]図5は、別の実施形態による複数のGPUを同期化するためのシステム500を示している。オプションとして、このシステム500は、図1から図4の機能及びアーキテクチャーにおいて実施することができる。しかしながら、勿論、このシステム500は、任意の所望の環境においても実施することができる。この説明においても、前述の定義が適用できることに注意されたい。
【0060】
[0067]図示するように、第1のグラフィックプロセッサ502及び第2のグラフィックプロセッサ510は、システムメモリ504と通信する。この実施形態に関しては、第1のグラフィックプロセッサ502は、別個のグラフィックプロセッサを含むことができる。また、この実施形態に関しては、第2のグラフィックプロセッサ510は、一体化グラフィックプロセッサを含むことができる。
【0061】
[0068]更に、システムメモリ504は、暗号化部分506及び解読部分508を含む。暗号化部分506は、暗号化ビデオデータをそこに記憶するための複数のバッファ(T及びT)を含むことができる。また、解読部分508は、解読ビデオデータをそこに記憶するための複数のバッファ(IO[A]及びIO[B])を含むことができる。
【0062】
[0069]暗号化部分506のバッファは、暗号化ビデオデータをそこに記憶するために、第1のグラフィックプロセッサ502により交互に使用され得る。同様に、解読部分508は、解読ビデオデータをそこに記憶するために、第2のグラフィックプロセッサ510により交互に使用され得る。
【0063】
[0070]例えば、一実施形態では、第1のグラフィックプロセッサ502は、アプリケーションから第1のビデオデータを受け取る。第1のビデオデータは、例えば、ビデオデータのフレームを含むことができる。第1のグラフィックプロセッサ502は、第1のビデオデータを処理し、当該第1のビデオデータを暗号化することができる。第1のビデオデータを暗号化すると、第1のグラフィックプロセッサ502は、このような暗号化された第1のビデオデータを、システムメモリ504の暗号化部分506の第1のバッファ(T)へ書き込むことができる。
【0064】
[0071]暗号化された第1のビデオデータを暗号化部分506の第1のバッファへ書き込んだ後、第1のグラフィックプロセッサ502は、暗号化部分506の第1のバッファに関連付けられた第1のセマフォをリリースすることができる。例えば、第1のグラフィックプロセッサ502は、暗号化ビデオデータが第1のバッファへ書き込まれたことを指示するために予め定められた値を第1のセマフォへ書き込んでもよい。
【0065】
[0072]このために、第2のグラフィックプロセッサ510は、第1のセマフォのリリースを(例えば、第1のセマフォのポーリングに基づく等して)識別して、当該第1のセマフォを取得する。第1のセマフォは、第1のバッファに記憶された暗号化ビデオデータが読み取られている途中にあることを指示するために予め定められた値を第1のセマフォに書き込むことにより、取得される。さらに、第2のグラフィックプロセッサ510は、暗号化部分506の第1のバッファに記憶された暗号化ビデオデータを読み取ることができる。
【0066】
[0073]第2のグラフィックプロセッサ510が第1のセマフォを取得している間、第1のグラフィックプロセッサ502は、アプリケーションから第2のビデオデータを受け取り、第2のビデオデータを処理し、第2のビデオデータを暗号化し、そのように暗号化された第2のビデオデータを、システムメモリ504の暗号化部分506の第2のバッファ(T)に記憶させることができる。暗号化された第2のビデオデータを暗号化部分506の第2のバッファに記憶させた後に、第1のグラフィックプロセッサ502は、暗号化部分506の第2のバッファに関連付けられた第2のセマフォをリリースする。
【0067】
[0074]第2のグラフィックプロセッサ510により、暗号化部分506の第1のバッファから暗号化ビデオデータを読み取ると、当該第2のグラフィックプロセッサ510は、第1のセマフォを(例えば、第1のバッファに記憶された暗号化ビデオデータが読み取られたことを指示するために予め定められた値を第1のセマフォに書き込むことにより)リリースすることができる。従って、第1のグラフィックプロセッサ502は、第1のセマフォのリリースを(例えば、第1のセマフォのポーリングに基づく等して)識別し、暗号化部分506の第1のバッファに更なる他のビデオデータを記憶するため第1のセマフォを取得することができる。このために、暗号化部分506のバッファにおける暗号化ビデオデータの初期記憶の後、第1のグラフィックプロセッサ502は、第2のグラフィックプロセッサ510による暗号化部分506のバッファに関連付けられたセマフォのリリースに基づいて、そのような暗号化部分506の複数のバッファの間での暗号化ビデオデータの記憶を交互に行うことができる。
【0068】
[0075]さらに、第2のグラフィックプロセッサ510によって暗号化ビデオデータを受け取ると、当該第2のグラフィックプロセッサ510は、その暗号化ビデオデータを解読することができる。第2のグラフィックプロセッサ510はまた、システムメモリ504の解読部分508の第1のバッファ(IO[A])に関連付けられた第3のセマフォを取得することができる。解読部分508の第1のバッファに関連付けられた第3のセマフォの取得は、解読ビデオデータが解読部分508の第1のバッファへ書き込まれている途中にあることを指示するための値を第3のセマフォへ書き込むことを含み得る。
【0069】
[0076]第2のグラフィックプロセッサ510は、取り出された暗号化ビデオデータを解読し、その解読ビデオデータをシステムメモリ504の解読部分508の第1のバッファへ書き込むことができる。第2のグラフィックプロセッサ510は、解読ビデオデータが解読部分508の第1のバッファへ書き込まれると、第3のセマフォをリリースすることができる。第3のセマフォをリリースすると、第2のグラフィックプロセッサ510は、更に、解読部分508の第1のバッファから解読ビデオデータを読み取り、当該解読ビデオデータをディスプレイに表示することができる。
【0070】
[0077]解読ビデオデータが表示されている間、第2のグラフィックプロセッサ510は、第1のグラフィックプロセッサ502による暗号化部分506の第2のバッファに関連付けられた第2のセマフォのリリースを識別し、第2のセマフォを取得することができる。さらに、第2のグラフィックプロセッサ510は、暗号化部分506の第2のバッファに記憶された暗号化ビデオデータを読み取ることができる。
【0071】
[0078]暗号化ビデオデータが暗号化部分506の第2のバッファから読み取られると、第2のグラフィックプロセッサ510は、暗号化部分506の第2のバッファに関連付けられた第2のセマフォをリリースし、第1のグラフィックプロセッサ502が、前述したように、他の暗号化ビデオデータをそこに書き込むことを可能とし得る。第2のグラフィックプロセッサ510により暗号化ビデオデータが受け取られると、当該第2のグラフィックプロセッサ510は、暗号化ビデオデータを解読することができる。また、第2のグラフィックプロセッサ510は、システムメモリ504の解読部分508の第2のバッファ(IO[B])に関連付けられた第4のセマフォを取得することができる。
【0072】
[0079]第2のグラフィックプロセッサ510は、取り出された暗号化ビデオデータを解読し、その解読ビデオデータをシステムメモリ504の解読部分508の第2のバッファへと書き込むことができる。第2のグラフィックプロセッサ510は、解読ビデオデータが解読部分508の第2のバッファへと書き込まれると、第4のセマフォをリリースすることができる。第4のセマフォをリリースすると、第2のグラフィックプロセッサ510は、更に、解読部分508の第2のバッファから解読ビデオデータを読み取り、当該解読ビデオデータをディスプレイに表示することができる。システムメモリ504の解読部分508のバッファにおける解読ビデオデータの初期記憶の後、第2のグラフィックプロセッサ510は、当該第2のグラフィックプロセッサ510による解読部分508のバッファに関連付けられたセマフォのリリースに基づいて、そのような解読部分508のバッファ間での解読ビデオデータの記憶を交互に行うことができる。
【0073】
[0080]従って、一つの典型的な実施形態において、システムメモリ504の暗号化部分506に関しては、第1のグラフィックプロセッサ502は、暗号化ビデオデータをシステムメモリ504の第1のバッファ(T)へ書込み、第2のグラフィックプロセッサ510は、第1のグラフィックプロセッサが暗号化ビデオデータをシステムメモリ504の第1のバッファ(T)へ書き込む時(例えば、書き込む間)、システムメモリ504の第2のバッファ(T)から暗号化ビデオデータを読み取ることができる。さらに、第1のグラフィックプロセッサ502は、暗号化ビデオデータをシステムメモリ504の第2のバッファ(T)へ書き込み、第2のグラフィックプロセッサ510は、第1のグラフィックプロセッサ502が暗号化ビデオデータをシステムメモリ504の第2のバッファ(T)へ書き込む時に、システムメモリ504の第1のバッファ(T)から暗号化ビデオデータを読み取ることができる。このようにしてバッファを交互に使用することにより、第1のグラフィックプロセッサ502及び第2のグラフィックプロセッサ510によるバッファへのビデオデータの書き込み及びそれらバッファからのビデオデータの読み取りに伴う遅延を防止することができる。
【0074】
[0081]別の典型的な実施形態では、前述したように、セマフォは、第1のグラフィックプロセッサ502がシステムメモリ504の第1のバッファ(T)への暗号化ビデオデータの書き込みを完了するまでは、第2のグラフィックプロセッサ510がシステムメモリ504の第1のバッファ(T)からの暗号化ビデオデータを読み取らないことを保証するために使用され得る。さらに、セマフォは、第1のグラフィックプロセッサ502がシステムメモリ504の第2のバッファ(T)への暗号化ビデオデータの書き込みを完了するまでは、第2のグラフィックプロセッサ510がシステムメモリ504の第2のバッファ(T)からの暗号化ビデオデータを読み取らないことを保証し得る。
【0075】
[0082]図6は、更に別の実施形態によるセマフォを使用して複数のGPUを同期化するための方法600を示している。オプションとして、この方法600は、図1から図5の機能及びアーキテクチャーで実施し得る。しかしながら、勿論、この方法600は、任意の所望の環境においても実施することができる。この説明を通して、前述の定義が適用できることに注意されたい。
【0076】
[0083]判断602で示すように、別個のグラフィックプロセッサが、暗号化ビデオデータを、ローカルバッファ(d)からシステムメモリの暗号化部分(T)へコピー(例えば、書き込み)するか否かの判定がなされる。このようなローカルメモリは、例えば、別個のグラフィックプロセッサに対してローカルなメモリを含み得る。別個のグラフィックプロセッサが暗号化ビデオデータを、ローカルバッファからシステムメモリの暗号化部分へコピーしていないと判定される場合には、この方法は、その別個のグラフィックプロセッサが、暗号化ビデオデータを、そのローカルバッファからシステムメモリの暗号化部分へとコピーするのを待ち続ける。
【0077】
[0084]別個のグラフィックプロセッサが暗号化ビデオデータをローカルバッファからシステムメモリの暗号化部分へとコピーすると判定される場合には、当該別個のグラフィックプロセッサがセマフォを(例えば、値「1」をセマフォに書き込むことにより)リリースするか否かの判定がなされる。判断604に注意されたい。この実施形態に関しては、別個のグラフィックプロセッサは、ローカルバッファからシステムメモリの暗号化部分への暗号化ビデオデータのコピーが完了した後、セマフォをリリースすることができる。
【0078】
[0085]別個のグラフィックプロセッサがセマフォをリリースしていないと判定されるならば、この方法600は、当該別個のグラフィックプロセッサがそのセマフォをリリースするのを待ち続ける。例えば、セマフォは、当該セマフォがリリースされたことをその値が指示しているか否かを判定するために連続的にポーリングされてもよい。
【0079】
[0086]別個のグラフィックプロセッサがセマフォをリリースすると判定される場合には、当該セマフォが取得されるか否かの判定がなされる(判断606参照)。単なる例示として、セマフォは、別個のグラフィックプロセッサが当該セマフォをリリースしたとの判定時に、一体化グラフィックプロセッサにより取得される。図示するように、セマフォは、値「1」を当該セマフォへ書き込むことにより取得される。
【0080】
[0087]セマフォが取得されていないと判定される場合には、この方法600は、当該セマフォが取得されるのを待ち続ける。セマフォが取得されていると判定されるならば、暗号化ビデオデータがシステムメモリの暗号化部分から読み取られ、解読され、システムメモリの非暗号化部分(IO[A])へとコピーされる。オペレーション608に注意されたい。
【0081】
[0088]さらに、一体化グラフィックプロセッサのビデオエンジンは、オペレーション609で示すように、システムメモリの非暗号化部分に記憶された解読ビデオデータでディスプレイを駆動する。例えば、ビデオエンジンは、システムメモリの非暗号化部分から解読ビデオデータを読み取り、このような解読ビデオデータを表示することができる。さらに、セマフォが、オペレーション610で示すように、(例えば、値「0」をセマフォに書き込むことにより)リリースされる。例えば、セマフォは、一体化グラフィックプロセッサによりリリースされ得る。
【0082】
[0089]また、図示するように、セマフォは、再び、(例えば、値「1」をそのセマフォへ書き込むことにより)取得される。オペレーション612に注意されたい。一実施形態では、セマフォは、一体化グラフィックプロセッサによるセマフォのリリース時に、別個のグラフィックプロセッサにより取得され得る。従って、別個のグラフィックプロセッサは、追加の暗号化ビデオデータをローカルバッファからシステムメモリの暗号化部分へとコピーすることができる。
【0083】
[0090]図7は、更に別の実施形態による複数のセマフォを使用して複数のGPUを同期化するための方法700を示している。オプションとして、この方法700は、図1から図6の機能及びアーキテクチャーにおいて実施することができる。しかしながら、勿論、この方法700は、任意の所望の環境においても実施することができる。ここでもまた、この説明を通して、前述した定義を適用できることに注意されたい。
【0084】
[0091]判断702で示すように、別個のグラフィックプロセッサが暗号化ビデオデータを第1のローカルバッファ(d0)からシステムメモリの暗号化部分の第1のバッファ(T)へとコピー(例えば、書き込む)するか否かの判定がなされる。このような第1のローカルバッファは、例えば、別個のグラフィックプロセッサに対してローカルなメモリを含むことができる。別個のグラフィックプロセッサが暗号化ビデオデータを第1のローカルバッファからシステムメモリの暗号化部分の第1のバッファへとコピーしていないと判定される場合には、この方法700は、別個のグラフィックプロセッサが暗号化ビデオデータを第1のローカルバッファからシステムメモリの暗号化部分の第1のバッファへとコピーするのを待ち続ける。
【0085】
[0092]別個のグラフィックプロセッサが暗号化ビデオデータを第1のローカルバッファからシステムメモリの暗号化部分の第1のバッファへとコピーしていると判定されるならば、別個のグラフィックプロセッサが第1のセマフォを(例えば、値「1」をこの第1のセマフォに書き込むことにより)リリースするか否かの判定がなされる。判断704に注意されたい。第1のセマフォは、システムメモリの暗号化部分の第1のバッファに関連付けられている。この実施形態に関しては、別個のグラフィックプロセッサは、第1のローカルバッファからシステムメモリの暗号化部分の第1のバッファへの暗号化ビデオデータのコピーの完了後、第1のセマフォをリリースする。
【0086】
[0093]別個のグラフィックプロセッサが第1のセマフォをリリースしていないと判定される場合には、この方法700は、別個のグラフィックプロセッサが第1のセマフォをリリースするのを待ち続ける。例えば、第1のセマフォは、当該第1のセマフォがリリースされたか否かを判定するために連続的にポーリングされてもよい。
【0087】
[0094]別個のグラフィックプロセッサが第1のセマフォをリリースしていると判定される場合には、図示するように、並列処理が行われる。例えば、オペレーション712から716及び726が、オペレーション706から710及び718から724のうちのいずれかと並列に行われる。一実施形態では、第1のセマフォが取得されるか否かの判定がなされる(判断706参照)。単なる例示として、第1のセマフォは、別個のグラフィックプロセッサがその第1のセマフォをリリースしたとの判定時に、一体化グラフィックプロセッサにより取得されてもよい。図示するように、第1のセマフォは、値「1」を当該第1のセマフォへ書き込むことにより取得されてもよい。
【0088】
[0095]第1のセマフォが取得されていないと判定される場合には、この方法700は、第1のセマフォが取得されるのを待ち続ける。第1のセマフォが取得されていると判定される場合には、暗号化ビデオデータが、システムメモリの暗号化部分の第1のバッファから読み取られ、解読され、システムメモリの非暗号化部分(IO[A])の第1のバッファへとコピーされる。オペレーション708に注意されたい。
【0089】
[0096]さらに、一体化グラフィックプロセッサのビデオエンジンは、オペレーション709で示すように、システムメモリの非暗号化部分の第1のバッファに記憶された解読ビデオデータでディスプレイを駆動する。例えば、ビデオエンジンは、システムメモリの非暗号化部分の第1のバッファから解読ビデオデータを読み取り、そのような解読ビデオデータを表示することができる。さらに、第1のセマフォは、オペレーション710で示すように、(例えば、値「0」をそのセマフォへ書き込むことにより)リリースされる。例えば、第1のセマフォは、一体化グラフィックプロセッサによりリリースされ得る。
【0090】
[0097]別の実施形態では、別個のグラフィックプロセッサが第2のセマフォを取得するか否かの判定がなされる。判定712に注意されたい。従って、一体化グラフィックプロセッサが第1のセマフォを取得するか否かの判定がなされる(判定706)間に、別個のグラフィックプロセッサが第2のセマフォを取得するか否かの判定がなされる(判定712)。
【0091】
[0098]第2のセマフォは、システムメモリの暗号化部分の第2のバッファに関連付けられている。この実施形態に関しては、別個のグラフィックプロセッサは、第2のセマフォが、(例えば、一体化グラフィックプロセッサにより)リリースされた場合にのみ、第2のセマフォを取得することができる。この第2のセマフォの取得は、暗号化ビデオデータがシステムメモリの暗号化部分の第2のバッファへ書き込まれていることを指示するために、値「0」を第2のセマフォへ書き込むことを含むことができる。
【0092】
[0099]第2のセマフォが別個のグラフィックプロセッサにより取得されていないと判定される場合には、この方法700は、別個のグラフィックプロセッサがその第2のセマフォを取得するのを待ち続ける。第2のセマフォが別個のグラフィックプロセッサにより取得されていると判定される場合には、別個のグラフィックプロセッサは、他の暗号化ビデオデータを第2のローカルバッファ(d0)からシステムメモリの暗号化部分の第2のバッファ(T)へとコピー(例えば、書き込み)する。オペレーション714に注意されたい。このような第2のローカルバッファは、例えば、別個のグラフィックプロセッサに対してローカルなメモリを含むことができる。別個のグラフィックプロセッサが暗号化ビデオデータを第2のローカルバッファからシステムメモリの暗号化部分の第2のバッファへとコピーしていないと判定される場合には、この方法700は、別個のグラフィックプロセッサが暗号化ビデオデータを第2のローカルバッファからシステムメモリの暗号化部分の第2のバッファへとコピーするのを待ち続ける。
【0093】
[0100]別個のグラフィックプロセッサが暗号化ビデオデータを第2のローカルバッファからシステムメモリの暗号化部分の第2のバッファへとコピーしていると判定される場合には、別個のグラフィックプロセッサが第2のセマフォを、(例えば、値「1」をその第2のセマフォに書き込むことにより)リリースするか否かの判定がなされる。判定716に注意されたい。第2のセマフォは、システムメモリの暗号化部分の第2のバッファに関連付けられている。この実施形態に関しては、別個のグラフィックプロセッサは、第2のローカルバッファからシステムメモリの暗号化部分の第2のバッファへの暗号化ビデオデータのコピーの完了後に、第2のセマフォをリリースすることができる。
【0094】
[0101]別個のグラフィックプロセッサが第2のセマフォをリリースしていないと判定される場合には、この方法700は、当該別個のグラフィックプロセッサが第2のセマフォをリリースするのを待ち続ける。例えば、第2のセマフォは、当該第2のセマフォがリリースされたことをその値が指示しているか否かを判定するために、連続的にポーリングされてもよい。
【0095】
[0102]別個のグラフィックプロセッサが第2のセマフォをリリースしていると判定される場合には、図示するように、並列処理が行われる。一実施形態では、第2のセマフォが取得される否かの判定がなされる(判定718参照)。単なる例示として、第2のセマフォは、別個のグラフィックプロセッサが第2のセマフォをリリースしたとの判定時に、一体化グラフィックプロセッサにより取得され得る。図示するように、第2のセマフォは、値「1」を第2のセマフォへ書き込むことにより取得されてもよい。
【0096】
[0103]第2のセマフォが取得されていないと判定される場合には、この方法700は、その第2のセマフォが取得されるのを待ち続ける。第2のセマフォが取得されていると判定される場合には、暗号化ビデオデータがシステムメモリの暗号化部分の第2のバッファから読み取られ、解読され、システムメモリの非暗号化部分(IO[B])へとコピーされる。オペレーション720に注意されたい。
【0097】
[0104]さらに、一体化グラフィックプロセッサのビデオエンジンは、オペレーション722で示すように、システムメモリの非暗号化部分の第2のバッファに記憶された解読ビデオデータでディスプレイを駆動する。例えば、ビデオエンジンは、システムメモリの非暗号化部分の第2のバッファから解読ビデオデータを読み取り、そのような解読ビデオデータを表示することができる。さらに、第2のセマフォは、オペレーション724で示すように、(例えば、値「0」を第2のセマフォへ書き込むことにより)リリースされる。例えば、第2のセマフォは、一体化グラフィックプロセッサによりリリースされてもよい。
【0098】
[0105]別の実施形態では、別個のグラフィックプロセッサが第1のセマフォを取得するか否かの判定が行われる。判定726に注意されたい。従って、一体化グラフィックプロセッサが第2のセマフォを取得するか否かの判定がなされる(判定718)間に、別個のグラフィックプロセッサが第1のセマフォを取得するか否かの判定がなされる(判定726)。
【0099】
[0106]従って、第1のセマフォは、再度、別個のグラフィックプロセッサにより(例えば、値「1」をその第1のセマフォへ書き込むことにより)取得され得る。一実施形態では、第1のセマフォは、一体化グラフィックプロセッサによる第1のセマフォのリリース時に、別個のグラフィックプロセッサにより取得され得る。従って、別個のグラフィックプロセッサは、付加的な暗号化ビデオデータを第1のローカルバッファからシステムメモリの暗号化部分の第1のバッファへとコピーすることができる(判定702)。
【0100】
[0107]図8は、前述の種々の実施形態の種々のアーキテクチャー及び/又は機能が実施され得る典型的なシステム800を例示している。図示するように、このシステム800は、通信バス802に接続される少なくとも一つのホストプロセッサ801を含んで提供される。このシステム800は、主メモリ804も含み得る。制御ロジック(ソフトウエア)及びデータは、主メモリ804に記憶される。この主メモリは、ランダムアクセスメモリ(RAM)の形式を取り得る。
【0101】
[0108]システム800は、グラフィックプロセッサ806及びディスプレイ808、即ち、コンピュータモニタも含む。一実施形態では、グラフィックプロセッサ806は、複数のシェーダーモジュール、ラスタリゼーションモジュール等を含むことができる。前述のモジュールの各々は、グラフィック処理装置(GPU)を形成するように、単一半導体プラットフォーム上に配設することもできる。
【0102】
[0109]本説明では、単一半導体プラットフォームは、ソールユニタリ半導体ベース集積回路又はチップを指すことができる。また、「単一半導体プラットフォーム」との用語は、オンチップオペレーションをシミュレートし、従来の中央処理装置(CPU)及びバスインプリメンテーションを使用するよりも実質的な改善をなすことのできる接続性を増したマルチチップモジュールを指すことができることに注意されたい。勿論、ユーザの希望に応じて、種々なモジュールを、別々に、又は半導体プラットフォームの種々な組合せにて配設することもできる。
【0103】
[0110]このシステム800は、2次記憶装置810を含むこともできる。この2次記憶装置810は、例えば、ハードディスクドライブ及び/又はフロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブ等のリムーバブル記憶装置ドライブを含む。リムーバブル記憶装置ドライブは、周囲の方法にてリムーバブル記憶装置からの読み取り及び/又はリムーバブル記憶装置への書き込みを行う。
【0104】
[0111]コンピュータプログラム、即ちコンピュータ制御ロジックアルゴリズムは、主メモリ804及び/又は2次記憶装置810に記憶され得る。このようなコンピュータプログラムは、実行時に、システム800が種々な機能を遂行できるようにする。メモリ804、記憶装置810及び/又は任意の他の記憶装置は、コンピュータ読み取り可能な媒体の候補例である。
【0105】
[0112]一実施形態では、前述した種々の図のアーキテクチャー及び/又は機能は、ホストプロセッサ801、グラフィックプロセッサ806、ホストプロセッサ801及びグラフィックプロセッサ806の両者の能力の少なくとも一部分を担うことのできる集積回路(図示せず)、チップセット(即ち、関連する機能を遂行するためのユニットとして販売され作用するように設計された一群の集積回路等)、及び/又はそのための任意の他の集積回路で実施することができる。
【0106】
[0113]さらに、前述した種々な図のアーキテクチャー及び/又は機能は、汎用コンピュータシステム、サーキットボードシステム、娯楽目的専用のゲームコンソールシステム、特定用途向けシステム、及び/又は任意の他の希望のシステムにおいて実施することができる。例えば、このシステム800は、デスクトップコンピュータ、ラップトップコンピュータ、及び/又は任意の他のタイプのロジックの形を取ることができる。さらに、システム800は、これらに限定されるものではないが、個人向け携帯情報端末(PDA)装置、モバイルホン装置、テレビジョン等を含む種々の他の装置の形をとることができる。
【0107】
[0114]さらに、図示していないが、システム800は、通信目的のネットワーク(例えば、遠隔通信ネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスネットワーク、インターネットの如きワイドエリアネットワーク(WAN)、ピアツーピアネットワーク、ケーブルネットワーク等)に結合されてもよい。
【0108】
[0115]種々の実施形態について前述してきたが、これらは、単なる例示としてのものであって、これらに限定するものでないことに注意されたい。従って、好ましい実施形態の広さ及び範囲は、前述した典型的な実施形態のいずれによっても限定されるべきでなく、それらは、特許請求の範囲の記載及びそれらの均等の範囲においてのみ定められるべきものである。
【符号の説明】
【0109】
100…ビデオ処理システム、102…第1のグラフィックプロセッサ、104…第2のグラフィックプロセッサ、200…ビデオ処理システム、202…第1のグラフィックプロセッサ(別個のグラフィックプロセッサ)、204…システムメモリ、204A…暗号化部分、204B…非暗号化部分、206…第2のグラフィックプロセッサ(一体化グラフィックプロセッサ)、207…ドライバー、208…フレームバッファ、210…ビデオ/3次元(3D)エンジン、212…第1のセマフォ、214…一体化グラフィックプロセッサの3Dエンジン、216…第2のセマフォ、218…一体化グラフィックプロセッサのビデオエンジン、500…複数のGPUを同期化するためのシステム、502…第1のグラフィックプロセッサ、504…システムメモリ、506…暗号化部分、T…第1のバッファ、T…第2のバッファ、508…解読部分、IO[A]…第1のバッファ、IO[B]…第2のバッファ、510…第2のグラフィックプロセッサ、800…システム、801…ホストプロセッサ、802…通信バス、804…主メモリ、806…グラフィックプロセッサ、808…ディスプレイ、810…2次記憶装置。

【特許請求の範囲】
【請求項1】
第1のグラフィックプロセッサと、
前記第1のグラフィックプロセッサと通信し、協働してビデオデータを処理するための第2のグラフィックプロセッサと、
を備え、
前記通信が暗号化される、装置。
【請求項2】
前記第1のグラフィックプロセッサ及び前記第2のグラフィックプロセッサは、対称型である、請求項1に記載の装置。
【請求項3】
前記第1のグラフィックプロセッサ及び前記第2のグラフィックプロセッサは、非対称型である、請求項1に記載の装置。
【請求項4】
前記第1のグラフィックプロセッサは、別個のグラフィックプロセッサであり、前記第2のグラフィックプロセッサは、ホストシステムに一体化された一体化グラフィックプロセッサである、請求項3に記載の装置。
【請求項5】
前記ビデオデータを協働して処理するために、前記別個のグラフィックプロセッサが複数個含まれる、請求項4に記載の装置。
【請求項6】
前記別個のグラフィックプロセッサは、前記ビデオデータを、該ビデオデータの受信後に、デコードする、請求項4に記載の装置。
【請求項7】
前記別個のグラフィックプロセッサは、前記ビデオデータを、該ビデオデータの前記デコードの後に、暗号化する、請求項6に記載の装置。
【請求項8】
前記ホストシステムは、前記別個のグラフィックプロセッサから受け取られる前記暗号化ビデオデータを記憶するためのシステムメモリを含む、請求項7に記載の装置。
【請求項9】
前記一体化グラフィックプロセッサは、前記暗号化ビデオデータを解読する、請求項8に記載の装置。
【請求項10】
前記一体化グラフィックプロセッサのグラフィックエンジンが前記暗号化ビデオデータを解読する、請求項8に記載の装置。
【請求項11】
前記一体化グラフィックプロセッサは、前記解読ビデオデータを前記システムメモリへ書き込む、請求項10に記載の装置。
【請求項12】
前記一体化グラフィックプロセッサのビデオエンジンが前記ビデオデータを使用してディスプレイを駆動する、請求項10に記載の装置。
【請求項13】
前記一体化グラフィックプロセッサの前記グラフィックエンジン及び前記ビデオエンジンによる処理を連携させるために、少なくとも一つのセマフォが使用される、請求項12に記載の装置。
【請求項14】
前記第1のグラフィックプロセッサ及び前記第2のグラフィックプロセッサによる処理を連携させるために、少なくとも一つのセマフォが使用される、請求項1に記載の装置。
【請求項15】
前記通信は、バスを通して実施される、請求項1に記載の装置。
【請求項16】
前記バスは、周辺コンポーネント相互接続(PCI)バスを含む、請求項15に記載の装置。
【請求項17】
前記第1のグラフィックプロセッサ及び前記第2のグラフィックプロセッサは各々、グラフィック処理ユニットを含む、請求項1に記載の装置。
【請求項18】
コンピュータ読み取り可能な媒体で実施されるコンピュータプログラム製品において、
第1のグラフィックプロセッサを使用してビデオデータを処理するためのコンピュータコードと、
前記ビデオデータを暗号化するのに使用されるキーを与えるためのコンピュータコードと、
第2のグラフィックプロセッサを使用して前記ビデオデータを更に処理するためのコンピュータコードと、
を含むコンピュータプログラム製品。
【請求項19】
前記コンピュータコードは、前記第1のグラフィックプロセッサ及び前記第2のグラフィックプロセッサを制御するのに使用されるドライバーのコンポーネントである、請求項18に記載のコンピュータプログラム製品。
【請求項20】
第1のグラフィックプロセッサを使用してビデオデータを処理するステップと、
前記ビデオデータを暗号化するステップと、
前記ビデオデータを、更に処理するため第2のグラフィックプロセッサへ送るステップと、
を含む方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2010−63082(P2010−63082A)
【公開日】平成22年3月18日(2010.3.18)
【国際特許分類】
【外国語出願】
【出願番号】特願2009−120031(P2009−120031)
【出願日】平成21年5月18日(2009.5.18)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(501261300)エヌヴィディア コーポレイション (166)
【Fターム(参考)】