CN108388528B - 基于硬件的虚拟机通信 - Google Patents

基于硬件的虚拟机通信 Download PDF

Info

Publication number
CN108388528B
CN108388528B CN201810112242.8A CN201810112242A CN108388528B CN 108388528 B CN108388528 B CN 108388528B CN 201810112242 A CN201810112242 A CN 201810112242A CN 108388528 B CN108388528 B CN 108388528B
Authority
CN
China
Prior art keywords
dma
interface device
data transfer
processor
descriptor
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.)
Active
Application number
CN201810112242.8A
Other languages
English (en)
Other versions
CN108388528A (zh
Inventor
S·J·艾迪瑞苏利亚
G·R·艾迪瑞苏利亚
R·C·杰普森
P·库玛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN108388528A publication Critical patent/CN108388528A/zh
Application granted granted Critical
Publication of CN108388528B publication Critical patent/CN108388528B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • 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
    • G06F9/546Message passing systems or structures, e.g. 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • 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
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Systems (AREA)

Abstract

本申请公开了基于硬件的虚拟机通信。一种处理系统,包括:处理器;以及VM-VM通信加速器电路,包括:第一接口设备,用于支持第一VM的直接存储器访问(DMA)数据传输;寄存器,用于存储对与第一接口设备相关联的主物理功能(PF)的引用,其中第一主PF与指定第一VM对于第二VM的访问许可的访问控制表(ACT)相关联;以及直接存储器访问(DMA)描述符处理电路,用于:使用与第一主PF相关联的工作队列处理引用对第一VM与第二VM之间的DMA数据传输的请求的DMA描述符;以及使用第一接口设备基于访问许可执行DMA数据传输。

Description

基于硬件的虚拟机通信
技术领域
本公开涉及计算设备虚拟化,并且更具体地涉及提供基于硬件的虚拟机(VM)-VM通信。
背景
计算设备可以包括在一个或多个处理器中(诸如中央处理单元(CPU))的用于执行指令的一个或多个处理核,以及在一个或多个处理核上用于存储与执行任务(包括用户应用以及诸如操作系统的内核的系统应用)相关联的指令以及数据的存储器设备(诸如随机存取存储器(RAM))。每个应用程序的指令可以使用虚拟存储器地址空间中的虚拟地址(或线性地址)来访问存储器。存储器管理单元可以使用页表将虚拟地址转换为存储器的物理地址。
附图说明
通过下文给出的具体实施方式并通过本公开各种实施例的附图,将更完整地理解本公开。然而,不应当认为这些附图将本公开限制为特定实施例,而是这些附图仅用于说明和理解。
图1示出根据本公开的实施例的支持在不同主机上运行的VM之间的基于硬件的数据通信的系统。
图2示出根据本公开的实施例的VM-VM通信加速器电路。
图3示出根据本公开的实施例的包括用于存储VM之间的访问许可的条目的访问控制表。
图4是根据本公开的另一实施例的用于使用PCI设备执行VM-VM数据通信的方法的框图。
图5A是示出用于包括异构核的处理器的微架构的框图,在该处理器中可以使用本公开的一个实施例。
图5B是示出根据本公开的至少一个实施例实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。
图6示出根据本公开的一个实施例的用于包括逻辑的处理器的微架构的框图。
图7是示出系统的框图,在该系统中可以使用本公开的实施例。
图8是系统的框图,在该系统中本公开的实施例可以操作。
图9是系统的框图,在该系统中本公开的实施例可以操作。
图10是根据本公开的实施例的芯片上系统(SoC)的框图。
图11是根据本公开的SoC设计的实施例的框图。
图12示出计算机系统的一个实施例的框图。
具体实施方式
计算机硬件虚拟化提供虚拟机之间的隔离。例如,主机机器(称为主机)的处理器可以执行可以支持多个虚拟机(VM)的虚拟机监视器(VMM)。每个VM可以包括客户机操作系统并且运行客户机软件应用。VMM可以采用辅助页表(称为扩展页表(EPT))将客户机操作系统使用的客户机物理地址(GPA)转换为主机物理地址(称为物理地址)以用于访问主机机器的处理器使用的存储器。此外,VMM可以在多个主机上运行,并且不同主机上的VMM中的每一个也可以支持VM。每个VM是与在相同主机或不同主机上运行的其他VM隔离的执行环境。
虽然虚拟化提供的隔离促进确保软件应用的执行的安全,但是在单个主机上或在多个主机上的VM通常会需要彼此通信(例如,以执行数据共享)。典型地,响应于来自第一VM的与第二VM通信的请求,VMM可以拦截请求并仿真两个VM之间的通信信道——称为网络虚拟化的过程。VMM对通信信道的仿真通常是缓慢且低效的。尽管网络虚拟化技术中存在各种进步,但是使用网络虚拟化的数据通信的速度仍然比非虚拟平台上的使用进程间通信的那些通信信道更慢。
本公开的实施例提供绕过VMM的基于硬件的VM-VM通信解决方案。基于硬件的解决方案利用不同风格的外围组件互连(PCI)协议(在本申请中称为PCIe,包括例如,PCI SR-IOV和PCI快速协议)来提供VM-VM通信,因此显著地改善在单个主机上或在多个主机上的VM之间的数据通信的速度。
本公开的实施例采用启用PCIe的设备在VM之间传输数据。每个启用PCIe的设备可以与指定用于操作设备的参数的物理功能相关联。物理功能可以包括定义启用PCIe的设备的能力的可配置参数的完整集合。此外,启用PCIe的设备可以支持可以与不同VM相关联的一个或多个虚拟功能。与PF相关联的虚拟功能(VF)可以包括PF中指定的可配置参数的子集。VF指定来自对应VM的使用启用PCIe的设备的数据通信所需的资源,启用PCIe的设备支持单根I/O虚拟化(SR-IOV)协议,其中VF被视为内核中的热插入的PCI设备。
在一个实施例中,主机可以包括VM-VM通信加速器电路(称为加速器),其可以包括用于存储物理功能(例如,启用PCIe的设备)的参数和用于存储与VM的虚拟设备相关联的虚拟功能的参数的寄存器。一旦启用PCIe虚拟化,每个VF的配置空间可以与PF的PCI存储器空间相关联,其中PCI存储器空间用于映射寄存器组。VF设备驱动程序对寄存器组操作。VF可以使用映射到PCI存储器空间的寄存器组用作并表现为PF。此外,加速器可以包括用于处理源自VM的数据通信会话的处理单元。数据传输会话是以直接存储器访问(DMA)的形式,并且处理单元被称为DMA描述符处理电路。第一VM可以通过在与第一VM的虚拟功能相关联的寄存器中公布DMA描述符来发起去往第二VM的数据通信。DMA描述符可以包括源地址、目的地地址、数据有效载荷(或对数据有效载荷的引用)、用于接收数据有效载荷的第二VM的虚拟功能标识符、以及用于建立基于硬件的VM-VM数据通信的控制参数。响应于接收DMA描述符,DMA描述符处理电路可以检查物理功能的参数以确定是否允许第一VM和第二VM之间的数据通信。在一个实施例中,物理功能的参数可以指定包括不同VM之间的通信许可的访问控制表。响应于基于访问控制表确定允许第一VM和第二VM之间的数据通信,DMA描述符处理电路可以启用VM之间的基于PCIe协议的数据通信。如果不允许第一VM和第二VM之间的数据通信(或出于任何原因失效),则DMA描述符处理电路可以通知VMM。
VMM可以使用物理功能驱动程序来设置物理功能的参数,并且可以使用虚拟功能驱动程序来设置虚拟功能的参数。在一个实施例中,响应于创建新VM,VMM可以生成与新创建的VM相关联的虚拟功能并且将虚拟功能的参数存储在加速器中的寄存器中。一旦启用PCIe虚拟化,每个VF的配置空间可以与PF的PCI存储器空间相关联,其中PCI存储器空间用于映射寄存器组。VF设备驱动程序对寄存器组操作。VF可以使用映射到PCI存储器空间的寄存器组用作并表现为PF。此外,VMM可以更新物理功能的参数以反映添加的VM。例如,VMM可以更新访问控制表以添加用于新添加的VM的数据通信许可。
图1示出根据本公开的实施例的支持在不同主机上运行的VM之间的基于硬件的数据通信的系统100。参考图1,系统100可以包括主机102A、102B。主机102A、102B可以各自分别包括处理器108A、108B、存储器110A、110B、和VM-VM通信加速器电路(“加速器”)104A、104B。在一个实施例中,主机102A(或主机102B)可以是芯片上系统(SoC)。
处理器108A、108B可以是硬件处理设备,诸如例如,中央处理单元(CPU)或图形处理单元(GPU),其包括一个或多个处理核(未示出)以执行软件应用。处理器108A、108B可以进一步包括一个或多个处理核以及存储器管理单元(MMU)以执行存储器地址转换。
处理器108A、108B可以进一步包括处理器扩展逻辑电路以实现扩展指令集来支持处理器108A、108B的附加功能。在一个实施例中,处理器扩展逻辑电路可以支持对一组虚拟化指令(例如,虚拟机扩展(VMX)130A、130B)的执行以提供对位于主机上的一个或多个虚拟化环境的支持。VMX130A、130B可以为虚拟机提供处理器级的支持。在一个实施例中,VMX可以包括用于生成支持一个或多个执行环境(或虚拟机(VM)114A–114D)在主机102A、102B上运行的虚拟机监视器(VMM)112A、112B的指令。
VM 114A–114C中的每一个对于终端用户可以表现得像硬件计算设备一样。例如,VM 114A–114C各自可以包括仿真硬件处理器的虚拟处理器(未示出)。与VM 114A–114C相关联的虚拟处理器可以支持相应的客户机操作系统(客户机OS)。客户机应用可以在客户机OS的环境内运行。客户机操作系统134(包括内核)可以包括多个客户机OS组件(或内核组件)以向客户机应用提供多个服务。在一个实施例中,客户机OS提供的服务可以包括调度器、进程管理、I/O管理、存储器管理、驱动程序(例如,文件系统和卷驱动程序、大容量存储驱动程序和总线驱动程序)和代码完整性管理服务。
包括客户机OS和客户机应用的VM 114A–114C可以通过存储器地址转换访问存储器110A、110B。VM 114A–114C可以与对应的客户机物理地址(GPA)空间132A–132C相关联。与VM 114A–114C相关联的GPA空间132A–132C可以被映射到主机102A、102B的存储器110A、110B的主机物理地址(HPA)空间134A–134B。如图1所示,与VM 114A–114B相关联的GPA空间132A–132B可以被映射到HPA空间134A;与VM 114C–114D相关联的GPA空间132C–132D可以被映射到HPA空间134B。在一个实施例中,可以使用启用PCIe的设备的直接存储器访问(DMA)绕过VMM 112A–112B来实现存储器地址映射。该DMA方法可以改善两个VM之间的数据通信的速度。
在一个实施例中,主机102A、102B可以采用加速器104A、104B以提供用于基于硬件的VM-VM数据通信的能力。加速器104A、104B中的每一个可以包括DMA描述符处理电路118A、118B、用于存储不同类型的物理功能和虚拟功能的寄存器(120A、120B、122A、122B、124A、124B、126A、126B)、以及用于提供底层数据通信链路的PCI接口设备106A、106B(例如,底层物理网络控制器(NIC))。在另一实施例中,PCI接口设备106A、106B可以在加速器电路104A、104B的外部。DMA描述符处理电路118A、118B可以包括用于基于与PCI接口设备106A、106B相关联的物理功能以及与VM 114A–114C相关联的虚拟功能来处理从VM 114A–114C接收的DMA描述符的逻辑电路。加速器104A、104B可以包括用于存储物理功能和虚拟功能的寄存器(例如,存储器映射寄存器(MMR))。在一个实施例中,加速器104A、104B包括用于存储与本地主机的PCI接口设备相关联的主物理功能120A、120B和与本地主机支持的VM114A-114B、114C-114D的虚拟设备相关联的主虚拟功能122A、122B的寄存器。此外,加速器104A、104B包括用于存储与远程主机的PCI接口设备相关联的次级物理功能124A、124B和与远程主机支持的VM 114C-114D、114A-114B相关联的次级虚拟功能126A、126B的寄存器。
例如,主机102A可以包括充当主物理功能120A并且支持与虚拟功能122A相关联的VM 114A、114B的PCI接口设备106A。此外,主机102A的加速器104A可以包括用于存储与指定主机102B的PCI接口设备106B的次级物理功能124A相关联的参数的寄存器,并且可以进一步包括用于存储与远程主机102B支持的VM 114C-114D相关联的次级虚拟功能126A的寄存器。类似地,主机102B可以包括充当主物理功能120B并且支持与虚拟功能122B相关联的VM114C、114D的PCI接口设备106B。此外,主机102B的加速器104B可以包括用于存储与指定主机102A的PCI接口设备106A的次级物理功能124B相关联的参数的寄存器,并且可以包括用于存储与远程主机102A支持的VM 114A-114B相关联的次级虚拟功能126B的寄存器。
在一个实施例中,主物理功能120A、120B可以对应地与访问控制表136A、136B相关联。在另一实施例中,主物理功能120A、120B可以访问存储在与主功能不同的另一存储设备中的访问控制表。访问控制表136A、136B可以包括指定用于VM之间的数据通信的许可的参数。许可可以定义用于在相同主机上的VM之间或在不同主机上的VM之间的数据通信的访问权限(例如,读取、写入或执行)。响应于VM 114A–114D公布(使用虚拟功能驱动程序116A-116D)包括关于VM-VM数据通信请求的信息的DMA描述符,DMA描述符处理电路118A–118B可以基于访问控制表136A、136B来确定是否允许VM-VM数据通信发生。
在一个实施例中,包括PCI总线的PCI接口设备106A、106B提供处理器108A、108B之间的数据通信链路。例如,PCI接口设备106A、106B可以是通信地耦合在主机102A、102B的处理器108A、108B与PCI总线之间以允许基于硬件的VM-VM数据通信(例如,主机102A的处理器108A与PCI总线之间和主机102B的处理器108B与PCI总线之间)的根复合体接口。在一些实现方式中,PCI接口设备106A、106B可以包括到处理器的接口和到存储器的接口,并且可选地包括控制器。
在一个实施例中,PCI接口设备106A、106B各自可以支持用于提供主机之间(例如,主机102A、102B之间)的点对点通信的端口128A、128B。在一些实现方式中,非透明桥(NTB)可以通信地耦合在主机之间。NTB可以提供两个主机102A、102B之间的电隔离。由NTB分开的每个主机可以具有其自己的独立地址域。因此,NTB的一侧上的主机不具有对另一侧的完整存储器或I/O空间的可见性。为了跨NTB通信,每个本地主机可以将存储器空间的一部分(称为孔径)暴露给远程主机,使得通过该孔径在远程主机中对本地主机的存储器的暴露部分的写入进行镜像操作。如此,在不同主机上的使用直接存储器访问的VM可以基于PCIe协议建立DMA数据通信。在一个实施例中,外部根管理器可以通过注册过程处理主机102A的暴露的存储器部分与主机102B的暴露的存储器部分之间的映射。在注册过程期间,外部根管理器可以将远程HPA到本地HPA的映射和访问许可存储在本地主机的次级物理功能124A、124B中。
图2示出根据本公开的实施例的VM-VM加速器电路200。如图2所示,加速器200可以包括DMA描述符处理电路202、用于存储主物理功能204A的寄存器、用于存储主虚拟功能206A的寄存器、用于存储次级物理功能204B的寄存器、用于存储次级虚拟功能206B的寄存器、以及PCI接口设备208。DMA描述符处理电路202可以接收来自VM的DMA描述符,并且基于存储在主物理功能204A、主虚拟功能206A、次级物理功能204B和次级虚拟功能206B中的参数使用PCI接口设备208来建立VM-VM数据通信。在另一实施例中,PCI接口设备208可以在VM-VM加速器电路200的外部。一旦建立,PCI接口设备208可以提供绕过VMM的对VM的直接存储器访问230。
在一个实施例中,用于存储物理功能和虚拟功能的寄存器是存储器映射寄存器(MMR),存储器映射寄存器的地址范围根据PCI设备的基址寄存器(BAR)指定。例如,第一物理基址寄存器(PBAR0)可以指定用于存储主物理功能204A的MMR的地址范围,并且第二物理基址寄存器(PBAR1)可以指定用于存储次级物理功能204B的MMR的地址范围。类似地,虚拟基址栏的第一堆栈(VBAR0)可以指定MMR的地址范围,其中MMR中的每一个可以存储相应的主虚拟功能,并且虚拟基址栏的第二堆栈(VBAR2)可以指定MMR的地址范围,其中MMR中的每一个可以存储相应的次级虚拟功能。
主物理功能204A包括与本地主机的PCI接口设备208相关联的参数。在一个实施例中,用于存储主物理功能204A的参数的MMR可以包括仅物理功能MMR部分210、其他参数MMR部分212、MSI-X MMR部分214、工作队列部分216、完成队列部分218和访问控制表部分220。用于存储次级物理功能204B的参数的MMR可以包括与主物理功能204A类似的用于存储远程主机的PCI设备的参数的部分。用于存储主虚拟功能206A中的每一个的MMR可以包括其他参数MMR部分222、MSI-X MMR部分224、工作队列部分226和完成队列部分228。用于存储次级虚拟功能206B的MMR可以包括与主虚拟功能206A类似的用于存储与在远程主机上运行的VM相关联的参数的部分。
物理功能204A、204B可以与仅物理功能MMR部分210和访问控制表220的数据结构相关联。虚拟功能不包括仅物理功能MMR部分210和访问控制表220。MMR部分212–218、222-224是物理功能与虚拟功能之间共有的。仅物理功能MMR部分210可以存储每个VM的客户机物理地址空间的尺寸。仅物理功能MMR部分210可以由VMM在生成VM期间建立。其他MMR部分212可以存储与建立基于硬件的VM-VM数据通信相关的控制参数。MSI-X MMR部分214可以存储用于可生成中断的不同操作的掩码。例如,存储在MSI-X中的掩码可以选择性地启用或禁用写入操作生成的中断。工作队列216可以包括会被DMA描述符处理电路202处理的DMA描述符的有序列表。完成队列218可以包括已经被DMA描述符处理电路202处理的DMA描述符的有序列表。访问控制表220可以存储在相同本地主机上的不同VM之间或本地主机与远程主机之间的访问许可(例如,读取和写入许可)。
图3示出根据本公开的实施例的包括用于存储VM(在单个主机上或不同主机之间)之间的访问许可的条目的访问控制表300。如图3所示,访问控制表300可以包括对与主物理功能(L_PF)相关联的PCI设备的存储器域的访问许可和对与主虚拟功能(例如,L_VF1、L_VF2、...、L_VFm)相关联的VM的存储器域的访问许可。访问控制表300可以进一步包括对与第二物理功能(R_PF)相关联的远程主机的PCI设备的存储器域的访问许可和对在与次级虚拟功能(例如,R_VF1、...、R_VFn)相关联的远程主机上托管的VM的存储器域的访问许可。访问许可可以是读取(r)、写入(w)或不可访问(未标记)。例如,如图3所示,本地PCI设备可以具有对在本地主机上支持的VM的所有主虚拟功能的读取和写入许可并且具有对在远程主机上支持的VM的所有次级虚拟功能的读取许可。与主虚拟功能(L_VF1)相关联的VM可以具有对主物理功能(L_PF)的写入许可、对主虚拟功能(L_VF2...L_VFm)的读取和写入许可、以及对远程物理功能(R_PR)和远程虚拟功能(R_VF1...R_VFn)的读取许可。
再次参考图2,本地主机支持的VM(例如,由虚拟机标识符VMID_i标识)可以向与本地主机支持的VM相关联的虚拟功能206A(例如,VF_i)中的工作队列226公布DMA描述符。DMA描述符可以是包括控制和状态数据、源数据缓冲器、数据长度(例如,按字节计数)、目的地数据缓冲器、以及与目标VM相关联的目的地虚拟功能的常规描述符。替代地,DMA描述符可以是包括控制和状态数据、数据有效载荷、目的地数据缓冲器、以及与目标VM相关联的目的地虚拟功能的嵌入式描述符。嵌入式DMA描述符可用于传输小于确定数量字节的小数据有效载荷。DMA描述符的控制和状态数据可以包括用于填充虚拟功能206A的其他MMR部分222和MSI-X MMR部分224的参数。DMA描述符处理电路202可以将公布的DMA描述符添加到主物理功能204A的工作队列216。当轮到该DMA描述符被处理时,DMA描述符处理电路202可以将存储在其他MMR部分222和MSI-X MMR部分224中的参数加载到对应的MMR部分212、214。
当处理在工作队列216的顶部的DMA描述符时,DMA描述符处理电路202可以检查DMA描述符以确定起始VM和目标VM并且确定起始VM是否具有对目标VM的适当访问许可。如果起始VM具有访问许可,则处理器的扩展逻辑(VMX)可以使用页表将客户机物理地址转换为主机物理地址。
在一个实施例中,DMA描述符可以是表示驻留在单个主机上的两个VM之间(例如,从VFa到VFb)的DMA访问操作(写入或读取)的常规描述符。DMA描述符可以在与VFa相关联的工作队列中并且DMA描述符的目的地字段被设置为VFb。DMA描述符处理电路可以首先基于访问控制表确定VFa是否具有对写入VFb或从VFb读取的访问许可并且确定与VFb相关联的目的地数据缓冲器是否在VFb的与VFa共享的客户机物理地址(GPA)空间内。如果DMA描述符处理电路确定VFa不具有访问许可或目的地数据缓冲器不在VFb的与VFa共享的GPA空间内,则DMA描述符处理电路可以通过完成队列报告错误状况。否则,对于写入操作,DMA描述符处理电路可以生成PCIe读取事务,其中请求者ID被设置为VFa以从VFa的GPA空间读取数据,并且可以在PCIe总线上写入数据,其中请求者ID被设置为VFb以将数据写入VFb的GPA空间(写入与VFa共享的区域)。对于读取操作,DMA描述符处理电路可以生成PCIe读取事务,其中请求者ID被设置为VFb以从VFb的GPA空间(从与VFa共享的区域)读取数据,并且可以在PCIe总线上写入数据,其中请求者ID被设置为VFa以将数据写入VFa的GPA空间。处理器的VMX逻辑电路(例如,VT-d逻辑)使用页表执行从客户机物理地址到对应的主机物理地址的转换。在处理描述符之后,DMA描述符处理电路可以将传输完成的状态写入对应的完成队列。
DMA描述符处理电路可以类似地处理嵌入式DMA描述符。数据有效载荷(通常,小数据有效载荷)存储在嵌入式DMA描述符中。DMA描述符可以在与VFa相关联的工作队列中并且DMA描述符的目的地字段被设置为VFb。DMA描述符处理电路可以首先基于访问控制表确定VFa是否具有写入VFb的访问许可并且确定与VFb相关联的目的地数据缓冲器是否在VFb的与VFa共享的客户机物理地址(GPA)空间内。如果DMA描述符处理电路确定VFa不具有访问许可或目的地数据缓冲器不在VFb的与VFa共享的GPA空间内,则DMA描述符处理电路可以通过完成队列报告错误状况。否则,DMA描述符处理电路可以写入嵌入在DMA描述符中的数据有效载荷以在PCIe总线上写入数据,其中请求者ID被设置为VFb以将数据写入VFb的GPA空间(写入与VFa共享的区域)。处理器的VMX逻辑电路使用页表执行从客户机物理地址到对应的主机物理地址的转换。在处理描述符之后,DMA描述符处理电路可以将传输完成的状态写入对应的完成队列。
在一个实施例中,DMA描述符可以是表示驻留在两个主机上的两个VM之间(例如,从VFa到VFb)的DMA访问操作(写入或读取)的描述符(常规的或嵌入式的)。DMA描述符可以在与驻留在本地主机上的VFa相关联的工作队列中并且DMA描述符的目的地字段被设置为驻留在远程主机上的VFb。VFa可以被标识为主虚拟功能,并且VFb可以被本地主机上的次级虚拟功能标识。DMA描述符处理电路可以首先基于包括主功能和次级功能的访问控制表确定VFa是否具有对写入VFb或从VFb读取的访问许可,并且确定与VFb相关联的目的地数据缓冲器是否在VFb的与VFa共享的客户机物理地址(GPA)空间内。如果DMA描述符处理电路确定VFa不具有访问许可或目的地数据缓冲器不在VFb的与VFa共享的GPA空间内,则DMA描述符处理电路可以通过完成队列报告错误状况。否则,对于写入操作,DMA描述符处理电路可以生成PCIe读取事务,其中请求者ID被设置为VFa以从VFa的GPA空间读取数据,并且可以在PCIe总线上写入数据,其中请求者ID被设置为VFb以将数据写入VFb的GPA空间(写入与VFa共享的区域)。对于读取操作,DMA描述符处理电路可以生成PCIe读取事务,其中请求者ID被设置为VFb以从VFb的GPA空间(从与VFa共享的区域)读取数据,并且可以在PCIe总线上写入数据,其中请求者ID被设置为VFa以将数据写入VFa的GPA空间。远程处理器的VMX逻辑电路(例如,VT-d逻辑)使用页表执行从客户机物理地址到对应的主机物理地址的转换。在处理描述符之后,DMA描述符处理电路可以将传输完成的状态写入对应的完成队列。
图4是根据本公开的另一实施例的用于使用PCI设备执行VM-VM数据通信的方法400的框图。方法400可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如在处理设备、通用计算机系统、或专用机器上运行的指令)、固件或其组合。在一个实施例中,方法400可以部分地由如图1所示的处理器102的处理逻辑和DMA描述符处理电路118A执行。
为了简化说明,方法400被描绘以及被描述成一系列动作。然而,根据本公开的动作可以按各种顺序发生,并且/或者可以同时发生,并且伴随本文未呈现以及描述的其他动作发生。此外,并不是所有示出的动作可以被执行以实现根据所公开主题的方法400。此外,本领域技术人员将会理解以及明白,方法400可以替代地使用状态图被表示为一系列相关的状态或者被表示为事件。
参考图4,在402处,加速器电路可以接收在处理器上执行的第一虚拟机发出的直接存储器访问(DMA)描述符,该DMA描述符指定第一虚拟机(VM)与第二虚拟机之间的使用与处理器相关联的第一接口设备的DMA数据传输。
在404处,加速器电路可以基于访问控制表(ACT)确定从第一VM到第二VM的访问许可,其中加速器电路包括用于存储对与第一接口设备相关联的物理功能(PF)的引用的寄存器,并且其中PF与指定访问许可的ACT相关联。
在406处,加速器电路可以使用第一接口设备基于访问许可执行DMA数据传输。
图5A是示出根据本公开的一个实施例的用于实现包括异构核的处理设备的处理器500的微架构的框图。具体地,处理器500描绘根据本公开的至少一个实施例的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑。
处理器500包括前端单元530,该前端单元530耦合到执行引擎单元550,前端单元530和执行引擎单元550两者都耦合到存储器单元570。处理器500可包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为另一个选项,处理器500可包括专用核,诸如例如,网络或通信核、压缩引擎、图形核,等等。在一个实施例中,处理器500可以是多核处理器或者可以是多处理器系统的一部分。
前端单元530包括耦合到指令高速缓存单元534的分支预测单元532,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)536,该指令转换后备缓冲器耦合到指令取出单元538,指令取出单元耦合到解码单元540。解码单元540(也称为解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码器540可使用各种不同的机制来实现。合适的机制的示例包括但不限于:查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元534进一步耦合至存储器单元570。解码单元540耦合至执行引擎单元550中的重命名/分配器单元552。
执行引擎单元550包括耦合到引退单元554和一个或多个调度器单元556的集合的重命名/分配器单元552。调度器单元556表示任何数目的不同调度器,包括预留站(RS)、中央指令窗等。调度器单元556耦合至物理寄存器堆单元558。物理寄存器堆单元558中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如:标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,等等)、状态(诸如,指令指针是将要执行的下一个指令的地址)等等。物理寄存器堆单元558与引退单元554重叠以示出可以用来实现寄存器重命名和乱序执行的各种方式(例如,使用重排序缓冲器和引退寄存器堆;使用未来文件、历史缓冲器和引退寄存器堆;使用寄存器映射和寄存器池等等)。
在一个实现方式中,处理器500可以与参考图1描述的处理器108A相同。具体而言,处理器500可以包括如图1所示的VM-VM通信加速器电路104A和PCI接口设备106A。
通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。多种不同类型的寄存器可适用,只要它们能够存储并提供在此所述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元554和物理寄存器堆单元558耦合至执行群集560。执行群集560包括一个或多个执行单元562的集合以及一个或多个存储器访问单元564的集合。执行单元562可执行多种操作(例如,移位、加法、减法、乘法)并可对多种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。
尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其它实施例可包括仅一个执行单元或全部执行所有功能的多个执行单元。调度器单元556、物理寄存器堆单元558和执行群集560被示为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整型流水线、标量浮点/紧缩整型/紧缩浮点/向量整型/向量浮点流水线,和/或各自具有其自己的调度器单元、物理寄存器堆单元和/或执行群集的存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有存储器访问单元564的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为乱序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元564的集合耦合到存储器单元570,该存储器单元570可包括数据预取器580、数据TLB单元572、数据高速缓存单元(DCU)574、第二级(L2)高速缓存单元576,仅举数例。在一些实施例中,DCU574也称为第一级数据高速缓存(L1高速缓存)。DCU 574可处理多个未决的高速缓存未命中,并继续服务传入的存储和加载。它也支持维护高速缓存一致性。数据TLB单元572是用于通过映射虚拟和物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元564可以包括加载单元、存储地址单元以及存储数据单元,其中的每一个均耦合至存储器单元570中的数据TLB单元572。L2高速缓存单元576可耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
在一个实施例中,数据预取器580通过自动地预测程序将消耗哪些数据来推测性地将数据加载/预取到DCU 574。预取可以指示在存储在存储器层次结构(例如,较低等级的高速缓存或存储器)的一个存储器位置的数据被处理器实际要求之前,将数据转换至更靠近(例如,产生更少访问等待时间)处理器的较高等级的存储器位置。更具体地,预取可以指在处理器发布对正在被返回的特定数据的需求之前数据从较低级别高速缓存/存储器之一至数据高速缓存和/或预取缓冲器的早期取回。
处理器500可以支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元以及共享的L2高速缓存单元,但替代的实施例也可具有用于指令和数据的单个内部高速缓存,诸如例如第一级(L1)内部高速缓存、或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图5B是示出根据本公开的一些实施例的由图5A的处理器500实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图5B中的实线框示出了有序流水线,而虚线框示出了寄存器重命名、乱序发布/执行流水线。在图5B中,作为流水线的处理器500包括取出级502、长度解码级504、解码级506、分配级508、重命名级510、调度(也被称为分派或发布)级512、寄存器读取/存储器读取级514、执行级516、写回/存储器写入级518、异常处理级522和提交级524。在一些实施例中,各个级502-524的排序可以与所示的不同,并且不限于图5B中所示的特定排序。
图6示出根据本公开的一个实施例的用于包括混合核的处理器600的微架构的框图。在一些实施例中,根据一个实施例的指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(诸如单精度和双精度整数和浮点数据类型)的数据元素执行操作。在一个实施例中,有序前端601是处理器600的一部分,其取出将要被执行的指令,并准备这些指令以在稍后供处理器流水线使用。
前端601可包括若干单元。在一个实施例中,指令预取器626从存储器取出指令,并将指令馈送至指令解码器628,指令解码器628随后解码或解释指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,解码器将指令解析为操作码和对应的数据及控制字段,它们被微架构用于执行根据一个实施例的操作。在一个实施例中,追踪高速缓存630接受经解码的微操作,并将它们组装为微操作队列634中的程序有序序列或踪迹,以用于执行。当追踪高速缓存630遇到复杂指令时,微代码ROM 632提供完成操作所需的uop。
一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实施例中,如果需要超过四个微操作来完成指令,则解码器628访问微代码ROM 632以进行该指令。对于一个实施例,指令可被解码为少量的微操作以用于在指令解码器628处进行处理。在另一个实施例中,如果需要若干微操作来完成操作,则可将指令存储在微代码ROM 632中。追踪高速缓存630参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 632读取微代码序列以完成根据一个实施例的一条或多条指令。在微代码ROM 632完成对于指令的微操作序列化之后,机器的前端601恢复从追踪高速缓存630提取微操作。
乱序执行引擎603是将指令准备好用于执行的地方。乱序执行逻辑具有若干个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存器堆中的条目。在指令调度器(存储器调度器、快速调度器602、慢速/通用浮点调度器604、简单浮点调度器606)之前,分配器也将每个微操作的条目分配在两个微操作队列中的一个之中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。微操作调度器602、604、606基于对它们的依赖输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实施例的快速调度器602可在主时钟周期的每半个上进行调度,而其他调度器可仅仅在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁以调度微操作以便执行。
寄存器堆608和610位于调度器602、604和606以及执行块611中的执行单元612、614、616、618、620、622和624之间。存在分别用于整数和浮点操作的分开的寄存器堆608、610。一个实施例的每个寄存器堆608、610也包括旁路网络,旁路网络可将刚完成的还没有被写入寄存器堆的结果旁路或转发给新的依赖微操作。整数寄存器堆608和浮点寄存器堆610也能够彼此传递数据。对于一个实施例,整数寄存器堆608被划分为两个单独的寄存器堆,一个寄存器堆用于低阶的32位数据,第二个寄存器堆用于高阶的32位数据。一个实施例的浮点寄存器堆610具有128位宽度的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块611包括执行单元612、614、616、618、620、622、624,在执行单元612、614、616、618、620、622、624中实际执行指令。该区块包括寄存器堆608、610,寄存器堆608、610存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器600包括有多个执行单元:地址生成单元(AGU)612、AGU 614、快速ALU 616、快速ALU 618、慢速ALU 620、浮点ALU622、浮点移动单元624。对于一个实施例,浮点执行块622、624执行浮点、MMX、SIMD、SSE或其他操作。一个实施例的浮点ALU 622包括64位/64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本公开的诸个实施例,涉及浮点值的指令可使用浮点硬件来处理。
在一个实施例中,ALU操作进入高速ALU执行单元616、618。一个实施例的快速ALU616、618可执行快速操作,有效等待时间为半个时钟周期。对于一个实施例,大多数复杂整数操作进入慢速ALU 620,因为慢速ALU 620包括用于长等待时间类型操作的整数执行硬件,诸如,乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作由AGU 612、614来执行。对于一个实施例,整数ALU 616、618、620被描述为对64位数据操作数执行整数操作。在替代实施例中,ALU 616、618、620可被实现为支持多种数据位,包括16、32、128、256等等。类似地,浮点单元622、624可被实现为支持具有多种宽度的位的一系列操作数。对于一个实施例,浮点单元622、624可结合SIMD和多媒体指令对128位宽度紧缩数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,微操作调度器602、604、606就分派依赖性操作。因为在处理器600中微操作被推测地调度和执行,所以处理器600也包括处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在已带着临时错误的数据离开调度器的运行中的依赖性操作。重放机制跟踪使用错误数据的指令,并重新执行这些指令。仅仅依赖性操作需要被重放,而允许独立操作完成。处理器的一个实施例的调度器和重放机制也设计成用于捕捉用于文本串比较操作的指令序列。
根据本公开的各实施例,处理器600还包括用于实现用于存储器消歧的存储地址预测的逻辑。在一个实施例中,处理器600的执行块611可以包括用于实现用于存储器消歧的存储地址预测的存储地址预测器(未示出)。
术语“寄存器”可以指代被用作为指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器可以是那些处理器外部(从编程者的角度来看)可用的处理器存储位置。然而,实施例的寄存器不限于表示特定类型的电路。相反,实施例的寄存器能够存储并提供数据,并能够执行本文中所述的功能。本文所描述的寄存器可利用任何数量的不同技术通过处理器中的电路来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆也包含八个多媒体SIMD寄存器,用于紧缩数据。
对于以下讨论,寄存器应理解为设计成用于保存紧缩数据的数据寄存器,诸如,来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器中的64位宽MMXTM寄存器(在一些实例中,也称为‘mm’寄存器)。这些MMX寄存器(可用在整数和浮点形式中)可与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持这样紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要区分这两类数据类型。在一个实施例中,整数和浮点数据可被包括在相同的寄存器堆中,或被包括在不同的寄存器堆中。进一步地,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
现在参考图7,所示的是示出了系统700的框图,在系统700中可以使用本公开的实施例。如图7所示,多处理器系统700是点对点互连系统,且包括经由点对点互连750耦合的第一处理器770和第二处理器780。虽然仅以两个处理器770和780示出,但是应当理解,本公开的实施例的范围不限于此。在其他实施例中,在给定处理器中可存在一个或多个附加处理器。在一个实施例中,多处理器系统700可以实现本文所述的混合核。
处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以经由使用点对点(P-P)接口电路778、788的P-P接口750来交换信息。如图7所示,IMC 772和782将处理器耦合到相应的存储器,即存储器732和存储器734,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器770、780可各自经由使用点对点接口电路776、794、786、798的各个P-P接口752、754与芯片组790交换信息。芯片组790还可经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器的外部但经由P-P互连与这些处理器连接,从而如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在该共享的高速缓存中。
芯片组790可以经由接口796耦合至第一总线716。在一个实施例中,第一总线716可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图7所示,各种I/O设备714可连同总线桥718一起耦合到第一总线716,总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合至第二总线720,包括例如,键盘和/或鼠标722、通信设备727以及可包括指令/代码和数据730的存储单元728(诸如,盘驱动器或其他大容量存储设备)。此外,音频I/O 724可以被耦合到第二总线720。注意,其他架构是可能的。例如,代替图7的点对点架构,系统可以实现多分支总线或其他这类架构。
现在参考图8,所示的是系统800的框图,在系统800中本公开的一个实施例可以操作。系统800可以包括耦合至图形存储器控制器中枢(GMCH)820的一个或多个处理器810、815。附加的处理器815的可选性在图8中通过虚线来表示。在一个实施例中,处理器810、815实现根据本公开的实施例的混合核。
每个处理器810、815可以是如上所述的电路、集成电路、处理器和/或硅集成电路的某个版本。然而,应当注意,集成图形逻辑和集成存储器控制单元不太可能出现在处理器810、815中。图8示出了GMCH 820可以耦合至存储器840,该存储器840可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性高速缓存相关联。
GMCH 820可以是芯片组或芯片组的部分。GMCH 820可以与处理器810、815进行通信,并控制处理器810、815与存储器840之间的交互。GMCH 820还可担当处理器810、815和系统800的其他元件之间的加速总线接口。对于至少一个实施例,GMCH 820经由诸如前端总线(FSB)895之类的多点总线与处理器810、815进行通信。
此外,GMCH 820耦合至显示器845(诸如平板或触摸屏显示器)。GMCH 820可包括集成图形加速器。GMCH 820进一步耦合至输入/输出(I/O)控制器中枢(ICH)850,该输入/输出(I/O)控制器中枢(ICH)850可用于将各种外围设备耦合至系统800。在图8的实施例中作为示例示出了外部图形设备860以及另一外围设备870,外部图形设备860可以是耦合至ICH850的分立图形设备。
替代地,附加的或不同的处理器也可存在于系统800中。例如,附加的处理器815可以包括与处理器810相同的附加的处理器、与处理器810异构的或不对称的附加的处理器、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器。在包括架构、微架构、热、功耗特征等一系列品质度量的方面,处理器810、815之间存在各种差异。这些差异可以有效显示为处理器810和815之间的不对称性和异构性。对于至少一个实施例,各种处理器810和815可驻留在同一管芯封装中。
现在参考图9,所示的是系统900的框图,在系统900中本公开的实施例可以操作。图9示出了处理器970和980。在一个实施例中,处理器970、980可以实现上文所述的混合核。处理器970、980可以分别包括集成存储器和I/O控制逻辑(“CL”)972和982,并且分别经由点对点(P-P)接口978和988之间的点对点互连950彼此相互通信。处理器970、980各自通过相应P-P接口976到994以及986到998经由点对点互连952和954与芯片组990通信,如图所示。对于至少一个实施例,CL 972、982可以包括集成存储器控制器单元。CL 972、982可以包括I/O控制逻辑。如图所示,存储器932、934耦合至CL 972、982,并且I/O设备914也耦合至控制逻辑972、982。传统I/O设备915经由接口996耦合至芯片组990。
实施例可在许多不同的系统类型中实现。图10是根据本公开的实施例的SoC 1000的框图。虚线框是更先进的SoC的可选特征。在一些实现方式中,图10所示的SoC 1000包括图1所示的SoC 100的特征。在图10中,互连单元1012耦合至:应用处理器1020,包括一组一个或多个核1002A-N以及共享高速缓存单元1006;系统代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一组或一个或多个媒体处理器1018,可包括集成图形逻辑1008、用于提供静态和/或视频照相功能的图像处理器1024、提供硬件音频加速的音频处理器1026、提供视频编码/解码加速的视频处理器1028、静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及显示单元1040,用于耦合至一个或多个外部显示器。在一个实施例中,存储器模块可以被包括在集成存储器控制器单元1014中。在另一个实施例中,存储器模块可以被包括在可以被用来访问和/或控制存储器的SoC 1000的一个或多个其他组件中。应用处理器1020可以包括存储地址预测器,用于实现本文实施例所述的混合核。
存储器层次结构包括核内的一个或多个层级的高速缓存、一组或一个或多个共享高速缓存单元1006以及耦合到集成存储器控制器单元1014的集合的外部存储器(未示出)。共享高速缓存单元1006的集合可包括一个或多个中级高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上的组合。
在一些实施例中,一个或多个核1002A-N能够实现多线程。系统代理1010包括协调并操作核1002A-N的那些组件。系统代理单元1010可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核1002A-N以及集成图形逻辑1008的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1002A-N在架构和/或指令集方面可以是同构或异构的。例如,核1002A-N中的一些可以是有序的,而另一些是乱序的。作为另一个示例,核1002A-N中的两个或更多能够执行相同的指令集,而其他核仅能够执行该指令集的子集或不同的指令集。
应用处理器1020可以是通用处理器,诸如,酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至强(XeonTM)、安腾(ItaniumTM)、凌动(AtomTM)或QuarkTM处理器,这些均可以从加利福尼亚圣克拉拉市的英特尔TM公司获得。或者,应用处理器1020可以来自另一个公司,诸如ARM控股TM公司、MIPSTM等。应用处理器1020可以是专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。应用处理器1020可以被实现在一个或多个芯片上。应用处理器1020可以是一个或多个衬底的部分,并且/或者可以使用诸如例如BiCMOS、CMOS或NMOS之类的多种工艺技术中的任何技术将应用处理器1020实现在一个或多个衬底上。
图11是根据本公开的芯片上系统(SoC)设计的实施例的框图。作为特定的说明性示例,SoC 1100被包括在用户装备(UE)中。在一个实施例中,UE是指可由最终用户用于通信的任何设备,诸如,手持电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本,或任何其他类似的通信设备。UE常常连接到基站或节点,该基站或节点本质上潜在地对应于GSM网络中的移动站(MS)。
在此,SoC 1100包括2个核——1106和1107。核1106和1107可符合指令集架构,诸如,基于架构酷睿(CoreTM)的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或它们的客户,以及它们的被许可方或采纳方。核1106和1107耦合到高速缓存控件1108,该高速缓存控件1108与总线接口单元1109和L2高速缓存1110相关联以与系统1100的其他部分通信。互连1110包括可能实现所述公开的一个或多个方面的芯片上互连,诸如IOSF、AMBA或上文讨论的其他互连。在一个实施例中,核1106、1107可以实现本文实施例所述的混合核。
互连1110提供到其他组件的通信信道,其他组件诸如用于与用户身份模块(SIM)卡对接的SIM 1130、用于保存供核1106和1107执行以初始化和引导SoC 1100的引导代码的引导ROM 1135、用于与外部存储器(例如,DRAM 1160)对接的SDRAM控制器1140、用于与非易失性存储器(例如,闪存1165)对接的闪存控制器1145、用于与外围设备对接的外围控制装置1150(例如,串行外围接口)、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1120和视频接口1125、用于执行图形相关的计算的GPU 1115等等。这些接口中的任何一种可以包括本文中所述公开的多个方面。另外,系统1100示出了用于通信的外围设备,诸如蓝牙模块1170、3G调制解调器1175、GPS 1180以及Wi-Fi 1185。
图12示出了计算机系统1200的示例形式中的机器的示意图,在该计算机系统1200内,可以执行用于使机器执行本文所讨论的方法中的任何一个或多个的一组指令。在替代实施例中,可以在LAN、内联网、外联网或因特网中将机器连接(例如,联网)到其他机器。机器可以在客户机-服务器网络环境中作为服务器或客户机设备操作,或者在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥、或者能够执行指定由该机器执行的动作的一组指令(连续的或以其他方式)的任何机器。此外,虽然仅示出单个机器,但是,术语“机器”也应当包括单独或共同执行一组(或多组)指令以执行本文所讨论的方法中的任何一种或更多种方法的机器的任意集合。
计算机系统1200包括处理设备1202、主存储器1204(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如,同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1206(例如,闪存、静态随机存取存储器(SRAM)等)以及数据存储设备1218,它们经由总线1230彼此进行通信。
处理设备1202表示一个或多个通用处理设备,诸如,微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设备1202也可以是一个或多个专用处理设备,诸如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一个实施例中,处理设备1202可以包括一个或多个处理核。处理设备1202被配置成执行用于执行本文中所讨论的操作和步骤的处理逻辑1226。例如,处理逻辑1226可以执行图4中所述的操作。在一个实施例中,处理设备1202与参考本公开的实施例所述的图1描述的处理器架构100相同。
计算机系统1200可以进一步包括通信地耦合至网络1220的网络接口设备1208。计算机系统1200还可以包括视频显示单元1210(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1212(例如,键盘)、光标控制设备1214(例如,鼠标)、以及信号生成设备1216(例如,扬声器)。此外,计算机系统1200可以包括图形处理单元1222、视频处理单元1228以及音频处理单元1232。
数据存储设备1218可以包括机器可访问存储介质1224,其上存储有实现本文所述功能的任何一个或多个方法的软件1226,诸如如上文所述实现用于存储器消歧的存储地址预测。在由计算机系统1200对软件1226的执行期间,软件1226也可完全或至少部分地作为指令1226驻留在主存储器1204之内和/或作为处理逻辑1226驻留在处理设备1202之内;该主存储器1204和处理设备1202也构成机器可访问存储介质。
机器可读存储介质1224也可用于存储实现用于诸如根据本公开的实施例所述的混合核的存储地址预测的指令1226。虽然机器可访问存储介质1128在示例实施例中被示出为单个介质,但术语“机器可访问存储介质”应当视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。还应当认为术语“机器可访问存储介质”包括能够存储、编码或携带由机器执行并且使该机器执行本公开的任何一个或多个方法的一组指令的任何介质。应当相应地认为术语“机器可访问存储介质”包括但不限于:固态存储器以及光和磁介质。
以下各示例涉及进一步的实施例。示例1是一种处理系统,包括:处理器,用于执行第一虚拟机(VM);以及VM-VM通信加速器电路,通信地耦合至处理器,VM-VM通信加速器电路包括:第一接口设备,用于支持第一VM的直接存储器访问(DMA)数据传输;寄存器,用于存储对与第一接口设备相关联的主物理功能(PF)的引用,其中第一主PF与指定第一VM对于第二VM的访问许可的访问控制表(ACT)相关联;以及直接存储器访问(DMA)描述符处理电路,用于:使用与第一主PF相关联的工作队列处理引用对第一VM与第二VM之间的DMA数据传输的请求的DMA描述符;以及使用第一接口设备基于访问许可执行DMA数据传输。
在示例2中,示例1的主题可以进一步提供,通信加速器电路进一步包括第二寄存器,用于存储对与托管第二VM的远程处理系统的第二接口设备相关联的次级PF的引用。
在示例3中,示例1和2中的任一项的主题可以进一步提供,第一PF进一步与引用由DMA描述符处理电路处理的多个DMA描述符的完成队列相关联。
在示例4中,示例1和2中的任一项的主题可以进一步提供,VM-VM通信加速器电路进一步包括第三寄存器,用于存储对与第一VM的第一虚拟设备驱动程序相关联的主虚拟功能(VF)的引用,其中主VF与引用由第一VM发出的第一多个DMA描述符的工作队列以及引用由第一VM发出并且由DMA描述符处理电路处理的第二多个DMA描述符的完成队列相关联,以及其中VM-VM通信加速器电路进一步包括一个或多个寄存器,用于存储对与第二VM的第二虚拟设备相关联的次级VF的引用,并且其中第二接口设备用于执行第二VM发出的到第一VM的DMA数据传输。
在示例5中,示例1和2中的任一项的主题可以进一步提供,DMA描述符处理电路进一步用于:响应于接收第一VM发出的DMA描述符,将第二VM标识为DMA数据传输的目的地;基于ACT确定第一VM具有对第二VM的写入许可;使用第一接口设备和第二接口设备执行从第一VM到第二VM的DMA数据传输;以及响应于确定从第一VM到第二VM的DMA数据传输完成,将DMA描述符置于第一PF功能的完成队列上。
在示例6中,示例1的主题可以进一步提供,访问许可包括读取许可、写入许可或执行许可中的至少一个。
在示例7中,示例1的主题可以进一步提供,DMA描述符包括与第一VM的第一虚拟设备相关联的虚拟功能标识符、与存储器相关联的目的地数据地址、以及与存储器相关联的源数据地址或数据有效载荷中的一个。
在示例8中,示例1的主题可以进一步提供,第二VM驻留在第一处理系统上,并且其中虚拟机监视器(VMM)控制第一VM和第二VM。
在示例9中,示例1和8中的任一项的主题可以进一步提供,DMA描述符处理电路进一步用于:响应于接收第一VM公布的DMA描述符,将第二VM标识为DMA数据传输的目的地;基于ACT确定第一VM具有对第二VM的写入许可;使用第一接口设备和第二接口设备执行从第一VM到第二VM的DMA数据传输;以及响应于确定从第一VM到第二VM的DMA数据传输完成,将DMA描述符置于第一PF功能的完成队列上。
示例10是一种系统,包括:第一接口设备,用于支持第一虚拟机(VM)的直接存储器访问(DMA)数据传输;以及VM-VM通信加速器电路,通信地耦合至用于执行第一VM的处理器,VM-VM通信加速器电路包括:寄存器,用于存储对与第一接口设备相关联的主物理功能(PF)的引用,其中第一主PF与指定第一VM对于第二VM的访问许可的访问控制表(ACT)相关联;以及直接存储器访问(DMA)描述符处理电路,用于:使用与第一主PF相关联的工作队列处理引用对第一VM与第二VM之间的DMA数据传输的请求的DMA描述符;以及使用第一接口设备基于访问许可执行DMA数据传输。
在示例11中,示例10的主题可以进一步提供,通信加速器电路进一步包括第二寄存器,用于存储对与托管第二VM的远程处理系统的第二接口设备相关联的次级PF的引用。
在示例12中,示例10和11中的任一项的主题可以进一步提供,第一PF进一步与引用由DMA描述符处理电路处理的多个DMA描述符的完成队列相关联。
在示例13中,示例10和11中的任一项的主题可以进一步提供,VM-VM通信加速器电路进一步包括第三寄存器,用于存储对与第一VM的第一虚拟设备驱动程序相关联的主虚拟功能(VF)的引用,其中主VF与引用由第一VM发出的第一多个DMA描述符的工作队列以及引用由第一VM发出并且由DMA描述符处理电路处理的第二多个DMA描述符的完成队列相关联,以及其中VM-VM通信加速器电路进一步包括一个或多个寄存器,用于存储对与第二VM的第二虚拟设备相关联的次级VF的引用,并且其中第二接口设备执行第二VM发出的到第一VM的DMA数据传输。
在示例14中,示例10和11中的任一项的主题可以进一步提供,DMA描述符处理电路进一步用于:响应于接收第一VM发出的DMA描述符,将第二VM标识为DMA数据传输的目的地;基于ACT确定第一VM具有对第二VM的写入许可;使用第一接口设备和第二接口设备执行从第一VM到第二VM的DMA数据传输;以及响应于确定从第一VM到第二VM的DMA数据传输完成,将DMA描述符置于第一PF功能的完成队列上。
在示例15中,示例10的主题可以进一步提供,访问许可包括读取许可、写入许可或执行许可中的至少一个。
在示例16中,示例10的主题可以进一步提供,DMA描述符包括与第一VM的第一虚拟设备相关联的虚拟功能标识符、与存储器相关联的目的地数据地址、以及与存储器相关联的源数据地址或数据有效载荷中的一个。
在示例17中,示例10的主题可以进一步提供,第二VM驻留在第一处理系统上,并且其中虚拟机监视器(VMM)控制第一VM和第二VM。
在示例18中,示例10和17中的任一项的主题可以进一步提供,DMA描述符处理电路进一步用于:响应于接收第一VM公布的DMA描述符,将第二VM标识为DMA数据传输的目的地;基于ACT确定第一VM具有对第二VM的写入许可;使用第一接口设备和第二接口设备执行从第一VM到第二VM的DMA数据传输;以及响应于确定从第一VM到第二VM的DMA数据传输完成,将DMA描述符置于第一PF功能的完成队列上。
示例19是一种方法,包括:由通信地耦合至处理器的加速器电路接收在处理器上执行的第一虚拟机(VM)发出的直接存储器访问(DMA)描述符,DMA描述符指定第一虚拟机与第二虚拟机之间的使用与处理器相关联的第一接口设备的DMA数据传输;基于访问控制表(ACT)确定从第一VM到第二VM的访问许可,其中加速器电路包括用于存储对与第一接口设备相关联的物理功能(PF)的引用的寄存器,并且其中PF与指定访问许可的ACT相关联;以及使用第一接口设备基于访问许可执行DMA数据传输。
在示例20中,示例19的主题可以进一步提供,第二VM驻留在远程处理系统上,远程处理系统使用第二接口设备通信地耦合至处理器。
示例21是一种设备,包括:用于执行示例19和20中的任一项的方法的装置。
示例22是一种机器可读非暂态介质,具有存储于其上的程序代码,当程序代码被执行时执行以下操作,操作包括:由通信地耦合至处理器的加速器电路接收在处理器上执行的第一虚拟机(VM)发出的直接存储器访问(DMA)描述符,DMA描述符指定第一虚拟机与第二虚拟机之间的使用与处理器相关联的第一接口设备的DMA数据传输;基于访问控制表(ACT)确定从第一VM到第二VM的访问许可,其中加速器电路包括用于存储对与第一接口设备相关联的物理功能(PF)的引用的寄存器,并且其中PF与指定访问许可的ACT相关联;以及使用第一接口设备基于访问许可执行DMA数据传输。
在示例23中,示例22的主题可以进一步提供,第二VM驻留在远程处理系统上,远程处理系统使用第二接口设备通信地耦合至处理器。
尽管是参考有限数量的实施例来描述本公开的,但是本领域技术人员将从其中理解到很多的修改和变型。所附权利要求书旨在涵盖落入本公开的真实精神和范围内的所有这些修改和变型。
设计会经历多个阶段,从创造到仿真到制造。表示设计的数据可用多种方式来表示该设计。首先,如仿真中将有用的,可使用硬件描述语言或其他功能性描述语言来表示硬件。此外,可在设计过程的某些阶段产生具有逻辑和/或晶体管门电路的电路级模型。此外,大多数设计在某些阶段都达到表示硬件模型中多种设备的物理布置的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种各样特征的数据。在任何设计表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁/光存储器(诸如,盘)可以是存储信息的机器可读介质,这些信息是经由光学或电学波来发送的,这些光学或电学波被调制或以其他方式生成以传送这些信息。当发送指示或承载代码或设计的电学载波达到实现电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本公开的诸个实施例的技术的物品(诸如,编码在载波中的信息)。
如本文中所使用的模块指的是硬件、软件、和/或固件的任何组合。作为示例,模块包括与非暂态介质相关联的诸如微控制器之类的硬件,该非暂态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非暂态介质上的代码。另外,在另一实施例中,模块的使用是指包括代码的非暂态介质,该代码专门适于由微控制器执行以进行预定操作。并且可推断,在又一实施例中,术语模块(在该示例中)可以指微控制器和非暂态介质的组合。通常,被示为分开的模块边界一般不同,并且潜在地重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其他硬件。
在一个实施例中,使用短语“被配置成”指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定或所确定的任务。在该示例中,如果不是正在操作的装置或其元件被设计、耦合、和/或互连以执行指定任务,则该不是正在操作的装置或其元件仍然“被配置成”执行所述指定任务。作为纯说明性示例,在操作期间,逻辑门可以提供0或1。但“被配置成”向时钟提供启用信号的逻辑门不包括可提供1或0的每一潜在逻辑门。相反,该逻辑门是以在操作期间1或0的输出用于启用时钟的某种方式来耦合的逻辑门。再次注意,使用术语“被配置成”不要求操作,而是关注于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,使用术语“用于”、“能够/能够用于”和/或“可操作用于”指的是按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如上文所注意,在一个实施例中,“用于”、“能够/能够用于”和/或“可操作用于”的使用指的是装置、逻辑、硬件、和/或元件的潜在状态,其中该装置、逻辑、硬件、和/或元件不是正在操作,而是以此类方式被设计以便以指定方式启用对装置的使用。
如在本文中所使用,值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机系统中的值的其他表示。例如,十进制数十还可以被表示为二进制值910和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值潜在地包括高逻辑值,即,重置,而已更新的值潜在地包括低逻辑值,即,置位。注意,可以使用值的任何组合来表示任何数量的状态。
上述方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上可由处理元件执行的指令或代码来实现。非暂态机器可访问/可读介质包括提供(即,存储和/或发送)诸如计算机或电子系统之类的机器可读形式的信息的任何机制。例如,非暂态机器可访问介质包括:随机存取存储器(RAM),诸如,静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保持从暂态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,这些与可从其接收信息的非暂态介质相区别。
被用于对逻辑进行编程以执行本公开的诸个实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储设备)内。进一步的,指令可经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)发送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书,对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,在整个说明书的多个位置出现短语“在一个实施例中”或“在实施例中”不一定全部是指同一实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。
在上述说明书中,已经参考特定示例性实施例给出了具体实施方式。然而,将显而易见的是,可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本公开的更宽泛精神和范围。相应地,应当认为说明书和附图是说明性的而不是限制性的。此外,实施例和其他示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。

Claims (23)

1.一种处理系统,包括:
处理器,用于执行第一虚拟机VM;以及
VM-VM通信加速器电路,通信地耦合至所述处理器,所述VM-VM通信加速器电路包括:
第一接口设备,用于支持所述第一VM的直接存储器访问DMA数据传输;
寄存器,用于存储对与所述第一接口设备相关联的主物理功能PF的引用,其中所述主PF与指定所述第一VM对于第二VM的访问许可的访问控制表ACT相关联;以及
直接存储器访问DMA描述符处理电路,用于:
使用与所述主PF相关联的工作队列处理引用对所述第一VM与所述第二VM之间的DMA数据传输的请求的DMA描述符;以及
使用所述第一接口设备基于所述访问许可执行DMA数据传输。
2.如权利要求1所述的处理系统,其特征在于,所述通信加速器电路进一步包括第二寄存器,用于存储对与托管所述第二VM的远程处理系统的第二接口设备相关联的次级PF的引用。
3.如权利要求1和2中的任一项所述的处理系统,其特征在于,所述主PF进一步与引用由所述DMA描述符处理电路处理的多个DMA描述符的完成队列相关联。
4.如权利要求2所述的处理系统,其特征在于,所述VM-VM通信加速器电路进一步包括第三寄存器,用于存储对与所述第一VM的第一虚拟设备驱动程序相关联的主虚拟功能VF的引用,
其中所述主VF与引用由所述第一VM发出的第一多个DMA描述符的工作队列以及引用由所述第一VM发出并且由所述DMA描述符处理电路处理的第二多个DMA描述符的完成队列相关联,以及
其中所述VM-VM通信加速器电路进一步包括一个或多个寄存器,用于存储对与所述第二VM的第二虚拟设备相关联的次级VF的引用,并且其中所述第二接口设备用于执行所述第二VM发出的到所述第一VM的DMA数据传输。
5.如权利要求2所述的处理系统,其特征在于,所述DMA描述符处理电路进一步用于:
响应于接收所述第一VM发出的DMA描述符,将所述第二VM标识为DMA数据传输的目的地;
基于所述ACT确定所述第一VM具有对所述第二VM的写入许可;
使用所述第一接口设备和所述第二接口设备执行从所述第一VM到所述第二VM的DMA数据传输;以及
响应于确定从所述第一VM到所述第二VM的DMA数据传输完成,将所述DMA描述符置于所述主PF的完成队列上。
6.如权利要求1所述的处理系统,其特征在于,所述访问许可包括读取许可、写入许可或执行许可中的至少一个。
7.如权利要求1所述的处理系统,其特征在于,所述DMA描述符包括与所述第一VM的第一虚拟设备相关联的虚拟功能标识符、与存储器相关联的目的地数据地址、以及与所述存储器相关联的源数据地址或数据有效载荷中的一个。
8.如权利要求1所述的处理系统,其特征在于,所述第二VM驻留在远程处理系统上,并且其中虚拟机监视器VMM控制所述第一VM和所述第二VM。
9.如权利要求1和8中的任一项所述的处理系统,其特征在于,所述DMA描述符处理电路进一步用于:
响应于接收所述第一VM公布的所述DMA描述符,将所述第二VM标识为DMA数据传输的目的地;
基于所述ACT确定所述第一VM具有对所述第二VM的写入许可;
使用所述第一接口设备和第二接口设备执行从所述第一VM到所述第二VM的DMA数据传输;以及
响应于确定从所述第一VM到所述第二VM的DMA数据传输完成,将所述DMA描述符置于所述主PF的完成队列上。
10.一种用于数据处理的系统,包括:
第一接口设备,用于支持第一虚拟机VM的直接存储器访问DMA数据传输;以及
VM-VM通信加速器电路,通信地耦合至用于执行所述第一VM的处理器,所述VM-VM通信加速器电路包括:
寄存器,用于存储对与所述第一接口设备相关联的主物理功能PF的引用,其中所述主PF与指定所述第一VM对于第二VM的访问许可的访问控制表ACT相关联;以及
直接存储器访问DMA描述符处理电路,用于:
使用与所述主PF相关联的工作队列处理引用对所述第一VM与所述第二VM之间的DMA数据传输的请求的DMA描述符;以及
使用所述第一接口设备基于所述访问许可执行DMA数据传输。
11.如权利要求10所述的系统,其特征在于,所述通信加速器电路进一步包括第二寄存器,用于存储对与托管所述第二VM的远程处理系统的第二接口设备相关联的次级PF的引用。
12.如权利要求10和11中的任一项所述的系统,其特征在于,所述主PF进一步与引用由所述DMA描述符处理电路处理的多个DMA描述符的完成队列相关联。
13.如权利要求11所述的系统,其特征在于,所述VM-VM通信加速器电路进一步包括第三寄存器,用于存储对与所述第一VM的第一虚拟设备驱动程序相关联的主虚拟功能VF的引用,
其中所述主VF与引用由所述第一VM发出的第一多个DMA描述符的工作队列以及引用由所述第一VM发出并且由所述DMA描述符处理电路处理的第二多个DMA描述符的完成队列相关联,以及
其中所述VM-VM通信加速器电路进一步包括一个或多个寄存器,用于存储对与所述第二VM的第二虚拟设备相关联的次级VF的引用,并且其中所述第二接口设备执行所述第二VM发出的到所述第一VM的DMA数据传输。
14.如权利要求11所述的系统,其特征在于,所述DMA描述符处理电路进一步用于:
响应于接收所述第一VM发出的DMA描述符,将所述第二VM标识为DMA数据传输的目的地;
基于所述ACT确定所述第一VM具有对所述第二VM的写入许可;
使用所述第一接口设备和所述第二接口设备执行从所述第一VM到所述第二VM的DMA数据传输;以及
响应于确定从所述第一VM到所述第二VM的DMA数据传输完成,将所述DMA描述符置于所述主PF的完成队列上。
15.如权利要求10所述的系统,其特征在于,所述访问许可包括读取许可、写入许可或执行许可中的至少一个。
16.如权利要求10所述的系统,其特征在于,所述DMA描述符包括与所述第一VM的第一虚拟设备相关联的虚拟功能标识符、与存储器相关联的目的地数据地址、以及与所述存储器相关联的源数据地址或数据有效载荷中的一个。
17.如权利要求10所述的系统,其特征在于,所述第二VM驻留在远程处理系统上,并且其中虚拟机监视器VMM控制所述第一VM和所述第二VM。
18.如权利要求10和17中的任一项所述的系统,其特征在于,所述DMA描述符处理电路进一步用于:
响应于接收所述第一VM公布的所述DMA描述符,将所述第二VM标识为DMA数据传输的目的地;
基于所述ACT确定所述第一VM具有对所述第二VM的写入许可;
使用所述第一接口设备和第二接口设备执行从所述第一VM到所述第二VM的DMA数据传输;以及
响应于确定从所述第一VM到所述第二VM的DMA数据传输完成,将所述DMA描述符置于所述主PF的完成队列上。
19.一种用于数据处理的方法,包括:
由通信地耦合至处理器的加速器电路接收在所述处理器上执行的第一虚拟机VM发出的直接存储器访问DMA描述符,所述DMA描述符指定所述第一虚拟机与第二虚拟机之间的使用与所述处理器相关联的第一接口设备的DMA数据传输;
基于访问控制表ACT确定从所述第一VM到所述第二VM的访问许可,其中所述加速器电路包括用于存储对与所述第一接口设备相关联的物理功能PF的引用的寄存器,并且其中所述PF与指定所述访问许可的所述ACT相关联;以及
使用所述第一接口设备基于所述访问许可执行DMA数据传输。
20.如权利要求19所述的方法,其特征在于,所述第二VM驻留在远程处理系统上,所述远程处理系统使用第二接口设备通信地耦合至所述处理器。
21.一种用于数据处理的设备,包括用于执行如权利要求19和20中的任一项所述的方法的装置。
22.一种机器可读非暂态介质,具有存储于其上的程序代码,当所述程序代码被执行时执行以下操作,所述操作包括:
由通信地耦合至处理器的加速器电路接收在所述处理器上执行的第一虚拟机VM发出的直接存储器访问DMA描述符,所述DMA描述符指定所述第一虚拟机与第二虚拟机之间的使用与所述处理器相关联的第一接口设备的DMA数据传输;
基于访问控制表ACT确定从所述第一VM到所述第二VM的访问许可,其中所述加速器电路包括用于存储对与所述第一接口设备相关联的物理功能PF的引用的寄存器,并且其中所述PF与指定所述访问许可的所述ACT相关联;以及
使用所述第一接口设备基于所述访问许可执行DMA数据传输。
23.如权利要求22所述的机器可读非暂态介质,其特征在于,所述第二VM驻留在远程处理系统上,所述远程处理系统使用第二接口设备通信地耦合至所述处理器。
CN201810112242.8A 2017-02-03 2018-02-05 基于硬件的虚拟机通信 Active CN108388528B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/423,949 2017-02-03
US15/423,949 US10241947B2 (en) 2017-02-03 2017-02-03 Hardware-based virtual machine communication

Publications (2)

Publication Number Publication Date
CN108388528A CN108388528A (zh) 2018-08-10
CN108388528B true CN108388528B (zh) 2024-03-08

Family

ID=62909896

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810112242.8A Active CN108388528B (zh) 2017-02-03 2018-02-05 基于硬件的虚拟机通信

Country Status (3)

Country Link
US (2) US10241947B2 (zh)
CN (1) CN108388528B (zh)
DE (1) DE102018000886A1 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10241947B2 (en) * 2017-02-03 2019-03-26 Intel Corporation Hardware-based virtual machine communication
US10402341B2 (en) * 2017-05-10 2019-09-03 Red Hat Israel, Ltd. Kernel-assisted inter-process data transfer
US10459751B2 (en) * 2017-06-30 2019-10-29 ATI Technologies ULC. Varying firmware for virtualized device
JP6711339B2 (ja) * 2017-10-25 2020-06-17 横河電機株式会社 通信処理装置、プログラム、および通信処理方法
KR102203648B1 (ko) * 2018-03-20 2021-01-15 미쓰비시덴키 가부시키가이샤 정보 처리 장치, 방법, 및 프로그램
US11237878B2 (en) * 2019-09-09 2022-02-01 Microsoft Technology Licensing, Llc Transforming system calls in a distributed architecture
US11405336B2 (en) * 2019-11-22 2022-08-02 Baidu Usa Llc Method for key sharing between accelerators in virtual channel with switch
US11558357B2 (en) * 2019-11-22 2023-01-17 Baidu Usa Llc Method for key sharing between accelerators with switch
US11552790B2 (en) * 2019-11-22 2023-01-10 Baidu Usa Llc Method for key sharing between accelerators
US11343083B2 (en) 2019-11-22 2022-05-24 Baidu Usa Llc Method for key sharing between accelerators in virtual channel
US11516010B2 (en) 2019-12-10 2022-11-29 Baidu Usa Llc System and method to securely broadcast a message to accelerators using virtual channels
US11457354B2 (en) 2019-12-10 2022-09-27 Baidu Usa Llc System and method to securely broadcast a message to accelerators
US11411934B2 (en) 2019-12-10 2022-08-09 Baidu Usa Llc System and method to securely broadcast a message to accelerators with switch
US11728996B2 (en) 2019-12-10 2023-08-15 Baidu Usa Llc System and method to securely broadcast a message to accelerators using virtual channels with switch
US20210382737A1 (en) * 2020-06-03 2021-12-09 Baidu Usa Llc Data protection with dynamic resource isolation for data processing accelerators
US11822964B2 (en) * 2020-06-03 2023-11-21 Baidu Usa Llc Data protection with static resource partition for data processing accelerators
US11687376B2 (en) 2020-06-12 2023-06-27 Baidu Usa Llc Method for data protection in a data processing cluster with dynamic partition
US11847501B2 (en) 2020-06-12 2023-12-19 Baidu Usa Llc Method for data protection in a data processing cluster with partition
US11563745B2 (en) * 2020-06-12 2023-01-24 Baidu Usa Llc Method for data protection in a data processing cluster with policy-based partition
US11687629B2 (en) * 2020-06-12 2023-06-27 Baidu Usa Llc Method for data protection in a data processing cluster with authentication
US11748135B2 (en) * 2020-07-30 2023-09-05 Red Hat, Inc. Utilizing virtual input/output memory management units (IOMMU) for tracking encryption status of memory pages
US20220214903A1 (en) * 2021-01-06 2022-07-07 Baidu Usa Llc Method for virtual machine migration with artificial intelligence accelerator status validation in virtualization environment
WO2023177557A1 (en) * 2022-03-15 2023-09-21 Carnegie Mellon University System and method for on-demand separated i/o channels
US20240070091A1 (en) * 2022-08-29 2024-02-29 Intel Corporation Isolation of memory regions in trusted domain
CN116069711B (zh) * 2023-04-07 2023-07-14 浪潮电子信息产业股份有限公司 直接内存访问控制器、异构设备、内存访问方法及介质
CN117312202B (zh) * 2023-11-30 2024-03-01 浙江国利信安科技有限公司 片上系统和用于片上系统的数据传输方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102650976A (zh) * 2012-04-01 2012-08-29 中国科学院计算技术研究所 一种支持单根io虚拟化用户级接口控制装置及其方法
CN105184113A (zh) * 2014-03-27 2015-12-23 英特尔公司 用于实现安全视频输出路径的硬件辅助虚拟化
US9542350B1 (en) * 2012-04-13 2017-01-10 Google Inc. Authenticating shared interconnect fabrics

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050207407A1 (en) * 2004-03-16 2005-09-22 Baumberger Daniel P Method, apparatus and system for improved packet demultiplexing on a host virtual machine
US8001543B2 (en) * 2005-10-08 2011-08-16 International Business Machines Corporation Direct-memory access between input/output device and physical memory within virtual machine environment
US7941800B2 (en) * 2006-02-23 2011-05-10 Microsoft Corporation Transferring data between virtual machines by way of virtual machine bus in pipe mode
US8521966B2 (en) * 2007-11-16 2013-08-27 Vmware, Inc. VM inter-process communications
US8667187B2 (en) * 2008-09-15 2014-03-04 Vmware, Inc. System and method for reducing communication overhead between network interface controllers and virtual machines
CN101819564B (zh) * 2009-02-26 2013-04-17 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
US8490086B1 (en) * 2009-06-30 2013-07-16 Symantec Corporation Filtering I/O communication of guest OS by inserting filter layer between hypervisor and VM and between hypervisor and devices
WO2014174580A1 (ja) * 2013-04-22 2014-10-30 富士通株式会社 情報処理装置、方法、及びプログラム
US9898430B2 (en) * 2014-11-12 2018-02-20 Vmware, Inc. Tracking virtual machine memory modified by a single root I/O virtualization (SR-IOV) device
US10157146B2 (en) * 2015-02-12 2018-12-18 Red Hat Israel, Ltd. Local access DMA with shared memory pool
US10241947B2 (en) * 2017-02-03 2019-03-26 Intel Corporation Hardware-based virtual machine communication

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102650976A (zh) * 2012-04-01 2012-08-29 中国科学院计算技术研究所 一种支持单根io虚拟化用户级接口控制装置及其方法
US9542350B1 (en) * 2012-04-13 2017-01-10 Google Inc. Authenticating shared interconnect fabrics
CN105184113A (zh) * 2014-03-27 2015-12-23 英特尔公司 用于实现安全视频输出路径的硬件辅助虚拟化

Also Published As

Publication number Publication date
DE102018000886A1 (de) 2018-08-09
US10990546B2 (en) 2021-04-27
US20180225237A1 (en) 2018-08-09
US20190179786A1 (en) 2019-06-13
CN108388528A (zh) 2018-08-10
US10241947B2 (en) 2019-03-26

Similar Documents

Publication Publication Date Title
CN108388528B (zh) 基于硬件的虚拟机通信
CN109564552B (zh) 用于存储器管理的方法、设备和系统
US20200379917A1 (en) Defining virtualized page attributes based on guest page attributes
US10346170B2 (en) Performing partial register write operations in a processor
US20170177352A1 (en) Instructions and Logic for Lane-Based Strided Store Operations
US10191748B2 (en) Instruction and logic for in-order handling in an out-of-order processor
US10216516B2 (en) Fused adjacent memory stores
US9569212B2 (en) Instruction and logic for a memory ordering buffer
US20160062768A1 (en) Instruction and logic for prefetcher throttling based on data source
US10394728B2 (en) Emulated MSI interrupt handling
US11003484B2 (en) Inter-processor interrupt virtualization with pass-through of local interrupt controller
US10922114B2 (en) System and method to improve nested virtual machine monitor performance
US20170168819A1 (en) Instruction and logic for partial reduction operations
US10452423B2 (en) Method and apparatus for light-weight virtualization contexts
US10095522B2 (en) Instruction and logic for register based hardware memory renaming
KR20160113677A (ko) 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법
US10133582B2 (en) Instruction and logic for identifying instructions for retirement in a multi-strand out-of-order processor
US20160378698A1 (en) Instruction and logic for real-time behavior of interrupts
US11416300B2 (en) Modular accelerator function unit (AFU) design, discovery, and reuse
WO2017168197A1 (en) Apparatus and method for improving performance of inter-strand communications
TWI773654B (zh) 處理器、運算系統及用於執行以向量為基礎的位元操控之方法
EP3274815B1 (en) Apparatus and method for inter-strand communication

Legal Events

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