CN113849262A - 用于无需复制而在虚拟机之间移动数据的技术 - Google Patents

用于无需复制而在虚拟机之间移动数据的技术 Download PDF

Info

Publication number
CN113849262A
CN113849262A CN202011517393.5A CN202011517393A CN113849262A CN 113849262 A CN113849262 A CN 113849262A CN 202011517393 A CN202011517393 A CN 202011517393A CN 113849262 A CN113849262 A CN 113849262A
Authority
CN
China
Prior art keywords
zcm
otag
itag
software component
manager
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011517393.5A
Other languages
English (en)
Inventor
V·尚伯格
D·贾亚西姆哈
R·R·孔达帕利
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 CN113849262A publication Critical patent/CN113849262A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • 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/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/45583Memory management, e.g. access or allocation
    • 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/45591Monitoring or debugging support
    • 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/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/653Page colouring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请公开了用于无需复制而在虚拟机之间移动数据的技术。处理器包括核、高速缓存、以及与核和高速缓存通信的ZCM管理器。响应于来自第一软件组件的访问请求,其中该访问请求涉及高速缓存行内的存储器地址,ZCM管理器用于:(a)将与存储器地址相关联的OTAG与用于第一软件组件的第一ITAG进行比较;(b)如果OTAG与第一ITAG匹配,则完成访问请求;以及(c)如果OTAG不与第一ITAG匹配,则中止访问请求。另外,响应于来自第一软件组件的发送请求,ZCM管理器用于将与存储器地址相关联的OTAG改变为与用于第二软件组件的第二ITAG匹配。描述并要求保护其他实施例。

Description

用于无需复制而在虚拟机之间移动数据的技术
技术领域
本公开总体上涉及数据处理系统,并且具体涉及用于在无需复制数据的情况下在诸如虚拟机(VM)之类的组件之间移动那个数据的技术。
背景技术
数据处理系统可执行使多个不同的虚拟机(VM)能够在数据处理系统上执行的虚拟机监视器(VMM)。并且有时,一个VM将会将数据发送到另一VM。将数据从一个VM发送到另一VM的一种方法是使用网络分组来传递数据。另一种方式是使用可由这两个VM访问的共享存储器。
为了使用网络分组,源VM可将数据从该源VM的工作存储复制到分组中,并且随后将该分组发送到目的地VM。目的地VM随后可将数据从分组复制到该目的地VM的工作存储中,并且目的地VM中的应用随后可使用那个数据。
为了使用共享存储器,源VM可将数据从其工作存储复制到共享存储器缓冲器中。目的地VM随后可将数据从共享存储器缓冲器复制到其工作存储中。然而,共享存储器通道会呈现安全风险,因为数据可能经由那个通道在两个VM之间被无意泄露。
另一方式是使目的地VM指令VMM将用于目的地VM的存储器缓冲器映射到源VM的工作存储的部分。源VM随后可将数据从源VM的工作存储复制到那个存储器缓冲器。目的地VM随后可指令VMM将那个缓冲器从源VM解除映射,并且目的地VM可将数据从那个存储器缓冲器复制到目的地VM的工作存储中。该方式要求目的地VM执行一个存储器复制和两个VMM调用。它还要求转换后备缓冲器(TLB)无效以将缓冲器从源VM解除映射。并且由于VMM不能够确定源VM的哪个线性地址将映射到缓冲器,因此,TLB无效将不得不使源VM的所有TLB转换转储清除。此类无效是昂贵的且会不利地影响性能。
在任何情况下,进行数据复制的需求都会不利地影响性能。
附图说明
从所附权利要求、下列对一个或多个示例实施例的详细描述、以及对应的附图,本发明的特征和优势将变得显而易见,其中:
图1是数据处理系统的示例实施例的框图,该数据处理系统利用用于在无需复制数据的情况下在VM之间移动那个数据的技术。
图2是用于响应于发送请求在无需复制数据的情况下在VM之间移动那个数据的过程的示例实施例的流程图。
图3是用于响应于接收请求在无需复制数据的情况下在VM之间移动那个数据的过程的示例实施例的流程图。
图4是根据一个或多个实施例的可具有多于一个的核、可具有集成存储器控制器、并且可具有集成图形器件的处理器的框图。
图5是根据一个或多个实施例的系统的框图。
图6-图7是根据一个或多个实施例的更具体的示例性系统的框图。
图8是根据一个或多个实施例的芯片上系统的框图。
具体实施方式
本公开描述用于在无需复制数据的情况下在数据处理系统的组件之间移动那个数据的技术。本公开描述在其中那些组件是VM的一个或多个示例实施例。然而,在其他实施例中,其他类型的组件可使用本文中描述的技术以在无需复制数据的情况下来移动数据。例如,在另一实施例中,当前的教导可用于在进程之间移动数据。
在一个实施例中,本文中描述的技术允许在无需任何存储器复制以及无需在VM之间建立任何共享存储器缓冲器的情况下在VM之间的数据移动。此外,该技术无需VMM调用作为在数据移动操作中的部分。该技术还提供安全隔离,以便一旦数据已被移动到目的地VM就防止源VM(或与目的地VM不同的任何其他VM)访问那个数据。
如下文更详细地所描述,在一个实施例中,数据处理系统包括第一VM、第二VM、以及用于管理VM的VMM。第一VM可将数据保持在存储器的特定区域中,并且数据处理系统随后可执行某些操作以使那个数据能够在无需复制该数据的情况下可用于第二VM。那些操作可被称为“零复制存储器”(ZCM)操作。同样,存储器的、能够被用于在无需复制数据的情况下在VM之间移动该数据的区域可被称为“ZCM区域”,“ZCM”区域的集合可被称为“ZCM池”,用于存储用于管理ZCM操作的数据的寄存器可被称为“ZCM寄存器”,等等。
为了使VM能够执行ZCM操作,VMM可将数据处理系统的主机物理地址空间(PAS)的部分定义为ZCM池。另外,存储器子系统将所有权标签(OTAG)与来自ZCM池的每个高速缓存行相关联。用于高速缓存行的OTAG将单个实体或组件(例如,特定VM)标识为那个高速缓存行的当前所有者。ZCM池的多个部分能够由VM访问,VM能够使用ZCM池,以在不复制数据的情况下以机密方式在VM之间移动那个数据。另外,VMM将不同的身份标签(ITAG)指派给每个VM。对来自VM的高速缓存行的每次访问承载那个VM的ITAG。ITAG标识正尝试访问高速缓存行的VM。一般而言,当VM尝试访问高速缓存行时,如果ITAG与OTAG匹配,则访问被允许;并且如果ITAG不与OTAG匹配,则访问被拒绝。
出于本公开的目的,术语“高速缓存”是指(从功能或电气角度看)驻留在RAM与处理器中的执行单元之间的高速存储。例如,处理器可包括多个级别的高速缓存,包括最靠近执行单元的“L1”高速缓存和最靠近RAM的LLC。例如,处理器中的执行单元可组织为一个或多个物理核,其中的每个物理核包含两个或更多个逻辑处理器(LP);并且处理器可包括用于每个LP的L1高速缓存以及由所有物理核共享的LLC。除非由上下文更清楚地指示更具体的含义,否则术语“高速缓存”共同地指用于保存经高速缓存从数据的高速缓存存储电路以及用于管理那个高速缓存存储电路的控制逻辑。那个控制逻辑可包括例如监听过滤器。另外,像“存储器子系统”和“存储器层级结构”这样的术语共同是指高速缓存、RAM、以及用于管理高速缓存和RAM的任何其他控制逻辑,诸如,存储器管理单元(MMU)和存储器控制器。
如下文更详细地所描述,数据处理系统10使用页表根据特定页尺寸来引用存储器的不同页。例如,数据处理系统10可使用4千字节(KB)的页尺寸。然而,当将数据从RAM移动到高速缓存时,存储器子系统可使用更小的细分。出于本公开的目的,术语“高速缓存行”是指用于将数据从RAM移动到高速缓存的数据单元传递。例如,数据处理系统可使用64字节的高速缓存行尺寸。并且如果此类系统中的高速缓存具有64KB的尺寸,则高速缓存能够保存1024个高速缓存行。然而,在其他实施例中,数据处理系统可使用更大或更小的页尺寸、更大或更小的高速缓存行尺寸,等等。
图1是数据处理系统10的示例实施例的框图,该数据处理系统10利用用于在无需复制数据的情况下在VM之间移动那个数据的技术。数据处理系统10是假想系统,具有各种假想组件和特征,以说明本文中所介绍的技术。具体而言,数据处理系统10包括半导体封装,该半导体封装具有包含用于实现中央处理单元(CPU)12的电路的至少一个管芯。CPU 12还可被称为处理器12。处理器12包括各种处理资源,诸如一个或多个核84,其中的每个核都包含一个或多个算术逻辑单元(ALU)、各种寄存器等。数据处理系统10还包括耦合至处理器12的其他组件,诸如,非易失性存储(NVS)22和随机存取存储器(RAM)20。
NVS 22包括可被复制到RAM 20中且由处理器12执行的指令。此类指令还可被称为“软件”。在图1的示例中,NVS 22中的软件包括VMM 30和各种VM 50A-50C。数据处理系统10可将VMM 30从NVS 22复制到RAM 20中,并且处理器随后可执行VMM 30。VMM 30随后可基于NVS 22中VM 50A-50C的相应镜像来对RAM 20中的VM 50A-50C实例化。因此,NVS 22中的软件可实现VMM 30和VM 50A-50C。图1图示针对RAM 20中的VMM 30和VM 50A-50C的镜像的复制,以指示数据处理系统10执行来自RAM 20的VMM 30和VM 50A-50C。
另外,VMM 30将不同的ITAG指派给每个VM。相应地,出于说明的目的,图1示出分别在VM 50A、50B和50C中的ITAG 52A、52B和52C。然而,VMM 30可实际上将ITAG存储在VM外部(诸如,在LZR和/或GZR中)。
每个VM可包括宾客OS和其他软件。例如,VM 50A可包括宾客OS 54,该宾客OS 54提供宾客PAS 58和对应的宾客虚拟地址空间(VAS)56。相对于RAM 20的硬件(例如,存储器模块),宾客VAS 56在高抽象级别上存在并操作。宾客PAS 58在较低抽象级别上存在并操作。宾客OS 54可使用宾客页表(GPT)55以将宾客虚拟地址转换为宾客物理地址。
RAM 20可由一个或多个存储器模块组成。出于本公开的目的,RAM 20内用于存储数据的电路可被称为“机器存储器”。另外,如下文更详细地所描述,数据处理系统10将机器存储器的部分用作ZCM区域。那个区域可被称为“机器ZCM区域”。具体而言,机器ZCM区域是机器存储器的、可由VM用于在无需复制数据的情况下将那个数据移动到其他VM的区域。
CLSND
处理器12支持使源VM通过将高速缓存的OTAG改变为目的地VM的ITAG而能够将高速缓存中的数据发送到目的地VM的指令。那条指令可被称为“高速缓存行发送”(CLSND)指令或“发送请求”。VM可在无需调用VMM的情况下执行CLSND指令。CLSND指令首先通过将源VM的ITAG与高速缓存行的OTAG比较来验证所指定的高速缓存行地址由源VM拥有。在标签匹配时,高速缓存行的OTAG字段被更新为目的地VM的ITAG。然而,如果标签不匹配,则改变被中止。可用信号向源VM通知错误,并且可执行适当的动作。
一旦源VM已成功地执行了CLSND,源VM就不再具有对高速缓存行数据的访问权,因为其OTAG不再与那个VM的ITAG匹配。数据随后能够由目的地VM访问。所需的唯一改变是高速缓存行的OTAG字段中的更新。数据行自身不移动,并保持原地不动。因此,没有任何数据复制的需求。
总体架构
为了易于理解,图1图示用于支持同时多线程(SMT)的两个LP 82-83的单个核84。然而,在一些实施例中,处理器可包括多个核,并且每个核可供给多个LP。替代地,处理器可包括不具有LP的一个或多个处理核。换言之,处理器可包括一个或多个单线程处理核。数据处理系统甚至可包括多个处理器。每个LP(或不具有LP的每个处理器或核)可包括其自身的存储器MMU、其自身的本地ZCM寄存器的集合,等等。因此,图1示出LP 82中的MMU 16和本地ZCM寄存器(LZR)17的集合。LP 83可包括与LP 82相同种类的组件。类似地,图1图示单个高速缓存14,但是高速缓存14表示多个级别的高速缓存。
LP中(或不具有LP的核中)的LZR可包括以下各项:
·“VM-ITAG寄存器”,用于保存用于当前正在那个LP上运行的VM的ITAG;以及
·“DEST-ITAGS寄存器”,用于保存用于被授权从当前VM接收数据的任何其他VM的ITAG。换言之,DEST-ITAGS寄存器中的ITAG标识用于来自当前VM的数据的经授权的目的地VM。
在一个实施例中,LZR中的一个或多个可驻留在管芯内互连(IDI)桥接器中,该IDI桥接器将处理器12中的物理核连接到处理器12的其他部分。在另一实施例中,LZR中的一个或多个能够驻留在高速缓存归属代理中或驻留在处理器中的另一功能单元中。
处理器12还包括LP共享的其他组件,诸如,存储器控制器18、以及用于保存全局ZCM设置的全局ZCM寄存器(GZR)19。GZR可包括以下各项:
·“ZCM范围寄存器”,用于定义机器ZCM区域;
·“ZCM重映射寄存器”,用于将主机物理地址重映射到机器ZCM区域;
·“ZCM基址寄存器”,用于指定ZCM池的起始;以及
·“ZCM掩码寄存器”,用于指定用于将主机物理地址转换为机器存储器地址的掩码;以及
·“ZCM切片散列掩码”,用于标识当计算用于高速缓存切片的切片索引时将被忽略的物理地址的位。
在图1中,机器存储器的、由ZCM范围寄存器指定的区域被图示为机器ZCM区域46。在一个场景中,VMM 30使用ZCM范围寄存器来指定或预留机器存储器的、用于充当ZCM区域46的1兆字节(MB)的区域。然而,在其他示例中,机器ZCM区域可以更大或更小。在一个实施例中,VMM 30将尺寸和位置值存储在ZCM范围寄存器中,以指定用于机器ZCM区域46的尺寸和起始地址或位置。
VMM 30供给支持多个宾客PAS的主机VAS 32。主机VAS的部分与用于每个VM的每个宾客PAS对应。VMM 30包括用于每个VM的补充页表(SPT),以供给两级地址转换。SPT可实现为例如扩展页表(EPT)。在图1的示例中,VMM 30使用SPT 36A以将来自VM 50的宾客物理地址(GPS)转换为主机物理地址(HPA),如由虚线70所图示。同样,VMM 30分别使用SPT 36B和36C来转换用于VM 50B和50C的地址。主机VAS 32在比宾客PAS 58更低的抽象级别处操作。
VMM 30还包括用于将HPA映射到主机VAS 32中的主机页表(HPT)35。例如,VMM 30可直接将主机物理ZCM区域44A映射到主机虚拟ZCM区域34A,如由虚线72所图示。
如上文所指示,处理器12包括存储器控制器18和至少一个MMU 16,它们协作以供给主机PAS 40。当VMM 30调度VM在处理器12上执行时(例如,当VMM 30在LP 82上调度VM 50时),MMU 16使用用于那个VM的SPT(例如,SPT 36A)以执行从由那个VM使用的(例如,来自宾客PAS 58的)GPA向主机PAS 40内的HPA的转换。存储器控制器18随后基于那些HPA来访问RAM 20。
主机PAS 40在比主机VAS 32更低的抽象级别处操作。然而,主机PAS 40仍在比RAM20的硬件更高的抽象级别处操作。
处理器12包括使处理器12能够执行ZCM操作的控制逻辑(例如,电路)。那个控制逻辑一般可称为“ZCM管理器”90,并且那些操作包括:管理机器ZCM区域,选择性地将特定的主机物理ZCM区域映射到那个机器ZCM区域,限制对机器ZCM区域的访问,等等。因此,由ZCM管理器90执行的操作包括管理主机物理ZCM池44和机器ZCM区域46。为了易于引用,图1示出处理器12内的ZCM管理器90以及诸如核84、存储器控制器18和高速缓存14之类的组件。然而,用于ZCM管理器90的控制逻辑的多个部分可驻留在诸如存储器控制器18和MMU 16之类的其他组件中。ZCM管理器90包括耦合至核84的控制逻辑以及耦合至高速缓存14的控制逻辑。用于ZCM管理器90的控制逻辑的多个部分使处理器12能够执行各种ZCM指令(例如,CLSND指令)。
VMM 30可使用ZCM管理器90以在主机PAS 40内分配主机物理ZCM池44。具体而言,VMM 30为每个VM在ZCM池44内分配一个主机物理ZCM区域。因此,图1描绘分别与VM 50A、50B和50C对应的主机物理ZCM池44中的主机物理ZCM区域44A、44B和44C。
每个主机物理ZCM区域的尺寸可与机器ZCM区域46的尺寸相同。结果,如果有X个VM,则主机物理ZCM池44的尺寸可以是机器ZCM区域46的尺寸的X倍。例如,在一个示例中,主机物理ZCM池44从HPA0xAB50_0000运行到HPA 0xAB7F-FFFF,其中每个主机物理ZCM区域占据那个池内的1MB。例如,主机物理ZCM池44可包括具有以下描述的地址范围的主机物理ZCM区域。
·主机物理ZCM区域44A:0xAB50_0000到0xAB5F_FFFF
·主机物理ZCM区域44B:0xAB60_0000到0xAB6F_FFFF
·主机物理ZCM区域44C:0xAB70_0000到0xAB7F_FFFF
另外,如上文所指示,VMM 30可定义机器ZCM区域46。ZCM管理器90随后可选择性地将机器ZCM区域46映射到主机物理ZCM区域中的特定的一个主机物理ZCM区域。换言之,存储器控制器18可将每个主机物理ZCM区域视为对机器ZCM区域46的别名。然而,如下文更详细地所描述,存储器控制器18允许一次经由仅一个别名的访问,并且存储器控制器18防止不是机器ZCM区域46、或ZCM区域46的部分(诸如,高速缓存行)的当前所有者的任何VM进行访问。
VMM 30还可在主机VAS 32内分配与主机物理ZCM池44对应的主机虚拟ZCM池34。例如,主机虚拟ZCM池34可包括主机虚拟ZCM区域34A、34B和34C,它们分别与主机物理ZCM区域44A、44B和44C对应。
另外,每个VM包括宾客虚拟ZCM区域和对应的宾客物理ZCM区域,诸如,用于VM 50A的宾客虚拟ZCM区域57和宾客物理ZCM区域59。此外,如上文所指示,用于每个VM的SPT将VM的宾客物理区域映射到对应的主机物理区域。
此外,如下文更详细地所描述,每个VM可使用其宾客虚拟ZCM区域以在不复制数据的情况下将那个数据传递到另一VM。作为那个过程的部分,存储器控制器18可将每个主机物理ZCM区域视为对机器ZCM区域46的别名。例如,第一VM可获得对机器ZCM区域46内的高速缓存行的控制,并且那个VM随后可将数据存储在那个高速缓存行中。第一VM随后可将机器ZCM区域46内的那个高速缓存行的控制或所有权传递到第二VM。第二VM随后可访问由第一VM存储在那个高速缓存行中的数据。
处理器12可包括在图1中被共同描绘为高速缓存14的一个或多个级别的高速缓存存储器。高速缓存14可被组织为高速缓存行,诸如,高速缓存行60。每个高速缓存行可包括从RAM 20读取的(或用于被存储在RAM 20中的)数据66、以及用于那个数据的主机物理(或主机虚拟)地址64。在一个示例中,每个高速缓存行包含128字节的数据,但是在其他示例中,高速缓存行可以更大或更小。
除了数据和地址之外,每个高速缓存行还包括OTAG(例如,OTAG 62)以标识拥有那个高速缓存行的VM。并且整个存储器层级结构(例如,核高速缓存、监听过滤器、LLC、存储器控制器等)维护与高速缓存行相关联的OTAG。此外,如下文更详细地所描述,VM可将机器ZCM区域46中的一个或多个高速缓存行的所有权传递到另一VM。
每当存储器控制器18代表VM从机器ZCM区域46读取,存储器控制器18就验证来自那个VM的ITAG与用于机器ZCM区域46的当前OTAG匹配,以验证那个VM是当前所有者。如果正尝试读取机器ZCM区域46的VM不是当前所有者,则存储器控制器18中止读取。
当VMM 30(例如,作为上下文切换的部分)在LP上调度VM时,VMM 30用与那个VM有关的数据更新那个LP上的寄存器。那些寄存器包括LZR,并且那个数据包括用于那个VM的ITAG。例如,如上文所指示,当VMM 30在LP上调度VM时,VMM 30还将用于那个VM的ITAG存储在用于那个LP的VM-ITAG寄存器中。此外,VMM 30用用于标识被授权从当前VM接收数据的任何其他VM的数据来更新DEST-ITAGS寄存器。换言之,那个寄存器中的那个数据标识用于来自当前VM的数据的有效目的地VM。
类似地,在涉及单线程核的实施例中,当VMM在那些核中的一个核上调度VM时,VMM用与那个VM有关的数据来更新那个核上的寄存器。
图2是用于在VM之间共享数据的方法的示例实施例的流程图。那个方法在涉及数据处理系统10的示例场景的上下文中描述。如框110处所示,该过程可开始于VMM 30使用ZCM范围寄存器来定义机器ZCM区域46。如在框112处所示,VMM 30随后可将不同的ITAG指派给VM 50A、50B和50C中的每一个。例如,VMM 30可将ITAG 52A指派给VM 50A。
如框114处所示,VMM 30随后可为每个VM分配ZCM区域。例如,VMM 30可为由主机物理ZCM区域44A支持的VM 50A分配宾客物理ZCM区域59,并且为分别由主机物理ZCM区域44B和44C支持的VM 50B和50C分配附加的宾客物理ZCM区域。相应地,SPT 36A-36C可将那些宾客物理ZCM区域映射到对应的主机物理ZCM区域。此外,ZCM管理器90将OTAG与每个主机物理ZCM区域相关联,以指示哪个VM拥有那个区域。例如,在一个场景中,用于主机物理ZCM区域44A的OTAG与用于VM 50A的ITAG 52A匹配,并且用于其他区域的OTAG分别与用于其他VM的ITAG匹配。此外,每当高速缓存行从RAM 20被加载到高速缓存14中或从高速缓存14被写回到RAM 20时,处理器12保持跟踪与每个高速缓存行相关联的OTAG。此外,如下文进一步详细地所描述,存储器控制器18仅在用于高速缓存行的OTAG与用于VM的ITAG匹配的情况下才允许那个VM访问(即,读取或写入)那个高速缓存行。
如框116处所示,VMM 30随后可通过调度VM在处理器12上运行来完成每个VM的实例化。在一个场景中,VMM 30调度VM 50A和50B在LP 82和83上运行。处理器12可包括附加的LP(未图示),并且VMM 30可调度VM 50C在那些LP上的一个LP上运行。每个VM随后可在其被指派的LP上运行。替代地,在具有单线程核的实施例中,VMM可调度VM在那些单线程核上运行。另外,如果存在不足够的LP或核,则一个或多个VM可轮流在LP或核上运行。
然而,作为调度过程的部分,VMM 30将用于每个VM的ITAG加载到那个VM的LZR的VM-ITAG寄存器中,并且VMM 20将用于每个VM的有效目的地VM的ITAG加载到那个VM的LZR的DEST-ITAGS寄存器中。例如,在一个场景中,VM 50已被配置成允许VM 50B和50C作为有效目的地VM。结果,VMM 30用ITAG 52A更新LZR 17中的VM-ITAG寄存器,并且VMM 30用用于VM50B和50C的ITAG更新LZR 17中的DEST-ITAGS寄存器。
如框130处所示,存储器控制器18随后可判定VM是否已请求对ZCM区域的访问。在一个场景中,VM 50A正执行指令以从宾客物理ZCM区域59内的地址读取。结果,存储器控制器18判定VM 50A正请求对ZCM区域的访问。结果,如框140处所示,存储器控制器18判定VM的ITAG是否与所请求地址的OTAG匹配。如果ITAG和OTAG不匹配,则存储器控制器提出错误并中止请求,如框142处所示。但是如果它们匹配,则存储器控制器完成请求,如框144处所示。过程随后可返回到框130。
然而,如果VM不是正在请求对ZCM区域的访问,则ZCM管理器可判定VM是否正在请求对OTAG的改变,如框150处所示。具体而言,ZCM管理器90使处理器12能够支持指令,该指令使与第一VM能够改变与那个VM的主机物理ZCM区域对应的高速缓存行(或多个高速缓存行)的OTAG,以将第二VM指定为那个高速缓存行(或那些高速缓存行)的所有者。如上文所指示,那条指令可被称为CLSND指令。如下文更详细地所描述,在第一VM执行了CLSND指令之后,第二VM随后可访问那个高速缓存行,因为那个高速缓存行的OTAG将与第二VM的ITAG匹配。
如框160处所示,如果VM正在请求对OTAG的改变,则ZCM管理器90可判定那个VM的ITAG是否与高速缓存行的那个地址的当前OTAG匹配。换言之,ZCM管理器90判定作出请求的VM是否是那个地址的当前所有者。如果作出请求的VM不是当前所有者,则ZCM管理器90提出错误并中止请求,如框162处所示。然而,如果作出请求的VM是当前所有者,则ZCM管理器根据请求改变用于那个高速缓存行的OTAG,如框164处所示。在具有多个级别的高速缓存的数据处理系统中,ZCM管理器还可使高速缓存行降级到LLC。结果,当新所有者访问高速缓存行时,对于那个高速缓存行,无需对旧所有者的核高速缓存的监听。
如上文所指示,DEST-ITAGS寄存器保存用于被授权从当前VM接收数据的VM的ITAG。对于每个VM,VMM 30可用用于任何经授权的目的地VM的ITAG来填充那个VM的DEST-ITAGS寄存器。
另外,在一个实施例中,为使当前VM将高速缓存行的OTAG从当前VM的ITAG改变为特定目的地VM的ITAG,当前VM使用DEST-ITAGS寄存器(结合CLSND指令)来指定新ITAG。换言之,当前VM使用DEST-ITAGS寄存器来指定目的地VM的ITAG。例如,当前VM可通过提供对DEST-ITAGS寄存器的索引对包含用于所期望的目的地VM的ITAG的条目进行索引来指定目的地VM的ITAG。
图2的过程随后可返回到框130,其中每个VM继续在其LP上运行,并且其中ZCM管理器根据需要执行ZCM操作。
然而,如上文所指示,在其他实施例中,数据处理系统可包括包含单线程核的处理器,并且VM可在那些核上运行。
再次参考图2的框110,如上文所指示,VMM 30可使用ZCM范围寄存器来定义机器ZCM区域46。并且如框114处所示,VMM 30可为每个VM分配ZCM区域。在一个实施例中,那些ZCM区域构成主机物理ZCM池44。VMM 30还可设置GZR以将主机物理ZCM池44中的ZCM区域链接到机器ZCM区域16。例如,VMM 30可将值存储在ZCM基址寄存器中以指定主机物理ZCM池44的起始,并且VMM 30可将值存储在ZCM掩码寄存器中以指定用于将主机物理地址转换为机器存储器地址的掩码。
在一个实施例中,VMM 30和ZCM管理器90(例如,包括诸如MMU 16和存储器控制器18之类的组件)将HPA的一组位用作OTAG。例如,为了使四个VM能够利用ZCM操作,VMM 30可使用两个位来对被用作ITAG和OTAG的四个不同值编码。相应地,VMM 30可将来自主机物理ZCM池44内的每个地址的两个位用作用于那个地址的OTAG。VMM 30和ZCM管理器90还可将HPA的另一组位用作ZCM池前缀。并且它们可将第三组位用作物理寻址位(PAB)。每个物理地址还可具有最大数量的位,并且那个数量可被表示为“Max_PA”。例如,在一个实施例中,Max_PA为32。另外,在那个实施例中,VMM 20和ZCM管理器90通过使用位21:20处的2位的OTAG、位19:0处的20位的物理地址、以及位31:22处的10位的ZCM池前缀来支持用于物理地址内的四个VM的四个不同OTAG。此类物理地址可说明如下(其中物理地址中的位的位置被表示为“PA”之后方括号内的值):
PA[31:22] PA[21:20] PA[19:0]
ZCM池前缀 OTAG 物理寻址位
为了归纳,PAB的数量可由“Y”表示。相应地,2^Y是每个ZCM区域(例如,机器ZCM区域46、主机物理ZCM区域44A、宾客虚拟ZCM区域57等)的尺寸。另外,如果“N”表示能够使用机器ZCM区域的VM的数量且“NB”表示容纳用于N个VM的OTAG所需的位的数量,则N=2^NB。换言之,NB=ceiling(log2N)。另外,ZCM池前缀的第一位可被表示为“X”,并且X可被计算为Y+NB。例如,在上述示例中,X=20+2=22。并且物理地址可被更一般地说明如下:
PA[Max_PA-1:X] PA[X-1:Y] PA[Y-1:0]
ZCM池前缀 OTAG 物理寻址位
在一个场景中,VMM 30为四个VM(标记为VM-A至VM-D)分配主机物理ZCM区域(下文标记为区域A至D)。另外,那些主机物理ZCM区域跨越以下HPA:
·区域A:0xAB40_0000至0xAB4F_FFFF
·区域B:0xAB50_0000至0xAB5F_FFFF
·区域C:0xAB60_0000至0xAB6F_FFFF
·区域D:0xAB70_0000至0xAB7F_FFFF
在那个场景中,Max_PA为32。同样,Y为20,因为有20个PAB(例如,可被包含在20个位中的最大值是0xF_FFFF);并且NB为2,因为2个位被用于对OTAG编码。OTAG在位22-1:20=21:20处。并且位32-1:22=31:22包含ZCM池前缀。
为了将主机物理ZCM池配置成包含此类主机物理ZCM区域,VMM 30可将值0xAB40_0000加载到ZCM基址寄存器中,并且VMM 30可将值0xFFC0_0000加载到ZCM掩码寄存器中。ZCM掩码寄存器中的值可被称为“ZCM掩码”。存储器控制器18随后可使用ZCM掩码以将主机物理ZCM池内的HPA转为机器ZCM区域46内的对应地址。
在那个场景下,四个VM可共享尺寸为1MB的机器ZCM区域,其中,VMM 30在主机PAS内留出尺寸为4MB的主机物理ZCM池。在那个主机物理ZCM池内,VMM 30可为每个VM分配尺寸为1MB的不同的主机物理ZCM区域。主机物理ZCM池提供4MB的系统地址空间,但是那个地址空间不由4MB的机器存储器支持。相反,它由1MB的机器存储器支持。四个不同的主机物理ZCM区域操作为彼此的别名,因为存储器控制器18能够将那些区域中的每个区域映射到机器存储器的同一区域。具体而言,存储器控制器18可将ZCM重映射寄存器中的数据用作重映射地址,以将机器ZCM区域重映射到HPA。此外,存储器控制器18可中止对机器ZCM区域的任何直接访问。
如上文参考图2的框114所指示,对于每个VM,VMM 30在主机物理ZCM池内分配宾客物理ZCM区域。具体而言,在涉及四个VM的上文描述的场景中,VMM 30分配在4-MB对齐的地址处起始的4-MB主机物理ZCM池。例如,VMM 30可分配在基址0xAB40_0000处起始的主机物理ZCM池。相应地,如上文所指示,VMM 20可将ZCM基址寄存器设置为0xAB40_0000。VMM 30还可将ZCM掩码寄存器设置为0xFFC0_0000。相应地,VMM 30还可为区域A-D创建以下SPT映射:
Figure BDA0002848427890000141
因此,用于VM-A的SPT将区域A映射到机器ZCM区域,用于VM-B的SPT将区域B映射到机器ZCM区域,用于VM-C的SPT将区域C映射到机器ZCM区域,并且用于VM-D的SPT将区域D映射到机器ZCM区域。
在一个场景中,不同VM根据以下序列在不同时刻充当源VM和目的地VM:
·VM-A(源)->VM-B(目的地)。
·VM-B(源)->VM-C(目的地)。
·VM-C(源)->VM-D(目的地)。
·VM-D(源)->VM-A(目的地)。
那个场景起始于VM-A在高速缓存行0xAB40_0000处创建数据。当数据正由VM-A创建时,其他VM不具有对那个数据的访问权,因为那个地址不被映射在任何其他VM的SPT中。当VM-A准备好将数据发送到VM-B时,VM-A执行CLSND指令。CLSND指令引起目的地地址处的高速缓存行从核侧高速缓存降级到末级高速缓存,并且它还将那个高速缓存行的OTAG覆写为VM-B的ITAG。结果,一旦高速缓存行被降级到LLC,LLC中的该高速缓存行的标签就为0xAB50_0000。VM-B随后可访问0xAB50_000处的高速缓存行以访问由VM-A产生的数据。当VM-B正对该数据进行操作时,其他VM不能够读取那个数据或改变那个数据,因为那个地址不被映射在除VM-B之外的任何VM的SPT中。VM2现在能够调用CLSND指令以将数据发送到VM-C,此刻高速缓存行OTAG被重写为VM3的ITAG,并且数据现在变得在地址0xAB60_0000处可见。然而,数据行自身不移动且保持在机器存储器中的同一位置处。然而,对高速缓存标签的改变导致对数据的可访问性改变,因为数据从源被发送到目的地。
CLSND(续)
在一个实施例中,当源VM执行CLSND指令时,该指令根据以下伪代码进行操作:
·Parameters(参数):
o M64:a register containing the GVA of the target data.(包含目标数据的GVA的寄存器。)
o R64:a register containing the index for the ITAG of the destination
VM.For instance,the index can be a number from 0to 3to allow fourpossible destination VMs.In other examples,the processor may allow lower orhigher indices(e.g.,from 0to 7to allow eight possible destination VMs).(包含用于目的地VM的ITAG的索引的寄存器。例如,索引可以用于允许四个可能的目的地VM的从0到3的数字。在其他示例中,处理器可允许更少或更多的索引(例如,从0到7,用于允许八个可能的目的地VM。)
·target-HPA=GET-HPA(M64).
·if write is not permitted to target-HPA then(如果不准许向目标-HPA的写入,则)
o raise error and abort.(提出错误并中止。)
·CLSND-IDI-OP(target-HPA,R64).
在以上伪代码中,CLSND-IDI-OP指示用于由ZCM管理器90(例如,由存储器控制器18内的ZCM管理器90的多个部分)执行的微指令。
在一个实施例中,CLSND-IDI-OP微指令根据以下伪代码操作:
·destination-index=R64[1:0].The value at bits 1:0of R64 will beused an index into the DEST-ITAGS register for the current VM.(R64的位1:0处的值将被用作对用于当前VM的DEST-ITAGS寄存器的索引。)
·destination-ITAG=DEST-ITAGS[destination-index]
·source-ITAG=VM-ITAG.
·current-OTAG=GET-OTAG(target-HPA).
·if source-ITAG/=current-OTAG then
o raise error and abort.(提出错误并中止。)
·if snoop filter hit on M64 then(如果监听过滤器在M64上命中,则)
o demote cache line to LLC.(将高速缓存行降级到LLC。)
o change OTAG of target-HPA to destination-ITAG.(将目标-HPA的OTAG改变为目的地-ITAG。)
o exit.(退出。)
·if LLC hit on M64 then(如果LLC在M64上命中,则)
o change OTAG of target-HPA to destination-ITAG.(将目标-HPA的OTAG改变为目的地-ITAG。)
o exit.(退出。)
·read cache line at target-HPA from RAM into LLC.(将目标-HPA处的高速缓存行从RAM读取到LLC中。)
·change OTAG of target-HPA to destination-ITAG.(将目标-HPA的OTAG改变为目的地-ITAG。)
在CLSND指令的完成之后,如果没有错误被提出,则LLC将包含目标高速缓存行,并且用于那个高速缓存行的OTAG将与用于目的地VM的ITAG匹配。
REP-CLSND
处理器12还可支持用于使源VM能够改变用于多个连续高速缓存行的OTAG的指令。此类指令可被称为“重复高速缓存行发送”(REP-CLSND)指令或“发送请求”。REP-CLSND指令可包括用于指示要发送到目的地VM的高速缓存行的数量的参数。REP-CLSND指令可使用具有为指定范围内的每个高速缓存行执行CLSND操作的微代码的微代码循环来实现。在另一实施例中,ZCM管理器90包括标签重写引擎,该标签重写引擎接受来自REP-CLSND指令的迭代计数和起始物理地址,并且响应于单个IDI操作码,那个标签重写引擎更新映射到同一高速缓存切片的多个高速缓存行上的OTAG,由此减少完成发送操作所需的IDI事务的数量。
因此,源VM可改变用于一个或多个高速缓存行的OTAG,以将用于那些高速缓存行的机器存储器从源VM的主机PAS移动到目的地VM的主机PAS。换言之,源VM可将数据推入目的地VM。
CLRCV
处理器12还可支持用于将数据从源VM拉取到目的地或“消耗方”VM的指令。用于使消耗方VM能够将高速缓存行的OTAG从源VM的OTAG改变为消耗方VM的OTAG的指令可被称为“高速缓存行接收”(CLRCV)指令或“接收请求”。拉取模型可在其中源VM不主动将数据发送到消耗方VM但替代地允许消耗方VM在需要时获取数据的情况下被使用。例如,源VM可包括产生分组的网络接口控制器(NIC)。源VM随后可将分组头部发送给消耗方VM。在多数情况下,消耗方VM可仅需要对分组头部操作,而无需访问分组有效载荷的数据。在此类情况下,无需将分组有效载荷的OTAG从源VM的OTAG改变为消耗方VM的OTAG。
在一个场景中,可对涉及根据以下序列将分组传递到彼此的VM的分组处理流水线上使用拉取模型:
VM1->VM2->VM3->VM1
另外,在该场景中,VM1具有被指派给它的NIC,并且NIC在主机物理ZCM池中产生分组头部和有效载荷。具体而言,NIC将用于分组头部和有效载荷的数据存储在VM1的主机物理ZCM区域中。用于分组的分组头部和数据因此以VM1的OTAG起始。VM1随后将分组头部发送到VM2,该VM2对分组头部进行变换。VM2随后将分组头部发送到VM3。作为其分组处理的部分,VM3可能需要对分组头部和有效载荷进行操作。分组头部被发送到VM3,但是现在VM3需要接收当前用VM1的OTAG来标记的有效载荷数据。VM3随后可使用CLRCV指令来将那个OTAG改变为VM3的OTAG。随后,在处理了有效载荷之后,VM3将分组头部和有效载荷数据发送到VM1。VM1随后可使用CLRCV以将OTAG往回改变为VM1的OTAG,并且VM1随后可使用被指派给VM1的NIC来传输分组。
CLRCV指令使消耗方VM能够从原始VM接收高速缓存行,该原始VM不一定是紧接在前的源VM。然而,如果原始的源VM未明确地授权消耗方VM接收那个高速缓存行,则CLRCV指令不使消耗方VM能够接收那个高速缓存行。在一个实施例中,原始的源VM创建令牌以提供用于被批准的消耗方VM的ITAG,并且CLRCV指令使用那个令牌来验证消耗方VM已被原始的源VM授权。此类令牌可被称为“消耗方令牌”。
在一个实施例中,消耗方令牌被实现为位于VMM 30的地址空间内的数组数据结构的元素,但是那个存储器不被映射到任何VM的地址空间中。数组的每个元素包含以下信息:
·Start-PA(起始-PA):起始物理地址。
·End-PA(结束-PA):结束物理地址。
·Owner-ITAG(所有者-ITAG):令牌的当前所有者的ITAG。
另外,VMM 30最初可用用于每个VM的一个令牌填充那个数组,以将当前所有者ITAG与对应的地址范围相关联。例如,VMM 30可如下文所指示用用于第一VM的数据来初始化第一元素,并且VMM 30可相应地用用于其他VM的数据来初始化其他元素。
·Start-PA(起始-PA):主机物理ZCM区域44A的起始物理地址。
·End-PA(结束-PA):主机物理ZCM区域44A的结束物理地址。
·Owner-ITAG(所有者-ITAG):ITAG 52A(即,用于VM 50A的ITAG)。
MKTOKEN
处理器12支持使源VM能够创建或改变消耗方令牌的指令。那条指令可被称为“制作令牌”(MKTOKEN)指令。MKTOKEN指令取得以下操作数或参数:
·r1:start-GVA(起始-GVA)。起始宾客虚拟地址。
·r2:length(长度)。
·r3:destination-ITAG-index(目的地-ITAG-索引)。对经授权的消耗方VM的ITAG的索引。
·r4:token-index(令牌-索引)。
当被执行时,MKTOKEN指令根据以下伪代码进行操作:
·start-PA=GET-HPA(start-GVA)and test for write permission.
(start-PA=GET-HPA(start-GVA)并对写许可进行测试。)
·end-PA=start-PA+length.
·if token-index>MAX_TOKEN_INDEX then
o raise error(e.g.,general protection fault)and abort.
(提出错误(例如,通用保护错误)并中止。)
·//计算用于要被改变的令牌的物理地址。
·token-PA=TOKEN_ARRAY_BASE+token-index*CONST_TOKEN_SIZE
·//验证正在修改的令牌是那个令牌的当前所有者。
·if token-PA->owner-ITAG/=VM-ITAG then
o raise error and abort.
(提出错误(例如,通用保护错误)并中止。)
·new-owner-ITAG=DEST-ITAGS[destination-ITAG-index].
·//记录令牌中的新所有者以及被允许用该令牌进行操作的地址范围:
·token-PA->start-PA=start-PA.
·token-PA->end-PA=end-PA.
·token-PA->owner-ITAG=new-owner-ITAG.
在上文描述的场景中,VM1可使用MKTOKEN来创建消耗方令牌,该消耗方令牌将VM3标识为针对包含分组有效载荷的存储器范围的经授权的消耗方。
CLRCV(续)
VM3(即,消耗方VM)随后可使用CLRCV来接管那个目的地存储器范围的所有权。CLRCV指令可根据以下伪代码进行操作:
·Parameters(参数):
o M64:a register containing the GVA of the target data.(包含目标数据的GVA的寄存器。)
o R64:a register containing(a)an index to the ITAG of the originalsource VM,and(b)an index to the consumer token that was created by theoriginal source VM for the consumer VM.For instance,for an index range from0-3,bits 1:0of R64 may contain the index to the ITAG of the original sourceVM,and bits 63:32may specify the index of the consumer token.However,otherembodiments may use fewer or more bits to contain smaller or larger indexranges.(包含(a)对原始的源VM的ITAG的索引以及(b)对由原始的源VM为消耗方VM创建的消耗方令牌的索引的寄存器。例如,对于从0-3的索引范围,R64的位1:0可包含对原始的源VM的ITAG的索引,并且位63:32可指定消耗方令牌的索引。然而,其他实施例可使用更少或更多的位以包含更小或更大的索引范围。)
·token-index=R64[63:32].
·token-PA=TOKEN_ARRAY_BASE+token-index*CONST_TOKEN_SIZE.
·if token-PA->owner-ITAG/=VM-ITAG then
o raise error and abort.
(提出错误并中止。)
·target-HPA=GET-HPA(M64)and test for write permission.
(target-HPA=GET-HPA(M64)并对写许可进行测试。)
·if target-HPA<token-PA->start-PA OR target-HPA>token-PA->end-PAthen
o raise error and abort.
(提出错误并中止。)
·source-index=R64[1:0].Source-index gets the index(within the DEST-ITAGS of the consumer VM)to the ITAG for the source VM.(source-index取得针对源VM的ITAG的(消耗方VM的DEST-ITAGS内的)索引。)
·CLRCV-IDI-OP(ADDR=target-HPA,source-index).
在以上伪代码中,CLRCV-IDI-OP指示用于由ZCM管理器90(例如,由存储器控制器18内的ZCM管理器90的多个部分)执行的微指令。那条指令可涉及长度线,并且source-index参数可在那些长度线上被传递。替代地,对源ITAG的索引可在不同组的线上被携载。可以不需要用于长度的参数值,因为该指令可简单地处理整个高速缓存行。
在一个实施例中,CLRCV-IDI-OP微指令根据以下伪代码操作:
·source-ITAG=DEST-ITAGS[source-index].
·consumer-ITAG=VM-ITAG.
·current-OTAG=GET-OTAG(target-HPA).
·if current-OTAG/=source-ITAG then
o raise error and abort.
(提出错误并中止。)
·if snoop filter hit on target-PA then(如果监听过滤器在目标-PA上命中,则)
o demote cache line at target-PA to LLC.(将目标-PA处的高速缓存行降级到LLC。)
o change OTAG of target-HPA to consumer-ITAG.(将目标-HPA的OTAG改变为消耗方-ITAG。)
o exit.(退出。)
·If LLC hit on target-PA then(如果LLC在目标-PA上命中,则)
o change OTAG of target-HPA to consumer-ITAG.(将目标-HPA的OTAG改变为消耗方-ITAG。)
o exit.(退出。)
·read cache line at target-HPA from RAM into LLC.(将目标-HPA处的高速缓存行从RAM读取到LLC中。)
·change OTAG of target-HPA to consumer-ITAG.(将目标-HPA的OTAG改变为消耗方-ITAG。)
在CLRCV指令的完成之后,如果没有错误被提出,则LLC将包含目标高速缓存行,并且用于那个高速缓存行的OTAG将与用于消耗方VM的ITAG匹配。下文还参考图3描述用于执行CLRCV指令的过程。
图3是用于响应于接收请求(诸如,CLRCV指令)在无需复制数据的情况下在VM之间移动那个数据的过程的示例实施例的流程图。图3的过程起始于ZCM管理器90判定它是否已从VM接收到CLRCV指令,如框210处所示。如上文所指示,正在执行CLRCV指令的VM可被称为“消耗方VM”,并且该CLRCV指令的参数可包括用于标识目标令牌的令牌索引、用于标识源VM的ITAG的源索引、以及用于标识用于OTAG改变的目标地址的GVA。
如框212处所示,当ZCM管理器90接收到CLRCV指令时,它可通过使用令牌索引来选择目标令牌来进行响应。如框220处所示,ZCM管理器90随后可判定那个目标令牌中的ITAG是否与消耗方VM的ITAG匹配。如框222处所示,如果令牌中的ITAG不与消耗方VM的ITAG匹配,则ZCM管理器90可提出错误并中止请求。然而,如果令牌中的ITAG与消耗方VM的ITAG匹配,则ZCM管理器90随后可判定目标地址是否在由令牌标识的地址范围内,如框230处所示。如果目标地址不在由令牌标识的地址范围内,则ZCM管理器90可提出错误并中止指令,如框222处所示。
然而,如果目标地址在由令牌标识的地址范围内,则ZCM管理器随后可基于当前VM的源索引参数和DEST-ITAGS寄存器来判定用于那个地址的当前OTAG是否与用于源VM的ITAG匹配。如果用于目标地址的当前OTAG不与用于源VM的ITAG匹配,则ZCM管理器90可提出错误并中止指令,如框222处所示。然而,如果用于目标地址的当前OTAG不与用于源VM的ITAG匹配,则ZCM管理器90随后可将包含该目标地址的高速缓存行的OTAG改变为与消耗方VM的ITAG匹配,如框242处所示。
REP-CLRCV
处理器12还支持用于使消耗方VM能够接收多个高速缓存行的指令。那条指令可被称为“重复高速缓存行接收(REP-CLRCV)指令或“接收请求”。那条指令的一个参数可以是用于指示要接收的高速缓存行的数量的寄存器(“RCX”)。REP-CLRCV可使用微代码循环来实现,在该微代码循环中,微代码为范围中的每个高速缓存行生成CLRCV-IDI-OP。替代地,REPCLRCV可将迭代计数和起始物理地址发送到高速缓存切片中的标签重写引擎,使得单个IDI操作码可被用于更新映射到同一高速缓存切片的多个高速缓存行上的高速缓存行标签,由此减少完成接收操作所需的IDI事务的数量。
REP-CLRCV指令可根据以下伪代码执行操作:
·token-index=R64[63:32].
·token-PA=TOKEN_ARRAY_BASE+token-index*CONST_TOKEN_SIZE.
·if token-PA->owner-ITAG/=VM-ITAG then
o raise error and abort.(提出错误并中止。)
·target-PA=GET-HPA(M64)and test for write permission.(arget-PA=GET-HPA(M64)并对写许可进行测试。)
·start-PA=target-PA.
·end-PA=target-PA+RCX*64.
·if start-PA<token-PA->start-PA OR end-PA>token-PA->end-PA then
o raise error and abort.(提出错误并中止。)
·source-index=R64[1:0].
·WHILE RCX>0
o CLRCV-IDI-OP(ADDR=end-PA,length=source-index).
o decrement RCX.(使RCX递减。)
o end-PA=end-PA–64.
o open interrupt windows to detect any interrupts/events.(开放中断窗口以检测任何中断/事件。)
·ENDWHILE
因此,该指令从最高地址到最低地址向后进行接收操作。另外,当执行那些接收操作时,在每个迭代之间,指令还打开中断窗口以检测任何中断/事件。如果任何中断/事件被检测到,则指令可在处置了那些中断/事件之后被重启。由于指令向后工作且RCX对每次迭代递减,因此该指令可在无需由软件作出的任何进一步的指令操作数改变的情况下被重启。
在一个实施例中,处理器包括以多个切片组织的高速缓存,其中,物理地址的一些位被用于确定切片索引。在此类实施例中,当切片散列被计算时,OTAG位在该切片散列计算中被忽略,使得仅在OTAG位上有所不同的所有地址别名映射到同一高速缓存切片。这可通过VMM定义掩码来实现,该掩码用于在计算切片散列之前被应用于物理地址。该掩码可被称为“ZCM-slice-hash-mask”(ZCM-切片-散列-掩码),并且它可具有被设置为0的OTAG位。例如,在诸如上文描述的一个场景之类的场景中,VMM可将ZCM-slice-hash-mask定义为0xFF9F_FFFF。结果,那个掩码将使位21:20(即,OTAG位)在切片散列中被掩码。
例如,切片标识符可根据以下伪代码来计算:
·PA-input-to-slice-hash=PA.
·ZCM-mask=the value in the ZCM mask register.(ZCM-mask=ZCM掩码寄存器中的值。)
·ZCM-base=the value in the ZCM base register.(ZCM-base=ZCM基址寄存器中的值。)
·IF(PA&ZCM-mask==ZCM-base&ZCM-mask)then
o PA-input-to-slice-hash=PA-input-to-slice-hash&ZCM-slice-hash-mask.
·slice-id=slice-hash(PA-input-to-slice-hash)
结果,仅在OTAG位上有所区别的所有地址别名将映射到同一高速缓存切片。
在替代实施例中,数据处理系统可使用密钥来对存储器中的数据加密,并且用于那些密钥的密钥标识符(KID)可被用作OTAG。例如,数据处理系统可使用像由英特尔公司以“多密钥全存储器加密”(MK-TME)的名称或商标提供的技术那样的技术。具体而言,KID形成每个物理存储器地址的部分,并且那个KID可被用作高速缓存行上的OTAG。在一个实施例中,VMM将机器存储器的部分分配为机器ZCM区域,并且VMM将那个区域映射到用于具有被指派给那个VM的KID的每个VM的宾客物理存储器中。VMM可使用被指派给链中的第一VM的KID来初始化机器ZCM区域。替代地,VMM可将一些缓冲器给予每个VM,并且VMM可用被指派给相应VM的KID来初始化每个缓冲器。
附加实施例
图4-图8是示例性计算机架构的框图。此类架构可包括如本文中所描述的用于控制对处理器调试特征的访问的技术。图4-图8中相同或类似的要素具有同样的附图标记。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
图4是根据一个或多个实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器1100的框图。图4中的实线框图示具有单个核1102A、系统代理1110、一个或多个总线控制器单元的集合1116的处理器1100,而虚线框的任选增加图示具有多个核1102A-N、系统代理单元1110中的一个或多个集成存储器控制器单元的集合以及专用逻辑1108的替代处理器700。
因此,处理器1100的不同实现可包括:1)CPU,其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1102A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核1102A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1102A-N是大量通用有序核。因此,处理器1100可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器1100可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次结构包括核内的一个或多个级别的高速缓存1104A-1104N、一个或多个共享高速缓存单元的集合1106、以及耦合到集成存储器控制器单元的集合1114的外部存储器(未示出)。共享高速缓存单元的集合1106可包括一个或多个中间级别的高速缓存,诸如,L2、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元1112将专用逻辑1108、共享高速缓存单元的集合1106、以及系统代理单元1110/(多个)集成存储器控制器单元1114互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元1106与核1102A-N之间维持一致性。
系统代理单元1110包括协调和操作核1102A-N的那些组件。系统代理单元1110可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核1102A-N以及集成图形逻辑1108的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1102A-N在架构指令集方面可以是同构的或异构的;即,核1102A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。此类核1102A-N可将某些存储器访问指令转换为如本文中所描述的子行存储器访问指令。
图5是根据一个或多个实施例的系统1200的框图。系统1200可以包括一个或多个处理器1210、1215,这些处理器耦合到控制器中枢1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(GMCH)1290和输入/输出中枢(IOH)1250(其可以在分开的芯片上);GMCH 1290包括存储器控制器和图形控制器,存储器控制器用于控制所耦合的存储器内的操作,存储器1240和协处理器1245耦合到该存储器控制器和图形控制器;IOH 1250将输入/输出(I/O)设备1260耦合到GMCH 1290。或者,存储器和图形控制器中的一个或这两者被集成在处理器内,存储器1240和协处理器1245直接耦合到处理器1210,并且控制器中枢1220与IOH 1250处于单个芯片中。
附加的处理器1215的任选性在图5中通过虚线来表示。每一处理器1210、1215可包括本文中描述的处理核中的一个或多个,并且可以是处理器1100的某一版本。
存储器1240可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1220经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接1295来与(多个)处理器1210、1215进行通信。
在一个实施例中,协处理器1245是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢1220可以包括集成图形加速器。
在物理资源1210、1215之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。
在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1210将这些协处理器指令识别为具有应当由附连的协处理器1245执行的类型。因此,处理器1210在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1245。(多个)协处理器1245接受并执行所接收的协处理器指令。
图6和图7是根据一个或多个实施例的更具体的示例性系统1300和1400的框图。如图6中所示,多处理器系统1300是点对点互连系统,并且包括经由点对点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380中的每一个都可以是处理器1100的某一版本。在一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中,处理器1370和1380分别是处理器1210和协处理器1245。
处理器1370和1380示出为分别包括集成存储器控制器(IMC)单元1372和1382。处理器1370还包括作为其总线控制器单元的一部分的点对点(P-P)接口1376和1378;类似地,第二处理器1380包括P-P接口1386和1388。处理器1370、1380可经由使用P-P接口电路1378、1388的P-P接口1350来交换信息。如图6中所示,IMC 1372和1382将处理器耦合到相应的存储器,即存储器1332和存储器1334,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1370、1380可各自经由使用点对点接口电路1376、1394、1386、1398的各个P-P接口1352、1354来与芯片组1390交换信息。芯片组1390可以任选地经由高性能接口1339来与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1390可以经由接口1396耦合到第一总线1316。在一个实施例中,第一总线1316可以是外围组件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图6中所示,各种I/O设备1314可连同总线桥1318一起耦合到第一总线1316,该总线桥1318将第一总线1316耦合到第二总线1320。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列(FPGA)或任何其他处理器的一个或多个附加处理器1315耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线1320,这些设备包括例如键盘和/或鼠标1322、通信设备1327以及存储单元1328,该存储单元1328诸如可包括指令/代码和数据1330的盘驱动器或者其他大容量存储设备。此外,音频I/O 1324可以被耦合到第二总线1320。注意,其他架构是可能的。例如,代替图6的点对点架构,系统可以实现多分支总线或其他此类架构。
图7呈现根据一个或多个实施例的第二更具体的示例系统1400的框图。已从图7省略图6的某些部分以避免使图7的其他部分含糊。
图7图示处理器1370、1380可分别包括集成存储器和I/O控制逻辑(“CL”)1372和1382。因此,CL 1372、1382包括集成存储器控制器单元,并包括I/O控制逻辑。图7图示不仅存储器1332、1334耦合到CL 1372、1382,而且I/O设备1414也耦合到控制逻辑1372、1382。传统I/O设备1415被耦合到芯片组1390。
图8是根据一个或多个实施例的芯片上系统(SoC)1500的框图。虚线框是更先进的SoC上的任选的特征。在图8中,(多个)互连单元1502被耦合到:应用处理器1510,其包括一个或多个核的集合1102A-N(其包括所组成的高速缓存单元1104A-N)以及(多个)共享高速缓存单元1106;系统代理单元1110;(多个)总线控制器单元1116;(多个)集成存储器控制器单元1114;一个或多个协处理器的集合1520,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1530;直接存储器存取(DMA)单元1532;以及用于耦合到一个或多个外部显示器的显示单元1540。在一个实施例中,(多个)协处理器1520包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器、安全处理器,等等。
结论
如上文所指示,处理器包括ZCM管理器,该ZCM管理器使诸如VM之类的软件组件能够在不复制数据的情况下将那个数据从一个软件组件移动到另一软件组件。例如,第一VM可使用发送请求以通过改变用于高速缓存行的OTAG来将那个高速缓存行中的数据从第一VM发送到第二VM。替代地,第一VM可创建令牌,以将第二VM标识为针对由第一VM所拥有的指定区域的经授权的消耗方VM,并且第二VM随后可使用接收请求来将用于那个区域的OTAG改变为与用于第二VM的ITAG匹配。
此外,当前的教导可用于在其他类型的组件之间移动数据。例如,当前的教导可应用于进程之间的通信、人工智能(AI)加速器之间的通信、或CPU子系统与AI加速器之间的通信。
在本公开中,诸如“实施例”、“一个实施例”和“另一实施例”之类的表达旨在总体上参考实施例的可能性。那些表达不旨在将本发明限制于特定的实施例配置。如本文中所使用,那些表达可引用相同的实施例或不同的实施例,并且那些实施例可组合成其他实施例。鉴于本文中所描述和所图示的原理和示例实施例,将认识到所图示的实施例可以在布置和细节方面进行修改而不背离本文中所描述和/或所图示的原理。
另外,根据本公开,设备可包括指令和其他数据,这些指令和其他数据在由处理器访问时使设备能够执行特定操作。出于本公开的目的,使设备能够执行操作或使设备执行操作的指令通常可称为“软件”。软件等也可称为“控制逻辑”。在引导进程期间使用的软件可被称为“固件”。被存储在处理器的非易失性存储器中的软件也可被称为“固件”。可使用任何合适的结构或结构的组合来组织软件。相应地,像程序和模块之类的术语一般可用于涵盖广泛范围的软件构造,包括但不限于应用程序、子程序、例程、函数、过程、驱动器、库、数据结构、进程、固件、微代码、以及其他类型的软件组件。同样,应当理解,软件模块可包括多于一个的组件,并且那些组件可协作以完成该模块的操作。另外,软件使设备执行的操作可包括创建操作上下文、使特定数据结构实例化等。实施例可被实现为在可编程系统上执行的软件,该可编程系统包括至少一个处理器、存储系统(例如,易失性存储器和/或一个或多个非易失性存储元件)、至少一个输入设备、以及至少一个输出设备。
可使用任何合适的操作环境和编程语言(或操作环境和编程语言的组合)来实现本文中所描述的软件组件。例如,能以高级过程或面向对象的编程语言或者以汇编或机器语言来实现程序代码。本文中描述的机制不限于任何特定的编程语言。语言可以是汇编语言或解释语言。
包含数据并且允许另一组件获得那个数据的介质可以被称为机器可访问介质或机器可读介质。相应地,实施例可包括包含用于执行本文中所描述的操作中的一些或全部的指令的机器可读介质。此类介质总体上可被称为“装置”,并且具体地被称为“程序产品”。在一个实施例中,用于多个组件的软件存储在一个机器可读介质中。在其他实施例中,可以使用两个或更多个机器可读介质来存储用于一个或多个组件的软件。例如,用于一个组件的指令可被存储在一个介质中,并且用于另一组件的指令可被存储在另一介质中。或者,用于一个组件的指令的部分可被存储在一个介质中,而用于那个组件的指令的其余部分(以及用于其他组件的指令)可被存储在一个或多个其他介质中。类似地,上文在一个实施例中被描述为驻留在特定设备上的软件在其他实施例中可驻留在一个或多个其他设备上。例如,在分布式环境中,一些软件可在本地被存储,并且一些软件可在远程被存储。类似地,上文在一个实施例中被描述为在一个特定设备上执行的操作在其他实施例中可由一个或多个其他设备执行。
其他实施例可被实现在数据中,并且可被存储在非暂态存储介质上,该非暂态存储介质如果被至少一个机器使用则使得该至少一个机器制造至少一个集成电路以执行根据本公开的一个或多个操作。更进一步的实施例可以在包括信息的计算机可读存储介质中实现,该计算机可读存储介质在被制造在SoC或其他处理器中时用于将SoC或其他处理器配置成用于执行根据本公开的一个或多个操作。至少一个实施例的一个或多个方面可由存储在机器可读介质上的表示处理器内的各种逻辑单元的代表性指令来实现,并且这些代表性指令在由机器读取时使得该机器制造用于执行本文中所描述的技术的逻辑单元。表示各种逻辑单元的指令可被称为“IP核”,并且它们可被存储在有形的机器可读介质上并且可被供应给各个消费者或制造设施以加载到实际制作该逻辑单元或处理器的制造机器中。至少一个实施例的一个或多个方面可包括机器可读介质,该机器可读介质包含指令或设计数据,该设计数据定义本文中所描述的结构、电路、装置、处理器和/或系统特征。例如,设计数据能以硬件描述语言来格式化。
一些实施例的机器可读介质可包括但不限于有形的非暂态存储组件以及处理器、控制器和包括数据存储设施的其他组件,有形的非暂态存储组件诸如,磁盘、光盘、磁光盘、动态随机存取存储器(RAM)、静态RAM、只读存储器(ROM)、固态驱动器(SSD)、相变存储器(PCM)等。出于本公开的目的,术语“ROM”一般可用于指代非易失性存储器设备,诸如可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存ROM、闪存等。
还应理解,本文中所描绘的硬件和软件组件表示功能元件,这些功能元件合理地自包含以使得每一个功能元件可以基本上独立于其他功能元件来设计、构造或更新。在替代实施例中,许多组件可被实现为用于提供本文中所描述和所图示的功能的硬件、软件或硬件和软件的组合。例如,在一些实施例中,用于实现所描述的操作中的一些或全部的控制逻辑中的一些或全部可被实现在硬件逻辑中(例如,被实现为集成电路芯片中的固件和/或微代码、被实现为芯片中的可编程门阵列、被实现为芯片中的专用集成电路、被实现为芯片中任何其他合适类型的硬件电路、或者被实现为一个或多个芯片中的硬件逻辑的两个或更多个不同实例和/或两种或更多种不同类型的硬件逻辑的组合)。另外,诸如“电路”和“电路系统”之类的术语在本文中可以可互换地使用。那些术语以及像“逻辑”之类的术语可用于指代模拟电路、数字电路、硬连线电路、可编程电路、处理器电路、微控制器电路、硬件逻辑电路、状态机电路、任何其他类型的硬件组件、或硬件组件的任何合适的组合。
此外,当前教导可用于在许多不同种类的数据处理系统中取得优势。此类数据处理系统可包括但不限于加速器、芯片上系统、可穿戴设备、手持设备、智能电话、电话、诸如音频设备、视频设备、音频/视频设备(例如,电视和机顶盒)之类的娱乐设备、车载处理系统、个人数字助理(PDA)、平板计算机、膝上型计算机、便携式计算机、个人计算机(PC)、工作站、服务器、客户端-服务器系统、分布式计算系统、超级计算机、高性能计算系统、计算集群、大型计算机、小型计算机和用于处理或传送信息的其他设备。相应地,除非另外明确指定或者由上下文要求,否则对任何特定类型的数据处理系统(例如,PC)的引用都应当被理解为也包含其他类型的数据处理系统。数据处理系统也可被称为装置。数据处理系统的组件也可被称为装置。
另外,除非另外明确指定,否则被描述为彼此耦合、彼此通信、彼此响应等等的组件无需彼此持续通信并且无需彼此直接耦合。另外,当一个组件被描述为从另一组件接收数据或者向另一组件发送数据时,除非另外明确指定,否则该数据可通过一个或多个中间组件被发送或被接收。例如,当数据处理系统正在操作时,如果数据处理系统中的两个组件能够彼此通信(可能经由一个或多个中间组件),则该数据处理系统中的那两个组件可被描述为彼此“通信”。
另外,数据处理系统的一些组件可被实现为具有接口(例如,连接器)的适配器卡以用于与总线通信。替代地,使用诸如可编程或不可编程逻辑器件或阵列、专用集成电路、嵌入式计算机、智能卡等组件,设备或组件可被实现为嵌入式控制器。出于本公开的目的,术语“总线”包括可由多于两个的设备共享的路径以及点对点路径。类似地,诸如“线”、“引脚”等之类的术语应被理解为指代导线、导线集合、或者任何其他合适的导体或导体集合。例如,总线可包括一个或多个串行链路,串行链路可包括一个或多个通道,通道可由一个或多个差分信令对组成,并且那些导体携载的电的改变的特性可被称为线上的信号。
另外,出于本公开的目的,术语“处理器”表示能够执行软件的硬件组件。例如,处理器可被实现为中央处理单元、处理核或任何其他合适类型的处理元件。中央处理单元可包括一个或多个处理核,并且设备可以包括一个或多个中央处理单元。
另外,虽然已经参照以特定顺序执行的特定操作描述了一个或多个示例过程,但可以对那些过程应用众多修改以得到本发明的众多替代实施例。例如,替代实施例可包括使用比所公开的全部操作更少的操作的过程、使用附加操作的过程以及在其中本文公开的各个操作被组合、细分、重排列或以其他方式更改的过程。
类似地,在示例实施例中已被描述为驻留在其他组件内的组件在替代实施例中能以不同方式被布置。例如,上文中被描述为驻留在处理器的非易失性存储的中的组件中的至少一些在替代实施例中可驻留在处理器外部的非易失性存储中。
实施例包括下列示例:
示例A1是一种处理器,其包括:用于执行指令的核、用于存储数据的高速缓存、以及与核和高速缓存通信的ZCM管理器。ZCM管理器用于:响应于从第一软件组件接收到访问请求而执行以下操作,其中,该访问请求涉及高速缓存行内的存储器地址:(a)将与存储器地址相关联的OTAG与用于第一软件组件的第一ITAG进行比较;(b)如果OTAG与第一ITAG匹配,则完成访问请求;以及(c)如果OTAG不与第一ITAG比较,则中止访问请求。另外,响应于来自第一软件组件的发送请求,ZCM管理器用于将与存储器地址相关联的OTAG改变为与用于第二软件组件的第二ITAG匹配。
示例A2是根据示例A1的处理器,其中,ZCM管理器用于将OTAG与高速缓存行相关联,并且ZCM管理器用于通过将包括存储器地址的高速缓存行的OTAG改变为与第二ITAG匹配来对发送请求作出响应。
示例A3是根据示例A1的处理器,其中,ZCM管理器使第一软件组件能够使用发送请求,以在不调用VMM的情况下将与存储器地址相关联的OTAG改变为与第二ITAG匹配。示例A3还可包括示例A2的特征。
示例A4是根据示例A1的处理器,其中,第一软件组件包括第一ITAG已被指派给的第一VM,并且第二软件组件包括第二ITAG已被指派给的第二ITAG。另外,处理器进一步包括MMU,用于将与访问请求相关联的GPU转换为包括OTAG的HPA。另外,将与存储器地址相关联的OTAG与用于第一软件组件的第一ITAG进行比较的操作包括:将已被指派给第一VM的第一ITAG与HPA中的OTAG进行比较,以验证第一VM是否拥有包括HPA的高速缓存行。示例A4还可包括示例A2-A3中的任一者或多者的特征。
示例A5是根据示例A4的处理器,其中,ZCM管理器使VMM能够:(i)将机器存储器的部分预留为机器ZCM区域;(ii)为第一VM分配第一主机物理ZCM区域,其中,第一主机物理ZCM区域具有第一OTAG;(iii)为第二VM分配第二主机物理ZCM区域,其中,第二主机物理ZCM区域具有第二OTAG;(iv)如果HPA包括第一OTAG,则将来自机器ZCM区域的高速缓存行映射到第一主机物理ZCM区域;以及(v)如果HPA包括第二OTAG,则将来自机器ZCM区域的高速缓存行映射到第二主机物理ZCM区域。
示例A6是根据示例A1的处理器,其中,ZCM管理器进一步用于:响应于来自在核上执行的第三软件组件的接收请求,将与存储器地址相关联的OTAG改变为与用于第三软件组件的第三ITAG匹配。示例A6还可包括示例A2-A5中的任一者或多者的特征。
示例A7是根据示例A6的处理器,其中,ZCM管理器进一步用于:(i)判定与存储器地址相关联的OTAG是否与用于源软件组件的所指定的ITAG匹配;以及(ii)响应于判定了与存储器地址相关联的OTAG不与用于源软件组件的所指定的ITAG匹配,在不改变与存储器地址相关联的OTAG的情况下中止接收请求。
示例B1是一种数据处理系统,其包括:RAM、与RAM通信的处理器、处理器中的核、处理器中的高速缓存、以及处理器中的、与核和高速缓存通信的ZCM管理器。ZCM管理用于从在核上执行的第一软件组件接收访问请求,其中,该访问请求涉及高速缓存行内的存储器地址:响应于接收到访问请求,ZCM管理器用于:(i)将与存储器地址相关联的OTAG与用于第一软件组件的第一ITAG进行比较;(ii)如果OTAG与第一ITAG匹配,则完成访问请求;以及(iii)如果OTAG不与第一ITAG匹配,则中止访问请求。另外,响应于来自第一软件组件的发送请求,ZCM管理器用于将与存储器地址相关联的OTAG改变为与用于在核上执行的第二软件组件的第二ITAG匹配。
示例B2是根据示例B1的数据处理系统,其中,ZCM管理器用于将OTAG与高速缓存行相关联,并且ZCM管理器用于通过将包括存储器地址的高速缓存行的OTAG改变为与第二ITAG匹配来对发送请求作出响应。
示例B3是根据示例B1的数据处理系统,其中,ZCM管理器使第一软件组件能够使用发送请求,以在不调用VMM的情况下将与存储器地址相关联的OTAG改变为与第二ITAG匹配。示例B3还可包括示例B2的特征。
示例B4是根据示例B1的数据处理系统,其中,第一软件组件包括第一ITAG已被指派给的第一VM,第二软件组件包括第二ITAG已被指派给的第二VM,并且处理器进一步包括MMU,用于将与访问请求相关联的GPA转换为包括OTAG的HPA。另外,将与存储器地址相关联的OTAG与第一软件组件的第一ITAG进行比较的操作包括:将已被指派给第一VM的第一ITAG与HPA中的OTAG进行比较,以验证第一VM是否拥有包括HPA的高速缓存行。示例B4还可包括示例B2-B3中的任一者或多者的特征。
示例B5是根据示例B4的数据处理系统,其中,ZCM管理器使VMM能够:(i)将机器存储器的部分预留为机器ZCM区域;(ii)为第一VM分配第一主机物理ZCM区域,其中,第一主机物理ZCM区域具有第一OTAG;(iii)为第二VM分配第二主机物理ZCM区域,其中,第二主机物理ZCM区域具有第二OTAG;(iv)如果HPA包括第一OTAG,则将来自机器ZCM区域的高速缓存行映射到第一主机物理ZCM区域;以及(v)如果HPA包括第二OTAG,则将来自机器ZCM区域的高速缓存行映射到第二主机物理ZCM区域。
示例B6是根据示例B1的数据处理系统,其中,ZCM管理器进一步用于:响应于来自在核上执行的第三软件组件的接收请求,将与存储器地址相关联的OTAG改变为与用于第三软件组件的第三ITAG匹配。示例B6还可包括示例B2-B5中的任一者或多者的特征。
示例B7是根据示例B6的处理器,其中,ZCM管理器进一步用于:判定与存储器地址相关联的OTAG是否与用于源软件组件的所指定的ITAG匹配;以及响应于判定了与存储器地址相关联的OTAG不与用于源软件组件的所指定的ITAG匹配,在不改变与存储器地址相关联的OTAG的情况下中止接收请求。
示例C1是一种包括指令的非暂态机器可读介质,这些指令当由持录取执行时使处理器响应于可从第一软件组件接收到访问请求而执行以下操作,其中,该访问请求涉及高速缓存内的存储器地址:(a)将与存储器地址相关联的OTAG与用于第一软件组件的第一ITAG进行比较;(b)如果OTAG与第一ITAG匹配,则完成访问请求;以及(c)如果OTAG不与第一ITAG比较,则中止访问请求。这些指令还使处理器响应于来自所述第一软件组件的发送请求,将与所述存储器地址相关联的所述OTAG改变为与用于第二软件组件的第二ITAG匹配。
示例C2是根据示例C1的机器可读介质,其中,这些指令当由处理器执行时使处理器响应于来自第三软件组件的接收请求,将与存储器地址相关联的OTAG改变为与用于第三软件组件的第三ITAG匹配。
示例C3是根据示例C2的机器可读介质,其中,这些指令当由处理器执行时使处理器:(a)判定与存储器地址相关联的OTAG是否与用于源软件组件的所指定的ITAG匹配;以及(b)响应于判定了与存储器地址相关联的OTAG不与用于源软件组件的所指定的ITAG匹配,在不改变与存储器地址相关联的OTAG的情况下中止接收请求。
示例C4是根据示例C1的机器可读介质,其中,机器可读介质包至少一个VM镜像,用于使处理器能够实例化:(a)第一ITAG被指派给的第一VM;以及(b)第二ITAG被指派给的第二VM。另外,第一VM包括第一软件组件,并且第二VM包括第二软件组件。示例C4还可包括示例C2-C3中的任一者或多者的特征。
示例C5是根据示例C4的机器可读介质,其中,发送请求使第一软件组件能够在不调用VMM的情况下将与存储器地址相关联的OTAG改变为与第二ITAG匹配。
示例C6是根据示例C4的机器可读介质,其中,这些指令当被执行时使处理器中的MMU将与访问地址想关联的GPA转换为包括OTAG的HPA。另外,将与存储器地址相关联的OTAG与用于第一软件组件的第一ITAG进行比较的操作包括:将已被指派给第一VM的第一ITAG与HPA中的OTAG进行比较,以验证第一VM是否拥有包括HPA的高速缓存行。示例C6还可包括示例C5的特征。
示例C7是根据示例C4的机器可读介质,其中,处理器包括VMM,该VMM当由处理器执行时使处理器:(a)将机器存储器的部分预留为机器ZCM区域;(b)为第一VM分配第一主机物理ZCM区域,其中,第一主机物理ZCM区域具有第一OTAG;(c)为第二VM分配第二主机物理ZCM区域,其中,第二主机物理ZCM区域具有第二OTAG;(d)如果HPA包括第一OTAG,则将来自机器ZCM区域的高速缓存行映射到第一主机物理ZCM区域;以及(e)如果HPA包括第二OTAG,则将来自机器ZCM区域的高速缓存行映射到第二主机物理ZCM区域。示例C7还可包括示例C5-C6中的任一者或多者的特征。
鉴于可以从本文描述的示例实施例中容易地导出的各种各样的有用排列,此具体实施方式旨在仅仅是说明性的,且不应被视为限制覆盖范围。

Claims (22)

1.一种处理器,包括:
核,用于执行指令;
高速缓存,用于存储数据;以及
零复制存储器ZCM管理器,与所述核和所述高速缓存通信,所述ZCM管理器用于:
响应于从第一软件组件接收到访问请求而执行以下操作,其中,所述访问请求涉及高速缓存行内的存储器地址:
(a)将与所述存储器地址相关联的所有者标签OTAG与用于所述第一软件组件的第一身份标签ITAG进行比较;
(b)如果所述OTAG与所述第一ITAG匹配,则完成所述访问请求;以及
(c)如果所述OTAG不与所述第一ITAG匹配,则中止所述访问请求;以及
响应于来自所述第一软件组件的发送请求,将与所述存储器地址相关联的所述OTAG改变为与用于第二软件组件的第二ITAG匹配。
2.根据权利要求1所述的处理器,其中:
所述ZCM管理器用于将OTAG与高速缓存行相关联;并且
所述ZCM管理器用于通过将包括所述存储器地址的高速缓存行的OTAG改变为与所述第二ITAG匹配来对所述发送请求作出响应。
3.根据权利要求1所述的处理器,其中,所述ZCM管理器使所述第一软件组件能够使用所述发送请求,以在不调用虚拟机监视器的情况下将与所述存储器地址相关联的OTAG改变为与所述第二ITAG匹配。
4.根据权利要求1所述的处理器,其中:
所述第一软件组件包括所述第一ITAG已被指派给的第一虚拟机VM;
所述第二软件组件包括所述第二ITAG已被指派给的第二虚拟机VM;
所述处理器进一步包括存储器管理单元MMU,用于将与所述访问请求相关联的宾客物理地址GPA转换为包括所述OTAG的主机物理地址HPA;并且
将与所述存储器地址相关联的OTAG与用于所述第一软件组件的所述第一ITAG进行比较的操作包括:将已被指派给所述第一VM的所述第一ITAG与所述HPA中的OTAG进行比较,以验证所述第一VM是否拥有包括所述HPA的高速缓存行。
5.根据权利要求4所述的处理器,其中,所述ZCM管理器使虚拟机监视器能够:
将机器存储器的部分预留为机器ZCM区域;
为所述第一VM分配第一主机物理ZCM区域,其中,所述第一主机物理ZCM区域具有第一OTAG;
为所述第二VM分配第二主机物理ZCM区域,其中,所述第二主机物理ZCM区域具有第二OTAG;
如果所述HPA包括所述第一OTAG,则将来自所述机器ZCM区域的高速缓存行映射到所述第一主机物理ZCM区域;以及
如果所述HPA包括所述第二OTAG,则将来自所述机器ZCM区域的高速缓存行映射到所述第二主机物理ZCM区域。
6.根据权利要求1所述的处理器,其中,所述ZCM管理器进一步用于:
响应于来自在所述核上执行的第三软件组件的接收请求,将与所述存储器地址相关联的OTAG改变为与用于所述第三软件组件的第三ITAG匹配。
7.根据权利要求6所述的处理器,其中,所述ZCM管理器进一步用于:
判定与所述存储器地址相关联的OTAG是否与用于源软件组件的所指定的ITAG匹配;以及
响应于判定了与所述存储器地址相关联的OTAG不与用于所述源软件组件的所指定的ITAG匹配,在不改变与所述存储器地址相关联的OTAG的情况下中止所述接收请求。
8.一种数据处理系统,包括:
随机存取存储器;
处理器,与所述随机存取存储器通信;
所述处理器中的核;
所述处理器中的高速缓存;以及
所述处理器中的零复制存储器ZCM管理器,与所述核和所述高速缓存通信,所述ZCM管理器用于:
从在所述核上执行的第一软件组件接收访问请求,其中,所述访问请求涉及高速缓存行内的存储器地址:
响应于接收到所述访问请求,(i)将与所述存储器地址相关联的所有者标签OTAG与用于所述第一软件组件的第一身份标签ITAG进行比较;(ii)如果所述OTAG与所述第一ITAG匹配,则完成所述访问请求;以及(iii)如果所述OTAG不与所述第一ITAG匹配,则中止所述访问请求;以及
响应于来自所述第一软件组件的发送请求,将与所述存储器地址相关联的所述OTAG改变为与用于在所述核上执行的第二软件组件的第二ITAG匹配。
9.根据权利要求8所述的数据处理系统,其中:
所述ZCM管理器用于将OTAG与高速缓存行相关联;并且
所述ZCM管理器用于通过将包括所述存储器地址的高速缓存行的OTAG改变为与所述第二ITAG匹配来对所述发送请求作出响应。
10.根据权利要求8所述的数据处理系统,其中,所述ZCM管理器使所述第一软件组件能够使用所述发送请求,以在不调用虚拟机监视器的情况下将与所述存储器地址相关联的OTAG改变为与所述第二ITAG匹配。
11.根据权利要求8所述的数据处理系统,其中:
所述第一软件组件包括所述第一ITAG已被指派给的第一虚拟机VM;
所述第二软件组件包括所述第二ITAG已被指派给的第二虚拟机VM;
所述处理器进一步包括存储器管理单元MMU,用于将与所述访问请求相关联的宾客物理地址GPA转换为包括所述OTAG的主机物理地址HPA;并且
将与所述存储器地址相关联的OTAG与用于所述第一软件组件的所述第一ITAG进行比较的操作包括:将已被指派给所述第一VM的所述第一ITAG与所述HPA中的所述OTAG进行比较,以验证所述第一VM是否拥有包括所述HPA的高速缓存行。
12.根据权利要求11所述的数据处理系统,其中,所述ZCM管理器使虚拟机监视器能够:
将机器存储器的部分预留为机器ZCM区域;
为所述第一VM分配第一主机物理ZCM区域,其中,所述第一主机物理ZCM区域具有第一OTAG;
为所述第二VM分配第二主机物理ZCM区域,其中,所述第二主机物理ZCM区域具有第二OTAG;
如果所述HPA包括所述第一OTAG,则将来自所述机器ZCM区域的高速缓存行映射到所述第一主机物理ZCM区域;以及
如果所述HPA包括所述第二OTAG,则将来自所述机器ZCM区域的高速缓存行映射到所述第二主机物理ZCM区域。
13.根据权利要求8所述的数据处理系统,其中,所述ZCM管理器进一步用于:
响应于来自在所述核上执行的第三软件组件的接收请求,将与所述存储器地址相关联的OTAG改变为与用于所述第三软件组件的第三ITAG匹配。
14.根据权利要求13所述的数据处理系统,其中,所述ZCM管理器进一步用于:
判定与所述存储器地址相关联的OTAG是否与用于源软件组件的所指定的ITAG匹配;以及
响应于判定了与所述存储器地址相关联的OTAG不与用于所述源软件组件的所指定的ITAG匹配,在不改变与所述存储器地址相关联的OTAG的情况下中止所述接收请求。
15.一种用于控制对存储器的访问的方法,所述方法包括:
由处理器中的零复制存储器ZCM管理器从第一软件组件接收访问请求,其中,所述访问请求涉及高速缓存行内的存储器地址:
响应于从所述第一软件组件接收到所述访问请求:
(a)将与所述存储器地址相关联的所有者标签OTAG与用于所述第一软件组件的第一身份标签ITAG进行比较;
(b)如果所述OTAG与所述第一ITAG匹配,则完成所述访问请求;以及
(c)如果所述OTAG不与所述第一ITAG匹配,则中止所述访问请求;以及
在所述ZCM管理器处,从所述第一软件组件接收发送请求;以及
响应于从所述第一软件组件接收到所述发送请求,将与所述存储器地址相关联的所述OTAG改变为与用于第二软件组件的第二ITAG匹配。
16.根据权利要求15所述的方法,其中:
所述ZCM管理器用于将OTAG与高速缓存行相关联;并且
所述ZCM管理器用于通过将包括所述存储器地址的高速缓存行的OTAG改变为与所述第二ITAG匹配来对所述发送请求作出响应。
17.根据权利要求15所述的方法,其中,所述ZCM管理器使所述第一软件组件能够使用所述发送请求,以在不调用虚拟机监视器的情况下将与所述存储器地址相关联的OTAG改变为与所述第二ITAG匹配。
18.根据权利要求15所述的方法,其中:
所述第一软件组件包括所述第一ITAG已被指派给的第一虚拟机VM;
所述第二软件组件包括所述第二ITAG已被指派给的第二虚拟机VM;
所述处理器包括存储器管理单元MMU,用于将与所述访问请求相关联的宾客物理地址GPA转换为包括所述OTAG的主机物理地址HPA;并且
将与所述存储器地址相关联的OTAG与用于所述第一软件组件的所述第一ITAG进行比较的操作包括:将已被指派给所述第一VM的所述第一ITAG与所述HPA中的所述OTAG进行比较,以验证所述第一VM是否拥有包括所述HPA的高速缓存行。
19.根据权利要求18所述的方法,进一步包括:
由虚拟机监视器VMM将机器存储器的部分预留为机器ZCM区域;
由所述VMM为所述第一VM分配第一主机物理ZCM区域,其中,所述第一主机物理ZCM区域具有第一OTAG;
由所述VMM为所述第二VM分配第二主机物理ZCM区域,其中,所述第二主机物理ZCM区域具有第二OTAG;
如果所述HPA包括所述第一OTAG,则由所述VMM将来自所述机器ZCM区域的高速缓存行映射到所述第一主机物理ZCM区域;以及
如果所述HPA包括所述第二OTAG,则由所述VMM将来自所述机器ZCM区域的高速缓存行映射到所述第二主机物理ZCM区域。
20.根据权利要求15所述的方法,进一步包括:
由所述ZCM管理器响应于来自第三软件组件的接收请求,将与所述存储器地址相关联的OTAG改变为与用于所述第三软件组件的第三ITAG匹配。
21.根据权利要求20所述的方法,进一步包括:
由所述ZCM管理器判定与所述存储器地址相关联的OTAG是否与用于源软件组件的所指定的ITAG匹配;以及
响应于判定了与所述存储器地址相关联的OTAG不与用于所述源软件组件的所指定的ITAG匹配,在不改变与所述存储器地址相关联的OTAG的情况下中止所述接收请求。
22.一种包括指令的机器可读介质,所述指令在由机器执行时使所述机器执行如权利要求15-21中的任一项所述的方法。
CN202011517393.5A 2020-06-26 2020-12-21 用于无需复制而在虚拟机之间移动数据的技术 Pending CN113849262A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/912,788 US11567791B2 (en) 2020-06-26 2020-06-26 Technology for moving data between virtual machines without copies
US16/912,788 2020-06-26

Publications (1)

Publication Number Publication Date
CN113849262A true CN113849262A (zh) 2021-12-28

Family

ID=73646154

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011517393.5A Pending CN113849262A (zh) 2020-06-26 2020-12-21 用于无需复制而在虚拟机之间移动数据的技术

Country Status (5)

Country Link
US (1) US11567791B2 (zh)
EP (1) EP3929755A1 (zh)
CN (1) CN113849262A (zh)
BR (1) BR102021001828A2 (zh)
TW (1) TW202219758A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230094125A1 (en) * 2021-09-24 2023-03-30 Nvidia Corporation Implementing trusted executing environments across multiple processor devices

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7386680B2 (en) * 2005-04-29 2008-06-10 Silicon Graphics, Inc. Apparatus and method of controlling data sharing on a shared memory computer system
US8185695B2 (en) * 2008-06-30 2012-05-22 Advanced Micro Devices, Inc. Snoop filtering mechanism
US8738932B2 (en) 2009-01-16 2014-05-27 Teleputers, Llc System and method for processor-based security
WO2013186694A2 (en) * 2012-06-11 2013-12-19 Stefanos Kaxiras System and method for data classification and efficient virtual cache coherence without reverse translation
US9792448B2 (en) 2014-02-28 2017-10-17 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
US9459903B2 (en) * 2014-09-24 2016-10-04 Intel Corporation Techniques for routing service chain flow packets between virtual machines
US10255203B2 (en) * 2016-06-30 2019-04-09 Intel Corporation Technologies for zero-copy inter-virtual-machine data movement
US10706147B1 (en) * 2017-05-19 2020-07-07 Amazon Technologies, Inc. Mitigating side-channel attacks via shared cache
US11477123B2 (en) * 2019-09-26 2022-10-18 Apple Inc. Methods and apparatus for low latency operation in user space networking

Also Published As

Publication number Publication date
TW202219758A (zh) 2022-05-16
EP3929755A1 (en) 2021-12-29
US20210406056A1 (en) 2021-12-30
BR102021001828A2 (pt) 2022-01-11
US11567791B2 (en) 2023-01-31

Similar Documents

Publication Publication Date Title
US10437739B2 (en) Low-latency accelerator
US6920521B2 (en) Method and system of managing virtualized physical memory in a data processing system
US8407451B2 (en) Method and apparatus for enabling resource allocation identification at the instruction level in a processor system
US7702826B2 (en) Method and apparatus by utilizing platform support for direct memory access remapping by remote DMA (“RDMA”)-capable devices
US6907494B2 (en) Method and system of managing virtualized physical memory in a memory controller and processor system
EP0902922B1 (en) Method and apparatus for caching system management mode information with other information
US6904490B2 (en) Method and system of managing virtualized physical memory in a multi-processor system
US20230109637A1 (en) Aperture access processors, methods, systems, and instructions
CN113553209A (zh) 用于存储器损坏检测的硬件装置和方法
CN111133425A (zh) 输入/输出(i/o)存储器管理单元的基于硬件的虚拟化
EP3709159B1 (en) Processing vectorized guest physical address translation instructions
US20140189192A1 (en) Apparatus and method for a multiple page size translation lookaside buffer (tlb)
US20210073129A1 (en) Cache line demote infrastructure for multi-processor pipelines
US10013199B2 (en) Translation bypass by host IOMMU for systems with virtual IOMMU
CN114328295A (zh) 存储管理装置、处理器、相关装置和相关方法
EP3929755A1 (en) Technology for moving data between virtual machines without copies
US20220398017A1 (en) Independently controlled dma and cpu access to a shared memory region
US20230103000A1 (en) Hardware managed address translation service for integrated devices
US20220414022A1 (en) Apparatus, system, and method for secure memory access control
US20230409197A1 (en) Pasid granularity resource control for iommu

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