具体实施方式
描述了一种用于一个异质多核共同调试系统的方法及装置。可以包括异质内核的调试信号从一组多个处理器内核同步到一个共同定时域。在一个共同定时间隔期间在所述多个处理器内核内完成的处理被跟踪。一个单一调试工具链被用于提供调试结果以响应于在所述共同定时间隔期间跟踪在所述多个处理器内核内完成的处理。一个调试工具链包括一些元件以从一个处理器内核内获得调试信号以及给一个调试接口提供调试消息。根据至少一个实施例,一个调试工具链可能包括被连接到调试接口的外部调试器。根据至少一个实施,在共同定时间隔期间跟踪在所述多个处理器内核内完成的处理包括跟踪在共同定时间隔期间由所述多个处理器内核内完成的处理器间通信(IPC)和程序代码指令,以及由所述多个处理器内核内完成的处理的顺序包括完成的处理器间通信(IPC)和完成的程序代码指令的顺序。这样的跟踪可以例如通过监测被执行,其中参考了一个共同定时域、在共同定时间隔期间在所述多个处理器内核内完成的IPC和程序代码指令。作为一个例子,一个调试模块可以根据一个共同定时域来对IPC和程序代码指令加时间戳的情况,其中所述定时域可例如是一个被指定为一个主处理器内核的一个处理器内核的一个定时域。通过根据处理顺序分析这些IPC和程序代码指令,可能够获得多个处理器内核的操作的一个时间上关联表征,其中这些处理顺序根据参考了一个共同定时域的时间戳。
启动了使用一个常用工具来监测可是异质的处理器内核之间的处理器间通信(IPC)(其中至少一个处理器是一种不同于至少一个其它处理器的类型)。即使异质处理器内核也是彼此异步(在不能保证至少一个处理器内核的至少一个时钟源与至少一个其它处理器内核的至少一个时钟源的相位和时间的恒定关系的情况下),共同时间戳信息被提供以允许确定不同内核之间的处理的交互作用。由于对每一个单独内核使用了多种工具和调试探索,这将会是昂贵的,并且对于抑制消费/嵌入式器件可是高成本的,排除对多种工具和调试探索的需要可以减少支出并简化操作。此外,使用多种工具可以复杂化所涉及的工作,所以避免对多种工具的需要可以减少和简化工作。
在一个实施例中,调试系统允许异质或同质、异步或同步的同时调试,多个处理器内核使用单一调试接口和单一调试器。例如,调试系统可被用于调试片上系统(SoC),其包括可编程的微控制器单元(MCU)和可编程的专用执行单元(SEU),其中MCU和SEU可能都有用于执行程序代码的处理器内核,但MCU和SEU可在结构和功能上彼此不同(例如,异质)。例如,MCU可是通用处理器,而SEU可专用于专用处理功能,例如数字信号处理(DSP)。根据至少一个实施例,不仅提供了调试多个潜在地异质、潜在地异步的处理器内核的能力,而且还提供了调试这些处理器内核之间的处理器间通信(IPC)的能力。通过允许单一调试工具链被用于调试异质多核处理结构,提供有效的调试功能的整体成本可以被降低。正如本发明所使用的,异质描述了表现出彼此不同种差异的处理器内核。作为例子,异质处理器内核可能利用不同指令集、可能使用不同调试协议、可能有不同处理器能力,或者可能有不同处理器架构。
提供了跟踪了在参考一个共同定时间隔点(通常来自于一个主互连结构)的共同定时间隔内完成的处理的单一调试工具链,其中由所述多个处理内核执行的处理是同步的,以便处理器间通信(IPC)以及可编程的处理元件的程序代码可以有效地被调试。共同定时间隔点提供了一个参考,以便跟踪数据可以重新生成与用于IPC的定时和同步内完成的处理。当调试IPC或单独处理器以及基于在共同定时间隔内完成的来调试数据的时候,调试器将处理作为单独管线阶段。通过将处理作为单独管线阶段,调试器跟踪了被不同处理器内核作为单独指令代码流处理的指令代码流,但是,由于还跟踪了处理内核之间的IPC,调试器能够跟踪关系,例如,这些单独指令代码流之间的依赖关系。由于处理器可是异步的,完成的处理可能包括在一个完整系统互连周期的一个处理器周期内完成的处理,其中完整系统互连周期结束了共同定时间隔。通过提供一个为所有处理器内核共用的单一调试控制接口,调试器到目标处理结构的连接被简化。利用一个单一调试工具链提供调试结果以响应于在一个共同定时间隔期间跟踪在处理器内核内完成的处理可是在一个时间上连续单一调试中执行的。
根据至少一个实施例,源自其它处理器内核的调试信号被同步到一个(例如,主器件)处理器内核的处理器内核定时域(例如,一个处理器内核互连),并且调试其它处理器内核的步骤被执行,以便其它处理器内核的处理器内核周期运行到一个时间点,其中该时间点靠近一个被一个(例如,主器件)处理器内核运行的处理器内核周期数完成的时间点。根据至少一个实施例,在共同定时间隔期间,在多个处理器内核内完成的处理包括在一个(例如,主器件)处理器内核的一个完整互连周期的一个处理器周期内完成的处理。作为一个例子,另一个处理器内核的处理可在一个处理器内核的处理被停止之前在一个处理器的一个处理器周期内停止。作为另一个例子,另一个处理器内核的处理可在一个处理器内核的处理被停止之后在一个处理器的一个处理器周期内停止。作为又一个例子,另一个处理器内核的处理可在一个处理器内核的处理被停止之前或之后停止,这取决于停止另一个处理器内核是否在导致一个处理器内核的处理和另一个处理器内核的处理被停止的点的最靠近时间对准之前或之后。一个共同停止触发和一个共同启动触发被用于所有处理器内核以保持其同步。共同停止触发和共同启动触发是基于一个(例如,主器件)处理器内核的一个处理器内核的互连速度以减少数据损坏的机会,并保持内核更接近彼此同步。时间戳可以从一个(例如,主器件)处理器内核获得,并作为所有处理器内核的共同时间戳,其中在共同定时间隔期间在多个处理器内核内完成的处理是根据共同定时间隔的增量被加时间戳的。提供了跨越带有相对精度的异质和异步架构的线程调试。使用一个用于更快调试的处理器内核的指令准确仿真,一个流跟踪方法可以很容易地被用于重建程序流和准确重建指令管线。处理器间通信(IPC),例如,锁、互斥锁(互斥)和旗语,可被分析以允许异步多核管线被精确表示,以及生成跨越处理器内核的同步点。一个锁是一个同步机制,其用于强制限制对例如,在一个多核处理器的处理器内核之间的一个多线程处理环境中的资源的访问。旗语是一个可被实现为不需要区分共享(例如,只读)和排斥(例如,读和写)模式的二进制状态指示器的简单锁。一个互斥锁是一个能够被一个单一线程(例如,一个在一个多核处理器的一个单一处理器内核上执行的线程)强制排他访问的互斥锁,其可能例如能够将信息读取和写入一个资源,例如存储器,而不会发生冲突。提供一种用于跟踪数据的同步技术使能够通过一个单一共同调试接口进行异步同时多核调试。提供一个共同调试接口以及将一个系统内的异步处理元件作为用于系统调试的单一单元的处置允许在一个单一工具链中更容易进行IPC调试。
图1根据至少一个实施例,说明一个系统100合并调试装置的方框图。系统100包括一个处理器内核101、一个处理器内核102、一个处理器内核103、一个处理器内核104、一个共享存储器105、一个共享存储器106、一个共享存储器107、一个共享存储器108、互连结构141(其在一个实施例中是一个总线)、一个调试缓冲器结构145、一个同步器151、一个同步器146、一个调试接口147以及一个调试器148。处理器内核101包括一个调试块125。处理器内核102包括一个调试块126。处理器内核103包括一个调试块127。处理器内核104包括一个调试块128。系统互连结构141包括一个同步器109、一个同步器110、一个同步器111、一个同步器112、一个同步器113、一个同步器114、一个同步器115、一个同步器116和一个调试块142。
处理器内核101通过连接117被连接到同步器109。处理器内核102通过连接118被连接到同步器110。处理器内核103通过连接119被连接到同步器111。处理器内核104通过连接120被连接到同步器112。共享存储器105通过连接121被连接到同步器113。共享存储器106通过连接122被连接到同步器114。共享存储器107通过连接123被连接到同步器115。共享存储器108通过连接124被连接到同步器116。
处理器内核101通过连接137被连接到同步器151。处理器内核102通过连接138被连接到同步器151。处理器内核103通过连接139被连接到同步器151。处理器内核104通过连接140被连接到同步器151。系统互连结构141通过连接144被连接到同步器151。处理器内核101通过连接133被连接并且可以给同步器146提供调试信号。同步器146通过连接129被连接并且可以给处理器内核101提供调试控制信号。处理器内核102通过连接134被连接并且可以给同步器146提供调试信号。同步器146通过连接130被连接并且可以给处理器内核102提供调试控制信号。处理器内核103通过连接135被连接并且可以给同步器146提供调试信号。同步器146通过连接131被连接并且可以给处理器内核103提供调试控制信号。处理器内核104通过连接136被连接并且可以给同步器146提供调试信号。同步器146通过连接132被连接并且可以给处理器内核104提供调试控制信号。系统互连结构141通过连接143被连接并且可以给同步器146和调试接口147提供共同定时域信号。同步器146通过连接149被连接到调试接口147。调试接口147连接通过连接150被连接到调试器148。
处理器内核101、102、103和104在结构上不必相同,并且不需要同步操作。共享存储器105、106、107和108在结构上不必相同,并且不需要同步操作。虽然显示了四个处理器内核101、102、103和104以及四个共享存储器105、106、107和108,处理器内核的数量不必等于共享存储器的数量-任何数量处理器内核和任何数量共享存储器可被实现。
同步器109、110、111和112分别同步了在处理器内核101、102、103和104之间传输的信号,以及系统互连结构141允许处理器内核101、102、103和104和系统互连结构141之间的通信,不管这些元素之间的定时域的任何差异。同步器109、110、111和112同步了分别源自处理器内核101、102、103和104的系统互连信号和系统互连结构141的一个系统互连定时域。同步器109、110、111和112分别同步了源自系统互连结构141的系统互连信号和处理器内核101、102、103和104的处理器内核定时域。
同步器113、114、115和116分别同步了在共享存储器105、106、107和108之间传输的信号,以及系统互连结构141允许共享存储器105、106、107和108和系统互连结构141之间的通信,不管这些元素之间的定时域的任何差异。同步器113、114、115和116同步了分别源自共享存储器105、106、107和108的系统互连信号和系统互连结构141的一个系统互连定时域。同步器105、106、107和108分别同步了源自系统互连结构141的系统互连信号和共享存储器105、106、107和108的共享存储器定时域。
同步器151同步了源自处理器内核101、102、103和104的跟踪数据和调试缓冲器结构145的调试缓冲器结构定时域。同步器151同步了源自调试缓冲器结构145的信号和处理器内核101、102、103和104的处理器内核定时域。
同步器146同步了源自处理器内核101、102、103和104的调试信号和调试器148的调试定时域。根据至少一个实施例,调试器148的调试定时域源自于互连结构141的一个系统互连定时域。在这种情况下,调试信号被同步到一个系统互连定时域,例如,互连结构141可以是一个时钟结构,例如一个交叉点开关,其中系统互连定时,例如,互连结构141的定时,作为一个被源自处理器内核的调试信号所同步到的共同定时域,以及互连定时域的一个互连周期作为一个共同定时间隔。或者,调试器148的调试定时域可以源自于一个处理器内核定时域,例如处理器内核101的处理器内核定时域,以及同步器146同步源自互连结构141的信号和调试器148的调试定时域。在这种情况下,处理器内核101的处理器内核定时域作为一个被源自其它处理器内核的调试信号所同步到的共同定时域。调试信号被同步到的共同定时域可是可选择的,其中共同定时域可被选择,例如,响应于从各种可能的共同定时域,例如,互连结构141的一个系统互连定时域、处理器内核101的一个处理器内核定时域、另一个处理器内核的一个处理器内核定时域之中接收一个用户输入。
系统互连定时和处理器内核定时不必是类似频率,但也可以在频率上有很大的不同。例如,系统互连定时在频率上可低于处理器内核定时。因此,系统互连定时域中的一个单一互连周期可能跨越一个类似于一个处理器内核定时域的很多时钟周期(例如,甚至数百个)的持续时间。因此,很多指令可在系统互连定时域中的一个单一互连周期期间由处理器内核执行。如果单步参考系统互连定时域,甚至这种定时域内的一个单步可能允许很多指令被处理器内核处理。如果处理器内核在不同时钟频率操作,是异步的,或是异质的,不同处理器内核的时钟周期数量以及在系统互连定时域中的一个单一互连周期期间由不同处理器内核执行的指令数量可在不同处理器内核之间是不同。一个处理器内核可例如有它自身的本地存储器(例如,随机存取存储器(RAM)),例如,一个高速缓存或本地紧耦合的RAM。这样的本地存储器可通过一个本地互连(其在一个实施例中是一个本地总线)被连接到它的处理器内核,其中本地互连可能以处理器内核的一个内核时钟频率而不是一个系统互连的系统互连频率操作。
同步器146通过调试接口147同步了源自调试器148的调试控制信号和处理器内核101、102、103和104的处理器内核定时域。或者,同步器146通过调试接口147同步了调试器148的调试控制信号和处理器内核102、103和104的处理器内核的时间结构域以及互连结构141的系统互连定时域。作为一个例子,同步器146可能使用一个级联触发器结构,例如带有源自其预定目的地的一个时钟域的时钟输入的两个级联触发器,或者,作为另一个例子,能够接收一个输入时钟域的输入数据并提供一个输出时钟域的输出数据的任何异步先入先出触发器(FIFO)缓冲器,或者,作为又一个例子,一个多路转换器同步器,其中一个多路转换器的选择输入端和至少一个多路转换器的数据输入源自多路转换器的预定目的地的一个时钟域。同步器146可能使用不同类型信号的不同类型同步元件,例如,可能使用级联触发器用于控制信号,以及,例如,使用多路转换器同步器用于数据信号。
图2根据至少一个实施例,说明一种用于调试的方法200的流程图。方法200是相对于一个调试器(用栏216示出)、一个概念性管线阶段1(由栏217示出)、一个概念性管线阶段2(由栏218示出)、一个中间概念性管线阶段(由栏219示出)和一个最后的概念性管线阶段N(由栏220示出)被执行的。在块201,所述方法通过在调试器发起一个调试而开始。从块201,所述方法进行到块202,其中同步被执行。块202跨越了栏216、217、218、219和220以指示块202的同步发生在调试器和不同管线阶段。因此,块202包括执行了一个正如在调试器216内的块203所表示的调试工具的同步、执行了一个正如在概念性管线阶段1栏217内的块204所表示的一个(主)处理器内核的同步、执行了一个正如在概念性管线阶段2栏218内的块205所表示的一个处理器内核2的同步、执行了一个正如在中间概念性管线阶段栏219内的块206所表示的一个中间处理器内核的同步以及执行了一个正如在最后的概念性管线阶段N栏220内的块207所表示的一个最后的处理器内核N的同步。作为一个例子,图1的同步器146可能执行了块202的同步。作为另一个例子,在块203,图1的同步器146可能执行了调试工具的同步,其中在块204,同步器109执行了(主)处理器内核1的同步,同步器110执行了处理器内核2的同步,同步器111执行了处理器内核3的同步以及同步器112执行了处理器内核4的同步。
从块202,所述方法继续到判定块208。在判定块208,判定处理器内核1、处理器内核2、中间处理器内核以及最后的处理器内核N的程序代码的单步是否是调试过程的一部分。如果决定不进行程序代码的单步,所述方法继续到块209。在块209,所有处理器内核的程序代码基于(主)处理器内核1的一个指定数量的周期运行一个相等数量的周期。随着处理器内核时间可能不同,除了处理器内核1的处理器内核可运行不同于处理器内核1的指定数量的周期的一个数量的自身的周期。例如,除了处理器内核1的处理器内核可运行一个自身的时间量的周期,它跨越的时间量基本等于由处理器内核1的指定数量的周期所跨越的时间量。从块209,所述方法继续到块215,在那里调试停止。
在判定块208,如果进行程序代码的单步,所述方法继续到对应于管线阶段217-220的一组多个块。每一个管线阶段可以表示通过使用一个不同处理器内核,例如,一个异质多核处理器的不同处理器内核执行的操作。特别是,所述方法继续到概念性管线阶段1栏217内的块210、概念性管线阶段2栏218内的块211、中间概念性管线阶段栏219内的块212、最后的概念性管线阶段栏220内的块213。块210、211、212和213可分别被其相应的处理器内核,例如,处理器内核1、处理器内核2,中间处理器内核和最后的处理器内核N并行执行。因此,在块210,处理器内核1在一个关于处理器内核1的处理器内核定时域的单一系统互连周期执行其程序代码;在块211,处理器内核2在处理器内核2执行周期的最对等数量执行其程序代码,其中最对等数量在时间上对应于处理器内核1执行其程序代码的单一系统互连周期;在块212,中间处理器内核在中间处理器内核执行周期的最对等数量执行其程序代码,其中最对等数量在时间上对应于处理器内核1执行其程序代码的单一系统互连周期;在块213,最后的处理器内核N在最后处理器内核N执行周期的最对等数量执行其程序代码,其中最对等数量在时间上对应于处理器内核1执行其程序代码的单一系统互连周期。作为一个例子,图1的处理器内核101可能在块210执行;图1的处理器内核102可能在块211执行;图1的处理器内核103可能在块212执行以及图1的处理器内核104可能在块213执行。作为一个例子,这样的执行可例如使用处理器内核相互依赖机制,例如锁、互斥锁或旗语被执行以协调在处理器内核,例如处理器内核2、中间处理器内核和最后的处理器内核N上的执行指令和一个主处理器内核,例如,处理器内核1上的执行指令。作为另一个例子,这样的执行可被从调试器发送的多个单步执行,其中用于处理器内核2、中间处理器内核和最后的处理器内核N的多个单步命令的数量导致块211、212和213基本跨越根据在块210的一个共同定时域指定的相同数量的时间。作为又一个例子,这样的执行可被所有处理器内核1、处理器内核2、中间处理器内核和最后的处理器内核N的调试器信号执行以例如在其当前处理器内核周期末端停止执行。作为进一步的例子,这样的执行可被处理器内核2、中间处理器内核和最后的处理器内核N的调试器信号执行以停止执行以响应于处理器内核1停止执行。
从块210、211、212和213,所述方法继续到判定块214。在判定块214,调试器(正如调试器栏216以下的块))做出了跟踪是否完成的决定。如果是,那么所述方法继续到块215,在那里调试停止。如果否,那么所述方法返回到判定块208。
图3根据至少一个实施例,说明一个系统互连和多个处理器内核之间的时间关系的指示流程时序图300。时间被示为沿着图3的一个垂直轴向下前进。在时间381、382、383、384、385、386、387、388、389、390、391、392和393的水平线条勾勒出了沿着垂直轴的瞬间时间。这些时间可以一个特定时钟,例如一个共同定时域的时钟的增量被指定,其中所述定时域可能例如被一个处理器内核的时钟指定为主处理器内核或源自所有处理器内核的信号可被同步到的以被调试系统使用的另一个时钟(例如,一个适用于一个共同系统互连结构,例如图1的系统互连结构141的时钟)。随着时间的推移,系统互连活动被显示为系统互连栏375以下。随着时间的推移,处理器内核1、处理器内核2、中间处理器内核和最后的处理器内核的N分别被显示为处理器内核栏371、372、373和374以下。
正如在图3中可以看到的,处理器内核不一定同时开始或结束指令的执行,并且一个处理器内核开始或结束一个指令的执行的时间可不在时间上与另一个处理器内核的一个系统互连定时域或一个处理器内核定时域对准。例如,在系统互连定时域下,在时间385,处理器内核1已经开始,但尚未完成一个包括操作码323和操作数324的指令的执行。作为另一个例子,在处理器内核1的处理器内核定时域以下,在时间384,中间处理器内核已经开始,但尚未完成一个包括操作码325和操作数326的指令的执行。
在时间381,地址301和数据302存在于系统互连(例如,图1的系统互连结构141)上并且处理器内核2执行操作码305和操作数306。在时间382,地址301和数据302仍然存在于系统互连上,处理器内核2仍然执行操作码305和操作数306,并且处理器内核1执行操作码303和操作数304。在时间382和383之间,中间处理器内核执行操作码307和操作数308,以及最后的处理器内核N执行操作码309和操作数310。由于处理器内核可能异步,指令(例如,带有其对应的操作数的操作码)被显示为在彼此不同时间被不同处理器内核执行,或由于处理器内核可异质,处理器内核可能彼此不同地处理指令。
在时间383,地址311和数据312存在于系统互连上,处理器内核1执行操作码313和操作数314,以及中间处理器内核执行操作码317和操作数318。在时间383和时间384之间,处理器内核2执行操作码315和操作数316,中间处理器内核执行操作码325和操作数326,以及最后的处理器内核N执行操作码319和操作数320。在时间384,处理器内核1执行操作码323和操作数324,以及中间处理器内核仍然执行操作码325和操作数326。在时间385,由于中间处理器内核完成执行操作码325和操作数326,地址321和数据322在系统互连上,并且处理器内核1仍然执行操作码323和操作数324。在时间386,由于中间处理器内核完成执行操作码327和操作数328,处理器内核1执行操作码333和操作数334,处理器内核2执行操作码335和操作数336,最后的处理器内核N仍然执行操作码329和操作数330。在时间387,由于处理器内核1完成执行操作码333和操作数334,处理器内核2执行操作码335和操作数336,地址321和数据322在系统互连上,并且中间处理器内核执行操作码337和操作数338。
在时间388,处理器内核1执行操作码343和操作数344以及最后的处理器内核N执行操作码339和操作数340。在时间389,由于中间处理器内核完成执行操作码347和操作数348,地址341和数据342在系统互连上,并且处理器内核2执行操作码345和操作数346。在时间390,由于地址341和数据342在系统互连上的存在结束并且处理器内核2完成执行操作码345和操作数346,处理器内核1执行操作码353和操作数354以及中间处理器内核执行操作码355和操作数356。在时间390和391之间,最后的处理器内核N执行操作码349和操作数350。在时间391,地址351和数据352在系统互连上以及中间处理器内核执行操作码361和操作数362。在时间392,地址351和数据352仍然在系统互连上,中间处理器内核仍然执行操作码361和操作数362,以及处理器内核1执行操作码357和操作数358。在时间392和393之间,处理器内核2执行操作码359和操作数360,中间处理器内核执行操作码369和操作数370,以及最后的处理器内核N执行操作码363和操作数364。在时间393,由于中间处理器内核完成执行操作码369和操作数370,地址365和数据366在系统互连上以及处理器内核1执行操作码367和操作数368。
时间381、383、385、387、389、391勾勒出了与一个系统互连的系统互连定时域同步的操作,其传送系统互连通信量,如在系统互连栏375以下所示。时间382、383、384、386、388、390、392和393勾勒出了与(主)处理器内核1的处理器内核定时域同步的操作,其执行了处理器内核栏371以下所示的指令。虽然时间383和393似乎与系统互连定时域和处理器内核定时域是同步的,由于附图的有限分辨率的结果,这样的描述是巧合的,虽然根据至少一个实施例,一个或多个处理器内核可彼此是同步或异步的,或与一个系统互连是同步或异步的。此外,不止一个系统互连可存在(例如,一个主系统互连和一个外围系统互连),并且这样的系统互连可彼此是同步或异步的。
根据至少一个实施例,对于一个给定定时域的一个给定共同定时间隔,一个调试器只处理了那些在给定共同定时间隔内完成的指令。例如,由于共同定时间隔结束,一个处理器内核可执行一个指令,但可能还尚未完成。由于指令未在共同定时间隔内完成,那个指令将被包括在下一个共同定时间隔内,而不是当前时间间隔内。根据至少一个实施例,对于一个给定定时域的一个给定共同定时间隔,一个调试器只处理了那些在结束了共同定时间隔的一个完整系统互连周期的一个处理器内核时间周期内完成的指令。例如,由于共同定时间隔结束,一个处理器内核可执行一个指令,但可能还尚未完成。然而,如果处理器内核完成了在结束了共同定时间隔的一个完整系统互连周期的一个处理器内核时间周期内完成的指令,那个指令可以被包括在那个共同定时间隔内,而不是下一个共同定时间隔内。在这样的例子中,共同定时间隔的结束由一个系统互连周期的完成来标记,并且包括了被包括在共同定时间隔内的指令的容差是一个处理器内核时间周期。作为一个例子,这样的一个处理器内核时间周期可是执行了指令的处理器内核的处理器内核时间周期。作为另一个例子,这样的一个处理器内核时间周期可是一个被指定为一个主处理器内核的处理器内核的处理器内核时间周期。
图4根据至少一个实施例,说明一个系统互连和多个处理器内核之间的时间关系的时序图400。时间被示为沿着图4的一个垂直轴向下前进。在时间481、482、483、484、485、486和487的水平线条勾勒出了沿着垂直轴的瞬间时间。这些时间可以以一个特定时钟,例如一个共同定时域的时钟的增量被指定,其中所述定时域可能例如被指定为主处理器内核的一个处理器内核的时钟或源自所有处理器内核的信号可被同步到的以被调试系统使用的另一个时钟(例如,一个适用于一个共同系统互连结构,例如图1的系统互连结构141的时钟)。随着时间的推移,系统互连周期被显示为系统互连栏475以下的垂直前进波形491。随着时间的推移,处理器内核1、处理器内核2、中间处理器内核和最后的处理器内核的N分别被显示为处理器内核栏471、472、473和474以下的垂直前进波形492、493、494和495。
时间481、483、485、487被显示为与系统互连的一个系统互连定时域同步并且发生在一个系统互连信号的上升沿。时间482、483、484和486被显示为与处理器内核1的处理器内核定时域同步并且发生在一个处理器内核信号的上升沿。虽然时间483似乎与系统互连定时域和处理器内核定时域是同步的,由于附图的有限分辨率的结果,这样的描述是巧合的。
正如在图4中可以看到的,处理器内核不一定同时开始或结束处理器内核周期,并且一个处理器内核开始或结束一个处理器内核周期的时间可不在时间上与另一个处理器内核的一个系统互连定时域或一个处理器内核定时域对准。例如,在系统互连定时域以下,在时间485,处理器内核1已经开始,但尚未完成一个处理器内核周期。作为另一个例子,在处理器内核1的处理器内核定时域以下,在时间484,中间处理器内核已经开始,但尚未完成一个处理器内核周期。根据至少一个实施例,对于一个给定定时域的一个给定共同定时间隔,一个调试器只处理了那些在给定共同定时间隔内完成的指令。当调试器处理了在给定共同定时间隔内完成的指令的时候,处理器内核可能停止处理后续指令,或当调试器处理了在给定共同定时间隔内完成的指令的时候,处理器内核可能继续处理后续指令。由于关于被提供给调试器的处理器内核的指令的信息参考了共同定时间隔在其内被定义的一个共同定时域,调试器可以很容易地区分在给定共同定时间隔内完成的指令以及在一些其它时间(例如,给定共同定时间隔之前或之后)完成的指令。因此,即使处理器内核继续将指令执行为在共同定时间隔内完成的调试过程指令,调试系统可能存储关于在共同定时间隔之后被完成的指令的信息,并且当处理指令在后续共同定时间隔内完成的时候,调试器可能稍后处理这样的信息。根据至少一个实施例,对于一个给定定时域的一个给定共同定时间隔,一个调试器只处理了那些在结束了共同定时间隔的一个完整系统互连周期的一个处理器内核时间周期内完成的指令。
图5根据至少一个实施例,说明一个可被使用的处理系统500的方框图。处理系统500包括显示器501、键盘和鼠标502、存储器件503、外围器件504、处理器505、存储器506、输入-输出(I/O)507、调试接口508和系统互连509。处理器505可是一个多核处理器,其包括,例如,内核531、532、533和534。显示器501通过系统互连连接511被连接到系统互连509。键盘和鼠标502通过系统互连连接512被连接到系统互连509。存储器件503通过系统互连的连接513被连接到系统互连509。外围器件504通过系统互连连接514被连接到系统互连509。处理器505通过系统互连连接515被连接到系统互连509。存储器506通过系统互连连接516被连接到系统互连509。输入-输出(I/O)507通过系统互连连接517被连接到系统互连509。调试接口508通过系统互连连接518被连接到系统互连509。输入输出(I/O)507可通过外部连接527被连接到外部器件。调试接口508可通过外部连接528被外部连接。
作为一个例子,系统500可分别通过对应的处理器内核531、532、533和534、对应的系统互连509以及对应的存储器506被用于实现图1的处理器内核101、102、103和104、系统互连结构141以及共享存储器105、106、107和108。作为另一个例子,系统500可分别通过对应的元件501、502、503、504、505、506和507以及对应的调试接口508被用于实现图1的调试器148和调试接口147。
图6根据至少一个实施例,说明一种用于给多个处理器内核提供调试能力的方法的流程图600。在块601,一个为所述多个处理器内核的所有处理器内核共同的单一调试控制接口被利用。块601可例如在其它方法块开始之前被提供并且可能例如停留在原地以用于后续方法块。在块602,源自一组多个处理器内核的调试信号被同步到一个共同定时域。在块603,对在共同定时间隔期间在所述多个处理器内核内完成的处理加时间戳。如块604所示,加时间戳的定时信息可从所述多个处理器内核的一个第一处理器内核获得。在共同定时间隔期间在所述多个处理器内核内完成的处理的参考了一个共同定时域的加时间戳允许在所述多个处理器内核的不同处理器内核完成的处理的时间之间进行有意义的比较,作为一个例子,不同处理器内核彼此异步或者,作为另一个例子,彼此异质。由于调试缓冲器结构(例如,图1的调试缓冲器结构145)包括同步器151并且可以同步它通过连接137、138、139、140和144接收的信号,调试缓冲器结构可以通过这些连接中的一个将可用的定时信息用作一个时间参考以获得通过这些连接接收的信号的时间戳,即使这些信号与那些定时信息是异步的。因此,调试缓冲器结构可以加时间戳和存储描述了在共同定时间隔期间在所述多个处理器内核内完成的处理的信息。
在块605,从一组锁、互斥锁(互斥)和旗语中选择的处理器间通信(IPC)被用于生成横跨所述多个处理器内核的同步点。例如,锁、互斥锁和旗语可被用于协调所述多个处理器内核之间的处理以及建立或实行被所述多个处理器内核执行的处理之间的关系(例如,时间关系、逻辑相关性,等等)。作为一个例子,锁、互斥锁和旗语可被用于将几个所述多个处理器内核的处理关联到一个被指定为一个主处理器内核的处理器内核的处理,从而允许一个相对于所述主处理器内核的一个共同定时域的共同定时间隔被建立。因此,一个单一共同调试工具链可以监测相对于一个共同定时域的一个共同定时间隔的所述多个处理器内核之间的处理。
在块606,执行了在一个共同定时间隔期间跟踪在所述多个处理器内核内完成的处理。如块607所示,这样的跟踪可能包括将在共同定时间隔期间在所述多个处理器内核内完成的处理分析为一组多个单独管线阶段以方便处理器间通信(IPC)的调试。通过确定单独管线阶段彼此的关系,例如时间关系和逻辑相关性,在共同定时间隔期间在多个处理器内核内完成的处理可以在被所有处理器内核执行的所有处理的上下文中被组织。这样的跟踪允许确定所述多个处理器内核的操作之间的时间关系和逻辑相关性,它允许在所述多个处理器内核之间发生的处理的一个统一表征的存在。
在块608,基于与所述多个处理器内核的一个第一处理器内核的定时信息同步,所述多个处理器内核的一个步调试被执行。在块609,一个单一调试工具链被用于提供调试结果以响应于在所述共同定时间隔期间跟踪在所述多个处理器内核内完成的处理。利用一个单一调试工具链提供调试结果以响应于在所述共同定时间隔期间跟踪在所述多个处理器内核内完成的处理可在一个时间上连续单一调试期中执行。所述时间上连续单一调试允许所述多个处理器内核之间的处理关于一个共同定时域而存在。通过显示关于一个共同定时域的所述多个处理器内核之间的处理的关系,被描述为单一调试期的事件可以在时间上关联于共同定时域的一个时钟粒度,从而提供了时间上连续单一调试期。根据至少一个实施例,所述多个处理器内核是异质处理器内核。根据至少一个实施例,所述多个处理器内核是异步处理器内核。根据至少一个实施例,所述多个处理器内核是异步异质处理器内核。
根据至少一个实施例,一种方法包括将调试信号从一组多个处理器内核同步到一个共同定时域以及通过一个为所述多个处理器内核的所有处理器内核共同单一调试接口传送基于所述调试信号的调试消息以在一个共同定时间隔期间跟踪在所述多个处理器内核内完成的处理。根据至少一个实施例,所述调试消息包括基于所述多个处理器内核的至少两个处理器内核之间的IPC的处理器间通信(IPC)调试消息。根据至少一个实施例,所述的方法还包括对在所述共同定时间隔期间在所述多个处理器内核内完成的处理加时间戳。根据至少一个实施例,所述加时间戳还包括从所述多个处理器内核的一个第一处理器内核获得所述加时间戳的定时信息。根据至少一个实施例,所述加时间戳还包括从一个耦合于所述多个处理器内核的系统互连获得用于所述加时间戳的定时信息。根据至少一个实施例,所述的方法还包括基于从包括锁、互斥锁和旗语的一组中选择的处理器间通信(IPC)生成跨越所述多个处理器内核的同步点以在所述共同定时间隔期间跟踪在所述多个处理器内核内完成的处理。根据至少一个实施例,所述的方法还包括利用一个单一调试工具链提供调试结果以响应于在所述共同定时间隔期间跟踪在所述多个处理器内核内完成的处理。根据至少一个实施例,利用一个单一调试工具链提供调试结果以响应于在所述共同定时间隔期间跟踪在所述多个处理器内核内完成的处理是在一个时间上连续单一调试期中执行的。
根据至少一个实施例,所述多个处理器内核包括至少两种不同类型的处理器内核。根据至少一个实施例,所述多个处理器内核的至少两种不同类型的内核不是同步的。根据至少一个实施例,所述的方法还包括基于与所述多个处理器内核的一个第一处理器内核的定时信息同步,执行所述多个处理器内核的一个步调试。根据至少一个实施例,所述的方法还包括基于与所述多个处理器内核耦合的一个系统互连的定时信息同步,执行所述多个处理器内核的一个步调试。
根据至少一个实施例,装置包括一组多个处理器内核;一个耦合于所述多个处理器内核以用于将调试信号从所述多个处理器内核同步到一个共同定时域的调试同步器;以及一个耦合于所述调试同步器的调试接口,其中所述调试接口传送关于所述共同定时域参考由所述多个处理器内核完成的处理的顺序的调试信息。根据至少一个实施例,所述调试接口传送处理器间通信(IPC)的调试信息以在所述共同定时域的一个间隔内关联由所述多个处理器内核完成的处理。根据至少一个实施例,所述加时间戳被应用于由所述多个处理器内核完成的处理记录,其中所述加时间戳参考所述共同定时域。根据至少一个实施例,所述加时间戳被应用于由所述多个处理器内核完成的处理记录,其中所述加时间戳参考一个第一内核的一个定时。根据至少一个实施例,从包括锁、互斥锁和旗语的一组中选择的处理器间通信(IPC)被用于生成调试同步点。根据至少一个实施例,所述装置还包括一个为所有所述多个处理器内核共用的单一共同调试控制接口。根据至少一个实施例,所述多个处理器内核的至少两个处理器是不同类型。根据至少一个实施例,所述多个处理器内核的至少两个处理器彼此异步。根据至少一个实施例,所有所述多个处理器内核的调试是在一个时间上连续的单一调试期中执行的。
根据至少一个实施例,一种方法包括将一组多个处理器内核的系统互连信号同步到一个耦合于所述多个处理器内核的系统互连的一个系统互连定时域以及将一组多个处理器内核的调试信号同步到一个共同调试接口的一个共同定时域。根据至少一个实施例,所述方法还包括通过所述共同调试接口传送在一个共同定时间隔期间由所述多个处理器内核完成的关于处理的调试消息。根据至少一个实施例,在所述共同定时间隔期间由所述多个处理器内核完成的处理包括在所述共同定时间隔的一个时钟周期内由所述多个处理器内核完成的处理。根据至少一个实施例,所述时钟周期是从包括所述共同定时域的一个共同定时域、所述多个处理器内核的一个处理器内核的一个处理器内核时钟周期以及所述系统互连的一个系统互连时钟周期的一个组中选择的。根据至少一个实施例,所述调试消息包括基于所述多个处理器内核的至少两个处理器内核之间的IPC的处理器间通信(IPC)调试消息。
虽然本发明的描述参照具体实施例,正如以下权利要求所陈述的,在不脱离本发明范围的情况下,可以进行各种修改以及变化。因此,说明书以及附图被认为是一个说明性而不是一个狭义性的,并且所有这些修改是为了列入本发明范围内。关于具体实施例,本发明所描述的任何好处、优点或解决方案都不旨在被解释为任何或所有权利要求的批评的、必需的、或本质特征或元素。
上述一些实施例,如果适用的话,可通过使用各种不同信息处理系统被实现。
此外,本领域所属技术人员将认识到上述描述的操作功能之间的界限只是说明性的。多个操作的功能可组合成一个单一操作,和/或一个单一操作功能可分布在附加操作中。而且,替代实施例可能包括一个特定操作的多个实例,并且操作的顺序在各种其它实施例中会改变。
关于特定实施例的好处、其它优点以及问题的解决方法在上述已被描述。然而,可能引起任何好处、优点或解决方法发生或变得更加显著的好处、优点、问题的解决方法以及其它元素不被解释为任何或所有权利要求的批评的、必需的、或本质特征或元素。