(57)【特許請求の範囲】
【請求項１】
計算プラットフォームにおいてメモリのセグメントをプロテクトする方法であって、
エラーを示すインタラプトリクエストを傍受するステップと、
メモリのプロテクトされた領域として指定されたメモリの第１セグメントが損傷しているか判断するステップと、
前記メモリのプロテクトされた領域が損傷しているとき、コードのパリティブロックを用いて前記損傷しているメモリの領域を修復するステップと、
前記メモリのプロテクトされた領域を検証したことに応答して、前記インタラプトリクエストに関するエラーを処理するため、前記メモリのプロテクトされた領域に格納されているコードの利用を有効にするインタラプトを生成するステップと、
を有する方法。
【請求項２】
前記メモリのプロテクトされた領域は、前記エラーを処理するためよう指定されたシステムマネージメントモードハンドラを含む、請求項１記載の方法。
【請求項３】
前記メモリのプロテクトされた領域は、前記メモリのプロテクトされた領域を検証するため、プロテクション機構のみによってアクセス可能である、請求項１記載の方法。
【請求項４】
前記メモリのプロテクトされた領域に格納されているコードを修復するため、パリティブロックを生成するステップをさらに有する、請求項１記載の方法。
【請求項５】
前記メモリのプロテクトされた領域の位置を１以上のレジスタに格納し、前記レジスタをロックするステップをさらに有する、請求項１記載の方法。
【請求項６】
前記傍受は、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）が前記エラーを処理することを阻止する、請求項１記載の方法。
【請求項７】
前記ＢＩＯＳは、初期化処理中にシステムマネージメントモードハンドラを前記メモリのプロテクトされた領域にロードする、請求項６記載の方法。
【請求項８】
エラーを示すインタラプトリクエストを傍受するステップと、
メモリのプロテクトされた領域として指定されたメモリの第１セグメントが損傷しているか判断するステップと、
前記メモリのプロテクトされた領域が損傷しているとき、コードのパリティブロックを用いて前記損傷しているメモリの領域を修復するステップと、
前記メモリのプロテクトされた領域を検証したことに応答して、前記インタラプトリクエストに関するエラーを処理するため、前記メモリのプロテクトされた領域に格納されているコードの利用を有効にするインタラプトを生成するステップと、
を実行時にマシーンに実行させるための命令を格納した有形なマシーン可読媒体。
【請求項９】
前記メモリのプロテクトされた領域は、前記エラーを処理するよう指定されたシステムマネージメントモードハンドラを含む、請求項８記載のマシーン可読媒体。
【請求項１０】
前記メモリのプロテクトされた領域は、前記メモリのプロテクトされた領域を検証するため、プロテクション機構のみによってアクセス可能である、請求項８記載のマシーン可読媒体。
【請求項１１】
前記メモリのプロテクトされた領域に格納されているコードを修復するのに利用されるパリティブロックを生成するステップを実行時にマシーンに実行させる命令を格納する、請求項８記載のマシーン可読媒体。
【請求項１２】
前記メモリのプロテクトされた領域の位置を１以上のレジスタに格納し、前記レジスタをロックするステップを実行時にマシーンに実行させる命令を格納する、請求項８記載のマシーン可読媒体。
【請求項１３】
前記メモリのセグメントは、
前記傍受は、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）によってプロテクトされるよう指定される、請求項８記載のマシーン可読媒体。
【請求項１４】
前記ＢＩＯＳは、初期化処理中にシステムマネージメントモードハンドラを前記メモリのプロテクトされた領域にロードする、請求項１３記載のマシーン可読媒体。
【請求項１５】
メモリのセグメントをプロテクトする装置であって、
エラーに関連する前記エラーの位置を示すインタラプトリクエストを受信する通信インタフェースと、
メモリのプロテクトされた領域の位置によってプログラムされ、前記メモリのプロテクトされた領域の位置を含むようロックされる１以上のレジスタと、
前記エラーの位置が前記メモリのプロテクトされた領域にあるとき、前記メモリのプロテクトされた領域の損傷したセグメントを修復する修復記述子と、
前記メモリのプロテクトされた領域を検証する検証記述子と、
前記検証記述子が前記メモリのプロテクトされた領域を検証したことに応答して、前記メモリのプロテクトされた領域に格納されているコードの利用を有効にするため、前記インタラプトリクエストに対応するインタラプトを生成するインタラプト生成手段と、
を有する装置。
【請求項１６】
前記メモリのプロテクトされた領域は、システムマネージメントＲＡＭのセグメント部分の先頭に配置される、請求項１５記載の装置。
【請求項１７】
前記修復記述子は、パリティブロックを利用して、前記メモリのプロテクトされた領域の損傷したセグメントを修復する、請求項１５記載の装置。
【請求項１８】
前記メモリのプロテクトされた領域に格納されているシステムマネージメントモードハンドラのコードに基づき、前記パリティブロックを生成するための生成記述子をさらに有する、請求項１７記載の装置。
【請求項１９】
前記インタラプト生成手段は、前記インタラプトリクエストに対応するインタラプトをＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）に送信する、請求項１５記載の装置。
【請求項２０】
前記ＢＩＯＳは、前記メモリのプロテクトされた領域のコードを利用して、計算システムにおけるエラーを処理する、請求項１９記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にコンピュータシステムプラットフォームに関し、より詳細には、メモリのセグメントをプロテクトするための方法及び装置に関する。
【背景技術】
【０００２】
計算プラットフォームは、典型的には、タイプ、サイズ、目的などについて可変的な複数のメモリセグメントを有する。第１メモリに関連して格納される第１コンポーネント（例えば、ユーザアプリケーション又はプログラムなど）は、適切に動作するため、及び／又は完全に動作するために、第２メモリに関連して格納される第２コンポーネント（オペレーティングシステムなど）に依拠してもよい（例えば、第２コンポーネントが動作していないときに第１コンポーネントが初期化できないときなど）。従って、さらなる必要なリソースにもかかわらず、特定のタイプ又はセグメントのメモリは、格納されている１以上のコンポーネントの適切な処理を保証する１以上のプロテクション機構、プログラム、ルーチン又はデバイスを保証する。
【図面の簡単な説明】
【０００３】
【図１】図１は、一例となるプロテクション機構を含む一例となる計算プラットフォームの一例となるコンポーネントを示すブロック図である。
【図２】図２は、図１の生成記述子の一例となる実現形態である。
【図３】図３は、図１の検証記述子の一例となる実現形態である。
【図４】図４は、図１の修復記述子の一例となる実現形態である。
【図５】図５は、一例となるＰＯＳＴ（Ｐｏｗｅｒ−Ｏｎ  Ｓｅｌｆ  Ｔｅｓｔ）を実行するため図１の一例となるＢＩＯＳを実現するため実行される一例となるマシーン可読命令を用いて実現可能な一例となる処理を表すフロー図である。
【図６】図６は、図１の一例となるＳＭＲＡＭのある領域をプロテクトするため図１の一例となるプロテクション機構を実現するため実行される一例となるマシーン可読命令を用いて実現可能な一例となる処理を示すフロー図である。
【図７】図７は、図１の一例となるプロテクション機構の第１アルゴリズムによりプロテクトされるような図１のコードブロックの図である。
【図８】図８は、図１の一例となるプロテクション機構の第２アルゴリズムによりプロテクトされるような図１のコードブロックの図である。
【図９】図９は、図１の一例となる計算プラットフォームを実現するため、及び／又は図２のマシーン可読命令を実行するため利用可能な一例となるプロセッサシステムのブロック図である。
【発明を実施するための形態】
【０００４】
以下において一例となる方法、装置、システム、及び／又は他のコンポーネントのうちハードウェア上で実行されるファームウェア及び／又はソフトウェアを含む製造物が開示されるが、そのような方法、装置、システム及び／又は製造物は単なる例示的なものであり、限定的なものとみなされるべきでないことに留意すべきである。例えば、ファームウェア、ハードウェア及び／又はソフトウェアコンポーネントの何れか又はすべてが、ハードウェアのみにおいて、ソフトウェアのみにおいて、ファームウェアのみにおいて又はハードウェア、ソフトウェア及び／又はファームウェアの何れかの組み合わせにより実現可能であることが想定される。従って、以下において一例となる方法、装置、システム及び／又は製造物が説明されるが、与えられた具体例は、このような方法、装置、システム及び／又は製造物を実現するための唯一の方法でない。
【０００５】
ここに説明される一例となる方法、装置、システム及び／又は製造物は、格納されるデータ及び／又はコードとメモリのセグメントのためのプロテクションを提供する。限定することなく説明のため、これらの一例となる方法、装置、システム及び／又は製造物は、ホストＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）に関して説明される。特に、ここに説明される具体例は、ホストＤＲＡＭに格納されるエラーハンドリングシステムのプロテクションに関する。しかしながら、ここに説明される具体例は、ホストＤＲＡＭに格納される異なるタイプのシステム、機構、プログラム、デバイスなどに関連して実現可能である。例えば、ここに説明されるエラーハンドリングシステムに提供されるプロテクションに加えて又は代わりに、ここに説明される一例となる方法、装置、システム及び／又は製造物は、ホストＤＲＡＭに格納されるグラフィックＵＭＡ（Ｕｎｉｆｉｅｄ  Ｍｅｍｏｒｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ）に関して実行可能なもの、ホストＤＲＡＭに格納される電力管理ユニット（ＰＭＵ）に関して実行可能なもの（ＭＩＤ上の８０５１コードなど）、及び／又はホストＤＲＡＭに格納される他の何れかのコンポーネント、ユニット、機構、プログラムなどに関して実現されてもよい。さらに、ここに説明される一例となる方法、装置、システム及び／又は製造物により提供されるメモリプロテクションは、ホストＤＲＡＭ以外のメモリのさらなる又は他のタイプ又はセグメントに関連して実現可能である。
【０００６】
従来の計算プラットフォームは、プロセッサやメモリの動作などに関連する所望されない、予期されない、及び／又は許容されないイベント又は条件に応答するための誤り訂正コード（ＥＣＣ）及びメモリプロテクションユニットを含む。ｘ８６プラットフォームでは、例えば、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）は、システムマネージメントインタラプト又はＳＭＩ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔ）を介し呼び出し可能なシステムマネージメントモード又はＳＭＭ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｍｏｄｅ）を利用する。ＳＭＭに関するコンポーネントは、典型的には、ＳＭＲＡＭ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と呼ばれることもあるホストＤＲＡＭのセクションに格納される。例えば、ＳＭＲＡＭは、典型的には、計算プラットフォームにおける１以上のタイプのエラーを訂正するよう構成されるコードを有するＳＭＭハンドラを有する。
【０００７】
あるエラーは、ＤＲＡＭのセグメントと、さらにＳＭＭハンドラ及び／又はＢＩＯＳ  ＳＭＭに関連する他のコンポーネントとに影響を与えるか、損傷させる可能性を有する。このような状況でＳＭＭにおけるＢＩＯＳの実行は（例えば、ＳＭＭハンドラにおいてエラーが発生したときなど）、完全なシャットダウンを生じさせるプロセッサの損傷を導く可能性がある。従って、従来のシステムでは、メモリプロテクションユニットは、典型的には、このようなエラーを管理するためのさらなるエラーハンドラを実装していた。例えば、一部のメモリプロテクションユニットは、ＳＭＲＡＭを損傷しうるエラーのため、ＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）に基づくエラーハンドラを利用し、これにより、エラーハンドリングに専用のさらなるリソースを設ける。
【０００８】
一般に、ここに説明される一例となる方法、装置、システム及び／又は製造物は、例えば、ＳＭＲＡＭのＳＭＭ領域などにおいて発生するＥＣＣエラーからプロセッサをプロテクトする。すなわち、ここに説明される具体例は、ＥＣＣエラーや他の以前のエラーがＳＭＭに関するコードに影響を与えたときでさえ、ＥＣＣエラーに応答して、ＢＩＯＳがＳＭＭコンポーネント（ＳＭＭハンドラなど）を用いてインタラプトルーチンを実行することを可能にする。このようなエラーの訂正を可能にするため、ここに説明される具体例は、ＳＭＭハンドラを格納するためのＳＭＲＡＭにおけるプロテクトされたアドレススペースを構成する。さらに、ここに説明される具体例は、ＳＭＭモードにより実行するためＢＩＯＳをトリガする信号を傍受するためのハードウェアベースのプロテクション機構を提供する。ＢＩＯＳがＳＭＭにおいて実行することを可能にする前に、ハードウェアベースのプロテクション機構は、エラーフリーとしてセキュアなアドレススペースのコンテンツを検証することを試みる。エラーがＳＭＭハンドラに影響を与えたと判断したことに応答して、ハードウェアベースのプロテクション機構は、ＳＭＲＡＭのプロテクトされたアドレススペース内など、セキュアなアドレススペースにおける１以上の影響を受けたコードを再生又は修復する。エラーフリーなＳＭＭスペースを保証した後、以下で詳細に説明される一例となるプロテクション機構は、ＢＩＯＳが初期的なエラーを訂正するためＳＭＭハンドラを実行することを可能にする。
【０００９】
ここに説明される具体例により提供される他の利益及び効果のうち、このようなシナリオ（例えば、ＥＣＣエラーがＳＭＭコンポーネントに影響を与えるなど）のプロテクション、検証及び／又は訂正は、計算プラットフォームがＢＩＯＳ及びさらなるエラーハンドラ（ＢＭＣベースのエラーハンドラなど）を介しエラーハンドリングに
“二重に投資”する必要性を解消又は少なくとも低減する。さらに、ここに説明される具体例は、ＳＭＭコンポーネントを用いて以前には訂正不可能であると考えられていた特定のタイプのエラーのためのリカバリ機構を提供する。ここに説明される具体例により提供されるさらなる利益及び効果は、ここでの詳細な説明から容易に明らかになるであろう。
【００１０】
図１は、ここに説明される一例となる方法、装置、システム及び／又は製造物に従ってメモリのセグメントをプロテクト可能な一例となる計算プラットフォーム１００を示すブロック図である。プラットフォーム１００は、パーソナルコンピュータ、ワークステーション、サーバ、ＰＤＡ、キオスク、スマートフォンなどの何れかのタイプの計算プラットフォームであってもよい。
【００１１】
図１の一例となる計算プラットフォーム１００は、何れか適切な方法により計算プラットフォーム１００に発生した１以上のエラーを検出可能なエラー検出ユニット１０４を有するメモリコントローラ１０２を有する。例えば、エラー検出ユニット１０４は、プロセッサ（図９に関して後述される一例となるプロセッサ９１２など）のＩＩＯ（Ｉｎｔｅｇｒａｔｅｄ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）によって実現されてもよい。エラーを検出したことに応答して、一例となるエラー検出ユニット１０４は、ＳＭＩに対するリクエストを生成する。ＳＭＩリクエストは、エラーが検出されたメモリのアドレスなど、エラーの位置に関する情報を含むものであってもよい。さらに、一例となるエラー検出ユニット１０４及び／又はメモリコントローラ１０２の他のコンポーネントは、ポイズンインジケータ（ｐｏｉｓｏｎ  ｉｎｄｉｃａｔｏｒ）によってエラーが発生したメモリアドレスをマーク付けしてもよい。
【００１２】
従来のシステムでは、ＳＭＩリクエストは、ＳＭＩの即時の生成と、さらにＢＩＯＳ１０６などによるＳＭＭインタラプトルーチンの実行とを導く可能性がある。しかしながら、例示された具体例では、メモリコントローラ１０２により生成されるＳＭＩリクエストは、ここに説明される一例となる方法、装置、システム及び／又は製造物に従って構成されるハードウェアベースのプロテクション機構１０８により傍受される。ＳＭＩリクエストを受信するため、一例となるプロテクション機構１０８は、メモリコントローラ１０２から当該信号を受信するよう構成される通信インタフェース（図示せず）を有する。例示された具体例では、プロテクション機構１０８は、限定されるものでないが、ＣＢ（Ｃｒｙｓｔａｌ  Ｂｅａｃｈ）  ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）エンジンによって実現される。プロテクション機構１０８は、一例となる計算プラットフォーム１００の追加的な又は代替的なコンポーネントにより、及び／又は異なるタイプのエンジン若しくはデバイスによって実現されてもよい。
【００１３】
上述されるように、ＳＭＲＡＭの特定部分に影響を与えたＥＣＣエラーを処理することを試みるＢＩＯＳ１０６は、ＢＩＯＳ１０６により実行されるＳＭＭインタラプトルーチン自体が損傷する可能性があるため危険である。従って、例示された具体例では、ＳＭＭコンポーネント（ＳＭＭハンドラなど）のインテグリティが証明可能になるまで、ＤＭＡエンジン１０８によりＳＭＩリクエストの傍受は（メモリコントローラ１０２により生成されるような）、対応するＥＣＣエラーを処理することからＢＩＯＳ１０６をサスペンドする。以下で詳細に説明されるように、ＤＭＡエンジン１０８は、１以上のＳＭＭの損傷のケースにおいて、エラーから回復するのに利用されるＳＭＭコードを検証及び再生成又は修復する。ＳＭＭに関連する各メモリセグメント（キャッシュラインなど）が検証及び／又は訂正されると、ＤＭＡエンジン１０８は、その後にＢＩＯＳ１０６により処理可能なＤＭＡエンジン１０８により受信されるＳＭＩリクエストに対応するＳＭＩを生成する。ＤＭＡエンジン１０８がエラーフリーなＳＭＭコードを保証するため、ＢＩＯＳ１０６は、否定的な結果なしにＳＭＭコードを利用することが可能である（例えば、フルシャットダウンを生じさせることなく）。
【００１４】
このようなプロテクションを可能にするため、計算プラットフォーム１００は、ＤＭＡエンジン１０８及びＳＭＲＡＭ１１０に関連する複数の初期化を受ける。すなわち、特定のハードウェア機構及びソフトウェア要素の初期的なコンフィギュレーションは、一例となる計算プラットフォーム１００がここに説明されるようなメモリのセグメントをプロテクトすることを可能にする。例えば、ＳＭＭハンドラ１１２は、それのＴＳＥＧ（Ｔｏｐ  ｏｆ  Ｓｅｇｍｅｎｔ）領域内のＳＭＲＡＭ１１０のプロテクトされたページ１１４に配置される。例示された具体例では、プロテクトされたページ１１４は、４キロバイト（４ｋＢ）のサイズであり、７つのコードブロック１１６〜１２８を有する。コードブロック１１６〜１２８のコンテンツは、メモリにおけるエラーを訂正するのに利用される実行可能コードである。コードブロック１１６〜１２８のコンテンツはコンスタントであり、コードブロックのみを含む（すなわち、データブロックはない）。ＳＭＭハンドラ１１２の最後の５１２バイト（５１２Ｂ）は、パリティブロック１３０に対して確保される。ＢＩＯＳ１０６は、ＤＭＡエンジン１０８に初期化処理中にパリティブロック１３０を生成させる（例えば、ＰＯＳＴ（Ｐｏｗｅｒ−Ｏｎ  Ｓｅｌｆ  Ｔｅｓｔ）など）。さらに、ＢＩＯＳ１０６は、プロテクトされた領域１１４の位置によってＤＭＡエンジン１０８のレジスタ１３４をプログラムし、そこにプログラムされたプロテクトされた領域１１４の位置によってレジスタ１３４をロックする。
【００１５】
例示された具体例では、コードブロック１１６〜１２８は、データフィールドの変更を不可にするよう構成される（例えば、ＢＩＯＳ１０６などによって）。この結果、ＤＭＡエンジン１０８は、初期化処理中（例えば、ＰＯＳＴブート中など）にパリティブロック１３０を１回生成する。しかしながら、いくつかの具体例では、コードブロック１１６〜１２８は、変更可能なデータフィールドを含むよう構成されてもよい（ＢＩＯＳ１０６などによって）。このような例では、ＤＭＡエンジン１０８は、コードブロック１１６〜１２８の１以上の各変更後にパリティブロック１３０を生成する。
【００１６】
いくつかの具体例では、メモリコントローラ１０２のエラー検出ユニット１０４（ＩＩＯシステムなど）は、ＤＭＡエンジン１０８にＥＣＣエラー信号をルーティングするよう初期化される。ＤＭＡエンジン１０８がＥＣＣエラー信号を傍受するとして上述されたが（例えば、ＳＭＩリクエストなど）、一例となる計算プラットフォーム１００は、ＤＭＡエンジン１０８を介し当該信号を自動的にルーティングするよう構成されてもよい。
【００１７】
ＤＭＡエンジン１０８はまた、生成オペコード（パリティブロック１３０を生成するためなど）、検証オペコード（プロテクトされた領域１１４におけるキャッシュラインのインテグリティをチェックするためなど）、又はプロテクトされた領域１１４に送信される修復オペコード（プロテクトされた領域１１４におけるキャッシュラインを修復するためなど）を実行するチャネル（隠れチャネル（ｈｉｄｄｅｎ  ｃｈａｎｎｅｌ）など）を有するよう構成される。例示された具体例では、チャネルは、ＳＭＲＡＭ１１０のＴＳＥＧメモリによるプロテクトされた領域１１４へのアクセスに制限される。さらに、チャネルは、一例となる計算プラットフォーム１００におけるプロテクトされた領域１１４にアクセス可能な唯一のチャネルである。ＢＩＯＳ１０６は、ＤＭＡエンジン１０８の処理を可能にする前に、このアクセスコンフィギュレーションを検証する（例えば、ＤＭＡエンジン１０８のチャネルはプロテクトされた領域１１４へのアクセスのための唯一のチャネルであり、プロテクトされた領域１１４は完全にＴＳＥＧ内にある）。さらに、存在する場合には、チャネルは、変換及び／又はセキュリティ違反を防ぐため、ＶＴ−ｄエンジンを通過する。
【００１８】
例示された具体例では、上述された生成、検証及び修復処理は、複数の記述子１３６により実現される。一例となる複数の記述子１３６は、プロテクトされた領域１１４のパリティブロック１３０を生成するため、生成記述子１３８を有する。例示された具体例では、生成記述子１３８は、ロードされたコードブロック１１６〜１２８のコンテンツの以下の等式に従って、パリティブロック１３０を生成させる。すなわち、ｐａｒｉｔｙ＿ｂｌｋ＝Ｃｏｄｅ＿ｂｌｋ０  ＸＯＲ  Ｃｏｄｅ＿ｂｌｋ１  ＸＯＲ  Ｃｏｄｅ＿ｂｌｋ２  ＸＯＲ  Ｃｏｄｅ＿ｂｌｋ３  ＸＯＲ  Ｃｏｄｅ＿ｂｌｋ４  ＸＯＲ  Ｃｏｄｅ＿ｂｌｋ５  ＸＯＲ  Ｃｏｄｅ＿ｂｌｋ６である。図２において、生成記述子１３８の一例となる実現形態が示される。一例となる生成記述子１３８は、パリティ生成を利用したＲＡＩＤ−５アルゴリズムに従って構成される。４ｋＢベースはプログラム可能である。図２に示されるように、生成記述子１３８のオペコードは、０ｘ８７である。
【００１９】
図１を再び参照して、一例となる複数の記述子１３６はまた、コードブロック１１６〜１２８のコンテンツを検証するための検証記述子１４０を有する。一例となる検証記述子１４０は、キャッシュラインの何れかがポイズンインジケータによってマーキングされているか決定するため、ＳＭＭハンドラ１１２のキャッシュライン（すなわち、コードブロック１１６〜１２８）をチェックする。エラー検出ユニット１０４又はメモリコントローラ１０２は、ポイズンインジケータによって、検出されたエラーを含むキャッシュラインをマークする。このようなインジケータの存在は、検証記述子１４０に対応するキャッシュラインがエラーを含むことを判断させる。図３において、検証記述子１４０の一例となる実現形態が示される。一例となる検証記述子１４０は、上述された一例となる生成記述子１３８に類似する。しかしながら、検証記述子１４０のオペコードは、０ｘ８８である。検証記述子１４０の実行中、“訂正不可なＥＣＣエラー”により設定されたポイズンインジケータによって示されるようなエラーを有する何れかのブロックが検出された場合、不具合のあるソースアドレスが与えられたキャッシュラインについてキャプチャされ、ＤＭＡエンジン１０８が停止する。
【００２０】
一例となる複数の記述子１３６はまた、コードブロック１１６〜１２８の１以上がエラーを含む場合（例えば、上述された検証の試みによって決定されるように）、ＳＭＭハンドラ１１２のキャッシュラインハンドラ１１２のコンテンツを修復するため、修復記述子１４２を有する。図４において、修復記述子１４２の一例となる実現形態が示される。例示された具体例では、不具合のあるキャッシュラインのみが修復される。図４の一例となる修復記述子１４２は、生成記述子１３８と類似している。しかしながら、処理可能な長さは１キャッシュライン（６４ｋＢ）に変更される。さらに、修復記述子１４２では、上述された検証において検出された不具合のあるソースアドレスが（ビット［１１：８］のみが必要とされる）、パリティブロックアドレスとして利用されるが、パリティブロックアドレスは、不具合のあるソースブロックのアドレスを置換するのに利用される。例えば、図２のコードブロックアドレスと図４のコードブロックアドレスとの比較によって示されるように、コードブロック５においてエラーが発生すると、修復記述子１４２のパリティブロックアドレスがコードブロック５のアドレス（すなわち、０ｘＡ００）により置換され、コードブロック５のアドレスは、パリティブロックアドレス（０ｘＥ００）により置換される。
【００２１】
図１に戻って、図１の一例となるＤＭＡエンジン１０８はまた、ＳＭＩ生成手段１４４を有する。一例となるＤＭＡエンジン１０８がエラー検出ユニット１０４からエラー通知（ＳＭＩリクエストなど）を受信するよう構成されるとき、ＤＭＡエンジン１０８の一例となるＳＭＩ生成手段１４４は、ＤＭＡエンジン１０８により受信されるＳＭＩリクエストに対応するＳＭＩを生成可能である。一例となるＳＭＩ生成手段１４４は、ＤＭＡエンジン１０８がＳＭＭハンドラ１１２のインテグリティを検証及び／又は確立することに応答して、ＳＭＩを生成し、ＢＩＯＳ１０６に送信する。ＢＩＯＳ１０６は、ＳＭＭハンドラ１１２がエラーを含むリスクなく、ＳＭＭハンドラ１１２を利用することができる。
【００２２】
図１の計算プラットフォーム１００を実現する一例となる方法が図１に示されたが、図１に示される要素、処理及び／又はデバイスの１以上は、他の何れかの方法により合成、分割、再構成、省略、削除及び／又は実装されてもよい。さらに、図１の一例となるプロテクション機構１０８、一例となるレジスタ１３４、一例となる生成記述子１３８、一例となる検証記述子１４０、一例となる修復記述子１４２、一例となるＳＭＩ生成手段１４４、一例となるＳＭＭハンドラ１１２、一例となるプロテクトされた領域１１４及び／又はより全体的には一例となる計算プラットフォーム１００は、ハードウェア、ソフトウェア、ファームウェア及び／又はハードウェア、ファームウェア及び／又はソフトウェアの何れかの組み合わせにより実現されてもよい。従って、例えば、図１の一例となるプロテクション機構１０８、一例となるレジスタ１３４、一例となる生成記述子１３８、一例となる検証記述子１４０、一例となる修復記述子１４２、一例となるＳＭＩ生成手段１４４、一例となるＳＭＭハンドラ１１２、一例となるプロテクトされた領域１１４及び／又はより全体的には一例となる計算プラットフォーム１００の何れかは、１以上の回路、プログラマブルプロセッサ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、プログラマブルロジックデバイス（ＰＬＤ）及び／又はフィールドプログラマブルロジックデバイス（ＦＰＬＤ）によって実現可能である。添付した装置の請求項の何れかが純粋にソフトウェア及び／又はファームウェアの実現形態をカバーするよう読まれるとき、図１の一例となるプロテクション機構１０８、一例となるレジスタ１３４、一例となる生成記述子１３８、一例となる検証記述子１４０、一例となる修復記述子１４２、一例となるＳＭＩ生成手段１４４、一例となるＳＭＭハンドラ１１２、一例となるプロテクトされた領域１１４及び／又はより全体的には計算プラットフォーム１００は、メモリ、ＤＶＤ、ＣＤなどのソフトウェア及び／又はファームウェアを格納する有形な媒体を含むよう明示的に規定される。さらに、図１の一例となるプロテクション機構１０８、一例となるレジスタ１３４、一例となる生成記述子１３８、一例となる検証記述子１４０、一例となる修復記述子１４２、一例となるＳＭＩ生成手段１４４、一例となるＳＭＭハンドラ１１２、一例となるプロテクトされた領域１１４及び／又はより全体的には計算プラットフォーム１００は、図１に示されるものに加えて又は代わりに、１以上の要素、処理及び／又はデバイスを含むものであってよく、及び／又は図示された要素、処理及びデバイスの何れか又はすべてのうちの１以上を含むものであってもよい。
【００２３】
図５は、ＰＯＳＴを実行するため図１の一例となるＢＩＯＳ１０６を実現するのに実行可能なコンピュータ可読命令などを用いて実現可能な一例となる処理を示すフロー図である。図６は、ＳＭＲＡＭ１１０のプロテクトされた領域１１４のＳＭＭコードをプロテクトするため、図１の一例となるプロテクション機構１０８を実現するため実行可能なコンピュータ可読命令などを用いて実現可能な一例となる処理を示すフロー図である。図５及び６の一例となる処理は、プロセッサ、コントローラ及び／又は他の何れか適切な処理装置を用いて実行されてもよい。例えば、図５及び６の一例となる処理は、フラッシュメモリ、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）及び／又はＲＡＭ（Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの有形なコンピュータ可読媒体に格納される符号化された命令（コンピュータ可読命令など）を用いて実現されてもよい。さらに又はあるいは、図５及び６の一例となる処理は、フラッシュメモリ、ＲＯＭ、ＲＡＭ、キャッシュ又は何れかの期間（例えば、延長された期間、永続的に、ブリーフインスタンス（ｂｒｉｅｆ  ｉｎｓｔａｎｃｅ）、一時的なバッファリングのため及び／又は情報のキャッシュのため）、において情報が格納される他の何れかの記憶媒体などの非一時的なコンピュータ可読媒体に格納される符号化された命令（コンピュータ可読命令など）を用いて実現されてもよい。ここで用いられる「非一時的なコンピュータ可読媒体」とは、何れかのタイプのコンピュータ可読媒体を含み、伝搬信号を除外するよう明示的に規定される。
【００２４】
あるいは、図５及び６の一例となる処理の一部又はすべては、ＡＳＩＣ、ＰＬＤ、ＦＰＬＤ、ディスクリートロジック、ハードウェア、ファームウェアなどの何れかの組み合わせを用いて実現されてもよい。図５及び６の一例となる処理の一部又はすべては、ファームウェア、ソフトウェア、ディスクリートロジック及び／又はハードウェアの何れかの組み合わせなどの上記技術の何れかの組み合わせとして、又は手作業により実現されてもよい。さらに、図５及び６の一例となる処理は、図５及び６のフロー図を参照して説明されるが、図５及び６の処理を実現する他の方法が利用されてもよい。例えば、ブロックの実行順序は変更されてもよく、及び／又は説明されたブロックの一部は、変更、除外、細分化又は合成されてもよい。さらに、図５及び６の一例となる処理の何れか又はすべては、例えば、別々の処理スレッド、プロセッサ、デバイス、ディスクリートロジック、回路などによって順次的に及び／又は並列的に実行されてもよい。
【００２５】
図５を参照して、ＢＩＯＳ１０６は、計算プラットフォーム１００のプロセッサ（例えば、図９に関して後述される一例となるプロセッサ９１２など）に結合される不揮発性メモリに格納されたマシーン可読命令の形式によりソフトウェア及び／又はファームウェアとして実現される。一般に、ＢＩＯＳ１０６は、オペレーティングシステムをブートする前に、１以上のハードウェア及びソフトウェアコンフィギュレーションを実行し、アクティビティをテストする（メモリ初期化、メモリパーティションなど）。
【００２６】
図５の例示された具体例では、ＢＩＯＳ１０６がＰＯＳＴを開始すると（ブロック５００）、ＢＩＯＳ１０６は、図１の一例となる計算プラットフォーム１００のリソースを初期化する（ブロック５０２）。ブロック５０２においてＢＩＯＳ１０６により実行される従来の処理に加えて、一例となるＢＩＯＳ１０６は、ここに説明される具体例に従って初期化を実行する。特に、ＢＩＯＳ１０６は、一例となるＳＭＭハンドラ１１２をＴＳＥＧに格納するようプロテクトされた領域１１４を設定する（ブロック５０４）。上述されるように、この設定は、ＢＩＯＳ１０６がＴＳＥＧにおけるプロテクトされた領域１１４の位置によってＤＭＡエンジン１０８のレジスタ１３４をプログラムし、レジスタ１３４をロックすることを含む。さらに、ＢＩＯＳ１０６は、ＳＭＭハンドラ１１２のコードをプロテクトされた領域１１４にロードし、ＳＭＭハンドラ１１２のコードがロードされると、パリティブロック１３０の生成をトリガする（ブロック５０６）。ＢＩＯＳ１０６は、プロテクトされた領域１１４及びＤＭＡエンジン１０８に関連する設定及び初期化の精度を確認し、その後、トリガされたＰＯＳＴを継続及び／又は有効にする（ブロック５１０）。
【００２７】
図６を参照して、プロテクション機構１０８は、図示された具体例においてＤＭＡエンジンによって実現される。より詳細には、図示された具体例の一例となるプロテクション機構１０８は、ＲＡＩＤ−５アルゴリズム及びそのオペコードを利用するＣＢ  ＤＭＡによって実現される。ＲＡＩＤ−５アルゴリズムは、コードブロック１１６〜１２８におけるエラーを訂正するパリティベースの方法のためのＸＯＲロジックを利用する。
【００２８】
図６の一例となるフロー図は、プロテクション機構１０８が初期化され（ＢＩＯＳ１０６などによって）、ＳＭＭハンドラ１１２のコードがプロテクトされた領域１１４にロードされるときのプロテクション機構１０８の動作に対応する（ブロック６００）。図６の図示された具体例では、プロテクション機構１０８は、エラー検出ユニット１０４（ＩＩＯなど）を介しメモリコントローラ１０２がＥＣＣエラーを検出するまで、アイドル状態を維持する（ブロック６０２）。上述されるように、プロテクション機構１０８は、メモリコントローラ１０２からエラー通知（ＳＭＩリクエストなど）を受信又は傍受するよう構成される。ブロック６０２において、このような通知を受信することに応答して、プロテクション機構１０８は、ＳＭＲＡＭ１１０のプロテクトされた領域１１４のコンテンツを検証することを試み始める（ブロック６０４）。ここに説明されるように、プロテクション機構１０８は、ＢＩＯＳ１０６がＳＭＭモードを利用する際に損傷したコードを実行しないことを保証するため、ＳＭＭハンドラ１１２のコードを検証する（例えば、図１の検証記述子１４０などを用いて）。
【００２９】
５番目のコードブロック１２６などのチェックされているコードブロックのキャッシュラインがポイズンインジケータを有するとき（例えば、エラー検出ユニット１０４を介しメモリコントローラ１０２により配置されるとき）（ブロック６０６）、プロテクション機構１０８は、（図１の修復記述子１４２などを用いて）エラーを有するキャッシュラインを修復する（ブロック６０８）。例えば、５番目のコードブロック１２６がエラーを有するとき、以下の式が、５番目のコードブロック１２６を修復するのに利用される。すなわち、ｃｏｄｅ＿ｂｌｋ５＝ｃｏｄｅ＿ｂｌｋ０  ＸＯＲ  ｃｏｄｅ＿ｂｌｋ１  ＸＯＲ  ｃｏｄｅ＿ｂｌｋ２  ＸＯＲ  ｃｏｄｅ＿ｂｌｋ３  ＸＯＲ  ｃｏｄｅ＿ｂｌｋ４  ＸＯＲ  ｐａｒｉｔｙ＿ｂｌｋ  ＸＯＲ  ｃｏｄｅ＿ｂｌｋ６である。
【００３０】
エラーを有するキャッシュラインが修復されると、プロテクション機構１０８は、プロテクトされた領域１１４のＳＭＭコード全体が検証されたか判断する（ブロック６１０）。あるいは、図６のブロック６０６に戻って、検証が試みられているキャッシュラインがエラーを含まない場合、プロテクション機構１０８は、プロテクトされた領域１１４のＳＭＭコード全体が検証されたか判断する（ブロック６１０）。プロテクトされた領域１１４のＳＭＭコード全体が検証されていない場合、プロテクション機構１０８は、プロテクトされたＳＭＭコードの次のキャッシュラインを検証することを試みる（ブロック６０４）。そうでない場合、プロテクトされた領域１１４のＳＭＭコード全体が検証されている場合、プロテクション機構１０８のＳＭＩ生成手段１４４は、メモリコントローラ１０２からプロテクション機構１０８によって傍受又は受信されたＳＭＩリクエストに従ってＳＭＩを生成する（ブロック６１２）。その後、プロテクション機構１０８は、アイドル状態に戻り（ブロック６１４）、メモリコントローラ１０２からの他のエラー通知を待機する（ブロック６０２）。
【００３１】
図７は、図１の一例となるプロテクション機構の第１アルゴリズムによりプロテクトされるような図１のコードブロック１１６〜１２８の図である。図７のカラムは、図１のパリティブロック１３０とコードブロック１１６〜１２８のキャッシュラインを表す。例えば、図７において“Ｃ１”としてラベル付けされた第１キャッシュラインは、第１キャッシュラインを表す。図７は、ＣＢ  ＤＭＡエンジンに対してＲＡＩＤ−５パリティアルゴリズムを実現するプロテクション機構１０８を示す。図７に示されるように、複数のビットエラー（図７においてＸにより表される）は、関連するキャッシュラインが訂正不可なＥＣＣエラーを含まない限り、単一のコード又はパリティブロックの何れか１つのキャッシュライン内に蓄積できる。
【００３２】
図８は、図１の一例となるプロテクション機構の第２アルゴリズムによりプロテクトされるような図１のコードブロックの図である。特に、図８は、ＣＢ  ＤＭＡエンジンに対してＲＡＩＤ−６パリティアルゴリズムを実現するプロテクション機構１０８を示す。ＲＡＩＤ−６のコンフィギュレーションは、例えば、各カラムの２つのキャッシュラインがプロテクトされることを可能にするさらなるプロテクションを提供する。このプロテクションを提供するため、コードブロックの１つ（図示された具体例ではｃｏｄｅ  ｂｌｋ６）が、商ブロック（ｑｕｏｔｉｅｎｔ  ｂｌｏｃｋ）と置換される。図８のパリティブロックと商ブロックとは、ＲＡＩＤ−６アーキテクチャに従って利用され、エラーを含むキャッシュラインを修復するのに利用される。
【００３３】
図９は、図２のマシーン可読命令を実行するため、及び／又は図１の一例となるＢＩＯＳリカバリモジュール１０２及び／又は一例となる計算プラットフォーム１００の１以上の一例となるコンポーネントを実現するため利用される一例となるプロセッサシステムのブロック図である。図９に示されるように、プロセッサシステム９１０は、相互接続バス９１４に接続されるプロセッサ９１２を含む。プロセッサ９１２は、何れか適切なプロセッサ、処理ユニット又はマイクロプロセッサであってもよい。図９には示されていないが、システム９１０は、マルチプロセッサシステムであってもよく、プロセッサ９１２と異なり、同一であり又は類似し、相互接続バス９１４に通信接続される１以上のさらなるプロセッサを含むものであってもよい。
【００３４】
図９のプロセッサ９１２は、メモリコントローラ９２０及び入出力（Ｉ／Ｏ）コントローラ９２２を有するチップセット９１８に接続される。チップセット９１８は、Ｉ／Ｏ及びメモリ管理機能と共に、チップセット９１８に接続される１以上のプロセッサにアクセス可能であるか、又は利用される複数の汎用及び／又は特定用途レジスタ、タイマーなどを提供する。メモリコントローラ９２０は、プロセッサ９１２（又は複数のプロセッサがある場合には複数のプロセッサ）がシステムメモリ９２４及びマスストレージメモリ９２５にアクセスすることを可能にする機能を実行する。
【００３５】
システムメモリ９２４は、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）、フラッシュメモリ、ＲＯＭなどの何れか所望のタイプの揮発性及び／又は不揮発性メモリを含むものであってもよい。マスストレージメモリ９２５は、ハードディスクドライブ、光ドライブ、テープストレージデバイスなどを含む何れか所望のタイプのマスストレージデバイスを含むものであってもよい。
【００３６】
Ｉ／Ｏコントローラ９２２は、プロセッサ９１２がＩ／Ｏバス９３２を介し周辺Ｉ／Ｏデバイス９２６，９２８及びネットワークインタフェース９３０と通信することを可能にする機能を実行する。Ｉ／Ｏデバイス９２６，９２８は、キーボード、ビデオディスプレイ又はモニタ、マウスなどの何れか所望のタイプのＩ／Ｏデバイスであってもよい。ネットワークインタフェース９３０は、プロセッサシステム３１０が他のプロセッサシステムと通信することを可能にするイーサネット（登録商標）、デバイス、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）デバイス、８０２．１１デバイス、ＤＳＬモデム、ケーブルモデム、セルラモデムなどであってもよい。
【００３７】
図３において、メモリコントローラ３２０とＩ／Ｏコントローラ３２２とは、チップセット３１８内の別々のブロックとして示されているが、これらのブロックにより実行される機能は、単一の半導体回路内に一体化されてもよいし、又は２以上の別々の集積回路を用いて実現されてもよい。
【００３８】
特定の方法、装置及び製造物が説明されたが、本特許のカバーする範囲はこれに限定されるものでない。他方、本特許は、添付した請求項の範囲内に文言上又は均等の教義の下で含まれるすべての方法、装置及び製造物をカバーする。
【図１】
0005512892.tif 000002
【図２】
0005512892.tif 000003
【図３】
0005512892.tif 000004
【図４】
0005512892.tif 000005
【図５】
0005512892.tif 000006
【図６】
0005512892.tif 000007
【図７】
0005512892.tif 000008
【図８】
0005512892.tif 000009
【図９】
0005512892.tif 000010