基于指令的能量特性和机器学习有效地操作处理系统的技术的制作方法

文档序号:20008022发布日期:2020-02-22 03:47阅读:231来源:国知局
基于指令的能量特性和机器学习有效地操作处理系统的技术的制作方法

优先权要求

本申请要求于2018年8月9日提交的、题为“用于高效的系统运行的基于能量感知指令的功率管理(energyawareinstructionbasedpowermanagementforefficientsystemoperation)”的62/716,513号美国临时申请的权益,其全部内容通过引用并入本文中。

此技术涉及集成电路功率管理,并且更具体地涉及集成电路中用于功率管理的动态电压和/或频率调整。更具体地说,此技术涉及基于感测即将到来的处理器指令来管理功率以及采用系统内增强的学习机制来预测/改善功率控制系统参数。用例包括gpu的大规模并行处理器的功率管理。



背景技术:

图形处理器(gpu)已经变得无处不在。不再仅仅用于图形,gpu现在被广泛用于从密集计算操作中获益的应用,包括例如人工智能、实时模式识别和无人车辆控制,以及无数其他应用。

许多gpu都是大规模并行的,这意味着它们包含许多并行运行的计算元素(例如,可编程流式多处理器(“sm”)。这种大规模并行的架构允许开发人员将复杂的计算分解成更小的并行部分,因为它们是同时执行的,所以将完成得更快。虽然速度非常快,但这种并行计算元素阵列会消耗大量的功率并产生大量的热量。因此,功率管理已成为gpu(及其他)复杂集成电路设计和运行的一个重要方面。

就像一个舞者在快舞时比慢舞消耗更多的能量一样,数字电路在快速运行时通常消耗更多的功率。在大多数集成电路中,运行速度由时钟电路控制。时钟电路向芯片上的各个电路发送“节拍(beat)”(时钟信号)。这些电路将它们的操作与节拍器的“节拍”同步,就像时钟信号一样。节拍越快,电路运行越快,消耗的功率越多。而且,节拍越快,电路在给定时间内可以执行的“移动”就越多。

电源电压也会影响速度和功耗。晶体管(例如,mosfet)用于构建数字逻辑电路,其是现代高速处理器的组成部分。当电源电压升高时,晶体管运行(切换)得更快。考虑这一点的一种方法是:开关mosfet晶体管包括对电容进行充电和放电。增加向mosfet供电的直流电压可以使mosfet的电容充电更快,从而提高晶体管的开关速度。这类似于使用更高的水压来更快地填充桶。能够对mosfet进行计时的最快速度因此可以取决于电源电压。

然而,在较高电压下运行电路在提高其潜在运行速度的同时会使电路消耗更多的功率。一般来说,电路消耗的功率越多,产生的热量就越多。虽然风扇和散热器通常用于去除多余的热量,但不适当的加热浪费了本来可以用于计算的功率。对于无人车辆、便携式设备等移动应用,浪费的功率会不必要地缩短电池寿命。即使对于固定的应用,诸如服务器和台式计算机,浪费能量也会对环境不利,并增加运行成本。

虽然最直接的解决方案是降低电路的运行速度以节省功率,但这将不利地影响电路每秒可执行的操作数目,进而影响其能够执行复杂计算的速度。在许多要求很高的应用中,包括但不限于无人车辆、用户交互式服务器和其他计算设备,高速性能对于安全关键计算和其他必须实时或接近实时执行的计算非常重要。

因此,运行速度和功耗之间存在权衡。为了增加每秒的操作数目,可以增加时钟信号的速率(频率)(如果支持更高的时钟速率需要的话,也可以增加电源电压),代价是额外的功耗。为了节省功率,可以降低时钟信号速率(如果需要的话,还可以降低电源电压),代价是降低处理速度。

为了管理这种权衡,一些gpu和其他处理器根据计算负载提供对时钟速率的动态控制(在某些情况下,还提供对电源电压的动态控制以支持更高的时钟速率),允许电路在处理需求较少时“慢跳(slowdance)”,并允许它们在需要更多计算速度时“快跳(fastdance)”。这种动态控制可以在最大化速度性能的同时,降低整体功耗和相应的热输出。

虽然过去已经做了很多工作,但仍需要进一步改进的解决方案,以提供自适应但可调的系统,该系统可以处理突然的负载阶跃和负载释放,而不会影响整体性能。

附图说明

以下对示例性非限制性的说明性实施例的详细描述将结合附图阅读,其中:

图1和图2示意性地说明了根据某些示例实施例的包括主动功率管理控制的示例系统。

图3说明了根据某些示例实施例的使用电流和预测gpu功率的功率控制技术的流程图。

图4和图5示意性地说明了根据某些示例实施例的一种采用学习机制实现主动功率管理技术的电路。

图6是强化学习比例-积分-微分控制器的示意图。

图7是可扩展的强化学习比例-积分-微分系统的示意图。

图8是包括两个pid控制器和两个学习系统的可扩展的强化学习比例-积分-微分系统的示意图。

图9说明了根据某些实施例的强化学习反馈控制方法。

示例实施例的详细描述

许多gpu在运行时使用dvfs(动态电压和频率缩放),其部署gpu的基于负载的电压和频率设置,以在功率包络下获得最高性能。在这种情况下,负载被定义为正在gpu上完成的工作的能量强度。由于在gpu内的流式多处理器(sm)上运行的数学运算在时钟周期内消耗高能量,因此以数学为主的工作负载构成了大的负载。相反,当工作以存储器为主,并且在sm中没有使用那么多的数学运算时,工作被认为是中等或低负载(在这种情况下,sm可能会花费大量时间等待存储器系统从存储器中检索数据)。

从本质上讲,基于负载的dvfs本质上是反应性的(reactive)。然而,这种基于负载的dvfs可能会导致不良行为,其中高压/高频下的操作点可能会突然在gpu上经历负载阶跃(step)。这主要是因为在dvfs无法运行的短时段(timescale)内,在gpu上启动的工作可以很快从数学为主的制度转变为存储器为主的制度,反之亦然。负载阶跃是当因为在给定的电压和频率下gpu中消耗的能量增加时,可能会发生高能量操作。对于gpu,这是当其执行高功率数学指令时可能会发生。这种情况可导致在短时段内峰值功率过冲,进而使gpu的电力/能量输送系统受到压力,并可能导致停电或可靠性问题。

高能量指令(例如,矩阵数学指令(mma)或张量核心指令,其允许在人工智能的核心加速大型矩阵运算)会显著增加时钟周期中消耗的能量,并可能对供电网络产生影响,从而导致可靠性或定时问题。这会导致gpu必须保持消耗性能的极限。为了解决这些问题,我们需要一个适应性但可调的系统来确保我们能够调节能耗以减轻这些不利影响,而不会影响整体性能。从根本上讲,目前处理这种影响的方法还不足以实现下面描述的最佳操作点管理。

目前防止短时功率偏移的方法包括:

1)预防性-限制最大工作频率,以防止或限制此类偏移;以及

2)反应性-通过部署传感器,感测功率/电流的增加,然后通过自适应电压和频率缩放降低工作电压和频率来致动。

这些方法可能是有效的,但有其注意事项/局限性。

第一种方法限制了gpu能够可靠运行的最大频率,并且不能获得最佳性能。这种方法通过设计确保了峰值功率在短时段内受到限制,但上限最大工作频率可能会限制对于测量gpu的能效很重要的较长时段内的性能。

第二种方法是一种反应性方法,并且取决于可能存在延迟的感测和激活的时间,因此它们是有效的,但是有效性的时段通常不会延伸到100usec以下。

这是因为以反应性方式测量负载的变化是有成本的,因为负载的变化表现为功率/电流吸取(draw)的变化,其具有与之相关的感测延迟。当系统设计者试图降低峰值功率管理的时段时,她遇到了一些外部成分的限制(例如,信道复用),这可能是加速感测的瓶颈。

另一种方法是在现场提示工作负载(负载阶跃/释放)的变化,以便这种主动方法可以指导功率管理调整递送以防止可靠性问题。然而,在gpu管线的前端阶段,特别是在计算工作负载(在gpu管线的前端看不到程序语义)时,检测工作负载的突然和巨大变化尤其困难。然而,gpu管线后面阶段(例如,在nvidiagpu的流式多处理器(sm)中)是检测的理想位置,因为语义是可见的,因为程序中的指令可以被解码以识别负载中的此类更改。

负载变化管理不仅限于负载阶跃(即电流/功率的增加),而且还需要管理功率的突然降低(负载释放)。突然的负载释放会由于反应性部件中的储存能量而导致电源过冲,这会导致感应回跳,并且还会导致功率调节系统跳闸。

在gpu管线的前端阶段,检测工作负载的突然和巨大的变化尤其困难,但是gpu的中间阶段(如nvidiagpu中的sm)可以检测程序中的指令,其可能会在执行指令之前有效地导致负载阶跃/释放行为。

指令预解码以估计将来功率需求

示例实施例提供了一种主动感测方法,采用该方法,通过指令预解码,可以识别潜在或可能的负载阶跃事件(例如通过sm)。由指令先行预解码器进行的指令预解码,其在执行指令之前对获取的指令的队列或缓冲区进行操作,允许在调度指令以执行之前对指令进行标记/标识。这种指令先行预解码器可以是用于解码指令以执行的典型指令解码器的补充。指令先行预解码允许在事件实际发生前通知几个时钟周期后即将发生的负载阶跃/释放事件。向功率管理单元提前通知此事件允许进行更改以防止峰值功率过冲情况。

功率管理单元跟踪工作电压和频率,并可使用此通知采取措施来将电压和/或频率移向工作制度,以阻止高功率事件。通过这种方式移动电压和/或频率来降低功率,可以在较短的时段内减少电气可靠性问题,但不会影响性能。

从架构分析中,示例实施例可以清楚地识别在执行时会导致时钟周期内消耗高能量的指令,其会导致更高的功率。指令预解码可以在这些指令通过例如sm管线的前端时对它们进行分类,并将这些事件通知给gpu级功率管理单元(pmu)。一旦识别出高能量指令(例如,在sm中),就消耗信息来启动硬件和/或软件的更改,以管理峰值功率阶跃或释放。

在gpu级上,pmu聚合来自例如gpu中的所有sm的这些通知,然后基于这些事件发生的时间和空间特征,可以计算突然工作增加或减少的幅度的可能性。这允许pmu根据完整的gpu工作负载进行按比例变化,因为每个sm上运行的工作负载都可能会有变化。pmu在适当的时段上进行更改,以仅实现时钟频率或电压/频率更改,以限制预计高功率事件的峰值功率,从而避免过冲并改进系统级操作。

在一个非限制性实施例中,每个sm都包括预解码器,其输出数字代码,其被编码以表示将来要执行的指令的能量。来自各个sm的数字代码通过数字处理进行累积、过滤和平滑,以供给控制系统。由于使用离线监督训练系统来推导控制系统的参数是有限的,因此示例实施例使用系统内学习机制不断地改进控制系统的参数。示例实施例允许在短时段内采用鲁棒的系统级操作在功率包络(perf/w)内提高性能;例如,在希望具有最高效率(功率包络处的性能)和高系统操作可靠性的基于服务器的系统中。

致动

在示例非限制性实施例中,从sm感测高能量指令变化用于致动硬件或软件中的变化,以管理峰值功率阶跃或释放。在gpu级,pmu聚合来自gpu中的所有sm的这些通知,然后基于这些事件发生的时间和空间特征,能够计算突然工作增加或减少的幅度的可能性。

根据示例实施例的一种方法是使用“pid”(比例-积分-微分)控制器,其允许控制器的固定的或自调整的参数。pid控制器输出可以基于管理功率的时段执行仅频率、仅电压或电压/频率变化。

在一个示例非限制性实施例中,来自sm的高能量指令通知被聚合到iir(无限脉冲响应)滤波器,其输出提供gpu的计算能量的有效变化。计算能量以及设定的电压和频率给出了一个近期的功率估计。示例实施例获取这一未来功率估计与当前测量功率的差异。这一差异,也就是误差(error)或增量,被馈送入pid控制器。示例实施例提供了一种自适应pid控制器,其中pid控制参数不是静态的,而是基于深度强化的(强化)学习方法更新的。机器学习方法的时段可以与pid的操作的时段不同,允许例如pid比学习方法提供的自适应速度快得多地运行。

由于工作负载可以是多样的,并且在短时段内会发生变化,因此一些示例非限制性实施例使用强化的学习方法,其使用玩家-评委(actor-critic)或q机器学习(ml)来更新pid参数。强化学习可以观察pid的特定运行参数对峰值功率阶跃和释放的影响,并对这些运行参数进行调整以优化功率管理性能。

在示例非限制性实施例中,pid控制器移动频率和/或电压以将误差减小到0(或至少将其最小化),并将输入(误差、测量功率和预测功率)并行馈送入pmu处理器或控制器。pmu处理器/控制器运行自调整学习算法,其可以基于例如误差的特征定期更新控制器参数。

硬件(hw)致动的和软件(sw)调整的方法允许高级控制系统,其预测功率过剩,以实现仅频率或电压/频率变化,以在预计高功率事件时限制峰值功率,从而提高系统级运行和在最大效率(perf@w)下运行时的可靠性。随着强化的机器学习在其操作的特定gpu上获得更多关于功率管理结果的经验,它更有效地调整性能以避免超功率(阶跃和释放)场景,否则pid控制器将基于预期的计算负载发布命令。在一些实施例中,强化的机器学习能够命令sm更改其指令执行(例如,通过延迟执行高功率指令或负载平衡在不同时间间隔之间执行指令所需的功率),以进一步避免系统过度阶跃和过度释放。

功率管理控制的高级视图

图1和图2示意性地说明了根据某些示例实施例的示例系统100,包括主动预测,例如,基于机器学习的功率管理控制。

系统100可包括一个或更多个gpu102(0),…102(n),通过一个或更多个pci或其他数字通信总线复合体彼此通信。gpu102可以连接至关联的存储器104(0),…104(n)。在一些实施例中,系统100可以包括一个或更多个cpu(未示出)或通过数字通信总线复合体与一个或更多个gpu102通信的其他控制处理器,并且控制处理器和gpu可以访问各自关联的存储器和/或统一的存储器。

gpu102可以是任何类型的gpu,例如具有大量并行处理器116的架构。例如,每个gpu102可以包括由配置用于高度并行操作的大量流式多处理器(sm)116(0)、…116(m)组成的处理复合体。

图1说明了系统100,其示出了gpu102由功率分配网路110供电。功率管理单元(“pmu”或“功率管理”)140监控功率分配网络110向gpu提供的功率的工作电压和/或电流和/或gpu102的工作频率。功率管理单元140还接收来自一个或更多个并行处理器116的信号142,其指示执行尚未执行的指令所需的功率。例如,处理器116与功率管理140一起,可以通过指令先行(lookahead)预解码来确定在分派指令(例如,由调度器或类似结构)供处理器执行之前,处理器执行待处理的或将来的指令将需要多少功率。基于gpu102的当前工作电压和/或频率以及来自处理器116的信号,功率管理单元140预测或估计处理器在不久的将来需要的功率量,并控制提供给gpu的电压和/或gpu时钟信号的工作频率,以便当指令被处理器116执行时,适当的功率水平被提供给gpu102。

作为示例,当在时钟周期中消耗高能量的数学为主的工作负载即将由处理器116安排执行时,功率管理140将接收来自处理器116的信令,指示它们将执行数学为主的工作负载。作为响应,功率管理140预测,处理器116在未来的几个时钟周期(即比处理器当前执行的周期晚几个周期)内将需要更高的功率。基于预测功率和当前gpu102吸取的功率,功率管理140可改变向gpu102提供的工作频率和/或电压,使gpu以最佳功率(不太高也不太低)运行,以快速和高效地执行指令。当在时钟周期中消耗较低能量的存储器为主的工作负载即将由处理器116安排执行时,功率管理140将接收信号,其指示需要较低功率的指令将在几个时钟周期后执行。基于预测功率和gpu102所吸取的当前功率,功率管理140可以降低提供给gpu102的工作频率和/或电压,以便gpu仍能有效地执行存储器为主的工作负载,而无需使用超过必要的功率。

在一些示例性实施例中,当指令预解码警告功率管理140许多高功率指令(如张量或其他密集型计算指令)即将由若干不同的处理器116执行,并且功率管理140预测这种执行可能会导致不可接受的高峰值功率消耗(例如,由于过冲)时,功率管理可能会降低时钟频率、电源电压,或同时降低电压和频率,以便在预测到高功率事件时限制功率。通过在预测到高功率事件时降低频率和/或电压来限制功率,可以避免过流情况,这可能导致电路损坏、电源波动或过热。

如图1所示,功率管理140监控从信号调节器和多路复用器(mux)112接收的电流和/或电压采样信息的信号114,其对功率分配网络110的一个或更多个功率轨进行采样。信号114指示提供给gpu102的当前功率。在一些实施例中,gpu102可以经由信号115选择要监控的特定功率轨。功率管理140还接收来自一个或更多个并行处理器116的信号142。gpu102基于信号115表示的当前功率与基于信号142确定的预测功率之间的差异通过经由信号125控制配电网110,来控制其接收的功率。

如下文将更详细地讨论的那样,功率管理140可以包括用于预测和设置工作电压和/或频率设置的参数的自学习和自调整。在一些实施例中,自学习可以部分地通过使用一个或更多个深度神经网络的一束并行处理器116来执行,该深度神经网络由作为gpu102的一部分包含的基于硬件的深度学习加速器(dla)141加速。

在一些实施例中,功率管理140可以与并行处理器116设置在相同的基板或管芯上。在一些实施例中,功率管理140的一个或更多个组件可以提供在与并行处理器116所设置于的基板或管芯不同的基板或管芯上。

根据示例实施例,系统100可以是包含一个或更多个gpu、一个或更多个控制处理器(例如cpu)以及关联的存储器和/或存储器管理电路的板。在一些实施例中,gpu102可以是包括gpu的片上系统(soc)。在又一些其他实施例中,代替gpu102,系统100可以包括具有另一类型处理器的集成电路、频率电压控制系统和位于相同或不同基板上的adc。本申请的实施例不限于以图示方式向gpu供电和监控gpu使用的功率。本领域普通技术人员已知的其他实施例可以用于向gpu供电和/或监控gpu使用的功率。

更详细的示意性框图

图2更详细地说明了系统100,示出了功率分配网络110和gpu102上提供的功率管理140的示例组件。gpu102包括基于机器学习的系统(例如,包括一个或更多个神经网络)150,其被配置用于监控gpu正在使用的功率,预测gpu102在执行某些即将执行的指令时所需的功率,并控制功率控制系统122的电压和/或频率功率设置。

如上所讨论的,gpu102消耗的功率可以基于(将要)被分派用于由处理器116处理的处理工作量而变化。例如,当gpu102的大量并行处理器116(例如,sm)中的所有(或大部分)在高电源电压和时钟速率下忙于处理计算指令流时,gpu102可以从板和/或通过电压调节器105吸取大量电流。相反,当处理存储器为主的指令流时,gpu102在以相同的时钟速率运行时,可能会吸取相当低的功率,因为例如,它的许多并行处理器116可能由于存储器访问的延迟而空闲大部分时间。就像在足球场的小卖部等着中场休息的食品服务员一样,处理器116在gpu102访问存储器170时除了等待之外,可能没有什么可做的。在示例实施例中,可以在较低的电源电压和时钟速度下处理存储器为主的指令,从而降低功耗和热量生成。另一方面,当gpu102被命令(例如,由cpu,未示出)对从存储器中检索到的数据执行复杂计算时,gpu的流式多处理器116(就像足球场上的热狗摊工作人员,当半场开始时,饥饿的球迷只有几分钟的时间在下半场开始前买一个热狗或椒盐卷饼,然后回到他们的座位上)正在尽可能快地工作来完成他们的任务。

在公开的实施例中,gpu102包括动态电压/频率缩放(dvfs),以基于gpu102所吸取的当前功率和基于并行处理器116在不久的将来要执行的指令所确定的预测功率来缩放提供给gpu的电压和/或gpu内部核心时钟的频率。通过粗略的类比,示例实施例关注足球场和人群,并试图预测半场人流什么时候开始,小卖部的队伍有多长,以及当顾客排到队伍最前面时,他们可能会点什么。这一预测使小卖部的工作人员及时准备了足够数量的热狗和椒盐卷饼,而不会准备太多。

电源

更详细地说,图2示出了一个或更多个电源单元(psu)108将电力直接供应给系统100的各个部分,也可以经由功率轨或pci总线106提供的连接供电。例如,一个或更多个gpu102主要或完全由电压调节器105直接从psu108获得的和/或通过pci总线106功率轨获得的电力供电。电压调节器105将电源电压从pci总线106水平和/或psu108水平逐渐降低到操作gpu102所需的(可编程)一个或更多个电压级,并通过gpu功率轨127向gpu102提供降压电压。在一些实施例中,psu108可以可选地或另外通过功率轨111直接向gpu102供电。

在一些实施例中,电压调节器(vr)105执行从高压到低压的直流到直流的转换。这种转换在一些示例实施例中使用,因为处理芯片(例如gpu102)被设计为在低于标准12vdc或5vdc电源电压(例如1vdc-2vdc)下工作,而标准12vdc或5vdc电源电压是pci或pcie总线106和/或在配电板配电网络上配电的电源单元108的典型电压。电压调节器105还被设计为用于调节它向gpu提供的dc输出电压。电压调节器的输出127向gpu功率轨127提供电流,以分配给gpu102的各个部分及其相关的支持部件和电路。

如上所述,多个输入功率轨向gpu102提供127功率。因此,尽管没有具体说明,但是电压调节器105可以包括每个轨的单独实例。也就是说,在一些实施例中,电压调节器105可以包括多个电压调节器,每个电压调节器可以被单独和/或独立地控制,以设置gpu102的多个功率轨中的各个功率轨的各自的参考电压等。

功率监控器

gpu102可以包括模拟-数字转换器(adc)118,其用于监控(例如,数字采样)“功率监控器输入(powermonitorin)”模拟信号114。例如,模拟信号114可以表示板输入功率轨111和gpu功率轨127上提供的电流和/或电压水平。

gpu102使用接口115控制模拟多路复用器(mux)112,以选择要针对特定时分多路复用(tdm)时隙采样的多个功率轨中的特定一个。因此,在一些示例实施例中,gpu102可以控制mux112以选择不同模拟信号水平的“循环(roundrobin)”序列,允许gpu定期监控各种电源信号水平,包括当前供应给gpu102本身的功率水平。在其他实施例中,gpu102控制mux112以根据需要选择要监控的输入。

因此,信号调节和mux电路112在为gpu102供电的多个输入功率轨127之间进行选择,并通过mux-adc接口114将所选轨多路连接到adc118,在示例非限制性实施例中,在特定时间对哪个信号供应至gpu的选择由gpu本身做出。电路112还可以对提供给gpu的信号执行信号调节。例如,电路112可以使用分压器或其他电路来缩放电压水平和/或将电流水平转换为代表电流水平的电压水平。因此,在一些实施例中,“功率监控器输入”信号114可以包括(1)模拟电压,其水平表示或指示gpu102正在吸引的电流量;和(2)响应于mux114的不同选择,表示向gpu提供的电压水平的模拟电压(其可按比例缩小)。根据这两个值,gpu102可以确定当前消耗的功率量(单位为瓦特)。

外部信号调节和mux电路112通过在多个输入功率轨127之间多路复用,能够使用到gpu102和adc118的单个“功率监控器输入”模拟输入来监控多个输入水平,从而减少gpu102的i/o管脚计数。mux-adc接口114可能对mux112和adc118的细节非常敏感。接口114配置有mux和adc,它们在阻抗、信号范围等方面相互匹配。但也可以采用其他布置。例如,可以为gpu102提供多个adc118,使其能够同时处理多个功率监控输入。

在一个示例实施例中,模拟-数字转换器(adc)118可以配置为监控当前提供给gpu102的电源电压和电流水平。如图2所示,在一个实施例中,片外模拟多路复用器(mux)112接收用于向gpu102供电的电源电压和电流的水平作为输入。信号调节,例如mux112中的分压器/定标器(scaler)电路等,提供表示psu108直接提供或通过电压调节器105提供的电压水平和电流水平的信号。gpu102通过信号115控制mux112,以选择特定的水平信号,以提供给gpu的“监控器输入(monitorin)”输入。美国专利申请16/046,916(于2018年7月31日提交的,题为“采用片上adc的过流保护的电压/频率缩放(voltage/frequencyscalingforovercurrentprotectionwithon-chipadc)”)公开了使用片上adc监控gpu功率和控制提供给gpu的功率的额外细节。

在另一个实施例中,adc118可以监控电压调节器105提供的“功率输入(powerin)”,以确定gpu102使用的当前功率。

处理器预解码和聚合

处理器116配置为基于指令类型生成指示即将执行的指令所需的功率水平的信号。处理器116在执行这些指令之前,为即将执行的指令生成此类信号。每个处理器116可以(例如,部分地)在给定周期内解码各个待处理指令(的例如操作码),以确定该指令是低功率指令还是高功率指令。在一个实施例中,每个处理器116可以生成二进制信号或标志,以指示各个处理器是否将使用高水平或低水平功率(例如,当处理器单元将执行需要高水平功率的指令时设置标志)。在其他实施例中,指示给定周期内预期或未来功率使用的信号可由一个范围(例如,0到n之间的值,其中n是整数)表示。处理器116可以连续解析接收到的用于不久的将来执行的指令,并在执行前的几个周期提供用于执行待处理指令的功率估计。

在一个示例实施例中,滤波器/定标器420接收来自复数处理器116的功率估计信号的聚合,过滤聚合以去除某些类型的噪声,并缩放结果。滤波器/定标器420组合或比较经缩放的结果与adc118感测到/检测到的gpu当前使用的功率水平。组合或比较的结果形成误差或增量信号,其用于改变控制频率-电压控制器122的控制信号。

因此,功率管理140从adc118接收指示gpu102使用的当前功率的信号和指示所估计的处理器116的未来功率需求的信号,并确定是否改变工作电压和/或频率。更具体地说,功率管理140可包括诸如滤波器/定标器420这样的电路,以累积来自处理器116的信号,在给定的未来周期中估计gpu102的功率需求,确定gpu102的估计功率与gpu102使用的当前功率之间的误差,以及输出控制信号以及时改变工作频率和/或电压,以满足改变的功率要求。例如,如果误差低于指示功率需求变化不大的某个阈值,则功率管理140可以保持当前设置。

频率和/或电压控制器和学习系统

如下文将更详细地讨论的那样,频率/电压控制系统122可以包括比例-积分-微分(pid)控制器,其被配置为接收指示误差的信号,并输出用于将频率和/或电压向上或向下移动以将误差减至零的信号。可以用软件和/或硬件实现的学习系统150可以配置为监控频率/电压控制系统122的运行,并更新用于确定输出信号以提高频率/电压控制系统122性能的参数(例如,pid控制器使用的常数或系数)。

例如,学习系统150可以修改频率/电压控制系统122的控制参数,以便在移动频率和/或电压时更快地减小误差和/或减小过冲。学习系统150可以接收误差、gpu102使用的当前功率和/或处理器116的预测功率,并运行自调整学习算法,该算法修改频率/电压控制系统122使用的参数。学习系统150可监控频率/电压控制系统122在预定周期数内的运行,并定期更新频率-电压控制器122所使用的参数。

与频率-电压控制器122相比,学习系统150可以在不同(例如,较慢)的时段上运行,并且在某些情况下,可以包含在由深度学习加速器141加速的一个或更多个处理器116上运行的软件。在这种实施例中,学习系统150部分用于预测处理器116执行学习系统本身将需要的功率。

频率/电压控制系统122的输出控制信号可以控制至少一个电压调节器105(例如,通过gpu上的gpio引脚),其接收来自pci或类似总线106和/或电源单元(psu)108的功率,并通过功率轨127向gpu102供电。信号调节器和多路复用器112接收gpu功率轨127以及板输入功率轨111。频率/电压控制系统122的输出控制信号也可以生成内部或外部控制信号,其控制时钟发生器107产生的时钟信号的一个或更多个时钟速率,以同步触发(“时钟”)各种gpu电路。

作为示例,如果处理器116中的活动水平较低,频率/电压控制系统122可以运行,以降低一个或更多个电源电压,以便减少向gpu提供的功率量。如果活动水平高,则频率/电压控制系统122可以提高一个或更多个电源电压,以便向gpu提供更多功率,以满足其增加的处理工作量的需求。

管理功率

图3是根据某些示例实施例的使用当前和预测gpu功率的示例功率控制技术的流程图。在一些示例实施例中,过程300(即操作302-312)在gpu102上的硬件电路组件中执行。在一些其他实施例中,除了在gpu102的硬件上执行的操作外,过程300还可以包括由gpu102外部的其他硬件组件执行的操作。在又一实施例中,除硬件执行的操作外,过程300还可以包括以在gpu102和/或系统100的其他部分上运行的软件执行的操作。但是,一般来说,为了提供足够的速度性能,图3所示的操作是在硬件中执行的,除了可以以采用硬件加速的软件执行的深度学习312之外。

在使用系统(如系统100)和/或gpu(如gpu102)的计算机系统运行期间,过程300可以持续或连续地处于活动状态。

操作302监控gpu使用的当前功率。在实施例中,输入功率的监控使用adc118对提供给gpu102的功率进行采样。监控可以包括adc118将输入电流和/或电压采样至电压调节器,并将采样结果转换为任何所需分辨率的数字输出。

在操作304,每个并行处理器116都可以处理接收到的指令,以为待处理(即将执行)的指令提供预测功率信号142。来自各个并行处理器116的待处理指令可以被聚合并用于预测在该期间将执行待处理指令的即将到来的处理周期内的gpu功率(参见框304)。

在操作306,确定预测的gpu功率和当前功率之间的差异(误差)。在确定误差之前,可以对预测功率进行缩放,使其与确定的当前功率处于相同的级别。

在操作308,gpu102确定频率和/或电压设置以减少误差。确定可以包括使用自适应比例-积分-微分(三项)控制器(“pid控制器”)440(见下文)来确定设置。

在操作310,基于操作308中的确定,gpu102可以改变(即,编程一个新的)时钟频率和/或功率电压,以便增加或减少gpu所吸取的功率。例如,如果gpu102确定单独的时钟频率调整会影响所需的功率变化,那么它可以调整一个或更多个时钟的频率(或速率)。可以通过抵消发送到电压调节器的电压来调整电压,以使当前功率回到极限以下或增加。

在一些实施例中,基于机器学习方法(框312)更新使用自适应pid控制器执行的操作306参数(其可以在本领域技术人员熟知的硬件中实现)。由于并行处理器116中的工作负载可以是多样的,并且在短时段内发生变化,因此可以使用利用玩家-评委学习的强化学习方法,来在与图3过程不同的时段处更新pid参数。例如,基于硬件维持的电压和/或频率参数,可以在处理器116的各个处理周期之间快速执行框302-310的图3过程,而深度学习框312可以在许多这样的各个处理周期内执行,并产生输出,该输出用于更不定期地更新硬件维持的电压和/或频率参数。

通过这种方式,进程300可以根据并行处理器中的工作负载主动控制gpu102的功率输入,以优化处理性能和功耗。增加学习312以提供第二级动态控制,以更新用于确定gpu102功率相关设置的参数。

强化的机器学习

图4和图5示意性地说明了根据某些示例实施例的实现主动功率管理技术和学习机制150的电路400。电路400包括adc118、滤波和定标器电路420、比较器或加法器422、状态向量寄存器430、pid控制器440、频率/电压控制器450和学习系统460。

电路400可以制造在包括处理系统(例如,gpu102)的相同基板上。在gpu102的基板上包括电路400,提供直接、快速的反馈和响应。与响应当前功率测量变化的反应性(reactive)系统不同,示例实施例中的系统允许由处理系统主动进行调整,因为功率控制系统可以预测指令被提出用于执行的时间与它们被实际执行的时间之间的处理的减慢或增加。

adc118可以配置为监控包括多个处理器116(例如,可编程流式多处理器)的处理系统(例如,gpu102)使用的电源电压和电流水平。adc118配置为接收表示向处理系统提供的电压和/或电流的输入信号,并生成表示处理系统使用的当前功率的数字输出信号。

滤波器和定标器电路420可以接收来自每个处理器116的预测信号,其指示在不久的将来将要执行或可能需要多少功率指令。例如,处理器116可以报告待处理指令在时钟周期中是否会导致高能量消耗或低能量消耗。来自每个处理器116的信号可以是二进制高功率/低功率标志信号,或者它可以提供一系列不同的值到任何所需的分辨率,这些值指示在不久的将来要执行指令管线中尚未执行但即将执行的指令,可能需要多少功率(或者可以是,如果允许推测性执行)。

如图5所示,处理器116可以每个包括预解码器117,其被配置为发送(signal)将来要执行的指令的可能能量的信号。滤波器电路420a可以配置为接收来自所有处理器116的聚合功率信号。所述聚合信号可以由聚合器422产生,在一个实施例中,聚合器422包含组合逻辑,所述组合逻辑对聚合信号进行投票或以其他方式快速计算聚合信号以提交给滤波器420a。所述信号表示待处理指令当被执行时可能需要的多少功率,所述待处理指令将在稍后由处理器116库执行预定的时钟周期数。在一个示例非限制性实施例中,这些信号并不预测实际将需要多少功率,只基于其复杂性或其他指令特性预测指令可能消耗更多或更少的功率。例如,在一个示例实施例中,解析存储器加载指令的处理器116可以发送即将到来的指令可能需要低(更低)功率的信号。解析计算指令的同一处理器116可以发送即将到来的指令可能需要高(更高)功率的信号。

在许多实施例中,处理器116本身可能不“知道”执行任何给定指令实际消耗多少功率。这就像一个长跑运动员,她大概知道她跑半程马拉松时可能消耗多少卡路里的能量,但一般不能将能量消耗预测到卡路里。有太多的变量(例如环境条件,如温度、实际速度,而不是计划速度、精确的身体质量等)都会影响实际的能量使用。此外,任何给定处理器116的确切功率要求将取决于该特定处理器的特性,因为制造和工艺变化可能导致gpu与gpu之间或甚至同一gpu上的一个处理器与另一个处理器之间存在细微的结构差异。确切的功率使用通常还取决于处理器116执行的特定软件指令序列。

在所示示例中,滤波器和定标器电路420包括一个或更多个滤波器420a(例如,无限脉冲响应或iir滤波器),以降低从处理器116接收的聚合信号中的噪声。这种滤波器的脉冲响应是“无限的”,因为滤波器中存在反馈;如果输入一个脉冲(一个“1”样本,后面跟着许多“0”样本),理论上会产生无限多的非零值。然而,其他实现可以使用fir滤波器、fir滤波器和iir滤波器的组合,或者任何其他合适的滤波器设计。

滤波器420a的输出是不久的将来的功率估计。这个不久的将来的功率估计被提供给定标器420b,其缩放输出,以便它可以与adc118的输出相结合(定标器可以部分地由adc输出的大小控制)。

电路400可以进一步包括电路(例如,求和节点422),以确定adc118的当前功率测量值与将在预定数目的周期中使用的滤波器/定标器420估计的功率之间的差异或误差。

状态向量寄存器430接收/保存误差值,以提供一个值x(t),pid控制器440可以用其来确定频率和/或电压设置。在一些示例性实施例中,x(t)考虑多个时钟周期的误差值(例如,当前周期、一个或更多个过去周期和/或一个或更多个将来周期的误差)。状态向量电路430的输出x(t)可以包括多个分量(component)。在一些实施例中,输出x(t)可以作为函数(例如,乘法器函数、缩放函数或统一(unity)函数)提供误差。在一些实施例中,状态向量电路430可以采用以连续形式提供的误差,并为pid控制器440提供离散值。在一个示例实施例中,状态向量电路430的输出x(t)可以用e(t)、δe(t)、δ2e(t)…表示。整个向量x(t)可以被提供给学习系统460,并且状态向量的子集(例如分量e(t))可以被提供给pid控制器440。

pid控制器440接收当前功率和预测功率之间的误差的表示,并根据pid控制器440存储在“调整常量(tuningconstants)”寄存器440a中的特定参数计算输出w(t)。众所周知,pid控制器440将比例控制与额外的积分和微分调整结合在一起,其帮助控制器自动补偿系统中的变化。众所周知,pid控制器440强制反馈以与设定点匹配。比例调整包括校正与差异成比例的目标;它接近但永远不会达到零误差。积分调整累积“p”动作产生的误差来增加校正因子。由于这有时会导致过冲,因此微分调整用于通过在接近目标时减慢所应用的校正因子来最小化该过冲。在示例实施例中,pid控制器440的p-i-d阶段采用比例、积分和微分项的增益值或调整常量进行参数化。在示例实施例中,这些参数存储在读/写寄存器440a中,并且可以通过如下所述的学习系统150而被动态改变。

pid控制器440输出w(t)规定了工作电压和/或频率的变化,从而减小了当前功率和预测功率之间的误差。当误差为零时,pid控制器440的输出将停止调整频率和电压。pid控制器440输出w(t)可在(a)仅频率调整,(b)仅电压调整,和(c)电压和频率变化之间进行选择,这基于功率应在哪个时段上被管理。

pid控制器440的输出w(t)被提供给频率/电压控制器122,用于调整处理系统(例如,gpu102)的工作频率和/或电压。频率/电压控制器450的操作可以用硬件和/或软件执行。

基于输出w(t),频率/电压控制器122调整工作频率和/或电压,以允许gpu102所吸取的功率增加或减少。例如,如果确定单独频率调整可影响所需功率变化以减少误差,则频率/电压控制器450可以触发频率变化,以调整一个或更多个时钟127的频率(或速率)。pid控制器440可以确定是只改变工作频率,还是只改变电压,或者同时改变电压和频率。在一些实施例中,误差程度可以决定应改变哪些操作设置。例如,如果误差高于预定阈值,pid控制器440可以要求改变工作电压。当预测到高功率事件时,可以改变工作电压和频率来限制峰值功率,从而提高在最大效率下运行时的系统级运行和可靠性。

在一些实施例中,频率/电压控制器122可以通过抵消发送到电压调节器的设定电压来调整电压,以使当前功率回到极限之下或增加。

如上所述,pid控制器440允许控制器的固定参数或自调整参数。由于工作负载可以是多样的,并且会在短时段内发生变化,因此可以使用强化学习(例如玩家-评委或q学习150)来更新寄存器440a中存储的pid控制器440参数。学习系统150还可以注意处理系统的变化(例如,硅变化),否则预先设定的pid控制器440参数将不考虑该变化,防止pid控制器440对预期的功率需求过度补偿。

学习系统150可以连续接收来自状态向量430的误差x(t)和来自adc118的电流测量的功率。在一些实施例中,学习系统150还可以从处理器116和/或聚合器422接收预测功率。在示例实施例中,学习系统150调整pid控制器440的参数440a。学习系统150输出k(t),其构成pid控制向量,基于校正效果对其进行更新,以给出动态特性。

学习系统460包括一个或更多个深度神经网络,其基于随时间修正误差的有效性来定期更新控制器参数。例如,如果pid440在制造时使用调整常量440a初始化,基于仿真根据经验得出该调整常量440a,则它们不一定完全匹配任何特定gpu102的实际硬件特性。然而,学习系统150可以实现强化学习,以学习针对预测特定处理器指令集的电流吸取的状态向量430值x(t)与gpu102在gpu执行这些指令时的实际电流/功率吸取之间的实际相关性。学习系统150可使用统计和概率分析来确定pid控制器440针对各种不同的x(t)在x(t)和w(t)之间执行的更为优化的映射,尽管输出信号w(t)具有潜在的复杂性,并且不需要用系统的任何预想的模型或映射进行编程。

在示例实施例中,机器学习150可以通过硬件深度学习加速器(“dla”)141加速,并且可以执行深度强化学习算法,例如玩家-评委强化学习或q-学习。参见例如,孔达(konda)等人,“马尔可夫决策过程的类玩家-评委式学习算法”,控制与优化siam日报,38(1):94-123(1999);萨顿(sutton)等人,“强化学习:导论”(mit出版社,剑桥,ma,1995);以及刚曼(grondman)等人,“玩家-评委强化学习的调查:标准与自然策略梯度”ieee系统、人与控制论会刊,第c部分:应用与评论(2012)”。正如刚曼等人总结的:

强化学习是一个框架,其中,代理(或控制器)通过与环境交互来优化其行为。在某种状态下采取动作后,代理将从环境中接收标量奖励(reward),其将向代理指示该动作的质量。指示在某状态下要采取的动作的函数称为策略。代理的主要目标是找到一个最大化总累计奖励的策略,也称为回报(return)。通过遵循给定的策略和处理奖励,代理可以建立回报的估计。表示这个估计的回报的函数称为值函数。使用这个值函数允许代理可以间接地利用过去的经验来决定将来在某个状态中或在某个状态周围采取的动作……玩家-评委方法结合了仅玩家和仅评委方法的优点。虽然参数化的玩家带来了计算连续动作的优势,而无需对值函数进行优化,但评委的优点在于,它为玩家提供了低方差的性能知识。更具体地说,评委对预期回报的估计允许玩家使用具有较低方差的梯度进行更新,从而加快学习过程。当评委的估计值远不准确时,在学习开始时,较低的方差被交换为较大的偏差。与仅评委方法相比,玩家-评委方法通常具有良好的收敛性。

在例如处理器116等处理器上开发的诸如学习系统150之类的深度神经网络(dnn)已用于各种各样的用例,从自动驾驶汽车到更快的药物开发,从在线图像数据库中的自动图像标注到视频聊天应用中的智能实时语言翻译。深度学习是一种技术,它模拟人脑的神经学习过程,不断学习,不断变得更聪明,并随着时间的推移更快地提供更准确的结果。儿童最初是由成年人教导以正确识别和分类各种形状,最终能够识别形状而不需要任何指导。同样,深度学习或神经学习系统需要在对象识别和分类方面被训练,以便使它在识别基本对象、被遮挡对象等方面变得更智能和更高效,同时也为对象分配上下文。一般来说,强化学习介于有监督和无监督学习之间。而在有监督学习中,每个训练示例都有目标标签,而在无监督学习中,则完全没有标签,在强化学习中,则有稀疏和延迟的标签——奖励。仅基于这些奖励,代理必须学习在环境中表现。

参见:https://neuro.cs.ut.ee/demystifying-deep-reinforcement-learning/

在最简单的层次上,人脑中的神经元观察接收到的各种输入,将重要性级别分配给这些输入中的每一个,并将输出传递给其他神经元来执行操作。人工神经元或感知器是神经网络最基本的模型。在一个例子中,感知器可以接收一个或更多个输入,其表示感知器正在被训练以对其识别和分类的对象的各种特征,并且这些特征中的每一个都基于该特征在定义对象形状中的重要性而被分配了某一权重。

深度神经网络(dnn)模型包括多层许多相连的感知器(如节点),这些感知器可以采用大量输入数据进行训练,以快速、高精度地解决复杂问题。在一个例子中,dll模型的第一层将汽车的输入图像分解成不同的部分,并寻找诸如线条和角度之类的基本图案。第二层组装线条,以寻找更高级别的图案,如车轮、挡风玻璃和镜子。下一层标识车辆类型,最后几层为输入图像生成标签,标识特定汽车品牌的模型。

一旦对dnn被训练,该dnn可以被部署和用于在被称为推理的过程中识别和分类对象或图案。推理的例子(dnn从给定的输入中提取有用信息的过程)包括识别存入atm机的支票上的手写数字、识别照片中朋友的图像、向超过5千万用户提供电影推荐、识别和分类不同类型的汽车、行人、以及无人驾驶汽车中的道路危险,或实时翻译人类语言。

在训练期间,数据在前向传播阶段流经dnn,直到产生一个指示与输入相对应的标签的预测。如果神经网络没有正确标记输入,则正确标签和预测标签之间的误差被分析,并在后向传播阶段调整每个特征的权重,直到dnn正确标记该输入和训练数据集中的其他输入。训练复杂的神经网络需要大量的并行计算性能,包括由处理器116支持的浮点乘法和加法。推理比训练的计算强度要低,这是一个延迟敏感的过程,其中训练后的神经网络应用于它以前从未见过的新的输入,以分类图像、翻译语音和通常推断新的信息。

神经网络严重依赖于矩阵数学运算,而复杂的多层网络需要大量的浮点性能和带宽来提高效率和速度。采用数千个处理核心,针对矩阵数学运算进行优化,并递送数十到数百个tflops性能,处理器116提供了一个计算平台,能够提供基于深度神经网络的人工智能和机器学习应用(例如上面描述的)所需的性能。

示例非限制性强化学习比例-积分-微分控制器

图6示出了基于强化学习的pid控制器440的示例更详细的架构。在这个示例实现中,输入信号y_ref(t)表示我们想要管理的参考功率,y(t)是一个输出信号,表示当前传感器功率+由于高能量指令将观察到的预计未来功率增加的总和。加法器422'计算y_ref(t)和y(t)之间的差,以生成误差信号e(t),以应用于状态向量430。因此,状态向量x(t)是从e(t)导出的向量,其中:x(t)=[x1(t),x2(t),x3(t)..xn(t)]=[e(t),δ(e(t)),δ^2(e(t)),..]:e(t)=y_ref(t)–y(t),δ(e(t))=e(t)–e(t-1),δ^2(e(t))=e(t)–2*e(t-1)+e(t-2),依此类推。

pid控制器440将使用此状态向量的元素,通常例如,e(t)将去往块增量pid控制器440。pid控制器440的输出为δu(t),其应用于表示频率-电压控制器122和关联功率调节机制的进程(process)472的输入。z-1(存储器)运算符470提供滞后,以便pid控制器440输出δu(t)用于调整应用于控制进程472的当前u(t)信号。z-1运算符470存储u(t)并将其作为u(t-1)提供给加法器474的输入,加法器474将δu(t)与u(t-1)相加以产生u(t)。

学习块150包括玩家476、评委480和自适应模块(“sam”)478。通常,系统150是基于神经网络的模型,其将为pid控制器440生成更新系数k(t)。评委480的输入是r(t),也被称为作为强化学习系统中的实体的奖励。在这种特殊情况下,r(t)是从e(t)和e(t-1)导出的标量值。学习的目的是获得最大的r(t)。

这种特殊的安排使玩家476将其输出k’(t)提供给自适应模块(“sam”)478,其产生k(t),并将该信号作为系数输入提供给pid控制器440。在这个例子中,这些系数构成了pid参数的向量。

同时,评委480基于输入x(t)和r(t)生成输出v(t),并将输出v(t)应用于sam478,其适应评委的输出并将k’(t)转换为k(t)。

双控制回路架构

因此,pid控制器440和学习系统150提供两个控制回路,第一个包括pid控制器440,第二个包括在第一个回路顶部运行的学习系统(与第一个回路的时段不同)。这两个控制回路提供了pid控制器440使用的参数的自学习和自调整,以基于处理器116提供的未来功率使用估计(作为处理器解析其即将执行的指令格式的结果)来调整gpu102的功率控制参数。

在示例非限制性实施例中,pid控制器440回路连续运行,并且独立于学习系统150回路,但可根据学习系统回路确定的需要定期更新。学习系统回路观察pid控制器440回路的操作,以查看当前设置的pid控制器440加权系数是否存在差异(例如,误差减小)。如果没有差异,或者误差减少是可以改进的,学习系统回路150可以修改pid控制器440使用的一个或更多个系数。当pid控制器440不更新频率和/或电压设置时,学习系统150回路可以更新pid控制器系数。

如上所述,在一些示例性实施例中,学习系统150可以从处理系统的其他组件接收额外信息。例如,学习系统460可以从处理器116接收关于被调度用于执行的待处理指令的信息。学习系统460可以使用这些附加信息来帮助它确定和更新pid控制器440的系数。

示例非限制性可扩展的强化学习比例-积分-微分系统

在示例实现中,可以将强化学习pid系统扩展为包括一个或更多个额外的pid控制器和/或一个或更多个额外的学习块,以基于单独的度量来控制系统。在预测功率管理的上下文中,可扩展的强化学习pid系统可以用于管理性能(单独的度量)和功率(单独的度量),从而实现最高电势操作点。

图7是可扩展的强化学习比例-积分-微分系统的示意图。在图7中,一个或更多个pid控制器440用于控制进程472,并且一个或更多个学习系统150更新一个或更多个pid控制器440的系数。

如图7所示,可以基于pid控制器440的总和输出控制进程472。每个pid控制器可以管理设置进程472的一个或更多个公共参数的单独的度量。

在图7所示的示例中,每个pid控制器440耦连到各自的学习系统150,学习系统150确定所耦连的pid控制器的系数。学习系统155基于进程472的一个或更多个输出确定pid控制器440的系数。在其他示例中,学习系统150基于输入到pid控制器440的一个或更多个误差信号确定系数。在一些示例中,单个学习系统(例如,rl代理1)可以确定两个或更多个pid控制器(例如,pid控制器1和pid控制器2)的系数。

图8示出了包括两个pid控制器和两个学习系统的基于可扩展的强化学习的pid系统的示例架构。在该示例实现中,第一pid控制器440a和第二pid控制器440b用于控制进程472,其可以表示频率-电压控制器和关联的功率调节机制。输入信号θref和xref可以表示我们想要管理的单独度量,θ(tk)和x(tk)可以表示当前度量值和度量值的估计的将来增加。例如,x(tk)可以表示当前传感器功率+由于高能量指令将观察到的估计的将来功率增加的总和,θ(tk)可以表示当前性能+由于高能量指令将观察到的估计的将来性能增加的总和。在一些示例实现中,第一个度量可以表示进程472的电压,第二个度量可以表示进程472的频率。

第一pid控制器440a接收第一度量误差信号ep(tk),其表示θref和θ(tk)之间的差异。第二pid控制器440b接收第二误差信号ec(tk),其表示xref和x(tk)之间的差异。第一pid控制器440a和第二pid控制器440b分别输出值up(tk)和uc(tk),其分别基于接收到的误差和控制器中设置的系数k(t)确定。如图8所示,可以将输出值up(tk)和uc(tk)相加并提供给进程472。

当单独的度量设置进程472的一个或更多个公共参数时,输出值up(tk)和uc(tk)相加。作为示例,如果操作时钟是基于性能和功率设置的(因为时钟会影响这两者),则输出将用于驱动/设置控制进程的公共参数。

在其他示例中,可以将输出值up(tk)和uc(tk)直接提供给进程472,用于确定输出值up(tk)和uc(tk)如何驱动/设置控制进程472的参数。

如图8所示,第一pid控制器440a和第二pid控制器440b可以分别耦连到各自的学习系统以更新控制器的系数。第一学习系统150a为第一pid控制器440a生成一个或更多个更新系数kpp,kip和/或kdp。第二学习模块150b为第二pid控制器440b生成一个或更多个更新系数kpc,kic和/或kdc。第一学习块150a和第二学习块150b接收表示进程472输出的离散值的状态向量(n1(tk),n2(tk),n3(tk),n4(tk))的一个或更多个分量。状态向量值n1(tk)、n2(tk)、n3(tk)和n4(tk)从进程472输出θ(tk),x(tk)和中导出。

在图8所示的示例中,第一学习块150a接收状态向量值n1(tk)和n2(tk),第二学习块150b接收状态向量值n1(tk)、n2(tk)、n3(tk)和n4(tk)。尽管图8示出了接收不同值集的学习块,但第一学习块150a和第二学习块150b可以接收相同的值集或不同的值集。

在其他示例中,学习系统150a和/或150b可以使用误差信号ep(tk)和/或误差信号ec(tk)的一个或更多个状态向量元素更新第一和/或第二pid控制器的系数。

示例非限制性强化学习反馈回路控制方法

图9是根据某些示例实施例的强化学习反馈控制方法的流程图。

对于启动器,操作510初始化一个或更多个参数。例如,这些参数可以包括pid控制器440用于影响gpu102的功率控制参数的参数。

操作520感测到误差,例如,通过生成用于应用于状态向量430的误差信号e(t),例如通过计算y_ref(t)和y(t)之间的差来提供。

操作530使用强化学习来检测感测到的误差是否是需要修正的系统误差。强化学习能够将即时行动与其产生的延迟回报联系起来。像人类一样,强化学习算法有时需要等待一段时间才能看到它们的决策结果。因此,它们可以在延迟的返回环境中运行,在这种环境中,很难理解在许多时间步骤中哪一个动作会导致哪一个结果。因此,强化学习算法可以在不明确的环境中更好地执行,例如具有未知因素(例如,特定软件应用程序的特定指令/线程/线程束或其功能的并行度,基于这种并行操作将被激活和停用的gpu晶体管数量等)的功率控制,同时在任意数量的可能动作之间进行选择。在非限制实施例的示例操作中,强化机器学习系统的评委神经网络已响应于先前感测到的误差针对先前的功率调整操作进行了训练,并已评估了累加的奖励,即对其在特定状态下有多有利的价值评估。如果神经网络基于感测到的误差确定评估的奖励较高,则状态向量不变,并连续重复“感测误差”操作520。但是,如果神经网络基于感测到的误差检测到回报较低,则会调用其他处理来更改状态向量(如下所述)。

为了在评估的奖励较低时改变状态向量,示例非限制性实施例执行操作540,即基于神经网络的基于状态向量的参数计算(在其他实施例中,基于状态向量的计算可以以其他方式执行,例如增加或减少某一量等)。该计算可包括例如计算pid控制器440的系数k’(t)。在一个示例非限制性实施例中,可以由玩家476基于从误差信号e(t)导出的状态向量x(t)执行基于状态向量的参数计算。

在一个示例非限制性实施例中,操作550执行随机扰动以将被计算的系数k’(t)转换为k(t)。基于来自评委480的输出v(t),自适应模块(“sam”)478可以执行系数k’(t)到k(t)的转换。在操作560中,神经网络推导出的新系数k(t)被应用于pid控制器440。

将新系数k(t)应用于pid控制器440会导致gpu功率设置的操作点移动(框570)。该操作点移动可以包括调整频率-电压控制器122的输出频率和/或使用功率调整机制调整输出电压。频率-电压控制器122和相关功率调节机制执行的过程的结果设置了gpu的新频率和/或电压操作点。然后,gpu使用新的操作点处理指令(框580)。同时,神经网络从这个操作的效果中学习,并在图9过程的下一个迭代中使用这个额外的学习。

过流保护

在一些示例性实施例中,频率/电压控制器450可以延迟、抢占或阻止在一个或更多个处理器(例如,sm)中执行待处理指令。例如,频率/电压控制器450和/或机器学习150可以接收来自pid控制器440的输出,并确定执行指令何时会导致频率和/或电压设置超过预定限制(例如,安全限制)。基于这一确定,频率/电压控制器450可以发出信号以在一个或更多个周期内延迟或停止处理待处理指令。延迟或停止处理指令的信号可以经由本领域技术人员已知的常规抢占机制发送给一个或更多个处理器。频率/电压控制器450可以确定需要延迟处理高能量指令的处理器116的数量,以避免超过预定的安全限制。例如,当确定执行处理器116中的待处理指令将导致功率设置超过预定限制,从而可能导致过热、断电或其他不良影响时,频率/电压控制器450可以向一个或更多个处理器发送延迟信号,以便在给定的时钟周期内不执行所有高能量消耗指令。这样的负载平衡可以随着时间的推移而使高功率计算变均匀,同时对整体速度性能的影响最小。

本公开的示例性实施例不限于使用图4和图5所示的pid控制器和玩家-评委学习或q学习。其他反馈控制器和学习系统可与本申请中公开的示例性实施例一起使用。例如,可以使用pid或其他神经网络控制器(如果速度足够快)来基于电流和预测功率之间的误差确定应该应用于gpu的工作频率和/或电压的变化。

如上所述,传统的gpu仅限于使用反应机制来管理gpu的功率。然而,这种反应机制使gpu内部组件容易受到电气可靠性问题的影响(例如,内部组件损坏和/或gpu关闭并从通信总线上脱落)。本公开的实施例提供了对指令的主动感测,以预测可能的负载阶跃/释放事件,其允许在几个时钟周期之后,在事件实际发生之前知道即将发生的负载阶跃/释放事件。预测负载阶跃/释放事件允许在事件发生之前调整gpu的功率设置(例如,通过改变电压和/或频率),以防止出现峰值功率情况。以这种方式移动电压和/或频率可以在比其他方法更短的时间内减少电气可靠性问题,但不会影响性能。此外,与pid控制器440并行运行的学习系统,提供用于确定应改变工作电压和/或频率的参数的动态调整,以预测和防止此类不期望的峰值功率情况。

根据实施例,包括主动式功率管理系统的gpu在较短的时段上比其他方法提供更高的可靠性,但不会影响性能,因此可以用于需要高可靠性的计算环境。根据实施例,gpu和包括一个或更多个gpu的soc可以在数据中心、服务器环境、游戏计算机、笔记本电脑和其他计算环境中实现。实施例也可用于诸如自动车辆、机器人等环境中。例如,实施例可以通过确保gpu不会因过流情况而暂时从通信总线上脱落来提高自主车辆应用程序的运行可靠性。实施例还可以通过实现更快的功率管理响应来提高自主(或其他)车辆的功耗。

然而,实施例不限于gpu和包括gpu的soc。其他实施例可以提供cpu芯片上的片上adc或其他类型的处理器。

本文所述主题和功能操作的实施例可在以下一个或更多个实施例中实现:数字电子电路;有形体现的计算机软件或固件;计算机硬件,包括本说明书中公开的结构及其结构等效物;及其组合。所述实施例可实现为一个或更多个计算机程序指令模块,所述计算机程序指令编码在有形的非暂时性存储介质上,以供数据处理设备(即一个或更多个计算机程序)执行或控制其操作。计算机存储介质可以是以下的一种或更多种:机器可读存储设备、机器可读存储基板、随机或串行访问存储设备及其组合。

以上所引用的每一个项目在所有目的上都以引用方式并入,如同明确规定一样。

虽然发明被描述在目前被认为是最实用和优选的实施例,可以理解本发明不限于所公开的实施例,而恰恰相反,旨在涵盖包括在所附权利要求精神和范围内的各种修改和等效安排。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1