CN110035328A - 动态抖动和延迟容忍渲染 - Google Patents

动态抖动和延迟容忍渲染 Download PDF

Info

Publication number
CN110035328A
CN110035328A CN201811432976.0A CN201811432976A CN110035328A CN 110035328 A CN110035328 A CN 110035328A CN 201811432976 A CN201811432976 A CN 201811432976A CN 110035328 A CN110035328 A CN 110035328A
Authority
CN
China
Prior art keywords
frame
display
rate
client device
image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811432976.0A
Other languages
English (en)
Other versions
CN110035328B (zh
Inventor
鲁斯兰·季米特洛夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN110035328A publication Critical patent/CN110035328A/zh
Application granted granted Critical
Publication of CN110035328B publication Critical patent/CN110035328B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/001Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/18Image warping, e.g. rearranging pixels individually
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/087Jitter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0894Packet rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6373Control signals issued by the client directed to the server or network components for rate control, e.g. request to the server to modify its transmission rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64723Monitoring of network processes or resources, e.g. monitoring of network load
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/534Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/535Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for monitoring, e.g. of user parameters, terminal parameters, application parameters, network parameters
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • G02B2027/0178Eyeglass type
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/77Retouching; Inpainting; Scratch removal
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2320/00Control of display operating conditions
    • G09G2320/02Improving the quality of display appearance
    • G09G2320/0252Improving the response speed
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/02Handling of images in compressed format, e.g. JPEG, MPEG
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/04Changes in size, position or resolution of an image
    • G09G2340/0407Resolution change, inclusive of the use of different resolutions for different screen areas
    • G09G2340/0435Change or adaptation of the frame rate of the video stream
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/18Use of a frame buffer in a display terminal, inclusive of the display panel
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/02Networking aspects
    • G09G2370/022Centralised management of display operation, e.g. in a server instead of locally
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/04Exchange of auxiliary data, i.e. other than image data, between monitor and graphics controller

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Environmental & Geological Engineering (AREA)
  • Optics & Photonics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

描述了用于具有动态抖动容忍的流式视频的系统和技术。在一个示例中,系统包括执行应用程序并以帧速率生成与应用程序相关联的图像帧的服务器,以及客户端,所述客户端在具有预定刷新率的显示器上显示图像帧,并且监控与预定刷新速率相关的图像帧的到达时间。服务器还被配置为基于所述监控动态地改变帧速率,使得帧速率更接近地对应于客户端显示器的预定刷新速率。

Description

动态抖动和延迟容忍渲染
相关申请的交叉引用
本申请要求于2017年11月28日提交的名称为“具有动态抖动容忍的基于云渲染PLL的垂直同步(Cloud Rendering PLL-based Vsync with Dynamic Jitter Tolerance)”的美国临时专利申请No.62/591,662的优先权,其全部内容通过引用并入本文。
技术领域
本公开涉及通过通信链路发送渲染的视频的分布式系统,更具体地涉及用于通过展现有抖动的网络发送远程渲染的视频的技术,以用于在显示设备上显示,并且更具体地,涉及在远程显示设备上显示视频,其中渲染引擎无法检测远程显示设备的刷新周期。
背景技术
高清虚拟现实(VR)和增强现实(AR)正变得越来越普遍。头戴式显示设备(如虚拟现实护目镜(VR护目镜)和AR眼镜)可提供高度沉浸式体验。现代相机和渲染引擎(如NVIDIAGeForce GPU)可产生高分辨率照片般逼真的图像。在一些这样的系统中,视频由相机、GPU或其他源生成和编码。源通常可以交互式响应于用户的姿势和/或其他用户输入(例如,注视方向)产生视频。视频被传输到与用户佩戴的VR护目镜或AR眼镜相关联的本地处理器。VR护目镜或AR眼镜定期接收和显示所传输的视频帧。
更详细地,为了创建移动感,许多显示设备(例如VR护目镜)通过使屏幕以规则的周期性速率重新绘制来操作,被称为显示器的“刷新率”。如由刷新率所确定的,显示设备每秒重绘图像数十或数百次。对于特定的显示设备,刷新率可以是固定的或可配置的,取决于其类型和能力,并且通常在每秒60至200帧(fps)的范围内。例如,当VR护目镜或AR眼镜以每秒60帧(fps)的刷新率运行时,它们每16.67毫秒显示一个新图像。该时间段有时被称为“刷新间隔”,因为显示器在每个这样的时间间隔结束时用新的图像帧刷新。图形渲染引擎或其他源负责以必要的帧速率生成和发送图像帧,因此当需要显示时,显示器将具有下一个可用的图像帧。
渲染和显示每个新图像需要一定的时间量。这种延时通常被称为“延迟”。延迟在VR和AR应用中尤其重要,其中所呈现的图像需要跟上用户注视、头部方向等的变化。例如,如果用户将头快速转向左侧,则显示器必须能够跟踪快速头部转动并显示适合于用户改变头部方位的一系列图像。如果显示器落后,用户将立即注意到延迟。这种延迟可能导致不够现实、迷失方向甚至恶心。
为了降低延迟,渲染引擎通常提前操作至少一个图像帧并将下一图像帧存储在显示器本地的显示缓冲存储器中,以便在显示器需要时该帧是存在的。某些显示系统使用不止一个显示缓冲器。例如,在一些计算机中,使用两个显示缓冲器,使得在将第一显示缓冲器的内容写入显示设备时,计算机或GPU可以将新生成的图像写入第二缓冲器。显示系统可以被配置为以交替方式在缓冲器之间切换。
快速渲染硬件用于跟上显示器刷新率,并且已知各种技术用于降低图像复杂度和/或分辨率以确保图像渲染不落后。一旦下一帧存储在显示缓冲存储器中,显示刷新硬件通常读取显示缓冲存储器的内容并以显示器所要求的必要刷新时间间隔将其提供给显示设备。
在渲染引擎必须经由远程通信链路(诸如互联网和/或无线连接(例如, WIFI、GSM、蜂窝电话数据网络等))与显示器通信的环境中更频繁地观察到实时图形伪像(诸如上述那些)。由于信号不会瞬间通过空间传播,因此这些链路会固有地表现出一些延时或延迟。另外,众所周知的视频压缩技术可用于确保有足够的时间在通信链路提供的带宽上传输所需分辨率的图像。
由于这种通信链路的可变传输特性,延迟可以从一个传输变化到下一个传输。这种可变性通常被称为抖动,意味着偏离可能的周期性信号的真实周期性(即,以周期性显示刷新率发送)。这种抖动可能导致一些图像或图像的部分快速到达,而其他图像或图像的部分可能需要更长的时间来遍历从源到目的地的链路。在这些环境中,当从渲染引擎到VR护目镜或其他显示器的路径包括许多跳数(hops)和/或许多备用路径时,当传输错误和/或带宽限制需要重传和/或发生其他瞬态网络恶化的情况时,网络抖动量可能增加。
当图像渲染器将图像写入显示缓冲器的过程与显示设备的操作未充分同步时,可能发生屏幕撕裂和/或其他实时图形伪像。当在显示设备上同时显示两个不同图像的部分时,产生“屏幕撕裂”。当在显示设备绘制完整帧之前改变从中绘制显示的显示缓冲器的内容时,可能发生屏幕撕裂。例如,如果渲染引擎开始将新图像写入缓冲器,而显示设备仍在从同一缓冲器中读取较早的图像,则显示器的一部分将显示较早图像的一部分而显示器的另一部分显示新图像的一部分。当根据显示器的刷新速率写入显示缓冲器相对于读取延迟时,发生称为“扫描残迹(stutter)”的另一实时图形伪像,并且显示器从缓冲器读取并重绘陈旧(已经先前显示的)内容。
随着基于云的图形渲染越来越受欢迎,因此随着越来越多的用户开始在本地显示设备上查看远程渲染的视频图像,解决诸如上述显示的视频中实时图形伪像的出现等问题变得更加重要。基于云的渲染只是一个示例应用程序;存在许多其他应用程序,其中视频的渲染发生在第一位置处且应该执行在第二个不同位置处的所渲染的视频的显示,而不生成诸如上述那些的实时图形伪像。
由网络抖动引起的实时图形伪像不是限于某些类型的处理器的问题,并且可能在渲染引擎和/或显示客户端设备具有CPU、GPU和/或任何能够生成图像并进行显示的其他类型的处理器时发生。过去,GPU功能通常仅限于一组明确定义的图形操作。当GPU变得可编程时,这改变了。例如,在2001年,NVidia发布了其GEForce3NV20GPU,提供可编程顶点和像素着色器。之后,Nvidia开发了并行计算平台和用于图形处理单元(GPU)上的通用计算的编程模型。借助开发人员能够通过使用GPU处理能力来在执行图形任务之外还执行计算任务,从而显着加速计算应用程序。因此,GPU已经成为一种高度通用且功能强大的处理器,负责大量现代视频游戏和复杂应用程序的处理,特别是那些涉及大量视频和/或图像渲染的应用程序。GPU(以及可能还有其他类型的处理器)已经发展为能够实现高度复杂的计算所产生的高度复杂的详细图像的实时渲染。但是,为了改善与基于云的图像渲染相关联的用户体验以供不直接连接到渲染引擎的用户使用,期望消除或至少减少诸如上述那些的实时图形渲染伪像。
因此,需要用于在远程设备中最初渲染图像时改善本地显示设备上的图像显示的系统和方法。
发明内容
示例性实施例纠正了上述用于视频流的技术的一些缺陷。公开了用于提供动态抖动容忍以显示流式视频的方法、计算机可读介质和系统。
根据实施例,系统包括帧提供器和帧消耗器。帧提供器被配置为提供一系列图像帧以供帧消耗器使用。帧消耗器被配置为以预定的消耗率消耗所提供的图像帧序列,并且监控所提供的图像帧相对于预定消耗率的到达时间。帧提供器还被配置为至少部分地基于监控来调整其向帧消耗器提供图像帧的速率。
根据实施例,提供了一种将视频从视频渲染服务器设备流式传输到连接到显示设备的客户端设备的方法。该方法包括从客户端设备接收监控信息,其中监控信息包括流式视频的各个图像帧的到达时间。该方法还包括通过根据接收的监控信息加快或减慢帧速率来调整生成流式视频的图像帧的帧速率,以便以与显示设备的刷新间隔具有改进的同步传输图像帧。
根据实施例,一种电子设备包括显示器、存储器、网络接口和至少一个处理器,所述至少一个处理器被配置为重复测量包含由在远程服务器上运行的应用程序生成的图像的图像帧在电子设备处的各个到达时间和图像帧的预期到达时间之间的差异。该至少一个处理器还被配置为将关于测量的差异的信息发送到远程服务器,根据至少测量的差异调整存储器中的抖动缓冲器的大小,将所述数据帧插入到经调整的抖动缓冲器中,以及基于插入所述经调整的抖动缓冲器中的所述数据帧在显示设备上显示图像。
附图说明
图1A示出了根据某些示例性实施例的客户端-服务器动态抖动容忍渲染系统。
图1B和图1C示出了根据一些示例性实施例的诸如图1A中所示的动态抖动容忍渲染系统中的示例图像帧传输和到达时间序列。
图2A是根据一些示例性实施例的由客户端执行以执行从服务器接收的视频帧的抖动容忍显示并监控帧到达统计的示例性过程的流程图。
图2B是根据一些示例性实施例的由客户端执行以显示从服务器接收的图像帧的示例性过程的流程图。
图2C是根据一些示例性实施例的由客户端执行以动态调整抖动适应参数并向服务器提供反馈的示例性过程的流程图。
图2D是根据一些示例性实施例的由服务器计算设备执行的用于调整从在服务器上执行的游戏或其他应用程序生成的图像帧的帧速率的示例性过程的流程图。
图2E是根据一些示例性实施例的用于以根据图2D确定的帧速率生成传输图像帧的示例性过程的流程图。
图2F示出了根据一些示例性实施例的示例处理管线。
图3示出了根据实施例的并行处理单元。
图4A示出了根据实施例的图3的并行处理单元内的通用处理集群。
图4B示出了根据实施例的图3的并行处理单元的存储器分区单元。
图5A示出了根据实施例的图4A的流式多处理器。
图5B是根据实施例的使用图3的并行处理单元(PPU)实现的处理系统的概念图。
图5C示出了可以实现各种先前实施例的各种架构和/或功能的示例性系统。
图6是根据实施例的由图3的PPU实现的图形处理管线的概念图。
具体实施方式
示例性实施例提供了减轻抖动和其他导致流式传输视频中的图像质量下降的网络传输特性的影响的系统和方法。示例性实施例消除或减少诸如延迟、扫描残迹和帧撕裂的实时图像伪像,并且还可以减少用于渲染视频的功率消耗。更具体地,一些示例性实施例基于关于客户端设备处的图像帧到达的反馈来提供由在远程服务器设备上运行的应用程序执行的速率受控的图像帧生成。因此,在示例性实施例中控制服务器设备处的帧速率,使得可以以响应于用户交互并且降低或消除降低质量的实时图形伪像的方式以客户端设备的显示速率显示帧。实施例不限于广域网或云环境。在一些实施例中,游戏或应用程序的运行和渲染在连接到相同局域网、无线网络和/或无线连接的服务器上完成,作为显示游戏/应用程序生成图像的用户设备。
一些示例性实施例主动减轻实时流式图形中的至少四种常见渲染伪像的影响:延迟、扫描残迹、帧撕裂和处理能力的过度使用。在传统的渲染技术中,在这些渲染伪像之间进行了一次或更多次折衷。例如,NVIDIA GeForceNow服务的某些版本,其通过让服务器设备尽快地渲染来牺牲延迟和扫描残迹,然后以固定速率将最新可用帧传输给用户,使用户能够在多种类型的计算机上播放具有非常高质量和性能的视频游戏,通过在云中的强大服务器上渲染游戏并且将渲染的图像帧流式传输到用户的设备而无需专用游戏PC。该技术的缺点在于,除了在服务器设备上引起的延迟和/或浪费的计算能力之外,还可能存在帧时间价值或更多随机扫描残迹。
在本公开中,术语“网络渲染”用于描述从显示帧的计算机和显示设备远程执行的帧渲染。因此,网络渲染包括位于网络(诸如互联网)上的服务器设备的云渲染或渲染,并且还包括在通过无线网络或连接本地连接到 VR护目镜或其他用户设备的个人计算机或游戏控制台上执行的图像渲染。网络渲染的基本挑战之一是,通常处理器基于与所连接的显示设备的垂直消隐(vertical blank)或屏幕刷新信号同步的垂直同步(VSYNC)信号生成图像,网络渲染环境中的渲染计算机没有可以与其VSYNC的显示。实际的显示设备在网络上的另一个系统上,可能在数百毫秒之外,并且生成的图像将从当前时间之后的许多帧时间呈现给用户。
示例性实施例为渲染器(例如,渲染服务器)提供与计时器的VSYNC,并基于来自客户端设备的实际显示的反馈来调整帧速率。系统观察渲染器比客户端设备的显示速率运行得更快或更慢,并且基于来自客户端设备的关于帧到达的反馈,调整渲染帧速率。一些实施例还可以包括阻尼滤波器,并且帧速率调整可以被过度阻尼,使得渲染器需要多个帧来与客户端显示器锁定相位。锁定渲染器处的帧生成和客户端显示器处的帧显示之间的相位导致最小的延迟、扫描残迹和帧撕裂。示例性实施例消除或减少延迟、扫描残迹和帧撕裂,同时消除丢帧或至少将丢帧限制到预定阈值。另外,通过控制应用程序中的图像帧生成更符合客户端设备的实际帧显示要求,避免了诸如在NVIDIA GeForceNow服务的某些早期版本中的上述过量帧生成的情况,以及在功耗方面获得了更高的效率。
具有动态抖动容忍的渲染的系统和方法
图1A示出了根据一些示例性实施例的系统100,其提供具有动态抖动容忍的视频的网络渲染。服务器设备102向一个或更多个客户端设备(诸如客户端设备104)提供服务。由服务器设备102提供的服务包括运行应用程序118,其将通过网络或通信连接106传输的帧渲染给客户端设备104,并且基于来自帧的信息的视频(和可选的音频)在客户端设备104的显示设备108上显示。在示例性实施例中,用户使用客户端设备104的输入设备109和/或显示器108与应用程序118交互。
应用程序118可以是可以在服务器设备上运行并由客户端设备显示和交互的任何应用程序。然而,由于使用所描述的实施例,视频游戏等(其中从服务器设备到客户端设备的游戏图像的流式传输具有更严格的性能要求以便实现令人满意的质量)可以显示出最大的改进。例如,在与作为在服务器设备102上运行的第一人射击游戏的应用程序118交互时佩戴VR 护目镜148的用户将期望游戏图像几乎瞬间随着护目镜148的移动和/或输入设备109上的输入而改变/更新;而当使用个人计算机(PC)149时,与作为应用程序118运行的体育(例如,篮球)视频游戏交互的用户将期望个人计算机149的显示器上的图像几乎立即在他/她的按键按压时更新,而不管服务器是本地连接到PC 149还是通过网络连接;并且使用游戏控制器 147在作为应用程序118运行的视频游戏中交互式地竞赛汽车的用户将期望显示设备108上的图像几乎立即随着控制器147的转动而更新,而不管服务器是本地连接到PC149还是通过网络或其他通信连接而连接。
服务器设备102可以包括一个或更多个处理器,和/或可以包括一个或更多个互连的计算机。在一些示例性实施例中,服务器设备102是比客户端设备104更能够进行应用程序处理和实时图像渲染的计算机。服务器设备102包括执行应用程序118的至少一个CPU110和存储器116。服务器设备102还可以包括GPU 112和帧缓冲器114。CPU 110可以是具有任意数量的处理核和高速缓冲存储器的处理器。在应用程序118是视频游戏的场景中,图像渲染可以由GPU 112执行,并且要传输的图像可以渲染到帧缓冲器114。在从帧缓冲器114将视频帧传输到网络之前,可使用编解码器对视频帧进行编码,所述编解码器例如但不限于H264或HEVC。在这种编码期间,特别是在VR应用中,基于客户端显示器(例如,头戴式设备(HMD) 镜头参数)或用户注视方向,可以在图像的各个区域中设置不同的编解码器的压缩率。在一些实施例中,服务器设备102接收相机姿势(例如,位置和方向)和观察到姿势时的时间戳,并且通过保持历史并且大致知道何时将在客户端设备上显示视频帧,服务器设备可以推断要渲染的新的姿势,其可以更接近地匹配用户在客户端设备处实际显示时的位置。在一些实施例中,GPU 112还可以用于密集游戏处理的大部分。例如,GPU 112可以在执行图像渲染的图形上下文和计算上下文之间切换,在计算上下文中可以使用现代GPU的大量处理能力(除CPU 110之外或代替CPU 110)以执行不一定是图形的其他处理。图3中描述了示例性GPU 112。
用户经由客户端设备104与应用程序118交互。在流式传输环境中,客户端设备104可以具有但不要求具有执行其用户正在与之交互的游戏或其他应用程序的处理能力。例如,在上述场景中,正在执行游戏并且在服务器设备上渲染相关的游戏图像,并且包含渲染的游戏信息的帧通过网络传输到客户端设备104。CPU 130接收图像帧并使用图形驱动程序139控制 GPU 132,以将接收的图像帧渲染到帧缓冲器134以供显示。在客户端设备 104显示设备108上向用户显示游戏图像。用户可以通过连接到客户端设备 104的输入设备109向应用程序提供交互式输入。而图1示出了与客户端设备104交互的应用程序118,根据各种实施例,应用程序118可以包括同时在服务器设备102上运行的一个或更多个应用程序,每个应用程序与一个客户端设备104或多个客户端设备104交互。
由于客户端设备通常不需要在流式传输场景中作为服务器设备进行密集处理和/或渲染,因此客户端可能包含或不包含显示游戏图像以及获取和传输用户的交互式输入到服务器的能力之外的能力。在所示示例性实施例中,客户端设备104包括CPU 130和存储器136。CPU 130可以包括一个或更多个处理核。在客户端设备104从运行应用程序并渲染图像的服务器设备接收图像帧的流式传输场景中,客户端设备可以操作以解码所接收的图像帧并将它们显示给用户。在一些示例性实施例中,客户端设备104还可以包括GPU 132和帧缓冲器134。帧缓冲器114和134是上述显示缓冲器的示例。在一些实施例中,客户端可以使用GPU在显示之前解码从服务器接收的帧。在一些示例性实施例中,客户端还可以使用GPU132来执行附加处理和/或渲染以补充、增强或以其他方式修改游戏图像。要显示给显示设备108的图像可以被解码和/或重新渲染到帧缓冲器134以在显示设备 108上显示。图3中描述了示例性GPU 132。在一些实施例中(例如,在 VR应用中),客户端设备还可以执行“后期扭曲(late warp)”,其基于渲染帧的相机参数和当前相机参数来扭曲图像。例如,如果假设用户正在直视,且恰好在显示之前(例如,在解压/解码所接收的帧之后)渲染帧,则在一些实施例中,客户端设备可以将图像扭曲到用户实际看到的位置。与桌面VR等中的传统流式传输应用相反,某些实施例中的后期扭曲是在与网络和视频编码/解码有关的所有处理之后,并且恰好在客户端设备的显示器上向用户显示之前应用的。
客户端设备104可以是或可以包括个人计算机149(例如,具有显示器和键盘)、一对VR护目镜148或游戏控制器147(例如,具有或不具有集成显示器)中的一个或更多个。或者,客户端设备104可以是智能手机、平板电脑、笔记本电脑或其他移动和/或可穿戴计算设备。或者,客户端设备104可以替代地是任何其他类型的计算设备,其可以显示来自服务器设备的图像并接收要传输到服务器设备的用户交互输入。也就是说,例如,在各个示例性实施例中,客户端设备104的显示设备108和/或输入设备109 可以包含在游戏控制器147、VR护目镜148、PC 149或其他能够支持视频显示和接收用户交互输入的终端用户设备中的任何一个中。
显示设备108可以是任何类型的显示器。显示器可以是独立显示器(例如,独立监控器、个人计算机的监控器),或者可以合并到另一设备中,诸如游戏控制器(例如,控制器147、VR护目镜148、集成计算机或其他类型的客户端设备)。根据一些实施例,显示设备108可以具有60fps-120 fps的固定刷新率。固定刷新率可以是手动可配置的。在一些实施例中,显示设备108可以以动态可变刷新率(例如,自适应刷新率、NVIDIA的 GsyncTM、AMD的FreesyncTM)操作,例如,在30-144fps范围内。在一些示例性实施例中,可构想具有不同于上述范围的刷新率的显示设备。例如,尽管通常VR应用程序使用低持久性显示器所需的固定刷新率,但VR 和其他应用程序中的某些实施例支持可调整到服务器渲染时间和/或网络带宽的可变刷新率显示。
网络或通信连接106(以下简称为网络106)提供服务器设备102和客户端设备104之间的连接。网络106可以是互联网和/或可以包括任何类型的通信基础设施,例如一个或更多个广域网和/或一个或更多个局域网。网络106可以包括一个或更多个有线和/或一个或更多个无线网络。如上所述,一些示例性实施例旨在减轻某些网络异常(诸如抖动)的最终用户可见效果,因此,在更频繁地引起一些异常的网络中使用那些示例性实施例可以提供比常规流实现更多的改进结果。例如,尽管示例性实施例可用于其中游戏控制台通过高质量电缆连接到VR头戴式耳机的系统,但是由于从游戏控制台到护目镜的高质量线缆组成的单跳连接不太可能引起抖动,因此实施例的动态抖动控制可能不会在性能或图像质量上产生显着(例如显而易见)的差异。另一方面,如果VR护目镜通过弱无线通信连接连接到游戏控制台,则即使游戏控制台和客户端设备之间的单跳连接仍可能出现抖动,因为一些传输可能被重传一次或更多次,并且通过示例性实施例将表现出更好的性能。当渲染服务器和客户端设备之间的网络连接由多个跳数和/或多个路径和/或不同类型的网络连接组成时,抖动发生的可能性增加,并且示例性实施例可以用于实质上有利于消除或至少减轻抖动的影响。还应该注意的是,即使渲染服务器和客户端设备之间的网络或连接不容易出现抖动,但当渲染服务器和客户端设备的显示器不与时钟同步时,它们之间很可能存在随时间的偏移,并且示例性实施例可以操作以确保以最佳方式显示渲染图像。
至少根据一些实施例,应用118可以是视频游戏。服务器102根据从一个或更多个用户(例如游戏玩家或玩家)包括客户端设备104的用户接收的交互式输入执行视频游戏118。服务器102可以包括帧计时器120。在执行游戏118时,服务器102生成随后在客户端设备的显示器(例如显示设备108)处显示的图像帧的流。CPU 110和GPU 112协作以生成和渲染帧。图形驱动程序119使CPU 110能够将图像渲染以及运行应用程序118 中包含的其他任务委托给GPU 112。在一些实施例中,帧计时器120可用于图像帧的时间生成和/或传输。
服务器设备102处的反馈自适应帧速率控制器122可以操作以从客户端设备104接收反馈,并且基于包括所接收到的反馈的因素,调整帧计时器120,以便控制视频游戏118的渲染帧速率。
真实网络具有抖动,并且分组可以随机延时到达目的地。在编写本公开时,在GeForceNow中,如果图像帧在显示设备处迟到到达,则它被丢弃并且进一步,扫描残迹被引入至用户。相反,根据实施例的系统维持动态抖动缓冲器138,特征为抖动吸收参数(JAP),其定义帧在抖动缓冲器中平均花费多长时间。客户端设备104执行对进入的图像帧到达的监控 142。控制抖动缓冲器138的JAP 140可以基于监控142来配置。
如果没有抖动(并且没有预期到抖动),JAP可以设置为零。如果 99.99%的帧具有+/-5ms的到达抖动,则JAP可以设置为5ms。请注意,提前到达的帧不是问题,因为它们可以排队等待后续显示。在一些示例性实施例中,期望的目标是使帧排队等待显示,而不是使帧迟到到达和丢弃。
可以动态设置JAP以针对变化的网络条件进行调整。可以基于在客户端处测量的图像帧到达抖动以及何时改变来调整JAP的值,客户端设备104 可以通知渲染服务器102,使得它可以根据需要调整帧速率。在一些实施例中,每当JAP在客户端设备处改变时,就通知渲染服务器102。类似于锁相环(PLL)逻辑的逻辑可以自然地适合该任务。如果客户端确定要增加 JAP,则通知渲染服务器并且渲染服务器开始渲染得更快。然后帧开始以比它们显示的更快的速率到达客户端设备104,从而将抖动缓冲器缓慢地填充到期望的量。相反,如果要耗尽抖动缓冲器以最小化系统延迟,渲染服务器以较低的速率片刻生成帧。在一些示例性实施例中,抖动缓冲器不被量化为整数帧,而是基于时间的。
在游戏或其他应用程序118执行期间,由帧到达监控142生成的帧到达反馈144从客户端设备104传输到服务器设备102。来自用户(例如来自键盘、操纵杆、触摸板、头戴式显示器/护目镜、运动传感器、加速度计等) 的交互式输入142也可以从客户端设备104传输到服务器设备102。设备 102以某帧速率继续流式传输帧图像146,该帧速率根据接收的反馈144进行调整。
用于具有动态抖动容忍的渲染的示例服务器到客户端的帧序列
图1B和图1C提供了根据一些示例性实施例的在执行应用程序和渲染图像(例如,游戏或其他应用程序118)的服务器设备102处的帧传输与显示来自所接收的帧的图像的客户端设备104处所渲染的图像帧的到达的相对定时关系的示意图。在所示的示例中,服务器设备102上的应用程序118 由帧计时器120控制,以在系统环境(诸如关于图1A所描述的)中通过网络(例如,网络106)向客户端设备104发送图像帧。所示示例还示出了相应的帧到达客户端设备104,并且特别地,示意性地示出了随着图像帧通过客户端设备104处的网络接口150、抖动缓冲器138和显示设备108时的定时关系。相对于与显示设备108相关联的VSYNC信号152示出了对到达帧的显示。
图1B-图1C示出了由在服务器设备102上运行的应用程序118生成的图像帧序列A-O。在所示示例性序列的开始,服务器设备的帧计时器120 被同步到远程客户端设备显示器VSYNC信号152。如上所述,显示设备 108以对应于VSYNC信号152的规则刷新间隔连续刷新所显示的图像。
与在整个图像帧序列A-O中以规则间隔继续的显示设备108的VSYNC 152相反,响应于图像帧在从服务器设备102传输到客户端设备104 的过程中经受的网络条件,由帧计时器120控制的到服务器设备102的相应信号被连续且动态地改变。对于该描述,我们可以假设显示刷新率恒定为60fps,这意味着至少在图1B-图1C所示的整个序列中大约每16.67ms 生成VSYNC信号152。
最初,服务器设备的帧计时器120被配置为以60fps发射以匹配客户端设备显示108的刷新率。因此,服务器设备102以大约16.67ms的规则间隔生成和传输帧A-D。该初始设置可以基于在建立流式传输会话时服务器设备和客户端设备之间的会话建立协商。图1B中所示的标记示出了生成并发送帧A-D的帧计时器120的发射均匀间隔,其指示每对连续帧A-D之间的间隔为16.67ms。在一些实施例中,帧计时器120的初始速率可以略高于显示器刷新率,以便建立抖动缓冲器,因为系统可以在启动时假设一些非零抖动。
在从服务器设备102发送每个帧A-D之后,在由从服务器设备102到客户端设备104的传播延迟定义的至少某持续时间之后,各个帧到达客户端设备104的网络接口150。
位于网络接口150的水平线正下方的规则间隔的标记示出了每帧的预期到达时间。基于客户端设备的显示设备108和相关联的VSYNC 152确定客户端设备104处的“预期到达时间”。即,根据一些实施例,预期到达时间可以是在客户端设备104处接收到图像帧使得它可以在显示设备108上显示而不会受到显示之前需要缓冲的惩罚或因为迟到而被丢弃的理想时间。根据一些其他实施例,帧的预期到达时间可以是在客户端设备处的对应VSYNC152之前是预定持续时间的时间点,使得预期帧不会在抖动缓冲器中花费超过预定时间间隔。
如图1B所示,帧A和B在相应的预期到达时间在网络接口150处被接收,并且在相应的各自VSYNC信号150上显示在显示设备108上。
然而,帧C在其预期到达时间154之后的某个时间间隔到达客户端设备104的网络接口150。连续监控帧到达的客户端设备104可以生成“帧迟到-加快”消息,其被发送到服务器设备102。
在时间点156,在服务器设备102处接收“帧迟到-加快(frame late-speedup)”消息。注意,由于网络上的信号传播延时,从客户端设备104 到服务器102的“帧迟到-加快”消息直到从客户端设备104发送一段时间间隔之后才被服务器设备102接收到。因此,在所示的示例中,尽管客户端设备104在服务器设备发送帧D之前发送“帧迟到-加快”消息,但仅在根据原始帧速率发送帧D之后,才在服务器设备102处接收到消息(在时间线中的点156处)。帧D在其预期到达时间之后也到达客户端设备104(由在网络接口150上的帧D之前发生的预期到达时间标记所示)。
客户端设备104处的帧C和D的迟到到达可以由暂时网络状况(诸如改变的路由、中间节点处的延时或重传)引起,并且示出了服务器设备102 和客户端设备104之间的网络上的帧可能经历的抖动。
如图1B所示,通过在各自预期到达时间之后到达客户端设备104,在相应的显示VSYNC信号152处,帧C和D未准备好由显示设备108显示。因此,帧C和D被丢弃,而没有被显示。
当没有新帧可用于显示时,显示设备108可以继续显示先前图像。这是由于帧迟到到达而导致的扫描残迹的一个示例。
响应于在时间点156接收到“帧迟到-加快”消息,服务器设备重新配置其帧速率以加快帧生成和传输。
作为帧计时器120加快的结果,如图1B中可见,帧E-I由服务器设备 102以每对帧之间的较短间隔(即,以大于60fps的速率)传输。
作为以更快的速率传输帧E的结果,它在帧E的预期到达时间157之前到达客户端设备104。图1B中示出了这一点,帧E在帧D之后不久到达并且在网络接口150处的时间点158之前到达。
由于帧E早到,所以在响应于相应的VSYNC信号152在显示器108 上显示之前,它被缓冲在抖动缓冲器138中。帧F由服务器设备以重新配置的更快速率传输,并且在相应的预期到达时间158之前到达网络接口。如图1B所示,帧E早于其预期到达时间157的时间长度基本上短于帧F 早于其预期到达时间158的时间长度。
从图1B中还可以看出,每个帧E-I在相应的预期到达时间之前以逐渐增大的间隔到达网络接口150,并且在显示器108上显示之前在抖动缓冲器 138中花费逐渐增加的时间量。
在所示的示例中,响应于接收到帧F,客户端设备104确定比想要的更早地接收到F,例如,基于确定在相应的预期到达时间之前它到达超过预定时间间隔。在此确定时,客户端设备104通知服务器设备102减慢帧速率。该通知可以通过传输到服务器设备102的“帧早到-减慢(frame early-slowdown)”消息发布。可以在时间点158或在帧F的到达与相应的预期到达时间158之间的任何时间发布通知。在所示的示例中,当帧F到达网络接口150时,传输“帧早到-减慢”消息。在时间点160,在服务器设备处接收该消息。应该观察到,在接收到“帧早到-减慢”的时间160,帧I 已经被传输。
响应于在160接收到“帧早到-减慢”消息,服务器设备102减慢帧速率 120。例如,帧速率可以从传输帧E-I的120fps减慢到较慢的30fps,其是传输帧A-D的原始帧速率的一半。
服务器设备102以较慢的帧速率传输帧J-M。利用较慢的帧速率,帧 J-M中的每一个在其相应的预期到达时间之前以逐渐缩短的间隔到达客户端设备104的网络接口150。这在图1B中通过观察网络接口150处的帧J-M 的各个到达与它们在显示器108上的显示之间的间隔可以更清楚地看到。
客户端设备104持续监控帧的到达时间并与相应的预期到达时间进行比较。当在网络接口150处接收到帧L时,客户端设备104确定帧L早于其预期到达时间162的时间长度在预定阈值内并且通知服务器设备102该到达时间是可接受的。这可以通过在帧L的到达与其预期到达时间162之间的任何点处向服务器设备102传输“帧正常”消息来执行。
服务器设备102在时间点164接收“帧正常”消息,此时它已经传输了帧M。响应于接收到“帧正常”消息,服务器设备102确定恢复到其原始速率。例如,服务器设备102将其帧速率从30fps重新配置为60fps。
因此,帧N、O和连续帧(未示出)以原始帧速率传输,直到服务器设备102再次从客户端设备104接收到改变帧速率120的通知为止。
图1B-图1C示出了图像帧传输和到达。然而,在一些实施例中,每个图像帧作为多个分组传输。关于图1B-图1C中的图示,两个连续图像帧到达之间的间隔示出了较早帧的最后分组的到达和较晚帧的第一分组的到达之间的持续时间。
用于具有动态抖动容忍的渲染的示例客户端设备进程
图2A是根据一些示例性实施例的由客户端设备104执行以执行从服务器设备102接收的视频帧的抖动容忍显示并监控帧到达统计的示例性过程200的流程图。
在进入过程200之后,在操作202和204,客户端设备接收图像帧的各个分组,直到图像帧完成。实施例不限于任何特定的图像帧格式和/或分组格式。图像帧包括用于在显示屏上显示完整图像的图像信息。根据一些实施例,图像帧还可以包括音频信息和/或其他数据。可以使用一个或更多个分组来传输每个图像帧。根据一些实施例,图像信息以H.264格式编码。在替换实施例中,可以使用其他编码格式,例如,高效视频编码(HEVC) 或其他MPEG格式等。分组可以作为互联网协议(IP)分组传输,并且可以使用用户数据报协议(UDP)或传输控制协议(TCP)作为传输协议。在一些实施例中,实时传输协议(RTP)和实时传输控制协议(RTCP)用作会话协议以封装H.264(或其他)视频图像信息有效载荷。
在一些实施例中,接收和组装图像帧可以包括检测丢失或损坏的分组并请求重传这种丢失的分组。然而,依赖于重传来纠正分组错误在某些视频流式传输系统中可能是不实际的,例如,当分组的端到端延迟很高时。因此,在一些其他实施例中,分组可以附加地或替代地包括纠错信息(例如,前向纠错),使得可以基于所包括的前向纠错信息在接收器处纠正传输错误。操作202和204还可以具有与它们相关联的分组到达(例如,帧的各个分组的到达时间)和帧到达的统计信息的集合。在一些实施例中,帧的到达时间可以被认为是接收到该帧的所有分组的时间,或者该帧的组装完成的时间。
当客户端设备104确定已经接收到完整图像帧时,在操作205,确定最新帧相对于对应的预期到达时间或时间间隔是“早到”、“及时”还是“迟到”。
如上面关于图1B-图1C所描述的,在一些实施例中,客户端设备具有每个相应图像帧的预期到达时间。在各个实施例中,帧的预期到达时间可以被定义为相应的VSYNC信号,即在相应的VSYNC出现之前的理想时间,其具有足够的时间来处理所接收到的图像帧并且显示而不是最初将图像帧放在抖动缓冲器中,或者在客户端设备处的相应VSYNC之前的是预定持续时间的时间点,使得帧不会被预期在抖动缓冲器中花费超过预定间隔。如果帧在预期到达时间之前到达,则认为是早到;如果在预期到达时间间隔内到达,则认为是及时;并且,如果它在预期到达时间和时间间隔之后到达,那么它被认为是迟到。
如果图像帧是迟到的,则帧可能不准备在显示设备的相应刷新上被绘制,因此在操作207处丢弃该帧。在一些实施例中,如果在取用当前帧之前存在新到达的帧以扫描输出到显示器,则仅丢弃迟到的帧。
如果图像帧未因迟到而被丢弃(例如,它是早到或及时的),则在操作206处对图像帧进行解码。解码包括将图像帧的格式转换(如果需要) 为可以在客户端设备显示器上显示、内容保护处理、解压等的形式。在将图像帧放置在抖动缓冲器之前执行解码可以帮助确保所有潜在的抖动成因处理(即,通常基于诸如帧中编码的图像的复杂度之类的因素,解码时间可以在帧之间变化)在抖动缓冲器之前执行。也就是说,在这样的实施例中,写入抖动缓冲器的是经解码的图像帧。在这样的实施例中,抖动缓冲器中的帧已经被解码并准备好用于扫描输出。而且,在这样的实施例中,在操作208(如上所述)收集的帧到达时间可以包括解码各个图像帧所消耗的时间。
尽管在图2A-图2B所示的实施例中示出为在抖动缓冲器之前的图像帧上的操作,在一些其他实施例中,可以在从抖动缓冲器检索到图像帧之后执行解码操作206。
在解码之后,在操作209,将经解码的图像帧插入抖动缓冲器中。如上所述,在一些替代实施例中,插入抖动缓冲器中的帧可以不是经解码的图像帧。在一些实施例中,抖动缓冲器可以是客户端设备104的存储器中的特定区域,并且将图像帧插入抖动缓冲器包括将该图像帧写入存储器的特定区域。例如,抖动缓冲器可以是在图像帧被组装后将其所写入的存储器中的队列或其他先进先出(FIFO)数据结构,并且从中将图像帧写入显示缓冲器以便在显示屏上显示。监控统计,诸如,例如,帧数、各帧进入抖动缓冲器的进入时间和各帧从抖动缓冲器的退出时间,可以与抖动缓冲器相关联。
在一些其他实施例中,抖动缓冲器是图像帧在从接收的分组组装之后在被写入显示缓冲器和/或显示在显示设备上之前在客户端设备的存储器中的总时间。用于实现抖动缓冲器的存储器可以是客户端设备的随机存取存储器和/或与客户端设备的GPU相关联的另一存储器(除了显示缓冲器之外)。也就是说,客户端设备可以通过任何数据结构和技术来实现抖动缓冲器,以跟踪处于存储器中待写入显示缓冲器的各个图像帧,以及各个图像帧在存储器中的时间。
随后,从抖动缓冲器读取图像帧并通过诸如图2B中所示的过程210 的过程显示在显示设备上。
在操作208,收集关于抖动缓冲器中的帧所花费的时间的统计。例如,在将图像帧插入抖动缓冲器中时,可以递增缓冲器中的帧的数量,并且可以记录该帧的进入时间。在从抖动缓冲器退出该图像帧时,帧的数量可以递减,可以记录退出时间,和/或基于该帧的进入和退出时间来计算帧在抖动缓冲器中所花费的时间。
在一些实施例中,基于在被写入显示缓冲器之前各个图像帧保持在抖动缓冲器中的待处理时间来确定抖动缓冲器级别。也就是说,基于抖动缓冲器中的各个帧所花费的时间来确定抖动缓冲器级别。在一些其他实施例中,可以基于其他标准来确定抖动缓冲器级别,例如,抖动缓冲器中的帧的数量。实施例可以不要求抖动缓冲器保持或能够保持离散数量的帧。在一些实施例中,抖动缓冲器可以仅是帧时间的一小部分(例如,将帧写入存储器所花费的时间的一小部分)。
如上所述,操作208记录关于操作202-204收集的分组/帧到达统计。另外,操作208还可以收集关于各个帧相对其相应的预期到达时间是否早到、及时或迟到的信息。操作208中收集的信息还可以包括丢弃帧的计数。
图2B示出了根据一些示例性实施例的由客户端设备执行以显示从服务器设备接收的图像帧的示例性过程210的流程图。
过程210可以连续运行以在客户端设备的显示器上显示图像。根据一些实施例,过程210针对每个刷新时间运行或者与客户端设备的显示器的垂直消隐信号同步运行。在一些示例性实施例中,客户端设备或客户端设备的GPU接收紧密同步到所连接或集成的显示器的垂直消隐信号的 VSYNC信号。如操作218所示,对每个接收的VSYNC重复过程210。
在进入过程210之后,在操作212,从抖动缓冲器中读取图像帧。读取在缓冲器中最长的图像帧。这与抖动缓冲器的FIFO行为一致。在替代实施例中,除了帧在抖动缓冲器中的时间之外或作为其替代,可以使用用于选择要读取的图像帧的其他标准(例如,图像帧的类型等)。注意,如图 2A所示,当从抖动缓冲器检索帧时,在上述操作208中更新相应的帧到达统计。
在操作214,在一些实施例中,可以在显示一些图像帧之前对这些图像帧执行后期扭曲(late warping)的可选处理步骤。如上所述,后期扭曲是在解压/解码步骤之后执行的对图像帧中的图像的扭曲。可以使用后期扭曲来进一步调整图像帧,该图像帧已经由服务器设备根据在相应用户输入时获得的用户或客户端设备的姿势进行了渲染,以甚至更接近地对应于最新的用户视点。在一些实施例中,可以不执行后期扭曲,并且过程210中的处理可以在操作212之后进行到操作216,而不执行介入的后期扭曲操作 214。
在操作216,从抖动缓冲器检索到的图像帧被发送到显示设备以供显示。这包括将图像帧写入帧缓冲器以供显示设备显示。在一些示例性实施例中,从屏幕的左上方逐行读取帧缓冲器中的图像帧数据并显示。例如,在一些实施例中,响应于显示器的水平消隐(HBLANK)信号绘制每行。在完成在显示设备上绘制图像帧之后,显示设备生成垂直消隐(VBLANK) 信号以开始在显示设备上绘制下一图像帧。客户端设备和/或GPU的 VSYNC可以与显示设备的VBLANK紧密同步。客户端设备或其GPU VSYNC与所直接连接或集成的显示设备的VBLANK的同步可以基于任何传统技术。
在一些示例性实施例中,帧缓冲器成对布置。在这样的实施例中,当显示设备正在读取一个帧缓冲器用于显示时,下一个图像帧可以被写入另一个帧缓冲器。在每个连续的VSYNC信号时,显示设备读取交替的帧缓冲器以在显示设备上绘图。
在操作218,响应于下一个VSYNC,重复操作212-216以显示下一个图像帧。
图2C示出了根据一些示例性实施例的由客户端设备执行以动态调整抖动适配参数并向服务器提供反馈的示例性过程220的流程图。根据实施例,过程220可以作为图2A中所示的操作208的一部分或与之相关联地执行。
在操作222,客户端设备监控分组/帧到达和/或抖动缓冲器,如上文关于操作208所述。监控可以包括跟踪客户端设备处的连续分组/帧到达之间的间隔、各帧在抖动缓冲器中花费的时间,并确定各帧相对于相应的预期到达时间的到达时间。
在操作224,确定是否需要改变被称为JAP的抖动适配参数。如上所述,JAP表示抖动缓冲器的大小-就时间而言。在一些实施例中,确定是否改变JAP可取决于抖动缓冲器的级别是否已经改变超过JAP重新配置的时间阈值。可以通过比较抖动缓冲器的当前级别和JAP的当前值来确定该差异。
在一些实施例中,抖动缓冲器的当前级别由从抖动缓冲器检索到的最新图像帧在抖动缓冲器中花费的时间量来定义。在一些其他实施例中,抖动缓冲器的当前级别由各个帧在抖动缓冲器中花费的平均时间来定义。例如,平均值可以是对最新或预定数量的最新检索帧更加重度加权的加权平均值。在一个示例性实施例中,级别由加权平均值定义,其中最新帧被指派十分之九的权重,而JAP的最新值被指派十分之一的权重。应注意,实施例不限于所指派权重的任何特定分布。在一些实施例中,抖动缓冲器的当前级别与JAP的当前值之间的约20ms的差异可用于导致改变JAP。
JAP重新配置的时间阈值可以是硬编码的,或者可以作为可配置参数提供。
如果在操作224处的确定指示不改变JAP,则该过程220重复操作 224,直到统计导致确定要改变JAP。当确定要改变JAP时,处理进行到操作226。
在操作226,将反馈传输到服务器设备。所传输的反馈可以包括以下中的任何一项:关于一个或更多个紧接在前帧相对预期到达时间早到、及时或迟到的信息(例如,帧是早到还是迟到,以及可选地,早到或迟到多少持续时间);关于各帧的到达间隔时间的信息(例如,平均帧到达间隔时间、抖动、最小帧到达间隔时间、最大帧到达间隔时间);关于一个或更多个帧的分组的到达的信息(例如,帧的平均分组到达间隔时间);以及关于抖动缓冲器延迟的信息(例如,帧在抖动缓冲器中所花费的平均时间、最后一帧在抖动缓冲器中花费的时间)。
在操作228,基于抖动缓冲器的当前值改变JAP的值。在一些实施例中,JAP被改变为等于在操作224确定的抖动缓冲器的当前级别。在操作 228,如果需要,还可以根据新的JAP值改变抖动缓冲器的数据结构。在一些实施例中,可能不需要在每次JAP改变时改变抖动缓冲器数据结构。例如,数据结构可能能够容纳早到的任何数量的帧,并且可能仅受存储器可用性的限制。
具有动态抖动容忍的渲染的示例性服务器设备进程
图2D示出了根据一些示例性实施例的由服务器计算设备(诸如服务器设备102)执行的用于调整从在服务器上执行的游戏或其他应用程序生成的图像帧的帧速率的示例性过程230的流程图。在一些实施例中,服务器设备102可以响应于从执行图2A-2C中所示的过程200、210和220的客户端设备104接收的消息来执行过程230。
在操作232,接收来自客户端设备的一个或更多个反馈消息。如关于操作226所指出的,反馈可以包括以下中的任何一个:关于紧接在前的帧相对预期到达时间早到、及时或晚到中的一个或更多个的信息(例如,帧是早到还是晚到,以及可选地,早到或晚到多少持续时间);关于各帧的到达间隔时间的信息(例如,平均帧到达间隔时间、抖动、最小帧到达间隔时间、最大帧到达间隔时间);关于一个或更多个帧的分组的到达的信息(例如,帧的平均分组到达间隔时间);以及关于抖动缓冲器延迟的信息(例如,帧在抖动缓冲器中所花费的平均时间、最后一帧在抖动缓冲器中花费的时间)。在一些示例性实施例中,反馈消息可以包括指示服务器设备处的帧速率是否必须更快或更慢以及更快或更慢多少的浮点数。例如,指定的数字可以是分别表示更快或更慢的正数或负数。如果该数字为0,则客户端设备指示帧速率适合于客户端设备显示。
在操作233,基于所接收的反馈来监控和更新所选择的统计。所接收到的反馈消息信息包含在跟踪统计中。在一些示例性实施例中,新的反馈和跟踪的统计以加权的方式组合,其中较高的权重被分配给新的反馈。
在操作234,确定是否应该改变压缩率。在当前关于图2A-图2E描述的实施例中,当客户端设备确定应该对JAP进行实质性改变时,客户端设备传输以特定方式标记的反馈或反馈消息。因此,在操作234,基本上服务器设备确定在客户端设备处检测到的抖动变化是否是由于带宽稀缺或其他原因。如果确定带宽稀缺是当前问题,则服务器设备可以确定增加图像帧的压缩率并使帧变小。
确定是否存在当前带宽稀缺是基于从客户端设备接收的反馈中包括的分组到达信息做出的估计。如果一个或更多个在前帧中的任何一个或每一个(其中反馈信息包括用于其的分组到达统计)指示帧的所有分组实质上都是在整个估计的帧传输时间或超过整个估计的帧传输时间接收的,则服务器设备可以确定存在带宽稀缺的当前条件,然后它可以增加压缩。
如果当前未确定存在带宽稀缺,或者在设置新的压缩率之后,则过程 230进行到操作236。在操作236,确定是否改变帧速率。
基于从客户端设备接收的最新反馈确定是否在服务器设备处改变帧速率。在许多情况下,当客户端设备指示在客户端设备处接收到一个或更多个在前帧早到时,则服务器设备可以决定将帧速率重新配置为更慢。当客户端设备指示一个或更多个帧迟到时,则帧速率被重新配置为更快。当客户端指示帧及时到达时,则服务器设备不重新配置帧速率。
在操作237,基于从客户端设备接收的反馈来计算新的帧速率。新的帧速率可以与预计可接受的丢帧数量相关联-例如,指定为可接受的丢帧率。例如,在一些实施例中,计算抖动的累积分布函数的近似值,并且将目标JAP设置为期望的百分比(例如,99.9%)。在示例性实施例中,基于当前帧速率、目标JAP和抖动缓冲器的当前水平,可以如方程式(1)所示计算原始新帧速率raw-fpsnew(在应用权重之前的每秒新原始帧速率):
raw-fpsnew=raw_fpscurrent*(1+k1*(JAPtarget–jitter-buffer-levelcurrent))---(1)) 其中k1是可配置常量,并且(至少部分地)控制目标JAP多快达到。例如,较高的k1值导致比较低的k1值更快地达到目标JAP。然后可以从raw-fpsnew计算最终帧速率fpsnew,即服务器帧速率将被调整到的实际帧速率,如下面的方程式(2)所示,
fpsnew=fpscurrent*k2+raw-fpsnew*(1-k2)---(2)
其中k2是可配置常量,其是可调节的以改变分配给当前帧速率的权重。例如,在(2)中将k2设置为0.1将导致加权的服务器帧速率(fpsnew),其基于指派给当前帧速率的10%的权重和指派给新确定的原始帧速率的90%的权重。
在操作238,将帧速率设置为计算速率。可以通过改变VSYNC的间隔或到GPU以及其他处理器(诸如生成帧的CPU)的其他信号的间隔来设置帧速率。在一些实施例中,通过改变帧计时器120来改变帧速率,帧计时器120可以生成信号(例如,中断或其他信号),该信号至少到CPU 110 并且可选地还到GPU 112。如下关于图2E和图2F所描述的,帧生成可以由CPU110发起,其可以命令GPU 112执行与图像帧的生成和编码相关联的任务。
图2E示出了根据一些示例性实施例的用于以根据图2D确定的帧速率生成和传输图像帧的示例性过程240的流程图。作为服务器设备102和客户端设备104之间协商建立视频流式传输会话的结果,可以启动过程 240。如图所示,每当基于当前帧速率接收到242触发时,可以重复过程240。上面描述的过程230使服务器设备(例如服务器设备102)能够响应于从客户端接收的帧到达反馈来动态地设置帧速率。
在操作243,获得在服务器设备处从客户端设备接收的最新用户交互输入和/或姿势信息。以这种方式,要传输的图像帧可以表示关于最新可用用户信息的当前游戏或应用状态(例如,用户的姿势/视图方向和/或对游戏或其他应用的最新输入)。注意,基于从客户端设备接收的用户交互输入 142,服务器设备102处的游戏或其他应用程序处理可以与进程230和240 分开进行。
在操作244,根据当前游戏或其他应用程序状态和最新可用用户信息生成图像。可以使用任何技术来捕获当前游戏或其他应用程序状态并生成图像。
在操作246,对生成的帧进行编码。如上所述,可以使用适合于游戏或其他应用程序流的H.264或其他图像格式。根据一些实施例,经编码的图像帧包含用于在显示屏上显示的图像信息。可以根据在服务器设备中的编码器和客户端设备处的解码器之间在会话建立时协商的和/或在会话期间动态协商的图像格式参数和协议参数来执行编码。
在操作248,传输经编码的图像帧。可以在一个或更多个分组中传输图像帧。如上所述,根据一些实施例,图像帧信息和可选的相关联的音频信息可以包括在若干分组中,每个分组包括用于协议(诸如H.264、RTP/ RTCP和TCP/UDP)的协议报头信息。
具有动态抖动容忍的渲染的示例性渲染管线
图2F示出了示例性管线化生成和传输过程,例如过程240。该图示出了四级管线,其使得服务器处的CPU和GPU能够并行地在多个帧上执行工作,以在立体显示器(诸如护目镜148或其他显示器)上绘制。这四级分别是接收阶段(诸如操作243)、生成状态(诸如操作244)、编码阶段(诸如操作246)和传输阶段(诸如操作248)。这些阶段在图中所示的管线中分别表示为“R”、“G”、“E”和“S”。在一些实施例中,生成和编码管线阶段可以由GPU根据来自CPU的命令来执行。接收和传输管线阶段通常由CPU 执行。在图示中,响应于基于帧速率的每个触发器242,针对帧时间生成左眼(“L”)帧和对应的右眼(“R”)帧。在特定接收阶段中获得的用户输入或姿势信息用于生成左眼帧以及右眼帧。如图所示,管线使得左眼帧和右眼帧的各个阶段以及两个帧(例如,图中的帧1和2)的各个阶段能够并行执行。
图2F中的图示是关于四级管线。然而,一些实施例可以具有采用更少或更多数量的处理阶段的管线,其可以由各种处理组件(诸如CPU、GPU 和/或各种专用或加速处理器)同时执行。如下面关于图3-图6所描述的,在一些实施例中,GPU是大规模并行处理单元。
尽管在处理单元和某些硬件组件的上下文中描述了方法210、220、230 和240,但是方法210、220、230和240也可以由定制电路或定制电路和程序的组合来执行。例如,方法210、220、230和240可以由GPU(图形处理单元)或能够执行方法210、220、230和240的操作的任何一个或更多个处理器来执行。此外,本领域技术人员将理解,执行方法210、220、230 和240的任何系统都在本发明的实施例的范围和精神内。
动态抖动容忍的并行处理架构
现在将根据用户的期望阐述关于可以实现前述框架的各种可选架构和特征的更多说明性信息。应该特别注意的是,出于说明性目的阐述了以下信息,并且不应该被解释为以任何方式进行限制。任选的以下特征可以任选地并入或不排除所描述的其他特征。
尽管在处理单元的上下文中描述了抖动容忍视频渲染系统100,但是单元118、119、120、122、138、139、140和142中的一个或更多个可以被实现为程序、定制电路或定制电路和程序的组合。例如,单元122和142 可以由GPU(图形处理单元)、CPU(中央处理单元)或能够实现神经网络的层的任何处理器实现。此外,本领域技术人员将理解,执行抖动容限视频渲染系统100的操作的任何系统都在本发明的实施例的范围和精神内。
图3示出了根据实施例的并行处理单元(PPU)300。在一个实施例中,PPU 300是在一个或更多个集成电路器件上实现的多线程处理器。PPU 300是设计用于并行处理许多线程的延迟隐藏体系架构。线程(即,执行线程)是被配置为由PPU 300执行的指令集的实例。在一个实施例中,PPU 300 是图形处理单元(GPU),其被配置为实现用于处理三维(3D)图形数据的图形渲染管线,以便生成用于在显示装置(诸如液晶显示(LCD)设备) 上显示的二维(2D)图像数据。在其他实施例中,PPU 300可以用于执行通用计算。尽管为了说明的目的本文提供了一个示例性并行处理器,但应特别指出的是,该处理器仅出于说明目的进行阐述,并且可使用任何处理器来补充和/或替代该处理器。
一个或更多个PPU 300可以被配置为加速数千个高性能计算(HPC)、数据中心和机器学习应用。PPU 300可被配置为加速众多深度学习系统和应用,包括自动驾驶汽车平台、深度学习、高精度语音、图像和文本识别系统、智能视频分析、分子模拟、药物发现、疾病诊断、天气预报、大数据分析、天文学、分子动力学模拟、金融建模、机器人技术、工厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐等。
如图3所示,PPU 300包括输入/输出(I/O)单元305、前端单元315、调度器单元320、工作分配单元325、集线器330、交叉开关(Xbar)370、一个或更多个通用处理集群(GPC)350以及一个或更多个分区单元380。 PPU 300可以经由一个或更多个高速NVLink 310互连连接到主机处理器或其他PPU 300。PPU 300可以经由互连302连接到主机处理器或其他外围设备。PPU 300还可以连接到包括多个存储器设备304的本地存储器。在一个实施例中,本地存储器可以包括多个动态随机存取存储器(DRAM)设备。DRAM设备可以被配置为高带宽存储器(HBM)子系统,其中多个 DRAM裸晶(die)堆叠在每个设备内。
NVLink 310互连使得系统能够扩展并且包括与一个或更多个CPU结合的一个或更多个PPU 300,支持PPU 300和CPU之间的高速缓存一致性,以及CPU主控。数据和/或命令可以由NVLink 310通过集线器330传输到 PPU 300的其他单元或从其传输,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。结合图5B更详细地描述NVLink 310。
I/O单元305被配置为通过互连302从主机处理器(未示出)传输和接收通信(例如,命令、数据等)。I/O单元305可以经由互连302直接与主机处理器通信,或通过一个或更多个中间设备(诸如内存桥)与主机处理器通信。在一个实施例中,I/O单元305可以经由互连302与一个或更多个其他处理器(例如,一个或更多个PPU 300)通信。在一个实施例中,I/O 单元305实现外围组件互连高速(PCIe)接口,用于通过PCIe总线进行通信,并且互连302是PCIe总线。在替代的实施例中,I/O单元305可以实现其他类型的已知接口,用于与外部设备进行通信。
I/O单元305对经由互连302接收的分组进行解码。在一个实施例中,分组表示被配置为使PPU 300执行各种操作的命令。I/O单元305按照命令指定将解码的命令传输到PPU300的各种其他单元。例如,一些命令可以被传输到前端单元315。其他命令可以被传输到集线器330或PPU 300的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。换句话说,I/O单元305被配置为在PPU 300 的各种逻辑单元之间和之中路由通信。
在一个实施例中,由主机处理器执行的程序在缓冲器中对命令流进行编码,该缓冲器向PPU 300提供工作量用于处理。工作量可以包括要由那些指令处理的许多指令和数据。缓冲器是存储器中可由主机处理器和PPU 300两者访问(例如,读/写)的区域。例如,I/O单元305可以被配置为经由通过互连302传输的存储器请求访问连接到互连302的系统存储器中的缓冲器。在一个实施例中,主机处理器将命令流写入缓冲器,然后向PPU 300 传输指向命令流开始的指针。前端单元315接收指向一个或更多个命令流的指针。前端单元315管理一个或更多个流,从流读取命令并将命令转发到PPU 300的各个单元。
前端单元315耦合到调度器单元320,其配置各种GPC 350以处理由一个或更多个流定义的任务。调度器单元320被配置为跟踪与由调度器单元320管理的各种任务相关的状态信息。状态可以指示任务被指派给哪个 GPC 350,该任务是活动的还是不活动的,与该任务相关联的优先级等等。调度器单元320管理一个或更多个GPC 350上的多个任务的执行。
调度器单元320耦合到工作分配单元325,其被配置为分派任务以在 GPC 350上执行。工作分配单元325可以跟踪从调度器单元320接收到的多个调度任务。在一个实施例中,工作分配单元325为每个GPC 350管理待处理(pending)任务池和活动任务池。待处理任务池可以包括多个时隙 (例如,32个时隙),其包含被指派为由特定GPC 350处理的任务。活动任务池可以包括多个时隙(例如,4个时隙),用于正在由GPC 350主动处理的任务。当GPC350完成任务的执行时,该任务从GPC 350的活动任务池中逐出,并且来自待处理任务池的其他任务之一被选择和调度以在GPC 350上执行。如果GPC 350上的活动任务已经空闲,例如在等待数据依赖性被解决时,那么活动任务可以从GPC 350中逐出并返回到待处理任务池,而待处理任务池中的另一个任务被选择并调度以在GPC 350上执行。
工作分配单元325经由XBar(交叉开关)370与一个或更多个GPC 350通信。XBar370是将PPU 300的许多单元耦合到PPU 300的其他单元的互连网络。例如,XBar 370可以被配置为将工作分配单元325耦合到特定的GPC 350。虽然没有明确示出,但PPU 300的一个或更多个其他单元也可以经由集线器330连接到XBar 370。
任务由调度器单元320管理并由工作分配单元325分派给GPC 350。 GPC 350被配置为处理任务并生成结果。结果可以由GPC 350内的其他任务消耗,经由XBar 370路由到不同的GPC 350,或者存储在存储器304中。结果可以经由分区单元380写入存储器304,分区单元380实现用于从存储器304读取数据和向存储器304写入数据的存储器接口。结果可以通过 NVLink310传输到另一个PPU 304或CPU。在一个实施例中,PPU 300包括数目为U的分区单元380,其等于耦合到PPU 300的独立且不同的存储器设备304的数目。下面将结合图4B更详细地描述分区单元380。
在一个实施例中,主机处理器执行实现应用程序编程接口(API)的驱动程序内核,其使得能够在主机处理器上执行一个或更多个应用程序以调度操作用于在PPU 300上执行。在一个实施例中,多个计算机应用程序由PPU 300同时执行,并且PPU 300为多个计算机应用程序提供隔离、服务质量(QoS)和独立地址空间。应用程序可以生成指令(例如,API调用),其使得驱动程序内核生成一个或更多个任务以由PPU 300执行。驱动程序内核将任务输出到正在由PPU 300处理的一个或更多个流。每个任务可以包括一个或更多个相关线程组,本文称为线程束(warp)。在一个实施例中,线程束包括可以并行执行的32个相关线程。协作线程可以指代包括执行任务的指令并且可以通过共享存储器交换数据的多个线程。结合图5A更详细地描述线程和协作线程。
图4A示出了根据实施例的图3的PPU 300的GPC 350。如图4A所示,每个GPC 350包括用于处理任务的多个硬件单元。在一个实施例中,每个GPC 350包括管线管理器410、预光栅操作单元(PROP)415、光栅引擎425、工作分配交叉开关(WDX)480、存储器管理单元(MMU)490 以及一个或更多个数据处理集群(DPC)420。应当理解,图4A的GPC 350 可以包括代替图4A中所示单元的其他硬件单元或除图4A中所示单元之外的其他硬件单元。
在一个实施例中,GPC 350的操作由管线管理器410控制。管线管理器410管理用于处理分配给GPC 350的任务的一个或更多个DPC 420的配置。在一个实施例中,管线管理器410可以配置一个或更多个DPC 420中的至少一个来实现图形渲染管线的至少一部分。例如,DPC 420可以被配置为在可编程流式多处理器(SM)440上执行顶点着色程序。管线管理器 410还可以被配置为将从工作分配单元325接收的分组路由到GPC 350中适当的逻辑单元。例如,一些分组可以被路由到PROP 415和/或光栅引擎 425中的固定功能硬件单元,而其他分组可以被路由到DPC 420以供图元引擎435或SM 440处理。在一个实施例中,管线管理器410可以配置一个或更多个DPC 420中的至少一个以实现神经网络模型和/或计算管线。
PROP单元415被配置为将由光栅引擎425和DPC 420生成的数据路由到光栅操作(ROP)单元,结合图4B更详细地描述。PROP单元415还可以被配置为执行颜色混合的优化,组织像素数据,执行地址转换等。
光栅引擎425包括被配置为执行各种光栅操作的多个固定功能硬件单元。在一个实施例中,光栅引擎425包括设置引擎、粗光栅引擎、剔除引擎、裁剪引擎、精细光栅引擎和瓦片聚合引擎。设置引擎接收变换后的顶点并生成与由顶点定义的几何图元关联的平面方程。平面方程被传输到粗光栅引擎以生成图元的覆盖信息(例如,瓦片的x、y覆盖掩码)。粗光栅引擎的输出被传输到剔除引擎,其中与未通过z-测试的图元相关联的片段被剔除,并且未剔除的片段被传输到裁剪引擎,其中位于视锥体之外的片段被裁剪掉。那些经过裁剪和剔除后留下来的片段可以被传递到精细光栅引擎,以基于由设置引擎生成的平面方程生成像素片段的属性。光栅引擎 425的输出包括例如要由在DPC 420内实现的片段着色器处理的片段。
包括在GPC 350中的每个DPC 420包括M管线控制器(MPC)430、图元引擎435和一个或更多个SM 440。MPC 430控制DPC 420的操作,将从管线管理器410接收到的分组路由到DPC 420中的适当单元。例如,与顶点相关联的分组可以被路由到图元引擎435,图元引擎435被配置为从存储器304提取与顶点相关联的顶点属性。相反,与着色程序相关联的分组可以被传输到SM 440。
SM 440包括被配置为处理由多个线程表示的任务的可编程流式处理器。每个SM440是多线程的并且被配置为同时执行来自特定线程组的多个线程(例如,32个线程)。在一个实施例中,SM 440实现SIMD(单指令、多数据)体系架构,其中线程组(例如,warp)中的每个线程被配置为基于相同的指令集来处理不同的数据集。线程组中的所有线程都执行相同的指令。在另一个实施例中,SM 440实现SIMT(单指令、多线程)体系架构,其中线程组中的每个线程被配置为基于相同的指令集处理不同的数据集,但是其中线程组中的各个线程在执行期间被允许发散。在一个实施例中,为每个线程束维护程序计数器、调用栈和执行状态,当线程束内的线程发散时,使线程束和线程束中的串行执行之间的并发成为可能。在另一个实施例中,为每个单独的线程维护程序计数器、调用栈和执行状态,从而在线程束内和线程束之间的所有线程之间实现相等的并发。当为每个单独的线程维护执行状态时,执行相同指令的线程可以被收敛并且并行执行以获得最大效率。下面结合图5A更详细地描述SM440。
MMU 490提供GPC 350和分区单元380之间的接口。MMU 490可以提供虚拟地址到物理地址的转换、存储器保护以及存储器请求的仲裁。在一个实施例中,MMU 490提供用于执行从虚拟地址到存储器304中的物理地址的转换的一个或更多个转换后备缓冲器(TLB)。
图4B示出了根据实施例的图3的PPU 300的存储器分区单元380。如图4B所示,存储器分区单元380包括光栅操作(ROP)单元450、二级 (L2)高速缓存460和存储器接口470。存储器接口470耦合到存储器304。存储器接口470可以实现用于高速数据传输的32、64、128、1024位数据总线等。在一个实施例中,PPU 300合并了U个存储器接口470,每对分区单元380有一个存储器接口470,其中每对分区单元380连接到对应的存储器设备304。例如,PPU 300可以连接到多达Y个存储器设备304,诸如高带宽存储器堆叠或图形双数据速率版本5的同步动态随机存取存储器或其他类型的持久存储器。
在一个实施例中,存储器接口470实现HBM2存储器接口,并且Y 等于U的一半。在一个实施例中,HBM2存储器堆叠位于与PPU 300相同的物理封装上,提供与常规GDDR5SDRAM系统相比显著的功率高和面积节约。在一个实施例中,每个HBM2堆叠包括四个存储器裸晶并且Y等于 4,其中HBM2堆叠包括每个裸晶两个128位通道,总共8个通道和1024 位的数据总线宽度。
在一个实施例中,存储器304支持单错纠正双错检测(SECDED)纠错码(ECC)以保护数据。对于对数据损毁敏感的计算机应用程序,ECC 提供了更高的可靠性。在大型集群计算环境中,可靠性尤其重要,其中PPU 300处理非常大的数据集和/或长时间运行应用程序。
在一个实施例中,PPU 300实现多级存储器分层结构。在一个实施例中,存储器分区单元380支持统一存储器以为CPU和PPU 300存储器提供单个统一的虚拟地址空间,使能虚拟存储器系统之间的数据共享。在一个实施例中,由PPU 300对位于其他处理器上的存储器的访问频率被跟踪,以确保存储器页面被移动到更频繁地访问页面的PPU 300的物理存储器。在一个实施例中,NVLink 310支持地址转换服务,其允许PPU 300直接访问CPU的页表并且提供由PPU 300对CPU存储器的完全访问。
在一个实施例中,复制引擎在多个PPU 300之间或在PPU 300与CPU 之间传输数据。复制引擎可以为未映射到页表的地址生成页面错误。然后,存储器分区单元380可以服务页面错误,将地址映射到页表中,之后复制引擎可以执行传输。在常规系统中,针对多个处理器之间的多个复制引擎操作固定存储器(例如,不可分页),其显著减少了可用存储器。由于硬件分页错误,地址可以传递到复制引擎而不用担心存储器页面是否驻留,并且复制过程是否透明。
来自存储器304或其他系统存储器的数据可以由存储器分区单元380 取回并存储在L2高速缓存460中,L2高速缓存460位于芯片上并且在各个GPC 350之间共享。如图所示,每个存储器分区单元380包括与对应的存储器设备304相关联的L2高速缓存460的一部分。然后可以在GPC 350 内的多个单元中实现较低级高速缓存。例如,每个SM 440可以实现一级 (L1)高速缓存。L1高速缓存是专用于特定SM 440的专用存储器。来自 L2高速缓存460的数据可以被获取并存储在每个L1高速缓存中,以在SM 440的功能单元中进行处理。L2高速缓存460被耦合到存储器接口470和 XBar 370。
ROP单元450执行与像素颜色相关的图形光栅操作,诸如颜色压缩、像素混合等。ROP单元450还与光栅引擎425一起实现深度测试,从光栅引擎425的剔除引擎接收与像素片段相关联的样本位置的深度。测试与片段关联的样本位置相对于深度缓冲器中的对应深度的深度。如果片段通过样本位置的深度测试,则ROP单元450更新深度缓冲器并将深度测试的结果传输给光栅引擎425。将理解的是,分区单元380的数量可以不同于GPC 350的数量,并且因此每个ROP单元450可以耦合到每个GPC 350。ROP 单元450跟踪从不同GPC 350接收到的分组并且确定由ROP单元450生成的结果通过Xbar 370被路由到哪个GPC 350。尽管ROP单元450包括在图4B中的存储器分区单元380内,但是在其他实施例中,ROP单元450可以在存储器分区单元380之外。例如,ROP单元450可以驻留在GPC 350或另一个单元中。
图5A示出了根据实施例的图4A的流式多处理器440。如图5A所示, SM 440包括指令高速缓存505、一个或更多个调度器单元510、寄存器文件520、一个或更多个处理核550、一个或更多个特殊功能单元(SFU)552、一个或更多个加载/存储单元(LSU)554、互连网络580、共享存储器/L1 高速缓存570。
如上所述,工作分配单元325调度任务以在PPU 300的GPC 350上执行。任务被分配给GPC 350内的特定DPC 420,并且如果任务与着色器程序相关联,则该任务可以被分配给SM 440。调度器单元510接收来自工作分配单元325的任务并且管理指派给SM 440的一个或更多个线程块的指令调度。调度器单元510调度线程块以作为并行线程的线程束执行,其中每个线程块被分配至少一个线程束。在一个实施例中,每个线程束执行32 个线程。调度器单元510可以管理多个不同的线程块,将线程束分配给不同的线程块,然后在每个时钟周期期间将来自多个不同的协作组的指令分派到各个功能单元(例如,核心550、SFU 552和LSU554)。
协作组是用于组织通信线程组的编程模型,其允许开发者表达线程正在进行通信所采用的粒度,使得能够表达更丰富、更高效的并行分解。协作启动API支持线程块之间的同步性,以执行并行算法。常规的编程模型为同步协作线程提供了单一的简单结构:跨线程块的所有线程的栅栏 (barrier)(例如,syncthreads()函数)。然而,程序员通常希望以小于线程块粒度的粒度定义线程组,并在所定义的组内同步,以集体的全组功能接口(collective group-wide function interface)的形式使能更高的性能、设计灵活性和软件重用。
协作组使得程序员能够在子块(即,像单个线程一样小)和多块粒度处明确定义线程组并且执行集体操作,诸如协作组中的线程上的同步性。编程模型支持跨软件边界的干净组合,以便库和效用函数可以在本地环境中安全地同步,而无需对收敛进行假设。协作组图元启用合作伙伴并行的新模式,包括生产者-消耗器并行、机会主义并行以及跨整个线程块网格的全局同步。
分派单元515被配置为向一个或更多个功能单元传送指令。在该实施例中,调度器单元510包括两个分派单元515,其使得能够在每个时钟周期期间调度来自相同线程束的两个不同指令。在替代实施例中,每个调度器单元510可以包括单个分派单元515或附加分派单元515。
每个SM 440包括寄存器文件520,其提供用于SM 440的功能单元的一组寄存器。在一个实施例中,寄存器文件520在每个功能单元之间被划分,使得每个功能单元被分配寄存器文件520的专用部分。在另一个实施例中,寄存器文件520在由SM 440执行的不同线程束之间被划分。寄存器文件520为连接到功能单元的数据路径的操作数提供临时存储。
每个SM 440包括L个处理核550。在一个实施例中,SM 440包括大量(例如128个等)不同的处理核550。每个核心550可以包括完全管线化的、单精度、双精度和/或混合精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的IEEE 754-2008标准。在一个实施例中,核心550包括64个单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心(tensor core)。
张量核心被配置为执行矩阵运算,并且在一个实施例中,一个或更多个张量核心被包括在核心550中。具体地,张量核心被配置为执行深度学习矩阵运算,诸如用于神经网络训练和推理的卷积运算。在一个实施例中,每个张量核心在4×4矩阵上运算并且执行矩阵乘法和累加运算D=A×B+ C,其中A、B、C和D是4×4矩阵。
在一个实施例中,矩阵乘法输入A和B是16位浮点矩阵,而累加矩阵C和D可以是16位浮点或32位浮点矩阵。张量核心在16位浮点输入数据以及32位浮点累加上运算。16位浮点乘法需要64次运算,产生全精度的积,然后使用32位浮点与4×4×4矩阵乘法的其他中间积相加来累加。在实践中,张量核心用于执行由这些较小的元素建立的更大的二维或更高维的矩阵运算。API(诸如CUDA 9C++API)公开了专门的矩阵加载、矩阵乘法和累加以及矩阵存储运算,以便有效地使用来自CUDA-C++程序的张量核心。在CUDA层面,线程束级接口假定16×16尺寸矩阵跨越线程束的全部32个线程。
每个SM 440还包括执行特殊函数(例如,属性评估、倒数平方根等) 的M个SFU552。在一个实施例中,SFU 552可以包括树遍历单元,其被配置为遍历分层树数据结构。在一个实施例中,SFU 552可以包括被配置为执行纹理贴图过滤操作的纹理单元。在一个实施例中,纹理单元被配置为从存储器304加载纹理贴图(例如,纹理像素的2D阵列)并且对纹理贴图进行采样以产生经采样的纹理值,用于在由SM 440执行的着色器程序中使用。在一个实施例中,纹理贴图被存储在共享存储器/L1高速缓存470 中。纹理单元实现纹理操作,诸如使用mip贴图(例如,不同细节层次的纹理贴图)的过滤操作。在一个实施例中,每个SM440包括两个纹理单元。
每个SM 440还包括N个LSU 554,其实现共享存储器/L1高速缓存 570和寄存器文件520之间的加载和存储操作。每个SM 440包括将每个功能单元连接到寄存器文件520以及将LSU 554连接到寄存器文件520、共享存储器/L1高速缓存570的互连网络580。在一个实施例中,互连网络 580是交叉开关,其可以被配置为将任何功能单元连接到寄存器文件520中的任何寄存器,以及将LSU 554连接到寄存器文件和共享存储器/L1高速缓存570中的存储器位置。
共享存储器/L1高速缓存570是片上存储器阵列,其允许数据存储和 SM 440与图元引擎435之间以及SM 440中的线程之间的通信。在一个实施例中,共享存储器/L1高速缓存570包括128KB的存储容量并且在从SM 440到分区单元380的路径中。共享存储器/L1高速缓存570可以用于高速缓存读取和写入。共享存储器/L1高速缓存570、L2高速缓存460和存储器304中的一个或更多个是后备存储。
将数据高速缓存和共享存储器功能组合成单个存储器块为两种类型的存储器访问提供最佳的总体性能。该容量可由程序用作不使用共享存储器的高速缓存。例如,如果将共享存储器配置为使用一半容量,则纹理和加载/存储操作可以使用剩余容量。在共享存储器/L1高速缓存570内的集成使共享存储器/L1高速缓存570起到用于流式传输数据的高吞吐量管道的作用,并且同时提供对频繁重用数据的高带宽和低延迟的访问。
当被配置用于通用并行计算时,与图形处理相比,可以使用更简单的配置。具体地,图3所示的固定功能图形处理单元被绕过,创建了更简单的编程模型。在通用并行计算配置中,工作分配单元325将线程块直接指派并分配给DPC 420。块中的线程执行相同的程序,使用计算中的唯一线程ID来确保每个线程生成唯一结果,使用SM 440执行程序并执行计算,使用共享存储器/L1高速缓存570以在线程之间通信,以及使用LSU 554 通过共享存储器/L1高速缓存570和存储器分区单元380读取和写入全局存储器。当被配置用于通用并行计算时,SM 440还可以写入调度器单元320 可用来在DPC 420上启动新工作的命令。
PPU 300可以被包括在台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数码相机、运载工具、头戴式显示器、手持式电子设备等中。在一个实施例中,PPU 300包含在单个半导体衬底上。在另一个实施例中,PPU 300 与一个或更多个其他器件(诸如附加PPU 300、存储器304、精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数字-模拟转换器(DAC) 等)一起被包括在片上系统(SoC)上。
在一个实施例中,PPU 300可以被包括在图形卡上,图形卡包括一个或更多个存储器设备304。图形卡可以被配置为与台式计算机的主板上的 PCIe插槽接口。在又一个实施例中,PPU 300可以是包含在主板的芯片集中的集成图形处理单元(iGPU)或并行处理器。
具有多个GPU和CPU的系统被用于各种行业,因为开发者在应用(诸如人工智能计算)中暴露和利用更多的并行性。在数据中心、研究机构和超级计算机中部署具有数十至数千个计算节点的高性能GPU加速系统,以解决更大的问题。随着高性能系统内处理设备数量的增加,通信和数据传输机制需要扩展以支持该增加带宽。
图5B是根据实施例的使用图3的PPU 300实现的处理系统500的概念图。示例性系统500可以被配置为实现图2A-2E中所示的方法210、220、 230和240。处理系统500包括CPU530、交换机555和多个PPU 300中的每一个以及相应的存储器304。NVLink 310提供每个PPU300之间的高速通信链路。尽管图5B中示出了特定数量的NVLink 310和互连302连接,但是连接到每个PPU 300和CPU 530的连接的数量可以改变。交换机555 在互连302和CPU 530之间接口。PPU 300、存储器304和NVLink 310可以位于单个半导体平台上以形成并行处理模块525。在一个实施例中,交换机555支持两个或更多个在各种不同连接和/或链路之间接口的协议。
在另一个实施例(未示出)中,NVLink 310在每个PPU 300和CPU 530 之间提供一个或更多个高速通信链路,并且交换机555在互连302和每个 PPU 300之间进行接口。PPU300、存储器304和互连302可以位于单个半导体平台上以形成并行处理模块525。在又一个实施例(未示出)中,互连 302在每个PPU 300和CPU 530之间提供一个或更多个通信链路,并且交换机555使用NVLink 310在每个PPU 300之间进行接口,以在PPU 300 之间提供一个或更多个高速通信链路。在另一个实施例(未示出)中, NVLink 310在PPU300和CPU 530之间通过交换机555提供一个或更多个高速通信链路。在又一个实施例(未示出)中,互连302在每个PPU 300 之间直接地提供一个或更多个通信链路。可以使用与NVLink 310相同的协议将一个或更多个NVLink 310高速通信链路实现为物理NVLink互连或者片上或裸晶上互连。
在本说明书的上下文中,单个半导体平台可以指在裸晶或芯片上制造的唯一的单一的基于半导体的集成电路。应该注意的是,术语单个半导体平台也可以指具有增加的连接的多芯片模块,其模拟片上操作并通过利用常规总线实现方式进行实质性改进。当然,根据用户的需要,各种电路或器件还可以分开放置或以半导体平台的各种组合来放置。可选地,并行处理模块525可以被实现为电路板衬底,并且PPU 300和/或存储器304中的每一个可以是封装器件。在一个实施例中,CPU 530、交换机555和并行处理模块525位于单个半导体平台上。
在一个实施例中,每个NVLink 310的信令速率是20到25千兆位/秒,并且每个PPU300包括六个NVLink 310接口(如图5B所示,每个PPU 300 包括五个NVLink 310接口)。每个NVLink 310在每个方向上提供25千兆位/秒的数据传输速率,其中六条链路提供300千兆位/秒。当CPU 530还包括一个或更多个NVLink 310接口时,NVLink 310可专门用于如图5B所示的PPU到PPU通信,或者PPU到PPU以及PPU到CPU的某种组合。
在一个实施例中,NVLink 310允许从CPU 530到每个PPU 300的存储器304的直接加载/存储/原子访问。在一个实施例中,NVLink 310支持一致性操作,允许从存储器304读取的数据被存储在CPU 530的高速缓存分层结构中,减少了CPU 530的高速缓存访问延迟。在一个实施例中, NVLink 310包括对地址转换服务(ATS)的支持,允许PPU 300直接访问CPU 530内的页表。一个或更多个NVLink 310还可以被配置为以低功率模式操作。
图5C示出了示例性系统565,其中可以实现各种先前实施例的各种体系架构和/或功能。示例性系统565可以被配置为实现图2A-2E中所示的方法210、220、230和240。
如图所示,提供系统565,其包括连接到通信总线575的至少一个中央处理单元530。通信总线575可以使用任何合适的协议来实现,诸如PCI (外围组件互连)、PCI-Express、AGP(加速图形端口)、超传输或任何其他总线或一个或更多个点对点通信协议。系统565还包括主存储器540。控制逻辑(软件)和数据被存储在主存储器540中,主存储器540可以采取随机存取存储器(RAM)的形式。
系统565还包括输入设备560、并行处理系统525和显示设备545,即常规CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离子显示器等。可以从输入设备560(例如键盘、鼠标、触摸板、麦克风等) 接收用户输入。前述模块和/或设备中的每一个甚至可以位于单个半导体平台上以形成系统565。可选地,根据用户的需要,各个模块还可以分开放置或以半导体平台的各种组合来放置。
此外,系统565可以出于通信目的通过网络接口535耦合到网络(例如,电信网络、局域网(LAN)、无线网络、广域网(WAN)(诸如互联网)、对等网络、电缆网络等)。
系统565还可以包括辅助存储(未示出)。辅助存储610包括例如硬盘驱动器和/或可移除存储驱动器、代表软盘驱动器、磁带驱动器、光盘驱动器、数字多功能盘(DVD)驱动器、记录设备、通用串行总线(USB) 闪存。可移除存储驱动器以众所周知的方式从可移除存储单元读取和/或写入可移除存储单元。
计算机程序或计算机控制逻辑算法可以存储在主存储器540和/或辅助存储中。这些计算机程序在被执行时使得系统565能够执行各种功能。存储器540、存储和/或任何其他存储是计算机可读介质的可能示例。
各种在先附图的体系架构和/或功能可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统和/或任何其他所需的系统的上下文中实现。例如,系统565可以采取台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数字相机、运载工具、头戴式显示器、手持式电子设备、移动电话设备、电视机、工作站、游戏控制台、嵌入式系统和/或任何其他类型的逻辑的形式。
虽然上文已经描述了各种实施例,但应该理解的是,它们仅作为示例渲染,而不是限制。因此,本申请的广度和范围不应被任何上述示例性实施例限制,而应仅根据以下和随后提交的权利要求及其等同物来限定。
图形处理管线
在一个实施例中,PPU 300包括图形处理单元(GPU)。PPU 300被配置为接收指定用于处理图形数据的着色程序的命令。图形数据可以被定义为一组图元,例如点、线、三角形、四边形、三角形带等。典型地,图元包括指定图元的多个顶点(例如,在模型空间坐标系中)的数据以及与图元的每个顶点相关联的属性。PPU 300可以被配置为处理图元以生成帧缓冲器(例如,用于显示器的像素中的每一个的像素数据)。
应用程序将场景的模型数据(例如,顶点和属性的集合)写入存储器 (诸如系统存储器或存储器304)。模型数据定义可能在显示器上可见的对象中的每一个。然后应用程序对驱动程序内核进行API调用,其请求要被渲染和显示的模型数据。驱动程序内核读取模型数据并将命令写入一个或更多个流以执行操作来处理模型数据。这些命令可以参考要在PPU 300的 SM 440上实现的不同着色程序,包括顶点着色、外壳着色、域着色、几何着色和像素着色中的一个或更多个。例如,SM 440中的一个或更多个可以被配置为执行顶点着色程序,其处理由模型数据定义的多个顶点。在一个实施例中,不同的SM 440可以被配置为同时执行不同的着色程序。例如, SM 440的第一子集可以被配置为执行顶点着色程序,而SM440的第二子集可以被配置为执行像素着色程序。SM 440的第一子集处理顶点数据以产生经处理的顶点数据,并将经处理的顶点数据写入L2高速缓存460和/或存储器304。在经处理的顶点数据被光栅化(例如,从三维数据转换成屏幕空间中的二维数据)以产生片段数据之后,SM 440的第二子集执行像素着色以产生经处理的片段数据,然后将其与其他经处理的片段数据混合并被写入存储器304中的帧缓冲器。顶点着色程序和像素着色程序可以同时执行,以管线方式处理来自同一场景的不同数据,直到该场景的所有模型数据已经被渲染到帧缓冲器。然后,帧缓冲器的内容被传送到显示控制器以在显示设备上显示。
图6是根据实施例的由图3的PPU 300实现的图形处理管线600的概念图。图形处理管线600是被实现以从3D几何数据生成2D计算机生成图像的处理步骤的抽象流程图。众所周知,管线架构可以通过将操作分成多个阶段来更高效地执行长延迟操作,其中每个阶段的输出耦合到下一个连续阶段的输入。因此,图形处理管线600接收从图形处理管线600的一个阶段传送到下一阶段的输入数据601,以生成输出数据602。在一个实施例中,图形处理管线600可表示由API定义的图形处理管线。作为选择,图形处理管线600可以在先前附图和/或一个或更多个任何后续附图的功能和架构的上下文中实现。
如图6所示,图形处理管线600包括包含多个阶段的管线架构。这些阶段包括但不限于数据组装阶段610、顶点着色阶段620、图元组装阶段 630、几何着色阶段640、视口缩放、剔除和裁剪(viewport scale,cull,and clip, VSCC)阶段650、光栅化阶段660、片段着色阶段670和光栅操作阶段680。在一个实施例中,输入数据601包括命令,其配置处理单元以实现图形处理管线600的阶段,并配置几何图元(例如,点、线、三角形、四边形、三角形带或扇形等)以由这些阶段处理。输出数据602可以包括像素数据 (例如,颜色数据),其被复制到存储器中的帧缓冲器或其他类型的表面数据结构中。
数据组装阶段610接收输入数据601,其指定用于高阶表面、图元等的顶点数据。数据组装阶段610收集临时存储或队列中的顶点数据,诸如通过从主机处理器接收包括指向存储器中的缓冲器的指针的命令并从该缓冲器读取顶点数据。顶点数据然后被传送到顶点着色阶段620以进行处理。
顶点着色阶段620通过对顶点中的每一个执行一次一组操作(例如,顶点着色器或程序)来处理顶点数据。顶点可以例如被指定为与一个或更多个顶点属性(例如,颜色、纹理坐标、表面法线等)相关联的4坐标向量(例如,<x,y,z,w>)。顶点着色阶段620可以操纵各个顶点属性,诸如位置、颜色、纹理坐标等。换句话说,顶点着色阶段620对与顶点相关联的顶点坐标或其他顶点属性执行操作。这些操作通常包括光照操作 (即,修改顶点的颜色属性)和变换操作(例如,修改顶点的坐标空间)。例如,可以使用对象坐标空间中的坐标来指定顶点,其通过将坐标乘以矩阵进行变换,该矩阵将坐标从对象坐标空间转换到世界空间或归一化设备坐标(normalized-device-coordinate,NCD)空间。顶点着色阶段620生成被传送到图元组装阶段630的经变换的顶点数据。
图元组装阶段630收集由顶点着色阶段620输出的顶点并且将顶点分组成几何图元以由几何着色阶段640处理。例如,图元组装阶段630可以被配置为将每三个连续顶点分组为用于传送到几何着色阶段640的几何图元(例如,三角形)。在一些实施例中,特定顶点可以被重新用于连续几何图元(例如,三角形带中的两个连续三角形可以共享两个顶点)。图元组装阶段630将几何图元(例如,相关联的顶点的集合)传送到几何着色阶段 640。
几何着色阶段640通过对几何图元执行一组操作(例如,几何着色器或程序)来处理几何图元。曲面细分(tessellation)操作可以从每个几何图元生成一个或更多个几何图元。换言之,几何着色阶段640可以将每个几何图元细分为两个或更多个几何图元的更精细的网格,以由图形处理管线 600的其余部分进行处理。几何着色阶段640将几何图元传送到视口SCC 阶段650。
在一个实施例中,图形处理管线600可以在流式多处理器和顶点着色阶段620、图元组装阶段630、几何着色阶段640、片段着色阶段670和/ 或与其相关联的硬件/软件内操作,可顺序地执行处理操作。一旦顺序处理操作完成,在一个实施例中,视口SCC阶段650可以利用数据。在一个实施例中,由图形处理管线600中的阶段的一个或更多个处理的图元数据可以被写入高速缓存(例如,L1高速缓存、顶点高速缓存等)中。在这种情况下,在一个实施例中,视口SCC阶段650可以访问高速缓存中的数据。在一个实施例中,视口SCC阶段650和光栅化阶段660被实现为固定功能电路。
视口SCC阶段650执行几何图元的视口缩放、剔除和裁剪。正被渲染的每个表面都与抽象相机位置相关联。相机位置表示正观看该场景的观看者的位置并定义了包围该场景的对象的视锥体。视锥体可以包括观看平面、后平面和四个裁剪平面。完全位于视锥体之外的任何几何图元都可被剔除(例如丢弃),因为这些几何图元将不会对最终渲染的场景做出贡献。部分位于视锥体内并且部分位于视锥体外的任何几何图元可以被裁剪(例如,转换为被包围在视锥体内的新的几何图元)。此外,可以基于视锥体的深度来对每个几何图元进行缩放。然后将所有可能可见的几何图元传送到光栅化阶段660。
光栅化阶段660将3D几何图元转换成2D片段(例如,能够用于显示等)。光栅化阶段660可以被配置为利用几何图元的顶点来设置一组平面方程,从中可以内插各种属性。光栅化阶段660还可以计算多个像素的覆盖掩码,其指示像素的一个或更多个样本位置是否拦截几何图元。在一个实施例中,还可以执行z测试以确定几何图元是否被已经被光栅化的其他几何图元遮挡。光栅化阶段660生成片段数据(例如,与每个被覆盖像素的特定样本位置相关联的内插顶点属性),其被传送到片段着色阶段670。
片段着色阶段670通过对片段中的每一个执行一组操作(例如,片段着色器或程序)来处理片段数据。片段着色阶段670可以生成片段的像素数据(例如,颜色值),诸如通过使用片段的内插纹理坐标执行光照操作或采样纹理贴图。片段着色阶段670生成像素数据,其被传输到光栅操作阶段680。
光栅操作阶段680可对像素数据执行各种操作,诸如执行阿尔法测试、模板测试(stencil test)以及将像素数据与对应于与像素相关联的其他片段的其他像素数据混合。当光栅操作阶段680已经完成对像素数据(例如,输出数据602)的处理时,可以将像素数据写入渲染目标,诸如帧缓冲器、颜色缓冲器等。
应当领会,除上述阶段中的一个或更多个以外或代替上述阶段中的一个或更多个,一个或更多个额外的阶段可以被包括在图形处理管线600中。抽象图形处理管线的各种实现方式可以实现不同的阶段。此外,在一些实施例中,上述阶段中的一个或更多个可以从图形处理管线中排除(诸如几何着色阶段640)。其他类型的图形处理管线被认为是在本公开的范围内所构想的。此外,图形处理管线600的任何阶段可以由图形处理器(诸如PPU300)内的一个或更多个专用硬件单元来实现。图形处理管线600的其他阶段可以由可编程硬件单元(诸如PPU 300的SM 440)来实现。
图形处理管线600可以经由由主机处理器(诸如CPU)执行的应用程序来实现。在一个实施例中,设备驱动程序可以实现应用程序编程接口 (API),其定义可以被应用程序利用以生成用于显示的图形数据的各种功能。设备驱动程序是软件程序,其包括控制PPU 300的操作的多个指令。 API为程序员提供抽象,其允许程序员利用专用图形硬件(诸如PPU300) 来生成图形数据而不要求程序员利用PPU 300的特定指令集。应用程序可以包括被路由到PPU 300的设备驱动程序的API调用。设备驱动程序解释 API调用并执行各种操作以响应API调用。在一些情况下,设备驱动程序可以通过在CPU上执行指令来执行操作。在其他情况下,设备驱动程序可以至少部分地通过利用CPU和PPU 300之间的输入/输出接口在PPU300 上启动操作来执行操作。在一个实施例中,设备驱动程序被配置为利用PPU 300的硬件来实现图形处理管线600。
可以在PPU 300内执行各种程序以便实现图形处理管线600的各个阶段。例如,设备驱动程序可以启动PPU 300上的内核以在一个SM 440(或多个SM 440)上执行顶点着色阶段620。设备驱动程序(或由PPU 400执行的初始内核)还可启动PPU 400上的其他内核以执行图形处理管线600 的其他阶段,诸如几何着色阶段640和片段着色阶段670。另外,图形处理管线600的阶段中的一些可以在固定单元硬件(诸如在PPU 400内实现的光栅器或数据组装器)上实现。应当领会,在被SM 440上的后续内核处理之前,来自一个内核的结果可以由一个或更多个中间固定功能硬件单元处理。
机器学习
在处理器(诸如PPU 300)上开发的深度神经网络(DNN)已经用于各种使用情况:从自驾车到更快药物开发,从在线图像数据库中的自动图像字幕到视频聊天应用中的智能实时语言翻译。深度学习是一种技术,它建模人类大脑的神经学习过程,不断学习,不断变得更聪明,并且随着时间的推移更快地传送更准确的结果。一个孩子最初是由成人教导,以正确识别和分类各种形状,最终能够在没有任何辅导的情况下识别形状。同样,深度学习或神经学习系统需要在物体识别和分类方面进行训练,以便在识别基本物体、遮挡物体等同时还有为物体分配情景时变得更加智能和高效。
在最简单的层面上,人类大脑中的神经元查看接收到的各种输入,将重要性级别分配给这些输入中的每一个,并且将输出传递给其他神经元以进行处理。人造神经元或感知器是神经网络的最基本模型。在一个示例中,感知器可以接收一个或更多个输入,其表示感知器正被训练为识别和分类的对象的各种特征,并且在定义对象形状时,这些特征中的每一个基于该特征的重要性赋予一定的权重。
深度神经网络(DNN)模型包括许多连接的节点(例如,感知器、玻尔兹曼机器、径向基函数、卷积层等)的多个层,其可以用大量输入数据来训练以快速高精度地解决复杂问题。在一个示例中,DNN模型的第一层将汽车的输入图像分解为各个部分,并查找基本图案(诸如线条和角)。第二层组装线条以寻找更高级别的图案,诸如轮子、挡风玻璃和镜子。下一层识别运载工具类型,最后几层为输入图像生成标签,识别特定汽车品牌的型号。
一旦DNN被训练,DNN就可以被部署并用于在被称为推理 (inference)的过程中识别和分类对象或图案。推理的示例(DNN从给定输入中提取有用信息的过程)包括识别沉积在ATM机中的支票存款上的手写数字、识别照片中朋友的图像、向超过五千万用户提供电影推荐、识别和分类不同类型的汽车、行人和无人驾驶汽车中的道路危险、或实时翻译人类言语。
在训练期间,数据在前向传播阶段流过DNN,直到产生预测为止,其指示对应于输入的标签。如果神经网络没有正确标记输入,则分析正确标签和预测标签之间的误差,并且在后向传播阶段期间针对每个特征调整权重,直到DNN正确标记该输入和训练数据集中的其他输入为止。训练复杂的神经网络需要大量的并行计算性能,包括由PPU 300支持的浮点乘法和加法。与训练相比,推理的计算密集程度比训练更低,是一个延迟敏感过程,其中经训练的神经网络应用于它以前没有见过的新的输入,以进行图像分类、翻译语音以及通常推理新的信息。
神经网络严重依赖于矩阵数学运算,并且复杂的多层网络需要大量的浮点性能和带宽来提高效率和速度。采用数千个处理核,针对矩阵数学运算进行了优化,并传送数十到数百TFLOPS的性能,PPU 300是能够传送基于深度神经网络的人工智能和机器学习应用所需性能的计算平台。
一些动态抖动和延迟容忍实施例的示例性技术优点
某些示例性实施例提供改进的虚拟现实和/或其他实时图形渲染。特别地,某些示例性实施例改进了流式传输环境中的图形显示,其中图像渲染服务器通过网络或其他无线连接与实际显示设备连接。与在流式传输环境中改善所显示的视频质量的传统努力相反,某些示例性实施例被设计为同时解决包括扫描残迹、延迟和屏幕撕裂的实时图形显示伪像的多个问题。通过实现抖动缓冲器来减少或消除干扰;通过主动和动态地最小化帧在抖动缓冲器中花费的时间来减少延迟;通过根据客户端显示器的实际刷新率动态调整渲染服务器上的应用程序的帧速率来减少或消除屏幕撕裂。实施例中使用的抖动容忍技术的动态特性提供了高度灵活的系统,其可以在许多类型的客户端-服务器环境和许多不同类型的网络和/或服务器和客户端之间的连接中提供高质量的流式视频。另外,一些示例性实施例还通过避免或减少超过实际显示器的显示能力的帧的生成来提供降低的功耗。更进一步地,一些实施例具有不需要维护客户端和服务器设备之间同步的时钟的益处。更进一步地,一些实施例可以为任何类型的图像格式提供动态抖动容忍实时图像显示的益处。
一些实施例可用于改善任何类型的渲染服务器与具有显示器的任何类型的客户端设备之间的流式视频的质量。一些实施例可以包括用于将流式视频云渲染到固定或移动/便携式客户端设备的系统,例如个人计算机、游戏控制台、智能电话、手持式计算机、VR护目镜、头戴式显示器和车辆中的控制台。其他实施例可以包括通过无线或其他类型的连接的虚拟现实游戏等。
鉴于上述教导,本发明的许多修改和变化都是可能的。因此,应当理解,在所附权利要求的范围内,本发明可以以不同于本文具体描述的方式实施。

Claims (26)

1.一种系统,包括:
帧提供器,被配置为提供由帧消耗器消耗的图像帧序列;
所述帧消耗器,被配置为以预定的消耗率消耗所提供的图像帧序列,并监控所提供的图像帧相对于预定消耗率的到达时间,
其中,所述帧提供器还被配置为至少部分地基于所述监控来调整其向所述帧消耗器提供图像帧的速率。
2.根据权利要求1所述的系统,其中,所述帧消耗器还被配置为通过抖动缓冲器显示所述图像帧。
3.根据权利要求2所述的系统,其中,所述帧提供器还被配置为基于所述图像帧之一是否比相应的刷新间隔更早或更晚地到达所述帧消耗器,来改变用于向所述帧消耗器提供所述图像帧的帧速率。
4.根据权利要求3所述的系统,其中,所述帧提供器还被配置为还基于所监控的到达时间中的抖动来改变所述帧速率。
5.根据权利要求4所述的系统,其中,所述帧提供器还被配置为还基于与所述抖动缓冲器相关联的延迟和所允许的丢弃帧的阈值数量中的至少一个来改变所述帧速率。
6.根据权利要求2所述的系统,其中,所述帧消耗器还被配置为在解码所述图像帧之后将所述图像帧插入到所述抖动缓冲器中。
7.根据权利要求6所述的系统,其中,所述帧消耗器还被配置为在所述解码之后扭曲所述图像帧。
8.根据权利要求7所述的系统,其中,所述帧消耗器还被配置为在从所述抖动缓冲器检索到所述图像帧之后执行所述扭曲。
9.根据权利要求1所述的系统,其中,所述帧提供器还被配置为将图像帧流式传输到所述帧消耗器以用于实时显示。
10.根据权利要求9所述的系统,其中,所述帧提供器还被配置为通过通信网络将图像帧流式传输到所述帧消耗器。
11.根据权利要求9所述的系统,其中,所述帧提供器还被配置为通过无线连接将所述图像帧传输到所述帧消耗器。
12.根据权利要求1所述的系统,其中,所述帧提供器还被配置为根据从所述帧消耗器接收的用户输入来控制执行的应用程序。
13.根据权利要求1所述的系统,其中,所述帧提供器还被配置为基于根据图像帧的分组在所述帧消耗器处的到达时间确定的带宽饱和度来改变一个或更多个所述图像帧的压缩率。
14.根据权利要求1所述的系统,其中,所述帧提供器还被配置为通过加快或减慢所述帧速率来改变帧速率。
15.根据权利要求1所述的系统,其中,所述帧消耗器被配置为将所述图像帧的到达时间与各自的预期到达时间进行比较,以及包括关于在反馈给所述帧提供器的监控信息中的所述比较的信息。
16.根据权利要求1所述的系统,其中,所述帧消耗器还被配置为计算抖动吸收参数以及相应地配置抖动缓冲器的大小。
17.一种将视频从视频渲染服务器设备流式传输到连接到显示设备的客户端设备的方法,包括:
接收来自所述客户端设备的监控信息,其中,所述监控信息包括流式视频的各个图像帧的到达时间;以及
通过根据所接收到的监控信息加快或减慢所述帧速率来调整生成所述流式视频的图像帧的帧速率,以便以与所述显示设备的刷新间隔的改进的同步性传输所述图像帧。
18.根据权利要求17所述的方法,其中所述调整仅通过加快或减慢所传输的帧速率。
19.一种电子设备,包括显示器、存储器、网络接口和至少一个处理器,所述至少一个处理器被配置为:
重复测量包含由在远程服务器上运行的应用程序生成的图像的图像帧在所述电子设备处的各个到达时间与所述图像帧的预期到达时间之间的差异;
将关于所测量的差异的信息发送到所述远程服务器;
根据至少所述所测量的差异调整所述存储器中的抖动缓冲器的大小;
将所述数据帧插入经调整的抖动缓冲器中;以及
基于插入到所述经调整的抖动缓冲器中的所述数据帧,在所述显示设备上显示图像。
20.根据权利要求19所述的电子设备,其中,所述至少一个处理器还被配置为根据所述显示设备的显示速率确定所述预期到达时间。
21.根据权利要求20所述的电子设备,其中,根据与所述显示设备相关联的垂直同步(vsync)信号确定所述显示速率。
22.根据权利要求21所述的电子设备,其中,关于发送到所述远程服务器的所述所测量的差异的信息被配置为使所述远程服务器能够改变从所述远程服务器传输所述数据帧的帧速率,使得随后的所述差异逐渐减少。
23.根据权利要求22所述的电子设备,包括含有所述显示设备的虚拟现实耳机,其中,所述网络接口通过无线网络将所述虚拟现实耳机连接到所述远程服务器。
24.一种服务器,包括存储器、网络接口和至少一个处理器,所述至少一个处理器被配置为:
执行生成图像的数据帧的应用程序;
响应于从客户端设备接收的网络抖动和/或延迟信息,反复地查看所述网络接口,调整帧速率并以经调整的帧速率经由所述网络接口将所述数据帧发送到所述客户端设备。
25.根据权利要求24所述的服务器,其中,所述至少一个处理器包括图形处理单元(GPU),其以帧生成速率执行所述数据帧的生成,并且其中所述调整还包括根据所接收到的网络抖动和/或延迟信息来调整所述帧生成速率。
26.一种非暂时性计算机可读存储介质,其存储指令,所述指令在由流式视频渲染服务器设备的处理器执行时,连接到显示设备的客户端设备,包括:
接收来自所述客户端设备的监控信息,其中,所述监控信息包括所述流式视频的各个图像帧的到达时间;以及
通过根据所接收到的监控信息加快或减慢所述帧速率来调整生成所述流式视频的所述图像帧的帧速率,以便以与所述显示设备的刷新间隔改进的同步传输所述图像帧。
CN201811432976.0A 2017-11-28 2018-11-28 用于动态抖动和延迟容忍渲染的系统和方法 Active CN110035328B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762591662P 2017-11-28 2017-11-28
US62/591,662 2017-11-28
US16/166,880 US10741143B2 (en) 2017-11-28 2018-10-22 Dynamic jitter and latency-tolerant rendering
US16/166,880 2018-10-22

Publications (2)

Publication Number Publication Date
CN110035328A true CN110035328A (zh) 2019-07-19
CN110035328B CN110035328B (zh) 2022-04-05

Family

ID=66442169

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811432976.0A Active CN110035328B (zh) 2017-11-28 2018-11-28 用于动态抖动和延迟容忍渲染的系统和方法

Country Status (3)

Country Link
US (1) US10741143B2 (zh)
CN (1) CN110035328B (zh)
DE (1) DE102018130037B4 (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110850977A (zh) * 2019-11-06 2020-02-28 成都威爱新经济技术研究院有限公司 一种基于6dof头戴式显示器的立体图像交互方法
CN111447488A (zh) * 2020-04-01 2020-07-24 青岛海信传媒网络技术有限公司 一种memc控制方法及显示设备
CN111901628A (zh) * 2020-08-03 2020-11-06 江西科骏实业有限公司 基于zSpace桌面VR一体机的云端渲染方法
CN111901678A (zh) * 2020-07-31 2020-11-06 成都云格致力科技有限公司 一种面向tcp实时视频流的抗抖动平滑方法及其系统
CN111954067A (zh) * 2020-09-01 2020-11-17 杭州视洞科技有限公司 一种提高视频渲染效率与用户交互流畅度的方法
CN112235604A (zh) * 2020-10-20 2021-01-15 广州博冠信息科技有限公司 渲染方法及装置、计算机可读存储介质、电子设备
CN113368492A (zh) * 2020-02-25 2021-09-10 华为技术有限公司 渲染的方法、装置
CN114327103A (zh) * 2020-09-25 2022-04-12 福建天泉教育科技有限公司 一种触屏延时优化方法及终端
WO2022082555A1 (en) * 2020-10-22 2022-04-28 Qualcomm Incorporated Dynamic frame rate optimization
CN115048012A (zh) * 2021-09-30 2022-09-13 荣耀终端有限公司 数据处理方法和相关装置
CN115052176A (zh) * 2021-03-08 2022-09-13 海信视像科技股份有限公司 一种显示设备及显示控制方法
CN115151886A (zh) * 2020-02-21 2022-10-04 高通股份有限公司 基于帧更新延迟dsi时钟改变以提供更平滑的用户界面体验
CN115412766A (zh) * 2021-05-28 2022-11-29 华为技术有限公司 显示控制的方法和电子设备
TWI826196B (zh) * 2022-12-21 2023-12-11 宏碁股份有限公司 傳輸頻率調整裝置和方法
TWI843883B (zh) 2019-09-27 2024-06-01 新加坡商雷蛇(亞太)私人有限公司 提供一或多組圖形參數之方法、執行用以實施該方法之程式的電腦以及包含用以執行該方法之指令的非暫時性電腦可讀媒體

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3503569A1 (en) * 2017-12-19 2019-06-26 Thomson Licensing Method of transmitting video frames from a video stream to a display and corresponding apparatus
JP7025966B2 (ja) * 2018-03-20 2022-02-25 日立Astemo株式会社 車両制御装置
US11360553B2 (en) * 2018-04-19 2022-06-14 Pcms Holdings, Inc. Systems and methods employing predictive overfilling for virtual reality
US11127214B2 (en) * 2018-09-17 2021-09-21 Qualcomm Incorporated Cross layer traffic optimization for split XR
US11094296B2 (en) 2018-12-05 2021-08-17 Google Llc Varying display refresh rate
US11144268B2 (en) * 2018-12-10 2021-10-12 Netzyn, Inc. Timing synchronization in a display-server computing system and method
US10918941B2 (en) * 2019-03-27 2021-02-16 Electronic Arts Inc. Predictive execution of distributed game engines
WO2021042173A1 (en) * 2019-09-05 2021-03-11 Canopus Networks Pty Ltd Apparatus and process for detecting, identifying, and estimating user experience of online games
JP7350866B2 (ja) * 2019-09-11 2023-09-26 株式会社ソニー・インタラクティブエンタテインメント 表示制御装置、送信装置、表示制御方法及びプログラム
US11731043B2 (en) * 2019-11-19 2023-08-22 Sony Interactive Entertainment Inc. Adaptive graphics for cloud gaming
CN116153228A (zh) 2020-01-17 2023-05-23 华为技术有限公司 显示驱动器及控制方法、显示控制电路系统、电子设备
CN111882626B (zh) * 2020-08-06 2023-07-14 腾讯科技(深圳)有限公司 图像处理方法、装置、服务器及介质
CN111741232B (zh) * 2020-08-11 2020-12-11 成都索贝数码科技股份有限公司 基于双显卡nvlink提高超高清非编编辑性能的方法
GB202012559D0 (en) 2020-08-12 2020-09-23 Samsung Electronics Co Ltd Reducing latency between receiving user input and displaying resulting frame
CN114257781A (zh) * 2020-09-23 2022-03-29 京东方科技集团股份有限公司 双倍速率动态随机存储器读写控制方法、装置和系统
US20220212100A1 (en) * 2021-01-04 2022-07-07 Microsoft Technology Licensing, Llc Systems and methods for streaming interactive applications
KR20230136128A (ko) * 2021-01-28 2023-09-26 인터디지털 씨이 페이튼트 홀딩스, 에스에이에스 클라우드 게이밍에서 사용자 입력을 적응시키는 것에 관한 방법, 장치들 및 시스템들
US11907402B1 (en) 2021-04-28 2024-02-20 Wells Fargo Bank, N.A. Computer-implemented methods, apparatuses, and computer program products for frequency based operations
TW202310630A (zh) * 2021-08-24 2023-03-01 美商元平台技術有限公司 用於以可變訊框速率在隨顯螢幕(aod)上進行動畫顯示的系統、裝置和方法
KR20230061837A (ko) * 2021-10-29 2023-05-09 삼성전자주식회사 가변 프레임 레이트 구동을 위한 어플리케이션 프로세서 및 이를 포함하는 디스플레이 시스템
US20230136064A1 (en) * 2021-11-04 2023-05-04 Meta Platforms Technologies, Llc Priority-based graphics rendering for multi-part systems
US20230196662A1 (en) * 2021-12-20 2023-06-22 Nvidia Corporation Image blending using one or more neural networks
US11917011B2 (en) 2022-01-10 2024-02-27 Meta Platforms Technologies, Llc Resilient rendering for augmented-reality devices
CN115474074B (zh) * 2022-08-29 2024-05-07 咪咕文化科技有限公司 一种视频背景替换方法、装置、计算设备和存储介质
CN115695851B (zh) * 2022-12-28 2023-03-28 海马云(天津)信息技术有限公司 端到端延时计算方法、装置、存储介质及电子设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110066673A1 (en) * 2009-09-14 2011-03-17 Adobe Systems Incorporated Dynamic stream switch control
CN102131058A (zh) * 2011-04-12 2011-07-20 上海理滋芯片设计有限公司 高清数字视频帧速率变换处理模块及其方法
US20140132837A1 (en) * 2011-09-05 2014-05-15 Cywee Group Limited Wireless video/audio data transmission system having i-frame only gop structure
CN103826121A (zh) * 2013-12-20 2014-05-28 电子科技大学 低延迟视频编码基于场景切换检测的码率控制方法
US20150264298A1 (en) * 2014-03-12 2015-09-17 Sony Computer Entertainment America Llc Video frame rate compensation through adjustment of vertical blanking
CN105117191A (zh) * 2015-09-08 2015-12-02 广东欧珀移动通信有限公司 一种移动终端的显示控制方法及装置
US20150355762A1 (en) * 2014-06-04 2015-12-10 Apple Inc. Mid-frame blanking
CN106095366A (zh) * 2016-06-07 2016-11-09 北京小鸟看看科技有限公司 一种缩短图像延迟的方法、装置和虚拟现实设备
WO2016201423A1 (en) * 2015-06-12 2016-12-15 Google Inc. Electronic display stabilization for head mounted display
CN106296566A (zh) * 2016-08-12 2017-01-04 南京睿悦信息技术有限公司 一种虚拟现实移动端动态时间帧补偿渲染系统及方法

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5553083B1 (en) * 1995-01-19 2000-05-16 Starburst Comm Corp Method for quickly and reliably transmitting frames of data over communications links
US5737531A (en) * 1995-06-27 1998-04-07 International Business Machines Corporation System for synchronizing by transmitting control packet to omit blocks from transmission, and transmitting second control packet when the timing difference exceeds second predetermined threshold
US6091777A (en) * 1997-09-18 2000-07-18 Cubic Video Technologies, Inc. Continuously adaptive digital video compression system and method for a web streamer
US9077991B2 (en) * 2002-12-10 2015-07-07 Sony Computer Entertainment America Llc System and method for utilizing forward error correction with video compression
US8711923B2 (en) * 2002-12-10 2014-04-29 Ol2, Inc. System and method for selecting a video encoding format based on feedback data
US20100166056A1 (en) * 2002-12-10 2010-07-01 Steve Perlman System and method for encoding video using a selected tile and tile rotation pattern
US9314691B2 (en) * 2002-12-10 2016-04-19 Sony Computer Entertainment America Llc System and method for compressing video frames or portions thereof based on feedback information from a client device
US9192859B2 (en) * 2002-12-10 2015-11-24 Sony Computer Entertainment America Llc System and method for compressing video based on latency measurements and other feedback
US9061207B2 (en) * 2002-12-10 2015-06-23 Sony Computer Entertainment America Llc Temporary decoder apparatus and method
US20110122063A1 (en) * 2002-12-10 2011-05-26 Onlive, Inc. System and method for remote-hosted video effects
US8964830B2 (en) * 2002-12-10 2015-02-24 Ol2, Inc. System and method for multi-stream video compression using multiple encoding formats
US8366552B2 (en) * 2002-12-10 2013-02-05 Ol2, Inc. System and method for multi-stream video compression
US20110126255A1 (en) * 2002-12-10 2011-05-26 Onlive, Inc. System and method for remote-hosted video effects
US9138644B2 (en) * 2002-12-10 2015-09-22 Sony Computer Entertainment America Llc System and method for accelerated machine switching
US8526490B2 (en) * 2002-12-10 2013-09-03 Ol2, Inc. System and method for video compression using feedback including data related to the successful receipt of video content
US7844727B2 (en) * 2003-04-24 2010-11-30 Nokia Corporation Method and device for proactive rate adaptation signaling
US11336926B2 (en) * 2007-12-05 2022-05-17 Sony Interactive Entertainment LLC System and method for remote-hosted video game streaming and feedback from client on received frames
US8340654B2 (en) * 2009-05-26 2012-12-25 Lextech Labs Llc Apparatus and method for video display and control for portable device
US9781477B2 (en) * 2010-05-05 2017-10-03 Cavium, Inc. System and method for low-latency multimedia streaming
US8903223B1 (en) * 2010-06-29 2014-12-02 Samsung Electronics Co., Ltd. Video driver over a network
US8990351B2 (en) * 2011-04-20 2015-03-24 Mobitv, Inc. Real-time processing capability based quality adaptation
CN102231828B (zh) * 2011-06-24 2013-05-15 武汉长江通信产业集团股份有限公司 图像解码合成输出的延时处理方法
CN102547243B (zh) * 2012-01-17 2014-10-15 西安电子科技大学 基于3g网络的音视频远程监控方法及系统
US9930082B2 (en) * 2012-11-20 2018-03-27 Nvidia Corporation Method and system for network driven automatic adaptive rendering impedance
US20140281023A1 (en) * 2013-03-18 2014-09-18 Nvidia Corporation Quality of service management server and method of managing quality of service
US20140286438A1 (en) * 2013-03-19 2014-09-25 Nvidia Corporation Quality of service management server and method of managing streaming bit rate
US20140330888A1 (en) * 2013-05-03 2014-11-06 Nvidia Corporation Dynamically modifying a frame rate of data transmission associated with an application executing on a data server on behalf of a client device to the client device
EP3800893B1 (en) * 2013-07-11 2023-09-06 Dejero Labs Inc. Systems and methods for transmission of data streams
US10112115B2 (en) * 2013-10-28 2018-10-30 Nvidia Corporation Gamecasting techniques
US20150189126A1 (en) * 2014-01-02 2015-07-02 Nvidia Corporation Controlling content frame rate based on refresh rate of a display
CN105263066A (zh) * 2014-06-13 2016-01-20 珠海全志科技股份有限公司 移动设备视频流传输控制方法及系统
US20170142029A1 (en) * 2015-11-16 2017-05-18 Le Holdings (Beijing) Co., Ltd. Method for data rate adaption in online media services, electronic device, and non-transitory computer-readable storage medium
US20170187635A1 (en) * 2015-12-28 2017-06-29 Qualcomm Incorporated System and method of jitter buffer management
US10116989B1 (en) * 2016-09-12 2018-10-30 Twitch Interactive, Inc. Buffer reduction using frame dropping
US10015224B1 (en) * 2016-09-12 2018-07-03 Twitch Interactive, Inc. Buffer reduction using frame dropping
US20190215729A1 (en) * 2018-03-15 2019-07-11 Intel Corporation Session description protocol mechanisms for signaling radio access network capabilities in multimedia telephony sessions

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110066673A1 (en) * 2009-09-14 2011-03-17 Adobe Systems Incorporated Dynamic stream switch control
CN102131058A (zh) * 2011-04-12 2011-07-20 上海理滋芯片设计有限公司 高清数字视频帧速率变换处理模块及其方法
US20140132837A1 (en) * 2011-09-05 2014-05-15 Cywee Group Limited Wireless video/audio data transmission system having i-frame only gop structure
CN103826121A (zh) * 2013-12-20 2014-05-28 电子科技大学 低延迟视频编码基于场景切换检测的码率控制方法
US20150264298A1 (en) * 2014-03-12 2015-09-17 Sony Computer Entertainment America Llc Video frame rate compensation through adjustment of vertical blanking
US20150355762A1 (en) * 2014-06-04 2015-12-10 Apple Inc. Mid-frame blanking
WO2016201423A1 (en) * 2015-06-12 2016-12-15 Google Inc. Electronic display stabilization for head mounted display
CN105117191A (zh) * 2015-09-08 2015-12-02 广东欧珀移动通信有限公司 一种移动终端的显示控制方法及装置
CN106095366A (zh) * 2016-06-07 2016-11-09 北京小鸟看看科技有限公司 一种缩短图像延迟的方法、装置和虚拟现实设备
CN106296566A (zh) * 2016-08-12 2017-01-04 南京睿悦信息技术有限公司 一种虚拟现实移动端动态时间帧补偿渲染系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
崔大为: "三维动态显示技术研究", 《中国优秀硕士学位论文全文数据库》 *

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI843883B (zh) 2019-09-27 2024-06-01 新加坡商雷蛇(亞太)私人有限公司 提供一或多組圖形參數之方法、執行用以實施該方法之程式的電腦以及包含用以執行該方法之指令的非暫時性電腦可讀媒體
CN110850977B (zh) * 2019-11-06 2023-10-31 成都威爱新经济技术研究院有限公司 一种基于6dof头戴式显示器的立体图像交互方法
CN110850977A (zh) * 2019-11-06 2020-02-28 成都威爱新经济技术研究院有限公司 一种基于6dof头戴式显示器的立体图像交互方法
CN115151886A (zh) * 2020-02-21 2022-10-04 高通股份有限公司 基于帧更新延迟dsi时钟改变以提供更平滑的用户界面体验
CN113368492B (zh) * 2020-02-25 2023-06-27 华为技术有限公司 渲染的方法、装置
CN113368492A (zh) * 2020-02-25 2021-09-10 华为技术有限公司 渲染的方法、装置
CN111447488A (zh) * 2020-04-01 2020-07-24 青岛海信传媒网络技术有限公司 一种memc控制方法及显示设备
CN111447488B (zh) * 2020-04-01 2022-08-26 青岛海信传媒网络技术有限公司 一种memc控制方法及显示设备
CN111901678A (zh) * 2020-07-31 2020-11-06 成都云格致力科技有限公司 一种面向tcp实时视频流的抗抖动平滑方法及其系统
CN111901678B (zh) * 2020-07-31 2022-08-23 成都云格致力科技有限公司 一种面向tcp实时视频流的抗抖动平滑方法及其系统
CN111901628A (zh) * 2020-08-03 2020-11-06 江西科骏实业有限公司 基于zSpace桌面VR一体机的云端渲染方法
CN111954067B (zh) * 2020-09-01 2022-10-04 杭州视洞科技有限公司 一种提高视频渲染效率与用户交互流畅度的方法
CN111954067A (zh) * 2020-09-01 2020-11-17 杭州视洞科技有限公司 一种提高视频渲染效率与用户交互流畅度的方法
CN114327103B (zh) * 2020-09-25 2023-04-28 福建天泉教育科技有限公司 一种触屏延时优化方法及终端
CN114327103A (zh) * 2020-09-25 2022-04-12 福建天泉教育科技有限公司 一种触屏延时优化方法及终端
CN112235604A (zh) * 2020-10-20 2021-01-15 广州博冠信息科技有限公司 渲染方法及装置、计算机可读存储介质、电子设备
CN116348949A (zh) * 2020-10-22 2023-06-27 高通股份有限公司 动态帧率优化
WO2022082555A1 (en) * 2020-10-22 2022-04-28 Qualcomm Incorporated Dynamic frame rate optimization
US11929047B2 (en) 2020-10-22 2024-03-12 Qualcomm Incorporated Dynamic frame rate optimization
CN115052176A (zh) * 2021-03-08 2022-09-13 海信视像科技股份有限公司 一种显示设备及显示控制方法
CN115052176B (zh) * 2021-03-08 2024-03-08 海信视像科技股份有限公司 一种显示设备及显示控制方法
CN115412766A (zh) * 2021-05-28 2022-11-29 华为技术有限公司 显示控制的方法和电子设备
CN115048012A (zh) * 2021-09-30 2022-09-13 荣耀终端有限公司 数据处理方法和相关装置
TWI826196B (zh) * 2022-12-21 2023-12-11 宏碁股份有限公司 傳輸頻率調整裝置和方法

Also Published As

Publication number Publication date
US10741143B2 (en) 2020-08-11
US20190164518A1 (en) 2019-05-30
CN110035328B (zh) 2022-04-05
DE102018130037A1 (de) 2019-05-29
DE102018130037B4 (de) 2022-06-23

Similar Documents

Publication Publication Date Title
CN110035328A (zh) 动态抖动和延迟容忍渲染
US11610122B2 (en) Generative adversarial neural network assisted reconstruction
US11625613B2 (en) Generative adversarial neural network assisted compression and broadcast
CN110176054A (zh) 用于训练神经网络模型的合成图像的生成
US11989815B2 (en) Cluster of scalar engines to accelerate intersection in leaf node
CN109472858B (zh) 用于逆向图形的可微分渲染管线
US20190035113A1 (en) Temporally stable data reconstruction with an external recurrent neural network
US10762620B2 (en) Deep-learning method for separating reflection and transmission images visible at a semi-reflective surface in a computer image of a real-world scene
CN111210498B (zh) 降低多边形网格的细节水平以减少被渲染几何的复杂度
CN108694080A (zh) 高效线程组调度
CN109936745B (zh) 用于改善原始视频数据的解压的方法和系统
US11900523B2 (en) Early termination in bottom-up acceleration data structure refit
US20220377432A1 (en) Detecting latency anomalies from pipeline components in cloud-based systems
CN114028804A (zh) 流式传输压缩光场
CN114078077A (zh) 使用会话性能元数据评估定性流体验
US20210350732A1 (en) Method and apparatus for spatiotemporal enhancement of patch scanning displays
CN113392968A (zh) 针对神经网络的迭代式小样本精细化的微训练
DE102021132992A1 (de) Messen und Detektieren von Leerlaufzeiten und Erkennen der Ursachen dafür in Cloud-basierten Streaming-Anwendungen
CN114445257A (zh) 流式传输利用无损或有损压缩进行压缩的光场
DE102022107232A1 (de) Gepackter fehlerkorrekturcode (ecc) für komprimierten datenschutz
US11544894B2 (en) Latency-resilient cloud rendering
CN114100118A (zh) 基于网络状况的动态图像平滑
CN114529443A (zh) 以目标采样率的自适应采样
CN113542758A (zh) 生成对抗神经网络辅助的视频压缩和广播
CN104050627B (zh) 线程机制的条件结束

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant