IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧 ▶ エーティーアイ・テクノロジーズ・ユーエルシーの特許一覧

特表2024-524015GPUコンテキストをシステムメモリに保存するためのトラステッドプロセッサ
<>
  • 特表-GPUコンテキストをシステムメモリに保存するためのトラステッドプロセッサ 図1
  • 特表-GPUコンテキストをシステムメモリに保存するためのトラステッドプロセッサ 図2
  • 特表-GPUコンテキストをシステムメモリに保存するためのトラステッドプロセッサ 図3
  • 特表-GPUコンテキストをシステムメモリに保存するためのトラステッドプロセッサ 図4
  • 特表-GPUコンテキストをシステムメモリに保存するためのトラステッドプロセッサ 図5
  • 特表-GPUコンテキストをシステムメモリに保存するためのトラステッドプロセッサ 図6
  • 特表-GPUコンテキストをシステムメモリに保存するためのトラステッドプロセッサ 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-05
(54)【発明の名称】GPUコンテキストをシステムメモリに保存するためのトラステッドプロセッサ
(51)【国際特許分類】
   G06F 1/26 20060101AFI20240628BHJP
   G06F 21/60 20130101ALI20240628BHJP
   G06F 21/64 20130101ALI20240628BHJP
【FI】
G06F1/26
G06F21/60 320
G06F21/64
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023574793
(86)(22)【出願日】2022-06-17
(85)【翻訳文提出日】2023-12-14
(86)【国際出願番号】 US2022033950
(87)【国際公開番号】W WO2022271541
(87)【国際公開日】2022-12-29
(31)【優先権主張番号】17/356,776
(32)【優先日】2021-06-24
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ギア ファン
(72)【発明者】
【氏名】アシシュ ジェイン
(72)【発明者】
【氏名】ランダル ブラウン
【テーマコード(参考)】
5B011
【Fターム(参考)】
5B011DA01
5B011EA02
5B011JA02
5B011JA03
5B011JA04
5B011MB07
(57)【要約】
トラステッドプロセッサ[120]は、処理システム[100]のCPU[105]の初期化と同時に、GPU[110]のフレームバッファ[115]に記憶されたコンテキスト[155]及びデータ[160]を保存及び復元する。トラステッドプロセッサは、GPUがパワーダウンしているのを検出したことに応じて、高速バス[125]を介して、GPUのコンテキスト及びGPUのフレームバッファに記憶されたデータにアクセスする。トラステッドプロセッサは、GPUがパワーダウンされている間にコンテキスト及びデータを維持するシステムメモリ[140]にコンテキスト及びデータを記憶する。トラステッドプロセッサは、GPUが再びパワーアップしているのを検出したことに応じて、コンテキスト及びデータをGPUに復元し、これは、CPUの初期化と同時に実行することができる。
【選択図】図1
【特許請求の範囲】
【請求項1】
方法であって、
トラステッドプロセッサが、処理システムの並列プロセッサのパワーダウンに応じて、前記並列プロセッサのコンテキスト及びデータにアクセスすることと、
前記コンテキスト及びデータをメモリに記憶することと、
前記並列プロセッサのパワーアップに応じて、前記コンテキスト及びデータを前記並列プロセッサに復元することと、を含み、
前記復元することは、前記処理システムの中央処理ユニット(CPU)の初期化と少なくとも部分的に重複する、
方法。
【請求項2】
前記コンテキスト及びデータを暗号化して、暗号化されたコンテキストを生成した後に、暗号化されたコンテキスト及び暗号化されたデータを前記メモリに記憶することを更に含む、
請求項1の方法。
【請求項3】
前記コンテキスト及びデータを前記並列プロセッサに復元する前に、前記暗号化されたコンテキスト及び暗号化されたデータの改ざんを検出することを更に含む、
請求項2の方法。
【請求項4】
前記暗号化されたコンテキスト及び暗号化されたデータを前記メモリに記憶する前に、前記コンテキスト及びデータをハッシュして、第1のハッシュ値を生成することと、
前記コンテキスト及びデータを前記並列プロセッサに復元する前に、前記暗号化されたコンテキスト及び暗号化されたデータにアクセスし、前記暗号化されたコンテキスト及び暗号化されたデータをハッシュして、第2のハッシュ値を生成することと、を更に含み、
前記検出することは、前記第1のハッシュ値を前記第2のハッシュ値と比較することを含む、
請求項3の方法。
【請求項5】
前記並列プロセッサは、グラフィックス処理ユニット(GPU)を備え、前記トラステッドプロセッサによってアクセスされるデータは、前記GPUのフレームバッファに記憶される、
請求項1~4の何れかの方法。
【請求項6】
前記並列プロセッサのパワーダウンに応じて、前記コンテキスト及びデータを記憶するために前記メモリの一部分を割り当てることを更に含む、
請求項1~4の何れかの方法。
【請求項7】
前記並列プロセッサのパワーアップに応じて、前記並列プロセッサの再初期化をバイパスすることを更に含む、
請求項1~4の何れかの方法。
【請求項8】
方法であって、
トラステッドプロセッサが、処理システムの中央処理ユニット(CPU)の初期化と少なくとも部分的に重複して、処理システムのシステムメモリに記憶された並列プロセッサのコンテキスト及びデータを、前記並列プロセッサのパワーアップに応じてフェッチすることと、
前記トラステッドプロセッサにおいて、前記コンテキスト及びデータが改ざんされていないことを検証することと、
前記コンテキスト及びデータを前記並列プロセッサに復元することと、を含む、
方法。
【請求項9】
前記並列プロセッサは、グラフィックス処理ユニット(GPU)を備え、
前記トラステッドプロセッサが、前記GPUのパワーダウンに応じて、前記GPUのコンテキストと、前記GPUのフレームバッファに記憶されたデータと、にアクセスすることと、
前記コンテキスト及びデータを暗号化及びハッシュして、第1のハッシュ値を生成することと、
暗号化されたコンテキスト及びデータを前記システムメモリに記憶することと、を更に含む、
請求項8の方法。
【請求項10】
前記検証することは、
前記コンテキスト及びデータを前記GPUに復元する前に、前記暗号化されたコンテキスト及びデータにアクセスし、前記暗号化されたコンテキスト及びデータをハッシュして、第2のハッシュ値を生成することを含み、
前記検出することは、
前記第1のハッシュ値を前記第2のハッシュ値と比較することを含む、
請求項9の方法。
【請求項11】
前記記憶することは、
前記暗号化されたコンテキスト及びデータを前記システムメモリの事前予約された部分に記憶することを含む、
請求項9又は10の方法。
【請求項12】
前記GPUのパワーダウンに応じて、前記暗号化されたコンテキスト及びデータを記憶するために前記システムメモリの一部分を割り当てることを更に含む、
請求項9~11の何れかの方法。
【請求項13】
前記並列プロセッサのパワーアップに応じて、前記並列プロセッサの再初期化をバイパスすることを更に含む、
請求項8~11の何れかの方法。
【請求項14】
デバイスであって、
中央処理ユニット(CPU)と、
並列プロセッサと、
メモリと、
トラステッドプロセッサと、を備え、
前記トラステッドプロセッサは、
前記並列プロセッサのパワーダウンに応じて、前記並列プロセッサのコンテキストと、前記並列プロセッサに記憶されたデータと、にアクセスすることと、
前記コンテキスト及びデータを前記メモリに記憶することと、
前記並列プロセッサのパワーアップに応じて、前記CPUの初期化と少なくとも部分的に重複して、前記コンテキスト及びデータを前記並列プロセッサに復元することと、
を行うように構成されている、
デバイス。
【請求項15】
前記トラステッドプロセッサは、
前記コンテキスト及びデータを前記並列プロセッサに復元する前に、前記コンテキスト及びデータの改ざんを検出するように構成されている、
請求項14のデバイス。
【請求項16】
前記トラステッドプロセッサは、
前記コンテキスト及びデータを暗号化した後に、暗号化されたコンテキスト及びデータを前記メモリに記憶するように構成されている、
請求項14又は15のデバイス。
【請求項17】
前記トラステッドプロセッサは、
前記暗号化されたコンテキスト及び暗号化されたデータを前記メモリに記憶する前に、前記コンテキスト及びデータをハッシュして、第1のハッシュ値を生成することと、
前記コンテキスト及びデータを前記並列プロセッサに復元する前に、前記暗号化されたコンテキスト及び暗号化されたデータにアクセスし、前記暗号化されたコンテキスト及び暗号化されたデータをハッシュして、第2のハッシュ値を生成することと、
前記第1のハッシュ値を前記第2のハッシュ値と比較することと、
を行うように構成されている、
請求項16のデバイス。
【請求項18】
前記並列プロセッサは、グラフィックス処理ユニット(GPU)を備え、前記トラステッドプロセッサによってアクセスされるデータは、前記GPUのフレームバッファに記憶される、
請求項14又は15のデバイス。
【請求項19】
前記トラステッドプロセッサは、
前記並列プロセッサのパワーダウンに応じて、前記コンテキスト及びデータを記憶するために前記メモリの一部分を割り当てるように構成されている、
請求項14又は15のデバイス。
【請求項20】
前記並列プロセッサは、
前記並列プロセッサのパワーアップに応じて、再初期化をバイパスするように構成されている、
請求項14又は15のデバイス。
【発明の詳細な説明】
【背景技術】
【0001】
グラフィックス処理ユニット(graphics processing unit、GPU)、超並列プロセッサ、単一命令複数データ(single instruction multiple data、SIMD)アーキテクチャプロセッサ、及び、単一命令複数スレッド(single instruction multiple thread、SIMT)アーキテクチャプロセッサ等のプロセッサを含むがこれらに限定されない処理ユニットは、異なる電力管理状態の間を遷移することによって、性能を改善するか又は電力を節約することができる。例えば、処理ユニットは、その処理ユニットによって実行される命令がない場合に、アイドリングすることによって電力を節約することができる。処理ユニットがアイドル状態になると、電力管理ハードウェア又はソフトウェアは、動的電力消費を低減し得る。場合によっては、処理ユニットが所定の時間間隔を超えてアイドル状態であると予測される場合、処理ユニットは、パワーゲーティングされ(すなわち、処理ユニットから電力が除去され)、又は、部分的にパワーゲーティングされ得る(すなわち、処理ユニットの一部から電力が除去され得る)。処理ユニットをパワーゲーティングすることは、処理ユニットをディープスリープ状態又はパワーダウン状態に置くことと呼ばれる。GPUをパワーダウンすることは、GPUのフレームバッファ又は他のパワーゲーティングされたエリアに記憶されたコンテンツをシステムメモリに保存することを必要とする。GPUを低電力状態(アイドル若しくはパワーゲーティングされた、又は、部分的にパワーゲーティングされた状態等)からアクティブ状態に遷移させることは、GPUを再初期化し、システムメモリに記憶されたコンテンツをフレームバッファにコピーバックする際に性能コストを必要とする。
【0002】
本開示は、添付の図面を参照することによってより良好に理解され、その数々の特徴及び利点が当業者に明らかになり得る。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0003】
図1】いくつかの実施形態による、CPUの初期化と同時にグラフィックス処理ユニット(GPU)のコンテキスト及びコンテンツを保存並びに復元するためのトラステッドプロセッサを含む処理システムのブロック図である。
図2】いくつかの実施形態による、GPUのパワーダウンに応じて、GPUのコンテキスト及びコンテンツをシステムメモリに保存するトラステッドプロセッサのブロック図である。
図3】いくつかの実施形態による、GPUのパワーアップに応じて、GPUのコンテキスト及びコンテンツをシステムメモリからGPUに復元するトラステッドプロセッサのブロック図である。
図4】いくつかの実施形態による、システムメモリにデータ及びコンテキストを記憶する前に、GPUのデータ及びコンテキストを暗号化並びにハッシュ化するトラステッドプロセッサのブロック図である。
図5】いくつかの実施形態による、コンテキスト及びデータが改ざんされていないことを検証するトラステッドプロセッサのブロック図である。
図6】いくつかの実施形態による、GPUのコンテキスト及びデータを記憶するためにシステムメモリの一部を割り当てるドライバのブロック図である。
図7】いくつかの実施形態による、CPUの初期化と同時にGPUのコンテキスト及びコンテンツを保存並びに復元するための方法を示すフロー図である。
【発明を実施するための形態】
【0004】
並列プロセッサは、単一の命令を複数のデータ又はスレッドに対して並列に実行することができるプロセッサである。並列プロセッサの例は、グラフィックス、機械知能又は計算動作を実行するための、グラフィックス処理ユニット(GPU)、超並列プロセッサ、単一命令複数データ(SIMD)アーキテクチャプロセッサ、及び、単一命令複数スレッド(SIMT)アーキテクチャプロセッサ等のプロセッサを含む。いくつかの実施形態では、並列プロセッサは、コンピュータの一部として含まれる個別のデバイスである。高度プロセッサユニット等の他の実施形態では、並列プロセッサは、中央プロセッサユニット(central processor unit、CPU)等のホストプロセッサとともに単一のデバイスに含まれる。以下の説明は、例示の目的でグラフィックス処理ユニット(GPU)を使用するが、以下に説明される実施形態は、他のタイプの並列プロセッサに適用可能である。
【0005】
GPUは、グラフィックス処理タスクを実行するように特別に設計された処理ユニットである。GPUは、例えば、ビデオゲームアプリケーション等のように、エンドユーザアプリケーションによって必要とされるグラフィックス処理タスクを実行し得る。典型的には、エンドユーザアプリケーションとGPUとの間にいくつかのソフトウェア層が存在する。例えば、場合によっては、エンドユーザアプリケーションは、アプリケーションプログラミングインターフェース(application programming interface、API)を介してGPUと通信する。APIは、エンドユーザアプリケーションが、GPUに依存するフォーマットではなく、標準化されたフォーマットでグラフィックスデータ及びコマンドを出力することを可能にする。
【0006】
多くのGPUは、グラフィックスアプリケーションの命令を実行するための複数の内部エンジン及びグラフィックスパイプラインを含む。グラフィックスパイプラインは、命令の異なるステップで同時に動作する複数の処理ブロックを含む。パイプライン化は、GPUが、命令を実行するために必要とされるステップの間に存在する並列性を利用することを可能にする。その結果、GPUは、より短い期間でより多くの命令を実行することができる。グラフィックスパイプラインの出力は、グラフィックスパイプラインの状態に依存している。グラフィックスパイプラインの状態は、グラフィックスパイプラインによってローカルに記憶された状態パッケージ(例えば、テクスチャハンドラ、シェーダ定数、変換行列等を含むコンテキスト固有の定数)に基づいて更新される。コンテキスト固有の定数がローカルに維持されるので、それらは、グラフィックスパイプラインによって迅速にアクセスされ得る。
【0007】
グラフィックス処理を実行するために、システムの中央処理ユニット(central processing unit、CPU)は、しばしば、CPUの命令に従ってオブジェクトを描画するようにGPUに命令する一連のコマンドを含む描画呼出し(ドローコール)等の呼出しをGPUに発行する。描画呼出しがGPUグラフィックスパイプラインを通して処理される場合、描画呼出しは、メッシュ及びテクスチャがどのようにレンダリングされるかを決定するために様々な構成可能な設定を使用する。一般的なGPUワークフローは、メモリアレイにおける定数の値を更新すること、次いで、それら定数をデータとして使用して描画動作を実行することを含む。メモリアレイが定数の所定のセットを包含するGPUは、特定の状態にあるか、又は、特定のコンテキストを有すると見なされ得る。コンテキストと呼ばれる(「コンテキスト状態」、「レンダリング状態」、「GPU状態」又は「GPUコンテキスト」とも呼ばれる)これらの定数及び設定は、レンダリングの様々な態様に影響を及ぼし、GPUがオブジェクトをレンダリングするために必要とする情報を含む。コンテキストは、メッシュがどのようにレンダリングされるかの定義を提供し、現在の頂点/インデックスバッファ、現在の頂点/ピクセルシェーダプログラム、シェーダ入力、テクスチャ、マテリアル、ライティング、透明度等の情報を含む。コンテキストは、グラフィックスパイプラインでレンダリングされている描画又は描画のセットに固有の情報を包含する。また、GPUコンテキストは、計算、ビデオ、ディスプレイ及び機械学習コンテキストを含む。各内部GPUエンジンは、コンテキストを含む。したがって、「コンテキスト」は、何かを正確に描画するために必要とされるGPUパイプライン状態、並びに、GPUの各内部GPUエンジンのための計算、ビデオ、ディスプレイ及び機械学習コンテキストを指す。
【0008】
コンテキストは、グラフィックスパイプラインによる迅速なアクセスのために、GPUメモリ(すなわち、フレームバッファ)においてローカルに維持されている。また、フレームバッファは、ファームウェア、アプリケーションデータ及びGPU構成データ(まとめて「データ」と呼ばれる)等の追加のデータを記憶する。加えて、内部GPUエンジン(マイクロプロセッサ)の各々は、ファームウェア、レジスタ及びスタティックランダムアクセスメモリ(static random access memory、SRAM)を含む。また、GPUは、比較的低速のシリアルバスによって、電気的消去可能プログラマブル読み出し専用メモリ(electrically erasable programmable read-only memory、EEPROM)等の不揮発性メモリに接続される。EEPROMは、内部GPUエンジンの各々のためのマイクロコントローラファームウェア、GPUサブシステム固有データ及びGPUをどのように初期化するかについてのシーケンス命令を記憶するように構成されている。GPUが完全に又は部分的にパワーゲーティングされた状態に置かれた後にパワーアップされる場合に発生する通常のブートシーケンスでは、GPUは、低速シリアルバスインターフェースを経てマイクロコントローラファームウェアを取り出し、典型的には比較的長いプロセスであるサブシステムトレーニング、較正及びセットアップを含む初期化シーケンスに従う。次いで、ドライバは、マイクロコントローラファームウェアの一部を搬送し、マイクロコントローラファームウェアをCPUから内部GPUエンジンにロードするために、起動される。また、ドライバは、内部GPUエンジンを初期化する。
【0009】
しかしながら、内部GPUエンジンを初期化するために、シリアルバスを介してマイクロコントローラファームウェアにアクセスしてドライバを起動することは、時間がかかり、したがって、GPUをパワーダウンモードにする機会を制限する。加えて、ドライバは、処理システムのオペレーティングシステムによって起動され、これは、CPUがまたパワーダウンされているか、又は、処理システムにおける他のデバイスにサービス提供している最中である場合には利用不可能である。
【0010】
図1図7は、処理システムのCPUの初期化と同時にGPUのコンテキスト及びコンテンツを保存及び復元するために処理システムのトラステッドプロセッサを使用するための技術を示す。GPUがパワーダウンしている(すなわち、完全に又は部分的にパワーゲーティングされた状態に遷移している)ことを検出したことに応じて、トラステッドプロセッサは、GPUが低電力状態に入る前に、全ての初期化設定及びGPUのフレームバッファに記憶されたデータを含むGPUのコンテキストにアクセスする。いくつかの実施形態では、トラステッドプロセッサは、周辺構成要素相互接続エクスプレス(peripheral component interconnect express、PCIe)高速シリアルバス等の高速バスを介してコンテキストにアクセスする。また、トラステッドプロセッサは、パワーゲーティングされている内部GPUエンジンからのファームウェア、レジスタ及びSRAM等のデータをシステムメモリに保存する。トラステッドプロセッサは、GPUがパワーダウンされている間にコンテキスト及びデータを維持するシステムメモリダイナミックランダムアクセスメモリ(dynamic random-access memory、DRAM)等のオフチップメモリに、コンテキスト及びデータを記憶する。GPUが再びパワーアップしているのを検出したことに応じて、トラステッドプロセッサは、GPUが低電力状態から出る場合に、再初期化、再トレーニング、再較正及び再セットアップの代わりに、コンテキストを内部GPUエンジンに直接復元する。加えて、トラステッドプロセッサは、CPUが再初期化するためにドライバをトリガすることができる前に、内部GPUエンジンが低電力状態から出る場合に、ファームウェア、レジスタ及びSRAM等のデータを内部GPUエンジンに復元する。したがって、内部GPUエンジンへのコンテキスト及びデータの復元は、ドライバ初期化又はCPUスケジューリングから独立しており、CPUの初期化と同時に実行され得る。
【0011】
いくつかの実施形態では、トラステッドプロセッサは、GPUにコンテキスト及びデータを復元する前に、コンテキスト及びデータの改ざんを検出する。トラステッドプロセッサは、第1のハッシュ値を生成するためにコンテキスト及びデータをハッシュすること、並びに、コンテキスト及びデータをシステムメモリに記憶する前に暗号化することによって、コンテキスト及びデータを改ざんから保護する。GPUがパワーアップしているのを検出したことに応じて、トラステッドプロセッサは、第2のハッシュ値を生成するために、暗号化されたコンテキスト及びデータにアクセスし、コンテキスト及びデータをハッシュする。トラステッドプロセッサは、GPUにコンテキスト及びデータを復号して復元する前に、改ざんを検出するために、第1のハッシュ値を第2のハッシュ値と比較する。
【0012】
いくつかの実施形態では、システムメモリは、GPUコンテキスト及びデータを記憶するための事前予約された部分(pre-reserved portion)を含む。システムメモリが、GPUコンテキスト及びデータを記憶するための事前予約された部分を含まない場合、いくつかの実施形態では、ドライバは、GPUのパワーダウンに応じて、コンテキスト及びデータを記憶するためのシステムメモリの一部を動的に割り当てる。
【0013】
GPUがパワーダウンし、次いで再びパワーアップすることに応じて、GPUへのコンテキスト及びデータを保存及び復元するためにトラステッドプロセッサを活用することによって、GPUは、GPUがパワーアップする場合に再初期化プロセスをバイパスすることができる。加えて、トラステッドプロセッサは、オペレーティングシステムがドライバを起動するのを待つ必要なく、CPUのパワーアップと並行してGPUコンテキスト及びデータを復元することができる。トラステッドプロセッサは、コンテキスト及びデータの改ざんを更に検出し、GPUデータにセキュリティを提供する。本明細書で説明される技術は、様々な実施形態では、様々な並列プロセッサ(例えば、ベクトルプロセッサ、グラフィックス処理ユニット(GPU)、汎用GPU(general-purpose GPU、GPGPU)、非スカラプロセッサ、高並列プロセッサ、人工知能(artificial intelligence、AI)プロセッサ、推論エンジン、機械学習プロセッサ、他のマルチスレッド処理ユニット等)の何れかにおいて利用される。
【0014】
図1は、いくつかの実施形態による、CPU105の初期化と同時にグラフィックス処理ユニット(GPU)110のコンテキスト155及びコンテンツ(データ160として示される)を保存並びに復元するためのトラステッドプロセッサ120を含む処理システム100を示している。GPU110は、GPU110と、フレームバッファ115と、シリアルバス165を介してGPU110に接続されている不揮発性メモリ135と、を含むGPUサブシステム102の一部である。いくつかの実施形態では、GPUサブシステム102の構成要素は、プリント回路基板(printed circuit board、PCB)(図示せず)にはんだ付けされている。また、処理システム100は、電力管理コントローラ150と、システムメモリ140と、ドライバ130と、相互接続125と、を含む。処理システム100は、概して、実行された場合に、命令のセットによって指定されたタスクを実行するために、電子デバイスの1つ以上の態様を操作する命令のセット(例えば、アプリケーション)を実行するように構成されている。したがって、異なる実施形態では、処理システム100は、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、スマートフォン、タブレット、ゲームコンソール等の様々な電子デバイスのうち何れかの一部である。
【0015】
様々な実施形態では、CPU105は、1つ以上の単一コアCPU又はマルチコアCPUを含む。様々な実施形態では、GPU110は、従来のCPU、従来のグラフィックス処理ユニット(GPU)、及び、これらの組み合わせ等のリソースに関連して、加速された様式で、加速されたグラフィックス処理タスク、データ並列タスク、ネストされたデータ並列タスクに関連付けられた機能及び計算を行うハードウェア及び/又はソフトウェアの任意の協働する集合体を含む。図1の実施形態では、GPUサブシステム102は、ユーザがGPUサブシステム102を追加又は置換できるように、処理システム100へのアドインカードである。処理システム100は、図1に示すよりも多い又は少ない構成要素を含み得ることを理解されたい。例えば、処理システム100は、1つ以上の入力インターフェース、不揮発性ストレージ、1つ以上の出力インターフェース、ネットワークインターフェース、及び、1つ以上のディスプレイ又はディスプレイインターフェースを更に含み得る。
【0016】
システムメモリ140へのアクセスは、システムメモリ140に結合されたメモリコントローラ(図示せず)によって管理されている。例えば、システムメモリ140から読み取るか又はシステムメモリ140に書き込むためのCPU105又は他のデバイスからの要求は、メモリコントローラによって管理されている。いくつかの実施形態では、1つ以上のアプリケーション(図示せず)は、CPU105においても実行される計算を行うための様々なプログラム又はコマンドを含む。CPU105は、GPU110で処理するために選択されたコマンドを送信する。オペレーティングシステム145及び相互接続125は、以下でより詳細に論じられる。処理システム100は、デバイスドライバ130と、入力/出力メモリ管理ユニット(input/output memory management unit、IOMMU)(図示せず)等のメモリ管理ユニットと、を更に含む。処理システム100の構成要素は、ハードウェア、ファームウェア、ソフトウェア、又は、それらの任意の組み合わせとして実装される。いくつかの実施形態では、処理システム100は、図1に示されるものに加えて又はそれらとは異なる、1つ以上のソフトウェア構成要素、ハードウェア構成要素及びファームウェア構成要素を含む。
【0017】
処理システム100内で、システムメモリ140は、DRAM(図示せず)等の非永続的メモリを含む。様々な実施形態では、システムメモリ140は、処理論理命令、定数値、アプリケーション若しくは他の処理論理の一部の実行中の変数値、又は、他の所望の情報を記憶する。例えば、様々な実施形態では、CPU105上の1つ以上の動作を実行するための制御論理の一部は、CPU105による動作のそれぞれの部分の実行中にシステムメモリ140内に存在する。実行中、それぞれのアプリケーション、オペレーティングシステム機能、処理論理コマンド及びシステムソフトウェアは、システムメモリ140に存在する。オペレーティングシステム145に必須の制御論理コマンドは、概して、実行中にシステムメモリ140内に存在する。いくつかの実施形態では、他のソフトウェアコマンド(例えば、デバイスドライバ130を実装するために使用される命令又はコマンドのセット)は、処理システム100の実行中にシステムメモリ140に存在する。いくつかの実施形態では、GPUサブシステム102は、GPU110がパワーダウンされた(すなわち、完全に又は部分的にパワーゲーティングされた)場合に、GPUコンテキスト及びデータがそこに保存され、そこから復元され得るメモリがパワーアップされたままであるように、専用パワーレールを有するオンチップ又はオフチップの何れかである追加の不揮発性メモリ又は専用メモリを含む。
【0018】
様々な実施形態では、通信インフラストラクチャ(相互接続125と呼ばれる)は、処理システム100の構成要素を相互接続する。相互接続125は、周辺構成要素相互接続(peripheral component interconnect、PCI)バス、拡張PCI(extended PCI、PCI-E)バス、高度マイクロコントローラバスアーキテクチャ(advanced microcontroller bus architecture、AMBA)バス、高度グラフィックスポート(advanced graphics port、AGP)、又は、他のこのような通信インフラストラクチャ及び相互接続のうち1つ以上を含む(図示せず)。いくつかの実施形態では、相互接続125は、イーサネット(Ethernet)(登録商標)ネットワーク又はアプリケーションのデータ転送速度要件を満たす任意の他の適切な物理的通信インフラストラクチャを含む。また、相互接続125は、構成要素(処理システム100の構成要素を含む)を相互接続するための機能を含む。
【0019】
ドライバ130等のドライバは、相互接続又は相互接続125を通じてデバイス(例えば、GPU110)と通信する。呼び出しプログラムがデバイスドライバ130におけるルーチンを起動する場合、ドライバ130は、デバイスにコマンドを発行する。デバイスがドライバ130にデータを送り返すと、ドライバ130は、元の呼び出しプログラムのルーチンを起動する。概して、デバイスドライバは、任意の必要な非同期に依存するハードウェアインターフェースに必須の割り込み処理を提供するために、ハードウェア依存であり、オペレーティングシステム固有である。様々な実施形態では、ドライバ130は、GPU110の様々な機能にアクセスするために、例えば、CPU105で実行するソフトウェア(例えば、アプリケーション)にアプリケーションプログラミングインターフェース(application programming interface、API)を提供することによって、GPU110の動作を制御する。
【0020】
CPU105は、制御プロセッサ、フィールドプログラマブルゲートアレイ(field programmable gate array、FPGA)、特定用途向け集積回路(application specific integrated circuit、ASIC)、又は、デジタル信号プロセッサ(digital signal processor、DSP)のうち1つ以上を含む(図示せず)。CPU105は、処理システム100の動作を制御する制御論理の少なくとも一部を実行する。例えば、様々な実施形態では、CPU105は、オペレーティングシステム145、1つ以上のアプリケーション、及び、デバイスドライバ130を実行する。いくつかの実施形態では、CPU105は、CPU105及びGPU110等の他の処理リソースにわたって、1つ以上のアプリケーションに関連付けられた処理を分配することによって、1つ以上のアプリケーションの実行を開始及び制御する。
【0021】
GPU110は、並列処理に特に適しているグラフィックス動作及び他の動作等のような選択された機能のためのコマンド及びプログラムを実行する。概して、GPU110は、ピクセル操作、幾何学的計算及びディスプレイへの画像のレンダリング等のグラフィックスパイプライン操作を実行するために頻繁に使用されている。いくつかの実施形態では、GPU110は、CPU105から受信されたコマンド又は命令に基づいて、計算処理操作(例えば、ビデオ操作、物理的シミュレーション、計算流体ダイナミクス等のように、グラフィックスとは無関係の操作)を実行する。例えば、そのようなコマンドは、GPU110の命令セットアーキテクチャ(instruction set architecture、ISA)において典型的には定義されていない特別な命令を含む。いくつかの実施形態では、GPU110は、画像をレンダリング及び表示するための1つ以上のコマンド又は命令とともに、グラフィックス画像を表す画像ジオメトリを受信する。様々な実施形態では、画像ジオメトリは、ニ次元(2D)又は三次元(3D)のコンピュータ化されたグラフィックス画像の表現に対応する。
【0022】
電力管理コントローラ(power management controller、PMC)150は、CPU105に実装されたオペレーティングシステム145によって提供されるポリシー等の電力管理ポリシーを実行する。PMC150は、GPU110に供給される動作周波数若しくは動作電圧、又は、GPU110に実装される計算ユニットを変更することによって、GPU110の電力状態を制御する。また、CPU105のいくつかの実施形態は、CPU105の電力状態を制御するために個別のPMC(図示せず)を実装する。PMC150は、電力を節約し、性能を向上させ、又は、他の目標結果を達成するために、GPU110の電力管理状態間の電力状態遷移を開始する。電力管理状態は、アクティブ状態、アイドル状態、パワーゲーティングされた状態、及び、異なる量の電力を消費するいくつかの他の状態を含むことができる。例えば、GPU110の電力状態は、動作状態、停止状態、クロック停止状態、全ての内部クロックが停止されたスリープ状態、電圧が低下されたスリープ状態、及び、パワーダウン状態を含むことができる。いくつかの実施形態では、追加の電力状態も利用可能であり、クロック周波数、クロック停止、及び、供給電圧の異なる組み合わせによって定義されている。
【0023】
CPU105及びGPU110の両方がパワーダウン状態にあり、PMC150がCPU105及びGPU110をアクティブ状態に遷移させる場合、従来は、ブートローダ(図示せず)がCPU105のハードウェアの初期化を行い、オペレーティングシステム(operating system、OS)145をロードする。次いで、ブートローダは、例えば、メモリ管理をセットアップすること、タイマ及び割込みを設定すること、デバイスドライバ130をロードすることによって、それ自体を初期化し、処理システム100のハードウェアを構成するOS145に制御を渡す。いくつかの実施形態では、ブートローダは、基本入出力システム(Basic Input/Output System、BIOS)等のブートコード170と、CPU105のハードウェア構成を示すハードウェア構成(図示せず)と、を含む。
【0024】
不揮発性メモリ135は、フラッシュメモリ、EEPROM又は任意の他のタイプのメモリデバイスによって実装され、シリアルバス165を介してGPU110に接続されている。従来、GPU110が完全に又は部分的にパワーゲーティングされた状態に置かれた後にパワーアップされる場合に、GPU110は、シリアルバス165を介して不揮発性メモリ135に記憶されたマイクロコントローラファームウェアを取り出し、典型的には比較的長いプロセスであるサブシステムトレーニング、較正及びセットアップを含む初期化シーケンスに従う。次いで、CPU105は、マイクロコントローラファームウェアの一部を搬送し、マイクロコントローラファームウェアをCPU105から内部GPUエンジン(図示せず)にロードし、内部GPUエンジンを初期化するために、ドライバ130を起動する。
【0025】
トラステッドプロセッサ120は、GPU110についての信頼されたハードウェアルートとして機能する。トラステッドプロセッサ120は、GPU110のセキュリティ環境を生成し、監視し、維持する役割を果たすマイクロコントローラ又は他のプロセッサを含む。例えば、いくつかの実施形態では、トラステッドプロセッサは、ブートプロセスを管理し、様々なセキュリティ関連機構を初期化し、任意の疑わしいアクティビティ又はイベントについてGPU110を監視し、適切な応答を実施する。
【0026】
GPU110の電力状態遷移のためのより速い再開時間を容易にするために、処理システムは、CPU105上で動作するドライバ130の関与なしに、GPUコンテキスト155及びデータ160を保存及び復元するために、システムメモリ140に直接アクセスするためにトラステッドプロセッサ120を使用する。GPU110がパワーダウンしているのを検出したことに応じて、トラステッドプロセッサ120は、相互接続125を介して、GPU110のコンテキスト155及びGPU110のフレームバッファ115に記憶されたデータ160にアクセスする。トラステッドプロセッサ120は、コンテキスト155及びデータ160をシステムメモリ140に記憶する。システムメモリ140は、GPU110がパワーダウンされている間、コンテキスト155及びデータ160を維持する。GPU110が再びパワーアップしているのを検出したことに応じて、トラステッドプロセッサ120は、コンテキスト155及びデータ160をGPU110に復元する。いくつかの実施形態では、トラステッドプロセッサ120は、GPU110内に実装され、GPU110が完全にパワーダウンされた事象においてGPU110とともにパワーダウンされる。パワーゲーティング解除されると、トラステッドプロセッサ120は、ウェイクし、復元シーケンスを実行する。例えば、いくつかの実施形態では、トラステッドプロセッサ120は、目覚めに応答してコンテキスト155及びデータ160を転送するために、システムメモリ140にダイレクトメモリアクセスコマンドを発行する。トラステッドプロセッサ120は、ドライバ130から独立してシステムメモリ140への直接メモリアクセスを実行するので、トラステッドプロセッサ120は、GPU110がCPU105の初期化と同時にパワーアップされたデータにおいて動作を再開することができるように、コンテキスト155及びデータ160をGPU110に復元することができる。GPU110のためのより速い再開時間を容易にすることによって、トラステッドプロセッサ120は、GPU110をパワーダウンするためのより多くの機会をPMC150に提供し、より多くの永続メモリを処理システム100に追加する費用なしに、処理システム100のためのより高い効率をもたらす。
【0027】
いくつかの実施形態では、GPU110が部分的に又は完全にパワーゲーティングされる場合にシステムメモリ140にコンテキスト155及びデータ160を記憶するのではなく、トラステッドプロセッサ120は、処理システム100の別のメモリにコンテキスト155及びデータ160を記憶する。例えば、いくつかの実施形態では、トラステッドプロセッサ120は、GPU110がパワーダウンされる(すなわち、完全に又は部分的にパワーゲーティングされる)場合にメモリがパワーアップされたままであるように、追加の不揮発性メモリ(図示せず)、又は、専用パワーレール(図示せず)を有するオンチップ若しくはオフチップの何れかである専用メモリ(図示せず)にコンテキスト155及びデータ160を記憶する。
【0028】
いくつかの実施形態では、トラステッドプロセッサ120は、GPU110にコンテキスト155及びデータ160を復元する前に、コンテキスト155及びデータ160の改ざんを検出する。トラステッドプロセッサは、第1のハッシュ値(図示せず)を生成するためにコンテキスト155及びデータ160をハッシュし、コンテキスト155及びデータ160をシステムメモリ140に記憶する前にコンテキスト155及びデータ160を暗号化する。GPU110がパワーアップしているのを検出したことに応じて、トラステッドプロセッサ120は、第2のハッシュ値(図示せず)を生成するために、暗号化されたコンテキスト155及びデータ160にアクセスし、コンテキスト155及びデータ160をハッシュする。トラステッドプロセッサ120は、GPU110にコンテキスト155及びデータ160を復号して復元する前に、改ざんを検出するために、第1のハッシュ値を第2のハッシュ値と比較する。
【0029】
図2は、いくつかの実施形態による、GPU110のパワーダウンに応じて、GPU110のコンテキスト155及びデータ160をシステムメモリ140に保存するトラステッドプロセッサ120のブロック図である。トラステッドプロセッサ120は、システムメモリ140から情報のブロックを読み出し又は書き込むダイレクトメモリアクセス(direct memory access、DMA)エンジン210を含む。DMAエンジン210は、アドレスを生成し、メモリ読み出し又は書込みサイクルを開始する。したがって、トラステッドプロセッサ210は、DMAエンジン210を介して、システムメモリ140から情報を読み出し、システムメモリ140に情報を書き込む。いくつかの実施形態では、DMAエンジン210は、トラステッドプロセッサ120内に実装されており、他の実施形態では、DMAエンジン210は、トラステッドプロセッサ120とは別のエンティティとして実装されている。トラステッドプロセッサ120は、データ転送がDMAエンジン210によって実行されるのと同時に他の動作を実行することができ、これは、転送が完了したことを示すためにトラステッドプロセッサ120に割込みを提供し得る。
【0030】
図示した例では、GPU110がパワーダウンしているのを検出したことに応じて、トラステッドプロセッサ120は、GPU110のフレームバッファ115のコンテキスト155及びコンテンツ(データ160)を取り出す。DMAエンジン210は、コンテキスト155及びデータ160をシステムメモリ140に書き込む。いくつかの実施形態では、トラステッドプロセッサ120は、例えば、署名215をコンテキスト155及びデータ160に添付することによって、コンテキスト155及びデータ160を認証する。
【0031】
図3は、いくつかの実施形態による、GPU110のパワーアップに応じて、GPU110のコンテキスト155及びコンテンツ160をシステムメモリ140からGPU110に復元するトラステッドプロセッサ120のブロック図である。図示した例では、GPU110がパワーアップしているのを検出したことに応じて、DMAエンジン210は、システムメモリ140からコンテキスト155及びデータ160を取り出す。いくつかの実施形態では、トラステッドプロセッサ120は、例えば、トラステッドプロセッサ120がGPU110のパワーアップに応じてコンテキスト155及びデータ160を取り出す場合に、コンテキスト155及びデータ160に付加された署名315が期待される署名320と一致することを検証することによって、コンテキスト155及びデータ160を認証する。
【0032】
トラステッドプロセッサ120が、署名315が期待される署名320と一致することを検証することによってコンテキスト155及びデータ160を認証すると、トラステッドプロセッサ120は、コンテキスト155をGPU110に復元し、データ160をフレームバッファ115に復元する。いくつかの実施形態では、トラステッドプロセッサ120が、署名315が期待される署名320と一致しないと判定した場合、トラステッドプロセッサ120は、コンテキスト155及びデータ160をGPU110に提供しない。トラステッドプロセッサ120が、GPU110が復元され得るように、コンテキスト155及びデータ160をGPU110に提供しない場合、トラステッドプロセッサ120は、不揮発性メモリ135から完全なGPU110初期化シーケンスをトリガする。次に、ドライバ130は、それが管理する内部GPUエンジン(図示せず)を初期化する。
【0033】
図4は、いくつかの実施形態による、システムメモリ140にデータ155及びコンテキスト160を記憶する前に、GPU110のパワーダウンに応じて、GPU110のコンテキスト155及びデータ160を暗号化並びにハッシュするトラステッドプロセッサ120のブロック図である。コンテキスト155及びデータ160の暗号保護を提供するために、トラステッドプロセッサ120は、指定された暗号規格に従って情報を暗号化及び解読するように構成された暗号化モジュール410を含む。いくつかの実施形態では、暗号化モジュール410は、Advanced Encryption Standard(高度暗号化標準、AES)暗号化及び解読を採用するように構成されているが、他の実施形態では、暗号化モジュール410は、他の暗号化/解読技術を採用し得る。暗号化モジュール410は、コンテキスト155及びデータ160を暗号化するためにキー425を使用し、暗号化されたコンテキスト455及び暗号化されたデータ460を記憶のためにシステムメモリ140に提供する。
【0034】
いくつかの実施形態では、トラステッドプロセッサ120は、暗号化されたコンテキスト455及び暗号化されたデータ460が有効であるかどうかを判定するために、暗号ハッシュ(「ハッシュ」と呼ばれる)415を計算する等の検証プロトコル又は他のプロトコルを使用して、暗号化されたコンテキスト455及び暗号化されたデータ460を検証する。いくつかの実施形態では、トラステッドプロセッサ120は、キー425を使用して、暗号化されたコンテキスト455及び暗号化されたデータ460のハッシュ415を計算し、次いで、ハッシュ415、暗号化されたコンテキスト455及び暗号化されたデータ460をシステムメモリ140に送信する。
【0035】
ハッシュ415を計算することは、可変量のデータが関数によって処理されて、ハッシュ値と呼ばれる固定長結果を生成する手順を指す。ハッシュ関数は、同じ順序で提示される同じデータが常に同じハッシュ値を生成するように決定論的であるべきである。データ又はデータの1つ以上の値の順序の変更は、異なるハッシュ値を生成するはずである。ハッシュ関数は、異なるキーでハッシュされた同じデータが異なるハッシュ値を生成するように、キーワード又は「ハッシュキー」を使用し得る。ハッシュ値は、入力データの潜在的な組み合わせよりも少ない一意の値を有し得るので、データ入力の異なる組み合わせは、同じハッシュ値をもたらし得る。例えば、16ビットハッシュ値は、65536個の一意の値を有することになるが、4バイトのデータは、40億個を超える一意の組み合わせを有し得る。したがって、ハッシュ値長は、ハッシュ関数を過度に複雑にしたり、又は、時間を浪費したりするほど長くはないが、潜在的な重複結果を最小化するように選択され得る。
【0036】
図5は、いくつかの実施形態による、コンテキスト155及びデータ160が改ざんされていないことを検証するトラステッドプロセッサ120のブロック図である。GPU110が起動しているのを検出したことに応じて、トラステッドプロセッサ120は、相互接続125を介して、システムメモリから、暗号化されたコンテキスト455、暗号化されたデータ460、署名215及びハッシュ415を取り出す。トラステッドプロセッサ120は、キー425を使用して、暗号化されたコンテキスト455及び暗号化されたデータ460の第2のハッシュ505を計算する。トラステッドプロセッサ120は、ハッシュ415を第2のハッシュ505と比較するように構成された比較器530を含む。ハッシュ415の値と第2のハッシュ505の値が一致する場合、トラステッドプロセッサ120は、暗号化されたコンテキスト455及び暗号化されたデータ460が改ざんされていないことを検証する。暗号化されたコンテキスト455及び暗号化されたデータ460が改ざんされていないと判定したことに応じて、暗号化モジュール410は、暗号化されたコンテキスト455及び暗号化されたデータ460を復号し、コンテキスト155及びデータ160をGPU110に復元する。
【0037】
図6は、いくつかの実施形態による、GPU110のコンテキスト155及びデータ160を記憶するためにシステムメモリ140の一部分610を割り当てるドライバ130のブロック図である。いくつかの実施形態では、システムメモリ140は、コンテキスト155及びデータ160(又は、暗号化されたコンテキスト455及び暗号化されたデータ460)を記憶するための事前予約された部分を含む。システムメモリ140が、コンテキスト155及びデータ160を記憶するための事前予約された部分を含まない場合、いくつかの実施形態では、ドライバ130は、GPU110のパワーダウンに応じて、コンテキスト155及びデータ160を記憶するためのシステムメモリ140の一部分610を動的に割り当てる。ドライバ130は、コンテキスト155及びデータ160のサイズを判定し、コンテキスト155及びデータ160を記憶するために十分なシステムメモリ140の一部分610を割り当てる。いくつかの実施形態では、ドライバは、アドレス表記620と呼ばれる一部分610のアドレス範囲の表記を不揮発性メモリ135に保存する。他の実施形態では、ドライバ130は、アドレス表記620を処理システムの別の場所に保存する。トラステッドプロセッサ120が、GPU110がパワーダウンしているのを検出した場合、トラステッドプロセッサ120は、アドレス表記620にアクセスして、トラステッドプロセッサ120がGPU110から取り出すコンテキスト155及びデータ160をシステムメモリ140の何処に記憶するかを判定する。
【0038】
図7は、いくつかの実施形態による、CPU105の初期化と同時にGPU110のコンテキスト155及びデータ160を保存並びに復元するための方法700を示すフロー図である。ブロック702において、ドライバ130は、システムメモリ140の一部分610が事前予約されていなかった場合、GPU110のコンテキスト155及びデータ160を記憶するために、その一部分610を割り当てる。ブロック704において、ドライバ130は、一部分610のアドレス範囲のアドレス表記620を、不揮発性メモリ135又は処理システム100の別の場所に記憶する。
【0039】
ブロック706において、PMC150は、GPU110をパワーダウンするために、GPU110の電力状態遷移を開始する。ブロック708において、GPU110がパワーダウンしているのを検出したことに応じて、トラステッドプロセッサ120は、GPU110のコンテキスト155及びGPU110のフレームバッファ115に記憶されたデータ160にアクセスする。いくつかの実施形態では、トラステッドプロセッサ120は、コンテキスト155及びデータ160を保護し、改ざんを検出するために、コンテキスト155及びデータ160を暗号化し、ハッシュ415を生成する。ブロック710において、トラステッドプロセッサは、システムメモリ140の一部分610にコンテキスト155及びデータ160(又は、暗号化されたコンテキスト455及び暗号化されたデータ460)を記憶する。
【0040】
ブロック712において、PMC150は、GPU110をパワーアップするために、GPU110の電力状態遷移を開始する。ブロック714において、GPU110がパワーアップしているのを検出したことに応じて、トラステッドプロセッサ120は、システムメモリ140の一部分610からコンテキスト155及びデータ160(又は、暗号化されたコンテキスト455及び暗号化されたデータ460)を取り出す。いくつかの実施形態では、トラステッドプロセッサ120は、暗号化されたコンテキスト455及び暗号化されたデータ460の第2のハッシュ505を生成し、暗号化されたコンテキスト455及び暗号化されたデータ460が改ざんされたかどうかを判定するために、ハッシュ415を第2のハッシュ505と比較する。トラステッドプロセッサ120は、暗号化されたコンテキスト455及び暗号化されたデータ460を復号し、CPU105の初期化と同時にコンテキスト155及びデータ160をGPU110に復元する。
【0041】
いくつかの実施形態では、上記の装置及び技術は、図1図7を参照して上述した処理システム等の1つ以上の集積回路(integrated circuit、IC)デバイス(集積回路パッケージ又はマイクロチップとも呼称される)を含むシステムに実装されている。電子設計自動化(electronic design automation、EDA)及びコンピュータ支援設計(computer aided design、CAD)ソフトウェアツールは、これらのICデバイスの設計及び製造に使用することができる。これらの設計ツールは、典型的には、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計するか又は適応させるためのプロセスの少なくとも一部を実行するために、1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作するための、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含み得る。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上の段階を表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶され、そこからアクセスされる。
【0042】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
【0043】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
【0044】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0045】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
図1
図2
図3
図4
図5
図6
図7
【手続補正書】
【提出日】2024-02-06
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
方法であって、
トラステッドプロセッサが、処理システムの並列プロセッサのパワーダウンに応じて、前記並列プロセッサのコンテキスト及びデータにアクセスすることと、
前記コンテキスト及びデータをメモリに記憶することと、
前記並列プロセッサのパワーアップに応じて、前記コンテキスト及びデータを前記並列プロセッサに復元することと、を含み、
前記復元することは、前記処理システムの中央処理ユニット(CPU)の初期化と少なくとも部分的に重複する、
方法。
【請求項2】
前記コンテキスト及びデータを暗号化して、暗号化されたコンテキストを生成した後に、暗号化されたコンテキスト及び暗号化されたデータを前記メモリに記憶することを更に含む、
請求項1の方法。
【請求項3】
前記コンテキスト及びデータを前記並列プロセッサに復元する前に、前記暗号化されたコンテキスト及び暗号化されたデータの改ざんを検出することを更に含む、
請求項2の方法。
【請求項4】
前記暗号化されたコンテキスト及び暗号化されたデータを前記メモリに記憶する前に、前記コンテキスト及びデータをハッシュして、第1のハッシュ値を生成することと、
前記コンテキスト及びデータを前記並列プロセッサに復元する前に、前記暗号化されたコンテキスト及び暗号化されたデータにアクセスし、前記暗号化されたコンテキスト及び暗号化されたデータをハッシュして、第2のハッシュ値を生成することと、を更に含み、
前記検出することは、前記第1のハッシュ値を前記第2のハッシュ値と比較することを含む、
請求項3の方法。
【請求項5】
前記並列プロセッサは、グラフィックス処理ユニット(GPU)を備え、前記トラステッドプロセッサによってアクセスされるデータは、前記GPUのフレームバッファに記憶される、
請求項1~4の何れかの方法。
【請求項6】
前記並列プロセッサのパワーダウンに応じて、前記コンテキスト及びデータを記憶するために前記メモリの一部分を割り当てることを更に含む、
請求項1~4の何れかの方法。
【請求項7】
前記並列プロセッサのパワーアップに応じて、前記並列プロセッサの再初期化をバイパスすることを更に含む、
請求項1~4の何れかの方法。
【請求項8】
方法であって、
トラステッドプロセッサが、処理システムの中央処理ユニット(CPU)の初期化と少なくとも部分的に重複して、処理システムのシステムメモリに記憶された並列プロセッサのコンテキスト及びデータを、前記並列プロセッサのパワーアップに応じてフェッチすることと、
前記トラステッドプロセッサにおいて、前記コンテキスト及びデータが改ざんされていないことを検証することと、
前記コンテキスト及びデータを前記並列プロセッサに復元することと、を含む、
方法。
【請求項9】
前記並列プロセッサは、グラフィックス処理ユニット(GPU)を備え、
前記トラステッドプロセッサが、前記GPUのパワーダウンに応じて、前記GPUのコンテキストと、前記GPUのフレームバッファに記憶されたデータと、にアクセスすることと、
前記コンテキスト及びデータを暗号化及びハッシュして、第1のハッシュ値を生成することと、
暗号化されたコンテキスト及びデータを前記システムメモリに記憶することと、を更に含む、
請求項8の方法。
【請求項10】
前記検証することは、
前記コンテキスト及びデータを前記GPUに復元する前に、前記暗号化されたコンテキスト及びデータにアクセスし、前記暗号化されたコンテキスト及びデータをハッシュして、第2のハッシュ値を生成することを含み、
前記検出することは、
前記第1のハッシュ値を前記第2のハッシュ値と比較することを含む、
請求項9の方法。
【請求項11】
前記記憶することは、
前記暗号化されたコンテキスト及びデータを前記システムメモリの事前予約された部分に記憶することを含む、
請求項9又は10の方法。
【請求項12】
デバイスであって、
中央処理ユニット(CPU)と、
並列プロセッサと、
メモリと、
トラステッドプロセッサと、を備え、
前記トラステッドプロセッサは、
前記並列プロセッサのパワーダウンに応じて、前記並列プロセッサのコンテキストと、前記並列プロセッサに記憶されたデータと、にアクセスすることと、
前記コンテキスト及びデータを前記メモリに記憶することと、
前記並列プロセッサのパワーアップに応じて、前記CPUの初期化と少なくとも部分的に重複して、前記コンテキスト及びデータを前記並列プロセッサに復元することと、
を行うように構成されている、
デバイス。
【請求項13】
前記トラステッドプロセッサは、
前記コンテキスト及びデータを前記並列プロセッサに復元する前に、前記コンテキスト及びデータの改ざんを検出するように構成されている、
請求項12のデバイス。
【請求項14】
前記トラステッドプロセッサは、
前記コンテキスト及びデータを暗号化した後に、暗号化されたコンテキスト及びデータを前記メモリに記憶するように構成されている、
請求項12又は13のデバイス。
【請求項15】
前記トラステッドプロセッサは、
前記暗号化されたコンテキスト及び暗号化されたデータを前記メモリに記憶する前に、前記コンテキスト及びデータをハッシュして、第1のハッシュ値を生成することと、
前記コンテキスト及びデータを前記並列プロセッサに復元する前に、前記暗号化されたコンテキスト及び暗号化されたデータにアクセスし、前記暗号化されたコンテキスト及び暗号化されたデータをハッシュして、第2のハッシュ値を生成することと、
前記第1のハッシュ値を前記第2のハッシュ値と比較することと、
を行うように構成されている、
請求項14のデバイス。
【国際調査報告】