JP2008513853A - マルチコアアーキテクチャーにおけるデバッグ - Google Patents

マルチコアアーキテクチャーにおけるデバッグ Download PDF

Info

Publication number
JP2008513853A
JP2008513853A JP2007530774A JP2007530774A JP2008513853A JP 2008513853 A JP2008513853 A JP 2008513853A JP 2007530774 A JP2007530774 A JP 2007530774A JP 2007530774 A JP2007530774 A JP 2007530774A JP 2008513853 A JP2008513853 A JP 2008513853A
Authority
JP
Japan
Prior art keywords
debug
controller
thread
core processor
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007530774A
Other languages
English (en)
Other versions
JP5610668B2 (ja
Inventor
マーク, デイヴィッド リペット,
アイウィン ウーング,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2008513853A publication Critical patent/JP2008513853A/ja
Application granted granted Critical
Publication of JP5610668B2 publication Critical patent/JP5610668B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

スレッドを処理するための複数のインターコネクトされたプロセッサーエレメントを備えるマルチコアプロセッサーアーキテクチャー内においてスレッドの実行を監視する方法であって、この方法は、1つのスレッドまたは複数のスレッドの機能および/またはアイデンティティーおよび/または実行ロケーションに関する1つ以上のパラメータの複数のスレッドパラメータインジケータを受信するステップと、スレッドパラメータインジケータの中の少なくとも1つを、関心のあるインジケータをそれぞれが表現する第1の複数の予め定義された基準と比較するステップと、上記比較の結果として関心のあるものであると識別されたスレッドパラメータインジケータによって得られる出力を生成するステップとを備える。
【選択図】図1

Description

発明の分野
本発明は、マルチコアアーキテクチャーにおいてデバッグするための方法および装置に関する。
発明の背景
近年、シリコン効率(すなわち、「アプリケーション利用可能」MIPs/mmまたはMIPs/mW)を最大化するために、複数のコアを含むプロセッサーを製造する傾向にある。このようなマルチコアアーキテクチャーは、スレッドに基づいてアプリケーションを実行するのに十分に適したものである。なぜなら、スレッドは、実行状態、命令ストリーム、およびデータセットを含む作業の独立パッケージを定義するからであり、定義によって、それは、その他のスレッドと同時に実行してもよい。しかしながら、実行のこの並列化は、それらのマルチコアアーキテクチャーで使用されるソフトウェアデバッグプロセスに付加的な問題をもたらす。ソフトウェアデバッグは、コンピュータアプリケーションを実行するときに発生するエラーを突き止めて修正することを意味する一般的な用語である。
ソフトウェアデバッグにおいて遭遇する大きな問題の1つは、ハイゼンベルグバグ(「プローブ効果」としても知られている)である。デバッグのために、例えば、システム診断のレベルを向上させるために付加されるいかなるコードも、スレッドを同時におよび/または並列に実行するタイミングを微妙に変化させる可能性がある。これは、さもなければそのアプリケーションの生産開始時に観察され得るバグを隠すという危険性をもたらす。また、大規模なデバッグコードがビルド内に存在するとき、有意義な性能測定および性能評価を達成することは、難しいことである。これは、キャッシュ性能およびインターコネクト性能が、付加的なコードによって影響され得ること、およびそれが、コードサイズにより明白な影響を及ぼすことのような二次効果によるものである。
さらに、その製造に使用された大規模なリソースのために、このようなマルチコアアーキテクチャーのために製造されたソフトウェアの再利用性を改善することが強く要望されている。従来、マルチコアアーキテクチャーのためのアプリケーションは、特別注文に基づいて記述され、そのために、あまり移植性のないハードウェア固有アプリケーションをもたらしてきた。さらには、また、これらのアプリケーションのデバッグは、極めて専門化されたものであった。
発明の概要
本発明の第1の態様によれば、スレッドを処理するための複数のインターコネクトされたプロセッサーエレメントを備えるマルチコアプロセッサーアーキテクチャー内においてスレッドの実行を監視する方法が提供され、この方法は、1つのスレッドまたは複数のスレッドの機能および/またはアイデンティティーに関する1つ以上のパラメータを指示する複数のスレッドパラメータインジケータを受信するステップと、スレッドパラメータインジケータの中の少なくともいくつかを、関心のあるインジケータをそれぞれが表現する第1の複数の予め定義された基準と比較するステップと、上記比較の結果として関心のあるものであると識別されたスレッドパラメータインジケータによって得られる出力を生成するステップとを備える。
これは、とりわけ、スレッドレベルのデバッグのために、コードを付加することを必要とせずに、マルチコアプロセッサーアーキテクチャー上で実行されるアプリケーションをスレッドレベルでデバッグおよびトレースする能力を提供する。さらにまた、これは、付加的コードを導入することなく、すなわち、プローブ効果をもたらすことなく、マルチコアアーキテクチャーアプリケーションのデバッグを可能にするという利点を提供する。
本発明のさらなる態様によれば、複数のインターコネクトされたプロセッサーエレメントを有するマルチコアプロセッサーアーキテクチャーのためのスレッドレベルのソフトウェアデバッグコントローラが提供され、それぞれのエレメントは、スレッドを処理するためのリソースを提供し、デバッグコントローラは、上記プロセッサーエレメントのそれぞれと通信できる状態にあり、かつ、マルチコアプロセッサーアーキテクチャー内におけるスレッドの割り付けおよび実行を監視するための監視ロジックを備える。
本発明は、様々な形で実施されてもよい。以下、いくつかの実施形態を、添付の図面を参照して、単なる例として説明する。
特定の実施形態の詳細な説明
図1は、典型的なマルチコアアーキテクチャーの一例のシステムフレームワークの論理的ブロック図を示す。フレームワークは、複数の処理リソース150を備え、それらの処理リソース150のそれぞれは、マルチコアアーキテクチャー内におけるその他の処理リソース150に類似するものであってもよく、あるいは、異なるものであってもよい。処理リソース150は、命令を実行することのできるいかなる形態のハードウェアであってもよく、したがって、それに等価なものは、汎用処理リソース150を含んでもよく、あるいは、効率的に限定された命令セットを備える処理リソース150、例えば、入出力装置を含んでもよい。
システムフレームワークは、また、集中スレッド管理および割り付けシステムを備え、その集中スレッド管理および割り付けシステムは、スレッド管理および割り付けコントローラ130と、メモリーインタフェース180を介してコントローラに接続された専用密結合メモリー190とを含む。それぞれの処理リソース150は、インターコネクト115を介してコントローラ130にアクセスすることができる。図1に示される構成を実施するには、特別なインターコネクトストラテジー(すなわち、コントローラ130が、それぞれの処理リソース150と通信する構成およびその逆の構成、およびそれぞれの処理リソース150が、システムリソース、例えば、メモリー140と通信する構成)を必要としないことを理解すべきである。具体的には、処理リソース150のそれぞれがコントローラ130と直接にまたは間接的に通信することができなければならないということを除けば、ポイントツーポイントリンク、中央システムバス、あるいは、パイプライン型アーキテクチャーでさえもが、同じように使用されてもよい。
図2は、やはり単なる例として、図1の論理的構成を実施するマルチコアプロセッサーを示す。図2のマルチコアプロセッサーは、複数の処理リソース150を使用し、それらの処理リソース150のそれぞれは、システムインターコネクト160を介して接続される。そして、そのシステムインターコネクト160は、入力インタフェース100および出力インタフェース110を介して、コントローラ130と通信する。図3の例においては、システムインターコネクト160は、伝統的な中央バスとして配置され、その中央バスは、処理リソース150のそれぞれを、互いに接続し、コントローラ130に接続し、また、システムメモリーのような共有システムリソース140に接続する。共有システムリソース140とのインタフェースは、現時点において利用可能ないくつかのインタフェース技術の1つによって達成されてもよい。メモリーは、現時点において利用可能な中央コンピュータメモリー技術、例えば、スタティックランダムアクセスメモリー(SRAM)、ダイナミックランダムアクセスメモリー(DRAM)、または、ダブルデータレートランダムアクセスメモリー(DDR RAM)のいずれかから構成されてもよい。
図2からわかるように、複数の処理リソース150のそれぞれは、対応するコントローラクライアント120を有し、それらのコントローラクライアント120は、中央コントローラ130から制御情報を受信するように構成され、かつ、受信した制御情報に基づいて処理リソース150を管理するように構成される。コントローラクライアント120の機能および目的は、以下でより詳細に説明される。また、それぞれの処理リソース150は、システムインターコネクト160を介してコントローラ130と通信するために、対応するインターコネクトエージェント170を有する。インターコネクトエージェント170は、コントローラクライアント120に汎用インタフェースを提供し、その汎用インタフェースは、システムインターコネクト160上で使用される下位インターコネクトプロトコルから独立したものである。すなわち、汎用インタフェースは、システムインターコネクト160上で使用される通信プロトコルとコントローラクライアント120によって使用される通信プロトコルとの間のプロトコル変換を提供する。インターコネクトエージェント170を使用することにより、本発明の実施形態のコントローラクライアント120は、現時点において利用可能なあらゆるシステムインターコネクトプロトコルとともに使用されてもよい。実際に、それを介してコントローラクライアント120がコントローラ130と通信するインタフェースプロトコル115は、処理リソース150と、共有システムリソース140、例えば、システムメモリーとの間の通信を可能にするために配置されるインタフェースプロトコル160のいずれかまたはすべてと物理的に異なっていてもよく、また、異なる性質を有していてもよい。
マルチコアプロセッサー10は、全体的に見れば、ターゲットアプリケーションを実行するように構成され、そのターゲットアプリケーションは、スレッドと呼ばれるいくつかの個々のタスクに分解されてもよい。それぞれの処理リソース150は、コントローラ130によって、適切なスレッドを割り付けられる。この割り付けは、限定はされないが、そのスレッドの優先順位、それぞれの処理リソース150のアベイラビリティー、および特定のスレッドを実行する特定の処理リソース150の適合性を含む多くのパラメータに基づいて、実行される。
しかしながら、コントローラ130およびその専用メモリー190を付加することは、プロセッサー10のレイアウトの再設計を特に必要としないことを理解すべきである。
1つの具体的な構成が、図3に示され、その図3は、典型的なシステムオンチップ(SoC)アーキテクチャーをブロック図の形で示し、かつ、実用化されたコントローラ130の制御下に置かれた様々な処理リソース150を示す。処理リソース150は、とりわけ、DSPのように、比較的に総合的な能力を有してもよく、あるいは、周辺IOのように、比較的に限定された機能を有してもよいことに注意されたい。
図4は、コントローラ130、およびその対応する入力インタフェースグループ100、出力インタフェースグループ110、および2つの双方向インタフェースグループ160および180を示し、それぞれのグループは、コントローラ130の周辺に配置される。
システム制御グループ102は、コントローラ130の正しい動作を保証するのに必要な多種多様な信号を備える。これらには、システムクロック、リアルタイムクロック、およびリセット信号(RST)が含まれる。コントローラ130からのすべての出力信号は、システムクロックに同期しているが、それらは、システムによって必要とされるならば、その他のクロックドメインに再同期させられてもよい。処理に先だって、コントローラ130へのすべての入力信号は、システムクロックに同期させられる。RST入力は、コントローラ130をリセットするための同期リセット信号である。
外部割り込みグループ101は、管理および割り付けシステムの外部から発生する外部割り込みのグループからなる。外部割り込みグループ101内の信号は、例えば、外部との入力インタフェースから供給されてもよく、あるいは、マルチコアプロセッサーの外部からピンを介して直接に供給されてもよい。外部割り込み入力の数は、マルチコアプロセッサー10の設計段階中に定義されてもよい。
内部制御グループ111は、コントローラクライアント120およびその対応する処理リソース150ごとの同期割り込みからなる。したがって、信号の数は、典型的には、システム内の処理リソース150の数に対応し、かつ、マルチコアプロセッサー10の設計段階中に定義される。内部割り込み信号は、内部スレッドレディー割り込み信号であり、スレッドを実行できるレディー状態にあること、およびそのコントローラクライアント120に対応する特定の処理リソース150にそのスレッドが割り当てられていることを指示する。
デバッグインタフェースグループ112は、次の3つのサブグループからなる。
1.補助デバッグインタフェース。これは、外部デバッグエージェントが、コントローラ130におよびシステム全体にデバッグアクセスするのを可能にする。このインタフェースを介して、ブレークポイントおよびウォッチポイントが、内部的かつ外部的にセットされてもよく、そして、システム状態情報が、読み出されてもよい。
2.トレースバッファー出力。これは、一組の予め設定されたフィルタリングガイドラインに基づいて、また、デバッグマネージャー400の最終的な制御下において、ランタイムシステム状態を提供するストリーミング出力である。
3.外部デバッグイネーブル信号。これは、独立したブレークポイント信号として使用されてもよく、あるいは、処理リソースに固有のイネーブルと組み合わせられてもよい。
上述したデバッグインタフェースグループの特定の形式、構成、および使用法が、以下でより詳細に説明される。
密結合メモリーインタフェースグループ180は、コントローラ130をそれ自体の専用密結合メモリーリソース190にインタフェース接続する。
図5は、専用密結合メモリー190の典型的な構造を示す。アドレスパスおよびデータパスの幅は、マルチコアプロセッサー10の設計段階中に定義される。専用密結合メモリーインタフェース180は、メモリーアドレスバス191、メモリー読み出しデータバス192、メモリー書き込みデータバス193、および書き込みイネーブル信号194および読み出しイネーブル信号196を含む。
付加メモリーは、同期型SRAMデバイスであると仮定する。専用密結合メモリー190は、ターゲットアプリケーションの必要性に基づいて、マルチコアプロセッサー10の設計段階中に定義された整数のコントローラメモリーエレメント195を含む。現時点において好ましい実施形態においては、それぞれのコントローラメモリーエレメント195は、256ビットのメモリー空間を消費する。現時点において好ましいさらなる実施形態においては、コントローラは、最大65,536個のコントローラメモリーエレメント(すなわち、16Mbメモリー)をサポートする。キュー記述子は、以下で説明するように、典型的なシステムにおいてコントローラメモリーエレメント195を消費するが、必要とされるコントローラメモリーエレメント195の数は、スレッドサポート要件によって決定される。例えば、コントローラ130内において400個のスレッドを同時にサポートすることのできるシステムは、約128kbの付加メモリーを必要とする。
図4のインターコネクトインタフェースグループ160は、マルチコアプロセッサー10およびインターコネクトエージェント170で使用される選択されたインターコネクトプロトコル(1つ以上)に準拠し、それは、マルチコアプロセッサーの設計段階中に定義される。複数の異なるインターコネクト構造が存在する場合、インターコネクトインタフェースグループ160は、恐らくは異なる複数のインタフェースから構成され得る。図示される実施形態においては、バスインタフェースが、使用される。それにもかかわらず、これまでに示唆されたように、その他の様々な形態のインタフェースが同じように使用されてもよいことは明らかなことである。
(コントローラサブブロックの説明および機能)
図6は、コントローラ130の主要な論理的コンポーネントを示す。コントローラ130の機能は、次の機能を実行する4つの主たる内部並列処理サブブロックに分割される。
1.スレッド入力マネージャー(TSIM)200。これは、専用密結合メモリー190内に存在するフリーコントローラメモリーエレメント195のリストを維持するように構成され、かつ、コントローラメモリーエレメント195のリカバリーを監視するように構成される。
2.スレッド同期マネージャー(TSPM)210。これは、専用密結合メモリー190内に存在するペンディングリストおよびタイマーキューを維持するように構成され、スレッド間の同期を達成するように構成され、そして、必要であれば、専用密結合メモリー190内に存在するレディーキュー構造へスレッドを昇格させるように構成される。スレッド同期マネージャー210は、専用密結合メモリー190内に存在するペンディングスレッド記述子の挿入および抽出を介して、ペンディングキューおよびタイマーキュー構造の完全性を維持する。
3.スレッド出力マネージャー(TSOM)220。これは、専用密結合メモリー190内に存在するレディーキュー構造、および専用密結合メモリー190内に存在する処理リソース150ごとのディスパッチキューを維持するように構成される。スレッド出力マネージャー(TSOM)220は、さらに、コントローラクライアント120へ送信される割り込み110を生成するように構成される。レディーキュー構造の完全性の維持は、専用密結合メモリー190内において、コントローラメモリーエレメント195に保持されたスレッド記述子を挿入および抽出することによって、実行される。
4.スレッドスケジュールマネージャー(TSSM)230。これは、専用密結合メモリー190内に配置されたレディーキュー構造内に処理リソース150ごとのスケジューリング決定を提供するように構成される。
さらに、いくつかの二次的な処理サブブロックが、次のサポート機能を提供する。
5.スレッドメモリーマネージャー(TSMM)240。これは、付加専用密結合メモリー190への集合アクセスを提供するように構成され、相互の排他性およびロッキングを含む。
6.割り込みマネージャー(TSIC)250。これは、入力外部システム割り込みを内部同期プリミティブに変換するように構成される。
7.時刻マネージャー(TSTC)260。これは、同期のためのタイマー機能、およびそれぞれの処理リソース150に対するウォッチドッグタイマー機能を提供するように構成される。
8.システムインタフェース(TSIF)280。これは、マルチコア処理リソース150およびコントローラ130内に存在する個々のサブブロックへのインターコネクトインタフェースおよび設定とランタイムアクセスとを提供するように構成される。
9.サーバーシム(TSSS)290。これは、コントローラ130とマルチコア処理リソース150との間の物理的なインタフェース115を提供するように構成される。
上で列挙した主たるサブブロックおよび二次的なサブブロックのそれぞれは、また、デバッグ出力を含み、デバッグインタフェース112の一部分を構成し、その信号に対応するそれぞれのサブブロック内において発生したイベントを本発明のデバッグコントローラ400に通知する。コマンドが、特定の条件を備えてもよい場合、ステータスフラグが、サブブロック内において管理される。
一般論として、コントローラ130は、専用コントローラメモリー190内に存在するいくつかのキュー構造を維持することによって、スレッドを管理する。これらのキュー構造には、ペンディングキュー、レディーキュー、タイマーキュー、およびディスパッチキューが含まれる。実行を待っているスレッドは、これらのキューの1つ以上の中に保持され、それらのスレッドがレディー状態になれば、適切な処理リソース150に割り付けられる。キュー内に存在するスレッドの操作は、主に、プッシュオペレーション、ポップオペレーション、およびソートオペレーションを用いて実行される。コントローラ130の動作の十分に詳細な説明は、同時係属出願である米国特許出願第10/308,895号に記載されており、その明細書は、その全体が、参照として本明細書に組み込まれる。
ここで、コントローラ130内に存在する上述した主たる処理サブブロックおよび二次的なサブブロックの相互作用を詳細に説明する。
それぞれのサブブロックは、一組の関数を他のサブブロックに提供し、それぞれのサブブロックが、そのピアに、専用密結合メモリー190内においてそれらのそれぞれが維持する構造を操作するように命令するのを可能にする。関数は、コントローラソフトウェアアプリケーションプログラミングインタフェース(API)において受信された類似コマンドを受信したとき、特定のサブブロックによってコールされる。
(スレッド入力マネージャー関数)
スレッド入力マネージャー200は、3つのパブリック関数を、コントローラ130内に存在するその他のサブブロックに提供する。
FreeListStatus関数は、コントローラメモリーエレメント195のフリーリストの先頭ポインタ、およびその中に存在するエレメントの数を返す。フリーリストは、現時点において未使用のコントローラメモリーエレメント195のリストである。この関数は、コントローラ130ソフトウェアAPIにおいて類似コマンドを受信したとき、システムインタフェース280だけがコールすることができる。
PushFreeIndex関数は、解放されたコントローラメモリーエレメント195のインデックスをフリーリスト上にプッシュバックするのに使用される。この関数は、スレッドスケジュールマネージャー230だけがコールすることができる。
PopFreeIndex関数は、フリーコントローラメモリーエレメント195のインデックスをフリーリストからポップするのに使用される。これは、典型的には、システムインタフェース280内のAPIコールサービスルーチン内からコールされる。
(スレッド同期マネージャー関数)
スレッド同期マネージャー210は、7つのパブリック関数を、コントローラ130内に存在するその他のサブブロックに提供する。
次の5つの関数は、コントローラ130のソフトウェアAPIによって受信された類似コマンドに応じて、システムインタフェース280だけがコールすることができる。
PushPendingDescriptor関数は、ペンディングキュー記述子をペンディングキュー記述子のリストに追加するために、ブートプロセス中に使用される。
PushThread関数は、従属スレッドを所定のペンディングキューに追加するために、ランタイム中に使用される。
GetTimerStatus関数は、タイマーキューの先頭ポインタおよびその中に存在するエレメントの数を返す。
SetTimerStatus関数は、タイマーキューの先頭ポインタおよびその中に存在するエレメントの数をセットする。
SetPendingStatus関数は、ペンディングキュー記述子リストのステータスをセットする。
GetPendingStatus関数は、ペンディング記述子キューの先頭ポインタおよびその中に存在するエレメントの数を返す。
SyncEvent関数は、同期プリミティブを所定のペンディングキューに発行するのに使用される。この関数は、スレッド割り込みマネージャー250またはシステムインタフェース280のいずれかによってコールされる。
TimeEvent関数は、タイマーに基づいた同期プリミティブをタイマーキューに発行するのに使用される。この関数は、時刻マネージャー260だけによってコールされる。
(スレッド出力マネージャー関数)
スレッド出力マネージャー220は、5つのパブリック関数をコントローラ130内に存在するその他のサブブロックに提供する。
Push関数は、スレッド記述子をレディーキュー構造内に配置する。このメソッドは、システムインタフェース280またはスレッド同期マネージャー210のいずかによってコールされてもよく、また、それは、処理速度を増大させるために(例えば、割り込みをハンドルするために)、高い優先順位でコールされてもよい。スレッドが、独立したものであれば(即座にレディー状態となる)、コールは、システムインタフェース280から形成され、スレッド記述子が、もともと、従属性を有していれば、コールは、スレッド同期マネージャー210から形成される。
次の関数は、コントローラ130のソフトウェアAPIにおいて類似コマンドが受信されたことに応じて、システムインタフェース280だけがコールすることができる。
GetDispatchQueusStatus関数は、ディスパッチキューリストの先頭ポインタおよびその中に存在するエレメントの数を返す。
SetDispatchQueueStatus関数は、ディスパッチキューリストの先頭ポインタおよびその中に存在するエレメントの数をセットする。
DispatchQueueSetMetrics関数は、現時点において実行されているスレッドのメトリックをセットし、それによって、豊富な情報に基づいたプリエンプション決定をなすことができる。
DispatchQueueEvent関数は、スケジューリングイベントをレディーキュー構造からスレッド出力マネージャー(TSOM)220によって管理されるディスパッチキューへ伝達する。この関数は、スレッドスケジュールマネージャー(TSSM)230だけによってコールされる。
DispatchQueuePop関数は、ディスパッチキューの先頭からスレッド記述子をポップする。
DispatchWorkQueuePush関数は、ディスパッチキューをスレッド出力マネージャー220の作業キュー上にプッシュする。この関数は、スレッドスケジュールマネージャー230だけによってコールされ、そのスレッドスケジュールマネージャー230は、スケジュール更新の結果としてディスパッチキュー内において必要な変更を出力マネージャー220に通知するのにこの関数を使用する。
(スレッドスケジュールマネージャー関数)
スレッドスケジュールマネージャー230は、コントローラ130内に配置されたスレッド出力マネージャー220およびシステムインタフェース280に3つのパブリック関数を提供する。
PushPushWorkEvent関数は、スレッド出力マネージャー220がスレッド記述子をレディーキュー構造に追加した直後に、そのスレッド出力マネージャー220によってコールされる。
PushPopWorkEvent関数は、スレッド出力マネージャー220がスレッド記述子をレディーキュー構造に移動した直後に、そのスレッド出力マネージャー220によってコールされる。
FreeIndex関数は、コントローラメモリーエレメント195の解放がスレッドスケジュールマネージャー230内で進行中のスケジューリングアクティビティーに適切に同期させられるのを可能にする。このコールは、コントローラ130のソフトウェアAPIにおいて類似コマンドを受信したとき、あるいは、スレッド出力マネージャー220内におけるポップオペレーションの結果として、発行されてもよい。
(コントローラクライアント)
上述したように、処理リソース150という用語は、命令がどれほど初歩的であるかに関係なく、その命令を実行することのできるあらゆるリソースに適用される。したがって、入力/出力モジュールのような固定機能を有するリソースも含まれる。処理リソース150の種類に依存して、コントローラクライアント120を介したシステムインターコネクト160と処理リソース150との接続は、単方向または双方向のいずれかであってもよい。
図7は、コントローラ130とともに使用するためのコントローラクライアント120の例示的なブロック図を示す。
例えば、汎用プロセッサーまたはディジタル信号プロセッサーのような適切な処理リソース150上において、コントローラクライアント120は、典型的には、ソフトウェアとして実施される。しかしながら、処理リソース150が限られた機能しか有していない場合、コントローラクライアント120は、ハードウェアコンポーネントを必要としてもよい。
ハードウェアコンポーネントが、システムインターコネクト160と処理リソース150との間に使用される場合、コントローラクライアント120は、同様に、同じインタフェースを用いて処理リソース150にインタフェース接続する。すなわち、コントローラクライアント120は、コントローラクライアント120に対する処理リソース150のインタフェースと同じインタフェースをインターコネクトエージェント170に提供する。場合によっては、例えば、入力/出力装置の場合のように、処理リソース150から外へのデータパスと異なるように、処理リソース150の中へのデータパスを取り扱うことは、適切なことである。
主たるインタフェースに加えて、コントローラクライアント120は、また、ランタイムイベントおよびデバッグイベントのための出力として使用される帯域外インタフェースを提供する。ソフトウェアコントローラクライアント120が、使用される場合、これらは、標準的な割り込みを用いて提供され、適切なサービスルーチンをコールし、あるいは、処理リソース150に固有のデバッグおよびトレースユニット151への入力を形成する。
(コントローラクライアントモードの動作)
それぞれのコントローラクライアント120は、完全な割り込み駆動型である。コントローラ130から内部割り込みを受信したとき、コントローラクライアント120は、専用密結合メモリー190内に保持されたその特定の処理リソース150に対応するディスパッチキューの先頭からスレッド記述子をポップする。そして、スレッド記述子内の独特な参照が、さらなるスレッド制御情報すなわちスレッド制御ブロック(TCB)を主メモリーリソース140から読み出すのに使用される。TCB内に含まれる情報は、次のいずれかであってもよい。
1.コントローラクライアント120設定コンテンツ。この情報は、コントローラクライアント120のシステムリソース使用ポリシー、アドレスまたはデータバストリガー設定(デバッグのために)、データ提供モードなどを設定するのに使用されてもよい。
2.処理リソース150の設定コンテンツ。これは、処理リソース150に特定のスレッドを実行する準備をさせるのに必要な情報である。これは、このスレッドの以前の部分的な実行からのリカバリーまたはオーディオCODECのようなスペシャリストハードウェアアクセラレータの設定を含んでもよい。
3.命令コンテンツ。固定機能ハードウェアアクセラレータの場合、「命令」は、ターゲットハードウェア処理リソース150において暗黙的なものであり、例えば、処理リソース150が出力モジュールであれば、出力命令であり、そして、何らかの必要とされるスペシャライゼーションまたは設定は、設定情報内に収容される。ソフトウェアコントローラクライアント120との関連で、これは、典型的には、スレッドに対応するファンクションコードへのポインタである。
4.データコンテンツ。このコンテンツは、システムメモリー140内における開始アドレスまたは複数アドレス、およびスレッドが処理し得るデータの範囲を定義してもよい。
5.コントローラクライアント120の後処理コンテンツ。このコンテンツは、スレッドの実行が完了した後のコントローラクライアント120のアクションを決定する。
コントローラクライアント120の次の3つの異なる段階が存在する。
1.処理リソース150およびコントローラクライアント120が特定のスレッドを実行する準備をさせられる設定段階。最も単純な場合、設定段階は存在しない。
2.スレッドが実行されており、かつ、コントローラクライアント120が、データを供給しているか、あるいは、リソースの利用を監視し得る実行段階。
3.完了段階。処理の完了は、何のアクションももたらさないか、別のスレッドの生成をもたらすか、同期プリミティブの発行をもたらすか、あるいは、スレッドの生成および同期の組み合わせをもたらす。さらにまた、コントローラクライアント120は、スケジューラーメトリックをセットまたは更新し、かつスレッドを終了するように要求され得る。また、スレッドの実行中にさらなるメモリーが結果を記憶するのに必要とされる場合、コントローラクライアント120は、このサーバーメソッドを実行しなければならない。
個々のハードウェアコントローラクライアント120bが動作期間中にシステムインターコネクト160の利用可能な帯域幅を最大限に使用する環境においては、最適化されたソリューションは、コントローラクライアント120に複数のハードウェア処理リソース150の代理として動作させる。このような構成が、図7bに示される。これまでの場合と同様に、代理コントローラクライアント120bは、割り込み駆動型であるが、これまでの例においては、コントローラ130からただ1つの割り込みしかルーティングされないが、代理コントローラクライアントモデルにおいては、割り込みは、処理リソース150ごとに存在する。コントローラ130から受信された割り込みのインデックスに基づいて、代理コントローラクライアント120bは、識別された処理リソース150上で同じステップを実行する。システムインターコネクト160の使用ポリシーが必要とされる代理コントローラクライアントモデルにおいては、ハードウェアアダプタ120cが、処理リソース150とシステムインターコネクト160との間に残存する。
上述したように、コントローラクライアント120は、ソフトウェアとして実施されてもよい。この場合、コントローラクライアント120のいくつかの機能、例えば、共有リソース使用ポリシーは、典型的には、処理リソース150のハードウェア(例えば、メモリー管理ユニット(MMU))内にすでに存在し得る既存のハードウェアコンポーネントを利用する。
その結果として、ソフトウェアコントローラクライアント120のアーキテクチャーおよび実施は、部分的に、処理リソース150に固有のものとなる。
また、ハードウェアコントローラクライアント120は、対応する処理リソース150の特異性に基づいたスペシャリスト要件を有してもよい。以下の段落は、ほとんどの場合において適切なものである汎用アーキテクチャーを説明する。
(ハードウェアコントローラクライアントの一般的な例)
ハードウェアコントローラクライアント120の基本構造が、図8に示される。設計の機能的中枢には、コントローラクライアント有限状態機械(FSM)300が存在する。この有限状態機械(FSM)300は、3つの段階のすべてにおいて動作状態であってもよい。コントローラクライアントFSM300は、コントローラ130からの割り込み111によって起動される。
最初に、コントローラクライアントFSM300は、共有メモリーリソース140からTCBを読み出すために、システムインターコネクト160を習得し、そのTCBは、それ自体の命令への参照を含む。設定段階中に、コントローラクライアント120は、処理リソースインタフェースを習得してもよく、設定コマンドを解釈し、そして、それらを、処理リソース150に発行される書き込みサイクルに変換する。さらに、コントローラクライアント120は、それ自体のリソースポリシーを設定する。設定状態から実行状態へどのように遷移するかは、処理リソース150に固有のものであるが、明示的な実行プリミティブによって、あるいは、ただ単に、データ転移状態へのエントリーによって、指示されてもよい。
コントローラクライアント120の観点から、最も単純なアーキテクチャーは、処理リソース150上およびシステム側の両方において同じインタフェースプロトコルを有する。この場合、実行段階中に、処理リソース150の読み出し書き込みサイクルは、適切な場所を検査することによって、ただ単に、システムインタフェースにマッピングされる。
最も単純なコントローラクライアント120の実施は、システムから処理リソース310へのパスおよび処理リソースからシステム320へのパスの両方においてFIFO方式インタフェースを要求する。この性質を有するコントローラクライアント120の実行段階中に、データは、メッセージモードまたはストリーミングモードによって、処理リソース150へ提供されてもよい。処理の前にデータセット全体がコントローラクライアント120内に局所的に蓄積されるメッセージモードは、よりきめの粗いむらのあるインターコネクトビヘイビアを発生させ、それは、より複雑なインターコネクトアービタを実現するのを助けることができる。データがシステムメモリー140から処理リソース150内へ直接にストリーミングされるストリーミングモードは、ハンドシェーキングをより入念に考察することを必要とし、きめの細かいインターコネクトトランザクションを呈し、かつ、インターコネクト性能に密結合するより大きなシリコン効率のソリューションを提供する。
実行段階から完了段階への遷移は、処理リソース150へのデータの提供を測定することによって推定されてもよく、あるいは、処理リソース150自体によって明示的に通知されてもよい。完了段階中に、コントローラクライアント120は、再度、元々のスレッド制御ブロックによって提供される命令の組から実行する。
場合によっては、処理リソース150(例えば、入力/出力装置)の中へのパスおよび処理リソース150から外へのパスを異なるものとして取り扱うことが適切であることに注意されたい。対照的に、場合によっては、(例えばDSPのようなアルゴリズム的なアクセラレータ)同じコントローラクライアント120のフレームワーク内に存在するデータの消費者と生産者とを結合することが自然であり得る。
処理リソース150とその他のシステムリソースとのあるレベルのデカップリングを提供するために、次のいくつかの付加機能が、コントローラクライアント120によって提供されてもよい。
a)処理リソース150によって生成されるアドレスは、比較器330および比較アドレスレジスタ340を用いて、ベースアドレスおよびオフセットの定義によって定義された期待されるビヘイビアと突き合わせて検査されてもよい。
b)処理リソース150によって生成されるアドレスは、オフセットであってもよく、減算器350およびオフセットアドレスレジスタ360を使用し、処理リソース150が与えられたスレッドに対するアドレスマップの正規化された視野、典型的には、正規化されたおおよそのアドレス0x0を有するのを可能にする。
c)デバッグウォッチレジスタは、処理リソースが限られた機能を有する場所に含められてもよく、そのために、それ自体の命令レベルデバッグハードウェアを含まない。そして、このようなレジスタは、命令レベルのデバッグ能力を、さもなければそれが不足している固定機能ハードウェアリソース150に与えるために、アドレス使用率を監視するのに使用されてもよい。
(オブジェクト)
コントローラ130内で使用されるインスタンスのデータタイプは、パブリックビジビリティー(システムから自由に見ることができ、かつ、システムによって自由に操作される)およびプライベートビジビリティー(コントローラ130内においてだけ見ることができ、かつ、コントローラ130のサブブロックだけによって操作される)に分類される。複数のエンドアプリケーション間において設計の移植性を保証するために、すべてのスレッド、キュー、および集められたキュー記述子は、共通ベースクラスを用いて、専用密結合メモリー190内のコントローラメモリーエレメント195に記憶される。
(コントローラメモリーエレメント)
それぞれのコントローラメモリーエレメント195は、次の10個の記述子タイプのいずれかを表現してもよい。
1.フリーリストエレメント。このエレメントは、その他のいずれかの記述子タイプによって自由に使用されてもよい。ユーザ初期化またはランタイム操作は、必要とされない。
2.スレッド記述子(TD)。これは、アプリケーション/管理スレッドを表現するデータ構造である。この記述子は、専用密結合メモリー190内のペンディングキュー、レディーキュー、または、ディスパッチキューのいずれかに存在してもよい。ユーザ初期化は、必要とされないが、ランタイム操作は、必要とされる。
3.スケジューラールート記述子(SRD)。これは、スケジューラー階層の最上位記述子である。ユーザ初期化は、必要とされるが、ランタイム操作は、必要とされない。ルート記述子は、親を持たないが、子は、SSTD、DSTD、または、TDのいずれかであってもよい。
4.静的スケジューラー層記述子(SSTD)。これは、静的スケジューラー層記述子であり、その親は、SRDまたは別のSSTDのいずれかであってもよい。SSTDの子は、別のSSTD、DSTD、または、TDのいずれかであってもよい。
5.動的スケジューラー層記述子(DSTD)。これは、動的スケジューラー層記述子である。ユーザ初期化は、必要とされないが、ランタイム操作は、必要とされる。DSTDの親は、SRDまたはSSTDのいずれかであってもよいが、DSTDは、TDの子しか持たない可能性もある。
6.ディスパッチキュー記述子。このタイプの記述子は、対応する処理リソース150からのポップオペレーションを待っているスレッド記述子のリストを記述する。ユーザ初期化は、必要とされるが、ランタイム操作は、必要とされない。
7.ペンディングキュー記述子。このタイプの記述子は、同期イベントを待っているスレッド記述子のリストを記述する。ユーザ初期化は、必要とされるが、ランタイム操作は、必要とされない。
8.プール取り付けノード(PAN)。PANは、スケジューラールート層を処理リソース150のプールルート層に取り付けるのに使用される。ユーザ初期化は、必要とされるが、ランタイム操作は、必要とされない。
9.プール静的ノード(PSN)。PSNも、また、スケジューラールート層を処理リソース150のプールルート層に取り付けるのに使用される。ユーザ初期化は、必要とされるが、ランタイム操作は、必要とされない。
10.プールルートノード(PRN)。処理リソース150のプールごとにただ1つのPRNが存在する。ユーザ初期化は、必要とされるが、ランタイム操作は、必要とされない。
図9は、スレッド記述子、コントローラ130、処理リソース150、および共有システムメモリー140の間の典型的な関係を示す。それぞれのスレッドプリミティブは、固有の参照pReferenceを含む。この参照は、コントローラ130によって解釈または変更されない。pReferenceは、実行されるべきタスクを定義するシステムメモリー140内のデータ構造へのポインタを提供する。典型的には、これは、コントローラクライアント制御ブロック125であり、少なくとも次のエレメントを含む。すなわち、関数ポインタ(処理リソース命令ブロック145として図9に示される)、スタックポインタ、および引数ポインタ(データブロック135として図9にまとめて示される)。さらなるフィールドが、定義されてもよく、それらは、帯域内設定または共有システムリソース全体のセキュリティーを提供する。
しかしながら、アプリケーションおよび/またはターゲット処理リソース150に応じて、コントローラクライアント制御ブロック125の複雑さは、変化してもよい。とりわけ、さらなるレベルの間接参照が、含められてもよく、それは、適切な「制御」命令コードおよびそれに対応する「データパス」コードが与えられるならば、異種の処理リソース150がある環境下において同じデータに同じ機能を実行するのを可能にし得ることに注意されたい。この場合、処理リソース150のタイプごとのポインタが存在し、異なる処理リソース150によって必要とされる特定の命令ストリームに対応する。異なる処理リソースに同じスレッドを実行させる能力は、また、マルチコアアーキテクチャー内において利用可能なすべての処理リソース間に負荷を分散するのを可能にする。さらに、処理リソースは、一緒にプールされてもよい。
プロセッサーリソースのプールは、特定の処理リソース150のインスタンスをただ1つの分散ノード内に集めるのを可能にする。そして、分散ノードは、特定の処理リソースプールに属する個々の処理リソース150間において、負荷分散、インテリジェントプリエンプション、および電力管理を提供してもよい。
図10および図10bは、本発明の実施形態による特徴を取り入れたデバッグシステムフレームワークの基本的な概略ブロック図を示す。図10において、本発明は、システム全体にわたるデバッグ制御のための集合ポイントを提供し、そして、図10bにおいては、本発明は、すべてのその他のデバッグおよびトレースユニットと同じようにして、外部集中デバッグ制御集合コンポーネントに接続される。
典型的には、それぞれの処理リソース150は、命令レベルのデバッグおよびトレースユニット151を提供し、命令レベルで、あるいは、それと同等なレベルで、かつ、対応する処理リソース150だけに限定して、使用される。これらは、処理リソース150に固有のものであるが、同じかまたは類似するデータを用いて動作する。
大まかに言えば、デバッグのためのこのアプローチは、次の2つの領域に分割されてもよい。デバッグ情報の抽出中にシステムが停止させられる静的動作、および情報が、ランタイムにおいて、収集され、監視され、および分配される動的動作である。
静的動作は、数ある中でも、とりわけ、ブレークポイントおよびウォッチポイントのセットアップ設定、停止およびシングルステップの管理、システム状態およびメモリー負荷のスナップショット、観察、および解析を含む。
動的動作は、数ある中でも、とりわけ、プロセッサーサイクル、キャッシュ動作、プロセッサー間通信、およびシステムインターコネクト(例えば、バス)トランザクションの監視を含む。この種の監視は、まとめて、トレースと呼ばれ、それは、システムビヘイビアの「プロファイリング」に使用される。動的なデバッグまたはトレース情報は、典型的には、組み込まれたシステムのコンポーネントによって自律的に生成される。
局所的な命令レベルデバッグおよびトレースユニット151は、組み込まれた「トリガー」ロジックを含み、それは、予め定義された所定の環境下において、対応する処理リソース150内における命令の処理を停止させるが、トレース情報の蓄積または何らかのその他の機能を開始または終了するのに使用されてもよい。トリガーは、典型的には、予め定義された「トリガーシーケンス」が観察されたことを指示するイベントビットである。
最低限、このようなトリガーロジックは、典型的には、ブレークポイントロジックを含み、そのブレークポイントロジックは、与えられた命令に遭遇すれば、割り込み(トリガー)を局所的な処理リソース150に発行する。これらのユニット内に含まれる機能の量は、処理リソース150に固有のものであるが、必要であれば、上述したように、コントローラクライアント120は、最低限のレベルの命令レベルデバッグおよびトレース能力を提供するためのデバッグウォッチレジスタを含んでもよい。これは、処理リソース150が、限られた機能、例えば、専用オーディオCODECしか有していない場合に必要とされる。
命令レベルデバッグおよびトレースユニット151のそれぞれは、デバッグアクセスポート141に接続された双方向インタフェース155および1つ以上の任意的な局所的トレースバッファー152を介してトレースポート144に接続されたトレース出力インタフェース105と、トレース集合ポイント142と、任意的な統合トレースバッファー143とを有する。
デバッグアクセスポート141は、外部「デバッグホスト」がデバッグプロセスを制御し、かつそれにアクセスするのを可能にする。典型的には、これらのホストは、シリアルポートまたはその他の類似する低速接続インタフェースプロトコルを介して、インタフェース接続する。
トレースポート144は、トレースデータへのアクセスを外部装置に提供する。これは、ソフトウェアデバッグプロセスの一部としてトレースデータの観察が発生するのを可能にする。
任意的な局所的トレースバッファー152および統合トレースバッファー143は、出力する前に、トレースデータを一時的に記憶するのに使用される。これは、システムの実行されている「スナップショット」を記憶し、そして、後のある時点において、トレースポート144から読み出すのを可能にする。そうすることによって、デバッグデータがたとえリアルタイムで出力されるにしても、トレースポート144は、必要とされ得る高速転送ができなくてもよい。これは、デバッグデータを出力するのに(少なくとも部分的に)専用使用される多数の出力ピンの必要性を除去する。これは、重要なことである、なぜなら、現在、ICダイのサイズを制限するのは、機能ロジック自体のサイズとは対照的に、何らかの特定の集積回路(IC)ダイ上に取り付けられ得る入力/出力パッドの数であるからである。
トレース集合ポイント142は、ただ単に、局所的デバッグおよびトレースユニット151から出力される複数のデバッグトレースストリーム105をただ1つの出力ストリームに多重化する役割をなし、統合トレースバッファー143に記憶する準備ができた状態にあるか、または、統合トレースバッファー143が存在しない場合には、ただ単に、トレースポート144を介して出力する準備ができた状態にある。
図10において、局所的デバッグおよびトレースユニット151のそれぞれに接続されるのは、本発明のスレッドデバッグコントローラ400である。また、このスレッドデバッグコントローラ400は、同様に、1つ以上の任意的な局所的統合トレースバッファーを介して、コントローラ130、デバッグアクセスポート141、およびトレース出力ポート144に接続される。図10のデバッグフレームワークにおいては、コントローラ130は、初期デバッグイネーブル信号450を個々のDTU151に提供し、それは、コントローラ内において観察されたイベントから最初に得られたデバッグストラテジーを示唆する。
図10bにおいて、命令レベルデバッグおよびトレースユニット151のそれぞれは、デバッグ制御集合ユニットからデバッグイネーブル信号を受信し、そのデバッグ制御集合ユニットは、本発明によって生成されたイベントを含み得る予め定義されたシーケンスのイベントを観察した結果として、このようなイネーブル信号を生成する。図10bのフレームワークは、局所的デバッグおよびトレースユニット151または本発明のいずれかから開始されてもよいデバッグストラテジーを可能にする。
図11は、本発明の実施形態のスレッドデバッグコントローラ400の具体的な入力および出力を示す。
コントローラ130のサブブロック200〜280のそれぞれは、信号をスレッドデバッグコントローラ400内へ搬送するデバッグインタフェース410を有する。これらの入力信号は、サブブロックが、個々のスレッドを管理し、かつそれらを個々の処理リソース150間に割り付けるために相互作用するとき、コントローラ130の対応するサブブロックのそれぞれにおいて発生するイベントをスレッドデバッグコントローラ400に通知する。スレッドデバッグコントローラ400は、また、情報をトレースおよびトリガーするために、サブブロックイベントをフィルタリングしてもよい。
コントローラ130のそれぞれのサブブロック内におけるコマンドの実行は、EventIDフィールドおよびEventDataフィールドをスレッドデバッグコントローラ400へ送信することをもたらす。それぞれのサブブロックはそれ自体のスレッドデバッグコントローラ400への専用インタフェース440を有するので、それぞれのイベントが関係するサブブロックは、それらのフィールドがどのインタフェースを介して送信されたかによって決定される。EventIDフィールドは、ユーザが定義することができるものであり、そのために、Nビット長であってもよいが、本発明の好ましい実施形態においては、EventIDは、4ビット長である。それぞれの個々のEventIDフィールドは、特定のサブブロック200〜280において発生する個々のイベントを識別する。
サブブロック内において発生し得るイベントの例には、キューへのまたはキューからのスレッドのプッシュ/ポップ、コントローラメモリーエレメント195への読み出し/書き込みアクセス、同期イベントの生成、および処理リソース150とコントローラ130との間におけるある形態の低レベル通信を提供するイベントが含まれる。
それぞれのEventIDを伴うEventDataフィールドは、現時点の好ましい実施形態においては、32ビット長である。このフィールドは、現時点において実行されているイベントによって使用される主たるデータを含む。通常、これは、コントローラメモリーエレメント195の32ビット長のpReference領域を含むが、さらに、その他のいくつかのデータタイプの中のいずれか1つを含んでもよく、あるいは、それぞれのデータタイプが32ビット長以下であれば、それらのデータタイプを組み合わせたものを含んでもよい。これらのその他のデータタイプの例には、コントローラメモリーエレメント195のインデックス、割り込みマスク、タイマー値、およびサブモジュールIDが含まれる。
スレッドデバッグコントローラ400は、また、時刻インタフェース420を有する。このインタフェースは、32ビット長の時刻指示を提供し、その時刻指示は、スレッドデバッグコントローラ400がコントローラ130の個々のサブブロックのそれぞれからサブブロック入力インタフェース410を介してイベントを受信したとき、ログされたすべてのイベントにタイムスタンプを押すために、スレッドデバッグコントローラ400によって使用される。
補助デバッグインタフェース430は、標準的な外部ソフトウェアデバッグシステムビジュアライゼーション制御ツールがスレッドデバッグコントローラ400にアクセスするのを可能にするための双方向インタフェースである。これらの外部ソフトウェアデバッグツールは、システムの初期化においてデバッグパラメータをセットアップすることおよび結果として得られるトレースデータを捕捉および表示することの両方に使用される。サポートされるインタフェースの例には、IEEE1149.1 JTAGインタフェースおよびより高性能のIEEE Nexus 5001 AUXポートインタフェースが含まれる。
チップのバウンダリスキャンを本来は目的としたJTAGは、シリアルリンクおよび低速クロックストラテジーを備える4線式インタフェースに基づいた技術であり、それは、現在、デバッグデータアクセスを可能にするためのマルチコアアーキテクチャー内において広く使用されている。その帯域幅限界のために、また、インタフェースが低速シリアルリンクを介してデバッグホストによって習得されるという事実のために、JTAGの使用は、典型的には、静的動作に限定される。しかしながら、それは、比較的に安価であるので(シリコン面積およびチップI/Oのために)、また、実施するのが容易であるために、JTAGは、オンチップデバッグのための標準的な物理層となりつつある。
Nexus 5001 AUXポートインタフェースは、より豊富な一連のデバッグ能力を提供し、例えば、スレッドデバッグコントローラ400の内部に存在するデバッグレジスタへの動的アクセスのような、多数の動的アクティビティーを含む。
トレースバッファーインタフェース440は、現時点において利用可能なバッファー技術とともに使用されるように設計される。特定の実施形態においては、トレースデータは、単純なバイト幅ファーストインファーストアウトインタフェースを介して出力される。図12aは、バイト幅インタフェースおよびその対応する制御信号を示し、図12bは、これらのデータおよび制御入力/出力を構成する電気的信号のタイミングを示す。シングルバイト幅インタフェースが、示されるが、当業者には、本発明はこのような範囲に限定されないことが理解できる。
再び、図11を参照すると、図10によって説明されたフレームワークにおいては、外部デバッグイネーブル信号グループ450は、すべて、局所的デバッグおよびトレースユニット151のイネーブル信号である。マルチコアアーキテクチャー10内に存在する局所的デバッグおよびトレースユニット151ごとに1つが提供され、したがって、正確な数は、設計段階中に設定される。これらの信号のそれぞれは、トリガーイベントを検出すると、1つの特定の局所的デバッグおよびトレースユニット151をイネーブル状態にすることができる。このような局所的デバッグおよびトレースユニット151のイネーブル信号を使用することによって、また、コントローラ130の動作を固有のスレッドレベルで抽象化することによって、スレッドデバッグコントローラ400は、スレッド(すなわち、マクロアーキテクチャー的な)レベルのデバッグ能力を提供し、その能力は、局所的デバッグおよびトレースユニット151の局所的命令(すなわち、マクロアーキテクチャー的な)レベルによってゲートされてもよい。これは、きめの粗いスレッドに基づいたデバッグおよびよりきめの細かい命令に基づいたデバッグの両方をソフトウェアエンジニアに提供し、それによって、さもなければプローブ効果を発生させるさらなるデバッグソフトウェアを導入することなく、デバッグプロセスを助ける。
再び、図11を参照すると、図10bによって説明されたフレームワークにおいては、外部デバッグイネーブル信号グループ450は、すべての局所的デバッグおよびトレースユニット151のイネーブル信号をデバッグ制御集合ブロックとして集めたイネーブル信号である。このような信号の正確な数は、システム設計者がデバッグ制御集合ブロックへ搬送したい離散的イベントの数によって決定される。そして、トリガーイベントを検出したときにすべてのデバッグイネーブル信号発生源をフィルタリングして適切な局所的デバッグおよびトレースユニット151をアサートするのは、デバッグ制御集合ブロックの責任である。上述したように、このような局所的デバッグおよびトレースユニット151のイネーブル信号を使用することによって、また、コントローラ130の動作を固有のスレッドレベルで抽象化することによって、スレッドデバッグコントローラ400は、スレッド(すなわち、マクロアーキテクチャー的な)レベルのデバッグ能力を提供し、その能力は、局所的デバッグおよびトレースユニット151の局所的命令(すなわち、マクロアーキテクチャー的な)レベルによってゲートされてもよい。しかしながら、この場合、トリガーシーケンスは、コントローラによって開始されなくてもよい。
スレッドデバッグコントローラ400は、また、いくつかのきめの細かいデバッグ能力を、タスク割り付けコントローラ130を構成するサブブロックに提供することに注意されたい。これらの能力については、以下で図13を参照してより詳細に説明される。
内部デバッグイネーブル信号グループ460は、スレッドデバッグコントローラ400によって、タスク割り付けコントローラ130を構成する個々のサブブロック(200〜280)のそれぞれに送信される信号からなる。これらの信号は、スレッドデバッグコントローラ400が、スレッドデバッグコントローラ400の設定に基づいて、それぞれのサブブロックにその次の命令をシングルステップで実行させるのに使用され、あるいは、サブブロック全体を停止させるのに使用される。
スレッドデバッグコントローラ割り込み信号グループ470は、2つの信号からなる。それらの信号は、スレッドデバッグコントローラ400からコントローラ130へ戻る割り込みのフィードバックを可能にする。これらの割り込みは、コントローラ130へのその他のすべての外部割り込みと同じようにハンドルされる。これらの信号の使用は、完全にプログラマブルなものであるが、それらの使用の典型的な例には、アプリケーションにおいて注意を必要とするイベントに関する統計の収集および特定の処理リソース150におけるデバッグ監視スレッドの起動が含まれる。
TSIFシステムインタフェース412は、コントローラ130のインタフェースマネージャーサブモジュール280とスレッドデバッグコントローラ400との間の通信を可能にする。このインタフェースは、SubBlockCmdスレーブ入力インタフェース490およびGenericRegマスター出力インタフェース480の両方を備える。マルチコアプロセッサー内に存在するすべての処理リソース150およびTSIFサブブロックは、通常動作およびデバッグ動作のために、例えば、アプリケーションランタイム中にデバッグパラメータをプログラムするために、SubBlockCmdスレーブ入力インタフェース490を介してスレッドデバッグコントローラ400にアクセスしてもよい。同様に、スレッドデバッグコントローラ400は、GenericRegマスター出力インタフェース480を介してコントローラ130のすべての内部サブブロックへフルアクセスすることを許可されてもよい。
図13は、コントローラ130のサブブロックのそれぞれとスレッドデバッグコントローラ400との間の接続をより詳細に示すブロック図である。スレッドデバッグコントローラ400は、汎用レジスタすなわちGenericRegインタフェース480を用いて、コントローラ130のそれぞれのサブブロック内に存在するリソースにインタフェースマネージャー(280)を介してアクセスする。このインタフェースは、また、それぞれのサブブロック上で独立してデバッグし、かつシングルステップを実行するのをスレッドデバッグコントローラ400に可能にさせる。
スレッドデバッグコントローラ400は、また、システム全体にわたるいくつかの閉ループデバッグ能力を提供する。第1に、割り込みマネージャー(TSIC)250は、スレッドデバッグコントローラ400の付加的なフィードバック割り込み470を有する。これらの割り込みは、ウォッチされている特定の一組のユーザ定義可能イベントが発生したことを指示するために、スレッドデバッグコントローラ400によって使用される。そして、この割り込みは、割り込みマネージャー(TSIC)250にSyncEventを生成させ、そのSyncEventを待っているシステム管理スレッドを解放するのに使用されてもよい。このように、デバッグシステムは、特定のシステムイベントを検出すると、システム管理スレッドをトリガーすることができる。
第2に、専用TSIFシステムインタフェース280のコマンドは、32ビットのデータを保持することのできるTSIF DebugEventを生成することができる。そして、これらは、例えば、処理状態の変化を指示するために、あるいは、ホストデバッガーと処理リソース150のそれぞれとの間の低ビットレート通信チャンネルとして、イベントを生成するのに利用されてもよい。
図14は、スレッドデバッグコントローラ400の内部の機能的実施を示す。
動的デバッグインタフェース540は、スレッドデバッグコントローラ400の動的動作の細部、例えば、どのようなシステム管理および割り付けイベントがスレッドデバッグコントローラ400によって探し出されるべきか、および特定のイベントが観察されたとき、どのようなアクションがスレッドデバッグコントローラ400によって実行されるべきかを制御するのに使用される。
静的デバッグインタフェース530は、スレッドデバッグコントローラ400の静的動作の細部、例えば、静的イベントフィルターを制御するのに使用される。
SubBlockCmdインタフェース490は、コントローラ130のインタフェースマネージャー280が動的デバッグインタフェース540にアクセスするのを可能にする。特別に設計されたマルチプレクサ560だけが、SubBlockCmdインタフェース490から動的デバッグインタフェース540にアクセスするのを可能にする。Nexusプロトコル変換器435は、IEEE Nexus 5001プロトコル標準を使用する外部デバッグホストからの信号を、スレッドデバッグコントローラ400のデバッグ動作を制御するのに適した内部信号に変換する。その際、変換器435は、また、Nexus推奨レジスタのサブセットを提供する。外部デバッグホストは、動的デバッグインタフェース540および静的デバッグインタフェース530の両方にマルチプレクサ560を介してアクセスすることを許される。外部デバッグホストは、また、コントローラ300のすべての内部サブブロック200〜280にインタフェースマネージャー280の汎用インタフェースを介してアクセスすることを許される。
図15は、いくつかのデバッグマシン500の中の1つの論理図を示す。デバッグマシン500の数は、任意のものであり、設計時に設定される。
デバッグマシン500は、複数のブレークポイントまたはウォッチポイントをセットアップする柔軟性のある設定可能な方法、および処理リソース150のいずれか1つ、プール、または、任意のグループのための複雑なトリガーシナリオを提供する。デバッグマシン500(1つ以上)は、また、トリガーシナリオの発生を観察した結果として、内部トレース記録モジュールおよび静的イベントフィルター600をイネーブル状態/ディスエーブル状態にすることができる。
それぞれのデバッグマシン500は、そのデバッグマシン500によってウォッチされるべきイベントを記憶するためのEventWatchInstファーストインファーストアウト(FIFO)レジスタ510、およびEventWatchInstFIFO510から特定のイベントを検出したときに実行されるべきアクションを記憶するためのActionListInstFIFOレジスタ515を備える。これらのレジスタは、動的デバッグインタフェース540を介して、それらのそれぞれの命令によってプログラムされる。それぞれのデバッグマシン500は、また、イベントサービスモジュール520を備え、そのイベントサービスモジュール520は、EventWatchInstレジスタおよびActionListInstレジスタの両方からの出力を取り込み、それらの出力を、コントローラ130の個々のサブブロックから入力されたシステム管理および割り付けイベントと比較する。そして、イベントサービスモジュールは、次の信号、すなわち、対応する処理リソース150の局所的デバッグおよびトレースユニット151をイネーブル状態にするときに使用するためのDebugEnable信号450、トレース情報をトレースバッファー440へ出力する静的イベントフィルター600をイネーブル状態(または、ディスエーブル状態)にするためのTraceEnable/Disable550、および現在のデバッグマシン500と互いに連結されたその他のデバッグマシンを制御するためのSyncEnable信号550の1つ以上を出力する。デバッグマシン500は、また、デバッグプログラミングのために、動的デバッグインタフェース540からの入力を有する。
図16は、本明細書で説明される本発明の特定の実施形態におけるデバッグマシン500の物理的な実施を示す。この実施形態においては、EventWatchInstFIFO510aおよびActionListInstFIFO515aは、実際に、すべてのデバッグマシン500の間で共有される2つの命令レジスタファイルとして実施される。これらの統合レジスタファイル510aおよび515aは、読み出し制御ロジックシステム506および書き込み制御ロジックシステム505を介して、論理的に独立したFIFOとしてアクセスされる。この実施は、ユーザがデバッグマシン500ごとのFIFO深度を特定の実施に適合するように個々に設定するのを可能にする。
図17は、デバッグマシン500の連結能力を示す。これは、複数の複雑なトリガーの論理的な組み合わせをプログラムする能力を提供する。デバッグマシン500のSyncEnable信号555は、これらの複雑なトリガー組み合わせを生成するのに使用される。図示されるトリガーシナリオにおいては、個々のトリガーイベントのシングルシーケンスの後には、3つのトリガーシーケンスの組み合わせが存在しなければならず、そして、その3つのトリガーシーケンスの組み合わせの後には、アクションが実行される前に、別のシングルトリガーシーケンスが、存在しなければならない。複数のデバッグマシン500が提供されるために、組み合わせられたトリガー関係は、同時に評価されてもよい。
EventWatch命令は、コントローラ130内に存在する特定のサブブロック200〜280からのシングルイベントを捕捉するのに使用される。それぞれのデバッグマシン500を制御する有限状態機械(FSM)は、EventWatch命令内に規定されるサブブロックイベントを探し出し、対応するActionList命令内において定義されたアクション(例えば、ブレークポイントイネーブルなど)を実行する。それぞれのEventWatch命令は、44ビット幅である。2つの主たる種類のEventWatch命令、すなわち、シングルワードEventWatch命令およびダブルワードEventWatch命令が存在する。ダブルワードEventWatch命令は、88ビット長であり、EventWatchInstFIFO510内の2つのエントリーを占有する。2つの種類が、次に示される。
Figure 2008513853

Figure 2008513853
両方の種類のEventWatch命令の個々のフィールドは、
1.EWOpcode():これは、オペレーションフォーマットを定義する3ビットコードである。これは、次の中のいずれかであってもよい。
Figure 2008513853

2.SubModuleID():この5ビットコードは、イベントが関係するサブブロックを定義する。
Figure 2008513853

3.EventID():この4ビットコードは、コントローラ130を構成するサブブロック200〜280のそれぞれからインタフェース410間において提供されるそれぞれのイベント内において提供されるEventIDによって説明されるように、個々のサブブロックイベントを定義する。
4.EventData():この32ビットコードは、個々のサブブロック200〜280のウォッチされるイベント、例えば、コントローラ専用コントローラメモリー190内のpReferenceフィールドを定義する。
図18は、シングルワードイベントウォッチのためのデバッグマシン500内のデータフローを示す。
シングルワードイベントウォッチの場合、次のEventWatch命令は、最初に、EventWatchInstFIFO510から、イベントサービスモジュール520内の2つのEventWatch命令バッファーの中の第1のバッファーにロードされる。次に、SubModuleID、EventID、およびEventData部分が、比較器522を用いて、入力するコントローラ130のイベントと比較される。これらは、EventIDおよびEventDataだけを含むが、SubModuleIDは、既知である。なぜなら、それぞれのサブブロックは、それ自体の特定のインタフェース410を有するからである。そして、比較の結果は、必要であれば、ORロジックブロック523を用いて、その他のデバッグマシン500によって実行されるその他の比較の結果とOR演算される。OR関数ブロックの出力は、EventWatch命令内に含まれるEWOpcodeを復号化するEventWatch命令復号器524の出力を制御するのに使用される。EventWatch命令復号器524自体の出力は、ActionList命令復号器521の出力を制御し、そのActionList命令復号器521は、EventWatch命令に対応するActionList命令を復号化し、そのEventWatch命令は、ActionList命令FIFO515からActionListバッファー516を介して以前にロードされたものである。ActionList命令復号器521の出力は、そのデバッグマシン500に対応する処理リソース150の局所的デバッグおよびトレースユニット151を制御するためのDebugEnable信号、このポイント以降からトレースデータを出力するのを可能にするためのTraceEnable信号、およびデバッグマシン500間の同期を可能にするSyncEnable信号のいずれかであってもよい。
シングルワードEventWatch命令内に存在するフィールドに加えて、ダブルワードEventWatch命令は、一組のマスクを含み、それらのマスクは、EventWatch命令フィールドと対照して評価される前に、MaskOpフィールド内に規定される命令に基づいて、SubmoduleID、EventID、およびEventDataの入力に適用される。MaskOpフィールドは、次のいずれかの値を有してもよい。
Figure 2008513853
図19は、ダブルワードEventWatch命令が実行される場合におけるデバッグマシン500内のデータフローを示す。シングルワードEventWatch命令の実行との原理の違いは、ダブルワードEventWatch命令のワード1のSubModuleIDフィールド、EventIDフィールド、およびEventDataフィールドが、上の表に示されるMaskOpコードの種類に応じて、ダブルワードEventWatch命令のワード0と、AND演算、OR演算、または、XOR演算されることである。
シングルおよびダブルのEventWatch命令の両方は、同じActionList命令を使用する。ActionList命令は、デバッグマシン500(1つ以上)が、複雑なブレークポイントのトリガー、トレースのイネーブルまたはディスエーブル、および様々なデバッグマシン500間の同期を達成するのを可能にし、次のフィールドを含む。
Figure 2008513853
図20は、静的イベントフィルター600の機能ブロック図を示し、その静的イベントフィルター600は、システム管理および割り付けイベントをトレースデータフォーマッター圧縮器モジュール700に転送する前に、捕捉するために、それらのシステム管理および割り付けイベントのフィルタリングを実行する。このフィルターモジュール600は、また、時刻インタフェース420からの32ビットの入力を用いて、コントローラ130から受信されたすべてのイベントにタイムスタンプを押すことを実行する。
静的イベントモジュールは、静的インタフェース530を介して、一組のユーザプログラマブルイベントフィルターマスク611〜613を提供し、そのイベントフィルターマスク611〜613は、特定のサブブロック200〜280からの特定のイベントが捕捉されるべきかどうかを選択するのに使用される。イベントフィルターマスクは、SubModuleIDフィールド、EventIDフィールド、およびEventDataフィールドに適用される。データのシングルビットごとに、2つのビットが、イベントフィルターマスクごとに割り付けられる。これは、結果として、イベントフィルターマスクごとに割り当てられた76ビットのフィルターマスクをもたらす。これらの2つのビットのそれぞれの有効な意味は、次の通りである。
Figure 2008513853
ユーザが定義することのできる数のイベントフィルターマスク611〜613が、4つのイベントフィルターマスクテーブル610の中の1つに割り付けられてもよい。それぞれのイベントフィルターテーブル610が、ユーザが定義することのできる数のイベントフィルターマスク611〜613を含んでもよい。しかしながら、この特定の実施形態においては、これらのテーブルは、連続的なフィルターマスクを含まなければならない。これらのテーブルは、フィルターマスクサブセットを提供することによって、さらなるプログラマビリティーおよびハードウェアリソースの効率的な使用を可能にし、個々のデバッグマシン500がそれらのフィルターマスクサブセットを使用できるようにしてもよい。
図21は、特定のイベントフィルターマスク611〜613を特定のイベントフィルターマスクテーブル610に割り付けることを示す。この例においては、フィルターテーブル番号3は、使用されていないことに注意されたい。
図22は、本明細書に説明される本発明の特定の実施形態のトレースデータフォーマッター圧縮器700の機能ブロック図を示す。
トレースデータフォーマッター圧縮器モジュール700は、限られた容量のオンチップトレースバッファーモジュールができるだけ効果的に使用されることを保証するために、トレースデータを圧縮する。圧縮モジュールは、トレース集合装置142または統合トレースバッファー143とともに提供されてもよいが、これらは、処理リソース150のそれぞれに対応する局所的デバッグおよびトレースユニット151のそれぞれからの命令レベルまたはそれと同等なレベルのデバッグおよびトレースデータを集合させかつ圧縮するように設計される。データの性質がよく知られておりかつ類似するタイプであれば、圧縮は、最適化される。したがって、この圧縮器700は、スレッドデバッグコントローラ400からもし存在すれば統合集合ポイント142へ出力される前に、静的イベントフィルター600から得られた周知のタイプのデータおよび類似する形態のデータに作用する。
トレースデータフォーマッター圧縮器700は、すべてのフィルタリングされかつタイムスタンプを押されたサブブロックイベントを次に利用可能な2エントリーFIFO720内にルーティングするイベントスイッチ710を含み、それらのFIFOは、フィールドベース相関器730への入力を構成する。FIFOは、シングルワードイベントまたはダブルワードイベントを記憶するのを可能にするために、2エントリーである。イベントスイッチ710は、コントローラ130の10個のサブブロック200〜280からの10個のイベントを同時に受け入れることができる。イベントスイッチは、常に、現時点において利用可能な最も小さい番号のFIFO720に書き込む。
すべてのFIFO720が、少なくとも1つのエントリーを含んでしまえば、あるいは、内部タイマーが、満了して、現在のFIFOロードサイクルの終了を指示すれば、FIFOは、フィールドベース相関器内へプッシュされる。内部タイマーは、少なくとも1つのエントリーが10個のFIFO720の中のいずれかに存在すれば、固定値としてロードされ、イベントが読み出されると、再びロードされる。
フィールドベース相関器730は、所定の長さのイベントフィールドに対して所定の関数演算を実行し、出力するときのフィールド内のゼロの数を最大化する。これは、第1のFIFOを基準にしたそれぞれのフィールド内における空間的相関および時間的相関を利用することによってなされる。したがって、第1のFIFOは、そのままにされる。そして、FIFO2〜10および変更されないFIFO1の結果として得られる所定の長さのフィールドは、イントラシンボルランレングス符号器750へ入力される前に、別のフィールド相関FIFO740へ出力される。このイントラシンボルランレングス符号器750は、それぞれの入力シンボルに対してゼロランレングス符号化を実行し、一組の可変長出力シンボルをもたらす。これらは、最終的な出力ビットストリームをもたらすインターシンボルランレングス符号器770内にロードされる前に、再度、一組の出力FIFO760に記憶される。最終的な出力ビットストリームは、可変長パケット化器780によって、トレースバッファーインタフェース440に適した可変長パケットとしてパケット化される。
トレースパケットデータのフォーマットは、物理層に依存する。物理層がパケット信号の明示的な開始点を持たない環境下においては、受信機FSMは、いくつかのパケットを飛び越えてパケット記述をロックオンするために、固定パターンヘッダーおよびパケット長フィールドを使用してもよい。例としてのパケットフォーマットが、以下に示される。
Figure 2008513853
再び、図14を参照すると、スレッドデバッグコントローラ500の内部デバッグ制御モジュール580は、個々のサブブロックデバッグイネーブル信号およびシングルステップ機能をコントローラ130内のサブブロック200〜280に提供する。デバッグマシン500のいずれかから内部DebugEnable信号を受信すると、内部デバッグ制御モジュール580は、指定されたサブブロックをデバッグモードにする。また、ユーザは、動的デバッグインタフェース540を介して、指定されたサブブロックにシングルステップで実行させることができる。
本発明の特定の実施形態が、説明されたが、これは単なる例として説明されたものであり、様々な変形が考えられてもよいことを理解すべきである。さらに、本発明は、限定はされないが、例えば、携帯電話またはボイスオーバーインターネットプロトコル(VoIP)ゲートウェイのようなマルチコアプロセッサーを使用する装置または用途に一般的に適用される。したがって、特定の実施形態は、添付の特許請求の範囲によって決定されるべき保護範囲を限定するものと理解されるべきではない。
典型的なマルチコアプロセッサーアーキテクチャーシステムの論理的レイアウトを示す概略ブロック図である。 図1の論理的レイアウトの例示的な一実施を示す概略ブロック図であり、スレッド管理および割り付けコントローラが、専用メモリー装置およびコントローラクライアントとともに、汎用マルチコアプロセッサーアーキテクチャー内に組み込まれている。 図2のエレメントを含む最新のシステムオンチップ(SoC)バスベースアーキテクチャーの一例をブロック図の形で示す図である。 図1、図2、および図3のコントローラの外部接続をより詳細に示す図である。 図2および図3のメモリー装置をより詳細に示す図である。 図2、図3、および図4のコントローラの内部構造をより詳細に示す図である。 図2および図3に示されるコントローラクライアントを示す概略ブロック図である。 複数の処理リソースの代理の役割をなすシングルコントローラクライアントの場合のシステムを示す概略ブロック図である。 ハードウェアコントローラクライアントをより詳細に示す概略ブロック図である。 スレッド記述子、コントローラ、処理リソース、および共有システムメモリー間の典型的な関係を示す図である。 本発明の実施形態によるデバッグアーキテクチャーを含む典型的なマルチコアプロセッサーアーキテクチャーシステムの論理的レイアウトの例示的な一実施を示す概略ブロック図である。図10において、コントローラは、デバッグ制御のための中央アービタの役割をなす。 本発明の実施形態によるデバッグアーキテクチャーを含む典型的なマルチコアプロセッサーアーキテクチャーシステムの論理的レイアウトの別の例示的な実施を示す概略ブロック図である。図10bにおいて、本発明の一部を構成しないさらなるコンポーネントは、コントローラを含むマルチコアプロセッサーアーキテクチャー内に存在するすべてのコア間のデバッグイベント集合を提供する。 図10および図10bに示されるスレッドデバッグコントローラの外部接続をより詳細に示す図である。 図10および図10bに示されるスレッドデバッグコントローラのトレースバッファーの外部接続をより詳細に示すブロック図である。 図12aに示されるトレースバッファーの典型的な出力のタイムチャートである。 図10および図10bに示されるスレッドデバッグコントローラの外部接続をより詳細に示す別の図であり、図2に示されるコントローラのサブブロックへの接続を含む。 図11に示されるスレッドデバッグマネージャーの内部構造を示す機能ブロック図である。 図14に示されるデバッグマシンの中の1つを示す論理的ブロック図である。 図14に示されるデバッグマシンの中の1つを示す物理的ブロック図である。 図14に示されるデバッグマシンの連結能力の例を示す図である。 シングルワードEventWatchの場合におけるデバッグマシン内の命令データフローを示す図である。 ダブルワードEventWatchの場合におけるデバッグマシン内の命令データフローを示す図である。 図14の例示的な静的イベントフィルターモジュールを示す機能ブロック図である。 図20に示される静的イベントフィルターモジュール内におけるイベントフィルターマスクの例示的な割り付けを示す図である。 図14に示されるトレースデータフォーマッター/圧縮器モジュールの例を示すブロック図である。

Claims (32)

  1. スレッドを処理するための複数のインターコネクトされたプロセッサーエレメントを備えるマルチコアプロセッサーアーキテクチャー内においてスレッドの実行を監視する方法であって、
    1つのスレッドまたは複数のスレッドの機能および/またはアイデンティティーおよび/または実行ロケーションに関する1つ以上のパラメータを指示する複数のスレッドパラメータインジケータを受信するステップと、
    スレッドパラメータインジケータの中の少なくとも1つを、関心のあるインジケータをそれぞれが表現する第1の複数の予め定義された基準と比較するステップと、
    前記比較の結果として関心のあるものであると識別されたスレッドパラメータインジケータによって得られる出力を生成するステップと、
    を備える方法。
  2. 出力を生成するステップが、複数のインターコネクトされたプロセッサーエレメントの中の1つ以上を制御するための制御信号を生成する工程を含む、請求項1に記載の方法。
  3. インターコネクトされたプロセッサーエレメントが、局所的な命令レベルのデバッグロジックをさらに備え、前記方法が、前記プロセッサーエレメント制御信号を用いて、前記命令レベルのデバッグロジックをイネーブル状態にするステップをさらに備える、請求項2に記載の方法。
  4. マルチコアプロセッサーアーキテクチャーが、いくつかの個々のサブユニットを含むコントローラをさらに備え、出力を生成するステップが、コントローラの個々のサブユニットの中の1つ以上を制御するための制御信号を生成する工程を含む、請求項1に記載の方法。
  5. スレッドパラメータインジケータが、コントローラによって生成される、請求項4に記載の方法。
  6. スレッドパラメータインジケータが、コントローラ内に含まれる個々のサブユニットの中の1つ以上によって生成される、請求項5に記載の方法。
  7. 前記サブユニット制御信号が、コントローラ内に含まれるサブユニットの中の1つ以上を停止させるための信号を含む、請求項4に記載の方法。
  8. 前記サブユニット制御信号が、コントローラ内に含まれるサブユニットの中の1つ以上に、スレッドを管理し、かつプロセッサーエレメント間に割り付けるのに必要とされる次のオペレーションをステップで実行させるための信号を含む、請求項7に記載の方法。
  9. 出力を生成するステップが、比較の後に発生する複数のスレッドパラメータインジケータのリストを含む出力を生成する工程を含む、請求項1に記載の方法。
  10. 比較の後に発生する複数のスレッドパラメータインジケータのリストを含む出力を生成するステップが、前記比較の結果に基づいて開始する、請求項9に記載の方法。
  11. マルチコアプロセッサーアーキテクチャーが、複数のユーザ定義可能スレッドパラメータインジケータフィルターをさらに備え、前記方法が、複数のスレッドパラメータインジケータをフィルタリングし、関心のあるインジケータを突き止めるステップをさらに備える、請求項9または10に記載の方法。
  12. マルチコアプロセッサーアーキテクチャーが、グローバル時刻信号をさらに備え、前記方法が、グローバル時刻信号を指示するコードと比較した後に発生する複数のイベントにタイムスタンプを押すステップをさらに備える、請求項11に記載の方法。
  13. マルチコアプロセッサーアーキテクチャーが、スレッドパラメータインジケータのリスティングをフォーマットし、かつ圧縮するためのフォーマッター圧縮器をさらに備え、前記方法が、スレッドパラメータインジケータフィルターから出力されるスレッドパラメータインジケータのリスティングをフォーマットおよび圧縮するステップをさらに備える、請求項12に記載の方法。
  14. コントローラから、または、プロセッサーエレメントの1つ以上から入力信号を受信するステップと、
    前記コントローラまたはプロセッサーエレメントから受信された入力信号に基づいて、複数の予め定義された基準を変更するステップと、
    をさらに備える、請求項1に記載の方法。
  15. マルチコア処理アーキテクチャーが、第1のプロトコルに基づいた信号を第2の異なるプロトコルに基づいた信号に変換するためのプロトコル変換器をさらに備え、前記方法が、
    プロトコル変換器から入力信号を受信するステップと、
    プロトコル変換器から受信された入力信号に基づいて複数の予め定義された基準を変更するステップと、
    をさらに備える、請求項1または14に記載の方法。
  16. イベントの少なくともいくつかを、関心のあるインジケータをそれぞれが表現する第2の複数の予め定義された基準と比較するステップと、
    前記第1の比較および第2の比較の結果として関心のあるものであると識別されたスレッドパラメータインジケータによって得られる出力を生成するステップと、
    をさらに備える、請求項1〜15のいずれか一項に記載の方法。
  17. 第1または第2の複数の予め定義された基準が、特定のタイプのスレッドの特定のインスタンスを指示する基準を含む、請求項1または16に記載の方法。
  18. 第1または第2の複数の予め定義された基準が、コントローラの特定のサブユニットを指示する基準を含む、請求項1または16に記載の方法。
  19. 第2の複数の予め定義された基準が、第1の比較と第2の比較との間の関係を指示する基準を含む、請求項17または18に記載の方法。
  20. 第1の比較と第2の比較との間の関係が、
    AND演算関係、
    OR演算関係、または、
    XOR演算関係、
    のいずれかである、請求項19に記載の方法。
  21. 複数のインターコネクトされたプロセッサーエレメントを有するマルチコアプロセッサーアーキテクチャーにおけるソフトウェアデバッグのためのスレッドレベルデバッグコントローラであって、それぞれのエレメントが、スレッドを処理するためのリソースを提供し、デバッグコントローラが、前記プロセッサーエレメントのそれぞれと通信できる状態にあり、かつ、マルチコアプロセッサーアーキテクチャー内におけるスレッドの割り付けおよび実行を監視するための監視ロジックを備えるデバッグコントローラ。
  22. マルチコアプロセッサーアーキテクチャーが、コントローラをさらに備え、前記コントローラが、いくつかのインターコネクトされた個々のサブユニットを備え、監視ロジックが、複数のデバッグマシンをさらに備え、前記デバッグマシンのそれぞれが、予め定義された基準に関して、前記サブユニットのそれぞれからの複数の入力信号を監視するようになっており、前記入力信号が、マルチコアプロセッサーアーキテクチャー内におけるスレッドの割り付けおよび実行を指示する、請求項21に記載のデバッグコントローラ。
  23. マルチコアプロセッサーアーキテクチャーが、プロセッサーエレメントのそれぞれに特有の命令レベルデバッグ監視ロジックエレメントをさらに備え、デバッグマシンのそれぞれが、さらに、特定の基準を検出したことに基づいて命令レベルデバッグ監視ロジックエレメントの中の1つ以上に出力制御信号を提供するようになっている、請求項22に記載のデバッグコントローラ。
  24. 関心のある信号を得るためにマルチコアプロセッサーアーキテクチャー内におけるスレッドの割り付けおよび実行を指示する複数の入力信号をフィルタリングするための複数のフィルターをさらに備え、デバッグマシンのそれぞれが、またさらに、前記複数のフィルターのどれが前記複数の入力信号をフィルタリングするのに使用されるかを制御するためのフィルター制御信号を提供するようになっている、請求項23に記載のデバッグコントローラ。
  25. マルチコアプロセッサーアーキテクチャー内における出力される準備のできたスレッドの割り付けおよび実行を指示するフィルタリングされた複数の入力信号をフォーマットおよび圧縮するためのフォーマッター圧縮器をさらに備える、請求項24に記載のデバッグコントローラ。
  26. 前記複数のデバッグマシンのそれぞれが、検出される準備のできた基準と、前記基準のそれぞれが検出されたときにマルチコアプロセッサーアーキテクチャーによって実行されるべきアクション命令のリストとを記憶するためのメモリーをさらに備える、請求項22に記載のデバッグコントローラ。
  27. 基準を記憶するための前記メモリーが、スレッドデバッグコントローラによって独占使用されるスレッドデバッグコントローラ専用メモリーである、請求項26に記載のデバッグコントローラ。
  28. 前記複数のデバッグマシンのそれぞれが、検出基準を、マルチコアプロセッサーアーキテクチャー内におけるスレッドの割り付けおよび実行を指示する信号と比較するための比較器をさらに備える、請求項26または27に記載のデバッグコントローラ。
  29. 前記複数のデバッグマシンの出力が、前記デバッグマシン比較器の出力間の関係を制御するための制御ロジックによって互いにインターコネクトされ、デバッグマシン出力間の前記関係が、
    AND演算関係、
    OR演算関係、または、
    XOR演算関係、
    のいずれかである、請求項28に記載のデバッグコントローラ。
  30. マルチコアプロセッサーアーキテクチャー内におけるスレッドの割り付けおよび実行を指示する信号内において検出された1つ以上の検出基準の特定のインスタンスの検出に関連するアクション命令を復号化するための命令復号器をさらに備える、請求項29に記載のデバッグコントローラ。
  31. 複数のフィルターが、基準マスクのリストを備え、前記フィルターのそれぞれが、マスクのリスト内に一組の連続的なマスクを備え、前記フィルターのそれぞれが、フィルターイネーブル信号のアサーションによってイネーブル状態にされる、請求項24に記載のデバッグコントローラ。
  32. 外部デバッグホストからの第1のプロトコルに基づいたデバッグ制御入力信号を、デバッグコントローラを制御するのに適した第2の異なるプロトコルに基づいた信号に変換するためのプロトコル変換器をさらに備える、請求項21〜31のいずれか一項に記載のデバッグコントローラ。
JP2007530774A 2004-09-14 2005-09-13 マルチコアアーキテクチャーにおけるデバッグ Active JP5610668B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0420442.6 2004-09-14
GB0420442A GB0420442D0 (en) 2004-09-14 2004-09-14 Debug in a multicore architecture
PCT/GB2005/003525 WO2006030195A2 (en) 2004-09-14 2005-09-13 Mehtod and system for debugging a multi- threaded program executing in a multicore architecture

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012263380A Division JP5492280B2 (ja) 2004-09-14 2012-11-30 マルチコアアーキテクチャーにおけるデバッグ

Publications (2)

Publication Number Publication Date
JP2008513853A true JP2008513853A (ja) 2008-05-01
JP5610668B2 JP5610668B2 (ja) 2014-10-22

Family

ID=33306559

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2007530774A Active JP5610668B2 (ja) 2004-09-14 2005-09-13 マルチコアアーキテクチャーにおけるデバッグ
JP2012263380A Active JP5492280B2 (ja) 2004-09-14 2012-11-30 マルチコアアーキテクチャーにおけるデバッグ
JP2013144994A Active JP5492332B2 (ja) 2004-09-14 2013-07-10 マルチコアアーキテクチャーにおけるデバッグ

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2012263380A Active JP5492280B2 (ja) 2004-09-14 2012-11-30 マルチコアアーキテクチャーにおけるデバッグ
JP2013144994A Active JP5492332B2 (ja) 2004-09-14 2013-07-10 マルチコアアーキテクチャーにおけるデバッグ

Country Status (7)

Country Link
EP (1) EP1805621B1 (ja)
JP (3) JP5610668B2 (ja)
KR (3) KR101311846B1 (ja)
CN (3) CN102508781B (ja)
GB (1) GB0420442D0 (ja)
TW (3) TWI408547B (ja)
WO (1) WO2006030195A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9619011B2 (en) 2013-08-14 2017-04-11 Samsung Electronics Co., Ltd. System on chip for debugging a cluster regardless of power state of the cluster, method of operating the same, and system having the same
JP2021108129A (ja) * 2017-03-29 2021-07-29 グーグル エルエルシーGoogle LLC 分散ハードウェアトレーシング
US11921611B2 (en) 2017-03-29 2024-03-05 Google Llc Synchronous hardware event collection

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9038070B2 (en) 2004-09-14 2015-05-19 Synopsys, Inc. Debug in a multicore architecture
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
CN100451972C (zh) * 2006-09-26 2009-01-14 杭州华三通信技术有限公司 提高多核系统访问临界资源速度的方法和装置
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8380966B2 (en) 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US7962885B2 (en) * 2007-12-04 2011-06-14 Alcatel-Lucent Usa Inc. Method and apparatus for describing components adapted for dynamically modifying a scan path for system-on-chip testing
KR100958303B1 (ko) 2007-12-12 2010-05-19 한국전자통신연구원 멀티코어 시스템 환경에서 내부 코어 간 통신채널을 이용한 모듈 디바이스의 동적 적재 및 실행을 통한 부하 균등화 시스템 및 방법
AT505630B1 (de) * 2008-02-05 2009-03-15 Ver Fachhochschule Technikum W Einrichtung zum koordinierten testen und zur fehlersuche in verteilten eingebetteten mikroprozessorsystemen
JP2010117813A (ja) * 2008-11-12 2010-05-27 Nec Electronics Corp デバッグシステム、デバッグ方法、デバッグ制御方法及びデバッグ制御プログラム
US8495344B2 (en) * 2010-01-22 2013-07-23 Via Technologies, Inc. Simultaneous execution resumption of multiple processor cores after core state information dump to facilitate debugging via multi-core processor simulator using the state information
TWI470421B (zh) * 2010-03-16 2015-01-21 Via Tech Inc 微處理器及其除錯方法
KR101151284B1 (ko) * 2010-04-06 2012-06-08 주식회사 안철수연구소 인젝션 스레드의 네트워크 행위 차단 시스템 및 그 방법
US8766666B2 (en) 2010-06-10 2014-07-01 Micron Technology, Inc. Programmable device, hierarchical parallel machines, and methods for providing state information
CN102655440A (zh) * 2011-03-03 2012-09-05 中兴通讯股份有限公司 对多套Turbo译码器进行调度的方法和装置
TWI497419B (zh) * 2011-10-20 2015-08-21 Via Tech Inc 電腦裝置及其中斷任務分配方法
CN102819218B (zh) * 2012-07-19 2015-04-29 西安交通大学 基于事件控制函数的离散事件系统监控器及其控制方法
US9672041B2 (en) * 2013-08-01 2017-06-06 Andes Technology Corporation Method for compressing variable-length instructions including PC-relative instructions and processor for executing compressed instructions using an instruction table
CN104331388B (zh) * 2013-08-28 2018-09-11 威盛电子股份有限公司 微处理器及在微处理器的处理核间同步的方法
CN104572515B (zh) * 2013-10-28 2019-05-31 锐迪科(重庆)微电子科技有限公司 跟踪模块、方法、系统和片上系统芯片
US20150127927A1 (en) * 2013-11-01 2015-05-07 Qualcomm Incorporated Efficient hardware dispatching of concurrent functions in multicore processors, and related processor systems, methods, and computer-readable media
CN103631752A (zh) * 2013-12-19 2014-03-12 无锡美森微电子科技有限公司 一种众核处理器片上网络实时通信时间戳方法及系统
US9195493B2 (en) * 2014-03-27 2015-11-24 International Business Machines Corporation Dispatching multiple threads in a computer
US9626265B2 (en) 2015-06-29 2017-04-18 International Business Machines Corporation Efficiency of cycle-reproducible debug processes in a multi-core environment
CN105740155A (zh) * 2016-03-09 2016-07-06 惠州Tcl移动通信有限公司 一种Modem CPU的调试实现方法及实现系统
US10222995B2 (en) * 2016-04-13 2019-03-05 Samsung Electronics Co., Ltd. System and method for providing a zero contention parallel data stack
CN107678892B (zh) * 2017-11-07 2021-05-04 黄淮学院 基于跳跃恢复链的连续数据保护方法
US10579501B2 (en) 2018-04-04 2020-03-03 International Business Machines Corporation Testing and reproduction of concurrency issues
US11119782B2 (en) * 2018-05-07 2021-09-14 Micron Technology, Inc. Thread commencement using a work descriptor packet in a self-scheduling processor
US11513839B2 (en) * 2018-05-07 2022-11-29 Micron Technology, Inc. Memory request size management in a multi-threaded, self-scheduling processor
US11513840B2 (en) * 2018-05-07 2022-11-29 Micron Technology, Inc. Thread creation on local or remote compute elements by a multi-threaded, self-scheduling processor
US11074078B2 (en) * 2018-05-07 2021-07-27 Micron Technology, Inc. Adjustment of load access size by a multi-threaded, self-scheduling processor to manage network congestion
US11513838B2 (en) * 2018-05-07 2022-11-29 Micron Technology, Inc. Thread state monitoring in a system having a multi-threaded, self-scheduling processor
CN113352329A (zh) * 2021-06-28 2021-09-07 珠海市一微半导体有限公司 机器人多系统调试信息的实时序列化方法及机器人
CN116340188B (zh) * 2023-05-26 2023-08-04 深流微智能科技(深圳)有限公司 Gpu芯片渲染任务的调试方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04211842A (ja) * 1990-03-29 1992-08-03 Mitsubishi Electric Corp 集積回路装置
WO2000073809A1 (fr) * 1999-05-26 2000-12-07 Hitachi, Ltd. Circuit integre a semi-conducteur
JP2001154876A (ja) * 1999-10-01 2001-06-08 Stmicroelectronics Inc マイクロコンピュータデバッグアーキテクチャ及び方法
US20030005417A1 (en) * 2001-06-29 2003-01-02 Gard James J. Debugger for a hardware-implemented operating system
JP2004021751A (ja) * 2002-06-19 2004-01-22 Matsushita Electric Ind Co Ltd デバッグ装置、デバッグプログラム、およびデバッグプログラム記録媒体

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2538897B2 (ja) * 1987-01-14 1996-10-02 富士通株式会社 デ−タ処理装置
JPH05324399A (ja) * 1992-03-23 1993-12-07 Toshiba Corp 情報監視装置
JPH06161817A (ja) * 1992-11-18 1994-06-10 Yokogawa Electric Corp スレッドオンラインデバッグ装置
JP2866591B2 (ja) * 1994-01-10 1999-03-08 インターナショナル・ビジネス・マシーンズ・コーポレイション オブジエクトの使用可能性の通知方法及び装置
JPH0816430A (ja) * 1994-06-27 1996-01-19 Mitsubishi Electric Corp 並列プログラムトレース装置
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
UA55489C2 (uk) * 1997-10-07 2003-04-15 Каналь+ Сосьєте Анонім Пристрій для багатопотокової обробки даних (варіанти)
JPH11338733A (ja) * 1998-02-27 1999-12-10 Toshiba Corp デバッグ装置及び記録媒体
US6625635B1 (en) * 1998-11-02 2003-09-23 International Business Machines Corporation Deterministic and preemptive thread scheduling and its use in debugging multithreaded applications
US6593940B1 (en) * 1998-12-23 2003-07-15 Intel Corporation Method for finding errors in multithreaded applications
JP3604029B2 (ja) * 1999-01-12 2004-12-22 日本電気株式会社 マルチスレッドプロセッサ
US6587967B1 (en) * 1999-02-22 2003-07-01 International Business Machines Corporation Debugger thread monitor
CA2383531A1 (en) * 1999-09-01 2001-03-08 Intel Corporation Instruction for multithreaded parallel processor
CN1148656C (zh) * 1999-09-07 2004-05-05 皇家菲利浦电子有限公司 面向线程的调试
US6668275B1 (en) * 1999-12-17 2003-12-23 Honeywell International Inc. System and method for multiprocessor management
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
JP2002014841A (ja) * 2000-06-30 2002-01-18 Esol Co Ltd デバッグカーネルシステム
US7448025B2 (en) * 2000-12-29 2008-11-04 Intel Corporation Qualification of event detection by thread ID and thread privilege level
CN1170225C (zh) * 2001-08-28 2004-10-06 华为技术有限公司 自动测试系统的仪器模块驱动实现方法
JP2003131902A (ja) * 2001-10-24 2003-05-09 Toshiba Corp ソフトウェアデバッガ、システムレベルデバッガ、デバッグ方法、及びデバッグプログラム
JP2003263331A (ja) * 2002-03-07 2003-09-19 Toshiba Corp マルチプロセッサシステム
GB0407384D0 (en) * 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
JP2006053835A (ja) * 2004-08-13 2006-02-23 Sony Corp 情報処理装置、デバッグ方法及びそのプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04211842A (ja) * 1990-03-29 1992-08-03 Mitsubishi Electric Corp 集積回路装置
WO2000073809A1 (fr) * 1999-05-26 2000-12-07 Hitachi, Ltd. Circuit integre a semi-conducteur
JP2001154876A (ja) * 1999-10-01 2001-06-08 Stmicroelectronics Inc マイクロコンピュータデバッグアーキテクチャ及び方法
US20030005417A1 (en) * 2001-06-29 2003-01-02 Gard James J. Debugger for a hardware-implemented operating system
JP2004021751A (ja) * 2002-06-19 2004-01-22 Matsushita Electric Ind Co Ltd デバッグ装置、デバッグプログラム、およびデバッグプログラム記録媒体

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9619011B2 (en) 2013-08-14 2017-04-11 Samsung Electronics Co., Ltd. System on chip for debugging a cluster regardless of power state of the cluster, method of operating the same, and system having the same
JP2021108129A (ja) * 2017-03-29 2021-07-29 グーグル エルエルシーGoogle LLC 分散ハードウェアトレーシング
JP7250832B2 (ja) 2017-03-29 2023-04-03 グーグル エルエルシー 分散ハードウェアトレーシング
US11650895B2 (en) 2017-03-29 2023-05-16 Google Llc Distributed hardware tracing
US11921611B2 (en) 2017-03-29 2024-03-05 Google Llc Synchronous hardware event collection

Also Published As

Publication number Publication date
JP2013239196A (ja) 2013-11-28
WO2006030195A2 (en) 2006-03-23
CN102508781A (zh) 2012-06-20
KR20130032413A (ko) 2013-04-01
TW201333680A (zh) 2013-08-16
CN101084488B (zh) 2012-03-14
JP5492280B2 (ja) 2014-05-14
GB0420442D0 (en) 2004-10-20
JP5492332B2 (ja) 2014-05-14
TWI474162B (zh) 2015-02-21
TW201333681A (zh) 2013-08-16
JP5610668B2 (ja) 2014-10-22
TW200613964A (en) 2006-05-01
WO2006030195A3 (en) 2007-02-22
KR101311846B1 (ko) 2013-09-27
TWI475376B (zh) 2015-03-01
CN102521137B (zh) 2015-10-28
CN101084488A (zh) 2007-12-05
EP1805621A2 (en) 2007-07-11
KR20120097422A (ko) 2012-09-03
TWI408547B (zh) 2013-09-11
CN102521137A (zh) 2012-06-27
KR101365121B1 (ko) 2014-03-12
CN102508781B (zh) 2015-10-14
EP1805621B1 (en) 2016-08-17
KR101248175B1 (ko) 2013-03-27
JP2013127782A (ja) 2013-06-27
KR20070083590A (ko) 2007-08-24

Similar Documents

Publication Publication Date Title
JP5610668B2 (ja) マルチコアアーキテクチャーにおけるデバッグ
US9830241B2 (en) Debug in a multicore architecture
US7058855B2 (en) Emulation interface system
US9684583B2 (en) Trace data export to remote memory using memory mapped write transactions
US9639447B2 (en) Trace data export to remote memory using remotely generated reads
JP2011243110A (ja) 情報処理装置
US20110239196A1 (en) Micro-Task Pipeline Visualization
US20150127992A1 (en) Using an in-system component as an embedded trace receiver
US10088523B2 (en) Debug adapter
Stollon et al. Nexus IEEE 5001
Stollon Multicore Debug
EP4200707A1 (en) Microchip with on-chip debug and trace engine
Stollon et al. Bus System Debug

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080724

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20081219

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090205

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090310

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110802

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111101

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111202

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20120524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120627

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121130

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130116

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20130329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140902

R150 Certificate of patent or registration of utility model

Ref document number: 5610668

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250