特定のプロセッサ構成、制御部、特定の種類の検証/テスト/デバッグのフック、構成要素の位置、セキュリティプロトコル、抽出方法、情報のフォーマット及び配置、物理的なアクセスポート設定及び位置、電源設定等の特定の種類が記載されるが、これらは、本発明の完全な理解を提供するためのものである。しかしながら、これらの特定の詳細事項を採用しなくとも、本発明を実行可能であることは、当業者にとって明らかである。また、特定の又は代替のプロセッサアーキテクチャ、機能及びアルゴリズムを記載するための特定の論理回路/コード、特定の検証制御実装詳細、その他の周知の設計検証フック、周知のセキュリティ及びアクセス方法、及びその他の特定の動作の詳細等の、よく知られている要素又は方法については、本発明を不明瞭にすることを防ぐため、記載を省略する。
本明細書に記載する方法及び装置は、コンピュータシステムのテスト基盤(infrastructure)を提供する。より詳細には、プロセッサ100のようなプロセッサを含む典型的なコンピュータシステム内の検証に重点を置いて説明する。しかしながら、本明細書に記載される装置及び方法は、これに限定されず、これに替わるコンピュータアーキテクチャ、及び、テスト、デバッグ、検証等が行われる電子デバイスに関連して装置及び方法が実装される。例えば、本明細書に記載されるテスト基盤は、通信デバイス又はその他の集積回路環境に実装されてもよい。あるいは、テスト基盤は、PDA及び携帯電話のような小型デバイスに組み込まれて使用されてもよい。
[プロセッサアーキテクチャの実施形態]
図1には、複数のコアを含むプロセッサの一実施形態が示されている。プロセッサ100は、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサのようなあらゆるプロセッサ、又は、コードを実行するその他のデバイスを含む。一実施形態において、プロセッサ100は、少なくとも2つのコア、コア101及びコア102を含み、これらコアは、非対称コア又は対称コア(図示の例)を含む。しかしながら、プロセッサ100は、対称又は非対称である処理要素を幾つ含んでもよい。
一実施形態において、処理要素とは、スレッド単位、スレッドスロット、処理単位、コンテキスト、論理プロセッサ、ハードウェアスレッド、コア、及び/若しくは実行状態又はアーキテクチャ状態のようなプロセッサの状態を保持可能な他の要素のことを指す。すなわち、ある実施形態では、処理要素とは、ソフトウェアスレッドのようなコード、OS、アプリケーション又はその他のコードに独立して関連付けることが可能なあらゆるハードウェア指す。物理的プロセッサとは、典型的には、コア又はハードウェアスレッド等の他の処理要素を1以上含む集積回路(IC)のことを指す。
コアとは、多くの場合、独立して保持されるアーキテクチャの状態がそれぞれ、少なくとも幾つかの専用実行リソースと関連付けられる独立アーキテクチャ状態を保持可能なICに位置するロジックを指す。コアに対して、ハードウェアスレッドとは、典型的には、独立して保持されている複数のアーキテクチャ状態が実行リソースへのアクセスを共有する独立アーキテクチャ状態を保持可能なICに位置するロジックを指す。このように、あるリソースは共有され、他のリソースは1つのアーキテクチャ状態に占有されている場合には、ハードウェアスレッド及びコアという命名の境界線が重複することとなる。しかしながら、やはりコアとハードウェアとは、OSから見れば個別の論理プロセッサであり、OSは、各論理プロセッサに対して独立してオペレーションをスケジュールすることができる。
図1に示すように、プロセッサ100は、2つのコア101及び102を含む。ここで、コア101及び102は、対称なコアである、すなわち、同じ構成、機能単位及び/又はロジックを有するコアである。別の実施形態では、コア101は、アウト・オブ・オーダー・プロセッサコアを含み、コア102は、イン・オーダー・プロセッサコアを含む。しかしながら、コア101及び102は、ネイティブコア、ソフトウェア管理コア、ネイティブ命令セットアーキテクチャ(ISA)を実行するコア、変換された命令セットアーキテクチャ(ISA)を実行するコア、共同設計されたコア、又は、その他のコアといったあらゆる種類のコアから別々に選択されてもよい。コア101内に図示されている機能単位については、以下に詳細に説明されるが、コア102内の機能単位も同様な態様で動作する。
図に示すように、コア101は、2つのハードウェアスレッド101a及び101bを含み、これらは、ハードウェアスレッドスロット101a及び101bとも称される。したがって、OSのようなソフトウェア実体は、一実施形態においては、プロセッサ100を4つの別個のプロセッサとして見なすこともでき、すなわち、4つのソフトウェアスレッドを並列に実行可能な4つのプロセッサ又は処理要素として見なすことができる。第1のスレッドは、複数のアーキテクチャ状態レジスタ101aと関連付けられており、第2のスレッドは、複数のアーキテクチャ状態レジスタ101bと関連付けられており、第3のスレッドは、複数のアーキテクチャ状態レジスタ102aと関連付けられており、第4のスレッドは、複数のアーキテクチャ状態レジスタ102bと関連付けられている。図に示すように、複数のアーキテクチャ状態レジスタ101aは、複数のアーキテクチャ状態101bに複製されており、個々のアーキテクチャ状態/コンテキストは、論理プロセッサ101a及び論理プロセッサ101bに格納可能である。コア101では、命令ポインタのようなその他の小さなリソース及びリネーム割り当てロジック130におけるリネームロジックも、スレッド101a及び101bについて複製されていてもよい。リオーダ/リタイアメントユニット135におけるリオーダバッファ、ILTB120、読み込み/格納バッファのようなリソース及びキューは、パーティショニングを通じて共有されてもよい。汎用内部レジスタ、ページ−テーブルベースレジスタ、低階層データキャ主及びデータ−TLB115、実行ユニット140、及びアウト・オブ・オーダーユニット135の部分は、完全に共有されてもよい。
プロセッサ100は、完全に共有される、パーティショニングを通じて共有される、又は、処理要素に専用となるその他のリソースをしばしば含む。図1には、単純に例示することだけを目的としたプロセッサの論理単位/リソースを有するプロセッサの一実施形態が示されている。プロセッサは、これら機能単位の何れを含む又は省略してもよく、図示されていないその他の周知の機能単位、ロジック又はファームウェアを含んでもよい。図に示されるように、コア101は、単純化して表示されているアウト・オブ・オーダー(OOO)プロセッサコアを含む。OOOコアは、実行される/選択される分岐先を予測する分岐先バッファ120(Branch Target Buffer:BTB)及び命令についてのアドレス変換エントリを記憶する命令変換バッファ120(I‐TLB)を含む。
コア101は更に、フェッチされた要素をデコードするべく、フェッチユニット120と連結されたデコードモジュール125を含む。一実施形態において、フェッチロジックは、それぞれスロット101a、101bと関連付けられたシーケンサを含む。通常、コア101は、プロセッサ100で実行可能な命令を規定/特定する第1命令セットアーキテクチャ(ISA)と関連付けられている。ISAによって認識される機械コード命令は、一般的に、実行すべき命令又はオペレーションを参照する/特定するオペコード(opcode)と呼ばれる命令の一部を含む。デコードロジック125は、オペコードから命令を認識し、第1ISAによって規定されるように処理を行うために、デコードされた命令をパイプラインに渡す。例えば、以下で詳細に説明するように、一実施形態において、デコーダ125は、条件コミット命令及び予測チェックポイント命令のような新しい特定の命令を認識するのに使用される又は設計されたロジックを含む。その結果、デコーダ125の認識により、アーキテクチャ又はコア101は、特定の予め定められたアクションを起こし、適切な命令と関連付けられたタスクを実行する。
一例において、アロケータ及びリネーマブロック130は、命令処理結果を格納するレジスタファイルのようなリソースを保存するアロケータ(割り当てルーチン)を含む。しかしながら、スレッド101a及び101bは、アウト・オブ・オーダーで実行可能であり、アロケータ及びリネーマブロック130は、命令の結果を追跡するためにリオーダ(並び替え)バッファのような、その他のリソースも備える。ユニット130は、プログラム/命令参照レジスタを、プロセッサ100の他の内部レジスタにリネームするレジスタリネーマーを含んでもよい。リオーダ/リタイアメントユニット135は、アウト・オブ・オーダー実行及びアウト・オブ・オーダーで実行される順番が最後の方の命令のリタイアメントをサポートするために、上述のようなリオーダバッファ、読み込み(load)バッファ、及び格納(store)バッファのような要素を含んでもよい。
ある実施形態では、スケジューラ及び実行ユニットブロック140は、実行ユニットに対して命令/オペレーションをスケジューリングするスケジューラユニットを含んでもよい。例えば、浮動小数点命令は、利用可能な浮動小数点実行ユニットを持つ実行ユニットの一部にスケジュールされる。また、情報命令処理結果を記憶するために、実行ユニットに関連付けられたレジスタファイルが含まれている。実行ユニットの例としては、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、記憶実行ユニット、及びその他の既知の実行ユニットが挙げられる。
下位層データキャッシュ及びデータ変換バッファ(D−TLB)150は、実行ユニット140に接続されている。データキャッシュは、メモリコヒーレンシ状態で保持されているデータオペランドのような最近利用/処理されたものを、要素に記憶する。D−TLBは、最近の仮想/線形アドレスから物理アドレスへの変換を記憶する。具体的な一例として、プロセッサは、物理メモリを複数の仮想ページに分割するためのページテーブル構造を持つとしてよい。
ここで、コア101及びコア102は、最近フェッチされた要素をキャッシュする上位層に位置する又はより離れたところに位置するキャッシュ110へのアクセスを共有する。ここで、上位層又はより離れた位置とは、キャッシュレベルがより高い又は実行ユニットからより離れていることを指す。一実施形態では、上位層キャッシュ110は、プロセッサ100のメモリ階層の最後のキャッシュであるラストレベルデータキャッシュであり、例えば、第2レベル(2次)データキャッシュ、又は第3レベル(3次)データキャッシュである。上位層キャッシュ110はこれに限定されず、命令キャッシュに関連付けられてもよいし、命令キャッシュを含んでもよい。命令キャッシュの一種であるトレースキャッシュを、替わりに、デコーダ125の後に連結して、最近デコードされたトレースを記憶してもよい。
図示されている構成では、プロセッサ100は、システムメモリ175、チップセット、ノースブリッジ又はその他の集積回路のような、プロセッサ100の外部のデバイスと通信を行うバスインターフェースモジュール105を含む。メモリ175は、プロセッサ100に専用のメモリであってもよいし、システム内のその他のデバイスと共有されるメモリであってもよい。メモリ175の典型的な例には、ダイナミック・ランダム・アクセス・メモリ(DRAM)、スタティックRAM(SRAM)、不揮発性メモリ(NVメモリ)、及びその他の周知の記憶デバイスが含まれる。
図1は簡略化して示されており、異なる複数のモジュール、ユニット及び/又はロジックの表現を含むプロセッサの例の論理的表現が示されている。しかしながら、本明細書に説明される方法及び装置を利用するプロセッサは、図示されているユニットを必ずしも含む必要はない。プロセッサは、図示されているユニットのうちの一部又は全てを省略してもよい。加えて、図1には、コアが2つのみ示されているが、プロセッサは、いかなる数のコアを含んでもよく、同じ種類の複数のコアを含んでもよいし、種類の異なる3つ以上のコアを含んでもよい。
図1には、外部のメモリ制御装置(制御ハブ170)とインターフェースを使用してポイント・ツー・ポイントで連結されているプロセッサの実施形態が示されている。しかしながら、現在のプロセッサの多くは、オンプロセッサ・メモリインターフェースモジュールを含むようになっており、複数のコアを相互接続するような環状構造(リング)のような様々な相互接続アーキテクチャ、及び、共有キャッシュ及びその他のインターフェースを有するオンチップモジュールを含むようになっている。
このような相互接続アーキテクチャの一実施形態が、図2に示されている。図に示すように、プロセッサ200は、分配されたキャッシュ、環状相互接続、コア、キャッシュ及びメモリ制御構成要素を含む。しかしながら、図示の構成は単なる例に過ぎず、説明される方法を実装する及び装置に実装されるプロセッサは、あらゆる処理要素、あらゆる種類又は階層のキャッシュ及び/又はメモリ、外部デバイスと通信を行うフロントサイドバス又はその他のインターフェースを含んでもよい。
一実施形態において、キャッシングエージェント221−224はそれぞれ、分配され関連付けられているキャッシュを管理する。キャッシングエージェント221−224は、論理的に共有されているキャッシュのスライスを管理してもよいし、同じメモリ階層の個別のプライベートキャッシュを管理してもよい。一例として、構成要素221のようなキャッシュコンポーネントのそれぞれは、配列されたコア、すなわち、分配されたスライスを管理する目的でキャッシュエージェントが関連付けられたコアに対するキャッシュのスライスを管理する。図示されるように、キャッシュエージェント221−224は、キャッシュ・スライス・インターフェース・ロジック(CSIL)と称されるが、キャッシュコンポーネント、エージェント、又は、その他のロジック、ユニット、又は、キャッシュ又はキャッシュのスライスと結合するモジュールと称される場合もある。キャッシュは、いかなる階層のキャッシュであってもよいが、この実施形態例では、コア201−204によって共有されるラストレベルキャッシュ(LLC)に注目して説明する。
環状相互接続250のトラフィック及びキャッシュスライスとの結合を扱うキャッシュエージェントのように、コアエージェント/コンポーネント211−214はそれぞれ、トラフィック及びコア201−204とのインターフェースを取り扱う。加えて、図示されている環状構造250は、メモリ制御部(IMC)231及びグラフィックスプロセッサ(図示せず)のようなその他のモジュールと結合するメモリ周辺ハブ(IMPH)230及びグラフィックスハブ(GFX)240を含む。しかしながら、環状構造250は、上記のモジュールの何れを含み又は省略してもよく、その他の図示していない周知のプロセッサモジュールを含んでもよい。加えて、ポイント・ツー・ポイント接続又はマルチドロップ接続のような周知の相互接続を介して、同様なモジュールを接続してもよい。
[テスト基盤の実施形態]
一実施形態において、図1及び図2に示したようなプロセッサ又はその他の周知のプロセッシングデバイスを含むコンピュータシステムは、コンピュータシステムにおける様々な側面を、効率的に(コスト及び複雑さの両方において)テスト、検証及びデバッグすることを支援するテスト基盤を含む。この効率的な環境を提供するために、例えば、図3に示す階層構造のような、複数の層(例えば、物理的、通信及びソフトウェアの階層)が存在する。
例えば、物理層305は、テストフック(テスト、検証及び/又はデバッグの機能を提供するシステムに設けられたハードウェア又はファームウェア)を含み、テストフックは、コンピュータシステムの複数のデバイス(プロセッサ、相互接続、制御ハブ等)の至る所に含まれていてもよい。一実施形態において、テストフックは、設計により、マイクロコントローラのようなその他のハードウェア/ファームウェアの指示で、又は、コンピュータプラットフォーム内に一体化されているユーザー/ベンダーのデバッグプログラム又はコードのようなソフトウェアの指示で、デバッグ/検証情報を収集する。フックの具体的な例としては、デバイスにおけるアーキテクチャ的及びマイクロアーキテクチャのテスト/追跡測定機能、電気的検証ツール、コンピュータシステム内/オンデバイスロジック分析器、接続プロトコル/トレース測定機能、プラットフォームレベルテスト機能、電源テスト機能(これについては、以下に記載する電源検証の実施形態の章で詳しく説明する)、電源オン/ブート追跡測定機能、検証回路、大量生産テスト機能、及びその他のよく知られたハードウェアベースの測定及びテスト機能が含まれる。
指定されたテストフックを提供することに加えて、一実施形態では、テストフックとテスト/デバッグソフトウェアとの間の通信を提供するのに、通信層310が採用される。通信層310は、単純に、テストフックへ直接アクセス(テストシナリオを規定する又はテスト結果を取得するための)する能力をソフトウェアに提供するだけのものであってもよい。しかしながら、上記したように、デバイスの設計者は、シリコンテスト機能を、ベンダー又はユーザーからのアクセスに対して難読化させたいと考える場合がある。その場合には、ベンダー又はユーザーのソフトウェアが通信層310とやり取りをするように構成し、通信層310がハードウェアテスト機能の難読化(抽象化)された概要をソフトウェアに提供するようにする。そして、通信層310は、顧客から見た場合に難読化されているような態様で、物理層305内のハードウェアとやり取りをする。一実施形態において、検証制御ユニット(VCU)とも称されるマイクロコントローラは、様々なテストフックへのアクセスを制御する。ここで、ベンダーソフトウェアは、様々なブレークポイント、マイクロブレークポイント・トリガイベントをプログラムする、格納されたトレースを抽出する、検証情報を提供する、及び、異なるレベルのアクセスを提供する等の様々な検証タスクを調整するようVCUに要求することができる。
最後の例に示されるように、テスト基盤に関して、難読化する程度及びセキュリティのレベルは様々に異なるものを提供してもよい。ここで、シリコン設計者は、含まれているテスト機能の全てに自由にアクセスできるようにし、様々なベンダー、顧客及びユーザーに対しては、アクセスレベルを下げることを望む場合がある。このような場合を考慮し、第1段階は、物理層305におけるフックをぼやかすことができる抽象化層305を提供することを含む。そして、一実施形態では、第2段階は、アクセスの異なる複数のレベルの間の境界線を引くことができる安全なアクセス方法を提供することを含む。
また、通信層310は、検証情報のソフトウェア層315への報告を提供する。例えば、オンダイ・ロジック分析器は、プロセッサからのトレース情報を収集する。通信層310は、キャッシュ又はシステムメモリのような格納構造に、ソフトウェア層315がデータにアクセス、データを認識及び操作可能となるような規定された形式でトレース情報を提供する。そして、アクセス層とも称されるソフトウェア層315は、通信層310にアクセスし、テストデータ内容を処理するプログラム/ツールを提供する。上記の例に戻り、トレース情報が、格納構造に配置されると、検証及びデバッグプログラムは、トレース情報を解釈する(検証及びデバッグ)ために処理を行ってもよい。
以上の記載では、物理層305からのデータへの論理的な又は抽象化されたアクセスについて主に説明がなされた。物理層305へどのようにアクセスするかについては、以下で説明する。一例では、このようなアクセスは、物理的アクセスを使用して行われる。ここで、双方向通信(物理的フックへの難読化されたアクセスのためのVCUへの要求のような、抽出されたデバッグ情報の上方向の通信、及び、デバッグ要求の下方向の通信)をサポートするべく、専用又はユニバーサルデバッグ/検証ポートが提供される。このポートは、コンピュータシステム内(プロセッサパッケージ、チップセット、マザーボード内、又は、ユニーバーサル・シリアル・バスインターフェースのような既存のI/Oインターフェースを介して)のいかなる場所に位置する又は複製されていてもよい。
別の実施形態では、テスト基盤は、リモートアクセスも提供する。例えば、ベンダーが、コンピュータシステム内の一プロセッサを検証しようとしているが、現在のコンピュータプラットフォームの複雑性に起因する問題を有している場合を仮定する。そして、ベンダーには、高階層の難読化(抽象化)されたプロセッサデバッグツールへのアクセスのみが提供されているとする。プロセッサの製造側が、デバッグプロセスを助けるために検証を行うエンジニアを物理的に派遣する替わりに、テスト基盤が、検証及びデバッグのためのリモートアクセスを許可してもよい。さらに、離れた場所に存在する製造者は、シリコンテスト機能をベンダーから秘密に維持しながら、セキュリティプロトコルにより、ハードウェア基盤の大部分にアクセス可能として、問題解決を図る及びデバッグを行ってもよい。リモートでデバッグを行う構成に加えて、図3の層は、ローカルで又はリモートで更新することができ、ファームウェア又はVCU内のコードを更新するパッチを提供することにより、将来行われる検証に柔軟に及び適切に対応することができる。
図3には、テストアーキテクチャを、3つの主要なカテゴリ(物理、通信及びソフトウェア)に分割した、一般的な階層構造が示されている。しかしながら、テストアーキテクチャの階層構造(スタック)は、あらゆる態様で構成されてもよく、同様なテストインターフェースを提供するその他の層を含んでもよい。例えば、一実施形態では、検証アーキテクチャの階層構造には、目的の層(Dfxテストの下の物理的ユニット)、トランスポート層(テストを行うべく目的のDFxユニットで実行される高階層の転送メカニズムにとらわれないスタックを採用する層)、抽象化層(アプリケーションと下位層のDFxインターフェースとの間の抽象化された通信を提供する層)、アプリケーション層(DFxサービスと結合するために、抽象化層と通信を行うアプリケーション、サービス、ツール及びその他のソフトウェアを含む層)、及び、プレゼンテーション層(基本的なデータ、プロトコル及び情報を関連付け、視覚化、及び/又は表示する層)が含まれる。
[検証、テスト及びデバッグのフックの実施形態]
一実施形態において、検証、テスト及びデバッグフックは、プロセッサ及び/又はコンピュータシステム/プラットフォームのシリコンに一体化されており、効率的なテスト、検証及び/又はデバッグをサポートする。最終製品に一体化されている検証フックは、しばしば、デバッグ、検証及び/又はテストのための設計(以下、DFxと称する)と称される。DFxは、製品のテスト、デバッグ及び/又は検証をサポートするべく、その製品に含まれている周知のあらゆるフックを含む(自己検証ツール)。以下の説明では、このようなフックの数多くの例が記載されるが、この例のリストは完全なものではない。また、以下に記載するDFxの機能の何れか又は全てを、周知の一体化されたテスト/デバッグ機能と組み合わせてもよいし、省略してもよい。加えて、プロセッサに関して、DFxの説明が主になされるが、同様なフックは、マザーボード、制御ハブ、埋め込みプロセッサ、グラフィックスプロセッサ、入出力デバイス(I/Oデバイス)等のその他のシリコンデバイス含まれていてもよい。
図4には、DFx機能の実施例を説明するための、複数のプロセッサを含むコンピュータシステムの一実施形態が示されている。示されている構成は、説明を行うべく例示を目的としたものである。既知のあらゆるコンピュータシステム構成を利用してもよく、例えば、図1に示したような、従来からのレガシー構成を利用してもよい。さらに、図示を簡潔にするべく4つのプロセッサ(410a,b,c及びd)のそれぞれは、同じ構成要素を有するように描かれているが、異なる非対称な構成を有してもよい。以下では、説明を簡単にするために、プロセッサ410aの特徴について、重点的に説明する。
一実施形態において、コンピュータシステム400は、シリコンDFxへのアクセスを提供及び制御する1以上の検証制御ユニット(VCU)を備える。図示するように、構成要素(プロセッサ410a−b及び周辺制御ハブ470)それぞれは、自身のVCUを含むが、プロセッサ又はコンピュータシステムへのアクセスを制御するべく、いかなる数の又はいかなるレイアウトのVCUが設けられてもよい。VCUの実施形態及びそれに関係する機能については、以下の「検証制御部の実施形態」の章でより詳細に説明する。したがって、DFx機能の実施形態を説明する目的から、このシナリオでは、VCU412aは、プロセッサ410aのDFx機能へのアクセスを提供する。
DFx機能の第1の例として、プロセッサ410aは、一体化された(オンダイ又はオンチップとも称される)ロジック分析器(ODLA又はOCLA)413aを含む。以前のロジック分析器は、デバイスのデジタル信号を捉える又は表示するべく、多数のプローブ又は外部ポートを介して、部品に接続された個別の物理的デバイスを含んでいた。しかしながら、外部デバイスは、非常に高価である。コンピュータの複雑さが増すにつれ、製品の開発から、その製品と結合することができるロジック分析器の開発までの間の時間差/遅れが、非常に大きくなってきている。その結果、この産業分野では、製品のデバッグ、検証及び発売を、コストが掛からないようにスケジュール通りに行うことができなくなっている。
したがって、一実施形態では、プロセッサ410aは、ロジック分析器のオンダイ機能をサポートするべく、ODLA413a(ハードウェア、ファームウェア、マイクロコード又はこれらの組み合わせによって構成される)を備える。すなわち、プロセッサ410aは、デジタル信号、状態、トレース等を取得するためにODLA413aを備える。具体的な一例として、プロセッサ410aは、取得点を始動(トリガ)させるブレークポイント(又はマイクロブレークポイント)を設定するロジックを含む。ここで、制御レジスタのようなイベント記憶部には、始動させるシナリオを規定する1つのイベント又は複数のイベントの組み合わせが設定される。そのシナリオに遭遇すると(イベントそれぞれは、シナリオに規定された態様で発生する)、プロセッサにおける関係するステート、信号、トレース等が収集される。トリガ条件又はシナリオは、単純にテスト信号のアサート又はアサート停止であってもよいし、レベル2キャッシュのミスを経験した命令のみに関連付けられた閾値を超えた回数の命令リタイアメント押し出しが発生した場合といったように、マイクロアーキテクチャイベントを組み合わせた複雑なものであってもよい。
ODLA413aは、図4に示されるように、論理ブロック内に物理的にグループ化されていなくてもよい。替わりに、ODLA413aは、プロセッサ410a内の内部信号又は外部信号を取得する、プロセッサ410a全体にわたって分配されたロジックを含んでもよい。あるシナリオでは、ODLA413aは、トレース又は回路の論理レベル取得する、プロセッサ410aのアーキテクチャ又はマイクロアーキテクチャ部分と関連付けられたロジック、内部トラフィックを取得する内部相互接続と関連付けられたロジック、メモリトラフィックを取得する、インターフェース460aのようなメモリインターフェースと関連付けられたロジック、及び、インターフェース450、465、グラフィックスインターフェース(図示せず)、レガシー又はサイドバンドインターフェース(図示せず)のような入出力インターフェース、又は、プロセッサと関連付けられたその他の周知のインターフェースと関連付けれたロジックを含む。
以前の外部ロジック分析器では、結果は、外部デバイスによって取得されていた。これに対し、上記のシナリオでは、プロセッサ410aが、自身のロジック分析器を動作させる。したがって、一実施形態において、ODLA413aは、取得された情報を保持し、利用可能なコンピュータ記憶部を利用する。例えば、ODLA413aは、取得された情報を保持するトレースバッファとして、キャッシュメモリ又はメモリ420aの一部を使用する。一実施形態において、メモリ420aの一部は、ソフトウェアの使用から隔離される。取得された情報は、メモリの隔離された部分に配置される。
ここで、取得された情報は、予め定められた規定された形式で、加工されない状態で配置されてもよく、(アプリケーション層において、製造側又は顧客から提供される)適切なアクセスレベルを有する検証ソフトウェアは、データにアクセス及びデータを操作することができ、例えば、生のデータをタイミングチャート、プロトコルデコード、トレースの表現へ変換する、又は、ロジック分析器のデータのその他の周知の操作を行うことができるようにする。別の実施形態では、ODLA413aは、(そこに含まれるプログラム可能ロジック、コード又はマイクロコードを使用して)生のデータを別のフォーマットへと形式変換し、高階層のレベルのソフトウェアによる解釈のために、メモリに変換後のデータを配置する。
ある実施形態例では、ソフトウェアは、VCU412aによって提供される抽象化層のような、通信層によって提供されるアプリケーションプログラムインターフェース(API)を介して、プロセッサ410aに対して特定のブレークポイントシナリオを要求する。VCU412aは、要求を受信して、要求が必須のセキュリティレベルアクセスを有する場合には、VCU412aは、プロセッサ410aの制御レジスタに、始動シナリオを設定する。そして、通常の実行の間又は実行のテストモードの間に、制御レジスタに規定されたブレークポイントシナリオに遭遇すると、ブレークポイントが始動される。そして、取得された情報が、オペレーティングシステム(OS)からは読み取ることができない領域のメモリ420aに格納される。ソフトウェアは、インターフェースAPIを介して、情報にアクセス、及び、情報を操作及び解釈することができ、したがって、外部のロジック分析器又はオシロスコープを使用する必要がなくなると同時に、シリコンデバイスの内部及び外部通信をより詳細及び完璧に調べることができるようになると考えられる。
始動シナリオを設定することに加えて、その他の周知の検証技術を、ODLA413aと一体化及び/又は組み合わせてもよい。例えば、ODLA413a及びその他のロジックの組み合わせにより、テストケースを設定し、同様なトレース情報を取得することができる。現実には、設計者が、通常の実行の間には容易に再現されないような最悪の場合のシナリオを想定して設計することは、一般的である。その結果、特定の最悪のシナリオを引き起こす要因でプロセッサ410aを起動させて、実際の反応、及び、実際の応答と前もって行われたシミュレーションとの相関関係の両方を特定することは検証に有用であると考えられる。そこで、ODLA413aがデータを収集するシナリオを生成するべく、特定の論理状態を設定する又は特定の入力を提供するロジックを採用する。
上記のDFxの説明では、プロセッサ410aの内部状態を取得するのに、ODLA410aに注目していた。しかしながら、上記で示唆したように、一実施形態では、ODLA413a及び/又はその他のロジックは、外部インターフェース及び相互接続を検証するのに使用される。外部ロジック分析器を使用する場合のように、デバイス間の通信を観察するのに電気的トレース(配線)にピコプローブを配置する替わりに、シリコンに含まれるODLA413aは、デバイス内の実際のインターフェースにおいて同じ機能を実行することができる。
同様な相互接続フックを、オンプロセッサ・インターフェースに含めてもよい。一例として、図2に戻り、DFxフックを、環状構造250の周辺に散在させてもよく、それにより、環状構造250の電気的属性(タイミングマージン、ビットレート、エラーテスト、クロスカップリング、リンギング、アンダーシュート、オーバーシュート等)、環状構造250におけるトラフィック、環状構造250の通信プロトコル(すなわち、キャッシュコヒーレンシプロトコル)、制御インターフェース230/231におけるトラフィック/プロトコル、グラフィックスインターフェース240におけるトラフィック等を検証してもよい。
その結果、複雑なインターフェースの検証は、シリコンと一体化されたフックを含み、このフックを使用することにより、物理的、電気的特性、ロジックの状態/トレース、及び、高階層のプロトコルのような、相互接続アーキテクチャの積層体の複数の層を検証してもよい。図4には、このようなインターフェース(プロセッサ410a−dを接続するQPIインターフェース450、プロセッサ410a−dをメモリデバイス420a−dにそれぞれ接続するメモリインターフェース460a−d、及び、レガシープロセッサ410cを周辺制御ハブ470に接続するPCI−E又はその他のインターフェース)が、検証のためのフックを含む構成が描かれている。グラフィックスインターフェース又はサイドバンド相互接続のような、その他のインターフェースにおいても、同様なDFxフックを利用してもよい。しかしながら、図示されているインターフェースはプロセッサを中心とした構成であることに注意されたい。また、PCH470のようなその他のデバイスに、同様なDFxフックを含めて、ペリフェラルインターフェース(PCI−E)、ユニバーサル・シリアル・バス(USB)、シリアル・アドバンスト・テクノロジー・アタッチメント(SATA)、ダイレクト・メディア・インターフェース(DMI)及びその他の周知のコンピュータ相互接続構成のようなその他のインターフェースを検証するようにしてもよい。
具体的な例を提供するべく、図5には、階層化された相互接続積層構造(interconnect stack)を利用した双方向接続アーキテクチャの一実施形態例のブロック図が示されている。図示されている接続構造の例としては、PCIエクスプレス(PCI−E)及びクイックパスインターコネクト(QPI)が含まれる。主にQPIアーキテクチャを参照して、図示されている階層構造が説明されるが、同様に、PCI、PCI−E、グラフィックス接続、メモリ接続、周辺機器接続又はその他の周知の接続について構造を適用してもよい。図5に示される層、例えば、物理層502は、物理層502a及び物理層502bといったように異なるエージェントに実装されてもよい一般的な層の考察を含む。図に示されるように、相互接続積層構造は、5つの層に分けられ、そのうちの1つ又は複数の層は、設計の実装形態に応じて、選択的である場合もある。例えば、一実施形態において、ルーティング層504は、リンク層503の機能に埋め込まれてもよく、したがって、一実施形態では、ルーティング層は個別の層として設けられない。
ある実施形態では、物理層502は、物理的な媒体における情報の電気的転送の役割を担う。例えば、物理的なポイント・ツー・ポイントリンクを、リンク層エンティティ503a及び503bの間で利用してもよい。図示の例では、物理リンクは、双方向差分信号ペア551及び552を有する差分信号スキームを含む。ここで、物理層は、電気的サブブロック及び論理的サブブロックに論理的に分けることができ、物理層は、積層構造の残りの層からの情報の電気的転送からは分離され、リンク層503とは通信を行う。
一実施形態において、リンク層503は、積層構造の上部層から、物理層502を抽象化(難読化)し、信頼性の高いデータ転送及び接続されたエージェント/エンティティ間のフロー制御、及び、物理チャネル/インターフェースを複数の仮想チャネル及びメッセージクラスに仮想化といった、リンクに関係するサービスを提供する。ここで、仮想チャネルは、積層構造の上部層によって使用される複数の仮想ネットワークと見なすことができる。例えば、プロトコル層506は、プロトコルメッセージをメッセージクラスに、したがって、1以上の仮想チャネルに、マップするのに、リンク層503によって提供される抽象化に依存する場合がある。
一実施形態において、ルーティング層504は、ソースから送信先へパケットをルーティングする方法を柔軟に提供する。上記したように、非常に単純化されたトポロジーにおいては、ルーティング層504は明確にならず、リンク層503の機能に一体化されてもよい。例えば、ルーティング層504が、パケットをルートするために、<ポート,仮想ネットワーク>の組を特定するのに、リンク層503の抽象化に依存する場合がある。ここで、ルーティングテーブル情報は、パケットのルーティング情報を提供するべく保持される。
一実施形態において、トランスポート層505は、エンド・ツー・エンドの信頼性の高い送信サービスを提供する。ルーティング層504と同様に、トランスポート層505は、設計実装形態に基づいて、必要に応じて設けられる。一例として、トランスポート層505は、プロトコル層506に対する信頼性の高い送信サポートを提供するのに、ルーティング層504に依存する。一実施形態では、相互接続アーキテクチャ内において、構成要素のサブセットは、トランスポート層505を含む。その結果、この構成要素のサブセットが、トランスポート層505に関係するパケットのサブフィールドを規定し、その他の構成要素は、このサブフィールドを規定しない場合がある。
一実施形態において、プロトコル層506は、キャッシュコヒーレンス、順序付け、ピア・ツー・ピア通信、割り込み伝達等の、ノード/エージェント間の高階層の通信を実装する。すなわち、プロトコル層506は、許容されるメッセージ、要求、応答、フェーズ、コヒーレンス状態等を、ホームノード、ピアノード、キャッシングノード及び非キャッシングノードのようなノード又はエージェントに対して規定する。ホームノードメッセージ、スヌープメッセージ、応答メッセージ等のメッセージの例については以下で説明する。
層及び関連するロジックの考察は、あらゆる態様で組み合わされてもよい。例えば、プロトコルロジックは、物理層、すなわち、送信ロジック又は受信ロジックと結合されてもよい。ここで、図5から分かるように、一実施形態では、プロトコルロジックは、物理層ロジックと直接結合さることなく、その他の層のロジックを介して結合される。さらに、一実施形態において、相互接続積層構造は、キャッシュ制御ロジック又はキャッシュメモリロジックのような内部の構成要素ロジックと結合され、適切なキャッシュコヒーレンスアクションを開始する。
一実施形態において、QPIベースの相互接続は、Modified Exclusive Shared Invalid Forward(MESIF:変更・排他・共有・無効・転送)プロトコルを含み、信号及びバスのシリアル化の制限を伴うことなく、スヌーププロトコルと同様なプロトコルを提供する。スヌーピングキャッシュプロトコルのように、MESIFは、コヒーレンス(一貫性)を維持するのに、データのキャッシュされたコピーを有するノードに依存する。同期及び中央化されたブロードキャスト(一斉送信)ではなく、ポイント・ツー・ポイントリンクを使用すると、タイムワープ(time‐warp)の問題が起こる、すなわち、異なるノードから見ると、イベントが異なる順番で発生しているように見えてしまう。一例として、MESIFプロトコルは、タイムワープによって生じる可能性のあるエラーを認識することによってこの問題に対処し、プロトコル又はソフトウェアによる解決方法を提供する。
ホームノードは、多くの場合、データのキャッシュされていないコピーと関連付けられる。その結果として、ホームノードは、ホームノードと関連付けられたデータに関するトランザクションに参加する場合がある。しかしながら、ホームノードは、トランザクションと関連付けられた"クリティカルパス(critical path)"に必ずしも含まれる必要はなく、コンフリクト及びタイムワープの問題を解決するために、ホームノードはトランザクションに挿入されてもよい。一実施形態では、このスキームの並列−ブロードキャストの性質があることから、MESIFは、キャッシュ可能なデータのコピーを取得すると同時に、プロトコルのスヌーピングに関連するレイテンシを低くすることができ、ある場合には、要求−応答を1往復するだけの最小のレイテンシとすることができる。
一実施形態において、MESIFプロトコルに関する基本的なトランザクションは、全てのピアノード及びホームノードに最初の要求をブロードキャストすることを伴う。コピーが、ステートE、F又はMコヒーレーンシ状態でキャッシュされる場合には、コピーは応答に含まれる。そして、第2のメッセージが、ホームノードに送信されて、要求が満たされたことを通知する。要求されたラインがキャッシュされていない場合、又は、Sステートのコピーのみが存在する場合には、ホームノードに送信された第2の要求を使用して、前の要求を確認する。ホームノードが有する前の要求は、その時までには、メモリからフェッチされていると考えられる。何れの場合にせよ、ホームノードは、同期及びコンフリクトを解消する目的で、第2の要求に応答する(及び、最初の要求、最初の要求及び第2の要求は組み合わせられる場合もある)。ここで、ホームノードは、1以上のキャッシュを有してもよいので、最初の要求にその他のノードと同じように応答してもよい。
一実施形態において、コンフリクトは、分散させた態様で対応される。個々の要求は、任意の時間の長さ分、遅延する可能性があるため、タイムワープの問題により、コンフリクトを検出するのが難しくなっている。しかしながら、各ノードが、要求をした後にコンフリクトをモニタすれば、コンフリクトを検出できる。複数のノードが、コンフリクトを検出することが考えられるが、例として、複数のノードのうちの少なくとも1つがコンフリクトを検出するとする。この場合、一実施形態では、ノードからの応答は、コンフリクト情報を含む可能性がある。
一実施形態において、応答からのデータのコピーを受信するノードは、データを受信するとすぐに内部でそのデータを使用することができるが、そのノードが確認応答(confirmation)を受信するまでは、そのデータの利用をシステムの残りの部分に可視化することはできない、すなわち、グローバルに可視状態とすることはできない。確認応答は、要求ノードがコピーを別のノードに転送し、また自身のキャッシュからそのノードを立ち退かせる(evict)よう指示する命令を含んでもよい。そして、あるノードがキャッシュされたデータを供給することによって、別のノードからの要求に応答するときに、一実施形態では、そのノードは、ノードがデータを転送したことを確認した旨の応答をホームノードから受信するまで、受信する同じキャッシュラインについてのその他の要求を遅らせるので、全てのノードが、(書き込み可能な)キャッシュラインの転送を同じ順番で観察すると仮定することができる。
上記したように、ホームノードは、キャッシュされていないデータの格納場所となっていると同時に、プロセッサ及びキャッシュを含んでもよい。ホームノードのプロセッサが、キャッシュミスすると、ホームノードは、全てのその他の(ピア)ノードに対して要求をブロードキャストし、ホームノードは、その他の要求がホームノードに到着すると内部で要求を扱う。これは、ホームノードが明示的に、自身に(ホームノード)にメッセージを送信しない特別なケースである。加えて、ローカルにキャッシュされたデータに対する外部からの要求が到着すると、ホームノードは、適切に応答する。
開示されたメッセージプロトコルは、コヒーレンス(キャッシュ及びホーム)エージェント、非キャッシングエージェント及びその他のエージェント(メモリ制御部、プロセッサ等)の間で許可されるメッセージのセットを規定する。コヒーレンシプロトコルは、コヒーレンスな(一貫性のある)考え方を表現するアルゴリズムにおける言語及び文法として、メッセージを使用する。このアルゴリズムは、分別して要求を順番付けし、コンフリクトを解消し、キャッシングエージェント間の相互作用を記述する。上記では、MESIFプロトコルが説明されたが、必ずしもMESIFキャッシュコヒーレンシプロコルの使用が必要であるわけではない。例えば、Forward(転送)ステートを使用しなくてもよく、周知のMESIプロトコルを使用してもよい。さらに、上記の説明は、MESIFプロトコルの一実施形態の概論の一例を含むまでである。したがって、上記の様々な構成要素は、別の実施形態では、異なっていてもよい。
上記から分かるように、このような複合体を検証及びデバッグするのは、(電気的及びプロトコルの観点の両方において)非常に煩雑なプロセスとなる。そこで、一実施形態では階層化された相互接続の積層構造全体にわたる検証を助けるべく、図4のプロセッサ410aは、DFxを含む。例えば、ODLA413aは、始動シナリオ又はその他のイベントに応答して、相互接続の積層構造のトラフィック、トレース又はステートを取得することができる。一実施形態において、ステートとは、デバイス、エージェント及び/又は検証オブジェクト(対象)のその他の構成要素の状態のスナップショットを指す。ステートは、また、アーキテクチャ又は検証オブジェクトの構造的な状態とも称することができる。別の例では、ステートは、状態のスナップショットにおけるパラメータの値の組み合わせによって規定される。したがって、相互接続構造において100個のパラメータが特定される場合には、これら100個のパラメータの異なる値の全ての組み合わせが、それぞれ異なる状態を表すと考えられる。
1つのステートが複雑なプロトコルの多数のパラメータを参照することから、キャッシュコヒーレンシプロトコルの1つのステートの非常に単純化した例として、1つのプロセッサが共有コヒーレンシステートの1つのキャッシュラインを有し、2つのプロセッサが無効ステートのキャッシュラインを有し、これらのプロセッサのうちの1つにおいてスヌープが受信された場合を考える。ここで、複数のプロトコルエージェント、複数のステートに保持された複数のキャッシュライン、及び、特定の送信先で受信された要求/メッセージが存在する。このような単純化された例のみで、少ない数のパラメータが存在する。別の例として、データペイロードを有する書き込みトランザクションは、複数のステートになる可能性があり、書き込み先、書き込まれるデータペイロードと関連付けられたキャッシュラインのステート、相互接続のトラフィック、その他のエージェントによる書き込み応答等のその他のパラメータが様々に変更されると考えられる。
したがって、一実施形態では、パラメータとは、プロトコル、物理的ロジック、デバイス、エージェント、又は、様々なステートに変化する又は様々な状態であるグローバルステート/変数における、あらゆる要素を指す。具体的な例としては、キャッシュコヒーレント相互接続プロトコルを有効にする場合、プロセッサ410aのようなキャッシングエージェントに対するパラメータには、スヌープに対するキャッシュ応答が含まれる。ここで、キャッシュ応答パラメータの第1の値として、要求デバイスにスヌープされたキャッシュラインを転送することが含まれ、キャッシュ応答パラメータの第2の値として、そのキャッシュラインのホームノードへの書き込みが含まれる。その他一般的なコヒーレンシプロトコルパラメータには、様々な種類のエージェント、エージェント応答、デバイス応答、相互接続応答、メッセージ応答、応答の種類、特定のアクションに対するその他の応答、応答先、メッセージ、メッセージの種類、メッセージ送信先、要求、要求の種類、要求先、キャッシュの種類、キャッシュのステート、キャッシュロケーション、レジスタのステート等が含まれる。
しかしながら、物理的相互接続、通信プロトコル、又は、その他のプロトコルのようなアーキテクチャは、検証の対象となりうることから、パラメータは、様々な種類の変数を含んでもよい。可能性のあるプロトコル関連のパラメータの例示的であって不完全なリストには、多数のプロトコルエージェント、プロトコルエージェントの種類、エージェントついてのキャッシュ実装の種類、様々な種類のプロトコルエージェントの数、プロトコルエージェントの型、プロトコルエージェントのステート、プロトコルエージェント又はバスにおける回路又はステートマシンのステート、エージェント識別子、多数のプロトコル要求、要求の種類、要求元、要求先、要求のステート、参照されるオペレーション、オペレーションのソース、参照されるアドレス、アクセスされるアドレス、アドレスロケーションの状態、データペイロード、プロトコルエージェントのステート、キャッシュのステート、キャッシュラインのステート、電圧、周波数、電源状態又はその他の物理的プロトコル属性といった物理的プロトコルステートパラメータが含まれる。
物理層502a、502bに関して、相互接続の物理的パラメータの幾つかの例には、電圧、アンダーシュート、オーバーシュート、周波数、周期、スペクトル拡散、ジッタ、タイミングマージン、ノイズ等が含まれる。その他のパラメータとしては、接続に関連するステートマシンのステート、エージェントの種類、エージェントのステート、エージェントにおけるI/O回路のステート等が含まれる。しかしながら、アーキテクチャ内のあらゆる可変要素を、パラメータと見なしてもよい。
したがって、一実施形態では、ODLA413aは、目的のインターフェースの全て又は一部分を含んでもよいステート又はトレースを取得するのに採用される。始動シナリオのような規定されたイベントが発生するのに応答して特定のスナップショットを1回取得するのに加えて、ODLA413aは、トラフィック(インターフェースにおける通信の複数のステート)を取得するのに採用される。このシナリオでは、デバイス間で交換されるプロトコルが取得される。データの処理後、高レベルのソフトウェアは、正しいプロトコル交換がインターフェースにおいて発生したかを確認するプロトコルダイアグラムを生成することができる。上記の例の続きを説明する。DFxシリコンは、排他的コヒーレンシステートのキャッシュラインに対する特定のスヌープメッセージを受信するプロセッサ410aと関連付けられた始動シナリオを生成する又は搭載してもよい。そして、ODLA413aは、プロセッサ410aのスヌープメッセージに対する応答といった情報を、メモリ420aのある部分で取得する。VCU412aによって提供されるAPIを介して、適切なアクセスを有する第3者のベンダー(TPV)は、メモリ420aの第2部分に保持されている情報に基づいてプロトコルを構築することができ、規定されたステートの環境下で特定のスヌープメッセージに適切な応答が与えられたことを確認できる。
この例から分かるように、同様な方法及び装置を、電気的特性、及び、上記で紹介されたQPI相互接続450のMESIFキャッシュコヒーレントプロトコルのようなプロトコルの検証にも使用することができると考えられる。オンシリコンフックが、階層化された接続構造のようなあらゆるインターフェースの検証を提供できることを示すべく、上記QPI相互接続450の検証例から推定を行ってもよい。
ODLA413a及びプロセッサ410aの内部及び外部インターフェースに対する検証フック以外に、その他のシリコンフックを、プロセッサ410aに組み込んでもよい。例えば、一実施形態では、特定のマイクロアーキテクチャフックが、プロセッサ410aに組み込まれる。例えば、同時係属中の出願番号11/143,425号明細書"ENHANCEMENTS TO PERFORMANCE MONITORING ARCHITCUTRE for CRITICAL PATH‐BASED ANALYSIS(クリティカルパスベースの分析のためのアーキテクチャの性能監視の改善)"には、マイクロアーキテクチャの性能を監視する装置及び方法が説明されている。性能は、シミュレーション、分析的思考、リタイアメント・プッシュアウト測定、全体の実行時間、及び、インスタンス毎のイベントコストのその他の測定方法を通じて、監視される。そして、同様な装置がシリコンに含まれて、マイクロアーキテクチャのイベントに基づく命令のタグ付け/命令のカウント、リタイアメント・プッシュアウトの測定、命令/プログラムの全実行時間の測定、及び、プロセッサのその他の周知の機能の検証/デバッグが行われる。
別の例として、プロセッサ410aは、電力制御ユニット(PCU)414aを含み、プロセッサ410a内の処理要素の電力状態のような電力を調整及び制御する。加えて、DFxフックをPCU414aと共にプロセッサに組み込んでもよく、それにより、電力消費レベル、様々な電力状態の継続時間、電力状態遷移の頻度、電力状態遷移のプロトコル、及びその他の周知の電力関係の測定基準のような、様々な電力検証測定基準を取得してもよい。ODLA413aのオペレーションと同様に、要因が供給されると又は始動シナリオの発生に応答して、電力情報が、通常のオペレーションの間に収集されてもよいし、特定の最悪の電力状態のシナリオ(すなわち、インターフェースに送信される最悪のパターンによって生成される最悪の電力共振周波数)の場合のテストモードの間に収集されてもよい。電力のDFx及びオペレーションについは、図28を参照して、後に詳細に説明する。
電気的なシステム内のあらゆるデバイスに同様に含まれていてもよいプロセッサ中心のDFxの例示にとどまらず、その他のプラットフォームレベルでのDFxについても含まれると考えられる。上記及び以下に記載されるDFx(デバッグの機能)は、本明細書に記載されるテストアーキテクチャのその他の部分使用することなく、個別に実装されてもよい。例えば、ブートプロセスの初期段階における信号情報の収集は、図6−8を参照して以下で詳細に説明するが、検証制御ユニット又は階層化され抽象化されたアクセスを使用せずに、レガシーシステムに実装してもよい。
図6には、信号情報における初期の電力を収集する構成のブロック図の一実施形態が示されている。この実施形態では、PCH605が、ダイレクト・メディア・インターフェース(DMI)635を介してプロセッサ640に連結されている。通常、電源がONの状態では、最初にPCH605に電力が投入される。多くのシリコンデバイスと同様に、PCH605は、複数段階で電力投入される。例えば、特定の複数のウェルが特定の順番で電力投入される。純粋に例示するだけの例であるが、クロック610が先ず最初に電源投入され、次に、サスペンドウェル、アクティブウェル、リアルタイムクロックウェル等のウェル615及び620に電源が投入される。最後に、管理容易性エンジン(manageability engine)及びテストアクセスポート(TAP)のようなテストロジック625がイネーブルされる。
ある環境下では、特定の電力投入又はテストロジック625がイネーブルされる前に遷移する初期信号は、見ることができない(これら信号の発行について可視性が存在しない)が、これは、これら信号に関連付けられた遷移情報が、テストロジック625がブートプロセスでイネーブルされるまでに失われてしまうからである。しかしながら、検証及びデバッグの間は、そのような信号についての情報を見ることができる又は収集できるようになれば有用である。このような信号の例には、電力管理制御リセット信号が含まれる。この例では、この信号の遷移により、電力管理制御部に、フェッチ及び実行を開始させるよう命令される。したがって、(1)信号が遷移しなかった、(2)信号が遷移した、及び/又は(3)いつ信号が遷移したか、について判断することができ、電力管理制御部がハングするシナリオ("固まった"場合のシナリオ)のデバッグを助ける。
このように、一実施形態において、電力投入初期状態の信号取得ロジック(初期ブーストテストロジックとも称されてもよい)は、デバイスに完全に電力が投入される前の、初期状態の信号情報を取得する。トレースのような信号情報を取得するあらゆる周知の方法又は装置を利用してもよい。ここで、信号取得ロジック630は、最初の電力投入の後に特定の信号情報を取得し、この信号情報を格納するロジックを含む。そして、テストロジック625がイネーブルされると、情報が読み出されて、適切なデバッグオペレーションが実行される。
図7には、電子システムのブートの間の初期信号を取得する取得ロジックの高レベルブロック図の一実施形態が示されている。図に示すように、取得ロジック700は、対象の信号(すなわち、信号1、2、3、・・・11のような、ブートの間に監視される信号)についての情報を取得/保持するレジスタのような格納要素720を含む。一実施形態において、電力が投入されると、取得ロジック700は、(ユーザーのトリガ又は第3者のアクセス/プログラミングを必要とすることなく)初期設定としての信号情報の取得を開始する。別の例として、情報の取得は、特定の信号/クロックの遷移又は特定のウェルがイネーブルされた等の特定の条件が発生した時に、開始する。同様に、所定の時間/サイクルの経過、一定期間対象の信号の遷移を検出しなかった時、対象の最後の信号が遷移した時、対象の最後の信号が所定期間遷移しなかった時、特定のウェルがイネーブルされた時、テストロジックがイネーブルされた時、プログラムが取得を止めるべきだと示した時、又は、その他の周知のイベントの発生時のような条件が発生すると、信号の取得を停止させてもよい。
また、(遷移の時間、遷移回数、遷移の方向、トレース等)信号情報取得の周知の装置又は方法を利用してもよく、特定の例の実施形態について、図7を参照して説明する。このシナリオでは、レジスタ720が、対象の信号(又は、信号のそれぞれ)がいつ遷移したかの時間を記録する。例えば、レジスタ720は、信号名フィールド及びタイムスタンプフィールドを含む。信号名フィールドは、対象の信号を特定するビット表現を保持する(すなわち、対象の特定の信号に対応するように認識可能なビットパターンを保持する)。タイムスタンプフィールドは、信号名フィールドで特定される信号の遷移に対応する時間のビット表現を保持する。あるシナリオでは、タイムスタンプ値は、図6のPCH605のようなデバイスのシリコンスキュー全体にわたって決定性を有するものである。また、タイムスタンプは、デバッグに使用されるシリコンスキュー全体にわたって決定性を有するものである。
さらに、レジスタ720は、信号名フィールド及びタイムスタンプフィールド保持有効情報を示す有効値を保持するステータスフィールドを有してもよい。反対に、無効値は、同じレジスタにおける対応するフィールドのステートが無効であることを示す。一実施形態において、レジスタ720は、設計者によって決定されるように、又は、後に製造者によって更新されるように、対象の信号全てに関する情報を保持するレジスタアレイを含む。さらに、レジスタ720は、Nの深さ(Nは、正の整数)を有する循環バッファとして実装されてもよく、N個のエントリのうちの最後のセットを取得して、最後のN個の電力ステート遷移の問題の特定を可能にする。
より具体的な例を提供するべく、電力制御ユニットリセット信号(信号11)を取得/監視すると仮定する。この例では、信号における電力が、ブートプロセスを開始させる。そして、PCH605のようなデバイスは、電力投入を開始する。レジスタ720は、初期値に初期化されてもよい。電力投入信号又は初期の起動信号のその他の遷移に応答して、カウンタ725がカウントを開始する。信号11が遷移すると、パルス生成ロジック710がパルスを生成する。パルス生成ロジックは、信号11(図示せず)のエッジ検出ロジックも含む。その結果、信号11を特定するビットパターン(電力制御ユニットリセット信号)が、信号名フィールド735に格納される。その他の情報が格納されてもよく、例えば、遷移の方向を示すビットが格納されてもよい。加えて、信号名フィールドを更新するために、カウンタ725の値(タイムスタンプ)が、タイムスタンプフィールド730に格納される。そして、ステータスフィールド740に、信号名フィールド735及びタイムスタンプフィールド730が有効であることを示す高い論理値のような有効値が設定される。
更なる信号の遷移について、このプロセスを繰り返してもよい。上記したように、循環バッファの構成を使用して、循環バッファの深さと同じ数の電力ステート遷移に対する情報を保持してもよい。さらに、信号の遷移が取得されると、一例では、カウンタ725は、カウントを継続する(最初のカウントからの絶対的タイムスタンプとなる)。別の例では、カウンタ725は、リセットされる(すなわち、1つ前の信号遷移からのタイムスタンプとなる)。さらに、上記したように、信号取得ロジック700は、最後の信号遷移又は所定期間最後の信号遷移が検出されなかった(ハング又は"固まった"場合のシナリオの可能性)等の所定のイベントが発生すると、信号情報取得を停止する。
一実施形態では、情報の取得が完了すると、レジスタ720は、読み出しを受け付けることができる(すなわち、信号情報が可視的となり、信号遷移又は信号遷移が検出されなかったことについての必要なデバッグを実行することができる)。一実施形態において、レガシーシステムでは、レガシーテストアクセスポートを使用して、物理的な接続を行い、レジスタ情報を読み出す。一実施例では、このような読み出しは、ヒューズによってマスクされる又は保護されることなく、管理容易性エンジン(manageability engine)又はテストポートがイネーブルされた後であればいつでも実行可能であってもよい。別の実施形態では、レジスタ720へのアクセスは、本明細書に記載されるような検証アーキテクチャによって提供及び制御される。例えば、検証制御ユニット(VCU)は、レジスタに対する抽象化された安全なアクセスを提供することができる。ここで、ソフトウェアは、APIを使用して情報を要求することできる。そしてVCUは、レジスタ720から情報を読み出し、それを要求元のソフトウェアに提供することができる。本明細書に記載するように、レジスタ720の替わり、又は、組み合わせにより、システムメモリをODLAのトレースバッファとして使用することについて上記で説明したように、取得された情報をシステムメモリに配置してもよい。
上記では、電力投入の間の制御ハブ内の信号のトレースを取得することに注目して説明がなされた。しかしながら、本明細書に記載する、初期信号のトレースを取得する装置及び方法は、これに限定されない。実際には、デバイスのテストモジュールがイネーブルされる/準備が整う前の、あらゆるシリコンに同様に適用できる。例えば、同様な装置を、プロセッサ640又はスモールファクターデバイスに埋め込まれたプロセッサに実装して、関連付けられたテスト/検証ユニットがイネーブルされる前に、信号情報を取得できる。
図8には、電力シーケンスの最初における信号情報の取得方法を示したフローチャートの一実施形態が示されている。フロー805において、電力投入イベントが発生する。電力投入イベントは、電力信号のアサート(又はアサート停止)のように単純なものであってもよい。別の例では、情報の取得が、電力投入信号に応答して発生するが、実際の情報取得の開始は、介在する信号の遷移に依存する。例えば、制御ハブの内部信号は、電力投入信号に応答して遷移してもよい。そして、信号情報の取得は、介入する内部信号に直接応答して開始されてもよい。ここで、電力投入イベントには、電力信号、内部信号の遷移又はその両方が含まれてもよい。
フロー810では、電力投入の初期状態の信号情報(テストユニットがイネーブルされる前に遷移する可能性がある信号についての情報)が取得される。上記したように、あらゆる周知の装置又は方法を使用して、このような情報を取得してもよい。例えば、電力イベントが発生すると情報を取得するべくプリセットされる単純化されたODLAを使用できる。別の例として、上記したような情報取得ロジックを使用してもよい。装置及び方法に関わらず、フロー815では、所定の条件が発生すると情報の取得が中止/停止される。所定の条件には、例えば、所定時間/サイクルの経過、対象の信号の遷移が一定期間検出されない、対象の最後の信号が遷移した時、対象の最後の信号が一定期間遷移しなかった時、特定のウェルがイネーブルされた時、テストロジックがイネーブルされた時、プログラムが情報の取得を停止するように指示した時、その他の周知の所定の起動イベントが含まれる。
フロー820において、テストポートが利用可能となる。例えば、管理容易性エンジン(manageability engine)テストアクセスポートが、ブートプロセスの間にイネーブルされる。別の例として、VCUは、以下に説明されるように、ユニバーサルアクセスポートと共にイネーブルされる。テストポートがイネーブルされると、フロー810で取得された信号情報が読み出されてもよく、読み出しは、抽象化層を介す又は直接テストデバイスに読み出されるといったように、安全な態様で行われてもよい。そして、ソフトウェア又はデバッガは、問題又は対処すべき事項が発生したかを判断することができる。その結果、内部信号の可視化を通常提供するロジックをイネーブルする前のような、ブートプロセスの初期の段階での信号遷移を、このような一体化したハードウェアフックを有さないデバッグを行う従来の方法と比較して、安価にそして多大な労力を費やすことなく、効率的に監視及びデバッグすることができる。
上記したような初期の電力投入信号を取得するDFx機能に加えて、一実施形態では、非常に低い電力ドメインにおける信号軌跡を取得するのにフックを組み込んでもよい。図9には、低電力状態の対象の信号取得のためのロジックの一実施形態が示されている。
電力ステートは、製品に固有のものとして規定されることが多いが、一実施形態では、電力ステートは、電力ステートのAdvanced Configuration and Power interface(ACPI)種のような、様々な電力規格におけるあらゆるステートを指す。プロセッサの場合、ACPI規格では、3つの基本的なステートが規定されており、C0(動作/アクティブ状態)、C1(命令は実行されないが実行ステートへ戻ることはできる、中断(halt)状態)、C2(ソフトウェア可視ステートが維持されるがウェイクアップには時間掛かる場合がある、ストップクロック状態)及びC3(プロセッサがキャッシュコヒーレントを保たないが、その他の状態は維持する、スリープ状態)である。また、これらのステートの変形も考えられている。例えば、エンハンストC1ステートは、低消費電力の場合に使用できる。C3/スリープの変形は、深いスリープステート(すなわち、より深い又は最も深いスリープステートC6)を含み、処理要素が起きるまでにより長い時間を必要とする。これらの電力状態は、単なる例に過ぎず、プロセッサを参照するのに主に使用される。しかしながら、同様なステートは、制御ハブのようなその他のデバイスのためのACPI規格に規定されている。
図に示されるように、デバイス900は、プロセッサ、制御ハブ、グラフィックスデバイス又はその他の周知のコンピュータ関係デバイスを含んでもよく、低電力状態(すなわち、上記の例で言う動作状態のC0ステート以外のあらゆるステート)の間の対象の信号901−906を取得するロジックを含み。ロジックの第1段階(ライブ取得920)は、信号901−906の生の(live)トレース/値を取得する。例えば、タイミングチャート970には、クロック信号910に基づく信号906の取得が示されている。デバッグイネーブルのようなイネーブル信号を、デバッグモードでない時にクロック910を制限する(すなわち、ゲートクロック910が段階920、930をフロップする)のに使用してもよい。図に示されるように、第2段階(格納された値930では、電力周期信号925で示されるような電力サイクルの開始時に、信号901−906のそのままの(生の)状態を取得する。例えば、PCHでは、電力周期信号は、特定の所定のピンのアサート(アサート停止)に応答して生成される。ここで、ブートでない状態の場合には、検証を行うエンジニアは、ピンを切り替えて、システムをリブートする。したがって、このシナリオでは、信号901−906の最近のバージョン/ステータスが取得され格納される。図示の例では、ブートが成功すると、格納される値930は、タイミングチャート970に示されるように、最近のブート(起動)に失敗した状態の間の信号901−906のステータス950を保持する。
ロジック900の動作を例示する具体的な例を提供するため、デバイス/システム900の5回のブート(起動)を試みると仮定する。第1ブートでは、イネーブルビットが設定されて、ロジックを作動可能な状態にする。ここで、レガシーJTAG又はその他のテストインターフェースを使用して、イネーブルビットを設定してもよい。別の実施形態では、VCUが、イネーブルビットを設定する。第1ブートが成功したと仮定すると、電力周期信号925が低(low)となり、信号901−906のステータス(状態)が取得される。第2ブートが成功すると、ステータスは、全て1つ論理値を指す(1つ前のブートの成功及びイネーブルビットが作動可能な状態になっている)。しかし、第3ブートに失敗すると、システムは、リスタートされる。この場合、電力周期信号が、例えば、高(high)−低(low)−高(high)とトグルされ(切り替えられ)て、電力周期信号925が低(low)の時に信号901−906のステータスが取得される。第4ブートにも失敗したと仮定すると、システムは、同様な態様でリスタートされる。続いて、第5ブートは成功すると、ステータス950は、最近の失敗したブートの試み(第4ブート)における信号910−906のトレース/ステータスを報告する。上記したように、ステータス950は、レガシーテスト機器によって読み出されてもよい。または、別の実施形態では、階層化されたテストアーキテクチャを実装するVCUを使用して、ロジック900へのアクセスを提供及び制御する。
上記した説明の多くが、プロセッサの検証情報を取得することに関してなされ、一部の説明には、PCHのような制御ハブの信号の状態を取得することについて触れた。しかしながら、DFxフックはこれらに限定されず、プラットフォームを介してその他の領域に実装されてもよい。上記で簡潔に触れたその他の領域は、電力に関係するハードウェア及び電源供給ネットワークのテスト、検証及びデバックのためのハードウェアフックを提供する。例えば、周波数昇降ロジック又は電圧対時間測定ロジックは、電源供給ネットワークの特性(インピーダンスプロファイルを規定する及び/又は共振周波数を特定する)を明らかにすることができると考えられる。または、測定ロジックを電圧調整器(VR)によってマザーボードに挿入して、必要な電流量、消費電力、ノイズ等を測定してもよい。
さらに、本明細書に説明されるDFx及び検証アーキテクチャは、実験室での検証に限られない。DFx機能は、プロセッサ、制御ハブ、マザーボード又は大量生産用(HVM)試験機器と結合するその他のデバイスに組み込まれてもよい。その結果、周知のHVMテストは、以下に説明するように、ユニバーサルアクセスポートを介してルートされてもよい。製造側は、一実施形態において、安全な階層化された検証アーキテクチャによって、製造側のテストを行う者に、高いアクセス権限(すなわち、含まれるDFx機能の大部分又は全てに対する低階層のアクセス)を与える。
複数の製品にテストアーキテクチャを提供することにより、プロセッサ、マザーボード等の製品全部にわたって製造欠陥を診断(クロスプロダクト検証)してもよい。テスト結果を階層化されたテストアーキテクチャを介して提供し、複数の製品について比較をソフトウェアによって行うことにより、欠陥及び歪みを容易に特定することができると考えられる。例えば、何千個ものプロセッサを、VCU及び階層テストアーキテクチャを介してDFxにアクセスするHVMによってテストしてもよい。そして、テスト結果をソフトウェア/プレゼンテーション層に集めて、ソフトウェアが情報を分析して、歪み、欠陥等の表示可能な情報にまとめることができる。
別の例としては、以前のマザーボードの診断は、専用の外部テスタを使用して、複数のオンボードのテスト点をテストする、回路内プローブテスト(回路基板テスト(ICT))に依存していた。フォームファクターが小さくなり、テスト点を形成するのに高いコストが掛かるようになり、ICTをサポートし続けるのは難しくなっている。したがって、一実施形態では、VCU及び高レベルのソフトウェアに対して提供されるAPI等の本明細書に記載されるテストアーキテクチャを、複数のデバイスにわたる総合的な診断を提供するのに利用する。
以前は、プロセッサ及びチップセットのようなデバイスの欠陥ではなくマザーボードの欠陥であるのに、デバイスが返品(無欠陥返品)されてしまっていたこともあったが、本明細書に記載されるICTを必要としない簡単なテスト方法により、このような返品を避けることができる。例えば、外部ICTデバイスを使用する替わりに、DFxを構築し、VCU及びAPIを介してDFxのサポート(アクセス及び制御)を提供することにより、テストのコストの30%を削減できると考えられる。
[検証制御部の実施形態]
一実施形態では、本明細書に記載したようなハードウェアテスト、検証及びデバッグフックのようなDFX機能へのアクセス及び制御を提供するために、検証制御ユニット(VCU)が設けられる。VCUは、あらゆるハードウェア、ファームウェア、ソフトウェア、コード、マイクロコード、又はこれらの組み合わせを含み、制御及び/又はアクセスを実装してもよい。図10には、1以上のVCUを有するプラットフォームの例の一実施形態が示されている。図に示されるように、プラットフォーム1000は複数のVCUを含み、プロセッサ1010内に1つ、そして、プロセッサ1075内に1つ含まれている。このシナリオでは、VCUは、複数のデバイス(プロセッサ、制御ハブ、グラフィックスデバイス、マザーボード又はその他の周知のコンピュータデバイス)内に含まれていてもよい。そして、各VCUは、対応するシリコンDFx機能へのアクセス及び制御を担ってもよい。ここで、VCU1012のようなVCUは、プロセッサ各々に備えられ、プロセッサ1010のDFX機能(アーキテクチャ的及びマイクロアーキテクチャ的DFX1015、ODLA103及びPCU1014)へのアクセス及び制御を提供することができる。プラットフォーム1000内の複数のシリコンデバイスに分布させることにより、個別の部分のテスト(例えば、ここのパーツのHVMテスト)及びプラットフォームのテスト/デバッグ(例えば、複数のパーツがプラットフォームに一体化されており、システム全体の分析と共にシステムにおける個々のパーツの性能を分析する場合に有用である)を行う際に、DFx機能へのアクセス及び制御を可能とする。
一例では、このように分配されたVCUの実装形態によって、VCUは、互いに通信可能となる。この通信を、プラットフォーム1000におけるVCU1012とVCU1080とを結合させるVCU相互接続(図示せず)を使用して、この接続を直接行ってもよい。これに替えて、VCU1012及びVCU1080のようなVCUは、対応するデバイス(プロセッサ1010及びPCH1075)と結合する既存の相互接続(接続1065、例えば、ダイレクト・メディア・インターフェース(DMI)、クイックパスインターフェース、PCI−Eインターフェース又はその他の周知の接続を含む)を介して通信を行ってもよい。これに替えて、VCUは、共有メモリスペースを介して互いに通信を行ってもよい。例えば、VCU1012は、オペレーティングシステムからは難読化(抽象化)されているが、PCH1075/VCU1080のようなその他のシステムデバイスには可視化されているメモリ部分1021に書き込みを行う。その結果、VCU1080は、VCU1012によって書き込まれた情報を読み出すことができ、また、その反対も可能である。具体的な例として、検証アーキテクチャにアクセスするのに統合ポートが提供されている場合には、VCU間の相互接続/通信を使用して、プラットフォーム全体のDFx機能へのソフトウェアアクセスを調整する。これついては、以下に詳細に説明する。また、その他の問題についても検出を行い、VCU間の通信及び/又は管理容易エンジン(manageability engine)によって対処してもよい。その他の問題としては、例えば、ライブロック(livelock)、デッドロック、パッチロード同期、電力/性能ステート遷移同期、生存性、トリガ及びトレース設定、ダンプデータのポストコレクション、セキュリティ、及び、取得/報告の範囲が挙げられる。
上記の説明は、主に、プロセッサ、制御ハブ及びマザーボードといった各パーツにおけるVCUの分配についてなされたが、このような分布が必ずしも必須ではない。これに替えて、1つのVCUを、プロセッサ1010又はPCH1075のような1つのデバイスに配置してもよい。そして、そのVCUが、デバイスのDFxフックへのアクセスを制御すると同時に、プラットフォームのDFxフックへのアクセスを制御してもよい。さらに、VCUを分配する実装形態が利用される場合、VCUは、対照的である必要はない。この場合、シリコンパーツは異なる場合もあることから、VCUが異なって配置されてもよい。加えて、1以上のVCUが、高い優先順位を有していてもよい(例えば、ヘッドホーム又はマスタVCUが、システムにおけるその他のVCUによるアクセス及び制御を調整する)。これに替えて、各VCUを、通信マスタと考えてもよい。
一実施形態では、VCU1012は、プロセッサ1010のDFx機能へのアクセスを制御するプログラム可能エンジン又はユニットを含む。例えば、VCU1012は、マイクロコントローラを含む。マイクロコントローラは、多くの場合、自身の処理要素、メモリ(フラッシュ、プログラム可能ROM、SRAM又はその他の周知のメモリデバイス)及び通信インターフェースを有するデバイスを含む。基本的に、マイクロコントローラは、プロセッサ1000に埋め込まれる又は内包される小さなコンピュータとして見なすことができる。したがって、処理要素によって実行されると、高階層の方向ではソフトウェアに、下階層の方向ではDFx機能に、インターフェースを実装する自身のコード/マイクロコードを有してもよい。また、以下に詳細に説明するが、マイクロコントローラを更新して(認証されたパッチ又はアップデートを介してパッチされたメモリに保持されるコードの制御及び動作)、その他の層(ソフトウェア又はDFx機能)のテスト、検証アーキテクチャにおける変更に適応する新しい機能を提供してもよい。そして、変更を、プラットフォームのDFx機能又は高階層のソフトウェアに反映させ、ハードウェア(又は、パーツ全体)を交換することなくVCUを適用できるようにする。
マクロコントローラを含むVCUの説明は、純粋な例示に過ぎない。同様なデバイスが、DFx機能へのアクセスの同様な制御を行い、高階層の層への同様なインターフェースを提供してもよい。例えば、プログラム可能アレイロジックデバイス、汎用アレイロジックデバイス、複雑なプログラム可能ロジックデバイス、フィールドプログラム可能ゲートアレイデバイス等のプログラム可能ロジックデバイスを使用することができる。また、図では、VCU1012が、プロセッサ1010において1つの論理ブロックとして描かれている。しかしながら、ODLAがプロセッサ1010全体にわたって分配されてもよいように、VCU1012の部分も、プロセッサの1010のダイ又はパッケージの異なる部分に渡って分配されてもよい。
DFx機能の一部とのVCU1012の相互作用の例が、以下に記載される。VCU1012は、プロセッサ1010のレジスタを制御するべく結合されたメッセージチャネルのような、オンコアインターフェース1011におけるチャネルへのアクセスを有する。また、VCU1012は、スキャンアウト信号及びヒューズのようなスキャン信号へのアクセスを有する。したがって、VCU1012は、様々なマイクロブレークポイント始動イベント(シナリオ)をプログラムすることができ、ODLA1013にトレースをメモリ1020(又は、オペレーティングシステムからは隠匿されたメモリ1021の一部分)に格納するよう指示し、メモリ1020に格納されたトレースを抽出し、トレースを高レベルのソフトウェア(例えば、デバッグツール)に届ける。加えて、VCU1010は、どのDFx機能にアクセスさせるかを、現在のセキュリティ(アンロック)レベルに応じて制御できる。一実施形態において、VCU1010は、プロセッサ1010のDFx機能へのアクセスプログラムできるツールを有するAPIを公開させる。
一実施形態では、より高いレベルのソフトウェアから見る場合に、DFx機能のハードウェア詳細を分かりにくくさせる又は抽象化させる抽象化層のような、以下に詳細に説明する検証階層アーキテクチャの1以上の層を実装する役割を、VCU1012が担う。抽象化層が使用されるか否かに関わらず、一実施形態において、VCU1012は、DFx機能への安全なアクセスを提供する役割を担い、これについては、以下の検証基板セキュリティの実施形態の章で詳しく説明する。
図11には、VCUを使用したソフトウェアからのDFx要求に応じる方法を示したフローチャートの一実施形態が描かれている。フロー1105では、アプリケーションプログラミングインターフェース(API)に従って、第3者のベンダーからの、テスト及びデバッグプログラムのようなソフトウェアプログラムの実行に応答して、DRx要求が生成される。ここで、DRx要求は、VCUによって提供されるサービス及びルーチンと相互作用するべく提供されているAPIの規格及び規則に準拠してもよい。すなわち、ソフトウェアプログラムは、APIによって認識される呼び出し規則のような、APIによって規定される"ボキャブラリー"に沿って、書かれていてもよい。
フロー1110において、DFx要求は、VCUによって実装されるAPIを使用して解釈される。ここで、APIは、ソフトウェアとDFxハードウェアとの間のインターフェース又はファシリテータ(仲介役)として動作する。一例として、VCUマイクロコントローラのメモリに格納されるコードのような、VCUに格納されるコードは、DFx要求に応答して実行される。このシナリオでは、VCUに格納されているコードとして、ライブラリ、ルーチン、データ構造、オブジェクトクラス、プロトコル等を含んでもよい。ここで、DFx要求が、VCUにおけるルーチンの呼び出しを含み、VCUにおけるルーチンの実行により、DFxハードウェアと関連付けられた幾つかの機能/動作が実行されるものと仮定する。
一実施形態において、以下に詳細に説明するように、VCUは、DFxハードウェアへのアクセス(セキュリティ)を制御する。したがって、フロー1115において、セキュリティレベルに基づいて、そのDFx要求が許可されるか否かが判断される。セキュリティについては、以下で詳細に説明するが、単純化した例として、この時点で、VCUの例示的動作が係属すると仮定する。一例として、VCUは、安全な(secure)アクセスの複数のレベルを含み、各アクセスレベルは、ハードウェアDFxへの異なる複数のアクセスのレベルを許可する。例えば、各レベルが、暗号化されたパスコードに関連付けられていてもよい。ソフトウェアプログラムが実行を開始するとそのセキュリティレベルを開錠する安全なパスコードが提供され、それによりソフトウェアプログラムがアクセスできる機能が指定されてもよい。そして、フロー1115では、VCUによって予め規定されたアクセスのレベルに従って、DFx要求が、ソフトウェアプログラムと関連付けられたセキュリティレベル内で許されるものか否かの判断がなされる。DFx要求が許可されない場合は、フロー1120において、適切に対処(拒否、実行を行わない、例外処理を実行等)してもよい。
反対に、DFx要求が許可される場合は、フロー1125において、DFx要求が受け付けられる。上記の例の続きであるが、DFx要求が、APIによって規定されるサービスルーチンの呼び出しを含む場合には、VCUは、サービスルーチンを実行する。ここで、サービスルーチンには、上記のような、ハードウェアDFx機能を設定、開始又はやりとりを行うあらゆるルーチンが含まれてもよい。例えば、VCUは、プロセッサに始動イベントを発生させ、ODLAにブレークポイントにおいてトレースを取得させる、マイクロブレークポイント始動イベントを設定してもよい。そして、フロー1130において結果(トレース)が抽出されてもよく、例えば、ODLAによってトレースバッファとして利用されているメモリへと書き出す。そして、フロー1135において、結果がソフトウェアプログラムに提供される。このシナリオでは、ソフトウェアプログラムは、後の解釈/デバッグのためにトレース情報を取得するべく、メモリの読み出しを行うことができる。図12に示すように、フロー1205において、テストアーキテクチャへの変更が決定される。変更には、アーキテクチャのあらゆる層への変更が含まれてもよく、例えば、DFxハードウェアへの変更、VCUがどのように別のVCUと関わるかについての変更、VCUがどのようにDFxハードウェアと関わるかについての変更、VCUによって提供されるサービスの変更、セキュリティレベル(各々が何に対してアクセスできるか)の変更、API規格における変更等が含まれる。フロー1210において、VCUは、テストアーキテクチャへの変更が反映されるように更新される。ここで、パッチ、認証されたパッチ又は更新を、ローカルに又はリモートで適用して、変更に対応するべくVCUコードを更新してもよい。その結果、VCUレベル又は階層化された積層構造における下の層において何か変更があっても、製造側は、VCUソフトウェアの更新を提供するだけでよい。この例において、APIのみが高レベルのソフトウェアに明らかとなることから、第3者のベンダーは、ベンダーのソフトウェアプログラム又はツールを更新する必要がない。APIは同じ状態としたまま、テストアーキテクチャにおける変更を反映する更新に基づいて、VCUのアクションが修正される。その結果、テストアーキテクチャの積層構造に僅かな変更がある場合、階層構造の全ての層を修正する必要がないため、支出(ハードウェアを再設計又は取り替えるコスト)及び時間を余分に費やさなくて済む。
[検証階層構造アーキテクチャの実施形態]
上記でも示唆したように、一実施形態において、テスト、検証及びデバッグのアーキテクチャは、階層化された積層構造に実装される。テストアーキテクチャの階層化された積層構造の一実施形態が、図13に示されている。図示されている層は、単なる例に過ぎない。その他の層を含めてもよいし、図示されている層のうちの何れかを省略してもよい。さらに、抽象化層1315のような図示された層の1以上を実装するロジックの例、例えば、VCUも、一例に過ぎず、図示される複数の層は、ロジック、ハードウェア、ファームウェア、コード、マイクロコード、ソフトウェア又はこれらの組み合わせに実装されてもよい。
一実施形態において、積層構造1300は、ハードウェアDFxの実装詳細を難読化する。抽象化層1315(サービス層)は、このようなハードウェアDFx詳細を抽象化するべく提供されると同時に、クライアント層(アプリケーション層1320及びプレゼンテーション層1325)とのインターフェースを提供する。図示するように、アプリケーション層1320に提供されるインターフェースは、複数のAPI(API1316、1317及び1318)を含む。
APIは、一般的には、アプリケーション層1320のようなソフトウェア層が、提供されるサービスの使用及びサービスへのアクセスのために順守する規則及び規定の特定のセットのことを指す。基本的に、APIは、異なる層(のソフトウェア、ファームウェア又はハードウェア)間のインターフェースを提供し、異なる層間のやり取りを容易にしている。コンソール、ツール、ソフトウェア、オペレーティングシステム、ライブラリ、アプリケーション又はAPIと結合する又はプログラミングするその他の周知の構造を含んでもよい層1320及び層1325によって、APIはアクセスされてもよい。具体的な一例として、APIは、サービス、ルーチン、機能、データ構造、オブジェクトクラス、プロトコル又はその他の周知のAPI関係の構成概念を含む。
1つのAPIを使用してもよいが、図示する実施形態では、異なる複数のAPIが、抽象化層1315によって提供される異なるサービス、ルーチン及びデータ構造へのアクセスのために提供されている。例えば、API1316は、セキュリティ(以下に詳細に説明する)及び低階層の詳細事項の抽象化のために、アプリケーション層1320によって使用されるコアサービス及びデータ構造を提供してもよく、それにより、世代間のツールの変更を減らすことができる(異なる抽象化層1315のサービス及び/又は異なるDFx特長を有する次世代のプロセッサにおいても、同じAPIと結合するべく同じツールを使用できる)可能性がある。
また、API1317及び1318のようなその他のAPIは、その他のサービス、データ、構造及び抽象化を提供してもよい。一例として、ハードウェアDFxは、層1315によって提供される唯一の抽象化ではない。ここで、API1317及び1318は、電子検証(Electrical Validation:EV)、電源供給、管理容易性、セキュリティ、アクセス、又はその他の周知のテスト、検証又はデバック関連の柱と関連付けられたサービス及びデータ構造を提供する。以前は、製造側は、電子検証(EV)アルゴリズムのような特定のアルゴリズムが、クライアント層に存在するツールによって使用されないように保護していた。現在では、アルゴリズムは提供されない、又は、アルゴリズムのサブセットのみが提供されるようになっており、EVに対するサブスタンダードのベンダーツールとなっている場合が多い。
一実施形態では、API1317は、EVの支柱となるAPIを含み、高レベルの層1320、1325におけるツール/ソフトウェアによって使用されるこの様なアルゴリズムの完全なセットの抽象化を提供する。したがって、アルゴリズムは、安全な態様(TPVツールには見えない態様)で提供されてもよく、それにより、良好なTPVテストツールとすることができると同時に、機密のアルゴリズムを、機密状態に抽象化して保つことができる。EV固有のAPIの柱の例は、あらゆる個別のテスト、検証及びデバッグに関連付けられ、ハードウェア、ファームウェア、ソフトウェア、コード、アルゴリズム、プロトコル等を抽象化するAPIの柱から推定されてもよい。さらに、柱に固有のAPIサービスモジュールを提供することにより、モジュールの更新が容易になる可能性がある。例えば、EVに関連付けられている何かを修正し、更新しようとする場合、コアサービス又はその他のAPIモジュールを更新することなく、EV API1317を実装するVCUマイクロコントローラに格納されているEVコードのパッチの更新が実行される。
上記の例では、APIに関しては、抽象化層1315及びクライアント層(アプリケーション層1320及びプレゼンテーション層1325)の間のインターフェースについて、主に説明された。しかしながら、下層に対して、低層の詳細を難読化する、抽象化する又はぼやかすインターフェースを提供するあらゆる周知の装置又は方法を使用してもよく、ソフトウェア/ハードウェアに実装されるそのようなハードウェア又はアルゴリズムを実装してもよい。また、抽象化層1315の例は、上記したように、VCUマイクロコントローラによって実装される。ここで、VCUマイクロコントローラのメモリデバイスに格納されるコードのように、API1316−1318を実装するロジック及び/又はコードは、VCUに組み込まれる。別の実施形態では、抽象化層1315のためにAPIを実装するコード、サービス及びデータ構造は、メモリに保持され、被試験プロセッサのような被試験デバイスによって実行される。
図示するように、積層構造の最も下層には、目的のDFx層1305が含まれ、DFx層は、上記したハードウェア機能/フックのような周知のDFx機能を含んでもよい。また、DFx層1305は、レガシーテスト/検証機能も含んでもよい。したがって、ある実施形態では、直接アクセス1350により、層1305内のハードウェアDFx機能の幾つかに直接アクセスすることが可能となってもよい。別の例では、目的のDFx層1305は、プロセッサ、PCH、グラフィックスデバイス、マザーボード又はその他の電子デバイスを含む被試験ユニットを含む。
トランスポート層1310は、特定のトランスポートビークルで実行するべく、抽象化層1315によって提供されるサービス及びルーチンからのタスクのような情報を適合させるが、サービス及びルーチンは、転送(トランスポート)メカニズムに依存しない(すなわち、どのようにサービス/ルーチンがDFx層1305へと輸送されるか把握しない)。例えば、トランスポート層1310は、抽象化層1315から情報を取得し、その情報を、層1305へと輸送するべく適切なパケット/情報に適合させる、トランスポートハードウェア及び関連するドライバを含む。ここで、輸送媒体としては、プラットフォーム内の相互接続、ポートを介してプラットフォーム又はデバイスへとコンソール/テスタを結合する接続、ホストマシーンにおける層1315と離れた場所に位置する非試験ユニットにおける層1305との間のリモートアクセスのためのネットワーク、又は、イン・ターゲット・プローブ(ITP)デバイス、規定されているデバッグポート、第3者のベンダー(TPV)トランスポートデバイス等のその他の周知のテストテスト関連デバイスが含まれる。
ネットワークの例から推定できるように、積層構造1300の1以上の層を、様々なマシーン及び/又は構成要素に実装してもよい。例えば、目的の層1305は、残りの積層構造の1以上の層を実装するホストプラットフォームとリモートで接続される被試験プラットフォームを含んでもよい。別の例としては、クライアント層は、サービス層及び目的の層1305を実装する被試験プラットフォーム又はその一部にリモートでアクセスするホストシステムに実装される。リモートアクセスについては、以下の検証アーキテクチャアクセスの実施形態で詳細に説明する。
クライアント層は、DFx層1305の低階層の詳細を抽象化する抽象化層1315及び/又は目的の層1305におけるDFx機能と結合するための、あらゆるツール、コンソール、アプリケーション又はその他のエンティティを含んでもよい。抽象化層1315との結合が、API1316−1318のような1以上のAPIを介して行われる場合、ピラー(pillar)固有のAPIモジュールの規定及び規則を含む、規定及び規則に従って、APIと結合する/APIにプログラムされるように、アプリケーション層1320は設計されている。さらに、上記したように、新しい世代の製品が供給されたとしても、クライアント層と抽象化層1315との間のAPI通信規格が同じである限り、クライアント層のツールを新しいバージョンのものに替える必要がない。その替わり、新しい製品(目的のDFx層1305)に対して新しい態様で同じサービスを提供するべく抽象化層を更新する。また、第3者のレガシー及び非サービスアプリケーションを、製造者の付帯品と共に、クライアント層内の1以上のツールソリューションに一体化してもよい。
プレゼンテーション層は、下層のデータ及びプロトコルを相関させる、可視化させる及び/又は表示するツール又は別のエンティティと一体化されていてもよい。この場合、DFxテストから最終結果を第3者が望むような態様で得られるように第3者の好みの設定によって、これらのツールが設計されていてもよい。この例では、アプリケーション層1320は、提供されるサービス及びルーチンを使用して、抽象化層1315をプログラムする。層1305におけるテストの結果又は層1315におけるアルゴリズムの出力のような、これらのサービス及びルーチンからの結果は、アプリケーション層1325に渡される。アプリケーション層は、このデータを、解釈(デバッグ)して、人に又はツール解釈のためにデータを表示するプレゼンテーション層に渡す。
図14には、階層化されたアーキテクチャの積層構造を介してDFx機能にアクセスする方法を示したフローチャートの一実施形態が示されている。フロー1405では、第3者のベンダーツールのようなアプリケーションが、抽象化層にプログラムする。ここで、ツール又はその他のエンティティが、抽象化層と関連付けられたAPIによって規定される抽象化層からのサービスを要求/利用する。そして、フロー1410において、そのようなサービスが提供される。ここで、サービスが、抽象化層内のローカルなアルゴリズムを含む場合、情報/データ構造は、アプリケーション層に提供されてもよい。
一方、サービスが、DFx機能又は目的の被試験デバイスとの下層との通信を含む場合には、フロー1415において、高いレベルのトランスポート方法を問わない積層構造(抽象化層及びアプリケーション層)からの情報が、トランスポートに適用される。例えば、この適用は、抽象化層からの情報を、テストポートプロトコル、相互接続プロトコル、ネットワークプロトコル又はインターネットプロトコルのようなトランスポートプロトコルにフォーマットすることを含む。フロー1420において、適用されたフォーマットの通信データが、抽象化層によって要求されたオペレーションを実行する被試験DFXユニットにトランスポートされる。上記で説明したようなあらゆる周知のDFxオペレーションが実行されてもよい。フロー1425において、結果がアプリケーションに供給され、フロー1430において、プレゼンテーション層によって結果が解釈される。
上記に説明したフローの1つの典型例の続きとして、テスト及びデバッグツールが、プロセッサのような被試験ユニットに、マイクロブレークポイントをプログラムするように要求し、マイクロブレークポイントに至るまでに、マイクロブレークポイントにおいて又は後に、トレースが取得されると仮定する。この例において、アプリケーションは、アプリケーション層によって提供されるサービスを呼び出してもよい(フロー1405)。抽象化層は、呼び出されたルーチンを実行し、ルーチンは、マイクロブレークポイント定義及び積層構造体におけるトレース収集方向を送信することを含む(フロー1410)。トランスポート層は、マイクロブレークポイント定義を適用し、テストポートを介してトランスポートされるべきパケットにするといったように、トランスポートからの収集をトレースする(フロー1415)。生成されたパケットは、プロセッサに送信される(フロー1420)。それに応答して、マイクロブレークポイントが、プロセッサの制御レジスタに設定され、トレース情報が要求に応じて収集される。ここで、データの返送には、積層構造を上方向に戻るパス(pass)が含まれてもよく、抽象化層を通過してアプリケーション層に戻るパスを含んでもよい(フロー1425)。別の例として、トレース情報は、トレースバッファとして使用されるメモリに格納されてもよい。アプリケーションは、メモリからトレース情報を読み戻すことができる(フロー1425)。トレース情報を使用して、プレゼンテーションツールは、データを解釈するシミュレーションにおいてプロセッサのトレースを再現することができる(フロー1430)。ここで、抽象化層より下の機能へのアクセスのし易さが確保されている、すなわち、アプリケーションからのロックが解除されていない機能へのアクセス要求、又は、アプリケーションのセキュリティ/権限のレベルを超える機能へのアクセスは、拒否されてもよい。このようなセキュリティ強化構成について、以下に説明する。
[検証アーキテクチャに対するセキュリティの実施形態]
上記したように、テスト、検証及びデバッグアーキテクチャの1つの目的として、設計者又は製造者が、明らかにしたくないと望む低いレベル(階層)における詳細を抽象化(難読化)することが含まれる。しかしながら、一実施形態において、このような詳細の抽象化又は難読化は、"セキュリティ"の観点では十分でない場合がある。もし、抽象化層のみが使用されるとすると、抽象化層APIとの通信方法が決まれば、エンドユーザーを含め誰でもテストアーキテクチャにアクセスできてしまう。したがって、一実施形態では、テストアーキテクチャへのアクセスは、安全な状態に保たれる、すなわち、認証されていない高階層の層からの要求は、許可されない。
図15には、テストアーキテクチャへの安全なアクセスを提供するロジックの一実施形態が示されている。ここで、上記でアプリケーション層又はプレゼンテーション層を参照して説明したエンティティの何れを含んでもよいアプリケーション又はコンソール1515は、パスコード1520を含む。鍵とも称されるパスコード1520は、機能への安全な又は鍵のかけられたアクセス、又は、アクセスのレベルを提供する周知のあらゆる形式の値を含む。最初のやり取りで、又は、要求に続くやり取りで、アプリケーション1515は、VCU1507によって実装されるAPIインターフェースのようなインターフェース1530を介して、自身のパスコード1520を抽象化層に提供する。ここで、アプリケーション1515のトポロジーが、論理的にUUT1505から分離されて示されているが、これは例示に過ぎない。替わりに、UUT1505は、アプリケーションを実行してもよい。VCU1507は、このシナリオでは、UUT1505にアクセスするホストシステム/コンソールとして見なされるデバイス1515に実装されてもよい。
物理的実装形態に関わらず、抽象化層がパスコード1520を受信する時、UUT1505の汎用レジスタ、制御レジスタ又はモデル固有レジスタ(MSR)のような、格納要素1510に格納されているパスコードとアプリケーションパスコードとの比較に基づいて、抽象化層は、アプリケーション1515にアクセスの程度を提供する。一例として、アクセスのレベルが1つのみ存在するとする(フルアクセス又はアクセスなし)。ここで、アプリケーションパスコード1520が、格納要素1510保持されているパスコードと一致する場合、アプリケーション1520は、VCU1507によって実装される抽象化層に提供されている全てのサービス(関連するDFx機能へのアクセス)を利用してもよい。これに替えて、パスコードが提供されていない又は一致しない場合には、アプリケーション1515からの抽象化層への要求は、満たされない/許可されない。
一実施形態では、セキュリティの複数のレベルが提供される。例えば、設計者は、異なる顧客又はベンダーについて、アルゴリズム、プロトコル、データ構造、DFx機能等への異なるアクセスレベルを付与したいと考える場合がある。そして、設計者/製造者は、抽象化層がDFx機能及び関連するUUTをテスト、検証及びデバッグするべく抽象化するDFx機能の低いレベルの詳細への制限されないアクセスを有することを望む。同様に、設計者/製造者は、抽象化層内に完全なアクセスを提供してもよい。
図示されている実施形態では、格納要素1510は、パスコードの3つのレベルを保持する。パスコードの1つ(パスコード1511)は、レベル0アクセス(DFx機能への自由な又は制限のほとんどないアクセス)を提供する製造者パスワードである。パスコード1512で表されている第2のレベル(レベル1)は、テストアーキテクチャへの一部選択的/制限されたアクセスを提供する。そして、パスコード1513で表されている第Nのレベルは、テストアーキテクチャへのより選択的に制限されたアクセスを提供する。ここで、パスコード1512が第3者のベンダー(TPV)に供給されるように、パスコードはそれぞれ、安全に供給される。このように、TPVツールを設計する時には、パスコード1520としてパスコード1512を組み込む又は利用することができる。したがって、アプリケーション1515が認証プロセスを通過する時に(パスコード1520を、VCU1507によって実装される抽象化層又はセキュリティそうに提供する時に)、テストアーキテクチャにレベル1アクセスが提供される。この場合、レベル1アクセスは制限されている。したがって、セキュリティレベル(DFx機能又は制限されている実装詳細へのアクセス)内でないアプリケーション1515からのアクセスは、VCU1507によって拒否される(許可されない)。
図16には、テストアーキテクチャにおける安全なアクセスを提供するフローチャートの一実施形態が示されている。フロー1605において、アプリケーションのアクセスレベルが決定される。一実施形態において、アプリケーションとテストアーキテクチャのアクセスレベルとを関連付けるのに、あらゆる周知の認証プロセスが使用される。別の例では、上記したようなパスコード検証プロセスを使用して、アプリケーションのアクセスレベルを決定する。この決定は、アプリケーション(プログラム開始時の一般的な認証)実行の開始時点で行われてもよいし、特定の要求の発生時に行われてもよい。
フロー1610において、アプリケーションによって、サービス要求が抽象化層APIに提供される。ここで、APIへのサービス要求は一例に過ぎず、要求には、あらゆるサービス要求又はDFx機能へのアクセス要求が含まれてもよい。フロー1615において、要求の種類又は形式に関わらず、決定されたアクセスレベルに基づいて、要求されたサービスが許可されるか否かが判断される。このシナリオでは、特定のサービス、アルゴリズム、プロトコル、DFx機能等は、規定されたセキュリティアクセスレベルに従って、許可可能又は制限されるとして予め定められる。したがって、要求が、アプリケーションの1つのアクセスレベル(又は、より多くのアクセスの1つのレベル)と関連付けられている場合には、フロー1625において、要求が許可され、フロー1630において(サービスの一部分が)被試験DFxユニットにトランスポートされる。反対に、要求が、アプリケーションのアクセスレベル内でない場合には、フロー1620において許可されない。
[検証アーキテクチャへの物理的アクセスの実施形態]
上記したように、ハードウェアテスト機能へのアクセスは、コンピュータプラットフォームの至るところに存在する複数の結合及び接続されていないポートにわたって、分配されている。これにより、プラットフォームをテストするための接続か、煩雑で高価(様々なポートが存在し、これらのポートを接続するのに異なるツールが必要)なものとなっている。したがって、一実施形態では、複数のプラットフォームテストインターフェースの替わりに、ユニバーサルテストアクセスポート(UTAP)が提供されている。図17には、プラットフォームにおけるテストアーキテクチャのためのUTAPの一実施形態が示されている。
プロセッサ1710a−dは、クイックパスインターコネクトのような相互接続1750により共に接続されている周知のプロセッサを含み、PCH1770は、ダイレクト・メディア・インターフェース(DMI)のような相互接続1765を介してプロセッサ1710cと結合されている。図示されるように、VCU1712a−eは、テスト接続又はその他の周知のインターフェースのような相互接続1790で通信を行うことができる。しかしながら、別の実施形態では、上記したように、VCUは、相互接続1750、1765を介して通信を行うことができる。その結果、このシナリオでは、VCU1712a−eは、互いに通信するように適応され、これにより、UTAP1785のような1つの統合されたポートを介して、プラットフォーム1700のVCUテスト機能にアクセスすることができる。ここで、VCU1712a−eは、協働してやり取りを行うことができる。または、UTAP1785からのメッセージを好適な意図したVCUへとルートすることができる。
一実施形態において、UTAP1785はデバッグ情報を(プロセッサと関連付けられたメモリ又はVCUから)抽出し、VCU1712a−eと通信を行う双方向ポートを含む。一例として、UTAP1785は、専用テストポートを含む。別の実施形態では、UTAP1785は、既存のインターフェース(例えば、ユニバーサル・シリアル・バス(USB)インターフェース、シリアルアドバンストテクノロジーアタッチメント(SATA)インターフェース、又は、その他の周知のインターフェース)又は二重に使用できる将来のインターフェースのような別のインターフェースを、抱き合わせする。
図示されているトポロジーは、一例に過ぎない。あらゆる数のプロセッサが含まれてもよい。また、PCHが含まれなくてもよい。加えて、UTAP1785は、コンソール、コンピュータ又はテスタのような外部デバイスを結合する物理的なポートを含んでもよい。別の例として、UTAPは、ネットワークインターフェースデバイス(例えば、NIC)又はホスト又はリモートシステムとの通信を制御する(リモートシステムに関しては、以下でより詳細に説明する)。ここで、制御部は、ベースボード管理制御部(例えば、温度、ファンの速度、電源のステータス等のシステムパラメータを報告する、マザーボードに埋め込まれた埋め込みマイクロコントローラ)を含んでもよく、プラットフォーム1700とのリモート通信を容易にしてもよい。
ユニバーサルテストポートを提供することにより、プラットフォームのテストを(コスト及び複雑性の両面において)単純化することができる。しかしながら、プロセッサのような個別のパーツの現在のテスト場所には、非効率性も存在する。例えば、典型的なプロセッサは、プロセッサの底面側にテスト及び検証用のピンが設けられ、ピンが限定されることから、パッケージ基板が大きくなりコストも高くなっていた。このようなコストを低減させるために、フックのテスト及びデバッグを大幅に省いていた。その結果、顧客がデバッグしきれなかった部分でエラーが発生し、製造者に返品となってしまう場合があった。
したがって、一実施形態では、集積回路(IC)パッケージ基板(例えば、プロセッサ、制御ハブ等)の電子部品等が装着されていない上面の領域、例えば、基板の周辺領域等を利用して、テスト及び/又は検証用のピンの一部又は全てを配置する。一例として、これらのピンは、パッケージ基板の外側の金属層にエッチングされて、ソルダレジストによって露出される。
図18には、大量生産用の接続メカニズムの一例における集積回路パッケージの一実施形態が示されている。この例では、ICは、上側テスト及びデバッグピン1865を含むCPUパッケージ1860を含む。これらのピンは、関連する使用目的に応じて、様々な方法で接続することができる。使用目的が検証及びトラブルシューティングである場合には、圧縮型のコネクタ機構を使用してピンにアクセスしてもよく、コネクタ機構は、コネクタを直接パッケージ基板に配列させるアライメント機能を含んでもよい。これにより、最大限の許容差を得ることができ、ピンの大きさ及び接続システムを可能な限り小さくすることができる。これらの構造には、多くの場合、ソケット1850に受け入れられ合致する構造が含まれ、上面のコネクタとIC1860の基板とを接続させることができる。
HVM接続シナリオのような、図示の接続シナリオでは、二枚貝のような形状のヒンジ固定部1820を含み、それにより、ポゴピン(プローブピン)型の接続のようなIC固定プローブ1835を、上面ピン1865と接続することができる。そして、IC固定プローブワイヤ1810により、固定プローブ1835がコンソール/テスタ1805に接続される。その結果、二枚貝ヒンジ1820によって、接続メカニズムを開いた状態とすることができ、新たなパーツが挿入され、ヒンジ1820が閉じると、テスタ1805と上面テスト/デバッグピン1865との間の接続がなされる。様々な大量生産テストの利用の場合において、このようなパッケージ上面のピンの接続速度は、最小の許容"打ちつけ速度(beat rates)"に維持され、接続方法は、図18に示されるような自動化及び/又は高効率のメカニズムの一種が使用される。
同様にマザーボード1840の接続も図示されており、マザーボード固定ワイヤ1823は、テスタ1805とMB固定プローブ1825とを接続する。また図示するように、ベースプローブ1830は、マザーボード1840のベースに接触している。図示されている二枚貝ヒンジ1820は、一例に過ぎず、プローブ、テスタ、ソケット、HVMツール等のためのあらゆる周知の接続シナリオを採用してもよい。更に、同様なメカニズムを、コントローラハブ又は周辺デバイスのようなその他のICに対して使用してもよい。
図18には、インテグレーテッド・ヒート・スプレッダ(IHS)1870が示されており、一実施形態では、IHSは、上面ピン1865を設けるための領域を作り、その領域において固定プローブ1835との接続を可能としている。図19には、上面試験ピン及びプロービングをサポートする目立たない搭載のための機能を有するヒートスプレッダ(放熱板)の一実施形態が示されている。この例では、パッケージ1907上の集積回路1905は、IHS1910と関連付けられている。一実施形態において、IHS1910は、目立たない程度に突出した"搭載耳部"1911を含む。図では、搭載耳部1911は、直接ソケット搭載(DSL)メカニズム1920のように、ソケットの搭載メカニズムを可能とするような、ソケット作動搭載点を提供する。このような設計を採用することにより、上面を占める面積を小さくすることができ、上記のような検証のための信号ピン/パッドのためのスペースをより多く確保することができる。
搭載耳部1911の外側の、IHS1910の外周部には、IHS1910の外縁に沿った連続的又は非連続的な小さな段が設けられていてもよい。別の例では、外縁は、段を有さなくてもよい。耳部1911が図のように搭載される時、パッケージ1907がソケットに押し付けられて、ソケットが作動し、ソケットとデバイスパッケージとの間の電気的な接続がなされる。耳部の数は、アプリケーション毎の特定の搭載点の数に依存する(図では2つの耳部が示されているが、これに限定されない)。さらに、耳部1911が、図では所定のアプリケーションの搭載点の下(例えば、真下)に位置しているが、IHS1910の真ん中に必ずしも位置する必要はない。耳部1911は、多くの場合(常にではない)、IHS1910における搭載メカニズムによって印加される力が、IHS1910/パッケージ1907を中心に封じ込めるのに十分な作動力となるような位置に配置される。一実施形態において、搭載耳部1910は、搭載メカニズムの搭載ゾーンを完全に覆う特定の長さを有する。例えば、提案されるIHS耳部は、DSL搭載プレート1920の搭載長を覆う1mmから50mmの範囲の長さを有する。IHS1910組み立ての間に、IHSシーラントを、耳部1911の下に配置して、耳部1911を曲げることなく、搭載力をパッケージ1907に移動させることができる。
従来の典型的なIHSは、負荷が十分に分散させてソケットを電気接続させるための始動力となるように、周辺部の90%に搭載の段が設けられていた。これに対し、上記のような搭載耳部を設けることにより、同じ搭載プロセスを、外縁に設けられた少ない数の段を使用して達成することができるので、ICの上面において、テスト/デバッグのためのピン配列及びプロービングのための領域をより広く確保することができる。また、広くなった空間を利用することにより、IHS1910は、多くの負荷が掛かるIHS1910の部分に位置する目立たない搭載耳部1911を有する選択的な形状の棚部を有してもよい。例えば、DSL搭載プレート1920は、IHS1910における段の小さな部分に接触する。したがって、耳部1911は、DSLプレート1920が負荷を掛ける場所に戦略的に配置される。その結果、新たに確保された何も設けられていない空間を利用することにより、パッケージサイズを大きくすることなく又はIHS1910の放熱領域を小さくすることなく、新たな上面テストピンを設けることができる。
放熱に関して、現在の熱マージンを持たせる設計は、大型化しており、大きな面積が使用されてしまい、信号の信頼性を保つためのマージンが小さくなってしまっている。したがって、図20には、熱的マージンを提供するよう設計されたスモールファクター熱的ツール(SFFTT)設計の分解図の一実施形態が示されている。ある実施形態では、このようなマージン化もDFx機能の1つと考えてもよい。SFFTT2000は、次のような1以上の構造を含む。ミニバルク熱電クーラー(TEC)アレイ2025の下部に半田付けされたカスタム冷却板2010、液体金属熱インターフェース材料(例えば、Ga−Sn液体金属材料)を介して未にバルクTECアレイ2025の上面に取り付けられたマイクロチャネル冷却技術を有する水冷器2040、均一な水流の分配を提供する固有チャネル設計されている水冷器2040のカバー、デバイスの中心部において、水の流入・流出(流入2050及び流出2060)、制御部に対するワイヤ・ハーネス・アセンブリ、制御部に温度のフィードバックを提供する冷却板2010の中心に埋め込まれたT型の熱電対、TECクラッキング対策のために水冷器2040と冷却板2010との間に設けられるスペーサ2020、実験用回路基板2035を使用してワイヤのストレスを軽減するTEC2025のケーブル管理、及び、温度スイッチのような構造が挙げられる。
このような構造は、SFFTTに対して有益な構成を与えうる。例えば、マイクロチャネル冷却技術を採用した水冷器2040では、ダイヤモンドフィン技術の設計よりも、効率的に冷却できる。水冷器のカバーの固有のチャネル設計と共に、流入口と流出口(250、260)とをSFFTT2000の中心に配置させることにより、中心からブロックへと冷やされた水を流入させ、温められた水は冷却器の側面を通過させることができるため、冷却のチャネルの長さは、その他のダイヤモンドフィン型の設計と比較して半分で済む。その結果、TEC2025及び被試験シリコンによって生成される熱により典型的に最も熱が集中する中心部に、最も冷却できる領域を配置させることができる。そして、最終的には、水冷器における温度差を3℃ほど減少させることができ、温度分布が均一になるため、TEC2025の信頼性が高まる。別の例では、冷却板2010をミニバルクTEC2025に取り付けることにより、熱抵抗の層を低減させることができる。さらに、水冷器2040と冷却板2010との間のスペーサ2020は、バルクTECの場合に生じるTEC2025のクラッキングの問題を防ぐことができる緩衝メカニズムを提供する。実験用回路基板2035を使用したケーブル管理は、ワイヤ(配線)ストレスを緩和し、TECのリード線の故障率を低減させることができる。
更に説明するため、上記の構造の詳細例を以下に記載する。第1の例として、ミニバルクTECアレイ2025は、最大放散温度が75℃、設置面積が15cm2の最大39mm×39mmの大きさの領域を含む。さらに、アレイ2025に、いかなる数のTECが接続されてもよい。一実施例として、11個のTECの2つの組が直列に接続され、別の11個のTECの2つの組が並列に接続される。水冷器2040のマイクロチャネルフィン設計は、ダイヤモンドフィンの円形の冷却パターンではなく、垂直方向(又は水平方向)の冷却チャネルを提供する。チャネル/フィンは、いかなるサイズであってもよい。例えば、フィンは、高さが2mm、幅が0.3mm、そして0.3mmの間隔で設けられたものであってもよい。水冷器2040の様々な設計のシミュレーションの一例において得られた性能の概要が、表1に示されている。
同様なシミュレーションで、マイクロチャネル水冷器技術によれば、速度分布及び温度分布が改善されることが確かめられている。この改善により、同様な温度マージン(5℃−100℃)を提供すると同時に、従来の熱マージンデバイスと比較して、SFFTTのサイズを40−50%小さくすることができる。さらに、フォームファクターが小さくなることにより、ボード上の占有面積を小さくすることができ、それにより、チップ同士を近接して配置できるようになることから、信号品質(SI)マージンを改善することができる。SIマージンにおける改善により、全てのマーケットセグメントのトレンドが、製品の小型化を加速させると考えられる。また、水冷器のカバーにおける固有のチャネル設計により、均一な水流分布を提供でき、それにより、TECの信頼性を向上させることができる。さらに、障害部分を分離し、製造者及びベンダーのポストシリコンデバッグ/検証活動の一部として漏れを低減できることから、故障検出の速度を上げることができると考えられる。ベンダーが温度のマージン化の能力を備えることにより、製造者は性能における競争力をつけることができる。また、ベンダーによる検証で発見された事項は、製造者が電気的検証をより効率に行うために有用な情報となり得る。そして、よりエンドユーザーに優しい製品を提供することが可能になると考えられる。
[検証アーキテクチャへのリモートアクセスの実施形態]
以前は、製造者は、多大な資源(時間、人員及び資金)を費やして、ベンダーがデバッグするのを援助していた。実際に、ベンダー自身で、発生した問題のテスト及びデバッグを行えない場合には、製造者/設計者は、ベンダーの工場に検証を行うエンジニアを派遣していた。部品及びプラットフォームの複雑さが増し、検証及びデバッグのプロセスはベンダーにとってさらに難しいものとなり、製造者にとっても煩雑なプロセスとなってきている。したがって、一実施形態では、検証アーキテクチャは、テスト、検証及び/又はデバッグプロセスを助けるリモートアクセスを可能とする。
図21には、被試験ユニットへのリモートアクセスの一実施形態が示されている。上記したように、テストアーキテクチャ積層構造が、複数のマシーン(及びネットワーク)にわたって実装されてもよい。ここで、リモートホスト2105は、上記したような、ツール2106(テスト、検証及びデバッグツールを有するアプリケーション層)及び抽象化層2107を含む/実装する。層2106、2017からの伝達情報は、リモートインターフェース、ネットワークインターフェース、周辺機器インターフェース等の周知のインターフェースを含むインターフェース2130を介して提供される。一実施形態では、このような伝達情報は、周知の暗号化アルゴリズム2150に従って暗号化される。さらに、別の実施形態では、トランスポートに、VPN暗号化2110が使用される。このシナリオでは、ローカルホスト2115(すなわち、リモートホスト2105とある態様で結合されるホスト)は、トランスポート方法を感知しない層2106、2107をトランスポートのために採用するべく、トランスポート層2116を被試験ユニット(UUT)2120に実装する。したがって、上記したテスト、デバッグ、検証及びセキュリティオペレーションは、リモートホストから被試験ユニットのインターフェースに実装されてもよい。
図22を参照して、被試験テストにリモートアクセスする別の実施形態を説明する。この例では、リモートホスト2205は、3つの層(2206、2207及び2208)を含み、被試験ユニット(UUT)2220との暗号化されたチャネルを介した直接通信を行う。例示されたレイアウトとは異なり、リモートで被試験ユニットとインターフェースするべく、あらゆる結合又はレイアウトを実装してもよい。また、チャネルの設定に、あらゆる認証プロセスを利用してもよい。セキュリティプロトコル(上記したようなプロトコルと同様な)を利用して、様々なレベルのアクセスを検証してもよい。その結果、ベンダー又は製造者は、ユニットに物理的に結合することなく、リモートで、デバイスのテスト、検証又はデバッグを行うことができる。このように、検証を行うエンジニアを物理的にベンダーの工場に派遣することなく、リモートでテスト/デバッグに関連する時間及び費用を大幅に低減させることができる。
[収集情報管理の実施形態]
フックのテスト、検証及びデバッグの実施形態の章で説明したように、プロセッサ、制御ハブ又はその他のデバイスのODLAは、一実施形態では、トレース情報のようなオンダイ及び/又はインターフェース情報を収集することができる。メモリをトレースバッファとして使用するといったように、あらゆる態様で情報を伝達してもよい。あるいは、以下で詳細に説明するように、ロジックは、サイドバンド通信バスのようなインターフェースを介して、このようなデータを提供してもよい。そして、情報が、管理(フォーマット、操作、解釈、デバッグ等)のためのツールに提供される。
また、上記したように、パーツを収集及び分析する外部の解析装置を使用するのは複雑でありコストがかかる。例えば、PCIeインターフェースのような複雑なインターフェースのプロトコル解析装置は、50,000ドルもの値段になる場合がある。高速シリアルインターフェースを介したインバンドメッセージングの一部のように、レガシー信号が統合されるにしたがい、マザーボード上で情報が簡単に利用できなくなってきる。そこで、図23には、JTAG又はSMBusのようなサイドバンドバス上で、トレース情報をホストシステムに提供するロジックの一実施形態が示されている。取得されるレガシーインバンド信号の例には、TRDY2321、INTR2322、SMI2323及びSTPCLK2324が含まれる。この例では、PCH2320におけるODLA2330は、上記の信号のトレースを取得する。ホストシステム2360又は埋め込み制御部2340(例えば、抽象化層を実装するVCU)の指示によるピンの切り替え、ブレークポイントイベントの設定等のイベントに応答して、トレースを取得してもよい。制御部2340は、信号についてデータを取得し、それを、サイドバンドバス2350を介してホストシステム2360に提供する。一例として、このデータの形式としては、対応する信号が、高い状態を保っているか、低い状態を保っているのか、切り替わるのか、切り替わる方向又は切り替え頻度を示す情報を含む。この例では、データを処理する埋め込み制御部2340、及び、観察する様々な内部信号を選択するODLA2340の機能により、ハードウェアに変更を行うことなく、デバッグ能力を更新することができる。
図24には、内部観察トレース(IOT)データを管理する方法を示すフローチャートの一実施形態が示されている。フロー2405において、システムでテストが実行される。例えば、上記したようなテストを、被試験ユニットに実行してもよい。そして、ODLA(オンチップロジック分析器又はOCLAとも称される)のようなロジックから、IOTデータが取得される。IOTデータは、複数のストリーム/ソース(例えば、メモリ、I/O、オンコアインターフェース等)を含んでもよい。
フロー2410において、IOTデータがダンプされる。例えば、被試験ユニットと関連付けられているメモリを、IOTデータのためのトレースバッファとして使用する。しかしながら、IOTデータを扱う/解釈するコンソール又はホストシステムのようなシステムにデータをダンプ/提供するのに、周知のいかなるインターフェースを利用してもよい。
フロー2415において、IOTデータからトレースデータを再構築して、再生を可能にする。トレースを再構築する及び/又はトレースデータをフォーマットするあらゆる周知の方法を利用してもよい。図25には、トレースの構築の一実施例が示されている。この例では、IOTデータの形式がデコードされる。あるシナリオでは、IOTデータは、特定の規定された形式の複数のストリーム/ソースを含む。フロー2505において、このような形式に従ってIOTデータがデコードされる。一例として、IOTデータに対してソースが特定される。そして、フロー2510において、ソースによって、IOTデータが、分離されグループ化されて、収容(bucketed)される。
各ソースに対するモジュール(サービス)、例えば、メモリソースIOTデータに対するメモリモジュール、プロセッサトレースIOTデータに対する内部プロセッサモジュール、クイックパス(Quickpath)インターフェースIOTデータに対するクイックパスモジュール、オンコア相互接続の環状トラフィックのためのオンコアモジュール等はフロー2515、2520において、対応する各ソ−スに対するトランザクションを再構築する。さらに、一実施形態では、フロー2525において、モジュールは、再構築されたトレースデータを、再生するためにフォーマットし直す。図24に示すように、フォーマットされ再構築されたトレースデータが再生される。その結果、再生によって、検証及びデバッグのための被試験ユニットのオペレーションに対する洞察を提供することができる。
その結果、デバックに掛かる時間及びコストを低減させることができ、製品開発サイクルを増加させることができる。また、再生することにより、ソフトウェアメカニズムは、上記のテストアーキテクチャのような同一の又は同様なDFxの方法を含む製品に対するエミュレーション環境において、バグを再生することができるようになる。エミュレーション環境において、このようなバグを再生することで、被試験システム内におけるシステムの全振る舞いを完全に可視化できるようになり、デバッグを早く行うことが可能となる。そして、ロジック及び経路の境界性(marginality)についてのバグを解消の一助となる。また、同様な装置及び方法を使用して、大量生産用のテスト内容を開発してもよく、大量生産の場合の迅速で効率的なテスト内容を提供することができ、製品の安定性を高め、部分的に在庫管理を助けることから、コストを削減することができる。
図26には、後処理の相違(divergence)を検出する方法のフローチャートの一実施形態が示されている。上記したように、被試験システムでテストが実行される時(フロー2605)、データが収集され、全く同じテスト条件をエミュレーション/シミュレーション環境(上記の図24−25を参照して説明した同様な方法で動作する環境、フロー2610−2625)に再生するのに収集されたデータを使用することができる。このプロセスから、検証では、ハードウェアで実行されるテストとソフトウェアモデルにおけるテストとの間の違いを検出することができ、これらの違いが、相違(divergence)と称される。後処理相違検出は、OCLAを使用したIOTのような、DFxハードウェア機能を活用して、システムの状態を保存する。テストが再生される時に、エミュレーションにおけるIOTに格納されているデータ(再生IOTデータ2635)は、再生の後に処理されて、被試験システムから収集されたIOTに格納されているデータ(収集済みIOTデータ2615)と比較され、後処理相違検出結果2640が取得される(すなわち、データ2615と再生データ2635との間の違いが取得される)。実行には高価で特別なハードウェアが必要となることから、再生の間の実行時間はコストが掛かる。したがって、このような再生の間の相違を計算することは、費用の高い実行時間を費やすことになると考えられる。そこで、一実施形態では、システムメモリのような内部のロケーションに保存したシステムステートを使用し、再生段階が完了した後に、費用の高くないハードウェア上で別にデータを処理する。
図27には、RTLデータ構造を高レベルの言語にアクセス可能とするフローチャートの一実施形態が示されている。被試験システムからトレースデータが収集される時、通常、収集された特定のデータフィールドが分析され、分析には、トレースからの修正を含む。RTLは絶え間なく変化するため、RTL周辺に設計されたソフトウェアは、常に更新する必要がある。したがって、一実施形態では、ソフトウェアがリリースされる時(フロー2705)、RTLモデルは、ソフトウェアリリースの時点でスキャンされる(例えば、フロー2710において、RTLデータのスナップショットを取得する)。スナップショットから、RTLデータ種類が、例えば、XMLのような、より一般的な形式で記録される。この例では、フロー2715において、RTLデータ構造スナップショットデータベースがRTLスナップショットデータから生成される。
RTLデータが格納される(すなわち、データベースが生成される)と、スナップショットRTLデータ種類定義に基づいて、トレースデータパケットを読み出し、マスク及び修正するソフトウェアメカニズム/サービスが提供される。トレースがどのRTLモデルに由来するのかに基づいて、読み込むスナップショットを選択することにより、重要度の低いRTL変更の影響をその他のソフトウェアに与えないようにすることができると考えられる。一例として、ソフトウェアが、そのRTLモデルを使用してテストからのトレースデータを解釈又は修正する時(フロー2720)、ソフトウェアは、RTLデータ構造のデータベースを必要とし(フロー2725)、その情報をトレースデータ(フロー2730)のでコードに使用する。その結果、定常的なRTLモデルに依存しソフトウェアを変更する替わりに、RTLデータ構造のための柔軟性の高い適応可能なテスト基盤(パケット及び信号形式のモデル)が提供される。
[電源検証の実施形態]
ロジックの数が増加し回路が小さくなるにしたがって、回路に発生する問題が急増している。回路のバグは、検出できない場合がある。また、高速でない経路の問題として回路の故障を再生可能とするような、良好な特性評価方法は現在のところ存在しない。そこで、一実施形態では、回路境界性検証(circuit marginality validation:CMV)方法を利用して、高速でない経路及び高速の経路における問題を発見する。回路境界性の主要な要因には、オンダイ信号信頼性(クロスカップリングに起因するノイズ、ドループ(droop)イベントに起因するノイズ)、電力供給の信頼性(多くの場合、クロックの開閉に起因する高い続流の発生)、クロックドメインの交差(クロックの非同期)、及び、プロセス、電圧及び温度の変化(電力状態の遷移、シリコンプロセスの変化)が含まれる。
過去、数世代に渡るプラットフォーム検証管理製品分析に基づくと、送電網(power grid)は、回路のマージン性の大きな要因となっている。そこで、一実施形態では、オンダイイベントに関係する送電網の空間的及び時間的特性評価及びデバッグを可能とする基盤であって、送電網性能とテスト及びシステムイベントとを相関付ける能力を含む基盤を提供する。
図28には、そのような基盤の一実施形態が示されている。この例では、包括的で一体化された(オンダイ)アーキテクチャであって、時間ベースの空間的な制御及びオンダイ電圧調整を観察を可能とし、このようなイベントを確定的にテスト内容及びシステムイベントと相関付ける能力を有するアーキテクチャを提供する。図示されるように、アーキテクチャ2810は、VCU2815によって実装されていてもよい(上記のような)抽象化層2805を介して、ホスト2800と結合していてもよい。
アーキテクチャ2800の構成要素には、高バンド幅オンダイ電圧ドループ監視機能(VDM2830)及びドループ注入メカニズム(ODI2835)(一実施形態では、これらの両方が、時間的及び空間的に構成されるように採用される)、クロック周期固有のテスト内容同期基盤、決定論的イベント始動及びクロック周期の正確な時間を監視する基盤(DSC2840)(一実施形態では、これらの構成により、イベントのタイムスタンプ及び再生が可能となる)、イベントと相関するVRステート取得のためのODLAのようなダイナミックオンダイ電圧制御ステート取得機能、設定可能ハードウェアベースのペイロード修正メカニズム(マイクロブレークポイントロジック2830)、修正メカニズムは、システムイベント、テストイベント、及び/又は所定の電力ドメイン又はユーザー/ホスト2800の最良によるドメインにおける電力ステートの遷移において開始されてもよい。
アーキテクチャの機能に関する不完全なリストには、ODI/VDM/システム(I/O又はコア)イベントを、A/Dサンプルを介したアナログ観察点のスナップショット及びステートマシーンイベントの動的スナップショットのような、オンダイ電圧制御間隔の観察と相関付ける機能、ハードウェアベースのペイロード変更を確定的に開始させる機能、ODI及び/又はVDM始動イベントと内部VRイベントとを同期させる機能、内部VRイベントを中断させる機能、内部VRイベントのタイムスタンプを取得する機能、電力管理コマンド問題と実際のVR変化との間の遅延を監視する機能、VDM/ODI変化を観察する機能、インバウンドの現在の振る舞いと内部イベントとを相関付け、ギア比の変化及び電力分配の効果を観察して、デューティサイクルの検出間隔の計算を提供する機能が含まれる。
アーキテクチャのアプリケーション及びモードの不完全なリストには、送電網の特性解析、システムイベントベースの相関、及び、電力イベントベースの相関が含まれ、これらについては以下で例示される。送電網の場合、特性解析は、ユーザーが柔軟に選択できる、あらゆる方法で行われてもよい。基本的に、このオペレーションモードにある電圧監視回路は、時間軸で電圧を取得するように予め設定されている。電圧は、短時間の期間の間に、リング発振器の振動数を数えることで測定される。テスト又はその他のシステムの動作が行われている時に、特性解析サイクルの間全体におけるサンプルを比較することにより、所定の電力ドメインの局所的場所における最も高いピークと最も低い谷が取得される。ここで、特性解析は、システムが休止状態にある間、ブートサイクルにある間、テストの間、又は、あらゆるシステムイベントの間で実行されてもよい。特徴解析は、いかなる/全てのドメインと同時に行われてもよい。
システムイベントベースの相関の場合には、テストシーケンスの開始(又は、対象のシステムイベント)と送電網サンプリングの開始とを同期させるマイクロブレークポイント基盤を使用して、障害点又は巡回冗長検査(CRC)障害(図示の例のような)のような特定のシステムイベントの発生点で、経過時間が取得される。そして、設定可能な態様でオンダイ電圧制御性能を評価するべく、テストシーケンスが確定的に再生され、所定の始動イベントの前、間、又は後に、所与のクロックサイクルを見ることができる機能も与えられる。アナログポイント及びステートデータのデータ収集は、時間における所定の瞬間に、又は、対象の始動イベントに基づく位置において、動的に取得されてもよい。その結果、始動イベント及びアクションが、電力制御ブロック、電力管理、又は、テスト/システム固有のイベントによって提供されてもよいといったように、多様な柔軟性をアーキテクチャに備えさせることができる。
電力イベントベースの相関の場合には、オペレーションは、システムイベント相関と同様である。マイクロブレークポイントのような基盤が、電圧制御回路と一体化することにより、VDM2830を介した送電網のサンプリング及び/又はODI2835を介したドループイベントの投入で、数多くのシステムイベントを開始することが可能となる。このモードにおける始動イベントは、一実施形態では、典型的には、特定の電力イベント又はステートで開始される。
本明細書で用いられたモジュールという言葉は、任意のハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせを意味する。別個のものとして図示されているモジュールの境界は、通常変わることが多く、重複する可能性もある。例えば、第1のモジュール及び第2のモジュールは、ハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせを共有しているとしてもよいし、独立したハードウェア、ソフトウェア又はファームウェアを持つとしてもよい。一実施形態では、ロジックという用語は、例えば、トランジスタ、レジスタのようなタスクを実行するべく組み合わせられる及び/又は構成されるハードウェアを含む。別の実施形態では、ロジックという用語は、プログラム可能な論理デバイス又はプログラム可能なロジックアレイのようなその他のデバイスを含む。しかしながら、更なる別の実施形態では、ロジックはまた、ハードウェアと一体化されたソフトウェア又はコード、例えば、ファームウェア又はマイクロコードを含む。
また、本明細書で使用されている"値"という言葉は、数、状態、論理状態又は2値論理状態のあらゆる既知の表現を含む。また、明細書で使用されている論理レベル、論理値、又は論理的値は、1又は0といった単純に2値論理状態を意味している場合もある。例えば、1は高い論理レベルを指し、0は低い論理レベルを指す。一実施形態では、トランジスタ又はフラッシュセルのような記憶セルは、1つの論理値又は複数の論理値を保持可能であってもよい。しかしながら、コンピュータシステムにおける値の他の表現が使用されてもいる。例えば、10進数の10は、2進値表示では、1010と表され、16進数表示ではAと表される。したがって、ある1つの値は、コンピュータシステムに保持される情報のあらゆる表示形式を含む。
さらに、状態(ステート)は、値又は値の一部によって表されていてもよい。例えば、論理値の1のような第1の値が、デフォルト状態又は最初の状態を表していてもよく、論理値の0のような第2の値が、非デフォルト状態を表していてもよい。加えて、リセット及びセットという言葉はそれぞれ、ある実施形態では、デフォルト値又は状態及び更新された値又は状態を指す。例えば、デフォルト値は、高い論理値、すなわち、リセットを含んでもよく、更新値は、低い論理値、すなわち、セットを含んでもよい。値のどのような組み合わせを、あらゆる数の状態を表すのに利用してもよい。
上記の方法、ハードウェア、ソフトウェア、ファームウェア、コードの実施形態を、機械アクセス可能な又は機械可読な媒体に記憶され、処理要素によって実効可能な命令又はコードを使用して実装してもよい。機械アクセス可能/機械可読な媒体としては、コンピュータ又は電子システムのような機械によって読み出し可能な形式の情報を提供する(すなわち、記憶及び/又は送信する)あらゆるメカニズムを含む。例えば、有形機械アクセス可能媒体には、スタティックRAM(SRAM)若しくはダイナミックRAM(DRAM)のようなランダム・アクセス・メモリ(RAM)、ROM,磁気的又は光学的記憶媒体、フラッシュメモリデバイス、電気記憶デバイス、光学記憶デバイス、音響的記憶デバイス、又は他の形態の伝播信号(例えば、搬送波、赤外線信号、デジタル信号)記憶デバイス等が含まれる。
上記した方法、ハードウェア、ソフトウェア、ファームウェア又はコードの実施形態は、機械可読媒体に格納されたコンパイラの実行によって、又は、コンパイラによってコンパイルされた機械可読媒体に格納されたコードの実行の一部として、実装されてもよい。コンパイラは、多くの場合、プログラム又はプログラムのセットを含み、ソーステキスト/コードを、目的のテキスト/コードへと変換する。通常、プログラム/アプリケーションコードをコンパイラを使用してコンパイルする場合には、高水準プログラム言語コードを、低水準機械言語コード又はアセンブリ言語への変換する複数の段階又はパスに分けて実行される。しかしながら、簡単なコンパイルには、単一パスのコンパイラを使用することもできる。コンパイラは、既知のコンパイル技術を利用して、字句解析、前処理、構文解析、意味解析、コード生成、コード変換及びコード最適化のような、既知のコンパイルオペレーションを実行してもよい。一実施形態では、コンパイラは、上記の方法を実行するべく、オペレーション、呼び出し、機能、命令等を挿入するコードをコンパイル及び/又は最適化する。
大きなコンパイラは、多くの場合、複数の段階を含み、これらの複数の段階は、主に大きく分けて2つの段階に含まれる。(1)フロントエンド、すなわち、通常、構文処理、意味処理及び幾つかの変換/最適化が実行される段階、(2)バックエンド、すなわち、通常、解析、変換、最適化及びコード生成が実行される段階の2つである。コンパイラの中には、ミドルエンドと呼ばれるものも存在し、これは、フロントエンドとバックエンドのコンパイラとの間の境界を曖昧にした例である。挿入、関連付け、生成又はその他のコンパイラのオペレーションの参照は、上述の段階又はパス、及びその他のコンパイラの段階又はパスのいずれかにおいて実行される。一実施形態では、このようなシナリオは、スタティック及び/又はプログラム全体のコンパイルの間に発生する。別の実施形態では、動的コンパイルの間に、コンパイラコード又は動的最適化コードが、このようなオペレーション/呼び出しを挿入すると共に、ランタイムの間の実行のためのコードを最適化する。あるシナリオでは、コンパイラプログラムのようなハードウェア又はソフトウェアが、プログラム実行の動的プロファイリングを実行してもよい。
また、本明細書における「一実施形態」又は「ある実施形態」という言葉は、実施形態に関連する特定の特徴、構造及び特性が、少なくとも本発明の実施形態の一つに含まれていることを意味する。したがって、本明細書中の様々な箇所で使用されている「一実施形態において」又は「ある実施形態において」という表現は、必ずしも同一の実施形態を示していない。また、1以上の実施形態において、特定の構成、構造又は特徴を、適切な形で組み合わせてもよい。
明細書の上記において、特定の例示された実施形態を参照して、詳細な説明がなされた。しかしながら、添付の特許請求の範囲に記載される本発明の範囲内において、様々な変形及び変更を加えることが可能であることは、明らかである。したがって、明細書及び添付の図面は、発明を制限するものではなく、発明を例示するものであると見なされるべきである。また、上記の実施形態及び他の例で使用された言葉は、同じ実施形態又は同じ例を必ずしも指している必要はなく、異なる及び別の実施形態を指している場合もあるし、同じ実施形態を指している場合もある。