支持图形处理单元频率的动态调整的方法和装置的制造方法
【专利摘要】公开的方法支持图形处理单元(GPU)频率的动态调整。根据一个实施例,程序包括工作负荷以至少部分在数据处理系统的GPU上执行。响应于程序被调用用于执行,自动找回程序的预先确定的存储器/计算比率。存储器/计算比率表示在程序内的存储器访问相对于在程序内的计算操作的比率。此外,基于程序的预先确定的存储器/计算比率自动调整GPU的频率。例如,如果预先确定的存储器/计算比率相对高,则可以将GPU设定到相对低的频率,或如果该预先确定的比率相对低,则设定到相对高的频率。在自动调整GPU的频率之后,程序可至少部分在GPU上执行。描述和要求保护了其他实施例。
【专利说明】
支持图形处理单元频率的动态调整的方法和装置
技术领域
[0001] 本文描述的实施例一般涉及数据处理,并且特别涉及支持图形处理单元频率的动 态调整的方法和装置。
【背景技术】
[0002] 常规的数据处理系统可以包括至少一个中央处理单元(CPU)和至少一个图形处理 单元(GPU) XPU和GPU可以驻留在同一芯片上,或它们可以驻留在由一个或多个总线连接的 分开的芯片上。包含至少一个CPU和至少一个GPU的单个芯片可以被称为加速处理单元、先 进处理单元、或者APU。在数据处理系统中的GPU可以在与CPU不同的频率处操作。
[0003] 如在对于"动态频率按比例缩放"的维基百科条目表示的,电路的稳定操作所需的 电压是由该电路被计时所处的频率确定的,并且如果该频率也降低,则减少所需的电压可 以是可能的。
[0004] 本公开描述了用于动态地调整GPU的频率和电压的方法和装置。数据处理系统可 以使用所公开的技术来实现比常规数据处理系统更加节能的操作。
【附图说明】
[0005] 图1是描绘了用于编译和执行程序的示例过程的框图。
[0006] 图2是具有用于动态地调整GPU频率的特征的示例数据处理系统的框图。
[0007] 图3是用于与编译程序结合生成用于程序的存储器/计算比率的示例过程的流程 图。
[0008] 图4是用于动态调节GPU频率的示例过程的流程图。
【具体实施方式】
[0009] 在数据处理系统中执行的程序可以被认为是内核或工作负荷。在GPU上的工作负 荷可能是受计算约束或受存储器约束。受计算约束的工作负荷可能主要集中于执行数学算 法,其性能可能依赖于GPU的性能。因此,对于受计算约束的工作负荷,增加 GPU频率可以导 致显著增加的性能(例如,显著更快的执行)。受存储器约束的工作负荷可能主要集中在存 储器访问,并且其性能可能被存储器访问带宽高度地限制。因此,对于受存储器约束的工作 负荷,一旦存储器访问带宽已经被满足,增加 GPU频率将导致少许(如果有的话)的性能改 进。相应地,对于受存储器约束的工作负荷,增加 GPU频率可能产生递减回报。因此,对于受 存储器约束的工作负荷,增加 GPU频率可能引起能源消耗上的显著增加而不产生任何显著 性能改进。
[0010] 例如,对于具有从400兆赫(MHz)至1150 MHz可调整的频率的GPU,受计算约束的工 作负荷可以随着GPU的频率从最小频率增大到最大频率获得在性能上基本上线性的增加。 与此相反,受存储器约束的工作负荷可以随着频率从400MHz调整至700MHz获得在性能上的 增加,但随着频率被调整到高于700MHz,获得少许或没有获得在性能上的进一步增加。因 此,为了最大化效率,将期望的是对于受存储器约束的工作负荷,设定GPU频率处于或低于 700MHz〇
[0011] 本公开描述了用于动态地调整GPU频率的方法和装置。在一个实施例中,数据处理 系统基于预先确定的存储器/计算比率,动态地调整GHJ频率和电压。
[0012] 为了本公开的目的,存储器/计算比率是标识在程序中的存储器访问操作相对于 在程序中的计算操作的数目、流行性、或重要性的值。因此,如果第一程序比第二程序花费 更多的时间执行存储器访问操作,则第一程序将具有更高的存储器/计算比率。同样,如果 两个程序具有相同数目的计算操作,但是这些程序中的一个具有比其它程序更多的存储器 访问操作,则具有更多存储器访问操作的程序将通常具有较高的存储器/计算比率。
[0013] 在一个实施例中,运行时间管理器找回用于至少部分在GPU上执行的程序的预先 确定的存储器/计算比率。运行时间管理器然后基于预先确定的存储器/计算比率动态调整 GPU的频率。尤其是,如果程序具有相对高的存储器/计算比率,则运行时间管理器可以将 GPU设定到相对低的频率;并且如果程序具有相对低的存储器/计算比率,则运行时间管理 器可以将GPU设定到相对高的频率。运行时间管理器然后启动程序以至少部分在GHJ中执 行。
[0014] 因此,对于将要花费显著量的时间等待存储器访问的程序,运行时间管理器可以 将GHJ设定到相对低的频率和相对低的电压,从而降低功耗而不显著降低性能。并且对于将 要花费少许时间到没有花费时间等待存储器访问的程序,运行时间管理器可以将GPU设定 到相对高的频率和相对高的电压,从而当该增加将导致显著更好的性能时增加了功耗。
[0015] 替换实施例可以使用逆方法,其中用于存储器访问操作的因子出现在分母中,而 不是在分子中(例如,计算/存储器比率,替代存储器/计算比率)。为了本公开的目的,除非 上下文明确要求,否则术语"存储器/计算比率"应被理解为覆盖标识程序中的存储器访问 操作相对于程序中的计算操作的比例的任何值。类似地,当本公开指"高"的存储器/计算比 率时,该公开是指表明该程序具有存储器访问操作相对于计算操作的高比例的值或测量, 即使"存储器/计算比率"测量可以具有相对小的数值(例如,当用于存储器访问操作的因子 出现在分母中时)。
[0016] 为了本公开的目的,"相对低"的GPU频率是比GPU的最大频率低并且消耗比最大频 率显著少能量的频率,而"相对高"的GPU频率是比GPU的最小频率高并且消耗比最小频率显 著多能量的频率。
[0017]类似地,"相对高"的存储器/计算比率意味着程序花费比计算操作多的时间执行 存储器访问操作,而"相对低"的存储器/计算比率意味着程序花费比计算操作少的时间执 行存储器访问操作。
[0018] 如下面更详细描述的,根据一个实施例,编译器自动确定当编译器将用于目标程 序的源代码编译成结果代码时用于目标程序的存储器/计算比率。根据另一实施例,存储 器/计算比率是基于在目标程序的测试执行期间由软件分析器收集的信息来确定的。根据 另一实施例,存储器/计算比率是基于在目标程序的测试执行期间由硬件性能计数器收集 的信息来确定的。
[0019] 图1是用于编译程序并至少部分地在GPU上执行该程序的示例过程的框图。为了本 公开的目的,被编译和执行的程序被称为目标程序。目标程序可以以多种不同版本存在。例 如,它可以开始作为源代码,然后其可被编译成结果代码。然后结果代码可以被转换成可执 行代码。相应地,目标程序的一个版本可以被称为程序源代码20,另一版本可以被称为程序 结果代码24,以及另外一个版本可以被称为程序可执行代码。程序结果代码24还可以被称 为虚拟二进制程序。
[0020] 在图1的实施例中,处理设备50使用编译器20将用于目标程序的程序源代码20转 换为程序结果代码24。此外,如在下面关于图3更详细所述,当编译器22处理程序源代码20 时,编译器22计算或确定用于目标程序的存储器/计算比率26。编译器22将该存储器/计算 比率26记录在程序结果代码24之内。
[0021] 在图1的实施例中,一个处理设备50将程序源代码20编译为程序结果代码24,然后 另一处理设备40获得并执行程序结果代码24。在其他实施例中,然而,相同的处理设备可以 被用于编译目标程序和用于执行目标程序。
[0022]在图1的实施例中,编译器22可以是在处理设备50上运行的GPU编程框架或媒体开 发框架(MDF)的一部分。软件开发人员可以使用MDF创建应用28,其包括目标程序。例如,应 用28可以是媒体播放器应用,并且目标程序可以是用于应用28的视频子例程。该应用的程 序结果代码(包括目标程序的程序结果代码24)然后可以被输送到处理设备40,并且在处理 设备40处的终端用户然后可以使用目标程序用于其意图的目的。
[0023]图2是具有用于动态地调整GPU频率的特征的示例数据处理系统的框图。在图2中, 编译程序源代码20的处理设备被称为远程处理设备50,而执行程序结果代码24的处理设备 被称为本地处理设备40~或者简单地称为处理设备40。处理设备40可以通过任何合适的存 储介质或媒介、通过任何合适的通信介质或媒介或存储和通信介质的任何合适的组合来获 得程序结果代码24。例如,处理设备40可以经由光盘,闪存驱动器等获得程序结果代码24。 可替换地,处理设备40可以通过广域网(WAN)12,例如因特网,或者通过局域网(LAN)从远程 处理设备50找回程序结果代码24。本地处理设备40和远程处理设备50可以共同地称为分布 式数据处理系统10。
[0024] 在一个实施例中,处理设备40使用程序结果代码24作为应用28的部分。例如,如上 面所指出的,应用28可以是媒体播放器应用,并且程序结果代码24可以实施用于应用28的 视频子例程。例如,程序结果代码24可以实施运动图像编码组(MPEG)视频解码器。可替换 地,应用28可以是计算机辅助设计(CAD)应用,而程序结果代码24可以实施用于CAD应用的 数学函数库,可能包括用于处理矢量、矩阵等的函数。其他类型的应用、子例程等可以在其 他实施例中使用。
[0025]再次参照图1,应用28和程序结果代码24可以在中间表示或版本中实施(例如,作 为字节码),并且本地处理设备40可以使用运行时间管理器30来执行应用28(包括程序结果 代码24 )。例如应用28的组件也可以被称为主机代码。
[0026]当执行主机代码,例如应用28时,运行时间管理器30可以使用准时制(JIT)翻译器 32以将字节码转换成可执行代码。可执行代码也可以被称为汇编代码或二进制代码。JIT翻 译器32可以包括JIT编译器、解析器,和/或用于执行应用28的任何其它适当的逻辑。运行 时间管理器30可以被实施为动态链接库、共享库,或任何其他合适的构造。另外,运行时间 管理器30可以暴露一个或多个应用编程接口(API)用于应用调用。运行时间管理器30、JIT 翻译器32和相关组件可以被共同地称为管理的运行时间环境(MRTE)38。
[0027]在一个实施例中,当在处理设备40处的终端用户启动应用28时,运行时间管理器 30使用JIT翻译器32以生成用于应用28的可执行代码,并且运行时间管理器30可以分派该 可执行代码用于在CPU 62上执行。同样地,当应用28调用或加载目标程序时,运行时间管理 器30可使用JIT翻译器32以生成用于目标程序的可执行代码。然而,运行时间管理器30可以 分派目标程序的可执行代码用于在GPU 36上执行,而不是在CPU 62上执行。换言之,由目标 程序的运行时间管理器30产生的可执行代码的一些或全部可以包括将在处理设备40内的 一个或多个GPU 36上执行的操作。在一个实施例中,运行时间管理器30调用操作系统60的 GHJ驱动器34以使这样的操作由GPU 36处理。
[0028]然而,如在下面关于图4更详细描述的,在GPU 36上执行目标程序之前,运行时间 管理器30可以动态地调整GPU 36的频率和电压。例如,当应用28调用或请求程序结果代码 24时,运行时间管理器30可以自动地考虑与程序结果代码24相关联的存储器/计算比率26, 并且运行时间管理器30然后可以基于存储器/计算比率26动态调整GPU 36的频率和电压。 [0029] 在一个实施例中,运行时间管理器30配备有频率映射表(FMT)70,其将不同存储 器/计算比率与对应的GPU频率链接。例如,FMT 70可以根据逆关系将存储器/计算比率与相 应的GPU频率链接,因为逐渐更高的存储器/计算比率被链接到逐渐更低的GPU频率,而更低 的存储器/计算比率被链接到更高的GHJ频率。例如,在一个实施例中,FMT 70可以包含诸如 在下面表T1中所示的数据:
[0030] 在表T1,在"存储器/计算比率"的列中的条目表示存储器/计算比率的逐渐更高的 范围。
[0031] FMT 70可以基于已经在在多种不同的硬件平台上在多种不同的GPU频率下以实际 和/或人为的工作负荷运行的实验。来自那些实验的数据可以被用于绘制在存储器/计算比 率、频率、和性能效率之间的关系。这样的分析的结果可以用于建表以针对用于许多不同的 平台的许多不同的存储器/计算比率指定最优高效的GPU频率。用于FMT的条目也可以基于 存储器频率、存储器带宽,和其它因素。
[0032]在替换实施例中,代替使用FMT,运行时间管理器可以使用不同的技术,以确定用 于特定程序的合适GPU频率。例如,运行时间管理器可以被编程,以识别一个或多个不同的 预先确定的类型的工作负荷。运行时间管理器还可以被编程以使用特定的频率用于每个不 同类型的工作负荷。当目标程序被调用时,运行时间管理器可确定将由目标程序执行的工 作负荷的类型,并且运行时间管理器可以相应地设定GHJ频率。
[0033] 处理设备40可以包括多种硬件和软件资源。例如,在图2的实施例中,处理设备40 包括至少一个APU 42,和APU 42包括至少一个CPU 62和至少一个GPU 36 JPU 42还可以包 括各种硬件性能计数器78。处理设备40还包括随机访问存储器(RAM)44,硬盘驱动器(HDD) 46,和与CPU 62和/或GPU 36通信的网络端口48。附加地或替换地,处理设备40可以包括其 他类型的存储设备(例如,闪速存储器)、其他输入/输出(I/O)端口、多处理器和/或其它组 件。远程处理设备50的组成可以与处理设备40的组成相同或类似。
[0034]如上所指出的,GPU驱动器34可以是操作系统60的部分。操作系统60、应用28、MRTE 38以及软件分析器76可以被存储在HDD 46中并且被复制到RAM 44用于执行。
[0035]图3是用于与编译程序结合生成用于程序的存储器/计算比率的示例过程的流程 图。如在块110所示,该过程开始于编译器22静态分析程序源代码20以确定有多少计算操作 和多少存储器操作是由目标程序使用的。例如,编译器22可使用控制流分析来估计计算操 作的数目和存储器操作的数目。例如,在控制流分析中,更多权重或计数可被指派用于嵌套 循环内部的操作。
[0036]如块112所示,编译器22然后基于程序源代码20的分析结果来确定用于目标程序 的存储器/计算比率26。例如,编译器22可生成用于非常受存储器约束的程序的10:1的存储 器/计算比率,用于稍微受存储器约束的程序的2:1,用于稍微受计算约束的程序的1:2,以 及用于非常受计算约束的程序的1:10。再次参照表T1,在一个实施例中,R1 = 1:10,R2 = 1:2,R3 = 2:1,和R4 = 10:1。
[0037]如在块114所示的,编译器22还基于程序源代码20生成用于目标程序的程序结果 代码24。如上所指出的,在一个实施例中,程序结果代码24使用目标程序的字节码表示。如 在块116所示,编译器22存储与程序结果代码24-起的所生成的存储器/计算比率26。例如, 程序结果代码24的文件格式规范可以提供字段来保存工作负荷信息,如名称,大小,存储 器/计算比率,和其它必要的信息;以及编译器22可以将存储器/计算比率26加载到存储器/ 计算比率字段中。
[0038]然后图3的过程可以结束。
[0039]在其他实施例中,如处理设备50或处理设备40的设备可使用来自软件分析器76 和/或来自硬件性能计数器78的反馈来计数或跟踪存储器和计算操作,并且生成对应的存 储器/计算比率。例如,目标程序的开发者可在处理设备50的MRTE内执行程序源代码20-次 或多次,其中软件执行分析器监视执行并且对存储器操作和总操作计数。可替换地,开发者 可以使用硬件性能计数器监视执行并且计数或跟踪在程序源代码20的测试执行期间的存 储器操作和总操作。然后开发者可以基于来自目标程序的测试执行或执行的数据,计算存 储器/计算比率26。当存储器和计算操作被跟踪时,跟踪器可考虑计算操作的数目和存储器 操作的数目。附加地或替换地,跟踪器可考虑执行计算操作花费的时间量和执行存储器操 作花费的时间量。然后所生成的存储器/计算比率可以被传递给运行时间管理器。
[0040]图4是用于动态调节GPU频率的示例过程的流程图。在一个实施例中,处理设备40 使用所图示的过程,以优化目标程序的执行效率。该过程可以以运行时间管理器30执行应 用28开始,如在块210所示。如在块220所示,运行时间管理器30可接着确定应用28是否正在 调用目标程序(或具有用于引导GPU频率的动态调整的预先确定的存储器/计算比率的任何 其他程序)。如果应用28正在调用目标程序的程序结果代码24,则运行时间管理器30从程序 结果代码24找回存储器/计算比率26,如在块222所示。如在块224所示,运行时间管理器30 然后使用FMT 70基于存储器/计算比率26自动确定用于目标程序的最优GPU频率。
[0041 ]如在块226所示,运行时间管理器30然后根据由FMT 70标识的最优频率动态和自 动调整GPU 36的频率。在一个实施例中,运行时间管理器30通过发出一个或多个GPU命令到 GPU 36,可能经由GPU驱动器34,调整GPU 36的频率。附加地或替换地,运行时间管理器30可 以直接写入GPU 36的频率控制寄存器。在任意一种情况下,GPU 36可接着通过立即调整其 频率和电压做出响应。
[0042]用于基于存储器/计算比率26和FMT 70调整GPU 36的频率的运行时间管理器内的 逻辑可以被称为GHJ频率调节器(GFR)72。运行时间管理器30可以使用GFR 72基于在程序结 果代码24中的预先确定的存储器/计算比率26和预先确定的频率映射表70来管理或控制 GPU 36的频率。
[0043] 如在块228所示,在运行时间管理器30已调整GPU 36的频率之后,运行时间管理器 30启动用于目标程序的程序结果代码24。然后,目标程序可以至少部分在GPU 36上运行。 [0044]然而,再次参考方块220,如果应用28不调用具有预先确定的存储器/计算比率的 程序,运行时间管理器30可以继续执行应用28,而不调整GPU 36的频率,如由返回到块210 的箭头所指示的。
[0045]附加地或替换地,应用28可以包括其自己的GFR 74,和代替在运行时间管理器30 中使用GFR 72,应用28可以使用GFR 74来基于用于该程序的存储器/计算比率自动调整用 于目标程序的GPU频率。例如,应用28可以响应于对目标程序的调用自动地找回用于目标程 序的存储器/计算比率,并且应用28可接着基于该存储器/计算比率使用GFR 74自动调整 GPU的频率。在一个实施例中,运行时间管理器30提供了用于调整GPU 36的频率的API,并且 GFR 74使用该API来调整GPU频率。
[0046]附加地或替换地,运行时间管理器30可以使用(a)基于软件的程序执行分析器,例 如软件分析器76和/或(b)基于硬件的性能计数器78来动态确定用于目标程序的存储器/计 算比率,并且运行时间管理器30可以基于动态地确定的存储器/计算比率自动地调整用于 目标程序的GPU频率。例如,在目标程序已被执行之后,运行时间管理器可以在运行时间期 间询问软件分析器76和/或硬件性能计数器78。作为响应,软件分析器76和/或硬件性能计 数器78可以返回指示用于目标程序的实际存储器/计算比率的反馈。基于该反馈,并且基于 FMT或其它合适的映射数据,运行时间管理器30可以自动地调整在其上执行目标程序的GPU 的频率。这种动态的确定和调整可能比预先确定的(或估计的)存储器/计算比率更准确。相 应地,即使目标程序可以具有预先确定的存储器/计算比率,运行时间管理器也可以向用于 目标程序的动态确定的存储器/计算比率给予优先。
[0047] 如已经描述的,在处理设备中的运行时间管理器可以自动地使用用于目标程序的 预先确定的存储器/计算比率,以确定用于执行目标程序的高效或最优GHJ频率。运行时间 管理器然后可以在GPU上执行目标程序之前相应地自动调整GPU的频率和电压。因此,该处 理设备可以比常规的处理设备更高效地操作。
[0048]附加地或替换地,运行时间管理器可以动态地确定用于目标程序的存储器/计算 比率,以及运行时间管理器可以使用该存储器/计算比率,以确定高效的或最优的GPU频率 用于执行目标程序。
[0049] 其他实施例也已经被描述。
[0050] 通过根据本教导动态调整GPU频率和电压,数据处理系统可以实现比常规的数据 处理系统更节能的操作。
[0051]根据在本文中描述和图示的原理和示例实施例,将认识到,可以在不脱离那些原 理的情况下在排列和细节上修改图示的实施例。另外,前述的讨论已经集中于特定的实施 例,但其它配置是预期的。例如,方面所公开的实施例通常可组合以形成附加的实施例。相 应地,诸如"实施例"、"图X的实施例"、"一个实施例"、"另一实施例"等的表达通常应该被理 解为描述实施例的可能性,而不是将本发明限于特定实施例配置。相应地,例如提及一个实 施例的短语的不同实例一般应理解为提及相同的实施例以及不同的实施例,以及"在一个 实施例中"的短语应通常被理解为意指"在至少一个实施例中"。
[0052]任何合适的操作环境和编程语言(或操作环境和编程语言的组合)可以被用来实 施本文中所描述的组件。如上所指示的,本教导可以被有利使用在许多不同种类的数据处 理系统中。示例的数据处理系统包括但不限于,分布式计算系统,超级计算机,高性能计算 系统,计算集群,大型计算机,小型计算机,客户端-服务器系统,个人计算机(PC),工作站, 服务器,便携式计算机,膝上型计算机,平板计算机,个人数字助理(PDA),电话,手持设备, 娱乐设备诸如音频设备,视频设备,音频/视频设备(例如,电视机和机顶盒),车辆用处理系 统,以及用于处理或传送信息的其他设备。相应地,除非另有明确规定或由上下文要求,对 任何特定类型的数据处理系统(例如,移动设备)的引用应被理解为也包括其他类型的数据 处理系统。而且,除非另有清楚规定,被描述为耦合到彼此、与彼此通信、响应于彼此等的组 件不需要是连续彼此通信,并且不需要直接耦合到彼此。同样地,当一个组件被描述为从另 一个组件接收数据或将数据发送到另一个组件时,该数据可通过一个或多个中间组件来发 送或接收,除非另有清楚规定。此外,数据处理系统的一些组件可以被实施为适配器卡,其 具有用于与总线通信的接口(例如,连接器)。可替换地,设备或组件可被实施为嵌入式控制 器,使用诸如可编程或不可编程逻辑器件或阵列、专用集成电路(ASIC)、嵌入式计算机、智 能卡等的组件。为了本公开的目的,术语"总线"包括可以由两个以上的设备共享的路径,以 及点对点的路径。
[0053]本公开内容可能涉及指令,函数,程序,数据结构,应用程序,微代码,配置设置,以 及其他种类的数据。如上所述,当数据是由机器或设备访问时,机器或设备可以通过执行任 务、定义抽象数据类型或低级硬件上下文,和/或执行其它操作做出响应。例如,数据存储装 置,RAM和/或快闪存储器可包括各种指令集,其在被执行时执行各种操作。这样的指令集一 般可以被称为软件。此外,术语"程序"一般可以用于覆盖广泛范围的软件构造,包括应用、 例程、模块、驱动程序、子程序、进程和其它类型的软件组件。此外,在上文被描述为在一个 示例实施例中驻留在特定设备上的应用和/或其他数据可在其他实施例中,驻留在一个或 多个其他设备上。并且如在一个示例实施例中在一个特定的设备上所执行的上面所述的计 算操作可以在其他实施例中由一个或多个其他设备执行。
[0054]还应该理解的是,此处所描绘的硬件和软件组件表示是合理自我包含的功能元 件,使得每个可基本上独立于其他被设计、构造或更新。在替换实施例中,组件中的许多可 以被实施为硬件、软件、或硬件和软件的组合,用于提供本文所述和所示的功能。例如,替换 实施例包括用于执行本发明的操作的机器可访问介质编码指令或控制逻辑。这样的实施例 也可以被称为程序产品。这样的机器可访问介质可以包括,但不限于,有形存储介质,诸如 磁盘、光盘、RAM、只读存储器(ROM)等,以及处理器,控制器,和包括RAM、R0M和/或其他存储 设施的其他组件。为了本公开的目的,术语"ROM"可以一般用来指代非易失性存储器设备, 例如可擦可编程ROM(EPROM),电可擦除可编程ROM(EEPROM),闪速R0M,闪速存储器等。在一 些实施例中,一些或所有用于实施所描述的操作的控制逻辑可在硬件逻辑来实施(例如,作 为集成电路芯片、可编程门阵列(PGA)、ASIC等的一部分)。在一个实施例中,用于所有组件 的指令可以存储在一个非瞬态机器可访问介质中。在另一个实施例中,可以使用两个或更 多的非瞬态机器可访问介质用于存储用于组件的指令。例如,用于一个组件的指令可以存 储在一个介质中,并且用于另一组件的指令可以存储在另一个介质中。可替换地,用于一个 组件的指令的部分可被存储在一个介质中,以及用于该组件的指令的剩余部分(以及用于 其它组件的指令)可以存储在一个或多个其它介质中。指令还可以在分布式环境中使用,并 且可以用于由单或多处理器机器本地和/或远程地存储以用于访问。
[0055] 另外,虽然已经关于以特定序列执行的特定操作描述一个或多个示例过程,许多 修改可以应用到那些过程,以得到本发明的许多替换实施例。例如,替换实施例可以包括使 用比所有公开操作更少的操作的过程,使用附加操作的过程,以及其中在本文所公开的各 个操作被组合、细分、重新排列或以其他方式改变的过程。
[0056] 鉴于可从本文描述的示例实施例容易地得到的多种多样的有用的排列,该详细描 述旨在仅是说明性的,而不应被理解为限制覆盖的范围。
[0057]下面的示例涉及到另外的实施例。
[0058]示例A1是数据处理系统,具有对GPU频率的动态调整的支持。该数据处理系统包括 CPU、响应于该CPU的GPU、响应于CPU的机器可访问介质,以及在机器可访问介质中的数据, 其当由CPU访问时使数据处理系统能够执行特定的操作。那些操作包括:(a)响应于程序被 调用用于执行,自动找回用于程序的预先确定的存储器/计算比率,其中该程序包括工作 负荷以至少部分地在GPU上执行,并且其中预先确定的存储器/计算比率表示在程序内的存 储器访问相对于在程序内的计算操作的比率;和(b)基于用于程序的预先确定的存储器/计 算比率自动调整GPU的频率。
[0059] 示例A2包括示例A1的特征,并且操作还包括,在自动调整GPU的频率后,启动程序 来至少部分地在GPU上执行。
[0060] 示例A3包括示例A1的特征,并且基于用于程序的预先确定的存储器/计算比率自 动调整GPU的频率的操作包括:(a)如果用于程序的预先确定的存储器/计算比率相对高,则 将GHJ设定到相对低的频率;和(b)如果用于该程序的预先确定的存储器/计算比率相对低, 则将GPU设定到相对高的频率。示例A3还可以包括示例A2的功能。
[0061] 示例B1是用于动态地调整GPU的频率的方法。该方法包括:(a)响应于程序被调用 用于在具有GHJ的数据处理系统中执行,自动地找回用于程序的预先确定的存储器/计算比 率,其中该程序包括工作负荷以至少部分地在GPU上执行,以及其中预先确定的存储器/ 计算比率表示在程序内的存储器访问相对于在程序内的计算操作的比率;和(b)基于用于 程序的预先确定的存储器/计算比率自动调整GPU的频率。
[0062] 示例B2包括示例B1的特征。此外,该方法包括,在自动调整GPU的频率后,启动程序 来至少部分地在GPU上执行。
[0063]示例B3包括示例B1的特征。另外,基于用于程序的预先确定的存储器/计算比率 自动调整GPU的频率的操作包括:(a)如果用于程序的预先确定的存储器/计算比率相对高, 则将GPU设定到相对低的频率;和(b)如果用于该程序的预先确定的存储器/计算比率相对 低,则将GPU设定到相对高的频率。示例B3还可以包括示例B2的功能。
[0064]示例Μ包括示例B3的特征。此外,如果用于该程序的预先确定的存储器/计算比率 相对高,则将GHJ设定到相对低的频率的操作包括,如果用于该程序的预先确定的存储器/ 计算比率相对高,则自动减少GPU的电压电平。示例Μ还可以包括示例B2的特征。
[0065] 示例Β5包括示例Β1的特征。此外,该方法包括:使用将不同的存储器/计算比率映 射到相应的GPU频率的预先确定的映射,以识别与该程序的存储器/计算比率对应的GPU频 率。而且,基于用于程序的预先确定的存储器/计算比率自动调整GPU的频率的操作包括,基 于所识别的GHJ的频率调整GPU的频率。示例B5还可以包括示例B2至Μ中的任何一个或多个 的特征。
[0066] 示例Β6包括示例Β1的特征。此外,该程序的执行是通过运行时间管理器管理,并且 自动找回用于程序的存储器/计算比率的操作由运行时间管理器执行。示例Β5还可以包括 示例Β2至Β5中的任何一个或多个的特征。
[0067] 示例Β7包括示例Β1的特征。此外,该程序的执行是通过运行时间管理器管理,并且 由运行时管理器执行自动调整GPU的频率的操作。示例Β6还可以包括示例Β2至Β6中的任 何一个或多个的特征。
[0068] 示例B8包括示例B1的特征。此外,该方法包括:(a)确定用于该程序的存储器/计算 比率;和(b)在确定用于程序的存储器/计算比率后,与用于该程序的结果代码一起记录用 于程序的存储器/计算比率。示例B7还可以包括示例B2至B7中的任何一个或多个的特征。 [0069]示例CI是支持GPU频率的动态调整的方法。该方法包括(a )确定具有适合于在GPU 上执行的工作负荷的程序的存储器/计算比率;和(b)在确定程序的存储器/计算比率后,与 该程序的结果代码一起记录程序的存储器/计算比率。
[0070] 示例C2包括示例CI的特征。此外,该方法包括将程序的源代码编译成结果代码。而 且,在编译程序的同时自动执行确定该程序的存储器/计算比率的操作。
[0071] 示例D1是用于动态地调整GPU的频率的方法。该方法包括:(a)在数据处理系统的 GPU上执行程序;(b)在程序正在执行的同时获得程序的性能数据;(c)在该程序正在执行 的同时,基于所述性能数据确定该程序的存储器/计算比率,其中,存储器/计算比率表示在 程序内的存储器访问相对于在程序内的计算操作的比率;及(d)基于存储器/计算比率在该 程序正在执行的同时动态地调整GPU的频率。
[0072]示例D2包括示例D1的特征。此外,在程序正在执行的同时获得程序的性能数据的 操作包括来自由以下构成的组的至少一个操作:(a)从基于软件的分析器获得性能数据;和 (b)从至少一个硬件性能计数器获得性能数据。
[0073]示例E是包括用来支持GPU频率的动态调整的计算机指令的至少一个机器可访问 介质。该计算机指令响应于在数据处理系统上被执行,使数据处理系统能够执行根据示例 B1至B7、CI至C2和D1至D2中的任何一个或多个的方法。
[0074]示例F是具有用来支持GPU频率的动态调整的特征的数据处理系统。该数据处理系 统包括中央处理单元(CPU),响应于CPU的GPU,响应于CPU的至少一个机器可访问介质,和至 少部分地存储在至少一个机器可访问介质中的计算机指令。另外,响应于被执行,计算机指 令使数据处理系统能够执行根据示例B1至B7,CI至C2和D1至D2中的任何一个或多个的方 法。
[0075]示例G是具有用来支持GPU频率的动态调整的特征的数据处理系统。该数据处理系 统包括用于执行示例B1至B7、CI至C2和D1至D2中的任何一个或多个的方法的模块。
[0076]示例H1是用来支持GPU频率的动态调整的装置。该装置包括(a)非瞬态机器可访问 介质;和(b)在机器可访问介质中的数据,其当由具有GPU的数据处理系统访问时,使数据处 理系统能够执行各种操作。这些操作包括:(a)响应于程序被调用以用于在数据处理系统中 执行,自动找回程序的预先确定的存储器/计算比率,其中该程序包括工作负荷以至少部 分在GPU上执行,并且其中预先确定的存储器/计算比率表示在程序内的存储器访问相对于 在程序内的计算操作的比率;和(b)基于程序的预先确定的存储器/计算比率,自动调整GPU 的频率。
[0077] 示例H2包括示例H1的特征。而且,所述操作还包括,在自动调整GPU的频率后,启动 程序来至少部分地在GPU上执行。
[0078] 示例H3包括示例H1的特征。而且,基于程序的预先确定的存储器/计算比率,自动 调整GPU的频率的操作包括(a)如果程序的预先确定的存储器/计算比率相对高,则将GPU设 定到相对低的频率;和(b)如果该程序的预先确定的存储器/计算比率相对低,则将GPU设定 到相对高的频率。示例H3还可以包括示例H2的特征。
[0079] 示例H4包括示例H1的特征。而且,所述操作还包括使用将不同的存储器/计算比率 映射到相应的GPU频率的预先确定的映射,以识别与该程序的存储器/计算比率对应的GPU 频率。而且,基于程序的预先确定的存储器/计算比率自动调整GPU的频率的操作包括,基于 所识别的GPU的频率调整GPU的频率。示例H4还可以包括示例H2至H3中的任何一个或多个的 特征。
[0080] 示例H5包括示例H1的特征。而且,在机器可访问介质中的数据包括运行时间管理 器来管理程序的执行。而且,由运行时间管理器执行自动找回该程序的存储器/计算比率的 操作。示例H5还可以包括示例H2至H4中的任何一个或多个的特征。
[0081 ] 示例H6包括示例H1的特征。而且,在机器可访问介质中的数据包括运行时间管理 器来管理程序的执行。而且,由运行时间管理器执行自动调整GPU的频率的操作。示例H6还 可以包括示例H2至H5中的任何一个或多个的特征。
[0082]示例II是用来支持GPU频率的动态调整的装置。该装置包括(a)非瞬态机器可访问 介质;和(b)在机器可访问介质中的数据,其当由具有GPU的数据处理系统访问时,使数据处 理系统能够执行各种操作。那些操作包括:(a)在GPU上执行程序;(b)在程序正在执行的同 时获得程序的性能数据;(c)在该程序正在执行的同时,基于性能数据确定该程序的存储 器/计算比率,其中存储器/计算比率表示在程序内的存储器访问相对于在程序内的计算操 作的比率;及(d)在该程序正在执行的同时,基于存储器/计算比率,动态地调整GPU的频率。
[0083]示例12包括示例II的特征。而且,在程序正在执行的同时获得程序的性能数据的 操作包括来自由以下构成的组的至少一个操作:(a)从基于软件的分析器获得性能数据;和 (b)从至少一个硬件性能计数器获得性能数据。
【主权项】
1. 一种数据处理系统,具有对图形处理单元频率的动态调整的支持,该数据处理系统 包括: 中央处理单元(CRJ); 响应于该CRJ的图形处理单元(GRJ); 响应于该CRJ的机器可访问介质;以及 在机器可访问介质中的数据,其当由CHJ访问时使数据处理系统能够执行包括以下的 操作: 响应于程序被调用用于执行,自动找回程序的预先确定的存储器/计算比率,其中该程 序包括工作负荷以至少部分地在GPU上执行,并且其中该预先确定的存储器/计算比率表 示在程序内的存储器访问相对于在程序内的计算操作的比率;和 基于程序的预先确定的存储器/计算比率自动调整GPU的频率。2. 根据权利要求1所述的数据处理系统,其中所述操作还包括: 在自动调整GRJ的频率后,启动程序来至少部分地在GRJ上执行。3. 根据权利要求1所述的数据处理系统,其中基于程序的预先确定的存储器/计算比 率自动调整GPU的频率的操作包括: 如果程序的预先确定的存储器/计算比率相对高,则将GRJ设定到相对低的频率;和 如果程序的预先确定的存储器/计算比率相对低,则将GRJ设定到相对高的频率。4. 一种用于动态地调整图形处理单元的频率的方法,该方法包括: 响应于程序被调用用于在具有图形处理单元(GPU)的数据处理系统中执行,自动地找 回程序的预先确定的存储器/计算比率,其中该程序包括工作负荷以至少部分地在GPU上 执行,以及其中预先确定的存储器/计算比率表示在程序内的存储器访问相对于在程序内 的计算操作的比率;和 基于程序的预先确定的存储器/计算比率自动调整GPU的频率。5. 根据权利要求4所述的方法,还包括: 在自动调整GRJ的频率后,启动程序来至少部分地在GRJ上执行。6. 根据权利要求4所述的方法,其中基于程序的预先确定的存储器/计算比率自动调 整GPU的频率的操作包括: 如果程序的预先确定的存储器/计算比率相对高,则将GRJ设定到相对低的频率;和 如果程序的预先确定的存储器/计算比率相对低,则将GRJ设定到相对高的频率。7. 根据权利要求6所述的方法,其中如果程序的预先确定的存储器/计算比率相对高则 将GHJ设定到相对低的频率的操作包括: 如果程序的预先确定的存储器/计算比率相对高,则自动减少GRJ的电压电平。8. 根据权利要求4所述的方法,还包括: 使用将不同的存储器/计算比率映射到相应的GPU频率的预先确定的映射,以识别与该 程序的存储器/计算比率对应的GPU频率;并且 其中基于程序的预先确定的存储器/计算比率自动调整GHJ的频率的操作包括,基于所 识别的GPU频率调整GPU的频率。9. 根据权利要求4所述的方法,其中: 该程序的执行是通过运行时间管理器管理;并且 自动找回程序的存储器/计算比率的操作由运行时间管理器执行。10. 根据权利要求4所述的方法,其中: 该程序的执行是通过运行时间管理器管理,并且 由运行时间管理器执行自动调整GRJ的频率的操作。11. 根据权利要求4所述的方法,还包括: 确定该程序的存储器/计算比率;并且 在确定程序的存储器/计算比率后,与该程序的结果代码一起记录程序的存储器/计算 比率。12. -种用来支持图形处理单元频率的动态调整的方法,该方法包括: 确定具有适合于在图形处理单元(GPU)上执行的工作负荷的程序的存储器/计算比率; 和 在确定程序的存储器/计算比率后,与该程序的结果代码一起记录程序的存储器/计算 比率。13. 根据权利要求12所述的方法,还包括: 将程序的源代码编译成结果代码;以及 其中在编译程序的同时自动执行确定该程序的存储器/计算比率的操作。14. 一种用于动态地调整图形处理单元的频率的方法,该方法包括: 在数据处理系统的图形处理单元(GPU)上执行程序; 在该程序正在执行的同时获得程序的性能数据; 在该程序正在执行的同时,基于性能数据确定该程序的存储器/计算比率,其中,存储 器/计算比率表示在程序内的存储器访问相对于在程序内的计算操作的比率;以及 基于存储器/计算比率在该程序正在执行的同时动态地调整GHJ的频率。15. 根据权利要求14所述的方法,其中在该程序正在执行的同时获得程序的性能数据 的操作包括来自由以下构成的组的至少一个操作: 从基于软件的分析器获得性能数据;和 从至少一个硬件性能计数器获得性能数据。16. -种包括用来支持图形处理单元频率的动态调整的计算机指令的至少一个机器可 访问介质,其中该计算机指令响应于在数据处理系统上被执行,使数据处理系统能够执行 根据权利要求4-15中的任何一项所述的方法。17. -种具有用来支持图形处理单元频率的动态调整的特征的数据处理系统,该数据 处理系统包括: 中央处理单元(CRJ); 响应于CRJ的图形处理单元(GRJ); 响应于CPU的至少一个机器可访问介质;和 至少部分地存储在至少一个机器可访问介质中的计算机指令,其中该计算机指令响应 于被执行,使数据处理系统能够执行根据权利要求4-15中的任何一项所述的方法。18. -种具有用来支持图形处理单元频率的动态调整的特征的数据处理系统,该数据 处理系统包括: 用于执行权利要求4-15中的任何一项所述的方法的装置。
【文档编号】G06F9/44GK106030453SQ201480076435
【公开日】2016年10月12日
【申请日】2014年3月27日
【发明人】L.沈, G-Y.吕, Y.蒋
【申请人】英特尔公司