CN101874238A - 用于多线程处理器的线程间跟踪对准方法和*** - Google Patents
用于多线程处理器的线程间跟踪对准方法和*** Download PDFInfo
- Publication number
- CN101874238A CN101874238A CN200880011265A CN200880011265A CN101874238A CN 101874238 A CN101874238 A CN 101874238A CN 200880011265 A CN200880011265 A CN 200880011265A CN 200880011265 A CN200880011265 A CN 200880011265A CN 101874238 A CN101874238 A CN 101874238A
- Authority
- CN
- China
- Prior art keywords
- thread
- tracks
- scheduled event
- described common
- digital signal
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0715—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation 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)
Abstract
本发明揭示用于数字信号处理器的设计和使用的技术,包含(但不限于)用于在通信(例如,CDMA)***中处理传输。与执行跟踪处理的线程间跟踪对准包含记录与共同预定事件相关的定时数据。此事件可为自从最后线程起始执行跟踪时起的循环数目或自从所有线程终止执行跟踪时起的循环数目。将线程起始执行跟踪的循环数目参考于所述共同预定事件以用于维持执行跟踪的定时。随后更新与所述共同预定事件相关的所述数据以与所述线程起始执行跟踪的时间相关联。结果是准许对准与所有线程相关联的定时数据。相互相关的记录准许针对在多线程处理器中操作的线程重构相互依赖的执行跟踪信息,以及使所有操作线程的定时数据同步。
Description
相关申请案
本申请案与以下共同待决的美国专利申请案相关:2006年11月15日申请的题为“用于多线程数字信号处理器的非侵入式线程选择性调试方法和***(NON-INTRUSIVE,THREAD-SELECTIVE,DEBUGGING METHOD AND SYSTEMFOR A MULTI-THREAD DIGITAL SIGNAL PROCESSOR)”的第11/560,217号申请案;2006年11月15日申请的题为“用于在功率转变期间进行数字信号处理器调试的方法和***(METHOD AND SYSTEM FOR A DIGITAL SIGNAL PROCESSOR DEBUGGINGDURING POWER TRANSITIONS)”的第11/560,323号申请案;2006年11月15日申请的题为“用于受信任/不受信任数字信号处理器调试操作的方法和***(METHODAND SYSTEM FOR TRUSTED/UNTRUSTED DIGITAL SIGNAL PROCESSORDEBUGGING OPERATIONS)”的第11/560,332号申请案;2006年11月15日申请的题为“用于增强型数字信号处理器调试操作的嵌入式跟踪宏单元(EMBEDDED TRACEMACROCELL FOR ENHANCED DIGITAL SIGNAL PROCESSOR DEBUGGINGOPERATIONS)”的第11/560,339号申请案;以及2006年11月15日申请的题为“用于在非侵入式数字信号处理器调试期间进行指令填充操作的方法和***(METHODAND SYSTEM FOR INSTRUCTION STUFFING OPERATIONS DURINGNON-INTRUSIVE DIGITAL SIGNAL PROCESSOR DEBUGGING)”的第11/560,344号申请案。
技术领域
所揭示的标的物涉及例如可在数据通信和类似应用中使用的数据处理***和过程。更明确地说,本发明涉及一种新颖且改进的用于数字信号处理调试操作的方法和***,包含提供用于多线程处理器的线程间跟踪对准方法和***。
背景技术
电信和其它类型的电子装备以及支持性视频、复杂音频、视频会议和其它富含软件的应用越来越多地涉及信号处理。信号处理要求以复杂但重复性的算法进行快速的数学计算和数据产生。许多应用要求实时计算,即,信号作为时间的连续函数,其必须经取样且转换为数字信号以用于数值处理。处理器必须执行在样本到达时对样本实行离散计算的算法。
数字信号处理器(DSP)的结构经优化以处置此些算法。良好的信号处理引擎的特性包含快速且灵活的算术计算单元、去往和来自计算单元的不受限的数据流、计算单元中的扩展精度和动态范围、双地址产生器、有效的程序定序以及编程的简易。
DSP技术的一种有前景的应用包含通信***,例如码分多址(CDMA)***,其支持经由卫星或陆地链路在用户之间进行语音和数据通信以及文本消息接发和其它应用。CDMA技术在多址通信***中的使用揭示于题为“使用卫星或陆地中继器的扩展频谱多址通信***(SPREAD SPECTRUM MULTIPLE ACCESS COMMUNICATION SYSTEMUSING SATELLITE OR TERRESTRIAL REPEATERS)”的第4,901,307号美国专利以及题为“用于在CDMA蜂窝式电信手持机***中产生波形的***和方法(SYSTEM ANDMETHOD FOR GENERATING WAVEFORMS IN A CDMA CELLULAR TELEHANDSETSYSTEM)”的第5,103,459号美国专利中,以上两个专利均转让给所主张标的物的受让人。
CDMA***通常经设计以符合一个或一个以上标准。一种此类第一代标准是“用于双模式宽带扩展频谱蜂窝式***的TIA/EIA/IS-95终端-基站兼容性标准”,下文中称为IS-95标准。IS-95 CDMA***能够发射语音数据和包数据。可更有效地发射包数据的较新一代标准由名为“第三代合作伙伴计划”(3GPP)的协会提供且包含于一组文献中,所述组文献包含第3G TS 25.211号、第3G TS 25.212号、第3G TS 25.213号和第3G TS25.214号文献,公众可容易获得所述文献。3GPP标准在下文中称为W-CDMA标准。
采用例如W-CDMA标准的复杂DSP操作软件要求稳健的开发工具。此类开发工具可包含用于代码产生、集成、测试、调试和评估应用程序性能的那些工具。在开发和操作软件或复杂DSP应用程序(例如高级电信应用程序)时,需要非常复杂的但非侵入式的调试软件。也就是说,调试软件应用程序必须不仅足够稳健来监视、测试和支持软件缺陷和操作问题的校正。同时,调试软件可能需要操作以便在同时的调试操作期间不干扰核心处理器软件操作。否则,核心处理软件中的任何问题可能会在软件调试操作期间不被检测到或不被正确地检测到。
在调试操作期间,需要将用于跟踪DSP内的操作线程的处理的操作的跟踪功能与非侵入式软件调试操作相关联。此***可提供关于DSP的状态参数的信息以用于在特定事件发生之前和之后俘获此信息。同时,即使当DSP以全速操作时,所需的跟踪功能也不会对处理器性能增加任何显著的负担。与非侵入式调试操作组合,此跟踪过程可俘获特定类型的信息。因此,跟踪功能在多线程处理器中提供与非侵入式调试操作结合的监视和记录。
跟踪功能可提供的尤其有用的一组信息包含线程间执行行为。也就是说,需要一组能够使多线程DSP的不同线程之间的跟踪数据相互相关的跟踪功能。没有已知的***提供此信息。在调试软件操作中,用户可能期望选择任意的时间点以知道多线程处理器在特定时间点可正在执行哪些指令。此信息在不同线程在不同时间激活不同的每线程调试操作的实例中可能尤其有价值。
在交错式多线程DSP中,多个指令序列的执行可能同时发生。由此,处理器可被视为若干独立操作的单线程处理器。而且,此处理器可包含执行跟踪单元,其记录每一操作线程的运行时间执行序列。这些跟踪通过将程序流分解为包序列而促进程序调试操作。在此***中,可向某些包添加线程编号字段以识别哪个包属于哪个线程。通过此方法,用于特定线程的每一包序列可重新创建包含所有程序流改变和所有指令定时的完全执行序列。
虽然识别哪些包属于哪个线程是有利的,但没有已知的跟踪功能提供在执行跟踪期间识别线程间定时关系的能力。举例来说,跟踪激活之间的时间差在线程之间可能非常大。当线程跟踪在不同时间对不同线程开始时,可能不可将一个线程的定时与同样正被跟踪的其它线程对准。
因此,需要一组能够在非侵入式调试过程内操作的跟踪功能,其建立并维持不同DSP线程之间的定时关系。
还需要一种方法和***,其准许多线程处理器的不同线程的对准以与多线程处理器的嵌入式跟踪宏单元过程结合使用。
再需要一种用于交错式多线程处理器的线程间跟踪对准方法和***,其能够与在核心处理器软件操作期间发生的非侵入式硅内调试过程宽阵列结合操作。
发明内容
本发明揭示用于在多线程处理器中提供线程间跟踪对准的技术,所述技术与嵌入式跟踪宏单元协作以识别线程间定时关系,且因此建立和维持不同线程之间的各种定时关系。本文揭示的方法和***改进了数字信号处理器的操作和数字信号处理器指令对于日益强大的软件应用程序(包含在个人计算机、个人数字助理、无线手持机以及类似的电子装置中操作的应用程序)的有效使用两者,以及增加了相关联的数字处理器速度和服务质量。
根据所揭示标的物的一个方面,提供一种方法和***以用于进行与执行跟踪处理的线程间跟踪对准,其包含记录与共同预定事件相关的定时数据。此共同预定事件可为自从最后线程起始执行跟踪时起的循环数目或自从所有线程终止执行跟踪时起的循环数目。将线程起始执行跟踪的循环数目参考于共同预定事件以用于维持执行跟踪的定时。随后更新与共同预定事件相关的数据以与线程起始执行跟踪的时间相关联。结果是准许对准与所有线程相关联的定时数据。相互相关的记录准许针对在多线程处理器中操作的线程重构相互依赖的执行跟踪信息,以及同步所有操作线程的定时数据。
从本文提供的描述将明白所揭示标的物的这些和其它优点以及额外的新颖特征。此发明内容的意图不是对所主张标的物的全面描述,而是提供对标的物的某些功能性的简短概览。所属领域的技术人员在检视以下附图和详细描述后将明白本文提供的其它***、方法、特征和优点。希望所有此类额外的***、方法、特征和优点均包含在此描述中且在所附权利要求书的范围内。
附图说明
从下文陈述的结合附图做出的详细描述可更容易明白所揭示标的物的特征、性质和优点,其中相同参考符号始终做出对应识别,且其中:
图1是可实施本文揭示的各种实施例中的一者的通信***的简化框图;
图2说明用于提出本发明的教示的DSP结构;
图3提供并入有本发明揭示的标的物的技术优点的多线程数字信号处理器的一个实施例的结构框图;
图4揭示应用本发明的ISDB/JTAG接口特征的数字信号处理器核心的某些方面;
图5呈现可应用于数字信号处理器的操作模式的过程流程图,所述操作模式包含本发明相关的调试操作模式;
图6提供描绘本发明的嵌入式跟踪宏单元的总体功能视图的框图;
图7展示所揭示的嵌入式跟踪宏单元过程和***的触发块电路;
图8说明本发明揭示的线程间跟踪对准过程的重要概念;
图9展示可应用于所揭示标的物中的包产生单元的功能概览;
图10展示可应用于本发明揭示的标的物的指令的各种原子的定义表;
图11提供用于本发明的分支地址包,其支持在本发明中有用的32位TID字段;
图12呈现供在本发明揭示的过程中使用的同步重新开始包的示范性内容;
图13描绘用于支持本发明揭示的标的物的同步周期包的实施例;
图14呈现供在本发明揭示的过程中使用的循环计数包;
图15展示与本发明相关的pheader格式4包的一个实施例;以及
图16描绘用于与所揭示标的物的实施例一起使用的异步包。
具体实施方式
所揭示的用于与多线程数字信号处理器的执行跟踪过程结合使用的线程间跟踪对准方法和***的标的物可应用于本文所呈现的益处可有利于的任何类型的多线程处理。一种此类应用出现在电信中,且明确地说出现在采用一个或一个以上数字信号处理电路的无线手持机中。为了解释可如何使用此无线手持机,图1提供通信***10的简化框图,通信***10可实施所揭示中断处理方法和***的所呈现实施例。在发射器单元12处,通常以块为单位从数据源14向发射(TX)数据处理器16发送数据,所述发射数据处理器16对数据进行格式化、编码和处理以产生一个或一个以上模拟信号。随后将模拟信号提供到发射器(TMTR)18,其对基带信号进行调制、过滤、放大和上变频转换以产生经调制信号。随后经由天线20将经调制信号发射到一个或一个以上接收器单元。
在接收器单元22处,所发射信号由天线24接收且提供到接收器(RCVR)26。在接收器26内,对所接收信号进行放大、过滤、下变频转换、解调和数字化以产生同相(I)和(Q)样本。随后由接收(RX)数据处理器28对样本进行解码和处理以恢复所发射的数据。接收器单元22处的解码与处理是以与发射器单元12处实行的编码与处理互补的方式实行的。随后将所恢复的数据提供到数据汇30。
上文描述的信号处理支持语音、视频、包数据、消息接发和其它类型的通信在一个方向上的发射。双向通信***支持双路数据发射。然而,图1中为了简单起见而没有展示用于另一方向的信号处理。通信***10可为码分多址(CDMA)***、时分多址(TDMA)通信***(例如,GSM***)、频分多址(FDMA)通信***,或支持用户之间经由陆地链路的语音和数据通信的其它多址通信***。在特定实施例中,通信***10是符合W-CDMA标准的CDMA***。
图2说明可充当图1的发射数据处理器16和接收数据处理器28的DSP 40结构。我们强调DSP 40仅表示可有效使用本文所呈现的教示和概念的很多可能的数字信号处理器实施例中的一个实施例。因此,在DSP 40中,线程T0:T5(参考标号42到52)含有来自不同线程的若干组指令。电路54表示指令存取机制,且用于获取用于线程T0:T5的指令。将用于电路54的指令排队到指令队列56中。指令队列56中的指令准备好发布到处理器管线66(见下文)中。从指令队列56,可由发布逻辑电路58选择单个线程(例如,线程T0)。读取选定线程的寄存器堆60且将所读取的数据发送到用于SLOT0:SLOT3的执行数据路径62。在此实例中,SLOT0:SLOT3提供在本实施例中采用的包分组组合。
来自执行数据路径62的输出去往寄存器堆写入电路64,其也经配置以适应个别线程T0:T5,用于返回来自DSP 40的操作的结果。因此,从电路54和之前到寄存器堆写入电路64的数据路径形成处理管线66。本实施例可采用使用具有多达六个线程T0:T5的单个处理器的异类元件处理器(HEP)***的混合。处理器管线66具有六个级,其匹配于从电路54到寄存器60和64获取数据项目所必要的处理器循环的最小数目。DSP 40同时执行处理器管线66内的不同线程T0:T5的指令。也就是说,DSP 40提供六个独立的程序计数器、用以区分处理器管线66内的线程T0:T5的指令的内部标记机制,以及触发线程切换的机制。线程切换开销为从零到仅几个循环不等。
因此,DSP40提供一种通用数字信号处理器,其经设计以在广泛多种信号、图像和视频处理应用中获得高性能和低功率。图3提供DSP 40结构的简明概览,包含用于所揭示标的物的一种表现形式的相关联指令集结构的某些方面。DSP 40结构的实施方案支持交错式多线程(IMT)处理。在此执行模型中,硬件通过交错来自管线中的不同线程的指令而支持多个硬件线程T0:T5的同时执行。此特征允许DSP40包含主动时钟频率,同时仍维持高核心和存储器利用率。IMT处理提供高处理量而无需昂贵的补偿机制,例如无序执行、扩展转发网络等等。此外,DSP 40可包含IMT处理的变型,例如在M·艾哈迈德(M.Ahmed)等人的题为“可变交错式多线程处理器方法和***(Variable Interleaved Multi-threaded Processor Method and System)”和“用于多线程处理器中的可变线程分配和切换的方法和***(Method and System for Variable Thread Allocation and Switching in a Multi-threaded Processor)”的共同转让的美国专利申请案中所揭示的那些变型和新颖方法。
明确地说,图3提供可采用所揭示标的物的教示的应用于单个线程的针对DSP 40的核心处理结构框图70。框图70描绘共享指令高速缓冲存储器72,其经由总线接口(I/F)73从AXI总线74接收指令,所述指令包含混合的16位和32位指令。这些指令到达线程T0:T5的定序器76、用户控制寄存器78以及监督器控制寄存器80。所揭示标的物的核心级***结构还包含硅内调试***(ISDB)82,其经由JTAG接口84介接核心处理器70,所述两者均在下文中更详细地描述。
定序器76将混合双路超标量指令和四路VLIW指令提供到S管单元86、M管单元88、LD[加载]管90以及LD/ST[存储]管单元92,所述单元全部与通用寄存器94通信。AXI总线74还经由与共享数据高速缓冲存储器96的总线I/F 73将LD/ST指令传送到线程T0:T5。任选的L2高速缓冲存储器/TCM 98信号包含具有共享数据TCM 100的LD/ST指令,所述LD/ST指令进一步流动到线程通用寄存器94。从AHB***总线102,MSM特定控制器104与T0:T5通信中断,包含中断控制器指令、调试指令和定时指令。全局控制寄存器106与线程T0:T5通信控制寄存器指令。
因此,DSP 40包含六个虚拟DSP核心,其各自含有全局控制寄存器106和专用监督器控制寄存器80。全局控制寄存器106在所有线程之间共享。每一线程共享共同数据高速缓冲存储器和共同指令高速缓冲存储器。加载、存储和获取操作由共同总线接口服务。高性能AXI总线74和较低性能AHB总线102用于将数据和指令业务连接到核心外存储器和***设备。集成第二级存储器(高速缓冲存储器和/或TCM)输入98是任选的。***设备存取可通过存储器映射的加载和存储来进行。可在MSM级处配置AHB与AXI之间的物理地址分割。
显然,用于DSP 40的所呈现结构可随着时间而演进和改变。举例来说,DSP 40可使用的指令高速缓冲存储器的数目可从六改变为一,或其它数目的高速缓冲存储器。超标量分派、TCM 98处的L1数据以及其它结构方而可改变。然而,本标的物可在广泛多种配置中且针对DSP40的大量修改具有连续的相关性。
ISDB 82通过JTAG接口84为DSP 40提供硬件调试器。ISDB 82通过共享***或仅监督器寄存器而经由JTAG接口84提供软件调试特征。这些寄存器被划分为在每线程基础上的监督器控制寄存器80以及所有线程之间的全局控制寄存器106。***控制寄存器用于每线程中断和异常控制以及每线程存储器管理活动。全局寄存器允许与ISDB 82交互以进行调试操作。
ISDB 82使软件开发者能够在DSP 40操作的同时调试其软件。ISDB 82硬件与在ISDB 82中操作的软件调试器程序组合可用以调试DSP40操作***软件。ISDB 82支持个别地调试硬件线程。用户可暂停线程执行,查看和更改线程寄存器,查看和更改指令和数据存储器,单步通过线程,向线程填充指令,以及重新开始线程执行。受信任的用户能够接入所有ISDB 82特征,而不受信任的用户能够接入一子组特征。
ISDB 82可与调试器接口卡介接以与ISDB 82通信驻留于程序计数器(PC)上的调试软件,但其全部通过JTAG接口84。主机调试器软件可通过对ISDB控制寄存器进行读取和写入来与ISDB 82交互。举例来说,通信可通过识别将发生读取/写入的ISDB寄存器的40位包以及32位数据有效负载来进行。支持此操作的包格式可为多达64个控制寄存器,所述控制寄存器各自可为32位宽。
图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逻辑电路和CU 122的CU ISDB控制器126。CU ISDB控制器126与CU ISDB逻辑电路128以及ISDB控制器118通信。来自ISDB控制器118的控制输出包含ISDB数据输出130、ISDB复位信号132以及ISDB中断134。到ISDB控制器118的另外接口包含MCD接口136和ETM断点触发器138。
图5呈现用于DSP 40的各种模式控制方面的处理模式图140,包含在调试过程期间ISDB 82的操作。在图5中,DSP 40支持对所有线程为全局且对个别线程为局部的处理模式。每一DSP 40硬件线程个别地支持两种执行模式:用户(USER)模式142和监督器(SUPERVISOR)模式144,以及三种非处理模式:等待(WAIT)模式146、关闭(OFF)模式148和调试(DEBUG)模式150,其全部可能在图5中出现。一线程的模式与其它线程无关,例如,一个线程可能在等待模式146中,而另一线程在用户模式142中,等等。
图5的每线程模式状态图由各种指令或事件支持。这些包含“Except”或内部异常事件、“Int”或外部中断事件、来自异常模式的“RTE”或软件返回指令,以及“SSR”或更新SSR寄存器指令、可从任何模式输入的“Stop”或软件停止指令、也可从任何模式输入的“Start”或软件启动指令、“trap”或软件陷阱指令、“Wait”或软件等待指令、“Resume”或软件重新开始指令、“DE”或调试事件,以及“DR”或调试指令。虽然所主张标的物的不同实施方案中的功能可能与本文所呈现的功能稍微不同,但“Start”、“Wait”、“Resume”、“DE”和/或“DR”的含义可被给予其与所主张标的物的范围一致的最广解释。
寄存器在DSP 40中可用于用户模式142和监督器模式144两者中。用户模式寄存器被划分为一组通用寄存器和一组控制寄存器。通用寄存器用于所有通用计算,包含地址产生、标量和向量算术。控制寄存器支持专用功能性,例如硬件循环、断言等。通用寄存器为32位宽且可被作为单个寄存器或作为对准的成对两个寄存器而存取。通用寄存器堆提供用于指令的所有操作数,包含用于加载/存储的地址、用于数值指令的数据操作数,以及用于向量指令的向量操作数。
调试模式150提供其中线程正在等待来自ISDB 82的命令的特殊状态。每当发生ISDB调试事件,例如通过软件断点指令的执行、来自ISDB 82的断点命令或硬件断点的发生,所指示的线程便可进入调试模式150。当处于调试模式150中时,核心由ISDB82经由来自JTAG接口84的命令控制。当ISDB 82由于重新开始命令的执行而释放线程时,线程可根据其当前模式设定而重新开始操作。当线程处于调试模式150中时,其由ISDB 82控制且无法由其它线程控制。可忽略来自正在运行的线程的以处于调试模式150中的线程为目标的等待、重新开始、启动或停止指令。类似地,非可屏蔽中断(NMI)可由处于调试模式150中的线程忽略。
硬件复位(HARDWARE RESET)模式(图5中未展示)和调试模式150对所有线程为全局的。每当硬件复位引脚被断言,无论任何线程的处理状态如何,DSP 40均可进入硬件复位模式。在硬件复位模式中,所有寄存器被设定到其复位值。在硬件复位引脚被解除断言之前不可发生任何处理。当复位引脚被断言时,处理器可转变到复位模式中,且所有寄存器可被复位到其硬件复位值。在复位引脚被解除断言时,线程T0可被给予软复位中断。这可致使线程T0进入监督器模式144且在复位向量位置处开始执行。所有其它线程可保持关闭。在此点处,软件自由地个别地控制每一线程的模式转变。
图6到17涉及DSP 40的嵌入式跟踪宏单元(ETM)单元的当前所揭示的新颖且有利的特征,所述ETM单元通过实时俘获关于软件执行流的详细信息而增强对代码的用户调试。ETM以非侵入方式监视和记录选定DSP 40执行,将执行信息形成为包,且将包流发出到芯片外或发出到称为ETB的芯片上存储器。ETM还含有用以将跟踪信息的产生限制于或聚集于所关注区的若干机制。通过使用包流,可创建所述执行的重构,从而向用户给予对代码的运行时间行为的直接可见性。
因此,ETM为DSP 40和其它类似的数字信号处理器提供全面的调试和跟踪功能。这些功能允许在特定事件之前和之后俘获关于处理器状态的信息,同时即使在DSP 40以全速运行时也不对处理器性能添加任何负担。ETM可以软件配置以仅俘获选择跟踪信息且仅在特定条件序列之后俘获。专用的可配置的跟踪端口和FIFO随后允许由外部跟踪端口分析器在不中断或影响处理器的情况下从芯片读取经压缩的跟踪数据。
可从1到32位数据总线配置跟踪端口,其中跟踪时钟与核心时钟无关。举例来说,来自ETM的数据速率可为核心时钟的一半,且引脚的数目可增加以维持数据带宽。类似地,引脚的数目可减半且数据速率增加。ETM可独立使用以及在多核心环境内使用以允许开发者查看来自多个异步核心的同时且相关的跟踪。
图6提供描绘支持本发明的多种总体ETM功能的框图160。DSP核心处理器70介接ETM 162,ETM 162包含触发与过滤电路164和压缩与包化电路166。在触发与过滤电路164和压缩与包化电路166进行处理之后,ETM输出168流动到跟踪储集区170,跟踪储集区170可为例如嵌入式跟踪缓冲器(ETB)电路或芯片外电路。从跟踪储集区170,软件执行记录作为输出172流动到调试主机173。调试主机173包含解压缩器174,用于接收跟踪储集区输出172且从该处产生经重构的执行流176。ETM 162从JTAG 84接收控制输入178,所述输入是JTAG 84响应于来自调试主机173的数据和指令而产生的。
如图6所示,ETM 162监视DSP 40管线。通过使用此信息,ETM 162实行两个主要功能:过滤/触发和压缩/包化。过滤和触发操作是由用户通过JTAG接口84来编程的,且用以界定何时开启和关闭跟踪。压缩/包化单元获得DSP 40执行信息且有效地将其形成为通过跟踪端口从ETM 162发出的包。离开ETM 162的跟踪流被馈送到跟踪储集区170中。跟踪储集区170提供大的存储器容量以用于记录跟踪记录,且可为芯片外或芯片上的。芯片上储集区称为嵌入式跟踪缓冲器(ETB)。解压缩器组件174是在调试主机173上运行的软件组件,其从跟踪储集区170获得包流且连同程序映像一起重构DSP 40的执行流,从而向用户给予对DSP管线66的详细可见性。
ETM 162提供用于所有六个线程的跟踪指令定序和定时,以及记录和发出程序剖析计数(高速缓冲存储器未中、存储体冲突和微翻译旁视缓冲器未中)的能力。ETM 162可在PC和LDST地址上以及在LDST数据上触发。ETM 162支持串行和外部事件检测。此外,ETM 162还可产生ISDB断点触发事件、外部触发事件以及DSP40中断。ETM 162可通过JTAG 84来编程,且在一个实施例中可支持512×32位(在一个实施例中)的专用ETB跟踪储集区170。ETM 162可含有若干4触发器块(其各自具有2个地址比较器和1个数据比较器)且可含有3状态定序器。ETM 162跟踪可在安全DSP 40启用寄存器的控制下操作,且可经编程以在DSP 40功率崩溃期间操作。
ETM 162产生指令跟踪作为在给定时间窗口内针对线程的程序计数器的完全进展的记录。任选地,程序计数器进展的定时(即,暂停循环的识别)也可包含在指令跟踪中。使用事件资源机制来界定何时产生这些指令跟踪。通过对事件资源的编程来控制触发和过滤功能。更详细地说,事件资源控制过滤、触发和ISDB断点产生。过滤包含决定何时启用和停用指令跟踪的功能。触发涉及决定何时将触发标记***包流中。ISDB断点确定涉及指定ISDB 82产生和响应于断点以进行调试操作的条件。
ETM 162含有若干主要事件资源(例如,地址比较器和数据比较器)以检测DSP 40内何时发生特定条件(例如,某一PC是否被执行,或某一存储器位置是否被读取)。另外,存在次要事件资源(触发块和定序器),其实现对更复杂的事件布置的检测。
ETB跟踪储集区170提供芯片上存储器区域,跟踪信息在俘获期间存储在该处而不是在装置的引脚处通过跟踪端口立即导出。随后一旦俘获已完成,便可以降低的时钟速率从ETB跟踪储集区170读出所存储的信息。这是通过JTAG接口84来完成的。此两步骤过程消除了使用许多高速装置引脚的宽跟踪端口的必要性。有效地,在装置在引脚处已经具有JTAG端口的情况下创建“零引脚”跟踪端口。ETB跟踪储集区170可以较高频率且以全32位数据端口(超过跟踪端口带宽限制)来接受数据,且可与由***集成器供应的RAM块集成。
在一个实施例中,ETB跟踪储集区170具有2KB的大小,布置为512个条目,每一条目为32位宽。然而,ETB跟踪储集区的其它大小显然在所揭示标的物的范围内。ETB跟踪储集区170通过一组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俘获的预触发数据与后触发数据之间的划分。
因此,ETM 162辅助编程者针对DSP 40调试代码。ETM 162产生指令跟踪,所述指令跟踪是在给定时间窗口内针对线程的执行流的记录。通过使用所记录的指令跟踪,编程者可看到其代码的运行时间行为的详细视图。举例来说,如果用户的程序产生不可解释的异常,那么ETM 162辅助确定导致所述异常的指令流,进而允许用户确切评估发生了什么情况。ETM 162使用特定的基于包的协议以用于有效地表示程序流且用于使跟踪数据的产生减到最少。
ETM 162的一个方面包含用于链接事件和更复杂的事件检测情境的定序器过程。为了说明定序器过程和相关联的触发块电路180的操作,图7呈现定序器流程图190。响应于触发块电路输入182:188,定序器过程180在所示的实例中在三个状态S0:S2下操作。对于定序器过程310的操作,过程流可从状态S0到达S1或S2。从S1,定序前进到S2或返回到S0。从S2,定序前进到S1或S0。
因此,定序器过程180包含三个状态S0:S2,其中状态之间的转变是可编程的且基于来自触发块电路182:188的匹配。定序器过程180用于跟踪过滤以使得能够在状态启用时调节每一触发块电路182:188。这允许将跟踪限于某些状态。一旦进入新的状态,可将每一触发块电路182:188中的计数器再加载到初始值。一旦进入给定状态,可断言ISDB断点。一旦进入给定状态,可将触发标记***跟踪流中。一旦进入给定状态,还可断言外部触发控制。外部触发可在定序器处于给定状态中的任何时间保持被断言。一旦进入给定状态,可断言对DSP 40的中断。在复位之后,将计数器初始化为S0。如果多个转变同时发生,那么定序器保留在当前状态中。
在一个实施例中,ETM 162含有六个计数器,其可记录与DSP 40性能相关的各种事件。基本操作利用每一计数器作为可编程源。用户可编程区计数器将执行划分为具有固定循环数目的窗口。在窗口期间,将事件累加到计数器中。在窗口的末尾处,将计数器值形成为包且通过跟踪端口发出。随后将计数器复位且过程再次开始。当程序剖析单元与程序流跟踪同时操作时,这导致程序流跟踪被关于性能事件的详细信息覆盖。另外,程序剖析单元含有状态启用掩码以限制何时单元是活动的。
使用区计数器来将执行划分为具有固定循环数目的窗口。区的大小由用户可编程的寄存器确定。将区计数器初始化为用户指定的值,且将所有程序剖析事件计数器复位。区计数器随后开始递减计数。当区计数器到达零时,每一程序剖析事件计数的值在跟踪流中发射。过程随后再次开始。区计数器仅在状态启用匹配时计数。当程序剖析不活动时,区计数器维持其值,且在重新进入启用状态时重新开始。
程序剖析计数器可累积信息的不同事件包含(a)d高速缓冲存储器未中;(b)d高速缓冲存储器暂停循环;(c)i高速缓冲存储器未中;(d)i高速缓冲存储器暂停循环;(e)ITLB和DTLB未中;以及(f)总暂停循环。另外,每一程序剖析计数器含有六线程掩码以将计数器限制于在某些硬件线程中发生的事件。
与区计数器一样,程序剖析计数器仅当状态启用掩码匹配于当前状态时是活动的。在所有其它时间期间,计数器维持其值,且当重新进入启用状态时计数重新开始。
本发明提供用以支持线程间跟踪对准的功能的新颖的包协议集。也就是说,对于正使用ETM 162跟踪的任何线程,在任何任意的时间点,本发明允许针对所有正被跟踪的其它线程来识别在所述点处那些线程的程序计数器值和指令状态(例如,暂停、执行等)。因此,当ETM 162在循环准确模式中操作时,跟踪对准利用支持线程间跟踪对准的跟踪端口协议。因此,本发明使得用于同步重新开始包的循环计数字段为线程相关的,且使得循环计数字段对于线程间对准完全精确。本发明布置在用于所有线程的相同线程循环上产生同步周期包。这进一步允许在线程对准由于任何原因而丢失的情况下进行再对准。
在本发明的一个实施例中提供多个指令序列的执行同时发生,且在此期间DSP 40可被视为若干独立操作的单线程处理器。在ETM 162中,将程序流分解为包序列,且其包含对某些包的线程编号(tnum)字段以识别哪个包属于哪个线程。为了识别线程间定时关系,本发明建立且维持不同线程之间的定时关系。因为每一线程可独立地启用和停用指令跟踪,所以当一线程开启指令跟踪时,其它线程可能已经使其跟踪启用了一段时间。本发明揭示的方法和***通过标记一线程开启跟踪时与其它线程已开启且后续开启跟踪时之间的偏移来建立线程执行序列的相对定时。
因此,本发明包含线程循环偏移字段,用于指示自从最后线程开启跟踪时起的循环数目。而且,如果没有其它线程是活动的,那么循环偏移字段含有自从所有线程中的最近跟踪关闭时起的循环数目。在跟踪会话之后,包允许重构线程执行。随后,通过使用偏移字段,可在线程间正确地对准执行序列。另外,指令对准机制允许在数据损失的情况下重新建立执行跟踪。
所揭示的标的物此外允许重新建立线程间定时关系。通过维持准许周期性产生同步包的全局计数器,当计数器到达零时,可针对每一线程产生包。此包含有所述线程的当前程序计数器值。现在,由于关于DSP 40可能存在的与针对所有线程的同时包产生相关的各种限制,本发明将循环偏移字段包含到同步包。循环偏移字段指示自从(其它线程中的)最后线程产生同步包时起的循环数目。循环偏移字段具有有限的大小且如果计数饱和,那么同步将不能够实现,且可能等待计数器。通过使用这些机制(其在下文中更全面地描述),本发明允许针对一个线程在任何给定点维持线程间执行定时关系。结果是观察所有线程的操作和状态以用于调试和其它重要目的的能力。
通过此理解,图8说明本发明揭示的线程间跟踪对准过程的重要概念。参看图8,线程间对准过程200以时间t=0为基础,如时间线202指示。对于可在DSP 40上操作的各种线程204、206、208、210和212,线程起始可在不同的时间点发生。因此,在时间t=t0,线程204可起始操作。随后,在稍后的时间t=t1,线程206可起始操作。在时间t=t2,线程208开始,在t=t3,线程210开始操作,且在t=t4,线程212起始操作。如下文将更全面地描述,持续时间214表示在跟踪变为对线程212为活动之前的循环数目。持续时间214表示来自同步重新开始包的跟踪开始程序计数器(PC)的循环数目。对于所有相互相关的线程204:212,针对所有线程同时产生同步周期包。此外,持续时间220解决了例如在线程212中发生的长期暂停的情形。
为了更全面地描述本发明的线程间操作,图9展示包产生单元230的一个实施例的功能概览。包产生单元230包含包产生控制电路232,其接收了输入atomW、atomN和atomE以用于产生对FIFO输入多路复用器234的输出genIsyncP、genAsync、genBranch、genPheader、genIsyncR、genProf和genCCount。Pheader产生电路236接收来自包产生控制电路232的w-count、e-count和n-count输入以及atomE输入,其全部用于产生对FIFO输入多路复用器234的pheaderPK输出。PC/tld/asid/tnum输入流动到同步重新开始/循环计数产生功能238、同步周期产生功能240以及分支地址产生功能242。同步重新开始/循环计数产生功能238提供对FIFO输入多路复用器234的isyncRPK、isyncRLen、CCPK和CCLen输出。同步周期产生功能240提供进入FIFO输入多路复用器234的isyncPPK和isyncPLen输入。还接收分支型输入的分支地址产生功能242提供对FIFO输入多路复用器234的branchPK和branchLen输出。此外,简档产生功能244接收简档识别符输入以用于产生对FIFO输入多路复用器234的profPK和profLen输出。
FIFO输入多路复用器234获得需要在给定循环上产生的所有包,且将其形成为邻接的信息块。FIFO输入多路复用器234必须考虑在进行其级联时大小可变的包。FIFO输入多路复用器234的输出在被发送到FIFO之前被寄存。
对于本发明,包产生和FIFO输入多路复用器234操作在三个级上发生。在包产生的第一级中,包产生控制功能232和个别的包产生引擎236到244操作,且原子计数器w-count、e-count和n-count递增。FIFO输入多路复用器234操作包含在此第一级中将所述循环中所产生的所有包合并为邻接块。在第二级中,FIFO写入发生以包含旋转数据以对准于FIFO写入指针,计算并旋转写入启用,且将数据写入到FIFO多路复用器234寄存器中。在第三级(FIFO读取级)处,可从FIFO寄存器读取数据。在此第三级处,还发生***触发包和将数据发送到ETB的特殊情况。
如图9中所见,个别包产生单元中的每一者包化其相应数据,且随后将所得包和长度发送到FIFO输入多路复用器234以用于级联。另外,包产生控制电路232维持原子计数器,且决定在特定循环上将产生哪些包。包产生单元230维持三个计数器以记录在未来pheader或循环计数包中可能发出的待决原子的数目。每当遇到E原子(E-atom),E原子计数器便递增。每当遇到N原子(N-atom),N原子计数器便递增,且计数包含当前原子。也就是说,如果当前原子是N,那么其将被包含在N原子计数中。每当遇到W原子(W-atom),W原子计数器便递增。这些计数器是每线程计数器,且由此,在本实施例中每一者存在六个拷贝。每当通过pheader或循环计数包发出计数,计数器便被复位。
根据分支地址产生功能242,如果间接分支环回的目标不同于先前的环回,那么可针对所述目标产生分支地址包。如果设定了所有环回模式,那么针对每个环回发出包。而且,在同步重新开始和同步周期包产生之后强迫发出新的环回包。随后设定PC相关分支IF直接分支模式的目标。事件(中断、异常、SWI、TRAP等)的目标返回RTE指令。在跟踪启用被断言且其不是跟踪的第一循环(可改为产生同步重新开始包)时,可产生分支地址包。包产生控制单元针对每一线程维持先前环回目标寄存器以确定是否需要环回分支地址包。
图10展示可应用于本发明揭示的标的物的指令的各种原子的定义的表250。包协议的主要目标是支持线程间跟踪对准。也就是说,对于任何正被跟踪的线程,在任何任意的时间点处,用户应能够针对所有正被跟踪的其它线程识别在所述点处那些线程的程序计数器值和指令状态(暂停、执行)。跟踪对准当ETM 162在循环准确模式中操作时起作用。跟踪端口协议已被扩展以支持线程间跟踪对准。“S”型指令原子提供称为双跳跃的分支机制。这里,ETM 162包含S型,其使用pheader格式4包类型来界定以保持原子。
图11提供用于本发明的分支地址包280,其支持32位TID字段。本发明揭示的分支地址包支持32位TID字段,其内容出现在图11中。分支地址包具有可变长度,包含1与11字节之间的长度。MSB中的字节0到4的连续位指示包是否连续而超过所述点。单独地,T位指示类型字段是否将被附加到包的末尾。MSB中的字节4的1指示5个字节将跟随(4个字节的TID和1个字节的ASID)。
分支地址包可随着PC、TID/ASID和类型压缩而变化。如果TID/ASID中的任一者自从最后分支地址包或针对tnum的同步(重新开始或周期)以来已改变,那么可发出TID/ASID。如果类型自从最后类型被发出时起已改变,那么可发出所述类型。其可在同步重新开始或同步周期之后在第一分支地址包上产生。PC是相对于由分支地址、同步重新开始或同步周期发送的先前PC来压缩的。PC的已改变的下部部分可被发出。对于每一线程,先前PC、先前TID/ASID和先前类型寄存器用于确定正确的压缩。
图12呈现供在本发明揭示的过程中使用的同步重新开始包260的示范性内容。同步重新开始包可在跟踪被起始(跟踪启用先前为低)时产生。另外,当离开溢出条件时,如果跟踪启用仍为高,那么产生同步重新开始包,其具有指示存在溢出的原因字段。本发明提供使用同步重新开始包的对准。指令对准可被视为将全局线程循环对准于正被跟踪的每个线程的每个循环。解压缩器程序针对当同步重新开始包在跟踪流中可用时的情况完成此做法。解压缩器将维持最后同步重新开始计数的计数器值。
在遇到同步重新开始包的任何时间,本发明可检查循环计数字段和循环计数类型字段。如果类型字段是“全局”,那么过程将最后同步重新开始计数指派于循环计数字段值,且用最后同步重新开始计数注解所述包。如果类型字段是“偏移”,那么过程可使最后同步重新开始计数递增循环计数字段中的值,且进一步用最后同步重新开始计数注解所述包。在该点处,将用全局线程循环值注解每一同步重新开始包。
下一步骤是注解原子。过程基于包流中的tnum值而将跟踪流***为个别的线程局部包流。对于每一线程局部包流,过程维持可变全局线程循环。维持此值以使得在遇到同步重新开始包的任何时间,将全局线程循环指派于已被注解的值。每次遇到指令原子(E、N、S或W)时,过程可用全局线程循环注解所述原子且使全局线程循环递增1。通过使用正常解压缩程序,过程确定每一原子的程序计数器值。在应用此程序之后,可用全局线程循环计数值注解正被跟踪的每个线程的每个循环。因此,举例来说,对于给定的线程循环,可确定用于所有六个线程的当前程序计数器值以及用于那些线程的管线的状态(暂停、执行等)。
对于非循环准确版本,将TID字段扩展到32位。对于循环准确版本,将TID扩展到32位且界定新的循环计数字段以支持跟踪对准。全局循环计数指示自从最后硬件复位时起的线程循环的数目。偏移循环计数指示自从最后同步重新开始包产生时起的循环的数目。
图13描绘用于支持本发明揭示的标的物的同步周期包290的实施例。同步周期包包含“偏移”字段,其指示自从最后同步周期包已产生(从所有线程中)时起的线程循环的数目。所揭示的过程还支持使用同步周期包的对准。在一些情况下,仅有限窗口的跟踪数据是可用的。因此,同步重新开始包可能不可用。在这些情况下,同步周期包可用以确定线程间对准。如果包边界是未知的,那么过程可搜索异步包以恢复包对准。解压缩器可维持计数器最后同步周期计数。当通过多线程包流时,过程可包含搜索最老的不具有偏移字段的同步周期包。随后,过程可将最后同步周期计数指派于0,且用所述值注解所述包。对于随后的来自其它tnum的同步周期包中的每一者,过程可使同步周期计数递增达偏移字段值,且用同步周期计数注解所述同步周期包中的每一者。随后,过程可将线程***为个别的包流且单独地对其解压缩。
每当包字节被发送到FIFO,便可使ETM同步周期计数器递减。当计数器针对一线程到达零时,可将同步周期包标记为待决。在下一机会处,产生同步周期包。如果随后包中的任一者正在产生(同步重新开始、触发、分支地址、异步、简档),那么可阻止同步周期。每一线程可维持其自身的同步周期计数器。每当针对所述线程产生任何同步重新开始包,便可复位同步计数器。
图14呈现供在本发明揭示的过程中使用的一组循环计数包。循环计数包可用以累加W原子。而且,循环计数包可仅在循环准确模式中产生。循环计数包可在以下情况下产生:从W切换到E或从W切换到N且W原子计数不配合于格式3pheader容量,W原子待决情况下的原子***,以及过多的W原子待配合于格式3pheader。可将W原子放置于循环计数包中,且E或N原子可能在格式1pheader中出现,且循环计数包可到达其完全准确最大值。代替允许循环计数包递增直到其到达其最大32位值为止,ETM在完全准确度与有限准确度之间的限制下发出多个较小的循环计数值。在此情况下,当前原子可为W原子。因为此原子不包含在包中,所以将计数复位为1而不是0。
已将同步重新开始包中的循环计数重新界定为两个可能的类型:从最后硬件复位参考的64位“全局”计数,以及指示自从最后同步重新开始包(来自所有线程中)时起的线程循环数目的16位偏移计数。
除了两字节300和三字节310循环计数包之外,本发明提供三字节包320以将32位值配合到16位有效负载中。在本发明标的物中,如图14所示界定五字节包,其包含一字节标头和四字节有效负载。对于每一线程,所揭示的过程维持计数全局线程循环。对于遇到的第一同步周期包,过程将全局线程循环设定为所述包的经注解值,且用所述值注解先前的原子。随后使全局线程循环递增1。在遇到原子(E、N、S、W)的任何时间,过程用全局线程循环注解所述原子,且使全局线程计数递增1。过程可正常地对流进行解压缩,以将程序计数器值指派于每一原子。在此点处,如同之前,正被跟踪的每个线程的每个循环将具有与其相关联的全局线程循环。
图15展示与本发明相关的pheader格式4包330的一个实施例。pheader包可在不同情况下产生。举例来说,当没有更多原子可保持于包中时,以及当分支地址、简档或同步周期包产生时,产生pheader以标记原子流内的相应包的位置。格式1pheader包可具有三个原子有效负载字段: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原子计数为非零。可将经计数的E和N原子计数放置于字段0和字段1中,且可将当前E原子放置于字段2中。在当前原子是W且E或N原子待决时,当前E和N计数可在有效负载字段0和字段1中发出。当原子***且没有W原子待决时,可将当前E和N计数放置于字段0和字段1中,且如果当前原子是E,那么可将其放置于字段2中。
图16描绘用于与所揭示标的物的实施例一起使用的异步包340。异步包长度适应较长的循环计数字段,且可例如包含十个字节。也可使用异步周期计数器来界定何时产生异步包。每当ETM周期计数器到达,便将异步包标记为待决。异步包必须独立地出现,且每当其它包产生,便将保持待决。异步计数器是全局的,且每当包字节被发送到FIFO,便可递减。
概括来说,所揭示的标的物提供用于与执行跟踪处理一起使用的与多线程处理器的线程间跟踪对准的方法和***。因此,所揭示的标的物包含记录与共同预定事件相关的定时数据。此事件可为自从最后线程起始执行跟踪时起的循环数目或自从所有线程终止执行跟踪时起的循环数目。将线程起始执行跟踪的循环数目参考于共同预定事件以用于维持执行跟踪的定时。随后可更新与共同预定事件相关的数据以与线程起始执行跟踪的时间相关联。结果是准许对准与所有线程相关联的定时数据。相互相关的记录准许针对在多线程处理器中操作的线程重构相互依赖的执行跟踪信息,以及同步所有操作线程的定时数据。
如上所见,本文针对多线程数字信号处理器(包含交错式多线程处理器)中的与多线程处理器的线程间跟踪对准而描述的处理特征和功能可以各种方式实施。举例来说,不仅DSP 40可实行上述操作,而且本发明实施例也可在专用集成电路(ASIC)、微控制器、数字信号处理器或经设计以实行本文所描述的功能的其它电子电路中实施。此外,本文描述的过程和特征可存储在磁性、光学或其它记录媒体中以供此些各种信号和指令处理***读取和执行。因此,提供对优选实施例的前述描述以使所属领域的技术人员能够制作或使用所主张的标的物。所属领域的技术人员将容易明白对这些实施例的各种修改,且在不使用创新能力的情况下,本文界定的一般原理可应用于其它实施例。因此,所主张的标的物不希望限于本文所展示的实施例,而是应符合与本文揭示的原理和新颖特征一致的最广范围。
Claims (35)
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所述的多线程数字信号处理器,其进一步包括用于使用与所述共同预定事件相关联的多个数据包针对在所述多线程处理器中操作的线程重构相互相关的执行跟踪信息的装置。
26.根据权利要求21所述的多线程数字信号处理器,其进一步包括用于使与所述共同预定事件相关的所述定时数据同步的装置。
27.根据权利要求21所述的多线程数字信号处理器,其进一步包括用于产生自从所述共同预定事件的发生时起的全局循环计数的装置。
28.根据权利要求21所述的多线程数字信号处理器,其进一步包括用于使用自从所述共同预定事件时起的全局循环计数重新建立实行执行跟踪的所有线程当中的线程间定时数据的装置。
29.根据权利要求21所述的多线程数字信号处理器,其进一步包括用于确定数据损失且响应于所述数据损失而使用自从所述共同预定事件时起的全局循环计数重新建立实行执行跟踪的所有线程当中的线程间定时数据的装置。
30.根据权利要求21所述的多线程数字信号处理器,其进一步包括用于在全局计数器循环通过零值的情况下针对所有线程产生同步包的装置。
31.一种计算机可用媒体,其中包含有计算机可读程序代码装置以用于调试多线程数字信号处理器,所述调试包含实行执行跟踪过程且与其相关地对准所述多线程处理器的线程当中的线程间跟踪定时,所述计算机可用媒体包括:
用于记录与共同预定事件相关的定时数据的计算机可读程序代码装置,所述共同预定事件可由所述多线程处理器的所有操作线程在核心处理器执行跟踪期间共同地参考;
用于将线程起始执行跟踪的时间参考于所述共同预定事件以用于相对于所述共同预定事件维持针对所述线程的执行跟踪的定时的计算机可读程序代码装置;以及用于更新所述共同预定事件以与所述线程起始执行跟踪的所述时间相关联进而将所述线程起始执行跟踪的所述时间对准于与所述多线程处理器的可能正针对其发生执行跟踪的所有其它线程相关联的定时数据的计算机可读程序代码装置。
32.根据权利要求31所述的计算机可用媒体,其进一步包括用于将所述共同预定事件与最后线程开启执行跟踪的时间相关的计算机可读程序代码装置。
33.根据权利要求31所述的计算机可用媒体,其进一步包括用于将所述共同预定事件与自从所有线程关闭执行跟踪时起的多线程处理器循环数目相关的计算机可读程序代码装置。
34.根据权利要求31所述的计算机可用媒体,其进一步包括用于在多个数据包中记录所述共同预定事件的计算机可读程序代码装置。
35.根据权利要求31所述的计算机可用媒体,其进一步包括用于使用与所述共同预定事件相关联的多个数据包针对在所述多线程处理器中操作的线程重构相互相关的执行跟踪信息的计算机可读程序代码装置。
Applications Claiming Priority (3)
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 | ||
PCT/US2008/060117 WO2008128107A2 (en) | 2007-04-11 | 2008-04-11 | Inter thread trace alignment method and system for a multi-threaded processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101874238A true CN101874238A (zh) | 2010-10-27 |
CN101874238B CN101874238B (zh) | 2013-10-16 |
Family
ID=39854865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880011265.4A Active CN101874238B (zh) | 2007-04-11 | 2008-04-11 | 用于多线程处理器的线程间跟踪对准方法和*** |
Country Status (8)
Country | Link |
---|---|
US (1) | US8484516B2 (zh) |
EP (1) | EP2037367B1 (zh) |
JP (3) | JP2010524140A (zh) |
KR (1) | KR101072687B1 (zh) |
CN (1) | CN101874238B (zh) |
ES (1) | ES2678413T3 (zh) |
HU (1) | HUE038872T2 (zh) |
WO (1) | WO2008128107A2 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103226328A (zh) * | 2013-04-21 | 2013-07-31 | 中国矿业大学(北京) | 采集次数控制模式下的多线程数据采集***同步控制方法 |
CN105453045A (zh) * | 2013-08-13 | 2016-03-30 | 高通股份有限公司 | 使用动态宽度计算的壁垒同步 |
CN107766199A (zh) * | 2016-08-19 | 2018-03-06 | 晶心科技股份有限公司 | 追踪信息编码装置及其编码方法与电脑可读取式媒体 |
CN109964207A (zh) * | 2016-11-11 | 2019-07-02 | 微软技术许可有限责任公司 | 用于时间行程调试和分析的基于高速缓存的跟踪 |
CN110799952A (zh) * | 2017-06-29 | 2020-02-14 | 微软技术许可有限责任公司 | 分布式时间旅行跟踪记录和重放 |
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 |
US11915028B2 (en) | 2017-04-01 | 2024-02-27 | Microsoft Technology Licensing, Llc | Virtual machine execution tracing |
US11994974B2 (en) | 2016-10-20 | 2024-05-28 | Microsoft Technology Licensing, Llc | Recording a trace of code execution using reference bits in a processor cache |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
US8380966B2 (en) | 2006-11-15 | 2013-02-19 | Qualcomm Incorporated | Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging |
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 |
US10275242B2 (en) * | 2012-03-30 | 2019-04-30 | 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 |
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 |
US10031833B2 (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 |
US10031834B2 (en) | 2016-08-31 | 2018-07-24 | Microsoft Technology Licensing, Llc | Cache-based tracing for time travel debugging and analysis |
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 |
US10310977B2 (en) | 2016-10-20 | 2019-06-04 | Microsoft Technology Licensing, Llc | Facilitating recording a trace file of code execution using a processor cache |
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 |
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 |
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 |
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)
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 |
US6314530B1 (en) | 1997-04-08 | 2001-11-06 | Advanced Micro Devices, Inc. | Processor having a trace access instruction to access on-chip trace memory |
US6094729A (en) | 1997-04-08 | 2000-07-25 | Advanced Micro Devices, Inc. | Debug interface including a compact trace record storage |
US5944841A (en) * | 1997-04-15 | 1999-08-31 | Advanced Micro Devices, Inc. | Microprocessor with built-in instruction tracing capability |
IL126148A (en) * | 1997-09-09 | 2004-02-19 | Sanctum Ltd | Method and system for maintaining restricted operating environments for application programs or operating systems |
US6567839B1 (en) * | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
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 |
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 |
KR20010085997A (ko) | 1999-09-07 | 2001-09-07 | 롤페스 요하네스 게라투스 알베르투스 | 프로그램 스레드 디버깅 방법 |
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 |
US6868376B2 (en) * | 2000-03-02 | 2005-03-15 | Texas Instruments Incorporated | Debug bi-phase export and data recovery |
US6947884B2 (en) * | 2000-03-02 | 2005-09-20 | Texas Instruments Incorporated | Scan interface with TDM feature for permitting signal overlay |
US6708290B2 (en) * | 2000-03-02 | 2004-03-16 | Texas Instruments Incorporated | Configurable debug system with wire list walking |
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 |
GB2396930B (en) | 2002-11-18 | 2005-09-07 | Advanced Risc Mach Ltd | Apparatus and method for managing access to a memory |
GB2411254B (en) | 2002-11-18 | 2006-06-28 | Advanced Risc Mach Ltd | Monitoring control for multi-domain processors |
US7370210B2 (en) * | 2002-11-18 | 2008-05-06 | Arm Limited | Apparatus and method for managing processor configuration data |
GB2396034B (en) | 2002-11-18 | 2006-03-08 | Advanced Risc Mach Ltd | Technique for accessing memory in a data processing apparatus |
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 |
US6948155B2 (en) * | 2002-11-22 | 2005-09-20 | Texas Instruments Incorporated | Little offset in multicycle event maintaining cycle accurate tracing of stop events |
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 |
CA2536610C (en) | 2004-02-05 | 2013-04-30 | Research In Motion Limited | Debugging port security interface |
US7263599B2 (en) * | 2004-02-06 | 2007-08-28 | Infineon Technologies | Thread ID in a multithreaded processor |
US7360203B2 (en) * | 2004-02-06 | 2008-04-15 | Infineon Technologies North America Corp. | Program tracing 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 |
US8196109B2 (en) * | 2005-09-09 | 2012-06-05 | International Business Machines Corporation | Common debug adaptor in a multiple computer programming language environment |
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 |
US8341604B2 (en) * | 2006-11-15 | 2012-12-25 | Qualcomm Incorporated | Embedded trace macrocell for enhanced digital signal processor debugging operations |
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 |
US7657791B2 (en) * | 2006-11-15 | 2010-02-02 | Qualcomm Incorporated | Method and system for a digital signal processor debugging during power transitions |
US8380966B2 (en) * | 2006-11-15 | 2013-02-19 | Qualcomm Incorporated | Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging |
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 |
-
2007
- 2007-04-11 US US11/734,199 patent/US8484516B2/en active Active
-
2008
- 2008-03-19 HU HUE08005116A patent/HUE038872T2/hu unknown
- 2008-03-19 ES ES08005116.2T patent/ES2678413T3/es active Active
- 2008-03-19 EP EP08005116.2A patent/EP2037367B1/en not_active Not-in-force
- 2008-04-11 JP JP2010503252A patent/JP2010524140A/ja not_active Withdrawn
- 2008-04-11 KR KR1020097023540A patent/KR101072687B1/ko active IP Right Grant
- 2008-04-11 CN CN200880011265.4A patent/CN101874238B/zh active Active
- 2008-04-11 WO PCT/US2008/060117 patent/WO2008128107A2/en active Application Filing
-
2014
- 2014-03-05 JP JP2014043027A patent/JP2014142946A/ja not_active Withdrawn
-
2017
- 2017-04-06 JP JP2017076029A patent/JP6423037B2/ja not_active Expired - Fee Related
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103226328A (zh) * | 2013-04-21 | 2013-07-31 | 中国矿业大学(北京) | 采集次数控制模式下的多线程数据采集***同步控制方法 |
CN103226328B (zh) * | 2013-04-21 | 2015-06-24 | 中国矿业大学(北京) | 采集次数控制模式下的多线程数据采集***同步控制方法 |
CN105453045A (zh) * | 2013-08-13 | 2016-03-30 | 高通股份有限公司 | 使用动态宽度计算的壁垒同步 |
CN105453045B (zh) * | 2013-08-13 | 2017-04-12 | 高通股份有限公司 | 使用动态宽度计算的壁垒同步 |
CN107766199A (zh) * | 2016-08-19 | 2018-03-06 | 晶心科技股份有限公司 | 追踪信息编码装置及其编码方法与电脑可读取式媒体 |
CN107766199B (zh) * | 2016-08-19 | 2021-04-30 | 晶心科技股份有限公司 | 追踪信息编码装置及其编码方法与电脑可读取式媒体 |
US11994974B2 (en) | 2016-10-20 | 2024-05-28 | Microsoft Technology Licensing, Llc | Recording a trace of code execution using reference bits in a processor cache |
CN109964207A (zh) * | 2016-11-11 | 2019-07-02 | 微软技术许可有限责任公司 | 用于时间行程调试和分析的基于高速缓存的跟踪 |
US11915028B2 (en) | 2017-04-01 | 2024-02-27 | Microsoft Technology Licensing, Llc | Virtual machine execution tracing |
CN110799952A (zh) * | 2017-06-29 | 2020-02-14 | 微软技术许可有限责任公司 | 分布式时间旅行跟踪记录和重放 |
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 |
Also Published As
Publication number | Publication date |
---|---|
KR101072687B1 (ko) | 2011-10-11 |
HUE038872T2 (hu) | 2018-12-28 |
WO2008128107A2 (en) | 2008-10-23 |
CN101874238B (zh) | 2013-10-16 |
EP2037367A2 (en) | 2009-03-18 |
ES2678413T3 (es) | 2018-08-10 |
JP2014142946A (ja) | 2014-08-07 |
WO2008128107A3 (en) | 2010-03-18 |
EP2037367B1 (en) | 2018-04-18 |
KR20090130243A (ko) | 2009-12-21 |
US20080256396A1 (en) | 2008-10-16 |
US8484516B2 (en) | 2013-07-09 |
JP2010524140A (ja) | 2010-07-15 |
EP2037367A3 (en) | 2010-03-17 |
JP6423037B2 (ja) | 2018-11-14 |
JP2017152014A (ja) | 2017-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101874238B (zh) | 用于多线程处理器的线程间跟踪对准方法和*** | |
CN101529393B (zh) | 用于增强的数字信号处理器调试操作的嵌入式追踪宏单元 | |
CN101529392B (zh) | 在非侵入性数字信号处理器调试期间用于指令填充操作的方法和*** | |
CN101681191B (zh) | 在电能转换期间的数字信号处理器调试 | |
US9798645B2 (en) | Embedding stall and event trace profiling data in the timing stream | |
KR101155673B1 (ko) | 신뢰받은/신뢰받지 못한 디지털 신호 프로세서 디버깅 동작들을 위한 방법 및 시스템 | |
US8370806B2 (en) | Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor | |
CN101084488B (zh) | 用于调试在多核架构中执行的多线程程序的方法和*** | |
CN103729288A (zh) | 一种嵌入式多核环境下应用程序的调试方法 | |
US8819496B2 (en) | Apparatus for collecting trace information and processing trace information, and method for collecting and processing trace information |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |