CN116685947A - 虚拟功能资源的基于硬件的保护 - Google Patents
虚拟功能资源的基于硬件的保护 Download PDFInfo
- Publication number
- CN116685947A CN116685947A CN202180082888.6A CN202180082888A CN116685947A CN 116685947 A CN116685947 A CN 116685947A CN 202180082888 A CN202180082888 A CN 202180082888A CN 116685947 A CN116685947 A CN 116685947A
- Authority
- CN
- China
- Prior art keywords
- subset
- virtual function
- state
- resources
- access
- 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
- 238000012545 processing Methods 0.000 claims abstract description 57
- 239000000872 buffer Substances 0.000 claims abstract description 34
- 230000004044 response Effects 0.000 claims description 27
- 238000000034 method Methods 0.000 claims description 20
- 230000006870 function Effects 0.000 abstract description 83
- 230000003863 physical function Effects 0.000 description 28
- 230000007704 transition Effects 0.000 description 10
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- 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
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
-
- 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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
- 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/45591—Monitoring or debugging support
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
利用多个资源[220]和利用存储在多个资源中的信息执行虚拟功能[215]的物理功能电路[210]来实现虚拟功能。处理单元[105]执行主机驱动器[205],该主机驱动器基于处理单元的操作状态而选择性地使能虚拟功能对多个资源的访问。在一些情况下,确定虚拟功能的状态的状态机[300]和基于在处理单元上执行的虚拟功能的状态使能虚拟功能对多个资源的访问的主机驱动器。多个资源的子集用于实施帧缓冲器[222]、一个或多个上下文寄存器[225,226]、门铃[231]、以及一个或多个邮箱寄存器[235,236]。
Description
背景技术
诸如图形处理单元(GPU)之类的处理单元支持虚拟化,该虚拟化允许多个虚拟机使用处理单元的硬件资源。每个虚拟机作为使用处理单元的硬件资源的单独进程来执行。一些虚拟机实施允许虚拟机模拟实际机器的操作系统。其它虚拟机被设计为在独立于平台的环境中执行代码。管理程序创建并运行虚拟机,该虚拟机也被称为客户机或客户。在处理单元上实施的虚拟环境为在物理机器上实施的其他虚拟组件提供虚拟功能。在处理单元中实施的单个物理功能用于支持一个或多个虚拟功能。物理功能在时间分片的基础上将虚拟功能分配给物理机器上的不同虚拟机。例如,物理功能在第一时间间隔中将第一虚拟功能分配给第一虚拟机,并且在随后的第二时间间隔中将第二虚拟功能分配给第二虚拟机。在一些情况下,处理单元中的物理功能支持多达31个虚拟功能,但是在其他情况下支持更多或更少的虚拟功能。单根输入/输出虚拟化(SR IOV)规范允许多个虚拟机(VM)共享对单个总线(诸如外围组件快速互连(PCIe)总线)的处理器接口。组件通过在该总线上传输请求来访问虚拟功能。
附图说明
通过参考附图,本公开可以被更好地理解,并且其许多特征和优点对于本领域技术人员是显而易见的。在不同附图中使用相同的附图标记表示类似或相同的项目。
图1是根据一些实施方案的包括实施虚拟化环境中物理功能的共享的图形处理单元(GPU)的处理系统的框图。
图2是根据一些实施方案的提供虚拟功能(VF)对资源的选择性访问的处理系统的框图。
图3是根据一些实施方案的用于确定VF的状态并选择性地使能VF进行的资源访问的状态机的框图。
具体实施方式
利用物理功能(PF)和一个或多个虚拟功能(VF)根据SR-IOV来划分GPU的硬件资源。每个虚拟功能与单个物理功能相关联,从而利用相关联物理功能的物理资源和电路来实施虚拟功能。在原生(主机OS)环境中,由原生用户模式使用物理功能,并且内核模式驱动器和所有虚拟功能被禁用。所有GPU资源经由可信访问被映射到物理功能。在虚拟环境中,物理功能被管理程序(主机VM)使用,并且GPU按照PCIe SR-IOV标准暴露一定数量的虚拟功能,诸如每个客户VM一个虚拟功能。每个虚拟功能被管理程序指派给客户VM。GPU资源的子集映射到虚拟功能,并且这些子集被划分以包括帧缓冲器、上下文寄存器、门铃孔、以及用于VF–PF同步的一个或多个邮箱寄存器。在VF的初始化期间,主机驱动器使能对分配给VF的帧缓冲器、上下文寄存器和门铃的访问。然而,在一些情况下,主机驱动器代表拥有这些资源的VF同时将信息写到帧缓冲器、上下文寄存器或门铃。因此,资源的内容可能变得被破坏,或者VF和主机驱动器对资源的连续的不协调写入可产生竞争条件。在VF的复位期间也可产生破坏或竞争条件。
图1-图3公开了用于通过根据处理单元的操作状态选择性地使能虚拟功能(VF)对资源子集的访问来减少或避免处理单元中由主机驱动器和VF对分配给VF的资源的并发访问所导致的破坏和竞争条件的技术。在一些实施方案中,资源的子集包括帧缓冲器、一个或多个上下文寄存器、门铃、以及一个或多个邮箱寄存器。当处理单元处于不同状态时,主机驱动器使能对资源的不同子集的VF访问。这些状态包括第一(默认)状态,其禁用对帧缓冲器、上下文寄存器和门铃的VF访问,而允许对邮箱寄存器的VF访问。在第二状态中,主机驱动器使能对帧缓冲器、上下文寄存器、门铃和邮箱寄存器的VF访问。第二状态用于VF的初始化、重新初始化和复位。在第三状态中,主机驱动器基于与资源的子集相关联的风险、安全性或威胁级别来选择性地使能对这些子集的VF访问。在一些实施方案中,在第三设置中使能对帧缓冲器和门铃的VF访问,但由于与允许对上下文寄存器的访问相关联的相对高风险而禁用对上下文寄存器的VF访问。在一些实施方案中,处理单元响应于驱动器的故障或检测到无效或恶意驱动器而转变到第一状态。主机驱动器使能对邮箱寄存器、帧缓冲器和门铃的访问,并禁用VF对其它寄存器的访问,直到VF转变到第一(默认)状态,例如响应于驱动器的复位或新驱动器的安装/初始化。
为了易于说明,在GPU作为处理单元的示例上下文中描述本公开的系统和技术。然而,这些系统和技术不限于这个示例,因此对GPU的标引同样适用于多种并行处理器(例如,向量处理器、图形处理单元(GPU)、通用GPU(GPGPU)、非标量处理器、高度并行处理器、人工智能(AI)处理器、推理引擎、机器学习处理器、其他多线程处理单元等)中的任一种处理器。
图1是根据一些实施方案的包括实施虚拟化环境中物理功能的共享的图形处理单元(GPU)105的处理系统100的框图。GPU 105包括并发或并行地独立执行指令的一个或多个GPU核心106以及支持3D图形或视频渲染的一个或多个着色器系统107。例如,着色器系统107可用于通过提高每秒图形渲染帧分数或拼补被渲染图像的图形引擎未准确地渲染场景的区域来改进视觉呈现。存储器控制器108提供对帧缓冲器109的接口,该帧缓冲器在渲染过程期间存储帧。帧缓冲器109的一些实施方案被实施成动态随机存取存储器(DRAM)。然而,帧缓冲器109也可使用其他类型的存储器来实施,包括静态随机存取存储器(SRAM)、非易失性RAM等。GPU 105的一些实施方案包括其他电路,诸如编码器格式转换器、多格式视频编解码器、提供对显示器或屏幕的接口的显示输出电路、以及音频协处理器、用于编码/解码音频信号的音频编解码器等。
处理系统100还包括用于执行指令的中央处理单元(CPU)115。CPU 115的一些实施方案包括能并发或并行地独立执行指令的多个处理器核心120、121、122(本文统称为“CPU核心120至122”)。在一些实施方案中,GPU 105作为经由总线125(诸如PCI-e总线)和北桥130连接到CPU 115的离散GPU(dGPU)操作。CPU 115还包括存储器控制器135,其提供CPU115与存储器140之间的接口。存储器140的一些实施方案被实施成DRAM、SRAM、非易失性RAM等。CPU 115执行指令(诸如存储在存储器140中的程序代码145),并且CPU 115将信息150(诸如所执行指令的结果)存储在存储器140中。CPU 115还能够通过向GPU 105发出绘制调用来发起图形处理。绘制调用是由CPU 115生成并且传输到GPU 105以指示GPU 105渲染帧中的对象(或对象的一部分)的命令。
南桥155连接到北桥130。南桥155为与处理系统100相关联的外围单元提供一个或多个接口160。接口160的一些实施方案包括对外围单元的接口,诸如通用串行总线(USB)设备、通用I/O(GPIO)、用于硬盘驱动器的SATA、串行外围总线接口如SPI、I2C等。
GPU 105包括具有地址转换控制器的GPU虚拟存储器管理单元(GPU MMU ATC)165,并且CPU 115包括CPU MMU ATC 170。GPU MMU ATC 165和CPU MMU ATC 170通过使用多级转换逻辑和由操作系统内核模式驱动器(KMD)维持的一组转换表来提供虚拟存储器地址(VA)到物理存储器地址(PA)的转换。因此,在主OS上或在客户OS中执行的应用进程各自具有其自己的虚拟地址空间用于CPU操作和GPU渲染。GPU MMU ATC 165和CPU MMU ATC 170因此支持GPU和CPU核心的虚拟化。GPU 105具有其自己的存储器管理单元(MMU),其将每进程GPU虚拟地址转换成物理地址。每一进程具有使用不同页表的单独的CPU和GPU虚拟地址空间。视频存储器管理器管理所有进程的GPU虚拟地址空间并且监督分配、生长、更新、确保存储器页面的驻留以及释放页表。
GPU 105还包括一个或多个物理功能(PF)175。在一些实施方案中,物理功能175是硬件加速功能,诸如多媒体解码、多媒体编码、视频解码、视频编码、音频解码和音频编码。在存储器140中实施的虚拟环境支持暴露给客户VM的物理功能和一组虚拟功能(VF)。GPU105还包括存储与由内核模式单元执行的处理相关联的信息的资源集合(为了清楚起见,在图1中未展示)。该资源集合的子集被分配以存储与虚拟功能相关联的信息。在一些实施方案中,GPU资源的子集映射到虚拟功能,并且这些子集被划分以包括帧缓冲器、上下文寄存器、门铃孔、以及用于VF–PF同步的一个或多个邮箱寄存器。如本文详细讨论的,物理功能175基于存储在这些子集中对应一个子集中的信息,代表客户VM中的一个的虚拟功能中的一个执行。
GPU 105的一些实施方案执行基于GPU 105的操作状态选择性地使能VF对资源的访问的主机驱动器。例如,对于在GPU 105上执行的VF的所有状态,主机驱动器使能对邮箱寄存器的访问。然而,主机驱动器在VF的第一(默认)状态期间禁用对帧缓冲器、上下文寄存器和门铃的访问。主机驱动器在VF的第二状态期间使能对帧缓冲器、上下文寄存器和门铃的访问,以允许VF执行与初始化、重新初始化或复位VF相关的操作。VF在第三状态中正常执行,因此主机驱动器基于与资源的子集相关联的风险级别、安全性级别或威胁级别而选择性地使能对这些子集的访问。主机驱动器的一些实施方案使能对帧缓冲器和门铃的访问,但由于在运行时将上下文寄存器暴露给VF的相对高风险/威胁(例如,相对于与帧缓冲器、门铃和邮箱寄存器相关联的较低风险/威胁)而禁用对上下文寄存器的访问。在一些实施方案中,GPU 105实施管理或修改GPU 105中VF的状态的状态机(为了清楚起见,在图1中未展示)。
图2是根据一些实施方案的提供VF对资源的选择性访问的处理系统200的框图。处理系统200用于实现图1所示的处理系统100的一些实施方案。在所例示的实施方案中,处理系统200实施主机驱动器205、物理功能电路210、以及在物理功能电路210上执行的一个或多个虚拟功能(VF)215,如本文所论述。
处理系统200实施被分配给在物理功能电路210上执行的VF 215的资源的集合220。在所例示的实施方案中,集合220被划分成分配给不同VF 215的资源子集。例如,为帧缓冲器保留的资源子集被划分成分配给VF 215的帧缓冲器子集221和分配给其它虚拟功能的一个或多个其它帧缓冲器子集222。为上下文寄存器保留的资源子集被划分成分配给VF215的上下文子集225和分配给其它虚拟功能的一个或多个其它上下文子集226。为门铃保留的资源子集被划分成分配给VF 215的门铃231和分配给其它虚拟功能的一个或多个其它门铃232。为邮箱寄存器保留的资源子集被划分成分配给VF 215的邮箱子集235和分配给其它虚拟功能的一个或多个其它邮箱子集236。
在VF 215(或其它虚拟功能)的初始化期间,主机驱动器205向VF 215(或其它虚拟功能)提供信令240,该信令选择性地使VF 215能够访问分配给VF 215的帧缓冲器221、上下文寄存器225、门铃231和邮箱寄存器235。然而,在一些情况下,主机驱动器205代表拥有这些寄存器的VF 215同时将信息写到帧缓冲器221、上下文寄存器225或门铃231中的一者或多者。因此,资源的内容可能变得被破坏,或者VF 215和主机驱动器205对资源的连续的不协调写入可产生竞争条件。在VF 215和对应资源221、225、231的复位期间也可产生破坏或竞争条件。主机驱动器205因此使用信令240来基于对应VF 215的操作状态而选择性地使能资源集合220的子集。
图3是根据一些实施方案的用于确定VF的状态并选择性地使能VF进行的资源访问的状态机300的框图。在图1所示的处理系统100和图2所示的处理系统200的一些实施方案中实施状态机300。在所例示的实施方案中,状态机300提供一组状态并且限定VF的状态之间的转变。这组状态包括默认状态305,其在VF不满足其它状态的条件时应用于VF。这组状态还包括用于VF的初始化、重新初始化或复位的“全访问”状态310和在VF的运行时间期间使用的“部分访问”状态315。
在操作中,如果对于VF没有其它适当的状态,则状态机300将VF置于默认状态305。例如,当处理单元停止或暂停VF的执行并改变为执行另一VF时,状态机300响应于世界切换而将VF置于默认状态305。在默认状态305中,主机驱动器禁用对帧缓冲器、上下文寄存器和门铃的访问。主机驱动器还允许在默认状态305中访问邮箱寄存器以支持VF与实施该VF的PF之间的通信。
状态机300在VF的初始化、重新初始化或复位期间将VF的状态修改为“全访问”状态310。例如,状态机300响应于处理单元初始化VF而将VF置于“全访问”状态310。当VF处于“全访问”状态310时,主机驱动器使能对帧缓冲器、上下文寄存器、门铃和邮箱寄存器的访问。因此,必要时,VF可通过将信息写到帧缓冲器、上下文寄存器、门铃或邮箱寄存器来执行与启动或复位VF有关的配置操作。将“全访问”状态310限制到用于VF的初始化、重新初始化或复位的时间间隔还降低暴露寄存器的内容的风险。
然而,如果状态机300例如响应于初始化VF和对应驱动器而检测到与VF相关联的驱动器的故障或无效、不支持或恶意的驱动器,则状态机300将VF从“全访问”状态310转变到默认状态305。在默认状态305中,主机驱动器禁用对帧缓冲器、上下文寄存器和门铃的访问,以防止这些资源的内容的破坏或恶意修改。状态机300保持在默认状态305中,直到当前驱动器以有效驱动器重新初始化或新驱动器被加载,在这种情况下,状态机300转变回“全访问”状态310以继续初始化、重新初始化或复位VF。
状态机300响应于完成VF的初始化、重新初始化或复位而从“全访问”状态310转变到“部分访问”状态315。在VF的运行时间期间使用“部分访问”状态315,并且基于与资源子集相关联的风险级别、安全性级别或威胁级别来确定对这些子集的访问。状态机300的一些实施方案使能对帧缓冲器和门铃的访问在“部分访问”状态315中被使能,但是由于与允许对上下文寄存器的访问相关联的相对高风险而禁用对上下文寄存器的访问。然而,在其它实施方案中,寄存器的其它组合被使能或禁用。状态机300响应于驱动器卸载事件而将VF的状态转变回全访问状态310,并且响应于使用结束VF通知或响应于检测到VF使用结束而转变到默认状态305。
然而,如果状态机300接收到VF使用结束的通知,则状态机300将VF从“全访问”状态310转换到默认状态305。在默认状态305中,主机驱动器禁用对帧缓冲器、上下文寄存器和门铃的访问,以防止这些资源的内容的破坏或恶意修改。状态机300保持在默认状态305中,直到新驱动器被加载,在这种情况下,状态机300转变回“全访问”状态310以继续初始化、重新初始化或复位VF。
如本文所公开的,在一些实施方案中,一种设备包括:多个资源,所述多个资源被配置为存储信息;物理功能电路,所述物理功能电路被配置为利用存储在所述多个资源中的信息来执行虚拟功能;以及处理单元,所述处理单元被配置为执行主机驱动器,所述主机驱动器基于所述处理单元的操作状态而选择性地使能所述虚拟功能对所述多个资源的访问。在一个方面中,所述处理单元被配置为在所述处理单元处于不同操作状态的同时,选择性地使能所述虚拟功能对所述多个资源的子集的不同组合的访问。在另一方面中,所述多个资源的所述子集包括用于实施帧缓冲器的第一子集、用于实施至少一个上下文寄存器的第二子集、用于实施门铃的第三子集、以及用于实施至少一个邮箱寄存器的第四子集。在又一方面中,所述处理单元的所述操作状态包括以下中的一者:作为所述虚拟功能的默认状态的第一状态、用于所述虚拟功能的初始化、重新初始化和复位的所述虚拟功能的第二状态、以及所述虚拟功能正在所述物理功能电路上执行的所述虚拟功能的第三状态。
在一个方面中,所述主机驱动器被配置为响应于所述虚拟功能处于所述第一状态中而禁用所述虚拟功能对所述第一子集、所述第二子集和所述第三子集的访问并且使能所述虚拟功能对所述第四子集的访问。在另一方面中,所述主机驱动器被配置为响应于所述虚拟功能处于所述第二状态中而使能所述虚拟功能对所述第一子集、所述第二子集、所述第三子集、和所述第四子集的访问。在又一方面中,所述主机驱动器被配置为响应于所述虚拟功能处于所述第三状态中,基于与所述资源的所述子集相关联的风险级别、安全性级别和威胁级别中的至少一者来使能所述虚拟功能对所述子集的访问。在另一方面中,所述主机驱动器被配置为响应于所述虚拟功能处于所述第三状态中而使能所述虚拟功能对所述第一子集、所述第三子集和所述第四子集的访问并且禁用所述虚拟功能对所述第二子集的访问。
在一些实施方案中,一种方法包括:在物理功能电路上,利用存储在被配置为存储信息的多个资源中的信息来执行虚拟功能;以及在处理单元上执行的主机驱动器处,基于所述处理单元的操作状态来选择性地使能所述虚拟功能对所述多个资源的访问。在另一方面中,选择性地使能对所述多个资源的访问包括:在所述处理单元处于不同操作状态的同时,选择性地使能所述虚拟功能对所述多个资源的子集的不同组合的访问。在再一方面中,所述多个资源的所述子集包括用于实施帧缓冲器的第一子集、用于实施至少一个上下文寄存器的第二子集、用于实施门铃的第三子集、以及用于实施至少一个邮箱寄存器的第四子集。
在一个方面中,所述处理单元的所述操作状态包括以下中的一者:作为所述虚拟功能的默认状态的第一状态、用于所述虚拟功能的初始化、重新初始化和复位的所述虚拟功能的第二状态、以及所述虚拟功能正在所述物理功能电路上执行的所述虚拟功能的第三状态。在另一方面中,选择性地使能对所述多个资源的访问包括响应于所述虚拟功能处于所述第一状态中而禁用所述虚拟功能对所述第一子集、所述第二子集和所述第三子集的访问,并且使能所述虚拟功能对所述第四子集的访问。在再一方面中,选择性地使能对所述多个资源的访问包括响应于所述虚拟功能处于所述第二状态中而使能所述虚拟功能对所述第一子集、所述第二子集、所述第三子集、和所述第四子集的访问。在又一方面中,选择性地使能对所述多个资源的访问包括响应于所述虚拟功能处于所述第三状态中,基于与所述资源的所述子集相关联的风险级别、安全性级别和威胁级别中的至少一者来使能所述虚拟功能对所述子集的访问。在另一方面中,选择性地使能对所述多个资源的访问包括响应于所述虚拟功能处于所述第三状态中而使能所述虚拟功能对所述第一子集、所述第三子集和所述第四子集的访问,并且禁用所述虚拟功能对所述第二子集的访问。
在一些实施方案中,一种设备包括:物理功能电路,所述物理功能电路被配置为利用存储在多个资源中的信息来执行虚拟功能;状态机,所述状态机被配置为确定所述虚拟功能的状态;以及处理单元,所述处理单元被配置为执行主机驱动器,所述主机驱动器基于所述虚拟功能的状态来选择性地使能所述虚拟功能对所述多个资源的访问。在一个方面中,所述主机驱动器被配置为响应于所述状态机改变所述虚拟功能的所述状态而选择性地修改所述虚拟功能对所述多个资源的子集的访问。在另一方面中,所述多个资源的所述子集包括用于实施帧缓冲器的第一子集、用于实施至少一个上下文寄存器的第二子集、用于实施门铃的第三子集、以及用于实施至少一个邮箱寄存器的第四子集。在又一方面中,所述虚拟功能的所述状态包括以下中的一者:作为所述虚拟功能的默认状态的第一状态、用于所述虚拟功能的初始化、重新初始化和复位的所述虚拟功能的第二状态、以及所述虚拟功能正在所述物理功能电路上执行的所述虚拟功能的第三状态。
计算机可读存储介质可以包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何非暂态存储介质或非暂态存储介质的组合。此类存储介质可以包括但不限于光学介质(例如,光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓冲存储器)、非易失性存储器(例如,只读存储器(ROM)或闪存存储器)、或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可以嵌入计算系统(例如,系统RAM或ROM)中,固定地附接到计算系统(例如,磁性硬盘驱动器),可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的闪存存储器),或者经由有线或无线网络(例如,网络可访问存储装置(NAS))耦接到计算机系统。
在一些实施方案中,上述技术的某些方面可以由执行软件的处理系统的一个或多个处理器实现。软件包括可执行指令的一个或多个集合,该可执行指令存储在或以其他方式有形地体现在非暂态计算机可读存储介质上。软件可包括指令和某些数据,这些指令和数据在由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面。非暂态计算机可读存储介质可包括例如磁盘或光盘存储设备、固态存储设备诸如闪存存储器、高速缓冲存储器、随机存取存储器(RAM)或其他一个或多个非易失性存储器设备等。存储在非暂态计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码、或者被一个或多个处理器解释或以其他方式执行的其他指令格式。
应当注意,并非以上在一般描述中描述的所有活动或元件都是必需的,特定活动或设备的一部分可能不是必需的,并且可以执行一个或多个另外的活动,或者除了所描述的那些之外还包括元件。更进一步地,列出活动的顺序不一定是执行它们的顺序。另外,已经参考具体实施方案描述了这些概念。然而,本领域普通技术人员理解,在不脱离如以下权利要求中阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图被认为是说明性的而非限制性的,并且所有此类修改旨在被包括在本公开的范围内。
上文已经关于具体实施方案描述了益处、其他优点和问题的解决方案。然而,益处、优点、问题的解决方案以及可以导致任何益处、优点或解决方案出现或变得更显著的任何特征不应被解释为任何或所有权利要求的关键的、必需的或基本的特征。此外,上文公开的特定实施方案仅是说明性的,因为所公开的主题可以以受益于本文中的教导内容的本领域的技术人员显而易见的不同但等效的方式来修改和实践。除了以下权利要求书中所描述的之外,不旨在对本文所示的构造或设计的细节进行限制。因此,显而易见的是,可以改变或修改上文公开的特定实施方案,并且所有此类变化被认为是在所公开的主题的范围内。因此,本文寻求的保护如以下权利要求中所阐述。
Claims (20)
1.一种设备,包括:
多个资源,所述多个资源被配置为存储信息;
物理功能电路,所述物理功能电路被配置为利用存储在所述多个资源中的信息来执行虚拟功能;以及
处理单元,所述处理单元被配置为执行主机驱动器,所述主机驱动器基于所述处理单元的操作状态而选择性地使能所述虚拟功能对所述多个资源的访问。
2.根据权利要求1所述的设备,其中所述处理单元被配置为在所述处理单元处于不同操作状态的同时,选择性地使能所述虚拟功能对所述多个资源的子集的不同组合的访问。
3.根据权利要求2所述的设备,其中所述多个资源的所述子集包括用于实施帧缓冲器的第一子集、用于实施至少一个上下文寄存器的第二子集、用于实施门铃的第三子集、以及用于实施至少一个邮箱寄存器的第四子集。
4.根据权利要求3所述的设备,其中所述处理单元的所述操作状态包括以下中的一者:作为所述虚拟功能的默认状态的第一状态、用于所述虚拟功能的初始化、重新初始化和复位的所述虚拟功能的第二状态、以及所述虚拟功能正在所述物理功能电路上执行的所述虚拟功能的第三状态。
5.根据权利要求4所述的设备,其中所述主机驱动器被配置为响应于所述虚拟功能处于所述第一状态中而禁用所述虚拟功能对所述第一子集、所述第二子集和所述第三子集的访问并且使能所述虚拟功能对所述第四子集的访问。
6.根据权利要求4或权利要求5所述的设备,其中所述主机驱动器被配置为响应于所述虚拟功能处于所述第二状态中而使能所述虚拟功能对所述第一子集、所述第二子集、所述第三子集、和所述第四子集的访问。
7.根据权利要求4、权利要求5或权利要求6所述的设备,其中所述主机驱动器被配置为响应于所述虚拟功能处于所述第三状态中,基于与所述资源的所述子集相关联的风险级别、安全性级别和威胁级别中的至少一者而使能所述虚拟功能对所述子集的访问。
8.根据权利要求7所述的设备,其中所述主机驱动器被配置为响应于所述虚拟功能处于所述第三状态中而使能所述虚拟功能对所述第一子集、所述第三子集和所述第四子集的访问并且禁用所述虚拟功能对所述第二子集的访问。
9.一种方法,包括:
在物理功能电路上,利用存储在被配置为存储信息的多个资源中的信息来执行虚拟功能;以及
在处理单元上执行的主机驱动器处,基于所述处理单元的操作状态而选择性地使能所述虚拟功能对所述多个资源的访问。
10.根据权利要求9所述的方法,其中选择性地使能对所述多个资源的访问包括:在所述处理单元处于不同操作状态的同时,选择性地使能所述虚拟功能对所述多个资源的子集的不同组合的访问。
11.根据权利要求10所述的方法,其中所述多个资源的所述子集包括用于实施帧缓冲器的第一子集、用于实施至少一个上下文寄存器的第二子集、用于实施门铃的第三子集、以及用于实施至少一个邮箱寄存器的第四子集。
12.根据权利要求11所述的方法,其中所述处理单元的所述操作状态包括以下中的一者:作为所述虚拟功能的默认状态的第一状态、用于所述虚拟功能的初始化、重新初始化和复位的所述虚拟功能的第二状态、以及所述虚拟功能正在所述物理功能电路上执行的所述虚拟功能的第三状态。
13.根据权利要求12所述的方法,其中选择性地使能对所述多个资源的访问包括响应于所述虚拟功能处于所述第一状态中而禁用所述虚拟功能对所述第一子集、所述第二子集和所述第三子集的访问,并且使能所述虚拟功能对所述第四子集的访问。
14.根据权利要求12或权利要求13所述的方法,其中选择性地使能对所述多个资源的访问包括响应于所述虚拟功能处于所述第二状态中而使能所述虚拟功能对所述第一子集、所述第二子集、所述第三子集、和所述第四子集的访问。
15.根据权利要求12、权利要求13或权利要求14所述的方法,其中选择性地使能对所述多个资源的访问包括响应于所述虚拟功能处于所述第三状态中,基于与所述资源的所述子集相关联的风险级别、安全性级别和威胁级别中的至少一者而使能所述虚拟功能对所述子集的访问。
16.根据权利要求15所述的方法,其中选择性地使能对所述多个资源的访问包括响应于所述虚拟功能处于所述第三状态中而使能所述虚拟功能对所述第一子集、所述第三子集和所述第四子集的访问,并且禁用所述虚拟功能对所述第二子集的访问。
17.一种设备,包括:
物理功能电路,所述物理功能电路被配置为利用存储在多个资源中的信息来执行虚拟功能;
状态机,所述状态机被配置为确定所述虚拟功能的状态;以及
处理单元,所述处理单元被配置为执行主机驱动器,所述主机驱动器基于所述虚拟功能的所述状态而选择性地使能所述虚拟功能对所述多个资源的访问。
18.根据权利要求17所述的设备,其中所述主机驱动器被配置为响应于所述状态机改变所述虚拟功能的所述状态而选择性地修改所述虚拟功能对所述多个资源的子集的访问。
19.根据权利要求18所述的设备,其中所述多个资源的所述子集包括用于实施帧缓冲器的第一子集、用于实施至少一个上下文寄存器的第二子集、用于实施门铃的第三子集、以及用于实施至少一个邮箱寄存器的第四子集。
20.根据任一前述权利要求所述的设备,其中所述虚拟功能的所述状态包括以下中的一者:作为所述虚拟功能的默认状态的第一状态、用于所述虚拟功能的初始化、重新初始化和复位的所述虚拟功能的第二状态、以及所述虚拟功能正在所述物理功能电路上执行的所述虚拟功能的第三状态。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/117,530 US20220188135A1 (en) | 2020-12-10 | 2020-12-10 | Hardware-based protection of virtual function resources |
US17/117,530 | 2020-12-10 | ||
PCT/IB2021/061430 WO2022123450A1 (en) | 2020-12-10 | 2021-12-07 | Hardware-based protection of virtual function resources |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116685947A true CN116685947A (zh) | 2023-09-01 |
Family
ID=81942516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180082888.6A Pending CN116685947A (zh) | 2020-12-10 | 2021-12-07 | 虚拟功能资源的基于硬件的保护 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220188135A1 (zh) |
EP (1) | EP4260177A1 (zh) |
JP (1) | JP2023553070A (zh) |
KR (1) | KR20230121072A (zh) |
CN (1) | CN116685947A (zh) |
WO (1) | WO2022123450A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220383445A1 (en) * | 2021-05-25 | 2022-12-01 | Vizzio Technologies Pte Ltd | Highly parallel virtualized graphics processors |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070052715A1 (en) * | 2005-09-07 | 2007-03-08 | Konstantin Levit-Gurevich | Device, system and method of graphics processing |
US9363193B2 (en) * | 2013-11-19 | 2016-06-07 | Cavium, Inc. | Virtualized network interface for TCP reassembly buffer allocation |
US10331600B1 (en) * | 2016-03-31 | 2019-06-25 | EMC IP Holding Company LLC | Virtual I/O queuing |
US10176122B2 (en) * | 2016-10-19 | 2019-01-08 | Advanced Micro Devices, Inc. | Direct memory access authorization in a processing system |
CN107977251B (zh) * | 2016-10-21 | 2023-10-27 | 超威半导体(上海)有限公司 | 对在虚拟化系统中的共享寄存器的排他访问 |
US10509666B2 (en) * | 2017-06-29 | 2019-12-17 | Ati Technologies Ulc | Register partition and protection for virtualized processing device |
US10923082B2 (en) * | 2018-10-31 | 2021-02-16 | Ati Technologies Ulc | Maintaining visibility of virtual function in bus-alive, core-off state of graphics processing unit |
CN111506385A (zh) * | 2019-01-31 | 2020-08-07 | Ati科技无限责任公司 | 引擎抢占和复原 |
CN112395071A (zh) * | 2019-08-12 | 2021-02-23 | 北京百度网讯科技有限公司 | 用于资源管理的方法、装置、电子设备和存储介质 |
US11586567B2 (en) * | 2020-01-07 | 2023-02-21 | Vmware, Inc. | Techniques for virtualizing PF-VF mailbox communication in SR-IOV devices |
US11182150B2 (en) * | 2020-01-14 | 2021-11-23 | Pensando Systems Inc. | Zero packet loss upgrade of an IO device |
US20220029929A1 (en) * | 2020-12-08 | 2022-01-27 | Intel Corporation | Technologies that provide policy enforcement for resource access |
-
2020
- 2020-12-10 US US17/117,530 patent/US20220188135A1/en active Pending
-
2021
- 2021-12-07 JP JP2023534605A patent/JP2023553070A/ja active Pending
- 2021-12-07 KR KR1020237021734A patent/KR20230121072A/ko unknown
- 2021-12-07 CN CN202180082888.6A patent/CN116685947A/zh active Pending
- 2021-12-07 EP EP21902835.4A patent/EP4260177A1/en active Pending
- 2021-12-07 WO PCT/IB2021/061430 patent/WO2022123450A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022123450A1 (en) | 2022-06-16 |
JP2023553070A (ja) | 2023-12-20 |
KR20230121072A (ko) | 2023-08-17 |
EP4260177A1 (en) | 2023-10-18 |
US20220188135A1 (en) | 2022-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11822945B2 (en) | Security of dynamic I/O virtualization system having a bidirectional extended hybrid address space (EHAS) for allowing host kernel to access guest memory | |
JP5608243B2 (ja) | 仮想化環境においてi/o処理を行う方法および装置 | |
JP5170782B2 (ja) | ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ | |
US9898430B2 (en) | Tracking virtual machine memory modified by a single root I/O virtualization (SR-IOV) device | |
US10310879B2 (en) | Paravirtualized virtual GPU | |
US9176765B2 (en) | Virtual machine system and a method for sharing a graphics card amongst virtual machines | |
KR20120000089A (ko) | 비가상화 시스템에서의 메모리 확장을 지원하기 위한 상호 운영 시스템 메모리 핫스왑 | |
US11194735B2 (en) | Technologies for flexible virtual function queue assignment | |
KR20130111593A (ko) | 가상화를 통한 스마트 장치의 직접적인 공유 | |
US11003588B2 (en) | Networked input/output memory management unit | |
EP3918474A1 (en) | Engine pre-emption and restoration | |
US20170277632A1 (en) | Virtual computer system control method and virtual computer system | |
CN116685947A (zh) | 虚拟功能资源的基于硬件的保护 | |
US11256530B2 (en) | Targeted page migration for guest virtual machine | |
US20200201691A1 (en) | Enhanced message control banks | |
US10923082B2 (en) | Maintaining visibility of virtual function in bus-alive, core-off state of graphics processing unit | |
US10140148B1 (en) | Copy based IOMMU emulation for out-of-process emulated devices | |
US20220197679A1 (en) | Modifying device status in single virtual function mode |
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 |