一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

总线互连的每通道功率管理的制作方法

2023-03-29 01:39:26 来源:中国专利 TAG:


1.本公开涉及通信总线中的数据的路由,具体而言涉及根据总线的未来负载控制这种总线的通道的功率状态。


背景技术:

2.现代系统通常经由总线互连将诸如图形处理单元(graphics processing unit,gpu)、固态存储器设备(solid-state memory device,ssd)和网络设备之类的外围设备连接到主机中央处理单元(central processing unit,cpu)。
3.传统上,负载预测器被用来控制系统中的功率消耗。预测的常见方法包括双指数平滑、神经网络和基于小波变换的预测器。


技术实现要素:

4.根据本公开的一方面,提供了一种方法,包括:接收对于计算设备的通信总线上的数据的传送的请求;至少部分基于所述请求确定所述传送的方向;至少部分基于所述请求确定所述传送的数据的数量;至少部分基于所述传送的方向和数据的数量为所述通信总线的通道确定功率状态;并且为所述通信总线的通道设置所述功率状态。
5.根据本公开的一方面,提供了一种装置,包括:存储元件,可操作来存储电子代码;以及处理器,可操作来执行与所述电子代码相关联的指令,使得所述装置被配置为:接收对于计算设备的通信总线上的数据的传送的请求;至少部分基于所述请求确定所述传送的方向;至少部分基于所述请求确定所述传送的数据的数量;至少部分基于所述传送的方向和数据的数量为所述通信总线的通道确定功率状态;并且为所述通信总线的通道设置所述功率状态。
6.根据本公开的一方面,提供了一种装置,包括:用于存储电子代码的装置;以及用于执行以下操作的装置:接收对于计算设备的通信总线上的数据的传送的请求,至少部分基于所述请求确定所述传送的方向,至少部分基于所述请求确定所述传送的数据的数量,至少部分基于所述传送的方向和数据的数量为所述通信总线的通道确定功率状态,并且为所述通信总线的通道设置所述功率状态。
附图说明
7.图1根据本公开的实现方式图示了示范性计算设备。
8.图2根据本公开的实现方式示出了用于链路功率和带宽管理流程的算法。
9.图3根据本公开的实现方式示出了用于计算总线通道唤醒或休眠启动时间的算法。
10.图4根据本公开的实现方式图示了计算设备。
具体实施方式
11.这些互连的未来版本(例如外围组件互连快速[pcie]gen6)可能支持每通道功率管理,以将每个通信方向上的个体数据通道置于低功率状态中,以节省功率。
[0012]
利用每通道功率状态控制的传统方法使用基于硬件的测量来响应于需求而改变功率状态。当需求上升时,更多的通道被加电;当需求下降时,更多的通道被断电。
[0013]
在另外一种用于确定何时和如何管理总线通道功率状态的方法中,软件组件检查工作负载的请求,并且确定这些请求何时匹配特定的概况(例如,文件传送),然后针对预先识别的通道功率状态配置(例如,3x接收通道 1x发送通道)来配置总线通道。
[0014]
管理通道功率状态的响应式方法为突发流量提供了不佳的性能,因为总线通道在传送间隔开始时没有被加电。
[0015]
本公开的一些实现方式使用关于未来工作负载需求的知识来控制总线通道功率状态,从而改善了系统性能和效率。
[0016]
根据本公开的一些实现方式与突发方式相比,在几个具体方面具有优势:
[0017]
本公开的一些实现方式可以分析工作负载操作,以确定总线事务大小、延时和带宽使用。传统的实现方式识别“工作类别”,例如“文件传送”。本公开识别了要传送的具体资源、其大小和延时敏感性(例如,是否应当立即提供资源(延时敏感,或者可以使用较少的通道缓慢传送它)。
[0018]
本公开的特定实现方式使用上述细节,来基于即将发生的操作确定通道配置,包括要传送的数据的量和计算系统对该传送的延时/带宽敏感性。传统的实现方式使用操作的“类别”来从一组预定义的通道配置中进行选择,这不会导致在操作开始时所有通道的最佳通道功率配置。
[0019]
本公开的各种实现方式控制总线功率状态,以在特定的时间唤醒和休眠,以获得性能/效率。传统的实现方式没有对确定唤醒/休眠时间作出规定:这些实现方式只是规定控制通道功率状态。
[0020]
图1根据本公开的实现方式图示了示范性计算设备100。计算设备100是主机的示例,并且包括一个或多个cpu 110、应用120、设备驱动器130、未来总线负载表征单元(future bus load characterization unit,fblcu)140、总线通道功率管理器150、通信总线160、外围设备170、命令处理器180、可选的总线通道功率管理器185、以及可选的fblcu 190。
[0021]
cpu 110中的一个或多个包括应用120,该应用在cpu 110中的一个或多个上执行。应用120指示cpu 110中的一个或多个向通信总线160发送数据并且从其接收数据。例如,应用120可以指示cpu 110中的一个或多个通过通信总线160向gpu发送数据。作为另一个示例,应用120可以指示cpu 110中的一个或多个经由通信总线160从固态存储器设备取回数据。
[0022]
应用120可以是任何应用,包括生产力应用、教育或信息应用、娱乐应用(例如,游戏或视频),以及这些种类的任何组合(例如,信息娱乐)。
[0023]
cpu 110中的一个或多个还包括设备驱动器130,该设备驱动器被加载到cpu 110中的该一个或多个上。设备驱动器130是用于一个或多个cpu 110与外围设备170交互的驱动器。
[0024]
设备驱动器130可包括fblcu 140和总线通道功率管理器150。
[0025]
fblcu 140监视一个或多个cpu 110上的即将发生的动作。例如,fblcu 140基于所请求的传送的方向和所请求的传送的数据数量来表征通信总线160的未来负载,如本文所详述。
[0026]
基于这些动作,fblcu 140为通信总线160的每个通道确定每个方向上的适当功率状态。fblcu 140还确定通道的唤醒或休眠时间以实现这些功率状态。
[0027]
总线通道功率管理器150使用功率状态信息来提高(例如,“唤醒”)或者降低(例如,“休眠”)通信总线160的个体通道的功率状态。例如,总线通道功率管理器150在适当的时候向通信总线160发送功率管理命令。
[0028]
通信总线160是一个或多个cpu 110和外围设备170之间的接口(例如,总线互连)。通信总线160可符合接口标准,例如外围组件互连快速(peripheral component interconnect express,pcie)或者计算快速链路(compute express link,cxl)。通信总线160例如包括4、8或者16个通道。在一些实现方式中,通信总线160包括32个或者更多个通道。
[0029]
在许多实现方式中,通信总线160的通道在cpu 110中的一个或多个和外围设备170之间双向通信。在其他实现方式中,通信总线160的相对少数(例如,一个或者两个)通道专用于单向通信,而通信总线160的其余通道可以双向通信。
[0030]
在一些实现方式中,计算设备100可以在其壳体内包括外围设备170。在其他实现方式中,外围设备170被包括在计算设备100外部的它自己的壳体中。外围设备170例如可以是gpu、存储设备或者网络接口。在外围设备170是gpu的实现方式中,gpu可以包含命令流处理器。在外围设备170是存储设备的实现方式中,存储设备可以是ssd。在外围设备170是网络接口的实现方式中,网络接口例如可以是网络接口卡(network interface card,nic)。
[0031]
外围设备170包括命令处理器180。命令处理器180执行由设备驱动器130指示的命令。在外围设备170是gpu的情况下这些命令的示例可包括计算、从计算设备100到外围设备170的数据传送、以及从外围设备170到计算设备100的数据传送。在外围设备170是ssd的情况下这些命令的示例可包括从ssd读取数据或者将数据存储到ssd。
[0032]
外围设备170还包括可选的总线通道功率管理器185。总线通道功率管理器185可以与总线通道功率管理器150类似地操作。例如,总线通道功率管理器185将通道功率管理命令发送到通信总线160。在包括总线通道功率管理器185的一些实现方式中,计算设备100中的总线通道功率管理器150可以被省略。
[0033]
外围设备170可选地包括fblcu 190,其可以被实现为在外围设备170上运行的软件或硬件。包括fblcu 190可以提供灵活性以避免从计算设备100向外围设备170发送信息。
[0034]
在另外的实现方式中,计算设备100上的fblcu 140可以与外围设备170上的fblcu 190协调,以提供对通信总线160的功率状态的增强确定。
[0035]
一旦外围设备170生成或者接收关于通信总线160的未来传送的信息,外围设备170的fblcu 190就可以基于外围设备170的内部调度器来确定传送的开始时间。在外围设备170是gpu的情况下,命令流处理器可以指示出唤醒或休眠通信总线160的通道的开始和结束时间。总线通道功率管理器185可以设置通信总线160的通道的功率状态以适应唤醒周期时间,从而使得通信总线160的每个通道在传送开始时处于适当的功率状态。
[0036]
从而,fblcu 140的一些实现方式随着传送的底层工作被创建而实时分析通信总线160的通道上的流量负载。fblcu 140然后可以在传送在通信总线160的通道上被传输之前预先更改通信总线160的通道的功率状态。
[0037]
在一个示例中,应用120是三维(3d)应用,它指示设备驱动器130生成命令以便在gpu(例如,外围设备170)上执行。当设备驱动器130创建这些命令时,fblcu 140确定要在通信总线160上传送的数据数量和完成事务的持续时间。
[0038]
例如,假设来自应用120的命令请求gpu读取2mb缓冲区以执行单个绘制操作。fblcu 140于是可以记录该请求。基于该请求,fblcu 140可以确定在每个方向上通信总线160的每个通道的功率状态。启动由fblcu 140确定的总线通道的功率状态可以在该操作的时间窗口(例如,60fps的时间窗口为16.66ms)期间提供改善的性能和效率。
[0039]
如果传送是由一个或多个cpu 110驱动的,那么fblcu 140可以确定一个或多个cpu 110将开始传送的时间。然后,总线通道功率管理器150基于通信总线160的通道的唤醒周期时间,在较早的时间调整通信总线160的通道的功率状态。例如,总线通道功率管理器150从一个或多个cpu将开始传送的时间中减去唤醒周期时间。从而,通信总线160的通道在传送开始时处于正确的功率状态。
[0040]
另一方面,gpu(例如,外围设备170)可以驱动通信总线160上的传送。在这种情形中,fblcu 140可以在发送到外围设备170的命令流内部嵌入关于通信总线160的通道的功率状态的信息。例如,此信息可包括gpu将开始传送的时间。此功率信息可以被编码为由命令流处理器解释的对于gpu的单独命令。然后命令流处理器可以在适当的时间将该信号传递给总线通道功率管理器185。
[0041]
在一些实现方式中,gpu将开始传送的时间是绝对时间。例如,fblcu 140可以基于时钟周期的数目或者系统时钟来指示出该时间。在其他实现方式中,gpu将开始传送的时间是相对时间。作为这样的实现方式的示例,fblcu 140可以指示出相对于绘制调遣的时间。
[0042]
在一些实现方式中,嵌入在命令流中的信息还指示出总线通道功率管理器应当调整通信总线160的通道的功率状态的时间(例如,传送开始时间和唤醒周期时间之间的差异)。另外,在替换实现方式中,fblcu 190可以确定通信总线160上的传送的开始时间。
[0043]
图2根据本公开的实现方式示出了用于链路功率和带宽管理流程的算法200。
[0044]
简要总结一下,算法200的链路重配置可以基于应用120的实时进度被触发,其中可以基于几个因素来确定链路重配置。这些因素包括但不限于主机110和外围设备170之间的数据传送的方向以及要在通信总线160上传送的数据数量的带宽和延时容忍度。fblcu 140和/或fblcu 190可以收集和监视关于处理单元的资源利用率、可用存储器空间等等的一组遥测数据。基于整个系统的剩余容量和数据处理的进度,主机110和外围设备170都可以定义一组触发器,这样,如果某些阈值被越过,则主机110和/或外围设备170可以提前启动通信总线160上的数据传送。
[0045]
算法200开始于s205并且推进到s215。在s215中,fblcu接收在计算设备100的通信总线160上传送数据的请求。例如,fblcu从在计算设备100上执行的应用120接收该请求。在另一个示例中,fblcu从外围设备170的命令处理器接收该请求。
[0046]
然后算法200推进到s225。
[0047]
在s225中,fblcu至少部分地基于该请求确定传送的方向。例如,fblcu可以确定应
用120请求从存储设备(例如,外围设备170)取回(例如,上传)数据。在另一个示例中,fblcu可以确定应用120将从一个或多个cpu 110将数据传送(例如,下载)到gpu(例如,外围设备170)。
[0048]
fblcu还在s225中至少部分基于该请求确定(例如,计算)传送的数据数量。在一些情况下,该请求为存储器传送识别了确定数量的数据。这样的存储器传送可以例如是1兆字节、确定大小的文件、确定大小的文件夹、或者确定大小的驱动器。
[0049]
在一些实现方式中外围设备170是网络接口,这些实现方式的运作类似于外围设备170是存储设备的实现方式。
[0050]
在其他情况下,应用120为传送请求不确定数量的数据。例如,该请求可以是由gpu渲染的帧。在这种情况下,fblcu可以确定数据数量等于gpu渲染先前帧时gpu使用的数据数量(例如,字节数)。
[0051]
设想了更复杂的数量确定。例如,fblcu可以确定数据数量等于当gpu渲染多个先前帧时gpu使用的平均数据数量。fblcu或者可以确定请求中的gpu绘制的类型,并且确定传送的数据数量等于当gpu先前为同一类型的gpu绘制渲染帧时gpu使用的数据数量。
[0052]
在另一个示例中,fblcu在队列内识别传送已知数量的数据的第一组操作,以及传送未知数量的数据的第二组操作。也就是说,第一组操作传送的是确定数量的数据。另一方面,fblcu使用历史平均或者类似的方法来确定未知数据数量的近似。fblcu将确定的数据数量与未知数据数量的近似相加,以确定总和。然后fblcu基于该总和确定活跃通道计数。然后算法200推进到可选的s235。
[0053]
在s235中,fblcu可选地至少部分地基于该请求来确定(例如,计算)传送的时间段。具体地,fblcu基于传送的数据数量或者请求的使用情况来确定该时段。
[0054]
关于数量,数量可能太小,不足以证明唤醒通信总线160的更多通道是合理的。例如,如果fblcu确定数量不超过预定的阈值,那么fblcu可以基于第一预定通道数目来计算传送的时段。这个第一预定通道数目可以是单个通道,或者可以是当前可用的通道数目。
[0055]
另一方面,如果fblcu确定数量超过了预定的阈值,那么fblcu基于第二预定通道数目来计算该时间段。例如,这个第二预定通道数目可以比当前可用的通道数目至少多一个通道。第二预定通道数目也可以是当前可用的通道数目,例如,如果当前可用的通道数目被认为是最大值的话。
[0056]
这个最大值可以比物理最大值少。例如,如果通信总线160包括16个通道(例如,物理最大值为16个通道),那么fblcu可以确定任何一个方向上的最大通道为15个。例如,在大型下载的情形中,fblcu可以确定一个通道的功率状态应当保持在上传方向,并且其余15个通道(例如,被认为是最大值)的功率状态应当在下载方向。
[0057]
关于使用,应用120可以请求尽快完成一些传送。从而,对于对这种传送的请求,fblcu可以确定时间段实际上为零。
[0058]
与之不同,应用120可以请求不那么紧急的传送,例如当资源被稀疏地采样时。例如,应用120可以请求在游戏中不经常渲染的家具的纹理。从而,对于这样的请求,fblcu可以确定时间段为几秒钟。然后算法200推进到s245。
[0059]
在s245中,fblcu基于在s225中确定的流量方向和数据数量,确定通信总线160的至少一个通道的功率状态。在一些实现方式中,fblcu还基于在s235中计算的时段来确定至
少一个通道的功率状态。fblcu可以独立地为通信总线160的通道的每个方向计算功率状态。
[0060]
在fblcu不在s235中计算时段的一些实现方式中,fblcu可以基于传送的数据数量来确定总线通道的功率状态。例如,如果传送的数据数量比一个方向上的当前带宽超过第一预定量(例如,10%),则fblcu可以确定激活通信总线160的至少一个额外通道。类似地,如果传送的数据数量比当前带宽低大于第二预定量的量(例如,10%),那么fblcu可以确定停用通信总线160的至少一个通道。第一和第二预定量可以是除了10%以外的值。另外,预定量不限于与彼此相同。例如,第一预定量可以是10%,而第二预定量可以是15%。fblcu可以从硬件寄存器接收带宽的值。
[0061]
在fblcu在s235中计算时间段的一些实现方式中,fblcu可以至少部分地基于该时段来确定总线通道的功率状态。具体地,fblcu首先确定通信总线160在一个方向上的活跃通道的最小数目,以便在该时段内执行传送。fblcu通过将请求传送的字节总数除以该时段以产生第一商数来确定这个最小数目。然后fblcu可以将第一商数除以适当方向上的通道的传送速率以产生第二商数。然后第二商数被向上舍入以确定活跃通道的最小数目。然而,fblcu不需要实际将通道数目设置为活跃通道的这个最小数目。例如,活跃通道的最小数目可以超过所考虑的最大通道数目。在这种情况下,fblcu的一些实现方式将把活跃通道的数目设置为所考虑的最大通道数目。
[0062]
如前所述,fblcu还可以考虑相反的功率状态,例如,通过即使在大型下载待处理时也在上传方向维持一通道。一些实现方式激活特定方向上的所有通道。然后算法200推进到s255。
[0063]
在s255中,fblcu确定是否应当修改当前总线功率状态配置。如果fblcu确定不应当修改当前总线功率状态配置(例如,当前总线功率状态可以在该时段中执行该传送),则算法200返回到s215。从而,如果当前总线功率状态配置不会被调整,则fblcu可以减少处理。
[0064]
另一方面,如果fblcu确定要修改当前总线功率状态配置状态,那么算法200前进到s265。
[0065]
在s265中,fblcu计算总线通道唤醒或休眠启动时间。将针对图3更详细论述s265的计算。
[0066]
如果算法200在可选的s235中没有计算时段,那么fblcu可以将总线通道唤醒或休眠启动时间计算为即时。
[0067]
在算法200没有在可选s235中计算时段的其他实现方式中,fblcu可以将总线通道唤醒或休眠计算为不太紧急。例如,fblcu可以基于通信总线160上的当前延时和传送的带宽要求来计算总线通道唤醒或休眠启动时间。从而,遥测数据可以计入传送的持续时间。如果fblcu在可选的s235中计算了时段,那么fblcu在s265中计算总线通道唤醒或休眠启动时间。具体而言,fblcu基于传送的开始时间和通道的唤醒周期时间之间的差异计算总线通道唤醒或休眠启动时间。例如,fblcu可以从通信总线160的硬件寄存器接收唤醒周期时间。然后算法200推进到s275。
[0068]
在s275中,总线通道功率管理器基于在s265中计算的唤醒或休眠启动时间,在启动时间设置通信总线160的通道的功率状态。然后算法200推进到s285。
[0069]
在s285中,在唤醒周期时间(或者休眠周期时间)已逝去之后,主机110或外围设备170可以使用通信总线160的一个或多个通道在请求的方向上执行传送。例如,在s275中的启动时间被唤醒的通道可以执行传送。在s275中被休眠的通道在传送中不被使用。类似地,在s275处被维持在清醒状态中的通道可被用于传送,而在s275处被维持在休眠状态中的通道不被用于传送。然后算法200推进到s295。
[0070]
在一些实现方式中,通信总线160的某个通道在唤醒周期时间逝去之前唤醒或者在休眠周期时间逝去之前休眠。在这种情况下,如果fblcu被告知这个提早周期完成,那么fblcu可以使用通信总线160的一个或多个通道在请求的方向上开始传送。在s295中,算法200结束。
[0071]
图3图示了在s265执行的操作的算法300。
[0072]
算法300开始于s305并且推进到s315。
[0073]
在s315中,可以确定传送是由计算设备100还是外围设备170驱动的。在许多实现方式中,不明确地执行这个确定,因为使用特定的fblcu(例如,fblcu 140或者fblcu 190)表明包括该fblcu的实体驱动该传送。
[0074]
如果fblcu确定该传送是由计算设备100驱动的,那么算法300推进到s325。如果fblcu确定该传送是由外围设备170驱动的,那么算法300推进到s335。
[0075]
在s325中,fblcu 140计算通信总线160的通道的唤醒或休眠启动时间。然后算法300推进到s345。
[0076]
在s335中,fblcu 190计算通信总线160的通道的唤醒或休眠启动时间。然后算法300推进到s345。
[0077]
在s345中,算法300结束。
[0078]
一些实现方式减少了唤醒延时的影响。因此,在一些这样的实现方式中,fblcu可以将未充分利用的通道断电以实现功率节省。例如,响应于确定在一通道上在特定方向上的流量在预定时段中低于预定的阈值,fblcu可以将该通道断电。或者,响应于确定一通道在预定时段中在任一方向上都没有被使用,fblcu也可以将该通道断电。
[0079]
与现有的方法相比,本公开的特定实现方式可以在总线传送开始时将通信总线160的每通道功率状态准备就绪。这种准备就绪可以减少总线通道的转变延时的影响。例如,在gpu工作负载上,总线传送的极度突发性质意味着,消除这种延时可以显著提高性能。
[0080]
从而,选择本公开的实现方式可以避免传统的需求响应式解决方案中当总线需求的突发开始时没有足够的通道处于活跃功率状态时的性能惩罚。实现方式还可以通过比现有机制更早地降低通信总线160的不需要的通道上的功率来提高效率,同时避免对性能产生负面影响。
[0081]
在一项测试中,对于在系统上运行的游戏执行了pcie总线分析器追踪,该系统具有经由gen3 x16 pcie总线连接的分立gpu。该示例考虑了随着时间的推移,通信总线的上行和下行%链路利用率。在整个样本窗口中,上行流量几乎为零。
[0082]
在特定的时间,观察到流量突然激增,几乎达到通信总线的峰值下行链路利用率。在这个时间窗口期间,gpu在这个pci总线传送的延时上完全陷入了瓶颈。
[0083]
现有的方法会在流量的突发首次出现时开始唤醒pci总线的通道,从而按照通道的唤醒周期时间延迟传送的完成(并且降低gpu的性能)。
[0084]
相比之下,利用根据本公开的实现方式,流量的突发被fblcu提前预测,并且额外的通道被预先置于活跃状态中,从而提高了gpu的整体性能。
[0085]
在引发1.5us唤醒时间以及平均每ms一次流量突发的示例总线上,本公开的实现方式可以在延时方面将性能至少提高0.3%。从而,仿真模型表明,利用本公开的实现方式在真实世界的游戏上有0.3%的性能提高。如果带宽利用率从当前的10%提高到60%,那么在pcie 5x8链路上,链路功率节省大约是2.1w。
[0086]
一种示范性的实现方式还可以通过使用较低的每通道功率状态来提供功率节省。对于将通道转移到较低的功率状态可以显示出类似的分析,从而在不降低性能的情况下降低功率消耗并且提高效率。基于在gpu中执行命令的资源依赖性,可以在较低的功率状态下通过总线160的通道分块发送数据而不降低性能。在具有多个gpu的分布式渲染的场景中,总线通道功率管理器可以基于gpu之间的操作管线和数据依赖性,并且基于与每个gpu和一个或多个cpu 110的同步,调整通道的功率状态。
[0087]
类似的方法可被用于其他外围设备,例如网络接口卡,其中设备驱动器130可以检测和预测即将发生的总线传送的量和时机。
[0088]
本公开的一些实现方式可以节省功率,当计算设备100是电池供电的膝上型计算机时,这可能很重要。另外,在通常具有x8或x16 pcie配置的高级膝上型电脑中,i/o的冷却要求可被降低。因此,在不增大系统的冷却容量的情况下,可以确保更持续的cpu和gpu扼制性能。
[0089]
谈到用例,在directstorage用例中,第一外围设备(例如,gpu)与第二外围设备(例如,ssd)直接通信。在这种场景中,可以在适当的功率状态中用通信总线160的适当通道来执行对等事务,从而节省功率,同时也维持或提高性能。
[0090]
在另一个用例中,可以识别多个gpu之间的对等事务。从而,fblcu可以为通信总线的每个通道的每个方向设置功率状态,以提高相对于输入和输出的功率节省或者性能。
[0091]
另外一个用例涉及3d工作负载。在那里,fblcu可以对先前的视频帧应用剖析,以预测未来帧的总线负载或需求,并且fblcu可以有利地为通信总线的每个通道的每个方向设置功率状态。
[0092]
另一个用例是关于gpu的巨型纹理(megatexturing)。巨型纹理绘制单个大型纹理,例如32,768
×
32,768像素,而不是组合单独的纹理。巨型纹理往往会引发突发的、不可预测的总线流量。设备驱动器130可以识别应用何时将要使用巨型纹理。blpm 150或blpm 185可以为通信总线160的通道设置适当的功率状态,以提供改善的功率使用和/或性能。
[0093]
另一个用例涉及数据传送的批处理。设备驱动器130可以对外围设备(例如,gpu)操作重排序,以批处理总线活动,从而为功率节省提供额外的机会。例如,设备驱动器130可以确定通信总线160的队列包括第一命令列表,其后是其他工作,然后是第二命令列表。然后设备驱动器130可以对队列重排序,以使得第一命令列表和第二命令列表被连续执行。从而,blpm可以在较长的连续时间段中将通信总线160保持在较高的功率状态中。从而,可以节省总体功率。
[0094]
本公开的一些实现方式在预测的方式和节省功率的方式上都与传统的方法不同。例如,fblcu 140可以随着在一个或多个cpu 110上生成工作而通过检查工作来确定对通信总线160的需求。也就是说,fblcu 140可以在数据被传输到外围设备170之前确定对通信总
线160的需求。这样,符合本公开的实现方式可以在制定传送之前检查未来的、已知的通信负载。从而,总线通道功率管理器150可以在数据传送开始之前改变通信总线160的通道的功率配置。
[0095]
传统的总线功率消耗控制包括对通信总线的用户进行频率限制,对通信总线本身进行频率限制,将通信总线转变到低功率状态,以及对称地控制总线通道的数目。
[0096]
本公开的一些实现方式可以通过不对称地控制通信总线160的给定传输方向上的活跃通道的数目来节省功率。例如,这种能力不存在于现有的pci规范中。
[0097]
另外,传统的基于pci的外围设备并不基于通信总线的未来的预期负载来控制通信总线的通道的功率状态。更狭义而言,传统系统在向外围设备或者驱动总线的实体提交工作之前,不会通过检查设备驱动器中的未来预期工作负载来控制总线通道宽度。
[0098]
尤其是在gpu空间中,在gpu上执行总线负载的时间并不被一个或多个cpu 110所知或者直接控制。从而,总线通道宽度只能由gpu准确控制。
[0099]
例如在gpu的情况下,一个或多个cpu 110上的设备驱动器130可以在命令生成时确定流量的量。同样地,设备驱动器130可以在命令生成时为固态设备/硬盘驱动器传送确定流量的数量。
[0100]
从而,在根据本公开的各种实现方式中,设备驱动器130解析关于即将发生的读取/写入操作的信息。这些操作具有非常低的复杂性,并且代表递增的cpu工作,因为设备驱动器130使用该信息来控制通信总线160的通道的宽度。
[0101]
归因于额外工作的额外cpu开销可以非常小。具体地,在gpu或者固态设备/硬盘驱动器情况下,由于实现本公开的教导而增大的功率可以极小。
[0102]
图4根据本公开的实现方式图示了计算设备400。如图4所示,计算设备100可以是或者可以包括计算设备。计算设备400可包括网络接口410、用户输入接口420、存储器430、处理器440、用户输出接口450、通信总线(未画出)、以及外围设备470。
[0103]
处理器440可以是或者可以包括一个或多个cpu 110。通信总线可以是或者可以包括通信总线160。外围设备470可以是或者可以包括外围设备170。
[0104]
虽然被图示在单个壳体内,但计算设备400可以分布在合作执行程序指令的多个壳体或者子系统上。在一些实现方式中,计算设备400可包括一个或多个刀片服务器设备、独立服务器设备、个人计算机、路由器、集线器、交换机、桥接器、防火墙设备、入侵检测设备、大型计算机、网络附接存储设备、智能电话和其他移动电话、以及其他类型的计算设备。可以根据任何计算机体系结构来配置系统硬件,例如对称多处理(symmetric multi-processing,smp)体系结构或者非统一存储器访问(non-uniform memory access,numa)体系结构。
[0105]
网络接口410提供一个或多个通信连接和/或包括一个或多个设备,这些通信连接和/或设备允许了计算设备400和其他计算系统(未示出)之间通过通信网络或者网络集合(未示出)或者空气进行通信。网络接口可以使用近场通信(near-field communication,nfc)、wi-fi
tm
、蓝牙、以太网、传真、或者任何其他有线或无线接口进行通信。
[0106]
计算设备400还可包括用户输入接口420,该接口接收来自人类的输入。用户输入接口可以是或者可以包括鼠标、触摸板、键盘、触摸屏、轨迹球、相机、麦克风、操纵杆、游戏控制器、扫描仪、或者任何其他输入设备。
[0107]
存储器430,也被称为“存储装置”,可包括或者可以是可由处理器440读取并且存储软件的一个或多个计算机可读存储介质。存储器430可被实现为一个存储设备,并且也可被实现在多个共位的或者分布式的存储设备或子系统上。存储器430可包括与处理器440通信的额外元素,例如控制器。存储器430还可包括存储了数据和/或指令的存储设备和/或子系统。计算设备400可以访问一个或多个存储资源,以访问信息来执行本公开、尤其是图2-图3中所示的任何过程。
[0108]
存储器430可以是或者可以包括只读存储器(read-only memory,rom)、可编程rom(programmable rom,prom)、可擦除prom(erasable prom,eprom)、电可擦除prom(electrically erasable prom,eeprom)、随机访问存储器(random-access memory,ram)、动态ram(dynamic ram,dram)、静态ram(static ram,sram)、硬盘驱动器、缓存存储器、闪存、可移动盘、或者磁带卷。存储器430可以是或者可以包括电阻式ram(resistive ram,rram)或者磁阻式ram(magneto-resistive ram,mram)。
[0109]
存储在存储器430中的软件可包括用于至少部分地执行图2-图3中图示的至少一个过程的例程,并且可以用程序指令来实现。另外,该软件当被一般的计算设备400或者具体的处理器440执行时,除其他功能外,可以指示计算设备400或者处理器440执行如本文所述的总线功率管理。
[0110]
处理器440可以是或者可以包括一个或多个硬件处理器和/或其他电路,它们从存储器430取回和执行软件。处理器440可被实现在处理设备、芯片或封装内,并且也可以分布在合作执行程序指令的多个处理设备、芯片、封装或者子系统上。
[0111]
在一些实现方式中,处理器440是或者包括图形处理单元(graphics processing unit,gpu)。gpu可有利于计算设备400中的视觉/图像处理。gpu,或者专用于实时或接近实时地处理影像和其他感知数据的独立于处理器440的任何二阶处理元件,可以提供益处。
[0112]
处理器440可具有任何寄存器大小,例如32比特寄存器或者64比特寄存器,等等。处理器440可包括多个核心。处理器440的实现方式不限于任何特定数目的线程。处理器440可以由任何工艺技术来制造,例如14nm工艺技术。
[0113]
用户输出接口450向人类用户输出信息。用户输出接口450可以是或者可以包括显示器(例如,屏幕)、触摸屏、一个或多个扬声器、打印机、或者触觉反馈单元。
[0114]
在计算设备100包括多个计算设备的实现方式中,系统的服务器或者在无服务器实现方式中的对等体可以使用一个或多个通信网络,这些网络促进了计算设备之间的通信。例如,一个或多个通信网络可包括或者可以是促进计算设备之间的通信的局域网(local area network,lan)、广域网(wide area network,wan)、或者城域网(metropolitan area network,man)。在计算设备之间可包括一个或多个直接通信链路。此外,在一些情况下,计算设备可被安装在地理上分布的位置。在其他情况下,多个计算设备可被安装在一个地理位置,例如服务器场或者办公室。
[0115]
如本文所使用的,术语“存储介质”、“计算机可读存储媒介”或者“计算机可读存储介质”可以指非暂态存储介质,例如硬盘驱动器、存储芯片和缓存存储器,也可以指暂态存储介质,例如载波或者传播的信号。
[0116]
每通道总线功率管理的各方面可以以各种方式来实现(例如,作为一种方法、一种系统或者一种计算机可读介质)。因此,本公开的各方面可以采取硬件实现的形式、软件实
现的形式(包括固件、驻留软件、或者微代码)、或者结合了硬件和软件方面的实现方式,这在本文中可以被概括称为“电路”、“模块”或“系统”。本公开中描述的功能可被实现为由一个或多个硬件处理单元执行的算法,例如,一个或多个计算机的一个或多个微处理器。在各种实现方式中,所描述的方法的不同操作和操作的不同部分可以由不同的处理单元执行。此外,本公开的各方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该介质上体现(例如,编码或存储)有计算机可读程序代码。在各种实现方式中,这样的计算机程序可以例如被下载到(或者更新到)现有的设备和系统上,或者在制造这些设备和系统时被存储。
[0117]
详细描述给出了具体实现方式的各种描述。在描述中,参考了附图,其中相似的标号可以指示相同或者功能上相似的元素。附图中图示的元素不一定按比例绘制的。此外,某些实现方式包括比图中所示更多的元素和/或图中所示元素的子集。另外,一些实现方式包含了来自两幅或更多幅图的特征的组合。
[0118]
本公开描述了用于实现本公开的特征和功能的各种说明性示例。这些组件、安排和/或特征是联系各种实现方式来描述的,并且仅仅是为了简化本公开的示例,而并不打算是限制性的。在实际实现方式的开发中,可以做出依实现方式而定的决定,以实现开发者的具体目标,包括遵守系统、商业和/或法律约束,这在各个实现方式之间可能是不同的。此外,虽然这种开发努力可能是复杂且耗时的,但对于受益于本公开的本领域普通技术人员而言它将是一项常规工作。
[0119]
附图描绘了各种组件之间的空间关系以及组件的各种方面的空间方位。这些设备、组件、构件和装置可以被定位在任何方位。从而,使用诸如“上方”、“下方”、“上面”、“下面”、“顶部”、“底部”之类的术语或者其他类似的术语来描述各种组件之间的空间关系或者描述这种组件的各种方面的空间方位,分别描述了组件之间的相对关系或者这种组件的各方面的空间方位,因为所描述的组件可以被定向在任何方向上。
[0120]
本公开的系统、方法和装置具有若干个创新的方面,其中没有任何一个是本文公开的属性的全部原因。一些目标或优势可能无法通过本文描述的实现方式实现。从而,例如,某些实现方式可以以实现或优化本文教导的一个优点或一组优点而不实现或优化本文教导或建议的其他目标或优点的方式操作。
[0121]
在一个示例实现方式中,附图的电路可被实现在关联的电子设备的板上。该板可以是一般的电路板或者主板,该电路板或主板容纳电子设备的内部电子系统的各种组件,并且进一步为其他外设提供连接器。更具体而言,该板可以提供电气连接,系统的其他组件可以通过这些电气连接进行电气通信。任何处理器(包括数字信号处理器、微处理器和支持性芯片组)和计算机可读的非暂态存储器元件可以基于配置、处理需求和计算机设计耦合到该板。其他组件,例如外部存储装置、传感器、用于音频/视频显示的控制器以及外围设备,可以作为插件卡经由线缆被附接到该板,或者被集成到该板本身之中。在各种实现方式中,本文描述的功能可以以仿真形式实现为在一个或多个可配置(例如,可编程)元素内运行的软件或固件,这些元素被安排在支持这些功能的结构中。提供仿真的软件或固件可被提供在一个或多个非暂态计算机可读存储介质上,包括允许一个或多个处理器执行这些功能的指令。
[0122]
在另一个示例实现方式中,附图中的电路可被实现为独立的模块(例如,具有被配
置为执行特定的应用或功能的关联组件和电路的设备),或者作为插件模块被实现到电子设备的专用硬件中。
[0123]
本公开的实现方式可以很容易地被包括在片上系统(system-on-chip,soc)封装中。soc代表集成电路(integrated circuit,ic),它将计算机或其他电子系统的组件集成到一个芯片中。soc可包含数字、模拟、混合信号,并且经常包含射频功能,这些功能可以在一个芯片衬底上提供。其他实现方式可包括多芯片模块(multi-chip-module,mcm),其中有多个单独的ic位于一个电子封装内,并且通过电子封装进行交互。在各种其他实现方式中,处理器可以被实现在专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)、可编程阵列逻辑(programmable array logic,pal)、通用阵列逻辑(generic array logic,gal)以及其他半导体芯片中的一个或多个硅芯中。
[0124]
本文概述的规格、尺寸和关系(例如,处理器和逻辑操作的数目)是为了举例和教导的非限制性目的而提供的。这样的信息可以有很大的变化。例如,可以对组件的安排进行各种修改和改变。因此,应从说明意义而不是限制意义上来看待说明书和附图。
[0125]
在本文提供的众多示例中,为了清晰和举例,按照两个、三个、四个或者更多的电气组件来描述了交互。可以以任何方式合并该系统。沿着类似的设计替换,附图中图示的组件、模块和元件可以在本公开的范围内按各种可能的配置被组合。在某些情况下,通过参考有限数目的电气元件,可能更容易描述给定的一组流程的一个或多个功能。附图及其教导的电路是容易缩放的,并且可以适应许多组件,以及更复杂/精密的安排和配置。因此,提供的示例并不限制可能被应用到众多其他体系结构的电路的范围或者约束该电路的教导。
[0126]
在本公开中,提及被包括在“一个实现方式”、“示例实现方式”、“一实现方式”、“另一实现方式”、“一些实现方式”、“各种实现方式”、“其他实现方式”、“选定实现方式”、“特定实现方式”、“替换实现方式”等等中的各种特征(例如,元素、结构、模块、组件、操作、特性,等等),是打算意指任何这种特征被包括在本公开的一个或多个实现方式中,并且可能被结合或者可能不一定被结合在相同实现方式中。一些操作可以被酌情删除或省略,或者这些操作可以被大幅地修改或改变。此外,这些操作的时机也可以被大幅更改。先前的操作流程是为了举例和论述而提供的。本文描述的实现方式提供了灵活性,因为可以提供任何适当的安排、时间顺序、配置和定时机制。
[0127]
示例
[0128]
示例a1是一种用于计算设备的通信总线的功率管理的方法,该方法包括接收对于所述通信总线上的数据的传送的请求;至少部分基于所述请求确定所述传送的方向;至少部分基于所述请求确定所述传送的数据的数量;至少部分基于所述传送的方向和数据的数量为所述通信总线的通道确定功率状态;并且为所述通信总线的通道设置所述功率状态。
[0129]
在示例a2中,如示例a1所述的主题可选地可以包括至少部分基于所述请求确定所述传送的时间段。
[0130]
在示例a3中,如示例a2所述的主题可选地可以包括所述通信总线的通道的功率状态至少部分基于所述传送的时间段。
[0131]
在示例a4中,如示例a1-a3中的任一项所述的主题可选地可以包括经由所述通信总线的通道执行所述传送。
[0132]
在示例a5中,如示例a1-a4中的任一项所述的主题可选地可以包括为所述通信总线的通道计算唤醒或休眠启动时间。
[0133]
在示例a6中,如示例a5所述的主题可选地可以包括在所述唤醒或休眠启动时间唤醒或休眠所述通信总线的通道。
[0134]
在示例a7中,如示例a1-a6中的任一项所述的主题可选地可以包括确定所述传送是由所述计算设备的中央处理器单元还是由外围设备驱动的。
[0135]
示例a8是一种装置,包括用于执行如示例a1-a7中的任一项的主题的装置。
[0136]
示例a9是一种包括代码的机器可读介质,所述代码当被执行时,使得机器执行如示例a1-a7中的任一项所述的主题。
[0137]
示例b1是一种编码有指令的非暂态计算机可读介质,所述指令当被计算机执行时,使得所述计算机执行一种方法,该方法包括:接收对于所述计算机的通信总线上的数据的传送的请求;至少部分基于所述请求确定所述传送的方向;至少部分基于所述请求确定所述传送的数据的数量;至少部分基于所述传送的方向和数据的数量为所述通信总线的通道确定功率状态;并且为所述通信总线的通道设置所述功率状态。
[0138]
在示例b2中,如示例b1所述的主题可选地可以包括所述方法还包括至少部分基于所述请求确定所述传送的时间段。
[0139]
在示例b3中,如示例b2所述的主题可选地可以包括所述通信总线的通道的功率状态至少部分基于所述传送的时间段。
[0140]
在示例b4中,如示例b1-b3中的任一项所述的主题可选地可以包括所述方法还包括经由所述通信总线的通道执行所述传送。
[0141]
在示例b5中,如示例b1-b4中的任一项所述的主题可选地可以包括所述方法还包括为所述通信总线的通道计算唤醒或休眠启动时间。
[0142]
在示例b6中,如示例b5所述的主题可选地可以包括所述方法还包括在所述唤醒或休眠启动时间唤醒或休眠所述通信总线的通道。
[0143]
在示例b7中,如示例b1-b6中的任一项所述的主题可选地可以包括所述方法还包括确定所述传送是由所述计算机的中央处理器单元还是由外围设备驱动的。
[0144]
示例c1是一种用于计算设备的通信总线的功率管理的装置,该装置包括存储器,来包括指令;以及处理器,该处理器被配置为执行所述指令以接收对于所述通信总线上的数据的传送的请求;至少部分基于所述请求确定所述传送的方向;至少部分基于所述请求确定所述传送的数据的数量;至少部分基于所述传送的方向和数据的数量为所述通信总线的通道确定功率状态;并且为所述通信总线的通道设置所述功率状态。
[0145]
在示例c2中,如示例c1所述的主题可选地可以包括所述处理器还被配置为执行所述指令以至少部分基于所述请求确定所述传送的时间段。
[0146]
在示例c3中,如示例c2所述的主题可选地可以包括所述通信总线的通道的功率状态至少部分基于所述传送的时间段。
[0147]
在示例c4中,如示例c1-c3中的任一项所述的主题可选地可以包括所述处理器还被配置为执行所述指令以经由所述通信总线的通道执行所述传送。
[0148]
在示例c5中,如示例c1-c4中的任一项所述的主题可选地可以包括所述处理器还被配置为执行所述指令以为所述通信总线的通道计算唤醒或休眠启动时间。
[0149]
在示例c6中,如示例c5所述的主题可选地可以包括所述处理器还被配置为执行所述指令以在所述唤醒或休眠启动时间唤醒或休眠所述通信总线的通道。
[0150]
在示例c7中,如示例c1-c5中的任一项所述的主题可选地可以包括所述处理器还被配置为执行所述指令以确定所述传送是由所述计算机的中央处理器单元还是由外围设备驱动的。
[0151]
示例c8是一种计算设备,包括如示例c1-c7中的任一项所述的主题。
[0152]
示例d1是一种用于计算设备的通信总线的功率管理的装置,该装置包括用于存储指令的装置;以及用于执行所述指令以进行以下步骤的装置:接收对于所述通信总线上的数据的传送的请求;至少部分基于所述请求确定所述传送的方向;至少部分基于所述请求确定所述传送的数据的数量;至少部分基于所述传送的方向和数据的数量为所述通信总线的通道确定功率状态;并且为所述通信总线的通道设置所述功率状态。
[0153]
在示例d2中,如示例d1所述的主题可选地可以包括所述用于执行的装置至少部分基于所述请求确定所述传送的时间段。
[0154]
在示例d3中,如示例d2所述的主题可选地可以包括所述通信总线的通道的功率状态至少部分基于所述传送的时间段。
[0155]
在示例d4中,如示例d1-d3中的任一项所述的主题可选地可以包括所述用于执行的装置经由所述通信总线的通道执行所述传送。
[0156]
在示例d5中,如示例d1-d4中的任一项所述的主题可选地可以包括所述用于执行的装置为所述通信总线的通道计算唤醒或休眠启动时间。
[0157]
在示例d6中,如示例d5所述的主题可选地可以包括所述用于执行的装置在所述唤醒或休眠启动时间唤醒或休眠所述通信总线的通道。
[0158]
在示例d7中,如示例d1-d5中的任一项所述的主题可选地可以包括所述用于执行的装置确定所述传送是由所述计算机的中央处理器单元还是由外围设备驱动的。
[0159]
示例d8是一种计算设备,包括如示例d1-d7中的任一项所述的主题。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献