CN112889083A - 支持完全虚拟化图形架构中的自修改图形工作负载 - Google Patents
支持完全虚拟化图形架构中的自修改图形工作负载 Download PDFInfo
- Publication number
- CN112889083A CN112889083A CN201880095087.1A CN201880095087A CN112889083A CN 112889083 A CN112889083 A CN 112889083A CN 201880095087 A CN201880095087 A CN 201880095087A CN 112889083 A CN112889083 A CN 112889083A
- Authority
- CN
- China
- Prior art keywords
- command
- graphics
- command buffer
- guest
- semaphore
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/84—Protecting input, output or interconnection devices output devices, e.g. displays or monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
系统、设备和方法可以提供在与虚拟机相关联的访客命令缓冲器中设置写保护标志、并且响应于错误而将信号量命令注入到阴影命令缓冲器中的技术。错误与由在图形硬件中执行的代码将图形命令写入访客命令缓冲器相对应。在一个示例中,该技术还响应于图形硬件中的上下文切换来对图形命令进行安全性扫描,其中上下文切换与信号量命令相关联。
Description
技术领域
实施例总体上涉及图形架构。更具体地,实施例涉及支持完全虚拟化图形架构中的自修改图形工作负载。
背景技术
虚拟化图形处理单元(vGPU)架构可以在模拟计算系统的虚拟机(VM)中执行图形工作负载(例如,三维/3D和/或计算工作负载)。如果图形工作负载包括在执行期间填充VM内的命令缓冲器的自修改代码,则可能引起安全性隐患。
附图说明
通过阅读以下说明书和所附权利要求并通过参考以下附图,实施例的各种优势对本领域技术人员将变得显而易见,其中:
图1是根据实施例的支持特权自修改代码的虚拟化图形架构的示例的框图;
图2是根据实施例的操作安全性增强的计算系统的方法的示例的流程图;
图3是根据实施例的命令边界位映射的示例的图示;
图4是根据实施例的将信号量命令注入到阴影缓冲器中的示例的图示;
图5是根据实施例的安全性增强的计算系统的示例的框图;
图6是根据实施例的半导体封装设备的示例的图示;
图7是根据实施例的处理器的示例的框图;以及
图8是根据实施例的基于多处理器的计算系统的示例的框图。
具体实施方式
现在转到图1,示出了虚拟化图形架构10,其中虚拟机(VM)12包括虚拟图形处理器14(例如,vGPU)和访客命令缓冲器16(例如,环形缓冲器、特权批量缓冲器)。所图示的访客命令缓冲器16通常存储与图形工作负载(例如,3D和/或计算工作负载)相关联的命令,其中虚拟图形处理器14从访客命令缓冲器16中检取命令并将这些命令提交给中介器18以进行进一步处理。在一个示例中,架构10包括VM 12的多个独立实例并且每个VM 12经由虚拟机管理器(VMM,例如,管理程序)与中介器18进行通信。所图示的中介器18包括命令扫描器20,该命令扫描器20分析来自访客命令缓冲器16的命令以确定该命令是否存在安全性风险。不存在安全性风险的命令被放置到阴影命令缓冲器22中,该阴影命令缓冲器22通常镜像访客命令缓冲器16。在实施例中,主机图形处理器驱动器24从阴影命令缓冲器22中检取命令并将这些命令作为工作负载提交/分派到图形硬件26(例如,高度并行化图形执行单元/EU的阵列、图形流水线等)。
在一个示例中,由图形硬件26执行的工作负载包括自修改代码28,该自修改代码28将图形命令30写入访客命令缓冲器16。自修改代码28可提供优化的媒体解码器/编码器操作、涉及跨引擎合作的通用计算着色器操作,等等。在实施例中,图形硬件26隔离工作负载中的非特权自修改命令以进行安全性扫描。但是,如果自修改代码28是特权代码(例如,具有系统级或“环0”特权的代码),则图形硬件26可能缺乏扫描该自修改代码28中的安全性风险的能力。在所图示的示例中,输入/输出存储器映射单元(IOMMU)32设置访客命令缓冲器16的写保护标志(例如,读/写位),使得由自修改代码28将图形命令30写入访客命令缓冲器16的尝试将生成错误(例如,直接存储器访问/DMA写入错误)。当错误发生时,所图示的中介器18将信号量(semaphore)(例如,等待)命令(未示出)注入/写入阴影命令缓冲器22中。在实施例中,信号量命令是控制对图形硬件26的访问的同步指令,其可以在运行线程之间共享。
因此,当所图示的图形硬件26遇到阴影命令缓冲器22中的信号量命令时,图形硬件26将发起上下文切换并停止执行。响应于上下文切换,命令扫描器20对图形命令30进行安全性扫描。如果安全性扫描未检测到安全性风险,则所图示的命令扫描器20用图形命令30覆写信号量命令。因此,中介器18可以恢复图形硬件26对来自阴影命令缓冲器22的命令30的执行。
因此,所图示的解决方案使得特权自修改代码28能够由虚拟化图形架构10支持,而无需担心安全性漏洞(例如,恶意软件、间谍软件)。此外,所图示的解决方案在在其将命令30写入访客命令缓冲器16后不立即尝试对命令30进行扫描的意义上可以被认为是“惰性”扫描和更新系统。相反,所图示的解决方案等待直到图形硬件26准备好执行命令30。此类方法在自修改代码28在图形硬件26准备好执行命令之前多次写入访客命令缓冲器16时可能是有利的。在该情况下,命令扫描器20可以通过一次覆写阴影命令缓冲器22中的信号量命令的多个实例来实现更高的效率并且最小化性能影响。
图2示出了操作安全性增强的计算系统的方法34。方法34一般可被实现于虚拟图形架构中,虚拟图形架构诸如例如已讨论的架构10(图1)。更具体地,方法34可采用一组逻辑指令被实现为一个或多个模块,这组逻辑指令被存储在诸如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪存等之类的机器或计算机可读存储介质中,被存储在诸如例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)之类的可配置逻辑中,被存储在使用诸如例如专用集成电路(ASIC)、互补式金属氧化物半导体(CMOS)的电路技术或晶体管-晶体管逻辑(TTL)技术之类的固定功能逻辑硬件或其任何组合中。
例如,可以用一种或多种编程语言的任何组合来编写用于实施在方法34中所示的操作的计算机程序代码,这些编程语言包括诸如JAVA、SMALLTALK、C++等的面向对象的编程语言以及诸如“C”编程语言或类似编程语言的常规的过程编程语言。另外,逻辑指令可包括汇编程序指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、使对于硬件(例如,主机处理器、中央处理单元/CPU、微控制器等)而言是原生的电子电路和/或其他结构组件个性化的状态信息。
所图示的处理框36提供在与虚拟机相关联的访客命令缓冲器中设置写保护标志。在一个示例中,可经由支持DMA的I/O(输入/输出)总线访问访客命令缓冲器。在框38处,响应于错误,将信号量命令注入到阴影命令中。在所图示的示例中,错误与由在图形硬件中执行的代码将图形命令写入访客命令缓冲器相对应。在实施例中,在图形硬件中执行的代码是自修改代码和/或特权代码。如将更详细地讨论的,框38可包括基于命令边界位映射来确定错误是相对于访客命令缓冲器中的命令区域发生还是相对于访客命令缓冲器中的数据区域发生。如果错误相对于访客命令缓冲器中的命令区域发生,则框38将信号量命令注入到阴影命令缓冲器的命令区域中。相反,如果错误相对于访客命令缓冲器中的数据区域发生,则框38可以将信号量命令注入到与阴影命令缓冲器的数据区域相邻的命令区域中。
在框40处,响应于图形硬件中的上下文切换,对图形命令进行安全性扫描,其中上下文切换与信号量命令相关联。如果在框42处确定安全性扫描未在图形命令中检测到安全性风险,则所图示的框44用图形命令覆写信号量命令。然后可以允许图形硬件继续执行来自阴影命令缓冲器的图形命令。如果在框42处确定安全性扫描在图形命令中检测到安全性风险,则可以绕过框44。因此,所图示的方法34使得能够支持特权自修改代码而无需担心安全性漏洞(例如,恶意软件、间谍软件)。此外,方法34在自修改代码28在图形硬件准备好执行命令之前多次写入访客命令缓冲器时可能是有利的。在该情况下,命令扫描器可以通过一次覆写阴影命令缓冲器中的信号量命令的多个实例来实现更高的效率。
图3示出了VM 100,该VM 100包括虚拟图形处理器102和耦合至IOMMU 106的访客命令缓冲器104。IOMMU 106通常使用页表将设备可见的虚拟地址(例如,设备地址、I/O地址)映射到物理地址。在所图示的示例中,中介器108从虚拟图形处理器102接收命令,其中命令扫描器110分析命令以确定该命令是否存在安全性风险。如已经讨论的,可以将不存在安全性风险的命令放置在阴影命令缓冲器中。
在实施例中,在VM 100提交图形工作负载时,命令扫描器110生成命令边界位映射114。位映射114通常指示访客命令缓冲器104的命令和数据布局。在所图示的示例中,位映射114的右列指示左列中的相对应区域是命令区域还是数据区域。因此,立即寄存器加载操作(例如,MI_LOAD_REGISTER_IMM(MI_加载_寄存器_IMM))、无选项操作(例如,MI_NOOP(MI_无选项))或流水线控制操作(例如,PIPE_CONTROL(流水线控制))可以是由特权自修改代码写入到访客命令缓冲器104的命令区域的图形命令116。相反,寄存器偏移、寄存器值或一个或多个双字(例如,DWORD 1(双字1)至DWORD 6(双字6))可由特权自修改代码写入到访客命令缓冲器104的数据区域。如将更详细讨论的,注入到访客命令缓冲器104中的信号量命令的放置可以基于相对于访客命令缓冲器104发生的写入错误的类型。
例如,图4表明,当对立即加载寄存器操作到访客命令缓冲器104中的命令区域的写入生成错误时,命令扫描器110将第一信号量命令118写入阴影命令缓冲器112中的相对应的命令区域。相反,当对双字到访客命令缓冲器104中的数据区域的写入生成错误时,命令扫描器110将第二信号量命令120写入与阴影命令缓冲器112中的相对应的数据区域相邻(例如,紧接在其之前)的命令区域中。特别注意,将第二信号量命令120写入相对应的数据区域可能导致图形硬件无法将第二信号量命令120解释为命令。
现在转向图5,示出了安全性增强的计算系统150。系统150一般可以是具有计算功能(例如,个人数字助理/PDA、笔记本计算机、平板计算机、可转换平板、服务器)、通信功能(例如,智能电话)、成像功能(例如,相机、便携式摄像机)、媒体播放功能(例如,智能电视/TV)、可穿戴功能(例如,手表、眼部穿戴物、头戴物、脚部穿戴物、首饰)、交通工具功能(例如,汽车、卡车、摩托车)、机器人功能(例如,自主机器人)等或其任何组合的电子设备/平台的部分。在所图示的示例中,系统150包括具有集成存储器控制器(IMC)154的主机处理器152(例如,中央处理单元/CPU),该IMC 154耦合至系统存储器156。
所图示出的系统150还包括输入输出(IO)模块158,该IO模块158与主机处理器152和图形处理器160一起在半导体管芯162上被实现为芯片上系统(SoC)。所图示的IO模块158与例如显示器164(例如,触摸屏、液晶显示器/LCD、发光二极管/LED显示器)、网络控制器166(例如,有线和/或无线)、以及大容量存储168(例如,硬盘驱动器/HDD、光盘、固态驱动器/SSD、闪存)进行通信。在实施例中,主机处理器152、IO模块158和/或图形处理器160执行从系统存储器156和/或大容量存储168检取的指令170以执行已讨论的方法34(图2)的一个或多个方面。
因此,指令170的执行使计算系统150在与虚拟机相关联的访客命令缓冲器中设置写保护标志,并且响应于错误而将信号量命令注入到阴影命令缓冲器中,其中错误与由在图形硬件(诸如例如,图形处理器160)中执行的代码(例如,特权自修改代码)将图形命令写入访客命令缓冲器相对应。指令170的执行还使得计算系统150响应于图形硬件中的上下文切换而对图形命令进行安全性扫描。在一个示例中,上下文切换与信号量命令相关联(例如,由信号量命令触发)。
因此,所图示的计算系统150支持完全虚拟化图形架构中的特权自修改代码,而无需担心安全性漏洞(例如,恶意软件、间谍软件)。实际上,当自修改代码在图形硬件准备好执行命令之前对访客命令缓冲器进行多次写入时,系统150可以通过同时覆写阴影命令缓冲器中的信号量命令的多个实例来实现更高的效率。
图6示出了半导体设备172(例如,芯片、管芯、封装)。所图示的设备172包括一个或多个衬底174(例如,硅、蓝宝石、砷化镓)和耦合至(多个)衬底174的逻辑176(例如,晶体管阵列和其他集成电路/IC组件)。在实施例中,逻辑176实现已讨论的方法34(图2)的一个或多个方面。因此,逻辑176可以在与虚拟机相关联的访客命令缓冲器中设置写保护标志,并且响应于错误而将信号量命令注入到阴影命令缓冲器中,其中错误与由在图形硬件中执行的代码(例如,特权自修改代码)将图形命令写入访客命令缓冲器相对应。在实施例中,逻辑176还响应于图形硬件中的上下文切换而对图形命令进行安全性扫描。在一个示例中,上下文切换与信号量命令相关联。
逻辑176可至少部分地实现在可配置逻辑或固定功能硬件逻辑中。在一个示例中,逻辑176包括定位(例如,嵌入)在(多个)衬底174内的晶体管沟道区。因此,逻辑176与(多个)衬底174之间的接口可以不是突变结。逻辑176还可被认为包括在(多个)衬底174的初始晶片上生长的外延层。
图7图示出根据一个实施例的处理器核200。处理器核200可以是用于任何类型的处理器的核,这些处理器诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、或用于执行代码的其他设备。虽然图7中仅图示了一个处理器核200,但处理元件可替代地包括多于一个图7中所图示的处理器核200。处理器核200可以是单线程核,或对于至少一个实施例,处理器核200可以是多线程的,因为其每个核可包括多于一个的硬件线程上下文(或“逻辑处理器”)。
图7还图示出耦合至处理器核200的存储器270。存储器270可以是本领域技术人员已知的或以其他方式对本领域技术人员可用的各种各样的存储器(包括存储器层级结构的各个层)中的任何一种。存储器270可包括要由处理器核200执行的一个或多个代码213指令,其中代码213可实现已讨论的方法34(图2)。处理器核200遵循由代码213指示的指令的程序序列。每条指令可进入前端部分210并由一个或多个解码器220处理。解码器220可生成微操作(诸如采用预定义格式的固定宽度的微操作)作为其输出,或者可生成反映原始代码指令的其他指令、微指令或控制信号。所图示的前端部分210还包括寄存器重命名逻辑225和调度逻辑230,该调度逻辑230一般分配资源并对与转换指令相对应的操作进行排队以供执行。
处理器核200被示出为包括具有一组执行单元255-1至255-N的执行逻辑250。一些实施例可以包括专用于指定功能或功能组的大量执行单元。其他实施例可包括仅一个执行单元或可以执行特定功能的一个执行单元。所图示的执行逻辑250执行由代码指令指定的操作。
在完成执行由代码指令指定的操作之后,后端逻辑260对代码213的指令进行引退。在一个实施例中,处理器核200允许乱序执行但是要求指令的有序引退。引退逻辑265可采取如本领域技术人员已知的各种形式(例如,重排序缓冲器等等)。以此方式,至少在由解码器生成的输出、由寄存器重命名逻辑225利用的硬件寄存器和表、以及由执行逻辑250修改的任何寄存器(未示出)方面,处理器核200在代码213的执行期间被变换。
虽然未在图7中图示,但处理元件可包括与处理器核200一起在芯片上的其他元件。例如,处理元件可包括与处理器核200一起的存储器控制逻辑。处理元件可包括I/O控制逻辑和/或可包括与存储器控制逻辑一起被集成的I/O控制逻辑。处理元件还可包括一个或多个高速缓存。
现在参考图8,所示出的是根据实施例的计算系统1000实施例的框图。图9中所示出的是多处理器系统1000,其包括第一处理元件1070和第二处理元件1080。尽管示出了两个处理元件1070和1080,但是要理解,系统1000的实施例也可包括仅一个此类处理元件。
系统1000被图示为点对点互连系统,其中第一处理元件1070和第二处理元件1080经由点对点互连1050耦合。应当理解,图9中所图示的互连中的任何或全部可被实现为多分支总线而不是点对点互连。
如图9中所示,处理元件1070和1080中的每个处理元件可以是包括第一和第二处理器核(即,处理器核1074a和1074b以及处理器核1084a和1084b)的多核处理器。此类核1074a、1074b、1084a、1084b可被配置成用于以与上文结合图7所讨论的方式类似的方式来执行指令代码。
每个处理元件1070、1080可包括至少一个共享高速缓存1896a、1896b。共享高速缓存1896a、1896b可分别存储由处理器的一个或多个组件(诸如核1074a、1074b以及1084a、1084b)利用的数据(例如,指令)。例如,共享高速缓存1896a、1896b可本地地对存储器1032、1034中所存储的数据进行高速缓存以供处理器的组件的更快速访问。在一个或多个实施例中,共享高速缓存1896a、1896b可包括一个或多个中间级别高速缓存(诸如第2级(L2)、第3级(L3)、第4级(L4)、或其他级别的高速缓存)、末级高速缓存(LLC)和/或其组合。
虽然被示出为具有仅两个处理元件1070、1080,但要理解,实施例的范围并不限于此。在其他实施例中,在给定的处理器中可存在一个或多个附加处理元件。替代地,处理元件1070、1080中的一者或多者可以是除处理器之外的元件,诸如加速器或现场可编程门阵列。例如,(多个)附加处理元件可包括与第一处理器1070相同的(多个)附加处理器、与处理器(第一处理器1070)异构或不对称的(多个)附加处理器、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或任何其他处理元件。在包括架构、微架构、热、功耗特性等等一系列品质度量方面,处理元件1070、1080之间可存在各种差异。这些差异自身可有效地表现为处理元件1070、1080之中的不对称性和异构性。对于至少一个实施例,各处理元件1070、1080可驻留在同一管芯封装中。
第一处理元件1070可进一步包括存储器控制器逻辑(MC)1072以及点对点(P-P)接口1076和1078。类似地,第二处理元件1080可包括MC1082以及P-P接口1086和1088。如图9中所示,MC 1072和1082将处理器耦合至相应的存储器,即存储器1032和存储器1034,这些存储器可以是本地附连到相应处理器的主存储器的部分。尽管MC 1072和MC 1082被图示为被集成到处理元件1070、1080中,但对于替代实施例,MC逻辑可以是处理元件1070、1080外部的分立逻辑而不是被集成于其中。
第一处理元件1070和第二处理元件1080可分别经由P-P互连1076、1086耦合至I/O子系统1090。如图9中所示,I/O子系统1090包括P-P接口1094和1098。此外,I/O子系统1090包括将I/O子系统1090与高性能图形引擎1038耦合的接口1092。在一个实施例中,可使用总线1049将图形引擎1038耦合至I/O子系统1090。替代地,点对点互连可耦合这些组件。
进而,I/O子系统1090可经由接口1096耦合至第一总线1016。在一个实施例中,第一总线1016可以是外围组件互连(PCI)总线,或诸如PCI快速(PCI Express)总线或另一第三代I/O互连总线之类的总线,但是实施例的范围不限于此。
如图9中所示,各种I/O设备1014(例如,生物计量扫描仪、扬声器、相机、传感器)可与总线桥1018一起耦合至第一总线1016,该总线桥1018可将第一总线1016耦合至第二总线1020。在一个实施例中,第二总线1020可以是低引脚计数(LPC)总线。各种设备可耦合到第二总线1020,这些设备包括例如键盘/鼠标1012、(多个)通信设备1026、以及数据存储单元1019(诸如在一个实施例中可包括代码1030的盘驱动器或其他大容量存储设备)。所例示的代码1030可实现已讨论的方法34(图2),并且可类似于已讨论的代码213(图7)。进一步地,音频I/O 1024可耦合至第二总线1020,并且电池1010可向计算系统1000供给功率。
注意,构想了其他实施例。例如,系统可实现多分支总线或者另一此类通信拓扑,而不是图9的点对点架构。而且,可替代地使用比图9中所示的更多或更少的集成芯片来对图9的元件进行分区。
附加说明和示例:
示例1包括一种安全性增强的计算系统,该计算系统包括:图形硬件、与虚拟机相关联的访客命令缓冲器、以及处理器,该处理器包括阴影命令缓冲器和逻辑,该逻辑用于:在访客命令缓冲器中设置写保护标志;响应于错误而将信号量命令注入到阴影命令缓冲器中,其中该错误与由在图形硬件中执行的代码将图形命令写入访客命令缓冲器相对应;以及响应于图形硬件中的上下文切换而对图形命令进行安全性扫描,其中上下文切换与信号量命令相关联。
示例2包括示例1的计算系统,其中,逻辑用于:如果安全性扫描未在图形命令中检测到安全性风险,则用图形命令覆写信号量命令。
示例3包括示例1的计算系统,其中,如果错误相对于访客命令缓冲器中的命令区域发生,则将信号量命令注入到阴影命令缓冲器的命令区域中,并且其中,如果错误相对于访客命令缓冲器中的数据区域发生,则将信号量命令注入到与阴影命令缓冲器的数据区域相邻的命令区域中。
示例4包括示例3的计算系统,其中,逻辑用于基于命令边界位映射来确定错误相对于访客命令缓冲器中的命令区域还是访客命令缓冲器中的数据区域发生。
示例5包括示例1的计算系统,其中,在图形硬件中执行的代码是自修改代码。
示例6包括示例1至5中任一项的计算系统,其中,在图形硬件中执行的代码是特权代码。
示例7包括一种半导体设备,该半导体设备包括:一个或多个衬底、以及逻辑,该逻辑耦合至一个或多个衬底,其中逻辑至少部分地在可配置逻辑和固定功能硬件逻辑中的一者或多者中实现,耦合至一个或多个衬底的该逻辑用于:在与虚拟机相关联的访客命令缓冲器中设置写保护标志;
响应于错误而将信号量命令注入到阴影命令缓冲器中,其中该错误与由在图形硬件中执行的代码将图形命令写入访客命令缓冲器相对应;以及响应于图形硬件中的上下文切换而对图形命令进行安全性扫描,其中上下文切换与信号量命令相关联。
示例8包括示例7的半导体设备,其中,耦合至一个或多个衬底的逻辑用于:如果安全性扫描未在图形命令中检测到安全性风险,则用图形命令覆写信号量命令。
示例9包括示例7的半导体设备,其中,如果错误相对于访客命令缓冲器中的命令区域发生,则将信号量命令注入到阴影命令缓冲器的命令区域中,并且其中,如果错误相对于访客命令缓冲器中的数据区域发生,则将信号量命令注入到与阴影命令缓冲器的数据区域相邻的命令区域中。
示例10包括示例9的半导体设备,其中,耦合至一个或多个衬底的逻辑用于基于命令边界位映射来确定错误相对于访客命令缓冲器中的命令区域还是访客命令缓冲器中的数据区域发生。
示例11包括示例7至示例10中任一项的半导体设备,其中在图形硬件中执行的代码是自修改代码或特权代码中的一者或多者。
示例12包括如示例7至10中任一项的半导体设备,其中耦合至该一个或多个衬底的逻辑包括被定位在该一个或多个衬底内的晶体管沟道区。
示例13包括至少一种计算机可读存储介质,包括一组可执行程序指令,这些可执行程序指令在由计算系统执行时使得该计算系统用于:在与虚拟机相关联的访客命令缓冲器中设置写保护标志;响应于错误而将信号量命令注入到阴影命令缓冲器中,其中该错误与由在图形硬件中执行的代码将图形命令写入访客命令缓冲器相对应;以及响应于图形硬件中的上下文切换而对图形命令进行安全性扫描,其中上下文切换与信号量命令相关联。
示例14包括示例13的至少一种计算机可读存储介质,其中可执行程序指令在被执行时使得计算系统用于:如果安全性扫描未在图形命令中检测到安全性风险,则用图形命令覆写信号量命令。
示例15包括示例13的至少一种计算机可读存储介质,其中,如果错误相对于访客命令缓冲器中的命令区域发生,则将信号量命令注入到阴影命令缓冲器的命令区域中,并且其中,如果错误相对于访客命令缓冲器中的数据区域发生,则将信号量命令注入到与阴影命令缓冲器的数据区域相邻的命令区域中。
示例16包括示例15的至少一种计算机可读存储介质,其中可执行程序指令在被执行时使得计算系统用于:基于命令边界位映射来确定错误相对于访客命令缓冲器中的命令区域还是访客命令缓冲器中的数据区域发生。
示例17包括示例13的至少一种计算机可读存储介质,其中,在图形硬件中执行的代码是自修改代码。
示例18包括示例13至17中任一项的至少一种计算机可读存储介质,其中,在图形硬件中执行的代码是特权代码。
示例19包括操作安全性增强的计算系统的方法,包括:在与虚拟机相关联的访客命令缓冲器中设置写保护标志;响应于错误而将信号量命令注入到阴影命令缓冲器中,其中该错误与由在图形硬件中执行的代码将图形命令写入访客命令缓冲器相对应;以及响应于图形硬件中的上下文切换而对图形命令进行安全性扫描,其中上下文切换与信号量命令相关联。
示例20包括示例19的方法,进一步包括:如果安全性扫描未在图形命令中检测到安全性风险,则用图形命令覆写信号量命令。
示例21包括示例19的方法,其中,如果错误相对于访客命令缓冲器中的命令区域发生,则将信号量命令注入到阴影命令缓冲器的命令区域中,并且其中,如果错误相对于访客命令缓冲器中的数据区域发生,则将信号量命令注入到与阴影命令缓冲器的数据区域相邻的命令区域中。
示例22包括示例21的方法,进一步包括:基于命令边界位映射来确定错误相对于访客命令缓冲器中的命令区域还是访客命令缓冲器中的数据区域发生。
示例23包括示例19的方法,其中,在图形硬件中执行的代码是自修改代码。
示例24包括示例19的方法,其中,在图形硬件中执行的代码是特权代码。
因此,本文所描述的技术利用IOMMU R/W位(例如,在页表中)来“捕获”到命令缓冲器的GPU DMA写入。惰性扫描和更新方案支持在完全GPU虚拟化架构中的自修改GPU工作负载。在发生DMA写入错误时(例如,命令缓冲器对其自身进行修改),中介器利用错误在访客命令缓冲器中的相对偏移将GPU信号量命令注入阴影命令缓冲器中。在GPU“接触”信号量命令时,如果GPU稍后要执行它,则将中断GPU的执行。然后,自修改代码可以开始生成访客GPU命令缓冲器中的新GPU命令。当GPU跳转到阴影命令缓冲器时,它将遇到注入的GPU信号量命令,从而触发GPU上下文切换。中介器然后可以开始扫描所生成的命令缓冲器并更新阴影命令缓冲器。在更新期间,信号量命令被覆写。当扫描和更新完成时,中介器可以恢复阴影命令缓冲器内容的执行。
因此,本文所描述的技术使得能够使用在优化的媒体解码器/编码器、以及在解码/编码帧时需要交叉引擎合作(例如,其中计算结果被用作其他引擎的输入)的通用计算着色器中常见的自修改GPU工作负载。在基于GPU虚拟化的公共和私有计算、媒体云解决方案(例如,高性能媒体转码)等方面,用户也可能有更广泛且更灵活的选择。实际上,可以以自修改GPU工作负载方式设计专有的封闭源GPGPU(通用GPU)着色器,并将其部署在本文所描述的计算系统上。
实施例适用于与所有类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片、芯片上系统(SoC)、SSD/NAND控制器ASIC等等。另外,在一些附图中,信号导线用线表示。一些线可以是不同的以指示更具构成性的信号路径,可具有数字标号以指示构成性信号路径的数目,和/或可在一端或多端具有箭头以指示主要信息流向。然而,这不应以限制性方式来解释。相反,此类增加的细节可与一个或多个示例性实施例结合使用以促进更容易地理解电路。任何所表示的信号线,不管是否具有附加信息,实际上都可包括一个或多个信号,这一个或多个信号可在多个方向上行进,并且可用任何适合类型的信号方案来实现,例如利用差分对来实现的数字或模拟线路、光纤线路、和/或单端线路。
示例尺寸/模型/值/范围可能已经被给出,但是实施例不限于此。随着制造技术(例如,光刻法)随时间变得成熟,预料到能制造出更小尺寸的设备。另外,为了说明和讨论的简单并且为了不使实施例的某些方面模糊,到IC芯片和其他组件的公知的功率/接地连接可在附图内示出也可不示出。此外,各种配置可以框图形式示出以免使得各实施例变得晦涩,并且还鉴于相对于这些框图配置的实现的具体细节很大程度地依赖于所述实施例实现的平台这一事实,即这些具体细节应当落在本领域内技术人员的眼界内。在阐述具体细节(例如电路)以描述示例性实施例的情形下,显而易见的是,本领域技术人员可以在不具有这些具体细节的情况下或对这些具体细节作出变化的情况下地实施各实施例。描述因此被视为是说明性的而不是限制性的。
术语“耦合的”在本文中可被用于表示所讨论的组件之间的任何类型的直接或间接关系,且可应用于电气的、机械的、流体的、光学的、电磁的、机电的或其他连接。另外,术语“第一”、“第二”等在本文中可仅用于便于讨论,并且不带有特定时间的或按时间顺序的意义,除非另有陈述。
如在本申请和权利要求书中所使用的,由术语“中的一个或多个”联接的项列表可意指所列项的任何组合。例如,短语“A、B或C中的一个或多个”可意指A、B、C;A和B;A和C;B和C;或者A、B和C。
本领域技术人员从前面的描述将领会,实施例的广泛技术能以各种形式来实现。因此,尽管已结合其特定示例描述了实施例,但实施例的真实范围不应当限于此,因为在研究附图、说明书和所附权利要求书之后,其他修改对于本领域技术人员将变得显而易见。
Claims (24)
1.一种安全性增强的计算系统,包括:
图形硬件;
与虚拟机相关联的访客命令缓冲器;以及
处理器,所述处理器包括阴影命令缓冲器和逻辑,所述逻辑用于:
在所述访客命令缓冲器中设置写保护标志,
响应于错误而将信号量命令注入到所述阴影命令缓冲器中,其中所述错误与由在所述图形硬件中执行的代码将图形命令写入所述访客命令缓冲器相对应,以及
响应于所述图形硬件中的上下文切换而对所述图形命令进行安全性扫描,其中所述上下文切换与所述信号量命令相关联。
2.如权利要求1所述的计算系统,其中,所述逻辑用于:如果所述安全性扫描未在所述图形命令中检测到安全性风险,则用所述图形命令覆写所述信号量命令。
3.如权利要求1所述的计算系统,其中,如果所述错误相对于所述访客命令缓冲器中的命令区域发生,则将所述信号量命令注入到所述阴影命令缓冲器的命令区域中,并且其中,如果所述相对于所述访客命令缓冲器中的数据区域发生,则将所述信号量命令注入到与所述阴影命令缓冲器的数据区域相邻的命令区域中。
4.如权利要求3所述的计算系统,其中,所述逻辑基于命令边界位映射来确定所述错误相对于所述访客命令缓冲器中的命令区域还是所述访客命令缓冲器中的数据区域发生。
5.如权利要求1所述的计算系统,其中,在所述图形硬件中执行的所述代码是自修改代码。
6.如权利要求1至5中任一项所述的计算系统,其中,在所述图形硬件中执行的所述代码是特权代码。
7.一种半导体设备,包括:
一个或多个衬底;以及
逻辑,所述逻辑耦合至所述一个或多个衬底,其中,所述逻辑至少部分地在能配置逻辑或固定功能硬件逻辑中的一者或多者中实现,耦合至所述一个或多个衬底的所述逻辑用于:
在与虚拟机相关联的访客命令缓冲器中设置写保护标志,
响应于错误而将信号量命令注入到阴影命令缓冲器中,其中所述错误与由在图形硬件中执行的代码将图形命令写入所述访客命令缓冲器相对应,以及
响应于所述图形硬件中的上下文切换而对所述图形命令进行安全性扫描,其中所述上下文切换与所述信号量命令相关联。
8.如权利要求7所述的半导体设备,其中,耦合至所述一个或多个衬底的所述逻辑用于:如果所述安全性扫描未在所述图形命令中检测到安全性风险,则用所述图形命令覆写所述信号量命令。
9.如权利要求7所述的半导体设备,其中,如果所述错误相对于所述访客命令缓冲器中的命令区域发生,则将所述信号量命令注入到所述阴影命令缓冲器的命令区域中,并且其中,如果所述错误相对于所述访客命令缓冲器中的数据区域发生,则将所述信号量命令注入到与所述阴影命令缓冲器的数据区域相邻的命令区域中。
10.如权利要求9所述的半导体设备,其中,耦合至所述一个或多个衬底的所述逻辑用于基于命令边界位映射来确定所述错误是相对于所述访客命令缓冲器中的命令区域还是所述访客命令缓冲器中的数据区域发生。
11.如权利要求7至10中任一项所述的半导体设备,其中在所述图形硬件中执行的所述代码是自修改代码或特权代码中的一者或多者。
12.如权利要求7至10中任一项所述的半导体设备,其中,耦合至所述一个或多个衬底的所述逻辑包括被定位在所述一个或多个衬底内的晶体管沟道区。
13.至少一种计算机可读存储介质,包括一组可执行程序指令,所述可执行程序指令在由计算系统执行时使得所述计算系统用于:
在与虚拟机相关联的访客命令缓冲器中设置写保护标志;
响应于错误而将信号量命令注入到阴影命令缓冲器中,其中所述错误与由在图形硬件中执行的代码将图形命令写入所述访客命令缓冲器相对应;以及
响应于所述图形硬件中的上下文切换而对所述图形命令进行安全性扫描,其中所述上下文切换与所述信号量命令相关联。
14.如权利要求13所述的至少一种计算机可读存储介质,其中所述可执行程序指令在被执行时使得所述计算系统用于:如果所述安全性扫描未在所述图形命令中检测到安全性风险,则用所述图形命令覆写所述信号量命令。
15.如权利要求13所述的至少一种计算机可读存储介质,其中,如果所述错误相对于所述访客命令缓冲器中的命令区域发生,则将所述信号量命令注入到所述阴影命令缓冲器的命令区域中,并且其中,如果所述错误相对于所述访客命令缓冲器中的数据区域发生,则将所述信号量命令注入到与所述阴影命令缓冲器的数据区域相邻的命令区域中。
16.如权利要求15所述的至少一种计算机可读存储介质,其中所述可执行程序指令在被执行时使得所述计算系统用于:基于命令边界位映射来确定所述错误是相对于所述访客命令缓冲器中的命令区域还是所述访客命令缓冲器中的所述数据区域发生。
17.如权利要求13所述的至少一种计算机可读存储介质,其中,在所述图形硬件中执行的所述代码是自修改代码。
18.如权利要求13至17中任一项所述的至少一种计算机可读存储介质,其中,在所述图形硬件中执行的所述代码是特权代码。
19.一种操作安全性增强的计算系统的方法,包括:
在与虚拟机相关联的访客命令缓冲器中设置写保护标志;
响应于错误,将信号量命令注入到阴影命令缓冲器中,其中所述错误与由在图形硬件中执行的代码将图形命令写入所述访客命令缓冲器相对应;以及
响应于所述图形硬件中的上下文切换,对所述图形命令进行安全性扫描,其中所述上下文切换与所述信号量命令相关联。
20.如权利要求19所述的方法,进一步包括:如果所述安全性扫描未在所述图形命令中检测到安全性风险,则用所述图形命令覆写所述信号量命令。
21.如权利要求19所述的方法,其中,如果所述相对于所述访客命令缓冲器中的命令区域发生,则将所述信号量命令注入到所述阴影命令缓冲器的命令区域中,并且其中,如果所述错误相对于所述访客命令缓冲器中的数据区域发生,则将所述信号量命令注入到与所述阴影命令缓冲器的数据区域相邻的命令区域中。
22.如权利要求21所述的方法,进一步包括:基于命令边界位映射来确定所述错误是相对于所述访客命令缓冲器中的所述命令区域还是所述访客命令缓冲器中的所述数据区域发生。
23.如权利要求19所述的方法,其中,在所述图形硬件中执行的所述代码是自修改代码。
24.如权利要求19所述的方法,其中,在所述图形硬件中执行的所述代码是特权代码。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/112630 WO2020087264A1 (en) | 2018-10-30 | 2018-10-30 | Supporting self-modifying graphics workloads in fully virtualized graphics architectures |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112889083A true CN112889083A (zh) | 2021-06-01 |
Family
ID=70463321
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880095087.1A Pending CN112889083A (zh) | 2018-10-30 | 2018-10-30 | 支持完全虚拟化图形架构中的自修改图形工作负载 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11907377B2 (zh) |
EP (1) | EP3874367A1 (zh) |
CN (1) | CN112889083A (zh) |
WO (1) | WO2020087264A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9805439B2 (en) * | 2012-05-02 | 2017-10-31 | Nvidia Corporation | Memory space mapping techniques for server based graphics processing |
CN105122204A (zh) * | 2014-03-13 | 2015-12-02 | 华为技术有限公司 | 一种图像处理方法、虚拟机及虚拟机系统 |
GB2549239A (en) | 2014-11-13 | 2017-10-18 | Advanced Risc Mach Ltd | Context sensitive barriers in data processing |
US10853118B2 (en) * | 2015-12-21 | 2020-12-01 | Intel Corporation | Apparatus and method for pattern-driven page table shadowing for graphics virtualization |
CN107608756B (zh) * | 2017-08-24 | 2020-10-13 | 武汉大学 | 一种基于cpu硬件特性的虚拟机自省触发方法及系统 |
-
2018
- 2018-10-30 WO PCT/CN2018/112630 patent/WO2020087264A1/en unknown
- 2018-10-30 CN CN201880095087.1A patent/CN112889083A/zh active Pending
- 2018-10-30 EP EP18938924.0A patent/EP3874367A1/en not_active Withdrawn
- 2018-10-30 US US17/251,307 patent/US11907377B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11907377B2 (en) | 2024-02-20 |
US20210256139A1 (en) | 2021-08-19 |
WO2020087264A1 (en) | 2020-05-07 |
EP3874367A1 (en) | 2021-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102496402B1 (ko) | 사용자-레벨 포크 및 조인 프로세서, 방법, 시스템, 및 명령어 | |
US10353831B2 (en) | Trusted launch of secure enclaves in virtualized environments | |
US7487341B2 (en) | Handling address translations and exceptions of a heterogeneous resource of a processor using another processor resource | |
US11422896B2 (en) | Technology to enable secure and resilient recovery of firmware data | |
US20180150311A1 (en) | Virtual processor state switching virtual machine functions | |
EP3866003A1 (en) | Deployment of bios to operating system data exchange | |
US10956571B2 (en) | Kernel runtime integrity using processor assists | |
EP3017373A1 (en) | Efficient graphics virtualization with address ballooning | |
CN111752874A (zh) | 所有主机处理器电源状态的非易失性存储器带外管理接口 | |
US10127064B2 (en) | Read-only VM function chaining for secure hypervisor access | |
US11907377B2 (en) | Supporting self-modifying graphics workloads in fully virtualized graphics architectures | |
WO2021232396A1 (en) | Accelerating system boot times via host-managed device memory | |
KR20210077588A (ko) | 분산 환경에서 딥 러닝 트레이닝을 최적화하기 위한 런타임에서의 서비스 클래스 속성의 초기화 및 관리 | |
KR20220140716A (ko) | 런타임에서의 외부 메모리 훈련 구현 | |
JP7359858B2 (ja) | 仮想化された環境におけるパススルーデバイスのための直接メモリアクセストラッキング | |
EP3869344B1 (en) | Technology to ensure sufficient memory type range registers to fully cache complex memory configurations | |
WO2021068102A1 (en) | Reducing compiler type check costs through thread speculation and hardware transactional memory | |
CN114064198A (zh) | 经由os接口表的单numa域内的多虚拟numa域 |
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 |