説明

システム中の信頼されたコンポーネントのデバッグ

信頼されたサブシステム中の一実施例におけるデバッグ動作中に、
選択された領域へのアクセスをイネーブルおよびディセーブルにするために、かつ異なるエンティティによって相互に排他的にアクセスするために、パスワードが使用される。別の実施例では、プログラム可能なユニットは、どのアクセス領域がデバッグ動作のために選択されるかを定義するために使用される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、システム中の信頼されたコンポーネントのデバッグに関する。
【背景技術】
【0002】
より多くの製品が一連の異なる製造業者または付加価値を与える再販売業者によって生み出されてきており、製造中のセキュリティの維持がますます重要な問題になっている。これは、プロセッサ・コードが複数の製造業者によってインストールされる場合、特に問題となる。例えば、ある製造業者は、携帯電話の基本的な動作のためのコードを含むプロセッサ・チップを生産し、次に、特定のタイプの通信技術に特有のコードをインストールするために別の製造業者へ渡し、その後、それを携帯電話の特定の商標およびモデルに特有の機能のためのコードをインストールするために第3製造業者へ渡す。特定の製造業者は、他の製造業者が(故意にまたは不注意に)修正することを好まず、さらにその所有者コード見ることすら好まなし、さらに他の製造業者がそれ以前に機能していたコードと相互運用上の問題を引き起こすコードを形成することを好まない。加えて、同じデバッグ・インターフェイスが信頼できる領域および信頼できない領域へのアクセスのために使用されることがある。
【0003】
歴史上、セキュリティ機能は、完成品の動作中に完成品のコードを変更する可能性を低減させることに集中した。しかしながら、委託された製造業者が前の製造業者によってインストールされたコードへアクセスするので、様々な製造業者が他の業者に対してセキュリティを維持することを可能にするアプローチはほとんど行われていない。これらの問題は、自由に修正できる領域および修正から保護される領域の両方を含むチップ内の資源に、現在の製造業者がデバッグ・インターフェイスによって深くアクセスすることを可能にするとき、コード・デバッグ動作中特に問題となる。
【0004】
本発明は、本発明の実施例を図示するために使用される下記の説明および添付図面を参照することにより理解される。
【発明の開示】
【0005】
下記記述では、多くの特定の詳細事項が述べられる。しかしながら、本発明の実施例は、これらの特定の詳細事項がなくても実施できることを理解すべきである。他の実施例では、周知の方法、構造および技術は、この記述の理解を不明瞭にしないために詳細には示されていない。
【0006】
他に特に述べられない限り、次の議論から明らかなように、「処理する」、「演算する」、「計算する」、「判断する」などのような用語を利用する議論は、明細書全体にわたって、コンピュータ、コンピュータ・システムまたは類似の電子計算機装置の動作または処理に関連するものであり、それはコンピュータ・システムのレジスタおよび/またはメモリ内の電子、量子などの物理量として表わされるデータをコンピュータ・システムのレジスタおよび/またはメモリあるいは他の情報格納、伝送または表示装置内の物理量として同じように表わされる他のデータへ操作または変換することとして理解される。
【0007】
同様に、「プロセッサ」なる用語は、任意の装置またはレジスタおよび/またはメモリから電子データを処理し、その電子データを他の電子データに変形するあらゆる装置または装置の一部に関するものである。「コンピューティング・プラットフォーム」は、1またはそれ以上のプロセッサを含んでいてもよい。
【0008】
「一実施例」、「実施例」、「実施の例」、「様々な実施例」などの表示は、本発明の実施例が特定の機能、構造または特性を含むが、あらゆる実施例がその特定の機能、構造または特性を必ず含むとは限らないことを示す。さらに、「ある実施例において」なる句の繰り返しの使用は必ずしも同じ実施例を参照するものではない。
【0009】
「第1」、「第2」、「第3」などの形容詞の使用は、類似の対象の異なる例が引用されていることを単に示すに過ぎず、その対象が一時的にも、空間的に、格付的にも、あるいは他の方法においても、与えられた順序でなければならないことを意図するものではない。
【0010】
「結合された」、「接続された」なる用語がそれらの派生語と共に使用される。これらの用語は、互いに同義語として意図されていないことに理解しなければならない。むしろ、特定の実施例では、「接続された」は、2またはそれ以上の要素が互いに物理的または電気的な直接の接触にあることを示すために使用される。「結合された」は、2またはそれ以上の要素が物理的または電気的な直接の接触にあるか、または2またはそれ以上の要素が互いに直接の接触にはないが互いに協動して相互作用を及ぼしている状態のいずれかを意味する。
【0011】
本発明の実施例は、動作を行なうための装置を含む。装置は、所望の目的のために特に構成され、あるいは、意図した動作を行なうために選択的に起動され、構成され、プログラムされ、あるいは他に適合した汎用装置を含んでいてもよい。
【0012】
本発明のいくつかの実施例は、サブシステム内の選択された資源に対するデバッグ動作のために排他的にアクセスすることを可能にする1またはそれ以上のパスワードを使用することができ、それにより開発中の特定ステージで特定のエンティティ(要素)によるそのデバッグ・アクセスが制限され、および/または、可能(イネーブル)になりおよび無効(ディセーブル)になる。様々なパスワードによるアクセスは、相互に排他的であり、その結果、1つのエンティティだけが一度に選択された資源にアクセスすることができる。いくつかの実施例では、サブシステムは信頼されたサブシステムである。信頼されたサブシステムは、プロセッサ、プロセッサによる実行のためのコード、および様々なサポート回路からなり、その一部またはすべては許可されていない変更から保護されるように意図され、また許可されていないモニタリングから保護されるように意図される。
【0013】
本発明の他の実施例は、1またはそれ以上の命令がデバッグ動作中に実行される場合、デバッグ動作が許可されていない動作を行ない、および/または、許可されていない領域にアクセスするかどうかを判断するためにプログラムされたインディケータを使用してもよい。
【0014】
図1は、本発明の実施例に従って、異なるエンティティによる複数のデバッグ・プロセスを連続して行なう方法のフローチャートを示す。フローチャート100を参照して、110で、第1エンティティ(entity)は、パッケージにされた部分内のコードを実行することでデバッグ動作を行なう。ある実施例において、パッケージにされた部分はプログラムされた集積回路を含み、また第1エンティティは実際に集積回路を製作する関係者(パーティ)であるが、しかし、他の実施例は異なる集団(例えば、第1エンティティは別のエンティティからプログラムされていない集積回路を受け取り、次に、それにコードをインストールする)を有していてもよい。いくつかの実施例では、ここに言及された「エンティティ」は会社であるが、他の実施例は他の集団(例えば、エンティティは、示された動作を行なう会社の部分集合、会社連合、研究組織、人、人の集団などであってもよいが、しかしそれらに制限されることはない。)を有していてもよい。
【0015】
まだ開発中であるコードを含む実施例では、デバッグ・プロセスは、そのコードがその内部動作を首尾よく実行するかどうかを判断するためにそのコードを試験することができ、また信頼されたサブシステムの境界外の資源と適切に相互作用するかどうかを試験することができる。前に開発されデバッグされたコードを含む他の実施例では、相互作用だけが試験される必要がある。関連する側面では、このコードに対するデバッグ・アクセスは制限される一方、同じデバッグ・アクセスよる他のコード(例えば、異なるプロセッサによって実行されるコード)へのデバッグ・アクセスが許可されてもよい。
【0016】
コード実行におけるあらゆる問題の詳細を判断するためにデバッグ・プロセスが使用されてもよいが、本発明の範囲はこの点に制限されることはない。ある実施例において、デバッグ・プロセスは、個々の命令あるいは命令のグループを実行することができ、その後予測される方法に影響されるかどうかを決めるために1組の資源(例えば、レジスタ、指定されたメモリ場所、カウンタ、割込みステータスなど)をテストするために休止してもよい。影響されない場合、そのコードは修正され、その修正済のコードは再びデバッグ・プロセスに向けられる。これは、正確に動作するコードを生成するために必要とされる回数だけ、コードの複数の部分をテストし再テストする反復プロセスである。ある実施例において、デバッグ・プロセスはパッケージにされた部分の外部のシステムによって制御され、そのシステムはデバッグ目的のためにのみ使用される特別のテスト・インターフェイスを通ってキーとなる内部資源へのアクセスを獲得するが、本発明の範囲はこの点に制限されることはない。
【0017】
第1エンティティによるデバッグ・プロセスが完了すると、120で、デバッグ・プロセスによるアクセスはディセーブルにされる。ある実施例において、これは、テスト・インターフェイスによるパッケージにされた部分内の特定の領域のみへのアクセスを禁止する一方、テスト・インターフェイスによる他の領域へのアクセスが依然許可されることにより達成される。いくつかの実施例では、そのパッケージにされた部分は、テストおよび/またはデバッグのためにインストールされた最初のコードを備える信頼されたサブシステムを含む。いくつかの実施例では、信頼されたサブシステムへのデバッグ・アクセスだけが120でディセーブルにされる一方、パッケージにされた部分内の他の領域へのデバッグ・アクセスが依然許可されている。
【0018】
130で、パッケージにされた部分は、さらに先への動作のために別のエンティティに転送される。ある実施例において、第2エンティティは、第1エンティティと異なる会社であり、それは信頼されたサブシステム内に付加的なコードを置き、その付加的なコードをデバッグする。第1エンティティは、第1エンティティが有していたメモリ・アドレスの全領域および他の資源へのデバッグ・アクセスを第2エンティティが阻止するることにより、その前にデバッグされたコードを保護することを所望してもよく、それゆえ、第2エンティティが実質的にまたは完全に以前第1エンティティにアクセスがイネーブルだった資源のサブセットである資源だけにアクセスするか、あるいは以前に第1エンティティに利用可能だった資源と実質的に異なるセットにアクセスすることをイネーブルにしてもよいが、本発明はこの点に制限されることはない。このような異なるレベルのアクセスは、第2エンティティに第1エンティティによって使用された別のメカニズムを通るデバッグ・アクセスを与えることにより達成される。いくつかの実施例では、第2エンティティは、第1エンティティによって使用されないパスワードを通してデバッグ・アクセスを獲得する。
【0019】
特定の実施例では、第2エンティティは、それ自身のパスワードを決定し、信頼されたサブシステムへの将来のデバッグ・アクセスを制御するように、140で信頼されたサブシステム内にそのパスワードをプログラムする。いくつかの実施例では、第1エンティティは、120でそれ自身のパスワードをディセーブルにしないが、第2パスワードが140で第2エンティティによってプログラムされると、その第1エンティティのパスワードはむしろ自動的にディセーブルになる。
【0020】
反復デバッグ・プロセスの1つの実施例は、不正パスワードを扱う他のループ155,157とともに、プロセス・ループ150,160,170によって図1中に図示されるが、本発明の範囲はこの点に制限されることはない。コードがテストされることになっているとき、信頼されたサブシステムへのデバッグ・アクセスを獲得するために、以前に決定したパスワードが150で入力され、それにより、そのコードが実行され、またその結果がモニタされることをイネーブルにする。もし無効パスワードが入力される場合、155で判断されるように、プロセスは157で予め定める期間の間休止し、別のパスワードが入力されることをイネーブルにする。ある実施例において、パスワードはおよそ128ビットの長さであり、またその休止は約2秒の長さであり、単に可能なパスワードの組合せをすべて試みることにより、誰かが無許可アクセスを獲得することを相対的に実行不可能にする。他の実施例は、これら2つのパラメータの一方または両方に対する他の値を有している。
【0021】
入力されたパスワードが有効な場合、コードの一部は、160でそれを実行することによりテストされ、その結果はそのコードが予想通りに実行したかどうかを判断するために検討されるが、本発明の範囲はこの点に制限されることはない。そのコードの実行が受け入れがたいと判断される場合、そのコードは170で修正され、そのテスト・プロセスが再び実行される。ある実施例において、そのコードがデバッグ・アクセスを獲得するために修正された後、再びパスワードを入力しなければならないが、他の実施例では他の技術を使用してもよい(例えば、一度パスワードが入力されれば、パスワードが故意にディセーブルにされるまで、アクセスが連続的に許可されるようにしてもよい)。
【0022】
いくつかの動作では、第2エンティティはそれ自身のパスワードをプログラムしてもよく、それ自身のデバッグ・プロセスを排他的に行なうためにそのパスワードを使用してもよい。他の動作では、第2エンティティは、パッケージにされた部分およびパスワードを配布することにより、そのデバッグ・プロセスを、デバッグを行なうためにそのパスワードを使用する第3エンティティに委託してもよい。複数のパスワードが複数のエンティティに使用されてもよい。いくつかの実施例では、異なるパスワードは、予め定義されたものと異なる範囲の資源へのアクセスを許し、その結果、与えられたエンティティは、それが作用すると想定されるシステムの部分にだけアクセスすることができる。
【0023】
デバッグ・プロセスが完了し、そのコードが受理可能であると考えられた後、そのパッケージにされた部分を続いて扱う他のエンティティによってデバッグ・インターフェイスを通してさらにアクセスするのを阻止するために、180でそのパスワードはディセーブルにされる。いくつかの動作では、その部分を次のデバッグのために第1エンティティに戻ることは望ましく、したがって、190で、第1エンティティによるアクセスが再度イネーブルになる。いくつかの実施例では、これは、特にこの目的のために作成された再イネーブル・パスワードを入力することにより達成される。
【0024】
図2は、本発明の実施例に従って図1に図示された方法の一部を実行するための回路の論理図を示す。図2の回路は、様々なパスワードを格納するための格納構造210,220,230を含み、それが回路に提示されたとき、比較器240,250,260によって決定される1またはそれ以上の選択された領域のデバッグ・アクセスをイネーブルにする。特定の実施例では、図2の回路は、以下の段落に説明されるように動作するが、本発明の範囲はこの点に制限されることはない。
【0025】
第1エンティティによるアクセスの制御を許すために、パスワードは格納構造210に格納される。ある実施例において、格納構造210は、フラッシュ・メモリのようなプログラム可能な不揮発性格納構造であるが、他の実施例は他の技術(例えば、パスワードはヒューズを切ることにより作成されてもよく、パスワードは製造中に配線されてもよい)を使用することができる。第1エンティティが初めからデバッグ動作を行なうとき、デバッグ・アクセスは、PWD INPUTで第1エンティティのためのパスワードを示すことによりイネーブルになる。ある実施例において、パスワードは128ビットの2進数であるが、他のフォーマットが使用されてもよい。提示されたパスワードが格納構造210に格納されたパスワードと一致する場合、比較器240の出力が起動される。ディセーブル回路280は、最初比較器240の起動された出力が信号1st ENTITY ACCESS(第1エンティティ・アクセス)として通過できるように設定されている。
ある実施例において、ディセーブル回路280は、単純なANDゲートまたはORゲートであり、その一方で再イネーブル制御回路270は、制御可能な不揮発性レジスタであるが、他の回路が使用されてもよい。第1エンティティ・アクセスの起動は、デバッグ・プロセスをイネーブルにするために他の回路(図示せず)をトリガし、さらにそのようなデバッグ・プロセスのためにどの資源が到達できるかを定義する。デバッグ・プロセスが第1エンティティによって終了するとき、第1エンティティは、再イネーブル制御回路270の状態を変更することにより、それ自身のアクセスをディセーブルにし、その結果ディセーブル回路280の出力は、比較器240の出力にかかわらず非活性化される。
【0026】
パッケージにされた部分が第2エンティティによって受け取られると、第2エンティティは、選択された領域へのデバッグ・アクセスを許可するために1またはそれ以上のパスワードを作成し、これらのパスワードを格納構造230へ格納する。パスワードがパスワード入力に提示さ、それが格納構造230に格納されたパスワードと一致する場合、比較器260は信号2nd ENTITY ACCESS(第2エンティティ・アクセス)を起動する。第2エンティティ・アクセスの起動は、デバッグ・プロセスをイネーブルにするために他の回路(図示せず)をトリガし、さらにそのようなデバッグ・プロセスのためにどの資源が到達できるかを定義する。異なるパスワードは、パッケージにされた部分の異なる領域のデバッグをイネーブルにし、および/または、異なる領域へのアクセスの制限を可能にする。ある実施例において、選択された領域に対する全面的な制限は、製造中または第1エンティティがパッケージにされた部分のコントロールを有する場合に、そのパッケージにされた部分に組み込まれるが、他の実施例では、第2エンティティがその全面的な制限に対するコントロールを有していてもよい。ある実施例において、格納構造230は連想記憶装置(CAM)であるが、他のタイプの回路(例えば、不揮発性レジスタのシリーズ、1つのパスワードだけが格納されることになっている場合の単一の不揮発性レジスタなど)が使用されてもよい。その部分が次の作業のために第1エンティティに続いて戻される可能性を考慮に入れるために、第2エンティティは、第1エンティティのためのデバッグ・アクセスを再イネーブルするために使用される再イネーブル・パスワードを作成し、その再イネーブル・パスワードを格納構造220に格納する。ある実施例において、第2エンティティによって作成されたその再イネーブル・パスワードを含む別のパスワードは、いつでも作成され格納されるが、同時にすべてが作成される必要はなく、他の実施例では他の配列(例えば、第2エンティティによって作成されたパスワードはすべて、それらのパスワードのいずれかが最初に使用される前に、作成されなければならない、など)であってもよい。
【0027】
様々な実施例において、1またはそれ以上の第2エンティティ・パスワードのうちの1つによって許可されたアクセスは、第1エンティティ・パスワードによって許可されたアクセスとは部分的に、実質的にまたは完全に異なる。例えば、メモリに制限されないが、第2エンティティ・パスワードのうちの1つによってアクセス可能である資源は、実質的なサブセット、実質的なスーパーセット、または第1エンティティ・パスワードによってアクセス可能な資源と実質的に異なっていてもよい(メモリの実質的に異なる部分のように)。いくつかの実施例では、アクセスにおける差異は、異なる特権レベルの形式であってもよい。これらの例は、アクセス・レベルで様々な可能な差異を表わすが、しかし、本発明は与えられた例に制限されることはない。
【0028】
図3は、本発明の実施例に従って、図2のシステムに類似する回路を含む信頼されたサブシステムのブロック図を示す。図示する実施例では、サブシステム300は、マイクロコントローラ310、機能ユニット320、機能ユニット用レジスタ330、内部ランダム・アクセス・メモリ(RAM)340、内部リード・オンリ・メモリ(ROM)350、アクセス制御レジスタ360、デバッグ・ダンプ・レジスタ370、ダイレクト・メモリ・アクセス(DMA)入力380、DMA出力385およびデバイス・アクセス・レベル制御390を含むが、本発明の範囲はこの点に制限されることはない。ある実施例において、マイクロコントローラ310は、信頼されたサブシステムが実行するように意図される動作を効率的に行なうために特別に設計されるが、他の実施例は他の構成(例えば、マイクロコントローラ310は汎用目的のCPUなどと全て同じ設計を有していてもよい。)であってもよい。
【0029】
機能ユニット320は、ある動作の実行をより効率的に行なうための回路を含む。ある実施例において、機能ユニット320は、頻繁に使用される暗号/解読アルゴリズム、例えばリベスト−シャミル−アドレマン(RSA)、セキュア・ハッシュ・アルゴリズム(SHA)、高度暗号標準規格(AES)などを行なうための回路を含む。レジスタ330は、機能ユニット320によって、入力データ、出力データ、中間結果などのために使用される一時格納を含む。内部ROM350は、マイクロコントローラ310によって使用される変更不可能な命令および/またはデータを提供する一方で、内部RAM340は、データおよび/または命令のためにスクラッチパッド領域および/または再利用可能な領域として使用されてもよい。DMA入力380およびDMA出力385は、信頼されたサブシステム300の外部の装置と内部ユニット330,340および任意の他の領域との間でデータを転送するために使用される。ある実施例において、DMA入力380およびDMA出力385は、信頼されたサブシステム300へ、またはそのサブシステムからデータを転送するただ一つの方法であり、特定の実施例では、マイクロコントローラ310は、DMA入力380およびDMA出力385を完全に制御し、従って外部装置が無許可のデータを信頼されたサブシステム300へ/から転送することを防止し、それによって、どのようなセキュリティ機能が信頼されたサブシステム300へ設計されるべきかを調整するが、本発明の範囲はこの点に制限されることはない。
【0030】
アクセス制御レジスタ360は、与えられたデバッグ・プロセスがどの領域アクセスを許可されているかを定義するために使用されてもよい一方、デバッグ・ダンプ・レジスタ370は、信頼されたサブシステム300からデバッグ・ダンプ・データを転送するデバッグ・ダンプ・ルーチンのアドレスを指定するために使用されていてもよい。いくつかの実施例では、デバッグ・ダンプ・レジスタ370は、実際のデバッグ・ダンプ・データを含んでいてもよい。いくつかの実施例では、デバイス・アクセス・レベル制御390は、外部装置が信頼されたサブシステム300内にアクセスするアクセスのレベルを定義するために使用されてもよい。単一のレベルのみが定義されたある実施例では、デバイス・アクセス・レベル制御390はそのレベルを定義し、アクセス制御レジスタ360が省略されてもよい。複数のレベルが定義されたアクセスを備える別の実施例では、アクセス制御レジスタ360は様々なレベルを定義し、また、デバイス・アクセス・レベル制御390が省略されてもよい。別の実施例では、デバイス・アクセス・レベル制御390は、最も広いアクセスのレベルを定義し、その一方でアクセス制御レジスタ360はより多くの制限されたレベルのアクセスを定義してもよい。さらに他の実施例が他の構成を使用してもよい。
【0031】
図4は、本発明の実施例に従って、信頼されたサブシステムを含むシステムを示す。図示する実施例では、システム400は、ホスト・プロセッサ410、システム・メモリ420、信頼されたサブシステム300、他の周辺装置430、通信パス440、デバッグ・インターフェイス450およびプログラム可能なユニット460を含むが、本発明の範囲はこの点に制限されることはない。ある実施例において、ホスト・プロセッサ410は、システム400のための汎用プロセッサであってもよく、その一方でシステム・メモリ420はホスト・プロセッサ410のためのメインメモリである。ある実施例において、システム・メモリ420は、動的なランダム・アクセス・メモリ(DRAM)のような揮発性メモリを含み、別の実施例においては、システム・メモリ420はフラッシュ・メモリのような不揮発性メモリを含み、他の実施例では、システム・メモリ420は、揮発性および不揮発性メモリの組合せを含む。他の周辺装置430は、特定の動作のために必要とされる他の装置および/またはシステムのデバイスコントローラを含み、例えばディスク制御装置、グラフィック・アクセラレータ、ネットワーク・インターフェイス、音響入力/出力、表示制御装置、キーボード制御装置などであるが、これらに制限されることはない。
【0032】
通信パス440は、ホスト・プロセッサ410、システム・メモリ420、信頼されたサブシステム300および他の周辺装置430間の通信用経路を提供する。通信パス400は、様々なタイプの通信装置、例えば、バス、複数のバス、ブリッジ、直接の接続などを含むが、これらに制限されることはない。
【0033】
外部接続については、デバッグ・インターフェイス450は、外部デバッグ・システム(図示せず)と、ホスト・プロセッサ410、システム・メモリ420、他の周辺装置430および通信パス440のようなシステム400の様々な内部構成との間のインターフェイスを提供する。プログラム可能なユニット460は、どのようなアクセスのレベルがデバッグ動作中に許可されるかのインディケータをプログラムする外部方法を提供する。ある実施例において、プログラム可能なユニット460は製造中に設定され、次に、後続の変更を防ぐためにシールされる。別の実施例では、プログラム可能なユニット460は製造後にプログラム可能である。特定の実施例では、プログラム可能なユニット460は、切断されるヒューズを含み、他の実施例では他の技術(例えば、不揮発性レジスタなど)が使用される。一度プログラムされると、そのデバッグ・インターフェイス450に接続された外部装置がどのレベルのアクセスが許されているかを示すために、プログラム可能なユニット460のビットは、信頼されたサブシステム300内の回路(図示せず)によって読取られる。
【0034】
図5は、本発明の実施例に従って、デバッグ動作を行なう方法のフローチャートを示す。フローチャート500の開始は、デバッグ動作が既に設定され、デバッグ装置はデバッグ・インターフェイス450(図4を参照)に接続され、システム400は一度に1つの命令を実行するか、あるいは予め定義された命令シーケンスを実行するために設定され、それに続いてデバッグ・インターフェイスを通ってそのデバッグ装置に定義された位置のセット(例えば、レジスタなど)のコンテンツをダンプするために休止すると仮定する。しかしながら、本発明の範囲はこの点に制限されることはない。
【0035】
510から開始して、次の命令が取り出され、および/または、実行のための位置に入れられる間、休止があってもよい。その命令は、520で、ステップ・モードで実行される。判断ブロック530では、デバッグ・ダンプを停止するか行なうか、あるいはシーケンス中の別の命令を実行するかどうかを判断する。それとも、べきであるか。デバッグ・ダンプ・インディケータがセットされない場合、シーケンス中の次の命令を実行するために、処理は520へ戻る。デバッグ・ダンプ・インディケータがセットされる場合、前述の位置のコンテンツが今ダンプされることになり、その結果、命令実行の影響が調べられることを示して、その後処理は540へ移動する。実行は、540で、デバッグ・ダンプ・ルーチンへ分岐する。デバッグ・ダンプ・ルーチンのアドレスは、デバッグ・ダンプ・レジスタ370(図3参照)の特定のレジスタに含まれている。
【0036】
デバッグ・ダンプ・ルーチンは、550で、どのアクセスのレベルがそのデバッグ動作のために許可されているか決めるためにプログラム可能ユニットをチェックする。ある実施例において、このレベルは、どのレジスタが修正されるのか、どのメモリ・レンジでアクセスされるのか、どの命令が実行されるのか、どの資源がアクセスされるのか、などや、様々なレジスタや記憶場所に置かれるコンテンツなどに対する制限を定義するが、他の実施例は、より多くの、よりわずかの、および/または、別の制限を含んでいてもよい。その実行がこれらの制限、すなわちデバッグ・プロセスが予め定められたセキュリティ制限を越えたことを示す制限を違反する場合、デバッグ・プロセスは570で中断されるか終了(アボート)される。ある実施例において、プロセスをアボートすることには、デバッグ・インターフェイスをディセーブルこと、信頼されたサブシステムへのアクセスをすべて拒否すること、エラーメッセージをホスト・プロセッサなどを通って生成すること、などを含むが、これらに制限されることはない。
【0037】
制限違反が550で検出されない場合、デバッグ・ダンプ・データは、デバッグ・インターフェイス450を介して外部デバッグ装置に転送される。ある実施例では、デバッグ・ダンプ・データがいくつかのレジスタ370中に含まれていることがあり、そしていくつかのレジスタ370からダンプされてもよい。別の実施例では、そのデバッグ・ダンプ・データは、内部RAM340からDMA出力を介して通信パス440に、そしてそこからデバッグ・インターフェイス450を介してデータを転送することによりダンプされる(図3、図4参照)。他の実施例は、他の技術を使用してもよい。
【0038】
デバッグ・データをダンプした後、580で、その動作は次の指示のために待機するか、または、別の命令の実行または命令シーケンスを開始するために510へ戻ってもよい。
【0039】
本発明の実施例は、ハードウェア、ファームウェアおよびソフトウェアの1つまたはそれらの組合せで実現される。本発明の実施例はまた、機械読取り可能な媒体上またはその中に格納された命令として実装されてもよく、それはここに説明された動作を行なうために少なくとも1つのプロセッサによって読取られ実行される。機械読取り可能な媒体は、マシン(例えば、コンピュータ)によって読取り可能な形式で情報を格納するか伝送するためのあらゆるメカニズムを含む。例えば、機械読取り可能な媒体は、リード・オンリ・メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、磁気ディスク格納媒体、光格納媒体、フラッシュ・メモリ装置、電気的、光学的、音響的、あるいは他の形式の伝播信号(例えば、搬送波、赤外線信号、電気的なデジタル信号など)を含むが、これらに制限されることはない。
【0040】
図6および図7は、本発明の実施例に従って、機械読取り可能な媒体上またはその中に格納された命令の実行により実現される方法のフローチャートを示す。しかしながら、本発明の範囲はこの点に制限されることはない。
【0041】
図6のフローチャート600では、610で、デバッグ・パスワードは、信頼されたサブシステムへのデバッグ・アクセスを許可することに対する制限として後続の使用のために格納される。デバッグ・プロセスが開始することであるとき、ユーザは、615で受け取られたアクセス・パスワードを示すことによりデバッグ・アクセスを求める。620で、そのアクセス・パスワードが以前に格納されたデバッグ・パスワードと一致しない場合、デバッグ・アクセスのリクエストは625で否定される。いくつかの実施例では、その後、システムは、(図示のように)615で提示される別のパスワードを許可してもよいが、他の実施例では、いくつかのエラー処理(図示せず)の形式が実行されてもよい(例えば、エラーメッセージを生成すること、前もって定めた時間の間デバッグ・アクセスをロックする、など)。そのアクセス・パスワードが以前に格納されたデバッグ・パスワードと一致する場合、デバッグ・アクセスのためのリクエストが630で付与される。このポイントで、デバッグ動作は、図6に含まれていないコードおよびプロセスを使用して行なわれる。
【0042】
一旦ユーザのデバッグ動作が完了し、そのユーザがそれらをさらに使用する必要が確かにないということが合理的であるとするならば、デバッグ・パスワードは635でディセーブルにされる。ある実施例において、ディセーブルにすることはそのパスワードをその格納位置から削除することを含み、他の実施例では他の技術が使用されてもよい(例えば、格納位置への読取りアクセスをブロックすること、格納位置上に書き込むこと、など)。
【0043】
次のデバッグ動作(例えば、別のエンティティによる)が意図される場合、640で再イネーブル・パスワードが格納される。別のデバッグ・プロセスが始まる場合、別のユーザは645で受け取られたアクセス・パスワードを提示することにより、そのデバッグ・インターフェイスを介してアクセスを要求する。650で、アクセス・パスワードが以前に格納された再イネーブル・パスワードと一致しない場合、655でデバッグ・アクセスのリクエストは否定される。いくつかの実施例では、その後、本システムは、645で(図示のように)示される別のパスワードを許可してもよいが、他の実施例では、いくつかのエラー処理(図示せず)の形式が実行される(例えば、エラーメッセージを生成すること、前もって定めた時間の間デバッグ・アクセスをロックする、など)。そのアクセス・パスワードが以前に格納されたデバッグ・パスワードと一致する場合、デバッグ・アクセスのためのリクエストが660で付与される。このポイントで、デバッグ動作は、図6に含まれていないコードおよびプロセスを使用して行なわれる。いくつかの実施例では、620で付与されたデバッグ・アクセス、および、660で付与されたデバッグ・アクセスは、異なる領域および資源へのアクセスを認める。
【0044】
図7のフローチャート700では、710で、デバッグ・モードの動作が入力され、動作は図7の残余の部分に続くが、本発明の範囲はこの点に制限されることはない。いくつかの実施例では、このような入力は、既に説明されたパスワード・プロセスを通じて、または説明されていない別のプロセスを通じて制御されるが、他の実施例はこのようなデバッグ動作へのアクセスを制限しなくてもよい。715で、1またはそれ以上の命令シーケンスがステップ・モードで実行され、720でデータを収集するために休止する実行を伴う。このようなデータは様々なレジスタおよび/またはメモリ位置のコンテンツ、レジスタおよび/またはメモリ位置のアドレス、様々なステータス・ビットの状態、実行された命令の識別などの含むが、これらに制限されることはない。
【0045】
723で、720で収集されたデータに関するいくつかの制限を指定するパラメータが得られる。このようなパラメータは、デバッグ動作に対する制限を課すために使用されてもよい。このような制限は、デバッグ動作を、指定されたメモリの範囲内に、指定されたレジスタに、指定されたタイプの命令などに制限するために使用されてもよい。ある実施例において、パラメータは、介在する回路および/またはコードでヒューズのような前にプログラムされたビット・セットから推断され、そのビットを実際のパラメータに変換するが、他の実施例は他の技術(例えば、プログラムされた位置から直接パラメータを読んで、そのビットをマイクロコードを介してパラメータに変換する、など)を使用する。
【0046】
725で、データが示された範囲内であるかどうか決めるために、収集されたデータは、制限パラメータと比較される。そのような範囲は、実行された命令が存在する一連のアドレス、書き込まれまたは読み出されるメモリ位置の一連のアドレス、実行された命令、実行が許された命令のタイプ、実行されたコードがアクセスすることを許される他の資源など(例えば、レジスタ、装置など)を含むが、これらに制限されることはない。定義された範囲を超過している場合、フローはエラールーチンを処理するために730へ移動する。そのようなエラールーチンは、エラーメッセージを示すこと、他の情報を獲得するためにデバッグ・プロセスを中断すること、デバッグ・プロセスを終了させることなどを含むが、これらに制限されることはない。
【0047】
定義された範囲を超過していない場合、デバッグ・インターフェイスを介して関連するデータをダンプするために、フローは735へ移る。この方法でダンプされたデータは、その制限が725で調べられたのと同じデータであるか、その制限が725で調べられなかったのと異なるデータであるか、あるいは、両方の全てのまたは部分的な組合せである。
【0048】
決定は、745でデバッグ動作を止めるべきか、715で1またはそれ以上の次の命令シーケンスを実行することにより、デバッグ動作を再開するべきであるかどうかに判断が、740で行なわれる。デバッグ・テスト・インターフェイスを介して有用な量のデバッグ・データを集めるために、そのような多くのシーケンスが、デバッグ動作を止める前に連続して実行される。
【0049】
前述の説明は、例示する意図であり、制限するためではない。変変更は、想起されるであろう。それらの変更は本発明の様々な実施例に含まれるように意図されており、それは添付された請求項の思想および範囲によってのみ制限されるものである。
【図面の簡単な説明】
【0050】
【図1】本発明の実施例に従って、異なるエンティティによる複数のデバッグ・プロセスを連続して行なう方法を示すフローチャートである。
【図2】本発明の実施例に従って、図1中に示された方法の一部を実行する回路の論理図を示す。
【図3】本発明の実施例に従って、図2の回路に類似する回路を含む信頼されたサブシステムのブロック図を示す。
【図4】本発明の実施例に従って、信頼されたサブシステムを含むシステムを示す。
【図5】本発明の実施例に従って、デバッグ動作を行なう方法を示すフローチャートである。
【図6】本発明の様々な実施例に従って、機械読取り可能な媒体上、またはその中に含まれる命令を実行することにより実施される方法を示すフローチャートである。
【図7】本発明の様々な実施例に従って、機械読取り可能な媒体上、またはその中に含まれる命令を実行することにより実施される方法を示すフローチャートである。

【特許請求の範囲】
【請求項1】
第1パスワードの入力に応答して、メモリ中の第1セットのコードをデバッグするために、第1セットの資源へのアクセスを許可する第1回路と、
第2パスワードを含む格納構造と、
前記第1回路および前記格納構造に結合され、前記第2パスワードの入力に応答して、前記メモリ中の第2セットのコードをデバッグするために、第2セットの資源へのアクセスを許可する第2回路と、
を含むことを特徴とする装置。
【請求項2】
前記第2セットの資源へのアクセスは、デバッグ・インターフェイスを介することを特徴とする請求項1記載の装置。
【請求項3】
前記第2セットのコードを前記第1セットのコードと実質的に異なる前記メモリの部分に置くために適合していることを特徴とする請求項2記載の装置。
【請求項4】
前記格納構造は、連想記憶装置を含むことを特徴とする請求項1記載の装置。
【請求項5】
前記第2パスワードの入力に応答する前記アクセスがイネーブルにされる場合、前記第1パスワードの入力に応答する前記アクセスを阻止し、前記第1パスワードの入力に応答する前記アクセスがイネーブルにされる場合、前記第2パスワードの入力に応答する前記アクセスを阻止する回路をさらに含むことを特徴とする請求項1記載の装置。
【請求項6】
前記格納構造は、プログラム可能な格納構造を含むことを特徴とする請求項1記載の装置。
【請求項7】
前記第1セットの資源は、前記メモリの第1部分を含み、前記第2セットの資源は、前記第1部分と異なる前記メモリの第2部分を含むことを特徴とする請求項1記載の装置。
【請求項8】
前記第2セットの資源は、実質的に前記第1セットの資源のサブセットであることを特徴とする請求項1記載の装置。
【請求項9】
揮発性の第1メモリと、
実行用のコードを含む前記第1メモリに結合された第2メモリと、
前記コードを実行するために前記第2メモリに結合されたプロセッサと、
前記プロセッサに結合され、第1パスワードを含む第1格納構造と、
前記プロセッサに結合され、第2パスワードを含む第2格納構造と、
前記第1パスワードの入力に応答して、前記第2メモリ中の第1セットのコードをデバッグする第1セットの資源へのアクセスを許可し、前記第1セットの資源へのアクセスをディセーブルし、前記第2パスワードの入力に応答して、前記第2メモリ中の第2セットのコードをデバッグするために、第2セットの資源へのアクセスをイネーブルにする、回路と、
を含むことを特徴とするシステム。
【請求項10】
前記第1および第2アクセスは、デバッグ・インターフェイスを介すること特徴とする請求項9記載のシステム。
【請求項11】
前記第2格納構造は、連想記憶装置であることを特徴とする請求項9記載のシステム。
【請求項12】
前記回路は、前記第1パスワードの入力に応答するアクセスおよび前記第2パスワードの入力に応答するアクセスを相互排他的に行なうために、適合していることを特徴とする請求項9記載のシステム。
【請求項13】
第1セットのコード・デバッグ動作を行なうことをイネーブルにする第1パスワードをディセーブルにする段階と、
第2パスワードを格納する段階と、
第2セットのコード・デバッグ動作を行なうことをイネーブルにする前記第2パスワードを入力する段階と、を含み、
前記第1セットのコード・デバッグ動作の実行をイネーブルにすることおよび前記第2セットのコード・デバッグ動作の実行をイネーブルにすることは、相互に排他的であることを特徴とする方法。
【請求項14】
前記第2セットのコード・デバッグ動作の実行をイネーブルにすることは、前記第1セットのコード・デバッグ動作のサブセットを行なうことをイネーブルにすることを含むことを特徴とする請求項13記載の方法。
【請求項15】
前記第1および第2セットのコード・デバッグ動作は、デバッグ・インターフェイスを介して行なわれることを特徴とする請求項13記載の方法。
【請求項16】
前記第1パスワードをディセーブルする段階は、前記第2パスワードを格納する段階に起因することを特徴とする請求項13記載の方法。
【請求項17】
前記第1セットのコード・デバッグ動作を行なう段階を再イネーブルする第3パスワードをイネーブルにする段階をさらに含むことを特徴とする請求項13記載の方法。
【請求項18】
コンピューティング・プラットフォームによって実行されたときに、前記コンピューティング・プラットフォームに以下の動作を実行させる命令を提供する機械読取り可能な媒体において、
第1デバッグ・ステージ中に第1セットのコードのデバッグをイネーブルにする第1パスワードを受け取り、
前記第1デバッグ・ステージ中にデバッグ活動を阻止するために、前記第1パスワードをディセーブルにし、
第2パスワードを格納し、
第2デバッグ・ステージ中に第2セットのコードのデバッグをイネーブルにするために、前記第2パスワードを受け取る、
ことを特徴とする機械読取り可能な媒体。
【請求項19】
前記第1パスワードをディセーブルにする動作は、前記第2デバッグ・ステージ中に前記第1セットのコードへのアクセスを阻止することを特徴とする請求項18記載の媒体。
【請求項20】
前記第2パスワードを格納する動作は、前記第1パスワードをディセーブルにする結果となることを特徴とする請求項18記載の媒体。
【請求項21】
前記動作は、前記第1セットのコードの前記デバッグを再イネーブルするために、第3パスワードを使用することをさらに含むことを特徴とする請求項18記載の媒体。
【請求項22】
デバッグ・モード中に命令を実行するプロセッサと、
制御ビットを含む回路と、
前記プロセッサおよび前記第1回路に結合され、前記制御ビットの状態に基づいて、前記装置中で許可されるデバッグ・アクセスのレベルを判断する回路と、
を含むことを特徴とする装置。
【請求項23】
制御ビットを含む前記回路は、1セットのプログラム可能なヒューズを含むことを特徴とする請求項22記載の装置。
【請求項24】
前記デバッグ・アクセスを提供するために、前記プロセッサに結合されたインターフェイスをさらに含むことを特徴とする請求項22記載の装置。
【請求項25】
デバッグ・アクセスのレベルを判断する前記回路は、
少なくとも1つの前記命令が位置するアドレス範囲、
どの命令が実行されるか、および
前記実行の結果、アクセスされる資源、
の少なくとも1つに対する制限を判断することを特徴とする請求項22記載の装置。
【請求項26】
前記デバッグ・アクセスが前記制限の少なくとも1つに違反する結果となるとき、前記デバッグ・アクセスを終了させる回路をさらに含むことを特徴とする請求項25記載の装置。
【請求項27】
デバッグ・モードで命令を実行するプロセッサと、
前記プロセッサに結合された揮発性メモリと、
制御ビットの少なくとも1つの状態に基づいて、前記デバッグ・モード中に許可されるデバッグ・アクセスのレベルを示す1セットの制御ビットを含む回路と、
前記実行が前記デバッグ・アクセスのレベルによって定義された制限に違反するかどうかを判断する回路と、
を含むことを特徴とするシステム。
【請求項28】
前記制御ビットの前記状態は、前記回路の製造後に変更不可能であることを特徴とする請求項27記載のシステム。
【請求項29】
前記実行が前記制限に違反しない場合、前記実行の結果をデバッグ・インターフェイスに提示し、前記実行が前記制限に違反する場合、前記実行の結果を前記デバッグ・インターフェイスに提示しない回路をさらに含むことを特徴とする請求項27記載のシステム。
【請求項30】
前記結果を提示する前記回路は、前記実行が前記制限に違反する場合、前記デバッグ・モードを終了させる回路を含むことを特徴とする請求項29記載のシステム。
【請求項31】
前記実行が前記制限に違反するかどうかを判断する前記回路は、少なくとも1つの命令の予め定められたグループの実行後に前記判断を行なうために適合していることを特徴とする請求項27記載のシステム。
【請求項32】
1セットの制御ビットに基づいて、許可されたデバッグ・アクセスの現在のレベルを判断する段階と、
デバッグ・モードの動作中に信頼されたサブシステムで少なくとも1つの命令を実行する段階と、
前記実行が許可されたデバッグ・アクセスの前記現在のレベルによって定義された制限に違反する場合、前記実行の結果を提示しない段階と、
を含むことを特徴とする方法。
【請求項33】
前記提示しない段階は、前記デバッグ・モードの動作を終了する段階を含むことを特徴とする請求項32記載の方法。
【請求項34】
前記実行がデバッグ・アクセスの前記現在のレベルによって定義された前記制限に違反しない場合、前記実行の結果を提示する段階をさらに含むことを特徴とする請求項32記載の方法。
【請求項35】
前記制限は、
特定のメモリ・アドレス範囲にある前記少なくとも1つの命令のアドレス、
予め定められた命令のリストにある前記少なくとも1つの命令、および
予め定められた資源のリストにある、前記実行によってアクセスされたすべての資源、
の少なくとも1つに基づくことを特徴とする請求項32記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公表番号】特表2007−509441(P2007−509441A)
【公表日】平成19年4月12日(2007.4.12)
【国際特許分類】
【出願番号】特願2006−536725(P2006−536725)
【出願日】平成16年10月18日(2004.10.18)
【国際出願番号】PCT/US2004/034600
【国際公開番号】WO2005/043301
【国際公開日】平成17年5月12日(2005.5.12)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】