CN108694687A - 用于保护虚拟化和图形环境中的内容的设备及方法 - Google Patents

用于保护虚拟化和图形环境中的内容的设备及方法 Download PDF

Info

Publication number
CN108694687A
CN108694687A CN201810306009.3A CN201810306009A CN108694687A CN 108694687 A CN108694687 A CN 108694687A CN 201810306009 A CN201810306009 A CN 201810306009A CN 108694687 A CN108694687 A CN 108694687A
Authority
CN
China
Prior art keywords
graphics
cache
gpu
memory
processor
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
CN201810306009.3A
Other languages
English (en)
Other versions
CN108694687B (zh
Inventor
J·雷
A·R·阿普
P·凯
B·文布
A·考克
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN108694687A publication Critical patent/CN108694687A/zh
Application granted granted Critical
Publication of CN108694687B publication Critical patent/CN108694687B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4405Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video stream decryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution
    • H04L2209/603Digital right managament [DRM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution
    • H04L2209/605Copy protection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Abstract

本申请公开了用于保护虚拟化和图形环境中的内容的设备及方法。一种用于保护图形处理器中的内容的设备和方法。例如,设备的一个实施例包括:编码/解码电路系统,用于对受保护音频和/或视频内容进行解码以生成经解码音频和/或视频内容;图形处理单元(GPU)的图形高速缓存,所述图形高速缓存用于存储所述经解码音频和/或视频内容;第一保护电路系统,用于为在所述图形高速缓存中包含经解码音频和/或视频数据的每个高速缓存行设置保护属性;高速缓存一致性控制器,用于生成对所述图形高速缓存的一致读取请求;第二保护电路系统,用于读取所述保护属性以确定在所述读取请求中标识的所述高速缓存行是否受到保护,其中,如果所述高速缓存行受到保护,则所述第二保护电路系统禁止在响应中包括来自所述高速缓存行的所述数据中的至少一部分。

Description

用于保护虚拟化和图形环境中的内容的设备及方法
背景技术
技术领域
本发明总体上涉及计算机处理器领域。更具体地,本发明涉及用于保 护虚拟化和图形环境中的内容的设备及方法。
相关技术的说明
最近在图形处理器单元(GPU)虚拟化方面取得了快速的进展。虚拟 化图形处理环境被用于例如媒体云、远程工作站/桌面、可互换虚拟仪器 (IVI)、富客户端虚拟化等等。某些架构通过俘获与仿真来执行完整GPU 虚拟化,以对全功能虚拟GPU(vGPU)进行仿真,同时通过传递对性能关 键的图形内存资源来提供接近原生的性能。
随着GPU在服务器中支持3D、媒体和GPGPU工作负载的重要性日益 增加,GPU虚拟化正变得越来越普遍。如何虚拟化来自虚拟机(VM)的 GPU内存访问是关键设计因素之一。GPU拥有自己的图形存储器:专用视 频存储器或共享系统存储器。当系统存储器用于图形时,客户机物理地址 (GPA)需要在被硬件访问之前转换为主机物理地址(HPA)。
为GPU执行转换有多种方法。一些实施方式通过硬件支持来执行转换, 但是可以仅向一个VM传递GPU。另一解决方案是针对转换构建阴影结构 的软件方法。例如,阴影页表采用某些架构来实现,诸如在上文提及的完 整的GPU虚拟化解决方案中,所述架构可以支持多个VM共享物理GPU。
在一些实施方式中,客户机/VM存储器页由主机存储器页支持。虚拟 机监视器(VMM)(有时称为“管理程序”)使用例如扩展页表(EPT) 从客户机物理地址(PA)映射到主机PA。可以使用多种存储器共享技术, 诸如内核同页合并(KSM)技术。
KSM将具有相同内容的多个VM的页合并到带有写入保护的单个页中。 也就是说,如果(从客户机PA1映射到主机PA1的)VM1中的存储器页 具有与(从客户机PA2映射到主机PA2的)VM2中的另一个存储器页相 同的内容,则可以仅使用一个主机页(如HPA_SH)来支持客户机存储器。 也就是说,VM1的客户机PA1和VM2的PA2都映射到带有写入保护的 HPA_SH。这样可以节省用于系统的存储器,对于客户机的只读存储器页(诸 如代码页和零页)特别有用。利用KSM,一旦VM修改了页内容,就可以 使用写入时复制(COW)技术来移除共享。
中介传递用于虚拟化系统中的装置性能和共享,其中,单个物理GPU 作为多个虚拟GPU呈现给具有直接DMA的多个客户机,而客户机访问的 特权资源仍然是被俘获与仿真的。在某些实施方式中,每个客户机可以运 行原生GPU驱动程序,并且装置DMA直接进入存储器,而无需管理程序 的干预。
附图说明
结合以下附图,从下面的详细描述中可以更好地理解本发明,其中:
图1是具有处理器的计算机系统的实施例的框图,所述处理器具有一 个或多个处理器核和图形处理器;
图2是处理器的一个实施例的框图,所述处理器具有一个或多个处理 器核、集成存储器控制器、以及集成图形处理器;
图3是图形处理器的一个实施例的框图,所述图形处理器可以是分立 式图形处理单元、或者可以是与多个处理核集成的图形处理器;
图4是用于图形处理器的图形处理引擎的实施例的框图;
图5是图形处理器的另一实施例的框图;
图6是包括进程要素阵列的线程执行逻辑的框图;
图7展示了根据实施例的图形处理器执行单元指令格式;
图8是图形处理器的另一实施例的框图,所述图形处理器包括图形流 水线、媒体流水线、显示引擎、线程执行逻辑、以及渲染输出流水线。
图9A是框图,展示了根据实施例的图形处理器命令格式;
图9B是框图,展示了根据实施例的图形处理器命令序列;
图10展示了根据实施例的数据处理系统的示例性图形软件架构;
图11展示了根据实施例的可以用于制造集成电路以执行操作的示例 性IP核开发系统;
图12展示了根据实施例的可以使用一个或多个IP核来制造的示例性 片上系统集成电路;
图13展示了可以使用一个或多个IP核来制造的片上系统集成电路的 示例性图形处理器;
图14展示了可以使用一个或多个IP核来制造的片上系统集成电路的 附加示例性图形处理器;
图15展示了示例性图形处理系统;
图16展示了全图形虚拟化的示例性架构;
图17展示了包括虚拟图形处理单元(vGPU)的示例性虚拟化图形处 理架构;
图18展示了具有IOMMU的虚拟化架构的一个实施例;
图19展示了一个实施例,在所述实施例中,图形处理在服务器上执行;
图20展示了其中保护高速缓存的内容的虚拟化图形架构的一个实施 例;
图21展示了一种根据本发明的一个实施例的方法。
图22展示了一种根据本发明的一个实施例的方法。
图23展示了其中共享本地存储器被分配给不同上下文的架构的一个 实施例;
图24展示了一种根据本发明的一个实施例的方法。
图25是展示了被配置成实现本文所述的实施例的一个或多个方面的 计算机系统的框图。
图26A至图26D展示了根据实施例的并行处理器部件;
图27A至图27B是根据实施例的图形多处理器的框图;
图28A至图28F展示了其中多个GPU通信地耦合至多个多核处理器 的示例性架构;以及
图29展示了根据实施例的图形处理流水线;
具体实施方式
在以下描述中,出于解释的目的,阐述了许多具体的细节以便提供对 以下所述的本发明的实施例的透彻理解。然而,对于本领域技术人员而言, 可以在不具有这些具体细节中的一些具体细节的情况下实践本发明的实施 例将是明显的。在其他实例中,以框图的形式示出了公知的结构和装置以 避免模糊本发明的实施例的基本原理。
示例性图形处理器架构和数据类型
系统概述
图1是根据实施例的处理系统100的框图。在各种实施例中,系统100 包括一个或多个处理器102和一个或多个图形处理器108,并且可以是单处 理器桌面系统、多处理器工作站系统、或具有大量处理器102或处理器核 107的服务器系统。在一个实施例中,系统100是用于移动式、手持式、或 嵌入式装置的片上系统(SoC)集成电路内并入的处理平台。
系统100的实施例可包括或并入基于服务器的游戏平台、游戏控制台, 包括游戏与媒体控制台、移动游戏控制台、手持式游戏控制台、或在线游 戏控制台。在一些实施例中,系统100是移动电话、智能电话、平板计算 装置或移动互联网装置。数据处理系统100还可包括可穿戴装置(诸如智 能手表可穿戴装置、智能眼镜装置、增强现实装置、或虚拟现实装置)、 与所述可穿戴装置耦合、或者集成在所述可穿戴装置中。在一些实施例中, 数据处理系统100是电视或机顶盒装置,所述电视或机顶盒装置具有一个 或多个处理器102以及由一个或多个图形处理器108生成的图形界面。
在一些实施例中,所述一个或多个处理器102各自包括用于处理指令 的一个或多个处理器核107,所述指令在被执行时执行系统和用户软件的操 作。在一些实施例中,一个或多个处理器核107中的每个处理器核被配置 成用于处理特定的指令集109。在一些实施例中,指令集109可以促进复杂 指令集计算(CISC)、精简指令集计算(RISC)、或经由超长指令字(VLIW) 的计算。多个处理器核107可以各自处理不同的指令集109,所述指令集可 以包括用于促进对其他指令集进行仿真的指令。处理器核107还可以包括 其他处理装置,如数字信号处理器(DSP)。
在一些实施例中,处理器102包括高速缓存存储器104。取决于架构, 处理器102可以具有单个内部高速缓存或内部高速缓存的多个级。在一些 实施例中,在处理器102的各部件当中共享高速缓存存储器。在一些实施 例中,处理器102还使用外部高速缓存(例如,3级(L3)高速缓存或末 级高速缓存(LLC))(未示出),可以使用已知的高速缓存一致性技术来在处理器核107当中共享外部高速缓存。另外地,寄存器堆106包括在 处理器102中,所述处理器可以包括用于存储不同类型的数据的不同类型 的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器、和指令指针寄 存器)。一些寄存器可以是通用寄存器,而其他寄存器可以特定于处理器 102的设计。
在一些实施例中,处理器102与处理器总线110耦合,所述处理器总 线用于在处理器102与系统100内的其他部件之间传输通信信号,例如地 址、数据、或控制信号。在一个实施例中,系统100使用示例性‘中枢’ 系统架构,包括存储器控制器中枢116和输入输出(I/O)控制器中枢130。 存储器控制器中枢116促进存储器装置与系统100的其他部件之间的通信, 而I/O控制器中枢(ICH)130经由本地I/O总线提供与I/O装置的连接。 在一个实施例中,存储器控制器中枢116的逻辑被集成在所述处理器内。
存储器装置120可以是动态随机存取存储器(DRAM)装置、静态随 机存取存储器(SRAM)装置、闪存存储器装置、相变存储器装置、或具有 合适的性能用作处理存储器的某个其他存储器装置。在一个实施例中,存 储器装置120可作为系统100的系统存储器进行操作,以存储数据122和 指令121,以供在一个或多个处理器102执行应用或进程时使用。存储器控 制器中枢116还与可选的外部图形处理器112耦合,所述可选的外部图形 处理器可以与处理器102中的一个或多个图形处理器108通信,从而执行 图形和媒体操作。
在一些实施例中,ICH 130使得外围部件经由高速I/O总线连接至存储 器装置120和处理器102。I/O外围部件包括但不限于音频控制器146、固 件接口128、无线收发机126(例如,Wi-Fi、蓝牙)、数据存储装置124 (例如,硬盘驱动器、闪存存储器等)、以及用于将传统(例如,个人系 统2(PS/2))装置耦合至所述系统的传统I/O控制器140。一个或多个通 用串行总线(USB)控制器142连接多个输入装置,诸如键盘和鼠标144 组合。网络控制器134还可以与ICH 130耦合。在一些实施例中,高性能 网络控制器(未示出)与处理器总线110耦合。应当理解,所示出的系统 100是示例性的而非限制性的,因为还可以使用以不同方式配置的其他类型 的数据处理系统。例如,I/O控制器中枢130可以集成在一个或多个处理器102内,或者存储器控制器中枢116和I/O控制器中枢130可以集成在分立 式外部图形处理器(诸如外部图形处理器112)内。
图2是处理器200的实施例的框图,所述处理器具有一个或多个处理 器核202A至202N、集成存储器控制器214、以及集成图形处理器208。图 2的具有与此处任何其他附图中的元件相同的参考号(或名称)的那些元件 可采用与在本文中其他地方描述的方式相类似的任何方式进行操作或起作 用,但不限于这些。处理器200可包括多达且包括由虚线框表示的附加核 202N的附加核。处理器核202A至202N各自包括一个或多个内部高速缓 存单元204A至204N。在一些实施例中,每个处理器核还可以访问一个或 多个共享的高速缓存单元206。
内部高速缓存单元204A至204N和共享高速缓存单元206表示处理器 200内的高速缓存存储器层级结构。所述高速缓存存储器层级结构可以包括 每个处理器核内的至少一级指令和数据高速缓存以及一级或多级共享中级 高速缓存,诸如2级(L2)、3级(L3)、4级(L4)、或其他级的高速 缓存,其中,最高级的高速缓存在外部存储器之前被分类为LLC。在一些 实施例中,高速缓存一致性逻辑维持各高速缓存单元206与204A至204N 之间的一致性。
在一些实施例中,处理器200还可以包括一组一个或多个总线控制器 单元216和系统代理核210。一个或多个总线控制器单元216管理一组外围 总线,诸如一个或多个外围部件互连总线(例如,PCI、PCI Express)。系 统代理核210提供对各处理器部件的管理功能。在一些实施例中,系统代 理核210包括一个或多个集成存储器控制器214用于管理对各外部存储器 装置(未示出)的访问。
在一些实施例中,处理器核202A至202N中的一个或多个处理器核包 括对同步多线程的支持。在这种实施例中,系统代理核210包括用于在多 线程处理过程中协调和操作核202A至202N的部件。另外,系统代理核210 还可以包括功率控制单元(PCU),所述功率控制单元包括用于调节处理 器核202A至202N的功率状态的逻辑和部件以及图形处理器208。
在一些实施例中,处理器200附加地包括用于执行图形处理操作的图 形处理器208。在一些实施例中,图形处理器208耦合至共享高速缓存单元 206集以及系统代理核210,所述系统代理核包括一个或多个集成存储器控 制器214。在一些实施例中,显示控制器211与图形处理器208耦合以便将 图形处理器输出驱动到一个或多个耦合的显示器。在一些实施例中,显示 控制器211可以是经由至少一个互连与图形处理器耦合的单独模块,或者 可以集成在图形处理器208或系统代理核210内。
在一些实施例中,基于环的互连单元212用于耦合处理器200的内部 部件。然而,可以使用替代性互连单元,诸如点到点互连、切换式互连、 或其他技术,包括本领域众所周知的技术。在一些实施例中,图形处理器 208经由I/O链路213与环形互连212耦合。
示例性I/O链路213表示多个I/O互连中的多个种类中的至少一种,包 括促进各处理器部件与高性能嵌入式存储器模块218(诸如eDRAM模块) 之间的通信的封装I/O互连。在一些实施例中,处理器核202A至202N中 的每个处理器核以及图形处理器208将嵌入式存储器模块218用作共享末 级高速缓存。
在一些实施例中,处理器核202A至202N是执行相同指令集架构的均 质核。在另一实施例中,处理器核202A至202N在指令集架构(ISA)方 面是异构的,其中,处理器核202A至202N中的一者或多者执行第一指令 集,而其他核中的至少一者执行所述第一指令集的子集或不同的指令集。 在一个实施例中,处理器核202A至202N就微架构而言是同质的,其中,具有相对较高功耗的一个或多个核与具有较低功耗的一个或多个功率核耦 合。另外,处理器200可以实现在一个或多个芯片上或者被实现为具有除 其他部件之外的所展示的部件的SoC集成电路。
图3是图形处理器300的框图,所述图形处理器可以是分立式图形处 理单元、或者可以是与多个处理核集成的图形处理器。在一些实施例中, 图形处理器经由到图形处理器上的寄存器的映射I/O接口并且利用被放置 在处理器存储器中的命令与存储器进行通信。在一些实施例中,图形处理 器300包括用于访问存储器的存储器接口314。存储器接口314可以是到本 地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存、和/ 或到系统存储器的接口。
在一些实施例中,图形处理器300还包括显示控制器302,所述显示 控制器用于将显示输出数据驱动到显示装置320。显示控制器302包括用于 显示器的一个或多个重叠平面的硬件以及多层视频或用户接口元件的组成。 在一些实施例中,图形处理器300包括用于编码、解码、或者向、从或在 一个或多个媒体编码格式之间进行媒体代码转换的视频编解码器引擎306, 包括但不限于:运动图像专家组(MPEG)(诸如MPEG-2)、高级视频编 码(AVC)格式(诸如H.264/MPEG-4AVC)、以及电影与电视工程师协 会(SMPTE)421M/VC-1、和联合图像专家组(JPEG)格式(诸如JPEG、 以及运动JPEG(MJPEG)格式)。
在一些实施例中,图形处理器300包括块图像传送(BLIT)引擎304 以便执行二维(2D)光栅化器操作,包括例如,位边界块传送。然而,在 一个实施例中,使用图形处理引擎(GPE)310的一个或多个部件执行2D 图形操作。在一些实施例中,GPE 310是用于执行图形操作的计算引擎, 所述图形操作包括三维(3D)图形操作和媒体操作。
在一些实施例中,GPE 310包括用于执行3D操作的3D流水线312, 诸如使用作用于3D图元形状(例如,矩形、三角形等)的处理功能来渲染 三维图像和场景。3D流水线312包括可编程且固定的功能元件,所述可编 程且固定的功能元件在到3D/媒体子系统315的元件和/或生成的执行线程 内执行各种任务。虽然3D流水线312可以用于执行媒体操作,但是GPE 310 的实施例还包括媒体流水线316,所述媒体流水线具体地用于执行媒体操作, 诸如视频后处理和图像增强。
在一些实施例中,媒体流水线316包括固定功能或可编程逻辑单元以 便代替、或代表视频编解码器引擎306来执行一种或多种专门的媒体操作, 比如视频解码加速、视频去接口、以及视频编码加速。在一些实施例中, 另外,媒体流水线316还包括线程生成单元以便生成用于在3D/媒体子系统 315上执行的线程。所生成的线程对3D/媒体子系统315中所包括的一个或 多个图形执行单元执行对媒体操作的计算。
在一些实施例中,3D/媒体子系统315包括用于执行3D流水线312和 媒体流水线316生成的线程的逻辑。在一个实施例中,流水线向3D/媒体子 系统315发送线程执行请求,所述3D/媒体子系统包括用于仲裁并将各请求 分派到可用的线程执行资源的线程分派逻辑。执行资源包括用于处理3D和 媒体线程的图形执行单元阵列。在一些实施例中,3D/媒体子系统315包括 用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,所述子系统还包括共享存储器(包括寄存器和可寻址存储器)以便在线程之间 共享数据并用于存储输出数据。
图形处理引擎
图4是根据一些实施例的图形处理器的图形处理引擎410的框图。在 一个实施例中,图形处理引擎(GPE)410是图3所示的GPE 310的一个版 本。图4的具有与此处任何其他附图中的元件相同的参考号(或名称)的 那些元件可采用与在本文中其他地方描述的方式相类似的任何方式进行操 作或起作用,但不限于这些。例如,展示了图3的3D流水线312和媒体流 水线316。媒体流水线316在GPE 410的一些实施例中是可选的,并且可 以不显式地包括在GPE 410内。例如以及在至少一个实施例中,单独的媒 体和/或图像处理器被耦合至GPE 410。
在一些实施例中,GPE 410与命令流送器403耦合或包括所述命令流 送器,所述命令流送器向3D流水线312和/或媒体流水线316提供命令流。 在一些实施例中,命令流送器403与存储器耦合,所述存储器可以是系统 存储器、或内部高速缓存存储器和共享高速缓存存储器中的一个或多个高 速缓存存储器。在一些实施例中,命令流送器403从存储器接收命令并将 这些命令发送至3D流水线312和/或媒体流水线316。所述命令是从存储用 于3D流水线312和媒体流水线316的环形缓冲器获取的指示。在一个实施 例中,另外,环形缓冲器还可以包括存储多批多命令的批命令缓冲器。用 于3D流水线312的命令还可以包括对在存储器中存储的数据的引用,诸如 但不限于用于3D流水线312的顶点和几何数据和/或用于媒体流水线316 的图像数据和存储器对象。3D流水线312和媒体流水线316通过经由各自 流水线内的逻辑执行操作或者通过将一个或多个执行线程分派至执行单元 阵列414来处理所述命令。
在各种实施例中,3D流水线312可以通过处理指令并将执行线程分派 给图形核阵列414来执行一个或多个着色器程序,诸如顶点着色器、几何 着色器、像素着色器、片段着色器、计算着色器或其他着色器程序。图形 核阵列414提供统一的执行资源块。图形核阵列414内的多用途执行逻辑 (例如,执行单元)包括对各种3D API着色器语言的支持,并且可以执行 与多个着色器相关联的多个同时执行线程。
在一些实施例中,图形核阵列414还包括用于执行诸如视频和/或图像 处理的媒体功能的执行逻辑。在一个实施例中,除了图形处理操作之外, 执行单元还包括可编程以执行并行通用计算操作的通用逻辑。通用逻辑可 以与图1的(多个)处理器核107或图2中的核202A至202N内的通用逻 辑并行地或结合地执行处理操作。
由在图形核阵列414上执行的线程生成的输出数据可以将数据输出到 统一返回缓冲器(URB)418中的存储器。URB 418可以存储多个线程的 数据。在一些实施例中,URB418可以用于在图形核阵列414上执行的不 同线程之间发送数据。在一些实施例中,URB418可以另外用于图形核阵 列上的线程与共享功能逻辑420内的固定功能逻辑之间的同步。
在一些实施例中,图形核阵列414是可缩放的,使得所述阵列包括可 变数量的图形核,这些图形核各自具有基于GPE 410的目标功率和性能等 级的可变数量的执行单元。在一个实施例中,执行资源是动态可缩放的, 从而可以根据需要启用或禁用执行资源。
图形核阵列414与共享功能逻辑420耦合,所述共享功能逻辑包括在 图形核阵列中的图形核之间共享的多个资源。共享功能逻辑420内的共享 功能是向图形核阵列414提供专用补充功能的硬件逻辑单元。在各种实施 例中,共享功能逻辑420包括但不限于采样器421、数学422和线程间通信 (ITC)423逻辑。另外,一些实施例实现共享功能逻辑420内的一个或多 个高速缓存425。在给定的专用功能的需求不足以包含在图形核阵列414 中的情况下实现共享功能。相反,所述专用功能的单个实例被实现为共享 功能逻辑420中的独立实体并且在图形核阵列414内的执行资源之间共享。 在图形核阵列414之间共享并包括在图形核阵列414内的精确的一组功能 在各实施例之间变化。
图5是图形处理器500的另一实施例的框图。图5的具有与此处任何 其他附图中的元件相同的参考号(或名称)的那些元件可采用与在本文中 其他地方描述的方式相类似的任何方式进行操作或起作用,但不限于这些。
在一些实施例中,图形处理器500包括环形互连502、流水线前端504、 媒体引擎537以及图形核580A至580N。在一些实施例中,环形互连502 将图形处理器耦合至其他处理单元,包括其他图形处理器或者一个或多个 通用处理器核。在一些实施例中,图形处理器是集成在多核处理系统内的 多个处理器之一。
在一些实施例中,图形处理器500经由环形互连502接收多批命令。 传入命令由流水线前端504中的命令流送器503来解译。在一些实施例中, 图形处理器500包括可缩放执行逻辑,以用于经由(多个)图形核580A至 580N执行3D几何处理和媒体处理。对于3D几何处理命令,命令流送器 503将命令供应至几何流水线536。针对至少一些媒体处理命令,命令流送 器503将命令供应至视频前端534,所述视频前端与媒体引擎537耦合。在 一些实施例中,媒体引擎537包括用于视频和图像后处理的视频质量引擎 (VQE)530以及用于提供硬件加速的媒体数据编码和解码的多格式编码/ 解码(MFX)533引擎。在一些实施例中,几何流水线536和媒体引擎537 各自生成执行线程,所述执行线程用于由至少一个图形核580A提供的线程 执行资源。
在一些实施例中,图形处理器500包括可扩展线程执行资源表征模块 核580A至580N(有时被称为核分片),各个可扩展线程执行资源表征模 块核具有多个子核550A至550N、560A至560N(有时被称为核子分片)。 在一些实施例中,图形处理器500可以具有任意数量的图形核580A至580N。 在一些实施例中,图形处理器500包括图形核580A,所述图形核至少具有 第一子核550A和第二子核560A。在其他实施例中,图形处理器是具有单 个子核(例如,550A)的低功率处理器。在一些实施例中,图形处理器500 包括多个图形核580A至580N,所述图形核各自包括一组第一子核550A 至550N和一组第二子核560A至560N。所述一组第一子核550A至550N 中的每个子核至少包括第一组执行单元552A至552N和媒体/纹理采样器 554A至554N。所述一组第二子核560A至560N中的每个子核至少包括第 二组执行单元562A至562N和采样器564A至564N。在一些实施例中,每 个子核550A至550N、560A至560N共享一组共享资源570A至570。在 一些实施例中,所述共享资源包括共享高速缓存存储器和像素操作逻辑。 其他共享资源也可以包括在图形处理器的各实施例中。
执行单元
图6展示了线程执行逻辑600,所述线程执行逻辑包括在GPE的一些 实施例中采用的处理元件阵列。图6的具有与此处任何其他附图中的元件 相同的参考号(或名称)的那些元件可采用与在本文中其他地方描述的方 式相类似的任何方式进行操作或起作用,但不限于这些。
在一些实施例中,线程执行逻辑600包括着色器处理器602、线程分 派器604、指令高速缓存606、包括多个执行单元608A至608N的可扩展 执行单元阵列、采样器610、数据高速缓存612、以及数据端口614。在一 个实施例中,可缩放执行单元阵列可以通过基于工作负荷的计算需求来启 用或禁用一个或多个执行单元(例如,执行单元608A、608B、608C,608D, 一直到608N-1和608N中的任一个)来动态地缩放。在一个实施例中,所 包括的部件经由互连结构而互连,所述互连结构链接到部件中的每个部件。 在一些实施例中,线程执行逻辑600包括通过指令高速缓存606、数据端口 614、采样器610、以及执行单元阵列608A至608N中的一者或多者到存储 器(如系统存储器或高速缓存存储器)的一个或多个连接件。在一些实施 例中,每个执行单元(例如,608A)是能够执行多个同步硬件线程同时针 对每个线程并行地处理多个数据元素的独立可编程通用计算单元。在各种 实施例中,执行单元608A至608N的阵列是可缩放的以包括任意数量的单 独执行单元。
在一些实施例中,执行单元608A至608N主要用于执行着色器程序。 着色器处理器602可以处理各种着色器程序并且经由线程分派器604分派 与着色器程序相关联的执行线程。在一个实施例中,线程分派器包括用于 对来自图形和媒体流水线的线程发起请求进行仲裁并且在一个或多个执行 单元608A至608N上实例化所请求的线程的逻辑。例如,几何流水线(例 如,图5的536)可以将顶点处理、镶嵌或几何处理线程分派至线程执行逻 辑600(图6)进行处理。在一些实施例中,线程分派器604还可处理来自 执行着色器程序的运行时间线程生成请求。
在一些实施例中,执行单元608A至608N支持指令集(所述指令集包 括对许多标准3D图形着色器指令的原生支持),从而使得以最小的转换执 行来自图形库(例如,Direct3D和OpenGL)的着色器程序。这些执行单 元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像 素处理(例如,像素着色器、片段着色器)以及通用处理(例如,计算和媒体着色器)。执行单元608A至608N中的每一个都能够执行多发布单指 令多数据(SIMD),并且多线程操作能够在面对较高等待时间的存储器访 问时实现高效的执行环境。每个执行单元内的每个硬件线程都具有专用的 高带宽寄存器堆和相关的独立线程状态。对于具有整数、单精度浮点运算 和双精度浮点运算、SIMD分支功能、逻辑运算、超越运算和其他杂项运算 的流水线,执行是每个时钟的多发布。在等待来自存储器或共享功能之一 的数据时,执行单元608A至608N内的依赖性逻辑使等待线程休眠,直到 所请求的数据已返回。当等待线程正在休眠时,硬件资源可能会专门用于 处理其他线程。例如,在与顶点着色器操作相关联的延迟期间,执行单元 可以执行像素着色器、片段着色器或包括不同顶点着色器的另一种类型的 着色器程序的操作。
执行单元608A至608N中的每个执行单元在数据元素阵列上进行操作。 数据元素的数量是“执行大小”、或指令的信道数。执行信道是执行数据 元素访问、掩蔽、和指令内的流控制的逻辑单元。信道的数量可以与针对 特定图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量 无关。在一些实施例中,执行单元608A至608N支持整数和浮点数据类型。
执行单元指令集包括SIMD指令。各种数据元素可作为压缩数据类型 存储在寄存器中,并且执行单元将基于元素的数据大小来处理各种元素。 例如,当在256位宽的向量上进行操作时,所述256位的向量存储在寄存 器中,并且所述执行单元作为四个单独64位压缩数据元素(四倍字长(QW) 大小的数据元素)、八个单独32位压缩数据元素(双倍字长(DW)大小 的数据元素)、十六个单独16位压缩数据元素(字长(W)大小的数据元 素)、或三十二个单独8位数据元素(字节(B)大小的数据元素)在所述 向量上进行操作。然而,不同的向量宽度和寄存器大小是可能的。
一个或多个内部指令高速缓存(例如,606)包括在所述线程执行逻辑 600中以便高速缓存所述执行单元的线程指令。在一些实施例中,一个或多 个数据高速缓存(例如,612)被包括用于高速缓存在线程执行过程中的线 程数据。在一些实施例中,采样器610被包括用于为3D操作提供纹理采样 并且为媒体操作提供媒体采样。在一些实施例中,采样器610包括专门的 纹理或媒体采样功能,以便在向执行单元提供采样数据之前在采样过程中处理纹理或媒体数据。
在执行过程中,所述图形和媒体流水线经由线程生成和分派逻辑向线 程执行逻辑600发送线程发起请求。一旦一组几何对象已经被处理并被光 栅化成像素数据,则着色器处理器602内的像素处理器逻辑(例如,像素 着色器逻辑、片段着色器逻辑等)被调用以便进一步计算输出信息,并且 使得结果被写入到输出表面(例如,色彩缓冲器、深度缓冲器、模板缓冲 器等)。在一些实施例中,像素着色器或片段着色器计算各顶点属性的值, 所述各顶点属性跨光栅化对象被内插。在一些实施例中,着色器处理器602 内的像素处理器逻辑然后执行应用编程接口(API)供应的像素或片段着色 器程序。为了执行着色器程序,着色器处理器602经由线程分派器604将 线程分派至执行单元(例如,608A)。在一些实施例中,像素着色器602 使用采样器610中的纹理采样逻辑来访问存储器中所存储的纹理图中的纹 理数据。对纹理数据和输入几何数据的算术运算计算每个几何片段的像素 颜色数据,或丢弃一个或多个像素而不进行进一步处理。
在一些实施例中,数据端口614提供存储器访问机制,供线程执行逻 辑600将经处理的数据输出至存储器以便在图形处理器输出流水线上进行 处理。在一些实施例中,数据端口614包括或耦合至一个或多个高速缓存 存储器(例如,数据高速缓存612)从而经由数据端口高速缓存数据以供存 储器访问。
图7是框图,展示了根据一些实施例的图形处理器指令格式700。在 一个或多个实施例中,图形处理器执行单元支持具有多种格式的指令的指 令集。实线框展示了通常包括在执行单元指令中的部件,而虚线包括可选 的部件或仅包括在指令子集中的部件。在一些实施例中,所描述和展示的 指令格式700是宏指令,因为所述宏指令是供应至执行单元的指令,这与 从指令解码产生的微操作相反(一旦所述指令被处理)。
在一些实施例中,图形处理器执行单元原生地支持采用128位指令格 式710的指令。64位压缩指令格式730可用于基于所选指令、指令选项和 操作数数量的一些指令。原生128位指令格式710提供对所有指令选项的 访问,而一些选项和操作限制在64位指令格式730中。64位指令格式730 中可用的原生指令根据实施例而不同。在一些实施例中,使用索引字段713 中的一组索引值将指令部分地压缩。执行单元硬件基于索引值来参考一组 压缩表,并使用压缩表输出来重构采用128位指令格式710的原生指令。
针对每种格式,指令操作码712限定了所述执行单元要执行的操作。 执行单元跨每个操作数的多个数据元素来并行地执行每条指令。例如,响 应于添加指令,执行单元跨每个颜色通道执行同步添加操作,所述颜色通 道表示纹理元素或图片元素。默认地,执行单元跨操作数的所有数据信道 执行每条指令。在一些实施例中,指令控制字段714使能控制某些执行选 项,诸如信道选择(例如,预测)以及数据信道排序(例如,混合)。针 对采用128位指令格式710的指令,执行大小字段716限制了将并行执行 的数据信道的数量。在一些实施例中,执行大小字段716不可用于64位压 缩指令格式730。
一些执行单元指令具有多达三个操作数,包括两个源操作数(src0 720、 src1722)以及一个目标操作数718。在一些实施例中,执行单元支持双目 的地指令,其中,这些目的地之一是隐式的。数据操作指令可以具有第三 源操作数(例如,SRC2 724),其中,指令操作码712确定源操作数的数 量。指令的最后一个源操作数可以是与所述指令一起传递的立即数(例如, 硬编码)值。
在一些实施例中,128位的指令格式710包括访问/寻址模式字段726, 所述访问/寻址模式字段例如限定了是使用直接寄存器寻址模式还是间接寄 存器寻址模式。当使用直接寄存器寻址模式时,直接由指令中的位来提供 一个或多个操作数的寄存器地址。
在一些实施例中,128位指令格式710包括访问/地址模式字段726, 其指定指令的地址模式和/或访问模式。在一个实施例中,访问模式用于限 定针对指令的数据访问对齐。一些实施例支持访问模式,包括16字节对齐 访问模式和1字节对齐访问模式,其中,访问模式的字节对齐确定了指令 操作数的访问对齐。例如,当在第一模式中时,指令可以使用字节对齐寻 址以用于源操作数和目的地操作数,并且当在第二模式中时,指令可以使 用16字节对齐寻址以用于所有的源操作数和目的地操作数。
在一个实施例中,访问/地址模式字段726的地址模式部分判定指令是 使用直接寻址还是间接寻址。当使用直接寄存器寻址模式时,指令中的位 直接提供一个或多个操作数的寄存器地址。当使用间接寄存器寻址模式时, 可以基于指令中的地址寄存器值和地址立即数字段来计算一个或多个操作 数的寄存器地址。
在一些实施例中,基于操作码712位字段对指令进行分组从而简化操 作码解码740。针对8位的操作码,第4、5、和6位允许执行单元确定操 作码的类型。所示出的精确操作码分组仅是示例性的。在一些实施例中, 移动和逻辑操作码组742包括数据移动和逻辑指令(例如,移动(mov)、 比较(cmp))。在一些实施例中,移动和逻辑组742共享五个最高有效位 (MSB),其中,移动(mov)指令采用0000xxxxb的形式,而逻辑指令 采用0001xxxxb的形式。流控制指令组744(例如,调用(call)、跳(jmp)) 包括采用0010xxxxb形式(例如,0x20)的指令。杂项指令组746包括指 令的混合,包括采用0011xxxxb形式(例如,0x30)的同步指令(例如, 等待(wait)、发送(send))。并行数学指令组748包括采用0100xxxxb 形式(例如,0x40)的按分量的算术指令(例如,加(add)、乘(mul))。 并行数学组748跨数据信道并行地执行算术运算。向量数学分组750包括 按照0101xxxxb形式(例如,0x50)的算术指令(例如,dp4)。向量数学 组对向量操作数执行算术运算,诸如点积运算。
图形流水线
图8是图形处理器800的另一个实施例的框图。图8的具有与此处任 何其他附图中的元件相同的参考号(或名称)的那些元件可采用与在本文 中其他地方描述的方式相类似的任何方式进行操作或起作用,但不限于这 些。
在一些实施例中,图形处理器800包括图形流水线820、媒体流水线 830、显示引擎840、线程执行逻辑850、以及渲染输出流水线870。在一些 实施例中,图形处理器800是包括一个或多个通用处理核的多核处理系统 内的图形处理器。图形处理器受到至一个或多个控制寄存器(未示出)的 寄存器写入的控制或者经由环形互连802经由发布至图形处理器800的命 令被控制。在一些实施例中,环形互连802将图形处理器800耦合至其他 处理部件,诸如其他图形处理器或通用处理器。来自环形互连802的命令 通过命令流送器803被解译,所述命令流送器将指令供应至图形流水线820 或媒体流水线830的单独部件。
在一些实施例中,命令流送器803引导顶点获取器805的操作,其从 存储器读取顶点数据并执行命令流送器803所提供的顶点处理命令。在一 些实施例中,顶点获取器805将顶点数据提供给顶点着色器807,所述顶点 着色器对每个顶点执行坐标空间转换和照明操作。在一些实施例中,顶点 获取器805和顶点着色器807通过经由线程分派器831向执行单元852A至 852B分派执行线程来执行顶点处理指令。
在一些实施例中,执行单元852A至852B是具有用于执行图形和媒体 操作的指令集的向量处理器阵列。在一些实施例中,执行单元852A至852B 具有附接的L1高速缓存851,其专用于每个阵列或在阵列之间共享。高速 缓存可以被配置为数据高速缓存、指令高速缓存、或单个高速缓存,所述 单个高速缓存被分区为包含不同分区中的数据和指令。
在一些实施例中,图形流水线820包括用于执行3D对象的硬件加速镶 嵌的镶嵌部件。在一些实施例中,可编程的外壳着色器811配置镶嵌操作。 可编程域着色器817提供对镶嵌输出的后端评估。镶嵌器813在外壳着色 器811的方向上进行操作并且包含专用逻辑,所述专用逻辑用于基于粗糙 几何模型来生成详细的几何对象集合,所述粗糙几何模型作为输入被提供 至图形流水线820。在一些实施例中,如果未使用镶嵌,则可以对镶嵌部件(例如,外壳着色器811、镶嵌器813、域着色器817)进行旁路。
在一些实施例中,完整的几何对象可以由几何着色器819经由被分派 至所述执行单元852A至852B的一个或多个线程来处理、或者可以直接行 进至剪裁器829。在一些实施例中,几何着色器在整个几何对象(而非顶点 或者如图形流水线的先前级中的顶点补片)上进行操作。如果禁用镶嵌, 则几何着色器819从顶点着色器807接收输入。在一些实施例中,几何着 色器819可由几何着色器程序编程以便在镶嵌单元被禁用时执行几何镶嵌。
在光栅化之前,剪裁器829处理顶点数据。裁剪器829可以是固定功 能的裁剪器或者具有裁剪和几何着色器功能的可编程裁剪器。在一些实施 例中,渲染输出流水线870中的光栅化器和深度测试部件873分派像素着 色器以将几何对象转换为其每像素表示。在一些实施例中,像素着色器逻 辑包括在线程执行逻辑850中。在一些实施例中,应用可对光栅化器和深 度测试部件873进行旁路并且经由流出单元823访问未光栅化的顶点数据。
图形处理器800具有互连总线、互连结构、或某个其他的互连机制, 所述互连机制允许数据和消息在所述图形处理器的主要部件之中传递。在 一些实施例中,执行单元852A至852B和(多个)相关联的高速缓存851、 纹理和媒体采样器854、以及纹理/采样器高速缓存858经由数据端口856 进行互连,以便执行存储器访问并且与所述处理器的渲染输出流水线部件 进行通信。在一些实施例中,采样器854、高速缓存851、858以及执行单 元852A至852B各自具有单独的存储器访问路径。
在一些实施例中,渲染输出流水线870包含光栅化器和深度测试部件 873,其将基于顶点的对象转换为相关联的基于像素的表示。在一些实施例 中,光栅化器逻辑包括用于执行固定功能三角形和线光栅化的窗口器/掩蔽 器单元。相关联的渲染高速缓存878和深度高速缓存879在一些实施例中 也是可用的。像素操作部件877对数据进行基于像素的操作,然而在一些 实例中,与2D操作(例如,利用混合的位块图像传送)相关联的像素操作 由2D引擎841执行、或者在显示时间由显示控制器843使用重叠显示平面 来代替。在一些实施例中,共享的L3高速缓存875可用于所有的图形部件, 从而允许在无需使用主系统存储器的情况下共享数据。
在一些实施例中,图形处理器媒体流水线830包括媒体引擎837和视 频前端834。在一些实施例中,视频前端834从命令流送器803接收流水线 命令。在一些实施例中,媒体流水线830包括单独的命令流送器。在一些 实施例中,视频前端834在将所述命令发送至媒体引擎837之前处理媒体 命令。在一些实施例中,媒体引擎837包括用于生成线程以用于经由线程 分派器831分派至线程执行逻辑850的线程生成功能。
在一些实施例中,图形处理器800包括显示引擎840。在一些实施例 中,显示引擎840在处理器800外部并且经由环形互连802、或某个其他互 连总线或机构与图形处理器耦合。在一些实施例中,显示引擎840包括2D 引擎841和显示控制器843。在一些实施例中,显示引擎840包含能够独立 于3D流水线而操作的专用逻辑。在一些实施例中,显示控制器843与显示 装置(未示出)耦合,所述显示装置可以是系统集成显示装置(如在膝上 型计算机中)、或者经由显示设备连接器附接的外部显示装置。
在一些实施例中,图形流水线820和媒体流水线830可配置用于基于 多个图形和媒体编程接口执行操作并且并非专用于任何一种应用编程接口 (API)。在一些实施例中,图形处理器的驱动程序软件将专用于特定图形 或媒体库的API调用转换为可由图形处理器处理的命令。在一些实施例中, 为全部来自Khronos Group的开放图形库(OpenGL)、开放计算语言 (OpenCL)和/或Vulkan图形和计算API提供了支持。在一些实施例中, 也可以为微软公司的Direct3D库提供支持。在一些实施例中,可以支持这 些库的组合。还可以为开源计算机视觉库(OpenCV)提供支持。如果可做 出从未来API的流水线到图形处理器的流水线的映射,则具有兼容3D流 水线的未来API也将受到支持。
图形流水线编程
图9A是展示了根据一些实施例的图形处理器命令格式900的框图。图 9B是框图,展示了根据实施例的图形处理器命令序列910。图9A中的实 线框展示了一般包括在图形命令中的部件,而虚线包括任选的或仅包括在 所述图形命令的子集中的部件。图9A的示例性图形处理器命令格式900 包括用于标识所述命令的目标客户端902、命令操作代码(操作码)904、 以及用于所述命令的相关数据906的数据字段。一些命令中还包括子操作 码905和命令大小908。
在一些实施例中,客户端902限定了处理命令数据的图形装置的客户 端单元。在一些实施例中,图形处理器命令解析器检查每个命令的客户端 字段以便调整对命令的进一步处理并将命令数据路由至合适的客户端单元。 在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、 2D单元、3D单元、和媒体单元。每个客户端单元具有对命令进行处理的 相应处理流水线。一旦命令被客户端单元接收到,客户端单元就读取操作码904以及子操作码905(如果存在的话)从而确定要执行的操作。客户端 单元使用数据字段906内的信息来执行命令。针对一些命令,期望显式的 命令大小908来限定命令的大小。在一些实施例中,命令解析器基于命令 操作码自动地确定命令中的至少一些命令的大小。在一些实施例中,经由 双倍字长的倍数对命令进行对齐。
图9B中的流程图示出了示例性图形处理器命令序列910。在一些实施 例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所 示出的命令序列的版本来启动、执行并终止图形操作集合。仅出于示例性 目的示出并描述了样本命令序列,如实施例并不限于这些特定命令或者此 命令序列。而且,所述命令可以作为一批命令以命令序列被发布,从而使 得图形处理器将以至少部分同时的方式处理命令序列。
在一些实施例中,图形处理器命令序列910可以以流水线转储清除命 令912开始以便使得任一活跃图形流水线完成针对所述流水线的当前未决 命令。在一些实施例中,3D流水线922和媒体流水线924不同时进行操作。 执行流水线转储清除以使得活动图形流水线完成任何未决命令。响应于流 水线转储清除,用于图形处理器的命令解析器将停止命令处理直到活跃绘 画引擎完成未决操作并且使得相关的读高速缓存失效。可选地,渲染高速缓存中被标记为‘脏(dirty)’的任何数据可以被转储清除到存储器中。 在一些实施例中,流水线转储清除命令912可以用于流水线同步或者用在 将图形处理器置于低功率状态之前。
在一些实施例中,当命令序列需要图形处理器在流水线之间显式地切 换时,使用流水线选择命令913。在一些实施例中,在发布流水线命令之前 在执行情境中仅需要一次流水线选择命令913,除非所述情境要发布针对两 条流水线的命令。在一些实施例中,在经由流水线选择命令913的流水线 切换之前正好需要流水线转储清除命令912。
在一些实施例中,流水线控制命令914配置用于操作的图形流水线并 且用于对3D流水线922和媒体流水线924进行编程。在一些实施例中,流 水线控制命令914配置活跃流水线的流水线状态。在一个实施例中,流水 线控制命令914用于流水线同步并且用于在处理一批命令之前清除来自活 跃流水线内的一个或多个高速缓存存储器中的数据。
在一些实施例中,用于返回缓冲器状态的命令916用于配置返回缓冲 器的集合以供相应的流水线写入数据。一些流水线操作需要分配、选择、 或配置一个或多个返回缓冲器,在处理过程中所述操作将中间数据写入所 述一个或多个返回缓冲器中。在一些实施例中,图形处理器还使用一个或 多个返回缓冲器以便存储输出数据并且执行跨线程通信。在一些实施例中, 配置返回缓冲器状态916包括选择返回缓冲器的大小和数量以用于流水线操作集合。
命令序列中的剩余命令基于用于操作的活跃流水线而不同。基于流水 线判定920,所述命令序列被定制用于以3D流水线状态930开始的3D流 水线922、或者在媒体流水线状态940处开始的媒体流水线924。
用于配置3D流水线状态930的命令包括用于顶点缓冲器状态、顶点元 素状态、常量颜色状态、深度缓冲器状态、以及有待在处理3D图元命令之 前配置的其他状态变量的3D状态设置命令。这些命令的值至少部分地基于 使用中的特定3D API来确定。在一些实施例中,3D流水线状态930命令 还能够选择性地禁用或旁路掉特定流水线元件(如果将不使用那些元件的 话)。
在一些实施例中,3D图元932命令用于提交待由3D流水线处理的3D 图元。经由3D图元932命令传递给图形处理器的命令和相关联参数将被转 发到所述图形流水线中的顶点获取功能。顶点获取功能使用3D图元932 命令数据来生成多个顶点数据结构。所述顶点数据结构被存储在一个或多 个返回缓冲器中。在一些实施例中,3D图元932命令用于经由顶点着色器 对3D图元执行顶点操作。为了处理顶点着色器,3D流水线922将着色器 执行线程分派至图形处理器执行单元。
在一些实施例中,经由执行934命令或事件触发3D流水线922。在一 些实施例中,寄存器写入触发命令执行。在一些实施例中,经由命令序列 中的‘前进’(‘go’)或‘剔除’(‘kick’)命令来触发执行。在一个 实施例中,使用流水线同步命令来触发命令执行以便通过图形流水线转储 清除命令序列。3D流水线将针对3D图元来执行几何处理。一旦完成操作, 则对所产生的几何对象进行光栅化,并且像素引擎对所产生的像素进行着 色。对于这些操作,还可以包括用于控制像素着色和像素后端操作的附加 命令。
在一些实施例中,当执行媒体操作时,图形处理器命令序列910跟随 在媒体流水线924路径之后。一般地,针对媒体流水线924进行编程的具 体用途和方式取决于待执行的媒体或计算操作。在媒体解码过程中,特定 的媒体解码操作可以被卸载到所述媒体流水线。在一些实施例中,还可对 媒体流水线进行旁路,并且可使用由一个或多个通用处理核提供的资源来 整体地或部分地执行媒体解码。在一个实施例中,媒体流水线还包括用于通用图形处理器单元(GPGPU)操作的元件,其中,所述图形处理器用于 使用计算着色器程序来执行SIMD向量运算,所述计算着色器程序与渲染 图形图元不是显式地相关的。
在一些实施例中,以与3D流水线922相似的方式对媒体流水线924 进行配置。将用于配置媒体流水线状态940的一组命令分派或放置到命令 队列中,在媒体对象命令942之前。在一些实施例中,用于媒体流水线状 态的命令940包括用于配置媒体流水线元件的数据,所述媒体流水线元件 将用于对媒体对象进行处理。这包括用于在媒体流水线内配置视频解码和 视频编码逻辑的数据,诸如编码或解码格式。在一些实施例中,用于媒体 流水线状态的命令940还支持将一个或多个指针用于包含一批状态设置的 “间接”状态元件。
在一些实施例中,媒体对象命令942将指针供应至媒体对象以用于由 媒体流水线进行处理。媒体对象包括存储器缓冲器,所述存储器缓冲器包 含待处理的视频数据。在一些实施例中,在发布媒体对象命令942之前, 所有的媒体流水线状态必须是有效的。一旦流水线状态被配置并且媒体对 象命令942被排队,则经由执行944命令或等效的执行事件(例如,寄存 器写入)来触发媒体流水线924。然后可以通过由3D流水线922或媒体流 水线924提供的操作对来自媒体流水线924的输出进行后处理。在一些实 施例中,以与媒体操作类似的方式来配置和执行GPGPU操作。
图形软件架构
图10展示了根据一些实施例的数据处理系统1000的示例性图形软件 架构。在一些实施例中,软件架构包括3D图形应用1010、操作系统1020、 以及至少一个处理器1030。在一些实施例中,处理器1030包括图形处理器 1032以及一个或多个通用处理器核1034。图形应用1010和操作系统1020 各自在数据处理系统的系统存储器1050中执行。
在一些实施例中,3D图形应用1010包含一个或多个着色器程序,所 述一个或多个着色器程序包括着色器指令1012。着色器语言指令可以采用 高级着色器语言,诸如高级着色器语言(HLSL)或OpenGL着色器语言 (GLSL)。所述应用还包括可执行指令1014,所述可执行指令采用适合用 于由通用处理器核1034执行的机器语言。所述应用还包括由顶点数据限定 的图形对象1016。
在一些实施例中,操作系统1020是来自微软公司的 操作系统、专用UNIX式操作系统、或使用Linux内核变体的开 源UNIX式操作系统。操作系统1020可以支持图形API 1022,诸如Direct3D API、OpenGL API或Vulkan API。当Direct3D API正在使用时,操作系统 1020使用前端着色器编译器1024以将HLSL中的任何着色器指令1012编 译成较低级的着色器语言。所述编译可以是即时(JIT)编译,或者所述应 用可执行着色器预编译。在一些实施例中,在对3D图形应用1010进行编 译的过程中,将高级着色器编译成低级着色器。在一些实施例中,着色器 指令1012以中间形式提供,诸如由Vulkan API使用的标准便携式中间表 示(SPIR)的版本。
在一些实施例中,用户模式图形驱动程序1026包含后端着色器编译器 1027,所述后端着色器编译器用于将着色器指令1012变换成硬件专用的表 示。当在使用OpenGL API时,将采用GLSL高级语言的着色器指令1012 传递至用户模式图形驱动程序1026以用于编译。在一些实施例中,用户模 式图形驱动程序1026使用操作系统内核模式功能1028来与内核模式图形 驱动程序1029进行通信。在一些实施例中,内核模式图形驱动程序1029 与图形处理器1032进行通信以便分派命令和指令。
IP核实施方式
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代 表性代码实现,所述机器可读介质表示和/或限定集成电路(诸如处理器) 内的逻辑。例如,机器可读介质可以包括表示处理器内的各个逻辑的指令。 当由机器读取时,所述指令可以使机器制造用于执行本文所述的技术的逻 辑。这类表示(称为“IP核”)是集成电路的逻辑的可重复使用单元,所 述可重复使用单元可以作为对集成电路的结构进行描述的硬件模型而存储在有形、机器可读介质上。可以将硬件模型供应至在制造集成电路的制造 机器上加载硬件模型的各消费者或制造设施。可以制造集成电路,从而使 得所述电路执行与在此描述的实施例中的任一实施例相关联地描述的操作。
图11是展示了根据实施例的可以用于制造集成电路以执行操作的IP 核开发系统1100的框图。IP核开发系统1100可以用于生成可并入到更大 的设计中或用于构建整个集成电路(例如,SOC集成电路)的模块化、可 重复使用设计。设计设施1130可采用高级编程语言(例如,C/C++)生成 对IP核设计的软件仿真1110。软件仿真1110可用于使用仿真模型1112来 设计、测试并验证IP核的行为。仿真模型1112可以包括功能、行为和/或 时序仿真。然后可由仿真模型1112来创建或合成寄存器传送级(RTL)设 计1115。RTL设计1115是对硬件寄存器之间的数字信号的流动进行建模 的集成电路(包括使用建模的数字信号执行的相关联逻辑)的行为的抽象。 除了RTL设计1115之外,还可以创建、设计或合成逻辑电平或晶体管电 平处的较低层次设计。由此,初始设计和仿真的具体细节可以发生变化。
可以由设计设施将RTL设计1115或等效方案进一步合成为硬件模型 1120,所述硬件模型可以采用硬件描述语言(HDL)或物理设计数据的某 种其他表示。可以进一步仿真或测试HDL以验证IP核设计。可使用非易 失性存储器1140(例如,硬盘、闪存、或任何非易失性存储介质)来存储 IP核设计以用于递送至第3方制造设施1165。可替代地,可以通过有线连接1150或无线连接1160来传输(例如,经由互联网)IP核设计。制造设 施1165然后可以制造至少部分地基于IP核设计的集成电路。所制造的集 成电路可被配置用于执行根据在此描述的至少一个实施例的操作。
示例性片上系统集成电路
图12至图14展示了根据本文所述的各种实施例的可以使用一个或多 个IP核来制造的示例性集成电路和相关图形处理器。除了所展示的之外, 还可以包括其他逻辑和电路,包括附加的图形处理器/核、外围接口控制器 或通用处理器核。
图12是展示了根据实施例的可以使用一个或多个IP核来制造的示例 性片上系统集成电路1200的框图。示例性集成电路1200包括一个或多个 应用处理器1205(例如,CPU)、至少一个图形处理器1210,并且另外还 可以包括图像处理器1215和/或视频处理器1220,其中的任一项都可以是 来自相同或多个不同设计设施的模块化IP核。集成电路1200包括外围或 总线逻辑,包括USB控制器1225、UART控制器1230、SPI/SDIO控制器 1235和I2S/I2C控制器1240。另外,集成电路还可以包括显示装置1245, 所述显示装置耦合至高清晰度多媒体接口(HDMI)控制器1250和移动行 业处理器接口(MIPI)显示界面1255中的一项或多项。可以由闪存子系统 1260(包括闪存和闪存控制器)来提供存储。可以经由存储器控制器1265 来提供存储器接口以访问SDRAM或SRAM存储器装置。另外,一些集成 电路还包括嵌入式安全引擎1270。
图13是展示了根据实施例的可以使用一个或多个IP核来制造的片上 系统集成电路的示例性图形处理器1310的框图。图形处理器1310可以是 图12的图形处理器1210的变体。图形处理器1310包括顶点处理器1305 和一个或多个片段处理器1315A至1315N(例如,1315A、1315B、1315C、 1315D,一直到1315N-1和1315N)。图形处理器1310可以经由单独的逻辑执行不同的着色器程序,使得顶点处理器1305被优化以执行顶点着色器 程序的操作,而一个或多个片段处理器1315A至1315N执行片段(例如, 像素)着色操作以用于片段或像素着色器程序。顶点处理器1305执行3D 图形流水线的顶点处理阶段并生成图元和顶点数据。(多个)片段处理器 1315A至1315N使用由顶点处理器1305生成的图元和顶点数据来产生显示 在显示装置上的帧缓冲器。在一个实施例中,(多个)片段处理器1315A 至1315N被优化以执行OpenGL API中提供的片段着色器程序,这些片段 着色器程序可以用于执行与Direct 3D API中提供的像素着色器程序相似的 操作。
另外,图形处理器1310还包括一个或多个存储器管理单元(MMU) 1320A至1320B、一个或多个高速缓存1325A至1325B和(多个)电路互 连1330A至1330B。一个或多个MMU1320A至1320B为图形处理器1310 包括为顶点处理器1305和/或(多个)片段处理器1315A至1315N提供虚 拟到物理地址映射,除了存储在一个或多个高速缓存1325A至1325B中的 顶点或图像/纹理数据之外,所述虚拟到物理地址映射还可以引用存储在存 储器中的顶点或图像/纹理数据。在一个实施例中,一个或多个MMU 1320A 至1320B可以与系统内的其他MMU包括与图12的一个或多个应用处理器 1205、图像处理器1215和/或视频处理器1220相关联的一个或多个MMU 同步,使得每个处理器1205至1220可以参与共享或统一的虚拟存储器系统。根据实施例,一个或多个电路互连1330A至1330B使得图形处理器1310 能够经由SoC的内部总线或经由直接连接来与SoC内的其他IP核交互。
图14是框图,展示了根据实施例的可以使用一个或多个IP核来制造 的片上系统集成电路的附加示例性图形处理器1410。图形处理器1410可以 是图12的图形处理器1210的变体。图形处理器1410包括图13的集成电 路1300的一个或多个MMU 1320A至1320B、(多个)高速缓存1325A至 1325B和(多个)电路互连1330A至1330B。
图形处理器1410包括一个或多个着色器核1415A至1415N(例如, 1415A、1415B、1415C、1415D、1415E、1415F,一直到1315N-1和1315N), 所述一个或多个着色器核提供统一的着色器核架构,其中,单个核或类型 或核可以执行所有类型的可编程着色器代码包括着色器程序代码以实现顶 点着色器、片段着色器和/或计算着色器。存在的着色器核的确切数量可以 在实施例和实施方式中变化。另外,图形处理器1410还包括核间任务管理 器1405,所述核间任务管理器充当用于将执行线程分派给一个或多个着色 器核1415A至1415N的线程分派器和用于加快分块操作以进行基于图块的 渲染的分块单元1418,其中,场景的渲染操作在图像空间中被细分,例如 以利用场景内的本地空间一致性或优化内部高速缓存的使用。
示例性图形虚拟化架构
本发明的一些实施例在利用全图形处理器单元(GPU)虚拟化的平台 上实现。如此,下面提供本发明的一个实施例中采用的GPU虚拟化技术的 概述,随后详细描述用于模式驱动的页表遮蔽的设备和方法。
本发明的一个实施例采用在客户机中运行原生图形驱动程序的完整 GPU虚拟化环境,以及实现客户机之间的良好性能、可扩缩性和安全隔离 的中介传递。这个实施例向每个虚拟机(VM)提供虚拟全功能GPU,所 述虚拟全功能GPU可以在大多数情况下直接访问性能关键型资源而不需要 来自管理程序的干预,同时以最低的成本对来自客户机的特权操作进行俘 获与仿真。在一个实施例中,具有完整GPU特征的虚拟GPU(vGPU)被 呈现给每个VM。在大多数情况下,VM可以直接访问性能关键型资源,而 不需要虚拟机管理程序的干预,同时对来自客户机的特权操作进行俘获与 仿真,以提供VM之间的安全隔离。每个量子切换vGPU上下文,以在多 个VM之间共享物理GPU。
图15展示了可以在其上实现本发明的实施例的高级系统架构,所述高 级系统架构包括图形处理单元(GPU)1500、中央处理单元(CPU)1520、 以及在GPU 1500和CPU 1520之间共享的系统存储器1510。渲染引擎1502 从系统存储器1510中的命令缓冲器1512获取GPU命令,以使用各种不同 的特征来加速图形渲染。渲染引擎1504从帧缓冲器1514获取像素数据, 然后将所述像素数据发送至外部监视器以进行显示。
某些架构使用系统存储器1510作为图形存储器,而其他GPU可以使 用管芯上存储器。可以通过GPU页表1506将系统存储器1510映射到多个 虚拟地址空间中。2GB全局虚拟地址空间称为全局图形存储器,可以从 GPU 1500和CPU 1520访问,通过全局页表被映射。本地图形存储器空间 以多个2GB本地虚拟地址空间的形式被支持,但仅限于通过本地页表从渲 染引擎1502进行访问。全局图形存储器大部分是帧缓冲器1514,但也用作 命令缓冲器1512。在进行硬件加速时,对本地图形存储器进行大量的数据 访问。具有管芯上存储器的GPU采用类似的页表机制。
在一个实施例中,CPU 1520通过生产者-消费者模型中的GPU特定命 令来对GPU1500进行编程,如图15所示。根据如OpenGL和DirectX的 高级编程API,图形驱动程序将GPU命令编程到命令缓冲器1512中,包 括主缓冲器和批缓冲器。GPU 1500然后获取并执行命令。主缓冲器(环形 缓冲器)可以将其他批处理缓冲器链接在一起。术语“主缓冲器”和“环形缓冲器”在下文中可互换使用。批处理缓冲器用于传递每个编程模型的 大部分命令(多达~98%)。寄存器元组(头部、尾部)用于控制环形缓冲 器。在一个实施例中,CPU 1520通过更新尾部来向GPU 1500提交命令, 而GPU 1500从头部获取命令,然后在命令已经完成执行之后通过更新头部 来通知CPU 1520。
如上所述,本发明的一个实施例在具有中介传递的完整GPU虚拟化平 台中实现。因此,每个VM都配备有全功能GPU,以在VM内部运行原生 图形驱动程序。然而,在以下三个方面具有重大挑战:(1)虚拟化整个复 杂的现代GPU的复杂性,(2)由于多个VM共享GPU而导致的性能,以 及(3)VM之间完全的安全隔离。
图16展示了根据本发明的一个实施例的GPU虚拟化架构,所述GPU 虚拟化架构包括在GPU 1600上运行的管理程序1610、特权虚拟机(VM) 1620以及一个或多个用户VM 1631至1632。在管理程序1610中运行的虚 拟化存根模块1611扩展存储器管理以包括用于用户VM 1631至1632的扩 展页表(EPT)1614,以及用于特权VM 1620的特权虚拟存储器管理单元(PVMMU)1612,以实现俘获和传递策略。在一个实施例中,每个VM 1620、 1631至1632运行原生图形驱动程序1628,所述原生图形驱动程序可以如 下所述利用资源分区直接访问帧缓冲器和命令缓冲器的性能关键型资源。 为了保护特权资源,即I/O寄存器和PTE,来自用户VM 1631至1632和特 权VM 1620中的图形驱动程序1628的相应访问被俘获并且被转发至特权 VM 1620中的虚拟化中介器1622用于仿真。在一个实施例中,如图所展示, 虚拟化中介器1622使用超级调用来访问物理GPU 1600。
另外,在一个实施例中,虚拟化中介器1622实现与管理程序1610中 的CPU调度器1616同时运行的GPU调度器1626,以在VM 1631至1632 之间共享物理GPU 1600。一个实施例使用物理GPU 1600来直接执行从VM 提交的所有命令,因此避免了对渲染引擎进行仿真的复杂性,所述渲染引 擎是GPU内最复杂的部分。同时,帧缓冲器和命令缓冲器的资源传递使管 理程序1610对CPU访问的干预最小化,而GPU调度器1626保证每个VM 量子都用于直接GPU执行。因此,所展示的实施例在多个VM之间共享 GPU时实现良好的性能。
在一个实施例中,虚拟化存根1611选择性地俘获或传递某些GPU资 源的客户机访问。虚拟化存根1611操纵EPT 1614条目以选择性地向用户 VM 1631至1632呈现或隐藏特定地址范围,同时对于特权VM 1620使用 PVMMU 1612中的保留位PTE,用于将客户机访问选择性地俘获或传递至 特定的地址范围。在这两种情况下,俘获外围输入/输出(PIO)访问。所有被俘获的访问都被转发至虚拟化中介器1622进行仿真,而虚拟化中介器 1611使用超级调用来访问物理GPU 1600。
如上所述,在一个实施例中,虚拟化中介器1622对用于特权资源访问 的虚拟GPU(vGPU)1624进行仿真,并且在vGPU 1624之间进行上下文 切换。同时,特权VM 1620图形驱动程序1628被用于初始化物理装置并 管理功率。一个实施例采用灵活发布模型,通过将虚拟化中介器1622实现 为特权VM 1620中的内核模块,用于简化虚拟化中介器1622和管理程序 1610之间的绑定。
分离的CPU/GPU调度机制经由CPU调度器1616和GPU调度器1626 来实现。这是因为GPU上下文切换的成本可能是CPU上下文切换的成本 的1000倍以上(例如,~700us对~300ns)。另外,在计算机系统中CPU 内核的数量可能不同于GPU内核的数量。因此,在一个实施例中,GPU调 度器1626与现有CPU调度器1616分开实现。分离调度机制导致需要并发 访问来自CPU和GPU的资源。例如,当CPU正在访问VM1 1631的图形 存储器时,GPU可能同时访问VM2 1632的图形存储器。
如上所述,在一个实施例中,在每个VM 1620、1631至1632内部执 行原生图形驱动程序1628,所述原生图形驱动程序通过由虚拟化中介器 1622进行仿真的特权操作直接访问一部分性能关键型资源。分离调度机制 导致下面描述的资源分区设计。为了更好地支持资源分区,一个实施例保 留存储器映射I/O(MMIO)寄存器窗口以将资源分区信息传送给VM。
在一个实施例中,virt_info的位置和定义已经作为虚拟化扩展纳入硬 件规范,因此图形驱动程序1628在原生处理扩展,并且未来的GPU生成 遵循所述规范以实现向后兼容性。
虽然在图16中被展示为单独的部件,但是在一个实施例中,包括虚拟 化中介器1622(及其vGPU实例1624和GPU调度器1626)的特权VM 1620 被实现为管理程序1610内的模块。
在一个实施例中,虚拟化中介器1622通过对特权操作进行俘获与仿真 来管理所有VM的vGPU 1624。虚拟化中介器1622处理物理GPU中断, 并且可以向指定的VM 1631至1632生成虚拟中断。例如,命令执行的物 理完成中断可能会触发虚拟完成中断,并且被传递给渲染拥有者。对每个 语义的vGPU实例进行仿真的想法很简单;然而,实施方式却需要大量的 工程工作和对GPU 1600的深入理解。例如,某些图形驱动程序可以访问约 700个I/O寄存器。
在一个实施例中,GPU调度器1626实现粗粒度服务质量(QoS)策略。 可以选择特定的时间量作为每个VM 1631至1632共享GPU 1600资源的时 间分片。例如,在一个实施例中,选择16ms的时间量作为调度时间分片, 因为所述值导致人类对感知图像变化的低感知度。还选择这种相对较大的 量子,因为GPU上下文切换的成本是CPU上下文切换成本的1000倍以上, 因此所述量子不能像CPU调度器1616中的时间分片那么小。来自VM 1631 至1632的命令被连续地提交给GPU 1600,直到客户机/VM耗尽其时间分 片。在一个实施例中,GPU调度器1626在切换之前等待客户机环形缓冲器 变为空闲,因为当今的大多数GPU是非抢占的,因此这可能影响公平。为 了使等待开销最小化,可以通过跟踪命令提交以保证堆积命令在任何时间 处于一定限度内来实现粗粒度流量控制机制。因此,所分配的时间分片与执行时间之间的时间漂移相对较小,因此实现了粗粒度QoS策略。
在一个实施例中,在渲染上下文切换时,在切换vGPU 1624之间的渲 染引擎时,保存并恢复内部流水线状态和I/O寄存器状态,并且执行高速 缓存/TLB转储清除。内部流水线状态对CPU不可见,但可以通过GPU命 令进行保存和恢复。通过读取/写入渲染上下文中的寄存器列表可以实现保 存/恢复I/O寄存器状态。现代GPU中包含的用于加速数据访问和地址转换 的内部高速缓存和转换后备缓冲器(TLB)必须使用渲染上下文切换处的 命令转储清除,以保证隔离性和正确性。在一个实施例中用于切换上下文 的步骤是:1)保存当前I/O状态,2)转储清除当前上下文,3)使用附加 命令来保存当前上下文,4)使用附加命令来恢复新的上下文,以及5)恢 复新的上下文的I/O状态。
如上所述,一个实施例使用专用的环形缓冲器来承载额外的GPU命令。 (经审核的)客户机环形缓冲器可以被重新用于提高性能,但是直接将命 令插入到客户机环形缓冲器是不安全的,因为CPU可能会继续使更多命令 排队,从而导致被覆盖的内容。为了避免争用情况,一个实施例从客户机 环形缓冲器切换到其自己的专用环形缓冲器。在上下文切换结束时,本实 施例从专用环形缓冲器切换到新VM的客户机环形缓冲器。
一个实施例重新使用特权VM 1620图形驱动程序来初始化显示引擎, 然后管理显示引擎以显示不同的VM帧缓冲器。
当两个vGPU 1624具有相同的分辨率时,仅切换帧缓冲器位置。对于 不同的分辨率,特权VM可以使用硬件缩放器,这是现代GPU中的一项常 见功能,可以自动地对分辨率进行缩放。两种技术都只需几毫秒。在许多 情况下,可能不需要显示管理,例如当VM未显示在物理显示器上时(例 如,当所述VM位于远程服务器上时)。
如图16所展示,一个实施例传递对帧缓冲器和命令缓冲器的访问以加 速来自VM1631至1632的性能关键型操作。对于2GB大小的全局图形存 储器空间,可以采用图形存储器资源分区和地址空间膨胀技术。对于本地 图形存储器空间,每个图形存储器空间也都具有2GB的大小,由于本地图 形存储器仅可由GPU 1600访问,所以可通过渲染上下文切换来实现每个 VM本地图形存储器。
如上所述,一个实施例在VM 1631至1632之间对全局图形存储器进 行分区。如上所述,分离的CPU/GPU调度机制要求CPU和GPU同时访问 不同VM的全局图形存储器,因此每个VM必须随时使用其自己的资源来 呈现,从而导致全局图形存储器的资源分区方法。
图17展示了图形虚拟化架构1700的一个实施例的附加细节,所述图 形虚拟化架构包括由管理程序1710管理的多个VM(例如VM 1730和VM 1740),包括对GPU 1720中的全部GPU特征阵列的访问。在各实施例中, 管理程序1710可以使得VM 1730或VM 1740能够将图形存储器和其他 GPU资源用于GPU虚拟化。基于GPU虚拟化技术,一个或多个虚拟GPU(vGPU)(例如vGPU 1760A和1760B)可以访问由GPU 1720硬件提供 的全部功能。在各种实施例中,管理程序1710可以跟踪、管理如本文所述 的vGPU 1760A和1760B的资源和生命周期。
在一些实施例中,vGPU 1760A-B可以包括呈现给VM 1730、1740的 虚拟GPU装置,并且可以用于与原生GPU驱动程序交互(例如,如上文 相对于图16所述)。然后,VM 1730或VM 1740可以访问GPU特征全阵 列并且用vGPU 1760A-B中的虚拟GPU装置来访问虚拟图形处理器。例如, 一旦VM 1730被俘获在管理程序1710中,则管理程序1710可以操纵vGPU 实例(例如,vGPU 1760A)并且判定VM 1730是否可以访问vGPU 1760A 中的虚拟GPU装置。可以每个量子或事件切换vGPU上下文。在一些实施 例中,可以每GPU渲染引擎(诸如,3D渲染引擎1722或位块传送器渲染 引擎1724)发生上下文切换。定期切换允许多个VM以对VM的工作负荷 透明的方式来共享物理GPU。
GPU虚拟化可以采取各种形式。在一些实施例中,可以利用装置传递 来启用VM1730,其中,整个GPU 1720被呈现给VM 1730,如同它们是 直接相连的。很像可以指定单个中央处理单元(CPU)核专供VM 1730使 用,也可以指定GPU 1720专供VM 1730使用(例如,甚至在有限时间内)。 另一个虚拟化模型是分时模型,其中,GPU 1720或其一部分可以以多路复 用的方式由多个VM(例如,VM 1730和VM 1740)共享。在其他实施例 中,设备1700还可以使用其他GPU虚拟化模型。在各实施例中,可以对 与GPU 1720相关联的图形存储器进行分区,并且将其分配给管理程序1710 中的各vGPU 1760A-B。
在各实施例中,图形转换表(GTT)可以被VM或GPU 1720用于将 图形处理器存储器映射到系统存储器或者用于将GPU虚拟地址转换为物理 地址。在一些实施例中,管理程序1710可以经由阴影GTT来管理图形存 储器映射,并且所述阴影GTT可以保持在vGPU实例(例如,vGPU 1760A) 中。在各实施例中,每个VM可以有相应的阴影GTT以用于保持图形存储 器地址与物理存储器地址(例如,虚拟化环境下的机器存储器地址)之间 的映射。在一些实施例中,阴影GTT可以被共享并且维持多个VM的映射。 在一些实施例中,每个VM 1730或VM1740可以包括每进程GTT和全局 GTT两者。
在一些实施例中,设备1700可以将系统存储器用作图形存储器。可以 通过GPU页表将系统存储器映射到多个虚拟地址空间中。设备1700可以 支持全局图形存储器空间和每进程图形存储器地址空间。全局图形存储器 空间可以是通过全局图形转换表(GGTT)进行映射的虚拟地址空间(例如,2GB)。此地址空间的下部部分有时被称为可从GPU 1720和CPU(未示 出)访问的开口。此地址空间的上部部分被称为仅可以被GPU 1720使用的 高位图形存储器空间或隐藏图形存储器空间。在各实施例中,阴影全局图 形转换表(SGGTT)可以被VM 1730、VM 1740、管理程序1710或GPU 1720 用于基于全局存储器地址空间将图像存储器地址转换为对应的系统存储器 地址。
在完全GPU虚拟化时,静态全局图形存储器空间分区方案可能面临可 扩缩性问题。例如,对于2GB的全局图形存储器空间,可以为开口预留第 一512兆字节(MB)虚拟地址空间,并且其剩余部分(1536MB)可以变 成高位(隐藏)图形存储器空间。利用静态全局图形存储器空间分区方案, 使能了完全GPU虚拟化的每个VM可以分配有128MB开口和384MB高位图形存储器空间。因此,2GB全局图形存储器空间仅可以容置最多四个 VM。
除了可扩缩性问题,具有有限图形存储器空间的VM还可能经受性能 退化。有时,当媒介应用广泛地使用GPU媒介硬件加速时,可以在所述媒 介应用的一些媒介繁重工作负荷中观察到严重的性能降级。作为示例,为 了对一个信道的1080p H.264/高级视频编码(AVC)位流进行解码,可能 需要至少40MB的图形存储器。因此,对10个信道的1080p H264/AVC位 流进行解码,可能需要至少400MB的图形存储器空间。同时,可能需要留 出一些图形存储器空间来进行表面合成/颜色转换,在解码过程中切换显示 帧缓冲器等。在这种情况下,每个VM的512MB的图形存储器空间可能 不足以让所述VM运行多视频编码或解码。
在各实施例中,设备100可以利用按需式SGGTT来实现GPU图形存 储器过量使用。在一些实施例中,管理程序1710可以按需构建SGGTT, 所述SGGTT可以包括对不同GPU部件的所有者VM的图形存储器虚拟地 址的所有待使用转换。
在各实施例中,管理程序1710所管理的至少一个VM可以分配有多于 静态分区的全局图形存储器地址空间以及存储器。在一些实施例中,管理 程序1710所管理的至少一个VM可以分配有或者能够访问整个高位图形存 储器地址空间。在一些实施例中,管理程序1710所管理的至少一个VM可 以分配有或者能够访问整个图形存储器地址空间。
管理程序/VMM 1710可以用命令解析器1718来检测VM 1730或VM 1740所提交的命令的GPU渲染引擎的潜在存储器工作集。在各实施例中, VM 1730可以有对应的命令缓冲器(未示出)以用于保持来自3D工作负荷 1732或媒介工作负荷1734的命令。类似地,VM 1740可以有对应的命令 缓冲器(未示出)以用于保持来自3D工作负荷1742或媒介工作负荷1744的命令。在其他实施例中,VM 1730或VM 1740可以有其他类型的图形工 作负荷。
在各实施例中,命令解析器1718可以扫描来自VM的命令并且判定所 述命令是否包含存储器操作数。如果是,则命令解析器可以例如从VM的 GTT中读取有关的图形存储器空间映射,并且然后将其写入SGGTT的特 定于工作负荷的部分中。在对工作负荷的整个命令缓冲器进行扫描之后, 可以生成或更新保持了与此工作负荷相关联的存储器地址空间映射的 SGGTT。另外,通过扫描来自VM 1730或VM 1740的待执行命令,命令 解析器1718还可以提高GPU操作的安全性(比如通过减轻恶意操作)。
在一些实施例中,可以生成一个SGGTT来保持所有VM的所有工作 负荷的转换。在一些实施例中,可以生成一个SGGTT来保持例如仅一个 VM的所有工作负荷的转换。特定于工作负荷的SGGTT部分可以由命令解 析器1718按需构建以用于保持特定工作负荷(例如,VM 1730的3D工作 负荷1732或VM 1740的媒介工作负荷1744)的转换。在一些实施例中, 命令解析器1718可以将SGGTT插入到SGGTT队列1714中并且将相应工 作负荷插入到工作负荷队列1716中。
在一些实施例中,GPU调度器1712可以在执行时间构建这种按需式 SGGTT。特定硬件引擎可以仅使用在执行时间分配给VM 1730的图形存储 器地址空间的一小部分,并且GPU上下文切换很少发生。为了利用这种 GPU特征,管理程序1710可以用VM 1730的SGGTT来仅保持对各个GPU 部件(而非分配给VM 1730的全局图形存储器地址空间的整个部分)的执行和待执行转换。
GPU 1720的GPU调度器1712可以与设备1700中的CPU的调度器分 离开。在一些实施例中,为了利用硬件并行性,GPU调度器1712可以分别 对不同GPU引擎(例如,3D渲染引擎1722、位块传送器渲染引擎1724、 视频命令流转化器(VCS)渲染引擎1726、以及视频增强型命令流转化器 (VECS)渲染引擎1728)的工作负荷进行调度。例如,VM 1730可以是 3D加强的,并且3D工作负荷1732在一个时刻可能需要被调度到3D渲染 引擎1722。同时,VM 1740可以是媒介加强的,并且媒介工作负荷1744 可能需要被调度到VCS渲染引擎1726和/或VECS渲染引擎1728。在此情 况下,GPU调度器1712可以分别调度VM 1730的3D工作负荷1732和VM1740的媒介工作负荷1744。
在各实施例中,GPU调度器1712可以追踪GPU 1720中的对应渲染引 擎所使用的执行中的SGGTT。在此情况下,管理程序1710可以为每个渲 染引擎保留SGGTT以用于追踪对应渲染引擎中的所有执行中的图形存储 器工作集。在一些实施例中,管理程序1710可以保留单个SGGTT以用于 追踪所有渲染引擎的所有执行中的图形存储器工作集。在一些实施例中, 这种追踪可以基于单独的执行中SGGTT队列(未示出)。在一些实施例中, 这种追踪可以基于SGGTT队列1714上的标记(例如,使用注册表)。在 一些实施例中,这种追踪可以基于工作负荷队列1716上的标记(例如,使 用注册表)。
在调度过程中,GPU调度器1712可以针对工作负荷队列1716中的待 调度工作负荷来检查SGGTT队列1714中的SGGTT。在一些实施例中,为 了调度特定渲染引擎的下一个VM,GPU调度器1712可以检查由此渲染引 擎的VM使用的特定工作负荷的图形存储器工作集是否与由此渲染引擎执 行的或待执行的图形存储器工作集冲突。在其他实施例中,这种冲突检查 可以延伸至由所有其他渲染引擎利用执行中或待执行图形存储器工作集进 行检查。在各实施例中,这种冲突检查可以基于SGGTT队列1714中的相 应SGGTT或者基于管理程序1710所保留的SGGTT以用于追踪如在上文 中所讨论的对应渲染引擎中的所有执行中图形存储器工作集。
如果不存在冲突,则GPU调度器1712可以将执行中和待执行图形存 储器工作集集成在一起。在一些实施例中,也可以生成特定渲染引擎的执 行中和待执行图形存储器工作集的所产生的SGGTT并且将其存储在例如 SGGTT队列1714中或其他数据存储装置中。在一些实施例中,还可以生 成并存储与一个VM相关联的所有渲染引擎的执行中和待执行图形存储器 工作集的所产生的SGGTT,如果所有这些工作负荷的图形存储器地址不与 彼此冲突的话。
在将所选VM工作负荷提交到GPU 1720之前,管理程序1710可以将 相应SGGTT页写入GPU 1720中(例如,到图形转换表1750)。因此,管 理程序1710可以使得此工作负荷能够利用全局图形存储器空间中的正确映 射来执行。在各实施例中,所有这些转换条目均可以写入图形转换表1750 中,到下部存储器空间1754或上部存储器空间1752。在一些实施例中,图 形转换表1750可以每VM包含单独的表以保持这些转换条目。在其他实施 例中,图形转换表1750还可以每渲染引擎包含单独的表以适用于这些转换 条目。在各实施例中,图形转换表1750可以至少包含待执行图形存储器地 址。
然而,如果存在GPU调度器1712所确定的冲突,则然后,GPU调度 器1712可以延迟此VM的调度,并且反而尝试着调度相同或不同VM的另 一个工作负荷。在一些实施例中,如果两个或更多个VM可以尝试着使用 同一图形存储器地址(例如,针对同一渲染引擎或两个不同的渲染引擎), 则可以检测到这种冲突。在一些实施例中,GPU调度器1712可以改变调度 器策略以避免选择有可能与彼此冲突的渲染引擎中的一个或多个渲染引擎。 在一些实施例中,GPU调度器1712可以悬置执行硬件引擎以减轻冲突。
在一些实施例中,如本文中所讨论的GPU虚拟化时的存储器过量使用 可以与静态全局图形存储器空间分区方案共存。作为示例,下部存储器空 间1754的开口仍可以用于所有VM的静态分区。上部存储器空间1752中 的高位图形存储器空间可以用于存储器过量使用方案。与静态全局图形存 储器空间分区方案相比,GPU虚拟化时的存储器过量使用可以使得每个 VM能够使用上部存储器空间1752中的整个高位图形存储器空间,这可以 允许每个VM内的一些应用使用更大的图形存储器空间以获得改进的性能。
在静态全局图形存储器空间分区方案的情况下,最初要求保护存储器 的大部分的VM在运行时仅可以使用一小部分,而其他VM可能处于缺乏 存储器的状态。在存储器过量使用的情况下,管理程序可以按需为VM分 配存储器,并且所节省的存储器可以用于支持更多VM。在基于SGGTT的 存储器过量使用的情况下,在运行时仅可以分配待执行工作负荷所使用的 图形存储器空间,这节省了图形存储器空间并且支持更多VM访问GPU 1720。
当前架构支持在云和数据中心环境中托管GPU工作负载。完整GPU 虚拟化是GPU云中使用的基本支持技术之一。在完整GPU虚拟化中,虚 拟机监视器(VMM),尤其是虚拟GPU(vGPU)驱动程序俘获并仿真客 户机对特权GPU资源的访问,以实现安全性和多路复用,同时通过CPU 访问CPU等性能关键型资源,例如CPU访问图形存储器。GPU命令一旦 被提交,将直接由GPU执行,无需VMM干预。因此,实现了接近原生性 能。
当前系统使用GPU引擎的系统存储器来访问全局图形转换表(GGTT) 和/或每进程图形转换表(PPGTT),以从GPU图形存储器地址转换为系统 存储器地址。遮蔽机制可以用于客户机GPU页表的GGTT/PPGTT。
VMM可以使用与客户机PPGTT同步的阴影PPGTT。所述客户机 PPGTT具有写入保护功能,使得阴影PPGTT可以通过俘获和仿真其PPGTT 的客户机修改,与客户机PPGTT持续同步。目前,每个vGPU的GGTT在 每个VM之间被遮蔽和分区,并且PPGTT被遮蔽并且在每个VM上被遮盖 (例如,基于每个进程)。由于GGTT PDE表保留在PCI bar0MMIO范围 内,因此GGTT页表的阴影很简单。但是,PPGTT的阴影依赖于对客户机 PPGTT页表的写入保护,并且传统的阴影页表非常复杂(因此也是有漏洞 的)并且效率低下。例如,CPU阴影页表在当前架构中的性能开销为~30%。 因此,在这些系统中的一些系统中,使用了启蒙阴影页表,所述启蒙阴影 页表修改客户机图形驱动程序用于协作识别用于页表页的页和/或在其被释 放时修改客户机图形驱动程序。
本发明的实施例包括存储器管理单元(MMU)诸如I/O存储器管理单 元(IOMMU),以从客户机PPGTT映射的GPN(客户机页号)重新映射 到HPN(主机页号),而不依赖于低效率/复杂的阴影PPGTT。同时,一个 实施例保留全局阴影GGTT页表用于地址膨胀。这些技术通常称为混合层 地址映射(HLAM)。
在默认情况下,IOMMU不能用于某些中介传递架构,因为多个VM 只能使用单个二层转换。本发明的一个实施例利用以下技术来解决这个问 题:
1.使用IOMMU在没有阴影PPGTT的情况下进行两层的转换。具体地 讲,在一个实施例中,GPU从图形存储器地址(GM_ADDR)转换为GPN, 并且IOMMU从GPN转换为HPN,而不是从GM_ADDR转换为HPN的阴 影PPGTT,其中,对客户机PPGTT应用写入保护。
2.在一个实施例中,IOMMU页表针对每个VM进行管理,并且在切 换vGPU时进行切换(或者可以部分地切换)。也就是说,当VM/vGPU 被调度时,加载对应的VM的IOMMU页表。
3.然而,在一个实施例中共享GGTT映射的地址,并且由于vCPU可 以访问GGTT映射的地址(诸如,开口),因此即使当所述VM的vGPU 未被调度时,所述全局阴影GGTT也必须保持有效。这样,本发明的一个 实施例使用混合层地址转换,其保留全局阴影GGTT,但直接使用客户机 PPGTT。
4.在一个实施例中,对GPN地址空间进行分区以将GGTT映射的GPN 地址(其变成到IOMMU的输入,如GPN)移动至专用地址范围。这可以 通过俘获和仿真GGTT页表来实现。在一个实施例中,从具有大偏移量的 GGTT修改GPN以避免在IOMMU映射中与PPGTT重叠。
图18展示了在一个实施例中采用的结构,其中,IOMMU 1830启用装 置虚拟化。所展示的架构包括在管理程序/VMM 1820上执行的两个VM 1801、1811(但是本发明的基本原理可以用任意数量的VM来实现)。每 个VM 1801、1811包括分别管理客户机PPGTT和GGTT1803、1813的驱 动程序1802、1812(例如,原生图形驱动程序)。所展示的IOMMU 1830 包括用于实现本文所述的混合层地址映射技术的HLAM模块1831。需要注 意的是,在所述实施例中,不存在阴影PPGTT。
在一个实施例中,在IOMMU映射中准备整个客户机VM(示例中的 客户机VM 1811)的GPN到HPN转换页表1833,并且每个vGPU切换触 发IOMMU页表交换。也就是说,当调度每个VM 1801、1811时,其对应 的GPN到HPN转换表1833被交换。在一个实施例中,HLAM 1831区分GGTT GPN和PPGTT GPN并且修改GGTT GPN,以使得所述GGTT GPN 在转换表1833中执行查找时不与PPGTT GPN重叠。具体地讲,在一个实 施例中,虚拟GPN生成逻辑1832将GGTT GPN转换为虚拟GPN,然后所 述虚拟GPN用于在转换表1833中执行查找以识别对应的HPN。
在一个实施例中,通过将GGTT移位指定的(可能大的)偏移量来生 成虚拟GPN,以确保映射的地址不与PPGTT GPN重叠/冲突。另外,在一 个实施例中,由于CPU可以随时访问GGTT映射地址(例如,开口),因 此全局阴影GGTT将总是有效并且保持在每个VM的IOMMU映射1833 中。
在一个实施例中,混合层地址映射1831解决方案将IOMMU地址范围 区分成两部分:为PPGTT GPN到HPN转换保留的下部,以及为GGTT虚 拟GPN到HPN转换保留的上部。由于GPN由VM/客户机1811提供,因 此GPN应该在客户机存储器大小的范围之内。在一个实施例中,客户机 PPGTT页表保持不变,并且来自PPGTT的所有GPN通过工作负载执行直 接发送至图形转换硬件/IOMMU。然而,在一个实施例中,来自客户机VM 的MMIO读取/写入被俘获,并且GGTT页表变化被捕获并且如本文所述地 被改变(例如,向GPN增加大的偏移量,以便确保与IOMMU中的PPGTT 映射不重叠)。
远程虚拟化图形处理
在本发明的一些实施例中,服务器执行图形虚拟化,代表客户端虚拟 化物理GPU并运行图形应用。图19展示了一个这样的实施例,其中,两 个客户端1901至1902通过网络1910(诸如互联网和/或专用网络)连接至 服务器1930。服务器1930实现虚拟化图形环境,其中,管理程序1960分 配来自一个或多个物理GPU 1938的资源,将资源作为虚拟GPU 1934至1935呈现给VM/应用1932至1933。图形处理资源可以根据资源分配策略 1961进行分配,这可以使管理程序1960基于应用1932至1933的要求(例 如,较高性能的图形应用需要较多的资源)、与应用1932至1933相关联 的用户帐户(例如,某些用户为获得更高性能而支付额外费用)和/或系统 上的当前负载来分配资源。所分配的GPU资源可以包括多组图形处理引擎, 诸如3D引擎、块图像传输引擎、执行单元以及媒体引擎等等。
在一个实施例中,每个客户端1901至1902的用户在托管(多个)服 务器1930的服务上具有账户。例如,所述服务可以提供订阅服务,以向用 户提供远程访问在线应用1932至1933,诸如视频游戏、生产力应用、以及 多玩家虚拟现实应用等。在一个实施例中,响应于来自客户端1901至1902 的用户输入1907至1908,在虚拟机上远程执行应用。尽管未在图19中展 示,但是一个或多个CPU也可以被虚拟化并且用于执行应用1932至1933, 其中,图形处理操作卸载到vGPU 1934至1935。
在一个实施例中,响应于图形操作的执行,vGPU 1934至1935生成一 系列图像帧。例如,在第一人称射击游戏中,用户可以指定输入1907来在 幻想世界中移动角色。在一个实施例中,所产生的图像被压缩(例如,通 过压缩电路系统/逻辑,未示出)并且通过网络1910被流式传输至客户端 1901至1902。在一个实施方式中,可以使用视频压缩算法诸如H.261;然 而,可以使用各种不同的压缩技术。解码器1905至1906对输入视频流进 行解码,然后在客户端1901至1902的相应显示器1903至1904上对其进 行渲染。
使用图19中所展示的系统,高性能图形处理资源诸如GPU 1938可以 被分配到预订服务的不同客户端。在在线游戏实施方式中,例如,服务器 1930可以在新视频游戏被释放时托管所述新视频游戏。然后在虚拟化环境 中执行视频游戏程序代码,并且将所产生的视频帧压缩并流式传输至每个 客户端1901至1902。这种架构中的客户端1901至1902不需要大量的图形 处理资源。例如,即使是具有解码器1905至1906的相对低功率的智能电 话或平板电脑也将能够解压缩视频流。因此,最新的图形密集型视频游戏 可以在能够压缩视频的任何类型的客户端上播放。虽然视频游戏被描述为 一种可能的实施方式,但是本发明的基本原理可以用于需要图形处理资源 的任何形式的应用(例如,图形设计应用、交互式和非交互式射线追踪应 用、生产力软件、视频编辑软件等)。
虚拟化环境中的内容保护
当GPU正在处理图像帧时,受保护内容(诸如,加密的电影)可能未 经加密地存储到GPU高速缓存中。与此相关的问题是,响应于来自CPU 高速缓存一致性控制器的一致读取请求可能会返回未加密的数据,从而容 易受到非法复制的影响。
为了解决这个问题,本发明的一个实施例为GPU高速缓存中的每一行 分配一个新的属性,以指示所述行是否正在存储受保护内容。在所述实施 例中,响应于来自CPU的一致读取请求,GPU高速缓存将不返回高速缓存 行中的数据(如在当前实施方式中那样)。所述GPU高速缓存可能会返回 一个指定的位串,例如全0,从而保护底层数据。
图20展示了具有用于存储由图形处理流水线2025处理的数据的图形 高速缓存2011的GPU 2010的示例性实施例。在一个实施例中,最初从存 储介质诸如硬盘驱动器或网络接口中读取受保护内容(例如,通过互联网 从视频流传输服务流式传输)。在帧渲染过程中,图形处理流水线2025内 的编码/解码电路系统2026对受保护内容进行解码,并且将所产生的经解码 数据临时存储在图形高速缓存2011内,使其容易被复制。在一个实施例中,编码/解码电路系统2026包括使用受保护密钥来解密受保护内容(诸如电影) 的数字权限管理(DRM)电路系统/逻辑。
在一个实施例中,保护电路系统和/或逻辑2027为图形高速缓存2011 中的每行受保护数据设置保护属性2000。或者,图形高速缓存2011的保护 电路系统1028可以设置保护属性2000。‘1’指示高速缓存行正在存储受 保护内容,并且‘0’指示高速缓存行未存储受保护内容。因此,当编码/解码 电路系统2026对受保护内容进行解码时,所述编码/解码电路系统可以在将 受保护内容存储在高速缓存2011中时将保护属性2000切换为1。
随后,响应于来自CPU 2035的高速缓存一致性控制器2020的一致读 取请求,图形高速缓存2011读取保护属性2000以确定所述读取请求中标 识的高速缓存行是否受到保护。如果所述高速缓存行受保护,那么所述高 速缓存行将不在响应中包含来自高速缓存行数据的数据(例如,所述高速 缓存行可能包括全0或全1)。如果所述高速缓存行不受保护,所述高速缓 存行将照常返回数据。
图形高速缓存2011可以表示高速缓存分级结构内的任何高速缓存,例 如1级高速缓存、2级高速缓存或3级高速缓存。本发明的基本原理可以使 用以非加密格式存储受保护内容的任何内部存储结构来实现。
图21展示了用于在图形高速缓存中存储受保护数据的方法的一个实 施例。在2101处,对受保护内容进行解密。例如,DRM电路系统/逻辑可 以使用受保护密钥来解密受保护内容,例如电影。如果在2102处确定内容 受保护,则在2103处,内容被存储在具有指定所述内容受保护的属性的 GPU高速缓存中。如果内容不受保护,则在2104处,将内容存储在使用指 定不受保护的内容的属性的GPU高速缓存中。
图22展示了用于执行一致读请求2201到含有受保护数据的图形高速 缓存的方法的一个实施例。如果一致读取请求所针对的高速缓存行包含受 保护数据(例如,如保护属性所指示的那样),则在2203处,则不返回数 据(例如,可以返回诸如全0的特定位模式)。如果高速缓存行不包括受 保护数据,则在2204处(使用标准一致读取响应)返回数据。
共享本地存储器的优先化和保护
共享本地存储器(SLM)是由GPU内的功能单元使用的小型本地存储 器(例如,1MB至2MB)。SLM在系统地址空间内不可访问,不属于 GPU使用的高速缓存层级结构。由于当今尚未虚拟化SLM,因此一个上下 文可能会占用整个SLM,从而降低其他VM/应用的性能。
在一个实施例中,当为不同的上下文分配SLM的部分时使用优先化技 术。图23展示了两个上下文(上下文-0和上下文-1)竞争在GPU 2311内 存储SLM 2312的一个示例。如果两个上下文请求完整SLM空间(例如, 1MB),则SLM控制器2332的一个实施例将在两个上下文之间共享SLM (例如,每一者给出512kB)并且将其余的溢出到系统存储器2340中的虚拟SLM存储器2341(可能命中L3高速缓存2338)。在大多数情况下,上 下文不会使用SLM中的大部分空间,因此访问系统存储器2340的情况很 少发生。
在一个实施例中,线程调度器2335和/或SLM控制器2332跟踪SLM 2312中的SLM空间的那些部分以及溢出到系统存储器2340中的那些部分。 通过利用这些技术,由线程调度器2335执行的线程分派将不会如当前实施 方式中的那样停顿。
在一个实施例中,在从VM接收到请求时,SLM控制器2332将检查 以确定所述请求是否将被提供给实际SLM 2332或溢出到系统存储器2340 中的SLM区域2341中。如果数据在SLM区域2341中,则转换电路系统 和/或SLM控制器2332内的逻辑将转换,并且将请求重定向到访问虚拟 SLM空间2341所需的系统存储器地址。
在一个实施方式中,上下文-0通过指定不同于上下文-1使用的基础地 址来访问其系统存储器的一部分。所述基础地址然后与偏移量组合以识别 SLM 2312中的数据。如果存储在系统存储器2340中的SLM区域2341中, 则SLM控制器2332将请求转换为所需的系统存储器地址。例如,基础+ 偏移量组合可以指向未分配给SLM 2312中的上下文的地址,并且SLM控 制器2332将基础+偏移量值映射到适当的系统地址。
虽然SLM控制器2332可以如上所述在上下文之间均匀地分配SLM 2312,但是在其中上下文被分配有不同优先级的实施例中,SLM控制器2332 可以将更大部分的SLM 2312分配给具有更高优先级的上下文。例如,如果 上下文-0具有优先级1(最高优先级)并且上下文-1具有优先级3,则SLM 2312可以将1/4的SLM分配给上下文-1并且将3/4分配给上下文-0(即,1/3+1 和3/3+1)。当然,SLM 2312可以以各种方式被分配给具有不同优先级的 上下文,同时仍然符合本发明的基本原理。
一个实施例防止一个上下文使用基础和限制值来破坏另一个上下文的 数据(例如,由于使用了错误偏移量的漏洞)。具体地讲,当SLM控制器 2332接收对特定上下文的请求时,其检查以确保在SLM内被访问的区域不 在由所述上下文的基础+限制限定的区域之外。如果是这样,所述SLM控 制器可能会产生一个异常。对于上下文的每个请求可以以SLM初始分配时 编程的限制值到达。
优先级可以以各种方式来建立,包括确定上下文是与前台还是后台应 用相关联(前者被分配有高于后者的优先级)。优先级值然后通过GPU传 播并且被编程到SLM控制器2332和/或线程调度器2335中。因此,具有 较高优先级的上下文将在较低优先级的上下文之前被提供对SLM 2312的 访问。如今,在SLM单元中没有优先级的概念,因此哪个应用先到便先为 所述应用提供服务。
图24中展示了根据本发明的一个实施例的方法。可以借助本文所述的 图形处理架构的上下文来实现所述方法,但不限于任何特定的架构。在2401 处,在多个上下文之间分配SLM。如上所述,这可能涉及在上下文之间平 均分配SLM或根据上下文的相对优先级分配SLM。响应于来自其中一个 上下文的SLM请求(其包括基础/偏移量组合),在2403处确定数据是存 储在SLM中还是存储在系统存储器中。如果数据被存储在SLM中,则在 2404处,使用基础/偏移量来访问SLM。如果不是,则在2405处,将基础 /偏移量转换为系统存储器地址(即,在分配用于存储来自SLM的溢出的 系统存储器范围内)。
在一些实施例中,图形处理单元(GPU)通信地耦合至主机/处理器核 以加快图形操作、机器学习操作、模式分析操作和各种通用GPU(GPGPU) 功能。GPU可以通过总线或另外的互连(例如,诸如PCIe或NVLink的高 速互连)通信地耦合至主机处理器/核。在其他实施例中,GPU可以与核一 样集成在相同的封装或芯片上并且通过内部处理器总线/互连(即,在封装 或芯片内部)通信地耦合至所述核。不管GPU连接的方式如何,处理器核 都可以以工作描述符中包含的命令/指令序列的形式向GPU分配工作。然后, GPU使用专用电路系统/逻辑来高效地处理这些命令/指令。
在以下描述中,阐述了大量的具体细节以提供更加透彻的解释。然而, 对于本领域技术人员而言,可以在不具有这些具体细节中的一个或多个的 情况下实践本文所述的实施例将是明显的。在其他情况下,未对公知特征 进行描述以避免模糊本发明实施例的细节。
系统概述
图25是展示了被配置成实现本文所述的实施例的一个或多个方面的 计算机系统2500的框图。计算系统2500包括处理子系统2501,所述处理 子系统具有一个或多个处理器2502和系统存储器2504,所述一个或多个处 理器和所述系统存储器经由互连路径进行通信,所述互连路径可以包括存 储器中枢2505。存储器中枢2505可以是芯片组部件内的单独的部件,也可 以集成在一个或多个处理器2502内。存储器中枢2505经由通信链路2506 与I/O子系统2511耦合。I/O子系统2511包括I/O中枢2507,所述I/O中 枢可以使得计算系统2500能够从一个或多个输入装置2508接收输入。另 外,I/O中枢2507可以使得显示控制器(所述显示控制器可以被包括在一 个或多个处理器2502中)能够向一个或多个显示装置2510A提供输出。在 一个实施例中,与I/O中枢2507耦合的一个或多个显示装置2510A可以包 括本地显示装置、内部显示装置或嵌入式显示装置。
在一个实施例中,处理子系统2501包括一个或多个并行处理器2512, 所述一个或多个并行处理器经由总线或其他通信链路2513耦合至存储器中 枢2505。通信链路2513可以是任意数量的基于标准的通信链路技术或协议 (诸如但不限于PCI Express)中的一个,也可以是供应方特定的通信接口 或通信结构。在一个实施例中,一个或多个并行处理器2512形成以计算为 中心的并行或向量处理系统,所述系统包括大量处理核和/或处理集群诸如 集成众核(MIC)处理器。在一个实施例中,一个或多个并行处理器2512 形成图形处理子系统,所述图形处理子系统可以向经由I/O中枢2507耦合 的一个或多个显示装置2510A中的一个输出像素。一个或多个并行处理器 2512还可以包括显示控制器和显示接口(未示出)以实现到一个或多个显 示装置2510B的直接连接。
在I/O子系统2511内,系统存储单元2514可以连接至I/O中枢2507 来为计算系统2500提供存储机制。I/O开关2516可以用于提供接口机制以 实现I/O中枢2507和可以集成到平台中的其他部件诸如网络适配器2518 和/或无线网络适配器2519以及可以经由一个或多个插入式装置2520添加 的各种其他装置之间的连接。网络适配器2518可以是以太网适配器或另一 种有线网络适配器。无线网络适配器2519可以包括Wi-Fi、蓝牙、近场通 信(NFC)或包括一个或多个无线无线电部件的其他网络装置中的一个或 多个。
计算系统2500可以包括未显式地示出的其他部件,这些部件包括USB 或其他端口连接件、光存储驱动程序、视频捕获装置等,也可以连接至I/O 中枢2507。图25中将各种部件互连的通信路径可以使用任何合适的协议诸 如基于PCI(外围部件互连)的协议(例如,PCI-Express),或(多个) 任何其他总线或点对点通信接口和/或协议诸如NV-Link高速互连或本领域 中已知的互连协议来实现。
在一个实施例中,一个或多个并行处理器2512并入有为进行图形和视 频处理而优化的电路系统,包括例如视频输出电路系统,并且所述电路系 统构成图形处理单元(GPU)。在另一个实施例中,一个或多个并行处理 器2512并入有为进行通用处理而优化的电路系统,同时保留了本文更详细 描述的基础计算架构。在又一个实施例中,计算系统2500的各部件可以与 一个或多个其他系统元件集成在单个集成电路上。例如,一个或多个并行 处理器2512、存储器中枢2505、(多个)处理器2502和I/O中枢2507可 以集成到芯片上系统(SoC)集成电路中。可替代地,计算系统2500的各 部件可以集成到单个封装中以形成封装中系统(SIP)配置。在其他实施例 中,计算系统2500的各部件的至少一部分可以集成到多芯片模块(MCM) 中,所述多芯片模块可以与其他多芯片模块互连成模块化计算系统。
应当理解,本文所示的计算系统2500是例示性的并且变型和修改是可 能的。连接拓扑可以根据需要进行修改,所述连接拓扑包括桥的数量和安 排、(多个)处理器2502的数量和(多个)并行处理器2512的数量。例 如,在一些实施例中,系统存储器2504直接而不是通过桥连接至(多个) 处理器2502,而其他装置经由存储器中枢2505和(多个)处理器2502与 系统存储器2504进行通信。在其他替代性拓扑中,(多个)并行处理器2512 连接至I/O中枢2507或直接连接至一个或多个处理器2502中的一个,而 不是连接至存储器中枢2505。在其他实施例中,I/O中枢2507和存储器中 枢2505可以集成到单个芯片中。一些实施例可以包括经由多个插座附接的 (多个)处理器2502的两个或更多个组,这两个或更多个组可以与(多个) 并行处理器2512的两个或更多个实例耦合。
本文示出的一些特定部件是可选的并且可能不被包括在计算系统2500 的所有实施方式中。例如,可以支持任意数量的插入式卡或外围装置,或 者可以省去一些部件。此外,一些架构可以使用不同的术语来描述与图25 所示类似的部件。例如,在一些架构中,存储器中枢2505可以被称为北桥, 而I/O中枢2507可以被称为南桥。
图26A展示了根据实施例的并行处理器2600。并行处理器2600的各 种部件可以使用诸如可编程处理器、专用集成电路(ASIC)或现场可编程 门阵列(FPGA)的一个或多个集成电路装置来实现。根据实施例,所展示 的并行处理器2600是图25所示的一个或多个并行处理器26512的变体。
在一个实施例中,并行处理器2600包括并行处理单元2602。所述并 行处理单元包括I/O单元2604,所述I/O单元实现与其他装置包括并行处 理单元2602的其他实例的通信。I/O单元2604可以直接连接至其他装置。 在一个实施例中,I/O单元2604经由诸如存储器中枢2505的中枢或开关接 口的使用来与其他装置连接。存储器中枢2505与I/O单元2604之间的连 接形成通信链路2513。在并行处理单元2602内,I/O单元2604与主机接 口2606和存储器交叉开关2616连接,其中,主机接口2606接收涉及执行 处理操作的命令,并且存储器交叉开关2616接收涉及执行存储器操作的命 令。
当主机接口2606经由I/O单元2604接收命令缓冲器时,主机接口2606 可以将用于执行这些命令的工作操作引导到前端2608。在一个实施例中, 前端2608与调度器2610耦合,所述调度器被配置成向处理集群阵列2612 分发命令或其他工作项目。在一个实施例中,调度器2610确保在向处理集 群阵列2612的处理集群分发任务之前,处理集群阵列2612被正确地配置 并且处于有效状态。在一个实施例中,调度器2610经由在微控制器上执行的固件逻辑来实现。微控制器实现的调度器2610可被配置成以粗细粒度执 行复杂的调度和工作分配操作,从而实现在处理阵列2612上执行的线程的 快速抢占和上下文切换。在一个实施例中,主机软件可以经由多个图形处 理门铃中的一个来证明工作负荷以用于在处理阵列2612上进行调度。所述 工作量然后可以由调度器微控制器内的调度器2610逻辑自动分发在处理阵 列2612中。
处理集群阵列2612可以包括多达“N”个处理集群(例如,集群2614A, 集群2614B,一直到集群2614N)。处理集群阵列2612的每个集群2614A 至2614N均可执行大量并发线程。调度器2610可以使用各种调度和/或工 作分发算法来向处理集群阵列2612的集群2614A至2614N分配工作,这 些算法可以依据每种类型的程序或计算引起的工作负荷而变化。调度可以 由调度器2610动态地处置,或者可以在编译被配置成由处理集群阵列2612 执行的程序逻辑的过程中由编译器逻辑部分地协助。在一个实施例中,处 理集群阵列2612的不同集群2614A至2614N可以被分配用于处理不同类 型的程序或用于执行不同类型的计算。
处理集群阵列2612可以被配置成执行各种类型的并行处理操作。在一 个实施例中,处理集群阵列2612被配置成执行通用并行计算操作。例如, 处理集群阵列2612可以包括用于执行处理任务包括视频和/或音频数据的 过滤、执行建模操作包括物理操作、以及执行数据变换的逻辑。
在一个实施例中,处理集群阵列2612被配置成执行并行图形处理操作。 在其中并行处理器2600被配置成执行图形处理操作的实施例中,处理集群 阵列2612可以包括用于支持此类图形处理操作的执行的附加逻辑,包括但 不限于用于执行纹理操作的纹理采样逻辑以及镶嵌逻辑和其他顶点处理逻 辑。另外,处理集群阵列2612可以被配置成执行与图形处理相关的着色器 程序,诸如但不限于顶点着色器、镶嵌着色器、几何着色器和像素着色器。 并行处理单元2602可以经由I/O单元2604从系统存储器传送数据以进行 处理。在处理期间,可以在处理期间将经传送的数据存储到片上存储器(例 如,并行处理器存储器2622),然后写回到系统存储器。
在一个实施例中,当并行处理单元2602用于执行图形处理时,调度器 2610可以被配置成将处理工作负荷分成大致相等大小的任务,以更好地使 得图形处理操作能够分发到处理集群阵列2612的多个集群2614A至2614N。 在一些实施例中,处理集群阵列2612的各部分可以被配置成执行不同类型 的处理。例如,第一部分可以被配置成执行顶点着色和拓扑生成,第二部 分可以被配置成执行镶嵌和几何着色,第三部分可以被配置成执行像素着色或其他屏幕空间操作,以产生渲染的图像进行显示。由集群2614A至 2614N中的一个或多个产生的中间数据可以存储在缓冲器中以允许中间数 据在集群2614A至2614N之间传输以用于进一步处理。
在操作期间,处理集群阵列2612可以接收将经由调度器2610执行的 处理任务,所述调度器从前端2608接收定义处理任务的命令。对于图形处 理操作,处理任务可以包括要处理的数据例如表面(补片)数据、图元数 据、顶点数据和/或像素数据以及定义如何处理数据的状态参数和命令(例 如,要执行哪个程序)的索引。调度器2610可以被配置成获取对应于任务 的索引或者可以从前端2608接收索引。前端2608可以被配置成确保处理 集群阵列2612在由传入命令缓冲器(例如,批处理缓冲器、入栈缓冲器等) 指定的工作负荷被发起之前被配置成有效状态。
并行处理单元2602的一个或多个实例中的每一个均可与并行处理器 存储器2622耦合。并行处理器存储器2622可以经由存储器交叉开关2616 来访问,所述存储器交叉开关可以从处理集群阵列2612以及I/O单元2604 接收存储器请求。存储器交叉开关2616可以经由存储器接口2618访问并 行处理器存储器2622。存储器接口2618可以包括多个分区单元(例如,分 区单元2620A,分区单元2620B,一直到分区单元2620N),这些分区单 元可以各自耦合至并行处理器存储器2622的一部分(例如,存储器单元)。 在一个实施方式中,分区单元2620A至2620N的数量被配置成等于存储器 单元的数量,使得第一分区单元2620A具有对应的第一存储器单元2624A, 第二分区单元2620B具有对应的存储器单元2624B,以及第N分区单元 2620N具有对应的第N存储器单元2624N。在其他实施例中,分区单元 2620A至2620N的数量可能不等于存储器装置的数量。
在各种实施例中,存储器单元2624A至2624N可以包括各种类型的存 储器装置,包括动态随机存取存储器(DRAM)或图形随机存取存储器, 诸如同步图形随机存取存储器(SGRAM),包括图形双倍数据速率(GDDR) 存储器。在一个实施例中,存储器单元2624A至2624N还可以包括3D堆 叠式存储器,包括但不限于高带宽存储器(HBM)。本领域技术人员将会 理解,存储器单元2624A至2624N的具体实施方式可以变化,并且可以由 各种常规设计之一进行选择。诸如帧缓冲器或纹理映射的渲染目标可存储 在存储器单元2624A至2624N上,从而允许分区单元2620A至2620N并 行地写入每个渲染目标的各部分,以高效地使用并行处理器存储器2622的 可用带宽。在一些实施例中,为了支持利用系统存储器连同本地高速缓存 存储器的统一存储器设计,可以将并行处理器存储器2622的本地实例排除 在外。
在一个实施例中,处理集群阵列2612的集群2614A至2614N中的任 一个可以处理将写入并行处理器存储器2622内的存储器单元2624A至 2624N中的任一个的数据。存储器交叉开关2616可以被配置成将每个集群 2614A至2614N的输出传送到任何分区单元2620A至2620N或另一个集群 2614A至2614N,这可以对所述输出执行附加处理操作。每个集群2614A 至2614N均可通过存储器交叉开关2616与存储器接口2618进行通信以针 对各种外部存储器装置进行读取或写入操作。在一个实施例中,存储器交 叉开关2616可连接至存储器接口2618以与I/O单元2604通信,并且可连 接至并行处理器存储器2622的本地实例,从而使得不同处理集群2614A至 2614N内的处理单元能够与系统存储器或对于并行处理单元2602并非本地 的其他存储器进行通信。在一个实施例中,存储器交叉开关2616可以使用虚拟信道来分离集群2614A至2614N与分区单元2620A至2620N之间的 业务流。
虽然并行处理单元2602的单个实例展示为在并行处理器2600内,但 并行处理单元2602的任意数量的实例也可以被包括在内。例如,可以在单 个插入式卡上提供并行处理单元2602的多个实例,或者可以使多个插入式 卡互连。即使不同实例具有不同的处理核数量、不同的本地并行处理器存 储量和/或其他配置差异,并行处理单元2602的不同实例也可以被配置成交 互操作。例如,以及在一个实施例中,并行处理单元2602的一些实例可以包括相对于其他实例的较高精度的浮点单元。并入有并行处理单元2602或 并行处理器2600的一个或多个实例的系统可以以各种配置和形状因数来实 现,包括但不限于台式计算机、膝上型计算机或手持式个人计算机、服务 器、工作站、游戏控制台和/或嵌入式系统。
图26B是根据实施例的分区系统2620的框图。在一个实施例中,分区 系统2620是图26A的分区单元2620A至2620N中的一个的实例。如图所 示,分区单元2620包括L2高速缓存2621、帧缓冲器接口2625和ROP 2626 (光栅操作单元)。L2高速缓存2621是被配置成执行从存储器交叉开关 2616和ROP 2626所接收的加载和存储操作的读取/写入高速缓存。由L2高速缓存2621向帧缓冲器接口2625输出读取未命中和紧急回写请求以进 行处理。也可以经由帧缓冲器接口2625向帧缓冲器发送更新以用于处理。 在一个实施例中,帧缓冲器接口2625与并行处理器存储器中的存储器单元 中的一个诸如图26的存储器单元2624A至2624N(例如,在并行处理器存 储器2622内)交互。
在图形应用中,ROP 2626是执行诸如模板印刷、z测试、混合等光栅 操作的处理单元。ROP 2626随后输出图形存储器中存储的经处理图形数据。 在一些实施例中,ROP 2626包括压缩逻辑,所述压缩逻辑用于压缩写入存 储器的深度或颜色数据,并对从存储器所读取的深度或颜色数据解压缩。 所述压缩逻辑可以是使用多种压缩算法中的一种或多种的无损压缩逻辑。 由ROP 2626执行的压缩类型可以根据待压缩的数据的统计特性而变化。例如,在一个实施例中,在每个图块的基础上对深度和颜色数据执行Δ色彩 压缩。
在一些实施例中,ROP 2626被包括在每个处理集群(例如,图26的 集群2614A至2614N)内而不是分区单元2620内。在这个实施例中,通过 存储器交叉开关2616而不是像素片段数据来传输对像素数据的读取和写入 请求。经处理图形数据可以显示在显示装置诸如图25的一个或多个显示装 置2510中的一个上,由(多个)处理器2502路由以用于进一步处理,或 者由图26A的并行处理器2600内的处理实体中的一个路由以用于进一步处 理。
图26C是根据实施例的并行处理单元内的处理集群2614的框图。在一 个实施例中,处理集群是图26的处理集群2614A至2614N中的一个的实 例。处理集群2614可以被配置成并行地执行多个线程,其中,术语“线程” 是指在特定输入数据集上执行的特定程序的实例。在一些实施例中,使用 单指令多数据(SIMD)指令发布技术来支持大量线程的并行执行,而无需 提供多个独立的指令单元。在其他实施例中,使用单指令多线程(SIMT) 技术来使用被配置成向处理集群的每一个内的一组处理引擎发出指令的公 共指令单元来支持大量大致同步线程的并行执行。与所有处理引擎通常执 行相同指令的SIMD执行机制不同,SIMT执行允许不同线程更容易地遵循 穿过给定线程程序的发散执行路径。本领域技术人员将会理解,SIMD处理 机制表示SIMT处理机制的功能子集。
处理集群2614的操作可以经由向SIMT并行处理器分发处理任务的流 水线管理器2632来控制。流水线管理器2632从图26的调度器2610接收 指令并且经由图形多处理器2634和/或纹理单元2636来管理那些指令的执 行。所展示的图形多处理器2634是SIMT并行处理器的示例性实例。然而, 不同架构的各种类型的SIMT并行处理器可以被包括在处理集群2614内。 图形多处理器2634的一个或多个实例可以被包括在处理集群2614内。图 形多处理器2634可以处理数据,并且数据交叉开关2640可以用于将经处 理数据分配到包括其他着色单元的多个可能目的地中的一个。流水线管理 器2632可以通过为将经由数据交叉开关2640分发的数据指定目的地来促 进经处理数据的分发。
处理集群2614内的每个图形多处理器2634均可包括相同的功能执行 逻辑组(例如,算术逻辑单元、加载存储单元等)。功能执行逻辑可以通 过流水线方式进行配置,其中,可以在完成先前的指令之前发出新的指令。 功能执行逻辑支持各种运算,包括整数和浮点算数、比较运算、布尔运算、 位移位和各种代数函数的计算。在一个实施例中,可以利用相同的功能单 元硬件来执行不同的操作,并且可以存在功能单元的任意组合。
传输到处理集群2614的指令构成线程。在一组并行处理引擎上执行的 一组线程是线程组。线程组在不同的输入数据上执行相同的程序。线程组 内的每个线程均可被分配到图形多处理器2634内的不同处理引擎。线程组 可以包括比图形多处理器2634内的处理引擎的数量更少的线程。当线程组 包括比处理引擎的数量更少的线程时,处理引擎中的一个或多个处理引擎 可能在处理所述线程组的周期期间空闲。线程组还可以包括比图形多处理 器2634内的处理引擎的数量更多的线程。当线程组包括比图形多处理器 2634内的处理引擎的数量更多的线程时,可以在连续的时钟周期上执行处 理。在一个实施例中,可以在图形多处理器2634上同时执行多个线程组。
在一个实施例中,图形多处理器2634包括用于执行加载和存储操作的 内部高速缓存存储器。在一个实施例中,图形多处理器2634可以放弃内部 高速缓存而是在处理集群2614内使用高速缓存存储器(例如,L1高速缓 存308)。每个图形多处理器2634还可以访问在所有处理集群2614之间共 享的分区单元(例如,图26的分区单元2620A至2620N)内的L2高速缓 存,并且可以用于在线程之间传送数据。图形多处理器2634还可以访问片 外全局存储器,所述片外全局存储器可以包括本地并行处理器存储器和/或 系统存储器中的一个或多个。并行处理单元2602外部的任何存储器可以用 作全局存储器。其中处理集群2614包括图形多处理器2634的多个实例的 实施例可以共享可以在L1高速缓存308中存储的公共指令和数据。
每个处理集群2614均可包括被配置成将虚拟地址映射到物理地址的 MMU 2645(存储器管理单元)。在其他实施例中,MMU 2645中的一个或 多个实例可以驻留在图26的存储器接口2618内。MMU 2645包括用于将 虚拟地址映射到图块的物理地址(更多地提及分块)和可选地高速缓存行 索引的一组页表条目(PTE)。MMU 2645可以包括可以驻留在图形多处理 器2634或L1高速缓存或处理集群2614内的地址转换后备缓冲器(TLB) 或高速缓存。对物理地址进行处理以分发表面数据访问局部性以实现分区 单元之间的高效请求交错。可以使用高速缓存行索引来确定对高速缓存行 的请求是命中还是未命中。
在图形和计算应用中,处理集群2614可以被配置成使得每个图形多处 理器2634均耦合至纹理单元2636以执行纹理映射操作,例如确定纹理样 本位置、读取纹理数据和过滤纹理数据。纹理数据是从内部纹理L1高速缓 存(未示出)或者在一些实施例中从图形多处理器2634内的L1高速缓存 读取,并且是根据需要从L2高速缓存、本地并行处理器存储器或系统存储 器获取。每个图形多处理器2634向数据交叉开关2640输出经处理任务以 向另一个处理集群2614提供经处理任务以用于进一步处理或经由存储器交 叉开关2616在L2高速缓存、本地并行处理器存储器或系统存储器中存储 经处理任务。preROP 2642(预先光栅操作单元)被配置成从图形多处理器 2634接收数据,将数据引导到ROP单元,这些ROP单元可以如本文所述 的那样用分区单元(例如,图26的分区单元2620A至2620N)定位。preROP2642单元可以对颜色混合进行优化、组织像素颜色数据并执行地址转换。
应当理解,本文所述的核架构是例示性的并且变型和修改是可能的。 例如图形多处理器2634、纹理单元2636、preROP 2642等任意数量的处理 单元可以被包括在处理集群2614内。此外,虽然仅示出一个处理集群2614, 但如本文所述的并行处理单元可以包括处理集群2614的任意数量的实例。 在一个实施例中,每个处理集群2614均可被配置成使用单独的和不同的处 理单元、L1高速缓存等来独立于其他处理集群2614而操作。
图26D示出了根据一个实施例的图形多处理器2634。在这样的实施例 中,图形多处理器2634与处理集群2614的流水线管理器2632耦合。图形 多处理器2634具有执行流水线,所述执行流水线包括但不限于指令高速缓 存2652、指令单元2654、地址映射单元2656、寄存器堆2658、一个或多 个通用图形处理单元(GPGPU)核2662和一个或多个加载/存储单元2666。 GPGPU核2662和加载/存储单元2666经由存储器和高速缓存互连2668与 高速缓存存储器2672和共享存储器2670耦合。
在一个实施例中,指令高速缓存2652从流水线管理器2632接收要执 行的指令流。将这些指令高速缓存在指令高速缓存2652中并分派用于由指 令单元2654执行。指令单元2654可以将指令作为线程组(例如,经线) 进行分派,线程组的每个线程均被分配到GPGPU核2662内的不同执行单 元。指令可以通过在统一地址空间内指定地址来访问本地、共享或全局地 址空间中的任一个。地址映射单元2656可以用于将统一地址空间中的地址 转换为可由加载/存储单元2666访问的不同存储器地址。
寄存器堆2658为图形多处理器324的功能单元提供一组寄存器。寄存 器堆2658为连接至图形多处理器324的功能单元(例如,GPGPU核2662、 加载/存储单元2666)的数据路径的操作数提供临时存储。在一个实施例中, 寄存器堆2658在功能单元中的每一个之间进行划分,使得每个功能单元均 被分配寄存器文件2658的专用部分。在一个实施例中,寄存器堆2658在 正由图形多处理器324执行的不同经线之间进行划分。
GPGPU核2662可以各自包括用于执行图形多处理器324的指令的浮 点单元(FPU)和/或整数算数逻辑单元(ALU)。根据实施例,GPGPU核 2662的架构可以类似,也可以不同。例如,以及在一个实施例中,GPGPU 核2662的第一部分包括单精度FPU和整数ALU,而GPGPU核的第二部 分包括双精度FPU。在一个实施例中,FPU可以实现IEEE 754-2008浮点 算数标准或启用可变精度浮点算数。另外,图形多处理器324还可以包括 用于执行诸如复制矩形或像素混合操作的特定功能的一个或多个固定功能 或特殊功能单元。在一个实施例中,GPGPU核中的一个或多个还可以包含 固定或特殊功能逻辑。
在一个实施例中,GPGPU核2662包括能够对多组数据执行单个指令 的SIMD逻辑。在一个实施例中,GPGPU核2662可以物理地执行SIMD4、 SIMD8和SIMD16指令,并且逻辑地执行SIMD1、SIMD2和SIMD32指令。 用于GPGPU核的SIMD指令可以在编译时由着色器编译器生成,或者在执 行为单个程序多数据(SPMD)或SIMT架构编写和编译的程序时自动生成。 为SIMT执行模型配置的程序的多个线程可以经由单个SIMD指令执行。 例如并且在一个实施例中,执行相同或相似操作的八个SIMT线程可以经 由单个SIMD8逻辑单元并行执行。
存储器和高速缓存互连2668是互连网络,所述互连网络将图形多处理 器324的功能单元中的每一个连接至寄存器堆2658和共享存储器2670。在 一个实施例中,存储器和高速缓存互连2668是允许加载/存储单元2666在 共享存储器2670与寄存器堆2658之间实现加载和存储操作的交叉开关互 连。寄存器堆2658可以以与GPGPU核2662相同的频率操作,因此GPGPU 核2662与寄存器堆2658之间的数据传送具有非常短的等待时间。共享存 储器2670可以用于实现在图形多处理器2634内的功能单元上执行的线程 之间的通信。例如,高速缓存存储器2672可以用作数据高速缓存,以高速 缓存在功能单元与纹理单元2636之间通信的纹理数据。共享存储器2670 也可以用作经高速缓存的受管理的程序。除了在高速缓存存储器2672内存 储的经自动高速缓存的数据之外,在GPGPU核2662上执行的线程还可以在共享存储器内以编程方式存储数据。
图27A至图27B展示了根据实施例的附加图形多处理器。所展示的图 形多处理器2725、2750是图26C的图形多处理器2634的变体。所展示的 图形多处理器2725、2750可以被配置成能够同时执行大量执行线程的流式 多处理器(SM)。
图27A展示了根据附加实施例的图形多处理器2725。图形多处理器 2725包括相对于图26D的图形多处理器2634的执行资源单元的多个附加 实例。例如,图形多处理器2725可以包括指令单元2732A至2732B、寄存 器堆2734A至2734B和(多个)纹理单元2744A至2744B的多个实例。图 形多处理器2725还包括多组图形或计算执行单元(例如,GPGPU核2736A 至2736B、GPGPU核2737A至2737B、GPGPU核2738A至2738B)和多 组加载/存储单元2740A至2740B。在一个实施例中,执行资源单元具有公 共指令高速缓存2730、纹理和/或数据高速缓存存储器2742和共享存储器 2746。
各种部件可以经由互连结构2727进行通信。在一个实施例中,互连结 构2727包括一个或多个交叉开关,所述一个或多个交叉开关用于实现图形 多处理器2725的各种部件之间的通信。在一个实施例中,互连结构2727 是独立的高速网络结构层,图形多处理器2725的每个部件都堆叠在所述分 离的高速网络结构层上。图形多处理器2725的部件经由互连结构2727与 远程部件通信。例如,GPGPU核2736A至2736B、2737A至2737B和2778A 至2738B均可以经由互连结构2727与共享存储器2746通信。互连结构2727 可以对图形多处理器2725内的通信进行仲裁以确保部件之间的公平带宽分 配。
图27B展示了根据附加实施例的图形多处理器2750。如图26D和图 27A所示,图形处理器包括多组执行资源2756A至2756D,其中,每组执 行资源均包括多个指令单元、寄存器堆、GPGPU核和加载存储单元。执行 资源2756A至2756D可以与(多个)纹理单元2760A至2760D一起工作 以进行纹理操作,同时共享指令高速缓存2754和共享存储器2762。在一个实施例中,执行资源2756A至2756D可以共享指令高速缓存2754和共享 存储器2762以及纹理和/或数据高速缓存存储器2758A至2758B的多个实 例。各种部件可以经由与图27A的互连结构2727类似的互连结构2752进 行通信。
本领域的技术人员将理解,图1、图26A至图26D和图27A至图27B 中所述的架构是描述性的,而不限制本发明的实施例的范围。因此,本文 所述的技术可以在任何适当配置的处理单元上实现,包括但不限于:一个 或多个移动应用处理器;一个或多个台式计算机或服务器中央处理单元 (CPU),包括多核CPU;一个或多个并行处理单元诸如图2的并行处理 单元202;以及一个或多个图形处理器或专用处理单元,而不脱离本文所述 的实施例的范围。
在一些实施例中,如本文所述的并行处理器或GPGPU通信地耦合至 主机/处理器核以加快图形操作、机器学习操作、模式分析操作和各种通用 GPU(GPGPU)功能。GPU可以通过总线或其他互连(例如,诸如PCIe 或NVLink的高速互连)通信地耦合至主机处理器/核。在其他实施例中, GPU可以与核一样集成在相同的封装或芯片上并且通过内部处理器总线/ 互连(即,在封装或芯片内部)通信地耦合至所述核。不管GPU连接的方 式如何,处理器核都可以以工作描述符中包含的命令/指令序列的形式向 GPU分配工作。然后,GPU使用专用电路系统/逻辑来高效地处理这些命令 /指令。
用于GPU到主机处理器互连的技术
图28A展示了其中多个GPU 2810至2813通过高速链路2840至2843 (例如,总线、点对点互连等)通信地耦合至多个多核处理器2805至2806 的示例性架构。在一个实施例中,高速链路2840至2843支持4Gb/s、30Gb/s、 80GB/s或更高的通信吞吐量,这取决于实施方式。可以使用各种互连协议, 包括但不限于PCIe 4.0或5.0和NVLink 2.0。然而,本发明的基本原理不 限于任何特定的通信协议或吞吐量。
此外,在一个实施例中,GPU 2810至2813中的两个或更多个通过高 速链路2844至2845互连,这可以使用与用于高速链路2840至2843的协 议/链路相同或不同的协议/链路来实现。类似地,多核处理器2805至2806 中的两个或更多个可以通过高速链路2833连接,所述高速链路可以是以20 Gb/s、30Gb/s、120GB/s或更高的速度运行的对称多处理器(SMP)总线。 可替代地,图28A中所示的各种系统部件之间的所有通信均可使用相同的 协议/链路(例如,通过公共互连结构)来完成。然而,如所提及的,本发 明的基本原理不限于任何特定类型的互连技术。
在一个实施例中,每个多核处理器2805至2806分别经由存储器互连 2830至2831通信地耦合至处理器存储器2801至2802,并且每个GPU 2810 至2813分别通过GPU存储器互连2850至2853通信地耦合至GPU存储器 2820至2823。存储器互连2830至2831和2850至2853可以利用相同或不 同的存储器访问技术。以示例而不是限制的方式,处理器存储器2801至2802和GPU存储器2820至2823可以是诸如动态随机存取存储器(DRAM) (包括堆叠式DRAM)、图形DDR SDRAM(GDDR)(例如,GDDR5、 GDDR6)或高带宽存储器(HBM)的易失性存储器,和/或可以是诸如3D XPoint或Nano-Ram的非易失性存储器。在一个实施例中,存储器的某个 部分可以是易失性存储器,而另一个部分可以是非易失性存储器(例如, 使用两级存储器(2LM)层级结构)。
如下所述,尽管各种处理器2805至2806和GPU 2810至2813均可分 别物理地耦合至特定存储器2801至2802、2820至2823,但可以实现统一 存储器架构,其中,相同的虚拟系统地址空间(也称为“有效地址”空间) 分发在所有各种物理存储器中。例如,处理器存储器2801至2802可以各 自包括64GB的系统存储器地址空间,并且GPU存储器2820至2823可以各自包括32Gb的系统存储器地址空间(导致在所述示例中产生总共256 GB的可寻址存储空间)。
图28B展示了根据一个实施例的多核处理器2807与图形加速模块 2846之间的互连的附加细节。图形加速模块2846可以包括集成在经由高速 链路2840耦合至处理器2807的线卡上的一个或多个GPU芯片。可替代地, 图形加速模块2846可以与处理器2807一样集成在相同的封装或芯片上。
所展示的处理器2807包括多个核2860A至2860D,这些核各自具有转 换后备缓冲器2861A至2861D和一个或多个高速缓存2862A至2862D。这 些核可以包括用于执行指令和处理未展示的数据以避免模糊本发明的基本 原理的各种其他部件(例如,指令获取单元、分支预测单元、解码器、执 行单元、重排序缓冲器等)。高速缓存2862A至2862D可以包括1级(L1) 和2级(L2)高速缓存。此外,一个或多个共享高速缓存2826可以被包括 在高速缓存层级结构中并由各组核2860A至2860D共享。例如,处理器2807 的一个实施例包括24个核,这些核各自具有自己的L1高速缓存、12个共 享L2高速缓存和12个共享L3高速缓存。在这个实施例中,L2高速缓存 和L3高速缓存中的一个由两个相邻核共享。处理器2807和图形加速器集 成模块2846与系统存储器2841连接,所述系统存储器可以包括处理器存 储器2801至2802。
通过一致性总线2864经由核间通信来为各种高速缓存2862A至2862D、 2856和系统存储器2841中存储的数据和指令保持一致性。例如,每个高速 缓存均可具有与其关联的高速缓存一致性逻辑/电路系统,以响应于所检测 的对特定高速缓存行的读取或写入而通过一致性总线2864进行通信。在一 个实施方式中,通过一致性总线2864实施方式高速缓存窥探协议以窥探高 速缓存访问。本领域技术人员可以很好理解高速缓存窥探/一致性技术,以 避免模糊本发明的基本原理,这里不再详细描述。
在一个实施例中,代理电路2825将图形加速模块2846通信地耦合至 一致性总线2864,从而允许图形加速模块2846作为核的对等体参与缓存一 致性协议。具体地讲,接口2835通过高速链路2840(例如,PCIe总线、 NVLink等)向代理电路2825提供连接性,并且接口2837将图形加速模块 2846连接至链路2840。
在一个实施方式中,加速器集成电路2836代表图形加速模块2846的 多个图形处理引擎2831、2832、N提供高速缓存管理、存储器访问、上下 文管理和中断管理服务。图形处理引擎2831、2832、N可以各自包括单独 的图形处理单元(GPU)。可替代地,图形处理引擎2831、2832、N可以 在GPU内包括不同类型的图形处理引擎诸如图形执行单元、媒体处理引擎 (例如,视频编码器/解码器)、采样器和块图像传输引擎。换句话讲,图 形加速模块可以是具有多个图形处理引擎2831至2832、N的GPU,或图 形处理引擎2831至2832、N可以是集成在公共包、线卡或芯片上的单独 GPU。
在一个实施例中,加速器集成电路2836包括存储器管理单元(MMU) 2839,所述存储器管理单元用于执行诸如虚拟到物理存储器转换(也称为 有效到实际存储器转换)的各种存储器管理功能和用于访问系统存储器 2841的存储器访问协议。MMU 2839还可以包括用于高速缓存虚拟/有效到 物理/实际地址转换的转换后备缓冲器(TLB)(未示出)。在一个实施方 式中,高速缓存2838存储用于由图形处理引擎2831至2832、N高效访问 的命令和数据。在一个实施例中,使高速缓存2838和图形存储器2833至 2834、N中存储的数据与核高速缓存2862A至2862D、2856和系统存储器 2811保持一致。如所提及的,这可以经由代理电路2825来完成,所述代理 电路代表高速缓存2838和存储器2833至2834、N参与高速缓存一致性机 制(例如,向高速缓存2838发送与处理器高速缓存2862A至2862D、2856 上的高速缓存行的修改/访问相关的更新并从高速缓存2838接收更新)。
一组寄存器2845存储由图形处理引擎2831至2832、N执行的线程的 上下文数据,并且上下文管理电路2848管理线程上下文。例如,上下文管 理电路2848可以执行保存和恢复操作以在上下文切换期间保存和恢复各种 线程的上下文(例如,其中,第一线程被保存并且第二线程被存储,使得 第二线程可以由图形处理引擎执行)。例如,在上下文切换时,上下文管 理电路2848可以将当前寄存器值存储到存储器中的指定区域(例如,由上 下文指针标识)。所述上下文管理电路可以在返回上下文时恢复寄存器值。 在一个实施例中,中断管理电路2847接收并处理从系统装置所接收的中断。
在一个实施方式中,由MMU 2839将来自图形处理引擎2831的虚拟/ 有效地址转换为系统存储器2811中的实际/物理地址。加速器集成电路2836 的一个实施例支持多个(例如,4个、8个、16个)图形加速器模块2846 和/或其他加速器装置。图形加速器模块2846可以专用于在处理器2807上 执行的单个应用,或者可以在多个应用之间共享。在一个实施例中,呈现 虚拟图形执行环境,其中,图形处理引擎2831至2832、N的资源与多个应 用或虚拟机(VM)共享。资源可以被细分为基于与VM和/或应用相关联 的处理要求和优先级而分配给不同的VM和/或应用的“分片”。
因此,加速器集成电路充当图形加速模块2846的系统的桥,并提供地 址转换和系统存储器高速缓存服务。此外,加速器集成电路2836可以为主 机处理器提供虚拟化设施以管理图形处理引擎、中断和存储器管理的虚拟 化。
由于图形处理引擎2831至2832、N的硬件资源显式地地映射到由主机 处理器2807看到的实际地址空间,因此任何主处理器都可以使用有效地址 值来为这些资源直接寻址。在一个实施例中,加速器集成电路2836的一个 功能是图形处理引擎2831至2832、N的物理分离,使得所述图形处理引擎 作为独立单元出现在系统上。
如所提及的,在所展示的实施例中,一个或多个图形存储器2833至 2834、M分别耦合至图形处理引擎2831至2832、N中的每一个。图形存 储器2833至2834、M存储由图形处理引擎2831至2832、N中的每一者处 理的指令和数据。图形存储器2833至2834、M可以是易失性存储器,诸 如DRAM(包括堆叠的DRAM)、GDDR存储器(例如,GDDR5、GDDR6) 或HBM,和/或可以是诸如3D XPoint或Nano-Ram的非易失性存储器。
在一个实施例中,为了减少链路2840上的数据流量,使用偏置技术来 确保图形存储器2833至2834、M中存储的数据是图形处理引擎2831至2832、 N最频繁使用,并且核2860A至2860D优选不使用(至少不频繁使用)的 数据。类似地,偏置机制试图使核(并且优选地不是图形处理引擎2831至 2832、N)所需的数据保持在核和系统存储器2811的高速缓存2862A至 2862D、2856内。
图28C展示了其中加速器集成电路2836集成在处理器2807内的另一 个实施例。在这个实施例中,图形处理引擎2831至2832、N经由接口2837 和接口2835来直接通过高速链路2840与加速器集成电路2836进行通信(这 也可以利用任何形式的总线或接口协议)。加速器集成电路2836可以执行 与关于图28B所描述的操作相同的操作,但考虑到其与一致性总线2862和 高速缓存2862A至2862D、2826紧密接近,可能以较高的吞吐量进行操作。
一个实施例支持不同的编程模型,包括专用进程编程模型(不具有图 形加速模块虚拟化)和共享编程模型(具有虚拟化)。共享编程模型可以 包括由加速器集成电路2836控制的编程模型和由图形加速模块2846控制 的编程模型。
在专用进程模型的一个实施例中,图形处理引擎2831至2832、N在单 个操作系统下专用于单个应用或进程。单个应用可以将其他应用请求集中 到图形引擎2831至2832、N,从而在VM/分区内提供虚拟化。
在专用进程编程模型中,图形处理引擎2831至2832、N可以由多个 VM/应用分区共享。共享模型需要系统管理程序,所述系统管理程序用于 将图形处理引擎2831至2832、N虚拟化,以允许由每个操作系统进行访问。 对于没有管理程序的单分区系统,图形处理引擎2831至2832、N由操作系 统拥有。在这两种情况下,操作系统都可以将图形处理引擎2831至2832、 N虚拟化以提供对每个进程或应用的访问。
对于共享编程模型,图形加速模块2846或单独图形处理引擎2831至 2832、N使用进程句柄来选择进程要素。在一个实施例中,进程要素被存 储在系统存储器2811中并且可使用本文所述的有效地址到实际地址转换技 术来寻址。所述进程句柄可以是在向图形处理引擎2831至2832、N注册其 上下文(即,调用系统软件以向进程要素链接表添加进程要素)时向主机 进程提供特定于实施方式的值。所述进程句柄的低16位可以是进程要素链接表内的进程要素的偏移量。
图28D展示了示例性加速器集成分片2890。如本文所用,“分片”包 括加速器集成电路2836的处理资源的指定部分。系统存储器2811内的应 用有效地址空间2882存储进程要素2883。在一个实施例中,进程要素2883 响应于来自在处理器2807上执行的应用2880的GPU调用2881而被存储。 进程要素2883包含相应应用2880的处理状态。进程要素2883中包含的工 作描述符(WD)2884可以是应用所请求的单个作业,或者可以包含指向 作业队列的指针。在后一种情况下,WD 2884是指向应用地址空间2882中 的作业请求队列的指针。
图形加速模块2846和/或单独图形处理引擎2831至2832、N可以由系 统中的全部或部分进程共享。本发明的实施例包括用于建立处理状态并向 图形加速模块2846发送WD2884以在虚拟环境中开始作业的基础结构。
在一个实施方式中,专用进程编程模型是特定于实施方式的。在这个 模型中,单个进程拥有图形加速模块2846或单独的图形处理引擎2831。由 于图形加速模块2846由单个进程拥有,因此管理程序初始化加速器集成电 路2836以获得所属分区,并且操作系统在图形加速模块2846被分配时初 始化加速器集成电路2836以获取所属进程。
在操作中,加速器集成分片2890中的WD获取单元2891获取下一个 WD 2884,所述WD包括将由图形加速模块2846的图形处理引擎之一进行 的工作的指示。如图所示,来自WD2884的数据可以被存储在寄存器2845 中并由MMU 2839、中断管理电路2847和/或上下文管理电路2846使用。 例如,MMU 2839的一个实施例包括用于访问OS虚拟地址空间2885内的段/页表2886的段/页查询电路系统。中断管理电路2847可以处理从图形加 速模块2846所接收的中断事件2892。当执行图形操作时,由图形处理引擎 2831至2832、N生成的有效地址2893由MMU 2839转换为实际地址。
在一个实施例中,针对每个图形处理引擎2831至2832、N和/或图形 加速模块2846复制同一组寄存器2845,并且可以由管理程序或操作系统初 始化这一组寄存器。这些复制的寄存器中的每一个均可被包括在加速器集 成分片2890中。表1中示出了可以由管理程序初始化的示例性寄存器。
表1-管理程序初始化寄存器
表2中示出了可以由操作系统初始化的示例性寄存器。
表2-操作系统初始化寄存器
1 进程和线程标识
2 有效地址(EA)上下文保存/恢复指针
3 虚拟地址(VA)加速器利用记录指针
4 虚拟地址(VA)存储段表指针
5 授权掩码
6 工作描述符
在一个实施例中,每个WD 2884特定于特定的图形加速模块2846和/ 或图形处理引擎2831至2832、N。所述WD包含图形处理引擎2831至2832、 N完成其工作所需的所有信息,或者所述WD可以是指向应用已经建立了 要完成的工作命令队列的存储器位置的指针。
图28E展示了共享模型的一个实施例的附加细节。所述实施例包括其 中存储了进程要素列表2899的管理程序实际地址空间2898。管理程序实际 地址空间2898可经由管理程序2896来访问,所述管理程序将操作系统2895 的图形加速模块引擎虚拟化。
共享编程模型允许来自系统中的全部或部分分区的全部或部分进程使 用图形加速模块2846。有两种编程模型,其中,图形加速模块2846由多个 进程和分区共享:时间分片共享和图形直接共享。
在这个模型中,系统管理程序2896拥有图形加速模块2846并且使其 功能对所有操作系统2895可用。为了使图形加速模块2846支持系统管理 程序2896的虚拟化,图形加速模块2846可以遵循以下要求:
1)应用的作业请求必须是自主的(即,不需要维持作业之间的状态), 或者图形加速模块2846必须提供上下文保存和恢复机制。2)图形加速模 块2846保证在指定时间量内完成应用作业请求,包括任何转换错误,或者 图形加速模块2846提供抢占作业处理的能力。3)当以直接共享编程模型 操作时,必须保证进程中图形加速模块2846的公平性。
在一个实施例中,对于共享模型,需要应用2880来利用图形加速模块 2846类型、工作描述符(WD)、授权掩码寄存器(AMR)值以及上下文 保存/恢复区域指针(CSRP)来进行操作系统2895系统调用。图形加速模 块2846类型描述了系统调用的目标加速功能。图形加速模块2846类型可 以是特定于系统的值。所述WD专门针对图形加速模块2846来格式化,并且可以呈以下形式:图形加速模块2846命令;指向用户定义结构的有效地 址指针;指向命令队列的有效地址指针;或用于描述将由图形加速模块2846 进行的工作的任何其他数据结构。在一个实施例中,AMR值是用于当前进 程的AMR状态。传递给操作系统的值与设置AMR的应用类似。如果加速 器集成电路2836和图形加速模块2846的实施方式不支持用户授权掩码覆 盖寄存器(UAMOR),则操作系统可以在管理程序调用中传递AMR之前 向AMR值应用当前UAMOR值。在将AMR置于进程要素2883之前,管 理程序2896可以可选地应用当前授权掩码覆盖寄存器(AMOR)值。在一 个实施例中,CSRP是包含应用地址空间2882中供图形加速模块2846保存 和恢复上下文状态的区域的有效地址的寄存器2845中的一个。如果不需要 在作业之间保存状态或当作业被抢占时,这个指针是可选的。所述上下文 保存/恢复区域可以是插接的系统存储器。
在接收到系统调用时,操作系统2895可以验证应用2880已注册并被 授权使用图形加速模块2846。操作系统2895然后利用表3中所示的信息来 调用管理程序2896。
表3-操作系统对管理程序的调用参数
在接收到管理程序调用时,管理程序2896可以验证操作系统2895已 注册并被授权使用图形加速模块2846。管理程序2896然后将进程要素2883 针对对应图形加速模块2846类型放入进程要素链接表中。进程要素可以包 含表4中所示的信息。
表4-进程要素信息
1 工作描述符(WD)
2 授权掩码寄存器(AMR)值(可能已掩蔽)
3 有效地址(EA)上下文保存/恢复区域指针(CSRP)
4 进程ID(PID)和可选的线程ID(TID)
5 虚拟地址(VA)加速器利用记录指针(AURP)
6 存储段表指针(SSTP)的虚拟地址
7 逻辑中断服务号(LISN)
8 中断向量表,从管理程序调用参数导出
9 状态寄存器(SR)值
10 逻辑分区ID(LPID)
11 实际地址(RA)管理程序加速器利用记录指针
12 存储描述符寄存器(SDR)
在一个实施例中,管理程序将寄存器2845的多个加速器集成分片2890 初始化。
如图28F所展示,本发明的一个实施例采用可经由用于访问物理处理 器存储器2801至2802和GPU存储器2820至2823的公共虚拟存储器地址 空间来寻址的统一存储器。在这个实施方式中,在GPU 2810至2813上执 行的操作利用相同的虚拟/有效存储器地址空间来访问处理器存储器2801 至2802,反之亦然,由此简化可编程性。在一个实施例中,将虚拟/有效地 址空间的第一部分分配给处理器存储器2801,将第二部分分配给第二处理 器存储器2802,将第三部分分配给GPU存储器2820,以此类推。整个虚 拟/有效存储器空间(有时称为有效地址空间)由此被分发在处理器存储器 2801至2802和GPU存储器2820至2823中的每一个上,从而允许任何处 理器或GPU访问具有映射到所述存储器的虚拟地址的任何物理存储器。
在一个实施例中,MMU 2839A至2839E中的一个或多个内的偏置/一 致性管理电路系统2894A至2894E确保了主机处理器(例如,2805)与GPU 2810至2813的高速缓存之间的高速缓存一致性,以及指示其中应当存储某 些类型的数据的物理存储器的偏置技术。尽管在图28F中展示了偏置/一致 性管理电路系统2894A至2894E的多个实例,但偏置/一致性电路系统也可 以在一个或多个主机处理器2805的MMU内和/或在加速器集成电路2836 内实现。
一个实施例允许将GPU附接的存储器2820至2823映射为系统存储器 的一部分,并使用共享虚拟存储器(SVM)技术进行访问,但不会遭受与 全系统高速缓存一致性相关的典型性能缺陷。GPU附接的存储器2820至 2823作为系统存储器来访问的能力不会造成繁重的高速缓存一致性开销, 这为GPU卸载提供了有利的操作环境。这种安排允许主机处理器2805软 件设置操作数并访问计算结果,而不具有传统I/O DMA数据拷贝的开销。 这些传统拷贝涉及驱动程序调用、中断和存储器映射I/O(MMIO)访问, 这些访问相对于简单内存访问来说都是低效的。同时,在不具有高速缓存 一致性开销的情况下访问GPU附接存储器2820至2823的能力对于卸载计 算的执行时间可能是关键的。例如,在具有大量流式写入存储器业务的情 况下,高速缓存一致性开销可以显著降低由GPU 2810至2813看到的有效 写入带宽。操作数设置的效率、结果访问的效率以及GPU计算的效率都在 确定GPU卸载的有效性方面发挥着重要作用。
在一个实施方式中,GPU偏置与主机处理器偏置之间的选择由偏置跟 踪器数据结构驱动。例如,可以使用偏置表,所述偏置表可以是每个GPU 附接存储器页包括1或2个位的页粒度结构(即,以存储器页的粒度来控 制)。偏置表可以在一个或多个GPU附接存储器2820至2823的被盗存储 器范围内实现,在GPU 2810至2813中具有或不具有偏置高速缓存(例如, 以高速缓存频繁/最近使用的偏置表的条目)。可替代地,整个偏置表均可 保持在GPU内。
在一个实施方式中,在实际访问GPU存储器之前访问与对GPU附接 存储器2820至2823的每次访问相关联的偏置表条目,从而使得以下操作。 首先,将来自GPU 2810至2813的在GPU偏置中发现其页的本地请求直接 转发到对应的GPU存储器2820至2823。将来自GPU的在主机偏置中发现 其页的本地请求转发给处理器2805(例如,如上所述通过高速链路)。在 一个实施例中,来自处理器2805的在主机处理器偏置中发现所请求的页的 请求完成了像正常存储器读取那样的请求。可替代地,可以将针对GPU偏 置页的请求转发给GPU 2810至2813。如果GPU当前未使用所述页,则 GPU可以将所述页转换为主机处理器偏置。
页的偏置状态可以通过基于软件的机制、基于硬件辅助软件的机制, 或者对于一组有限的情况,基于仅硬件的机制来改变。
一种用于改变偏置状态的机制采用API调用(例如OpenCL),所述 API调用继而调用GPU的装置驱动程序,所述驱动程序继而向GPU发送 消息(或将命令描述符入队),从而引导所述GPU改变偏置状态,并且对 于某些转换,在主机中执行高速缓存转储清除操作。所述高速缓存转储清 除操作是从主机处理器2805偏置到GPU偏置的转换所必需的,而对于相反转换则不是必需的。
在一个实施例中,通过暂时呈现主机处理器2805不可高速缓存的GPU 偏置页来保持缓存一致性。为了访问这些页,处理器2805可以请求来自 GPU 2810的访问,GPU可以依据实施方式立即授权访问也可以不授权访问。 因此,为了减少处理器2805与GPU 2810之间的通信,有利的是确保GPU 偏置页是GPU所需但不是主机处理器2805所需的页,反之亦然。
图形处理流水线
图29展示了根据实施例的图形处理流水线2900。在一个实施例中, 图形处理器可以实现所展示的图形处理流水线2900。所述图形处理器可以 被包括在如本文所述的并行处理子系统诸如图26的并行处理器2600内, 在一个实施例中,所述并行处理器是图25的(多个)并行处理器2512的 变体。如本文所述,各种并行处理系统可以经由并行处理单元(例如,图26的并行处理单元2602)的一个或多个实例来实现图形处理流水线2900。 例如,着色器单元(例如,图27的图形多处理器2734)可以被配置成执行 顶点处理单元2904、镶嵌控制处理单元2908、镶嵌评估处理单元2912、几 何处理单元2916和片段/像素处理单元2924中的一个或多个的功能。数据 汇编器2902,图元汇编器2906、2914、2918,镶嵌单元2910,光栅化器 2922和光栅操作单元2926的功能还可以由处理集群(例如,图27的处理 集群2714)内的其他处理引擎和对应的分区单元(例如,图26的分区单元 2620A至2620N)执行。图形处理流水线2900还可以使用一个或多个功能 的专用处理单元来实现。在一个实施例中,图形处理流水线2900的一个或 多个部分可以由通用处理器(例如,CPU)内的并行处理逻辑执行。在一 个实施例中,图形处理流水线2900的一个或多个部分可经由存储器接口2928访问片上存储器(例如,如图26所示的并行处理器存储器2622), 所述存储器接口可以是图26的存储器接口2618的实例。
在一个实施例中,数据汇编器2902是收集表面和图元的顶点数据的处 理单元。数据汇编器2902然后向顶点处理单元2904输出包括顶点属性的 顶点数据。顶点处理单元2904是可编程执行单元,所述可编程执行单元执 行顶点着色器程序,从而照明和变换如顶点着色器程序所指定的顶点数据。 顶点处理单元2904读取高速缓存、本地或系统存储器中存储的用于处理顶 点数据的数据,并且可以编程为将顶点数据从基于对象的坐标表示转换为 世界空间坐标空间或归一化装置坐标空间。
图元汇编器2906的第一实例从顶点处理单元50接收顶点属性。图元 汇编器2906根据需要读取所存储的顶点属性并构造图形图元以由镶嵌控制 处理单元2908进行处理。图形图元包括如各种图形处理应用编程接口(API) 所支持的三角形、线段、点、补片等等。
镶嵌控制处理单元2908将输入顶点视为几何补片的控制点。这些控制 点从来自补片的输入表示(例如,补片的基础)变换为适用于由镶嵌评估 处理单元2912进行表面评估的表示。镶嵌控制处理单元2908还可以计算 几何补片的边缘的镶嵌因子。镶嵌因子适用于单个边缘,并量化与边缘相 关的视点相关细节水平。镶嵌单元2910被配置成接收补片的边缘的镶嵌因 子并将补片细分为多个几何图元诸如线、三角形或四边形图元,所述多个几何图元被传输到镶嵌评估处理单元2912。镶嵌评估处理单元2912对细分 的补片的参数化坐标进行操作以生成与几何图元相关的每个顶点的表面表 示和顶点属性。
图元汇编器2914的第二实例从镶嵌评估处理单元2912接收顶点属性, 根据需要读取所存储的顶点属性,并构造图形图元以由几何处理单元2916 处理。几何处理单元2916是可编程执行单元,所述可编程执行单元执行几 何着色器程序,以变换如几何着色器程序所指定的从图元汇编器2914所接 收的图形图元。在一个实施例中,几何处理单元2916被编程为将图形图元 细分为一个或多个新的图形图元并且计算用于将新的图形图元光栅化的参 数。
在一些实施例中,几何处理单元2916可以添加或删除几何流中的元素。 几何处理单元2916向图元汇编器2918输出指定新图形图元的参数和顶点。 图元汇编器2918从几何处理单元2916接收参数和顶点,并构建图形图元 以由视口缩放、剔除和裁剪单元2920进行处理。几何处理单元2916读取 并行处理器存储器或系统存储器中存储的数据以用于处理几何数据。视口 缩放、剔除和裁剪单元2920执行裁剪、剔除和视口缩放,并向光栅化器2922输出经处理的图形图元。
光栅化器2922可以执行深度剔除和其他基于深度的优化。光栅化器 2922还对新图形图元执行扫描转换以生成段并向段/像素处理单元2924输 出这些段和关联的覆盖数据。片段/像素处理单元2924是被配置成执行片段 着色器程序或像素着色器程序的可编程执行单元。片段/像素处理单元2924 变换从光栅化器2922所接收的片段或像素,如片段或像素着色器程序所指 定的。例如,片段/像素处理单元2924可以被编程为执行包括但不限于纹理 映射、着色、混合、纹理校正和透视校正的操作,以产生输出到光栅操作 单元2926的着色片段或像素。片段/像素处理单元2924可以读取并行处理 器存储器或系统存储器中存储的数据,以在处理片段数据时使用。片段或 像素着色器程序可以被配置成依据针对处理单元进行配置的采样速率以样 本、像素、图块或其他粒度着色。
光栅操作单元2926是执行包括但不限于模板、z测试、混合等光栅操 作的处理单元,并且将像素数据作为经处理图形数据输出以存储在图形存 储器中(例如,图26的并行处理器存储器2622和/或如图25中的系统存储 器2504,以在一个或多个显示装置2510上显示或者由一个或多个处理器 2502或(多个)并行处理器2512中的一个进一步处理。在一些实施例中, 光栅操作单元2926被配置成压缩写入存储器的z或颜色数据,并解压缩从 存储器读取的z或颜色数据。
在实施例中,术语“引擎”或“模块”或“逻辑”可以指以下各项、 是以下各项的一部分或者包括以下各项:执行一个或多个软件或固件程序 的应用专用集成电路(ASIC)、电子电路、处理器(共享处理器、专用处 理器或组处理器)和/或存储器(共享存储器、专用存储器或组存储器)、 组合逻辑电路、和/或提供所描述功能的其他合适部件。在实施例中,引擎或模块可以以固件、硬件、软件、或者固件、硬件和软件的任何组合来实 现。
本发明的实施例可以包括以上已经描述的各步骤。这些步骤可以被具 体化为机器可执行指令,所述机器可执行指令可以用于使通用或专用处理 器执行这些步骤。可替代地,这些步骤可以由包含用于执行这些步骤的硬 接线逻辑的特定硬件部件来执行,或者由程序化计算机部件和自定义硬件 部件的任意组合来执行。
如本文所述,指令可以是指硬件的具体配置,例如被配置为用于执行 某些操作或具有存储在非暂态计算机可读介质中实施的存储器中的预定功 能或软件指令的专用集成电路(ASIC)。因此,可使用在一个或多个存储 装置(例如,端站、网络元件等)上存储并执行的代码和数据来实现附图 中示出的技术。这种电子装置使用计算机机器可读介质来存储和传送(在 内部和/或利用网络上的其他电子装置)代码和数据,诸如非暂态计算机机 器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪 存存储装置;相变存储器)以及暂态计算机机器可读通信媒体(例如,电、 光、声或其他形式的传播信号—例如载波、红外信号、数字信号等)。
此外,这样的电子装置典型地包括耦合至一个或多个其他部件(例如, 一个或多个存储装置(非暂态机器可读存储媒体)、用户输入/输出装置(例 如键盘、触摸屏和/或显示器)、以及网络连接件)的一组一个或多个处理 器。所述一组处理器和其他部件的耦合通常通过一个或多个总线和桥接器 (也被称为总线控制器)。承载网络通信量的存储装置和信号分别表示一 个或多个机器可读存储介质和机器可读通信介质。因此,给定电子装置的存储装置典型地存储用于在那个电子装置的所述组的一个或多个处理器上 执行的代码和/或数据。当然,可以使用软件、固件、和/或硬件的不同组合 来实现本发明的实施例的一个或多个部分。贯穿本详细描述,出于解释的 目的,阐述了大量的具体细节以便提供对本发明的透彻理解。然而,对于 本领域技术人员而言将明显的是,可以在没有这些特定细节中的一些的情 况下实践本发明。在某些实例中,未详细描述公知结构和功能以避免模糊本发明的主题。从而,本发明的范围和精神应根据以下权利要求来判定。

Claims (25)

1.一种图形处理设备,包括:
编码/解码电路系统,用于对受保护音频和/或视频内容进行解码以生成经解码音频和/或视频内容;
图形处理单元(GPU)的图形高速缓存,所述图形高速缓存用于存储所述经解码音频和/或视频内容;
第一保护电路系统,用于为在所述图形高速缓存中包含经解码音频和/或视频数据的每个高速缓存行设置保护属性;
高速缓存一致性控制器,用于生成对所述图形高速缓存的一致读取请求;
第二保护电路系统,用于读取所述保护属性以确定在所述读取请求中标识的所述高速缓存行是否受到保护,其中,如果所述高速缓存行受到保护,则所述第二保护电路系统禁止在响应中包括来自所述高速缓存行的所述数据中的至少一部分。
2.如权利要求1所述的图形处理设备,其中,所述编码/解码电路系统包括使用受保护密钥来解密所述受保护音频和/或视频内容的数字权限管理(DRM)电路系统/逻辑。
3.如权利要求1或2所述的图形处理设备,其中,如果所述高速缓存行不受保护,则所述第二保护电路系统将在所述响应中包括来自所述高速缓存行的所述数据。
4.如权利要求1或3所述的图形处理设备,其中,所述高速缓存一致性控制器与耦合至或形成在与所述GPU的公共管芯上的中央处理单元(CPU)形成整体。
5.如权利要求1或4所述的图形处理设备,其中,如果所述保护属性指示所述高速缓存行不受保护,则所述第二保护电路系统将传输全0、全1或预定位模式来代替来自所述高速缓存行的所述数据。
6.如权利要求1或5所述的图形处理设备,其中,所述第一保护电路系统是与所述第二保护电路系统相同的电路系统。
7.如权利要求1或6所述的图形处理设备,其中,所述编码/解码电路系统与所述GPU的媒体引擎形成整体。
8.一种方法,包括:
对受保护音频和/或视频内容进行解码以生成经解码音频和/或视频内容;
将所述经解码音频和/或视频内容存储在图形处理单元(GPU)的图形高速缓存中;
为在所述图形高速缓存中包含经解码音频和/或视频数据的每个高速缓存行设置保护属性;
由高速缓存一致性控制器生成对所述图形高速缓存的一致读取请求;以及
读取所述保护属性以确定在所述读取请求中所标识的所述高速缓存行是否受到保护,其中,如果所述高速缓存行受到保护,则禁止在响应中包括来自所述高速缓存行的所述数据中的至少一部分。
9.如权利要求8所述的方法,其中,解码包括使用具有受保护密钥的数字权限管理(DRM)电路系统/逻辑来对所述受保护音频和/或视频内容进行解密。
10.如权利要求8或9所述的方法,其中,如果所述高速缓存行不受保护,则将在所述响应中包括来自所述高速缓存行的所述数据。
11.如权利要求8或10所述的方法,其中,所述高速缓存一致性控制器与耦合至或形成在与所述GPU的公共管芯上的中央处理单元(CPU)形成整体。
12.如权利要求8或11所述的方法,进一步包括:
如果所述保护属性指示所述高速缓存行不受保护,则传输全0、全1或预定位模式来代替来自所述高速缓存行的所述数据。
13.如权利要求8或12所述的方法,其中,设置所述保护属性的操作和读取所述保护属性的操作由公共保护电路系统执行。
14.如权利要求8或13所述的方法,其中,对受保护音频和/或视频内容进行解码的所述操作由所述GPU的媒体引擎执行。
15.一种机器可读介质,其上存储有程序代码,所述程序代码在由机器执行时使所述机器执行以下操作:
对受保护音频和/或视频内容进行解码以生成经解码音频和/或视频内容;
将所述经解码音频和/或视频内容存储在图形处理单元(GPU)的图形高速缓存中;
为在所述图形高速缓存中包含经解码音频和/或视频数据的每个高速缓存行设置保护属性;
由高速缓存一致性控制器生成对所述图形高速缓存的一致读取请求;并且
读取所述保护属性以确定在所述读取请求中所标识的所述高速缓存行是否受到保护,其中,如果所述高速缓存行受到保护,则禁止在响应中包括来自所述高速缓存行的所述数据中的至少一部分。
16.如权利要求15所述的机器可读介质,其中,解码包括使用具有受保护密钥的数字权限管理(DRM)电路系统/逻辑来对所述受保护音频和/或视频内容进行解密。
17.如权利要求15或16所述的机器可读介质,其中,如果所述高速缓存行不受保护,则将在所述响应中包括来自所述高速缓存行的所述数据。
18.如权利要求15或17所述的机器可读介质,其中,所述高速缓存一致性控制器与耦合至或形成在与所述GPU的公共管芯上的中央处理单元(CPU)形成整体。
19.如权利要求15或18所述的机器可读介质,进一步包括:
如果所述保护属性指示所述高速缓存行不受保护,则传输全0、全1或预定位模式来代替来自所述高速缓存行的所述数据。
20.如权利要求15或19所述的机器可读介质,其中,设置所述保护属性的操作和读取所述保护属性的操作由公共保护电路系统执行。
21.如权利要求15或20所述的机器可读介质,其中,对受保护音频和/或视频内容进行解码的所述操作由所述GPU的媒体引擎执行。
22.一种设备,包括:
用于对受保护音频和/或视频内容进行解码以生成经解码音频和/或视频内容的装置;
用于将所述经解码音频和/或视频内容存储在图形处理单元(GPU)的图形高速缓存中的装置;
用于为在所述图形高速缓存中包含经解码音频和/或视频数据的每个高速缓存行设置保护属性的装置;
用于由高速缓存一致性控制器生成对所述图形高速缓存的一致读取请求的装置;以及
用于读取所述保护属性以确定在所述读取请求中所标识的所述高速缓存行是否受到保护的装置,其中,如果所述高速缓存行受到保护,则禁止在响应中包括来自所述高速缓存行的所述数据中的至少一部分。
23.如权利要求22所述的设备,其中,解码包括使用具有受保护密钥的数字权限管理(DRM)电路系统/逻辑来对所述受保护音频和/或视频内容进行解密。
24.如权利要求22或23所述的设备,其中,如果所述高速缓存行不受保护,则在所述响应中包括来自所述高速缓存行的所述数据。
25.如权利要求22或24所述的设备,其中,所述高速缓存一致性控制器与耦合至或形成在与所述GPU的公共管芯上的中央处理单元(CPU)形成整体。
CN201810306009.3A 2017-04-07 2018-04-08 用于保护虚拟化和图形环境中的内容的设备及方法 Active CN108694687B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/482,514 US10565354B2 (en) 2017-04-07 2017-04-07 Apparatus and method for protecting content in virtualized and graphics environments
US15/482,514 2017-04-07

Publications (2)

Publication Number Publication Date
CN108694687A true CN108694687A (zh) 2018-10-23
CN108694687B CN108694687B (zh) 2024-04-26

Family

ID=61526755

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810306009.3A Active CN108694687B (zh) 2017-04-07 2018-04-08 用于保护虚拟化和图形环境中的内容的设备及方法

Country Status (3)

Country Link
US (2) US10565354B2 (zh)
EP (1) EP3385849A1 (zh)
CN (1) CN108694687B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112316434A (zh) * 2020-11-16 2021-02-05 腾讯科技(深圳)有限公司 地形贴图的加载方法、装置、移动终端及存储介质
CN113645484A (zh) * 2021-10-16 2021-11-12 成都中科合迅科技有限公司 基于图形处理器的数据可视化加速渲染方法
US20220292628A1 (en) * 2019-07-19 2022-09-15 Huawei Technologies Co., Ltd. Image processing method and apparatus

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US10944572B2 (en) 2017-01-02 2021-03-09 Western Digital Technologies, Inc. Decryption and variant processing
US11294641B2 (en) * 2017-05-30 2022-04-05 Dimitris Lyras Microprocessor including a model of an enterprise
CN113495793A (zh) * 2020-04-02 2021-10-12 英特尔公司 用于缓冲器共享的方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040093505A1 (en) * 2002-07-09 2004-05-13 Fujitsu Limited Open generic tamper resistant CPU and application system thereof
US20090089510A1 (en) * 2007-09-28 2009-04-02 Mips Technologies, Inc. Speculative read in a cache coherent microprocessor
CN102129410A (zh) * 2005-03-31 2011-07-20 英特尔公司 提供扩展的存储器保护
US20140281319A1 (en) * 2013-03-15 2014-09-18 Nvidia Corporation System and method for protecting data

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6633945B1 (en) * 1997-12-07 2003-10-14 Conexant Systems, Inc. Fully connected cache coherent multiprocessing systems
US7788452B2 (en) * 2004-01-20 2010-08-31 International Business Machines Corporation Method and apparatus for tracking cached addresses for maintaining cache coherency in a computer system having multiple caches
US7958320B2 (en) 2006-12-05 2011-06-07 Intel Corporation Protected cache architecture and secure programming paradigm to protect applications
US9430619B2 (en) * 2014-09-10 2016-08-30 Microsoft Technology Licensing, Llc Media decoding control with hardware-protected digital rights management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040093505A1 (en) * 2002-07-09 2004-05-13 Fujitsu Limited Open generic tamper resistant CPU and application system thereof
CN102129410A (zh) * 2005-03-31 2011-07-20 英特尔公司 提供扩展的存储器保护
US20090089510A1 (en) * 2007-09-28 2009-04-02 Mips Technologies, Inc. Speculative read in a cache coherent microprocessor
US20140281319A1 (en) * 2013-03-15 2014-09-18 Nvidia Corporation System and method for protecting data

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220292628A1 (en) * 2019-07-19 2022-09-15 Huawei Technologies Co., Ltd. Image processing method and apparatus
CN112316434A (zh) * 2020-11-16 2021-02-05 腾讯科技(深圳)有限公司 地形贴图的加载方法、装置、移动终端及存储介质
CN113645484A (zh) * 2021-10-16 2021-11-12 成都中科合迅科技有限公司 基于图形处理器的数据可视化加速渲染方法

Also Published As

Publication number Publication date
US10565354B2 (en) 2020-02-18
US20180293362A1 (en) 2018-10-11
EP3385849A1 (en) 2018-10-10
US20200320177A1 (en) 2020-10-08
US11341212B2 (en) 2022-05-24
CN108694687B (zh) 2024-04-26

Similar Documents

Publication Publication Date Title
US10937123B2 (en) Apparatus and method for dynamic provisioning, quality of service, and prioritization in a graphics processor
CN108694688B (zh) 用于在图形处理架构中管理数据偏置的设备和方法
CN108694072A (zh) 用于高效图形虚拟化的设备及方法
CN108694034A (zh) 用于在虚拟化图形处理环境中的远程显示和内容保护的设备及方法
US11769290B2 (en) Apparatus and method for implementing bounding volume hierarchy (BVH) operations on tesselation hardware
CN108776949A (zh) 用于图形处理环境中的存储器管理的设备和方法
CN108694151A (zh) 通用图形处理单元内的计算集群抢占
CN108694687A (zh) 用于保护虚拟化和图形环境中的内容的设备及方法
US11494232B2 (en) Memory-based software barriers
US11650928B2 (en) Cache optimization for graphics systems
CN109690505A (zh) 用于针对虚拟化输入/输出实施方式的混合层地址映射的设备和方法
US11989818B2 (en) Apparatus and method for efficiently merging bounding volume hierarchy data
CN109643277A (zh) 用于中介传递和共享存储器页合并的装置和方法
US11935178B2 (en) Apparatus and method for data-parallel ray tracing using volume proxies
CN110111406A (zh) 用于时间上稳定的保守形态抗混叠的装置和方法
CN116302107A (zh) 自调谐线程调遣策略
US11508338B2 (en) Register spill/fill using shared local memory space
US10452549B2 (en) Method and apparatus for page table management
CN109427034A (zh) 用于简档引导的图形处理优化的方法和装置
CN108694697A (zh) 从模板印刷缓冲器控制粗糙像素大小
CN108734625A (zh) 通过固定功能着色器库进行基于物理的着色
CN117121045A (zh) 空间接近数据的压缩和交织
US10304235B2 (en) Ray segmentation apparatus and method for direct volume rendering
CN116339935A (zh) 集群化图形体系结构中的线程组调遣
CN117223027A (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