轻量可信任务的制作方法

文档序号:14784980发布日期:2018-06-27 22:08阅读:309来源:国知局
轻量可信任务的制作方法

本文中所描述的实施例一般涉及在操作期间面对安全威胁的计算设备。所描述的实施例一般涉及实现轻量可信任务的计算设备。



背景技术:

在计算中,特别是在物联网(IoT)和可穿戴技术的情境中,计算设备受益于在紧缩成本和能量预算内进行操作,而同时针对安全威胁是有弹性的。越来越多地,以强安全保证来执行代码的能力被视为IoT和可穿戴设备的有益特征。当设备变为连接的并且托管多个利益相关方(stakeholder)时,基于监管方和用户特权(Ring 0/Ring 3)的粗粒度分离的传统模型或者在一些情况下的简单地信任系统中的所有代码,不再是足够的。

附图说明

本文中所公开的实施例的各种优点将通过阅读以下说明书和所附权利要求,以及通过参照附图而对本领域技术人员变得显而易见,其中:

图1是图示了根据实施例的用以实现轻量可信任务基元的计算系统的框图;

图2是图示了根据实施例的用以实现轻量可信任务基元的系统架构的框图;

图3示出了用以实现轻量可信任务基元的存储器映射的一个实施例;

图4是示出了根据实施例的使用处理器中的受保护模式特征来将任务彼此隔离的示图;

图5是示出了根据实施例的用以使用轻量可信任务实现保护模式的存储器结构的示图;

图6示出了根据实施例的轻量可信任务控制和状态寄存器;

图7是根据一些实施例的轻量可信任务(LTT)状态的执行流的流程图;

图8示出了根据实施例的受保护存储器区域基本模型特定寄存器;

图9示出了根据实施例的受保护存储器区域掩码模型特定寄存器;

图10示出了根据实施例的被扩展以供轻量可信任务使用的任务区段寄存器;

图11示出了实现轻量可信任务的物理存储器映射的实施例;

图12示出了根据实施例的包含当前活动任务的任务状态区段(TSS)选择符(selector)的任务寄存器;

图13示出了使用LTT模式任务的片上系统(SoC)的实施例;

图14是根据实施例的在上电后对轻量可信任务基元进行初始化和保护的方法的执行流的流程图;

图15是根据实施例的在上电后对轻量可信任务基元进行初始化的方法的执行流的流程图;

图16是根据本文中所公开的实施例的可以具有多于一个核、可以具有集成存储器控制器以及可以具有集成图形部件的处理器1600的框图;

图17是根据本文中所公开的一个实施例的寄存器架构1700的框图;

图18是根据本发明的实施例的SoC的框图;

图19是根据本文中所公开的实施例的对软件指令转换器的使用进行对比的框图,所述软件指令转换器用以将源指令集中的二进制指令转换成目标指令集中的二进制指令;

图20是根据实施例的用于对轻量可信任务(LTT)进行配置、锁定和执行的方法的执行流的流程图。

具体实施方式

在以下描述中,阐述了许多具体细节。然而,要理解的是,本公开的实施例在没有这些具体细节的情况下被实践。在其他实例中,公知的电路、结构和技术尚未被详细示出,以便不使此描述晦涩难懂。

在说明书中对“一个实施例”、“实施例”、“示例实施例”等的参考指示了所描述的实施例包括:特征、结构或特性,但是并不是每个实施例都一定包括所述特征、结构或特性。此外,这样的用语不一定指代相同的实施例。另外,当描述关于实施例的特征、结构或特性时,要承认的是,其是在本领域技术人员的知识范围内来影响关于其他实施例的这样的特征、结构或特性,无论是否明确描述。

安全对于物联网(IoT)和可穿戴计算设备而言是有用的特征。许多IoT和可穿戴设备将会受益于下述能力:在紧缩成本和能量预算内进行操作并且同时针对动态的且有挑战的安全威胁情景是有弹性的。在本文中描述了可以缩放到IoT端点或可穿戴设备级的安全特征。

越来越多地,以强安全保证(在可信执行环境内)执行代码的能力被视为针对IoT和可穿戴设备的有益安全能力。当设备变为连接的并且托管多个利益相关方时,基于监管方和用户特权的粗粒度分离的传统模型(Ring 0/Ring 3)或者在一些情况下的简单地信任系统中的所有代码,不再是足够的。

使得能够实现可信执行环境(TEE)的一些方法已经涉及到专用处理器模式、特殊指令以及专用安全协处理器。然而,这些方法由于极端的成本约束和资源约束(存储器、CPU周期)而并不容易缩放到将受益于更轻量的解决方案的IoT端点和可穿戴设计点。

本文中所描述的实施例使得能够实现针对轻量、IoT以及可穿戴平台以及供嵌入式计算系统中使用的轻量的、可缩放的、可信执行能力。本文中词语“轻量”的使用意指所公开实施例的性能和资源要求与在IoT和可穿戴空间中的资源约束的平台相一致。本文中词语“可缩放”的使用意指所公开的实施例支持具有灵活范围的部署选项的多个、互相隔离的TEE。这种原生地缩放到多个、互相隔离的TEE的能力是由一些实施例提供的优点。

本文中所公开的一些实施例使得能够实现供处理器和计算设备中使用的可信执行环境。定义了轻量可信任务(LTT)基元,其提供以下优点中的一项或多项:

存储器隔离:LTT与在系统上运行的其他任务隔离。这包括OS/应用/驱动程序/其他LTT模式任务。

入口点实施:去往LTT的入口点被明确定义并且不可由LTT外部的任何实体进行修改。

安全中断。LTT可以被异步中断,并且不泄漏关于上下文切换的信息。本文中所公开的实施例操作为保护LTT的机密性和完整性。

LTT绑定。LTT可以被安全地绑定到处理器外部的实体,例如,片上系统(SoC)代理。

调试能力。可以使用由一些处理器和处理器核提供的可用调试和跟踪特征来对LTT进行调试。对于生产而言,调试和跟踪可以以每LTT为基础而被禁用。

可以支持复杂安全架构:使用LTT基元,可以构建复杂安全架构。例如,可以使得能够实现诸如证明(attestation)和密封(sealing)之类的可信计算概念。可以支持多利益相关方场景,例如多个、互相不信任的第三方。

可以支持多重使用:与提供安全世界/不安全世界模型的解决方案相比,支持了多个、互相隔离的LTT模式任务。这开放了多利益相关方使用模型,其中一个或多个第三方可以向系统中提供LTT模式任务。

硬件要求。如下文进一步描述的,对于在一些实施例中支持处理器或处理器核上的LTT基元的附加硬件要求被限制到一个控制和状态模型特定寄存器(MSR),以及四个受保护的存储器区域基本/掩码范围模型特定寄存器对。在一些实施例中,需要将206个微操作(microp)(~1.2 KB)储存在固件只读存储器(ROM)中。

利用处理器能力:在一些实施例中,例如在处理器和处理器核中实现的那样,轻量可信任务(LTT模式任务)利用受保护模式能力,其已经提供机制来增强软件弹性和鲁棒性。划分使得能够实现以字节粒度在任务之间的存储器隔离,同时任务管理电路支持硬件任务切换,即,与任务上下文切换相关联的内部开销(overhead)由处理器而不是软件来承担。在必要的情况下,本文中所公开的实施例对这些特征进行扩充来提供对于轻量可信任务所期望的属性。结果是用以可信执行的以任务为中心的方法,其中任务基元被用来提供多个、互相隔离的执行环境。

要领会的是,如下面在本文中所描述的使用LTT模式任务的实施例被应用于各种类型的处理器架构,所述处理器架构提供受保护模式存储器和任务管理电路。

图1是图示了根据实施例的用以实现轻量可信任务基元的计算系统的框图。如示出的,处理器102经由处理器总线108与可选的2级高速缓存104、本地存储器106、本地外围控制器110以及总线控制器112进行交互。本地外围控制器110和总线控制器112经由系统总线114与“慢速”存储器116和其他外围设备118进行交互。

处理器102不限于任何特定的制造商或指令集架构。

图2是图示了根据实施例的用以实现轻量可信任务基元的系统架构的框图。如示出的,LTT模式任务212与固件RoT 218和有LTT能力的硬件220一起包括可信计算基(TCB)202。由虚线指示的TCB 202是在系统中可信的硬件和软件部件的集合。LTT模式任务212利用处理器的存储器保护机制来针对来自TCB 202外部的对其代码、数据、堆栈和配置的访问进行保护。LTT基元的使用防止了由任务206、任务208、任务210、驱动程序214或实时操作系统(RTOS)216对LTT模式任务212的代码、数据、堆栈和配置的访问。

因此,LTT基元可以被用于防止甚至由另一个LTT模式任务204对LTT模式任务212的代码、数据、堆栈和配置的访问。例如,LTT模式任务212可以是由原始设备制造商(OEM)进行的可信部署,同时LTT模式任务204可以是由客户端进行的不可信部署。使用LTT模式基元将LTT模式任务212与操作系统隔离、与其他任务隔离以及甚至与其他LTT模式任务(诸如LTT模式任务204)隔离。换言之,LTT基元的使用可以甚至将其他LTT模式任务互相排除在访问彼此的代码、数据、堆栈和配置之外。

从TCB外部访问LTT模式任务212的数据、代码、堆栈或配置的尝试被配置成生成故障。

图2示出了构建在LTT基元上的基础架构。如示出的,安全架构包含:

1. 有LTT能力的硬件220;

2. 用以对LTT模式任务212进行配置和锁定的固件可信根(RoT)218;

3. 实时操作系统(RTOS)216,其包括驱动程序214;

4. 一个或多个附加的LTT模式任务204;以及

5. 附加的任务206、208和210。

如在图2中进一步示出的,由虚线示出的可信计算基(TCB)202包括LTT模式任务212并且排除RTOS 216、驱动程序214、附加的LTT模式任务204以及任务206、208和210。通过利用处理器的存储器保护机制,即使RTO 216、驱动程序214、附加的LTT模式任务204以及任务206、208和210中的任何一个或多个的安全被危害,LTT模式任务212的完整性和机密性仍被维持。因此,针对RTOS 216、驱动程序214、附加的LTT模式任务204以及任务206、208和210中的任何一个或多个中的安全危害来保护LTT模式任务212,而不管操作特权级别(Ring 0、Ring 1、Ring 2或Ring 3)如何以及甚至是在另一个LTT模式任务204中。

通过在LTT基元上进行构建,可以使得能够实现复杂安全架构,其提供安全保护,所述安全保护超越了被限制到特权分离的安全架构的安全保护。LTT基元的使用可以使得能够实现先进的保护技术,例如以确保设备完整性、证明、隔离以及受保护的储存,如例如在由可信计算组织股份有限公司公布的“TPM 2.0移动参考架构参考”中所描述的。

图3示出了被用来实现轻量可信任务基元的处理器的系统级数据结构和系统级寄存器的一个实施例。系统级数据结构和寄存器300包括EFLAGS、控制和任务寄存器302,中断描述符表(IDT)304,中断描述符表寄存器(IDTR)306,全局描述符表(GDT)308,全局描述符表寄存器(GDTR)310,本地描述符表(LDT)312,本地描述符表寄存器(LDTR)314,供第一任务316使用的寄存器、存储器结构和任务状态区段(TSS)数据结构,以及供第二任务318使用的寄存器、存储器结构和TSS数据结构。

受保护模式划分和任务管理电路

使用系统数据结构的集合来配置受保护模式划分和任务管理电路(在图3中示出),其通过特权(Ring 0)代码来配置。在图3的实施例中,这些数据结构是:

1. 全局描述符表(GDT)308。所述GDT 308全局地跨所有任务定义了受保护模式划分。GDTR 310限定了GDT 308的基地址。

2. 本地描述符表(LDT)312。所述LDT 312以每个任务为基础定义了受保护模式划分。LDTR 314定义了针对当前活动任务的LDT 312的基地址。

3. 任务状态区段(TSS)316和318。所述TSS 316和318包含针对一个或多个任务的上下文并且通过任务管理电路而在上下文切换上保存/恢复。任务寄存器(TR)302指向当前活动任务。任务管理电路要将任务状态区段(TSS)与任务相关联,以在暂停之前储存任务的上下文状态信息并且要在恢复任务时召回上下文状态信息。

4. 中断描述符表(IDT)304。所述IDT 304定义了针对中断和例外的向量。IDTR 306指向IDT 304的基地址。

在一些实施例中,存储器保护电路访问被储存在物理存储器中并且包含多个区段描述符的描述符表,以提供针对至少一个LTT模式任务和至少一个非LTT模式任务的代码、数据和堆栈区段的基地址和访问权利。例如,在处理器中,本地描述符表(LDT)和全局描述符表(GDT)是包含区段描述符以提供针对至少一个LTT模式任务和至少一个非LTT模式任务的代码、数据和堆栈区段的基地址和访问权利的描述符表。在一些实施例中,存储器保护电路还包括执行电路来接收来自执行来自非LTT模式任务的代码的处理器的至少一个存储器访问请求,以及通过将区段描述符基地址与所述至少一个存储器访问请求的地址进行比较来从描述符表检索区段描述符。存储器保护电路进一步针对任何非LTT模式任务访问LTT模式任务的代码、数据和堆栈区段进行保护,而不管所述至少一个非LTT模式任务的特权级别如何。

即使非LTT模式任务正在Ring 0下运行,其也不能访问LTT模式任务的代码、数据和堆栈区段或配置。这种行为在刚好使用特权级别来隔离任务的保护机制上提供了一个优点,这例如是因为该行为防止了已经由于访问或操纵LTT模式任务而被危害的非LTT模式Ring 0任务。

在一些实施例中,存储器保护电路使用处理器来对来自物理存储器的指令进行取指、解码和执行,所述执行要发生在受保护模式中并且发生在Ring 0特权级别下。在一些实施例中,存储器保护电路使用处理器来对来自固件只读存储器(ROM)的指令进行取指、解码和执行,所述执行要发生在受保护模式中并且发生在Ring 0特权级别下。在一些实施例中,存储器保护电路使用处理器来对来自固件FLASH ROM的指令进行取指、解码和执行,所述执行要发生在受保护模式中并且发生在Ring 0特权级别下。

图4是示出了使用处理器中受保护模式特征来将任务彼此隔离的示图。如示出的,系统数据结构400包括:任务寄存器(TR)402,其指向当前任务的任务状态区段(TSS);中断描述符表寄存器(IDTR)404,其指向中断描述符表;本地描述符表寄存器(LDTR)406,其指向当前任务的本地寄存器表;以及全局描述符表寄存器(GDTR)408,其指向全局描述符表(GDT)410。图4进一步示出了隔离的任务1 412、隔离的任务2 414以及操作系统和任务(OS/任务)416,其中的每个包括任务状态区段(TSS),本地描述符表以及包括代码、堆栈和数据区段的受保护存储器区域。

图4示出了通过使用处理器的受保护模式特征将如何配置三个隔离的地址空间,允许OS及其任务(隔离的任务1和隔离的任务2)彼此相互隔离,如在它们的代码、堆栈和数据区段存储器区域周围由虚线图示的那样。该受保护模式保护模型是通过以下方式来配置的:适当地设置GDT 410、当前任务的LDT、IDT(未示出)以及TSS系统数据结构,以及将TR 402、IDTR 404、LDTR 406和GDTR 408基地址寄存器指向它们相关联的数据结构。

受保护模式使得能够实现SW架构,该SW架构增加软件鲁棒性和可靠性。在图示的实施例中,隔离的任务1 412正在Ring 3特权级别下运行,而隔离的任务2 414和OS/任务416正在Ring 0下运行。从安全视角来看,存在特权(Ring 0)代码是可信的隐含假设。然而,在图4中,虽然在虚线框内有3个隔离的地址空间,但是Ring 0中运行的OS/任务416或隔离的任务2 414内的安全危害将导致整个系统的危害。

另一方面,本文中所公开的实施例假设特权(Ring 0)代码是不可信的并且引入对受保护模式的访问控制和扩展,其防止特权代码操纵受保护模式特征。结果是经扩充的受保护模式,其允许任务以更强的安全性来执行。

图5是示出了根据实施例的轻量可信任务的锁定和受保护存储器区域的示图,该锁定和受保护存储器区域提供保护,甚至是免受其他特权Ring 0任务的影响。图5的实施例使用系统数据结构基地址寄存器(IDTR 504、LDTR 506和GDTR 508)和任务寄存器(TR 502)的特权代码锁定。一旦被锁定,由任何特权级别的代码来操纵那些资源的尝试都被阻止。附加地,定义了受保护的存储器区域518,其内放置了系统数据结构510、TSS和LDT数据结构,以及与可信LTT1 512和可信LTT2 514相关联的代码、堆栈和数据存储器区域。由任意特权级别的非LTT代码访问受保护的存储器区域的尝试将失败。如示出的,TSS0和LDT0处于受保护的存储器区域520内。

如示出的,与不可信OS和任务516相关联的TSS和LDT数据结构被包括在受保护的存储器区域内,但是不可信OS和任务516的代码、堆栈和数据区域是在受保护的存储器区域外部,并且被阻止访问受保护的存储器区域内的寄存器和存储器区域。

使用图5的方法在图4的架构上提供了一个优点,这是因为即使是有特权的,LTT模式任务和OS/任务的隔离属性也被维持,Ring 0代码被危害并且尝试颠覆配置。

轻量可信任务基元

图6示出了根据实施例的轻量可信任务控制和状态寄存器。在一些实施例中,LTT控制和状态寄存器600是软件可访问的模型特定寄存器(MSR),其由处理器提供以使得能够实现LTT特征,指示所述特征是否是活动的,以及锁定所述特征直到下一次系统复位。如示出的,LTT控制和状态寄存器600是64位寄存器,其包括在位0处的可读和可写LTT特征使能位606,在位1处的可读LTT特征活动位604,以及在位2处的可读和可写锁定位602。位63到3被保留。

如在608处所描述的,当被置位时,可读和可写LTT特征使能位606启用LTT模式。

如在610处描述的,当被置位时,可读LTT特征活动位604指示LTT模式是活动的。

如在612处描述的,当被置位时,可读和可写锁定位602将LTT控制和状态寄存器(例如寄存器600)锁定,使得对LTT控制或状态寄存器的任何进一步写入都生成故障。在一些实施例中,一旦被置位,锁定位602不能被清除,除非通过系统复位。在正常的使用中,一旦LTT配置完成就对锁定位602进行置位,并且LTT特征被启用。

如在614处描述的,LTT控制和状态寄存器600的位63到3是只读的并且在读取时返回零(0)。对保留位的写入生成故障。

启用LTT特征

图7是根据一些实施例的轻量可信任务(LTT)状态的执行流的流程图。如示出的,LTT执行流包括三个状态,702和706(在此期间LTT特征是非活动的)以及704(在此期间LTT特征是活动的)。如本文中所使用的,LTT特征有时被称为LTT模式。

如示出的,LTT特征活动位是高态活动的,意为当其等于1时其是活动的,以及当其等于0时其是非活动的。在其他实施例中,活动位被不同地编码。可以由软件通过读取LTT控制和状态寄存器600(图6)的LTT特征活动位604来确定当前LTT特征状态。

在一些实施例中,可以通过将0写入到LTT状态和控制寄存器600(图6)的LTT特征使能位606来一起禁用LTT特征。如果LTT特征被禁用,则LTT状态图处于什么状态中是没关系的;LTT特征将被禁用。

如示出的,当复位时,LTT状态图转变到状态702,在此期间LTT特征是非活动的。在状态702中时,通过对LTT状态和控制寄存器600的LTT特征使能位606进行置位来启用LTT特征,假设前提条件集合为真,则将状态转变到704,在此期间LTT特征是活动的。

前提条件集合是实现方式特定的。在一个实施例中,如果在对LTT特征使能位进行置位之前已经例如通过处理器的机器检查架构生成了机器检查例外,则前提条件集合不为真。如果前提条件集合不为真,则LTT状态图保持在状态702中,其中LTT特征为非活动。

如上文所描述的,在状态702中时激活LTT特征可以通过将1写入到LTT控制和状态寄存器600的LTT特征使能位606来完成。在一些实施例中,在写入期间使用写掩码来仅允许位606被修改。在一些实施例中,使用读取-修改-写入来读取LTT控制和状态寄存器600、仅修改LTT特征使能位606并且将其写回。

在LTT特征被激活之后,LTT状态图保持在状态704中,其中LTT特征是活动的直到LTT特征被去激活或被禁用。在一些实施例中,在正常操作期间,LTT状态图将处于状态704中并且LTT特征使能位606和LTT特征活动位504将都等于1。

在处于状态704中时,可以通过将0写入到LTT状态和控制寄存器600的LTT特征使能位606来禁用LTT特征。当被禁用时,LTT状态图转变到状态702,在此期间LTT特征被禁用(位606=0)并且是非活动的(位604=0)。

在处于状态704中时,还可以响应于去激活事件来去激活LTT特征。当被去激活时,LTT状态图转变到状态706,在此期间LTT特征是非活动的。去激活事件是实现方式特定的。在一些实施例中,例如由处理器机器检查架构生成的机器检查例外导致了去激活事件。在一些实施例中,禁用先前启用的机器检查架构导致了去激活事件。如在本文中所使用的,机器检查架构是一种机制,通过该机制处理器向操作系统报告硬件错误。

一旦被去激活,LTT状态图保持在706中,直到发生复位,在发生复位时状态图转变到状态702,其中LTT特征被禁用的(位606=0)并且是非活动的(位604=0)。

在一些实施例中,当LTT执行流处于704状态中并且LTT特征是活动的时,对去激活事件的接收使LTT状态图直接转变到702,而并非转变到状态706。为了简洁性起见,这种转变在图7中未示出。

与LTT基元相关联的行为

一旦被启用,轻量可信任务基元的一些实施例引起对标准处理器行为的行为改变集合。LTT基元的一些实施例意图阻止特权代码操纵LTT配置。当结合锁定功能使用时,可以锁定LTT配置直到下一次系统复位。以这种方式,固件可信根(其在一些实施例中是不变的并且在复位后作为第一代码而被执行)可以配置LTT配置并且然后在切换到下个阶段(例如,OS)之前对其进行锁定。在一些实施例中,固件可信根在受保护的操作模式中运行。

一旦LTT功能被启用,以下行为改变中的至少一个或多个开始生效:

1. CPU模式切换。LTT模式任务要求受保护模式是活动的以及切换到任何其他CPU模式的尝试将引起CPU例外。

2. LGDT/LIDT指令。执行将引起CPU例外。

3. LLDT指令。执行将引起CPU例外。

4. LTR指令。执行将引起CPU例外。

5. INVD指令。执行INVD将导致转换到WBIND。

6. SYSENTER(系统进入)/SYSEXIT(系统退出)。执行将引起CPU例外。

7. 设备重定位。驻留于CPU边界内的支持重定位的设备(例如,APIC)将对重定位尝试引起CPU例外。

8. 支持非逐出模式的CPU高速缓存将对启用/禁用非逐出模式的尝试引起CPU例外。

9. 任务IO许可。总是针对LTT模式任务和不可信任务来检查IO许可,而不管特权级别如何。

受保护的存储器区域

在一些实施例中,受保护模式系统数据结构和每个轻量可信任务驻留于受保护的存储器区域中。受保护的存储器区域尝试阻止不可信的代码(例如,非LTT代码)访问LTT代码/数据或者限定所保护模式行为的系统数据结构。由直接存储器参考导致的访问或由一个或多个级别的间接(例如,来自页面管理或存储器管理电路映射)所导致的存储器参考两者都被禁止。

以这种方式,LTT数据、代码和系统数据结构的机密性和完整性被维持以用于分页使用或非分页使用。受保护的存储器区域的数量是实现方式特定的。

在一些实施例中,OS地址空间被设定成扁平的(设定为4 GB)。在LTT环境中,受保护的存储器区域具有以下益处:允许OS继续使用该方法,简化OS移植工作,同时维持针对LTT基元和系统数据结构的完整性和机密性。

下文的表格3描述了对在受保护的存储器区域内的数据和数据结构提供的保护。表格3参考了三个存储器访问类型类别,并且针对每一个定义了行为:

1. 显式访问是由任何特权级别下的代码执行所导致的存储器访问;表格3将针对由标准任务进行的显式访问的行为与针对由轻量可信任务进行的显式访问的行为进行区分;

2. 隐式访问是由下层CPU架构发布来执行其操作的存储器访问。示例操作是对GDT/LDT/TSS的访问;以及

3. 调试访问是由调试特征所导致的存储器访问。

表格3. 在受保护的存储器区域内部和外部进行访问时的行为

图8示出了根据实施例的受保护存储器区域基地址寄存器。如示出的,受保护存储器区域基地址寄存器800包括在位{MAXPHYSADDR-1:12]处的基本字段804,、在位[63:MAXPHYSADDR]处的保留字段802以及在位[11:0]处的保留字段806。MAXPHYSADDR是实现方式特定的常数。图8将基本字段808描述为读取/可写入寄存器,其定义了范围寄存器的低位地址限制。图8还将保留字段810描述为只读寄存器,其在读取时返回0并且在写入时生成故障。

图9示出了根据实施例的受保护存储器区域掩码寄存器。如示出的,受保护存储器区域掩码寄存器900包括在位[MAXPHYSADDRESS-1:12]处的掩码字段904、在位[11]处的有效字段906、在位[63:MAXPHYSICALADDRESS]处的保留字段以及在位[10:0]处的保留字段908。图9将910处的有效字段示为读取/可写入寄存器,其在被置位时,表示基本寄存器和掩码寄存器的内容是有效的。图9还将912处的掩码字段描述为读取/可写入寄存器,其定义了范围寄存器的掩码部分。图9还将保留字段914描述为只读寄存器,其在读取时返回0并且在写入时生成故障。一些实施例包括多个受保护的存储器区域,每一个由基地址寄存器(诸如基地址寄存器800)以及由掩码寄存器(诸如掩码寄存器900)来定义。

受保护的存储器区域的一个实现方式使用如在图8中示出的基地址范围寄存器以及如在图9中示出的掩码范围寄存器来定义每个受保护的存储器区域。可以存在多个非邻接的受保护存储器区域,每个由范围寄存器对来限定。支持将受保护的存储器区域进行重叠,在该情况下,得到的受保护存储器区域包括各个受保护存储器区域的联合体。

对受保护模式的LTT模式扩展

轻量可信任务是构建在受保护的模式任务特征上的以任务为中心的技术。本文中所公开的实施例介绍一种新的任务类型,轻量可信任务(LTT)。

图10是根据实施例的被扩展以供轻量可信任务使用的任务区段寄存器。受保护模式采用被称为任务状态区段(TSS)的数据结构来储存任务上下文。所述TSS包括I/O映射基地址1002和保留字段1004。如在图10中示出的,轻量可信任务通过两个位来扩展该数据结构1000以支持LTT模式任务(见图6):

1. LTT模式位1006(TSS偏移小数100,位2);

2. LTT DBG位1008(TSS偏移小数100,位1)。

当被置位时, LTT模型位1006向下层CPU架构指示当前任务是轻量可信任务。当清除时,所述任务表现为标准受保护模式任务。LTT调试位1008提供针对LTT模式任务的调试选择性加入(opt-in)能力。当清除时,标准调试特征在LTT入口上是抑制的并且在LTT出口上是非抑制的,有可能选择性加入以通过对LTT DBG位进行置位来以每LTT为基础进行调试。在这种情况下,对于标准(非LTT)任务可用的所有调试特征的集合变为对LTT可用。

在本文中所公开的一些实施例中,LTT模式任务与标准受保护模式任务在三个方面上有所不同。第一,LTT模式任务可以在无限制的情况下对受保护的存储器区域进行读取或写入。第二,LTT模式任务是非分页的。那意为着由LTT模式任务生成的存储器访问表现为仿佛分页被禁用,而不管分页电路(或存储器管理电路)是否被启用。第三,LTT任务必须以每LTT为基础上选择性加入到调试中。

在包括分页单元(存储器管理电路)的实现方式中,标准任务与LTT模式任务之间的切换可以冲刷本地转译后备缓存器(TLB)和全局转译后备缓存器(TLB)两者。

此外,本文中所公开的一些实施例引入新的TSS例外,其超越已经由处理器定义的那些例外。第一,当LTT模式任务被启用并且遇到16位任务状态区段时,例外发生;第二,当LTT模式任务被启用并且遇到VM-8086任务时,例外发生;第三,当LTT模式任务被启用但却是非活动的并且遇到LTT模式任务时,例外发生。在一些实施例中,这些新的TSS例外利用并且使用无效TSS例外,所述无效TSS例外已经在处理器中被定义为在发生与TSS有关的错误时被断言(assert)。

标准受保护模式任务包括IO许可位图,该IO许可位图提供了一种机制来限制以每个任务为基础对I/O端口的访问[1]。当轻量可信任务被启用时,限制哪些IO端口对任务或LTT可访问的IO许可位图总是被应用和执行(honor),而不管特权级别如何。

图11示出了实现轻量可信任务的物理存储器映射的实施例。图11示出了被配置以与LTT模式任务一起使用的物理存储器1100。固件RoT 1102(可信根)负责LTT配置和锁定。在一些实施例中,通过阻止RoT 1102改变或被更改来增强保护。在一些实施例中,通过尝试将用于执行的RoT 1102调度为在第一代码当中以在复位之后执行来增强保护。物理存储器1100包括操作系统1116和被配置为标准受保护模式任务的非LTT模式任务1110、1112和1114。

存储器映射1100还包括LTT模式任务1 1104、LTT模式任务2 1106以及系统该数据结构(GDT、LDT、IDT、TSS)1108,它们中的每个都处于受保护的存储器区域1120中(虚线),表示它们驻留于受保护的存储器区域内。使用受保护模式灵活地实现LTT1、LTT2和系统数据结构的相互隔离。受保护的存储器区域将LTT1、LTT2和系统数据结构与由任何标准(非LTT)任务进行的访问相隔离。

存储器类型和高速缓存控制

在具有存储器类型控制的架构上的轻量可信任务实现方式(例如,存储器类型范围寄存器、页面属性表或高速缓存控制(例如高速缓存启用/禁用、高速缓存不透写))可能需要高速缓存自窥探。

构造指示

轻量可信任务支持下述使用:其中处理器核外部的外围设备可以被绑定到特定LTT。这种能力需要在SoC构造策略执行方面的来自SoC构造的支持。SoC构造策略执行的细节是实现方式相关的并且在本文档的范围之外。

图12示出了根据实施例的包含当前活动任务的TSS选择符的任务寄存器。在操作期间,任务寄存器(TR)1200包含当前活动任务(IA任务或LTT模式任务)的TSS选择符。LTT模式使得在任务寄存器1200的位15:3处的索引1202在处理器核接口处可用,以将当前活动的任务指示为信号TSS_SEL。任务寄存器包含针对当前活动任务的TSS选择符。TR 1200还包括表指示符1204,以指示任务区段描述符是在本地描述符表中还是在全局描述符表中。TR 1200还包括所请求的特权级别1206,以指示任务是否请求Ring 0特权。注意的是,活动任务可以是IA任务或LTT模式任务。特定TSS选择符和任务类型之间的映射由使用LTT锁定机制的固件RoT和锁定来配置。

图13示出了使用LTT模式任务的片上系统(SoC)的实施例。如示出的,SoC包括处理器核1300和多个功能单元所连接到的SoC构造,所述多个功能单元是:SoC构造控制1324、GPIO 1326、UART 1328、密码引擎1330、PMU 1332以及LTE调制解调器1334。处理器核1300包括全局描述符表(GDT)1301,其包含GPIO TSS 1318,UART TSS 1316,PMU TSS 1314,密码引擎TSS 1312,LTE调制解调器TSS 1310,自由槽位1304、1306和1308,以及其余的GDT条目1302。处理器核1300还包括用以选择当前执行中的任务的任务寄存器1320。在该实施例中,仅密码引擎1330是LTT模式任务;其余的任务是标准任务。当密码引擎1330是活动的时,活动的高限定符TSS QUALIFY被提供用于TSS_SEL信号。TSS Sel[12:0]被设置到任务寄存器(15:3)以及TSS QUALIFY=TSS.LTT_MODE。

由更宽的SoC使用TSS选择符和限定符是实现方式相关的。全部13位不一定都需要被SoC使用。简单的使用模型将仅使用TSS_SEL_QUAL来指示当前正执行的任务是安全或不安全的。更复杂的使用将对TSS选择符的全部或子集进行解码以将LTT模式任务联结到特定SoC外围设备。图9示出了在典型的SoC上下文中使用TSS_SEL和TSS_SEL_QUAL的示例。

图14是根据实施例的用于在上电之后对轻量可信任务基元进行初始化和保护的执行流的流程图。如图示的,执行流要由处理器实行。在1402处,处理器被复位,其例如在上电之后发生。在1404处,由处理器的执行电路对固件可信根指令进行取指、解码和执行,以初始化LTT特征,配置至少一个LTT模式任务的受保护的存储器区域,启用和锁定所述至少一个LTT模式任务,以及引导至操作系统。在一些实施例中,固件指令被储存于固件只读存储器(固件ROM)、引导ROM或其他引导存储器中以及从其进行加载。在1406处,由处理器的存储器保护电路从处理器的执行电路接收存储器访问请求。在一些实施例中,所接收到的存储器访问请求由执行电路生成,同时执行与另一个任务相关联的代码。在1408处,存储器保护电路确定所接收到的存储器访问请求是否正试图访问至少一个LTT模式任务的受保护的存储器区域。

在一些实施例中,为了确定所接收到的存储器访问请求是否正尝试访问所述至少一个LTT模式任务的受保护的存储器区域,存储器保护电路访问至少一个LTT模式任务的任务状态区段,并且将请求地址与所述至少一个LTT模式任务的代码、数据、堆栈区段、本地描述符表和TSS的地址进行比较。当所接收到的存储器访问请求正尝试访问受保护的存储器区域时,在1410处,所述存储器保护电路针对所接收到的存储器访问请求访问所述至少一个LTT模式任务的受保护的存储器区域进行保护,而不管所接收到的存储器访问请求的特权级别如何以及不管所接收到的存储器访问请求是否来自另一个LTT模式任务。因此,LTT模式任务的受保护的存储器区域是相互排斥的,并且针对访问彼此的受保护的存储器区域而被保护。在一些实施例中,存储器保护电路通过生成故障来针对访问受保护的存储器区域的尝试进行保护。

当所接收到的存储器访问请求并未正尝试访问受保护的存储器区域时,在1410处,所述流程返回1406以由处理器的存储器保护电路从处理器的执行电路接收另一个存储器访问请求。

因此,图14的执行流包括初始化、启用LTT模式任务的一个实施例。图14的流程还可以被用来初始化不是LTT模式任务的另一个任务。图14的执行流进一步包括由处理器执行LTT模式任务和另一任务的一个实施例,同时保护LTT模式任务的受保护的存储器区域免于被另一任务所访问,而不管另一任务的特权级别如何以及不管另一任务是否也是LTT模式任务。

图15是根据一个实施例的在上电之后初始化轻量可信任务基元的可信根方法的执行流的流程图。在复位1502之后,在1504处,执行核开始执行被储存在引导ROM中的固件可信根指令。在1506处,初始化LTT数据结构以及操作系统存储器和状态。在1508处,生成或得出每LTT的资产(asset)。在1510处,初始化系统数据结构和受保护的存储器区域。在1512处,检查配置以确保其是有效的,并且如果其是无效的,则在1514处系统停止。如果配置是有效的,则在1516处通过上文所描述的对LTT控制和状态寄存器(例如600)中的LTT使能位进行置位来启用LTT特征。结合在1516处启用LTT特征,通过对LTT控制和状态寄存器中锁定位进行置位来锁定LTT特征。在1518处,在LTT特征已经被配置的情况下,系统引导到操作系统。

图15的执行流因此包括由处理器初始化和启用LTT模式基元的一个实施例。

图16是根据本文中所公开的实施例的可以具有多于一个核、可以具有集成存储器控制器以及可以具有集成图形部件的处理器的框图。图16中的实线框图示了具有单个核1602A、系统代理单元1610、一个或多个总线控制器单元1616的集合的处理器1600,同时虚线框的可选附加项图示了对具有多个核1602A-N、系统代理单元1610中的一个或多个集成存储器控制器单元1614的集合以及专用逻辑1608的处理器1600的替换方案。

因此,处理器1600的不同实现方式可以包括:1)CPU,其具有是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核)的专用逻辑1608,以及核1602A-N,其是一个或多个通用核(例如,通用有序核、通用无序核、二者的组合);2)协处理器,其具有是主要意图用于图形和/或科学(吞吐量)逻辑的大量专用核的核1602A-N;以及3)协处理器,其具有是大量通用有序核的核1602A-N。因此,处理器1600可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(MIC)协处理器(包括30或更多的核)、嵌入式处理器等等。处理器可以被实现在一个或多个芯片上。处理器1600可以是使用多种处理技术(诸如例如,BiCMOS、CMOS或NMOS)中的任意技术的一个或多个基板的一部分和/或可以被实现于所述一个或多个基板上。

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

在一些实施例中,处理器1600在没有外部高速缓存以及没有外部存储器的情况下,使用在同一管芯上紧密耦合的存储器。

虽然在一个实施例中,基于环的互连单元1612将专用逻辑1608(集成图形逻辑是专用逻辑1608的示例)、共享高速缓存单元1606的集合以及系统代理单元1610/(一个或多个)集成存储器控制器单元1614进行互连,替换的实施例可以使用用于将这样的单元互连的任意数量的公知技术。在一个实施例中,在一个或多个高速缓存单元1606和核1602-A-N之间维持一致性。

在一些实施例中,核1602A-N中的一个或多个能够进行多线程操作。系统代理单元1610包括协调和操作核1602A-N的那些部件。系统代理单元1610可以包括例如功率控制单元(PCU)和显示单元。所述PCU可以是或包括针对调整核1602A-N和专用逻辑1608的功率状态所需要的部件和逻辑。显示单元是用于驱动一个或多个外部连接的显示器。

核1602A-N可以在架构指令集方面是同构的或异构的;即,核1602A-N中的两个或更多个可以能够执行相同的指令集,而其他核可以能够仅执行该指令集的子集或者执行不同的指令集。

示例性寄存器架构

图17是根据一个实施例的寄存器架构1700的框图。在图示的实施例中,存在512位宽的32个向量寄存器1710;这些寄存器被引用为zmm0到zmm31。低位的16个zmm寄存器的低位序256位被覆盖在寄存器ymm0-16上。低位的16个zmm寄存器的低位序128位(ymm寄存器的低位序128位)被覆盖在寄存器xmm0-15上。

写掩码寄存器1715——在所图示的实施例中,存在8个写掩码寄存器(k0到k7),每个在大小上是64位。在替换的实施例中,写掩码寄存器1715在大小上是16位。如先前描述的,在本文中所公开的实施例中,向量掩码寄存器k0不能被用作写掩码;当将通常指示k0的编码被用于写掩码时,其选择0xFFFF的硬连线写掩码,有效地禁用了针对该指令的写掩码。

通用寄存器1725——在图示的实施例中,存在十六个64位通用寄存器,其与现有的x86寻址模式一起使用来对存储器操作数进行寻址。这些寄存器由名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8到R15来引用。

标量浮点堆栈寄存器文件(x87堆栈)1745,在其上别名的是MMX包装整数扁平寄存器文件1750——在图示的实施例中,x87堆栈是被用来使用x87指令集扩展对32/64/80位浮点数据实行标量浮点运算的八元素堆栈;而MMX寄存器被用来对64位包装整数数据实行运算,以及用来保持用于在MMX和XMM寄存器之间实行的一些运算的操作数。

现在参照图18,示出的是根据本发明的实施例的SoC 1800的框图。图16中的类似元件具有相同的附图标记。而且,虚线框是在更高级的SoC上的可选特征。在图18中,(一个或多个)互连单元1802被耦合到:应用处理器1810,其包括一个或多个核1602A-N的集合,所述一个或多个核1602A-N包括高速缓存单元1604A-N以及(一个或多个)共享高速缓存单元1606;系统代理单元1610;(一个或多个)总线控制器1616;(一个或多个)集成存储器控制器单元1614;一个或多个协处理器1820,其可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1830;直接存储器访问(DMA)单元1832以及用于耦合到一个或多个外部显示器的显示单元1840。在一个实施例中,(一个或多个)协处理器1820包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等等。

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

仿真(包括二进制转译、代码融合等)

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

图19是根据本文中所公开的实施例的对软件指令转换器的使用进行对比的框图,所述软件指令转换器用以将源指令集中的二进制指令转换成目标指令集中的二进制指令。在图示的实施例中,指令转换器是软件指令转换器,但是替换地,指令转换器可以以软件、固件、硬件或其各种组合来实现。图19示出了可以使用x86编译器1904来编译高级语言1902中的程序,以生成可以由具有至少一个x86指令集核1916的处理器原生地执行的x86二进制代码1906。具有至少一个x86指令集核1916的处理器表示可以通过以下方式实行与具有至少一个x86指令集核基本相同功能的任何处理器:兼容地执行或以其他方式处理(1)英特尔x86指令集核的指令集的实质部分或(2)以在具有至少一个x86指令集核的英特尔处理器上运行为目标的应用或其他软件的对象代码版本,以便实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果。所述x86编译器1904表示可操作来生成x86二进制代码1906(例如,对象代码)的编译器,所述x86二进制代码1906可以在具有或不具有附加联动处理的情况下在具有至少一个x86指令集核1916的处理器上执行。类似地,图19示出了可以使用替换的指令集编译器1908来编译高级语言1902中的程序,以生成替换的指令集二进制代码1910,其可以由不具有至少一个x86指令集核1914的处理器(例如,具有下述核的处理器:所述核执行加州森尼维耳市的MIPS技术公司的MIPS指令集和/或执行加州森尼维耳市的ARM控股公司的ARM指令集)原生地执行。指令转换器1912被用来将x86二进制代码1906转换成可以由不具有x86指令集核1914的处理器原生地执行的代码。这种经转换的代码不太可能与替换指令集二进制代码1910相同,因为能够这么做的指令转换器是很难制成的;然而,经转换的代码将完成一般操作并且由来自替换指令集的指令构成。因此,指令转换器1912表示软件、固件、硬件或其组合,其通过仿真、模拟或任何其他过程而允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1906。

本文中所公开的替换实施例可以使用更宽的或更窄的寄存器。附加地,本文中所公开的替换实施例可以使用更多、更少或不同的寄存器文件和寄存器。

图20是根据实施例的用于对轻量可信任务(LTT)进行配置、锁定以及执行的执行流的流程图。在图示的实施例中,除了2012和2016要由处理器的存储器保护电路来执行以外,所述流程要由处理器的执行电路来执行。在2002处,执行可信根指令来配置LTT模式任务。在2002处配置LTT模式任务包括至少定义受保护的存储器区域以包括LTT模式任务代码、数据和堆栈区段,其本地描述符表以及其任务状态声明(TSS)。在一些实施例中,可信根指令被储存于引导ROM中并且从该引导ROM进行取指。在一些实施例中,在引导序列期间执行2002。在一些实施例中,可信根指令要由在受保护模式中以及在Ring 0特权级别下操作的处理器的执行单元来执行。在2004处,锁定LTT模式任务的代码、数据、堆栈和配置。在2006处,启用LTT模式任务。在2008处,由处理器的执行单元对来自另一个任务的存储器访问指令进行取指和解码。在2010处,处理器的执行单元被用来向存储器保护电路发送存储器访问请求。在2012处,存储器保护电路确定存储器访问请求是否正尝试访问LTT模式任务的受保护的存储器区域,而不管另一任务的特权级别如何,以及不管另一任务是否也是LTT模式任务。如果是,则在2016处存储器保护电路要生成故障,以及然后流程结束。如果不是,在2014处确定去激活事件是否发生。在一些实施例中,去激活事件要在下述中的至少一个发生的时候发生:机器检查例外和将由处理器提供的先前启用的机器检查架构进行禁用的尝试。当去激活事件发生时,所述流程结束。当去激活事件尚未发生时,流程返回2008来对来自另一个任务的存储器访问指令进行取指和解码。

要理解的是,处理器的执行电路执行与存储器访问无关的许多指令,并且那些指令没有在图20中示出。还要理解的是,与LTT模式任务相关联的指令和与操作系统相关联的指令要被调度以用于同时执行。

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

这样的机器可读储存介质可以包括但不限于:由机器或设备制造或形成的制品的非临时性、有形布置,包括:储存介质(诸如硬盘、包括软盘的任何其他类型的磁盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘)、半导体设备(诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DARM)、固态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM))、相变存储器(PCM)、磁卡或光卡、或者适合于储存电子指令的任何其他类型的介质。

因此,本文中所公开的实施例还包括包含指令或包含设计数据(硬件描述语言(HDL))的非临时性、有形机器可读介质,其限定本文中所描述的结构、电路、装置、处理器和/或系统特征。这样的实施例还可以被称为程序产品。

另外的示例

示例1提供一种处理器,包括:与存储器的存储器接口,用以储存针对至少一个轻量可信任务(LTT)模式任务和另一任务的代码、数据和堆栈区段;LTT控制和状态寄存器,包括用以将至少一个LTT模式任务的配置锁定的可读取/可写入锁定位;处理器核,用以启用LTT模式,配置至少一个LTT模式任务以及通过写入所述锁定位来将至少一个LTT模式任务的配置锁定;以及存储器保护电路,用以:接收来自存储器接口的至少一个存储器访问请求,所述至少一个存储器访问请求与另一任务相关联;确定来自所述另一任务的所述至少一个存储器访问请求是否正尝试访问与所述至少一个LTT模式任务相关联的受保护的存储器区域;以及针对来自所述另一任务的所述至少一个存储器访问请求访问所述至少一个LTT模式任务的所述受保护的存储器区域进行保护,而不管所述另一任务的特权级别如何,以及不管所述另一任务是否也是LTT模式任务。

示例2包括示例1的本质内容,其中所述LTT控制和状态寄存器进一步包括可读取LTT活动位,其用以在所述LTT模式是活动的时由所述处理器来置位,以及可读取/可写入LTT使能位,其用以由所述处理器来写入以启用LTT模式。

示例3包括示例1到2中任一项的本质内容,其中所述至少一个LTT模式任务的受保护的存储器区域至少包括与所述至少一个LTT模式任务相关联的代码、数据和堆栈区段、本地描述符表和任务状态区段(TSS)。

示例4包括示例3的本质内容,其中所述存储器保护电路要进一步继续接收来自所述存储器接口的存储器访问请求,并且针对所接收到的存储器访问请求中的任意存储器访问请求访问所述至少一个LTT模式任务的受保护的存储器区域进行保护,直到发生去激活事件,所述去激活事件包括以下之一:机器检查例外和将由所述处理器提供的先前启用的机器检查架构进行禁用的尝试。

示例5包括示例3到4中任一项的本质内容,其中所述处理器进一步包括用以定义和隔离受保护的存储器区域的存储器管理电路,所述受保护的存储器区域包括所述至少一个LTT模式任务的代码、数据和堆栈区段、本地描述符表以及任务状态区段(TSS)。

示例6包括示例3到5中任一项的本质内容,进一步包括任务管理电路,其用以将TSS与所述至少一个LTT模式任务相关联以及在暂停所述至少一个LTT模式任务之前将上下文状态信息储存在所述TSS中,以及在恢复所述任务时从所述TSS召回所述上下文状态信息,所述TSS要进一步包括:LTT模式位,用以指示所述至少一个LTT模式任务是LTT模式任务,以及LTT调试位,用以指示所述至少一个LTT模式任务是否要选择加入(opt into)所述处理器的调试设施。

示例7包括示例1的本质内容,其中所述存储器管理电路进一步包括TSS寄存器,其用以包含当前执行中的任务的TSS数据结构的基地址。

示例8包括示例3到6中任一项的本质内容,其中所述TSS是包括104字节的32位模式数据结构,以及其中当发生以下各项中的任一项时,所述处理器要触发例外并且要生成故障:LTT模式被启用以及遇到具有比预期更少字节的TSS,遇到VM-8086任务,以及当LTT模式被启用但却是非活动的时遇到LTT模式任务。

示例9包括示例1到8中任一项的本质内容,其中所述LTT模式在被启用且是活动的时,当发生以下各项中的至少一项时要使所述处理器产生例外:从受保护的操作模式切换出的尝试,启用或禁用CPU高速缓存的非逐出模式的尝试,使用设备重定位能力将驻留于CPU边界内的设备重定位的尝试,以及执行LGDT、LIDT、LLDT、LTR、INVD、系统进入和系统退出指令中的至少一项的尝试。

示例10提供一种系统,包括:存储器,用以储存针对至少一个LTT模式任务和另一任务的代码、数据和堆栈区段;LTT控制和状态寄存器,包括用以将所述至少一个LTT模式任务的配置锁定的可读取/可写入锁定位;以及处理器核,用以启用LTT模式,配置至少一个LTT模式任务以及通过写入所述锁定位来将所述至少一个LTT模式任务的配置锁定,所述处理器核包括存储器保护电路,用以:接收来自所述存储器的至少一个存储器访问请求,所述至少一个存储器访问请求与另一任务相关联;确定所述至少一个存储器访问请求是否正尝试访问与所述至少一个LTT模式任务相关联的受保护的存储器区域;以及针对所述至少一个存储器访问请求访问所述至少一个LTT模式任务的受保护的存储器区域进行保护,而不管所述另一任务的特权级别如何,以及不管所述另一任务是否是LTT模式任务。

示例11包括示例10的本质内容,其中所述至少一个LTT模式任务的受保护的存储器区域至少包括与所述至少一个LTT模式任务相关联的代码、数据和堆栈区段、本地描述符表以及任务状态区段(TSS)。

示例12包括示例10到11中任一项的本质内容,其中所述存储器保护电路要进一步继续接收来自所述处理器的执行电路的存储器访问请求以及针对来自所述另一任务的所接收到的存储器访问请求中的任意存储器访问请求访问与所述至少一个LTT模式任务相关联的受保护的存储器区域进行保护,直到发生去激活事件,所述去激活事件包括以下中的至少一个:机器检查例外和将由所述处理器提供的先前启用的机器检查架构进行禁用的尝试。

示例13包括示例10到12中任一项的本质内容,其中所述处理器包括:包括104字节的32位模式任务状态区段(TSS),以及其中当发生以下各项中的任一项时,所述处理器要触发例外并且要生成故障:LTT模式被启用以及遇到具有比预期更少字节的TSS,遇到VM-8086任务,以及当LTT模式被启用但却是非活动的时遇到LTT模式任务。

示例14包括示例10到13中任一项的本质内容,其中所述处理器进一步包括用以隔离各个受保护的存储器区域的存储器管理电路,以及其中所述处理器要使用所述存储器管理电路来定义受保护的存储器区域,所述受保护的存储器区域包括所述至少一个LTT模式任务的代码、数据和堆栈区段、本地描述符表以及TSS。

示例15包括示例10到14中任一项的本质内容,所述系统进一步包括多个功能单元,其中所述多个功能单元和所述处理器核被集成在同一管芯上。

示例16提供一种在系统中执行轻量可信任务(LTT)模式任务的方法,所述系统包括存储器、处理器和存储器保护电路,所述方法包括:对所述系统进行复位;由所述处理器的执行电路对来自固件存储器的可信根指令进行取指、解码和执行以初始化LTT特征,配置至少一个LTT模式任务的受保护的存储器区域,启用和锁定所述至少一个LTT模式任务,以及引导到操作系统;以及在引导到所述操作系统之后由所述存储器保护电路接收来自所述执行电路的至少一个存储器访问请求,所述存储器保护电路要针对所述至少一个存储器访问请求访问所述至少一个LTT模式任务的受保护的存储器区域进行保护,而不管所述至少一个存储器访问请求的特权级别如何,以及不管所述至少一个存储器访问请求是否来自另一LTT模式任务。

示例17包括示例16的本质内容,其中所述可信根指令当由所述处理器的执行电路执行时,使所述处理器进行以下操作:开始执行从引导存储器取指的固件可信根指令,初始化与操作系统和LTT特征相关联的系统存储器和状态,生成每LTT模式任务的资产,初始化系统数据结构和受保护的存储器区域,针对任何错误进行检查,当针对错误的检查得出错误时,生成系统故障,以及当针对错误的检查未得出任何错误时,锁定LTT特征的配置,启用LTT特征并且锁定至少一个LTT模式任务的配置,以及将处理器引导到操作系统。

示例18包括示例16到17中任一项的本质内容,其中所述处理器的执行电路在引导到所述操作系统之后,要同时调度与所述LTT模式任务相关联的指令和与所述操作系统相关联的指令。

示例19包括示例16到18中任一项的本质内容,其中所述至少一个LTT模式任务保持启用直到发生去激活事件,其中所述处理器要提供机器检查架构并且其中所述去激活事件要包括以下中的至少一个:机器检查例外和将先前被启用的机器检查架构进行禁用的尝试。

示例20包括示例16到19中任一项的本质内容,其中所述处理器要进一步包括可编程基本寄存器和可编程掩码范围特定寄存器以限定每个受保护的存储器区域。

示例21包括示例16到20的本质内容,其中所述处理器要进一步包括LTT控制和状态寄存器,所述LTT控制和状态寄存器包括:用以在LTT模式是活动的时由所述处理器进行置位的可读取LTT活动位,用以由所述处理器写入以启用LTT模式的可读取/可写入LTT使能位,以及用以锁定LTT配置的LTT锁定位。

示例22提供一种制造品,包括非临时性机器可读储存介质,所述非临时性机器可读储存介质储存用以由处理器在包括存储器、处理器和存储器保护电路的系统中执行轻量可信任务(LTT)模式任务的指令,其中处理器用以:对所述系统进行复位;由所述处理器的执行电路对来自固件存储器的可信根指令进行取指、解码和执行以初始化LTT特征,配置至少一个LTT模式任务的受保护的存储器区域,启用和锁定所述至少一个LTT模式任务,以及引导到操作系统;以及在引导到所述操作系统之后由存储器保护电路接收来自所述执行电路的至少一个存储器访问请求,所述存储器保护电路要针对所述至少一个存储器访问请求访问所述至少一个LTT模式任务的受保护的存储器区域进行保护,而不管所述至少一个存储器访问请求的特权级别如何,以及不管所述至少一个存储器访问请求是否来自另一LTT模式任务。

示例23包括示例22的本质内容,其中所述可信根指令当由所述处理器的执行电路执行时,使所述处理器进行以下操作:开始执行从引导存储器取指的固件可信根指令,初始化与操作系统和LTT特征相关联的系统存储器和状态,生成每LTT模式任务的资产,初始化系统数据结构和受保护的存储器区域,针对任何错误进行检查,当针对错误的检查得出错误时,生成系统故障,当针对错误的检查未得出任何错误时,锁定LTT特征的配置,启用LTT特征并且锁定至少一个LTT模式任务的配置,以及将处理器引导到操作系统。

示例24包括示例23的本质内容,其中所述处理器的执行电路在引导到所述操作系统之后,要同时调度与所述LTT模式任务相关联的指令和与所述操作系统相关联的指令。

示例25包括示例22到24中任一项的本质内容,其中所述至少一个LTT模式任务保持启用直到发生去激活事件,其中所述处理器要提供机器检查架构并且其中所述去激活事件要包括以下中的至少一个:机器检查例外和将先前被启用的机器检查架构进行禁用的尝试。

示例26提供一种在系统中执行轻量可信任务(LTT)模式任务的方法,所述系统包括存储器、处理器和存储器保护电路,所述方法包括:用于初始化至少一个LTT模式任务和至少一个其他任务的步骤,用于启用所述至少一个LTT模式任务和所述至少一个其他任务的步骤,用于进行以下操作的步骤:由所述处理器执行所述LTT模式任务和所述至少一个其他任务,同时保护所述LTT模式任务的受保护的存储器区域免于由所述至少一个其他任务访问,而不管所述其他任务的特权级别如何以及不管所述其他任务是否也是LTT模式任务。

示例27提供一种处理器,包括:存储器,用以储存针对至少一个轻量可信任务(LTT)模式任务和至少一个其他任务的代码、数据和堆栈区段;执行电路,用以启用LTT模式,配置所述至少一个LTT模式任务,以及锁定所述至少一个LTT模式任务的配置;以及存储器保护电路,用以:接收来自所述执行电路的至少一个存储器访问请求,所述至少一个存储器访问请求由另一任务生成;确定来自所述另一任务的至少一个存储器访问请求是否正尝试访问与所述至少一个LTT模式任务相关联的受保护的存储器区域,以及针对来自所述另一任务的至少一个存储器访问请求访问所述至少一个LTT模式任务的受保护的存储器区域进行保护,而不管所述另一任务的特权级别如何以及不管所述另一任务是否也是LTT模式任务。

示例28包括示例27的本质内容,其中所述处理器要进一步包括LTT控制和状态模型特定寄存器(MSR),其要包括:可读取LTT活动位,所述可读取LTT活动位要在LTT模式是活动的时由所述处理器进行置位;以及可读取/可写入LTT使能位和LTT锁定位,其要由处理器写入以启用LTT模式并且锁定所述至少一个LTT模式任务的配置。

示例29包括示例27的本质内容,其中所述至少一个LTT模式任务的受保护的存储器区域至少包括与所述至少一个LTT模式任务相关联的代码、数据和堆栈区段、本地描述符表以及任务状态区段(TSS)。

示例30包括示例29的本质内容,其中所述存储器保护电路要进一步继续接收来自所述处理器的执行电路的存储器访问请求以及针对所接收到的存储器访问请求中的任意存储器访问请求访问所述至少一个LTT模式任务的受保护的存储器区域进行保护,直到发生去激活事件,所述去激活事件包括以下中的一个:机器检查例外和将由所述处理器提供的先前启用的机器检查架构进行禁用的尝试。

示例31包括示例30的本质内容,其中所述处理器进一步包括任务管理电路,其用以将TSS与所述至少一个LTT模式任务相关联以及在暂停所述至少一个LTT模式任务之前将上下文状态信息储存在所述TSS中,以及在恢复所述任务时从所述TSS召回所述上下文状态信息,所述TSS要进一步包括:LTT模式位,用以指示所述至少一个LTT模式任务是LTT模式任务,以及LTT调试位,用以指示所述至少一个LTT模式任务是否要选择加入所述处理器的调试设施。

示例32包括示例31的本质内容,其中所述存储器管理电路进一步包括TSS数据结构,其用以包含当前执行中的任务的TSS的基地址。

示例33包括示例32的本质内容,其中所述TSS是包括104字节的32位模式数据结构,以及其中当发生以下各项中的任一项时,所述处理器要触发例外并且要生成故障:LTT模式被启用以及遇到具有比预期更少字节的TSS,遇到VM-8086任务,以及当LTT模式被启用但却是非活动的时遇到LTT模式任务。

示例34包括示例33的本质内容,其中所述LTT模式在被启用且是活动的时,当发生以下各项中的至少一项时要使所述处理器产生例外:从受保护的操作模式切换出的尝试,启用或禁用CPU高速缓存的非逐出模式的尝试,使用设备重定位能力将驻留于CPU边界内的设备重定位的尝试,以及执行LGDT、LIDT、LLDT、LTR、INVD、系统进入和系统退出指令中的至少一项的尝试。

虽然本文中所公开的一些实施例涉及在硬件执行电路的情境中的数据处理和分布,但是其他实施例可以借助于储存在非临时性机器可读的、有形介质上的数据或指令来完成,所述数据和指令当被机器实行时,使所述机器实行与至少一个实施例一致的功能。在一个实施例中,与本公开的实施例相关联的功能被体现在机器可执行指令中。所述指令可以被用来使被编程有指令的通用或专用处理器来实行实施例。本文中所公开的实施例被提供为计算机程序产品或软件,其包括具有储存于其上的指令的机器或计算机可读介质,所述指令被用来对计算机(或其他电子设备)编程以根据至少一个实施例实行一个或多个操作。替换地,一些实施例由包含用于实行实施例的固定功能逻辑的专用硬件部件来实行,或者由经编程的计算机部件和固定功能硬件部件的任意组合来实行。

被用来对逻辑进行编程以实行至少一个实施例的指令可以被储存在系统中的存储器内,所述存储器诸如是DRAM、高速缓存、闪速存储器或其他储存设备。此外,指令可以经由网络或借助于其他计算机可读介质来分布。因此,机器可读介质可以包括用于以由机器(例如,计算机)可读的形式储存或传输信息的任何机制,而不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器、或者经由电学、光学、声学或其他形式的传播信号(例如,载波、红外信号、数字信号等)通过互联网传输信息时使用的有形的、机器可读储存设备。因此,非临时性计算机可读介质包括适合于以由机器(例如,计算机)可读的形式储存或传输电子指令或信息的任意类型的有形机器可读介质。

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