用于调度图形处理单元命令流的延迟抢占技术的制作方法

文档序号:8323963阅读:286来源:国知局
用于调度图形处理单元命令流的延迟抢占技术的制作方法
【技术领域】
[0001] 本发明涉及图形处理系统,且更确切地说,涉及利用命令流的图形处理系统。
【背景技术】
[0002] 计算装置常常利用图形处理单元(GPU)以加速再现用于显示的图形数据。此类计 算装置可包含(例如)计算机工作站、例如所谓的智能电话等移动电话、嵌入系统、个人计 算机、平板计算机及视频游戏控制台。GPU通常执行图形处理管线,所述图形处理管线包含 一起操作以执行图形处理命令的多个处理级。主机中央处理单元(CPU)可通过将一或多个 图形处理命令发布给GPU来控制GPU的操作。现代的CPU通常能够同时执行多个应用,所 述多个应用中的每一者可需要在执行期间利用GPU。在当前在主机CPU上执行的不同应用 之间的GPU资源的仲裁可向主机CPU提出显著挑战,尤其是在特定应用可需要对GPU的高 优先级存取的情况下。

【发明内容】

[0003] 本发明针对用于调度用于在图形处理单元(GPU)上执行的GPU命令流的延迟抢占 技术。在一些实例中,本发明的技术可包含将一或多个权标放置在GPU命令流中以指示GPU 命令流中的允许发生抢占的特定位置。在GPU处理所述GPU命令流且从主机装置接收抢占 所述GPU命令流的执行以便执行另一 GPU命令流的通知时,GPU可继续处理所述GPU命令 流中的命令,直到所述GPU达到所述GPU命令流中的允许发生抢占的位置为止。在到达允 许发生抢占的位置之后,所述GPU可即刻切换到执行其它GPU命令流。在一些实例中,所述 GTO命令流可与不同的图形处理情境相关联。
[0004] 在一个实例中,本发明描述一种方法,其包含:使用处理器选择GPU命令流中的一 或多个位置以作为在其处允许处理所述GPU命令流的GPU响应于从所述处理器接收到抢占 所述GPU命令流的执行的通知而抢占所述GPU命令流的执行的一或多个位置。所述方法进 一步包含使用所述处理器基于所述选定的一或多个位置而将一或多个权标放置在所述GPU 命令流中。所述一或多个权标向所述GPU指示允许在所述GPU命令流中的所述选定的一或 多个位置处发生抢占。
[0005] 在另一实例中,本发明描述一种装置,其包含处理器,所述处理器经配置以:选择 GPU命令流中的一或多个位置以作为在其处允许处理所述GPU命令流的GPU响应于从所述 处理器接收到抢占所述GPU命令流的执行的通知而抢占所述GPU命令流的执行的一或多个 位置。所述处理器进一步经配置以基于所述选定的一或多个位置而将一或多个权标放置在 所述GPU命令流中。所述一或多个权标向所述GPU指示允许在所述GPU命令流中的所述选 定的一或多个位置处发生抢占。
[0006] 在另一实例中,本发明描述一种设备,其包含:用于选择GPU命令流中的一或多个 位置以作为在其处允许处理所述GPU命令流的GPU响应于接收到抢占所述GPU命令流的执 行的通知而抢占所述GPU命令流的执行的一或多个位置的装置。所述设备进一步包含用于 基于所述选定的一或多个位置而将一或多个权标放置在所述GPU命令流中的装置。所述一 或多个权标向所述GTO指示允许在所述GPU命令流中的所述选定的一或多个位置处发生抢 占。
[0007] 在另一实例中,本发明描述一种存储指令的计算机可读存储媒体,所述指令在被 执行时致使一或多个处理器选择GPU命令流中的一或多个位置以作为在其处允许处理所 述GPU命令流的GPU响应于从所述一或多个处理器接收到抢占所述GPU命令流的执行的通 知而抢占所述GPU命令流的执行的一或多个位置。所述指令进一步致使所述一或多个处理 器基于所述选定的一或多个位置而将一或多个权标放置在所述GPU命令流中。所述一或多 个权标向所述GPU指示允许在所述GPU命令流中的所述选定的一或多个位置处发生抢占。
[0008] 在另一实例中,本发明描述一种方法,其包含使用GPU基于包含在所述GPU命令流 中的一或多个权标而抢占 GPU命令流的执行。所述一或多个权标指示允许在所述GPU命令 流中的一或多个位置处发生抢占。
[0009] 在另一实例中,本发明描述一种设备,其包含使用GPU,所述GPU经配置以基于包 含在所述GPU命令流中的一或多个权标而抢占 GPU命令流的执行。所述一或多个权标指示 允许在所述GPU命令流中的一或多个位置处发生抢占。
[0010] 在另一实例中,本发明描述一种设备,其包含用于执行GPU命令流的装置。所述设 备进一步包含用于基于包含在所述GPU命令流中的一或多个权标而抢占所述GPU命令流的 执行的装置。所述一或多个权标指示允许在所述GPU命令流中的一或多个位置处发生抢 占。
[0011] 在另一实例中,本发明描述一种存储指令的计算机可读存储媒体,所述指令在被 执行时致使GPU基于包含在所述GPU命令流中的一或多个权标而抢占 GPU命令流的执行。 所述一或多个权标指示允许在所述GPU命令流中的一或多个位置处发生抢占。
[0012] 在附图和下文描述中阐述本发明的一或多个实例的细节。本发明的其它特征、目 标和优点将从所述描述和图式以及权利要求书而显而易见。
【附图说明】
[0013] 图1是说明可用于实施本发明的延迟抢占 GPU命令流调度技术的实例计算装置的 框图。
[0014] 图2是进一步详细说明图1中的计算装置的CPU、GPU和存储器的框图。
[0015] 图3是说明根据本发明的可将权标放置到其中的GPU命令流的概念图。
[0016] 图4是说明根据本发明的用于将权标放置在图3的GPU命令流中的技术的概念 图。
[0017] 图5是说明根据本发明的用于将权标放置在图3的GPU命令流中的另一实例技术 的概念图。
[0018] 图6是说明根据本发明的用于控制GPU以执行延迟抢占调度的实例技术的流程 图。
[0019] 图7是说明根据本发明的用于基于放置在GPU命令流中的权标而抢占命令流的执 行的实例技术的流程图。
[0020] 图8是说明根据本发明的用于处理GPU命令流的实例技术的流程图。
[0021] 图9是说明根据图8中展示的技术的用于在处理命令流时处置抢占通知的实例技 术的流程图。
[0022] 图10是说明根据本发明的用于处理GPU命令流的另一实例技术的流程图。
[0023] 图11是说明根据图10中展示的技术的用于在处理命令流时处置抢占通知的实例 技术的流程图。
【具体实施方式】
[0024] 本发明针对用于调度用于在图形处理单元(GPU)上执行的GPU命令流的延迟抢占 技术。如今,GPU越来越多地用于用户接口(UI)再现。通常需要以及时的方式服务Π 命 令流以便实现用户在UI中预期的恰当视觉效果及响应性。在高优先级UI命令流被主机 CPU排队在GPU上执行时,GPU可执行与具有较低优先级的不同背景相关联的另一排队的 命令流,例如,非UI图形背景或使用GPU执行通用计算任务(即,图形处理单元通用计算 (GPGPU)任务)的背景。在一些情况下,在执行较高优先级Π 命令流之前等待较低优先级 背景完成执行可不产生可接受的用户对UI的体验。
[0025] 此问题的一个解决方案是每当主机CPU确定较高优先级的命令流需要执行时允 许主机CPU抢占较低优先级命令流的执行且服务较高优先级的命令流。然而,此解决方案 在于GPU命令流中的任意点处在GPU中执行背景切换所需的开销(例如,额外处理时间、额 外存储器带宽使用及/或额外存储器使用)方面可为昂贵的。举例来说,每当较高优先级 的命令流需要抢占较低优先级的命令流时,可需要在执行较尚优先级的命令流之前保存较 低优先级的命令流的GPU状态,且随后在执行较高优先级的命令流之后恢复。执行此类背 景切换所需的额外开销在GPU命令流中的特定位置可比在GPU命令流中其它位置更昂贵。 因此,允许在GPU命令流中的任意点处发生抢占可导致在其中归因于背景切换而引起的开 销相对昂贵的位置处对GPU命令流的抢占,进而降低GPU的整体性能。
[0026] 根据本发明中描述的各种实例,针对图形处理系统提供延迟抢占调度技术。延迟 抢占调度技术可用于允许较高优先级的命令流在较低优先级的命令流内的特定抢占点处 抢占较低优先级的命令流的执行。也就是说,本发明的技术可允许主机CPU将一或多个权 标放置在较低优先级的命令流中以指示较低优先级的命令流中的允许在其处发生抢占的 特定位置。在较低优先级的命令流在GPU上执行且GPU命令引擎从主机CPU接收到指示 较高优先级的命令流即将执行的信号时,命令引擎可推迟对所述较低优先级的命令流的抢 占,直到在较低优先级的命令流中遇到下一抢占点为止。
[0027] 在一些情况下,主机CPU可将抢占点放置在较低优先级的命令流中的其中归因于 抢占而引起的开销(例如,额外处理时间、额外存储器带宽使用及/或额外存储器使用) 与可归因于较低优先级的命令流中的其它位置处的抢占而发生的开销相比相对较小的位 置处。通过将抢占推迟到较低优先级的命令流内的其中抢占开销相对廉价的那些位置,本 发明的技术可能够提高图形处理系统的整体性能,其中在GPU上执行的高优先级的命令流 (例如,UI命令流)可需要抢占其它较低优先级的命令流。
[0028] 图1是说明可用于实施本发明的延迟抢占 GPU命令流调度技术的实例计算装置2 的框图。计算装置2可包括个人计算机、桌上型计算机、膝上型计算机、计算机工作站、视频 游戏平台或控制台、无线通信装置(例如,移动电话、蜂窝式电话、卫星电话和/或移动电 话手持机)、陆线电话、因特网电话、手持式装置(例如,便携式视频游戏装置或个人数字助 理(PDA))、个人音乐播放器、视频播放器、显示装置、电视、电视机顶盒、服务器、中间网络装 置、主机计算机、或处理及/或显示图形数据的任何其它类型的装置。
[0029] 如图1的实例中所说明,计算装置2包含用户输入接口 4、CPU 6、存储器控制器8、 系统存储器10、图形处理单元(GPU) 12、GPU高速缓冲存储器14、显示接口 16、显示器18及 总线20。用户输入接口 4、CPU 6、存储器控制器8、GPU 12及显示接口 16可使用总线20彼 此通信。总线20可为多种总线结构中的任一者,例如第三代总线(例如,HyperTransport 总线或InfiniBand总线)、第二代总线(例如,高级图形端口总线、外围组件互连(PCI)高 速总线,或高级eXentisible接口(AXI)总线)或另一类型的总线或装置互连件。应注意, 图1中展示的不同组件之间的总线及通信接口的特定配置仅是示范性的,且具有相同或不 同组件的计算装置及/或其它图形处理系统的其它配置可用于实施本发明的技术。
[0030] CPU 6可包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供到 计算装置2以致使CPU 6执行一或多个软件应用。在CPU 6上执行的软件应用可包含(例 如)操作系统、字处理器应用、电子邮件应用、电子数据表应用、媒体播放器应用、视频游戏 应用、图形用户接口应用或另一程序。用户可经由一或多个输入装置(未图示)(例如,键 盘、鼠标、麦克风、触摸垫或经由用户输入接口 4耦合到计算装置2的另一输入装置)将输 入提供到计算装置2。
[0031] 在CPU 6上执行的软件应用可包含指令CPU 6以致使向显示器18再现图形数据 的一或多个图形再现指令。在一些实例中,所述软件指令可符合图形应用编程接口(API), 例如开放图形库(〇penGL?:)API、开放图形库嵌入系统(OpenGL ES)API、Direct3D API、 X3D API、RenderMan API、WebGL API或任何其它公共或专有标准图形API。为了处理图形 再现指令,CPU 6可将一或多个图形再现命令发出到GPU 12以致使GPU 12执行图形数据的 再现的一些或全部。在一些实例中,将再现的图形数据可包含例如点、线、三角形、四边形、 三角形带等图形基元的列表。
[0032] 存储器控制器8促进数据进出系统存储器10的传递。举例来说,存储器控制器8 可接收存储器读取及写入命令,且服务关于存储器系统10的此类命令以便为计算装置2中 的组件提供存储器服务。存储器控制器8通信地耦合到系统存储器10。虽然存储器控制器 8在图1的实例计算装置2中被说明为与CPU 6及系统存储器10两者分开的处理模块,但 在其它实例中,存储器控制器8的功能性中的一些或全部可实施在CPU 6及系统存储器10 中的一或两者上。
[0033] 系统存储器10可存储可由CPU 6存取以用于执行的程序模块及/或指令及/或由 在CPU 6上执行的程序使用的数据。举例来说,系统存储器10可存储用户应用及与所述应 用相关联的图形数据。系统存储器10可另外存储由计算装置2的其它组件使用及/或产生 的信息。举例来说,系统存储器10可充当用于GPU 12的装置存储器且可存储将在GPU 12 上操作的数据以及由GPU 12执行的操作而产生的数据。举例来说,系统存储器10可存储纹 理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器或其类似者的任何组合。另外, 系统存储器10可存储命令流以供GPU 12处理。系统存储器10可包含一或多个易失性或非 易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、 只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM (EEPROM)、快闪存储器、 磁性数据媒体或光学存储媒体。
[0034] GPU 12可经配置以执行图形操作以向显示器18再现一或多个图形基元。因此, 当在CPU 6上执行的软件应用中的一者需要图形处理时,CPU 6可向GPU 12提供图形命令 及图形数据以用于向显示器18再现。图形命令可包含(例如)绘制命令、GPU状态编程命 令、存储器传递命令、通用计算命令、内核执行命令等。在一些实例中,CPU 6可通过将命令 及图形数据写入到存储器10而将所述命令及图形数据提供给GPU 12,存储器10可由GPU 12存取。在一些实例中,GPU 12可进一步经配置以针对在CPU 6上执行的应用执行通用计 算。
[0035] 在一些情况下,GPU 12可内置有比CPU 6提供对向量操作更有效的处理的高度并 行的结构。举例来说,GPU 12可包含经配置而以并行方式对多个顶点或像素操作的多个处 理元件。在一些情况下,GPU 12的高度并行性质允许GPU 12比使用CPU 6直接将场景绘 制到显示器18更快速地将图形图像(例如,Gn及二维(2D)及/或三维(3D)图形场景) 绘制到显示器18上。另外,GPU 12的高度并行性质可允许GPU 12比CPU 6更快速地处理 用于通用计算应用的特定类型的向量及矩阵操作。
[0036] 在一些情况下,可将GPU 12集成到计算装置2的母板中。在其它情况下,GPU 12 可存在于图形卡上,所述图形卡安装在计算装置2的母板中的端口中或可以其它方式并入 经配置以与计算装置2互操作的外围装置内。在其它情况下,GPU 12可位于与CPU 6相同 的微芯片上,从而形成系统芯片(SoC)。GPU 12可包含一或多个处理器,例如一或多个微处 理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效 的集成或离散逻辑电路。
[0037] GPU 12可直接耦合到GPU高速缓冲存储器14。因此,GPU 12可在不必使用总线20 的情况下从GPU高速缓冲存储器14读取数据且将数据写入到GPU高速缓冲存储器14。换句 话说,GPU 12可使用本地存储装置而不是片外存储器在本地处理数据。此允许GPU 12通过 消除GPU 12经由总线20读取及写入数据的需要而以更有效的方式操作,其中经由总线操 作可经历繁重的总线业务。然而,在一些情况下,GPU 12可不包含单独的高速缓冲存储器, 而是经由总线20利用系统存储器10。GPU高速缓冲存储器14可包含一或多个易失性或非 易失性存储器或储存装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、 可擦除可编程ROM(EPROM)、电可擦除可编程ROM (EEPROM)、快闪存储器、磁性数据媒体或光 学存储媒体。
[0038] CPU 6及/或GPU 12可将再现的图像数据存储在系统存储器10内所分配的帧缓 冲器中。显示接口 16可从帧缓冲器检索数据且配置显示器18以显示由再现的图像数据表 示的图像。在一些实例中,显示接口 16可包含经配置以将从帧缓冲器检索的数字值转换为 可由显示器18消耗的模拟信号的数/模转换器(DAC)。在其它实例中,显示接口 16可将数 字值直接传递到显示器18以进行处理。显示器18可包含监视器、电视、投影装置、液晶显 示器(IXD)、等离子显示面板、发光二极管(LED)阵列、阴极射线管(CRT)显示器、电子纸、 表面传导电子发射显示器(SED)、激光电视显示器、纳米晶体显示器或另一种类型的显示单 元。显示器18可集成在计算装置2内。举例来说,显示器18可为移动电话手持机或平板 计算机的屏幕。或者,显示器18可为经由有线或无线通信链路而耦合到计算机装置2的独 立装置。举例来说,显示器18可为经由电缆或无线链路而连接到个人计算机的计算机监视 器或平板显示器。
[0039] 根据本发明,CPU 6可产生供GPU 12执行的命令流,所述命令流包含指示命令流 中的其中允许GPU 12抢占命令流的执行的位置的一或多个权标。举例来说,CPU 6可选择 GPU命令流中的一或多个位置以作为在其处允许处理GPU
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1