CN105518746A - 混合请求式图形转换表阴影化 - Google Patents

混合请求式图形转换表阴影化 Download PDF

Info

Publication number
CN105518746A
CN105518746A CN201480030019.9A CN201480030019A CN105518746A CN 105518746 A CN105518746 A CN 105518746A CN 201480030019 A CN201480030019 A CN 201480030019A CN 105518746 A CN105518746 A CN 105518746A
Authority
CN
China
Prior art keywords
gtt
shade
processor
certain embodiments
virtual
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
CN201480030019.9A
Other languages
English (en)
Other versions
CN105518746B (zh
Inventor
董耀祖
郑晓
田坤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 CN105518746A publication Critical patent/CN105518746A/zh
Application granted granted Critical
Publication of CN105518746B publication Critical patent/CN105518746B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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
    • 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/10Address translation
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/60Shadow generation
    • 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/45562Creating, deleting, cloning virtual machine instances
    • 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/45583Memory management, e.g. access or allocation
    • 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/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

在多个实施例中,图形处理器与虚拟机监控器(VMM)耦合以将虚拟图形处理器呈现给一个或多个虚拟机。用于虚拟图形处理器的中介者利用对虚拟化进行俘获和仿真来将对虚拟机的客体图形转换表(GTT)的修改同步地阴影化成VMM的阴影GTT。如果中介者检测到对客体GTT的修改的频率超过了阈值,则中介者随后可以将客体GTT的至少部分异步地阴影化成阴影GTT,并且在将用于虚拟图形处理器的命令提交给所述图形处理器之前来重建所述阴影GTT。

Description

混合请求式图形转换表阴影化
技术领域
实施例一般地涉及图形虚拟化环境。更特别地,实施例涉及图形转换表的管理。
背景技术
图形虚拟化可以使在虚拟机(VM)内执行的软件能够控制各种事件,并且对物理机上的图形硬件资源具有访问权,其中虚拟机监控器(VMM)可以在物理机上创建并运行VM。因此,VM软件可以统称为客体软件,而VMM可以称为主机。将图形硬件资源在多个VM之间进行划分可能提出关于效率和安全性的一些难题。例如,在常规的图形虚拟化解决方案中,主机和客体软件对于图形存储器地址空间不具有相同的视图(例如,大小和布局),在一些实例中客体图形存储器地址空间也与系统存储器地址空间不同。因此,由于客体软件向图形硬件发布客体命令(例如,渲染命令),所以可以进行从客体视图到主机视图的地址再映射和/或固定(例如,找到命令中的客体地址并且用主机地址替换它)。基于硬件的地址再映射和/或固定可能涉及到增加复杂度的标签技术。而且,基于软件的地址再映射和/或固定可能涉及到VMM截取、对每个客体命令的分析和/或转换,这会导致额外的开销。
附图说明
通过阅读下面的说明书和随附的权利要求以及通过参考下面的附图,实施例的多个优点对于本领域的技术人员将变得显而易见,在附图中:
图1是具有处理器的计算机系统的实施例的框图,该处理器具有一个或多个处理器核和图形处理器;
图2是处理器的一个实施例的框图,所述处理器具有一个或多个处理器核、集成存储器控制器、以及集成图形处理器;
图3是图形处理器的一个实施例的框图,所述图形处理器可以是分立的图形硬处理单元,或者可以是与多个处理核集成的图形处理器;
图4是用于图形处理器的图形处理引擎的实施例的框图;
图5是图形处理器的另一实施例的框图;
图6是包括处理元件阵列的线程执行逻辑的框图;
图7示出了根据实施例的图形处理器执行单元指令格式;
图8是图形处理器的另一实施例的框图,所述图形处理器包括图形流水线、媒介流水线、显示引擎、线程执行逻辑、以及渲染输出流水线;
图9A是示出了根据实施例的图形处理器命令格式的框图;
图9B是示出了根据实施例的图形处理器命令序列的框图;
图10示出了根据实施例的用于数据处理系统的示例性的图形软件体系结构;
图11提供了根据实施例的包括图形转换表的示例性的GPU编程模型的概览。
图12是根据实施例的示例性的全局的以及每个处理的图形转换表的框图。
图13是根据实施例的示例性图形虚拟化环境的框图;
图14是进入客体图形转换表的异步模式的逻辑的流程图;
图15A-B是根据实施例的阴影图形转换表重构的框图;
图16是重构阴影图形转换表的至少一部分的逻辑的流程图;
图17A-B是包括用于退出客体图形转换表的异步模式的逻辑的流程图;
图18是示出了根据实施例的混合同步的框图;以及
图19是根据实施例的实施混合同步的逻辑的流程图。
具体实施方式
系统概述
图1是根据实施例的数据处理系统100的框图。数据处理系统100包括一个或多个处理器102和一个或多个图形处理器108,并且可以是单处理器桌面式系统、多处理器工作站系统或具有大量的处理器102或处理器核107的服务器系统。在一个实施例中,数据处理系统100是用于移动式、手持式或嵌入式设备的片上系统(SoC)集成电路。
数据处理系统100的实施例可以包括基于服务器的游戏平台、包括游戏和媒介控制台的游戏控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台或者可以集成在其中。在一些实施例中,数据处理系统100是移动电话、智能电话、平板式计算设备或移动互联网设备。数据处理系统100还可以包括可佩戴设备、与可佩戴设备耦合,或者集成在可佩戴设备内,所述可佩戴设备诸如智能手表可佩戴设备、智能眼镜设备、增强现实设备、或虚拟现实设备。在一些实施例中,数据处理系统100是具有一个或多个处理器102和由一个或多个图形处理器108生成的图形接口的电视机或机顶盒设备。在一个实施例中,数据处理系统100是用作家庭网络网关、家庭媒介服务器、或用于公共区域(例如,医院)的组合接入点/数字签名解决方案的无线路由器或接入点。
在一些实施例中,一个或多个处理器102各自包括一个或多个处理器核107以处理指令,当指令被执行时,指令实施用于系统和用户软件的操作。在一些实施例中,一个或多个处理器核107中的每一个被配置为处理特定的指令集109。在一些实施例中,指令集109可以实现复杂指令集计算(CISC)、精简指令集计算(RISC)、或经由极长指令字(VLIW)的计算。多个处理器核107可以各自处理不同的指令集109,其可以包括实现对其他指令集的仿真的指令。处理器核107还可以包括其他的处理设备,诸如数字信号处理器(DSP)。
在一些实施例中,处理器102包括高速缓存存储器104。根据体系结构,处理器102可以具有单一内部高速缓存或多级内部高速缓存。在一些实施例中,高速缓存存储器在处理器102的各组件之间共享。在一些实施例中,处理器102还使用外部高速缓存(例如,三级(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设备的连接。
存储器设备120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备、或具有适合充当处理存储器的性能的一些其它存储器设备。存储器120能够存储当处理器102执行进程时所使用的数据122和指令121。存储器控制器集线器116还与任选的外部图形处理器112耦合,外部图形处理器112可以与处理器102中的一个或多个图形处理器108通信以实施图形和媒介操作。
在一些实施例中,ICH130使外围设备能够经由高速I/O总线连接到存储器120和处理器102。I/O外围设备包括音频控制器146、固件接口128、无线收发机126(例如,Wi-Fi、蓝牙)、数据存储设备124(例如,硬盘驱动器、闪速存储器等)以及用于将传统(例如,个人系统2(PS/2))设备与系统耦合的传统I/O控制器。一个或多个通用串行总线(USB)控制器142连接输入设备,诸如键盘和鼠标144组合。网络控制器134还可以与ICH130耦合。在一些实施例中,高性能网络控制器(未示出)与处理器总线110耦合。
图2是处理器200的实施例的框图,处理器200具有一个或多个处理器核202A-N、集成存储器控制器214和集成图形处理器208。图2中的那些与本文任何其他图的元件具有相同附图标记(或名称)的元件能够以类似于本文其他地方所述的任何方式进行操作或运作,但是不限于此。处理器200可以包括多达并且包括附加核202N的附加核,附加核由虚线框来表示。核202A-N中的每一个均包括一个或多个内部高速缓存单元204A-N。在一些实施例中,每个核还对一个或多个共享高速缓存单元206具有访问权。
内部高速缓存单元204A-N和共享高速缓存单元206代表了处理器200内的高速缓存存储器层级。高速缓存存储器层级可以包括在每个核内的至少一级指令和数据高速缓存,以及共享中级高速缓存中的一个或多个,诸如二级(L2)、三级(L3)、四级(L4)或其它级的高速缓存,其中在外部存储器之前的最高级高速缓存被分类为LLC。在一些实施例中,高速缓存相干逻辑维持各个高速缓存单元206与204A-N之间一致。
在一些实施例中,处理器200还可以包括一个或多个总线控制器单元216和系统代理210的集合。所述一个或多个总线控制器单元管理一组外围设备总线,诸如一个或多个外围组件互连总线(例如,PCI,PCIExpress)。系统代理210针对各个处理器组件提供了管理功能。在一些实施例中,系统代理210包括用于管理对各个外部存储器设备(未示出)进行访问的一个或多个集成存储器控制器214。
在一些实施例中,核202A-N中的一个或多个包括对于同时多线程的支持。在该实施例中,系统代理210包括用于在多线程处理期间协调和操作核202A-N的组件。系统代理210可以另外包括功率控制单元(PCU),其包括用于调节核202A-N和图形处理器208的功率状态的逻辑和组件。
在一些实施例中,处理器200另外包括用于执行图形处理操作的图形处理器208。在一些实施例中,图形处理器208与一组共享高速缓存单元206和包括一个或多个集成存储器控制器214的系统代理单元210耦合。在一些实施例中,显示控制器211与图形处理器208耦合以将图形处理器输出驱动至一个或多个耦合的显示器。在一些实施例中,显示控制器211可以是经由至少一个互连与图形处理器耦合的单独的模块,或者可以集成在图形处理器208或系统代理210内。
在一些实施例中,基于环的互连单元212用来耦合处理器200的内部组件。然而,可以使用可替代的互连单元,诸如点对点互连、交换机互连、或其他技术,包括本领域公知的技术。在一些实施例中,图形处理器208经由I/O链路213与环互连212耦合。
示例性I/O链路213代表多种I/O互连中的至少一种,包括利于各处理器组件与诸如eDRAM模块的高性能嵌入式存储器模块218之间的通信的叠层封装I/O互连。在一些实施例中,核202-N中的每一个和图形处理器208使用嵌入式存储器模块218作为共享的最终级高速缓存。
在一些实施例中,核202A-N是执行相同指令集体系结构的同质核。在另一实施例中,核202A-N在指令集体系结构(ISA)方面是异质的,其中核202A-N中的一个或多个执行第一指令集,而其他核中的至少一个执行第一指令集的子集或不同的指令集。
在一些实施例中,处理器200是使用例如互补金属氧化物半导体(CMOS)、双极结/互补金属氧化物半导体(BiCMOS)或N型金属氧化物半导体逻辑(NMOS)的多种处理技术中的任一种的一个或多个衬底的部分或者被实现在其上。另外,处理器200可以被实现在一个或多个芯片上或者作为除了其他组件之外具有图示组件的SoC集成电路。
图3是图形处理器300的框图,该图形处理器300可以是分立的图形硬处理单元,或者可以是与多个处理核集成的图形处理器。在一些实施例中,图形处理器经由存储器映射I/O接口与图形处理器上的寄存器通信并且与被放置在处理器存储器中的命令通信。在一些实施例中,图形处理器300包括访问存储器的存储器接口314。存储器接口314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存的接口和/或到系统存储器的接口。
在一些实施例中,图形处理器300还包括将显示输出数据驱动到显示器设备320的显示控制器302。显示控制器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图形操作。在一些实施例中,图形处理引擎310是用于执行图形操作的计算引擎,图形操作包括三维(3D)图形操作和媒介操作。
在一些实施例中,GPE310包括用于执行3D操作的3D流水线312,诸如利用作用于3D基元形状(例如,矩形、三角形等)的处理功能来渲染三维图像和场景。3D流水线312包括执行元件内的各种任务和/或向3D/媒介子系统315产生执行线程的可编程以及固定功能元件。虽然3D流水线312能够用于执行媒介操作,但是GPE310的实施例还包括具体地用于执行诸如视频后处理和图像增强的媒介操作的媒介流水线316。
在一些实施例中,媒介流水线316包括执行一个或多个专门的媒介操作的固定功能或可编程逻辑单元,诸如视频解码加速、视频去隔行以及视频编码加速,替代视频编码解码引擎306或者代表视频编码解码引擎306。在一些实施例中,媒介流水线316另外包括产生用于在3D/媒介子系统315上执行的线程的线程产生单元。所产生的线程执行在3D/媒介子系统315中所包含的一个或多个图形执行单元上的媒介操作的计算。
在一些实施例中,3D/媒介子系统315包括用于执行由3D流水线312和媒介流水线316产生的线程的逻辑。在一个实施例中,流水线将线程执行请求发送给3D/媒介子系统315,包括用于对各请求进行仲裁,并且将其调度到可用的线程执行资源的线程调度逻辑。执行资源包括处理3D和媒介线程的图形执行单元阵列。在一些实施例中,3D/媒介子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,子系统还包括共享存储器,所述共享存储器包括寄存器和可寻址存储器,以在线程之间共享数据并且存储输出数据。
3D/媒介处理
图4是根据一些实施例的图形处理器的图形处理引擎410的框图。在一个实施例中,GPE410是图3所示的GPE310的一个版本。图4的与本文任何其他图中的元件具有相同附图标记(或名称)的元件能够以类似于本文其他地方所描述的任何方式操作或运作,但是不限于此。
在一些实施例中,GPE410与命令流送器403耦合,命令流送器403将命令流式地传送给GPE3D和媒介流水线412、416。在一些实施例中,命令流送器403与存储器耦合,该存储器可以是系统存储器或者内部高速缓存存储器和共享高速缓存存储器中的一个或多个。在一些实施例中,命令流送器403接收来自存储器的命令,并且将所述命令发送到3D流水线412和/或媒介流水线416。3D流水线和媒介流水线通过经由相应流水线内的逻辑来执行操作或者通过将一个或多个执行线程调度给执行单元阵列414来处理命令。在一些实施例中,执行单元阵列414是可缩放的,使得阵列基于GPE410的目标功率和性能水平而包括可变数量的执行单元。
在一些实施例中,采样引擎430与存储器(例如,高速缓存存储器或系统存储器)以及执行单元阵列414耦合。在一些实施例中,采样引擎430提供用于执行单元阵列414的存储器存取机制,其允许执行阵列414从存储器读图形和媒介数据。在一些实施例中,采样引擎430包括执行用于媒介的专门图像采样操作的逻辑。
在一些实施例中,采样引擎430中的专门媒介采样逻辑包括去噪/去隔行模块432、运动估计模块434和图像缩放与滤波模块436。在一些实施例中,去噪/去隔行模块432包括对解码后的视频数据执行去噪或去隔行中的一项或多项的逻辑。去隔行逻辑将被隔行的视频内容的交替场组合成单个视频帧。所述去噪逻辑从视频与图像数据中减少或去除数据噪声。在一些实施例中,去噪逻辑和去隔行逻辑是运动自适应的,并且使用基于在视频数据中检测到的运动量的空间或时间滤波。在一些实施例中,去噪/去隔行模块432包括专用运动检测逻辑(例如,在运动估计引擎434内)。
在一些实施例中,运动估计引擎434通过对视频数据实施诸如运动向量估计和预测的视频加速功能来提供用于视频操作的硬件加速。运动估计引擎确定描述连续视频帧之间的图像数据变换的运动向量。在一些实施例中,图形处理器媒介编码解码器使用视频运动估计引擎434来在宏块级对视频实施操作,另外宏块级可能过于计算集中而不能通过通用处理器来实施。在一些实施例中,运动估计引擎434通常可供图形处理器组件使用以辅助对于视频数据内的运动的方向或数量敏感或自适应的视频解码与处理功能。
在一些实施例中,图像缩放与滤波模块436实施图像处理操作以增强所生成的图像和视频的可视品质。在一些实施例中,缩放与滤波模块436在将数据提供给执行单元阵列414之前的采样操作期间处理图像和视频数据。
在一些实施例中,GPE410包括数据端口444,其提供便于图形子系统访问存储器的附加机制。在一些实施例中,数据端口444利于用于包括渲染目标写、常量缓冲器读、暂时存储器空间读/写以及媒介表面访问的操作的存储器访问。在一些实施例中,数据端口444包括对存储器访问进行高速缓存的高速缓存存储器空间。高速缓存存储器可以是单一数据高速缓存或被分离成用于经由数据端口访问存储器的多个子系统的多个高速缓存(例如,渲染缓冲高速缓存、常量缓冲高速缓存等)。在一些实施例中,在执行单元阵列414中的执行单元上执行的线程通过经由将GPE410的各子系统耦合的数据分布互连来交换消息从而与数据端口进行通信。
执行单元
图5是图形处理器500的另一实施例的框图。图5的与本文任何其他图的元件具有相同的附图标记(或名称)的元件能够以类似于本文其他地方所描述的任何方式来操作或运作,但是不限于此。
在一些实施例中,图形处理器500包括环互连502、流水线前端504、媒介引擎537和图形核580A-N。在一些实施例中,环互连502将图形处理器与其他处理单元耦合,所述其他处理单元包括其他图形处理器或一个或多个通用处理器核。在一些实施例中,图形处理器是集成在多核处理系统内的多个处理器中的一个处理器。
在一些实施例中,图形处理器500经由环互连502来接收多批命令。正到达的命令由流水线前端504中的命令流送器503来解释。在一些实施例中,图形处理器500包括经由图形核580A-N来实施3D几何处理和媒介处理的可缩放执行逻辑。对于3D几何处理命令,命令流送器503将命令供应给几何流水线536。对于至少一些媒介处理命令,命令流送器503将命令供应给视频前端534,视频前端534与媒介引擎537耦合。在一些实施例中,媒介引擎537包括用于视频和图像后处理的视频品质引擎(VQE)530,以及提供硬件加速的媒介数据编码和解码的多格式编码/解码(MFX)533引擎。在一些实施例中,几何流水线536和媒介引擎537各自生成用于至少一个图形核580A提供的线程执行资源的执行线程。
在一些实施例中,图形处理器500包括可缩放线程执行资源特征化模块核580A-N(有时称为核片),每个均具有多个子核550A-N、560A-N(有时称为核子片)。在一些实施例中,图形处理器500可以具有任意数量的图形核580A至580N。在一些实施例中,图形处理器500包括具有至少第一子核550A和第二核子核560A的图形核580A。在其他实施例中,图形处理器是具有单一子核的低功率处理器(例如,550A)。在一些实施例中,图形处理器500包括多个图形核580A-N,每个图形核包括一组第一子核550A-N以及一组第二子核560A-N。一组第一子核550A-N中的每个子核包括执行单元552A-N和媒介/纹理采样器554A-N的第一集合。第二子核560A-N的集合中的每个子核均包括执行单元562A-N以及采样器564A-N的至少第二集合。在一些实施例中,每个子核550A-N、560A-N共享一组共享资源570A-N。在一些实施例中,共享资源包括共享高速缓存存储器和像素操作逻辑。其他共享资源也可以包含在图形处理器的各实施例中。
图6示出了在GPE的一些实施例中采用的包括处理元件阵列的线程执行逻辑600。图6的与本文任何其他图的元件具有相同的附图标记(或名称)的元件能够以类似于本文其他地方所描述的任何方式操作或运作,但是不限于此。
在一些实施例中,线程执行逻辑600包括像素着色器602、线程调度器604、指令高速缓存606、可缩放执行单元阵列,可缩放执行单元阵列包括多个执行单元608A-N、采样器610、数据高速缓存612和数据端口614。在一个实施例中,所包含的组件经由与各组件链接的互连结构而互连。在一些实施例中,线程执行逻辑600包括通过指令高速缓存606、数据端口614、采样器610和执行单元阵列608A-N中的一个或多个到诸如系统存储器或高速缓存存储器之类的存储器的一个或多个连接。在一些实施例中,每个执行单元(例如,608A)是能够同时执行多个线程并且对于每个线程并行地处理多个数据元素的个体向量处理器。在一些实施例中,执行单元阵列608A-N包括任意数量的个体执行单元。
在一些实施例中,执行单元阵列608A-N主要用来执行“着色器”程序。在一些实施例中,执行单元阵列608A-N执行包括对于许多标准3D图形着色器指令的本地支持的指令集,使得在最小转换内执行来自图像库(例如,Direct3D或OpenGL)的着色器程序。执行单元支持顶点与几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)以及通用处理(例如,计算与媒介着色器)。
执行单元阵列608A-N中的每个执行单元对数据元素阵列进行操作。数据元素的数量是“执行尺寸”,或指令的信道数量。执行信道是用于数据元素存取、掩码和指令内流控制的逻辑执行单元。信道的数量可以独立于用于特定图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量。在一些实施例中,执行单元608A-N支持整数与浮点数据类型。
执行单元指令集包括单指令多数据(SIMD)指令。各数据元素能够作为封装数据类型被存储在寄存器中,并且执行单元将基于元素的数据大小来处理各元素。例如,当在256位宽的向量上操作时,向量的256位存储在寄存器中,并且执行单元在作为四个单独的64位封装数据元素(四倍字(QW)大小的数据元素)、八个单独的32位封装数据元素(双字(DW)大小的数据元素)、十六个单独的16位封装数据元素(字(W)大小的数据元素)、或三十二个单独的8位数据元素(字节(B)大小的数据元素)的向量上操作。然而,不同的向量宽度和寄存器尺寸是可能的。
一个或多个内部指令高速缓存(例如,606)包含在线程执行逻辑600中,以对用于执行单元的线程指令进行高速缓存。在一些实施例中,包括一个或多个数据高速缓存(例如,612)以在线程执行期间对线程数据进行高速缓存。在一些实施例中,采样器610被包含以提供对3D操作的纹理采样和对媒介操作的媒介采样。在一些实施例中,采样器610包括专门的纹理或媒介采样功能以在将采样数据提供给执行单元之前处理采样处理期间的纹理或媒介数据。
在执行期间,图形与媒介流水线经由线程产生与调度逻辑将线程开始请求发送到线程执行逻辑600。在一些实施例中,线程执行逻辑600包括本地线程调度器604,其对来自图形与媒介流水线的线程开始请求进行仲裁并且在一个或多个执行单元608A-N上对所请求的线程进行例示。例如,几何流水线(例如,图5中的536)将顶点处理、棋盘形布置、或几何处理线程调度到线程执行逻辑600(图6)。在一些实施例中,线程调度器604还能够处理来自执行着色器程序的运行时线程产生请求。
一旦一组几何对象已经被处理并且被光栅化成像素数据,则像素着色器602被调用以进一步计算输出信息,并且使结果被写到输出表面(例如,颜色缓冲器、深度缓冲器、模版缓冲器等)。在一些实施例中,像素着色器602计算要在光栅化对象中内插的各顶点属性的值。在一些实施例中,像素着色器602随后执行API供应的像素着色器程序。要执行像素着色器程序,像素着色器602经由线程调度器604将线程调度给执行单元(例如,608A)。在一些实施例中,像素着色器602利用采样器610中的纹理采样逻辑来访问存储在存储器中的纹理映射中的纹理数据。对于纹理数据和输入几何数据的算术运算计算每个几何片段的像素颜色数据,或者在进一步处理中丢弃一个或多个像素。
在一些实施例中,数据端口614提供线程执行逻辑600输出的处理数据到存储器的存储器访问机制,以用于在图形处理器输出流水线上进行处理。在一些实施例中,数据端口614包括一个或多个高速缓存存储器(例如,数据高速缓存612)或者与一个或多个高速缓存存储器(例如,数据高速缓存612)耦合以经由数据端口对用于存储器访问的数据进行高速缓存。
图7是示出了根据一些实施例的图形处理器指令格式700的框图。在一个或多个实施例中,图形处理器执行单元支持具有多种格式的指令的指令集。实线框示出一般包含在执行单元指令中的组件,而虚线包括任选的或者仅包含在指令子集中的组件。在一些实施例中,所描述和图示的指令格式700是宏指令,因为它们是供应给执行单元的指令,与一旦处理了指令后而从指令解码器产生的微操作不同。
在一些实施例中,图形处理器执行单元在本地支持128位格式710的指令。基于所选指令、指令选项和操作数数量,64位压缩指令格式730对于一些指令可用。本地128位格式710提供对所有指令选项的访问,而一些选项和操作限于64位格式730。64位格式730可用的本地指令因实施例而不同。在一些实施例中,利用索引字段713中的一组索引值部分地压缩指令。执行单元硬件基于索引值来参考一组压缩表并且使用压缩表输出来重构以128位格式710的本地指令。
对于每个格式,指令操作码712限定执行单元要执行的操作。执行单元跨每个操作数的多个数据元素来并行地执行每个指令。例如,响应于相加指令,执行单元遍及表征纹理元素或图片元素的每个颜色通道来实施同时的相加运算。缺省地,执行单元遍及操作数的所有数据通道来实施每个指令。在一些实施例中,指令控制字段712实现对一些执行选项的控制,诸如通道选择(例如,预测)和数据通道次序(例如,调配)。对于128位指令710,执行尺寸字段716限制将并行执行的数据通道的数量。在一些实施例中,执行尺寸字段716不可供64位压缩指令格式730使用。
一些执行单元指令已经多达三个操作数,包括两个源操作数,src0722、src1722和一个目的操作数718。在一些实施例中,执行单元支持双目的操作数指令,其中一个目的操作数被暗示。数据操纵指令可以具有第三源操作数(例如,SRC2724),其中指令操作码712确定源操作数的数量。指令的最后一个源操作数可以是遍历指令的中间(硬编码)值。
在一些实施例中,128位指令格式710包括存取/地址模式字段726,其指定指令的地址模式和/或存取模式。在一个实施例中,存取模式用于限定指令的数据存取校准。一些实施例支持存取模式,包括16字节校准存取模式和1字节校准存取模式,其中存取模式的字节校准确定了指令操作数的存取校准。在一个实施例中,存取/地址模式字段726的地址模式部分判定指令是使用直接寻址还是间接寻址。
在一些实施例中,基于操作码位字段来对指令进行分组以简化操作解码740。对于8位操作码,位4、5和6允许执行单元确定操作码的字节。所示的精确的操作码分组仅是示例。在一些实施例中,移动与逻辑操作码组742包括数据移动和逻辑指令(例如,移动(mov)、比较(cmp))。在一些实施例中,移动与逻辑组742共享五个最高有效位(MSB),其中移动(mov)指令为0000xxxxb(例如,0x0x)的形式,而逻辑指令为0001xxxxb(例如,0x01)的形式。流控制指令组744(例如,调用,跳转(jmp))包括0010xxxxb(例如,0x20)形式的指令。混杂指令组746包括指令的混合,包括0011xxxxb(例如,0x30)形式的同步指令(例如,等待,发送)。并行数学指令组748包括0100xxxxb(例如,0x40)形式的逐组件算术指令(例如,相加、相乘(mul))。并行数学组748跨数据通道并行地实施算术运算。向量数学组750包括0101xxxxb(例如,0x50)形式的算术指令(例如,dp4)。向量数学组对向量操作数实施算术运算,诸如点乘运算。
图形流水线
图8是图形处理器800的另一实施例的框图。图8的与本文任何其他图的元件具有相同的附图标记(或名称)的元件能够以类似于本文其他地方所描述的任何方式操作或运作,但是不限于此。
在一些实施例中,图形处理器800包括图形流水线820、媒介流水线830、显示引擎840、线程执行逻辑850和渲染引擎870。在一些实施例中,图形处理器800是包括一个或多个通用处理核的多核处理系统内的图形处理器。图形处理器由到一个或多个控制寄存器(未示出)的寄存器写或者经由通过环互连802发布给图形处理器800的命令来控制。在一些实施例中,环互连802将图形处理器800与其他处理组件耦合,所述其他处理组件诸如其他图形处理器或通用处理器。来自环互连802的命令由命令流送器803来解释,命令流送器803将指令供应给图形流水线820或媒介流水线830的各个组件。
在一些实施例中,命令流送器803引导顶点取出器805的操作,顶点取出器805从存储器读取顶点数据并且执行由命令流送器803提供的顶点处理命令。在一些实施例中,顶点取出器805将顶点数据提供给顶点着色器807,顶点着色器807对于每个顶点实施坐标空间变换和点亮操作。在一些实施例中,顶点取出器805和顶点着色器807通过经由线程调度器831将执行线程调度给执行单元852A、852B来执行顶点处理指令。
在一些实施例中,执行单元852A、852B是具有用于实施图形与媒介操作的指令集的向量处理器阵列。在一些实施例中,执行单元852A、852B具有专用于每个阵列或者在阵列之间共享的附接的L1高速缓存851。高速缓存可以被配置为数据高速缓存、指令高速缓存或被划分为在不同分区中包含数据和指令的单一高速缓存。
在一些实施例中,图形流水线820包括实施3D对象的硬件加速棋盘形布置的棋盘形布置组件。在一些实施例中,可编程外壳着色器811配置棋盘形布置操作。可编程域着色器817提供对棋盘形布置输出的后端评估。棋盘形布置器813在外壳着色器811的引导下操作并且包括专用逻辑,该专用逻辑基于作为输入提供给图形流水线820的粗糙几何模型来生成一组详细几何对象。在一些实施例中,如果不使用棋盘形布置,则棋盘形布置组件811、813、187可以被绕过。
在一些实施例中,几何着色器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之前处理媒介命令。在一些实施例中,媒介引擎337包括产生线程以便经由线程调度器831调度给线程执行逻辑850的线程产生功能。
在一些实施例中,图形处理器800包括显示引擎840。在一些实施例中,显示引擎840在处理器800外部,并且经由环互连802或一些其他互连总线或结构与图形处理器耦合。在一些实施例中,显示引擎840包括2D引擎841和显示控制器843。在一些实施例中,显示引擎840包含能够独立于3D流水线而操作的专用逻辑。在一些实施例中,显示控制器843与显示设备(未示出)耦合,该显示设备可以是系统集成显示设备,如在膝上型计算机中,或者经由显示设备连接器附接的外部显示设备。
在一些实施例中,图形流水线820和媒介流水线830能够配置为基于多个图形与媒介编程接口来实施操作,并且不针对任何一个应用编程接口(API)。在一些实施例中,用于图形处理器的驱动软件将特定图形或媒介库专用的API调用转换为能够由图形处理器处理的命令。在一些实施例中,从KhronosGroup提供对开放图形库(OpenGL)和开放计算语言(OpenCL)的支持,从MicrosoftCorporation提供对Direct3D库的支持,或者可以对OpenGL和D3D提供支持。可以针对开源计算机视觉库(OpenCV)提供支持。如果能够实现从未来API的流水线到图形处理器的流水线的映射,则未来的具有兼容的3D流水线的API也将得到支持。
图形流水线编程
图9A是示出了根据一些实施例的图形处理器命令格式900的框图。图9B是示出了根据实施例的图形处理器命令序列910的框图。图9A中的实线框示出了一般已经包含在图形命令中的组件,而虚线包含任选的或者仅包含在图形命令的子集中的组件。图9A中的示例性的图形处理器命令格式900包括标识命令的目标客户端902的数据字段、标识命令操作码(opcode)904的数据字段和标识用于命令的相关数据906的数据字段。在一些命令中还包含子操作码905和命令大小908。
在一些实施例中,客户端902指定处理命令数据的图形设备的客户端单元。在一些实施例中,图形处理器命令分析器检查每个命令的客户端字段以调节命令的进一步处理,并且将命令数据路由到适当的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元和媒介单元。每个客户端单元具有处理命令的对应的处理流水线。一旦命令由客户端单元接收到,则客户端单元读取操作码904,并且如果操作码存在,则读取子操作码905来确定要实施的操作。客户端单元利用数据字段906中的信息来执行命令。对于一些命令,期望明确的命令大小908以指定命令的大小。在一些实施例中,命令分析器基于命令操作码来自动确定至少一些命令的大小。在一些实施例中,经由双字的倍数来校准命令。
图9B中的流程图显示出示例性的命令序列910。在一些实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用示出的命令序列的版本来设置、执行以及结束一组图形操作。样本命令序列仅为示例的目的而进行显示和描述,因为实施例不限于这些具体的命令或该命令序列。而且,命令可以被发布为命令序列中的分批命令,使得图形处理器至少部分同时地处理命令序列。
在一些实施例中,样本命令序列910可以开始于流水线冲刷命令912,使任何活跃的图形流水线完成对于该流水线的当前未决命令。在一些实施例中,3D流水线922和媒介流水线924不同时操作。实施流水线冲刷以使活跃图形流水线完成任何未决的命令。响应于流水线冲刷,用于图形处理器的命令分析器将暂停命令处理,直到活跃的绘图引擎完成未决操作,并且使得相关读高速缓存无效。任选地,渲染高速缓存中的标为“坏”的任何数据可以被冲刷到存储器。在一些实施例中,流水线冲刷命令912能够用于流水线同步或者在将图形处理器置于低功率状态之前使用流水线冲刷命令912。
在一些实施例中,当命令序列要求图形处理器明确地在流水线之间切换时,使用流水线选择命令913。在一些实施例中,在发布流水线命令之前,在执行背景内仅需要流水线选择命令913一次,除非背景要发布用于两个流水线的命令。在一些实施例中,经由流水线选择命令913紧接在流水线转换之前需要流水线冲刷命令912。
在一些实施例中,流水线控制命令914配置图形流水线用于操作,并且用于对3D流水线922和媒介流水线924进行编程。在一些实施例中,流水线控制命令914配置用于活跃流水线的流水线状态。在一个实施例中,流水线控制命令914用于流水线同步以及在处理分批命令之前在活跃流水线内从一个或多个高速缓存存储器中清除数据。
在一些实施例中,返回缓冲器状态命令916用来配置用于相应流水线写数据的一组返回缓冲器。一些流水线操作在处理期间要求对操作将中间数据写入其中的一个或多个返回缓冲器进行分配、选择或配置。在一些实施例中,图形处理器还使用一个或多个返回缓冲器来存储输出数据以及实施交叉线程通信。在一些实施例中,返回缓冲器状态916包括选择返回缓冲器的尺寸和数量以用于一组流水线操作。
命令序列中的剩余命令基于用于操作的活跃的流水线而不同。基于流水线确定920,将命令序列修整为以3D流水线状态930开始的3D流水线922或者以媒介流水线状态940开始的媒介流水线924。
用于3D流水线状态930的命令包括用于顶点缓冲器状态、顶点元素状态、恒定颜色状态、深度缓冲器状态以及在处理3D基元命令之前要配置的其他状态变量的3D状态设定命令。这些命令的值是至少部分地基于使用的特定的3DAPI来确定的。在一些实施例中,3D流水线状态930命令也能够选择性地禁用或绕过一些流水线元素,如果那些元素不能使用。
在一些实施例中,3D基元932命令用来提交要由3D流水线处理的3D基元。要经由3D基元932命令传递给图形处理器的命令和关联的参数被转送给图形流水线中的顶点取出函数。顶点取出函数使用3D基元932命令数据来生成顶点数据结构。顶点数据结构存储在一个或多个返回缓冲器中。在一些实施例中,3D基元932命令用来经由顶点着色器来对3D基元实施顶点操作。要处理顶点着色器,3D流水线922将着色器执行线程调度给图形处理器执行单元。
在一些实施例中,3D流水线922是经由执行934命令或事件来触发的。在一些实施例中,寄存器写触发命令执行。在一些实施例中,经由命令序列中的‘前进’或‘剔除’命令来触发执行。在一个实施例中,利用流水线同步命令来触发命令执行以通过图形流水线来冲刷命令序列。3D流水线将对3D基元实施几何处理。一旦操作完成,则所得到的几何对象经过光栅化,并且像素引擎将对所得到的像素进行着色。对于那些操作还可以包含控制像素着色和像素后端操作的额外命令。
在一些实施例中,样本命令序列910在实施媒介操作时遵从媒介流水线924路径。一般地,对于媒介流水线924的编程的具体使用和方式取决于要实施的媒介或计算操作。具体的媒介解码操作可以在媒介解码期间被卸载给媒介流水线。在一些实施例中,媒介流水线还能够被绕过,并且媒介解码能够利用由一个或多个通用处理核提供的资源来整体地或部分地实施。在一个实施例中,媒介流水线还包括用于通用图形处理器单元(GPGPU)操作的元素,其中图形处理器用来使用不与图形基元的渲染明确有关的计算着色器程序来实施SIMD向量操作。
在一些实施例中,媒介流水线924以类似于3D流水线922的方式进行配置。一组媒介流水线状态命令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)。应用还包括适合于由通用处理器核1034执行的机器语言的可执行指令1014。应用还包括由顶点数据限定的图形对象1016。
在一些实施例中,操作系统1020是来自MicrosoftCorporation的操作系统,专用类UNIX操作系统、或使用Linux核心的变型例的开源类UNIX操作系统。当使用Direct3DAPI时,操作系统1020使用前端着色器编译器1024来将HLSL的任何着色器指令1012编译成较低级着色器语言。编译可以是及时(JIT)编译或者应用能够实施着色器预编译。在一些实施例中,在3D图形应用1010编译期间,高级着色器被编译成低级着色器。
在一些实施例中,用户模式图形驱动器1026包含后端着色器编译器1027,以将着色器指令1012转换成硬件具体表示。当使用OpenGLAPI时,以GLSL高级语言写的着色器指令1012被传递到用户模式图形驱动器1026以便进行编译。在一些实施例中,用户模式图形驱动器1026使用操作系统内核模式功能1028来与内核模式图形驱动器1029通信。在一些实施例中,内核模式图形驱动器1029与图形处理器1032通信以调度命令和指令。
图形转换表
图11提供了根据实施例的包括图形转换表在内的示例性的GPU编程模型的概览。编程模型示出一个或多个系统处理器1102与使用共享存储器1104的GPU1108之间的交互,在一个实施例中,共享存储器1104是系统存储器。共享存储器包括命令缓冲器1114和帧缓冲器1124。一组图形转换表(GTT)用来使能对包括命令缓冲器1114和帧缓冲器1124的系统存储器进行图形存储器访问。
在一个实施例中,一个或多个系统处理器1102利用GPU专用命令来对GPU1108进行编程,诸如图9A-B中所描述的。在一个实施例中,图形驱动器将命令编程到存储于系统存储器1104的命令缓冲器1114中。在一个实施例中,当例如经由诸如渲染环形缓冲器的尾寄存器和/或执行列表的提交的处理器特定方法,命令执行准备就绪时,一个或多个处理器通知GPU。然后,GPU1108的渲染引擎1128取出命令缓冲器1114中的命令并且执行该命令。取出和执行可以紧接在处理器通知GPU渲染环中的命令准备就绪之后发生,或者取出可以发生在基于GPU内部调度或管理策略的稍后点上。
在一个实施例中,GPU实施所有未决命令和指令的单次取出,使用GTT用于变换,并且在开始执行图形命令之前将GTT数据存储在内部高速缓存中。在一个实施例中,GPU基于内部资源可用性来取出并执行指令并且可以在处理图形命令的同时为存储器变换而多次参考GTT。在一个实施例中,GPU渲染引擎独立于一个或多个处理器中的任一个来执行,并且处理器和GPU应当避免关于任何其他对应部分的执行速度的假设。在处理器与GPU之间不存在明确的同步事件的情况下不应假设来自处理器或GPU的执行结果的可用性。
在一个实施例中,渲染引擎1128基于命令来实施图形操作,并且将渲染后的数据输出到存储器中的渲染目标,这些渲染后的数据最终写入存储器中的帧缓冲器1124中。在一个实施例中,一个或多个处理器可以与GPU1108并行地实施一些操作,并且将那些结果输出到帧缓冲器1124。然后,显示引擎从帧缓冲器1124取出像素数据,并且将像素数据输出到显示器。
在一些实施例中,系统存储器可以通过GTT1118而映射到多个虚拟地址空间中。在一个实施例中,2GB全局虚拟地址空间可供GPU1108和一个或多个处理器1102来访问,并且通过GTT1118中的全局页表进行映射。在一个实施例中,经由多个2GB本地虚拟地址空间,针对渲染引擎支持本地图形存储器。
图12示出了根据实施例的图形虚拟环境内的示例性的全局以及每进程图形转换表。在一个实施例中,图形虚拟环境1200包括全局GTT1288以及每进程GTT1289以配置图形模块1290(例如,图11中的渲染引擎1128、显示引擎1138)对存储器1296的访问。在一个实施例中,利用两级分页结构来实现本地、每进程GTT。第一级包括页目录表(PDT)1292中的页目录条目(PDE)。页目录1292中的PDE包含页表基地址。第二级包括页表(例如,1294)。每个页表1294均包括将被映射到图形模块1290的页帧地址(例如,页帧号码)存储到物理存储器中的页表条目(PTE)。
虽然图示为分离的,但是在一个实施例中,每进程GTT的页表目录1292中的至少一些条目包含在全局GTT1288中。
GPU虚拟化
本文所描述的实施例可以通过GPU虚拟化系统来进行虚拟化。GPU虚拟化使得虚拟机内的虚拟GPU(vGPU)能够访问由GPU硬件提供的全部功能。虚拟GPU可以被呈现给多个客体虚拟机(VM)。客体VM能够访问全部GPU特征的阵列,并且使用本地GPU驱动软件来管理虚拟图形处理器。vGPU背景在每个定量或事件切换,其中每个VM的vGPU定期地变成“所有者客体”。在一个实施例中,背景开关可以发生于每个GPU渲染引擎中。定期开关允许多个VM以对于用户透明的方式来共享物理GPU。
在一个实施例中,虚拟GPU经由客体与阴影图形转换表(GTT)来管理图形存储器映射,其将图形处理器存储器映射到系统存储器。每个VM具有客体GTT以从图形存储器页号转换成客体存储器页号(GPN)。阴影GTT条目从图形存储器页号转换成主存储器页号(HPN)。在一个实施例中,阴影GTT被共享,并且保持对于多个VM的转换。在一个实施例中,每个VM都包括每进程GTT和全局GTT。本文所描述的GTT同步机制可以用来将全局GTT和每进程GTT进行同步。
在一个实施例中,客体GTT和阴影GTT经由混合阴影构造方案(HSCS)来进行同步,HSCS基于客体GTT访问启发法来实现同步或异步阴影GTT实现。在一个实施例中,在同步操作期间,客体GTT的存储器页被写保护。对于客体GTT的每次更新使得进行由中介者处理的写保护陷阱(trap)。VM中介者通过在每个策略中对阴影GTT和客体GTT实施对应的更新来处理陷阱。在一个示例中,可以用GPN来更新客体GTT,并且可以用HPN来更新阴影GTT。在同步操作中,即使当客体不是所有者客体时,也保持客体GTT和阴影GTT同步。在异步操作中,客体GTT未被写保护,并且客体可以自由地更新GTT条目。当客体VM变成某渲染环的所有者客体时,处理器能够通知GPU,命令执行准备就绪(例如,通过尾寄存器更新)。在一个实施例中,VMM俘获该通知,并且在提交命令之前重建阴影GTT。在一个实施例中,可以允许客体GTT不再与阴影GTT同步(例如,异步地操作),直到命令被实际提交给物理GPU。
图13是根据实施例的示例性的图形虚拟环境的框图。在一个实施例中,虚拟环境包括:主机或服务VM1302,其可以是与主机(例如,类型2)管理程序/虚拟机监控器(VMM)1320连接的主机操作系统,其中VMM作为主机OS核心组件的部分驻存,或者操作于裸金属(例如,类型1)VMM1320接口上的特权服务VM,其中VMM位于特权服务VM下方。VMM1320针对一个或多个客体VM(例如,VM11304、VM21306)提供对图形处理器(例如,GPU)1330的虚拟化访问。客体VM1304、1306和主机/服务VM1302可以装载有本地GPU驱动器1308a-b,其可以是用来控制未经虚拟化GPU的GPU驱动软件的版本。在一个实施例中,主机/服务VM1302另外地包括中介者1312,该中介者包括经由VMM1320内的vGPUVMM模块1324来管理GPU虚拟化的vGPU设备模型驱动器1314。中介者1312可以是本地GPU驱动器的部分,或者为单独的模块。
在一个实施例中,中介者的操作基于类型1或类型2管理程序的使用而不同。对于类型2管理程序,钩可以置于驱动器代码中以便vGPU进行调用以访问由中介者1312提供的功能。对于类型1管理程序,软件陷阱(softwaretrap)可以用来使中介者1312向vGPU提供功能。将理解的是,在本文描述了俘获或者俘获与仿真模型的使用,可以利用类型2管理程序来提供类似的功能,利用驱动器代码中的软件钩来访问vGPU中介者1312。因此,本文所描述的实施例不限于任何特定类型的管理程序。
在一个实施例中,启用中介的传递,其中客体VM1304、1306能够直接访问GPU1330内的性能关键资源,而无需VMM1320的干预。在该实施例中,能够利用到GPU1330的传递调用1316来实施来自VM的性能关键操作(例如,渲染操作)。然而,利用俘获与仿真模型来处理来自VM1304、1306的特权图形操作,其中VM访问1317触发被路由1318到中介者1312的软件陷阱。然后,中介者1312可以对该陷阱进行仿真,并且对GPU硬件实施对应的操作。在一个被配置为用于类型1管理程序的实施例中,中介者1312经由对VMM1320中的vGPUVMM模块1324的管理程序调用1319来对陷阱进行仿真,VMM1320中的vGPUVMM模块1324对GPU1330具有特权访问。在一个被配置用于类型2管理程序的实施例中,中介者1313对陷阱进行仿真,并且经由主机OS的本地驱动器1308a来操作GPU硬件,其中本地驱动1308a以特权模式进行操作。
在一个实施例中,在每个定量切换vGPU背景,其中每个VM定期地变成“所有者客体”。该定期切换允许多个VM以对于VM用户透明的方式来共享物理GPU。例如,当VM不是GPU的所有者客体时,客体可以准备命令缓冲器,并且对虚拟GPU图形状态使用进行编程。当VM变成vGPU的所有者客体时,VMM可以将准备好的命令缓冲器提交给GPU。在一个实施例中,当VM是所有者客体时,将命令缓冲器中的VM命令提供给GPU1330中的渲染引擎(例如,图11中的渲染引擎1128)。
在类型1管理程序中的客体VM以及服务VM的每个本地图形驱动器可以具有单独的客体GTT1311、1310,其包括全局GTT和每进程GTT。与每个客体GTT修改同步地或者在渲染命令被提交之前异步地,使用vGPU设备模型驱动器1314的中介者1312将客体GTT1311、1310阴影化成阴影GTT1322。在类型2VMM中,主机的本地图形驱动器可以额外地管理单独的阴影GTT。
执行GPU工作负荷的进程趋向于成批地分配和释放图形存储器,这减小了GTT修改对渲染进程的影响。因此,通常限制了由于保持客体GTT与阴影GTT同步所导致的俘获与仿真开销。然而,在客体频繁操纵GTT的情况下可能出现性能问题。例如,一些媒介解码基准由于图形存储器页的频繁交换而实现差的虚拟化性能,这引入了大量的GTT修改。
在一个实施例中,中介者1312包括判定客体正在执行对相邻GTT页修改的次数或者正在对同一GTT条目执行重复修改的次数的逻辑。在一个实施例中,该逻辑要确定在某时间段内超过限定阈值的GTT页表修改的次数(例如,每秒500次更新)。在一些实施例中,可以动态地确定精确的阈值。基于该确定,中介者能够去除对客体GTT的写保护,并且转换为异步操作,其中客体GTT将不与阴影GTT同步,直至客体VM命令准备好呈现给图形硬件。在一个实施例中,当VM变成所有者客体时,中介者随后对阴影GTT进行重建并且切换。在一个实施例中,当新的vGPU命令要提交给物理GPU时,中介者对阴影GTT进行重建以与客体GTT同步。
图14是进入客体图形转换表的异步模式的逻辑的流程图。对于客体GTT的访问模式的分析表明,客体VM在相邻块中实施客体GTT(例如,全局GTT或每进程GTT)修改。在一个实施例中,如果访问模式表明对相邻GTT的修改的次数或者对于同一GTT页的重复修改的次数,则中介者可以考虑是否异步地对客体GTT,或者客体GTT的至少一部分进行阴影化。
在一个实施例中,如1402处所示,中介者可以被配置为检测到GTT修改的块的数量和频率高于确定的阈值。响应于该检测,中介者能够转换为异步阴影GTT操作。当中介者去除对客体GTT的写保护并且允许GTT不与阴影GTT同步时,异步阴影GTT操作可以开始于框1404。在一时间段内,如框1406处所示,客体GTT将接收来自客体VM的写。当客体vGPU被调度(例如,vGPU背景被装载到物理GPU)和/或新一批的客体vGPU命令准备提交给GPU时,阴影GTT被重构,如1408处所示。一旦利用客体GTT重构阴影GTT,则客体VM命令能够被提交给图形处理器,如1410处所示。
图15A-B是根据实施例的阴影图形转换表重构的框图。图15A示出阴影GTT的全重构1506。图15B示出了阴影GTT的部分重构1516。
如图15A所示,已经被允许不再与现有的阴影GTT同步的整个写使能客体GTT1502(例如,图13中的全局GTT1388或每进程GTT1389)用来创建全重构阴影GTT1512。在一个实施例中,当新命令被提交给GPU时,从头重新创建全重构阴影GTT。在重构期间,客体GTT中的每个页目录条目或页表条目经审计而确保其引用允许客体VM访问的存储器。
如图15B所示,写使能客体GTT1504的部分(例如,图13中的全局GTT1388或每进程GTT1389)用来创建使用部分重构1516的混合阴影GTT1524,其中阴影GTT页的一部分与客体GTT同步,但是阴影GTT的另一部分不与客体GTT同步。对部分重构或全重构的选择可以基于在任意给定时间处客体修改的GTT页的数量来启发式地执行。例如,如果客体GTT1504的修改页的数量在阈值以下,则可以执行部分重构,其中客体GTT1504的页表条目或页目录条目的坏位(例如,修改后的状态指示符位)可以用来确定客体VM已经修改了哪些页帧号,并且仅同步与修改后的客体GTT页对应的阴影GTT页。能够通过复制现有的阴影GTT或者再次使用现有的阴影GTT作为基础,并且仅更新不再与客体GTT同步的GTT条目来创建部分重构的阴影GTT1524。
除了使用客体页坏位之外,可以使用多种不同的技术来执行对修改后客体页进行确定。在一个实施例中,经由从对写保护客体GTT页的客体VM访问的客体错误地址来确定修改后的GTT页。在一个实施例中,VMM可以使用单独的数据结构(例如,链路表、散列表、线性阵列)来跟踪客体GTT中被允许与阴影GTT异步的客体页的列表,并且使用该数据结构来确定哪些修改后的客体GTT页与对应的阴影GTT页同步,和/或使用额外的“坏”位来缩窄要同步的页的列表。
在另一实施例中,如果允许与阴影GTT不再同步的客体GTT页的数量非常大,并且客体GTT页不总是在每次对阴影GTT进行重构时都被修改,则上级页表的坏位可以用来进一步对标识出要在阴影GTT重构期间被更新的GTT页的进程进行缩窄。如图所示,GPN_11505a和GPN_n-11505b各自具有针对写使能GTT1504的页表或页目录条目设置的页表坏标记。因此,能够通过用坏页表条目1505a-b中包含的页帧或页表数据来更新现有的阴影GTT,从而创建示例性的部分重构的阴影GTT1524。
图16是对阴影图形转换表的至少一部分进行重构的逻辑的流程图。在一个实施例中,如1602处所示,虚拟GPU中介者(例如,图12中的中介者1212)确定用于GTT或GTT的部分的重构模式。在一个实施例中,对于由异步模式管理的GTT的部分,能够利用如1604处确定的部分重构或全重构来重建阴影GTT。在一个实施例中,当客体vGPU的命令被提交给物理GPU时,对阴影GTT进行重建。如果不对GTT进行部分重构,则在1606处中介者可以选择整个阴影GTT用于重构。否则,如果在1604处使能部分重构,则中介者能够基于在00132段提及的数据结构来选择具体的GTT页,以用于1607处的重构。
在1608处,中介者判定是否要重构所有的选定的不再同步的页(例如,如果使能全重构,则为整个阴影GTT,或者如果使能部分重构,则为全部选定的GTT页)。如果仅要重构坏页,则在1609处中介者可以复制或再使用现有的选定的阴影GTT页,并且在框1611处,基于客体GTT的页表或页目录条目中的坏位来创建对选定的GTT页的子选择。如果要完全重构阴影GTT,则在1610处创建新的阴影GTT。
在1612处,利用阴影GTT的选定的或子选定的部分来重构新的阴影GTT或现有的阴影GTT,该阴影GTT可以是整个GTT、之前选定的具体GTT页,或者基于客体GTT坏位而与客体GTT的子选择部分相关联的阴影GTT条目。在一个实施例中,在重构之后,任选地清除客体坏位,如1614处所示。
图17A-B是示出了用于变换而摆脱GTT的异步操作模式以及将GTT的至少子集变换到同步操作的示例性的逻辑的流程图。在一个实施例中,在执行图14所示的操作之后,包括一旦相关的阴影GTT同步则将命令提交给图形处理器,中介者经由vGPUVMM模块(例如,图13中的中介者1312和vGPUVMM模块1324)可以确定退出异步操作,并且返回客体与阴影GTT之间的同步操作。虽然按顺序地示出了操作,但是在一些实施例中,所示出的操作可以至少部分并行地执行。例如,可以同时进行多个独立的判定和评估。而且,可以在不同操作模式下管理客体全局或每进程GTT的不同部分,使得同步地管理GTT的一部分,而异步地管理GTT的不同的部分。另外,可以同步地管理全局GTT,而允许每进程GTT的至少部分与相关联的每进程阴影GTT异步地操作,直到命令被提交给GPU。
图17A是根据实施例的包括将GTT的至少部分转换为同步操作的逻辑的流程图。图17B是根据实施例的包括将GTT页的集合选择并且变换为同步操作的逻辑的流程图。
在一个实施例中,当开始到同步操作的变换时,如图17A中的1730处所示,中介者判定是否在1732处执行GTT的全变换。如果整个全局GTT或每进程GTT要变换到同步模式,则在1740处中介者能够将整个GTT转换为异步模式。在一个实施例中,在1738处,当完成到同步操作的变换时,全变换触发相关联的阴影GTT的全重构。
在一个实施例中,可以不对整个GTT执行到同步模式的变换。例如,如果中介者在1734处判定因为异步GTT页的数量超过页数阈值才触发到同步操作的变换,则在1742a处中介者可以选择要变换的一些GTT页。可选地,如1736处所示,可以由于各种原因而通过中介者逻辑来执行自发页选择。例如,在一个实施例中,监控异步GTT页的年龄以判定页的年龄是否超过年龄阈值。如果一些页超过年龄阈值,则在1736处中介者逻辑可以选择陈旧页的全部或一些以在1742a处变换到同步操作。
在1742a处对GTT页的选择可以基于预先确定的策略或者基于可以在运行时修改的动态策略来执行。用于在1742a处选择和变换单个GTT页的示例性的逻辑包含在图17B中。在1744处,硬件中任何高速缓存的GTT页的版本被冲刷,并且那些页被转换为同步操作。随后在1738处,中介者可以完成到同步操作的变换。在一个实施例中,变换GTT页的子集触发对相关联的阴影GTT的部分重构。
在一个实施例中,图17A的1742a处对GTT页的选择开始于图17B的1742b。用于选择和变换个体的GTT页的逻辑包括在1750处对页指针进行初始化。页指针可以是被初始化为由中介者维护的异步GTT页的空终结列表的顶部的寄存器或存储器地址。初始的空检查可以在遍历列表之前在1754处执行,其中空列表使得中介者在1764处对列表的完成发出信号。如果列表不为空,则对于列表的每个元素,中介者可以在1756处选择异步GTT页的列表中的页,并且在1758处判定页是否是退出异步模式的候选。在一个实施例中,1758处的判定是通过分析GTT页的元数据从而确定页的访问频率或者页已处于异步模式的时间长度、或者自上次修改该页起VM调度循环的次数来执行的。在一个实施例中,如果页被频繁地访问或者近期被访问,则中介者可以在1760处判定该页不是退出候选。然后,中介者可以在1763处选择列表中的下一页。可选地,如果在1760处该页是退出候选,则中介者可以使选定页从异步模式退出,并且在1763处选择列表中的下一页之前,从异步页列表中去除该页。在一个实施例中,当列表被全遍历时,在1763处所选的列表中的下一页将为空。因此,在1754处的空列表判定将使得在1764处中介者对列表的完成发出信号。然后,对于图17A中的1738处的选定的GTT,中介者可以完成到同步操作的变换。
图18是示出了根据实施例的混合同步的框图。在一个实施例中,使用混合同步的客体VM中介者利用同步模式来管理GTT的部分,并且利用异步模式来管理GTT的不同的部分。如图所示,一个实施例使用包括用于多个客体GTT的阴影条目的共享阴影GTT1830。虽然示出了共享阴影GTT1830,但是在另一实施例中,使用与共享阴影GTT1830类似的每VM阴影GTT。
在一个实施例中,第一VM客体GTT1801包括一组客体页号,该一组客体页号包括与包含HPN(A)1833的关联的一组主页号连续同步的GPN(A)1803,使得GPN(A)1803和HPN(A)1833连续地指向系统存储器1820中的同一页帧(例如,页帧(A)1823)。在一个实施例中,共享的阴影GTT1830还包括一组主页号,该组主页号包括不与第二VM客体GTT1802(包括GPN(B)1804)中的其关联的客体页号同步(例如,异步)的HPN(B)1834。相应地,在一个实施例中,HPN(B)1834和GPN(B)1804不指向系统存储器1820中的同一页帧(例如,页帧(B)1824),直到客体VM(例如,客体VM的vGPU渲染引擎)命令被提交给GPU。
图19是根据实施例的执行混合同步的逻辑的流程图。在一个实施例中,客体VM中介者在1902处针对客体全局GTT或客体每进程GTT配置同步操作。在同步操作期间,中介者对GTT的客体写进行仿真,如1904处所示。在一个实施例中,中介者使用俘获与仿真模型来对客体GTT写进行仿真。如果混合同步逻辑被配置为在1906处选择性地俘获客体GTT写保护错误,则在一个实施例中,中介者在俘获由对GTT的客体写导致的写保护错误期间对客体GTT写(针对同步模式下的那些GTT页)进行仿真。在一个实施例中,中介者可以在类型1VMM中的主OS中运行,并且与主机图形驱动器一起工作。GTT的主机OS写被视为GTT的客体(诸如类型2VMM中的服务VM)写,并且中介者没有俘获主机图形驱动器的GTT写错误。相反,如1909处所示,GTT的一个实施例驱动器访问由中介者钩住,其使用对中介者的图形驱动器调用来实施针对主机OS的GTT写(并且此后视为客体GTT写)。在一个实施例中,俘获与钩配置基于用来将GTT进行虚拟化的管理程序,其中当类型1管理程序处于使用中时在1908处俘获客体GTT写,并且当类型2管理程序处于使用中时,在1909处使用中介者钩。
尽管有对客体GTT写进行仿真的机制,但如果在1910处中介者检测到对客体GTT的部分的频繁客体GTT修改,则在1912处中介者能够针对客体GTT的部分来配置异步操作,允许客体写入客体GTT,而无需中介者仿真。在一个实施例中,如1914处所示,同步逻辑包括寄存器、高速缓存存储器或系统存储器中的数据结构来跟踪未被写保护或者正在与阴影GTT异步地进行操作的客体GTT的部分。如1916处所示,在将命令提交给GPU硬件之前,同步逻辑基于与阴影GTT异步的客体GTT的跟踪部分来对阴影GTT的相关部分进行重构。
在一个实施例中,可以允许客体GTT的至少部分不与阴影GTT的其关联部分同步,直到提交了硬件命令。然而,GTT应当在命令被提交给硬件或者GPU命令的执行失败之前被正确地同步。在GPU硬件被配置为对GTT页进行高速缓存的情况下,GPU硬件可以在执行图形命令的同时来对硬件中的相关GTT页进行高速缓存。
在一个实施例中,如图15和图16所示,客体GTT的异步部分的修改的状态指示位(例如,坏位)用来确定客体GTT的异步部分的变化的元素。在该实施例中,仅实际上改变的那些客体GTT元素才用来重构阴影GTT的部分,允许现有的阴影GTT用作对新阴影GTT的重构的基础。
可以利用硬件元件、软件元素或两者的组合来实现各个实施例。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任意组合。判定实施例是否是利用硬件元件和/或利用软件元素来实现的可以根据任意多种因素而不同,诸如期望的计算速率、功率级、耐热性、处理周期预算、输入数据率、输出数据率、存储器资源、数据总线速度和其他设计或性能约束。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性的指令来实现,这些代表性的指令代表了处理器内的各种逻辑,当通过机器读取时,这些逻辑使机器制成实施本文所描述的技术的逻辑。这些称为“IP核”的表示可以存储在有形的、机器可读介质上,并且被供应给各客户或制造设施以装载到实际上制作逻辑或处理器的制作机器中。
实施例能够适用于所有类型的半导体集成电路(“IC”)芯片。这些IC芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片等。另外,在一些图中,利用线来表示信号传导线。一些可以不同,以指示更多构成信号路径,具有号码标签,来指示构成信号路径的数量,和/或在一端或多端有箭头,来指示主信息流方向。然而,这不应以限制的方式进行解释。相反,这些附加的细节可以与一个或都给示例性实施例结合使用以便于更容易理解电路。任何表示出的信号线,无论是否具有额外的信息,实际上都可以包括可以在多个方向上行进并且可以通过任何适合类型的信号方案来实现的一个或多个信号,例如利用差分对实现的数字线路或模拟线路、光纤线路和/或单端线路。
已经给出了示例尺寸/模型/值/范围,但是实施例不限于这些。随着制造技术(例如,光刻法)日趋成熟,期望可以制造出更小尺寸的器件。另外,为简化图示和讨论,以及不导致实施例的一些方面不清楚,可以或者可以不在图中显示出公知的与IC芯片和其他组件的电/接地连接。此外,为了避免混淆实施例,同时考虑到如下事实以框图形式示出布置,并且关于这些框图布置实现的具体细节主要取决于要实现实施例的平台,即,这些具体细节应当在本领域技术人员的能力范围内。在为了描述示例性实施例而阐述具体细节(例如,电路)的情况下,对于本领域技术人员显而易见的是,可以在不具有这些具体细节或者可以在具有这些具体细节的变型例的情况下来实现实施例。描述因此应视为示例性的,而不是限制性的。而且,结合一个实施例所描述的方面可以与本文所描述的其他实施例相结合。
例如,一些实施例可以利用机器或有形的计算机可读介质或制品来实现,这些机器或有形的计算机可读介质或制品可以存储指令或指令集,如果由机器执行,这些指令或指令集可以使得机器根据实施例来实施方法和/或操作。该机器可以包括例如任何适合的处理平台、计算平台、计算设备、处理设备、计算系统、处理系统、计算机、处理器等,并且可以利用任何适合的硬件和/或软件的组合来实现。
除非具体指出,否则可以理解诸如“处理”、“运算”、“计算”、“确定”等的术语是指计算机或计算系统或类似电子计算设备的动作和/或处理,其将表征为计算系统的寄存器和/或存储器内的物理量(例如,电子)的数据操纵和/或转换为类似地表征为计算系统的存储器、寄存器或其他此类信息存储、传输或显示设备内的物理量的其他数据。实施例不限于该上下文。
术语“耦合”在此处可以用来指代所讨论组件之间的任何类型的关系,可以为直接的或间接的,并且可以应用于电的、机械的、流体的、光学的、电磁的、机电的或其他的连接。另外,术语“第一”、“第二”等在此处仅用来方便论述,除非特别指出否则不带有任何特定的时间或时间顺序的意义。
如在本申请和权利要求书中使用的,通过术语“一个或多个”所连结的项列表可以表示所列项的任意组合。例如,短语“A、B或C中的一个或多个”可以表示A、B、C、A和B、A和C、B和C以及A、B和C。
将理解的是,本文中描述了多种类型的管理程序,包括‘托管的’(例如,类型2)或‘裸金属’(例如,类型1)管理程序。所描述的技术不限于管理程序的任何特定的类型、形式或模型,并且能够应用于经由类型1、类型2或者任何形式的混合管理程序使能的虚拟GPU上。
本文所描述的实施例是用于管理虚拟机的系统、方法和装置。在一个实施例中,该装置包括:图形处理器,其与虚拟机监控器(VMM)耦合以将虚拟图形处理器呈现给第一虚拟机;以及用于虚拟图形处理器的中介者,其将对第一虚拟机的客体图形转换表(GTT)的修改同步地阴影化成VMM的阴影GTT。中介者还可以被配置为检测对第一客体GTT的修改的频率超过阈值,并且响应于该检测,将第一客体GTT的至少部分异步地阴影化成阴影GTT。虽然在一个实施例中,中介者可以被配置为检测到修改频率高于阈值,但是中介者还可以被配置为检测到相邻修改的数量超过阈值,或者对GTT的同一区域的重复修改次数超过阈值。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性数据来实现,该代表性数据表示处理器内的各逻辑,当通过机器读取这些逻辑时,使机器制造实施本文所描述的技术的逻辑。该称为“IP核”的表示可以存储在有形的、机器可读介质(“磁带”)上,并且被供应给各客户或制造设施以装载到实际上制作逻辑或处理器的制造机器中。例如,诸如由ARMHoldings,Ltd.开发的图形解决方案MaliTM系列以及由中国科学院计算技术研究所(ICT)开发的LoongsonIP核的IP核可以经过认证或出售给各客户或持证者,如德州仪器(TexasInstruments)、Qualcomm、苹果(Apple)、或三星(Samsung)以及在这些客户或持证者生产的处理器中实现。
这些IP代码的开发包括使用可以用来对本文所描述的具体实施例GPU硬件进行建模的仿真软件或硬件。表示IP核设计的数据可以被提供给制造设施,在制造设施处,可以通过第三方制成与所描述的实施例相关联的功能。
本领域技术人员将从前面的说明中了解,能够以各种形式来实现实施例的宽泛技术。因此,虽然已经结合其特定示例描述了实施例,但是实施例的真正范围不应限于此,因为在研究了附图、说明书和随附的权利要求书之后,其他修改对于本领域的技术人员将变得显而易见。

Claims (25)

1.一种用于管理虚拟机的装置,所述装置包括:
图形处理器,其与虚拟机监控器(VMM)耦合以将虚拟图形处理器呈现给第一虚拟机;以及
中介者,便于所述虚拟图形处理器将对所述第一虚拟机的第一图形转换表(GTT)的修改同步地阴影化成所述VMM的阴影GTT,所述中介者进一步检测对所述第一GTT的修改的频率已超过阈值,并且响应于所述检测,将所述第一GTT的至少部分异步地阴影化成所述阴影GTT。
2.如权利要求1所述的装置,其中,所述中介者进一步在来自所述第一虚拟机的用于所述虚拟图形处理器的命令被提交给所述图形处理器之前,对所述第一GTT的至少所述部分进行异步地阴影化。
3.如权利要求1所述的装置,其中,所述第一GTT将用于所述虚拟图形处理器的第一图形存储器地址转换成系统存储器地址。
4.如权利要求1所述的装置,其中,所述VMM中的所述阴影GTT将主机图形存储器地址转换成系统存储器地址。
5.如权利要求1所述的装置,其中,所述第一虚拟机利用本地图形驱动器软件来管理所述虚拟图形处理器。
6.如权利要求1所述的装置,其中,所述中介者包括用于所述虚拟图形处理器的设备模型。
7.如权利要求1所述的装置,其中,所述第一GTT包括全局GTT和每进程GTT。
8.如权利要求7所述的装置,其中,所述每进程GTT包括页目录表和页表。
9.如权利要求1-8中任一项所述的装置,其中,所述VMM进一步将第二虚拟图形处理器呈现给第二虚拟机。
10.如权利要求9所述的装置,其中,所述中介者进一步将对第二虚拟机的第二图形转换表(GTT)的修改同步地阴影化成所述VMM的阴影GTT。
11.如权利要求10所述的装置,其中,所述中介者进一步检测对所述第二GTT的修改的频率超过阈值,并且响应于所述检测,在来自所述第二虚拟机的用于所述虚拟图形处理器的命令被提交给所述图形处理器之前将所述第二GTT异步地阴影化成所述阴影GTT。
12.一种管理虚拟机的方法,所述方法包括:
将第一虚拟机的第一图形转换表(GTT)同步地阴影化成虚拟机监控器(VMM)的阴影GTT;
检测对所述第一GTT的相邻GTT条目的至少第一部分的修改的数量已超过阈值;
配置用于所述第一GTT的至少所述第一部分的异步操作,所述配置包括在提交来自所述第一虚拟机的图形命令之前对与所述第一GTT的所述第一部分相关联的所述阴影GTT的至少部分进行重构。
13.如权利要求12所述的方法,其中,将所述第一GTT同步地阴影化成所述阴影GTT包括:通过所述第一虚拟机来俘获对所述第一GTT的每次写,并且对所述第一GTT的每次写进行仿真。
14.如权利要求13所述的方法,其中,俘获对所述第一GTT的每次写并且对所述第一GTT的每次写进行仿真包括:响应于修改所述第一GTT的试图而接收写保护俘获,修改所述第一GTT,以及将所述修改阴影化成所述阴影GTT。
15.如权利要求12-14中的任一项所述的方法,其中,配置用于所述第一GTT的至少所述第一部分的异步操作包括:从所述第一GTT的至少所述第一部分去除写保护。
16.一种用于管理虚拟机的系统,所述系统包括:
与协处理器设备耦合的一个或多个处理器;
将虚拟协处理器呈现给虚拟机的虚拟机监控器(VMM);以及
中介者模块,其使所述一个或多个处理器用于:
检测对所述虚拟机的存储器转换表的修改的频率已超过阈值,其中,所述存储器转换表受所述虚拟机保护而不被修改,并且对所述存储器转换表的修改包括对所述存储器转换表的所述修改进行仿真;
从所述存储器转换表的至少部分去除保护以允许在不进行仿真的情况下对所述存储器转换表进行修改;
在用于所述虚拟协处理器的命令被提交给所述协处理器设备之前,基于修改的存储器转换表来构造阴影转换表。
17.如权利要求16所述的系统,其中,所述中介者模块使所述一个或多个处理器用于:
判定所述虚拟协处理器是否被调度来向所述协处理器设备提交命令;以及
在对所述阴影转换表进行构造之后,提交用于所述虚拟协处理器的命令。
18.如权利要求17所述的系统,其中,所述转换表是图形转换表(GTT),并且所述虚拟协处理器是虚拟图形处理器。
19.如权利要求18所述的系统,其中,所述GTT是用于所述虚拟图形处理器的客体GTT。
20.如权利要求19所述的系统,其中,所述中介者模块进一步使所述一个或多个处理器在对所述阴影转变表进行构造期间,同步地对所述客体GTT的受保护部分的第一修改进行仿真,同步地将所述第一修改镜像到所述阴影转换表,以及异步地将对所述客体GTT的未受保护部分的第二修改镜像到所述阴影转换表。
21.如权利要求19所述的系统,其中,所述中介者模块进一步使所述一个或多个处理器在对所述阴影转换表进行全重构期间来将所述第二修改镜像到所述阴影转换表。
22.如权利要求19所述的系统,其中,所述中介者模块进一步使所述一个或多个处理器在所述阴影转换表的部分重构期间来将所述第二修改镜像到所述阴影转换表。
23.如权利要求19所述的系统,其中,所述中介者模块进一步使所述一个或多个处理器通过执行进一步的操作:
选择用于重构的阴影转换表页;以及
再使用现有的阴影转换表页,
来对所述阴影转换表进行部分重构。
24.如权利要求23所述的系统,其中,所述中介者模块进一步使所述一个或多个处理器通过执行进一步的操作:
基于与所选择的阴影转换表页相关联的GTT页的状态指示符来创建用于重构的阴影转换表页的子选择,
来对所述阴影转换表进行部分重构。
25.如权利要求24所述的系统,其中,所述中介者模块进一步使所述一个或多个处理器清除所述GTT页的所述状态指示符。
CN201480030019.9A 2014-12-24 2014-12-24 混合请求式图形转换表影子化 Expired - Fee Related CN105518746B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/094804 WO2016101172A1 (en) 2014-12-24 2014-12-24 Hybrid on-demand graphics translation table shadowing

Publications (2)

Publication Number Publication Date
CN105518746A true CN105518746A (zh) 2016-04-20
CN105518746B CN105518746B (zh) 2018-12-04

Family

ID=55130149

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480030019.9A Expired - Fee Related CN105518746B (zh) 2014-12-24 2014-12-24 混合请求式图形转换表影子化

Country Status (7)

Country Link
US (1) US9619860B2 (zh)
KR (1) KR101751629B1 (zh)
CN (1) CN105518746B (zh)
DE (1) DE112014002771T5 (zh)
GB (1) GB2535823B (zh)
TW (1) TWI570564B (zh)
WO (1) WO2016101172A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108734639A (zh) * 2017-04-24 2018-11-02 英特尔公司 通过跳帧来减小功率
CN111462295A (zh) * 2020-03-27 2020-07-28 咪咕文化科技有限公司 增强现实合拍中的阴影处理方法、设备及存储介质

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10481937B2 (en) * 2015-03-23 2019-11-19 Intel Corporation Shadow command ring for graphics processor virtualization
US10983821B2 (en) 2016-09-26 2021-04-20 Intel Corporation Apparatus and method for a hybrid layer of address mapping for a virtualized input/output (I/O) implementation
US10504259B2 (en) 2017-04-24 2019-12-10 Intel Corporation Separately processing regions or objects or interest from a render engine to a display engine or a display panel
CN107436797A (zh) * 2017-08-14 2017-12-05 深信服科技股份有限公司 一种基于虚拟化环境的指令数据处理方法及装置
EP3688583A1 (en) 2017-09-26 2020-08-05 INTEL Corporation Methods and apparatus to process commands from virtual machines
CN108170519B (zh) * 2018-01-25 2020-12-25 上海交通大学 优化可扩展gpu虚拟化的系统、装置和方法
CN112673348A (zh) * 2018-09-19 2021-04-16 英特尔公司 混合虚拟gpu协同调度
US11068175B2 (en) * 2018-12-21 2021-07-20 Intel Corporation Technology to manage capacity loss in storage drives
US11113091B2 (en) 2019-03-12 2021-09-07 Arm Limited Apparatus for forwarding a mediated request to processing circuitry in response to a configuration request
US11302857B2 (en) 2019-11-19 2022-04-12 International Business Machines Corporation Cryogenic refrigeration for low temperature devices
US11211542B2 (en) 2019-11-19 2021-12-28 International Business Machines Corporation Cryogenic refrigeration for low temperature devices

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060259734A1 (en) * 2005-05-13 2006-11-16 Microsoft Corporation Method and system for caching address translations from multiple address spaces in virtual machines
US20080001958A1 (en) * 2006-06-30 2008-01-03 Balaji Vembu Apparatus and method for memory address re-mapping of graphics data
CN101107593A (zh) * 2005-01-28 2008-01-16 英特尔公司 支持虚拟机环境中的地址转换的方法及装置
CN101258484A (zh) * 2005-07-08 2008-09-03 微软公司 用于图形适配器的虚拟化的资源管理
CN101923520A (zh) * 2004-12-29 2010-12-22 英特尔公司 虚拟化中图形地址的一步地址转换
CN104081346A (zh) * 2012-02-07 2014-10-01 英特尔公司 用于使用跟踪数据消除处理器间中断来支持多处理器虚拟机环境中的地址转换的方法和设备

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6362826B1 (en) 1999-01-15 2002-03-26 Intel Corporation Method and apparatus for implementing dynamic display memory
US7370324B2 (en) 2003-09-30 2008-05-06 Intel Corporation Switching between a service virtual machine and a guest virtual machine in a virtual machine monitor environment
US7451443B2 (en) * 2003-10-01 2008-11-11 Hewlett-Packard Development Company, L.P. Online computer maintenance utilizing a virtual machine monitor
US7421689B2 (en) 2003-10-28 2008-09-02 Hewlett-Packard Development Company, L.P. Processor-architecture for facilitating a virtual machine monitor
JP4978008B2 (ja) * 2006-01-11 2012-07-18 株式会社日立製作所 仮想計算機上でのページテーブルアドレスの変更を高速化する方法
CN100466929C (zh) 2006-02-24 2009-03-11 中芯国际集成电路制造(上海)有限公司 具有可移除钢脚趾罩的净室安全鞋物件和处理该鞋的方法
US7544594B2 (en) 2006-06-28 2009-06-09 Intel Corporation Method of forming a transistor having gate protection and transistor formed according to the method
US8065687B2 (en) * 2007-01-05 2011-11-22 Moka5, Inc. Bypass virtualization
TWI342521B (en) 2007-07-13 2011-05-21 King Yuan Electronics Co Ltd System and method for managing virtual machines
WO2009123640A1 (en) 2008-04-04 2009-10-08 Hewlett-Packard Development Company, L.P. Virtual machine manager system and methods
US8359422B2 (en) * 2009-06-26 2013-01-22 Vmware, Inc. System and method to reduce trace faults in software MMU virtualization
US20110102443A1 (en) * 2009-11-04 2011-05-05 Microsoft Corporation Virtualized GPU in a Virtual Machine Environment
US8635615B2 (en) 2011-05-14 2014-01-21 Industrial Technology Research Institute Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof
US9672583B2 (en) 2011-12-21 2017-06-06 Intel Corporation GPU accelerated address translation for graphics virtualization
US9146762B2 (en) * 2012-08-23 2015-09-29 Citrix Systems, Inc. Specialized virtual machine to virtualize hardware resource for guest virtual machines
US8989183B2 (en) 2012-10-10 2015-03-24 Microsoft Technology Licensing, Llc Virtual machine multicast/broadcast in virtual network
US9363187B2 (en) * 2012-11-28 2016-06-07 Nvidia Corporation Jitter buffering system and method of jitter buffering
TWI588751B (zh) 2013-05-31 2017-06-21 聯想企業解決方案(新加坡)有限公司 透過基板管理控制器管理虛擬機器的電腦主機與方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101923520A (zh) * 2004-12-29 2010-12-22 英特尔公司 虚拟化中图形地址的一步地址转换
CN101107593A (zh) * 2005-01-28 2008-01-16 英特尔公司 支持虚拟机环境中的地址转换的方法及装置
US20060259734A1 (en) * 2005-05-13 2006-11-16 Microsoft Corporation Method and system for caching address translations from multiple address spaces in virtual machines
CN101258484A (zh) * 2005-07-08 2008-09-03 微软公司 用于图形适配器的虚拟化的资源管理
US20080001958A1 (en) * 2006-06-30 2008-01-03 Balaji Vembu Apparatus and method for memory address re-mapping of graphics data
CN101484883A (zh) * 2006-06-30 2009-07-15 英特尔公司 用于重新映射图形数据的存储器地址的装置和方法
CN104081346A (zh) * 2012-02-07 2014-10-01 英特尔公司 用于使用跟踪数据消除处理器间中断来支持多处理器虚拟机环境中的地址转换的方法和设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108734639A (zh) * 2017-04-24 2018-11-02 英特尔公司 通过跳帧来减小功率
CN111462295A (zh) * 2020-03-27 2020-07-28 咪咕文化科技有限公司 增强现实合拍中的阴影处理方法、设备及存储介质
CN111462295B (zh) * 2020-03-27 2023-09-05 咪咕文化科技有限公司 增强现实合拍中的阴影处理方法、设备及存储介质

Also Published As

Publication number Publication date
KR20160089863A (ko) 2016-07-28
CN105518746B (zh) 2018-12-04
GB2535823B (en) 2021-08-04
KR101751629B1 (ko) 2017-06-27
US9619860B2 (en) 2017-04-11
DE112014002771T5 (de) 2016-10-13
TWI570564B (zh) 2017-02-11
TW201636854A (zh) 2016-10-16
GB201518811D0 (en) 2015-12-09
WO2016101172A1 (en) 2016-06-30
US20160292816A1 (en) 2016-10-06
GB2535823A (en) 2016-08-31

Similar Documents

Publication Publication Date Title
CN105518746B (zh) 混合请求式图形转换表影子化
CN108369747B (zh) 用于在光线追踪架构中提取和使用路径着色一致性的方法和装置
CN108701368B (zh) 用于经实施例化的几何结构的更有效的光线跟踪方法和装置
CN108694688A (zh) 用于在图形处理架构中管理数据偏置的设备和方法
CN108694072A (zh) 用于高效图形虚拟化的设备及方法
US11210841B2 (en) Apparatus and method for implementing bounding volume hierarchy (BVH) operations on tesselation hardware
CN108694034A (zh) 用于在虚拟化图形处理环境中的远程显示和内容保护的设备及方法
CN109564695A (zh) 用于高效3d图形流水线的装置和方法
TWI632524B (zh) 以邊緣爲基礎之覆蓋遮罩壓縮技術
TW202125239A (zh) 用於使用阿法值來改善光線追蹤效率的設備及方法
CN105518741A (zh) 用于管理虚拟图形处理器单元的装置和方法
CN107077833B (zh) 用于最后排序架构的高效的帧到帧相干性利用的装置和方法
CN109643277A (zh) 用于中介传递和共享存储器页合并的装置和方法
CN105518623A (zh) 用于在虚拟执行环境中进行高效的图形处理的装置和方法
CN108734638A (zh) 自适应子分片的系统、设备和方法
CN108694685A (zh) 改进的图形处理器微架构内的多分辨率图像平面渲染
CN112231094A (zh) 用于配给虚拟化的多片图形处理硬件的装置和方法
CN113450447A (zh) 来自分割掩模的重构数据的依赖于视图的雕刻
CN108604185A (zh) 用于将工作负荷有效地提交到高性能图形子系统的方法和装置
CN108780585B (zh) 用于光线追踪架构的采样模式生成的方法和装置
CN113052746A (zh) 用于多适配器编码的装置和方法
CN116302107A (zh) 自调谐线程调遣策略
DE102020113789A1 (de) Asynchroner ausführungsmechanismus
CN112335258A (zh) 从比赛参与者视角的自动视野估计
CN116166608A (zh) 运行时简档引导的工作负载执行

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20181204

Termination date: 20211224