(57)【特許請求の範囲】
【請求項１】
電源オン条件に応じて、ホスト電子システムに含まれる複数のメモリデバイスの識別子を決定する段階と、
前記識別子が前回のブートアップの識別子に一致しない場合、メモリチャネルキャリブレーションを実行する段階と、
前記識別子が前記前回のブートアップの識別子に一致する場合、セキュア処理で、前記ホスト電子システムの１以上のプロセッサの識別子を決定する段階と、
前記複数のメモリデバイスの識別子および前記１以上のプロセッサの識別子が前回のブート処理のメモリ識別子および前記前回のブート処理のプロセッサ識別子に一致する場合、メモリチャネルをキャリブレーションすることなくブート処理を完了する段階と
を備える方法。
【請求項２】
前記ホスト電子システムのマザーボードの識別子を決定する段階と、
前記複数のメモリデバイスの識別子または前記マザーボードの識別子が前回のブートアップの対応する識別子に一致しない場合、メモリチャネルキャリブレーションを実行する段階と
をさらに備える請求項１に記載の方法。
【請求項３】
前記ホスト電子システムのマザーボードの識別子を決定する段階は、前記マザーボードのシリアルナンバーを決定する段階を有する請求項２に記載の方法。
【請求項４】
前記電源オン条件に応じて、前記ホスト電子システムに含まれる前記複数のメモリデバイスの識別子を決定する段階は、前記ホスト電子システムに含まれるダイナミックランダムアクセスメモリ（ＤＲＡＭ）集積回路毎にシリアルナンバーを決定する段階を有する請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記ホスト電子システムの前記１以上のプロセッサの識別子が、前記前回のブートアップの識別子に一致するか否かを、前記識別子を汎用ソフトウェアに公開することなく決定する段階は、
保護コンテクスト内で前記１以上のプロセッサの識別子を取得する保護関数を呼び出す段階と、
前記保護コンテクスト内で、取得された前記識別子を、保護メモリ位置に格納されている前記前回のブートアップの１以上のプロセッサの識別子と比較する段階と、
前記取得された識別子と前記前回のブートアップの１以上のプロセッサの識別子が一致する場合、成功指標を返送する段階と、
前記取得された識別子と前記前回のブートアップの１以上のプロセッサの識別子が一致しない場合、失敗指標を返送する段階と
を有する請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記保護関数を呼び出して１以上のプロセッサの識別子の変更を検出する段階は、
ＡＣＭコンテクスト内で前記識別子を読み出して、前記識別子を保護レジスタに返送するＡＣ  Ｍｏｄｕｌｅ（ＡＣＭ）関数を呼び出す段階と、
前記保護レジスタに格納されている前記識別子を前記ホスト電子システム内のセキュアモジュール内の保護メモリ位置に格納されている前記前回のブートの前記識別子と比較する段階と
を有し、
前記保護レジスタに格納されている前記識別子および前記前回のブートアップの前記識別子は、保護チャネルを介して送信され、
前記保護レジスタに格納されている前記識別子および前記前回のブートアップの前記識別子は、汎用環境には決して公開されない請求項５に記載の方法。
【請求項７】
前記保護関数を呼び出して、前記１以上のプロセッサの識別子を取得する段階は、
保護環境内で前記識別子を読み出す段階と、
前記識別子のハッシュ値を生成する段階と、
前記前回のブートアップの識別子のハッシュ値を取得する段階と、
決して汎用環境に公開されない前記識別子のハッシュ値と決して汎用環境に公開されない前記前回のブートアップの識別子のハッシュ値とを比較する段階と
を含む請求項５又は６に記載の方法。
【請求項８】
ホスト電子システムの１以上の構成要素に、
電源オン条件に応じて、前記ホスト電子システムに含まれる複数のメモリデバイスの識別子を決定する段階と、
前記識別子が前回のブートアップの識別子に一致しない場合、メモリチャネルキャリブレーションを実行する段階と、
セキュア処理で、前記ホスト電子システムの１以上のプロセッサの識別子が前記前回のブートアップの識別子に一致するか否かを判断する段階と、
前記複数のメモリデバイスの識別子および前記１以上のプロセッサの識別子が前回のブート処理のメモリ識別子および前記前回のブート処理のメモリ識別子に一致する場合、メモリチャネルをキャリブレーションすることなくブート処理を完了する段階と
を実行させるためのプログラム。
【請求項９】
前記ホスト電子システムのマザーボードの識別子を決定する段階と、
前記複数のメモリデバイスの識別子および前記マザーボードの識別子が前回のブートアップの対応する識別子に一致しない場合、メモリチャネルキャリブレーションを実行する段階と
をさらに実行させる請求項８に記載のプログラム。
【請求項１０】
前記ホスト電子システムのマザーボードのシリアルナンバーを決定する段階をさらに実行させる請求項８又は９に記載のプログラム。
【請求項１１】
前記電源オン条件に応じて、前記ホスト電子システムに含まれる前記複数のメモリデバイスの識別子を決定する段階は、前記ホスト電子システムに含まれるダイナミックランダムアクセスメモリ（ＤＲＡＭ）集積回路毎にシリアルナンバーを決定する段階を含む請求項８から１０のいずれか一項に記載のプログラム。
【請求項１２】
前記識別子が前記前回のブートアップの識別子に一致する場合、前記セキュア処理で、前記ホスト電子システムの前記１以上のプロセッサの識別子を判断する段階は、
保護コンテクスト内で前記１以上のプロセッサの識別子を取得するセキュア関数を呼び出す段階と、
前記保護コンテクスト内で、取得された前記識別子を、保護メモリ位置に格納されている前記前回のブートアップの１以上のプロセッサの識別子と比較する段階と、
前記取得された識別子が前記前回のブートアップの１以上のプロセッサの識別子と一致する場合、成功指標を返送する段階と、
前記取得された識別子が前記前回のブートアップの１以上のプロセッサの識別子と一致しない場合、失敗指標を返送する段階と
を含む請求項８から１１のいずれか一項に記載のプログラム。
【請求項１３】
前記１以上のプロセッサの識別子を取得する前記セキュア関数を呼び出す段階は、
前記識別子を読み出して、前記識別子を保護レジスタに返送するＡＣ  Ｍｏｄｕｌｅ（ＡＣＭ）関数を呼び出す段階と、
前記保護レジスタに格納されている前記識別子を前記ホスト電子システム内のセキュアモジュール内の保護メモリ位置に格納されている前記前回のブートアップの識別子と比較する段階と
を含み、
前記保護レジスタに格納されている前記識別子および前記前回のブートアップの識別子は、セキュアチャネルを介して送信され、
前記保護レジスタに格納されている前記識別子および前記前回のブートアップの識別子は、汎用環境には決して公開されない請求項１２に記載のプログラム。
【請求項１４】
前記１以上のプロセッサの識別子を取得する前記セキュア関数を呼び出す段階は、
セキュア環境内で前記識別子を読み出す段階と、
前記識別子のハッシュ値を生成する段階と、
前記前回のブートアップの識別子のハッシュ値を取得する段階と、
決して汎用環境に公開されない前記識別子のハッシュ値と決して汎用環境に公開されない前記前回のブートアップの識別子のハッシュ値を比較する段階と
を含む請求項１２又は１３に記載のプログラム。
【請求項１５】
メモリチャネルキャリブレーション処理を選択的に実行するプロセッサと、
対応するメモリチャネルを介して前記プロセッサに結合されている１以上のメモリデバイスと、
前記プロセッサに結合されているチップセットと、
前記チップセットに結合されているベーシック・インプット／アウトプット・システム（ＢＩＯＳ）と
を備え、
前記ＢＩＯＳは、
今回のブート処理を開始する電源オン条件に応じて、ホスト電子システムに含まれる複数のメモリデバイスの識別子を決定し、
前記識別子が前回のブートアップの識別子に一致しない場合、前記プロセッサにメモリチャネルキャリブレーション処理を実行させ、
前記識別子が前記前回のブートアップの識別子に一致する場合、セキュア処理で、前記プロセッサの識別子を決定し、
前記複数のメモリデバイスの識別子および前記１以上のプロセッサの識別子が前回のブート処理のメモリ識別子および前記前回のブート処理のプロセッサ識別子に一致する場合、メモリチャネルをキャリブレーションすることなく前記今回のブート処理を完了するシステム。
【請求項１６】
前記ＢＩＯＳはさらに、
前記システムのマザーボードの識別子を決定し、
前記複数のメモリデバイスの識別子または前記マザーボードの識別子が前回のブートアップの対応する識別子に一致しない場合、メモリチャネルキャリブレーションを実行する請求項１５に記載のシステム。
【請求項１７】
前記プロセッサの識別子が、前記前回のブートアップの識別子に一致するか否かを、前記プロセッサの識別子および前記前回のブートアップの識別子を汎用ソフトウェアに公開することなく判断することは、
保護コンテクスト内で前記プロセッサの識別子を取得する保護関数を呼び出すことと、
前記保護コンテクスト内で、取得された前記識別子を、保護メモリ位置に格納されている前記前回のブートアップの前記プロセッサの識別子と比較することと、
前記取得された識別子と前記前回のブートアップの前記プロセッサの識別子が一致する場合、成功指標を返送することと、
前記取得された識別子と前記前回のブートアップの前記プロセッサの識別子が一致しない場合、失敗指標を返送することと
を含む請求項１５又は１６に記載のシステム。
【請求項１８】
前記保護関数を呼び出して前記プロセッサの識別子の変更を検出することは、
ＡＣＭコンテクスト内で前記識別子を読み出して、前記識別子を保護レジスタに返送するＡＣ  Ｍｏｄｕｌｅ（ＡＣＭ）関数を呼び出すことと、
前記保護レジスタに格納されている識別子を前記ホスト電子システム内のセキュアモジュール内の保護メモリ位置に格納されている前記前回のブートアップの識別子と比較することと
を含み、
前記保護レジスタに格納されている識別子および前記前回のブートアップの識別子は、保護チャネルを介して送信され、
前記保護レジスタに格納されている識別子および前記前回のブートアップの識別子は、汎用環境には決して公開されない請求項１７に記載のシステム。
【請求項１９】
前記保護関数を呼び出して、前記プロセッサの識別子の変更を検出することは、
保護環境内で前記識別子を読み出すことと、
前記識別子のハッシュ値を生成することと、
前記前回のブートアップの識別子のハッシュ値を取得する段階と、
前記識別子のハッシュ値と前記前回のブートアップの識別子のハッシュ値を比較する段階と
を含み、
前記識別子および前記前回のブートアップの識別子は、決して汎用環境に公開されない請求項１７又は１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、高周波バスキャリブレーション方法に関する。より具体的には、本発明の実施形態は、プロセッサまたはプロセッサコアがホストプラットフォームから削除されたか否かを判断するメカニズム、および、この判断結果に基づきブート中に行われる高周波チャネルキャリブレーションの修正変更に関する。
【背景技術】
【０００２】
パーソナルコンピュータおよびサーバの分野では、競争力を維持するためにはさまざまなワークロードの種類にわたって毎年２０−４０％の性能ゲインが必要とされるのが一般的である。さまざまなメカニズムを用いてこの水準の性能ゲインを実現している。例えば、コアカウントを増やしたり、メモリサイズ／帯域幅／レイテンシを改善したりしている。メモリの改善は通常、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）の高速化、ダブルデータレート（ＤＤＲ）バスの高周波数化、デュアルインラインメモリモジュール（ＤＩＭＭ）のキャパシティの大型化、チャネル当たりのＤＩＭＭ数の増加、および、その他の最適化として現れる。同様に、マルチソケットシステムの性能を改善するためには、プロセッサ間のインターコネクトを高速化および改良する必要がある。
【０００３】
ＤＤＲ速度の高速化およびＤＩＭＭカウントの増加を実現するためには、ＤＲＡＭチャネルを慎重に最適な信号品質およびバスタイミングに調整する必要がある。この調整処理は、ベーシック・インプット／アウトプットシステム（ＢＩＯＳ）によってブートアップ中に実行され、一般的には「ＤＤＲトレーニング」と呼ばれる。ＤＤＲトレーニングの多くのステップは、実施に時間がかかる。例えば、さまざまなストローブ信号のセンタリング、クロストークの削除、および、基準電圧キャリブレーションなどのステップである。このようなキャリブレーションステップは、ＤＲＡＭコントローラおよびＤＩＭＭに適用される最適なＤＤＲタイミングパラメータを導出するために用いられる。このプログラミングは、メモリにアクセスする前に実行される。これは、上記のパラメータは、動作中に更新すると、メモリトラフィックを乱してしまうためである。
【０００４】
パラメータが最適な値でない場合、ビットエラーレートが高くなり、システム動作が不安定化してしまうことが多い。上記のような複雑なキャリブレーションステップを実行すると、ブート時間が長くなってしまう。現在のＤＤＲ−４方法では、高速化および低電圧化を実現するべく、ＤＤＲデバイス毎に複数のパラメータにわたってキャリブレーションを行うことが必要となっている。このため、これらのプラットフォームにおけるメモリトレーニングプロセスが増加してしまう場合がある。
【図面の簡単な説明】
【０００５】
本発明の実施形態は、本発明を制限するものではなく本発明を例示するものとして添付図面に図示されている。添付図面では、同様の参照番号は同様の構成要素を示している。
【図１】プロセッサ識別子をセキュアに決定するメカニズムが設けられている電子システムの一実施形態を示すブロック図である。
【図２】ブート処理がプロセッサ識別子に基づいてブート処理の一環としてメモリチャネルキャリブレーションを実行するか否かを判断する一実施形態を説明するためのフローチャートである。
【図３】ブート中にプロセッサ識別子が変更されたか否かを、当該識別子を汎用ソフトウェアに公開することなく、判断するプロセスの一実施形態を説明するためのフローチャートである。
【図４】インテル社のマネジビリティ・エンジン（Ｍａｎａｇｅａｂｉｌｉｔｙ  Ｅｎｇｉｎｅ）を用いてセキュアにプロセッサ識別子を決定するメカニズムが設けられている電子システムの一実施形態を示すブロック図である。
【図５】マネジビリティ・エンジン（Ｍａｎａｇｅａｂｉｌｉｔｙ  Ｅｎｇｉｎｅ）を用いてプロセッサ識別子を比較する方法の一実施形態を示すフローチャートである。
【発明を実施するための形態】
【０００６】
以下に記載する説明では、具体的且つ詳細な内容を数多く記載する。しかし、本発明の実施形態は、以下に記載する具体的且つ詳細な内容を採用することなく実施し得る。また、公知の回路、構造および方法は、以下の説明の理解の妨げにならないように、詳細な図示を省略している。
【０００７】
「ビデオ待機時間」は、使いやすさを示す重要なメトリックである。電源が入ってから１０秒以内にプラットフォームがビデオを提示しない場合、ユーザはプラットフォームが故障していると考える場合がある。このため、プラットフォーム製造業者は大抵、ビデオ待機時間を１０秒未満とすることを要件にしている。システムがより複雑になると、この要件を満たすことがより困難になってしまう場合がある。本明細書では、ＢＩＯＳがＤＤＲトレーニングステップの一部または全てを大半のブートサイクルから削除してビデオ待機時間メトリックを改善する方法を説明する。
【０００８】
ＤＤＲトレーニングパラメータは、メモリＤＩＭＭ、プロセッサ、および、ＤＲＡＭチャネルの電気特性の関数である。トレーニングステップは、前回のブート以降ＤＩＭＭおよびプロセッサがマザーボード上で変更されていないとＢＩＯＳが判断すると、省略することができる。メモリＤＩＭＭは、追跡管理のためにシリアルナンバーを含む必要があり、大半のマザーボードは、ワイヤード・フォー・マネジメント（ＷｆＭ）グローバル一意識別子（ＧＵＩＤ）等のシリアルナンバーを持つ。一部のプラットフォームは、メモリチャネルパスに追加で構成要素（例えば、バッファ）またはカードを配置するとしてよい。コネクタに差し込まれる構成要素またはメモリカードもまた、シリアルナンバーを持つことができる。この結果、ＢＩＯＳは、メモリＤＩＭＭ、バッファおよびマザーボードおよびメモリカードを追跡管理することができる。
【０００９】
しかし、多くのプロセッサには、ＢＩＯＳによる当該プロセッサの追跡を可能とするメカニズムが無い。例えば、プロセッサが製造時の追跡管理用にシリアルナンバーを持っていたとしても、このシリアルナンバーは通常、プライバシー／セキュリティ上の問題でＢＩＯＳには公開されない。本明細書では、プライバシー／セキュリティ上の要件を満たしつつＢＩＯＳがプロセッサのシリアルナンバーを利用できるようになる方法を説明する。一部のシステムは、プライバシーに関して同様の要件を持つ構成要素を他にも備えるとしてよく、本明細書で提案する方法はこれらの構成要素についても拡大して適用され得る。
【００１０】
動作について説明すると、プロセッサスワップはまれであるが、検出メカニズムが存在しない場合、ＢＩＯＳは最悪の場合を仮定して動作する必要があり、システムがブートされる度にキャリブレーション手順を実行しなければならない。このため、本明細書で説明する検出メカニズムによって、ＢＩＯＳは、大半のブート処理についてＤＤＲトレーニングを省略することができ、ブート時間およびビデオ待機時間を短縮することができるとしてよい。
【００１１】
一実施形態によると、プロセッサ識別メカニズムでは、インテル（商標）社のトラステッド・エグゼキューション・テクノロジ（Ｔｒｕｓｔｅｄ  ｅＸｅｃｕｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ：ＴＸＴ）ＡＣモジュール（ＡＣＭ）およびインテル（商標）社のＴＸＴハードウェアを用いて、ホストプラットフォームのプロセッサのシリアルナンバーを決定する。ＡＣＭは、製造業者（例えば、インテル（商標）社）が供給し暗号化方式で署名するバイナリモジュールである。プロセッサは、起動前に、チップセットに埋め込まれた公共鍵を用いてＡＣＭを認証する。ＡＣＭは、プロセッサキャッシュの内部から実行され、実行中は修正変更およびスヌープに対して保護される。
【００１２】
ＡＣＭは、ＢＩＯＳまたは普通のソフトウェアよりも高い特権を持ち、プロセッサマイクロコードの論理拡張と見なすことができる。プロセッサマイクロコードは、プロセッサがＡＣモードであるか否かを検出する機能を持つ。現時点において、プロセッサマイクロコードはこの機能を用いて、ＴＸＴ特権処理（例えば、メモリアンロック）をマシンステートレジスタ（ＭＳＲ）インターフェースを介してＡＣＭに公開する。本明細書で説明するメカニズムは、プロセッサのシリアルナンバー情報をＡＣＭのみに公開するＡＣＭ限定ＭＳＲ（例えば、ＰＳＮ＿ＡＣＭ＿ＭＳＲ）を利用する。一実施形態によると、通常のソフトウェアがＭＳＲを読み出してプロセッサのシリアルナンバーにアクセスしようと試みると、プロセッサマイクロコードは、一般保護違反（ＧＰＦ）を生成する。
【００１３】
一実施形態によると、トラステッド・プラットフォーム・モジュール（ＴＰＭ）を利用するとしてよい。ＴＰＭは、暗号処理用の不揮発性（ＮＶ）ストレージとなる。ＴＰＭは、マザーボード上にハンダ付けするので、プラットフォームに物理的に結合される。ＴＰＭは、「ローカリティ」として知られている特権レベルを複数サポートしている。ＡＣＭは、ローカリティ３へのアクセスを持つ。ＢＩＯＳおよびホストオペレーティングシステム（ＯＳ）を含む普通のソフトウェアは、このローカリティへのアクセスを持たない。
【００１４】
現時点において、ＡＣＭは、ローカリティ３のＮＶストレージを利用して、ＢＩＯＳおよびＯＳから保護する必要があるパラメータを格納している。本明細書で説明するように、ＡＣＭは、ローカリティ３のＮＶストレージのＭＳＲを読み出すことによって取得されるプロセッサのシリアルナンバーを格納することができる。ＡＣＭは、ＢＩＯＳが呼び出すＭａｔｃｈＣＰＵ（）関数を提供する。この関数が呼び出されると、ＡＣＭは、例えば、ＰＳＮ＿ＡＣＭ＿ＭＳＲを用いてＣＰＵ  ＭＳＲを読み出して、ＴＰＭのＮＶメモリ内に格納されているシリアルナンバーと比較することができる。シリアルナンバーが一致すれば、ＡＣＭはプロセッサスワップが発生していない旨を示すべく「成功」と応答する。
【００１５】
マルチプロセッサ（ＭＰ）システムでは、ＢＩＯＳはこの手順をプロセッサ毎に繰り返し実行するとしてよい。比較はＡＣＭが実行するので、シリアルナンバーは、ＡＣＭを呼び出すソフトウェアには公開されない。このため、多くのプライバシー／セキュリティガイドラインの要件を満たしている。ＢＩＯＳは、この処理によってプロセッサおよびＤＩＭＭが前回のキャリブレーションプロセスから変更されていないと判断できれば、ＤＤＲキャリブレーションプロセスを省略することができる。
【００１６】
本明細書で説明するメカニズムは、これ以外にも用途があるとしてよい。高速接続処理（例えば、クイック・パス・インターコネクト（Ｑｕｉｃｋ  Ｐａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ：ＱＰＩ）も、ブート時間および／またはビデオ待機時間に悪影響を及ぼす可能性がある同様のトレーニングステップを必要とするとしてよい。ＤＤＲトレーニングと同様、ＱＰＩトレーニングパラメータは、マザーボードおよびプロセッサおよびインターコネクトの端部に応じて決まる。本明細書で説明するメカニズムは、プロセッサに変更がないシステムについてＱＰＩキャリブレーションステップを低減または省略するべく、ＢＩＯＳによって利用され得る。
【００１７】
サーバプラットフォームでは、プラットフォームソフトウェアは、例えば、故障履歴に基づいて、プロセッサに含まれる１以上のプロセッサコアをディセーブルすることができる。このようなプロセッサを新しいプロセッサと交換すると、プラットフォームソフトウェアは、置換後のプロセッサコアをイネーブルし直すものと考えられる。本明細書で説明する方法は、プロセッサコアが交換された場合にその旨を決定するべく利用されるとしてよい。これらのメカニズムの他の利用方法についても記載する。
【００１８】
図１は、ＡＣＭを用いてプロセッサ識別子の変更を検出するが、当該プロセッサ識別子を汎用ソフトウェアに公開しないメカニズムが設けられている電子システムの一実施形態を示すブロック図である。図１に示す例が備えるプロセッサは２つであるが、本明細書で説明する方法は、単一プロセッサシステムおよび３個以上のプロセッサを備えるシステムにも等しく適用可能である。一実施形態によると、電子システム１００の非メモリ素子（つまり、プロセッサ、チップセット、ＴＰＭ、ＢＩＯＳ）は、インテル・コーポレーション社製のものである。別の実施形態では、インテル・アーキテクチャに準拠した構成要素を利用するとしてよい。さらに他の実施形態によると、プロセッサ識別子を保護するプロセッサを利用するとしてよい。
【００１９】
ＢＩＯＳ１２０は、リセット条件または電源オン条件に応じて、初期化処理またはブートアップ処理を開始するとしてよい。ブートアップ処理は多くの機能を含むが、その１つにメモリチャネルのキャリブレーションがある。一実施形態によると、プロセッサ１６０および１８０は、ＴＸＴまたは同様のレベルのセキュリティをサポートする。プロセッサ１６０および１８０は、チップセット１３０を介して、ＢＩＯＳ１２０およびトラステッド・プラットフォーム・モジュール（ＴＰＭ）１４０に結合されている。一実施形態によると、プロセッサ１８０は、プロセッサ１６０を介してチップセット１３０に結合されている。プロセッサ１６０およびプロセッサ１８０は、様々な相互接続プロトコル、例えば、ＱＰＩで相互接続されるとしてよい。
【００２０】
電子システム１００では、プロセッサ１６０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）１７２、１７４、１７６および１７８に結合されており、プロセッサ１８０は、ＤＲＡＭ１９２、１９４、１９６および１９８に結合されている。一実施形態によると、プロセッサ１６０および１８０と、ＤＲＡＭ１７２、１７４、１７６、１７８、１９２、１９４、１９６および１９８との間のチャネルは、ダブルデータレート（ＤＤＲ）であり、どの世代のＤＤＲメモリチャネルであってもよい（例えば、ＤＤＲ１、ＤＤＲ２、ＤＤＲ３、ＤＤＲ４）。
【００２１】
一実施形態によると、ブート処理の一環として、ＢＩＯＳ１２０からチップセット１３０を介してプロセッサ１６０へと実行のためにＡＣＭを移動させる。一実施形態によると、ＡＣＭ実行は、プロセッサ１６０のＴＸＴ環境内で行われる。ＡＣＭの実行が進むにつれて、ＡＣＭは、プロセッサ１６０および／またはプロセッサ１８０の識別子（例えば、シリアルナンバー）を決定するとしてよい。一実施形態によると、ＡＣＭのプロセッサ識別子要求は、ＴＸＴ環境内で行われ、ＡＣＭ限定レジスタに識別子を返答するように要求する。この結果、識別子は、セキュアなＴＸＴ環境内にとどまり、汎用ソフトウェアから守られた状態が維持される。
【００２２】
一実施形態によると、プロセッサ１６０とＴＰＭ１４０との間のチップセット１３０を介したチャネルは保護されている。ＴＰＭ１４０は、前回のブート処理からプロセッサ識別子のコピーを格納しているとしてよい。ＴＰＭ１４０が格納しているコピーは、現在のブート処理で比較対象として利用されるとしてよい。一実施形態によると、比較のためにプロセッサ識別子を伝達するべく、ＴＰＭ１４０内のローカリティ３の格納位置に対して保護チャネルが設けられている。一実施形態によると、保護チャネルは、プロセッサ１６０が実行するマイクロコードによって開閉される。
【００２３】
比較結果は、ＡＣＭおよびＢＩＯＳ１２０によって、メモリチャネルキャリブレーション処理を含むブートアップ全行程を実行するか否かを判断するために利用される。つまり、プロセッサ識別子が一致すれば、ＡＣＭおよび／またはＢＩＯＳ１２０は、メモリチャネルキャリブレーション処理を省略するとしてよい。プロセッサ識別子が一致しない場合には、新しいプロセッサ識別子がＴＰＭ１４０に格納されており、メモリチャネルキャリブレーション処理を実行するとしてよい。
【００２４】
プロセッサ識別子はこれ以外に、プロセッサ１６０とプロセッサ１８０との間の相互接続に関して利用されるとしてよい。プロセッサ１６０および１８０の両方のプロセッサ識別子が前回のブートアップ時のものと一致すれば、リンク１５０および１５５のキャリブレーションが省略されるとしてよい。プロセッサ１６０またはプロセッサ１８０の一方のプロセッサ識別子が前回のブートアップ時のものと一致しない場合、キャリブレーションリンク１５０および１５５を実行するとしてよい。
【００２５】
図２は、ブート処理がプロセッサ識別子に基づいてブート処理の一環としてメモリチャネルキャリブレーションを実行するか否かを判断する一実施形態を説明するためのフローチャートである。図２のブート処理は、図１のシステム等のシステムに適用されるとしてよい。
【００２６】
２００において、システムの電源を入れる。２０５において、電源オン条件に応じて、システムのＢＩＯＳがシステムの制御を得る。上述したように、ＢＩＯＳは、ホストシステムのブートアップ処理を管理する。２１０において、プラットフォーム識別子を決定する。プラットフォーム識別子は、セキュアな識別子ではなく、関連技術分野で公知の任意の方法を用いて決定することができる。
【００２７】
２２０において、各メモリ素子の識別子を決定する。一実施形態によると、各ＤＲＡＭチップが持つ識別子は、セキュアではない。メモリ識別子は、関連技術分野で公知の任意の方法を用いて決定することができる。２２５において、システムはこの後、収集した識別子が前回格納された識別子と一致するか否かを判断することができる。
【００２８】
２２５において識別子が一致しない場合、２５０において、次回のブート処理のためにメモリ識別子を不揮発性メモリに保存する。２５５において、メモリキャリブレーションを全行程にわたって実行する。２６０においてメモリキャリブレーションパラメータを保存して、２７０においてブート処理を継続して行う。
【００２９】
２２５において識別子が一致すると、２３０においてプロセッサ識別子整合を呼び出す。プロセッサ識別子の取得および整合を行う方法の一実施形態を、図３を参照しつつ説明する。２３５においてプロセッサ識別子整合が成功すると、２４０において格納されているメモリキャリブレーションパラメータが利用される。２３５においてプロセッサ識別子整合が失敗すると、２５５においてメモリキャリブレーションが実行される。２６０においてメモリキャリブレーションパラメータを保存して、２７０においてブート処理を継続して行う。
【００３０】
図３は、プロセッサ識別子をセキュアに決定する処理の一実施形態を説明するためのフローチャートである。図３の処理は、ＴＸＴ命令を用いてＢＩＯＳによって呼び出すことができる。当該ＴＸＴ命令は、保護された環境の内部でＡＣＭを起動するようマイクロコードに指示する。３００において、ＡＣＭの実行からの呼び出しに応じて、プロセッサ識別子をセキュアに読み出す。一実施形態によると、この処理は、プロセッサ識別子を取得して、プロセッサのシリアルナンバー情報をＡＣＭのみに公開するＡＣＭ限定マシンの特定のレジスタ、つまり、ＭＳＲ（例えば、ＰＳＮ＿ＡＣＭ＿ＭＳＲ）を利用するセキュアマイクロコード処理によって実現されるとしてよい。
【００３１】
３１０において、前回のブート時のプロセッサ識別子を、汎用ソフトウェアから保護されているメモリから読み出す。一実施形態によると、前回のプロセッサ識別子をＴＰＭ内のローカリティ３の不揮発性メモリに格納する。別の実施形態によると、他のセキュアなメカニズムを用いてプロセッサ識別子を格納するとしてよい。３２０において、現在のブート処理のプロセッサ識別子を、格納されているプロセッサ識別子と比較する。
【００３２】
３２０においてプロセッサ識別子が一致すると、３３０において呼び出し元の関数に「成功」と返答される。３２０においてプロセッサ識別子が一致しない場合、３４０において新しいプロセッサ識別子をセキュアストレージに保存する。一実施形態によると、プロセッサ識別子をローカリティ３の不揮発性ストレージに格納する。３５０において、呼び出し元の関数に「失敗」と返答する。いずれの場合でも、ＢＩＯＳの一部である呼び出し元の関数は、実際のプロセッサ識別子について知ることはない。
【００３３】
図４は、インテル社のマネジビリティ・エンジン（Ｍａｎａｇｅａｂｉｌｉｔｙ  Ｅｎｇｉｎｅ）を用いてセキュアにプロセッサ識別子を決定するメカニズムが設けられている電子システムの一実施形態を示すブロック図である。ＴＸＴをサポートしていないプラットフォームまたはＴＰＭを備えていないプラットフォームは、代替例であるこのＭＥ方式を利用することによって恩恵を被る。一実施形態によると、ＭＥは、製造者（例えば、インテル・コーポレーション社）が供給し、暗号方式で署名したファームウェアを実行する。
【００３４】
リセット条件または電源オン条件に応じて、ＢＩＯＳ４２０は、初期化処理またはブートアップ処理を開始するとしてよい。ブートアップ処理は多くの機能を含むが、その１つにメモリチャネルのキャリブレーションがある。一実施形態によると、プロセッサ４６０および４８０は、ＴＸＴまたは同様のレベルのセキュリティをサポートする。プロセッサ４６０および４８０は、ＭＥ４３５を含むチップセット４３０を介してＢＩＯＳ４２０に結合している。一実施形態によると、プロセッサ４８０は、プロセッサ４６０を介してチップセット４３０に結合されている。プロセッサ４６０およびプロセッサ４８０は、様々な相互接続プラットフォーム、例えば、ＱＰＩと相互接続するとしてよい。
【００３５】
電子システム４００では、プロセッサ４６０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）４７２、４７４、４７６および４７８に結合されており、プロセッサ４８０は、ＤＲＡＭ４９２、４９４、４９６および４９８に結合されている。一実施形態によると、プロセッサ４６０および４８０と、ＤＲＡＭ４７２、４７４、４７６、４７８、４９２、４９４、４９６および４９８との間のチャネルは、ダブルデータレート（ＤＤＲ）であり、どの世代のＤＤＲメモリチャネルであってもよい（例えば、ＤＤＲ１、ＤＤＲ２、ＤＤＲ３、ＤＤＲ４）。
【００３６】
一実施形態によると、チップセット４３０は、起動前に、チップセット４３０に埋め込まれた公共鍵を用いてＭＥファームウェア４３５を認証する。別の実施形態では、ＭＥファームウェア４３５は別の方法で認証を行うとしてよい。一実施形態によると、ＭＥファームウェアは、チップセット４３０内のＭＥ実行環境で実行され、ホストソフトウェアによる修正変更およびスヌープから保護される。一実施形態によると、ＭＥファームウェア４３５は、チップセット４３０を介してプロセッサ４６０までのセキュアパスを持っており、当該セキュアパスを利用してプロセッサ識別子、ＰＳＮを取得する。
【００３７】
一実施形態によると、ＭＥサブシステムは、乱数生成器を含む。ＭＥファームウェア４３５は、この乱数生成器を用いて乱数Ｒを生成することができる。ＭＥファームウェア４３５は、ＲおよびＰＳＮのハッシュであるＨを算出することができる。一実施形態によると、Ｈ＝Ｈｕｓｈ（Ｒ、ＰＳＮ）であり、ハッシュ関数は、標準的なアルゴリズム、例えば、ＳＨＡ−２を表す。ＭＥファームウェア４３５は、ＲおよびＨを不揮発性メモリに格納する。一実施形態によると、ＰＳＮは不揮発性メモリに直接格納されるわけではない。ソフトウェアは、不揮発性メモリの内容を読み出して、ＲおよびＨを決定することができる。しかし、ハッシュ関数は一方向の関数であるので、ＲおよびＨに基づいてＰＳＮを算出する演算は不可能である。
【００３８】
一実施形態によると、ＭＥファームウェア４３５は、ＢＩＯＳ４２０が呼び出すＭａｔｃｈＣＰＵ（）コマンドを実装する。このコマンドが呼び出されると、ＭＥファームウェア４３５は、セキュアインターフェースを用いてプロセッサ識別子を読み出し、不揮発性メモリからＲを読み出し、Ｈ１＝Ｈｕｓｈ（Ｒ，ＰＳＮ）を算出することができる。
【００３９】
ＭＥファームウェア４３５は、Ｈ１と、不揮発性メモリに格納されているハッシュであるＨとを比較することができる。ハッシュ関数は、コリジョンが無い。このため、ハッシュ（Ｒ，ＰＳＮ１）＝Ｈｕｓｈ（Ｒ，ＰＳＮ２）ということは、ＰＳＮ１＝ＰＳＮ２を意味する。このため、Ｈ１＝Ｈは、シリアルナンバーが変わっていないことを意味する。マルチプロセッサシステムでは、ＢＩＯＳ４２０は、各プロセッサについてこの手順を繰り返し実行することができる。比較処理はＭＥファームウェア４３５によって実行されるので、プロセッサ識別子はソフトウェアに公開されず、プライバシーおよびセキュリティのガイドラインの要件は満たされる。
【００４０】
プロセッサ識別子はこれ以外にも、プロセッサ４６０とプロセッサ４８０との間の相互接続に利用されるとしてよい。プロセッサ４６０およびプロセッサ４８０の両方のプロセッサ識別子が前回のブートアップ時のものと一致すれば、リンク４５０および４５５のキャリブレーションを省略することができる。プロセッサ４６０またはプロセッサ４８０の一方のプロセッサ識別子が前回のブートアップ時のものと一致しなければ、リンク４５０および４５５のキャリブレーションが実行されるとしてよい。
【００４１】
図５は、マネジビリティ・エンジンを利用してプロセッサ識別子を比較する方法の一実施形態を説明するためのフローチャートである。５１０において、呼び出しに応じて、セキュアインターフェースを用いてプロセッサ識別子を決定する。５２０において、ＲおよびＨの値をメモリから取得する。５３０において、ハッシュ値であるＨ１は、Ｒの現在値およびプロセッサ識別子ＰＳＮを用いて決定する。
【００４２】
５４０において、算出されたハッシュ値であるＨ１を、格納されているハッシュ値であるＨと比較する。５４０においてＨおよびＨ１が等しい場合、５５０において「成功」指標を返送する。５４０において算出されたハッシュ値であるＨ１およびＨが等しくない場合、５６０において算出された値であるＨ１をセキュアメモリに格納する。５７０において、「失敗」指標を返送する。
【００４３】
本明細書において「一実施形態」または「ある実施形態」という記載は、当該実施形態に関連付けて説明する特定の特徴、構造または特性が本発明の少なくとも一実施形態に含まれていることを意味する。本明細書において「一実施形態において」という記載は繰り返し見られるが、必ずしも全てが同じ実施形態を意味するものではない。
【００４４】
幾つかの実施形態を挙げて本発明を説明してきたが、当業者であれば、本発明は説明した実施形態に限定されず、請求項の意図および範囲内で変形および変更して実施し得るものと認められたい。このため上述した説明は、本発明を限定するものではなく例示するものと考えられたい。
【図１】
0005469254.tif 000002
【図２】
0005469254.tif 000003
【図３】
0005469254.tif 000004
【図４】
0005469254.tif 000005
【図５】
0005469254.tif 000006