允许受保护的容器存储器与输入/输出设备之间的安全通信的处理器、方法、系统和指令与流程

文档序号:14394548阅读:277来源:国知局

本文所述的实施例一般涉及处理器。特别地,本文所述的实施例一般涉及保障处理器中的信息。



背景技术:

台式计算机、笔记本电脑、智能手机、服务器和各种其它类型的计算机系统往往用于处理秘密或机密信息。这样的秘密或机密信息的示例包括但不限于密码、账户信息、财务信息、金融交易期间的信息、机密公司数据、企业权限管理信息、个人日历、个人联系人、医疗信息、其它个人信息等等。一般期望保护这样的秘密或机密信息免受查验、篡改、盗窃等等。

附图说明

通过参考用于图示实施例的下面的描述和附图,可最佳地理解该发明。在图中:

图1是可在其中实现实施例的计算机系统的实施例的框图。

图2是适合于实施该发明的实施例的计算机系统的详细示例性实施例的框图。

图3是具有i/o受保护的容器模块的示例性实施例的计算机系统的实施例的框图。

图4是配置安全dma的示例性实施例的流程框图。

图5是示出配置安全dma的计算机系统的示例性实施例的框图。

图6是操作以执行dma受保护的容器页面配置指令的实施例的处理器的实施例的框图。

图7是示出指定dma操作的计算机系统的示例性实施例的框图。

图8是示出安全性检查并执行安全dma的计算机系统的示例性实施例的框图。

图9是执行安全性检查以确定是否允许安全dma的方法的示例性实施例的流程框图。

图10是配置安全mmio的示例性实施例的流程框图。

图11是示出配置安全mmio的计算机系统的示例性实施例的框图。

图12是执行安全mmio的给定的dpcm的方法的详细示例性实施例的流程框图。

图13是示出执行安全mmio的计算机系统的示例性实施例的框图。

图14a是图示有序流水线的实施例和寄存器重命名无序发布/执行流水线的实施例的框图。

图14b是包括耦合到执行引擎单元的前端单元并且两者都耦合到存储器单元的处理器核的实施例的框图。

图15a是单个处理器核、连同其到管芯上互连网络的连接以及其2级(l2)高速缓存的本地子集的实施例的框图。

图15b是图15a的处理器核的一部分的展开图的实施例的框图。

图16是可具有多于一个核、可具有集成存储器控制器并且可具有集成图形的处理器的实施例的框图。

图17是计算机架构的第一实施例的框图。

图18是计算机架构的第二实施例的框图。

图19是计算机架构的第三实施例的框图。

图20是计算机架构的第四实施例的框图。

图21是根据该发明的实施例的使用软件指令转换器以将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。

具体实施方式

本文公开允许受保护的容器存储器与输入和/或输出设备之间的安全通信的处理器、方法、系统和指令。在下面的描述中,阐述许多具体细节(例如具体处理器配置、微架构细节、指令操作、操作序列等)。然而,可实践实施例而没有这些具体细节。在其它实例中,未详细示出公知的电路、结构和技术,以避免模糊对描述的理解。

图1是可在其中实现实施例的计算机系统100的实施例的框图。在各种实施例中,计算机系统可表示台式计算机系统、膝上型计算机系统、平板计算机系统、智能手机、服务器、网络装备等等,或者通常往往用于处理秘密或机密信息的各种其它类型的计算机系统。

计算机系统包括受保护的容器存储器101、处理器104以及输入和/或输出(i/o)设备107。受保护的容器存储器、处理器和i/o设备与彼此耦合。正如所示的,处理器通过第一可选耦合机构108与受保护的容器存储器耦合,受保护的容器存储器通过第二可选耦合机构110与i/o设备耦合,并且处理器通过第三可选耦合机构109与i/o设备耦合。合适的耦合机构的示例包括但不限于一条或多条总线或其它互连,一个或多个芯片组组件,用于耦合处理器、存储器和i/o设备的其它机构,以及其各种组合。

处理器具有受保护的容器架构105。受保护的容器架构包括受保护的容器访问控制逻辑106。在一些实施例中,受保护的容器架构和/或受保护的容器访问控制逻辑可操作以支持和保护受保护的容器存储器和/或其一个或多个受保护的容器模块(例如一个或多个安全包含物(enclave))。在一些实施例中,受保护的容器架构和/或受保护的容器访问控制逻辑可操作以使用不同方法中的任何一个或多个来支持和/或保护和/或控制对受保护的容器存储器和/或其一个或多个受保护的容器模块的访问,该不同方法用在intel®softwareguardextensions(intel®sgx)中以支持和/或保护和/或控制对包含物页面高速缓存(epc)和/或其一个或多个安全包含物的访问,不过该发明的范围不限于此。在一些实施例中,受保护的容器架构和/或受保护的容器访问控制逻辑可操作以使用以下结合图2所述的不同方法中的任何一个或多个来支持和/或保护和/或控制对受保护的容器存储器和/或其一个或多个受保护的容器模块的访问,不过该发明的范围不限于此。在一些实施例中,还可和/或替代可选地使用用于支持和/或保护和/或控制对受保护的容器存储器和/或其一个或多个受保护的容器模块的访问的一个或多个其它方法。

在一些实施例中,处理器可以是通用处理器(例如通常在台式机、膝上型计算机、智能电话和其它计算机中使用的类型的通用微处理器或中央处理单元(cpu)),不过该发明的范围不限于此。处理器可具有各种复杂指令集计算(cisc)架构、精简指令集计算(risc)架构、超长指令字(vliw)架构、混合架构、其它类型的架构中的任何一个,或者具有不同架构(例如不同的核可具有不同的架构)的组合。为了避免模糊描述,示出处理器的简化示例,不过应当理解:处理器可以可选地具有本文所示和所述的其它处理器的任何组件。

各种不同类型的i/o设备适合于i/o设备107。在一些实施例中,i/o设备107可表示处理器能够将其配置成执行dma的直接存储器访问(dma)设备。在一些实施例中,i/o设备107可表示处理器能够通过mmio配置的存储器映射的i/o(mmio)设备。在一些实施例中,i/o设备107可以是dma设备和mmio设备两者。适合于i/o设备107的不同类型的设备的具体示例包括但不限于dma控制器、dma引擎以及具有至少一个dma控制器和/或dma引擎的各种类型的设备、键盘、触摸屏、指纹传感器或读取器、眼睛虹膜扫描设备和其它生物识别设备、磁盘驱动器和其它存储控制器、通用串行总线(usb)耦合设备、便携式存储设备、闪存驱动器、网卡、网络控制器以及其它网络和通信设备、声卡和其它音频设备、相机、视频设备、和图形卡和其它图形设备、地理定位系统(gps)和其它位置传感器等等,仅举几个示例。

正如所示的,在一些实施例中,受保护的容器存储器101可具有输入和/或输出(i/o)受保护的容器模块102的实施例。在一些实施例中,受保护的容器存储器还可具有被配置用于和/或以其它方式操作以允许由i/o设备i/o访问的一个或多个受保护的容器页面。在一些实施例中,通过被配置或以其它方式操作以用于i/o103的一个或多个受保护的容器页面,i/o受保护的容器模块102和i/o设备107可执行i/o。正如所示的,i/o受保护的容器模块102可访问111(例如从中读取和/或向其写入)一个或多个受保护的容器页面103。类似地,i/o设备107可访问112(例如从中读取和/或向其写入)一个或多个受保护的容器页面103。在一些实施例中,可通过可操作以允许这些访问的受保护的容器架构105和/或受保护的容器访问控制逻辑106来执行这些访问。例如,在一些实施例中,受保护的容器架构105和/或受保护的容器访问控制逻辑106可操作以允许i/o受保护的容器模块102和i/o设备107通过一个或多个受保护的容器页面103执行dma。作为另一个示例,在一些实施例中,受保护的容器架构105和/或受保护的容器访问控制逻辑106可操作以允许i/o受保护的容器模块102和i/o设备107通过一个或多个受保护的容器页面103执行mmio。

图2是适合于实现该发明的实施例的计算机系统200的详细示例性实施例的框图。计算机系统包括处理器204、存储器225以及输入和/或输出(i/o)设备207。处理器、存储器和i/o设备与彼此耦合。正如所示的,处理器通过第一耦合机构208与存储器耦合,处理器通过第二可选耦合机构209与i/o设备耦合,并且i/o设备通过第三可选耦合机构210与存储器耦合。合适的耦合机构的示例包括但不限于一条或多条总线或其它互连,一个或多个芯片组组件,用于耦合处理器、存储器和i/o设备的其它机构,以及其各种组合。

处理器200可以是以上被描述为适合于处理器100的各种不同类型的处理器中的任何一个。在一些实施例中,处理器200可具有受保护的容器架构205,受保护的容器架构205操作以提供和/或支持受保护的容器模块230和i/o受保护的容器模块202中的一个或多个。合适的受保护的容器模块的示例包括但不限于安全包含物、隔离执行环境、隔离执行区等等。举例来说,在一些实施例中,受保护的容器架构可包括intel®softwareguardextensions(intel®sgx)、intel®sgx的扩展或未来版本、与intel®sgx具有至少一些类似特征的受保护的容器架构、或者其它受保护的容器架构。

正如所示的,受保护的容器架构205可包括一个或多个受保护的容器支持指令218。当被执行时这些指令可操作以使处理器支持与受保护的容器模块关联的各种方面。举例来说,在一些实施例中,可以可选地存在指令来创建受保护的容器模块,破坏受保护的容器模块,输入受保护的容器模块,退出受保护的容器模块,管理受保护的容器模块中的分页,对受保护的容器模块执行安全性操作,测量受保护的容器模块,以其它方式支持与受保护的容器模块关联的操作,或者其各种组合。这样的指令中的某些可以是特权级别的指令,该特权级别的指令将由特权级别的软件而不是由非特权用户级别的软件执行。其它指令可以是非特权用户级别的指令。这些指令可以是处理器(例如其至少一个核)的指令集的指令。

处理器的受保护的容器架构205还可包括受保护的容器访问控制逻辑206。受保护的容器访问控制逻辑可操作以控制对受保护的容器模块(例如模块230和/或202)的访问。在各种实施例中,受保护的容器访问控制逻辑可整个分布在处理器的各种组件上,所述各种组件诸如例如一个或多个高速缓存222、存储器管理单元(mmu)223、一个或多个转译后备缓冲器(tlb)224、架构寄存器(未示出)、一个或多个无序执行相关缓冲器(未示出)、执行单元(未示出)以及各种其它管芯上逻辑,各种其它管芯上逻辑用于访问受保护的容器存储器,存储受保护的容器存储器的内容,处理受保护的容器存储器的内容等。受保护的容器访问控制逻辑可以按线路或其它硬件、固件(例如存储在只读存储器中的指令)、软件或其组合(例如至少某种硬件,潜在地与某种固件结合,并且可选地、潜在地与某种软件结合)来实现。以下将进一步讨论受保护的容器访问控制逻辑可控制对受保护的容器模块的访问所用的不同可能方式。

存储器225可表示主系统存储器。物理上,存储器可包括一种或多种类型的物理存储器。逻辑上,存储器可被配置为常规存储器226和受保护的容器存储器201两者。在一些实施例中,受保护的容器存储器可表示被配置成实现受保护的容器存储器的整个存储器的专用或静态部分。举例来说,在一些实施例中,受保护的容器存储器可表示intel®sgx包含物页面高速缓存(epc),不过该发明的范围不限于此。在其它实施例中,整个存储器的页面或其它部分可被动态地(例如在运行时间期间)配置或转换成常规存储器或受保护的容器存储器类型页面或部分中的任一个。举例来说,在一些实施例中,受保护的容器存储器可表示其中可在常规和受保护的容器存储器类型的页面之间相互转换页面的intel®sgx灵活包含物页面高速缓存(灵活epc),不过该发明的范围不限于此。在一些实施例中,处理器可具有一个或多个范围寄存器,该范围寄存器可用于存储一个或多个范围以配置用于受保护的容器存储器的整个存储器的部分。代表性地,基本输入/输出系统(bios)可在引导过程期间在范围寄存器中存储范围。

常规存储器226和受保护的容器存储器201可具有与由处理器的受保护的容器架构205所提供的不同级别的保护或安全性。具体地,常规存储器可具有比受保护的容器存储器级别低的保护。例如,常规存储器可具有与常规用于存储器的保护级别类似的保护级别,该存储器用于存储一个或多个特权系统软件模块227(例如虚拟机监视器模块、一个或多个操作系统模块等)和一个或多个用户级别应用程序模块228(例如文字处理应用程序、电子表格、电子邮件应用程序、互联网浏览器等)。相比之下,受保护的容器存储器可具有比常规用于存储这样的特权系统软件模块、用户级别应用程序模块、用户级别数据等等的保护级别高的保护级别。可至少部分地由处理器的受保护的容器访问控制逻辑206来加强、控制或以其它方式提供更高的保护级别。

在操作期间,一个或多个受保护的容器模块230可被存储在受保护的容器存储器201中。举例来说,受保护的容器模块中的每一个可包括受保护的容器存储器的一个或多个页面。根据各种实施例,合适的受保护的容器模块的示例包括但不限于安全包含物、隔离执行环境、隔离执行区等等。举例来说,在一些实施例中,受保护的容器模块可表示intel®sgx安全包含物,不过该发明的范围不限于此。受保护的容器模块中的每一个可具有处理器的受保护的容器架构205和/或受保护的容器访问控制逻辑206可有助于保护的、甚至来自最高特权系统级别软件的代码、数据、堆栈或其它内容中的一个或多个。

在一些实施例中,受保护的容器页面元数据结构(pcpms)231可用于存储用于受保护的容器存储器201的页面的元数据。在一个方面,pcpms可被构造成具有用于受保护的容器存储器中的不同对应页面的不同条目或部分,不过构建pcpms的其它方式也是可能的。每个条目可用于存储用于受保护的容器存储器的对应页面的元数据。合适类型的元数据的示例包括但不限于安全性相关的元数据、访问控制元数据等等。合适的元数据的具体示例包括但不限于:指示页面有效还是无效的信息,指示受保护的容器页面所属的受保护的容器模块的信息,指示允许通过其访问受保护的容器页面的虚拟地址的信息,指示用于受保护的容器页面的访问许可(例如页面是否为可读、可写或可执行中的一个或多个)的信息等等,以及其各种组合,这取决于特定实现方式。替代地,可能可选地使用更少的元数据、更多的元数据或不同的元数据。另外,在其它实施例中,元数据可被可选地存储在两个或更多个不同的数据结构中。合适的pcpms的一个示例是intel®sgx包含物页面高速缓存映射(epcm),不过该发明的范围不限于此。在其它实施例中,pcpms可存储比典型地存储在epcm中更少、更多或不同类型的数据。存储在pcpms中的元数据中的至少一些可表示处理器访问控制逻辑将用于控制对受保护的容器存储器页面的访问的控制。

如图2中所示,一个或多个受保护的容器模块230、202和pcpms231可被可选地存储在受保护的容器存储器201中(例如作为其一个或多个页面)。另外或替代地,一个或多个受保护的容器模块和/或pcpms的内容可被可选地存储在处理器204的管芯上存储器中。作为一个示例,处理器的一个或多个高速缓存222可用于存储受保护的容器页面和/或pcpms。或者可使用一个或多个现有高速缓存的专用部分,或者可使用一个或多个专用高速缓存,或者可使用这样的方法的组合。作为另一个选择,除高速缓存之外处理器还可能可选地具有另一种类型的存储器,诸如例如专用管芯上存储器,以存储受保护的容器模块和/或pcpms的内容。

不同类型的安全性特征在不同实施例中可用于保护一个或多个受保护的容器模块(例如模块230和/或202)。在一些实施例中,受保护的容器架构205可向受保护的容器模块的内容(例如代码和/或数据和/或堆栈)提供机密性保护。保持机密性一般涉及防止内容的公开。在一些实施例中,受保护的容器访问控制逻辑206可操作以控制对受保护的容器存储器201的访问。在一些实施例中,受保护的容器访问控制逻辑可操作以控制对受保护的容器存储器的内容的访问,不仅当这样的内容被存储在受保护的容器存储器中时,而且当这样的内容在运行时间期间临时驻留在处理器内的管芯上时(例如存储在高速缓存、寄存器、缓冲器或其它存储器中,或者通过总线传送,或者正由各种其它结构或单元处理等)。通常,当这些内容驻留在管芯上时,这些内容可以按未加密格式,这往往将致使它们更容易被查验(如果未提供这样的管芯上访问控制的话)。

在一些实施例中,受保护的容器访问控制逻辑206可操作以仅仅允许从包含在相同的给定的受保护的容器模块内的代码对给定的受保护的容器模块的内容的授权访问,并且可操作以防止从未包含在相同的给定的受保护的容器模块内的代码(例如属于不同的受保护的容器模块的代码,属于常规存储器的代码(例如属于一个或多个特权系统软件模块227的代码)等)对给定的受保护的容器模块的内容的未授权访问。在一些实施例中,既当被存储在受保护的容器存储器中时,以及当以潜在未加密的格式临时驻留在处理器内的高速缓存、寄存器和各种其它类型的结构中时,可按这种方式保护这样的受保护的容器模块内容。在一些实施例中,即使当尝试访问受保护的容器模块的内容的代码甚至属于最高特权系统级别软件(例如os、vmm、bios等)时,也可按这种方式保护这样的内容。在一些实施例中,特权系统级别软件模块可用于管理受保护的容器存储器和/或受保护的容器模块的各种方面,例如以将页面分配给受保护的容器存储器和/或受保护的容器模块和/或管理用于受保护的容器存储器和/或受保护的容器模块的虚拟存储器,但是受保护的容器模块甚至可能对于最高特权系统级别软件模块是不透明的。也就是说,即使特权系统软件模块可管理受保护的容器存储器和/或受保护的容器模块的某些方面,它们也可能不能够从受保护的容器模块的内容读取和/或向受保护的容器模块的内容写入。有利地,即使存在高度特权的恶意软件,这也可有助于保持机密性和数据完整性。

在一些实施例中,为了进一步提供机密性保护,处理器204可对软件固有地、自主地和/或透明地将从处理器加密的受保护的容器模块内容存储到受保护的容器存储器201中。然而,相比之下,处理器可不对软件固有地、自主地和/或透明地(例如无需执行加密例程)将从处理器加密的内容存储到常规存储器226中。例如,在一些实施例中,可通过处理器的存储器加密和解密单元221自动执行从处理器到受保护的容器存储器的所有存储(例如由于用具有映射到受保护的容器存储器的地址执行将指令存储到存储器,由于执行具有受保护的容器存储器的内容的高速缓存行的高速缓存逐出等)。存储器加密和解密单元可用于在数据被存储在受保护的容器存储器中之前对软件固有地、自主地和/或透明地加密数据,这可有助于为数据提供机密性。此外,在一些实施例中,从受保护的容器存储器全部读取到处理器中(例如由于用映射到受保护的容器存储器的地址来从存储器指令执行负载)可对软件固有地、自主地和/或透明地用存储器加密和解密单元来解密。然而,对常规存储器中的数据的访问可不通过存储器加密和解密单元来执行,并且可不用这样的自动加密/解密来执行。

在一些实施例中,受保护的容器架构205可能可选地向受保护的容器模块(例如模块230和/或模块202和/或一个或多个页面203)的内容提供完整性保护。保持完整性一般涉及防止内容的篡改。完整性保护有时也被称为认证。在一些实施例中,处理器可能可选地对软件固有地、自主地和/或透明地提供对受保护的容器存储器的内容的加密完整性保护。然而,相比之下,处理器可不对软件固有地、自主地和/或透明地(例如不需要执行软件例程)提供对常规存储器的内容的这样的密码完整性保护。例如,在一些实施例中,存储器加密和解密单元221可能可选地操作,以在内容被从处理器存储到存储器之前为受保护的容器存储器的内容计算消息认证码(mac)、其它认证码或其它完整性检查数据。随后,当受保护的容器存储器的内容被接收到处理器中时,存储器加密和解密单元还可能可选地操作,以在内容被允许使用之前使用完整性检查数据来认证或检查内容的完整性。如果认证或完整性检查失败,处理器可能可选地包括防止对内容访问的逻辑。

在一些实施例中,受保护的容器架构205可能可选地包括生成和使用与受保护的容器存储器201的内容(例如模块230的一个或多个页面、模块202的一个或多个页面、一个或多个页面203等)关联的版本信息的逻辑。例如,当受保护的容器存储器的页面被从处理器存储到受保护的容器存储器时,受保护的容器存储器的页面可被可选地分配版本信息(例如唯一的版本计数器值)。随后,当受保护的容器存储器的内容被接收回到处理器中时,处理器可能可选地回顾这样的版本信息。在一些实施例中,处理器可仅仅允许加载通过版本信息(例如仅仅最后的逐出版本)指示为合法或有效的受保护的容器存储器内容。这可能可选地用于有助于防止受保护的容器代码和/或数据的重放。

为了进一步图示某些概念,已经描述了可能可选地在一些实施例中用于保护或保障受保护的容器模块的可能类型的保护的示例。然而,将理解的是:保护的类型和级别可随实现方式而变化,这取决于特定的实现方式、对安全性的需要、成本或复杂性与安全性折衷等等。本文公开的实施例可与变化类型和级别的保护的受保护的容器模块一起使用。相应地,尽管前述保护机构及其各种组合适合于实施例并且可能可选地在一些实施例中使用,但是该发明的范围不限于任何已知类型的保护机构和/或将用于确保如本文所述的i/o的保护级别。

再次参考图2,计算机系统也具有i/o设备207。在一些实施例中,i/o设备可以是dma。在一些实施例中,i/o设备可以是mmio设备。在一些实施例中,i/o设备可以是dma设备和mmio设备两者。用于i/o设备107的上述各种类型的设备中的任何一个都是合适的。

常规地,受保护的容器架构(例如,诸如受保护的容器架构205)一般不许可受保护的容器存储器201与i/o设备207之间的安全通信。结果,受保护的容器存储器和/或其一个或多个受保护的容器模块可能不能够在受保护的容器存储器与i/o设备之间交换安全i/o数据(例如将内容从受保护的容器存储器内写入到i/o设备,和/或将数据从i/o设备读取到受保护的容器存储器中),而没有这样的交换或数据潜在地容易受到查验和/或篡改。

再次参考图2,受保护的容器存储器201可具有i/o受保护的容器模块202的实施例。正如所示的,在一些实施例中,i/o受保护的容器模块可被存储在受保护的容器存储器中。正如进一步所示的,在一些实施例中,i/o受保护的容器模块可具有或至少可能能够访问被配置用于和/或以其它方式操作以用于安全i/o的一个或多个受保护的容器页面203。

在一些实施例中,处理器的受保护的容器访问控制逻辑206可操作以允许i/o受保护的容器模块和i/o设备参与安全i/o。在一些实施例中,安全i/o可以是安全dma。在一些实施例中,安全i/o可以是安全mmio。在一些实施例中,这样的安全i/o可通过一个或多个页面203、或至少通过一个或多个页面或者受保护的容器存储器201的另一部分来执行,一个或多个页面或者受保护的容器存储器201的另一部分被配置用于和/或以其它方式操作以用于i/o受保护的容器模块与i/o设备之间的这样的安全i/o。在一些实施例中,通过经由一个或多个页面203或至少经由受保护的容器存储器的一部分来执行安全i/o,处理器的受保护的容器访问控制逻辑206可操作以利用和/或扩展与保护受保护的容器存储器关联的至少一些现有保护机构来有助于保护或保障具有i/o设备的这样的i/o。

图3是具有i/o受保护的容器模块302的示例性实施例的计算机系统300的示例性实施例的框图。正如所示的,在一些实施例中,i/o受保护的容器模块可被逻辑地划分为被标记为可信管理受保护的容器模块(tmpcm)334的第一模块和被标记为设备受保护的容器模块(dpcm)336的第二模块,但这不是必需的。

dpcm336可操作以与i/o设备307通信。代表性地,在一些实施例中,dpcm可包括类似于设备驱动器模块中常见的至少一些代码或其它逻辑,以允许dpcm与i/o设备通信。然而,可在用户级别特权中而不是在往往用于实现设备驱动器的特权级别上实现dpcm。这可能有助于允许用户级别应用程序使用dpcm来执行安全i/o。在一些实施例中,dpcm可能可选地是设备类型专用的,使得它仅仅操作以与特定类型的i/o设备通信。替代地,dpcm可能可选地操作以与两个或更多个不同类型的i/o设备通信。

然而,特权模块338可能可选地包括与和i/o设备307通信关联的某些其它类型的代码或其它逻辑。例如,一般更适合于比用户级别特权高的特权级别的某些其它类型的代码或其它逻辑可被可选地分派给特权模块。例如,特权模块可包括操作以处理可在安全i/o期间发生的中断、异常等等的代码或逻辑。在一些实施例中,dpcm和特权模块可协作或一起工作以实现分布式混合用户和特权虚拟设备驱动器模块339。

在一些实施例中,tmpcm334可具有比dpcm336多的权利或特权。举例来说,在intel®sgx实现方式中,tmpcm可被可选地实现为可具有超出常规安全包含物可用特权的特殊特权的architecturaldeviceenclave(ade),但该发明的范围不限于此。在一些实施例中,tmpcm可操作以在i/o设备307与处理器的受保护的容器访问控制逻辑306之间调解或接口连接。

在一些实施例中,tmpcm334可操作以选择性地向dpcm336分配和/或撤销i/o设备307的所有权或其它使用权限。例如,在一些实施例中,tmpcm可保持dpcm到i/o设备映射结构335(诸如表或其它数据结构),dpcm到i/o设备映射结构335向dpcm分配或以其它方式映射i/o设备的所有权或其它使用权限。在其中多于一个i/o设备将用于安全i/o的实现方式中和/或当多于一个dpcm将用于安全i/o时,dpcm到i/o设备映射结构可类似地将这些其它dpcm映射到这些其它i/o设备。

在一些实施例中,被配置或以其它方式操作以用于安全i/o的一个或多个页面303可由dpcm和i/o设备用于实现安全i/o。在一些实施例中,这个或这些页面可在dpcm的线性、虚拟或其它逻辑地址空间337中。这可潜在地有助于由受保护的容器访问控制逻辑306利用某些访问权限监视和控制,但这不是必需的。

在一些实施例中,一个或多个页面303可以是为i/o和/或特定类型的i/o(例如仅仅为dma、仅仅为mmio等)保留的新页面类型。新页面类型的使用可表示epcm或指示一个或多个页面是新类型的其它受保护的容器页面元数据结构(pcpms)中的一个或多个位,以及关联的新访问控制或与页面关联的不同访问控制。以下将进一步讨论适合于这些新页面类型的合适类型的访问控制的不同示例。

在一些实施例中,只有单个dpcm可一次具有i/o设备307的所有权或其它使用权限。在一些实施例中,处理器的受保护的容器访问控制逻辑306可操作以由dpcm使用表示i/o设备的这样的所有权或其它使用权限的信息来确定是否允许通过dpcm和/或i/o设备中任一个的i/o尝试。也就是说,使用安全i/o的能力可能以一个或多个如下的检查为条件:dpcm有权限与i/o设备一起执行安全i/o和/或i/o设备有权限与dpcm一起执行安全i/o。

正如所示的,在一些实施例中,由i/o设备对被配置或以其它方式操作以用于安全i/o的一个或多个页面303的尝试访问可包括或使用关联的设备标识符(例如securityattributesofinitiator(sai))340。类似地,在一些实施例中,由dpcm对一个或多个页面303的尝试访问可包括或使用关联的dpcm标识符(例如安全包含物标识符)341。替代地,可能可选地代替使用足以允许处理器的受保护的容器访问控制逻辑确定是否应当允许尝试访问的其它形式的信息。

如上所述,在一些实施例中,安全i/o可包括安全dma。dma是通常用于从处理器(例如cpu)向存储器(例如主系统存储器)卸载数据传送和/或从存储器(例如主系统存储器)卸载数据传送的方法。在没有dma的情况下,处理器一般将需要更多地参与执行这样的数据传送。例如,在没有dma的情况下,处理器可通过执行指令来使用编程的输入/输出,以便实现这样的数据传送。这往往会在整个数据传送中占用处理器,从而使其一般不太可用于执行其它类型的工作。

然而,利用dma,处理器可向dma设备(例如dma控制器、dma引擎、具有dma控制器或引擎的设备等)卸载这样的数据传送。最初,处理器可编程dma设备来执行数据传送。举例来说,处理器可编程具有dma能力的设备的一个或多个寄存器(例如使用mmio),以便指定将用于传送的存储器地址、待传送的数据量(例如传送的字数)、传送的方向(例如将执行读取还是写入)以及可选地关于数据传送的其它细节(例如待使用的端口、突发中传送多少数据等)。

编程的dma设备然后可直接访问存储器并执行读取和/或写入操作来执行编程的数据传送,而基本没有处理器的进一步参与。数据传送可在存储器与dma设备之间和/或从一个存储器位置到另一个存储器位置发生。典型地,一旦数据传送已被编程和初始化,处理器就不需要执行与执行数据传送关联的附加指令。这往往可释放处理器并允许它在数据传送发生的同时执行其它工作。一旦dma操作已被完成,dma设备就可向处理器提供中断或以其它方式向处理器发送dma传送已被完成的信号。

在一些实施例中,处理器的受保护的容器架构和/或处理器的受保护的容器访问控制逻辑可允许安全dma,在安全dma中,在dpcm与dma设备之间执行安全或受保护的双向通信。最初,可执行其中dpcm和dma设备被映射到彼此并且被配置成允许执行安全dma的安全dma配置阶段,然后可执行其中待执行的特定安全dma操作被指定的dma规范阶段,并且最终可执行其中指定的安全dma操作被执行的安全dma实现阶段。

图4是安全dma配置的方法444的详细示例性实施例的流程框图,其中dpcm和dma设备被映射到彼此并且被配置成允许执行安全dma。图5是计算机系统500的详细示例性实施例的框图,并且示出安全dma配置阶段,其中给定的dpcm536和给定的dma设备507被映射到彼此并且被配置成允许执行安全dma。为了简化描述,将结合计算机系统500描述方法444。然而,将理解的是:方法444可能可选地由不同的计算机系统代替执行和/或计算机系统500可能可选地代替执行不同的方法。

参考图4,在块445处,tmpcm可枚举或以其它方式标识包括计算机系统中给定的dma设备的一个或多个dma设备,并且可包括设备映射表中的标识的dma设备。如图5中所示,tmpcm534可标识555给定的dma设备507,并且访问556设备映射表535以将其更新到列表或以其它方式包括给定的dma设备。

标识dma设备的不同方式是可能的。在一些实施例中,标识的dma设备可以是可信dma设备,并且tpmcm可使用一组平台配置信息551。在一个方面,平台配置信息可表示已被平台制造商或其它可信实体可能地认证或提供的关于计算机系统的可信平台配置信息,并且可潜在地在使用之后通过网络更新。举例来说,平台配置信息可部分地描述计算机系统的哪些设备(例如潜在地哪些类型的设备以及来自哪些供应商)被认为是可信的并且支持可信dma。

虽然为了方便起见,设备映射表被称为“表”,但是该术语在本文中被广泛地用于指代可用于分配或以其它方式将给定的dma设备映射到给定的dpcm的各种不同类型的表、链接列表、元组或其它数据结构中的任何一个。在一些实施例中,标识的dma设备中的每一个可具有对应的设备标识符,并且可由对应的设备标识符来标识。合适的设备标识符的示例包括但不限于securityattributesofinitiator(sai)。当设备尝试执行存储器访问、做出请求等时,sai或其它设备标识符可由处理器的硬件或其它逻辑(例如处理器104、204,具有逻辑306的处理器)用于标识关联的i/o设备(例如在dma设备的情况下)。sai的一个可能的优点是它们的代(generation)一般倾向于难以伪造,这可有助于使得对于非可信设备难以伪造它们的代。如图5中所示,tmpcm可在设备映射表535中存储对应于标识的给定的dma设备507的sai#1(或其它类型的设备标识符)。

再次参考图4,在块446处,给定的dpcm可与tmpcm一起请求标识的dma设备中给定的一个的所有权或其它分配。例如,dpcm可向tmpcm发送消息或以其它方式向tmpcm发送关于该请求的信号。现在参考图5,给定的dpcm可向tmpcm534发送消息、信号或其它请求557,以请求将给定的dma设备507映射到给定的dpcm536。

再次参考图4,在块447处,tmpcm可将给定的dma设备分配或以其它方式映射到设备映射表中的给定的dpcm。如图5中所示,tmpcm534可将给定的dma设备507映射558到设备映射表535中给定的dpcm536。例如,tmpcm可在设备映射表535的条目中存储对应于给定的dma的设备受保护的容器标识符(dpcmid#1),该条目具有对应于给定的dma设备的sai#1或其它设备标识符。在intel®sgx实现方式中,合适的dpcid的一个示例是包含物标识符(eid),但该发明的范围不限于此。该映射将给定的dpcm有效地映射到给定的dma设备。

再次参考图4,在块448处,tmpcm可向i/o存储器管理单元(mmu)提供给定的dma设备到给定的dpcm的分配或映射的指示。如图5中所示,tmpcm534可向i/ommu550发信号或提供559给定的dma设备507到给定的dpcm536的映射的指示。举例来说,tmpcm和/或i/ommu可更新属于或至少对于i/ommu可访问的i/ommu映射表560的条目,该条目具有给定的dma设备的sai#1或其它标识符以包括给定的dpcm的dpcid#1或其它dpcm标识符,以便指示分配或映射。这可有效地向i/ommu通知给定的dpcm对应于给定的dma设备并且被允许用给定的dma设备执行安全dma。在一些实施例中,由给定的dma设备进行的所有存储器访问可作为虚拟到物理地址转译机构的一部分而由i/ommu处理。这可允许i/ommu知道安全dma,以便它可选择性地允许正确配置的成对的dma设备和dpcm执行安全dma,而不允许其它dma设备和受保护的容器执行安全dma和/或不允许其它设备dma设备被如此正确地配置成访问受保护的容器存储器。在一些实施例中,i/ommu可在处理器(例如处理器104和/或204)或者与处理器相同的至少一个芯片或管芯内,以有助于确保它是可信的。用于实施例的合适的i/ommu的示例包括但不限于:诸如通常用于对外围设备(例如南桥附接的设备)访问控制之类的通用i/ommu,以及诸如通常用于对图形设备访问控制之类的gt-mmu。

再次参考图4,在块449处,受保护的容器存储器中的一个或多个页面被配置成允许用于安全dma,该一个或多个页面可选地在给定的dpcm的逻辑地址空间(例如线性、虚拟或其它逻辑地址空间)内,或者至少可由给定的dpcm访问,并且转译成给定的物理地址(例如客户物理地址)。由于一个或多个受保护的容器页面在给定的dpcm的逻辑地址空间内和/或至少可由给定的dpcm访问,所以用于其它受保护的容器存储器访问的受保护的容器存储器访问控制策略和逻辑可被潜在地利用以控制对用于安全dma的一个或多个受保护的容器页面的访问(例如,以确保尝试访问是在受保护的容器模式下进行的,来自正确的dpcm,具有正确的访问类型许可等)。

在一些实施例中,一个或多个受保护的容器页面可被可选地排他性地分配给给定的dpcm,并因此可能可选地用于将给定的dma设备排他性地分配或映射到给定的dpcm。替代地,在其它实施例中可能可选地不强制执行排他性的映射标准。相反,一些i/o设备可被映射到不同的设备受保护的容器模块。例如,通用串行总线(usb)控制器可具有可被映射到不同的dpcm的用于mmio或dma中任一个的不同功能。作为另一个示例,在某些条件下,基于诸如例如用于网络控制器的vlan之类的附加标识符,i/o设备的给定功能可被映射到不同的dpcm。如图5中所示,dpcm536可至少部分地配置用于安全dma的一个或多个受保护的容器页面503。

一个或多个受保护的容器页面在不同的实施例中可以按不同的方式被配置用于安全dma。在一些实施例中,给定的dpcm可请求特权系统级别软件模块将受保护的容器存储器页面分配给可选地在给定的dpcm的逻辑地址空间中或以其它方式可由给定的dpcm访问的给定逻辑地址(例如给定的线性地址)。例如,特权系统级别软件模块一般可负责管理存储器虚拟化。特权系统级别软件模块可为给定的逻辑地址分配和映射受保护的容器存储器页面,并且可向dpcm返回对应的物理地址(例如客户物理地址(gpa))。如将在以下(例如结合图7)进一步解释的,gpa可由dpcm用于配置dma通信。物理地址(例如gpa)可部分地用于代替线性、虚拟或其它逻辑地址,因为dma设备(例如给定的dma设备)可能未充分地知道存储器的虚拟化以容易使用逻辑地址。替代地,如果给定的dpcm可访问并且具有适当的物理地址的未使用的页面已经可用,其可被潜在地改变用途以用于安全dma而不需要让特权系统级别软件模块分配新页面。其它方法也是可设想的,并且将对本领域技术人员显而易见,并且受益于本公开。

在一些实施例中,在配置用于安全dma的一个或多个受保护的容器页面之前,一个或多个安全性检查或确定可被可选地执行。例如,在一个实施例中,可做出检查或确定:将被配置用于安全dma的一个或多个受保护的容器页面是否解析成给定的dpcm可访问的一个或多个受保护的容器存储器页面。替代地,在配置用于安全dma的一个或多个受保护的容器页面之前,一个或多个附加和/或不同的安全性检查或确定可被可选地执行。如果任何这样的检查或确定失败,则一个或多个受保护的容器页面可能未被配置用于安全dma。相反地,如果这样的检查或确定成功,则一个或多个受保护的容器页面可被配置用于安全dma。

一个或多个受保护的容器页面在不同的实施例中可按不同方式被配置用于安全dma。在一些实施例中,为了配置用于安全dma的一个或多个受保护的容器页面,一个或多个受保护的容器页面的类型可变成安全dma被允许用于的新的专用类型的页面。在一个方面,这种新类型的页面可能可选地特别专门用于安全dma。在一些实施例中,受保护的容器存储器页面的类型可通过改变用于一个或多个受保护的容器页面的元数据,诸如例如通过改变pcpms或其它数据结构中对应的条目的页面类型字段来改变。例如,在intel®sgx实现方式中,这可包括改变epcm的epcm.pt字段,以具有分配给具有安全dma能力的受保护的容器存储器页面类型的新值。与常规类型的受保护的容器存储器页面对比,这种新类型的页面可具有许可安全dma的访问控制。例如,这种新类型的页面可能可从正确映射或分配的dma设备访问dma。举例来说,处理器的受保护的容器访问控制逻辑和/或i/ommu可许可正确映射或分配的dma设备访问这种新类型的页面(例如从这种新类型的页面读取和/或向这种新类型的页面写入)。相反,dma设备可能未由处理器的受保护的容器访问控制逻辑和/或i/ommu许可以访问受保护的容器存储器中的其它类型的页面。

在一些实施例中,为了配置用于安全dma的一个或多个受保护的容器页面,被允许用于访问用于安全dma的一个或多个受保护的容器页面的物理地址(例如客户物理地址)可被配置。物理地址(例如客户物理地址)可能先前已由特权系统级别软件模块确定用于一个或多个受保护的容器页面。在一些实施例中,允许的物理地址可通过改变用于一个或多个受保护的容器页面的元数据,诸如例如通过改变pcpms或其它数据结构中对应条目的允许的物理地址访问字段来配置。

在一些实施例中,为了配置用于安全dma的一个或多个受保护的容器页面,一个或多个允许的访问类型可被可选地配置用于至少一个受保护的容器存储器页面。可被或可不被配置用于至少一个受保护的容器存储器页面的不同访问类型的示例包括但不限于读取(r)允许的访问类型、写入(w)允许的访问类型以及读取和写入(rw)允许的访问类型。配置这样的访问类型是可选的,不是必需的。在其它实施例中,默认情况下仅仅某些类型的访问类型可被可选地允许,或者默认情况下所有访问类型可被可选地允许。

再次参考图5,如561处所示,通过改变用于对应的pcpms条目531中的每个页面的元数据,给定的dpcm536可配置或至少启动配置用于安全dma的一个或多个受保护的容器页面503。例如,这可包括配置页面类型字段552以具有允许安全dma的页面类型,配置允许的物理地址字段553以具有允许通过其访问页面的物理地址(例如客户物理地址),以及配置一个或多个允许的访问类型字段以允许一个或多个不同类型的访问(例如读取,写入,读取和写入等)。替代地,页面不需要严格地具有将被存储到页面类型字段的新类型,而是现有类型的页面和/或用于其它目的的页面可被可选地限定为允许用于安全dma的页面。例如,存储在页面类型字段中的相同类型的页面既可用于允许用于安全dma的页面,又可用于不允许用于安全dma的页面,并且可能存在在某处存储的其它元数据(例如pcpms条目中的另一个“限定”字段)来限定或指示安全dma被允许用于该页面,而页面不一定必须具有允许用于安全dma或特别专用于允许用于安全dma的页面类型。随后可在执行安全dma之前检查允许的物理地址(例如,如结合图8-9所述)。替代地,代替仅仅在pcpms中完成这样的配置,两个或更多个结构可用于存储用于一个或多个受保护的容器页面503的这个和/或附加和/或不同的元数据或配置信息。

图6是操作以执行dma受保护的容器页面配置指令619的实施例的处理器604的实施例的框图。在一些实施例中,处理器可以是图1的处理器104和/或图2的处理器204,或者可被包括在图1的处理器104和/或图2的处理器204中。本文所述的用于处理器104和204的组件、特征和具体的可选细节也可选地应用于处理器604。替代地,处理器604可被可选地包括与处理器104和204类似或不同的处理器。此外,处理器104和204可包括与处理器604类似或不同的处理器。

处理器604包括解码单元664,解码单元664可接收和解码dma受保护的容器页面配置指令619。在一些实施例中,dma受保护的容器页面配置指令可指定或以其它方式指示对将被配置用于安全dma的关联的受保护的容器页面的受保护的容器访问,可指定或以其它方式指示用于将被配置用于安全dma的关联的受保护的容器页面的允许的物理访问地址653(例如客户物理地址),并且可指定或以其它方式指示一个或多个允许的访问类型或对将被配置用于安全dma的关联的受保护的容器页面的许可。例如,指令可具有提供这样的信息和/或指定或指示存储这样的信息的寄存器的字段。在一些实施例中,指示的受保护的容器访问可以是正在从受保护的容器模块对允许的地址(例如允许用于受保护的容器模块的线性或其它逻辑地址)进行访问的信号或指示,并且其可用于帮助确保:仅仅从受保护的容器内完成配置,并且受保护的容器仅仅正在配置允许用于受保护的容器的页面。作为一个具体示例,指示的受保护的容器访问在intel®sgx实现方式中可以是包含物访问(ea)指示,但该发明的范围不限于此。dma受保护的容器页面配置指令可表示处理器的指令集的宏指令、机器代码指令或汇编语言指令。解码单元可输出一个或多个相对较低级别的指令或控制信号(例如一个或多个微指令、微操作、微代码入口点、解码的指令或控制信号等),其反映、表示和/或源自接收的相对较高级别的dma受保护的容器页面配置指令。在一些实施例中,解码单元可包括接收指令的一个或多个输入结构(例如一个或多个端口、一个或多个互连、接口)、与其耦合以识别和解码接收的指令的指令识别和解码逻辑、以及与其耦合以输出一个或多个较低级别的指令或者一个或多个控制信号的一个或多个输出结构(例如一个或多个端口、一个或多个互连、接口)。解码单元可使用各种不同的机构来实现,所述机构包括但不限于微代码只读存储器(rom)、查找表、硬件实现方式、可编程逻辑阵列(pla)以及适合于实现解码单元的其它机构。

执行单元665与解码单元664耦合。虽然示出单个执行单元,但将理解的是:该单个执行单元可表示分布在整个共同表示执行指令的执行单元的一个或多个单元中的一个或多个执行单元和/或逻辑。执行单元可接收表示和/或源自dma受保护的容器页面配置指令的一个或多个解码的或以其它方式转换的指令或控制信号。执行单元响应于和/或由于正被解码(例如响应于一个或多个指令或者从该指令解码的控制信号)以执行与该指令关联的一个或多个操作的dma受保护的容器页面配置指令而操作。

正如所示的,在一些实施例中,执行单元可包括可选的安全性检查逻辑667。安全性检查逻辑和/或执行单元可执行一个或多个安全性检查,以便确定是否允许执行指令的一个或多个其它后续操作来配置用于安全dma的关联的受保护的容器页面。例如,在一个实施例中,可做出检查或确定:指定的或以其它方式指示的受保护的容器访问是否解析为正在执行指令的dpcm可访问的受保护的容器页面。替代地,在配置用于安全dma的一个或多个受保护的容器页面之前,一个或多个附加和/或不同的安全性检查或确定可被可选地执行。如果任何这样的检查或确定失败,则关联的受保护的容器页面可能未被配置用于安全dma。例如,执行单元可能可选地发送错误669信号,并且可停止执行该指令。

相反地,如果这样的检查或确定都成功,则执行单元665可继续前进以配置用于安全dma的关联的受保护的容器页面。正如所示的,执行单元可包括受保护的容器页面配置逻辑668。在一些实施例中,受保护的容器页面配置逻辑和/或执行单元可访问一个或多个结构631,诸如例如pcpms,并且配置其中的一组或多组信息,以便配置用于安全dma的关联的受保护的容器页面。例如,在一些实施例中,页面的类型652可被配置成被配置用于安全dma的页面的新的专用类型。作为另一个示例,在一些实施例中,允许的物理访问地址(例如先前由特权系统级别软件确定的客户物理地址)可被配置用于该页面。作为又一个示例,在一些实施例中,一个或多个允许的访问类型654(例如读取,写入,读取和写入等)用于关联的受保护的容器页面。在其它实施例中,附加配置、不同配置、或者附加配置和不同配置两者的组合可被可选地执行。

执行单元和/或处理器可包括响应于和/或由于指令(例如响应于一个或多个指令或者从该指令解码的控制信号)而操作以执行这样的操作的具体或特定逻辑(例如晶体管、集成线路或潜在地与固件(例如存储在非易失性存储器中的指令)和/或软件组合的其它硬件)。在一些实施例中,执行单元可包括接收源数据的一个或多个输入结构(例如一个或多个端口、一个或多个互连、接口)、与其耦合以接收和处理源数据的线路或逻辑、以及与其耦合以实现这样的操作的一个或多个输出结构(例如一个或多个端口、一个或多个互连、接口)。

图7是计算机系统700的详细示例性实施例的框图,并且示出安全dma规范阶段,其中给定的dpcm736指定将由给定的dma设备707执行的安全dma操作。如771处所示,dpcm736可访问并配置一个或多个受保护的容器页面703中的dma缓冲器772,该受保护的容器页面703被配置或以其它方式操作以用于安全dma。在一些实施例中,例如基于最初用于配置一个或多个受保护的容器页面703的物理地址,物理地址(例如客户物理地址)可用作指针。

如773处所示,dpcm736可访问和配置一个或多个受保护的容器页面770,该一个或多个受保护的容器页面770被配置用于或以其它方式操作以用于安全mmio,以编程用于给定的dma设备707的设备寄存器来指定和启动dma操作。在一些实施例中,如本文其它地方公开的安全mmio可用于编程这些设备寄存器。在一些实施例中,例如基于最初用于配置一个或多个受保护的容器页面703的物理地址,物理地址(例如客户物理地址)可用作指针。替代地,除了安全mmio之外的方法可被可选地用于指定和启动dma操作。

图8是计算机系统800的详细示例性实施例的框图,其示出给定的dma设备807尝试dma访问875并且i/ommu850操作以执行安全性检查来确定是否允许尝试的dma访问。正如所示的,给定的dma设备尝试dma访问875。在一些实施例中,给定的dma设备可用物理地址和设备标识符尝试dma访问。在一些实施例中,物理地址可以是先前由dpcm编程为被配置或操作以用于dma的一个或多个页面的客户物理地址(例如,如以上结合图7所述)。在一些实施例中,设备标识符可以是sai,但该发明的范围不限于此。在一些实施例中,dma设备可具有安全sai和不安全sai两者,并且当执行安全dma时可使用安全sai来执行访问。

如进一步所示的,尝试的dma访问可通过i/ommu850来进行。i/ommu可用于由设备的存储器访问。i/ommu可操作以执行一个或多个安全性检查来确定是否允许尝试的dma访问。以下进一步描述可在一些实施例中可选地执行的安全性检查的类型的几个代表性示例,但是将理解:这些安全性检查的子集、这些安全性检查的超集以及其它安全性检查完全可被可选地代替执行。

如876处所示,i/ommu850可确定尝试的dma访问的物理地址是否解析为受保护的容器存储器和/或被配置用于或以其它方式操作以用于安全dma的一个或多个受保护的容器页面803。举例来说,这可包括:如果需要,将尝试的访问的物理地址(例如客户物理地址)转译成主机物理地址,并且检查以查看主机物理地址是否解析为受保护的容器存储器和/或解析为一个或多个受保护的容器页面803。如果物理地址没有解析为受保护的容器存储器和/或解析为一个或多个受保护的容器页面803,i/ommu可发信号或以其它方式引起dma终止事件878,诸如错误。这可表示正在尝试安全dma(例如,如由安全sai所示)但是未正在进行对受保护的容器存储器的尝试的访问的不一致性。

如877处所示,i/ommu可尝试用与尝试的dma访问关联的设备标识符查找i/ommu映射表860中的dpcm标识符。例如,如果设备标识符是sai,i/ommu可尝试在将sai映射到对应的分配或映射的dpcm标识符的表中查找条目。例如,正如所示的,表中的条目可包括对应于给定的dma设备的sai#1以及对应于给定的dpcm模块的dpcmid#1,给定的dpcm模块被配置成用给定的dma设备执行安全dma。在这样的情况下,i/ommu可从表中检索对应的映射或分配的dpcm标识符(例如dpcmid#1)。这可部分地用于证实给定的dma设备被映射到给定的dpcm。替代地,如果sai或其它设备标识符未被有效映射到表中的dpcm标识符,则i/ommu可操作以发信号或以其它方式引起错误或其它dma终止事件878。

如在879处所示,i/ommu可访问与尝试的访问关联的元数据。例如,在一些实施例中,i/ommu可访问对应于dma访问尝试访问的页面的pcpms条目831。举例来说,页面可表示用于主机物理地址的条目。在一些实施例中,i/ommu可操作以访问页面类型字段852来确定指示类型的页面是否被配置用于安全dma。如果否,i/ommu可操作以引起dma终止事件878。在一些实施例中,i/ommu可操作以访问允许的物理地址字段853来确定指示的允许的物理地址是否与尝试的dma访问的物理地址匹配和/或兼容。这可部分地用于确定dma设备是否正在尝试访问被建立或允许用于安全dma的存储器。如果否,i/ommu可操作以引起dma终止事件878。在一些实施例中,i/ommu可操作以访问允许的访问类型字段854来确定一个或多个指示的允许的访问类型是否与尝试的dma访问的访问类型匹配或兼容。如果否,i/ommu可操作以引起dma终止事件878。在一些实施例中,i/ommu可操作以访问dpcmid字段899来确定dpcmid是否匹配从i/ommu映射表获得的dpcmid。例如,在intel®sgx实现方式中,可通过使用epcm.sid从secs获得包含物id(eid),并且可执行以下检查:从i/ommu映射表获得的eid是否匹配来自secs.eid字段的eid。如果未检测到匹配,i/ommu可操作以引起dma终止事件878。

这些仅仅是几个说明性的示例。在其它实施例中,i/ommu可执行更少、更多或不同的安全性检查。如果对于特定实现方式所期望的所有实现的安全性检查都成功,则如880处所示,i/ommu可操作以允许执行尝试的dma访问。否则,如果任何实现的安全性检查失败,i/ommu可操作以引起dma终止事件878。

图9是安全dma的方法982的详细示例性实施例的流程框图,其中dma设备尝试dma访问并且许多安全性检查用于确定是否允许执行尝试的dma访问。在块983处,dma设备使用物理地址和设备标识符来尝试dma访问。在一些实施例中,物理地址可以是客户物理地址,但该发明的范围不限于此。在一些实施例中,设备标识符可以是sai,但该发明的范围不限于此。

在块984处,确定访问是否解析成受保护的容器存储器和/或被配置用于安全dma的其一个或多个页面。如果是这样,方法继续到块985。如果否,方法前进到块991。

在块985处,确定dpcm是否被映射到尝试在i/ommu映射表中访问的dma设备。如果是这样,方法继续到块986。如果否,方法前进到块991。在块986处,可从i/ommu映射表中检索对应于设备标识符的dpcm标识符。作为一个示例,在intel®sgx实现方式中,dpcm标识符可以是安全包含物id,但该发明的范围不限于此。

在块987处,确定对应于访问的页面类型是否被配置用于安全dma。例如,这可包括:确定页面类型是否是被配置用于安全dma的页面的特定的新的专用类型。代表性地,这可包括:查找尝试正试着在epcm、其它pcpms或其它元数据结构中访问的页面的类型。如果是这样,方法继续到块988。如果否,方法前进到块991。

在块988处,确定与尝试的访问关联的物理地址(例如与读取或写入操作关联的客户物理地址)是否与用于尝试正在试着访问的页面的允许的物理访问地址匹配或至少兼容。代表性地,所述允许的物理访问地址可被存储在epcm、其它pcpms或其它元数据结构中。如果是这样,方法继续到块989。如果否,方法前进到块991。

在块989处,确定诸如读取或写入之类的尝试的访问的访问类型是否与用于尝试正在试着访问的页面的一个或多个允许的访问类型匹配或至少兼容。代表性地,一个或多个允许的访问类型可被存储在epcm、其它pcpms或其它元数据结构中。如果是这样,方法继续到块990。如果否,方法前进到块991。

在块990处,可允许尝试的dma访问。举例来说,在安全dma中,受保护的容器存储器的一部分(例如允许安全dma的新页面)内的访问数据可由dma设备访问。有利地,这可用于在dpcm与各种不同类型的dma设备之间提供安全的、低等待时间的、一般高带宽的双向通信数据信道。作为一个具体的说明性示例,dma设备可以是usb连接的设备,并且安全dma可用于将来自usb连接的设备的数据直接存储到受保护的容器存储器中新类型的安全dma许可页面。以这种方式,可将数据从usb连接的设备存储保护到可由dpcm访问的受保护的容器存储器中的页面中,这可防止该页面由系统中的其它实体访问,其它实体甚至包括最高权限系统软件和不同的受保护的容器模块。相反,在块991处,如果任何的访问检查失败,尝试的dma访问可不被允许和/或可被阻止。

在一些实施例中,处理器的受保护的容器架构和/或处理器的受保护的容器访问控制逻辑可允许安全mmio,其中处理器可使用安全mmio来向mmio设备传送信息(例如控制信息、配置信息等)。例如,安全mmio可用于以其它软件(例如其它受保护的容器、特权软件等)不能够访问相同mmio空间的方式向映射到mmio空间的mmio设备的控制寄存器写入。最初,可执行安全mmio配置阶段,其中可将给定的dpcm和给定的mmio设备映射到彼此并且配置安全mmio。然后,可执行mmio实现阶段,其中给定的dpcm可执行安全mmio以向给定的mmio设备传送信息(例如控制信息、配置信息等)。

图10是将给定的dpcm和给定的mmio设备映射到彼此并且配置安全mmio的方法1092的详细示例性实施例的流程框图。图11是计算机系统1100的详细示例性实施例的框图,并且示出安全mmio配置阶段,其中将给定的dpcm1136和给定的mmio设备1107映射到彼此并且配置安全mmio。为了简化描述,将结合计算机系统1100描述方法1092。然而,将理解的是:方法1092可被可选地由不同的计算机系统代替执行和/或计算机系统1100可能可选地代替执行不同的方法。

参考图10,在块1093处,tmpcm可枚举或以其它方式标识包括计算机系统中给定的mmio设备的一个或多个mmio设备,并且可包括设备映射表中的标识的mmio设备。在一些实施例中,tmpcm还可标识mmio设备的资源,诸如例如它们各自的mmio范围。如图11中所示,tmpcm1134可标识1155给定的mmio设备1107,并访问1156设备映射表1135以使其包括给定的mmio设备。在一些实施例中,tmpcm可使用平台配置信息1151来(例如采用与以上所述的用于dma设备的方式类似的方式)标识mmio设备(例如结合图4的块445)。

再次参考图10,在块1094处,给定的dpcm可采用tmpcm请求标识的mmio设备中给定的一个的所有权或其它分配。例如,dpcm可向tmpcm发送消息或以其它方式向tmpcm发送关于该请求的信号。现在参考图11,给定的dpcm可向tmpcm1134发送消息、信号或其它请求1157,以请求将给定的mmio设备1107映射到给定的dpcm1136。

再次参考图10,在块1095处,tmpcm可将给定的mmio设备分配或以其它方式映射到设备映射表中的给定的dpcm。如本文其它地方讨论的,该映射可以是但无需是排他性的映射。例如,一些i/o设备可被映射到不同的设备受保护的容器模块。例如,通用串行总线(usb)控制器可具有不同的功能,该功能可被映射到不同的dpcm以用于mmio或dma中的任一个。作为另一个示例,在某些条件下,基于附加标识符,诸如例如用于网络控制器的vlan,可将i/o设备的给定功能映射到不同的dpcm。如图11中所示,tmpcm1134可将给定的mmio设备1107映射1158到设备映射表1135中的给定的dpcm1136。例如,tmpcm可在对应于给定的mmio设备的设备映射表1135的条目中存储对应于给定的dpcm的设备受保护的容器标识符(dpcmid#1)。在intel®sgx实现方式中,合适的dpcid的一个示例是包含物标识符(eid),但该发明的范围不限于此。在该示例中,给定的mmio设备具有id#1的设备标识符(id)和从“a到b”的mmio范围。这在给定的mmio设备与给定的dpcm之间创建关联或映射。

再次参考图10,在块1096处,tmpcm可向dpcm提供给定的映射的mmio设备的设备标识符(id)和给定的映射的mmio设备的mmio范围。举例来说,可在从tmpcm到dpcm的消息中提供该信息,或者该信息可用在用于计算机系统的平台配置信息中。如图11中所示,tmpcm1134可向给定的dpcm1136发送消息1198以提供给定的映射的mmio设备1107(例如id#1)的设备标识符和给定的映射的mmio设备的mmio范围(例如从a到b)。

映射的mmio设备的不同类型的设备标识符在不同的实施例中是可能的。在一些实施例中,每个mmio设备可在设备映射表中具有唯一的行号、条目或其它索引。在一些实施例中,这样的索引可用作用于mmio设备的设备标识符。例如,给定的mmio设备的id#1可以是存储用于给定的mmio设备的从“a到b”的mmio范围的行号。在其它实施例中,每个mmio设备可具有启动程序(initiator)的安全属性(sai)作为其设备id。替代地,其它大的和/或唯一的号码可被可选地用作设备标识符。

再次参考图10,在块1097处,可选地在给定的dpcm的逻辑地址空间(例如线性、虚拟或其它逻辑地址空间)内或者至少可由给定的dpcm访问的受保护的容器存储器中的一个或多个页面被配置成允许用于具有标识的给定的mmio设备及其mmio范围的安全mmio。如图11中所示,给定的dpcm1136可至少部分地配置可由给定的dpcm访问的一个或多个受保护的容器存储器页面1103,以允许用于具有标识的给定的mmio设备(例如id#1)及其mmio范围(例如从a到b)的安全mmio。

一个或多个受保护的容器页面在不同的实施例中可按不同的方式来配置以用于安全mmio。在一些实施例中,如果受保护的容器页面已经不可用于被配置用于安全mmio,dpcm可分配新的受保护的容器页面。在一些实施例中,在配置用于安全mmio的一个或多个受保护的容器页面之前,可能可选地执行一个或多个安全性检查或确定。例如,在一些实施例中,可能可选地检查或确定给定的mmio设备的设备标识符是否被正确地映射到给定的dpcm。例如,这可包括与tmpcm通信以验证给定的dpcm和给定的mmio设备的映射。举例来说,给定的dpcm可向tmpcm提供先前从tmpcm获得的mmio设备标识符(例如,如对块1096所讨论的)作为查询,并且为了配置用于安全mmio的一个或多个页面,可检查tmpcm返回dpcmid,该dpcmid匹配正在尝试配置用于安全mmio的一个或多个页面的dpcmid。

作为另一个示例,在一些实施例中,可能可选地检查或确定mmio偏移是否是页面对齐的(例如4千字节页面对齐,或者与其它实现的页面大小的边界对齐),因为一般可在页面大小的部分中管理存储器。作为进一步的示例,在一些实施例中,可能可选地检查或确定请求的偏移和偏移加上页面大小(例如4千字节或其它实现的页面大小)是否在mmio范围内。这样的检查或确定可被可选地用于有助于确保访问不能够对可被潜在地映射到不同的dpcm的不同的mmio范围进行访问。替代地,在配置用于安全mmio的一个或多个受保护的容器页面之前,可能可选地执行一个或多个附加和/或不同的安全性检查或确定。如果任何这样实现的检查或确定失败,则一个或多个受保护的容器页面可不被配置用于安全mmio。相反,如果这样的检查或确定成功,则一个或多个受保护的容器页面可被配置用于安全mmio。

参考图11,假定任何这样的可选检查或确定成功,如1161处所示,给定的dpcm1136可配置用于安全mmio的一个或多个受保护的容器存储器页面1103。在不同的实施例中,一个或多个受保护的容器页面可按不同的方式被配置用于安全mmio。在一些实施例中,这可包括改变pcpms中的元数据。例如,对于被配置用于安全mmio的每个页面,可在对应的pcpms条目1131中改变元数据1152、1154、1199。替代地,代替元数据在pcpms或另一单个结构中,两个或更多个结构可用于存储用于一个或多个受保护的容器页面1103的这个和/或附加和/或不同的元数据。

正如所示的,在一些实施例中,给定的dpcm1136可配置页面类型字段1152以具有允许用于安全mmio的页面类型。在一些实施例中,可能存在安全mmio被允许用于的新的专用类型的页面。例如,在intel®sgx实现方式中,这可包括改变epcm的epcm.pt字段以将新值分配给允许用于安全mmio的页面的类型。相比之下,其它类型的受保护的容器存储器页面可能不允许用于安全mmio。

正如所示的,在一些实施例中,给定的dpcm1136可配置mmio范围字段1199,以便配置将用于安全mmio的允许的mmio范围。例如,在intel®sgx实现方式中,这可包括改变epcm的新epcm.ioaddr字段,以指定将用于安全mmio的允许的mmio范围,例如基准加上偏移。

正如所示的,在一些实施例中,给定的dpcm1136可能可选地配置一个或多个允许的访问类型字段1154,以便配置被允许用于将用于安全mmio的一个或多个受保护的容器页面的一个或多个访问类型。例如,在intel®sgx实现方式中,这可包括改变epcm的epcm.rw字段以指定允许的访问类型许可。可被或可不配置用于至少一个受保护的容器存储器页面的不同访问类型的示例包括但不限于写入(w)允许的访问类型以及读取和写入(rw)允许的访问类型。配置这样的访问类型是可选的,不是必需的。在其它实施例中,默认情况下仅仅可能可选地允许某些类型的访问类型,或者默认情况下可能可选地允许所有访问类型。

在一些实施例中,新的mmio保护的容器页面配置指令可被可选地包括在处理器的指令集中,以允许受保护的容器页面被配置用于安全mmio。在一些实施例中,该指令可以是用户级别指令,并且dpcm可使用该指令在其线性或其它逻辑地址空间中配置页面(或者该页面至少可由dpcm访问),以用于安全mmio。在一些实施例中,mmio保护的容器页面配置指令可指定或以其它方式指示受保护的容器存储器页面的线性或其它逻辑地址,可指定或以其它方式指示mmio设备标识符,并且可指定或以其它方式指示mmio地址信息(例如mmio空间偏移)。在一些实施例中,指令可能可选地指定或以其它方式指示一个或多个允许的访问类型,诸如例如读取、写入或者读取和写入。例如,指令可具有提供这样的信息和/或指定或指示存储这样的信息的寄存器的字段。mmio保护的容器页面配置指令可由解码单元解码,并且解码的指令或控制信号可由执行单元执行。解码单元可与图6的解码单元664相同或类似。

响应于指令的执行单元可操作以执行上述的可选安全性检查或确定和/或对于特定实现方式所期望的其它安全性检查或确定中的任何一个。例如,执行单元可执行检查以确保mmio设备被映射到执行指令的dpcm,可执行检查以确保偏移是页面对齐的并且请求的偏移和偏移加上页面大小在mmio范围内。如果这样的安全性检查或确定成功,响应于指令的执行单元可配置用于安全mmio的页面。这可通过执行上述的配置操作和/或对于特定实现方式所期望的其它配置操作中的任何一个来完成。例如,在一些实施例中,响应于指令的执行可将页面类型配置成允许安全mmio的页面类型(例如配置页面类型字段1152),配置mmio范围(例如配置mmio范围字段1199),并且可选地配置一个或多个允许的访问类型(例如配置一个或多个允许的访问类型字段1154)。替代地,如果期望的话,这样的操作可被可选地分派到两个或更多个单独的指令中。

图12是执行安全mmio的给定的dpcm的方法1202的详细示例性实施例的流程框图。图13是计算机系统1300的详细示例性实施例的框图,并且示出执行安全mmio的给定的dpcm。为了简化描述,将结合计算机系统1300描述方法1202。然而,将理解的是:方法1202可能可选地由不同的计算机系统代替执行,和/或计算机系统1300可能可选地代替执行不同的方法。

参考图12,在块1203处,给定的dpcm可尝试访问(例如用读取或写入操作)被配置用于安全mmio的一个或多个页面。如图13中所示,给定的dpcm1336可尝试访问1316被配置用于安全mmio的一个或多个受保护的容器页面1302。在一些实施例中,可用线性或其它逻辑访问地址进行访问尝试,该线性或其它逻辑访问地址在给定的dpcm的逻辑地址空间内,或者至少在受保护的容器存储器内可由dpcm访问。

参考图13,在块1204处,可确定用于被配置用于安全mmio的一个或多个页面的一个或多个访问控制检查是否通过。如果一个或多个检查未通过,方法可前进到块1205,其中尝试的访问可被拒绝。例如,可发送错误信号。否则,如果一个或多个检查通过,则方法可前进到块1206。如图13中所示,可通过包括存储器管理单元(mmu)1311的受保护的容器访问控制逻辑1306来进行尝试的访问1316。受保护的容器访问控制逻辑和/或mmu可执行一个或多个访问控制检查以确定是否允许尝试的访问和/或安全mmio。

不同类型的访问检查适合于不同的实施例。在一些实施例中,可能可选地执行常规的受保护的容器存储器访问检查中的任何一个或多个。举例来说,在一些实施例中,基于尝试的访问是在受保护的容器模式中做出的,是对受保护的容器存储器做出的,是仅仅从受保护的容器存储器的页面被分配给的受保护的容器模块中做出的,以及用允许的访问类型做出的,访问检查可调节允许尝试的访问。在其它实施例中,可能可选地使用更少或更多或不同的访问控制检查。在一些实施例中,将用于安全mmio的一个或多个受保护的容器存储器页面可被或者排他性地或者非排他性地分配,以用于由单个给定的dpcm使用。在可有助于提供更多保护但不是必需的排他性的映射的情况下,没有其它受保护的容器模块,没有其它dpcm并且没有高度特权系统级别软件模块可能能够访问这一个或多个受保护的容器存储器页面,该一个或多个受保护的容器存储器页面将排他性地由给定的映射的dpcm用于安全mm10。

参考图12,在块1206,可确定对应于尝试的访问的页面类型是否被配置用于安全mmio。如果页面未被配置用于安全mmio,方法可前进到块1207,其中可基于到受保护的容器存储器中的页面的原始访问地址来执行尝试的访问。替代地,如果页面被配置用于安全mmio,方法可前进到块1208。如图13中所示,mmu1311和/或受保护的容器访问控制逻辑1306可检查页面类型字段1152以确定是否访问尝试针对的页面的页面类型被配置用于安全mmio。否则,mmu可能允许尝试访问该页面。如果是这样,在一些实施例中,mmu可操作以将尝试访问重定向到不同的物理地址。

参考图12,在块1208处,在一些实施例中,原始尝试的访问(例如对于块1203)的访问地址可被重定向到对应的mmio地址。如图13中所示,mmu1311可包括重定向逻辑,以将与尝试的访问1316关联的尝试的访问地址从被配置用于安全mmio的一个或多个受保护的容器页面1303重定向到用于映射的mmio设备的mmio范围中的一个或多个页面1315。例如,在一些实施例中,mmu可操作以通过用用于mmio地址的页面帧替换原始尝试的访问地址的页面帧(例如物理地址的上部分)来将原始尝试的访问地址转换成对应的mmio地址。举例来说,来自用于mmio地址的页面可被可选地存储在pcpms或另一个元数据结构中。例如,这可使用来自图11的mmio范围字段1199的信息来执行。最初,访问进入到可允许利用现有的或以其它方式使用受保护的容器页面访问控制检查的受保护的容器存储器页面,并且然后访问可被重定向到受保护的容器存储器外部。

参考图12,在块1209处,在一些实施例中,一个或多个重定向的mmio页面的存储器类型可被可选地配置为不可高速缓存。在其它实施例中,这可能可选地被省略。

参考图12,在块1210处,可能可选地用伴随的安全标识符执行对相应的mmio地址的重定向访问。如图13中所示,可通过安全标识符逻辑1314进行对mmio范围中的一个或多个页面1315的重定向访问。安全标识符逻辑可操作以将安全标识符添加到对mmio范围的重定向访问。作为一个示例,在一些实施例中,安全标识符逻辑可操作以将受保护的容器sai应用到访问,以指示访问是正由受保护的容器进行的安全访问,但是如果访问不是正由正确映射的dpcm进行的,可不应用这样的受保护的容器sai。在一些实施例中,受保护的容器sai或其它安全标识符可向mmio设备证明:尝试的访问已由处理器验证为不仅是从处理器而且是从映射到mmio设备的验证的dpcm进行的。替代地,可能可选地使用其它安全标识符。在一些实施例中,mmio设备可支持安全模式以及一般但可选地支持不安全模式。当在安全模式中时,mmio设备可操作以区分受保护的容器sai或其它安全标识符,并且当不在安全模式中时,并且可操作以仅仅接受或识别具有这样的安全标识符(例如受保护的容器sai)的mmio访问。在一些实施例中,mmio设备可仅仅操作以根据在安全模式中的同时做出的控制(例如具有受保护的容器sai指示),从安全模式切换到非安全模式。在一些实施例中,可防止由mmio地址空间的基本输入输出系统(bios)错误配置危害访问。

有利地,正确映射到对应的mmio设备的dpcm可能能够访问mmio设备的mmio空间,而没有其它未映射的受保护的容器模块或软件(例如甚至特权系统软件)能够访问该mmio空间。这可允许一个或多个正确映射的dpcm从处理器端排他性地且安全地控制或配置mmio设备。这可用于为mmio设备提供控制或配置路径,或者可潜在地用于为mmio设备提供低带宽数据路径。已经描述了各种操作和方法。已经在流程图中以相对基本的形式描述了方法中的一些,但是操作可被可选地添加到方法和/或从方法中移除。另外,尽管流程图示出根据实施例的特定操作顺序,但是该顺序是示范性的。替代实施例可以不同顺序执行操作,组合某些操作,重叠某些操作等。

示范性的核架构、处理器和计算机架构

可按不同的方式、为了不同的目的、以及在不同的处理器中实现处理器核。例如,这样的核的实现方式可包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现方式可包括:1)cpu,包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用无序核;以及2)协处理器,包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在单独于cpu的芯片上的协处理器;2)在与cpu相同的封装中的单独管芯上的协处理器;3)在与cpu相同的管芯上的协处理器(在这种情况下,这样的协处理器有时被称为专用逻辑,诸如集成图形和/或科学(吞吐量)逻辑,或者被称为专用核);以及4)在相同的管芯上可包括所述cpu(有时被称为一个或多个应用核或一个或多个应用处理器)、上述协处理器和附加功能性的片上系统。接下来描述示范性的核架构,随后描述示范性的处理器和计算机架构。

示范性的核架构

有序和无序核框图

图14a是图示根据该发明的实施例的示范性的有序流水线和示范性的寄存器重命名、无序发布/执行流水线两者的框图。图14b是图示根据该发明的实施例的将被包括在处理器中的有序架构核的示范性实施例和示范性的寄存器重命名、无序发布/执行架构核两者的框图。图14a-b中的实线框图示有序流水线和有序核,而虚线框的可选添加图示寄存器重命名、无序发布/执行流水线和核。假定有序方面是无序方面的子集,将描述无序方面。

在图14a中,处理器流水线1400包括提取级1402、长度解码级1404、解码级1406、分配级1408、重命名级1410、调度(也被称为派遣或发布)级1412、寄存器读取/存储器读取级1414、执行级1416、回写/存储器写入级1418、异常处理级1422和提交级1424。

图14b示出处理器核1490,该处理器核1490包括耦合到执行引擎单元1450的前端单元1430,并且执行引擎单元1450和前端单元1430两者都耦合到存储器单元1470。核1490可以是精简指令集计算(risc)核、复杂指令集计算(cisc)核、超长指令字(vliw)核或者混合或替代核类型。作为又一个选项,核1490可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(gpgpu)核、图形核等等。

前端单元1430包括耦合到指令高速缓存单元1434的分支预测单元1432,该指令高速缓存单元1434耦合到指令转译后备缓冲器(tlb)1436,该指令转译后备缓冲器(tlb)1436耦合到指令提取单元1438,该指令提取单元1438耦合到解码单元1440。解码单元1440(或解码器)可解码指令,并且生成从原始指令解码或以其它方式反映原始指令或源自原始指令的一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号作为输出。解码单元1440可使用各种不同的机构来实现。合适的机构的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(pla)、微代码只读存储器(rom)等。在一个实施例中,核1490包括为某些宏指令(例如在解码单元1440中或以其它方式在前端单元1430内)存储微代码的微代码rom或其它介质。解码单元1440耦合到执行引擎单元1450中的重命名/分配器单元1452。

执行引擎单元1450包括重命名/分配器单元1452,该重命名/分配器单元1452耦合到退出单元1454以及一组一个或多个调度器单元1456。一个或多个调度器单元1456表示任何数量的不同调度器,包括保留站、中央指令窗口等。一个或多个调度器单元1456耦合到一个或多个物理寄存器文件单元1458。一个或多个物理寄存器文件单元1458中的每一个表示一个或多个物理寄存器文件,其中的不同的物理寄存器文件存储一个或多个不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如指令指针,其是待执行的下一个指令的地址)等。在一个实施例中,一个或多个物理寄存器文件单元1458包括向量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量掩码寄存器和通用寄存器。一个或多个物理寄存器文件单元1458由退出单元1454重叠以图示可按其实现寄存器重命名和无序执行的各种方式(例如使用一个或多个重新排序缓冲器和一个或多个退出寄存器文件;使用一个或多个未来文件、一个或多个历史缓冲器和一个或多个退出寄存器文件;使用寄存器映射和寄存器池;等等)。退出单元1454和一个或多个物理寄存器文件单元1458耦合到一个或多个执行群集1460。一个或多个执行群集1460包括一组一个或多个执行单元1462和一组一个或多个存储器访问单元1464。执行单元1462可执行各种操作(例如移位、加法、减法、乘法),并对各种类型的数据(例如标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行各种操作。尽管一些实施例可包括专用于具体功能或多组功能的许多执行单元,但是其它实施例可包括仅仅一个执行单元或者全部执行所有功能的多个执行单元。一个或多个调度器单元1456、一个或多个物理寄存器文件单元1458和一个或多个执行群集1460被示为可能是复数个,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如各自具有它们自己的调度器单元、一个或多个物理寄存器文件单元和/或执行群集的标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线和/或存储器访问流水线——并且在单独的存储器访问流水线的情况下,实现其中仅仅该流水线的执行群集具有一个或多个存储器访问单元1464的某些实施例)。还应当理解:其中使用单独的流水线时,这些流水线中的一个或多个可以是无序发布/执行,并且其余的是有序的。

该组存储器访问单元1464耦合到存储器单元1470,该存储器单元1470包括耦合到数据高速缓存单元1474的数据tlb单元1472,该数据高速缓存单元1474耦合到2级(l2)高速缓存单元1476。在一个示范性实施例中,存储器访问单元1464可包括加载单元、存储地址单元和存储数据单元,其中的每一个都耦合到存储器单元1470中的数据tlb单元1472。指令高速缓存单元1434进一步耦合到存储器单元1470中的2级(l2)高速缓存单元1476。l2高速缓存单元1476耦合到一个或多个其它级别的高速缓存并且最终耦合到主存储器。

举例来说,示范性的寄存器重命名、无序发布/执行核架构可如下实现流水线1400:1)指令提取1438执行提取和长度解码级1402和1404;2)解码单元1440执行解码级1406;3)重命名/分配器单元1452执行分配级1408和重命名级1410;4)一个或多个调度器单元1456执行调度级1412;5)一个或多个物理寄存器单元1458和存储器单元1470执行寄存器读取/存储器读取级1414;执行群集1460执行执行级1416;6)存储器单元1470和一个或多个物理寄存器文件单元1458执行回写/存储器写入级1418;7)各种单元可涉及异常处理级1422;以及8)退出单元1454和一个或多个物理寄存器文件单元1458执行提交级1424。

核1490可支持一个或多个指令集(例如x86指令集(具有已经添加有较新版本的一些扩展);casunnyvale的mipstechnologies的mips指令集;casunnyvale的armholdings的arm指令集(具有可选的附加扩展,诸如neon),包括本文所述的一个或多个指令。在一个实施例中,核1490包括支持打包数据指令集扩展(例如avx、avx2)的逻辑,从而允许使用打包数据执行由许多多媒体应用使用的操作。

应当理解:核可支持多线程(执行并行的两组或更多组的操作或线程),并且可按各种方式这样做,各种方式包括时分片多线程、同时多线程(其中单个物理核为物理核正在同时多线程的线程中的每一个提供逻辑核)或其组合(例如其后的时分片提取和解码以及同时多线程,诸如在intel®hyperthreading技术中)。

尽管在无序执行的上下文中描述寄存器重命名,但是应当理解:寄存器重命名可用在有序架构中。尽管图示的处理器的实施例还包括单独的指令和数据高速缓存单元1434/1474以及共享的l2高速缓存单元1476,但是替代实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如1级(l1)内部高速缓存,或者多级内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。替代地,所有的高速缓存可在核和/或处理器外部。

具体的示范性的有序核架构

图15a-b图示更具体的示范性的有序核架构的框图,该核将是芯片中的几个逻辑块(包括相同类型和/或不同类型的其它核)之一。逻辑块通过高带宽互连网络(例如环形网络)与某个固定功能逻辑、存储器i/o接口和其它必要的i/o逻辑通信,这取决于应用。

根据该发明的实施例,图15a是单个处理器核的框图,连同其到管芯上互连网络1502的连接以及连同2级(l2)高速缓存1504的其本地子集。在一个实施例中,指令解码单元1500支持具有打包数据指令集扩展的x86指令集。l1高速缓存1506允许对高速缓存存储器到标量和向量单元中的低延迟访问。尽管在一个实施例中(为了简化设计),标量单元1508和向量单元1515使用单独的寄存器组(分别为标量寄存器1512和向量寄存器1514),并且在它们之间传送的数据被写入到存储器,并且然后从1级(l1)高速缓存1506回读,但是该发明的替代实施例可使用不同的方法(例如使用单个寄存器组,或者包括允许数据在两个寄存器文件之间传送而不被回写和回读的通信路径)。

l2高速缓存1504的本地子集是被划分成单独的本地子集(每个处理器核一个)的全局l2高速缓存的部分。每个处理器核具有到其自己的l2高速缓存器1504的本地子集的直接访问路径。由处理器核读取的数据被存储在其l2高速缓存子集1504中,并且可以与访问它们自己的本地l2高速缓存子集的其它处理器核并行地被快速访问。如果有必要,由处理器核写入的数据被存储在其自己的l2高速缓存子集1504中,并且被从其它子集中清洗。环形网络确保对共享的数据的一致性。环形网络是双向的,以允许诸如处理器核、l2高速缓存和其它逻辑块之类的代理在芯片内与彼此通信。每个环形数据路径为每个方向1012位宽。

图15b是根据该发明的实施例的图15a中的处理器核的部分的放大视图。图15b包括l1高速缓存1504的l1数据高速缓存1506a,以及关于向量单元1510和向量寄存器1514的更多细节。具体地,向量单元1510是16-宽的向量处理单元(vpu)(参见16-宽的alu1528),其执行整数、单精度浮动和双精度浮动指令中的一个或多个。vpu支持用拌和单元1520来拌和寄存器输入、用数量转换单元1522a-b来数量转换、以及在存储器输入上用复制单元1524复制。写入掩码寄存器1526允许预测所得到的向量写入。

具有集成存储器控制和图形的处理器

图16是根据该发明的实施例的处理器1600的框图,该处理器1600可具有多于一个核,可具有集成存储器控制器,并且可具有集成图形。图16中的实线框图示具有单个核1602a、系统代理1610、一组一个或多个总线控制器单元1616的处理器1600,而虚线框的可选添加图示具有多个核1602a-n、系统代理单元1610中的一组一个或多个集成存储器控制器单元1614、以及专用逻辑1608的替代处理器1600。

因此,处理器1600的不同实现方式可包括:1)具有专用逻辑1608和核1602a-n的cpu,专用逻辑1608是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),核1602a-n是一个或多个通用核(例如通用有序核、通用无序核、两者的组合);2)具有核1602a-n的协处理器,核1602a-n是旨在主要用于图形和/或科学(吞吐量)的大量的专用核;以及3)具有核1602a-n的协处理器,核1602a-n是大量的通用有序核。因此,处理器1600可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量的许多集成核(mic)协处理器(包括30个或更多个核)、嵌入式处理器等等。可在一个或多个芯片上实现处理器。处理器1600可以是一个或多个基板的一部分和/或可在一个或多个基板上使用诸如例如bicmos、cmos或nmos之类的许多处理技术中的任一个来实现。

存储器层次结构包括核内的一级或多级高速缓存、一组或者一个或多个共享高速缓存单元1606以及耦合到该组集成存储器控制器单元1614的外部存储器(未示出)。该组共享高速缓存单元1606可包括一个或多个中级高速缓存,诸如2级(l2)、3级(l3)、4级(l4)或其它级的高速缓存、最后一级高速缓存(llc)和/或其组合。尽管在一个实施例中,基于环形的互连单元1612互连集成图形逻辑1608、该组共享高速缓存单元1606和系统代理单元1610/一个或多个集成存储器控制器单元1614,但是替代实施例可使用任何数量的用于互连这样的单元的公知技术。在一个实施例中,在一个或多个高速缓存单元1606与核1602-a-n之间保持一致性。

在一些实施例中,核1602a-n中的一个或多个能够多线程。系统代理1610包括协调和操作核1602a-n的那些组件。系统代理单元1610例如可包括功率控制单元(pcu)和显示单元。pcu可以是或包括用于调节核1602a-n和集成图形逻辑1608的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。

在架构指令集方面,核1602a-n可以是同质的或异质的;也就是说,核1602a-n中的两个或更多个可能能够执行相同的指令集,而其它可能仅仅能够执行该指令集的子集或不同的指令集。

示范性的计算机架构

图17-21是示范性的计算机架构的框图。本领域中已知的用于膝上型电脑、台式机、手持pc、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(dsp)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其它电子设备的其它系统设计和配置也是合适的。一般,能够并入如本文所公开的处理器和/或其它执行逻辑的各种各样的系统或电子设备一般是合适的。

现在参考图17,示出根据本发明的一个实施例的系统1700的框图。系统1700可包括耦合到控制器集线器1720的一个或多个处理器1710、1715。在一个实施例中,控制器集线器1720包括图形存储器控制器集线器(gmch)1790和输入/输出集线器(ioh)1750(其可在单独的芯片上);gmch1790包括存储器1740和协处理器1745所耦合到的存储器和图形控制器;ioh1750将输入/输出(i/o)设备1760耦合到gmch1790。替代地,存储器和图形控制器中的一个或两者集成在处理器内(如本文所述),存储器1740和协处理器1745直接耦合到处理器1710和控制器集线器1720(在具有ioh1750的单个芯片中)。

附加处理器1715的可选性质在图17中用虚线标志。每个处理器1710、1715可包括本文所述的处理核中的一个或多个,并且可以是处理器1600的某个版本。

存储器1740例如可以是动态随机存取存储器(dram)、相变存储器(pcm)或二者的组合。对于至少一个实施例,控制器集线器1720经由诸如前端总线(fsb)之类的多点总线、诸如quickpathinterconnect(qpi)之类的点对点接口、或者类似的连接1795来与一个或多个处理器1710、1715通信。

在一个实施例中,协处理器1745是专用处理器,诸如例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器等等。在一个实施例中,控制器集线器1720可包括集成图形加速器。

在包括架构、微架构、热量、功耗特性等等的指标的一系列度量方面,在物理资源1710、1715之间可以存在各种差异。

在一个实施例中,处理器1710执行控制一般类型的数据处理操作的指令。指令内嵌入的可以是协处理器指令。处理器1710将这些协处理器指令识别为是应当由附连的协处理器1745执行的类型。相应地,处理器1710在协处理器总线或其它互连上将这些协处理器指令(或表示协处理器指令的控制信号)发布给协处理器1745。一个或多个协处理器1745接受并执行接收的协处理器指令。

现在参考图18,示出根据本发明的实施例的第一个更具体的示范性系统1800的框图。如图18中所示,多处理器系统1800是点对点互连系统,并且包括经由点对点互连1850耦合的第一处理器1870和第二处理器1880。处理器1870和1880中的每一个可以是处理器1600的某个版本。在该发明的一个实施例中,处理器1870和1880分别是处理器1710和1715,而协处理器1838是协处理器1745。在另一个实施例中,处理器1870和1880分别是处理器1710、协处理器1745。

处理器1870和1880被分别示出包括集成存储器控制器(imc)单元1872和1882。处理器1870还包括点对点(p-p)接口1876和1878作为其总线控制器单元的部分;类似地,第二处理器1880包括p-p接口1886和1888。处理器1870、1880可经由点对点(p-p)接口1850、使用p-p接口电路1878、1888交换信息。如图18中所示,imc1872和1882将处理器耦合到各自的存储器(即存储器1832和存储器1834),各自的存储器可以是本地附连到各自的处理器的主存储器的部分。

处理器1870、1880可各自经由个体的p-p接口1852、1854、使用点对点接口电路1876、1894、1886、1898与芯片组1890交换信息。芯片组1890可经由高性能接口1839可选地与协处理器1838交换信息。在一个实施例中,协处理器1838是专用处理器,诸如例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器等等。

共享高速缓存(未示出)可被包括在处理器中或两个处理器的外部(但经由p-p互连与处理器连接),使得如果处理器被置于低功耗模式中,任一个或两个处理器的本地高速缓存信息可被存储在共享高速缓存中。

芯片组1890可经由接口1896耦合到第一总线1816。在一个实施例中,第一总线1816可以是外围组件互连(pci)总线,或者诸如pciexpress总线之类的总线,或者另一个第三代i/o互连总线,但本发明的范围不限于此。

如图18中所示,各种i/o设备1814可连同总线桥1818耦合到第一总线1816,该总线桥1818将第一总线1816耦合到第二总线1820。在一个实施例中,诸如协处理器、高吞吐量mic处理器、gpgpu、加速器(诸如例如图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列或任何其它处理器之类的一个或多个附加处理器1815耦合到第一总线1816。在一个实施例中,第二总线1820可以是低引脚数(lpc)总线。在一个实施例中,各种设备可耦合到第二总线1820,所述各种设备例如包括键盘和/或鼠标1822、通信设备1827和存储单元1828,该存储单元1828诸如磁盘驱动器或可包括指令/代码和数据1830的其它大容量存储设备。此外,音频i/o1824可耦合到第二总线1820。注意:其它架构是可能的。例如,代替图18的点对点架构,系统可实现多点总线或其它这样的架构。

现在参考图19,示出根据本发明的实施例的第二个更具体的示范性系统1900的框图。图18和19中的相同元件具有相同的附图标记,并且已经从图19省略了图18的某些方面,以便避免模糊图19的其它方面。

图19图示:处理器1870、1880可分别包括集成存储器和i/o控制逻辑(“cl”)1872和1882。因此,cl1872、1882包括集成存储器控制器单元并且包括i/o控制逻辑。图19图示:不仅存储器1832、1834耦合到cl1872、1882,而且i/o设备1914也耦合到控制逻辑1872、1882。传统i/o设备1915耦合到芯片组1890。

现在参考图20,示出根据本发明的实施例的soc2000的框图。图16中的类似元件具有相同的附图标记。此外,虚线框是更先进的soc上的可选特征。在图20中,一个或多个互连单元2002耦合到:应用处理器2010,其包括一组一个或多个核192a-n和一个或多个共享高速缓存单元1606;系统代理单元1610;一个或多个总线控制器单元1616;一个或多个集成存储器控制器单元1614;一组或者一个或多个协处理器2020,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(sram)单元2030;直接存储器存取(dma)单元2032;以及用于耦合到一个或多个外部显示器的显示单元2040。在一个实施例中,一个或多个协处理器2020包括专用处理器,诸如例如网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、嵌入式处理器等等。

本文公开的机制的实施例可按硬件、软件、固件或这些实现方式方法的组合来实现。该发明的实施例可被实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。

诸如图18中图示的代码1830之类的程序代码可应用于输入指令以执行本文所述的功能并且生成输出信息。输出信息可按已知的方式应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如;数字信号处理器(dsp)、微控制器、专用集成电路(asic)或微处理器。

程序代码可按高级程序或面向对象的编程语言来实现,以与处理系统通信。如果期望的话,程序代码也可按汇编或机器语言来实现。事实上,本文所述的机制在范围上不限于任何特定的编程语言。在任何情况下,语言可以是编译或解释语言。

至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性指令来实现,该机器可读介质表示处理器内的各种逻辑,该逻辑在由机器读取时使得机器制造逻辑以执行本文所述的技术。被称为“ip核”的这样的表示可被存储在有形的机器可读介质上,并被供应给各种客户或制造设施以加载到实际制造逻辑或处理器的制造机器中。

这样的机器可读存储介质可包括而不限于由机器或设备制造或形成的物品的非暂时的、有形的装置,包括:诸如硬盘之类的存储介质,任何其它类型的盘(包括软盘、光盘、压缩盘只读存储器(cd-rom)、压缩盘可重写(cd-rw)和磁光盘),半导体器件,诸如只读存储器(rom)、随机存取存储器(ram)(诸如动态随机存取存储器(dram)、静态随机存取存储器(sram))、可擦除可编程只读存储器(eprom)、闪存、电可擦除可编程只读存储器(eeprom),相变存储器(pcm),磁或光卡,或者适合于存储电子指令的任何其它类型的介质。

相应地,该发明的实施例还包括非暂时的、有形的机器可读介质,该介质包含指令或包含设计数据,诸如定义本文描述的结构、电路、装置、处理器和/或系统特征的硬件描述语言(hdl)。这样的实施例也可被称为程序产品。

仿真(包括二进制转译、代码变形等等)

在一些情况下,指令转换器可用于将指令从源指令集转换成目标指令集。例如,指令转换器可将指令转译(例如使用静态二进制转译、包括动态编译的动态二进制转译)、变形、仿真或以其它方式转换成将由核处理的一个或多个其它指令。指令转换器可按软件、硬件、固件或其组合来实现。指令转换器可在处理器上、在处理器外、或者部分在处理器上并且部分在理器外。

图21是根据该发明的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在图示的实施例中,指令转换器是软件指令转换器,但替代地,指令转换器可按软件、固件、硬件或其各种组合来实现。图21示出采用高级语言2102的程序可使用x86编译器2104来编译,以生成可由具有至少一个x86指令集核2116的处理器本地执行的x86二进制代码2106。具有至少一个x86指令集核2116的处理器表示任何处理器,所述任何处理器可以通过兼容地执行或以其它方式处理以下各项来执行与具有至少一个x86指令集核的intel处理器基本相同的功能:(1)intelx86指令集核的指令集的实质部分,或者(2)应用程序或其它软件的目标代码版本,其目的是在具有至少一个x86指令集核的intel处理器上运行,以便实现与具有至少一个x86指令集核的intel处理器基本相同的结果。x86编译器2104表示可操作以生成x86二进制代码2106(例如目标代码)的编译器,该x86二进制代码2106可以用或不用附加链接处理来在具有至少一个x86指令集核2116的处理器上被执行。类似地,图21示出:可使用替代指令集编译器2108来编译采用高级语言2102的程序,以生成可由不具有至少一个x86指令集核2114的处理器(例如,具有执行casunnyvale的mipstechnologies的mips指令集和/或执行casunnyvale的armholdings的arm指令集的核的处理器)本地执行的替代指令集二进制代码2110。指令转换器2112用于将x86二进制代码2106转换成可由不具有x86指令集核2114的处理器本地执行的代码。该转换的代码不太可能与替代指令集二进制代码2110相同,因为能够这样的指令转换器难以制作;然而,转换的代码将完成一般操作,并且由来自替代指令集的指令组成。因此,指令转换器2112表示通过仿真、模拟或任何其它过程允许不具有x86指令集处理器或核的其它电子设备或处理器执行x86二进制代码2106的软件、固件、硬件或其组合。

为任何的装置所述的组件、特征和细节还可能可选地应用于在实施例中可由这样的装置执行和/或与这样的装置一起被执行的任何的方法。本文所述的任何的处理器可被包括在本文公开的任何的计算机系统中。在一些实施例中,计算机系统可包括动态随机存取存储器(dram)。替代地,计算机系统可包括不需要刷新的一种类型的易失性存储器或者闪存。可在本文所示的任何的系统上用本文所示的任何的处理器来执行本文公开的指令,所述任何的处理器具有本文所示的任何的微架构。

在说明书和权利要求书中,可能已经使用了术语“耦合”和/或“连接”连同其派生词。这些术语不旨在作为彼此的同义词。更确切地,在实施例中,“连接”可用于指示两个或更多个元件与彼此直接物理和/或电接触。“耦合”可意味着两个或更多个元件与彼此直接物理和/或电接触。然而,“耦合”也可意味着两个或更多个元件与彼此不直接接触,但仍然与彼此协作或交互。例如,执行单元可通过一个或多个中间组件与寄存器和/或解码单元耦合。在图中,箭头用于示出连接和耦合。

在说明书和/或权利要求中,可能已经使用了术语“逻辑”、“单元”、“模块”或“组件”。这些术语中的每一个可用于指代硬件、固件或其各种组合。在示例性实施例中,这些术语中的每一个可指代集成线路、专用集成电路、模拟电路、数字电路、编程逻辑器件、包括指令的存储器设备等等,及其各种组合。在一些实施例中,这些可包括至少一些硬件(例如晶体管、门电路、其它线路组件等)。

可能已经使用了术语“和/或”。如本文所用的,术语“和/或”意味着一个或另一个或两者(例如a和/或b意味着a、或者b、或者a和b两者)。

在以上描述中,已经阐述了具体细节,以便提供对实施例的透彻理解。然而,可实践其它实施例而没有这些具体细节中的一些。该发明的范围将不由以上提供的具体示例确定,而仅仅由以下权利要求确定。在其它实例中,已经以框图形式和/或没有细节地示出了公知的电路、结构、设备和操作,以便避免模糊对描述的理解。在认为适当时,已经在附图之中重复了附图标记或附图标记的末端部分,以指示可能可选地具有类似或相同特征的对应或相似的元素,除非以其它方式详细说明或者显而易见。

某些操作可由硬件组件执行,或者可体现在机器可执行或电路可执行指令中,该操作可用于使得和/或导致用指令编程的机器、电路或硬件组件(例如处理器、处理器的部分、电路等)执行操作。该操作也可能可选地由硬件和软件的组合来执行。处理器、机器、电路或硬件可包括具体或特定的线路,或者其它逻辑(例如潜在地与固件和/或软件组合的硬件)操作以执行和/或处理该指令并且响应于该指令而存储结果。

一些实施例包括含有机器可读介质的制品(例如计算机程序产品)。介质可包括以由机器可读的形式提供(例如存储)信息的机制。机器可读介质可提供或已经在其上存储指令或指令的序列,如果和/或当该指令或指令的序列由机器执行时操作以使得机器执行和/或导致机器执行本文公开的一个或操作、方法或技术。

在一些实施例中,机器可读介质可包括非暂时的机器可读存储介质。例如,非暂时的机器可读存储介质可包括软盘、光存储介质、光盘、光数据存储设备、cd-rom、磁盘、磁光盘、只读存储器(rom)、可编程rom(prom)、可擦除和可编程rom(eprom)、电可擦除和可编程rom(eeprom)、随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、闪存、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂时的存储器、非暂时的数据存储设备等等。非暂时的机器可读存储介质不由暂时传播的信号组成。在一些实施例中,存储介质可包括含有固体物质的有形介质。

合适的机器的示例包括但不限于通用处理器、专用处理器、数字逻辑电路、集成电路等等。合适的机器的其它示例包括含有处理器、数字逻辑电路或集成电路的计算机系统或其它电子设备。这样的计算机系统或电子设备的示例包括但不限于台式计算机、膝上型计算机、笔记本电脑、平板电脑、上网本、智能手机、蜂窝电话、服务器、网络设备(例如路由器和交换机)、移动互联网设备(mid)、媒体播放器、智能电视、迷你台式机、机顶盒和视频游戏控制器。

在整个该说明书中对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的引用例如指示:特定的特征可被包括在该发明的实践中,但不一定需要被包括在该发明的实践中。类似地,在说明书中,为了简化公开并帮助理解各种创造性方面的目的,各种特征在单个实施例、附图或其描述中有时被分组在一起。然而,公开的该方法将不被解释为反映该发明需要比每个权利要求中明确记载的特征多的特征的意图。更确切地,如下面的权利要求反映的,创造性方面在于比单个公开的实施例的所有特征少。因此,在具体实施方式之后的权利要求特此被明确地并入到该具体实施方式中,其中每项权利要求本身作为该发明的单独实施例。

示例性实施例

下面的示例涉及进一步的实施例。可在一个或多个实施例中的任何地方使用示例中的细节。

示例1是一种集成电路,包括受保护的容器访问控制逻辑,以执行一组访问控制检查并确定允许设备受保护的容器模块(dpcm)和输入和/或输出(i/o)设备通过直接存储器访问(dma)和存储器映射的输入/输出(mmio)中的一个安全地通信。这个确定是在已经确定至少以下各项之后进行的:dpcm和i/o设备被映射到彼此,与通信关联的访问地址解析为受保护的容器存储器,并且访问地址解析为的受保护的容器存储器的页面允许用于所述dma和mmio中的一个。

示例2包括示例1的集成电路,其中所述一个是dma。

示例3包括示例2的集成电路,其中受保护的容器访问控制逻辑将确定允许i/o设备访问受保护的容器存储器的页面。

示例4包括示例2的集成电路,其中访问地址将来自i/o设备并且将由对应于i/o设备的启动程序的安全属性(sai)伴随。此外,受保护的容器访问控制逻辑将通过使用i/o设备的sai来确定dpcm和i/o设备被映射到彼此,以获得被映射到设备映射表中的i/o设备的sai的dpcm标识符,并且确定从表中获得的dpcm标识符对应于dpcm。

示例5包括示例2的集成电路,其中受保护的容器访问控制逻辑将访问先前已经存储在受保护的容器页面元数据结构中的允许的物理地址,并且将确定允许dpcm和i/o设备在已经确定访问地址与允许的物理地址兼容之后安全地通信。

示例6包括示例5的集成电路,进一步包括:解码指令的解码单元以及与解码单元耦合的执行单元,执行单元响应于指令而在受保护的容器页面元数据结构中存储允许的物理地址。

示例7包括示例2的集成电路,其中受保护的容器访问控制逻辑将确定允许dpcm和i/o设备在已经确定页面具有专用于允许安全dma的类型之后安全地通信。

示例8包括示例2的集成电路,其中受保护的容器访问控制逻辑包括i/o存储器管理单元(mmu)。

示例9包括示例1的集成电路,其中所述一个是mmio。

示例10包括示例9的集成电路,进一步包括存储器管理单元(mmu),以将解析成受保护的容器存储器的页面的地址转换成用于i/o设备的mmio地址。

示例11包括示例9的集成电路,其中受保护的容器访问控制逻辑将提供安全性标识符以伴随从dpcm到i/o设备的访问。此外,安全性标识符将向i/o设备证明访问来自被映射到i/o设备的dpcm。

示例12包括示例9的集成电路,其中受保护的容器访问控制逻辑将确定允许dpcm和i/o设备在已经确定页面具有专用于允许安全mmio的类型之后安全地通信。

示例13包括示例9的集成电路,其中受保护的容器访问控制逻辑包括存储器管理单元(mmu)。

示例14包括示例1至13中的任一个的集成电路,其中受保护的容器访问控制逻辑将确定允许dpcm和i/o设备在已经确定访问的类型与用于将被存储在受保护的容器页面元数据结构中的页面的一个或多个允许的访问类型兼容之后安全地通信。

示例15包括示例1至13中的任一个的集成电路,其中受保护的容器访问控制逻辑将确定不允许:任何其它受保护的容器模块访问受保护的容器存储器的页面,以及任何特权系统软件模块访问受保护的容器存储器的页面。

示例16是一种集成电路中的方法,包括:确定设备受保护的容器模块(dpcm)和输入和/或输出(i/o)设备被映射到彼此。该方法还包括:确定与由dpcm和i/o设备中的一个尝试的访问关联的访问地址解析为受保护的容器存储器。该方法还包括:确定访问地址解析为的受保护的容器存储器的页面允许用于dma和mmio中的一个。该方法还包括:确定允许dpcm和i/o设备通过受保护的容器存储器的页面与彼此安全地通信。

示例17包括示例16的方法,其中确定包括确定允许dpcm和i/o设备执行安全dma,并且进一步包括允许i/o设备访问受保护的容器存储器的页面中的数据。

示例18包括示例16的方法,其中确定包括确定允许dpcm和i/o设备执行安全mmip。

示例19是一种包括互连和与互连耦合的处理器的计算机系统。处理器执行一组访问控制检查并确定允许设备受保护的容器模块(dpcm)和输入和/或输出(i/o)设备通过直接存储器访问(dma)和存储器映射的输入/输出(mmio)中的一个安全地通信。该确定是在已经确定至少以下各项之后进行的:dpcm和i/o设备被映射到彼此,与通信关联的访问地址解析为受保护的容器存储器,以及访问地址解析为的受保护的容器存储器的页面允许用于所述dma和mmio中的一个。计算机系统还包括与互连耦合的动态随机存取存储器(dram)。dram可能可选地存储dpcm,其中dpcm包括设备驱动器指令以在用户特权级别与i/o设备通信。

示例20包括示例19的计算机系统,其中所述一个是dma。

示例21是一种包括非暂时的机器可读存储介质的制品。非暂时的机器可读存储介质存储指令,如果该指令由机器执行则将使得机器执行操作,该操作包括:从受保护的容器存储器中的受保护的容器模块请求输入和/或输出(i/o)设备被映射到受保护的容器模块,访问允许用于直接存储器访问(dma)和存储器映射的输入/输出(mmio)中的一个的受保护的容器存储器中的页面,以及通过受保护的容器存储器中的页面、用i/o设备执行所述dma和mmio中的一个。

示例22包括示例21的制品,其中如果被执行则使得机器用i/o设备执行所述dma和mmio中的一个的指令包括:如果被执行则使得机器用i/o设备执行dma的指令。

示例23包括示例21至22中的任一个的制品,其中指令包括:如果由机器执行则将使得机器将页面配置成专用于安全dma的类型的单个指令。

示例24包括示例21的制品,其中如果被执行则使得机器用i/o设备执行所述dma和mmio中的一个的指令包括:如果被执行则使得机器用i/o设备执行mmio的指令。

示例25包括示例21和24中的任一个的制品,其中指令包括:如果由机器执行则将使得机器将页面配置成专用于安全mmio的类型的单个指令。

示例26包括示例1至13中的任一个的处理器,进一步包括:预测分支的可选的分支预测单元以及与分支预测单元耦合的可选的指令预取单元,该指令预取单元预取指令。处理器还可能可选地包括:与指令预取单元耦合的可选的1级(li)指令高速缓存,存储指令的l1指令高速缓存,存储数据的可选的l1数据高速缓存,以及存储数据和指令的可选的2级(l2)高速缓存。处理器还可能可选地包括:与解码单元、l1指令高速缓存和l2高速缓存耦合的指令提取单元。处理器还可能可选地包括:重命名寄存器的寄存器重命名单元,调度一个或多个用于执行的操作的可选的调度器,以及提交执行结果的可选的提交单元。

示例27是一种执行或操作以执行示例16至18中的任一个的方法的处理器或其它装置。

示例28是一种处理器或其它设备,其包括用于执行示例16至18中的任一个的方法的部件。

示例29是一种处理器,其包括用于执行示例16至18中的任一个的方法的模块和/或单元和/或逻辑和/或线路和/或部件的任何组合。

示例30是一种包括可选地非暂时的机器可读介质的制品,可选地非暂时的机器可读介质可选地存储或以其它方式提供指令,如果和/或当由处理器、计算机系统、电子设备或其它机器执行时,该指令操作以使得机器执行示例16至18中的任一个的方法。

示例31是一种基本如本文所述的处理器或其它装置。

示例32是一种处理器或其它设备,其操作以执行基本如本文所述的任何方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1