法律状态公告日
法律状态信息
法律状态
2014-09-17
授权
授权
2012-10-31
实质审查的生效 IPC(主分类):G06T1/60 申请日:20091216
实质审查的生效
2012-09-05
公开
公开
技术领域
本发明涉及在性能计数器的帮助下以图形流水线的方式调度命令。
背景技术
当前的离散图形卡通常包括用于计算顶点、几何图形和像素数据的若干处理核心。通常,若干个核心被群组成多核心(m-核心),而且每个m-核心通常与纹理单元配对。纹理单元耦合到向卡上的视频存储器提供接口的一个或多个存储控制器。离散图形卡的这些部件中的许多部件也可以存在于集成图形解决方案中。集成图形解决方案可以与芯片组集成或与中央处理单元集成。图形卡可以将包括像素、顶点和几何图形数据的图像数据划分成固定大小的块。图像数据的这些块之后在若干个图形处理m-核心和纹理单元中进行分布。另外,许多处理m-核心、纹理单元和存储控制器包括用于允许执行性能计算以确定这些器件的效率的若干个性能计数器。
附图说明
通过示例的方式示出本发明,并且本发明不受附图限制,其中类似的标号指代类似的元件,而且其中:
图1示出用于实施瓶颈灵敏型图形流水线调度架构的通用计算机系统的实施例。
图2示出用于实施瓶颈灵敏型图形流水线调度架构的通用计算机系统的另一实施例。
图3示出用于实施瓶颈灵敏型图形流水线调度架构的通用计算机系统的再一实施例。
图4示出用于实施瓶颈灵敏型图形流水线调度架构的计算机系统中的图形子系统的详细视图的实施例。
图5A-5C示出被划分成具有不同大小的块的屏幕图像的实施例。
图6是用于分析图形流水线瓶颈并调度适用于这种瓶颈的模式的过程的实施例的流程图。
图7是用于分析图形流水线瓶颈并动态地切换调度模式的过程的实施例的流程图。
具体实施例
描述了用于实施瓶颈灵敏型图形流水线调度架构的方法、设备和系统的实施例。
用于帮助调度图形流水线的逻辑位于计算机系统中。该逻辑收集从硬件性能计数器接收到的数据,并计算图形存储器或图形m-核心计算是否可能正在导致计算机系统的图形子系统的性能瓶颈。一旦执行了该计算并且已经确定了瓶颈,则该逻辑就能够改变正在从图形驱动器接收到的当前和未来绘制命令(draw command)的调度过程。调度绘制命令包括向要被显示的整个图像中的某些图像数据块(包括纹理数据、顶点数据和几何图形数据)分配图形m-核心和纹理单元。该图像数据被划分成具有特定像素大小(例如,8×8个像素、32×32个像素等)的块。改变块大小能够改变m-核心和视频存储器的效率。因此,一旦已经识别了瓶颈,图形m-核心和纹理单元就被调度以相应地操作更大或更小的数据块。
在下面的说明书和权利要求中对所公开技术的“一个实施例”或“实施例”的提及意味着结合该实施例描述的特定特征、结构或特性包括在所公开技术的至少一个实施例中。因此,说明书中各处出现的短语“在一个实施例中”不是必须都指代同一实施例。在下面的说明书和权利要求中,术语“包含”和“包括”及其衍生词可以被使用并意欲作为彼此的同义词。
图1示出用于实施瓶颈灵敏型图形流水线调度架构的通用计算机系统的实施例。
示出了计算机系统100。该计算机系统可以是台式计算机、服务器、工作站、膝上型计算机、手持设备、机顶盒、媒体中心、游戏操作台、集成系统(诸如车辆中的)或其他类型的计算机系统。在若干实施例中,计算机系统100包括中央处理单元(CPU)102。CPU 102可以是
CPU 102还可以包括用于存储由一个或多个核心使用的数据的高速缓存112。在不同的实施例中,可以以不同的方式来分配高速缓存。在不同的实施例中,高速缓存112可以是许多不同大小中的一种。例如,高速缓存112可以是8兆字节(MB)高速缓存、16MB高速缓存等。另外,在不同的实施例中,高速缓存可以是直接映射高速缓存、全关联高速缓存或多路组关联高速缓存。高速缓存可以包括在所有核心之间被共享的一个大部分,或者可以被划分成若干个单独的功能片(例如,每个核心一个片)。高速缓存还可以包括在所有核心之间被共享的一个大部分以及被划分成若干个单独的功能片的一个部分。
CPU 102还可以包括系统存储控制器114,以提供接口来通过处理器-存储器互连118与系统存储器116进行通信。在未被示出的其他实施例中,存储控制器114可以是离散器件或者被集成到计算机系统100中的另一器件中。
系统存储器116可以包括动态随机存取存储器(DRAM)(诸如双数据速率(DDR)类型的DRAM)、非易失性存储器(诸如闪存)、相变存储器(PCM)或其他类型的存储器技术。系统存储器116可以是用于存储要被CPU 102、计算机系统100中的其他CPU以及计算机系统100中的可能其他器件(例如,能够实现直接存储器访问(DMA)的I/O器件)操作的数据和指令的通用存储器。
处理器-存储器互连118可以包括能够传输数据、地址、控制和时钟信息的一个或多个光学导线、金属线或其他导线(即线路)。
虽然未被示出,但是CPU 102还可以包括给CPU 102供电并向位于CPU 102上的电路提供参考时钟信号的功率和时钟功能单元。
另外,CPU 102还可以包括I/O接口单元120。I/O接口单元114能够实现CPU 102与任何其他CPU之间的通信。另外,I/O接口单元114或未被示出的另一通信块还可以允许CPU 102与未被示出的I/O集线器复合体(complex)之间的通信。I/O集线器复合体可以包括一个或多个I/O主控制器,以提供用于一个或多个I/O器件与计算机系统100的剩余器件之间的通信的接口。
另外,I/O接口单元114可以通过处理器-图形互连124来提供CPU 102与图形子系统122之间的通信接口。处理器-图形互连可以是外围部件接口(PCI)快速互连,其包括一个或多个高速、双向串行接口通道。在其他实施例中,处理器-图形互连124利用用于CPU 102与图形子系统122之间的通信的另一协议。
图形子系统122可以被合并到离散插卡中,该离散插卡能够在计算机系统100中的母板中插入通信性槽接口。在其他实施例中,图形子系统可以在没有槽接口的情况下直接连线到计算机系统100中的母板中,以允许互换不同的离散图形卡。
图形子系统122可以包括用于执行绘制命令的若干个GPU m-核心,所述绘制命令用于向显示屏幕进行二维和三维图像渲染。每个m-核心可以在群组中包括若干(例如,8、16、40等)个单独的核心。可以存在M个GPUm-核心,其中M是正数。例如,在图1所示的实施例中,图形子系统122包括四个m-核心,即GPU m-核心A(126)、GPU m-核心B(128)、GPU m-核心C(130)和GPU m-核心D(132)。
在许多实施例中,一个或多个纹理单元(TU)以1比1的比率与GPUm-核心匹配。在具有四个分离的图形m-核心的图1中,存在着4个纹理单元:TU A(134)、TU B(136)、TU C(138)和TU D(140)。在其他实施例中,GPU m-核心和TU没有1比1地进行匹配,因此会存在GPU m-核心比TU多或者TU比GPU m-核心多的实施例。
图形子系统122还可以包括一个或多个图形存储控制器,诸如图形存储控制器A(142)和图形存储控制器B(144)。图形存储控制器提供m-核心/TU与视频存储器146之间的接口。视频存储器可以是DRAM或其他存储器技术的形式。通常,由于视频和图形密集程序以极快的速率要求大的吞吐量,所以视频存储器在访问时间上至少与通用系统存储器一样快或者比通用系统存储器更快。
在许多实施例中,图形子系统122包括数据分布逻辑148。数据分布逻辑148能够提供计算机系统100中的图形流水线的瓶颈分析。图形流水线瓶颈分析将在图4至图7中详细讨论。
图2示出用于实施瓶颈灵敏型图形流水线调度架构的通用计算机系统的另一实施例。
示出了计算机系统200。在若干实施例中,计算机系统200包括组合的中央处理单元/图形处理单元(CPU/GPU)202。CPU/GPU 202可以包括不止一个CPU核心,诸如被示出的CPU核心0(204)、CPU核心1(206)、核心2(208)和核心3(210)。可以存在比图2所示的4个CPU核心更多或更少的CPU核心。在许多实施例中,每个CPU核心(诸如CPU核心0(104))包括内部功能块,诸如一个或多个执行单元、引退单元、一组通用和专用寄存器等。如果诸如核心0(104)、核心1(106)等的核心是多线程或超线程的,则每个硬件线程被认为是用于本发明用途的核心。
CPU/GPU 202还可以包括用于存储数据的高速缓存212。CPU/GPU 202还可以包括用于提供与系统存储器216进行通信的接口的系统存储控制器214。系统存储器216可以包括DRAM、非易失性存储器、PCM或其他类型的存储器技术形式。系统存储器216可以是用于存储要被CPU/GPU 202、计算机系统200中的其他CPU以及计算机系统200中的可能其他器件(例如,能够实现DMA的I/O器件)操作的数据和指令的通用存储器。
CPU/GPU 202还可以包括集成的图形子系统218。图形子系统218可以包括用于执行绘制命令的一个或多个GPU m-核心,所述绘制命令用于向显示屏幕进行二维和三维图像渲染。例如,在图2所示的实施例中,图形子系统218包括四个m-核心,即GPU m-核心A(220)、GPU m-核心B(222)、GPU m-核心C(224)和GPU m-核心D(226)。
在许多实施例中,一个或多个TU以1比1的比率与GPU m-核心匹配。在具有四个分离的GPU m-核心的图2中,存在着4个纹理单元:TU A(228)、TU B(230)、TU C(232)和TU D(234)。在其他实施例中,GPU m-核心和TU没有1比1地进行匹配,因此会存在GPU m-核心比TU多或者TU比GPU m-核心多的实施例。
图形子系统218还可以包括一个或多个图形存储控制器,诸如图形存储控制器A(236)和图形存储控制器B(238)。图形存储控制器提供m-核心/TU与视频存储器240之间的接口。视频存储器可以是DRAM或其他存储器技术的形式。通常,由于视频和图形密集程序以极快的速率要求大的吞吐量,所以视频存储器在访问时间上至少与通用系统存储器一样快或者比通用系统存储器更快。
在许多实施例中,图形子系统122包括数据分布逻辑148。数据分布逻辑148能够提供计算机系统100中的图形流水线的瓶颈分析。图形流水线瓶颈分析将在图4至图7中详细讨论。
图3示出用于实施瓶颈灵敏型图形流水线调度架构的通用计算机系统的再一实施例。
示出了计算机系统300。在若干实施例中,计算机系统300包括组合的中央处理单元/图形处理单元(CPU/GPU)302。CPU/GPU 302可以包括一个或多个通用核心。在图3中,每个通用核心可以执行通用CPU任务和/或专用图形任务。这些核心(在图3中各自被称为CPU/GPU m-核心)可以在给定时刻被分配通用任务或图形专用任务。在图3中,示出了4个分离的CPU/GPU m-核心:CPU/GPU m-核心304、CPU/GPU m-核心306、CPU/GPU m-核心308和CPU/GPU m-核心310。核心的每个CPU部分包括内部功能块,诸如一个或多个执行单元、引退单元、一组通用和专用寄存器等。CPU/GPU 302还可以包括用于存储数据的高速缓存312。
在许多实施例中,一个或多个TU与CPU/GPU m-核心匹配。在具有四个分离的CPU/GPU m-核心的图3中,存在着4个纹理单元:TU 314、TU 316、TU 318和TU 320。
CPU/GPU 302还可以包括用于提供与通用存储器324进行通信的接口的通用存储控制器322。通用存储器324可以是用于存储要被CPU/GPU302、计算机系统300中的其他CPU以及计算机系统300中的可能其他器件(例如,能够实现DMA的I/O器件)操作的数据和指令的通用存储器。在图3所示的实施例中,通用存储器被用作系统存储器和视频存储器两者。
在许多实施例中,图形子系统122包括数据分布逻辑148。数据分布逻辑148能够提供计算机系统100中的图形流水线的瓶颈分析。图形流水线瓶颈分析将在图4至图7中详细讨论。
图4示出用于实施瓶颈灵敏型图形流水线调度架构的计算机系统中的图形子系统的详细视图的实施例。
图形驱动器400向图形硬件子系统发送绘制调用(即命令)。该绘制调用处理对数据(例如,像素、顶点、几何图形等)的组合的渲染,以创建用于存储在存储器的帧缓冲器中的图像。帧缓冲器保持在显示设备(诸如视频监控器)上显示的信息。可以根据数据在要被渲染的图像中的坐标来将数据划分成块。例如,要被渲染的3D图像可以是640像素宽乘以480像素高。该图像可以被划分成栅格块,每个块是8像素乘以8像素、16像素乘以16像素、32像素乘以32像素等。在许多实施例中,每个块可以由诸如分离的处理器、纹理单元等单独处理。
图5A-5C示出被划分成具有不同大小的块的屏幕图像的实施例。
图5A示出640×480的图像。如图所示,图像被划分成许多个块。例如,整个图像大小的左上角中的4个块在图5B和5C中被放大,以示出不同的可能块大小。在图5B中,4个块中左上方的块跨越从坐标0,0(该块的左上角)到坐标15,15(该块的右下角)的像素。其他三个块对该群组进行充实,并且如图所示,每个块包括16×16栅格的像素。可替换地,在图5C中,图5A所示的左上方的2×2栅格的块被进一步划分成大小为8像素乘以8像素的更小的块。如上面讨论的,每个块可以由不同的硬件单独处理。例如,如图5B和5C中所示,这些块在4个m-核心(m-核心0、m-核心1、m-核心2和m-核心3)中进行划分。
返回图4,栅格器(rasterizer)401接收绘制调用并随后生成与该绘制调用相关的像素数据,并将所述该像素数据发送给数据分布逻辑402。数据分布逻辑402可以利用若干算法来确定该绘制调用的极限性能因数。
在许多实施例中,数据分布逻辑402包括瓶颈分析模块404。瓶颈分析模块404从图形子系统中获取用于计算该子系统的哪部分正在被耗费得最多的信息。该信息通常是在操作于图形子系统中的许多器件中实施的性能计数器的形式。例如,在所示的实施例中,存在着4个m-核心(M-核心A406、M-核心B 408、M-核心C 410和M-核心D 412),它们执行与绘制调用相关的工作(例如,执行几何图形计算),而且在每个m-核心中,存在着若干性能计数器,诸如m-核心A计数器414、m-核心B计数器416、m-核心C计数器418和m-核心D计数器420。除了m-核心之外,在图4所示的实施例中还存在着4个纹理单元(TU A 422、TU B 424、TU C 426和TUD 428)。每个纹理单元也可以包括一组性能计数器,诸如TU A计数器430、TU B计数器432、TU C计数器434和TU D计数器436。一旦m-核心和纹理单元对绘制调用进行操作,则结果就通过与视频存储器442接口的一个或多个存储控制器(诸如存储控制器A 438和存储控制器B 440)发送给视频存储器442。所存在的每个存储控制器还可以包括一组性能计数器(例如,存储控制器A计数器444和存储控制器B计数器446)。视频存储器442可以存储一个或多个纹理高速缓存(即针对纹理数据的存储区域)、一个或多个帧缓冲器以及许多其他类型的图像相关的数据。
在许多实施例中,所有的性能计数器发送数据给历史数据缓冲器448。历史数据缓冲器可以是在任何充分存储位置中建立的缓冲器。在一些实施例中,历史数据缓冲器448可以是视频存储器442的预留部分。在其他实施例中,历史数据缓冲器448可以是系统存储器的预留部分。在再一实施例中,历史数据缓冲器448可以是专用于历史数据缓冲器448的分离的存储器存储器件。在又一其他实施例中,历史数据缓冲器448可以作为整体被集成到位于图形子系统或计算机系统中的其他位置的电路中。
历史数据缓冲器448可以用于若干用途。例如,来自图4所示的一个或多个器件的性能计数器可以持续地向历史数据缓冲器448馈送更新后的值。在另一示例中,在计算机系统中可以存在间隔计时器,而且每次该计时器在所述间隔的末端期满时,整个系统中的每个计数器将它们的当前值写入历史数据缓冲器中。在其他实施例中,从计数器中获取到的信息被馈送给瓶颈分析模块,该瓶颈分析模块随后将利用一片或多片计数器数据来执行一个或多个计算,而且随后瓶颈分析模块404可以将所计算的结果存储在历史数据缓冲器448中。
在许多实施例中,在给定时刻,瓶颈分析模块404将从m-核心、纹理单元和/或存储控制器中的性能计数器获取所有相关数据。瓶颈分析模块404之后将计算m-核心和/或视频存储器442的利用,并确定在图形子系统中运行的当前工作负荷正在如何影响m-核心以及视频存储器的利用水平。
例如,一个绘制调用可能促使一个m-核心(例如,m-核心A 406)相比于其他三个m-核心被繁重得多地利用。这导致不均衡的工作负荷,因为并非所有4个m-核心都正在均等地进行工作,因此图形子系统因m-核心工作量的不均衡而没有被有效地使用。在另一示例中,瓶颈分析模块可能发现所有4个m-核心正在被均等地利用,但是利用的是它们总计算功率的一小部分,因为有大量的纹理数据正在进进出出针对顶点或像素的视频存储器442。因此,少量的几何图形正在被计算,但是数据吞吐量达到了可用存储器带宽的最大值。再次地,这将导致图形子系统的整体低效,因为m-核心未被要求以快的速率执行工作而且它们正因存储器的低效而缺乏数据。
一些绘制调用是计算密集型的,这意味着执行所有计算性计算的m-核心将需要更大量的工作来完成每个调用。其他绘制调用是存储器密集型的,这意味着会存在大量数据被传输给存储器和传输自存储器。另外,再一绘制调用在该调用的整个长度期间在这两个类别之间切换。
对于计算密集型绘制调用,所有m-核心之间的均衡工作负荷对于总图形子系统性能而言是重要的。相反地,对于存储器密集型绘制调用而言,纹理高速缓存效率是最大的因素。在计算密集型绘制调用中,不均衡的m-核心工作负荷会导致性能恶化。在存储器密集型绘制调用中,使m-核心缺乏工作的工作负荷也将导致性能恶化。
单独m-核心/TU所工作的块的大小对计算密集型绘制调用的性能影响与对存储器密集型绘制调用的性能影响不同。例如,转到图5B和5C,相对更大的块(例如,图5B)将因数据局部性和纹理高速缓存效率而有益于存储器密集型工作负荷。相对更小的块(例如,图5C)将有益于计算密集型工作负荷,因为对于图像的正在被执行操作的任何给定区域而言,有更多的m-核心正在对那个给定区域内的数据进行操作。
返回图4,一旦已经由瓶颈分析模块404计算了工作负荷的类型,就向调度模块450发送关于如何调度当前绘制调用的剩余部分或利用类似图像参数(即导致当前工作负荷状况的图像数据)的下一(或其他未来)绘制调用的确定、关于将所述工作划分成多大或多小的块的判定。调度模块之后对绘制调用的数据进行处理,并告诉每个m-核心和纹理单元它们将对哪些坐标处的哪些块进行操作。换言之,基于被发送给调度模块450的由瓶颈分析模块404做出的关于块大小的确定,调度模块450之后向m-核心A406发送命令,诸如对位于从0,0开始并在7,7处结束的块、从16,16开始并在23,23处结束的块等中的数据执行计算。命令也被发送给其他m-核心和纹理单元。在另一实施例中,块调度命令被特别发送给m-核心,而且每个m-核心之后将调度命令传递给与它配对的纹理单元。
可以被用于报告瓶颈分析数据的一些标准性能计数器是“引退纹理指令”和“引退计算指令”,它们能够分别揭露已经完成了多少纹理指令和计算指令。如果在特定时间段内对其进行了收集,则可以确定针对每一者的每个采样间隔的速率,这能够导致指令吞吐量计算,当将指令吞吐量计算与基线值进行比较时可以允许针对每个m-核心和纹理单元采取效率估计。另外,存储控制器可以包括诸如“存储器忙周期”、“存储器空闲周期”、“存储器读速率”和“存储器写速率”之类的计数器。从这些计数器接收的数据还能够允许通用存储器的效率计算。
例如,通过采用上述的都在给定时间量内被收集的计数器,可以通过下面的等式来计算在给定时间帧内的存储器利用百分比:
在许多实施例中,存储器读操作和存储器写操作可以实现存储器带宽的不同峰值利用百分比,从而可以利用针对读和写的不同阈值。在一个示例中,当下面的等式为真时,可以确定存储器是瓶颈:
存储器利用%>(存储器读速率|读阈值)+(存储器写速率|写阈值)
因此,如果存储器利用是瓶颈,则这可以由瓶颈分析模块404确定,并且可以之后将命令从瓶颈分析模块404发送给调度模块450以增加块大小。
在许多实施例中,在对给定绘制调用进行操作期间动态地获取计数器信息。因此,瓶颈分析模块能够实时地确定图形子系统是否正在对所述调用有效地进行操作。如果工作负荷分析确定瓶颈出现(无论其是m-核心瓶颈问题还是存储器瓶颈问题),则瓶颈分析模块就可以告诉调度模块修改块大小并针对不同大小的块来立即重新调度m-核心和纹理单元。另外,在许多实施例中,每个绘制调用可以具有特定的类型,或者可以包括与该调用相关联的一组参数。如果具有特定类型或具有特定的类似参数集的绘制调用导致了具体类型的瓶颈,则这可以由瓶颈分析模块404指出并被存储在历史数据缓冲器448中。在这些实施例中,如果具有类似类型或具有类似参数的另一类似绘制调用在该调用被栅格器401接收到时能够被确定,则能够在历史数据缓冲器中对此进行查找而且瓶颈分析模块可以确定这种调用在具有特定大小的块的情况下在过去被执行得很好。该信息之后可以被馈送给调度模块450,而且调度模块450能够通过使用在这种调用的之前迭代中确定的最有效的块大小来调度该调用。
图6是用于分析图形流水线瓶颈并调度适用于这种瓶颈的模式的过程的实施例的流程图。
该过程可以由可以包括硬件(例如,电路)、软件(例如,通用程序)、固件(例如,微代码)或这三种类型的处理逻辑的任意组合的处理逻辑来执行。转到图6,该过程从处理逻辑接收新的绘制命令(即绘制调用)开始(处理框600)。之后处理逻辑对发送该绘制命令的程序进行分析(处理框602)。在绘制命令的开始处,处理逻辑将对所述程序和历史绘制调用性能数据进行分析,并确定该绘制的默认模式。被引退的计算指令与被引退的存储器指令的比率是程序分析的重要因素。
处理逻辑计算被引退的计算指令/被引退的存储器指令的比率(处理框604),这可以被缩略成计算/存储器比率。因此,如果该数大于1,则与存储器指令相比,计算指令正在以更快的速率被引退。可替换地,如果该数小于1,则与计算指令相比,存储器指令正在以更快的速率被引退。在许多实施例中,比率阈值被预定以与所述比率进行比较。例如,上限比率阈值可以是10,这意味着如果被引退的计算指令的数量是存储器指令的10倍以上,则可以确定工作负荷是计算瓶颈。相反地,下限比率阈值可以是5,这意味着如果被引退的计算指令的数量是存储器指令的5倍以下,可以确定工作负荷是存储器瓶颈。在其他实施例中,可以将其他值用作上限比率阈值和下限比率阈值,以确定在图形子系统中是否存在瓶颈。
因此,处理逻辑之后可以确定所计算的比率是否大于预定的上限阈值(处理框606)。如果是,则工作负荷是计算瓶颈,而且处理逻辑之后利用均衡模式(处理框608),该均衡模式通过使用更小的块大小来尝试在整组可用的m-核心上更大地分布由绘制调用所创建的工作负荷。
返回框606,如果所计算的比率不高于上限比率阈值,则处理逻辑可以确定其是否低于下限比率阈值(处理框610)。如果该比率低于下限比率阈值,则处理逻辑利用存储器效率模式(处理框612),该处理器效率模式通过使用更大的块大小来尝试促使更大的存储器和纹理高速缓存效率。
返回框610,如果该比率不低于下限比率阈值,则工作负荷没有被自动确定是计算瓶颈还是存储器瓶颈。如果是这种情况,则处理逻辑对来自历史数据缓冲器的计数器数据进行逻辑解析,以获得用于确定该程序绘制命令已经促使了哪种类型的工作负荷的信息(处理框614)。
在查看计数器数据后,处理逻辑之后确定绘制调用是否是存储器密集型(处理框616)。在不同的实施例中,关于绘制调用是否是存储器密集型的确定可以利用不同的计数器。一个示例将是利用被引退的计算指令与被引退的存储器指令的特定比率。例如,如果被利用的该比率是每个存储器指令8个计算指令,则如果所确定的比率小于8:1(计算指令比存储器指令),则绘制调用可以被指定为存储器密集型。再次地,用于测试的特定比率可以是8或大于或低于8的数。在许多实施例中,该比率被预定。在可替换实施例中,如果存储器利用百分比(如上面进一步描述的等式中所计算的)高于特定百分比,则可以将工作负荷分类为存储器密集型。其他实施例可以使用又一等式来计算存储器密集性。
一旦确定了工作负荷是否是存储器密集型的,则如果工作负荷是存储器密集型,处理逻辑就可以利用存储器效率模式(处理框612),否则如果工作负荷不是存储器密集型则处理逻辑可以利用均衡模式(处理框608),而且该过程结束。
图7是用于分析图形流水线瓶颈并动态地切换调度模式的过程的实施例的流程图。
该过程可以由可以包括硬件(例如,电路)、软件(例如,通用程序)、固件(例如,微代码)或这三种类型的处理逻辑的任意组合的处理逻辑来执行。转到图7,该过程从处理逻辑从图形子系统中的一个或多个性能计数器收集性能计数器数据开始(处理框700)。
之后处理逻辑计算被引退的计算指令与被引退的存储器指令的比率(处理框702)。如果该比率低于下限比率阈值,则确定存储器是瓶颈。处理逻辑将之后确定图形子系统是否当前正操作于存储器效率模式中(处理框706)。如果图形子系统不是正在操作于存储器效率模式中,则处理逻辑切换到存储器效率模式(处理框708)。否则,如果图形子系统正操作于存储器效率模式中,则处理逻辑增加要被操作的块大小(处理框710)。例如,如果当前块大小是16×16,则处理逻辑可以将要被操作的块大小增加到32×32。
返回框704,如果所述比率不低于下限比率阈值,则处理逻辑确定该比率是否高于上限比率阈值(处理框712)。如果该比率不高于上限比率阈值,则没有瓶颈已经被确定。在这种情况中,这意味着存在着计算瓶颈,而且处理逻辑进行检查,以查看图形子系统是否正操作于存储器效率模式中。如果图形子系统不是正在操作于存储器效率模式中,则处理逻辑切换到存储器效率模式(处理框708)。否则,当图形子系统正操作于存储器效率模式中时,则处理逻辑减小要被操作的块大小(处理框716)。例如,如果当前块大小是16×16,则处理逻辑可以将要被操作的块大小减小到8×8。
这样,描述了用于实施瓶颈灵敏型图形流水线调度架构的方法、设备和系统的实施例。已经参照这些实施例的具体示例性实施例描述了这些实施例。对从本公开获益的人员而言显而易见的是,可以在不背离本文描述的实施例的更广泛精神和范围的情况下对这些实施例进行各种修改和改变。因此,本说明书和附图应当被认为是说明性的而非限制性的。
机译: 利用性能计数器的图形管线调度架构
机译: 利用性能计数器的图形管道调度体系结构
机译: 使用性能计数器的图形管道调度体系结构