CN109416640A - 孔径访问处理器、方法、***和指令 - Google Patents

孔径访问处理器、方法、***和指令 Download PDF

Info

Publication number
CN109416640A
CN109416640A CN201780041339.8A CN201780041339A CN109416640A CN 109416640 A CN109416640 A CN 109416640A CN 201780041339 A CN201780041339 A CN 201780041339A CN 109416640 A CN109416640 A CN 109416640A
Authority
CN
China
Prior art keywords
aperture
instruction
processor
access
memory address
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.)
Granted
Application number
CN201780041339.8A
Other languages
English (en)
Other versions
CN109416640B (zh
Inventor
B.E.洪特利
J-S.蔡
G.奈格
R.M.桑卡兰
M.A.埃尔金
R.L.萨希塔
A.J.赫德里希
王维
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
Priority to CN202410397444.7A priority Critical patent/CN118349314A/zh
Priority to CN202311095454.7A priority patent/CN117130729A/zh
Publication of CN109416640A publication Critical patent/CN109416640A/zh
Application granted granted Critical
Publication of CN109416640B publication Critical patent/CN109416640B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on 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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • 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/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine

Landscapes

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

Abstract

一方面的处理器包括用来对孔径访问指令进行解码的解码单元,以及与解码单元耦合的执行单元。响应于孔径访问指令,执行单元将从访问受保护结构读取将与将在***存储器中的孔径相关联的主机物理存储器地址,并且在不是通过地址转换获得的主机物理存储器地址处访问孔径内的数据。还公开了其他处理器,也公开了方法、***和存储孔径访问指令的机器可读介质。

Description

孔径访问处理器、方法、***和指令
技术领域
本文中描述的实施例一般涉及处理器。特别地,本文中描述的实施例一般涉及具有支持虚拟化的架构扩展的处理器。
背景技术
可以使用虚拟机监视器(VMM)来创建其中可以操作虚拟机(VM)的虚拟机***。VMM可以将VM的抽象呈现给在每个VM内运行的来宾(guest)软件。VMM可以促进对***硬件的访问,同时一般保持对***硬件和操作的各种方面的控制。
在一些实现中,VM一般可能意识不到它们正在VMM上运行,并且一般可能意识不到***中存在其他VM。在其他实现中,VM可以意识到它们正在VMM上运行,并且可以意识到***中存在其他VM。这样的VM有时被描述为是“半虚拟化的”或“有见识的”。
附图说明
通过参考用于说明实施例的以下描述和附图,可以最好地理解本发明。在附图中:
图1是其中可以实现本发明的实施例的虚拟机***的实施例的框图。
图2是可以由VMM执行以提供孔径(aperture)的方法的实施例的框流程图。
图3是VMM模块的示例实施例的框图。
图4是执行孔径写入指令的实施例的方法的实施例的框流程图。
图5是操作以执行孔径写入指令的实施例的处理器的实施例的框图。
图6是执行孔径读取指令的实施例的方法的实施例的框流程图。
图7是操作以执行孔径读取指令的实施例的处理器的实施例的框图。
图8是用来从孔径访问数据的第一方法的框图。
图9是用来从孔径访问数据的第二方法的框图。
图10是用来从孔径访问数据的第三方法的框图。
图11A是图示有序流水线的实施例和寄存器重命名无序发布/执行流水线的实施例的框图。
图11B是包括前端单元的处理器核心的实施例的框图,所述前端单元耦合到执行引擎单元并且所述前端单元和执行引擎单元二者都耦合到存储器单元。
图12A是单个处理器核心连同它到管芯上互连网络的连接以及连同它的2级(L2)高速缓存的本地子集的实施例的框图。
图12B是图12A的处理器核心的一部分的展开图的实施例的框图。
图13是可以具有不止一个核心、可以具有集成存储器控制器并且可以具有集成图形元件的处理器的实施例的框图。
图14是计算机架构的第一实施例的框图。
图15是计算机架构的第二实施例的框图。
图16是计算机架构的第三实施例的框图。
图17是片上***架构的实施例的框图。
图18是根据本发明的实施例的将源指令集中的二进制指令转换为目标指令集中的二进制指令的软件指令转换器的使用的框图。
具体实施方式
本文中公开了孔径访问指令的实施例、用来执行孔径访问指令的处理器的实施例、处理器在执行孔径访问指令时执行的方法的实施例、包含用来执行孔径访问指令的一个或多个处理器的***的实施例的实施例、以及提供孔径访问指令的程序或机器可读介质的实施例。在一些实施例中,处理器可以具有用来解码孔径访问指令的解码单元,或用来接收孔径访问指令的其他逻辑,以及用来执行孔径访问指令的执行单元或其他逻辑。还公开了用来管理孔径(例如,分配孔径、保护孔径、配置哪些实体能够访问孔径等中的一个或多个)的模块、程序和机器可读介质。
在以下描述中,阐述了许多具体细节(例如,特定指令操作、数据格式、处理器配置、微架构细节、操作序列、虚拟机***等)。然而,可以在没有这些具体细节的情况下实践实施例。在其他实例中,没有详细地示出公知的电路、结构和技术,以避免模糊对说明书的理解。
图1是其中可以实现本发明的实施例的虚拟机***100的实施例的框图。虚拟机***包括多个虚拟机(VM)102、虚拟机监视器(VMM)108和***硬件110。在所图示的示例中,VM包括第一虚拟机(VM1)102-1、第二虚拟机(VM2)102-2,并且可选地包括其他虚拟机。
在各种实施例中,***硬件110可以表示一个或多个台式计算机、膝上型计算机、笔记本计算机、平板计算机、服务器、大型机、网络设备(例如,路由器、交换机等)、智能电话、或者一个或多个其他类型的计算机***或电子设备。在一些实施例中,虚拟机***可以可选地被实现在两个或更多个这样的电子设备上和/或可以是分布式虚拟机***,但是本发明的范围不被如此限制。通常,***硬件可以包括至少一个处理器112和存储器126。在一些实施例中,处理器可以是通用处理器。替代地,处理器可以是专用处理器。仅举几例,合适的专用处理器的示例包括但不限于网络处理器、通信处理器、密码处理器、图形处理器、协处理器、嵌入式处理器和数字信号处理器(DSP)。也可以可选地使用两个或更多个相同或不同类型的处理器。存储器126可以包括一个或多个类型的一个或多个存储器设备。合适的存储器设备的示例包括但不限于各种不同类型的随机存取存储器(RAM)、各种不同类型的只读存储器(ROM)、一个或多个硬盘、闪存等,以及其各种组合。存储器可用于存储用于实现虚拟机***的软件和数据。
每个VM可以具有它自己的来宾软件。如所示,第一VM可以具有第一来宾操作***104-1和第一组一个或多个来宾应用程序106-1。同样地,第二VM可以具有第二来宾操作***104-2,以及第二组一个或多个来宾应用程序106-2。在各种实施例中,这些操作***可以表示标准或实时的操作***、具有有限操作***功能性的高度拆开的操作装置、或者不一定包括所有或至少一些传统操作***功能性和/或设施的软件。每个虚拟机上的来宾软件常常可能期望访问***硬件(例如,处理器112和存储器126)中的至少一些。
虚拟机***还包括虚拟机监视器(VMM)108。在所图示的实施例中,示出了单个VMM,但是在其他实施例中可以可选地使用两个或更多个VMM。VMM在本领域中有时也被称为管理程序。可以以软件、固件、硬件或其组合来实现VMM。VMM可能比VM更有特权。VMM可以模拟裸机接口并将其导出到更高级别的软件。VMM可以将所述多个VM 102的抽象呈现给其他软件(例如,在VM上和/或VM内运行的来宾软件)。VMM可以促进来宾软件对***硬件110的访问,同时保持对***硬件和/或对某些其他操作方面(例如,中断等)的充分控制以帮助提供来宾软件的正确操作以及帮助提供来自来宾软件的和来宾软件之间的保护。
VMM一般可以向VM分配***硬件的资源(例如,硬件线程、***存储器空间、磁盘驱动器存储空间等)。VMM还可以在需要时或在某些类型的事件发生时接管控制。从VM操作到VMM操作的转变和/或从来宾软件到VMM的控制转移可以被称为VM退出。VM退出的潜在原因包括但不限于某些类型的特权异常、***事件、虚拟化事件、对存储器的受保护区域的访问违规等。到VM操作的转变和/或从VMM到VM(例如,到来宾软件)的控制转移可以被称为VM进入。这样的VM进入和退出一般趋向于具有很大程度上由于上下文或状态切换所致的相关联的开销或性能成本。虚拟机不需要必定意识不到它们正在VMM上运行,且不需要必定意识不到***中存在其他VM,而是可以是“半虚拟化的”或“有见识的”。然而,常常,除了某些相当有限类型的交互(诸如如本文中其他地方所描述的VM之间的数据共享),VMM可以以某些方式使不同VM的来宾软件栈彼此隔离。
虚拟机***100可以使用虚拟存储器。虚拟存储器一般表示存储器管理技术,其中潜在非连续的物理存储器(例如,物理地址空间)被作为连续存储器(例如,虚拟地址空间)呈现给进程和/或应用程序(例如,来宾软件)。虚拟地址空间有时也可以称为线性地址空间。实际分配的物理存储器可以不是连续的或顺序组织的,并且甚至可以被包括在多个不同类型的存储设备上。然而,由于虚拟存储器,进程可以通过连续的虚拟地址空间将存储器视为线性序列。虚拟存储器允许应用程序执行而不需要将其整个地址空间驻留在物理存储器中,这可以允许使用比容纳其整个地址空间将所需的更少的物理存储器来执行应用程序。应用程序可能不需要意识到物理存储器被如何分配。虚拟存储器还可以用于将应用程序彼此隔离,因为每个应用程序虚拟地址空间可以被独立地映射到排他地分配给该应用程序的物理存储器的一个或多个页面。物理存储器可以被在逻辑上划分成页面。物理存储器的页面可以被映射到虚拟地址。进程和应用程序(例如,来宾软件)可以仅查看它们的虚拟地址空间,而物理地址空间是对应数据实际上驻留在的存储器中的地方。
可以使用称为地址转换的进程将虚拟地址空间映射到物理地址空间。地址转换可能涉及基于给定的虚拟地址并且可选地基于(例如,在处理器寄存器中的)其他信息查找物理地址。通常,第一和第二来宾操作***104-1、104-2和VMM 108可以一起工作以将虚拟地址转换为存储器126中的实际物理存储器位置的物理存储器地址。存储器访问指令(例如,从存储器读取指令、向存储器写入指令等)可以具有关联的虚拟或线性地址。一组分层分页结构136可以被存储在存储器中。在虚拟机***的情况下,这些分层分页结构可以包括第一级分页结构以及第二级分页结构二者。作为示例,第一级分页结构可以包括页表或其他分页结构,比如通常用于非虚拟化***中的地址转换的那些分页结构。一般地,来宾操作***104-1、104-2可以管理或至少帮助管理这些第一级分页结构。第一级分页结构可以用于将指令的虚拟地址转换成所谓的来宾物理地址。
来宾物理地址可能还不表示可用于访问存储器中的实际物理存储器位置的实际物理存储器地址,而是可表示需要进一步地址转换的中间存储器地址。在一些实施例中,除了第一级分页结构(例如,第一级页表)之外,还可以存在附加的第二级分页结构,诸如例如扩展页表、其他第二级页表、或其他第二级分页结构。VMM可以管理第二级分页结构。从第一级分页结构获得的来宾物理地址可以用作到第二级分页结构中的输入。第二级分页结构可用于将来宾物理地址转换成主机物理存储器地址。主机物理存储器地址在本领域中有时也称为平台物理存储器地址。主机物理存储器地址可以表示可以用于访问实际物理存储器位置的实际物理存储器地址。第二级分页结构还可以具有关联页面的访问权限或许可。作为示例,这样的访问权限或许可可以指示页面是可读的、可写的、可执行的还是其组合。在这样的虚拟机***中,至少对于普通加载、存储和不具有特殊或附加特权的其他普通存储器访问指令而言,对实际物理存储器位置的访问一般可能只可通过由第二级分页结构提供的和/或如由VMM允许的有效地址转换来获得。
再次参考图1,分层分页结构136一般被存储在存储器中。处理器可以具有地址转换逻辑124,用来帮助将虚拟存储器地址转换为主机物理存储器地址。作为示例,该地址转换逻辑可以包括存储器管理单元(MMU),以及一个或多个级别的转换后备缓冲器(TLB)。最初,MMU可以操作以检查所述一个或多个TLB来看地址转换是否已被高速缓存或以其他方式存储在所述一个或多个TLB中。所述一个或多个TLB中的每个可以将先前确定的虚拟存储器地址高速缓存到主机物理存储器地址转换。当适当的地址转换被存储在所述一个或多个TLB中时,发生TLB“命中”。在TLB命中的情况下,可以从TLB项检索地址转换。相反,当适当的地址转换未被存储在所述一个或多个TLB中时,发生TLB“未命中”。在TLB未命中的情况下,MMU可以执行页表行走以确定地址转换。例如,MMU可以包括页面未命中处置器单元或逻辑、页表行走单元或逻辑等。例如,MMU可以访问并行走或前进通过分层分页结构136以尝试到达存储主机物理存储器地址的页表项。一旦确定,就可以使用主机物理存储器地址来访问物理存储器。而且,通过页表行走确定的地址转换或者可以被高速缓存在TLB中,用于可能的未来使用。如果再次需要地址转换,则在足够短的时间段内,可以相对快速地从TLB检索所述地址转换,而MMU不需要执行相对较慢的页表行走。
再次参考图1,存储器可以存储至少一个虚拟机控制结构(VMCS)128。所述至少一个VMCS广泛地表示至少一个访问受保护结构,其用于存储虚拟机和/或虚拟化关联的控制。VMCS可以是访问受保护的,因为它一般只可由具有被特别地设计并且旨在与它交互的特殊特权的有限指令(例如,用来配置VMCS、读取VMCS、写入VMCS等的特殊访问特权指令)集访问,而不可通过常规(regular)通用的从存储器读取指令、向存储器存储指令等访问。VMCS可以在不同实施例中控制与虚拟机***的操作相关联的各种不同方面,诸如例如与VM操作、VM进入、VM退出等相关的方面。在一些实施例中,多个VM可以可选地共享同一VMCS。在其他实施例中,可以针对每个VM使用一组不同的一个或多个VMCS。在又一方面,可以针对每个VM的每个逻辑处理器使用一组不同的一个或多个VMCS,其中可以存在至少两个VM。合适的VMCS 128的一个具体示例是在某些Intel®64和IA-32架构处理器的虚拟机扩展(VMX)中使用的虚拟机控制结构,但是本发明的范围不被如此限制。合适的VMCS 128的另一具体合适示例是在电力***服务器上的IBM PowerVM®虚拟化技术中使用的VMCS,但是本发明的范围不被如此限制。为了清楚起见,除非被具体地指定,否则术语虚拟机控制结构和VMCS的使用并非旨在指代VMX的特定VMCS。
再次参考图1,处理器112具有虚拟化扩展114。虚拟化扩展可以包括用来支持虚拟化和/或硬件辅助的虚拟化支持逻辑的架构扩展。这些虚拟化扩展可以包括用来支持虚拟化的指令集,以及用来执行这些指令的硬件、固件、软件或这样的逻辑的组合。在一些实施例中,虚拟化扩展可以包括如本文中所公开的孔径访问指令116的至少一个实施例。在一些实施例中,至少一个孔径访问指令可以可选地包括如本文中所公开的孔径写入指令118的至少一个实施例,所述孔径写入指令118可以用于将数据134写入到孔径132。在一些实施例中,至少一个孔径访问指令可以可选地包括如本文中所公开的孔径读取指令120的至少一个实施例,所述孔径读取指令120可以用于从孔径132读取数据134。在一些实施例中,可以可选地仅支持这些指令中的一个。在其他实施例中,可以可选地支持这两个指令。虚拟化扩展还可以包括孔径访问逻辑122,其操作以执行至少一个孔径访问指令116中的每个。在一些实施例中,(一个或多个)孔径访问指令可能被许可使用孔径访问逻辑和访问孔径,但是常规通用存储器访问指令可能不被许可使用孔径访问逻辑和访问孔径。
在一些实施例中,至少一个孔径132可以位于存储器126中。孔径可以广泛地表示存储器的访问受保护范围、区域或其他部分,其可以用于安全地存储数据。在一些实施例中,孔径可以表示VMM允许或限制访问的存储器的这样一部分。在一些实施例中,VMM可以包括孔径管理模块109,其操作以执行与管理孔径相关联的一个或多个方面。这样的管理方面的示例包括但不限于为孔径分配存储器的一部分、配置孔径、配置或允许一个或多个VM访问孔径、保护孔径免受被常规通用存储器访问指令访问等。
在一些实施例中,VMM 108和/或孔径管理模块109可以通过使得孔径不可通过地址转换访问或到达来控制孔径132或保护孔径132免受非预期的访问。例如,在一些实施例中,VMM和/或孔径管理模块可以配置第二级分层分页结构136,使得其中不存在到孔径内的主机物理存储器地址的转换。在一些实施例中,VMM和/或孔径管理模块可以将孔径地址信息130存储在(一个或多个)虚拟机控制结构128中,或者存储在另外的(一个或多个)访问受保护结构中。 VMM和/或孔径管理模块可以选择性地仅允许一个或多个预期的或授权的实体(例如,一个或多个VM)访问孔径地址信息,同时使孔径地址信息保持秘密或机密并且不可用于非预期或未授权的实体(例如,一个或多个其他VM)。因此,仅VMM意图和授权利用孔径的实体可以操作以利用它。这可以帮助保护或保障存储在孔径中的数据。
在不同实施例中,所述至少一个孔径132和所述至少一个孔径访问指令116可用于各种不同目的。作为一个示例,VMM 108和/或孔径管理模块109可以使孔径地址信息130对第一VM 102-1和第二VM 102-2二者可用,以便允许第一和第二VM共享数据。作为示例,在一些实施例中,第一VM可以发布孔径写入指令138的实例以(例如,从虚拟机控制结构128或另一类型的访问受保护结构)访问孔径地址信息130,并使用它将数据134从孔径写入指令的源操作数写入或以其他方式存储到孔径132。随后,在一些实施例中,第二VM2可以发布孔径读取指令140的实例以(例如,从虚拟机控制结构128或另一类型的访问受保护结构)访问孔径地址信息130,并使用它将数据134从孔径132读取到孔径读取指令的目的地操作数中。以该方式,(例如,通过使孔径地址信息130可访问)孔径可以用于在VMM允许访问孔径的两个或更多个VM之间的数据受保护共享。
图2是可以由VMM执行以提供孔径的方法246的实施例的框流程图。在一些实施例中,可以由图1的VMM 108和/或孔径管理模块109和/或利用图1的VMM 108和/或孔径管理模块109执行方法246。本文中针对VMM 108和/或孔径管理模块109描述的组件、特征和具体可选细节还可选地适用于方法246。替代地,可以由类似或不同的VMM或孔径管理模块和/或在类似或不同的VMM或孔径管理模块内执行方法246。此外,VMM 108和/或孔径管理模块109可以执行与方法246相同、类似或不同的方法。
该方法包括在框247处为孔径分配***存储器的范围、区域或其他部分。作为示例,在一些实施例中,该部分可以包括***存储器的一个或多个页面。
在框248处,可以将与孔径相关联的主机物理存储器地址存储在访问受保护结构中。在一些实施例中,该主机物理存储器地址可以是孔径的主机物理存储器地址。在其他实施例中,该主机物理存储器地址可以不一定是孔径的主机物理存储器地址,但是可能是访问孔径所需要的。例如,该主机物理存储器地址可能通向其中存储孔径的主机物理存储器地址的受保护存储位置。
访问受保护结构可以广泛地表示对其的访问被控制、限制或以其他方式保护的结构。在一些实施例中,VMM可以保护访问受保护结构免受未授权访问。合适的结构的示例包括但不限于存储器中的数据结构、处理器管芯上的存储位置、管芯上的另一结构等。访问受保护结构的一个具体合适示例是虚拟机控制结构,但是本发明的范围不被如此限制。替代地,代替使用虚拟机控制结构,可以使用专用结构来存储主机物理存储器地址,而不一定需要存储常常被存储在虚拟机控制结构中的另一类型的数据中的一些或全部。在一些实施例中,可以可选地使用与用于保护虚拟机控制结构的那些技术相同或类似的技术来保护这样的专用结构。
在一些实施例中,可以保护被存储在访问受保护结构中的主机物理存储器地址免受未被特别地设计用来访问它和/或不具有访问它的特殊访问特权的指令所访问,但可以是对被特别地设计用来访问它和/或具有访问它的特殊访问特权的至少一个指令(例如,所述至少一个孔径访问指令116)而言可访问的。作为示例,管芯上处理器逻辑可以被配置成基于指令(例如,其操作码)来允许或拒绝访问。例如,在一些实施例中,主机物理存储器地址可以被存储在可以处于***存储器中的访问受保护结构中,并且管芯上处理器逻辑可以操作以选择性地允许通过所述至少一个孔径访问指令116对被存储在其中的主机物理存储器地址的访问,并且可以操作以防止通过常规通用存储器访问指令(例如,从存储器加载/读取指令、向存储器存储/写入指令等)对被存储在其中的主机物理存储器地址的访问。
再次参考图2,在框249处,可以使得孔径的主机物理存储器地址(例如,用于整个孔径的所有主机物理存储器地址)不可通过扩展的页表、其他第二级页表或其他第二级分层分页结构来访问。例如,第二级分层分页结构可以被配置成不具有到孔径的主机物理存储器地址(例如,用于整个孔径的所有主机物理存储器地址)的任何转换。这可以有助于使得孔径一般不可通过地址转换访问或到达。这继而可以有助于保护孔径免受通过不具有特殊访问特权的常规通用存储器访问指令(例如,从存储器读取指令、向存储器存储指令、存储器复制指令、收集指令等)的访问并且一般只可以通过分页和地址转换来到达实际的物理存储器。例如,这样的存储器访问指令可以指定需要通过地址转换转换成主机物理存储器地址以便访问实际的物理存储器的虚拟或线性地址。在虚拟机***中,这样的地址转换最终需要通过第二级分层分页结构(或高速缓存基于这样的第二级分层分页结构获得的转换的TLB)。然而,在将第二级分层分页结构配置成不具有到落在整个孔径内的任何地方的主机物理存储器地址的任何转换的情况下,当这样的指令经历地址转换时,它们将找不到允许它们访问该孔径的任何主机物理存储器地址或路径。
在不同的实施例中VMM可以以不同的方式使用方法246。作为一个示例,VMM可以使用该方法来选择性地允许两个或更多个VM使用孔径来共享数据。作为示例,这可以响应于来自VM或相关联的软件的请求(诸如例如,通过超级调用)来完成,所述软件请求允许VM通过孔径与一个或多个其他VM共享数据。VMM可以决定允许这样的数据共享,并且可以提供孔径(如果一个还不可用),并且可以选择性地将预期的VM配置成使用该孔径,而不将其他非预期的VM配置成使用该孔径。这可以通过选择性地仅允许预期的VM而不是其他非预期的VM能够访问主机物理存储器地址来实现。可能需要该主机物理存储器地址(潜在地连同一个或多个其他主机物理存储器地址)以便访问孔径。作为一个示例,每个VM可以具有它自己对应的访问受保护结构(例如,VMCS),并且VMM可以选择性地将主机物理存储器地址存储在仅与其允许使用该孔径的那些VM对应的访问受保护结构中,而不在与其他VM对应的访问受保护结构中。作为另一示例,多个VM可以共享访问受保护结构(例如,共享的VMCS),并且(例如,在共享的访问受保护结构中)可能存在用来控制VM中的哪些被允许访问主机物理存储器地址的控制。其他方法也是可能的。
图3是VMM模块308的示例实施例的框图。在一些实施例中,VMM模块308可操作以执行图2的方法246。针对方法246描述的特定可选特征和细节也可以选择性地适用于VMM模块308。替代地,可以通过和/或利用类似或不同的VMM模块来执行方法246。此外,VMM模块308可操作以执行与方法246类似或不同的方法。
VMM模块包括存储器分配模块350、虚拟机控制结构(VMCS)管理模块352和第二级分层分页结构管理模块354。可以以硬件、固件、软件或其组合来实现这些模块中的每个。存储器分配模块可操作以分配物理存储器的页面。VMCS管理模块可操作以管理一个或多个VMCS。第二级分层分页结构管理模块可操作以管理一个或多个第二级分层分页结构。
VMM模块还可以包括孔径管理模块309的实施例,其可以以硬件、固件、软件或其组合来实现。如所示,在一些实施例中,孔径管理模块可以可选地包括在存储器分配模块、VMCS管理模块和第二级分层分页结构管理模块内实现的功能性或模块。具体地,孔径分配模块356可以可选地被在存储器分配模块内实现,主机物理存储器地址存储模块358可以可选地被在VCMS管理模块内实现,并且孔径访问保护模块360可以可选地被在第二级别分层分页结构管理模块内实现。替代地,这些模块中的每个可以可选地被实现为单独的组件,其可以在需要时与存储器分配模块、VMCS管理模块和第二级分层分页结构管理模块交互。
在一些实施例中,孔径分配模块356和/或存储器分配模块350和/或孔径管理模块309可操作以为孔径分配***存储器的区域。在一些实施例中,这可以被如针对图2的框247所描述的那样类似地完成。在一些实施例中,主机物理存储器地址存储模块358和/或VMCS管理模块352和/或孔径管理模块309可操作以在所述一个或多个虚拟机控制结构中存储与孔径相关联的主机物理存储器地址。在一些实施例中,这可以被如针对图2的框248所描述的那样类似地完成。在一些实施例中,孔径访问保护模块360和/或第二级分层分页结构管理模块354和/或孔径管理模块309可操作以使得不可通过所述一个或多个第二级分层分页结构访问孔径的主机物理存储器地址。在一些实施例中,这可以被如针对图2的框249所描述的那样类似地完成。
图4是执行孔径写入指令的实施例的方法682的实施例的框流程图。在各种实施例中,该方法可以由处理器、指令处理装置、数字逻辑器件或集成电路执行。
该方法包括在框463处接收孔径写入指令。在各种方面,可以在处理器或其一部分(例如,指令获取单元、解码单元、总线接口单元等)处接收该指令。在各种方面,可以从处理器外和/或管芯外的源(例如,从存储器、互连等)或从处理器上和/或管芯上的源(例如,从指令高速缓存、指令队列等)接收该指令。
孔径写入指令可指定(例如,通过字段或其他位集合显式地指定)或以其他方式指示(例如,隐式地指示)源操作数。在一些实施例中,源操作数可以可选地在存储器中。在其他实施例中,源操作数可以可选地在处理器的寄存器中。在其他实施例中,可以可选地使用其他源存储位置。
在框464处,响应于孔径写入指令,可以从源操作数访问或以其他方式接收数据。在一个具体示例实施例中,数据量可以可选地是六十四字节个的数据。在其他实施例中,数据量可以可选地多于或少于六十四个字节。
在框465处,响应于孔径写入指令,可以从访问受保护结构读取与***存储器中的孔径相关联的主机物理存储器地址。该访问受保护结构可以与上面讨论的那些类似或相同。在一些实施例中,该主机物理存储器地址可以不在架构上暴露给与孔径写入指令对应的软件和/或可以保持对这样的软件不可见。
然后,在框466处,响应于孔径写入指令,可以在孔径内将从源操作数接收的数据存储到主机物理存储器地址。在一些实施例中,可能不是通过地址转换获得(例如,可能还没有从TLB、或者通过执行页表行走等获得)数据被存储到的主机物理存储器地址。
在一些实施例中,在框465处从受保护结构读取的主机物理存储器地址可以可选地在在框466处存储数据的相同孔径内。例如,在框465处从受保护结构读取的主机物理存储器地址可以可选地是孔径的基址,指令还可以具有距孔径的基址的偏移,并且在框466处存储数据的主机物理存储器地址可以可选地是通过将偏移应用于基址所获得的地址。在其他实施例中,在框465处从受保护结构读取的主机物理存储器地址可以可选地不在在框466处存储数据的相同孔径内。而是,在一些实施例中,在框465处从受保护结构读取的主机物理存储器地址可以寻址存储一个或多个其他主机物理存储器地址的存储器中的位置。在一些实施例中,可以可选地存在列表或者否则多个这样的其他主机物理存储器地址,例如,其每个对应于不同的孔径。在这样的情况下,指令可以可选地具有索引或其他孔径选择器,以选择主机物理存储器地址中的一个和/或选择孔径中的一个。在一些实施例中,该选择的主机物理存储器地址可以是在框466处使用的主机物理存储器地址,或者在其他实施例中是可以向其应用由指令指示的偏移以确定在框466处使用的主机物理存储器地址的基础主机物理存储器地址。在该情况下,仅存在单个间接级别,但是可选地也可以可选地使用两个或更多个间接级别。一般地,在框465处从访问受保护结构读取的主机物理存储器地址可以表示访问孔径所需的至少一个这样的主机物理存储器地址。
所图示的方法涉及架构操作(例如,从软件角度可见的那些)。在其他实施例中,该方法可以可选地包括一个或多个微架构操作。作为示例,可以无序地获取、解码、调度指令,可以访问源操作数,执行单元可以实行微架构操作以实现指令等。
图5是处理器512的实施例的框图,所述处理器512可操作以执行孔径写入指令518的实施例。在一些实施例中,处理器512可操作以执行图4的方法462。本文中针对处理器512和/或指令518描述的组件、特征和特定可选细节也可选地适用于方法462。替代地,可以通过类似或不同的处理器或装置和/或在类似或不同的处理器或装置内和/或使用类似或不同的指令来执行方法462。此外,处理器512可操作以执行与方法462类似或不同的方法。
在一些实施例中,处理器可以是通用处理器(例如,在台式机、膝上型计算机或其他计算机中使用的类型的通用微处理器或中央处理单元(CPU))。替代地,处理器可以是专用处理器。合适的专用处理器的示例包括但不限于网络处理器、通信处理器、密码处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)和控制器(例如,微控制器)。处理器可以具有各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、超长指令字(VLIW)架构、混合架构、其他类型的架构中的任何架构,或者具有不同架构的组合(例如,不同的核心可能具有不同的架构)。在一些实施例中,处理器可以包括被布置在至少一个集成电路或半导体管芯上。在一些实施例中,处理器可以包括至少一些硬件(例如,晶体管、集成电路、存储微代码的非易失性存储器等)。
在操作期间,处理器512可以接收孔径写入指令518。例如,可以通过总线或其他互连从存储器接收该指令。该指令可以表示宏指令、机器代码指令或处理器的指令集的其他指令或控制信号。在一些实施例中,孔径写入指令可以(例如,通过一个或多个字段或位集合)显式地指定或以其他方式指示(例如,隐式地指示)具有数据574的源操作数572。作为一个示例,指令可以具有源操作数指定字段,以指定用于源操作数的寄存器、存储器位置或其他存储位置。替代地,源操作数可以可选地存储在对指令而言隐式的存储位置(例如,尽管未表达但是由指令的操作码隐式地或固有地指示的寄存器)中。作为示例,如图示的示例实施例中所示,源操作数572可以存储在存储器526中,并且孔径写入指令可以指定或以其他方式指示具有一组寄存器578中的用来寻址源操作数572的存储器地址信息580的一个或多个寄存器。
再次参考图1,处理器包括解码单元或解码器568。解码单元可以接收并解码孔径写入指令。解码单元可以输出一个或多个相对较低级别的指令或控制信号(例如,一个或多个微指令、微操作、微代码入口点、经解码的指令或控制信号等),其反映、表示和/或源自相对较高级别的孔径写入指令。在一些实施例中,解码单元可以包括用来接收孔径写入指令的一个或多个输入结构(例如,(一个或多个)端口、(一个或多个)互连、接口),以及与其耦合以识别并解码孔径写入指令的指令识别和解码逻辑,以及与其耦合以输出(一个或多个)低级指令或(一个或多个)控制信号的一个或多个输出结构(例如,(一个或多个)端口、(一个或多个)互连、接口)。可以使用各种不同的机制来实现解码单元,所述机制包括但不限于微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)以及适合于实现解码单元的其他机制。在一些实施例中,解码单元可以被包括在管芯上(例如,在具有执行单元570的管芯上)。在一些实施例中,解码单元可以包括至少一些硬件(例如,晶体管、集成电路、或管芯上固件等)。
在一些实施例中,代替直接向解码单元568提供孔径写入指令,可以可选地使用指令模拟器、转换器器、变形器、解释器或其他指令转换模块。可以以软件、硬件、固件或其组合来实现各种类型的指令转换模块。在一些实施例中,指令转换模块可以位于处理器外部,诸如例如,位于单独的管芯上和/或存储器中(例如,作为静态、动态或运行时模拟模块)。作为示例,指令转换模块可以接收孔径写入指令,其可以是第一指令集,并且可以将孔径写入指令模拟、转译、变形、解释或以其他方式转换成一个或多个对应的中间指令或控制信号,其可以是第二不同的指令集的。可以将第二指令集的所述一个或多个中间指令或控制信号提供给解码单元(例如,解码单元568),所述解码单元可以将它们解码成可由处理器的本机硬件(例如,一个或多个执行单元)执行的一个或多个较低级指令或控制信号。
再次参考图5,执行单元570与解码单元568耦合。在一些实施例中,执行单元可以在管芯或集成电路上(例如,在具有解码单元的管芯或集成电路上)。执行单元可以接收一个或多个经解码的或以其他方式转换的指令或控制信号,其表示和/或源自孔径写入指令。在操作期间,当被部署在***中时,执行单元可操作以与存储器526耦合。执行单元和/或处理器可以包括可操作以执行孔径写入指令的具体或特定逻辑(例如,晶体管、集成电路或潜在地与固件组合的其他硬件(例如,存储在非易失性存储器中的指令)和/或软件)。所图示的执行单元被示为单个单元,但是要领会,执行单元可能潜在地/可选地包括分布或分散在存储器子***的各种不同组件或处理器的存储器访问资源上的逻辑。
执行单元可响应于孔径写入指令和/或作为孔径写入指令的结果(例如,响应于从该指令解码的一个或多个指令或控制信号和/或响应于被解码的指令和/或响应于被提供给解码器的指令)而操作以访问或以其他方式接收源操作数572的数据574。在源操作数在存储器中的情况下,执行单元和/或处理器可以执行地址转换访问源操作数。在一个具体示例实施例中,数据量可以可选地是六十四个字节的数据。在其他实施例中,数据量可以可选地多于或少于六十四个字节。
执行单元还可响应于孔径写入指令和/或作为孔径写入指令的结果而操作以访问或以其他方式接收与孔径532相关联的主机物理存储器地址530。如所示,在一些实施例中,主机物理存储器地址可以可选地存储在访问受保护结构528中。访问受保护结构可以与先前讨论的那些类似或相同。如上面所讨论的,访问受保护结构可以广泛地表示对其的访问被控制、限制或以其他方式保护的结构。在一些实施例中,VMM可以保护访问受保护结构免受未授权访问。访问受保护结构的一个具体合适示例是VMCS,但是本发明的范围不被如此限制。替代地,代替使用虚拟机控制结构,可以使用专用结构来存储主机物理存储器地址,而不一定需要存储常常被存储在VMCS中的其他类型的数据中的一些或全部。在一些实施例中,可以可选地使用与用于保护VMCS的那些技术类似或相同的技术来保护这样的专用结构。如所示,在一些实施例中,访问受保护结构可以可选地存储在存储器526中。替代地,可以可选地代之以使用管芯上或处理器上访问受保护结构。
在一些实施例中,处理器可以具有管芯上逻辑,以保护存储在访问受保护结构528中的主机物理存储器地址530免受被未被特别地设计用来访问它和/或不具有访问它的特殊访问特权的指令所访问。例如,常规通用从存储器读取指令、向存储器存储指令、收集指令、分散指令等可能不能访问存储在访问受保护结构中的主机物理存储器地址。然而,管芯上逻辑可以允许孔径写入指令(例如,基于其操作码)访问存储在访问受保护结构中的主机物理存储器地址。孔径写入指令可以被特别地设计和/或被特别地给予特权以访问它。在一些实施例中,当访问受保护结构存储在存储器中时,孔径写入指令可能能够访问它,即使孔径写入指令可能不指示任何架构上可见的信息以指示访问受保护结构存储在存储器中的何处。
执行单元还可以响应于孔径写入指令和/或作为孔径写入指令的结果而操作,以将从源操作数572接收的数据574存储孔径532内在主机物理存储器地址576处。该孔径可以与先前描述的孔径类似或相同。例如,该孔径可以广泛地表示可以存储器的访问受保护范围、区域或其他部分,其用于安全地存储数据。在一些实施例中,孔径可以表示VMM允许或限制访问的存储器的这样的一部分。在一些实施例中,孔径的主机物理存储器地址(例如,用于整个孔径的所有主机物理存储器地址)可能不可通过地址转换和/或通过第二级分层分页结构访问或到达。例如,在一些实施例中,第二级分层分页结构可能在其中不具有到陷在孔径内的主机物理存储器地址的任何转换。
在一些实施例中,可能没有通过地址转换获得(例如,可能没有从TLB、或者通过执行页表行走等获得)数据534在孔径532内被存储到的主机物理存储器地址576。也就是说,在一些实施例中,可以访问孔径而无需执行从虚拟地址到实际物理存储器地址(例如,主机物理存储器地址)的地址转换,无需访问第一级或第二级分层分页结构(例如,扩展页表),并且不必访问或尝试使用用于将转换高速缓存到主机物理地址的TLB。而是,主机物理存储器地址576可以存储在某处,在执行孔径写入指令时被检索,并且用于将数据直接存储到孔径中而不用进一步的地址转换。孔径写入指令可以在处理器的管芯上逻辑内具有特殊权限以绕过这样的地址转换。
然而,常规通用存储器访问指令(例如,从存储器读取指令、向存储器存储指令、收集指令、分散指令等)可能不具有允许它们绕过地址转换的这样的属性。而是,这样的常规通用存储器访问指令将需要经历地址转换和已经从这样的第二级分层分页结构获得的第二级分层分页结构和/或TLB高速缓存转换。然而,在一些实施例中,如上面描述的,这样的第二级分层分页结构可以被配置成不具有到陷在孔径内的主机物理存储器地址的任何转换。以该方式,孔径可能对这样的常规通用存储器访问指令而言不可访问。此外,在一些实施例中,可能不需要交换EPT或其他第二级页表。EPT或其他第二级页表的这样的交换(其不被需要)可能否则具有诸如例如将处理器序列化、清除(flush)TLB(例如,由于其存储与新的第二级页表无关的陈旧信息)、用更新的信息重建TLB等的开销。
在一些实施例中,从访问受保护结构528读取的主机物理存储器地址530可以可选地是孔径532的基址。在一些实施例中,孔径写入指令还可以具有可以应用于孔径的该基址的偏移以指示要存储数据534的主机物理存储器地址576。在其他实施例中,从访问受保护结构528读取的主机物理存储器地址530可以可选地寻址存储一个或多个其他主机物理存储器地址的物理存储器位置,并且这些其他主机物理存储器地址中的一个可以是主机物理存储器地址576或者可以是孔径532的基址,可以向所述基址应用指令提供的偏移以获得主机物理存储器地址576。例如,主机物理存储器地址530可以通向多个主机物理存储器地址的列表或其他集合,所述多个主机物理存储器地址中的每个地址对应于不同孔径的基址。在这样的情况下,孔径写入指令可以进一步指定或指示数字、索引或其他孔径选择器以选择这些孔径中的一个。然后可以读取用于所选孔径的基址的主机物理存储器地址,并且可以向该基址应用指令提供的偏移以获得主机物理存储器地址576。这些仅仅是几个说明性示例。其他方法对于本领域中且受益于本公开的技术人员而言将是显而易见的。一般地,从访问受保护结构528读取的主机物理存储器地址530可以表示访问孔径532所需的至少一个主机物理存储器地址,并且在一些情况下,可以可选地需要一个或多个附加主机物理存储器地址。
在一些实施例中,主机物理存储器地址530和主机物理存储器地址576可以在处理器的微架构内保持秘密或机密,但是从未在架构上暴露给孔径写入指令所对应的软件。例如,执行孔径写入指令的VM可能不能学习或知道这些主机物理存储器地址。然而,VM可以能够通过执行访问写入指令来利用孔径,即使VM可能不知道孔径位于***存储器中的何处。VMM可能知道该主机物理存储器地址,因为它可能已经将主机物理地址存储在访问受保护结构中,但是实现孔径写入指令的微架构在某些情况下可能甚至不向VMM透露主机物理地址。而是,在一些实施例中,微架构可以使主机物理存储器地址对所有软件保持秘密和/或不可见。
为了避免使描述模糊,已经示出并描述了相对简单的处理器512。然而,处理器可以可选地包括其他处理器组件。例如,各种不同的实施例可以包括针对图11-13中的任何图示出和描述的组件的各种不同的组合和配置。处理器的所有组件可以耦合在一起以允许它们按预期操作。作为示例,考虑图11B,指令高速缓存1134可以对指令进行高速缓存,指令获取单元1138可以获取指令,解码单元1140可以解码指令,调度器单元1156可以调度相关联的操作,执行单元1162可以执行指令,引退单元1154可以引退指令等。
图6是执行孔径读取指令的实施例的方法682的实施例的框流程图。在各种实施例中,该方法可以由处理器、指令处理装置、数字逻辑器件或集成电路执行。
该方法包括在框683处接收孔径读取指令。在各种方面,可以在处理器或其一部分(例如,指令获取单元、解码单元、总线接口单元等)处接收指令。在各种方面,可以从处理器外和/或管芯外的源(例如,从存储器、互连等)或从处理器上和/或管芯上的源(例如,从指令高速缓存、指令队列等)接收指令。
孔径读取指令可以指定(例如,通过字段或其他位集合显式地指定),或以其他方式指示(例如,隐式地指示)目的地操作数。在一些实施例中,目的地操作数可以可选地在存储器中。在其他实施例中,目的地操作数可以可选地在处理器的寄存器中。在其他实施例中,可以可选地使用其他目的地存储位置。
在框684处,响应于孔径读取指令,可以从访问受保护结构读取主机物理存储器地址,其与***存储器中的孔径相关联。访问受保护结构可以与上面讨论的那些类似或相同。在一些实施例中,主机物理存储器地址可以不在架构上暴露给孔径读取指令对应的软件和/或可以保持对这样的软件不可见。
然后,在框685处,响应于孔径读取指令,可以读取来自孔径内的主机物理存储器地址处的数据。在一些实施例中,可能不是通过地址转换获得(例如,可能没有从TLB或通过执行页表行走等获得)从其读取数据的主机物理存储器地址。如先前所描述的,在框684处读取的主机物理存储器地址可以与用于在框685处读取数据的主机物理存储器地址相同或不同。
在框686处,响应于孔径写入指令,可以将从孔径读取的数据存储到目的地操作数。在一个具体示例实施例中,数据量可以可选地是六十四个字节的数据。在其他实施例中,数据量可以可选地多于或少于六十四个字节。
图7是处理器712的实施例的框图,所述处理器712可操作以执行孔径读取指令720的实施例。在一些实施例中,处理器712可操作以执行图6的方法682。本文中针对处理器712和/或指令720描述的组件、特征和具体可选细节也可选地适用于方法682。替代地,可以通过类似或不同的处理器或装置和/或在类似或不同的处理器或装置内和/或使用类似或不同的指令来执行方法682。此外,处理器712可操作以执行与方法682类似或不同的方法。
处理器712可以与图5的处理器512相同、类似或不同。处理器包括可操作以解码孔径读取指令720的解码单元768、可操作以执行孔径读取指令的执行单元770、以及可操作以存储用于孔径读取指令720的目的地操作数790的存储器地址信息780的寄存器578。除了涉及孔径读取指令的这些方面之外,代替或者除了涉及孔径写入指令518的方面之外,除非被另外指定,否则这些组件可以可选地与图5的对应命名的组件类似或相同(例如,具有相同或类似的特性)。此外,孔径读取指令720可以使得处理器712与访问受保护结构728和孔径732交互。除了仅涉及孔径读取指令的任何方面之外,除非被另外指定,否则这些组件还可以可选地与图5的对应命名的组件类似或相同(例如,具有相同或类似的特性)。为了避免使描述模糊,将主要描述处理器712及其组件的不同和/或附加特性,而不重复可以可选地相同的所有特性。
在操作期间,处理器712可以接收孔径读取指令720。在一些实施例中,孔径读取指令可以显式地指定或以其他方式指示目的地操作数790。作为示例,如所图示的示例实施例中所示,目的地操作数790可以存储在存储器726中,并且孔径读取指令可以指定或以其他方式指示一组寄存器778中的具有用来寻址目的地操作数的存储器地址信息780的一个或多个寄存器,但是本发明的范围不被如此限制。
解码单元768可以接收并解码孔径读取指令。执行单元770与解码单元768耦合并与寄存器778耦合。在操作期间,当被部署在***中时,执行单元可操作以与存储器726耦合。执行单元可响应于孔径读取指令和/或作为孔径读取指令的结果(例如,响应于从指令解码的一个或多个指令或控制信号和/或响应于指令被解码和/或响应于指令被提供给解码器)操作以访问或以其他方式接收与孔径732相关联的主机物理存储器地址730。如所示,在一些实施例中,主机物理存储器地址730可以可选地存储在访问受保护结构728中。访问受保护结构可以与先前(例如,针对访问受保护结构528)描述的那些类似或相同(例如,具有相同或类似的特性)。
执行单元还可以响应于孔径读取指令和/或作为孔径读取指令的结果而操作以在主机物理存储器地址776处从孔径732内读取数据734。孔径可以与先前(例如,针对孔径532)讨论的那些类似或相同(例如,具有相同或类似的特性)。在一些实施例中,可能不是通过地址转换获得在孔径732内从其读取数据734的主机物理存储器地址776。孔径读取指令可以在处理器的管芯上逻辑内具有特殊权限,以通过绕过地址转换来访问孔径。如之前所描述的,主机物理存储器地址776可以以各种不同方式与主机物理存储器地址730相关。
执行单元还可以响应于孔径读取指令和/或作为孔径读取指令的结果而操作,以将从孔径732接收的数据734作为数据792存储在目的地操作数790中。在一个具体示例实施例中,数据量可以可选地是六十四个字节的数据。在其他实施例中,数据量可以可选地多于或少于六十四个字节。
图8是用来从孔径832访问数据834的第一方法的框图。在该第一方法中,孔径访问指令816可指示偏移。孔径访问指令可以用于从访问受保护结构828访问用于孔径832的基址894的主机物理地址830。然后,可以向基址894应用指令指示的偏移895以获得要访问的孔径832内的数据834的物理存储器地址或位置。偏移895可以允许孔径访问指令816寻址或以其他方式指示和使用孔径832的不同存储位置或部分。软件可能永远不知道或学习用于孔径的基址894的实际主机物理地址,但可以能够指示相对于基址的不同偏移以寻址孔径内的不同位置。
图9是用来从孔径932-4访问数据934的第二方法的框图。在该第二方法中,孔径访问指令916可以指示孔径选择器和偏移。孔径访问指令可用于从访问受保护结构928访问用于孔径块的基址994的主机物理地址930。孔径块可以包括物理相邻存储器位置中的多个不同孔径。在所图示的示例中,示出了第一孔径932-1至第四孔径932-4,但是可以可选地存在更少或更多的孔径。由指令指示的孔径选择器996可用于从孔径块中选择孔径中的一个。在该示例中,选择第四孔径932-4。然后,可以向所选择的第四孔径的基址999应用由指令指示的偏移995,以获得要访问的所选第四孔径932-4内的数据934的物理存储器地址或位置。孔径选择器996可以允许选择和使用不同的孔径。这样的不同的孔径可用于不同的目的。作为示例,可以针对不同的VM之间的通信、针对与相同或不同VM相关联的不同应用或者以其他方式使用不同的孔径。
图10是用来从孔径1032-4访问数据1034的第三方法的框图。在该第三方法中,孔径访问指令1016可以指示孔径选择器和偏移。孔径访问指令可用于从访问受保护结构1028访问用于孔径列表的基址1097的主机物理地址1030。孔径列表可以包括主机物理地址的列表,每个是访问可能/可选地在不同的非邻近的物理存储器位置中的不同孔径的列表中的不同的对应的一个所需要的。
在所图示的示例中,示出了用于第一孔径的基址的第一主机物理存储器地址1098-1到用于第四孔径的基址的第四主机物理存储器地址1098-4,但是可以可选地存在更少或者更多。由指令指示的孔径选择器1096可用于从孔径列表中选择用于对应孔径的主机物理存储器地址中的一个。在该示例中,选择第四主机物理存储器地址1098-4。第四主机物理存储器地址1098-4寻址第四孔径1032-4的基址1094。然后,可以向第四孔径的基址1094应用由指令指示的偏移1095,以获得要访问的所选第四孔径1032-4内的数据1034的物理存储器地址或位置。
在一些实施例中,利用图8-10中所示的方法中的任一个,可以可选地执行边界检查以确保偏移在被应用于基址时落入(例如,如由下界和上界限定的)孔径的范围内。如果尝试的访问不完全在边界内,则可以不执行访问并且可以执行特殊处置(例如,可以执行VM退出,可以反对等)。
本文中描述的孔径访问指令、孔径和其他方法可用于各种不同的应用和目的。示例包括但不限于共享数据处理、共享服务器处理、共享云计算、共享网络处理等。为了进一步说明,考虑网络功能虚拟化(NFV)中的一个可能应用。NFV一般涉及在与固定功能网络器具相对的一般的商用现货(COTS)***上虚拟化和运行网络功能(例如,虚拟网络功能(VNF)),诸如路由、交换、智能分组处理等。一个关键的驱动用途是网络服务功能链接(NSFC)以形成网络处理流水线。例如,在分组被转发到下一个目的地之前,分组可以通过一系列VNF,诸如深度分组检查、网络地址转换和其他网络功能。可以潜在地使用不同的虚拟机来执行不同的NSFC任务、VNF等。本文中描述的方法可以潜在地用于将由已经执行一个NSFC任务、VNF等的一个虚拟机处理的数据与要执行另一NSFC任务、VNF等的另一虚拟机共享。另一可能的应用是在软件定义网络(SDN)中,其中两个或更多个VM可以同样合作并且可能想要共享数据。其他可能的应用在进程间通信(IPC)库、数据平面处理应用程序和软件交换应用程序中。这些仅是几个说明性示例。本发明的范围不限于任何特定应用。
示例性核心架构、处理器和计算机架构
处理器核心可以以不同方式实现、被实现用于不同的目的,以及被在不同的处理器中实现。例如,这样的核心的实现可以包括:1)意图用于通用计算的通用有序核心;2)意图用于通用计算的高性能通用无序核心;3)主要意图用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现可以包括:1)包括意图用于通用计算的一个或多个通用有序核心和/或意图用于通用计算的一个或多个通用无序核心的CPU;以及2)包括主要意图用于图形和/或科学(吞吐量)计算的一个或多个专用核心的协处理器。这样的不同处理器导致不同的计算机***架构,其可以包括:1)在与CPU分离的芯片上的协处理器;2)在与CPU相同的封装中的分离管芯上的协处理器;3)在与CPU相同的管芯上的协处理器(在该情况下,这样的协处理器有时称为专用逻辑,诸如集成图形和/或科学(吞吐量)逻辑,或者称为专用核心);以及4)可以在同一管芯上包括所描述的CPU(有时称为(一个或多个)应用核心或(一个或多个)应用处理器)、上面描述的协处理器以及附加功能性的片上***。接下来描述示例性核心架构,随后是示例性处理器和计算机架构的描述。
示例性核心架构
有序和无序核心框图
图11A是图示根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、无序发布/执行流水线二者的框图。图11B是图示根据本发明的实施例的要被包括在处理器中的有序架构核心的示例性实施例和示例性寄存器重命名、无序发布/执行架构核心二者的框图。图11A-B中的实线框图示了有序流水线和有序核心,而虚线框的可选附加图示了寄存器重命名、无序发布/执行流水线和核心。考虑到有序方面是无序方面的子集,将描述无序方面。
在图11A中,处理器流水线1100包括获取阶段1102、长度解码阶段1104、解码阶段1106、分配阶段1108、重命名阶段1110、调度(也称为分派或发布)阶段1112、寄存器读取/存储器读取阶段1114、执行阶段1116、写回/存储器写入阶段1118、异常处置阶段1122以及提交阶段1124。
图11B示出处理器核心1190,其包括被耦合到执行引擎单元1150的前端单元1130,并且这两个单元都被耦合到存储器单元1170。核心1190可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心、或者混合或替代核心类型。作为又一选项,核心1190可以是专用核心,诸如例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(GPGPU)核心、图形核心等。
前端单元1130包括分支预测单元1132,所述分支预测单元1132被耦合到指令高速缓存单元1134,所述指令高速缓存单元1134被耦合到指令转换后备缓冲器(TLB)1136,所述指令转换后备缓冲器(TLB)1136被耦合到指令获取单元1138,所述指令获取单元1138被耦合到解码单元1140。解码单元1140(或解码器)可以解码指令,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,其解码自原始指令、或以其他方式反映原始指令、或导出自原始指令。可以使用各种不同的机制来实现解码单元1140。合适机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核心1190包括微代码ROM或存储针对某些宏指令的微代码的其他介质(例如,在解码单元1140中或否则在前端单元1130内)。解码单元1140被耦合到执行引擎单元1150中的重命名/分配器单元1152。
执行引擎单元1150包括重命名/分配器单元1152,其被耦合到引退单元1154和一组一个或多个调度器单元1156。(一个或多个)调度器单元1156表示任何数目的不同调度器,包括保留站、中央指令窗口等。(一个或多个)调度器单元1156被耦合到(一个或多个)物理寄存器文件单元1158。(一个或多个)物理寄存器文件单元1158中的每个表示一个或多个物理寄存器文件,其中的不同物理寄存器文件存储一个或多个不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,(一个或多个)物理寄存器文件单元1158包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器以及通用寄存器。(一个或多个)物理寄存器文件单元1158被引退单元1154重叠以说明可以实现寄存器重命名和无序执行的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器文件;使用(一个或多个)未来文件、(一个或多个)历史缓冲器以及(一个或多个)引退寄存器文件;使用寄存器映射和寄存器池;等)。引退单元1154和(一个或多个)物理寄存器文件单元1158被耦合到(一个或多个)执行集群1160。(一个或多个)执行集群1160包括一组一个或多个执行单元1162以及一组一个或多个存储器访问单元1164。执行单元1162可以执行各种操作(例如,移位、加法、减法、乘法)并且对各种数据类型(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行各种操作。虽然一些实施例可以包括专用于特定功能或功能集的多个执行单元,但是其他实施例可以包括仅一个执行单元或全部执行所有功能的多个执行单元。(一个或多个)调度器单元1156、(一个或多个)物理寄存器文件单元1158以及(一个或多个)执行集群1160被示为可能是复数个,因为某些实施例针对某些数据/操作类型创建单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,它们各自具有它们自己的调度器单元、(一个或多个)物理寄存器文件单元和/或执行集群——并且在单独的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(一个或多个)存储器访问单元1164的某些实施例)。还应理解的是,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行的而其余是有序的。
该组存储器访问单元1164被耦合到存储器单元1170,所述存储器单元1170包括数据TLB单元1172,所述数据TLB单元1172被耦合到数据高速缓存单元1174,所述数据高速缓存单元1174被耦合到2级(L2)高速缓存单元1176。在一个示例性实施例中,存储器访问单元1164可以包括加载单元、存储地址单元和存储数据单元,其每个都被耦合到存储器单元1170中的数据TLB单元1172。指令高速缓存单元1134进一步被耦合到存储器单元1170中的2级(L2)高速缓存单元1176。L2高速缓存单元1176被耦合到一个或多个其他级别的高速缓存并最终耦合到主存储器。
作为示例,示例性寄存器重命名、无序发布/执行核心架构可以如下实现流水线1100:1)指令获取1138执行获取和长度解码阶段1102和1104;2)解码单元1140执行解码阶段1106;3)重命名/分配器单元1152执行分配阶段1108和重命名阶段1110;11)(一个或多个)调度器单元1156执行调度阶段1112;5)(一个或多个)物理寄存器文件单元1158和存储器单元1170执行寄存器读取/存储器读取阶段1114;执行集群1160执行执行阶段1116;6)存储器单元1170和(一个或多个)物理寄存器文件单元1158执行写回/存储器写入阶段1118;7)在异常处置阶段1122中可能涉及各种单元;以及8)引退单元1154和(一个或多个)物理寄存器文件单元1158执行提交阶段1124。
核心1190可以支持一个或多个指令集(例如,x86指令集(具有与较新的版本添加在一起的一些扩展);加利福尼亚州森尼韦尔的MIPS科技公司的MIPS指令集;加利福尼亚州森尼韦尔的ARM控股公司的ARM指令集(具有诸如NEON之类的可选附加扩展)),其包括本文中描述的(一个或多个)指令。在一个实施例中,核心1190包括用来支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许使用打包数据来执行由许多多媒体应用使用的操作。
应理解的是,核心可以支持多线程(执行两组或更多组并行的操作或线程),并且可以以多种方式来这样做,所述多种方式包括时间切片多线程、同时多线程(其中单个物理核心为物理核心正同时进行多线程的线程中的每个提供逻辑核心)或者其组合(例如,时间切片获取和解码以及其后的同时多线程,诸如在Intel®超线程技术中的那样)。
虽然在无序执行的情境中描述了寄存器重命名,但是应理解的是,寄存器重命名可以用在有序架构中。虽然处理器的图示实施例还包括单独的指令和数据高速缓存单元1134/1174以及共享的L2高速缓存单元1176,但是替代实施例可以具有用于指令和数据二者的单个内部高速缓存,诸如例如,1级(L1)内部高速缓存或多级内部高速缓存。在一些实施例中,***可以包括内部高速缓存和在核心和/或处理器外部的外部高速缓存的组合。替代地,所有高速缓存都可以在核心和/或处理器外部。
具体的示例性有序核心架构
图12A-B图示了较具体的示例性有序核心架构的框图,该核心将是芯片中的(包括相同类型和/或不同类型的其他核心的)若干逻辑块中的一个。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口以及其他必要I/O逻辑进行通信。
图12A是根据本发明的实施例的单个处理器核心连同它到管芯上互连网络1202的连接以及连同它的2级(L2)高速缓存的本地子集1204的框图。在一个实施例中,指令解码器1200支持具有打包数据指令集扩展的x86指令集。L1高速缓存1206允许到标量和向量单元中的对高速缓冲存储器的低等待时间访问。虽然(为了简化设计)在一个实施例中标量单元1208和向量单元1210使用单独的寄存器集(分别为标量寄存器1212和向量寄存器1214)并且在它们之间传送的数据被写入到存储器并然后从1级(L1)高速缓存1206读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集或包括允许数据被在这两个寄存器文件之间传送而不被写入和读回的通信路径)。
L2高速缓存的本地子集1204是被每个处理器核心一个地划分成单独的本地子集的全局L2高速缓存的一部分。每个处理器核心具有到它自己的L2高速缓存的本地子集1204的直接访问路径。由处理器核心读取的数据被存储在其L2高速缓存子集1204中并且可以被快速地、与其他处理器核心访问它们自己的本地L2高速缓存子集并行地访问。由处理器核心写入的数据被存储在它自己的L2高速缓存子集1204中并且被从其他子集中清除,如果必要的话。环形网络确保了共享数据的一致性。环形网络是双向的以允许诸如处理器核心、L2高速缓存以及其他逻辑块之类的代理在芯片内与彼此通信。在一些实施例中,每个环形数据路径每个方向都是1024位宽。
图12B是根据本发明的实施例的图12A中的处理器核心的一部分的展开图。图12B包括L1高速缓存1206的L1数据高速缓存1206A部分以及关于向量单元1210和向量寄存器1214的更多细节。具体地,向量单元1210是16宽向量处理单元(VPU)(参见16宽ALU 1228),其执行整数指令、单精度浮点指令以及双精度浮点指令中的一个或多个。VPU支持利用拌和单元1220拌和寄存器输入、利用数值转换单元1222A-B进行的数值转换以及利用复制单元1224对存储器输入的复制。写掩码寄存器1226允许预测所得到的向量写入。
具有集成存储器控制器和图形元件的处理器
图13是根据本发明的实施例的可以具有不止一个核心、可以具有集成存储器控制器并且可以具有集成图形元件的处理器1300的框图。图13中的实线框图示了具有单个核心1302A、***代理1310、一组一个或多个总线控制器单元1316的处理器1300,而虚线框的可选附加图示了具有多个核心1302A-N、***代理单元1310中的一组一个或多个集成存储器控制器单元1314以及专用逻辑1308的替代处理器1300。
因此,处理器1300的不同实现可以包括:1)具有专用逻辑1308以及核心1302A-N的CPU,所述专用逻辑1308是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核心),所述核心1302A-N是一个或多个通用核心(例如,通用有序核心、通用无序核心、这两个的组合);2)具有核心1302A-N的协处理器,所述核心1302A-N是主要意图用于图形和/或科学(吞吐量)计算的大量专用核心;以及3)具有核心1302A-N的协处理器,所述核心1302A-N是大量通用有序核心。因此,处理器1300可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量众集成核心(MIC)协处理器(包括30个或更多个核心)、嵌入式处理器等。可以在一个或多个芯片上实现处理器。处理器1300可以是一个或多个基板的一部分,和/或可以被使用多个工艺技术(诸如例如BiCMOS、CMOS或NMOS)中的任何工艺技术在一个或多个基板上实现。
存储器层级包括核心 内的一个或多个级别的高速缓存、一组一个或多个共享高速缓存单元1306以及被耦合到一组集成存储器控制器单元1314的外部存储器(未示出)。该组共享高速缓存单元1306可以包括一个或多个中级高速缓存(诸如2级(L2)、3级(L3)、4级(L4)或其他级别的高速缓存)、末级高速缓存(LLC)和/或其组合。虽然在一个实施例中基于环的互连单元1312将集成图形逻辑1308、该组共享高速缓存单元1306以及***代理单元1310/(一个或多个)集成存储器控制器单元1314互连,但是替代实施例可以使用任何数目的公知技术以用于互连这样的单元。在一个实施例中,在一个或多个高速缓存单元1306和核心1302A-N之间维持一致性。
在一些实施例中,核心1302A-N中的一个或多个能够进行多线程。***代理1310包括协调和操作核心1302A-N的那些组件。***代理单元1310可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或者包括调节核心1302A-N和集成图形逻辑1308的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
就架构指令集而言,核心1302A-N可以是同构的或异构的;即,核心1302A-N中的两个或更多个可以能够执行相同的指令集,而其他核心可以能够执行该指令集的仅子集或者不同的指令集。
示例性计算机架构
图14-17是示例性计算机架构的框图。针对膝上型计算机、台式计算机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备以及各种其他电子设备的领域中已知的其他***设计和配置也是合适的。一般地,能够合并如本文中公开的处理器和/或其他执行逻辑的大量各种各样的***或电子设备一般是合适的。
现在参考图14,示出了依照本发明的一个实施例的***1400的框图。***1400可以包括一个或多个处理器1410、1415,其被耦合到控制器中枢1420。在一个实施例中,控制器中枢1420包括图形存储器控制器中枢(GMCH)1490以及输入/输出中枢(IOH)1450(其可以在分离的芯片上);GMCH 1490包括存储器1440和协处理器1445所耦合到的存储器和图形控制器;IOH 1450将输入/输出(I/O)设备1460耦合到GMCH 1490。替代地,存储器和图形控制器中的一个或二者被集成在(如本文中描述的)处理器内,存储器1440和协处理器1445被直接耦合到处理器1410和在具有IOH 1450的单个芯片中的控制器中枢1420。
在图14中用虚线表示附加处理器1415的可选性质。每个处理器1410、1415可以包括本文中描述的处理核心中的一个或多个并且可以是处理器1300的某一版本。
存储器1440可以例如是动态随机存取存储器(DRAM)、相变存储器(PCM)或这两个的组合。针对至少一个实施例,控制器中枢1420经由多点(multi-drop)总线(诸如前侧总线(FSB))、点到点接口(诸如快速路径互连(QPI))或者类似连接1495与(一个或多个)处理器1410、1415通信。
在一个实施例中,协处理器1445是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中枢1420可以包括集成图形加速器。
就包括架构、微架构、热、功率消耗特性等的指标的量度范围而言,在物理资源1410、1415之间可以存在多种差异。
在一个实施例中,处理器1410执行控制一般类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器1410将这些协处理器指令识别为具有应由附连的协处理器1445来执行的类型。因此,处理器1410在协处理器总线或其他互连上将这些协处理器指令(或表示协处理器指令的控制信号)发给协处理器1445。(一个或多个)协处理器1445接受并执行接收到的协处理器指令。
现在参考图15,示出了依照本发明的实施例的第一较具体的示例性***1500的框图。如图15中所示,多处理器***1500是点到点互连***,并且包括经由点到点互连1550进行耦合的第一处理器1570和第二处理器1580。处理器1570和1580中的每个可以是处理器1300的某一版本。在本发明的一个实施例中,处理器1570和1580分别是处理器1410和1415,而协处理器1538是协处理器1445。在另一实施例中,处理器1570和1580分别是处理器1410和协处理器1445。
处理器1570和1580被示出分别包括集成存储器控制器(IMC)单元1572和1582。处理器1570还包括点到点(P-P)接口1576和1578作为其总线控制器单元的一部分;类似地,第二处理器1580包括P-P接口1586和1588。处理器1570、1580可以使用P-P接口电路1578、1588经由点到点(P-P)接口1550交换信息。如图15中所示,IMC 1572和1582将处理器耦合到相应的存储器,即存储器1532和存储器1534,它们可以是本地附连到相应处理器的主存储器的部分。
处理器1570、1580可以各自使用点到点接口电路1576、1578、1586、1588经由单独的P-P接口1552、1554与芯片组1590交换信息。芯片组1590可以可选地经由高性能接口1539与协处理器1538交换信息。在一个实施例中,协处理器1538是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可以被包括在任一处理器中或者在两个处理器外部,但经由P-P互连与处理器连接,使得如果处理器被置于低功率模式中则任一或两个处理器的本地高速缓存信息可以被存储在共享高速缓存中。
芯片组1590可以经由接口1596耦合到第一总线1516。在一个实施例中,第一总线1516可以是***组件互连(PCI)总线,或者诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不被如此限制。
如图15中所示,各种I/O设备1514可以被耦合到第一总线1516连同总线桥1518,所述总线桥1518将第一总线1516耦合到第二总线1520。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器之类的一个或多个附加处理器1515被耦合到第一总线1516。在一个实施例中,第二总线1520可以是低引脚计数(LPC)总线。各种设备可以被耦合到第二总线1520,包括例如键盘和/或鼠标1522、通信设备1527以及诸如盘驱动器或其他大容量存储设备之类的存储单元1528,其在一个实施例中可以包括指令/代码和数据1530。此外,音频I/O 1524可以被耦合到第二总线1520。注意,其他架构是可能的。例如,作为图15的点到点架构的替代,***可以实现多点总线或其他这样的架构。
现在参考图16,示出了依照本发明的实施例的第二较具体的示例性***11300的框图。图15和16中的类似元件具有类似的参考数字,并且已经从图16中省略了图15的某些方面以便避免使图16的其他方面模糊。
图16图示了处理器1570、1580可以分别包括集成存储器和I/O控制逻辑(“CL”)1572和1582。因此,CL 1572、1582包括集成存储器控制器单元并且包括I/O控制逻辑。图16图示了不仅存储器1532、1534被耦合到CL 1672、1682,而且I/O设备1614也被耦合到控制逻辑1672、1682。传统I/O设备1615被耦合到芯片组1590。
现在参考图17,示出了依照本发明的实施例的SoC 1700的框图。图13中的类似元件具有类似的参考数字。并且,虚线框是更高级的SoC上的可选特征。在图17中,(一个或多个)互连单元1702被耦合到:应用处理器1710,其包括一组一个或多个核心202A-N和(一个或多个)共享高速缓存单元1306;***代理单元1310;(一个或多个)总线控制器单元1316;(一个或多个)集成存储器控制器单元1314;一组一个或多个协处理器1720,其可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1730;直接存储器访问(DMA)单元1732;以及用于耦合到一个或多个外部显示器的显示单元1740。在一个实施例中,(一个或多个)协处理器1720包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
可以以硬件、软件、固件或这样的实现方法的组合来实现本文中公开的机制的实施例。本发明的实施例可以被实现为计算机程序或程序代码,其在包括至少一个处理器、(包括易失性和非易失性存储器和/或存储元件的)存储***、至少一个输入设备以及至少一个输出设备的可编程***上执行。
可以应用诸如图15中图示的代码1530之类的程序代码来输入指令以执行本文中描述的功能并生成输出信息。可以以已知方式将输出信息应用于一个或多个输出设备。出于本申请的目的,处理***包括具有处理器的任何***,所述处理器诸如例如是数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
可以以高级过程编程语言或面向对象的编程语言来实现程序代码以与处理***通信。也可以以汇编语言或机器语言来实现程序代码,如果期望的话。事实上,本文中描述的机制在范围上不限于任何特定的编程语言。在任何情况下,语言可以是编译语言或解释语言。
可以通过存储在机器可读介质上的表示处理器内的各种逻辑的表示性指令来实现至少一个实施例的一个或多个方面,所述指令当被机器读取时使得该机器制作用来执行本文中描述的技术的逻辑。称为“IP核心”的这样的表示可以被存储在有形的机器可读介质上并被供应给各种来宾或制造设施来加载到实际上制造逻辑或处理器的制作机器中。
这样的机器可读存储介质可以不限制地包括由机器或设备制造或形成的非暂时性有形的物品布置,其包括存储介质,诸如硬盘、任何其他类型的盘(包括软盘、光盘、紧凑盘只读存储器(CD-ROM)、紧凑盘可重写设备(CD-RW)以及磁光盘)、半导体设备(诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦可编程只读存储器(EPROM)、闪速存储器、电可擦可编程只读存储器(EEPROM)、相变存储器(PCM))、磁卡或光卡、或者适合于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括包含指令或包含设计数据(诸如硬件描述语言(HDL))的非暂时性有形机器可读介质,所述设计数据定义本文中描述的结构、电路、装置、处理器和/或***特征。这样的实施例也可以称为程序产品。
模拟(包括二进制转换、代码变形等)
在一些情况下,可以使用指令转换器来将指令从源指令集转换到目标指令集。例如,指令转换器可以(例如,使用静态二进制转换、包括动态编译的动态二进制转换)将指令转换、使指令变形、对指令模拟或以其他方式转换成要由核心处理的一个或多个其他指令。可以以软件、硬件、固件或其组合来实现指令转换器。指令转换器可以在处理器上、处理器外、或者部分在处理器上并且部分在处理器外。
图18是根据本发明的实施例的对比将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。在图示实施例中,指令转换器是软件指令转换器,但是替代地,指令转换器可以以软件、固件、硬件或其各种组合来实现。图18示出了可以使用x86编译器1804来编译采用高级语言1802的程序以生成x86二进制代码1806,x86二进制代码1806可以由具有至少一个x86指令集核心的处理器1816本机地执行。具有至少一个x86指令集核心的处理器1816表示可以通过如下来执行与具有至少一个x86指令集核心的英特尔处理器基本相同的功能的任何处理器:兼容地执行或以其他方式处理(1)英特尔x86指令集核心的指令集的很大一部分或(2)目标是在具有至少一个x86指令集核心的英特尔处理器上运行的应用程序或其他软件的目标代码版本,以便实现与具有至少一个x86指令集核心的英特尔处理器基本相同的结果。x86编译器1804表示可操作以生成x86二进制代码1806(例如,目标代码)的编译器,所述二进制代码1806可以被在具有或不具有附加链接处理的情况下在具有至少一个x86指令集核心的处理器1816上执行。类似地,图18示出了可以使用替代指令集编译器1808来编译采用高级语言1802的程序以生成替代指令集二进制代码1810,所述替代指令集二进制代码1810可以由不具有至少一个x86指令集核心的处理器1814(例如,具有执行加利福尼亚州森尼韦尔的MIPS科技公司的MIPS指令集和/或执行加利福尼亚州森尼韦尔的ARM控股公司的ARM指令集的核心的处理器)本机地执行。指令转换器1812用于将x86二进制代码1806转换成可由不具有x86指令集核心的处理器1814本机地执行的代码。该经转换的代码不太可能与替代指令集二进制代码1810相同,因为能够做到这一点的指令转换器难以制造;然而,经转换的代码将完成一般操作,并由来自替代指令集的指令组成。因此,指令转换器1812表示软件、固件、硬件或它们的组合,其通过模拟、模拟或任何其他过程而允许处理器或者不具有x86指令集处理器或核心的其他电子设备执行x86二进制代码1806。
针对本文中公开的任何处理器描述的组件、特征和细节可以可选地适用于本文中公开的任何方法,其在实施例中可以可选地被通过和/或利用这样的处理器执行。本文在实施例中描述的任何处理器可以可选地被包括在本文中公开的任何***中。本文在实施例中公开的任何指令可以可选地被通过和/或利用本文中公开的任何处理器执行,所述任何处理器可选地在一些实施例中具有本文中所示的任何微架构,并且可选地在一些实施例中被包括在本文中所示的任何***中。因此,在一些实施例中,针对本文中公开的任何指令描述的特征和细节因此可以可选地适用于可用于执行那些指令的本文中公开的处理器和/或***中的任何处理器和/或***。
本文中公开的处理器组件可以说是操作以执行操作、被配置成执行操作、能执行操作或能够执行操作。例如,解码器将可以解码指令,执行单元将可以存储结果等。为了清楚起见,要理解,这些表达不暗示处理器组件在操作或使用中,而是指处理器组件在其处于操作中时能做或能够做什么,但在装置权利要求中,这些处理器组件不在操作中。
在说明书和权利要求书中,可能使用了术语“耦合”和/或“连接”连同其派生词。这些术语不意图作为彼此的同义词。而是,在实施例中,“连接”可用于指示两个或更多个元件彼此直接物理和/或电接触。“耦合”可以意味着两个或更多个元件彼此直接物理和/或电接触。然而,“耦合”还可以意味着两个或更多个元件彼此不直接接触,但还仍然彼此协作或交互。例如,执行单元可以通过一个或多个介于中间的组件与寄存器和/或解码单元耦合。在图中,箭头用于示出连接和耦合。
本文中公开的组件和前述图中描绘的方法可以用包括硬件(例如,晶体管、门、电路等)、固件(例如,存储微代码或控制信号的非易失性存储器)、(例如,存储在非暂时性计算机可读存储介质上的)软件或其组合来实现。在一些实施例中,逻辑、模块或单元可以包括至少一些或主要包括潜在地与一些可选软件组合的硬件和/或固件的混合。
可能使用了术语“和/或”。如本文中所用,术语“和/或”意味着一个或另一个或二者(例如,A和/或B意味着A或B或A和B二者)。
在以上描述中,已经阐述了具体细节以便提供对实施例的透彻理解。然而,可以在没有这些具体细节中的一些的情况下实践其他实施例。本发明的范围将不由上面提供的具体示例确定,而是仅由下面的权利要求书确定。在其他实例中,已经以框图形式和/或不利用细节示出公知的电路、结构、设备和操作,以便避免模糊对说明书的理解。在认为适当的情况下,在各图之间重复参考数字或参考数字的末端部分以指示对应或类似的元件,所述元件可以可选地具有类似或相同的特性,除非另外指定或明显显而易见的。
某些操作可以由硬件组件执行,或者可以体现在机器可执行或电路可执行指令中,所述指令可以用于引起和/或导致机器、电路或硬件组件(例如,处理器、处理器的一部分、电路等)编程有执行所述操作的指令。还可以可选地通过硬件和软件的组合来执行所述操作。处理器、机器、电路或硬件可以包括具体或特定电路或其他逻辑(例如,潜在地与固件和/或软件组合的硬件),操作以执行和/或处理指令并存储响应于指令的结果。
一些实施例包括包含机器可读介质的制品(例如,计算机程序产品)。介质可以包括提供例如存储以机器可读的形式的信息的机构。机器可读介质可以提供或其上存储有指令或指令序列,所述指令或指令序列如果由机器执行和/或当由机器执行时操作以使机器实行和/或导致机器实行本文中公开的一个或多个操作、方法或技术。
在一些实施例中,机器可读介质可以包括有形和/或非暂时性机器可读存储介质。例如,非暂时性机器可读存储介质可以包括软盘、光学存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除且可编程ROM(EPROM)、电可擦除且可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂时性存储器、非暂时性数据存储设备等。非暂时性机器可读存储介质不包括暂时性传播信号。在一些实施例中,存储介质可以包括包含固态物质或材料的有形介质,所述固态物质或材料诸如例如是半导体材料、相变材料、磁性固体材料、固体数据存储材料等。替代地,可以可选地使用非有形的暂时性计算机可读传输介质,诸如例如电、光、声或其他形式的传播信号——诸如载波、红外信号和数字信号。
合适的机器的示例包括但不限于通用处理器、专用处理器、数字逻辑电路、集成电路等。合适的机器的其他示例包括包含处理器、数字逻辑电路或集成电路的计算机***或其他电子设备。这样的计算机***或电子设备的示例包括但不限于台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动因特网设备(MID)、媒体播放器、智能电视、上网机、机顶盒和视频游戏控制器。
例如,贯穿本说明书对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的引用指示特定特征可以被包括在本发明的实践中但不一定要求被包括在本发明的实践中。类似地,在说明书中,出于将本公开流线化和帮助理解各种发明方面的目的,有时将各种特征一起分组在单个实施例、图或其描述中。然而,本公开方法不应被解释为反映本发明需要比每个权利要求中明确叙述的特征更多的特征的意图。而是,如以下权利要求所反映,发明方面在于少于单个公开实施例的所有特征。因此,具体实施方式之后的权利要求特此被明确地结合到该具体实施方式中,其中每个权利要求独立作为本发明的单独实施例。
示例实施例
以下示例涉及进一步的实施例。可以在一个或多个实施例中的任何地方使用示例中的细节。
示例1是一种处理器,其包括用来对孔径访问指令进行解码的解码单元,以及与解码单元耦合的执行单元。执行单元响应于孔径访问指令而要从访问受保护结构读取将与将在***存储器中的孔径相关联的主机物理存储器地址,以及在将不是通过地址转换获得的主机物理存储器地址处访问孔径内的数据。
示例2包括示例1的处理器,可选地其中孔径将表示***存储器的将不可通过地址转换来访问的一部分。
示例3包括示例1的处理器,可选地其中解码单元将对孔径访问指令进行解码,所述孔径访问指令将是孔径写入指令,可选地其中孔径写入指令将指示源操作数,并且可选地其中执行单元响应于孔径写入指令而将从源操作数接收数据,并且将会将来自源操作数的数据存储到孔径内的主机物理存储器地址。
示例4包括示例3的处理器,可选地其中源操作数将在***存储器中,并且可选地其中执行单元响应于孔径写入指令而将实行地址转换以获得将用于从源操作数接收数据的主机物理存储器地址。
示例5包括示例1的处理器,可选地其中解码单元将对孔径访问指令进行解码,所述孔径访问指令将是孔径读取指令,可选地其中孔径读取指令将指示目的地操作数,并且可选地其中执行单元响应于孔径读取指令而将从孔径内的主机物理存储器地址读取数据,并且将会将从孔径读取的数据存储到目的地操作数。
示例6包括示例1至5中任一个的处理器,可选地其中执行单元响应于孔径访问指令而将从访问受保护结构读取主机物理存储器地址,所述访问受保护结构将包括虚拟机控制结构。
示例7包括示例1至5中任一个的处理器,可选地其中解码器将对来自存储器指令的至少一个负载进行解码,所述存储器指令如果被执行则将不被允许从访问受保护结构读取与孔径相关联的主机物理存储器地址。
示例8包括示例1至5中任一个的处理器,可选地其中执行单元响应于孔径访问指令而将从访问受保护结构读取主机物理存储器地址,所述主机物理存储器地址将被存储在***存储器中,并且可选地其中解码单元将对将不为访问受保护结构指示任何架构上可见的存储器地址信息的孔径访问指令进行解码。
示例9包括示例1至5中任一个的处理器,可选地其中解码单元将对将指示偏移的孔径访问指令进行解码,并且可选地其中执行单元响应于孔径访问指令而将在主机物理存储器地址处访问孔径内的数据,所述主机物理存储器地址将与和孔径的基址对应的主机物理存储器地址相差所述偏移。
示例10包括示例1至5中任一个的处理器,可选地其中执行单元响应于孔径访问指令而将从访问受保护结构读取主机物理存储器地址,所述主机物理存储器地址将表示用于将包括多个邻近孔径的孔径块的基址的主机物理存储器地址。
示例11包括示例10的处理器,可选地其中解码单元将对将指示孔径选择器的孔径访问指令进行解码以选择所述多个孔径中的一个。
示例12包括示例1至5中任一个的处理器,可选地其中执行单元响应于孔径访问指令而将从访问受保护结构读取主机物理存储器地址,所述主机物理存储器地址将表示用于孔径列表的基址的主机物理存储器地址,并且可选地其中孔径列表将存储多个主机物理存储器地址,每个用于多个潜在地不邻近的孔径中的不同的一个的基址。
示例13包括示例12的处理器,可选地其中解码单元将对将指示孔径选择器的孔径访问指令进行解码以选择所述多个孔径中的一个。
示例14是一种由处理器执行的方法,其包括在处理器处接收孔径写入指令,孔径写入指令指示源操作数;响应于孔径写入指令,从访问受保护结构读取与***存储器中的孔径相关联的主机物理存储器地址;以及响应于孔径写入指令,在孔径内将从源操作数接收的数据存储到不是通过地址转换获得的主机物理存储器地址。
示例15包括示例14的方法,还包括在处理器处接收孔径读取指令,孔径读取指令指示目的地操作数;响应于孔径读取指令,从访问受保护结构读取与***存储器中的孔径相关联的主机物理存储器地址;响应于孔径读取指令,在不是通过地址转换获得的主机物理存储器地址处从孔径内读取数据;以及将从孔径读取的数据存储到目的地操作数。
示例16包括示例15的方法,还包括从第一虚拟机发布孔径写入指令,从第二虚拟机发布孔径读取指令,并且可选地其中孔径写入指令和孔径读取指令用于在第一虚拟机和第二虚拟机之间共享数据。
示例17包括示例14的方法,还包括防止存储从源操作数接收的数据的主机物理存储器地址免受可通过第二级分层分页结构到达。
示例18包括示例14的方法,由虚拟机执行,并且可选地其中防止虚拟机知道存储从源操作数接收的数据的主机物理存储器地址。
示例19是一种制品,其包括非暂时性机器可读存储介质,所述机器可读存储介质存储指令,所述指令如果被机器执行则将使得机器实行包括如下步骤的操作:为孔径分配***存储器区域;使将与孔径相关联的主机物理存储器地址存储在访问受保护结构中;以及使得孔径的主机物理存储器地址不可通过第二级分层分页结构来访问。
示例20包括示例19的制品,可选地其中用来存储主机物理存储器地址的指令还包括如果被机器执行则将使得机器实行包括如下步骤的操作的指令:将主机物理存储器地址存储在将包括虚拟机控制结构的访问受保护结构中。
示例21包括示例19至20中任一个的制品,可选地其中用来存储主机物理存储器地址的指令还包括如果被机器执行则将使得机器实行包括如下步骤的操作的指令:将主机物理存储器地址存储在将与第一虚拟机对应的访问受保护结构中;以及将主机物理存储器地址存储在将与第二虚拟机对应的第二访问受保护结构中。
示例22是一种包括互连的用来处理指令的***。该***还包括与互连耦合的处理器以及与互连耦合的动态随机存取存储器(DRAM),处理器要接收孔径访问指令,处理器响应于孔径访问指令而要从访问受保护结构读取将与将在***存储器中的孔径相关联的主机物理存储器地址,并且在将不是通过地址转换获得的主机物理存储器地址处访问孔径内的数据。
示例23包括示例22的***,可选地其中孔径将表示***存储器的将不可通过地址转换来访问的一部分。
示例24包括示例22至23中任一个的***,可选地其中孔径访问指令将是孔径写入指令,可选地其中孔径写入指令将指示源操作数,并且可选地其中处理器响应于孔径写入指令而将从源操作数接收数据,并且将会将来自源操作数的数据存储到孔径内的主机物理存储器地址。
示例25包括示例1至13中任一个的处理器,还包括用来预测分支的可选分支预测单元,以及与分支预测单元耦合的可选指令获取单元,指令获取单元用来获取包括所述指令的指令。处理器还可以可选地包括与指令获取单元耦合的可选1级(L1)指令高速缓存,L1指令高速缓存用来存储指令,用来存储数据的可选L1数据高速缓存,以及用来存储数据和指令的可选2级(L2)高速缓存。处理器还可以可选地包括与解码单元、L1指令高速缓存和L2高速缓存耦合的指令获取单元,以在一些情况下从L1指令高速缓存和L2高速缓存中的一个获取指令并将指令提供给解码单元。处理器还可以可选地包括用来重命名寄存器的寄存器重命名单元、用来调度已经从用于执行的指令解码的一个或多个操作的可选调度器,以及用来提交指令的执行结果的可选提交单元。
示例26包括一种片上***,其包括至少一个互连、与所述至少一个互连耦合的示例1至3中任一个的处理器、与所述至少一个互连耦合的可选图形处理单元(GPU)、与所述至少一个互连耦合的可选数字信号处理器(DSP)、与所述至少一个互连耦合的可选显示控制器、与所述至少一个互连耦合的可选存储器控制器、与所述至少一个互连耦合的可选无线调制解调器、与所述至少一个互连耦合的可选图像信号处理器、与所述至少一个互连耦合的可选通用串行总线(USB)3.0兼容控制器、与所述至少一个互连耦合的可选蓝牙4.1兼容控制器、以及与所述至少一个互连耦合的可选无线收发器控制器。
示例27是一种操作以执行示例14至18中任一个的方法的处理器或其他装置。
示例28是一种包括用于执行示例14至18中任一个的方法的部件的处理器或其他装置。
示例29是一种处理器或其他装置,其包括操作以执行示例14至18中任一个的方法的模块和/或单元和/或逻辑和/或电路和/或部件的任何组合。
示例30是一种可选地非暂时性的和/或有形的机器可读介质,其可选地存储或以其他方式提供包括第一指令的指令,第一指令如果被处理器、计算机***、电子设备执行或其他机器执行和/或在被处理器、计算机***、电子设备执行或其他机器执行时操作以使机器实行示例14至18中任一个的方法。
示例31是一种基本上如本文中描述的处理器或其他装置。
示例32是一种操作以执行基本上如本文中描述的任何方法的处理器或其他装置。
示例33是一种操作以执行基本上如本文中描述的任何指令的处理器或其他装置。

Claims (25)

1.一种处理器,其包括:
解码单元,用来对孔径访问指令进行解码;以及
与解码单元耦合的执行单元,执行单元响应于孔径访问指令而要:
从访问受保护结构读取将与将在***存储器中的孔径相关联的主机物理存储器地址;以及
在将不是通过地址转换获得的主机物理存储器地址处访问孔径内的数据。
2.根据权利要求1所述的处理器,其中孔径将表示***存储器的将不可通过地址转换来访问的一部分。
3.根据权利要求1所述的处理器,其中解码单元将对孔径访问指令进行解码,所述孔径访问指令将是孔径写入指令,其中孔径写入指令将指示源操作数,并且其中执行单元响应于孔径写入指令而将从源操作数接收数据,并且将会将来自源操作数的数据存储到孔径内的主机物理存储器地址。
4.根据权利要求3所述的处理器,其中源操作数将在***存储器中,并且其中执行单元响应于孔径写入指令而将实行地址转换以获得将用于从源操作数接收数据的主机物理存储器地址。
5.根据权利要求1所述的处理器,其中解码单元将对孔径访问指令进行解码,所述孔径访问指令将是孔径读取指令,其中孔径读取指令将指示目的地操作数,并且其中执行单元响应于孔径读取指令而将从孔径内的主机物理存储器地址读取数据,并且将会将从孔径读取的数据存储到目的地操作数。
6.根据权利要求1至5中任一项所述的处理器,其中执行单元响应于孔径访问指令而将从访问受保护结构读取主机物理存储器地址,所述访问受保护结构将包括虚拟机控制结构。
7.根据权利要求1至5中任一项所述的处理器,其中解码器将对来自存储器指令的至少一个负载进行解码,所述存储器指令如果被执行则将不被允许从访问受保护结构读取与孔径相关联的主机物理存储器地址。
8.根据权利要求1至5中任一项所述的处理器,其中执行单元响应于孔径访问指令而将从访问受保护结构读取主机物理存储器地址,所述主机物理存储器地址将被存储在***存储器中,并且其中解码单元将对将不为访问受保护结构指示任何架构上可见的存储器地址信息的孔径访问指令进行解码。
9.根据权利要求1至5中任一项所述的处理器,其中解码单元将对将指示偏移的孔径访问指令进行解码,并且其中执行单元响应于孔径访问指令而将在主机物理存储器地址处访问孔径内的数据,所述主机物理存储器地址将与和孔径的基址对应的主机物理存储器地址相差所述偏移。
10.根据权利要求1至5中任一项所述的处理器,其中执行单元响应于孔径访问指令而将从访问受保护结构读取主机物理存储器地址,所述主机物理存储器地址将表示用于将包括多个邻近孔径的孔径块的基址的主机物理存储器地址。
11.根据权利要求10所述的处理器,其中解码单元将对将指示孔径选择器的孔径访问指令进行解码以选择所述多个孔径中的一个。
12.根据权利要求1至5中任一项所述的处理器,其中执行单元响应于孔径访问指令而将从访问受保护结构读取主机物理存储器地址,所述主机物理存储器地址将表示用于孔径列表的基址的主机物理存储器地址,并且其中孔径列表将存储多个主机物理存储器地址,每个用于多个潜在地不邻近的孔径中的不同的一个的基址。
13.根据权利要求12所述的处理器,其中解码单元将对将指示孔径选择器的孔径访问指令进行解码以选择所述多个孔径中的一个。
14.一种由处理器执行的方法,其包括:
在处理器处接收孔径写入指令,孔径写入指令指示源操作数;
响应于孔径写入指令,从访问受保护结构读取与***存储器中的孔径相关联的主机物理存储器地址;以及
响应于孔径写入指令,在孔径内将从源操作数接收的数据存储到不是通过地址转换获得的主机物理存储器地址。
15.根据权利要求14所述的方法,还包括:
在处理器处接收孔径读取指令,孔径读取指令指示目的地操作数;
响应于孔径读取指令,从访问受保护结构读取与***存储器中的孔径相关联的主机物理存储器地址;
响应于孔径读取指令,在不是通过地址转换获得的主机物理存储器地址处从孔径内读取数据;以及
将从孔径读取的数据存储到目的地操作数。
16.根据权利要求15所述的方法,还包括从第一虚拟机发布孔径写入指令,从第二虚拟机发布孔径读取指令,并且其中孔径写入指令和孔径读取指令用于在第一虚拟机和第二虚拟机之间共享数据。
17.根据权利要求14所述的方法,还包括防止存储从源操作数接收的数据的主机物理存储器地址免受可通过第二级分层分页结构到达。
18.根据权利要求14所述的方法,由虚拟机执行,并且其中防止虚拟机知道存储从源操作数接收的数据的主机物理存储器地址。
19.一种制品,其包括非暂时性机器可读存储介质,所述机器可读存储介质存储指令,所述指令如果被机器执行则将使得机器实行包括如下步骤的操作:
为孔径分配***存储器区域;
使将与孔径相关联的主机物理存储器地址存储在访问受保护结构中;以及
使得孔径的主机物理存储器地址不可通过第二级分层分页结构来访问。
20.根据权利要求19所述的制品,其中用来存储主机物理存储器地址的指令还包括如果被机器执行则将使得机器实行包括如下步骤的操作的指令:将主机物理存储器地址存储在将包括虚拟机控制结构的访问受保护结构中。
21.根据权利要求19至20中任一项所述的制品,其中用来存储主机物理存储器地址的指令还包括如果被机器执行则将使得机器实行包括如下步骤的操作的指令:
将主机物理存储器地址存储在将与第一虚拟机对应的访问受保护结构中;以及
将主机物理存储器地址存储在将与第二虚拟机对应的第二访问受保护结构中。
22.一种计算机***,其包括:互连;与互连耦合的根据权利要求1至5中任一项所述的处理器;以及与互连耦合的动态随机存取存储器(DRAM)。
23.一种装置,其操作以执行根据权利要求14至18中任一项所述的方法。
24.一种装置,其包括用于执行根据权利要求14至18中任一项所述的方法的部件。
25.一种非暂时性机器可读存储介质,其存储包括第一指令的指令,第一指令如果被机器执行则操作以使得机器实行根据权利要求14至18中任一项所述的方法。
CN201780041339.8A 2016-07-01 2017-06-01 孔径访问处理器、方法、***和指令 Active CN109416640B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202410397444.7A CN118349314A (zh) 2016-07-01 2017-06-01 孔径访问处理器、方法、***和指令
CN202311095454.7A CN117130729A (zh) 2016-07-01 2017-06-01 孔径访问处理器、方法、***和指令

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/200725 2016-07-01
US15/200,725 US11442760B2 (en) 2016-07-01 2016-07-01 Aperture access processors, methods, systems, and instructions
PCT/US2017/035398 WO2018004970A1 (en) 2016-07-01 2017-06-01 Aperture access processors, methods, systems, and instructions

Related Child Applications (2)

Application Number Title Priority Date Filing Date
CN202410397444.7A Division CN118349314A (zh) 2016-07-01 2017-06-01 孔径访问处理器、方法、***和指令
CN202311095454.7A Division CN117130729A (zh) 2016-07-01 2017-06-01 孔径访问处理器、方法、***和指令

Publications (2)

Publication Number Publication Date
CN109416640A true CN109416640A (zh) 2019-03-01
CN109416640B CN109416640B (zh) 2024-04-26

Family

ID=60785266

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202410397444.7A Pending CN118349314A (zh) 2016-07-01 2017-06-01 孔径访问处理器、方法、***和指令
CN201780041339.8A Active CN109416640B (zh) 2016-07-01 2017-06-01 孔径访问处理器、方法、***和指令
CN202311095454.7A Pending CN117130729A (zh) 2016-07-01 2017-06-01 孔径访问处理器、方法、***和指令

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202410397444.7A Pending CN118349314A (zh) 2016-07-01 2017-06-01 孔径访问处理器、方法、***和指令

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202311095454.7A Pending CN117130729A (zh) 2016-07-01 2017-06-01 孔径访问处理器、方法、***和指令

Country Status (5)

Country Link
US (2) US11442760B2 (zh)
CN (3) CN118349314A (zh)
DE (1) DE112017003332T5 (zh)
TW (1) TWI752031B (zh)
WO (1) WO2018004970A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112394985A (zh) * 2019-08-12 2021-02-23 上海寒武纪信息科技有限公司 执行方法、装置及相关产品

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10509729B2 (en) 2016-01-13 2019-12-17 Intel Corporation Address translation for scalable virtualization of input/output devices
US10228981B2 (en) 2017-05-02 2019-03-12 Intel Corporation High-performance input-output devices supporting scalable virtualization
CN112422615B (zh) * 2018-02-24 2023-11-10 华为技术有限公司 一种通信的方法及装置
US10834004B2 (en) * 2018-09-24 2020-11-10 Netsia, Inc. Path determination method and system for delay-optimized service function chaining
CN111966306A (zh) * 2019-05-20 2020-11-20 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
EP4268085A4 (en) * 2020-12-22 2024-04-10 INTEL Corporation PROCESSOR CIRCUITRY TO EXECUTE AN INPUT-OUTPUT TRANSLATION VIRTUAL ADDRESS INSTRUCTION
US12020059B2 (en) * 2021-08-30 2024-06-25 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040177261A1 (en) * 2002-11-18 2004-09-09 Watt Simon Charles Control of access to a memory by a device
US20050223225A1 (en) * 2004-03-31 2005-10-06 Campbell Randolph L Switching between protected mode environments utilizing virtual machine functionality
US7506096B1 (en) * 2005-10-06 2009-03-17 Parallels Software International, Inc. Memory segment emulation model for virtual machine
CN101542441A (zh) * 2006-11-22 2009-09-23 可递有限公司 多处理器计算***中的存储器一致性保护
US20100106954A1 (en) * 2008-10-23 2010-04-29 Robert Michael Muchsel Multi-Layer Content Protecting Microcontroller
US8347064B1 (en) * 2006-09-19 2013-01-01 Nvidia Corporation Memory access techniques in an aperture mapped memory space
US20130103923A1 (en) * 2011-10-20 2013-04-25 Jesse Pan Memory management unit speculative hardware table walk scheme
US20130111195A1 (en) * 2011-10-31 2013-05-02 Peter J. Wilson Data processing system with safe call and return
WO2013095577A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Determining policy actions for the handling of data read/write extended page table violations
CN104204990A (zh) * 2012-03-30 2014-12-10 英特尔公司 在使用共享虚拟存储器的处理器中加速操作的装置和方法
CN104956342A (zh) * 2013-02-05 2015-09-30 Arm有限公司 使用存储器保护单元来支持客户操作***的虚拟化
CN105122828A (zh) * 2013-04-19 2015-12-02 索尼公司 信息处理装置、内容请求方法以及计算机程序

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987557A (en) * 1997-06-19 1999-11-16 Sun Microsystems, Inc. Method and apparatus for implementing hardware protection domains in a system with no memory management unit (MMU)
US6192455B1 (en) * 1998-03-30 2001-02-20 Intel Corporation Apparatus and method for preventing access to SMRAM space through AGP addressing
US7424709B2 (en) 2003-09-15 2008-09-09 Intel Corporation Use of multiple virtual machine monitors to handle privileged events
US7739684B2 (en) * 2003-11-25 2010-06-15 Intel Corporation Virtual direct memory access crossover
US8327353B2 (en) 2005-08-30 2012-12-04 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism
US7461210B1 (en) * 2006-04-14 2008-12-02 Tilera Corporation Managing set associative cache memory according to entry type
US8239657B2 (en) 2007-02-07 2012-08-07 Qualcomm Incorporated Address translation method and apparatus
WO2009001153A1 (en) * 2007-06-28 2008-12-31 Nokia Corporation Memory protection unit in a virtual processing environment
US8688894B2 (en) 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US8650337B2 (en) * 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US20120047313A1 (en) * 2010-08-19 2012-02-23 Microsoft Corporation Hierarchical memory management in virtualized systems for non-volatile memory models
US9804870B2 (en) 2011-10-28 2017-10-31 Intel Corporation Instruction-set support for invocation of VMM-configured services without VMM intervention
US9223602B2 (en) 2012-12-28 2015-12-29 Intel Corporation Processors, methods, and systems to enforce blacklisted paging structure indication values
KR101842621B1 (ko) 2013-09-26 2018-03-27 인텔 코포레이션 지속 메모리에 대한 블록 저장 애퍼처들
US9311508B2 (en) 2013-12-27 2016-04-12 Intel Corporation Processors, methods, systems, and instructions to change addresses of pages of secure enclaves
US9824021B2 (en) * 2014-03-31 2017-11-21 International Business Machines Corporation Address translation structures to provide separate translations for instruction fetches and data accesses
US9454497B2 (en) 2014-08-15 2016-09-27 Intel Corporation Technologies for secure inter-virtual-machine shared memory communication
US10157146B2 (en) * 2015-02-12 2018-12-18 Red Hat Israel, Ltd. Local access DMA with shared memory pool
US10114958B2 (en) * 2015-06-16 2018-10-30 Microsoft Technology Licensing, Llc Protected regions

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040177261A1 (en) * 2002-11-18 2004-09-09 Watt Simon Charles Control of access to a memory by a device
US20050223225A1 (en) * 2004-03-31 2005-10-06 Campbell Randolph L Switching between protected mode environments utilizing virtual machine functionality
US7506096B1 (en) * 2005-10-06 2009-03-17 Parallels Software International, Inc. Memory segment emulation model for virtual machine
US8347064B1 (en) * 2006-09-19 2013-01-01 Nvidia Corporation Memory access techniques in an aperture mapped memory space
CN101542441A (zh) * 2006-11-22 2009-09-23 可递有限公司 多处理器计算***中的存储器一致性保护
US20100106954A1 (en) * 2008-10-23 2010-04-29 Robert Michael Muchsel Multi-Layer Content Protecting Microcontroller
US20130103923A1 (en) * 2011-10-20 2013-04-25 Jesse Pan Memory management unit speculative hardware table walk scheme
US20130111195A1 (en) * 2011-10-31 2013-05-02 Peter J. Wilson Data processing system with safe call and return
WO2013095577A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Determining policy actions for the handling of data read/write extended page table violations
CN104204990A (zh) * 2012-03-30 2014-12-10 英特尔公司 在使用共享虚拟存储器的处理器中加速操作的装置和方法
CN104956342A (zh) * 2013-02-05 2015-09-30 Arm有限公司 使用存储器保护单元来支持客户操作***的虚拟化
CN105122828A (zh) * 2013-04-19 2015-12-02 索尼公司 信息处理装置、内容请求方法以及计算机程序

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
X.M. LONG等: ""Dynamic switching characteristic dependence on sidewall angle for phase change memory"", 《SOLID-STATE ELECTRONICS》, vol. 67, no. 1, pages 1 - 5, XP028101233, DOI: 10.1016/j.sse.2011.07.001 *
肖建青;李红桥;张洵颖;龚龙庆;: "SPARC V8处理器中存储管理单元的设计", 科学技术与工程, no. 31 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112394985A (zh) * 2019-08-12 2021-02-23 上海寒武纪信息科技有限公司 执行方法、装置及相关产品

Also Published As

Publication number Publication date
CN118349314A (zh) 2024-07-16
US20230109637A1 (en) 2023-04-06
US11442760B2 (en) 2022-09-13
CN117130729A (zh) 2023-11-28
CN109416640B (zh) 2024-04-26
US20180004562A1 (en) 2018-01-04
TW201810027A (zh) 2018-03-16
WO2018004970A1 (en) 2018-01-04
TWI752031B (zh) 2022-01-11
DE112017003332T5 (de) 2019-03-14

Similar Documents

Publication Publication Date Title
CN109416640A (zh) 孔径访问处理器、方法、***和指令
CN104954356B (zh) 保护共享的互连以用于虚拟机
CN104049948B (zh) 指令仿真处理器、方法和***
CN104969199B (zh) 实施黑名单分页结构指示值的处理器、方法,以及***
CN102906692B (zh) 修改适配器功能参数的指令的方法和***
CN108268282A (zh) 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、***和指令
CN102906701B (zh) 在计算环境中控制对适配器的访问的方法和***
CN108388528A (zh) 基于硬件的虚拟机通信
CN109558168A (zh) 低等待时间加速器
CN108701027A (zh) 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、***和指令
CN105453030B (zh) 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和***
CN109690552A (zh) 用于判定是否将受保护容器页的加密副本加载到受保护容器存储器中的处理器、方法、***和指令
CN108351830A (zh) 用于存储器损坏检测的硬件装置和方法
CN108351779A (zh) 用于安全指令执行流水线的指令和逻辑
KR101941874B1 (ko) 클러스터 와이드-실행 머신에서 메모리 액세스를 위한 명령어 및 로직
CN108139905A (zh) 用于从持久存储器预取信息的指令和逻辑
CN108369509A (zh) 用于基于通道的跨步分散操作的指令和逻辑
CN109564552A (zh) 增强基于每页当前特权等级的存储器访问许可
CN108351835A (zh) 用于高速缓存控制操作的指令和逻辑
CN107209723A (zh) 用于虚拟化的细粒度地址重新映射
CN107918546A (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和***
CN107624182A (zh) 用于选择性的检查针对可转换存储器的页的受保护容器页对常规页类型指示的多页检查提示
CN108885551A (zh) 存储器复制指令、处理器、方法和***
CN102906720A (zh) 启用/禁用计算环境的适配器
CN102906694A (zh) 用于与适配器进行通信的加载指令

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