(57)【要約】【課題】テスト・パターン実行段階の間にテスト・ケースの縮小されたセットを活用する。【解決手段】テスト・ケース・マネジャが、複数のテスト・ケースから第１テスト・ケースおよび第２テスト・ケースを選択する。テスト・ケース・マネジャは、第１テスト・ケースを第１プロセッサに提供し、第２テスト・ケースを第２プロセッサに提供する。したがって、第１プロセッサは第１テスト・ケースを実行し、第２プロセッサは第２テスト・ケースを実行する。実行後、テスト・ケース・マネジャは第１テスト・ケースを第２プロセッサへロードし、第２テスト・ケースを第１プロセッサへロードする。次に、第１プロセッサは第２テスト・ケースを実行し、第２プロセッサは第１テスト・ケースを実行する。【選択図】図９
2010020766.tif 000002
【特許請求の範囲】
【請求項１】
機械に実装される方法であって、
複数のテスト・ケースから第１テスト・ケースを選択するステップと、
前記複数のテスト・ケースから第２テスト・ケースを選択するステップと、
前記第１テスト・ケースを第１プロセッサ上で実行し、前記第２テスト・ケースを第２プロセッサ上で実行するステップと、
前記実行後に、前記第１テスト・ケースを前記第２プロセッサ上にロードし、前記第２テスト・ケースを前記第１プロセッサ上にロードするステップと、
前記第１テスト・ケースを前記第２プロセッサ上で実行し、前記第２テスト・ケースを前記第１プロセッサ上で実行するステップと、
を含む前記方法。
【請求項２】
前記第１テスト・ケースおよび前記第２テスト・ケースは、同時に実行する、請求項１に記載の方法。
【請求項３】
前記第１プロセッサ上で前記第１テスト・ケースを前記実行する間に、メイン・メモリから、前記第１プロセッサに対応する第１キャッシュ内の第１キャッシュ・ラインへ、第１セットのデータをロードするステップと、
前記第２プロセッサ上で前記第２テスト・ケースを前記実行する間に、前記メイン・メモリから、前記第２プロセッサに対応する第２キャッシュ内の第２キャッシュ・ラインへ、第２セットのデータをロードするステップと、
前記第１プロセッサ上で前記第１テスト・ケースを実行するのに応答して前記第１セットのデータを変更し、前記第２プロセッサ上で前記第２テスト・ケースを実行するのに応答して前記第２セットのデータを変更するステップと、
をさらに含む、請求項１に記載の方法。
【請求項４】
前記第１テスト・ケースを前記第２プロセッサ上にロードし、前記第２テスト・ケースを前記第１プロセッサ上にロードするステップの後に、前記第１セットのデータおよび前記第２セットのデータの前記変更を検出するステップと、
前記検出に応答して、前記変更済みの第１セットのデータを、前記第１キャッシュ・ラインから前記第２キャッシュへロードし、前記変更済みの第２セットのデータを、前記第２キャッシュ・ラインから前記第１キャッシュへロードするステップと、
をさらに含む、請求項３に記載の方法。
【請求項５】
前記検出は、ミス論理、スヌーピング論理、フラッシュ論理、および無効化論理から成る群から選択されるキャッシュ論理により実行される、請求項４に記載の方法。
【請求項６】
前記複数のテスト・ケースから第３テスト・ケースを選択するステップと、
前記第１プロセッサ上での前記第１テスト・ケースの前記実行および前記第２プロセッサ上での前記第２テスト・ケースの前記実行と同時に、前記第３テスト・ケースを第３プロセッサ上で実行するステップと、
前記第１テスト・ケースを前記第２プロセッサ上にロードさせ、前記第２テスト・ケースを前記第３プロセッサ上にロードさせ、前記第３テスト・ケースを前記第１プロセッサ上にロードさせる、第１循環を呼び出すステップと、
前記第１循環の後に、前記第１テスト・ケースを前記第２プロセッサ上で実行し、前記第２テスト・ケースを前記第３プロセッサ上で実行し、前記第３テスト・ケースを前記第１プロセッサ上で実行するステップと、
前記第１テスト・ケースを前記第３プロセッサ上にロードさせ、前記第２テスト・ケースを前記第１プロセッサ上にロードさせ、前記第３テスト・ケースを前記第２プロセッサ上にロードさせる、第２循環を呼び出すステップと、
前記第２循環の後に、前記第１テスト・ケースを前記第３プロセッサ上で実行し、前記第２テスト・ケースを前記第１プロセッサ上で実行し、前記第３テスト・ケースを前記第２プロセッサ上で実行するステップと、
をさらに含む、請求項１に記載の方法。
【請求項７】
前記第１プロセッサ、前記第２プロセッサおよび前記第３プロセッサは同種である、請求項６に記載の方法。
【請求項８】
１つ以上のプロセッサと、
前記プロセッサのうちの少なくとも１つによってアクセス可能なメモリと、
前記プロセッサのうちの少なくとも１つによってアクセス可能な不揮発性記憶領域と、
以下のアクション：
複数のテスト・ケースから第１テスト・ケースを選択すること、
前記複数のテスト・ケースから第２テスト・ケースを選択すること、
前記第１テスト・ケースを第１プロセッサ上で実行し、前記第２テスト・ケースを第２プロセッサ上で実行すること、
前記実行後に、前記第１テスト・ケースを前記第２プロセッサ上にロードし、前記第２テスト・ケースを前記第１プロセッサ上にロードすること、および
前記第１テスト・ケースを前記第２プロセッサ上で実行し、前記第２テスト・ケースを前記第１プロセッサ上で実行すること
を実行するために、前記メモリに格納され、前記プロセッサのうちの少なくとも１つにより実行される、命令セットと、
を含む、情報処理システム。
【請求項９】
前記第１テスト・ケースおよび前記第２テスト・ケースは、同時に実行する、請求項８に記載の情報処理システム。
【請求項１０】
前記命令セットは、以下のアクション：
前記第１プロセッサ上で前記第１テスト・ケースを前記実行する間に、メイン・メモリから、前記第１プロセッサに対応する第１キャッシュ内の第１キャッシュ・ラインへ、第１セットのデータをロードすること、
前記第２プロセッサ上で前記第２テスト・ケースを前記実行する間に、前記メイン・メモリから、前記第２プロセッサに対応する第２キャッシュ内の第２キャッシュ・ラインへ、第２セットのデータをロードすること、および
前記第１プロセッサ上で前記第１テスト・ケースを実行するのに応答して前記第１セットのデータを変更し、前記第２プロセッサ上で前記第２テスト・ケースを実行するのに応答して前記第２セットのデータを変更すること、
を実行する、請求項８に記載の情報処理システム。
【請求項１１】
前記命令セットは、以下のアクション：
前記第１テスト・ケースを前記第２プロセッサ上にロードし、前記第２テスト・ケースを前記第１プロセッサ上にロードした後に、前記第１セットのデータおよび前記第２セットのデータの前記変更を検出すること、および
前記検出に応答して、前記変更済みの第１セットのデータを、前記第１キャッシュ・ラインから前記第２キャッシュへロードし、前記変更済みの第２セットのデータを、前記第２キャッシュ・ラインから前記第１キャッシュへロードすること、
を実行する、請求項１０に記載の情報処理システム。
【請求項１２】
前記検出は、ミス論理、スヌーピング論理、フラッシュ論理、および無効化論理から成る群から選択されるキャッシュ論理により実行される、請求項１１に記載の情報処理システム。
【請求項１３】
前記命令セットは、以下のアクション：
前記複数のテスト・ケースから第３テスト・ケースを選択すること、
前記第１プロセッサ上での前記第１テスト・ケースの前記実行および前記第２プロセッサ上での前記第２テスト・ケースの前記実行と同時に、前記第３テスト・ケースを第３プロセッサ上で実行すること、
前記第１テスト・ケースを前記第２プロセッサ上にロードさせ、前記第２テスト・ケースを前記第３プロセッサ上にロードさせ、前記第３テスト・ケースを前記第１プロセッサ上にロードさせる、第１循環を呼び出すこと、
前記第１循環の後に、前記第１テスト・ケースを前記第２プロセッサ上で実行し、前記第２テスト・ケースを前記第３プロセッサ上で実行し、前記第３テスト・ケースを前記第１プロセッサ上で実行すること、
前記第１テスト・ケースを前記第３プロセッサ上にロードさせ、前記第２テスト・ケースを前記第１プロセッサ上にロードさせ、前記第３テスト・ケースを前記第２プロセッサ上にロードさせる、第２循環を呼び出すこと、
前記第２循環の後に、前記第１テスト・ケースを前記第３プロセッサ上で実行し、前記第２テスト・ケースを前記第１プロセッサ上で実行し、前記第３テスト・ケースを前記第２プロセッサ上で実行すること、
を実行する、請求項８に記載の情報処理システム。
【請求項１４】
前記第１プロセッサ、前記第２プロセッサおよび前記第３プロセッサは同種である、請求項１３に記載の情報処理システム。
【請求項１５】
コンピュータに、
複数のテスト・ケースから第１テスト・ケースを選択するステップと、
前記複数のテスト・ケースから第２テスト・ケースを選択するステップと、
前記第１テスト・ケースを第１プロセッサ上で実行し、前記第２テスト・ケースを第２プロセッサ上で実行するステップと、
前記実行後に、前記第１テスト・ケースを前記第２プロセッサ上にロードし、前記第２テスト・ケースを前記第１プロセッサ上にロードするステップと、
前記第１テスト・ケースを前記第２プロセッサ上で実行し、前記第２テスト・ケースを前記第１プロセッサ上で実行するステップと、
を実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、簡便でハイ・スループットのテスト・ケースの方法に関する。特に、本発明は、テスト・ケースの縮小されたセットを利用してプロセッサを効果的にテストするために、同種のプロセッサ間でテスト・ケースを交換することに関する。
【背景技術】
【０００２】
プロセッサに対して最もストレスのかかるテスト・ケースを生成することを目的としたプロセッサ・テスト・ツールが複数ある。理論上、生成されたテスト・ケースは最大のテスト対象を実現するべきであり、種々のタイミング・シナリオのストレスをプロセッサにかけられるよう、十分に変わったものである必要がある。これらのツールの技術全体は、これらのテスト・ケースを構築する論理にある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
テスト・ケースを使用してプロセッサを検証および確認することには、典型的には、１）テスト・パターンの構築段階、２）テスト・パターンの実行段階、ならびに３）検証および確認段階の３段階が含まれる。本願明細書に記載される本発明は、テスト・パターン実行段階の間にテスト・ケースの縮小されたセットを利用することに関する。
【課題を解決するための手段】
【０００４】
テスト・ケース・マネジャが、複数のテスト・ケースから、第１テスト・ケースおよび第２テスト・ケースを選択する。テスト・ケース・マネジャは、第１テスト・ケースを第１プロセッサに提供し、第２テスト・ケースを第２プロセッサに提供する。次に、第１プロセッサは第１テスト・ケースを実行し、第２プロセッサは第２テスト・ケースを実行する。実行後、テスト・ケース・マネジャが第１テスト・ケースを第２プロセッサにロードし、第２テスト・ケースを第１プロセッサにロードすると、第１プロセッサは第２テスト・ケースを実行し、第２プロセッサは第１テスト・ケースを実行する。
【０００５】
前述のものは概要であり、したがって、必然的に、細部の単純化、一般化、および省略を含んでいる。その結果、当業者には当然のことながら、概要は一例にすぎず、制限することは全く意図されていない。特許請求の範囲によってのみ定義される本発明のその他の態様、発明特徴事項、および利点は、以下に記述する非限定的な詳細説明で明らかになる。
【図面の簡単な説明】
【０００６】
【図１】本願明細書に記載される方法を実装することができるデータ処理システムのブロック図である。
【図２】本願明細書に記載される方法が、ネットワーク化された環境で動作する幅広い種類の情報処理システム上で実行可能であることを示すよう、図１で示された情報処理システム環境の拡張を提供する。
【図３】システム・メモリを共有するメイン・プロセッサと、複数の補助プロセッサとを有する処理要素を示すブロック図である。
【図４】別々のプロセッサ上で実行する複数のテスト・ケース実行器（ｔｅｓｔ  ｃａｓｅ  ｅｘｅｃｕｔｏｒ）に「ｎ」テスト・ケースを与えるテスト・ケース・マネジャを示す図である。
【図５】プロセッサをさらにテストするために、同種のプロセッサ間でテスト・ケースを交換するテスト・ケース・マネジャを示す図である。
【図６】プロセッサ間でテスト・ケースを交換するためのラウンド・ロビン法を示す表である。
【図７】テスト・ケースの実行中に、キャッシュ・ライン・データを対応するキャッシュ・ラインにロードするプロセッサを示す図である。
【図８】プロセッサ間でのテスト・ケースの交換の結果として、専用プロセッサ・キャッシュ間でキャッシュ・データを移動させるキャッシュ論理を示す図である。
【図９】プロセッサ・システムに含まれるプロセッサ間でテスト・ケースを交換するのに経るステップを示す流れ図である。
【発明を実施するための形態】
【０００７】
本発明は、添付の図面を参照することによってより深く理解されると考えられ、本発明の数々の目的、特徴および利点が、当業者にとって明確となる。
【０００８】
本発明の種々の実施形態が完全に理解されるよう、具体的な特定の詳細事項が、以下の説明および図面に記載されている。なお、本発明の種々の実施形態を不必要に曖昧にすることを避けるため、コンピューティングおよびソフトウェアの技術に関連することの多い特定の周知の詳細事項は以下の開示に記載されない。さらに、当業者には当然のことながら、当業者は、以下に記載される詳細事項の１つ以上を伴わずに、本発明の他の実施形態を実践することができる。最後に、以下の開示では、ステップおよびシーケンスを参照して種々の方法が記載されるが、そのような記載は、本発明の実施形態の明確な実装を提供するためのものであり、ステップおよびステップのシーケンスは、本発明を実践するために必須であると受け止めてはならない。それどころか、以下は、本発明の例を詳細に説明することを意図しており、本発明そのものを制限するものとして受け止められるべきではない。むしろ、いくつもの変形物が、説明に続く特許請求の範囲により定義される本発明の範囲に入ると考えられる。
【０００９】
以下の詳細な説明は、全般的に上記の発明の概要に従うが、必要に応じて、本発明の種々の態様および実施形態の定義をさらに説明し、広げていく。この目的を達成するために、この詳細な説明はまず、本発明に関連するソフトウェアまたはハードウェア、あるいはその両方の技術を実装するのに適した、図１のコンピューティング環境について記載する。現代のコンピューティング技術が、複数の個別デバイスにまたがって実行可能であることを強調するために、図２には、基本的なコンピューティング環境の拡張として、ネットワーク化環境が示されている。
【００１０】
図１は、本願明細書に記載されるコンピューティング動作を実行することができるコンピュータ・システムの簡略化した例である、情報処理システム１００を示す。情報処理システム１００は、プロセッサ・インターフェース・バス１１２に連結された１つ以上のプロセッサ１１０を含む。プロセッサ・インターフェース・バス１１２は、プロセッサ１１０を、メモリ・コントローラ・ハブ（ＭＣＨ：Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ）としても知られるノースブリッジ１１５に接続する。ノースブリッジ１１５は、システム・メモリ１２０に接続され、プロセッサ（単数または複数）１１０がシステム・メモリにアクセスする手段を提供する。グラフィックス・コントローラ１２５もノースブリッジ１１５に接続されている。一実施形態では、ＰＣＩ  Ｅｘｐｒｅｓｓ（Ｒ）バス１１８が、ノースブリッジ１１５をグラフィックス・コントローラ１２５に接続するために使用されている。グラフィックス・コントローラ１２５は、コンピュータ用モニタなどの表示デバイス１３０に接続されている。
【００１１】
ノースブリッジ１１５およびサウスブリッジ１３５は、バス１１９を使用して互いに接続されている。一実施形態では、バスは、ノースブリッジ１１５とサウスブリッジ１３５との間で各方向に高速でデータを転送するダイレクト・メディア・インターフェース（ＤＭＩ：Ｄｉｒｅｃｔ  Ｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）バスである。別の実施形態では、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスが、ノースブリッジとサウスブリッジとの接続に使用される。Ｉ／Ｏコントローラ・ハブ（ＩＣＨ：Ｉ／Ｏ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ）としても知られるサウスブリッジ１３５は、一般に、ノースブリッジによりもたらされる能力よりも低速で動作する能力を実装するチップである。典型的には、サウスブリッジ１３５は、種々のコンポーネントを接続するのに使用される種々のバスを提供する。これらのバスには、ＰＣＩおよびＰＣＩ  Ｅｘｐｒｅｓｓバス、ＩＳＡバス、システム管理バス（ＳＭＢｕｓまたはＳＭＢ：Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）、少ピン数（ＬＰＣ：Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ）バスが含まれ得る。ＬＰＣバスは、ブートＲＯＭ１９６および「レガシー」Ｉ／Ｏデバイス（「スーパーＩ／Ｏ」チップを使用する）などの低帯域幅デバイスの接続に使用されることが多い。「レガシー」Ｉ／Ｏデバイス（１９８）には、シリアルおよびパラレル・ポート、キーボード、マウス、フレキシブル・ディスク・コントローラなどが含まれ得る。ＬＰＣバスは、サウスブリッジ１３５をトラステッド・プラットフォーム・モジュール（ＴＰＭ：Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）１９５に接続するのにも使用される。サウスブリッジ１３５に含まれることが多いその他のコンポーネントには、直接メモリ・アクセス（ＤＭＡ：Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ、プログラマブル・インタラプト・コントローラ（ＰＩＣ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ）、サウスブリッジ１３５をＡＴＡまたはＵＡＴＡバス１８４を使用してハード・ディスク・ドライブなどの不揮発性記憶デバイス１８５に接続する、記憶デバイス・コントローラがある。
【００１２】
ＥｘｐｒｅｓｓＣａｒｄ１５５は、ホットプラグ可能なデバイスを情報処理システムに接続するために使用されるスロットである。ＥｘｐｒｅｓｓＣａｒｄ１５５は、ユニバーサル・シリアル・バス（ＵＳＢ：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）およびＰＣＩ  Ｅｘｐｒｅｓｓバスの両方を使用してサウスブリッジ１３５に接続されているため、ＰＣＩ  ＥｘｐｒｅｓｓとＵＳＢ接続性のどちらもサポートする。サウスブリッジ１３５は、ＵＳＢに接続するデバイスにＵＳＢ接続性を提供するＵＳＢコントローラ１４０を含む。これらのデバイスには、ウェブカメラ（カメラ）１５０、赤外線（ＩＲ：ｉｎｆｒａｒｅｄ）受信機１４８、ワイヤレス・パーソナル・エリア・ネットワーク（ＰＡＮ：ｐｅｒｓｏｎａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）を提供するＢｌｕｅｔｏｏｔｈ（Ｒ）デバイス１４６、キーボードおよびトラックパッド１４４、ならびに、マウス、取り外し可能な不揮発性記憶デバイス１４５、モデム、ネットワーク・カード、ＩＳＤＮコネクタ、ファックス、プリンタ、ＵＳＢハブおよびその他多様なＵＳＢ接続されるデバイスなど、その他多岐にわたる、ＵＳＢ接続されるＵＳＢデバイス１４２がある。取り外し可能な不揮発性記憶デバイス１４５が、ＵＳＢ接続されたデバイスとして示されているが、取り外し可能な不揮発性記憶デバイス１４５は、Ｆｉｒｅｗｉｒｅ（Ｒ）インターフェースなどの別のインターフェースを使用して接続することができるであろう。
【００１３】
ワイヤレス・ローカル・エリア・ネットワーク（ＬＡＮ）デバイス１７５は、ＰＣＩまたはＰＣＩ  Ｅｘｐｒｅｓｓバス１７２を介してサウスブリッジ１３５に接続されている。ＬＡＮデバイス１７５は、典型的には、情報処理システム１００と、別のコンピュータ・システムまたはデバイスとの間でのワイヤレス通信に、すべてが同じプロトコルを使用する、無線変調技術のＩＥＥＥ８０２．１１標準のうちの１つを実装する。光学記憶デバイス１９０は、シリアルＡＴＡ（ＳＡＴＡ：Ｓｅｒｉａｌ  ＡＴＡ）バス１８８を使用してサウスブリッジ１３５に接続されている。シリアルＡＴＡアダプタおよびデバイスは、高速シリアル・リンク上で通信する。シリアルＡＴＡバスは、サウスブリッジ１３５を、ハード・ディスク・ドライブなどの他の形態の記憶デバイスに接続するためにも使用される。サウンド・カードなどの音声回路（ａｕｄｉｏ  ｃｉｒｃｕｉｔｒｙ）１６０は、ＨＤインターフェース１５８を介してサウスブリッジ１３５に接続されている。音声回路１６０は、音声入力（ａｕｄｉｏ  ｌｉｎｅ−ｉｎ）および光デジタル音声入力ポート（ｏｐｔｉｃａｌ  ｄｉｇｉｔａｌ  ａｕｄｉｏ  ｉｎ  ｐｏｒｔ）１６２、光デジタル出力およびヘッドホン・ジャック１６４、内蔵スピーカ１６６、ならびに内蔵マイク１６８などの機能性を提供するために使用される。イーサネット（Ｒ）コントローラ１７０は、ＰＣＩまたはＰＣＩ  Ｅｘｐｒｅｓｓバスなどのバスを使用してサウスブリッジ１３５に接続されている。イーサネット・コントローラ１７０は、情報処理システム１００を、ローカル・エリア・ネットワーク（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、およびその他のパブリックまたはプライベート・コンピュータ・ネットワークなどのコンピュータ・ネットワークと接続するために使用される。
【００１４】
図１は１つの情報処理システムを示すが、情報処理システムは多数の形態をとり得る。例えば、情報処理システムは、デスクトップ、サーバ、ポータブル、ラップトップ、ノート型、もしくはその他のフォーム・ファクタのコンピュータまたはデータ処理システムの形態をとり得る。さらに、情報処理システムは、携帯情報端末（ＰＤＡ：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、ゲーム・デバイス、ＡＴＭ機、携帯用電話デバイス、通信デバイス、またはプロセッサとメモリとを含んだその他のデバイスなど、その他のフォーム・ファクタをとることもできる。
【００１５】
セキュリティ機能を提供するよう図１に示され本願明細書に記載されているトラステッド・プラットフォーム・モジュール（ＴＰＭ１９５）は、ハードウェア・セキュリティ・モジュール（ＨＳＭ：ｈａｒｄｗａｒｅ  ｓｅｃｕｒｉｔｙ  ｍｏｄｕｌｅ）の一例でしかない。したがって、本願明細書で説明され、特許請求の範囲に記載されるＴＰＭは、次に限定はされないが、「Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ  （ＴＰＭ）  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．２．」という題の、トラステッド・コンピューティング・グループ（ＴＣＧ：Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐｓ）標準に準拠するハードウェア・セキュリティ・デバイスなど、任意の種類のＨＳＭを含む。ＴＰＭは、図２で概説されているものなど、任意の数の情報処理システムに組み込まれてよいハードウェア・セキュリティ・サブシステムである。
【００１６】
図２は、本願明細書に記載される方法が、ネットワーク化環境で動作する幅広い種類の情報処理システム上で実行可能であることを示すために、図１に示されている情報処理システム環境の拡張を提供する。情報処理システムの種類は、ハンドヘルド・コンピュータ／移動電話２１０などの小型のハンドヘルド・デバイスから、メインフレーム・コンピュータ２７０などの大型メインフレーム・システムまで多岐にわたる。ハンドヘルド・コンピュータ２１０の例には、携帯情報端末（ＰＤＡ）、ＭＰ３プレーヤ、携帯用テレビ、およびコンパクト・ディスク・プレーヤなどの個人用娯楽デバイスがある。情報処理システムの他の例には、ペン、すなわちタブレット・コンピュータ２２０、ラップトップ、すなわちノート型コンピュータ２３０、ワークステーション２４０、パーソナル・コンピュータ２５０、およびサーバ２６０がある。図２に個別に示されていない他の種類の情報処理システムは、情報処理システム２８０によって表される。図のように、コンピュータ・ネットワーク２００を使用して、種々の情報処理システムをともにネットワーク化することが可能である。種々の情報処理システムを相互接続するために使用できるコンピュータ・ネットワークの種類には、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイヤレス・ローカル・エリア・ネットワーク（ＷＬＡＮ）、インターネット、公衆交換電話網（ＰＳＴＮ：Ｐｕｂｌｉｃ  Ｓｗｉｔｃｈｅｄ  Ｔｅｌｅｐｈｏｎｅ  Ｎｅｔｗｏｒｋ）、その他のワイヤレス・ネットワーク、および情報処理システムを相互接続するために使用可能なその他任意のネットワーク・トポロジがある。情報処理システムの多くは、ハード・ドライブまたは不揮発性メモリ、あるいはその両方などの不揮発性データ・ストア（ｄａｔａ  ｓｔｏｒｅ）を含む。図２に示されている情報処理システムの一部は、別々の不揮発性データ・ストアと共に示されている（サーバ２６０は不揮発性データ・ストア２６５と共に示され、メインフレーム・コンピュータ２７０は不揮発性データ・ストア２７５と共に示され、さらに情報処理システム２８０は不揮発性データ・ストア２８５と共に示されている）。不揮発性データ・ストアは、種々の情報処理システムに外付けされたコンポーネントとされてもよく、情報処理システムのうちの１つに内蔵されていてもよい。さらに、取り外し可能な不揮発性記憶デバイス１４５を情報処理システムのＵＳＢポートまたはその他のコネクタに接続するなど、種々の技術を使用して、取り外し可能な不揮発性記憶デバイス１４５を２つ以上の情報処理システム間で共有することも可能である。
【００１７】
図３は、システム・メモリを共有するメイン・プロセッサと、複数の補助プロセッサとを有する処理要素を示すブロック図である。ブロードバンド構成要素アーキテクチャ（ＢＥＡ：Ｂｒｏａｄｂａｎｄ  Ｅｌｅｍｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ）３０５は、処理ユニット（ＰＵ：ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）３１０を含み、ＰＵ３１０は、一実施形態ではメイン・プロセッサとして機能し、オペレーティング・システムを実行する。ＰＵ３１０は、例えば、Ｌｉｎｕｘ（Ｒ）オペレーティング・システムを実行するＰｏｗｅｒ  ＰＣ（ＩＢＭ社の登録商標）コアとしてもよい。ブロードバンド構成要素アーキテクチャ３０５は、相乗処理要素（ＳＰＥ：ｓｙｎｅｒｇｉｓｔｉｃ  ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔ）３４５から３８５などの複数のＳＰＥも含む。各ＳＰＥは、ＰＵ３１０に対する補助処理ユニットとして機能する相乗処理ユニット（ＳＰＵ：ｓｙｎｅｒｇｉｓｔｉｃ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、メモリ記憶ユニット、およびローカル記憶装置を含む。例えば、ＳＰＥ３４５は、ＳＰＵ３６０、ＭＭＵ３５５、およびローカル記憶装置３５９を含み、ＳＰＥ３６５は、ＳＰＵ３７０、ＭＭＵ３７５、およびローカル記憶装置３７９を含み、ＳＰＥ３８５は、ＳＰＵ３９０、ＭＭＵ３９５およびローカル記憶装置３９９を含む。
【００１８】
一実施形態では、ＳＰＥは、ＰＵ３１０の制御の下でデータを処理する。ＳＰＥは、例えば、デジタル信号処理コア、マイクロプロセッサ・コア、マイクロ・コントローラ・コアなどであってもよく、または、上記のコアの組み合わせであってもよい。一実施形態では、ローカル・ストアはそれぞれ、特定のＳＰＵに関連づけられた記憶領域である。各ＳＰＵは、そのローカル・ストアを、プライベート記憶領域、共有記憶領域として構成することができるか、または、ＳＰＵのローカル・ストアは、部分的にプライベートとして部分的に共有されていてもよい。
【００１９】
例えば、ＳＰＵが相当な量のローカル・メモリを要求すると、ＳＰＵは、そのローカル・ストアの１００％を、そのＳＰＵにのみアクセス可能なプライベート・メモリに割り振ってもよい。その一方で、ＳＰＵがわずかな量のローカル・メモリを要求すれば、ＳＰＵはそのローカル・ストアの１０％をプライベート・メモリに割り振り、残りの９０％を共有メモリに割り振ってもよい。共有メモリにはＰＵ３１０および他のＳＰＥによるアクセスが可能である。ＳＰＵがいくらかのメモリに高速かつ確実に、そのような高速アクセスが必要なタスクを実行するときにアクセスできるよう、ＳＰＵは、そのローカル・ストアの一部を予約していてもよい。ＳＰＵはさらに、例えばＳＰＵが暗号化／復号を実行する場合のように機密データを処理するとき、ローカル・ストアの一部をプライベートとして予約することもできる。
【００２０】
ＭＭＵは、ＳＰＵのローカル・ストアとシステム・メモリとの間でのデータ転送を担う。一実施形態では、ＭＭＵは、この機能を実行するよう構成された直接メモリ・アクセス（ＤＭＡ）コントローラを含む。
【００２１】
各ＳＰＥは、異なるタスクを実行するようセットアップされていてもよく、その結果、一実施形態では、各ＳＰＥは異なる命令セットを使用してアクセスされてもよい。例えば、ブロードバンド構成要素アーキテクチャ３０５がワイヤレス通信システムで使用されていれば、各ＳＰＥは、変調、チップ・レート処理、符号化、ネットワーク・インターフェースなど、別々の処理タスクを担ってもよい。別の実施形態では、各ＳＰＥが同一の命令セットを有してもよく、並列処理が有益である動作を実行するために並行して使用されてもよい。
【００２２】
ＳＰＥのローカル・ストアの共有部分は、各共有部分をシステム・メモリ３２０にマッピングすることによって、ＰＵ３１０ならびに他のＳＰＥによりアクセスされてもよい。一実施形態では、ＰＵ３１０は、共通のシステム・メモリ３２０のメモリ・マップを管理する。メモリ・マップ・テーブルは、ＰＵ３１０のＬ２キャッシュ３１５、システム・メモリ３２０、ならびにＳＰＥの共有ローカル・ストアを含むとよい。
【００２３】
示されているシステム・メモリ３２０の一部分は、オペレーティング・システム（ＯＳ（ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）３２５）により占有されている。システム・メモリ３２０は、ＰＵ３１０ならびに複数のＳＰＥにより処理されるべきデータを表すマップ・メモリ３４０も含む。一実施形態では、ＰＵ上で実行しているプロセスは、大きなデータの処理を伴うタスクのリクエストを受け取る。ＰＵはまず、タスクを実行する最適な方法、ならびに共通のシステム・メモリ３２０におけるデータの最適な配置を判断する。次にＰＵは、処理されるべきデータを、マップ・メモリ３３５からシステム・メモリ３２０へ転送し始めるとよい。一実施形態では、ＰＵはＳＰＥのレジスタのサイズのデータ・ブロックに、システム・メモリ３２０内のデータを整える。一実施形態では、ＳＰＥは１２８のレジスタを有し、各レジスタの長さは１２８ビットであってもよい。
【００２４】
続いて、ＰＵは利用可能なＳＰＥを探索し、データの複数ブロックを、データの処理のために任意の利用可能なＳＰＥに割り当てる。ＳＰＥは、共通のシステム・メモリにアクセスし（例えばＤＭＡコマンドによって）、データをＳＰＥのローカル・ストアに転送し、割り当てられている動作を実行することが出来る。データの処理後、ＳＰＥはデータを共通のシステム・メモリ３２０に戻すとよい（例えば再びＤＭＡを使用して）。この手順は、ＳＰＥが利用可能になるにつれて、すべてのデータ・ブロックが処理されるまで繰り返されるとよい。
【００２５】
図４は、別々のプロセッサ上で実行する複数のテスト・ケース実行器に、「ｎ」テスト・ケースを提供するテスト・ケース・マネジャを示す図である。テスト・ケース・マネジャ４００は、テスト・ケース０Ａ  ４１０、テスト・ケース１Ａ  ４１５、テスト・ケース２Ａ  ４２０、およびテスト・ケース３Ａ  ４２５をテスト・ケース実行器４３０に提供し、テスト・ケース０Ｂ  ４１１、テスト・ケース１Ｂ  ４１６、テスト・ケース２Ｂ  ４２１、およびテスト・ケース３Ｂ  ４２６をテスト・ケース実行器４４０に提供する。次に、テスト・ケース実行器４３０が、テスト・ケースをプロセッサＡ  ４５０に送り、テスト・ケース実行器４４０が、テスト・ケースをプロセッサＢ  ４６０に送る。実行中、プロセッサＡ  ４５０およびプロセッサＢ  ４６０は、バス４７０を介して、互いに通信してもよく、またはメイン・メモリ４８０から情報を読み出してもよい。一実施形態では、テスト・ケース・マネジャ４００は、テスト・ケース実行器４３０に単一のテスト・ケースを提供し、別のテスト・ケースをテスト・ケース実行器４４０に提供する。
【００２６】
各テスト・ケースの実行後、テスト・ケース実行器４３０およびテスト・ケース実行器４４０は、レジスタ・エラー検出点検（ｒｅｇｉｓｔｅｒ  ｅｒｒｏｒ  ｄｅｔｅｃｔｉｏｎ  ｃｈｅｃｋ）を実行する。例えば、プロセッサＡ  ４５０がテスト・ケース０Ａを実行し、プロセッサＢ  ４６０がテスト・ケース０Ｂ  ４１１を実行した後、テスト・ケース実行器４３０およびテスト・ケース実行器４４０は、どちらも、それらのそれぞれのプロセッサからのハードウェア結果（ｈａｒｄｗａｒｅ  ｒｅｓｕｌｔ）に基づき、ハードウェア・レジスタ・エラー検出点検値を計算し、計算した値をシミュレーション・レジスタ・エラー検出点検値と照合する。
【００２７】
プロセッサＡ  ４５０が、その対応するテスト・ケースすべてを少なくとも１回実行し終え、プロセッサＢ  ４６０がその対応するテスト・ケースすべてを実行し終えると、テスト・ケース実行器４３０および４４０はそれぞれ、メモリ・エラー検出点検のシミュレーション値に対する比較を実行し、比較値が一致しなければエラー・フラグを設定する。次に、テスト・ケース・マネジャ４００は、プロセッサＡ  ４５０とプロセッサＢ  ４６０との間で、テスト・ケースをさらなる実行のために交換する（より詳しくは図５および対応する文章を参照）。
【００２８】
図５は、プロセッサをさらにテストするために、同種のプロセッサ間でテスト・ケースを交換するテスト・ケース・マネジャを示す図である。図５は、テスト・ケース・マネジャ４００が、テスト・ケース０Ｂ  ４１１〜３Ｂ  ４２６をテスト・ケース実行器４３０にロードし、テスト・ケース０Ａ  ４１０〜３Ａ  ４２５をテスト・ケース実行器４４０にロードしていることを除いては、図４に似ている。結果として、プロセッサＡ  ４５０はテスト・ケース０Ｂ  ４１１〜３Ｂ  ４２６を実行し、プロセッサＢはテスト・ケース０Ａ  ４１０〜３Ａ  ４２５を実行する。これは図４で示した例の反対である。
【００２９】
一実施形態では、各プロセッサが最近のキャッシュ・ライン・データにアクセスできるように、キャッシュ論理が、プロセッサＢ  ４６０専用のキャッシュ・ラインを、プロセッサＡ  ４５０専用のキャッシュ・ラインにロードする（逆もまた同様）（より詳しくは、図７〜８および関連の文章を参照）。
【００３０】
図６は、プロセッサ間でテスト・ケースを交換するラウンド・ロビン法を示す表である。表６００には、行６１０〜６３０があり、それぞれテスト・ケース循環ラウンド（ｔｅｓｔ  ｃａｓｅ  ｒｏｔａｔｉｏｎ  ｒｏｕｎｄ）に対応する。表６００には列６４０〜６６０もあり、それぞれ特定のプロセッサに対応する。
【００３１】
図に示すように、ラウンド１（行６１０）の間、プロセッサＡはテスト・ケース１を実行し、プロセッサＢはテスト・ケース２を実行し、プロセッサＣはテスト・ケース３を実行する。各プロセッサがそれらの対応するテスト・ケースを少なくとも１回実行した後、テスト・ケース・マネジャはプロセッサ間でテスト・ケースを循環させる（交換する）。したがって、ラウンド２（行６２０）の間、プロセッサＡはテスト・ケース２を実行し、プロセッサＢはテスト・ケース３を実行し、プロセッサＣはテスト・ケース１を実行する。
【００３２】
さらに、各プロセッサがそれらの対応するテスト・ケースを少なくとも１回実行した後、テスト・ケース・マネジャはプロセッサ間でテスト・ケースを循環させる（交換する）。次に、ラウンド３（行６３０）の間、プロセッサＡはテスト・ケース３を実行し、プロセッサＢはテスト・ケース１を実行し、プロセッサＣはテスト・ケース２を実行する。当業者には当然のことながら、ラウンド・ロビン法以外の手法が、プロセッサ間でテスト・ケースを交換するために使用されてもよい。
【００３３】
図７は、テスト・ケースの実行中に、キャッシュ・ライン・データを対応するキャッシュ・ラインにロードするプロセッサを示す図である。プロセッサＡ  ７３０およびプロセッサＢ  ７３５は、同種のプロセッサである。図７は、テスト・ケースＡ  ７２０がプロセッサＡ  ７３０にロードされ、テスト・ケースＢ  ７２５がプロセッサＢ  ７３５にロードされることを示している。
【００３４】
プロセッサＡ  ７３０がテスト・ケースＡ  ７２０を実行しているときに、プロセッサＡ  ７３０は、バス７６０を介してメイン・メモリ７７０からデータをフェッチし、そのデータをプロセッサＡのキャッシュ７４０（ライン７４２〜７４６）へロードする。同じく、プロセッサＢ  ７３５がテスト・ケースＢ  ７２５を実行しているときに、プロセッサＢ  ７３５は、バス７６０を介してメイン・メモリ７７０からデータをフェッチし、そのデータをプロセッサＢのキャッシュ７５０（ライン７５２〜７５６）へロードする。
【００３５】
各プロセッサは、テスト・ケースの実行中に、それらの対応するキャッシュ・ラインを変更するとよい。結果として、テスト・ケースがプロセッサ間で交換されて実行が開始すると、プロセッサが最近のキャッシュ・データにアクセスできるよう、キャッシュ論理はキャッシュ・ライン・データを１つのプロセッサの専用キャッシュから別のプロセッサの専用キャッシュへ移動させる（より詳しくは、図８および関連の文章を参照）。
【００３６】
図８は、プロセッサ間でテスト・ケースを交換した結果として、専用プロセッサ・キャッシュ間でキャッシュ・データを移動させるキャッシュ論理を示す図である。プロセッサＡ  ７３０は、前にテスト・ケースＡ  ７２５を実行しており、プロセッサＢは、前にテスト・ケースＢ  ７２０を実行している（図７参照）。その際に、各プロセッサはメイン・メモリ７７０からデータを読み出し、それぞれのキャッシュ７４０および７５０へそのデータをロードした。テスト・ケースの実行中、プロセッサＡ  ７３０およびＢ７３５はそれぞれ、プロセッサＡのキャッシュ７４０およびプロセッサＢのキャッシュ７５０に含まれるデータを変更している。
【００３７】
図８は、その後に、テスト・ケースＡ  ７２５およびテスト・ケースＢ７２０がプロセッサＡ  ７３０とＢ  ７３５との間で交換された状態を示す。プロセッサＡ  ７３０およびＢ  ７３５がそれらの新たなテスト・ケースを実行し始めると、キャッシュ論理は、プロセッサＡ  ７３０がもともとキャッシュ・ライン７５６にあったデータを必要としており、プロセッサＢ  ７３５がもともとキャッシュ・ライン７４４にあったデータを必要としていると検出する。次に、キャッシュ論理は、テスト・ケースＢ  ７２０により必要とされるデータを、プロセッサＢのキャッシュ７５０からプロセッサＡのキャッシュ７４０へと移動させる。さらに、キャッシュ論理は、テスト・ケースＡ  ７２５により必要とされるデータを、プロセッサＡのキャッシュ７４０からプロセッサＢのキャッシュ７５０へと移動させる。結果として、プロセッサＡ  ７３０は、テスト・ケースＢ  ７２０を十分に実行でき、プロセッサＢ  ７３５は、テスト・ケースＡ  ７２５を十分に実行できる。
【００３８】
一実施形態では、上記の、専用キャッシュ・ライン間で移動されたデータと同様に、アドレス・トランスレーション・ライン（ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｉｏｎ  ｌｉｎｅｓ）が、専用トランスレーション・ルックアサイド・バッファ（ＴＬＢ：ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）間で移動される。この実施形態では、ＴＬＢの論理が、交換後にアドレス変換ラインを無効化およびフラッシュするときにテストされる。
【００３９】
図９は、プロセッサ・システムに含まれるプロセッサ間でテスト・ケースを交換する際にとられるステップを示す流れ図である。処理は９００で開始し、開始すると、処理はシステムに含まれる各プロセッサに対してテスト・ケースを選択する。例えば、システムは４つのプロセッサを含んでもよく、その場合処理は４つの異なるテスト・ケースを選択する。
【００４０】
ステップ９２０で、処理は、選択したテスト・ケースをそれらの対応するプロセッサを利用して同時に実行する。上述の例を使用すれば、処理は第１テスト・ケースを第１プロセッサ上で、第２テスト・ケースを第２プロセッサ上で実行するなどである。テスト・ケースを同じプロセッサ上で実行するかどうかについて判断が下される（決定９３０）。例えば、処理は特定のテスト・ケースを特定のプロセッサ上で１０反復連続して実行するよう構成されていてもよい。
【００４１】
処理が、同じプロセッサでテスト・ケースを実行すべきであれば、処理は「はい」の分岐９３２へと分かれ、これはループ・バックしてテスト・ケースを再実行する。ループは、処理がテスト・ケースを同じプロセッサ上で実行すべきでなくなるまで継続し、実行すべきでなくなったところで、決定９３０は「いいえ」の分岐９３８へと分かれる。
【００４２】
プロセッサ間でテスト・ケースを交換するかどうかについて判断が下される（決定９４０）。例えば、処理は、第１テスト・ケースを第２プロセッサ上にロードし、第２テスト・ケースを第３プロセッサ上にロードするなど、ラウンド・ロビン法でテスト・ケースを交換することを望んでもよい。処理がテスト・ケースを交換するべきであれば、決定９４０は、「はい」の分岐９４２に分かれる。すると、処理はテスト・ケースを交換して（ステップ９５０）テスト・ケースを異なるプロセッサ上で実行する。一方、処理がテスト・ケースを交換すべきでなければ、決定９４０は「いいえ」の分岐９４８へと別れ、そうすると、処理は９６０で終了する。
【００４３】
本発明の好適な実装の１つは、クライアント・アプリケーション、すなわち、例えばコンピュータのランダム・アクセス・メモリに常駐していてもよいコード・モジュール内の命令セット（プログラム・コード）またはその他の機能的記述情報（ｆｕｎｃｔｉｏｎａｌ  ｄｅｓｃｒｉｐｔｉｖｅ  ｍａｔｅｒｉａｌ）である。コンピュータに要求されるまで、命令セットは、例えばハード・ディスク・ドライブなどの別のコンピュータ・メモリ、または光ディスク（最終的にＣＤ  ＲＯＭにおいて使用される）もしくはフレキシブル・ディスクなどの取り外し可能なもの（最終的にフレキシブル・ディスク・ドライブにおいて使用される）に格納されているとよい。したがって、本発明は、コンピュータ用のコンピュータ・プログラム製品として実装されてもよい。さらに、記載されている種々の方法は、便宜上、ソフトウェアによって選択的に有効化または再設定される汎用コンピュータに実装されているが、このような方法は、ハードウェアにおいて、ファームウェアにおいて、または必要な方法ステップを実行するべく構築された、より特化した装置において実施することができるということも、当業者には当然のことである。機能的記述情報は、機能性を機械に与える情報である。機能的記述情報は、次に限定されるものではないが、コンピュータ・プログラム、命令、ルール、ファクト（ｆａｃｔ）、計算可能関数の定義、オブジェクト、データ構造を含む。
【００４４】
本発明の特定の実施形態を示し説明したが、当業者には当然のことながら、本願明細書の教示に基づき、本発明およびそのより広範な態様から逸脱することなく、改変することおよび変更を加えることができる。したがって、添付の特許請求の範囲は、そのような改変および変更すべてを、本発明の真の意図および範囲内にあるものとしてその範囲内に含むものとする。さらに、当然のことながら、本発明は添付の特許請求の範囲のみによって定義される。当業者には当然のことながら、導入される、請求項の構成要素の特定数が意図される場合、そのような意図は請求項内で明確に述べられ、そのように述べられていなければ、そのような限定は存在しない。理解するための支援として、非限定的な例を挙げると、以下の添付の特許請求の範囲は、請求項の構成要素を導入するために、前置き表現「少なくとも１つの」および「１つ以上の」の利用を含む。しかし、そのような表現の使用は、不定冠詞「ａ」または「ａｎ」による請求項の構成要素の導入が、当該の導入された請求項の構成要素を含む特定の請求項を、当該構成要素を１つのみ含む発明に制限することを意味すると解釈されるべきではない。これは、同じ請求項が前置き表現「１つ以上の」または「少なくとも１つの」と、「ａ」または「ａｎ」などの不定冠詞とを含む場合であっても同じである。請求項における定冠詞の使用についても同じことが言える。
【図１】
2010020766.tif 000003
【図２】
2010020766.tif 000004
【図３】
2010020766.tif 000005
【図４】
2010020766.tif 000006
【図５】
2010020766.tif 000007
【図６】
2010020766.tif 000008
【図７】
2010020766.tif 000009
【図８】
2010020766.tif 000010
【図９】
2010020766.tif 000011