首页> 中国专利> 保护共享的互连以用于虚拟机

保护共享的互连以用于虚拟机

摘要

本申请公开了保护共享的互连以用于虚拟机。一种处理系统包括互连和耦合到互连的执行多个虚拟机的处理核,每一虚拟机都通过相应的标识符来标识,并通过第一虚拟机的标识符来标记由第一虚拟机启动的访问互连的第一事务。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-07-02

    授权

    授权

  • 2015-11-04

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20150305

    实质审查的生效

  • 2015-09-30

    公开

    公开

说明书

技术领域

本发明的各实施例一般涉及处理系统,更具体而言,涉及保护执行虚 拟机的处理系统的共享的互连。

背景

处理系统可包括共享的互连,通过该共享的互连,处理单元(诸如中 央处理单元(CPU)和图形处理单元(GPU))、主控设备(在下文中, 被称为总线主控器)以及从属设备(在下文中,被称为总线受控器)可以 相互进行通信。总线受控器可包括外围设备和存储器。外围设备和存储器 可以通过互连与处理系统和总线主控器进行通信。处理单元可以执行可包 括一个或多个虚拟机的虚拟化系统,以提供进一步的资源共享。然而,共 享的互连可能使总线受控器暴露于来自隐秘的总线主控器的恶意攻击。进 一步,虚拟化系统会使总线受控器遭受来自隐秘的虚拟机的恶意攻击。

附图简述

通过下面给出的详细描述以及本发明的各实施例的各个附图,将可更 加完全地理解本发明。然而,附图不应该被理解为将本发明限制于特定实 施例,而只是为了说明和理解的目的。

图1示出了根据本发明的一实施例的处理系统。

图2A示出了根据本发明的一实施例的用于保护存储器的防火墙规则。

图2B示出了根据本发明的一实施例的用于保护外围设备的防火墙规 则。

图3A示出了根据本发明的一实施例的设置处理系统的操作。

图3B示出了根据本发明的一实施例的CPU事务和总线主控器事务的 访问控制。

图4是示出了根据本发明的一实施例的如图1所示的处理系统的方法 的流程图。

图5A是示出了其中可以使用本发明的一个实施例的处理器的微架构 的框图。

图5B是示出了根据本发明的至少一个实施例实现的有序流水线和寄 存器重命名级、无序发布/执行流水线的框图。

图6示出了根据本发明的一个实施例的处理器的微架构的框图。

图7是示出了其中可以使用本发明的实施例的系统的框图。

图8是示出了本发明的实施例可以在其中操作的系统的框图。

图9是示出了本发明的实施例可以在其中操作的系统的框图。

图10是根据本发明的一个实施例的芯片上系统(SoC)的框图。

图11是根据本发明的SoC设计的实施例的框图。

图12示出了计算机系统的一个实施例的框图。

具体实施方式

为通过共享的互连保护总线受控器免受恶意攻击,本发明的各实施例 包括处理系统,该处理系统将访问总线受控器的每一事务与标识执行该事 务所针对的虚拟机的标识符相关联。进一步,各实施例可以提供到互连的 一个或多个防火墙,以使用该虚拟机的标识符来验证打算访问该总线受控 器的事务。

虽然可以参考特定集成电路(诸如在计算平台或微处理器中)来描述下 列实施例,但其他实施例也适用于其他类型的集成电路和逻辑设备。可以 将此处所描述的各实施例的类似的技术和原理应用于其他类型的电路或半 导体器件。例如,所公开的各实施例不仅限于台式计算机系统或超极本 (UltrabooksTM)。也可以用于诸如手持式设备、平板、其他薄的笔记本、 芯芯片上系统(SOC)设备以及嵌入式应用之类的其他设备中。手持式设 备的某些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理 (PDA)以及手持式PC。嵌入式应用通常包括微控制器、数字信号处理器 (DSP)、芯芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、 广域网(WAN)交换机或能够执行下面教导的功能和操作的任何其他系统。

虽然将处理器参考来描述下列各实施例,但是,其他实施例也适用于 其他类型的集成电路和逻辑设备。可以将本发明的各实施例的类似的技术 和原理应用于可以得益于较高流水线吞吐量和改善的性能的其他类型的电 路或半导体器件。本发明的各实施例的原理适用于执行数据操纵的任何处 理器或机器。然而,本发明不仅限于执行512位、256位、128位、64位、 32位或16位数据操作的处理器或机器,并可以应用于其中执行对数据的操 纵或管理的任何处理器和机器。另外,下列描述提供了示例,为便于说明, 各个附图示出了各种示例。然而,这些示例不应该以限制的方式来解释, 因为它们只是提供本发明的各实施例的示例,而并非提供本发明的各实施 例的所有可能的实现的详细清单。

图1示出了根据本发明的一实施例的处理系统100。在一个实施例中, 处理设备100可以是可以在单一半导体封装内的单一管芯(同一衬底)上 实现的芯片上系统硬件电路。处理系统可包括中央处理单元(CPU)模块 102、总线主控器(#1到#N))106、总线受控器(#1到#M)108、存储器 设备110以及互连112。

CPU模块102还可以包括中央处理单元(CPU)(#1到#K)104,每 一CPU都可包括一个或多个处理核(未示出)。CPU 104和/或处理核可以 执行虚拟化系统114,以允许一个或多个操作系统的多个实例在被称为主机 处理设备(“主机”)的处理系统100上运行。如此,处理系统100可以是 主控虚拟化系统114的主机。虚拟化系统114可以在硬件中实现(也称为 硬件辅助的虚拟化)。CPU 104的指令集可以被扩展,以包括启动和退出 虚拟机的指令,以便虚拟化系统114可以以硬件辅助的方式来实现。在硬 件辅助的虚拟化中,被称为虚拟机管理器(“VMM”,也被称为系统管理程 序)118的软件模块可以被用来创建和管理一个或多个虚拟机116(也被称 为“访客机”)。VMM 118可以给每一虚拟机呈现访客操作系统,并管理访 客操作系统的执行。应用程序软件(也被称为“访客软件”)可以在虚拟机 116上执行。如此,通过经由虚拟化系统114来共享处理系统100的硬件资 源,应用程序软件的多个实例可以在虚拟机116上执行。

VMM 118可以通过控制处理系统100的硬件组件来直接在主机的硬件 上运行,并管理虚拟机116的访客操作系统。这通常被称为类型-I VMM。 可另选地,VMM 118可以在处理系统100的操作系统(也被称为主机操作 系统)内运行。这通常被称为类型-II VMM。在任一类型的VMM下,在 虚拟机上执行的访客操作系统和访客应用程序软件的指令可以被转换为 CPU 104的指令并由这些CPU执行。

CPU 104中的每一个都可包括执行指令的处理核(未示出)和本地存 储指令和与指令相关联的数据用于快速存储和检索的缓存存储器(“缓 存”)。通常,每一CPU都可以具有不同级别的缓存。通常,每一处理核 都可以具有其自己的L1和L2缓存,虽然L1缓存比L2缓存较小并且更快, 多个核可以共享比L1或L2缓存较大并且较慢的L3缓存。CPU 104可以在 VMM或主机操作系统的控制下代表虚拟机来执行操作。由CPU 104执行 的将数据和指令移进和移出CPU模块102到互连112、然后到外围设备108 或到存储器110的操作被称为CPU事务。由L1/L2缓存来缓存的CPU事 务被称为被缓存的事务。例如,如果缓存的事务将访问外围设备108和/或 存储器110,则它们也可以被称为缓存的CPU访问。相比之下,不由L1/L2 缓存来缓存的CPU事务被称为未被缓存的事务。

互连112可以是总线系统,通过该总线系统,不同的硬件组件(诸如 处理单元104、总线主控器106、外围设备108、存储器110)相互进行通 信。通信的内容可以包括指向存储器110和外围设备108的CPU事务。CPU 事务可包括指令和与要为虚拟机执行的指令相关联的数据。除提供链接这 些硬件组件的共享的通信织状结构之外,互连112也可以包括控制器120 以控制共享的通信链路上的通信量。例如,响应于接收到指向访问存储器 110的CPU事务,控制器120可以解析CPU事务以标识存储器的地址范围, 并通过存储器控制器128写入或该读取地址范围处的内容。进一步,CPU 也可以通过外围控制器(未示出)将事务传输到外围设备108。在一个实施 例中,每一外围设备都可包括控制器,而在另一个实施例中,多个外围设 备可以共享控制器。

总线主控器106可包括被利用可执行代码编程以将通信流引向互连 112,然后到外围设备108和/或存储器110的控制器和微处理器。在一种实 现中,总线主控器可以是代表CPU来访问存储器的直接存储器访问(DMA) 控制器。如此,总线主控器106可以在CPU的指示下获取对互连112的访 问权限,还生成总线主控器事务,即,将指令和数据移进和移出总线主控 器的那些操作(在下文中,被称为BM事务)。BM事务可以通过旁路CPU 来执行。在虚拟化系统的情况下,CPU(或处理核)可以将虚拟机的某些 CPU事务分摊到总线主控器,以便总线主控器可以通过互连112将指定到 虚拟机的BM事务引向外围设备108和/或存储器110。进一步,互连112 的控制器120可以解析BM事务以访问(写入或读取)合适的外围设备108 上的和/或存储器110的存储器范围的内容。

互连112可以接收CPU事务和BM事务,而不知道哪一个虚拟机产生 特定事务。由于没有这些事务的所有者的上下文意识,因此在CPU 104上 运行的任何虚拟机都可以访问存储器110的任何部分和任何外围设备108。 进一步,任何总线主控器106都可以访问存储器110的任何部分和任何外 围设备108。如此,传输事务而不会标识这些事务的所有权的共享的互连 112和虚拟化系统114使存储器110和外围设备108易受恶意攻击。

本发明的各实施例可包括处理系统,该处理系统包括用于将事务(CPU 或BM事务)与为其执行事务的虚拟机的标识符相关联的处理逻辑。在一 个实施例中,标识符是在创建虚拟机之前自动地生成的并存储在CPU的内 部寄存器中的虚拟机标识(VMID)。每一VMID都唯一地标识虚拟机。可 另选地,标识符可以是可以指派给虚拟机以标识虚拟机的任何字母-数字 字符串。因此,与虚拟机的标识符相关联的事务可以被跟踪到虚拟机。为 简单化和简洁,虚拟机的标识符和VMID可互换地使用,而不会将虚拟机 的标识符限制到特定类型的标识符,除标识符唯一地标识虚拟机之外。进 一步,各实施例可以在互连112中提供处理逻辑,以使用虚拟机的标识符 和/或向虚拟机分配的存储器范围来验证接收到的事务。如此,可以防止外 围设备108和存储器110受到不需要的访问或恶意攻击,尽管事务仍通过 共享的互连112并从虚拟化系统114传输。

图1更详细地示出了根据本发明的各实施例的处理系统100。参考图1, 可以利用标识符(例如,VMID)来标识虚拟机116中的每一个。标识符可 以是能够唯一地标识虚拟机的位序列。在一个实施例中,标识符可以是当 虚拟机被通电或复位时指派给虚拟机的通用唯一标识符(UUID)。在一个 实施例中,标识符可以是N位整数(其中,N可以是任何长度),并可以 存储在执行虚拟机的CPU的内部寄存器中。可以通过VMM 118的系统实 用程序来访问标识符。

在一个实施例中,CPU 104中的每一个都可包括用于确定从其中产生 了操作的虚拟机的标识符的处理逻辑122。标识符可以由VMM 118提供(当 它从虚拟机向CPU模块102传输操作时)。在一个实施例中,可以以硬件 辅助的方式使用虚拟化技术来实现虚拟化,该虚拟化技术可以具有额外指 令集(例如,x86处理器的虚拟机扩展或VMX)以创建VMM和虚拟机。 例如,使用VMX作为示例,CPU可以通过执行VMM开始命令(例如, VMXON)以在根操作中启动VMM 118,进入虚拟模式。在根操作下,VMM  118可以与为根操作预留的标识符相关联,例如,VMID=0。在根操作下, VMM 118可以使用根标识符来设置硬件组件,如下面几节所描述的。随后, 在虚拟模式下,VMM 118可以使用虚拟机进入命令(例如,VM_ENTRY) 来创建虚拟机。在创建虚拟机时,虚拟机上下文切换行为可以跟随。例如, 可以创建标识虚拟机的VMID,并将其存储在CPU的内部寄存器中。虚拟 机在非根操作下操作。由虚拟机产生的每一随后的事务都可以由处理逻辑 122用VMID进行标记。然而,当虚拟机退出(例如,使用VM_EXIT命令) 时,存储在内部寄存器中的标识符以及VM上下文可以被移除,在虚拟机 退出时,VMM的根操作模式可以返回。

由虚拟机所请求的操作可包括CPU事务通过互连112访问存储器110 或外围设备108。如此,对于由所进入的虚拟机对共享的互连112作出的每 一个事务,处理逻辑122可以读取存储VMID的内部寄存器,并用标识符 来标记事务。如此,CPU事务与从其中生成CPU事务的虚拟机相关联。

在一个实施例中,CPU可以在给定时间将每一总线主控器106与一个 虚拟机相关联。可以使CPU将相关联的虚拟机的VMID存储到总线主控器 106的寄存器128中。CPU可以执行VMM 118以在虚拟机启动时将VMID 指派到总线主控器。在一个实施例中,与总线主控器相关联的虚拟机可以 在虚拟机系统114的运行时改变。对应于相关联的虚拟机的改变,CPU可 以相应地更新存储在寄存器128中的标识符,以包括当前相关联的虚拟机 的VMID。如此,当总线主控器向总线受控器(外围设备或存储器)发出 BM事务时,总线主控器的控制器可以首先用存储在寄存器128中的VMID 来标记事务。如此,BM事务与为其执行BM事务的虚拟机的VMID相关 联。

在一个实施例中,在创建时,每一虚拟机可以由VMM 118指派使用存 储器的特定部分。例如,VMM 118可以指定虚拟机访问存储器的一个地址 范围,使得不同的虚拟机可以访问存储器的不同的地址范围。在一个实施 例中,CPU 104的处理逻辑122也可以利用指向共享的互连112的用于访 问存储器110的每一CPU事务来标记虚拟机的存储器地址范围(除虚拟机 的VMID之外)。类似地,总线主控器也可以利用指向共享的互连112的 用于访问存储器110的每一BM事务来标记虚拟机的存储器地址范围(除 虚拟机的标识符之外)。如此,可以进一步利用存储器地址范围来标识访 问存储器110的事务。

在一个实施例中,互连112可包括一个或多个防火墙来检查穿过的事 务。在一个实施例中,互连可包括存储器防火墙124以控制指向互连112 随后指向存储器110的那些事务(存储器可以是RAM或块存储器,诸如嵌 入式多媒体控制器(eMMC))。存储器防火墙124可包括互连112的控 制器120和用于控制对存储器110的访问的基于规则的策略。控制器120 可以实现一个或多个规则以判断是否可以根据存储器防火墙124的一个或 多个规则来执行接收到的事务(CPU事务或BM事务)。在一个实施例中, 一个或多个规则可包括可允许的一个或多个标识符和它们的对应的存储器 地址范围。图2A示出了根据本发明的一实施例的用于保护互连112的示例 规则的表200。表200可以存储在可由控制器120访问的寄存器中。参考图 2A,表200的每一行都可以表示可以允许事务访问存储器110的一部分的 一个规则。如图2A所示,每一行都可包括第一部分(VMID)202以指出 允许的虚拟机的标识符,而第二204和第三206部分用于指出地址范围的 开始和结束地址。响应于接收到事务(从CPU 104或从总线主控器106), 控制器120可以从事务接收相关联的虚拟机的标识符和地址范围。随后, 控制器120可以将接收到的标识符和地址范围与允许的虚拟机和对应的地 址范围进行比较。如果它们满足规则中的一个(诸如区域0-2),则存储器 防火墙124可以允许事务的执行以由通过VMID所标识的虚拟机来访问该 存储器地址范围。然而,如果指向互连112的事务不满足表200中的规则 中的任何一个,则可以由存储器防火墙124拒绝访问存储器110的事务。 例如,防火墙124可以允许包括虚拟机#1的标识符和0x1000–0x1FFF内的 对应的存储器地址范围的事务的执行。然而,可以拒绝虚拟机#3的事务, 因为该事务不满足任何规则。如此,可以由防火墙124基于事务中的上下 文内容来阻止未经授权的访问(或恶意攻击)。

在一个实施例中,互连也可以包括外围设备防火墙126以控制指向这 些外围设备108的那些事务访问。外围设备防火墙126可包括控制器126 和用于控制对外围设备的访问的基于规则的策略。控制器120可以将访问 策略实现为一个或多个规则,以判断是否可以根据外围设备防火墙126的 一个或多个规则来执行接收到的事务(CPU事务或BM事务)。在一个实 施例中,外围设备防火墙126的一个或多个规则可包括虚拟机的一个或多 个VMID。在一个实施例中,外围设备防火墙126可以是可以检测允许的 虚拟机的标识符的地址解码电路逻辑。

图2B示出了根据本发明的一实施例的用于保护外围设备的防火墙规 则的表208。表208可以存储在可由控制器120访问的寄存器中。如图2B 所示,表202可包括虚拟机210的标识符的列表以及它们的对应的对外围 机器的访问权限212。如此,控制器120可以接收事务,并将来自接收到的 事务的虚拟机的VMID与存储在表208中的访问权限进行比较。如果所标 识的虚拟机具有访问权限,则外围设备防火墙126可以允许事务在外围设 备上执行。然而,如果外围设备防火墙126判断控制器没有访问权限,则 外围设备防火墙126可以拒绝事务访问总线受控器。例如,来自虚拟机#1 的事务将被拒绝,而来自虚拟机#2的事务将被允许访问外围设备。如此, 外围设备也可以被保护以免受来自未经授权的虚拟机或总线主控器的恶意 攻击。在一个实施例中,存储器防火墙124和外围设备防火墙126是两个 单独的防火墙。在另一个实施例中,存储器防火墙124和外围设备防火墙 126可以被实现为控制对存储器110和外围设备108的访问的一个防火墙。

在一个实施例中,防火墙124、126可包括根(超级用户)访问标识符, 该根访问标识符允许带有该根访问标识符的事务配置存储器防火墙124和 外围设备防火墙126。根访问可以有助于在总线主控器中设置寄存器128(寄 存器128存储与总线主控器相关联的虚拟机的VMID)、以及在处理系统 100启动时或在运行时在进入虚拟机时设置存储器防火墙124和外围设备 防火墙126。根访问也可以对于调试硬件是有用的。在一个实施例中,可以 利用标识符“0”来标识根访问。在一个实施例中,可以给VMM 118指派根 访问标识符,以便VMM可以在创建虚拟机时或在虚拟机退出时,在总线 主控器106处设置虚拟机的标识符,并在防火墙124、126中设置访问策略。 例如,VMM 118可以使用根访问来向被指派到带有虚拟机的VMID的虚拟 机的总线主控器的寄存器128写入。VMM 118也可以使用根访问来更新防 火墙124、126的规则,以包括虚拟机的VMID以及用于存储器防火墙124 的存储器地址范围。如此,如图2A-2B所示的防火墙124、126规则包括 VMM 118的根访问权限。进一步,根访问也可以被给予调试工具,以便它 可以调试硬件错误。

带有对总线主控器106的根访问的VMM 118以及防火墙124、126可 以在处理系统100复位时配置总线主控器的寄存器128以及防火墙124、126 的基于规则的策略。图3A示出了根据本发明的一实施例的VMM 118可以 在处理系统100的复位时执行的用于保护共享的互连112和总线受控器防 止未经授权的访问的操作。参考图3A,当处理系统100被复位时(例如, 在通电时),处理系统100的CPU 104可以首先启动VMM 118。在开始时, VMM 118可以执行可包括允许虚拟机扩展(VMX)操作的指令(诸如 VMXON指令)的起始码。起始码(诸如VMXON指令)可以将一个或多 个CPU 104置于根访问的模式下(例如,VMX_ROOT)。

利用根访问,VMM 118可以具有对互连112、总线主控器106的完全 访问权,以设置每一总线主控器106与一个虚拟机、以及存储器防火墙124 和外围设备防火墙126相关联。例如,如图3A所示,VMM 118可以执行 虚拟机启动命令,以创建一个或多个虚拟机,每一虚拟机都与相应的VMID 相关联。随后,在302,VMM 118可以设置总线主控器106。例如,VMM  118可以将一个虚拟机的VMID写入到总线主控器(例如,总线主控器#1) 的内部寄存器,以将总线主控器(BM#1)与虚拟机相关联。

在304,VMM 118可以为互连112中的存储器防火墙124设置(并更 新)基于规则的策略,以控制对存储器110的访问。例如,存储器110可 以被分区为可以被虚拟机访问的不同的范围(例如,MR#1-#3)。VMM 118 可以传输并将一个或多个规则输入到存储器防火墙124的规则表(诸如规 则表200)。每一规则都可包括具有访问存储器110的权限的虚拟机的VMID 以及这些虚拟机的对应的地址范围。存储器防火墙124可以被用来控制由 事务(PU事务或BM事务)对存储器110的区域的访问。例如,包括虚拟 机的允许的标识符的并在存储器110的对应的地址范围内的事务可以被执 行以访问存储器地址范围。然而,不包括允许的标识符或不在对应的存储 器地址范围内的事务可以被拒绝。

在306,VMM 118也可以设置(并更新)外围设备108的外围设备防 火墙126的基于规则的策略,以控制对外围设备108的访问。例如,VMM  118可以传输并将一个或多个规则输入到外围设备防火墙126的规则表(诸 如规则表208)。每一外围设备都可以具有相应的规则表,每一规则都可包 括具有访问外围设备的权限的虚拟机的VMID。外围设备防火墙126可以 被用来控制由事务(CPU事务或BM事务)对外围设备的访问。例如,包 括虚拟机的允许的标识符的事务可以被执行以访问外围设备。然而,不包 括允许的标识符的事务可以被拒绝。

一旦VMM 118建立存储器防火墙124、外围设备防火墙126、以及总 线主控器106的寄存器128,可以根据与防火墙124、126中的CPU/BM事 务相关联的VMID,检查并控制对存储器110和外围设备108的CPU事务 和BM事务。还可以根据与CPU/BM事务的虚拟机的标识符相关联的存储 器地址范围,进一步检查和控制通过互连112对存储器110的CPU/BM事 务。

图3B示出了根据本发明的一实施例的CPU/BM事务的访问控制。虚 拟机116可以执行可能试图访问存储器110和/或访问外围设备108的CPU 事务。进一步,总线主控器(诸如与虚拟机#1相关联的总线主控器106) 也可以执行可能试图访问存储器110和/或访问外围设备108的BM事务。 参考图3B,例如,虚拟机#1可以执行试图访问互连112以便访问存储器 110的地址范围的CPU事务310A–310C。事务310A可包括虚拟机#1的标 识符(VMID1)和与标识符(VMID1)相关联的存储器地址范围(MR1)。 响应于接收到事务310A的请求,互连中的存储器防火墙124可以将标识符 (VMID1)和存储器地址范围(MR1)与存储器防火墙124的规则进行比 较,以判断是否可以执行用于访问存储器110的地址范围的事务310A。如 果它可以,则存储器防火墙124可以允许事务310A访问存储器地址范围 (MR1)。如果它不能,则防火墙124可以拒绝访问存储器110的事务310A。 类似地,可以分别用虚拟机#2(VMID2)和存储器地址范围(MR2,MR3) 对事务310B–310C进行标记。类似地,响应于接收到事务310B、310C的 请求,互连中的存储器防火墙124可将标识符(VMD2)和存储器地址范围 (MR2,MR3)与防火墙124的规则进行比较,以判断事务310B、310C 是否可以执行以访问存储器地址范围(MR2,MR3)。

虚拟机#1也可以发出包括标识符(VMID1)的事务312A的访问外围 设备#1以及包括标识符(VMID1)的访问外围设备#2的事务312B的请求。 外围设备防火墙126可以将虚拟机#1的VMID与外围设备防火墙126中的 外围设备#1的规则进行比较,以判断虚拟机#1是否可以访问外围设备#1。 如果事务312A可以,则外围设备防火墙126可以允许事务312A访问外围 设备#1。然而,如果事务312A不能,则外围设备防火墙126可以拒绝事务 312A访问外围设备#1。类似地,外围设备防火墙126可以控制从虚拟机#1 对外围设备#1的访问。类似地,虚拟机#2可发出试图访问外围设备#2的包 括标识符(VMID2)的事务312C。外围设备#2的防火墙126可以将标识符 (VMID2)与防火墙126的规则进行比较,以判断事务312C是否具有访问 外围设备#2的权限。如果它可以,则事务312C可以被允许访问外围设备 #2。然而,如果它不能,则可以拒绝事务312C的访问请求。

总线主控器106可以发出试图访问存储器110和/或外围设备108的事 务。每一总线主控器都与一个虚拟机相关联。例如,总线主控器#1可以通 过VMM(318)与虚拟机#1相关联,并包括在其上存储了虚拟机#1的VMID (VMID1)的内部寄存器。总线主控器#1可以向互连112发出执行包括标 识符(VMID1)和与该标识符相关联的存储器地址范围(MR1)的事务314。 响应于接收到事务314的请求,存储器防火墙124可以将标识符和相关联 的存储器地址范围与存储器防火墙124的规则进行比较,以判断事务314 是否可以执行以访问存储器110。如果它可以,则存储器防火墙124可以允 许事务314访问存储器地址范围(MR1)。然而,如果它不能,则可以拒 绝事务314的访问存储器110的请求。类似地,总线主控器106可以发出 试图访问外围设备#1的包括标识符(VMID1)的事务316。响应于接收到 事务316的请求,互连112中的外围设备防火墙126可以将标识符与防火 墙216的规则进行比较,以判断事务316是否具有访问外围设备#1的权限。 如果它可以,则外围设备防火墙126可以允许事务316访问外围设备#1。 然而,如果它不能,则外围设备防火墙126可以拒绝事务316访问外围设 备#1。

图4是示出了根据本发明的一实施例的操作处理系统的方法的流程 图。方法400可以通过可以包括硬件(例如,电路、专用逻辑、可编程逻 辑、微代码等等)、软件(诸如在处理系统、通用计算机系统或专用机器 上运行的指令)、固件或其组合的处理逻辑来执行。在一个实施例中,方 法400可以部分地由执行参考图1所描述的防火墙124、126的CPU 104 和控制器120中的任何一个的处理逻辑来执行。

为了简洁起见,作为一系列动作描绘和描述了方法400。然而,根据 本发明的操作可以按各种顺序和或并行地进行,并带有其他此处未呈现和 描述的其他动作。此外,可不执行所有示出的动作以实现根据所公开的主 题的方法400。另外,本领域的技术人员将了解和明白,方法400也可以替 代地经由状态图或事件表示为一系列相互相关联的状态。

参考图4,在402,支持包括硬件辅助的虚拟机指令的指令集的CPU 可以执行虚拟机管理器启动指令(诸如VMXON)以启动虚拟机管理器。 CPU可以指派带有对硬件组件的根访问的虚拟机管理器来设置处理系统。 处理系统可包括CPU、互连、存储器、以及外围设备,其中,CPU、存储 器以及外围设备通过互连相互进行通信。

在404,CPU可以执行VMM以给每一虚拟机都指派虚拟机标识符 (VMID)。在创建VMM时,可以自动地生成VMID。VMM可以使用其 根访问来设置互连中的防火墙的规则。例如,VMM可以指定规则,根据这 些规则,用指定的VMID标记的事务可以访问存储器和/或外围设备。VMID 可能已经存储在CPU的内部寄存器中。

在406,CPU可以执行另一个硬件辅助的虚拟机指令(VM_ENTER) 以启动虚拟机。虚拟机可以运行访客操作系统和多个应用,多个应用可以 生成通过互连访问存储器和/或外围设备的事务。

在408,响应于从虚拟机接收到事务,CPU可以利用VMID来标记事 务,以便事务与由VMID所标识的虚拟机相关联。VMID可以被存储在事 务的可寻址的字段中。在410,CPU可以将包括VMID的事务传输到互连 的防火墙。然后,防火墙可以通过将与防火墙相关联的规则与VMID进行 比较来判断事务是否可以访问存储器和/或外围设备。

图5A是示出了根据本发明的一个实施例的实现包括异构核的处理设 备的处理器500的微架构的框图。具体而言,处理器500描绘了根据本发 明的至少一个实施例的要包括在处理器中的有序架构核和寄存器重命名逻 辑、无序发布/执行逻辑。

图500示出了包括耦合到执行引擎单元550的前端单元530,执行引 擎单元550和前端单元530两者都耦合到存储器单元570。处理器500可以 包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令 字(VLIW)核或混合型或替代核类型。作为另一种选项,处理器500可以 包括专用的核,诸如例如网络或通信核、压缩引擎、图形核等等。在一个 实施例中,处理器500可以是多核处理器或可以是多处理器系统的一部分。

前端单元530包括耦合到指令高速缓存单元534的分支预测单元532, 指令高速缓存单元534耦合到指令转换后备缓冲器(TLB)536,指令转换 后备缓冲器536耦合到指令获取单元538,指令获取单元538耦合到解码单 元540。解码单元540(也被称为解码器)可以解码指令,作为输出,生成 一个或多个微操作、微代码入口点、微指令、其他指令、或其他控制信号, 它们解码自或以别的方式反映或来源于原始指令。解码器540可以使用各 种不同的机制来实现。合适的机制的示例包括,但不仅限于,查找表、硬 件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。指 令高速缓存单元534进一步耦合到存储器单元570。解码单元540耦合到执 行引擎单元550中的重命名/分配器单元552。

执行引擎单元550包括耦合到隐退单元554的重命名/分配器单元552 和一组一个或多个调度器单元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缓存)。DCU 574可以处理多个未完成的 缓存丢失并继续服务传入的存储和加载。它还支持维护缓存一致性。数据 TLB单元572是用于通过映射虚拟和物理地址空间来改善虚拟地址转换速 度的缓存。在一个示例性实施例中,存储器访问单元564可以包括加载单 元、存储地址单元以及存储数据单元,其中每一个都耦合到存储器单元570 中的数据TLB单元572。L2高速缓存单元576可耦合到一个或多个其他级 别的高速缓存,最终耦合到主存储器。

在一个实施例中,数据预取器580通过自动地预测程序即将消耗哪些 数据,来推理性地将数据加载/预取到DCU 574。预取可以是指在数据实际 被处理器需求之前,将存储在存储器层次结构的一个存储器位置(例如, 较低级别的缓存或存储器)的数据分支到与处理器较近的较高级别的存储 器位置(例如,产生较低的访问延迟)。更具体而言,预取可以是指在处 理器发出对正在被返回的特定数据的需求之前将数据从较低级别的缓存/存 储器中的一个提前检索到数据缓存和/或预取缓冲器。

处理器500可以支持一个或多个指令集(例如,x86指令集(带有已 添加较新的版本的某些扩展);位于美国加州Sunnyvale的MIPS  Technologies的MIPS指令集;位于美国加州Sunnyvale的ARM Holdings 的ARM指令集(带有诸如NEON之类的可选的额外的扩展)。

应该理解,核可以支持多线程(执行操作或线程的两个或更多并行组), 并可以以各种方式达到这一目的,包括时间切片多线程,同时的多线程(其 中,单个物理核为物理核同时正在多线程处理的每一个线程提供一种逻辑 核),或其组合(例如,时间切片获取和解码和此后的同时的多线程处理, 诸如在 Hyperthreading技术中)。

尽管寄存器重命名是在无序执行的上下文中描述的,但是,应该理解, 寄存器重命名可以用于有序架构中。尽管处理器的所示出的实施例还包括 单独的指令和数据高速缓存单元以及共享的L2高速缓存单元,但是,替换 实施例对于指令和数据两者可以具有单个内部高速缓存,诸如,例如,1 级(L1)内部高速缓存,或多级内部高速缓存。在某些实施例中,系统可 以包括内部缓存和核和/或处理器外部的外部缓存的组合。可另选地,全部 缓存都可以核和/或处理器外部的。

图5B是示出了根据本发明的某些实施例由图5A的处理设备500实现 的有序流水线和寄存器重命名级、无序发布/执行流水线的框图。图5B中 的实线框示出了有序流水线,而虚线框示出了寄存器重命名、无序发布/执 行流水线。在图5B中,处理器流水线500包括获取级502、长度解码级504、 解码级506、分配级508、重命名级510、调度(也称为分派或发布)级512、 寄存器读取/存储器读取级514、执行级516、写回/存储器写入级518、异 常处理级522以及提交级524。在某些实施例中,级502-524的顺序可以不 同于所示出的,并且不仅限于图5B所示的特定的顺序。

图6示出了根据本发明的一个实施例的处理器600的微架构的框图。 在某些实施例中,根据一个实施例的指令可被实现为对具有字节、字、双 字、四倍字等等的大小以及诸如单个和双精度整数和浮点数据类型之类的 数据类型的数据元素进行操作。在一个实施例中,有序前端601是获取要 被执行的指令并准备好它们供稍后在处理器流水线中使用的处理器600的 一部分。

前端601可以包括多个单元。在一个实施例中,指令预取器626从存 储器中获取指令,并将它们馈送到指令解码器628,该指令解码器228又解 码或解释它们。例如,在一个实施例中,解码器将接收到的指令解码为机 器可以执行的一个或多个叫做“微指令”或“微操作”(也称为微操作或uop) 的操作。在其他实施例中,解码器将指令解析为微架构用来执行根据一个 实施例的操作的操作码和对应的数据和控制字段。在一个实施例中,跟踪 高速缓存630获取已解码的微操作,并将它们组装为程序有序序列或uop 队列634中的跟踪以供执行。当跟踪高速缓存630遇到复杂指令时,微代 码ROM 632提供完成操作所需的微操作。

某些指令被转换为单个微操作,而其他指令需要多个微操作才能完成 完全操作。在一个实施例中,如果需要四个以上的微操作才能完成指令, 则解码器628访问微代码ROM 632来执行指令。对于一个实施例,指令可 以被解码为少量的微操作,用于在指令解码器628处进行处理。在另一个 实施例中,指令可以存储在微代码ROM 632内,以防需要若干个微操作才 能完成该操作。跟踪缓存630引用入口点可编程逻辑阵列(PLA)来确定 用于从微代码ROM 632中读取微代码序列的正确的微指令指针,以完成根 据一个实施例的一个或多个指令。在微代码ROM 632完成对用于指令的微 操作的排序之后,机器的前端601恢复从跟踪高速缓存630获取微操作。

无序执行引擎603是准备指令以供执行的地方。无序执行逻辑具有若 干个缓冲器,以平缓和重新排序指令的流,以在它们离开流水线并被调度 供执行时优化性能。分配器逻辑分配每一个微操作需要的以便执行的机器 缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名为寄存器组中的条 目。分配器还在指令调度器(存储器调度器、快速调度器602、慢/一般浮 点调度器604以及简单浮点调度器606)的前面,为两个微操作队列中的一 个中的每一个微操作分配条目,一个用于存储器操作而一个用于非存储器 操作。uop调度器602、604、606基于它们的依赖的输入寄存器操作数源的 就绪状态以及uops完成它们的操作所需的执行资源的可用性,来确定uop 何时准备执行。一个实施例的快速调度器602可以在主时钟周期的每一半 调度,而其他调度器只能每个主处理器时钟周期调度一次。调度器仲裁分 派端口,来调度微操作以供执行。

寄存器组608、610位于调度器602,604,606和执行块611中的执行 单元612,614,616,618,620,622,624之间。对于整数和浮点运算, 分别有单独的寄存器组608,610。一个实施例的每一个寄存器组608、610 还包括旁路网络,该旁路网络可以将还没有被写入到寄存器组中的刚刚完 成的结果旁路或转发到新依赖的微操作。整数寄存器组608和浮点寄存器 组610还能够与其他文件进行数据交换。对于一个实施例,整数寄存器组 608被拆分成两个单独的寄存器组,一个寄存器组用于低阶32位的数据, 第二寄存器组用于高阶32位的数据。一个实施例的浮点寄存器组610具有 128位宽的条目,因为浮点指令通常具有宽度从64到128位的操作数。

执行块611包含其中实际执行指令的执行单元612、614、616、618、 620、622、624。此部分包括寄存器组608、610,这些寄存器组208,210 存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器600 包括若干个执行单元:地址生成单元(AGU)612、AGU 614、快速ALU 616、 快速ALU 618、慢速ALU 620、浮点ALU 622、浮点移动单元624。对 于一个实施例,浮点执行块622、624执行浮点、MMX、SIMD以及SSE 或其他操作。一个实施例的浮点ALU 622包括64位x 64位浮点除法器, 以执行除法、平方根,以及剩余微操作。对于本发明的各实施例,可以利 用浮点硬件来处理涉及浮点值的指令。

在一个实施例中,ALU运算进入高速ALU执行单元616、618。一个 实施例的快速ALU 616、618可以执行快速的操作,带有一半时钟周期的有 效延迟。对于一个实施例,大多数复杂的整数操作进入慢速ALU 620,因 为慢速ALU 620包括用于长延迟类型的操作的整数执行硬件,诸如乘法器、 移位器、标记逻辑以及分支处理。存储器加载/存储操作是由AGU 612、614 执行的。对于一个实施例,整数ALU 616、618、620是在对64位数据操作 数执行整数操作的上下文中描述的。在替代实施例中,ALU 616,618,620, 可被实现为支持各种数据位,包括16,32,128,256,等等。类似地,浮 点单元622、624可被实现为支持具有各种宽度的位的操作数的范围。对于 一个实施例,浮点单元622、624可以结合SIMD和多媒体指令,对128位 宽的紧缩数据操作数进行操作。

在一个实施例中,uops调度器602,604,606在父加载完成执行之前, 分派依赖的操作。由于微操作是在处理器600中投机性地调度和执行的, 因此处理器600还包括处理存储器未命中的逻辑。如果数据加载在数据高 速缓存中未命中,则在流水线中可能会有带有临时不正确的数据的离开调 度器的正在执行的依赖的操作。重播机制跟踪并重新执行使用不正确的数 据的指令。只有依赖的操作需要被重播,而独立的操作被允许完成。处理 器的一个实施例的调度器和重播机制还被设计为捕捉用于文本字符串比较 操作的指令序列。

处理器600还包括根据本发明的各实施例的逻辑实现用于存储器歧义 消除的存储地址预测的逻辑。在一个实施例中,处理器600的执行块611 可包括用于实现用于存储器歧义消除的存储地址预测的存储地址预测器 (未示出)。

术语“寄存器”可以表示被用作标识操作数的指令的一部分的板上的处 理器存储器位置。换言之,寄存器可以是从处理器外部可使用的那些寄存 器(从编程器的角度来看)。然而,实施例的寄存器在特定类型的电路的 意义上不应该受限制。相反,实施例的寄存器能够存储和提供数据并执行 此处所描述的功能。此处所描述的寄存器可以通过处理器内的电路使用任 意数量的不同的技术来实现,诸如专用物理寄存器、使用寄存器重命名的 动态地分配的物理寄存器、专用和动态地分配的物理寄存器的组合等等。 在一个实施例中,整数寄存器存储32位整型数据。一个实施例的寄存器组 还包含用于紧缩的数据的八个多媒体SIMD寄存器。

对于下面的讨论,寄存器被理解为是被设计为保存紧缩数据的数据寄 存器,诸如利用加利福尼亚州圣克拉拉市的英特尔公司的MMX技术实现 的微处理器中的64位宽MMXTM寄存器(在某些情况下,也简称为“mm” 寄存器)。以整数和浮点形式存在的这些MMX寄存器,可以与伴随SIMD 和SSE指令的紧缩数据元件一起操作。类似地,也可以使用涉及SSE2、 SSE3、SSE4或以外的(一般地称为“SSEx”)技术的128位宽的XMM寄存 器来保存这样的紧缩数据操作数。在一个实施例中,在存储紧缩的数据和 整型数据时,寄存器不需要区分两种数据类型。在一个实施例中,整数和 浮点包含在同一个寄存器组或者不同的寄存器组中。此外,在一个实施例 中,浮点和整型数据可以存储在不同的寄存器中或相同寄存器中。

现在参考图7,所示是示出了其中可以使用本发明的实施例的系统700 的框图。如图7所示,多处理器系统700是点对点互连系统,并包括通过 点对点互连750耦合的第一处理器770和第二处理器780。尽管只利用两个 处理器770、780来示出,但是,可以理解,本发明的各实施例不仅限于此。 在其他实施例中,一个或多个额外的处理器可以存在于给定处理器中。.

处理器770和780被示为分别包括集成存储器控制器单元772和782。 处理器770还包括点对点(P-P)接口776和778,作为其总线控制器单元 的一部分;类似地,第二处理器780包括P-P接口786和788。处理器770, 780可以使用P-P接口电路778,788通过点对点(P-P)接口750来交换信 息。如图7所示,IMC 772和782将处理器耦合到相应的存储器,即,存 储器732和存储器734,它们可以是本地连接到相应的处理器的主存储器的 一部分。

处理器770,780中的每一个都可以使用点对点的接口电路776、794、 786、798通过单个P-P接口752,754与芯片组790交换信息。芯片组790 还可以通过高性能的图形接口739与高性能的图形电路738交换信息。

共享高速缓存器(未示出)可以被包括在任一处理器中或者两个处理 器的外面,通过P-P互连与处理器相连接,以便如果处理器被置于低功率 模式下,则处理器中的任何一个或两者的本地缓存信息可以存储在共享高 速缓存器中。

芯片组790可以通过接口796耦合到第一总线716。在一个实施例中, 第一总线716可以是外围组件互连(PCI)总线,或诸如PCI Express总线 之类的总线,或另一第三代I/O互连总线,虽然本公开的范围不仅限于此。

如图7所示,各种I/O设备714以及将第一总线716耦合到第二总线 718的总线桥716可以耦合到第一总线720。在一个实施例中,第二总线720 可以是低管脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第 二总线720,包括例如键盘和/或鼠标722、通信设备727和存储单元728(诸 如磁盘驱动器或可以包括指令/代码和数据730的其他大容量存储设备)。 进一步地,音频I/O 724可以耦合到第二总线720。请注意,其他架构也是 可以的。例如,代替图7的点对点架构,系统可以实现多点分支总线或其 他这样的架构。

现在参考图8,所示是其中可以使用本发明的一个实施例的系统800 的框图。系统800可以包括耦合到图形存储器控制器中枢(GMCH)820 的一个或多个处理器810、815。在图8中利用虚线表示额外的处理器815 的可任选的本质。

每一处理器810,815都可以是如上文所描述的电路、集成电路、处理 器和/或硅集成电路的某个版本。然而,应该指出的是,集成的图形逻辑和 集成的存储器控制单元将未必存在于处理器810,815中。图8示出了GMCH 820可以耦合到存储器840,该存储器840可以是,例如,动态随机存取存 储器(DRAM)。DRAM可以,对于至少一个实施例,与非易失性缓存相 关联。

GMCH 820可以是芯片组,或芯片组的一部分。GMCH 820可以与处 理器810,815进行通信,并控制处理器810,815和存储器840之间的交 互。GMCH 820也可以充当处理器810,815及系统800的其他元件之间的 加速的总线接口。对于至少一个实施例,GMCH 820通过诸如前端总线 (FSB)之类的多点分支总线与处理器810,815进行通信。

此外,GMCH 820还耦合到显示器845(诸如平板或触摸屏显示器)。 GMCH 820可包括集成的图形加速器。GMCH 820进一步耦合到输入/输出 (I/O)控制器中枢(ICH)850,该控制器中枢850可以被用来将各种外围 设备耦合到系统800。例如,在图8的实施例中所示是外部图形设备860, 该外部图形设备860可以是耦合到ICH 850以及另一个外围设备870的单 独的图形设备。

可另选地,额外的或不同的处理器也可以存在于系统800中。例如, 额外的处理器815可包括与处理器810相同的额外的处理器,与处理器810 异构或非对称的额外的处理器,加速器(诸如,例如,图形加速器或数字 信号处理(DSP)单元),场可编程门阵列,或任何其他处理器。就包括 架构、微架构、热的、功率消耗特征等等的一系列优点的度量而言,在处 理器810,815之间可能会有各种差异。这些差异可能有效地将其本身表现 为处理器810,815之间的不对称性和异质性。对于至少一个实施例,各种 处理器810,815可以驻留在相同管芯封装中。

现在参考图9,所示是本发明的实施例可以在其中操作的系统900的 框图。图9示出了处理器970,980。处理器970,980分别可包括集成的存 储器和I/O控制逻辑(“CL”)972和982,并分别通过点对点(P-P)接口 978和988之间的点对点互连,彼此互相通信。处理器970,980中每一个 都通过点对点互连952和954,通过如图所示的相应的P-P接口976到994 和986到998,与芯片组990进行通信。对于至少一个实施例,CL 972,982 可包括集成的存储器控制器单元。CL 972,982可包括I/O控制逻辑。如所 描绘的,耦合到CL 972,982和I/O设备914的存储器932,934还耦合到 控制逻辑972,982。传统I/O设备915通过接口996耦合到芯片组990。

各实施例可以以许多不同的系统类型来实现。图10是根据本发明的实 施例的SoC 1000的框图。虚线框是比较先进的SoC上的可选的特征。在 图10中,互连单元1012耦合到:包括一组一个或多个核1002A-N和共享 高速缓存器单元1006的应用处理器1020;系统代理单元1010;总线控制 器单元1016;集成存储器控制器单元1014;一组或一个或多个媒体处理器 1018,可以包括集成的图形逻辑1008、用于提供静止和/或视频摄像机功能 的图像处理器1024、用于提供硬件音频加速的音频处理器1026、以及用于 提供视频编码/解码加速的视频处理器1028;静态随机存取存储器(SRAM) 单元1030;直接存储器访问(DMA)单元1032;以及,用于耦合到一个或 多个外部显示器的显示单元1040。在一个实施例中,存储器模块可以被包 括在集成的存储器控制器单元1014中。在另一个实施例中,存储器模块可 以被包括在SoC 1000的可以被用来访问和/或控制存储器的一个或多个其 他组件。

存储器层次结构包括核内的一级或多级缓存,一组或一个或多个共享 高速缓存器单元1006,以及耦合到集成的存储器控制器单元1014组的外部 存储器(未示出)。共享高速缓存器单元1006组可以包括一个或多个中级 缓存,诸如2级(L2)、3级(L3)、4级(L4),或其他级别的缓存, 末级缓存(LLC),和/或其组合。

在某些实施例中,核1002A-N中的一个或多个能够多线程处理。系统 代理1010包括用于协调和操作核1002A-N的那些组件。系统代理单元1010 可以包括,例如,电源控制单元(PCU)和显示单元。PCU可以是或包括 用于管理核1002A-N和集成的图形逻辑1008的电能状态所需的逻辑和组 件。显示单元用于驱动一个或多个从外部连接的显示器。

就架构和/或指令集而言,核1002A-N可以是同质的或异构的。例如, 核1002A-N中的某些可以是有序的,而其他的是无序的。作为另一个示例, 核1002A-N中的两个或更多可以能够执行相同的指令集,而其他的可以能 够只执行该指令集的子集或不同的指令集。

应用处理器1020可以是诸如位于加利福尼亚州圣克拉拉市的英特尔 公司所提供的CoreTMi3、i5、i7、2Duo以及Quad、XeonTM、ItaniumTM、 AtomTM、或QuarkTM之类的通用处理器。另选地,应用处理器1020可以来 自另一公司,诸如ARM HoldingsTM,Ltd,MIPSTM,等等。应用处理器1020 可以是专用的处理器,诸如例如网络或通信处理器、压缩引擎、图形处理 器、协处理器、嵌入式处理器等等。应用处理器1020可以在一个或多个芯 片上实现。应用处理器1020可以是一个或多个衬底的一部分和/或可以使用 若干种处理技术(诸如,例如,BiCMOS、CMOS,或NMOS)中的任何一 种在一个或多个衬底上实现。

图11是根据本发明的芯片上系统(SoC)设计的实施例的框图。作为 特定说明性示例,SoC 1100被包括在用户设备(UE)中。在一个实施例 中,UE是指被最终用户用来进行通信的任何设备,诸如手持式电话、智能 电话、平板电脑、超薄型的笔记本、带有宽带适配器的笔记本或任何其他 类似的通信设备。UE常常连接到基站或节点,该基站或节点潜在地本质上 对应于GSM网络中的移动站(MS)。

这里,SOC 1100包括2个核——1106和1107。核1106和1107可以 符合指令集架构,诸如基于 Architecture CoreTM的处理器、Advanced  Micro Devices,Inc.(AMD)处理器、基于MIPS的处理器、基于ARM或 其顾客的处理器设计,以及它们的被许可方或采用者。核1106和1107耦 合到与总线接口单元1108和L2缓存1109相关联的缓存控件1110,以与 系统1100的其他部分进行通信。互连1110包括芯片内互连,诸如IOSF、 AMBA,或上文所讨论的其他互连,它们潜在地实现所描述的公开的一个 或多个方面。

互连1110提供到其他组件的通信信道,其他组件诸如与SIM卡连接 的用户标识模块(SIM)1130、保存供核1106和1107执行以初始化和引导 SoC 1100的引导代码的引导ROM 1135、与外部存储器(例如,DRAM 1160) 连接的SDRAM控制器1140、与非易失性存储器(例如,闪存1165)连接 的闪存控制器1145、与外围设备连接的外围控制器1150(例如,串行外围 接口)、显示和接收输入(允许触摸的输入)的视频编解码器1120和视频 接口1125、用于执行图形相关的计算的GPU 1115等等。这些接口中的任 何一种可以包括此处所描述的本发明的各方面。另外,系统1100示出了用 于通信的外围设备,诸如蓝牙模块1170、3G调制解调器1175、GPS 1180 以及Wi-Fi 1185。

图12示出了计算机系统1200的示例形式的机器的示意图,在该计算 机系统1200内,可以执行用于使机器执行此处所讨论的方法中的任何一个 或多个的一组指令。在替换实施例中,机器可以连接(例如,联网)到LAN、 内联网、外部网或因特网中的其他机器。机器可以在客户机-服务器网络环 境中作为服务器或客户机设备,或在对等(或分布式)网络环境中作为对 等机器来操作。机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、 个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交 换机或桥接器,或执行指定要由该机器所采取的动作的一组指令(连续的 或以别的方式)的任何机器。进一步地,尽管只示出了单个机器,但是, 术语“机器”也应该被视为包括分别地或联合地执行一组(或多组)指令以 执行此处所讨论的方法中的任何一个或多个的机器的任何集合。

计算机系统1200包括处理设备1202、主存储器1204(例如,只读存 储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如同步DRAM (SDRAM)或Rambus DRAM(RDRAM)等等)、静态存储器1206(例 如,闪存、静态随机存取存储器(SRAM),等等),以及数据存储设备 1218,它们通过总线1230相互进行通信。

处理设备1202表示诸如微处理器、中央处理单元等等之类的一个或多 个通用处理设备。更具体而言,处理设备可以是复杂指令集计算(CISC) 微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微 处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处 理设备1202还可以是一个或多个专用的处理设备,诸如专用集成电路 (ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络 处理器等等。在一个实施例中,处理设备1202可以包括一个或多个处理核。 处理设备1202被配置成执行用于执行此处所讨论的操作和步骤的处理逻辑 1226。

计算机系统1200还可以包括以通信方式耦合到网络1220的网络接口 设备1208。计算机系统1200还可以包括视频显示单元1210(例如,液晶 显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1212(例如, 键盘)、光标控制设备1214(例如,鼠标)、以及信号生成设备1216(例 如,扬声器)。此外,计算机系统1200还可以包括图形处理单元1222、视 频处理单元1228以及音频处理单元1232。

数据存储设备1218可包括在其上面存储了实现此处所描述的功能的 任何一个或多个方法(诸如实现如上文所描述的用于存储器歧义消除的存 储地址预测)的软件1226的机器可访问的存储介质1224。软件1226还可 以在由计算机系统1200执行过程中完全地或至少部分地作为指令1226驻 留在主存储器1204内和/或作为处理逻辑驻留在处理设备1202内;主存储 器1204和处理设备1202还构成机器可访问的存储介质。

机器可读的存储介质1224也可以被用来存储实现存储地址预测的指 令1226和/或包含调用上面的应用的方法的软件库。尽管机器可访问的存储 介质1128在一示例实施例中被示为单个介质,但是术语“机器可访问的存 储介质”应该被视为包括存储一个或多个指令集的单个介质或多个介质(例 如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“机 器可访问的存储介质”还应该被视为包括能够存储、编码或携带由机器执行 的一组指令并且使机器执行本发明的方法中的任何一个或多个的任何介 质。术语“机器可访问的存储介质”应该相应地被视为包括但不局限于固态 存储器以及光学和磁性介质。

下列示例涉及进一步的实施例。示例1是处理设备,该处理设备可包 括互连和耦合到互连的执行多个虚拟机的处理核,每一虚拟机都通过相应 的标识符来标识,并通过第一虚拟机的标识符来标记由第一虚拟机启动的 访问互连的第一事务。

在示例2中,如权利要求1所述的主题可以可任选地规定,互连包括 存储器防火墙,用于响应于接收到第一事务,使用第一虚拟机的标识符来 验证第一事务。

在示例3中,示例1和2中的任一示例的主题可以可任选地还包括耦 合到互连的总线主控器,其中,所述处理核给所述总线主控器指派所述第 二虚拟机的标识符,所述总线主控器为该第二虚拟机执行访问所述互连的 第二事务,其中所述总线主控器利用所述第二标识符来标记所述第二事务。

在示例4中,示例3的主题可以可任选地规定,互连耦合到存储器, 其中存储器防火墙进一步执行下列各项中的至少一项:响应于从所述处理 核接收到所述第一事务,相对于所述存储器的第一地址范围和所述第一虚 拟机的所述标识符,验证所述第一事务,或,响应于从所述总线主控器接 收到所述第二事务,相对于所述存储器的第二地址范围和所述第二虚拟机 的所述标识符,验证所述第二事务。

在示例5中,示例4的主题可以可任选地规定,互连耦合到外围设备, 互连包括外围设备防火墙以执行下列各项中的至少一项:响应于从所述处 理核接收到所述第一事务,使用所述第一虚拟机的所述标识符,验证所述 第一事务,或,响应于从所述总线主控器接收到所述第二事务,使用所述 第二虚拟机的所述标识符,验证所述第二事务。

在示例6中,示例5的主题可以可任选地规定,处理核进一步执行管 理多个虚拟机的虚拟机管理器,其特征在于,虚拟机管理器与允许访问互 连和总线主控器的访问权限相关联。

在示例7中,示例6的主题可以可任选地规定,处理核将执行所述虚 拟机管理器以设置所述存储器防火墙的规则表或所述外围设备防火墙的规 则表中的至少一项。

在示例8中,示例6的主题可以可任选地规定,处理核执行虚拟机管 理器以创建第一虚拟机,并提供随后的事务的虚拟机上下文,直到第一虚 拟机退出。

在示例9中,示例1的主题可以可任选地规定,第一虚拟机的标识符 存储在处理核的内部寄存器中。

示例10是芯片上系统(SoC),该SoC可包括执行多个虚拟机的处理 核,以及耦合到处理核的互连,互连包括防火墙,以:从所述处理核接收 第一事务,所述第一事务与第一虚拟机的标识符相关联,以及,使用所述 第一虚拟机的所述标识符,确定所述第一事务是否被允许访问耦合到所述 互连的存储器或耦合到所述互连的外围设备中的一个。

在示例11中,示例10的主题可以可任选地规定,处理核进一步利用 第一虚拟机的第一标识符来标记第一事务。

在示例12中,示例10的主题可以可任选地规定,确定还包括,使用 所述第一虚拟机的所述标识符,考虑到所述防火墙的一个或多个规则,验 证所述第一事务。

在示例13中,示例10的主题还可以包括耦合到互连的总线主控器, 其中,给所述总线主控器指派第二虚拟机的标识符,所述总线主控器为该 第二虚拟机执行第二事务以访问所述互连,以及,其中所述总线主控器利 用所述第二虚拟机的所述标识符来标记所述第二事务。

在示例14中,示例10到23中的任何一个的主题可以可任选地规定, 防火墙进一步执行下列各项中的至少一项:响应于接收到所述第一事务, 相对于所述存储器的第一地址范围和所述第一虚拟机的所述标识符,来验 证所述第一事务,或,响应于从所述总线主控器接收到所述第二事务,相 对于所述存储器的第二地址范围和所述第二虚拟机的所述标识符,来验证 所述第二事务。

在示例15中,示例10的主题可以可任选地规定,处理核进一步执行 管理多个虚拟机的虚拟机管理器,以及,其特征在于,虚拟机管理器与允 许访问互连和总线主控器的访问权限相关联。

在示例16中,示例10和15的主题可以可任选地规定,处理核执行虚 拟机管理器以设置防火墙。

在示例17中,示例16的主题可以可任选地规定,第一虚拟机的创建 提供随后的事务的虚拟机上下文,直到第一虚拟机退出。

在示例18中,示例10和15中的任何一个的主题可以可任选地规定, 第一虚拟机的标识符存储在处理核的内部寄存器中。

示例19是一种方法,包括:启动虚拟机管理器,启动虚拟机,由所述 虚拟机管理器,向所述虚拟机指派标识符,以及,通过标识符来标记虚拟 机的第一事务。

在示例20中,示例19的主题还可以包括向互连传输包括标识符的事 务。

在示例21中,示例19和20中的任何一个的主题还可以包括向总线主 控器指派标识符,其中,总线主控器代表虚拟机,将第二事务传输到互连。

在示例22中,示例10到20中的任何一个的主题可以可任选地规定, 互连包括存储器防火墙,以,响应于接收到第一事务,使用标识符,验证 第一事务。

示例23是在其上存储了程序代码的机器可读的非瞬时的介质,程序代 码在被执行时执行操作,操作包括启动虚拟机管理器,启动虚拟机,由所 述虚拟机管理器向所述虚拟机指定标识符,以及,通过标识符来标记虚拟 机的第一事务。

在示例24中,示例23的主题可以可任选地规定,操作还包括向互连 传输包括标识符的事务。

示例25是包括互连和耦合到互连的用于执行多个虚拟机的装置的处 理系统,每一虚拟机都通过相应的标识符来标识,以及,通过所述第一虚 拟机的标识符,标记由第一虚拟机启动的访问所述互连的第一事务。

在示例26中,示例25的主题可以可任选地规定,互连包括存储器防 火墙,以,响应于接收到第一事务,使用第一虚拟机的标识符,验证第一 事务。

尽管是参考数量有限的实施例来描述本发明的,但是,那些精通本技 术的人将从其中理解很多修改和变体。所附权利要求书涵盖所有这样的修 改和变体都将在本发明的真正的精神和范围内。

设计可以经过各种阶段,从创建到模拟到制造。表示设计的数据可以 以若干种方式表示设计。首先,如对模拟有用的,硬件可以使用硬件描述 语言或另一种功能描述语言来表示。另外,还可以在设计过程的某些阶段 产生带有逻辑和/或晶体管门的电路电平模型。此外,大多数设计,达到表 示硬件模型中的各种设备的物理布局的数据的级别。在使用常规半导体制 造技术的情况下,表示硬件模型的数据可以是指定用于产生集成电路的掩 码的不同的掩码层上存在或不存在各种特征的数据。在设计的任何表示中, 数据可以以机器可读的介质的任何形式存储。存储器或诸如盘之类的磁性 或光存储器可以是存储通过光波或电波调制的传输的或以别的方式生成的 以传输这样的信息的信息的机器可读的介质。当传输指出或携带代码或设 计的电载波时,就执行电信号的复制、缓冲或重新传输而言,作出新的副 本。如此,通信提供商或网络提供商可以在有形的,机器可读取的介质上 至少临时存储制品,诸如编码为载波的信息,实现本发明的各实施例的技 术。

如此处所使用的模块是指硬件、软件和/或固件的任何组合。作为示例, 模块包括与存储被配置为由微控制器执行的代码的非瞬时的介质相关联的 硬件,诸如微控制器。因此,对模块的引用,在一个实施例中,是指专门 被配置成识别和/或执行要被保存在非瞬时的介质上的代码的硬件。此外, 在另一个实施例中,模块的使用还是指包括专门被配置为由微控制器执行 以执行预定的操作的代码的非瞬时的介质。在再一个实施例中,可以推断, 术语“模块”(在此示例中)可以是指微控制器和非瞬时的介质的组合。被 示为单独的模块边界通常会变化并潜在地重叠。例如,第一和第二模块可 以共享硬件,软件,固件,或其组合,而潜在地保持一些独立硬件、软件, 或固件。在一个实施例中,术语“逻辑”的使用包括诸如晶体管、寄存器之 类的硬件,或诸如可编程逻辑器件之类的其他硬件。

短语“被配置成”的使用,在一个实施例中,是指排列、置于一起、制 造、销售、导入和/或设计设备、硬件、逻辑,或元件以执行指定的或确定 的任务。在此示例中,不正在操作的设备或其元件仍“被配置成”执行指定 的任务,如果它被设计,耦合和/或互连以执行所述指定的任务。作为纯粹 说明性示例,逻辑门可以在操作过程中提供0或1。但是,“被配置成”向时 钟提供启用信号的逻辑门不包括可以提供1或0的每个潜在逻辑门。相反, 逻辑门是以在操作过程中1或0输出将启用时钟的某种方式耦合的逻辑门。 再次注意,术语“被配置成”的使用不要求操作,而是聚焦于设备、硬件, 和/或元件的潜伏的状态,其中,在潜伏的状态,设备、硬件,和/或元件被 设计成当设备、硬件和/或元件正在操作时执行特定任务。

此外,短语“以”,“能够”,和/或“可操作以”的使用,在一个实施例中, 是指以这样的方式设计的某种设备、逻辑、硬件,和/或元件,以允许以指 定的方式使用设备、逻辑、硬件,和/或元件。如上文所指出的,“以”,“能 够”,“可操作以”的使用,在一个实施例中,是指设备、逻辑、硬件,和/ 或元件的潜伏的状态,其中,设备,逻辑,硬件,和/或元件不正在操作, 而是被以这样的方式设计,以允许以指定的方式使用设备。

值,如此处所使用的,包括数字、状态、逻辑状态,或二进制逻辑状 态的任何已知表示。逻辑电平、逻辑值的使用常常也被称为简单地表示二 进制逻辑状态的1和0。例如,1是指高逻辑电平,0是指低逻辑电平。在 一个实施例中,诸如晶体管或闪存单元之类的存储单元可以能够保存单一 逻辑值或多个逻辑值。然而,使用了计算机系统中的值的其他表示。例如, 十进制数“10”也可以表示为二进制值“910”和十六进制字母A。因此,值包 括能够保存在计算机系统中的信息的任何表示。

此外,状态还可以通过值或值某些部分来表示。作为示例,诸如逻辑 1之类的第一值,可以表示默认或初始状态,而诸如逻辑0之类的第二值可 以表示非默认状态。另外,术语“复位和置位”,在一个实施例中,分别是 指默认和更新的值或状态。例如,默认值潜在地包括高逻辑值,即,复位, 而更新的值潜在地包括低逻辑值,即,置位。注意,可以使用值的任何组 合来表示任意数量的状态。

上文所阐述的方法、硬件、软件、固件或代码的各实施例可以通过存 储在机器可访问的、机器可读的,计算机可访问的,或计算机可读介质上 的可由处理元件执行的指令或代码来实现。非瞬时的机器可访问的/可读取 的介质包括以可由诸如计算机或电子系统之类的机器读取的形式提供(即, 存储和/或传输)信息的任何机制。例如,非瞬时的机器可访问的介质包括 随机存取存储器(RAM),诸如静态RAM(SRAM)或动态RAM(DRAM); ROM;磁性或光存储介质;闪存设备;电存储设备;光存储设备;声音存 储设备;其它形式的用于保存从瞬时的(传播的)信号(例如,载波、红 外信号、数字信号)接收到的信息的存储设备;等等(它们与可以从其中 接收信息的非瞬时的介质不同)。

用于编程逻辑以执行本发明的各实施例的指令可以存储在系统中的存 储器内,诸如DRAM、缓存、闪存,或其他存储器。此外,指令还可以通 过网络或通过其他计算机可读介质来分发。如此,机器可读的介质可以包 括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制, 但不仅限于,软盘、光盘、压缩光盘、只读存储器(CD-ROM),以及磁 光盘、只读存储器(ROMs)、随机存取存储器(RAM)、可擦与可编程 只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、磁卡或 光卡、闪存,或用于通过电的、光学的、声音或其他形式的传播信号(例 如,载波、红外信号、数字信号等等)通过因特网来传输信息的有形的, 机器可读的存储器。相应地,计算机可读介质包括适于以可由机器(例如, 计算机)读取的形式来存储或传输电子指令或信息的任何类型的有形的机 器可读取的介质。

说明书中对“一个实施例”、“实施例”的引用意味着结合该实施例所描 述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此, 在整个说明书的多个位置出现短语“在一个实施例中”或“在实施例中”不一 定指的是同一实施例。此外,在一个或多个实施例中,特定特征、结构或 特性可以以任何合适的方式组合起来。

在前述的说明书中,参考其特定示例性实施例给出了详细描述。然而, 显而易见的是,在不偏离如在所附权利要求书中阐述的本发明的较广泛的 精神和范围的情况下,可以作出各种修改方案和改变。相应地,说明书和 附图应被视为说明性的,而不是限制性的。此外,实施例及其他示例性语 言的前述的使用不一定是指相同实施例或相同示例,而是可以是指不同的 实施例,以及潜在地相同的实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号