CN110162380A - 用来防止软件侧通道的机制 - Google Patents
用来防止软件侧通道的机制 Download PDFInfo
- Publication number
- CN110162380A CN110162380A CN201910117040.7A CN201910117040A CN110162380A CN 110162380 A CN110162380 A CN 110162380A CN 201910117040 A CN201910117040 A CN 201910117040A CN 110162380 A CN110162380 A CN 110162380A
- Authority
- CN
- China
- Prior art keywords
- memory
- framework
- page
- address
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/74—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2149—Restricted operating environment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了用来防止软件侧通道的机制。一种处理器包括处理核心,用来标识包括要在架构上受保护的环境中执行的多个指令的代码,确定被存储在架构上受保护的存储器中的第一物理存储器页面与由所述多个指令中的第一指令引用的第一虚拟存储器页面匹配,生成第一虚拟存储器页面的第一地址和第一物理存储器页面的第二地址之间的第一地址映射,在高速缓冲存储器中存储包括第一地址映射的地址翻译数据结构,并且通过取回被存储在地址翻译数据结构中的第一地址映射来执行代码。
Description
技术领域
本公开涉及处理器,并且更具体地,涉及包括在飞地(enclave)环境中实现地址预翻译的电路的处理器。
背景技术
用于创建和维护受防护的、受保护的或隔离的执行环境(称为架构上受保护的执行环境)的一种方法将采用安全飞地来保护代码和数据。
附图说明
根据下面给出的具体实施方式并且根据本公开的各种实施例的附图,将更全面地理解本公开。然而,附图不应被理解成将本公开限制于具体实施例,而是仅用于解释和理解。
图1图示了根据本公开的实施例的处理系统。
图2图示了根据本公开的实施例的页表200。
图3图示了根据本公开的实施例的用来恢复(resume)中断的地址预翻译的过程。
图4是根据本公开的实施例的用来执行地址预翻译的方法的框图。
图5A是图示了用于包括在其中可以使用本公开的一个实施例的异构核心的处理器的微架构的框图。
图5B是图示了根据本公开的至少一个实施例所实现的有序流水线和寄存器重命名阶段(stage)、无序发布/执行流水线的框图。
图6图示了用于依照本公开的一个实施例的包括逻辑的处理器的微架构的框图。
图7是图示了在其中可以使用本公开的实施例的系统的框图。
图8是本公开的实施例可以在其中操作的系统的框图。
图9是本公开的实施例可以在其中操作的系统的框图。
图10是依照本公开的实施例的片上系统(SoC)的框图。
图11是依照本公开的SoC设计的实施例的框图。
图12图示了计算机系统的一个实施例的框图。
具体实施方式
安全飞地是由不可通过其他应用访问的程序(例如,在较高权限级别处的进程)分配的私有存储器区。具有安全飞地能力的处理器防止通过其他软件对飞地存储器区(即,在应用的地址空间中定义的受保护区域)的访问,即使通过诸如包括操作系统和虚拟机监视器(VMM)的系统软件之类的更高特权软件尝试这样的访问。
尽管环系统(被称为保护环(例如,环0-3)的分层保护域)可以保护为在较高权限级别处运行的应用保留的存储器区免遭由在较低(相等)权限级别处运行的应用的未授权访问,但是环系统不保护较低权限级别的应用使用的数据免遭由在较高权限级别处运行的应用访问。在某些情况下,在较高权限级别处运行的应用(例如,操作系统或虚拟机监视器(VMM))可能已被恶意攻击破坏。受破坏的应用可能会进一步攻击在较低权限级别处运行的应用所使用的数据。在一些实现中,程序员可以给由在较低权限级别(例如,环3)处的处理器执行的应用提供架构上受保护的存储器区以存储对盖应用而言私有并且不能由较高权限级别应用(例如,具有环0-2权限的应用)访问的代码和数据。因此,处理器可以在架构上受保护的执行环境中执行较少特权应用的至少一部分(或整体),其被保护免于源于较高特权域(例如,操作系统)的恶意。
在一些实现中,可以以安全飞地的形式提供架构上受保护的执行环境。安全飞地可以包括与应用相关联的存储器地址空间内的受保护区域。即使系统软件尝试这样的访问,飞地也可以禁止通过其他软件对飞地存储器区的任何访问。
在一些实现中,在由处理器保护免受非飞地存储器访问的处理器保留存储器(PRM)上实现安全飞地,所述非飞地存储器访问包括来自操作系统的内核或VMM的那些访问。PRM可以包括飞地页面高速缓存(EPC),其是存储飞地页面和属性数据结构的受保护存储器区。EPC可以包括固定大小的页面(例如,每页面4KB),用来存储与不同安全飞地相关联的代码和数据。安全飞地可以与可以由处理器通过数据结构(称为飞地页面高速缓存映射(EPCM))管理的EPC页面的集合相关联。EPCM可以包括多个条目,其中每个条目存储与安全飞地相关联的对应EPC页面的属性值。属性值可以指示被处理器用来管理飞地的页面类型(常规数据或控制结构)和硬件信息。
处理器可以执行系统软件(例如,操作系统)以建立EPC的控制结构。系统软件可以是虚拟机监视器(VMM)和VMM支持的操作系统(包括来宾(guest)操作系统(OS))的内核。
用于实现安全飞地及其功能性的指令可以包括处理器扩展逻辑电路(例如,对应于SGX指令扩展的电路)和与处理器相关联的微代码(称为飞地逻辑)。为了改进安全飞地的效率,飞地逻辑可以实现用于将未使用的EPC页面分配到飞地的指令并释放先前分配的EPC页面。
安全飞地的一些实现可能易受源于在飞地外部运行的系统软件(例如,来宾操作系统或VMM)的攻击类型的影响。攻击者可以观察页面错误事件并基于观察到的页面错误事件而得知在飞地内部的软件应用的代码执行。例如,(来自来宾操作系统或VMM的)攻击者可以从页表(和扩展页表(EPT))反映射(unmap)所有飞地页面。当处理核心尝试访问飞地存储器页面(例如,执行飞地代码或访问数据)时,处理器生成页面错误(#PF)或EPT违规。页面错误和EPT违规被在中断描述表(IDT)的向量中描述,并被递送到操作系统或VMM以用于进一步处理。以该方式,攻击者可以获取飞地内部的信息。这些攻击中的一个被称为流量控制侧通道。在这样的攻击中,攻击者(例如,系统软件)可以(例如,通过将与存储器页面相关联的页表条目的存在/不存在位设置成“不存在”)将飞地内部的所有存储器页面标记为不存在。这可能发生在攻击者获得系统软件(例如,VMM或来宾操作系统)的权限时。因为存储器页面被标记为不在存储器,所以飞地中的程序的执行可能使得存储器管理单元(MMU)生成指示不存在物理页面的页面错误或EPT违规。执行系统软件(例如,来宾操作系统)的处理器可以检测页面错误事件,并且从而从页面错误导出存储器页面信息。通过连续地观察页面错误,攻击者(例如,来宾操作系统)可以得知数据和代码页何时被在飞地内部访问,从而获取对飞地的未授权访问。
在一个示例攻击中,攻击者可以获得对飞地的源代码的访问。攻击者标识源代码的处理目标数据的部分。目标数据可以在页表和扩展页表中的攻击者将P位设置成不存在的页面中。然后,攻击者可以基于被提交给目标代码的输入值“手动地”确定错误将以什么顺序发生,或者攻击者可以利用各种输入值来运行目标代码并记录那些故障序列。在任一情况下,攻击者将产生输入值和页面错误序列之间的映射,攻击者可以从所述映射推断出关于飞地的信息。
用来减轻软件控制侧通道的一个方法是对飞地进行编程以在访问存储器时停止发出控制流信息。例如,通过将所有代码放置在一个物理存储器页面中,飞地可以防止攻击者了解飞地内部的代码执行,因为所有页面错误都指向单个页面。然而,该类型的软件解决方案需要对程序的详细检查,并且易于有程序员错误。
为了克服上面陈述的缺陷和其他缺陷,本公开的实施例提供了一种包括在执行飞地代码之前对存储器地址进行预翻译的技术解决方案,所述代码包括引用需要被翻译成飞地中的物理存储器页面的虚拟存储器页面的指令。地址预翻译标识执行这些指令所需的所有物理存储器页面,并且地址映射被存储在高速缓冲贮存器中,从而移除导致页面错误的机会并且向飞地减轻控制流侧通道风险。
本公开的实施例提供了(与飞地翻译指令(称为ETRANS)对应的)第一飞地逻辑电路,其可以在进入飞地(例如,执行EENTER)时针对一段飞地代码执行地址预翻译并且将译文存储在本地贮存器(例如,TLB)中。因为所有存储器地址翻译已经在本地可用,所以这可以消除在执行飞地代码期间生成页面错误的风险,从而消除了飞地外部的观察者(例如,攻击者)监视页面错误的机会。地址预翻译可以在本地贮存器中生成地址翻译数据结构。该数据结构可以包括用来存储用于要在飞地中执行的代码中的所有指令的虚拟到物理存储器映射的条目。在预翻译阶段之后的代码执行期间,处理器的执行单元可以在地址翻译数据结构中找到所有需要的存储器地址翻译。用来生成地址翻译数据结构的过程可能被中断事件(例如,页面错误,因为处理器可以确定所请求的物理存储器页面不在存储器中并且需要从存储设备加载)中断。响应于检测到中断事件的发生,处理器可以将处理器的状态存储在与飞地相关联的状态保存区域(SSA)中,并且导致地址预翻译的退出。存储在SSA中的处理器的状态信息可用于稍后恢复飞地。
本公开的实施例可以进一步包括(与来自预翻译状态指令(称为EPOPSSA)的飞地恢复对应的)第二飞地逻辑电路,其可以基于存储在与飞地相关联的SSA中的状态来恢复飞地(即,从飞地外部进入被中断的飞地执行)。在一个实施例中,在创建飞地时(例如,通过设置控制标志以指示禁用)禁用ERESUME指令,使得飞地必须被通过使用EENTER和ETRANS来重新进入。在另一实施例中,处理器可以执行包括用来临时禁用ERESUME并将对ERESUME的调用转变成对EENTER的调用的指令的应用程序。照此,飞地的任何恢复都从在使用EPOPSSA恢复飞地之前的地址预翻译开始。
图1图示了根据本公开的实施例的处理系统。如在图1中所示,处理系统100(例如,片上系统(SOC))可以包括处理器102和通信地耦合到处理器102的存储器设备104。处理器102可以是硬件处理设备,诸如例如包括用来执行软件应用的(未示出的)一个或多个处理核心的中央处理单元(CPU)或图形处理单元(GPU)。处理器102可以进一步包括一个或多个处理核心106和存储器管理单元(MMU)108以用于执行用于处理核心106的存储器地址翻译。在一个实施例中,MMU 108是处理器102的一部分。在另一实施例中,MMU 108是与处理器102分离的分立硬件电路。处理核心106可以与包括L1-L3级高速缓存的(未示出的)多级高速缓存相关联。
处理核心106在各种实现中可以由有序核心或无序核心提供。在说明性示例中,处理核心106可以具有包括用于实现指令集架构(ISA)的处理器逻辑和电路的微架构。具有不同微架构的处理器102可以共享公用指令集的至少一部分。例如,可以使用各种技术在不同的微架构中以不同的方式来实现ISA的相同寄存器架构,所述各种技术包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)和引退寄存器文件)的一个或多个动态分配物理寄存器,如由图6-7图示的那样。
处理器102可以进一步包括处理器扩展逻辑电路110,用来实现扩展指令集以支持处理器102的附加功能性。在一个实施例中,处理器扩展逻辑电路110可以支持一组虚拟化指令(例如,虚拟机扩展(VMX))的执行以为被移植在主机上的一个或多个虚拟化环境提供支持。VMX可以为虚拟机提供处理器级支持。在一个实施例中,VMX可以包括用来生成虚拟机监视器(VMM)130的指令,VMM 130是允许一个或多个执行环境(或虚拟机(VM)132)在主机上运行的主机程序。VMM 130可以创建并运行虚拟机(VM)132。
对于终端用户而言,VM 132可以表现得像硬件计算设备。例如,VM 132可以每个包括模拟硬件处理器的(未示出的)一个或多个虚拟处理器。与VM 132相关联的虚拟处理器可以支持相应的来宾操作系统(来宾OS)134。来宾应用146可以在来宾操作系统134的环境内运行。来宾操作系统134(包括内核)可以包括多个来宾OS组件(或内核组件)以向来宾应用136提供多个服务。在一个实施例中,这些来宾OS组件在相同的处理器权限级别(例如,最高的环0权限级别)处运行。在一个实施例中,来宾OS提供的服务可以包括调度器、进程管理、I/O管理、存储器管理、驱动程序(例如,文件系统和卷驱动程序、大容量存储驱动程序和总线驱动程序)、以及代码完整性管理服务。环0-2权限级别通常被称为管理者模式,并且环3权限级别通常被称为用户模式。
来宾OS 134可以向来宾应用136的执行提供调度服务,并且调度服务可以允许在线程中实行应用的执行。执行的线程是可以独立地管理OS(例如,来宾OS 134)的任务调度器的最小程序指令序列。线程的执行由逻辑处理器实行。与VM 132相关联的逻辑处理器的数目可以定义来宾OS 134可以处置的线程的最大数目。当执行与来宾应用136的程序代码相关联的线程时,所有这些逻辑处理器可以共享可以由存储器管理单元108映射到存储器104的物理地址空间的来宾物理地址空间。
VM 132包括来宾OS 134和来宾应用136,其可以通过一系列存储器地址映射来访问存储器104。来宾OS 118可以构建来宾虚拟地址(GVA)空间并将GVA空间映射到用于VM132的对应来宾物理地址(GPA)空间。可以根据每个具有预定义大小的来宾存储器页面来组织GPA空间。来宾存储器页面中的每一个可以与唯一地标识来宾存储器页面的标识符相关联。存储器管理单元108可以将与VM 132相关联的GPA空间映射到主机的存储器104的主机物理地址(HPA)空间。在来宾应用136的执行期间,响应于访问存储器104的请求,存储器管理单元108可以将应用使用的虚拟地址映射到主机物理地址,使得应用可以访问存储器104。可以根据每个具有预定义大小的存储器帧来组织HPA空间。存储器帧中的每一个可以与唯一地标识存储器帧的标识符(例如,存储器帧号)相关联。如上面所讨论的,可以在共享被映射到HPA空间的GPA空间的多个逻辑处理器上在多个线程中实行来宾应用136的执行。
在一个实施例中,除了VMX扩展之外,处理器扩展逻辑电路110还可以包括逻辑电路(称为飞地逻辑)以实现软件安全扩展(SGX)指令,所述指令在被执行时可以实行与安全飞地相关的服务。SGX指令可以包括用来创建(ECREATE)、加载(EADD)和初始化(EINIT)飞地的指令。系统软件可以执行飞地创建指令以创建安全飞地。安全飞地的创建可以生成新的SGX飞地控制结构(SECS),其包括用来存储与安全飞地相关联的属性值的字段。SECS页面中的属性可以包括唯一地标识安全飞地的飞地标识符。在一个实施例中,SECS可以被存储在如上面定义的特殊EPC页面(称为SECS页面)中,所述特殊EPC页面不可由不驻留在安全飞地中的应用寻址。飞地创建指令的执行将新创建的SECS标记为未初始化。
(在初始化之后的)活跃的安全飞地可以被划分成加密部分和解密部分。加密部分可以驻留在未受保护的存储器(诸如主存储器或盘)中。解密部分驻留在CPU高速缓存中。
MMU 108可以翻译用于驻留在被分配给存储在存储器104中的安全飞地的飞地物理地址空间122内的EPC 126的地址。也驻留在物理地址空间122内的飞地页面高速缓存映射(EPCM)128是被处理系统用来存储EPC的属性的受保护结构。存储器104还可以包括可以由非飞地地址空间124引用的区。在一个实施例中,EPCM 128可以被存储为特殊EPC页面。EPCM 128可以包括一个或多个条目,其中每个条目对应于EPC 126中的EPC页面。每个EPCM条目可以以实现相关的格式保存以下信息:EPC页面是有效还是无效(VALID/INVALID);拥有该页面的安全飞地实例的标识符;该页面的类型(常规数据和控制数据结构类型);通过其而允许飞地访问该页面的虚拟地址;针对该页面的读/写/执行许可;该页面是否可访问(BLOCKED或UNBLOCKED)。
系统软件可以在地址翻译流程中使用EPCM 128来对被加载到EPC 126中的EPC页面实施访问控制。各种飞地相关功能可以被在微代码中实现,其被SGX的硬件实现和实现飞地功能性的处理逻辑支持。在某些实现中,处理逻辑可以经由与处理核心106相关联的翻译后备缓冲器(TLB)112来控制对EPC 128的访问。
可以将来自由虚拟机132所采用的虚拟地址的映射和存储器104的物理地址存储在翻译后备缓冲器(TLB)112中,TLB 112可以实现用于将虚拟地址翻译成物理地址的映射表。TLB 112可以存储已经被逻辑处理器使用的存储器地址映射以促进对存储器地址映射的稍后重复使用。“TLB命中”指的是TLB中存在所请求的虚拟地址时的情况。“TLB未命中”指的是相反的情况:当TLB 112中不存在所请求的虚拟地址时,可以通过查找页表来进行地址翻译。在确定物理地址之后,为了地址翻译的方便,可以将虚拟地址到物理地址映射输入到TLB 112中。系统软件(例如,VMM 130)可以在其页表中创建指向SECS页面114的条目,所述SECS页面114包括用来标识和管理安全飞地的信息。然而,系统软件不能访问SECS页面114。
每个TLB条目可以包括一个或多个位,其指示标识拥有由TLB条目引用的存储器位置的飞地。替代地,如果未提供这些位,则在退出安全飞地时执行TLB清除(flush)以防止对EPC 126的未授权访问。
在安全飞地被发起的时间与其被(例如,通过发布飞地移除指令(例如,EREMOVE))破坏的时间之间,飞地中的代码可以由具有飞地的EPC页面的任何应用执行,所述EPC页面被映射到与这些应用相关联的虚拟地址空间。
处理器102的飞地逻辑可以实现飞地条目指令(EENTER),EENTER在被执行时开始飞地中的代码和飞地退出指令(EEXIT)的执行,EEXIT在被执行时返回执行控制以回到调用飞地的软件应用。
MMU 108可以采用页表138来为处理核心108执行虚拟存储器地址到物理存储器地址翻译。页表138可以是被存储在存储器104中的指定区域中的数据结构。页表138可以包括用来存储虚拟存储器地址和物理存储器地址之间的映射的页表条目。
图2图示了根据本公开的实施例的页表200。如图2中所示,页表200可以包括页表条目202,其包括用来存储涉及存储器地址映射的信息的字段。页表条目202可以包括用来存储虚拟地址到物理存储器地址映射(即,虚拟页面标识符与存储器帧标识符之间的对应)的第一字段204、用来存储访问许可标志的第二字段206。访问许可标志可以包括与管理者模式相关联的写(W)位和/或执行-禁用(XD)位,和/或与用户模式相关联的写(W')位和/或执行-禁用(XD')位。访问许可标志还可以可选地包括与管理者模式相关联的读位(R)和/或与用户模式相关联的读(R')位。页表条目202可以进一步包括第一存在/不存在位(P)。P位在被设置成“存在”时可以指示存储器中存在与虚拟存储器地址对应的物理存储器页面。P位在被设置成“不存在”时可以指示存储器中不存在与虚拟存储器地址对应的物理存储器页面。页表条目202还可以包括S/U位,其在被置1时对应于管理员模式并且在被置0时对应于用户模式。操作系统可以设置到管理者模式的条目以防止通过用户应用的访问。
参考图1,响应于接收到由处理核心106执行的指令所引用的虚拟地址,MMU 108可以查找页表138以确定是否存在包含用来将虚拟存储器地址翻译成已经存在于存储器104中的与虚拟存储器地址对应的物理存储器页面的映射的页表条目。响应于标识出物理存储器页面存在于存储器104中,MMU 108可以为处理核心106翻译虚拟存储器地址。响应于标识出存储器104中不存在物理存储器页面,MMU 108可以生成页面错误以向处理核心106通知物理存储器不存在并且使得由处理核心106执行的系统软件(例如,来宾OS 134或VMM 130)从存储设备(例如,远程存储器或盘)加载所需的物理存储器页面。尽管被应用用来保护代码的关键部分的飞地地址空间122中的EPC页面116被保护不受其他应用(包括系统软件)的影响,但是由处理核心106执行的系统软件(例如,来宾OS 134或VMM 130)可以观察到MMU108生成的用于检测不存在的物理存储器页面的页面错误。在软件控制侧通道攻击中,攻击者可以使得系统软件将与EPC页面116对应的页表条目标记为不存在。当应用的执行进入飞地中时,因为页面被标记为不存在而生成页面错误,从而泄漏关于要在飞地地址空间122内使用哪些物理存储器页面的信息。关于飞地内的物理存储器页面的信息的泄漏使得飞地易受软件侧通道攻击的影响。
本公开的实施例提供了前导码飞地指令(称为“ETRANS”)118,其可以在包括指令的一段飞地代码的执行之前针对要由飞地代码使用的EPC页面116实行地址预翻译,并进一步将通过执行ETRANS 118而生成的存储器地址映射存储在TLB 112的区域140中。在一个实施例中,TLB区域140被锁定到飞地。即,当TLB满时,在进入飞地时被分配给飞地的锁定区域140不是驱逐受害者,并且它在退出飞地时被清除。
在地址预翻译阶段期间,可能发生所请求的EPC页面116不在飞地地址空间122中。响应于检测到丢失的EPC页面116,处理核心106可以生成页面错误并退出飞地。在退出飞地之前,处理核心106可以将与执行飞地相关联的架构状态值存储在EPC 126的状态保存区域(SSA)142中。在一个实施例中,SSA 142可以被实现为包括参数帧的堆栈。在离开飞地时,处理核心可以将逻辑处理器的当前架构状态值推送到参数帧中。这些架构状态值包含可用于恢复飞地的执行的信息。
响应于检测到页面错误,由处理核心106执行的系统软件可以从存储设备(例如,远程存储器或盘)加载丢失的EPC页面116。在将丢失的EPC页面116加载到存储器104中之后,处理核心106可以重新进入该飞地。如上面所讨论的,在一个实施例中,在进入飞地时禁用ERESUME,从而迫使通过执行触发地址预翻译的EENTER指令而重新进入飞地。在另一实施例中,处理器可以执行包括用来临时禁用ERESUME并将对ERESUME的调用转变成对EENTER的调用的指令的应用程序。照此,在使用EPOPSSA恢复飞地之前,飞地的任何恢复都从地址预翻译开始。
在一个实施例中,处理核心106可以(例如,通过在SECS 114中设置标志位)禁用ERESUME指令以迫使通过EENTER的所有飞地重新进入,从而确保不存在未完成的地址预翻译。EPOPSSA的执行可以从SSA堆栈中的顶部参数帧取回(retrieve)架构状态值,并基于这些架构状态值来恢复地址预翻译。
在针对飞地代码的地址预翻译之后,所有存储器地址映射都被存储在TLB 112中的锁定区域140中。在地址预翻译阶段之后执行应用的飞地代码期间,处理核心106可以查找存储在锁定区域140中的存储器地址映射。由于它们已被预翻译并存储在锁定区域140中,处理核心106对飞地代码的执行不会遭遇丢失物理存储器页面的情况。因为所有物理存储器页面都被预翻译并加载到飞地地址空间122中的存储器104中,所以不会为攻击者生成页面错误。因此,该实施例可以基本上消除软件控制侧通道攻击的风险。
在一个实施例中,可以使用位标志(称为RTE 144)来指示CPU是否应该将ERESUME转换成EENTER,因此可以在飞地执行EPOPSSA之前执行预翻译以继续飞地代码的执行。图3图示了根据本公开的实施例的用来恢复中断的地址预翻译的过程。如图3中所示,在302处,处理核心106可能已经处置中断事件(例如,将丢失的物理存储器页面加载到存储器中)。响应于处置中断事件的完成,处理核心106可以重新进入飞地。在304处,处理核心106可以确定当前参数帧的RTE标志位是否被设置(例如,设置成“1”)。如果RTE位被设置,则将ERESUME命令转换成EENTER。如果RTE位未被设置,则在进入飞地时禁用ERESUME。响应于确定RTE标志位未被设置(或设置成“0”),则在308处,处理核心可以禁用ERESUME并使用EENTER开始飞地代码的执行。响应于确定RTE标志位被设置(成“1”),则在306处,处理核心106可以将ERESUME命令转换成EENTER并再次开始地址预翻译。
图4是根据本公开的实施例的用来执行地址预翻译的方法400的框图。可以由处理逻辑来执行方法400,所述处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如在处理设备、通用计算机系统或专用机器上运行的指令)、固件或其组合。在一个实施例中,可以由如图1中所示的处理器102和SoC 100的处理逻辑部分地执行方法400。
为了解释的简单,将方法400描绘和描述为一系列动作。然而,依照本公开的动作可以以各种顺序和/或同时以及与未在本文中呈现和描述的其他动作一起发生。此外,并非所有图示的动作都可以被执行以实现依照所公开的主题的方法400。此外,本领域技术人员将理解并且领会,可以经由状态图或事件将方法400替代地表示为一系列相关状态。
参考图4,在402处,处理核心106可以标识包括要在架构上受保护的环境中执行的多个指令的代码,所述环境包括架构上受保护的存储器。
在404处,处理核心106可以确定存储在架构上受保护的存储器中的第一物理存储器页面与由所述多个指令中的第一指令引用的第一虚拟存储器页面匹配。
在406处,处理核心106可以生成在第一虚拟存储器页面的第一地址与第一物理存储器页面的第二地址之间的第一地址映射。
在408处,处理核心可以在高速缓冲存储器中存储包括第一地址映射的地址翻译数据结构。
在410处,处理核心可以通过取回存储在地址翻译数据结构中的第一地址映射来执行代码。
图5A是图示了依照本公开的一个实施例的针对实现包括异构核心的处理设备的处理器500的微架构的框图。具体地,处理器500描绘了根据本公开的至少一个实施例的要被包括在处理器中的有序架构核心和寄存器重命名逻辑、无序发布/执行逻辑。
处理器500包括耦合到执行引擎单元550的前端单元530,并且两者都耦合到存储器单元570。处理器500可以包括精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心、或者混合或替代的核心类型。作为又一选项,处理器500可以包括专用核心,诸如例如网络或通信核心、压缩引擎、图形核心等。在一个实施例中,处理器500可以是多核心处理器或可以是多处理器系统的一部分。
前端单元530包括耦合到指令高速缓存单元534的分支预测单元532,所述指令高速缓存单元534被耦合到指令翻译后备缓冲器(TLB)536,所述指令翻译后备缓冲器(TLB)536被耦合到指令取出单元538,所述指令取出单元538被耦合到解码单元540。解码单元540(也称为解码器)可以解码指令,并且生成作为输出的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号,其被从原始指令解码或以其他方式反映原始指令或被从原始指令导出。可以使用各种不同的机制来实现解码器540。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元534被进一步耦合到存储器单元570。解码单元540被耦合到执行引擎单元550中的重命名/分配器单元552。
执行引擎单元550包括耦合到引退单元554和一组一个或多个调度器单元556的重命名/分配器单元552。(一个或多个)调度器单元556表示任何数目的不同调度器,包括保留站(RS)、中央指令窗等。(一个或多个)调度器单元556被耦合到(一个或多个)物理寄存器文件单元558。(一个或多个)物理寄存器文件单元558中的每个表示一个或多个物理寄存器文件,所述一个或多个物理寄存器文件中的不同的物理寄存器文件存储诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点等的一个或多个不同的数据类型、状态(例如,指令指针,其是要被执行的下一指令的地址)等。(一个或多个)物理寄存器文件单元558被引退单元554叠覆,以图示可以(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器文件,使用(一个或多个)未来文件、(一个或多个)历史缓冲器和(一个或多个)引退寄存器文件;使用寄存器映射和寄存器池;等)实现寄存器重命名和无序执行的各种方式。
在一个实现中,处理器500可以与关于图1描述的处理器102相同。
一般地,从处理器外部或从程序员的角度,架构寄存器是可见的。寄存器不限于任何已知的特定类型的电路。各种不同类型的寄存器是合适的,只要它们能够存储并且提供如在本文中描述的数据即可。合适的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等。引退单元554和(一个或多个)物理寄存器文件单元558被耦合到(一个或多个)执行集群560。(一个或多个)执行集群560包括一组一个或多个执行单元562和一组一个或多个存储器访问单元564。执行单元562可以执行各种操作(例如,移位、加法、减法、乘法)并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)进行操作。
虽然一些实施例可以包括专用于特定功能或功能的集合的多个执行单元,但是其他实施例可以包括仅一个执行单元或全都执行所有功能的多个执行单元。(一个或多个)调度器单元556、(一个或多个)物理寄存器文件单元558和(一个或多个)执行集群560被示出为可能是复数个,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线,和/或存储器访问流水线,其每个都具有它们自己的调度器单元、(一个或多个)物理寄存器文件单元和/或执行集群——并且在单独的存储器访问流水线的情况下,实现了其中仅该流水线的执行集群具有(一个或多个)存储器访问单元564的某些实施例)。还应当理解,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行的并且其余是有序的。
该组存储器访问单元564被耦合到存储器单元570,所述存储器单元570可以包括数据预取器580、数据TLB单元572、数据高速缓存单元(DCU)574和级别2(L2)高速缓存单元576,仅举几例。在一些实施例中,DCU 574也称为第一级别数据高速缓存(L1高速缓存)。DCU574可以处置多个未解决(outstanding)的高速缓存未命中并且继续为传入存储和加载服务。其还支持维持高速缓存一致性(coherency)。数据TLB单元572是用于通过映射虚拟和物理地址空间来改进虚拟地址翻译速度的高速缓存。在一个示例性实施例中,存储器访问单元564可以包括加载单元、存储地址单元和存储数据单元,其中的每个被耦合到存储器单元570中的数据TLB单元572。L2高速缓存单元576可以被耦合到一个或多个其他级别的高速缓存并且最终耦合到主存储器。
在一个实施例中,数据预取器580通过自动地预测程序将要消耗什么数据来推测地加载/预取到DCU 574的数据。预取可以指的是在处理器实际需要存储在存储器层级的一个存储器位置(例如,较低级别高速缓存或存储器)中的数据之前,将该数据传送到更接近处理器(例如,产生较低访问等待时间)的较高级别存储器位置。更具体地,预取可以指的是在处理器发布针对正被返回的特定数据的需求之前从较低级别高速缓存/存储器中的一个到数据高速缓存和/或预取缓冲器对数据的早期取回。
处理器500可以支持一个或多个指令集(例如,x86指令集((具有与较新的版本添加在一起的一些扩展);加利福尼亚州森尼韦尔的MIPS技术的MIPS指令集;加利福尼亚州森尼韦尔的ARM控股公司的ARM指令集(具有诸如NEON之类的可选附加扩展)。
应当理解,核心可以支持多线程(执行操作或线程的两个或更多并行集合),并且可以以多种方式这样做,所述多种方式包括时间片多线程、同时多线程(其中单个物理核心为物理核心同时多线程的线程中的每个提供逻辑核心)或其组合(例如,诸如在Intel®超线程技术中的时间片取出和解码以及此后的同时多线程)。
虽然在无序执行的上下文中描述了寄存器重命名,但是应当理解,可以将寄存器重命名用在有序架构中。虽然处理器的图示的实施例还包括单独的指令以及数据高速缓存单元和共享的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,所述指令解码器628继而解码或解释它们。例如,在一个实施例中,解码器将接收的指令解码为一个或多个操作,所述一个或多个操作被称为机器可以执行的“微指令”或“微操作”(也称为微op或uop)。在其他实施例中,解码器将指令解析为由微架构使用的操作码和相应的数据以及控制字段以执行根据一个实施例的操作。在一个实施例中,跟踪高速缓存(trace cache)630采取解码的uop并且将它们组装为uop队列634中的程序排序的序列或轨迹用于执行。当跟踪高速缓存630遇到复杂的指令时,微代码ROM 632提供完成操作所需的uop。
一些指令被翻译成单个微op,而其他需要若干微op来完成全部操作。在一个实施例中,如果需要多于四个微op来完成指令,那么解码器628访问微代码ROM 632以进行指令。对于一个实施例,可以在指令解码器628处将指令解码为小数目的微op用于处理。在另一实施例中,如果需要多个微op来实现操作,那么可以将指令存储在微代码ROM 632内。跟踪高速缓存630指的是入口点可编程逻辑阵列(PLA)以确定用于读微代码序列的正确的微指令指针来完成来自微代码ROM 632的根据一个实施例的一个或多个指令。在所述微代码ROM632完成用于指令的微op排序之后,机器的前端601继续从跟踪高速缓存630取出微op。
无序执行引擎603是指令被准备用于执行的地方。无序执行逻辑具有多个缓冲器以平滑指令的流并且对指令的流重排序以当它们沿着(go down)流水线和被调度用于执行时优化性能。分配器逻辑分配每个uop需要以便执行的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名为寄存器文件中的条目。分配器还在指令调度器之前为两个uop队列中的一个中的每个uop分配条目,一个用于存储器操作并且一个用于的非存储器操作:存储器调度器、快调度器602、慢/通用浮点调度器604和简单浮点调度器606。uop调度器602、604、606基于它们的依赖的输入寄存器操作数源的准备度(readiness)和uop需要用于完成它们的操作的执行资源的可用性来确定uop何时准备好执行。一个实施例的快调度器602可以在主时钟周期的每一半上调度而其他调度器可以每个主处理器时钟周期仅调度一次。调度器为分派端口仲裁以调度uop用于执行。
寄存器文件608、610位于调度器602、604、606和执行块611中的执行单元612、614、616、618、620、622、624之间。对于整数和浮点操作,分别存在单独的寄存器文件608、610。一个实施例的每个寄存器文件608、610还包括旁路网络,所述旁路网络可以旁路或转发只是完成的结果到新的依赖的uop,所述完成的结果还尚未被写到寄存器文件中。整数寄存器文件608和浮点寄存器文件610还能够彼此传送数据。对于一个实施例,将整数寄存器文件608分割为两个单独的寄存器文件,一个寄存器文件用于数据的低顺序32位并且第二寄存器文件用于数据的高顺序32位。一个实施例的浮点寄存器文件610具有128位宽的条目,因为浮点指令通常具有宽度上从64到128位的操作数。
执行块611包含执行单元612、614、616、618、620、622、624,其中指令被实际地执行。该部分包括寄存器文件608、610,所述寄存器文件608、610存储微指令需要以执行的整数和浮点数据操作数值。一个实施例的处理器600由多个执行单元组成:地址生成单元(AGU)612、AGU 614、快ALU 616、快ALU 618、慢ALU 620、浮点ALU 622、浮点移动单元624。对于一个实施例,浮点执行块622、624执行浮点、MMX、SIMD和SSE或其他操作。一个实施例的浮点ALU 622包括64位乘以64位的浮点除法器以执行除、平方根和其余微op。对于本公开的实施例,可以用浮点硬件来处理涉及浮点值的指令。
在一个实施例中,ALU操作去往高速ALU执行单元616、618。一个实施例的快ALU616、618可以以半个时钟周期的有效等待时间执行快操作。对于一个实施例,大部分复杂的整数操作去往慢ALU 620,因为所述慢ALU 620包括用于长等待时间类型的操作的整数执行硬件,诸如乘法器、移位、标志逻辑和分支处理。由AGU 612、614执行存储器加载/存储操作。对于一个实施例,在执行对64位数据操作数的整数操作的上下文中描述了整数ALU 616、618、620。在替代的实施例中,可以实现ALU 616、618、620以支持包括16、32、128、256等的多种数据位。类似地,可以实现浮点单元622、624以支持具有各种宽度的位的操作数的范围。对于一个实施例,浮点单元622、624可以结合SIMD和多媒体指令对128位宽打包数据操作数操作。
在一个实施例中,在父加载已经完成执行之前,uop调度器602、604、606分派依赖的操作。因为uop在处理器600中被推测地调度和执行,所以处理器600还包括用于处理存储器未命中的逻辑。如果数据将未命中加载在数据高速缓存中,在流水线中可以存在飞行(flight)中的依赖的操作,其给调度器留下临时地不正确数据。重放机制跟踪并且重新执行使用不正确数据的指令。仅依赖的操作需要重放并且独立的操作被允许完成。处理器的一个实施例的调度器和重放机制还被设计用于抓住用于文本串比较操作的指令序列。
处理器600还包括用于根据本公开的实施例来实现对存储器消歧(disambiguation)的存储地址预测的逻辑。在一个实施例中,处理器600的执行块611可以包括用于实现对存储器消歧的存储地址预测的存储地址预测器(未示出)。
术语“寄存器”可以指的是被用作用于标识操作数的指令的一部分的板上处理器存储位置。换言之,寄存器可以是从处理器的外部(从程序员的角度)可使用的那些。然而,实施例的寄存器不应在含义上被限制于特定类型的电路。而是,实施例的寄存器能存储和提供数据并且执行在本文中描述的功能。可以由处理器内的电路使用任何数目的不同的技术来实现在本文中描述的寄存器,所述任何数目的不同的技术诸如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例的寄存器文件还包含用于打包数据的八个多媒体SIMD寄存器。
对于下面的讨论,寄存器被理解成是被设计以保持打包数据的数据寄存器,诸如以来自加利福尼亚州圣克拉拉的Intel公司的MMX技术使得能实现的微处理器中的64位宽MMXTM寄存器(在一些实例中也称为‘mm’寄存器)。以整数和浮点形式两者可用的这些MMX寄存器可以与伴随SIMD和SSE指令的打包数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或以后的(一般地被称为“SSEx”)技术的128位宽XMM寄存器还可以被用来保持这样的打包数据操作数。在一个实施例中,在存储打包数据和整数数据中,寄存器不需要在两个数据类型之间区分。在一个实施例中,将整数和浮点包含在相同的寄存器文件中或者不同的寄存器文件中。此外,在一个实施例中,可以将浮点和整数数据存储在不同的寄存器或相同的寄存器中。
现在参考图7,示出了图示在其中可以使用本公开的实施例的系统700的框图。如在图7中所示,多处理器系统700是点到点互连系统,并且包括经由点到点互连750耦合的第一处理器770和第二处理器780。虽然示出了具有仅两个处理器770、780,但是将会理解,本公开的实施例的范围不限于此。在其他实施例中,一个或多个附加的处理器可以存在于给定的处理器中。在一个实施例中,多处理器系统700可以实现如在本文中描述的混合核心。
示出了处理器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,所述存储器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可以连同总线桥718耦合到第一总线716,所述总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚计数(LPC)总线。在一个实施例中,各种设备可以被耦合到第二总线720,包括例如键盘和/或鼠标722、通信设备727和诸如可以包括指令/代码和数据730的盘驱动器或其他大容量存储设备之类的存储单元728。此外,音频I/O 724可以被耦合到第二总线720。注意,其他架构是可能的。例如,代替图7的点到点架构,系统可以实现多点(multi-drop)总线或其他这样的架构。
现在参考图8,示出了本公开的一个实施例可以在其中操作的系统800的框图。系统800可以包括一个或多个处理器810、815,所述处理器810、815被耦合到图形存储器控制器集线器(GMCH)820。在图8中用虚线来表示附加的处理器815的可选的性质。在一个实施例中,根据本公开的实施例,处理器810、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经由诸如前端总线(frontside bus)895之类的多点总线与(一个或多个)处理器810、815通信。
此外,GMCH 820被耦合到显示器845(诸如平板或触摸屏显示器)。GMCH 820可以包括集成图形加速器。GMCH 820被进一步耦合到输入/输出(I/O)控制器集线器(ICH)850,所述输入/输出(I/O)控制器集线器(ICH)850可以被用来将各种外围设备耦合到系统800。例如,在图8的实施例中示出的是外部图形设备860,连同另一外围设备870耦合到ICH 850,所述外部图形设备860可以是分立的图形设备。
替代地,附加的或不同的处理器也可以存在于系统800中。例如,(一个或多个)附加的处理器815可以包括与处理器810相同的(一个或多个)附加的处理器、与处理器810、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器异构的或不对称的(一个或多个)附加的处理器。在(一个或多个)处理器810、815之间在包括架构、微架构、热、功耗特性等的一系列优点的度量的方面中可以存在多种差异。这些差异可以有效地将它们本身表现(manifest)为在处理器810、815之中的不对称性和异构性。对于至少一个实施例,各种处理器810、815可以驻留在相同的管芯封装中。
现在参考图9,示出了本公开的实施例可以在其中操作的系统900的框图。图9图示了处理器970、980。在一个实施例中,处理器970、980可以实现上面描述的混合核心。处理器970、980可以分别包括集成存储器和I/O控制逻辑(“CL”)972和982,并且分别经由点到点(P-P)接口978和988之间的点到点互连950彼此互相通信。处理器970、980中的每个如所示通过相应的P-P接口976至994和986至998经由点到点互连952和954与芯片组990通信。对于至少一个实施例,CL 972、982可以包括集成存储器控制器单元。CL 972、982可以包括I/O控制逻辑。如描绘的那样,存储器932、934耦合到CL 972、982并且I/O设备914也耦合到控制逻辑972、982。旧有I/O设备915经由接口996耦合到芯片组990。
可以以许多不同系统类型来实现实施例。图10是根据本公开的实施例的SoC 1000的框图。虚线框是更先进的SoC上的可选特征。在图10中,(一个或多个)互连单元1012被耦合到:应用处理器1020,其包括一个或多个核心的集合1002A-N和(一个或多个)共享的高速缓存单元1006;系统代理单元1010;(一个或多个)总线控制器单元1016;(一个或多个)集成存储器控制器单元1014;集合或一个或多个媒体处理器1018,其可以包括集成图形逻辑1008、用于提供静止照相机和/或视频摄像机功能的图像处理器1024、用于提供硬件音频加速的音频处理器1026和用于提供视频编码/解码加速的视频处理器1028;静态随机存取存储器(SRAM)单元1030;直接存储器访问(DMA)单元1032;以及用于耦合到一个或多个外部显示器的显示单元1040。在一个实施例中,存储器模块可以被包括在(一个或多个)集成存储器控制器单元1014中。在另一实施例中,存储器模块可以被包括在可以用来访问和/或控制存储器的SoC 1000的一个或多个其他部件中。应用处理器1020可以包括用于实现如在本文中的实施例中描述的混合核心的存储地址预测器。
存储器层级包括在核心内的高速缓存的一个或多个级别、集合或一个或多个共享高速缓存单元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可以是通用处理器,诸如从加利福尼亚州圣克拉拉的IntelTM公司可得到的CoreTM i3、i5、i7、2 Duo和Quad、XeonTM、ItaniumTM、AtomTM或QuarkTM处理器。替代地,应用处理器1020可以来自另一公司,诸如ARM HoldingsTM有限公司、MIPSTM等。应用处理器1020可以是专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。可以在一个或多个芯片上实现应用处理器1020。应用处理器1020可以是使用多个工艺技术中的任何工艺技术的一个或多个衬底的一部分和/或可以在使用多个工艺技术中的任何工艺技术的一个或多个衬底上实现,所述多个工艺技术诸如例如BiCMOS、CMOS或NMOS。
图11是根据本公开的片上系统(SoC)设计的实施例的框图。作为具体说明性示例,SoC 1100被包括在用户设备(UE)中。在一个实施例中,UE指的是将由最终用户用来通信的任何设备,诸如手持式电话、智能电话、平板计算机、超薄笔记本计算机、具有宽带适配器的笔记本计算机或任何其他类似的通信设备。UE常常连接到基站或节点,其在性质上潜在地对应于GSM网络中的移动台(MS)。
此处,SOC 1100包括2个核心——1106和1107。核心1106和1107可以符合指令集架构,诸如基于Intel® Architecture CoreTM的处理器、Advanced Micro Devices公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计或其来宾以及他们的被许可人或采用者(adopter)。核心1106和1107被耦合到与总线接口单元1109和L2高速缓存1110相关联的高速缓存控制1108以与系统1100的其他部分通信。互连1110包括片上互连,诸如IOSF、AMBA或上面讨论的其他互连,其潜在地实现描述的公开的一个或多个方面。在一个实施例中,核心1106、1107可以实现如在本文中的实施例中描述的混合核心。
互连1110提供了到其他部件的通信通道,诸如订户身份模块(SIM)1130以与SIM卡对接、引导ROM 1135以保存引导代码用于由核心1106和1107执行来初始化和引导SoC1100、SDRAM控制器1140以与外部存储器(例如,DRAM 1160)对接、闪存控制器1145以与非易失性存储器(例如,闪存1165)对接、外围控制1150(例如,串行外围接口)以与外围设备对接、视频编解码器1120和视频接口1125以显示和接收输入(例如,触摸使能的输入)、GPU1115以执行图形相关计算等。这些接口中的任何接口可以合并在本文中描述的本公开的方面。另外,系统1100图示了用于通信的外围设备,诸如蓝牙模块1170、3G调制解调器1175、GPS 1180和Wi-Fi 1185。
图12图示了计算机系统1200的示例形式的机器的图形表示,在所述计算机系统1200中,可以执行指令集,用于使得机器执行在本文中讨论的方法论(methodology)中的任何一个或多个。在替代的实施例中,可以将机器连接(例如,联网)到LAN、内联网、外联网或因特网中的其他机器。机器可以以客户端-服务器网络环境中的服务器或客户端设备的能力、或作为对等(或分布式)网络环境中的对等体机器来操作。机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥或能够执行指定要由该机器采取的动作的指令的集合(顺序的或其他)的任何机器。此外,虽然仅图示了单个机器,但是术语“机器”还应当被解释成包括机器的任何集合,所述机器单独地或联合地执行指令的集合(或多个集合)以实行在本文中讨论的方法论中的任何一个或多个。
计算机系统1200包括处理设备1202、主存储器1204(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1206(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储设备1218,其经由总线1230彼此通信。
处理设备1202表示一个或多个通用处理设备,诸如微处理器、中央处理器单元等。更特别地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器或实现其他指令集的处理器或实现指令集的组合的处理器。处理设备1202还可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一个实施例中,处理设备1202可以包括一个或多个处理核心。处理设备1202被配置成执行用于执行在本文中讨论的操作和步骤的处理逻辑1226。在一个实施例中,处理设备1202与关于图1描述的处理器架构100相同,如在本文中利用本公开的实施例所描述的那样。
计算机系统1200可以进一步包括通信地耦合到网络1220的网络接口设备1208。计算机系统1200可以进一步包括视频显示单元1210(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1212(例如,键盘)、光标控制设备1214(例如,鼠标)和信号生成设备1216(例如,扬声器)。此外,计算机系统1200可以包括图形处理单元1222、视频处理单元1228和音频处理单元1232。
数据存储设备1218可以包括机器可访问存储介质1224,在所述机器可访问存储介质1224上的是存储的实现在本文中描述的功能的方法论中的任何一个或多个的软件1226,诸如实现如上所述的用于存储器消歧的存储地址预测。在由计算机系统1200对其执行期间,软件1226还可以完全地或至少部分地驻留在主存储器1204中作为指令1226和/或驻留在处理设备1202中作为处理逻辑1226;主存储器1204和处理设备1202还构成机器可访问存储介质。
机器可读存储介质1224还可以被用来存储实现用于诸如根据本公开的实施例描述的混合核心的存储地址预测的指令1226。虽然在示例实施例中将机器可访问存储介质1128示出为单个介质,但是术语“机器可访问存储介质”应当被理解成包括存储指令的一个或多个集合的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“机器可访问存储介质”还应当被理解成包括能够存储、编码或携带用于由机器执行的指令的集合以及使得机器执行本公开的方法论中的任何一个或多个的任何介质。术语“机器可访问存储介质”应当因此被理解成包括但不限于固态存储器以及光和磁介质。
以下示例关于进一步的实施例。示例1是一种处理器,其包括高速缓冲存储器以及处理核心,所述处理核心被通信地耦合到包括架构上受保护的存储器的架构上受保护的环境,所述处理核心要标识包括要在所述架构上受保护的环境中执行的多个指令的代码,确定被存储在所述架构上受保护的存储器中的第一物理存储器页面与由所述多个指令中的第一指令引用的第一虚拟存储器页面匹配,生成第一虚拟存储器页面的第一地址和第一物理存储器页面的第二地址之间的第一地址映射,在所述高速缓冲存储器中存储包括第一地址映射的地址翻译数据结构,并且通过取回被存储在所述地址翻译数据结构中的第一地址映射来执行所述代码。
虽然已经关于有限数目的实施例描述了本公开,但是本领域技术人员将领会由此的许多修改和变化。意图所附权利要求覆盖如落在本公开的真实精神和范围内的所有这样的修改和变化。
设计可以经历从创建到仿真到制造的各种阶段。表示设计的数据可以以多种方式表示设计。首先,如在仿真中有用的那样,可以使用硬件描述语言或另一功能描述语言来表示硬件。此外,在设计过程的一些阶段处可以生成具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在一些阶段处到达了表示硬件模型中的各种设备的物理放置的数据的级别。在使用常规半导体制造技术的情况中,表示硬件模型的数据可以是指定用来生产集成电路的掩模的不同的掩模层上的各种特征的存在或不存在的数据。在设计的任何表示中,可以将数据存储在任何形式的机器可读介质中。诸如盘之类的存储器或磁的或光的存储设备可以是用于存储经由调制的或否则生成以传输信息的光波或电波传输的这样的信息的机器可读介质。当传输指示或携带代码或设计的电载波时,从执行电信号的复制、缓冲或重新传输的程度上说,制作新的副本。因此,通信提供者或网络提供者可以在有形的、机器可读介质上至少临时地存储物品,诸如编码成载波的信息,实现本公开的实施例的技术。
如在本文中使用的模块指的是硬件、软件和/或固件的任何组合。作为示例,模块包括硬件,诸如与非暂态介质相关联的微控制器以存储适于由微控制器执行的代码。因此,在一个实施例中,对模块的引用指的是硬件,其被具体地配置成标识和/或执行将被保持在非暂态介质上的代码。此外,在另一实施例中,模块的使用指的是包括代码的非暂态介质,其具体地适于由微控制器执行以执行预定操作。并且如可以推断的那样,在又一实施例中,术语模块(在该示例中)可以指微控制器和非暂态介质的组合。常常图示为分离的模块边界通常变化并且可能重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,而潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,诸如晶体管、寄存器,或其他硬件,诸如可编程逻辑设备。
在一个实施例中,短语‘被配置成’的使用指的是布置、放在一起、制造、提供用于销售、导入和/或设计装置、硬件、逻辑或元素以执行指定的或确定的任务。在该示例中,未正在操作的装置或其元件仍旧“被配置成”执行指定的任务,如果其被设计、耦合和/或互连以执行所述指定的任务的话。作为纯说明性示例,在操作期间逻辑门可以提供0或1。但是‘被配置成’向时钟提供使能信号的逻辑门不包括可以提供1或0的每个可能的逻辑门。代之以,逻辑门是以一些方式耦合的逻辑门,一些方式是,在操作期间,1或0输出将使能时钟。再次注意,术语‘被配置成’的使用不需要操作,但是代之以聚焦于装置、硬件和/或元素的潜在的状态,其中在潜在的状态中,装置、硬件和/或元素被设计成当装置、硬件和/或元素正在操作时执行特定任务。
此外,在一个实施例中,短语‘用来’、‘能够/有能力’和或‘可操作以’的使用指的是一些装置、逻辑、硬件和/或元素被以这样的方式设计成使得能实现装置、逻辑、硬件和/或元素以指定的方式的使用。如上面那样注意,在一个实施例中,用来、有能力或可操作以的使用指的是装置、逻辑、硬件和/或元素的潜在状态,其中装置、逻辑、硬件和/或元素未正在操作但是被以这样的方式设计成使得能实现装置以指定的方式的使用。
如在本文中使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。一般地,逻辑电平、逻辑值或逻辑的值的使用也称为1和0,其简单地表示二进制逻辑状态。例如,1指的是高逻辑电平并且0指的是低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元可能能够保持单个逻辑的值或多个逻辑的值。然而,已经使用计算机系统中的值的其他表示。例如,十进制数字十还可以被表示为二进制值910和十六进制字母A。因此,值包括能够被保持在计算机系统中的信息的任何表示。
此外,可以由值或值的一部分来表示状态。作为示例,诸如逻辑的一之类的第一值可以表示默认的或初始的状态,而诸如逻辑的零之类的第二值可以表示非默认的状态。另外,在一个实施例中,术语重新设置和设置分别指的是默认的和更新的值或状态。例如,默认的值潜在地包括高逻辑的值,即重新设置,而更新的值潜在地包括低逻辑的值,即,设置。注意,值的任何组合可以被利用来表示任何数目的状态。
可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码来实现上面记载的方法、硬件、软件、固件或代码的实施例,所述指令或代码可由处理元件执行。非暂态机器可访问/可读介质包括提供(即,存储和/或传输)由诸如计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非暂态机器可访问介质包括诸如静态RAM(SRAM)或动态RAM(DRAM)之类的随机存取存储器(RAM);ROM;磁存储介质或光存储介质;闪存设备;电存储设备;光存储设备;声学存储设备;用于保持从暂态的(传播的)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备等,其将被从可以从那里接收信息的非暂态介质区分。
可以将用于执行本公开的实施例的程序逻辑的指令存储在系统中的存储器内,系统中存储器诸如DRAM、高速缓存、闪存或其他存储设备。此外,可以经由网络或通过其他计算机可读介质分发指令。因此,机器可读介质可以包括用于存储或传输机器(例如,计算机)可读形式的信息的任何机制,但是不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存或在经由电的、光的、声学的或其他形式的传播的信号(例如,载波、红外信号、数字信号等)通过因特网的信息的传输中使用的有形的机器可读存储设备。因此,计算机可读介质包括适用于存储或传输机器(例如,计算机)可读的形式的电子指令或信息的任何类型的有形的机器可读介质。
贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,贯穿本说明书在各种位置中的短语“在一个实施例中”或“在实施例中”的出现不一定都指的是相同的实施例。此外,可以以任何合适的方式将特定特征、结构或特性组合在一个或多个实施例中。
在前述说明书中,已经参考具体示例性实施例给出了具体实施方式。然而,将清楚的是,在不脱离如在所附权利要求书中记载的本公开的较广精神和范围的情况下,可以对其做出各种修改和改变。因此,说明书和附图将被视为说明性的意义而不是限制性的意义。此外,实施例和其他示例性语言的前述使用不一定指的是相同的实施例或相同的示例,而可能指的是不同的和有区别的实施例并且潜在地指的是相同的实施例。
Claims (23)
1.一种处理器,包括:
高速缓冲存储器;以及
处理核心,其被通信地耦合到包括架构上受保护的存储器的架构上受保护的环境,所述处理核心要:
标识包括要在所述架构上受保护的环境中执行的多个指令的代码;
确定被存储在所述架构上受保护的存储器中的第一物理存储器页面与由所述多个指令中的第一指令引用的第一虚拟存储器页面匹配;
生成第一虚拟存储器页面的第一地址和第一物理存储器页面的第二地址之间的第一地址映射;
在所述高速缓冲存储器中存储包括第一地址映射的地址翻译数据结构;以及
通过取回被存储在所述地址翻译数据结构中的第一地址映射来执行所述代码。
2.根据权利要求1所述的处理器,其中所述架构上受保护的环境是安全飞地执行环境。
3.根据权利要求1所述的处理器,其中所述架构上受保护的存储器包括由飞地页面高速缓存(EPC)提供的多个物理存储器页面,所述飞地页面高速缓存(EPC)包括多个EPC页面。
4.根据权利要求1所述的处理器,其中所述高速缓冲存储器中的所述地址翻译数据结构包括多个地址映射,用来将由所述多个指令引用的虚拟存储器页面映射到物理存储器页面。
5.根据权利要求1所述的处理器,其中为了生成所述地址翻译数据结构,所述处理核心要进一步:
确定由所述多个指令中的第二指令引用的第二虚拟存储器页面不与所述架构上受保护的存储器中的物理存储器页面匹配;
将所述处理核心的架构状态存储在所述架构上受保护的存储器的状态保存区域中;以及
退出所述架构上受保护的环境。
6.根据权利要求5所述的处理器,其中响应于退出所述代码的执行,所述处理核心要进一步:
将与第二虚拟存储器页面匹配的第二物理页面从被通信地耦合到所述处理器的存储设备取回到所述架构上受保护的存储器中;
重新进入所述架构上受保护的环境以继续从所述架构状态生成所述地址翻译数据结构;以及
取回被存储在所述状态保存区域中的所述架构状态。
7.根据权利要求5所述的处理器,其中所述状态保存区域包括指示用于所述架构上受保护的环境的恢复模式的标志,并且其中
响应于确定所述标志被设置成第一值,禁用飞地恢复命令;以及
响应于确定所述标志被设置成第二值,将所述飞地恢复命令转换成飞地进入命令。
8.根据权利要求5所述的处理器,进一步包括存储器管理单元,用来响应于确定第二虚拟存储器页面不与所述架构上受保护的存储器中的物理存储器页面匹配而生成页面错误,其中所述处理核心要:
响应于检测到所述页面错误,将与第二虚拟存储器页面匹配的第二物理页面从被通信地耦合到所述处理器的存储设备取回到所述架构上受保护的存储器中。
9.根据权利要求1所述的处理器,其中所述处理核心要进一步:
将所述高速缓冲存储器锁定到所述架构上受保护的环境;以及
继执行所述代码之后清除所述高速缓冲存储器。
10.一种系统,包括:
架构上受保护的环境,其包括架构上受保护的存储器;以及
处理器,其被通信地耦合到所述架构上受保护的环境,所述处理器包括:
高速缓冲存储器;以及
处理核心,用来
标识包括要在所述架构上受保护的环境中执行的多个指令的代码;
确定被存储在所述架构上受保护的存储器中的第一物理存储器页面与由所述多个指令中的第一指令引用的第一虚拟存储器页面匹配;
生成第一虚拟存储器页面的第一地址和第一物理存储器页面的第二地址之间的第一地址映射;
在所述高速缓冲存储器中存储包括第一地址映射的地址翻译数据结构;以及
通过取回被存储在所述地址翻译数据结构中的第一地址映射来执行所述代码。
11.根据权利要求10所述的系统,其中所述架构上受保护的环境是安全飞地执行环境。
12.根据权利要求10所述的系统,其中所述架构上受保护的存储器包括由飞地页面高速缓存(EPC)提供的多个物理存储器页面,所述飞地页面高速缓存(EPC)包括多个EPC页面。
13.根据权利要求10所述的系统,其中所述处理核心要在执行所述代码之前存储将由所述多个指令引用的虚拟存储器页面映射到所述地址翻译数据结构中的物理存储器页面所需的地址映射。
14.根据权利要求10所述的系统,其中为了生成所述地址翻译数据结构,所述处理核心要进一步:
确定由所述多个指令中的第二指令引用的第二虚拟存储器页面不与所述架构上受保护的存储器中的物理存储器页面匹配;
将所述处理核心的架构状态存储在所述架构上受保护的存储器的状态保存区域中;以及
退出所述架构上受保护的环境。
15.根据权利要求14所述的系统,其中响应于退出所述代码的执行,所述处理核心要进一步:
将与第二虚拟存储器页面匹配的第二物理页面从被通信地耦合到所述处理器的存储设备取回到所述架构上受保护的存储器中;
重新进入所述架构上受保护的环境以继续从所述架构状态生成所述地址翻译数据结构;以及
取回被存储在所述状态保存区域中的所述架构状态。
16.根据权利要求14所述的系统,其中所述状态保存区域包括指示用于所述架构上受保护的环境的恢复模式的标志,并且其中
响应于确定所述标志被设置成第一值,禁用飞地恢复命令;以及
响应于确定所述标志被设置成第二值,将所述飞地恢复命令转换成飞地进入命令。
17.根据权利要求14所述的系统,进一步包括存储器管理单元,用来响应于确定第二虚拟存储器页面不与所述架构上受保护的存储器中的任何物理存储器页面匹配而生成页面错误,其中所述处理核心要:
响应于检测到所述页面错误,将与第二虚拟存储器页面匹配的第二物理页面从被通信地耦合到所述处理器的存储设备取回到所述架构上受保护的存储器中。
18.根据权利要求10所述的系统,其中所述处理核心要:
将所述高速缓冲存储器锁定到所述架构上受保护的环境;以及
继执行所述代码之后清除所述高速缓冲存储器。
19.一种方法,包括:
标识包括要在包括架构上受保护的存储器的架构上受保护的环境中执行的多个指令的代码;
确定被存储在所述架构上受保护的存储器中的第一物理存储器页面与由所述多个指令中的第一指令引用的第一虚拟存储器页面匹配;
生成第一虚拟存储器页面的第一地址和第一物理存储器页面的第二地址之间的第一地址映射;
在所述高速缓冲存储器中存储包括第一地址映射的地址翻译数据结构;以及
通过取回被存储在所述地址翻译数据结构中的第一地址映射来执行所述代码。
20.根据权利要求19所述的方法,其中所述架构上受保护的环境是安全飞地执行环境,并且其中所述架构上受保护的存储器包括由飞地页面高速缓存(EPC)提供的多个物理存储器页面,所述飞地页面高速缓存(EPC)包括多个EPC页面。
21.至少一种机器可读介质,其包括多个指令,所述多个指令响应于被在计算设备上执行而使得所述计算设备实行根据权利要求19至20中任一项所述的方法。
22.一种用于在处理设备中实现自动自适应电压控制的引擎的装置,所述处理设备被配置成执行根据权利要求19至20中任一项所述的方法。
23.一种装置,包括:用于执行根据权利要求19至20中任一项所述的方法的部件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/897,406 US10970390B2 (en) | 2018-02-15 | 2018-02-15 | Mechanism to prevent software side channels |
US15/897406 | 2018-02-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110162380A true CN110162380A (zh) | 2019-08-23 |
Family
ID=65033455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910117040.7A Pending CN110162380A (zh) | 2018-02-15 | 2019-02-15 | 用来防止软件侧通道的机制 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10970390B2 (zh) |
EP (1) | EP3528130B1 (zh) |
CN (1) | CN110162380A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785738A (zh) * | 2024-02-23 | 2024-03-29 | 超睿科技(长沙)有限公司 | 页表预取方法、装置、芯片及存储介质 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10979368B2 (en) * | 2017-08-02 | 2021-04-13 | Nebbiolo Technologies, Inc. | Architecture for converged industrial control and real time applications |
US10628315B2 (en) * | 2017-09-28 | 2020-04-21 | Intel Corporation | Secure memory repartitioning technologies |
US11042634B2 (en) * | 2018-12-21 | 2021-06-22 | Fujitsu Limited | Determining information leakage of computer-readable programs |
EP3646216B1 (en) * | 2019-04-19 | 2021-04-14 | Advanced New Technologies Co., Ltd. | Methods and devices for executing trusted applications on processor with support for protected execution environments |
US20210314237A1 (en) * | 2020-04-07 | 2021-10-07 | Vmware, Inc. | Security threat detection during service query handling |
CN112800431B (zh) * | 2020-08-28 | 2023-09-29 | 支付宝(杭州)信息技术有限公司 | 超线程场景下安全进入可信执行环境的方法及装置 |
CN112989397B (zh) * | 2021-05-17 | 2021-07-30 | 支付宝(杭州)信息技术有限公司 | 一种抗侧信道攻击的数据处理方法和装置 |
CN114117409A (zh) * | 2021-11-19 | 2022-03-01 | 上海商汤临港智能科技有限公司 | 用户代码的运行方法及装置、电子设备和存储介质 |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5479627A (en) * | 1993-09-08 | 1995-12-26 | Sun Microsystems, Inc. | Virtual address to physical address translation cache that supports multiple page sizes |
US5594886A (en) * | 1994-10-23 | 1997-01-14 | Lsi Logic Corporation | Pseudo-LRU cache memory replacement method and apparatus utilizing nodes |
US5948097A (en) | 1996-08-29 | 1999-09-07 | Intel Corporation | Method and apparatus for changing privilege levels in a computer system without use of a call gate |
US6986052B1 (en) * | 2000-06-30 | 2006-01-10 | Intel Corporation | Method and apparatus for secure execution using a secure memory partition |
US6848046B2 (en) * | 2001-05-11 | 2005-01-25 | Intel Corporation | SMM loader and execution mechanism for component software for multiple architectures |
US6671791B1 (en) * | 2001-06-15 | 2003-12-30 | Advanced Micro Devices, Inc. | Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms |
US7272832B2 (en) | 2001-10-25 | 2007-09-18 | Hewlett-Packard Development Company, L.P. | Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform |
US7367024B2 (en) * | 2004-09-21 | 2008-04-29 | University Of Maryland | Compiler-driven dynamic memory allocation methodology for scratch-pad based embedded systems |
US7870336B2 (en) * | 2006-11-03 | 2011-01-11 | Microsoft Corporation | Operating system protection against side-channel attacks on secrecy |
US20080244155A1 (en) * | 2007-03-30 | 2008-10-02 | Kyungwoo Lee | Methods and apparatus to protect dynamic memory regions allocated to programming agents |
US8451281B2 (en) * | 2009-06-23 | 2013-05-28 | Intel Corporation | Shared virtual memory between a host and discrete graphics device in a computing system |
US9087200B2 (en) * | 2009-12-22 | 2015-07-21 | Intel Corporation | Method and apparatus to provide secure application execution |
GB2550698B (en) | 2009-12-22 | 2018-04-11 | Intel Corp | Method and Apparatus to provide secure application execution |
US8181176B2 (en) * | 2010-06-21 | 2012-05-15 | Intel Corporation | Uniform storage device access using partial virtual machine executing within a secure enclave session |
US8972746B2 (en) * | 2010-12-17 | 2015-03-03 | Intel Corporation | Technique for supporting multiple secure enclaves |
GB201105222D0 (en) * | 2011-03-29 | 2011-05-11 | Becrypt Ltd | Dual environment computing system and method and system for providing a dual environment computing system |
US9043562B2 (en) * | 2011-04-20 | 2015-05-26 | Microsoft Technology Licensing, Llc | Virtual machine trigger |
US8935516B2 (en) * | 2011-07-29 | 2015-01-13 | International Business Machines Corporation | Enabling portions of programs to be executed on system z integrated information processor (zIIP) without requiring programs to be entirely restructured |
KR102000093B1 (ko) * | 2012-01-27 | 2019-07-15 | 삼성전자주식회사 | 무선 통신 시스템에서 데이터를 송수신하는 방법 및 장치 |
US20140007087A1 (en) * | 2012-06-29 | 2014-01-02 | Mark Scott-Nash | Virtual trusted platform module |
US8875295B2 (en) | 2013-02-22 | 2014-10-28 | Bitdefender IPR Management Ltd. | Memory introspection engine for integrity protection of virtual machines |
KR101717263B1 (ko) * | 2013-03-06 | 2017-03-16 | 인텔 코포레이션 | 가상 머신들의 측정용 신뢰 루트 |
US9430384B2 (en) * | 2013-03-31 | 2016-08-30 | Intel Corporation | Instructions and logic to provide advanced paging capabilities for secure enclave page caches |
US9698989B2 (en) * | 2013-07-23 | 2017-07-04 | Intel Corporation | Feature licensing in a secure processing environment |
US9507729B2 (en) * | 2013-10-01 | 2016-11-29 | Synopsys, Inc. | Method and processor for reducing code and latency of TLB maintenance operations in a configurable processor |
US9262337B2 (en) * | 2013-10-09 | 2016-02-16 | Microsoft Technology Licensing, Llc | Dynamically determining a translation lookaside buffer flush promotion threshold value |
KR101802806B1 (ko) * | 2013-12-17 | 2017-11-29 | 인텔 코포레이션 | 커널 모드 애플리케이션에 의한 사용을 위한 보안 엔클레이브 |
US9256546B2 (en) * | 2014-03-31 | 2016-02-09 | International Business Machines Corporation | Transparent code patching including updating of address translation structures |
US9251090B1 (en) * | 2014-06-03 | 2016-02-02 | Amazon Technologies, Inc. | Hypervisor assisted virtual memory obfuscation |
US9703733B2 (en) * | 2014-06-27 | 2017-07-11 | Intel Corporation | Instructions and logic to interrupt and resume paging in a secure enclave page cache |
US9552217B2 (en) * | 2014-06-28 | 2017-01-24 | Vmware, Inc. | Using active/active asynchronous replicated storage for live migration |
US20160140042A1 (en) * | 2014-11-14 | 2016-05-19 | Cavium, Inc. | Instruction cache translation management |
US9405708B1 (en) * | 2015-02-04 | 2016-08-02 | Amazon Technologies, Inc. | Preventing attacks that rely on same-page merging by virtualization environment guests |
US9870467B2 (en) * | 2015-03-27 | 2018-01-16 | Intel Corporation | Apparatus and method for implementing a forked system call in a system with a protected region |
US9842065B2 (en) | 2015-06-15 | 2017-12-12 | Intel Corporation | Virtualization-based platform protection technology |
US10452566B2 (en) * | 2015-10-02 | 2019-10-22 | Nvidia Corporation | Storing secure state information in translation lookaside buffer cache lines |
US9798641B2 (en) * | 2015-12-22 | 2017-10-24 | Intel Corporation | Method to increase cloud availability and silicon isolation using secure enclaves |
US10671542B2 (en) * | 2016-07-01 | 2020-06-02 | Intel Corporation | Application execution enclave memory method and apparatus |
US10324862B2 (en) * | 2016-09-30 | 2019-06-18 | Intel Corporation | Supporting oversubscription of guest enclave memory pages |
US10642972B2 (en) * | 2016-10-20 | 2020-05-05 | Intel Corporation | Extending packet processing to trusted programmable and fixed-function accelerators |
US20190012271A1 (en) * | 2017-07-05 | 2019-01-10 | Qualcomm Incorporated | Mechanisms to enforce security with partial access control hardware offline |
US10783240B2 (en) * | 2017-09-29 | 2020-09-22 | Stmicroelectronics, Inc. | Secure environment in a non-secure microcontroller |
US10831506B2 (en) * | 2018-04-05 | 2020-11-10 | Phoenix Technologies Ltd. | Local oversight and provisioning of BIOS activity |
US10768968B2 (en) * | 2018-09-28 | 2020-09-08 | Intel Corporation | Split-control of page attributes between virtual machines and a virtual machine monitor |
-
2018
- 2018-02-15 US US15/897,406 patent/US10970390B2/en active Active
-
2019
- 2019-01-15 EP EP19151998.2A patent/EP3528130B1/en active Active
- 2019-02-15 CN CN201910117040.7A patent/CN110162380A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785738A (zh) * | 2024-02-23 | 2024-03-29 | 超睿科技(长沙)有限公司 | 页表预取方法、装置、芯片及存储介质 |
CN117785738B (zh) * | 2024-02-23 | 2024-05-14 | 超睿科技(长沙)有限公司 | 页表预取方法、装置、芯片及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US10970390B2 (en) | 2021-04-06 |
EP3528130A1 (en) | 2019-08-21 |
US20190251257A1 (en) | 2019-08-15 |
EP3528130B1 (en) | 2021-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110162380A (zh) | 用来防止软件侧通道的机制 | |
CN104954356B (zh) | 保护共享的互连以用于虚拟机 | |
EP3210123B1 (en) | Memory protection key architecture with independent user and supervisor domains | |
TWI715580B (zh) | 用以支援保護容器的即時遷移之處理器、方法、系統和指令 | |
CN105320611B (zh) | 用于细粒存储器保护的方法和设备 | |
CN102906692B (zh) | 修改适配器功能参数的指令的方法和系统 | |
CN108334400B (zh) | 为安全飞地管理存储器 | |
CN109960665A (zh) | 用于在分页期间逆转页阻止的解除阻止指令 | |
CN108463826A (zh) | 用于在环转变期间保护栈的处理器扩展 | |
TWI723080B (zh) | 用於子頁寫入保護的方法及設備 | |
TWI742120B (zh) | 用以識別及避免在虛擬機器監控器與客端虛擬機器之間追蹤衝突的處理器延伸的處理系統、晶片上系統及方法 | |
US10394595B2 (en) | Method to manage guest address space trusted by virtual machine monitor | |
CN110472444A (zh) | 防止对加密存储器的未授权访问 | |
CN109564552A (zh) | 增强基于每页当前特权等级的存储器访问许可 | |
CN102906720A (zh) | 启用/禁用计算环境的适配器 | |
CN106575284A (zh) | 用于内核模块的多核存储器数据记录器 | |
EP3507702A1 (en) | Detecting bus locking conditions and avoiding bus locks | |
US10452423B2 (en) | Method and apparatus for light-weight virtualization contexts | |
CN109690546B (zh) | 支持对客户机飞地存储器页的超额订阅 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |