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

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

▶ エーティーアイ・テクノロジーズ・ユーエルシーの特許一覧

特表2023-542493コンピューティングデバイス作業データのセキュアな収集及び通信
<>
  • 特表-コンピューティングデバイス作業データのセキュアな収集及び通信 図1
  • 特表-コンピューティングデバイス作業データのセキュアな収集及び通信 図2
  • 特表-コンピューティングデバイス作業データのセキュアな収集及び通信 図3
  • 特表-コンピューティングデバイス作業データのセキュアな収集及び通信 図4
  • 特表-コンピューティングデバイス作業データのセキュアな収集及び通信 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-10-10
(54)【発明の名称】コンピューティングデバイス作業データのセキュアな収集及び通信
(51)【国際特許分類】
   G06F 21/57 20130101AFI20231002BHJP
   G06F 8/65 20180101ALI20231002BHJP
   G06F 21/60 20130101ALI20231002BHJP
   G06F 11/34 20060101ALI20231002BHJP
【FI】
G06F21/57 320
G06F8/65
G06F21/60
G06F11/34 166
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023514868
(86)(22)【出願日】2021-09-24
(85)【翻訳文提出日】2023-04-03
(86)【国際出願番号】 IB2021058739
(87)【国際公開番号】W WO2022064446
(87)【国際公開日】2022-03-31
(31)【優先権主張番号】63/083,584
(32)【優先日】2020-09-25
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/098,234
(32)【優先日】2020-11-13
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】スリンディ カッテ ヴィジャエーンドラ
【テーマコード(参考)】
5B042
5B376
【Fターム(参考)】
5B042HH30
5B042JJ36
5B042KK01
5B042KK14
5B042MA08
5B042MC08
5B376CA43
(57)【要約】
本明細書で説明する技術は、コンピューティングデバイスの任意のサブシステムからの高レベル作業データと低レベル作業データとの両方のターゲット化された収集及び記憶を可能にするセキュアデータレコーダを提供する。データレコーダは、記憶された構成データに基づいてデバイス作業データを集めて記憶する。構成データは、作業データを集める元であるデバイス上の1つ以上のメモリ及び/又は記憶場所、並びに、集められた作業データをデータレコーダが記憶する1つ以上の記憶場所を示す。データレコーダは、セキュアな実行環境において実装され、デバイスのブート前の段階の全ての間、機能する。データレコーダは、ユーザが、例えばネットワークを介して提供されるファームウェアイメージに基づいてコンピューティングデバイスのBIOSを更新することを可能にする。データレコーダは、作業データ集めを経時的に容易にし、特定のハードウェア構成及び/又は特定のソフトウェア構成の機能に役立つ。
【選択図】図3
【特許請求の範囲】
【請求項1】
コンピュータ実行可能方法であって、
割込みイベントを検出することと、
前記割込みイベントに応じて、コンピューティングデバイスのプロセッサが、データ集め動作を実施するためにセキュアな実行環境を使用することと、を含み、
前記データ集め動作は、
構成データに基づいて、1つ以上のデータ収集場所からデータを集めることと、
前記集められたデータを1つ以上のターゲット記憶場所に記憶することと、を含む、
コンピュータ実行可能方法。
【請求項2】
前記割込みイベントは、前記割込みイベントを前記データ集め動作に関連付ける情報に関連付けられている、
請求項1のコンピュータ実行可能方法。
【請求項3】
前記割込みイベントを検出することは、前記コンピューティングデバイスのブート前の段階の間に前記プロセッサによって実行される、
請求項1のコンピュータ実行可能方法。
【請求項4】
前記データ集め動作は、
前記構成データに基づいて前記1つ以上のターゲット記憶場所を識別することを更に含み、
前記1つ以上のターゲット記憶場所の各々は、
前記コンピューティングデバイスの構成要素である記憶デバイス、
前記コンピューティングデバイスと通信可能に接続された記憶デバイス、又は、
ネットワークを介してアクセス可能な記憶デバイス、
のうち何れかを識別する、
請求項1のコンピュータ実行可能方法。
【請求項5】
前記割込みイベントを検出することは、1つ以上のスレッドが前記プロセッサによって実行されている間に前記プロセッサによって実行され、
前記方法は、前記割込みイベントを検出したことに応じて、前記1つ以上のスレッドの実行を停止することを更に含む、
請求項1のコンピュータ実行可能方法。
【請求項6】
前記1つ以上のデータ収集場所は、前記コンピューティングデバイスの中央処理装置、前記コンピューティングデバイスのグラフィックス処理装置、又は、前記コンピューティングデバイスの集積回路のうち1つ以上に関連付けられている、
請求項1のコンピュータ実行可能方法。
【請求項7】
前記割込みイベントは、前記コンピューティングデバイスの特定のサブシステムのプロダクションスタック内の前記構成データの場所に関連付けられており、
前記1つ以上のデータ収集場所は、前記特定のサブシステムに関連付けられており、
前記方法は、前記場所から前記構成データを取り出すことを更に含む、
請求項1のコンピュータ実行可能方法。
【請求項8】
前記集められたデータの一意の識別子を生成することを更に含み、前記集められたデータは、前記一意の識別子に関連して記憶される、
請求項1のコンピュータ実行可能方法。
【請求項9】
前記データ集め動作は、前記集められたデータを記憶した後に、
ファームウェア更新情報を受信することと、
前記ファームウェア更新情報を受信したことに応じて、
前記ファームウェア更新情報を検証することと、
前記ファームウェア更新情報を適用して、前記コンピューティングデバイスのファームウェアを更新することと、を更に含む、
請求項1のコンピュータ実行可能方法。
【請求項10】
前記コンピューティングデバイスは、集積回路であり、
前記プロセッサは、前記集積回路上の専用セキュリティプロセッサであり、
前記割込みイベントは、前記集積回路上のサブシステムのマイクロプロセッサに関連付けられている、
請求項1のコンピュータ実行可能方法。
【請求項11】
前記構成データに基づいて、前記1つ以上のデータ収集場所を識別することであって、前記1つ以上のデータ収集場所は、ハードウェアレジスタ又はメモリ場所のうち1つ以上を含む、ことを更に含む、
請求項1のコンピュータ実行可能方法。
【請求項12】
コンピューティングシステムであって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサによって実行されると、請求項1~11の何れかの方法を実行させる1つ以上の命令シーケンスを記憶するメモリと、を備える、
コンピューティングシステム。
【請求項13】
1つ以上のプロセッサによって実行されると、請求項1~11の何れかの方法を実行させる1つ以上の命令シーケンスを記憶する、1つ以上のコンピュータ可読記憶媒体。
【請求項14】
1つ以上のプロセッサによって実行されると、請求項1~11の何れかの方法を実行させる命令を含む、コンピュータプログラム製品。
【発明の詳細な説明】
【背景技術】
【0001】
コンピューティングデバイスの実行中、デバイスは、永続記憶装置、メモリ、ハードウェアレジスタ等に記憶されるデータを含む多くのタイプの作業データを生成して記憶する。例えば、デバイスのトラブルシューティングを目的としてコンピューティングデバイスの作業データを集めることは難題であり得る。これは、ファームウェアレベル又はハードウェアレベル(レジスタ転送レベル等)の作業データ等の低レベルの作業データが必要な場合に特に当てはまる。デバイス自体への物理的アクセスを使用してデバイスの作業データにアクセスすることが最も効果的である。しかしながら、ターゲットコンピューティングデバイスのサイトに行くことは、特に、デバイスの作業データが、システムの一部の製造業者/ベンダ、システムのトラブルシューティングをするために雇われたサードパーティ等の非制御関係者によって必要とされる場合に、高価であり及び/又は困難であり得る。
【0002】
デバイス開発中に低レベル作業データを集めるために使用されるデバッギングツール(Joint Test Access Group(JTAG)インターフェース等)は、一般に、デバイスの生産スタックにおいて無効化又は除去され、したがって、展開されたシステムにおいて利用可能ではない。開発者は、リモートシステムの「署名鍵」インフラストラクチャの知識に基づいて又はシステムがロック解除されたデバッグポートを有する場合に、リモートコンピューティングシステム内のデバイスの低レベル作業データにリモートでアクセスすることが可能である。しかしながら、コンピューティングシステムへのこの種のアクセスを可能にすることは、重大なセキュリティ脆弱性を招き、したがって、全てのクライアントが、デバイス作業データにリモートでアクセスするために必要な権利を提供するわけではない。
【0003】
リモートトラブルシューティングの目的ために、開発者は、ローカルシステムにおいて、リモートコンピューティングデバイスで経験されている問題点を再現しようと試みることがある。しかしながら、そのようなテストシステム環境をセットアップすることは、ターゲットデバイスの特定の問題点を忠実に再現するために、特に問題点が相手先商標製品製造会社(Original Equipment Manufacturer、OEM)基板特有のものである場合に、かなりの量の時間及びエンジニアリング努力を必要とする。
【0004】
更に、いくつかのテレメトリ/デバッギングソリューションが存在し、それらは、特定のオペレーティングシステム(Operating System、OS)又はアプリケーションを実行する展開されたシステムに依存する。これらのソフトウェアベースのソリューションは、リモートシステムから、必要とされるOS又は必要とされるアプリケーションに固有の作業データを集めることができるが、一般に、低レベルデータを集めることはできない。更に、ソフトウェアベースのソリューションは、一旦ソフトウェアがデバイス上で実行できると、すなわち、リブート後のデバイスの開始シーケンスを介してOSが開始された後にのみ、作業データを集めることができる。したがって、ソフトウェアベースのソリューションは、コンピューティングデバイスのブート前の段階の間にデータを集めることができない。また、ソフトウェアベースのソリューションは、ファームウェアベースのトラブルシューティングをするために必要とされるファームウェア更新を容易にしない。そのような制限は、デバッギングデバイスファームウェアを含む作業データの多くのアプリケーションのためのソフトウェアベースのテレメトリ/デバッギングソリューションの有用性を著しく低減させる。
【0005】
ソフトウェアベースのソリューションよりも低いレベルで、すなわち、ファームウェア又はハードウェアに実装されるいくつかのリモートデバッギングソリューションがある。しかしながら、これらのソリューションは、一般に、作業データの事前定義されたセットを収集し、ユーザは、ターゲットデバイスから収集される作業データの特定の所望のポイントを指定することができない。したがって、必要な作業データが、そのようなデバッギングソリューションによって収集された事前定義されたデータセットの一部でない場合、開発者は、必要な作業データを集めるために異なる技術を使用する必要があり得る。また、これらのソリューションは、一般に、ファームウェア問題点のトラブルシューティングを助けるためのファームウェア更新を容易にすることができない。
【0006】
また、ファームウェアレベルで実装されるデバッギングソリューションは、一般に、ターゲットコンピューティングデバイスの1つ以上のサブシステムが完全に機能している(完全に機能している中央処理装置等)と仮定するか、又は、コンピューティングデバイスが、デバイスのための作業データを集めることができるようになる前に初期化シーケンスの少なくとも一部を完了することを必要とする。したがって、これらのソリューションは、コンピューティングデバイスのブート前の段階の少なくとも一部の間に機能することができない。これは、必要とされる作業データの目的が初期化シーケンスの初期に発生するエラーをトラブルシューティングすることである場合に、重大な欠点となり得る。また、いくつかのそのようなソリューションは、後のレビューのために作業データを記憶することを可能にしない。
【0007】
コンピューティングデバイスのブート前の段階の間に作業データを収集するための1つの技術は、ターゲットデバイスの作業データへのアクセスを有する外部ハードウェアを介して情報を収集することである。しかしながら、作業データは、外部ハードウェアによって受動的に収集され、リモートの関係者によって制御可能ではない。更に、このシステムは、特定の作業データを対象とすることができない。代わりに、外部ハードウェアは、取り付けられたターゲットデバイスから作業データの事前定義されたセットを収集する。また、この技術は、ターゲットシステムのファームウェアのトラブルシューティングをするために必要とされるファームウェア更新のリモートの適用を可能にしない。
【0008】
したがって、ハードウェア非依存であり、作業データのターゲット化された収集及び記憶を可能にし、ファームウェア更新の適用を容易にし、ターゲットデバイスのブート前の段階全体の間に機能する、リモートの作業データ収集のためのより良好な手法が必要である。
【0009】
このセクションに記載されているアプローチは、遂行され得るアプローチであるが、必ずしも以前に着想又は遂行されたアプローチではない。したがって、別段の指示がない限り、このセクションに記載されたアプローチの何れも、単にこのセクションに含まれることによって、先行技術として適格であると仮定すべきではない。更に、このセクションに記載されたアプローチの何れも、単にこのセクションに含まれることによって、よく理解され、日常的又は従来的であると仮定すべきではない。
【0010】
実施形態は、添付の図面において限定としてではなく例として示され、同様の符号は同様の要素を指す。
【図面の簡単な説明】
【0011】
図1】例示的なコンピューティングデバイスを示すブロック図である。
図2】コンピューティングデバイスのためのターゲット化された作業データを、構成情報に基づいてセキュアに集めて記憶するためのフローチャートである。
図3】構成情報に基づいてターゲットデバイスのためのターゲット化された作業データをセキュアに集めて記憶する例示的な実装のためのより詳細なフローチャートである。
図4】特定の作業データをターゲットとするための例示的な構成データを示す図である。
図5】ファームウェア更新情報を受け入れ、ファームウェア更新情報を適用してコンピューティングデバイスのファームウェアを更新することによってアクティブデバッグを実施するためのフローチャートである。
【発明を実施するための形態】
【0012】
以下の説明では、説明の目的のために、説明される技術の十分な理解を提供するために、多くの特定の詳細が記載される。しかしながら、本明細書で説明する技術がこれらの特定の詳細なしに実施され得ることは、当業者に明らかである。他の例では、本明細書で説明する技術を不必要に不明瞭にすることを避けるために、周知の構造及びデバイスがブロック図で示されている。
【0013】
(概要)
本明細書で説明する技術は、コンピューティングデバイスの任意のサブシステムからの作業データのターゲット化した収集及び記憶を可能にする、セキュアなデータレコーダを提供する。より具体的には、セキュアな実行環境内で機能するデータレコーダが、高レベル作業データ及び低レベル作業データ(ソフトウェアレベル、ファームウェアレベル及びレジスタ転送レベル(Register-Transfer Level、RTL)のデータを含む)の両方を構成可能に集めて記憶するためのプロトコルが提供される。本明細書で説明するセキュアなデータレコーダフレームワークは、フレームワークが、デバイスが任意の種類のソフトウェアを実行する任意の種類のハードウェア上のセキュアな実行環境内で実装され得るという点で、ハードウェア非依存且つソフトウェア非依存である。
【0014】
本明細書で説明する技術によるデータレコーダは、記憶された構成データに基づいてコンピューティングデバイスから作業データを集めて記憶する。より具体的には、構成データは、作業データを集める元であるデバイス上の1つ以上のメモリ及び/又は記憶場所を示す。構成データは、集められた作業データをデータレコーダが記憶する1つ以上の記憶場所を更に含み、記憶場所は、オンデバイス記憶装置、ローカルにアクセス可能な記憶装置、及び/又は、ネットワークを介してアクセス可能な記憶装置を示し得る。したがって、構成データを調整することによって、ユーザは、所定の状況の特定の必要性に従って作業データを集めて記憶するようにデータレコーダに指示することができる。
【0015】
コンピューティングデバイス上のセキュアな実行環境は、基本入出力システム(Basic Input/Output System、BIOS)更新、サブシステムドライバソフトウェア更新、及び、コンピューティングデバイスの初期化シーケンスの実施等の慎重を要する動作を実施するために使用される。したがって、コンピューティングデバイスのセキュアな実行環境内で実行されるアプリケーション及びハードウェアは、デバイスの全てのサブシステムへのアクセスを有し、したがって、データレコーダは、デバイスの全てのサブシステムからデータを収集することができる。更に、ターゲットデバイスのセキュアな実行環境を使用して作業データを集めて記憶することにより、慎重を要する可能性のある作業データをセキュアに集めることが保証される。また、コンピューティングデバイスの開始シーケンスがセキュアな実行環境内で実施されるので、本明細書で説明する技術は、デバイスのブート前の段階の間の任意の時点で作業データを集めることができる。
【0016】
データレコーダは、セキュアな実行環境において実装されるので、データレコーダは、ターゲットコンピューティングデバイスに対するセキュリティ承認又はデバッグ特権を必要とすることなくファームウェア更新のリモートの適用を可能にすることによって、コンピューティングデバイスのリモートトラブルシューティング(アクティブデバッグ)を容易にすることができる。具体的には、作業データを集めて記憶した後、データレコーダは、ユーザがネットワークを介して新しいファームウェアイメージをデータレコーダにプッシュすることを可能にすることができ、それにより、コンピューティングデバイスのBIOSが新しいファームウェアイメージを使用して更新される。したがって、セキュアなデータレコーダフレームワークの利用は、ローカルテスト環境における問題点の再現を必要とせず、且つ、システムへの如何なる物理的アクセスも必要とせずに、リモートシステムをデバッグすることを可能にする。
【0017】
更に、データレコーダは、コンピューティングデバイスの特定のサブシステムからテレメトリ情報を集めるために、サービスとしてのデバッグ(Debug as a Service、DaaS)に関連して使用されてもよく、テレメトリ情報は、サブシステムの性能を改善するために使用されてもよい。DaaS機能のための構成データは、ターゲットサブシステムに固有であってもよく、ターゲットサブシステムのために作業データが集められる状況を示す。構成データに基づくDaaSは、ハードウェアプロバイダが作業データを集めることを経時的に可能にし、特定のハードウェア構成及び/又は特定のソフトウェア構成の機能に役立つ。
【0018】
(アーキテクチャ)
図1は、本明細書で説明する技術を実装する例示的なコンピューティングデバイス、すなわち、システムオンチップ(System on a Chip、SoC)100を示すブロック図である。実施形態を、SoC100のコンテキストにおいて本明細書で説明する。それにもかかわらず、本明細書で説明する技術は、任意の種類の特定用途向け集積回路(ASIC)を含む、任意の種類のコンピューティングデバイスに適用可能である。SoC100は、ルートオブトラスト専用セキュリティプロセッサ110と、中央処理装置(CPU)120と、メモリ130と、入力/出力(I/O)サブシステム140と、永続記憶デバイス150と、通信インターフェース170と、グラフィックス処装置(GPU)160、カメラ(図1に示されていない)等の周辺サブシステムと、を含むサブシステムの例示的なセットを備える集積回路である。CPU120は、セキュアレジスタ116とは異なるレジスタ124を利用する、プロセス122を含む1つ以上のプロセスを実行する。一実施形態によれば、CPU120は、SoC100のためのOSを実行する。
【0019】
一実施形態によれば、SoC100の1つ以上のサブシステムは、サブシステムを管理する1つ以上のそれぞれのマイクロコントローラを含む。図1に示すように、マイクロコントローラ(MC)110A~170Aは、SoC100の関連するサブシステムをそれぞれ制御する。これらのマイクロコントローラは、SoC100にインストールされたドライバによって実装され、ドライバは、関連するサブシステムを制御するソフトウェア又はファームウェアである。SoC100は、図1に示されていない関連するマイクロコントローラを有する他のサブシステムを含んでもよい。
【0020】
SoC100は、セキュア又は「信頼できる」実行環境(Secure Execution Environment、SEE)112を実装する、CPU120とは別のセキュリティプロセッサ110を備える。図1によって示される実施形態では、セキュアな実行環境は、専用セキュリティプロセッサ110(又は「ルートオブトラスト」ハードウェア)によって実装される。別の実施形態によれば、セキュアな実行環境(例えば、SEE112)は、非セキュアな実行環境も実装するプロセッサによって実装され、セキュアな実行環境は、セキュリティペリメータ、暗号化、ソフトウェア/ファームウェア更新の認証等の1つ以上のセキュリティ対策に基づいてセキュアであることが保証される。本明細書の例は、SEE112が専用セキュリティプロセッサ110において実装される(及び専用セキュリティプロセッサ110によって使用される)ことを説明する。しかしながら、実施形態は、専用セキュリティプロセッサによって実装されることに限定されず、セキュアな実行環境及び非セキュアな実行環境の両方を維持するプロセッサによって実装されてもよい。
【0021】
例示すると、CPUは、セキュアな実行環境と非セキュアな実行環境の両方を維持し、CPUは、非セキュアな実行環境内でOSを実行する。この例では、CPUは、2つの実行状態、すなわち、SEEが実装されるセキュア実行状態と、非セキュア(又は「リッチ」)な実行環境が実装される非セキュア実行状態とを有する。
【0022】
セキュアな実行環境は、セキュアメモリ及びセキュアレジスタを使用する任意のプロセス又はハードウェアを含む。レジスタは、1つ以上の特定のプロセッサのために予約され、それによって使用されるメモリ場所である。セキュアな実行環境の一部であるプロセス及びハードウェアは、本明細書では「セキュアアクタ(secure actors)」と呼ばれる。一実施形態によれば、セキュアアクタによって実施される動作を実行する命令は、動作が実施される前に認証される。所定のコンピューティングデバイス上のセキュアな実行環境内でセキュアアクタによって実施されている動作、及び、そのような動作によって生成されているデータには、セキュアな実行環境の外部で動作する何れのアクタ(プロセス又はハードウェア)も、アクセスすることも変更することもできない。セキュアな実行環境の例示的な実施形態は、AMDプラットフォームセキュリティプロセッサ(Platform Security Processor、PSP)、インテルソフトウェアガードエクステンション(Software Guard Extensions、SGX)、アップルセキュアエンクレーブプロセッサ(Secure Enclave Processor、SEP)等を含む。
【0023】
SEE112は、セキュアレジスタ116及びセキュアメモリ132を利用する1つ以上のセキュアアクタを含み、セキュアメモリ132は、メモリ130の一部又は全てを含んでもよい。セキュアレジスタ及びメモリは、例えば、レジスタ及び/又はメモリが暗号化されているため、又は、レジスタ及び/又はメモリがSEE112内からセキュアアクタによってのみアクセス可能であるため等のように、セキュアアクタのみがセキュアレジスタ及びメモリ内のデータにアクセスできるように保護される。
【0024】
SEE112内で動作するセキュアアクタは、レジスタ124、メモリ130、ASICのハードウェアレジスタ等のように、他のサブシステムによって管理されるハードウェアレジスタ及びメモリを含む、SoC100上の任意の作業データにアクセスすることができる。SEE112内のセキュアアクタは、SoC100内のアクセスを制限し、セキュリティを保証するセキュリティポリシーに基づいて、SoC100内の作業データにアクセスする。
【0025】
(セキュアデータレコーダ)
本明細書で説明する技術は、SoC100の任意のサブシステムのための作業データの収集及び送信を可能にするセキュアデータレコーダフレームワークを提供する。本明細書で説明する技術を実装するデータレコーダ114は、SEE112内で動作する。したがって、データレコーダ114は、実装に応じて異なり得る様々な手法を使用して、セキュリティプロセッサ110上で動作する1つ以上のセキュアアクタによって実装され得る。例えば、データレコーダ114は、本明細書で説明する機能を提供するために、ファームウェア、ソフトウェア及び/又はハードウェアで実装されてもよい。作業データは、ソフトウェアレベル、ファームウェアレベル及びレジスタ転送レベル(RTL)を含む様々なレベルで収集可能である。
【0026】
データレコーダ114がSEE112内に実装されるので、作業データは、SoC100が、ブート前の段階の任意の時点を含む、セキュアな実行環境の機能を可能にする任意の状態にある間に収集及び送信され得る。より具体的には、SoC100等のコンピューティングデバイスがシャットダウンする場合に、CPU120を含むSoC100のサブシステムはリセット状態に入る。コンピューティングデバイスは、ハードウェア(「ハード」リセット)を介して又はソフトウェア(「ソフト」リセット)を介してシャットダウンされ得る。
【0027】
コンピューティングデバイスがブート又はリブートされた直後、コンピューティングデバイスのサブシステムは、依然としてリセット状態にある。コンピューティングデバイスのハードウェアは、まず、セキュリティプロセッサ110をリセットから外し、セキュリティプロセッサ110は、セキュアアクタを使用して、BIOS内の初期化(又は「ブート」)シーケンスを実行する。例えば、セキュリティプロセッサ110は、まず、BIOSがセキュアメモリ132にロードされるようにし、BIOSファームウェア命令を認証する。また、BIOSは、SoC100サブシステムのためのファームウェアドライバを含んでもよい。BIOSを認証した後、セキュリティプロセッサ110は、認証されたBIOSファームウェアを実行し、これにより、SoC100の様々なサブシステムがリセット状態から解放される。
【0028】
メモリ130及びCPU120がリセット状態から解放された後、オペレーティングシステムソフトウェアを実装する命令がメモリ130にロードされ、CPU120がオペレーティングシステムソフトウェアを実行する。SoC100は、オペレーティングシステムソフトウェアが完全に機能する場合に完全にブートアップされる。コンピューティングデバイスのブート前の段階は、(a)セキュリティプロセッサ(すなわち、SEEを維持するプロセッサ)がリセット状態から解放されることと、(b)CPUがリセット状態から解放された後にアイドル状態に達することと、の間の時間であり、このアイドル状態は、通常、オペレーティングシステムの初期化後に生じる。ブート前の段階の間、ソフトウェア(BIOSにおいて符号化された動作以外)は、デバイスによって実行されることができない。
【0029】
時々、デバッギングを必要とするシステムは、ブートシーケンス全体を通して実行することができず、これは、システムがブート前の段階から出ることを妨げる。例えば、SoC100のオペレーティングシステム又はファームウェアの更新が実施される。更新を実施した後、更新に関する1つ以上の問題を理由に、SoC100は、デバイスサブシステムを完全に初期化するためのブートシーケンスを完了することができない。そのような場合、ブート前の段階の間にコンピューティングデバイスに関わる問題点をデバッグできることが重要である。
【0030】
(アクティブデバッグのためのデータ収集)
図2は、コンピューティングデバイスのためのターゲット化された作業データを、構成情報に基づいてセキュアに集めて記憶するためのフローチャート200を示す。図2に示されるプロセスは、初期化シーケンスの任意の段階において及び任意のデータレベルにおいて、コンピューティングデバイスのための作業データをどのように集めて記憶するかという技術的問題に対処する。技術的ソリューションはセキュアな実行環境を利用し、セキュアな実行環境は、デバイス上の他のサブシステムを初期化するためにも使用され、オンデマンドで開始されるデータレコーダを実行するためにデバイスの全てのサブシステムのためのデータへのアクセスを有する。
【0031】
フローチャート200のステップ202において、割込みイベントが検出される。例えば、データレコーダ114は、SoC100のサブシステムによって引き起こされる割込み信号、又は、セキュリティプロセッサエラーに対処するためにセキュリティプロセッサ110によって開始される割込みプロトコルのうち1つである割込みイベントを検出する。SoC100のサブシステムによって引き起こされる割込み信号は、(アクティブデバッグと同様に)サブシステムがエラーを検出することに基づいて開始され得る。そのような割込み信号は、本明細書では「アクティブデバッグ型」割込み信号と呼ばれる。更に、SoC100のサブシステムによって引き起こされる割込み信号は、(DaaSと同様に)サブシステム固有の構成データにおいて定義されるデータ集め条件の検出に基づいて開始され得る。そのような割込み信号は、本明細書では「DaaS型」割込み信号と呼ばれる。一実施形態によれば、データ集め条件の検出は、プロセッサ110によって実施され得る。この実施形態では、データ集め条件の検出に応じて、プロセッサ110は、セキュアなデータ集め動作を開始するために割込みプロトコルを開始する。
【0032】
一実施形態によれば、データレコーダ114は、アクティブデバッグ型割込み信号をDaaS型割込み信号と区別する。例えば、セキュリティプロセッサ110は、割込み信号がプロセッサ110に到着する共有割込みライン(shared interrupt line)を実装する。この例では、共有割込みラインは、メモリアドレス又はレジスタに関連付けられる。データ収集割込み信号を引き起こすことに関連して、データ収集割込み信号を引き起こすサブシステムは、割込み信号がデータ収集信号であるかどうか、及び/又は、信号がDaaS型割込み信号又はアクティブデバッグ型割込み信号であるかどうかを示すために、関連するメモリアドレス又はレジスタに情報(クッキー等)を書き込む。別の例として、セキュリティプロセッサ110は、割込み信号がプロセッサ110に到着する1つ以上の専用データ収集割込みラインを実装する。更に説明すると、第1の専用データ収集割込みラインは、DaaS型割込み信号をプロセッサ110に送信し、第2の専用データ収集割込みラインは、アクティブデバッグ型割込み信号をプロセッサ110に送信する。
【0033】
フローチャート200は、アクティブデバッグのコンテキストにおいて説明される。しかしながら、フローチャート200に示される技術は、以下で更に詳細に説明されるように、DaaSにも適用可能である。
【0034】
アクティブデバッグの場合、任意の所定のサブシステムのマイクロコントローラは、関連するサブシステムが「不良」状態に入っているか、又は、何らかの種類のエラーによって引き起こされた状態に入っているかを検出することができる。例示すると、MC170Aは、例えば、通信インターフェース170のウォッチドッグタイマが経過したこと、又は、システム管理ユニットが通信インターフェース170のエラーを検出したことに基づいて、通信インターフェース170がエラーを経験した(又は「不良」状態に入った)ことを検出する。エラーの検出に基づいて、MC170Aは、自動的に割込み信号をセキュリティプロセッサ110に送り、作業データを記録する必要があることをプロセッサに知らせる。
【0035】
特定の実施形態を更に説明するために、図3は、構成情報に基づいてターゲットデバイスのためのターゲット化された作業データをセキュアに集めて記憶する例示的な実装のためのより詳細なフローチャート300を示す。フローチャート302のステップ300Aにおいて、SoC100の例示的なサブシステムのマイクロコントローラ(通信インターフェース170のMC170A)は、データ集め型割込み信号をセキュリティプロセッサ110に送る。通信インターフェース170は、割込み信号のソースとして示されているが、SoC100の任意のサブシステムが、本明細書で説明する技術による割込み信号のソースとなり得る。
【0036】
更に、ステップ302Bに示すように、データレコーダ114の実行は、セキュリティプロセッサ110自体によるアクションを含む割込み信号に基づいて開始されてもよい。例えば、セキュリティプロセッサ110のシステム管理ユニットは、セキュリティプロセッサ110が「不良」状態に入ったことを判定し、セキュリティプロセッサ110から発信される例示的な割込み信号である自己割込みプロトコルを開始させる。
【0037】
(構成データ)
割込み信号を検出したことに応じて、セキュリティプロセッサ110は、SEE112において、データレコーダ114を使用して、フローチャート200のステップ204~206を含むデータ集め動作を実施する。具体的には、ステップ204において、構成データに基づいて、1つ以上のデータ収集場所からデータが集められる。一実施形態によれば、1つ以上のデータ収集場所は、構成データに基づいて識別され、1つ以上のデータ収集場所は、ハードウェアレジスタ又はメモリ場所のうち1つ以上を含む。例えば、セキュリティプロセッサ110は、MC170Aから割込み信号の受信したことに応じて、データレコーダ114を開始する。開始されると、データレコーダ114は、自動的にデータ集め動作を開始する。
【0038】
フローチャート300のコンテキストにおいて例示すると、ステップ304において、「データ集め」型であるMC170Aからの例示的な割込み信号に基づいて、セキュリティプロセッサ110は、例えば、データレコーダ114のための命令をロード及び実行することによって、データレコーダ114(Data Recorder、「DR」)を自動的に開始する。更に、ステップ306において、セキュリティプロセッサ110は、セキュリティプロセッサ110によって現在実行されている任意のスレッドの実行を停止する。ステップ306は、割込み信号を検出したこと応じてセキュリティプロセッサ110によって実施されてもよく、又は、開始された後にデータレコーダ114によって実施されてもよい。
【0039】
ステップ308において、データレコーダ114は、構成データ136を読み取る。一実施形態によれば、データレコーダ114は、既知の場所から構成データ136を読み取る。別の実施形態によれば、アクティブデバッグ型割込み信号(すなわち、サブシステムが「不良」状態に入ることから生じる)に関連付けられたメモリ場所又はレジスタにおける情報は、データ集め動作に使用される構成データの場所を識別し得る。割込み信号に関連付けられた情報が、データ集め動作に使用される構成データの場所を識別しない場合、データレコーダ114は、デフォルト場所にある構成データ136を読み取る。
【0040】
一実施形態によれば、構成データ136のデフォルト場所は、セキュアメモリ132にロードされたBIOS内にある。一実施形態によれば、構成データ136は、暗号化されたデータ(例えば、署名されたバイナリデータ)であり、BIOSに元々含まれていた構成ファイルであってもよいし、システムをデバッグしている開発者からのBIOS更新に含まれていたファイルであってもよい。それにもかかわらず、構成データ136のデフォルト場所は、SEE112のセキュアアクタがアクセス可能な任意のメモリ内にあってよい。
【0041】
一実施形態によれば、データレコーダ114が、バイナリデータとして記憶された構成データ136にアクセスする場合、データレコーダ114は、バイナリデータの署名を検証し、次いで、データを解読する。解読されたコンテンツは、セキュアメモリ132にコピーされる。一実施形態によれば、構成データ136のバイナリファイルフォーマットは、入力及びフィールド検証を扱うスクリプトを使用して、例えばセキュリティプロセッサ110によって実行されるセキュリティツールによって生成される。構成データ136は、セキュリティプロセッサ110上で実行される1つ以上の命令によって使用される入力として働く。一実施形態によれば、構成データ136は、データがデータレコーダ114によって、例えばシリアル周辺インターフェース(Serial Peripheral Interface、SPI)-ROMにロードされる場合に、セキュリティプロセッサ110によって検証される。
【0042】
構成データ136は、データレコーダ114が作業データを集める1つ以上の場所を示し、この場所は、SoC100上にあってもよいし、セキュリティプロセッサ110にアクセス可能な異なるマシン上にあってもよい。構成データ136は、XML等のユーザ可読ファイルフォーマットを含む任意のフォーマットであってもよい。
【0043】
構成データ136に基づいて、データレコーダ114は、所定のデータ集め動作のために作業データを集める元であるターゲットデータ場所を識別する。一実施形態によれば、1つ以上のターゲットデータ場所は、1つ以上のハードウェアレジスタ及び/又は1つ以上のメモリ場所の場所又は識別を含む。メモリ場所は、データレコーダ114によってアクセス可能なセキュアメモリ又は非セキュアメモリ内の場所を指定し得る。ハードウェアレジスタは、SoC100上のプロセッサによって使用されるレジスタ(セキュアレジスタ116及びレジスタ124のうち1つ等)であってもよいし、RTLレベルでデータを保持する集積回路(ASIC等)の一部であるレジスタであってもよい。具体的には、ハードウェア回路は、順序論理のためのレジスタと、ハードウェア内に実装された組み合わせ論理と、を備える。RTLデータは、ハードウェア回路の機能によって引き起こされる、ハードウェアレジスタに記録されたフロー信号を含む。RTLデータはソフトウェアによってアクセス可能ではなく、これは、このレベルのデータがソフトウェア実装デバッギング技術を介して利用可能ではないことを意味する。
【0044】
構成データ136は、何れのデータがキャプチャされる必要があるかをレコーダが知るように、入力をデータレコーダ114に渡すために使用される。この入力は、様々な方法でデータレコーダ114によってフォーマットされ、次いで、構文解析され得る。構成データ136において識別される、集められる作業データは、一般的であってもよいし、割込み信号のソースに固有であってもよい。例えば、構成データ136は、割込み信号のソースに関係なく、記録する作業データの位置を識別する。作業データの場所は、SoC100の1つ以上のサブシステムからのものであり得る。この例では、データレコーダ114は、構成データ136において識別された場所の全てにおいて作業データを集める。別の例として、構成データ136は、記録する作業データの1つ以上のサブシステム固有のセットの場所を識別する。この例では、データレコーダ114は、割込み信号を発信したサブシステムに関連付けられた構成データ136内のデータ場所のセットにおける作業データを集める。
【0045】
例示すると、図4は、割込み信号のソースに関係なく記録されるデータとサブシステム固有データの両方を示す例示的な構成データ136を示す。図4の構成データ136の構造は例示的なものであり、構成データ136は、実装に応じて異なって構造化されてもよい。図4の例では、構成データ136は、複数のセクション、すなわち、マスタテーブルセクション400、サブテーブルセクション410及びターゲット記憶場所データ420を含む。一実施形態によれば、データ集め動作が開始されると、構成データ136のマスタテーブル400及びサブテーブル410において識別される作業データの全てが、データレコーダ114によって集められる。別の実施形態によれば、データレコーダ114は、常に、マスタテーブル400において識別される作業データを集め、次いで、例えば、1つ以上のサブテーブルがデータ収集割込み信号のソースに関連付けられていること基づいて、(サブテーブル410の)1つ以上のサブテーブルにおいて識別される作業データを集める。
【0046】
図4の例示的な構成データ136では、マスタテーブルセクション400は、割込み信号のソースサブシステムに関係なく記録されるデータを示す。この例では、マスタテーブルセクション400は、以下のフィールドを含み、これらのフィールドは、一実施形態によれば、示されるように使用される。
・SoC100に固有のラップ鍵(wrapping key)を導出するための鍵導出関数(key derivation function)においてシード(パラメータ)として使用されるASICシリアル番号。
・構成データバイナリコンテンツを暗号化するために使用される鍵であるラップされた暗号化鍵(wrapped encryption key)。ラップされた暗号化鍵は、鍵導出関数から導出された鍵を使用してアンラップされる。
・構成データ内に存在する署名を検証するために使用される鍵であるラップされた署名鍵(wrapped signing key)。ラップされた署名鍵は、鍵導出関数から導出された鍵を使用してアンラップされる。
・構成データバイナリが生成される場合にランダム値で更新される一意の識別子フィールド。この一意の識別子値は、データレコーダ114によって集められたデータに含まれる。この一意の識別子は、例えばネットワーク記憶デバイスからデータレコーダ114によって集められた作業データにアクセスするためにユーザによって使用される。
・マスタテーブル400のフォーマットに関連付けられたバージョン番号であるテーブルバージョン。この番号に基づいて、データレコーダ114はマスタテーブル400を解釈することができる。
・Num IP及び合計サイズは、サブテーブル410の構文解析を支援する数である。
【0047】
この例示的な構成データでは、サブテーブルセクション410は、サブシステム固有サブテーブル412、414を含む。サブテーブルセクション410内のサブテーブルは、サブシステムのデータ集め場所を識別するためのサブシステム固有の詳細を含む。サブテーブルは、一般に、データが集められる必要がある特定のサブシステムの詳細を含む。したがって、複数のサブシステムのデータを集める必要がある場合、複数のサブテーブルが存在することになる。例えば、構成データ136内のサブテーブル410(又はマスタテーブル400)内で識別される作業データは、CPUレジスタ、汎用共有レジスタ、I/Oメモリ、DRAM/SRAMメモリ又はグラフィックス/ビデオメモリ等のうち1つ以上に配置され得る。各サブテーブルは、集められる必要がある異なるタイプのデータを示す1つ以上のフィールドを有し得る。例えば、データは、CPUレジスタ若しくは汎用共有レジスタから、又は、I/Oメモリ、DRAM/SRAMメモリ若しくはグラフィックス/ビデオメモリからのものであり得る。図4において、SMNはI/Oメモリに対応し、CRUレジスタは汎用レジスタである。
【0048】
(データ収集及び記憶)
上記で示したように、フローチャート200のステップ204において、構成データに基づいて、1つ以上のデータ収集場所からデータが集められる。例えば、フローチャート300のステップ310に示すように、データレコーダ114は、構成データ136から識別されたデータ場所からデータを読み出す。例えば、データレコーダ114は、構成データ136のサブテーブルセクション410内のサブテーブルの何れも通信インターフェース170に固有でないと判定する。したがって、データレコーダ114は、構成データのマスタテーブルセクション400において識別されたSoC100上の場所のセットから作業データを集める。
【0049】
フローチャート200のステップ206において、集められたデータは、1つ以上のターゲット記憶場所に記憶される。例えば、データレコーダ114は、構成データ136において識別された1つ以上のターゲット記憶場所に基づいて、集められた作業データをセキュアメモリ132に記憶する。1つ以上のターゲット記憶場所の各ターゲット記憶場所は、オンデバイス記憶装置、ローカルにアクセス可能な記憶装置、及び/又は、ネットワークを介してアクセス可能な記憶装置のうち何れかを識別する。例えば、図4の例示的な構成データ136のターゲット記憶場所データ420は、所定のデータ集め動作のための1つ以上のターゲット記憶場所を示す。
【0050】
更に説明すると、フローチャート300のステップ312において、データレコーダ114は、例えば、集められた作業データのハッシュに基づいて、集められた作業データのための一意の識別子を生成する。ステップ314において、一意の識別子を含むヘッダも、集められた作業データに対して生成される。
【0051】
ステップ316において、集められた作業データが暗号化される。例えば、集められた作業データ及びヘッダは、構成データ136のマスタテーブルセクション400内の暗号化情報に基づいて、セキュリティプロセッサ110によって暗号化される。別の例として、ヘッダは、暗号化されず、暗号化されたワーキングデータとともに暗号化されずに記憶される。
【0052】
ステップ318において、暗号化されたデータは、ターゲット記憶場所データ420によって示されるように、ローカル/外部記憶装置、オンチップ記憶装置、又は、ネットワークベースの記憶デバイスのうち1つ以上に保存される。ステップ320は、例えば構成データ136に基づいて、集められた作業データを何処に記憶するかの決定を示す。
【0053】
いくつかのASICは、ルートオブトラストハードウェアによってアクセスすることができるオンチップ記憶装置を有する。例えば、構成データ136に基づいて、データレコーダ114は、収集されたデータを、SoC100上にある記憶装置であるセキュアメモリ132に記憶する。別の例として、データレコーダ114は、収集されたデータを、暗号化されたデータとして、記憶デバイス150の専用の暗号化されたパーティション内に記憶する。同様に、構成データ136に基づいて、データレコーダ114は、集められた作業データを、例えば、USBポートを介してSoC100に通信可能に接続されたフラッシュドライブである記憶デバイス186に記憶してもよい。
【0054】
構成ファイルは、集められた作業データがネットワーク182を介してアクセス可能なリモート記憶デバイス184に記憶されることを示すことができる。ネットワーク182を介してデータを記憶するために、データレコーダ114は、記憶デバイス184へのセキュアな接続を確立する。一実施形態によれば、記憶デバイス184を識別するターゲット記憶場所情報は、記憶デバイス184のネットワーク場所に接続するのに必要なデータを含む。セキュリティプロセッサ110のファームウェアは、オペレーティングシステム機能を必要とすることなくセキュアなネットワーク接続を確立するように構成されているので、このセキュアな接続は、コンピューティングデバイスのブート前の段階の間に確立され得る(通信インターフェース170がブートシーケンス中に初期化されている限り)。接続が確立されると、接続は、データを記憶デバイス184にセキュアに送信するために使用される。
【0055】
ステップ322において、ファームウェアステータスが更新される。例えば、セキュリティプロセッサ110はステータスレジスタを含み、このステータスレジスタは、データレコーダ114がステップ304で開始されると、データ集めが開始されたことを示す第1の所定の値に更新される。構成データ136からの命令に基づいて集められた作業データの記憶が完了すると、セキュリティプロセッサ110のステータスレジスタは、データ集めの完了を示すように再び更新される。ステータスレジスタの更新された値は、データ集め動作の完了を示すために、第1の所定の値とは異なる任意の所定の値であってもよい。
【0056】
ユーザは、上述したように構成データ136に含まれる集められた作業データのためのASICシリアル番号及び一意の識別子を提供することによって、所望のデータを取り出すことができる。ネットワークベースの記憶装置では、日付及び時間情報が、データを区別するための追加パラメータとして働く。一実施形態によれば、後処理は、承認されたユーザによってのみ、且つ、キャプチャされたデータが改ざんされていない場合にのみ行うことができる。
【0057】
(アクティブデバッグ)
一実施形態によれば、所定のデータ集め動作のための作業データを集めて記憶した後、データレコーダ114は、新しいファームウェアイメージを含む入力を待つ。一実施形態によれば、データレコーダ114は、アクティブデバッグに関連付けられた特定の種類の割込み信号に対する新しいファームウェア入力のみを受け入れる。割込み信号に関連付けられた情報は、以下で更に詳細に説明されるDaaSベースの割込み信号からそのような割込み信号を区別するために使用され得る。例えば、構成データ136は、ファームウェア更新が予想されるかどうかを示すブールフィールドを含む。このフィールドは、デフォルトで真に設定される。
【0058】
新しいファームウェアイメージを含む入力を待っているデータレコーダ114は、開発者が新しいファームウェアイメージをデータレコーダ114にプッシュすることを可能にし、これにより、セキュリティプロセッサが新しいファームウェアイメージをSoC100に適用する。図5は、ファームウェア更新情報を受け入れ、ファームウェア更新情報を適用してコンピューティングデバイスのファームウェアを更新することによってアクティブデバッグを実施するためのフローチャート500を示す。
【0059】
ステップ502において、作業データが解析される。例示すると、SoC100は、通信インターフェース170を用いてエラーを経験し、フローチャート200及び300に関連して上記で説明したように作業データを集める。集められた作業データが記憶デバイス150(オンチップ)に記憶されることを示す構成データ136内のデータに基づいて、データレコーダ114は、判定されたヘッダを使用して、集められた作業データを記憶デバイス150に記憶する。開発者は、構成データ136に記録された一意の識別子に基づいて、記憶デバイス150内のデータを識別する。
【0060】
開発者は、取り出された作業データを解析する。例えば、1つ以上の後処理ツールを使用して、集められた作業データをデバッガ可読データに変換することができる。具体的には、構成データ136は、クラッシュシナリオを再現するために使用することができるデータのセットを識別し、開発者は、集められた作業データを、再現を生成する後処理ツールに入力する。
【0061】
フローチャート500のステップ504において、開発者は、デバイスから集められた作業データに基づいてソリューションを策定する。例えば、作業データに基づいて、開発者は、問題点に対処するためのファームウェア更新、及び/又は、問題点のデバッグを更に支援する作業データの追加のセットの一方又は両方を策定する。例示すると、開発者は、(a)SoC100のファームウェアへの特定の変更が問題を解決し得ること、及び、(b)SoC100の特定のレジスタからの情報及びメモリ130内の特定のメモリ領域からのデータが、解決が失敗した場合にSoC100をデバッグするのに有用であることを判定する。
【0062】
ステップ506において、開発者は新しいファームウェアイメージを構築する。例えば、開発者は、SoC100のための新しいファームウェアイメージにおいて、ステップ504に関連して識別された問題点を解決し得るファームウェアへの特定の変更と、SoC100の識別されたレジスタの場所及びメモリ130内の識別されたメモリ領域を示す新しい構成データ136との両方を符号化する。
【0063】
一実施形態によれば、新しいファームウェア情報は、データレコーダ114によって、ネットワークを介して又はローカル接続を介して受け入れられ得る。したがって、ステップ508で、開発者は、開発者がデバイスへのローカルアクセスを有するかどうかに応じて、ファームウェアイメージをデータレコーダ114にプッシュするために何れの展開方法を使用するかを判定する。開発者がSoC100に対してローカルである場合、ステップ512において、開発者は、例えばUSBポートを通じて、例えばSoC100に通信可能に連結された記憶デバイス186を介して、新しいファームウェアイメージをローカルに展開する。
【0064】
開発者がSoC100からリモートにある場合、ステップ510において、新しいファームウェアイメージを有するネットワークパケットが準備され、ネットワーク182を介して送られる。一実施形態によれば、ネットワークパケットは、クライアントデバイスから、ネットワーク182上のセキュアなネットワーク接続を介してSoC100に送られる。
【0065】
一実施形態によれば、ネットワーク182を介して送られる新しいファームウェアイメージは、ファームウェアイメージを認証するために、SoC100内の一時的な場所(例えば、セキュアメモリ132)に保存される。例えば、セキュリティプロセッサ110は、新しいファームウェアイメージのタイプをチェックし、タイプは、ファームウェアが何れのサブシステムのために実行されるように設計されているか(例えば、電力管理ファームウェア、セキュリティファームウェア、ビデオファームウェア等)を示す。既存のファームウェアが破損している場合、又は、新しいファームウェアのサイズが既存のファームウェアのサイズ以下である場合、新しいファームウェアがSoC100にインストールされる。そうでない場合、セキュリティプロセッサ110はエラーをスローし、ファームウェア更新の別の試みのために新しいファームウェアイメージが生成されなければならない。
【0066】
ステップ514において、データレコーダ114は、新しいファームウェアイメージに基づいてBIOSを更新する。この更新は、開発者によって準備された新しい構成データ136、及び、問題に対する可能性のある解決を導入する。ステップ516において、セキュリティプロセッサ110は、SoC100をリブートさせ、これは、コールドブート又はウォームリセットであり得る。デバイスをリブートすると、SoC100をブートしている間に新たに更新されたファームウェアイメージがロードされるという点で、新しいファームウェアのインストールが完了する。
【0067】
リブート後、ステップ518において、全ての問題点が新しいファームウェアによって解決されていない場合、ステップ520において、フローチャート300(図3)のステップ302~304に示すように、1つ以上の残りの問題点により、セキュリティプロセッサ110がデータレコーダ114を再び実行する。データレコーダ114によって収集されたその後の作業データは、ファームウェアイメージ内の新しい構成データに基づく。しかしながら、新しいファームウェアをインストールした後に全ての問題点が解決された場合、プロセスはステップ522において終了する。
【0068】
(サービスとしてのデバッグ)
サブシステムの性能を改善するために使用することができる、デバイスの特定のサブシステムから経時的にテレメトリ情報を集めることは、非常に有用であり得る。例えば、いくつかのグラフィックドライバは、3Dグラフィックスシステム、コンピュータ支援設計システム及びゲームシステム等の特定のシステムのためのハイエンドグラフィックス能力を提供する。そのようなドライバの性能の改善は、クライアント及びハードウェアプロバイダの両方に実用上及びビジネス上の利点を提供する。
【0069】
本明細書で説明する構成ベースのデータ集め技術を使用して、DaaSは、ハードウェアプロバイダが、データ集めを特定の構成及び/又は特定のソフトウェア構成を対象とすることを可能にする。DaaS技術を用いて収集されたデータは、特定のネットワークベースの記憶デバイスに送られ、ビッグデータデータベースとして扱われることができ、解析がデータベース上で実施されて、特定のGPUバージョンのグラフィックスドライバ等の様々なデバイスサブシステム上で行われる更新を識別する。
【0070】
DaaSでは、データレコーダ114は、サブシステムエラーなしに開始される。具体的には、DaaSを実装するサブシステムのマイクロコントローラは、何れのデータをキャプチャすべきか、及び、サブシステム用のデータレコーダ114の実行をいつ開始すべきかを定義するサブシステム固有の構成データに関連付けられる。サブシステム固有の構成データにより、開発者は、要求に応じていつでもデータ集めを開始することができる。一実施形態によれば、サブシステム固有の構成ファイルは、サブシステムを制御するそれぞれのマイクロコントローラのプロダクションスタックに記憶される。例えば、GPU160のためのビデオドライバのプロダクションスタックに含まれる構成ファイルは、集められた作業データがGPU160上の負荷、及び、GPU160のための電圧、FWバージョン、フレームバッファ、性能カウンタ等を含むべきであることを示す。
【0071】
サブシステム固有の構成ファイルは、ハードウェア構成及び/又はデバイスのユースケースに特有であり得る。例えば、特定のサブシステムは、ユースケース識別子に関連付けられた複数の構成ファイルに関連付けられる。所定のデバイスに関するユースケース情報に基づいて、構成ファイルのうち1つが、アクティブ構成ファイルであるように選択される。
【0072】
一実施形態によれば、DaaSを実装するサブシステムのマイクロコントローラは、サブシステム固有の構成ファイルから集められる特定のタイプの作業データを識別する情報を、サブテーブルとして構成データ136に追加させる。この実施形態では、SoC100のサブシステム(セキュリティプロセッサ110を含む任意のサブシステムであってもよい)によって引き起こされる割込みイベントが検出されると、サブテーブル内のサブシステム固有の情報がデータレコーダ114によって集められる。
【0073】
さらに、サブシステム固有の構成ファイルは、上述したように、データ集め型割込み信号がセキュリティプロセッサ110に送られる状況を示す。起動時に、サブシステムのマイクロコントローラは、プロダクションスタック内のサブシステム固有の構成ファイルに基づいて、何れの条件がデータ集め動作を引き起こすかを判定する。例えば、GPU160に関連付けられた構成ファイルは、GPU160上の負荷が所定の閾値を超えた場合に、データレコーダ114がサブシステム固有の性能データを集めることを示す。マイクロコントローラは、示された1つ以上の条件が真である場合を検出するためにリスナプロセスをセットアップする。リスナがデータ集め条件を検出すると、リスナはデータ集め型割込み信号をセキュリティプロセッサ110に送る。
【0074】
DaaS型割込み信号は、上記で示した方法のうち少なくとも1つで、アクティブデバッグ型割込み信号と区別される。例えば、構成データ136は、ファームウェア更新が予想されるかどうかを示すブールフィールドを含む。DaaS型割込み信号がセキュリティプロセッサ110に送られる前に、このフィールドが偽に設定される。割込み信号に関連する情報がサブシステム固有の構成ファイルの場所情報を含む実施形態では、データレコーダ114は、構成データ136を使用する代わりに、割込み信号のソースに固有の構成ファイルを読み取る。割込み信号が別の方法でDaaSに関して区別される実施形態では、データレコーダ114は、構成データ136に付加されたサブシステム固有のサブテーブルを使用して、サブシステム固有の作業データを集める。
【0075】
(ハードウェアの概要)
一実施形態によれば、本明細書で説明する技術は、1つ以上の専用コンピューティングデバイスによって実装される。専用コンピューティングデバイスは、技術を実施するようにハードワイヤードされてもよいし、技術を実施するように永続的にプログラムされた1つ以上の特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)等のデジタル電子デバイスを含んでもよいし、ファームウェア、メモリ、他の記憶装置又はそれらの組み合わせの内部のプログラム命令に従って技術を実施するようにプログラムされた1つ以上の汎用ハードウェアプロセッサを含んでもよい。また、そのような専用コンピューティングデバイスは、技術を実装するために、カスタムハードワイヤード論理、ASIC又はFPGAをカスタムプログラミングと組み合わせ得る。専用コンピューティングデバイスは、技術を実装するために、ハードワイヤード論理及び/又はプログラム論理を組み込む、SoC又は他のコンピューティングシステム等の任意のコンピューティングデバイスであり得る。
【0076】
上記で示したように、図1は、一実施形態が実装され得るSoC100を示す例示的なブロック図である。SoC100は、情報を通信するためのI/Oサブシステム(バス)140又は他の通信機構と、情報を処理するためにバス140に連結されたハードウェアプロセッサ、CPU120と、を含む。図1の例では、CPU120は汎用マイクロプロセッサである。
【0077】
また、SoC100は、CPU120、セキュリティプロセッサ110、GPU160等のSoC100上のプロセッサによって実行される情報及び命令を記憶するために、バス140に連結されたランダムアクセスメモリ(RAM)又は他の動的記憶デバイス等のメモリ130を含む。また、メモリ130は、SoC100上のプロセッサによる命令の実行中にテンポラリ変数又は他の中間情報を記憶するために使用され得る。そのような命令は、CPU120がアクセス可能な非一時的な記憶媒体に記憶されると、SoC100を、命令において指定された動作を実施するようにカスタマイズされた専用マシンにする。情報及び命令を記憶するために、磁気ディスク、光ディスク又はソリッドステートドライブ等の記憶デバイス150が提供され、バス140に連結される。また、SoC100は、SoC100上の1つ以上のプロセッサのための静的情報及び命令を記憶するための、バス140に連結された読み取り専用メモリ(ROM)(図1に示されていない)又は他の静的記憶デバイスを含み得る。
【0078】
SoC100は、カスタマイズされたハードワイヤード論理、1つ以上のASIC又はFPGA、ファームウェア、及び/又は、プログラム論理を使用して、本明細書で説明する技術を実装することができ、これらは、コンピュータシステムと組み合わせて、SoC100を専用マシンにするか、プログラムする。一実施形態によれば、本明細書の技術は、CPU120がメモリ130に含まれる1つ以上の命令の1つ以上のシーケンスを実行することに応じて、SoC100によって実施される。そのような命令は、記憶デバイス150等の別の記憶媒体からメモリ130に読み込まれてもよい。メモリ130に含まれる命令のシーケンスの実行は、CPU120に、本明細書で説明するプロセスステップを実施させる。代替実施形態では、ソフトウェア命令の代わりに、又は、ソフトウェア命令と組み合わせて、ハードワイヤード回路を使用することができる。図1では、SoC100は、バス140を介して、記憶媒体を備える外部のローカルアクセス可能な記憶デバイス186に連結される。
【0079】
本明細書で使用される「記憶媒体」という用語は、マシンを特定の方式で動作させるデータ及び/又は命令を記憶する任意の非一時的な媒体を指す。そのような記憶媒体は、不揮発性媒体及び/又は揮発性媒体を含んでもよい。不揮発性媒体は、例えば、記憶デバイス150等の光ディスク、磁気ディスク又はソリッドステートドライブを含む。揮発性媒体は、メモリ130等のダイナミックメモリを含む。記憶媒体の一般的な形態は、例えば、ハードディスク、ソリッドステートドライブ、磁気データ記憶媒体、CD-ROM、任意の他の光データ記憶媒体、穴のパターンを有する任意の物理媒体、RAM、PROM、EPROM、FLASH-EPROM、NVRAM、任意の他のメモリチップ又はカートリッジを含む。
【0080】
記憶媒体は、伝送媒体とは別であるが、伝送媒体とともに使用され得る。伝送媒体は、記憶媒体間の情報の転送に関与する。例えば、伝送媒体は、バス140を構成するワイヤを含む、同軸ケーブル、銅線及び光ファイバを含む。伝送媒体は、電波及び赤外線データ通信中に生成されるような音波又は光波の形態をとることもできる。
【0081】
様々な形態の媒体が、実行のために1つ以上の命令の1つ以上のシーケンスをCPU120に搬送することに関与し得る。例えば、命令は、最初に、リモートコンピュータの磁気ディスク又はソリッドステートドライブ上で搬送され得る。リモートコンピュータは、命令をそのダイナミックメモリにロードし、ネットワークを介して命令を送ることができる。SoC100の通信インターフェース170は、ネットワークからデータを受信することができ、適切な回路が、データをバス140上に置くことができる。バス140は、データをメモリ130に搬送し、そこからCPU120が命令を取り出して実行する。メモリ130によって受信された命令は、オプションで、CPU120による実行の前又は後の何れかに記憶デバイス150に記憶され得る。
【0082】
SoC100の通信インターフェース170は、バス140に連結され、ローカルネットワーク182に接続されたネットワークリンク180に連結する双方向データ通信を提供する。例えば、通信インターフェース170は、互換性のあるLANへのデータ通信接続を提供するローカルエリアネットワーク(LAN)カードであってもよい。無線リンクも実装され得る。任意のそのような実装では、通信インターフェース170は、様々なタイプの情報を表すデジタルデータストリームを搬送する電気信号、電磁信号又は光信号を送受信する。
【0083】
ネットワークリンク180は、通常、1つ以上のネットワークを介して他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク180は、ネットワーク182を介して記憶デバイス184への接続を提供することができる。ネットワーク182は、デジタルデータストリームを搬送する電気信号、電磁信号又は光信号を使用する。SoC100との間でデジタルデータを搬送する、様々なネットワークを通る信号、ネットワークリンク180上の信号、及び、通信インターフェース170を通る信号は、伝送媒体の例示的な形態である。
【0084】
SoC100は、ネットワーク、ネットワークリンク180及び通信インターフェース170を介して、メッセージを送り、プログラムコードを含むデータを受信することができる。例えば、外部コンピューティングデバイス(図1に示されていない)は、ネットワーク182及び通信インターフェース170を介してセキュリティプロセッサ110のファームウェア更新をSoC100に送信してもよい。受信されたコードは、それが受信されるとSoC100によって実行されてもよく、及び/又は、後の実行のために記憶デバイス150若しくは他の不揮発性記憶装置に記憶されてもよい。
図1
図2
図3
図4
図5
【手続補正書】
【提出日】2023-05-10
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータ実行可能方法であって、
割込みイベントを検出することと、
前記割込みイベントに応じて、コンピューティングデバイスのプロセッサが、データ集め動作を実施するためにセキュアな実行環境を使用することと、を含み、
前記データ集め動作は、
構成データに基づいて、1つ以上のデータ収集場所からデータを集めることと、
前記集められたデータを1つ以上のターゲット記憶場所に記憶することと、を含む、
コンピュータ実行可能方法。
【請求項2】
前記割込みイベントは、前記割込みイベントを前記データ集め動作に関連付ける情報に関連付けられている、
請求項1のコンピュータ実行可能方法。
【請求項3】
前記割込みイベントを検出することは、前記コンピューティングデバイスのブート前の段階の間に前記プロセッサによって実行される、
請求項1のコンピュータ実行可能方法。
【請求項4】
前記データ集め動作は、
前記構成データに基づいて前記1つ以上のターゲット記憶場所を識別することを更に含み、
前記1つ以上のターゲット記憶場所の各々は、
前記コンピューティングデバイスの構成要素である記憶デバイス、
前記コンピューティングデバイスと通信可能に接続された記憶デバイス、又は、
ネットワークを介してアクセス可能な記憶デバイス、
のうち何れかを識別する、
請求項1のコンピュータ実行可能方法。
【請求項5】
前記割込みイベントを検出することは、1つ以上のスレッドが前記プロセッサによって実行されている間に前記プロセッサによって実行され、
前記方法は、前記割込みイベントを検出したことに応じて、前記1つ以上のスレッドの実行を停止することを更に含む、
請求項1のコンピュータ実行可能方法。
【請求項6】
前記1つ以上のデータ収集場所は、前記コンピューティングデバイスの中央処理装置、前記コンピューティングデバイスのグラフィックス処理装置、又は、前記コンピューティングデバイスの集積回路のうち1つ以上に関連付けられている、
請求項1のコンピュータ実行可能方法。
【請求項7】
前記割込みイベントは、前記コンピューティングデバイスの特定のサブシステムのプロダクションスタック内の前記構成データの場所に関連付けられており、
前記1つ以上のデータ収集場所は、前記特定のサブシステムに関連付けられており、
前記方法は、前記場所から前記構成データを取り出すことを更に含む、
請求項1のコンピュータ実行可能方法。
【請求項8】
前記集められたデータの一意の識別子を生成することを更に含み、前記集められたデータは、前記一意の識別子に関連して記憶される、
請求項1のコンピュータ実行可能方法。
【請求項9】
前記データ集め動作は、前記集められたデータを記憶した後に、
ファームウェア更新情報を受信することと、
前記ファームウェア更新情報を受信したことに応じて、
前記ファームウェア更新情報を検証することと、
前記ファームウェア更新情報を適用して、前記コンピューティングデバイスのファームウェアを更新することと、を更に含む、
請求項1のコンピュータ実行可能方法。
【請求項10】
前記コンピューティングデバイスは、集積回路であり、
前記プロセッサは、前記集積回路上の専用セキュリティプロセッサであり、
前記割込みイベントは、前記集積回路上のサブシステムのマイクロプロセッサに関連付けられている、
請求項1のコンピュータ実行可能方法。
【請求項11】
前記構成データに基づいて、前記1つ以上のデータ収集場所を識別することであって、前記1つ以上のデータ収集場所は、ハードウェアレジスタ又はメモリ場所のうち1つ以上を含む、ことを更に含む、
請求項1のコンピュータ実行可能方法。
【請求項12】
コンピューティングシステムであって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサによって実行されると、請求項1~11の何れかの方法を実行させる1つ以上の命令シーケンスを記憶するメモリと、を備える、
コンピューティングシステム。
【請求項13】
1つ以上のプロセッサによって実行されると、請求項1~11の何れかの方法を実行させる命令を含む、コンピュータプログラム製品。
【国際調査報告】