控制无线通信系统中正向信道上数据速率的方法和装置 【技术领域】
本发明涉及执行数据处理的集成电路,如微处理器、微控制器、逻辑电路等,更具体地说,涉及降低此类集成电路的功耗的方法和装置。
背景技术
如今的微处理器、微控制器、逻辑电路等(即,处理集成电路)在AC工作期间(例如,当电路工作并正在处理指令和/或数据时)消耗其大部分功率预算。尽管存在很多试图降低处理集成电路未使用部分(例如,处理集成电路的不工作部分)功耗的功率管理技术,但维持此类电路工作部分的功率预算还是很困难。
大多数预算处理集成电路工作部分的功耗的传统技术依赖于通过使用复用器来减少逻辑触发或减少由控制逻辑执行的逻辑触发。例如,美国专利6,054,877(其作为整体在此引入作为参考)公开了一种可以防止对无效数据的复用器(MUX)输出转换并降低由于此类“无效”MUX输出转换所造成的AC功耗的“一次转换MUX”。同样,美国专利6,237,101(其作为整体在此引入作为参考)也公开了一种通过如果没有必要为执行当前指令而改变控制信号的值/电平则将控制信号保持在解码前一指令期间所确定的值/电平来降低当前指令解码期间微处理器功耗的技术。
另一种控制便携式个人计算机功耗的传统技术在美国专利6,167,524(其作为整体在此引入作为参考)中被公开。该美国专利6,167,524公开了,例如,将工作执行单元的期望功耗值求和以便确定期望的总功耗是否超出了最佳电池功效值。如果超出,则对执行单元的活动量限量(例如,从而功耗保持在最佳电池/变换器效率范围之内)(第6栏第47-61行)。每个执行单元的期望功耗值可以基于通过模拟计算出地与该执行单元关联的平均触发功率(第5栏第60行-第6栏第3行)。
这些和其它功率管理技术都没有考虑当前时钟周期内要操作的实际数据,和/或没有考虑到尤其是一旦指令被分配到执行单元中后实时的功率平衡。因此,维持处理集成电路工作部分的功率预算还是很困难。
【发明内容】
根据本发明的第一方面,提供了一种节省处理集成电路功率的方法。该方法包括步骤:(1)计算执行指令及与该指令对应的数据的功耗;和(2)如果该执行不会超出预定功率水平则执行该指令。
根据本发明的第二方面,提供了一种节省处理集成电路功率的方法,该处理集成电路使用了多个执行单元。该方法包括下列步骤:(1)将处理集成电路所消耗的总功率与该处理集成电路的功率预算进行比较;和(2)如果总功率超出了功率预算,则冻结多个执行单元中一个单元对指令的执行,以便允许该指令在稍后某个时间从执行被冻结的地方继续执行。本发明的许多其它方面是作为系统和装置来提供的。
根据以下详细描述、所附的权利要求书和附图,本发明的其它目的、特征和优点将变得更加显而易见。
【附图说明】
图1是根据本发明配置的新颖的数据处理系统的示意图;
图2是与图1的局部功率控制器代表性实施方案通信的图1的全局功率控制器代表性实施方案的示意图;
图3是可以由图1和2中有创造性的数据处理系统的全局功率控制器执行的节省功率的代表性方法的流程图;
图4A和4B是可以由图1和2中有创造性的数据处理系统执行单元的局部功率控制器执行的节省功率的代表性方法的流程图;
图5是图1和2中一个局部功率控制器更详细的、有代表性的实施方案;
图6是可以与图5的局部功率控制器一起使用的图1和2中的全局功率控制器更详细的、有代表性的实施方案;
图7是图1中一个执行单元逻辑电路的代表性实施方案,它对说明图1数据处理系统的工作很有帮助;及
图8是对说明图7执行单元的工作很有帮助的时序图。
【具体实施方式】
图1是根据本发明配置的新颖的数据处理系统100的示意图。数据处理系统100包括耦合到指令分配单元104的存储器102及多个执行单元106a-n。指令分配单元104包括全局功率控制器108,而每个执行单元106a-n都包括局部功率控制器110a-n。存储器102、指令分配单元104、执行单元106a-n及全局和/或局部功率控制器108、110a-n都配置成如下面进一步所描述的那样交换各种数据(例如,操作数)、指令和/或其它控制信号。
存储器102和指令分配单元104可以是本领域中已知的传统数据处理系统部件。全局和局部功率控制器108、110a-n的代表性实施方案在下面参考图2-6进行描述。一个执行单元106a-n的代表性实施方案在下面参考图7和8进行描述。
图2是与图1中局部功率控制器110a的代表性实施方案通信的全局功率控制器108的代表性实施方案的示意图。局部功率控制器110b-n可以类似地进行配置。
参考图2,全局功率控制器108包括适于存储数据处理系统100的总功率预算的寄存器204。在本发明的一种实施方案中,寄存器204包括可编程寄存器,如随机存取存储器(RAM),虽然其它的传统寄存器也可以使用。数据处理系统100的总功率预算可以表示,例如,前面引入的美国专利6,167,254中所述靠电池工作的系统中最大功效所要求的功率,或任何其它本领域中已知的预定功率水平。
局部功率控制器110a包括ROM 206、RAM 208、第一寄存器210、第二寄存器212和加法器电路214。ROM 206代表一个或多个ROM,适于为每条可执行指令存储(1)执行单元106a(图1)执行该指令所需功率的平均值或其它代表性值;和/或(2)该指令类型的“典型”或其它代表性操作数(如下面进一步描述的)。这种平均功率和典型操作数可以基于模拟(例如,基于利用基于物理容量的模拟工具或者利用任何其它已知的技术运行应用程序代码,该模拟工具如前面引入的美国专利6,167,524所述确定每个执行单元每个周期所消耗的功率,)。
RAM 208代表一个或多个RAM,适于为执行单元106a所执行的每条指令存储(1)执行单元106a执行该指令所需的实际功率;和/或(2)该指令操作的操作数。第一寄存器210适于存储执行单元106a的功率预算,可以包括如RAM的任何传统寄存器。功率预算可以利用任何传统技术来确定。如下面参考图3-8所进一步描述的,第二寄存器212适于存储完成先前暂停或“冻结”指令的执行所需的功率。类似地,第二寄存器212也可以包括如RAM的任何传统寄存器。
图3是可以由图1和2中有创造性的数据处理系统100的全局功率控制器108执行的节省功率的代表性方法300的流程图。参考图3,方法300从步骤301开始。在步骤302中,全局功率控制器108计算当前时钟周期数据处理系统100要消耗的总功率(“Total_Chip_Power”)。Total_Chip_Power是根据当前时钟周期内各执行单元106a-n所消耗的实际功率计算的(例如,通过对当前时钟周期内各执行单元106a-n所消耗的实际功率求和)。例如,如下面参考图4所描述的,当前时钟周期内各执行单元106a-n所消耗的实际功率可以确定并提供给全局功率控制器108。
在步骤303中,全局功率控制器108确定Total_Chip_Power是否超出了数据处理系统100的功率预算(“Chip_Power_Budget”)。例如,Chip_Power_Budget可以存储在前述图2的寄存器204中。如果在步骤304中Total_Chip_Power超出Chip_Power_Budget,则全局功率控制器108暂停或“冻结”执行单元106a-n中的一个或多个单元(例如,以便防止在当前周期内Total_Chip_Power实际超过Chip_Power_Budget)。如下面参考图4所描述的,每个执行单元106a-n都配置成可以在指令执行过程中被暂停或“冻结”,而且稍后在执行被暂停的同一位置重新启动。以这种方式,完成由该冻结的执行单元执行指令所需的功率可以在数据处理系统100不超预算的稍后某个时间消耗。例如,如果在步骤303中确定Total_Chip_Power没有超出Chip_Power_Budget,则在步骤305中全局功率控制器108可以重新启动一个或多个先前冻结的执行单元106a-n。从而,数据处理系统100可以使用动态、实时的功率管理。
图4A和4B是可以由图1和2中有创造性的数据处理系统100执行单元106a-n的局部功率控制器110a-n执行的节省功率的代表性方法400的流程图。为了方便,方法400参考图1和2的局部功率控制器110a进行描述。应当理解,局部功率控制器110b-n中的一个或多个可以执行相似的方法。
参考图4A和4B,方法400从步骤401开始。在步骤402中,局部功率控制器110a确定执行单元106a是否从指令分配单元104收到了新指令并正在解码(或已经解码)该新指令。如果是这样,则方法400前进到步骤403;否则,局部功率控制器110a重新检查执行单元106a是否收到了新指令(步骤402)。
在步骤403中,局部功率控制器110a确定执行单元106a收到的新指令是否先前已经收到(例如,根据该指令的操作码或“opcode”)。如果先前已经收到,则方法400前进到步骤404;否则,方法400前进到步骤405。
在步骤404中,局部功率控制器110a根据执行单元106a上次执行该指令来确定执行该新指令所需的预测功率(“Predicted_Power”)。例如,RAM 208(图2)可以存储先前执行该指令所需的功率。局部功率控制器110a还确定上次该指令执行时所使用的操作数(“Last_Operands”)。Last_Operands也可以存储在RAM 208中。然后方法400前进到步骤406。
如果在步骤403中执行单元106a收到的新指令先前没有被执行单元106a收到过,则在步骤405中局部功率控制器110a根据模拟数据(例如,存储在图2的ROM 206中)确定Predicted_Power和Last_Operands。例如,Predicted_Power可以是根据模拟的平均功率,而Last_Operands可以是模拟过程中所使用的典型操作数。如在先前引入的美国专利No.6,167,524中所描述的任何合适的模拟技术都可以使用。然后方法400前进到步骤406。
在步骤406中,局部功率控制器110a根据Predicted_Power计算执行该新指令所需的实际功率(“True_Power”)。在本发明的至少一种实施方案中,True_Power是通过用转换系数(“Transition_Factor”)乘Predicted_Power来计算的,其中转换系数表示如下面进一步所描述的对与新指令关联的实际操作数(“New_Operands”)和Last_Operands执行XNOR或其它XOR类运算的结果。在步骤407中,局部功率控制器110a将True_Power和New_Operands存储在RAM 208中,供执行单元106a下次执行该指令时使用。
在步骤408中,局部功率控制器110a计算在当前时钟周期内执行单元106a可以使用的可用功率(“Avail_Power”)。在本发明的至少一种实施方案中,Avail_Power等于执行单元106a的功率预算(例如,存储在局部功率控制器110a的寄存器210中的“EX_Power_Budget”)减去完成由全局功率控制器108或由局部功率控制器110a冻结的以前时钟周期内的指令所需的任何功率(如下面进一步描述的)。
在步骤409中,局部功率控制器110a确定True_Power(执行单元106a执行指令所需的功率)是否大于Avail_Power(执行单元106a可用的功率)。即,局部功率控制器110a确定如果执行新指令则执行单元106a是否会超出其功率预算。如果不会超出,则在步骤410中局部功率控制器110a允许执行单元106a继续执行该指令;否则,在步骤411中局部功率控制器110a阻止执行单元106a执行该指令(如下所述)。指令的执行可以在执行前或执行中暂停(冻结)。在至少一种实施方案中,局部功率控制器110a存储完成该指令执行所需的功率值(例如,在图2的寄存器212中)。该存储的功率值可以在计算以后的执行单元106a的Avail_Power时使用(步骤408)。
图5是图1和2中局部功率控制器110a更详细的、代表性的实施方案。参考图5,局部功率控制器110a包括(1)耦合到RAM 503的第一寄存器501;(2)耦合到RAM 503、第一ROM 507和乘法器509的第一复用器505;(3)耦合到乘法器509、第二复用器513和第二寄存器515的XOR类逻辑电路511;及(4)耦合到第二复用器513的第二ROM 517和第三寄存器519。局部功率控制器110a还包括(1)耦合到乘法器509、比较器523和第四寄存器525的第一加法器521;及(2)耦合到比较器523和第五寄存器529的第二加法器527。寄存器501、515、519、525和529可以包括一个或多个传统寄存器,如一个或多个RAM。XOR类逻辑电路511可以包括任何传统的比较电路,如XNOR逻辑电路,如比较器523可能是的那样。复用器505和513、乘法器509及加法器521和527可以包括任何已知的合适逻辑电路。
在工作中,当执行单元106a接收到指令时,该指令存储到第一寄存器501中,局部功率控制器110a如前所述确定用于由执行单元106a执行该指令的Predicted_Power。在图5的实施方案中,Predicted_Power是以下述两种方式之一确定的:(1)通过利用上次执行该指令时执行单元106a所消耗的功率;或(2)通过利用根据模拟确定的功率(如前所述)。具体地说,局部功率控制器110a确定执行单元106a收到的指令先前是否已被执行单元106a收到过。如果收到过,则局部功率控制器110a通过利用该指令的操作码作为第一RAM 503地址来确定用于该指令的Predicted_Power(上次执行该指令时执行单元所消耗的功率存储在由该操作码标识的地址的RAM503中);否则,Predicted_Power是根据存储在第一ROM 507中的模拟功率数据提供的。第一复用器505用来选择适当的Predicted_Power并将其传送到乘法器509。
在局部功率控制器110a确定Predicted_Power之前、期间或之后,局部功率控制器110a还确定用于伴随执行单元106a所接收指令的操作数的Transition_Factor。Transition_Factor是通过在伴随指令的操作数和上次该指令执行时所使用的操作数(例如,存储在寄存器519中的Last_Operands)或模拟过程中所使用的典型操作数(例如,存储在ROM517中的Last_Operands)之间执行XOR类函数,如XNOR或其它比较运算,来计算的。第二复用器513用来选择适当的Last_Operands并将其传送到XOR类电路511。然后,XOR类电路511将其XOR类运算结果(Transition_Factor)输出到乘法器509。
乘法器509基于Predicted_Power通过用Transition_Factor乘Predicted_Power来计算执行该指令所需的实际功率(“True_Power”)。局部功率控制器110a将True_Power存储在RAM 503中并将用于当前指令的操作数存储在寄存器519中,以便执行单元106a下次执行该指令时使用。乘法器509将True_Power输出到第一加法器521、全局功率控制器108、比较器523及RAM 503。
局部功率控制器110a还通过从执行单元106a的功率预算(存储在寄存器529中)中减去完成由全局功率控制器108或由局部功率控制器110a暂停或冻结的以前时钟周期内的指令所需的任何功率(存储在寄存器525中)来计算当前时钟周期内执行单元106a可以使用的可用功率(Avail_Power)。减法运算是通过加法器527执行的,其结果Avail_Power由加法器527提供给比较器523。如果比较器523确定True_Power(执行当前指令所需的功率)超出Avail_Power(执行单元的功率预算,利用完成任何冻结的指令执行所需的功率来校正),则局部功率控制器110a冻结执行单元106a的工作。局部功率控制器110a可以通知全局功率控制器108,而全局功率控制器108可以将该指令重新分配给另一执行单元。或者,局部功率控制器110a可以将完成该指令执行所需的功率值存储在寄存器525中。如果True_Power没有超出Avail_Power,则局部功率控制器110a允许执行单元106a执行该指令(并通知全局功率控制器108这一情况)。冻结执行单元指令的执行的一种实施方案在下面参考图7进行描述。
加法器521通过将True_Power加上完成任何冻结指令所需的功率(存储在寄存器525中)来确定执行单元106a执行指令所消耗的实际功率(“Actual Power Dissipated”)。如下面参考图6所描述的,Actual PowerDissipated提供给全局功率控制器108。局部功率控制器110b-n可以类似于图5的局部功率控制器110a配置。实现上述功能所需的控制逻辑可以由相关领域普通技术人员来开发,在此不进行详细描述。
图6是可以与图5的局部功率控制器110a一起使用的图1和2中的全局功率控制器108的更详细的、代表性的实施方案。参考图6,全局功率控制器108包括耦合到第一加法器603和比较器605的第一寄存器601。比较器605还耦合到第二加法器607和选择电路609。寄存器601、加法器603和607、比较器605及选择电路609可以包括任何已知的合适逻辑电路。
在工作中,全局功率控制器108通过利用第二加法器607将从各局部功率控制器110a-n收到的“Actual Power Dissipated”信息(例如,如前所述由各执行单元106a-n所消耗的功率)加在一起来计算当前时钟周期内数据处理系统100要消耗的总功率。该总功率表示数据处理系统100的Total_Chip_Power。然后比较器605将数据处理系统100的功率预算(存储在寄存器601中的Chip_Power_Budget)与Total_Chip_Power进行比较。如果Total_Chip_Power小于Chip_Power_Budget,则全局功率控制器108允许各执行单元106a-n执行指令,而不会受全局功率控制器108的干扰。任何“剩余”功率(例如,Chip_Power_Budget超出Total_Chip_Power的量)都通过加法器603加到Chip_Power_Budget上(例如,增加下一时钟周期内数据处理系统100的功率预算)。全局功率控制器108也可以不将剩余功率加到Chip_Power_Budget,而是重新启动先前冻结的一个或多个执行单元106a-n。
如果Total_Chip_Power大于Chip_Power_Budget(如由比较器605确定的),则全局功率控制器108(通过选择电路609)选择一个或多个执行单元106a-n并冻结所选执行单元的指令执行。要冻结的特定执行单元的选择可以根据任何相关因素。在至少一种实施方案中,选择电路609根据当前时钟周期内各执行单元106a-n要消耗的功率(例如,根据各执行单元106a-n的True_Power)来选择冻结的执行单元的适当组合。其它因素包括要冻结的执行单元个数、执行单元所执行指令的类型等。例如,全局功率控制器108可以选择只冻结推理性执行单元(如在先前引入的美国专利No.6,167,524中所描述的)。实现上述功能所需的控制逻辑可以由相关领域普通技术人员来开发,在此不进行详细描述。
图7是图1中的执行单元106a逻辑电路的代表性实施方案,它对说明图1的数据处理系统100的工作很有帮助。应当理解,其它逻辑电路也可以由任何执行单元106a-n使用,图7的逻辑电路仅仅是代表性的。
参考图7,执行单元106a包括四个逻辑单元702、704、706和708。每个逻辑单元都可以包括适于处理数据处理系统100所使用的指令和操作数的任何传统逻辑电路。在图7的实施方案中,第一逻辑单元702消耗执行单元106a总功率的大约10%,第二逻辑单元704消耗执行单元106a总功率的大约40%,第三逻辑单元706消耗执行单元106a总功率的大约30%,而第四逻辑单元708消耗执行单元106a总功率的大约20%。这些百分比仅仅是代表性的。局部功率控制器110a可以利用对这些百分比的了解进行预编程。这些信息可以存储在例如ROM中。
在各逻辑单元702-708前面分别加上“一次转换”缓冲器或复用器(“一次转换逻辑”)710、712、714和716。一次转换复用器在先前引入的美国专利No.6,054,877中进行了详细描述。一次转换缓冲器可以类似地进行配置(例如,没有在多个输入之间进行选择所需的附加逻辑)。假定一次转换逻辑710、712、714和716中每个都包括一次转换缓冲器,且每个一次转换缓冲器710-714都提供有低速选择输入和当没有被低速选择输入选中时(例如,当低速选择输入是“无效的”时)保持其值的选通门/锁存器(未示出)。
在工作中,响应由局部功率控制器110a(例如,在图4方法400的步骤411中)或由全局功率控制器108(例如,在图3方法300的步骤304中)产生的“冻结”信号,局部功率控制器110a禁止一次转换逻辑710、712、714和716的低速选择输入的一个或多个。例如,如果局部功率控制器110a打算阻止执行单元106a消耗任何功率,则所有一次转换逻辑710-716的低速选择输入都应该禁止。以这种方式,提供给执行单元106a的任何指令和操作数都由一次转换逻辑710“保持”。通过启用一次转换逻辑710-716的低速选择输入,可以允许这些指令和操作数在随后的任何时间通过执行单元106a。全局功率控制器108可以提供有对一次转换逻辑710-716的低速选择输入的直接控制。
作为另一种实例,假定已经通过适当选择一次转换逻辑710和712的低速选择输入,允许指令和操作数通过逻辑单元702和逻辑单元704。如果局部功率控制器110a随后冻结了执行单元106a的工作(例如,响应来自局部或全局功率控制器110a、108的冻结信号),则没有“有效的”低速选择输入提供给一次转换逻辑714和716。例如,这在图8的时序图中进行了说明,该图示出了参考时钟信号(CLK)、加到一次转换逻辑710的低速选择输入(slow_select A)、加到一次转换逻辑712的低速选择输入(slow_select B)、加到一次转换逻辑714的低速选择输入(slow_selectC)及加到一次转换逻辑716的低速选择输入(slow_select D)。通过保持一次转换逻辑714和716的低速选择输入无效,加到执行单元106a的指令和操作数只通过逻辑单元702和704。逻辑单元704的结果输出由一次转换逻辑714保持。通过适当地激活一次转换逻辑714和716的低速选择输入,指令和操作数的处理可以在随后某个时间继续进行。注意,指令和操作数的执行可以从执行冻结的地方开始,而不需要通过逻辑单元702和704重新处理。从而可以实现显著的功率节省。
在上述实例中,消耗了执行单元106a处理指令和操作数所需功率的大约50%。在本发明的至少一种实施方案中,这个信息存储在图5的寄存器525中。例如,假定执行单元106a执行一条指令所消耗的总功率是0.2W。如果只有一次转换逻辑710和712的低速选择输入是有效的,则局部功率控制器110a可以确定执行单元106a消耗了大约0.1W功率,而另外的0.1W功率将是执行单元106a完成其指令处理所需要的。
应当理解,通过使用本发明,由于指令和操作数的功耗都可以在每个时钟周期内监视并根据期望进行调节(例如,为了维持电源的稳定耗用电流),因此数据处理系统100的功耗可以非常快速并精确地调节。例如,在本发明的至少一种实施方案中,全局功率控制器108计算所有执行单元106a-n消耗的(例如,由局部功率控制器110a-n所提供的)总功率并试图维持该总功率恒定。例如,这可以通过以下方式实现:(1)临时暂停向一个或多个执行单元106a-n分配新指令;和/或(2)临时冻结一个或多个执行单元106a-n的指令执行(例如,在图3方法300的步骤304)。当暂停/冻结指令的执行恢复时,该执行从执行暂停的地方恢复(例如,先前参考图7和8所描述的)。因此,指令执行几乎可以在执行过程中的任何时刻“暂停”和重新开始。
如上所述,每个局部功率控制器110a-n都可以“预测”各指令和操作数要消耗的每周期功率,并可将该每周期功率与相关执行单元106a-n的功率预算进行比较。在本发明的至少一种实施方案中,如果特定指令的执行将超过执行单元的功率预算,则相关的局部功率控制器110a-n从执行单元流水线中除去该指令。该执行单元的指令执行可暂停(例如,通过禁止该执行单元的低速选择输入),而全局功率控制器108将得到该执行单元在这个周期内不能执行指令的通知。全局功率控制器108可以将该指令重新分配给另一执行单元,而且可以重新启动该暂停的执行单元处理后续指令。在本发明的一种实施方案中,所有计算和/或数据处理(例如,Predicted_Power、Last_Operands、True_Power、Avail_Power的计算/确定,它们之间的各种比较等)都发生在一个时钟周期内,从而可以很快作出是否允许指令执行的决定。在另一种实施方案中,每个局部功率控制器110a-n只可以在时钟周期开始时冻结执行单元的指令执行,而全局功率控制器108则可以在时钟周期中部冻结指令的执行(例如,如果全局功率控制器108确定如果允许指令的执行继续进行,则数据处理系统100的功率预算将被超出)。从而向数据处理系统100提供了动态、实时的功率控制。
以上所述仅公开了本发明的代表性实施方案;对本领域的技术人员而言,在本发明范围内对以上所公开的装置和方法的修改是显而易见的。例如,如果需要,执行单元中多级模拟或实际功耗数据可以由局部功率控制器110a-n来存储。
因此,尽管已经结合其代表性实施方案公开了本发明,但应当理解,其它实施方案也可落在由所附权利要求所定义的本发明精神和范围之内。