CN112368688A - 作为用于虚拟化的gpu任务容器的vmid - Google Patents

作为用于虚拟化的gpu任务容器的vmid Download PDF

Info

Publication number
CN112368688A
CN112368688A CN201980044142.9A CN201980044142A CN112368688A CN 112368688 A CN112368688 A CN 112368688A CN 201980044142 A CN201980044142 A CN 201980044142A CN 112368688 A CN112368688 A CN 112368688A
Authority
CN
China
Prior art keywords
task
processor
container
implementation
tasks
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
Application number
CN201980044142.9A
Other languages
English (en)
Inventor
阿尼鲁德·R·阿查里亚
迈克尔·J·曼托尔
雷克斯·埃尔登·麦克拉里
安东尼·阿萨罗
杰弗里·贡献·程
马克·福勒
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.)
ATI Technologies ULC
Advanced Micro Devices Inc
Original Assignee
ATI Technologies ULC
Advanced Micro Devices Inc
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 ATI Technologies ULC, Advanced Micro Devices Inc filed Critical ATI Technologies ULC
Publication of CN112368688A publication Critical patent/CN112368688A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • 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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/54Interprogram communication
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security 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/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing

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 Security & Cryptography (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

公开了用于在虚拟存储器标识符(VMID)容器中抽象化任务的系统、设备和方法。耦合至存储器的处理器执行包括第一任务的多个并行任务。响应于检测到对应于第一操作的所述第一任务的一个或多个指令,所述处理器检索用于唯一地标识所述第一任务的第一标识符(ID),其中所述第一ID对于所述第一任务是透明的。然后,所述处理器将所述第一ID映射至第二ID和/或第三ID。所述处理器通过使用所述第二ID和/或所述第三ID将所述第一任务标识到至少第一数据结构来完成所述第一操作。在一个实现方式中,所述第一操作是存储器访问操作,并且所述第一数据结构是一组页表。而且,在一个实现方式中,所述第二ID标识所述第一任务的第一应用程序,并且所述第三ID标识所述第一任务的第一操作系统(OS)。

Description

作为用于虚拟化的GPU任务容器的VMID
背景技术
由于现代图形处理单元(GPU)的单位功率性能和成本,使用GPU进行一般计算的期望最近变得更加普遍。GPU的计算能力已以超过对应中央处理单元(CPU)平台的计算能力的速度增长。结合移动计算市场(例如,笔记本电脑、移动智能手机、平板电脑)的激增和支持服务器/企业系统,这种增长用于实现与期望的用户体验一致的质量。因此,组合使用CPU和GPU来执行带有数据并行内容的工作负载正在变成一种广泛应用的技术。
GPU利用大量的线程级并行来实现高指令吞吐量。这种高吞吐量有助于使GPU在许多不同的范例中成为必不可少的计算资源。在许多类型的计算环境中,多个应用程序共享单个处理单元。从一个或多个操作系统同时执行多个应用程序需要硬件和软件中的各种支持机制。一种关键机制是虚拟存储器,所述虚拟存储器管理和保护在计算机上运行的每个应用程序的地址空间。但是,现代GPU缺乏对并行执行多个应用程序的支持。因此,GPU在运行多个并行应用程序时会遭受高性能开销。
附图说明
通过结合附图参考以下描述,可更好地理解本文中描述的方法和机制的优点,在附图中:
图1是计算系统的一个实现方式的框图。
图2是计算系统的另一实现方式的框图。
图3示出GPU的虚拟环境的一个实现方式的框图。
图4示出GPU的一个实现方式的框图。
图5示出具有计算管线的处理器的一个实现方式的框图。
图6示出抽象化虚拟存储器标识符(VMID)容器中的任务的一个实现方式的框图。
图7示出计算系统的一个实现方式的框图。
图8示出用于将容器ID映射至OS或VF ID的映射表的一个实现方式。
图9是示出用于使用容器ID抽象化任务的方法的一个实现方式的通用流程图。
图10是示出用于调度器生成任务的容器ID的方法的一个实现方式的通用流程图。
具体实施方式
在以下描述中,阐述了众多具体细节以提供对本文中呈现的方法和机制的透彻理解。然而,本领域的普通技术人员应认识到,可在没有这些具体细节的情况下实践各种实现方式。在一些情况下,并未详细示出所熟知的结构、部件、信号、计算机程序指令以及技术,以避免混淆本文中描述的方法。应了解,为了使说明简单且清楚,附图中所示的元件未必按比例绘制。例如,一些元件的尺寸可相对于其它元件被放大。
本文公开了用于抽象化虚拟存储器标识符(VMID)容器中的任务的各种系统、设备和方法。耦合至存储器的处理器执行包括第一任务的多个并行任务。响应于检测到对应于第一操作的所述第一任务的一个或多个指令,所述处理器检索用于唯一地标识所述第一任务的第一标识符(ID),其中所述第一ID对于所述第一任务是透明的。然后,所述处理器将所述第一ID映射至第二ID和/或第三ID。所述处理器通过使用所述第二ID和/或所述第三ID将所述第一任务标识到至少第一数据结构来完成所述第一操作。在一个实现方式中,所述第一操作是存储器访问操作,并且所述第一数据结构是一组页表。而且,在一个实现方式中,所述第二ID标识所述第一任务的第一应用程序,并且所述第三ID标识所述第一任务的第一操作系统(OS)。
现在参考图1,示出了计算系统100的一个实现方式的框图。在一个实现方式中,计算系统100至少包括处理器105A-N、输入/输出(I/O)接口120、总线125、一个或多个存储器控制器130、网络接口控制器(NIC)135和一个或多个存储器装置140。在其它实现方式中,计算系统100包括其它部件和/或计算系统100以不同方式布置。处理器105A-N表示系统100中包括的任何数目的处理器。在一个实现方式中,处理器105A是通用处理器,诸如中央处理单元(CPU)。在一个实现方式中,处理器105N是具有高度并行架构的数据并行处理器。数据并行处理器包括图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等等。在一些实现方式中,处理器105A-N包括多个数据并行处理器。
一个或多个存储器控制器130表示可由处理器105A-N和耦合至I/O接口120的I/O装置(未示出)访问的任何数目和类型的存储器控制器。一个或多个存储器控制器130耦合至任何数目和类型的一个或多个存储器装置140。一个或多个存储器装置140表示任何数目和类型的存储器装置。举例来说,一个或多个存储器装置140中的存储器的类型包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、NAND快闪存储器、NOR快闪存储器、铁电随机存取存储器(FeRAM)或其它存储器。
I/O接口120表示任何数目和类型的I/O接口(例如,外围部件互连(PCI)总线、PCI扩展(PCI-X)、PCIE(PCI快速)总线、吉比特以太网(GBE)总线、通用串行总线(USB))。各种类型的外围装置(未示出)耦合至I/O接口120。此类外围装置包括(但不限于)显示器、键盘、鼠标、打印机、扫描仪、操纵杆或其它类型的游戏控制器、媒体记录装置、外部存储装置、网络接口卡等。网络接口控制器(NIC)135跨网络145接收和发送网络消息。
网络145表示任何类型的网络或网络的组合,包括无线连接、直接局域网(LAN)、城域网(MAN)、广域网(WAN)、内联网、互联网、有线网络、分组交换网络、光纤网络、路由器、存储区域网络,或其它类型的网络。LAN的实例包括以太网网络、光纤分布式数据接口(FDDI)网络和令牌环网络。在各种实现方式中,网络145还包括远程直接存储器访问(RDMA)硬件和/或软件、传输控制协议/互联网协议(TCP/IP)硬件和/或软件、路由器、中继器、交换机、电网和/或其它部件。
在各种实现方式中,计算系统100是计算机、膝上型计算机、移动装置、游戏控制台、服务器、流式传输装置、可穿戴装置或者各种其它类型的计算系统或装置中的任一种。应注意,计算系统100的部件的数目随实现方式的不同而不同。举例来说,在其它实现方式中,存在比在图1中示出的数目更多或更少的每个部件。还应注意,在其它实现方式中,计算系统100包括在图1中未示出的其它部件。另外,在其它实现方式中,通过与在图1中示出的方式不同的其它方式来构建计算系统100。
现在转向图2,示出了计算系统200的另一实现方式的框图。在一个实现方式中,系统200包括GPU 205、系统存储器225和本地存储器230。系统200还包括其它部件,未示出所述其它部件以避免使图混淆不清。GPU 205至少包括命令处理器235、调度单元250、计算单元255A-N、存储器控制器220、全局数据共享270、一级(L1)高速缓存265以及二级(L2)高速缓存260。尽管图2中未示出,但是在一个实现方式中,计算单元255A-N也在每个计算单元255A-N内包括一个或多个高速缓存和/或本地存储器。在其它实现方式中,GPU 205包括其它部件,省略所示部件中的一者或多者,具有部件的多个例子,但在图2中仅示出一个例子和/或以其它他合适的方式进行组织。
在各种实现方式中,计算系统200执行各种类型的软件应用程序中的任一种。在一个实现方式中,作为执行给定软件应用程序的一部分,计算系统200的主机CPU(未示出)启动要在GPU 205上执行的任务。命令处理器235从主机CPU接收任务,并将任务发布到调度单元250以在计算单元255A-N上调度。在一个实现方式中,当调度单元250在计算单元255A-N上调度给定任务时,调度单元250通过将操作系统(OS)或虚拟功能(VF)标识符(ID)与给定任务的虚拟存储器(VM)ID散列在一起来生成给定任务的唯一容器ID。在计算单元255A-N上执行的任务内的线程访问计算系统200内部和外部的各种数据结构。当线程访问计算系统200外部的数据结构时,将容器ID映射至VFID和/或VMID,其中VFID和/或VMID用于将线程标识到外部数据结构。
现在转到图3,示出了GPU的虚拟环境300的一个实现方式的框图。GPU是能够支持多个并行任务的大型并行机器。GPU用于处理各种应用程序中的图形和/或计算工作负载。对于图形工作负载,GPU包括深层的混合管线,所述管线包括固定功能的硬件和可编程的着色器。用于GPU的典型工作负载源层级包括操作系统(OS)和虚拟功能(VF)310A-B、应用程序308A-N、一个或多个队列306A、绘制调用和分派的级别。每个队列306A包括任意数量的图形任务302A和/或计算任务304A。当支持多任务时,GPU上可能同时存在来自各种源的多个工作负载。
在GPU上执行多种不同类型的并行应用程序时,将标记每个不同的工作负载以标识和管理工作负载来实现各种功能。例如,为同步和复位目的标记每个不同工作负载,以实现存储器管理技术和结构、管理中断以及实现其它功能。在一个实现方式中,使用容器ID标识每个不同的工作负载,以区分该工作负载与其它工作负载。在一个实现方式中,根据OS或VF ID和VMID的散列创建容器ID。这使GPU能够支持来自不同来宾OS的多个并行队列、应用程序、绘制和分派。在其它实现方式中,根据其它类型的功能和/或从其它类型的值创建容器ID。
尽管本文提出的几个讨论标识GPU的特性,但应理解,相同的技术适用于具有并行执行功能的其它类型的处理器(例如,多核CPU,FPGA,ASIC,DSP)。因此,在整个本公开中,当将技术描述为由GPU执行或在GPU上实现时,应理解,所述技术也能够在其它类型的处理器上执行。
现在转到图4,示出了GPU 400的一个实现方式的框图。在一个实现方式中,GPU400包括耦合至存储器子系统420的图形管线410。在一个实现方式中,图形管线410在每个管线级中包括多任务支持。前端425包括各种队列,用于存储已转发至图形管线410的传入任务。几何引擎430使用绘制调用命令对图形管线410上正在执行的不同任务执行图元的渲染。着色器引擎435实现渲染图形中涉及的各种着色器级。在一个实现方式中,调用像素引擎440以计算输出信息,并在将正被渲染的图像划分为屏幕空间中的箱格或图块的网格之后使结果写入至输出表面。在一些实现方式中,像素引擎440计算要在光栅化对象上插值的顶点属性的值。在其它实现方式中,图形管线410包括其它级或引擎和/或各个引擎执行其它类型的操作。
通常,GPU包括对多任务的管线支持,以处理每个级的顺序和依赖性要求。这指图形管线410的每个级执行单独的任务(例如,几何引擎430上的任务450A、着色器引擎435上的任务450B、像素引擎440上的任务450C)。在一个实现方式中,图形管线410被配置成支持独立和并行的图形任务。在此实现方式中,源层级详细信息由GPU的每个级遮盖。通过使容器ID用于区分每个任务与对级执行的其它并行任务来支持图形管线的独立和并行图形任务。
现参考图5,示出了具有计算管线505的处理器500的一个实现方式的框图。在一个实现方式中,处理器500至少包括耦合至存储器子系统510的计算管线505。在一个实现方式中,处理器500是GPU。在其它实现方式中,处理器500是各种其它类型的处理单元中的任一个(例如,FPGA、ASIC、DSP、多核CPU)。
计算管线505包括耦合至着色器引擎520的前端515。计算管线505包括竖直和/或水平分区以使得能够同时执行任务525A-D。例如,在一个实现方式中,将任务525A启动到着色器引擎520上,随后在后续的时钟周期中启动其它任务。在另一实现方式中,在着色器引擎520上同时启动和执行任务525B-D。在此实现方式中,着色器引擎520竖直地进行分区,以使得能够同时执行多个任务。竖直分区是指着色器引擎520的处理单元和处理逻辑在相同的时钟循环中维持多个任务的状态和/或对多个任务进行操作的能力。在一个实现方式中,使用容器ID来标识单独的任务,其中每个不同的任务具有唯一的容器ID。
在一个实现方式中,对计算管线505的每个级进行竖直分区。例如,前端515包括进行分区以允许同时启动和运行多个不同任务的队列。而且,着色器引擎520包括竖直分区,以允许同时执行多个计算任务。前端515和着色器引擎520能够同时执行来自多个源的工作负载。在一个实现方式中,当执行这些个别任务时,计算管线505中的每个级或分区都不知道任务的源层级。在此实现方式中,仅当任务遍历处理器500的边界时才使用源层级细节。
现在转到图6,示出了在虚拟存储器标识符(VMID)容器中抽象化任务的一个实现方式的框图。在一个实现方式中,VMID 602通常用于存储器管理操作,以区分在处理器上执行的应用程序。然而,在另一实现方式中,代替VMID 602,使用任务容器ID 604来抽象化执行任务的源层级。在各种实现方式中,处理器不需要在执行期间辨别任务源。相反,处理器仅在与外部部件或外部数据结构进行交互时才需要辨别源。在一个实现方式中,容器ID604用于捆绑存储器数据结构。在此实现方式中,处理器通过不允许一个容器ID访问另一个容器ID的存储器内容来提供存储器保护。
在一个实现方式中,容器ID 604由硬件机制管理,并且对于硬件执行级别之上的软件层级是透明的。其余软件层级继续使用现有的源跟踪机制。这些现有机制包括OS ID、进程ID、队列ID等。在一个实现方式中,任务标记和源层级仅在从处理器到外部部件的边界处相关。例如,例如终端和复位操作的同步任务将引用任务源。而且,处理器外部的存储器事务将使用任务源来映射到正确的存储器管理数据结构(例如,页表)。另外,在每个源的基础上跟踪中断处理,以标识要中断的当前正在执行的任务。另外,在每个源的基础上跟踪外围部件互连高速(PCI-e)总线装置功能分辨率,以确定虚拟或物理功能的源。在处理器的边界处执行以跟踪任务源的其它类型的操作也是可能的并且是预期的。
在一个实现方式中,将映射表608维持在处理器与外部部件之间的每个边界处。映射表将任务的容器ID 604映射至操作系统(OS)ID或虚拟功能(VF)ID 606、进程ID或其它。使用容器ID 604标识任务源能实现在处理器上执行并行绘制和分派、队列、应用程序、虚拟功能和OS。条目610、612、614和616表示映射表608中的任何数量的条目。在一个实现方式中,映射表608具有16个条目,而在其它实现方式中,映射表608包括其它数量的条目。
现在参考图7,示出了计算系统700的一个实现方式的框图。在一个实现方式中,计算系统700使用容器ID来跟踪多任务并行执行环境中的任务。为了使用容器ID来跟踪任务,系统700包括多个映射表(MT)725A-D,以将容器ID映射至任务的源层级。每个MT 725A-D包括任意数量的条目,其中条目的数量根据实现方式而不同。
在一个实现方式中,系统700包括耦合至存储器子系统730和输入/输出(I/O)装置740A-B的片上系统(SoC)705。I/O装置740A-B代表任何数量和类型的外围装置。应注意,在其它实现方式中,系统700还包括其它部件,并未示出这些部件以避免使附图混淆。SoC 705至少包括处理器内核710A-N、I/O结构715、存储器管理单元720和中断控制器735。在一个实现方式中,I/O结构715包括对应于I/O装置740A-B的映射表725A-B。而且,MMU 720和中断控制器735分别包括映射表725C-D。映射表725C用于将容器ID映射至任务的源层级,以使得能够访问页表的适当集合,而映射表725D用于将容器ID映射至对应源以传递中断。在一个实现方式中,将不同的MT 725A-D同步,使得每个MT的条目与其它MT的条目匹配。因此,在此实现方式中,当从给定的MT 725A-D删除现有条目以为不同容器ID的新条目腾出空间时,随后通知并更新其它MT 725A-D以匹配给定的MT 725A-D。
现在转到图8,示出了用于将容器ID映射至OS或VF ID的映射表800的一个实现方式。在一个实现方式中,处理器(例如,图2的GPU 205)包括用于将容器ID映射至OS/VF ID和VMID的映射表800的一个或多个副本。映射表800包括容器ID字段805、OS/VF ID字段810和VMID字段815。在其它实现方式中,映射表800包括其它字段和/或以不同方式进行组织。使用给定任务的容器ID来执行映射表800的查找,以找到给定任务的匹配OS/VF ID和VMID。
当需要标识任务源以访问给定的数据结构或与外部部件交互时,处理器使用映射表800将给定的容器ID解析为任务的OS或VF ID和VMID。然后使用OS或VF ID和/或VMID来标识任务源以完成特定类型的操作。例如,通过访问给定容器ID的一组特定的页表来执行虚拟到物理地址转换。在另一个实例中,通过使用映射表800将容器ID解析为OS/VF ID和VMID,标识用于确定将中断传递到何处的特定任务。
在一个实现方式中,映射表800具有有限数量的条目。如果映射表800已满并且在处理器上启动了新任务,则处理器将退出、挂起或等待完成映射表800中的一个现有条目,从而为新任务的新条目腾出空间。在一些实现方式中,处理器维持映射表800的多个副本,其中映射表800的一个副本存储在处理器的每个边界点处。在这些实现方式中,处理器将映射表同步,以确保它们对于当前正在执行的任务的各种容器ID具有相同的条目。
现在参考图9,示出了使用容器ID来抽象化任务的方法900的一个实现方式。出于论述的目的,按顺序次序示出此实现方式中的步骤和图10的那些步骤。然而,应注意,在所描述的方法的各种实现方式中,所描述的要素中的一者或多者同时地执行,以与所示不同的次序执行,或者完全地被省略。还在需要时执行其它附加的要素。本文描述的各种系统或设备中的任一者被配置为实施方法900。
处理器同时执行第一任务和一个或多个其它任务(框905)。在一个实现方式中,处理器是GPU。在执行第一任务时,处理器检测到对应于第一操作的一个或多个指令(框910)。在一个实现方式中,第一操作是存储器访问操作。在另一实现方式中,第一操作是针对处理器外部的部件的操作。在另一实现方式中,第一操作是需要标识第一任务源的操作。在另一实现方式中,第一操作是涉及渲染一个或多个像素以供显示的图形操作。在此实现方式中,作为第一操作的一部分,处理器生成一个或多个像素以驱动显示器。在其它实现方式中,第一操作是各种其它类型的操作中的任一种。
响应于检测到对应于第一操作的第一任务的一个或多个指令,处理器接收唯一地标识第一任务的第一标识符(ID),其中第一ID不标识第一任务的源层级(框915)。换句话说,第一ID对于第一任务是透明的。在一个实现方式中,第一ID是容器ID。接下来,处理器将第一ID映射至标识第一任务的源层级的第二ID(框920)。在另一实现方式中,处理器将第一ID映射至一起标识第一任务的源层级的第二ID和第三ID。在此实现方式中,第二ID标识第一任务的第一应用程序,并且第三ID标识第一任务的第一操作系统(OS)。在此实现方式中,源层级指第一任务的应用程序、OS和/或虚拟功能(VF)。相比之下,第一ID抽象化第一任务的源层级。
接下来,通过使用第二ID标识第一任务来执行对第一数据结构的访问,处理器完成第一操作(框925)。在一个实现方式中,第一数据结构是一组虚拟到物理地址转换页表。在另一实现方式中,第一数据结构是中断表。在框925之后,方法900结束。应注意,能够针对在处理器上同时执行的多个任务并行执行方法900。这些多项任务包括来自两个或更多个不同来宾OS的任务。
现在转到图10,示出了用于调度器生成任务的容器ID的方法1000的一个实现方式。处理器(例如,图2的GPU 205)的调度器接收要在处理器的一个或多个计算单元上调度的任务(框1005)。调度器检索与任务相关联的虚拟功能(VF)ID和虚拟存储器(VM)ID(框1010)。在另一实现方式中,调度器检索与任务相关联的操作系统(OS)ID。接下来,调度器根据与任务相关联的VFID和VMID创建任务的容器ID,其中容器ID唯一地标识任务(框1015)。在另一实现方式中,调度器根据与任务相关联的OS ID和VMID创建任务的唯一容器ID。在一个实现方式中,调度器通过生成VFID(或OS ID)与VMID的散列来创建容器ID。然后,调度器用唯一的容器ID来标记任务(框1020)。换句话说,任务现在与唯一的容器ID相关联,而不是与任务的VFID、OS ID或VMID相关联。这允许处理器支持来自不同来宾OS,或甚至来自同一OS的多个并行任务。
接下来,调度器响应于确定任务准备好而调度任务以在一个或多个计算单元上执行(框1025)。在任务执行期间,处理器通过将容器ID映射至VFID和/或VMID来访问一个或多个数据结构(框1030)。可替代地,在框1030中,处理器将容器ID映射至OS ID和/或VMID。根据实现方式,一个或多个数据结构包括页表、中断表和/或其它数据结构。在框1030之后,方法1000结束。应注意,在一个实现方式中,方法1000针对在处理器上同时执行的多个任务并行执行。这些多项任务包括来自两个或更多个不同来宾OS的任务。
在各种实现方式中,使用软件应用程序的程序指令来实现本文所述的方法和/或机制。例如,可由通用或专用处理器执行的程序指令是预期的。在各种实现方式中,此类程序指令由高级编程语言表示。在其它实现方式中,将程序指令从高级编程语言编译成二进制形式、中间形式或其它形式。可替代地,编写描述硬件的行为或设计的程序指令。此类程序指令由例如C的高级编程语言表示。可替代地,使用例如Verilog的硬件设计语言(HDL)。在各种实现方式中,程序指令存储在多种非暂时性计算机可读存储介质中的任一种上。在使用期间,计算系统可访问存储介质,以将程序指令提供到计算系统以用于程序执行。一般来讲,此类计算系统至少包括一个或多个存储器和被配置成执行程序指令的一个或多个处理器。
应当强调的是,上述实现方式仅是实现方式的非限制性实例。一旦充分地了解以上公开内容,众多变化和修改对于本领域的技术人员而言就将变得显而易见。以下权利要求意图被解释为涵盖所有此类变化和修改。

Claims (20)

1.一种系统,所述系统包括:
存储器,所述存储器存储多个任务的程序指令,其中所述多个任务包括第一任务;
处理器,所述处理器耦合至所述存储器,其中所述处理器被配置成:
同时执行所述第一任务和一个或多个其它任务;
响应于检测到对应于第一操作的所述第一任务的一个或多个指令:
接收唯一地标识所述第一任务的第一标识符(ID),其中所述第一ID不标识所述第一任务的源层级;
将所述第一ID映射至标识所述第一任务的所述源层级的第二ID;以及
通过使用所述第二ID标识所述第一任务来执行对第一数据结构的访问,完成所述第一操作。
2.根据权利要求1所述的系统,其中所述处理器访问映射表,以将所述第一ID映射至所述第二ID和第三ID。
3.根据权利要求2所述的系统,其中所述第二ID标识第一应用程序且所述第三ID标识第一操作系统(OS),并且其中所述第一应用程序和所述第一OS表示所述第一任务的所述源层级。
4.根据权利要求3所述的系统,其中所述处理器还被配置成:
与所述第一任务同时执行第二任务,其中所述第二任务是与所述第一任务不同的操作系统的一部分;
响应于检测到对应于第二操作的所述第二任务的一个或多个指令:
接收唯一地标识所述第二任务的第四ID,其中所述第四ID不标识所述第一任务的源层级;
将所述第四ID映射至第五ID和第六ID;以及
通过用所述第五ID和所述第六ID执行对所述第一数据结构的访问来完成所述第一操作,其中所述第五ID与所述第二ID相同,并且其中所述第六ID与所述第三ID不同。
5.根据权利要求1所述的系统,其中所述第一操作是存储器访问操作,并且其中所述第一数据结构是一组页表。
6.根据权利要求1所述的系统,其中所述处理器被配置成:
在所述处理器与所述处理器外部的每个组件之间的每个边界处维持映射表;以及
用所述第一ID访问所述映射表以检索所述第二ID。
7.根据权利要求1所述的系统,其中所述第一ID是容器ID,并且其中所述处理器被配置成防止具有第一容器ID的任务访问具有第二容器ID的任务的数据。
8.一种方法,所述方法包括:
同时执行第一任务和一个或多个其它任务;
响应于检测到对应于第一操作的所述第一任务的一个或多个指令:
接收唯一地标识所述第一任务的第一标识符(ID),其中所述第一ID不标识所述第一任务的源层级;
将所述第一ID映射至标识所述第一任务的源层级的第二ID;以及
通过使用所述第二ID标识所述第一任务来执行对第一数据结构的访问,完成所述第一操作。
9.根据权利要求8所述的方法,其还包括访问映射表以将所述第一ID映射至所述第二ID和第三ID。
10.根据利要求9所述的方法,其中所述第二ID标识第一应用程序且所述第三ID标识第一操作系统(OS),并且其中所述第一应用程序和所述第一OS表示所述第一任务的所述源层级。
11.根据权利要求10所述的方法,其还包括:
与所述第一任务同时执行第二任务,其中所述第二任务是与所述第一任务不同的操作系统的一部分;
响应于检测到对应于第二操作的所述第二任务的一个或多个指令:
接收唯一地标识所述第二任务的第四ID,其中所述第四ID不标识所述第一任务的源层级;
将所述第四ID映射至第五ID和第六ID;以及
通过用所述第五ID和所述第六ID执行对所述第一数据结构的访问来完成所述第一操作,其中所述第五ID与所述第二ID相同,并且其中所述第六ID与所述第三ID不同。
12.根据权利要求8所述的方法,其中所述第一操作是存储器访问操作,并且其中所述第一数据结构是一组页表。
13.根据权利要求8所述的方法,其中所述处理器还被配置成:
在所述处理器与所述处理器外部的每个组件之间的每个边界处维持映射表;以及
用所述第一ID访问所述映射表以检索所述第二ID。
14.根据权利要求8所述的方法,其中所述第一ID是容器ID,并且其中所述方法还包括防止具有第一容器ID的任务访问具有第二容器ID的任务的数据。
15.一种处理器,所述处理器包括:
调度器单元;以及
多个计算单元;
其中所述处理器被配置成:
调度第一任务和一个或多个其它任务以在所述多个计算单元上同时执行;
响应于检测到对应于第一操作的所述第一任务的一个或多个指令:
接收唯一地标识所述第一任务的第一标识符(ID),其中所述第一ID不标识所述第一任务的源层级;
将所述第一ID映射至标识所述第一任务的所述源层级的第二ID;以及
通过使用所述第二ID标识所述第一任务来执行对第一数据结构的访问,完成所述第一操作。
16.根据权利要求15所述的处理器,其中所述处理器访问映射表以将所述第一ID映射至所述第二ID和第三ID。
17.根据权利要求16所述的处理器,其中所述第二ID标识第一应用程序且所述第三ID标识第一操作系统(OS),并且其中所述第一应用程序和所述第一OS表示所述第一任务的所述源层级。
18.根据权利要求17所述的处理器,其中所述处理器还被配置成:
与所述第一任务同时执行第二任务,其中所述第二任务是与所述第一任务不同的操作系统的一部分;
响应于检测到对应于第二操作的所述第二任务的一个或多个指令:
接收唯一地标识所述第二任务的第四ID,其中所述第四ID不标识所述第一任务的源层级;
将所述第四ID映射至第五ID和第六ID;以及
通过用所述第五ID和所述第六ID执行对所述第一数据结构的访问来完成所述第一操作,其中所述第五ID与所述第二ID相同,并且其中所述第六ID与所述第三ID不同。
19.根据权利要求15所述的处理器,其中所述第一ID是容器ID,并且其中所述处理器还被配置成防止具有第一容器ID的任务访问具有第二容器ID的任务的数据。
20.根据权利要求15所述的处理器,其中所述处理器还被配置成:
在所述处理器与所述处理器外部的每个组件之间的每个边界处维持映射表;以及
用所述第一ID访问所述映射表以检索所述第二ID。
CN201980044142.9A 2018-07-31 2019-06-26 作为用于虚拟化的gpu任务容器的vmid Pending CN112368688A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/050,948 2018-07-31
US16/050,948 US10725822B2 (en) 2018-07-31 2018-07-31 VMID as a GPU task container for virtualization
PCT/US2019/039257 WO2020027951A1 (en) 2018-07-31 2019-06-26 Vmid as a gpu task container for virtualization

Publications (1)

Publication Number Publication Date
CN112368688A true CN112368688A (zh) 2021-02-12

Family

ID=67297335

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980044142.9A Pending CN112368688A (zh) 2018-07-31 2019-06-26 作为用于虚拟化的gpu任务容器的vmid

Country Status (6)

Country Link
US (3) US10725822B2 (zh)
EP (1) EP3830702A1 (zh)
JP (1) JP7123235B2 (zh)
KR (1) KR102540754B1 (zh)
CN (1) CN112368688A (zh)
WO (1) WO2020027951A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10460513B2 (en) 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US10725822B2 (en) 2018-07-31 2020-07-28 Advanced Micro Devices, Inc. VMID as a GPU task container for virtualization
US10942775B2 (en) * 2019-03-01 2021-03-09 International Business Machines Corporation Modified central serialization of requests in multiprocessor systems
US11853225B2 (en) 2019-10-11 2023-12-26 Texas Instruments Incorporated Software-hardware memory management modes

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140123145A1 (en) * 2012-10-25 2014-05-01 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US20150277993A1 (en) * 2012-12-14 2015-10-01 Huawei Technologies Co., Ltd. Task Processing Method and Virtual Machine
US20160092677A1 (en) * 2014-09-30 2016-03-31 Amazon Technologies, Inc. Allocation of shared system resources
US20170161204A1 (en) * 2015-12-02 2017-06-08 Imagination Technologies Limited GPU Virtualisation
US20180081561A1 (en) * 2016-09-16 2018-03-22 Hewlett Packard Enterprise Development Lp Acquisition of object names for portion index objects

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4331325B2 (ja) 1999-06-08 2009-09-16 パナソニック株式会社 メモリ管理装置
US9507638B2 (en) 2011-11-08 2016-11-29 Nvidia Corporation Compute work distribution reference counters
US9256623B2 (en) 2013-05-08 2016-02-09 Nvidia Corporation System, method, and computer program product for scheduling tasks associated with continuation thread blocks
EP2997478B1 (en) 2014-07-21 2019-03-13 VIA Alliance Semiconductor Co., Ltd. Efficient address translation caching in processor that supports large number of different address spaces
GB2563588B (en) * 2017-06-16 2019-06-26 Imagination Tech Ltd Scheduling tasks
US10725822B2 (en) 2018-07-31 2020-07-28 Advanced Micro Devices, Inc. VMID as a GPU task container for virtualization

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140123145A1 (en) * 2012-10-25 2014-05-01 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US20150277993A1 (en) * 2012-12-14 2015-10-01 Huawei Technologies Co., Ltd. Task Processing Method and Virtual Machine
US20160092677A1 (en) * 2014-09-30 2016-03-31 Amazon Technologies, Inc. Allocation of shared system resources
US20170161204A1 (en) * 2015-12-02 2017-06-08 Imagination Technologies Limited GPU Virtualisation
US20180081561A1 (en) * 2016-09-16 2018-03-22 Hewlett Packard Enterprise Development Lp Acquisition of object names for portion index objects

Also Published As

Publication number Publication date
JP2021533455A (ja) 2021-12-02
US11467870B2 (en) 2022-10-11
US20210011760A1 (en) 2021-01-14
KR102540754B1 (ko) 2023-06-08
US10725822B2 (en) 2020-07-28
US20200042348A1 (en) 2020-02-06
EP3830702A1 (en) 2021-06-09
WO2020027951A1 (en) 2020-02-06
US20230055695A1 (en) 2023-02-23
KR20210024636A (ko) 2021-03-05
JP7123235B2 (ja) 2022-08-22

Similar Documents

Publication Publication Date Title
KR101091224B1 (ko) 이종 처리 유닛을 위한 중앙집중형 디바이스 가상화 계층
US11467870B2 (en) VMID as a GPU task container for virtualization
US10037228B2 (en) Efficient memory virtualization in multi-threaded processing units
US9430391B2 (en) Managing coherent memory between an accelerated processing device and a central processing unit
US10169091B2 (en) Efficient memory virtualization in multi-threaded processing units
US10310973B2 (en) Efficient memory virtualization in multi-threaded processing units
US9135079B2 (en) Dynamically assigning a portion of physical computing resource to logical partitions based on characteristics of executing logical partitions
US9606808B2 (en) Method and system for resolving thread divergences
US11741019B2 (en) Memory pools in a memory model for a unified computing system
TWI488118B (zh) 處理系統中動態產生任務的傳訊、排序和執行
US9069609B2 (en) Scheduling and execution of compute tasks
US9626216B2 (en) Graphics processing unit sharing between many applications
US9715413B2 (en) Execution state analysis for assigning tasks to streaming multiprocessors
US9594599B1 (en) Method and system for distributing work batches to processing units based on a number of enabled streaming multiprocessors
US9442759B2 (en) Concurrent execution of independent streams in multi-channel time slice groups
TW201351276A (zh) 計算工作的排程和執行
US11132146B2 (en) Technique for efficiently allowing simultaneous access to resources in a computing system
TW201342229A (zh) 分散操作的批次重播

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination