书签 分享 收藏 举报 版权申诉 / 26

用于帧调步的方法和系统.pdf

  • 上传人:t****
  • 文档编号:5995787
  • 上传时间:2019-04-02
  • 格式:PDF
  • 页数:26
  • 大小:1.12MB
  • 摘要
    申请专利号:

    CN201580042084.8

    申请日:

    2015.08.07

    公开号:

    CN106575302A

    公开日:

    2017.04.19

    当前法律状态:

    实审

    有效性:

    审中

    法律详情:

    实质审查的生效IPC(主分类):G06F 17/30申请日:20150807|||公开

    IPC分类号:

    G06F17/30; G06T1/20

    主分类号:

    G06F17/30

    申请人:

    超威半导体公司

    发明人:

    乔纳森·劳伦斯·坎贝尔; 米切尔·H·辛格; 沈玉萍; 卓悦

    地址:

    美国加利福尼亚州

    优先权:

    2014.08.08 US 62/035,124

    专利代理机构:

    上海胜康律师事务所 31263

    代理人:

    樊英如;张静

    PDF完整版下载: PDF下载
    内容摘要

    提供一种用于在渲染过程中进行帧调步的方法和系统。所述方法包括:估算多个图形处理单元(GPU)中的每一个的帧渲染时间,基于至少所估算的帧渲染时间来确定延迟,以及将所述延迟插入所述渲染过程中以便以均匀间隔的方式渲染帧。

    权利要求书

    1.一种用于在渲染过程中进行帧调步的方法,所述方法包括:
    估算多个图形处理单元(GPU)中的每一个的帧渲染时间;
    基于至少所估算的帧渲染时间来确定延迟;以及
    将所述延迟插入所述渲染过程中以便以均匀间隔的方式渲染帧。
    2.如权利要求1所述的方法,其中所述延迟基于所述GPU上的应用程序工作负载来动态
    调整。
    3.如权利要求1所述的方法,其中所估算的帧渲染时间是对预定量的帧取得的平均值。
    4.如权利要求1所述的方法,其中基于至少所述延迟建立心跳以控制所述渲染过程和
    帧呈现。
    5.如权利要求1所述的方法,其中使用至少一个定时器来启动所述延迟。
    6.如权利要求1所述的方法,其中使用时间戳查询来确定所估算的帧渲染时间。
    7.如权利要求1所述的方法,其中所述延迟在内核模式驱动器(KMD)中实现。
    8.如权利要求7所述的方法,其中虚设可调度引擎在所述KMD中被创建以实现所述延
    迟。
    9.如权利要求1所述的方法,其中呈现在所述延迟期满或所述渲染过程完成中的较后
    者处发生。
    10.一种用于在渲染过程中进行帧调步的系统,其包括:
    第一处理模块,所述第一处理模块被配置来估算多个图形处理单元(GPU)中的每一个
    的帧渲染时间;
    所述第一处理模块被配置来基于至少所估算的帧渲染时间来确定延迟;以及
    第二处理模块,所述第二处理模块被配置来将所述延迟插入所述渲染过程中以便以均
    匀间隔的方式渲染帧。
    11.如权利要求10所述的系统,其中所述延迟基于所述GPU上的应用程序工作负载来动
    态调整。
    12.如权利要求10所述的系统,其中所估算的帧渲染时间是对预定量的帧取得的平均
    值。
    13.如权利要求10所述的系统,其中基于至少所述延迟建立心跳以控制所述渲染过程
    和帧呈现。
    14.如权利要求10所述的系统,其中使用至少一个定时器来启动所述延迟。
    15.如权利要求10所述的系统,其中使用时间戳查询来确定所估算的帧渲染时间。
    16.如权利要求10所述的系统,其中所述第二处理模块是内核模式驱动器(KMD)。
    17.如权利要求16所述的系统,其中虚设可调度引擎在所述KMD中被创建以实现所述延
    迟。
    18.如权利要求10所述的系统,其中呈现在所述延迟期满或所述渲染过程完成中的较
    后者处发生。

    说明书

    用于帧调步的方法和系统

    相关申请的交叉引用

    本申请要求提交日期为2014年8月8日的美国临时申请号62/035,124的权益,所述
    申请以引用的方式并入,就好像是完全陈述那样。

    发明领域

    本发明总体涉及图形处理。

    背景

    图形处理通常使用一个中央处理单元(CPU)和多个图形处理单元(GPU)的组合来
    执行。在使用多个GPU的渲染系统中,每个GPU在其完成帧时渲染完整的帧并且呈现所述完
    整的帧以供显示。如果每个GPU的帧在接近另一个GPU完成渲染时完成渲染,那么所渲染的
    第一帧在屏幕上显示的时间将少于后续帧(它们已经完成)。如果帧被显示的时间量未均匀
    地间隔,那么用户可在视觉上看见并察觉到较低帧速率(这有效地造成卡顿)。这标称地称
    为帧卡顿或微卡顿。需要克服由多个GPU渲染的应用(诸如3D应用)的视觉的和/或察觉到的
    帧卡顿和/或微卡顿的方法和系统。

    概述

    本文描述用于帧调步的方法和系统。一般来说,帧调步添加将后续帧的显示均匀
    地间隔开的延迟,以及在应用程序工作负载改变时测量并调整所述延迟的测量机构。

    附图简述

    可以从结合附图以举例方式给出的以下描述中获得更详细的了解,在附图中:

    图1是其中可实现一个或多个所公开实施方案的示例性装置的框图;

    图2是根据一些实施方案的示例性图形渲染管线;

    图3是双图形处理单元(GPU)中的渲染的实例;

    图4是根据一些实施方案的用于帧调步的示例性高级框图;

    图5是根据一些实施方案的用于帧调步的示例性流程图;

    图6是根据一些实施方案的用于帧调步的另一个示例性流程图;

    图7是根据一些实施方案的用于帧调步的序列图的实例;

    图8是根据一些实施方案的用于双GPU架构中的帧调步的序列图的实例;

    图9是根据一些实施方案的用于用一个定时器进行帧调步的序列图的实例;

    图10是根据一些实施方案的用于帧调步的序列图中的动作的实例;

    图11是对称架构中的卡顿的示例性图;

    图12是根据一些实施方案的对称架构中的帧调步或抗卡顿的示例性图;

    图13是对称架构中的卡顿的示例性图,其中

    图14是对称架构中的卡顿的示例性图,其中TSDMA>TGFX;

    图15是缓慢从情景中的卡顿的示例性图;

    图16是根据一些实施方案的缓慢从情景中的抗卡顿的示例性图;

    图17是根据一些实施方案的缓慢从情景中的抗卡顿的示例性图,其中非对称交火
    (ACF)是1:2并且其中“1”是瓶颈;并且

    图18是根据一些实施方案的缓慢从情景中的抗卡顿的示例性图,其中ACF是1:2并
    且其中“2”是瓶颈。

    详述

    本文描述用于帧调步的方法和系统。一般来说,关于渲染帧所花费的时间进行估
    算。这可通过测量图形处理单元(GPU)渲染帧所花费的时间来完成。若干最近帧的平均值用
    来消除帧到帧的工作负载差异和GPU的渲染速度差异。创建控制GPU的进度并且消除它们的
    呈现的心跳。在驱动器(例如,内核模式驱动器(KMD))中等待所确定的适当时间量,使得帧
    均匀地间隔。帧调步实质上使一个GPU中的帧翻转延后,所述一个GPU相对于另一个GPU出现
    得太早。

    图1是其中可实现一个或多个所公开实施方案的示例性装置100的框图。装置100
    可包括例如计算机、游戏装置、手持式装置、机顶盒、电视、移动电话或平板计算机。装置100
    包括处理器102、存储器104、存储装置106、一个或多个输入装置108和一个或多个输出装置
    110。装置100还可任选地包括输入驱动器112和输出驱动器114。应理解的是,装置100可包
    括图1中未展示的另外部件。

    处理器102可包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一芯片上的
    CPU和GPU,或一个或多个处理器核心,其中每个处理器核心可以是CPU或GPU。存储器104与
    处理器102可位于同一芯片上,或可与处理器102分开定位。存储器104可包括易失性或非易
    失性存储器,例如随机存取存储器(RAM)、动态RAM或高速缓存。GPU可以是相同类型的GPU
    (对称交火)或不同类型的GPU(非对称交火(ACF))。例如,处理器或系统中的GPU可包括但不
    限于加速处理单元(APU)、离散GPU(dGPU)和/或其组合。

    存储装置106可包括固定存储装置或可移动存储装置,例如硬盘驱动器、固态驱动
    器、光盘或闪存驱动器。输入装置108可包括键盘、小键盘、触摸屏、触摸板、检测器、麦克风、
    加速计、陀螺仪、生物识别扫描器或网络连接(例如,用于发射和/或接收无线IEEE 802信号
    的无线局域网卡)。输出装置110可包括显示器、扬声器、打印机、触觉反馈装置、一个或多个
    灯、天线或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。

    输入驱动器112与处理器102和输入装置108通信,并且容许处理器102接收来自输
    入装置108的输入。输出驱动器114与处理器102和输出装置110通信,并且容许处理器102向
    输出装置110发送输出。应指出的是,输入驱动器112和输出驱动器114为任选部件,并且在
    输入驱动器112和输出驱动器114不存在的情况下,装置100将以相同方式操作。

    图2是示例性图形渲染管线200。出于说明目的并且为了提供上下文,图形渲染管
    线200被展示为使用基于的操作系统(O/S),但可使用任何O/S。一般来说,图形
    渲染管线200包括应用模块/层/实体205、O/S模块/层/实体210、驱动器模块/
    层/实体220和硬件230。术语模块/层/实体在本文中将统称为实体。

    应用实体205除其他功能性之外处置用户输入。应用实体205包括模拟器207,所述
    拟器207例如更新例如相对于游戏世界的对象位置、物理等。模拟器207联接或连接(在本文
    中称为连接)到渲染器209,所述渲染器209通过例如Direct 3D API创建绘制调用以生成
    帧。渲染器209联接到Direct3D运行时间实体211,所述Direct3D运行时间实体211解析命令
    并且通过DDI接口调用用户模式驱动器(UMD)222。UMD 222生成GPU命令缓冲区并且将它们
    提交给O/S 210,并且具体地,提交给Direct3D运行时间实体211。GPU命令缓冲
    区然后被放置在上下文队列213中,直到O/S 210内核调度器215准备接受它们
    为止。GPU命令缓冲区被传递到内核模式驱动器(KMD)224,所述内核模式驱动器(KMD)224处
    理它们并且将它们发送到GPU 232。当帧已经完成渲染并且可被显示时,应用实体205发送
    呈现调用。所述呈现调用沿循与绘制调用相同的逻辑路径。

    图3在视觉上展示当使用多GPU架构进行图形处理时的微卡顿问题。一般来说,多
    个GPU之间的工作指配或分配使用称为交替帧渲染(AFR)的过程,在所述过程中,与多个GPU
    中的每一个在相同帧的一部分上工作相对比,每个GPU得到其自己的帧。当每个GPU的输出
    被调步以使得每个GPU正在以尽可能均匀的速率递送所渲染帧时,AFR工作良好。例如,如图
    3中所示,在单GPU(SGPU)流300中,帧一个接一个地被渲染并呈现。在理想的双GPU流305中,
    当GPU 0大致完成其帧的一半时,GPU 1的输出完成。然而,实际的双GPU流310中展示实际上
    所发生的情况。如果GPU 1的帧在接近GPU 0完成渲染时被完成,那么所渲染的第一帧在屏
    幕上显示的时间将少于第二或后续帧。如果显示帧的时间量未均匀地间隔,那么用户可在
    视觉上看见并察觉到较低帧速率,即,微卡顿。

    本文描述用于帧调步的方法和系统。

    图4展示双GPU架构400的实例;图5展示高级流程图500;图6展示用于双GPU架构
    400的示例性流程图;并且图7展示从UMD的视角来看的双GPU架构400的帧调步流程或序列
    600的高级实例。这些图共同地示出如本文所述的帧调步。在不偏离本文所述的本发明的范
    围的情况下,系统架构可包括任何数量的CPU、GPU、处理器等。具体地,双GPU架构400包括联
    接到GPU 410和GPU 415的CPU 405,所述GPU 410和GPU 415进而联接到显示器420。每个GPU
    410和415可具有定时器412和417以用信号通知延迟的开始和完成,如本文在下面所描述。

    现参考图4和图5,关于渲染帧所花费的时间进行估算(505)。这可通过测量GPU
    410和415渲染帧所花费的时间来完成。例如,时间戳查询可用来测量GPU渲染帧所花费的时
    间。若干最近帧的平均值用来消除帧到帧的工作负载差异和GPU的渲染速度差异(510)。创
    建控制GPU的进度并且消除它们的呈现的心跳(515),其中心跳是帧应被呈现时的脉冲或稳
    定的滴答声。在内核模式驱动器(KMD))中等待所确定的适当时间量,使得帧均匀地间隔
    (520)。例如,虚设可调度引擎在KMD中被创建。用户模式驱动器(UMD)向这个虚设引擎提交
    虚设命令缓冲区以请求延迟(所述延迟可以是预期帧时间的90-95%)。当所请求延迟已经
    过去时,KMD将命令缓冲区报告为完成(525)。在渲染过程花费的时间长于延迟的情况下,那
    么一旦渲染过程完成,呈现就将进行。实际上,延迟是供GPU呈现帧的最小等待时间。UMD向
    虚设引擎提交(MS)同步对象的信号。UMD等待在常规3D引擎上呈现这个同步对
    象。

    现参考图6和图7,对于双GPU架构400,渲染命令被发送到GPU 0(605)。UMD(图2中
    展示UMD)向KMD(图2中展示KMD)中的虚设引擎提交延迟请求(610)。这在图7中的虚设引擎
    流程中被展示为“延迟”。如本文在下面所描述和展示,延迟有效地提供最小时间量,在所述
    最小时间量之后GPU可呈现。也就是说,如果渲染过程在运行延迟之前完成,那么GPU在运行
    延迟之后呈现。由虚设引擎向GPU 0发送信号(615)。这在图7中被展示为“S”。GPU 0等待必
    需的延迟时间(620)。这在图7中被展示为“W”。GPU 0在必需的延迟时间之后呈现(625)。这
    在图7中由“P”展示。然后针对GPU 1重复所述序列。具体地,渲染命令被发送到GPU 1(630)。
    UMD向KMD中的虚设引擎提交延迟请求(635)。由虚设引擎向GPU 1发送信号(640)。GPU 1等
    待必需的延迟时间(645)。GPU 1在必需的延迟时间结束并且渲染过程完成之后呈现(650)。
    也就是说,呈现不会早于延迟时段并且只有渲染过程也完成时才进行。然后针对GPU 0和
    GPU 1重复所述序列。

    图8展示帧调步流程或序列800的另一个高级实例。渲染命令805被发送到GPU 0并
    且渲染命令810被发送到GPU 1。GPU 0呈现(P)815,并且还用信号通知(S)820GPU 0上的定
    时器(通过如图2中所展示的UMD)在GPU 1呈现之前等待(W)825一定时间量(延迟)830。在等
    待延迟830(如由“气泡”所展示)之后,GPU 0上的定时器向GPU 1发送等待(W)840结束并且
    GPU 1可呈现(P)845的信号(S)835。GPU 1然后用信号通知(S)850GPU 1上的定时器(通过如
    图2中所展示的UMD)在GPU 0呈现之前等待(W)855一定时间量(延迟)860。在这种情况下,延
    迟860与GPU 0完成渲染过程所需的时间重合。这由以下事实示出:在稍后的序列中未展示
    出“气泡”。有效地,一旦引入延迟以使GPU 0与GPU 1之间的渲染处理偏移以及使GPU 0与
    GPU 1之间的处理对齐,那么所述偏移将一直存在并且所述延迟对吞吐量或帧速率将几乎
    不具有影响。如果出于某种原因,GPU中的一个脱离对齐,那么偏移将校正所述对齐。

    在一个实施方案中,帧调步可影响呈现装置驱动器接口(DDI)和非呈现DDI。

    在本文所述的实施方案中,对帧时间的计算和管理在UMD中进行。在其他实施方案
    中,对帧时间的计算和管理在KMD中进行。

    在一个实施方案中,可以调谐延迟的量。

    在一个实施方案中,一个定时器可用来在多GPU架构中实现帧调步。这在图9中示
    出并且类似于图8工作,不同的是使用一个定时器。

    在一个实施方案中,本文所述的帧调步可在硬件合成架构、硬件翻转架构和/或软
    件合成架构中利用。

    参考图10,存在如本文在上面所描述的时间戳查询的示例性图解。具体地,图10展
    示双GPU上的动作。在每个帧中使用两个查询对象—一个在帧的起始处、指示为(Q),并且一
    个在帧的结尾处、指示为(Q’)。当查询对象由GPU处理时,所述查询对象上的GetData(G对应
    于Q并且G’对应于Q’)检索时间。Q与Q’之间的间隔是帧时间。BeginFrame()在帧的起始处
    被调用并且将Q插入GPU。EndFrame()在帧的结尾处被调用并且将Q’插入GPU(图10中的数
    字展示这种调用在示例性驱动器中发生的时间)。

    在多GPU系统上,可能的是仅主GPU(GPU 0)驱动屏幕输出而其他GPU不驱动屏幕输
    出。在这种情景下使用软件合成,其将每个从帧复制到主GPU以供显示。软件合成与硬件合
    成一样遭受微卡顿。图11展示对称交火(1:1)卡顿的实例,其中对称交火是指在处理器或系
    统中使用相同类型的GPU。额外表面(0)在GPU 0上被创建以消除撕裂。粗重竖线是主3D引擎
    上的翻转,而虚线是在主SDMA引擎上。细重阴影框表示软件合成SDMA传输及其目标。其他框
    是3D cmdbufs—框中的数字是帧编号,字母是渲染目标。对于每个从帧,三个操作需要被序
    列化:GPU 1结束在其3D引擎上渲染帧;GPU 1通过其SDMA引擎将帧传输到GPU 0,并且GPU 0
    通过其SDMA引擎将帧呈现到屏幕上。清楚的是,0、2和4停留在屏幕上的时间远短于帧1、3和
    5。

    在双GPU架构实例中,具有延迟的GPU 0上的定时器用来实现如图12所展示的帧调
    步,其中所有的呈现都具有相同长度。所述延迟可如方程1所展示来计算:


    其中GfxTimeGpu0是GPU 0渲染帧所花费的时间,GfxTimeGpu1是GPU 1渲染帧所花费
    的时间,并且SdmaTime是SDMA引擎将帧从GPU 1传输到GPU 0所花费的时间。

    在缓慢传输的实例中,假定GPU 0和GPU 1花费相同的时间来渲染帧,TGFX=
    GfxTimeCpu0=GfxTimeGpu1。如果那么GPU 1上的帧N+1比GPU 0上的帧N更早
    地完成。如图13中所展示,帧5在帧4之前完成,帧7在帧6之前完成,等等。这种布局易于受交
    叉GPU资源传输影响。图14展示其中传输是瓶颈并且TSDMA>TGFX的实例。尽管上述缓慢传输问
    题在理论上是可能的,但是所述缓慢传输实例在现实世界应用中不具有实际效果。

    除了其中GPU并不以相同速率进行渲染的非对称交火(ACF)架构,图15-18类似于
    图11-14。图17和图18展示AFR比不均衡地处于1:2(也就是说一个GPU渲染3个帧中的2个)时
    的ACF。

    图15展示ACF 1:1时的缓慢从问题的实例,并且图16展示解决缓慢从问题的帧调
    步实现方式。

    在ACF 1:2架构中,是否在3D或SDMA上翻转主帧无关紧要。原因是帧5必须等待B离
    开屏幕。

    图17展示ACF 1:2时的解决方案如何,其中“1”是瓶颈并且GfxTimeGpu1是GPU 1上
    的两个连续帧的和。

    图18展示ACF 1:2时的解决方案如何,其中“2”是瓶颈。

    一般来说,用于在渲染过程中进行帧调步的方法包括:估算多个图形处理单元
    (GPU)中的每一个的帧渲染时间,基于至少所估算的帧渲染时间来确定延迟,以及将所述延
    迟插入渲染过程中以便以均匀间隔的方式渲染帧。在一个实施方案中,延迟可基于GPU上的
    应用程序工作负载来动态调整。在一个实例中,所估算的帧渲染时间是对预定量的帧取得
    的平均值。在一个实例中,基于至少所述延迟建立心跳以控制渲染过程和帧呈现。在一个实
    例中,使用至少一个定时器来启动延迟。在一个实例中,使用时间戳查询来确定所估算的帧
    渲染时间。在一个实例中,延迟在内核模式驱动器(KMD)中实现。虚设可调度引擎在KMD中被
    创建以实现延迟。呈现在延迟期满或渲染过程完成中的较后者处发生。

    用于在渲染过程中进行帧调步的系统包括第一处理模块,所述第一处理模块被配
    置来估算多个图形处理单元(GPU)中的每一个的帧渲染时间。所述第一处理模块被配置来
    基于至少所估算的帧渲染时间来确定延迟。第二处理模块被配置来将延迟插入渲染过程中
    以便以均匀间隔的方式渲染帧。在一个实施方案中,延迟可基于GPU上的应用程序工作负载
    来动态调整。在一个实例中,所估算的帧渲染时间是对预定量的帧取得的平均值。在一个实
    例中,基于至少所述延迟建立心跳以控制渲染过程和帧呈现。在一个实例中,使用至少一个
    定时器来启动延迟。在一个实例中,使用时间戳查询来确定所估算的帧渲染时间。在一个实
    例中,第二处理模块是内核模式驱动器(KMD)。虚设可调度引擎在KMD中被创建以实现延迟。
    呈现在延迟期满或渲染过程完成中的较后者处发生。在一个实例中,第一处理模块可以是
    UMD并且第二处理单元可以是KMD。

    应理解,可能存在基于本文中公开内容的许多变型。尽管上文以特定组合来描述
    特征和元件,但是每个特征和元件可以在没有其他特征和元件的情况下单独使用,或者可
    以在具有或没有其他特征和元件的情况下以各种组合来使用。

    所提供的方法可以在通用计算机、处理器或处理器核心中实施。通过举例,合适的
    处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、
    与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可
    编程门阵列(FPGA)电路、任何其他类型的集成电路(IC)和/或状态机。这类处理器可通过使
    用处理后的硬件描述语言(HDL)指令和包括网表的其他中间数据(这类指令能够存储在计
    算机可读介质上)的结果配置制造过程来制造。此类处理的结果可以是光罩作品,所述光罩
    作品然后在半导体制造过程中用于制造实施本发明各方面的处理器。

    本文提供的方法或流程图可在并入计算机可读存储介质中以便由通用计算机或
    处理器执行的计算机程序、软件或固件中实现。计算机可读存储介质的实例包括只读存储
    器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储装置、诸如内部硬盘
    和可移动磁盘的磁性介质、磁光介质,以及诸如CD-ROM盘和数字多功能盘(DVD)的光学介
    质。

    * * *

    关 键  词:
    用于 帧调步 方法 系统
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:用于帧调步的方法和系统.pdf
    链接地址:https://www.zhuanlichaxun.net/p-5995787.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1