减少微处理器的功率消耗的寄存器堆选通方法

文档序号:6422544阅读:181来源:国知局
专利名称:减少微处理器的功率消耗的寄存器堆选通方法
技术领域
本发明总地涉及对集成电路中的功率消耗的控制,例如,用于使用在低功率和其它功率敏感应用系统中。
对于许多集成电路(IC)或者“芯片”来说,功率消耗经常是首要的设计约束条件。举例来说,集成电路越来越多地使用在非常多种的便携式和其它由电池供电的应用系统中,诸如在移动电话和其它无线通信设备、便携式计算机、手持设备和游戏控制板等。此外,即使在非便携式的应用系统中,在该应用系统中电池的寿命可能并不重要,但是集成电路也易受到过热影响,这会需要昂贵的和/或体积庞大的冷却部件,或者减少IC的可靠性。IC的功率消耗量在电子设备的电池寿命和热产生中扮演着非常重要的角色。
此外,因为IC变得更加复杂,以及整合入了更快的时钟速度和更多的晶体管,这些IC的功率消耗量也相应成比例的增加。同样的,重要的开发任务就直接致力于减少IC的功率消耗上。
一些努力,举例来说,致力于降低IC中的单个晶体管的功率消耗,例如,通过更改晶体管的布局和/或降低电源电压。从某种程度上来说,对于晶体管设计的修改和对电源电压电平的减少抵消了使用更为复杂的和更高执行力的IC所产生的功率消耗。然而,对于许多功率敏感应用系统来说还需要额外的简化。
例如,一些使用在移动应用系统中IC,如微处理器,使用电压和/或频率缩放以减少电源电压和/或时钟频率,并且从而减少整体的功率消耗。然而,这样的减少典型地使用在IC范围内,并且伴随着在处理性能方面的相应减小。
其它设计可以加入休眠模式,其响应特定的命令或指令,亦或是诸如外部中断之类的事件而将IC置于低功率状态。例如,一些微处理器支持WAIT或HALT指令,这些指令可将整个微处理器置于低功率休眠模式。然而,当处于这样的模式中时,微处理器中的所有有效处理动作一般是处于停止状态直到微处理器被中断或其它触发事件再次唤醒。
在其它设计中,IC还可以有不同的电路,这些电路可以在它们不在使用时被有选择地禁止,以减少整体的功率消耗。典型地,上述电路响应特定指令的执行,被有选择地启动或禁止,其中的特定指令是与计算机程序相关联而发出的,特别对于加入了某些形式的处理器或处理核心的IC中。
例如,一些低功率微处理器设计允许通过发送特定的“功率降低”指令给单独的功能单元而将它们有选择地禁止。在对计算机程序进行编译期间,由编译器输入功率降低指令,以使得在微处理器执行计算机程序期间,将由单个功能单元处理这些指令。然而,上述方法的缺点是,向特定的功能单元发送单个指令会占用该功能单元的处理资源,并且从而对于其它处理其它产生性的计算操作降低了该功能单元的可用性,以及处理器剩余管线的可用性。
关于前述功率降低指令是使用控制位,该控制位与每个微处理器处理的指令相关联,动态地控制微处理器中的每个功能单元的启动状态。然而,在该类型的设计中,需要对每个指令的持续指令译码,这可以抵消一些由选择性禁止单个功能单元所获得的功率消耗的减少。此外,响应一组特殊的控制位而对特殊功能单元进行禁止或启动所需的时间可以限制微处理器的合理工作频率,从而限制微处理器的整体性能。此外,为每个指令增加的控制位增加了代码的尺寸,并从而增加了存储的需求量,或者减少了可以支持的不同指令的数量。
前述基于指令的控制方案的另一个缺点是它们常常受限于控制微处理器中的功能单元。当功能单元,例如执行单元、算术逻辑单元、浮点单元、定点单元等,确实为微处理器中的整体功率消耗提供了重要贡献时,大部分设计加入了大量的附加电路,例如,高速缓存、寄存器堆等,它们也会消耗功率,但是不会被前述控制方案访问到。
其它设计可以整合支持微处理器的不同功率工作模式的多指令组。典型地,在这样的设计中,一个指令组可能完全占用微处理器,而另一个指令组可能仅使用一部分微处理器,从而减少功率消耗。然而,该方法的一个缺点是仅支持有限数量模式的处理器利用率,例如完全的和受限的。此外,代码的复杂度增加了,因而处理器的译码逻辑的复杂度也增加了,这本身会增加功率消耗。
在开发的相关领域中,可以使用程序的多个版本来支持不同的功率消耗能力。然而,存储多个版本的程序需要使用运行时间调度程序,该调度程序根据当前的功率需求来选择用于执行的代码版本,而且存储多个版本的程序需要更多的程序存储和调度程序的执行,这都将进一步地增加功率消耗。
关于有选择地启动IC中的单个电路,可以使用禁止这些电路的各种方式,并从而将它们的功率消耗减少到最小。例如,时钟选通常常被用于禁止一个电路的计时,这可以有效地限制电路中的晶体管的切换,因为晶体管状态的切换常常会导致电路中最大数量的功率消耗。
对于微处理器中的功能单元,一种可选的禁止电路方法是切断对该电路的供电。还有一种可选择的方法是使得输入给该电路的信号无效。
同样的,对于其它电路,如使用在动态随机存取存储器(DRAM)装置上的存储器阵列,时钟信号和读出放大器可以被有选择地关闭以禁止在一个阵列中的存储单元的存储体,并且从而减少整个阵列的功率消耗。
尽管在对控制如微处理器之类的IC的功率消耗方面取得了重要收获,但是在该领域的进一步发展中不断存在需求。
例如,在有选择地禁止电路的领域,有待发展的一个潜在领域在于对与IC中的处理器或处理核心使用的和寄存器相关的功率消耗的控制。常常将寄存器组织成寄存器堆,并使用CMOS锁存器或触发电路来实施,它们均具有相当大的功率消耗特性。然而,在许多程序运行期间寄存器的利用率是相当低的,结果在IC的寄存器堆中形成了大量无用的寄存器在不必要地消耗功率。而在一些环境中希望能够禁止某些寄存器,禁止存储单元的传统方法,例如,如结合在DRAM等使用的那样,一般使用时钟选通和/或禁止读出放大器来禁止存储单元或存储单元的存储体。虽然上述技术可以被用来禁止寄存器堆中的寄存器,采用这样的技术所带来的功率消耗减少的程序是有限的。
本发明通过提供电路布置和控制寄存器堆的功率消耗的方法,解决了与现有技术相关的上述和其它的问题,其中的寄存器堆通过外加了启动逻辑的组合设计,从而具有功率消耗控制能力,该启动逻辑配置为由选择性断开向其提供的时钟、地址和数据输入来有选择地禁止未使用的寄存器存储体。特别地,寄存器堆中的寄存器被分割为多个存储体,启动逻辑能够有选择地禁止每个存储体,该启动逻辑选择性地断开对每个存储体的时钟、地址和数据的输入。
通过除提供给寄存器堆中的寄存器的不同存储体的时钟输入之外,还断开其地址和数据输入,可以获得比仅断开时钟输入更大的功率消耗的降低。此外,当使用由CMOS锁存器或触发电路制作的寄存器来实现寄存器堆时,其特性在于相对高的连线电容,功率消耗的减少也更为显著,这是因为在寄存器堆存储体内部的长导线上,选通方法一般禁止了切换的动作。
成为本发明特性的上述和其它优点和特征将在这里所附加的权利要求中说明,并形成一个延伸的部分。然而,为了更好的理解本发明,以及通过使用它而获得的优点和目的,将参照图以及所附的说明文字进行说明,其中描述了本发明的典型实施例。


图1是依照本发明的包括动态功率消耗控制电路的媒体处理器的方框图。
图2是图1所示中央处理单元的方框图,其中包括根据本发明的一个动态功率消耗控制电路。
图3是如图2所示寄存器堆的方框图,并且加入了用于有选择地禁止寄存器的存储体的启动逻辑。
图4是适于控制图1所示的媒体处理器的功率消耗的功率控制指令的示例性指令格式的方框图。
图5是说明依照本发明的功率消耗最佳例行程序的程序流程的流程图。
图6是说明由图1的媒体处理器对典型程序进行处理的方框图。
图7是图2所示的控制寄存器堆中功率消耗的替换方式的方框图。
依照本发明的动态功率消耗控制可以包括在传统的功率消耗控制技术基础上提供了实质性优点的两种概念中的任何一个或者两个。第一个概念单单应用在由处理器或者处理核心使用的寄存器堆的功率消耗控制的实施中。依照本发明,一个寄存器堆被分割成多个寄存器存储体,每个寄存器存储体包括时钟、数据和地址的输入线。启动逻辑耦合到上述寄存器堆上,以有选择地断开或者禁止寄存器堆中未使用的寄存器存储体的时钟、数据和地址的输入线。
第二个概念更通常应用于基于软件控制集成电路的功率消耗的情况,其中的集成电路包括处理器或者其它处理软件指令的可编程电路。特别地,加入由处理器执行的程序代码中的功率控制指令被用于控制多硬件资源的功率模式,其中的多硬件资源可被有选择地配置为两种或多种功率模式,硬件资源的每种模式具有该硬件资源的特定功率消耗状态。
每个功率控制指令包括在其操作数中布置的功率控制信息,该操作数能够设定多硬件资源的功率模式。此外,一旦由特定的功率控制指令设定了功率模式,在处理器处理后续指令期间将使用设定的功率模式,例如,直到由另一个功率控制指令或者特定事件(例如外部中断)重新设定了功率模式。
将会结合处理器集成电路的典型实施例的说明详细描述每个上述概念,其中的处理器集成电路使用了基于软件的寄存器堆功率消耗控制方法。然而,在讨论该特定实施例之前,将在下面更为详细地描述典型的硬件和软件环境。
转到附图,其中相同的附图标记表示相同的部件,图1说明了依据本发明的用于包括执行动态功率消耗控制的媒体处理器12的数据处理系统10的典型硬件和软件环境。媒体处理器12可以被实施为,例如,可从飞利浦半导体获得的PNX1300系列可兼容三媒体的媒体处理器,或者也可选择另一种媒体处理器结构,例如Equator MAP1000、TITMS320C6xxx、BOPS ManArray等。媒体处理器12是一种芯片上系统(SOC)集成电路装置,其包括通过内部总线16耦合到多个附加电路部件上的中央处理单元(CPU)或者处理核心14,该附加电路部件是合并到同一个集成电路装置中。
CPU14可以被实施为,例如,VLIW处理器核心,例如,合并有32位地址空间和包括128个32位的通用寄存器的寄存器堆。处理器核心包括27个功能单元,可通过五个发送槽以及16KB数据和32KB指令高速缓存来进行访问,其中的数据高速缓存是双端口的,并且两个高速缓存是与64字节块的大小相关联的8通道组。
处理器12的工作存储器由外部存储器18(例如,SDRAM存储器)来提供,该外部存储器可通过主存储器输入/输出接口块20来进行访问,而通过外部总线接口块24方便于外部外围部件在外围总线22(例如,PCI总线)上的连接。
为了支持各种媒体处理功能,媒体处理器12包括各种专业化媒体处理电路,包括视频输入/输出块26、28;音频输入/输出块30、32;SPDIF输出块34;I2C接口块36;同步串行接口块38;图像协处理器块40;DVD解密器(DVDD块42);可变长度译码(VLD)协处理器块44;以及计时器块46。
现转到图2,其中更为详细地说明了CPU14,并且示出其包括将内部总线16耦合到指令高速缓存52和数据高速缓存54上的总线接口单元(BIU)50。来自于指令高速缓存52的指令被送入一个或多个指令译码器56,其输出指令给一个或者多个功能单元58中,例如,各种算术逻辑单元、浮点单元、子字并行多媒体操作单元、负载/存储单元、SIMD多媒体操作单元、矢量多媒体操作单元、乘法器、分支单元等。如上所述,CPU14可以支持VLIW指令,借此,当处理VLIW指令以同时将编码为VLIW指令的多个操作发送给多个功能单元时,可以使用多指令槽(例如,五个)。
CPU14一般实施为负载/存储结构,功能单元58借此访问寄存器堆60,这里包括128个32位通用寄存器。一个附加的支持寄存器是程序控制和状态字(PCSW)寄存器61,其用于设定CPU的各种配置的设置,例如,关于浮点运算,字节性别(big/little endian),中断启动、异常事件等。为了提供依据本发明的动态功率消耗控制,CPU14还包括功率控制电路62,其中的功率控制电路62被图示为一种支持寄存器64,这里称为功率模式寄存器,其中的功率模式寄存器存储了用于媒体处理器12中的各种硬件资源的功率模式状态信息,该媒体处理器12能够有选择地被禁止以使得媒体处理器中的功率消耗减少到最小。在一些实施例中,可以期望在PCSW或CPU中的另一个支持寄存器中还支持对功率模式状态信息的存储,借此将功率模式状态信息与与功率消耗控制无关的其它状态信息组合起来。
功率控制电路62控制整个CPU14的功率消耗,并且也可有选择地控制在媒体处理器12中的功率消耗,通过对一个或多个启动信号66进行确认来启动在CPU14和/或媒体处理器12中的各种硬件资源内嵌入的逻辑。在这里,硬件资源实际上可能代表集成电路中的任何电子电路,因为其可能实际上和/或希望被禁止以便减少集成电路中的功率消耗。在CPU14中,例如,BIU50、高速缓存52、54、指令译码器56、功能单元58以及寄存器堆60,凭借在每个各自的块上存在的启动逻辑(通过该参考标识符″E″来标明),全部被图示说明为能够被有选择地禁止的硬件资源。
在该图示说明的实施例中,功率控制电路62响应存储在功率模式寄存器64中的功率模式状态信息,有选择地确认启动信号66。该状态信息是响应嵌入在由CPU 14执行的程序中的功率控制指令而设置在寄存器64中的。这些功率控制指令一般以与通常在现有技术中使用的其它传统的寄存器存储指令几乎相同的方式,由指令译码器56进行解码并被用于更新功率模式寄存器64。
可以理解,该启动信号66可以用来彻底启动/禁止整个块或者硬件资源,或者可以用来仅仅启动/禁止部分这样的块/硬件资源和/或为所有或仅一部分上述块/资源而从多个可用功率消耗状态中选择。例如硬件资源可以支持多于两个的功率模式,例如,睡眠或者完全关闭模式,两个或多个低功率或者节能模式,以及一种全功率模式。当为在图2中的每个启动信号66说明单个线时,可以理解多个信号通路可以用于有选择地启动每个硬件资源的部分以改变粒度等级。同时,可以理解一种硬件资源实际上可以应用现有技术范围内任何已知的节能或者功率消耗降低技术,只要能够如所述那样在功率控制电路的控制下有选择地启用该技术。
在以下论述的实施例中,例如,可以控制一种硬件资源,比如寄存器堆,以便通过将多个能够响应由处理器执行的程序中的各个功率控制指令而被有选择地禁止的寄存器存储体组织成寄存器堆,以此来减少功率消耗。在这方面,每个寄存器存储体本身可以被认为是代表一种单独的硬件资源。
在该图示说明的实施例中,每个寄存器存储体应用启动逻辑,该启动逻辑不仅断开时钟信号,而且断开输入给每个禁止的寄存器存储体的地址和数据输入信号。如下将变得更为显而易见的那样,同时断开时钟、地址和数据输入信号经常提供最理想的节能,因为与通用寄存器结合使用的CMOS锁存器或者触发电路常常遭受较高的连线电容。然而,在依据本发明的一些实施例中,也可以使用其它的禁止寄存器堆的方式。
此外,当将功率控制电路62图示说明为被用于控制在CPU14内单独布置的硬件资源时,可以理解,依据本发明的功率控制电路可以应用于控制其它硬件资源,包括例如布置在相同的集成电路上的硬件资源(例如,图1中图示的任何功能块的全部或者部分),以及布置在另一个集成电路上的硬件资源。事实上,依据本发明的功率控制电路可以用来控制与各种的硬件资源有关的功率消耗,包括例如寄存器堆、存储器、高速缓存、发送槽(issue slots)、总线、功能单元、功能块、IO焊盘或者管脚、缓冲器、指令重排序逻辑、嵌入式现场可编程门阵列(FPGA)、协处理器,或者实际上能够被禁止和/或设置为具有降低了的功率消耗状态的任何类型的电子电路。此外,任何前述电路都可以考虑加入多个可分别控制的硬件资源,例如,使得电路的各个部分能够被有选择地禁止(例如寄存器堆中的各个存储体或者寄存器、高速缓存的各个组、总线中的单个线或者线组等等)。
此外,当功率控制电路62如图所示布置在CPU14中时,可以理解功率控制电路可以在功能上与CPU或者其它处理核心分离。通常在不同的实施例中,将功率消耗控制功能分配给集成电路上的特定方式可以是不同的,并且因而,本发明不被限制在论述的具体实施方式
中。
作为附加方式,以举例的方式在此给出在一种媒体处理器内的功率控制电路62的一种具体实施方式
。功率消耗控制,并且特别地,如下所述的对功率控制指令的使用,可以应用在各种可选择的根据本发明的集成电路中。功率控制指令,例如,可以与各种的处理器体系结构结合使用,包括VLIW、EPIC、RISC、CISC、DSP、超级标量等等。此外,本发明不限于使用在SOC体系结构内,或者处理核心与其它支持电路相结合的其它体系结构。
在许多情况中,就功率消耗降低而言的重要好处在与VLIW、EPIC、超级标量或者其它宽发出(wide-issue)体系结构相结合时会得以实现,在所述体系结构中并行硬件资源在程序执行期间可以一直未充分使用,因为时常可以按照程序应用命令有选择地禁止未充分使用的并行硬件资源。然而,本发明不限于单独与宽发出体系结构等等相结合的可用性。
通常,可以理解于此论述的任何基于硬件的功能一般实施在加入了一个或多个集成电路的电路布置中,并且选择性地包括附加支持电子部件。此外,如在现有技术中所公知的那样,集成电路一般使用一个或多个计算机数据文件来设计和装配,在此被称为硬件定义程序,其定义该设备上的电路布置的布线设计。该程序一般由一种设计工具生成,并且随后在生产期间使用以产生布线掩膜,其定义应用到半导体晶片上的电路布置。通常,使用一种硬件定义语言(HDL),比如VHDL、verilog、EDIF等等,以一种预定格式来给出该程序。虽然本发明已描述的和下面将要描述的电路布置环境是在全功能集成电路和数据处理系统中实现的,本领域的技术人员可以理解依据本发明的电路布置也能够作为各种形式的程序产品被分配,并且从而可以不考虑用于实际执行该分配的信号承载媒体的具体类型而同样地应用本发明。信号承载媒体的范例包括但是不限于可记录型媒体,诸如易失的和非易失性存储器设备,软盘及其它可移动磁盘、硬盘驱动器、磁带、光盘(例如,CD-ROM、DVD等),连同其它,以及传送型媒体,比如数字和模拟通信链接。在一些依据本发明的实施例中,其它集成电路技术,例如FPGA等也可以用来实施一些于此论述的基于硬件的功能。
如上所述,可以通过嵌入在由CPU14执行的程序内的功率控制指令而控制功率控制电路62。这些功率控制指令可以由程序设计器生成,或者在备选方案中,可以由编译程序、链接程序、优化程序等以一种自动的方式添加到程序中。此外,当这样的程序控制指令的自动添加一般先于运行时间发生时,一些实施例中,例如可以使用程序控制指令的运行时间增加与及时编译/最优化或者运行时间译码/指令解码相结合。
程序控制指令的自动增加,不考虑实施的特定方式(即,先于或者在运行时间内,在编译程序或者优化程序中等),一般使用一个或多个例行程序来实施,该例行程序将要在下文中更为详细地描述。这些例行程序,无论其是在操作系统还是在专门的应用程序、组件、程序、对象、模块或者指令序列乃至其子集中实施,其在这里都称为“计算机程序代码”或者简单地称作“程序代码”。程序代码一般包括在不同时间驻留在计算机或者数据处理系统的各种存储器以及存储设备中的一个或多个指令,而且,当由计算机的一个或多个处理器读出和执行指令时,会导致计算机执行对实现本发明的各个方面的步骤或元件来说是必需的步骤。此外,尽管已经和以下将描述在计算机和数据处理系统环境中的本发明与软件有关的方面,本领域的技术人员可以理解,本发明的各个实施例能够作为各种各样形式的程序产品而分配,从而可以不考虑用于实际执行该分配的信号承载媒体的具体类型而同样地应用本发明。
此外,以下描述的各种程序代码可以基于该应用程序而识别,在该应用程序中其以本发明的一种特定实施例而被实施。然而可以理解,下述的任何特定程序术语都是仅仅为了方便起见而使用的,因此本发明不应该被限制在完全使用由这样的术语确定和/或暗示的任何专门应用程序中。此外,假设存在无穷多的方法可以将计算机程序组织成例行程序、过程、方法、模块、对象等,以及可以将程序功能配备在作为示例性计算机的常驻程序的各种软件之中的各种方法(例如,操作系统、库、API、应用程序、小应用程序等等),应该理解本发明不限于在此描述的程序功能的具体组织和配置。
本领域的技术人员将认识到图1和2中说明的该示例性环境并不意图限制本发明。实际上,本领域的技术人员将认识到可以使用不背离本发明范围的其它备选硬件和/或软件环境。
如上所述,依据本发明的动态功率消耗控制可以包括与传统功率消耗控制技术相比提供相当大的优点的两个概念中的任何一个或者两者。第一个概念特别适用于实施对由处理器或者处理核心使用的寄存器堆的功率消耗的控制。第二个概念更为普遍地适用于一种在集成电路中控制功率消耗的软件控制方式。为了促进对这些概念中的每一个的更好的理解,在下面结合图3-6说明结合了两个概念的一个典型实施例。然而,可以理解,以下论述的这两个概念可以分别地和独立地在其它实施例中使用,因而,本发明不限于以下论述的具体实施方式

图3-6特别地图示说明了在寄存器堆中的基于软件的功率消耗控制,其中的寄存器堆使用在可兼容三媒体的媒体处理器中。例如,已经发现在许多可编程体系结构中(例如,VLIW、EPIC,和超级标量),寄存器堆在整体功率消耗中占有了很大部分。在一些应用程序中,已经发现寄存器堆可以消耗到由处理核心消耗的功率的20%。特别在媒体处理器中,寄存器堆常常相对较大,并且常常包括多个端口和寄存器。一些可兼容三媒体的处理器,例如,使用带有128个寄存器和20个独立端口的寄存器堆。寄存器堆设计是线路占支配地位的,因此用相对功率消耗按技术缩放比例增长。因而,在寄存器堆中降低功率消耗常常可以在媒体处理器中节约相当大的能量消耗。
已经发现在任何可编程体系结构中常常由应用程序确定寄存器堆的大小,其中应用程序需要最高数量的主动变量,该变量一般存储在该寄存器堆中。然而,当执行其它带有较少主动变量的应用程序时,寄存器堆中的许多寄存器仍然是没有使用的。同样地,在一种特定应用程序中,寄存器堆的应用能够在该应用程序的不同点上发生显著地变化。举例来说,已经发现一种可兼容三媒体的媒体处理器在AC3解码期间具有相对高的最高值的寄存器利用率,而在一种典型的应用程序中的其它操作期间,平均寄存器利用率常常是相对低的。因此,可以认为,依赖于运行应用程序的现行要求,很有希望禁止寄存器堆中没有使用的部分以减少它的整体功率消耗。
如特别在图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可以包括一个操作码92,其将指令标识为pwr_control指令,以及一个操作数94,其为寄存器堆60的寄存器的各种存储体指定用于设置功率模式的功率控制信息。操作数94可以作为例如一个包括位掩模的立即操作数被实施,其包括一个分配给寄存器堆的寄存器的每个存储体的启动/禁止比特96。因而,例如对于寄存器堆中的8个存储体,在指令90中可以支持一个8位的立即操作数。
更通常的,操作数94的大小可以用该公式来表示Σi=1jlog2(Modes(i))]]>其中j是要控制的硬件资源(这里是寄存器存储体)的数量,以Modes(i)是硬件资源i的功率模式的数量。
其它指令格式可以用于可选方案中。例如,如图4所示,支持一个任选的源寄存器操作数97是理想的,该操作数97标识在其内存储功率模式状态信息的寄存器。因此,通过一个用于检索需要的功率模式状态信息的寄存器操作,该功率模式状态信息可以保持在一个单独的寄存器内,而不是直接将功率模式状态信息存储在功率控制指令以及执行一个立即运算。在可选方案中可以支持其它的编址方式。
同样如图4中所示,需要支持一种防护操作数98,其可以用来指定在由功率控制指令表示的功率模式状态信息被应用之前必须满足的条件。实际上依据本发明可以使用任何已知条件。
回到图2,在该图示说明的实施例中,由CPU14处理功率控制指令,以便用在功率控制指令中规定的功率控制信息来更新功率模式寄存器64。因而,期望功率模式寄存器64具有一个用于功率控制指令的立即操作数的相同映射,以使得将功率控制指令仅仅作为一个写入到功率模式寄存器中的立即数而进行处理。
此外,如上所述,在有些情况下,可能需要应用一种预先存在的寄存器来存储功率模式状态信息,例如PCSW寄存器。在这样的情况下,功率控制指令不会需要独立的操作码。相反,可以使用一种用于写入适合的寄存器中的预先存在的操作码,同时用该操作数更新与存储功率模式状态信息结合使用的位。
依据本发明,功率控制指令可以以许多方式合并到可执行程序代码中。例如,功率控制指令可以在开发期间由程序设计器添加到源代码中。在可选方案中,编译程序、优化程序、链接程序等可以执行开发中程序的模拟或者静态分析,以确定适当的位置以基于预计的资源利用率插入功率控制指令。
此外,程序的剖析、静态分析或者模拟可以用于确定应该在该程序的某个部分内使用什么硬件资源,以及应该禁止什么资源。例如,如果确定在程序的某一部分仅要求10个寄存器,而使用该10个寄存器对于程序语义来说是不重要的,编译程序可能仅仅需要使用来自于有限数量的寄存器存储体的寄存器,然后向程序代码插入适当的功率控制指令以禁止没有使用的寄存器存储体。此外,如果上述10个寄存器起初分布在多个寄存器存储体中,可能需要在减少数量后的寄存器存储体内将寄存器重新映射以集中这些寄存器。
例如,图5图示说明了功率消耗优化例行程序100,该例行程序100可以在对计算机程序进行编译或优化期间执行,以便为了最佳功率消耗而优化一段计算机程序。对于每个指定程序段,例行程序100首先分析该段程序,以由在块102中的程序代码段确定硬件资源的使用情况。其次,选择性地执行块104以试图将资源重新映射以将资源使用集中到有限的一组硬件资源中(例如,将寄存器限制为有限数量的寄存器存储体)。接下来,块106产生并将适当的功率控制指令插入到程序代码中以禁止任何未使用的资源。然后完成对那段程序的处理。
同样可以在运行时间内例如结合翻译或及时编译而使用例行程序100或在功能方面类似的例行程序。此外,可以理解,例行程序100可以结合指令的生成而被使用,在运行时间内该指令被调度用于并行和/或无序运算,例如,在超级标量处理器体系结构中。在这样的实施方式中,编译程序和运行时间硬件将期望限制对功率控制指令的重新排序,以将对其它推测指令的影响降到最低,例如通过将副作用分配给功率控制指令,该指令限制其运行时间推测。然而在其它实施例中,如果CPU/处理器不是完全承担计算,操作系统可以调度/发出功率控制指令。
在可选方案中,可以结合明确并行的指令集体系结构,例如VLIW或EPIC代码来使用例行程序100,其中在编译期间发生对并行指令的检测。在上述实施方式中,对功率控制指令的插入可以看作包括将功率控制操作插入更大型的包括多个操作的VLIW或EPIC指令。
在编译过程或运行时间过程中功率控制指令嵌入程序码内,仅在需要改变硬件资源的使用时,该程序码中需要包括分布在其中的程序控制指令。此外,常常需要单个功率控制指令能够控制多个硬件资源的启动/禁止状态。因而,依据本发明,最小的附加处理额外消耗一般与功率控制指令有关,从而将任何由于将附加指令插入程序代码而产生的不利的性能效果降到最低。
例如,图6用图示说明了以上述方式编译的程序的一个典型部分的执行过程,例如可以结合在与可兼容三媒体的媒体处理器使用。在该例子中,假定有五个发送槽,各标记为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说明了可选的寄存器堆设计120,其包括多个寄存器存储体122,每个包括用于有选择地断开提供给与图3的寄存器堆60类似的寄存器堆的时钟输入126、数据输入128、地址输入130的选通逻辑124。然而,寄存器堆120包括基于硬件的启动逻辑电路132,其包括动态地产生各个存储体启动信号136的地址译码器134,以有选择地禁止各种未使用的寄存器存储体,而不是从基于软件的控制电路提供启动信号。
地址译码器134可以例如在任何周期内有选择地禁止寄存器存储体,因为在该寄存器存储体之内当前没有寄存器被访问。特别对于支持多输入端口的寄存器堆,很容易地确定在给定周期内访问了什么寄存器,并且从而提供有选择地减少寄存器堆的功率消耗的功能,而在由特定的处理器设计所使用的编译程序和/或指令集系统结构中不会有任何改变。
具有及时公开的优点的各种附加修改对于本领域的技术人员来说是显而易见的。所以,本发明由附属的权利要求所限定。
权利要求
1.一种电路布置(14),包括(a)分割成多个存储体(70)的寄存器堆(60),每个存储体包括至少一个寄存器(82),和至少一个时钟输入(74)、地址输入以及数据输入;以及(b)耦合到该寄存器堆并配置为从多个存储体中通过断开其时钟(74)、地址和数据输入而有选择地禁止至少一个未使用存储体(70)的启动逻辑(66)。
2.如权利要求1的电路布置,其中寄存器堆中的每个寄存器包括CMOS触发器和CMOS锁存器中的至少一个。
3.如权利要求1的电路布置,其中该启动逻辑包括多个启动电路(82),每个启动电路耦合到寄存器堆中的寄存器存储体,并且每个启动电路被配置成响应启动信号,断开提供给相关联的存储体的每个时钟(74)、地址和数据输入。
4.如权利要求3的电路布置,其中每个启动电路包括多个选通晶体管,每个选通晶体管耦合到时钟、地址和数据输入之一,并且每个选通晶体管响应提供给启动电路的启动信号。
5.如权利要求1的电路布置,进一步包括耦合到多个寄存器存储体的每一个的输出选择逻辑(80)。
6.如权利要求1的电路布置,其中该启动逻辑(132)被配置成动态地确定哪个寄存器存储体未使用并且响应该动态确定而为每个存储体产生启动信号。
7.如权利要求6的电路布置,其中该启动逻辑包括地址译码器,其被配置成响应由提供给该寄存器堆的地址输入指定的至少一个地址,产生该启动信号。
8.如权利要求1的电路布置,其中该启动逻辑被配置成响应存储的功率模式状态信息,为每个存储体产生一个启动信号。
9.如权利要求8的电路布置,进一步地包括支持寄存器,其被配置成存储功率模式状态信息,其中该状态寄存器被配置成响应驻留在由处理器执行的程序代码中的功率控制指令而更新。
10.如权利要求9的电路布置,其中状态寄存器包括一个功率模式寄存器。
11.如权利要求9的电路布置,其中状态寄存器还存储有与功率消耗控制无关的状态信息。
12.如权利要求1的电路布置,其中该电路布置被布置在集成电路中。
13.如权利要求12的电路布置,其中该电路布置被布置在集成电路的处理器中。
14.一种程序产品,包括硬件定义程序,其定义如权利要求1的电路布置,以及信号承载媒体,其承载硬件定义程序,其中该信号承载媒体包括至少一个传输媒体以及一个可记录媒体。
15.一种控制寄存器堆的功率消耗的方法,该方法包括(a)接收分别送往寄存器堆的多个寄存器存储体中的寄存器第一和第二寄存器存储体的第一和第二启动信号,其中寄存器的每个存储体包括至少一个寄存器和至少一个时钟输入、地址输入、和数据输入;以及(b)响应第一启动信号通过断开其时钟、地址和数据输入而有选择地禁止寄存器的第一存储体。
16.如权利要求15的方法,其中寄存器堆中的每个寄存器包括CMOS触发器和CMOS锁存器中的至少一个。
17.如权利要求15的方法,其中有选择地禁止寄存器的第一存储体包括将启动信号提供给耦合到第一寄存器存储体的多个选通晶体管,每个选通晶体管耦合到时钟、地址和数据输入之一。
18.如权利要求15的方法,进一步地包括动态地确定未使用第一存储体,并且据此产生第一启动信号。
19.如权利要求18的方法,其中动态地确定未使用第一存储体的步骤包括对由提供给寄存器堆的地址输入所指定的至少一个地址进行解码。
20.如权利要求15的方法,进一步地包括响应存储的功率模式状态信息而产生第一和第二启动信号。
21.如权利要求20的方法,其中存储的功率模式状态信息存储在支持寄存器中,该方法进一步包括响应驻留在由处理器执行的程序代码中的功率控制指令,更新该支持存储器。
全文摘要
一种电路布置和控制功率消耗的方法,通过耦合有启动逻辑(62、82)的联组工作的寄存器设计使用具有功率消耗控制能力的寄存器堆(60),该启动逻辑被配置成通过有选择地断开向其提供的时钟(74)、地址(76)和数据(78)输入而有选择地禁止未使用的寄存器存储体(70)。
文档编号G06F9/30GK1720494SQ200380104979
公开日2006年1月11日 申请日期2003年12月3日 优先权日2002年12月4日
发明者A·特雷奇科, M·加格 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1