CN106575261A - 受保护的区域中的存储器初始化 - Google Patents

受保护的区域中的存储器初始化 Download PDF

Info

Publication number
CN106575261A
CN106575261A CN201580045263.7A CN201580045263A CN106575261A CN 106575261 A CN106575261 A CN 106575261A CN 201580045263 A CN201580045263 A CN 201580045263A CN 106575261 A CN106575261 A CN 106575261A
Authority
CN
China
Prior art keywords
page
processor
content
memory
processor core
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
Application number
CN201580045263.7A
Other languages
English (en)
Inventor
R·M·勒斯列-赫德
F·X·麦克金
C·V·罗扎斯
K·C·兹姆德兹恩司基
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN106575261A publication Critical patent/CN106575261A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection 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/1425Protection 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 physical, e.g. cell, word, block
    • G06F12/1441Protection 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 physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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/53Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/74Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

描述了安全存储器分配技术。处理器包括处理器核以及在处理器核和主存储器之间耦合的存储器控制器。主存储器包括受保护的区域,受保护的区域包括安全页。处理器用于响应于内容复制指令来初始化应用地址空间的受保护的区域中的目标页。处理器还用于响应于内容复制指令选择要被复制的受保护的区域中的源页的内容。处理器还用于响应于内容复制指令将被选择的内容复制到应用地址空间的受保护的区域中的目标页。

Description

受保护的区域中的存储器初始化
技术领域
本公开涉及计算机系统;更具体地,涉及对存储在计算机系统的存储器中的数据的保护。
背景技术
诸如在计算机上运行的硬件系统和软件系统的计算机系统通常具有未被检测到的缺陷,该缺陷可被硬件攻击或软件攻击利用,例如在因特网或其他通信网络上接收的恶意计算机程序。硬件攻击和软件根据可包括木马、病毒、蠕虫、间谍软件以及其他恶意软件。许多现有的计算机安全系统通过尝试阻止攻击破解计算机系统的任一部分来抗击硬件攻击和软件攻击。
设计计算机系统中的处理器以保护存储器中的敏感数据免受硬件攻击和软件攻击的破坏。一些处理器为加密、完整性和重放保护提供加密机制。存储器加密保护存储器驻留的数据的机密性。完整性保护阻止攻击者引起对存储器中的密文(即,加密的数据,与是未加密的数据的明文不同)的隐藏的修改。重放保护消除对密文的任一未被检测到的时间上的替换。在没有加密、完整性和重放保护的情况下,具有到系统的物理访问的攻击者可记录数据行的快照并且在稍后的时间点重放数据行以修改数据行和攻击计算机系统。
附图说明
图1是示出根据一个实施例的实现用于实现安全存储器的存储器加密引擎(MEE)的计算系统的框图。
图2A根据一个实施例示出了包括应用地址空间的主存储器。
图2B根据一个实施例示出了受保护的区域可包括具有被选择的内容或代码的一个或多个源页。
图2C是示出根据一个实施例的在受保护的区域中将源页的被选择的内容复制到目标页的方法的流程图。
图2D是示出根据一个实施例的在受保护的区域中将源页的被选择的内容复制到目标页的方法的流程图。
图3根据一个实施例示出了应用地址空间中的飞地。
图4根据一个实施例示出了具有被转换为普通EPC页的待定EPC页的飞地。
图5根据一个实施例描绘了不同特权等级的环。
图6A是示出根据一个实施例的有序流水线以及寄存器重命名级、无序发布/执行流水线的框图。
图6B是示出根据一个实施例的实现安全存储器重新分区的处理器的微架构的框图。
图7根据一个实施例示出了包括执行安全存储器重新分区的逻辑电路的处理器的微架构的框图。
图8是根据一个实现的计算机系统的框图。
图9是根据另一实现的计算机系统的框图。
图10是根据一个实现的片上系统的框图。
图11示出了计算系统的框图的另一实现。
图12示出了计算系统的框图的另一实现。
具体实施方式
描述了安全存储器分配技术。处理器包括处理器核以及在处理器核和主存储器之间耦合的存储器控制器。为了阻止硬件攻击或软件攻击潜入被选择的应用,处理器可为被选择的应用提供受保护的区域来运行。传统计算机安全系统提供整个软件系统的相对低保证的保护。阻止来自任何不驻留在受保护的区域中的软件的对受保护的区域的访问。受保护的区域为在受保护的区域中的软件提供相对高的安全性。
在一个示例中,受保护的区域不尝试阻止硬件攻击或软件攻击破解软件系统在受保护的区域外的部分,但是停止硬件攻击或软件攻击破解软件系统在受保护的区域中的部分。因此,如果在受保护的区域外的软件系统进程被破解,可阻止被破解的进程破解在受保护的区域中的软件系统资源。受保护的区域的一个优势是为被选择的程序提供机密性和完整性,以在即使存在有特权的恶意软件或在更高特权等级运行的其他流氓软件程序的情况下运行。
图1是示出根据一个实施例的实现用于实现安全存储器的存储器加密引擎(MEE)150的计算系统100的框图。可由基本输入-输出系统(BIOS)在引导时间设置安全存储器。如本文中所述,由在处理器110上执行的软件(例如操作系统(OS)或虚拟机监视器(VMM))所引导,处理器110执行将安全的页添加至存储器的受保护的区域的指令。此外,MEE提供的存储器保护在处理器不一定执行提供机密性、完整性和重放保护的任何指令的意义上是透明的。例如,当逐出属于安全页的任一高速缓存行时,MEE自动地将这些保护提供至高速缓存行。处理器110可用在包括但不限于台式计算机、平板计算机、膝上型计算机、上网本、笔记本计算机、个人数字助理(PDA)、服务器、工作站、蜂窝电话、移动计算设备、智能电话、因特网设备或任何其他类型的计算设备的系统中。在另一实施例中,处理器110可用在片上系统(SoC)系统中。
计算系统100代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,不过也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,计算系统100执行可从美国华盛顿州雷蒙德市的微软公司获得的WINDOWSTM操作系统的某个版本,不过也可使用其他操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户界面。因此,本发明的各实施例不限于硬件电路和软件的任何具体组合。
可在单处理器桌面或服务器系统的上下文中描述一个实施例,但是可将替代实施例包括在多处理器系统中。计算机系统100可以是“中枢”系统架构的示例。计算机系统100包括用于处理数据信号的处理器110。作为一个说明性示例,处理器110包括例如,复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器或任何其他处理器设备(诸如,数字信号处理器)。处理器110耦合到在处理器110及系统100中的其他组件(诸如存储指令、数据,或其任何组合的存储器120)之间传输数据信号的处理器总线。系统100的其他组件可包括图形加速器、存储器控制器中枢、I/O控制器中枢、无线收发器、闪存BIOS、网络控制器、音频控制器、串行扩展端口、以及I/O控制器等。这些要素执行熟悉本领域的人员所熟知的它们的常规功能。
在一个实施例中,处理器110包括第一级(L1)内部高速缓存存储器160。取决于架构,处理器110可以具有单个的内部高速缓存或多级的内部高速缓存。其他实施例包括内部高速缓存和外部高速缓存两者的组合,这取决于特定实现和需求。寄存器组用于将不同类型的数据存储在各种寄存器中,各种寄存器包括整数寄存器、浮点寄存器、向量寄存器、区块化(banked)寄存器、影子寄存器(shadow register)、检查点寄存器、状态寄存器、配置寄存器以及指令指针寄存器。
应当注意,执行单元可以或可以不具有浮点单元。在一个实施例中,处理器110包括用于存储微代码的微代码(ucode)ROM,该微代码在被执行时将执行用于某些宏指令的算法或处理复杂的场景。在此,微代码是潜在地可更新的,以便为处理器110处理逻辑缺陷/修补。
执行单元的替代实施例也可以用于微控制器、嵌入式处理器、图形设备、DSP及其他类型的逻辑电路。系统100包括存储器120。存储器120包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器120存储由将由处理器110执行的数据信号来表示的指令和/或数据。处理器110经由处理器总线耦合至存储器120。诸如存储器控制器中枢(MCH)的系统逻辑芯片可以耦合到处理器总线和存储器120。MCH可提供至存储器120的高带宽存储器路径,用于指令和数据存储,以及用于存储图形命令、数据和纹理。例如,MCH可用于在处理器110、存储器120与系统100中的其他组件之间引导数据信号,并且用于在处理器总线、存储器120与系统I/O之间桥接数据信号。MCH可通过存储器接口耦合至存储器120。在一些实施例中,系统逻辑芯片可以提供用于通过加速图形端口(AGP)互连耦合到图形控制器的图形端口。系统100也可以包括I/O控制器中枢(ICH)。ICH可经由本地I/O总线来提供到某些I/O设备的直接连接。本地I/O总线是用于将外围设备连接到存储器120、芯片组以及处理器110的高速I/O总线。一些示例是音频控制器、固件中枢(闪存BIOS)、无线收发机、数据存储、包括用户输入和键盘接口的传统I/O控制器、串行扩展端口(诸如通用串行总线(USB))以及网络控制器。数据存储设备可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或其他大容量存储设备。
对于系统的另一个实施例,由如上所述的处理器核140执行的指令可与片上系统一起使用。片上系统的一个实施例包括处理器和存储器。一个这样的系统的存储器是闪存。闪存可以位于与处理器和其他系统组件相同的管芯上。另外,诸如存储器控制器或图形控制器的其他逻辑块也可以位于片上系统上。
处理器110包括用于执行系统的指令的一个或多个处理器核140。处理器核140包括但不限于用于获取指令的预取逻辑、用于解码指令的解码逻辑、用于执行指令的执行逻辑等。处理器110包括用于高速缓存指令和/或数据的高速缓存160。高速缓存160包括但不限于一级、二级和末级高速缓存(LLC)165,或任何处理器110中的高速缓存存储器的其他配置。在另一个实施例中,根据本文中所描述的实施例,计算系统100包括诸如处理器110的组件来使用包括执行用于处理数据的算法的逻辑的执行单元。
存储器控制器130执行使得处理器110具有访问包括易失性存储器和/或非易失性存储器的主存储器120并与之进行通信的功能。在一个实施例中,存储器控制器130耦合至包括MEE 150的系统代理180。在一个实施例中,MEE 150位于末级高速缓存165与存储器控制器130之间以执行对移入和移出主存储器120的受保护的区域125的数据行的加密、解密和认证。MEE 150位于处理器管芯上,而存储器120位于处理器管芯外。
根据本发明的一个实施例,MEE 150并行地处理多个存储器读取请求以改善到受保护的区域125的访问等待时间。MEE 150执行计数器模式加密,计数器模式加密要求加密种子对于数据行在时间上和空间上均是唯一的。空间唯一性可通过使用被访问的数据行的地址来实现,而时间唯一性可通过使用用作数据行的版本的计数器来实现。在一个实施例中,MEE 150也通过使用计数器树结构来保护主存储器120的受保护的区域125中的数据行,在计数器树结构中只有树的根存储在管芯上并且形成信任根(即,信任边界)。数据行的版本是该计数器树结构的一部分。替代地,可为重放保护使用其他保护机制。例如,与安全高速缓存行相关联的消息认证码(MAC)可存储在管芯上,因为成功的重放攻击将需要重放数据行及其相关联的MAC。然而,这种解决方案有过高的管芯上存储要求。
在一个实施例中,存储器加密可保护在主存储器120上的存储器驻留的数据的机密性。存储器加密主要设计为,当随着数据行移动到处理器上或移动到处理器外攻击者试图静默地观察数据行时,保护免受被动攻击的影响。一些处理器包括加密模块,加密模块在敏感数据存储到存储器的受保护的区域中之前加密该数据。在对受保护的区域的存储器读取时,在将数据行馈送到处理器中之前解密数据行。可基于用户要求的安全级别选择加密和解密算法。
在另一个实施例中,可将主存储器120分为多个区域,包括一个或多个受保护的区域125(本文中也称为安全存储器范围或MEE区域)。每个区域有多个部分,飞地页面高速缓存(EPC)部分、重放保护和完整性元数据的硬件保留部分、以及在实现内部的另一硬件保留部分。在一个实施例中,受保护的区域(MEE区域)可以是固定的范围,或者多个受保护的区域(MEE区域)可以是一组多个固定的范围。在另一个实施例中,可将整个存储器配置为被分成多个MEE区域的灵活的存储器。在启动时,整个存储器开始为非安全的,并且系统软件按系统上的安全存储器的要求所引导的转换整个存储器。如本文中所描述的,主存储器120可包括多个安全MEE区域,并且也可包括非安全存储器范围。
诸实施例不限于计算机系统。本发明的替代实施例可用于其他设备,诸如手持式设备和嵌入式应用。手持式设备的某些示例包括蜂窝电话、网际协议设备、数码相机、PDA以及手持式PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或能够执行根据至少一个实施例的一条或多条指令的任何其他系统。
图2A示出了包括应用地址空间210的主存储器220(如图1所述)。图2进一步示出了应用地址空间210可包括为操作系统代码230、存储器的受保护的区域240以及存储器的不受保护的区域250分配的存储器。在一个实施例中,存储器的不受保护的区域250可包括应用代码260和270。在另一个实施例中,飞地240可包括安全页,而存储器的不受保护的区域250可包括非安全页。在一个示例中,飞地240的安全页可包括条目表242、飞地堆(enclaveheap)244、飞地堆栈(enclave stack)246、以及飞地代码248。条目表242可以是用于受保护的区域240中的一组对象的参考表。飞地堆244可以是存储器的一部分,其中被动态地分配的存储器可以位于受保护的区域240中。飞地堆栈246可以是存储器堆栈,其中局部变量可以位于受保护的区域240中。
飞地240被设计为保护第三方秘密免受硬件攻击和软件攻击的影响。飞地可通过确保当驻留在平台存储器中时飞地秘密被存储为加密的来保护飞地秘密的机密性。为了提供免受硬件攻击的影响的完全保护,飞地提供完整性保护的重放保护。在没有完整性保护和重放保护的情况下,具有到系统的物理访问的攻击者可记录飞地高速缓存行的快照并且在稍后的时间点重放它们。为了实现飞地保护,飞地可采用存储器加密引擎(MEE),存储器加密引擎(MEE)提供用于加密、完整性和重放保护的加密机制。MEE是当安全页在存储器中时向安全页实现加密功能的硬件单元。更具体地,MEE可加密任一被逐出处理器的高速缓存行(如果高速缓存行属于安全页),并且MEE也可为安全页提供完整性保护和重放保护。常规策略在引导时间静态地保留平台存储器的范围,并且只在存储器的该范围上实施加密保护。该安全存储器范围被称为飞地页面高速缓存(EPC)。飞地存储器要求由EPC满足。
传统地,存储器管理设施或存储器控制器将存储器页分配在固定的线性地址,例如存储器页的线性地址在存储在存储器页的数据的寿命期间不能改变。如果安全存储器要求随时间改变,对安全存储器的静态分配会产生问题。作为示例,在白天执行事务处理并且在夜晚切换至电影流传送的数据中心基于在数据中心上运行的飞地工作负荷可具有显著不同的对安全存储器的要求。在一个实现中,128兆字节(MB)的系统存储器被保留为EPC。然而,为了允许安全服务器应用有效地到飞地,将需要大的EPC。在当前静态分区的情况下,这将要求将系统存储器的多个千兆字节分区保留为不能被收回以用于非安全使用的EPC。此外,具有有限的系统存储器的移动设备可要求对存储器的动态重新分区以允许安全存储器为了非安全利用被收回。替代地,可将其他数量的系统存储器保留为EPC。
本文中描述的使用动态EPC架构的实施例允许对EPC存储器的动态重新分配,使得飞地实现方式在要求大量的EPC存储器的服务器上和在具有有限的存储器系统的移动平台上更有效。接口架构(IA)的软件防护扩展(SGX)可在受保护的执行区或受保护的区域240中使能对主存储器的动态管理。SGX是用于处理器的存储器访问的一组指令和机制。在一个实施例中,SGX可使得应用能实例化受保护的区域或飞地。在一个示例中,可通过释放存储器页(包括清零存储器页的内容)并且然后将被释放的存储器页重新分配到新的线性地址来将存储器页重新分配到SGX架构中的另一线性地址。SGX的一个优势是保护敏感数据免受在更高特权等级运行的流氓软件程序的未授权的访问或修改的影响。SGX的另一优势是在不干扰合法系统软件调度和管理对平台资源的使用的能力的情况下使应用能保持敏感代码和数据的机密性和完整性。
在一个示例中,动态库加载器算法可在存储器页面加载过程期间将存储器页分配在私有的线性地址,并且然后将存储器页重新定位到目标线性地址。在一个示例中,动态库加载器可在SGX提供的受保护的区域中运行。在受保护的执行区中运行的动态库加载器的一个优势是增加SGX应用和有效的编程模型中的性能增益。在SGX飞地中运行的动态库加载器的另一优势是使更广泛的类别的软件能在SGX中运行并且在没有对现有软件模型的重大改变的情况下改善现有应用的性能。
在一个实施例中,SGX可通过阻止访问存储器的某些部分来提供免受病毒和恶意软件的影响的安全防护。例如,可将敏感或受限的数据和/或代码放置在受保护的区域中,并且数据和/或代码在飞地外部是不可见的。SGX的一个优势是用于虚拟计算环境或虚拟机(VM),其中在访客操作系统中使用加密。在该示例中,数据库页可存储在SGX受保护的区域中,并且/或者操作系统高速缓存可存储在SGX飞地受保护的区域中,以阻止数据和/或代码被访问或复制。
图2B示出了受保护的区域240可包括具有被选择的内容或代码的一个或多个源页282。图2B进一步示出了飞地240可将一个或多个目标页284添加到受保护的区域以增大飞地240(例如,扩展的飞地280)的存储器大小。在一个实施例中,可将一个或多个源页282的被选择的内容复制到一个或多个目标页284。图2B的剩余部分与图2A相同。
图2C是示出根据一个实施例的在受保护的区域中将源页的被选择的内容复制到目标页的方法200的流程图。方法200可由可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如,在处理器上运行的指令)、固件或其组合的处理逻辑来执行。在一个实施例中,图1的处理器110执行方法200。替代地,图1的计算系统100的其他组件可以执行方法200的某些或所有操作。在另一个实施例中,图6A或6B的处理器600执行方法200。在另一个实施例中,图7的处理器700执行方法200。在另一个实施例中,图8的处理器870和/或880执行方法200。在另一个实施例中,图9的处理器970和/或980执行方法200。在另一个实施例中,图10的核1002的一个或多个执行方法200。在另一个实施例中,图11的核1106和/或1107执行方法200。在另一个实施例中,图12的处理设备1202执行方法200。替代地,图1和/或图6-12的计算系统的其他组件可以执行方法200的某些或所有操作。
参考图2C,方法200由处理逻辑解码内容复制指令而开始,该内容复制指令用于复制耦合到处理器逻辑的主存储器的受保护的区域中的源页的被选择的内容。处理逻辑执行内容复制指令以将源页的被选择的内容复制到受保护的区域中的目标页。响应于内容复制指令,处理逻辑分配受保护的区域的目标页(框220)。响应于内容复制指令,处理逻辑选择要被复制的受保护的区域的源页的内容(框230)。响应于内容复制指令,处理逻辑将被选择的内容复制到受保护的区域中的目标页。
图2D是示出根据一个实施例的在受保护的区域中将源页的被选择的内容复制到目标页的方法250的流程图。方法250可由可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如,在处理器上运行的指令)、固件或其组合的处理逻辑来执行。在一个实施例中,图1的处理器110执行方法250。替代地,图1的计算系统100的其他组件可以执行方法250的某些或所有操作。在另一个实施例中,图6A或6B的处理器600执行方法250。在另一个实施例中,图7的处理器700执行方法250。在另一个实施例中,图8的处理器870和/或880执行方法250。在另一个实施例中,图9的处理器970和/或980执行方法250。在另一个实施例中,图10的核1002的一个或多个执行方法250。在另一个实施例中,图11的核1106和/或1107执行方法250。在另一个实施例中,图12的处理设备1202执行方法250。替代地,图1和/或图6-12的计算系统的其他组件可以执行方法250的某些或所有操作。
参考图2D,方法250由处理逻辑更新目标页的许可开始(框260)。响应于内容复制指令,处理逻辑清除目标页的待定位以指示完成对目标页的使用(框270)。响应于内容复制指令,处理逻辑释放在目标页上的飞地动态存储器管理(EDMM)锁定(框280)。
在一个实施例中,处理逻辑修改目标页的许可。在另一个实施例中,处理逻辑验证源页的被选择的源参数。在另一个实施例中,处理逻辑验证目标页的被选择的目标参数。在另一个实施例中,处理逻辑验证源页的被选择的源参数进一步包括:确定源页的可读状态以及确定源页的飞地线性地址范围(ELRange)。在另一个实施例中,处理逻辑验证目标页的被选择的目标参数进一步包括:确定目标页的可写状态;确定目标页的ELRange;以及确定受保护的区域中的目标页的位置。在另一个实施例中,处理逻辑验证目标页的被选择的目标参数进一步包括:获取EDMM锁定;验证目标页的状态是常规的和待定的;以及验证通过正确的线性地址访问目标页。
处理逻辑(如图2C和2D中)可执行存储器分配过程以将安全页添加到主存储器120中的受保护的区域125。处理逻辑可使用页面添加指令(例如EAUG指令)以将目标页添加到受保护的区域。在一个实施例中,当执行页面添加指令时,被添加的目标页具有待定状态。响应于页面添加指令,处理逻辑可确定页面接受指令被何时接收,并且当页面接受指令被接收时改变目标页待定的状态。响应于页面接受指令,处理逻辑可将目标页添加至受保护的区域。处理逻辑可确定目标页的特权等级,并且当目标页的特权等级为零时执行页面添加指令。
处理逻辑可使用内容复制指令以将受保护的区域中的源页的内容复制到同一受保护的区域中的目标页。在一个示例中,处理逻辑可响应于内容复制指令初始化受保护的区域的应用地址空间中的目标页。在另一个示例中,处理逻辑可响应于内容复制指令,选择将复制的受保护的区域中的源页的内容。在另一个示例中,处理逻辑可响应于内容复制指令,将被选择的内容复制到受保护的区域的应用地址空间中的目标页。在一个实施例中,处理逻辑可响应于内容复制指令,当应用是不活动的或不在运行时,将被选择的内容复制到目标页,其中应用存储在主存储器120的受保护的区域125中。在一个实施例中,处理逻辑可响应于内容复制指令,当应用在运行时,将被选择的内容复制到目标页,其中应用存储在主存储器120的受保护的区域125中。当应用可能在运行时处理逻辑将被选择的内容复制到目标页的一个优势可能是能够在不干扰现有应用或操作系统的情况下使能附加的安全保护。
在一个实施例中,页面添加指令可包括存储器参数信息,其中存储器参数信息包括:页面信息(PAGEINFO)结构的有效地址和EPC页的有效地址。在另一个实施例中,PAGEINFO结构包括目标页的安全信息(SECINFO)结构和源页(SRCPAGE)的页面信息结构。
在一个实施例中,处理逻辑可响应于页面添加指令:将空闲EPC页与受保护的区域的部分中的一个或多个被选择的SECS页相关联;将受保护的区域的偏移属性和受保护的区域的安全属性存储在飞地页面高速缓存映射(EPCM)中;以及将目标页的内容清零。在另一个实施例中,处理器核可确定何时接收了页面接受指令。在一个示例中,目标页的状态保持为待定,直到处理器核接收页面接受指令。在该示例中,当接收了页面接受指令时,处理逻辑将目标页添加到受保护的区域。
在一个实施例中,内容复制指令可包括存储器参数信息,包括:SECINFO结构,其中当被选择的内容被复制时,SECINFO结构为正在被修改的目标页指定被选择的许可等级,以及为目标页指定请求的类型;内容被复制到的目标页的有效地址;以及复制内容的源页的有效地址。在另一个实施例中,源页可以是有效的EPC页,并且可以是不在被阻塞状态、待定状态或被修改状态的PT_REG类型。在另一个实施例中,目标页可以是有效的EPC页,并且可以是在待定状态而不在被修改状态或被阻塞状态的PT_REG类型。
在处理器核上执行的软件可以通过使用存储器分配过程安全地重新定位被安全地初始化的存储器页。响应于页面添加指令(EAUG指令),处理逻辑可以将读/写可访问存储器页添加到现有飞地。如下所示是EAUG指令的一个示例:
在一个实施例中,当添加了读/写可访问存储器页时,现有飞地可以在运行。在一个示例中,响应于EAUG指令,处理器核可以将空闲EPC存储器页与驻留在EPC中的给定的SECS页关联。在该示例中,响应于EAUG指令,处理器核可以在EPCM中存储飞地偏移和安全属性,并且将EPC存储器页的内容清零。在一个实施例中,处理器核可以确定EPC存储器页的特权等级,并且当目标页的特权等级为零时执行EAUG指令。在另一个实施例中,当目标页的特权等级不为零时,处理器核可以不执行EAUG指令。在另一个实施例中,在未确定EPC存储器页的特权等级的情况下,处理器核可以执行EAUG指令。
在一个示例中,EAUG指令可包括EAUG存储器参数信息。如下所示是EAUG存储器参数信息的一个示例:
存储器参数 许可 语义
[RBX]PAGEINFO R 无飞地访问
[RBX]PAGEINFO.SECS RW 飞地访问
[RBX]PAGEINFO.SECINFO R 无飞地访问
[RCX]EPCPAGE RW 飞地访问
BX寄存器(RBX)包含页面信息(PAGEINFO)结构的有效地址。CX寄存器(RCX)包含EPC页的有效地址。在一个实施例中,PAGEINFO结构的SRCPAGE字段和SECINFO字段可以为零。在另一个示例中,EAUG指令可以包括前面的表中未明确包括的其他EAUG存储器参数信息。在另一个示例中,EAUG指令可以不包括存储器参数信息。
在一个实施例中,响应于EAUG指令,当一个或多个被选择的情况发生时,处理器核可能不能将目标EPC页添加到飞地,包括当:未正确地对齐操作数;设置了不支持的安全属性;被选择的SGX飞地控制结构(SECS)页被另一线程锁定;页面添加指令不包含目标EPC页或源EPC页的有效地址;目标EPC页或源EPC页被另一线程锁定,目标EPC页或源EPC页目前处于有效状态;或被选择的受保护的区域的偏移在受保护的区域的有效地址范围之外。
在一个示例中,EAUG指令可包括EAUG临时变量。如下所示是EAUG临时变量的一个示例:
可替代地,EAUG指令可包括不同类型或大小的其他变量,另一示例,EAUG指令可包括前面的表中未明确列出的其他EAUG临时变量。在另一个示例中,EAUG指令可以不包括临时变量。
如本文所述,根据一个实施例,以下描述提供了EAUG指令的示例性伪代码。
被影响的标志:
受保护的模式异常:
#GP(0)如果存储器操作数有效地址在DS片段限制之外。
如果DS片段不可用
如果存储器操作数未被正确地对齐。
如果飞地存储器操作数是错误的类型。
如果存储器操作数被锁定。
#PF(错误-代码)如果页面错误在访问存储器操作数中发生,包括EPCM引起的错误。
64-位模式异常:
#GP(0)如果存储器地址是非规范形式。
如果存储器操作数未被正确地对齐。
如果飞地存储器操作数是错误的类型。
如果存储器操作数被锁定。
#PF(错误-代码)如果页面错误在访问存储器操作数中发生,包括EPCM引起的错误。
在一个实施例中,EAUG指令可包括前面的示例性伪代码中未包括的其他操作或其他代码。在另一个实施例中,EAUG指令可包括示例性伪代码的一部分或其他操作。在另一个实施例中,EAUG指令可包括前面的示例性伪代码中未明确列出的代码或操作。
图3示出了应用地址空间300中的飞地310。图3进一步示出了应用地址空间300包括具有条目表312、飞地堆314、以及飞地堆栈316、以及飞地代码318、以及源EPC页320的飞地310。条目表312可以是用于飞地310中的一组对象的参考表。飞地堆314可以是存储器的一部分,其中被动态地分配的存储器可以位于飞地310中。飞地堆栈316可以是存储器堆栈,其中局部变量可以位于飞地310中。应用地址空间300还包括在飞地310之外的待定EPC页330。在一个实施例中,EPC存储器页(例如待定EPC页330)的状态被放置在待定状态中,直到处理器核执行页面接受指令(EACCEPT指令)。
图4A根据一个实施例示出了具有被转换为普通EPC页的待定EPC页的飞地。在一个实施例中,当处理器核执行EACCEPT指令时,待定EPC页(如图3所示)变为可访问的,如同飞地310中的普通EPC页(例如,目标EPC页430)。图4A的剩余部分与图3中的相同。
在一个实施例中,响应于内容复制指令(EACCAPTCOPY指令),处理器核可将读/写可访问存储器页添加到现有飞地。如下所示是EACCAPTCOPY指令的一个示例:
在另一个示例中,EACCAPTCOPY指令可以包括前面的表中未明确包括的其他操作代码(操作码)或说明。
响应于EACCAPTCOPY指令,处理器核可以将来自现有EPC页(例如,源EPC页)的内容复制到如前面段落所讨论的通过使用EAUG指令被创建的新分配的EPC页(例如,目标EPC页)中。在一个实施例中,响应于EACCAPTCOPY指令,处理器核可以修改目标页的许可。在一个示例中,响应于EACCAPTCOPY指令,处理器核可以通过复制同一飞地中的现有受保护的页(例如,源EPC页)的内容来初始化待定EPC页(例如,目标EPC页)以及将目标页的访问许可等级更新至被选择的访问许可等级。在另一个示例中,响应于EACCAPTCOPY指令,处理器核可以清除目标页的待定位以指示完成对目标页的使用并且释放目标页上的EDMM锁定。
在一个实施例中,当内容被复制到目标EPC页并且访问许可等级被更新时,源EPC页可保持为有效的。处理核执行将来自源EPC页的内容复制到目标EPC页的EACCEPTCOPY指令的一个优势是通过要求更少的向性能的特权环转变来简化动态库加载器的软件模型。图5描绘了具有不同特权等级环的特权环500。在一个实施例中,特权等级环0是最受信任或最高特权等级环,并且信任等级或特权等级从特权等级环0到特权等级环3依次降低,例如,特权等级环3具有最低信任等级或特权等级。
在另一个实施例中,处理器核可确定源EPC页的有效性和源EPC页的PT_REG类型。在一个示例中,当处理器核确定源EPC页是具有不在被阻塞、待定或被修改状态中的PT_REG类型的有效的EPC页时,处理器核可将来自源EPC页的内容复制到目标EPC页。
在一个实施例中,响应于EACCAPTCOPY指令,当一个或多个被选择的情况发生时,处理器核可能不能将来自源EPC页的内容复制到目标EPC页,包括当:未正确地对齐操作数;请求了不支持的访问权限组合;操作数不指示目标EPC页或源EPC页;目标EPC页或源EPC页在被另一线程使用;目标EPC页或源EPC页不具有被选择的PT_REG类型;或目标EPC页或源EPC页不是有效页。
在一个示例中,EACCAPTCOPY指令可包括EACCAPTCOPY存储器参数信息。如下所示是EACCAPTCOPY存储器参数信息的一个示例:
存储器参数 许可 语义
[RBX]SECINFO R 飞地访问
[RCX]EPCPAGE RW 飞地访问
[RDX]EPCPAGE R 飞地访问
在一个实施例中,RBX可包含SECINFO结构的有效地址。在一个示例中,当已经完成对EPC页的内容的复制时,SECINFO可以为正被修改的EPC页指定期望的许可以及为该EPC页指定请求的类型(例如PT_REG或PT_TCS)。在另一个示例中,可以忽略SECINFO结构的待定字段和被修改字段。在另一个示例中,RCX可以包含目标EPC页的有效地址。在另一个实施例中,RDX可以包含数据可以从其复制的源EPC页的有效地址。在另一个示例中,EACCAPTCOPY指令可以包括前面的表中未明确包括的其他EACCAPTCOPY存储器参数信息。在另一个示例中,EACCAPTCOPY指令可以不包括存储器参数信息。
在一个示例中,EACCAPTCOPY指令可包括EACCAPTCOPY临时变量。如下所示是EACCAPTCOPY临时变量的一个示例:
在另一个示例中,EACCAPTCOPY指令可以包括前面的表中未明确列出的其他EACCAPTCOPY临时变量。在另一个示例中,EACCAPTCOPY指令可以不包括临时变量。
如本文所述,根据一个实施例,以下描述提供了EACCAPTCOPY指令的示例性伪代码。
被影响的标志:
ZF 当指令在有错误的情况下已经完成时设置,否则清除。
受保护的模式异常:
#GP(0)如果存储器操作数有效地址在DS片段限制之外。
如果DS片段不可用
如果存储器操作数未被正确地对齐。
如果指令不能获取必需锁定之一。
#PF(错误-代码)如果页面错误在访问存储器操作数时发生,包括EPCM引起的错误。
64-位模式异常:
#GP(0)如果存储器地址是在非规范形式中。
如果存储器操作数未被正确地对齐。
如果指令不能获取必需锁定之一。
#PF(错误-代码)如果页面错误在访问存储器操作数时发生,包括EPCM引起的错误。
在一个实施例中,EACCAPTCOPY指令可包括前面的示例性伪代码中未包括的其他操作或其他代码。在另一个实施例中,EACCAPTCOPY指令可包括示例性伪代码的部分或其他操作。在另一实施例中,EACCAPTCOPY指令可包括前面的示例性伪代码中未明确列出的代码或操作。
在一个示例中,EACCAPTCOPY指令可包括EACCAPTCOPY错误码。如下所示是EACCAPTCOPY错误码的一个示例:
在另一个示例中,EACCAPTCOPY指令可以包括前面的表中未明确列出的其他EACCAPTCOPY错误码。在另一个示例中,EACCAPTCOPY指令可以不包括错误码。
图6A是示出根据一个实施例的实现安全存储器重新分区的处理器600的微架构的框图。具体地,根据本公开的至少一个实施例,处理器600描绘了将被包括在处理器中的有序架构核与寄存器重命名逻辑、无序发布/执行逻辑。可以在处理器600中实现页面添加和内容复制的实施例。
处理器600包括耦合至执行引擎单元650的前端单元630,并且两者均耦合至存储器单元670。处理器600可以包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代核类型。作为又一选项,处理器600可以包括专用核,例如,网络或通信核、压缩引擎、图形核等。在一个实施例中,处理器600可以是多核处理器或可以是多处理器系统的一部分。
前端单元630包括耦合到指令高速缓存单元634的分支预测单元632,指令高速缓存单元634耦合到指令转换后备缓冲器(TLB)636,指令转换后备缓冲器636耦合到指令取出单元638,指令取出单元638耦合到解码单元660。解码单元660(也被称为解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。可使用各种不同的机制来实现解码器660。合适的机制的示例包括但不仅限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。指令高速缓存单元634进一步耦合至存储器单元670。解码单元660耦合至执行引擎单元650中的重命名/分配器单元652。
执行引擎单元650包括耦合到引退单元654的重命名/分配器单元652和一个或多个调度器单元656的集合。调度器单元656表示任意数量的不同调度器,包括预留站(RS)、中心指令窗等。调度器单元656耦合到物理寄存器组单元658。每个物理寄存器组单元658表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一个或多个不同的数据类型(诸如,标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点,等等)、状态(诸如,作为要被执行的下一条指令的地址的指令指针)等等。物理寄存器组单元658被引退单元654覆盖以示出可实现寄存器重命名和无序执行的多种方式(诸如,使用重排序缓冲器和引退寄存器组、使用未来文件(future file)、历史缓冲器以及引退寄存器组;使用寄存器映射和寄存器池等)。
通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定的电路类型。各种不同类型的寄存器可适用,只要它们能够存储并提供本文中所述的数据。合适寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、以及专用物理寄存器和动态分配的物理寄存器的组合,等等。引退单元654和物理寄存器组单元658耦合到执行群集660。执行群集660包括一个或多个执行单元662的集合和一个或多个存储器访问单元664的集合。执行单元662可以执行各种操作(例如,移位、加法、减法、乘法)并且在各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)上操作。
尽管一些实施例可以包括专用于特定功能或功能集的数个执行单元,但是其他实施例可以仅包括一个执行单元或全部都执行所有功能的多个执行单元。调度器单元656、物理寄存器组单元658以及执行群集660示出为可能是复数个,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,各自都具有其自身的调度器单元、物理寄存器组单元和/或执行群集的标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线和/或存储器访问流水线——并且在单独的存储器访问流水线的情况下,实现了其中仅此流水线的执行群集具有存储器访问单元664的某些实施例)。还应当理解,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行的,而其余的是有序的。
存储器访问单元664的集合耦合至存储器单元670,存储器单元670可包括数据预取器680、数据TLB单元672、数据高速缓存单元(DCU)674、以及第2级(L2)高速缓存单元676,这里给出几个示例。在一些实施例中,DCU 674也被称为第一级数据高速缓存(L1高速缓存)。DCU 674可处理多个未完成的高速缓存未命中,并且继续服务传入存储和加载。其还支持维持高速缓存一致性。数据TLB单元672是用于通过映射虚拟核物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元664可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元670中的数据TLB单元672。L2高速缓存单元676可耦合到一个或多个其他层级的高速缓存,并最终耦合到主存储器。
在一个实施例中,数据预取器680通过自动预测程序即将消耗哪些数据来推测性地加载/预取数据至DCU 674。预取可指示在存储在存储器分层结构(例如,较低级高速缓存或存储器)的一个存储器位置(例如,位置)的数据被处理器实际需求之前,将数据转换至更靠近(例如,产生更少访问等待时间)处理器的较高级存储器位置。更具体地,预取可指示在处理器发出对被返回的特定数据的需求之前,对从较低级高速缓存/存储器之一到数据高速缓存和/或预取缓冲器的数据的早取回。
处理器600可支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核可支持多线程操作(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程操作,各种方式包括时分多线程操作、同步多线程操作(其中,单个物理核为物理核正在同步进行多线程操作的多个线程中的每一个线程提供逻辑核)或其组合(例如,时分取出和解码以及此后诸如利用超线程技术的同步多线程操作)。
尽管在无序执行的上下文中描述了寄存器重命名,但是,应当理解,寄存器重命名可以用于有序架构中。虽然处理器的所示实施例也包括单独的指令和数据高速缓存单元以及共享的L2高速缓存单元,但替代实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个层级的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存以及在核和/或处理器外部的外部高速缓存的组合。或者,全部高速缓存都可以在核和/或处理器的外部。
图6B是示出根据本发明的一些实施例的由图6A的处理器600实现的有序流水线以及寄存器重命名级、无序发布/执行流水线的框图。图6B中的实线框示出了有序流水线,而虚线框示出了寄存器重命名、无序发布/执行流水线。在图6B中,处理器流水线600包括取出级602、长度解码级604、解码级606、分配级608、重命名级610、调度(也称为分派或发布)级612、寄存器读取/存储器读取级614、执行级616、写回/存储器写入级618、异常处理级622以及提交级624。在一些实施例中,级602-624的顺序可以与所说明的不同,并且不限于图6B中所示的特定顺序。
图7根据一个实施例示出了包括执行安全存储器重新分区的逻辑电路的处理器700的微架构的框图。在一些实施例中,可将根据一个实施例的指令实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(例如,单精度和双精度整数和浮点数据类型)的数据元素进行操作。在一个实施例中,有序前端701是处理器700的部分,该部分取出要被执行的指令,并准备这些指令以便稍后在处理器流水线中使用。可以在处理器700中实现页面添加和内容复制的实施例。
前端701可包括若干单元。在一个实施例中,指令预取器716从存储器中取出指令,并将这些指令馈送至指令解码器718,指令解码器718进而解码或解释这些指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,该解码器将指令解析为可由微架构用于执行根据一个实施例的多个操作的操作码以及对应的数据和控制字段。在一个实施例中,追踪高速缓存730获取经解码的uop,并且在uop队列734中将它们组合为程序排序的序列或踪迹,以用于执行。当追踪高速缓存730遇到复杂指令时,微代码ROM 732提供完成操作所需的uop。
一些指令被转换为单个微op,而其他指令需要若干个微op以完成完整的操作。在一个实施例中,如果需要多于四个微op来完成指令,则解码器718访问微代码ROM 732以执行该指令。对于一个实施例,可将指令解码为少量的微op,以便在指令解码器718处进行处理。在另一实施例中,如果需要许多微op来完成操作,则可将指令存储在微代码ROM 732中。追踪高速缓存730参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 732中读取微代码序列来完成根据一个实施例的一条或多条指令。在微代码ROM 732完成对指令的微op进行的序列化操作之后,该机器的前端701恢复从追踪高速缓存730中取出微op。
无序执行引擎703是准备指令以进行执行的地方。无序执行逻辑具有若干个缓冲器,用于将指令流平滑并且重排序,以便在这些指令流沿流水线向下并经调度供执行时优化性能。分配器逻辑分配每一个uop为了执行所需的机器缓冲器和资源。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存器组中的条目。分配器还在指令调度器(存储器调度器、快速调度器702、慢速/通用浮点调度器704以及简单浮点调度器706)之前,在两个uop队列(一个用于存储器操作,而另一个用于非存储器操作)中的一个uop队列中,为每一个uop分配条目。uop调度器702、704、706基于对它们的依赖输入寄存器操作数源的准备就绪以及uop完成它们的操作所需的执行资源的可用性来确定uop何时准备好用于执行。一个实施例的快速调度器702可在主时钟周期的每半个上进行调度,而其他调度器可在每个主处理器时钟周期上仅调度一次。调度器对分派端口仲裁以调度uop来执行。
在执行块711中,寄存器组708和710位于调度器702、704和706以及执行单元712、714、716、718、710、712和714之间。也存在单独的寄存器组708、710,分别用于整数和浮点操作。一个实施例中的每个寄存器组708、710也包括旁路网络,该旁路网络可绕开还未被写入到寄存器组中的、刚完成的结果或将这些结果转发到新的从属uop中。整数寄存器组708和浮点寄存器组710也能够彼此传递数据。对于一个实施例,将整数寄存器组708划分为两个单独的寄存器组,一个寄存器组用于数据的低阶32位,第二个寄存器组用于数据的高阶32位。一个实施例中的浮点寄存器组710具有128位宽的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块711包括执行单元712、714、716、718、710、712和714,实际在这些执行单元中执行指令。该区块包括存储微指令执行所需的整数和浮点数据操作数值的寄存器组708和710。一个实施例的处理器700包括许多执行单元:地址生成单元(AGU)712、AGU 714、快速ALU 716、快速ALU 718、慢速ALU 710、浮点ALU 712、浮点移动单元714。对于一个实施例,浮点执行块712和714执行浮点、MMX、SIMD、SSE或其他操作。一个实施例中的浮点ALU 712包括用于执行除法、平方根和余数微op的64位除64位的浮点除法器。对于本发明的多个实施例,可利用浮点硬件来处理涉及浮点值的指令。
在一个实施例中,ALU操作去往高速ALU执行单元716和718。一个实施例中的快速ALU 716和718可执行有效等待时间为半个时钟周期的快速操作。对于一个实施例,大多数复杂的整数操作去往慢速ALU 710,因为慢速ALU 710包括用于长等待时间类型操作的整数执行硬件,例如,乘法器、移位器、标志逻辑和分支处理设备。存储器加载/存储操作由AGU712和714来执行。对于一个实施例,在对64位数据操作数执行整数操作的上下文中描述整数ALU 716、718、710。在替代实施例中,可实现ALU 716、718、710以支持包括16、32、128、256等的各种数据位。类似地,可实现浮点单元712、714以支持具有各种宽度的位的一系列操作数。对于一个实施例,浮点单元712、714可协同SIMD和多媒体指令对128位宽打包数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,uop调度器702、704、706分派从属操作。由于在处理器700中推测性地调度并执行uop,因此处理器700也包括用于处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在将临时不正确的数据留给调度器的运行中的从属操作。重放机制跟踪并重新执行使用不正确的数据的指令。仅仅从属操作需要被重放,而允许独立操作完成。也可将处理器的一个实施例的调度器和重放机制设计成用于捕捉指令序列,以用于文本串比较操作。
根据一个实施例,处理器700还包括用于实现安全存储器重新分区的逻辑。在一个实施例中,处理器700的执行块711可包括MCU 115,以根据本文中的描述执行安全存储器重新分区。
术语“寄存器”可以是指被用作标识操作数的指令的部分的板上(on-board)处理器存储器位置。换句话说,寄存器可以是那些从处理器外部(从编程者的角度来看)可用的那些。然而,不应当将实施例中的寄存器限制于意指特定类型的电路。相反,实施例中的寄存器能够存储并提供数据,并且能够执行本文中所述的功能。本文所描述的寄存器可利用任何数量的不同技术,由处理器中的电路来实现,这些不同技术诸如,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器组还包含用于打包数据的八个多媒体SIMD寄存器。
对于此处的讨论,寄存器应被理解为设计成保存打包数据的数据寄存器,诸如来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器的64位宽MMXTM寄存器(在一些实例中也称为“mm”寄存器)。这些MMX寄存器(在整数和浮点形式两者中是可用的)可与伴随SIMD和SSE指令的打包数据元素一起操作。类似地,也可以使用涉及SSE2、SSE3、SSE4或以外的(统称为“SSEx”)技术的128位宽的XMM寄存器来保存这样的打包数据操作数。在一个实施例中,在存储打包数据和整型数据时,寄存器不需要区分两种数据类型。在一个实施例中,整数和浮点可被包括在相同的寄存器组中,或被包括在不同的寄存器组中。此外,在一个实施例中,浮点和整型数据可以存储在不同的寄存器中或相同的寄存器中。
可在许多不同的系统类型中实现多个实施例。现在参考图8,其中示出了根据一实现方式的多处理器系统800的框图。如图8所示,多处理器系统800是点对点互连系统,并且包括经由点对点互连850耦合的第一处理器870和第二处理器880。如图8所示,处理器870和880中的每一个可以是多核处理器,包括第一和第二处理器核(即,处理器核874a和874b以及处理器核884a和884b),虽然潜在地更多核可以存在于处理器中。处理器各自可包括根据本公开的实施例的混合型写入模式逻辑。可以在处理器870、处理器880或两者中实现页面添加和内容复制的实施例。
虽然以两个处理器870、880来示出,但应理解本公开的范围不限于此。在其他实现中,在给定处理器中可存在一个或多个附加处理器。
处理器870和880示出为分别包括集成存储器控制器单元882和882。处理器870还包括点对点(P-P)接口876和888作为其总线控制器单元的部分;类似地,第二处理器880包括P-P接口886和888。处理器870、880可以经由使用点对点(P-P)接口电路888、888的P-P接口850来交换信息。如图8所示,IMC 882和882将处理器耦合到相应的存储器,即,存储器832和存储器834,它们可以是本地连接到相应的处理器的主存储器的部分。
处理器870、880可各自经由使用点对点接口电路876、894、886、898的各个P-P接口852、854与芯片组890交换信息。芯片组890还可经由高性能图形接口839与高性能图形电路838交换信息。
共享高速缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,使得如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
芯片组890可经由接口896耦合至第一总线816。在一个实施例中,第一总线816可以是外围组件互连(PCI)总线,或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图8所示,各种I/O设备814可连同总线桥818被耦合到第一总线816,总线桥818将第一总线816耦合到第二总线820。在一个实施例中,第二总线820可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线820,包括例如,键盘和/或鼠标822、通信设备827以及存储单元828(诸如,可包括指令/代码和数据830的盘驱动器或其他大容量存储设备)。此外,音频I/O 824可以被耦合到第二总线820。注意,其他架构是可能的。例如,系统可实现多分支总线或者其他此类架构,而不是图8中的点对点架构。
现在参考图9,所示出的是根据本发明的实施例的第三系统900的框图。图8和9中的类似元件使用类似附图标记,且在图9中省略了图8的某些方面以避免混淆图9的其它方面。
图9示出处理器970、980可以分别包括集成存储器和I/O控制逻辑(“CL”)972和982。对于至少一个实施例,CL 972、982可以包括诸如本文所述的集成存储器控制器单元。另外,CL 972、982还可以包括I/O控制逻辑。图9示出了存储器932、934耦合到CL 972、982,并且I/O设备914也耦合到控制逻辑972,982。传统I/O设备915耦合至芯片组990。可以在处理器970、处理器980或两者中实现页面添加和内容复制的实施例。
图10是可包括一个或多个核1002的示例性片上系统(SoC)。本领域中已知的对膝上型计算机、台式机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形器件、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般而言,能够涵盖本文中所公开的处理器和/或其他执行逻辑的多种系统和电子设备通常都是合适的。
现在参考图10,所示出的是根据本公开的一个实施例的SoC 1000的框图。另外,虚线框是更先进的SoC上的特征。在图10中,互连单元1002耦合到:应用处理器1010,其包括一个或多个核1002A-N的集合以及共享高速缓存单元1006;系统代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一个或多个媒体处理器1020的集合,其可包括集成图形逻辑1008、用于提供静止和/或视频照相功能的图像处理器1024、用于提供硬件音频加速的音频处理器1026、以及用于提供视频编码/解码加速的视频处理器1028;静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及显示单元1040,其用于耦合至一个或多个外部显示器。可以在SoC 1000中实现页面添加和内容复制的实施例。
接下来参考图11,描绘了根据本发明的各实施例的片上系统(SOC)设计的实施例。作为一个说明性示例,SoC 1100被包括在用户设备(UE)中。在一个实施例中,UE是指由最终用户用于通信的任何设备,诸如,手持式电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本或任何其他类似的通信设备。UE可以连接到基站或节点,该基站或节点可以本质上对应于GSM网络中的移动站(MS)。可以在SoC 1100中实现页面添加和内容复制的实施例。
这里,SOC 1100包括2个核——1106和1107。类似于上面的讨论,核1106和1107可以符合指令集架构,诸如基于Architecture CoreTM的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或它们的客户,以及它们的被许可方或采用者。核1106和1107耦合到与总线接口单元1109和L2高速缓存1110相关联的高速缓存控制1108,以便与系统1100的其他部分进行通信。互连1111包括片上互连,诸如IOSF、AMBA,或上文所讨论的其他互连,它们可以实现所描述的公开的一个或多个方面。
互连1111提供到其他组件的通信信道,其他组件诸如与用户身份模块(SIM)卡对接的SIM 1130、保存供核1106和1107执行以初始化和引导SOC 1100的引导代码的引导ROM1135、与外部存储器(例如,DRAM 1160)对接的SDRAM控制器1140、与非易失性存储器(例如,闪存1165)对接的闪存控制器1145、与外围设备对接的外围控制装置1150(例如,串行外围接口)、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1120和视频接口1125、用于执行图形相关的计算的GPU 1115等等。这些接口中的任何一种可以包括此处所描述的各实施例的各方面。
另外,系统示出了用于通信的外围设备,诸如蓝牙模块1170、3G调制解调器1175、GPS 1180以及Wi-Fi 1185。注意,如上所述,UE包括用于通信的无线电装置。因此,这些外围通信模块可以不被全部包括。然而,在UE中,应该包括用于外部通信的某种形式的无线装置。
图12示出了计算机系统1200的示例形式的机器的示意图,在该计算系统1200内,可以执行用于使机器执行此处所讨论的方法中的任何一个或多个的一组指令。在替代实施例中,可在LAN、内联网、外联网或因特网中将机器连接(例如,联网)到其他机器。机器可在客户机-服务器网络环境中作为服务器或客户机设备操作,或在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥、或者能够执行指定由该机器执行的动作的一组指令(连续的或以其他方式)的任何机器。此外,虽然仅示出单个机器,但是也将认为术语“机器”包括单独地或共同地执行一组(或多组)指令以执行本文中所讨论的方法中的任何一个或多个的机器的任何集合。可以在计算系统1200中实现页面添加和内容复制的实施例。
计算系统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可包括本文所描述的其他组件。应当理解,核可支持多线程操作(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程操作,各种方式包括时分多线程操作、同步多线程操作(其中,单个物理核为物理核正在同步进行多线程操作的多个线程中的每一个线程提供逻辑核)或其组合(例如,时分取出和解码以及此后诸如利用超线程技术的同步多线程操作)。
计算系统1200还可以包括以通信方式耦合到网络1220的网络接口设备1208。计算系统1200还可以包括视频显示单元1210(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1212(例如,键盘)、光标控制设备1214(例如,鼠标)、信号生成设备1216(例如,扬声器),或其他外围设备。此外,计算系统1200还可以包括图形处理单元1222、视频处理单元1228以及音频处理单元1232。在另一个实施例中,计算系统1200可以包括芯片组(未示出),芯片组是指被设计为与处理设备1202一起协作并控制处理设备1202和外部设备之间的通信的一组集成电路或芯片。例如,芯片组可以是将处理设备1202链接到非常高速度的设备(诸如,主存储器1204和图形控制器)以及将处理设备1202链接到较低速度的外围设备的外围总线(诸如,USB、PCI或ISA总线)的主板上的一组芯片。
数据存储设备1218可以包括计算机可读取的存储介质1224,在其上面存储了实现本文所描述的功能的方法中的任何一个或多个的软件1226。在由计算机系统1200对软件1226的执行期间,软件1226也可完全或至少部分地作为指令1226驻留在主存储器1204之内和/或作为处理逻辑1226驻留在处理设备1202之内;该主存储器1204和处理设备1202也构成计算机可读存储介质。
计算机可读取存储介质1224也可以被用来利用诸如参考图1所描述的处理设备1202来存储指令1226,和/或包含调用上面的应用的方法的软件库。虽然在示例实施例中将计算机可读存储介质1224示出为单个介质,但是应当认为术语“计算机可读存储介质”包括存储一组或多组指令的单个或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存与服务器)。还应当认为术语“计算机可读存储介质”包括能够存储、编码或携带由机器执行并且使该机器执行当前的多个实施例的方法中的任何一个或多个的一组指令的任何介质。相应地,应当认为术语“计算机可读存储介质”包括但不限于固态存储器以及光和磁介质。
以下示例关于进一步的实施例。
示例1是一种处理器,包括:1)处理器核;2)在处理器核与主存储器之间耦合的存储器控制器,其中主存储器包括受保护的区域,受保护的区域包括安全页,以及其中处理器核用于响应于内容复制指令执行以下操作:a)初始化应用地址空间的受保护的区域中的目标页;b)选择要被复制的受保护的区域中的源页的内容;以及c)将被选择的内容复制到应用地址空间的受保护的区域中的目标页。
在示例2中,示例1的处理器核,响应于内容复制指令,进一步用于当应用在运行时将被选择的内容复制到目标页,其中应用被存储在受保护的区域中。
在示例3中,示例1-2中的任一项的处理器核用于响应于页面添加指令将目标页添加到受保护的区域。
在示例4中,示例1-3中的任一项的处理器核用于:确定目标页的特权等级,以及当目标页的特权等级为零时执行页面添加指令。
在示例5中,示例1-4中的任一项的处理器核用于:确定页面添加指令何时失败,其中当以下情况发生时失败:未正确地对齐操作数;设置了不支持的安全属性;被选择的软件防护扩展(SGX)飞地控制结构(SECS)页被另一线程锁定;EAUG指令不包括飞地页面高速缓存(EPC)页的有效地址;EPC页被另一线程锁定;EPC页处于有效状态;或被选择的受保护的区域的偏移在受保护的区域的有效地址范围之外;以及确定内容复制指令何时失败,其中当以下情况发生时内容复制指令失败:未正确地对齐操作数;请求了不支持的访问权限组合;操作数不指示飞地页面高速缓存(EPC)页;目标页或源页在被另一线程使用;EPC页不具有被选择的PT_REG类型;或EPC页不是有效页。
在示例6中,示例1-5中的任一项的页面添加指令包括存储器参数信息,其中存储器参数信息包括:页面信息(PAGEINFO)结构的有效地址;以及飞地页面高速缓存(EPC)页的有效地址。
在示例7中,示例1-6中的任一项的PAGEINFO结构包括:目标页的安全信息(SECINFO)结构;以及源页(SRCPAGE)的页面信息结构。
在示例8中,示例1-7中的任一项的处理器核响应于页面添加指令,用于:将空闲飞地页面高速缓存(EPC)页与受保护的区域的部分中的一个或多个被选择的软件防护扩展(SGX)飞地控制结构(SECS)页相关联;将受保护的区域的偏移属性和受保护的区域的安全属性存储在飞地页面高速缓存映射(EPCM)中;以及将目标页的内容清零。
在示例9中,示例1-8中的任一项的处理器核用于:确定页面接受指令被何时接收,其中目标页的状态保持为待定,直到页面接受指令被接收,以及当页面接受指令被接收时将目标页添加到应用地址空间的受保护的区域。
在示例10中,示例1-9中的任一项的内容复制指令包括存储器参数信息,其中存储器参数信息包括:软件防护扩展(SGX)飞地控制(SEC)信息(SECINFO)结构,其中当被选择的内容被复制时,SECINFO结构为正在被修改的目标页指定被选择的许可等级,以及为目标页指定请求的类型;内容被复制到的目标页的有效地址;以及从源页复制内容的有效地址。
在示例11中,示例1-10中的任一项的源页:是有效的飞地页面高速缓存(EPC)页,以及是不在被阻塞状态、待定状态或被修改状态的PT_REG类型。
在示例12中,示例1-11中的任一项的目标页:是有效的飞地页面高速缓存(EPC)页,以及是在待定状态而不在被修改状态或被阻塞状态的PT_REG类型。
各实施例可以具有上文所描述的结构特征的不同的组合。例如,上文所描述的计算系统的所有任选的特征也可以参照本文中所描述的方法或过程来实现,并且示例中的细节可以用于一个或多个实施例中的任何地方。
在示例13中,一种方法包括:1)由处理器的处理器核解码内容复制指令,该内容复制指令用于复制耦合到处理器核的主存储器的受保护的区域中的源页的被选择的内容;以及2)由处理器核执行内容复制指令,以将源页的被选择的内容复制到受保护的区域中的目标页。
在示例14中,示例13的方法进一步包括响应于内容复制指令:a)由处理器核分配受保护的区域的目标页;b)由处理器核选择要被复制的受保护的区域的源页的内容;以及c)由处理器核将被选择的内容复制到受保护的区域中的目标页。
在示例15中,示例13-14的方法进一步包括响应于内容复制指令:a)由处理器核更新目标页的许可;b)由处理器核清除目标页的待定位以指示完成对目标页的使用;以及c)由处理器核释放在目标页上的飞地动态存储器管理(EDMM)锁定。
在示例16中,示例13-15的方法进一步包括由处理器核修改目标页的许可。
在示例17中,示例13-16的方法进一步包括:a)由处理器核验证源页的被选择的源参数;或b)由处理器核验证目标页的被选择的目标参数。
在示例18中,示例13-17的方法,其中由处理器核验证源页的被选择的源参数进一步包括:a)确定源页的可读状态;以及b)确定源页的飞地线性地址范围(ELRange)。
在示例19中,示例13-18的方法,其中由处理器核验证目标页的被选择的目标参数进一步包括:a)确定目标页的可写状态;b)确定目标页的飞地线性地址范围(ELRange);以及c)确定受保护的区域中的目标页的位置。
在示例20中,示例13-19的方法,其中由处理器核验证目标页的被选择的目标参数进一步包括:a)由处理器核获取飞地动态存储器管理(EDMM)锁定;b)由处理器核验证目标页的状态是常规的和待定的;以及c)由处理器核验证通过正确的线性地址访问目标页。
各实施例可以具有上文所描述的结构特征的不同的组合。例如,上文所描述的处理器和方法的所有可选的特征也可以利用此处所描述的系统来实现,示例中的细节可以用于一个或多个实施例中的任何地方。
在示例21中,一种系统包括:1)处理器包括用于执行指令的多个功能单元;以及2)存储器设备耦合到处理器,其中存储器设备用于存储代码存储器和数据存储器,以及包括受保护的区域,受保护的区域包括安全页,其中处理器用于:a)解码用于复制受保护的区域中的内容的指令;以及b)执行内容复制指令以将来自第一安全页的内容复制到第二安全页。
在示例22中,在示例21的系统中,处理器用于响应于内容复制指令将来自源安全页的内容复制到目标安全页,以及其中处理器用于响应于指令执行以下操作:a)初始化应用地址空间的受保护的区域中的第二安全页;b)选择要被复制的受保护的区域中的第一安全页的内容;以及c)将被选择的内容复制到应用地址空间的受保护的区域中的第二安全页。
在示例23中,在示例21-22的系统中,处理器响应于指令,用于当应用在运行时将被选择的内容复制到第二页,其中应用存储在受保护的区域中。
在示例24中,在示例21-23的系统中,存储器分配过程包括用于将第一安全页添加到受保护的区域的另一指令。
虽然已参照有限数量的实施例描述了本发明,但是本领域技术人员将从中领会很多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神与范围的所有此类修改与变型。
在本文的描述中,阐明了众多具体细节,例如具体类型的处理器和系统配置、具体硬件结构、具体架构的和微架构的细节、具体寄存器配置、具体指令类型、具体系统组件、具体测量/高度、具体处理器流水线级和操作等的示例,以提供对本发明的透彻理解。然而,对本领域普通技术人员显而易见的是,不一定要采用这些具体细节来实施本发明。在其它实例中,未详细描述公知的组件或方法,诸如具体或替代的处理器架构、用于所描述算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现、代码中算法的具体表达、具体掉电和门控技术/逻辑、以及计算机系统的其它具体操作细节,以避免不必要地模糊本发明。
各实施例是参考特定集成电路中的(诸如计算平台或微处理器中的)安全存储器重新分区来描述的。各实施例也可以适用于其他类型的集成电路和可编程逻辑器件。例如,所公开的各实施例不仅限于台式计算机系统或便携式计算机,诸如UltrabooksTM计算机。并且也可用于其他设备,诸如,手持式设备、平板、其他薄笔记本、片上系统(SOC)设备以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机或可执行以下教导的功能与操作的任何其他系统。描述了系统可以是任何类型的计算机或嵌入式系统。所公开的各实施例可以特别用于低端设备,诸如可穿戴设备(例如,手表)、电子植入物、传感和控制基础设施设备、控制器、监视控制和数据采集(SCADA)系统等等。此外,本文描述的装置、方法和系统不限于物理计算设备,而是还可涉及用于节能和能效的软件优化。如将在以下描述中变得显而易见的,本文描述的方法、装置和系统的实施例(无论是关于硬件、固件、软件还是它们的组合)对于用性能考量来平衡的‘绿色技术’的前景是至关重要的。
虽然参照处理器来描述多个实施例,但是其他实施例也适用于其他类型的集成电路和逻辑设备。本发明的实施例的类似技术和教导可应用于其他类型的电路或半导体器件,这些其他类型的电路或半导体器件可受益于更高的流水线吞吐量和改善的性能。本发明的诸个实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位或16位数据运算的处理器或机器,并且可适用于执行数据操纵或管理的任何处理器和机器。此外,本文的描述提供了示例,并且附图出于示意性目的示出各种示例。然而,这些示例不应当被理解为是限制性意义的,因为它们仅仅旨在提供本发明的诸个实施例的示例,而并非提供本发明的实施例的所有可能实现的详尽列表。
虽然下述的示例是在执行单元和逻辑电路情境下描述指令处理和分配,但本发明的其他实施例也可通过存储在机器可读有形介质上的数据和/或指令来完成,这些数据和/或指令在被机器执行时使得机器执行与本发明至少一个实施例相一致的功能。在一个实施例中,与本发明的多个实施例相关联的功能被具体化在机器可执行指令中。这些指令可用来使通过这些指令而被编程的通用处理器或专用处理器执行本发明的步骤。本发明的多个实施例也可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程以执行根据本发明的多个实施例的一个或多个操作。或者,本发明的多个实施例的多个操作可由包含用于执行这些操作的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
可将用于对逻辑进行编程以执行本发明的多个实施例的指令存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储设备)内。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在互联网上经由电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所使用的有形的机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形的机器可读介质。
设计会经历多个阶段,从创建到仿真到制造。表示设计的数据可用多种方式来表示该设计。首先,像仿真中有用的那样,可使用硬件描述语言或另一功能性描述语言来表示硬件。此外,可在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段都达到表示硬件模型中各种设备的物理布置的数据的层级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在任何设计表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁或光存储设备(诸如,盘)可以是存储信息的机器可读介质,这些信息是经由光或电波来发送的,调制或以其他方式生成这些光或电波以传送这些信息。当发送指示或承载代码或设计的电载波达到实现该电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商可在有形的机器可读介质上至少临时地存储具体化本发明的多个实施例的技术的制品(诸如,被编码成载波的信息)。
在本文中使用的模块指的是硬件、软件、和/或固件的任意组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非瞬态介质上的代码。另外,在另一实施例中,模块的使用是指包括代码的非瞬态介质,该代码专门适于由微控制器执行以进行预定操作。并且可推断,在又一实施例中,术语模块(在该示例中)可以指微控制器和非瞬态介质的组合。通常,被示为分开的模块边界一般不同而且有可能重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时可能保留某些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。
在一个实施例中,短语“被配置成”的使用指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定和/或所确定的任务。在该示例中,没有操作的装置或其元件仍然“被配置成”执行指定任务,如果它被设计、耦合、和/或互连以执行所述指定任务的话。作为纯说明性示例,在操作期间,逻辑门可以提供0或1。但“被配置成”向时钟提供启用信号的逻辑门不包括可提供1或0的每一潜在逻辑门。而是,该逻辑门是以在操作期间1或0的输出用于启用时钟的某种方式来耦合的逻辑门。再次注意,术语“被配置成”的使用不要求操作,而是集中于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,术语‘能够/能够用于’和/或‘能用于’的使用指的是按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如上注意的,在一个实施例中,用于、能够、或能用于的使用指的是装置、逻辑、硬件、和/或元件的潜在状态,其中该装置、逻辑、硬件、和/或元件没有正在操作而是被以如下方式设计:以指定方式来启用装置的使用。
如在本文中所使用的值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机系统中的值的其它表示。例如,十进制数十还可以被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值潜在地包括高逻辑值,即,复位,而更新的值潜在地包括低逻辑值,即,置位。注意,可以使用值的任何组合来表示任意数量的状态。
上述方法、硬件、软件、固件或代码的实施例可通过存储在机器可存取、机器可读、计算机可存取、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可存取/可读介质包括提供(即存储和/或发送)诸如计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可存取介质包括:随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保持从瞬态(传播)信号(例如载波、红外信号、数字信号)接收的信息的其它形式的存储设备;等等,这些与可从其接收信息的非瞬态介质相区别。
被用于对逻辑进行编程以执行本发明的诸个实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储器)内。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在互联网上经由电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所使用的有形的机器可读存储器。因此,计算机可读介质包括用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
本申请文件中通篇对“一个实施例”或“实施例”的引用意指结合所述实施例描述的特定的特征、结构或特性被包括在本发明的至少一个实施例中。如此,在整篇说明书中的不同位置出现短语“在一个实施例中”或“在实施例中”不一定都是指同一个实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。
在上述说明书中,已经参考特定示例性实施例给出了详细描述。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范围。相应地,应当将说明书和附图应认为是说明性的而不是限制性的。而且,实施例和其它示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。
在对计算机存储器内的数据位的操作的算法和符号表示方面呈现了具体实施方式的一些部分。这些算法描述和表示是由数据处理领域的技术人员用于向本领域的其他技术人员最有效地传达其工作实质的手段。算法在此一般被理解为导致所需结果的自洽的操作序列。这些操作是需要对物理量进行物理操控的操作。通常但非必须,这些量采用能被存储、传输、组合、比较、以及以其他方式操控的电信号或磁信号的形式。主要出于惯用法的原因,时不时地将这些信号称为位、值、要素、符号、字符、项、数字等已证明是方便的。此处所描述的块可以是硬件、软件、固件或其组合。
然而,应当记住,所有这些和/或类似的术语用于与适当的物理量关联,并且仅仅是应用于这些量的方便的标记。除非专门声明,否则从上文的讨论中显而易见地看出,应当理解,贯穿本说明书,利用诸如“定义”、“接收”、“确定”、“发出”、“链接”、“关联”、“获取”、“认证”、“阻止”、“执行”、“请求”、“传递”等等之类的术语的讨论是指计算系统或类似的电子计算设备的动作和/或进程,这些计算系统或类似的电子计算设备操纵数据,并且将被表示为计算系统的寄存器和存储器内的物理(例如,电子)量的数据转换为类似地被表示为计算系统存储器或寄存器或其他此类信息存储、传输和/或显示设备内的物理量的其他数据。
在此可使用词语“示例”或“示例性”来意指用作示例、实例或说明。本文中被描述为“示例”或“示例性”的任何方面或设计不一定被解释为优选于或更优于其他方面或设计。相反,词语“示例”或“示例性”的使用旨在以具体的方式来呈现诸概念。如本申请中所使用的,术语“或”意指包括性的“或”而非排他性的“或”。也就是说,除非另有指定或从上下文来看是清楚的,否则“X包括A或B”意指自然的包括性排列中的任何一种。也就是说,如果X包括A;X包括B;或X包括A和B两者,则在任何以上实例中,都满足“X包括A或B”。此外,如本申请中和所附权利要求书所使用的冠词“a”和“an”一般应解释为意指“一个或多个”,除非另有指定或从上下文来看显然指向单数形式。此外,通篇对术语“实施例”或“一个实施例”或“实现”或“一个实现”的使用不旨在意指同一个实施例或实现,除非是这样描述的。此外,如此处所使用的术语“第一”、“第二”、“第三”、“第四”等等旨在用作区别不同的元件的标记,并且可以不一定具有根据它们的数字指定的顺序含义。

Claims (24)

1.一种处理器,包括:
处理器核;以及
存储器控制器,在所述处理器核与主存储器之间耦合,其中所述主存储器包括受保护的区域,所述受保护的区域包括安全页,以及其中所述处理器核用于响应于内容复制指令执行以下操作:
初始化应用地址空间的所述受保护的区域中的目标页;
选择要被复制的所述受保护的区域中的源页的内容;以及
将被选择的内容复制到所述应用地址空间的所述受保护的区域中的所述目标页。
2.如权利要求1所述的处理器,其特征在于,所述处理器核响应于所述内容复制指令,进一步用于当应用在运行时将所述被选择的内容复制到所述目标页,其中所述应用被存储在所述受保护的区域中。
3.如权利要求1所述的处理器,其特征在于,所述处理器核用于响应于页面添加指令将所述目标页添加到所述受保护的区域。
4.如权利要求1所述的处理器,其特征在于,所述处理器核用于:
确定所述目标页的特权等级;以及
当所述目标页的特权等级为零时执行所述页面添加指令。
5.如权利要求3所述的处理器,其特征在于,所述处理器核用于:
确定页面添加指令何时失败,其中当以下情况发生时所述页面添加指令失败:
未正确地对齐操作数;
设置了不支持的安全属性;
被选择的软件防护扩展(SGX)飞地控制结构(SECS)页被另一线程锁定;
EAUG指令不包括飞地页面高速缓存(EPC)页的有效地址;
所述EPC页被另一线程锁定;
所述EPC页处于有效状态;或
被选择的受保护的区域的偏移在所述受保护的区域的有效地址范围之外;以及
确定内容复制指令何时失败,其中当以下情况发生时所述内容复制指令失败:
未正确地对齐操作数;
请求了不支持的访问权限组合;
所述操作数不指示飞地页面高速缓存(EPC)页;
所述目标页或所述源页在被另一线程使用;
所述EPC页不具有被选择的PT_REG类型;或
所述EPC页不是有效页。
6.如权利要求3所述的处理器,其特征在于,所述页面添加指令包括存储器参数信息,其中所述存储器参数信息包括:
页面信息(PAGEINFO)结构的有效地址;以及
飞地页面高速缓存(EPC)页的有效地址。
7.如权利要求6所述的处理器,其特征在于,所述PAGEINFO结构包括:
所述目标页的安全信息(SECINFO)结构;以及
所述源页(SRCPAGE)的页面信息结构。
8.如权利要求3所述的处理器,其特征在于,所述处理器核响应于所述页面添加指令,用于:
将空闲飞地页面高速缓存(EPC)页与所述受保护的区域的部分中的一个或多个被选择的软件防护扩展(SGX)飞地控制结构(SECS)页相关联;
将受保护的区域的偏移属性和受保护的区域的安全属性存储在飞地页面高速缓存映射(EPCM)中;以及
将所述目标页的内容清零。
9.如权利要求3所述的处理器,其特征在于,所述处理器核用于:
确定页面接受指令被何时接收,其中所述目标页的状态保持为待定,直到所述页面接受指令被接收;以及
当所述页面接受指令被接收时将所述目标页添加到所述应用地址空间的所述受保护的区域。
10.如权利要求1所述的处理器,其特征在于,所述内容复制指令包括存储器参数信息,其中所述存储器参数信息包括:
软件防护扩展(SGX)飞地控制(SEC)信息(SECINFO)结构,其中当所述被选择的内容被复制时,所述SECINFO结构为正在被修改的所述目标页指定被选择的许可等级,以及为所述目标页指定请求的类型;
所述内容被复制到的所述目标页的有效地址;以及
从所述源页复制所述内容的有效地址。
11.如权利要求1所述的处理器,其特征在于:
所述源页是有效的飞地页面高速缓存(EPC)页;以及
所述源页是不在被阻塞状态、待定状态或被修改状态的PT_REG类型。
12.如权利要求1所述的处理器,其特征在于:
所述目标页是有效的飞地页面高速缓存(EPC)页;以及
所述目标页是在待定状态而不在被修改状态或被阻塞状态的PT_REG类型。
13.一种方法,包括:
由处理器的处理器核解码内容复制指令,所述内容复制指令用于复制耦合到所述处理器核的主存储器的受保护的区域中的源页的被选择的内容;以及
由所述处理器核执行所述内容复制指令,以将所述源页的所述被选择的内容复制到所述受保护的区域中的目标页。
14.如权利要求13所述的方法,进一步包括:
响应于所述内容复制指令,
由所述处理器核分配所述受保护的区域的所述目标页;
由所述处理器核选择要被复制的所述受保护的区域的所述源页的内容;以及
由所述处理器核将所述被选择的内容复制到所述受保护的区域中的所述目标页。
15.如权利要求13所述的方法,进一步包括:
响应于所述内容复制指令,
由所述处理器核更新所述目标页的许可;
由所述处理器核清除所述目标页的待定位以指示完成对所述目标页的使用;以及
由所述处理器核释放在所述目标页上的飞地动态存储器管理(EDMM)锁定。
16.如权利要求13所述的方法,进一步包括由所述处理器核修改所述目标页的许可。
17.如权利要求13所述的方法,进一步包括:
由处理器核验证所述源页的被选择的源参数;或
由处理器核验证所述目标页的被选择的目标参数。
18.如权利要求17所述的方法,其特征在于,由处理器核验证所述源页的所述被选择的源参数进一步包括:
确定所述源页的可读状态;以及
确定所述源页的飞地线性地址范围(ELRange)。
19.如权利要求17所述的方法,其特征在于,由所述处理器核验证所述目标页的所述被选择的目标参数进一步包括:
确定所述目标页的可写状态;
确定所述目标页的飞地线性地址范围(ELRange);以及
确定所述受保护的区域中的所述目标页的位置。
20.如权利要求17所述的方法,其特征在于,由所述处理器核验证所述目标页的所述被选择的目标参数进一步包括:
由所述处理器核获取飞地动态存储器管理(EDMM)锁定;
由所述处理器核验证所述目标页的状态是常规的和待定的;以及
由所述处理器核验证通过正确的线性地址访问所述目标页。
21.一种系统,包括:
处理器,包括用于执行指令的多个功能单元;以及
存储器设备,耦合到所述处理器,其中所述存储器设备用于存储代码存储器和数据存储器,以及包括受保护的区域,所述受保护的区域包括安全页,其中所述处理器用于:
解码用于复制所述受保护的区域中的内容的指令;以及
执行所述内容复制指令以将来自第一安全页的内容复制到第二安全页。
22.如权利要求21所述的系统,其特征在于,所述处理器用于响应于所述内容复制指令将来自源安全页的内容复制到目标安全页,以及其中所述处理器用于响应于所述指令执行以下操作:
初始化应用地址空间的受保护的区域中的所述第二安全页;
选择要被复制的所述受保护的区域中的第一安全页的内容;以及
将被选择的内容复制到所述应用地址空间的所述受保护的区域中的所述第二安全页。
23.如权利要求21所述的系统,其特征在于,所述处理器响应于所述指令,用于当应用在运行时将所述被选择的内容复制到所述第二页,其中所述应用被存储在所述受保护的区域中。
24.如权利要求21所述的系统,其特征在于,存储器分配过程包括用于将所述第一安全页添加到所述受保护的区域的另一指令。
CN201580045263.7A 2014-09-24 2015-08-14 受保护的区域中的存储器初始化 Pending CN106575261A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/495,074 US20160085695A1 (en) 2014-09-24 2014-09-24 Memory initialization in a protected region
US14/495,074 2014-09-24
PCT/US2015/045385 WO2016048478A1 (en) 2014-09-24 2015-08-14 Memory initialization in a protected region

Publications (1)

Publication Number Publication Date
CN106575261A true CN106575261A (zh) 2017-04-19

Family

ID=55525876

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580045263.7A Pending CN106575261A (zh) 2014-09-24 2015-08-14 受保护的区域中的存储器初始化

Country Status (5)

Country Link
US (3) US20160085695A1 (zh)
EP (3) EP3862886B1 (zh)
KR (2) KR102318740B1 (zh)
CN (1) CN106575261A (zh)
WO (1) WO2016048478A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108459973A (zh) * 2018-04-03 2018-08-28 清华大学 处理器的安全控制方法、装置和系统
CN109992526A (zh) * 2019-04-10 2019-07-09 苏州浪潮智能科技有限公司 一种读写管理方法以及相关装置
CN111259380A (zh) * 2017-08-22 2020-06-09 海光信息技术有限公司 内存页转移方法和函数调用方法
CN112703490A (zh) * 2018-09-18 2021-04-23 华为技术有限公司 用于存储器保护的装置和方法

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875189B2 (en) 2015-06-12 2018-01-23 Intel Corporation Supporting secure memory intent
US9852072B2 (en) * 2015-07-02 2017-12-26 Netapp, Inc. Methods for host-side caching and application consistent writeback restore and devices thereof
US10664179B2 (en) * 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
GB2543520B (en) * 2015-10-20 2019-06-19 Advanced Risc Mach Ltd Memory access instructions
US10511598B2 (en) * 2016-03-29 2019-12-17 Intel Corporation Technologies for dynamic loading of integrity protected modules into secure enclaves
US10354095B2 (en) 2016-03-31 2019-07-16 Intel Corporation Methods and apparatus to initialize enclaves on target processors
US10572687B2 (en) * 2016-04-18 2020-02-25 America as represented by the Secretary of the Army Computer security framework and hardware level computer security in an operating system friendly microprocessor architecture
US10572395B2 (en) * 2016-09-07 2020-02-25 Intel Corporation Non-enclave access prevention
US10180854B2 (en) 2016-09-28 2019-01-15 Intel Corporation Processor extensions to identify and avoid tracking conflicts between virtual machine monitor and guest virtual machine
US10324862B2 (en) * 2016-09-30 2019-06-18 Intel Corporation Supporting oversubscription of guest enclave memory pages
US9798482B1 (en) 2016-12-05 2017-10-24 Red Hat, Inc. Efficient and secure memory allocation in virtualized computer systems
WO2018230280A1 (ja) * 2017-06-14 2018-12-20 住友電気工業株式会社 車外通信装置、通信制御方法および通信制御プログラム
US10387686B2 (en) 2017-07-27 2019-08-20 International Business Machines Corporation Hardware based isolation for secure execution of virtual machines
US10296741B2 (en) 2017-07-27 2019-05-21 International Business Machines Corporation Secure memory implementation for secure execution of virtual machines
FR3069935A1 (fr) * 2017-08-01 2019-02-08 Maxim Integrated Products, Inc. Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees
US10579439B2 (en) 2017-08-29 2020-03-03 Red Hat, Inc. Batched storage hinting with fast guest storage allocation
US10956216B2 (en) 2017-08-31 2021-03-23 Red Hat, Inc. Free page hinting with multiple page sizes
US10628315B2 (en) 2017-09-28 2020-04-21 Intel Corporation Secure memory repartitioning technologies
US10474382B2 (en) 2017-12-01 2019-11-12 Red Hat, Inc. Fast virtual machine storage allocation with encrypted storage
US11082231B2 (en) * 2017-12-29 2021-08-03 Intel Corporation Indirection directories for cryptographic memory protection
US10838773B2 (en) * 2018-03-30 2020-11-17 Intel Corporation Techniques for dynamic resource allocation among cryptographic domains
US11095684B2 (en) * 2019-01-07 2021-08-17 Fortanix, Inc. Providing attributes of a network service
US11088846B2 (en) * 2019-03-28 2021-08-10 Intel Corporation Key rotating trees with split counters for efficient hardware replay protection
US11256785B2 (en) * 2019-07-09 2022-02-22 Microsoft Technologly Licensing, LLC Using secure memory enclaves from the context of process containers
US20210144170A1 (en) * 2019-11-09 2021-05-13 Indian Institute Of Science System and method for protection against side channel attacks
US11436141B2 (en) 2019-12-13 2022-09-06 Red Hat, Inc. Free memory page hinting by virtual machines
CN111159018B (zh) * 2019-12-17 2021-06-22 浙江大学 基于软件防护扩展指令sgx的在线模糊测试系统和方法
US11763041B2 (en) 2021-04-28 2023-09-19 SK Hynix Inc. Data storage device performing in-storage processing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101036193A (zh) * 2004-10-06 2007-09-12 三星电子株式会社 用于安全地存储数据的设备和方法
US20090196417A1 (en) * 2008-02-01 2009-08-06 Seagate Technology Llc Secure disposal of storage data
CN101777104A (zh) * 2009-01-14 2010-07-14 青岛大学 一种基于多cpu双总线的高安全性体系结构
CN101788958A (zh) * 2010-02-04 2010-07-28 杭州晟元芯片技术有限公司 一种存储器数据保护的方法
US20120159184A1 (en) * 2010-12-17 2012-06-21 Johnson Simon P Technique for Supporting Multiple Secure Enclaves

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4985825A (en) 1989-02-03 1991-01-15 Digital Equipment Corporation System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer
DE19928057B4 (de) 1999-06-15 2005-11-10 Francotyp-Postalia Ag & Co. Kg Sicherheitsmodul und Verfahren zur Sicherung der Postregister vor Manipulation
US6502170B2 (en) * 2000-12-15 2002-12-31 Intel Corporation Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes
US7631160B2 (en) * 2001-04-04 2009-12-08 Advanced Micro Devices, Inc. Method and apparatus for securing portions of memory
US7191318B2 (en) * 2002-12-12 2007-03-13 Alacritech, Inc. Native copy instruction for file-access processor with copy-rule-based validation
EP1450261A1 (en) * 2003-02-18 2004-08-25 STMicroelectronics S.r.l. Semiconductor memory with access protection scheme
US20070022141A1 (en) 2005-07-19 2007-01-25 Singleton Shawn D System and method for acquiring and assembling real property data
US20080052467A1 (en) 2006-08-25 2008-02-28 Advanced Micro Devices, Inc. System for restricted cache access during information transfers and method thereof
US8578175B2 (en) * 2011-02-23 2013-11-05 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US9009406B2 (en) * 2010-12-10 2015-04-14 International Business Machines Corporation Determining server write activity levels to use to adjust write cache size
US8832452B2 (en) * 2010-12-22 2014-09-09 Intel Corporation System and method for implementing a trusted dynamic launch and trusted platform module (TPM) using secure enclaves
CN103455280B (zh) * 2012-05-31 2016-12-14 国际商业机器公司 用于执行存储器复制的方法和系统
US9053042B2 (en) * 2012-06-27 2015-06-09 Intel Corporation Method, system, and device for modifying a secure enclave configuration without changing the enclave measurement
US9747102B2 (en) * 2012-12-28 2017-08-29 Intel Corporation Memory management in secure enclaves
JP2014182449A (ja) 2013-03-18 2014-09-29 Toshiba Corp メモリコントローラ
JP6068325B2 (ja) * 2013-12-19 2017-01-25 インテル・コーポレーション セキュアなアプリケーションの実行を提供するプロセッサ
US9311508B2 (en) 2013-12-27 2016-04-12 Intel Corporation Processors, methods, systems, and instructions to change addresses of pages of secure enclaves

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101036193A (zh) * 2004-10-06 2007-09-12 三星电子株式会社 用于安全地存储数据的设备和方法
US20090196417A1 (en) * 2008-02-01 2009-08-06 Seagate Technology Llc Secure disposal of storage data
CN101777104A (zh) * 2009-01-14 2010-07-14 青岛大学 一种基于多cpu双总线的高安全性体系结构
CN101788958A (zh) * 2010-02-04 2010-07-28 杭州晟元芯片技术有限公司 一种存储器数据保护的方法
US20120159184A1 (en) * 2010-12-17 2012-06-21 Johnson Simon P Technique for Supporting Multiple Secure Enclaves

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111259380A (zh) * 2017-08-22 2020-06-09 海光信息技术有限公司 内存页转移方法和函数调用方法
CN108459973A (zh) * 2018-04-03 2018-08-28 清华大学 处理器的安全控制方法、装置和系统
CN108459973B (zh) * 2018-04-03 2022-03-18 清华大学 处理器的安全控制方法、装置和系统
CN112703490A (zh) * 2018-09-18 2021-04-23 华为技术有限公司 用于存储器保护的装置和方法
CN109992526A (zh) * 2019-04-10 2019-07-09 苏州浪潮智能科技有限公司 一种读写管理方法以及相关装置

Also Published As

Publication number Publication date
US11467981B2 (en) 2022-10-11
KR20210047975A (ko) 2021-04-30
US20200310990A1 (en) 2020-10-01
US20160085695A1 (en) 2016-03-24
US20190012273A1 (en) 2019-01-10
EP3198453B1 (en) 2022-06-08
EP4372597A2 (en) 2024-05-22
US10592436B2 (en) 2020-03-17
EP3198453A4 (en) 2018-04-25
KR102318740B1 (ko) 2021-10-28
WO2016048478A1 (en) 2016-03-31
KR20170033891A (ko) 2017-03-27
EP3862886A1 (en) 2021-08-11
KR102269010B1 (ko) 2021-06-25
EP3862886B1 (en) 2024-04-24
EP3198453A1 (en) 2017-08-02

Similar Documents

Publication Publication Date Title
CN106575261A (zh) 受保护的区域中的存储器初始化
CN105474227B (zh) 安全存储器重新分区
CN104954356B (zh) 保护共享的互连以用于虚拟机
CN109508555A (zh) 使用可信域在虚拟化系统中提供隔离
US10552344B2 (en) Unblock instruction to reverse page block during paging
EP3671515B1 (en) Method and apparatus for trust domain creation and destruction
TWI712887B (zh) 用於記憶體位址範圍的支持可組態安全性級別的處理器、方法及電腦可讀取非暫態儲存媒體
US11748146B2 (en) Scalable virtual machine operation inside trust domains within the trust domain architecture
CN110472444A (zh) 防止对加密存储器的未授权访问
CN108027779A (zh) 允许受保护的容器存储器与输入/输出设备之间的安全通信的处理器、方法、系统和指令
US10255199B1 (en) Evicting clean secure pages without encryption
CN104620254A (zh) 用于低开销的存储器重播保护的并行化的计数器攀树
CN110162380A (zh) 用来防止软件侧通道的机制
CN109643283A (zh) 管理飞地存储器页
CN110321729A (zh) 使用信任域支持虚拟化系统中的存储器分页
CN111355574A (zh) 信任域中的安全加密密钥管理
CN109690546A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170419