CN115068933A - 带集成nic和共享帧缓冲器访问以实现低时延的gpu - Google Patents
带集成nic和共享帧缓冲器访问以实现低时延的gpu Download PDFInfo
- Publication number
- CN115068933A CN115068933A CN202210058485.4A CN202210058485A CN115068933A CN 115068933 A CN115068933 A CN 115068933A CN 202210058485 A CN202210058485 A CN 202210058485A CN 115068933 A CN115068933 A CN 115068933A
- Authority
- CN
- China
- Prior art keywords
- video
- integrated
- gpu
- content
- nic
- 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.)
- Pending
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 48
- 238000000034 method Methods 0.000 claims abstract description 43
- 238000012545 processing Methods 0.000 claims abstract description 29
- 238000004891 communication Methods 0.000 claims description 11
- 230000003139 buffering effect Effects 0.000 claims description 8
- 230000013011 mating Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 abstract description 10
- 230000008929 regeneration Effects 0.000 abstract description 6
- 238000011069 regeneration method Methods 0.000 abstract description 6
- 238000007906 compression Methods 0.000 description 42
- 230000006835 compression Effects 0.000 description 42
- 239000013598 vector Substances 0.000 description 21
- 238000010586 diagram Methods 0.000 description 18
- 238000013459 approach Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000006837 decompression Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 241000023320 Luma <angiosperm> Species 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 238000001152 differential interference contrast microscopy Methods 0.000 description 3
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 3
- 238000013139 quantization Methods 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003032 molecular docking Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001172 regenerating effect Effects 0.000 description 2
- 101100465000 Mus musculus Prag1 gene Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000036461 convulsion Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000004438 eyesight Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 230000016776 visual perception Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/20—Input arrangements for video game devices
- A63F13/23—Input arrangements for video game devices for interfacing with the game device, e.g. specific interfaces between game controller and console
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/355—Performing 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/358—Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/765—Media network packet handling intermediate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features 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/10—Features 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 input arrangements for converting player-generated signals into game device control signals
- A63F2300/1025—Features 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 input arrangements for converting player-generated signals into game device control signals details of the interface with the game device, e.g. USB version detection
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features 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/50—Features 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/53—Features 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/534—Features 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本公开涉及带集成NIC和共享帧缓冲器访问以实现低时延的GPU。用于带有集成网络接口控制器NIC和共享帧缓冲器访问的云游戏图形处理单元GPU的方法和装置。GPU包括提供对集成编码器/解码器的共享访问的帧缓冲器。GPU还包括与集成编码器/解码器相耦合的集成NIC和与帧缓冲器相耦合的视频输出。GPU被配置为处理传出和传入的游戏图像内容,该内容被使用视频编解码器或使用游戏瓦片编码器和解码器进行编码和解码。缓冲在帧缓冲器中的视频帧被集成编码器编码并且被直接转发到NIC以被打包且利用媒体流传输协议来进行流传输。传入的流媒体内容被NIC解包且被集成解码器解码,解码器将解码后的内容写入到帧缓冲器,以便再生成。
Description
技术领域
本公开涉及带有集成的NIC和共享帧缓冲器访问以实现更低时延的云游戏GPU。
背景技术
云游戏是一种类型的在线游戏,其中,视频游戏在数据中心(又称为“云”)中的远程服务器上被执行,并且经由用于渲染视频内容和向(一个或多个)远程服务器提供玩家输入的本地客户端软件,作为视频内容被流传输到玩家的设备。这与传统的游戏手段形成了对比,在传统游戏手段中,游戏在用户的视频游戏机、个人计算机或移动设备上本地运行。
时延是成功的云游戏以及交互式家庭流传输(例如,一台PC(personal computer,个人计算机)用于渲染,但在另一个房间中的平板设备上播放)的最重要标准之一。现今使用的一种方法是渲染视频内容,并且准备好经编码的图像数据,来使用带有图形处理单元(Graphic Processing Unit,GPU)的分立图形卡进行流传输,然后使用平台的中央处理单元(Central Processing Unit,CPU)和网卡将图像数据通过网络流传输到玩家的设备。然而,这导致了一个瓶颈,因为GPU渲染和/或编码的数据必须首先被拷贝到主PC或设备存储器,然后才被传送到网卡,以便图像数据被发送出去。
发明内容
根据本公开的一方面,提供了一种装置,包括:图形处理单元(GPU),包括:一个或多个帧缓冲器;与至少一个帧缓冲器相耦合的集成编码器/解码器,包括用于对图像数据和视频内容中的至少一者进行编码和解码的嵌入式逻辑;以及与所述集成编码器/解码器相耦合的集成网络接口控制器(NIC)。
根据本公开的一方面,提供了一种在图形卡上实现的方法,所述图形卡包括带有集成网络接口控制器(NIC)的图形处理单元(GPU),所述方法包括:生成视频帧内容并且将所述视频帧内容缓冲在所述GPU上的一个或多个帧缓冲器中;进行以下操作之一:利用集成在所述GPU上的视频编解码器对所述视频帧内容进行编码以生成编码视频内容;并且利用所述集成NIC对所述编码视频内容进行打包以生成封包流并且将所述封包流向外传输到与所述集成NIC上的输出端口操作性耦合的网络;或者利用集成在所述GPU上的图像瓦片编码器对视频帧内容的瓦片进行编码以生成编码视频瓦片;并且利用所述集成NIC对所述编码视频瓦片进行打包以生成封包流并且将所述封包流向外传输到与所述集成NIC上的输出端口操作性耦合的网络。
根据本公开的一方面,提供了一种云游戏服务器,包括:第一板,具有多个扩展插槽或连接器;中央处理单元(CPU),安装到所述第一板或者安装到第二板,所述第二板安装在扩展插槽中或者耦合到所述第一板上的配接连接器;主存储器,包括与所述CPU通信耦合的一个或多个存储器设备;a)安装在各个扩展插槽中的一个或多个网络适配器卡;或者b)一个或多个网络接口控制器(NIC)芯片,安装到所述第一板或第二板;以及多个图形卡,安装在各个扩展插槽中或者耦合到所述第一板上的各个配接连接器,每个图形卡包括:图形处理单元(GPU),包括:一个或多个帧缓冲器;与至少一个帧缓冲器相耦合的集成编码器/解码器,包括用于对图像数据和视频内容中的至少一者进行编码和解码的嵌入式逻辑;以及与所述集成编码器/解码器相耦合的集成网络接口控制器(NIC);图形存储器,其与所述GPU相耦合或者被集成在所述GPU上;至少一个网络端口,其与所述集成NIC相耦合;以及输入/输出(I/O)接口,其与所述GPU相耦合。
附图说明
随着通过在结合附图进行理解的同时参考接下来的详细描述而更好地理解本发明的上述方面和许多附带的优点,这些方面和优点将变得更容易明白,在附图中,除非另有指明,否则相似的标号在各种视图中始终指代相似的部分。
图1是根据一个实施例的图形卡的示意图,该图形卡包括带有集成视频编解码器和集成NIC的GPU;
图1a是根据一个实施例的图形卡的示意图,该图形卡包括带有直接耦合到NIC的集成视频编解码器的GPU;
图1b是根据一个实施例的图形卡的示意图,该图形卡包括组合在多芯片模块上的带有集成视频编解码器的GPU和NIC;
图1c是根据一个实施例的图形卡的示意图,该图形卡包括带有集成瓦片编码器/解码器和集成NIC的GPU;
图2是根据一个实施例图示出将图1的图形卡用于游戏服务器和游戏客户端设备中的示意图;
图2a是根据一个实施例图示出将图1a的图形卡用于游戏服务器和游戏客户端设备中的示意图;
图3是根据一个实施例图示出将图1的图形卡用于游戏服务器中并且图示出包括GPU的游戏膝上型客户端的示意图,该GPU带有集成网络接口,用于直接与WiFi芯片通信;
图4是图示出由I帧、P帧和B帧构成的示范性帧编码和显示方案的图;
图5是根据一个实施例图示出游戏服务器200和桌面型游戏客户端202之间的端到端图像数据流的示意图;
图6是根据一个实施例图示出被执行来促进图5的端到端图像数据流方案的操作的流程图;
图7a是根据一个实施例图示出使用带有集成瓦片编码器的GPU对游戏瓦片进行生成、编码和流传输的图;
图7b是根据一个实施例图示出对在游戏客户端处接收到的游戏瓦片的流的处理的图,其中包括使用带有集成瓦片解码器的GPU进行的瓦片解码和再生成;
图8是根据一个实施例的游戏服务器的示意图,该游戏服务器包括安装在主板的扩展插槽中的多个图形卡和一个或多个网卡;
图8a是根据一个实施例的游戏服务器的示意图,该游戏服务器包括安装在主板的扩展插槽中的多个图形卡,在该主板上安装有NIC芯片;
图8b是根据一个实施例的游戏服务器的示意图,该游戏服务器包括安装在背板、中板或底板的插槽或配接连接器中的多个图形卡和刀片服务器;并且
图9是根据一个实施例的集成NIC的示意图。
具体实施方式
本文描述了用于云游戏GPU的方法和装置的实施例,云游戏GPU带有集成的网络接口控制器(NIC)和共享帧缓冲器访问,以实现更低的时延。在以下描述中,记载了许多具体细节以帮助透彻理解本发明的实施例。然而,相关领域的技术人员将会认识到,没有这些具体细节中的一个或多个,或者利用其他方法、组件、材料等等,也可实现本发明。在其他情况中,没有示出或详细描述公知的结构、材料或操作,以避免模糊本发明的各方面。
本说明书中各处提及“一个实施例”或“一实施例”的意思是联系该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。从而,短语“在一个实施例中”或“在一实施例中”在本说明书各处的出现不一定全都指的是同一实施例。此外,特定的特征、结构或特性在一个或多个实施例中可按任何适当的方式被组合。
为了清晰,这里的附图中的个体组件也可由其在附图中的标签而不是由特定的标号来指代。此外,指代特定类型的组件(而不是特定组件)的标号可以用标号后面跟着意指“典型”的“(typ)”来示出。将会理解,这些组件的配置将是可能存在、但为了简单和清晰在附图中没有示出的类似组件或者没有用分开的标号标注的其他方面类似的组件的典型配置。相反,“(typ)”不应被解释为意味着该组件、元素等等通常被用于其公开的功能、实现、目的,等等。
根据本文公开的实施例的各方面,提供了一种带有集成编码器和集成NIC的GPU。该GPU包括提供对集成编码器/解码器的共享访问的一个或多个帧缓冲器以及其他GPU组件。该GPU被配置为处理传出和传入的游戏图像内容,该内容被使用视频编解码器或使用游戏瓦片编码器和解码器进行编码和解码。例如,当在本地视频游戏主机的云游戏服务器中实现时,由GPU生成并被缓存在(一个或多个)帧缓冲器中的视频游戏帧被集成编码器编码并且被直接转发到NIC,以使用媒体流协议来进行打包和流传输。传入的流媒体内容被NIC解包并且被集成解码器解码,解码器将解码后的内容写入到帧缓冲器,以便在游戏客户端设备上再生成视频游戏帧。然后,视频游戏帧被显示在客户端设备显示器上。
一般而言,GPU可以在游戏客户端设备(例如,膝上型或笔记本计算机或移动设备)的图形卡中或主板上实现。图形卡为生成传出游戏内容和处理传入游戏内容时提供了减小的时延,因为处理路径不包括将编码数据转发到CPU或从CPU转发。
图1示出了包括GPU 102的图形卡100,该GPU具有帧缓冲器104,该帧缓冲器被H.264/H.265视频编解码器106经由接口108访问。H.264/H.265视频编解码器106包括I/O接口110,该接口耦合到NIC 112,在本实施例中,该NIC在GPU 102上。GPU 102耦合到图形存储器114,例如图示实施例中的GDDR5存储器。可以以类似的方式使用其他类型的图形存储器。此外,图形存储器的全部或一部分可以驻留在GPU上。
GPU 102和图形卡100具有额外的接口,包括与GPU 102耦合的PCIe(快速外围组件互连)接口116,与一个或多个图形端口120(例如DisplayPort或HDMI端口)耦合的GPU 102上的图形输出118,以及与NIC 112耦合的以太网端口122。正如数据路径123所描绘的,NIC112也可以经由PCIe接口116与主机CPU(未示出)通信。
除了具有带片上NIC的GPU以外,图形卡还可包括与片外NIC耦合的GPU,例如图1a的图形卡100a中所示。在这种配置下,GPU 102a包括与NIC 112a耦合的I/O接口124。I/O接口124与H.264/H.265视频编解码器106上的I/O接口110耦合。NIC 112a也与PCIe接口116耦合,如链路125所描绘的。
除了在GPU上集成NIC(例如,作为嵌入式电路和/或作为与GPU电路在同一衬底上的电路管芯)以外,也可以使用包括GPU芯片和NIC芯片的多芯片模块或封装。这方面的一个示例被示出在图1b中,其中图形卡100b包括作为多芯片模块126的一部分的GPU 102b和NIC112b。
在另一个实施例中(未示出),CPU和GPU 100或100a可被集成在片上系统(Systemon a Chip,SoC)中。或者,CPU、GPU 100b和NIC112b可被实现在多芯片模块或封装中,或者CPU+GPU SoC和NIC芯片可被实现在多芯片模块或封装上。
一般而言,图形卡100、100a和100b可被安装在服务器等等的PCIe插槽中,被实现为服务器中的夹层卡等等,或者被实现为刀片服务器或服务器模块上的子板。如下文所描述和图示的,对于具有其他外形参数的设备,可以在图形芯片组等等中实现类似的组件,这些设备例如是膝上型电脑、笔记本、平板设备和移动电话。
可以从帧缓冲器104获得帧信息,例如帧的像素分辨率、帧缓冲器格式(例如,RGBA8比特或RGBA 32比特,等等)和对帧缓冲器指针的访问,在将双倍或三倍缓冲用于渲染的情况下,该指针可能随时间而变化。此外,除了颜色数据信息以外,在一些实现方式中还可以从GPU缓冲器获得深度数据。例如,对于像立体游戏之类的场景,将深度数据与颜色数据一起流传输到客户端,可能是有利的。
图2示出了云游戏实现方式的一个实施例,其包括经由网络204与桌面型游戏客户端202相耦合的游戏服务器200。游戏服务器200和桌面型游戏客户端202的每一者具有图1的图形卡100的各自实例,如图形卡100-1和100-2所描绘的。游戏服务器200包括由多核处理器组成的CPU206,该处理器与主存储器208耦合,在该主存储器中加载了游戏服务器软件210以在CPU 206的一个或多个核心上执行。CPU 206经由PCIe接口116与图形卡100-1耦合,而以太网端口122-1与网络204耦合,该网络代表了多个互联的网络,例如因特网。
在实践中,云游戏服务器可以经由递送网络(delivery network,CDN)228来递送内容。如图2所示,CDN 228位于游戏服务器200和网络204之间。
桌面型游戏客户端202概括描绘了可以使用桌面型计算机等等来实现的各种类型的游戏客户端。在图示的实施例中,图形卡100-2是PCIe图形卡,它被安装在桌面型计算机的PCIe插槽中。在一些情况下,PCIe图形卡可经由一个PCIe插槽连接,占据桌面型计算机的多个扩展插槽。桌面型游戏客户端202包括CPU 212,它是与主存储器214耦合的多核处理器,在该主存储器中加载了客户端侧游戏软件216,以由CPU 212上的一个或多个核心执行。图形卡100-2的以太网端口122-2耦合到网络204。对于典型的游戏玩家而言,桌面型游戏客户端202将耦合到局域网(Local Area Network,LAN),该局域网将包括与线缆调制解调器或者类似的广域网(Wide Area Network,WAN)接入设备相耦合的交换机,该接入设备耦合到互联网服务提供商(Internet Service Provider,ISP)网络218,该ISP网络进而耦合到网络204。
图2a示出了云游戏实现方式的一个实施例,其包括经由网络204和ISP网络218与桌面型游戏客户端202a相耦合的游戏服务器200a。游戏服务器200a和桌面型游戏客户端202a的每一者具有图1a的图形卡100a的各自实例,如图形卡100a-1和100a-2所描绘的。一般而言,图2和图2a中相似编号的组件和块是类似的,并且执行类似的操作。如下文进一步详细描述的,图2和图2a的云游戏实现方式之间的差异是输出视频控制输入和非图像数据的处理。同时,图2和图2a的实施例中的图像数据的处理和转发是类似的。
图3示出了云游戏实现方式,包括经由CDN 228、网络303和ISP网络318与膝上型游戏客户端301相耦合的游戏服务器200。游戏服务器200具有与图2所示相同的配置,如上所述。作为一个选项,游戏服务器200可以被图2的游戏服务器200a所取代。
膝上型游戏客户端301包括主板300,该主板包括与图形存储器314耦合的GPU302、与主存储器328和GPU 302耦合的CPU 326、WiFiTM芯片315、以及DisplayPort和/或HDMI端口320和USB-C接口332。如前所述,客户端侧游戏软件被加载到主存储器328中,并且在CPU 326上的一个或多个核心上被执行。GPU 302包括帧缓冲器304,该帧缓冲器被H.264/H.265视频编解码器306经由接口308访问。H.264/H.265视频编解码器306包括I/O接口310,该接口与网络接口313耦合,该网络接口进而与基于硬件的网络堆栈317耦合。一般而言,基于硬件的网络堆栈317可被集成在WiFiTM芯片315上或者包括单独的组件。膝上型游戏客户端一般将包括与CPU 326耦合的移动芯片组(未示出),该芯片组支持各种通信端口和I/O互连,例如USB-C、USB 3.0、USB 2.0和PCIe互连。
在膝上型游戏客户端301的图示配置下,无线通信由无线接入点324和天线319来促进。如前所述,无线接入点将连接到线缆调制解调器或者类似的ISP接入手段,该手段将连接到ISP网络318。作为一个选项,以太网适配器可以连接到USB-C接口332,使得膝上型游戏客户端301能够采用以太网链路到ISP网络318(经由以太网交换机和线缆调制解调器)。
主板300将被包含在膝上型外壳内,显示器334将耦合到该外壳。一般而言,显示器将由适用的电路来驱动,该电路要么被内置到GPU 302中,要么被实现在与GPU 302耦合的分立组件上,例如LCD驱动器336所描绘的。
在本文的实施例下,可以经由直接在CPU上运行的软件(例如,操作系统和/或NIC驱动程序)、平台/服务器固件和/或经由从在CPU上运行的软件或平台/服务器固件接收配置信息的GPU来配置NIC。例如,在一些实施例中,NIC被实现为PCIe端点,并且是由CPU管理的PCIe互连结构的PCIe层次体系的一部分。在其他实施例中,GPU上的软件向GPU提供关于如何配置NIC的指令。
视频编码和流传输引言
根据本文公开的实施例的各方面,提供了用于以减小时延的方式将视频游戏图像数据流传输到由玩家操作的终端用户设备(又称玩家设备)的技术。在使用帧编码和解码时流传输视频游戏图像数据的各方面可以采用与用于视频流传输相同的编解码器(编码器-解码器)。因此,为了更好地理解如何实现实施例,首先提供了对视频压缩和解压缩技术的基本方面的论述。除了本文的细节以外,关于可如何实现视频压缩和解压缩的进一步细节可从一些在线来源获得,包括在可在http://www.eetimes.com/document.asp?doc_id=1275437获得的EE Times.com的一篇标题为“How video compression works”的文章中获得,这是大部分以下论述的来源。
在基本级别上,流媒体视频内容在显示器上作为“帧”或“图片”的序列被播放。每个帧当被渲染时包括像素阵列,其尺寸与重放分辨率相对应。例如,全HD(high-definition,高清晰度)视频的分辨率为1920个水平像素乘以1080个垂直像素,这通常被称为1080p(逐行)或1080i(隔行)。进而,帧被以帧率进行显示,在这种情况下,帧的数据按帧率被刷新(重新渲染,如果适用的话)。多年来,标准清晰度(standard definition,SD)电视使用了30i的刷新率(30帧每秒(fps)隔行),这相当于以交替方式每1/30秒更新隔行视频内容的两个场。这产生了帧率为60帧每秒的错觉。还要注意,历史上SD内容是模拟视频,它使用光栅扫描来显示,而不是像素。数字显示器上的SD视频的分辨率是480线,注意到几十年来使用的模拟信号实际上有大约525条扫描线。因此,DVD内容对于NTSC(NationalTelevision System Committee,国家电视系统委员会)市场(例如美国)历来是以480i或480p被编码的。
有线和卫星TV提供商通过光缆和/或有线电缆或通过大气层(长距离无线)流传输视频内容。地面电视广播类似地是通过空气发送的;历史上,这些是作为模拟信号被发送的,但自从2010年左右以来,所有高功率TV广播公司都被要求完全使用数字信号进行传输。US的数字TV广播信号一般包括480i、480p、720p(1280x720像素分辨率)和1080i。
蓝光盘(Blu-ray Disc,BD)视频内容于2003年在日本被引入,并且于2006年被正式发行。蓝光盘支持最高达1080p的视频重放,这相当于60(59.94)fps下的1920x1080。虽然BD支持高达60fps,但许多BD内容(尤其是最近的BD内容)实际上是以24fps逐行被编码的(也称为1080/24p),这是历史上被用于胶片(电影)的帧率。从24fps到60fps的转换通常可利用3:2“下拉”技术来完成,在该技术下帧内容被以3:2模式重复,这可能会造成各种类型的视频伪影,尤其是在重放带有大量运动的内容时。更新的“智能”TV的刷新率为120Hz或240Hz,每一者都是24的偶数倍。因此,这些TV支持24fps的“电影”或“影院”模式,在这种模式下,它们使用HDMI(High Definition Multimedia interface,高清晰度多媒体接口)数字视频信号来将视频内容数字化,并且使用5:5或10:10下拉重复所提取的帧内容,来以120fps或240fps显示24fps内容,以匹配TV的刷新率。最近,来自诸如索尼和三星之类的制造商的智能TV支持重放模式,在这种模式下,在实际的24fps帧之间创建多个插值帧,以创造平滑的效果。
符合要求的蓝光盘重放设备被要求支持三种视频编码标准:H.262/MPEG-2Part2、H.264/MPEG-4AVC、以及VC-1。这些视频编码标准的每一者的操作方式类似于下文所述,但要注意这些标准之间有一些差异。
除了视频内容被编码在DVD和蓝光盘上之外,大量的视频内容是利用视频流传输技术来递送的。用于流媒体(例如电影和电视节目)的编码技术一般可以与用于BD内容的编码技术相同或相似。例如,Netflix和Amazon即时视频的每一者使用VC-1(此外还有其他取决于重放设备能力的流传输格式),VC-1最初是由Microsoft作为专有视频格式开发的,并且在2006年作为SMPTE(Society of Motion Picture and Television Engineers,美国电影电视工程师协会)视频编解码标准被发布。同时,YouTube使用视频编码标准的混合,这些一般与用于记录上传的视频内容的标准相同,其中大部分内容是利用消费级视频记录设备(例如,摄像机、移动电话和数码相机)来记录的,而不是用于记录原始电视内容和一些重播电影的专业级设备。
为了提供视频内容如何被流传输的示例,最近的测量表明,在峰值消费时段期间,Netflix流传输使用了Comcast的有线电视互联网服务的带宽的三分之一或更多。除了自2011年以来支持全HD(1080p)流传输以外,Netflix、Amazon、Hulu和流传输不断增多的4K视频(3840x2160)的视频内容,也被称为超高清或UHD。
更先进的智能TV普遍支持对经由基于IEEE 802.11的无线网络(通常称为WiFiTM)递送的流媒体的重放。此外,大多数更新的BD播放器支持视频内容的WiFiTM流传输,每部智能电话也是如此。此外,许多最近的智能电话和平板设备支持无线视频流传输方案,在这种方案下,可以经由通过智能手机或平板设备利用WiFiTM直联或无线MHL(Mobile High-definition Link,移动高清晰度链路)或类似标准进行重放,在智能TV上观看视频。此外,现在通过LTE(Long-term Extension,长期演进)和第5代(5G)移动网络可获得的数据服务带宽使得诸如IPTV(Internet Protocol Television,互联网协议电视)之类的服务成为经由移动网络观看电视和其他视频内容的一种可行手段。
在1080的分辨率下,每一帧包括大约210万像素。如果视频内容被以原始像素数据的形式递送,则仅使用8比特像素编码就将会要求接近1700万比特每秒(Mbps)的数据流传输速率来支持仅1帧每秒的帧率。由于这是不现实的,所以视频内容被以高度压缩的格式来编码。
静止图像,例如使用互联网浏览器观看的静止图像,通常是使用JPEG(JointPhotographic Experts Group,联合摄影专家组)或PNG(Portable Network Graphics,便携式网络图形)来编码的。原始的JPEG标准定义了一种“有损”的压缩方案,在这种方案下,解码后的图像中的像素可能与原始图像不同。相比之下,PNG采用了一种“无损”压缩方案。由于无损视频在许多级别上是不切实际的,所以各种视频压缩标准机构,例如定义了第一个MPEG-1压缩标准(1993年)的运动摄影专家组(Motion Photographic Expert Group,MPEG),采用了有损压缩技术,包括内帧(“I帧”)(也称为“关键”帧)的静止图像编码,与用于生成其他类型的帧的运动预测技术相结合,其他类型的帧例如是预测帧(“P帧”)和双向帧(“B帧”)。
由于数字化的视频内容是由帧的序列构成的,所以视频压缩算法采用了静止图像压缩中采用的概念和技术。静止图像压缩采用了块编码和高级数学的组合,以大幅减少用于编码图像的比特的数目。例如,JPEG将图像划分为8x8像素块,并且使用离散余弦变换(discrete cosine transformation,DCT)将每个块变换为频域表示。一般而言,除了8x8以外的其他块大小和除了DCT以外的算法可以被用于其他基于标准的和专有的压缩方案的块变换操作。
DCT变换被用来促进基于频率的压缩技术。一个人的视觉感知对包含在低频(对应于图像中的大特征)中的信息比包含在高频(对应于小特征)中的信息更敏感。DCT有助于将感知上更重要的信息与感知上不太重要的信息分开。
在块变换之后,利用量化和编码对每个块的变换系数进行压缩。量化以一种有偏向的方式降低了变换系数的精度:对于低频系数使用更多的比特,而对于高频系数使用更少的比特。这利用了如上所述的事实,即人类视觉对低频信息更敏感,所以高频信息可以更近似。
接下来,通过“编码”减少用于表示量化的DCT系数的比特的数目,这利用了系数的一些统计属性。在量化之后,DCT系数中的许多——通常是绝大多数的高频系数——都是零。一种被称为“游程长度编码”(run-length coding,RLC)的技术利用了这个事实,其方式是通过对连续的零值系数(“游程”)分组并且对系数的数目(“长度”)进行编码,而不是对个体的零值系数进行编码。
游程长度编码之后通常是可变长度编码(variable-length coding,VLC)。在可变长度编码中,利用只包含几个比特的码字来表示经常出现的符号(表示量化的DCT系数或者零值量化系数的游程),而不太常见的符号则用更长的码字来表示。通过对最常见的符号使用更少的比特,VLC减少了对符号编码所需的比特的平均数目,从而减少了对整个图像进行编码所需的比特数目。
在这个阶段,所有前述技术都是在每个8x8块上独立于任何其他块进行操作的。由于图像通常包含比8x8块大得多的特征,所以通过考虑到图像中的相邻块之间的相似性,可以实现更高效的压缩。为了利用这种块间相似性,在对变换系数进行量化之前经常会添加预测步骤。在这个步骤中,编解码器尝试利用来自周围块的信息来预测块内的图像信息。一些编解码器(例如MPEG-4)通过预测DCT系数在频域中执行这个步骤。其他编解码器(例如H.264/AVC)在空间域中进行这个步骤,并且直接预测像素。后一种方法被称为“内预测”。
在这个操作中,编码器尝试基于周围块的系数或像素来预测每个块中的一些DCT系数(如果在频域中进行)或像素值(如果在空间域中进行)的值。然后,编码器计算出实际值和预测值之间的差异,并且对差异而不是实际值进行编码。在解码器处,通过执行相同的预测,然后加上由编码器传输的差异,来重建系数。因为与实际系数值相比,差异往往较小,所以这种技术减少了表示DCT系数所需的比特数目。
在预测特定块的DCT系数或像素值时,解码器只能访问已经被解码的周围块的值。因此,编码器必须仅基于来自先前编码的周围块的值来预测每个块的DCT系数或像素值。JPEG使用一种非常初级的DCT系数预测方案,其中只有最低频率的系数(“DC系数”)被使用简单的差分编码来预测。MPEG-4视频使用一种更复杂的方案,该方案尝试预测8x8块的每一行和每一列中的第一个DCT系数。
与MPEG-4形成对比,在H.264/AVC中,预测是直接在像素上进行的,并且类似DCT的整数变换始终处理残差——要么来自运动估计,要么来自内预测。在H.264/AVC中,像素值从未像在JPEG或MPEG-4I帧中那样被直接变换。因此,解码器必须对变换系数进行解码并且执行逆变换,以获得残差,该残差被添加到预测的像素。
另一种广泛使用的视频编解码器是高效率视频编码(High Efficiency VideoCoding,HEVC),也被称为H.265(本文使用)和MPEG-H Part 2。与H.264/AVC相比,HEVC在相同的视频质量水平上提供了好25%到50%的数据压缩,或者在相同的比特率下大幅提高了视频质量。它支持高达8192×4320的分辨率,包括8K UHD,而且与主要是8比特的AVC不同,HEVC的更高保真度Main10档次已被纳入到几乎所有支持的硬件中。HEVC使用整数DCT和DST变换,具有在4×4和32×32之间的各种块大小。
彩色图像通常是用几个“颜色平面”来表示的。例如,RGB彩色图像包含红色平面、绿色平面和蓝色平面。当被叠加和混合时,这三个平面构成了全彩色图像。为了压缩彩色图像,早前描述的静止图像压缩技术可被依次应用于每个颜色平面。
成像和视频应用经常使用一种颜色方案,其中颜色平面并不对应于特定的颜色。相反,一个颜色平面包含亮度信息(彩色图像中的每个像素的整体亮度),并且还有两个颜色平面包含颜色(色度)信息,该信息当与亮度相结合时,可用于得出每个图像像素的红色、绿色和蓝色成分的具体水平。这种颜色方案很方便,因为人眼对亮度比对颜色更敏感,所以色度平面通常可以按比亮度信息更低的图像分辨率被存储和/或编码。在许多视频压缩算法中,色度平面是以亮度平面的水平分辨率的一半和垂直分辨率的一半来编码的。从而,对于亮度平面中的每一个16像素乘16像素的区域,每个色度平面包含一个8像素乘8像素的块。在典型的视频压缩算法中,“宏块”是视频帧中的16x16区域,该区域包含四个8x8亮度块和两个相应的8x8色度块。
虽然视频和静止图像压缩算法共享许多压缩技术,但一个关键区别是如何处理运动。一种极端的方法是使用JPEG或类似的静止图像压缩算法对每一帧进行编码,然后对JPEG帧进行解码,以在播放器处生成。JPEG和类似的静止图像压缩算法可以按大约10:1的压缩比率产生高质量的图像,而高级压缩算法可以按高达30:1的压缩比率产生类似的质量。虽然10:1和30:1是可观的压缩比率,但视频压缩算法可以按高达约200:1的压缩比率提供良好质量的视频。这是通过使用依视频而定的压缩技术(例如运动估计和运动补偿)与静止图像压缩技术相结合,来实现的。
对于当前帧中的每个宏块,运动估计尝试在先前编码的帧(称为“参考帧”)中找到作为接近匹配的区域。当前块与来自参考帧的选定块之间的空间偏移被称为“运动向量”。编码器计算来自参考帧的选定块与当前块之间的逐像素差异,并且将这个“预测误差”与运动向量一起传输。大多数视频压缩标准允许绕过基于运动的预测,如果编码器不能为宏块找到一个良好的匹配的话。在这种情况下,宏块本身而不是预测误差被编码。
注意,参考帧并不总是显示的视频帧的序列中的紧挨在前的那一帧。更确切地说,视频压缩算法通常对帧的编码顺序与它们的显示顺序不同。编码器可能会跳过前面的几帧,并且对未来的视频帧进行编码,然后向后跳过,并且对显示序列中的下一帧进行编码。这样做是为了使得能够在时间上向后执行运动估计,使用经编码的未来帧作为参考帧。视频压缩算法通常也允许使用两个参考帧——一个先前显示的帧和一个先前编码的未来帧。
视频压缩算法周期性地只使用静止图像编码技术对内帧进行编码,而不依赖先前编码的帧。如果压缩比特流中的一个帧被差错所破坏(例如,由于丢包或其他传输错误),则视频解码器可以在下一个I帧“重新开始”,这不要求参考帧来重建。
图4示出了由I帧400、P帧402和B帧404构成的示范性帧编码和显示方案。如上所述,I帧是以类似于静止图像的方式来周期性地编码的,而不依赖于其他帧。P帧(预测帧)是仅使用先前显示的参考帧来进行编码的,如先前帧406所描绘的。同时,B帧(双向帧)是使用未来和先前显示的参考帧两者来进行编码的,如先前帧408和未来帧410所描绘。
图4的下部描绘了示范性的帧编码序列(向下推进)和相应的显示重放顺序(向右推进)。在这个示例中,按编码顺序,每个P帧后面是三个B帧。同时,按显示顺序,每个P帧在三个B帧之后被显示,表明编码顺序和显示顺序是不相同的。此外,注意,P帧和B帧的出现一般会有所变化,这取决于所捕捉的视频中存在多少运动;这里使用一个P帧、然后是三个B帧是为了简单和易于理解I帧、P帧和B帧的实现方式。
使运动估计复杂化的一个因素是,对象从参考帧到当前帧的位移可能是非整数个像素。为了应对这种情形,现代视频压缩标准允许运动向量具有非整数值,例如导致了运动向量分辨率为二分之一或四分之一像素。为了支持在部分像素位移处搜索块匹配,编码器采用插值来估计参考帧在非整数位置的像素值。
部分由于处理器限制,运动估计算法使用各种方法来选择有限数目的有希望的候选运动向量(在大多数情况下大约是10到100个向量),并且只评估与这些候选向量相对应的16x16区域(或者对于H.265而言最高达32x32区域)。一种方法是在几个阶段中选择候选运动向量,随后导致选择最佳运动向量。另一种方法分析先前为当前和先前帧中的周围宏块选择的运动向量,以试图预测当前宏块中的运动。基于此分析选择少量的候选运动矢量,并且只对这些向量进行评估。
通过选择少量的候选向量而不是详尽地扫描搜索区域,运动估计的计算需求可得以大大减小——有时可以减小超过两个量级。但是,在处理负载和图像质量或压缩效率之间存在权衡:一般而言,搜索更多的候选运动向量允许了编码器在参考帧中找到与当前帧中的每个块更好匹配的块,从而减小了预测误差。预测误差越低,对图像进行编码所需的比特就越少。因此,增大候选向量的数目允许了降低压缩比特率,但代价是要执行更多的计算。或者,在保持压缩比特率恒定的同时增大候选向量的数目,允许了以更高的精度对预测误差进行编码,提高了图像质量。
一些编解码器(包括H.264和H.265)允许将16x16宏块细分为更小的块(例如,8x8、4x8、8x4和4x4块的各种组合)以降低预测误差。这些更小的块中的每一者可具有其自己的运动向量。这种方案的运动估计搜索开始于为整个16x16块(或32x32块)找到良好位置。如果匹配足够接近,就不需要进一步细分了。但如果匹配较差,那么算法就从迄今为止找到的最佳位置开始,并且将原始块进一步细分为8x8块。对于每个8x8块,算法在16x16搜索所选择的位置附近搜索最佳位置。取决于找到良好匹配的速度,该算法可以使用8x4、4x8等等更小的块来继续该过程。
在重放期间,视频解码器经由使用压缩比特流中编码的运动向量来预测每个宏块中的像素来执行运动补偿。如果运动向量的水平和垂直分量都是整数值,那么预测的宏块就简单地是参考帧的16像素乘16像素区域的拷贝。如果运动向量的任何分量具有非整数值,那么使用插值来在非整数像素位置处估计图像。接下来,预测误差被解码并被添加到预测的宏块,以便重建实际的宏块像素。如前所述,对于诸如H.264和H.265之类的编解码器,16x16(或高达32x32)的宏块可以被细分为具有独立运动向量的更小部分。
理想情况下,有损图像和视频压缩算法只丢弃感知上不重要的信息,从而对人眼而言,重建的图像或视频序列看起来与原始未压缩图像或视频相同。然而,在实践中,一些伪影可能是可见的,尤其是在运动量较大的场景中,例如当场景被平移时。这可能是由于以下原因而发生的:不良的编码器实现方式,视频内容的编码尤其具有挑战性,或者选择的比特率对于视频序列、分辨率和帧率而言太低。后一种情况尤其常见,因为许多应用为了降低存储和/或带宽要求而牺牲了视频质量。
两种类型的伪影,“块化”和“振影”,在视频压缩应用中是常见的。块化伪影是由于压缩算法将每一帧划分成8x8块这个事实。每个块在重建时带有一些小的误差,并且块边缘处的误差经常与相邻块边缘处的误差形成对比,使得块边界是可见的。相比之下,振影伪影则表现为图像特征的边缘周围的失真。振影伪影是由于编码器在量化高频DCT系数时丢弃了太多的信息。
为了减少块化和振影伪影,视频压缩应用经常在解压缩之后采用滤波器。这些滤波步骤分别被称为“解块”和“解振影”。或者,解块和/或解振影可以被集成到视频解压缩算法中。这种方法——有时被称为“环路滤波”——使用滤波后的重建帧作为用于解码未来视频帧的参考帧。例如,H.264包括“环内”解块滤波器,有时被称为“环路滤波器”。
端到端图像数据流示例
图5根据一个实施例示出了游戏服务器200和桌面型游戏客户端202之间的端到端图像数据流的示例。关联的操作被进一步描绘在图6所示的流程图600中。在图5的示例下,图示了游戏服务器200中的服务器图形卡100-1和桌面型游戏客户端202中的客户端图形卡100-2之间的通信。一般而言,图5中图示的通信可以在生成游戏图像内容的任何类型的设备和具有用于接收和处理游戏图像内容的客户端的任何类型的设备(例如云游戏服务器和由玩家操作的游戏设备)之间进行。在这个示例中,音频内容被描绘为在服务器图形卡100-1和客户端图形卡100-2之间被传送。在一些实现方式中,音频内容将经由服务器和/或客户端(未示出)上的单独网络接口(例如,单独的NIC或网卡)被传送。在一些采用单独网络接口的实现方式中,流传输会话通信和控制通信将经由图5中未示出的单独通信路径被发送。
如流程图600中的块602中所示,该过程开始于在服务器和客户端之间建立流传输会话。任何类型的现有和未来的流传输会话一般都可被使用,并且本文公开的教异和原则一般与流传输会话的特定类型无关。可以使用的流传输协议的类型包括但不限于传统的流传输协议,例如RTMP(Real-Time Messaging Protocol,实时消息传递协议),RTSP(Real-Time Streaming Protocol,实时流传输协议)/RTP(Real-Time Transport Protocol,实时传输协议),和基于HTTP的自适应协议,例如苹果HLS(HTTP Live Streaming,HTTP实时流传输),低时延HLS,MPEG-DASH(Moving Picture Expert Group Dynamic AdaptiveStreaming over HTTP,运动图片专家组-HTTP动态自适应流传输)、DASH的低时延CMAF(Common Media Application Format for DASH,DASH的通用媒体应用格式),微软平滑流传输,Adobe HDS(HTTP Dynamic Streaming,HTTP动态流传输)。也可以使用更新的技术,例如SRT(安全可靠传输)和webRTC(Web实时通信)。在一个实施例中,建立HTTP或HTTPS流传输会话,以支持基于HTTP的自适应协议之一。
图5示出了NIC 112-1和NIC 112-2之间的两个网络通信:TCP/IP(基于互联网协议的传输控制协议)连接500和UDP/IP(基于IP的通用数据报协议)流502。为简单起见,这些通常被称为TCP和UDP。TCP是一种可靠连接协议,在此协议下,TCP封包504被从发送者传输到接收者,接收者通过发送指示出已被成功接收的帧序列的确认(ACK)506来确认对封包的接收。有时,TCP封包/帧被丢弃或者以其他方式在带有差错的情况下被接收,如TCP封包508所描绘的。响应于检测到缺失或错误的封包,接收者将发送否定ACK(NACK)510,其中包含识别缺失/错误的封包的信息。然后缺失或错误的封包被重传,如重传的封包508R所示。如进一步示出的,TCP/IP连接500可被用于接收来自桌面型游戏客户端202的游戏控制输入。
使用TCP来设置HTTP流传输会话。然而,取决于流传输协议,视频和/或音频内容可以使用UDP。UDP是一种无连接的非可靠协议,它被广泛用于实况流传输。UDP使用“尽力而为”传输,这意味着封包可能被丢弃和/或可错误的封包可能被接收。在任一情况下,缺失或错误的封包会被接收者所忽略。图5中所示的UDP封包514的流被用来描绘视频和(可选的)音频内容的封包。一些混合媒体传输方案采用了TCP和UDP传输的组合。
返回到流程图600,在一个块处,经由在游戏服务器200上对游戏软件的执行,由服务器图形卡100-1中的GPU 102-1生成原始视频帧的序列,例如帧605所描绘的。随着原始视频帧的序列被生成,个体帧的内容被拷贝到帧缓冲器104,在给定的时间点,多个个体帧被存储在帧缓冲器104中。在块606中,使用适用的视频编解码器,例如H.264或H.265编解码器,对帧进行编码,以创建视频流。这是由H.264/H.265编解码器106-1执行的,它从帧缓冲器104读入原始视频帧内容,并且生成经编码的视频流,如视频流516所描绘的。正如本领域技术人员将会认识到的,所生成的视频流包括与I、P和B帧的序列相对应的经压缩和编码的内容,这些帧被排序以使得在桌面型游戏客户端202处能够对原始视频帧内容进行解码和重放,如上面的引言中所述。
与生成和编码游戏图像帧并行地,游戏音频内容被编码成流传输格式,如图5中的块607和音频流生成块518所描绘的。一般而言,音频内容将由在游戏服务器CPU上运行的游戏软件生成,并且音频内容的编码可以使用软件或硬件来执行。在这个示例中,编码是在服务器图形卡100-1的外部执行的。在一些实施例中,GPU 102-1或服务器图形卡100-1上的其他电路(未示出)可被用于编码音频内容。
在块608中,视频流内容被NIC 112-1打包。可选地,音频流也可以被NIC 112-1打包。在一种方法下,视频和音频流被作为单独的流(并行)发送,并且在其中一个流中存在信息,该信息用于经由游戏客户端上的重放设施来同步音频和视频内容。在其他方法下,视频和音频内容被组合并且被作为单个封包流发送。一般而言,可以使用任何现有的或未来的视频和音频流传输打包方案。
如块610所描绘的,AV(音频和视频)内容通过网络被从服务器图形卡100-1流传输到客户端图形卡100-2。如图5中所描绘的,相应的内容经由UDP封包514被流传输,该封包代表了用于发送AV内容的一个或多个UDP流。
接收方的操作由客户端图形卡100-2执行。随着一个或多个UDP流被接收,音频和视频内容被缓冲在NIC 112-2中的一个或多个UDP缓冲器520中,并且随后被解包,如流程图600中的块612所描绘的。在音频处理不由GPU或客户端图形卡处理的实施例中,解包的音频内容被分离并且转发到主机CPU以执行音频内容的处理和输出,如流程图600中的块618和图5中的音频解码和同步块522所描绘的。可选地,音频处理可以由客户端图形卡100-2上的适用设施(未示出)执行。
在块614中,利用适用的视频编解码器对视频(游戏图像)帧进行解码。在图5的示例中,这是由H.264/H.265编解码器106-2执行的。可以使用各种机制来将解包的编码视频内容从NIC 112-2转发到H.264/H.265编解码器106-2上的I/O接口110。例如,可以使用工作描述符方案,其中NIC将工作描述符写入到GPU 102-2上的存储器位置,然后将相应的“工作”(例如,(一个或多个)编码的视频数据片段)写入到GPU 102-2上的位置或者客户端图形卡102-2上的图形存储器中(未示出)。在另一个实施例下,可以使用“门铃”方案,即,当NIC112-2有解包的编码视频片段可用时,它发布门铃,并且H.264/H.265编解码器106-2从NIC112-2读取编码视频片段。也可以使用其他类型的排队机制。在一些实施例中,使用循环先进先出(First-In First-Out,FIFO)缓冲器或队列,例如循环FIFO。
如图5所示,H.264/H.265编解码器106-2在解码和重组装块528中执行视频流解码处理524和帧(重)生成526。再生的帧可被写入到GPU帧缓冲器104-2,然后被输出到桌面型游戏客户端202的显示器,如图6中的块616和视频帧605所描绘的。例如,GPU 102-2可以生成游戏图像帧并且通过适用的视频接口(例如,HDMI、DisplayPort、USB-C)输出相应的视频信号,以便在监视器或其他类型的显示器上观看。如音频/视频输出块528所描绘的,音频和视频内容分别被输出到桌面型游戏客户端202的(一个或多个)扬声器和显示器。
一般而言,当集成在GPU上或者与客户端图形卡上的GPU相耦合的NIC被用来处理TCP流量时,接收到的TCP封包将被缓冲在一个或多个TCP缓冲器530中。如下文所描述和图示的,NIC 112-1和112-2的每一者具有用于在硬件中实现完整网络堆栈的设施。一般而言,接收到的TCP封包将被打包并且被转发到主机CPU以便进一步处理。转发可以通过传统手段完成,例如使用PCIe写入事务的DMA(Direct Memory Access,直接存储器访问)。
基于瓦片(tile)的游戏
许多流行的游戏采用了瓦片和关联的瓦片图谱。当与使用视频编码/解码技术相比时,这可能导致性能增益。
图7a和图7b的示意图700a和700b分别根据一个实施例图示了在游戏服务器和游戏客户端上对于基于瓦片的游戏执行的操作。如图7a所示,瓦片702全帧图像是由排列成X-Y网格的多个瓦片702组成的。在玩游戏期间,在游戏服务器上执行的游戏软件生成瓦片,如瓦片生成块704所描绘的。瓦片被写入到一个或多个瓦片缓冲器705中。瓦片编码器706使用图像压缩算法对瓦片进行编码,以生成编码瓦片708,随后编码瓦片中的图像数据被NIC710上的打包逻辑712进行打包。然后,NIC 710将编码瓦片流714传输到网络上,以递送到游戏客户端。
现在参考图7b的示意图700b,游戏客户端在NIC 716处接收编码瓦片流714,NIC716执行解包718以输出编码瓦片708。然后,编码瓦片被写入到瓦片缓冲器720中(或者GPU上的或GPU可访问的其他形式的某个存储器空间)。然后,解码和再生成瓦片块722被用于从瓦片缓冲器720读取编码瓦片内容,对编码瓦片内容进行解码以再生成原始瓦片,这些原始瓦片被描绘为再生瓦片702R。
图1c示出了包括GPU 102c的图形卡100c的实施例,该GPU被配置为支持示意图700a和700b中所示的服务器侧和客户端侧操作。如图1和图1c中由相同编号的组件和块所描绘的,图形卡100和100c的配置是相似的。差别在于GPU 102c包括带有I/O接口111的瓦片编码器和解码器706。瓦片编码器和解码器被配置为执行图7a中的瓦片编码器706的编码操作和至少图7b中的解码和再生成瓦片块722的解码操作。在一个实施例中,在瓦片编码器和解码器706中实现用于解码和再生成瓦片块722的完整逻辑。可选地,可以在单独的块(未示出)中实现瓦片再生成逻辑的一部分和与游戏瓦片的重组装有关的其他逻辑。
具有多个图形卡的云游戏服务器
在一种方法下,云游戏服务器将包括多个图形卡,例如图8中对于云游戏服务器800所描绘的。云游戏服务器800包括m个图形卡100(如图形卡100-1、100-2、100-3、100-4、100-m所描绘的),每个图形卡占据服务器的主板上的各个PCIe插槽(又称扩展插槽)。服务器的主板还包括一个或多个CPU 806,其与主存储器808耦合,在主存储器中加载了游戏软件810。云游戏服务器800还包括安装在各个PCIe插槽中的一个或多个网络适配器卡812,每个网络适配器卡包括NIC芯片814、PCIe接口816和一个或多个以太网端口,例如由以太网端口818和820所描绘的。
在图8a中的云游戏服务器800a的实施例下,包括PCIe接口817的NIC芯片815被安装到服务器的主板,并且经由适用的互连结构与CPU806耦合。例如,CPU 806可包括PCIe根端口(Root Port,RP)821,PCIe接口817经由PCIe链路823与之耦合。
在图8b中的云游戏服务器800b的实施例下,CPU 806、主存储器808和NIC芯片815被安装到包括PCIe接口826的刀片服务器824中的主板。云游戏服务器800b包括背板、中板或底板828,其中具有多个扩展插槽或连接器,如插槽/连接器830和832所描绘的。服务器刀片824和m个图形卡100-1、100-2、100-3、100-4、100-m中的每一者被安装在各自的扩展插槽中,或者包括与背板、中板或底板828上的配接连接器相耦合的连接器。
云游戏服务器被配置为通过采用图形卡100来生成和流传输游戏图像数据,同时采用一个或多个网络适配器卡812或NIC 815来处理游戏控制输入和设置并管理流传输连接,来扩展游戏容宿能力。从而,图形卡100上的集成NIC没有处理与实时控制输入和流传输设置和管理流量有关的I/O流量的负担;更确切地说,集成NIC只需要处理传出的图像数据流量。此外,由于数据路径直接从图像数据编码器(例如,本示例中的H.264/H.265编解码器,但在其他实施例中可以是瓦片编码器/解码器)流出,所以时延得以减小。此外,可以使用NIC 815或网络适配器卡812对游戏音频内容进行流传输。在其他实施例中,使用图形卡100对音频内容进行流传输,如上所述。
图9根据一个实施例示出了在集成NIC 900中实现的块级组件。NIC900包括与存储器904耦合的NIC处理器902,包括接收(RX)端口908和发送(TX)端口910的一个或多个网络端口906(例如,以太网端口),主机I/O接口912,编解码器I/O接口914,以及用于实现网络堆栈916的嵌入式逻辑。网络端口906包括用于实现开放系统互连(Open SystemsInterconnection,OSI)模型的物理层(PHY层1)和媒体访问通道(Media Access Channel,MAC)(层2)的电路和逻辑。
RX端口908和TX端口910包括各自的RX和TX缓冲器,其中缓冲了接收的封包(例如,封包A、B、C、D)和待传输的封包(例如,封包Q、R、S、T)。接收的封包被传入封包处理块918处理并且被缓冲在(一个或多个)上游封包队列920中。传出封包在(一个或多个)下游封包队列922中被排队,并且被利用传出封包处理块924来处理。
流规则926被存储在存储器904中,并且被用于确定接收到的封包将被转发到何处。例如,传入视频封包将被转发到视频编解码器或瓦片解码器,而游戏控制和会话管理封包可被转发到主机CPU。NIC 900可包括可选的DMA逻辑928,以使得NIC能够将封包数据直接写入到主存储器(经由主机I/O接口912)和/或图形存储器中。
主机I/O接口包括输入FIFO队列930和输出FIFO队列932。类似地,编解码器I/O接口914包括输入FIFO队列934和输出FIFO队列936。GPU或图形卡上的配接主机I/O和视频编解码器中的配接编解码器I/O接口包括类似的输入和输出FIFO队列(未示出)。
在一个实施例下,NIC 900包括用于实现OSI模型的网络层3和传输层4的嵌入式逻辑。例如,网络层3一般将被用于互联网协议(IP),而传输层4可被用于TCP和UDP协议两者。在一个实施例下,NIC 900包括进一步的嵌入式逻辑,用于实现会话层5、呈现层6和应用层7。这将使得NIC能够促进与这些层相关联的功能,例如建立HTTP和HTTPS流传输会话和/或实现上面论述的各种媒体流传输协议。在这些操作由主机CPU处理的实现方式中,没有必要包括会话层5、呈现层6和应用层7。
NIC处理器902执行固件指令938以执行图9中的各种块所描绘的功能。固件指令可被存储在NIC 900上的可选固件存储单元940中,或者可被存储在NIC的外部某处。例如,当NIC 900是图形卡中采用的GPU上的集成NIC时,图形卡可包括其中安装了固件的存储单元或设备。在其他配置中,例如当被安装在游戏服务器中时,可在启动操作期间从主机中加载固件指令的全部或一部分。
一般而言,可以使用某种形式的嵌入式逻辑来实现为NIC 900图示的块的功能。嵌入式逻辑一般包括在电路中实现的逻辑,例如使用FPGA(现场可编程门阵列)或使用预编程或固定的硬件逻辑(或者预编程/硬编码和可编程逻辑的组合),以及在一个或多个嵌入式处理器、处理元件、引擎、微控制器等等上执行的固件。为了说明,在图9中示出了NIC处理器902上的固件执行的示例,但这并不意欲是限制性的。NIC处理器902是一种形式的嵌入式处理器,它可包括多个处理元件,例如核心或微引擎等。
NIC 900还可包括嵌入式“加速器”硬件等,用于执行封包处理操作,例如流控制、加密、解密,等等。例如。NIC 900可包括一个或多个密码块,这些块被配置为执行与HTTPS流量有关的加密和解密。NIC 900还可包括散列单元,以加速与封包流查找有关的散列密钥匹配。
在本文所示的实施例中,H.264/H.265编解码器是为了说明而示出的,而不是限制性的。一般而言,任何现有的和未来的视频编解码器都可被集成在GPU上,并且以类似于所示出的方式被使用。除了H.264和H.265以外,这样的视频编解码器还包括但不限于通用视频编码(Versatile Video Coding,VVC)/H.266、AOMedia视频(AOMedia Video,AV1)、VP8和VP9。
除了用于云游戏环境以外,本文描述和图示的GPU和图形卡还可被用于其他用例中。非限制性的示例用例包括:
·用Twitch进行实况游戏流传输。因为游戏的图像可从图形卡被直接发送出,所以游戏流的时延更低。
·其他视频流传输任务,比如各种YouTube实况流,可被加速。现今,视频流要么在CPU上被编码,要么在GPU上被编码——取决于对特定的用例更有意义的是什么。在GPU上发生编码的情况下,编码后的帧可以通过NIC被直接发送出,而无需经过回读过程和PC存储器。
·视频电话应用,例如Skype和Zoom。
·GPU经常被用作通用加速器,因为与CPU相比,它们的浮点操作速度通常要快得多,并且具有更好的可缩放性。在科学界或股票市场分析领域,计算经常发生在GPU上。如果在其他地方需要它们,例如,对于股票市场软件中的买入/卖出决策,则利用集成NIC将数据更快地发送出到网络。
·使用GPU作为加速器的平台的加密钱币挖掘。
除了使用本文描述和图示的PCI接口、互连和协议以外,还可以使用其他互连结构和协议。这些包括但不限于计算快速链路(Compute Express Link,CXL)、用于加速器的缓存一致互连(Cache Coherent Interconnect for Accelerators,CCIX)、开放一致加速器处理器接口(Open Coherent Accelerator Processor Interface,OpenCAPI)、以及Gen-Z互连。
虽然已参考特定实现方式描述了一些实施例,但根据一些实施例,其他实现方式是可能的。此外,不需要按图示和描述的特定方式来布置附图中图示和/或本文描述的元素或其他特征的布置和/或顺序。根据一些实施例,许多其他布置是可能的。
在附图中示出的每个系统中,元素在一些情况下可各自具有相同的标号或不同的标号以暗示出所表示的元素可以是不同的和/或相似的。然而,元素可以灵活到足以具有不同的实现方式并且与本文示出或描述的一些或所有系统一起工作。附图中示出的各种元素可以是相同或者不同的。哪一个被称为第一元素以及哪一个被称为第二元素,是任意的。
在说明书和权利要求中,可以使用术语“耦合”和“连接”及其衍生词。应当理解,并不打算让这些术语作为彼此的同义词。更确切地说,在特定实施例中,“连接”可被用于指示出两个或更多个元素与彼此发生直接物理或电气接触。“耦合”的意思可以是两个或更多个元素发生直接物理或电气接触。然而,“耦合”也可以指两个或更多个元素没有与彼此发生直接接触,但仍与彼此合作或交互。此外,“通信耦合”是指使得可以与彼此发生或不发生直接接触的两个或更多个元素能够与彼此通信。例如,如果组件A连接到组件B,组件B进而又连接到组件C,那么组件A可以使用组件B作为中介组件与组件C进行通信耦合。
实施例是本发明的实现方式或示例。说明书中提及“一实施例”、“一个实施例”、“一些实施例”或者“其他实施例”的意思是,联系这些实施例描述的特定特征、结构或特性被包括在本发明的至少一些实施例中,但不一定是所有实施例中。“一实施例”、“一个实施例”或者“一些实施例”的各种出现不一定全都指的是相同实施例。
在一个或多个特定实施例中并不需要包括本文描述和图示的所有组件、特征、结构、特性,等等。如果说明书陈述例如“可”、“可能”、“可以”或者“能够”包括某一组件、特征、结构或特性,那么并不要求包括该特定组件、特征、结构或特性。如果说明书或权利要求提及“一”元素,那么并不意味着只有一个该元素。如果说明书或权利要求提及“一额外”元素,那么并不排除有多于一个该额外元素。
算法在这里并且一般而言被认为是通向期望结果的动作或操作的自洽序列。这些包括对物理量的物理操纵。通常(但并非一定),这些量采取能够被存储、传送、组合、比较和以其他方式操纵的电信号或磁信号的形式。已证明有时候,主要是出于习惯用法的原因,将这些信号称为比特、值、元素、符号、字符、项、数字等等,是方便的。然而,应当理解,所有这些和类似的术语都将与适当的物理量相关联,并且只是应用到这些量的方便标签。
前述详细描述中的斜体字母,比如“m”、“n”等等,是用来描述整数数字的,并且对特定字母的使用不限于特定的实施例。此外,可以在不同的权利要求中使用相同字母来表示不同的整数数字,或者可以使用不同的字母。此外,在详细描述中对特定字母的使用可能与在涉及与详细描述中相同主题的权利要求中使用的字母相匹配,也可能不匹配。
如上所述,这里的实施例的各种方面可以由相应的软件和/或固件组件和应用来促进,例如由嵌入式处理器等等执行的软件和/或固件。从而,本发明的实施例可被用作或者用于支持在某种形式的处理器、处理核心或嵌入式逻辑上执行的软件程序、软件模块、固件和/或分布式软件,在处理器或核心上运行的虚拟机,或者以其他方式在非暂态计算机可读或机器可读存储介质上或在其内实施或实现。非暂态计算机可读或机器可读存储介质包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制。例如,非暂态计算机可读或机器可读存储介质包括以计算机或计算机器(例如,计算设备、电子系统,等等)可访问的形式提供(即,存储和/或传输)信息的任何机制,例如可记录/不可记录介质(例如,只读存储器(read only memory,ROM)、随机访问存储器(random access memory,RAM)、磁盘存储介质、光存储介质、闪存设备,等等)。内容可以是直接可执行的(“对象”或“可执行”形式)、源代码、或者差异代码(“增量”或“补丁”代码)。非暂态计算机可读或机器可读存储介质也可包括可从其中下载内容的存储装置或数据库。非暂态计算机可读或机器可读存储介质还可包括在销售或交付时其上存储有内容的设备或产品。从而,交付带有存储的内容的设备,或者通过通信介质提供内容供下载,可被理解为提供一种包括具有本文描述的这种内容的非暂态计算机可读或机器可读存储介质的制造品。
由本文描述的各种组件执行的操作和功能可以通过在处理元件上运行的软件、经由嵌入式硬件等等、或者通过硬件和软件的任何组合来实现。这种组件可被实现为软件模块、硬件模块、专用硬件(例如,特定应用硬件、ASIC、DSP,等等)、嵌入式控制器、硬连线电路、硬件逻辑,等等。可经由包括非暂态计算机可读或机器可读存储介质的制造品来提供软件内容(例如,数据、指令、配置信息,等等),该存储介质提供代表可被执行的指令的内容。该内容可导致计算机执行本文描述的各种功能/操作。
就本文使用的而言,由术语“……中的至少一者”联接的项目的列表可意指所列出的术语的任何组合。例如,短语“A、B或C中的至少一者”可意指A;B;C;A和B;A和C;B和C;或者A、B和C。
以上对本发明的图示实施例的描述,包括摘要中描述的那些,并不打算是详尽无遗的或者将本发明限制到所公开的精确形式。虽然出于说明目的在本文中描述了本发明的具体实施例及其示例,但正如相关领域的技术人员将会认识到的,在本发明的范围内各种等同修改是可能的。
可按照以上详细描述对本发明做出这些修改。所附权利要求中使用的术语不应当被解释为将本发明限制到说明书和权利要求中公开的具体实施例。更确切地说,本发明的范围完全由所附权利要求来确定,这些权利要求应根据所确立的权利要求解读准则来被解释。
Claims (20)
1.一种装置,包括:
图形处理单元(GPU),包括:
一个或多个帧缓冲器;
与至少一个帧缓冲器相耦合的集成编码器/解码器,包括用于对图像数据和视频内容中的至少一者进行编码和解码的嵌入式逻辑;以及
与所述集成编码器/解码器相耦合的集成网络接口控制器(NIC)。
2.如权利要求1所述的装置,其中,所述装置包括图形卡,所述图形卡具有输入/输出(I/O)接口,其中,所述集成NIC包括与所述图形卡上的所述I/O接口相耦合的接口,并且其中,所述NIC被配置为从所述I/O接口接收要通过网络传输的数据并且把从网络接收的数据转发到所述I/O接口。
3.如权利要求1或2所述的装置,其中,所述集成NIC包括用于实现开放系统互连(OSI)模型的至少第3层和第4层的嵌入式逻辑。
4.如前述权利要求中的任一项所述的装置,其中,所述集成NIC包括用于实现OSI模型的第3-7层的嵌入式逻辑。
5.如前述权利要求中的任一项所述的装置,其中,所述集成编码器/解码器包括视频编解码器。
6.如权利要求5所述的装置,其中,所述GPU被配置为:
生成视频游戏帧内容并且将所述视频游戏帧内容缓冲在所述一个或多个帧缓冲器中;
利用所述视频编解码器对所述视频游戏帧内容进行编码以生成编码视频游戏内容;并且
利用所述集成NIC对所述编码视频内容进行打包以生成封包流并且将所述封包流向外传输到网络。
7.如权利要求5或6所述的装置,其中,所述GPU包括视频输出,并且所述装置包括图形卡,所述图形卡进一步包括:
图形存储器,其与所述GPU相耦合或者被集成在所述GPU上;
网络端口,其与所述集成NIC相耦合;
输入/输出(I/O)接口,其与所述GPU相耦合;以及
与所述GPU上的所述视频输出相耦合的视频端口;
其中,所述图形卡被配置为:
从与所述网络端口相耦合的网络接收包括流媒体内容的封包流;
利用所述集成NIC对所述封包流进行解包以提取编码视频内容;
进行以下操作之一:
a)将解包的编码视频内容写入到所述视频编解码器可访问的缓冲器;或者
b)经由所述视频编解码器读取缓冲在所述集成NIC上的解包的编码视频内容;
利用所述视频编解码器对所述编码视频内容进行解码以再生成视频游戏帧内容;
将再生成的视频游戏帧内容缓冲在至少一个帧缓冲器中;并且
经由所述视频端口输出包括视频游戏帧的显示内容。
8.如前述权利要求中的任一项所述的装置,其中,所述集成编码器/解码器是图像瓦片编码器和解码器。
9.如权利要求8所述的装置,其中,所述GPU被配置为:
生成视频游戏帧内容并且将所述视频游戏帧内容缓冲在所述一个或多个帧缓冲器中;
利用所述图像瓦片编码器对视频游戏帧内容的瓦片进行编码以生成编码视频游戏瓦片;并且
利用所述集成NIC对所述编码视频游戏瓦片进行打包以生成封包流并且将所述封包流向外传输到与所述图形卡上的以太网端口相耦合的网络。
10.如权利要求8或9所述的装置,其中,所述GPU包括视频输出,并且所述装置包括图形卡,所述图形卡进一步包括:
图形存储器,其与所述GPU相耦合或者被集成在所述GPU上;
网络端口,其与所述集成NIC相耦合;
输入/输出(I/O)接口,其与所述GPU相耦合;以及
与所述GPU上的所述视频输出相耦合的视频端口;
其中,所述图形卡被配置为:
从与所述图形卡上的以太网端口相耦合的网络接收包括流传输的视频游戏瓦片的封包流;
利用所述集成NIC对所述封包流进行解包以提取编码视频游戏瓦片;
进行以下操作之一:
a)将解包的编码视频游戏瓦片写入到所述图像瓦片解码器可访问的缓冲器;或者
b)经由所述图像瓦片解码器读取缓冲在所述集成NIC上的解包的编码图像瓦片;
利用所述图像瓦片解码器对所述编码图像瓦片进行解码以再生成游戏图像瓦片;
将再生成的游戏图像瓦片排列在帧缓冲器中以生成视频游戏帧;并且
经由所述视频端口输出包括视频游戏帧的显示内容。
11.一种在图形卡上实现的方法,所述图形卡包括带有集成网络接口控制器(NIC)的图形处理单元(GPU),所述方法包括:
生成视频帧内容并且将所述视频帧内容缓冲在所述GPU上的一个或多个帧缓冲器中;
进行以下操作之一:
利用集成在所述GPU上的视频编解码器对所述视频帧内容进行编码以生成编码视频内容;并且
利用所述集成NIC对所述编码视频内容进行打包以生成封包流并且将所述封包流向外传输到与所述集成NIC上的输出端口操作性耦合的网络;
或者
利用集成在所述GPU上的图像瓦片编码器对视频帧内容的瓦片进行编码以生成编码视频瓦片;并且
利用所述集成NIC对所述编码视频瓦片进行打包以生成封包流并且将所述封包流向外传输到与所述集成NIC上的输出端口操作性耦合的网络。
12.如权利要求11所述的方法,还包括:
在所述图形卡的输入/输出(I/O)接口处接收编码音频内容;
经由所述GPU上的耦合所述I/O接口和所述集成NIC的互连转发所述编码音频内容;并且
利用所述集成NIC对所述编码音频内容进行打包以生成音频封包流并且经由所述集成NIC上的所述输出端口将所述音频封包流向外传输到所述网络。
13.如权利要求11或12所述的方法,还包括:
在所述图形卡和客户端设备之间建立流媒体会话;并且
使用所述流媒体会话来利用与所述流媒体会话相关联的至少一个协议向所述客户端设备传送所述封包流。
14.如权利要求11-13中的任一项所述的方法,其中,所述图形卡被安装在主机中并且经由所述图形卡上的输入/输出(I/O)接口与所述主机通信,并且所述视频帧内容是视频游戏帧内容,所述方法还包括:
从所述网络接收视频控制输入数据;
经由所述集成NIC检测到所述视频控制输入数据要被转发到所述主机;并且
经由耦合在所述集成NIC和所述图形卡的I/O接口之间的互连将所述视频控制输入数据转发到所述主机。
15.如权利要求11-14中的任一项所述的方法,其中,所述视频帧内容是视频游戏帧内容,所述方法还包括:
在所述图形卡的输入/输出(I/O)接口处接收游戏控制数据;
经由所述GPU上的耦合所述I/O接口和所述集成NIC的互连转发所述游戏控制数据并且利用可靠传输协议将所述游戏控制数据转发到游戏客户端设备。
16.一种云游戏服务器,包括:
第一板,具有多个扩展插槽或连接器;
中央处理单元(CPU),安装到所述第一板或者安装到第二板,所述第二板安装在扩展插槽中或者耦合到所述第一板上的配接连接器;
主存储器,包括与所述CPU通信耦合的一个或多个存储器设备;
a)安装在各个扩展插槽中的一个或多个网络适配器卡;或者
b)一个或多个网络接口控制器(NIC)芯片,安装到所述第一板或第二板;以及
多个图形卡,安装在各个扩展插槽中或者耦合到所述第一板上的各个配接连接器,每个图形卡包括:
图形处理单元(GPU),包括:
一个或多个帧缓冲器;
与至少一个帧缓冲器相耦合的集成编码器/解码器,包括用于对图像数据和视频内容中的至少一者进行编码和解码的嵌入式逻辑;以及
与所述集成编码器/解码器相耦合的集成网络接口控制器(NIC);
图形存储器,其与所述GPU相耦合或者被集成在所述GPU上;
至少一个网络端口,其与所述集成NIC相耦合;以及
输入/输出(I/O)接口,其与所述GPU相耦合。
17.如权利要求16所述的云游戏服务器,其中,用于至少一个图形卡的所述集成编码器/解码器包括视频编解码器,并且其中,所述至少一个图形卡上的所述GPU被配置为:
生成视频游戏帧内容并且将所述视频游戏帧内容缓冲在所述GPU上的一个或多个帧缓冲器中;
利用所述视频编解码器对所述视频游戏帧内容进行编码以生成编码视频游戏内容;并且
利用所述GPU上的所述集成NIC对所述编码视频内容进行打包以生成封包流并且将所述封包流向外传输到与所述图形卡上的网络端口相耦合的网络。
18.如权利要求16或17所述的云游戏服务器,其中,所述集成编码器/解码器是图像瓦片编码器和解码器,并且其中,用于至少一个图形卡的所述GPU被配置为:
生成视频游戏帧内容并且将所述视频游戏帧内容缓冲在所述GPU上的一个或多个帧缓冲器中;
利用所述图像瓦片编码器对视频游戏帧内容的瓦片进行编码以生成编码视频游戏瓦片;并且
利用所述集成NIC对所述编码视频游戏瓦片进行打包以生成封包流并且将所述封包流向外传输到与所述图形卡上的网络端口相耦合的网络。
19.如权利要求16-18中的任一项所述的云游戏服务器,还包括驻留在主存储器和所述云游戏服务器中的存储设备中的至少一者中的游戏软件,其中,所述游戏软件的执行使得所述云游戏服务器能够:
利用采用至少一个网络适配器卡或NIC进行的网络通信,与耦合到所述网络的多个游戏客户端设备建立流媒体会话;并且
使用所述多个流媒体会话来利用所述多个图形卡将所述封包流传送到所述多个游戏客户端设备。
20.如权利要求19所述的云游戏服务器,其中,所述云游戏服务器还被配置为:为在所述云游戏服务器上容宿的游戏的实例生成音频内容并且将所述音频内容流传输到所述多个游戏客户端设备。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/202,065 | 2021-03-15 | ||
US17/202,065 US20210203704A1 (en) | 2021-03-15 | 2021-03-15 | Cloud gaming gpu with integrated nic and shared frame buffer access for lower latency |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115068933A true CN115068933A (zh) | 2022-09-20 |
Family
ID=76547791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210058485.4A Pending CN115068933A (zh) | 2021-03-15 | 2022-01-19 | 带集成nic和共享帧缓冲器访问以实现低时延的gpu |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210203704A1 (zh) |
EP (1) | EP4060620A1 (zh) |
JP (1) | JP2022141586A (zh) |
CN (1) | CN115068933A (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220335563A1 (en) * | 2021-07-06 | 2022-10-20 | Intel Corporation | Graphics processing unit with network interfaces |
US20230195503A1 (en) * | 2021-12-16 | 2023-06-22 | Intel Corporation | Technology to measure latency in hardware with fine-grained transactional filtration |
US20220224746A1 (en) * | 2022-04-01 | 2022-07-14 | Intel Corporation | Media streaming endpoint |
US12026119B2 (en) * | 2022-06-10 | 2024-07-02 | Chain Reaction Ltd. | Cryptocurrency miner and device enumeration |
CN115842919B (zh) * | 2023-02-21 | 2023-05-09 | 四川九强通信科技有限公司 | 一种基于硬件加速的视频低延迟传输方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6215656B1 (en) * | 1999-06-18 | 2001-04-10 | Dell Usa, L.P. | Method and apparatus for factory or user configurable external connectors |
US8711923B2 (en) * | 2002-12-10 | 2014-04-29 | Ol2, Inc. | System and method for selecting a video encoding format based on feedback data |
WO2008018860A1 (en) * | 2006-08-07 | 2008-02-14 | Digital Display Innovation, Llc | Multiple remote display system |
US20090305790A1 (en) * | 2007-01-30 | 2009-12-10 | Vitie Inc. | Methods and Apparatuses of Game Appliance Execution and Rendering Service |
US20100013839A1 (en) * | 2008-07-21 | 2010-01-21 | Rawson Andrew R | Integrated GPU, NIC and Compression Hardware for Hosted Graphics |
US8644157B2 (en) * | 2011-03-28 | 2014-02-04 | Citrix Systems, Inc. | Systems and methods for handling NIC congestion via NIC aware application |
US10555010B2 (en) * | 2016-08-24 | 2020-02-04 | Liquidsky Software, Inc. | Network-enabled graphics processing module |
US11623140B2 (en) * | 2020-07-01 | 2023-04-11 | Sony Interactive Entertainment LLC | High-speed save data storage for cloud gaming |
-
2021
- 2021-03-15 US US17/202,065 patent/US20210203704A1/en active Pending
-
2022
- 2022-01-19 CN CN202210058485.4A patent/CN115068933A/zh active Pending
- 2022-01-25 EP EP22153251.8A patent/EP4060620A1/en active Pending
- 2022-02-10 JP JP2022019573A patent/JP2022141586A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210203704A1 (en) | 2021-07-01 |
JP2022141586A (ja) | 2022-09-29 |
EP4060620A1 (en) | 2022-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4060620A1 (en) | Cloud gaming gpu with integrated nic and shared frame buffer access for lower latency | |
US20150373075A1 (en) | Multiple network transport sessions to provide context adaptive video streaming | |
US8457214B2 (en) | Video compositing of an arbitrary number of source streams using flexible macroblock ordering | |
US10356448B2 (en) | Multi representation edge server with enhanced open-GOP compression | |
JP5882547B2 (ja) | シーンの変化に伴うピクチャ内の符号化及び送信パラメータの好適化 | |
KR102549670B1 (ko) | 크로마 블록 예측 방법 및 디바이스 | |
TW201347516A (zh) | 利用來自視頻源的靜態內容訊息的視頻傳輸 | |
JP2016119708A (ja) | 小待ち時間レート制御システムおよび方法 | |
EP2353295A2 (en) | Software video transcoder with gpu acceleration | |
JP2022524357A (ja) | エンコーダ、デコーダ、及び対応するインター予測方法 | |
CN111182310A (zh) | 视频处理方法、装置、计算机可读介质及电子设备 | |
CN114424552A (zh) | 一种低延迟信源信道联合编码方法及相关设备 | |
Srivastava et al. | A systematic review on real time video compression and enhancing quality using fuzzy logic | |
US20150078433A1 (en) | Reducing bandwidth and/or storage of video bitstreams | |
US11438631B1 (en) | Slice based pipelined low latency codec system and method | |
WO2020060449A1 (en) | Method and apparatus for intra reference sample interpolation filter switching | |
Momoh et al. | A Comparative Analysis of Video Compression Standard and Algorithms: State of the Art | |
US12015794B2 (en) | Method and apparatus for content-driven transcoder coordination | |
CN113747099B (zh) | 视频传输方法和设备 | |
TWI853061B (zh) | 基於回饋資訊之動態視訊插入 | |
RU2787713C2 (ru) | Способ и устройство предсказания блока цветности | |
WO2024222563A1 (zh) | 编解码方法及装置 | |
Mohammed et al. | Ultra-High-Definition Video Transmission for Mission-Critical Communication Systems Applications | |
US20130287100A1 (en) | Mechanism for facilitating cost-efficient and low-latency encoding of video streams | |
Miura et al. | Simple compression method for parallel encoding environment of video image |
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 |