(57)【要約】コンピューターシステム（１０）は、セキュリティ初期化命令を実行することにより、セキュア実行モードを初期化することができるプロセッサ（１００Ａ）を含んでいる。さらにこのプロセッサは、セキュアオペレーティングシステムコードセグメントを実行することにより、セキュア実行モードで動作する。このコンピューターシステムはまた、複数のロケーションにデータを記憶するように構成されるシステムメモリ（１１０Ａ）を含んでいる。コンピューターシステムはさらに、プロセッサのリセットに応じて動作可能となった際に、システムメモリのメモリロケーションのプログラムされた範囲から選択的にデータをクリアすることができるメモリコントローラ（１０１Ａ）を含んでいる。
2007504553.tif 000002
【特許請求の範囲】
【請求項１】
セキュアオペレーティングシステムコードセグメントを実行することにより、セキュア実行モードで動作するように構成されるプロセッサ（１００Ａ）と、
前記プロセッサに接続され、データを記憶する複数のロケーションを含むシステムメモリ（１１０Ａ）と、
前記システムメモリに接続され、前記プロセッサのリセットに応じて動作可能とされると、前記システムメモリの前記複数のロケーションのプログラムされた範囲におけるメモリクリア動作を使用して、前記データを選択的にクリアするように構成されるメモリコントローラ（１０１Ａ）と、
を含む、コンピュータシステム（１０）。
【請求項２】
前記メモリコントローラはさらに、前記リセットの前に前記プロセッサがサスペンド・トゥ・ラム状態にあったかどうか決定するように構成される、請求項１記載のコンピュータシステム。
【請求項３】
前記メモリコントローラはさらに、前記リセットの前に前記プロセッサがサスペンド・トゥ・ラム状態になかったと判断するのに応じて、前記メモリクリア動作を使用して前記データをクリアするように構成される、請求項２記載のコンピュータシステム。
【請求項４】
前記リセットの前に、前記プロセッサがサスペンド・トゥ・ラム状態にあったと判断するのに応じて、前記メモリコントローラは、以前のメモリクリア動作においてクリアされた前記複数のロケーションの前記プログラムされた範囲のサイズと現在のプログラムされたメモリサイズとが同一であるかどうかを決定するように構成される、請求項２記載のコンピュータシステム。
【請求項５】
前記メモリコントローラは、前記以前のメモリクリア動作においてクリアされた前記複数のロケーションの前記プログラムされた範囲のサイズと前記現在のプログラムされたメモリサイズとが同一でないとの決定に応じて、前記メモリクリア動作を使用して前記データをクリアするように構成される、請求項４記載のコンピュータシステム。
【請求項６】
前記メモリコントローラは、前記プロセッサが、前記リセットの前にＲＡＭ状態だったかどうかを示すビットを記憶するように構成される記憶装置（３２５）を含む、請求項２記載のコンピュータシステム。
【請求項７】
Ｉ／Ｏインターフェース（１２０）を介して前記プロセッサに接続され、前記セキュア実行モード中の前記プロセッサの初期設定の間、前記セキュアオペレーティングシステムコードセグメントの少なくとも一部が有効であるか否かを照合するように構成される、セキュリティサービスプロセッサ（１３０）をさらに含む、請求項１記載のコンピュータシステム。
【請求項８】
セキュリティ初期設定命令の実行により、セキュア実行モードにおいてプロセッサ（１００Ａ）を初期化し、セキュアオペレーティングシステムコードセグメントの実行により、前記プロセッサを前記セキュア実行モードで実行させるステップと、
システムメモリ（１１０Ａ）の複数のロケーション内にデータを記憶するステップと、
前記プロセッサのリセットに応じて、前記システムメモリの前記複数のロケーションのプログラムされた範囲におけるメモリクリア動作を使用して、前記データを選択的にクリアするステップと、
を含む、方法。
【請求項９】
前記リセットの前に、サスペンド・トゥ・ラム状態だったかどうかを決定するステップをさらに含む、請求項８記載の方法。
【請求項１０】
前記リセットの前に、前記プロセッサがサスペンド・トゥ・ラム状態になかったとの判断に応じて、前記メモリクリア動作を使用して前記データをクリアするステップをさらに含む、請求項９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関し、より詳しくは、コンピュータシステムのメモリに記憶されているデータを不正アクセスから保護するための高信頼実行モードを採用したコンピュータシステムに関する。
【背景技術】
【０００２】
最近のコンピュータシステムは、人々の生活スタイルを大きく変えている。特に、ｘ８６アーキテクチャを採用するマイクロプロセッサを含むシステムプラットフォームにおいては特にそれが当てはまる。ユーザ自らがインストールすることのできるサードパーティ製の無数の周辺装置やアプリケーションに対してｘ８６ベースのシステムが開放されていることによって、ハードウェアおよびソフトウェアベンダの広範な市場が実現され、競合、革新、そして進化を促進してきた。
品質および性能が向上し続けるデジタルコミュニケーション／メディアシステムとして上記プラットフォームが幅広く使用されていることが、そのような進化の例である。インターネットとも相俟って、これらのシステムプラットフォームは、デジタルコンテンツの大量配信（mass distribution）を明らかに激変させており、世界中のラジオ局、新聞およびリアルタイムの天気情報へのオンデマンドのアクセスや、オンラインバンキングおよびオンラインショッピング、オーディオおよびビデオベースのエンタテインメントを可能にしている。
【０００３】
ｘ８６プラットホームはオープンアーキテクチャなので、通常デバイスはそのデバイスにアクセスするためにカーネルモードで動作するベンダから供給されるドライバを有し、ある種のソフトウェアアプリケーションはカーネルモードコンポーネントを含んでいる。したがって、オープンアーキテクチャは数々の利点を有しており、あるアプリケーションが他のアプリケーションと偶発的に干渉することに対してすでに大規模な保護（プロテクション）を提供してはいるものの、現在のアーキテクチャとしての保護メカニズムは、この環境において望ましくない不正操作にさらされる可能性がある。
【０００４】
ｘ８６アーキテクチャを採用するマイクロプロセッサを含むコンピュータシステムは、アプリケーションがお互いに干渉し合わないように保護するようにして設計された機能を有する。例えば、ｘ８６ベースのオペレーティングシステムは、複数のアプリケーションが互いに分離された環境であって、クリティカルなオペレーティングシステムのコードやデータがアプリケーションから分離された環境を提供するため、ｘ８６プロテクトモードのアーキテクチャの有する次の２つの機能、すなわち、１）ページ化された仮想メモリ（Paged Virtual Memory）および２）実行特権レベル（Execution Privilege Level）、に依存している。
【０００５】
ページ化された仮想メモリのおかげで、オペレーティングシステム（ＯＳ）は、各アプリケーションに対して独立した仮想アドレス空間を定義して、一組のアドレス変換テーブルを介して物理メモリの個々のページを仮想アドレス空間のそれぞれに選択的にマッピングすることもできる。
これにより、各アプリケーションは、コードおよびデータのための物理メモリ上に他のアプリケーションからはアクセスし得ない当該アプリケーション専用のスペースを有する。
また、仮想メモリメカニズムによれば、ＯＳは物理メモリのページを複数の仮想アドレス空間に選択的にマッピングすることもできるし、かかるページを仮想空間内において選択的に読み出し専用（リードオンリー）として指定することも可能である。この共有マッピング能力のおかげで、ＯＳカーネル自体のコピーが各アプリケーションのアドレス空間内に常駐することが可能になり、同様に、周辺装置のアクセスポートおよび関連するデバイスドライバルーチンの共有マッピングも可能であろう。このようにして、ロスの多いアドレス空間の切り替えを必要とせずに、アプリケーションにＯＳサービスへの効率的なアクセスを提供している。しかし、アドレス空間のＯＳ部分は、ＯＳコードによる変更が可能でなければならないシステムデータ領域を必然的に含んでおり、それは現時点においてもアプリケーションコードから保護されていなければならない。リードオンリー指定はかかる領域に対して適切な保護を提供することができない場合がある。
【０００６】
さらに、ｘ８６アーキテクチャは、４つの特権レベル、０から３を定義しており、これらはＯＳによりコード領域に割り当てられ、コードセグメントのディスクリプタ（記述子）内に保存される。一般的には、現在実行されているコードまたはプロシージャの特権レベルは、現行特権レベル（ＣＰＬ）として記憶される。したがって、この特権レベルは通常、ＣＰＬ０からＣＰＬ３と呼ばれる。これらの特権レベルを用いることにより、ある種のシステムリソースは適切なレベルで実行されているコードからのみアクセス可能となる。ページ化された仮想メモリアーキテクチャは、仮想メモリのページへのアクセスを特権レベルによって制限できるようにする。４種の特権レベルが定義されているが、ページ化された仮想メモリアーキテクチャはＣＰＬ１やＣＰＬ２をＣＰＬ０と区別しないことから、主流となっているオペレーティングシステムにおいては通常、ＣＰＬ０とＣＰＬ３レベルのみが用いられる。
ＣＰＬ０は一般にカーネルモードと呼ばれ、最も高い特権レベルである。一方、ＣＰＬ３は一般にユーザモードと呼ばれ、最も低い特権レベルである。ＯＳコードおよびデータには通常ＣＰＬ０に割り当てられ、アプリケーションコードおよびデータにはＣＰＬ３に割り当てられる。ＣＰＬ０実行特権は、リードオンリー保護に優先せず、２つの属性は互いに独立している。コードセグメントのディスクリプタを用いて、これらのレベルを割り当てている。
【０００７】
このメモリ保護に加えて、仮想メモリ動作を制御するものを含む、すべてのプロセッサ制御レジスタは、アーキテクチャの定義では、ＣＰＬ０においてのみアクセス可能である。
さらに、あるセグメントから他のセグメントに実行を切り替え、これによって特権レベルを変更するためには、一般的に、特別な制御転送命令が必要とされる。これらの命令により、ＯＳはかかる制御転送の対象をＯＳにより制御されるコード中の特定のエントリポイントに限定することができるようになる。したがって、アプリケーションは、ＯＳに制御を渡すことなしに特権レベルを変更することはできない。
【０００８】
相互のアドレス空間の分離、およびＯＳメモリのアプリケーションからの分離は、仮想メモリのアドレス変換テーブルの内容によって完全に制御することができる。このアドレス変換テーブルは、あるアプリケーションのメモリを他のアプリケーションのメモリから分離する仮想対物理ページマッピングを定義し、さらに共有ライブラリとＯＳを保護するリードオンリー属性および特権レベル属性をも定義する。アドレス変換テーブルそれ自体はメモリ上に存在し得るデータ構造であり、それらを共有ＯＳメモリ領域にマッピングし、それらに対するアクセスをカーネルモードコードに制限する変換エントリを含んでいる。
【０００９】
この既存の保護メカニズムはアプリケーションおよびオペレーティングシステムに対して適切な保護を提供しているように見える。うまく動作しているシステム（例えば、オペレーティングシステムによってこれらのメカニズムの適用を修正する、これらのメカニズムを制御するＯＳコードの動作を修正する、および、カーネルモードで動作する他のすべてのコードがこれと干渉しない。）においてはそのとおりである。
しかしながら、典型的なｘ８６ベースのシステムは、かかる大量のカーネルモードのコードを含んでいる。これらのカーネルモードのコードは、ＯＳベンダからだけではなく、多くの独立したソースから提供されるものであり、それが偶発的なものにしろそうでないにしろ、そのような干渉が発生しないことを保証できる者は誰もいない。
【００１０】
このことは、物理メモリのコンテンツにおいて特にあてはまる。例えば、メモリ中に与えられたロケーションのコンテンツがアプリケーションによってもう必要でない場合、そのロケーションの割り当ては一般的に取り消される。しかしながら、そのロケーションに記憶された実際のデータは、まだそのままであり得る。
ユーザが実行しているオペレーションのタイプや稼働中のソフトウェアアプリケーションのタイプによって、コンピュータシステム内に記憶されている情報またはコンピュータシステム上で実行されている情報は、外部からのアクセスに対して脆弱になり得る。したがって、セキュリティを改善し、ｘ８６アーキテクチャのシステムのそのようなアクセスに対する脆弱性をできる限り小さくすることが望ましい。
【発明の開示】
【００１１】
高信頼実行環境を採用するとともにメモリをクリア（clear memory）するように構成されるコンピュータシステムについてのさまざまな実施形態が開示される。
ある実施形態においては、このコンピュータシステムは、セキュアオペレーティングシステムコードセグメントを実行することにより、セキュア実行モードで動作し得るプロセッサを含んでいる。
このコンピュータシステムはまた、データを記憶する複数のロケーションを含むシステムメモリを含んでいる。このコンピュータシステムはさらに、システムメモリに接続されたメモリコントローラを含んでいる。
このメモリコントローラは、プロセッサのリセットに応じて動作可能（イネーブル）とされると、システムメモリの複数のロケーションにわたりプログラムされたデータを選択的にクリアすることができる。
【００１２】
ある特定の実施形態においては、このメモリコントローラは、リセットの前に、サスペンド・トゥ・ラム（ＳＴＲ）（Suspend To RAM）状態にあるかどうか決定することができる。
このメモリコントローラはさらに、リセットの前にプロセッサがＳＴＲ状態にないとの判断に応じて、データをクリアすることができる。
【００１３】
本発明については、様々な変形および置換が可能であるが、特定の実施形態を例示のために図示し、本明細書において詳細に説明する。しかしながら、この特定の実施形態に関する図および説明は、開示した特定の形態に本発明を限定することを意図したものではなく、むしろ反対に、添付の特許請求の範囲に定義される本発明の技術的範囲内に属する変形例、均等物および代替物のすべてを含むことを意図したものである。
【発明を実施するための最良の形態】
【００１４】
＜セキュアコンピューティングプラットフォームの概要＞
高信頼コンピューティングによれば、コンピュータシステム（例えば、パーソナルコンピュータ（ＰＣ））のユーザは、当該ユーザのプライバシーを攻撃から保護しつつ、電子マネーや動画をダウンロードするといったような新しい活動に参加することが可能となる。
高信頼コンピューティング環境の一部となるためには、例えば、ＰＣそれ自体も、ユーザおよび銀行、コンテンツプロバイダといった外部組織の双方から信頼されなければならない。
高信頼ＰＣを構成するのに必要な主要要素には、高信頼処理環境、プラットフォーム特有のシークレット、暗号処理、セキュアな記憶装置、およびセキュリティカーネル（ＳＫ）と呼ばれるセキュア・オペレーティングシステム・コードセグメントが含まれる。これらの要素を実装する構成ブロックについて、以下に詳細に説明する。
【００１５】
ｘ８６命令を実行するように構成されたプロセッサは、一般的に、ページ化された仮想メモリや特権実行モードを提供する保護モードのようなアーキテクチャ上の機能と、これらの機能を制御する制御レジスタセットを含んでいる。
これらの制御レジスタとページテーブルへのアクセスを制御することによって、コンピュータシステム内のプログラムコードやデータに対する不正アクセスに対する保護を追加することができる。
したがって、このようなプロセッサに対する一組のアーキテクチャ拡張を追加し、それに対応するサポートソフトウェアを提供することによって、この保護を提供することができる。
プロセッサに対する全体的なセキュリティ強化は、セキュア実行モード（ＳＥＭ）と呼ばれる。このセキュア実行モード（ＳＥＭ）はプロセッサに付加された新しい動作モードであり、外部からの不正操作を受けることなく、セキュリティカーネルが動作する高信頼動作環境を構築するものである。
【００１６】
したがって、ＳＥＭで動作可能なプロセッサは、ＳＥＭによって動作可能とされると、例えば、高信頼実行（ＴＸ）の動作モードなどのＳＥＭ動作モードをサポートする。
この高信頼実行モードは、実行されているソフトウェアの種類およびその特権レベルに応じて、ノーマルユーザモードおよびノーマルカーネルモードに加えて、セキュアユーザモードおよびセキュアカーネルモードで動作するＳＥＭ機能付きプロセッサを含んでいてもよい。
この環境内で実行されるソフトウェアおよびハードウェアメモリアクセス（例えば、ダイレクトメモリアクセス（ＤＭＡ））からのみアクセス可能な保護されたメモリ領域を形成するためのメカニズムも提供される。
【００１７】
この新しい高信頼実行環境（ＴＸ）は、ユーザ環境とカーネル環境とを分離するために使用される従来のノーマル／保護モード（Ｒｉｎｇ３／Ｒｉｎｇ０）メカニズムに少し似ている。
したがって、ＳＥＭ実行可能なＣＰＵは、上記のＴＸモードを生成し、実行するハードウェアメカニズムを備えている。
【００１８】
最新のＡＣＰＩ（Advanced Configuration and Power Interface）仕様の修正が、様々なシステムの動作状態およびスリープ状態を定義することが注目されている。
このようなスリープ状態の１つは、サスペンド・トゥ・ラム（ＳＴＲ）状態とも呼ばれることのあるＳ３状態である。このＳ３状態は、システムメモリを除いたすべてのシステムコンテキストが失われる、ロー・ウェイクアップ・レイテンシ・スリープ状態（low wakeup latency sleep state ）として定義される。
Ｓ３状態に入る際、ほとんどのシステムデバイスの電源が落とされる。しかしながら、システムメモリをサポートするメモリコントローラのようなデバイスには、電力が部分的に供給され得る。
【００１９】
ＡＣＰＩシステム管理は、その大部分において、高信頼コンピューティングおよび高信頼環境に影響を及ぼさない。しかしながら、あるＳ状態から他のＳ状態に移行することは、何らかの関連性を有している。
例えば上述のように、プロセッサがリセットさらた場合、高信頼環境を初期化するプロセスの一部は、物理メモリのコンテンツをクリアする。
しかしながら、システムがＳ３状態である場合、メモリはクリアされるべきではない。同様に、例えばシステムが、Ｓ４状態のような他のスリープ状態に置かれる場合、高信頼メモリの中にある秘密保護されたものを、ハードディスク上に保護されていない状態で記憶することはできない。
【００２０】
＜高信頼コンピューティングプラットホームを採用したコンピュータシステム＞
図１は、高信頼コンピューティングプラットホームを採用したコンピュータシステムの一実施形態のブロック図である。
コンピュータシステム１０は、ＳＥＭプロセッサ１００ＡおよびＳＥＭプロセッサ１００Ｂと呼ばれるＳＥＭを実行可能な２つのプロセッサを含む。ＳＥＭプロセッサ１００Ａはプロセッサバス１０５を介してＳＥＭプロセッサ１００Ｂに接続される。
さらにコンピュータシステム１０は、ＳＥＭプロセッサ１００Ａに接続されるシステムメモリ１１０Ａと、ＳＥＭプロセッサ１００Ｂに接続されるシステムメモリ１１０Ｂとを含む。ＳＥＭプロセッサ１００Ａはシステムバス１２５を介してＩ／Ｏインターフェイス１２０に接続される。
Ｉ／Ｏインターフェイス１２０は、ペリフェラルバス１４５を介して記憶装置１４０および周辺装置１５０に接続される。Ｉ／Ｏインターフェイス１２０はさらに、ペリフェラルバス１３５を介してＳＳＰ１３０に接続される。
他の実施形態では、ペリフェラルバス１３５の代わりに、点線で示すようにＳＳＰ１３０をペリフェラルバス１４５に接続してもよい。
ここで２つのＳＥＭプロセッサを示しているものの、他の実施形態では異なる数のＳＥＭプロセッサを用いてもよいことに注意すべきである。
さらに、同一の参照番号と一つの参照符号で示す要素は、単にその参照符号だけで参照することもあることに注意してもらいたい。例えば、ＳＥＭプロセッサ１００Ａを、場合によっては、単にＳＥＭプロセッサ１００と呼ぶこともある。
【００２１】
ある実施形態の一例においては、プロセッサバス１０５は、HyperTransport（商標）仕様に準拠する、高速ポイント間（point-to-point）リンクを形成することができる同期（coherent）リンク２０５である。
例えば、システムバス１２５もまた、HyperTransport（商標）Ｉ／Ｏ仕様と互換性を有する高速ポイント間リンクであり得る。
このような実施形態においては、ＳＥＭプロセッサ１００Ａは、非同期リンク２２５に接続し、同期リンク２０５においてＳＥＭプロセッサ１００ＡとＳＥＭプロセッサ１００Ｂとの間でメッセージを伝達するための統合ホストブリッジロジック（図示しない）を含んでいてもよい。
しかしながら、システムバス１２５が例えばフロントサイドバス（ＦＳＢ）のような種類のものである他の実施形態も考え得ることに注意すべきである。
【００２２】
例示の実施形態では、ＳＥＭプロセッサ１００ＡおよびＳＥＭプロセッサ１００Ｂはそれぞれ、システムメモリ１１０Ａおよび１１０Ｂに接続するための統合メモリコントローラ１０１Ａおよび１０１Ｂを含んでいる。
他の実施形態においては、Ｉ／Ｏインタフェース１２０が１つ以上のメモリコントローラとホストブリッジを含んでもよいことに注意すべきである。かかる実施形態においては、システムメモリ１１０はＩ／Ｏインタフェース１２０に接続されていてもよい。
【００２３】
ＳＥＭプロセッサ１００は、ｘ８６アーキテクチャを採用するプロセッサの一例である。例えば、ある実施形態では、ＳＥＭプロセッサ１００は、アドバンスト・マイクロ・ディバイシズ社のAthlon（登録商標）プロセッサであってもよい。そのために、ＳＥＭプロセッサ１００は、システムメモリ１１０または記憶装置１４０に記憶されるｘ８６命令を実行するように構成されている。例示の実施形態では、ＳＥＭプロセッサ１００は、メモリコントローラ１０１中にセキュリティハードウェア（図示しない）を含み、ＳＥＭにより動作可能にされたときに、例えば、図１において説明した高信頼動作（ＴＸ）モードのようなＳＥＭ動作モードに対するサポートを提供する。
【００２４】
システムメモリ１１０は、ＳＥＭプロセッサ１００により頻繁に使用されるプログラム命令およびデータを記憶するように構成されている。典型的なシステム構成では、記憶装置１４０は、そのようなプログラム命令やデータを永続的に記憶するために用いることができ、ＳＥＭプロセッサ１００がそのデータやプログラムコードを必要とする際に、それはシステムメモリ１１０に転送される。ＳＥＭ動作モードに対する追加のサポートがセキュリティカーネルにより提供される。それは、例えばＳＥＭプロセッサ１００の動作時に、システムメモリ１１０の外部でＯＳと連携して実行することができる。
さらに、システムメモリ１１０は、高信頼部分および無信頼部分とに区切ることができる。このセキュリティカーネルは、システムメモリ１１０の高信頼部分に常駐する。上述したように、システムメモリ１１０には通常ページ化された仮想メモリを使用してアクセスする。そのような構成においては、システムメモリ１１０には、個々のページ単位で、またはひとかたまりのメモリ単位でアクセス可能である。このページ化機能は、一般的にはＯＳのメモリ管理機能によって処理される。
さらに、メモリロケーションは割り当てられ、またその割り当てが取り消されることから、メモリロケーションの割り当てが取り消された状態であってもデータはアクセス可能となるようにしてもよい。
【００２５】
ある実施形態においては、システムメモリ１１０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）技術、または例えばシンクロナスＤＲＡＭ（ＳＤＲＡＭ）のような利用可能なＤＲＡＭ関連技術の一つに実装される複数のメモリチップを用いて実現可能である。ＤＲＡＭチップは通常、エッジコネクタを有する小さい回路基板上に搭載され、この基板がマザーボード上のソケットコネクタに挿入される。この基板の仕様によって、それらは、シングルインラインメモリモジュールまたはデュアルインラインメモリモジュール（それぞれＳＩＭＭまたはＤＩＭＭ）と呼ばれる。
システムメモリ１１０は、例えばメモリ拡張を可能にするメモリモジュールを複数バンクを含み得る。
【００２６】
上述したように、記憶装置１４０はプログラムコードおよびデータを記憶することができる。
ある実施形態では、記憶装置１４０は、ハードディスクドライブまたは複数のハードディスクドライブからなるバンクであるが、例えばＣＤ−ＲＯＭドライブ、フロッピディスクドライブ、およびテープドライブのような他の大量記憶装置を含む他の実施形態も考え得る。
【００２７】
周辺装置１５０は、例えばモデム、ビデオキャプチャ装置、その他の汎用入出力装置などの、どのような周辺装置であってもよい。別の実施形態では、周辺装置の数は異なっていてもよいことに注意すべきである。
【００２８】
Ｉ／Ｏインタフェース１２０は、通常のシステム動作において、異なるペリフェラルバスとＳＥＭプロセッサ１００Ａおよび１００Ｂとの間におけるトランザクションに対して、バス制御および変換機能を提供するように構成することができる。
ある実施形態では、Ｉ／Ｏインタフェース１２０はノースブリッジに関連する機能を実行することができるバスブリッジ（図示しない）を含む。例えば、ペリフェラルバス１４５は、ＰＣＩ（peripheral component interconnect）バスであってもよく、ペリフェラルバス１３５はＬＰＣ（low pin count）バスであってもよい。さらに、バスブリッジ１２１は、セキュア初期化の際にＳＥＭプロセッサ１００とＳＳＰ１３０との間でスプーフィング不可能な通信を可能にするセキュリティ機構（図示しない）を提供するように構成することができる。
【００２９】
一般的にセキュリティカーネル初期化命令（ＳＫＩＮＩＴ）は、例えばＳＥＭプロセッサ１００ＡおよびＳＥＭプロセッサ１００ＢなどのＳＥＭ実行可能プロセッサ上で実行される。ある実施形態においては、ＳＫＩＮＩＴ命令は、初期化、データ転送、そしてジャンプといった３つの実行フェーズを含む。
【００３０】
この初期化フェーズの際、ＳＥＭプロセッサ１００Ａの状態はリセットされ、すべてのマイクロコードのパッチがクリアされる。
さらに、以下に詳述するように、ＳＥＭプロセッサに統合された、またはＳＥＭプロセッサ外部のメモリコントローラ１０１Ａおよび１０１Ｂは、リセットのようなあるシステム条件に応じて、システムメモリ１１０のメモリチップの物理的なコンテンツを上書きするように構成されるロジック（図２には示されない）を含み得る。
【００３１】
図２は、メモリコントローラの一実施形態のブロック図を示す。
メモリコントローラ３０１は、メモリクリア状態ビット記憶装置３２５と、メモリクリアユニット３１０とに接続される制御ロジック３１５を含む。
メモリコントローラ３０１は、例えば図１のシステムメモリ１１０のようなシステムメモリに接続され得る。
【００３２】
メモリコントローラ３０１は、リセットまたは起動がサスペンド・トゥ・ラム（ＳＴＲ）に関するものでない限り、当該リセットまたは起動シーケンスに応じてシステムメモリ１１０のメモリチップの物理的コンテンツをクリアするように構成されてもよい。
ここに使用されるように、メモリチップのコンテンツをクリアすることは、システムメモリのメモリチップ内に記憶されるデータを上書きすること、したがって使用不可になることを示す。
ある実施形態においては、メモリコントローラ３０１は、それがアクセスするようにプログラムされたシステムメモリ中のすべてのロケーションに０のロジック値を書くことにより、メモリチップのコンテンツをクリアする。
他の実施形態においては、メモリコントローラ３０１は、それがアクセスするようにプログラムされたシステムメモリ中ですべてのロケーションに１のロジック値を書くことにより、メモリチップのコンテンツをクリアする。
さらに他の実施形態においては、メモリコントローラ３０１は、システムメモリ１１０に何か他のデータパターンを書くことにより、メモリチップのコンテンツをクリアし、以前にそこに記憶されたデータをすべて使用不可にする。このような実施形態においては、このデータパターンはランダムに生成される。
【００３３】
ある実施形態では、メモリコントローラ３０１は図１のメモリコントローラ１０１のようなＳＥＭプロセッサ１００内に統合されており、他の実施形態では、メモリコントローラ３０１はＳＥＭプロセッサ１００の外部にあることが注目される。後者の場合のメモリコントローラ３０１は、例えば図１のＩ／Ｏコントローラ１２０のようなブリッジユニットの一部であり得る。
【００３４】
例示の実施形態においては、制御ロジック３１５は、コンフィギュレーションおよび制御レジスタ３１６と、プラットフォーム・キャパビリティ・レジスタ３２０とを含んでいる。
コンフィギュレーションおよび制御レジスタ３１６は、アドレス指定可能メモリのサイズをプログラムするソフトウェアアクセス可能レジスタを含む。
例えば初期化の際、ＢＩＯＳは、コンフィギュレーションおよび制御レジスタ３１６をプログラムすることによって、動作可能なシステムメモリのサイズを決定し、続いて、その動作可能なメモリにアクセスするようにメモリコントローラ３０１をプログラムする。
さらに、コンフィギュレーションおよび制御レジスタ３１６は、ＤＲＡＭＥビットを意味する、ＤＲＡＭ（dynamic random access memory）イネーブルビットを含み得る。
ある実施形態においては、ＤＲＡＭＥビットは、リセットにより、０のロジック値にセットされる。またこのＤＲＡＭＥビットは、例えばメモリコントローラ３０１のプログラムにおける最後のステップとして、ＢＩＯＳのようなソフトウェアによって１のロジック値にセットされる。
このメモリコントローラが動作不可（ディゼーブル）になるか切断される場合にも、ハードウェアはこのビットをクリアする。
セットされた場合、ＤＲＡＭＥビットはメモリコントローラ３０１を動作不可な状態から動作可能な状態に移行する。
さらに、コンフィギュレーションおよび制御レジスタ３１６は、ＤＳｔａｔビットを意味する、ＤＲＡＭステータスビットを含み得る。
ある実施形態の一例においては、ＤＳｔａｔビットはソフトウェア側から見えない。このビットの０から１への移行は、メモリクリア動作が完了したことを示す。このメモリクリア動作が完了した際、このビットは制御ロジック３１５中のハードウェアによって１にセットされる。
ＤＲＡＭＥビットがクリアされる場合、ＤＳｔａｔビットはクリアされ得る。例えば、ＤＲＡＭＥの値が真（true）であり、かつメモリクリアユニット３１０がメモリクリア動作中でない場合、ＤＳｔａｔ＝１である。
【００３５】
例示の実施形態においては、メモリクリアユニット３１０は、メモリコントローラ３０１が動作不可な状態から動作可能な状態に移行し、メモリクリアユニット３１０が動作可能である場合に、コンフィギュレーションレジスタ３１６にプログラムされているシステムメモリの領域をクリアするように構成されている。
例えば、ある実施形態の一例においては、メモリクリアユニット３１０は、メモリクリア動作をする際、システムメモリに書き込まれるデータを生成するためのロジックを含んでいる。
【００３６】
例示の実施形態においては、プラットフォーム・セキュリティ・キャパビリティ・レジスタ３２０は、ＭＣＤを示すメモリクリア動作不可ビットを含んでいる。
以下に詳細に記載するように、このＭＣＤビットはメモリクリアユニット３１０を動作可能または動作不可に構成することができ、これによりシステムメモリをクリアすることを可能または不可能にする。
【００３７】
ある実施形態の一例においては、プラットフォーム・セキュリティ・キャパビリティ・レジスタ３２０は、メモリコントローラ３０１に関連する位置座標空間に位置するソフトウェア側から見えないアクセス・プロテクション・レジスタである。
ＭＣＤビットは高信頼ソフトウェア側からのみ見える可能性があることが注目される。アドレシングは、新しいキャパビリティポインタ（0Fh）に基づく。このＭＣＤビットは、直接メモリアクセス排他ベクトル（direct memory access exclusion vector）（ＤＥＶ）制御レジスタの１ビットであり得る。
ある実施形態においては、ＭＣＤビットがロジック１にセットされる場合、メモリクリアユニット３１０は動作不可になる。また、ＭＣＤビットがロジック０にセットされる場合、メモリクリアユニット３１０は動作可能になる。
さらに、メモリが使用可能でない場合には、このＭＣＤビットは書き込みできない可能性がある。
【００３８】
ある実施形態においては、システム電源は落とされるが、システムメモリのメモリチップに電力が供給され続ける場合（例えばＳ３状態）には常に、ＭＣＤビットの状態が維持され得ることが注目される。
ビット状態情報を維持するために、ＭＣＤビットは関連するサスペンド・トゥ・ラム（ＳＴＲ）ビットを有し得る。このビットは状態を維持し、ＭＣＤビットに関してマスタスレーブ配置で実行してもよい。
ある実施形態では、起動時にＳＴＲビットの状態はＭＣＤビット中にコピーされる。したがって、ＳＴＲビットは、電源を落とす際にシステムメモリのコンテンツが保存されたかどうかを示す。
このＳＴＲビットはソフトウェア側から見えないようにしてもよいし、リセットによってクリアされないようにしてもよい。
ある実施形態においては、システム電源が落とされるが、システムメモリのメモリチップには電力が供給され続ける場合（例えばＳ３状態）には常に、ＳＴＲビットは状態を維持する。
一旦メモリコントローラ３０１が動作可能になれば、高信頼ソフトウェアは、Ｓ３状態に入る前にＭＣＤビットをセットすることにより、間接的にＳＴＲビットをセットすることができる。
電源を落とす前に、ＭＣＤビットの状態はＳＴＲビットにコピーされる。このＳＴＲビットは、ＤＲＡＭＥビットがセットされることになる際（例えば、メモリクリア動作がその状態を評価した後）、自動的にクリアされる。
例示の実施形態においては、このＳＴＲビットはメモリクリア状態ビット記憶装置３２５中に含まれ得る。
【００３９】
例示の実施形態においては、メモリクリア状態ビット記憶装置３２５はさらに、以前にクリアされたメモリビットを含んでいる。
これらのビットは、前のメモリクリア動作によってクリアされた複数のメモリ部分の目印を記憶し得る。これらのビットはソフトウェア側から見えないようにしてもよいし、リセットによってクリアされないようにしてもよい。
ある実施形態においては、システム電源が落とされるが、システムメモリのメモリチップには電力が供給され続ける場合（例えばＳ３状態）には常に、以前にクリアされたメモリビットは状態を維持する。
メモリクリア動作が実行される毎に、以前にクリアされたメモリビットがリロードされ得る。
【００４０】
ある実施形態では、制御ロジック３１５は、以前にクリアされたメモリビット内に記憶された状態について、メモリコントローラ３０１に予めプログラムされているシステムメモリの現在のサイズをチェックすることができる。
ミスマッチがある場合、メモリクリアユニット３１０は無条件に上述したようなシステムメモリをクリアする。例えば、不正なＢＩＯＳまたはＢＩＯＳエミュレーションソフトウェアは、安全なメモリにアクセスしようとして、以前にアクセスおよびクリアされたメモリの領域よりも小さい領域にアクセスするように、メモリコントローラ３１０をプログラムするおそれがある。
したがって、ミスマッチが検出された場合、以前にクリアされたメモリ範囲の全体がクリアされる。
ある実施形態の一例では、以前にクリアされたメモリビットは、最後のメモリクリア動作によってクリアされたメモリの最も高い６４Ｍバイトブロックの上位アドレスビットを記憶するように実装されるが、他の実施形態が考えられる。
【００４１】
ある実施形態においては、システム電源が落とされるが、システムメモリのメモリチップには電力が供給され続ける場合（例えばＳ３状態）には常に状態を保持するメモリクリア状態ビット記憶装置３２５のビットは、（点線で示すように）メモリコントローラを収容するデバイスのＩ／Ｏパッドリング中に実装された状態記憶素子に記憶される。
図３の説明とともに以下に詳述するように、リセットした後、メモリコントローラ３０１の制御ロジック３１５は、これらの状態記憶素子にアクセスすることができる。
ある種のシステムパワーダウン状態（例えばＳ３状態）中である場合でさえ、電源はあるデバイス（例えばＲＡＭのような揮発性記憶装置）に残り続けるからである。
これらの状態記憶素子は、パワーダウンおよびその後のパワーアップシーケンスを通じてそれらの状態を保持する。
【００４２】
図３は、高信頼コンピューティング・プラットフォームのメモリコントローラの一実施形態の動作について記載するフローチャートである。
図２および図３に示すように、システムがリセットされたところから開始する（ステップ４００）。
このリセットに応じて、ＢＩＯＳは様々なシステムレベルのセットアップと、コンフィギュレーションタスクを実行する。例えばＢＩＯＳは、メモリコントローラ３０１を形成することによってシステムメモリを動作可能にしなければならない。
特定のシステムを実装することによって、ＢＩＯＳは、システムメモリの物理的なサイズを決定すべく、１つ以上のメモリテストを実行する。
一旦利用できるメモリが決定された場合、ある実施形態の一例においては、ＢＩＯＳは利用可能なメモリの現在のサイズでメモリコントローラ３０１の１つ以上のコンフィギュレーションレジスタ３１６をプログラムする（ステップ４０５）。
一旦メモリコントローラがプログラムされると、ＢＩＯＳはＤＲＡＭＥビットをセットすることによりメモリコントローラ３０１を動作可能にする（ステップ４１０）。
その後、メモリコントローラ３０１は動作不可状態から動作可能状態に移行する。制御ロジック３１５により、このＳＴＲビットはＭＣＤビットにコピーされる（ステップ４１５）。
【００４３】
この動作不可状態から動作可能状態への移行に応じて、制御ロジック３１５は、リセットの前に、Ｓ３状態(例えばサスペンド・トゥ・ラム）にあったかどうかを判断するためにＭＣＤビットを読み出す（ステップ４２０）。
システムがＳ３状態でなかった場合（例えばＭＣＤビットがクリアされている）、制御ロジック３１５はコンフィギュレーションレジスタ３１６に記憶された値からメモリサイズを決定する（ステップ４３０）。
制御ロジック３１５は、現在のプログラムされたメモリサイズ内にあるすべてのロケーションのメモリクリア動作を実行するように、メモリクリアユニット３１０に通知する（ステップ４３５）。
クリアされるメモリのサイズは、以前にクリアされたメモリビット中に保存される（ステップ４４０）。
【００４４】
ステップ４２５で、システムがＳ３状態（例えばＭＣＤビットがセットされている）であったと制御ロジック３１５により判断された場合、制御ロジック３１５は、コンフィギュレーションレジスタ３１６に記憶された値から現在プログラムされたメモリサイズを決定し、メモリクリア状態ビット記憶装置３２５の以前にクリアされたメモリビット内に記憶された値を読み出すことによって、以前にクリアされたメモリビットを決定する（ステップ４４５）。
制御ロジック３１５は、現在プログラムされたメモリサイズを、以前にクリアされたメモリサイズと比較する（ステップ４５０）。
サイズミスマッチがある場合（ステップ４５５：Ｙ）、制御ロジック３１５は、メモリクリア状態ビット記憶装置３２５の以前にクリアされたメモリビット内に記憶された値によって示されるような、以前のメモリクリア動作中でクリアされたすべてのロケーションのメモリクリア動作を実行するように、メモリクリアユニット３１０に通知する（ステップ４６０）。
クリアされるメモリのサイズは、以前にクリアされたメモリビット中に保存される（ステップ４４０）。
ある実施形態においては、ＭＣＤビットが評価された後にＳＴＲビットがクリアされ得る。このクリアにより、リセットされた場合にメモリクリア動作ができるようになる。
【００４５】
再度ステップ４５５において、現在プログラムされたメモリサイズが以前にクリアされたメモリサイズと同じである場合（ステップ４５５：Ｎ）、メモリクリアユニット３１０がセットされたＭＣＤビットにより動作不可状態となるので、メモリクリア動作は実行されないことになる（ステップ４６０）。
【００４６】
さらに、上述しように、一旦メモリコントローラ３０１が動作可能になると、ＭＣＤビットは、Ｓ３状態に入る前に高信頼ソフトウェアによってセットされ得る。これにより、リセットしてもメモリクリア動作ができないようになる。
【００４７】
上記実施形態は、かなり詳細に説明しているが、これまでの開示を完全に理解した当業者にとっては様々な変形または変更が可能になることは明らかである。添付の特許請求の範囲はすべてのそのような変形例または変更例を包含するように解釈されることを意図したものである。
【産業上の利用可能性】
【００４８】
本発明は一般に、コンピュータシステムに適用可能である。
【図面の簡単な説明】
【００４９】
【図１】高信頼コンピューティングプラットフォームを採用するコンピュータシステムの一実施形態を示すブロック図。
【図２】高信頼コンピューティングプラットフォームを採用するコンピュータシステムのメモリコントローラの一実施形態を示すブロック図。
【図３】高信頼コンピューティングプラットフォームを採用するコンピュータシステムのメモリコントローラの一実施形態の動作を示すフローチャート。
【図１】
2007504553.tif 000003
【図２】
2007504553.tif 000004
【図３】
2007504553.tif 000005
【手続補正書】
【提出日】平成17年6月20日(2005.6.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
セキュアオペレーティングシステムコードセグメントを実行することにより、セキュア実行モードで動作するように構成されるプロセッサ（１００Ａ）と、
前記プロセッサに接続され、データを記憶する複数のロケーションを含むシステムメモリ（１１０Ａ）と、
前記システムメモリに接続され、システムリセットに応じて動作可能とされると、前記システムメモリの前記複数のロケーションのプログラムされた範囲におけるメモリクリア動作を使用して、前記データを選択的にクリアするように構成されるメモリコントローラ（１０１Ａ）と、を含んでおり、
前記メモリコントローラはさらに、前記システムリセットの前に前記プロセッサがサスペンド・トゥ・ラム状態にあったと判断するとともに、前記以前のメモリクリア動作においてクリアされた前記複数のロケーションの前記プログラムされた範囲のサイズと現在のプログラムされたメモリサイズとが同一でないと判断するのに応じて、前記メモリクリア動作を使用して、前記データをクリアするように構成される、
コンピュータシステム（１０）。
【請求項２】
前記メモリコントローラはさらに、前記リセットの前に前記プロセッサがサスペンド・トゥ・ラム状態になかったと判断するのに応じて、前記メモリクリア動作を使用して、前記データをクリアするように構成される、請求項１記載のコンピュータシステム。
【請求項３】
前記メモリコントローラは、前記プロセッサが前記リセットの前にＲＡＭ状態だったかどうかを示すビットを記憶するように構成される記憶装置（３２５）を含む、請求項１記載のコンピュータシステム。
【請求項４】
Ｉ／Ｏインターフェース（１２０）を介して前記プロセッサに接続され、前記セキュア実行モード中の前記プロセッサの初期設定の間、前記セキュアオペレーティングシステムコードセグメントの少なくとも一部が有効であるか否かを照合するように構成される、セキュリティサービスプロセッサ（１３０）をさらに含む、請求項１記載のコンピュータシステム。
【請求項５】
セキュリティ初期設定命令の実行により、セキュア実行モードにおいてプロセッサ（１００Ａ）を初期化し、セキュアオペレーティングシステムコードセグメントの実行により、前記セキュア実行モードを実行するステップと、
システムメモリ（１１０Ａ）の複数のロケーション内にデータを記憶するステップと、
前記システムリセットに応じて、前記システムメモリの前記複数のロケーションのプログラムされた範囲におけるメモリクリア動作を使用して、前記データを選択的にクリアするステップと、を含んでおり、
前記データを選択的にクリアするステップは、前記以前のメモリクリア動作においてクリアされた前記複数のロケーションの前記プログラムされた範囲のサイズと現在のプログラムされたメモリサイズとが同一でないと判断するとともに、前記システムリセットの前に、前記プロセッサがサスペンド・トゥ・ラム状態にあったとの判断に応じて、前記メモリクリア動作を使用して、前記データをクリアするステップを含む、
方法。
【請求項６】
前記リセットの前に、サスペンド・トゥ・ラム状態だったかどうかを決定するステップをさらに含む、請求項５記載の方法。
【国際調査報告】
2007504553.tif 000006
2007504553.tif 000007
2007504553.tif 000008