CN107250980A - 具有图形和系统存储器冲突检查的计算方法和设备 - Google Patents

具有图形和系统存储器冲突检查的计算方法和设备 Download PDF

Info

Publication number
CN107250980A
CN107250980A CN201580076870.XA CN201580076870A CN107250980A CN 107250980 A CN107250980 A CN 107250980A CN 201580076870 A CN201580076870 A CN 201580076870A CN 107250980 A CN107250980 A CN 107250980A
Authority
CN
China
Prior art keywords
sggtt
gpu
memory address
equipment
management program
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
CN201580076870.XA
Other languages
English (en)
Other versions
CN107250980B (zh
Inventor
董耀祖
Z·王
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 CN107250980A publication Critical patent/CN107250980A/zh
Application granted granted Critical
Publication of CN107250980B publication Critical patent/CN107250980B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/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
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

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

Abstract

一种设备可以包括图形处理单元(GPU)和管理程序。所述管理程序可以包括命令解析器,所述命令解析器用于解析与所述设备的虚拟机的工作负荷相关联的图形存储器地址,并且生成用于转换所述图形存储器地址的第一阴影全局图形转换表(SGGTT)。所述管理程序可以进一步包括GPU调度器,所述GPU调度器用于检查所述第一SGGTT与第二SGGTT之间的冲突,所述第二SGGTT包含正由或待由所述GPU的渲染引擎执行的工作集所使用的图形存储器地址,并且当所述第一SGGTT与所述第二SGGTT之间不存在冲突时,将所述虚拟机的所述工作负荷调度到渲染引擎。可以对其它实施例进行描述和/或要求保护。

Description

具有图形和系统存储器冲突检查的计算方法和设备
发明领域
本公开总体上涉及计算技术领域,并且更具体地涉及用于管理图形处理单元(GPU)虚拟化时图形存储器过量使用的设备和方法。
背景技术
存储器过量使用是可以允许虚拟机(VM)比物理主机处的物理存储器使用更多的存储器空间的管理程序特征。因此,存储器过量使用可以提高物理存储器的利用率并且允许更多的VM在具有有限数量的系统存储器的物理主机上运行。例如,如果物理主机仅有4千兆字节(GB)存储器,则在没有存储器过量使用的情况下在静态分区方案下可以支持仅4个VM(如果每个VM待分配有1GB存储器的话)。
本文中所提供的背景描述是出于一般地呈现本公开的上下文的目的。除非本文中另外指出,否则本节中所描述的材料不是本申请中的权利要求书的现有技术,并且不会通过包括在本部分中而被认为是现有技术或现有技术的建议。
附图说明
结合附图通过以下详细描述将很容易理解实施例。为了方便本描述,相同的参考标号指代相同的结构要素。在附图的各图中通过示例的方式而非通过限制的方式展示了实施例。
图1是展示了根据各实施例的结合本公开的用于管理过量使用的方面的被使能用于GPU虚拟化时的图形存储器使用过量的示例设备的示意图。
图2是根据各实施例的结合本公开的方面的可以由示例设备实践的用于管理GPU虚拟化时图形存储器过量使用的示例过程的流程图。
图3展示了根据各实施例的适合用于实践本公开的示例计算装置。
图4展示了根据各实施例的结合本公开的方面的具有编程指令的制品。
具体实施方式
描述了用于管理GPU虚拟化时图形存储器过量使用的设备和方法的实施例。在一些实施例中,一种设备可以包括图形处理单元(GPU)和管理程序。所述管理程序可以包括命令解析器,所述命令解析器用于解析与所述设备的虚拟机的工作负荷相关联的图形存储器地址,并且生成用于转换所述图形存储器地址的第一阴影全局图形转换表(SGGTT)。所述管理程序可以进一步包括GPU调度器,所述GPU调度器用于检查所述第一SGGTT与第二SGGTT之间的冲突,所述第二SGGTT包含正由或待由所述GPU的渲染引擎执行的工作集所使用的图形存储器地址,并且当所述第一SGGTT与所述第二SGGTT之间不存在冲突时,将所述虚拟机的所述工作负荷调度到渲染引擎。下文将更全面地描述本公开的这些和其他方面。
在以下详细描述中,参照形成其一部分的附图,其中,相同的标号通篇指代相同的部分,并且其中,通过说明的方式示出了可实践的实施例。应当理解,在不脱离本公开的范围的情况下,可以利用其他实施例并且可以做出结构上或逻辑上的改变。因此,以下详细描述不应被认为具有限制意义,并且实施例的范围由所附权利要求书及其等效物来限定。
可以采用对理解所要求保护的主题最有帮助的方式将各个操作依次描述为多个分立的动作或操作。然而,描述的顺序不应被解释为暗示这些操作一定是顺序相关的。具体地,可以不按所呈现的顺序来执行这些操作。可以按与所描述的实施例不同的顺序来执行所描述的操作。在附加实施例中,可以执行不同的附加操作和/或可以省略所描述的操作。
出于本公开的目的,短语“A和/或B”意指(A)、(B)或(A和B)。出于本公开的目的,短语“A、B和/或C”意指(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。当本公开陈述“一个(a)”或“第一(a first)”要素或其等效物时,这样的公开包括一个或多个这种要素,既不要求也不排除两个或更多个这样的要素。进一步地,所标识的要素的顺序指示符(例如,第一、第二或第三)用于在要素之间进行区分,并且不指示或暗示所要求或所限定数量的这种要素,其也不指示这种要素的特定位置或顺序,除非另外特别声明。
在描述中对一个实施例或实施例的引用意指结合实施例所描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。本描述可以使用短语“在一个实施例中(inone embodiment)”、“在另一个实施例中(in another embodiment)”、“在一些实施例中(insome embodiments)”、“在实施例中(in embodiments)”、“在各实施例中(in variousembodiments)”等等,所述短语各自可以指相同或不同实施例中的一个或多个实施例。此外,如关于本公开的实施例所使用的术语“包括(comprising)”、“包括(including)”、“具有(having)”等等是同义的。
在实施例中,术语“引擎”或“模块”可以指以下各项、是以下各项的一部分或者包括以下各项:执行一个或多个软件或固件程序的应用专用集成电路(ASIC)、电子电路、处理器(共享处理器、专用处理器或组处理器)和/或存储器(共享存储器、专用存储器或组存储器)、组合逻辑电路、和/或提供所描述功能的其他合适部件。在实施例中,引擎或模块可以以固件、硬件、软件、或者固件、硬件和软件的任何组合来实现。
现在参照图1,展示了根据各实施例的被使能用于GPU虚拟化时的图形存储器过量使用的示例设备100。在各实施例中,设备100可以包括由管理程序110管理的多个VM(例如,VM 130和VM 140),包括访问GPU 120中的GPU特征全阵列。
在各实施例中,管理程序110可以使得VM 130或VM 140能够利用GPU虚拟化时的图形存储器过量使用。虚拟GPU(vGPU)(例如,vGPU 160)可以访问由GPU硬件(例如,GPU 120)基于GPU虚拟化技术提供的全部功能。在各实施例中,管理程序110可以追踪、管理一个或多个vGPU的资源和生命周期。尽管在图1中仅示出了vGPU 160,但是管理程序110可以包括其他vGPU。在一些实施例中,vGPU 160可以包括呈现给VM的虚拟GPU装置并且可以用于与本机GPU驱动器交互。然后,VM 130或VM 140可以访问GPU特征全阵列并且用vGPU 160中的虚拟GPU装置来访问虚拟图形处理器。例如,一旦VM 130被俘获在管理程序110中,则管理程序110可以操纵vGPU实例(例如,vGPU 160)并且判定VM 130是否可以访问vGPU 160中的虚拟GPU装置。可以每个量子或事件切换vGPU上下文。在一些实施例中,可以每GPU渲染引擎(例如,3D渲染引擎122或位块传送器渲染引擎(blitter render engine)124)发生上下文切换。定期切换允许多个VM以对VM的工作负荷透明的方式来共享物理GPU。
GPU虚拟化可以采取各种形式。在一些实施例中,可以利用装置传递来使能VM130,所述装置传递是虚拟化模型,其中,整个GPU 120被呈现给VM 130,如同它们是直接相连的。很像可以指定单个中央处理单元(CPU)核专供VM 130使用,也可以指定GPU 120专供VM 130使用(例如,甚至在有限时间内)。另一个虚拟化模型是分时模型,其中,GPU 120或其一部分可以以多路复用的方式由多个VM(例如,VM 130和VM 140)共享。在其他实施例中,设备100还可以使用其他GPU虚拟化模型。在各实施例中,可以对与GPU 120相关联的图形存储器进行分区,并且将其分配给管理程序110中的各个vGPU。
在各实施例中,图形转换表(GTT)可以被VM或GPU 120用于将图形处理器存储器映射到系统存储器或者用于将GPU虚拟地址转换为物理地址。在一些实施例中,管理程序110可以经由阴影GTT来管理图形存储器映射,并且所述阴影GTT可以保持在vGPU实例(例如,vGPU 160)中。在各实施例中,每个VM可以有相应的阴影GTT以用于保持图形存储器地址与物理存储器地址(例如,虚拟化环境下的机器存储器地址)之间的映射。在一些实施例中,阴影GTT可以被共享并且维持多个VM的映射。在一些实施例中,每个VM(VM 130或VM 140)可以包括每进程GTT和全局GTT两者。
在一些实施例中,设备100可以将系统存储器用作图形存储器。可以通过GPU页表将系统存储器映射到多个虚拟地址空间中。设备100可以支持全局图形存储器空间和每进程图形存储器地址空间。全局图形存储器空间可以是通过全局图形转换表(GGTT)进行映射的虚拟地址空间(例如,2GB)。此地址空间的下部部分被称为可从GPU 120和CPU(未示出)访问的开口。此地址空间的上部部分被称为仅可以被GPU 120使用的高位图形存储器空间或隐藏图形存储器空间。在各实施例中,阴影全局图形转换表(SGGTT)可以被VM 130、VM 140、管理程序110或GPU 120用于基于全局存储器地址空间将图像存储器地址转换成对应的系统存储器地址。
在完全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图形存储器过量使用。在一些实施例中,管理程序110可以按需构建SGGTT,所述SGGTT可以包括对不同GPU部件的所有者VM的图形存储器虚拟地址的所有待使用转换。
在各实施例中,管理程序110所管理的至少一个VM可以分配有多于静态分区的全局图形存储器地址空间以及存储器。在一些实施例中,管理程序110所管理的至少一个VM可以分配有或者能够访问整个高位图形存储器地址空间。在一些实施例中,管理程序110所管理的至少一个VM可以分配有或者能够访问整个图形存储器地址空间。
管理程序110可以用命令解析器118来检测VM 130或VM 140所提交的命令的GPU渲染引擎的潜在存储器工作集。在各实施例中,VM 130可以有对应的命令缓冲器(未示出)以用于保持来自3D工作负荷132或媒体工作负荷134的命令。类似地,VM 140可以有对应的命令缓冲器(未示出)以用于保持来自3D工作负荷142或媒体工作负荷144的命令。在其他实施例中,VM 130或VM 140可以有其他类型的图形工作负荷。
在各实施例中,命令解析器118可以扫描来自VM的命令并且判定所述命令是否包含存储器操作数。如果是,则命令解析器可以例如从VM的GTT中读取有关的图形存储器空间映射,并且然后将其写到SGGTT的特定于工作负荷的部分中。在对工作负荷的整个命令缓冲器进行扫描之后,可以生成或更新保持了与此工作负荷相关联的存储器地址空间映射的SGGTT。另外,通过扫描来自VM 130或VM 140的待执行命令,命令解析器118还可以提高GPU操作的安全性(比如通过减轻恶意操作)。
在一些实施例中,可以生成一个SGGTT来保持所有VM的所有工作负荷的转换。在一些实施例中,可以生成一个SGGTT来保持例如仅一个VM的所有工作负荷的转换。特定于工作负荷的SGGTT部分可以由命令解析器118按需构建以用于保持特定工作负荷(例如,VM 130的3D工作负荷132或VM 140的媒体工作负荷144)的转换。在一些实施例中,命令解析器118可以将SGGTT插入到SGGTT队列114中并且将相应工作负荷插入到工作负荷队列116中。
在一些实施例中,GPU调度器112可以在执行时间构建这种按需式SGGTT。特定硬件引擎可以仅使用在执行时间分配给VM 130的图形存储器地址空间的一小部分,并且GPU上下文切换很少发生。为了利用这种GPU特征,管理程序110可以用VM 130的SGGTT来仅保持对各个GPU部件(而非分配给VM 130的全局图形存储器地址空间的整个部分)的执行和待执行转换。
GPU 120的GPU调度器112可以与设备100中的CPU的调度器分离开。在一些实施例中,为了利用硬件并行性,GPU调度器112可以分别对不同GPU引擎(例如,3D渲染引擎122、位块传送器渲染引擎124、视频命令流送器(VCS)渲染引擎126、以及视频增强型命令流送器(VECS)渲染引擎128)的工作负荷进行调度。例如,VM 130可以是3D加强的,并且3D工作负荷132在一个时刻可能需要被调度到3D渲染引擎122。同时,VM 140可以是媒体加强的,并且媒体工作负荷144可能需要被调度到VCS渲染引擎126和/或VECS渲染引擎128。在此情况下,GPU调度器112可以分别调度VM 130的3D工作负荷132和VM 140的媒体工作负荷144。
在各实施例中,GPU调度器112可以追踪GPU 120中的对应渲染引擎所使用的执行中的SGGTT。在此情况下,管理程序110可以为每个渲染引擎保留SGGTT以用于追踪对应渲染引擎中的所有执行中的图形存储器工作集。在一些实施例中,管理程序110可以保留单个SGGTT以用于追踪所有渲染引擎的所有执行中的图形存储器工作集。在一些实施例中,这种追踪可以基于单独的执行中SGGTT队列(未示出)。在一些实施例中,这种追踪可以基于SGGTT队列114上的标记(例如,使用注册表)。在一些实施例中,这种追踪可以基于工作负荷队列116上的标记(例如,使用注册表)。
在调度过程中,GPU调度器112可以针对工作负荷队列116中的待调度工作负荷来检查SGGTT队列114中的SGGTT。在一些实施例中,为了调度特定渲染引擎的下一个VM,GPU调度器112可以检查由此渲染引擎的VM使用的特定工作负荷的图形存储器工作集是否与由此渲染引擎执行的或待执行的图形存储器工作集冲突。在其他实施例中,这种冲突检查可以延伸至由所有其他渲染引擎利用执行中或待执行图形存储器工作集进行检查。在各实施例中,这种冲突检查可以基于SGGTT队列114中的相应SGGTT或者基于管理程序110所保留的SGGTT以用于追踪如在上文中所讨论的对应渲染引擎中的所有执行中图形存储器工作集。
如果不存在冲突,则GPU调度器112可以将执行中和待执行图形存储器工作集集成在一起。在一些实施例中,也可以生成特定渲染引擎的执行中和待执行图形存储器工作集的所产生的SGGTT并且将其存储在例如SGGTT队列114中或其他数据存储装置中。在一些实施例中,还可以生成并存储与一个VM相关联的所有渲染引擎的执行中和待执行图形存储器工作集的所产生的SGGTT,如果所有这些工作负荷的图形存储器地址不与彼此冲突的话。
在将所选VM工作负荷提交到GPU 120之前,管理程序110可以将相应SGGTT页写到GPU 120中(例如,到图形转换表150)。因此,管理程序110可以使得此工作负荷能够利用全局图形存储器空间中的正确映射来执行。在各实施例中,所有这些转换条目均可以写到图形转换表150中,到下部存储器空间154或上部存储器空间152。在一些实施例中,图形转换表150可以每VM包含单独的表以保持这些转换条目。在其他实施例中,图形转换表150还可以每渲染引擎包含单独的表以适用于这些转换条目。在各实施例中,图形转换表150可以至少包含待执行图形存储器地址。
然而,如果存在GPU调度器112所确定的冲突,则然后,GPU调度器112可以延迟此VM的调度,并且反而尝试着调度相同或不同VM的另一个工作负荷。在一些实施例中,如果两个或更多个VM可以尝试着使用同一图形存储器地址(例如,针对同一渲染引擎或两个不同的渲染引擎),则可以检测到这种冲突。在一些实施例中,GPU调度器112可以改变调度器策略以避免选择有可能与彼此冲突的渲染引擎中的一个或多个渲染引擎。在一些实施例中,GPU调度器112可以悬置执行硬件引擎以减轻冲突。
在一些实施例中,如本文中所讨论的GPU虚拟化时的存储器过量使用可以与静态全局图形存储器空间分区方案共存。作为示例,下部存储器空间154的开口仍可以用于所有VM的静态分区。上部存储器空间152中的高位图形存储器空间可以用于存储器过量使用方案。与静态全局图形存储器空间分区方案相比,GPU虚拟化时的存储器过量使用可以使得每个VM能够使用上部存储器空间152中的整个高位图形存储器空间,这可以允许每个VM内的一些应用使用更大的图形存储器空间以获得改进的性能。
在静态全局图形存储器空间分区方案的情况下,最初要求保护存储器的大部分的VM在运行时仅可以使用一小部分,而其他VM可能处于缺乏存储器的状态。在存储器过量使用的情况下,管理程序可以按需为VM分配存储器,并且所节省的存储器可以用于支持更多VM。在基于SGGTT的存储器过量使用的情况下,在运行时仅可以分配待执行工作负荷所使用的图形存储器空间,这节省了图形存储器空间并且支持更多VM访问GPU 120。
现在参照图2,图2是根据各实施例的可以由示例装置实践的用于管理GPU虚拟化时的图形存储器过量使用的示例过程200的流程图。过程200可以由包括以下各项的处理逻辑来执行:硬件(例如,电路系统、专用逻辑、可编程逻辑、微码等)、软件(例如,在处理设备上运行以执行硬件仿真的指令)、或其组合。处理逻辑可以被配置成用于促进对GPU虚拟化时的图形存储器过量使用的管理。这样,过程200可以由计算装置(例如,图1的设备100)来执行,以实施本公开的一个或多个实施例。在实施例中,图2中的各个框可以以任何合适的顺序(例如,根据图1的管理程序110的特定实施例)来组合或布置。
在实施例中,所述过程可以始于框210,其中,计算装置的管理程序(例如,图1的管理程序110)可以解析与计算装置的虚拟机的工作负荷相关联的多个图形存储器地址。在一些实施例中,管理程序可以针对与GPU的对应渲染引擎相关联的工作负荷的那些命令来扫描虚拟机中的多个命令缓冲器。通过扫描命令缓冲器中的命令,管理程序可以确定图形存储器工作集,并且相应地确定VM的对应图形存储器工作集的图形存储器地址。作为示例,管理程序110的命令解析器118可以在将VM 130的工作负荷提交到GPU 120之前扫描与GPU120中的每个渲染引擎相对应的完整的命令缓冲器。在扫描过程中,命令解析器118可以判定哪些图形存储器地址被特定工作负荷(例如,3D工作负荷132或媒体工作负荷134)使用。在此过程中解析出来的图形存储器地址在框220中可以用于生成SGGTT以包含这些地址到系统存储器地址的转换。
在各实施例中,管理程序可能会遇到用于GPU命令的不同类型的图形存储器访问方法。一些GPU命令属于直接访问型,其中,可以经由GPU页表上的条目直接转换图形存储器空间地址。一些GPU命令属于间接访问型,其中,可以使用具有间接状态的间接存储器地址。存在许多间接状态。每个间接状态可以通过指定下界和上界来指示图形存储器空间区域。间接地址可以包括间接状态所管理的区域内的偏移量。作为示例,与固定功能有关的着色器和多个命令可以使用这种间接存储器访问方法。
在各实施例中,管理程序(例如,管理程序的命令解析器)可以从与工作负荷相关联的用于直接存储器访问的多个命令或用于间接存储器访问的多个命令中解析多个图形存储器地址。在命令扫描过程中,命令解析器可以从GPU命令的操作数指出相关联的图形存储器空间区域。作为示例,对于MI_SET_CONTEXT指令,命令解析器可以从命令的操作数扫描图形存储器空间地址的开始,并且然后从偏移0x21a8的上下文大小寄存器(例如,CTX_SIZE)中得到实际的上下文大小。作为另一个示例,对于间接访问,命令解析器可以从间接状态设置指令(例如,STATE_BASE_ADDRESS、DWORD0或DWORD12)的操作数中确定间接状态区域,所述操作数可以指示一般间接状态的图形存储器空间区域。
接下来,在框220处,管理程序可以生成用于基于全局存储器地址空间将多个图形存储器地址转换成对应的系统存储器地址的阴影全局图形转换表(SGGTT)。在各实施例中,管理程序的命令解析器可以扫描指令并且判定此指令是否包含存储器操作数。如果是,则命令解析器可以例如从每个VM的全局阴影GGTT中读取有关的图形存储器空间映射,并且然后将其写到SGGTT中。在对工作负荷的整个命令缓冲器进行扫描之后,还可以生成保持了与此工作负荷相关联的存储器空间映射的智能SGGTT。因此,在一些实施例中,针对与工作负荷相关联的整个命令缓冲器中的多个命令可以生成用于将多个图形存储器地址转换成系统存储器地址的SGGTT。
在一些实施例中,针对工作负荷所生成的用于将多个图形存储器地址转换成系统存储器地址的SGGTT可以与GPU中仅特定的渲染引擎相关联。作为示例,VM中的工作负荷可以与GPU中特定的渲染引擎(例如,3D渲染引擎)相关联。在此情况下,所生成的SGGTT同样仅可以与3D渲染引擎相关联。
在各实施例中,可以允许SGGTT访问全局图形存储器地址空间的至少大于将基于静态全局图形存储器空间分区方案而分配给VM的存储器地址空间的一部分。与静态全局图形存储器空间分区方案相比,如本文中所讨论的GPU虚拟化时基于SGGTT的存储器过量使用方案可以使得每个VM能够在一些实施例中使用整个高位图形存储器地址空间,或者在其他实施例中使用甚至整个全局图形存储器地址空间。在一些实施例中,高位图形存储器空间可以占用全局图形存储器地址空间的上部部分,而开口可以占用全局图形存储器地址空间的下部部分。
VM内的一些应用可以利用增大的图形存储器地址空间以获得改进的性能。在一些实施例中,利用SGGTT,在运行时仅可以分配待执行工作负荷所使用的图形存储器地址空间,其保存了高位图形存储器地址空间并且增加了主机所支持的VM的最大数量。进一步地,其还可以提高GPU硬件资源在完全GPU虚拟化环境中的利用率。
接下来,在框230处,管理程序(例如,经由管理程序的GPU调度器)可以检查所述SGGTT与之前生成的一个或多个现有SGGTT之间的冲突,所述SGGTT包含正由或待由计算装置的GPU的一个或多个渲染引擎执行的图形存储器工作集所使用的图形存储器地址。在各实施例中,GPU调度器可以至少部分地基于所述SGGTT和所述现有的一个或多个SGGTT是否具有全局图形存储器地址空间中的相同条目(例如,相同图形存储器地址)来检查冲突。在一些实施例中,所述现有的一个或多个SGGTT可以基于对应的渲染引擎。作为示例,每个渲染引擎可以具有相应的SGGTT以用于冲突检查。在一些实施例中,所述现有的一个或多个SGGTT可以被集成为GPU的一个SGGTT。
在一些实施例中,当所述SGGTT与所述一个或多个现有SGGTT之间不存在冲突时,GPU调度器可以将新生成的SGGTT集成到所述一个或多个现有SGGTT中。然而,当新生成的SGGTT与所述一个或多个现有SGGTT之间存在冲突时,GPU调度器可以延迟此集成。进而,GPU调度器可以尝试着将队列中的下一个工作负荷调度给GPU。
接下来,在框240处,当所述SGGTT与所述一个或多个现有SGGTT之间不存在冲突时,管理程序(例如,经由管理程序的GPU调度器)可以将虚拟机的工作负荷调度到GPU的所述多个渲染引擎中的渲染引擎。在一些实施例中,GPU调度器可以将所集成的SGGTT写到GPU并且然后将虚拟机的工作负荷提交到适当的渲染引擎。
图3展示了适用于实践本公开的实施例的计算装置300的实施例。计算装置300可以是采取以下形式的具有GPU的任何计算装置:如智能电话、平板计算机、膝上型计算机、可穿戴装置、服务器等。如所展示的,计算装置300可以包括耦合至以下各项的系统控制逻辑320:处理器310、系统存储器330、非易失性存储器(NVM)/存储装置340以及通信接口350。在各实施例中,处理器310可以包括GPU 312以及一个或多个处理器核。
在实施例中,通信接口350可以为计算装置300提供接口以用于经由一个或多个网络进行通信和/或与任何其它合适的设备进行通信。通信接口350可以包括任何合适的硬件和/或固件,比如网络适配器、网络接口卡、一个或多个天线、(多个)无线接口等等。在各实施例中,通信接口350可以包括用于使计算装置300用射频识别(RFID)、近场通信(NFC)、光学通信或其他类似技术与另一个装置进行直接通信(例如,没有中间装置)的接口。在各实施例中,通信接口350可以与无线电通信技术(比如例如,宽带码分多址(WCDMA)、全球移动通信系统(GSM)、长期演进(LTE)、Zigbee等等)交互操作。
在一些实施例中,系统控制逻辑320可以包括任何合适的接口控制器以用于提供到处理器310和/或到与系统控制逻辑320通信的任何合适的装置或部件的任何合适的接口。系统控制逻辑320还可以与显示器(未示出)交互操作以便例如向用户显示信息。在各实施例中,显示器可以包括各种显示格式和形式之一,比如例如,液晶显示器、阴极射线管显示器、电子墨水显示器、投影显示器。在各实施例中,显示器可以包括触摸屏。
在一些实施例中,系统控制逻辑320可以包括一个或多个存储器控制器(未示出)以用于提供到系统存储器330的接口。系统存储器330可以用于加载和存储例如用于计算装置300的数据和/或指令。系统存储器330例如可以包括任何合适的易失性存储器(比如动态随机存取存储器(DRAM))。
在一些实施例中,存储器330可以具体地包括用于管理如之前所描述的GPU虚拟化时的图形存储器过量使用的逻辑,所述逻辑被统称为图形存储器过量使用管理逻辑332。在实施例中,图形存储器过量使用管理逻辑332可以包括在被处理器310执行时导致计算装置300执行结合图1与VM 130或140、管理程序110和/或GPU 120相关联的各种功能的指令。图形存储器过量使用管理逻辑332可以包括在被处理器310执行时导致计算装置300提供GPU虚拟化时的图形存储器过量使用(比如但不限于过程200)的指令。
在一些实施例中,系统控制逻辑320可以包括一个或多个输入/输出(I/O)控制器(未示出)以用于提供到NVM/存储装置340的接口和通信接口350。NVM/存储装置340可以用于例如存储数据和/或指令。NVM/储存装置340可以包括例如任何合适的非易失性存储器(比如闪存),和/或可以包括例如任何合适的(多个)非易失性存储装置(比如一个或多个硬盘驱动器(HDD)、一个或多个固态驱动器、一个或多个CD盘(CD)驱动器和/或一个或多个数字通用盘(DVD)驱动器)。NVM/存储装置340可以包括存储资源,所述存储资源物理上是其上安装有计算装置300的装置的一部分,或者所述存储资源可由计算装置300访问但并不一定是所述计算装置的一部分。例如,NVM/存储装置340可以由计算装置300经由通信接口350通过网络来访问。
在一些实施例中,处理器310可以与具有系统控制逻辑320和/或图形存储器过量使用管理逻辑332的逻辑的存储器封装在一起。在一些实施例中,(多个)处理器310中的至少一个处理器可以与具有系统控制逻辑320和/或图形存储器过量使用管理逻辑332的逻辑的存储器封装在一起以形成系统级封装(SiP)。在一些实施例中,处理器310可以与具有系统控制逻辑320和/或图形存储器过量使用管理逻辑332的逻辑的存储器集成在相同管芯上。在一些实施例中,处理器310可以与具有系统控制逻辑320和/或图形存储器过量使用管理逻辑332的存储器集成在相同的管芯上以形成片上系统(SoC)。
图4展示了根据各实施例的结合本公开的方面的具有编程指令的制品410。在各实施例中,制品可以被用来实施本公开的各实施例。如所示出的,制品410可以包括计算机可读非瞬态存储介质420,其中,指令430被配置成用于实践本文中所描述的过程中的任何一个过程的实施例或实施例的方面。存储介质420可以表示本领域已知的宽范围的永久性存储介质,包括但不限于闪存、动态随机存取存储器、静态随机存取存储器、光盘、磁盘等。指令430可以使得设备能够响应于由设备执行所述指令而执行本文中所描述的各个操作。作为示例,存储介质420可以包括指令,所述指令被配置成用于使设备(例如,设备100)实践根据本公开实施例的如在图2的过程200中所展示的GPU虚拟化时的图形存储器过量使用管理的一些方面。在实施例中,计算机可读存储介质420可以包括一个或多个计算机可读非瞬态存储介质。在其他实施例中,计算机可读存储介质420可以是利用指令430编码的瞬态介质,比如信号。
虽然已经出于描述的目的在本文中展示和描述了某些实施例,但是可以在不脱离本公开的范围的情况下用适合于实现相同目的的各种各样的替代和/或等效实施例或实施方式来代替所示出的和所描述的实施例。本申请旨在覆盖本文中所讨论的实施例的任何修改或变化。因此,显然意图是,本文中所描述的实施例仅受限于权利要求书。
以下段落描述了各实施例的示例。
示例1是一种用于计算的设备,所述设备包括:一个或多个处理器,所述一个或多个处理器包括图形处理单元(GPU);以及管理程序,所述管理程序耦合至所述GPU。所述管理程序可以包括命令解析器,所述命令解析器用于:解析与所述设备的虚拟机的工作负荷相关联的多个图形存储器地址;以及生成第一阴影全局图形转换表(SGGTT),所述第一SGGTT用于基于所述虚拟机可访问的全局存储器地址空间的一部分将所述多个图形存储器地址转换成所述设备的对应的系统存储器地址。所述管理程序可以进一步包括GPU调度器,所述GPU调度器用于:检查所述第一SGGTT与第二SGGTT之间的冲突,所述第二SGGTT包含正由或待由所述GPU的多个渲染引擎执行的多个图形存储器工作集所使用的图形存储器地址;以及当所述第一SGGTT与所述第二SGGTT之间不存在冲突时,将所述虚拟机的所述工作负荷调度到所述GPU的所述多个渲染引擎中的渲染引擎。
示例2可以包括如示例1所述的主题,并且可以进一步规定:所述GPU调度器可以响应于所述第一SGGTT与所述第二SGGTT之间没有冲突,进一步将所述第一SGGTT集成到所述第二SGGTT中,将来自所集成的SGGTT的多个地址映射写到所述GPU中,并且将所述虚拟机的所述工作负荷提交到所述GPU的所述多个渲染引擎中的所述渲染引擎。
示例3可以包括如示例1或2所述的主题,并且可以进一步规定:所述管理程序进一步包括工作负荷队列和SGGTT队列,所述工作负荷队列用于保持来自所述设备的一个或多个虚拟机的多个工作负荷,所述SGGTT队列用于保持与所述多个工作负荷相对应的多个SGGTT。
示例4可以包括如示例3所述的主题,并且可以进一步规定:所述GPU调度器进一步用于响应于所述第一SGGTT与所述第二SGGTT之间的冲突而延迟所述虚拟机的所述工作负荷,并且用于当来自所述工作负荷队列的另一个工作负荷的对应SGGTT不与所述第二SGGTT冲突时对所述另一个工作负荷进行调度。
示例5可以包括如示例1至4所述的任何主题,并且可以进一步规定;所述命令解析器进一步用于扫描所述设备的多个命令缓冲器,所述多个命令缓冲器包含所述工作负荷的多个命令,所述多个命令针对与所述多个命令相关联的所述多个图形存储器地址。
示例6可以包括如示例1至5所述的任何主题,并且可以进一步规定:所述命令解析器进一步用于从与所述工作负荷相关联的用于直接存储器访问的多个命令以及用于间接存储器访问的多个命令中解析所述多个图形存储器地址。
示例7可以包括如示例1至6所述的任何主题,并且可以进一步规定:所述GPU包括所述多个渲染引擎,所述多个渲染引擎具有至少一个3维渲染引擎、至少一个位块传送器渲染引擎、至少一个视频命令流送器(VCS)渲染引擎、以及至少一个视频增强型命令流送器(VECS)渲染引擎。
示例8可以包括如示例7所述的主题,并且可以进一步规定:所述工作负荷仅针对所述渲染引擎中的一个。
示例9可以包括如示例1至8所述的任何主题,并且可以进一步规定:所述全局存储器地址空间的所述部分大于仅基于静态全局图形存储器空间分区方案而分配给所述虚拟机的存储器空间。
示例10可以包括如示例1至9所述的任何主题,并且可以进一步规定:所述全局存储器地址空间的所述部分包括由所述设备的至少另一个虚拟机共享的全局图形存储器地址空间的整个上部部分。
示例11是一种用于计算的方法,所述方法可以包括由计算装置的管理程序解析与所述计算装置的虚拟机的工作负荷相关联的多个图形存储器地址;由所述管理程序生成阴影全局图形转换表(SGGTT),所述SGGTT用于基于全局图形存储器地址空间将所述多个图形存储器地址转换为对应的系统存储器地址;由所述管理程序检查所述SGGTT与之前生成的一个或多个现有SGGTT之间的冲突,所述一个或多个现有SGGTT包含正由或待由所述计算装置的图形处理单元(GPU)的多个渲染引擎执行的多个图形存储器工作集所使用的图形存储器地址;以及当所述SGGTT与所述一个或多个现有SGGTT之间不存在冲突时,由所述管理程序将所述虚拟机的所述工作负荷调度到所述GPU的所述多个渲染引擎中的渲染引擎。
示例12可以包括如示例11所述的主题,并且可以进一步包括:当所述SGGTT与所述一个或多个现有SGGTT之间不存在冲突时,由所述管理程序将所述SGGTT集成到所述一个或多个现有SGGTT中;以及当所述SGGTT与所述一个或多个现有SGGTT之间存在冲突时,由所述管理程序延迟将所述SGGTT集成到所述一个或多个现有SGGTT中并且延迟将所述虚拟机的所述工作负荷调度到所述渲染引擎。
示例13可以包括如示例11或12所述的主题,并且可以进一步规定:解析进一步包括由所述管理程序扫描与所述GPU的对应渲染引擎相关联的多个命令缓冲器,所述多个命令缓冲器包含所述虚拟机中的所述工作负荷的多个命令。
示例14可以包括如示例11至13所述的任何主题,并且可以进一步规定:解析进一步包括由所述管理程序从与所述工作负荷相关联的用于直接存储器访问的多个命令或用于间接存储器访问的多个命令中解析所述多个图形存储器地址。
示例15可以包括如示例11至14所述的主题,并且可以进一步规定:生成进一步包括由所述管理程序生成所述SGGTT,所述SGGTT用于转换与所述工作负荷相关联的整个命令缓冲器中的多个命令的所述多个图形存储器地址。
示例16可以包括如示例11至15所述的任何主题,并且可以进一步规定:生成进一步包括由所述管理程序生成所述工作负荷的所述SGGTT,所述SGGTT用于转换与所述GPU中仅特定的渲染引擎相关联的所述多个图形存储器地址。
示例17可以包括如示例11至16所述的任何主题,并且可以进一步规定:生成进一步包括:由所述管理程序基于所述虚拟机可访问的所述全局图形存储器地址空间的一部分来生成所述SGGTT,其中,所述全局图形存储器地址空间的所述部分大于静态全局图形存储器空间分区方案而能由所述虚拟机访问的存储器地址空间。
示例18可以包括如示例11至17所述的任何主题,并且可以进一步规定:生成进一步包括:由所述管理程序基于所述虚拟机可访问的所述全局图形存储器地址空间的一部分来生成所述SGGTT,其中,所述全局图形存储器地址空间的所述部分包括由所述计算装置的至少另一个虚拟机共享的所述全局图形存储器地址空间的整个上部部分。
示例19可以包括如示例11至18所述的任何主题,并且可以进一步规定:检查进一步包括:由所述管理程序至少部分地基于所述SGGTT和所述现有的一个或多个SGGTT是否具有所述全局图形存储器地址空间中的相同条目来检查冲突。
示例20可以包括如示例11至19所述的任何主题,并且可以进一步包括:由所述管理程序将所述SGGTT的多个地址映射写到所述GPU的页表;以及由所述管理程序将所述虚拟机的所述工作负荷提交到所述GPU的所述多个渲染引擎中的所述渲染引擎。
示例21是至少一种存储介质,所述至少一种存储介质可以包括多个指令,所述多个指令被配置成用于使设备响应于由所述设备执行所述指令而实践如示例11至20所述的任何主题。
示例22是一种用于计算的系统,所述系统可以包括用于实践如示例11至20所述的任何主题的装置。
提供了将允许读者断定本技术公开的本质和主旨的摘要。基于本摘要将不被用于限制权利要求书的范围或含义的理解来提交本摘要。在此将以下权利要求书结合到具体实施方式中,其中每一项权利要求独立地代表单独的实施例。

Claims (25)

1.一种用于处理数据的设备,所述设备包括:
一个或多个处理器,包括图形处理单元(GPU);以及
管理程序,耦合至所述GPU,所述管理程序包括:
命令解析器,所述命令解析器用于:解析与所述设备的虚拟机的工作负荷相关联的多个图形存储器地址;以及生成第一阴影全局图形转换表(SGGTT),所述第一SGGTT用于基于所述虚拟机可访问的全局存储器地址空间的一部分将所述多个图形存储器地址转换成所述设备的对应的系统存储器地址;以及
GPU调度器,所述GPU调度器用于:检查所述第一SGGTT与第二SGGTT之间的冲突,所述第二SGGTT包含正由或待由所述GPU的多个渲染引擎执行的多个图形存储器工作集所使用的图形存储器地址;以及当所述第一SGGTT与所述第二SGGTT之间不存在冲突时,将所述虚拟机的所述工作负荷调度到所述GPU的所述多个渲染引擎中的渲染引擎。
2.如权利要求1所述的设备,其中,所述GPU调度器进一步用于:响应于所述第一SGGTT与所述第二SGGTT之间没有冲突,将所述第一SGGTT集成到所述第二SGGTT中,将来自所集成的SGGTT的多个地址映射写到所述GPU中,并且将所述虚拟机的所述工作负荷提交到所述GPU的所述多个渲染引擎中的所述渲染引擎。
3.如权利要求1所述的设备,其中,所述管理程序进一步包括工作负荷队列和SGGTT队列,所述工作负荷队列用于保持来自所述设备的一个或多个虚拟机的多个工作负荷,所述SGGTT队列用于保持与所述多个工作负荷相对应的多个SGGTT。
4.如权利要求3所述的设备,其中,所述GPU调度器进一步用于响应于所述第一SGGTT与所述第二SGGTT之间的冲突而延迟所述虚拟机的所述工作负荷,并且用于当来自所述工作负荷队列的另一个工作负荷的对应SGGTT不与所述第二SGGTT冲突时对所述另一个工作负荷进行调度。
5.如权利要求1所述的设备,其中,所述命令解析器进一步用于扫描所述设备的多个命令缓冲器,所述多个命令缓冲器包含所述工作负荷的多个命令,所述多个命令针对与所述多个命令相关联的所述多个图形存储器地址。
6.如权利要求1所述的设备,其中,所述命令解析器进一步用于:从与所述工作负荷相关联的用于直接存储器访问的多个命令以及用于间接存储器访问的多个命令中解析所述多个图形存储器地址。
7.如权利要求1所述的设备,其中,所述GPU包括所述多个渲染引擎,所述多个渲染引擎具有至少一个3维渲染引擎、至少一个位块传送器渲染引擎、至少一个视频命令流送器(VCS)渲染引擎、以及至少一个视频增强型命令流送器(VECS)渲染引擎。
8.如权利要求7所述的设备,其中,所述工作负荷仅针对所述渲染引擎中的一个。
9.如权利要求1所述的设备,其中,所述全局存储器地址空间的所述部分大于仅基于静态全局图形存储器空间分区方案而分配给所述虚拟机的存储器空间。
10.如权利要求1至9中任一项所述的设备,其中,所述全局存储器地址空间的所述部分包括由所述设备的至少另一个虚拟机共享的所述全局图形存储器地址空间的整个上部部分。
11.一种用于处理数据的方法,所述方法包括:
由计算装置的管理程序解析与所述计算装置的虚拟机的工作负荷相关联的多个图形存储器地址;
由所述管理程序生成阴影全局图形转换表(SGGTT),所述SGGTT用于基于全局图形存储器地址空间将所述多个图形存储器地址转换为对应的系统存储器地址;
由所述管理程序检查所述SGGTT与之前生成的一个或多个现有SGGTT之间的冲突,所述一个或多个现有SGGTT包含正由或待由所述计算装置的图形处理单元(GPU)的多个渲染引擎执行的多个图形存储器工作集所使用的图形存储器地址;以及
当所述SGGTT与所述一个或多个现有SGGTT之间不存在冲突时,由所述管理程序将所述虚拟机的所述工作负荷调度到所述GPU的所述多个渲染引擎中的渲染引擎。
12.如权利要求11所述的方法,进一步包括:
当所述SGGTT与所述一个或多个现有SGGTT之间不存在冲突时,由所述管理程序将所述SGGTT集成到所述一个或多个现有SGGTT中;以及
当所述SGGTT与所述一个或多个现有SGGTT之间存在冲突时,由所述管理程序延迟将所述SGGTT集成到所述一个或多个现有SGGTT中并且延迟将所述虚拟机的所述工作负荷调度到所述渲染引擎。
13.如权利要求11所述的方法,其中,解析进一步包括:由所述管理程序扫描与所述GPU的对应渲染引擎相关联的多个命令缓冲器,所述多个命令缓冲器包含所述虚拟机中的所述工作负荷的多个命令。
14.如权利要求11所述的方法,其中,解析进一步包括:由所述管理程序从与所述工作负荷相关联的用于直接存储器访问的多个命令或用于间接存储器访问的多个命令中解析所述多个图形存储器地址。
15.如权利要求11所述的方法,其中,生成进一步包括:由所述管理程序生成所述SGGTT,所述SGGTT用于转换与所述工作负荷相关联的整个命令缓冲器中的多个命令的所述多个图形存储器地址。
16.如权利要求11所述的方法,其中,生成进一步包括:由所述管理程序生成所述工作负荷的所述SGGTT,所述SGGTT用于转换与所述GPU中仅特定的渲染引擎相关联的所述多个图形存储器地址。
17.如权利要求11所述的方法,其中,生成进一步包括:由所述管理程序基于所述虚拟机可访问的所述全局图形存储器地址空间的一部分来生成所述SGGTT,其中,所述全局图形存储器地址空间的所述部分大于基于静态全局图形存储器空间分区方案而能由所述虚拟机访问的存储器地址空间。
18.如权利要求11所述的方法,其中,生成进一步包括:由所述管理程序基于所述虚拟机可访问的所述全局图形存储器地址空间的一部分来生成所述SGGTT,其中,所述全局图形存储器地址空间的所述部分包括由所述计算装置的至少另一个虚拟机共享的所述全局图形存储器地址空间的整个上部部分。
19.如权利要求11所述的方法,其中,检查进一步包括:由所述管理程序至少部分地基于所述SGGTT和所述现有的一个或多个SGGTT是否具有所述全局图形存储器地址空间中的相同条目来检查冲突。
20.如权利要求11所述的方法,进一步包括:
由所述管理程序将所述SGGTT的多个地址映射写到所述GPU中的页表;以及
由所述管理程序将所述虚拟机的所述工作负荷提交到所述GPU的所述多个渲染引擎中的所述渲染引擎。
21.至少一种非瞬态存储介质,所述至少一种非瞬态存储介质具有指令,所述指令被配置成用于使设备响应于由设备执行所述指令而使所述设备实践如权利要求11至20中任一项所述的方法。
22.一种用于处理数据的设备,所述设备包括:
用于解析与计算装置的虚拟机的工作负荷相关联的多个图形存储器地址的装置;
用于生成阴影全局图形转换表(SGGTT)的装置,所述SGGTT用于基于全局图形存储器地址空间将所述多个图形存储器地址转换成对应的系统存储器地址;
用于检查所述SGGTT与之前生成的一个或多个现有SGGTT之间的冲突的装置,所述一个或多个现有SGGTT包含正由或待由所述计算装置的图形处理单元(GPU)的多个渲染引擎执行的多个图形存储器工作集所使用的图形存储器地址;以及
用于当所述SGGTT与所述一个或多个现有SGGTT之间不存在冲突时将所述虚拟机的所述工作负荷调度到所述GPU的所述多个渲染引擎中的渲染引擎的装置。
23.如权利要求22所述的设备,进一步包括:
用于当所述SGGTT与所述一个或多个现有SGGTT之间不存在冲突时将所述SGGTT集成到所述一个或多个现有SGGTT中的装置;以及
用于当所述SGGTT与所述一个或多个现有SGGTT之间存在冲突时延迟将所述SGGTT集成到所述一个或多个现有SGGTT中并且延迟将所述虚拟机的所述工作负荷调度到所述渲染引擎的装置。
24.如权利要求22所述的设备,其中,用于生成的装置进一步包括:用于基于所述虚拟机可访问的所述全局图形存储器地址空间的一部分来生成所述SGGTT的装置,其中,所述全局图形存储器地址空间的所述部分大于基于静态全局图形存储器空间分区方案而能由所述虚拟机访问的存储器地址空间。
25.如权利要求22至24中任一项所述的设备,其中,用于生成的装置进一步包括:用于基于所述虚拟机可访问的所述全局图形存储器地址空间的一部分来生成所述SGGTT的装置,其中,所述全局图形存储器地址空间的所述分区包括由所述计算装置的至少另一个虚拟机共享的所述全局图形存储器地址空间的整个上部部分。
CN201580076870.XA 2015-03-26 2015-03-26 具有图形和系统存储器冲突检查的计算方法和设备 Active CN107250980B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/075116 WO2016149935A1 (en) 2015-03-26 2015-03-26 Computing methods and apparatuses with graphics and system memory conflict check

Publications (2)

Publication Number Publication Date
CN107250980A true CN107250980A (zh) 2017-10-13
CN107250980B CN107250980B (zh) 2021-02-09

Family

ID=56977722

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580076870.XA Active CN107250980B (zh) 2015-03-26 2015-03-26 具有图形和系统存储器冲突检查的计算方法和设备

Country Status (4)

Country Link
US (1) US10242422B2 (zh)
EP (1) EP3274818B1 (zh)
CN (1) CN107250980B (zh)
WO (1) WO2016149935A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109697060A (zh) * 2018-12-29 2019-04-30 广州华多网络科技有限公司 视频特效软件及其生成方法、装置、设备和存储介质
CN109918319A (zh) * 2019-03-22 2019-06-21 深圳忆联信息系统有限公司 一种固态硬盘控制器加速方法及其系统
CN113168385A (zh) * 2018-08-03 2021-07-23 御眼视觉技术有限公司 访问动态存储器模块
CN115964167A (zh) * 2022-12-16 2023-04-14 摩尔线程智能科技(北京)有限责任公司 异构计算平台的资源池化方法、装置、设备、介质和产品

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838725B2 (en) * 2018-09-26 2020-11-17 Apple Inc. Low latency fetch circuitry for compute kernels
CN111913794A (zh) * 2020-08-04 2020-11-10 北京百度网讯科技有限公司 用于共用gpu的方法、装置、电子设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101484883A (zh) * 2006-06-30 2009-07-15 英特尔公司 用于重新映射图形数据的存储器地址的装置和方法
CN102567052A (zh) * 2010-12-20 2012-07-11 微软公司 启用配置有图形处理器的服务器的远程管理的技术
CN103282881A (zh) * 2010-12-23 2013-09-04 英特尔公司 通过虚拟化直接共享智能设备
CN104380258A (zh) * 2012-07-18 2015-02-25 英特尔公司 对图形硬件实施调度操作

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785793B2 (en) * 2001-09-27 2004-08-31 Intel Corporation Method and apparatus for memory access scheduling to reduce memory access latency
US9058292B2 (en) * 2004-12-29 2015-06-16 Intel Corporation System and method for one step address translation of graphics addresses in virtualization
US7499057B2 (en) * 2005-09-09 2009-03-03 Microsoft Corporation Address translation in an integrated graphics environment
WO2013091185A1 (en) * 2011-12-21 2013-06-27 Intel Corporation Gpu accelerated address translation for graphics virtualization
DE112013006590T5 (de) * 2013-02-05 2016-01-21 Arm Limited Handhabung von Speicherzugriffsvorgängen in einer Datenverarbeitungsvorrichtung
US9619401B2 (en) * 2015-02-20 2017-04-11 Wisconsin Alumni Research Foundation Efficient memory management system for computers supporting virtual machines

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101484883A (zh) * 2006-06-30 2009-07-15 英特尔公司 用于重新映射图形数据的存储器地址的装置和方法
CN102567052A (zh) * 2010-12-20 2012-07-11 微软公司 启用配置有图形处理器的服务器的远程管理的技术
CN103282881A (zh) * 2010-12-23 2013-09-04 英特尔公司 通过虚拟化直接共享智能设备
CN104380258A (zh) * 2012-07-18 2015-02-25 英特尔公司 对图形硬件实施调度操作

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王海清: "嵌入式GPU硬件加速渲染的纹理传输优化及预取策略研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113168385A (zh) * 2018-08-03 2021-07-23 御眼视觉技术有限公司 访问动态存储器模块
CN109697060A (zh) * 2018-12-29 2019-04-30 广州华多网络科技有限公司 视频特效软件及其生成方法、装置、设备和存储介质
CN109918319A (zh) * 2019-03-22 2019-06-21 深圳忆联信息系统有限公司 一种固态硬盘控制器加速方法及其系统
CN109918319B (zh) * 2019-03-22 2021-03-05 深圳忆联信息系统有限公司 一种固态硬盘控制器加速方法及其系统
CN115964167A (zh) * 2022-12-16 2023-04-14 摩尔线程智能科技(北京)有限责任公司 异构计算平台的资源池化方法、装置、设备、介质和产品
CN115964167B (zh) * 2022-12-16 2023-09-01 摩尔线程智能科技(北京)有限责任公司 异构计算平台的资源池化方法、装置、设备、介质和产品

Also Published As

Publication number Publication date
CN107250980B (zh) 2021-02-09
EP3274818A4 (en) 2018-12-05
EP3274818B1 (en) 2021-01-27
WO2016149935A1 (en) 2016-09-29
US10242422B2 (en) 2019-03-26
EP3274818A1 (en) 2018-01-31
US20180122039A1 (en) 2018-05-03

Similar Documents

Publication Publication Date Title
US10127628B2 (en) Method and system to virtualize graphic processing services
CN107250980A (zh) 具有图形和系统存储器冲突检查的计算方法和设备
TWI529626B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
JP5583180B2 (ja) 仮想gpu
CN103793893B (zh) 采用限缓冲区处理的世界和屏幕空间管线间基元重新排序
CN103282881B (zh) 通过虚拟化直接共享智能设备
TWI588653B (zh) 針對記憶體存取的動態記憶列模式定址
CN103729167A (zh) 用于改进多线程处理单元中的性能的技术
CN103034524A (zh) 半虚拟化的虚拟gpu
US20190188028A1 (en) Paravirtualized access for device assignment by bar extension
KR20190021474A (ko) 페이지 오류 없이 가상 메모리 내 희소 데이터 세트에의 물리 페이지의 할당
TW200933522A (en) Graphics processing systems, cache systems and data-handling methods
TW201337751A (zh) 執行成型記憶體存取作業的系統和方法
US10509666B2 (en) Register partition and protection for virtualized processing device
US10545800B2 (en) Direct doorbell ring in virtualized processing device
US11467870B2 (en) VMID as a GPU task container for virtualization
CN103885902A (zh) 用于经由纹理硬件实施存储器访问操作的技术
TWI525438B (zh) 透過貼圖硬體執行記憶體存取操作之技術
CN109254826A (zh) 虚拟化加速处理装置的挂起检测
US20170031628A1 (en) Method and device for communication between virtual machines
CN109766179B (zh) 一种显存分配方法以及装置
US20200027189A1 (en) Efficient dependency detection for concurrent binning gpu workloads
CN103218259A (zh) 计算任务的调度和执行
CN103870247A (zh) 用于保存和恢复线程组操作状态的技术
US11372756B2 (en) Memory pool management

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