CN114662088A - 用于提供对内核和用户空间存储器区域的访问的技术 - Google Patents
用于提供对内核和用户空间存储器区域的访问的技术 Download PDFInfo
- Publication number
- CN114662088A CN114662088A CN202111392438.5A CN202111392438A CN114662088A CN 114662088 A CN114662088 A CN 114662088A CN 202111392438 A CN202111392438 A CN 202111392438A CN 114662088 A CN114662088 A CN 114662088A
- Authority
- CN
- China
- Prior art keywords
- memory
- process identifier
- address
- guest
- execution environment
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文描述的示例涉及一种设备,该设备包括:电路,该电路用于通过使用多个进程标识符来允许或拒绝设备到经虚拟化的执行环境的内核空间存储器的写入或从经虚拟化的执行环境的内核空间存储器的读取。在一些示例中,设备以符合以下各项中的一个或多个的方式与经虚拟化的执行环境通信地耦合:单根IO虚拟化(SR‑IOV)、可扩展I/O虚拟化(SIOV)或快速PCI(PCIe)。在一些示例中,为了通过使用多个进程标识符来控制由设备到经虚拟化的执行环境的内核空间存储器的写入或读取操作,电路用于基于与经虚拟化的执行环境相关联的第一进程标识符和第二进程标识符来执行地址转换。
Description
背景技术
外围组件互连特别兴趣组(PCI-SIG)单根IO虚拟化(SR-IOV)和共享规范v1.0(2007)以及先前版本和之后的版本描述了在单根端口下使用单个快速PCI(PCIe)物理设备以向管理程序或客体操作系统表现为多个单独的物理设备。单根I/O虚拟化(SR-IOV)是一种规范,其允许在单根端口下的单个PCIe物理设备向管理程序或客体操作系统表现为多个单独的物理设备。SR-IOV使用物理功能(PF)和虚拟功能(VF)来管理针对SR-IOV设备的全局功能。PF可以是能够配置和管理SR-IOV功能的PCIe功能。例如,PF可以配置或控制PCIe设备,并且PF具有将数据移入和移出PCIe设备的能力。例如,对于网络适配器,PF是支持SR-IOV的网络适配器的PCIe功能。PF包括配置和管理网络适配器的SR-IOV功能的能力,例如,启用虚拟化和管理PCIe VF。VF与网络适配器上的PCIe PF相关联,并且VF表示网络适配器的经虚拟化的实例。VF可以具有其自己的PCI配置空间,但可以与PF和其他PF或其他VF共享网络适配器上的一个或多个物理资源,例如,外部网络端口。
在一些示例中,主机系统和网络接口控制器(NIC)可以支持使用可扩展I/O虚拟化(SIOV)。用于SIOV的示例技术规范是可扩展I/O虚拟化技术规范(修订版1.0,2018年6月),以及其较早版本、之后的版本及变型。支持SIOV的设备可以被配置为将其资源分组到多个隔离的可指派设备接口(ADI)中。SIOV可以将服务器资源分解为可由编排器合成或指派的微组件。SIOV允许VM彼此隔离,使得VM可以与其有噪的邻居隔离。换言之,有噪的邻居VM对资源的使用可以与另一VM的资源使用隔离,以减少有噪的邻居VM的操作对一个或多个其他VM的性能的影响。有噪的邻居可能包括使用过多带宽、磁盘I/O、处理器和其他资源的共同租户,使得这种使用对其他租户的进程的性能产生负面影响。
来自/去往每个ADI的直接存储器访问(DMA)传送被标记有唯一的进程地址空间标识符(PASID)编号。与用于在物理功能(PF)上创建多个虚拟功能(VF)的SR-IOV的粗粒度设备分区方法不同,SIOV使得软件能够灵活地构成虚拟设备,从而利用硬件辅助来以更细粒度共享设备。在构成的虚拟设备上的关键操作可以直接映射到底层设备硬件,而非关键操作可以通过主机中的设备特定的合成软件进行模拟。
允许同时的用户空间和内核空间存储器访问可以用于不同的固件或硬件特征,例如,带宽监视、错误、时延、异常、队列深度、主机到设备带宽、设备到主机带宽、图形引擎度量、帧缓冲器存储器利用、总线接口利用、心跳、遥测、高级错误报告、用户级中断(ULI)等。客体VM可以使用这种信息来确定在其上下文中运行的应用是否没有经历性能下降和/或停止。例如,基于数据平面开发套件(DPDK)的应用可以收集网络适配器的性能度量,并且OpenvSwitch实现方式可以基于度量来调谐设备性能。例如,更新内核空间中的遥测计数器可以发生以指示设备利用。内核空间访问可以是异步的,并且与用户空间活动无关。然而,SIOV不支持允许SIOV设备访问虚拟机(VM)的用户空间和内核空间存储器。
快速外围组件互连(PCIe)一致设备可以针对用户空间存储器访问发出具有PASID的存储器读取或写入请求,并且针对内核空间存储器访问发出不具有PASID的请求。对于PCIe的示例,参见例如外围组件互连(PCI)快速基本规范1.0(2002)及其较早版本、之后的版本及变型。所提供的不具有PASID的存储器读取或写入请求是代表主机上的父PF设备被处理的,并且无法访问客体内核存储器。如果VM能够读取或写入由另一VM使用的存储器,则可能发生潜在的安全隐患。
图1示出了其中主机驱动程序对设备的SIOV上下文进行编程以准备设备供应用使用的示例。上下文可以包括进程地址空间ID(PASID),该PASID是由管理程序指派的用户或设备标识符。PASID值可以在来自设备的事务中被编码,并允许输入-输出存储器管理单元(IOMMU)除了使用作为总线/设备/功能的PCIe资源标识符(RID)之外,基于每PASID跟踪输入/输出事务。动作(1)示出了主机驱动程序通过将上下文写入设备特定的寄存器来对设备的SIOV上下文进行编程。然而,当前SIOV设备不允许访问(例如,读取和/或写入)VM的用户空间存储器和内核空间存储器两者。
图2示出了SIOV版本3.0的示例实现方式,其中直接存储器访问(DMA)地址重新映射基于PASID值。在一些SIOV实现方式中,只有一个PASID与设备或进程相关联。最初,PASID由管理程序或主机驱动程序编程,并允许对客体IO虚拟地址(IOVA)存储器空间进行受限访问。基于PASID值,可以使用2级地址转换方案,该2级地址转换方案包括访问与PASID相关联的指针以从客体虚拟地址(GVA)转换为客体物理地址(GPA),以及访问另一指针以从GPA转换为主机物理地址(HPA)。源GVA可以是由应用或设备提供的任何虚拟地址。在一些情况下,由于无法正确转换GVA,因此设备对VM的内核空间存储器的访问被阻止,其中利用两级嵌套地址转换方案来转换存储器访问,因为将针对进程地址空间限制访问。
图3示出了具有可以支持多个SIOV上下文的设备的示例系统。在该示例中,至少两个存储器域是可用的,即,输入输出虚拟地址(IOVA)(例如,内核空间)和应用域。来自不同虚拟机的数据流可以分开并隔离。SIOV上下文A和B可以由父物理功能(PF)通过总线、设备和功能(BDF)标识符访问,以便访问主机内核存储器。如果硬件设备生成不寻址到应用的数据,则为了使VM中的应用访问这种数据,主机驱动程序向应用提供数据的可用性(示为从1到2和从3到4的箭头)。例如,动作1和2描绘了一种方式,其中设备可以向主机操作系统(OS)提供对数据(例如,遥测数据、心跳、统计信息等)的访问,以通过主机驱动程序到客体驱动程序通信信道提供给应用A。类似地,动作3和4是一种方式,其中设备可以向主机OS提供对数据(例如,遥测数据、心跳、统计信息等)的访问,以通过主机驱动程序到客体驱动程序通信信道提供给应用B。动作(1)和(3)针对主机内核存储器,动作(2)针对客体A内核存储器,而动作(4)针对客体B内核存储器和应用域。当前,出于安全原因,PASID可以用于访问内核或应用域,但不能用于两者。因此,由于主机驱动程序知道不同VM中的应用,因此主机OS可以通过主机存储器域中的主机驱动程序解析多个不同的应用上下文。然而,利用主机驱动程序提供数据可用性可能会引入时延,该时延可能太高而无法允许由具有应用的设备进行近实时统计信息和遥测共享。
附图说明
图1示出了示例系统。
图2示出了示例地址重新映射。
图3示出了示例系统。
图4A和图4B描绘了系统的配置。
图5描绘了系统的配置。
图6描绘了过程。
图7描绘了系统。
图8描绘了示例环境。
具体实施方式
各种实施例允许硬件设备向VM的用户空间存储器和内核空间存储器两者写入或从VM的用户空间存储器和内核空间存储器两者读取。各种实施例提供了由每个客体的单个SIOV可指派设备接口(ADI)结合到目的地存储器地址的地址转换来使用两个PASID,该地址转换用于从设备到主机的直接存储器访问(DMA)操作。两个PASID可以包括:(1)系统PASID(sPASID)值;以及(2)客体PASID值(uPASID)。各种实施例在硬件中提供寄存器以存储用于VM内部的内核存储器访问的sPASID,并且提供第二寄存器以存储用于客体IOVA存储器访问的uPASID值。在虚拟化用例中,sPASID可以由管理程序进行编程,并且客体OS或驱动程序可能无法访问或更改该sPASID,因此该sPASID可以提供保护以防止未授权使用。然而,uPASID可以由客体OS或驱动程序访问和编程,并且可以允许客体VM中的用户空间进程与设备(vSVM)共享其虚拟地址空间,以便允许设备写入用户空间存储器或从用户空间存储器读取。
通过使用uPASID,可以访问用户空间存储器,这可以通过客体虚拟地址(GVA)到客体物理地址(GPA)转换和GPA到主机物理地址(HPA)转换来提供从GVA到HPA的嵌套(例如,2级)转换。然而,针对存储器地址转换单独使用uPASID,不允许设备访问客体内核存储器。然而,针对地址转换使用sPASID和uPASID可以提供对内核空间存储器的访问,由此uPASID可以用于标识用于GVA到GPA地址转换的转换表,并且sPASID可以用于标识用于GVA到HPA地址转换的转换表。在一些示例中,可以由与ADI相关联的设备使用sPASID来访问客体IOVA空间(例如,固定存储器(pinned memory)或DMA地址空间),而可以由设备使用uPASID来访问GVA空间。
例如,针对地址转换的sPASID和uPASID可以用于将遥测、心跳等传送到虚拟机的内核存储器空间的设备,而uPASID可以用于将应用有效载荷传送到用户空间存储器的设备的地址转换。例如,如果流包括近实时数据(例如,遥测、心跳、错误报告等),则设备可以使用(1)sPASID和uPASID用于初始化和内核应用,以及用于涉及内核空间存储器写入或读取的地址转换。例如,如果流是应用触发的活动,则设备可以使用uPASID进行地址转换,以将有效载荷传送到主机系统400的用户空间存储器以供客体VM处理。
如果使用涉及sPASID的地址转换来访问用户空间存储器,则可能由于无效的存储器映射而导致访问失败。如果恶意用户空间进程为失灵设备(misbehaving device)提供了有效的内核地址,则访问将仅破坏客体存储器而不是破坏主机存储器。如果使用涉及uPASID的地址转换来访问内核空间存储器,则可能由于无效的存储器映射而导致访问失败。由于内核空间访问由内核驱动程序控制,因此恶意用户空间进程无法利用有效的用户空间存储器映射覆写该地址。
操作系统(OS)可以将存储器或虚拟存储器分为内核空间和用户空间,以提供存储器保护和硬件保护以防止恶意或错误的软件行为。用户空间可以是分配给正在运行的应用和一些驱动程序的存储器。在用户空间下运行的进程可以访问存储器的有限部分,而内核可以访问全部存储器。内核空间可以是分配给内核、内核扩展、一些设备驱动程序和操作系统的存储器。内核可以管理在用户空间中正在运行的应用。内核空间可以是内核的代码在其内被存储和执行的位置。
包括sPASID值的sPASID寄存器可以由主机操作系统、主机驱动程序或管理程序访问或编程,并且可以提供附加的隔离级别,因为sPASID不能被客体OS或驱动程序修改。主机驱动程序可以确定哪个VM能够访问设备。sPASID可以是由设备在任何时刻使用以访问客体IOVA存储器的永久PASID。
包括uPASID值的uPASID寄存器可以由客体OS或客体内核驱动程序访问和编程,并且可以允许客体VM中的用户空间进程与设备(例如,vSVM)共享其虚拟地址空间。在一些示例中,主机驱动程序可以被配置为使uPASID寄存器虚拟化,并且在将要求的值编程到寄存器中之前执行附加的验证步骤。当在VM中执行的应用是活动的时,可以使用uPASID寄存器内容。uPASID寄存器可以是可编程的,使得客体内核驱动程序可以改变PASID值,因为客体OS可以确定在VM中执行的应用何时开启或终止。在一些示例中,PASID是32位。各种实施例为每个虚拟设备提供两个寄存器以存储uPASID和sPASID。
可以实现不同客体VM的客体应用之间的存储器隔离。在一些情况下,设备用于访问来自部署在同一主机上的另一客体或应用的数据的能力可能会降低。
各种实施例假设客体应用和设备可以共享独立于公共主机存储器域的存储器区域。可以改进客体应用之间的存储器隔离。在一些情况下,设备用于访问来自部署在同一主机上的另一客体/应用的数据的能力可能会降低。各种实施例提供了由不同客体应用可访问的数据的隔离。各种实施例启用虚拟化用例以允许设备在具有VM到VM隔离的云环境中使用。
图4A示出了示例系统。主机系统400可以包括一个或多个处理器、存储器设备和用于与设备450通信的接口。各种处理器(例如,CPU或XPU)可以执行主机OS 402和客体VM404。根据一些实施例,操作系统402的主机驱动程序执行初始化步骤以添加附加的上下文设置,以便提供对客体内核存储器的永久访问。根据一些实施例,设备的SIOV上下文可以利用额外的参数(OS SIOV上下文(sPASID))来扩展。因此,可以指派两个PASID寄存器来存储用于客体VM 404的上下文,即,OS SIOV上下文(sPASID)和应用SIOV(uPASID)。在一些示例中,应用上下文A可以包括uPASID值,而OS上下文A可以包括sPASID值。
在一些示例中,设备控制器452(例如,固件)可以被配置为确定哪个上下文要用于诸如客体内核存储器访问之类的操作。因此,在一些示例中,客体驱动程序406可以被配置为管理由主机驱动程序(例如,Linux或Microsoft OS兼容的驱动程序)管理的流和数据副本,例如,从设备450到主机系统400的遥测计数器配置、心跳配置等副本。
各种实施例提供了设备450和在客体VM 404中执行的客体应用共享独立于公共主机存储器域的存储器区域。例如,通过使用针对地址转换的sPASID和uPASID,结合存储器写入操作,可以实现设备450对主机系统400的内核空间存储器的访问。例如,sPASID和uPASID可以用于传送遥测、心跳或其他信息的设备的地址转换。在一些情况下,内核空间存储器可以用于遥测和实时数据,因为设备管理软件典型地驻留在内核空间中,并且可以以增加的特权级别对收集到的数据进行操作。设备管理软件可以将数据暴露给用户空间以进行数据库/日志收集和查看。
例如,对于写入主机系统400的存储器的适当区域的设备,为了访问由客体设备驱动程序提供的目的地地址,设备450可以使用DMA设备(未示出)来发出DMA事务(读取或写入),从而使用基于预先配置的sPASID和uPASID的地址转换来进行内核存储器访问,或针对用户空间存储器使用基于uPASID的地址转换。
设备450可以包括任何类型的设备,包括但不限于以下各项中的一个或多个:网络接口控制器、基础设施处理单元(IPU)、数据处理单元(DPU)、压缩或解压缩卸载电路、加密或解密卸载电路(例如,QuickAssist)、工作负载管理器(例如,硬件队列管理器)、XPU、存储控制器、存储器控制器、图形处理单元等。
图4B描绘了示例系统。在该示例中,设备550被编程有应用和OS上下文A以及应用和OS上下文B。在一些示例中,应用上下文A可以包括uPASID值,而OS上下文A可以包括sPASID值。类似地,应用上下文B可以包括uPASID值,而OS上下文B可以包括sPASID值。在一些示例中,上下文A和上下文B可以用于设备550向不同客体VM的用户空间和内核空间存储器写入或从不同客体VM的用户空间和内核空间存储器读取。
虽然关于SIOV描述了示例,但是可以使用经虚拟化的设备接口,例如,SR-IOV或多根IOV(MR-IOV)或PCIe事务。来自PCI特别兴趣小组(SIG)的多根I/O虚拟化(MR-IOV)和共享规范(修订版1.0,2008年5月12日)是用于在多个计算机之间共享快速PCI(PCIe)设备的规范。
图5描绘了用于内核存储器访问的地址重映射的示例方式。主机IOMMU驱动程序和主机设备驱动程序可以配置在uPASID与用户空间和IOMMU页表之间的关联。在该示例中,uPASID具有指向用户空间和IOMMU页表的指针,而sPASID具有指向IOMMU页表的指针。uPASID可以用于针对客体共享虚拟存储器(SVM)访问的地址转换(例如,GVA到GPA和GPA到HPA)。在一些示例中,uPASID可以用于标识用于GVA到GPA的地址转换表,而如果VM中不存在虚拟IOMMU,则sPASID可以用于标识用于GPA到HPA转换的地址转换表,或者如果VM中存在虚拟IOMMU,则sPASID可以用于标识用于客体IOVA(GIOVA)到HPA转换的地址转换表。在启用虚拟IOMMU的情况下,可以使用GIOVA到HPA转换表而不是GPA到HPA转换表。
配置和使用的示例可以如下。在(1)处,VMM可以将设备ADI(作为SIOV虚拟设备(VDEV)的一部分)与虚拟IOMMU一起指派给VM。在(2)处,最初,VDEV合成模块(VDCM)对ADI的sPASID进行编程,以指向VM的GPA到HPA转换(如果未使用vIOMMU)或指向设备特定的GIOVA到HPA转换(如果使用vIOMMU)。在(3)处,如果客体驱动程序固定了用于DMA操作的存储器(例如,为ADI创建GIOVA到GPA映射),则IOMMU驱动程序更新GIOVA到HPA转换表,该GIOVA到HPA转换表是由VMM虚拟化的。在这种情况下,可以利用sPASID来标记来自ADI的上游事务。GIOVA到HPA转换表可以指代与GPA到HPA转换相同的表,但GPA到HPA转换表对整个客体物理存储器进行寻址,而GIOVA到HPA表可以对一些有限的页面而不是整个GPA到HPA转换表进行寻址。如果客体驱动程序向用户空间应用指派ADI,则客体驱动程序可以在ADI上配置uPASID以指向GVA到GPA转换表,该GVA到GPA转换表可以由VMM虚拟化。在一些示例中,VDCM可以配置uPASID以指向GVA到GPA表和GPA到HPA表两者(以执行嵌套转换)。在这种情况下,可以利用uPASID来标记来自ADI的共享虚拟存储器(SVM)事务,但也可以利用sPASID来标记来自ADI的某些上游事务(例如,遥测、心跳等)。
图6描绘了示例过程的操作。在602处,可以为设备指派虚拟设备标识符。例如,VMM或管理程序可以为设备指派ADI或PF或VF。设备可以使用诸如PCIe之类的设备接口连接到计算平台。SIOV、SR-IOV或MR-IOV可以用于提供设备虚拟化。在604处,第一PASID可以被配置为由设备使用以进行从GVA到GPA和从GPA到HPA的两级转换,以允许访问客体VM的用户空间存储器。例如,第一PASID可以是uPASID,并且uPASID可以由客体OS或驱动程序访问和编程。在606处,第二PASID可以被配置为由设备使用,该第二PASID当与第一PASID一起使用时可以提供从GVA到GPA和从GPA到HPA的两级转换,以允许访问客体VM的用户内核存储器。例如,第二PASID可以是由管理程序编程的sPASID,并且客体OS或驱动程序可能无法访问或改变该sPASID。第一PASID可以用于访问从GVA到GPA的转换表,并且第二PASID可以用于访问从GPA到HPA的转换表,或者,如果VM中存在虚拟IOMMU,则该第二PASID可以用于访问从GIOVA到HPA的转换表。在608处,响应于针对设备写入客体VM的存储器中的地址或从该地址读取的请求,可以取决于存储器区域是用户空间还是内核空间来使用第一PASID或第二PASID。如果设备要写入或读取来自客体VM的用户空间存储器中的地址,则可以使用第一PASID以进行从GVA到HPA的地址转换。如果设备要写入或读取来自客体VM的内核空间存储器中的地址,则可以使用第一PASID和第二PASID以进行从GVA到GPA和从GPA到HPA的地址转换,或者,如果vIOMMU由VM使用,则可以使用第一PASID和第二PASID以进行从IOVA到HPA的转换。基于地址转换,设备可以读取或写入客体VM的存储器。
图7描绘了示例系统。该系统可以使用本文描述的实施例来使用本文描述的技术向设备提供对用户空间存储器或内核空间存储器的访问。例如,编码器可以位于系统的任何部分,该系统包括但不限于加速器、CPU或网络接口。系统700包括处理器710,该处理器710为系统700提供处理、操作管理和指令的执行。处理器710可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核心或其他处理硬件或处理器的组合,以为系统700提供处理。处理器710控制系统700的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等,或者这些设备的组合。
处理器710可以包括一个或多个核心。核心可以是能够执行指令的执行核心或计算引擎。核心可以访问其自己的高速缓存和只读存储器(ROM),或者多个核心可以共享高速缓存或ROM。核心可以是同构和/或异构设备。可以使用任何类型的处理器间通信技术,例如但不限于消息传递、处理器间中断(IPI)、处理器间通信等。核心可以以任何类型的方式连接,例如但不限于总线、环形或网格。核心可以支持一个或多个指令集(例如,x86指令集(具有已经随着较新版本被添加的一些扩展);MIPS Technologies(加利福尼亚州,森尼韦尔市)的MIPS指令集;ARM Holdings(加利福尼亚州,森尼韦尔市)的ARM指令集(具有可选的附加扩展,例如,NEON)),包括本文描述的(多个)指令。在一些示例中,处理器710包括XPU(或xPU)。XPU可以包括以下各项中的一个或多个:图形处理单元(GPU)、通用GPU(GPGPU)、现场可编程门阵列(FPGA)、加速处理单元(APU)、加速器或其他处理器。
在一个示例中,系统700包括耦合到处理器710的接口712,该接口712可以表示针对需要更高的带宽连接的系统组件(例如,存储器子系统720或图形接口组件740或加速器742)的更高速度接口或高吞吐量接口。接口712表示接口电路,该接口电路可以是独立组件或者集成到处理器管芯上。在存在图形接口740的情况下,该图形接口740与图形组件接合,以将视觉显示提供到系统700的用户。在一个示例中,图形接口740可以驱动向用户提供输出的高清晰度(HD)显示器。高清晰度可以指代具有大约100PPI(每英寸像素)或更大的像素密度的显示器,并且可以包括诸如全HD(例如,1080p)、视网膜显示、4K(超高清晰度或UHD)或其他格式之类的格式。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口740基于在存储器730中存储的数据或基于由处理器710执行的操作或两者来生成显示。在一个示例中,图形接口740基于在存储器730中存储的数据或基于由处理器710执行的操作或两者来生成显示。
加速器742可以是可以由处理器710或网络接口750访问或使用的可编程或固定功能卸载引擎。例如,加速器可以包括本文描述的一个或多个卸载处理器。例如,加速器742中的加速器可以提供压缩(DC)能力、诸如公钥加密(PKE)之类的密码服务、密码、散列/认证能力、解密或其他能力或服务。在一些实施例中,另外地或可替代地,加速器742中的加速器提供如本文所描述的现场选择控制器能力。在一些情况下,加速器742可以被集成到CPU插座(例如,到包括CPU并提供与CPU的电气接口的主板或电路板的连接器)中。例如,加速器742可以包括单核心或多核心处理器、图形处理单元、逻辑执行单元、单级或多级高速缓存、可用于独立执行程序或线程的功能单元、专用集成电路(ASIC)、神经网络处理器(NNP)、可编程控制逻辑以及诸如现场可编程门阵列(FPGA)之类的可编程处理元件。加速器742可以提供多个神经网络、CPU、处理器核心、通用图形处理单元,或者可以使图形处理单元可供人工智能(AI)或机器学习(ML)模型使用。例如,AI模型可以使用或包括以下各项中的任一个或其组合:强化学习方案、Q-学习方案、深度-Q学习、或异步优势Actor-Critic(A3C)、组合神经网络、递归组合神经网络或其他AI或ML模型。可以使多个神经网络、处理器核心或图形处理单元可供AI或ML模型使用。
存储器子系统720表示系统700的主存储器,并且为要由处理器710执行的代码或要在执行例程中使用的数据值提供存储。存储器子系统720可以包括一个或多个存储器设备730,例如,只读存储器(ROM)、闪速存储器、随机存取存储器(RAM)的一种或多种变型(例如,DRAM),或其他存储器设备,或这些设备的组合。存储器730存储并托管操作系统(OS)732以及其他事物,以提供用于执行系统700中的指令的软件平台。另外地,应用734可以从存储器730在OS 732的软件平台上执行。应用734表示具有其自己的操作逻辑以执行对一个或多个功能的执行的程序。进程736表示向OS 732或一个或多个应用734或其组合提供辅助功能的代理或例程。OS 732、应用734和进程736提供软件逻辑以提供用于系统700的功能。在一个示例中,存储器子系统720包括存储器控制器722,该存储器控制器722是用于生成命令并将命令发出到存储器730的存储器控制器。将理解的是,存储器控制器722可以是处理器710的物理部分或接口712的物理部分。例如,存储器控制器722可以是集成到具有处理器710的电路上的集成存储器控制器。
在一些示例中,OS 732可以确定与设备驱动程序相关联的设备的能力。例如,OS732可以接收设备(例如,NIC 750或加速器742)的能力的指示以配置NIC 750或加速器742来执行本文描述的能力中的任一个(例如,数据压缩或对压缩模式的选择)。OS 732可以请求驱动程序启用或禁用NIC 750或加速器742以执行本文描述的能力中的任一个。在一些示例中,OS 732本身可以启用或禁用NIC 750或加速器742以执行本文描述的能力中的任一个。OS 732可以向NIC 750提供请求(例如,来自应用或VM)以利用NIC 750或加速器742的一个或多个能力。例如,任何应用可以请求使用或不使用本文描述的NIC750或加速器742的能力中的任一个。
在一些示例中,OS可以是服务器或个人计算机、VMware vSphere、openSUSE、RHEL、CentOS、Debian、Ubuntu或任何其他操作系统。OS和驱动程序可以在由Texas以及其他公司销售或设计的CPU上执行。
注意,对VM的任何引用可以更一般地指代经虚拟化的执行环境(VEE)。VEE可以指代至少虚拟机或容器。虚拟机(VM)可以是运行操作系统和一个或多个应用的软件。VM可以由规范、配置文件、虚拟磁盘文件、非易失性随机存取存储器(NVRAM)设置文件和日志文件定义,并由主机计算平台的物理资源支持。VM可以是安装在软件上的操作系统(OS)或应用环境,该VM模仿专用硬件。最终用户在虚拟机上的体验与他们在专用硬件上的体验相同。被称为管理程序的专用软件完全模拟PC客户端或服务器的CPU、存储器、硬盘、网络和其他硬件资源,从而使虚拟机能够共享资源。管理程序可以模拟彼此隔离的多个虚拟硬件平台,从而允许虚拟机在同一底层物理主机上运行Linux和Windows服务器操作系统。
容器可以是应用、配置和依赖关系的软件封装,因此应用在一个计算环境到另一计算环境上可靠地运行。容器可以共享安装在服务器平台上的操作系统并作为隔离的进程运行。容器可以是软件封装,其包含软件所需要的一切以运行例如系统工具、库和设置。容器没有像传统的软件程序那样被安装,这允许容器与其他软件和操作系统本身隔离。容器的隔离性质提供了若干益处。首先,容器中的软件将在不同的环境中相同地运行。例如,包括PHP和MySQL的容器可以在Linux计算机和Windows机器两者上相同地运行。第二,容器提供了附加的安全性,因为软件不会影响主机操作系统。虽然安装的应用可能更改系统设置并修改资源(例如,Windows注册表),但容器可以仅修改容器内的设置。
系统700的各种资源可以执行应用或微服务。微服务可以包括将单体应用分解为小的、可管理的、定义良好的服务。微服务可以由以下各项中的一个或多个表征:使用细粒度接口(用于可独立部署的服务)、多语言编程(例如,用多种语言编写代码以捕获单个语言无法提供的附加功能和效率)、或轻量级容器或虚拟机部署、以及非集中式的持续微服务递送。微服务具有驱动快速采用的许多益处。微服务的益处也驱动需要管理的新的复杂度和处理开销。总的来说,从应用开发人员的角度来看,益处大于相关联的复杂度。
在一些示例中,应用可以由微服务组成,其中每个微服务在其自己的进程中运行并且使用协议(例如,HTTP资源API、消息服务、远程过程调用(RPC)、JavaScript对象表示法(JSON)、Thrift、JSON或gRPC)进行通信。可以使用对微服务的集中式管理来独立部署这些服务。管理系统可以用不同的编程语言编写并使用不同的数据存储技术。微服务可以由以下各项中的一个或多个进行表征:使用细粒度接口(用于可独立部署的服务)、多语言编程(例如,用多种语言编写代码以捕获单个语言无法提供的附加功能和效率)、或轻量级容器或虚拟机部署、以及非集中式的持续微服务递送。各种微服务可以部署在基于容器的环境中本地的云。
一些示例处理器710或NIC 750是基础设施处理单元(IPU)或数据处理单元(DPU)的一部分或由IPU或DPU利用。xPU可以指代至少IPU、DPU、GPU、GPGPU或其他处理单元(例如,加速器)。IPU或DPU可以包括具有一个或多个可编程或固定功能处理器的网络接口,以执行本可以由CPU执行的操作的卸载。IPU或DPU可以包括一个或多个存储器设备。在一些示例中,IPU或DPU可以执行虚拟交换机操作、管理存储事务(例如,压缩、加密、虚拟化)、并管理在其他IPU、DPU、服务器或设备上执行的操作。
尽管没有具体示出,但是将理解的是,系统700可以包括设备之间的一条或多条总线或一个或多个总线系统,例如,存储器总线、图形总线、接口总线或其他总线。总线或其他信号线可以将组件通信地或电气地耦合在一起,或者将组件通信地且电气地耦合。总线可以包括物理通信线路、点对点连接、桥、适配器、控制器或其他电路系统或其组合。总线可以包括例如系统总线、外围组件互连(PCI)总线、超传输或行业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气和电子工程师协会(IEEE)标准1394总线(火线)中的一个或多个。
在一个示例中,系统700包括接口714,该接口714可以耦合到接口712。在一个示例中,接口714表示接口电路,该接口电路可以包括独立组件和集成电路系统。在一个示例中,多个用户接口组件或外围组件或两者耦合到接口714。网络接口750向系统700提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口750可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)、或其他基于有线标准或无线标准的接口或专有接口。网络接口750可以将数据发送到位于相同数据中心或机架中的设备或远程设备,这可以包括发送存储在存储器中的数据。网络接口750可以从远程设备接收数据,这可以包括将接收到的数据存储在存储器中。可以结合网络接口750、处理器710和存储器子系统720使用各种实施例。
在一个示例中,系统700包括一个或多个输入/输出(I/O)接口760。I/O接口760可以包括用户通过其与系统700交互(例如,音频、字母数字、触觉/触摸或其他接合)的一个或多个接口组件。外围接口770可以包括上面未具体提到的任何硬件接口。外围设备通常指代依赖地连接到系统700的设备。依赖连接是其中系统700提供在其上执行操作并且用户与其进行交互的软件平台或硬件平台或两者的一种连接。
在一个示例中,系统700包括用于以非易失性方式存储数据的存储子系统780。在一个示例中,在某些系统实现方式中,存储装置780的至少某些组件可以与存储器子系统720的组件重叠。存储子系统780包括(多个)存储设备784,这些存储设备784可以是或包括用于以非易失性方式存储大量数据的任何常规介质,例如,一个或多个基于磁性、固态或光学的盘或其组合。存储装置784以持久状态保存代码或指令以及数据786(即,尽管到系统700的电力中断,但值仍被保留)。存储装置784通常可以被认为是“存储器”,但是存储器730典型地是用于向处理器710提供指令的执行或操作存储器。尽管存储装置784是非易失性的,但是存储器730可以包括易失性存储器(即,如果到系统700的电力被中断,则数据的值或状态是不确定的)。在一个示例中,存储子系统780包括用于与存储装置784接合的控制器782。在一个示例中,控制器782是接口714或处理器710的物理部分,或者可以包括处理器710和接口714两者中的电路或逻辑。
易失性存储器是一种这样的存储器:如果到设备的电力被中断,则其状态(以及因此存储在其中的数据)是不确定的。动态易失性存储器要求刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器)或诸如同步DRAM(SDRAM)之类的一些变型。易失性存储器的另一示例包括高速缓存。如本文所描述的存储器子系统可以与多种存储器技术兼容,例如,DDR3(双倍数据速率版本3,由JEDEC(联合电子器件工程委员会)于2007年6月27日最初发布)、DDR4(DDR版本4,由JEDEC于2012年9月公布的初始规范)、DDR4E(DDR版本4)、LPDDR3(低功率DDR版本3)、JESD209-3B(由JEDEC于2013年8月发布)、LPDDR4(LPDDR版本4)、JESD209-4(由JEDEC于2014年8月最初公布)、WIO2(宽输入/输出版本2)、JESD229-2(由JEDEC于2014年8月最初公布)、HBM(高带宽存储器)、JESD325(由JEDEC于2013年10月最初公布)、LPDDR5(目前由JEDEC正在讨论)、HBM2(HBM版本2,目前由JEDEC正在讨论),或其他存储器技术或这些存储器技术的组合,以及基于这样的规范的派生物或扩展的技术。
非易失性存储器(NVM)设备是一种这样的存储器:即使到设备的电力被中断,其状态也是确定的。在一些实施例中,NVM设备可以包括块可寻址存储器设备,例如,NAND技术,或者更具体地,多阈值级NAND闪速存储器(例如,单级单元(“SLC”)、多级单元(“MLC”)、四级单元(“QLC”)、三级单元(“TLC”)或某种其他NAND)。NVM设备还可以包括字节可寻址的就地写入三维交叉点存储器设备,或其他字节可寻址的就地写入NVM设备(也被称为持久性存储器),例如,单级或多级相变存储器(PCM)或具有开关的相变存储器(PCMS)、使用硫族相变材料(例如,硫族玻璃)的NVM设备、电阻式存储器(包括金属氧化物基、氧空位基和导电桥随机存取存储器(CB-RAM))、纳米线存储器、铁电随机存取存储器(FeRAM、FRAM)、结合忆阻器技术的磁阻随机存取存储器(MRAM)、自旋移矩(STT)-MRAM、基于自旋电子磁结存储器的设备、基于磁性隧道结(MTJ)的设备、基于DW(畴壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备或上述存储器中的任何存储器的组合或其他存储器。
电源(未描绘)向系统700的组件提供电力。更具体地,电源典型地与系统700中的一个或多个电源供应接合,以向系统700的组件提供电力。在一个示例中,电源供应包括用于插入壁式插座的AC到DC(交流电到直流电)适配器。这样的AC电力可以是可再生能源(例如,太阳能)电源。在一个示例中,电源包括DC电源,例如,外部AC到DC转换器。在一个示例中,电源或电源供应包括无线充电硬件,以经由与充电场的接近度来充电。在一个示例中,电源可以包括内部电池、交流电供应、基于运动的电源供应、太阳能电源供应或燃料电池源。
在示例中,系统700可以使用处理器、存储器、存储装置、网络接口和其他组件的互连的计算托架来实现。可以使用高速互连,例如,PCIe、以太网或光学互连(或其组合)。
本文的实施例可以在各种类型的计算和联网装备(例如,交换机、路由器、机架和刀片式服务器(例如,在数据中心和/或服务器场环境中所采用的那些))中实现。数据中心和服务器场中使用的服务器包括阵列式服务器配置,例如,基于机架的服务器或刀片式服务器。这些服务器经由各种网络配置进行通信互连,例如,将多组服务器划分为局域网(LAN),该LAN具有LAN之间的适当的交换和路由设施,以形成私有的内联网。例如,云托管设施可以典型地采用具有大量服务器的大型数据中心。刀片包括单独的计算平台,该平台被配置为执行服务器类型的功能,即,“卡上服务器”。因此,每个刀片包括常规的服务器所共有的组件,包括提供用于耦合适当的集成电路(IC)和安装到板上的其他组件的内部布线(即,总线)的主印刷电路板(主板)。
图8描绘了环境800,该环境800包括多个计算机架802,每个机架包括机架顶部(ToR)交换机804、吊舱管理器806和多个池化系统抽屉。环境可以使用本文描述的实施例来使用本文描述的技术向设备提供对用户空间存储器或内核空间存储器的访问。通常,池化系统抽屉可以包括池化计算抽屉和池化存储抽屉。可选地,池化系统抽屉还可以包括池化存储器抽屉和池化输入/输出(I/O)抽屉。在所示的实施例中,池化系统抽屉包括 池化计算抽屉808和ATOMTM池化计算抽屉810、池化存储抽屉812、池化存储器抽屉814和池化I/O抽屉816。池化系统抽屉中的每一个经由高速链路818(例如,以太网链路和/或硅光子(SiPh)光学链路)连接到ToR交换机804。
多个计算机架802可以经由其ToR交换机804互连(例如,互连到吊舱级交换机或数据中心交换机),如由到网络820的连接所示的。在一些实施例中,经由(多个)吊舱管理器806将计算机架802的组作为单独的吊舱进行管理。在一些实施例中,单个吊舱管理器用于管理吊舱中的所有机架。可替代地,分布式吊舱管理器可以用于吊舱管理操作。
环境800还包括用于管理环境的各种方面的管理接口822。该管理接口822包括管理机架配置,其中对应的参数被存储为机架配置数据824。
在一些示例中,本文描述的网络接口和其他实施例可以与基站(例如,3G、4G、5G等)、宏基站(例如,5G网络)、微微站(picostation,例如,IEEE 802.11兼容的接入点)、毫微站(nanostation,例如,用于点对多点(PtMP)应用)、本地数据中心、异地数据中心、边缘网络元件、雾网络元件和/或混合数据中心(例如,使用虚拟化、云和软件定义网络来跨物理数据中心和分布式多云环境递送应用工作负载的数据中心)结合使用。
各种示例可以使用硬件元件、软件元件或者两者的组合来实现。在一些示例中,硬件元件可以包括设备、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片集等等。在一些示例中,软件元件可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定示例是否是使用硬件元件和/或软件元件实现的可以根据任何数量的因素(例如,期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和根据给定的实现方式的期望的其他设计或者性能约束)而变化。处理器可以是硬件状态机、数字控制逻辑、中央处理单元或任何硬件、固件和/或软件元件的一个或多个组合。
一些示例可以使用制品或者至少一种计算机可读介质来实现或被实现为制品或者至少一种计算机可读介质。计算机可读介质可以包括用于存储逻辑的非暂时性存储介质。在一些示例中,非暂时性存储介质可以包括能够存储电子数据的一种或者多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦除或不可擦除存储器、可写入或可重写存储器等等。在一些示例中,逻辑可以包括各种软件元件,例如,软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。
根据一些示例,计算机可读介质可以包括用于存储或者维持指令的非暂时性存储介质,该指令在由机器、计算设备或者系统执行时使得该机器、计算设备或者系统执行根据所描述的示例的方法和/或操作。指令可以包括任何合适类型的代码,例如,源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。指令可以根据预定义的计算机语言、方式或者句法来实现,以用于指示机器、计算设备或者系统执行某些功能。指令可以使用任何适合的高级、低级、面向对象、视觉、编译和/或解释编程语言来实现。
至少一个示例的一个或多个方面可以由存储在至少一种机器可读介质上的表示处理器内的各种逻辑的代表性指令实现,该指令在由机器、计算设备或者系统读取时使得该机器、计算设备或者系统制造用于执行本文描述的技术的逻辑。被称为“IP核心”的这样的表示可以被存储在有形的机器可读介质上并且被供应到各种客户或者制造设施以加载到实际上制造逻辑或者处理器的制造机器中。
短语“一个示例”或“示例”的出现不一定全部指代相同的示例或实施例。本文描述的任何方面可以与本文所描述的任何其他方面或类似的方面组合,而不管这些方面是否是关于相同的附图或元素来描述的。附图中描绘的块功能的划分、省略或者包含并不暗指用于实现这些功能的硬件组件、电路、软件和/或元件将一定在实施例中被划分、省略或者包含。
一些示例可以使用表述“耦合”和“连接”以及其衍生词来描述。这些术语不一定旨在是彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可以指示两个或者更多个元件彼此直接物理或者电接触。然而,术语“耦合”也可以意味着两个或者更多个元件彼此不直接接触,但是仍然协同操作或者彼此交互。
本文中的术语“第一”、“第二”等并不表示任何次序、数量或重要性,而是用于将一个元素与另一元素区分开。本文中的术语“一(a)”和“一个(an)”不表示对数量的限制,而是表示所引用的项目中的至少一个的存在。本文中参考信号使用的术语“使……生效”表示其中信号为活动的信号的状态,并且可以通过将任何逻辑电平(逻辑0或逻辑1)施加到信号来实现。术语“跟随”或“之后”可以指代紧跟或跟随在某种其他事件或多个事件之后。步骤的其他序列也可以根据替代实施例来执行。此外,可以取决于特定的应用来添加或移除附加的步骤。可以使用改变的任何组合,并且受益于本公开的本领域的普通技术人员将理解其许多变型、修改和替代实施例。
除非另有明确说明,否则诸如短语“X,Y或Z中的至少一个”之类的析取语言在上下文内被理解为通常用于表示项目、术语等,并且可以是X,Y或Z或者其任何组合(例如,X,Y和/或Z)。因此,这种析取语言通常不旨在并且不应该暗示某些实施例要求X中的至少一个、Y中的至少一个或Z中的至少一个各自存在。另外地,除非另有明确说明,否则诸如短语“X,Y和Z中的至少一个”之类的连接词语言也应该被理解为表示X,Y,Z或其任何组合,包括“X,Y和/或Z”。
下面提供了本文所公开的设备、系统和方法的说明性示例。这些设备、系统和方法的实施例可以包括下面描述的示例中的任何一个或多个以及其任何组合。
示例1包括一种装置,包括:设备,该设备包括:电路,该电路用于通过使用多个进程标识符来允许或拒绝设备到经虚拟化的执行环境的内核空间存储器的写入或从经虚拟化的执行环境的内核空间存储器的读取。
示例2包括任何示例,其中,设备以符合以下各项中的一个或多个的方式与经虚拟化的执行环境通信地耦合:单根IO虚拟化(SR-IOV)、可扩展I/O虚拟化(SIOV)或快速PCI(PCIe)。
示例3包括任何示例,其中:为了通过使用多个进程标识符来控制由设备到经虚拟化的执行环境的内核空间存储器的写入或读取操作,电路用于基于与经虚拟化的执行环境相关联的第一进程标识符和第二进程标识符来执行地址转换。
示例4包括任何示例,其中:第一进程标识符用于对客体地址空间中的地址进行转换;以及第一进程标识符和第二进程标识符用于将地址转换到内核地址空间中。
示例5包括任何示例,其中,第一进程标识符能够由客体操作系统(OS)编程,该客体OS与经虚拟化的执行环境相关联,并且第二进程标识符能够由管理程序或虚拟机管理器(VMM)编程,但不能由经虚拟化的执行环境编程。
示例6包括任何示例,其中,对客体地址空间中的地址进行的转换包括从客体虚拟地址到主机物理地址的转换。
示例7包括任何地址,其中,对内核地址空间中的地址进行转换包括:使用由第一进程标识符标识的转换表进行客体虚拟地址到客体物理地址的转换,以及使用由第二进程标识符标识的转换表进行从客体物理地址或客体IO虚拟地址(IOVA)到主机物理地址的第二转换。
示例8包括任何示例,其中,设备包括以下各项中的一个或多个:网络接口控制器、基础设施处理单元(IPU)、数据处理单元(DPU)、压缩或解压缩卸载电路、加密或解密卸载电路、工作负载管理器、XPU、存储控制器、图形处理单元或存储器控制器。
示例9包括任何示例,包括服务器,其中,服务器通信地耦合到设备,并且用于执行虚拟机管理器(VMM)以分配至少一个进程标识符。
示例10包括任何示例,并且包括一种计算机可读介质,包括存储在其上的指令,该指令如果由一个或多个处理器执行,则使一个或多个处理器进行以下操作:将设备配置为:通过使用多个进程标识符来允许或拒绝到经虚拟化的执行环境的内核空间存储器的写入或从经虚拟化的执行环境的内核空间存储器的读取。
示例11包括任何示例,其中,设备以符合以下各项中的一个或多个的方式与经虚拟化的执行环境通信地耦合:单根IO虚拟化(SR-IOV)、可扩展I/O虚拟化(SIOV)或快速PCI(PCIe)。
示例12包括任何示例,其中,第一进程标识符能够由客体操作系统(OS)编程,该客体OS与经虚拟化的执行环境相关联。
示例13包括任何示例,其中,第二进程标识符能够由管理程序或虚拟机管理器(VMM)编程,但不能由经虚拟化的执行环境编程。
示例14包括任何示例,其中,多个进程标识符指代用于将地址转换为与内核空间存储器相关联的地址的地址转换表。
示例15包括任何示例,并且包括存储在其上的指令,该指令如果由一个或多个处理器执行,则使一个或多个处理器进行以下操作:将设备配置为:通过使用进程标识符来允许或拒绝到经虚拟化的执行环境的用户空间存储器的写入或从经虚拟化的执行环境的用户空间存储器的读取。
示例16包括任何示例,并且包括一种方法,包括:通过使用第一进程标识符来控制设备对被分配给经虚拟化的执行环境的客体地址空间的存储器区域的访问,以及通过使用第一进程标识符和第二进程标识符来控制设备对被分配给经虚拟化的执行环境的内核地址空间的存储器区域的访问。
示例17包括任何示例,其中,第一进程标识符能够由客体操作系统(OS)编程,该客体OS与经虚拟化的执行环境相关联。
示例18包括任何示例,其中,第二进程标识符能够由管理程序或虚拟机管理器(VMM)编程,但不能由经虚拟化的执行环境编程。
示例19包括任何示例,并且包括:通过基于第一进程标识符的地址转换,来控制设备对被分配给客体地址空间的存储器区域的访问。
示例20包括任何示例,并且包括:通过基于第一进程标识符和第二进程标识符的地址转换,来控制设备对被分配给内核地址空间的存储器区域的访问。
Claims (20)
1.一种装置,包括:
设备,所述设备包括:
电路,所述电路用于通过使用多个进程标识符来允许或拒绝所述设备到经虚拟化的执行环境的内核空间存储器的写入或从所述经虚拟化的执行环境的所述内核空间存储器的读取。
2.根据权利要求1所述的装置,其中,所述设备以符合以下各项中的一个或多个的方式与所述经虚拟化的执行环境通信地耦合:单根IO虚拟化(SR-IOV)、可扩展I/O虚拟化(SIOV)或快速PCI(PCIe)。
3.根据权利要求1所述的装置,其中:
为了通过使用多个进程标识符来允许或拒绝所述设备到经虚拟化的执行环境的内核空间存储器的写入或从所述经虚拟化的执行环境的所述内核空间存储器的读取,所述电路用于基于与所述经虚拟化的执行环境相关联的第一进程标识符和第二进程标识符来执行地址转换。
4.根据权利要求3所述的装置,其中:
所述第一进程标识符用于对客体地址空间中的地址进行转换;以及
所述第一进程标识符和所述第二进程标识符用于将地址转换到内核地址空间中。
5.根据权利要求4所述的装置,其中,
所述第一进程标识符能够由客体操作系统(OS)编程,所述客体OS与所述经虚拟化的执行环境相关联,并且
所述第二进程标识符能够由管理程序或虚拟机管理器(VMM)编程,但不能由所述经虚拟化的执行环境编程。
6.根据权利要求4所述的装置,其中,对客体地址空间中的地址进行的所述转换包括从客体虚拟地址到主机物理地址的转换。
7.根据权利要求4所述的装置,其中,将地址转换到所述内核地址空间中包括:使用由所述第一进程标识符标识的转换表进行客体虚拟地址到客体物理地址的转换,以及使用由所述第二进程标识符标识的转换表进行从客体物理地址或客体IO虚拟地址(IOVA)到主机物理地址的第二转换。
8.根据权利要求1所述的装置,其中,所述设备包括以下各项中的一个或多个:网络接口控制器、基础设施处理单元(IPU)、数据处理单元(DPU)、压缩或解压缩卸载电路、加密或解密卸载电路、工作负载管理器、XPU、存储控制器、图形处理单元或存储器控制器。
9.根据权利要求1所述的装置,包括服务器,其中,所述服务器通信地耦合到所述设备,并且用于执行虚拟机管理器(VMM)以分配至少一个进程标识符。
10.一种计算机可读介质,包括存储在其上的指令,所述指令如果由一个或多个处理器执行,则使所述一个或多个处理器进行以下操作:
将设备配置为:通过使用多个进程标识符来允许或拒绝到经虚拟化的执行环境的内核空间存储器的写入或从所述经虚拟化的执行环境的所述内核空间存储器的读取。
11.根据权利要求10所述的计算机可读介质,其中,所述设备以符合以下各项中的一个或多个的方式与所述经虚拟化的执行环境通信地耦合:单根IO虚拟化(SR-IOV)、可扩展I/O虚拟化(SIOV)或快速PCI(PCIe)。
12.根据权利要求10所述的计算机可读介质,其中,第一进程标识符能够由客体操作系统(OS)编程,所述客体OS与所述经虚拟化的执行环境相关联。
13.根据权利要求10所述的计算机可读介质,其中,第二进程标识符能够由管理程序或虚拟机管理器(VMM)编程,但不能由所述经虚拟化的执行环境编程。
14.根据权利要求10所述的计算机可读介质,其中,所述多个进程标识符指代用于将地址转换为与所述内核空间存储器相关联的地址的地址转换表。
15.根据权利要求10所述的计算机可读介质,包括存储在其上的指令,所述指令如果由一个或多个处理器执行,则使所述一个或多个处理器进行以下操作:
将所述设备配置为:通过使用进程标识符来允许或拒绝到所述经虚拟化的执行环境的用户空间存储器的写入或从所述经虚拟化的执行环境的所述用户空间存储器的读取。
16.一种方法,包括:
通过使用第一进程标识符来控制设备对被分配给经虚拟化的执行环境的客体地址空间的存储器区域的访问,以及
通过使用所述第一进程标识符和第二进程标识符来控制所述设备对被分配给所述经虚拟化的执行环境的内核地址空间的存储器区域的访问。
17.根据权利要求16所述的方法,其中,所述第一进程标识符能够由客体操作系统(OS)编程,所述客体OS与所述经虚拟化的执行环境相关联。
18.根据权利要求16所述的方法,其中,所述第二进程标识符能够由管理程序或虚拟机管理器(VMM)编程,但不能由所述经虚拟化的执行环境编程。
19.根据权利要求16所述的方法,包括:
通过基于所述第一进程标识符的地址转换,来控制所述设备对被分配给客体地址空间的存储器区域的访问。
20.根据权利要求16所述的方法,包括:
通过基于所述第一进程标识符和所述第二进程标识符的地址转换,来控制所述设备对被分配给内核地址空间的存储器区域的访问。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/133,531 US20210149587A1 (en) | 2020-12-23 | 2020-12-23 | Technologies to provide access to kernel and user space memory regions |
US17/133,531 | 2020-12-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114662088A true CN114662088A (zh) | 2022-06-24 |
Family
ID=75909966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111392438.5A Pending CN114662088A (zh) | 2020-12-23 | 2021-11-23 | 用于提供对内核和用户空间存储器区域的访问的技术 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210149587A1 (zh) |
CN (1) | CN114662088A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117350916A (zh) * | 2023-12-04 | 2024-01-05 | 沐曦科技(北京)有限公司 | 基于状态机管理gpu内核驱动的方法、电子设备和介质 |
CN118760567A (zh) * | 2024-08-28 | 2024-10-11 | 苏州元脑智能科技有限公司 | 存储器抽屉的状态监控方法及装置 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102484065B1 (ko) | 2021-09-23 | 2023-01-02 | 삼성전자주식회사 | 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템 |
EP4437413A1 (en) * | 2021-11-25 | 2024-10-02 | Intel Corporation | Concept for providing access to offloading circuitry |
CN114968264B (zh) * | 2022-07-28 | 2022-10-25 | 新华三半导体技术有限公司 | 一种网络处理器交互系统、方法、电子设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9892037B2 (en) * | 2014-12-29 | 2018-02-13 | International Business Machines Corporation | Efficient and secure direct storage device sharing in virtualized environments |
WO2018152688A1 (en) * | 2017-02-22 | 2018-08-30 | Intel Corporation | Virtualization of process address space identifiers for scalable virtualization of input/output devices |
US11119939B2 (en) * | 2017-08-21 | 2021-09-14 | Alibaba Group Holding Limited | Methods and systems for memory management of kernel and user spaces |
US11474916B2 (en) * | 2018-08-22 | 2022-10-18 | Intel Corporation | Failover of virtual devices in a scalable input/output (I/O) virtualization (S-IOV) architecture |
-
2020
- 2020-12-23 US US17/133,531 patent/US20210149587A1/en active Pending
-
2021
- 2021-11-23 CN CN202111392438.5A patent/CN114662088A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117350916A (zh) * | 2023-12-04 | 2024-01-05 | 沐曦科技(北京)有限公司 | 基于状态机管理gpu内核驱动的方法、电子设备和介质 |
CN117350916B (zh) * | 2023-12-04 | 2024-02-02 | 沐曦科技(北京)有限公司 | 基于状态机管理gpu内核驱动的方法、电子设备和介质 |
CN118760567A (zh) * | 2024-08-28 | 2024-10-11 | 苏州元脑智能科技有限公司 | 存储器抽屉的状态监控方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20210149587A1 (en) | 2021-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200319812A1 (en) | Intermediary for storage command transfers | |
US11714763B2 (en) | Configuration interface to offload capabilities to a network interface | |
US11941458B2 (en) | Maintaining storage namespace identifiers for live virtualized execution environment migration | |
US20210232528A1 (en) | Configurable device interface | |
EP4002136A1 (en) | Shared memory | |
US20200104275A1 (en) | Shared memory space among devices | |
US20200257517A1 (en) | Firmware update techniques | |
US20220029929A1 (en) | Technologies that provide policy enforcement for resource access | |
US20210149587A1 (en) | Technologies to provide access to kernel and user space memory regions | |
US20190114195A1 (en) | Virtual device composition in a scalable input/output (i/o) virtualization (s-iov) architecture | |
US11422944B2 (en) | Address translation technologies | |
US12026110B2 (en) | Dynamic interrupt provisioning | |
US20210117244A1 (en) | Resource manager access control | |
US20200348973A1 (en) | Performance monitoring and resource management | |
US20210406091A1 (en) | Technologies to offload workload execution | |
US20220222117A1 (en) | Techniques to expose application telemetry in a virtualized execution environment | |
US20220138021A1 (en) | Communications for workloads | |
CN115686558A (zh) | 固件更新 | |
US20220350499A1 (en) | Collaborated page fault handling | |
US20220334963A1 (en) | Memory access tracing | |
EP4030284A1 (en) | Virtual device portability | |
US11900142B2 (en) | Improving memory access handling for nested virtual machines | |
US20210157626A1 (en) | Prioritizing booting of virtual execution environments | |
US20220058062A1 (en) | System resource allocation for code execution | |
US20210149821A1 (en) | Address translation technologies |
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 |