JP2016516224A - グラフィックス処理ユニットのためのハードウェアによるコンテンツ保護 - Google Patents

グラフィックス処理ユニットのためのハードウェアによるコンテンツ保護 Download PDF

Info

Publication number
JP2016516224A
JP2016516224A JP2015557988A JP2015557988A JP2016516224A JP 2016516224 A JP2016516224 A JP 2016516224A JP 2015557988 A JP2015557988 A JP 2015557988A JP 2015557988 A JP2015557988 A JP 2015557988A JP 2016516224 A JP2016516224 A JP 2016516224A
Authority
JP
Japan
Prior art keywords
gpu
memory
secure
insecure
mode
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015557988A
Other languages
English (en)
Other versions
JP5917784B1 (ja
Inventor
シャープ、コリン・クリストファー
コッティリンガル、スディープ・ラビ
フリシンガー、トーマス・エドウィン
グルバー、アンドリュー・イー.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of JP5917784B1 publication Critical patent/JP5917784B1/ja
Publication of JP2016516224A publication Critical patent/JP2016516224A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Image Generation (AREA)

Abstract

この開示は、グラフィックス処理のための技術を提案する。一例では、グラフィックス処理ユニット(GPU)は、非安全モード及び安全モードの1つに従って、第1のメモリユニットにアクセスするように構成される。GPUは、GPUが非安全モードにあるとき、第1のメモリユニットの安全でない部分のみからデータをGPUが読み取ることを可能にするように構成され、及びGPUが安全モードにあるとき、第1のメモリユニットの安全な部分のみにデータをGPUが書き込むことを可能にするように構成されたメモリアクセスコントローラを備える。

Description

[0001]この開示は、グラフィックス処理のための技術に関し、より詳細には、コンテンツ保護のための技術に関する。
[0002]オープンプラットフォーム(例えば、Android(登録商標)又は他のオープンソースプラットフォーム)、及びクローズドプラットフォーム(例えば、Microsoft Windows(登録商標))を含む現代のオペレーティングシステムは、そのようなオープンプラットフォームにストリーミングされ、又はそのようなオープンプラットフォームよって処理される、安全なコンテンツを保護するという点で、一般的に信頼されたものではない。現代のオペレーティングシステムは、ユーザのカーネルモード分離、最終的にはカーネルモードのコンポーネントを介して、クローズドプラットフォーム及び、特にオープンプラットフォームの両方で、あるレベルのセキュリティを提供する一方で、強いレベルの信頼性を提供しない。カーネルモードドライバは、容易にインストールされ得、悪意のあるカーネルモードドライバは、セキュリティの境界を自然にバイパスする。そのようなオープンプラットフォームにおけるカーネルモードハードウェアドライバは、安全なコンテンツを処理することができるハードウェア(例えば、グラフィックス処理ユニット(GPU))の動作を制御するために使用される。しかしながら、そのようなドライバは、オープンソースであることが多く、及び/又は保護されるコンテンツに関して「安全」とは考えられないため、それらは第三者による改竄の影響をより受けやすい。そのような改竄は、そのようなドライバにより制御されたハードウェアを通じてストリーミングされ、又はそれによって処理される保護されるコンテンツ(例えば、デジタル著作権管理(DRM)コンテンツ)が、安全でないメモリに記憶され、及び複製されることをもたらすことがある。よって、オープンプラットフォーム上での安全なコンテンツの制御は、困難であることが多い。
[0003]概して、この開示は、グラフィックス処理ユニット(GPU)に対するハードウェアによるコンテンツ保護のための技術を説明する。ハードウェアプラットフォーム上で安全なコンテンツを制御するために、安全なメモリへのアクセスは、GPUなどのハードウェアによって制御され得る。
[0004]開示の一例では、グラフィックス処理のための装置は、非安全モード及び安全モードの1つに従って、第1のメモリユニットにアクセスするように構成されたグラフィックス処理ユニット(GPU)を備え、GPUは、GPUが非安全モードにあるとき、GPUが第1のメモリユニットの安全でない部分のみからデータを読み取ることを可能にするように構成され、及びGPUが安全モードにあるとき、GPUが第1のメモリユニットの安全な部分のみにデータを書き込むことを可能にするように構成されたメモリアクセスコントローラを備える。
[0005]開示の別の例では、グラフィックス処理の方法は、非安全モード及び安全モードの1つに従って、グラフィックス処理ユニット(GPU)で、第1のメモリユニットにアクセスすることを備え、アクセスすることは、GPUが非安全モードにあるとき、GPUが第1のメモリユニットの安全でない部分のみからデータを読み取ることを可能にすることと、GPUが安全モードにあるとき、GPUが第1のメモリユニットの安全な一部のみにデータを書き込むことを可能にすることとを備える。
[0006]開示の別の例では、グラフィックス処理のために構成された装置は、非安全モード及び安全モードの1つに従って、グラフィックス処理ユニット(GPU)で、第1のメモリユニットにアクセスするための手段を備え、アクセスするための手段は、GPUが非安全モードにあるとき、GPUが第1のメモリユニットの安全でない部分のみからデータを読み取ることを可能にするための手段と、GPUが安全モードにあるとき、GPUが第1のメモリユニットの安全な一部のみにデータを書き込むことを可能にするための手段とを備える。
[0007]1つ又は複数の例の詳細は、添付図面及び発明の詳細な説明で以下に示される。他の特徴、目的及び利点は、発明の詳細な説明及び図面から、ならびに特許請求の範囲から明らかになるであろう。
[0008]この開示の技術を使用するように構成された例示的なコンピュータ機器を示すブロック図。 [0009]図1のシステムメモリの例示的な物理ページを示す概念図。 [0010]この開示の技術を使用するように構成された例示的な処理ユニットを示すブロック図。 [0011]この開示のハードウェアによるコンテンツ保護技術のための例示的な構造を示すブロック図。 [0012]この開示のハードウェアによるコンテンツ保護技術のための別の例示的な構造を示すブロック図。 [0013]この開示の一例に従ったキャッシュクリア技術を示すブロック図。 [0014]この開示の別の例に従ったキャッシュクリア技術を示すブロック図。 [0015]開示の一例に従った方法を示すフローチャートである。
[0016]この開示は、グラフィックス処理のための技術に関し、特に、グラフィックス処理ユニット(GPU)に対するハードウェアによるコンテンツ保護のための技術に関する。
[0017]オープンプラットフォーム(例えば、Android又は他のオープンソースプラットフォーム)、及びクローズドプラットフォーム(例えば、Microsoft Windows)を含む現代のオペレーティングシステムは、そのようなオープンプラットフォームにストリーミングされ、又はそのようなオープンプラットフォームよって処理される、安全なコンテンツを保護するという点で、一般的に信頼されたものではない。現代のオペレーティングシステムは、ユーザのカーネルモード分離、最終的にはカーネルモードのコンポーネントを介して、クローズドプラットフォーム及び、特にオープンプラットフォームの両方で、あるレベルのセキュリティを提供する一方で、強いレベルの信頼性を提供しない。カーネルモードドライバは、容易にインストールされ得、悪意のあるカーネルモードドライバは、セキュリティの境界を自然にバイパスする。そのようなオープンプラットフォームにおけるカーネルモードハードウェアドライバは、安全なコンテンツを処理することができるハードウェア(例えば、グラフィックス処理ユニット(GPU))の動作を制御するために使用される。しかしながら、そのようなドライバは、オープンソースであることが多く、及び/又は保護されるコンテンツに関して「安全」とは考えられないため、それらは第三者による改竄の影響をより受けやすい。そのような改竄は、そのようなドライバにより制御されたハードウェアを通じてストリーミングされ、又はそれによって処理される保護されるコンテンツ(例えば、デジタル著作権管理(DRM)コンテンツ)が、安全でないメモリに記憶され、及び複製されることをもたらす。よって、オープンプラットフォーム上での安全なコンテンツの制御は、困難であることが多い。この課題に対処するために、この開示は、それによって、安全なメモリにアクセスすることがハードウェア自身により(例えば、GPUにより)制御される、方法及び装置を提案する。
[0018]直接ドライバのコードを通じて安全なメモリ、又は安全でないメモリへのハードウェアアクセスを制御するのではなく、この開示は、一例では、グラフィックスドライバ(例えば、オープンソースの安全でないドライバ)を使用して、安全モード又は非安全モードのいずれかにおいてGPUを配置することのみを提案する。安全モードに配置されると、安全なメモリを読み取ることができるGPUコンポーネントが、安全なメモリ領域に書き込むことのみに制限される。これは、信頼されないドライバが、GPUを使用して、メモリコンテンツを安全なメモリ領域から安全でないメモリ領域に複製することを防止する。
[0019]この安全モードでは、GPUは、安全な(例えば、複製防止(CP))コンテンツ及び安全でないコンテンツ(例えば、安全でないメモリに記憶されたコンテンツ)の両方を読み取ることができる。非安全モードでは、GPUは安全なメモリへのアクセスが全て拒否される。このように、安全でないドライバが非安全モードにGPUを配置するように改竄された場合、GPU自身は、安全なメモリからデータを読み取ることが防止される。よって、安全なメモリにおける安全なコンテンツにアクセスすることが防止される。
[0020]開示の一例では、グラフィックス処理のための装置は、非安全モード及び安全モードの1つに従って、第1のメモリユニットにアクセスするように構成されたグラフィックス処理ユニット(GPU)を備え、GPUは、GPUが非安全モードにあるとき、GPUが第1のメモリユニットの安全でない部分のみからデータを読み取ることを可能にするように構成され、及びGPUが安全モードにあるとき、GPUが第1のメモリユニットの安全な部分のみにデータを書き込むことを可能にするように構成されたメモリアクセスコントローラを備える。
[0021]図1は、GPUに対するハードウェアによるコンテンツ保護のためのこの開示の技術を実装するために使用され得る例示的なコンピュータ機器2を示すブロック図である。コンピュータ機器2は、例えば、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、コンピュータワークステーション、ビデオゲームプラットフォーム又はコンソール、例えば、セルラー電話又は衛星電話などの携帯電話、固定電話、インターネット電話、所謂スマートフォン、ポータブルビデオゲーム機器若しくは携帯情報端末(PDA)などのハンドヘルド機器、パーソナルミュージックプレイヤ、ビデオプレイヤ、表示装置、テレビ、テレビセットトップボックス、サーバ、中間ネットワーク機器、メインフレームコンピュータ、任意のモバイル機器、又はグラフィカルデータを処理及び/又は表示する任意の他のタイプの機器を備え得る。
[0022]図1の例に示されるように、コンピュータ機器2は、ユーザ入力インターフェース4、中央処理装置(CPU)6、1つ又は複数のメモリコントローラ8、システムメモリ10、グラフィックス処理ユニット(GPU)12、グラフィックスメモリ14、表示器インターフェース16、表示器18、ならびにバス20及び22を含み得る。一部の例では、グラフィックスメモリ14は、GPU12を有する「オンチップ」としてもよいことに留意する。一部のケースでは、図1に示される全てのハードウェア要素は、オンチップ、例えば、システムオンチップ(SoC)設計にあり得る。ユーザ入力インターフェース4、CPU6、メモリコントローラ8、GPU12及び表示器インターフェース16は、バス20を使用して相互に通信し得る。メモリコントローラ8及びシステムメモリ10はまた、バス22を使用して相互に通信し得る。バス20、22は、第3世代バス(例えば、HyperTransportバスもしくはInfiniBandバス)、第2世代バス(例えば、Advanced Graphics Port バス、Peripheral Component Interconnect(PCI)Expressバス、もしくはAdvanced eXentisible Interface(AXI)バス)又は別のタイプのバス若しくは機器の相互接続などの種々のバス構造のいずれかであり得る。図1に示される異なるコンポーネント間のバス及び通信インターフェースの特定の構成は、例示的なものにすぎず、同一又は異なるコンポーネントを有するコンピュータ機器及び/又は他のグラフィックス処理システムの他の構成が、この開示の技術を実装するために使用され得ることに留意すべきである。
[0023]CPU6は、コンピュータ機器2の動作を制御する汎用又は特殊用途プロセッサを備え得る。ユーザは、CPU6に1つ又は複数のソフトウェアアプリケーションを実行させるために、コンピュータ機器2に入力を提供し得る。CPU6上で実行されるソフトウェアアプリケーションは、例えば、オペレーティングシステム、ワードプロセッサアプリケーション、電子メールアプリケーション、スプレッドシートアプリケーション、メディアプレイヤアプリケーション、ビデオゲームアプリケーション、グラフィカルユーザインターフェースアプリケーション、又は別のプログラムを含み得る。追加的に、CPU6は、GPU12の動作を制御するためのGPUドライバ7を実行し得る。ユーザは、キーボード、マウス、マイクロフォン、タッチパッド、タッチスクリーンなどの1つもしくは複数の入力機器(図示せず)を介して、又はユーザ入力インターフェース4を介してコンピュータ機器2に結合された別の入力機器を介して、コンピュータ機器2に入力を提供し得る。
[0024]CPU6上で実行するソフトウェアアプリケーションは、グラフィックスデータのレンダリングを表示器18にさせることをCPU6に命令する1つ又は複数のグラフィックスレンダリング命令を含み得る。一部の例では、ソフトウェア命令は、グラフィックスアプリケーションプログラミングインターフェース(API)、例えば、Open Graphics Library(OpenGL(登録商標))API、Open Graphics Library Embedded Systems(OpenGL ES)API、Open Computing Language(OpenCL(登録商標))API、Direct3D API、X3D API、RenderMan API、WebGL API又は任意の他の公的もしくは私的標準グラフィックスAPIなどに適合し得る。グラフィックスレンダリング命令を処理するために、CPU6は、グラフィックスデータのレンダリングの一部又は全てをGPU12に実行させるために、1つ又は複数のグラフィックスレンダリングコマンドをGPU12に発行し得る(例えば、GPUドライバ7を通じて)。一部の例では、レンダリングされることになるグラフィックスデータは、グラフィックスプリミティブのリスト、例えば、点、線、三角形、四角形、トライアングルストリップなどを含み得る。
[0025]メモリコントローラ8は、システムメモリ10への、及びシステムメモリ10からのデータの転送を促進する。例えば、メモリコントローラ8は、コンピュータ機器2におけるコンポーネントに対してメモリサービスを提供するために、メモリ読み取り及び書き込みコマンドを受信し、メモリシステム10に関して、そのようなコマンドをサービスし得る。メモリコントローラ8は、メモリバス22を介してシステムメモリ10に通信可能に結合される。メモリコントローラ8が図1においてCPU6及びシステムメモリ10の両方とは別個の処理モジュールであるものとして示されるが、他の例では、メモリコントローラ8の機能性の一部又は全てが、CPU6、GPU12及びシステムメモリ10の1つ又はいずれかで実装され得る。システムメモリ10は、1つ又は複数のメモリユニットを備え得る。メモリユニットは、物理的に分割され得(例えば、別個の物理ディスク又はソリッドステートメモリユニット)、又はメモリアドレス範囲によって分割され得る。特に、システムメモリ10は、「安全な」メモリユニット、及び「安全でない」メモリユニットを構成する2つ以上のメモリユニットに分割され得る。安全なメモリユニットは、そこに記憶されたデータのアクセス、複製又は解読を防止するための暗号化及び/又は他のデジタル著作権管理(DRM)技術を利用し得る。
[0026]メモリコントローラ8はまた、システムメモリ10へのIO機器のアクセス(例えば、GPU)を制御するためのIOMMU(即ち、入力/出力メモリ管理ユニット(MMU))を含む、1つ又は複数のMMUを含み得る。メモリ管理ユニットは、仮想メモリシステムを実装し得る。仮想メモリ空間は、複数の仮想ページに分割され得る。それらの仮想ページは連続し得るが、それらの仮想ページがそれに対応するシステムメモリ10における物理ページは、システムメモリ10においては連続しないことがある。ページは、MMUが管理することが可能とし得る最小ユニットとして考慮され得る。
[0027]中央処理装置(CPU)上で稼動する現代のオペレーティングシステム(OS)は概して、CPU上で動作する複数のプログラムにメモリを割り振るための仮想メモリ方式を使用する。仮想メモリは、アプリケーションが単に1つの組のメモリ(即ち、仮想メモリ)を参照することを必要とするように、コンピュータシステムの物理メモリ(例えば、RAM、ディスク記憶装置など)を仮想化するメモリ管理技術である。仮想メモリは、物理メモリにおける位置にマッピングされる連続したアドレス空間から構成される。このようにして、物理メモリのフラグメンテーションが、代わりに仮想メモリの連続したブロックと相互作用し得るアプリケーションから「隠ぺいされる」。仮想メモリにおける連続したブロックは概して、「ページ」内に配置される。各ページは、幾つかの固定長の仮想メモリアドレスの連続したブロックである。仮想メモリから物理メモリへのマッピングは、メモリ管理ユニット(MMU)によって扱われることが多い。物理メモリにおける位置に現在マッピングされている仮想メモリ空間は、物理メモリに「戻される」と考えられる。
[0028]仮想メモリ空間における位置の物理メモリへのマッピングは、トランスレーションルックアサイドバッファ(TLB:translation lookaside buffer)に記憶される。TLBは、仮想アドレスを物理アドレスに高速に変換するために、MMUによって使用される。TLBは、入力として仮想メモリアドレスを使用し、物理メモリアドレスを出力するコンテンツアドレス可能メモリ(CAM:content-addressable memory)として実装され得る。次いで、MMUは、出力された物理メモリアドレスを使用して、要求されたデータを高速に取り出し得る。
[0029]図2は、システムメモリ10の例示的な物理ページを示す概念図である。例えば、図2は、4つの区画(区画0〜3)を含む仮想ページ42を含む、IOMMU40を示す。仮想ページ42は、理解を容易にするために図2に示される仮想構造であることが理解されるべきである。図2では、システムメモリ10は、仮想ページ42に対応する物理ページ44を含み得る。
[0030]物理ページ42は、システムメモリ10の複数のメモリユニットにわたって記憶され得る。例えば、物理ページ42は、メモリユニット11A及びメモリユニット11Nの両方を含み得る。一例では、メモリユニット11Aは「安全な」メモリユニットであり、メモリユニット11Nは「安全でない」メモリユニットである。メモリユニット11Aは、区画44Aとして示される、物理ページ44の一部分を記憶し得、メモリユニット11Nは、区画44Bとして示される、物理ページ44の一部分を記憶し得る。示されるように、メモリユニット11Aは、物理ページ44の区画0及び区画2を記憶し、メモリユニット11Nは、物理ページ44の区画1及び区画3を記憶する。
[0031]図2の例は、例示を目的に、2つのメモリユニットを含むのみであるが、任意に数のメモリユニットが使用され得る。例えば、図1を再度参照すると、GPUドライバ7は、GPU12に画素値又は任意の他の計算された値を記憶させる命令を送信し得、及び画素値が記憶されることになる場所に対する仮想アドレスを送信し得る。次に、GPU12は、仮想アドレスに従って、画素値を記憶することをIOMMU40に要求し得る。次に、IOMMU40は、仮想アドレスを物理アドレスにマッピングし得、物理アドレスに基づいて、インターリーブ方式でシステムメモリ10のページに画素値を記憶し得る。
[0032]図1を参照して、システムメモリ10は、CPU6による実行のためにアクセス可能なプログラムモジュール及び/もしくは命令、及び/又はCPU6上で実行するプログラムによる使用のためのデータを記憶し得る。例えば、システムメモリ10は、表示器18上のグラフィカルユーザインターフェース(GUI)を提示するために、CPU6によって使用されるウインドウマネージャアプリケーションを記憶し得る。加えて、システムメモリ10は、ユーザアプリケーション及びアプリケーションと関連付けられたアプリケーションサーフェスデータを記憶し得る。システムメモリ10は、コンピュータ機器2の他のコンポーネントによる使用のための情報及び/又はそれらにより生成される情報を追加的に記憶し得る。例えば、システムメモリ10は、GPU12に対する機器メモリとして動作し得、及びGPU12により演算されることになるデータとともに、GPU12によって実行された演算から生じるデータを記憶し得る。例えば、システムメモリ10は、DRM保護されたゲームコンテンツ又はGPU12により生成された復号化されたビデオを記憶し得る。このような状況で、そのようなDRM保護されたコンテンツは好ましくは、システムメモリ10の安全なメモリユニットに記憶される。他の例として、システムメモリ10は、テクスチャバッファ、深度バッファ、ステンシルバッファ、頂点バッファ、又はフレームバッファなどの任意の組み合わせのような他のグラフィックスデータを記憶し得る。システムメモリ10は、1つ又は複数の揮発性又は不揮発性メモリ又は記憶装置、例えば、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、リードオンリメモリ(ROM)、消去可能プログラマブルROM(EPROM)、電子的消去可能プログラマブルROM(EEPROM(登録商標))、フラッシュメモリ、磁気データ媒体、又は光学式記憶装置媒体を含み得る。
[0033]GPU12は、1つ又は複数のグラフィックスプリミティブを表示器18にレンダリングするためにグラフィックス演算を実行するように構成され得る。よって、CPU6上で実行するソフトウェアアプリケーションの1つがグラフィックス処理を要求するとき、CPU6は、表示器18にレンダリングするために、グラフィックスコマンド及びグラフィックスデータをGPU12に提供し得る。グラフィックスデータは、例えば、描画コマンド、状態情報、プリミティブ情報、テクスチャ情報などを含み得る。GPU12は、一部の例では、CPU6よりも複雑なグラフィック関連演算のより効率的な処理を提供する、高度に並列化された構造で構築され得る。例えば、GPU12は、複数の頂点又は画素上で並列な方式で動作するように構成された複数の処理要素を含み得る。GPU12の高度に並列化された特性は、一部の例では、CPU6を使用して表示器18にシーンを直接描画するよりも高速に、GPU12がグラフィックス画像(例えば、GUIならびに2次元(2D)及び/もしくは3次元(3D)グラフィックスシーン)を表示器18に描画することを可能にし得る。
[0034]GPU12は、一部の例では、コンピュータ機器2のマザーボードに統合され得る。他の例では、GPU12は、コンピュータ機器2のマザーボードにおけるポートに差し込まれたグラフィックスカード上に存在し得、又はコンピュータ機器2と相互動作するように構成された周辺機器内に組み込まれ得る。GPU12は、1つ又は複数のマイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、又は他の同等の集積もしくは個別論理回路などの1つ又は複数のプロセッサを含み得る。
[0035]GPU12は、グラフィックスメモリ14に直接結合され得る。よって、GPU12は、バス20を使用することなく、グラフィックスメモリ14からデータを読み取り、及びグラフィックスメモリ14にデータを書き込み得る。言い換えると、GPU12は、他のより低速なシステムメモリを使用する代わりに、ローカル記憶装置を使用して、データをローカルに処理し得る。これは、GPU12が、大量のバストラフィックを経験することがあるシステムバス20を介してデータを読み取り及び書き込みする必要性を除去することによって、GPU12がより効率的な方式で動作することを可能にする。しかしながら、一部の例では、GPU12は、別個のメモリを含まなくてもよいが、代わりに、バス20を介してシステムメモリ10を利用する。グラフィックスメモリ14は、1つ又は複数の揮発性又は不揮発性メモリ又は記憶装置、例えば、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)ダイナミックRAM(DRAM)、消去可能プログラマブルROM(EPROM)、電子的消去可能プログラマブルROM(EEPROM)、フラッシュメモリ、磁気データ媒体、又は光学式記憶装置媒体を含み得る。
[0036]CPU6及び/又はGPU12は、フレームバッファ15にレンダリングされた画像データを記憶し得る。概して、フレームバッファ15は、システムメモリ10内に割り振られるが、一部の環境では、独立したメモリであり得る。表示器インターフェース16は、フレームバッファ15からデータを取り出し得、及びレンダリングされた画像データによって表示された画像を表示するように表示器18を構成し得る。一部の例では、表示器インターフェース16は、フレームバッファから取り出されたデジタル値を、表示器18により消費可能なアナログ信号に変換するように構成されたデジタルツーアナログコンバータ(DAC)を含み得る。他の例では、表示器インターフェース16は、処理のために、デジタル値を表示器18に直接的に渡すことができる。表示器18は、モニタ、テレビ、投影機器、液晶表示器(LCD)、プラズマ表示器パネル、有機LED(OLED)表示器などの発光ダイオード(LED)アレイ、陰極線管(CRT)表示器、電子ペーパー、表面伝導電子放射表示器(SED)、レーザーテレビ表示器、ナノクリスタル表示器、又は別のタイプの表示器ユニットを含み得る。表示器18は、コンピュータ機器2に統合され得る。例えば、表示器18は、携帯電話又はタブレットコンピュータのスクリーンであり得る。代わりに、表示器18は、有線又はワイヤレス通信リンクを介してコンピュータ機器2に結合されたスタンドアロン機器であり得る。例えば、表示器18は、ケーブル又はワイヤレスリンクを介してパーソナルコンピュータに結合されたコンピュータモニタ又はフラットパネル表示器であり得る。
[0037]図3は、更に詳細に、図1のCPU6、GPU12、及びシステムメモリ10の例示的な実装形態を示すブロック図である。CPU6は、その各々がCPU6上で実行する1つ又は複数のソフトウェアアプリケーション又はサービスであり得る、少なくとも1つのソフトウェアアプリケーション24、グラフィックスAPI26、及びGPUドライバ7を含み得る。GPU12は、グラフィックス処理コマンドを実行するためにともに動作する複数のグラフィックス処理ステージを含む、3Dグラフィックス処理パイプライン30を含み得る。GPU12は、ビニングレンダリングモード(タイルベース又は遅延レンダリングモードとも称される)、及び直接レンダリングモードを含む、種々のレンダリングモードでグラフィックス処理パイプライン30を実行するように構成され得る。GPU12はまた、GPUハードウェアの高度に並列な特性によって実行されることに適用可能なより一般的な計算を実行するために、汎用シェーダ39を実行するために動作可能であり得る。そのような汎用アプリケーションは、所謂汎用グラフィックス処理ユニット(GPGPU)であり得、及びOpenCLなどの汎用APIに適合し得る。
[0038]図3に示されるように、グラフィックス処理パイプライン30は、コマンドエンジン32、幾何学処理ステージ34、ラスタリゼーションステージ36、及び画素処理パイプライン38を含み得る。グラフィックス処理パイプライン30におけるコンポーネントの各々は、固定関数コンポーネント(fixed-function components)、プログロマブルコンポーネント(例えば、プログロマブルシェーダユニット上で実行するシェーダプログラムの一部として)として、又は固定関数及びプログロマブルコンポーネントの組み合わせとして実装され得る。CPU6及びGPU12に利用可能なメモリは、自身がフレームバッファ15を含み得る、システムメモリ10を含み得る。フレームバッファ15は、レンダリングされた画像データを記憶し得る。
[0039]ソフトウェアアプリケーション24は、GPU12の機能を利用する任意のアプリケーションであり得る。例えば、ソフトウェアアプリケーション24は、GUIアプリケーション、オペレーティングシステム、ポータブルマッピングアプリケーション、エンジニアリング又はアーティスチックアプリケーションのためのコンピュータ支援設計プログラム、ビデオゲームアプリケーション、又は2D若しくは3Dグラフィックスを使用する別のタイプのソフトウェアアプリケーションであり得る。ソフトウェアアプリケーション24はまた、GPGPUアプリケーションにおいてなど、より一般的な計算を実行するためにGPUを使用するアプリケーションであり得る。
[0040]ソフトウェアアプリケーション24は、GPU12に、グラフィカルユーザインターフェース(GUI)及び/又はグラフィックスシーンをレンダリングすることを指示する1つ又は複数の描画命令を含み得る。例えば、描画命令は、GPU12によってレンダリングされることになる1つ又は複数のグラフィックスプリミティブの組を定義する命令を含み得る。一部の例では、描画命令は、GUIにおいて使用される複数のウインドウサーフェスの全て又は一部を集合的に定義し得る。追加的な例では、描画命令は、アプリケーションによって定義されたモデル空間内、又は世界空間内の1つ又は複数のグラフィックスオブジェクトを含む、グラフィックスシーンの全て又は一部を集合的に定義し得る。
[0041]ソフトウェアアプリケーション24は、1つ又は複数のグラフィックスプリミティブを表示可能なグラフィックス画像にレンダリングするための1つ又は複数のコマンドをGPU12に発行するために、グラフィックスAPI26を介してGPUドライバ7を呼び出し得る。例えば、ソフトウェアアプリケーション24は、プリミティブ定義をGPU12に提供するために、グラフィックスAPI26を介してGPUドライバ7を呼び出し得る。一部の例では、プリミティブ定義は、描画プリミティブのリスト、例えば、三角形、長方形、トライアングルファン、トライアングルストリップなどの形式でGPU12に提供され得る。プリミティブ定義は、レンダリングされることになるプリミティブと関連付けられた1つ又は複数の頂点を指定する頂点仕様を含み得る。頂点仕様は、各頂点、及び一部の例では、頂点と関連付けられた他の属性、例えば、色座標、法線ベクトル、及びテクスチャ座標に対する位置座標を含み得る。プリミティブ定義はまた、プリミティブタイプ情報(例えば、三角形、長方形、トライアングルファン、トライアングルストリップなど)、スケーリング情報、及び回転情報などを含み得る。ソフトウェアアプリケーション24によってGPUドライバ7に発行された命令に基づいて、GPUドライバ7は、プリミティブをレンダリングするために実行するために、GPU12に対して1つ又は複数の演算を指定する1つ又は複数のコマンドを定義し得る。GPU12がCPU6からコマンドを受信するとき、グラフィックス処理パイプライン30は、コマンドを復号し、コマンドにおいて指定された演算を実行するためにグラフィックス処理パイプライン30内で1つ又は複数の処理要素を構成する。指定された演算を実行した後、グラフィックス処理パイプライン30は、レンダリングされたデータを、表示装置と関連付けられたフレームバッファ15に出力する。グラフィックスパイプライン30は、ビンニングレンダリングモード及び直接レンダリングモードを含む複数の異なるレンダリングモードの1つにおいて実行するように構成され得る。
[0042]GPUドライバ7は更に、1つ又は複数のシェーダプログラムをコンパイルし、及びコンパイルされたシェーダプログラムを、GPU12内に含まれる1つ又は複数のプログラマブルシェーダユニット上にダウンロードするように構成され得る。シェーダプログラムは、ハイレベルシェーディング言語、例えば、OpenGLシェーディング言語(GLSL)、ハイレベルシェーディング言語(HLSL)グラフィックスシェーディング言語に対するC(Cg)などに書き込まれ得る。コンパイルされたシェーダプログラムは、GPU12内のプログラマブルシェーダユニットの動作を制御する1つ又は複数の命令を含み得る。例えば、シェーダプログラムは、頂点シェーダプログラム及び/又は画素シェーダプログラムを含み得る。頂点シェーダプログラムは、プログラマブル頂点シェーダユニット又は統合シェーダユニットの実行を制御し得、及び頂点ごとの1つ又は複数の演算を指定する命令を含み得る。画素シェーダプログラムは、プログラマブル画素シェーダユニット又は統合シェーダユニットの実行を制御する画素シェーダプログラムを含み得、及び画素ごとの1つ又は複数の演算を指定する命令を含み得る。この開示の一部の例に従って、画素シェーダプログラムはまた、ソース画素に対する対応する目標アルファ値に基づいて、テクスチャ値が選択的にソース画素に対して取り出されるようにさせる命令を含み得る。
[0043]グラフィックス処理パイプライン30は、グラフィックスドライバ7を介して、CPU6から1つ又は複数のグラフィックス処理コマンドを受信し、及び表示可能なグラフィックス画像を生成するためにグラフィックス処理コマンドを実行するように構成され得る。上述したように、グラフィックス処理パイプライン30は、グラフィックス処理コマンドを実行するためにともに動作する複数のステージを含む。しかしながら、そのようなステージは必ずしも別個のハードウェアブロックで実装されないことに留意すべきである。例えば、幾何学処理ステージ34及び画素処理パイプライン38の一部は、統合シェーダユニットの一部として実装され得る。再度、グラフィックスパイプライン30は、ビニングレンダリングモード及び直接レンダリングモードを含む、複数の異なるレンダリングモードの1つで実行するように構成され得る。
[0044]コマンドエンジンの32は、グラフィックス処理コマンドを受信し得、及びグラフィックス処理コマンドを実行するための種々の演算を実行するために、グラフィックス処理パイプライン30内の残りの処理ステージを構成し得る。グラフィックス処理コマンドは、例えば、描画コマンド及びグラフィックス状態コマンドを含み得る。描画コマンドは、1つ又は複数の頂点、及び一部の例では頂点の各々と関連付けられた他の属性値、例えば、色座標、法線ベクトル、テクスチャ座標、及びフォグ座標に対する位置座標を指定する頂点仕様コマンドを含み得る。グラフィックス状態コマンドは、プリミティブタイプコマンド、変換コマンド、ライティングコマンド(lighting command)などを含み得る。プリミティブタイプコマンドは、レンダリングされることになるプリミティブのタイプ、及び/又はどのように頂点がプリミティブを形成するために組み合わされるかを指定し得る。変換コマンドは、頂点上で実行するための変換のタイプを指定し得る。ライティングコマンドは、グラフィックスシーン内の異なる光のタイプ、方向及び/又は配置を指定し得る。コマンドエンジン32は、幾何学処理ステージ34に、1つ又は複数の受信したコマンドと関連付けられた頂点及び/又はプリミティブに関して幾何学処理を実行させ得る。
[0045]幾何学処理ステージ34は、ラスタリゼーションステージ36に対するプリミティブデータを生成するために、1つ又は複数の頂点上で、頂点ごとの演算及び/又はプリミティブセットアップ演算を実行し得る。各頂点は、属性の組、例えば、位置座標、色値、法線ベクトル、及びテクスチャ座標と関連付けられ得る。幾何学処理ステージ34は、種々の頂点ごとの演算に従って、それらの属性の1つ又は複数を修正する。例えば、幾何学処理ステージ34は、修正された頂点位置座標を生成するために、頂点位置座標上で1つ又は複数の変換を実行し得る。幾何学処理ステージ34は、修正された頂点位置座標を生成するために、例えば、モデリング変換、視野変換(viewing transformation)、投影変換、ModelView変換、ModelViewProjection変換、ビューポート変換(viewport transformation)及び深度レンジスケーリング変換の1つ又は複数を、頂点位置座標に適用し得る。一部の例では、頂点位置座標は、モデル空間座標であり得、修正された頂点位置座標は、スクリーン空間座標であり得る。スクリーン空間座標は、モデリング、視野、投影及びビューポート変換の適用の後に取得され得る。一部の例では、幾何学処理ステージ34はまた、頂点に対する修正された色座標を生成するために、頂点上で頂点ごとのライティング演算を実行し得る。幾何学処理ステージ34はまた、例えば正規変換演算、標準正規化演算、ビューボリュームクリッピング、異種分割及び/又はバックフェースカリング演算を含む他の演算を実行し得る。
[0046]幾何学処理ステージ34は、ラスタライズされることになるプリミティブを定義する1つ又は複数の修正された頂点の組を含むプリミティブデータとともに、プリミティブを形成するためにどのように頂点を組み合わせるかを指定するデータを生成し得る。修正された頂点の各々は、例えば、修正された頂点位置座標及び頂点と関連付けられた処理された頂点属性値を含み得る。プリミティブデータは、グラフィックス処理パイプライン30の更なるステージによってラスタライズされることになるプリミティブに集合的に対応し得る。概念的に、各頂点は、プリミティブの2つのエッジが満たすプリミティブの角に対応し得る。幾何学処理ステージ34は、更なる処理のために、プリミティブデータをラスタリゼーションステージ36に提供し得る。
[0047]一部の例では、幾何学処理ステージ34の全て又は一部は、1つ又は複数のシェーダユニット(shader units)上で実行する1つ又は複数のシェーダプログラムによって実装され得る。例えば、幾何学処理ステージ34は、そのような例では、頂点シェーダ、幾何学シェーダ、又はそれらの任意の組み合わせによって実装され得る。他の例では、幾何学処理ステージ34は、固定関数ハードウェア処理パイプラインとして、又は固定関数ハードウェアと1つ又は複数のシェーダユニット上で実行する1つ又は複数のシェーダプログラムとの組み合わせとして実装され得る。
[0048]ラスタリゼーションステージ36は、ラスタライズされることになるプリミティブを表すプリミティブデータを幾何学処理ステージ34から受信し、及びプリミティブをラスタライズして、ラスタライズされたプリミティブに対応する複数のソース画素を生成するように構成される。一部の例では、ラスタリゼーションステージ36は、どのスクリーン画素位置が、ラスタライズされることになるプリミティブによってカバーされるかを決定し得、及びプリミティブによってカバーされることになると決定された各スクリーン画素位置に対するソース画素を生成し得る。ラスタリゼーションステージ36は、当業者によって既知の技術、例えば、エッジウォーキング(edge-walking)技術を使用し、エッジ式を評価するなどによって、どのスクリーン画素位置がプリミティブによりカバーされるかを決定し得る。ラスタリゼーションステージ36は、更なる処理のために、結果として生じるソース画素を画素処理パイプライン38に提供し得る。
[0049]ラスタリゼーションステージ36によって生成されたソース画素は、スクリーン画素位置、例えば、目標画素に対応し得、及び1つ又は複数の色属性と関連付けられ得る。特定のラスタライズされたプリミティブに対して生成されたソース画素の全ては、ラスタライズされたプリミティブと関連付けられていると言える。プリミティブによりカバーされることになるラスタリゼーションステージ36によって決定された画素は概念的に、プリミティブの頂点を表す画素、プリミティブのエッジを表す画素、及びプリミティブの内部を表す画素を含み得る。
[0050]画素処理パイプライン38は、ラスタライズされたプリミティブと関連付けられたソース画素を受信し、及びソース画素上で1つ又は複数の画素ごとの演算を実行するように構成される。画素処理パイプライン38によって実行され得る画素ごとの演算は、例えば、アルファテスト、テクスチャマッピング、色計算、画素シェーディング、画素ごとのライティング、フォグ処理、混合、画素オーナシップテキスト(pixel ownership text)、ソースアルファテスト(source alpha test)、ステンシルテスト、深度テスト、シザーステスト(scissors test)、及び/又はスティップリング演算(stippling operations)を含む。加えて、画素処理パイプライン38は、1つ又は複数の画素ごとの演算を実行するために、1つ又は複数の画素シェーダプログラムを実行し得る。画素処理パイプライン38によって生成される結果として生じるデータは、本明細書では目標画素データと称され得、及びフレームバッファ15に記憶され得る。目標画素データは、処理されたソース画素と同一の表示位置を有する、フレームバッファ15における目標画素と関連付けられ得る。目標画素データは、例えば、色値、目標アルファ値、深度値などのデータを含み得る。
[0051]フレームバッファ15は、GPU12に対する目標画素を記憶する。各目標画素は、一意なスクリーン画素位置と関連付けられ得る。一部の例では、フレームバッファ15は、各目標画素に対する色要素及び目標アルファ値を記憶し得る。例えば、フレームバッファ15は、各画素に対する赤、緑、青、アルファ(RGBA)要素を記憶し得、「RGB」要素は、色値に対応し、「A」要素は目標アルファ値に対応する。画素値はまた、輝度要素(Y)及び1つ又は複数の彩度要素(例えば、U及びV)によって表され得る。フレームバッファ15及びシステムメモリ10は別個のメモリユニットであるものとして示されているが、他の例では、フレームバッファ15は、システムメモリ10の一部であり得る。
[0052]汎用シェーダ39は、計算を実行するためのGPU12上で実行可能な任意のアプリケーションであり得る。概して、そのような計算は、演算論理ユニット(ALU)を含む、GPU処理コアの高度に並列した構造を利用するタイプの計算である。汎用シェーダ39の例は、OpenCL APIに適合し得る。OpenCLは、異種システム(例えば、CPU、GPU、DSPなどを含むシステム)において複数のプロセッサにわたってアプリケーションがアクセスを有することを可能にするAPIである。概して、アプリケーションに適合したOpenCLでは、GPU12は、非グラフィカル計算を実行するために使用される。非グラフィカル計算アプリケーションの例は、とりわけ、物理学ベースのシミュレーション、高速フーリエ変換、オーディオ信号処理、デジタル画像処理、ビデオ処理、画像ポストフィルタリング、コンピューテーショナルカメラ、気候研究、天気予報、ニューラルネットワーク、暗号作成、及び大容量並列データのクランチングを含み得る。
[0053]図4は、この開示のハードウェアによるコンテンツ保護技術を実装するように構成された例示的な機器を示すブロック図である。図4の例では、GPU12は、安全モード又は非安全モードに従って動作するように構成され得る。安全モードでは、GPU12は、出力データ(例えば、ゲームデータ、ビデオなど)を安全でないメモリ56に書き込むことに制限される。むしろ、安全モードでは、GPU12は、出力データを安全なメモリ57に書き込みことができるのみである。安全モードにある間、GPU12は、安全なメモリ57又は安全でないメモリ56のいずれかからデータを読み取り得る。非安全モードでは、GPU12は、安全なメモリ57から任意のデータを読み取ることから制限される。むしろ、非安全モードでは、GPU12は、安全でないメモリ56からデータを読み取ることのみできる。同様に、非安全モードにある間、GPU12は、安全でないメモリ56にデータを書き込みのみできる。
[0054]安全でないメモリ56及び安全なメモリ57は、1つ又は複数の揮発性又は不揮発性メモリ又は記憶装置を含む、任意のタイプのメモリであり得る。例示的なメモリ及び記憶装置は、RAM、SRAM、DRAM、ROM、EPROM、EEPROM、フラッシュメモリ、磁気データ媒体、又は光学式記憶装置媒体を含む。安全なメモリ57は、安全でないメモリ56では発見されない追加的な特徴を含む。例えば、安全なメモリ57は、それに記憶されたデータへのアクセス、複製、又は解読を防止するために、暗号化、認証、及び/又は他のデジタル著作権管理技術を利用し得る。
[0055]GPU12は、メモリアクセスコントローラ53を使用して、データがどこから読み取られ、及びどこに書き込まれるかを制御する。メモリアクセスコントローラ53は、その下で(即ち、安全モード又は非安全モード)で動作するモードGPU12に応答し、モードに基づいて読み取り/書き込み決定を行う。
[0056]一例では、GPUメモリモードは、CPU6上で動作するGPUドライバ7によって設定される。GPUドライバ7は、幾つかの異なる方法でGPU12においてメモリモードを変更し得る。一例では、GPUドライバ7は、どのメモリモードを使用するか(例えば、安全モード又は非安全モード)をGPU12に示す値を、GPU12におけるレジスタに直接書き込む。別の例では、GPU12は、どのメモリモードを使用するかを示すレジスタに一定の値を書き込むようにGPU12自身に命令する、1つ又は複数の命令を、GPU12によって実行可能なコマンドストリームに含み得る。このようにして、GPUドライバ7は、GPUがその下で動作するメモリモードを選択することのみができ、及びどのデータがどのメモリに書き込まれるかを指定する直接命令を行わない。このようにして、GPUドライバ7が非安全モードにおいてGPU12を配置するように改竄された場合でさえ、メモリアクセスコントローラ53の機能を通じて、GPU12は、メモリアクセスコントローラ53が非安全モードにおいて安全でないメモリ56から読み取ることのみが可能であるので、安全なメモリ57からのいずれの読み取りアクセスも防止する。同様に、GPU7が安全モードにおいてGPU12を配置するように改竄された場合でさえ、メモリアクセスコントローラ53の機能を通じて、GPU12は、メモリアクセスコントローラ53が安全モードにおいて安全なメモリ57に書き込むことのみが可能であるので、安全でないメモリ56へのいずれの書き込みアクセスも防止する。
[0057]一例では、メモリコントローラ53は、安全な及び安全でないメモリ管理ユニット(MMU)ページテーブルのそれぞれを介して、安全な及び安全でないメモリユニットにアクセスする。この例では、仮想アドレス範囲は、GPUドライバ7によってGPU12に提供される。仮想アドレス範囲は、安全なメモリに対する仮想アドレスの範囲及び安全でないメモリに対する仮想アドレスの範囲を含む。GPUドライバ7によって安全モードに配置されるとき、GPU12は、読み取り及び書き込みを実行するために、安全なメモリに対する仮想アドレスの範囲を利用する。GPU12はまた、安全モードで読み取りを実行するが、書き込みは実行しないために、安全でないメモリに対する仮想アドレスの範囲を使用することが可能である。GPUドライバ7によって非安全モードに配置されるとき、GPU12は、読み取り及び書き込みを実行するために、安全でないメモリに対する仮想アドレスの範囲を利用する。
[0058]一例では、メモリアクセスコントローラ53は、読み取り又は書き込み要求で使用される仮想アドレスが、仮想メモリアドレスの安全でない範囲内にあるか、又は仮想アドレスの安全な範囲内にあるかを決定することによって、読み取り及び書き込みを適切なメモリユニット(即ち、安全なメモリ57又は安全でないメモリ56)に経路指定する。範囲決定に基づいて、メモリアクセスコントローラは、安全でないIOMMU51又は安全なIOMMU52の1つを利用する。
[0059]安全でないIOMMU51は、仮想メモリアドレスを安全でないメモリ56における物理メモリアドレスにマッピングするように構成されたIOMMUである。安全なIOMMU52は、仮想メモリアドレスを安全なメモリ57における物理メモリアドレスにマッピングするように構成されたIOMMUである。安全でないIOMMU51は、安全でないページテーブル(page table)を使用して、安全でないメモリ56へのマッピングを実行する。安全でないページテーブルは、仮想メモリアドレスの範囲(例えば、GPUドライバ7によって提供される範囲)を安全でないメモリ56における位置にマッピングするページテーブルである。同様に、安全なIOMMU52は、安全なページテーブルを使用して、安全なメモリ57へのマッピングを実行する。安全なページテーブルは、仮想メモリアドレスの範囲(例えば、GPUドライバ7によって提供される範囲)を安全なメモリ57における位置にマッピングするページテーブルである。図4に示されるように、安全でないIOMMU51及び安全なIOMMU52は、単一のIOMMU50の一部である。実際には、IOMMU50は、それが安全なページテーブルで動作するとき、安全なIOMMUとなり、それが安全でないページテーブルで動作するとき、安全でないIOMMUとなる。他の例では、安全でないIOMMU51及び安全なIOMMU52は、物理的に別個のMMUであり得る。
[0060]開示の一例では、安全なページテーブル及び安全でないページテーブルの両方が、CPU6上で実行する安全なオペレーティングシステム(OS)54によって安全なIOMMU52及び安全でないIOMMU51に提供される。安全なOSは、標準的な「リッチな」OS(例えば、Apple iOS、Google Android、Microsoft Windowsなど)に沿って動作するOSである。安全なOSは、安全なカーネル及び任意の安全な周辺機器を(例えば、安全なIOMMU52)をリッチなOS(例えば、GPUドライバ7)上で稼動する任意のコードから保護及び分離するために、セキュリティアプリケーションを提供する。安全なOSの例は、ARMホールディングスによって製造されたTrustZoneソフトウェアである。概して、安全なOSは、グラフィックスドライバなどのソフトウェアを含むリッチなOS上で稼動するソフトウェアよりも、改竄及び攻撃を受けにくいと考えられている。この開示の技術に従って、安全なOSのみが、仮想メモリアドレス範囲を物理メモリアドレスにマッピングするためのページテーブルを更新することが許可される。よって、ドライバによって提供される仮想アドレス範囲を含む、グラフィックスドライバを改竄するための任意の試みは、安全なOSのみが安全なメモリ及び安全でないメモリへの最終的なマッピングを提供するので、安全でないメモリに記憶されている安全なコンテンツをもたらさない。
[0061]安全なページテーブル及び安全でないページテーブルの両方がIOMMU50(即ち、安全でないIOMMU51及び安全なIOMMU52の両方で構成されるIOMMU50)において利用可能な例では、GPU12は、安全モードにおいて安全でないメモリ56及び安全なメモリ57の両方からデータを読み取り可能である。他の読み取り/書き込み制限は更に適用される。即ち、安全モードでは、書き込みは、GPU12によって安全なメモリ57になされるのみであり、非安全モードでは、GPU12による読み取り及び書き込みの両方が安全でないメモリ56に制限される。
[0062]開示の別の例では、GPUに利用可能な安全なIOMMU及び安全でないIOMMUの両方を有するのではなく、データトラフィックがメモリアクセスコントローラ53を介して安全なIOMMU又は安全でないIOMMUのいずれかに向けられる場合、1つのIOMMU(即ち、安全でないIOMMU51又は安全なIOMMU52のいずれか)が、選択されたメモリモードに応じてGPU12に利用可能となる。即ち、メモリモードが非安全モードである場合、安全なOS54は、安全でないIOMMU51に対してページテーブルマッピングを提供するのみである。この状況では、安全なIOMMU52は利用可能でない。メモリモードが安全モードである場合、安全なOS54は、安全なIOMMU52に対してページテーブルマッピングを提供するのみである。この状況では、安全でないIOMMU51は利用可能でない。メモリモードごとに利用可能な1つのIOMMUを有するのみのこの例は、読み取り及び書き込みの両方がメモリモードごとに制限されたより単純な実装形態を提供する。即ち、GPU12による安全なメモリ57への読み取り及び書き込みのみが安全モードでは許可され、GPU12による安全でないメモリ56への読み取り及び書き込みのみが非安全モードでは許可される。これは、安全モードがもはや安全でないメモリ56に対する読み取りを許可しないという点で、両方のIOMMUが利用可能となり得る上記説明したアプローチとはわずかに異なる。
[0063]安全モードにあるときでさえ、GPUがよりよく安全でないメモリに書き込むことになる、GPU12の最終的な出力生成以外に、一部の書き込みが存在する。それらの書き込みは、GPU12とグラフィックスドライバ7との間の通信トークンを含む。そのようなデータは、タイムスタンプ、ならびにカウンタデータ及びクエリデータなどの他の捕捉データ及び制御データを含む。GPU12は、そのようなタイムスタンプ及びデータをドライバに通信し返すために、メモリ(例えば、安全でないメモリ56)を使用する。グラフィックスドライバ7が信頼されないので、通信経路に含まれるメモリは、安全でない必要がある(例えば、安全でないメモリ56)。一例として、GPU12が処理における一定のポイントに到達するとき、GPU12は、タイムスタンプ/シーケンシャルマーカをメモリに書き込む。グラフィックスドライバ7は、GPUが特定のコマンドストリームにおいてどの程度進行したかを決定するために、この情報を使用する。この決定は、例えば、GPU12が終了すると、GPU12が動作しているメモリオブジェクトをグラフィックスドライバ7が解放することを可能にする。グラフィックスドライバ7に情報を提供するためにGPU12がメモリ書き込みを使用する多くの他のタイプの信号伝達(signaling)及び通信経路が存在する。別の例として、グラフィックスドライバ7は、描画コールの後、性能カウンタを報告するようにGPU12に要求することができる。次いで、GPU12は、それらの性能カウンタを、グラフィックスドライバ7によって指定されたメモリ位置(例えば、安全でないメモリ56に)書き込む。
[0064]GPU12が、より安全な安全でないメモリに書き込まない、上記一般的なルールへのこの例外を解決するために、一定のハードウェアブロックが、安全でないメモリアクセスを有するとともに、GPUが安全モードで稼動しているときに安全なコンテンツに接続又はそれを含むデータ経路及びキャッシュへのアクセスを有しないように構成されるように、GPU12ハードウェアが修正され得る。
[0065]図5は、GPU12が安全モードにあるときでさえ、GPU12の一定のハードウェアブロックのみが、GPU12のメモリインターフェースブロック(VBIF60)を通じて、次いで安全でないIOMMU51を通じて、安全でないメモリへの直接アクセスを有する例示的な実装形態を示す。そのようなハードウェアブロック一例は、GPUのフロントエンドにおけるコマンドプロセッサ(CP)62ブロックである。CP62は、図3に示されるようなコマンドエンジン32などのコマンドエンジンを実行し得る。CP62は、GPUドライバ7にメッセージを送信し返す(安全でないメモリを介して)ことを担当する。図5に示されるように、CP62は、安全でないIOMMU51を通じてメモリ(このケースでは、安全でないメモリ)への1つの物理経路のみを有するように構成される。よって、任意の他のハードウェアブロックGPU12が安全なコンテンツ上で動作しているかに関わらず、CP62は、そのような安全なコンテンツへのアクセスを取得することはない。CP62が安全なコンテンツへのアクセスを有しないことを更に保証するために、CP62はまた、デバッグバスを含む安全なコンテンツを記憶するために使用され得る任意のレジスタから物理的に独立され得る(例えば、接続を有しない)。図5に示されるように、CP62は、L2キャッシュ61及びグラフィックスメモリ(GMEM)70への直接アクセスを有しない。GMEM70は、GPU12がレンダリングターゲットとして使用する高速メモリ(しばしば、SRAM)、又はGPU12の一部の動作モードにおいて表示するためにコンテンツをレンダリングするときのフレームバッファである。L2キャッシュ61は、メインメモリ(例えば、安全なメモリ)へのアクセスの数が減少され得るように、直近でアドレス指定されたデータ、又は頻繁に使用されるデータを記憶するために使用される二次的なキャッシュである。L2キャッシュ61はまた、プログラム命令をバッファリングするために使用され得る。概して、L2キャッシュ61は、GMEM70よりも大きい。
[0066]GPU12の他のハードウェアブロックはまた、安全でないメモリへのアクセスのみを有するように構成され得る。例えば、プリミティブ制御(PC)ユニット及び可視性ストリームコンプレッサ(VSC)は、安全でないメモリへのアクセスのみを有するように構成され得る。PCユニットは、グラフィックスパイプライン(例えば、図3のグラフィックス3D処理パイプライン30)を通じて、どのようにプリミティブ(例えば、三角形)を進展させるか、又は「運ぶ(walks)」かを制御する。VSCは、可視性ストリームを圧縮及び管理するために、タイルベース又は遅延レンダリング方式において使用される。概して、一部の環境では、安全なメモリに書き込むために、一定のハードウェアブロックを要求することを回避することが有利となり得る。そのような環境は、ハードウェアブロックが安全なコンテンツを書き込まない状況、及びハードウェアブロックが、グラフィックスドライバによって必要とされる制御データを書き込んでいるときの状況を含む。
[0067]図5における他のハードウェアブロックは、上述した技術に基づいて、コンテンツを安全でないメモリ又は安全なメモリに記憶する。即ち、非安全モードでは、データが安全でないメモリから読み取られるのみであり得、又は安全でないメモリに書き込まれるのみであり得る。非安全モードでは、安全なメモリからデータは読み取られないことがある。安全モードでは、データは安全なメモリに書き込まれるのみであり得る。安全モードでは、安全でないメモリにデータは書き込まれないことがある。しかしながら、一部の例における安全モードでは、データは、安全なメモリ及び安全でないメモリの両方から読み取られ得る。メモリモードに従ってメモリにアクセスし得るGPU12のそれらの追加的なハードウェアブロックは、頂点フェッチ復号化(VFD)ユニット65、高レベルシーケンサ(HLSQ)66、頂点シェーダ(VS)67、画素シェーダ(PS)68、及びレンダリングバックエンド(RB)69を含む。VFD65は、PC63の要求において頂点データをフェッチすることを担当する。HLSQ66は、シェーダプロセッサ(即ち、シェーダコードを実行するGPU上のプログラマブルプロセッサ)を制御し、実行されているジョブ及びシェーダプロセッサに投入したジョブに対する正確な状況をポピュレートする。VS67は、シェーダプロセッサ上で実行する頂点シェーダである。例えば、VS67は、図3のグラフィックス3D処理パイプライン30の幾何学処理ステージ34を実行する頂点シェーダコードを含み得る。PS68は、シェーダプロセッサ上で実行する画素シェーダである。例えば、PS68は、図3のグラフィックス3D処理パイプライン30の画素処理パイプライン38を実行する画素シェーダコードを含み得る。レンダリングバックエンド(RB)69は、深度バッファ及びステンシルバッファに対して画素を読み取り及び書き込むことを担当する。
[0068]安全モードから非安全モードにGPUが遷移するとき、GPUの種々のキャッシュ、メモリ及びレジスタ内に残っている安全なコンテンツが存在し得る。開示の一例では、安全でないメモリモードを使用してGPU上で安全でないジョブを開始することを可能にする前に、安全なコンテンツを保持し得るGPU12の種々の記憶ユニットをクリア及び/又は無効にするための機構が提供される。このコンテキストでは、メモリをクリアすることは、メモリに記憶されたデータが消去及び/又は上書きされることを可能にすることを意味する。実際には、クリアすることは、メモリユニットにおける全てのデータが上書きされ得るように、メモリユニットに対して全てのメモリアドレスの割り振りを解除することを含み得る。他の例では、クリアすることは、任意の前に記憶されたデータがもはや利用可能とならないように、メモリユニットにおける全てのデータを上書きする(例えば、全てを「1」又は「0」で)ことを含み得る。メモリユニットがクリアされない場合、安全でないジョブは、安全なデータの後続の残りを安全でないメモリに複製する。この問題は、安全なソフトウェア技術、ハードウェア技術、又は両方の技術の組み合わせを介して解決され得る。いずれにせよ、この動作は、安全でないドライバによってトリガされるので、安全でないクリア及び遷移(the clearing and transition to unsecure)は、アトミックオペレーション(atomic operation)であり得る。このコンテキストでは、アトミックオペレーションは、非安全モードに再度遷移することとともに(即ち、アトミックに)内部GPU12のメモリをクリアすることを含む。例えば、両方(モードを変更すること、及び内部メモリをクリアすること)を行う単一の「コマンド」が存在するはずであるが、そうでない場合、悪意のあるソフトウェアがまさに非安全モードへの再度の遷移を実行し、クリア動作を実行しない。
[0069]一部の例では、安全モードから非安全モードに遷移するとき、GPU12の全ての記憶ユニットを必ずしもクリアにする必要がないことがある。代わりに、記憶ユニットの一部分のみが、安全なコンテンツへの権限のないアクセスを効率的に防止するためにクリアにされる必要がある。一例として、記憶されたコンテンツのみがクリアにされる必要がある。別の例として、データの一定量のデータおきに(例えば、32バイトごと)もクリアされ得る。
[0070]図6は、この開示の一例に従ったキャッシュクリア技術を示すブロック図である。図6の例では、安全なソフトウェアの解決法は、安全なモードと非安全モードとの間でGPUを遷移させるために使用される。一例では、GPUレジスタ(例えば、クリアレジスタ74)は、ホストCPU6上で稼動する安全なソフトウェア(例えば、安全なOS54)の制御下にある。GPUドライバ7が、GPU12のメモリモードを非安全モードから安全モードに切り替える場合、GPUドライバ7はまた、L2キャッシュ61、GMEM70、及び他のレジスタ72を含む、GPU12のキャッシュ、メモリ又はレジスタに残っているいずれかの安全なコンテンツをクリアするために、安全なOS54における安全なソフトウェアを呼び出す。その時点において、安全なOS54は最初に、メモリクリア及び/又は無効化命令をクリアレジスタ74に書き込むことによって、GPU12上でジョブを開始することができる。そのような命令は、クリアされるGPU12における残り全ての安全なデータをもたらす。そのような命令は、シェーダプログラム、メモリ書き込み、及び/又はレジスタプログラミング(例えば、GPUL2キャッシュ無効化)の組み合わせであり得る。
[0071]図7は、この開示の別の例に従ったキャッシュクリア技術を示すブロック図である。図7の例では、安全モードと非安全モードとの間でGPU12を遷移させるために、ハードウェア解決法が使用される。この例では、外部可視的(例えば、メモリマッピング入力/出力(MMIO))又は内部(例えば、コマンドストリーム)レジスタ76が、それがグラフィックスドライバ7によって直接書き込まれるように構成され得る。レジスタ76が書き込まれるとき、(例えば、安全モードから非安全モードに行くとき)、GPU12のハードウェアは、現在の安全なジョブを完了させ、パイプラインを流し(即ち、処理されている任意の残りの安全なコンテンツを除去し)、及びL2キャッシュ61、GMEM70、及び他のレジスタ72を含む、安全なコンテンツを含むことができる全てのレジスタ、メモリ及びキャッシュをクリア及び/又は無効化するように構成される。このクリア処理は、ハードウェアに組み込まれ、又は安全にロードされ、及びGPU12に存在する保護されたシェーダコードを使用すること含み得る。
[0072]図8は、開示の一例に従った方法を示すフローチャートである。図8の技術は、GPU12によって実装され得る。一部の例では図8の技術の一部は、CPU6によって実装され得る。最初に、グラフィックスドライバ7は、安全モード又は非安全モードにGPU12を配置するように構成され得る(802)。グラフィックスドライバ7はまた、GPU12に、仮想メモリアドレスの第1の範囲及び仮想メモリアドレスの第2の範囲を含む、仮想メモリアドレスの範囲を提供するように構成され得る(804)。GPU12は、非安全モード及び安全モードの1つに従って、第1のメモリユニットにアクセスするように構成される(806)。
[0073]開示の一例では、第1のメモリユニットにアクセスすることは、GPU12が非安全モードにあるとき、GPU12が第1のメモリユニットの安全でない部分のみからデータを読み取ることを可能にすること、及びGPU12が安全モードにあるとき、GPU12が第1のメモリユニットの安全な部分のみにデータを書き込むことを可能にすることを含む。開示の更なる例では、第1のメモリユニットにアクセスすることは更に、GPU12が非安全モードにあるとき、GPU12が第1のメモリユニットの安全でない部分にのみデータを書き込むことを可能にすること、及びGPU12が安全モードにあるとき、GPU12が第1のメモリユニットの安全な部分及び安全でない部分からデータを読み取ることを可能にすることを含む。GPU12が安全モードに配置されるケースでは、GPU12は、安全なメモリ管理ユニットを利用することによって、第1のメモリユニットの安全な部分にデータを書き込み(808)、安全なメモリ管理ユニットは、第1のメモリユニットの安全な部分に対するアドレス範囲を含む安全なページテーブルを利用する。GPU12が非安全モードに配置されるケースでは、GPU12は、安全でないメモリ管理ユニットを利用することによって、第1のメモリユニットの安全でない部分からデータを読み取り(810)、安全でないメモリ管理ユニットは、第1のメモリユニットの安全でない部分に対するアドレス範囲を含む安全でないページテーブルを利用する。開示の別の例では、GPU12は、GPUが非安全モード又は安全モードにあるかに関わらず、フロントエンドコマンドプロセッサで第1のメモリの安全でない部分にデータを書き込むように構成され得る。
[0074]開示の一例では、仮想メモリアドレスに従って、仮想メモリアドレスの範囲からデータを読み取り及び書き込むことにおいて、仮想メモリアドレスの範囲は、安全なメモリ管理ユニットによって利用される安全なページテーブルにおける入力(entries)に関連する仮想メモリアドレスの第1の範囲と、安全でないメモリ管理ユニットによって利用される安全でないページテーブルにおける入力に関連する仮想メモリアドレスの第2の範囲とを含む。開示の更なる例では、安全なオペレーティングシステム(例えば、安全なOS54)は、安全なページテーブルを安全なメモリ管理ユニットに、及び安全でないページテーブルを安全でないメモリ管理ユニットに供給するように構成され得る。
[0075]開示の別の例では、安全なオペレーティングシステムは更に、GPUが安全モードから非安全モードに遷移するとき、GPUに、1つ又は複数の内部メモリから少なくとも一部のコンテンツをクリア及び無効化するようにさせる命令を、安全なオペレーティングシステムからGPUのクリアレジスタに送信するように構成され得る。開示の別の例では、安全なオペレーティングシステムは、GPUが安全モードから非安全モードに遷移するとき、GPUに、1つ又は複数の内部メモリから少なくとも一部のコンテンツをクリア及び無効化するようにさせる命令を、グラフィックスドライバからGPUのコマンドストリームレジスタに送信するように構成され得る。
[0076]非安全モードに切り替わると、GPUから安全なコンテンツをクリアするための上述した解決法は例にすぎない。安全モードと非安全モードとの間でのGPUの遷移は、種々の方式で行われ得る。最も単純な手段は、上述したように、グラフィックスドライバ又は安全なドライバサロゲートのいずれかが書き込むことができる、外部的に可視的なレジスタ(例えば、MMIO)である。しかしながら、これは、遷移が発生するはずの時点で、ドライバとGPUのハードウェアとの間でハード同期が必要となることがある。
[0077]ドライバがGPUに提示するコマンドストリーム内でこの切り替えが発生することを可能にすることが好ましいことがある。これは、ドライバが相互にインターリーブされた安全なジョブ及び安全でないジョブを含む、大量の仕事量の列を作る(queue up)ことを可能にする。それらのジョブのプリアンブルは、対象のジョブによって要求されるモードに切り替えるためのGPUに対するコマンドを含む。アプリケーションの観点から、これは、安全又は安全でないのいずれかであったアプリケーションGPUのコンテキストをもたらす。
[0078]1つ又は複数の例では、上述した機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実装され得る。ソフトウェアで実装される場合、機能は、非一時的コンピュータ可読媒体を備える製品上の1つ又は複数の命令又はコードとして記憶され得る。コンピュータ可読媒体は、コンピュータデータ記憶媒体を含み得る。データ記憶媒体は、この開示において説明された技術の実装のために命令、コード及び/又はデータ構造を取り出すために1つ又は複数のコンピュータ又は1つ又は複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。例として、及び非限定的に、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROM又は他の光ディスクストレージ、磁気ディスク記憶装置若しくは他の磁気記憶機器、フラッシュメモリ、又は所望のプログラムコードを命令若しくはデータ構造の形式で搬送もしくは記憶するために使用され得、及びコンピュータによってアクセスされ得る任意の他の媒体を備えることができる。本明細書で使用されるように、ディスク(disk)及びディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク及びブルーレイ(登録商標)ディスクを含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記組み合わせはまた、コンピュータ可読媒体の範囲内に含まれるべきである。
[0079]コードは、1つ又は複数のDSP、汎用マイクロプロセッサ、ASIC、FPGA又は他の同等の集積若しくは個別論理回路などの、1つ又は複数のプロセッサによって実行され得る。加えて、一部の態様では、本明細書で説明された機能性は、専用ハードウェア及び/又はソフトウェアモジュール内で提供され得る。また、技術は、1つもしくは複数の回路、又は論理要素において完全に実装され得る。
[0080]この開示の技術は、ワイヤレスハンドセット、集積回路(IC)、又はICの組(例えば、チップセット)を含む、多種多様な機器又は装置で実装され得る。種々のコンポーネント、モジュール、又はユニットは、開示された技術を実行するように構成された機器の機能的態様を強調するために、この開示で説明されるが、異なるハードウェアユニットによる実現を必ずしも要求しているとは限らない。むしろ、上述したように、種々のユニットは、コーデックハードウェアユニットにおいて組み合わされ得、又は適切なソフトウェア及び/又はファームウェアとともに、上述したような1つ又は複数のプロセッサを含む、相互動作するハードウェアユニットの集合によって提供され得る。
[0081]種々の例が説明されてきた。それら及び他の例が、以下の特許請求の範囲内にある。
[0081]種々の例が説明されてきた。それら及び他の例が、以下の特許請求の範囲内にある。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1] グラフィックス処理のための装置であって、
非安全モード及び安全モードの1つに従って、第1のメモリユニットにアクセスするように構成されたグラフィックス処理ユニット(GPU)を備え、前記GPUは、
前記GPUが前記非安全モードにあるとき、前記GPUが前記第1のメモリユニットの安全でない部分のみからデータを読み取ることを可能にするように構成され、及び前記GPUが前記安全モードにあるとき、前記GPUが前記第1のメモリユニットの安全な部分のみにデータを書き込むことを可能にするように構成されたメモリアクセスコントローラを備える、装置。
[C2] 前記メモリアクセスコントローラは、前記GPUが前記非安全モードにあるとき、前記GPUが前記第1のメモリユニットの前記安全でない部分のみにデータを書き込むことを可能にするように構成され、
前記メモリアクセスコントローラは、前記GPUが前記安全モードにあるとき、前記GPUが前記第1のメモリユニットの前記安全な部分及び前記安全でない部分からデータを読み取ることを可能にするように構成されている、C1に記載の装置。
[C3] 前記メモリアクセスコントローラは、安全なメモリ管理ユニットを利用することによって、前記第1のメモリユニットの前記安全な部分にデータを書き込むように構成され、前記安全なメモリ管理ユニットは、前記第1のメモリユニットの前記安全な部分に対するアドレス範囲を含む安全なページテーブルを利用し、
ここにおいて、前記メモリアクセスコントローラは、安全でないメモリマネージユニットを利用することによって、前記第1のメモリユニットの前記安全でない部分からデータを読み取るように構成され、前記安全でないメモリ管理ユニットは、前記第1のメモリユニットの前記安全でない部分に対するアドレス範囲を含む安全でないページテーブルを利用する、C1に記載の装置。
[C4] 前記メモリアクセスコントローラは、仮想メモリアドレスに従って、仮想メモリアドレスの範囲からデータを読み取り及び書き込み、ここにおいて、仮想メモリアドレスの前記範囲は、前記安全なメモリ管理ユニットによって利用される前記安全なページテーブルにおける入力に関連する仮想メモリアドレスの第1の範囲と、前記安全でないメモリ管理ユニットによって利用される前記安全でないページテーブルにおける入力に関連する仮想メモリアドレスの第2の範囲とを含む、C3に記載の装置。
[C5] グラフィックスドライバを記憶した第2のメモリユニットを更に備え、前記グラフィックスドライバは、安全モード又は非安全モードに前記GPUを配置するように構成される、C4に記載の装置。
[C6] 前記グラフィックスドライバは更に、前記GPUに、仮想メモリアドレスの前記第1の範囲と、仮想メモリアドレスの前記第2の範囲とを含む、仮想メモリアドレスの前記範囲を提供するように構成される、C5に記載の装置。
[C7] 前記安全なメモリ管理ユニットと、
前記安全でないメモリ管理ユニットと、
安全なオペレーティングシステム及び前記グラフィックスドライバを実行する中央処理装置(CPU)とを更に備え、前記安全なオペレーティングシステムは、前記安全なページテーブルを前記安全なメモリ管理ユニットに、及び前記安全でないページテーブルを前記安全でないメモリ管理ユニットに供給するように構成される、C6に記載の装置。
[C8] 前記GPUは更に、クリアレジスタ及び1つ以上の内部メモリを備え、ここにおいて、前記安全なオペレーティングシステムは、前記GPUが前記安全モードから前記非安全モードに遷移されるとき、前記GPUに、前記1つ以上の内部メモリからの少なくとも一部のコンテンツをクリア及び無効化することをさせる命令を、前記クリアレジスタに送信するように構成される、C7に記載の装置。
[C9] 前記GPUは更に、コマンドストリームレジスタ及び1つ以上の内部メモリを備え、ここにおいて、前記グラフィックスドライバは、前記GPUが前記安全モードから前記非安全モードに遷移されるとき、前記GPUに、前記1つ以上の内部メモリからの少なくとも一部のコンテンツをクリア及び無効化することをさせる命令を、前記コマンドストリームレジスタに送信するように構成される、C7に記載の装置。
[C10] 前記GPUは更に、
前記GPUが前記非安全モード又は前記安全モードにあるかに関わらず、前記第1のメモリの前記安全でない部分にデータを書き込むように構成された1つ以上のハードウェアブロックを備え、ここにおいて、前記1つ以上のハードウェアブロックは、前記第1のメモリユニットの前記安全な部分への読み取りアクセスを有しない、C1に記載の装置。
[C11] 前記1つ以上のハードウェアブロックは、フロントエンドコマンドプロセッサを含む、C10に記載の装置。
[C12] グラフィックス処理の方法であって、
グラフィックス処理ユニット(GPU)で、非安全モード及び安全モードの1つに従って、第1のメモリユニットにアクセスすることを備え、ここにおいて、アクセスすることは、
前記GPUが前記非安全モードにあるとき、前記GPUが前記第1のメモリユニットの安全でない部分のみからデータを読み取ることを可能にすることと、
前記GPUが前記安全モードにあるとき、前記GPUが前記第1のメモリユニットの安全な部分のみにデータを書き込むことを可能にすることとを備える、方法。
[C13] 前記GPUが前記非安全モードにあるとき、前記GPUが前記第1のメモリユニットの前記安全でない部分のみにデータを書き込むことを可能にすることと、
前記GPUが前記安全モードにあるとき、前記GPUが前記第1のメモリユニットの前記安全な部分及び前記安全でない部分からデータを読み取ることを可能にすることとを更に備える、C12に記載の方法。
[C14] 安全なメモリ管理ユニットを利用することによって、前記第1のメモリユニットの前記安全な部分にデータを書き込むことと、前記安全なメモリ管理ユニットは、前記第1のメモリユニットの前記安全な部分に対するアドレス範囲を含む安全なページテーブルを利用し、
安全でないメモリ管理ユニットを利用することによって、前記第1のメモリユニットの前記安全でない部分からデータを読み取ることと、前記安全でないメモリ管理ユニットは、前記第1のメモリユニットの前記安全でない部分に対するアドレス範囲を含む安全でないページテーブルを利用するを更に備える、C12に記載の方法。
[C15] 仮想メモリアドレスに従って、仮想メモリアドレスの範囲からデータを読み取り及び書き込むことを更に備え、ここにおいて、仮想メモリアドレスの前記範囲は、前記安全なメモリ管理ユニットによって利用される前記安全なページテーブルにおける入力に関連する仮想メモリアドレスの第1の範囲と、前記安全でないメモリ管理ユニットによって利用される前記安全でないページテーブルにおける入力に関連する仮想メモリアドレスの第2の範囲とを含む、C14に記載の方法。
[C16] グラフィックスドライバで、安全モード又は非安全モードに前記GPUを配置することを更に備える、C15に記載の方法。
[C17] 前記グラフィックスドライバで、仮想メモリアドレスの前記第1の範囲及び仮想メモリアドレスの前記第2の範囲を含む、仮想メモリアドレスの前記範囲を前記GPUに提供することを更に備える、C16に記載の方法。
[C18] 中央処理装置(CPU)上で実行する安全なオペレーティングシステムで、前記安全なページテーブルを前記安全なメモリ管理ユニットに、及び前記安全でないページテーブルを前記安全でないメモリ管理ユニットに供給することを更に備える、C17に記載の方法。
[C19] 前記GPUが前記安全モードから前記非安全モードに遷移されるとき、前記GPUに、1つ以上の内部メモリからの少なくとも一部のコンテンツをクリア及び無効化することをさせる命令を、前記安全なオペレーティングシステムから前記GPUのクリアレジスタに送信することを更に備える、C18に記載の方法。
[C20] 前記GPUが前記安全モードから前記非安全モードに遷移されるとき、前記GPUに、1つ以上の内部メモリからの少なくとも一部のコンテンツをクリア及び無効化することをさせる命令を、前記グラフィックスドライバから前記GPUのコマンドストリームレジスタに送信することを更に備える、C18に記載の方法。
[C21] 前記GPUが前記非安全モード又は前記安全モードにあるかに関わらず、前記GPUの1つ以上のハードウェアブロックで、前記第1のメモリの前記安全でない部分にデータを書き込むことを更に備え、ここにおいて、前記1つ以上のハードウェアブロックは、前記第1のメモリユニットの前記安全な部分への読み取りアクセスを有しない、C12に記載の方法。
[C22] 前記1つ以上のハードウェアブロックは、フロントエンドコマンドプロセッサを含む、C21に記載の方法。
[C23] グラフィックス処理に対して構成された装置であって、
グラフィックス処理ユニット(GPU)で、非安全モード及び安全モードの1つに従って、第1のメモリユニットにアクセスするための手段を備え、ここにおいて、前記アクセスするための手段は、
前記GPUが前記非安全モードにあるとき、前記GPUが前記第1のメモリユニットの安全でない部分のみからデータを読み取ることを可能にするための手段と、
前記GPUが前記安全モードにあるとき、前記GPUが前記第1のメモリユニットの安全な部分のみにデータを書き込むことを可能にするための手段とを備える、装置。
[C24] 前記GPUが前記非安全モードにあるとき、前記GPUが前記第1のメモリユニットの安全でない部分のみにデータを書き込むことを可能にするための手段と、
前記GPUが前記安全モードにあるとき、前記GPUが前記第1のメモリユニットの前記安全な部分及び前記安全でない部分からデータを読み取ることを可能にするための手段とを更に備える、C23に記載の装置。
[C25] 安全なメモリ管理ユニットを利用することによって、前記第1のメモリユニットの前記安全な部分にデータを書き込むための手段と、前記安全なメモリ管理ユニットは、前記第1のメモリユニットの前記安全な部分に対するアドレス範囲を含む安全なページテーブルを利用し、
安全でないメモリ管理ユニットを利用することによって、前記第1のメモリユニットの前記安全でない部分からデータを読み取るための手段と、前記安全でないメモリ管理ユニットは、前記第1のメモリユニットの前記安全でない部分に対するアドレス範囲を含む安全でないページテーブルを利用するを更に備える、C23に記載の装置。
[C26] 仮想メモリアドレスに従って、仮想メモリアドレスの範囲からデータを読み取り及び書き込むための手段を更に備え、ここにおいて、仮想メモリアドレスの前記範囲は、前記安全なメモリ管理ユニットによって利用される前記安全なページテーブルにおける入力に関連する仮想メモリアドレスの第1の範囲と、前記安全でないメモリ管理ユニットによって利用される前記安全でないページテーブルにおける入力に関連する仮想メモリアドレスの第2の範囲とを含む、C25に記載の装置。
[C27] グラフィックスドライバで、安全モード又は非安全モードに前記GPUを配置するための手段を更に備える、C26に記載の装置。
[C28] 前記グラフィックスドライバで、仮想メモリアドレスの前記第1の範囲及び仮想メモリアドレスの前記第2の範囲を含む、仮想メモリアドレスの前記範囲を前記GPUに提供するための手段を更に備える、C27に記載の装置。
[C29] 中央処理装置(CPU)上で実行する安全なオペレーティングシステムで、前記安全なページテーブルを前記安全なメモリ管理ユニットに、及び前記安全でないページテーブルを前記安全でないメモリ管理ユニットに供給するための手段を更に備える、C28に記載の装置。
[C30] 前記GPUが前記安全モードから前記非安全モードに遷移されるとき、前記GPUに、1つ以上の内部メモリからの少なくとも一部のコンテンツをクリア及び無効化することをさせる命令を、前記安全なオペレーティングシステムから前記GPUのクリアレジスタに送信するための手段を更に備える、C29に記載の装置。
[C31] 前記GPUが前記安全モードから前記非安全モードに遷移されるとき、前記GPUに、1つ以上の内部メモリからの少なくとも一部のコンテンツをクリア及び無効化することをさせる命令を、前記グラフィックスドライバから前記GPUのコマンドストリームレジスタに送信するための手段を更に備える、C29に記載の装置。
[C32] 前記GPUが前記非安全モード又は前記安全モードにあるかに関わらず、前記GPUの1つ以上のハードウェアブロックで、前記第1のメモリの前記安全でない部分にデータを書き込むための手段を更に備え、ここにおいて、前記1つ以上のハードウェアブロックは、前記第1のメモリユニットの前記安全な部分への読み取りアクセスを有しない、C23に記載の装置。
[C33] 前記1つ以上のハードウェアブロックは、フロントエンドコマンドプロセッサを含む、C32に記載の装置。

Claims (33)

  1. グラフィックス処理のための装置であって、
    非安全モード及び安全モードの1つに従って、第1のメモリユニットにアクセスするように構成されたグラフィックス処理ユニット(GPU)を備え、前記GPUは、
    前記GPUが前記非安全モードにあるとき、前記GPUが前記第1のメモリユニットの安全でない部分のみからデータを読み取ることを可能にするように構成され、及び前記GPUが前記安全モードにあるとき、前記GPUが前記第1のメモリユニットの安全な部分のみにデータを書き込むことを可能にするように構成されたメモリアクセスコントローラを備える、装置。
  2. 前記メモリアクセスコントローラは、前記GPUが前記非安全モードにあるとき、前記GPUが前記第1のメモリユニットの前記安全でない部分のみにデータを書き込むことを可能にするように構成され、
    前記メモリアクセスコントローラは、前記GPUが前記安全モードにあるとき、前記GPUが前記第1のメモリユニットの前記安全な部分及び前記安全でない部分からデータを読み取ることを可能にするように構成されている、請求項1に記載の装置。
  3. 前記メモリアクセスコントローラは、安全なメモリ管理ユニットを利用することによって、前記第1のメモリユニットの前記安全な部分にデータを書き込むように構成され、前記安全なメモリ管理ユニットは、前記第1のメモリユニットの前記安全な部分に対するアドレス範囲を含む安全なページテーブルを利用し、
    ここにおいて、前記メモリアクセスコントローラは、安全でないメモリマネージユニットを利用することによって、前記第1のメモリユニットの前記安全でない部分からデータを読み取るように構成され、前記安全でないメモリ管理ユニットは、前記第1のメモリユニットの前記安全でない部分に対するアドレス範囲を含む安全でないページテーブルを利用する、請求項1に記載の装置。
  4. 前記メモリアクセスコントローラは、仮想メモリアドレスに従って、仮想メモリアドレスの範囲からデータを読み取り及び書き込み、ここにおいて、仮想メモリアドレスの前記範囲は、前記安全なメモリ管理ユニットによって利用される前記安全なページテーブルにおける入力に関連する仮想メモリアドレスの第1の範囲と、前記安全でないメモリ管理ユニットによって利用される前記安全でないページテーブルにおける入力に関連する仮想メモリアドレスの第2の範囲とを含む、請求項3に記載の装置。
  5. グラフィックスドライバを記憶した第2のメモリユニットを更に備え、前記グラフィックスドライバは、安全モード又は非安全モードに前記GPUを配置するように構成される、請求項4に記載の装置。
  6. 前記グラフィックスドライバは更に、前記GPUに、仮想メモリアドレスの前記第1の範囲と、仮想メモリアドレスの前記第2の範囲とを含む、仮想メモリアドレスの前記範囲を提供するように構成される、請求項5に記載の装置。
  7. 前記安全なメモリ管理ユニットと、
    前記安全でないメモリ管理ユニットと、
    安全なオペレーティングシステム及び前記グラフィックスドライバを実行する中央処理装置(CPU)とを更に備え、前記安全なオペレーティングシステムは、前記安全なページテーブルを前記安全なメモリ管理ユニットに、及び前記安全でないページテーブルを前記安全でないメモリ管理ユニットに供給するように構成される、請求項6に記載の装置。
  8. 前記GPUは更に、クリアレジスタ及び1つ以上の内部メモリを備え、ここにおいて、前記安全なオペレーティングシステムは、前記GPUが前記安全モードから前記非安全モードに遷移されるとき、前記GPUに、前記1つ以上の内部メモリからの少なくとも一部のコンテンツをクリア及び無効化することをさせる命令を、前記クリアレジスタに送信するように構成される、請求項7に記載の装置。
  9. 前記GPUは更に、コマンドストリームレジスタ及び1つ以上の内部メモリを備え、ここにおいて、前記グラフィックスドライバは、前記GPUが前記安全モードから前記非安全モードに遷移されるとき、前記GPUに、前記1つ以上の内部メモリからの少なくとも一部のコンテンツをクリア及び無効化することをさせる命令を、前記コマンドストリームレジスタに送信するように構成される、請求項7に記載の装置。
  10. 前記GPUは更に、
    前記GPUが前記非安全モード又は前記安全モードにあるかに関わらず、前記第1のメモリの前記安全でない部分にデータを書き込むように構成された1つ以上のハードウェアブロックを備え、ここにおいて、前記1つ以上のハードウェアブロックは、前記第1のメモリユニットの前記安全な部分への読み取りアクセスを有しない、請求項1に記載の装置。
  11. 前記1つ以上のハードウェアブロックは、フロントエンドコマンドプロセッサを含む、請求項10に記載の装置。
  12. グラフィックス処理の方法であって、
    グラフィックス処理ユニット(GPU)で、非安全モード及び安全モードの1つに従って、第1のメモリユニットにアクセスすることを備え、ここにおいて、アクセスすることは、
    前記GPUが前記非安全モードにあるとき、前記GPUが前記第1のメモリユニットの安全でない部分のみからデータを読み取ることを可能にすることと、
    前記GPUが前記安全モードにあるとき、前記GPUが前記第1のメモリユニットの安全な部分のみにデータを書き込むことを可能にすることとを備える、方法。
  13. 前記GPUが前記非安全モードにあるとき、前記GPUが前記第1のメモリユニットの前記安全でない部分のみにデータを書き込むことを可能にすることと、
    前記GPUが前記安全モードにあるとき、前記GPUが前記第1のメモリユニットの前記安全な部分及び前記安全でない部分からデータを読み取ることを可能にすることと
    を更に備える、請求項12に記載の方法。
  14. 安全なメモリ管理ユニットを利用することによって、前記第1のメモリユニットの前記安全な部分にデータを書き込むことと、前記安全なメモリ管理ユニットは、前記第1のメモリユニットの前記安全な部分に対するアドレス範囲を含む安全なページテーブルを利用し、
    安全でないメモリ管理ユニットを利用することによって、前記第1のメモリユニットの前記安全でない部分からデータを読み取ることと、前記安全でないメモリ管理ユニットは、前記第1のメモリユニットの前記安全でない部分に対するアドレス範囲を含む安全でないページテーブルを利用する
    を更に備える、請求項12に記載の方法。
  15. 仮想メモリアドレスに従って、仮想メモリアドレスの範囲からデータを読み取り及び書き込むことを更に備え、ここにおいて、仮想メモリアドレスの前記範囲は、前記安全なメモリ管理ユニットによって利用される前記安全なページテーブルにおける入力に関連する仮想メモリアドレスの第1の範囲と、前記安全でないメモリ管理ユニットによって利用される前記安全でないページテーブルにおける入力に関連する仮想メモリアドレスの第2の範囲とを含む、請求項14に記載の方法。
  16. グラフィックスドライバで、安全モード又は非安全モードに前記GPUを配置することを更に備える、請求項15に記載の方法。
  17. 前記グラフィックスドライバで、仮想メモリアドレスの前記第1の範囲及び仮想メモリアドレスの前記第2の範囲を含む、仮想メモリアドレスの前記範囲を前記GPUに提供することを更に備える、請求項16に記載の方法。
  18. 中央処理装置(CPU)上で実行する安全なオペレーティングシステムで、前記安全なページテーブルを前記安全なメモリ管理ユニットに、及び前記安全でないページテーブルを前記安全でないメモリ管理ユニットに供給することを更に備える、請求項17に記載の方法。
  19. 前記GPUが前記安全モードから前記非安全モードに遷移されるとき、前記GPUに、1つ以上の内部メモリからの少なくとも一部のコンテンツをクリア及び無効化することをさせる命令を、前記安全なオペレーティングシステムから前記GPUのクリアレジスタに送信することを更に備える、請求項18に記載の方法。
  20. 前記GPUが前記安全モードから前記非安全モードに遷移されるとき、前記GPUに、1つ以上の内部メモリからの少なくとも一部のコンテンツをクリア及び無効化することをさせる命令を、前記グラフィックスドライバから前記GPUのコマンドストリームレジスタに送信することを更に備える、請求項18に記載の方法。
  21. 前記GPUが前記非安全モード又は前記安全モードにあるかに関わらず、前記GPUの1つ以上のハードウェアブロックで、前記第1のメモリの前記安全でない部分にデータを書き込むことを更に備え、ここにおいて、前記1つ以上のハードウェアブロックは、前記第1のメモリユニットの前記安全な部分への読み取りアクセスを有しない、請求項12に記載の方法。
  22. 前記1つ以上のハードウェアブロックは、フロントエンドコマンドプロセッサを含む、請求項21に記載の方法。
  23. グラフィックス処理に対して構成された装置であって、
    グラフィックス処理ユニット(GPU)で、非安全モード及び安全モードの1つに従って、第1のメモリユニットにアクセスするための手段を備え、ここにおいて、前記アクセスするための手段は、
    前記GPUが前記非安全モードにあるとき、前記GPUが前記第1のメモリユニットの安全でない部分のみからデータを読み取ることを可能にするための手段と、
    前記GPUが前記安全モードにあるとき、前記GPUが前記第1のメモリユニットの安全な部分のみにデータを書き込むことを可能にするための手段とを備える、装置。
  24. 前記GPUが前記非安全モードにあるとき、前記GPUが前記第1のメモリユニットの安全でない部分のみにデータを書き込むことを可能にするための手段と、
    前記GPUが前記安全モードにあるとき、前記GPUが前記第1のメモリユニットの前記安全な部分及び前記安全でない部分からデータを読み取ることを可能にするための手段と
    を更に備える、請求項23に記載の装置。
  25. 安全なメモリ管理ユニットを利用することによって、前記第1のメモリユニットの前記安全な部分にデータを書き込むための手段と、前記安全なメモリ管理ユニットは、前記第1のメモリユニットの前記安全な部分に対するアドレス範囲を含む安全なページテーブルを利用し、
    安全でないメモリ管理ユニットを利用することによって、前記第1のメモリユニットの前記安全でない部分からデータを読み取るための手段と、前記安全でないメモリ管理ユニットは、前記第1のメモリユニットの前記安全でない部分に対するアドレス範囲を含む安全でないページテーブルを利用する
    を更に備える、請求項23に記載の装置。
  26. 仮想メモリアドレスに従って、仮想メモリアドレスの範囲からデータを読み取り及び書き込むための手段を更に備え、ここにおいて、仮想メモリアドレスの前記範囲は、前記安全なメモリ管理ユニットによって利用される前記安全なページテーブルにおける入力に関連する仮想メモリアドレスの第1の範囲と、前記安全でないメモリ管理ユニットによって利用される前記安全でないページテーブルにおける入力に関連する仮想メモリアドレスの第2の範囲とを含む、請求項25に記載の装置。
  27. グラフィックスドライバで、安全モード又は非安全モードに前記GPUを配置するための手段を更に備える、請求項26に記載の装置。
  28. 前記グラフィックスドライバで、仮想メモリアドレスの前記第1の範囲及び仮想メモリアドレスの前記第2の範囲を含む、仮想メモリアドレスの前記範囲を前記GPUに提供するための手段を更に備える、請求項27に記載の装置。
  29. 中央処理装置(CPU)上で実行する安全なオペレーティングシステムで、前記安全なページテーブルを前記安全なメモリ管理ユニットに、及び前記安全でないページテーブルを前記安全でないメモリ管理ユニットに供給するための手段を更に備える、請求項28に記載の装置。
  30. 前記GPUが前記安全モードから前記非安全モードに遷移されるとき、前記GPUに、1つ以上の内部メモリからの少なくとも一部のコンテンツをクリア及び無効化することをさせる命令を、前記安全なオペレーティングシステムから前記GPUのクリアレジスタに送信するための手段を更に備える、請求項29に記載の装置。
  31. 前記GPUが前記安全モードから前記非安全モードに遷移されるとき、前記GPUに、1つ以上の内部メモリからの少なくとも一部のコンテンツをクリア及び無効化することをさせる命令を、前記グラフィックスドライバから前記GPUのコマンドストリームレジスタに送信するための手段を更に備える、請求項29に記載の装置。
  32. 前記GPUが前記非安全モード又は前記安全モードにあるかに関わらず、前記GPUの1つ以上のハードウェアブロックで、前記第1のメモリの前記安全でない部分にデータを書き込むための手段を更に備え、ここにおいて、前記1つ以上のハードウェアブロックは、前記第1のメモリユニットの前記安全な部分への読み取りアクセスを有しない、請求項23に記載の装置。
  33. 前記1つ以上のハードウェアブロックは、フロントエンドコマンドプロセッサを含む、請求項32に記載の装置。
JP2015557988A 2013-02-18 2013-03-19 グラフィックス処理ユニットのためのハードウェアによるコンテンツ保護 Active JP5917784B1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/769,687 US8931108B2 (en) 2013-02-18 2013-02-18 Hardware enforced content protection for graphics processing units
US13/769,687 2013-02-18
PCT/US2013/032984 WO2014126597A1 (en) 2013-02-18 2013-03-19 Hardware enforced content protection for graphics processing units

Publications (2)

Publication Number Publication Date
JP5917784B1 JP5917784B1 (ja) 2016-05-18
JP2016516224A true JP2016516224A (ja) 2016-06-02

Family

ID=48045127

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015557988A Active JP5917784B1 (ja) 2013-02-18 2013-03-19 グラフィックス処理ユニットのためのハードウェアによるコンテンツ保護

Country Status (6)

Country Link
US (1) US8931108B2 (ja)
EP (1) EP2956881B1 (ja)
JP (1) JP5917784B1 (ja)
KR (1) KR101649089B1 (ja)
CN (1) CN104981811B (ja)
WO (1) WO2014126597A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018193736A1 (ja) * 2017-04-19 2018-10-25 富士通株式会社 情報処理装置、情報処理方法、及び情報処理システム
JP2021064378A (ja) * 2020-12-07 2021-04-22 インテル・コーポレーション ヘテロジニアスコンピューティングのためのシステム、方法及び装置
US11416281B2 (en) 2016-12-31 2022-08-16 Intel Corporation Systems, methods, and apparatuses for heterogeneous computing
JP7398830B2 (ja) 2021-08-05 2023-12-15 アジャイルソーダ インコーポレイテッド ピックアンドプレイスシステムのための深層強化学習装置及び方法

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9507961B2 (en) * 2013-07-01 2016-11-29 Qualcomm Incorporated System and method for providing secure access control to a graphics processing unit
US9672162B2 (en) * 2013-08-16 2017-06-06 Arm Limited Data processing systems
US9170957B2 (en) * 2013-08-29 2015-10-27 Qualcomm Incorporated Distributed dynamic memory management unit (MMU)-based secure inter-processor communication
US9569385B2 (en) * 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
US10515231B2 (en) * 2013-11-08 2019-12-24 Symcor Inc. Method of obfuscating relationships between data in database tables
US9886736B2 (en) * 2014-01-20 2018-02-06 Nvidia Corporation Selectively killing trapped multi-process service clients sharing the same hardware context
KR102218202B1 (ko) * 2014-08-01 2021-02-23 삼성전자주식회사 반도체 장치
KR102297383B1 (ko) 2014-09-25 2021-09-03 삼성전자주식회사 보안 데이터 처리
US9690928B2 (en) * 2014-10-25 2017-06-27 Mcafee, Inc. Computing platform security methods and apparatus
US11010054B1 (en) * 2015-06-10 2021-05-18 EMC IP Holding Company LLC Exabyte-scale data processing system
US10713334B1 (en) 2015-06-10 2020-07-14 EMC IP Holding Company LLC Data processing system with a scalable architecture over ethernet
US10496284B1 (en) 2015-06-10 2019-12-03 EMC IP Holding Company LLC Software-implemented flash translation layer policies in a data processing system
US10503416B1 (en) 2015-06-10 2019-12-10 EMC IP Holdings Company LLC Flash memory complex with a replication interface to replicate data to another flash memory complex of a data processing system
US10515014B1 (en) 2015-06-10 2019-12-24 EMC IP Holding Company LLC Non-uniform memory access (NUMA) mechanism for accessing memory with cache coherence
US9767320B2 (en) * 2015-08-07 2017-09-19 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
US10102391B2 (en) * 2015-08-07 2018-10-16 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
GB2544452B (en) * 2015-08-26 2019-09-11 Advanced Risc Mach Ltd Data processing systems
US9734095B2 (en) 2015-09-01 2017-08-15 International Business Machines Corporation Nonvolatile memory data security
EP3246845B1 (en) 2016-05-17 2018-12-05 Inside Secure Secure asset management system
FR3054945B1 (fr) 2016-08-05 2019-09-06 Viaccess Procede de lecture et de generation d'un flux video contenant des images compressees et chiffrees
US10223292B2 (en) * 2016-11-28 2019-03-05 Microsoft Technology Licensing, Llc Securing stream buffers
US10848483B2 (en) * 2016-12-08 2020-11-24 Ricoh Company, Ltd. Shared terminal, communication system, and display control method, and recording medium
FR3065607B1 (fr) 2017-04-20 2019-06-14 Viaccess Procede de lecture d'un flux video
US10614356B2 (en) * 2017-04-24 2020-04-07 International Business Machines Corporation Local multicast in single-host multi-GPU machine for distributed deep learning systems
US10824467B2 (en) * 2018-08-07 2020-11-03 Arm Limited Data processing system with protected mode of operation for processing protected content
US10534730B1 (en) * 2018-12-20 2020-01-14 Ati Technologies Ulc Storing microcode for a virtual function in a trusted memory region
US11347869B2 (en) 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
US11403409B2 (en) * 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
KR20210125330A (ko) * 2020-04-08 2021-10-18 삼성전자주식회사 보안 데이터 처리 방법 및 이를 지원하는 전자 장치
IL280027A (en) * 2021-01-07 2022-08-01 Sec Labs Ltd High A device for improved secure mediation between console peripherals and host computers
FR3129505B1 (fr) * 2021-11-25 2023-11-24 Stmicroelectronics Grand Ouest Sas Procédé d’exécution d’un programme logiciel par une unité de traitement comprenant une phase de compilation.
US20230222010A1 (en) * 2022-01-10 2023-07-13 Nvidia Corporation Application programming interface to indicate execution of graph nodes

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005528678A (ja) * 2002-04-18 2005-09-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド セキュア実行モードで動作し得るプロセッサを含むコンピュータシステムの初期化方法
JP2009523269A (ja) * 2006-02-22 2009-06-18 株式会社ソニー・コンピュータエンタテインメント 独立論理アドレス空間とそれぞれに対するアクセス管理を提供する方法および装置
WO2011074168A1 (ja) * 2009-12-14 2011-06-23 パナソニック株式会社 情報処理装置
WO2012020236A1 (en) * 2010-08-11 2012-02-16 Arm Limited Memory access control
US20130007407A1 (en) * 2011-07-01 2013-01-03 Synopsys, Inc. Extending Processor MMU for Shared Address Spaces

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4184201A (en) * 1978-04-26 1980-01-15 Sperry Rand Corporation Integrating processor element
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US7055038B2 (en) 2001-05-07 2006-05-30 Ati International Srl Method and apparatus for maintaining secure and nonsecure data in a shared memory system
US7065651B2 (en) 2002-01-16 2006-06-20 Microsoft Corporation Secure video card methods and systems
KR20040000348A (ko) * 2002-06-24 2004-01-03 마이크로소프트 코포레이션 비디오 카드 출력을 보호하기 위한 시스템 및 방법
DE60308215T2 (de) * 2002-11-18 2007-08-23 Arm Ltd., Cherry Hinton Prozessorschaltung zwischen sicheren und nicht sicheren modi
US7474312B1 (en) * 2002-11-25 2009-01-06 Nvidia Corporation Memory redirect primitive for a secure graphics processing unit
US7444523B2 (en) * 2004-08-27 2008-10-28 Microsoft Corporation System and method for using address bits to signal security attributes of data in the address space
US7782329B2 (en) * 2004-12-10 2010-08-24 Rockwell Collins, Inc. Method and apparatus for protected graphics generation
GB0427973D0 (en) * 2004-12-21 2005-01-26 Falanx Microsystems As Microprocessor systems
CN1984298B (zh) * 2005-12-14 2010-05-19 辉达公司 芯片组安全卸载引擎
US7809934B2 (en) 2006-10-13 2010-10-05 Texas Instruments Incorporated Security measures for preventing attacks that use test mechanisms
US20090079746A1 (en) * 2007-09-20 2009-03-26 Apple Inc. Switching between graphics sources to facilitate power management and/or security
US8478959B1 (en) * 2007-11-13 2013-07-02 Nvidia Corporation Method and system for protecting content in graphics memory
US20090150631A1 (en) 2007-12-06 2009-06-11 Clifton Labs, Inc. Self-protecting storage device
US8156565B2 (en) * 2008-04-28 2012-04-10 Microsoft Corporation Hardware-based protection of secure data
US8393008B2 (en) 2008-05-21 2013-03-05 Microsoft Corporation Hardware-based output protection of multiple video streams
US8243088B2 (en) * 2009-02-26 2012-08-14 Presagis Two dimensional memory access controller
US8296538B2 (en) * 2010-02-17 2012-10-23 Arm Limited Storing secure mode page table data in secure and non-secure regions of memory
JP5485055B2 (ja) 2010-07-16 2014-05-07 パナソニック株式会社 共有メモリシステム及びその制御方法
GB2484717B (en) * 2010-10-21 2018-06-13 Advanced Risc Mach Ltd Security provision for a subject image displayed in a non-secure domain
US8943330B2 (en) * 2011-05-10 2015-01-27 Qualcomm Incorporated Apparatus and method for hardware-based secure data processing using buffer memory address range rules
US20130166922A1 (en) * 2011-12-23 2013-06-27 Ati Technologies Ulc Method and system for frame buffer protection

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005528678A (ja) * 2002-04-18 2005-09-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド セキュア実行モードで動作し得るプロセッサを含むコンピュータシステムの初期化方法
JP2009523269A (ja) * 2006-02-22 2009-06-18 株式会社ソニー・コンピュータエンタテインメント 独立論理アドレス空間とそれぞれに対するアクセス管理を提供する方法および装置
WO2011074168A1 (ja) * 2009-12-14 2011-06-23 パナソニック株式会社 情報処理装置
WO2012020236A1 (en) * 2010-08-11 2012-02-16 Arm Limited Memory access control
US20130007407A1 (en) * 2011-07-01 2013-01-03 Synopsys, Inc. Extending Processor MMU for Shared Address Spaces

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11416281B2 (en) 2016-12-31 2022-08-16 Intel Corporation Systems, methods, and apparatuses for heterogeneous computing
US11693691B2 (en) 2016-12-31 2023-07-04 Intel Corporation Systems, methods, and apparatuses for heterogeneous computing
WO2018193736A1 (ja) * 2017-04-19 2018-10-25 富士通株式会社 情報処理装置、情報処理方法、及び情報処理システム
JP2021064378A (ja) * 2020-12-07 2021-04-22 インテル・コーポレーション ヘテロジニアスコンピューティングのためのシステム、方法及び装置
JP7164267B2 (ja) 2020-12-07 2022-11-01 インテル・コーポレーション ヘテロジニアスコンピューティングのためのシステム、方法及び装置
JP7398830B2 (ja) 2021-08-05 2023-12-15 アジャイルソーダ インコーポレイテッド ピックアンドプレイスシステムのための深層強化学習装置及び方法

Also Published As

Publication number Publication date
KR101649089B1 (ko) 2016-08-17
EP2956881B1 (en) 2017-03-08
JP5917784B1 (ja) 2016-05-18
US20140237609A1 (en) 2014-08-21
CN104981811A (zh) 2015-10-14
CN104981811B (zh) 2017-09-29
EP2956881A1 (en) 2015-12-23
US8931108B2 (en) 2015-01-06
WO2014126597A1 (en) 2014-08-21
KR20150119278A (ko) 2015-10-23

Similar Documents

Publication Publication Date Title
JP5917784B1 (ja) グラフィックス処理ユニットのためのハードウェアによるコンテンツ保護
JP6385614B1 (ja) グラフィックス処理ユニットのためのハードウェア強制コンテンツ保護
KR101672150B1 (ko) 페이지-폴트를 방지하기 위한 gpu 메모리 버퍼 프리-페치 및 프리-백 시그널링
US10102391B2 (en) Hardware enforced content protection for graphics processing units
JP5844485B2 (ja) グラフィックス処理システムにおけるメモリアクセス帯域幅をデスティネーションアルファ値に基づいて減少させるための技法
JP5847960B2 (ja) グラフィックス処理における直接レンダリングとビニングとの間の切り換え
CN105556487B (zh) 对页驻留的条件性页错误控制
JP6884766B2 (ja) 帯域幅圧縮グラフィックスデータの記憶
US10078883B2 (en) Writing graphics data from local memory to system memory
KR20190078086A (ko) 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치
US9779471B2 (en) Transparent pixel format converter

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160308

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160406

R150 Certificate of patent or registration of utility model

Ref document number: 5917784

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250