CN114661639A - 地址转换技术 - Google Patents
地址转换技术 Download PDFInfo
- Publication number
- CN114661639A CN114661639A CN202111391082.3A CN202111391082A CN114661639A CN 114661639 A CN114661639 A CN 114661639A CN 202111391082 A CN202111391082 A CN 202111391082A CN 114661639 A CN114661639 A CN 114661639A
- Authority
- CN
- China
- Prior art keywords
- address
- descriptor
- processor
- command
- replacement
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
这里描述的示例涉及一种装置,包括:至少一个处理器,当工作时用于:执行用于将工作描述符提交给设备的命令,其中:工作描述符的提交引起尝试在将工作描述符提交给设备之前执行工作描述符中的地址的替换。在一些示例中,地址包括访客虚拟地址(GVA)并且地址的替换包括用对应于GVA的主机物理地址(HPA)更换GVA。在一些示例中,至少一个处理器用于:如果地址转换可供执行命令的处理器访问,则通过工作描述符中的地址的地址转换来替换工作描述符中的地址。
Description
背景技术
诸如虚拟机和容器之类的虚拟化技术允许应用或最终用户利用计算资源。虚拟化技术提供了一个环境,其允许进程、操作系统、应用或其他软件共享计算资源(例如,处理器、网络、存储装置和存储器),同时允许数据安全和分离。
一些解决方案提供页锁定存储器(pinned memory)的使用,由此虚拟功能(VF)驱动程序将用户数据(GVA)从应用复制到页锁定的物理连续存储器缓冲器(例如,访客物理地址(GPA))并将该GPA指针设置在要传输的分组的DMA描述符中。NIC(例如,经由PCIe连接)可以通过提供GPA并使用主机转换代理(例如,IOMMU)将GPA转换为HPA,来从存储器(例如,动态随机存取存储器(DRAM))复制分组。在所有这些转换之后,存储器访问将被转发到存储器控制器。页锁定存储器引入了从分组缓冲器到页锁定存储器的另一数据复制。页锁定存储器可能依赖于需要用户特权才能使用的内核存储器驱动程序。对于云原生场景,设备描述符环被暴露在用户空间中并由内核旁路软件堆栈(例如,数据平面开发套件(DPDK))管理,并且可能缺乏海量云原生应用所需的灵活性和可扩展性。
附图说明
图1示出了用于处理分组的示例方式。
图2A示出了用于修改出口分组的描述符的系统和过程。
图2B示出了描述符处理的示例。
图3示出了从核心向设备队列发送描述符的示例流程。
图4描绘了示例过程。
图5描绘了示例系统。
图6描绘了示例环境。
具体实施方式
虚拟化技术(例如,用于定向I/O(VT-d)的虚拟化技术)提供基于硬件的虚拟化解决方案以在独立分区(域)中运行多个操作系统(OS)和应用。为了支持多个域,来自端点的入站存储器访问被附加了目标进程地址空间标识符(PASID),以标识请求中嵌入的地址来自指定的访客虚拟地址(GVA)域。输入-输出存储器管理单元(IOMMU)所使用的重映射硬件可以在被其他元素使用(例如,地址解码、高速缓存探听和/或转发到存储器控制器)之前,将此GVA转换为主机物理地址(HPA)。
随着虚拟化和容器技术利用更多域,转换表大小增加并且转换速度影响完成数据访问(例如,从存储器或存储在读取或写入存储器或存储装置)的总体速度和时间。设备上的转换高速缓存(例如,与PCI Express(PCIe)地址转换服务修订版1.1(2009)(或其衍生版本)一致的设备转换后备缓冲器(TLB)或多个设备转换后备缓冲器)可用于在发出直接存储器访问(DMA)请求之前预取地址转换,以减少完成地址转换和数据复制的时间。但是,如果本地设备TLB查找失败,则会引入显著的GVA到HPA地址转换延时。
图1示出了用于处理将使用网络接口控制器(NIC)传输到网络介质的分组的示例方式。在(1)处,标识要传输的分组的描述符被提供给NIC。分组传输描述符包括分组缓冲器指针(GVA),该指针引用要传输的分组的内容,并且在(2)处,NIC使用引用GVA到HPA地址转换的TLB查找来执行GVA到HPA的转换。在此示例中,TLB不包括所提供的GVA的地址转换,并且由NIC进行的GVA到HPA地址转换失败。在(3)处,执行远程转换(例如,缺页(page fault))以使用对远程实体的调用来确定GVA到HPA的地址转换。在(3)处,NIC请求PCIe地址转换服务(ATS),这会由于端点和根联合体之间的地址转换请求/完成过程而引入开销和延时。如果本地转换失败,则ATS可以请求根复合体访问,这会增加分组传输的延时,因为转换是由另一个设备执行的,并且存在事务开销。在(4)处,NIC利用DMA引擎来访问来自与已转换HPA相关联的分组缓冲器的分组。
各种实施例提供了在具有分组的参考源地址的描述符到达NIC之前由中央处理单元(CPU)进行的地址转换。各种实施例拦截传输描述符并且用HPA缓冲器指针更换描述符中的虚拟地址。各种实施例利用可用于设备托管队列的原子写入的直接存储指令。例如,在设备托管队列返回结果之前,来自CPU的原子写操作无法被中断。可以同时发出多个写入(来自多个核心),但从设备队列的角度来看,这些操作是序列化的并且是原子的。使用直接存储指令,驱动程序可以使用CPU发起的对NIC的写入而不是设备发起的对描述符的直接存储器访问(DMA)读取,来将描述符复制到PCIe端点。例如,直接存储指令可以包括架构ENQCMD指令,该指令提供设备托管队列的64字节原子写入。在一些示例中,ENQCMD引起将至少一个工作描述符写入到设备。在一些示例中,工作描述符的长度可以是64字节。在一些示例中,Linux内核支持ENQCMD。
各种实施例利用设备描述符转换代理(DDTA)来处理用于分组传输的描述符并且将描述符中的数据缓冲器指针字段从GVA更换为HPA。DDTA可以利用设备描述符属性表(DDAT)将GVA转换为HPA。在一些示例中,非核心(uncore)可以利用IOMMU在非核心内执行转换。在一些示例中,DDTA是CPU非核心的一部分,或者可以是CPU可访问的卸载引擎。
各种实施例在直接存储指令的执行期间或之后提供地址替换,以在描述符被存储到NIC或其他设备的设备队列或寄存器之前更换描述符中的地址字段。通过设置PCIe事务层分组(TLP)的地址转换(AT)字段,NIC可以发起对分组的系统存储器复制,该分组要从转换后的HPA缓冲器指针所指定的地址传输。各种实施例可以消除或减少远程地址转换的使用和对应延时并且减少对分组传输速率的影响。各种实施例可以消除在PCI Express基本规范中定义的附加地址转换服务(ATS)成本。
各种实施例可以在描述符的处理之前提供地址转换以通过使用描述符处理流水线一次而不是执行描述符处理然后执行转换来减少分组传输延时。各种实施例可以保护物理存储器地址不被暴露给客户或以其他方式暴露给不被允许知道物理存储器地址的实体。各种实施例可以在CPU内部提供地址转换并且在CPU内部提供信任根。
各种实施例提供较低的设备DMA延时来完成,由此设备可以在没有转换延时的情况下向HPA发出DMA。在一些示例中,地址转换可以在描述符入队之前在CPU内部执行。在一些示例中,地址替换可以由CPU执行并由设备驱动程序和/或OS发起。在一些示例中,在运行时期间,用户空间应用可能不知道底层地址转换。在一些示例中,可以在将描述符复制到设备队列之前返回转换失败以提供比设备错误报告更早的报告。
设备的各种实施例可以使用包括PCIe、CXL、DDR存储器接口的任何类型的设备接口耦合到CPU。参见例如外围组件互连(PCI)Express基本规范1.0(2002)及其较早版本、较晚版本和变体。例如,参见Compute Express Link规范修订版2.0、版本0.7(2019)及其较早版本、较晚版本和变体。
尽管这里提供的示例是关于NIC的,但是这些示例可以应用于使用设备接口读取或写入到主机或系统存储器的区域的任何设备。例如,设备可以包括基础设施处理单元(IPU)、数据处理单元(DPU)、智能NIC(smartNIC)、加速器设备(例如,密码引擎)、工作负载管理器(例如,硬件队列管理器(HQM))、图形处理单元、通用图形处理单元(GPGPU))。XPU至少可以指代IPU、DPU、GPU、GPGPU或其他处理单元(例如,加速器),并且在一些情况下还可以指代CPU。IPU或DPU可以包括具有一个或多个可编程或固定功能处理器的网络接口,以执行本可以由CPU执行的操作的卸载。IPU或DPU可以包括一个或多个存储器设备。在一些示例中,IPU或DPU可以执行虚拟交换机操作,管理存储事务(例如,压缩、密码术、虚拟化),并管理在其他IPU、DPU、服务器或设备上执行的操作。
虽然关于传输描述符描述了示例,但是各种实施例也可以应用于分组接收描述符或任何工作描述符。
图2A示出了用于修改出口分组的描述符的系统和过程。该系统可以实现为服务器、服务器机架、多个服务器机架、计算平台或其他。在一些示例中,CPU 210可以包括以下一项或多项:核心、图形处理单元(GPU)、现场可编程门阵列(FPGA)或专用集成电路(ASIC)。在一些示例中,核心可以由等销售或设计。核心可以执行操作系统、驱动程序、应用和/或虚拟化执行环境(VEE)(例如,虚拟机或容器)。在一些示例中,操作系统(OS)可以是 或任何其他操作系统。为简单起见,只显示了两个核心,但可以使用两个以上的核心。
非核心或系统代理可以包括以下一项或多项:存储器控制器、共享高速缓存(例如,最后一级高速缓存(LLC))、高速缓存一致性管理器、算术逻辑单元、浮点单元、核心或处理器互连、缓存/归属代理(Caching/Home Agent,CHA)、或总线或链路控制器。系统代理可以提供以下一项或多项:直接存储器访问(DMA)引擎连接、非缓存一致性主连接、核心之间的数据高速缓存一致性和仲裁高速缓存请求、或高级微控制器总线架构(AMBA)功能。
例如,由CPU 210的任何核心执行的应用可以包括服务、微服务、云原生微服务、工作负载或软件。应用可以以流水线方式执行,由此核心执行应用并且应用提供数据以供另一个核心处理或访问。根据一些实施例,应用可以在一个或多个核心或处理器上执行,并且应用可以分配经受如本文所述的高速缓存线降级的存储器块。
在一些示例中,应用可以由微服务组成,其中,每个微服务在其自己的进程中运行并且使用协议(例如,HTTP资源API、消息服务、远程过程调用(RPC)或gRPC)进行通信。可以使用对这些服务的集中管理来独立部署微服务。管理系统可以用不同的编程语言编写并使用不同的数据存储技术。微服务的特征可以是以下一项或多项:使用细粒度接口(到可独立部署的服务)、多语言编程(例如,用多种语言编写的代码,以获取单一语言无法提供的附加功能和效率)或轻量级容器或虚拟机部署、以及去中心化的持续微服务交付。
任何应用都可以基于以下一项或多项来执行分组处理:数据平面开发套件(DPDK)、存储性能开发套件(SPDK)、OpenDataPlane、网络功能虚拟化(NFV)、软件定义网络(SDN)、演进分组核心(EPC)或5G网络切片。欧洲电信标准协会(ETSI)规范或来自ETSI的开源Mano(OSM)组的开源NFV管理和编排(MANO)中描述了NFV的一些示例实现方式。虚拟网络功能(VNF)可以包括在注入防火墙、域名系统(DNS)、缓存或网络地址转换(NAT)之类的通用可配置硬件上执行的服务链或虚拟化任务序列,并且可以在VEE中运行。VNF可以链接在一起作为服务链。在一些示例中,EPC是至少用于长期演进(LTE)接入的3GPP指定的核心架构。5G网络切片可以在同一物理网络基础设施上提供虚拟化和独立逻辑网络的复用。一些应用可以执行视频处理或媒体转码(例如,更改音频、图像或视频文件的编码)。
虚拟化执行环境(VEE)可以至少包括虚拟机或容器。虚拟机(VM)可以是运行操作系统和一个或多个应用的软件。VM可以由规范、配置文件、虚拟磁盘文件、非易失性随机存取存储器(NVRAM)设置文件和日志文件定义,并由主机计算平台的物理资源支持。VM可以包括安装在软件上的操作系统(OS)或应用环境,VM模仿专用硬件。最终用户在虚拟机上的体验与在专用硬件上的体验相同。称为管理程序的专用软件完全模拟PC客户端或服务器的CPU、存储器、硬盘、网络和其他硬件资源,以使虚拟机能够共享资源。管理程序可以模拟多个相互隔离的虚拟硬件平台,以允许虚拟机在同一底层物理主机上运行Server、VMware ESXi和其他操作系统。
容器可以是应用、配置和依赖项的软件包,因此应用在一个计算环境到另一个计算环境上可靠地运行。容器可以共享安装在服务器平台上的操作系统并作为隔离进程运行。容器可以是一个软件包,其包含软件运行所需的一切,例如系统工具、库和设置。容器不像传统软件程序那样安装,这允许它们与其他软件和操作系统本身隔离。容器的隔离特性提供了几个好处。首先,容器中的软件在不同的环境中的运行将是一样的。例如,包含PHP和MySQL的容器可以在计算机和机器二者上以相同的方式运行。其次,容器提供了额外的安全性,因为软件将不会影响主机操作系统。虽然已安装的应用可能会更改系统设置和修改资源(例如,Windows注册表),但容器只能修改容器内的设置。
在一些示例中,可以使用软件序列来初始化系统以在描述符被复制到设备(例如,NIC 220)之前执行地址字段的地址转换。例如,驱动程序可以由CPU 210安装和执行以初始化设备(例如,NIC 220或其他设备)。在设备队列初始化阶段期间,可以将一个条目或多个条目(例如,分散收集列表(scatter gather list,SGL))添加到命令属性表(CAT)/设备描述符属性表(DDAT)214中。CAT可以定义ENQCMD的布局,它可以根据设备ENQCMD消息格式而变化。如果ENQCMD在一个消息中批量处理多个描述符,则使用CAT来取回每个描述符,并且可以使用DDAT 214来解析和替换描述符的内部字段。在一些示例中,一个或多个条目可以包括从GVA到HPA的地址转换。
在缓冲池初始化期间,可以设置IOMMU内的存储器映射以提供存储器地址转换和IO设备的访问。一个或多个传输请求描述符202可由描述符环204形成并引用。描述符202可用缓冲器指针(例如,GVA)和诸如缓冲器大小、第2层标签、命令(CMD)之类的其他字段形成。描述符中的默认地址被转换(address translated,AT)标志(例如,1位或多位))可以被设置为一个值以指示可以使用这里描述的实施例来应用地址转换。网络设备描述符格式可以至少包括:传输分组缓冲器地址、缓冲器大小、AT标志、第2层(L2)标签(例如,IEEE802.3q)、命令(例如,TSCP Segmentation Offload)。
在(1)处,设备驱动程序在CPU 210上执行并将传输描述符写入到NIC 220中的Tx队列222。在一些示例中,驱动程序可以执行入队命令(例如,ENQCMD)以将描述符写入到NIC220的Tx队列222。在(2)处,入队命令的执行可以调用DDTA 212的使用,以执行Tx描述符中的地址的地址转换。DDTA 212可以从DDAT 214取回地址转换。在一些示例中,DDAT214可以存储在CPU的存储器(例如,SRAM或DRAM)内并且仅对CPU210或特权软件(例如,管理程序)可访问或可见,而对用户的应用不可访问或不可见。
在一些示例中,描述符可以嵌入在入队命令内(例如,在可以存储描述符的参数内)并且可以向设备220发出单个入队命令。在一些示例中,描述符数组指针可以嵌入在入队命令内,并且可以向设备220发出位于另一个DRAM缓冲器中的一批描述符。
如果在DDAT 214中转换不可用(例如,页表未命中),则DDTA 212可以利用转换代理(TA)216和转换代理保护表(ATPT)218来执行虚拟到物理地址的转换。DDAT 214可以请求TA 216执行GVA到HPA的地址转换(例如,页表映射)。地址转换失败可以触发TA 216执行主机侧地址转换查找。例如,ATPT 218可以存储在CPU的SRAM和DRAM中,并且只能由CPU或特权软件(例如,管理程序)可访问或可见,而对用户应用不可访问或不可见。在一些示例中,DDTA 212可以被实现为CPU 210中的微代码或硬件流水线。在一些示例中,管理程序或其他可信系统配置实体或管理员在DDAT 214和ATPT 218内配置地址转换。例如,TA和ATPT的实现方式,请参见PCI Express(PCIe)地址转换服务修订版1.1(2009)。因此,在一些示例中,转换在CPU内部本地完成,其中,在端点(例如,NIC)和根联合体之间没有事务开销。各种示例可以在存储器控制器、直接存储器访问(DMA)引擎、带有CPU或XPU的片上系统、IOMMU中执行地址转换。
在(3)处,如果转换可用,则可以将更新的描述符提供给设备220。这里描述的示例描述了处理不成功的地址转换的方式。在(4)处,设备222可以从使用描述符标识的分组缓冲器复制数据(例如,分组数据)。例如,可以使用DMA引擎将数据复制到端点设备220(NIC)。
图2B示出了在描述符从CPU非核心发出到设备之前用HPA指针替换GVA指针的描述符处理的示例。在分支250中,地址转换是按每个描述符处理的。在分支260中,尝试对描述符中的一批描述符进行地址转换,并尝试对该批中的每个描述符执行地址转换。
图3显示了从CPU核心向NIC设备队列发送单个描述符的示例流程。例如,对于描述符写入,CPU可以执行各种动作。在301,可以针对目标队列访问DDAT以获得DMA数据缓冲器指针的位置(地址)和长度(大小)。为了支持在一个描述符内包括多个缓冲器的分散收集列表(SGL),应在DDAT中添加多个条目以标识所有缓冲器指针/大小,并且后续转换将应用于所有缓冲器指针。未命中可以指示该设备写入(描述符)不需要转换。
在302处,可以使用来自DDAT的返回偏移量来解析附加的描述符,并且可以取回缓冲器指针和长度。在303,可以通过DMA存储器管理将缓冲器指针从GVA转换为HPA。成功的转换可以指示缓冲器存储在具有指定大小的连续HPA缓冲器中。失败的转换可以指示GVA是无效地址,并且描述符未发送到设备队列,并且指令入队的执行可以直接向驱动程序返回错误。如果转换成功,则用HPA指针的替换地址字段(代替GVA指针)修改描述符,并设置地址被转换(AT)以指示在描述符内执行了地址转换(例如,AT=1)。如果转换无效,则可以将描述符发送到设备(例如,AT=0),并且设备可以使用远程转换服务执行标准转换。如果GVA缓冲器未映射到连续的HPA,则可以将转换标记为无效。在304,描述符可以被发送到设备队列。在地址转换之后,设备可以访问由描述符中的地址标识的缓冲器中的数据或内容。
图4描绘了示例过程。在402,处理器可以被配置为支持与工作提交命令的执行相关的地址转换。例如,工作提交命令可以引起向设备提交工作描述符,其中工作描述符指的是设备要执行的作业(job)。这里描述了设备的各种示例。在404,响应于执行工作提交命令的请求,过程可以进行到406。在406,确定是否可以执行地址转换。地址转换可以在访客虚拟地址(GVA)到主机物理地址(HPA)之间进行。如果在执行工作提交命令的处理器的存储器中存在地址转换,则该过程可以进行到408。如果在处理器的存储器中不存在地址转换,则该过程可以进行到420。在408,可以执行地址转换。例如,工作描述符中的GVA地址可以替换为其转换后的HPA。在一些示例中,可以更新描述符以指示提供替换地址。在408,可以向设备提供具有其替换地址和替换地址指示的描述符。此后,设备可以访问来自HPA的描述符所引用的数据。
在420处,可以将具有未修改地址的描述符提供给设备。在一些示例中,可以更新描述符以指示没有提供任何替换地址。设备可以请求从GVA到HPA的地址转换。此后,设备可以访问来自HPA的描述符所引用的数据。
图5描绘了示例系统。该系统可以使用这里描述的实施例来提供与向设备进行提交工作相关的工作描述符中的地址转换。系统500包括处理器510,其为系统500提供处理、操作管理和指令的执行。处理器510可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核心或为系统500提供处理的其他处理硬件或处理器的组合。处理器510控制系统500的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等,或这些设备的组合。
在一个示例中,系统500包括耦合到处理器510的接口512,接口512可以代表使用较高带宽连接的系统组件(例如,存储器子系统520或图形接口组件540或加速器542)高吞吐量接口或较高速的接口。接口512代表接口电路,其可以是独立组件或被集成到处理器管芯上。在存在的情况下,图形接口540与图形组件接合以向系统500的用户提供视觉显示。在一个示例中,图形接口540可以驱动向用户提供输出的高清晰度(HD)显示器。高清晰度可以指代具有大约100PPI(每英寸像素)或更高的像素密度的显示器,并且可以包括诸如全高清(例如,1080p)、视网膜显示器、4K(超高清或UHD)或其他格式之类的格式。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口540基于存储在存储器530中的数据或基于处理器510所执行的操作或两者来生成显示。在一个示例中,图形接口540基于存储在存储器530中的数据或基于处理器510执行的操作或两者来生成显示。
加速器542可以是可由处理器510访问或使用的固定功能和/或可编程卸载引擎。例如,加速器542中的一个加速器可以提供压缩(DC)功能、诸如公钥加密(PKE)、密码、散列/认证功能、解密之类的密码服务、或其他功能或服务。在一些实施例中,另外或替代地,加速器542中的一个加速器提供如本文所述的字段选择控制器(field select controller)功能。在一些情况下,加速器542可以集成到CPU插槽中(例如,连接到包括CPU并提供与CPU的电接口的主板或电路板的连接器)。例如,加速器542可以包括单核或多核处理器、图形处理单元、逻辑执行单元单级或多级高速缓存、可用于独立执行程序或线程的功能单元、专用集成电路(ASIC)、神经网络处理器(NNP)、可编程控制逻辑和可编程处理元件,例如现场可编程门阵列(FPGA)。加速器542可以提供多个神经网络、CPU、处理器核心、通用图形处理单元、或者可以使图形处理单元可供人工智能(AI)或机器学习(ML)模型使用。例如,AI模型可以使用或包括以下各项中的任何一个或组合:强化学习方案、Q-learning方案、deep-Q学习或异步优势Actor-Critic(A3C)、组合神经网络、循环组合神经网络、或其他AI或ML模型。多个神经网络、处理器核心或图形处理单元可供AI或ML模型使用。
存储器子系统520代表系统500的主存储器并且为要由处理器510执行的代码或要在执行例程时使用的数据值提供存储。存储器子系统520可以包括一个或多个存储器设备530,例如只读存储器(ROM)、闪存、一种或多种随机存取存储器(RAM)(例如,DRAM)或其他存储器设备,或这些设备的组合。存储器530存储和托管操作系统(OS)532等以提供用于在系统500中执行指令的软件平台。另外,应用534可以在来自存储器530的OS 532的软件平台上执行。应用534代表使其自己的操作逻辑执行一项或多项功能的程序。进程536代表向OS532或一个或多个应用534或组合提供辅助功能的代理或例程。OS 532、应用534和进程536提供软件逻辑来为系统500提供功能。在一个示例中,存储器子系统520包括存储器控制器522,其是用于生成命令并向存储器530发出命令的存储器控制器。可以理解的是,存储器控制器522可以是处理器510的物理部分或接口512的物理部分。例如,存储器控制器522可以是集成存储器控制器,集成到具有处理器510的电路上。
虽然没有具体示出,但是可以理解,系统500可以在设备之间包括一个或多个总线或总线系统,例如存储器总线、图形总线、接口总线等。总线或其他信号线可以将组件通信或电气地耦合在一起,或通信且电气地耦合组件。总线可以包括物理通信线路、点对点连接、桥接器、适配器、控制器或其他电路或组合。总线可以包括例如系统总线、外围组件互连(PCI)总线、超传输或行业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气和电子工程师协会(IEEE)标准1394总线(Firewire)中的一个或多个。
在一个示例中,系统500包括接口514,其可以耦合到接口512。在一个示例中,接口514表示接口电路,其可以包括独立组件和集成电路。在一个示例中,多个用户接口组件或外围组件或两者耦合到接口514。网络接口550为系统500提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口550可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)或其他基于有线或无线标准或专有的接口。网络接口550可以将数据传输到位于同一数据中心或机架中的设备或者远程设备,这可以包括发送存储在存储器中的数据。网络接口550可以从远程设备接收数据,这可以包括将接收到的数据存储到存储器中。各种实施例可以与网络接口550、处理器510和存储器子系统520结合使用。
在一个示例中,系统500包括一个或多个输入/输出(I/O)接口560。I/O接口560可以包括一个或多个接口组件,用户通过这些接口组件与系统500进行交互(例如,音频、字母数字、触觉/触摸或其他接合)。外围接口570可以包括上面没有具体提到的任何硬件接口。外围设备通常是指从属地连接到系统500的设备。从属连接是其中系统500提供软件平台或硬件平台或两者(操作在其上执行)并且用户与之交互的连接。
在一个示例中,系统500包括以非易失性方式存储数据的存储子系统580。在一个示例中,在某些系统实施方式中,存储装置580的至少某些组件可以与存储器子系统520的组件重叠。存储子系统580包括存储设备584,其可以是或包括用于以非易失性方式存储大量数据的任何常规介质,例如一个或多个基于磁性、固态或光学的盘,或组合。存储装置584以持久状态保存代码或指令和数据586(例如,尽管系统500的电源中断,但仍保留该值)。存储装置584一般可以被认为是“存储器”,尽管存储器530通常是向处理器510提供指令的执行或操作存储器。存储装置584是非易失性的,而存储器530可以包括易失性存储器(例如,如果系统500的电源中断,则数据的值或状态是不确定的)。在一个示例中,存储子系统580包括与存储装置584接合的控制器582。在一个示例中,控制器582是接口514或处理器510的物理部分或者可以包括处理器510和接口514两者中的电路或逻辑。
易失性存储器是在设备的电源中断时其状态(以及因此存储在其中的数据)不确定的存储器。动态易失性存储器需要刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器),或某个变体,例如同步DRAM(SDRAM)。易失性存储器的另一个示例包括高速缓存或静态随机存取存储器(SRAM)。此处描述的存储器子系统可以与多种存储器技术兼容,例如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(Wide Input/output version 2,JESD229-2最初由JEDEC于2014年8月发布、HBM(High BandwidthMemory,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(自旋轨道转移)的器件、基于晶闸管的存储器件,或上述任何一种的组合,或其他存储器。
电源(未描绘)向系统500的组件提供电力。更具体地,电源通常与系统500中的一个或多个电源接合以向系统500的组件提供电力。在一个示例中,供电装置包括一个AC到DC(交流电到直流电)适配器,以插入壁式插座。这种交流电可以是可再生能源(例如,太阳能)电源。在一个示例中,电源包括DC电源,例如外部AC到DC转换器。在一个示例中,电源或供电装置包括无线充电硬件以通过靠近充电场进行充电。在一个示例中,电源可以包括内部电池、交流电供电装置、基于运动的供电装置、太阳能供电装置或燃料电池电源。
在一个示例中,系统500可以使用处理器、存储器、存储装置、网络接口和其他组件的互连计算托架来实现。可以使用高速互连,例如:以太网(IEEE 802.3)、远程直接存储器访问(RDMA)、InfiniBand、互联网广域RDMA协议(iWARP)、传输控制协议(TCP)、用户数据报协议(UDP)、快速UDP因特网连接(QUIC)、RDMA over Converged Ethernet(RoCE)、外围组件快速互连(PCIe)、英特尔QuickPath Interconnect(QPI)、英特尔Ultra PathInterconnect(UPI)、英特尔On-Chip System Fabric(IOSF)、Omnipath、Compute ExpressLink(CXL)、HyperTransport、高速结构、NVLink、高级微控制器总线架构(AMBA)互连、OpenCAPI、Gen-Z、用于加速器的高速缓存一致性互连(CCIX)、Infinity Fabric(IF)、3GPP长期演进(LTE)(4G)、3GPP 5G及其变体。可以使用NVMe over Fabrics(NVMe-oF)或NVMe等协议将数据复制或存储到虚拟化存储节点。
本文的实施例可以在各种类型的计算和网络设备中实现,例如交换机、路由器、机架和刀片服务器,例如在数据中心和/或服务器群环境中采用的那些。数据中心和服务器群中使用的服务器包括阵列服务器配置,例如基于机架的服务器或刀片服务器。这些服务器通过各种网络规定在通信中相互连接,例如将服务器组划分为局域网(LAN),并在LAN之间使用适当的交换和路由设施以形成私有内联网。例如,云托管设施通常可能采用具有大量服务器的大型数据中心。刀片包括一个单独的计算平台,该平台被配置为执行服务器类型的功能,即“卡上服务器”。因此,每个刀片包括传统服务器通用的组件,包括提供用于耦合适当的集成电路(IC)和安装到板上的其他组件的内部布线(例如,总线)的主印刷电路板(主板)。
图6描绘了环境600,其包括多个计算机架602、一个或多个包括机架顶部(ToR)交换机604、pod管理器606和多个池化系统抽屉。可以在机架之间使用各种实施例以在与向设备提交工作有关的工作描述符中提供地址转换。通常,池化系统抽屉可以包括池化计算抽屉和池化存储抽屉。可选地,池化系统抽屉还可以包括池化存储器抽屉和池化输入/输出(I/O)抽屉。在所示实施例中,池化系统抽屉包括池化计算机抽屉608、以及ATOMTM池化计算抽屉610、池化存储抽屉612、池化存储器抽屉614和池化I/O抽屉616。任何池化系统抽屉都经由高速链路618连接到ToR交换机604,高速链路618例如40吉比特/秒(Gb/s)或100Gb/s以太网链路或100+Gb/s硅光子学(SiPh)光链路,或更高的速度。
多个计算机架602可以经由它们的ToR交换机604互连(例如,到pod级交换机或数据中心交换机),如到网络620的连接所示。在一些实施例中,计算机架组602经由pod管理器606作为不同的pod管理。在一个实施例中,单个pod管理器用于管理pod中的所有机架。可替代地,分布式pod管理器可用于pod管理操作。
环境600还包括用于管理环境的各个方面的管理接口622。这包括管理机架配置,其中,对应的参数存储为机架配置数据624。
在一些示例中,本文描述的实施例可以结合基站(例如,3G、4G、5G等)、宏基站(例如,5G网络)、微微站(例如,IEEE 802.11兼容接入点)、纳米站(例如,用于点对多点(PtMP)应用)、内部部署数据中心、外部部署数据中心、边缘网络元素、雾网络元素和/或混合数据中心(例如,使用虚拟化、云和软件定义的网络跨物理数据中心和分布式多云环境交付应用工作负载的数据中心)来使用。
例如,各种实施例可用于有线或无线协议(例如,3GPP长期演进(LTE)(4G)或3GPP5G)、内部部署数据中心、外部部署数据中心、基站设备、传感器数据发送器或接收器设备(例如,用于自动驾驶汽车或增强现实应用)、端点设备、服务器、路由器、边缘网络元素(计算元素,其被提供为在物理上比数据中心更靠近基站或网络接入点)、雾网络元素(计算元素,其被提供为在物理上比数据中心更靠近基站或网络接入点,但距离边缘网络更远)和/或混合数据中心(例如,使用虚拟化、云和软件定义网络跨物理数据中心和分布式多云环境来交付应用工作负载的数据中心)。网络或计算元件可用于局域网(LAN)、城域网(MAN)、使用光纤链路连接设备的网络、校园网(CAN)或广域网(WAN)。
可以使用硬件元件、软件元素或两者的组合来实现各种示例。在一些示例中,硬件元件可以包括设备、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。在一些示例中,软件元素可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定是否使用硬件元件和/或软件元素来实现示例可以根据任何数量的因素而变化,例如所期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其他设计或性能约束,如给定实施方式所期望的。处理器可以是硬件状态机、数字控制逻辑、中央处理单元或任何硬件、固件和/或软件元素中的一个或多个组合。
一些示例可以使用制品或至少一种计算机可读介质来实现或实现为制品或至少一种计算机可读介质。计算机可读介质可以包括用于存储逻辑的非暂时性存储介质。在一些示例中,非暂时性存储介质可以包括一种或多种类型的能够存储电子数据的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器,等等。在一些示例中,逻辑可以包括各种软件元素,例如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、程序、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。
根据一些示例,计算机可读介质可以包括非暂时性存储介质以存储或维护指令,所述指令当由机器、计算设备或系统执行时,使机器、计算设备或系统根据所描述的示例执行方法和/或操作。指令可以包括任何合适类型的代码,例如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。指令可以根据预定义的计算机语言、方式或句法来实现,以用于指示机器、计算设备或系统执行特定功能。指令可以使用任何合适的高级、低级、面向对象、可视、编译和/或解释的编程语言来实现。
至少一个示例的一个或多个方面可以通过存储在至少一种机器可读介质上的代表性指令来实现,该指令代表处理器内的各种逻辑,当机器、计算设备或系统读取这些逻辑时,使机器、计算设备或系统来制造逻辑来执行这里描述的技术。这种被称为“IP核”的表示可以存储在有形的机器可读介质上,并被提供给各种客户或制造设施,以加载到实际制造逻辑或处理器的制造机器中。
短语“一个示例”或“示例”的出现不一定都是指相同的示例或实施例。在此描述的任何方面都可以与在此描述的任何其他方面或类似方面组合,而不管这些方面是否是关于相同的图或元素描述的。附图中描述的块功能的划分、省略或包含并不意味着用于实现这些功能的硬件组件、电路、软件和/或元件必然会在实施例中被划分、省略或包含。
一些示例可以使用表述“耦合”和“连接”连同它们的派生词来描述。这些术语不一定旨在作为彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可以指示两个或更多个元件彼此直接物理或电接触。然而,术语“耦合”也可能意味着两个或更多个元素彼此不直接接触,但仍然相互合作或相互作用。
术语“第一”、“第二”等在本文中不表示任何顺序、数量或重要性,而是用于将一个元素与另一个元素区分开来。本文中的术语“一”和“一个”不表示数量的限制,而是表示存在至少一个所引用的项目。此处使用的关于信号的术语“断言”表示信号的状态,其中信号是活动的,并且可以通过将逻辑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包括任何示例,其中所述地址包括访客虚拟地址(GVA)并且所述替换地址包括作为所述GVA的转换的主机物理地址(HPA)。
示例3包括任何示例,并且包括:确定所述描述符中地址的地址转换是否可供执行该命令的处理器访问,其中:通过执行所述描述符中的地址的替换并将具有替换地址的描述符提供给设备来修改所述命令的执行包括:基于描述符中的地址的地址转换可供所述处理器访问来执行所述描述符中的地址的替换。
示例4包括任何示例,并且包括:基于所述描述符中的地址的地址转换不可供所述处理器访问,向设备提供所述描述符,而不替换所述描述符中的地址。
示例5包括任何示例,其中命令引起将至少一个工作描述符写入到所述设备。
示例6包括任何示例,其中命令包括ENQCMD。
示例7包括任何示例,其中该设备包括以下一项或多项:网络接口控制器、加速器、基础设施处理单元(IPU)、数据处理单元(DPU)、智能NIC、加速器设备、工作负载管理器、图形处理单元、通用图形处理单元(GPGPU)。
示例8包括任何示例,其中描述符包括是否执行了地址替换的指示符以及以下一项或多项:地址、数据长度和与分组相关的信息。
示例9包括任何示例,并且包括计算机可读介质,包括存储在其上的指令,其如果由至少一个处理器执行,则使所述至少一个处理器:执行用于将工作描述符提交给设备的命令,其中:提交所述工作描述符引起尝试在将工作描述符提交给所述设备之前执行所述工作描述符中的地址的替换。
示例10包括任何示例,其中地址包括访客虚拟地址(GVA),并且地址的替换包括用对应于所述GVA的主机物理地址(HPA)更换所述GVA。
示例11包括任何示例,并且包括存储在其上的指令,其如果由至少一个处理器执行,则使所述至少一个处理器:如果所述地址转换可供执行所述命令的处理器访问,则利用所述工作描述符中的所述地址的地址转换来替换所述工作描述符中的地址。
示例12包括任何示例,并且包括存储在其上的指令,其如果由至少一个处理器执行,则使所述至少一个处理器:基于所述工作描述符中地址的地址转换不可供执行所述命令的处理器访问,将所述工作描述符提交给设备,而不替换描述符中的地址。
示例13包括任何示例,其中命令包括ENQCMD。
示例14包括任何示例,其中该设备包括以下一项或多项:网络接口控制器、加速器、基础设施处理单元(IPU)、数据处理单元(DPU)、智能NIC、加速器设备、工作负载管理器、图形处理单元、通用图形处理单元(GPGPU)。
示例15包括任何示例,其中工作描述符包括是否执行了地址替换的指示符以及以下一项或多项:地址、数据长度和与分组相关的信息。
示例16包括任何示例,并且包括一种装置,该装置包括:至少一个处理器,在运行时用于:执行用于将工作描述符提交给设备的命令,其中:提交所述工作描述符引起尝试在将所述工作描述符提交给所述设备之前执行所述工作描述符中的地址的替换。
示例17包括任何示例,其中地址包括访客虚拟地址(GVA)并且所述地址的替换包括用对应于所述GVA的主机物理地址(HPA)替换所述GVA。
示例18包括任何示例,其中至少一个处理器用于:如果地址转换可供执行所述命令的处理器访问,则利用所述工作描述符中的地址的地址转换来替换所述工作描述符中的地址。
示例19包括任何示例,其中所述至少一个处理器用于:基于所述工作描述符中的地址的地址转换不可供执行命令的处理器访问,将所述工作描述符提交给所述设备,而不替换描述符中的地址。
示例20包括任何示例,并且包括通信耦合到所述至少一个处理器的设备,其中所述设备包括以下一项或多项:网络接口控制器、加速器、基础设施处理单元(IPU)、数据处理单元(DPU)、智能NIC、加速器设备、工作负载管理器、图形处理单元、通用图形处理单元(GPGPU)。
示例21包括任何示例,并且包括服务器、服务器机架或数据中心,其中所述服务器、服务器机架或数据中心中的一个或多个用于执行引起所述命令的执行的应用或微服务。
Claims (21)
1.一种方法,包括:
接收用于将描述符复制到设备的命令,以及
通过执行所述描述符中的地址的替换并且将具有替换地址的所述描述符提供给所述设备,来修改所述命令的执行。
2.如权利要求1所述的方法,其中,所述地址包括访客虚拟地址(GVA),并且所述替换地址包括作为所述GVA的转换的主机物理地址(HPA)。
3.如权利要求1所述的方法,包括:
确定所述描述符中的所述地址的地址转换是否可供执行了所述命令的处理器访问,其中:
通过执行所述描述符中的地址的替换并且将具有所述替换地址的所述描述符提供给所述设备来修改所述命令的执行包括:基于所述描述符中的所述地址的地址转换可供所述处理器访问来执行所述描述符中的所述地址的替换。
4.如权利要求3所述的方法,包括:
基于所述描述符中的所述地址的地址转换不可供所述处理器访问,来将所述描述符提供给所述设备,而不替换所述描述符中的所述地址。
5.如权利要求1所述的方法,其中,所述命令引起将至少一个工作描述符写入到所述设备。
6.如权利要求1所述的方法,其中,所述命令包括ENQCMD。
7.如权利要求1所述的方法,其中,所述设备包括以下各项中的一项或多项:网络接口控制器、加速器、基础设施处理单元(IPU)、数据处理单元(DPU)、智能NIC、加速器设备、工作负载管理器、图形处理单元、通用图形处理单元(GPGPU)。
8.如权利要求1所述的方法,其中,所述描述符包括:是否执行了地址替换的指示符以及以下各项中的一项或多项:地址、数据长度、以及与分组相关的信息。
9.一种计算机可读介质,包括存储在其上的指令,所述指令如果由至少一个处理器执行,则使所述至少一个处理器:
执行用于将工作描述符提交给设备的命令,其中:
提交所述工作描述符引起尝试在将所述工作描述符提交给所述设备之前执行所述工作描述符中的地址的替换。
10.如权利要求9所述的计算机可读介质,其中,所述地址包括访客虚拟地址(GVA),并且地址的替换包括用与所述GVA相对应的主机物理地址(HPA)更换所述GVA。
11.如权利要求9所述的计算机可读介质,包括存储在其上的指令,所述指令如果由至少一个处理器执行,则使所述至少一个处理器:
如果所述工作描述符中的所述地址的地址转换可供执行所述命令的处理器访问,则利用所述地址转换来替换所述工作描述符中的所述地址。
12.如权利要求9所述的计算机可读介质,包括存储在其上的指令,所述指令如果由至少一个处理器执行,则使所述至少一个处理器:
基于所述工作描述符中的所述地址的地址转换不可供执行所述命令的处理器访问,来将所述工作描述符提交给所述设备,而不替换所述工作描述符中的所述地址。
13.如权利要求9所述的计算机可读介质,其中,所述命令包括ENQCMD。
14.如权利要求9所述的计算机可读介质,其中,所述设备包括以下各项中的一项或多项:网络接口控制器、加速器、基础设施处理单元(IPU)、数据处理单元(DPU)、智能NIC、加速器设备、工作负载管理器、图形处理单元,通用图形处理单元(GPGPU)。
15.如权利要求9所述的计算机可读介质,其中,所述工作描述符包括:是否执行了地址替换的指示符以及以下各项中的一项或多项:地址、数据长度、以及与分组相关的信息。
16.一种装置,包括:
至少一个处理器,其在运行时用于:
执行用于将工作描述符提交给设备的命令,其中:
提交所述工作描述符引起尝试在将所述工作描述符提交给所述设备之前执行所述工作描述符中的地址的替换。
17.如权利要求16所述的装置,其中,所述地址包括访客虚拟地址(GVA),并且地址的替换包括用与所述GVA相对应的主机物理地址(HPA)更换所述GVA。
18.如权利要求16所述的装置,其中,所述至少一个处理器用于:
如果所述工作描述符中的所述地址的地址转换可供执行所述命令的处理器访问,则利用所述地址转换来替换所述工作描述符中的所述地址。
19.如权利要求16所述的装置,其中,所述至少一个处理器用于:
基于所述工作描述符中的所述地址的地址转换不可供执行所述命令的处理器访问,来将所述工作描述符提交给所述设备,而不替换所述工作描述符中的所述地址。
20.如权利要求16所述的装置,包括通信地耦合到所述至少一个处理器的所述设备,其中,所述设备包括以下各项中的一项或多项:网络接口控制器、加速器、基础设施处理单元(IPU)、数据处理单元(DPU)、智能NIC、加速器设备、工作负载管理器、图形处理单元、通用图形处理单元(GPGPU)。
21.如权利要求16所述的装置,包括服务器、服务器机架或数据中心,其中,所述服务器、服务器机架或数据中心中的一个或多个用于执行引起所述命令的执行的应用或微服务。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/133,503 US20210149821A1 (en) | 2020-12-23 | 2020-12-23 | Address translation technologies |
US17/133,503 | 2020-12-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114661639A true CN114661639A (zh) | 2022-06-24 |
Family
ID=75909998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111391082.3A Pending CN114661639A (zh) | 2020-12-23 | 2021-11-23 | 地址转换技术 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210149821A1 (zh) |
CN (1) | CN114661639A (zh) |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI459763B (zh) * | 2011-03-23 | 2014-11-01 | Mediatek Inc | 切割網路封包之卸載方法及其裝置 |
US10394751B2 (en) * | 2013-11-06 | 2019-08-27 | Solarflare Communications, Inc. | Programmed input/output mode |
US9678717B2 (en) * | 2014-11-14 | 2017-06-13 | Cavium, Inc. | Distributing resource requests in a computing system |
US10216533B2 (en) * | 2015-10-01 | 2019-02-26 | Altera Corporation | Efficient virtual I/O address translation |
US11099880B2 (en) * | 2017-02-22 | 2021-08-24 | Intel Corporation | Virtualization of process address space identifiers for scalable virtualization of input/output devices |
US11573870B2 (en) * | 2018-08-22 | 2023-02-07 | Intel Corporation | Zero copy host interface in a scalable input/output (I/O) virtualization (S-IOV) architecture |
US10761996B2 (en) * | 2018-09-28 | 2020-09-01 | Intel Corporation | Apparatus and method for secure memory access using trust domains |
US10789110B2 (en) * | 2018-09-28 | 2020-09-29 | Apple Inc. | Methods and apparatus for correcting out-of-order data transactions between processors |
WO2020236275A1 (en) * | 2019-05-23 | 2020-11-26 | Cray Inc. | System and method for facilitating dynamic command management in a network interface controller (nic) |
JP2021043708A (ja) * | 2019-09-11 | 2021-03-18 | キオクシア株式会社 | メモリシステム |
US20200177660A1 (en) * | 2020-02-03 | 2020-06-04 | Intel Corporation | Offload of streaming protocol packet formation |
-
2020
- 2020-12-23 US US17/133,503 patent/US20210149821A1/en active Pending
-
2021
- 2021-11-23 CN CN202111391082.3A patent/CN114661639A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210149821A1 (en) | 2021-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11941458B2 (en) | Maintaining storage namespace identifiers for live virtualized execution environment migration | |
US20200319812A1 (en) | Intermediary for storage command transfers | |
EP3706394B1 (en) | Writes to multiple memory destinations | |
US20200104275A1 (en) | Shared memory space among devices | |
US11714763B2 (en) | Configuration interface to offload capabilities to a network interface | |
US11025544B2 (en) | Network interface for data transport in heterogeneous computing environments | |
US11422944B2 (en) | Address translation technologies | |
US20200379922A1 (en) | Adaptive routing for pooled and tiered data architectures | |
US12066939B2 (en) | Cache line demote infrastructure for multi-processor pipelines | |
US12026110B2 (en) | Dynamic interrupt provisioning | |
US20210004338A1 (en) | Pasid based routing extension for scalable iov systems | |
US20210209035A1 (en) | Memory accesses using a memory hub | |
US11803643B2 (en) | Boot code load system | |
US20220138021A1 (en) | Communications for workloads | |
US20210014324A1 (en) | Cache and memory content management | |
US20210149587A1 (en) | Technologies to provide access to kernel and user space memory regions | |
US20220197805A1 (en) | Page fault management technologies | |
US11861219B2 (en) | Buffer to reduce write amplification of misaligned write operations | |
US20210149821A1 (en) | Address translation technologies | |
US20220350499A1 (en) | Collaborated page fault handling |
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 |