CN101493761B - 处理器流水线处理指令的方法及相应的处理器 - Google Patents

处理器流水线处理指令的方法及相应的处理器 Download PDF

Info

Publication number
CN101493761B
CN101493761B CN2008100035575A CN200810003557A CN101493761B CN 101493761 B CN101493761 B CN 101493761B CN 2008100035575 A CN2008100035575 A CN 2008100035575A CN 200810003557 A CN200810003557 A CN 200810003557A CN 101493761 B CN101493761 B CN 101493761B
Authority
CN
China
Prior art keywords
pipelining
stage
module
enhancing
operating load
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.)
Active
Application number
CN2008100035575A
Other languages
English (en)
Other versions
CN101493761A (zh
Inventor
沈文博
邵鹏
李彧
常晓涛
戈弋
王华勇
邹峘浩
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
Priority to CN2008100035575A priority Critical patent/CN101493761B/zh
Priority to US12/357,910 priority patent/US9563259B2/en
Publication of CN101493761A publication Critical patent/CN101493761A/zh
Priority to US13/457,011 priority patent/US9348406B2/en
Application granted granted Critical
Publication of CN101493761B publication Critical patent/CN101493761B/zh
Priority to US14/947,823 priority patent/US9671856B2/en
Priority to US15/224,410 priority patent/US10254819B2/en
Active 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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • 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)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Microcomputers (AREA)
  • Power Sources (AREA)
  • Computer Security & Cryptography (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

一种处理器流水线处理指令的方法及相应的处理器,其中根据功能将流水线分为基本流水级和增强流水级,其中所述基本流水级始终启用;根据工作负载的性能要求启用或关闭所述增强流水级。还公开了一种中央处理单元的流水线处理指令的方法,其中根据功能将流水线分为基本流水级和增强流水级;将每个流水级分为一个基本模块和至少一个增强模块,其中所述基本模块始终启用;根据工作负载的性能要求启用或关闭所述流水级中的增强模块。

Description

处理器流水线处理指令的方法及相应的处理器
技术领域
本发明总体上涉及处理器功耗领域。更具体地,本发明涉及一种在基于流水线(pipeline)技术的处理器中降低功耗的方法及相应的处理器。
背景技术
目前,功耗/能源以及环境问题正越来越引起人们的关注。在IT基础设施方面,世界上每天有成千上万的计算设备在运行,例如移动电话、台式机、服务器等等。但是,根据相关数据统计,这些计算设备的资源利用率非常低,例如以Intel为代表的x86服务器的利用率只有10%-15%。
人们一直在力图寻找从各种不同级别解决功耗问题的方案,例如,利用先进的技术来设计低功耗的芯片集,或者根据负载调整操作电压和频率等。
所有现代的处理器,即CPU,都是采用CMOS工艺制造的。CMOS的功耗可以分为动态功耗和静态功耗,其中静态功耗是指即使器件未执行任何动作也会消耗的待机功耗。它主要由晶体管的漏电流引起。动态功耗主要是晶体管工作时翻转动作所消耗的功率。动态功耗是CPU功耗的主要来源,因此,解决好CPU中的动态功耗是降低整个CPU功耗的关键。其中,本领域公知的,动态功耗由公式(1)所示:
PDYNAMIC=CL·NSW·V2 DD·f(1)
其中,PDYNAMIC是动态功耗,CL是总的等效电容,NSW是切换次数与系统时钟的比值,VDD是电源功率,f是操作频率。从公式(1)可以看出,动态功耗与总的等效电容成正比,如果能够减小总的等效电容,就可以线性地降低动态功耗,从而降低整个CPU的功耗。在芯片设计中,电容等效于执行操作的晶体管,因此减少芯片中执行操作的晶体管就等于减小了等效电容,从而可以降低功耗。
在现代集成处理器中,例如微处理器、数字信号处理器,通常采用复杂的流水线架构进行设计。在CPU中,流水线和数据/指令馈送逻辑是最活跃的部件,它们占用了CPU总功率中相当大的一部分,据数据统计,流水线消耗了总功率中约三分之一的功率。因此,降低流水线的功耗可以有效地降低处理器的功耗。
流水线的概念是参照工业生产上的装配流水线,具体地说,就是在CPU中由若干个(例如,6个)不同功能的电路单元来组成一条指令处理流水线,然后将一条指令分成6步由这些电路单元分别执行,通过指令重叠的方法,这样就可以实现在一个CPU时钟周期完成一条指令,从而提高CPU的运算速度。典型地,把流水线上这些不同功能的电路单元称为处理阶段(可替换地也称为“级”),每一级都执行特定功能并将处理结果传送给下一级。
在早期的流水线结构中,只有实现基本功能的流水级,最经典的是5级流水线结构,具体功能包括:取指令(IF)、指令解码(ID)、执行(EX)、存储器访问(MEM)和回写(WB)。其中,取指令IF用于从PC以及随机存储器(RAM)中取来指令并将指令输出给下一级,指令解码ID用于对取来的指令进行解码,执行EX通常包括算术逻辑单元(ALU)以用于执行所解码的指令,存储器访问MEM用于访问存储器以获取操作数据,回写WB用于将执行结果写入寄存器或存储器中以备后用。具有这些实现基本功能的流水级,CPU就可以执行计算任务。我们把这种设计方法定义为“效率型设计DFE(design for efficiency)”,例如ARM一类的CPU。
随着集成电路生产工艺的提高,晶体管的尺寸不断缩小,单个芯片可以集成更多的晶体管,同时人们对计算性能的要求也越来越高,因此,在CPU的流水线设计中逐步添加了一些用于提高计算性能的功能,流水线的级也逐步增多,例如具有13级、19级,甚至30多级,上述的5级流水线结构被进一步细分,5个基本功能也被分布在多个级中,并且在各级中所实现的功能也日益复杂。这些所添加的用于提高运算性能的附加功能例如可以包括:超标量(Superscalar)、冲突检测(HazardsDetection)、分支预测(branch prediction)、寄存器重命名(RegisterRenaming)、指令选择(Issue Selection)、重排序缓冲区(Reorder Buffer)、数据转发(Data Forwarding)、预测执行(speculative execution)、动态调度(dynamic scheduling)等。其中,超标量是通过内置多条流水线以便同时执行多个处理,换句话说,就是利用更多的晶体管来同时实现多个任务,即用空间换取时间;冲突检测,也称为乱序执行,是指将多条指令不按照程序规定的顺序分发给各相应的流水级进行处理,而是根据各个流水级所处的工作状态以及待处理的指令能否提前执行的具体情况进行分析判断,判断之后根据结果,将能提前执行的指令立即发送给相应的流水级执行,也即充分利用空闲的流水级,使CPU内部电路满负荷运转,从而相应提高CPU运行程序的速度;分支预测涉及CPU的动态执行技术,当指令中不存在条件分支时只需按照指令原先的顺序执行即可,当指令中存在条件分支时,其必须根据指令在流水线中处理后的结果才能决定是否按照原先顺序继续执行,分支预测是指在前条指令结果出来之前就能预测到分支是否转移,那么就可以提前执行相应的指令,从而避免了流水线的空闲等待,提高了CPU的运算速度。其他的附加功能都是类似地基于提高性能的目的添加的。我们把这种设计方法定义为“性能型设计DFP(design for performance)”,例如Pentium一类的CPU。
图1中示出了现代处理器中典型地具有19级的流水线架构,其中除了包括前面所提到的执行任务所需的基本功能外,还包括各种用于提高性能的复杂的功能,并且有的流水级中包括多个模块。
从上述介绍的现代处理器的架构设计中可以明显看出,由于添加了大量附加功能,虽然为处理器的运算带来了更高的性能、更快的速度,但是这些功能的添加需要晶体管来实现,因此同时也占用了更多的芯片面积,消耗了更多的功率。例如,1995年时,主流的PC配置为486dx2-66CPU,其功耗为2.5W;而当前,Pentium4(Presocott),峰值功率为255W,空闲时的功率也有120W,平均增长超过60倍。
进一步地,我们还注意到,在现有的计算设备中存在着严重的资源浪费现象:几乎所有计算设备的CPU都没有被完全利用或者利用率特别低。例如,假设台式机的CPU可以运行在3.2GHz的高频上,但是一天中可能只有5%的时间需要使用这么高的计算能力,也即达到它的峰值性能,而在其余95%的时间里,具有简单流水线的低频CPU就可以完成计算任务。但是在这95%的时间中,由于CPU所使用的复杂的流水线设计使得即使在不需要很高的运算性能时,仍然会调用例如前面所述的用于提高计算性能的流水级和/或模块,因此这些流水级和/或模块的使用占用了大量的能源,却没有带来任何有意义的输出,白白浪费功率。而且,随着计算机技术的进步,用户更关心的是在满足性能需求的前提下,哪种方式最省电,也即功耗最低。
从上述分析可知,由于这些设备在大部分时间内都处于低负载运行,因此,在这些计算设备中存在很大的能源节约空间,如果能够在不损失性能或者最小化性能损失的条件下降低计算设备的功耗,则将大大有助于减轻能源和环境问题。
在IEEE2001,Proceeding of the28th Annual InternationalSymposium on Computer Architecture(ISCA’01)中,标题为“Powerand Energy Reduction Via Pipeline Balancing”的论文(此后简称参考文献1)提出了一种流水线平衡(PLB)技术,该技术根据程序的并行度来调整流水线的宽度,在并行度较高时,采用较宽的流水线,在并行度较低时,采用较窄的流水线,从而达到降低功耗的目的,其实质即超标量技术。这种技术在一定程度上降低了功耗,但是有其局限性:即该技术仅仅是根据程序的并行度来决定流水线的宽度,将一条流水线看成是一个单元,这是一种比较粗略的功耗管理技术,因此至少在下列两种情况下并不适用。一种情况是,例如在程序并行度很高但是对性能要求却不是很高时,比如在浏览网页时,按照浏览者的阅读习惯是从上往下看,因此下部分的内容相对于上部分内容显示得稍微晚一些,并不影响用户的浏览,用户也能够接受,若根据该PLB技术,采用较宽的流水线将网页上的所有内容同时显示给用户,虽然表现出来的性能很高,但是用户的感受却不会有太大差别,因此有点大材小用,并且会耗费较多的功率。另一种情况是,例如在处理诸如音频播放这类不能并行处理的程序时,根据该PLB技术则只能采用较窄的流水线,虽然能够节约功耗,但是性能却无法提高。
上述现有技术从某一方面出发在一定程度上降低了CPU的功耗,但是其应用存在局限性,并且没有涉及实现性能与功耗之间的最佳平衡。因此,有必要提供一种机制,其既能够有效地降低功耗又能满足一定的性能要求,并且可广泛应用于各种环境下的CPU中。
发明内容
为了克服现有技术中的上述缺陷,本发明提供了一种在基于流水线技术的处理器中,有效降低功耗并满足一定性能要求的方法以及相应的处理器。
根据本发明的一方面,提供了一种中央处理单元的流水线处理指令的方法,其中根据功能将流水线分为基本流水级和增强流水级,其中所述基本流水级始终启用;根据工作负载的性能要求启用或关闭所述增强流水级。
根据本发明的另一方面,提供了一种基于流水线的处理器,其中流水线包括根据功能划分的基本流水级和增强流水级,其中所述基本流水级始终启用;所述处理器还包括控制器,用于根据工作负载的性能要求启用或关闭所述增强流水级。
根据本发明的又一方面,提供了一种中央处理单元的流水线处理指令的方法,其中根据功能将流水线分为基本流水级和增强流水级;将每个流水级分为一个基本模块和至少一个增强模块,其中所述基本模块始终启用;根据工作负载的性能要求启用或关闭所述流水级中的增强模块。
根据本发明的再一方面,提供了一种基于流水线的处理器,其中流水线包括根据功能划分的基本流水级和增强流水级;每个流水级包括一个基本模块和至少一个增强模块,其中所述基本模块始终启用;所述处理器还包括控制器,用于根据工作负载的性能要求启用或关闭所述流水级中的增强模块。
本发明所提供的方法可以应用于各种环境下的CPU,有效地实现降低功耗、提高资源利用率的目的。进一步地,本发明的方法适应性很强,可以根据实际的性能需求自动地在DFE型和DFP型的CPU之间快速切换,既能满足计算设备峰值性能的需求,又能在大部分低负载的时间内有效的减少功耗,并且不增加额外的负担。
此外,本发明的方法不干扰其他功耗管理方法,即可以与已有的其他CPU功耗管理方法同时使用。例如,本发明的方法可以与上述参考文献1中的流水线平衡技术兼容,也即,在考虑流水线的宽度的同时,在每条流水线中应用本发明的方法,根据实际所需的性能,基于优先级顺序添加流水级的模块。
附图说明
参考以下结合附图的详细说明,本发明的特征、优点以及其它方面将变得更加明显,在附图中:
图1示出了现有技术中现代CPU典型的19级流水线架构;
图2a示出了低负载情况下根据本发明的实施方式的某个流水级的工作状况示意图;
图2b示出了中度负载情况下根据本发明的实施方式的与图2a相同的流水级的工作状况示意图;
图2c示出了高负载情况下根据本发明的实施方式的与图2a相同的流水级的工作状况示意图;
图3从整个流水线的角度示出了根据本发明实施方式的流水线架构图;
图4示出了根据本发明实施方式的一种情况下的简化流水线架构图;
图5示出了根据本发明实施方式的处理器系统图;
图6示出了在根据本发明的处理器上运行程序时的流程图。
请注意,在全部附图中,相同的参考标记表示相同的部件。
具体实施方式
在以下的详细描述中,为了便于全面理解本发明,通过示例的方式说明了许多特定的细节。不过本领域技术人员可以很清楚,本发明也可以不需要这些细节就能实现。此外,为了更加清楚地解释本发明,在某些实例中,公知的方法、处理、原件和电路仅仅是进行了概括性地描述,没有详细说明。以下结合附图对本发明进行更详细的解释和说明。应当理解,本发明的附图及实施例仅用于示例性作用,不是用于限制本发明的保护范围。
本发明的基本原理在于:提供了一种模块化设计方法及相应的处理器,其根据不同的性能需求,在流水线中提供满足该性能需求的功能模块和/或流水级,关闭其他不需提供的模块和/或流水级,从而有效地降低功耗。
如前所述,现代CPU的流水线架构中包括多个流水级,每个流水级执行一定的功能,并将结果传送到流水线中的下一个流水级。本发明根据各流水级所实现的功能,将其划分为:基本流水级和增强流水级。
基本流水级是对应于处理器处理程序或执行作业所必需的功能所采用的流水级,例如前面所述的早期流水线结构中所实现的功能,一般说来基本流水级包括:取指令(IF)流水级、指令解码(ID)流水级、执行(EX)流水级、存储器访问(MEM)流水级和回写(WB)流水级。
增强流水级是为了提高处理器的性能所采用的流水级。例如前面所述的现代CPU的流水线中所添加的附加功能,比如可以包括:超标量(Superscalar)流水级、冲突检测(Hazards Detection)流水级、分支预测(branch prediction)流水级、寄存器重命名(Register Renaming)流水级、指令选择(Issue Selection)流水级、重排序缓冲区(Reorder Buffer)流水级、数据转发(Data Forwarding)流水级、预测执行(speculativeexecution)流水级、动态调度(dynamic scheduling)流水级等。这些附加流水级虽然都是用于提升处理器的性能,但是由于它们是基于不同考虑添加的,因此各自对CPU整体性能的改善程度也不相同,各自所消耗的功率也不相同。进一步地,即使同样是分支预测流水级,但是分支预测所采用的算法不同时,带来的预测准确性也不同,因此,对CPU整体性能的改善程度也不同。基于上述情况,又可以根据这些增强流水级实际对CPU整体性能的贡献以及做出该贡献时所消耗的功率的比值(简称性能功耗比),为这些增强流水级分配一定的优先级别,例如按照性能与功耗的比值的大小排序,可以将优先级别从高到低分配。具体地,在各个流水级之间划分时,可以将这些流水级标记为:基本流水级、增强流水级1、增强流水级2、...,其中数字代表增强流水级的优先级级别。
进一步地,本发明还在各个流水级内部进行模块化划分,类似于前面流水级划分的概念,可以将每个流水级划分为多个模块,其中包括基本模块和增强模块。基本模块是对应于处理器处理程序或执行作业所必需的功能该流水级所采用的模块,如果是基本流水级,基本模块是执行该基本流水级的最小功能的模块。例如取指令流水级,基本模块是它执行的最小功能(例如,每次只取1条指令)。如果是增强流水级,基本模块是使数据能够不被改变的通过该增强流水级的模块。例如分支预测流水级,基本模块让数据不被改变的通过。增强模块是为了提高CPU的性能该流水级所采用的模块,如果是基本流水级,增强模块是增强该基本流水级的功能的模块。例如取指令流水级,增强模块是增强取指令功能(例如,额外每次多取1条或3条指令,使取指令流水级能够每次取2条或4条指令)的模块。如果是增强流水级,增强模块是使该增强流水级能够执行其功能或者更有效地执行其功能的模块。例如分支预测流水级,增强模块使分支预测流水级能够执行或者更有效地执行分支预测功能。同样地,可以进一步各个增强模块对系统性能所做的贡献以及做出该贡献时所消耗的功率的比值,也即性能功耗比,来为这些增强模块分配一定的优先级,例如按照性能与功耗的比值的大小排序,可以将优先级别从高到低分配。具体地,在各个流水级的模块之间进行划分时,可以将这些模块标记为:基本模块、增强模块1、增强模块2、...,其中数字代表增强模块的优先级级别。
下面参考图2a-2c,其中示出了本发明的功耗管理方法的原理。为了简单起见,在图2a-2c中仅示出了流水线中的一个流水级,其中包括信号流入、信号流出以及控制信号。本领域技术人员应当理解,在流水线的其他流水级中可以同样应用此功耗管理方法。
首先参考图2a,其中示出了低负载情况下根据本发明的实施方式的某个流水级的工作状况示意图。由于工作负载较低,系统根据工作负载判断基本的模块就可以达到所需要的性能要求,因此在流水级中仅启用基本模块B,其他模块则关闭,也即其他模块不消耗功率。以这种低负载低功耗的方式工作,在满足所需性能的前提下,可以充分提高能源利用率。
接着参考图2b,其中示出了中度负载情况下根据本发明的实施方式的与图2a相同的流水级的工作状况示意图。对比图2a,在图2b中由于工作负载增加了,因此在流水级内还启动了两个具有最高优先级级别的增强模块E1。虽然相比于图2a的流水级增加了两个模块E1,也即多了两个模块需要消耗功率,但是由于这两个模块是根据用户所执行的程序的性能需要增加的,因此它们得到了充分利用,换句话说,这两个增强模块E1所消耗的功率换来了性能的提升,并且是用户所需要的性能的提升,因此,这种工作方式能源利用率也非常高。进一步地,由于这种增强模块的加入不是随意加入的,而是按照性能与功耗比的优先级别加入,因此,在满足所需性能要求的前提下,仍然能够最大限度地降低功耗。具体地说,例如需要提高50%的性能情况下,优选地首先启动只需增加10%的晶体管(意味着增加10%的功耗)的增强模块,而不是启动需要增加60%的晶体管(意味着增加60%的功耗)的增强模块。
再接着参考图2c,其中示出了高负载情况下根据本发明的实施方式的与图2a相同的流水级的工作状况示意图。对比图2b,在图2c中由于工作负载相对于图2b又增加了,因此在流水级内又多启动了两个具有次高优先级级别的增强模块E2。与图2b的情况类似,虽然多了几个模块消耗功率,但是由于这些模块E2是根据用户所执行的程序的性能需要增加的,因此它们也得到了充分利用,也即在满足用户所需要的性能要求的前提下,最大限度地降低了功耗,因此,尽管高功耗,这些功耗的使用都是有意义的输出,也就是说能源利用率非常高。
另外,从统计的实际计算设备运行的数据来看,由于大部分时间(约95%的时间)计算设备都处于低负载运行状态,因此,可以在系统刚启动时,只使用基本模块进行工作,随着工作负载的变化,再动态进行调整,例如在工作负载增加时启动一些用于提升性能的增强模块,而在工作负载降低时,关闭某些增强模块。整个控制都由系统自动执行,用户基本上不会有所察觉,因为他们所需要的性能都得到了满足。
以上描述了在某一流水级中,根据工作负载的变化,动态启动或关闭增强模块的示例性实施方式。但是,本领域技术人员应当理解,上述实施方式中也可以将基本模块替换为基本流水级,增强模块替换为增强流水级,从而应用在某个流水线中,根据工作负载的性能要求,启用或关闭增强流水级,此处关闭增强流水级是指不启用增强流水级的功能,例如可以通过旁路该增强流水级,或者让数据不被改变地直接通过该增强流水级来实现。
下面参考图3,其中从整个流水线的角度描述了根据本发明的一种实施方式的流水线架构。从图3中可以看出,在一定工作负载和/或性能需求的情况下,应用本发明的方法所实现的流水线结构,作为示例性说明的该流水线结构包括13级流水级,每个流水级中具有一个或者多个模块以用于实现一定的功能,其中图中深色的模块表示根据工作负载和/或性能需求的要求启用的模块,其余模块表示根据工作负载和/或性能需求不需要启用的模块,也就是关闭的模块。从图中可以看出,除了执行计算任务所必需的基本模块之外,根据实际工作负载的大小和/或性能需求,还启用了一些增强模块。例如从图3中间的几级流水级可以看出,发布Issue级启用了9个模块,执行Execute级启用了3个模块。同时,结合前面图2a-2c对单个流水级的描述,可以在图3所示的流水线各级中按照其中各个模块的性能与功耗比的优先级顺序,根据工作负载和/或性能需求启用或关闭相应的增强模块。在图3中,上面5级流水级是按顺序执行的,中间4级流水级是可以乱序执行的,下面4级流水级也是按顺序执行的。
为了对比明显,在图4中示出了,低负载情况下,也即在计算设备的大部分运行时间期间,应用本发明的功耗管理方法后,简化的流水线逻辑架构图,即,仅使用基本流水级的流水线结构。从图4中可以看出,简化后的流水线只保留了取指令IF流水级、指令解码ID流水级、执行EX流水级、存储器访问MeM流水级和回写WB流水级的功能,与早期的流水线结构相同。不过,本发明不是简单地回退到早期的流水线结构,本发明仅在低负载/低性能要求时,才仅启用这些基本的流水级或通过仅启用各个流水级中的基本模块而形成逻辑上的这些基本的流水级,在高性能要求时,可以灵活地调整流水线,因此,本发明可以满足不同的负载/性能要求,而不会带来功率的浪费。
接着参考图5,其中示出了根据本发明实施方式的处理器系统图,在该图中仅示出了与本发明的教导有关的组件,本领域技术人员可以理解,在处理器系统中还存在其他的相关组件,诸如各种寄存器、总线单元等,但是本发明并不在于此,因此在图5中省略其他的相关组件以免不必要地模糊本发明的实施方式。
图5的处理器系统中示出了CPU50,其中CPU50包括控制器52、指令缓存器54(I cache)、数据缓存器56(D cache)以及流水线结构58。
控制器52用于按照本发明的实施方式控制流水线的工作流程,例如控制特定模块和/或流水级的启动和关闭。指令缓存器54用于为CPU的流水线提供统一的指令流,例如用于向流水线中的取指令IF流水级提供指令。数据缓存器56用于至少提供流水线运算过程中所需要的操作数据以及缓存处理结果。流水线结构58用于按照本发明的实施方式处理指令。特别地,在流水线结构58中还示出了若干个流水级,分别标记为58-1、58-2、...、58-N-1、58-N。在每个流水级中包括一个或多个处理模块,这些模块按照前面所述的分类方法,分为基本模块B-module和增强模块E-module,其中增强模块又可以进一步地按照各模块的性能与功耗的比值分配优先级,具有高的性能与功耗比值的模块具有高的优先级别,具有低的性能与功耗比值的模块具有低的优先级别,在图5中,仅作为示例性的方式,示出了两级优先级的增强模块,其中较高优先级别的增强模块标记为E1,较低优先级别的增强模块标记为E2。不过,本领域技术人员应当理解,虽然图5中仅示出了两级优先级,但是可以根据实际情况的需要划分更多的优先级。另外,本领域技术人员还应当理解,图5中仅仅是出于示例性的方便,所绘出的各流水级内的模块基本相同,但是实际情况中各流水级可以有不同的模块组成。
进一步地,CPU50中的控制器52还可以包括存储装置(未示出),用于存储与控制相关的信息,例如存储流水线结构中各流水级的优先级别、各流水级中各个模块的优先级别和/或存储工作负载与各流水级和/或模块的关联关系。这些与控制相关的信息可以以查找表、数据库、算法或者任何能够将工作负载与流水线的各流水级和各个模块相关联的数据结构的形式存储在存储装置中。在执行控制操作时,控制器访问存储装置中所存储的关联关系,根据当前的工作负载判断需要启用哪些流水级和/或模块,从而进一步控制所涉及的流水级和/或模块的启用和关闭。
下面参考图6,其中示出了根据本发明的实施方式在处理特定程序(或任务)时的示例性的方法步骤流程。本领域技术人员可以理解上述流程仅仅用于示例性作用,可以针对其他不同的过程进行适应性地修改。
如图6中的步骤S1所示,操作系统OS在工作运行过程中,可以判断当前工作负载的满荷程度。上述判断步骤可以是周期性地定时启动,也可以是通过事件触发启动,例如,所执行的程序发生变化时启动该判断步骤。根据判断结果,可以有以下几种不同的操作。
一种情况是系统没有任务需要执行,也即系统空闲,则可以进入步骤S2,这时可以关闭所有增强模块和/或增强流水级,仅保留基本模块和/或基本流水级,即步骤S3,以便以最低的功耗来支持所需的功能。
第二种情况是系统的工作负载减小,这时进入步骤S4。由于系统工作负载减小,可以不需要那么多的流水级和/或模块就可以完成所要执行的任务,因此进入步骤S5,即减少所需启用的增强流水级和/或增强模块,例如关闭一些增强模块和/或流水级。控制器可以根据工作负载减少的多少或者当前工作负载实际所属的级别,按照其存储装置中所存储的关联关系,判断需要关闭哪些增强流水级和/或增强模块。由于增强流水级和/或增强模块已经按照性能与功耗比的大小分配了优先级,因此,优选地首先关闭优先级较低的增强流水级和/或增强模块。这样,在工作负载下降时,既能满足所需要的性能要求,又能最大限度地降低功耗,充分利用所提供的能源。当工作负载减小得较多时,这时可能需要关闭较多的增强流水级和/或增强模块,仍然按照优先级别的次序从最低、次低、...进行关闭,直至最后只留下基本的流水级和/或模块。
第三种情况是系统的工作负载增加,这时进入步骤S6。与第二种情况的处理过程类似,不过这时需要增加增强流水级和/或增强模块,即前进到步骤S7。具体地说,控制器根据工作负载所增加的量或者当前工作负载实际所属的级别,按照其存储装置中所存储的关联关系,判断需要启用哪些增强流水级和/或增强模块。同样,由于增强流水级和/或增强模块已经按照性能与功耗比的大小分配了优先级,因此,优选地首先启用优先级较高的增强流水级和/或增强模块。这样,在工作负载增加时,既能有效地满足所需要的性能要求,又能最大限度地降低功耗,充分利用所提供的能源。当工作负载增加得较多时,这时可能需要启用较多的增强流水级和/或增强模块,仍然按照优先级别的次序从最高、次高、...进行启用,直至全部的增强流水级和/或增强模块都启用。
第四种情况是系统的工作负载没有变化,这时进入步骤S8。一般说来,工作负载没有变化时不需要进行任何调整。不过,也有例外。例如,在系统刚启动时是使用默认的流水线配置进行处理,当默认的流水线配置与当前的工作负载不匹配时,即使工作负载没有变化,控制器也可以判断当前的工作负载所属的级别,然后相应地调整流水线结构以匹配当前的工作负载,也即在满足当前性能要求的前提下,最大限度地降低功耗。所述调整可以是增加一些增强流水级和/或增强模块,也可以是减少一些增强流水级和/或增强模块,根据具体情况进行判断。因此,可以在步骤S9中进行上述处理。
此外,系统刚开始启动时,可以有一个默认的流水线配置,根据不同的应用环境,默认配置可以不尽相同。例如,对于前面所述的目前的大部分计算设备来说,由于大部分时间(约95%的时间)都处于低负载运行状态,因此,可以将默认配置设置为仅包括基本的流水级和/或模块。而对于某些总是承担重要运算任务的服务器,可以将默认配置设置为包括所有的流水级和/或模块。当然,还可以各种各样的其他类型的默认设置。
在上述方法流程中,由CPU50中的控制器52控制执行各增强流水级和增强模块的开启和关闭。如本领域技术人员所公知的,开启和/或关闭这些增强流水级和增强模块可以采用软件的方式实现,例如通过使能(enable)信号控制是否开启。另外,开启和/或关闭这些流水级和增强模块也可以采用硬件的方式实现,例如通过开关、多路选择器实现。不过,本发明的目的并不旨在于此,任何能够开启和/或关闭增强流水级和增强模块的方式都可以应用于本发明的实施方式中。
另外,在本发明的实施方式中对各增强流水级以及各增强模块的划分方式是按照性能与功耗比的大小分配相应的优先级别,这种对增强流水级和增强模块的划分在CPU的设计阶段即可完成。虽然大部分CPU的流水线结构类似,但是每一种CPU的流水线结构都有其各自的特点,因此具体的优先级别可能不尽相同。例如,前面所提到的分支预测功能,同样是分支预测模块,但是在不同类型的CPU流水线结构中,可能会应用不同的指令预测机制,例如采用高级动态执行引擎(advanceddynamic execution engine)和指令执行跟踪缓存(execution trace cache)可以提高分支预测的准确性,减少由于预测失败而带来的指令恢复时间。因此,这些分支预测模块对CPU整体运算性能的提升也是不一样的,当然它们的功耗也不一样。因此,在CPU的设计阶段,可以通过仿真、prototype测试等方式得到这些增强流水级和/或增强模块的性能参数,例如,通过运行同样的一段程序,不同模块执行后得到相同结果时所消耗的时间可能不尽相同,由此可以获得它们的性能指标。而增强流水级和/或增强模块的功耗也与各种因素有关,简单直接地方式就是根据它们所用的晶体管数目,或者说根据在芯片上所占用的面积来判断功耗为多少。显然,本领域技术人员可以理解,还可以有很多其他种方式来测量各增强流水级和/或增强模块的功耗。不过,本发明的目的并不在此,只要获得了这些增强流水级和/或增强模块的性能与功耗比值,就可以应用本发明的实施方式,甚至也可以不需要具体的性能与功耗比值,只要知道这些增强流水级和/或增强模块之间的按照性能与功耗比值排列的优先级别顺序就可以应用本发明的实施方式,获得本发明所带来的优势。
进一步地,本发明中各种工作负载的判断可以通过本领域技术人员公知的各种各样的方式来判断,本发明的目的并不旨在于此,只要提供了当前工作负载的强度即可,或者只要提供工作负载的变化量即可。
通过阅读以上对本发明实施方式的描述,本领域技术人员可以很明显看出,本发明也可以有多种变体。例如,本发明的一种实施方式可以是仅适应性地调整流水级中的增强模块的启用和关闭;本发明的又一种实施方式可以是仅适应性地调整各个增强流水级的启用和关闭;本发明的另一种实施方式可以是适应性地同时调整流水级以及流水级中的模块的启用和关闭。这些变体都落入本发明的范围之内。
进一步地,本发明的实施方式也可以与已有的其他功耗管理方法相结合使用,例如,本发明的方法可以与上述参考文献1中的流水线平衡PLB技术兼容,也即,在存在多条流水线时,根据工作负载,既控制流水线的宽度,同时还在每条流水线中应用本发明的方法,也即根据实际所需的性能,基于优先级顺序添加增强流水级和/或增强模块。
从上述描述应该理解,在不脱离本发明精神的情况下,可以对本发明各实施方式进行修改和变更。本说明书中的描述仅仅是用于说明性的,而不应被认为是限制性的。本发明的范围仅受所附权利要求书的限制。

Claims (18)

1.一种中央处理单元的流水线处理指令的方法,其中:
根据功能将流水线分为基本流水级和增强流水级,其中所述基本流水级始终启用;
根据工作负载的性能要求启用或关闭所述增强流水级;
根据增强流水级的性能与功耗比来确定增强流水级的优先级,其中高优先级的增强流水级具有高的性能与功耗比;
其中,根据工作负载的性能要求,按照所述优先级启用或关闭所述流水线中的增强流水级。
2.如权利要求1所述的方法,其中:当工作负载增加时,根据所述优先级从高到低的顺序启用增强流水级。
3.如权利要求1所述的方法,其中:当工作负载减少时,根据所述优先级从低到高的顺序关闭增强流水级。
4.如权利要求1所述的方法,其中所述方法通过查找表来确定要被启用或关闭的增强流水级,所述查找表存储有所述增强流水级的优先级信息。
5.根据权利要求1所述的方法,其中:
进一步将每个流水级分为一个基本模块和至少一个增强模块,其中所述基本模块始终启用;
根据工作负载的性能要求启用或关闭所述流水级中的增强模块。
6.如权利要求5所述的方法,进一步包括:
根据增强模块的性能与功耗比来确定增强模块的优先级,其中高优先级的增强模块具有高的性能与功耗比;
其中,根据工作负载的性能要求,按照所述优先级启用或关闭所述流水级中的增强模块。
7.如权利要求6所述的方法,其中:当工作负载增加时,根据所述优先级从高到低的顺序启用增强模块。
8.如权利要求6所述的方法,其中:当工作负载减少时,根据所述优先级从低到高的顺序关闭增强模块。
9.如权利要求6所述的方法,其中所述方法通过查找表来确定要被启用或关闭的增强模块,所述查找表存储有所述增强模块的优先级信息。
10.一种基于流水线的处理器,其中:
流水线包括根据功能划分的基本流水级和增强流水级,其中所述基本流水级始终启用;
所述处理器还包括第一控制器,用于根据工作负载的性能要求启用或关闭所述增强流水级;
所述增强流水级具有不同的优先级,所述优先级根据增强流水级的性能与功耗比来确定,其中高优先级的增强流水级具有高的性能与功耗比;
其中所述第一控制器根据工作负载的性能要求,按照所述优先级启用或关闭所述流水线中的增强流水级。
11.如权利要求10所述的处理器,其中所述第一控制器在工作负载增加时,根据所述优先级从高到低的顺序启用增强流水级。
12.如权利要求10所述的处理器,其中所述第一控制器在工作负载减少时,根据所述优先级从低到高的顺序关闭增强流水级。
13.如权利要求10所述的处理器,其中所述第一控制器还包括存储装置,用于存储所述增强流水级的优先级信息。
14.根据权利要求10所述的处理器,其中:
每个流水级进一步包括一个基本模块和至少一个增强模块,其中所述基本模块始终启用;
所述第一控制器进一步用于根据工作负载的性能要求启用或关闭所述流水级中的增强模块。
15.如权利要求14所述的处理器,其中:
所述增强模块具有不同的优先级,所述优先级根据增强模块的性能与功耗比来确定,其中高优先级的增强模块具有高的性能与功耗比;
其中所述第一控制器进一步根据工作负载的性能要求,按照所述优先级启用或关闭所述流水级中的增强模块。
16.如权利要求15所述的处理器,其中所述第一控制器进一步在工作负载增加时,根据所述优先级从高到低的顺序启用增强模块。
17.如权利要求15所述的处理器,其中所述第一控制器进一步在工作负载减少时,根据所述优先级从低到高的顺序关闭增强模块。
18.如权利要求15所述的处理器,其中所述第一控制器还包括存储装置,用于存储所述增强模块的优先级信息。
CN2008100035575A 2008-01-25 2008-01-25 处理器流水线处理指令的方法及相应的处理器 Active CN101493761B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN2008100035575A CN101493761B (zh) 2008-01-25 2008-01-25 处理器流水线处理指令的方法及相应的处理器
US12/357,910 US9563259B2 (en) 2008-01-25 2009-01-22 Apparatus and method for activating and shutting down individual enhanced pipeline stages based on stage priority and performance requirements
US13/457,011 US9348406B2 (en) 2008-01-25 2012-04-26 Apparatus and method for activating and shutting down enhanced modules within an activated pipeline stage based on performance requirements and module priority
US14/947,823 US9671856B2 (en) 2008-01-25 2015-11-20 Apparatus and method for activating and shutting down enhanced pipeline stages and enhanced modules based on priority and performance requirements
US15/224,410 US10254819B2 (en) 2008-01-25 2016-07-29 Apparatus and method for activating and shutting down enhanced pipeline stages and enhanced modules based on priority and performance requirements

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008100035575A CN101493761B (zh) 2008-01-25 2008-01-25 处理器流水线处理指令的方法及相应的处理器

Publications (2)

Publication Number Publication Date
CN101493761A CN101493761A (zh) 2009-07-29
CN101493761B true CN101493761B (zh) 2013-05-29

Family

ID=40900538

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100035575A Active CN101493761B (zh) 2008-01-25 2008-01-25 处理器流水线处理指令的方法及相应的处理器

Country Status (2)

Country Link
US (4) US9563259B2 (zh)
CN (1) CN101493761B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101493761B (zh) * 2008-01-25 2013-05-29 国际商业机器公司 处理器流水线处理指令的方法及相应的处理器
US8918194B2 (en) 2010-03-31 2014-12-23 Panasonic Corporation Mounting-line power control device and mounting-line power control method
CN104317557B (zh) * 2014-10-27 2017-01-18 杭州中天微系统有限公司 基于流水线轮动的低峰值功耗嵌入式处理器
KR102375925B1 (ko) * 2015-08-31 2022-03-17 삼성전자주식회사 Cpu의 작동 방법과 상기 cpu를 포함하는 시스템의 작동 방법
CN108293317B (zh) * 2015-11-27 2019-11-01 株式会社富士 元件供给装置的电源控制装置及电源控制方法
CN109213529B (zh) * 2017-07-07 2021-09-28 龙芯中科技术股份有限公司 流水线处理器调度指令的方法、装置及流水线处理器
CN107770090B (zh) * 2017-10-20 2020-05-01 深圳市楠菲微电子有限公司 用于控制流水线中寄存器的方法和装置
US11238557B2 (en) * 2019-03-29 2022-02-01 Intel Corporation Workload-based maximum current
US10963259B2 (en) * 2019-06-06 2021-03-30 International Business Machines Corporation Accounting for multiple pipeline depths in processor instrumentation
CN113126958B (zh) * 2019-12-31 2022-07-08 思必驰科技股份有限公司 基于信息流的决策调度定制方法和系统
CN114610578B (zh) * 2022-03-17 2023-12-29 飞腾信息技术有限公司 一种资源状态管理方法、装置、电子设备及存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666537A (en) 1994-08-12 1997-09-09 Intel Corporation Power down scheme for idle processor components
US5951689A (en) 1996-12-31 1999-09-14 Vlsi Technology, Inc. Microprocessor power control system
WO2005109154A2 (en) * 2004-05-10 2005-11-17 Powerdsine, Ltd. Method for rapid port power reduction
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US20060129856A1 (en) * 2004-12-10 2006-06-15 Main Kevin K System and method for expansion card power limiting
US7549067B2 (en) * 2004-12-21 2009-06-16 Alcatel Lucent Power prioritization in power source equipment
US7730336B2 (en) * 2006-05-30 2010-06-01 Ati Technologies Ulc Device having multiple graphics subsystems and reduced power consumption mode, software and methods
US7340325B2 (en) * 2005-08-03 2008-03-04 Texas Instruments Incorporated Priority powerdown system and method for power distribution systems
US7401242B2 (en) 2005-09-27 2008-07-15 International Business Machines Corporation Dynamic power management in a processor design
US8868888B2 (en) * 2007-09-06 2014-10-21 Qualcomm Incorporated System and method of executing instructions in a multi-stage data processing pipeline
US7971043B2 (en) * 2007-11-22 2011-06-28 Andes Technology Corporation Electronic system and method for changing number of operation stages of a pipeline
CN101493761B (zh) * 2008-01-25 2013-05-29 国际商业机器公司 处理器流水线处理指令的方法及相应的处理器
US8327126B2 (en) 2008-08-25 2012-12-04 International Business Machines Corporation Multicore processor and method of use that adapts core functions based on workload execution
JP2010198128A (ja) * 2009-02-23 2010-09-09 Toshiba Corp プロセッサシステム

Also Published As

Publication number Publication date
US20160335094A1 (en) 2016-11-17
US20090193424A1 (en) 2009-07-30
CN101493761A (zh) 2009-07-29
US10254819B2 (en) 2019-04-09
US9563259B2 (en) 2017-02-07
US20120210106A1 (en) 2012-08-16
US20160147288A1 (en) 2016-05-26
US9671856B2 (en) 2017-06-06
US9348406B2 (en) 2016-05-24

Similar Documents

Publication Publication Date Title
CN101493761B (zh) 处理器流水线处理指令的方法及相应的处理器
US10048743B2 (en) Power efficient processor architecture
JP6289444B2 (ja) 利用可能な並列性の量に従って1命令当たりのエネルギーを変化させるための方法及び装置
US20190011975A1 (en) Dynamically Controlling Cache Size To Maximize Energy Efficiency
US7865747B2 (en) Adaptive issue queue for reduced power at high performance
US7725745B2 (en) Power aware software pipelining for hardware accelerators
Burd et al. Energy efficient microprocessor design
US9164570B2 (en) Dynamic re-configuration for low power in a data processor
US9329666B2 (en) Power throttling queue
US8806181B1 (en) Dynamic pipeline reconfiguration including changing a number of stages
Alipour et al. Delay and bypass: Ready and criticality aware instruction scheduling in out-of-order processors
CN116420140A (zh) 可动态配置的过度供应的微处理器
Marculescu Application adaptive energy efficient clustered architectures
Shieh et al. Energy-efficient tasks scheduling algorithm for dual-core real-time systems
US8095780B2 (en) Register systems and methods for a multi-issue processor
Afram et al. FlexCore: A reconfigurable processor supporting flexible, dynamic morphing
Tang et al. Architectural adaptation for power and performance
Ramírez et al. A simple low-energy instruction wakeup mechanism
Jones et al. Compiler directed issue queue energy reduction
Latorre et al. Efficient resources assignment schemes for clustered multithreaded processors
Koh et al. Functional unit chaining: a runtime adaptive architecture for reducing bypass delays
Sato et al. Simultaneous Dynamic and Static Power Reduction Utilizing Power Heterogeneous Functional Units

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