专利名称:根据可用并行数目改变每条指令能量的方法和设备的制作方法
技术领域:
本发明一般涉及可以执行具有变化数量的标量和并行资源需求的程序的微处理器,更具体地涉及采用多个核的微处理器。
背景技术:
在一些实施例中,计算机工作负荷连续地从具有少量内在并行(parallelism)(主要为标量)的工作负荷转到具有显著数量的并行(主要为并行)的工作负荷,且这种本性在软件的不同程序段之间可能不同。典型的标量工作负荷包括软件开发工具、办公室生产力套装软件、和操作系统内核例程。典型的并行工作负荷包括3D图形、媒体处理、和科学应用。标量工作负荷可退回范围0.2至2.0的IPC(每个时钟执行的指令),而并行工作负荷可以获得范围为4至几千IPC的吞吐量。后一种的高IPC通过使用指令级的并行和线程级的并行可以得到。
现有技术微处理器通常设计成以标量或并行计算机性能为主要目标。为了实现高的标量性能,经常期望尽可能地减小执行潜伏期。减小有效潜伏期的微架构技术包括预测执行、分支预测、和高速缓存。对高标量性能的追求已经实现了大的乱序、高度预测、深管线微处理器。为了获得高的并行计算机性能,则期望提供尽可能大的执行吞吐量(带宽)。提高吞吐量的微架构技术包括宽超标量处理、单指令多数据的指令、芯片级多处理、以及多线程。
当尝试构建可同时在标量和并行任务上执行良好的微处理器时会产生问题。一个问题可能起因于如下理解,即,实现短潜伏期所需的设计技术在某些情形中可能与实现高吞吐量所需的设计技术大相迥异。
在附图中示范性地而非限制性地阐述本发明,其中在附图中使用相似的参考数字表示相似的元件。附图中图1为根据一个实施例的包括可由电压和频率配置的核的处理器的示意性图示。
图2为根据一个实施例的包括通过处理功率和功耗可选择的核的处理器示意性图示。
图3为根据一个实施例的包括由可选的性能电路配置的核的处理器的示意性图示。
图4为根据本发明一个实施例的包括可由可选的预测电路配置的核的处理器的示意性图示。
图5为根据本发明一个实施例的包括核的处理器以及节流细节的示意性图示。
图6为示出了根据本发明一个实施例的转变到不同核配置的流程图。
图7为示出了根据本发明另一个实施例的转变到不同核配置的流程图。
图8为示出了根据本发明另一个实施例的转变到不同核配置的流程图。
图9为示出了根据本发明另一个实施例的转变到不同核配置的流程图。
图10A为根据本发明一个实施例的包括具有节流和多个核的处理器的系统的示意性图示。
图10B为根据本发明另一实施例的包括具有节流和多个核的处理器的系统的示意性图示。
发明详述下述描述了根据软件程序中可用的并行数量而改变耗费以处理各个指令的能量数量的技术。在下述描述中,陈述了许多具体细节以提供对本发明的更彻底的理解,例如逻辑实施、软件模块分配、总线以及其他界面信号技术。然而,本领域技术人员将会了解,无需这些具体细节亦可实践本发明。在其他情形中,没有详细地示出控制结构、门级电路以及完整软件指令序列以免本发明变得不明确。本领域普通技术人员借助于此处的描述将能够实施恰当的功能而无需过多的实验。在某些实施例中,本发明披露成例如由Intel公司制造的Pentium兼容处理器的多核实施的形式。然而,本发明可以实践于其他类型的处理器,例如Itanium处理器系列兼容处理器、X-Scale系列兼容处理器、或者来自其他厂商或设计者的任何处理器架构的任何各种不同的通用处理器。另外,一些实施例可包括或者可以是专用处理器,例如图形、网络、图像、通信、或者任何其他已知或以其他方式可得到类型的处理器。
可以基于每瓦特的每秒指令数(IPS)测量功率效率。IPS/瓦特度量等效于每条指令能量,或者更精确而言,IPS/瓦特正比于每条指令能量的倒数,即(IPS)/(瓦特)=(指令)/(焦耳)方程1每条指令能量这个度量的重要性质为该度量与处理指令所需的时间数量无关。这使得每条指令能量是用于吞吐量性能的有用的度量。
通过将微处理器模拟成每条指令被执行时充电或者放电的电容器,由此可以执行对微处理器功耗的近似分析(为了简化,可以忽略漏电流和短路开关电流)。在该假设下,每条指令能量仅取决于两个方面被触发以处理各个指令的电容数量(从拾取到退回)和电源电压。通常用于电容器的如下公知公式E=CV2/2方程2也可以用于微处理器。E为处理指令所需的能量;C为在处理该指令时触发的电容数量;V为电源电压。
微处理器可以在例如100瓦特的固定功率预算范围内工作。在某些时间段内进行平均,无论微处理器或软件工作内容如何,微处理器的功耗不应超过该功率预算。为了实现该目标,微处理器可结合某些形式的动态热管理。类似地芯片级的多处理器可以调节(节流)其活动以保持在固定功率预算范围内,无论其是否正退回例如0.2个每个时钟执行的指令(IPC)或者20 IPC。为了提供良好性能,在本示例中芯片级多处理器应该能够将其MIPS/瓦特或者等效地其能量/指令改变到100∶1的范围以上。
设计可同时实现高的标量性能和高吞吐量性能的微处理器的一种方法是根据软件中可用的或者估算可用的并行数量而动态地变化耗费用于处理各个指令的能量数量。换而言之,如果存在少量的并行,则微处理器可将所有可用的能量耗费用于处理少数指令;但是如果存在大量的并行,则微处理器将非常少的能量耗费用于处理各个指令。这可以表达成P=(EPI)×(IPS)方程3其中P为固定功率预算,EPI为每个退回指令的平均能量,IPS为所有处理器核上每秒退回的指令总数。本实施例尝试将总的多处理器芯片功率维持在几乎恒定的水平。
互补型金属氧化物半导体(CMOS)电压和频率缩放可用于获得不同的每条指令能量比率。在一个实施例中,根据所期望的性能和功率水平,逻辑相关地变化微处理器的源电压和时钟频率。为了将芯片级微处理器的总功耗维持在固定功率预算范围内,可以如下所述动态地进行电压和频率缩放。对于低的线程并行,可以使用高的源电压和高频运行少数核以得到最佳标量性能。对于高的线程并行,可以使用低的源电压和低频运行许多核以得到最佳的吞吐量性能。由于非活动核可能期望低的功耗,因此例如动态睡眠晶体管和体偏压的漏电控制技术可以被采用。
现在参照图1,示出了根据一个实施例的包括可由电压和频率配置的核的处理器的示意性图示。示出了核1120、核2130、核3140和核4150,但是在其他实施例中,处理器中可能存在多于四个或者少于四个核。一个或多个这些核可具有电压控制电路和时钟频率控制电路。图1清楚地示出了核1120具有电压控制电路122和频率控制电路124,但是其他核也可以具有等效电路,或者该电压控制和频率控制逻辑可以是并不直接与具体核相关联的分离的逻辑。
节流模块110可用于收集信息并确定或者评估执行软件程序中存在的并行数量。在一个实施例中,并行数量可以为得到支持的同时发生的线程数目。在其他实施例中,其他度量可用于表达并行数量,例如每秒退回的指令总数,或者可支持预测多线程执行的分支指令的数目。节流模块110可利用由操作系统提供的信息以辅助确定该并行数量。在其他实施例中,节流模块110可以使用处理器内的硬件逻辑及其核进行该确定。可以连续地或者周期性地进行该确定。
每次节流模块110确定程序中并行的数量时,该节流模块可通过信号线112、114、116和118指示核120、130、140、150改变其电压和时钟频率。在一个实施例中,信号线112、114、116和118也可以用于接通或关闭核,或者从包含核的功率井除去功率。在其他实施例中,可以通过时钟门控或者指令饥饿(instruction starvation)技术关闭核。在一个实施例中,如果线程级当前的并行数量超过先前数量的值大于阈值,则节流模块通过降低各个核中的电压和时钟频率可启动转变到运行更多数目的线程,但是在更多数目的核上运行这些线程。先前关闭的核可以被接通以支持更大数目的线程。类似地,如果线程级当前的并行数量低于预先数量的值大于阈值,则节流模块通过提高某些核中的电压和时钟频率可启动转变到运行更少数目的线程,但是在更少数目的这些核上运行这些线程。由于不再需要这些核以支持更少数目的线程,先前接通的某些核被关闭。
在一个实施例中,可以设计单指令集架构(ISA)异类多核微处理器,其中可以使用不同的微架构跨过性能和功率范围。在一个实施例中,芯片级多处理器可以由两种处理器核构成,该处理器核称为大核和小核。该两种类型的核可以实施相同的指令集架构,使用超高速缓存相关性以实施共用存储器,且仅仅在微架构方面不同。在其他实施例中,该两种类型的核可以实施相似的指令集架构,或者小核可以实施大核的指令集的子集。大核可能是乱序、超级标量、深管线机器,而小核可能是有序、标量、短管线机器。Intel Pentium 4处理器和Intel i486处理器是这两类核的代表。在其他实施例中,可以使用运行基本上相似或相同的指令集架构的两种以上类型或性能水平的核。
在一个实施例中,芯片级多处理器包括一个大核和25个小核,这两种核的功耗比率为25∶1,标量性能比率为5∶1,每条指令能量为5∶1的范围。本实施例的芯片级多处理器按照下述工作。对于低的线程级并行,可以运行该大核以得到最佳标量性能。对于高的线程级并行,可以运行多个小核以得到最佳的吞吐量性能。
在任意时刻,微处理器可以运行一个大核或者25个小核。由于可用的软件线程的数目随时间变化,非对称的多处理器能够在大核和小核之间迁移线程。可以实施线程迁移逻辑以支持该功能。
实际上,期望少量的小核与该大核同时运行,从而在关闭大核时减小吞吐量性能不连续。在先前示例中,3个单位的吞吐量不连续可能是由于关闭大核和接通两个小核。为了减小总吞吐量损失的百分比,通过允许例如多达5个小核与大核同时运行,如果电源能短时间支持该动作,则可以将该不连续转移到发生于更大数目的正在运行的线程的情况下。
使用代表当前微处理器的两种类型的核,可以获得范围为4∶1的每条指令能量。随着未来的微处理器继续达到更高水平的标量性能,可能的每条指令能量的范围预期可能增大到6∶1,或者将远远超出这个范围。
现在参考图2,示出了根据一个实施例,包含通过处理功率和功耗可选择的核的处理器的示意性图示。该处理器可包括少数大核,即A核,还包括大量的小核,即B核。示出了A核1220、A核2222、和B核1至60230-262,但是在其他实施例中处理器中可能存在比两个A核与六十个B核更多或者更少的核。
节流模块210可再次用于收集信息并确定执行软件程序中存在的并行数量。在一个实施例中,并行数量可以为得到支持的同时发生的线程数目。在其他实施例中,如前所述,其他度量可用于表达并行数量。节流模块210可利用由操作系统提供的信息以辅助确定该并行数量。在其他实施例中,节流模块210可以使用处理器内的硬件逻辑及其核进行该确定。可以连续地或者周期性地进行该确定。
由于可用的软件线程的数目可能随时间变化,图1的处理器可包括能够在大的A核和小的B核之间迁移线程的线程迁移逻辑212。期望允许少量的小B核与大的A核同时运行,从而在关闭大的A核时减小吞吐量性能不连续。为了减小总吞吐量损失的百分比,通过允许例如多达5个小核与大核同时运行,则可以将该不连续转移到发生于更大数目的正在运行的线程的情况下。
每次节流模块210确定程序中并行的数量时,该节流模块可使用信号线224至266启动A核和B核的上电或下电。在一个实施例中,如果当前的并行数量超过先前数量的值大于阈值,则节流模块210可使用线程迁移逻辑212启动转变到运行更多数目的线程,这些线程可以在更多数目的B核上运行。先前关闭的B核可以被接通以支持更大数目的线程,且已经被接通的任何A核可以被关闭。类似地,如果当前的并行数量低于预先数量的值大于阈值,则节流模块可通过在更少数目的A核上运行这些线程而启动转变到运行更少数目的线程。先前接通的B核可以被关闭,因为不再需要这些核以支持更少数目的线程,且A核被接通以支持该更少数目的线程。如前所述,期望少量的B核与A核同时运行,从而在关闭大核时减小吞吐量性能不连续。
在一个实施例中,节流模块可以实施为不需要反馈回路的方式。这里,节流的控制动作(例如决定运行线程的核的类型和数目)并不返回以影响输入值(例如用于线程的核的分配和配置)。在该实施例中,可以假设各个A核220、222可能消耗与B核230至262中的25个相同的功率数量。在其他实施例中,可以使用不同的功耗比率。处理器可以将其总功率预算划分成两个部分。对于各个部分,该功率预算可允许一个A核与多达5个B核同时工作,或者零个A核与多达30个B核同时工作。在其他实施例中,该功率预算可以按照其他方式划分成多个部分。
在一个实施例中,可以根据表I将运行线程的数目(RT)分配给一些A核(QAC)和一些B核(QBC)。
表I
当运行线程的数目增大且新线程启动(在一个实施例中通过处理器间中断)时,该节流模块可确定当前运行线程的数目。取决于当前运行线程的数目,该新线程可以根据上述表I被指派至A核或B核。在本实施例中,对于某些情形,例如当从12个线程增大到13个线程,或者从36个线程增大到37个线程时,在A核上运行的现有线程将迁移到在B核上运行。当该迁移完成时,现有迁移线程和新线程都可以启动。因此,在本实施例中,新线程可能呈现启动延迟。
当运行线程数目减小时,类似的过程可能发生。当特定线程终止且其核停止时,各种方法可以用于潜在地将剩余线程之一从在B核上运行迁移到在A核上运行。这个过程可能发生于例如当运行线程的数目从13个线程减小到12个线程,或者从37个线程减小到36个线程时。在一个实施例中,可以使用周期定时器以允许在特定时间间隔内仅发生一次迁移。在线程快速产生和终止的情形中,这可以有利地防止太频繁的线程迁移。受影响的线程仍运行于B核上,直到该特定时间间隔。
在一个实施例中,节流模块可按照对软件是透明的方式执行从A核到B核的迁移。节流模块的线程迁移机制可包括将逻辑核映射到物理核的表,可能需要的向核发出迁移信号的中断、复制核的处理器状态的微代码或硬布线逻辑、以及处理器核之间的互连网络。逻辑核的数目可以等于B核的数目。
在另一个实施例中,节流模块可按照对软件非透明的方式执行从A核到B核的迁移。线程迁移可以由操作系统调度程序执行。操作系统可以使用当前运行线程追踪核数目,将新的线程指派到核,并将线程从A核迁移到B核(或者从B核到A核)。软件线程迁移可以使用与硬件实施中所述功能等效的功能。在一个实施例中,节流模块操作对于应用程序可能是透明的,尽管对于操作系统是不透明的。
调制功耗的一个备选方式是调整逻辑块的尺寸或功能。当不需要大的阵列尺寸时,例如尺寸可变的调度程序、超高速缓冲存储器、转换后备缓冲器(TLB)、分支预测器、和其他可选的性能电路可以用于减小开关电容(并因此减小能量)。除了动态调整阵列大小之外,还可以设计大核,其通过动态地禁止执行单元、管线级、和其他可选的性能电路而使其性能退化到较小核的性能。这些技术共同地称为适应性处理。
芯片级多处理器的一个实施例可按下述工作。对于低的线程并行,可以运行少量的核,在各个核上使用可用的可选性能电路的第一集合(例如所有或许多该性能电路)以得到良好的标量性能。对于高的线程并行,可以运行许多核,在各个核上使用更少的可选性能电路以得到良好的吞吐量性能。
减小阵列尺寸和禁止执行单元的最终结果为减小每条指令触发的电容。然而,如果设计本来就更小的核,则无法如此大程度地减小开关电容。尽管不用的执行硬件可以被门控掉,但是核的物理尺寸没有变化,因此与该仍然活动的硬件块相关联的布线长度仍长于小核。
通过检查大的乱序微处理器的平面布置图并确定可以将多少个可选的性能电路关闭以将处理器转换为小的有序机器(记住,这些块不能被物理去除),由此可以评估每条指令能量的可能减少。随后可以量化被关闭的处理器核面积的百分比,该百分比可能接近开关电容的减少。从方程(2),每条指令能量大约与开关电容的数量成正比。
大约估算的结果为,在某些情形中,多达50%的开关电容可以被关闭,导致每条指令能量的减少为1×至2×。在一些实施例中,除了时钟门控之外,使用例如动态睡眠晶体管和体偏压的漏电控制技术有助于减少每条指令消耗的能量。
现在参考图3,示出了根据一个实施例包括由可选性能电路配置的核的处理器的示意性图示。图3处理器可包括四个核,即核1 320、核2 370、核3 380和核4 390。在其他实施例中,可以使用比四个核更多或更少的核。核1 320显示各种可选的性能电路。调度程序A 334可耦合到可选调度程序B 336,该可选调度程序B 336在接通时可以提高性能。执行单元1 340可以耦合到可选执行单元2至4 342、344、346,这些可选执行单元在接通时可以提高性能。零级(L0)高速缓存A322可以耦合到L0高速缓存B 324,该L 0高速缓存B 324接通时可以提高性能。TLB A 326可以耦合到TLB B 328,该TLB B 328接通时可以提高性能。重排序缓冲器(ROB)338可具有可变数目的线路,或者可以全部关闭以抑制乱序执行。最后,与其他管线级330分离的预拾取级332在被上电时可以执行预测拾取。在其他实施例中,可以使用其他可选性能电路。
节流模块310可再次用于收集信息并确定执行软件程序中存在的并行数量。节流模块310可以与结合图1和2所述节流模块相似。每次节流模块310确定程序中并行的数量时,该节流模块可通过信号线312、314、316、和318指示核320、370、380、和390改变上电或下电的可选性能电路数目。在一个实施例中,信号线312、314、316、和318还可以用于接通或关闭核320、370、380、和390。在一个实施例中,如果当前的并行数量超过先前数量的值大于阈值,则该节流模块可通过减小每个核内被接通的可选性能电路而在更大数目的这些核上运行这些线程,由此转变到运行更大数目的线程。先前关闭的核可以被接通以支持更大数目的线程。类似地,如果当前的并行数量低于预先数量的值大于阈值,则节流模块可通过增加某些核内被接通的可选性能电路而在更少数目的这些核上运行这些线程,由此转变到运行更少数目的线程。先前接通的核可以被关闭,因为不再需要这些核以支持更少数目的线程。
已经提出各种形式的预测控制以减小由于错误预测指令例如错误预测分支之后的指令而浪费的能量。附加的能量源于被触发以处理错误预测指令的电容。尽管错误预测指令的结果可以被抛弃,但是能量已经耗费。通过将其充电到下一个正确预测(退回)指令,由此可以解释该能量。
管线门控是一种避免管线填满由于一个或多个低置信度分支预测而可能被抛弃的指令的技术。在使用预测控制的一个实施例中,芯片级多处理器可按下述工作。对于低的线程并行,使用增大数量的预测运行少数核,以得到良好的标量性能。对于高的线程并行,在各个核上使用减小数量的预测运行许多核,以得到良好的吞吐量性能。
尺寸可变的核技术和预测控制之间可能存在某些交叠,因为减小调度程序和重排序缓冲器入口的数目还减小了可以预测的指令的数目。例如高速缓存、TLB和分支预测器的其他处理器资源的尺寸对可能的预测数量的影响不会这么大。
现在参考图4,示出了根据本发明一个实施例的包括由可选的预测电路配置的核的处理器的示意性图示。图4处理器可包括四个核,即核1 420、核2 470、核3 480和核4 490。在其他实施例中,可以使用比四个核更多或更少的核。核1 420显示各种可选的预测电路。预拾取级430可用于预测拾取指令。分支预测器434可用于支持程序分支的预测执行。在某些实施例中,其他预测器436可以是回路预测器或其他形式的预测器以支持其他形式的预测执行。在其他实施例中,可以使用另外的可选的预测电路。
节流模块410可再次用于收集信息并确定执行软件程序中存在的并行数量。节流模块410通常与结合图1、2和3所述节流模块相似地工作。每次节流模块410确定程序中并行的数量时,该节流模块可通过信号线412、414、416、和418指示核420、470、480、和490改变上电或下电的可选预测电路的数目。在一个实施例中,信号线412、414、416、和418还可以用于接通或关闭核420、470、480、和490。在一个实施例中,如果当前的并行数量超过先前数量的值大于阈值,则该节流模块可通过减小每个核内被接通的可选预测电路而在更大数目的这些核上运行这些线程,由此转变到运行更大数目的线程。先前关闭的核可以被接通以支持更大数目的线程。类似地,如果当前的并行数量低于预先数量的值大于阈值,则节流模块可通过增加某些核内被接通的可选预测电路而在更少数目的这些核上运行这些线程,由此转变到运行更少数目的线程。先前接通的某些核可以被关闭,因为不再需要这些核以支持更少数目的线程。
对于结合图1、2、3和4上述的各种技术,节流模块可以调节多处理器的工作以将总芯片功率维持在固定功率预算内。通过与每秒退回的指令的总数成反比地改变每条指令能量数量,节流模块硬件可满足方程(3)。响应于过功率的情形,在诸多实施例中节流模块可以采取下述动作中的一个或多个降低电压和频率(对于图1的电压和频率缩放的情形),将线程从大核迁移到小核(对于图2的非对称核的情形),减小可选性能电路的电容(对于图3的尺寸可变的核的情形),或者减小预测数量(对于图4的预测控制的情形)。
在各种情形中,软件程序可将处理器视为大的对称的芯片级多处理器,尽管出现不正常的性能,即由于软件请求硬件同时运行更多线程而使得现有线程变得更慢,即使最终的吞吐量增大。采用这种方法,为目前的共用存储器多处理器编程模型编写的软件可以继续运行而无需调整。
现在参考图5,示出了根据本发明一个实施例的包括核的处理器以及节流模块的细节的示意性图示。M个处理器核1至M 502至508在多个实施例中可以是可由电压和频率配置的图1的核、处理功率和功耗变化的图2的大核和小核、可由可选性能电路配置的图3的核、可由可选预测电路配置的图4的核、或者部分或所有这些类型的核的混合。在其他实施例中还可以使用其他类型的核。
监视器1至M 512至518可以监视相关核和辅助处理器电路的一个或多个属性。在一些实施例中,这些属性可包括该核是否在运行或者停止、每个时钟周期退回的指令的瞬时数目、核的特定功能块是活动的还是空闲的、除了核内的功能决之外的处理器的特定功能块是活动的还是空闲的、以及核的源电流和温度(或者管芯温度)。除了核内的功能块之外的处理器的功能块可包括例如共用高速缓存或者存储控制器的电路。可以通过电流传感器电阻和模数(A/D)转换器测量该源电流。可以通过热敏二极管和A/D转换器测量该温度。各个监视器1至M512至518的输出可以是所有或者某些部分这些属性的监测值。
转换至功率的逻辑530可从监视器1至M 512至518接收一个或几个监测值。在各种实施例中,监测值可以转换成功耗的测量。在监测值反映核是否在运行或者停止的实施例中,通过将核运行(或者停止)状态乘以当核处于运行(或者停止)状态时每个时钟耗费的能量的平均数量,该监测值可以转换成功耗。随后可以对处理器内的所有核的这些乘积求和。在监测值反映每个时钟周期退回的指令的瞬时数目的实施例中,通过将指令数目乘以每个时钟每条指令耗费的能量的平均数量,该监测值可以转换成功耗。随后可以对处理器内的所有核的这些乘积求和。在监测值反映核的特定功能块是否是活动的或者空闲的实施例中(或者在某些实施例中,反映除了核内的功能块之外的处理器的特定功能块是否是活动或者空闲的),通过将该活动(或者空闲)状态乘以决处于活动(或者空闲)状态时每个时钟耗费的能量的平均数量,该监测值可以转换成功耗。随后可以对各个核中的所有块以及处理器内的所有核的这些乘积求和。当考虑不在该核内的块时,该乘积可包括在该求和内。在各个这些实施例中,通过乘以正比于时钟频率与源电压平方的乘积的值而针对电压和频率调整所得到的总和。
在监测值反映各个核的源电流的实施例中,通过将源电流乘以源电压,该监测值可以转换成功耗。
在监测值反映核或管芯温度的实施例中,图5的电路可以用于维持几乎恒定的核或者管芯温度,而不是维持几乎恒定的功耗。
计算差值的逻辑534可用于计算转换至功率的逻辑530的转换功耗(或者管芯温度)输出与期望的功耗值(或者期望的管芯温度值)之间的差值。该差值可以用作“误差”数值。
积分逻辑538可在一个实施例中提供与由计算差值的逻辑534供给的误差数值随时间的积分成正比的积分数值。在一个实施例中,可以使用累加器计算该积分,其中可以使用加法器和寄存器实施该累加器。该累加器在上界和下界可以饱和以避免溢出。在一个实施例中,该累加器输出可以是固定点的二进制数,例如2至6个整数位和2至16个小数位。可以检查累加器的最高有效位,这可以有利地实现使输出变化缓慢的性能。使用积分逻辑538可以帮助慢反馈回路550从而随着时间将该误差数值减小到零。当误差数值为功率时,使用该积分逻辑538是最为有利的,这是因为不同时钟周期之间的瞬时功耗可能发生显著变化。
在其他实施例中,积分逻辑538可以被逻辑替代以得到与该误差数值成比例的数值,当误差数值是温度时这是有利的。在另外实施例中,该逻辑可以得到与该误差数值的时间微分成比例的数值,或者所有上述数值的某些线性组合。
采样逻辑544可以用于某些实施例。来自积分逻辑538的积分数值可以随着各个时钟周期而改变,即使该积分数值的提取可能相对于图5逻辑的速度发生缓慢的变化。某些控制技术可以在每个时钟周期改变其动作而仅需很少的系统成本。这种情况下可能无需采样。在其他控制技术中,当积分逻辑538的输出接近转变点时,有利地使用采样以帮助减小随各个时钟振荡的数值。
在一个实施例中,固定采样技术可以用于采样逻辑544。每固定数目N个时钟周期采样一次该数值。这可以防止该数值变化得比每N个时钟周期一次快。然而,这种技术无法实现在短于N个时钟周期的时间段内进行控制,且当与N个时钟周期的时间段相比积分缓慢时该技术可以最佳地工作。
在另外实施例中,滞后技术可以用于采样逻辑544。只有当输入和输出数值超过阈值T时,采样逻辑544的输出才改变。当差值超过T时,输出数值被输入数值替代,否则输出数值可保持不变。
对于使用慢反馈回路550的实施例,可以使用控制逻辑548。在一个实施例中,例如核通过改变源电压和频率可以改变功耗的图1的实施例,控制逻辑548可以指示源电压和频率的变化。在这些实施例中,应该注意,电源电压的变化可能花费相对长的时间,例如100毫秒。在一个实施例中,表或逻辑决可以用于设定电源电压和频率。表II给出了用于各种控制值(CV)的数值的这种表或逻辑块的一个示例。
表II
在一个实施例中,例如线程可以分配到大核和小核的图2的实施例,控制逻辑948可以将线程分配到核并根据对于软件是透明的控制值而迁移线程。线程迁移机制可包括用于将“逻辑”处理器核映射到“物理”处理器核的表或逻辑块。该线程迁移机制还可包括需要的发出迁移信号的中断、复制处理器状态的微代码或等效逻辑、以及各种处理器核之间的互连网络。软件看到的逻辑处理器的数目可以等于正在运行的小核的数目。当功率预算允许时,大核可以替代小核。在一个实施例中,用于预算作为控制值函数的大核使用的表或逻辑决示于表III。
表III
这里进行了一个简化的假设,即,当大核无法使用时,线程可以在小核上运行。
在一个实施例中,例如线程可以分配到其资源可以动态变化的核的图3的实施例,控制逻辑548可以给出改变核的功能单元的数量或者容量的控制值。在改变核容量要求阵列被填充或往回写或者管线需要被重新填充的一些实施例中,用于这些改变的时间范围可以为10微妙。可以使用表或逻辑决预算作为控制值函数的核功能单元的使用。在一个实施例中,用于预算作为控制值函数的功能单元使用的表或逻辑决示于表IV,其中该功能单元可以是核内的执行单元。
表IV
在一个实施例中,例如线程可以分配到其预测数量可动态变化的核的图4实施例,控制逻辑548可以给出改变核内容许的预测数量的控制值。可以使用表或逻辑块预算作为控制值函数的核内预测数量的使用。在一个实施例中,用于调整作为控制值函数的预测数量的表或逻辑块示于表V,其中预测的数量可以由核中在非预测指令之前预测执行指令的数目给出。
表V
在许多实施例中,处理器核可以包括多个上述属性。例如,处理器可以具有能够进行电压和频率缩放的核,且还具有可调整数量的预测执行。在一个实施例中,图2的大的A核和小的B核还可以具有如图1所示的电压和频率缩放。对于一个实施例,电压和频率可以固定,将大的A核配置成运行于高电压而小的B核配置成运行于低电压。在另外实施例中,大的A核和小的B核之间的电压和频率调整范围可以不同。为了辅助大的A核和小的B核之间的迁移,线程可以从大的A核迁移到小的B核,而小的B核最初运行于高的电压和频率。一旦大的A核不运行,则B核的电压和频率可以随后降低。
此外,可以使用表或逻辑块将线程分配到大的A核或小的B核,并进一步分配核的电压和频率。在一个实施例中,用于作为控制值函数进行这些调整的表或逻辑块示于表VI。
表VI
有利地在慢反馈回路550附近维持略微恒定的增益,其中在该表或逻辑块内通过使各级的功率效应的大小相似可以实现这一点。
在某些实施例中,快反馈回路560可以与先前讨论的慢反馈回路550结合使用。在一个实施例中,可以使用时钟节流540,即使时钟节流不会影响每条指令能量数量。当与前述的一个或多个慢反馈回路550结合使用时,使用时钟节流540是有利的。
在某些情况下,快反馈回路560可以施加了短潜伏期以防止过功率情形,且该施加只有当慢反馈回路550有时间作出响应时才保持有效。在未实施快反馈回路960的实施例中,处理器及其功率发送系统应该设计成能够处理持续时间与慢反馈回路550的响应时间一样长的过功率情形。当添加快反馈回路560时,过功率情形持续时间不会长于快反馈回路560的响应时间,该响应时间的范围为10纳秒。
时钟节流540可以门控核时钟接通和关闭特定的负载周期,使用在计算差值的逻辑534中计算得到的误差数值作为其输入。在一个简单的实施例中,当误差数值超过固定阈值时,时钟可以停止特定数目的周期。该计算在各个时钟周期被执行并完全管线化。可以选择特定数目的周期以将功率限制为略高于期望功率(其允许慢反馈回路550作出响应),但是不大于最大功率。
在另外实施例中,时钟节流550可以响应于由计算差值的逻辑535供给的误差数值的大小(例如处理器目前的运行功率比功率阈值高多少)而调制该负载周期。在一个实施例中,负载周期和误差数值之间关系如表VII所示。
表VII
现在参考图6,示出了根据本发明一个实施例的转变到不同核配置的流程图。处理开始于块610,其包括将各种软件线程分配到可用的核。在一个实施例中,线程的数目被确定,且各个线程分配到一个核。在某些实施例中,这种确定可以由软件例如操作系统完成。在其他实施例中,这种确定可以由硬件逻辑,或者由硬件与软件的组合完成。在块614,监测各个核消耗的功率数量,并计算观测的功耗和期望的功耗之间的误差数值。在各种实施例中,可以使用结合图5上述讨论的任意监测技术。接着在块618中,块614的误差数值可经历积分或采样技术之一或二者兼有,如结合图5如上所述。在某些实施例中,块618是可选的。块618的输出可以是控制值,该控制值抑制核配置直到该误差数值在一时间段内被确定为基本上足以保证改变核配置的性能惩罚时才改变。
在决定块622,确定该时间内的误差数值是否足以保证改变核的配置。如果差值不够大,则该处理在决定块622之后沿“否”(NO)路径且该处理重复。然而,如果该差值足够大,则该处理在决定块622之后沿“是”(YES)路径。
在块626,可以根据该控制值改变电压和频率。在一个实施例中,可以如表II所示针对控制值改变电压和频率。在一个实施例中,各种核的电压和频率可以全部相似地改变。在其他实施例中,可以不同地改变各种核上的电压和频率。在任何情形下,该处理在块610重复。
现在参考图7,示出了根据本发明一个实施例的转变到不同核配置的流程图。处理开始于块710,其包括将各种软件线程分配到可用的核。在一个实施例中,线程的数目被确定,且各个线程分配到一个核。在某些实施例中,这种确定可以由软件例如操作系统完成。在其他实施例中,这种确定可以由硬件逻辑,或者由硬件与软件的组合完成。在块714,监测各个核消耗的功率数量,并计算观测的功耗和期望的功耗之间的误差数值。在各种实施例中,可以使用结合图5上述的任意监测技术。接着在块718中,块714的误差数值可经历积分或采样技术之一或二者兼有,如结合图5如上所述。在某些实施例中,块718是可选的。块718的输出可以是控制值,该控制值抑制核配置直到该误差数值在一时间段内被确定为基本上足以保证改变核配置的性能惩罚时才改变。
在决定块722,确定该时间内的误差数值是否足以保证改变核的配置。如果差值不够大,则该处理在决定块722之后沿“否”(NO)路径且该处理重复。然而,如果该差值足够大,则该处理在决定块722之后沿“是”(YES)路径。
在块726,可以根据控制值而将线程重新分配到核。在一个实施例中,可以如上表III所示针对控制值将线程重新分配到特定数目的大核。在一个实施例中,大核的数目示出于表III,且不在大核上运行的线程可以重新分配到小核。在其他实施例中,可以使用其他方案将线程重新分配到核。在任何情形下,该处理在块710重复。
现在参考图8,示出了根据本发明一个实施例的转变到不同核配置的流程图。处理开始于块810,其包括将各种软件线程分配到可用的核。在一个实施例中,线程的数目被确定,且各个线程分配到一个核。在某些实施例中,这种确定可以由软件例如操作系统完成。在其他实施例中,这种确定可以由硬件逻辑,或者由硬件与软件的组合完成。在块814,监测各个核消耗的功率数量,并计算观测的功耗和期望的功耗之间的误差数值。在各种实施例中,可以使用结合图5上述讨论的任意监测技术。接着在块818中,块814的误差数值可经历积分和采样技术之一或二者兼有,如结合图5如上所述。在某些实施例中,块818是可选的。块818的输出可以是控制值,该控制值抑制核配置直到该误差数值在一时间段内被确定为基本上足以保证改变核配置的性能惩罚时才改变。
在决定块822,确定该时间内的误差数值是否足以保证改变核的配置。如果差值不够大,则该处理在决定块822之后沿“否”(NO)路径且该处理重复。然而,如果该差值足够大,则该处理在决定块822之后沿“是”(YES)路径。
在块826,可以根据控制值如表IV所示接通或关闭核内可选电路的数量。在一个实施例中,可以如上表IV所示针对控制值改变上电或下电的执行单元的数量。在其他实施例中,可以根据控制值接通和关闭其他可选的性能电路。这些其他可选的性能电路可包括调度程序、高速缓存、转换后备缓冲器、调度程序、和重排序缓冲器。在任何情形下,该处理在决810重复。
现在参考图9,示出了根据本发明一个实施例的转变到不同核配置的流程图。处理开始于块910,其包括将各种软件线程分配到可用的核。在一个实施例中,线程的数目被确定,且各个线程分配到一个核。在某些实施例中,这种确定可以由软件例如操作系统完成。在其他实施例中,这种确定可以由硬件逻辑,或者由硬件与软件的组合完成。在块914,监测各个核消耗的功率数量,并计算观测的功耗和期望的功耗之间的误差数值。在各种实施例中,可以使用结合图5上述讨论的任意监测技术。接着在块918中,块914的误差数值可经历积分和采样技术之一或二者兼有,如结合图5如上所述。在某些实施例中,决918是可选的。块918的输出可以是控制值,该控制值抑制核配置直到该误差数值在一时间段内被确定为基本上足以保证改变核配置的性能惩罚时才改变。
在决定块922,确定该时间内的误差数值是否足以保证改变核的配置。如果差值不够大,则该处理在决定块922之后沿“否”(NO)路径且该处理重复。然而,如果该差值足够大,则该处理在决定块922之后沿“是”(YES)路径。
在块926,可以根据控制值如表V所示改变核内预测数量。在一个实施例中,可以如上表V所示针对控制值改变预测执行的指令的数目。在其他实施例中,可以使用其他方法根据控制值改变预测数量。改变预测数量的这些其他方法可包括上电或下电预拾取单元、分支预测器、或者其他形式的预测器。在任何情形下,该处理在决910重复。
现在参考图10A和10B,示出了根据本发明两个实施例的包括具有节流和多个核的处理器的系统的示意性图示。图10A系统一般示出了处理器、存储器、和输入/输出装置通过系统总线互连的系统,而图10B系统一般示出了处理器、存储器、和输入/输出装置通过多个点对点接口互连的系统。
图10A系统可包括一个或者多个处理器,此处为了清楚仅示出了两个处理器40、60。处理器40、60可包括一级高速缓存42、62。图10A系统可具有通过总线接口44、64、12、8与系统总线6连接的多个功能。在一个实施例中,系统总线6可以是用于由IntelCorporation制造的Pentium系列微处理器的前端总线(FSB)。在其他实施例中,可以使用其他总线。在某些实施例中,存储控制器34和总线桥32可统称为芯片组。在某些实施例中,芯片组的功能在物理芯片之间的划分可能不同于图10A实施例所示。
存储控制器34允许处理器40、60从系统存储器10以及从基本输入/输出系统(BIOS)可擦除编程只读存储器(EPROM)36进行读写。在某些实施例中BIOS EPROM 36可使用闪烁存储器。存储控制器34可包括总线接口8以允许存储器读写数据在系统总线6上向总线代理(bus agent)传送和从总线代理传送。存储控制器34还通过高性能图形接口39与高性能图形电路38连接。在某些实施例中,高性能图形接口39可以是先进图形端口AGP接口。存储控制器34可以将来自系统存储器10的数据通过高性能图形接口39引导至高性能图形电路38。
图10B系统可包括一个或者多个处理器,此处为了清楚仅示出了两个处理器70、80。处理器70、80可包括局部存储控制中心(MCH)72、82以连接存储器2、4。处理器70、80可以使用点对点接口电路78、88通过点对点接口50交换数据。每个处理器70、80可以使用点对点接口电路76、94、86、98通过各个点对点接口52、54与芯片组90交换数据。芯片组90也可以通过高性能图形接口92与高性能图形电路38交换数据。
在图10A系统中,总线桥32可以允许系统总线6和总线16之间的数据交换,该总线在某些实施例中是工业标准架构(ISA)总线或者外围元件互连(PCI)总线。在图10B系统中,芯片组90可以通过总线接口96与总线16交换数据。在任一系统中,在总线16上可能存在各种输入/输出(I/O)装置14,在一些实施例中该装置包括低性能图形控制器、视频控制器、以及网络控制器。在某些实施例中,另一总线桥18可以用于允许总线16和总线20之间的数据交换。在一些实施例中,总线20可以是小型计算机系统接口(SCSI)总线、集成驱动电子(IDE)总线、或者通用串行总线(USB)总线。附加的I/O装置可以与总线20连接。这些附加的I/O装置包括键盘和光标控制装置22(包括鼠标)、音频I/O 24、通信装置26(包括调制解调器和网络接口)以及数据存储装置28。软件代码30可以存储于数据存储装置28。在某些实施例中,数据存储装置28可以是固定磁盘、软盘驱动器、光盘驱动器、磁光盘驱动器、磁带、或者包括闪烁存储器的非易失性存储器。
在前述说明书中,已经参照具体实施例描述了本发明。然而,在不背离由所附权利要求界定的本发明更宽范围的情况下可以进行各种改进和变化。因此说明书和附图被视为是用于说明而非限制本发明。
权利要求
1.一种处理器,包括监测逻辑,监测所述处理器核属性的数值;转换逻辑,响应于所述核的所述属性确定所述处理器功耗的测量;以及控制逻辑,响应于所述功耗的测量调整所述处理器的每条指令能量的度量。
2.权利要求1的处理器,其中所述核的所述属性为核运行状态。
3.权利要求2的处理器,其中通过将所述核运行状态乘以当所述核处于所述核运行状态时每个时钟耗费的能量数量,确定所述功耗的测量。
4.权利要求1的处理器,其中所述核的所述属性为每个时钟退回的指令的数目。
5.权利要求4的处理器,其中通过将所述每个时钟退回的指令的数目乘以每个时钟每条指令耗费的能量数量,确定所述功耗的测量。
6.权利要求1的处理器,其中所述核的所述属性为所述核的功能块的活动状态。
7.权利要求6的处理器,其中通过将所述功能块的所述活动状态乘以当所述功能块处于所述活动状态时每个时钟耗费的能量数量,确定所述功耗的测量。
8.权利要求1的处理器,其中所述属性为核源电流。
9.权利要求8的处理器,其中所述功耗的测量包括所述核源电流。
10.权利要求1的处理器,其中所述控制逻辑响应于所述功耗的测量而调整所述处理器的工作电压和工作频率。
11.权利要求1的处理器,其中所述控制逻辑响应于所述功耗的测量而在所述处理器的大核和小核之间迁移程序的线程。
12.权利要求1的处理器,其中所述控制逻辑响应于所述功耗的测量而接通所述处理器的所述核内的可选性能电路。
13.权利要求1的处理器,其中所述控制逻辑响应于所述功耗的测量而接通所述处理器的所述核内的可选预测电路。
14.权利要求1的处理器,还包括差值逻辑以计算所述功耗的测量和期望功耗之间的差值。
15.权利要求14的处理器,还包括积分电路以确定所述功耗的测量和期望功耗之间的所述差值的时间积分。
16.权利要求14的处理器,还包括采样电路以根据采样方法将所述功耗的测量供给到所述控制逻辑。
17.权利要求1的处理器,还包括时钟节流电路以允许快反馈控制。
18.一种处理器,包括第一多个第一类型的核;第二多个第二类型的核;以及模块,将线程分配到所述第一多个的所述第一类型核或者所述第二多个的所述第二类型核之一。
19.权利要求18的处理器,其中所述模块根据功率预算分配所述线程。
20.权利要求18的处理器,其中所述模块根据分配表分配所述线程。
21.权利要求18的处理器,其中所述模块包括线程迁移逻辑,将新线程分配到所述第二多个核之一并将已有线程从所述第一多个核之一迁移到所述第二多个核之一。
22.权利要求21的处理器,其中所述线程迁移逻辑包括用于将逻辑核映射到物理核的表。
23.权利要求21的处理器,其中所述线程迁移逻辑响应于操作系统调度程序。
24.权利要求18的处理器,其中所述第一类型的核的性能故意高于所述第二类型的核的性能。
25.权利要求18的处理器,其中所述第一类型的核的性能通过配置高于所述第二类型的核的性能。
26.一种方法,包括将线程集分配到处理器核集;监测所述处理器核的消耗功率;计算所述消耗功率和期望功率之间的误差数值;以及基于所述误差数值从所述分配进行转变。
27.权利要求26的方法,其中所述转变包括在所述处理器核集内功率大的核和功率小的核之间改变所述线程集的所述分配。
28.权利要求26的方法,其中所述转变包括通过配置所述处理器核集内所述功率大的核和所述功率小的核而改变所述功率大的核和所述功率小的核之间所述线程集的分配。
29.权利要求26的方法,还包括对所述误差数值随时间积分。
30.权利要求26的方法,还包括随时间采样所述误差数值。
31.一种方法,包括确定运行线程集;以及将各个所述线程分配到处理器核集之一,其中所述分配响应于功率预算。
32.权利要求31的方法,其中所述处理器核集包括能够作为第一类型和第二类型核的可配置核。
33.权利要求31的方法,其中所述处理器核集包括设计成第一类型和第二类型核的核。
34.权利要求31的方法,还包括将新线程分配到来自所述处理器核集的第二类型核,并将所述运行线程集之一从所述处理器核集内的第一类型核迁移到所述第二类型核。
35.权利要求34的方法,其中所述迁移由线程迁移逻辑执行。
36.权利要求34的方法,其中所述迁移响应于操作系统调度程序。
37.一种系统,包括处理器,包括监测逻辑以监测所述处理器核的属性的数值,转换逻辑以响应于所述核的所述属性确定所述处理器的功耗测量,以及控制逻辑以响应于所述功耗测量调整所述处理器的每条指令能量的度量;音频输入/输出逻辑;以及接口,将所述处理器耦合到所述音频输入/输出逻辑。
38.权利要求37的系统,其中所述核的所述属性为核运行状态,且其中通过将所述核运行状态乘以当所述核处于所述核运行状态时每个时钟耗费的能量数量,确定所述功耗的测量。
39.权利要求37的系统,其中所述核的所述属性为每个时钟退回的指令数目,且其中通过将所述每个时钟退回的指令数目乘以每个时钟每条指令耗费的能量数量,确定所述功耗的测量。
40.权利要求37的系统,其中所述核的所述属性为所述核的功能块的活动状态,且其中通过将所述功能块的所述活动状态乘以当所述功能块处于所述活动状态时每个时钟耗费的能量数量,确定所述功耗的测量。
41.权利要求37的系统,其中所述属性为核源电流,且其中所述功耗的测量包括所述核源电流。
42.权利要求37的系统,其中所述控制逻辑响应于所述功耗的测量而调整所述处理器的工作电压和工作频率。
43.权利要求37的系统,其中所述控制逻辑响应于所述功耗的测量而在所述处理器的大核和小核之间迁移程序的线程。
44.权利要求37的系统,其中所述控制逻辑响应于所述功耗的测量而接通所述处理器的所述核内的可选性能电路。
45.权利要求37的系统,其中所述控制逻辑响应于所述功耗的测量而接通所述处理器的所述核内的可选预测电路。
45.权利要求37的系统,其中所述处理器还包括差值逻辑以计算所述功耗的测量和期望功耗之间的差值。
45.权利要求45的系统,其中所述处理器还包括积分电路以确定所述功耗的测量和期望功耗之间的所述差值的时间积分。
46.权利要求45的处理器,还包括采样电路以根据采样方法将所述功耗的测量供给到所述控制逻辑。
47.一种系统,包括处理器,包括第一多个第一类型的核;第二多个第二类型的核;以及模块,将线程分配到所述第一多个的所述第一类型核或者所述第二多个的所述第二类型核之一;音频输入/输出逻辑;以及接口,将所述处理器耦合到所述音频输入/输出逻辑。
48.权利要求47的系统,其中所述模块根据功率预算分配所述线程。
49.权利要求47的系统,其中所述模块根据分配表分配所述线程。
50.权利要求47的系统,其中所述模块包括线程迁移逻辑,将新线程分配到所述第二多个核之一并将已有线程从所述第一多个核之一迁移到所述第二多个核之一。
51.权利要求50的系统,其中所述线程迁移逻辑包括用于将逻辑核映射到物理核的表。
52.一种处理器,包括用于将线程集分配到处理器核集的装置;用于监测所述处理器核的消耗功率的装置;用于计算所述消耗功率和期望功率之间的误差数值的装置;以及用于基于所述误差数值从所述分配进行转变的装置。
52.权利要求52的处理器,其中所述用于转变的装置包括用于在所述处理器核集内功率大的核和功率小的核之间改变所述线程集的分配的装置。
53.权利要求52的处理器,其中所述用于转变的装置包括用于通过配置所述处理器核集内所述功率大的核和所述功率小的核而改变所述功率大的核和所述功率小的核之间所述线程集的所述分配的装置。
54.权利要求52的处理器,还包括用于对所述误差数值随时间积分的装置。
55.权利要求52的处理器,还包括用于随时间采样所述误差数值的装置。
56.一种处理器,包括用于确定运行线程集的装置;以及用于将各个所述线程分配到处理器核集之一的装置,其中所述分配响应于功率预算。
57.权利要求56的处理器,其中所述处理器核集包括能够作为第一类型和第二类型核的可配置核。
58.权利要求56的处理器,其中所述处理器核集包括设计成第一类型和第二类型核的核。
59.权利要求56的处理器,还包括用于将新线程分配到来自所述处理器核集的第二类型核的装置,以及用于将所述运行线程集之一从所述处理器核集内的第一类型核迁移到所述第二类型核的装置。
全文摘要
本发明揭示了用于改变多核处理器配置的方法和设备。在一个实施例中,节流模块(或者节流逻辑)可确定当前执行程序中存在的并行数量,并改变各种核上该程序的线程的执行。如果并行数量大,则处理器可以配置成在配置成消耗更低功率的核上运行更大数量的线程。如果并行数量小,则处理器可以配置成在配置成用于更高标量性能的核上运行更小数量的线程。
文档编号G06F1/20GK101076770SQ200580032835
公开日2007年11月21日 申请日期2005年9月28日 优先权日2004年9月28日
发明者E·格罗乔夫斯基, J·沈, H·王, D·奥伦斯坦, G·希菲尔, R·罗宁, M·安纳瓦拉姆 申请人:英特尔公司