(57)【要約】  セキュアな実行中のメモリ・リソース及びI／Oリソースのデッドロックのないバス保護の方法及びシステム。バス・サイクルによって、セキュア実行モードへバス・エージェントが入ることが起動される。チップセットは、セキュア・モード・プロセッサの識別子を記録する。その後、チップセットは、セキュア・モード・プロセッサがセキュア・モードを出る前に別のバス・エージェントが、セキュリティ面で配慮を要するバス・サイクルを試行する場合、仲裁する。
2008512787.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
セキュア実行モードに入る旨の要求として第１のバス・エージェントからのバス・サイクルを識別する工程と、
前記第１のバス・エージェントの識別子を記録する工程と、
別のバス・エージェントが、セキュリティ面で配慮を要するバス・サイクルを起動させる場合に仲裁する工程とを備える方法。
【請求項２】
請求項１記載の方法であって、仲裁する工程は、
前記第１のバス・エージェントに高優先度割り込みを送出する工程及び
システム・リセットを起動させる工程のうちの一方を備える方法。
【請求項３】
請求項１記載の方法であって、仲裁する工程は、
前記セキュリティ面で配慮を要するバス・サイクルの完了を妨げる工程を備える方法。
【請求項４】
請求項１記載の方法であって、仲裁する工程は、
他のバス・エージェントによって起動された後続トランザクションを妨げる工程を備える方法。
【請求項５】
請求項１記載の方法であって、
何れかのバス・エージェントからの、セキュリティ面で配慮を要しないバス・サイクルを可能にする工程を更に備える方法。
【請求項６】
請求項１記載の方法であって、
バスに対する大局的な動作を起動させる工程と、
前記第１のバス・エージェントがセキュア・モードにある間に各バス・エージェントから前記バスを介して前記大局的な動作の肯定応答を受け付ける工程と、
前記大局的な動作を完了させる工程とを更に備える方法。
【請求項７】
請求項１記載の方法であって、ライトバック・サイクル以外のシステム・メモリ及び入出力デバイスに向けられた読み取りサイクル及び書き込みサイクルは全て、セキュリティ面で配慮を要するサイクルであるとみなされる方法。
【請求項８】
請求項１記載の方法であって、 
前記セキュア実行モードのリリースを示すバス・サイクルを前記第１のバス・エージェントから受信する工程と、
前記リリースに応じて仲裁を中断する工程とを備える方法。
【請求項９】
システムであって、
バスと、
前記バスに結合された第１のバス・エージェントであって、セキュア実行モードに入ることを可能にするためのロジックを有する第１のバス・エ―ジェントと、
前記バスに結合された第２のバス・エージェントと、
前記バスに結合され、第１のプロセッサからのバス・サイクルを識別して、前記セキュア実行モードを起動させるためのチップセットであって、前記第１のプロセッサの識別子を記録するためであり、前記第１のプロセッサが前記セキュア実行モードを出るまで第２のプロセッサからの、セキュリティ面で配慮を要するバス・サイクルを制限するためのチップセットとを備えるシステム。
【請求項１０】
請求項９記載のシステムであって、前記第１のプロセッサは、
内部ランダム・アクセス・メモリと、
認証エンジンと、
第２のバス・サイクルに入って前記セキュア実行モードを出る旨の第１のバス・サイクルを生成するためのマイクロコードと、
前記第１のバス・サイクル及び前記第２のバス・サイクルを起動させるためのバス・コントローラとを備えるシステム。
【請求項１１】
請求項９記載のシステムであって、前記チップセットは、
前記第１のプロセッサ及び前記第２のプロセッサからのバス・サイクルを受け付けるためのバス・コントローラと、
前記セキュア実行モードへ入ることを要求するサイクルを識別するためのロジックと、
前記サイクルのソースの識別子を保持するための記憶エレメントと、
前記識別子を、セキュリティ面で配慮を要する後続サイクルのソースの識別子と比較するためのロジックとを備えるシステム。
【請求項１２】
請求項９記載のシステムであって、前記第１のバス・エージェント及び前記第２のバス・エージェントはそれぞれ、前記セキュア実行モードに入ろうとすることに応じて局所キャッシュを無効にするためのキャッシュ無効化ロジックを含むシステム。
【請求項１３】
請求項９記載のシステムであって、前記第２のバス・エージェントが、
直接メモリ・アクセス・コントローラ、ネットワーク・プロセッサ、汎用プロセッサ、及び入出力バス・マスタのうちの１つであるシステム。
【請求項１４】
装置であって、
セキュア実行モードに入ることを要求するバス・サイクルを識別するためのバス・コントローラと、
前記バス・サイクルのソースの識別子を記録するための記憶装置と、
セキュリティ面で配慮を要するバス・サイクルが前記ソースからであるかを識別するための比較ロジックとを備える装置。
【請求項１５】
請求項１４記載の装置であって、
前記比較ロジックが、前記セキュリティ面で配慮を要するバス・サイクルが前記ソースから発信されたものでないことを識別することに応じてシステム・リセットを強いるためのリセット・ロジックを更に備える装置。
【請求項１６】
請求項１４記載の装置であって、
前記セキュリティ面で配慮を要するバス・サイクルが別のソースから発信された場合に、前記セキュリティ面で配慮を要するバス・サイクルに応じて前記バス・サイクルの前記ソースに向けられた高優先度割り込みを生成するための割り込み生成器を更に備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、セキュアな実行環境に関する。特に、本発明の実施例は、セキュアな実行モードにおいて実行する少なくとも１つのプロセッサを有するマルチプロセッサ・システムにおけるデッドロック状態を回避することに関する。
【背景技術】
【０００２】
複数のプロセッサ・システムは、今日の情報主導型社会において広く普及している。特定の場合、システム内の１つのプロセッサが、セキュリティ面での配慮を要する情報を、そのシステム内の他のプロセッサによるその情報へのアクセスを制限する一方で処理することが可能であることが望ましい。その目的で、セキュアなデータをアクセスする可能性がある者を認証し、そのデータを共有メモリや他の共有リソースにおいて露呈させる一方で他のエージェントによってアクセスされないようにするための種々のセキュアな環境が確立されている。特定の場合、共有バス上のアービトレータは、セキュアなモードにおいて実行していないプロセッサの何れにバスを付与することも妨げられる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
残念ながら、特定の大局的な動作（クロック停止動作など）によって、クロック停止動作の実行に対する用意があることを示す旨の肯定応答がプロセッサ全てから必要になる。アービトレータが、セキュアなモード内のプロセッサ以外のバス・エージェント全てにバスを付与しない状態を維持している場合、残りのバス・エージェントはクロック停止要求に肯定応答することができず、よって、クロック停止動作は一切行われない。このことによって、電力面でかなり非効率になり、かつ／又は、デッドロック状態がもたらされる。
【課題を解決するための手段】
【０００４】
本発明は、添付図面の図において、限定ではなく例として示す。同じ参照符号は同じ構成要素を示す。
【発明を実施するための最良の形態】
【０００５】
本明細書中の「an  embodiment」又は「one  embodiment」への言及は必ずしも同じ実施例に対してではなく、前述の言及は少なくとも１つを意味する。
【実施例】
【０００６】
図１は、本発明の一実施例のシステムの構成図である。第１のバス・エージェント（プロセッサ１００など）がバス１１２に結合される。バス１１２は、1つ又は複数の更なるバス・エージェント（プロセッサ１６０など）と共有される。バス・エージェントの数は、任意的に大きく、バス１１２の物理的制限及び電気的制限によって制限され得る。アービトレーション装置１１４は、種々のバス・エージェント間（プロセッサ１００とプロセッサ１６０との間など）のバス１１２へのアクセスのアービトレーションを行う。特定の実施例では、別個の物理バスが、存在し得るが、単一のバスとして論理的にアービトレーションが行われる。チップセット１２０はバス１１２上に存在している。チップセット１２０は、バス・エージェント共有バス１１２とシステム・メモリ１４０と入出力（I／O）デバイス１５０との間のインタフェースを供給する。一実施例では、各プロセッサは、システム・メモリ１４０や入出力デバイスなどのシステム・リソースへアクセスするためにチップセット１２０に対して専用のバス及びインタフェースを有し得る。
【０００７】
各プロセッサ１００、１６０はそれぞれ、キャッシュ１０２及びキャッシュ１６２を含む。マルチプロセッサ・システムにおけるキャッシュのコヒーレンシは、伝統的にキャッシュ・コヒーレンシがマルチプロセッサ・システムにおいて維持されるライトバック、ライトスルーや何れかの他のやり方をはじめとする何れかの通常のやり方で行うことができる。プロセッサ１００は、適切なバス・サイクルを発行することによって、セキュアな実行モードをプロセッサが出入りすることを可能にするためのマイクロコード１１０を含む。認証エンジン１０８は、プロセッサ１００が、外部ソースから受け取られるコードを認証して、コードが信頼されなければならないことを確実にするよう備えられる。一実施例では、認証エンジン１０８は、コードをハッシングし、このハッシュ値を、公開鍵／秘密鍵対のうちの公開鍵を用いて復号されたディジタル署名ハッシュ値と比較することによって、コード・モジュールに対する認証を行うことができる。別の実施例では、認証はマイクロコード１１０によって行うことができる。コードが首尾良く認証されると、プロセッサ１００は、セキュアなモードへ入る旨のバス・サイクルをブロードキャストし得る。一旦セキュアなモードに入ると、プロセッサ１００は、セキュアなモードをリリースする旨のバス・サイクルを発行するまでセキュアなモード内で動作することができる。
【０００８】
一実施例では、マイクロコード１１０は、バス１１２とのリエゾンとしてバス・コントローラ１０４を用いて、セキュア実行モードに入る旨のバス・サイクルを生成する。セキュア実行モードでは、プロセッサ１００は、内部のランダム・アクセス・メモリ（RAM）１０６からの認証コードを実行する。RAM１０６が内部データであり、そこにおいて続けられるコードは通常、外部エージェントによるアクセスが可能でない。しかし、そのコードは、システム・メモリ140からの、セキュリティ面での配慮を要するデータを用いるか、又は、他のバス・エージェントがアクセスを付与されてはならないデータに関係する、セキュリティ面での配慮を要するI／O動作を行うことができる。よって、プロセッサ１００は、セキュアなモードにおいて動作しているが、セキュリティ面での配慮を要するバス・サイクルをプロセッサ１６０がバス１１２上で実行することが可能でないことが重要である。しかし、前述の通り、アービトレータ１１４においてアービトレーションを行う権利を拒否することによってプロセッサ１６０がバスをアクセスすることを制限することは、デッドロック状態につながり得る。
【０００９】
よって、セキュアなモードに入る旨の要求を構成する信号をバス・コントローラ１０４が出すと、チップセット１２０内のバス・コントローラ１２４はそのサイクルを受信し、識別ロジック１２６は、プロセッサ１００の識別子を抽出し、この識別子はプロセッサ１００を、システム内の他のバス・エージェントに対して一意に識別する。識別子は、後続バス・サイクルとの比較に用いるために記憶装置１２８に記録される。別の実施例では、プロセッサは全て、セキュアなモードに入るプロセッサに対する事前要求としてキャッシュ無効化ハンドシェークを行う。プロセッサ１００及び１６０それぞれに存在しているキャッシュ無効化ロジック１３０、１３１は、キャッシュ無効化を行う。このことによって、セキュアな実行モード中のライトバックの必要がなくなる。別の実施例では、キャッシュ無効化は行われないが、スヌープ・サイクルに応じた、セキュアでないバス・エージェントからのバス書き込みは、「セキュリティ面での配慮を要する」サイクルとみなされない。
【００１０】
プロセッサ１００がセキュア実行モードにおいて動作している間、チップセット１２０は、セキュリティ面での配慮を要するサイクルを求めてバス１１２を監視する。セキュリティ面での配慮を要するサイクルが識別された場合、チップセットは、ロジック１２２を用いて、発信元バス・エージェントの識別子を、記憶装置１２８に記録された識別子と比較する。前述の識別子が一致する場合（例えば、セキュリティ面での配慮を要するバス・サイクルの発信元が、セキュアなモードで動作しているバス・エージェントの場合）、トランザクションの完了が可能になる。しかし、前述の識別子が一致しない場合（例えば、プロセッサ１００が、セキュアな実行モードにおいて実行している間に、プロセッサ１６０がシステム・メモリ１４０との間で読み書きを行おうとする場合）、チップセット１２０は、仲裁し、そのトランザクションが完了するのを妨げようとするか、又は、セキュアでないバス・エージェントによる更なるトランザクションを妨げる。仲裁を容易にするために、チップセット１２０は、リセット／割り込みロジック１３２を含み得る。一実施例では、チップセット１２０は、セキュアでないバス・エージェントによって発行されたセキュリティ・バス・サイクルに応じてシステム・リセットをアサートすることによって仲裁する。別の実施例では、チップセット１２０は、バス・エージェント（例えば、セキュアなモードにおいて実行しているプロセッサ１００）に対して高優先度割り込みをアサートする。各プロセッサが専用バスを有するが、特定のシステム・リソースを共有する実施例では、共有リソース（システム・メモリ１４０やI／Oデバイス１５０など）のアクセスのみが、セキュリティ面での配慮を要するとみなし得る。違ったふうに述べれば、プロセッサは、別のバス・エージェントが、セキュアなモードにある場合でも、チップセットによる介入なしでその専用リソースを自由に用いることができる。
【００１１】
特定の場合、チップセット１２０は、大局的な動作を行おうとし得る。例えば、電力管理の意味合いでは、チップセットには、クロック停止動作のアサートのタスクが課される場合が多い。しかし、その大局的な動作が行われ得る前に、バス上のエージェント（例えば、プロセッサ１００やプロセッサ１６０）それぞれは、特定の状態（例えば、そのクロックを停止させることが可能である状態）にあることを肯定応答しなければならない。クロック停止肯定応答は、セキュリティ面で配慮を要するトランザクションとみなされないので、一エージェントがセキュア実行モードにおいて動作している際にも、バス上のエージェント全てから完了させることが可能である。このようにして、電力管理や他の事務的作業は、セキュア実行モードのセキュリティを脅かすことなく効果的に実現することができる。
【００１２】
特定の実施例では、他のバス・エージェント（直接メモリ・アクセス（DMA）コントローラ、ネットワーク・カードや他のI／Oバス・マスタなど）は、セキュリティ面で配慮を要するトランザクションを試行し得る。一実施例では、前述のデバイスによるセキュリティ違反を防止することは、前述のデバイスを制御しているプロセッサに任せられる。別の実施例では、チップセットは、前述のバス・エージェントをプロセッサ・バス・エージェントと同様に扱う（例えば、別のエージェントが、セキュアなモードにある一方で、前述のエージェントが、セキュリティ面で配慮を要するサイクルをアサートする場合、介入する）。
【００１３】
図2は、本発明の一実施例のチップセット内の動作の流れ図である。判定ブロック２０２では、バス・サイクルが、セキュアなモードに入る旨の要求を構成しているかについての判定を行う。否定の場合、チップセットは、セキュアなモードに対する要求であるバス・サイクルが受信されるまで、通常の過程において完了することを可能にして、更なるバス・サイクルを求めて監視する。セキュアなモードに対する要求であるバス・サイクルが受信されると、チップセットは、ブロック２０４で、要求バス・エージェントの識別子を記録する。
【００１４】
ブロック２１０は、大局的な動作をチップセットが起動させることができることを反映するために極めて細い線で描いているが、流れ図を通じた各繰り返しにおいてそうしなくてよい。前述の大局的な動作は、例えば、クロック停止状態のアサート、又は応答を必要とするコントローラ割り込みメッセージ・サイクルを含む。
【００１５】
ブロック２１２では、チップセットはバス・サイクルを受け取る。判定ブロック２１４では、チップセットは、サイクルがセキュリティ面で配慮を要するとみなされることを判定する。例えば、一実施例では、システム・メモリ又はI／Oデバイスとの間の読み取りサイクル及び書き込みサイクルは全て、セキュリティ面で配慮を要するとみなされる。更に、種々の制御サイクルが、セキュリティ面で配慮を要するとみなされ得る。逆に、例えば、割り込み肯定応答や、大局的な動作の肯定応答はセキュリティ面で配慮を要しないとみなされる。例えば、（別のプロセッサが、セキュアなモードにおいて既に実行している場合に）セキュアなモードに入る旨の第２の要求は、攻撃として扱うことができる。サイクルが、セキュリティ面で配慮を要しない場合、未処理の大局的な動作にサイクルが肯定応答するかを判定する。否定の場合、サイクルは、ブロック２１８で完了することが可能になる。肯定の場合、全てのエージェントから肯定応答が受け取られたかを判定ブロック２２０で判定する。エージェント全てに肯定応答された場合、チップセットはブロック２２２で、大局的な動作を完了させる。
【００１６】
判定ブロック２１４で、サイクルがセキュリティ面で配慮を要することが判定された場合、サイクルがセキュア・エージェントからかが２２４で判定される。サイクルがセキュア・エージェントからの場合、ブロック２２６で、バス・サイクルが、セキュア・モードのリリースかの判定が行われる。否定の場合、バス・サイクルは、ブロック２１８でこれを完了させることが可能になる。肯定の場合、セキュア・モードに現在いる、システム内のエージェントはその場合、何らない。判定ブロック２２４で、サイクルが、セキュア・モードにおけるエージェントからでないことが判定された場合、チップセットは２２８で、バス・アクセスにおいて仲裁する。種々の実施例では、この仲裁は、セキュアなモードで動作しているバス・エージェントへの高優先度割り込みのアサートの形態を呈し得るか、又は、システム全体をリセットするためのシステム・リセットのアサートの形態を呈し得る。
【００１７】
図3は、本発明の一実施例における、プロセッサ内の動作の流れ図である。ブロック３０２では、プロセッサはコード・ブロックを認証する。ブロック３０４では、プロセッサは、セキュア・モードに入ることを要求するバス・サイクルをブロードキャストする。判定ブロック３０６は、キャッシュ・コヒーレンシのためのライトバックがセキュア実行モード中に可能であるか否かが判定される設計期間中に行われる暗黙的な判定が行われる。別の実施例では、認証コードは、判定ブロック３０６において判定を行うための基礎を備え得る。例えば、認証コードは、ライトバックが可能であるか否かを示すようプロセッサ内のレジスタを設定することができる。ライトバックが可能でない場合、キャッシュ・バス・エージェントは全て、ブロック３０７においてキャッシュを無効化して、セキュアな実行中のキャッシュ・コヒーレンシを確実にする。キャッシュ無効化は、セキュアなモードに入るための事前要求としてキャッシュ内の最も直近の情報をシステム・メモリにもう一度書き込むことを事実上必要とする種々のハンドシェーク手法を用いて行うことができる。ブロック３０８では、プロセッサは、内部ランダム・アクセス・メモリ（RAM）からの認証コードを実行する。プロセッサは、不定の期間、セキュア・モードに留まり得る。一実施例では、セキュアなプロセッサが、セキュアな実行モードを出る旨のリリース・サイクルをバス上に出すまで、チップセットはそのセキュアな警戒を維持する。プロセッサは、そのセキュアな実行を終えると、ブロック３１０で、セキュア・モードを出る旨のリリース・サイクルを発行する。
【００１８】
上記明細書では、その特定の例示的な実施例を参照して本発明を説明している。しかし、種々の修正及び変更をそれに対して、特許請求の範囲に記載した本発明の更に広い趣旨及び範囲から逸脱することなく行うことが可能である。本明細書及び添付図面はよって、限定的な意味合いでなく例証的な意味合いで解するものとする。 
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施例のシステムの構成図である。
【図２】本発明の一実施例のチップセット内の動作の流れ図である。
【図３】本発明の一実施例における、プロセッサ内の動作の流れ図である。
【図１】
2008512787.tif 000003
【図２】
2008512787.tif 000004
【図３】
2008512787.tif 000005
【国際調査報告】
2008512787.tif 000006
2008512787.tif 000007
2008512787.tif 000008