(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-06
(45)【発行日】2025-02-17
(54)【発明の名称】デバッグ状態機械にトリガされる拡張パフォーマンスモニタカウンタ
(51)【国際特許分類】
G06F 11/22 20060101AFI20250207BHJP
G06F 11/30 20060101ALI20250207BHJP
G06F 11/34 20060101ALI20250207BHJP
G06F 11/36 20250101ALI20250207BHJP
【FI】
G06F11/22 636
G06F11/30 182
G06F11/34 180
G06F11/362 156
(21)【出願番号】P 2022533079
(86)(22)【出願日】2020-12-04
(86)【国際出願番号】 US2020063269
(87)【国際公開番号】W WO2021118876
(87)【国際公開日】2021-06-17
【審査請求日】2023-11-07
(32)【優先日】2019-12-09
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ティム パーリー
【審査官】坂庭 剛史
(56)【参考文献】
【文献】米国特許出願公開第2014/0245076(US,A1)
【文献】特表2013-545203(JP,A)
【文献】特開2007-206759(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/22
G06F 11/263
G06F 11/30
G06F 11/34
G06F 11/362
G01R 31/317
(57)【特許請求の範囲】
【請求項1】
デバッグ相互接続[110]上にデバッグデータ[122]を選択的に出力するように構成されたデバッグコントローラ[102]と、
前記デバッグデータに基づいてイベントを識別し、前記イベントを識別したことに応じてDSM指標[124]を出力するように構成されたデバッグ状態機械(DSM)[104]であって、プログラム可能なイベント情報に基づいて前記イベントを識別するように構成されたDSMと、
前記識別されたイベントを含む複数の検出されたイベントを示すように構成された拡張パフォーマンスモニタカウンタ(EPMC)[106]であって、前記DSM指標に応じて、識別されたイベントを示すように構成されたEPMCと、を備える、
集積回路(IC)[100]。
【請求項2】
前記EPMCは、イベントベース割り込みデータ[126]を受信したことに応じて、イベントデータ[128]を出力するようにさらに構成されており、
前記イベントベース割り込みデータは前記デバッグデータと異なる、
請求項1のIC。
【請求項3】
前記DSMは、少なくとも1つのパイプライントリガ[210]に基づいて前記イベントを識別するようにさらに構成されている、
請求項1又は2のIC。
【請求項4】
前記DSMは、基本入出力システム(BIOS)の更新又はセキュアファームウェアの更新を介して、前記プログラム可能なイベント情報を受信するように構成されている、
請求項1~3の何れかのIC。
【請求項5】
前記DSMは、ユーザから前記プログラム可能なイベント情報を受信するように構成されている、
請求項1~4の何れかのIC。
【請求項6】
前記識別されたイベントは複数条件イベントであり、
前記DSMは、前記デバッグデータが前記識別されたイベントの最後の条件を示していると判断したことに応じて、前記DSM指標を出力するようにさらに構成されている、
請求項1~5の何れかのIC。
【請求項7】
前記DSM指標は、前記識別されたイベントの最初の条件と前記識別されたイベントの前記最後の条件との間に経過したサイクルのカウントを含む、
請求項6のIC。
【請求項8】
前記識別されたイベントを示すことは、前記識別されたイベントを説明するデータをメモリデバイスのイベントログに記憶することを含む、
請求項1~7の何れかのIC。
【請求項9】
前記識別されたイベントを示すことは、前記イベント
を説明するデータをユーザインタフェースに送信することを含む、
請求項1~8の何れかのIC。
【請求項10】
デバッグ状態機械(DSM)[104]によって、デバッグ相互接続[110]を介して第1のデバッグデータ[122]を受信することと、
前記DSMによって、前記第1のデバッグデータを、前記DSMに記憶されたイベントリスト[304]と比較することと、
前記第1のデバッグデータが前記イベントリストの第1のエントリの第1の部分に一致することに応じて、第1のイベントが検出されたことを示すDSM指標[124]を拡張パフォーマンスモニタカウンタ(EPMC)[126]に送信することと、を含む、
方法。
【請求項11】
前記第1のデバッグデータを受信する前に、前記DSMによって、前記第1のエントリの第2の部分に一致する第2のデバッグデータを受信することをさらに含み、
前記第1のエントリは複数条件イベントに対応し、前記第1のエントリの前記第1の部分は、前記複数条件イベントの最後の条件に対応する、
請求項10の方法。
【請求項12】
前記DSM指標を送信した後に、前記DSMによって、前記イベントリストの更新を受信することをさらに含む、
請求項10又は11の方法。
【請求項13】
前記イベントリストの更新を受信した後に、前記DSMによって、前記デバッグ相互接続を介して第2のデバッグデータを受信することと、
前記DSMによって、前記第2のデバッグデータを前記イベントリストと比較することと、
前記第2のデバッグデータが前記イベントリストの前記第1のエントリの更新された第1の部分と一致することに応じて、第2のイベントが検出されたことを示す第2のDSM指標を前記EPMCに送信することと、をさらに含み、
前記第2のイベントは前記第1のイベントと異なり、前記DSM指標は前記第2のDSM指標と同じである、
請求項12の方法。
【請求項14】
前記イベントリストの更新を受信することは、基本入出力システム(BIOS)の更新又はセキュアファームウェアの更新を介して前記更新を受信することを含む、
請求項12又は13の方法。
【請求項15】
前記イベントリストの更新を受信することは、ユーザから前記更新を受信することを含む、
請求項12~14の何れかの方法。
【発明の詳細な説明】
【背景技術】
【0001】
集積回路(IC)の複雑さが増すにつれて、それらのICのテスト、監視及びデバッグがより複雑になる。自動試験装置(ATE)とロジックアナライザを使用して、製造されたチップに所定の入力値を提供する。エラーが検出されると、対象の信号がタップされて原因が特定される。多くの場合、このプロセスは時間及び労働集約的である。オンチップロジック及びパフォーマンスモニタカウンタ(PMC)が、ICのデバッグ、検証及びパフォーマンスプロファイリングを支援するために使用される。PMCは、チップ検証中と通常動作中の両方で、特定のイベントの発生を追跡及び示すために使用される。ただし、ICを物理的に再設計することなく、従来のPMCは、通常、相対的に小規模な選択されたイベントのみを追跡する。
【0002】
本開示は、添付図面を参照することによって、より良好に理解され、その多くの特徴及び利点が当業者に明らかになる。異なる図面で同一の符号が使用されている場合には、類似又は同一のアイテムを示している。
【図面の簡単な説明】
【0003】
【
図1】いくつかの実施形態による、デバッグ状態機械及び拡張パフォーマンスモニタカウンタを含む集積回路の実施形態のブロック図である。
【
図2】いくつかの実施形態による、デバッグ状態機械及び拡張パフォーマンスモニタカウンタを含む集積回路の別の実施形態のブロック図である。
【
図3】いくつかの実施形態による、例示的なデバッグ状態機械を示すブロック図である。
【
図4】いくつかの実施形態による、イベントを検出し、拡張パフォーマンスモニタカウンタにデバッグ状態機械表示を提供する方法を示すフロー図である。
【
図5】いくつかの実施形態による、デバッグ状態機械によってトリガされる拡張パフォーマンスモニタカウンタを含む処理システムのブロック図である。
【発明を実施するための形態】
【0004】
本明細書で説明するように、様々な実施形態において、集積回路(IC)は、拡張パフォーマンスモニタカウンタ(EPMC)に表示を送信する少なくとも1つのデバッグ状態機械(DSM)を含む。より具体的には、DSMは、(例えば、デバッグ相互接続を介した)デバッグデータ、パイプライントリガ(例えば、1つ以上の知的財産(IP)デバイスからのデータ)、又は、その両方を受信する。DSMは、記憶されているイベントリストと受信したデータとを比較する。比較が、イベントリストで指定されたイベントが発生したことを示すことに応じて、DSMは、DSM指標をEPMCに送信する。EPMCは、ICインタフェースを介して、指定されたイベントが検出されたことを示す。したがって、指定されたイベントは、デバッグデータ、パイプライントリガ又はその両方に基づいて検出及び示される。場合によっては、デバッグデータ、パイプライントリガ又はその両方に基づいて生成された情報を検出して示すことで、パフォーマンスプロファイリング、デバイスデバッグ、検証カバレッジ(validation coverage)、又は、プロダクションワークアラウンド(production workarounds)のための追加オプションが提供される。
【0005】
いくつかの実施形態では、DSMのイベントリストは、直接ユーザ入力、基本入出力システム(BIOS)の更新、又は、セキュアファームウェアの更新等によって調整可能である。いくつかの実施形態では、イベントリストは、ストレージデバイスに一緒に記憶された条件の正式なリストではなく、(例えば、様々な指定されたイベントに対応する)様々な特定の信号又はトリガのセットが受信された場合に、対応するイベントが検出されたという指標を生成するハードウェアの構成である。その結果、場合によっては、DSMは、DSMを変更する前と比較された、様々なイベントの発生をEPMCに示す。さらに、EPMCは、様々なイベントの発生の指標を出力する。したがって、場合によっては、EPMCによって報告されるイベントのリストは、EPMCの製造後に変更され、追加のチップ柔軟性を提供する。
【0006】
一部のICは、通常、デバッグ相互接続、パイプラインデバイス(例えば、IPデバイス)又はその両方に接続されていないパフォーマンスモニタカウンタ(PMC)を含む。このようなシステムでは、PMCは、イベントベースの割り込み等のように、他のソースから受信したデータを示すことに限定される。例えば、PMCは、出入りした特定の電力状態をカウントするが、一部のシステムではデバッグ相互接続でそのような情報を利用できる場合でも、各電力状態で費やされたクロックサイクル数を示さない。さらに、場合によっては、PMCは、PMCの製造の一部として固定のアーキテクチャを有する。その結果、これらのICでは、PMCは、デバッグ相互接続、パイプライントリガ又はその両方によって示される少なくとも一部のイベントを含まない、固定のイベントリストを示すことに制限される。場合によっては、ユーザ又はプログラマが、デバッグ相互接続、パイプライントリガ又はその両方によって通知されたイベントの表示を受信するか、又は、PMCの製造後にPMCによって示されるイベントを変更することが望ましい。
【0007】
図1は、いくつかの実施形態による、IC100を示す図である。図示した実施形態では、IC100は、デバッグコントローラ102と、DSM104と、EPMC106と、を含む。デバッグ相互接続110は、デバッグコントローラ102をDSM104に接続する。DSM-EPMC相互接続112は、DSM104をEPMC106に接続する。図示した実施形態では、明確にするために3つのコンポーネントのみを示しているが、様々な実施形態においては、他のコンポーネントが企図されている。
【0008】
いくつかの実施形態では、
図5を参照して以下にさらに記載するように、IC100は、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、スマートフォン、タブレット、ゲームコンソール、又は、他の電子デバイス等のデバイスの一部である。このデバイスには、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、システムメモリコントローラ、システムの入出力(IO)デバイス及びバスコントローラ、並びに、周辺コプロセッサ要素が含まれる。様々な実施形態では、これらのコンポーネントの何れか又は全てが、DSM及びパフォーマンスモニタカウンタを組み込む。様々な実施形態では、これらのコンポーネントの何れか又は全ては、様々なプログラム又は命令シーケンスを実行する一部として、命令ベースのサンプリングデータ126をEPMC106に送信するか、デバッグソース情報120を様々な可観測性ポイント(observability points)でデバッグコントローラ102に送信するか、又は、その両方である。
【0009】
図示した実施形態では、様々なデバッグソース情報120(例えば、通信インタフェース上のクロストリガ信号、トラップ信号、クロック停止信号、エラー信号、パフォーマンスモニタ(perfmon)信号若しくはイベント、割り込み、ブレイクポイント、マイクロコードベースのトリガ(例えば、ブレイクポイント、パフォーマンスモニタ、割り込み及びエラーイベント)、タイマーオーバーフロー、障害信号の再同期、電力状態変更信号、電力消費信号、送信ロジックブロックの特定の内部ロジックの状態信号、又は、それらの任意の組み合わせ)が、デバッグコントローラ102に提供される。デバッグソース情報120を受信したことに応じて、デバッグコントローラ102は、デバッグ相互接続110(例えば、デバッグバス)で、デバッグデータ122としてデバッグソース情報120を選択的に出力する。例えば、場合によっては、デバッグコントローラ102は、1つ以上のマルチプレクサを含み、デバッグソース情報120入力と、受信データをデバッグデータ122として出力することと、を交替で行う。
【0010】
DSM104は、デバッグ相互接続110によってデバッグデータ122を受信し、受信したデータを、DSM104に記憶されたイベントリスト(例えば、プログラム可能なイベント情報)と比較する。デバッグデータ122が完了したイベントを示していると判断したことに応じて、DSM104は、完了したイベントが識別されたことを示すDSM指標(DSM表示)124を生成する。いくつかの実施形態では、イベントリストは、複数のイベントを含む。他の実施形態では、イベントリストは、単一のイベントのみを含む。いくつかの実施形態では、イベントリストは、条件を一緒にメモリデバイスに記憶することなく、様々なイベントを検出及び示すDSM104のハードウェアの構成である。様々な実施形態において、
図3を参照して以下にさらに記載するように、DSM104は、単一条件イベント、複数条件イベント、又は、その両方を識別する。例えば、場合によっては、DSM104は、障害信号の再同期を検出したことに応じて、DSM指標124を生成する。別の例として、場合によっては、第1の電力状態遷移(例えば、特定の相への遷移)を示すデバッグデータ122を受信したことに応じて、DSM104は、電力状態遷移の特定の相で費やされたクロックサイクル数を追跡する。第2の電力状態遷移(例えば、特定の相からの遷移)を示すデバッグデータ122を受信したことに応じて、DSM104は、DSM指標124を生成する。場合によっては、DSM指標124は、特定の相で費やされたサイクル数を示す。したがって、様々な実施形態において、DSM104は、デバッグデータ122が特定の状態を示すことに応じてDSM指標124を生成するか、信号のシーケンスに応じてDSM指標124を生成するか、又は、その両方である。さらに、
図2を参照して以下に説明するように、様々な実施形態において、DSM104は、様々な入力に応じて様々な他の制御信号(例えば、デバッグ相互接続110を介して、又は他のデバイスから受信される信号)を生成する。
【0011】
図示した実施形態では、DSM104のイベントリストは、イベントリストの更新を介して変更可能である。場合によっては、イベントリストの更新は、(例えば、カスタムイベント選択入力として)ユーザから直接受信され、必要に応じて監視、プロファイリング及びデバッグに使用される。他の場合、イベントリストの更新は、基本入出力システム(BIOS)の更新又はセキュアファームウェアの更新(例えば、顧客からのイベントの監視要求に応じてIC100の製造元によって実行される)を介して実行される。したがって、場合によっては、DSM指標124を介してDSM104によって識別されるイベントは、IC100の製造後に変更される。
【0012】
EPMC106は、イベントデータ128として、様々な操作(例えば、リタイアした命令)に関連付けられた様々なイベント(例えば、サンプリングプロファイルを提供するか、又は、所定の閾値に達したときに入力を生成する)の指標をカウント及び出力する。例えば、場合によっては、EPMC106は、イベントベース割り込みデータ126を介して、IC100の1つ以上のデバイス(例えば、CPU)によって出入りした電力状態の指標を受信し、入った特定の電力状態をカウントし、イベントデータ128として結果を出力する。さらに、図示した実施形態では、EPMC106は、DSM-EPMC相互接続112を介してDSM指標124を標準イベントとして受信し、DSM指標124に応じてDSMイベントデータ130を出力する。その結果、場合によっては、EPMC106は、入った特定の電力状態のカウントを示すイベントデータ128を出力し、さらに、特定の電力状態で費やされたサイクル数を示すDSMイベントデータ130を出力する。様々な実施形態では、イベントデータ128、DSMイベントデータ130又はその両方は、入出力(I/O)インタフェース(例えば、ユーザインタフェース)を介して出力されるか、メモリデバイスのイベントログに保存される。したがって、EPMC106は、デバッグ相互接続110を介して受信したデバッグソース情報120に基づいてイベントデータを出力し、これは、場合によっては、イベントベース割り込みデータ126のみに基づいて生成されたイベントデータと比較して、追加情報を含む。さらに、DSM104のイベントリストが変更可能である結果として、場合によっては、EPMC106、はカスタマイズ可能なパフォーマンスモニタである。
【0013】
図2は、いくつかの実施形態による、IC200を示すブロック図である。図示した実施形態では、IC200は、
図1のデバッグコントローラ102、DSM104、EPMC106、デバッグ相互接続110及びDSM-EPMC相互接続112と、パイプラインデバイス202と、パイプライン入力相互接続204と、パイプライン出力相互接続206と、を含む。図示した実施形態は、明確にするために3つのコンポーネントのみを示しているが、様々な実施形態において、他のコンポーネントが企図されている。
【0014】
図1を参照して上述したように、いくつかの実施形態では、デバッグコントローラ102は、デバッグソース情報120に基づいてデバッグデータ122を生成する。DSM104は、デバッグデータ122に基づいてイベントを検出したことに応じて、DSM指標124を生成する。EPMC106は、イベントベース割り込みデータ126に基づいてイベントデータ128を生成し、DSM指標124に基づいてDSMイベントデータ130を生成する。
【0015】
さらに、図示した実施形態では、DSM104は、パイプラインデバイス202からのパイプライントリガ210に応じて(例えば、デバッグデータ122の1つ以上のインスタンス、パイプライントリガ210の1つ以上のインスタンス、又は、それらの任意の組み合わせに応じて)、DSM指標124を生成する。様々な実施形態において、パイプラインデバイス202は、パイプライン入力相互接続204を介して、(単純化のためにパイプライントリガ210として示されている)パイプライントリガをDSM104に送信する。例えば、場合によっては、パイプライントリガ210は、トラップ信号、クロック停止信号、エラー信号、パフォーマンスモニタ(perfmon)信号若しくはイベント、割り込み信号、ブレイクポイント指標、マイクロコードベースのトリガ(例えば、ブレイクポイント、パフォーマンスモニタ、割り込み、エラーイベント)、及び、タイマーオーバーフロー信号を含む。
【0016】
DSM指標124を生成することに加えて、場合によっては、DSM104は、パイプライントリガ210、デバッグデータ122又はその両方に応じてパイプラインアクション212を生成する。DSM104は、パイプライン出力相互接続206を介して(簡単にするためにパイプラインアクション212として示されている)パイプラインアクションを送信する。パイプラインアクション212は、パイプラインデバイス202に様々なアクションを実行するように指示する。例えば、場合によっては、パイプラインアクション212は、ローカル停止クロック信号、ダイ全体の停止クロック信号、メモリデバイスのセルフリフレッシュ信号、通信インタフェース受信無効信号、トレースストア信号、マシンチェック例外(MCE)信号、デバッグイベント信号、デバッグマイクロコード割り込みトリガ、DSMマイクロコードレジスタの様々なビットを設定及びクリアするための命令、操作ストール信号、構造フラッシュ信号、状態キャプチャバッファへの(例えば、デバッグレコードバッファ(DRB)への、及び、予約済みキャッシュウェイ若しくはシステムメモリへのスピルへの)デバッグデータの記憶を開始するための命令、状態キャプチャバッファへのデバッグデータの記憶を停止するための命令、状態キャプチャバッファへのクロックカウントを記憶するための命令、及び、キューのサイズを変更するための命令のうち1つ以上を含む。
【0017】
したがって、場合によっては、DSM104は、イベントベース割り込みデータ126によって示されないデータを追跡する。しかしながら、EPMC106はDSMイベントデータ130を出力するので、この追跡されたデータは、場合によっては、ユーザに対して透過的(transparent)である。さらに、DSM104のイベントリストは変更可能であるため、EPMC106の出力は、IC200の製造後に変更可能である。
【0018】
図3は、いくつかの実施形態による、例示的なDSM104を示すブロック図である。DSM104は、イベント検出コンポーネント302を含む。イベント検出コンポーネント302は、イベントリスト304を含む。図示した例では、イベントリスト304は複数のイベントを含むが、他の実施形態では、イベントリスト304は単一のイベントのみを含む。さらに、図示した例では、イベントリスト304は、メモリデバイスに一緒に記憶されたデータ(例えば、イベント条件)に対応するが、他の実施形態では、イベントリスト304は、イベント条件を一緒にメモリデバイスに記憶することなく、様々なイベントを検出及び示すDSM104のハードウェアの構成である。
【0019】
図示した例では、DSM104は、デバッグデータ122、パイプライントリガ210又はその両方を受信する。イベント検出コンポーネント302は、受信したデータをイベントリスト304と比較し、その比較に基づいて、イベントが検出されたかどうかを判断する。イベントを検出したことに応じて、DSM104は、検出されたイベントを示すDSM指標124を送信する。さらに、図示した実施形態では、イベント検出コンポーネント302は、受信したデータに基づいてパイプラインアクション212が生成されるかどうかを判断する。しかしながら、他の実施形態では、パイプラインアクション212は、DSM104の異なるハードウェアを使用して生成される。
【0020】
説明のために、
図3は、DSM指標124を生成する結果となる潜在的なイベントの4つの例を示している。詳細には、デバッグデータ122が、電力状態モニタが第1の値を超える値を示す内部電力状態モニタカウントを示すことに応じて、DSM104は、電力状態モニタカウントを示すDSM指標124を送信する。別の例として、デバッグデータ122が、電力状態モニタが第2の値未満の値を示す内部電力状態モニタカウントを示すことに応じて、DSM104は、電力状態モニタカウントを示すDSM指標124を送信する。いくつかの実施形態では、第1の値、第2の値又はその両方は、集積回路のダイ電圧の範囲内で観測されたダイ電圧を示すプロキシ値である。他の実施形態では、第1の値、第2の値又はその両方は、実際の電圧である。さらに、デバッグデータ122が障害信号の再同期が高いことを示すことに応じて、又は、パイプライントリガ210がアクティブであることに応じて、DSM104は、DSM指標124を送信する。さらに、場合によっては、イベントリスト304のイベントは、複数条件イベントである。例えば、デバッグデータ122が、第1の電力状態変化が発生したことを示すことに応じて、DSM104は、(例えば、カウンタを増加させることによって、又は、現在のカウンタ値をマークすることによって)クロックサイクルのカウントを開始する。デバッグデータ122が、第2の電力状態変化が発生したことを示すことに応じて、DSM104は、クロックサイクルのカウントを停止し、カウントされたクロックサイクル数をDSM指標124として送信する。
【0021】
図4は、いくつかの実施形態による、イベントを検出し、拡張パフォーマンスモニタカウンタにデバッグ状態機械表示を提供する方法400を示すフロー図である。方法400は、いくつかの実施形態では、
図1のDSM104等のDSMによって実施される。いくつかの実施形態では、方法400は、コンピュータ可読記憶媒体によって記憶された1つ以上の命令に応じて、1つ以上のプロセッサによって開始される。
【0022】
ブロック402で、DSMはイベントデータを受信する。例えば、場合によっては、DSM104は、デバッグデータ122、パイプライントリガ210又はその両方を受信する。ブロック404で、DSMは、イベントデータが、DSMのイベントリストの複数条件イベントの次の条件と一致するかどうかを判断する。例えば、場合によっては、イベントデータは、
図3を参照して上述したように、電力状態の相変化が発生したことを示す。イベントデータが複数条件イベントの次の条件に一致することに応じて、方法400はブロック406に進む。イベントデータが複数条件イベントの次の条件に一致しないことに応じて、方法400はブロック402に進む。
【0023】
ブロック406で、イベントデータが、複数条件イベントの次の条件と一致することに応じて、DSMは、イベントがイベントデータ受信の結果として完了するかどうかを判断する。例えば、場合によっては、イベントデータは、第2の電力状態の相変化が発生したことを示す。イベントが完了することに応じて、方法400はブロック410に進む。イベントが完了していないことに応じて、方法400はブロック402に進む。ブロック408で、イベントデータが、複数条件イベントの次の条件と一致しないことに応じて、DSMは、イベントデータがイベントリストの単一条件と一致するかどうかを判断する。例えば、場合によっては、イベントデータは、障害信号の再同期が高いか、パイプライントリガがアサートされていることを示す。イベントデータが単一条件イベントに一致することに応じて、方法400はブロック410に進む。イベントデータが単一条件イベントに一致しないことに応じて、方法400はブロック402に進む。
【0024】
ブロック410で、複数条件イベントが完了したことに応じて、又は、イベントが単一条件イベントに一致することに応じて、DSMは、DSM指標を拡張パフォーマンスモニタカウンタに送信する。例えば、完了したイベントを識別することに応じて、DSM104はDSM指標124をEPMC106に送信する。続いて、方法400はブロック402に戻る。したがって、イベントを検出し、拡張パフォーマンスモニタカウンタにデバッグ状態機械表示を提供する方法が示される。
【0025】
図5は、いくつかの実施形態による、デバッグ状態機械によってトリガされる拡張パフォーマンスモニタカウンタを含む処理システム500を示すブロック図である。図示した実施形態では、処理システム500内の様々なコンポーネントは、オンダイハードウェアの機能を調査及び追跡するためのDSM及びEPMCを含む。上述したように、DSMは、1つ以上のソースからトリガ(例えば、デバッグデータ又はパイプライントリガ)を受信し、トリガに基づいて所定のアクション(例えば、DSM指標又はパイプラインアクションの送信)を選択する。ソースには、同じコア若しくはコントローラ内のコンポーネント、同じコア若しくはコントローラの外部にある他のオンダイコンポーネント、及び、追加で、オフダイコンポーネントが含まれる。いくつかの実施形態では、DSMは、ネットワーク(例えば、オーバーレイ双方向クロストリガネットワーク)を介して相互接続される。図示した実施形態は、様々なコンポーネントにDSM及びEPMCを含むが、他の実施形態では、DSM及びEPMCは、より少ない、追加の、又は、異なるコンポーネントに含まれる。さらに、DSMとEPMCは、図示した実施形態では対になっているが、他の実施形態では、DSM、EPMC又はその両方が別々に出現する。
【0026】
場合によっては、処理システム500で複数の時分割シーケンスが発生する。例えば、場合によっては、シーケンスには、ソフトウェアプロセス、ソフトウェアスレッド、システムレベルのトランザクション、又は、電力パフォーマンス状態(p状態)が含まれる。シーケンスには、OS又はオンダイハードウェアによってスケジュールされたテスト対象のICで実行される1つ以上の命令が含まれる。シーケンス識別子(ID)は、シーケンスを区別するために使用される。例えば、プロセスID、スレッドID、システムレベルのトランザクションID、p状態ID、又は、それらの任意の組み合わせが使用される。場合によっては、シーケンスはIC内のハードウェアリソース(例えば、実行ユニット、キュー、スケジューラ、プロセス状態、又は、メモリスペース)を他のシーケンスと共有する。
【0027】
いくつかの実施形態では、処理システム500の1つ以上のプロセッサコア(例えば、マルチスレッドプロセッサコア532-1~532-2、又は、グラフィックプロセッサコア542)は、マルチスレッドアプリケーションを実行する。さらに、場合によっては、処理システム500は、複数の電力パフォーマンス状態のうち何れかの下で動作する。さらに、場合によっては、複数の独立したシステムレベルのトランザクションレベルが処理システム500上で動作する。プロセス、スレッド及びp状態の各々は、シーケンスの一例である。
【0028】
いくつかの実施形態では、処理システム500のDSM520、534(DSM534-1~534-2)、又は、544のうち1つ以上は、オンダイ相互接続状態及びI/Oデバイス相互接続状態を含む統計及び動作挙動を追跡する。DSM520、534、544、又は、それらの任意の組み合わせは、独立したシーケンスの処理中にオンダイハードウェアをテストするための状態情報、記憶されたパラメータ、及び、組み合わせ制御ロジックを提供する。ハードウェアによって処理されるシーケンス毎にDSMの完全なインスタンス化を複製するのではなく、状態や記憶されたパラメータ等の一部の静的リソースが共有される。上記のように、DSM520、534及び544のうち1つ以上は、処理システム500の製造後に変更可能なイベントリストを含む。その結果、場合によっては、DSM520、534及び544によって追跡される様々なテスト及びパラメータが、処理システム500の製造後に変更される。
【0029】
上記のように、EPMC522、536(EPMC536~1から536-2)又は546のうち1つ以上は、同様に、デバッグ、コードのプロファイリングと改良、及び、オペレーティングシステムの動作のために状態情報を追跡及び提供する。図示した実施形態では、EPMC522、536及び546は、DSM520、534及び544のうち1つ以上からDSM指標を受信する。場合によっては、EPMC522、536及び546は、受信したDSM指標をDSMイベントデータとして出力する。さらに、場合によっては、EPMC522、536及び546は、受信したDSM指標を受信したイベントベース割り込みデータと組み合わせて、イベントデータを生成する。
【0030】
図に示すように、処理システム500は、様々なユニット508(汎用処理ユニット508-1~508-2)及びユニット510(例えば、グラフィックス処理ユニット)を含む。ユニット508は、それぞれの汎用マルチスレッドプロセッサコア532及び対応するキャッシュメモリサブシステム530(例えば、キャッシュメモリサブシステム530-1~530-2)を含む。同様に、ユニット510は、グラフィックプロセッサコア542及びバッファ540を含む。
【0031】
いくつかの実施形態では、各マルチスレッドプロセッサコア532は、1つ以上のマルチステージ(multi-stage)パイプラインを備えたスーパースカラマイクロアーキテクチャを含む。場合によっては、マルチスレッドソフトウェアアプリケーションの各ソフトウェアスレッドは、各マルチスレッドプロセッサコア532内の個別のパイプラインによって処理される。あるいは、特定の機能ユニットでの制御を介して複数のスレッドを処理できるパイプラインが、各スレッドを処理する。さらに他の例では、各スレッドは、複数のスレッドのそれぞれの専用のリソースと、複数のスレッドの全てによって使用される共有リソースと、の組み合わせを備えたパイプラインによって処理される。様々な実施形態では、各マルチスレッドプロセッサコア532は、所定の汎用命令セットに従った命令を処理するための回路を含む。
【0032】
一般に、各マルチスレッドプロセッサコア532は、データ及び命令のためにレベル1(L1)キャッシュにアクセスする。場合によっては、複数のオンダイレベル(L2、L3等)のキャッシュがある。いくつかの実施形態では、これらのレベルのキャッシュのうち1つ以上は、プロセッサコアの外側にあり、各キャッシュメモリサブシステム530内にある。さらに、場合によっては、処理システム500は、GPU、別のタイプの単一命令複数データ(SIMD)コア、又は、デジタル信号プロセッサ(DSP)等の1つ以上のアプリケーション固有のコアを含む。図示した実施形態では、処理システム500は、ユニット510を含む。図示した実施形態では、ユニット510は、複数のパイプラインステージを含む複数の並列データパスを含み、各ステージは、複数の算術論理ユニット(ALU)コンポーネントを有し、データストリーム内の複数のデータ値に対して単一の命令で動作する。
【0033】
図示した実施形態では、処理システム500は、クロスバースイッチ506を介してユニット508及び510に接続された共有キャッシュメモリサブシステム504をさらに含む。ユニット508及び510は、クロスバースイッチ506及びメモリコントローラ502を介して、ローカルメモリ及びオフチップメモリの両方に直接アクセスする。
【0034】
場合によっては、メモリコントローラ502は、処理システム500を、動的ランダムアクセスメモリ(DRAM)、ディスクメモリ及びオフラインアーカイブメモリ等のオフダイメモリデバイスに接続する。したがって、メモリコントローラ502は、メモリデバイスにインタフェースするための制御回路を含む。さらに、いくつかの実施形態では、メモリコントローラ502は、メモリ要求をキューイング(queuing)するための要求キューを含む。ユニット508及び510と同様に、図示した実施形態では、メモリコントローラ502は、DSM520及びEPMC522を含む。
【0035】
図示した実施形態では、インタフェース512は、信号を別のプロセッサ等の他の処理ノードに直接リンクするための統合チャネル回路を含む。したがって、場合によっては、インタフェース512は、プロセッサのオンダイキャッシュ及び別の処理ノードのオフダイメモリのノード間アクセスのために1つ以上のコヒーレンスリンクを利用する。この技術の例には、HyperTransportやQuickPathが含まれる。I/Oインタフェース550は、処理システム500外のI/Oデバイスに、共有キャッシュメモリサブシステム504及びユニット508及び510へのインタフェースを提供する。さらに、場合によっては、I/Oインタフェース550は、EPMC522、536及び546のうち1つ以上へのインタフェースを提供する。場合によっては、I/Oインタフェース550は、データ制御及びアクセスのために、プラットフォーム及びI/Oコントローラハブ(図示省略)とさらに通信する。場合によっては、ハブは、各リンクで受信された制御パケット及びメッセージに応じて、処理システム500から受信された情報及びコマンドに応じて、制御パケット及び応答パケットを生成する。場合によっては、ハブは、従来のサウスブリッジチップセットによって通常オフダイで実行される動作をオンダイで実行する。いくつかの実施形態では、ハブは、個別のDSM、EPMC又はその両方を含む。
【0036】
テストインタフェース514は、IEEE1149.1標準テストアクセスポート及びバウンダリスキャンアーキテクチャ又はジョイントテストアクショングループ(JTAG)標準等の所定のプロトコルに従って処理システム500をテストするためのインタフェースを含む。場合によっては、テストインタフェース514は、DSMインタフェース560を介してDSM520、534及び544のうち1つ以上をプログラミングするために使用される。いくつかの実施形態では、DSMのプログラミングは、イベントリストに対応するレジスタ等のように、所定のDSMに対応するレジスタに特定の値を書き込むことを含む。場合によっては、DSMをプログラミングすることで、DSMが何れのトリガに応答するかと、応答で実行されるアクションのタイプと、が決まる。
【0037】
場合によっては、DSM520、534及び544は、それぞれ異なる方法でプログラミングされる。あるいは、場合によっては、DSM520、534及び544のうち2つ以上が、同様の方法でプログラミングされる。さらに、場合によっては、DSM520、534及び544のうち任意の所定の1つが、実行されたプログラミングに関係なく、特定のトリガイベントに応じて特定のアクションを行う。同様に、様々な実施形態において、EPMC522、536及び546は、同様に又は異なるように設計されており、類似のデータ又は異なるデータを報告する。
【0038】
本明細書に開示されるように、いくつかの実施形態では、集積回路(IC)は、デバッグ相互接続でデバッグデータを選択的に出力するように構成されたデバッグコントローラと、デバッグデータに基づいてイベントを識別し、イベントを識別することに応じてDSM指標を出力するように構成されたデバッグ状態機械(DSM)であって、プログラム可能なイベント情報に基づいてイベントを識別するように構成されたDSMと、識別されたイベントを含む複数の検出されたイベントを示すように構成された拡張パフォーマンスモニタカウンタ(EPMC)であって、DSM指標に応じて識別されたイベントを示すように構成されたEPMCと、を含む。一態様では、EPMCは、イベントベース割り込みデータを受信することに応じてイベントデータを出力するようにさらに構成されており、イベントベース割り込みデータは、デバッグデータと異なる。別の態様では、DSMは、少なくとも1つのパイプライントリガに基づいてイベントを識別するようにさらに構成されている。さらに別の態様では、DSMは、基本入出力システム(BIOS)の更新又はセキュアファームウェアの更新を介してプログラム可能なイベント情報を受信するように構成されている。
【0039】
一態様では、DSMは、ユーザからプログラム可能なイベント情報を受信するように構成されている。別の態様では、識別されたイベントは複数条件イベントであり、DSMは、デバッグデータが識別されたイベントの最後の条件を示しているとの判断に応じて、DSM指標を出力するようにさらに構成されている。さらに別の態様では、DSM指標は、識別されたイベントの最初の条件と識別されたイベントの最後の条件との間に経過したサイクルカウントを含む。さらに別の態様では、識別されたイベントを示すことは、識別されたイベントを説明するデータをメモリデバイスのイベントログに記憶することを含む。別の態様では、識別されたイベントを示すことは、イベントを説明するデータをユーザインタフェースに送信することを含む。
【0040】
いくつかの実施形態では、方法は、デバッグ状態機械(DSM)によって、デバッグ相互接続を介して第1のデバッグデータを受信することと、DSMによって、第1のデバッグデータをDSMに記憶されているイベントリストと比較することと、第1のデバッグデータがイベントリストの第1のエントリの第1の部分に一致することに応じて、第1のイベントが検出されたことを示すDSM指標を拡張パフォーマンスモニタカウンタ(EPMC)に送信することと、を含む。一態様では、この方法は、第1のデバッグデータを受信する前に、DSMによって、第1のエントリの第2の部分に一致する第2のデバッグデータを受信することを含み、第1のエントリは複数条件イベントに対応し、第1のエントリの第1の部分は複数条件イベントの最後の条件に対応する。別の態様では、この方法は、DSM指標を送信した後に、DSMによって、イベントリストへの更新を受信することを含む。
【0041】
一態様では、この方法は、イベントリストへの更新を受信した後、DSMによって、デバッグ相互接続を介して第2のデバッグデータを受信することと、DSMによって、第2のデバッグデータをイベントリストと比較することと、第2のデバッグデータがイベントリストの第1のエントリの更新された第1の部分に一致することに応じて、第2のイベントが検出されたことを示す第2のDSM指標をEPMCに送信することと、を含み、第2のイベントは第1のイベントと異なり、DSM指標は第2のDSM指標と同じである。別の態様では、イベントリストへの更新を受信することは、基本入出力システム(BIOS)の更新又はセキュアファームウェアの更新を介して更新を受信することを含む。さらに別の態様では、イベントリストへの更新を受信することは、ユーザから更新を受信することを含む。
【0042】
いくつかの実施形態では、方法は、デバッグデータ及びパイプライントリガデータを受信することに応じて、DSMに記憶されたイベントリストに基づいてイベントを識別し、イベントを識別することに応じて、DSM指標を出力するように構成されたデバッグ状態機械(DSM)と、イベントベース割り込みデータ、DSM表示又はその両方を受信することに応じて、識別されたイベントを含む複数の検出されたイベントのうち1つ以上を示すように構成された拡張パフォーマンスモニタカウンタ(EPMC)と、を含む。一態様では、識別されたイベントを示すことは、識別されたイベントが発生したクロックサイクルのカウントを示すことを含む。別の態様では、識別されたイベントは、電力状態の相変化を含む。さらに別の態様では、DSM指標は、電力状態モニタカウントを含む。さらに別の態様では、識別されたイベントは、障害イベントの再同期を含む。
【0043】
いくつかの実施形態では、コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
【0044】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【0045】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0046】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【0047】
本開示の範囲内で、場合によっては、異なるエンティティ(「コンポーネント」、「ユニット」、「デバイス」等と様々に呼ばれる)は、1つ以上のタスク又は動作を実行するように「構成された」と説明又は主張される。[1つ以上のタスクを実行する]ように構成された[エンティティ]という表現は、本明細書では、構造(すなわち、電子回路等の物理的なもの)を指すために使用される。より具体的には、この表現は、この構造が動作中に1つ以上のタスクを実行するように構成されていることを示すために使用される。構造は、その構造が現在操作されていない場合であっても、何らかのタスクを実行するように「構成」されていると言うことができる。「データを記憶するように構成されたメモリデバイス」は、例えば、当該集積回路が現在使用されていない(例えば、電源が接続されていない)場合であっても、動作中にデータを記憶する回路を有する集積回路を含むことを意図している。したがって、あるタスクを実行するように「構成された」と記載又は説明されたエンティティは、デバイス、回路、タスクを実施するために実行可能なプログラム命令を記憶するメモリ等の物理的なものを指す。この語句は、本明細書では、無形のものを指すために使用されない。さらに、「ように構成された」という用語は、「ように構成可能」を意味するものではない。例えば、プログラミングされていないフィールドプログラマブルゲートアレイは、プログラミング後にその機能を実行する「ように構成可能」である場合であっても、何らかの特定の機能を実行する「ように構成されて」いるとはみなされない。さらに、構造が1つ以上のタスクを実行する「ように構成されている」と添付の特許請求の範囲で記載されていることは、ミーンズ・プラス・ファンクション要素を有すると解釈すべきでないことを明確に意図している。