发明内容
为了解决上述技术问题,本发明提供了一种对16位芯片内核进行调试控制的装置和方法,能够对16位CPU芯片以硬件方式进行功能和性能调试,同时提高了对16位CPU芯片进行功能和性能调试的效率。
为了达到本发明的目的,本发明提供了对16位芯片内核进行调试控制的装置,至少包括:
调试接口模块(202),用于将调试指令输出到调试指令缓存模块(204);将调试使能信号输出到数据选择译码模块(206);
调试指令缓存模块(204),用于接收来自所述调试接口模块的调试指令并缓存;
数据选择译码模块(206),用于接收来自外部程序指令缓存模块的程序指令、来自所述调试指令缓存模块(204)的调试指令以及来自调试接口模块(202)的调试使能信号;根据所述调试使能信号判断是选择程序指令还是选择调试指令:当所述调试使能信号使能时,对所述调试指令、以及所述调试使能信号进行译码,将译码后的调试指令以及调试使能信号输出到调试控制模块(208);当所述调试使能信号无效时,对所述程序指令、以及所述调试使能信号进行译码,将译码后的程序指令以及调试使能信号输出到调试控制模块(208);
调试控制模块(208),用于在接收到的调试使能信号使能时,对所述译码后的调试指令进行处理。
优选地,调试控制模块(208)还用于,在接收到的调试使能信号无效时,透传所述程序指令。
其中,所述调试控制模块(208)至少包括:
信号转换器(302),用于接收来自所述数据选择译码模块(206)的调试使能信号,当所述调试使能信号使能时,激活条件筛选器(306)和寄存器单元(308);
指令分类器(304),用于在激活时,对来自所述数据选择译码模块(206)的译码后的调试指令中的指令类别信号进行分类,并将其分类结果输出至条件筛选器(306);
条件筛选器(306),用于在激活时,对来自所述数据选择译码模块(206)的指令、以及来自指令分类器(304)的所述分类结果、进行筛选,得到其所对应的控制信号,并输出给寄存器单元(308),其中所述数据选择译码模块(206)的指令是指:由所述数据选择译码模块(206)对调试指令进行译码后,得到的指令;
寄存器单元(308),用于寄存来自条件筛选器(306)的输出内容。
优选地,所述信号转换器(302),进一步用于对所述接收到的调试使能信号进行信号延迟;其中所述信号延迟至少包括:将所述接收到的调试使能信号从一个单时钟周期信号变成一个多时钟周期信号。
优选地,所述寄存器单元(308)由一个或多个寄存器组成。
本发明还提供一种对16位芯片内核进行调试控制的方法,包括:
如果调试使能信号使能,数据选择译码单元选择调试指令,并且对调试指令以及调试使能信号进行译码;调试控制单元处理译码后的调试指令,所述芯片内核执行所述调试指令。
优选地,如果调试使能信号无效,数据选择译码单元选择程序指令,并对程序指令以及调试使能信号进行译码;所述调试控制单元透传所述程序指令,所述芯片内核执行所述程序指令。
优选地,其中,所述调试控制单元至少包括:
在调试使能信号使能时,将调试信号进行信号延迟;其中所述信号延迟至少包括将调试信号由单时钟周期信号变为双时钟周期信号;
激活条件筛选器和寄存器单元;以及
将调试指令进行分类;
将调试指令的分类结果以及所述调试指令的译码结果进行筛选;
将筛选结果寄存在寄存器单元中。
本发明方案通过在芯片上设置一个调试指令缓存单元及调试控制单元,从而保证了在不影响16位CPU芯片运行的前提下,对16位CPU芯片以硬件方式进行调试,同时提高了对16位CPU芯片进行功能和性能调试的效率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图2为本发明对16位芯片内核进行调试控制的装置的组成结构示意图,如图2所示,其至少包括调试接口模块202、调试指令缓存模块204、数据选择译码模块206、调试控制模块208。其中:
调试接口模块202,用于向调试指令缓存模块输入调试指令;并且用于向数据选择译码模块206输入调试使能信号;
调试指令缓存模块204,用于通过调试接口模块202,接收并缓存调试指令。优选地,调试指令缓存模块204将调试指令进行缓存,并将该调试指令发送到数据选择子模块。
数据选择译码模块(206),用于接收来自外部程序指令缓存模块的程序指令、来自调试指令缓存模块(204)的调试指令以及来自调试接口模块(202)的调试使能信号;根据调试使能信号判断是选择程序指令还是选择调试指令:当调试使能信号使能时,对调试指令、以及调试使能信号进行译码,将译码后的调试指令以及调试使能信号输出到调试控制模块(208);当调试使能信号无效时,对程序指令、以及调试使能信号进行译码,将译码后的程序指令以及调试使能信号输出到调试控制模块(208)。优选地,数据选择译码模块206的输入由调试接口控制。并且数据选择译码模块206可以对程序指令和调试指令进行选择。例如,数据选择译码模块的输入端是由调试接口控制的,如果调试使能信号使能,则数据选择译码模块选择调试指令,并将调试指令和调试使能信号进行译码后输出给调试控制模块208。此时,该调试指令通过译码,并生成一系列控制信号,这些控制信号则输入到调试控制模块208。并且此时,程序指令处于中断阶段。又例如,程序指令从程序存储器中,通过总线接口输入到指令缓存单元,而调试指令缓存模块204中也有调试指令。但是如果调试使能信号在非使能状态下,此时数据选择译码模块206选择程序指令对其进行译码。并且这时的调试控制模块208被屏蔽。
调试控制模块(208),用于在接收到的调试使能信号使能时,对译码后的调试指令进行处理;反之,如果调试使能信号无效,调试控制模块208处于屏蔽状态。优选地,在调试模式下,调试模块对执行单元的控制方式也有所不同,其目的是保证在进入调试模式的时刻,CPU当前的指令正常执行结束。这样做既可以保证下一条插入的调试指令执行的正确性,也可以保证系统在退出调试模式后的软件调试程序正常执行。
其中,调试控制模块208的示意图如图3所示,其至少包括:
信号转换模块302,用于在调试使能信号使能时,激活条件筛选器306和寄存器单元308;优选地,信号转换模块302接收由数据选择译码模块输出的调试使能信号,并将该调试使能信号进行信号延迟、并使一个单时钟周期信号变成一个多时钟周期信号。其经过处理的调试使能信号激活条件筛选器306和寄存器单元308;
指令分类器304,用于对指令信号进行分类,并输出至条件筛选器306;优选地,指令分类器304接收由数据选择译码模块发送的指令信号,并对指令信号进行分类;可以将指令分为绝对跳转指令、条件跳转指令、单周期指令、非跳转多周期指令;并将上述指令分别输出到条件筛选器306中;
条件筛选器306,用于在激活时,对来自数据选择译码模块(206)的指令、以及来自指令分类器(304)的分类结果、进行筛选,得到其所对应的控制信号,并输出给寄存器单元(308),其中数据选择译码模块(206)的指令是指:由数据选择译码模块(206)对调试指令进行译码后得到的指令。例如,数据选择译码模块(206)的指令至少包括:当前程序指针、预判的下一个程序指针、跳转使能、当前指令执行结束标志。优选地,条件筛选器306根据指令分析器304分析出的各个指令类型,来挑选数据选择译码模块译出的当前程序指针、预判的下一个程序指针、跳转使能及当前指令执行结束标志中的某些信号,再把这些信号送给寄存器单元308。
寄存器单元308,用于寄存条件筛选器的输入。优选地,寄存器单元308存储的是一系列控制信号,该控制信号用来控制执行单元来执行不同的操作,即处理不同的CPU指令。另外该寄存器单元可以由若干寄存器组成,其可以看成是一个寄存器堆。
具体地,调试控制模块(208)还用于,在接收到的调试使能信号无效时,透传所述程序指令。上述透传程序指令至少包括:采用直连数据线连接数据选择译码模块和执行单元。其中该直连数据线用于:当调试使能信号无效时,程序指令通过该直连数据线发送给执行单元。例如,当数据选择译码模块206选择了上述程序指令,该程序指令通过数据选择译码模块进行译码后,该译码后所得到的相关程序指令通过该直连数据线发送给执行单元。
具体地,调试控制模块208还用于根据调试使能信号,以保证下一条插入的调试指令执行的正确性;以及保证退出调试模式后,程序指令执行的正确性。
具体地,信号转换模块302进一步的用于对调试使能信号进行信号延迟、并使调试使能信号从一个单时钟周期信号变成一个多时钟周期信号。例如,将来自数据选择译码模块的调试使能信号进行信号延迟,将其由一个单脉冲凸起延长到两个脉冲凸起。即调试使能信号从一个单时钟周期信号变成一个多时钟周期信号。由于调试使能信号的延迟时间变长,在信号转换模块激活条件筛选器和寄存器单元时,该条件筛选器和寄存器单元有足够的时间来响应上述激活动作。但是如果是单时钟周期信号,由于脉冲凸起时间短,则条件筛选器和寄存器单元可能无法响应激活动作。
调试控制模块208进一步地用于:调试使能信号使能时,激活条件筛选器306和寄存器单元308;当调试使能信号无效时,屏蔽调试控制模块208。优选地,调试使能信号经过一个信号转换,即在调试使能信号使能使能的一瞬间,激活经过处理的调试使能信号,该信号激活条件筛选器306和寄存器单元308。另外,当调试使能信号无效时,对应的经过处理的调试使能信号同时无效,此时寄存器单元308把经过处理的各个控制信号释放给执行单元执行,之后所有信号经过其它控制信号通过送给执行单元执行,屏蔽调试控制模块208。
图4为本发明的对16位芯片内核进行调试控制的方法的流程图,如图4所示。包括以下步骤:
步骤402:在调试使能信号使能时,将调试信号进行信号延迟;激活条件筛选器和寄存器单元;其中信号延迟至少包括将调试信号由单时钟周期信号变为双时钟周期信号;
步骤404:将调试指令进行分类;将调试指令的分类结果以及调试指令的译码结果进行筛选;
步骤406:将筛选结果寄存在寄存器单元中。
本发明以16位CPU的调试控制为实例,对CPU的调试进行详细说明。图5为本发明的16位CPU的调试控制的示意图,如图5所示。其具体实施方式如下:
针对16位CPU芯片内核的特性,本发明在不增加程序存储器的前提下,在芯片内部增加了一个调试指令缓存单元和调试控制单元。具体的设计见图5所示的16位CPU的调试控制的示意图。
其中调试指令缓存单元,可以存放从调试接口输入的调试指令,再通过一个数据选择器,选择输入到译码单元的指令是从程序存储器进入的程序还是从调试缓存输入的调试指令。其中,该数据选择器和译码单元可以统一为同一个实体——数据选择译码单元。这个实体所实现的功能是对调试指令和程序指令进行选择,并将选择好的指令以及调试使能信号进行译码。进一步地,该数据选择器和译码单元也可以分成两个实体,其中一个实体为数据选择器,另一个实体为译码单元。以上这两种情况只是属于本发明的不同实施方式。下文中都是以“分成两个实体”的方式来进行阐述的。
数据选择器的输入端由调试接口控制,如果调试接口发送了调试使能信号,则数据选择器接收调试指令,并将该调试指令发送给译码单元。如果不是调试使能信号,则数据选择器接收程序指令,并将该程序指令发送给译码单元。其中,上述程序指令是存放在程序存储器中的程序。该程序从程序存储器中通过地址总线和数据总线,传送至程序总线接口,再由程序总线接口通过地址总线和数据总线传送至指令缓存中。这样当调试使能信号在非使能状态下,数据选择器可以选取指令缓存中的当前指令。
数据选择器将选择好的指令输出至译码单元。如果调试使能信号使能,则数据选择器输出的是调试指令。该调试指令通过译码单元译码,生成一系列控制信号。这些控制信号则进入到调试控制单元内。
当调试使能信号使能时,该调试控制单元使能;并且该调试控制单元,控制在进入调试模式时当前指令的执行状态,生成在调试模式下的对各总线的数据及控制信号。反之,当CPU不在调试状态下而在正常运行时,该调试控制单元无效,即可视为透明。例如,如果调试控制信号使能,则调试控制单元将调试控制信号输出至执行单元中。否则,当调试使能信号无效时,程序指令通过该直连数据线发送给执行单元。执行单元通过数据总线和地址总线等,将执行结果输出至相关的寄存器单元和/或存储器中。
具体地,以图6的调试控制单元详细结构图为实施例,对调试控制单元的具体实施进行详细说明。该调试控制单元至少包括:信号转换、指令分类器、条件筛选器、寄存器单元。
译码单元将指令类别信号输出给指令分类器。指令分类器将该指令进行分类,该指令可以分为:绝对跳转指令系列、条件跳转指令系列、单周期指令系列、非跳转多周期指令序列等。译码单元将这些指令序列输出至条件筛选器中。绝对跳转指令系列、条件跳转指令系列、单周期指令系列及非跳转类多周期指令系列的详细实现如下所示。
优选地,绝对跳转指令即一定发生跳转的指令。其通过译码单元的译码,可以译出跳转使能信号、以及要跳转到的程序的位置。其中要跳转到的程序的位置是指下一个程序指针的位置。其具体执行过程如图7所示。
优选地,条件跳转指令即在一定条件下才会发生跳转的指令,通过译码单元的译码,可以译出是否要发生跳转和要跳转到的程序的位置,即下一个程序指针的位置。条件跳转指令在发生跳转的时刻与绝对跳转指令的处理方式相同,在没有发生跳转指令的时刻与非跳转类多周期指令的处理方式相同。其具体执行过程如图8所示。
优选地,单周期指令是在一个时钟周期即可执行完的指令,通过译码单元的译码,可以译出下一个程序指针。由于单周期指令的特性,其下一个程序指针就是当前程序指针顺序加2后的指针,即其预判的下一个程序指针为当前指针加2。其具体执行过程如图9所示。
优选地,非跳转类多周期指令多指乘法、除法等一个时钟周期执行不完的指令,通过译码单元的译码,可以译出下一个程序指针和当前指令直接结束标志。由于非跳转类多周期指令的执行时间大于一个周期,具体执行时间根据指令的不同而不同。所以译码单元不仅仅要译出预判的下一个程序指针,还要译出一个当前指令执行结束标志以通知内核本次操作何时结。具体执行过程如图10所示。
另外,译码单元将当前程序指针、预判的下一个程序指针、跳转使能及当前指令执行结束标志,输出至条件筛选器中。
信号转换接收来自译码单元的调试使能信号,并对该调试使能信号进行处理。经过处理的调试使能信号使能可以激活条件筛选器和寄存器单元。具体地,信号转换对调试使能信号进行信号延迟、并使调试使能信号从一个单时钟周期信号变成一个多时钟周期信号。信号转换将来自译码单元的调试使能信号进行信号延迟,将其由一个单脉冲凸起延长到两个脉冲凸起。即调试使能信号从一个单时钟周期信号变成一个多时钟周期信号。由于调试使能信号的延迟时间变长,在信号转换模块激活条件筛选器和寄存器单元时,该条件筛选器和寄存器单元有足够的时间来响应上述激活动作。但是如果是单时钟周期信号,由于脉冲凸起时间短,则条件筛选器和寄存器单元可能无法响应激活动作。
如果条件筛选器和寄存器单元被激活,则CPU处于调试状态下,调试使能信号使能,调试控制单元使能。在该情况下,调试控制单元接收由译码单元输出的控制指令、调试使能信号、指针、党情指令执行结束标志、以及其它控制信号。其中该控制指令至少包括:绝对跳转指令系列、条件跳转指令系列、单周期指令系列及非跳转类多周期指令系列等各种功能指令译码信号。
调试控制单元要保证在进入调试模式的时刻,CPU当前的指令正常执行结束。这样做既可以保证下一条插入的调试指令执行的正确性,也可以保证系统在退出调试模式后的软件调试程序正常执行。
本领域的技术人员应该明白,上述的本发明实施例所提供的装置的各组成部分,以及方法中的各步骤,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上。可选地,它们可以用计算装置可执行的程序代码来实现。从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
虽然本发明所揭露的实施方式如上,但该的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。