JP6423037B2 - マルチスレッドプロセッサのためのインタースレッドトレースアライメント方法およびシステム - Google Patents

マルチスレッドプロセッサのためのインタースレッドトレースアライメント方法およびシステム Download PDF

Info

Publication number
JP6423037B2
JP6423037B2 JP2017076029A JP2017076029A JP6423037B2 JP 6423037 B2 JP6423037 B2 JP 6423037B2 JP 2017076029 A JP2017076029 A JP 2017076029A JP 2017076029 A JP2017076029 A JP 2017076029A JP 6423037 B2 JP6423037 B2 JP 6423037B2
Authority
JP
Japan
Prior art keywords
thread
predetermined event
threads
common predetermined
execution tracing
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.)
Expired - Fee Related
Application number
JP2017076029A
Other languages
English (en)
Other versions
JP2017152014A (ja
JP2017152014A5 (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2017152014A publication Critical patent/JP2017152014A/ja
Publication of JP2017152014A5 publication Critical patent/JP2017152014A5/ja
Application granted granted Critical
Publication of JP6423037B2 publication Critical patent/JP6423037B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3636Debugging of software by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)

Description

<関連出願>
本出願は次の同時係属の米国特許出願番号と関連する。NON-INTRUSIVE, THREAD-SELECTIVE, DEBUGGING METHOD AND SYSTEM FOR A MULTI-THREAD DIGITAL SIGNAL PROCESSORと題され、2006年11月15日に出願された出願番号11/560,217と、METHOD AND SYSTEM FOR A DIGITAL SIGNAL PROCESSOR DEBUGGING DURING POWER TRANSITIONSと題され、2006年11月15日に出願された出願番号11/560,323と、METHOD AND SYSTEM FOR TRUSTED/UNTRUSTED DIGITAL SIGNAL PROCESSOR DEBUGGING OPERATIONSと題され、2006年11月15日に出願された出願番号11/560,332と、EMBEDDED TRACE MACROCELL FOR ENHANCED DIGITAL SIGNAL PROCESSOR DEBUGGING OPERATIONSと題され、2006年11月15日に出願された出願番号11/560,339と、METHOD AND SYSTEM FOR INSTRUCTION STUFFING OPERATIONS DURING NON-INTRUSIVE DIGITAL SIGNAL PROCESSOR DEBUGGINGと題され、2006年11月15日に出願された出願番号11/560,344。
[0001] 開示された主題は、データ通信および同じようなアプリケーションでの使用を見つけ得るような、データ処理システムとプロセスに関する。より詳しくは、この開示は、マルチスレッドプロセッサのためのインタースレッドトレースアライメント方法およびシステムを提供することを含むデジタル信号処理デバッギング動作のための新しく改善された方法およびシステムに関する。
[0002] テレコミュニケーション、他のタイプの電子機器およびサポートビデオ、合成音声、テレビ会議、および他の豊富なソフトウェアアプリケーションは、ますます信号処理を含んでいる。信号処理は、複雑だが反復のアルゴリズムにおいて、高速の数学的な計算およびデータ生成を必要とする。多くのアプリケーションがリアルタイムな計算(すなわち、信号が時間の連続関数であり、それはサンプリングされ、数値処理のためのデジタル信号に変換されなければならない)を必要とする。プロセッサは、計算が達するように、サンプルについて個別の計算を行うアルゴリズムを実行しなければならない。
[0003] デジタル信号プロセッサ(DSP)のアーキテクチャは上記のアルゴリズムを処理するために最適化される。よい信号処理エンジンの特性は、高速の融通性のある演算計算ユニット、計算ユニットへのまたは計算ユニットからの制約のないデータフロー、計算ユニットでの拡張精度およびダイナミックレンジ、デュアルアドレス生成器、効率的なプログラムシーケンス、およびプログラミングの容易さを含んでいる。
[0004] DSP技術の1つの有望なアプリケーションは、テキストメッセージングおよび他のアプリケーションだけでなく、衛星または地上波のリンク上のユーザー間で、音声およびデータ通信をサポートする符号分割多元接続(CDMA)システムのような通信システムを含んでいる。多重アクセス通信システムにおけるCDMA技術の使用は、“SPREAD SPECTRUM MULTIPLE ACCESS COMMUNICATION SYSTEM USING SATELLITE OR TERRESTRIAL REPEATERS”と題された米国特許4,901,307番と、“SYSTEM AND METHOD FOR GENERATING WAVEFORMS IN A CDMA CELLULAR TELEHANDSET SYSTEM”と題された米国特許5,103,459番と、に開示されていて、両方はクレームされた主題の譲受人に譲渡されている。
[0005] CDMAシステムは、1以上の標準規格に準拠するように典型的に設計されている。1つの上記の第1世代標準規格は、“TIA/EIA/IS-95 Terminal-Base Station Compatibility Standard for Dual-Mode Wideband Spread Spectrum Cellular System”であり、以下IS−95標準規格と称する。IS−95CDMAシステムは音声データとパケットのデータを送信することができる。より効率的にパケットデータを送信し得るより新規の世代標準規格は、“3rd Generation Partnership Project”(3GPP(登録商標))と名付けたコンソーシアムによって提示され、文献番号3G TS 25.211、3G TS 25.212、3G TS 25.213、および3G TS 25.214(これらは公に容易に入手可能である)を含む1セットの文献に具体化されている。3GPP標準規格は以下ではW−CDMA(登録商標)標準規格と称す。
[0006] W−DCMA標準規格を用いる複雑なDSPオペレーショナルソフトウェアは例えば、ロバストな開発ツールを必要とする。上記の開発ツールは、コード生成、統合、試験、デバッギング、およびアプリケーションのパフォーマンス評価することに関するツールを含み得る。高度なテレコミュニケーションアプリケーションのような、開発中かつ動作するソフトまたは複雑なDSPアプリケーションでは、精巧であるにもかかわらず、非侵入型の(non-intrusive)デバッギングソフトウェアの必要がある。すなわち、デバッキングソフトウェアアプリケーションは、ソフトウェアの欠陥および運用上の問題の修正を監視し、試験し、かつサポートするために十分にロバストであるだけであってはならない。同時に、デバッキングソフトウェアは、同時デバッギング動作中にコアプロセッサソフトウア動作に干渉しないように動作する必要があり得る。そうでなければ、コア処理ソフトウェアにおける任意の問題は、ソフトウェアデバッギング動作に検出されないか、適切に検出されない可能性がある。
[0007] デバッギング動作中に、DSPの内の動作スレッドの処理の動作をトレースするための非侵入型のソフトウェアデバッギング動作トレーシング機能に関連づける必要がある。上記のシステムは、特定のイベントが発生する前および後の両方に情報をキャプチャーするためのDSPの状態パラメーターについてのそのような情報を提供し得る。同時に望ましいトレーシング機能は、DSPが全力で動作している間にさえ、プロセッサの性能に重大な負担を加えることができない。非侵入型のデバッギング動作とに、上記のトレーシングプロセスは特定のタイプの情報をキャプチャーし得る。従ってトレーシング機能は、マルチスレッドプロセッサにおいて非侵入型のデバッギング動作と共に、視し記録することを提供する。
[0008] トレーシング機能が提供し得る情報の特に有用な1つのセットは、インタースレッド実行動作を含んでいる。すなわち、マルチスレッドDSPの異なるスレッド間でトレーシングデータを相互に関連付ける能力がある1セットのトレースする機能の必要がある。既知のシステムは上記の情報を提供しない。デバッギングソフトウェア動作において、ユーザーは、マルチスレッドプロセッサが特定の時点で実行し得る命令がどれかを知るために任意の時点を選ぶことを望み得る。この情報は、異なるスレッドが異なる時で異なるスレッドごとのデバッギング動作を起動するインスタンスにおいて特に価値があり得る。
[0009] インタリーブされたマルチスレッドDSPにおいて、多重命令シーケンスの実行が同時に発生し得る。そのため、プロセッサはいくつかの単一スレッドで構成された独立に動作するプロセッサとして見なされ得る。一旦、上記のプロセッサは、動作スレッドの各々のランタイム実行シーケンスを記録する実行トレーシングユニットを含み得る。これらのトレースは、プログラムフローをパケットのシーケンスに分解することにより、プログラムデバッギング動作を容易にする。このようなシステムでは、スレッド数フィールドは、どのパケットがどのスレッドに属するかを識別するために、あるパケットに加えられ得る。このようなアプローチで、特定のスレッドに関するパケットシーケンスはそれぞれ、すべてのプログラムフロー変更およびすべての命令タイミングを含む全実行シーケンスを再作成し得る
[0010] どのパケットがどのスレッドに属するかを識別することが有利である一方、既知のトレーシング機能は、実行トレーシング中にインタースレッドタイミング関係を識別する能力を提供しない。例えば、トレース起動間の時間差は、あるスレッドから別のスレッドまで非常に大きいかもしれない。スレッドトレーシングが異なる時間にある異なるスレッドにおいて開始する場合、1つのスレッドのタイミングをトレースされる他のスレッドと整列させることは可能ではないかもしれない。
[0011] 従って、異なるDSPスレッド間でタイミング関係を確立し維持する非侵入型のデバッギングプロセス内で動作することができる1セットのトレース機能が必要である。
[0012] しかし、マルチスレッドプロセッサの埋め込まれたトレースマクロセルプロセスと関連した使用に関してマルチスレッドプロセッサの異なるスレッドのアライメントを可能にする方法およびシステムがさらに必要である。
[0013] またさらに、コアプロセッサソフトウェア動作中に発生する非侵入型のインシリコンデバッギングプロセスの広いアレイと共同して動作することができるインタリーブされたマルチスレッドプロセッサのためのインタースレッドトレースアライメント方法およびシステムが必要である。
[0014] マルチスレッドプロセッサにおいてインタースレッドトレースアライメントを提供するための技術は開示される。その技術は、インタースレッドタイミング関係を識別するために異なるスレッド間の種々のタイミング関係を確立し維持するために、埋め込まれたトレースマクロセルと協働する。ここで開示された方法およびシステムは、関連したデジタルプロセッサ速度およびサービス品質を増大させるだけでなく、パーソナルコンピュータ、携帯情報端末、無線ハンドセットおよび同じような電子機器において動作するアプリケーションを含むますます強力なソフトウェアアプリケーションのために、デジタル信号プロセッサの動作とデジタル信号プロセッサ命令の効率的な使用との両方を改善する。開示された主題の一の態様によれば、共通所定イベントに関するタイミングデータを記録することを含む、実行トレース処理でのインタースレッドトレースアライメントのための方法とシステムが、提供される。このような共通所定イベントは、最後のスレッドが実行トレーシングを開始してからのサイクル数であってもよく、または全てのスレッドが実行トレーシングを終了してからのサイクル数でもよい。スレッドが実行トレーシングを開始するサイクル数は、実行トレーシングのタイミングを維持するため共通所定イベントに参照される。その後、共通所定イベントに関するデータは、スレッドが実行トレーシングを開始した時と関連づけるために更新される。その結果、すべてのスレッドに関連したタイミングデータを整列させることを可能にする。相互関係があレコードは、すべての動作スレッドについてタイミングデータを同期させるだけでなく、マルチスレッドプロセッサにおいて動作するスレッドに関する相互依存の実行トレーシング情報を再構成することも可能にする。
[0015] 開示された主題のこれらおよび他の利点は、追加の新規な特徴だけでなく、ここで提供される詳細な説明から明白になる。この要約の意図は、クレームされた主題の包括的な詳細な説明であることではなく、むしろ主題の機能性のうちのいくらかの短い概要を提供することである。ここで提供される他のシステム、方法、特徴および利点は、以下の図および詳細な説明の試験時に、当業者に明白になるだろうのような追加のシステム、方、特徴および利点すべてがこの詳細な説明内に含まれ、また、添付の請求項の範囲内であることが意図される。
[0016] 開示された主題の特徴、性質および利点は、同じ参照文字が全体にわたって対応して識別する図面と合わせられると、以下で述べられる詳細な説明からより明白になり得る
[0017] 図1はここで開示された種々の実施形態のうちの1つを実装し得る通信システムの単純化されたブロック図である。 [0018] 図2は本開示の教えを先へ進めるためのDSPアーキテクチャを示す。 [0019] 図3は現在開示された主題の技術的な利点を組込むマルチスレッドデジタル信号プロセッサの一実施形態のアーキテクチャブロック図を提供する。 [0020] 図4は本開示のISDB/JTAGインターフェースの特徴を適用するデジタル信号プロセッサコアのある態様を開示する。 [0021] 図5は本開示が関係する動作のデバッギングモードを含む、デジタル信号プロセッサの動作モードに適用可能なプロセスフロー図を提示する。 [0022] 図6は本開示の埋め込まれたトレースマクロセルの全体の機能概観を表すブロック図を提供する。 [0023] 図7は、開示された埋め込まれたトレースマクロセルプロセスおよびシステムのトリガーブロック回路を示す。 [0024] 図8は現在開示されたインタースレッドトレースアライメントプロセスの重要な概念を示す。 [0025] 図9は開示された主題において適用可能なものとしてパケット生成ユニットの機能概要を示す。 [0026] 図10は現在開示された主題の命令に適用可能な種々のアトムに関する定義の表を示す。 [0027] 図11は本開示に役立つものとして32ビットのTIDフィールドをサポートする本開示に関するbranch−addressパケットを提供する。 [0028] 図12は現在開示されたプロセスで使用のためのisync−restartパケットの典型的な内容を提示する。 [0029] 図13は現在開示された主題をサポートするためのisync−periodicパケットの実施形態を表す。 [0030] 図14はこの開示されたプロセスで使用のためのサイクルカウントパケットを提示する。 [0031] 図15は本開示に適切なものとしてpheaderフォーマット4パケットの一実施形態を示す。 [0032] 図16は開示された主題の実施形態によ使用のためのasyncパケットを表す 図17は、本出願に関する参考図である。
[0033] マルチスレッドデジタル信号プロセッサの実行トレースプロセスに関連した使用のためのインタースレッドトレースアライメント方法およびシステムは、ここで提示される利点が有利になる可能性があるあらゆるタイプのマルチスレッド処理に関するアプリケーションを持っている。上記の1つのアプリケーションが、テレコミュニケーション、および特に1以上のデジタル信号処理回路を用いる無線ハンドセットに見られる。上記の無線ハンドセットがどのように用いられ得るかを説明するために、図1は、開示された割込み処理方法およびシステムの本実施形態を実装し得る通信システム10の単純化されたブロック図を提供する。送信機ユニット12では、データは、データソース14から、1以上のアナログ信号を生成するためにデータをフォーマットし、符号化し、処理する送信(TX)データプロセッサ16、典型的にはブロックで送られる。その後、アナログ信号は、変調された信号を生成するために、ベースバンド信号を変調し、フィルターし、増幅し、アップコンバートする送信機(TMTR)18に提供される。その後、変調された信号は、1以上の受信機ユニットにアンテナ20を介して送信される。
[0034] 受信機ユニット22では、送信された信号は、アンテナ24によって受信され、受信機(RCVR)26に提供される。受信機26内では、受信信号は、フェーズ(I)および(Q)サンプルにおいて生成するために、増幅され、フィルターされ、ダウンコンバートされ、復調され、デジタル化される。その後サンプルは、送信データを回復するために、受信(RX)データプロセッサ28によって復号され処理される。受信機ユニット22で復号することおよび処理することは、送信機ユニット12で行われ処理および符号化と相互補完的に行われる。その後、回復されたデータは、データシンク30に提供される。
[0035] 以上記述された信号処理は、音声、ビデオ、パケットデータ、メッセージング、および一方向での他の通信タイプの送信をサポートする。双方向通信システムは双方向データ送信をサポートする。しかし、別の方向に関する信号処理は単純化のため図1に示されない。通信システム10は、符号分割多元接続(CDMA)システム、時分割多重アクセス(TDMA)通信システム(例えばGSM(登録商標)システム)、周波数分割多元接続(FDMA)通信システム、または地上波のリンク上でのユーザー間の音声およびデータ通信をサポートする他の多重アクセス通信システムであり得る。特定の実施形態では、通信システム10はW−CDMA標準規格に準拠するCDMAシステムである。
[0036] 図2は、図1の受信データプロセッサ28および送信データプロセッサ16として役立ち得るDSP 40アーキテクチャを示す。我々は、DSP 40が、ここで提示される教えと概念を有効に使用する非常に多数の可能なデジタル信号プロセッサの実施形態のなか単に一実施形態を表しているに過ぎないことを強調する。従ってDSP 40では、スレッドT0からT5(参照番号42から52)は、異なるスレッドからの命令のセットを含んでいる。回路54は命令アクセス機構を表し、スレッドT0からT5について命令をフェッチすることに用いられる。回路54に関する命令は命令キュー56の待ち行列に入れられ(queued)。命令キュー56での命令は、プロセッサパイプライン66(以下を参照)へ発行される準備ができている。命令キュー56から、単一のスレッド(例えばスレッドT0)は問題論理回路58によって選択される。選択されたスレッドのレジスタファイル60取ら取られたデータはSLOT0からSLOT3について実行データパス62に送られる。この例においてSLOT0からSLOT3は、本実施形態において用いられた組合せをグループ化するパケットを提供する。
[0037] 実行データパス62からの出力は、DSP 40の動作から結果を返すために、個別のスレッドT0からT5を適応するように構成されて、レジスタファイル書込み回路64に行く。このように、回路54およびそのからレジスタファイル書込み回路64までのデータ経路は、処理パイプライン66を形成する。本実施形態は、最大6つのスレッドT0からT5有するシングルプロセッサを用いて、異種機種環境にある要素プロセッサ(HEP:heterogeneous element processor)システムのハイブリッドを用い得る。プロセッサパイプライン66は、6つの段階を持っていて、回路54からレジスタ60および64までのデータ項目をフェッチするのに必要な、プロセッササイクルの最小数と一致する。DSP 40は、同時にプロセッサパイプライン66内の異なるスレッドT0からT5の命令を実行する。すなわち、DSP 40は、6つの独立したプログラムカウンタ、プロセッサパイプライン66内のスレッドT0からT5の命令を区別する内部タギング機構、およびスレッドスイッチをトリガーする機構を提供する。スレッドスイッチオーバーヘッドはゼロからほんの少しのサイクルまで様々である
[0038] DSP 40は、従って、種々様々の信号、画像およびビデオの処理アプリケーションにわたって、高性能および低電力であるように設計された汎用のデジタル信号プロセッサを提供する。図3は、開示された主題の1つの明示に関する関連した命令セットアーキテクチャのいくつかの態様を含むDSP40アーキテクチャの概要提供する。DSP 40アーキテクチャの実装はインターリーブマルチスレッド(IMT)処理をサポートする。この実行モデルでは、ハードウェアが、パイプラインでの異なるスレッドからの命令をインタリーブすることによって、多重ハードウェアスレッドT0からT5の同時実行をサポートする。この特徴は、常に高いコアおよびメモリ使用を維持しながら、DSP 40がアグレッシブなクロック周波数を含むことを可能にする。IMT処理は、正常でない実行、広範囲な転送ネットワークなどのような高価な補償機構の必要なく高スループットを提供する。さらに、DSP 40は、IMT処理の変型例、例えば、M.Ahmedらによる「Variable Interleaved Multi-threaded Processor Method and System」、「Method and System for Variable Thread Allocation and Switching in a Multi-threaded Processor」と題された、同一出願人による米国特許出願において開示された変型例と新規のアプローチを含んでも良い。
[0039] 図3は、特に、開示された主題の教えを用い得る単一のスレッドに適用されるようなDSP 40についてコアプロセシングアーキテクチャブロック図70を提供する。ブロック図70は、AXIバス74からバスインタフェース(I/F)73を介して命令を受信する、共有される命令キャッシュ72を表す、それらの命令は混合された16ビットおよび32ビットの命令を含んでいる。これらの命令は、スレッドT0からT5の、スーパーバイザー制御レジスタ80、シーケンサー76、およびユーザー制御レジスタ78に達する。開示された主題のコアレベルシステムアーキテクチャーはまた、インシリコンデバッギングシステム(ISDB)82を含んでいる。それはJTAGインターフェース84を通じてコアプロセッサ70を接続する、それらの両方はより詳細に以下で説明される。
[0040] シーケンサー76は、Sパイプユニット86、M−パイプユニット88、LD[Load]−パイプ90、およびLD/ST[Store]−パイプユニット92、これらのすべては汎用レジスタ94と通信するに、ハイブリッドの双方向のスーパースカラー命令および4方向のVLIM命令を提供する。AXIバス74はまた、スレッドT0からT5へのLD/ST命令を、バスI/F 73を介して共用データキャッシュ96と通信する。オプションのL2キャッシュ/TCM 98信号は、共用データTCM 100を有するLD/ST命令を含んでおり、LD/ST命令はさらにスレッド汎用レジスタ94に流れる。AHB周辺バス102から、MSM特定コントローラ104はT0からT5で、割込みコントローラ命令、デバッギング命令、およびタイミング命令を含む割込みを通信する。グローバル制御レジスタ106はスレッドT0からT5で制御レジスタ命令を通信する。
[0041] DSP 40は従って、それぞれグローバル制御レジスタ106およびプライベートスーパーバイザー制御レジスタ80を含む6つの仮想DSPコアを含んでいる。グローバル制御レジスタ106はすべてのスレッド間で共有される。スレッドはそれぞれ共通データキャッシュおよび共通の命令キャッシュを共有する。ロード、蓄積およびフェッチ動作は共通バスインタフェースによって提供される。高性能AXIバス74およびより低い性能のAHBバス102は、オフコアメモリおよび周辺装置にデータおよび命令トラフィックを接続するために用いられる。統合レベル2のメモリ(キャッシュおよび/またはTCM)入力98はオプションである。周辺のアクセスはメモリマップされたロードおよびストアを介し得る。AHBとAXIとの間の物理アドレスパーティションはMSMレベルで構成され得る
[0042] 明確に、DSP 40に関する提示されたアーキテクチャは時間とともに発展し変り得る。例えば、DSP 40が用い得る命令キャッシュの数は、6から1に、または他のキャッシュ数に変化する。スーパースカラーディスパッチ、TCM 98でのL1データ、および他のアーキテクチャの態様は変り得る。しかし、現在の主題は、種々様々の構成においてかつDSP 40の変更の大きなファミリーにして、引き続き有効であり得る
[0043] ISDB 82は、JTAGインターフェース84を介して、DSP 40にハードウェアデバッガを提供する。ISDB 82はシステムまたはスーパーバイザーのみのレジスタを共有することによってJTAGインターフェース84を介してソフトウェアデバッグ特徴を提供する。これらのレジスタは、すべてのスレッド間のグローバル制御レジスタ106だけでなく、各スレッドベースでスーパーバイザー制御レジスタ80に分割される。システム制御レジスタは、スレッドごとの割込み、および例外処理制御およびスレッドごとの記憶管理動作に使用される。グローバルレジスタはデバッギング動作ためISDB 82と相互作用することを可能にする。
[0044] ISDB 82によって、ソフトウェア開発者はDSP 40が動作している間にソフトウェアをデバッグすることができる。ISDB 82ハードウェアは、ISDB 82で動作するソフトウェアデバッガプログラムと組み合わされて、システムソフトウェアを操作するDSP 40をデバッグするために用いられ得る。ISDB 82はハードウェアスレッドを個々にデバッグすることをサポートする。ユーザーは、スレッド実行を一時停止し、スレッドレジスタを調査変更し、命令およびデータメモリを調査変更し、複数のステップスレッドを選出し、スレッドに命令を詰めスレッド実行を再開し得る
信頼されているユーザーはISDB 82特徴のすべてへのアクセス権を有するが、信頼されていないユーザーは特徴のサブセットへのアクセス権を有している。
[0045] ISDB 82は、ISDB 82がプログラムカウンタ(PC)に存在するソフトウェアをデバッグしながら通信するために、すべてJTAGインターフェース84を介してであるが、デバッガインターフェースカードと接続し得る。ホストデバッガソフトウェアは、ISDB制御レジスタを読取りおよび書込みすることにより、ISDB 82と相互に作用し得る。通信は、例えば、32ビットのデータペイロードと同様に、読取りまたは書込みが発生するISDBレジスタを識別する40ビットのパケットを介し得る。この動作をサポートするパケットフォーマットは、各々32ビット幅であり得最大4の制御レジスタであり得る
[0046] 図4は、デバッギング機構と開示された主題のコアプロセッサとの間のISDB/JTAGインターフェース110の重要な態様を示す。DSP 40コアアーキテクチャ70と共同して、ISDB 82は、ISDB JTAG回路114から経路JTAGインターフェース経路112を介してJTAG 84と通信する。ISDB JTAG回路114は、JTAG 84とISDB 82との間のデータの流れを処理する。ISDB JTAG回路114はさらにISDB JTAGSync回路116を接続する。ISDB JTAGSync回路116は、ISDBコントローラ118、命令ユニット(IU)120および制御ユニット(CU)122とさらに通信する。特に、ISDB JTAGSync回路116は、IU 120のIU ISDB論理回路とCU122のCU ISDBコントローラ126をインターフェースで接続する。CU ISDBコントローラ126は、ISDBコントローラ118だけでなく、CU ISDB論理回路128と通信する。ISDBコントローラ118からの制御出力は、ISDBデータ出力130、ISDBリセット信号132およびISDB割込み134を含んでいる。さらにISDBコントローラ118へのインターフェースは、MCDインターフェース136およびETMブレークポイントトリガー138を含んでいる。
[0047] 図5は、デバッギングプロセスにISDB 82の動作を含むDSP 40の、種々のモード制御態様についての処理モード図140を示す。図5では、DSP 40はすべてのスレッドに対してグローバルであり個々のスレッドに対してローカルでもある処理モードをサポートする。DSP 40ハードウェアスレッドはそれぞれ、すべて図5に見られるように、個々に2つの実行モード、すなわちユーザモード142およびスーパーバイザーモード144、3つの非処理モード、すなわち待機モード146、オフモード148およびデバッグモード150をサポートする。スレッドのモードは他のスレッドに依存せず、例えば、一方のスレッドは待機モード146であってもう一方がユーザモード142であり得る
[0048] 図5のスレッドごとのモード状態図は種々の命令またはイベントによってサポートされる。これらは、「除外」、すなわち内部例外イベント、「nt」、すなわち外部割込みイベント、「RTE」、すなわち例外モードからのソフトウェアリターン命令、「SSR」、すなわちSSRレジスタ命令へのアップデート、「停止」、すなわち任意のモードから入り得るソフトウェア停止命令、同様に任意のモードから入ってもよい「開始」、すなわちソフトウェア開始命令、「trap」、すなわちソフトウェアトラップ命令、「待機」、すなわちソフトウェア待機命令、「レジューム、すなわちソフトウェアレジューム命令、「DE」、すなわちデバッグイベント、および、「DR」、すなわちデバッグ命令を含む。クレームされた主題の異なる実行における機能はここで提示されたものとわずかに異なり得、「開始」「待機」、「レジューム」、「DE」および/または「DR」の意味は、クレームされた主題の範囲と一致するそれらの最も広い解釈を与えられ得る
[0049] レジスタは、ユーザモード142およびスーパーバイザーモード144の両方におけるDSP 40において利用可能である。ユーザーモードレジスタは、1セットの汎用レジスタおよび1セットの制御レジスタに分割される。汎用レジスタは、アドレス生成、スカラーおよびベクトル算術を含むすべての多目的計算のために用いられる。制御レジスタは、ハードウェアループ、述語などのような専用機能性をサポートする。多目的レジスタは、32ビット幅で、単一のレジスタ、または整列したペアの2つのレジスタとしてアクセスされ得る。汎用レジスタファイルは、ロード/蓄積のためのアドレス、数値に関する命令のためのデータオペランド、およびベクトル命令のためのベクトルオペランドを含む命令に関するオペランドをすべて提供する。
[0050] デバッグモード150は、スレッドがISDB 82からのコマンドを待機している特別な状態を提供する。ソフトウェアブレークポイント命令の実行、ISDB 82からのブレークポイントコマンド、またはハードウェアブレークポイントの発生によって、ISDBデバッグイベントが発生する場合は常に、指示されたスレッドはデバッグモード150に入り得る。デバッグモード150の、コアはJTAGインターフェース84からのコマンドを介してISDB 82によって制御される。ISDB 82がレジュームコマンドの実行によりスレッドを解放する場合、スレッドはそれらの現在モード設定に従って動作を再開し得る。スレッドがデバッグモード150にある場合、それはISDB 82によって制御され、他のスレッドによって制御されることはできない。デバッグモード150にあるスレッドをターゲットとする、実行中のスレッドからの待機、再開、開始、あるいは停止命令は無視され得る。同様に、マスク不可能割り込み(NMI:Non-Maskable Interrupt)はデバッグモード150にあるスレッドによって無視され得る
[0051] HARDWARE RESETモード(図5に図示せず)およびデバッグモード150は、すべてのスレッドに対してグローバルである。任意のスレッドの処理状態にかかわらず、ハードウェアリセットピンがアサートされる場合は常に、DSP 40はHARDWARE RESETモードに入り得る。HARDWARE RESETモードにおいて、レジスタはすべてそれらのリセット値に設定される。ハードウェアリセットピンがデアサートされるまで、処理は発生しない。リセットピンがアサートされる場合、プロセッサはリセットモードへ移行し、レジスタはすべてそれらのHARDWARE RESET値にリセットされ得る。リセットピンがデアサートされた後、スレッドT0はソフトリセット割込みを与えられ得る。これはスレッドT0スーパーバイザーモード144に入らせ、リセットベクトル位置で実行を開始させ得る。他のすべてのスレッドはオフのままであり得る。この点では、ソフトウェアは、各スレッドそれぞれに関するモード遷移個々に自由に制御できる
[0052] 図6から17は、DSP 40の埋め込まれたトレースマクロセル(ETM)ユニットの現在開示された新規かつ有利な特徴に関し、それは、ソフトウェア実行フローに関する詳細情報をリアルタイムでキャプチャーすることによってコードのユーザーデバッギングを向上させる。ETMは、選択されたDSP 40実行を非侵入に監視し記録し、実行情報をパケットにフォーマット化し、パケットストリームをETBとして知られるオンチップメモリまたはオフチップへ送る。ETMはまた、関与する領域へトレース情報の生成を制限するか集中させるために多くの機構を含んでいる。パケットストリームを用いると、実行の再構成が引き起こされることができ、ユーザーにコードのランタイム動作の直接視認を与える
[0053] ETMは従って、DSP 40および他の同じようなデジタル信号プロセッサに関する包括的なデバッグおよびトレース機能を提供する。これらの機能は、特定のイベントの前後でプロセッサの状態についての情報がキャプチャーされることを可能にし、一方で、DSP 40がフルスピードで動作するときでさえも、プロセッサの性能に負担を加えない。ETMは、精選されたトレース情報だけを条件の特殊シーケンス後にだけキャプチャーするようにソフトウェアで構成され得る。専用設定可能なトレースポートおよびFIFOは、圧縮トレースデータが、プロセッサに割り込まず、影響を及ぼすことなく、外部のトレースポート解析器によってチップから読取られることを可能にする。
[0054] トレースポートはコアクロックに対して独立したトレースクロックと共に1から32ビットデータバスで構成されることができる。例えば、ETMからのデータレートは、コアクロックの半分であることができ、ピンの数はデータ帯域幅を維持するために増加されることができる。同様に、ピンの数は半分にすることができ、データレートは増加されることができる。ETMは、スタンドアロンおよびマルチコア環境内の両方において用いられ得る。開発者が多重かつ非同期コアからの同時かつ相関したトレースを調査することを可能にする。
[0055] 図6は、本開示をサポートする様々な全体のETM機能を表すブロック図160を提供する。DSPコアプロセッサ70は、ETM162をインターフェース接続し、それは、トリガリングフィルタリング回路164および圧縮パケット化回路166を含んでいる。トリガリングフィルタリング回路164および圧縮パケット化回路166による処理に続いて、ETM出力168は、例えば埋め込まれたトレースバッファ(ETB)回路またはオフチップ回路であり得るトレース保存部170に流れる。トレース保存部170から、ソフトウェア実行記録はデバッグホスト173へ出力172として流れる。デバッグホスト173は、トレース保存部出力172を受信し再構成された実行フロー176からそこに生成するためのデコンプレッサ成分174を含んでいる。ETM162はJTAG 84から、入力したJTAG 84がデバッグホスト173からのデータおよび命令に応じて生成する制御入力178を受信する。
[0056] 図6に示すように、ETM162はDSP 40パイプラインを監視する。この情報を用いて、ETM162は2つの主要な機能(フィルタリング/トリガリング、および圧縮/パケット化)を行う。フィルタリングおよびトリガリング動作は、JTAGインターフェース84を介してユーザーによってプログラムされ、トレーシングいつオンオフすべきかを定義するために用いられる。圧縮/パケット化ユニットはDSP 40に実行情報を持ち込み、効率的にそれを、トレースポートを介してETM162から送り出されるパケットにフォーマット化する。ETM162を出るトレースストリームは、トレース保存部170に供給される。トレース保存部170は、トレース記録を記録するために大きなメモリキャパシティを提供し、オフチップまたはオンチップのいずれかであり得る。オンチップ保存部は埋め込まれたトレースバッファ(ETB)として知られている。デコンプレッサコンポーネント174は、トレース保存部170からパケットストリームを取り、プログラムイメージに加えて、DSP 40の実行フローを再構成してユーザーにDSPパイプライン66への詳細な視界を与える、デバッグホスト173上で動作するソフトウェアコンポーネントである。
[0057] ETM162は、プロファイリングカウント(キャッシュミス、バンクコンフリクトおよびミクロtlbのミス)を記録し送り出す能力だけでなく、6つのスレッドすべてに関するトレース命令順序付けおよびタイミングを提供する。
ETM162は、LDSTデータだけでなく、PCとLDSTのアドレスについてもトリガーし得る。ETM162はシリアルかつ外部のイベント検出をサポートする。さらにETM162はまた、ISDBブレークポイントトリガーイベント、外部トリガーイベントおよびDSP 40割込みを生成し得るある実施形態では、ETM162はJTAG 84を介してプログラム可能であり、ある実施形態では512x32ビットの専用のETBトレース保存部をサポートし得る。ETM162は4つのトリガーブロック(各々2つのアドレスおよび1つのデータコンパレーターを有する)を含み、3つの状態のシーケンサーを含み得る。ETM162トレーシングは、安全なDSP 40の制御下でイネーブルレジスタを動し得、DSP 40パワー下中の動作のためにプログラムされ得る。
[0058] ETM162は、時間内に所定のウィンドウ上のスレッドに関するプログラムカウンタの十分な進行の記録として命令トレースを生成する。オプションで、プログラムカウンタ進行のタイミング(つまりストールサイクルの識別)も、命令トレースに含まれることができる。イベントリソース機構はいつこれらの命令トレースを生成するべきであるかを定義するために用いられる。トリガーとフィルタリング機能はイベントリソースのプログラミングを通じて制御される。より詳細には、イベントリソースは、フィルタリング、トリガリング、およびISDBブレークポイント生成を制御する。フィルタリングは、いつ命令トレースを有効にし無効にするべきであるかを決定する機能を含んでいる。トリガリングはいつトリガーマーカーをパケットストリームに挿入するかを決定することを含んでいる。ISDBブレークポイント判定は、ISDB 82がデバッギング動作ためのブレークポイントを生成しブレークポイントに応答する条件を指定することを含んでいる。
[0059] ETM162は、DSP 40内の特定の条件がいつ発生するか(例えば、あるPCが実行されるかどうか、またはある記憶位置が読取られるかどうか)を検知するために、複数のプライマリイベントリソース(例えばアドレスおよびデータコンパレーター)を含んでいる。更に、イベントのより複雑な配置の検出を可能にする第2のイベントリソース(トリガーブロックおよびシーケンサー)がある。
[0060] ETBトレース保存部170は、トレース情報がデバイスのピンでトレースポートを介して直ちにエキスポートされるではなくキャプチャーの間に記憶される、オンチップメモリエリアを提供する。その後保存された情報は、一旦キャプチャーが完了したならば、ETBトレース保存部170から減じられたクロックレートで読取られることができる。これはJTAGインターフェース84を介してなされる。この2ステップのプロセスは、多数の高速デバイスピンを用いる広範のトレースポート必要性を除去する。事実上、「ゼロピン」トレースポートは、デバイスがピン既にJTAGポートを有するところ生成される。ETBトレース保存部170は、トレースポート帯域幅制約を超えて、より高い周波数かつ32ビットのデータポートでデータを読取り、システムインテグレーターによって供給されたRAMブロックで統合され得る
[0061] 一実施形態において、ETBトレース保存部170は、512のエントリとして設けられる2KBのサイズを有していて、それぞれ32ビット幅である。しかし、ETBトレース保存部に関する他のサイズは、明らかに開示された主題の範囲内である。ETBトレース保存部170は、1セットのJTAGアクセス可能なレジスタを介してユーザーをインターフェース接続する。レジスタはそれぞれ、JTAGインターフェース84を介して読取られまたは書込まれることができる。これらのレジスタは、一旦トレースキャプチャーが完了すると、トレースキャプチャーセッションに関するETBトレース保存部170をセットアップし、かつETBトレース保存部170の内容を読取るために用いられる。ETBトレース保存部170は、ETBトレース保存部170のメモリアレイの中へインデックスとして読取りポインタを提供する。JTAGインターフェース84を介してETBトレース保存部170の内容を読取る場合、読取りポインタは読む位置を指示する。ETBトレース保存部170はまた、ETBトレース保存部170メモリアレイの中へインデックスとして書込みポインタを提供する。トレースデータがETBトレース保存部170へ書込まれる場合、それは書込みポインタによって指示されたエントリに書込まれる。書込み作の各々は、書込みが発生する後に、次の位置への書込みポインタを自動インクリメントする。ETBトレース保存部170は、単にETMトレースストリームの小さなウィンドウをキャプチャーし得る。ETBは、いつデータをキャプチャーするかを決定するためにETMからトリガーパケットを捜し、およびトリガーカウンタは、ETBトレース保存部240によってキャプチャーされたトリガー前のデータとトリガー後のデータとの間の境界を特定するために使用される。
[0062] ETM162は、従って、プログラマがDSP 40に関するコードをデバッグするのを援助する。ETM162は、時間内に所定のウィンドウ上のスレッドに関する実行フローの記録である命令トレースを生成する。記録された命令トレースを用いると、プログラマは、それらのコードのランタイム動作についての詳細な表示を見ることができる。例えば、ユーザーのプログラムが原因不明の例外を生成する場合、ETM162は例外に至るまでの命令のフローを決定するのを援助し、その結果ユーザーが厳密に起こったことを評価することを可能にする。ETM162は、効率的にプログラムフローを表し、トレースデータの生成を最小化するためにパケットに基いた特定のプロトコルを用いる。
[0063] ETM162の一態様は、イベントおよびより複雑なイベント検出シナリオをつなぐためのシーケンサープロセスを含んでいる。シーケンサープロセスおよび関連するトリガーブロック回路180の動作を例証するために、図7はシーケンサーフロー図190を提示する。トリガーブロック回路入力182から188に応じて、シーケンサープロセス180は3つの状態(S0からS2)で示された例において動作する。シーケンサープロセス310の動作については、状態S0から、プロセスフローはS1またはS2に進み得る。S1から、順序付けは、前方へS2にまたは後方へS0にいずれ進む。S2から、順序付けは、S1またはS0のいずれか進む。
[0064] シーケンサープロセス180は従って、状態間での遷移がプログラム可能でありトリガーブロック回路(182から188)からの一致に基づく、3つの状態(S0からS2)を含んでいる。シーケンサープロセス180は、状態イネーブル(state-enable)が条件として設けられることを各トリガーブロック回路(182から188)に可能にするためのトレースフィルタリングで使用する。これは、トレーシングがある状態に制限されることを可能にする。新規の状態に入る際、各トリガーブロック回路(182から188)でのカウンタは初期値にリロードされ得る所定の状態に入る際、ISDBブレークポイントはアサートされることができる所定の状態に入る、トリガーマーカーはトレースストリームに挿入されることができる所定の状態に入る、外部トリガー制御もアサートされ得る。外部トリガーは、シーケンサーが所定の状態であるといつでもアサートされままであり得る所定の状態に入る、DSP 40への割込みアサートされ得る。リセットの後、カウンタはS0に初期化される。多重の遷移が同時に起きる場合、シーケンサーは現在の状態のままである。
[0065] 一実施形態において、ETM162は、DSP 40性能に関係する種々のイベントを記録することができる6つのカウンタを含んでいる。基本動作はプログラム可能なソースとして各カウンタを利用する。ユーザプログラム可能な領域カウンタは実行をサイクルの固定数のウィンドウに分割する。ウィンドウに、イベントはカウンタへ蓄積される。ウィンドウの端では、カウンタ値はパケットにフォーマット化され、トレースポートを介して送られる。その後、カウンタはリセットされ、プロセスはまた始まる。プロファイリングユニットがプログラムフロートレーシングと同時に動作される場合、これは結果として、プログラムフロートレースが性能イベントに関する詳細情報でオーバーレイされることをもたらす。更に、プロファイリングユニットは、ユニットがアクティブである時間を制限するために状態イネーブルマスクを含んでいる。
[0066] 領域カウンタは実行をサイクルの固定数のウィンドウに分割するために用いられる。領域のサイズはユーザプログラム可能なレジスタによって決定される。領域カウンタはユーザーに指定された値に初期化され、全てのプロファイリングイベントカウンタがリセットされる。その後、領域カウンタはカウントダウンを始める。領域カウンタがゼロに達する場合、プロファイリングイベントカウントの各々に関する値はトレースストリームにおいて放出される。その後、プロセスはまた始まる。領域カウンタは状態イネーブルが一致するときを単に数える。プロファイリングが不活発な場合、領域カウンタは、その値を維持し、イネーブル状態再び入る場合再び始まる。
[0067] プロファイリングカウンタが情報を蓄積し得る異なるイベントは(a)dキャッシュミスと、(b)dキャッシュストールサイクルと、(c)iキャッシュミスと、(d)iキャッシュストールサイクルと、(e)ITLBとDTLBのミスと、(f)合計のストールサイクルと、を含む。更に、プロファイリングカウンタはそれぞれ、あるハードウェアスレッドに発生するイベントにカウンタを制限するために、6つのスレッドマスクを含んでいる。
[0068] 領域カウンタのように、状態イネーブルマスクが現在のに一致する場合、プロファイリングカウンタはアクティブであるのみである。すべての他の時間中にカウントはそれらの値を維持し、イネーブル状態が再び入れられる場合カウントすること再び始まる。
[0069] 本開示は、インタースレッドトレースアライメントをサポートするために新しいパケットプロトコル機能セットを提供する。すなわち、ETM162を用いてトレースされているあらゆるスレッドについては、任意の時点では、本開示はトレースされている他のすべてのスレッドについて、その時点でのそれらのスレッドのプログラムカウンタ値および指示状態(例えば、ストール、実行済みなど)を識別することを可能にする。このように、ETM162がサイクルに正確なモードで動作する場合、トレースアライメントはインタースレッドトレースアライメントをサポートするトレースポートプロトコルを利用する。従って、本開示は、インタースレッドアライメントに関する完全に正確なサイクルカウントフィールドだけでなく、isync−restartパケットスレッドに関するサイクルカウントフィールドスレッド相対(thread relative)にする。この開示配置は、すべてのスレッドに関する同じスレッドサイクルでisync−periodicパケットを生成する。スレッドアライメントが任意の理由で失われる場合、これはさらに再アライメントを可能にさせる。
[0070] 本開示に一実施形態において、同時に発生する多重の命令シーケンスの実行を提供し、その間にDSP 40は独立して動作する、いくつかの単一スレッドで構成されたプロセッサとして見なさ得る。ETM162では、プログラムフローはパケットのシーケンスに分割され、それはどのパケットがどのスレッドに属するかを識別するためにあるパケットに対してスレッド数(tnum)フィールドを含んでいる。インタースレッドタイミング関係を識別するために、本開示は、異なるスレッド間のタイミング関係を確立し維持する。スレッドがそれぞれ命令トレーシングを独立して有効かつ無効にし得るので、スレッドが命令トレーシングをオンする場合、他のスレッドは暫くの間それらのトレーシングを可能にし得る。現在開示された方法およびシステムは、スレッドがトレーシングをオンする場合と、他のスレッドがオンされ、続いてトレーシングをオンする場合との間のオフセットをマーキングすることによって、スレッド実行順序の相対的なタイミングを確立する。
[0071] 従って本開示は、最後のスレッドがトレーシングをオンしてからのサイクル数を指示するためのスレッドサイクルオフセットフィールドを含んでいる。また、他のスレッドがアクティブでない場合、サイクルオフセットフィールドは、最近のトレースがすべてのスレッド間でオフしてからのサイクル数を含んでいる。トレースセッションの後、パケットはスレッド実行を再構成することを可能にさせる。その後、オフセットフィールドを用いて、実行順序は適切にスレッド間で整列され得る。更に、命令アライメント機構はデータ損失の場合には実行トレーシングを再確立することを可能にする。
[0072] 開示された主題はインタースレッドタイミング関係を再確立することを更に可能にする。同期パケットを周期的に生成することを許可するグローバルなカウンタを維持することによって、カウンタがゼロに達する場合、パケットは各スレッドに生成され得る。上記のパケットは、そのスレッドにする現在のプログラムカウンタ値を含んでいる。ここで、すべてのスレッドに関する同時のパケット生成に関するDSP 40存在し得る種々の制約のために、本開示は同期パケットへのサイクルオフセットフィールドを含んでいる。(他のスレッド間の)最後のスレッドが同期パケットを生成してから、サイクルオフセットフィールドはサイクル数を指示する。サイクルオフセットフィールドは制限のあるサイズであり、かつカウントが飽和すれば(the count saturates)、同期は実現されることができず、カウンタを待ち得る。以下により完全に記述されるこれらの機構を用いて、本開示は1つのスレッドに関する任意のある点でインタースレッド実行タイミング関係を維持することを可能にする。結果は、デバッギングおよび他の重要な目的のためのすべてのスレッドの動作および状態を観測する能力である。
[0073] この理解では、図8は、現在開示されたインタースレッドトレースアライメントプロセスの重要な概念を示す。図8を参照すると、タイムライン202が示すように、インタースレッドアライメントプロセス200は時間t=0に基づいている。DSP40上で動作し得る種々のスレッド204、206、208、210および212については、スレッド開始が異なる時点で発生し得る。このように、時間t=tでは、スレッド204動作を開始し得る。その後遅い時間t=tで、スレッド206動作を開始し得る。時間t=tで、スレッド208は始まり、t=tでスレッド210動作を始め、t=tでスレッド212動作を開始する。より完全に以下で説明されるように、継続期間214は、トレーシングがスレッド212に関してアクティブになるまでサイクル数を表す。継続期間214は、isync−restartパケットからトレース開始プログラムカウンタ(PC)に関するサイクル数を表す。すべての相互関連するスレッド(204から212)については、isync−periodicパケットはすべてのスレッドについて同時に生成される。更に、継続期間220は、例えばスレッド212で、発生している長いストールの状況に対処している
[0074] より完全に本開示のインタースレッド動作を説明するために、図9は、パケット生成ユニット230の一実施形態の機能概要を示す。パケット生成ユニット230は、パケット生成制御回路232を含んでおり、それは、FIFO入力mux234へ、genIsyncP、genAsync、genBranch、genPheader、genIsyncR、genProfおよびgenCCountの出力を生成するためのアトムW、アトムNおよびアトムEの入力を受信した。Pheader生成回路236は、アトムE入力、およびパケット生成制御回路232からwカウント、eカウントおよびnカウント入力を受信する、すべてFIFO入力mux234へのpheaderPK出力を生成するためのものである。PC/tld/asid/tnum入力は、isync−restart/cycle−count生成機能238、isync−periodic生成機能240およびbranch−address生成機能242に流れる。isync−restart/cycle−count生成機能238は、FIFO入力mux234への、isyncRPK、isyncRLen、CCPKおよびCCLen出力を提供する。isync−periodic生成機能240は、FIFO入力mux234へisyncPPKとisyncPLenの入力を提供する。branch−address生成機能242(また、それらはbranchタイプの入力を受信する)は、FIFO入力mux234へbranchPKとbranchLenの出力を提供する。更に、プロファイル生成機能244は、FIFO入力mux234へのprofPKとprofLenの出力を生成するためのプロファイル識別子入力を受信する。
[0075] FIFO入力mux234は、所与のサイクルで生成される必要のあるすべてのパケットをとり、それらを連続的なチャンクに形成する。FIFO入力mux234は、その連結を行うときに可変サイズであるパケットを構成しなければならない。FIFO入力mux234の出力はFIFOに送り出される前に記録される。
[0076] 本開示パケット生成およびFIFO入力mux234に関しては、動作が3つの段階にわたって発生する。パケット生成の第1の段階では、パケット生成制御機能232および個別のパケット生成エンジン236から244は、アトムカウンタw−カウント、e−カウントおよびn−カウントインクリメントだけでなく、作動する。FIFO入力mux234の動作は、この第1の段階における連続ブロックへのサイクルで生成されたパケットをすべて合併することを含んでいる。第2の段階では、FIFO書込みが生じ、FIFO書込みポインタに整列させるべきデータを循環させること、書込み可能性を計算して循環させること、および、データをFIFOmux234レジスタに書込むことを含む。FIFO読取り段階である第3の段階では、データFIFOレジスタから読取られ得る。この第3の段階では、トリガーパケットを挿入し、ETBにデータを送る特別なケースも発生する。
[0077] 図9において見られるように、個別のパケット生成ユニットの各々はそのそれぞれのデータをパケットにし、次に、連結について結果として生じるパケットおよび長さをFIFO入力mux234へ送る。更に、パケット生成制御回路232はアトムカウンタを維持し、特定のサイクルでどのパケットを生成するかを決定する。パケット生成ユニット230は、今後のpheaderまたはサイクルカウントパケットで送り出され得る未決のアトムの数を記録するために3つのカウンタを保持している。E−アトムに直面する場合は常に、E−アトムカウンタはインクリメントする。N−アトムに直面し、カウントが現在のアトムを含んでいる場合は常に、N−アトムカウンタはインクリメントする。すなわち、現在のアトムがNならば、それはN−アトムカウントに含まれる。W−アトムに直面する場合は常に、W−アトムカウンタはインクリメントする。これらのカウンタはスレッドごとのカウンタであり、また、そういうものとして、本実施形態では各々の6つのコピーがある。カウンタがpheaderまたはサイクルカウントパケットを介して送り出される場合は常に、カウンタはリセットされる。
[0078] branch−address生成機能242から、branch−addressパケットが、ターゲットが先のループバックとは異なる場合、間接のブランチループバックのターゲットに対して生成され得る。全ループバックモードが設定される場合、パケットはすべてのループバックに対して送り出される。また、isync−restartおよびisync−periodicパケットが生成された後、新規のループバックパケットは強制的に出される。その後PC相対ブランチIF直接のブランチモードのターゲットはセットされる。イベント(割込み、例外、SWI、TRAPなど)のターゲットはRTE命令。トレースイネーブルがアサートされ、かつそれがトレーシングの第1のサイクルでない(、代わりにisync−restartパケットが生成され得る)場合、branch−addressパケット生成され得る。パケット生成制御ユニットは、ループバックbranch−addressパケットが必要とされるかどうかを判定するために、各々スレッドに対して前のループバックのターゲットレジスタを維持する。
[0079] 図10は、現在開示された主題の命令に適用可能な種々のアトムに関する定義の表250を示す。パケットプロトコルの主な目的はインタースレッドトレースアライメントをサポートすることである。すなわち、トレースされているあらゆるスレッドについては、任意の時点で、ユーザーは、その時点でのこれらのスレッドのプログラムカウンタ値および命令状態(ストール、実行済み)を、トレースされている他のすべてのスレッドについて識別することができるべきである。ETM162がサイクルに正確なモードで動作する場合、トレースアライメントは役に立つ。トレースポートプロトコルはインタースレッドトレースアライメントをサポートするために拡張されている。「S」タイプの命令アトムは、デュアルジャンプとして知られているブランチ機構を提供する。ここで、ETM162はSタイプを含んでおり、それはアトムを保持するためにpheader−format4パケットタイプを用いて定義される。
[0080] 図11は、32ビットのTIDフィールドをサポートする本開示に関するbranch−addressパケット280を提供する。現在開示されたbranch−addressパケットは32ビットのTIDフィールドをサポートする、その内容は図11に見られる。branch−addressパケットは1バイト乃至11バイトを含む可変長である。バイト0から4のMSBでの連続ビットは、パケットがその点を越えて連続するかどうかを示す。別に、T−ビットは、タイプフィールドがパケットの終わりに付加されるかどうかを示す。バイト4のMSBにおける1は、5バイトが続くということを示す(4バイトのTIDおよび1バイトのASID)。
[0081] branch−addressパケットはPC、TID/ASIDおよびタイプ圧縮によって異なる。TID/ASIDは、どちらか一つがtnumに関して最後のbranch−addressパケットまたはisync(restart or periodic)以来変っている場合、送り出され得るタイプは、最後のタイプが送り出されてからそれが変っている場合、送り出され得る。それはisync−restartまたはisync−periodicの後に最初のbranch−addressパケットにいて生成され得る。PCは、branch−address、isync−restart、またはisync−periodicによって送られたのPCと比較して圧縮される。変化したPCのより低い部分が送り出され得る。各スレッドについては、のPC、のTID/ASID、およびタイプレジスタは適切な圧縮を決定するために用いられる。
[0082] 図12は、現在開示されたプロセスで使用されるためのisync−restartパケット260の典型的な内容を提示する。isync−restartパケットは、トレーシングが開始される(トレースイネーブルが以前低かった)場合、生成され得る。更に、オーバフロー条件を脱するときで、トレースイネーブルがまだ高い場合には、isync−restartパケットはオーバフローがあったことを示す理由フィールド生成される。本開示は、isync−restartパケットを用いて、アライメントを提供する。命令アライメントは、トレースされているすべてのスレッドのすべてのサイクルに、グローバルスレッドサイクルを割り当てることとして見なされることができる。デコンプレッサ手順は、isync−restartパケットがトレースストリームにおいて利用可能な場合にこれを遂行する。デコンプレッサは、最後のisync−restartカウントのカウンタ値を維持する。
[0083] isync−restartパケットに直面するときはいつでも、本開示はサイクルカウントフィールドおよびサイクルカウントタイプフィールドを検査し得る。タイプフィールドが「グローバル」である場合、プロセスはサイクルカウントフィールド値に最後のisync−restartカウントを割り当てて、最後のisync−restartカウントを有するそのパケットにアノテーションする。タイプフィールドが「オフセット」である場合、プロセスはサイクルカウントフィールドでの値によって最後のisync−restartカウントをインクリメントし、さらに、最後のisync−restartカウントを有するパケットにアノテーションし得る。その点で、isync−restartパケットはそれぞれグローバルスレッドサイクル値でアノテーションされる。
[0084] 次のステップはアトムにアノテーションすることである。そのプロセスは、トレースストリームを、パケットストリームにおけるtnum値に基いて個別のスレッドローカルのパケットストリーム分割する。各スレッドローカルのパケットストリームについては、プロセスは可変グローバルスレッドサイクルを維持する。この値は、isync−restartパケットに直面するときはいつでも、グローバルスレッドサイクルはアノテーションされた値に割当てられるように維持される。命令アトムに直面する(E、N、SまたはW)ごとに、そのプロセスは、グローバルスレッドサイクルを有するそのアトムをアノテーションし、グローバルスレッドサイクルを1だけインクリメントし得る。通常のデコンプレッション手順を用いて、プロセスは、各アトムに関するプログラムカウンタ値を決定する。この手順が適用された後、トレースされているすべてのスレッドのすべてのサイクルはグローバルスレッドサイクルカウント値にアノテーションさ得る。結果として、例えば所定のスレッドサイクルに関して、6つのスレッドすべてに関する現在のプログラムカウンタ値は、それらのスレッドに関するパイプラインの状態(ストール、実行済みなど)と同様に決定され得る
[0085] サイクル正確でないバージョンについては、TIDフィールドは32ビットまで拡大される。サイクル正確なバージョンについては、TIDは32ビットまで拡大され、新規のサイクルカウントフィールドはトレースアライメントをサポートするために定義される。グローバルなサイクルカウントは、最後のハードウェアリセットからスレッドサイクル数を示す。最後のisync−restartパケットが生成されてから、オフセットサイクルカウントはサイクル数を示す
[0086] 図13は、現在開示された主題をサポートするためのisync−periodicパケット290の実施形態を表す。isync−periodicパケットは、(すべてのスレッド間で)最後のisync−periodicパケットが生成されてから、スレッドサイクル数を示す「オフセット」フィールドを含んでいる。開示されたプロセスはまたisync−periodicパケットを用いて、アライメントをサポートする。場合によっては、トレースデータの制限されたウィンドウだけが利用可能である。従って、isync−restartパケットは利用可能ではない可能性がある。これらの場合では、isync−periodicパケットはインタースレッドアライメントを決定するために用いられ得る。パケット境界が未知の場合、プロセスはパケットアライメントを回復するためにasyncパケットを探索し得る。デコンプレッサはカウンタlast−isync−periodic−countを維持し得る。マルチスレッドパケットストリームを通過すると、プロセスはオフセットフィールドがない最も古いisync−periodicパケットを探索することを含み得る。その後、プロセスはlast−isync−periodic−countを0に割り当て、そのを有するそのパケットをアノテーションする。他のtnumsからの次のisync−periodicパケットの各々については、プロセスは、オフセットフィールド値、およびisync−periodic−countを有するisync−periodicパケットの各々によってisync−periodic−countをインクリメントし得る。その後、プロセスはスレッドを個別のパケットストリーム分割し、それらを別々に解凍する。
[0087] ETMisync−periodicカウンタは、パケットバイトがFIFOに送られる場合は常に、ディクリメントされ得る。カウンタがスレッドに関してゼロに達する場合、isync−periodicパケットが未決としてマークされ得る。次の機会では、isync−periodicパケット生成される。1つのisync−periodicは、次のパケットのうちのどれかが生成されている場合(isync−restart、トリガー、branch−address、async、プロファイル)、阻止され得る。スレッドはそれぞれそれ自身のisync−periodicカウンタを維持し得る。isyncカウンタは、いずれかisync−restartパケットがそのスレッドに対して生成される場合は常に、リセットされ得る
[0088] 図14は、現在開示されたプロセスで使用される1セットのサイクルカウントパケットを提示する。サイクルカウントパケットはW−アトムを蓄積するために用いられ得る。また、サイクルカウントパケットは単にサイクル正確なモードにおいて生成され得る。サイクルカウントパケットは次の場合に生成され得る。WからEまたはWからNへ切り替え、W−アトムカウントがフォーマット3pheaderキャパシティに適合しない場合、未決のW−アトムをもつアトムブレークの場合、およびW−アトムが多すぎてフォーマット3pheaderに適合しない場合。W−アトムはサイクルカウントパケット位置され得、また、およびEまたはNアトムはフォーマット1pheaderで出てき得、サイクルカウントパケットはその完全に正確な最大に達し得る。サイクルカウントパケットが、それがその最大32ビット値に達するまでインクリメントすることを可能にする代りに、ETMは十分な正確さと制限された正確さとの間の境界で多のより小さなサイクルカウント値を送り出す。この場合、現在のアトムはW−アトムであり得る。このアトムがパケットに含まれていないので、カウントは0の代りに1にリセットされる。
[0089] isync−restartパケットでのサイクルカウントは2つの可能なタイプとして再定義されている最後のハードウェアリセットから参照される64ビット「グローバル」カウント、および(すべてのスレッド間の)最後のisync−restartパケットからのスレッドサイクル数を示す16ビットオフセットカウント。
[0090] 2バイト300および3バイト310のサイクルカウントパケットに加えて、本開示は、16ビットのペイロードに32ビットの値を適合させるために3バイトパケット320を提供する。現在の主題では、1バイトのヘッダーおよび4バイトのペイロードを含む5バイトのパケットは、図14に示されるように定義される。各スレッドについては、開示されたプロセスはカウントグローバルスレッドサイクルを維持する。直面する最初のisync−periodicパケットについては、プロセスはグローバルスレッドサイクルをそのパケットのアノテーションされた値に設定し、その値で先のアトムにアノテーションする。その後、グローバルスレッドサイクルは1だけインクリメントされる。アトム(E、N、S、W)に直面するといつでも、プロセスはそのアトムにグローバルスレッドサイクルでアノテーションし、グローバルスレッドカウントを1だけインクリメントする。プロセスは、各アトムにプログラムカウンタ値を割当てるために通常として、ストリームを解凍し得る。この点では以前のように、トレースされているすべてのスレッドのすべてのサイクルはそれに関連したグローバルスレッドサイクルを有する。
[0091] 図15は、本開示に適切なものとしてpheader format4パケット330の一実施形態を示す。pheaderパケットは異なる場合に生成され得る。例えば、パケットの中にこれ以上のアトムを保持することができない場合、およびbranch−address、プロファイルまたはisync−periodicパケットが生成される場合、pheaderはアトムストリーム内のそれぞれのパケットの位置をマークするために生成される。フォーマット1pheaderパケットは3つのアトムペイロードフィールドがあり得る:0から31のEアトム(フィールド0)、続いて0から3のNアトム(フィールド1)、続いて0から1のEアトム(フィールド2)。フォーマット1pheaderパケットを生成するための規則はアトムEカウントであることであり得、現在のアトムがEである。カウントされたEは、フィールド0に入り、現在のEアトムはフィールド2に位置さ得る。最大でアトムNカウント(カウントは現在のNアトムを含んでいる)。カウントされたEは、フィールド0に位置され、Nアトムカウントはフィールド1に位置さ得る。現在のアトムはEであり、Nアトムカウントは0でない。カウントされたEおよびNアトムカウントは、フィールド0およびフィールド1に位置され、現在のEアトムはフィールド2に位置され得る。現在のアトムがWであり、EまたはNアトムが未決の場合、現在のEおよびNカウントはペイロードフィールド0およびフィールド1で送り出され得る。アトムブレークおよび未決のW−アトムがない場合、現在のEおよびNカウントはフィールド0およびフィールド1に位置され、また、現在のアトムがEである場合、それはフィールド2に位置され得る
[0092] 図16は、開示された主題の実施形態での使用のためのasyncパケット340を表す。asyncパケット長はより長いサイクルカウントフィールドを調整し、例えば10バイトを含み得る。async−periodicカウンタもasyncパケットがいつ生成されるかを定義するために用いられ得る。asyncパケットは、ETMの周期的なカウンタが達する場合は常に、未決のものとしてマークされる。asyncパケットは単独で現れなければならないし、他のパケットが生成される場合は常に未決のままである。asyncカウンタはグローバルでかつ、パケットバイトがFIFOに送られる場合は常に、ディクリメントされ得る。
[0093] 要約すると、開示された主題は、実行トレース処理での使用についてマルチスレッドプロセッサによるインタースレッドトレースアライメントのための方法およびシステムを提供する。従って開示された主題は、共通所定イベントに関するタイミングデータを記録することを含んでいる。上記のイベントは、最後のスレッドが実行トレーシングを開始してからのサイクル数であるかすべてのスレッドが実行トレーシングを終了してからのサイクル数であり得る。スレッドが実行トレーシングを開始するサイクル数は、実行トレーシングのタイミングを維持するため共通所定イベントに参照される。共通所定イベントに関するデータはその後、スレッドが実行トレーシングを開始した時と関連づけるために更新され得る。結果はすべてのスレッドに関連したタイミングデータを整列させることを可能にする。相互関係する記録は、すべての動作スレッドに関してタイミングデータを同期させると同様に、マルチスレッドプロセッサにおいて動作するスレッドに関する相互依存の実行トレーシング情報を再構成することを可能にする。
[0094] 上記でわかるように、インタリーブされたマルチスレッドプロセッサを含むマルチスレッドデジタル信号プロセッサでマルチスレッドプロセッサによるインタースレッドトレースアライメントについて本明細書で記述された処理特徴および機能は、種々の手法で実装され得る。例えば、DSP 40は上記動作を行うだけでなく、本実施形態は特定用途向け集積回路(ASIC)、マイクロコントローラ、デジタル信号プロセッサまたはここに記述された機能を行うように設計された他の電子回路において実装され得る。さらに、ここで記述されたプロセスと特徴は、上記の種々の信号および命令処理システムによる読取りおよび実行に関して、磁気記録媒体、光学の記録媒体、または他の記録媒体に記憶され得る。従って、好ましい実施形態の先の詳細な説明は、いかなる当業者にもクレームされた主題を生成するか用いることを可能にするために提供される。これらの実施形態への種々の変更は当業者に容易に明白になり、本明細書で定義された総括的な原理は、革新的な能力の使用のない他の実施形態に適用され得る。このように、クレームされた主題は、本明細書で示された実施形態に限定されることは意図されず、本明細書で開示された原理と新規な特徴に一致する最も広い範囲を与えられるべきである。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
実行トレーシングプロセスの間にマルチスレッドプロセッサのスレッド間のインタースレッドトレースタイミングアライメントのための方法であって、
共通所定イベントに関するタイミングデータを記録し、前記共通所定イベントはコアプロセッサ実行トレーシング中に前記マルチスレッドプロセッサの全ての動作スレッドによって参照可能であり、
前記共通所定イベントに関連するスレッドに関する実行トレーシングのタイミングを維持するための前記共通所定イベントへの実行トレーシングを前記スレッドが開始する時間を参照し、
前記スレッドが実行トレーシングを開始した前記時間に関連づけるために、前記共通所定イベントを更新し、その結果、実行トレーシングが発生している前記マルチスレッドプロセッサの全ての他のスレッドに関連したタイミングデータに実行トレーシングを前記スレッドが開始した前記時間を整合させる方法。
[C2]
前記共通所定イベントを、最後のスレッドが実行トレーシングをオンした時間に関連づけることをさらに具備するC1の方法。
[C3]
前記共通所定イベントを、全てのスレッドが実行トレーシングをオフしてからのマルチスレッドプロセッササイクル数に関連づけることをさらに具備するC1の方法。
[C4]
複数のデータパケットに前記共通所定イベントを記録することをさらに具備するC1の方法。
[C5]
前記共通所定イベントに関連した複数のデータパケットを用いて、前記マルチスレッドプロセッサにおいて動作するスレッドに関して相互関係のある実行トレーシング情報を再構成することをさらに具備するC1の方法。
[C6]
前記共通所定イベントに関する前記タイミングデータを同期させることをさらに具備するC1の方法。
[C7]
前記共通所定イベントの発生からのサイクルのグローバルカウントを生成することをさらに具備するC1の方法。
[C8]
前記共通所定イベントからのサイクルのグローバルカウントを用いて、実行トレーシングを行うすべてのスレッド間でのインタースレッドタイミングデータを再確立することをさらに具備するC1の方法。
[C9]
データ損失の前記イベントにおいて、データ損失を決定し、前記データ損失に応じて前記共通所定イベントからのサイクルのグローバルカウントを用いて、実行トレーシングを行うすべてのスレッド間でインタースレッドタイミングデータを再確立することをさらに具備するC1の方法。
[C10]
ゼロ値を介して繰り返されるグローバルカウンタのイベントにおいてすべてのスレッドに関する同期パケットを生成することをさらに具備するC1の方法。
[C11]
デジタル信号プロセッサと関連する動作に関するデジタル信号プロセッサデバッギングシステムであって、マルチスレッドソフトウェア実行フローの間にマルチスレッドプロセッサのスレッドに関して相互に関係するタイミングデータへの能力を含むシステムであって、
共通所定イベントに関するタイミングデータを記録するための複数のオフセットフィールドと、
前記共通所定イベントはコアプロセッサ実行トレーシング中に前記マルチスレッドプロセッサの全ての動作スレッドによって参照可能であり、
前記共通所定イベントに関連するスレッドに関する実行トレーシングのタイミングを維持するための前記共通所定イベントへの実行トレーシングを前記スレッドが開始する時間を参照するための複数の時間参照命令パケットと、
前記スレッドが実行トレーシングを開始した前記時間に関連づけるために、前記共通所定イベントを更新し、その結果、実行トレーシングが発生している前記マルチスレッドプロセッサの全ての他のスレッドに関連したタイミングデータに実行トレーシングを前記スレッドが開始した前記時間を整合させるための複数の時間参照更新パケットと、を具備するデジタル信号プロセッサデバッギングシステム。
[C12]
前記共通所定イベントを、最後のスレッドが実行トレーシングをオンした時間に関連づけるための複数の命令および回路網をさらに具備するC11のデジタル信号プロセッサデバッギングシステム。
[C13]
前記共通所定イベントを、全てのスレッドが実行トレーシングをオフしてからのマルチスレッドプロセッササイクル数に関連づけるための複数の命令および回路網をさらに具備するC11のデジタル信号プロセッサデバッギングシステム。
[C14]
複数のデータパケットに前記共通所定イベントを記録するための複数の命令および回路網をさらに具備するC11のデジタル信号プロセッサデバッギングシステム。
[C15]
前記共通所定イベントに関連した複数のデータパケットを用いて、前記マルチスレッドプロセッサにおいて動作するスレッドに関して相互関係のある実行トレーシング情報を再構成するための複数の命令および回路網をさらに具備するC11のデジタル信号プロセ
ッサデバッギングシステム。
[C16]
前記共通所定イベントに関する前記タイミングデータを同期させるための複数の命令および回路網をさらに具備するC11のデジタル信号プロセッサデバッギングシステム。
[C17]
前記共通所定イベントの発生からのサイクルのグローバルカウントを生成するための複数の命令および回路網をさらに具備するC11のデジタル信号プロセッサデバッギング
システム。
[C18]
前記共通所定イベントからのサイクルのグローバルカウントを用いて、実行トレーシングを行うすべてのスレッド間でのインタースレッドタイミングデータを再確立するための複数の命令および回路網をさらに具備するC11のデジタル信号プロセッサデバッギン
グシステム。
[C19]
データ損失を決定し、前記データ損失に応じて前記共通所定イベントからのサイクルのグローバルカウントを用いて、実行トレーシングを行うすべてのスレッド間でインタースレッドタイミングデータを再確立するための実行トレーシング命令をさらに具備するC11のデジタル信号プロセッサデバッギングシステム。
[C20]
ゼロ値を介して繰り返されるグローバルカウンタのイベントにおいてすべてのスレッドに関する同期パケットを生成するための複数の同期命令をさらに具備するC11のデジ
タル信号プロセッサデバッギングシステム。
[C21]
パーソナル電子デバイスを支援する動作に関するマルチスレッドデジタル信号プロセッサであって、実行トレーシングプロセスを行い、これに関連して前記マルチスレッドプロセッサのスレッド中でインタースレッドトレースタイミングを整合させるデバッギング手段を具備しているプロセッサにおいて、
共通所定イベントに関するタイミングデータを記録する手段と、
前記共通所定イベントはコアプロセッサ実行トレーシング中に前記マルチスレッドプロセッサの全ての動作スレッドによって参照可能であり、
前記共通所定イベントに関連するスレッドに関する実行トレーシングのタイミングを維持するための前記共通所定イベントへの実行トレーシングを前記スレッドが開始する時間を参照する手段と、
前記スレッドが実行トレーシングを開始した前記時間に関連づけるために、前記共通所定イベントを更新し、その結果、実行トレーシングが発生している前記マルチスレッドプロセッサの全ての他のスレッドに関連したタイミングデータに実行トレーシングを前記スレッドが開始した前記時間を整合させる手段と、を具備するデジタル信号プロセッサシステム。
[C22]
前記共通所定イベントを、最後のスレッドが実行トレーシングをオンした時間に関連づける手段をさらに具備するC21のデジタル信号プロセッサシステム。
[C23]
前記共通所定イベントを、全てのスレッドが実行トレーシングをオフしてからのマルチスレッドプロセッササイクル数に関連づける手段をさらに具備するC21のデジタル信
号プロセッサシステム。
[C24]
複数のデータパケットに前記共通所定イベントを記録する手段をさらに具備するC21のデジタル信号プロセッサシステム。
[C25]
前記共通所定イベントに関連した複数のデータパケットを用いて、前記マルチスレッドプロセッサにおいて動作するスレッドに関して相互関係のある実行トレーシング情報を再構成する手段をさらに具備するC21のデジタル信号プロセッサシステム。
[C26]
前記共通所定イベントに関する前記タイミングデータを同期させるための複数の命令および回路網をさらに具備するC21のデジタル信号プロセッサシステム。
[C27]
前記共通所定イベントの発生からのサイクルのグローバルカウントを生成する手段をさらに具備するC21のデジタル信号プロセッサシステム。
[C28]
前記共通所定イベントからのサイクルのグローバルカウントを用いて、実行トレーシングを行うすべてのスレッド間でのインタースレッドタイミングデータを再確立する手段をさらに具備するC21のデジタル信号プロセッサシステム。
[C29]
データ損失を決定し、前記データ損失に応じて前記共通所定イベントからのサイクルのグローバルカウントを用いて、実行トレーシングを行うすべてのスレッド間でインタースレッドタイミングデータを再確立する手段をさらに具備するC21のデジタル信号プロ
セッサシステム。
[C30]
ゼロ値を介して繰り返されるグローバルカウンタのイベントにおいてすべてのスレッドに関する同期パケットを生成する手段をさらに具備するC21のデジタル信号プロセッ
サシステム。
[C31]
実行トレーシングプロセスを行うことと、これに関連してマルチスレッドプロセッサのスレッド中でインタースレッドトレースタイミングを整合させることを含むマルチスレッドデジタル信号プロセッサをデバッギングするコンピュータ読取可能な具現化されるプログラムコード手段を有するコンピュータ使用可能な媒体であって、
共通所定イベントに関するタイミングデータを記録するコンピュータ読取可能なプログラムコード手段と、
前記共通所定イベントはコアプロセッサ実行トレーシング中に前記マルチスレッドプロセッサの全ての動作スレッドによって参照可能であり、
前記共通所定イベントに関連するスレッドに関する実行トレーシングのタイミングを維持するための前記共通所定イベントへの実行トレーシングを前記スレッドが開始する時間を参照するコンピュータ読取可能なプログラムコード手段と、
前記スレッドが実行トレーシングを開始した前記時間に関連づけるために、前記共通所定イベントを更新し、その結果、実行トレーシングが発生している前記マルチスレッドプロセッサの全ての他のスレッドに関連したタイミングデータに実行トレーシングを前記スレッドが開始した前記時間を整合させるコンピュータ読取可能なプログラムコード手段と、を具備するコンピュータ使用可能な媒体。
[C32]
前記共通所定イベントを、最後のスレッドが実行トレーシングをオンした時間に関連づけるコンピュータ読取可能なプログラムコード手段をさらに具備するC31のコンピュータ使用可能な媒体。
[C33]
前記共通所定イベントを、全てのスレッドが実行トレーシングをオフしてからのマルチスレッドプロセッササイクル数に関連づけるコンピュータ読取可能なプログラムコード手段をさらに具備するC31のコンピュータ使用可能な媒体。
[C34]
複数のデータパケットに前記共通所定イベントを記録するコンピュータ読取可能なプログラムコード手段をさらに具備するC31のコンピュータ使用可能な媒体。
[C35]
前記共通所定イベントに関連した複数のデータパケットを用いて、前記マルチスレッドプロセッサにおいて動作するスレッドに関して相互関係のある実行トレーシング情報を再構成するコンピュータ読取可能なプログラムコード手段をさらに具備するC31のコン
ピュータ使用可能な媒体。

Claims (25)

  1. 実行トレーシングプロセス中のマルチスレッドプロセッサのスレッド間のインタースレッドトレースタイミングアライメントのための方法であって、
    共通所定イベントに関するタイミングデータを記録することと、前記共通所定イベントはコアプロセッサ実行トレーシング中に前記マルチスレッドプロセッサのすべての動作スレッドによって参照可能であり、
    前記共通所定イベントに関連する前記スレッドに関する実行トレーシングのタイミングを維持するために、前記共通所定イベントへの実行トレーシングを前記スレッドが開始する時間を参照することと、
    前記スレッドが実行トレーシングを開始した前記時間に関連づけるために、前記共通所定イベントに関する前記タイミングデータを更新することと、それによって、実行トレーシングが発生し得る前記マルチスレッドプロセッサのすべての他のスレッドに関連するタイミングデータに、前記スレッドが実行トレーシングを開始した前記時間を、アライメントすることと、を備える方法。
  2. 前記共通所定イベントを、最後のスレッドが実行トレーシングをオンにした時間に関連づけることをさらに備える請求項1の方法。
  3. 前記共通所定イベントを、すべてのスレッドが実行トレーシングをオフにしてからのマルチスレッドプロセッササイクルの数に関連づけることをさらに備える請求項1の方法。
  4. 複数のデータパケットに前記共通所定イベントを記録することをさらに備える請求項1の方法。
  5. 前記共通所定イベントに関連した複数のデータパケットを用いて、前記マルチスレッドプロセッサにおいて動作するスレッドに関する相互関係のある実行トレーシング情報を再構成することをさらに備える請求項1の方法。
  6. 前記共通所定イベントに関する前記タイミングデータを同期させることをさらに備える請求項1の方法。
  7. 前記共通所定イベントの発生からのサイクルのグローバルカウントを生成することをさらに備える請求項1の方法。
  8. 前記共通所定イベントからのサイクルのグローバルカウントを用いて、実行トレーシングを行っているすべてのスレッド間でインタースレッドタイミングデータを再確立することをさらに備える請求項1の方法。
  9. データ損失を決定し、前記データ損失のイベントにおいて、前記データ損失に応じて前記共通所定イベントからのサイクルのグローバルカウントを用いて、実行トレーシングを行っているすべてのスレッド間でインタースレッドタイミングデータを再確立することをさらに備える請求項1の方法。
  10. ゼロ値を介して繰り返されるグローバルカウンタのイベントにおいてすべてのスレッドに関する同期パケットを生成することをさらに備える請求項1の方法。
  11. パーソナル電子デバイスを支援する動作に関するマルチスレッドデジタル信号プロセッサであって、実行トレーシングプロセスを行い、これに関連して前記マルチスレッドプロセッサのスレッド間でインタースレッドトレースタイミングをアライメントするためのデバッギング手段を備えている前記マルチスレッドデジタル信号プロセッサは、
    共通所定イベントに関するタイミングデータを記録するための手段と、前記共通所定イベントはコアプロセッサ実行トレーシング中に前記マルチスレッドプロセッサのすべての動作スレッドによって参照可能であり、
    前記共通所定イベントに関連するスレッドに関する実行トレーシングのタイミングを維持するために、前記共通所定イベントへの実行トレーシングを前記スレッドが開始する時間を参照するための手段と、
    前記スレッドが実行トレーシングを開始した前記時間に関連づけるために、前記共通所定イベントに関する前記タイミングデータを更新し、それによって、実行トレーシングが発生し得る前記マルチスレッドプロセッサのすべての他のスレッドに関連するタイミングデータに、前記スレッドが実行トレーシングを開始した前記時間を、アライメントするための手段と、
    を備えるデジタル信号プロセッサ。
  12. 前記共通所定イベントを、最後のスレッドが実行トレーシングをオンにした時間に関連づける手段をさらに備える請求項11のデジタル信号プロセッサ。
  13. 前記共通所定イベントを、すべてのスレッドが実行トレーシングをオフにしてからのマルチスレッドプロセッササイクルの数に関連づける手段をさらに備える請求項11のデジタル信号プロセッサ。
  14. 複数のデータパケットに前記共通所定イベントを記録する手段をさらに備える請求項11のデジタル信号プロセッサ。
  15. 前記共通所定イベントに関連した複数のデータパケットを用いて、前記マルチスレッドプロセッサにおいて動作するスレッドに関する相互関係のある実行トレーシング情報を再構成する手段をさらに備える請求項11のデジタル信号プロセッサ。
  16. 前記共通所定イベントに関する前記タイミングデータを同期させる手段をさらに備える請求項11のデジタル信号プロセッサ。
  17. 前記共通所定イベントの発生からのサイクルのグローバルカウントを生成する手段をさらに備える請求項11のデジタル信号プロセッサ。
  18. 前記共通所定イベントからのサイクルのグローバルカウントを用いて、実行トレーシングを行っているすべてのスレッド間でインタースレッドタイミングデータを再確立する手段をさらに備える請求項11のデジタル信号プロセッサ。
  19. データ損失を決定し、前記データ損失に応じて前記共通所定イベントからのサイクルのグローバルカウントを用いて、実行トレーシングを行っているすべてのスレッド間でインタースレッドタイミングデータを再確立する手段をさらに備える請求項11のデジタル信号プロセッサ。
  20. ゼロ値を介して繰り返されるグローバルカウンタのイベントにおいてすべてのスレッドに関する同期パケットを生成する手段をさらに備える請求項11のデジタル信号プロセッサ。
  21. 実行トレーシングプロセスを行うことと、これに関連してマルチスレッドプロセッサのスレッド間でインタースレッドトレースタイミングをアライメントすることを含むマルチスレッドデジタル信号プロセッサをデバッギングするために具現化されたコンピュータ読取可能なプログラムコード手段を有するコンピュータ使用可能な媒体であって、
    共通所定イベントに関するタイミングデータを記録するためのコンピュータ読取可能なプログラムコード手段と、前記共通所定イベントはコアプロセッサ実行トレーシング中に前記マルチスレッドプロセッサのすべての動作スレッドによって参照可能であり、
    前記共通所定イベントに関連する前記スレッドに関する実行トレーシングのタイミングを維持するために、前記共通所定イベントへの実行トレーシングを前記スレッドが開始する時間を参照するコンピュータ読取可能なプログラムコード手段と、
    前記スレッドが実行トレーシングを開始した前記時間に関連づけるために、前記共通所定イベントに関する前記タイミングデータを更新し、それによって、実行トレーシングが発生し得る前記マルチスレッドプロセッサのすべての他のスレッドに関連するタイミングデータに、前記スレッドが実行トレーシングを開始する前記時間をアライメントするためのコンピュータ読取可能なプログラムコード手段と、
    を備えるコンピュータ使用可能な媒体。
  22. 前記共通所定イベントを、最後のスレッドが実行トレーシングをオンにした時間に関連づけるためのコンピュータ読取可能なプログラムコード手段をさらに備える請求項21のコンピュータ使用可能な媒体。
  23. 前記共通所定イベントを、すべてのスレッドが実行トレーシングをオフにしてからのマルチスレッドプロセッササイクルの数に関連づけるためのコンピュータ読取可能なプログラムコード手段をさらに備える請求項21のコンピュータ使用可能な媒体。
  24. 複数のデータパケットに前記共通所定イベントを記録するためのコンピュータ読取可能なプログラムコード手段をさらに備える請求項21のコンピュータ使用可能な媒体。
  25. 前記共通所定イベントに関連した複数のデータパケットを用いて、前記マルチスレッドプロセッサにおいて動作するスレッドに関する相互関係のある実行トレーシング情報を再構成するためのコンピュータ読取可能なプログラムコード手段をさらに備える請求項21のコンピュータ使用可能な媒体。
JP2017076029A 2007-04-11 2017-04-06 マルチスレッドプロセッサのためのインタースレッドトレースアライメント方法およびシステム Expired - Fee Related JP6423037B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/734,199 US8484516B2 (en) 2007-04-11 2007-04-11 Inter-thread trace alignment method and system for a multi-threaded processor
US11/734,199 2007-04-11

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014043027A Division JP2014142946A (ja) 2007-04-11 2014-03-05 マルチスレッドプロセッサのためのインタースレッドトレースアライメント方法およびシステム

Publications (3)

Publication Number Publication Date
JP2017152014A JP2017152014A (ja) 2017-08-31
JP2017152014A5 JP2017152014A5 (ja) 2018-07-05
JP6423037B2 true JP6423037B2 (ja) 2018-11-14

Family

ID=39854865

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2010503252A Withdrawn JP2010524140A (ja) 2007-04-11 2008-04-11 マルチスレッドプロセッサのためのインタースレッドトレースアライメント方法およびシステム
JP2014043027A Withdrawn JP2014142946A (ja) 2007-04-11 2014-03-05 マルチスレッドプロセッサのためのインタースレッドトレースアライメント方法およびシステム
JP2017076029A Expired - Fee Related JP6423037B2 (ja) 2007-04-11 2017-04-06 マルチスレッドプロセッサのためのインタースレッドトレースアライメント方法およびシステム

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2010503252A Withdrawn JP2010524140A (ja) 2007-04-11 2008-04-11 マルチスレッドプロセッサのためのインタースレッドトレースアライメント方法およびシステム
JP2014043027A Withdrawn JP2014142946A (ja) 2007-04-11 2014-03-05 マルチスレッドプロセッサのためのインタースレッドトレースアライメント方法およびシステム

Country Status (8)

Country Link
US (1) US8484516B2 (ja)
EP (1) EP2037367B1 (ja)
JP (3) JP2010524140A (ja)
KR (1) KR101072687B1 (ja)
CN (1) CN101874238B (ja)
ES (1) ES2678413T3 (ja)
HU (1) HUE038872T2 (ja)
WO (1) WO2008128107A2 (ja)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8380966B2 (en) 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8370806B2 (en) 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8533530B2 (en) 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US8341604B2 (en) 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
GB2453174B (en) * 2007-09-28 2011-12-07 Advanced Risc Mach Ltd Techniques for generating a trace stream for a data processing apparatus
US8001428B2 (en) * 2007-10-29 2011-08-16 Arm Limited Packing trace protocols within trace streams
US9098625B2 (en) * 2008-02-29 2015-08-04 International Business Machines Corporation Viral trace
US8140903B2 (en) * 2009-04-16 2012-03-20 International Business Machines Corporation Hardware process trace facility
JP2011100388A (ja) * 2009-11-09 2011-05-19 Fujitsu Ltd トレース情報収集装置,トレース情報処理装置,およびトレース情報収集方法
US8484517B2 (en) * 2009-12-03 2013-07-09 Infineon Technologies Ag High compression program flow trace
US8893092B1 (en) * 2010-03-12 2014-11-18 F5 Networks, Inc. Using hints to direct the exploration of interleavings in a multithreaded program
US8972995B2 (en) * 2010-08-06 2015-03-03 Sonics, Inc. Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads
US20120042212A1 (en) * 2010-08-10 2012-02-16 Gilbert Laurenti Mixed Mode Processor Tracing
US8880958B2 (en) * 2011-09-20 2014-11-04 Qualcomm Incorporated Interleaved architecture tracing and microarchitecture tracing
WO2013147866A1 (en) * 2012-03-30 2013-10-03 Intel Corporation System and method for real time instruction tracing
US8910125B2 (en) * 2012-09-27 2014-12-09 International Business Machines Corporation Monitoring software performance
US8954546B2 (en) * 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US9928159B2 (en) 2013-02-26 2018-03-27 Qualcomm Incorporated System and method to select a packet format based on a number of executed threads
CN103226328B (zh) * 2013-04-21 2015-06-24 中国矿业大学(北京) 采集次数控制模式下的多线程数据采集系统同步控制方法
US9218223B2 (en) * 2013-08-13 2015-12-22 Qualcomm Incorporated Barrier synchronization with dynamic width calculation
US9996354B2 (en) * 2015-01-09 2018-06-12 International Business Machines Corporation Instruction stream tracing of multi-threaded processors
US10719420B2 (en) * 2015-02-10 2020-07-21 International Business Machines Corporation System level testing of multi-threading functionality including building independent instruction streams while honoring architecturally imposed common fields and constraints
US10509713B2 (en) 2015-08-18 2019-12-17 Telefonaktiebolaget Lm Ericsson (Publ) Observation by a debug host with memory model and timing offset calculation between instruction and data traces of software execution carried on in a debug target having a main memory and a cache arrangement
US10013240B2 (en) * 2016-06-21 2018-07-03 Advanced Micro Devices, Inc. Fingerprinting of redundant threads using compiler-inserted transformation code
US20180054374A1 (en) * 2016-08-19 2018-02-22 Andes Technology Corporation Trace information encoding apparatus, encoding method thereof, and readable computer medium
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10042737B2 (en) 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10031833B2 (en) * 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10489273B2 (en) 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10310963B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US10324851B2 (en) 2016-10-20 2019-06-18 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache
CN115408291A (zh) * 2016-11-11 2022-11-29 微软技术许可有限责任公司 用于时间旅行调试和分析的计算机系统、计算机系统处实施的方法和硬件存储设备
US10540250B2 (en) 2016-11-11 2020-01-21 Microsoft Technology Licensing, Llc Reducing storage requirements for storing memory addresses and values
US10169194B2 (en) * 2017-03-22 2019-01-01 International Business Machines Corporation Multi-thread sequencing
US10365987B2 (en) * 2017-03-29 2019-07-30 Google Llc Synchronous hardware event collection
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
US10296442B2 (en) * 2017-06-29 2019-05-21 Microsoft Technology Licensing, Llc Distributed time-travel trace recording and replay
US10459824B2 (en) 2017-09-18 2019-10-29 Microsoft Technology Licensing, Llc Cache-based trace recording using cache coherence protocol data
US10558572B2 (en) 2018-01-16 2020-02-11 Microsoft Technology Licensing, Llc Decoupling trace data streams using cache coherence protocol data
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
US10496537B2 (en) 2018-02-23 2019-12-03 Microsoft Technology Licensing, Llc Trace recording by logging influxes to a lower-layer cache based on entries in an upper-layer cache
US10642737B2 (en) 2018-02-23 2020-05-05 Microsoft Technology Licensing, Llc Logging cache influxes by request to a higher-level cache

Family Cites Families (162)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4080650A (en) 1976-07-28 1978-03-21 Bell Telephone Laboratories, Incorporated Facilitating return from an on-line debugging program to a target program breakpoint
US4669059A (en) 1983-11-07 1987-05-26 Motorola, Inc. Method and apparatus in a data processor for selectively disabling a power-down instruction
US4901307A (en) 1986-10-17 1990-02-13 Qualcomm, Inc. Spread spectrum multiple access communication system using satellite or terrestrial repeaters
US5136717A (en) 1988-11-23 1992-08-04 Flavors Technology Inc. Realtime systolic, multiple-instruction, single-data parallel computer system
US5093914A (en) 1989-12-15 1992-03-03 At&T Bell Laboratories Method of controlling the execution of object-oriented programs
US5103459B1 (en) 1990-06-25 1999-07-06 Qualcomm Inc System and method for generating signal waveforms in a cdma cellular telephone system
US5551043A (en) 1994-09-07 1996-08-27 International Business Machines Corporation Standby checkpoint to prevent data loss
US6467054B1 (en) 1995-03-13 2002-10-15 Compaq Computer Corporation Self test for storage device
CA2228014C (en) 1995-07-31 2008-07-22 Verifone, Inc. Method and apparatus for operating resources under control of a security module or other secure processor
US5544311A (en) 1995-09-11 1996-08-06 Rockwell International Corporation On-chip debug port
US5951696A (en) 1996-11-14 1999-09-14 Hewlett-Packard Company Debug system with hardware breakpoint trap
JPH10207790A (ja) * 1997-01-20 1998-08-07 Fuji Xerox Co Ltd 入出力制御装置
US5915083A (en) 1997-02-28 1999-06-22 Vlsi Technology, Inc. Smart debug interface circuit for efficiently for debugging a software application for a programmable digital processor device
US5835705A (en) 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US6275868B1 (en) 1997-03-12 2001-08-14 Microsoft Corporation Script Engine interface for multiple languages
US6094729A (en) 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US6314530B1 (en) 1997-04-08 2001-11-06 Advanced Micro Devices, Inc. Processor having a trace access instruction to access on-chip trace memory
US5944841A (en) * 1997-04-15 1999-08-31 Advanced Micro Devices, Inc. Microprocessor with built-in instruction tracing capability
US6199181B1 (en) 1997-09-09 2001-03-06 Perfecto Technologies Ltd. Method and system for maintaining restricted operating environments for application programs or operating systems
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6029248A (en) 1997-12-15 2000-02-22 Lucent Technologies Inc. Corporation Locking system to protect a powered component interface from erroneous access by an attached, powered-off component
US6018759A (en) 1997-12-22 2000-01-25 International Business Machines Corporation Thread switch tuning tool for optimal performance in a computer processor
US6106571A (en) * 1998-01-29 2000-08-22 Applied Microsystems Corporation Relocatable instrumentation tags for testing and debugging a computer program
US6249907B1 (en) 1998-03-24 2001-06-19 International Business Machines Corporation Method system and article of manufacture for debugging a computer program by encoding user specified breakpoint types at multiple locations in the computer program
US6757829B1 (en) 1998-05-29 2004-06-29 Texas Instruments Incorporated Program debugging system for secure computing device having secure and non-secure modes
DE19835610A1 (de) 1998-08-06 2000-02-10 Siemens Ag Programmgesteuerte Einheit und Verfahren zum Debuggen derselben
US6480818B1 (en) 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6532553B1 (en) 1998-12-08 2003-03-11 Arm Limited Debugging data processing systems
US6343371B1 (en) * 1999-01-14 2002-01-29 Compaq Computer Corporation System and method for statically detecting potential race conditions in multi-threaded computer programs
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6341347B1 (en) 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6714958B1 (en) 1999-07-28 2004-03-30 International Business Machines Corporation Detecting and causing latent deadlocks in multi-threaded programs
CN1148656C (zh) 1999-09-07 2004-05-05 皇家菲利浦电子有限公司 面向线程的调试
US6684348B1 (en) 1999-10-01 2004-01-27 Hitachi, Ltd. Circuit for processing trace information
WO2001033351A1 (fr) 1999-10-29 2001-05-10 Fujitsu Limited Architecture de processeur
GB2362730B (en) 1999-12-23 2004-02-11 St Microelectronics Sa Computer register watch
US6665802B1 (en) 2000-02-29 2003-12-16 Infineon Technologies North America Corp. Power management and control for a microcontroller
EP1130519A3 (en) 2000-03-02 2009-09-30 Texas Instruments Incorporated System and method for automatically configuring an emulation system
US6754852B2 (en) * 2000-03-02 2004-06-22 Texas Instruments Incorporated Debug trigger builder
US6725391B2 (en) 2000-03-02 2004-04-20 Texas Instruments Incorporated Clock modes for a debug port with on the fly clock switching
US6934937B1 (en) 2000-03-30 2005-08-23 Broadcom Corporation Multi-channel, multi-service debug on a pipelined CPU architecture
JP2001331340A (ja) 2000-05-19 2001-11-30 Nec Corp コードチェックによるモード切替方式および方法
US20020065646A1 (en) 2000-09-11 2002-05-30 Waldie Arthur H. Embedded debug system using an auxiliary instruction queue
US6691251B2 (en) 2000-11-30 2004-02-10 Palmsource, Inc. On-chip debugging system emulator
US7020871B2 (en) 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
US6915416B2 (en) 2000-12-28 2005-07-05 Texas Instruments Incorporated Apparatus and method for microcontroller debugging
US7093236B2 (en) * 2001-02-01 2006-08-15 Arm Limited Tracing out-of-order data
US7134116B1 (en) * 2001-04-30 2006-11-07 Mips Technologies, Inc. External trace synchronization via periodic sampling
US7069544B1 (en) 2001-04-30 2006-06-27 Mips Technologies, Inc. Dynamic selection of a compression algorithm for trace data
US7076804B2 (en) 2001-05-11 2006-07-11 International Business Machines Corporation Automated program resource identification and association
US7073059B2 (en) 2001-06-08 2006-07-04 Hewlett-Packard Development Company, L.P. Secure machine platform that interfaces to operating systems and customized control programs
US7752423B2 (en) * 2001-06-28 2010-07-06 Intel Corporation Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor
US7823131B2 (en) 2001-06-29 2010-10-26 Mentor Graphics Corporation Debugger for a hardware-implemented operating system
JP2003177938A (ja) 2001-12-07 2003-06-27 Fujitsu Ltd 電子装置及びそのデバッグ認証方法
US7131114B2 (en) 2001-07-16 2006-10-31 Texas Instruments Incorporated Debugger breakpoint management in a multicore DSP device having shared program memory
US7134002B2 (en) 2001-08-29 2006-11-07 Intel Corporation Apparatus and method for switching threads in multi-threading processors
US7017084B2 (en) * 2001-09-07 2006-03-21 Network Appliance Inc. Tracing method and apparatus for distributed environments
US6901527B2 (en) * 2001-09-21 2005-05-31 International Business Machines Corporation Synchronizing multiple time stamps distributed within a computer system with main time of day register
DE10148109B4 (de) * 2001-09-28 2006-10-12 Infineon Technologies Ag Verfahren zum Speichern oder Weiterleiten von Daten
US7080289B2 (en) * 2001-10-10 2006-07-18 Arm Limited Tracing multiple data access instructions
US20030074650A1 (en) 2001-10-17 2003-04-17 Tankut Akgul Debugger operating system for embedded systems
US6834360B2 (en) 2001-11-16 2004-12-21 International Business Machines Corporation On-chip logic analyzer
US20030135720A1 (en) 2002-01-14 2003-07-17 International Business Machines Corporation Method and system using hardware assistance for instruction tracing with secondary set of interruption resources
US7254716B1 (en) 2002-02-13 2007-08-07 Lsi Corporation Security supervisor governing allowed transactions on a system bus
US7213134B2 (en) 2002-03-06 2007-05-01 Hewlett-Packard Development Company, L.P. Using thread urgency in determining switch events in a temporal multithreaded processor unit
US6615371B2 (en) 2002-03-11 2003-09-02 American Arium Trace reporting method and system
US7055139B2 (en) 2002-03-28 2006-05-30 Hewlett-Packard Development Company, L.P. Multiprocess debugging using multiple conventional debuggers
GB2389432B (en) * 2002-06-07 2005-09-07 Advanced Risc Mach Ltd Instruction tracing in data processing systems
US7003703B2 (en) 2002-06-21 2006-02-21 Sandbridge Technologies, Inc. Method of interleaving/deinterleaving in a communication system
US7516446B2 (en) * 2002-06-25 2009-04-07 International Business Machines Corporation Method and apparatus for efficient and precise datarace detection for multithreaded object-oriented programs
US7185319B2 (en) 2002-07-09 2007-02-27 Microsoft Corporation Debugging distributed applications
US7512954B2 (en) * 2002-07-29 2009-03-31 Oracle International Corporation Method and mechanism for debugging a series of related events within a computer system
US7346895B2 (en) * 2002-07-31 2008-03-18 International Business Machines Corporation Method of tracing data collection
US7529258B2 (en) * 2002-08-09 2009-05-05 Lecroy Corporation Method and system for cascading analyzer trace memories
DE10244922B4 (de) 2002-09-25 2009-08-13 Infineon Technologies Ag Programmgesteuerte Einheit und Verfahren zum Debuggen von einer programmgesteuerten Einheit ausgeführten Programmen
US7519862B2 (en) 2002-10-11 2009-04-14 Broadcom Corporation Software programmable verification tool having a single built-in self-test (BIST) module for testing and debugging multiple memory modules in a device under test (DUT)
US7360117B1 (en) 2002-10-24 2008-04-15 Verisilicon Holdings (Cayman Islands) Co. Ltd. In-circuit emulation debugger and method of operation thereof
US7370210B2 (en) 2002-11-18 2008-05-06 Arm Limited Apparatus and method for managing processor configuration data
GB2411254B (en) 2002-11-18 2006-06-28 Advanced Risc Mach Ltd Monitoring control for multi-domain processors
GB2396034B (en) 2002-11-18 2006-03-08 Advanced Risc Mach Ltd Technique for accessing memory in a data processing apparatus
GB2396930B (en) 2002-11-18 2005-09-07 Advanced Risc Mach Ltd Apparatus and method for managing access to a memory
US6948155B2 (en) * 2002-11-22 2005-09-20 Texas Instruments Incorporated Little offset in multicycle event maintaining cycle accurate tracing of stop events
US7219333B2 (en) * 2002-11-22 2007-05-15 Texas Instruments Incorporated Maintaining coherent synchronization between data streams on detection of overflow
US7047451B2 (en) * 2002-11-22 2006-05-16 Texas Instruments Incorporated Tracing program counter addresses using native program counter format and instruction count format
US7131113B2 (en) * 2002-12-12 2006-10-31 International Business Machines Corporation System and method on generating multi-dimensional trace files and visualizing them using multiple Gantt charts
US7325169B2 (en) * 2002-12-17 2008-01-29 Texas Instruments Incorporated Apparatus and method for trace stream identification of multiple target processor events
JP4436036B2 (ja) * 2002-12-18 2010-03-24 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、トレース処理方法、プログラム及び記録媒体
US6798713B1 (en) 2003-01-31 2004-09-28 Zilog, Inc. Implementing software breakpoints
JP3974063B2 (ja) 2003-03-24 2007-09-12 松下電器産業株式会社 プロセッサおよびコンパイラ
US7142246B2 (en) 2003-03-31 2006-11-28 Macronix International Co., Ltd. Apparatus and method for de-interlacing video, including 3:2 pulldown video
US7013400B2 (en) 2003-04-24 2006-03-14 International Business Machines Corporation Method for managing power in a simultaneous multithread processor by loading instructions into pipeline circuit during select times based on clock signal frequency and selected power mode
US7047337B2 (en) * 2003-04-24 2006-05-16 International Business Machines Corporation Concurrent access of shared resources utilizing tracking of request reception and completion order
US7159101B1 (en) * 2003-05-28 2007-01-02 Mips Technologies, Inc. System and method to trace high performance multi-issue processors
US7222262B2 (en) 2003-08-05 2007-05-22 Newisys, Inc. Methods and devices for injecting commands in systems having multiple multi-processor clusters
US7069176B2 (en) * 2003-08-07 2006-06-27 Arm Limited Trace source correlation in a data processing apparatus
US7383537B2 (en) 2003-08-20 2008-06-03 Microsoft Corporation Debugging an application that employs rights-managed content
US7600221B1 (en) * 2003-10-06 2009-10-06 Sun Microsystems, Inc. Methods and apparatus of an architecture supporting execution of instructions in parallel
US7321957B2 (en) 2003-10-24 2008-01-22 Intel Corporation Debugging a trusted component in a system
TWI226757B (en) 2003-11-11 2005-01-11 Benq Corp Address generator for block interleaving
US7328429B2 (en) * 2003-11-13 2008-02-05 Intel Corporation Instruction operand tracing for software debug
US7383540B2 (en) 2003-12-12 2008-06-03 International Business Machines Corporation Altering execution flow of a computer program
US7475303B1 (en) 2003-12-29 2009-01-06 Mips Technologies, Inc. HyperJTAG system including debug probe, on-chip instrumentation, and protocol
US7461407B2 (en) 2004-02-05 2008-12-02 Research In Motion Limited Debugging port security interface
US7360203B2 (en) * 2004-02-06 2008-04-15 Infineon Technologies North America Corp. Program tracing in a multithreaded processor
US7263599B2 (en) * 2004-02-06 2007-08-28 Infineon Technologies Thread ID in a multithreaded processor
JP4347082B2 (ja) * 2004-02-23 2009-10-21 日本電気株式会社 イベントトレースデータの時刻補正装置,時刻補正方法及び時刻補正プログラム
JP4409349B2 (ja) 2004-04-27 2010-02-03 Okiセミコンダクタ株式会社 デバッグ回路およびデバッグ制御方法
US7945900B2 (en) * 2004-04-29 2011-05-17 Marvell International Ltd. Debugging tool for debugging multi-threaded programs
US20060253894A1 (en) 2004-04-30 2006-11-09 Peter Bookman Mobility device platform
US7380276B2 (en) 2004-05-20 2008-05-27 Intel Corporation Processor extensions and software verification to support type-safe language environments running with untrusted code
US7558920B2 (en) 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7363523B2 (en) 2004-08-31 2008-04-22 Intel Corporation Method and apparatus for controlling power management state transitions
JP4520788B2 (ja) 2004-07-29 2010-08-11 富士通株式会社 マルチスレッドプロセッサ
US7278058B1 (en) * 2004-08-25 2007-10-02 Unisys Corporation Methods and apparatus to diagnose software
US7814308B2 (en) 2004-08-27 2010-10-12 Microsoft Corporation Debugging applications under different permissions
GB0420442D0 (en) 2004-09-14 2004-10-20 Ignios Ltd Debug in a multicore architecture
US9038070B2 (en) 2004-09-14 2015-05-19 Synopsys, Inc. Debug in a multicore architecture
US20060129999A1 (en) * 2004-11-16 2006-06-15 Sony Computer Entertainment Inc. Methods and apparatus for using bookmarks in a trace buffer
US7783925B2 (en) 2004-12-02 2010-08-24 Texas Instruments Incorporated Receiving control, data, and control segments of communication scan packets
US7681014B2 (en) 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7418629B2 (en) * 2005-02-11 2008-08-26 International Business Machines Corporation Synchronizing triggering of multiple hardware trace facilities using an existing system bus
US7472378B2 (en) 2005-02-23 2008-12-30 International Business Machines Corporation Breakpoint management and reconciliation for embedded scripts in a business integration language specified program process
US20060206902A1 (en) 2005-03-14 2006-09-14 Sujat Jamil Variable interleaved multithreaded processor method and system
US7369954B2 (en) * 2005-03-17 2008-05-06 International Business Machines Corporation Event tracing with time stamp compression and history buffer based compression
US7747985B2 (en) * 2005-03-18 2010-06-29 Microsoft Corporation Conformance testing of multi-threaded and distributed software systems
US7917907B2 (en) 2005-03-23 2011-03-29 Qualcomm Incorporated Method and system for variable thread allocation and switching in a multithreaded processor
JP2006285430A (ja) 2005-03-31 2006-10-19 Matsushita Electric Ind Co Ltd Cpuメモリアクセス解析装置
US7657875B2 (en) * 2005-04-12 2010-02-02 International Business Machines Corporation System and method for collecting a plurality of metrics in a single profiling run of computer code
US7698686B2 (en) * 2005-04-15 2010-04-13 Microsoft Corporation Method and apparatus for performance analysis on a software program
US7558984B2 (en) 2005-04-27 2009-07-07 Texas Instruments Incorporated Apparatus and method for test and debug of a processor/core having advanced power management
US7536597B2 (en) 2005-04-27 2009-05-19 Texas Instruments Incorporated Apparatus and method for controlling power, clock, and reset during test and debug procedures for a plurality of processor/cores
US8881114B2 (en) * 2005-05-16 2014-11-04 Texas Instruments Incorporated Stored program writing stall information when a processor stalls waiting for another processor
US7730545B2 (en) 2005-05-23 2010-06-01 Arm Limited Test access control for secure integrated circuits
US7548911B2 (en) * 2005-05-28 2009-06-16 Microsoft Corporation Diagnosing problems in distributed systems
JP2007026051A (ja) 2005-07-15 2007-02-01 Matsushita Electric Ind Co Ltd 情報処理装置および情報処理システム
US8694621B2 (en) * 2005-08-19 2014-04-08 Riverbed Technology, Inc. Capture, analysis, and visualization of concurrent system and network behavior of an application
WO2007028227A1 (en) 2005-09-09 2007-03-15 Ibm Canada Limited - Ibm Canada Limitee Integrating different programming language debug tools for observing thread execution
US9146832B2 (en) 2005-10-14 2015-09-29 Oracle International Corporation Debugging functionality embedded in an application
JP4388518B2 (ja) 2005-11-01 2009-12-24 株式会社ソニー・コンピュータエンタテインメント スレッドデバッグ装置、スレッドデバッグ方法及びプログラム
US7770155B2 (en) * 2005-11-03 2010-08-03 International Business Machines Corporation Debugger apparatus and method for indicating time-correlated position of threads in a multi-threaded computer program
US7802233B2 (en) * 2006-01-30 2010-09-21 Microsoft Corporation Automated display of trace historical data
US20070234306A1 (en) * 2006-03-31 2007-10-04 Klinger Uwe D Tracing performance of machine-readable instructions
US20080034350A1 (en) 2006-04-05 2008-02-07 Conti Gregory R System and Method for Checking the Integrity of Computer Program Code
KR20070109432A (ko) 2006-05-11 2007-11-15 삼성전자주식회사 커널 인지 디버깅 장치 및 방법
US20070288906A1 (en) * 2006-05-16 2007-12-13 Texas Instruments Incorporated Efficient transfer of timing information
US7849315B2 (en) 2006-05-22 2010-12-07 General Dynamics C4 Systems, Inc. Method for managing operability of on-chip debug capability
GB0613289D0 (en) * 2006-07-04 2006-08-16 Imagination Tech Ltd Synchronisation of execution threads on a multi-threaded processor
US8301870B2 (en) * 2006-07-27 2012-10-30 International Business Machines Corporation Method and apparatus for fast synchronization and out-of-order execution of instructions in a meta-program based computing system
US8051162B2 (en) * 2006-07-28 2011-11-01 Hewlett-Packard Development Company, L.P. Data assurance in server consolidation
US7702055B2 (en) * 2006-09-29 2010-04-20 Mips Technologies, Inc. Apparatus and method for tracing processor state from multiple clock domains
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US8533530B2 (en) 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted 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
US8341604B2 (en) 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US7657791B2 (en) 2006-11-15 2010-02-02 Qualcomm Incorporated Method and system for a digital signal processor debugging during power transitions
US8370806B2 (en) 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
DE102007009909B4 (de) * 2007-02-28 2016-09-08 Globalfoundries Inc. Verfahren zum Validieren einer atomaren Transaktion in einer Multikernmikroprozessorumgebung
US9195462B2 (en) * 2007-04-11 2015-11-24 Freescale Semiconductor, Inc. Techniques for tracing processes in a multi-threaded processor
US7681078B2 (en) 2007-05-18 2010-03-16 Freescale Semiconductor, Inc. Debugging a processor through a reset event
US8001428B2 (en) * 2007-10-29 2011-08-16 Arm Limited Packing trace protocols within trace streams

Also Published As

Publication number Publication date
WO2008128107A3 (en) 2010-03-18
KR101072687B1 (ko) 2011-10-11
EP2037367B1 (en) 2018-04-18
HUE038872T2 (hu) 2018-12-28
JP2017152014A (ja) 2017-08-31
CN101874238B (zh) 2013-10-16
CN101874238A (zh) 2010-10-27
WO2008128107A2 (en) 2008-10-23
JP2010524140A (ja) 2010-07-15
KR20090130243A (ko) 2009-12-21
ES2678413T3 (es) 2018-08-10
US20080256396A1 (en) 2008-10-16
JP2014142946A (ja) 2014-08-07
US8484516B2 (en) 2013-07-09
EP2037367A2 (en) 2009-03-18
EP2037367A3 (en) 2010-03-17

Similar Documents

Publication Publication Date Title
JP6423037B2 (ja) マルチスレッドプロセッサのためのインタースレッドトレースアライメント方法およびシステム
KR101078934B1 (ko) 개선된 디지털 신호 프로세서 디버깅 동작들을 위한 임베디드 트레이스 매크로셀
KR101155673B1 (ko) 신뢰받은/신뢰받지 못한 디지털 신호 프로세서 디버깅 동작들을 위한 방법 및 시스템
KR101083182B1 (ko) 비-간섭적 디지털 신호 프로세서 디버깅 동안 명령 스터핑 동작들을 위한 방법 및 시스템
US8370806B2 (en) Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
KR101097620B1 (ko) 전력 트랜지션들 동안 디지털 신호 프로세서를 위한 방법 및 시스템

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180528

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180528

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20180530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180719

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180918

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181017

R150 Certificate of patent or registration of utility model

Ref document number: 6423037

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees