CN101243372B - 用于控制微处理器中的功率参数的设备和方法 - Google Patents

用于控制微处理器中的功率参数的设备和方法 Download PDF

Info

Publication number
CN101243372B
CN101243372B CN2006800301360A CN200680030136A CN101243372B CN 101243372 B CN101243372 B CN 101243372B CN 2006800301360 A CN2006800301360 A CN 2006800301360A CN 200680030136 A CN200680030136 A CN 200680030136A CN 101243372 B CN101243372 B CN 101243372B
Authority
CN
China
Prior art keywords
resource
power
gating
activation
microprocessor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2006800301360A
Other languages
English (en)
Other versions
CN101243372A (zh
Inventor
P·博塞
A·布于克托苏诺格卢
胡志刚
H·M·雅各布森
V·斯里尼瓦桑
V·久班
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101243372A publication Critical patent/CN101243372A/zh
Application granted granted Critical
Publication of CN101243372B publication Critical patent/CN101243372B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Power Sources (AREA)

Abstract

一种用于控制微处理器(10)中的功率参数的设备,所述设备包括用于控制所述微处理器(10)的最大功率的资源激活控制单元(12)以及两个或更多个资源(261、262、263)。所述资源激活控制单元(12)控制所述资源(261、262、263)的激活,以使所述微处理器(10)消耗和耗散的功率不超过可配置为低于所述最大功率的预定值的功率边界。

Description

用于控制微处理器中的功率参数的设备和方法 
技术领域
本发明一般地涉及微处理器,具体地说,涉及用于控制微处理器中的功率消耗和损耗的方法。 
背景技术
目前,越来越多的电子组件随微处理器一起安装在相对较小的芯片空间内。随着微处理器中电子组件数量的增加,功率损耗和消耗的问题开始突显。功率消耗和损耗影响微处理器的设计选择和运行状况。因此,需要最小化微处理器内的功率消耗和损耗。在下文中,除非特别适用,否则术语“功率”用于同时包含功率参数的“消耗”和“损耗”两个方面。 
平均功耗和最大功耗之间具有区别。平均功率指通常由客户运行的一组应用或程序所平均消耗的功率。节省平均功率可降低有线应用中的能耗,并延长便携应用中的电池寿命。最大功率是由使用微处理器中的最大数量资源的代码段所消耗的功率。最大功率对封装的功耗能力以及配电系统的电流传输能力设置了要求。因此,最大功率对于微处理器的成本具有重大影响。 
存在多种降低微处理器组件或资源中的功率的技术。时钟选通是一种此类技术。时钟选通只能节省功率的动态或切换部分。另一种节省功率的技术称为数据选通。数据选通包括在微处理器组件的输入处插入转变屏障。这些转变屏障通常实现为‘与’或者‘或’逻辑门。在不使用微处理器组件的周期,转变屏障防止到组件的输入切换,这可以节省数据选通组件内的动态功率或切换功率。与时钟选通相同,数据选通只能节省动态功率或切换功率,而不能节省泄漏功率。 
功率选通(也称为Vdd选通)是另一种公知的可降低动态功率和泄漏 功率部分的功率节省技术。与时钟选通不同,Vdd选通需要多个时钟周期来激活Vdd选通的资源,这要求更复杂的控制机制。Vdd选通的资源必须保持选通最少数量的周期(通常十个周期),以便抵偿与资源的激活和取消激活过程关联的能量开销。 
控制微处理器资源的选通的方法包括反应选通(RG)技术。这些RG技术用于控制芯片的最高温度和/或微处理器核心或芯片吸取的最大电流。RG技术使用一组温度或电流传感器,如果传感器之一读出的温度(或电流消耗)超过阈值,则传感器生成用于选通微处理器资源的信号。将该阈值设置为低于封装的功耗能力限制或低于供电系统的电流传输能力。 
由于基于阈值进行控制,所以RG技术不允许放松对电力或电流传输系统的要求,必须以相对悲观或保守的级别设置所述阈值,以使反应机制能够及时触发并避免芯片故障。RG技术使得难以预测处理器核心的性能,因为反应机制可能在程序执行期间触发。进而,用于节约功率的RG技术的触发机制可能依赖于诸如温度之类的运行环境因素。此触发机制使微处理器的性能依赖于运行环境因素。 
接下来讨论了RG技术的一些实例。Georgiou等人的美国专利No.6,047,248和美国专利No.5,189,314提出了根据从热传感器接收的信息来改变处理器性能的技术。这些RG技术使用反应节流技术,后者在接收到对一组性能度量的片上监视所获得的反馈时被激活。 
另一种控制选通的方法包括完全预测性的选通技术,所述选通技术可以降低微处理器核心或芯片的平均功率,但是当完全使用所有微处理器资源时,不能保证在最大功率使用率下的任何功率降低或不能提供最大功率的任何上限。作为完全预测性的选通技术的一个实例,Ikeda的美国专利No.5,504,908披露了使用地址访问信息判定处理器何时处于空闲循环。这些用于控制选通的技术不允许对影响微处理器成本的封装功耗能力或供电系统的电流传输能力的要求有任何放松。因此,需要一种或多种技术来控制微处理器中的功率消耗并最小化最大功率。 
发明内容
本发明的示例性实施例通常包括用于控制微处理器中的功率消耗和损耗的系统和方法。具体地说,在本发明的一个示例性实施例中,用于控制微处理器中的功率参数的系统包括用于控制所述微处理器的最大功率的资源激活控制单元以及两个或更多个资源。所述资源激活控制单元控制所述资源的激活,以使所述微处理器消耗和损耗的功率不超过可配置为低于所述最大功率的预定值的功率边界。 
在本发明的另一个示例性实施例中,用于控制微处理器中的功率参数的方法包括控制所述微处理器的两个或更多个资源的激活;以及将激活的资源所消耗和耗散的总功率保持为低于功率边界,所述功率边界可以被配置为低于所述微处理器的最大功率的预定值。 
从以下将结合附图阅读的对示例性实施例的详细描述,说明了本发明的这些以及其他实施例、方面、特性和优点,或者从以下将结合附图阅读的对示例性实施例的详细描述,本发明的这些以及其他实施例、方面、特性和优点将变得显而易见。 
附图说明
图1示出了本发明的示例性实施例中的互斥资源激活(MERA)控制单元以及其他处理器核心资源; 
图2示出了本发明的示例性实施例中的微处理器组件与MERA控制单元之间的示例性接口; 
图3是示出本发明的示例性实施例中控制微处理器资源的取消激活和激活的流程图; 
图4是示出本发明的示例性实施例中控制微处理器资源的取消激活和激活的流程图; 
图5是示出本发明的示例性实施例中的用于资源对的存储在表中的按需激活和取消激活策略的流程图; 
图6是示出本发明的示例性实施例中控制微处理器资源的取消激活和 激活的流程图; 
图7是示出本发明的示例性实施例中使用迫切的资源取消激活和按需资源激活策略来控制资源的互斥激活的流程图; 
图8示出了本发明的示例性实施例中检查是否需要以及指定互斥资源(或资源组)的基于表的硬件结构; 
图9示出了本发明的示例性实施例中控制功率选通的示例性硬件结构; 
图10是示出本发明的示例性实施例中检查预测指令的状态的流程图; 
图11是示出本发明的示例性实施例中检查由MERA控制单元执行的程序指令的不规则行为的流程图;以及 
图12是示出将指令发出到备选资源来执行以避免激活所请求的选通的资源的流程图。 
具体实施方式
图1示出了本发明的示例性实施例中的互斥资源激活(MERA)控制单元以及其他处理器核心资源。示出了处理器核心10。MERA控制单元12以互斥的方式控制处理器核心10的资源。与MERA控制单元12相连的读取地址预测资源14包括地址读取资源,例如分支预测器(多个)、链接堆栈等。分支预测器(未示出)可以包括多组分支历史阵列,其可以可选地单独接通和断开电源。 
指令高速缓存资源16包括多组指令高速缓存,并具有可选地实施的功能,所述功能允许选通和激活单个指令高速缓存存储器组。可以通过在关联的高速缓存集的粒度级别处对指令高速缓存组实施选通控制来单独控制一个或多个关联的高速缓存集。 
前端18是指令流水线的前端。前端18包括指令读取机制并可以可选地包括使指令读取引擎(未示出)与指令解码以及发出流水线(未示出)分离的去耦合缓冲区。前端18与MERA控制单元12以及解码逻辑20相连。解码逻辑20与前端18、MERA控制单元12,以及发出和停止逻辑22 相连。解码逻辑20对处理器指令进行解码并可以生成流水线停止。发出和停止逻辑22将指令发送到执行资源(未示出)以便执行。发出逻辑22可以实现保存没有可用操作数的指令的缓冲区。发出逻辑22与MERA控制单元12、资源261-263,以及微代码引擎24相连。 
微代码引擎24将一组指定指令实现为微代码。微代码引擎24与MERA控制单元12和发出逻辑22相连。如果在微代码中实现的指令之一进入流水线,则微代码引擎24停止从主解码发出流水线发出指令,然后从微代码引擎24发出一系列微代码指令以便执行。 
与发出逻辑22相连的处理器资源261-263包括功能单元,例如,固点计算、浮点计算;用于加载和存储的地址计算;分支执行;SIMD(单指令多数据)以及媒体引擎等。处理器资源261-263中的一个或多个资源可以维持处理器的体系结构状态。虽然仅示出了三个资源261-263作为实例,但是本领域的技术人员将理解,可以使用任意数量的资源并且每个资源可以独自或作为子集被单独取消激活。 
处理器资源(例如,此处示出的261-263)的功耗很大程度上决定了微处理器所消耗和损耗的总功率。因此,降低和控制处理器资源(例如资源261-263)消耗的功率可以实现对微处理器总体功率的控制。 
数据预取资源28将数据预先读取到数据高速缓存30中,以便降低数据高速缓存未命中的次数。数据高速缓存30包括数据高速缓存资源321-322以包括具有可选机制(其控制数据高速缓存组的取消激活和激活)的多组数据高速缓存。可以在关联的数据高速缓存集(未示出)的粒度级别处实现数据高速缓存组的选通机制。所述选通机制可以单独取消激活一个或多个关联的数据高速缓存30的集合。将数据高速缓存资源321-322示为两个示例性组,但是可以使用任意数量的数据高速缓存组。 
中断控制逻辑34和资源激活控制寄存器36与MERA控制单元12相连。资源控制激活总线38将MERA控制单元12与处理器核心10上的其他资源(如读取地址预测单元14、指令高速缓存资源16、处理器资源261-263、数据预取资源28,以及数据高速缓存30)相连。MERA控制单 元12与前端18、解码逻辑20、发出逻辑22和微代码引擎24相连。 
诸如读取地址预测单元14、指令高速缓存资源16、资源261-263、数据预取资源28,以及数据高速缓存30之类的资源的部分或全部实现特殊的输入端口401-408,所述端口允许这些资源接受控制资源在活动模式与选通模式之间转变的控制信号。输入端口401-408示为到处理器资源的连接。输入端口401-408通过控制激活总线38将相应的资源与MERA控制单元12相连。 
MERA控制单元12通过在资源控制激活总线38上驱动相应的控制信号来控制多个微处理器资源。总线38可以实现为一组直接控制资源激活的专用点对点信号,也可以作为实现通信协议的共享总线来实现。所述通信协议可以包括各种功能,例如,断言在激活控制总线38的单个或多个周期内被激活的一个或多个资源的ID(标识)以及被取消激活的资源的ID。 
MERA控制单元12使用前端总线42和解码逻辑总线44与核心10的解码逻辑20或前端18相连,或者同时与解码逻辑20以及前端18相连。MERA控制单元12使用总线42和44上的这些连接监视处理器流水线的相应部分的活动并使用此信息控制与激活控制总线38相连的所有处理器资源在选通模式与活动模式之间的转变。 
除了MERA控制单元12以外,资源激活控制寄存器36可以可选地控制处理器资源在活动模式与选通模式之间的转变。控制寄存器总线46将控制寄存器36与MERA控制单元12相连。 
控制寄存器36通过诸如系统软件(例如,操作系统、基本输入输出系统-BIOS等)的读取和写入之类的特权指令来控制。处理器体系结构可以允许通过一组指令设置资源激活寄存器36中的相应位。ISA(指令集体系结构)可以提供用于寄存器传输或存储器传输的指令以允许设置资源激活寄存器36中的相应位;允许在资源激活寄存器36与处理器的其他组件之间进行传输;以及可选地允许在寄存器36与存储器之间进行传输。指令集可以被指定为允许相应的位设置,或者可以修改现有的指令集以提供此类功能。 
MERA控制单元12通过发出逻辑连接48与发出和停止逻辑22相连。为了控制处理器的功率参数,MERA控制单元12可以强制停止将指令发出到执行资源。由MERA控制单元12强制执行的停止可能影响流水线的发出级中的所有指令,或者影响由MERA控制单元12指定的一个或多个特定指令。发出和停止逻辑22可以被设计或修改为完全响应由MERA控制单元12断言的停止请求。 
MERA控制单元12还可以使用中断连接50与中断控制逻辑34相连,以请求中断以便程序执行以及将中断捕获到中断服务例程。中断控制逻辑34可以被设计或修改为完全响应由MERA控制单元12断言的中断或捕获请求。 
MERA控制单元12还可以可选地使用微代码总线52与微代码引擎24相连,以激活微代码引擎24以便将微代码指令发出到流水线。中断微代码引擎24可以被设计或修改为完全响应由MERA控制单元12断言的微代码发出请求。 
MERA控制单元12生成控制信号,所述控制信号使用核心组件之间的连接来控制微处理器核心资源在活动模式与选通模式之间的转变、请求流水线停止、请求从微代码引擎发出指令以及请求中断。MERA控制单元12使用这些控制信号来确保微处理器核心的总功率不超过预定的“P_bound”,其称为有界的功率限制。 
平均功耗和最大功耗之间具有区别。平均功率指通常由客户运行的一组应用或程序所平均消耗的功率。节省平均功率可降低有线应用中的能耗,并延长便携应用中的电池寿命。 
最大功率(称为P_max)是由使用微处理器中最大数量资源的代码段所消耗的功率。此类代码段可以是某些计算密集的应用(如科学计算,其中处理器必须能够提供这些代码段的全部性能)的重要部分。最大功率对封装的功率消耗能力以及供电系统的电流传输能力设置了要求。因此,最大功率对于微处理器的成本具有重大影响。 
P_bound的值小于最大功率P_max,P_max最大可以等于处理器核心 内的所有资源消耗的功率的和。在实现本发明的微处理器中,芯片供电系统可以被设计为传送有界功率P_bound而非最大功率P_max。类似地,在本发明的至少一个实施例中,微处理器芯片封装可以被设计为消耗有界功率P_bound,而非最大功率P_max。 
MERA控制单元12可以以数据选通、功率选通和时钟选通的形式执行选通。时钟选通是这样的技术:当因为由锁存器的输出驱动的组件不在特定的时钟周期内使用,或因为锁存器的输入处没有有效数据,或者是因为需要保留在先前某个时钟周期内保存在锁存器中的旧数据,而不需要特定锁存器接受和保存新数据时,阻止去往该锁存器的时钟信号进行切换。时钟选通只能节省功率的动态部分或切换部分。时钟选通可以以一个锁存器、一组锁存器的粒度实现,也可以以诸如预取单元或浮点单元之类的微处理器资源的粒度实现。 
功率选通(也称为Vdd选通)是另一种公知的功率节省技术。此技术包括在配电网络与微处理器组件的功率输出之间插入高端设备(headerdevice)。备选地,可以在接地分布网络与微处理器组件的接地输入之间插入低端设备(footer device)。可选地,可以同时实现低端设备和高端设备。所述高端设备通常实现为PFET,而所述低端设备通常实现为NFET。通过关闭高端设备和/或低端设备,可以断开组件与电源和/或地的连接,导致降低切换功率和泄漏功率。 
上述功率节省技术(例如,功率选通、数据选通和时钟选通)在此处总称为“选通”。因此,选通指三种所述的功率节省技术中的任意一种,或这三种技术的任意组合。术语“活动”指组件不受选通时的模式。MERA控制单元12用于激活微处理器组件或资源的选通,即,MERA控制单元12将微处理器组件在活动与选通模式之间切换。将资源切换到选通模式称为取消激活资源,将资源从选通模式切换到活动模式或正常操作模式称为激活资源。 
图2示出了本发明的示例性实施例中的微处理器组件与MERA控制单元之间的示例性接口。在示例性接口中,功率选通用作功率节省选通技术。 资源54位于处理器核心上并包括可选通组件56和不可选通组件58。不可选通组件58可以包括一些保存资源54的状态所需的寄存器和存储器阵列。例如,如果资源54是浮点单元,则浮点寄存器堆(register file)可以实现为不可选通组件58,而诸如加法器、乘法器和旁路之类的所有功能单元可以实现为可选通组件56。不可选通组件58内的所有电路均与地60和电源62直接相连。可选通组件56内的所有电路均与虚拟地64和虚拟电源66相连。 
虚拟电源66通过高端设备68与电源62去耦合,虚拟地64通过低端设备70与地60去耦合。高端设备68和低端设备70通过当资源54被导向进入选通模式时断言的控制信号72进行控制。低端设备70或高端设备68都可以不存在。如果没有高端设备68,则虚拟电源66直接与配电网络62相连。如果没有低端设备70,则虚拟地64直接与接地分布网络60相连。 
资源54通过输入端口409(有关其他类似端口的信息,请参见图1,401-403)与资源控制激活总线38相连。控制高端设备68和低端设备70的控制信号72可以直接与输入端口409相连。在至少一个实施例中,将输入控制信号锁存在寄存器74中并在再缓冲块76中另外进行再缓冲。再缓冲块76中可以具有多个由流水线锁存器分隔的流水线级。 
在至少一个实施例中,根据资源激活总线38(参见图1)上的协议的实施方式,可以包括总线接口逻辑78。总线接口逻辑78可以通过将在资源激活控制总线38上断言的资源ID与分配给此资源54的ID相匹配来识别导向资源54的控制信号。在至少一个实施例中,总线接口逻辑78可以支持总线协议。本领域的技术人员将理解可以使用各种协议。 
图3是示出本发明的示例性实施例中控制微处理器资源的取消激活和激活的流程图。在此流程图中,应用了按需(或迟缓)资源激活策略和按需(或迟缓)取消激活策略。在每个周期内,MERA控制单元12监视指令流水线的前端18和(可选地)解码逻辑20(参见图1)中的活动,如步骤80所示。此监视包括从指令缓冲器(未示出)中存储的指令,或针对经过解码级20的指令来收集资源使用率信息。 
在每个周期内,对于要从指令缓冲器发出的每个指令或一组指令,或经过解码逻辑20(未示出)的每个指令或一组指令,将在步骤82执行检查以查看是否有任何指令要求访问不可用的资源,即当前关断(gated off)的资源。如果没有指令需要选通的资源,则允许指令或指令组继续步骤84的解码和发出过程。如果请求的资源之一被标记为关断(即不可用),则MERA控制单元12检查资源是否符合被关断的条件(转至步骤86)。在步骤84,允许指令或指令组正常继续解码和发出过程,因为当前发出和解码周期内没有任何指令需要选通(并且因此不可用)的资源。 
步骤84完成“正常的”执行循环,即沿步骤80、82、84和80执行。此循环应在表现出规则行为的程序的多数执行周期内循环。当程序按照此正常循环来循环执行时,不执行任何与通过MERA控制单元12(参见图1)实现的MERA控制机制关联的操作,并且不会带来任何性能损失。 
步骤80、82、86、88、92、96、84和80的第二循环称为“程序阶段改变循环”。如果在步骤82有任何指令需要选通的资源,则控制移至步骤86。在步骤86,MERA控制单元12检查是否有足够数量的资源适合被选通,以便允许激活请求的资源而不超过功率边界P_bound。对于步骤86中的计算,硬件(图9中示出了将在下文中描述的此类硬件的实例)计算未标记为适合关断的资源(即保持活动的资源)与请求激活的资源的功率权重的总和。如果所述总和等于或小于预定的功率边界P_bound,则控制流向步骤88,否则将在步骤90指定要选通的资源。 
在步骤88,从在步骤86被标记为适合关断的资源的列表中选择一组资源以便关断。如果被标记为适合关断的资源数量多于使处理器功率保持低于边界P_bound所需的资源数量,则可以使用最近最少使用算法或使用软件提示,或任何其他算法(包括随机技术)指定要选通的资源。在执行步骤88之后执行步骤92,在步骤92,将取消激活所有指定的资源。 
在步骤92,MERA控制单元12通过在资源激活总线38上断言相应的信号来引导指定要选通的资源切换到选通模式。 
在步骤96,MERA控制单元12通过在资源激活总线38上断言相应的 控制信号来激活要请求激活的资源。在步骤96,MERA控制单元12可以强制实施若干停止周期以便在向通知激活的资源发出指令之前,允许这些资源完成激活过程。在步骤96可能需要额外的停止周期,以避免激活过程在被激活的资源中导致的临时功率增加,并降低电流消耗中的可能峰值。 
步骤96完成称为“程序阶段改变循环”的步骤80、82、86、88、92、96、84和80的第二循环。此循环应偶尔由“行为规范的”程序在进入新程序阶段(其使用一组新的资源)时执行。所述程序阶段改变循环导致零性能损耗或最小性能损耗。所述性能损耗(如果有)可能是由在允许发出请求在步骤96激活的资源的指令之前,允许这些资源准备好处理新指令所需的停止周期导致的。MERA控制单元12可以在步骤96强制实施额外的停止周期,以避免激活过程在被激活的资源中导致临时功率增加,并降低电流消耗中的峰值。 
如果在步骤86,MERA控制单元12找不到足够数量的适合选通的资源,则MERA控制单元12启动步骤90。在步骤90,选择要选通的资源。与步骤88不同,在步骤90,将所有资源均视为取消激活的候选对象,包括那些当前正在使用的资源。以这样的方式指定要取消激活的资源:未指定为取消激活(即资源保持活动状态)的所有资源的总功率和被请求激活的资源的功率不超过预定的功率限制P_bound。可以使用任何用于选择要关断的资源的技术,包括诸如随机选择之类的技术。作为可选的性能优化特性,可以选择要取消激活的资源,以使MERA控制单元12在以后转至步骤90的可能性变为最小。 
在步骤94,在MERA控制单元12启动取消激活序列之前,允许排空被指定为取消激活的资源中的流水线。排空流水线允许正在由指定的资源处理的所有指令(包括那些在发出级排队的指令)完成其执行。在步骤94,MERA控制单元12可以通过强制实施停止周期、启动微代码发出,以及将线程的执行优先级切换为较低级别,来可选地惩罚被确定为表现出不规则行为的程序线程。MERA控制单元12还可以可选地通过中断将不规则活动报告给系统软件。 
步骤92完成称为“不规则行为循环”的步骤80、82、86、90、94、92、96、84和80的第三循环。此不规则行为循环应仅由“行为规范的”程序极少地执行。循环通过不规则行为循环的过程所导致的性能损失要大于通过阶段改变循环所导致的性能损失。 
在指定为取消激活的资源完成取消激活过程之前,不会激活所请求的资源,即使这可能带来性能损失。这确保了即使在表现出不规则行为的程序(即,未遵循针对给定微处理器核心规定的资源使用准则的程序)出现性能损失时,也能保持核心功率低于最大功率边界P_bound。 
图4是示出本发明的示例性实施例中控制微处理器资源的取消激活和激活的流程图。将如以上在图3的上下文中所述的那样执行正常的执行循环。将根据下文所述修改阶段改变。选择所有在步骤86标记为适合关断的资源以便关断,这无需具有图3中示出的步骤88,其中仅从一组符合条件的资源选择一些资源以便关断。在步骤86之后紧接着执行步骤92,将在步骤92中取消激活所有符合条件的资源。 
将关断所有符合条件的资源。因此,关断的资源数量多于使功率保持低于P_bound所需的数量。这可以额外降低平均功率,但是,结果会导致在步骤80,遇到需要选通的资源的指令的几率更大。因此使经过阶段改变循环的频率增大。不规则行为循环如以上在图3的上下文中所述。 
图5是示出用于资源对的存储在表中的按需激活和取消激活策略的流程图。步骤的正常执行流循环(80->82->84->80)如以上在图3和图4的上下文中所述。对于阶段改变循环,控制流遵循图3中从步骤80到步骤82的流程。 
在步骤110,MERA控制单元12检查请求激活的资源(或一组资源)。MERA控制单元12检查已被指定为与请求激活的资源互斥的资源(或一组资源)是否正在使用中。如果MERA控制单元12或在本发明的实施例中实施互斥技术的另一处理器元件判定没有任何被指定为与请求激活的资源互斥的资源正在使用中,则MERA控制单元12将引导控制转至步骤92,然后如图3所述执行一系列步骤92->96->84->80。 
如果至少一个被指定为与请求激活的资源(或一组资源)互斥的资源正在使用中或计划由流水线中的一个或多个指令使用,过程将移至步骤94。接下来的一系列步骤(94->92->96->84->80)对于不规则行为是相同的并如以上在图3的上下文中所述。对于步骤86中的计算,硬件(图8中示出了将在下文描述的此类硬件的实例)在表中进行查找,所述表针对每个资源存储了指定为互斥的资源的列表以及指示所述资源当前是否正在使用中的位。 
图6是示出本发明的示例性实施例中控制微处理器资源的取消激活和激活的流程图。实现了按需(或“迟缓”)资源激活策略和“迫切的”取消激活策略以降低平均功率以及微处理器的最大功率P_max。迫切的(或“渴望的”)和“迟缓的”策略通常是用于限定特定试探过程的术语。迫切的或渴望的策略通常表示在预期发生事件时以预测的方式或主动地利用最早可用或可行的机会做出特定的决策;迟缓的策略表示将决策延迟到可能的最晚时间。 
使用了三种步骤循环:正常的执行循环、程序阶段改变循环以及不规则行为循环。用于选通资源的决策和选通指定资源的步骤实现为正常的执行循环的一部分。正常的执行循环的路径为依次执行步骤80、82、106、104和84,或80、82、106和84。 
如果没有任何被请求激活的资源,则执行步骤106。在步骤106,MERA控制单元12检查是否有任何处理器资源符合取消激活的条件。对于符合取消激活条件的资源,流水线中的任何指令都不能使用该资源。进而,在步骤106处指定要取消激活的资源中使用资源使用历史和可选的软件提示。可以使用任何公知的资源静默预测器。如果在步骤106处将一个或多个资源标识为符合取消激活的条件,则在步骤104取消激活这些资源并且允许指令在步骤84继续解码和发出过程。否则,控制路径直接转至步骤84。步骤84完成正常的执行循环。 
如果在步骤82请求激活一个或多个资源,则控制转至步骤110。在步骤110,MERA控制单元12(参见图1)检查是否可以在不超过预定功率 边界P_bound的情况下激活被请求激活的资源。检查此条件的机制类似于在步骤86中使用的如在图3中所示以及在上文中所述的机制。硬件(图9中示出了将在下文描述的此类硬件的实例)计算活动的资源以及被请求激活的资源的功率权重的总和。如果所述总和等于或小于预定功率边界P_bound,则过程继续到步骤96。否则在步骤90指定要选通的资源。 
在步骤96,MERA控制单元12激活被请求激活的资源。步骤96完成程序阶段改变循环。如果在步骤110,MERA控制单元12找不到足够数量的符合选通条件的资源,则MERA控制单元转至步骤90,在步骤90选择要选通的资源。与上文在图3中所述的步骤94和92类似的系列步骤94和步骤108完成不规则行为循环。 
图7是示出了本发明的示例性实施例中使用迫切的资源取消激活和按需资源激活策略控制资源的互斥激活的流程图。 
正常的执行流循环遵循步骤80->82->106->104->84或步骤80->82->106->84->80。对于阶段改变循环,控制流遵循从步骤80到步骤112的顺序,如以上在图6的上下文中所述。在步骤112,MERA控制单元12检查被请求激活的资源(或一组资源),查看已被指定为与被请求激活的资源互斥的资源(或一组资源)是否已关断。如果针对此检查的答案为“是”,则控制转至步骤96。如果在步骤112,针对将资源指定为互斥,答案为“否”,也就是说至少一个被指定为与被请求激活的资源(或一组资源)互斥的资源尚未被取消激活,则过程移至步骤94。系列步骤94->108->96->84的其余部分与以上在图5的上下文中所述的(连同指定互斥资源(或一组资源)集合的方式)类似。 
图8示出了本发明的示例性实施例中检查是否需要以及指定互斥资源(或资源组)的基于表的硬件结构。可以使用多种技术为MERA控制单元12(参见图1)指定互斥资源(或一组资源)的集合。在至少一个实施例中,互斥资源集是在硬件中实现并称为互斥资源标识符表的示例表114。此外,将一组指令添加到处理器ISA(指令集体系结构)以允许特权(或系统)软件读取互斥资源标识符表中的表项或将表项写入其中。表114包 括列115-126和行130-146。 
对于每个由MERA控制单元12通过资源激活总线38(参见图1)控制的资源,表114都包含一个表项(示为行)。表114使用列115中的资源标识符进行索引,并且可以实现多个读取端口。可能需要多个端口来读出表中的多行内容。虽然将到解码逻辑20(参见图3)的连接示为一个连线,但是每个周期的带宽可以是从1到N个指令(例如,N=8)。 
对于进入流水线的每组指令,解码逻辑20标识执行每组指令所需的资源。所请求资源的标识符也可以通过预解码逻辑确定,并与指令一起存储在指令高速缓存中。使用计算的索引(或一组索引)(未示出)来访问表114。 
对于每个资源,资源表114存储互斥资源的标识符(在列116中示出)。列116存储被指定为与对应于该行的资源互斥的资源的标识符。表114的列116可以由系统软件来维护。处理器的ISA(指令集体系结构)实现加载表中的列116的表项的指令,同时还实现将表中的列116的内容存储到存储器或在表114与一个或多个处理器架构的寄存器之间移动数据的指令。仅当处理器在特权模式下运行时才能执行这些额外指令。列116在系统引导期间初始化。软件对表中的列116的读写操作通过端口150完成。更新列116的数据来自图1中所示的资源激活控制寄存器36。备选地,列116的表项可以由硬件在系统加电期间预加载,例如通过扫描链预加载。 
如图所示,可以在表的列116内输入多个资源。允许使用“与”或者“或”规则指定表中的列116内的互斥资源。对于所示实例,为了激活资源R4(行136),必须关断资源R5和R6(行136;列116)。当表中列115内的资源的功率等于或接近若干资源的功率之和时,列116中的资源标识符用作“相与”对(或字符串)。在当前实例中,资源R4的功率接近资源R5和R6消耗的功率的和。 
作为“相或”对(或字符串)输入列116的资源标识符允许灵活选择要取消激活的资源。作为实例,为了激活资源R7(行142),必须取消激活资源R8或R9(行142;列116)。类似地,为了激活资源R8(行144; 列115),必须取消激活资源R7或R9(行144;列116),以及为了激活资源R9(行146),必须取消激活资源R7或R8(行146;列116)。然后,如果请求激活资源R8(行144),而资源R9(行146)当前正在使用中,但是R7(行142)未在使用,则硬件将指定取消激活资源R7(行144),并允许MERA技术继续执行阶段改变循环(参见图5和图7),而非不规则行为循环。 
表中的列118指示相应行中的资源当前是否可用(即处于活动状态)。每当相应的资源被激活时,就将列118中的表项设置为“资源可用”,并且每当相应的资源关断时,就将该表项设置为“资源不可用”。列118中的表项将由硬件通过端口128自动更新。从列118读出的位如图5和图7所示在步骤82中使用,以选择是继续正常的执行循环,还是继续图5中的步骤110(图7中的步骤112)。 
表中的列120的表项指示流水线中是否有任何正在使用(或计划使用)相应行的列116中列出的资源的指令。列120中的表项也通过硬件端口128自动更新。对于作为“相或”或“相与”字符串输入列116的每个资源,硬件在列120中维护单独的位。 
每当使用资源索引来访问表114时,将连同列116和列118中的相应位一起,从表中读出列120中的索引表项。从列120读出的位用于两个目的。首先,这些位用于决定MERA控制单元12(参见图1)应从步骤110(或112)(参见图5和图7)转至程序阶段改变循环还是不规则行为循环。例如,如果请求激活资源R1(行130),则行130列120中的位将指示被指定为与R1互斥的资源R2当前不在使用中,MERA控制单元12将从图5和图7的步骤110(112)继续到阶段改变循环。但是如果请求激活资源R2(行132),则从列120读出的与资源R2对应的行中的位将指示被指定为与R2互斥的资源R1当前正在使用中,MERA控制单元12将从图5和图7的步骤110(112)继续到不规则行为循环。 
当存在多个用于选择要取消激活的资源的选项时(当使用“或”规则将若干资源输入两列时,将发生这种情况),从列120读出的位将由选择 逻辑148用来指定要取消激活的资源。例如,如果请求激活资源R7,从列116读出的信息将指定必须取消激活资源R8或R9。从列120读出的位将指示资源R8不在使用中,而资源R9当前正在使用中。在此情况下,选择逻辑148将选择资源R8来取消激活。然后。MERA控制单元12将在图5和图7示出的步骤110(112)之后继续到阶段改变循环,而不会带来不规则行为循环的性能损失。 
根据列122中存储的值或资源使用率计数器逐周期地更新表114中的列120内的位,其方式为:每当特定资源的资源使用率计数器设置为零时,列120中与该资源对应的所有“互斥资源正在使用中”表项都设置为“否”。每当特定资源的资源使用率计数器设置为非零值时,列120中与该资源对应的所有表项都设置为“是”。例如,由于与资源R4(行136)对应的资源使用率计数器在本实例中为零,因此列120行138和140中的表项均设置为“否”。 
根据列122中的表项来更新列120中的表项所需的硬件包括检测零值的电路,以及首先发现列120中要求更新的相应表项及使用写入端口128执行所需更新的逻辑。当特定资源的资源使用率计数器更改为零或从零进行更改时,搜索列120中需要更新的表项包括扫描列116中的表项以检测哪些行将该资源列为互斥。备选地,硬件可以使用列116的反向映射来维护表。例如,反向映射表将在行130中列出资源R2,在行132中列出资源R1,以及在行136中列出资源R5和R6。 
表114中的列122维护每个资源的资源使用率计数器。列122中的计数器由硬件通过端口128逐周期地更新。每当使用特定资源的指令进入流水线时,将递增列122中的相应表项内的计数器。每当使用特定资源的指令完成执行(也就是说,该指令从处理器流水线中退出)或从流水线清仓时,就递减列122中的相应表项内的计数器。例如,如果使用资源R1指令进入流水线,则与行130列122中的资源R1对应的计数器将从5递增到6。列120中的计数器内的非零值指示对应的资源正在使用中。计数器的零值指示对应的资源不在使用中。 
表114中的列124存储软件提示,所述提示旨在将有关已知的对应资源的使用率信息与软件进行关联。列124与列116相同,由软件通过端口150进行更新。写入软件提示列的指令可供系统和用户代码使用。软件提示的实例包括表示未预期由程序使用对应的资源的“未使用”,或者表示预期由该程序经常使用对应的资源的“经常使用”。只要存在多个用于指定要取消激活的资源的选项,就从表读出软件提示,并且所述提示由指定要取消激活的资源的逻辑148使用。例如,如果请求激活资源R9,则必须取消激活资源R7或R8。由于这些资源当前都不在使用中,因此选择逻辑148将使用从列124读出的用于资源R7和R8的信息。资源R7的软件提示指示该资源可能再次由程序使用。然后,资源R8将被指定为取消激活,并且资源R7将保持活动模式。独占资源标识符表中的软件提示列124是可选的。软件提示列124的更新来自图1中的资源激活控制寄存器36。 
表114可以可选地实现存储资源的使用率历史的列126。此使用率历史信息可以由指定要取消激活的资源的选择逻辑148使用。每当存在多个用于指定要取消激活的资源的选项,并且不能根据从列120和124读出的位来做出决策时,选择逻辑148将通过使用率历史信息来做出决策。将选择不经常使用(或最近不常使用)的资源来取消激活。 
列126中的使用率历史信息还用于在图6和图7中所示的步骤106中选择要取消激活的资源,其中资源使用率历史列126记录每个资源在最近时间内被使用的计数,或者上次使用资源是在多少个周期之前。将从列126读出的数据与可以由特权软件为每个资源或每个资源组分别设置的阈值进行比较。如果资源使用率计数器值下降到为该资源设置的阈值以下,则比较逻辑152将在步骤106(参见图6和图7)发信号通知图1中的MERA控制单元12所述资源符合取消激活的条件。类似地,在维护指示上次使用资源的周期的计数器的实施例中,如果计数器超过为该资源设置的阈值,则比较逻辑152将在步骤106发信号通知图1中的MERA控制单元12(参见图6和图7)所述资源符合取消激活的条件。此信息由MERA控制单元12用于在步骤106做出决策。这仅适用于图6和图7中所示的为取消激活 资源实现迫切策略的实施例。 
上述的表114是一个示例,本领域的技术人员将理解在实现资源标识符表时可以存在各种变型,例如,不同的列顺序、表的转置、不同的索引编制机制,以及不同的更新表中的各个字段的策略(例如仅在偶数周期更新列126)。此外,对于不同的列,软件和硬件更新机制的各种组合是可能的。进而,只有表中的某些列可以根据特定应用的需求来实现。 
图9示出了本发明的示例性实施例中控制功率选通的示例性硬件结构。将在下文描述在本发明的至少一个实施例中使用的MERA控制单元。资源使用率表154提供在若干步骤处控制MERA单元流所需的信息。列156包括资源标识符;列158包括软件提示/指示;列160包括资源使用率历史;列162包括资源使用率计数器;列164包括指示资源是否符合取消激活条件的资源位;列166包括资源可用性指示器;并且列168包括资源功率指示器。将行170-178分配给资源标识符R1-R7。这些列156-162的更新方式类似于以上在图8上下文中针对表114描述的方式。 
资源使用率表154的列164示出了对应行中的资源是否符合取消激活的条件。列164的表项“1”指示符合条件而表项“0”指示资源不符合取消激活的条件。这些位由硬件根据对应行的列158、160和162中的值进行更新。如果列162中的资源使用率计数器为非零,则对应的资源不符合取消激活的条件。如果列158中的软件提示指示该资源经常由程序使用,则对应的资源不符合取消激活的条件。否则,如果列160中的资源使用率历史低于预定(可由软件更新)阈值,以及/或者可选的软件提示指示该资源不太可能由程序使用,则列164中的对应位被设置为“1”,指示资源符合取消激活的条件。 
资源使用率表的列168存储每个资源的功率。这些值可以在系统加电时加载,也可以在制造时被硬编码。 
在每个周期从表154读出列166和168的值并将其转发到电路182。如果列166中的值为“1”,则对应的数据选通电路182将从列168读出的值转发到多输入加法器196,否则,如果列166中的值为“0”,则执行选 通的数据选通电路182将零转发到多输入加法器196。多输入加法器196将所有行中的值相加,然后将结果(它是当前活动的所有资源的总功率)转发到多输入加法器186。 
在每个周期从表中读出列164和168的值并将其转发到数据选通电路182。如果列164中的值为“1”,则对应的数据选通电路182将从列168读出的值转发到多输入加法器184,否则,如果列164中的值为“0”,则执行选通的数据选通电路182将零转发到多输入加法器184。多输入加法器184将所有行170-178中的值相加,然后将结果(它是可以取消激活的所有资源的总功率)转发到多输入加法器186。从加法器186中的结果中减去从加法器184接收的值(也就是说,在将值添加到其余的操作数之前更改值的符号)。 
被请求激活的资源的列168中的值也被转发到多位加法器186。加法器186的其余输入连接到保存此文档中先前定义的P_bound值的寄存器188。寄存器188在系统加电期间写入,并且可以可选地实现为可由系统软件写入。从加法器186的其他输入处的值中减去寄存器188的值(也就是说,在将值添加到其余的操作数之前更改值的符号)。将加法器186的输出的符号转发到符号检测器190。符号检测器的输出192指示是否有足够数量的资源符合关断的条件。例如,可以使用输出192在图3、图4和图6中示出的步骤86(110)处判定是否有足够数量的资源符合关断的条件。 
为了简洁,以简化的方式示出了加法器186、194、196和184以及符号检测器190的逻辑视图。这些加法器186、194、196和184以及符号检测器190可以实现为统一的多输入进位保留加法器。 
通过与图8中示出的硬件结构类似的硬件结构,使用以上在图8的独占资源标识符表114的上下文中说明的额外步骤,可以支持要取消激活的资源的选择。 
图10是本发明的示例性实施例中检查推测性指令的状态的流程图。流程图198中示出了MERA控制单元12所使用的控制流中的一系列步骤。流程图198中的系列步骤借助推测性发出提高了微处理器中的指令执行效 率。在检测到请求访问关断的资源的指令之后进入示出的系列控制步骤。例如,到所示的系列步骤的控制流可以来自步骤82,如图3-7中所示。 
步骤200是控制序列的第一步,将在此步骤检查请求访问关断的资源的指令的状态。如果指令为非推测性指令(也就是说,已解决该指令之前的所有分支),则控制在退出点206退出,然后继续检查控制是需要转至程序阶段改变循环还是不规则行为循环(例如,参见图3-7)。 
如果在步骤200判定指令为推测性指令(也就是说,该指令之前存在至少一个分支尚未解决),则控制转至步骤202。在此步骤,停止发出指令的过程,直至已解决所有之前的分支。在从步骤202退出时,指令状态变为非推测性的或指令被从流水线清仓。 
在步骤204,将检查指令的状态。如果此指令已变为非推测性指令,则控制退出此可选的步骤序列,然后继续检查控制是需要转至程序阶段改变循环还是不规则行为循环(例如,参见图3-7)。如果指令被清仓,则控制在退出点208退出此可选的步骤序列,然后继续执行图3-7中所示的步骤80或84,或者通过退出点206继续执行图6-7中所示的步骤82。 
图11是示出本发明的示例性实施例中检查由处理器执行的程序线程的不规则行为的流程图。控制流中存在若干可以在该处插入流程图210中所示的步骤序列的点。当在图3-7中的实施例的控制流内检测到下列条件之一后,可以进入所示的控制步骤序列: 
a)检测到请求访问关断的资源的指令(例如,图3-7中所示的步骤82的“是”分支),或者 
b)没有足够的可供取消激活的资源(例如,图3和图4的实施例的步骤86的“否”分支),或者 
c)指定为互斥的资源正在使用中(例如,图5中所示的步骤110的“是”分支)或未关断(例如,图7中所示的步骤112的“否”分支)或者 
d)无法在不超过设定的功率限制的情况下激活所请求的资源(例如,图6中的实施例的步骤110的“否”分支) 
为了实现步骤214,硬件可以针对每个单独的资源,或针对资源组实 现资源激活历史计数器222。这些计数器是在激活相应的资源时递增的老化计数器。此外,对于每个资源或一组资源,硬件存储可由软件更新的阈值。一组比较器224将列230中的计数器与列232中的相应阈值进行比较。如果任何计数器超过相应的阈值,则断言计数器输出处的触发信号226。 
在步骤214,如果设置了触发器(即,资源激活历史指示在活动模式与选通模式之间的资源切换频率高于预定的资源激活频率阈值),则控制转至步骤216。否则,控制在退出点218退出步骤序列,然后返回相应的控制点,例如,返回图3-7中的实施例的步骤86,或返回图3-4中所示的步骤90,以及返回图5和图7中所示的步骤94。 
在步骤216,启动到系统软件的捕获(例如,通过对图1中进入中断/捕获控制块34的输入的信号50断言相应的控制)。所述捕获向系统软件(例如,线程调度器)指出当前正在运行的线程组合导致执行效率不高,或者指出当前线程表现出不规则的行为并且应被切换到较低优先级的模式,或者应被移至在另一核心上执行或应被终止。在捕获期间,可以在软件中仿真请求访问选通的资源的指令。在步骤216之后,从退出点220重新开始执行应用代码。 
图12是示出将指令发出到备选资源来执行以避免激活选通的资源的流程图。控制流中存在若干可以在该处插入流程图236中所示的步骤序列的点。当在图3-7中的实施例的控制流内检测到下列条件之一后,可以进入流程图236中控制步骤序列: 
a)没有足够的可供取消激活的资源(例如,图3和图4中所示的步骤86的“否”分支),或者 
b)指定为互斥的资源正在使用中(例如,图5中所示的步骤110的“是”分支)或未关断(例如,图7中所示的步骤112的“否”分支)或者 
c)无法在不超过设定的功率限制的情况下激活所请求的资源(例如,图6中所示的步骤110的“否”分支) 
在步骤240,MERA控制单元12检查是否可以发出请求选通的资源的指令以便在备选资源上执行。在备选资源中执行可能需要多次发出指令 (即,在多个周期内将指令发送到同一单元,或者将指令替换为一系列其他指令以便不需要激活任何选通的资源)。将指令替换为一系列其他指令可以由微代码引擎(例如,图1中的微代码引擎24)来执行。此类指令替换的实例包括使用一系列加法指令来执行乘法指令;使用一系列32位乘法执行64位乘法指令;移位指令和加法指令;以及使用一系列标量指令执行SIMD(单指令多数据)指令。另一实例是在单个浮点单元上执行需要两个浮点单元(如果并行发出)的一组两个浮点指令,所述指令通过相继发出两个浮点标量指令来执行。 
如果无法将指令发出到备选资源,则控制在退出点246退出流程图236中的步骤序列,然后返回各个实施例的相应的控制点,例如,返回图3-4和图6中的实施例的步骤90,或返回到图5和图7中所示的步骤94。 
作为步骤240的检查结果,如果判定指令可以被发出到备选资源,则控制转至步骤242。在步骤242,指令被替换为一系列发出到备选资源的指令(可能是顺序的),并且控制返回图3-7中所示的步骤80或步骤84,或者转至图6-7中所示的步骤106。 
接下来将描述插入停止周期。MERA控制单元12(参见图1)可以在以上图3-7中所述的控制流的不同步骤处强制实施若干停止周期。例如,可以在图3-7中所示的步骤96之后强制实施若干停止周期,以便允许在步骤96中被通知激活的资源完成激活过程。此步骤确保了在将任何指令发出到所请求的资源之前,所请求的资源已被完全激活。此外,可以在图3-5中所示的步骤92与96之间强制实施其他停止周期,以避免被激活的资源中的激活过程导致增加临时功率。 
虽然此处参考附图描述了示例性实施例,但是应当理解,本发明并不限于此处所述的示例性实施例,并且在不偏离本发明的范围或精神的情况下,本领域的技术人员可以在其中实现各种其他更改和修改。所有此类更改和修改都旨在被包括在如所附权利要求定义的本发明的范围之内。 

Claims (23)

1.一种用于控制微处理器中的功率参数的设备,所述设备包括:
资源激活控制单元,用于互斥地控制所述微处理器的两个或更多个资源的激活;
其中所述资源激活控制单元选通包括除第一选择中的资源以外的一个或多个资源的第二选择,之后激活包括微处理器指令请求激活的一个或多个资源的所述第一选择,使所述微处理器消耗和耗散的功率不超过被配置为低于最大功率的预定值的功率边界,其中所述最大功率是由使用所述微处理器中最大数量资源的代码段所消耗的功率。
2.根据权利要求1的设备,其中通过可编程地控制的机制来配置所述功率边界。
3.根据权利要求1的设备,其中所述资源激活控制单元使用功率选通、时钟选通、数据选通、组合的功率与时钟选通、组合的功率与数据选通,或时钟与数据选通技术的组合来选通所述第二选择中的资源。
4.根据权利要求1的设备,其中所述资源激活控制单元停止发出微处理器指令,直至完全激活所述第一选择中的所述指令所请求的资源。
5.根据权利要求4的设备,其中所述资源激活控制单元延迟激活所述第一选择中的资源,直至所述第二选择中的资源完成取消激活过程。
6.根据权利要求1的设备,其中所述资源激活控制单元通过从由所述第一选择的元素索引的资源表读取所述第二选择的一个或多个表项来确定形成所述第二选择的要取消激活的资源。
7.根据权利要求6的设备,其中以硬件、软件或硬件与软件的组合来实现所述资源表。
8.根据权利要求6的设备,其中通过软件命令、硬件设备或软件与硬件的组合来更新所述资源表。
9.根据权利要求8的设备,其中所述资源表存储了由软件维护的资源使用率提示和由硬件维护的资源使用率计数器,在选择要取消激活的资源中使用所述提示和计数器。
10.根据权利要求1的设备,其中所述资源激活控制单元选择所述第二选择以使所述微处理器消耗的最大功率不超过所述功率边界。
11.根据权利要求10的设备,其中所述资源激活控制单元选择所述第二选择以取消激活所述第二选择中的所有资源。
12.根据权利要求11的设备,其中所述资源激活控制单元选择所述第二选择,以便在所述第二选择中选择保持所述最大功率低于所述功率边界所需的最少数量的资源。
13.根据权利要求1的设备,其中根据使用率需求在尽可能晚的时间以迟缓的方式实现所述第一选择中的资源的激活。
14.根据权利要求1的设备,其中需要在激活所述第一选择中的资源之一以前取消激活当前活动的资源的条件时将触发不规则行为循环,所述循环将启动取消激活所述第二选择中的资源之一的过程。
15.根据权利要求1的设备,其中所述资源激活控制单元导致请求访问被取消激活的资源之一的推测性指令停止,直至所述推测性指令变为非推测性的或通过指令无效机制被无效。
16.一种用于控制微处理器中的功率参数的方法,所述方法包括:
互斥地控制所述微处理器的两个或更多个资源的激活;以及
将激活的资源所消耗和耗散的总功率保持为低于功率边界,所述功率边界被配置为低于所述微处理器的最大功率的预定值,其中所述最大功率是由使用所述微处理器中最大数量资源的代码段所消耗的功率;
激活包括微处理器指令请求激活的一个或多个资源的第一选择;以及
选通包括除所述第一选择中的所述资源以外的一个或多个资源的第二选择。
17.根据权利要求16的方法,其中所述选通步骤包括在激活所述第一选择中的资源之前,对所述第二选择中的资源执行功率选通、时钟选通、数据选通、组合的功率与时钟选通、组合的功率与数据选通,或组合的时钟与数据选通,其中由微处理器指令请求所述第一选择中的要激活的资源。
18.根据权利要求16的方法,其中所述选通步骤包括:
停止发出微处理器指令,直至所述第二选择中的资源已准备好被取消激活;以及
在激活所述第一选择中的由所述微处理器指令请求的资源之前取消激活所述第二选择中的资源。
19.根据权利要求16的方法,其中所述选通步骤包括选择所述第二选择中的要被取消激活的资源,以使所述微处理器在指令周期内消耗的功率不超过所述功率边界。
20.根据权利要求16的方法,其中所述选通步骤包括在出现需要使用所述第一选择中的功率选通资源的条件时触发阶段改变循环,以在激活至少一个选通的资源之前选择所述第二选择中的一个或多个未被使用的资源以便关断。
21.根据权利要求16的方法,其中所述选通步骤包括在出现需要在激活所述第一选择中的至少一个资源之前取消激活当前活动的资源的条件时触发不规则行为循环,所述不规则行为循环将启动取消激活所述第二选择中的资源之一的过程。
22.根据权利要求16的方法,其中所述选通步骤包括停止请求访问被取消激活的资源之一的推测性指令,直至所述推测性指令变为非推测性的或通过指令无效机制被无效。
23.根据权利要求16的方法,还包括通过从由所述第一选择的元素索引的资源表读取所述第二选择的一个或多个表项来确定形成所述第二选择的要取消激活的资源。
CN2006800301360A 2005-08-19 2006-07-19 用于控制微处理器中的功率参数的设备和方法 Expired - Fee Related CN101243372B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/207,333 US7447923B2 (en) 2005-08-19 2005-08-19 Systems and methods for mutually exclusive activation of microprocessor resources to control maximum power
US11/207,333 2005-08-19
PCT/US2006/028210 WO2007024374A2 (en) 2005-08-19 2006-07-19 Systems and methods for mutually exclusive activation of microprocessor resources to control maximum power

Publications (2)

Publication Number Publication Date
CN101243372A CN101243372A (zh) 2008-08-13
CN101243372B true CN101243372B (zh) 2011-05-04

Family

ID=37768515

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800301360A Expired - Fee Related CN101243372B (zh) 2005-08-19 2006-07-19 用于控制微处理器中的功率参数的设备和方法

Country Status (5)

Country Link
US (1) US7447923B2 (zh)
EP (1) EP1946200A4 (zh)
JP (1) JP4811879B2 (zh)
CN (1) CN101243372B (zh)
WO (1) WO2007024374A2 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070094521A1 (en) * 2005-10-24 2007-04-26 Brooks Robert C Current-sensing control system for a microprocessor
US8112534B2 (en) * 2006-07-26 2012-02-07 Dell Products L.P. Apparatus and method for remote power control
US20110213995A1 (en) * 2007-08-09 2011-09-01 International Business Machines Corporation Method, Apparatus And Computer Program Product Providing Instruction Monitoring For Reduction Of Energy Usage
US20090044032A1 (en) * 2007-08-09 2009-02-12 Timothy Chainer Method, Apparatus and Computer Program Product Providing Instruction Monitoring for Reduction of Energy Usage
JP2009151573A (ja) * 2007-12-20 2009-07-09 Fujitsu Microelectronics Ltd 半導体集積回路
WO2010010515A1 (en) * 2008-07-23 2010-01-28 Nxp B.V. Adjustment of a processor frequency
KR101361508B1 (ko) * 2008-08-19 2014-02-10 삼성전자 주식회사 화상형성장치, 시스템 및 이 장치의 기능설정메뉴 제공방법
US8195704B2 (en) * 2009-01-06 2012-06-05 International Business Machines Corporation Validation and correction in a distributed namespace
EP2400387B1 (de) * 2010-06-25 2013-03-13 AVG Netherlands B.V. Verfahren zur Performanceverbesserung von Computern
US8565685B2 (en) * 2011-01-28 2013-10-22 Nokia Corporation Utilization-based threshold for choosing dynamically between eager and lazy scheduling strategies in RF resource allocation
US9218048B2 (en) 2012-02-02 2015-12-22 Jeffrey R. Eastlack Individually activating or deactivating functional units in a processor system based on decoded instruction to achieve power saving
US9098271B2 (en) 2012-02-05 2015-08-04 Jeffrey R. Eastlack Autonomous microprocessor re-configurability via power gating pipelined execution units using static profiling
US9104416B2 (en) 2012-02-05 2015-08-11 Jeffrey R. Eastlack Autonomous microprocessor re-configurability via power gating pipelined execution units using dynamic profiling
US9003218B2 (en) 2012-05-21 2015-04-07 International Business Machines Corporation Power shifting in multicore platforms by varying SMT levels
US8959371B2 (en) * 2012-07-17 2015-02-17 Freescale Semiconductor, Inc. Techniques for reducing processor power consumption through dynamic processor resource allocation
JP6024828B2 (ja) 2013-08-08 2016-11-16 富士通株式会社 消費電力値が所定電力値以下である状態情報を、測定した処理性能値に基づいて選択する選択装置
US9311978B2 (en) * 2013-10-23 2016-04-12 Globalfoundries Inc. Regulated power gating for growable memory
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US11126433B2 (en) * 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10162922B2 (en) 2017-03-15 2018-12-25 Qualcomm Incorporated Hybrid clock gating methodology for high performance cores
US11409560B2 (en) 2019-03-28 2022-08-09 Intel Corporation System, apparatus and method for power license control of a processor

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4488006A (en) * 1982-07-01 1984-12-11 At&T Bell Laboratories Apparatus for controlling the application of telephone line power in a telephone set
JP3729827B2 (ja) * 1989-12-15 2005-12-21 株式会社ルネサステクノロジ マイクロプロセッサ
US5189314A (en) 1991-09-04 1993-02-23 International Business Machines Corporation Variable chip-clocking mechanism
JP3058986B2 (ja) 1992-04-02 2000-07-04 ダイヤセミコンシステムズ株式会社 コンピュータシステムの節電制御装置
EP0649086B1 (en) * 1993-10-18 2000-07-19 National Semiconductor Corporation Microprocessor with speculative execution
US5940785A (en) 1996-04-29 1999-08-17 International Business Machines Corporation Performance-temperature optimization by cooperatively varying the voltage and frequency of a circuit
JP3383170B2 (ja) * 1996-10-29 2003-03-04 株式会社東芝 消費電力制限機能つきプロセッサ
US6385715B1 (en) * 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
JP2000322259A (ja) * 1999-05-11 2000-11-24 Hitachi Ltd データ処理装置
US6883089B2 (en) * 2000-12-30 2005-04-19 Intel Corporation Method and apparatus for processing a predicated instruction using limited predicate slip
US6792338B2 (en) * 2001-04-06 2004-09-14 Honeywell International, Inc. System and method for actively limiting the power drawn from a power distribution bus
US6721672B2 (en) * 2002-01-02 2004-04-13 American Power Conversion Method and apparatus for preventing overloads of power distribution networks
JP2003296123A (ja) * 2002-01-30 2003-10-17 Matsushita Electric Ind Co Ltd 電力制御情報を付与する命令変換装置及び命令変換方法、命令変換を実現するプログラム及び回路、変換された命令を実行するマイクロプロセッサ
US6996728B2 (en) * 2002-04-26 2006-02-07 Hewlett-Packard Development Company, L.P. Managing power consumption based on utilization statistics
EP1573490A2 (en) * 2002-12-04 2005-09-14 Koninklijke Philips Electronics N.V. Software-based control of microprocessor power dissipation
JP2004199139A (ja) * 2002-12-16 2004-07-15 Matsushita Electric Ind Co Ltd プロセッサシステム、命令列最適化装置、および命令列最適化プログラム
US7185215B2 (en) * 2003-02-24 2007-02-27 International Business Machines Corporation Machine code builder derived power consumption reduction
US7111182B2 (en) * 2003-08-29 2006-09-19 Texas Instruments Incorporated Thread scheduling mechanisms for processor resource power management
US7155623B2 (en) * 2003-12-03 2006-12-26 International Business Machines Corporation Method and system for power management including local bounding of device group power consumption
JP2006059068A (ja) * 2004-08-19 2006-03-02 Matsushita Electric Ind Co Ltd プロセッサ装置
US7467306B2 (en) * 2005-03-08 2008-12-16 Hewlett-Packard Development Company, L.P. Methods and systems for allocating power to an electronic device

Also Published As

Publication number Publication date
US7447923B2 (en) 2008-11-04
JP4811879B2 (ja) 2011-11-09
US20070043960A1 (en) 2007-02-22
EP1946200A4 (en) 2008-11-26
JP2009505279A (ja) 2009-02-05
WO2007024374A3 (en) 2007-09-20
CN101243372A (zh) 2008-08-13
EP1946200A2 (en) 2008-07-23
WO2007024374A2 (en) 2007-03-01

Similar Documents

Publication Publication Date Title
CN101243372B (zh) 用于控制微处理器中的功率参数的设备和方法
US10409605B2 (en) System and method for using a branch mis-prediction buffer
US8219834B2 (en) Predictive power gating with optional guard mechanism
US9063804B2 (en) System to profile and optimize user software in a managed run-time environment
US9354884B2 (en) Processor with hybrid pipeline capable of operating in out-of-order and in-order modes
CN100456228C (zh) 用于中止软件线程的方法和系统
CN102160033B (zh) 具有稀疏和密集预测缓存的复合分支预测装置
US8291195B2 (en) Processing device
US9652243B2 (en) Predicting out-of-order instruction level parallelism of threads in a multi-threaded processor
US10754655B2 (en) Automatic predication of hard-to-predict convergent branches
CN103092320A (zh) 处理器指令发布扼制
CN101449238A (zh) 本地和全局分支预测信息存储
US20110296149A1 (en) Instruction Set Architecture Extensions for Performing Power Versus Performance Tradeoffs
US8219833B2 (en) Two-level guarded predictive power gating
US20150261270A1 (en) Method and apparatus for proactive throttling for improved power transitions in a processor core
US20220197662A1 (en) Accessing A Branch Target Buffer Based On Branch Instruction Information
Zhang et al. On maximizing resource utilization for simultaneous multi-threading (smt) processors by instruction recalling
CN111752889A (zh) 用于具有指令再循环的多级保留站的方法和设备
US20220197657A1 (en) Segmented branch target buffer based on branch instruction type
Kwak et al. Selective access to filter cache for low-power embedded systems
Sharkey et al. Exploiting operand availability for efficient simultaneous multithreading
Tang et al. Simultaneous way-footprint prediction and branch prediction for energy savings in set-associative instruction caches
Torres et al. Counteracting bank misprediction in sliced first-level caches
Marr Microarchitecture choices and tradeoffs for maximizing processing efficiency

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110504

Termination date: 20200719

CF01 Termination of patent right due to non-payment of annual fee