专利名称:基于软件的微处理器功率损耗控制的制作方法
技术领域:
本发明通常涉及集成电路中的功率损耗控制,例如,应用于低功率和其它对功率敏感的应用。
对许多集成电路(IC)或芯片来讲,功率损耗往往是首要的设计约束条件。例如,集成电路越来越常在各式各样的便推式及其它靠电池供电的的应用中使用,例如在移动电话和其它无线通信装置、便携式计算机、手持设备和游戏控制台等等。此外,即使在非可移植的对电池寿命不关心的应用中,集成电路也可能对过热敏感,其结果是或者需要昂贵的和/或庞大的冷却组件,或者降低了集成电路可靠性。由IC所消耗的功率的量在电子器件的电池寿命和发热性这两个方面扮演了重要的角色。
此外,因为IC变得更加复杂,具体表现为更快的时钟频率和更大量的晶体管,相应增加由这些IC消耗的功率的量。因此,一项重要的研发计划已经开始针对降低IC的功率损耗进行。
一些已经有针对性的研究计划,例如,减少IC中的各个晶体管的功率损耗,例如,通过改变晶体管布局和/或减少供电电压。在某种程度上,对晶体管的设计进行修改和对功率电压电平的降低了已经对功率损耗中的增加进行了补偿,这是由于使用了更加复杂和更高性能的IC而导致的。然而,对很多功率敏感应用来说,需要进行其它精简。
例如一些IC,诸如在移动式应用中使用的微处理器,利用电压和/或频率标准变化来减少供电电压和/或时钟频率,从而减少总的功率损耗。然而,这种精简一般应用于宽IC(IC-wide),并且伴随有在处理性能方面的相应精简。
其它设计可以包括睡眠模式,该睡眠模式响应一个特定的命令或指令,或诸如外部中断的事件,使IC处于低功率状态。例如,一些微处理器支持的WAIT或HALT指令,它们将整个微处理器设置在一个低功率的睡眠模式。然而,当处于这种模式的时候,在微处理器中所有的有效处理活动一般都暂停,直到通过中断或其它触发事件再次将微处理器唤醒。
在另外的设计中,IC可能具有不同的电路,这些电路能够在它们没有被使用的时候可选择地被禁止,从而减少总的功率损耗。通常,这种电路可以响应特定指令的执行,有选择地被启动或禁止,所述的指令是针对相关的计算机程序的执行,特别是对于包括某种处理器或处理核心形式的IC。
例如,一些低功率微处理器设计允许通过路由特定的“掉电”指令到各个功能单元,这些专用功能单元可以有选择地被禁止。在计算机程序的编译期间,通过编译器插入掉电指令,这样在由微处理器执行的计算机程序执行期间,将通过各个功能单元处理指令。然而,这样一个方法的缺点是,将各个指令发送到特定的功能单元占用了该功能单元的处理资源,因此降低了该功能单元的可用性,以及其它处理器流水线的可用性,以便处理其它的产生的计算操作。
与上述掉电指令有关的是使用了控制位,控制位与通过微处理器处理每个指令关联,并且动态地控制微处理器中的每个功能单元的状态的启动。然而,在这类设计中,需要对每个指令的常数指令进行解码,可以对通过有选择地禁止各个功能单元获得的一些功率损耗减少进行补偿。此外,响应一个控制位的特定的组,禁止或启动一个特定的功能单元所需要的时间可以限制微处理器的合理的工作频率,从而限制微处理器的综合性能。此外,对每个指令的控制位的增加加大了代码的尺寸,因此增加了存储需求,或降低了所支持的不同的指令的数量。
上述基于控制方案的指令的另一个缺点是,它们经常局限于对微处理器中的功能单元进行控制。当功能单元,如执行单元、运算逻辑单元、浮点单元、定点单元等等时,可以对微处理器中的总体功率损耗提供有效的作用,大多数的设计包括大量的附加电路,例如,缓存、寄存器堆等等,还影响到功率损耗,但是不由上述控制方案阐明。
其它的设计可以包括多个指令集,这些指令组支持微处理器的不同功率操作。通常,在这样的设计中,一个指令集可以完全使用一个微处理器,因此另一个指令集可以仅仅使用微处理器的一部分,因此减少了功率消耗。然而,这个方法的一个缺点是,仅仅例如完全或有限地支持有限的处理器应用模式。此外,增加了代码的复杂性、和由此而导致的处理器中的解码逻辑的复杂性,这又能增加功率损耗。
在相关领域的发展中,可以利用程序的多个版本支持不同的功率损耗能力。然而,存储程序的多个版本需要使用运行时调度程序,该调度程序根据当前的功率需要选择用于执行的代码版本,并且存储多个代码版本需要更多的程序存储器和调度程序的执行,这可进一步导致功率损耗。
对于在IC中有选择地启动各个电路,可以使用禁止这些电路的各种的方式,从而最小化它们的功率消耗。例如,经常使用时钟选通器禁止电路的时钟,有效地限制电路中晶体管的切换,因为在晶体管中经常进行状态切换占了电路中功率损耗的最大部分。
对于微处理器中的功能单元,禁止的另一个方式是停止对电路的功率供应。另一个方式是使电路的输入信号无效。
同时,对于其它的电路,比如在动态随机存取存储器(DRAM)装置中使用的存储器阵列,可以有选择地断开时钟信号和读出放大器,以禁止阵列中的储存单元的存储体,从而减少整个阵列中的功率损耗。
尽管已经产生了与例如微处理器等的IC中的控制功率损耗相关的显著增益,但是在本领域,仍然需要继续进一步完善本领域。
例如,在IC中的有选择地禁止电路的程序控制的方面,仍然需要有有选择地禁止电路方式,该禁止电路与由传统的电路控制方案支持的电路相比,具有更大的粒度和灵活性,以及更少开销。
本发明将对这些及其它的现有技术有关的问题进行阐述,这是通过提供电路方案、利用功率控制指令的执行程序代码的方法和生成程序代码的方法来完成的,在处理器执行程序期间,功率控制指令能够动态地控制多个硬件资源的功率损耗。此外,被设置为处理这种功率控制指令的处理器控能够将多个硬件资源的功率模式保持在以前处理的功率控制指令指定的状态,这样,在将多个硬件资源的功率模式设置为由以前处理的功率控制指令指定的状态时,将处理后续要处理的指令。
本发明的这些及其它优点和特征,将在所附的权利要求中阐述并且作为在本文中的进一部分。然而,为了更好的理解本发明,应该参考附图,和相关的描述的内容,通过使用它获得的优点和目的,在这里本发明还描述了典型实施例。
图1是按照本发明的一个媒体处理器的方框图,该媒体处理器包括动态的功率损耗控制电路。
图2是涉及图1中的中央处理器的方框图,包括一个按照本发明的动态的功率损耗控制电路。
图3是涉及图2中的寄存器堆的方框图,包括用于有选择地禁止寄存器的存储体的启动逻辑。
图4是用于一个功率控制指令的典型的指令格式的方框图,该功率控制指令适用于控制图1的媒体处理器中的功率损耗。
图5是说明按照本发明的功率损耗优化例程的程序流程的流程图。
图6是说明由图1的媒体处理器处理的典型的程序的方框图。
图7是针对图2所示的寄存器堆中控制功率损耗的另一个方式的方框图。
按照本发明的动态功率损耗控制可以包括两个概念中的一个或两个,这两个概念提供了比传统的功率损耗控制技术多很多的优点。第一个概念只能应用于对由一个由处理器或处理芯使用的寄存器堆进行功率损耗控制。按照本发明,将寄存器堆分割为多个寄存器的存储体,寄存器的每个存储体包括时钟、数据和地址输入线。启动逻辑连接到这样的寄存器堆,以便为在寄存器堆中未使用的寄存器的存储体,有选择地断开或禁止时钟、数据和地址输入线。
第二个概念更广泛地应用在集成电路中控制功率损耗的基于软件的方式中,所述的集成电路包括一个处理器或其它的处理软件指令的可编程电路。特别是,与由处理器执行的程序代码组合的功率控制指令,用于控制多个硬件资源的功率模式,也就是有选择地被设置为两个或更多功率模式,每个硬件资源模式对于硬件资源具有一个特定的功率消耗状态。
每个功率控制指令包括在操作数中处理的功率控制信息,该功率控制信息能够设置多个硬件资源的功率模式。此外,一旦由特定的功率控制指令设置了功率模式,所设置的功率模式在后继指令的处理期间由处理器使用,例如,在由另一个功率控制指令、或一个特殊事件(例如外部中断)重新设置功率模式之前。
每个概念都将结合处理器集成电路的典型实施例的说明更加详细的被描述,该处理器集成电路使用了寄存器堆的基于软件的功率损耗控制。然而,在讨论这些特定的实施例以前,下面详细描述一下典型的硬件和软件环境。
参看附图,其中在几个图中,相同的数字表示相同的部分,图1示出了数据处理系统10的典型的硬件和软件环境,包括一个实现按照本发明的动态功率损耗控制的媒体处理器12。例如,媒体处理器12可以被实现为可从PhilipsSemiconductors中获得的PNX1300系列TriMedia兼容的媒体处理器,或例如Equator MAP1000、TITMS320C6xxx、BOPS ManArray等等的其它媒体处理器体系结构。媒体处理器12是一个系统芯片内(SOC)集成电路装置,该装置包括一个通过内部总线16连接到多个合并到相同集成电路装置中的附加电路组件的中央处理器(CPU)或处理核14。
例如,CPU14可以实现为例如VLIW处理器芯,例如包括32位地址空间,和包括128个32位的通用寄存器的寄存器堆。处理器核包括可通过五个发行时隙访问的27个功能单元、以及16KB数据和32KB指令高速缓存,所述功能单元具有双端口的数据高速缓存,并具有两个与64字节块大小相关的8路线组的高速缓存。
当外部总线接口块24实现由外围总线22(例如PCI总线)到外部的外围组件的连接性时,由通过主存储器输入/输出接口块20访问的外存储器18(例如SDRAM存储器)提供处理器12的工作存储器。
为了支持各种不同的媒体处理功能,媒体处理器12包括各种特定的媒体处理电路,包括视频输入/输出块26、28;音频输入/输出块30、32;SPDIF输出信息组34;I2C接口块36;同步的串行接口块38;图像协处理器块40;DVD反倒频器(DVDD)块42;可变长度解码(VLD)协处理器块44;和计时器块46。
现在转到图2,CPU14进行详细说明,如图所示,包括总线接口单元组件(BIU)50将内部总线16连接到指令高速缓存52和数据高速缓存54。将来自指令高速缓存52的指令提供给一个或多个指令译码器56,将指令输出到一个或多个功能单元58,例如各种的运算逻辑单元、浮点单元、子字并行多媒体操作组件、负载/存储单元、SIMD多媒体操作组件、矢量多媒体操作单元组件、乘法器、分支单元等等。如上所述,CPU14可以支援VLIW指令,从而当处理VLIW指令时可以使用多指令时隙(例如五个),以便同时路由被编码成为VLIW指令的多重操作到多功能组件。
CPU14通常作为一个加载/存储体系结构被实现,由此功能单元58访问包括128个32位通用寄存器的寄存器堆60。附加支持的寄存器是程序控制和状态字(PCSW)寄存器61,该寄存器用来设置CPU的各种结构配置,例如,关于浮点操作、字节性别(byte sex)(高/低端在前格式)、中断启动、异常等等。为了提供按照发明的动态功率损耗控制,CPU14还包括功率控制电路62,其中描述了一个支持寄存器64,在此称为功率模式寄存器,其中存储了媒体处理器12中各种硬件资源的功率模式状态信息,这些资源能够有选择地被禁止,以便最小化在媒体处理器中的功率损耗。在一些实现中,可能希望同时支持在PCSW中的功率模式状态信息的存储或在CPU中的另一个支持寄存器,从而功率模式状态信息与其它独立于功率损耗控制的状态信息结合损耗。
功率控制电路62控制整个CPU14的功率损耗,在媒体处理器12以外的地方是可选的,控制是通过确定一个或多个启动信号66,以启动嵌入在CPU14和/或媒体处理器12中的各种的硬件资源中的逻辑。在本文中,实际上硬件资源可以代表集成电路中的任何可以实际上和/或希望禁止的电子电路,所述的禁止是为了减少集成电路中的功率损耗。在CPU14中,例如BIU50、高速缓存52、54、指令译码器56、功能单元58和寄存器堆60都作为能够有选择地被禁止的硬件资源,根据每个相应块上存在的启动逻辑(通过参考标记″E″标志)来进行说明。
在示出的实施例中,响应存储在功率模式寄存器64中的功率模式状态信息,功率控制电路62有选择地确定启动信号66。在寄存器64中设置这些状态信息,以响应嵌入到由CPU14执行的程序中的功率控制指令。这些功率控制指令通常由指令译码器56解码,并且用于以几乎与其它的传统的现有技术中使用的普通的寄存器存储指令相同的方式更新功率模式寄存器64。
应当理解的是,启动信号66可以用来完全地启动/禁止整个块或硬件资源,也可以用来仅启动/禁止这些块/资源的一部分,和/或从这样的块/资源的全部或一部分的多个有效的功率消耗状态中选择。例如,硬件资源可以支持多于两个的功率模式,例如,睡眠或完全关闭模式、两个或更多低功率或节能模式、和满功率模式。在图2中,虽然为每个启动信号66示出了一个线,应当理解的是,可以使用多个信号通路,用不同程度的粒度有选择地启动每个硬件资源部分。同时,应当理解,损耗硬件资源可实际地使用任何在本领域中已知的节能或功率消耗减少技术,只要这样的技术能够有选择地在这里描述的功率控制电路的控制下启动。
在以下论述的实施例中,例如,可以控制诸如寄存器堆的硬件资源,以便通过将寄存器堆组织成为多个寄存器存储体而减少功率损耗,这些寄存器存储体可以相应地通过响应处理器执行的程序中的功率控制指令有选择地被禁止。在这点上,可以将每个寄存器存储体本身认为是代表一个单独的硬件资源。
在被说明的实施例中,每个寄存器组使用启动逻辑,启动逻辑不但断开时钟信号,而且断开到每个被禁止的寄存器存储体的地址和数据输入。这点在下面将变得更明显,因为与通用寄存器有关而使用的CMOS锁存器或触发器通常受到更高布线能力的影响,一起断开时钟、地址和数据输入信号通常能够提供最好的节能效果。然而,在按照本发明的一些实施例中,也可以使用禁止寄存器堆的其它方式。
此外,当功率控制电路62在CPU14中用来控制硬件资源单独处理时,应当理解,按照本发明,可以使用功率控制电路控制其它的硬件资源,包括例如在相同集成电路的其它地方处理的资源(例如,在图1所示的所有功能块的全部或部分),以及在另一个集成电路上处理的硬件资源。按照本发明的功率控制电路可以用来控制功率损耗,事实上,与多种硬件资源有关,包括例如寄存器堆、存储器、高速缓存、协议时隙、总线、功能单元、功能块、10pads或插脚、缓冲器、指令排序逻辑、嵌入式字段可编程门阵列(FPGA)、协处理器或几乎所有类型的电子电路,它们能够被禁止和/或能够设置为一种具有减少功率损耗级的状态。此外,可以认为上述任意电路包括多个可单独可控的硬件资源,例如,这样的电路的各个部分可以有选择地被禁止(例如,寄存器堆中的各个存储体或寄存器、高速缓存的各个集合、总线中的各个线路或线路组等等)。
此外,当示出的功率控制电路62在CPU14中被处理时,应当理解,从功能上可以将功率控制电路单独从CPU或其它的处理核分离出来。通常,在不同的实施例中,在集成电路上分配功率损耗控制功能的特定方式可以不同,因而,本发明不仅限于在此论述的特定的执行过程。
作为附加内容,在此处举例来提供媒体处理器中的功率控制电路62的实现。功率损耗控制,特别是,以下描述的功率控制指令的用途,可在按照本发明可以在多种集成电路中广泛地使用。例如,与各种处理器结构有关的功率控制指令都可以使用,包括VLIW、EPIC、RISC、CISC、DSP、超标量等等。此外,本发明不仅限于在SOC结构或与其它支持电路集成的处理核的其他结构中使用。
在许多情况下,因功率损耗降低得到的显著优势是通过VLIW、EPIC超标量或其它的宽协议结构而实现的,在这些结构中,在程序执行期间一直并行硬件资源利用不足,,因为时常利用不足的并行硬件资源,按照程序应用需求,可以有选择地被禁止。然而,本发明不仅限适用于宽-协议结构等等。
通常,应当理解在此讨论的任何基于硬件的功能都能在一个电路布置中结合一个或多个集成电路实现,并且选择性地包括附加的支持电子组件。此外,如本领域公知的技术那样,通常利用一个或多个在此成为硬件定义程序的计算机数据文件设计和制造集成电路,在此计算机数据文件定义了装置上的电路布置的布局。通常通过设计工具产生程序,随后在制造期间用来创建布局模板,该设计屏蔽定义了应用于半导体片的电路布置。通常,利用例如VHDL、verilog、EDIF等等硬件定义语言(HDL)以预先确定的格式提供程序。本发明将在下文的电路布置中,以将全部功能集成在一起的电路和使用该电路的数据处理系统中实现,,本领域的普通技术人员应当理解,按照本发明的电路布置还能够以各种形式的程序产品的形式分发,本发明的应用是相同的,与实际上执行分发的特定类型的信号媒体无关。信号承载媒体的例子包括但是不仅限于可记录类型的媒体,尤其例如易失和非易失性存储器装置、软盘及其它活动磁盘、硬盘驱动器、磁带、光盘(例如,CDROM、DVD等等),和传送类型媒体,例如数字和模拟通信链接。在按照本发明的一些实施例中,其它的集成电路技术,例如FPGA等等也可以用来实现一些在此讨论的基于硬件的功能。
如上所述,可以通过嵌入在由CPU14执行的程序中的功率控制指令控制功率控制电路62。这些功率控制指令可以由程序设计器产生,或可以通过编译器、连接程序、佳化器等等以自动方式被增加到程序中。此外,这样自动附加程序控制指令通常发生在运行时之前,在一些实施例中,可以使用程序控制指令的运行时附加,例如关于准时编译/优化或运行时解释/指令译码。
与特定方式的实现无关(即,在运行时之前或在运行时期间、在编译器或佳化器中等等),程序控制指令的自动附加通常利用一个或多个将在下面进行详细说明的例程而实现。这些例程,无论是否是在操作系统或在特定的应用程序、组件、程序、对象、模块或指令序列乃至它们的子集中实现,在此都成为″计算机程序代码″或简单地为″程序代码″。程序代码通常包括一个或多个在不同时间驻留在计算机或数据处理系统中的各种存储器和存储设备中的指令,当通过计算机中的一个或多个处理器读取和执行的时候,使计算机执行体现本发明不同特征的执行步骤或单元所必需的步骤。此外,与本发明基于软件的方面和计算机和数据处理系统将在下文描述,对本领域的技术人员来讲,应当理解本发明的不同实施例都能够以各种程序产品的形式分发,本发明的应用是同样地,与实际上执行分发信号承载媒体的特定类型无关。
此外,可以基于本发明的特定实施例中实现的应用确定以下描述的不同程序代码。然而,应当理解的是,下述任意特定程序术语仅仅是为了方便而使用,本发明不仅限于由这些术语标识和/或表示的特定的应用。此外,通常给出的循环编号的方式,其中计算机程序可以组织成例程、程序、方法、模块、对象等等,而且不同的方式中的程序功能可以被分配在不同的软件层中,也就是说驻留在一般的计算机(例如操作系统、库、API、应用程序、小应用程序等等)中,应当理解,本发明不仅限于在此描述的程序的特定的组织和分配。
本领域的普通技术人员应当认识到本发明不仅限于图1和2所示的典型的环境。实际上,本领域的普通技术人员应当理解,在不脱离本发明的范围的情况下,可以选择使用其它的硬件和/或软件环境。
如上所述,按照本发明的动态功率损耗控制可以包括两个概念中的一个或两个,这两个概念提供了优于传统的功率损耗控制技术的实质性优点。第一个概念专门应用于,实现对一个由处理器或处理核使用的寄存器堆进行功率损耗控制。第二概念更广泛地应用在集成电路中用软件控制方式控制功率损耗。为了便于更透彻地理解这些概念中的每一个,下面连同图3-6对结合两个概念对典型的实施例进行说明。然而应当理解,以下讨论的两个概念可以分别地和独立地在其它的实施例中使用,本发明不仅限于以下讨论的特定的执行过程。
特别地,在图3-6对在TriMdeia兼容的媒体处理器中使用的寄存器堆中对功率损耗的基于软件的控制进行说明。已经发现,例如,在许多可编程结构(例如VLIW、EPIC、和超标量)中,寄存器堆占整个功率消耗的很大部分。在一些应用中,已经发现寄存器堆可以达到处理核功率消耗的20%。特别是在媒体处理器中,寄存器堆通常比较大,并通常包括许多端口和寄存器。一些TriMdeia兼容处理器,例如利用具有128个寄存器和20个单独端口的寄存器堆。寄存器堆设计主要是配线,所以相对功率损耗随技术规模而增加。因而,减少寄存器堆中的功率损耗通常导致大量节省媒体处理器中的能量耗费。
已经发现在任何可编程结构中的寄存器堆的大小通常由应用程序确定,该应用程序需要很高的活性变量,其通常存储在寄存器堆中。然而,当执行只需要较少活性变量的其它应用程序时,寄存器堆中的许多寄存器仍然未被使用。此外,在特定的应用程序中,在应用程序中寄存器堆的应用可以在不同的点完全不同。举例来说,已经发现在AC3解码期间,TriMdeia兼容的媒体处理器具有比较高峰值的寄存器利用率,而在一般的应用程序中的其它操作的性能期间,平均寄存器利用率通常相对较低。从而,人们相信,依靠运行应用程序的当前需求,也许非常希望禁止未使用的寄存器堆部分,以便减少它的整体功率损耗。
如图3具体所示,有选择地禁止寄存器堆的一部分的一个方式是通过沿着地址空间将寄存器堆(这里图2的寄存器堆60)分割成为几个存储体70,然后有条件地启动或禁止这些存储体,例如通过功率控制电路62(图2)响应提供给存储体的启动信号66。
每个存储体70可以包括多个寄存器,因此由寄存器堆代表的寄存器空间被分割成为寄存器存储体。例如,对于包括128个寄存器的寄存器堆,也许希望将寄存器空间分割成为每16个寄存器的八个存储体。也可以使用其它的分割寄存器方式,举例来说,也许希望利用最高有效地址输入作为存储体选择信号,并且利用最低有效地址输入从被选择的存储体中选择一个特定的寄存器。例如,寄存器堆被分割成为16寄存器的八个存储体,可以使用七个地址输入,用三个高位输入作为存储体选择信号,四个低位输入作为寄存器选择信号。
作为本领域的公知常识,寄存器堆60包括输出选择逻辑72,和不同的输入,例如时钟输入74、地址输入76和数据输入78。此外,寄存器堆60通过数据输出80输出数据。应当理解,根据由寄存器堆支持的输入/输出端的数量,以及寄存器的数量和每个寄存器的宽度,可以将各种不同的地址输入、数据输入和数据输出信号提供给寄存器堆。此外,还可以通过多个功能单元使用输入选择逻辑(未示出)来支持多个寄存器的并行访问。
为了有选择地禁止寄存器的存储体,通过在每个存储体中处理的启动电路82将时钟、地址输入、输入数据提供给每个存储体。此外,将来自功率控制电路的启动信号66附加地供应给每个启动电路82,以便有选择地为相关的寄存器存储体70断开或保护时钟、地址输入和数据输入。
按照本发明,可以以许多方式实现每个存储体中的启动电路82。例如,一个实现启动电路的方式是通过使用一系列选通晶体管,用一个这样的连接每个时钟、地址输入和数据输入的晶体管到寄存器存储体,并且由寄存器存储体各个的启动信号66选通。
通过断开到每个存储体的地址和数据输入,而不仅仅是时钟输入,通常获得了由于与CMOS锁存器或触发器(合成的)寄存器执行过程有关的相对高的电线电容相对更大的节能效果,因为选通通常在寄存器堆存储体中使用相对长的电线上抑制切换活动。然而应当理解,在一些实现中,附加的选通逻辑可能引入附加的延迟,从而在较小的范围抑制性能。此外,应当理解,本发明可以利用不同的寄存器实现方式与被实现的寄存器堆结合使用。
为了实现对寄存器堆60的基于软件的功率损耗控制,在CPU14的指令集结构中支持功率控制指令。图4中的90说明了一种用于功率控制指令的典型格式。如图所示,功率控制指令90可以包括将指令确定为pwr_control指令的操作码92,和指定功率控制信息的操作码94,用于对寄存器堆60中的各种寄存器存储体设置功率模式。操作码94可以被实现为,例如一个包括一个位屏蔽的立即操作数,位屏蔽包括分配给寄存器堆中的每个寄存器的存储体的启动/中止位96。从而,例如对于寄存器堆中的八个存储体,指令90中可以支持八位立即操作数。
在更一般水平,可以用下述公式表示操作数94的大小Σi=1jlog2(Modes(i))]]>其中i是将被控制的硬件资源(这里为寄存器存储体)的数量,Modes(i)是硬件资源i的功率模式的数量。
在其它方案中可以使用其它的指令格式。例如,如图4所示,可能希望支持任意标识一个寄存器的源寄存器操作数97,在该寄存器中,功率模式状态信息已经被存储。从而,并不是直接将功率模式状态信息存储在功率控制指令中并且执行立即操作,而是可以用寄存器操作将功率模式状态信息存储在单独的寄存器中,该寄存器操作用于检索期望的功率模式状态信息。在其它方案中可以支持其它的编址方式。
如图4所示,可能还希望支持保护操作数98,该操作数可以用来指定,在提供由应用的功率控制指令指定的该功率模式状态信息之前必须满足的情况。按照本发明,实际上可以使用任意已知条件。
回到图2,在对实施例的说明中,通过CPU14处理功率控制指令,以便用功率控制指令中指定的功率控制信息更新功率模式寄存器64。这样,可能希望功率模式寄存器64具有与功率控制指令的立即操作数相同的映射,因此可以简单地将功率控制指令作为直接写入功率模式寄存器那样处理。
此外,如上所述,在有些情况下也许希望利用之前存在的寄存器,例如PCSW寄存器来存储功率模式状态信息。在这样的情况,功率控制指令不需要单独的操作码。反之,用于向适当的寄存器写入的先前存在的操作码可以与更新那些与存储功率模式状态信息一同使用的位的操作数一起使用。
按照本发明,功率控制指令可以以许多方式与可执行程序代码结合。例如,可以在研发期间由程序设计器将功率控制指令增加到源代码。在另一个方案中,编译器、优化器、连接程序等等,可以执行正在研发中的程序的模拟或静态分析,以便确定适当的位置,用于基于预测的资源利用率插入功率控制指令。
此外,配置、静态分析或程序的模拟可以用来确定在某些程序段间应该使用哪个硬件资源,以及哪个资源应该禁止。例如,如果确定某个程序段只需要10个寄存器,但是使用哪10个寄存器对程序语义不重要,也许编译器希望使用仅来自寄存器存储体的寄存器,然后将适当的功率控制指令插入到程序代码里,以便禁止未使用的寄存器存储体。此外,如果那10个寄存器最初分散在几个寄存器存储体中,也许所希望将寄存器重新映射,以便将寄存器集中在有限数量的寄存器存储体中。
例如,图5示出了可以在计算机程序的编译或优化期间执行的功率损耗优化例程100,以便为最佳的功率损耗佳化一个计算机程序段。针对每个指定的程序段,例程100首先分析该段,以便通过块102中的程序代码段确定硬件资源用途。接下来,选择性地执行块104,以便试图重新映射资源,从而将资源使用集中到硬件资源的有限集(例如,将寄存器限制到有限数量的寄存器存储体)。接下来,块106产生适当的功率控制指令,并且将该适当的功率控制指令插入到程序代码里,以便禁止任意未用资源。然后完成对该段的处理。
可以在运行时期间例如连同解释或准时编译使用例程100,或与其在功能上相似的例程。此外,应当理解例程100可以与指令的产生相结合使用,指令在运行时期间被调度,以便并行和/或无序操作,例如,在超级标量处理器结构中。在这样的执行过程中,编译器和运行时硬件希望限制功率控制指令的重新排序,以便最小化对其它推测指令的影响,例如,通过将边界效应分配给限制它的运行时推测的功率控制指令。在其它的实施例中,如果CPU/处理器没有完全地被计算负载,操作系统可以调度/发出功率控制指令。
在另一个方案中,例程100可以与明确地并行于例如VLIW或EPIC代码的指令集结构结合使用,其中在编译期间检测出现的并行指令。在这样的实现中,认为功率控制指令的插入可以包括将功率控制操作插入到包括多重操作的大VLIW或EPIC指令里。
程序代码希望包括程序控制指令,在编译期间或在运行时期间已经将功率控制指令嵌入到所述的程序代码,所述的程序控制指令散布在程序代码中,此时希望在硬件资源利用率方面发生变化。此外,通常希望一个功率控制指令就能够控制多个硬件资源的启动/禁止状态。因此,最小附加处理的开销通常与按照本发明的功率控制指令有关,从而将由于将附加指令插入到程序代码里而产生的任意相反的性能效果最小化。
例如,图6示意地所示以如所述的方式编译的典型程序段的执行,例如,就如与TriMdeia兼容的媒体处理器结合使用那样。在这个例子中,假定有五个发出时隙,被指定为110、112、114、116和118,在那个周期的相应的发出时隙的每个周期(周期0-4)期间,在每个发出时隙中执行指令。还假定寄存器堆包括分割成为八个存储体的128寄存器(表示为r0-r127),以及当在与存储体有关的操作数位屏蔽位置遇到二进制″1″的时候,功率控制指令在启动选择的存储体的位置使用立即操作数。在这个例子中,pwr_control指令的延迟是一个周期;然而,应当理解,在一些执行过程中,pwr_control指令可以具有大于一个周期的延迟。
在周期0期间假定,通过CPU(在发出时隙112中)处理的一个指令是一个具有0x1b(二进制00011011)的立即操作数的功率控制指令,其仅启动了寄存器堆(例如寄存器r0-r31和r48-r79)的存储体1、2、4和5。作为这些指令的执行结果,更新功率模式寄存器64(图2),以便存储0x1b(二进制00011011)值。结果,在后来的周期期间,禁止寄存器存储体3、6、7和8。然而注意,在周期0中的功率控制指令的执行期间,对于通过其它的指令访问来说,全部寄存器存储体都是可用的(假定全部存储体在以前已经启动)。
在周期1和2期间,没有遇到其它功率控制指令。结果,寄存器存储体3、6、7和8仍然是禁止的,限制全部指令访问来自存储体1、2、4和5(r0-r31和r48-r79)的寄存器。
在周期3期间,存储在功率模式寄存器64中的功率模式状态信息继续将寄存器存储体3、6、7和8保持在禁止状态。然而,在这个周期期间(向发出时隙118发出)执行的一个指令是功率控制指令,该功率控制指令具有一个0xff(二进制11111111)的立即操作数,它可以启动在周期4执行的指令的全部八个寄存器堆的存储体。
上述的动态功率损耗控制技术与传统的设计相比有许多优点。根据控制具有最小处理开销的多种硬件资源,同传统的设计相比较,提供了显著的灵活性,传统的设计需要指令被路由到特定的功能单元,或需要启动/禁止将被附加到每个指令的命令,并且被不断地解码。
此外,上述的技术提供了灵活性,以解决各种功率损耗相关的问题,从而以多种有效的方式适当地平衡了特性和功率损耗。例如,利用上述的技术,可以例如通过增加寄存器或功能单元来提升处理器性能,而不用增加对没有使用的额外的资源的代码的功率损耗。此外,对于性能不是很重要的应用,功率控制指令可以牺牲性能来降低功率消耗,例如为操作调度有限的资源,同时禁止其它的资源。
就基于软件的功率损耗控制而言,应当理解,按照本发明的其它的实施例中也可以使用其它的指令格式、其它的编译、优化和/或进度例程、和其它的处理器结构。此外,如上所述以外的资源禁止电路,以及在此说明的存储体寄存器堆设计可以与按照本发明的基于软件的功率损耗控制结合使用。
此外,就在此处说明的存储体寄存器堆设计而言,应当理解,按照本发明可以使用在此处说明的基于软件的控制机制的之外的其它控制机制。例如,基于硬件的控制机制可以用来动态地启动某些基于读取/写入地址的动态解码的硬件资源。举例来说,图7描述了另一个,与图3的寄存器堆60相似的寄存器堆设计120,包括多个寄存器存储体122,其每一个包括用于有选择地断开提供给寄存器堆的时钟输入126、输入数据输入128和输入地址输入130的选通逻辑124。然而,寄存器堆120没有来自基于控制电路的软件的启动信号,寄存器堆120包括基于硬件的启动逻辑电路132,包括用于动态产生各个存储体启动信号136的地址译码器134,该启动信号136用于有选择地禁止不同的未使用的寄存器存储体。
例如,在任意周期期间,地址译码器134可以有选择地禁止寄存器存储体,在这任意周期中,所述存储体中的寄存器不正在被访问。特别是支持多输入端口的寄存器堆,在给定周期期间很容易确定正在访问哪个寄存器,从而能够有选择地减少功率损耗,而在由特定的处理器设计使用的编译器和/或指令集结构中没有任何改变。
对本领域的普通技术人员来讲,在属于上述公开范围内的各种补充修改是显而易见的。因此,本发明限于以下附加权利要求中。
权利要求
1.一种电路装置,包括(a)多个硬件资源,其中每个硬件资源具有一个在至少第一和第二功率消耗状态之间可设置的功率模式;(b)一个连接到多个硬件资源的处理器,处理器(14)被设置为处理程序代码,该程序代码包括至少一个功率控制指令(90),该指令(90)包括具有在其中被处理的功率控制信息的操作数,其中处理器(14)被设置为通过基于在功率控制指令中被处理的功率控制信息有选择地设置的多个硬件资源当中的至少两个硬件资源(50-60)的功率模式来处理功率控制指令,并且其中处理器更进一步被设置为,当处理至少一个在程序代码中的后继指令时,将至少两个硬件资源的功率模式保持为功率控制指令中指定的模式。
2.如权利要求1的电路装置,其中所述的功率控制指令更进一步包括唯一标识功率控制指令的操作码(92)。
3.如权利要求1的电路装置,更进一步包括(a)一个支持寄存器,该支持寄存器存储多个硬件资源的功率模式状态信息;(b)连接到支持寄存器的启动逻辑,并且被设置为响应存储在支持寄存器中的功率模式状态信息,对多个硬件资源的功率模式进行控制,其中处理器(14)被设置为通过存储来自支持寄存器中的功率控制指令的功率控制信息有选择地设置至少两个硬件资源(50-60)的能量模式。
4.如权利要求3的电路装置,其中所述的支持寄存器包括功率模式寄存器(64)。
5.如权利要求3的电路装置,其中所述的支持寄存器包括独立于功率损耗控制的附加状态信息。
6.如权利要求3的电路装置,其中多个硬件资源的子集包括定义寄存器堆(60)的寄存器(70)的多个存储体,其中启动逻辑(132)包括多个启动电路,其每一个与来自寄存器(70)的多个存储体的寄存器(122)的存储体有关,并且每一个被设置为响应启动信号(136)有选择地禁止它相关的寄存器的存储体,其中所述的启动逻辑更进一步被设置为根据存储在支持寄存器中的功率模式状态信息,为每个寄存器的存储体产生启动信号。
7.如权利要求6的电路装置,其中寄存器(122)的每个存储体包括至少一个时钟输入(126)、访问输入(130)和数据输入(128),并且其中寄存器的每个存储体的启动电路(136)被设置为响应提供的启动信号(66),有选择地断开它相关的寄存器的存储体的时钟(74)、地址和数据输入。
8.如权利要求1的电路装置,其中每个硬件资源都是从由寄存器堆(80)、寄存器存储体(70)、寄存器、高速缓存(52)、总线接口单元(50)、总线(16)、功能单元(58)、功能块、指令译码器(56)组成的组中选择出来的。
9.如权利要求1的电路装置,其中处理器被设置为明确地处理并行指令,并且其中功率控制指令包括在在明确并行指令中的多个操作中的一个操作。
10.如权利要求9的电路装置,其中所述的处理器是从由VLIW处理器和EPIC处理器组成的组中选择出来的。
11.如权利要求1的电路装置,其中所述的处理器包括超标量处理器。
12.如权利要求1的电路装置,其中所述的处理器被设置为将边界效应分配给功率控制指令,以便限制它的运行时推测。
13.如权利要求1的电路装置,其中操作数中的功率控制信息可以识别存储了至少两个硬件资源的功率模式状态信息的寄存器,并且其中所述的处理器被设置为通过从由操作数中的功率控制信息标识的寄存器检索功率模式状态信息,有选择地设置至少两个硬件资源的功率模式。
14.如权利要求1的电路装置,其中在处理器中处理多个硬件资源。
15.如权利要求1的电路装置,其中至少一个硬件资源在处理器外但在与该处理器位于相同的集成电路中进行处理。
16.如权利要求1的电路装置,其中至少一个硬件资源在来自处理器的单独的集成电路上处理。
17.一种集成电路,包括权利要求1的电路装置。
18.一种程序产品,包括定义了权利要求1的电路装置的硬件定义程序,和承载硬件定义程序的信号承载媒体,其中所述的信号承载媒体包括传输介质和可记录的媒体的至少一个。
19.一种在包括多个硬件资源类型的处理器上执行程序代码的方法,每个硬件资源具有一个可在至少第一和第二功率消耗状态之间设置的功率模式,所述的方法包括(a)通过基于在功率控制指令的操作数中被处理的功率控制信息有选择地设置的多个硬件资源当中的至少两个硬件资源的功率模式来处理来自程序代码的功率控制指令(100,102)(b)当至少两个硬件资源的功率模式被设置为用功率控制指令的功率控制信息指定的模式时,处理程序代码中至少一个后来的指令(104,106)。
20.如权利要求19的方法,其中所述的功率控制指令更进一步包括唯一标识功率控制指令的操作码(92)。
21.如权利要求19的方法,其中所述的处理器包括一个支持寄存器,该支持寄存器由处理器中的启动逻辑使用,用于设置多个硬件资源的功率模式,并且其中有选择地设置的至少两个硬件资源的功率模式包括在支持寄存器中存储功率控制信息。
22.如权利要求21的方法,更进一步包括,处理第一个后继指令之后,通过在支持寄存器中存储在其操作数中处理的第二功率控制信息,来处理来自程序代码的第二个功率控制指令,从而改变第一硬件资源的功率模式,并且在处理第二功率控制指令之后处理第二后继指令,从而当将第一硬件资源的功率模式设置为第二功率控制指令中指定的功率模式时处理第二后继指令。
23.如权利要求21的方法,其中多个硬件资源的子集包括定义了寄存器堆的寄存器的多个存储体,其中启动逻辑包括多个启动电路,其每一个都与来自寄存器的多个存储体的寄存器的存储体有关,并且每一个都被设置为响应启动信号,有选择地禁止与它相关的寄存器的存储体,所述的方法更进一步包括根据存储在支持寄存器中的功率模式状态信息,为每个寄存器的存储体产生启动信号。
24.如权利要求23的方法,其中寄存器的每个存储体包括至少一个时钟输入、地址输入和数据输入,并且其中寄存器的每个存储体的启动电路被设置为响应提供的启动信号,为它相关的寄存器的存储体有选择地断开时钟、地址和数据输入。
25.如权利要求19的方法,其中每个硬件资源都是从由寄存器堆、寄存器存储体、寄存器、高速缓存、总线接口单元、总线、功能单元、功能块、指令译码器组成的组中选出来的。
26.如权利要求19的方法,其中处理器被设置为处理明确地并行指令,其中所述的功率控制指令包括在明确并行指令中的多个操作当中的一个操作。
27.一种生成由包括多个硬件资源类型的处理器执行的程序代码的方法,硬件资源的每一个具有可在至少第一和第二功率消耗状态之间设置的功率模式,所述的方法包括(a)分析至少一部分程序,以便在执行至少一段来自程序的程序代码期间由处理器确定多个硬件资源的利用率;(b)基于确定的多个硬件资源的利用率,将功率控制指令插入到程序里,所述的功率控制指令包括在其操作数中处理的功率控制信息,该功率控制信息指定了多个硬件资源当中至少两个硬件资源的功率模式,其中所述的功率控制指令被设置为在程序代码中的至少一个非功率控制指令之前执行,并且其中所述的程序代码被设置为使所述的处理器动态地为至少两个硬件资源设置在功率控制指令中指定的功率模式,因此当至少两个硬件资源的功率模式保持在功率控制指令指定的功率模式时,处理非功率控制指令。
28.如权利要求27的方法,其中在至少一个程序的编译和优化期间执行分析程序和插入功率控制指令。
29.如权利要求27的方法,其中由处理器执行的程序与分析程序和插入功率控制指令并发执行。
30.如权利要求27的方法,更进一步包括在将功率控制指令插入到程序里之前,将在程序中资源的使用固定到有限的硬件资源的子集。
全文摘要
在由处理器(14)执行的程序期间,一种利用功率控制指令(90)执行程序代码的方法以及生成程序代码的方法的电路布置,所述的控制指令(90)能够动态地控制多个硬件资源(50-60)的功率损耗。此外,处理器(14)被设置为处理这样功率控制指令(90),该控制指令(90)能够将多个硬件资源(50-60)的功率模式保持为之前处理的功率控制指令(90)中所指定的模式,这样,当多个硬件资源(50-60)的功率模式被设置为之前处理的功率控制指令(90)指定的功率模式的时候,处理随后处理的指令(90)。
文档编号G06F9/30GK1720495SQ200380105109
公开日2006年1月11日 申请日期2003年12月3日 优先权日2002年12月4日
发明者A·特雷奇科, M·加格 申请人:皇家飞利浦电子股份有限公司