发明内容
有鉴于此,本发明提供了处理指令的装置和方法以及用于该装置或方法的执行控制装置,在控制指令执行时间的同时,既不产生额外的工作负载,又不产生不必要的能耗。
所述指令处理装置的指令中包括表示该指令预定执行时间的数据域,该指令处理装置包括:执行控制模块,用于判断当前指令的处理时间是否超过所述预定执行时间并将判断结果发送给执行模块,并且在当前指令执行期间调整指令处理装置为运行在低能耗状态;和
执行模块,用于在开始执行当前指令时启动所述执行控制模块,并且在所述执行控制模块判断出当前指令的处理时间超过所述预定执行时间的情况下中止执行该指令。
所述执行控制模块可以独立于指令处理装置,从而成为执行控制装置。
所述指令处理方法在指令中设置表示预定执行时间的数据域,在开始执行当前指令时,按照所述数据域的值装载并启动定时器,并且在定时器计时期间调整指令处理装置为运行在低能耗状态。在定时器结束时,当前指令的执行被中止。
由于避免了采用中断机制,因此不会产生额外的工作负载。所述执行控制模块由硬件实现,特别地,判断当前指令的处理时间是否超过所述预定执行时间由硬件定时器实现,因此指令执行装置中不需要运行循环监控例程,从而不会由于运行该监控例程导致的指令处理装置负载而产生不必要的能耗。进一步,由于在指令执行期间,与执行当前指令无关的各模块均停止工作或者工作在较低的时钟频率下,因此进一步降低了指令处理装置的能耗。
具体实施方式
以下参照附图说明本发明提供的指令处理装置和方法以及用于该装置或方法的执行控制装置。
图1是典型的指令处理装置框图。
要处理一条指令,通常需要四个阶段。第一个阶段是预取,即根据例如程序计数器的值,将待执行的指令取出;第二个阶段是解码,即将待执行指令翻译成能够被指令处理装置实际执行的代码;第三个阶段是执行;第四个阶段是返回执行结果。对于输入指令来说,返回的是从外部输入的数据,而对于输出指令来说,返回的可以是输出完成的报告。这四个阶段对应于图1中的四个模块101、102、103和104,这些模块都在时钟模块100的驱动下工作。在现代的指令处理装置中,通常这四个阶段是流水线式进行的,例如当前一条指令进入解码阶段时,后一条指令就可以进入预取阶段。
图2是根据本发明实施例一的指令处理装置框图。
如图2所示,根据本发明实施例一的指令处理装置的框图进一步包括执行控制模块210,其包括定时器模块211和时钟控制模块212。定时器模块211可以是硬件定时器(timer)。为了配合图2所示的指令处理装置,需要为指令处理装置的指令集中的各指令增加一个数据域“超时”,该数据域表示该指令需要在预定执行时间内完成,如果未完成就作为出错处理。在具体实现时,对于实现特定功能的指令,所述“超时”数据域可以利用指令中保留的字段实现;也可以是新增一条新的实现相同功能的指令,在该指令中自行定义该“超时”数据域。本领域技术人员可以理解,字段在指令中的具体位置可以根据情况决定。该“超时”数据域可以存放用于定时器模块计时的立即数;也可以存放一保存该立即数的存储地址。该“超时”数据域还可以仅仅是一个以上的标志位,在该标志位有效时从特定的存储位置取出所述立即数或所述存储地址。当然本领域技术人员可以采用任何其它现有或者未来的技术手段来实现。所述执行控制模块210用于根据该“超时”数据域判断指令的执行时间是否超过预定执行时间,将判断结果报告给执行模块203;所述处理模块210并且在指令执行期间调整指令处理装置为运行在低能耗状态,即降低指令处理装置的能耗。
如上所述,指令在经过预取和解码之后,由执行模块203执行。在根据本实施例的指令处理装置中,执行模块203除了执行指令本身以外,还启动执行控制模块210,具体为:执行模块203将与指令中的“超时”数据域中的数据对应的值加载到定时器模块211中,并且启动定时器模块211使其开始计时;另一方面,执行模块203发送一调整启动信号到时钟控制模块212,使得时钟控制模块212屏蔽时钟模块200与预取模块201、解码模块202和写回模块204之间的时钟路径,从而让预取模块201、解码模块202和写回模块204停止工作。时钟控制模块212也可以将这些路径上的时钟降到较低的频率,从而让预取模块201、解码模块202和写回模块204工作在较低的频率上。
如果在定时器模块211计时结束之前,所执行的指令完成,那么执行模块203停止定时器模块211并将其复位到初始状态,并且发送信号到时钟控制模块212通知其解除屏蔽或降频,从而重新启动预取模块201、解码模块202和写回模块204。反之,如果定时器模块211计时结束达到初始状态后通知执行模块203,并且所执行的指令尚未完成,则执行模块203同样发送信号到时钟控制模块212通知其解除屏蔽或降频,从而重新启动预取模块201、解码模块202和写回模块204;执行模块203并且中止执行当前指令,通知写回模块204返回出错信息。
这样,即使处理当前指令所需的时间较长,并且完成时间不可预知,也可以通过定时器模块211将处理时间控制在预定的时间内。进一步,由于定时器模块211计时的长度是由指令中的“超时”数据域传入的,因此可以灵活地控制所述预定执行时间。此外,在该指令执行期间时钟被屏蔽或降频,因此指令处理装置中大部分模块均停止工作或工作在较低的频率上。也就是说,除了执行模块203、定时器模块211之外,指令处理装置整体上处于停转状态或者以低频工作的状态,而非负载状态,从而减少了能量损耗。
事实上,完成时间不可知的指令毕竟是少数,没有必要对每一条指令都进行执行时间控制。可以在执行模块203中增设一个甄别模块213区分是否需要进行执行时间控制。一种解决方法是在设计指令集的时候,仅仅针对完成时间不可知的指令--例如IO指令--设置“超时”数据域,甄别模块213根据指令中是否有该数据域来判断是否需要进行执行时间控制。另一种解决办法让甄别模块213识别指令的类型,仅仅当识别出的指令类型属于完成时间不可知的指令时,才启动所述执行控制模块210;而当所识别出的指令类型不属于完成时间不可知的指令时,不管该指令中该数据域的值如何,均不启动所述执行控制模块210。所述甄别模块213也可以位于执行控制模块210中,或者是位于执行模块203和执行控制模块210之间的独立模块。
所述时钟控制模块212也可以由定时器模块211控制,采用简单的组合逻辑即可判断出定时器模块211当前是否处于初始状态,进而根据判断结果,在定时器模块211不处于初始状态,即正处于计时状态的情况下进行时钟屏蔽或降频。此后,无论是由于指令执行完毕由执行模块203将定时器模块211复位到初始状态,还是由于定时器模块211计时结束回到初始状态,时钟控制模块212都会根据所述组合逻辑的判断结果停止时钟屏蔽或降频。采用这种方案,执行模块204就无需发送所述调整启动信号。换句话说,图2中的连接221和222可以任选其一。无论选择哪一个,时钟控制模块212都是在定时器模块211计时期间进行时钟屏蔽或降频。
图3是根据本发明实施例二的指令处理装置框图。
本实施例与实施例一的区别之处在于,执行控制模块310并不通过时钟控制模块控制指令处理装置的时钟,而是通过预取控制模块312控制预取模块301。如前所述,所有指令在处理过程中都必须经过预取阶段,如果预取模块301停止工作了,就不会有指令进入后续的模块。这样,后续的各模块在处理完该模块中既有的指令后,就不会处理新的指令,即处于实际上的停转状态,从而降低了指令处理装置的整体能耗。当然,时钟控制模块312也可以降低预取模块301的工作频率。
实施例二的其他模块与实施例一中的对应模块原理类似。如上所述,指令在经过预取和解码之后,由执行模块303执行。在根据本实施例的指令处理装置中,执行模块303除了执行指令本身以外,还将与指令中的“超时”数据域中的数据对应的值加载到定时器模块311中,并且启动定时器模块311使其开始计时;另一方面,执行模块303发送一调整启动信号到预取控制模块312。预取控制模块312可以通过改变预取模块301的使能信号或屏蔽预取模块301的时钟来使得预取模块301停止工作,也可以通过降低预取模块301的时钟频率来使预取模块301工作在较低的频率。
如果在定时器模块311计时结束之前,所执行的指令完成,那么执行模块303停止定时器模块311并将其复位到初始状态,并且发送信号到预取控制模块312通知其恢复预取模块301的正常工作。反之,如果定时器模块311计时结束达到初始状态后通知执行模块303,并且所执行的指令尚未完成,则执行模块303同样发送信号到预取控制模块312通知其恢复预取模块的工作;执行模块303并且中止执行当前指令,通知写回模块304返回出错信息。
同样可以在执行模块303中增设一个甄别模块313,用来区分是否需要进行执行时间控制。可以在设计指令集的时候,仅仅针对完成时间不可知的指令--例如I/O指令--设置“超时”数据域,由甄别模块313根据指令中是否有该数据域来判断是否需要进行执行时间控制。也可以由甄别模块313识别指令的类型,仅仅当识别出的指令类型属于完成时间不可知的指令时,才启动所述执行控制模块310。所述甄别模块313也可以位于执行控制模块310中,或者是位于执行模块303和执行控制模块310之间的独立模块。
所述预取控制模块312也可以由定时器模块311控制,采用简单的组合逻辑即可判断出定时器模块311当前是否处于初始状态,进而根据判断结果,在定时器模块311不处于初始状态,即正处于计时状态的情况下停止预取模块301的工作或者降低预取模块301的工作频率。此后,无论是由于指令执行完毕由执行模块303将定时器模块311复位到初始状态,还是由于定时器模块311计时结束回到初始状态,预取控制模块312都会根据所述组合逻辑的判断结果恢复预取模块301的正常工作。采用这种方案,执行模块304就无需发送所述调整启动信号。换句话说,图3中的连接321和322可以任选其一。无论选择哪一个,预取控制模块312都是在定时器模块311计时期间停止预取模块301的工作或者降低预取模块301的工作频率。
需要说明的是,在实施例一和实施例二中,均以执行控制模块是指令处理装置的一部分为例说明了本发明实施例。在实践中,执行控制模块也可以独立于指令处理装置,即作为独立的执行控制装置。在这种情况下,在执行控制装置与指令处理装置之间设置接口,通过所述接口,指令处理装置向执行控制装置传递所述“超时”数据域,所述执行控制装置向所述指令处理装置报告计时结束,以及执行控制装置控制所述指令处理装置的时钟或预取单元。执行控制装置的内部结构与前面的执行控制模块相同。
图4是根据本发明实施例的指令处理方法的流程图。
在步骤401,开始执行当前指令。如前所述,当前指令经过预取和解码阶段后,进入执行阶段,从而进入步骤401。
在步骤402,判断是否需要控制当前指令的执行时间,如果需要则进入403,否则进入404。
可以通过多种方式来判断是否需要控制当前指令的执行时间。一种方式是,判断指令中是否包含“超时”数据域,如果有则说明需要控制当前指令的执行时间,这需要在设计指令集时,仅仅为需要控制执行时间的指令设置“超时”数据域。另一种方式是根据指令的类型来判断是否需要控制执行时间。
本步骤可以省略,这相当于对每一条指令均执行步骤403-408。
在步骤403,在需要控制当前指令的执行时间的情况下,将与指令中的“超时”数据域对应的值加载到硬件定时器中,并且启动定时器。另一方面,为了节能,让指令处理装置中与执行当前指令无关的各模块停止工作或者工作在较低频率。可以通过调整时钟来达到以上目的,例如屏蔽指令处理装置中与执行当前指令无关的各模块的时钟,也可以降低指令处理装置中与执行当前指令无关的各模块的时钟频率。还可以通过调整指令处理装置中预取模块的工作状态来达到以上目的。例如,改变预取模块的使能信号、屏蔽预取模块的时钟信号或者降低预取模块的时钟信号频率。
在步骤404,判断指令是否执行完毕,如果执行完毕,则进入步骤408,停止并复位定时器,然后进行后续处理。如果指令尚未执行完毕,则进入步骤407。
在步骤407,判断定时器是否计时结束,也就是判断当前指令的执行是否超过预定执行时间。如果计时结束,说明当前指令的执行已经超过预定执行时间,则中止执行当前指令并返回错误信息;否则返回步骤405。
这样,一条指令的执行有两种结果:在预定执行时间内完成,则进行后续处理;未在预定执行时间内完成,则中止执行,按照出错处理。
虽然已经图示和描述了本发明的若干示例性实施例,不过本领域技术人员可以理解的是,在不偏离本发明原则和精神的前提下,可以对这些实施例进行改变,本发明的范围由权利要求书及其等价变换所限定。