具有逐核和封装级p0确定功能的处理器的制造方法
【专利说明】具有逐核和封装级PO确定功能的处理器发明领域
[0001]本发明的领域大致涉及计算系统,且更具体而言,涉及具有逐核和封装级PO确定功能的处理器。
[0002]置量
[0003]图1示出了标准多核处理器设计100的架构。如图1中所见,处理器包括:1)多个处理核101_1至101_N ;2)互连网络102 ;3)末级缓存系统103 ;4)存储器控制器104以及I/O中枢105。每个处理核包含一个或多个用于执行程序代码指令的指令执行流水线。互连网络102用于将核101_1至101_N中的每一个互连至彼此,以及其他元件103、104、105。末级缓存系统103在指令和/或数据被放至系统存储器108之前用作处理器100中的最后一层缓存。存储器控制器104从/至系统存储器108读/写数据和指令。I/O中枢105管理处理器和“10”设备(如非易失性存储设备和/或网络接口)之间的通信。端口 106源自于互连网络102以连接多个处理器,使得具有超过N核的系统可以被实现。图形处理器107执行图形计算。为方便起见,其他具有意义的功能模块(锁相环(PLL)电路,功率管理电路等)在图1中未被绘出。
[0004]随着计算机系统的功耗开始受到关注,大多现今的系统包括精巧的功率管理功能。一种常见的机制是同时定义“性能”状态和“功率”状态。处理器的性能是其在设定时间周期内的工作能力。处理器的性能状态越好,在设定时间周期内其所做的工作越多。处理器的性能可以在运行期间通过改变其内部时钟速度和电压水平来进行调节。因此,处理器的功耗随着性能的提升而增加。
[0005]处理器不同的性能状态对应着不同的时钟设定和内部电压设定,导致不同的性能与功耗的折衷。根据高级配置和功率接口(ACPI)标准,不同的性能状态被标以不同的“P数值”:P0、P1、P2……P_N,其中,PO代表最高性能和功耗状态,而P_N代表处理器能工作的最低功耗水平。Pl性能状态是最大保证性能的工作状态。PO状态,也被称为加速状态,是任何比Pl更高的工作点。“P_R”中的“R”意味着不同的处理器可被配置具有不同数量的性能状态。
[0006]与性能状态相对,功率状态很大程度上是用来定义处理器不同的“休眠模式”。根据ACPI标准,CO状态是仅有的处理器能工作的功率状态。因此,对于要进入任何性能状态$0至?_的的处理器,该处理器必须处在CO功率状态中。当没有工作要做,而处理器将被置于休眠时,该处理器可被置于数个不同的功率状态C1、C2……CM中的任一个,其中每个功率状态代表一个不同的休眠等级,而相应的,需要不同数量的功率节省和不同长短的时间来切换回到可操作的CO功率状态。
[0007]更深的休眠等级对应着更慢的内部时钟频率和/或更低的内部供电电压,并且可能有一些逻辑模块被掉电。C数值的增加对应着更深层的休眠等级,以及相应更长的退出和返回至唤醒或CO状态的延迟。设计具有由加利福尼亚圣克拉拉的英特尔公司提供的处理器的计算机系统包括被称为“睿频加速(Turbo Boost) ”的“封装级” PO状态,在其中处理器作为一个整体会在一个有限时间周期内工作在相比其额定最大保证频率更高的时钟频率下,以达到更高性能。这里,“封装级”是指至少一颗处理器芯片以及可能其他芯片,例如一颗或多颗其他处理器芯片以及一颗或多颗其他系统存储器(如DRAM)芯片。这样,在最低限度上,根据睿频加速技术的现有状态,当进入封装级PO状态时,处理器100的所有核101_1至101_N会在一个有限时间周期内接收相比处理器额定最大保证时钟频率更高的时钟频率。
[0008]工作于加速(Turbo)模式的代价是功耗的增加。鉴于该功耗的后果,加速模式的进入是受到控制的,主要由处理器上的总工作负载需求整体上超过某个可配置阈值而确定。也就是说,进入睿频加速模式是封装级工作负载需求的函数。
[0009]仅从封装级角度而言,现有睿频加速技术的问题是其响应速度。例如,工作在一个核上的操作系统(OS)实例可请求进入封装PO状态。然而,所请求的PO状态除非且直到遍及处理器的工作负载,其包括遍及所有处理器核101_1至101_N测得的工作负载,整体上越过了预先设立的阈值,才会被进入。
【附图说明】
[0010]对本发明更好的理解可结合以下附图从以下详细说明中得到,其中:
[0011]图1示出了一种处理器;
[0012]图2示出了具有逐核PO功率状态确定的改进型处理器;
[0013]图3a示出了由图2中改进型处理器执行的方法;
[0014]图3b示出了可由图2中改进型处理器执行的逐核PO功率状态确定的算法;
[0015]图3c示出了可由图2中改进型处理器执行的封装级PO功率状态确定的算法;
[0016]详细说曰月
[0017]一种改进是将技术单独扩展至核。也就是说,处理器被设计为在一个有限时间周期内将超过处理器额定最大保证频率的时钟频率在逐个核(core-by-core)的基础上施加于不同的核,而非施加于作为整体的所有核。这样的功能可允许,例如,处理器管芯上的第一核工作于PO状态,而同一处理器管芯的另一个核工作在一个更低的性能状态,Pi, i>0o
[0018]图2绘出了实现“逐核(per core) ” PO性能状态的处理器设计200,其中单一核,而非处理器的所有核一起,可被配置成在一个有限时间周期内以超过处理器最大额定保证频率的时钟速度来工作。如图2中可见,处理器200包括N个处理核201_1至201_N。处理器的其他特征,如以上相对于图1讨论的任何特征,为方便起见未被包括在图中。
[0019]每个处理核可包括多个逻辑处理器或硬件线程。多线程核能够在一段时间内同时执行不同的指令序列线程。根据虚拟化环境中的典型配置,虚拟机可被安排在一个或多个这样的逻辑核上运行。在非虚拟化环境中,OS会将进程/应用安排在逻辑核上。
[0020]在图2的实施例中,为了监测每个核的工作负载,监测计数器被分配给每个逻辑核,在物理核上亦称硬件线程。这样,由于每个核能够处理多达X个线程,每个核就有X组监测计数器。例如,核201_1被分配了监测计数器213_1至213_X。监测计数器组213_1至213_X被用于监测核201_1的整体工作负载。根据一个特定的实现,每组监测计数器包括两个计数器:线程 _C0 (Thread_C0)和线程 _C0P0 (Thread_C0P0)。
[0021]Thread_C0计数器对其对应的线程活跃,即非空闲,即处在CO状态的周期数进行计数。例如,在线程指定其核将要进入CO功率状态后,计数器每个周期都会递增,除非且直到线程指定其核将要进入休眠状态(如任一休眠状态Cl、C2……等)。这里,应该意识到,OS,或运行在特定线程上的虚拟机可为其底层的核指定具体的功率状态。
[0022]ThreacLCOPO计数器对其对应的线程活跃且请求进入更高性能状态的周期数进行计数,例如,在线程指定其核将要进入CO功率状态和PO性能状态后,计数器每个周期都会递增,除非以及直到线程另有指定。在一个实施例中,被计数的“周期”对应于施加于所有核的时钟信号周期而非核的实际、特有的周期时间。这里,应该指出的是,不同的核可被置于分别具有其各自唯一的时钟频率的不同性能状态中。如果不同核的不同时钟频率被用于增加每个核分别的计数结果,遍及逐核的记分计数会由于不同的计数速率而不齐(skewed)并且不会立刻能相互比较。因此,为了减轻这个问题,在一个实施例中,每个核的计数利用了共同的,遍及所有核的,时钟信号(例如,来自锁相环电路或延迟锁定环电路)。这样,所有核,不管它们的工作频率如何,在其百分比利用率方面,都被同等对待,而没有惩罚。虽然没有明确提到,该相同的技术可被用于以下讨论的任何其他被列表的逐核计数。
[0023]值得注意的是,线程可在其请求CO状态的很久之后请求PO状态。在这种情况下,Thread_C0P0计数仅在PO状态被请求后开始递增。这里,再次,应该意识到,OS或运行在特定线程上的虚拟机可为其底层的核及功率状态指定性能状态。
[0024]在一个实施例中,参照图3a,在一个特定的“观察”时间周期内核的所有线程的计数被列表于计数器中301。
[0025]在每个观察周期结束时,单独的线程或称逻辑核的CO和COPO计数被结合以产生物理核的CO和COPO计数。这被在单独的CO计数和COPO计数的每一个上,不带比例的,利用简单的算术加法完成。这样,我们有一个忠实反映利用程度的计量(metric),甚至是在与物理核相关联的一个或多个逻辑核被关闭的情况下(按英特尔的说法,超线程被关闭以获得更高单线程性能),以及甚至是在仅有一个活跃进程且其从一个物理核跳至另一个的情况下。
[0026]如果,在观察时间周期结束时,核的线程的核(稍后会被更详细地讨论)计数器的综合的(consolidated)记分反映了足够高的核工作负载302,核被置于最高性能状态(如PO状态)303。根据一个实施例,最高性能状态允许核在一个有限时间周期内工作在高于处理器最大保证额定频率的频率下。
[0027]在每个观察周期结束时,一旦逻辑核相关的CO和COPO计数器的数值被消耗以生成物理核相关的CO和COPO记分,则逻辑核相关的CO和COPO计数器的计数被重置,且如果在观察时间周期结束时核的线程的计数器未反映足够高的核工作负载,计数器被重置304,且另一个观察周期开始。
[0028]图2和图3b也描绘了一个实施例,用于基于计数器数值确定