用于计算机系统的功率管理方法和系统

申请号 CN201410091658.8 申请日 2014-03-13 公开(公告)号 CN104049712B 公开(公告)日 2017-04-12
申请人 国际商业机器公司; 发明人 P·博塞; B·M·弗莱舍; T·W·福克斯; H·M·雅各布森; R·奈尔;
摘要 本 发明 涉及一种用于 计算机系统 的功率管理方法和系统。各 实施例 包括一种用于管理计算机系统中的功率的方法,所述计算机系统包括主处理器以及包含已加电单元的有源 存储器 件,所述有源存储器件通过存储链路与所述主处理器通信,所述已加电单元包括处理元件。所述方法包括:所述主处理器处执行程序线程上的程序;遇到要由所述有源存储器件执行的第一代码段;基于所述主处理器遇到所述第一代码段,通过第一命令更改所述有源存储器件上的已加电单元的功率状态,所述第一命令包括存储命令。所述方法还包括:所述处理元件在第二时间执行所述第一代码段;基于所述处理元件执行所述第一代码段,将所述主处理器的功率状态从功率使用状态更改为功率节省状态。
权利要求

1.一种用于管理计算机系统中的功率的方法,所述计算机系统包括主处理器以及包含已加电单元的有源存储器件,所述有源存储器件通过存储链路与所述主处理器通信,所述已加电单元包括处理元件,所述方法包括:
在所述主处理器处执行程序线程上的程序;
在所述主处理器处遇到要由所述有源存储器件执行的第一代码段;
基于所述主处理器遇到所述第一代码段,通过第一命令更改所述有源存储器件上的已加电单元的功率状态,所述第一命令包括存储命令;
由所述处理元件在第二时间执行所述第一代码段;
基于所述处理元件执行所述第一代码段,将所述主处理器的功率状态从功率使用状态更改为功率节省状态;
基于所述处理元件开始所述第一代码段的执行,将所述存储链路的所述功率状态更改为功率节省状态;
基于所述处理元件完成所述第一代码段的执行,通过第二命令将所述主处理器的所述功率状态从所述功率节省状态更改为所述功率使用状态;以及
基于将所述主处理器的所述功率状态从所述功率节省状态更改为所述功率使用状态,由所述主处理器执行第二代码段。
2.根据权利要求1的方法,其中更改所述已加电单元的所述功率状态包括通过功率管理程序或控制器将所述第一命令跨所述存储链路发出到所述已加电单元来更改所述功率状态。
3.根据权利要求2的方法,其中所述存储命令中的地址指定与所述已加电单元对应的地址,其中所述已加电单元是所述处理元件、存储器、时钟、链路控制器以及互连中的一个,并且其中所述地址不在所述存储器的存储地址范围内。
4.根据权利要求2的方法,其中所述存储命令中的有效负载指定对所述已加电单元的所述功率状态的更改。
5.根据权利要求2的方法,其中所述主处理器和所述已加电单元的所述功率状态的更改基于所述主处理器和已加电单元的状态,所述状态包括以下项中的一个或多个:应用性能、所述应用的各个线程和任务的进度、功率使用、温度、资源利用率以及所执行指令的类型。
6.根据权利要求5的方法,其中所述主处理器和已加电单元的所述状态获取自性能计数器、进度计数器、功率代理、热传感器以及电源测量值中的至少一个,或通过编译器或应用分析器来预测,其中将所预测的状态嵌入应用代码作为对所述功率管理程序或控制器的提示。
7.根据权利要求1的方法,其中所述加电单元包括所述处理元件,所述方法还包括:基于所述处理元件开始所述第一代码段的执行,将所述处理元件的所述功率状态更改为功率使用状态,以及基于所述处理元件完成所述第一代码段的执行,将所述处理元件的所述功率状态更改为功率节省状态。
8.根据权利要求1的方法,其中所述已加电单元包括链路控制器,所述方法还包括:基于所述处理元件完成所述第一代码段的执行,将所述存储链路的所述功率状态更改为功率使用状态。
9.根据权利要求1的方法,还包括响应于功率管理程序或控制器发出的加载命令,在有效负载中传送与所述有源存储器件上的所述已加电单元的性能和功率使用相关的信息。
10.根据权利要求1的方法,其中通过跨所述存储链路的所述第一命令更改所述有源存储器件上的所述已加电单元的所述功率状态进一步包括:基于功率管理程序或控制器所接收的中断,更改所述已加电单元的所述功率状态。
11.一种用于管理计算机系统中的功率的系统,所述计算机系统包括:
主处理器和包含已加电单元的有源存储器件,所述有源存储器件通过存储链路与所述主处理器通信,所述已加电单元包括处理元件,所述系统被配置为执行一种方法,所述方法包括:
在所述主处理器处执行程序线程上的程序;
在所述主处理器处遇到要由所述有源存储器件执行的第一代码段;
基于所述主处理器遇到所述第一代码段,通过第一命令更改所述有源存储器件上的已加电单元的功率状态,所述第一命令包括存储命令;
由所述处理元件在第二时间执行所述第一代码段;
基于所述处理元件执行所述第一代码段,将所述主处理器的功率状态从功率使用状态更改为功率节省状态;
基于所述处理元件开始所述第一代码段的执行,将所述存储链路的所述功率状态更改为功率节省状态;
基于所述处理元件完成所述第一代码段的执行,通过第二命令将所述主处理器的所述功率状态从所述功率节省状态更改为所述功率使用状态;以及
基于将所述主处理器的所述功率状态从所述功率节省状态更改为所述功率使用状态,由所述主处理器执行第二代码段。
12.根据权利要求11的系统,其中更改所述已加电单元的所述功率状态包括通过功率管理程序或控制器将所述第一命令跨所述存储链路发出到所述已加电单元来更改所述功率状态。
13.根据权利要求11的系统,其中所述存储命令中的地址指定与所述已加电单元对应的地址,其中所述已加电单元是所述处理元件、存储器、时钟、链路控制器以及互连中的一个,所述地址不在所述存储器的存储地址范围内并且所述存储命令中的有效负载指定对所述已加电单元的所述功率状态的更改。
14.根据权利要求12的系统,其中所述主处理器和所述已加电单元的所述功率状态的更改基于所述主处理器和已加电单元的状态,所述状态包括以下项中的一个或多个:应用性能、所述应用的各个线程和任务的进度、功率使用、温度、资源利用率以及所执行指令的类型。
15.根据权利要求14的系统,其中所述主处理器和已加电单元的所述状态获取自性能计数器、进度计数器、功率代理、热传感器以及电源测量值中的至少一个,或通过编译器或应用分析器来预测,其中将所预测的状态嵌入应用代码作为对所述功率管理程序或控制器的提示。
16.根据权利要求11的系统,其中所述加电单元包括所述处理元件,所述方法还包括:
基于所述处理元件开始所述第一代码段的执行,将所述处理元件的所述功率状态更改为功率使用状态,以及基于所述处理元件完成所述第一代码段的执行,将所述处理元件的所述功率状态更改为功率节省状态。
17.根据权利要求11的系统,其中所述已加电单元包括链路控制器,所述方法还包括:
基于所述处理元件完成所述第一代码段的执行,将所述存储链路的所述功率状态更改为功率使用状态。
18.根据权利要求11的系统,还包括响应于功率管理程序或控制器发出的加载命令,在有效负载中传送与所述有源存储器件上的所述已加电单元的性能和功率使用相关的信息。
19.根据权利要求11的系统,其中通过跨所述存储链路的所述第一命令更改所述有源存储器件上的所述已加电单元的所述功率状态进一步包括:基于功率管理程序或控制器所接收的中断,更改所述已加电单元的所述功率状态。

说明书全文

用于计算机系统的功率管理方法和系统

技术领域

[0001] 本发明一般地涉及计算机处理和存储器,更具体地说,涉及存储器内计算的功率管理。

背景技术

[0002] 计算机系统经常需要大量诸如随机存取存储器(RAM)之类的高速存储器以在计算机加电并执行操作时保存信息(例如,数据和程序)。随着计算机系统的性能和复杂度增加,存储器件需求也在持续增长。当器件的复杂度增加时,管理处理单元(例如,核心)所用的功率就成为整体计算性能中非常重要的因素。在具有多个处理单元的系统中,第一处理单元可能在等待来自第二处理单元的结果期间消耗功率,而第二处理单元可能因需要更多功率而无法以最优的速度执行操作。

发明内容

[0003] 各实施例包括一种用于管理计算机系统中的功率的计算机程序产品、系统和方法,所述计算机系统包括主处理器以及包含已加电单元的有源存储器件,所述已加电单元包括处理元件,所述有源存储器件通过存储链路与所述主处理器通信。所述方法包括:所述主处理器处执行程序线程上的程序;遇到要由所述有源存储器件执行的第一代码段;基于所述主处理器遇到所述第一代码段,通过第一命令更改所述有源存储器件上的已加电单元的功率状态,所述第一命令包括存储命令。所述方法还包括:所述处理元件在第二时间执行所述第一代码段;基于所述处理元件执行所述第一代码段,将所述主处理器的功率状态从功率使用状态更改为功率节省状态;基于所述处理元件完成所述第一代码段的执行,第二命令将所述主处理器的所述功率状态从所述功率节省状态更改为所述功率使用状态;以及基于将所述主处理器的所述功率状态从所述功率节省状态更改为所述功率使用状态,所述主处理器执行第二代码段。附图说明
[0004] 图1示出根据一个实施例的有源存储器系统的框图
[0005] 图2示出根据一个实施例的具有有源存储器的存储系统的框图;
[0006] 图3示出根据一个实施例的具有有源存储器的存储系统的示意图;
[0007] 图4示出根据一个实施例的计算系统节点的框图;以及
[0008] 图5示出根据一个实施例的用于计算机系统中的功率管理的方法的流程图

具体实施方式

[0009] 一个实施例涉及计算系统节点的功率管理,其中节点包括与有源存储器件链接或耦合的主处理器。有源存储器件可以是任何适当的存储器件,包括与被配置为控制存储器件的一个或多个集线器芯片(也称为存储控制器芯片)相连的一个或多个存储器件(例如,随机存取存储器“RAM”芯片)。在一个实施例中,有源存储器件包括多层存储,这些存储层形成三维(“3D”)存储器件(也称为“存储立方”),其中存储芯片的各列形成与集线器芯片通信的叠层或库(vault)。在一个实施例中,多个库位于存储模上,其中每个库具有位于存储芯片下方的相应集线器芯片。集线器芯片均可以包括存储控制器以及一个或多个处理元件(“PE”)。处理元件被配置为与存储库和其它集线器芯片中的其它处理元件通信。在一个实施例中,处理元件通过互连网络访问库中的选定地址。在一个实施例中,多个存储器件、库和处理元件可以经由包括一个或多个交叉开关(crossbar switch)的互连网络通信。
[0010] 在一个实施例中,功率管理和控制系统基于活动迁移和观察到的性能在主处理器与PE之间切换功率。在一个实施例中,活动迁移可以表示应用代码的执行在诸如主处理器之类的第一位置与诸如有源存储器件上的PE之类的第二位置之间的移动,其中第一位置在等待来自第二位置的结果时处于空闲状态。在一个实施例中,处理器与有源存储器件上已加电单元(例如,PE)之间的功率切换驱动通过控制主处理器和PE的功率状态(“Pstates”)的软件/固件命令执行。在一个实施例中,主处理器发出的设定有源存储器件和有源存储器件上已加电单元的功率状态的命令作为指定内存存储的数据有效负载通过存储链路传输到存储器映射I/O(“MMIO”)地址。MMIO地址不在存储器的地址范围内,但是与有源存储器件上的已加电单元关联。因此,有源存储器件将该命令识别为不是到常规存储器地址的存储命令。在一个实施例中,加载命令也可以读取PE的活动、性能、进度或功率状态,其中这些命令通过存储链路从主存储器传送到与已加电单元关联的MMIO地址,其中有源存储器件通过对加载命令的有效负载数据响应返回所请求的状态。在一个实施例中,控制循环一般还读取主处理器和有源存储器件上已加电单元的活动、性能、进度和/或功率状态,并判定在何处切换功率以优化系统性能。可以以固定频率执行控制循环。在各实施例中,有源存储器件的已加电单元可以发出中断命令,该命令被发送到功率管理和控制系统以响应于在有源存储器件(例如,PE)中发生的活动、性能、进度和/或功率变化而改进功率切换反应时间。
[0011] 在一个实施例中,被提供给每个处理器核和PE的功率以及这些处理器核和PE产生的性能由操作系统(“OS”)系统管理程序或处理器应用通过软件命令来控制。控制处理器核和PE以及处理器和有源存储器件上其它单元的功率和性能的OS、系统管理程序或应用的部分被称为功率管理程序或线程,并且可作为单独线程运行或作为OS、系统管理程序或应用的一部分的功能运行。软件命令可通过片上控制通道(例如,串行通信通道(“SCOM”))断开主处理器资源的电源。命令可以设定诸如核心、高速缓存、总线、存储器和网络控制器及链路之类的片上资源的电压和/或频率操作点、节流模式、资源大小、存储器请求优先级和其它设置。此类命令例如可以导致处理器芯片的某些核心和高速缓存被进行功率控(接通或关断功率节省状态)以节省功率,所节省的功率可用于为有源存储器件上的计算提供功率。软件命令可通过存储链路将作为常规内存存储或加载发送的命令路由到与有源存储器件的已加电单元对应的特定MMIO地址,为诸如有源存储器件之类的连接存储器的芯片断电。此类到MMIO地址的存储由有源存储器件上的链路控制器接收并由局部功率管理控制器基于地址转发到芯片上的所需目的地资源。这些命令可以设定诸如PE、高速缓存、交叉开关、库及链路之类的片上资源的电压和/或频率操作点、节流模式、资源大小、存储器请求优先级。
[0012] 功率管理系统还允许收集计算系统节点中各种设备的功率状态。在一个实施例中,OS、系统管理程序和/或应用使用软件命令检查主处理器和有源存储器件的功率和性能状态。软件命令可以通过串行通信通道从片外电压调节模块(VRM)读取实际功率。在一个实施例中,软件命令通过片上控制通道(例如,SCOM)从处理器芯片上的性能计数器和功率代理读取性能和功率状态。性能计数器例如可以跟踪处理器核心或PE中发出的指令数,或者跟踪所利用的存储器带宽。由于功率与逻辑电路中的活动相关,所以通过使用此类性能计数器衡量活动,功率代理电路可以估计处理器或有源存储器件及其子组件使用的功率量。此外,软件命令通过使用到特定MMIO地址的存储加载,从有源存储器件上的性能/进度计数器和功率代理读取性能、进度和功率状态。这些软件命令包括存储命令或加载命令。有源存储器件上的链路控制器拦截到MMIO地址的加载命令,并从相关计数器和代理收集所请求的数据,所请求的数据然后被设置格式并作为加载请求响应的数据有效负载而发送回处理器。
[0013] 此外,功率管理系统可以利用中断缩短功率切换延迟,并进一步提高性能。在一个实施例中,有源存储器件中的显著性能和/或功率变化通过软件中断被传送回OS、系统管理程序或应用。有源存储器件上的本地功率管理控制器收集PE、互连、链路以及其它元件的性能和功率统计数据。在一个实施例中,如果达到可编程的性能或功率阈值,则控制器发出消息并将此消息发送到主处理器芯片。处理器芯片上的硬件解译来自有源存储器件的消息并生成到控制功率管理(例如,OS、系统管理程序或应用)的软件线程的中断。在一个实施例中,OS、系统管理程序或应用可以使用随消息一起发送的数据判定或轮询发送消息的芯片的状态以获取更多信息。
[0014] 有源存储器件可以是任何适当的存储器件,其中包括多个与逻辑部分和处理元件相连的存储元件(例如,芯片)。在一个实施例中,有源存储器件包括多层存储器,这些存储层形成三维(“3D”)存储器件(例如,存储立方),其中芯片的各列形成与处理元件和逻辑通信的库。有源存储器件可以包括多个被配置为与芯片和其它处理元件通信的处理元件。在一个实施例中,处理元件通过互连网络访问库中的选定地址。此外,互连网络提供有源存储器件上的处理元件与库之间以及处理元件与主处理器之间的通信路径。每个库具有关联的存储控制器或逻辑单元,该存储控制器或逻辑单元也与互连网络相连。
[0015] 各实施例包括可以使用有源存储器件内的多个位置(例如,存储在特定地址处的数据)作为操作数来执行一组复杂操作的有源存储器件。此外,提供过程来借助此过程针对有源存储器件内的这些操作数自主地执行指令和操作。具体而言,指令存储在有源存储器件本身内,并且不由主处理器执行。所存储的指令被提供给处理元件以便由有源存储器件中的处理元件进行处理。在一个实施例中,处理元件是可编程的引擎,其中包括指令缓冲器、具有分支功能和指令解码能的指令单元、矢量、标量和屏蔽寄存器文件的混合、多个加载/存储单元(用于在存储器与寄存器文件之间移动数据)以及多个执行单元(用于各种数据类型的算术和逻辑处理)。有源存储器件中还包括地址转换功能,用于将虚拟地址转换为物理地址,将统一加载/存储队列转换为存储器与处理元件之间的一系列数据移动,另外还包括处理器通信单元,用于与主处理器通信。
[0016] 在一个实施例中,有源存储器件被配置为在从诸如主处理器或另一处理元件之类的外部请求器接收命令之后,将配置信息或指令从有源存储器件的一部分加载到处理单元中。此外,处理元件可以执行虚拟-实地址转换,这些地址转换在执行加载的指令之时计算。在一个实例中,当执行加载指令时,有源存储器件从存储位置存取操作数并将操作数置于处理元件中的寄存器内。存储位置的虚拟地址由加载指令生成并且被处理元件转换为实地址。类似地,当执行存储指令时,有源存储器件将包含内容(例如,操作数)的存储位置写入处理元件中的寄存器内。存储地址的虚拟地址由存储指令生成并且被处理元件转换为实地址。
[0017] 有源存储器件中的处理元件的各实施例还具有通过互连网络在有源存储器件的任意部分中读写操作数的能力。具体而言,处理元件可以使用互连网络访问有源存储器件中的其它库。在一个实施例中,处理元件形成池并通过互连网络耦合到库,其中处理元件并非物理地位于库叠层中。在一个实施例中,互连网络是耦合设备,例如交叉开关,其被配置为当处理元件和存储库与互连耦合时,将任何处理元件连接到任何存储库。在一个实施例中,互连网络可以耦合多个有源存储器件,其中互连网络提供单独器件的处理元件与存储库之间的通信路径。
[0018] 在一个实施例中,处理元件作为叠层的一部分包括在存储控制器中。此外,处理元件可以针对操作数执行复杂的算术和逻辑运算,并将最终结果读回和写回存储器中的位置。有源存储器件可以将单个结果值或信号返回到主处理器以指示所需的复杂运算的结果在有源存储器件中准备就绪,这样便可在有源存储器件上执行高带宽处理并使用有源存储器件与主处理器之间的低带宽通信。
[0019] 有源存储器件内的处理能力可缩短当位于单个芯片中的处理器访问存储器时否则将遇到的存储延迟和能耗。主处理器可以配置有源存储器件内的处理元件,然后指示它们执行数据处理任务,而非通过低带宽通信路径将数据从存储器发送到单独处理芯片,针对数据执行通常十分简单的计算,然后将已处理的数据传输回存储器。可通过将一个或多个命令从主处理器发送到有源存储器件来实现此目的。在此情况下,执行数据处理的位置与存储器之间的数据移动显著减少,不仅是数据必须从存储器到数据处理位置的传输距离缩短,而且穿过存储层次结构遍历的缓存层数也减少。
[0020] 图1示出根据一个实施例的用于存储和检索存储器中的数据的系统的框图。图1所示的系统100包括计算机处理器(CPU)102、具有存储器件的存储器106,以及存储控制器104和用于从计算机处理器102接收和处理要存储在存储器106中的数据的处理元件108。
[0021] 存储控制器104可以与计算机处理器102通信并且在不使用处理元件108功能的情况下,从计算机处理器102接收写请求。写请求包含要写入存储器106的数据以及用于识别存储器106中的位置(数据将被写入该位置)的实地址。存储控制器104在存储器106内的实地址处存储数据。当存储或检索数据时,计算机处理器102可以将虚拟地址映射到存储器106内的实地址。给定虚拟地址的实地址可以在存储器106中的数据每次被修改时发生变化。
[0022] 在一个实施例中,处理元件108与计算机处理器102通信并从计算机处理器102接收命令。命令可以对应于存储器106中存储的指令以针对要被写入存储器106的数据执行写请求。命令还可以包括虚拟地址,用于识别存储器106中将写入数据的位置。存储控制器104和/或处理元件108在存储器106内的实地址处存储数据。在一个实施例中,当存储或检索数据时,处理元件108将虚拟地址映射到存储器106内的实地址。如下面进一步详细描述的,计算机处理器102将命令提供给存储器106,其中处理元件108接收命令并从存储器106取回对应的指令。系统100是可用于执行此处描述的处理的配置的一个实例。尽管系统100被描述为具有单个存储器106、存储控制器104、处理单元108和计算机处理器102,但是将理解,其它实施例也可以在具有存储器106、存储控制器104、处理单元108或计算机处理器102中的两个或更多的其它系统中执行操作。在一个实施例中,存储器106、存储控制器104、处理单元108和计算机处理器102不位于同一计算机内。例如,存储器106、处理元件108和存储控制器104可以位于一个物理位置(例如,位于存储器模块上),而计算机处理器102位于另一物理位置(例如,计算机处理器102通过网络访问存储控制器104和/或处理元件108)。此外,此处描述的处理的各部分可以跨存储器106、存储控制器104、处理单元108和计算机处理器102中的一个或多个。
[0023] 图2是实现有源存储器的计算机系统200的一个实施例的示意图。在一个实施例中,计算机系统200包括有源存储器件202、有源存储器件203和有源存储器件204。有源存储器件202包括存储库206,存储控制器208和处理元件210。在一个实施例中,处理元件210、存储库206和存储控制器208通过互连网络212耦合和通信。具体而言,处理元件210通过互连网络212与存储库206、存储控制器208和诸如有源存储器件203和204之类的其它存储器件通信。互连网络212还通过处理器链路220和222耦合到主处理器224。互连网络212提供快速的高带宽路径以实现器件的各部分(例如,处理元件、存储控制器和存储器)之间的通信,从而提供有源存储器的改进的性能和缩短的延时。
[0024] 有源存储器件203包括存储库226、存储控制器228和处理元件230。在一个实施例中,处理元件230、存储库226和存储控制器228均位于互连网络212的同一侧,例如位于单个叠层内。通过将处理元件230与存储库226置于同一叠层,在访问存储库226内的位置时缩短延迟,这进一步提高性能。在一个实施例中,有源存储器204包括存储库214和通过互连网络212与处理元件210和处理元件218耦合的存储控制器216。如图所示,处理元件218位于互连网络212的另一侧,与存储控制器216和存储库214不在一侧。在一个实施例中,有源存储器件202、203和204包括多层层叠的可寻址存储元件。此外,叠层存储器可被分成存储库206、
226和214,或者存储器件的三维分块区域,这些三维分块区域共享公共存储控制器和/或存储元件,并且能够将存储器访问请求相互独立地提供给它们各自的存储域。
[0025] 在各实施例中,处理元件、存储库和存储控制器可以通过适当的方式排列,具体取决于应用。例如,诸如处理元件218之类的一个或多个处理元件可以位于互连网络212的一侧,并且可以作为处理元件池执行操作,这些处理元件可用于访问与互连网络212耦合的存储系统中的任何存储器。形成池的处理元件不限于访问特定的存储库,因此,可在从主处理器224接收到命令时使用一个或多个元件。相应地,处理元件218可被配置为访问每个存储库206、226和214。在另一实施例中,诸如处理元件230之类的一个或多个处理元件作为包括存储库226和存储控制器228的叠层的一部分放置。在这样的配置中,处理元件230被配置为访问与互连网络212耦合的存储库226,其中包括存储库206和214。在一个实施例中,诸如处理元件210之类的一个或多个处理元件被置于互连网络212的另一侧,与存储库206和存储控制器208不在一侧。在该配置中,处理元件210被配置为访问任何与互连网络212耦合的存储器,其中包括存储库226和214。
[0026] 在一个实施例中,计算机系统可以包括多个有源存储器件,例如有源存储器件202、203和204。此外,每个有源存储器件可以包括多个叠层,每个叠层包括存储库、存储控制器和关联的处理元件。在一个实例中,处理元件的数量可以大于存储库的数量。在另一实施例中,存储器件可以包括少于存储库的处理元件。在各实施例中,处理元件形成池并可用于访问系统中的任何存储器。例如,存储器件可以包括16个存储库和存储控制器,但是仅包括八个处理元件。八个处理元件形成池,被用作访问与互连网络耦合的任何存储库的资源。
在另一实例中,存储器件可以是无源存储器件,其中该器件由与互连网络耦合的有源存储器件的处理元件控制。
[0027] 图3是实现有源存储器的示例性计算机系统300的示意图。计算机系统300包括电路板302、主处理器304、有源存储器件306和有源存储器件308。有源存储器件306、有源存储器件308和主处理器304位于电路板302上。如图所示,有源存储器件306和308的各部分被进行分解以示出计算机系统300的排列细节。有源存储器件306和308分别通过信号路径324和344与主处理器304通信。如图所示,有源存储器件306排列为多个层,其中基层311包括多个存储控制器310和处理元件312。例如,有源存储器件306包括存储层309,该层位于基层311上面,其中层309均具有多个存储元件。如图所示,基层311还包括互连网络346以实现器件中的存储器、存储控制器与处理元件之间的高带宽通信。
[0028] 在一个实施例中,有源存储器件306包括多个存储库314,其中每个存储库314包括来自每个层309的存储元件,存储库314邻近存储控制器310和处理元件312放置。具体而言,示例性有源存储器件306包括存储元件层16,其中各个元件层形成叠层,包括叠层316,其中叠层316包括被置于存储控制器318和处理元件320上方的存储库322。高带宽通信路径326提供存储库322内的处理元件320与存储位置之间的高带宽通信路径,该路径为直连路径,长度大幅缩短(例如,与路径324、344相比),这样缩短了用于存储访问的延迟并降低了功耗。例如,处理元件320可以从主处理器304接收命令,基于该命令加载来自有源存储器件306的指令,并且作为已加载指令的一部分,访问存储库314中某个位置处的数据,然后在处理元件320中对该数据执行复杂操作。此外,处理元件320还可以将诸如结果之类的数据存储在存储库314中,然后在执行命令之后将值或信号发送到主处理器304。在一个实施例中,处理元件320存储数据(例如,操作数)或将数据(例如,操作数)从处理元件320中的寄存器写入存储库314。作为读取或存储操作的一部分,处理元件320还被配置为将地址从虚拟地址转换为实地址以及从实地址转换为虚拟地址。这样,处理元件320提供指令加载、地址转换、复杂运算和存储器本地的其它任务以缩短延迟、节省功耗并使主处理器304有时间执行其它任务。
[0029] 类似地,有源存储器件308包括多个被置于基层331上的存储控制器328和处理元件330。在一个实施例中,有源存储器件308包括被置于基层331上面的存储器件层329,其中层329均具有多个存储器件。基层331还包括互连网络346以实现存储器与器件内的处理元件之间的高带宽通信。在一个实施例中,有源存储器件306和有源存储器件308的互连网络346相耦合并允许单独器件上的处理元件与存储器之间的通信。
[0030] 在一个实施例中,有源存储器件308包括多个存储库332,其中每个存储库332包括来自每个层309的存储元件,存储库332邻近存储控制器328和处理元件330放置。示例性有源存储器件308包括16个叠层,其中包括叠层334,叠层334包括被置于存储控制器340和处理元件338上方的存储库336。高带宽通信路径342提供处理元件330与存储库336内的存储位置之间的通信。
[0031] 图4示出计算系统的一个示例性节点400。节点400示出图1-3所示的系统的至少一部分的一个实施例。节点400包括主处理器402、有源存储器件404和电压调节模块406。主处理器402包括主功率管理控制器(“主PM控制器”)408、核心410、核心412和核心414。主处理器402还包括时钟416和互连418,其中互连可以包括一个或多个交叉开关和逻辑以控制连接主处理器402的元件的开关。节点400还包括遍布整个节点放置的多个传感器426以监测诸如温度之类可用于做出功率管理决策的参数。有源存储器件404包括链路控制器428、本地功率管理控制器430(“本地PM控制器”)、第一处理元件432以及第二处理元件434。有源存储器件404还包括诸如DRAM之类的存储器436、互连438和时钟440。互连438可以包括一个或多个交叉开关和逻辑以控制连接有源存储器件404的元件的开关。链路控制器428通过一个或多个存储链路442与主处理器402通信,存储链路是常规存储链路,用于执行与存储器(例如,有源存储器件中的存储库)之间的常规数据加载和存储。
[0032] 在一个实施例中,主功率管理软件或固件程序(“主PM程序”)在处理器核心线程422上运行。主PM程序可以是OS或系统管理程序的一部分,或者作为单独的线程运行。在核心线程422上运行的主PM程序通过片上通道444与主PM控制器408通信,并且主PM程序和主PM控制器408通过存储链路442与本地PM控制器430通信以管理节点400中各个组件之间的功率分配。在处理器核心线程422上运行的主PM程序可以直接与本地PM控制器430通信,无需借助主PM控制器408,如通过块408连接通道444和链路442的虚线所示,以便例如对PE进行功率门控,这是由主PM程序和OS控制的功能。此外,主PM控制器408可以直接与本地PM控制器430通信,无需借助主PM程序,以便例如强制执行实时功率上限控制。
[0033] 在一个实施例中,节点400包括位于主PM控制器408和本地PM控制器430上,用于管理节点400内功率分配的软件和/或固件。管理功率分配以考虑节点400中的活动迁移。例如,功率管理程序和控制器可以为出现功率和性能密集型事件的区域(例如,执行代码的PE)提供更大的功率,同时减少分配给节点400中执行低功率操作或无功率操作的其他部分(例如,主处理器核心上在等待来自有源存储器件404或另一核心的结果时处于空闲状态的线程)的功率。主PM控制器408和本地PM控制器430还与VRM406通信以确保功率使用保持在低于最大平的水平处,从而防止错误或其它问题出现。
[0034] 在各实施例中,主PM程序、主PM控制器408和本地PM控制器430可以发出和/或接收中断以确定有源存储器件404上出现功率或性能事件,其中主PM程序、主PM控制器408和本地PM控制器430可以基于这些事件更改节点400中组件的功率状态。例如,如果主处理器402上运行的应用遇到要由有源存储器件404执行的代码段,则应用可以生成中断,并且由本地PM控制器430接收该中断。本地PM控制器430然后可以将被分配为执行代码段的PE的功率状态从功率节省状态更改为功率使用状态,从而增加被提供给PE的功率以提高性能。此外,主PM程序或主PM控制器408可以在主处理器核心410、412、414等待来自节点400的另一部分的输入的期间不执行代码或者执行性能关键性较低的代码的情况下,将这些处理器核心设定为功率节省状态。在各实施例中,有源存储器件404中的任何元件均基于本地PM控制器430接收到的通信更改功率状态。在一个实施例中,时钟440、互连438、链路控制器428及关联的存储链路442、第一PE432和第二PE434可被称为“已加电单元”,这些单元的功率状态基于与本地PM控制器430之间的通信而更改。
[0035] 在各实施例中,主PM程序或主PM控制器408以及本地PM控制器430之间的通信跨存储链路442,其中加载或存储命令用于更改已加电单元的功率状态。存储命令可以具有有效负载段和地址段,其中针对存储命令指定的地址指定要更改其功率状态的已加电单元。在一个实施例中,节点元件(例如,主处理器)的“功率节省状态”可以是其中处理器不活动并被断电的状态,也可以是其中处理器仍主动执行代码,但是处于低功率模式的状态。处理元件的功率节省状态可以是其中PE在收到应用使用请求之前不活动的休眠或空闲状态。所指定的地址位于存储器436的地址范围之外,因此链路控制器428识别到命令是针对本地PM控制器430。存储命令的有效负载段指定了对所指定加电单元的功率状态更改。对加载命令的响应的有效负载用于指定主PM控制器或本地PM控制请求的性能和/或功率使用信息,其中地址针对所请求的信息指定已加电单元。通过使用现有的存储链路442(其是常规存储链路)和用于常规存储通信的加载/存储命令,功率管理系统提供简单的低延迟功率管理实现。
[0036] 图5是示出用于在具有有源存储器件的计算机系统中进行功率管理的示例性方法、计算机程序产品和系统的流程图。主应用执行第一组方框500,而功率管理例程(例如,软件或固件)执行第二组方框502。主应用和功率管理可以均在单独的线程上运行。此外,主应用可以包含在多个线程上同时执行的并行代码段,此类执行主应用一部分的线程被称为用户线程(UT)或简称为“应用”。当应用执行时,它可以输入代码段,这有利于在有源存储器件上执行某些代码。此类代码段的开始在方框504中标记。在方框506,应用请求操作系统(“OS”)为应用分配处理元件(“PE”),其中针对已分配PE组提供的处理为PE组(“PG”)。PE的分配通常考虑特权操作,因此由OS处理。在方框540,向功率管理线程(“PM”线程)执行的功率管理例程通知由OS分配的PE,并且该功率管理线程为要使用的PE分配功率并在功率分配成功时通知OS。在方框542,PM线程对将由应用使用的PE加电,其中PE处于功率节省状态。PM线程还设定已分配PE的初始功率状态(“Pstates”)。OS可以识别哪些PE已分配给其它应用或线程并判定哪些PE可用于发出请求的应用。在方框510,PM线程通知OS它是否成功地为PE组分配功率,如果成功,则OS将PE组处理提供给应用。在方框512,由配置功能启动已分配PE组的配置。在方框514,应用和OS提供一个或多个配置命令以配置已分配PE组,其中配置包括加载指令缓冲器和设定位于有源存储器件中的PE的状态信息。在方框516,用户线程执行应用的代码。在方框518,应用遇到要由已分配PE组执行的第一代码段,并且通过启动功能开始使用PE组。软件中断可以由应用生成,如线550和方框544所示,从而向PM线程通知已开始使用PE组。基于此中断,PM线程可以通过减少提供给处理器的功率(例如,通过对处理器核心的电压的动态频率调节),先行切换功率使用,从而释放更多功率以供有源存储器件上的已加电单元(例如,PE)使用。
[0037] 在方框522,用户线程将启动命令发送到PE组中的PE。在一个实施例中,用户线程可以更改为功率节省或“休眠”状态。在方框522、524、526、528和538中,多个PE并行地执行计算以执行所述的动作。线556是有源存储器件生成的到PM的中断以指示PE已开始执行,其中PM切换功率以提高性能。在方框522,PE通过执行第一代码段进行计算。在一个实施例中,用户线程(多个)还可以在其中用户线程不更改为功率节省状态的情况下进行计算。在方框524,PE在发生异常(例如,浮点异常)时或当PE完成计算将命令发送到OS或用户线程。PE还进入暂停状态,其中它等待OS和用户线程对命令做出响应。在方框526,应用例如通过中断“唤醒”OS和用户线程(如果它们处于休眠状态),其中OS检查有源存储器件中的存储位置以查找唤醒的原因。这些原因可以包括PE已完成执行代码或者异常需要来自OS的输入。在方框538,应用检查PE是否完成计算。在方框528,如果PE未完成计算,则处理命令指定的请求并且PE恢复计算以完成执行第一代码段,其中过程路由回方框522。在方框530,应用等待每个执行第一代码段的PE完成。如方框546和线552所示,有源存储器件可以生成到PM的中断,该中断指示PE完成执行。PM然后可以通过将更多功率提供给主处理器核心(例如,通过增加用于处理器的电压和频率)来切换功率使用。此外,由于已完成执行的空闲PE不再使用大量功率,因此PM和有源存储器件还可以通过为仍在执行的PE提供更多功率,加速或“加速推动”这些仍在执行的PE。如线554所示,当PE组完成执行时,应用可以重定向到方框512以针对将由PE组执行的不同代码段重新配置PE组,或者重定向到方框516以在再次使用具有当前配置的PE组之前,进一步计算和执行用户线程上的代码。如果PE组完成并且不再被需要,则应用通过解除分配功能解除分配PE组,如方框536所示,并且在方框504开始的应用代码段已经完成执行,如方框532所示。在方框534,OS解除分配PE并通知PM对PE组进行功率门控(方框548),这样将PE组的功率状态从功率使用状态更改为功率节省状态。应用继续在主处理器上执行并且可以稍后输入适合在有源存储器件上执行的另一代码段,在这种情况下,针对下面的代码段重复上述在方框504开始的序列。
[0038] 此外,在应用的整个执行期间,PM具有持续检测活动迁移并相应地调整功率分配的控制循环(其中包括主处理器和已加电单元Pstates),以便提高性能并确保功率使用不超过所允许的最大值。控制循环持续监视主处理器/核心、PE、互连、时钟、VRM的状态并做出控制决策以在系统中切换功率。此外,控制循环可以监视可用于做出系统功率管理决策的温度和其它参数。与PM控制相比,上述中断提供了对功率或性能事件(例如,PE上的代码执行也称为“活动迁移”)的改进响应(延迟缩短),从而提高了性能。在各实施例中,控制循环在后台运行,而应用、OS和/或有源存储器件生成对应于功率或性能事件的中断。PM包括接收所生成的中断的中断处理机,其中该处理机检查中断原因以使PM能够做出功率管理决策。
[0039] 为了在决策中帮助主PM程序和主PM控制器在主处理器与有源存储器件之间切换功率,编译器或应用分析器可以提供提示,该提示提供主处理器和有源存储器件所需的预测功能或性能,以使节点以最有效、最节能的方式运行给定应用程序段。此类提示作为应用代码的一部分提供,可以包含对OS或主PM程序的功能调用以向OS或主PM程序通知预测的功率和性能要求。在一个实施例中,当有源存储器件上的PE正进行计算时,存储链路进入功率节省状态,因为当主计算和存储访问由有源存储器件内的PE执行时,存储链路上的预期带宽要求较低。当PE完成其计算时,存储链路再次进入功率使用状态,因为之后希望主处理器与有源存储器件之间的存储带宽再次增加。
[0040] 此处使用的术语只是为了描述特定的实施例并且并非旨在作为本发明的限制。如此处所使用的,单数形式“一”、“一个”和“该”旨在同样包括复数形式,除非上下文明确地另有所指。还将理解,当在此说明书中使用时,术语“包括”和/或“包含”指定了声明的特征、整数、步骤、操作、元素和/或组件的存在,但是并不排除一个或多个其他特征、整数、步骤、操作、元素、组件和/或其组合的存在或增加。
[0041] 以下的权利要求中的对应结构、材料、操作以及所有功能性限定的装置(means)或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它单元相组合地执行该功能的结构、材料或操作。所给出的对本发明的描述其目的在于示意和描述,并非是穷尽性的,也并非是要把本发明限定到所表述的形式。对于所属技术领域的普通技术人员来说,在不偏离本发明范围和精神的情况下,显然可以作出许多修改和变型。对实施例的选择和说明,是为了最好地解释本发明的原理和实际应用,使所属技术领域的普通技术人员能够明了,本发明可以有适合所要的特定用途的具有各种改变的各种实施方式。
[0042] 而且,所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0043] 可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0044] 计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括—但不限于—电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0045] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—但不限于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0046] 可以以一种或多种程序设计语言的任意组合来编写用于执行本公开的各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0047] 以上参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0048] 也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
[0049] 也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
[0050] 附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
QQ群二维码
意见反馈