专利名称:可编程异常处理等待时间的制作方法
技术领域:
本发明涉及数字处理器,且更特定来说涉及数字处理器中的异常等待时间。
背景技术:
数字处理器通常通过存储于程序存储器中的顺序执行指令与处理时钟同步地操作。然而,此些处理器必须于外部装置介接。一种方式的介接通过所谓的中断来执行。此事件中断程序的顺序执行且强制处理器进入异常状态,在所述异常状态中处理器执行所谓的中断服务例程。在此服务例程期间,处理外部事件。与“正常”程序的同步执行相反,中断信号通常异步地发生。换句话说,此外部信号可在当前处理的指令的执行期间的任何时间发生。通常在随后的循环中确认此中断。为预处理中断,依据实施方案,通常在中断处理器之前执行当前未决指令或甚至下一随后指令。从外部中断的发生到实际上执行服务例程的时间的时间称为等待时间。此等待时间取决于处理器的相应设计且可在类型之间变化。许多数字处理器具有可变执行时间的指令。然而,此些处理器并入到其中的许多设计需要已知中断等待时间,使得可恰当地控制进程。因此,有时数字处理器经设计而具有恒定或固定中断等待时间。在此些具有固定等待时间的数字处理器中,异常处理报头必须足够长以适应最长指令的完成。如果否,那么中断断言与中断服务例程(ISR)的开始之间的等待时间将依据在异常的时间中央处理单元(CPU)正在执行哪一指令而变化,且可引入 “等待时间抖动”。固定等待时间解决“等待时间抖动”问题,但代价是浪费中断响应时间。 在具有深指令管线及/或指令预取逻辑的CPU中,支持固定等待时间所必要的较坏情况报头可变得非常长。此对于用户来说可非常具有限制性。因此,需要一种处置且特定来说预处理中断的更灵活处理器。
发明内容
根据一实施例,一种具有可编程异常处理等待时间的数字处理器可包含数字处理器的中央处理单元(CPU);与所述CPU耦合的异常控制器;及与所述CPU耦合的控制寄存器,其中所述控制寄存器可操作以将所述CPU的操作模式设定为两种模式中的至少一者, 其中在第一模式中,所述CPU具有固定异常处理等待时间,且在第二模式中,所述CPU具有可变异常处理等待时间。根据另外实施例,所述异常控制器可为中断控制器。根据另外实施例,所述数字处理器可为微控制器或数字信号处理器。根据另外实施例,所述控制寄存器可包含可编程的等待时间选择位。根据另外实施例,所述控制寄存器中的所述等待时间选择位可为可依据软件应用程序动态地编程。根据另外实施例,仅在异常的等待时间小于或等于预定义阈值时选择所述第二模式。根据另外实施例,所述预定义阈值可为可编程的。根据另外实施例, 所述预定义阈值可存储于所述控制寄存器中。根据另外实施例,所述数字处理器可进一步包含可操作以产生用于使所述CPU中的执行单元停转的信号的计数器。根据另一实施例,一种用于处理处理器中的异常的方法可包含设定所述处理器的至少两个操作模式中的一者;接收异常;预处理所述异常;及执行异常服务例程;其中在第一模式中,所述处理器具有固定异常处理等待时间,且在第二模式中,所述处理器具有可变异常处理等待时间。根据所述方法的另外实施例,可通过编程控制寄存器中的等待时间选择位来执行设定所述处理器的至少两个操作模式中的一者的所述步骤。根据所述方法的另外实施例, 可依据软件应用程序动态地编程所述控制寄存器中的所述等待时间选择位。根据所述方法的另外实施例,仅在异常的等待时间小于或等于预定义阈值时选择所述第二模式。根据所述方法的另外实施例,所述预定义阈值可为可编程的。根据所述方法的另外实施例,可将所述预定义阈值存储于所述控制寄存器中。根据所述方法的另外实施例,可在执行所述异常服务例程之前执行未决指令,所述未决指令需要特定数目个处理循环来执行且其中所述处理器可执行多个指令,所述多个指令需要最小处理循环量及最大处理循环量中的至少一者来执行。根据所述方法的另外实施例,在所述第一模式中,可将第一处理循环数目扩展到所述最大处理循环量。根据所述方法的另外实施例,可通过插入一个或一个以上无操作指令来扩展所述第一处理循环数目。根据所述方法的另外实施例,可通过使所述处理器停转来扩展所述第一处理循环数目。根据所述方法的另外实施例,可仅在所述第一处理循环数目等于或小于预定义阈值的情况下通过插入一个或一个以上无操作指令来扩展所述第一处理循环数目。
通过结合附图参照以下说明可获得对本发明及其优点的更全面理解,附图中图1是根据一实施例的CPU及相关联中的控制器的示意性框图;图2到图4展示固定中断等待时间的时序图;图5是展示第一实施例的原理性操作的流程图;图6是展示第二实施例的原理性操作的流程图;图7到图14是固定等待时间的时序图;图15到图19是可变等待时间的时序图;及图20是中断返回时序图。虽然已参照本发明的实例性实施例来描绘、描述及界定本发明的各实施例,但此类参考并不意味着限制本发明,且不应推断出存在此限制。所揭示的标的物能够在形式及功能上具有大量修改、更改及等效形式,所属领域的技术人员根据本发明将会联想到这些修改、更改及等效形式并受益于本发明。所描绘及所描述的本发明实施例仅作为实例,而并非是对本发明的范围的穷尽性说明。
具体实施方式
根据本发明的教示,可设计以至少两种模式操作的处理器,其中第一模式提供固定等待时间,其中所有异常具有相同等待时间。可设定其中处理器具有可变等待时间的第二模式,所述可变等待时间取决于期间发生异常的未决指令。异常可为任何类型的外部或内部中断或者在处理单元内导致的陷阱。未决指令应理解为在可处理异常之前必须执行的指令。在许多处理器架构中,此指令为在期间发生异常的循环之后的循环中执行的指令。然而,依据所述实施例,其也可为在中断发生时未决的指令。可使用提供(举例来说)选择第一或第二模式的位的控制寄存器。然而,可使用用以用信号通知特定操作模式的其它构件, 例如馈送到处理器芯片的引脚的外部信号。此允许在包含需要固定等待时间的区段及不需要的其它区段的程序中动态地改变操作模式。举例来说,根据一实施例,可添加存储于CPU的控制寄存器中控制位以修改数字处理器的中央处理器单元(CPU)的异常处理流程。当此位为空时,CPU支持常规固定等待时间。当此位经设定时,异常处理流程不填补超出完成单循环指令所需的报头的报头。针对较长指令暂停异常处理,从而仅在必要时增加异常等待时间。尽管异常响应时间将为可变的,但其改善程度通常远超过固定等待时间选项的异常响应时间。此外,用户因此可选择通过限制一些(较长)指令的执行可接受多少额外最坏情况等待时间及“等待时间抖动”。预期且在本发明的范围内,依据需要应用程序代码做什么来在固定与可变等待时间之间动态地切换。某些数字处理器(例如,微控制器)大多数使用为单循环操作的指令,然而也可提供需要一个以上循环的一个或一个以上指令。因此,由于指令完成而产生的异常等待时间因此通常较短。因此,支持可变等待时间异常处理流程可在几乎所有时间产生等待时间改
口 ο许多应用程序自己具有不同操作模式。在某一情况下,一些模式可更适于固定等待时间异常,其它模式可更适于可变等待时间异常。因此,具有用以在固定与可变等待时间之间选择的用户可编程控制位允许用户在异常等待时间操作模式(固定对可变等待时间) 之间动态地切换。图1展示系统100的经简化框图,系统100包括与产生中断或陷阱的异常控制器 120耦合的中央处理单元(CPU) 110。CPU 110可包含用于执行指令的执行单元,例如执行管线。举例来说,此异常控制器可为能够接收多个中断信号的中断控制器。如果异常控制器120为(举例来说)中断控制器,那么其将产生单个中断信号ht,其被馈送到CPU110。 CPU可用相应信号Ack来确认中断信号。如所属技术中众所周知,中断控制器120可包括优先级处置及其它机制。此外,CPU可经设计以基于优先级机制处置一个以上中断信号。图 1还展示被馈送到CPU 110的复位信号,可不将其视为形成异常,但也将其视为形成异常。 提供与CPU耦合的操作模式寄存器130。此寄存器130可包括向CPU 110指示CPU 110将以哪一模式操作的一个或一个以上位。举例来说,可使用单个位且此位可为能够确定其它操作模式或配置的一般操作模式寄存器的部分。此寄存器还可存储用于触发模式开关的阈值,将在下文中更详细地阐释所属模式开关。在双模式系统中,如果被设定为1,那么此位强制CPU 110以可变异常等待时间操作,其中异常等待时间取决于当异常发生时哪一类型的指令未决。如果此位被设定为0,那么CPU以固定或恒定等待时间操作,其中通过将无操作(NOP)循环强制到执行单元中来用所述无操作循环填补较短指令,或使执行单元140停转以将每一未决指令的执行时间延长到最大未决,换句话说延长到处理器可执行的任何指令的最长执行时间。为此,根据一个实施例,可实施停转计数器150以对必要的强制无操作 (FNOP)循环进行计数或提供必要的延迟信号。图2展示单循环指令的此种用无操作循环填补的实例。然而,可使用延长等待时间的其它方式。举例来说,可使用任何类型的使处理器停转以延长执行时间。在图2中,展示当在单循环指令期间断言外围中断时的事件序列。中断过程花费四个指令循环。在图2 中将每一循环编号以用于参考。在外围中断发生之后的指令循环期间设定中断旗标状态位。当前或未决指令INST(PC)在此指令循环期间完成。在中断事件之后的第二指令循环中,将程序计数器(PC)及状态寄存器(SRL)寄存器的内容保存到临时缓冲器寄存器中。中断过程的第二循环执行为无操作指令FNOP (填补)以维持与在较长两循环指令期间采用的序列的一致性。在第三循环中,给PC加载中断源的向量表地址且取中断服务例程(ISR)的开始地址。在第四循环中,给PC加载ISR地址。当取ISR中的第一指令时,将第四循环执行为FN0P。此第四循环可为任何指令所需要的且不视为上文所提及的填补。其它处理器架构可包括不需要任何类型的无操作指令插入且可具有用以使未决指令的执行停转的其它方式的不同执行机制。本文中所描述的原理同等地适用于此些设计。图3及图4展示两循环指令的实例。在固定等待时间模式中,两循环指令期间的中断等待时间与单循环指令期间的相同。中断过程的第一及第二循环允许两循环指令完成执行。图3中的时序图展示当外围中断事件在两循环指令的执行之前的指令循环中发生时的情况。图4展示当外围中断与两循环指令的第一循环重合时的时序。在此情况下,通过插入与图2中所示类似的FNOP指令,中断过程针对单循环指令完成。对于可变模式,不执行此种填补或停转。因此,等待时间因此可依据当异常发生时哪一指令未决而在指令之间变化。图5展示根据上文所描述的原理的流程图。在步骤500中,由CPU接收中断信号。 在步骤510中,中断的预处理开始。在从步骤510持续到步骤560的预处理期间,执行所谓的房屋清扫。举例来说,将程序计数器(PC)及状态寄存器(SR)推到栈上。还可保存其它变量。然而,大多数处理器仅需要保存PC及SR,因为可在中断的服务期间保存其它寄存器。 在步骤520中,检查将使用可变等待时间模式还是固定等待时间模式。在固定等待时间模式的情况下,在步骤530中确定哪一指令当前未决。此外,此指令为在中断服务例程可开始之前必须执行或完成执行的指令,且因此关于实际中断的发生,哪一指令是未决的可在处理器设计之间变化。在步骤MO中,确定此未决指令是否需要填补或停转及需要多少额外循环。举例来说,如果可执行的最长指令需要5个循环且最短指令需要1个循环,那么必须给1循环指令填补4个无操作(NOP)循环或各自地停转。在此种处理器中,可给2循环指令填补3到4个NOP循环,给3循环操作填补2到4个,给4循环的填补1到4个,且给5 循环指令填补0到4个循环,其中填补NOP的数目取决于中断在哪一循环期间发生。在步骤550中,在开始中断服务例程执行之前添加额外NOP循环。预中断处理在步骤560中结束。在可变模式的情况下,例程跳往步骤560,换句话说,不执行填补。图6展示具有可变或固定等待时间的另一实施例且其中固定与可变之间的阈值是可编程的。根据此实施例,在一种模式中,可针对具有小于预定义时间周期X的等待时间的所有指令执行固定等待时间。在此模式中,所有其它指令引起可变等待时间。另一模式对应于关于图5所论述的可变模式。为此,步骤600、610及660分别对应于步骤500、510及 560。在步骤620中,确定是否将执行等待时间调整,如果否,那么与图5中所论述类似地执行可变等待时间。也可如虚线所指示省略此步骤且替代地仅可编程阈值将触发两种模式中的一者。根据另一实施例,可提供多个阈值且控制寄存器可选择各个阈值中的一者。在步骤 630中,确定当前未决指令。在步骤640中,确定剩余多少循环。如果循环的数目小于X,那么在步骤650中执行相应填补。否则,例程跳往步骤660。此实施例甚至更灵活且提供有限的填补。在具有需要1到5个之间的循环的指令的实例中,程序可仅包括具有1、2或3个循环的指令。此处,可通过设定X = 3将限制施加到这些类型的指令。因此,需要1、2或3 个循环的指令均产生3循环等待时间的最大等待时间。在执行4循环或5循环指令的情况下,等待时间分别增加。然而,如上文所阐释,用户可在特定程序或模块中不使用此些指令, 且因此可确保恒定最小等待时间,即使具有固定等待时间的常规处理器将不能够将其中断等待时间减少到超过5循环指令所引起的中断等待时间。根据又一实施例,可将多个固定及可变等待时间的概念与异常优先级等级耦合。 替代手动编程相应模式,将相应可编程等待时间的自动开关与处理器当前设定为其以操作的优先级等级耦合。为此,可提供一个或一个以上控制寄存器(举例来说,如图1中所示的一个或一个以上特殊功能寄存器160),其给每一异常优先级等级指派相应等待时间类型。 根据一个实施例,可给可变等待时间指派最高优先级中断以快速响应于(举例来说)错误状况。将给分别选择的固定等待时间指派接下来的较低优先级中断以实现保证响应时间 (假设无错误状况发生)。其它优先级等级可具有不同的所指派等待时间。如果启用嵌套, 那么所有其它较低优先级中断可为可变或固定的,其中不能针对所有较低优先级异常保证固定等待时间。也可给软件异常(例如,陷阱)指派特定等待时间或软件异常可总是经配置以便以可变等待时间操作。与微控制器的特定实施例组合的异常(中断)处置的更详细说明结合图7到图20 中所示的各种时序图如下。根据此特定实施例,CPU可支持经排定优先级中断与陷阱异常方案。举例来说,可存在多达7个CPU中断优先级等级,且中断可存在多达62个预定义(固定)“自然次序”优先级等级。每一中断源具有固定“自然次序”优先级,但关于其使用什么CPU优先级是用户可编程的。最高优先级中断是不可掩蔽的。还存在可用于内部异常的8个可用陷阱。当前实施六个时隙以改善操作稳健性,其全部为不可掩蔽的。其遵守预定义优先级方案。对软件栈执行与异常及子例程调用相关联的堆栈。寄存器W15专用作栈指针且具有LSB = 0。中断控制器模块汇编来自装置外围器件的所有中断请求(IRQ)信号且给每一 IRQ 信号指派固定“自然次序”优先级及用户指派的优先级两者。将中断与陷阱组合且将其与当前CPU优先级进行比较。接着将陷阱或中断(如果CPU优先级小于最高等级未经掩蔽中断请求的优先级)连同向量数及经更新CPU优先级值一起呈现给处理器核心。CPU优先级等级由4位值IPL<3:0>定义。IPL<3>位于模式控制寄存器C0RC0N<3>处,且IPL<2:0>驻存于SR中。可在任何时间读取IPL<3>位且可通过软件将其清除以允许监督陷阱处置器在不必执行从中断指令的返回(RETFIE)的情况下跳往另一进程。在一些情况下(例如,在栈错误陷阱期间),执行RETFIE并非选项,因此手动清除IPL<3>且重新初始化机器的适当部分是完全复位的良好替代方案。通过控制寄存器INTC0N1<15>中的NSTDIS控制位支持嵌套及非嵌套异常两者。通过默认的复位来启用嵌套异常,但可通过设定NSTDIS位来停用嵌套异常。除所有中断的优先级被强制为7而不管调用中断优先级如何以外,非嵌套中断操作在所有方面与嵌套中断操作相同。因此,CPU优先级将总是在异常处理期间针对所有中断设定为7而结束。在异常处理期间自动修改CPU中断优先级。然而,倘若启用中断嵌套(NSTDIS = 0),那么IPL<2:0>为读取/写入位且也可由用户操纵以动态地修改CPU中断优先级。如果停用中断嵌套(NSTDIS = 1),那么IPL<2:0>变为只读位以防止用户疏忽地降低CPU中断优先级(且致使任何未决中断嵌套)。将采用并嵌套大于当前CPU优先级 (IPL<3:0>)的优先级的任何异常(如果异常正在进行中且NSTDIS位为空)。将当前CPU 优先级IPL<2:0>与SR堆栈,且将IPL3与PCH堆栈。以下堆栈序列用于所有异常· PCL<15:1> — T0S<15:1> ;SFA — T0S<0>.(Wl 5)+2 —Wl 5· (SR<7:0>) — T0S<15:8>, (IPL<3> :PC<22:16 — T0S<7:0>.(W15)+2 —W15· 0 — SFA在此实施例中注意,异常处理以SFA(栈帧活动)位由CALL {W}、CALLWL及 RCALL{W}指令处置之相同方式对其进行处置。将CPU优先级设定为等于异常的优先级。在返回后,RETFIE即刻将返回PC、SR、IPL3及SFA位取消堆栈以将机器恢复到在异常之前的其状态。等级OCPU优先级将允许确认所有中断及陷阱,且等级7CPU优先级将掩蔽所有中断但继续允许陷阱发生。可提供全局中断启用(GIE)控制功能以提供用以快速停用及重新启用软件中的所有中断的方式。当GIE位经清除时,相应宏越权控制传入CPU IPL(cpu_irq_priority_ level<3:0>)而将其设定为4’ bOlll (等级7),从而停用所有中断但保持陷阱启用。实际 CPU IPL保持不改变,使得当GIE位再次经设定时,系统将返回到先前中断优先级等级下的操作。在此实施例中注意陷阱总是嵌套经受所述限制。对于经成功仲裁的异常,相关联向量数表示到主要中断向量表(PIVT)或辅助中断向量表(XIVT)中的偏移。PIVT驻存于主要阵列程序存储器中,在位置0x000004处开始。类似地,XIVT驻存于辅助阵列程序存储器中,在位置0X7FFFF4处开始。中断控制器使用XIVTEN熔丝状态来确定这些地址中的哪一者变为针对CPU产生的物理向量地址的基址。 当XIVTEN熔丝经设定(默认状态)时选择PIVT基址,且当XIVTEN熔丝为空时选择XIVT 地址。这些向量表总是可存取的,而不管现有安全模式如何。PIVT及XIVT两者均含有多达256个异常向量。每一中断或陷阱向量含有M位宽的地址。保持于每一向量位置中的地址为相关联中断服务例程(ISR)或陷阱处置器的开始地址。根据一实施例,在此架构中RESET可不被视为异常,且可使用两字GOTO指令来实施。尽管本身并非异常,但按照惯例在此对其加以论述。CPU可从主要或辅助地址空间复位,此取决于驱动fus_XiVt_enable信号的XIVTEN熔丝的状态。在复位期间,将PC清除 (fus_xivt_enable = 1)或设定为 0x7FFF00 (fus_xivt_enable = 0)。当复位经释放时,正常指令执行继续,以FNOP (强制NOP)及选定复位地址处的GOTO指令的预取开始。当装置处于复位时,保持Q时钟处于状态Ql。CPU将此第一循环视为FN0P。第二循环在选定中断向量表内从两程序字RESET时隙取GOTO指令。接着将此指令作为正常指令执行且其跳往用户程序的开始。复位源为1.外部(引脚)复位2. P0R:上电复位3. B0R:掉电复位4.任何未经实施操作码的RESET指令或执行5.未经初始化W寄存器的读取(仅针对地址)6.从未经实施程序地址空间的取指令根据一实施例,CPU上可存在两种类型的复位。冷复位为POR或BOR复位的结果。 热复位为所有其它复位源(包括RESET指令)的结果。根据一实施例,异常处理对于所有源相同。如上所述,根据一实施例,在此架构中可不将复位视为异常。对于第一 ISR指令,异常处理由仲裁阶段(循环)、CPU请求循环、 CPU确认循环、取向量循环及指令预取循环组成。如图1中所示的中断块120接收并仲裁所有异常。可将仲裁管线化,使得其花费2
个循环来完成。接着中断块120在Ql上升上向CPU 110产生中断请求信号^it (伴随有异常
向量地址(int_vector_addr<23:0>)及其相关联优先级(int_priority_level<3 0>))。仲
裁为进行中的进程,从而每一循环Oil)产生经更新结果。即使当断言信号Int时,CPU 110
将在其断言其响应信号Ack时仅锁定仲裁结果。因此,当在嵌套中断被启用(INTC0N1<15>,
NSTDIS = 0)的情况下操作时,较高优先级异常可在直到在循环Ack被断言之前的Ql的中
途抢先于较低优先级异常。此效应可从“固定”等待时间操作减去数个循环且相应地被补 m
te ο在上升Ql上对信号Int进行取样且在随后的循环期间其将被视为未决的。当已完成当前执行的指令或固定等待时间超时已期满时,CPU 110将通过在一个循环的上升Q3 上断言Ack来确认来自中断控制器的异常请求。在Ack被否定之后,中断控制器120在Ql 上解除ht,从而完成握手。可变等待时间实例展示于图15中。在CPU确认循环期间使用由中断控制器呈现给核心的向量地址来起始取向量。核心执行取向量(出于所有其它目的,可将其视为一系列FNOP)且检索对位向量。接着向量被引导到PC,在此处其形成第一 ISR指令的预取地址。将由紧紧在异常处理之前执行的指令预取(但丢弃)的指令的PC地址保存于PCINT中。在取向量期间,将PCINT拷贝到PCT 中,准备堆栈为ISR返回地址。根据一实施例,取向量及第一 ISR指令可花费数个循环,此取决于提供核心的PS存储器的存取时间。PC总是从PC临时(PCT)寄存器堆栈。给PCT加载以下各项中的一者 当前 PC 值。·在每一循环的Q3期间的下一 PC值(直接来自PC加法器)。·中间 PC(PCINT)寄存器。在单循环指令期间未决的异常的异常处理(可变等待时间)展示于图15中(其包括当不采用时的相关分支)。图7到图20中的所有随后时序图假设单循环PS存储器存取。较慢PS存储器将需要相应地使CPU停转。根据一实施例,强制NOP (FNOP)指令(填补)作为异常处理的部分发生。在指令队列中提供用以将NOP指令加载到R0MLATCH值中的机制。当NOP编码为0x000000时,FNOP等效于在上升Ql上清除顶。根据一实施例,异常处理可以由模式寄存器C0RC0N<15>中的VAR位的状态确定的两种模式中的一者操作。如果VAR = 0(默认复位状态)且CPU设定为最高优先级EDS总线主控器(MSTRPR<2:0> = 3’b0),那么CPU将针对任何最高优先级异常提供确定性固定等待时间响应。从辨识出中断的点到ISR的第一指令的中断等待时间对于包括TBLRDx的所有指令或需要PSV存取的那些指令将为固定的。如果中断辨识点定义为将未决中断取样到中断控制器中的Ql上升,那么固定等待时间由下式确定latency職=Q = tarb+5+2 η 循环其中η = PS存储器存取时间(循环),tarb =仲裁时间(循环)。在仲裁之后断言信号ht,且CPU执行当前在进行中的指令的剩余部分。5个循环之后断言(q3)信号 Ack,且取向量开始。也就是说,如果包括任何CPU停转的剩余的(从被断言ht)总指令执行时间总计少于5个循环,那么CPU添加FNOP以使总数为5。单循环指令的固定等待时间实例详细展示于图7中且两循环指令的固定等待时间实例详细展示于图8中。根据一实施例,实施方案可使得在异常处理期间使用计数器150以强制固定数目个等待时间循环。计时器超时值由参数INT_LATENCY_DELAY确定。当从快闪存储器执行时,以下特征组合将打破中断等待时间保证(较慢存储器将引入额外延迟)a)经由PSV存取数据的LDDW指令。添加1个循环以完成第2取PSV。不允许PSV 写入,因此STDW不成问题。b)与(RAW)停转相关联的TBLRDx或PSV存取指令。添加1个循环。c) REPEATed PSV存取的最后反复。添加1个循环。如果VAR = 1且CPU为最高优先级EDS总线主控器(MSTRPR<2:0> = 3,b0),那么 CPU将针对所有异常提供可变等待时间响应。对于单中断系统,从取样未决中断的Ql上升到ISR的第一指令的中断等待时间将为最大latency職=! = tarb+ P +2 η 循环最小latency職=丨=tarb+l+2 η 循环其中ρ =异常处理期间的总指令执行时间(循环),η =PS存储器存取时间 (循环),tarb =仲裁时间(循环)。以上关系适用于在包括TBLRDx的任何指令期间或在 PSV存取期间发生的异常。等待时间表达为任何给定指令的范围,因为中断可在指令的开头或结尾处到达。注意,异常处理期间的指令执行时间可不同于正常顺序执行的指令执行时间。举例来说,由于在采用异常的情况下所有流改变指令可中止取目标PS,因此其可在异常处理期间的2个循环中执行。目标PS地址变为异常返回地址。此外,在于异常处理期间完成的指令之后将(在大多数情况下)不需要RAW冒险停转,因此不需要在P中对停转循环进行计数。当在异常处理期间执行时其执行时间不同的指令的概括展示于表1中。其中中断在RETURN类别的指令的执行期间变为未决的实例展示于图20中。表1:执行时间差异实例
权利要求
1.一种具有可编程异常处理等待时间的数字处理器,其包含数字处理器的中央处理单元CPU,与所述CPU耦合的异常控制器,与所述CPU耦合的控制寄存器,其中所述控制寄存器可操作以将所述CPU的操作模式设定为两种模式中的至少一者,其中在第一模式中,所述CPU具有固定异常处理等待时间, 且在第二模式中,所述CPU具有可变异常处理等待时间。
2.根据权利要求1所述的数字处理器,其中所述异常控制器为中断控制器。
3.根据权利要求1所述的数字处理器,其中所述数字处理器为微控制器或数字信号处理器。
4.根据权利要求1所述的数字处理器,其中所述控制寄存器包含可编程的等待时间选择位。
5.根据权利要求4所述的数字处理器,其中所述控制寄存器中的所述等待时间选择位可依据软件应用程序而动态地编程。
6.根据权利要求1所述的数字处理器,其中所述第二模式是仅在异常的等待时间小于或等于预定义阈值时选择的。
7.根据权利要求6所述的数字处理器,其中所述预定义阈值是可编程的。
8.根据权利要求6所述的数字处理器,其中所述预定义阈值存储于所述控制寄存器中。
9.根据权利要求1所述的数字处理器,其进一步包含可操作以产生用于使所述CPU中的执行单元停转的信号的计数器。
10.一种用于处理处理器中的异常的方法,其包含设定所述处理器的至少两种操作模式中的一者;接收异常;预处理所述异常;及执行异常服务例程;其中在第一模式中,所述处理器具有固定异常处理等待时间,且在第二模式中,所述处理器具有可变异常处理等待时间。
11.根据权利要求10所述的方法,其中通过编程控制寄存器中的等待时间选择位来执行设定所述处理器的至少两种操作模式中的一者的所述步骤。
12.根据权利要求11所述的方法,其中依据软件应用程序动态地编程所述控制寄存器中的所述等待时间选择位。
13.根据权利要求11所述的方法,其中仅在异常的等待时间小于或等于预定义阈值时选择所述第二模式。
14.根据权利要求13所述的方法,其中所述预定义阈值是可编程的。
15.根据权利要求14所述的方法,其中将所述预定义阈值存储于所述控制寄存器中。
16.根据权利要求10所述的方法,其中在执行所述异常服务例程之前执行未决指令, 所述未决指令需要特定数目个处理循环来执行,且其中所述处理器可执行多个指令,所述多个指令需要最小处理循环量及最大处理循环量中的至少一者来执行。
17.根据权利要求16所述的方法,其中在所述第一模式中,将第一处理循环数目扩展到所述最大处理循环量。
18.根据权利要求17所述的方法,其中通过插入一个或一个以上无操作指令来扩展所述第一处理循环数目。
19.根据权利要求17所述的方法,其中通过使所述处理器停转来扩展所述第一处理循环数目。
20.根据权利要求17所述的方法,其中仅在所述第一处理循环数目等于或小于预定义阈值的情况下通过插入一个或一个以上无操作指令来扩展所述第一处理循环数目。
全文摘要
本发明揭示一种具有可编程异常处理等待时间的数字处理器,其可具有数字处理器的中央处理单元CPU;与所述CPU耦合的异常控制器;及与所述CPU耦合的控制寄存器,其中所述控制寄存器可操作以将所述CPU的操作模式设定为两种模式中的至少一者,其中在第一模式中,所述CPU具有固定异常处理等待时间,且在第二模式中,所述CPU具有可变异常处理等待时间。
文档编号G06F13/24GK102414672SQ201080018584
公开日2012年4月11日 申请日期2010年7月15日 优先权日2009年7月20日
发明者戴维·米基, 迈克尔·I·卡瑟伍德 申请人:密克罗奇普技术公司