CN109643293B - 检测总线上锁条件并且避免总线锁 - Google Patents

检测总线上锁条件并且避免总线锁 Download PDF

Info

Publication number
CN109643293B
CN109643293B CN201780053380.7A CN201780053380A CN109643293B CN 109643293 B CN109643293 B CN 109643293B CN 201780053380 A CN201780053380 A CN 201780053380A CN 109643293 B CN109643293 B CN 109643293B
Authority
CN
China
Prior art keywords
processor
bus
bus lock
virtual machine
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201780053380.7A
Other languages
English (en)
Other versions
CN109643293A (zh
Inventor
V.尚博格
G.奈格
A.蒂亚加拉贾
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 CN109643293A publication Critical patent/CN109643293A/zh
Application granted granted Critical
Publication of CN109643293B publication Critical patent/CN109643293B/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test buses, lines or interfaces, e.g. stuck-at or open line faults
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3027Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • 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/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/105Program control for peripheral devices where the programme performs an input/output emulation function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • 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/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种处理器可包括:寄存器,用于存储总线锁禁用位;和执行单元,用于执行指令。执行单元可接收包括存储器访问请求的指令。所述执行还可确定存储器访问请求需要获取总线锁,并且响应于检测到总线锁禁用位指示总线锁被禁用,向操作系统通知故障。

Description

检测总线上锁条件并且避免总线锁
本公开涉及存储器管理的领域,并且具体地讲,涉及总线上锁条件的检测和避免的使用。
背景技术
处理器可在某些存储器操作期间将系统总线或等同链路上锁。当总线锁被断言(asserted)时,来自其它代理的存储器访问请求被阻挡。
附图说明
图1是图示根据本公开的实施例的发生总线上锁的环境的计算设备的方框图。
图2是根据本公开的实施例的可执行虚拟机监视器和一个或多个虚拟机的图1的计算设备的系统硬件的方框图。
图3是根据本公开的实施例的其中存储总线锁退出位的虚拟机控制结构(VMCS)的方框图。
图4是根据本公开的实施例的检测和避免总线锁条件的方法的流程图。
图5A是图示根据一个实施例的按顺序流水线和寄存器重新命名级、无序发出/执行流水线的方框图。
图5B是图示用于检测和避免总线锁条件的处理器的微架构的方框图。
图6图示用于处理器的微架构的方框图,所述处理器包括用于检测和避免总线锁条件的逻辑电路。
图7是根据一个实现方式的计算机系统的方框图。
图8是根据另一实现方式的计算机系统的方框图。
图9是根据一个实现方式的片上系统的方框图。
图10图示用于计算系统的方框图的另一实现方式。
图11图示用于计算系统的方框图的另一实现方式。
具体实施方式
处理器可在某些存储器操作期间将系统总线或等同互连件上锁,诸如针对不可高速缓存的存储器的上锁操作、跨越多个高速缓存行的上锁操作和当转换虚拟机的逻辑地址时来自不可高速缓存的存储器中的页表的页查询(page-walk)。当这种总线锁被断言时,来自其它代理的存储器访问请求被阻挡。然而,总线锁具有高性能损失,并且总线锁的过多使用能够显著降低系统性能。
在说明性示例中,在不可高速缓存的存储器的情况下可能需要总线锁,因为在主存储器中执行不可高速缓存的存储器的地址的更新,并且因此,需要总线锁以确保写回到主存储器的数据的相干性。对于不允许数据的高速缓存或不能探查处理器高速缓存的一些设备(诸如,与总线通信的传统设备或其它代理),这个情形可能是相关的,并且因此,在该设备的处理器上可能存在数据的较早的拷贝。
在另一说明性示例中,当响应于存储器请求而访问高速缓存中的两个高速缓存行时,处理器可能需要将系统总线上锁以便确保存储器相干性,因为在处理器正在访问或更新两个高速缓存行之一的同时,另一代理可以改变所述两个高速缓存行中的另一个高速缓存行。
在另一说明性示例中,在执行用于虚拟机(VM)的虚拟至物理地址转换时,VM的存储器管理单元(MMU)可响应于正在转换的地址的转换后备缓冲器(TLB)未命中而请求硬件页表查询器搜索(例如,“查询”)存储在存储器中的页表以确定物理地址并且自动地将物理地址加载到TLB中。硬件页表查询器的使用可减少开销,并且加快TLB未命中处理和故障处理。有时,处理器还可根据MMU请求而更新页表。为了实现这一点,处理器可能需要断言总线锁以执行页表更新,从而确保没有其它代理正在同时更新页表。
本公开提供系统和方法,用于特别检测这些类型的存储器操作并且执行用于避免正被获取的总线锁的步骤,因此提高系统性能。避免总线上锁可尤其有助于需要在云平台上运行不信任的工作负载的在云中操作的计算中心。在多租户环境中,如果不信任的工作负载引起总线上锁条件,则这种不信任的工作负载可引起平台上的其它工作负载的显著降级,因此在整体上损害云基础设施。
在没有公开的总线上锁条件的检测和总线锁的避免的情况下,需要运行实时工作负载的平台可能面临显著问题,比如错过最后期限并且因此由于错误动作的应用断言总线锁而引起故障。用于任务关键使用的这种平台的认证需要这样的保证:这种条件不能被造成或能够被检测和缓解。
根据一个实施例,为了检测和避免条件(诸如,引起总线上锁的这些条件),本公开提出使用位标记(在这里被称为总线锁禁用位),所述位标记可被存储在处理器寄存器(例如,模型专用寄存器(MSR))中以指示总线锁的获取被禁用。处理器的执行单元可接收存储器访问请求以执行指令。执行单元还可通过检测存储器访问请求或以上讨论的其它存储器操作来确定:该存储器访问请求需要获取总线锁。响应于检测到总线锁禁用位指示总线锁被禁用,执行单元可向操作系统通知故障。除了其他故障,故障可以特别是例如一般保护故障、系统故障或VM相关故障、用于通知总线锁的禁用的新故障类型。
操作系统的(或在指令由虚拟机执行的情况下的虚拟机管理器(VMM)的)故障处理器可随后按照产生的故障的类型处理故障,所述故障包括已发出该指令的任务的终止。作为另一实施例,故障处理器可响应于故障而在不执行总线锁的情况下对指令进行仿真。处理故障的故障处理器可能需要在指令仿真期间在总线上禁用来自其它代理的存储器访问。总线锁条件的这种检测以及响应于该检测而避免获取总线锁可允许需要关于延时的保证的平台(比如,运行实时操作系统的那些平台)不允许总线锁被软件使用并且利用基于寄存器的控制强制不允许总线锁。
作为另一实施例,虚拟机监视器(VMM)(例如,云服务服务器的虚拟机监视器(VMM))可依赖于硬件启用的虚拟化(诸如,虚拟机扩展(VMX)执行控制)以便被通知用于获取总线锁的请求并且在不使用总线锁的情况下对该请求进行仿真,并且因此,避免对其它工作负载的干扰。另外,或者替代地,处理器核可执行VMX执行控制指令以参照需要获取总线锁的虚拟机(VM)的执行检测条件。VMM可启用存储在与VM关联的虚拟机结构(VMCS)中的总线锁退出位。另外,响应于检测到在虚拟机的VMCS内启用总线锁退出位,替代于获取总线锁,所述核可执行虚拟机到VMM的VM退出。这可允许虚拟机避免继续将与其它虚拟机共享的总线上锁。替代地,所述核可将故障传送给虚拟机的操作系统故障处理器,以使VM的操作系统处理故障从而避免获取总线锁。
图1是图示根据本公开的实施例的发生总线上锁的环境的计算设备100的方框图。在各种实施例中,作为非限制性示例,“计算设备”可以是下面的设备或包括下面的设备:计算机、工作站、服务器、大型计算机、虚拟机(无论是仿真还是在“裸机”管理程序上)、嵌入式计算机、嵌入式控制器、嵌入式传感器、个人数字助手、膝上型计算机、蜂窝电话、IP电话、智能电话、平板计算机、可转换平板计算机、计算器具、网络器具、接收器、可穿戴计算机、手持式计算器或用于处理和传送数据的任何其它电子、微电子或微机电设备。
计算设备100包括处理器110,处理器110包括一个或多个核111、执行单元112和高速缓存113。处理器100连接到用于访问存储器120的系统代理114,并且连接到计算设备100的其它部件。处理器110还可耦合到系统总线170-1,系统总线170-1还又可包括存储总线170-2。计算设备100可由系统软件(诸如,操作系统122)管理。操作系统122可以是任何合适的操作系统。
存储器120可包括系统软件(诸如,操作系统122)、可信执行框架(TEF) 124的至少软件部分和只执行存储器130的一个或多个区域。管理处理器110和计算设备100的其它部件之间的通信的系统代理114可包括安全代理116以安全地配置和管理只执行存储器130。
计算设备100的其它部件可包括存储装置150、网络接口160和外围接口140。仅作为示例提供这个架构,并且这个架构意图是非排他性的和非限制性的。另外,公开的各种部分意图是仅仅逻辑划分,并且不必需要代表在物理上分开的硬件和/或软件部件。某些计算设备例如在单个物理存储器设备中提供存储器120和存储装置150,并且在其它情况下,存储器120和/或存储装置150在功能上分布在许多物理设备上。在虚拟机或管理程序的情况下,可按照在虚拟化层上运行的软件或固件的形式提供逻辑功能的全部或一部分以提供公开的逻辑功能。在其它示例中,诸如网络接口160的设备可仅提供执行它的逻辑操作所需的最少硬件接口,并且可依赖于软件驱动程序提供另外的必要的逻辑。因此,这里公开的每个逻辑块大体上意图包括被配置并可操作用于提供所述块的公开的逻辑操作的一个或多个逻辑元件。如贯穿本说明书所使用的,“逻辑元件”可包括硬件、外部硬件(数字、模拟或混合信号)、软件、往复软件、服务、驱动程序、接口、部件、模块、执行的算法、传感器、部件、固件、微码、可编程逻辑或能够协作以实现逻辑操作的对象。
在一个实施例中,处理器110可经系统代理114和/或存储器总线170-2按照可通信方式耦合到存储器120,存储总线170-2可以是例如直接存储器存取(DMA)总线,但可设想其它存储器架构,其它存储器架构包括其中存储器120经系统总线170-1或某个其它总线与处理器110通信的存储架构。处理器110可经系统代理114和/或系统总线170-1按照可通信方式耦合到其它设备,诸如存储装置150、外围接口140和网络接口160。
在各种实施例中,所述一个或多个核111可执行指令以便执行操作系统122、VMM、一个或多个虚拟机,并且代表计算系统100的网络接口160、外围接口140或I/O设备或设备驱动器执行存储器管理。在执行这种指令时,核111可产生存储器请求,存储器请求被发送给存储器120和/或存储装置150。在一个实施例中,响应于对指令进行解码,或者在执行单元112执行指令之前检测到需要获取总线锁的条件(诸如,以前讨论的那些条件)的情况下,一些存储器请求可能需要处理器110、系统代理114或某个其它系统代理或设备驱动器将系统170-1总线和/或存储总线170-2上锁。
如贯穿本说明书所使用的,“总线”包括任何有线或无线互连线、网络、连接、束、单个总线、多个总线、交叉开关网络、单级网络、多级网络或可操作而用于在计算设备的各部分之间或在计算设备之间传送数据、信号或电力的其它传导介质。应该注意的是,仅作为非限制性示例公开这些使用,并且一些实施例可省略一个或多个前面的总线,而其它实施例可采用附加的或不同的总线。
在各种示例中,“处理器”可包括可操作用于执行指令(无论是从存储器加载的指令还是直接在硬件中实现的指令)的逻辑元件的任何组合,作为非限制性示例,所述逻辑元件包括微处理器、数字信号处理器、现场可编程门阵列、图形处理单元、可编程逻辑阵列、专用集成电路或虚拟机处理器。在某些架构中,可提供多核处理器,在这种情况下,根据需要,处理器110可仅被视为多核处理器的一个核,或者可被视为整个多核处理器。在一些实施例中,还可提供一个或多个协处理器以用于专门化或支持功能。
为了简单起见,存储器120被示出为单个逻辑块,但物理实施例可包括任何合适的一种或多种易失性或非易失性存储技术的一个或多个块,所述任何合适的一种或多种易失性或非易失性存储技术包括例如DDR RAM、SRAM、DRAM、高速缓存、L1或L2存储器、片上存储器、寄存器、闪存、ROM、一次可编程(OTP)存储器、光学介质、虚拟存储区域、磁或磁带存储器等。在某些实施例中,存储器120可包括相对较低延时易失性或非易失性主存储器,而存储装置150可包括相对较高延时非易失性存储器。然而,存储器120和存储装置150不需要是在物理上分开的设备,并且在一些示例中,可简单地代表功能的逻辑分离。还应该注意的是,虽然作为非限制性示例公开了DMA,但DMA不是与本说明书一致的唯一协议,并且其它存储器架构也是可用的。
处理器110还可包括高速缓存113,或者可被耦合到高速缓存113。处理器110可使用高速缓存113提供对从存储器120检索的信息的低延时访问。例如,与由存储器120提供的存储器访问相比,高速缓存113可提供更快的存储器访问。因此,处理器110可使用高速缓存113存储从存储器120检索的信息以允许对该信息的更快的访问。在一些实施例中,高速缓存113可被实现为高速缓存的分级体系,诸如级1高速缓存(L1)、级2高速缓存(L2)、级3高速缓存(L3)、中级高速缓存(MLC)、末级高速缓存(LLC)和/或其组合。
存储装置150可以是任何种类的存储器120,或者可以是分开的设备。存储装置150可包括一个或多个非暂态计算机可读介质,作为非限制性示例,所述非暂态计算机可读介质包括硬盘驱动器、固态驱动器、外部存储装置、独立磁盘冗余阵列(RAID)、网络附接存储装置、光学存储装置、磁带驱动器、备用系统、云存储装置或前述各项的任何组合。存储装置150可以是或者可在其中包括一个或多个数据库或者存储在其它结构中的数据,并且可包括系统软件(诸如,操作系统122和可信执行框架(TEF) 124的软件部分)的存储拷贝。许多其它结构也是可能的,并且意图要被包括在本说明书的宽广范围内。
网络接口160可被提供以便以可通信方式将计算设备100耦合到有线或无线网络。如贯穿本说明书所使用的,“网络”可包括可操作用于在计算设备内或在计算设备之间交换数据或信息的任何通信平台,作为非限制性示例,所述任何通信平台包括自组织(ad-hoc)局部网络、为计算设备提供以电子方式交互的能力的互联网架构、计算设备能够使用来执行它们可被人类操作人员帮助或它们可手动地将数据键入到电话或其它合适的电子装备中的事务的普通老式电话系统(POTS)、在系统中的任何两个节点之间提供通信接口或交换的任何分组数据网络(PDN)或任何局域网(LAN)、城域网(MAN)、广域网(WAN)、无线局域网(WLAN)、虚拟私有网络(VPN)、内联网或方便网络或电话环境中的通信的任何其它适当的架构或系统。
外围接口140可被配置为与任何辅助设备对接,所述辅助设备连接到计算设备100但并不必然是计算设备100的核心架构的一部分。外围设备可以可操作用于为计算设备100提供扩展功能,并且可完全依赖于计算设备100或者可不完全依赖于计算设备100。在一些情况下,外围设备本身可以是计算设备。作为非限制性示例,外围设备可包括输入和输出设备,诸如,显示器、终端、打印机、键盘、鼠标、调制解调器、数据端口(例如,串行、并行、USB®、Firewire®(火线®)等)、网络控制器、光学介质、外部存储装置、传感器、换能器、致动器、控制器、数据采集总线、照相机、麦克风、扬声器或外部存储装置。
在一个示例中,外围设备包括显示适配器142、音频驱动器144和输入/输出(I/O)驱动器146。显示适配器142可被配置为提供人类可阅读视觉输出,诸如命令行界面(CLI)或图形桌面(诸如,微软视窗®(Microsoft Windows®)、苹果®(Apple®) OSX桌面或基于Unix™/Linux™ X 微软系统的桌面)。显示适配器142可提供任何合适的格式的输出,作为非限制性示例,诸如同轴输出、复合视频、分量视频、视频图形阵列(VGA)或数字输出(诸如,数字视觉接口(DVI)或高清晰度多媒体接口(HDMI))。在一些示例中,显示适配器142可包括硬件显卡,所述硬件显卡可具有它自己的存储器和它自己的图形处理单元(GPU)。音频驱动器144可提供用于可听声音的接口,并且可在一些示例中包括硬件声卡。作为非限制性示例,可按照模拟(诸如,3.5 mm立体声插孔)分量(“RCA”)立体声或按照数字音频格式(诸如,S/PDIF、AES3、AES47、HDMI、USB®、蓝牙®(Bluetooth®)或Wi-Fi®音频)提供声音输出。
在一个示例中,可信执行框架(TEF) 124可操作用于提供可信环境以安全地加载和/或执行代码和关联的数据。TEF 124可包括用于执行这里针对TEF 124描述的功能的硬件、软件和/或编码逻辑的任何合适的组合。在一个示例中,TEF 124可包括存储在非暂态计算机可读介质上的可执行指令和/或逻辑,所述可执行指令和/或逻辑可操作用于指示处理器或其它电子设备提供可信执行环境。在一些情况下,TEF 124可另外或者替代地包括专用集成电路,所述专用集成电路被设计为完全地或部分地实现TEF 124的功能。
TEF 124可例如被使用来证明平台或模块(诸如,固件、BIOS和/或操作系统122)的真实性。可在任何适当的时间(诸如,在启动计算设备100时或在有来自操作系统122的命令时)执行TEF 124的证明功能。在一些实施例中,TEF 124可使用微码或认证代码模块(ACM)执行安全加载和证明功能。
在一些情况下,TEF 124可作为“守护”进程运行。“守护进程”可包括作为后台进程运行的任何程序或一系列可执行指令(无论是在硬件、软件,固件,还是在其任何组合中实现)、终止并保持驻留程序、服务、系统扩展、控制面板、引导过程、BIOS子程序或在没有直接用户交互的情况下操作的任何类似程序。在某些实施例中,守护进程可在与保护环架构中的环0、1或2关联的“驱动程序空间”中以提高的特权运行。还应该注意的是,TEF 124还可包括其它硬件和软件,作为非限制性示例,包括配置文件、注册项目和交互或用户模式软件。
系统代理114可管理处理器110和计算设备100的其它部件之间的通信。在各种示例中,系统代理114可包括被配置为执行这里描述的系统代理114的功能(无论是从存储器或其它非暂态计算机可读介质加载的功能还是直接在硬件中实现的功能)的逻辑元件的任何组合,作为非限制性示例,所述逻辑元件包括微处理器、数字信号处理器、现场可编程门阵列、图形处理单元、可编程逻辑阵列、专用集成电路或虚拟机处理器。系统代理114可与处理器110集成,或者替代地,系统代理114可被实现在连接到处理器110的分开的芯片上。在一些实施例中,系统代理114可促进高性能计算任务。例如,系统代理114可包括存储控制器以提供处理器110和存储器120之间的接口。系统代理114还可例如使用直接媒体接口(DMI)和/或PCI快速®(PCI-Express®)桥提供处理器110和计算设备100的其它部件之间的桥。系统代理114还可包括安全代理116以提供安全功能,包括只执行存储器130的管理。
在一些实施例中,安全代理116可例如安全地配置和管理只执行存储器130,以避免代码和嵌入的机密信息由于除代码执行之外的任何目的而被从只执行存储器130读取。安全代理116可以是能够执行这里针对安全代理116描述的功能的硬件、软件和/或编码逻辑的任何合适的组合。在一些实施例中,安全代理116的功能可由系统代理114、处理器110、连接到系统代理114和/或处理器110的分开的部件和/或其组合实现。
在一些实施例中,安全代理116可将存储器120的一个或多个区域指定为只执行存储器130。只执行存储器130仅能被访问以检索用于执行的代码。只执行存储器130可例如被使用来存储受保护的信息,诸如固件、嵌入在固件中的任何秘密或密钥和/或任何其它机密代码、逻辑或关联的信息。在只执行存储器130中存储受保护的信息(诸如,代码和/或嵌入的机密信息)可避免受保护的信息由于除代码执行之外的任何目的而被从存储器读取或检索。以这种方式,存储在只执行存储器130上的机密和/或专有知识产权可受到保护以免被计算设备100的用户执行访问和/或反向工程。
图2是根据本公开的实施例的可执行虚拟机监视器(VMM) 215和一个或多个虚拟机230的图1的计算设备100的系统硬件200的方框图。系统硬件200可包括处理器210(例如,类似于图1的处理器110)和存储器220(例如,类似于图1的存储器120)。处理器210可包括总线锁禁用寄存器212,其中在一个实施例中,该寄存器可以是模型专用寄存器(MSR),但总线锁禁用寄存器212还可以是某个其它种类的寄存器。存储器220可存储操作系统222的映像(操作系统222可包括故障处理器223)和虚拟机控制结构(VMCS) 225。
故障处理器223可以是在操作系统222内执行的软件,并且可按照预定方式处理由在处理器210上运行的操作系统的映像而导致的任何数量的故障。例如,仅作为一些示例,这些故障可包括段不存在(#NP)、堆栈-段故障(#SS)、一般保护故障(#GP)或页故障(#PF)。响应于接收到这些故障之一或其它类型的故障,故障处理器223可被操作系统222调用。
系统硬件200可执行VMM 215(或管理程序),VMM 215还可包括VM退出处理器217。系统硬件200还可执行一个或多个虚拟机230。VM退出处理器217可在VMM内的软件中被执行,并且可在VM遇到故障或异常或需要退出虚拟机的其它条件时被处理器210调用以处理从虚拟机230的VM退出。在调用VM退出处理器132之前,处理器210可例如将顾客VM 140的状态保存在VMCS中。VM退出处理器132可例如访问处理器210已存储在VMCS中的信息以向VMM通知为什么发生VM退出的原因。VMM 215可管理和控制虚拟机230,并且特别地,按照针对某些处理要求或虚拟机230内的故障、异常等的处理可能需要的那样,控制和促进进入到虚拟机中以及从虚拟机退出。
在一个实施例中,每个虚拟机230可包括但不限于虚拟处理器235、包括故障处理器233的操作系统232和在操作系统232内运行的一个或多个应用234。虚拟处理器235可使用基础系统硬件200运行在虚拟机230内使用的线程。VMM 215还可执行存储器管理,包括虚拟机230的逻辑地址到顾客物理地址以及从顾客物理地址到存储在存储器220中的主机物理地址的转换。为了执行这种转换,VMM可访问可被存储在存储器225中的页表(或镜像操作系统232的页表的、保存的影子页表)和扩展页表。
在一个实施例中,处理器210可将总线锁禁用位存储在总线锁禁用寄存器212中以指示总线锁被禁用。在这种情况下,响应于接收到需要获取总线锁的存储器访问请求,处理器的执行单元112可由于在总线锁禁用寄存器212内设置了总线锁禁用位而向操作系统222通知故障。例如,替代于获取总线锁,可通知故障。故障可以是一般保护故障、异常或某种其它系统故障。
图3是根据本公开的实施例的在其中存储总线锁退出位315和总线锁策略位317的图2的虚拟机控制结构(VMCS) 225的方框图。VMCS 225可包括各种部分或区域,包括VM执行控制部分310(其中存储总线锁退出位315和总线锁策略位317)、VM退出控制部分320、VM进入控制部分330、顾客状态区域340、主机状态区域350和VM退出信息区域360。
在各种实施例中,VM执行控制部分310可定义处理器210应该如何响应于虚拟机230中发生的不同事件而做出反应。VM退出控制部分320可定义当处理器210从虚拟机230退出时处理器210应该做什么,例如,将VM的顾客状态存储在VMCS中并且从VMCS加载VMM状态。VM进入控制部分330可定义处理器210应该在进入虚拟机230时做什么,例如,在进入期间有条件地从VMCS加载虚拟机的顾客状态(包括调试控制)并且根据需要将中断或异常插入到虚拟机。顾客状态区域340可以是在从虚拟机230退出以及进入虚拟机230时处理器210存储和加载顾客处理器状态的位置。主机状态区域350可以是在从虚拟机230退出时处理器210加载VMM状态的地方。VM退出信息区域360可以是处理器210存储描述从虚拟机退出的原因的信息的位置。
在一个实施例中,处理器核111可执行虚拟机230和VMM 215的指令。作为指令的这种执行的一部分,处理器核111可调用逻辑以参照由需要获取总线锁的虚拟机对指令的执行检测条件。在一个示例中,所述条件是需要获取总线锁的虚拟机的存储器访问请求。响应于检测到在VMCS 225内启用总线锁退出位315,替代于获取总线锁,处理器核111可随后执行虚拟机到VMM的VM退出。处理器核111还可向VMM传送总线锁的获取作为VM退出的原因,处理器核111可将该原因存储在VMCS的VM退出信息区域360中。
在替代实施例中,替代于执行VM退出,处理器核111可响应于执行使存储器请求发出需要总线锁的获取的指令而向虚拟机230的操作系统232通知故障。所述故障可以是一般保护故障、系统故障或VM相关故障。类似地,如参照图2所讨论,处理器核111可响应于所述故障而结束指令的执行。另外,操作系统232的故障处理器233可响应于所述故障而禁用出自其它代理的存储器访问,并且在不需要总线锁的情况下对指令的执行进行仿真。
在一个实施例中,相对于向虚拟机的操作系统通知故障或异常,优先考虑执行VM退出。另外,相对于执行VM退出,优先考虑向虚拟机的操作系统通知分段故障或分页相关故障。处理器核111可另外或者替代地通过VMCS的总线锁策略位317访问总线锁退出策略,其中总线锁退出策略定义允许的总线锁的阈值数量(或每秒的总线锁的阈值数量)。响应于接收到对超过允许的总线锁的阈值数量的总线锁的请求,或者响应于检测到超过每秒允许的总线锁的阈值数量,处理器核111可执行从虚拟机230的VM退出。
图4是根据本公开的实施例的检测和避免总线锁条件的方法400的流程图。方法400可由系统执行,所述系统可包括硬件(例如,电路、专用逻辑和/或可编程逻辑)、软件(例如,可在计算机系统上执行以执行硬件仿真的指令)或者其组合。在说明性示例中,方法400可由图1的处理器110的处理器核111执行,或由图2的系统硬件200(例如,由执行指令并且访问存储在图2的存储器220中的数据的处理器210)执行。在一个实施例中,处理器核111的执行单元112施行需要总线上锁的指令的执行,并且因此,执行单元112可执行方法400的全部或一些步骤。
更具体地讲,参照图4,方法400可开始于此:处理器可接收用于执行的指令(404),并且确定该指令是否包括或需要存储器访问请求(408)。如果答案是“否”,则方法400可前进至执行单元执行该指令410。如果答案是“是”,则该方法可前进至处理器确定存储器访问请求是否需要获取总线锁(412)。如果存储器访问请求不需要总线锁,则该方法可前进至处理器执行存储器访问以检索需要的数据(416)。
进一步参照图4,响应于确定存储器访问请求的确需要获取总线锁,方法400可前进至处理器确定存储器访问请求是否被从虚拟机内发出(420)。如果答案是“否”,则方法400可前进至处理器确定总线锁禁用寄存器212内的总线锁禁用位是否被启用(424)。如果总线锁禁用位被启用,则方法400可前进至处理器向操作系统传送故障(428)。故障可被传送给操作系统的故障处理器,以便根据故障的类型被处理。例如,故障可以是使处理器结束指令的执行的一般保护故障。故障可以是具有由故障处理器执行的类似或不同处理的另一种类的故障或异常。然而,如果总线锁禁用位未被启用,则该方法可继续获取总线锁(442),执行存储器访问(436),并且解除总线锁(440)。
进一步参照图4,响应于在块420确定存储器访问请求源自虚拟机内,方法400可前进至处理器确定总线锁退出位是否在VMCS内被启用(454)。如果总线锁退出位未被启用,则方法400可如以前一样前进至块424。然而,如果总线锁退出位被启用,则方法400可前进至处理器将退出原因存储在VMCS中(例如,作为总线锁的获取),并且替代于获取总线锁,执行虚拟机到VMM的VM退出(458)。在一个替代实施例中,响应于接收到对超过允许的总线锁的阈值数量的总线锁的请求,或者响应于检测到超过每秒允许的总线锁的阈值数量,处理器可执行虚拟机的VM退出。不同的或另外的约束可被使用来用于触发至VMM的VM退出以避免总线锁的获取。
在各种实施例中,相对于向虚拟机的操作系统通知故障或异常,优先考虑执行VM退出。另外,相对于执行VM退出,优先考虑向虚拟机的操作系统通知分段故障或分页相关故障。
图5A是图示用于检测和避免总线锁条件的处理器500的微架构的方框图。具体地讲,处理器500描述根据本公开的至少一个实施例的将要被包括在处理器中的按顺序架构核和寄存器重新命名逻辑、无序发出/执行逻辑。检测和避免总线锁条件的实施例能够被实现在处理器500中。
处理器500包括耦合到执行引擎单元550的前端单元530,并且前端单元530和执行引擎单元550都被耦合到存储器单元570。处理器500可包括精减指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或者混合或替代核类型。作为另一选项,处理器500可包括专用核,诸如例如网络或通信核、压缩引擎、图形核等。在一个实施例中,处理器500可以是多核处理器,或者可以是多处理器系统的一部分。
前端单元530包括耦合到指令高速缓存单元534的分支预测单元532,指令高速缓存单元534被耦合到指令转换后备缓冲器(TLB) 536,TLB 536被耦合到指令获取单元538,指令获取单元538被耦合到解码单元540。解码单元540(也被称为解码器)可对指令进行解码,并且作为输出产生一个或多个微操作、微码入口点、微指令、其它指令或其它控制信号,它们被从原始指令解码出或以其它方式反映原始指令或被从原始指令得出。可使用各种不同机构实现解码器540。合适的机构的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(PLA)、微码只读存储器(ROM)等。指令高速缓存单元534还被耦合到存储器单元570。解码单元540被耦合到执行引擎单元550中的重新命名/分配器单元552。
执行引擎单元550包括重新命名/分配器单元552,重新命名/分配器单元552被耦合到退出单元554和一组的一个或多个调度器单元556。调度器单元556代表任何数量的不同调度器,包括预约站(RS)、中央指令窗口等。调度器单元556被耦合到物理寄存器堆单元558。每个物理寄存器堆单元558代表一个或多个物理寄存器堆,不同的物理寄存器堆存储一个或多个不同数据类型,诸如标量整数、标量浮点、拼填整数、拼填浮点、向量整数、向量浮点等、状态(例如,作为将要被执行的下一个指令的地址的指令指针)等。物理寄存器堆单元558与退出单元554交叠以图示可实现寄存器重新命名和无序执行的各种方式(例如,使用重新排序缓冲器和退出寄存器堆;使用未来堆、历史缓冲器和退出寄存器堆;使用寄存器映射和寄存器池等)。
通常,从处理器的外部或从程序员的角度,架构寄存器是可见的。所述寄存器不限于任何已知的特定类型的电路。各种不同类型的寄存器是合适的,只要它们能够如这里所述存储数据并且提供数据即可。合适的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重新命名的动态地分配的物理寄存器、专用物理寄存器和动态地分配的物理寄存器的组合等。退出单元554和物理寄存器堆单元558被耦合到执行群集560。执行群集560包括一组的一个或多个执行单元562和一组的一个或多个存储器访问单元564。执行单元562可执行各种操作(例如,移位、加法、减法、乘法),并且操作各种类型的数据(例如,标量浮点、拼填整数、拼填浮点、向量整数、向量浮点)。
尽管一些实施例可包括专用于特定功能或一组功能的许多执行单元,但其它实施例可包括全都执行所有功能的仅一个执行单元或多个执行单元。调度器单元556、物理寄存器堆单元558和执行群集560被示出为是可能的多个,因为某些实施例创建用于某些类型的数据/操作的分开的流水线(例如,标量整数流水线、标量浮点/拼填整数/拼填浮点/向量整数/向量浮点流水线和/或存储器访问流水线,每种流水线具有它们自己的调度器单元、物理寄存器堆单元和/或执行群集 - 并且在分开的存储器访问流水线的情况下,实现仅这个流水线的执行群集具有存储器访问单元564的某些实施例)。还应该理解,在使用分开的流水线的情况下,这些流水线中的一个或多个流水线可以是无序发出/执行,并且其余流水线按顺序发出/执行。
所述一组存储器访问单元564被耦合到存储器单元570,举几个例子,存储器单元570可包括数据预取器580、数据TLB单元572、数据高速缓存单元(DCU) 574和级2(L2)高速缓存单元576。在一些实施例中,DCU 574也被称为第一级数据高速缓存(L1高速缓存)。DCU574可处理多个未解决的高速缓存未命中,并且继续为输入的存储和加载服务。它还支持维持高速缓存相干性。数据TLB单元572是用于通过映射虚拟和物理地址空间来提高虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元564可包括负载单元、存储地址单元和存储数据单元,其中的每个单元被耦合到存储器单元570中的数据TLB单元572。L2高速缓存单元576可被耦合到一个或多个其它级的高速缓存,并且最终被耦合到主存储器。
在一个实施例中,通过自动地预测程序将要耗用哪些数据,数据预取器580以推测方式将数据加载/预取到DCU 574。预取可以指代在处理器实际上需要数据之前将存储在存储器分级体系的一个存储器单元(例如,位置)(例如,较低级高速缓存或存储器)中的数据转送到更靠近处理器(例如,产生对处理器的较低访问延时)的较高级存储器单元。更具体地讲,预取可指代在处理器发出对返回的特定数据的要求之前从一个较低级高速缓存/存储器到数据高速缓存和/或预取缓冲器的数据的早期检索。
处理器500可支持一种或多种指令集(例如,x86指令集(具有已利用较新的版本添加的一些扩展);英国赫特福德郡国王兰利(Kings Langley, Hertfordshire, UK)的想象技术公司(Imagination Technologies)的MIPS指令集;加利福尼业州森尼维尔(Sunnyvale, CA)的ARM 控股公司(ARM Holdings)的ARM指令集(具有可选的附加扩展(诸如,NEON))。
应该理解,所述核可支持多线程(执行两个或更多个并行组的操作或线程),并且可按照各种方式实现这一点,所述各种方式包括时间切片多线程、同时多线程(其中单个物理核为该物理核同时以多线程方式执行的每个线程提供逻辑核)或者其组合(例如,诸如英特尔®(Intel®)超线程技术中的时间切片获取和解码和其后的同时多线程)。
尽管在无序执行的情境下描述寄存器重新命名,但应该理解,可在按顺序架构中使用寄存器重新命名。尽管示出的处理器的实施例也包括分开的指令和数据高速缓存单元以及共享的L2高速缓存单元,但替代实施例可具有用于指令和数据二者的单个内部高速缓存,诸如例如级1(L1)内部高速缓存或多级的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和位于所述核和/或处理器外部的外部高速缓存的组合。替代地,所有的高速缓存可位于所述核和/或处理器外部。需要注意的是,指令高速缓存单元534、数据高速缓存单元574和L2高速缓存单元576通常不会实现在本公开中描述的过程,因为通常这些高速缓存单元使用不表现出页局部性行为的管芯上存储器。
图5B是图示根据本公开的一些实施例的由图5A的处理器500实现的按顺序流水线和寄存器重新命名级、无序发出/执行流水线的方框图。图5B中的实线框图示按顺序流水线,而虚线框图示寄存器重新命名、无序发出/执行流水线。在图5B中,处理器流水线500包括获取级502、长度解码级504、解码级506、分配级508、重新命名级510、调度(也被称为分派或发出)级512、寄存器读取/存储器读取级514、执行级516、回写/存储器写入级518、异常处理级522和提交级524。在一些实施例中,级502-524的排序可不同于示出的排序,并且不限于图5B中示出的所述特定排序。
图6图示根据一个实施例的用于处理器600的微架构的方框图,所述处理器600包括可被使用来检测和避免总线锁条件的逻辑电路。在一些实施例中,能够执行根据一个实施例的指令以操作具有字节、字、双字、四倍字等的大小以及诸如单精度和双精度整数和浮点数据类型的数据类型的数据元素。在一个实施例中,按顺序前端601是处理器600的一部分,其获取待执行指令并且准备所述指令以便稍后在处理器流水线中使用。页添加和内容复制的实施例能够被实现在处理器600中。
前端601可包括几个单元。在一个实施例中,指令预取器616从存储器获取指令并且将它们提供给指令解码器618,指令解码器618又对指令进行解码或解释。例如,在一个实施例中,解码器将接收的指令解码成机器能够执行的称为“微指令”或“微操作”(也被称为微op(micro op)或uop)的一个或多个操作。在其它实施例中,解码器将指令解析成操作码和对应数据和控制字段,所述操作码和对应数据和控制字段由微架构使用以执行根据一个实施例的操作。在一个实施例中,踪迹高速缓存630采用解码的uop,并且将它们汇编成uop队列634中的程序有序序列或踪迹以用于执行。当踪迹高速缓存630遇到复杂指令时,微码ROM(或RAM)632提供完成操作所需的uop。
一些指令被转换成单个微操作,而其它指令需要几个微操作以完成完整操作。在一个实施例中,如果需要超过四个微操作来完成指令,则解码器618访问微码ROM 632以执行该指令。对于一个实施例,指令能够在指令解码器618被解码成用于处理的少量的微op。在另一实施例中,如果需要许多微操作来完成操作,则指令能够被存储在微码ROM 632内。踪迹高速缓存630参考入口点可编程逻辑阵列(PLA),用于确定正确的微指令指针,以便从微码ROM 632读取用于完成根据一个实施例的一个或多个指令的微码序列。在微码ROM 632结束对用于指令的微操作排序之后,机器的前端601重新开始从踪迹高速缓存630获取微操作。
无序执行引擎603是准备用于执行的指令的地方。无序执行逻辑具有许多缓冲器以在指令沿着流水线前进并且被调度好执行时对指令流进行平滑和重新排序从而优化性能。分配器逻辑分配每个uop为了执行而需要的机器缓冲器和资源。寄存器重新命名逻辑将逻辑寄存器重新命名为寄存器堆中的条目。分配器还在指令调度器(存储器调度器、快速调度器602、慢速/一般浮点调度器604和简单浮点调度器606)前面为两个uop队列(一个uop队列用于存储器操作并且一个uop队列用于非存储器操作)中的一个uop队列中的每个uop分配入口。uop调度器602、604、606基于它们的相关输入寄存器操作数源的准备状态和uop完成它们的操作所需的执行资源的可用性确定uop何时准备好执行。一个实施例的快速调度器602能够在主时钟周期的每半个时钟周期上进行调度,而其它调度器能够仅在每个主处理器时钟周期进行一次调度。调度器对分派端口进行仲裁以调度uop以供执行。
寄存器堆608、610位于调度器602、604、606和执行块611中的执行单元612、614、616、618、620、622、624之间。存在分别用于整数和浮点操作的分开的寄存器堆608、610。一个实施例的每个寄存器堆608、610还包括旁路网络,所述旁路网络能够绕过还未被写到寄存器堆中的刚刚完成的结果或将还未被写到寄存器堆中的刚刚完成的结果转发给新的相关的uop。整数寄存器堆608和浮点寄存器堆610还能够彼此传送数据。对于一个实施例,整数寄存器堆608被划分成两个分开的寄存器堆,一个寄存器堆用于数据的低阶32位并且第二寄存器堆用于数据的高阶32位。一个实施例的浮点寄存器堆610具有128位宽的条目,因为浮点指令通常具有从64位到128位宽度的操作数。
执行块611包含在其中实际上执行指令的执行单元612、614、616、618、620、622、624。这个部分包括寄存器堆608、610,寄存器堆608、610存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器600包括许多执行单元:地址产生单元(AGU) 612、AGU614、快速ALU 616、快速ALU 618、慢速ALU 610、浮点ALU 612、浮点移动单元614。对于一个实施例,浮点执行块612、614执行浮点、MMX、SIMD和SSE或其它操作。一个实施例的浮点ALU612包括用于执行除法、平方根和余数微操作的64位乘64位的浮点除法器。对于本公开的实施例,可利用浮点硬件处理涉及浮点值的指令。
在一个实施例中,ALU操作前往高速ALU执行单元616、618。一个实施例的快速ALU616、618能够利用半时钟周期的有效延时执行快速操作。对于一个实施例,多数复杂的整数操作前往慢速ALU 620,因为慢速ALU 620包括用于长延时类型的操作的整数执行硬件,诸如乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作由AGU 622、624执行。对于一个实施例,在对64位数据操作数执行整数操作的情况下描述整数ALU 616、618、620。在替代实施例中,ALU 616、618、620能够被实现以支持各种数据位(包括16位、32位、128位、256位等)。类似地,浮点单元622、624能够被实现以支持具有各种宽度的位的一定范围的操作数。对于一个实施例,浮点单元622、624能够结合SIMD和多媒体指令对128位宽的拼填数据操作数进行操作。
在一个实施例中,uop调度器602、604、606在父负载已完成执行之前分派相关操作。因为在处理器600中以推测方式调度和执行uop,所以处理器600还包括用于处理存储器未命中的逻辑。如果数据负载在数据高速缓存中未命中,则能够在流水线中存在为调度器留下暂时错误数据的执行中的相关操作。重放机构跟踪并且重新执行使用错误数据的指令。仅相关操作需要被重放,并且独立操作被允许完成。处理器的一个实施例的调度器和重放机构也被设计为捕捉用于文本串比较操作的指令序列。
术语“寄存器”可指代被用作用于识别操作数的指令的一部分的板载的处理器存储单元。换句话说,(从程序员的角度)寄存器可以是可从处理器的外部使用的那些寄存器。然而,实施例的寄存器不应该局限于表示特定类型的电路。相反地,实施例的寄存器能够存储和提供数据,并且执行这里描述的功能。这里描述的寄存器能够由处理器内的电路使用任何数量的不同技术(诸如,专用物理寄存器、使用寄存器重新命名的动态地分配的物理寄存器、专用物理寄存器和动态地分配的物理寄存器的组合等)实现。在一个实施例中,整数寄存器存储三十二位的整数数据。一个实施例的寄存器堆还包含用于拼填数据的八个多媒体SIMD寄存器。
对于这里的讨论,寄存器被理解为被设计为保存拼填数据的数据寄存器,诸如能够利用来自加利福尼亚州圣克拉拉(Santa Clara, California)的英特尔公司(IntelCorporation)的MMX技术实现的微处理器中的64位的宽MMX™寄存器(在一些实例中,也被称为“mm”寄存器)。以整数和浮点形式二者可用的这些MMX寄存器能够利用伴随SIMD和SSE指令的拼填数据元素而操作。类似地,与SSE2、SSE3、SSE4或以后的技术(通常称为“SSEx”)相关的128位宽的XMM寄存器也能够被用于保存这种拼填数据操作数。在一个实施例中,在存储拼填数据和整数数据时,寄存器不需要区分这两种数据类型。在一个实施例中,整数和浮点被包含在相同寄存器堆中或被包含在不同寄存器堆中。另外,在一个实施例中,浮点和整数数据可被存储在不同寄存器或相同寄存器中。
实施例可被实现在许多不同系统类型中。现在参照图7,示出根据实现方式的多处理器系统700的方框图。如图7中所示,多处理器系统700是点对点互连系统,并且包括经点对点互连750耦合的第一处理器770和第二处理器780。如图7中所示,处理器770和780中的每个处理器可以是多核处理器,包括第一和第二处理器核(即,处理器核774a和774b以及处理器核784a和784b),但许多的更多的核潜在地可以存在于处理器中。
尽管示出为具有两个处理器770、780,但应该理解,本公开的范围不限于此。在其它实现方式中,一个或多个另外的处理器可存在于给定处理器中。
处理器770和780分别被示出为包括集成存储器控制器单元772和782。处理器770还包括点对点(P-P)接口776和788作为它的总线控制器单元的一部分;类似地,第二处理器780包括P-P接口786和788。处理器770、780可使用P-P接口电路778、788经点对点(P-P)接口750交换信息。如图7中所示,IMC 772和782将处理器耦合到相应的存储器,即存储器732和存储器734,存储器732和存储器734可以是在本地附接到相应处理器的主存储器的部分。
处理器770、780均可使用点对点接口电路776、794、786、798经各P-P接口752、754与芯片集790交换信息。芯片集790还可经高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可被包括在任一处理器中或被包括在两个处理器外部,但经P-P互连与处理器连接,从而如果处理器被布置在低功率模式,则任一处理器或两个处理器的本地高速缓存信息可被存储在所述共享高速缓存中。当将条目分配给共享高速缓存时,还可在一个或多个高速缓存控制器上在共享高速缓存中创建页局部性。
芯片集790可经接口796被耦合到第一总线716。在一个实施例中,第一总线716可以是外围部件互连(PCI)总线或者诸如PCI 快速(PCI Express)总线或互连总线的总线,但本公开的范围不限于此。
现在参照图8,示出根据本公开的实施例的第三系统800的方框图。图7和8中的相似的元件具有相似的附图标记,并且已从图7省略图8的某些方面以便避免模糊图8的其它方面。
图8图示:处理器870、880可分别包括集成存储器和I/O控制逻辑(“CL”) 872和892。对于至少一个实施例,CL 872、882可包括集成存储器控制器单元(诸如,这里描述的集成存储器控制器单元)。另外,CL 872、892还可包括I/O控制逻辑。图8图示:存储器832、834被耦合到CL 872、892,并且I/O设备814也被耦合到控制逻辑872、892。传统I/O设备815被耦合到芯片集890。
图9是可包括一个或多个核902的示例性片上系统(SoC) 900。在膝上型计算机、桌上型计算机、手持式PC、个人数字助手、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备和各种其它电子装置的领域中已知的其它系统设计和结构也是合适的。总体而言,能够包括如这里所公开的处理器和/或其它执行逻辑的极大范围的各种系统或电子设备通常是合适的。
在图9的示例性SoC 900内,虚线框是更高级的SoC上的特征。互连单元902可被耦合到:应用处理器917,其包括一组的一个或多个核902A-N和共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;一组的一个或多个媒体处理器920,其可包括集成图形逻辑908、用于提供静止和/或视频照相机功能的图像处理器924、用于提供硬件音频加速的音频处理器926和用于提供视频编码/解码加速的视频处理器928;静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;和显示单元940,用于耦合到一个或多个外部显示器。
接下来参照图10,绘制了根据本公开的实施例的片上系统(SoC)设计的实施例。作为说明性示例,SoC 1000被包括在用户装备(UE)中。在一个实施例中,UE指代将要由最终用户用来通信的任何设备,诸如手持电话、智能电话、平板计算机、超薄笔记本、具有宽带适配器的笔记本或任何其它类似的通信设备。UE可连接到基站或节点,所述基站或节点在性质上能够对应于GSM网络中的移动站(MS)。页添加和内容复制的实施例能够被实现在SoC1000中。
这里,SoC 1000包括2个核 - 1006和1007。类似于以上的讨论,核1006和1007可符合指令集架构,诸如具有英特尔® 架构核™(Intel® Architecture Core™)的处理器、高级微设备有限公司(Advanced Micro Devices, Inc. (AMD))处理器、基于MIPS的处理器、基于ARM的处理器设计或其客户以及它们的被许可方或采用者。核1006和1007被耦合到高速缓存控制1008,高速缓存控制1008与总线接口单元1009和L2高速缓存1010关联以与系统1000的其它部分通信。互连1011包括片上互连(诸如,IOSF、AMBA或以上讨论的其它互连),其能够实现描述的本公开的一个或多个方面。
在一个实施例中,SDRAM控制器1040可经高速缓存125连接到互连1011。互连1011向其它部件提供通信信道,所述其它部件诸如用于与SIM卡对接的订户身份模块(SIM)1030、用于保存由核1006和1007执行以初始化和引导SoC 1000的引导代码的引导ROM1035、用于与外部存储器(例如,DRAM 1060)对接的SDRAM控制器1040、用于与非易失性存储器(例如,闪存1065)对接的闪存控制器1045、用于与外围设备对接的外围控制1050(例如,串行外设接口)、用于显示和接收输入(例如,触摸启用的输入)的视频编码解码器1020和视频接口1025、用于执行图形相关计算的GPU 1015等。这些接口中的任何接口可包括这里描述的实施例的方面。
另外,该系统图示用于通信的外围设备,诸如蓝牙®(Bluetooth®)模块1070、3G调制解调器1075、GPS 1080和Wi-Fi®1085。需要注意的是,如上所述,UE包括用于通信的无线电设备。作为结果,可能不包括所有这些外围通信模块。然而,在UE中,应该包括用于外部通信的某种形式的无线电设备。
图11图示具有计算系统1100的示例性形式的机器的图形表示,在该机器内,可执行用于使该机器执行这里讨论的多种方法中的任何一种或多种的指令集。在替代实施例中,该机器可连接(例如,联网)到LAN、内联网、外联网或互联网中的其它机器。该机器在客户机-服务器网络环境中可以以服务器或客户机设备的身份操作,或者在对等(或分布式)网络环境中可以以对等机器的身份操作。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助手(PDA)、蜂窝电话、web器具、服务器、网络路由器、交换机或桥或能够执行指定由该机器采取的动作的一组指令(顺序的或其它方式的)的任何机器。另外,尽管仅示出单一机器,但术语“机器”也应该被理解为包括单独地或共同地执行一组(或多组)指令以执行这里讨论的多种方法中的任何一种或多种的机器的任何集合。页添加和内容复制的实施例能够被实现在计算系统1100中。
计算系统1100包括经总线1108彼此通信的处理设备1102、主存储器1104(例如,闪存、动态随机存取存储器(DRAM)(诸如,同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1106(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储设备1118。在一个实施例中,总线1108可由图1的系统总线170-1和/或存储器总线170-2构成,并且共享总线1108的存储器和外围设备可以是系统代理114或通过系统代理114工作,类似于如参照图1所讨论的。
处理设备1102代表一个或多个通用处理设备,诸如微处理器、中央处理单元等。更具体地讲,处理设备可以是复杂指令集计算(CISC)微处理器、精减指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器或实现其它指令集的处理器或实现指令集的组合的处理器。处理设备1102还可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一个实施例中,处理设备1102可包括一个或处理器核。处理设备1102被配置为执行用于执行这里讨论的操作的处理逻辑1126。
在一个实施例中,处理设备1102能够是图1的计算系统100的一部分。替代地,计算系统1100能够包括如这里所述的其它部件。应该理解,所述核可支持多线程(执行两个或更多个并行组的操作或线程 ),并且可按照各种方式实现这一点,所述各种方式包括时间切片多线程、同时多线程(其中单个物理核为该物理核同时以多线程方式执行的每个线程提供逻辑核)或者其组合(例如,诸如英特尔®超线程技术中的时间切片获取和解码和其后的同时多线程)。
计算系统1100还可包括以可通信方式耦合到网络1119的网络接口设备1118。计算系统1100也可包括视频显示设备1110(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1110(例如,键盘)、光标控制设备1114(例如,鼠标)、信号产生设备1120(例如,扬声器)或其它外围设备。另外,计算系统1100可包括图形处理单元1122、视频处理单元1128和音频处理单元1132。在另一实施例中,计算系统1100可包括芯片集(未示出),所述芯片集指代一组集成电路或芯片,所述一组集成电路或芯片被设计为与处理设备1102一起工作并且控制处理设备1102和外部设备之间的通信。例如,芯片集可以是母板上的一组芯片,所述母板将处理设备1102链接到超高速设备(诸如,主存储器1104和图形控制器)以及将处理设备1102链接到外围设备的低速外围总线(诸如,USB、PCI或ISA总线)。
数据存储设备1118可包括计算机可读存储介质1124,计算机可读存储介质1124上存储软件1126,软件1126包含这里描述的功能的多种方法中的任何一种或多种。软件1126在其由计算系统1100执行期间还可完全或至少部分地驻留在主存储器1104内作为指令1126和/或驻留在处理设备1102内作为处理逻辑;主存储器1104和处理设备1102也构成计算机可读存储介质。
计算机可读存储介质1124还可被用于存储使用处理设备1102的指令1126(诸如,参照图1和2所述)和/或包含调用以上应用的方法的软件库。尽管计算机可读存储介质1124在示例性实施例中被示出为单一介质,但术语“计算机可读存储介质”应该被理解为包括存储所述一组或多组指令的单一介质或多个介质(例如,集中式或分布式数据库和/或关联的高速缓存和服务器)。术语“计算机可读存储介质”也应该被理解为包括这样的任何介质:该介质能够存储、编码或传送用于由机器执行的一组指令并且使机器执行本实施例的多种方法中的任何一种或多种。术语“计算机可读存储介质”应该相应地被理解为包括但不限于固态存储器以及光学和磁介质。
下面的示例涉及另外的实施例。
示例1是一种处理器,包括:1) 寄存器,用于存储总线锁禁用位;和2) 执行单元,用于执行指令,其中所述执行单元:a) 接收包括存储器访问请求的指令;b) 确定存储器访问请求需要获取总线锁;以及c) 响应于检测到总线锁禁用位指示总线锁被禁用,向操作系统通知故障。
在示例2中,如示例1所述的处理器,其中所述故障是一般保护故障。
在示例3中,如示例1所述的处理器,其中所述寄存器是模型专用寄存器。
在示例4中,如示例1所述的处理器,其中所述执行单元还响应于检测到总线锁禁用位被启用而结束指令的执行。
在示例5中,如示例1所述的处理器,其中所述执行单元还响应于故障而执行操作系统的故障处理器以:a) 禁用出自其它代理的存储器访问;以及b) 在不需要总线锁的情况下对指令的执行进行仿真。
在示例6中,如示例1所述的处理器,其中所述存储器访问请求包括针对不可高速缓存的存储器的上锁操作。
在示例7中,如示例1所述的处理器,其中所述存储器访问请求包括跨越多个高速缓存行的上锁操作。
在示例8中,如示例1所述的处理器,其中所述存储器访问请求包括来自不可高速缓存的存储器中的页表的页查询。
各种实施例可具有上述结构特征的不同组合。例如,还可相对于这里描述的方法或过程实现上述计算系统的所有可选的特征,并且示例中的细节可被用在一个或多个实施例中的任何地方。
示例9是一种片上系统(SoC),包括:1) 存储器,用于存储虚拟机控制结构(VMCS);和2) 核,耦合到存储器,其中所述核执行虚拟机(VM)的指令,并且其中所述核执行虚拟机监视器(VMM)以a)控制进入到虚拟机中以及从虚拟机退出,其中所述核还:b) 执行VM扩展执行控制指令以参照需要获取总线锁的虚拟机的执行检测条件;以及c) 响应于检测到总线锁退出位被VMCS的字段启用,替代于获取总线锁,执行至VMM的VM退出以取代虚拟机的执行。
在示例10中,如示例9所述的SoC,其中所述条件包括需要获取总线锁的虚拟机的存储器访问请求。
在示例11中,如示例9所述的SoC,其中所述核还在VMCS中存储总线锁的获取作为VM退出的原因。
在示例12中,如示例9所述的SoC,其中相对于向虚拟机的操作系统通知故障或异常,优先考虑VM退出。
在示例13中,如示例9所述的SoC,其中所述核还:a) 从VMCS的总线锁策略位检索总线锁退出策略,所述总线锁退出策略定义允许的总线锁的阈值数量;以及b) 响应于接收到对超过允许的总线锁的阈值数量的总线锁的请求,执行虚拟机到VMM的VM退出。
各种实施例可具有上述结构特征的不同组合。例如,还可相对于这里描述的系统实现上述处理器和方法的所有可选的特征,并且示例中的细节可被用在一个或多个实施例中的任何地方。
示例14是一种系统,包括:a) 存储器,用于存储虚拟机控制结构(VMCS);和b) 处理器,耦合到存储器,其中所述处理器执行虚拟机(VM)的指令,并且其中所述处理器a)执行虚拟机监视器(VMM)以管理虚拟机;其中所述处理器还:b) 响应于执行需要获取总线锁的虚拟机内的指令而执行VM扩展执行控制指令以检测存储器访问;以及c) 响应于检测到在VMCS内启用总线锁退出位,替代于获取总线锁,执行至VMM的VM退出以取代虚拟机的执行。
在示例15中,如示例14所述的系统,其中所述处理器还在VMCS中存储总线锁的获取作为VM退出的原因。
在示例16中,如示例14所述的系统,其中相对于向虚拟机的操作系统通知故障或异常,优先考虑VM退出。
在示例17中,如示例14所述的系统,其中所述处理器还:a) 从VMCS的总线锁策略位检索总线锁退出策略,所述总线锁退出策略定义允许的总线锁的阈值数量;以及b) 响应于接收到对超过允许的总线锁的阈值数量的总线锁的请求,执行虚拟机到VMM的VM退出。
各种实施例可具有上述结构特征的不同组合。例如,还可相对于这里描述的系统实现上述处理器和方法的所有可选的特征,并且示例中的细节可被用在一个或多个实施例中的任何地方。
示例18是一种方法,包括:a) 由处理器的执行单元接收产生存储器访问请求的指令;b) 由执行单元确定存储器访问请求需要获取总线锁;以及c) 响应于确定在寄存器内启用总线锁禁用位,由执行单元向操作系统传送故障。
在示例19中,如示例18所述的方法,其中所述故障是一般保护故障。
在示例20中,如示例18所述的方法,还包括:响应于检测到总线锁禁用位被启用,由执行单元结束指令的执行。
在示例21中,如示例18所述的方法,还包括响应于故障而执行故障处理器以:a)禁用出自其它代理的存储器访问;以及b) 在不需要总线锁的情况下对指令的执行进行仿真。
在示例22中,如示例18所述的方法,还包括:响应于确定存储器访问请求源自虚拟机(VM)并且总线锁退出位在VM的虚拟机控制结构(VMCS)内被启用,替代于获取总线锁,执行虚拟机到虚拟机监视器(VMM)的VM退出,以取代VM的执行。
在示例23中,如示例22所述的方法,还包括:在VMCS中存储总线锁的获取作为VM退出的原因。
在示例24中,如示例22所述的方法,其中相对于执行VM退出,优先考虑向虚拟机的操作系统通知分段故障或分页相关故障。
在示例25中,如示例22所述的方法,还包括:a) 从VMM接收总线锁退出策略,所述总线锁退出策略定义每秒允许的总线锁的阈值数量;以及b) 响应于检测到超过每秒允许的总线锁的阈值数量,执行虚拟机到VMM的VM退出。
尽管已相对于有限数量的实施例描述本公开,但本领域技术人员将会从其理解许多修改和变化。所附权利要求旨在涵盖落在本公开的真正精神和范围内的所有这种修改和变化。
在这里的描述中,阐述了许多特定细节(诸如,特定类型的处理器和系统结构的示例、特定硬件结构、特定架构和微架构细节、特定寄存器结构、特定指令类型、特定系统部件、特定测量值/高度、特定处理器流水线级和操作等)以便提供对本公开的彻底的理解。然而,对于本领域技术人员而言将会清楚的是,这些特定细节不需要被采用以实施本公开。在其它实例中,公知部件或方法(诸如,特定和替代处理器架构、用于描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑结构、特定制造技术和材料、特定编译器实现方式、代码中的算法的特定表达、特定掉电和选通技术/逻辑和计算机系统的其它特定操作细节)未被详细地描述以便避免不必要地模糊本公开。
参照确定(诸如计算平台或微处理器中的)特定集成电路中基于扇区的高速缓存的高速缓存行中的数据的有效性,描述实施例。实施例也可适用于其它类型的集成电路和可编程逻辑设备。例如,公开的实施例不限于桌上型计算机系统或便携式计算机,诸如英特尔®超极本™(Intel® Ultrabooks™)计算机。并且还可被用在其它设备中,诸如手持式设备、平板计算机、其它薄笔记本、片上系统(SoC)设备和嵌入式应用。手持式设备的一些示例包括蜂窝电话、互联网协议设备、数字照相机、个人数字助手(PDA)和手持式PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或能够执行以下教导的功能和操作的任何其它系统。已描述该系统能够是任何种类的计算机或嵌入式系统。公开的实施例可尤其被用于低端设备,比如可穿戴设备(例如,手表)、电子植入物、传感和控制基础设施设备、控制器、监控和数据采集(SCADA)系统等。此外,这里描述的装置、方法和系统不限于物理计算设备,而是还可涉及用于能量节约和效率的软件优化。在以下的描述中将会容易地变得清楚的是,这里描述的方法、装置和系统的实施例(无论是参照硬件、固件、软件还是参照其组合)对于与性能考虑平衡的“绿色技术”未来而言至关重要。
虽然参照处理器描述这里的实施例,但其它实施例适用于其它类型的集成电路和逻辑设备。本公开的实施例的类似技术和教导能够被应用于能够受益于更高的流水线吞吐量和提高的性能的其它类型的电路或半导体设备。本公开的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本公开不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且能够被应用于在其中执行数据的操纵或管理的任何处理器和机器。另外,这里的描述提供示例,并且附图为了说明的目的而示出各种示例。然而,这些示例不应该在限制性意义上被解释,因为它们仅仅意图提供本公开的实施例的示例,而非提供本公开的实施例的所有可能的实现方式的穷举列表。
虽然以上的示例描述在执行单元和逻辑电路的情境下的指令处理和分发,但能够通过存储在机器可读有形介质上的数据或指令来完成本公开的其它实施例,当由机器执行所述数据或指令时,所述数据或指令使机器执行根据本公开的至少一个实施例的功能。在一个实施例中,与本公开的实施例关联的功能被体现于机器可执行指令。所述指令能够被用于使被利用所述指令编程的通用或专用处理器执行本公开的步骤。本公开的实施例可被提供作为计算机程序产品或软件,所述计算机程序产品或软件可包括已在其上存储有指令的机器或计算机可读介质,所述指令可被用于对计算机(或其它电子设备)进行编程以执行根据本公开的实施例的一个或多个操作。替代地,本公开的实施例的操作可由包含用于执行所述操作的固定功能逻辑的特定硬件部件或由已编程计算机部件和固定功能硬件部件的任何组合执行。
用于对逻辑进行编程以执行本公开的实施例的指令能够被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存或其它存储装置)内。另外,能够经网络或通过其它计算机可读介质分发所述指令。因此,机器可读介质可包括用于存储或传送具有可由机器(例如,计算机)读取的形式的信息的任何机构,但不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光学卡、闪存或者在经电、光学、听觉或其它形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上的信息的传输中使用的有形机器可读存储装置。因此,计算机可读介质包括适合存储或传送具有可由机器(例如,计算机)读取的形式的电子指令或信息的任何类型的有形机器可读介质。
设计可经过从创建到仿真到加工的各种阶段。代表设计的数据可按照许多方式代表所述设计。首先,可使用硬件描述语言或另一功能描述语言表示硬件,这在仿真中有用。另外,可在设计过程的一些阶段生产具有逻辑和/或晶体管门的电路级模型。另外,在某个阶段,多数设计达到代表硬件模型中的各种设备的物理放置的数据的水平。在使用传统半导体加工技术的情况下,代表硬件模型的数据可以是指定用于生产集成电路的掩模的不同掩模层上的各种特征的存在或不存在的数据。在所述设计的任何表示中,所述数据可被存储在任何形式的机器可读介质中。存储器或者磁存储装置或光学存储装置(诸如,盘)可以是用于存储经为了传送这种信息而调制或以其它方式产生的光波或电波传送的信息的机器可读介质。当传送指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重新传送而言,制作新的拷贝。因此,通信提供商或网络提供商可在有形机器可读介质上至少暂时地存储体现本公开的实施例的技术的物品,诸如编码到载波中的信息。
这里所使用的模块指代硬件、软件和/或固件的任何组合。作为示例,模块包括与非暂态介质关联的硬件(诸如,微控制器),所述非暂态介质用于存储适于由微控制器执行的代码。因此,在一个实施例中,对模块的提及指代硬件,所述硬件被特别配置为识别和/或执行将要被保存在非暂态介质上的代码。另外,在另一实施例中,模块的使用指代包括代码的非暂态介质,所述代码特别适于由微控制器执行以执行预定操作。并且如能够推断的,在另一实施例中,术语模块(在这个示例中)可指代微控制器和非暂态介质的组合。通常示出为分开的模块边界经常变化,并且可能交叠。例如,第一和第二模块可共享硬件、软件、固件或者其组合,同时可能保留一些独立硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器的硬件或者诸如可编程逻辑设备的其它硬件。
在一个实施例中,短语“被配置为”的使用是指布置、组装、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定或确定的任务。在这个示例中,如果未操作的设备或其元件被设计、耦合和/或互连以执行指定的任务,则它仍然“被配置为”执行所述指定的任务。作为纯粹说明性示例,逻辑门可在操作期间提供0或1。但“被配置为”向时钟提供使能信号的逻辑门并不包括可提供1或0的每个可能的逻辑门。替代地,逻辑门是以某种方式耦合的逻辑门:在操作期间,1或0输出将会使能时钟。再一次需要注意的是,术语“被配置为”的使用不需要操作,而是替代地关注装置、硬件和/或元件的潜在状态,其中在潜在状态下,当所述装置、硬件和/或元件操作时,所述装置、硬件和/或元件被设计为执行特定任务。
另外,在一个实施例中,短语"用于"“能够/用于”和或“可操作于”的使用指代以这种方式设计的某种装置、逻辑、硬件和/或元件:能够以指定方式启用所述装置、逻辑、硬件和/或元件的使用。如上所述需要注意的是,在一个实施例中,“用于”,“能够用于”或“可操作用于”的使用指代装置、逻辑、硬件和/或元件的潜在状态,其中所述装置、逻辑、硬件和/或元件未操作,但被以这种方式设计,即能够以指定方式启用设备的使用。
如这里所使用的,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。逻辑电平或一个逻辑值或多个逻辑值的使用也经常被称为1和0,其仅代表二进制逻辑状态。例如,1指代高逻辑电平,并且0指代低逻辑电平。在一个实施例中,存储基元(诸如,晶体管或闪存基元)可以能够保存单个逻辑值或多个逻辑值。然而,计算机系统中的值的其它表示已被使用。例如,十进制数十还可被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
此外,状态可由值或值的部分表示。作为示例,第一值(诸如,逻辑一)可代表缺省或初始状态,而第二值(诸如,逻辑零)可代表非缺省状态。另外,在一个实施例中,术语重置和设置分别指代缺省和更新值或状态。例如,缺省值可包括高逻辑值(即,重置),而更新值可包括低逻辑值(即,设置)。需要注意的是,值的任何组合可被用于代表任何数量的状态。
可经可由处理元件执行的存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码实现以上阐述的方法、硬件、软件、固件或代码的实施例。非暂态机器可访问/可读介质包括提供(即,存储和/或传送)具有可由机器(诸如,计算机或电子系统)读取的形式的信息的任何机构。例如,非暂态机器可访问介质包括:随机存取存储器(RAM)(诸如,静态RAM (SRAM)或动态RAM (DRAM));ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保存从暂态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其它形式的存储设备;等等,所述暂态信号区别于从其接收信息的非暂态介质。
用于对逻辑进行编程以执行本公开的实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存或其它存储装置)内。另外,能够经网络或通过其它计算机可读介质分发所述指令。因此,机器可读介质可包括用于存储或传送具有可由机器(例如,计算机)读取的形式的信息的任何机构,但不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光学卡、闪存或者在经电、光学、听觉或其它形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上的信息的传输中使用的有形机器可读存储装置。因此,计算机可读介质包括适合存储或传送具有可由机器(例如,计算机)读取的形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书中对“一个实施例”或“实施例”的提及意味着:结合该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在贯穿本说明书的各种地方的出现未必全部都指代相同实施例。另外,所述特定特征、结构或特性可在一个或多个实施例中以任何合适的方式组合。
在前面的说明书中,已参照特定示例性实施例给出详细描述。然而,将会清楚的是,对其的各种修改和改变可在不脱离如所附权利要求中所阐述的本公开的更广泛的精神和范围的情况下作出。因此,要在说明性意义而非限制性意义上看待说明书和附图。另外,实施例和其它示例性语言的前述使用未必指代相同实施例或相同示例,而是可指代不同和有区别的实施例以及潜在地可指代相同实施例。
按照对计算机存储器内的数据位的操作的算法和符号表示提供详细描述的一些部分。这些算法描述和表示是由数据处理领域技术人员用于最有效地将他们的工作的实质传达给本领域其他技术人员的方式。算法在这里通常被设想为导致期望结果的前后一致的一系列操作。所述操作是需要物理量的物理操纵的那些操作。通常,但并非必然,这些量采取能够被存储、传送、组合、比较和以其它方式操纵的电或磁信号的形式。有时,主要由于常用的原因,已证明将这些信号称为位、值、元素、码元、字符、项、数字等是很方便的。这里描述的块能够是硬件、软件、固件或者其组合。
然而,应该记住的是,所有的这些和类似术语要与适当的物理量关联并且仅是应用于这些量的方便的标签。除非另外具体地指出,否则从以上的讨论清楚可知,应该理解,贯穿本描述,使用诸如“定义”、“接收”、“确定”、“发出”、“链接”、“关联”、“获得”、“认证”、“禁止”、“执行”、“请求”、“通信”等的术语的讨论指代计算系统或类似电子计算设备的动作和过程,所述动作和过程操纵表示为计算系统的寄存器和存储器内的物理(例如,电子)量的数据并且将所述数据变换成类似地表示为计算系统存储器或寄存器或其它这种信息存储、传送或显示设备内的物理量的其它数据。
词语“示例”或“示例性”在这里被使用来表示用作示例、实例或说明。这里描述为“示例”或“示例性”的任何方面或设计未必被解释为优选或优于其它方面或设计。相反地,词语“示例”或“示例性”的使用旨在以具体方式介绍概念。如本申请中所使用的,术语“或”旨在表示包括性的“或”而非排他性的“或”。也就是说,除非另外指出或从上下文清楚可知,否则“X包括A或B”旨在表示任何自然包括性排列。也就是说,如果X包括A;X包括B;或X包括A和B二者,则在任何前面的实例下满足“X包括A或B”。另外,除非另外指出或从上下文清楚可知指示单数形式,否则如本申请和所附权利要求中所使用的冠词“一”和“一个”应该通常被解释为表示“一个或多个”。此外,术语“实施例”或“一个实施例”或“实现方式”或“一个实现方式”在各处的使用并不意图表示相同实施例或实现方式,除非如此描述了。此外,如这里所使用的,术语“第一”、“第二”、“第三”、“第四”等意味着用作用于区分不同元件的标签,并且可能未必具有根据它们的数字指定的序数含义。

Claims (23)

1.一种处理器,包括:
寄存器,用于存储总线锁禁用位;和
执行单元,用于执行指令,其中所述执行单元:
接收包括存储器访问请求的指令;
确定存储器访问请求需要获取总线锁;以及
响应于确定所述存储器访问请求需要获取总线锁并且响应于检测到总线锁禁用位指示总线锁被禁用,向操作系统通知故障;以及
响应于确定存储器访问请求源自虚拟机VM并且总线锁退出位在VM的虚拟机控制结构VMCS内被启用,替代于获取总线锁,执行虚拟机到虚拟机监视器VMM的VM退出。
2.如权利要求1所述的处理器,其中所述故障是一般保护故障。
3.如权利要求1所述的处理器,其中所述寄存器是模型专用寄存器。
4.如权利要求1所述的处理器,其中所述执行单元还响应于检测到总线锁禁用位被启用而结束指令的执行。
5.如权利要求1所述的处理器,其中所述执行单元还响应于故障而执行操作系统的故障处理器以:
禁用出自其它代理的存储器访问;以及
在不需要总线锁的情况下对指令的执行进行仿真。
6.如权利要求1所述的处理器,其中所述存储器访问请求包括针对不可高速缓存的存储器的上锁操作。
7.如权利要求1所述的处理器,其中所述存储器访问请求包括跨越多个高速缓存行的上锁操作。
8.如权利要求1所述的处理器,其中所述存储器访问请求包括来自不可高速缓存的存储器中的页表的页查询。
9.一种片上系统(SoC),包括:
存储器,用于存储虚拟机控制结构VMCS;和
核,耦合到存储器,其中所述核执行虚拟机VM的指令;并且其中所述核执行虚拟机监视器VMM以控制进入到虚拟机中以及从虚拟机退出;
其中所述核还:
执行VM扩展执行控制指令以参照需要获取总线锁的虚拟机的执行检测条件;以及
响应于确定所述条件需要获取总线锁并且响应于另外检测到总线锁退出位被VMCS的字段启用,替代于获取总线锁,执行至VMM的VM退出。
10.如权利要求9所述的SoC,其中所述条件包括需要获取总线锁的虚拟机的存储器访问请求。
11.如权利要求9所述的SoC,其中所述核还在VMCS中存储总线锁的获取作为VM退出的原因。
12.如权利要求9所述的SoC,其中相对于向虚拟机的操作系统通知故障或异常,优先考虑VM退出。
13.如权利要求9所述的SoC,其中所述核还:
从VMCS的总线锁策略位检索总线锁退出策略,所述总线锁退出策略定义允许的总线锁的阈值数量;以及
响应于接收到对超过允许的总线锁的阈值数量的总线锁的请求,执行虚拟机到VMM的VM退出。
14.一种方法,包括:
由处理器的执行单元接收产生存储器访问请求的指令;
由执行单元确定存储器访问请求需要获取总线锁;以及
响应于确定所述存储器访问请求需要获取总线锁并且响应于确定在寄存器内启用总线锁禁用位,由执行单元向操作系统传送故障;以及
响应于确定存储器访问请求源自虚拟机VM并且总线锁退出位在VM的虚拟机控制结构VMCS内被启用,替代于获取总线锁,执行虚拟机到虚拟机监视器VMM的VM退出。
15.如权利要求14所述的方法,其中所述故障是一般保护故障。
16.如权利要求14所述的方法,还包括:响应于检测到总线锁禁用位被启用,由执行单元结束指令的执行。
17.如权利要求14所述的方法,还包括:响应于所述故障,执行故障处理器以:
禁用出自其它代理的存储器访问;以及
在不需要总线锁的情况下对指令的执行进行仿真。
18.如权利要求14所述的方法,还包括:在VMCS中存储总线锁的获取作为VM退出的原因。
19.如权利要求14所述的方法,其中相对于执行VM退出,优先考虑向虚拟机的操作系统通知分段故障或分页相关故障。
20.如权利要求14所述的方法,还包括:
从VMM接收总线锁退出策略,所述总线锁退出策略定义每秒允许的总线锁的阈值数量;以及
响应于检测到超过每秒允许的总线锁的阈值数量,执行虚拟机到VMM的VM退出。
21.一种设备,包括用于执行如权利要求14-20中任何一项所述的方法的装置。
22.一种设备,包括被配置为执行如权利要求14-20中任何一项所述的方法的处理器。
23.一种非临时计算机可读介质,其上存储有指令,所述指令在被处理器执行时,使得所述处理器执行如权利要求14-20中任何一项所述的方法。
CN201780053380.7A 2016-08-30 2017-07-14 检测总线上锁条件并且避免总线锁 Active CN109643293B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/251425 2016-08-30
US15/251,425 US10402218B2 (en) 2016-08-30 2016-08-30 Detecting bus locking conditions and avoiding bus locks
PCT/US2017/042256 WO2018044400A1 (en) 2016-08-30 2017-07-14 Detecting bus locking conditions and avoiding bus locks

Publications (2)

Publication Number Publication Date
CN109643293A CN109643293A (zh) 2019-04-16
CN109643293B true CN109643293B (zh) 2024-03-01

Family

ID=61240714

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780053380.7A Active CN109643293B (zh) 2016-08-30 2017-07-14 检测总线上锁条件并且避免总线锁

Country Status (5)

Country Link
US (2) US10402218B2 (zh)
EP (1) EP3507702A4 (zh)
CN (1) CN109643293B (zh)
DE (1) DE202017007430U1 (zh)
WO (1) WO2018044400A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109240614B (zh) * 2018-08-30 2021-09-17 郑州云海信息技术有限公司 一种数据存储方法、装置及相关设备
US11669335B2 (en) * 2019-03-28 2023-06-06 Intel Corporation Secure arbitration mode to build and operate within trust domain extensions
US11301309B2 (en) * 2019-09-27 2022-04-12 Intel Corporation Apparatuses, methods, and systems for processor non-write-back capabilities
WO2022120790A1 (en) * 2020-12-11 2022-06-16 Intel Corporation Methods and apparatus to mitigate locks in real-time computing environments
CN115525596A (zh) * 2021-06-25 2022-12-27 许继电气股份有限公司 多主交换式高速互联背板总线及其控制方法、处理系统
CN114691592A (zh) * 2022-02-21 2022-07-01 阿里巴巴(中国)有限公司 处理器、控制方法、设备及介质
US11907722B2 (en) * 2022-04-20 2024-02-20 Arm Limited Methods and apparatus for storing prefetch metadata

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1151743A (en) * 1980-03-13 1983-08-09 Steven C. Andersen Serial data bus communication system
US4409656A (en) * 1980-03-13 1983-10-11 Her Majesty The Queen, In Right Of Canada As Represented By The Minister Of National Defense Serial data bus communication system
US6098134A (en) * 1996-12-31 2000-08-01 Compaq Computer Corp. Lock protocol for PCI bus using an additional "superlock" signal on the system bus
US6247084B1 (en) * 1997-10-08 2001-06-12 Lsi Logic Corporation Integrated circuit with unified memory system and dual bus architecture
US6430657B1 (en) * 1998-10-12 2002-08-06 Institute For The Development Of Emerging Architecture L.L.C. Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
US6587964B1 (en) * 2000-02-18 2003-07-01 Hewlett-Packard Development Company, L.P. Transparent software emulation as an alternative to hardware bus lock
CN1936845A (zh) * 2005-09-19 2007-03-28 联想(北京)有限公司 一种虚拟机系统输入/输出设备动态分配的方法及其设备
EP1902403A1 (en) * 2005-07-01 2008-03-26 Nxp B.V. Integrated circuit and method of securing access to an on-chip memory.

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02146669A (ja) * 1988-11-29 1990-06-05 Nec Corp 計算機システムの共用メモリ管理方式
EP0525308A1 (en) * 1991-07-31 1993-02-03 International Business Machines Corporation Memory map for processor cache macro
US6323755B1 (en) * 1998-08-19 2001-11-27 International Business Machines Corporation Dynamic bus locking in a cross bar switch
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
EP1172732A4 (en) 1999-02-24 2009-08-19 Hitachi Ltd COMPUTER SYSTEM AND METHOD FOR MANAGING DISTURBANCES AFFECTING A COMPUTER SYSTEM
US20030126454A1 (en) * 2001-12-28 2003-07-03 Glew Andrew F. Authenticated code method and apparatus
US6950913B2 (en) * 2002-11-08 2005-09-27 Newisys, Inc. Methods and apparatus for multiple cluster locking
US7356735B2 (en) * 2004-03-30 2008-04-08 Intel Corporation Providing support for single stepping a virtual machine in a virtual machine environment
FR2881239B1 (fr) 2005-01-24 2007-03-23 Meiosys Soc Par Actions Simpli Procede de gestion d'acces a des ressources partagees dans un environnement multi-processeurs
US8291410B2 (en) * 2006-12-29 2012-10-16 Intel Corporation Controlling virtual machines based on activity state
US8561061B2 (en) * 2007-05-14 2013-10-15 Vmware, Inc. Adaptive dynamic selection and application of multiple virtualization techniques
US20120331265A1 (en) * 2011-06-24 2012-12-27 Mips Technologies, Inc. Apparatus and Method for Accelerated Hardware Page Table Walk
US9524263B2 (en) * 2012-06-29 2016-12-20 Intel Corporation Method and apparatus for bus lock assistance
WO2015030746A1 (en) * 2013-08-28 2015-03-05 Empire Technology Development, Llc Virtual machine exit analyzer
US9594592B2 (en) 2015-01-12 2017-03-14 International Business Machines Corporation Dynamic sharing of unused bandwidth capacity of virtualized input/output adapters

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1151743A (en) * 1980-03-13 1983-08-09 Steven C. Andersen Serial data bus communication system
US4409656A (en) * 1980-03-13 1983-10-11 Her Majesty The Queen, In Right Of Canada As Represented By The Minister Of National Defense Serial data bus communication system
US6098134A (en) * 1996-12-31 2000-08-01 Compaq Computer Corp. Lock protocol for PCI bus using an additional "superlock" signal on the system bus
US6247084B1 (en) * 1997-10-08 2001-06-12 Lsi Logic Corporation Integrated circuit with unified memory system and dual bus architecture
US6430657B1 (en) * 1998-10-12 2002-08-06 Institute For The Development Of Emerging Architecture L.L.C. Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
US6587964B1 (en) * 2000-02-18 2003-07-01 Hewlett-Packard Development Company, L.P. Transparent software emulation as an alternative to hardware bus lock
EP1902403A1 (en) * 2005-07-01 2008-03-26 Nxp B.V. Integrated circuit and method of securing access to an on-chip memory.
CN1936845A (zh) * 2005-09-19 2007-03-28 联想(北京)有限公司 一种虚拟机系统输入/输出设备动态分配的方法及其设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
C++中的原子操作及其使用;潘圆圆;李德华;;计算机与数字工程(第11期);全文 *
CRH3动车组塞拉门的安全可靠性;刘伟;《无线互联科技》;20150225(第04期);全文 *

Also Published As

Publication number Publication date
US11157303B2 (en) 2021-10-26
US20180060099A1 (en) 2018-03-01
EP3507702A4 (en) 2020-09-23
US10402218B2 (en) 2019-09-03
WO2018044400A1 (en) 2018-03-08
US20200050471A1 (en) 2020-02-13
EP3507702A1 (en) 2019-07-10
CN109643293A (zh) 2019-04-16
DE202017007430U1 (de) 2021-06-16

Similar Documents

Publication Publication Date Title
JP7501982B2 (ja) 信頼ドメインを用いた、仮想化されたシステムにおける分離の提供
CN108463826B (zh) 用于在环转变期间保护栈的处理器扩展
US9880932B2 (en) Instruction and logic for flush-on-fail operation
TWI697804B (zh) 安全區之平台遷移
US10152599B2 (en) Security mechanisms for extreme deep sleep state
CN109643293B (zh) 检测总线上锁条件并且避免总线锁
US9501668B2 (en) Secure video ouput path
US20150277949A1 (en) Securing shared interconnect for virtual machine
CN111353164A (zh) 用于信任域创建和摧毁的方法和装置
CN108334400B (zh) 为安全飞地管理存储器
US9971702B1 (en) Nested exception handling
US9759768B2 (en) Delayed authentication debug policy
US9569212B2 (en) Instruction and logic for a memory ordering buffer
US20200349010A1 (en) System and method for granular reset management without reboot
US10394595B2 (en) Method to manage guest address space trusted by virtual machine monitor
US11074204B2 (en) Arbiter based serialization of processor system management interrupt events
US10540178B2 (en) Eliminating redundant stores using a protection designator and a clear designator
CN111353157A (zh) 限制不受信任软件对加密密钥的使用
CN111355574A (zh) 信任域中的安全加密密钥管理
CN109690546B (zh) 支持对客户机飞地存储器页的超额订阅
US20200151364A1 (en) Migration of trusted security attributes to a security engine co-processor
CN110968394A (zh) 虚拟机与其监视器之间的页面属性的分割控制方法和系统
US9965280B2 (en) Instruction and logic for processor trace information for control flow integrity

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