专利名称:生成一组处理器上执行的软件热分布的方法和系统的制作方法
技术领域:
本申请涉及热分布(thermal profile),尤其是处理器的热分布。更具体地,本申请涉及用于使用热采样生成在一组处理器上执行的应用程序的软件热分布的计算机实现的方法,数据处理系统,及计算机可用代码。
背景技术:
第一代单元(cell)处理器是多核心芯片,其由64位Power PC_处理器核心和8个协处理器核心组成,能进行大量浮点处理,针对计算密集工作负载和宽带富媒体(rich media)应用而优化。高速存储器控制器及高带宽总线接口也被集成在片上。单元的突破性多核心体系结构及极高速通信性能传送大大改进的实时应答,在许多情况下是最近PC处理器的性能的十倍。单元是操作系统中性的,并且同时支持多个操作系统。这类处理器的应用范围从具有引人注目的强真实性的下一代游戏系统,到在家庭中形成数字媒体及流内容的集线器的系统,到用于开发及分配数字内容的系统,以及到加速可视化及超级计算应用的系统。
当前的高性能多核处理器经常受发热问题的限制。标准的解决方案包含降温及电源管理。降温可能昂贵和/或难于封装。电源管理通常是粗动作,如果不是所有处理器达到对热限制起反应,则会进行过多″节制″。例如热管理的其它技术通过只节制超出规定温度的部件来帮助解决这些粗动作的问题。甚至通过改进热管理,具有获得应用的分布的方法的系统对于防止处理器被节制是有利的。
发明内容
图解实施例的不同方面提供了生成在一组处理器上执行的应用程序的软件热分布的计算机实现的方法,数据处理系统,及计算机可用代码。针对一组工作负载的采样该组处理器的热状态以产生所采样的信息。接着,基于所采样的信息产生热指标(thermal index)。
在所附权利要求书中提出了被认为是本图解实施例的特征的新颖特性。然而,参照下列结合附图对图解实施例进行的详细描述可以更好地理解图解实施例自身,最优使用模式,其它目的和优点,其中图1是描述数据处理系统的网络的图示,其中图解实施例的各方面可以被实现;图2是描述示出的数据处理系统的模块图,其中图解实施例的各方面可以被实现;图3是单元宽带引擎芯片的示例图,其中图解方面可以根据一个图解实施例被实现。
图4图解了基于图解实施例的示例性单元宽带引擎芯片热管理系统;图5基于一个图解实施例图解了可能出现中断及动态节制的温度和各点;图6是基于一个图解实施例,描述软件热分布的解析生成的操作的流程图;图7是基于一个图解实施例,描述在模拟环境中通过运行时刻执行来生成软件热分布的操作的流程图;图8是基于一个图解实施例,描述通过在多核处理器上的运行时刻执行来生成软件热分布和测量处理器活动的操作的流程图;图9是基于一个图解实施例,描述使用热采样,通过在多核处理器上的运行时刻执行来生成软件热分布的操作的流程图;图10是基于一个图解实施例,描述多核处理器的硬件热分布生成的操作的流程图;及图11是基于一个图解实施例,描述多核处理器系统中的生成软件热分布以得到最优功率及性能的操作的流程图。
具体实施例方式
图解实施例涉及使用热采样生成在一组处理器上执行的应用程序的软件热分布。图1-2作为可以实现图解实施例的数据处理环境的示例图。应当理解,图1-2只是示例性的,并且不准备声明或暗示关于可以实现各方面或实施例的环境的任何限定。对所描述环境的许多修改可以在不偏离图解实施例的实质和范围的前提下进行。
现在参照附图,图1描述了可以实现图解实施例的各方面的数据处理系统的网络的图示。网络数据处理系统100是可以实现图解实施例的计算机的网络。网络数据处理系统100包含网络102,其是用于提供在网络数据处理系统100内连接在一起的各种设备和计算机之间的通信链路的介质。网络102可以包含例如有线,无线通信链路或光缆的连接。
在所描述的例子中,服务器104和服务器106与存储单元108连接到网络102。另外,客户机110,112和114连接到网络102。这些客户机110,112和114可以是例如个人计算机或网络计算机。在所描述的例子中,服务器104向客户机110,112和114提供例如引导文件,操作系统映像及应用程序的数据。客户机110,112和114在这个例子中是服务器104的客户机。网络数据处理系统100可以包含其它服务器,客户机及未示出的其它设备。
在所描述的例子中,网络数据处理系统100是具有网络102的因特网,其表示使用传输控制协议/网际协议(TCP/IP)协议族彼此通信的网络及网关的全世界集合。因特网的核心是包括成千上万的商业,政府,教育的主要节点或主计算机和路由数据和消息的其它计算机系统之间的高速数据通信线路的主干网。当然,网络数据处理系统100还可以被实现成例如内部网,局域网(LAN),或广域网(WAN)的大量不同类型的网络。图1用作一个例子,并且不作为对不同图解实施例的结构限定。
现在参考图2,示出可以实现图解实施例的各方面的数据处理系统的模块图。数据处理系统200是计算机的一个例子,例如图1中的服务器104或客户机110,其中可以定位实现图解实施例的处理的计算机可用代码或指令。
在所描述的例子中,数据处理系统200使用集线器体系结构,其包含北桥和存储器控制器集线器(MCH)202及南桥和输入/输出(I/O)控制器集线器(ICH)204。处理单元206,主存储器208和图形处理器210被连接到北桥和存储器控制器集线器202。图形处理器210可以通过图形加速端口(AGP)被连接到北桥和存储器控制器集线器202。
在所描述的例子中,局域网(LAN)适配器212连接到南桥和I/O控制器集线器204。音频适配器216,键盘和鼠标适配器220,调制解调器222,只读存储器(ROM)224,硬盘驱动器(HDD)226,CD-ROM驱动器230,通用串行总线(USB)端口和其它通信端口232及PCI/PCIe设备234通过总线238和总线240连接到南桥和I/O控制器集线器204。PCI/PCIe设备可以包含例如笔记本计算机的以太网适配器,内插式卡及PC卡。PCI使用卡总线控制器,而PCIe不使用。ROM 224可以是例如快擦写二进制输入/输出系统(BIOS)。
硬盘驱动器226及CD-ROM驱动器230通过总线240连接到南桥和I/O控制器集线器204。硬盘驱动器226及CD-ROM驱动器230可以使用例如集成驱动电子(IDE)或串行高级技术附连(SATA)接口。超级I/O(SIO)设备236可以被连接到南桥和I/O控制器集线器204。
操作系统在处理单元206上运行,并且协调及提供图2中数据处理系统200内的各种部件的控制。作为客户机,操作系统可以是例如Microsoft_Windows_XP(Microsoft和Windows是在美国,其它国家或两者的微软公司的商标)的商用操作系统。例如JavaTM编程系统的面向对象编程系统可以与操作系统结合运行,并且提供来自在数据处理系统200上执行的Java程序或应用程序对操作系统的调用(Java是在美国,其它国家,或两者的Sun Microsystems公司的商标)。
作为服务器,数据处理系统200可以是例如IBM eServerTmpSeries计算机系统,其运行先进交互执行程序(AIX)操作系统或LINUX操作系统(eServer,pSeries及AIX是在美国,其它国家,或两者的国际商用机器公司的商标,而Linux是在美国,其它国家,或两者的Linus Torvalds公司的商标)。数据处理系统200可以是在处理单元206中包含多个处理器的对称多处理器(SMP)系统。可选地,可以使用一个单处理器系统。
操作系统,面向对象编程系统及应用或程序的指令位于例如硬盘驱动器226的存储设备上,并且可以被载入主存储器208以便由处理单元206执行。图解实施例的处理由处理单元206使用计算机可用程序代码来执行,该计算机可用程序代码可以位于例如主存储器208,只读存储器224中,或位于一或多个外部设备226和230的存储器中。
本领域普通技术人员理解,图1-2中的硬件可以根据实现发生变化。例如快擦写存储器,等效非易失存储器或光驱等等的其它内部硬件或外部设备可以被用于增加或取代图1-2中描述的硬件。同样,图解实施例的处理可以被应用于多处理器数据处理系统。
在某些图解例子中,数据处理系统200可以是个人数字助理(PDA),其配置快擦写存储器以提供存储操作系统文件和/或用户生成数据的非易失存储器。
总线系统可以由例如图2所示的总线238或总线240的一或多个总线组成。当然,可以使用在连接到构造或体系结构的不同部件或设备之间提供数据传送的任何类型通信构造或体系结构来实现总线系统。通信单元可以包含用于发送和接收数据的一或多个设备,例如图2的调制解调器222或网络适配器212。存储器可以是图2中的例如主存储器208,只读存储器224或在北桥和存储器控制器集线器202中找到的高速缓存。图1-2描述的例子和上述例子不暗示结构限定。例如,数据处理系统200也可以是除了PDA形式之外的平板计算机,膝上型计算机或电话设备。
图3是基于一个图解实施例的单元宽带引擎芯片的示例图,其中图解实施例的各方面可以实现。单元宽带引擎芯片300是针对以例如游戏控制台,桌面系统及服务器的富媒体应用为目标的分布式处理的单芯片多处理器实现。
单元宽带引擎芯片300可以被逻辑上分成以下功能部件PowerPC_处理器单元(PPE)301,协处理器部件(SPU)310,311及312,及存储器流控制器(MFC)305,306及307。尽管通过例子示出协处理器单元和Power PC_处理器单元,但可以支持任何类型的处理器单元。示例性单元宽带引擎芯片300实现包含一个Power PC处理器单元301和8个协处理器单元,尽管图3只示出三个协处理器单元(SPE)302,303及304。单元处理器的协处理器单元是设计成加速媒体及数据流工作负载的新处理器体系结构的第一种实现。
每个协处理器单元包含具有其自身本地存储(LS)区域313,314或315的一个协处理器部件(SPU)310,311或312,及与存储器管理部件(MMU)316,317或318相关以保存及处理存储器保护和访问许可信息的专用存储器流控制器(MFC)305,306或307。再次地,尽管通过例子示出协处理器单元,但可以支持任何类型的处理器。另外,单元宽带引擎芯片300实现单元互连总线(EIB)319及其它I/O结构以利于芯片内和外部的数据流。
单元互连总线319充当Power PC_处理器单元301及协处理器单元302,303及304的主芯片内总线。另外,单元互连总线319与其它专用于芯片外访问的芯片内接口控制器接口。芯片内接口控制器包含存储器接口控制器(MIC)320,其提供两个极端数据速率I/O(XIO)存储器通道321及322,以及单元宽带引擎接口单元(BEI)323,其提供针对单元宽带引擎300的两个高速外部I/O通道及内部中断控制。单元宽带引擎接口单元323被实现成总线接口控制器(BIC0&BIC1)324及325及I/O接口控制器(IOC)326。连接到多个RRAC接口的两个高速外部I/O通道提供单元宽带引擎300的灵活输入和输出(F1exIO_0 & F1exIO_1)353。
每个协处理器单元310,311或312具有对应的本地存储区域313,314或315及协执行单元(SXU)354,355或356。每个单个协处理器单元310,311或312可以只执行其相关本地存储区域313,314或315中的指令(包含数据载入及存储操作)。为此,使用存储器流控制器直接存储器访问操作,通过协处理器单元310,311及312的专用存储器流控制器305,306及307执行针对系统中其它地方的存储设备所有所需数据传送。
在协处理器单元310,311或312上运行的程序只使用本地存储地址访问其自身本地存储区域313,314或315。然而,每个协处理器单元的本地存储区域313,314或315也分配有总体系统的存储器映射内的实地址(RA)。这允许特权软件把本地存储区域映射到进程的有效地址(EA),以利于一个协处理器单元的本地存储和另一个协处理器单元的本地存储之间的直接存储器访问传送。Power PC_处理器单元301也可以使用有效地址直接访问任何协处理器单元的本地存储。
存储器流控制器直接存储器访问数据传送命令总是使用一个本地存储地址及一个有效地址。本地存储地址直接寻址对应于其中放置有直接存储器访问命令请求的存储器流控制器命令队列的相关协处理器单元310,311或312的本地存储存储器。然而,有效地址可以被用于访问系统中包含其它协处理器单元302,303及304的本地存储区域313,314及315的任何其它存储器存储区。
主存储设备由系统中的Power PC_处理器单元308,电源处理器单元(PPE)301,协处理器单元(SPE)302,303及304及I/O设备共享。在这个层次的存储设备中保存的所有信息对系统中的所有处理器及设备可见。程序使用有效地址访问这个层次的存储器。由于存储器流控制器协处理器单元命令队列和存储器流控制器代理命令队列及控制和状态设备被映射到有效地址空间,所以电源处理器单元301可以初始化涉及与任何协处理器单元(SPE)302,303及304相关的本地存储区域的直接存储器访问操作。
协处理器单元程序通过产生和放置具有适当有效地址和本地存储地址的直接存储器访问数据传送命令到其存储器流控制器(MFC)305,306或307命令队列来访问主存储设备。当执行时,所需数据在其自身本地存储区域和主存储设备之间传送。存储器流控制器(MFC)305,306或307提供针对由例如电源处理器单元(PPE)301的其它设备产生的命令的第二代理命令队列。代理命令队列通常被用于在启动协处理器单元之前把程序存储在本地存储设备中。代理命令也可以被用于上下文存储操作。
数据传送的有效地址部分是更通用的,并且可以访问包含所有协处理器单元本地存储区域的主存储设备。这些本地存储区域被映射到有效地址空间。数据传送被保护。通过存储器管理单元把有效地址转换为实地址。转换过程允许系统存储器的虚拟化及存储保护。
单元宽带引擎芯片300上的Power PC_处理器单元301包括64位Power PC_处理器单元308及Power PC_存储子系统309。Power PC_处理器单元308包含处理器执行单元(PXU)329,一级(L1)高速缓存330,存储器管理单元(MMU)331及替换管理表(RMT)332。Power PC_存储子系统309包括可高速缓存接口单元(CIU)333,不可高速缓存单元(NCU)334,二级(L2)高速缓存328,替换管理表(RMT)335及总线接口单元(BIU)327。总线接口单元327把Power PC_存储子系统309连接到单元互连总线319。
协处理器单元310,311或312及存储器流控制器305,306及307通过具有容量的单向通道彼此通信。通道接口针对存储器流控制器305,306及307,协处理器单元310,311及312传送消息。总线接口单元339,340及341把存储器流控制器305,306及307连接到单元互连总线319。
存储器流控制器305,306及307为协处理器单元310,311及312提供两个主要功能。存储器流控制器305,306及307在协处理器单元310,311或312的本地存储区域313,314及315及主存储设备之间移动数据。另外,存储器流控制器305,306及307提供协处理器单元310,311及312和系统中其它设备之间的同步设备。
存储器流控制器305,306及307实现具有四个功能单元直接存储器访问控制器(DMAC)336,337,和338,存储器管理单元(MMU)316,317,和318,原子单元(ATO)342,343,和344,替换管理表(RMT)345,346,和347及总线接口单元(BIU)339,340,和341。直接存储器访问控制器336,337,和338维护及处理存储器流控制器命令队列(MFCCMDQ),其包括存储器流控制器协处理器单元命令队列(MFC SPUQ)和存储器流控制器代理命令队列(MFC PrxyQ)。具有16个条目的存储器流控制器协处理器单元命令队列处理来自协处理器单元通道接口的存储器流控制器命令。具有8个条目的存储器流控制器代理命令队列通过存储器映射输入和输出(MMIO)载入和存储操作来处理来自其它设备的存储器流控制器命令。典型的直接存储器访问命令在本地存储器和主存储设备之间移动数据。主存储设备被有效地址直接存储器访问命令操作数寻址。本地存储器被本地存储地址(LSA)直接存储器访问命令操作数寻址。
在虚拟模式中,存储器管理单元316,317,和318提供地址转换和存储保护设备,以处理来自直接存储器访问控制器336,337,和338的有效地址转换请求并且回送所转换的地址。每个协存储器管理单元维护段后备缓冲区(SLB)和转换后备缓冲区(TLB)。段后备缓冲区把有效地址转换到虚拟地址(VA),并且转换后备缓冲区把来自段后备缓冲区的虚拟地址转换到实地址。
原子单元342,343,和344提供与系统中其它处理单元保持同步所必需的数据高速缓存等级。保持与系统中其它高速缓存的一致性。原子直接存储器访问命令为协处理器单元请求提供与其它单元同步的手段。
总线接口单元339,340及341的主要功能是给协处理器单元302,303及304提供到单元互连总线的接口。
单元互连总线319提供单元宽带引擎芯片300上的所有处理器和连接到单元互连总线319的外部接口控制器之间的通信路径。
存储器接口控制器320提供单元互连总线319和一个或两个极端数据速率I/O单元存储器通道321及322之间的接口。极端数据速率(XDRTM)动态随机访问存储器(DRAM)是Rambus提供的高速、高度串行存储器。使用由Rambus提供的宏访问极端数据速率动态随机访问存储器,该宏在本文中称作极端数据速率I/O单元存储器通道321及322。
存储器接口控制器320只是单元互连总线319上的从设备。存储器接口控制器320确认在其配置地址范围中对应于所支持的集线器中的存储器的命令。
总线接口控制器324和325管理芯片内和芯片外从单元互连总线319到两个外部设备中的任意一个外部设备的数据传送。总线接口控制器324和325可以与I/O设备交换非一致传输,或可以扩展单元互连总线319到另一个设备,该另一个设备甚至可以是另一个单元宽带引擎芯片。当用于扩展单元互连总线时,在单元宽带引擎中的高速缓存和附连外部设备中的高速缓存之间保持一致性。
I/O接口控制器326处理I/O接口设备发出的并且指定到一致单元互连总线319的命令。I/O接口设备可以是连接到I/O接口的任何设备,例如附连多个I/O设备的I/O桥接芯片或以非一致方式访问的另一个单元宽带引擎芯片300。I/O接口控制器326还截取单元互连总线319上指定到驻留在I/O桥接芯片或非一致单元宽带引擎芯片300中或后面的存储器映射寄存器的访问,并且把它们路由到适当I/O接口。I/O接口控制器326还包含内部中断控制器(IIC)349及I/O地址转换单元(I/OTrans)350。
尽管已经提供了如何实现不同部件的具体例子,但不表示对其中可以使用图解实施例的各方面的体系结构的限制。图解实施例的各方面可以与任何多核处理器系统一起使用。
在执行应用程序期间,单元宽带引擎芯片内的区域的温度可能上升。如果未经检查,温度会上升超过导致不正确操作或物理损坏的最大指定结温。为了避免这些情况,单元宽带引擎芯片的数字热管理单元监视并且试图控制操作期间单元宽带引擎芯片内的温度。数字热管理单元包括热管理控制单元(TMCU)和10个分布式数字热传感器(DTS)。
8个协处理器单元的每个中有一个传感器,一个传感器位于PowerPC_处理单元中,并且一个传感器与线性热敏二极管相邻。线性热敏二极管是计算温度的片上二极管。这些传感器被放置在与通常在执行多数应用程序期间经历温度的最大上升的相关单元内的区域相邻的位置。热控制单元监视来自每个这样的传感器的反馈。如果传感器的温度上升超过可编程点,则热控制单元可以被配置为产生到Power PC_处理单元或一或多个协处理器单元的中断,并且动态地节制相关Power PC_处理单元或协处理器单元的执行。
通过将Power PC_处理单元或协处理器单元停止及运行可编程周期数来实现节制。中断允许特权软件在动态节制是试图无需软件干预便保持宽带引擎芯片内的温度低于可编程水平的硬件设备时采取纠正措施。特权软件把节制水平设置为等于或低于所推荐的设置。
如果节制Power PC_处理单元、协处理器单元或特权软件不能有效管理温度并且温度持续上升,则单元宽带引擎芯片的时钟在温度达到配置数据定义的热过载温度时停止。热过载特性保护单元宽带引擎芯片免受物理损坏。从这种状态恢复需要硬复位。注意由数字热传感器监视的区域的温度不必是相关Power PC_处理单元或协处理器单元内的最热点。
图4图解了基于图解实施例的,通过图3的普适(pervasive)逻辑单元351提供的示例性单元宽带引擎芯片热管理系统。单元宽带引擎芯片热管理在10个分布式数字热传感器(DTS)(为了简单只示出数字热传感器404,406,408和410)和热管理控制单元(TMCU)402之间划分。协处理器单元传感器(SPU)440中的数字热传感器404和406,Power PC_处理器单元传感器442中的数字热传感器408,及与线性二极管相邻的传感器444中的数字热传感器410中的每个提供当前温度检测信号,其指示温度等于或低于由热管理控制单元402设置的当前温度检测范围。热管理控制单元402利用来自数字热传感器404,406,408和410的信号的状态不断地跟踪每个Power PC_处理单元或协处理器单元的数字热传感器404,406,408和410的温度。当跟踪温度时,热管理控制单元402把当前温度提供为表示相关Power PC_处理单元或协处理器单元内的温度的数值。在进行制造时设置内部校准存储器428以校准各个传感器。
除了上述热管理控制单元402的单元之外,热管理控制单元402还包含复用器446及450,工作寄存器448,比较器452及454,串化器456,热管理(TM)控制状态机458及数据流(DF)单元460。复用器446及450组合在单个介质上传送的各种出站及入站信号。工作寄存器448被用于保存在热管理控制单元402中执行的乘法的结果。比较器452及454提供两个输入的比较功能。比较器452是大于或等于比较器。比较器454是大于比较器。串化器456把来自源的低速并行数据转换成用于传送的高速串行数据。串化器456与协处理器单元传感器440上的解串器462及464协同工作。解串器462及464把所接收的高速串行数据转换成低速并行数据。热管理控制状态机458被用于启动热管理控制单元402的内部初始化。数据流单元460控制到达和来自热管理控制状态机458的数据。
热管理控制单元402可以被配置为使用中断逻辑416产生到PowerPC_处理单元的中断,并且使用节制逻辑418动态地节制Power PC_处理单元或协处理器单元的执行。热管理控制单元402把表示温度的数值与可编程中断温度及可编程节制点相比较。如果温度在编程中断温度范围内,则产生到Power PC_处理单元(如果使能)的外部中断。
另外,第二可编程中断温度可以导致向系统控制器的发出提醒信号。如果温度等于或超过节制点,则热管理控制单元402通过动态地启动及停止Power PC_处理单元或协处理器单元来节制Power PC_处理单元或协处理器单元的执行。软件可以使用动态热管理寄存器来控制节制的比率及频率。
图5是基于一个图解实施例说明温度和可能出现中断及动态节制的各点的曲线图。在图5中,线500表示Power PC_处理单元的温度,或如果协处理器单元正常运行;在标记″N″的区域中没有节制。当温度达到节制点时,热管理控制单元开始节制相关Power PC_处理单元或协处理器单元的执行。发生节制的区域被标记″T″。当Power PC_处理单元或协处理器单元的温度下降到低于结束节制点时,执行返回到正常操作。
如果出于任何原因,温度持续上升并且达到处于或超过完全节制点的温度,则Power PC_处理单元或协处理器单元被停止,直到温度下降到低于完全节制点。Power PC_处理单元或协处理器单元停止的区域被标记″S″。当温度处于或超过完全节制点时,停止Power PC_处理单元或协处理器单元被称作核心停止安全。
在这个示例性说明中,设置中断温度超过节制点;因此,在PowerPC_处理单元或协处理器单元因这个情况曾经停止的情况下通知软件;假定热中断屏蔽寄存器(TM ISR)设置成活跃,从而允许在待处理中断期间恢复Power PC_处理单元或协处理器单元。如果动态节制被禁止,则特权软件管理热条件。不管理热条件可以导致相关Power PC_处理单元或协处理器单元的不正确操作,或由热过载功能导致热关机。
返回图4,热传感器状态寄存器包括热传感器当前温度状态寄存器412及热传感器最大温度状态寄存器414。这些寄存器允许软件读取每个数字热传感器的当前温度,确定一个时间段内达到的最高温度,及当温度达到可编程温度时导致中断。热传感器状态寄存器具有可以标记为管理程序特权的相关实地址页。
热传感器当前温度状态寄存器412包含每个数字热传感器的当前温度的编码。由于传感器的温度检测的时延,读出这些寄存器的时延及正常温度波动,这些寄存器中报告的温度是较早时间点的温度,并且可能未反映软件接收数据时的实际温度。由于每个传感器具有专用控制逻辑,所有传感器被并行采样。这些寄存器的内容在下一个采样周期开始时被更新。采样周期的长度由SenSampTime配置字段控制。
热传感器最大温度状态寄存器414包含从最后读取这些寄存器时开始每个传感器达到的最大温度的编码。读取这些寄存器使热管理控制单元402把每个传感器的当前温度复制到寄存器。在读取之后,热管理控制单元402从这个点开始继续跟踪最大温度。每个寄存器的读取是独立的。一个寄存器的读取不影响另一个寄存器的内容。每个传感器具有专用控制逻辑,所以所有传感器被并行采样。这些寄存器的内容在下一个采样周期开始时被更新。采样周期的长度由SenSampTime配置字段控制。
中断逻辑416中的热传感器中断寄存器控制到Power PC_处理器单元的热管理中断的生成。这个寄存器组包括热传感器中断温度寄存器420(TS_ITR1和TS_ITR2),热传感器中断状态寄存器422(TS_ISR),热传感器中断屏蔽寄存器424(TS_IMR),及热传感器全局中断温度寄存器426(TS_GITR)。热传感器中断温度寄存器420和热传感器全局中断温度寄存器426包含导致到Power PC_处理器单元的热管理中断的温度的编码。
当传感器在热传感器当前温度状态寄存器412中的温度编码大于或等于相应传感器在热传感器中断温度寄存器420中的中断温度编码时,设置热传感器中断状态寄存器422中的对应状态位(TS_ISR[Sx])。当任何传感器在热传感器当前温度状态寄存器412中温度编码大于或等于热传感器全局中断温度寄存器426中的全局中断温度编码时,设置热传感器中断状态寄存器422中的对应状态位(TS_ISR[Gx])。
如果任何热传感器中断温度状态寄存器422位(TS_ISR[Sx])被设置,并且热传感器中断屏蔽寄存器424中的对应屏蔽位(TS_IMR[Mx])也未被设置,则对Power PC_处理器单元发出热管理中断信号。如果任何热传感器中断状态寄存器422位(TS_ISR[Gx])被设置,并且热传感器中断屏蔽寄存器424中的对应屏蔽位(TS_IMR[Cx])也未被设置,则对Power PC_处理器单元发出热管理中断信号。
为了清除中断条件,特权软件应当把热传感器中断屏蔽寄存器中的任何对应屏蔽位设置为′0′。为了使能热管理中断,特权软件保证温度小于对应传感器的中断温度,并且接着执行以下序列。在温度不低于中断温度时使能中断可以导致产生立即热管理中断。
1.把′1′写入热传感器中断状态寄存器422中的对应状态位。
2.把′1′写入热传感器中断屏蔽寄存器424中的对应屏蔽位。
热传感器中断温度寄存器420包含位于协处理器单元,PowerPC_处理器单元及邻近线性热敏二极管的传感器的中断温度水平。这个寄存器中的编码中断温度水平与在热传感器当前温度状态寄存器412中编码的对应中断温度相比较。这些比较的结果被用于产生热管理中断。每个传感器的中断温度水平是独立的。
除了在热传感器中断温度寄存器420中设置独立中断温度水平之外,热传感器全局中断温度寄存器426包含第二中断温度水平。这个水平应用于单元宽带引擎芯片中的全部传感器。这个寄存器中所编码的全局中断温度水平与每个传感器编码的当前温度相比较。这些比较的结果被用于产生热管理中断。
全局中断温度的目的是提供对单元宽带引擎芯片中温度上升的早期指示。特权软件及系统控制器可以使用这个信息开始控制温度的操作,例如,提高风扇速度,重新平衡单元上的应用软件等等。
热传感器中断状态寄存器422识别哪些传感器满足中断条件。中断条件是指每个热传感器中断状态寄存器422位具有的特定条件,在满足条件时,使得能够发生中断。只在对应屏蔽位被设置的情况下才对Power PC_处理器单元产生实际中断。
热传感器中断状态寄存器422包含三组状态位-数字传感器全局阈值中断状态位(TS_ISR[Gx]),数字传感器阈值中断状态位(TS_ISR[Sx]),及数字传感器全局低于阈值中断状态位(TS_ISR[Gb])。
当在热传感器当前温度状态寄存器412中针对传感器的温度编码大于或等于热传感器中断温度寄存器420中对应传感器的中断温度编码,并且热传感器中断屏蔽寄存器424的对应指示位,TM_IMR[Bx]=′0′时,硬件设置热传感器中断状态寄存器422中的状态位(TS_ISR[Sx])。另外,当在热传感器当前温度状态寄存器412中针对传感器的温度编码低于热传感器中断温度寄存器420中的对应传感器的中断温度编码,并且热传感器中断屏蔽寄存器424的对应指示位,TM_IMR[Bx]=′1′时,硬件设置热传感器中断状态寄存器422的TS_ISR[Sx]。
当任何参与传感器的当前温度大于或等于热传感器全局中断温度寄存器426的温度,并且热传感器中断屏蔽寄存器424的TS_IMR[BG]被设置成′0′时,硬件设置热传感器中断状态寄存器422的TS_ISR[Gx]。单个热传感器中断状态寄存器422的TS_ISR[Gx]位指示哪些单个传感器满足这些条件。
在热传感器中断屏蔽寄存器424中的所有参与传感器TS_IMR[Cx]具有低于热传感器全局中断温度寄存器426的温度的当前温度,并且热传感器中断屏蔽寄存器424的TS_IMR[BG]被设置成′1′时,硬件设置热传感器中断状态寄存器422,TS_ISR[Gb]。由于所有参与传感器具有低于热传感器全局中断温度寄存器426的温度的当前温度,所以针对全局低于阈值的中断条件,只提供热传感器中断状态寄存器422的一个状态位(TS_ISR[Gb])。
一旦热传感器中断状态寄存器422中的状态位(TS_ISR[Sx],[Gx]或[Gb])被设置成′1′,则这个状态被保持,直到被特权软件重新设置为′0′。特权软件通过把′1′写入热传感器中断状态寄存器422中的对应位,把状态位重新设置为′0′。
热传感器中断屏蔽寄存器424包含用于各个传感器的两个字段和用于全局中断条件的多个字段。中断条件是指每个热传感器中断屏蔽寄存器424位具有的特定条件,在满足条件时,使得能够产生中断。只在对应屏蔽位被设置的情况下才对Power PC_处理器单元产生实际中断。
针对各个传感器的两个热传感器中断屏蔽寄存器数字热阈值中断字段是TS_IMR[Mx]和TS_IMR[Bx]。热传感器中断屏蔽寄存器424的TS_IMR[Mx]屏蔽位阻止中断状态位产生针对Power PC_处理器单元的热管理中断。热传感器中断屏蔽寄存器424的TS_IMR[Bx]方向位为中断条件设置超过或低于热传感器中断温度寄存器420中的对应温度的温度方向。设置热传感器中断屏蔽寄存器424TS_IMR[Bx]为′1′,则会设置中断条件的温度为低于热传感器中断温度寄存器420中的对应温度。设置热传感器中断屏蔽寄存器424的TS_IMR[Bx]为′0′,则会设置中断条件的温度为等于或超过热传感器中断温度寄存器420中的对应温度。
针对全局中断条件的热传感器中断屏蔽寄存器424字段是TS_IMR[Cx],TS_IMR[BG],TS_IMR[Cgb],及TS_IMR[A]。热传感器中断屏蔽寄存器424的TS_IMR[Cx]屏蔽位阻止全局阈值中断并且选择哪些传感器参与全局低于阈值的中断条件。热传感器中断屏蔽寄存器424的TS_IMR[BG]方向位选择全局中断条件的温度方向。热传感器中断屏蔽寄存器424的TS_IMR[Cgb]屏蔽位阻止全局低于阈值的中断。热传感器中断屏蔽寄存器424的TS_IMR[A]向系统控制器发出提醒。
设置热传感器中断屏蔽寄存器424的TS_IMR[BG]为′1′,则会针对当在热传感器中断屏蔽寄存器424的TS_IMR[Cx]中设置的所有参与传感器的温度低于全局中断温度水平时出现的全局中断条件设置温度范围。设置热传感器中断屏蔽寄存器424的TS_IMR[BG]为′0′,则会针对当任何参与传感器的温度大于或等于热传感器全局中断温度寄存器426中的对应温度时出现的全局中断条件设置温度范围。如果热传感器中断屏蔽寄存器424的TS_IMR[A]被设置成′1′,则当任何热传感器中断屏蔽寄存器424的TS_IMR[Cx]位及其对应热传感器中断状态寄存器422状态位(TS_ISR[Gx])都被设置为′1′时,发出提醒。另外,当热传感器中断屏蔽寄存器424的TS_IMR[Cgb]及热传感器中断状态寄存器422的TS_ISR[Gb]都被设置为′1′时,发出提醒。
当任何热传感器中断屏蔽寄存器424的TS_IMR[Mx]位及其对应热传感器中断状态寄存器422状态位(TS_ISR[Sx])都被设置为′1′时,对Power PC_处理器单元产生热管理中断。当任何热传感器中断屏蔽寄存器424的TS_IMR[Cx]位及其对应热传感器中断状态寄存器422状态位TS_ISR[Gx]都被设置为′1′时,也产生热管理中断。另外,当热传感器中断屏蔽寄存器424的TS_IMR[Cgb]及热传感器中断状态寄存器422的TS_ISR[Gb]都被设置为′1′时,对Power PC_处理器单元产生热管理中断。
节制逻辑418中的动态热管理寄存器包含控制Power PC_处理器单元或协处理器单元的执行节制的参数。动态热管理寄存器是一组寄存器,其包含热管理控制寄存器430(TM_CR1和TM_CR2),热管理节制点寄存器432(TM_TPR),热管理停止时间寄存器434(TM_STR1和TM_STR2),热管理节制比例寄存器436(TM_TSR),及热管理系统中断屏蔽寄存器438(TM_SIMR)。
热管理节制点寄存器432设置传感器的节制点。可以在热管理节制点寄存器432中设置两个独立节制点,即ThrottlePPE和ThrottleSPE,一个用于Power PC_处理器单元,一个用于协处理器单元。同样,这个寄存器中包含用于退出节制以及停止Power PC_处理器单元或协处理器单元的温度点。Power PC_处理器单元或协处理器单元的执行节制在温度等于或超过节制点时启动。节制在温度降到低于退出节制温度(TM_TPR[EndThrottlePPE/EndThrottleSPE])时停止。如果温度达到完全节制或停止温度(TM_TPR[FullThrottlePPE/FullThrottleSPE]),则停止执行PowerPC_处理器单元或协处理器单元。热管理控制寄存器430被用于控制节制行为。
热管理停止时间寄存器434及热管理节制比例寄存器436被用于控制节制的频率及量。当温度达到节制点时,将对应的Power PC_处理器单元或协处理器单元停止一个由热管理节制比例寄存器436中对应比例值指定的时钟周期数。接着,允许Power PC_处理器单元或协处理器单元运行由热管理停止时间寄存器434中的运行值指定的时钟周期数乘以对应比例值所得的周期数。这个序列继续执行,直至温度低于退出节制(TM_TPR[EndThrottlePPE/EndThrottleSPE])。
热管理系统中断屏蔽寄存器438被用于选择在中断待处理时哪些中断退出Power PC_处理器单元的节制。
热管理控制寄存器430独立地设置每个Power PC_处理器单元或协处理器单元的节制模式。在两个寄存器之间划分控制位。以下是可以独立针对每个Power PC_处理器单元或协处理器单元设置的五种不同模式。
动态节制禁止(包含核心停止安全)。
正常操作(使能动态节制及核心停止安全)。
总是节制Power PC_处理器单元或协处理器单元(使能核心停止安全)。
核心停止安全禁止(禁止使能动态节制及核心停止安全)。
Power PC_处理器单元或协处理器单元总是被节制,并且禁止核心停止安全。
特权软件应当针对运行应用程序或操作系统的Power PC_处理器单元或协处理器单元将控制位设置为正常操作。如果Power PC_处理器单元或协处理器单元不运行应用程序代码,则特权软件应当把控制位设置为禁止。″Power PC_处理器单元或协处理器单元总是被节制″模式被用于应用程序开发。这些模式对确定应用程序是否能够在极端节制条件下进行操作是有用的。当特权软件主动管理热事件时,应当只准许允许Power PC_处理器单元或协处理器单元以动态节制或禁止核心停止安全模式来执行。
热管理系统中断屏蔽寄存器438控制哪些Power PC_处理器单元中断导致热管理逻辑临时停止节制Power PC_处理器单元。在中断待处理时,针对两个线程临时暂停节制,不考虑中断所针对的线程。当中断不再待处理时,只要节制条件仍然存在,节制可以恢复。协处理器单元的节制从来不基于系统中断条件退出。可以覆盖节制条件的Power PC_处理器单元中断条件如下外部递减器(decrementer)管理程序递减器系统差错热管理热管理节制点寄存器432包含这样的己编码温度点,在这些点处Power PC_处理器单元或协处理器单元的执行节制开始和结束。这个寄存器还包含这样己编码温度点,在这些点处Power PC_处理器单元或协处理器单元的执行被完全节制。
热管理节制点寄存器中的数值被用于设置用来在三个热管理状态之间改变的三个温度点正常运行(N),Power PC_处理器单元或协处理器单元节制(T),及Power PC_处理器单元或协处理器单元停止(S)。针对Power PC_处理器单元及协处理器单元支持独立温度点。
当热传感器当前温度状态寄存器412中传感器的已编码当前温度等于或大于节制温度(ThrottlePPE/ThrottleSPE)时,在使能的情况下,开始对应Power PC_处理器单元或协处理器单元的执行节制。执行节制持续到对应传感器的已编码当前温度小于已编码温度才结束节制(EndThrottlePPE/EndThrottleSPE)。作为安全措施,如果已编码的当前温度等于或大于完全节制点(FullThrottlePPE/FullThrottleSPE),则停止对应Power PC_处理器单元或协处理器单元。
热管理停止时间寄存器434控制应用于处于热管理节制状态的具体Power PC_处理器单元或协处理器单元的节制的量。热管理停止时间寄存器中的数值用Power PC_处理器单元或协处理器单元被停止的时间与它运行的时间的百分比来表示(核心停止(x)/32)。通过热管理节制比例寄存器436控制Power PC_处理器单元或协处理器单元停止及运行的实际时钟周期数(NClks)。
热管理节制比例寄存器436控制在热管理节制状态内Power PC_处理器单元或协处理器单元停止和运行的实际周期数。在这个寄存器中的数值是配置环(configuration ring)设置TM_Config[MinStopSPE]的倍数。实际停止和运行周期数通过以下等式计算协处理器单元运行及停止时间SPE_StopTime=(TM_STR1[StopCore(x)]*TM_Config[MinStopSPE])*TM_TSR[ScaleSPE]SPE_RunTime=(32-TM_STR1[StopCore(x)])*TM_Config[MinStopSPE])*TM_TSR[ScaleSPE]Power PC_单元运行及停止时间PPE_StopTime=(TM_STR2[StopCore(8)]*TM_Config[MinStopPPE])*TM_TSR[ScalePPE]PPE_RunTime=(32-TM_STR2[StopCore(8)])*TM_Config[MinStopPPE])*TM_TSR[ScalePPE]运行及停止时间可以通过中断及写入各种热管理寄存器的特权软件改变。
尽管以下描述涉及一个指令流及一个处理器,但该指令流可以是一组指令流,并且该处理器可以是一组处理器。即,组可能仅仅是单指令流和单处理器,或两个或更多指令流和处理器。
图6是基于一个图解实施例,描述软件热分布的解析生成的操作的流程图。软件热分布也可以被称作软件热指标。软件热分布是包含关于硬件和/或软件的热特性的信息的数据结构。
在操作开始时,执行在一组处理器上执行的程序或应用程序的编译,建立,或后处理(步骤602)。为了估测编译,建立或后处理程序的每指令周期数(CPI)效率,分析编译,建立或后处理程序的指令流(步骤604)。编译器需要理解微结构的详细资料以优化目标代码。通过这个知识,编译器基于指令类型和操作数相关性为每个指令指定固定每指令周期数(CPI)。所估测的每指令周期数是性能效率的近似值,其可用于确定热分布或热指标。在数据结构内,将程序的每指令周期数存储预定时间(步骤606)。预定时间可以是在分析程序的指令流之前设置的任何时间。数据结构可以是例如寄存器或数据库的任何类型的数据结构。
接着,基于所存储的每指令周期数的值产生热指标(步骤608)。热指标的生成在步骤610-616中描述。首先,从存储器中检索所存储的每指令周期数值(步骤610)。处理该数值,使得检索的数值与每指令周期数的倒数成比例(步骤612)。所处理的数值被保存为热指标(步骤614)。确定是否存在任何其它未处理的存储数值(步骤616)。如果在步骤616存在需要处理的其它存储数值,则操作返回到步骤610,否则操作结束。在这个示例性方面,热指标与每指令周期数的倒数(1/CPI)成比例。具有较低每指令周期数数值的程序使用更多机器资源,并且因而对系统的热环境有较高影响(例如,较低CPI提高了处理器的温度)。尽管信息流的每指令周期数被用于这个图解实施例,但例如执行单元或数据流单元传送的每字节周期数的其它度量也可以用于计算热指标。
在步骤608-616针对程序产生的热指标可以通过编译器产生。在这些例子的简单形式中,热指标可以是表示各种执行单元和数据流单元的强度的所分析信息的单个数或加权和。可选地,也可以使用每个处理器的执行单元和数据流单元的值的向量。针对应用程序产生热指标。硬件也具有基于核心的实现的热指标。核心的热映射,热效率,在小片上的位置等等可以被用于产生这个热指标。接着,一起使用两个热指标以更加准确地表示在所选择的核心上运行的应用程序的热特性。在图解实施例中,热指标将包含标准偏差信息,以便更加准确地表示软件的峰值,而不仅仅是对系统的平均热影响。热指标可以各例如ELF注解的程序头信息包含在一起。
图6中处理的示例性实现如下。编译器用于产生应用程序的目标代码。在编译期间,编译器可以检查指令序列。利用微结构的详细知识,针对目标代码产生所估测的CPI。接着,CPI的倒数被存储在数据结构中。数据结构的内容可以接着被加载器使用,以确定运行应用程序的最佳核心。加载器也可以把应用程序热指标与核心的热指标组合,以进一步优化应用程序对系统的热环境的热影响。
在这个图解实施例中,与经验测量温度、处理器活动比较,该方案的优势是经验测量把结果软件热指标联系到特定多核处理器芯片及工作负载水平,其中这个方案表示软件的理想值。另外,这个图解实施例不限于特定芯片或系统工作负载水平。
微处理器体系结构上的软件编译,建立和/或后处理将使用一组机器资源。通过对软件的精心分析,结合微处理器体系结构的详细知识,可以估测软件将如何高效地使用机器的资源。资源效率(强度)将是软件的热影响的指示器。
图7是基于一个图解实施例,描述在模拟环境中通过运行时刻执行来产生软件热分布的操作的流程图。作为示例性方面,在模拟环境中使用运行时刻执行可以使用图4的热管理控制单元402产生热分布。
在操作开始时,在软件模拟器上执行在一组处理器上执行的软件程序或应用程序(步骤702)。在执行软件模拟时,分析在处理器上执行的硬件操作的类型及频率(步骤704)。在这个示例性方面,基于周期的模拟器被用于更加准确地产生每指令周期数(CPI)。例子将是后处理通过编译器产生的目标代码。使用基于周期的模拟器模拟指令序列,以确定执行指令流所需周期数。CPI是性能效率的近似值,其可用于确定热分布或热指标。
模拟器需要微结构的详细资料,以模拟处理器的操作。通过这个知识,模拟器可以基于指令类型和操作数相关性估测每指令周期数。该估测比通过编译器产生的估测更加准确。所估测的每指令周期数是性能效率的近似值,其可用于确定热分布或热指标。在数据结构内将软件模拟的已分析信息存储预定时间(步骤706)。预定时间可以是在分析运行程序的指令流之前设置的任何时间。数据结构可以是例如寄存器或数据库的任何类型的数据结构。基于所分析的硬件的热特性的知识,产生软件热指标(步骤708)。热指标的生成在图6的步骤610-616中描述。
作为一个例子,每指令周期数指示软件模拟使用微处理器的内部执行流水线的强度;在这种情况下较低每指令周期数数值指示在执行流水线上的较高强度。同样,单位字节周期数指示软件使用微处理器的数据流单元的强度。
图7中处理的示例性实现如下。编译器用于产生应用程序的目标代码。在编译之后,在基于周期的模拟器上执行目标代码。作为目标代码的一部分模拟,记录应用程序的指令序列的准确周期计数。接着,周期数除以序列中的指令数量以确定CPI。在模拟期间,模拟器可以检查指令序列。利用微结构的详细知识,针对目标代码产生所估测的CPI。接着,CPI的倒数被存储在数据结构中。数据结构的内容可以接着被加载器使用,以确定运行应用程序的最佳核心。加载器也可以把应用程序热指标与核心的热指标组合,以进一步优化应用程序对系统的热环境的热影响。
这个方法与经验测量在多核处理器上的温度及处理器活动比较的优势是,经验测量把结果软件热指标联系到特定多核处理器芯片,而这个方法表示软件的理想值并且不限于特定芯片。接着,这可以被反馈到编译器,以便优化特定多处理器芯片的软件和系统工作负载。
图8是基于一个图解实施例,描述通过在多核处理器上的运行时刻执行来产生软件热分布,以及测量处理器活动的操作的流程图。作为示例性方面,使用在多核处理器上的运行时刻执行和测量处理器活动,可以使用图4的热管理控制单元402产生热分布。
在操作开始时,在一或多个处理器上执行例如程序或应用程序的各种工作负载(步骤802)。使用应用程序提供了具体应用程序的热指标的更加准确的指示。虽然工作负载不太准确,但它们覆盖应用程序的广大范围,其省略了针对每个具体应用执行分析的需要。选择工作负载以表示通常由系统的目标市场段执行的代码的类型。工作负载是小代码段,其表示应用程序空间的计算方面。可以具有若干热指标数值,每个市场段一个。作为一个例子,选择快速富立叶变换(FFT)工作负载,以表示在地理科学市场段(信号分析)中执行的典型计算密集工作。工作负载对多核处理器的热状态具有变化的影响。虽然正执行工作负载,但通过使用建立到多核处理器中的仪器来采样操作的类型和频率(步骤804)。在这个示例性方面中,处理器的性能监视能力被用于监视应用程序的活动。一个例子是记录由于高速缓存命中失误或操作数相关性而导致的指令暂停的数量。该结果是关于在硬件上运行的工作负载或应用程序的效率的测量。暂停数量的倒数与核心的应用程序利用率成比例,并且因而可以被用作热指标。在步骤804中执行的采样可以是例如组合图4中热传感器当前温度状态寄存器412讨论的任何类型的采样。可能的测量可以包含例如针对每个核心的指令暂停或活动,高速缓存活动,总线活动及存储器访问。接着,把从采样获得的信息及处理器的热特性的知识在数据结构内存储预定时间(步骤806)。预定时间可以是在分析运行程序的指令流之前设置的任何时间。数据结构可以是例如寄存器或数据库的任何类型的数据结构。所存储的信息可以接着用于产生软件模块的软件热指标,以预测多核处理器上的热影响(步骤808),此后操作结束。热指标的生成在图6的步骤610-616中描述。
存储在数据结构中的信息如何被转换为热指标的一个例子是使用信息的加权和。例如,当高速缓存命中失误的数量提高时,处理的总体活动性较低并且对处理器具有较低热影响。在这种情况下,高速缓存命中失误的实际加权可以为负。权重取决于存储在数据结构中的信息。全部假定热指标是应用程序对处理器的热影响的测量。热指标越高,应用程序越可能提高处理器的温度。
与分析估测比较,这个方法的优势是经验测量把结果软件′热指标″联系到特定多处理器芯片及系统工作负载。接着,这可以被反馈到编译器,以便优化特定多处理器芯片的软件和系统工作负载。
图9是基于一个图解实施例,描述使用热采样,通过在多核处理器上的运行时刻执行来产生软件热分布的操作的流程图。作为示例性方面,使用在使用热采样的多核处理器上的运行时刻执行,可以使用图4的热管理控制单元402产生热分布。
在操作开始时,在一或多个处理器上执行例如程序或应用程序的各种工作负载(步骤902)。使用应用程序提供了具体应用程序的热指标的更加准确的指示。虽然工作负载不太准确,但它们覆盖应用程序的广大范围,其省略了针对每个具体应用执行分析的需要。工作负载将对多核处理器的热状态有不同的影响。虽然工作负载正被执行,但执行多核处理器的热状态的采样(步骤904)。在这个示例性方面,使用热管理。处理器中的热传感器在执行工作负载时被读取。结果是应用程序的热量-时间曲线图。一个例子是图5中的温度曲线图,其中温度在y轴上示出,并且时间在x轴上示出。接着,把从处理器的采样获得的信息在数据结构内存储预定时间(步骤906)。预定时间可以是在分析运行程序的指令流之前设置的任何时间。数据结构可以是例如寄存器或数据库的任何类型的数据结构。所存储的信息可以接着用于产生软件模块的软件热指标,以预测多核处理器上的热影响(步骤908),此后操作结束。在运行应用程序时,存在许多方式产生采样温度的热指标。一个例子是得到所记录的温度的平均数,并且加上相对平均数的温度变化的标准偏差或2总和(sigma)。其它例子可以是如图6的步骤610-616中描述的热指标的生成。
与分析估测比较,这个方法的优势是经验测量把结果软件″热指标″联系到特定多处理器芯片,系统工作负载及热环境。接着,这可以被反馈到编译器,以便优化这个环境的软件。
图10是基于一个图解实施例,描述多核处理器的硬件热分布的生成的操作的流程图。硬件热分布是包含关于硬件或系统的热性能的信息的数据结构。由于相对其它核心的核心位置及系统的降温解决方案,处理器上的某些核心可以具有更好的热特性。硬件热分布可以被考虑为处理器如何响应热密集工作负载的基准。这个基准可以基于系统的环境发生变化,(即系统在夏季的德克萨斯,极热)。核心的热映射,热效率,在小片上的位置等等可以被用于产生这个热指标。硬件热指标可以相当复杂或极简单,例如仅仅是处理器的热映射。作为示例性方面,使用在使用热采样的多核处理器上的运行时刻执行,可以使用图4的热管理控制单元402产生热分布。
在操作开始时,在一或多个处理器上执行例如程序或应用程序的各种工作负载(步骤1002)。工作负载将对多核处理器的热状态有不同的影响。虽然工作负载正被执行,但执行多核处理器中的热状态的采样(步骤1004)。针对硬件热分布,选择工作负载以表示处理器的最大热操作。通过周期性读取当前或最大温度寄存器来采样温度,同时应用程序运行及存储信息到数据结构。在单元宽带引擎中,采样可以在硬件或软件中执行。接着,把从处理器的采样获得的信息在数据结构内存储预定时间(步骤1006)。预定时间可以是在分析运行程序的指令流之前设置的任何时间。数据结构可以是例如寄存器或数据库的任何类型的数据结构。这里,选择由一或多个预先收集及存储的多核心系统的功率和/或性能的软件热分布构成(步骤1008)。选择可以基于加载和/或执行的应用程序的类型。来自多核处理器的热状态的采样的所存储信息结合所选择的软件热分布被用来最优管理多核心系统(步骤1010),此后操作结束。从所采样的热数据产生的热指标被用于选择运行应用程序的最优核心,或即使应用程序应当在当前时间被调度。同样,软件可以使用其它节制对处理器的当前热状态具有过高热指标的应用程序的手段。热指标的生成在图6的步骤610-616中描述。
图11是基于一个图解实施例,描述多核处理器系统中的最优功率及性能的软件热分布的生成的操作的流程图。在这个示例性方面中,在图6,7,8,9及10中描述的所有以前的热指标及分布信息被用来优化一个应用程序或应用程序组的各种线程的调度。硬件的热指标与软件的热指标结合。调度接着被优化,以达到在系统的热环境上运行的应用程序的最小影响。作为示例性方面,可以使用图4的热管理控制单元402产生多核处理器系统中的最优功率及性能的软件热分布。
当操作开始时,处理在程序已经被初始化时进行检测(步骤1102)。在程序被初始化之前,使用图6,7,8,9或10中的以前方法中的一个产生热指标或热指标组。步骤1104及1106是使用软件热指标的解析生成的例子。为了估测运行程序的每指令周期数(CPI)效率,分析运行程序的指令流(步骤1104)。把运行程序的每指令周期数在数据结构内存储预定时间(步骤1106)。预定时间可以是在分析运行程序的指令流之前设置的任何时间。数据结构可以是例如寄存器或数据库的任何类型的数据结构。这里,选择由一或多个预先收集及存储的多核心系统的功率和/或性能的硬件和软件热分布构成(步骤1108)。如果提供多个热指标,则基于应用程序的类型进行选择。用户可以具有热分布或应用程序的指标,或用户可以具有表示应用程序的分类的一组工作负载的热指标或分布。
接着基于所存储的每指令周期数的数值及硬件和软件分布产生热指标,以在系统的热限制内最优管理功率及性能,例如调度执行应用程序或程序(步骤1110),此后操作结束。在这个示例性方面,热指标与每指令周期数的倒数(1/CPI)成比例。具有较低每指令周期数数值的程序使用较多机器资源,因而对系统的热状态有较大影响。尽管信息流的每指令周期数被用于这个图解实施例,但例如执行单元或数据流单元传送的每字节周期数的其它度量也可以用于计算热指标。
在步骤1110针对程序产生的热指标可以通过编译器产生。在简单形式中,热指标可以是表示各种执行单元和数据流单元的强度的单个数或加权和。可选地,也可以使用每个处理器的执行单元和数据流单元的值的向量。在图解实施例中,热指标将包含标准偏差信息,以便更加准确地表示软件的峰值,而不仅仅是对对系统的平均热影响。热指标可以和例如ELF注解的程序头信息包含在一起。
图解实施例可以采取完全硬件实施例,完全软件实施例或包含硬件和软件两个要素的实施例的形式。图解实施例在软件中实现,其包含但不限于固件,驻留软件,微码等等。
此外,图解实施例可以采取从提供用于计算机或任何指令执行系统或与之相结合的程序代码的计算机可用或计算机可读介质可获得的计算机程序产品的形式。针对这个描述目的,计算机可用或计算机可读介质可以是任何有形的设备,其可以包含,存储,通信,传播或传送由指令执行系统,装置或设备使用或与之相结合的程序。
介质可以是电子,磁,光学,电磁,红外或半导体系统(或装置或设备)或传播介质。计算机可读介质的例子包含半导体或固态存储器,磁带,可折卸计算机磁盘,随机访问存储器(RAM),只读存储器(ROM),硬磁盘及光盘。光盘的当前例子包含只读光盘存储器(CD-ROM),可读/写光盘(CD-R/W)及DVD。
适于存储和/或执行程序代码的数据处理系统包含通过系统总线直接或间接连接到存储器元件的至少一个处理器。存储器元件可以包含在程序代码实际执行期间使用的本地存储器,批量存储设备,及提供至少某些程序代码的临时存储以便减少执行期间从批量存储设备检索代码的次数的高速缓冲存储器。
输入/输出或I/O设备(包含但不局限于键盘,显示器,点击设备等等)可以直接或通过中间I/O控制器被连接到系统。
网络适配器也可以被连接到系统,以使数据处理系统能够通过中间专用或公共网络连接到其它数据处理系统或远端打印机或存储设备。调制解调器,电缆调制解调器及以太网卡仅仅是一些目前可用网络适配器类型。
对图解实施例进行的描述只是为了图解和描述,不被用来对具有公开形式的图解实施例进行详细定义和限制。本领字段的普通技术人员显然可以进行许多修改和改变。选择和描述实施例是为了提供对图解实施例原理及其实际应用的最优说明,并且也是为了使本领字段的普通技术人员针对可以根据所考虑的具体使用情况进行各种修改的各种实施例理解图解实施例。
权利要求
1.一种用于针对在一组处理器上执行的应用程序产生软件热分布的计算机实现的方法,该计算机实现的方法包括针对一组工作量采样该组处理器的热状态,以产生采样信息;以及基于该采样信息产生热指标。
2.如权利要求1所述的计算机实现的方法,还包括在数据结构中存储该采样信息,其中使用数据结构中的该采样信息产生热指标。
3.如权利要求1所述的计算机实现的方法,其中通过使用建立在该组处理器中的仪器执行对该组处理器的热状态的采样。
4.如权利要求1所述的计算机实现的方法,其中热指标是处理器的热效率。
5.如权利要求1所述的计算机实现的方法,其中对热状态采样一预定时间量。
6.如权利要求1所述的计算机实现的方法,其中热指标与被执行的工作负载成比例。
7.如权利要求1所述的计算机实现的方法,其中所采样的热状态及热指标被编译器使用以优化应用程序的热分布。
8.如权利要求1所述的计算机实现的方法,其中热指标是单个数。
9.如权利要求4所述的计算机实现的方法,其中热指标是表示执行单元组或数据流单元组的至少一个的强度的采样信息的加权总和。
10.如权利要求4所述的计算机实现的方法,其中热指标是执行单元组或数据流单元组中的至少一个的值的向量。
11.一种数据处理系统,包括总线系统;连接到总线系统的通信系统;连接到总线系统的存储器,其中存储器包含一组指令;及连接到总线系统的处理单元,其中处理单元执行该组指令以针对一组工作量采样该组处理器的热状态,以产生采样信息;以及基于该采样信息产生热指标。
12.如权利要求11所述的数据处理系统,其中处理单元执行该指令组以在数据结构中存储该采样信息,其中使用数据结构中的该采样信息产生热指标。
13.如权利要求11所述的数据处理系统,其中通过使用建立在该组处理器中的仪器执行对该组处理器的热状态的采样。
14.如权利要求11所述的数据处理系统,其中热指标是处理器的热效率。
15.如权利要求11所述的数据处理系统,其中所采样的热状态及热指标被编译器使用以优化应用程序的热分布。
全文摘要
公开了生成一组处理器上执行的软件热分布的方法和系统。为一组处理器上执行的应用程序的软件热分布的生成提供计算机实现的方法,数据处理系统及计算机可用代码。针对一组工作负载采样该组处理器的热状态以产生采样信息。接着,基于所采样的信息产生热指标。
文档编号G06F11/00GK1975627SQ20061012134
公开日2007年6月6日 申请日期2006年8月21日 优先权日2005年11月29日
发明者小马克西米诺·埃格拉, 马克·理查德·纳特, 詹姆斯·M·斯塔福德, 查尔斯·雷·约翰斯 申请人:国际商业机器公司