CN110321729A - 使用信任域支持虚拟化系统中的存储器分页 - Google Patents

使用信任域支持虚拟化系统中的存储器分页 Download PDF

Info

Publication number
CN110321729A
CN110321729A CN201910149638.4A CN201910149638A CN110321729A CN 110321729 A CN110321729 A CN 110321729A CN 201910149638 A CN201910149638 A CN 201910149638A CN 110321729 A CN110321729 A CN 110321729A
Authority
CN
China
Prior art keywords
memory
page
processing equipment
locked
content
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
CN201910149638.4A
Other languages
English (en)
Inventor
H.M.科斯拉维
B.帕特尔
R.萨希塔
B.亨特利
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 CN110321729A publication Critical patent/CN110321729A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • 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/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了使用信任域支持虚拟化系统中的存储器分页。本公开的实施例提供了用来支持计算系统中的不同信任域(TD)之间的全存储器分页而不丢失任何安全属性的技术,所述安全属性诸如基于每TD的防篡改/检测和机密性。在一个实施例中,提供了一种处理设备,其包括存储器控制器和操作地耦合到存储器控制器的存储器分页电路。存储器分页电路要驱逐与由处理设备执行的信任域(TD)相关联的存储器页面。去除该存储器页面到TD的第一存储器位置的绑定。创建包括该存储器页面的加密内容的可输送页面。随即,将该存储器页面提供到第二存储器位置。

Description

使用信任域支持虚拟化系统中的存储器分页
技术领域
本公开的实施例一般地涉及计算机系统,并且更特别地但非限制地,涉及使用信任域支持虚拟化系统中的存储器分页。
背景技术
现代处理设备采用磁盘加密来保护静止的数据。然而,存储器中的数据是明文,并且容易受到攻击的影响。攻击者可以使用各种技术从存储器检索数据,所述多种技术包括基于软件和硬件的总线扫描、存储器扫描、硬件探测等。来自存储器的该数据可以包括敏感数据,例如,隐私敏感数据、IP敏感数据、以及还有用于文件加密或通信的密钥。随着利用由云服务提供商提供的基于虚拟化的托管服务将数据和企业工作负荷移动到云中的当前趋势,进一步加剧了数据的暴露。
附图说明
根据下面给出的具体实施方式并且根据本公开的各种实施例的附图,将更全面地理解本公开。然而,附图不应被理解成将本公开限于具体实施例,而是仅用于解释和理解。
图1图示了根据一个实施例的用来使用信任域支持虚拟化系统中的存储器分页的处理系统的框图。
图2图示了根据一个实施例的包括用来使用信任域支持虚拟化系统中的存储器分页的数据结构的装置的框图。
图3图示了根据一个实施例的图2的装置的另一视图。
图4图示了根据一个实施例的用于使用信任域支持虚拟化系统中的存储器分页的方法的流程图。
图5A是图示用于根据一个实施例的处理器的微架构的框图。
图5B是图示根据一个实施例的有序管线和寄存器重命名阶段(stage)、无序发布/执行管线的框图。
图6是图示根据一个实现的计算机系统的框图。
图7是图示在其中可以使用本公开的实施例的系统的框图。
图8是图示在其中可以使用本公开的实施例的系统的框图。
图9是图示在其中可以使用本公开的实施例的系统的框图。
图10是图示在其中可以使用本公开的实施例的片上系统(SoC)的框图。
图11是图示在其中可以使用本公开的实施例的SoC设计的框图。
图12图示了图示在其中可以使用本公开的实施例的计算机系统的框图。
具体实施方式
提供了用于使用信任域支持虚拟化系统中的存储器分页的系统和方法。计算方面的当前趋势是通过利用由云服务提供商(CSP)提供的托管服务将数据和企业工作负荷(例如,要通过一个或多个应用执行的任务)放置在云中。由于将数据和企业工作负荷托管在云中,CSP的客户(本文中也称为租户)正在为其工作负荷请求更好的安全性和隔离解决方案。特别地,客户正在寻找使得能在租户的软件的可信计算基础(TCB)外部实现CSP提供的软件的操作的解决方案。系统的TCB指的是具有影响对系统的总体操作的信任的能力的一组硬件、固件和/或软件组件。
被实现为指令集架构(ISA)扩展(本文中称为TD扩展(TDX))的信任域(TD)架构为在不可信的CSP基础设施中执行的客户软件提供机密性(和完整性)。TD架构(其可以是片上系统(SoC)能力)提供CSP租户的工作负荷(例如,应用的执行)之间的隔离。TD架构的组件可以包括但不限于经由MK-总存储器加密(MK-TME)引擎的存储器加密、本文中称为信任域资源管理器(TDRM)(例如,TDRM可以是虚拟机监视器(VMM)的软件扩展)的资源管理能力,以及经由CPU管理的存储器所有权表(MOT)和经由CPU访问控制的TD控制结构提供的处理器中的执行状态和存储器隔离能力。TD架构提供了处理器部署利用MK-TME引擎、MOT和访问控制的TD控制结构用于TD工作负荷的安全操作的TD的能力。
使用TD架构,可以在信任域TD中执行CSP租户的软件。TD(也称为租户TD)指的是支持CSP租户的工作负荷的密码地保护的执行环境。例如,TD可以包括操作系统(OS)连同在OS之上运行的应用,或者在虚拟机管理器(VMM)之上运行的虚拟机(VM)连同其他应用。每个TD独立于系统中的其他TD进行操作,并使用通过平台上的TDRM指派的(一个或多个)逻辑处理器、存储器和I/O。例如,TD架构中的TDRM充当TD的主机,并且具有对核心和其他平台硬件的完全控制。TDRM 给TD中的软件指派(一个或多个)逻辑处理器。然而,TDRM不能在所指派的(一个或多个)逻辑处理器上访问TD的执行状态。类似地,TDRM将物理存储器和I/O资源指派给TD,但由于每TD由CPU强制执行的单独加密密钥的使用以及对存储器的其他完整性和重放控制而没有参与访问TD的存储器状态。
使用MK-TME引擎的至少一个排他的(例如,TD特定的)加密密钥在存储器中密码地隔离每个TD,用于加密与信任域相关联的(保存代码和/或数据的)存储器。处理器可以利用MK-TME引擎来加密(和解密)在TD工作负荷的执行期间使用的存储器。利用MK-TME引擎,可以在存储器中加密通过在处理器上的TD内执行的软件进行的任何存储器访问。例如,TD架构可以使用MK-TME引擎以每个TD/租户(在其中每个TD运行租户的工作负荷)实现一个或多个密钥,以达到不同的租户工作负荷之间的密码隔离。
MK-TME引擎可以迫使应当使用TD特定的加密密钥来加密特定TD的任何存储器页面。TD可以进一步选择为明文或使用TDRM未知的密钥(例如,为TD的每次执行生成的短暂密钥)和绑定(“微调(tweak)”)操作的组合而被加密的特定TD存储器页面。绑定操作通过将页面的主机物理地址(HPA)用作用于加密TD存储器页面的加密算法(例如,一个类型的利用128位加密密钥和128位微调密钥的AES-XTS加密算法)的参数而将TD存储器页面绑定到特定TD。因此,如果TD存储器页面被移动到(例如,存储器或外部存储中的)另一位置,则即使使用TD特定的加密密钥,也不能正确地解密该页面。
然而,由于存储器页面绑定到特定TD,存在可能发生的若干问题。例如,在虚拟化环境中主机系统可以使用存储器分页来确保被托管应用(其在该情况下被实现为TD)不会由于缺少存储器而崩溃。利用存储器分页,主机系统软件(例如,VMM/TDRM)可以收回被分配给给定TD的TD存储器页面。这可以通过将TD存储器页面的内容存储到磁盘(例如,外部硬盘)来实现。然后可以将释放的存储器页面分配给需要额外的存储器的另一TD。当第一TD请求对收回的存储器页面的内容的访问时,主机系统软件从磁盘取得所述存储器页面并将它们复制回到存储器中的与第一TD相关联的任何位置。当第一TD试图解密所述存储器页面时,由于所述存储器页面在存储器中的可能新位置,它无法这么做。这是因为所述存储器页面放回的位置不固定。照此,如果TD在存储器中的不同物理位置中,则TD不能正确地解密所述存储器页面。因此,使用那些TD存储器页面的第一TD的租户应用可能产生意外结果或甚至崩溃,这可能不利地影响CSP向其租户提供的服务。
本公开的实施例通过提供可输送页面来解决上面提及的缺陷和其他缺陷,所述可输送页面可以支持TD架构中的不同TD之间的全存储器分页,而不丢失其任何安全属性(例如,基于每TD的防篡改/检测和机密性)。在一个实施例中,TD架构可以实现允许VMM/TDRM为被绑定到特定TD的目标TD存储器页面创建可输送页面的指令。该目标TD存储器页面可能与要从TD释放的存储器相关联。例如,VMM/TDRM可以在存储器分页操作期间使用所述指令从一个TD提取或以其他方式驱逐TD存储器页面以便将该页面插入到另一TD中或将该页面移动到存储器中的不同物理位置。
在存储器分页操作期间,VMM/TDRM可以使用所述指令首先从TD驱逐TD存储器页面。该驱逐将TD存储器页面从TD解除绑定。为了将TD存储器页面从TD解除绑定,所述指令可以代表TD读目标TD存储器页面。例如,该指令可以命令TD来读目标TD存储器页面,其进而在TD内解密该页面。TD存储器页面的解密使用页面的HPA地址和TD的短暂密钥。VMM/TDRM可以发布用于使TD读TD存储器页面以便将TD被指派的易失性存储器页面的内容从源存储器地址提取到可输送页面的目的地地址的指令。该可输送页面允许VMM/TDRM使TD存储器页面页出(page out)以用于另一TD。当选择目标TD存储器页面用于驱逐时,VMM/TDRM然后(例如,在分页表中)将该TD存储器页面标记为不可用于该TD。
一旦去除TD存储器页面到TD的绑定,VMM/TDRM就可以使用所述指令通过使用TD特定的加密密钥来加密可输送页面上的被提取内容。然后将具有一些元数据的可输送页面输送到存储器中的不同位置,或者离开到磁盘或其他类型的存储设备。例如,元数据可以包括完整性值(例如,基于页面内容的密码散列值),其也由VMM/TDRM存储在VMM管理的存储器中。例如,可以使用密码散列算法(诸如HMAC-SHA256)生成完整性值。该完整性值用于核实可输送页面尚未在存储设备上被篡改。例如,当可输送页面被带回以被插入在存储器中时,VMM/TDRM执行指令以基于TD特定的加密密钥去除对页面的加密。该指令然后通过将从可输送页面导出的完整性值与VMM管理的存储器中的完整性值进行比较来验证可输送页面。
如果VMM管理的存储器中的完整性值不与可输送页面的完整性值匹配,则这指示完整性核实已失败。因此,所述指令可以向VMM/TDRM返回与所述TD相关联的存储器映射失败的警报通知。如果可输送页面的完整性值与VMM管理的存储器中的完整性值匹配,则这指示可输送页面尚未被修改。在可输送页面的成功完整性核实时,VMM/TDRM将该页面插入在存储器中的特定HPA处。VMM/TDRM然后命令处理器通过使用与所述TD相关联的短暂密钥和该页面的特定HPA位置来加密可输送页面。例如,VMM/TDRM执行将可输送页面的新位置作为参数传递的指令。在一些实施例中,这可以是新的存储器位置,其与所述TD存储器页面在其被从TD被指派的存储器中页出时所在的位置不同。该加密将可输送页面在新存储器位置处绑定回到TD。因此,绑定允许TD访问可输送页面的内容,因为该指令使得TD将可输送页面在存储器中的新HPA处绑定到TD。
图1是根据一个实施例的用来使用信任域支持虚拟化系统中的存储器分页的处理系统100的框图。在一些实施例中,处理系统100包括支持多个客户端设备101A-101C的虚拟化服务器110。虚拟化服务器110包括执行信任域资源管理器(TDRM)150的至少一个处理器112(也称为处理设备)。在一些实施例中,TDRM 150可以被包括为部分虚拟机监视器(VMM)功能性。VMM(也称为超级监督者)可以指的是用来创建、运行和管理来宾应用(诸如虚拟机(VM))的软件、固件或硬件。在一个实施例中,TDRM 150可以包括VMM,所述VMM可以实例化客户端设备101A-101C经由网络接口170可访问的一个或多个信任域(TD)190A-190C(例如,用来执行租户(例如,客户)工作负荷的软件环境)。客户端设备101A-101C可以包括但不限于台式计算机、平板计算机、膝上型计算机、上网本、笔记本计算机、个人数字助理(PDA)、服务器、工作站、蜂窝电话、移动计算设备、智能电话、因特网器具或任何其他类型的计算设备。
在一个实施例中,处理器112实现TD架构和用于TD架构的ISA扩展(TDX)。TD架构提供TD工作负荷190A-190C之间的以及与CSP软件(例如,在处理器112上执行的TDRM 150和/或CSP VMM(例如,根VMM 150))的隔离。TD架构的组件可以包括1)经由MK-TME引擎145的存储器加密,2)本文中称为TDRM 150的资源管理能力,以及3)经由MOT 160和经由访问控制的TD控制结构(即,TDCS 124和TDTCS 128)提供的处理器112中的执行状态和存储器隔离能力。TDX架构提供处理器112部署TD 190A-190C的能力,所述TD 190A-190C利用MK-TME引擎145、MOT 160和访问控制的TD控制结构(即,TDCS 124和TDTCS 128)用于TD 190A-190C的安全操作。
如所示,处理器112可以包括若干组件,其包括但不限于一个或多个核心120(也称为处理核心120)、范围寄存器130和存储器控制器140。处理器112可以用在代表基于可从加利福尼亚州圣克拉拉的Intel公司获得的PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理设备的处理系统的处理系统100中,但是也可以使用其他系统(包括具有其他微处理设备的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统100执行可从华盛顿州雷蒙德市的Microsoft公司获得的一个版本的WINDOWSTM操作系统,但是也可以使用其他操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户接口。因此,本公开的实施例不限于硬件电路和软件的任何特定组合。
在说明性示例中,处理核心120可以具有包括处理器逻辑和电路的微架构。具有不同微架构的处理器核心120可以共享公用指令集的至少一部分。例如,可以使用各种技术在不同的微架构中以不同的方式实现类似的寄存器架构,所述各种技术包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)和引退寄存器文件)的一个或多个动态分配物理寄存器。(一个或多个)处理器核心120可以执行用于处理器112的指令。所述指令可以包括但不限于用来取出指令的预取逻辑、用来解码指令的解码逻辑、用来执行指令的执行逻辑等。处理器核心120包括用来高速缓存指令和/或数据的高速缓存(未示出)。高速缓存包括但不限于一级、二级和末级高速缓存(LLC),或处理器112内的高速缓冲存储器的任何其他配置。
处理系统100还包括主存储器114和辅助存储118以存储程序二进制和其他数据。辅助存储118中的数据可以被存储在称为页面的块中,并且每个页面可以对应于一组物理存储器地址。虚拟化服务器110可以采用TDRM/VMM 150,其中由(一个或多个)核心120运行的应用(诸如TD 190A-190C)使用被映射到来宾物理存储器地址的虚拟存储器地址,并且来宾物理存储器地址由存储器控制器140映射到主机/系统物理地址。核心120可以执行存储器控制器140以将页面从辅助存储118加载到主存储器114(其包括易失性存储器和/或非易失性存储器)中,用于通过在处理器112上(例如,在核心上)运行的软件的较快访问。当TD190A-190C中的一个尝试访问与被加载到主存储器114中的页面的物理存储器地址对应的虚拟存储器地址时,存储器控制器140返回所请求的数据。核心120可以执行TDRM 150的VMM部分以将来宾虚拟地址翻译成主存储器114的主机物理地址,并且为允许核心120读、走(walk)和解释这些映射的协议提供参数。
在一个实现中,TD 190A可以由TDRM 150创建和启动。TDRM 150使用某个TD指令创建TD 190A。TDRM 150选择物理存储器的4KB对齐区域,并将这作为参数提供给TD创建指令。存储器的该区域用作用于TD 190A的TDCS 124。当被执行时,TD指令使得处理器112核实目的地4KB页面被(使用MOT 160)指派给TD。TD指令进一步使得处理器112生成用于TD 190A的短暂存储器加密密钥和密钥ID,并将密钥ID存储在TDCS 124中。当TDRM 150为每个TD 190A和190B指派物理存储器时,TD架构包括MOT 160。处理器112咨询TDRM管理的MOT 160以向TD指派存储器分配。这允许TDRM 150在不具有对驻留在所指派的TD存储器中的数据的任何可见性的情况下将存储器作为资源进行管理的完全能力。
MOT 160(其可以称为TD-MOT)是由处理器112管理以强制执行物理存储器页面向正在执行的TD(诸如TD 190A)的指派的结构,诸如表。MOT 160结构用于保存与所述TD 190A对齐的存储器的每个4KB页面的元数据属性。
在一个实现中,MOT 160在4KB的存储器边界上对齐并占据被保护免于在平台初始化之后被软件访问的物理上连续的存储器区域。在实现中,MOT 160是微架构结构,并且不能由软件直接访问。在架构上,MOT 160为主机物理存储器的每个4KB页面保存以下安全属性:
- 页面状况——有效/无效位(页面是否为有效存储器)
- 页面类别——DRAM、NVRAM、IO、保留
- 页面状态——(4位向量)指定页面是否是:
- 第1位——自由(未被指派给TD且未被TDRM使用的页面)
- 第2位——被指派(被指派给TD或TDRM的页面)
- 第3位——被阻止(其在释放/(重新)指派的过程中被阻止的页面)
- 第4位——未决(被指派给TD但还没有被TD接受的动态页面)
-TDID——(40位)TD标识符,其将页面指派给特定的唯一TD。TDCS的地址。
用于存储器的每个4KB页面的元数据由与所述TD相关联的物理页面地址直接索引。MOT 160中引用的4KB页面可以属于TD 190A的一个运行实例。处理器112使用MOT 160来迫使由作为租户TD 190A或TDRM 150操作的软件所引用的物理地址不能访问未明确指派给它的存储器。例如,在页面走期间使用MOT 160强制执行访问控制以用于由软件进行的存储器访问。由处理器112对未被指派给租户TD 190A或TDRM 150的存储器执行的物理存储器访问因中止页面语义而失败。在一些实施例中,MOT 160强制执行以下属性。首先,TD 190A外部的软件不应当能够以明文访问(读/写/执行)属于不同TD的任何存储器(这包括TDRM150)。其次,经由MOT 160指派给特定TD(诸如TD 190A)的存储器页面应当可从系统中的任何处理器访问(其中处理器正在执行存储器被指派到的TD)。
在本公开的实施例中,TDRM 150充当主机并且具有对核心120和其他平台硬件的完全控制。TDRM 150给TD 190A-190C中的软件指派(一个或多个)逻辑处理器。然而,TDRM150不能在所指派的(一个或多个)逻辑处理器上访问TD 190A-190C执行状态。类似地,TDRM150将物理存储器和I/O资源指派给TD 190A-190C,但由于单独的加密密钥以及存储器上的其他完整性和重放控制而没有参与访问TD 190A的存储器状态。
关于单独的加密密钥,处理器112可以利用MK-TME引擎145来加密(和解密)在执行期间使用的存储器。利用总存储器加密(TME),通过在核心120上执行的软件进行的任何存储器访问都可以利用加密密钥在存储器中被加密。MK-TME是对TME的增强,其允许使用多个加密密钥(所支持的密钥的数目是实现相关的)。处理器112可以利用MK-TME引擎145使得不同的页面被使用不同的MK-TME密钥来加密。MK-TME引擎145可以用在本文中描述的TD架构中,以每个TD 190A-190C支持一个或多个加密密钥,以帮助实现不同CSP客户工作负荷之间的密码隔离。例如,当在TD架构中使用MK-TME引擎145时,CPU默认迫使要使用TD特定的加密密钥来加密TD(所有页面)。
每个TD 190A-190C可以进一步选择特定TD存储器页面为明文或被加密。例如,可以使用TDRM未知的密钥(例如,为TD的每次执行生成的短暂密钥)和绑定(“微调”)操作的组合来加密TD存储器页面。绑定操作通过将页面的主机物理地址(HPA)用作用于加密TD存储器页面的加密算法的参数而将TD存储器页面绑定到特定TD。因此,如果TD存储器页面被移动到(例如,主存储器114或辅助存储118中的)另一位置,则即使使用TD特定的加密密钥,也不能正确地解密该页面。
TDRM 150有时可能需要执行存储器分页操作以通过将分配给第一TD的存储器页面的内容存储到磁盘(例如,外部硬盘)来收回被分配给第一TD的存储器页面。然后可以将释放的存储器页面分配给需要额外存储器的第二TD。本公开的实施例提供了支持计算系统200中的不同TD之间的全存储器分页而不丢失其任何安全属性(例如,基于每TD的防篡改/检测和机密性)的技术。在一个实施例中,处理器112可以实现存储器分页电路180。存储器分页电路180允许TDRM 150为被绑定到特定TD的目标TD存储器页面创建可输送页面。该可输送页面允许TDRM 150使目标TD存储器页面页出以用于另一TD或存储器中的不同位置。
在一些实现中,存储器分页电路180可以被实现为TDRM 150的一部分。在替代实现中,存储器分页电路180可以以单独的硬件组件、电路、专用逻辑、可编程逻辑和处理器112的微代码、或其任何组合来实现。在一个实现中,存储器分页电路180可以包括微架构,其包括处理器逻辑和类似于处理核心120的电路。在一些实现中,存储器分页电路180可以包括相同处理器逻辑的专用部分和由处理核心120使用的电路。
图2图示了根据一个实施例的包括数据结构201的装置200的框图。在该示例中,装置200可以与处理设备112相同或类似。例如,装置200包括图1的TDRM 150的存储器分页电路180,其实现处理器指令以支持使用信任域(诸如TD 190A和190B)的虚拟化系统中的存储器分页。每个TD 190A和190B都是可以运行VMM、VM、OS和/或应用的软件环境。例如,TD 190A被描绘为进行托管的VM 290A。装置200提供由TD 190A和190B中的每个执行的工作负荷之间的隔离。
在一些实施例中,使用MK-TME引擎145的至少一个排他加密密钥在存储器中密码地隔离每个TD,用于加密与信任域相关联的(保存代码和/或数据的)存储器。例如,TD 190A可以使用加密密钥205A来加密该TD的TD存储器页面203,并且TD 190B可以使用加密密钥205B来加密TD 190B的TD存储器页面。每个TD可以进一步选择为明文或使用TDRM 150未知的密钥和绑定操作的组合而被加密的特定TD存储器页面。例如,绑定操作通过将TD存储器页面203的主机物理地址(HPA)207用作用于加密TD存储器页面203的加密算法的参数而将TD存储器页面203绑定到TD 190A。
在一些实施例中,TDRM 150可以使用存储器分页电路180使TD 190A的TD存储器页面203页出,以便向不同的TD 190B提供存储器。根据存储器分页电路180的TDRM 150可以执行TD驱逐指令220以从TD 190A驱逐TD存储器页面203。在一些实施例中,TD驱逐指令220可以仅应用于TD 190A的某些存储器页面。例如,这些存储器页面可以包括具有GKID(例如,来宾(TD)KeyID)= 0的页面或DRAM页面,因为TDRM 150已知HKID(例如,主机KeyID)。在一些实施例中,GKID是利用TD的短暂密钥加密的页面,其中TDRM具有关联的HKID,并且因此具有加密密钥指针。当执行TD驱逐指令220时,TDRM 150在分页表(未示出)中标记TD存储器页面203不可用于TD 190A。例如,当选择目标TD存储器页面210用于驱逐时,TDRM 150(例如,在分页表中)将TD存储器页面203标记为不可用于TD 190A。TDRM 150然后清除该页面到TD190A的页面映射,以及用于该页面的任何脏高速缓存线。
当TD驱逐指令220由TDRM 150执行时,创建也称为可输送页面的数据结构210。可输送页面210允许TDRM 150使TD 190中的TD存储器页面203页出以供在TD 190B中使用而不丢失页面的任何安全属性。在一些实施例中,可输送页面210可以包括已经从TD存储器页面203提取的加密内容。一旦可输送页面210被填充,TDRM 150就将可输送页面210复制到辅助存储(例如,文件/磁盘)。TDRM 150然后使用于旧TD存储器页面203的高速缓存线无效,并使该页面可用于与所述TD 190B相关联的存储器位置。在一些实施例中,TDRM 150可以将TD存储器页面203存储在存储器201中的不同位置中,而不是使页面立即可用。在这样的情况下,TDRM 150可以在TD 190B处插入用于先前存储的可输送页面的TD存储器页面。
为了将TD存储器页面203的内容提取到可输送页面210,根据存储器分页电路180的TDRM 150可以执行TD提取指令230。TD提取指令230首先去除将TD存储器页面203绑定到与TD 190A相关联的特定(HPA)存储器位置207的绑定。为了将TD存储器页面203从TD 190A解除绑定,TD提取指令230可以代表TD 190A读TD存储器页面203。例如,该指令可以命令TD190A读目标TD存储器页面203。这进而通过使用该页面的HPA地址207和TD 190A的短暂密钥来解密TD内的页面。在一些实施例中,当根据TD提取指令230读TD存储器页面203时,将TD被指派的易失性存储器页面的内容从该页面的源存储器地址提取到可输送页面210的目的地地址。
一旦TD存储器页面203到TD 190A的绑定被去除,TDRM 150就可以使用TD提取指令230来使用TD特定的加密密钥207A加密可输送页面210。在一个实施例中,加密的可输送页面210可以包括但不限于TDCS时隙(slot)标识符212、源TD存储器页面的HPA 214、其中密码MAS被捕获用于页面内容和元数据的存储器区域(例如,128字节)的虚拟地址(VA),以及存储可输送页面210的加密内容的(4KB)页面的VA。TDRM 150然后可以命令装置200将可输送页面210输送到存储器201中的不同位置或者离开到存储设备。
在一些实施例中,可输送页面210可以与可以包括页面的完整性值219的元数据一起保存。例如,完整性值219可以是基于页面的内容和TD特定的加密密钥207A生成的密码散列值。例如,可以使用诸如HMAC-SHA256之类的密码散列算法来生成完整性值219,作为用于数据来源认证和完整性核实的基础。该完整性值219用于核实可输送页面210尚未在存储设备上被篡改。例如,当可输送页面210被带回以被插入在存储器201中时,TDRM 150可以检查完整性值219是否已经改变以便验证可输送页面210的内容。
图3图示了根据一个实施例的图2的装置200的另一示例300。在该示例300中,TDRM150可以插入从TD 190A中页出的存储器页面的内容。例如,当TD 190A的应用(例如,VM290A)请求对收回的存储器页面的内容的访问时,TDRM 150从磁盘取得该存储器页面,并且然后提供回到存储器210中的与所述TD 190A相关联的任何位置。当可输送页面210被带回以被插入在存储器中时,TDRM 150执行TD插入页面指令340。
TD插入页面指令340首先去除可输送页面210的加密。例如,基于TD特定的加密密钥205A来解密可输送页面的加密内容218。在一个实施例中,该指令对可输送页面210的解密内容执行完整性核实操作,以确保页面没有被改变。为了验证可输送页面210,该指令将可输送页面210的完整性值219与存储在TDRM 150的存储器中的完整性值309进行比较。如果完整性核实207因为完整性值219和309不匹配而失败,则该指令可以向TDRM 150返回与所述TD 190A相关联的存储器映射失败的错误通知。如果完整性值219和309匹配,则这指示可输送页面210尚未被修改。
在可输送页面210的成功完整性核实时,TDRM 150然后将可输送页面210插入在存储器210中的存储器页面303的HPA处。TD插入页面指令340然后命令TD 190A通过使用与所述TD 190A相关联的短暂密钥和特定HPA位置305将存储器页面303绑定到TD 190A。例如,可以经由TD插入页面指令340将特定HPA 303传递到TD 190A。在一些实施例中,绑定操作通过将HPA 305用作用于加密页面303的加密算法的参数而将存储器页面303绑定回到TD 190A。该绑定允许TD 190A现在正确地解密存储器页面303的内容,即使页面303可能在与从TD190A被指派的存储器201中页出的位置不同的物理位置处。因此,TD 190A现在可以正确地解密TD存储器页面303的内容,因为加密将该页面在与HPA 305相关联的新存储器位置处绑定回到TD 190A。
图4图示了根据一个实施例的用于使用信任域支持虚拟化系统中的存储器分页的方法400的流程图。方法400可以由处理逻辑执行,所述处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如在处理设备上运行的指令)、固件,或其组合。在一个实施例中,图1中的处理设备100的存储器分页电路180可以执行方法400。尽管以特定的序列或顺序示出,但除非另外指定,否则可以修改过程的顺序。因此,所图示的实现应当仅被理解为示例,并且所图示的过程可以被以不同顺序执行,并且一些过程可以被并行执行。此外,在各种实施例中可以省略一个或多个过程。因此,并非每个实现中都需要所有过程。其他过程流程是可能的。
方法400在框410处开始,其中驱逐与由处理设备112执行的信任域(TD)190A相关联的存储器页面203。在框420中,去除存储器页面203到TD的第一存储器位置207的绑定205A。在框430中,创建包括存储器页面203的加密内容230的可输送页面210。随即,将存储器页面203提供到第二存储器位置190B。
图5A是图示了根据本公开的一个实施例的用于处理器500的微架构的框图,所述处理器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重叠,以图示可以(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器文件,使用(一个或多个)未来文件、(一个或多个)历史缓冲器和(一个或多个)引退寄存器文件;使用寄存器映射和寄存器池;等)实现寄存器重命名和无序执行的各种方式。执行引擎单元550可以包括例如管理功能单元的功率函数的功率管理单元(PMU)590。
一般地,从处理器外部或从程序员的角度,架构寄存器是可见的。寄存器不限于任何已知的特定类型的电路。各种不同类型的寄存器是合适的,只要它们能够存储并且提供如在本文中描述的数据。合适的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等。引退单元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)的高速缓存未命中(miss)并且继续为传入存储和加载服务。其还支持维持高速缓存一致性。数据TLB单元572是用于通过映射虚拟和物理地址空间来改进虚拟地址翻译速度的高速缓存。在一个示例性实施例中,存储器访问单元564可以包括加载单元、存储地址单元和存储数据单元,其中的每个被耦合到存储器单元570中的数据TLB单元572。L2高速缓存单元576可以被耦合到一个或多个其他级别的高速缓存并且最终耦合到主存储器。
在一个实施例中,数据预取器580通过自动地预测程序将要消耗什么数据来推测地加载/预取到DCU 574的数据。预取可以指的是在处理器实际需要存储在存储器层级的一个存储器位置(例如,较低级别高速缓存或存储器)中的数据之前,将该数据传送到更接近处理器(例如,产生较低访问延迟)的较高级别存储器位置。更具体地,预取可以指的是在处理器发布针对正被返回的特定数据的需求之前从较低级别高速缓存/存储器中的一个到数据高速缓存和/或预取缓冲器对数据的早期检索。
在一个实现中,处理器500可以与关于图1描述的处理设备100相同,用来实现关于本公开的实现的用于使用信任域支持虚拟化系统中的存储器分页的技术。
处理器500可以支持一个或多个指令集(例如,x86指令集((具有已经与较新的版本添加在一起的一些扩展);加利福尼亚州森尼韦尔的MIPS技术的MIPS指令集;加利福尼亚州森尼韦尔的ARM控股公司的ARM指令集(具有诸如NEON之类的可选附加扩展)。
应当理解,核心可以支持多线程处理(执行操作或线程的两个或更多并行集合),并且可以以多种方式这样做,所述多种方式包括时间片多线程处理、同时多线程处理(其中单个物理核心为物理核心同时多线程处理的线程中的每个提供逻辑核心)或其组合(例如,诸如在Intel®超线程技术中的时间片取出和解码以及此后的同时多线程处理)。
虽然在无序执行的上下文中描述了寄存器重命名,但是应当理解,可以将寄存器重命名用在有序架构中。虽然处理器的图示的实施例还包括单独的指令以及数据高速缓存单元和共享的L2高速缓存单元,但是替代的实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如级别1(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和外部高速缓存的组合,所述外部高速缓存在核心和/或处理器的外部。替代地,所有高速缓存可以在核心和/或处理器的外部。
图5B是图示了根据本公开的一些实施例的由图5A的处理器500实现的有序管线和寄存器重命名阶段、无序发布/执行管线的框图。图5B中的实线框图示了有序管线,而虚线框图示了寄存器重命名、无序发布/执行管线。在图5B中,处理器管线501包括取出阶段502、长度解码阶段504、解码阶段506、分配阶段508、重命名阶段510、调度(也称为分派或发布)阶段512、寄存器读/存储器读阶段514、执行阶段516、写回/存储器写阶段518、异常处理阶段522和提交阶段524。在一些实施例中,阶段502-524的排序可以与图示的不同并且不限于在图5B中示出的特定排序。
图6图示了根据本公开的一个实施例的用于处理器600的微架构的框图,所述处理器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是指令被准备用于执行的地方。无序执行逻辑具有多个缓冲器以使指令流平滑并且对指令流重排序以当它们顺管线向下和被调度用于执行时优化性能。分配器逻辑分配每个uop需要以便执行的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名为寄存器文件中的条目。分配器还在指令调度器(存储器调度器、快调度器602、慢/通用浮点调度器604和简单浮点调度器606)之前为两个uop队列中的一个中的每个uop分配条目,一个用于存储器操作并且一个用于非存储器操作。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还包括用于处理存储器未命中的逻辑。如果数据将未命中加载在数据高速缓存中,在管线中可以存在飞行中(inflight)的依赖的操作,其给调度器留下临时不正确数据。重放机制跟踪并且重新执行使用不正确数据的指令。仅依赖的操作需要重放并且独立的操作被允许完成。处理器的一个实施例的调度器和重放机制还被设计用于抓住用于文本串比较操作的指令序列。
处理器600还包括根据本公开的实施例使用信任域实现虚拟化系统中的存储器分页的逻辑。在一个实施例中,处理器600的执行块611可以包括图1的存储器分页电路180,用于实现用于使用信任域功能性来支持虚拟化系统中的存储器分页的技术。在一些实施例中,处理器600可以是图1的处理设备100。
术语“寄存器”可以指的是被用作用于标识操作数的指令的一部分的板上处理器存储位置。换言之,寄存器可以是从处理器的外部(从程序员的角度)可使用的那些。然而,实施例的寄存器不应在含义上被限制于特定类型的电路。而是,实施例的寄存器能存储和提供数据并且执行在本文中描述的功能。可以由处理器内的电路使用任何数目的不同的技术来实现在本文中描述的寄存器,所述任何数目的不同的技术诸如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器文件还可以包含用于打包数据的八个多媒体SIMD寄存器。
对于下面的讨论,寄存器被理解成是被设计以保持打包数据的数据寄存器,诸如以来自加利福尼亚州圣克拉拉的Intel公司的MMXTM技术使得能实现的微处理器中的64位宽MMXTM寄存器(在一些实例中也称为‘mm’寄存器)。以整数和浮点形式两者可用的这些MMXTM寄存器可以与伴随SIMD和SSE指令的打包数据要素一起操作。类似地,涉及SSE2、SSE3、SSE4或以后的(一般地被称为“SSEx”)技术的128位宽XMMTM寄存器还可以被用来保持这样的打包数据操作数。在一个实施例中,在存储打包数据和整数数据中,寄存器不需要区分这两个数据类型。在一个实施例中,将整数和浮点包含在相同的寄存器文件中或者不同的寄存器文件中。此外,在一个实施例中,可以将浮点和整数数据存储在不同的寄存器或相同的寄存器中。
可以以许多不同的系统类型来实现实施例。现在参考图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经由诸如前端总线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可以包括用于实现如在本文中的实施例中描述的存储器分页电路180的PMU。在一些实施例中,应用处理器1020可以是图1的处理设备100。
存储器层级包括在核心内的高速缓存的一个或多个级别、一个或多个共享高速缓存单元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卡对接的订户身份模块(SIM)1130、用以保存引导代码用于由核心1106和1107执行来初始化和引导SoC1100的引导ROM 1135、用以与外部存储器(例如,DRAM 1160)对接的SDRAM控制器1140、用以与非易失性存储器(例如,闪存1165)对接的闪存控制器1145、用以与外围设备对接的外围控制1150(例如,串行外围接口)、用以显示和接收输入(例如,触摸使能的输入)的视频编解码器1120和视频接口1125、用以执行图形相关计算的GPU 1115等。这些接口中的任何接口可以合并在本文中描述的本公开的方面。另外,系统1100图示了用于通信的外围设备,诸如蓝牙模块1170、3G调制解调器1175、GPS 1180和Wi-Fi 1185。
图12图示了计算机系统1200的以示例形式的机器的图形表示,在所述计算机系统1200中,可以执行指令集,以用于使得机器执行在本文中讨论的方法论(methodology)中的任何一个或多个。在替代的实施例中,可以将机器连接(例如,联网)到LAN、内联网、外联网或因特网中的其他机器。机器可以以客户端-服务器网络环境中的服务器或客户端设备的能力、或作为对等(或分布式)网络环境中的对等体机器来操作。机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络器具、服务器、网络路由器、交换机或桥或能够(顺序地或以其他方式)执行指定要由该机器采取的动作的指令的集合的任何机器。此外,虽然仅图示了单个机器,但是术语“机器”还应当被解释成包括机器的任何集合,所述机器单独地或联合地执行指令的集合(或多个集合)以实行在本文中讨论的方法论中的任何一个或多个。
计算机系统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,其上被存储有软件1226,所述软件1226实现在本文中描述的功能的方法论中的任何一个或多个,诸如在如上面所描述的处理设备(诸如图1的处理设备100)中的线程上使用信任域实现虚拟化系统中的存储器分页。在由计算机系统1200对其执行期间,软件1226还可以完全地或至少部分地驻留在主存储器1204中作为指令1226和/或驻留在处理设备1202中作为处理逻辑1226;主存储器1204和处理设备1202还构成机器可访问存储介质。
非暂时性机器可读存储介质1224还可以用于存储在诸如关于图1中的处理设备100所描述的处理设备中的线程上实现存储器分页电路180的指令1226,和/或包含调用上面的应用的方法的软件库。虽然在示例实施例中将非暂时性机器可访问存储介质1124示出为单个介质,但是术语“机器可访问存储介质”应当被理解成包括存储指令的一个或多个集合的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“机器可访问存储介质”还应当被理解成包括能够存储、编码或携带用于由机器执行的指令的集合以及使得机器执行本公开的方法论中的任何一个或多个的任何介质。术语“机器可访问存储介质”应当因此被理解成包括但不限于固态存储器以及光介质和磁介质。
以下示例涉及进一步的实施例。
示例1包括一种处理设备,所述处理设备包括:存储器控制器;以及存储器分页电路,其操作地耦合到所述存储器控制器,用来:驱逐与由所述处理设备执行的信任域(TD)相关联的存储器页面;去除所述存储器页面到所述TD的第一存储器位置的绑定;创建包括所述存储器页面的加密内容的可输送页面;以及将所述存储器页面提供到第二存储器位置。
示例2包括示例1的处理设备,其中所述TD是用来执行应用的密码地保护的执行环境。
示例3包括示例1的处理设备,其中为了去除所述绑定,所述存储器分页电路进一步要:使用与所述TD相关联的物理存储器地址解密所述存储器页面的内容。
示例4包括示例1的处理设备,其中所述存储器分页电路进一步要:使用与所述TD相关联的密钥解密所述可输送页面的内容;以及核实所述可输送页面的解密内容。
示例5包括示例4的处理设备,其中为了核实所述解密内容,所述存储器分页电路进一步要:确定存储在存储器中的完整性值是否与从所述可输送页面导出的完整性值匹配。
示例6包括示例4的处理设备,其中响应于检测到所述解密内容被核实,所述处理设备进一步要:将所述可输送页面插入到与所述TD相关联的第三存储器位置中;以及通过基于与所述TD相关联的密钥和第三存储器位置的物理地址对所述可输送页面进行重新加密而将所述可输送页面绑定到所述TD,其中第三位置的物理地址不同于所述TD的被驱逐的存储器页面的第一位置的物理地址。
示例7包括示例4的处理设备,其中响应于检测到所述解密内容未被核实,所述处理设备进一步要:生成指示与所述TD相关联的存储器分页失败的警报。
示例8包括一种方法,所述方法包括:通过处理设备驱逐与由所述处理设备执行的信任域(TD)相关联的存储器页面;通过所述处理设备去除所述存储器页面到所述TD的第一存储器位置的绑定;通过所述处理设备创建包括所述存储器页面的加密内容的可输送页面;以及通过所述处理设备将所述存储器页面提供到第二存储器位置。
示例9包括示例8的方法,其中所述TD是用来执行应用的密码地保护的执行环境。
示例10包括示例8的方法,其中去除所述绑定进一步包括:使用与所述TD相关联的物理存储器地址解密所述存储器页面的内容。
示例11包括示例8的方法,进一步包括:使用与所述TD相关联的密钥解密所述可输送页面的内容;以及核实所述可输送页面的解密内容。
示例12包括示例11的方法,其中核实所述解密内容进一步包括:确定存储在存储器中的完整性值是否与从所述可输送页面导出的完整性值匹配。
示例13包括示例11的方法,其中响应于检测到所述解密内容被核实:将所述可输送页面插入到与所述TD相关联的第三存储器位置中;以及通过基于与所述TD相关联的密钥和第三存储器位置的物理地址对所述可输送页面进行重新加密而将所述可输送页面绑定到所述TD,其中第三位置的物理地址不同于所述TD的被驱逐的存储器页面的第一位置的物理地址。
示例14包括示例11的方法,其中响应于检测到所述解密内容未被核实:生成指示与所述TD相关联的存储器分页失败的警报。
示例15包括一种系统,所述系统包括:存储器,用来存储信任域;以及处理设备,其操作地耦合到所述存储器,用来:驱逐与由所述处理设备执行的信任域(TD)相关联的存储器页面;去除所述存储器页面到所述TD的第一存储器位置的绑定;创建包括所述存储器页面的加密内容的可输送页面;以及将所述存储器页面提供到第二存储器位置。
示例16包括示例15的系统,其中所述TD是用来执行应用的密码地保护的执行环境。
示例17包括示例15的系统,其中为了去除所述绑定,存储器分页电路进一步要:使用与所述TD相关联的物理存储器地址解密所述存储器页面的内容。
示例18包括示例15的系统,其中所述存储器分页电路进一步要:使用与所述TD相关联的密钥解密所述可输送页面的内容;以及核实所述可输送页面的解密内容。
示例19包括示例18的系统,其中为了核实所述解密内容,所述存储器分页电路进一步要:确定存储在存储器中的完整性值是否与从所述可输送页面导出的完整性值匹配。
示例20包括示例18的系统,其中响应于检测到所述解密内容被核实,所述处理设备进一步要:将所述可输送页面插入到与所述TD相关联的第三存储器位置中;以及通过基于与所述TD相关联的密钥和第三存储器位置的物理地址对所述可输送页面进行重新加密而将所述可输送页面绑定到所述TD,其中第三位置的物理地址不同于所述TD的被驱逐的存储器页面的第一位置的物理地址。
虽然已经关于有限数目的实施例描述了本公开,但是本领域技术人员将领会由此的许多修改和变化。意图使所附权利要求覆盖如落在本公开的真实精神和范围内的所有这样的修改和变化。
设计可以经历从创建到仿真到制造的各种阶段。表示设计的数据可以以多种方式表示设计。首先,如在仿真中有用的那样,可以使用硬件描述语言或另一功能描述语言来表示硬件。此外,在设计过程的一些阶段处可以产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在一些阶段处到达了表示硬件模型中的各种设备的物理放置的数据的级别。在使用常规半导体制造技术的情况中,表示硬件模型的数据可以是指定用来生产集成电路的掩模的不同的掩模层上的各种特征的存在或不存在的数据。在设计的任何表示中,可以将数据存储在任何形式的机器可读介质中。诸如盘之类的存储器或磁存储或光存储可以是用于存储经由光波或电波调制或以其他方式生成以传输信息而传输的这样的信息的机器可读介质。当传输指示或携带代码或设计的电载波时,从执行电信号的复制、缓冲或重新传输的程度上说,形成新的副本。因此,通信提供者或网络提供者可以在有形的、机器可读介质上至少临时地存储物品,诸如被编码到载波中的信息,实现本公开的实施例的技术。
如在本文中使用的模块指的是硬件、软件和/或固件的任何组合。作为示例,模块包括硬件,诸如与非暂态介质相关联的微控制器以存储适于由微控制器执行的代码。因此,在一个实施例中,对模块的引用指的是硬件,其被具体地配置成识别和/或执行要被保持在非暂态介质上的代码。此外,在另一实施例中,模块的使用指的是包括代码的非暂态介质,其具体地适于由微控制器执行以实行预定操作。并且如可以推断的那样,在又一实施例中,术语模块(在该示例中)可以指微控制器和非暂态介质的组合。常常图示为分离的模块边界通常变化并且可能重叠。例如,第一和第二模块可以共享硬件、软件、固件,或其组合,而潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,诸如晶体管、寄存器,或其他硬件,诸如可编程逻辑设备。
在一个实施例中,短语‘被配置成’的使用指的是布置、放在一起、制造、提供用于销售、导入和/或设计装置、硬件、逻辑或用以执行指定的或确定的任务的元件。在该示例中,未正在操作的装置或其元件仍旧“被配置成”执行指定的任务,如果其被设计、耦合和/或互连以执行所述指定的任务的话。作为纯说明性示例,在操作期间逻辑门可以提供0或1。但是‘被配置成’向时钟提供使能信号的逻辑门不包括可以提供1或0的每个逻辑门。反而,逻辑门是以在操作期间1或0输出将使能时钟的某种方式耦合的门。再次注意,术语‘被配置成’的使用不需要操作,而是聚焦于装置、硬件和/或元件的潜在的状态,其中在潜在的状态中,该装置、硬件和/或元件被设计成当装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,短语‘用来’、‘能够/有能力’和或‘可操作以’的使用指的是一些装置、逻辑、硬件和/或元件被以这样的方式设计成使得能够以指定的方式的使用该装置、逻辑、硬件和/或元件。如上面那样请注意,在一个实施例中,有能力或可操作以的使用指的是装置、逻辑、硬件和/或元件的潜在状态,其中该装置、逻辑、硬件和/或元件未正在操作但是被以这样的方式设计成使得能够以指定的方式使用装置。
如在本文中使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。逻辑电平、逻辑值或逻辑的值的使用经常也被称为1和0,其简单地表示二进制逻辑状态。例如,1指的是高逻辑电平并且0指的是低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元可能能够保持单个逻辑值或多个逻辑值。然而,已经使用计算机系统中的值的其他表示。例如,十进制数字十还可以被表示为二进制值910和十六进制字母A。因此,值包括能够被保持在计算机系统中的信息的任何表示。
此外,值或值的部分可以表示状态。作为示例,诸如逻辑的一之类的第一值可以表示默认的或初始的状态,而诸如逻辑的零之类的第二值可以表示非默认的状态。另外,在一个实施例中,术语重新设置和设置分别指的是默认的和更新的值或状态。例如,默认的值潜在地包括高逻辑值,即重新设置,而更新的值潜在地包括低逻辑值,即,设置。注意,值的任何组合可以被利用来表示任何数目的状态。
可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码来实现上面记载的方法、硬件、软件、固件或代码的实施例,所述指令或代码可由处理元件执行。非暂态机器可访问/可读介质包括提供(即,存储和/或传输)以诸如计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非暂态机器可访问介质包括随机存取存储器(RAM)(诸如静态RAM(SRAM)或动态RAM(DRAM));ROM;磁存储介质或光存储介质;闪存设备;电存储设备;光存储设备;声学存储设备;用于保持从暂态的(传播的)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备等,其不同于可以从其接收信息的非暂态介质。
可以将用于执行本公开的实施例的程序逻辑的指令存储在系统中的存储器内,系统中的存储器诸如DRAM、高速缓存、闪存或其他存储设备。此外,可以经由网络或通过其他计算机可读介质分发指令。因此,机器可读介质可以包括用于存储或传输机器(例如,计算机)可读形式的信息的任何机制,但是不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存或在经由电的、光的、声学的或其他形式的传播的信号(例如,载波、红外信号、数字信号等)通过因特网的信息的传输中使用的有形的机器可读存储。因此,计算机可读介质包括适用于存储或传输机器(例如,计算机)可读的形式的电子指令或信息的任何类型的有形的机器可读介质。
贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,贯穿本说明书在各种位置中的短语“在一个实施例中”或“在实施例中”的出现不一定都指的是相同的实施例。此外,可以以任何合适的方式将特定特征、结构或特性组合在一个或多个实施例中。
在前述说明书中,已经参考具体示例性实施例给出了具体实施方式。然而,将清楚的是,在不脱离如在所附权利要求书中记载的本公开的较广精神和范围的情况下,可以对其做出各种修改和改变。因此,说明书和附图将被视为说明性的意义而不是限制性的意义。此外,实施例和其他示例性语言的前述使用不一定指的是相同的实施例或相同的示例,而可能指的是不同的和有区别的实施例以及潜在地指的是相同的实施例。

Claims (21)

1.一种处理设备,包括:
存储器控制器;以及
存储器分页电路,其操作地耦合到所述存储器控制器,用来:
驱逐与要由所述处理设备执行的信任域(TD)相关联的存储器页面;
去除所述存储器页面到所述TD的第一存储器位置的绑定;
创建包括所述存储器页面的加密内容的可输送页面;以及
将所述存储器页面提供到第二存储器位置。
2.根据权利要求1所述的处理设备,其中所述TD是用来执行应用的密码地保护的执行环境。
3.根据权利要求1-2中任一项所述的处理设备,其中为了去除所述绑定,所述存储器分页电路进一步要:
使用与所述TD相关联的物理存储器地址解密所述存储器页面的内容。
4.根据权利要求1-2中任一项所述的处理设备,其中所述存储器分页电路进一步要:
使用与所述TD相关联的密钥解密所述可输送页面的内容;以及
核实所述可输送页面的解密内容。
5.根据权利要求4所述的处理设备,其中为了核实所述解密内容,所述存储器分页电路进一步要:
确定存储在存储器中的完整性值是否与从所述可输送页面导出的完整性值匹配。
6.根据权利要求4-5中任一项所述的处理设备,其中响应于检测到所述解密内容被核实,所述处理设备进一步要:
将所述可输送页面插入到与所述TD相关联的第三存储器位置中;以及
通过基于与所述TD相关联的密钥和第三存储器位置的物理地址对所述可输送页面的内容进行重新加密而将所述可输送页面绑定到所述TD,其中第三位置的物理地址不同于所述TD的被驱逐的存储器页面的第一位置的物理地址。
7.根据权利要求4-5中任一项所述的处理设备,其中响应于检测到所述解密内容未被核实,所述处理设备进一步要:
生成指示与所述TD相关联的存储器分页失败的警报。
8.一种方法,包括:
通过处理设备驱逐与由所述处理设备执行的信任域(TD)相关联的存储器页面;
通过所述处理设备去除所述存储器页面到所述TD的第一存储器位置的绑定;
通过所述处理设备创建包括所述存储器页面的加密内容的可输送页面;以及
通过所述处理设备将所述存储器页面提供到第二存储器位置。
9.根据权利要求8所述的方法,其中所述TD是用来执行应用的密码地保护的执行环境。
10.根据权利要求8所述的方法,其中去除所述绑定进一步包括:
使用与所述TD相关联的物理存储器地址解密所述存储器页面的内容。
11.根据权利要求8所述的方法,进一步包括:
使用与所述TD相关联的密钥解密所述可输送页面的内容;以及
核实所述可输送页面的解密内容。
12.根据权利要求8所述的方法,其中核实所述解密内容进一步包括:
确定存储在存储器中的完整性值是否与从所述可输送页面导出的完整性值匹配。
13.根据权利要求8所述的方法,其中响应于检测到所述解密内容被核实:
将所述可输送页面插入到与所述TD相关联的第三存储器位置中;以及
通过基于与所述TD相关联的密钥和第三存储器位置的物理地址对所述可输送页面的内容进行重新加密而将所述可输送页面绑定到所述TD,其中第三位置的物理地址不同于所述TD的被驱逐的存储器页面的第一位置的物理地址。
14.根据权利要求8所述的方法,其中响应于检测到所述解密内容未被核实:
生成指示与所述TD相关联的存储器分页失败的警报。
15.一种包括可执行指令的计算机可读存储介质,所述可执行指令在被处理系统执行时使得所述处理系统实行根据权利要求8-14中任一项所述的方法。
16.一种系统,包括:
存储器,用来存储信任域;以及
处理设备,其操作地耦合到所述存储器,用来:
驱逐与要由所述处理设备执行的信任域(TD)相关联的存储器页面;
去除所述存储器页面到所述TD的第一存储器位置的绑定;
创建包括所述存储器页面的加密内容的可输送页面;以及
将所述存储器页面提供到第二存储器位置。
17.根据权利要求16所述的系统,其中所述TD是用来执行应用的密码地保护的执行环境。
18.根据权利要求16-17中任一项所述的系统,其中为了去除所述绑定,存储器分页电路进一步要:
使用与所述TD相关联的物理存储器地址解密所述存储器页面的内容。
19.根据权利要求16-17中任一项所述的系统,其中所述存储器分页电路进一步要:
使用与所述TD相关联的密钥解密所述可输送页面的内容;以及
核实所述可输送页面的解密内容。
20.根据权利要求19所述的系统,其中为了核实所述解密内容,所述存储器分页电路进一步要:
确定存储在存储器中的完整性值是否与从所述可输送页面导出的完整性值匹配。
21.根据权利要求19-20中任一项所述的系统,其中响应于检测到所述解密内容被核实,所述处理设备进一步要:
将所述可输送页面插入到与所述TD相关联的第三存储器位置中;以及
通过基于与所述TD相关联的密钥和第三存储器位置的物理地址对所述可输送页面的内容进行重新加密而将所述可输送页面绑定到所述TD,其中第三位置的物理地址不同于所述TD的被驱逐的存储器页面的第一位置的物理地址。
CN201910149638.4A 2018-03-29 2019-02-28 使用信任域支持虚拟化系统中的存储器分页 Pending CN110321729A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/940,490 US10649911B2 (en) 2018-03-29 2018-03-29 Supporting memory paging in virtualized systems using trust domains
US15/940490 2018-03-29

Publications (1)

Publication Number Publication Date
CN110321729A true CN110321729A (zh) 2019-10-11

Family

ID=65229693

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910149638.4A Pending CN110321729A (zh) 2018-03-29 2019-02-28 使用信任域支持虚拟化系统中的存储器分页

Country Status (3)

Country Link
US (3) US10649911B2 (zh)
EP (2) EP3547200B1 (zh)
CN (1) CN110321729A (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628315B2 (en) * 2017-09-28 2020-04-21 Intel Corporation Secure memory repartitioning technologies
US10649911B2 (en) * 2018-03-29 2020-05-12 Intel Corporation Supporting memory paging in virtualized systems using trust domains
US10521149B2 (en) * 2018-05-30 2019-12-31 Red Hat, Inc. Memory poisoning support for free page hinting
US11763043B2 (en) 2020-09-25 2023-09-19 Intel Corporation Enabling late-binding of security features via configuration security controller for accelerator devices
US20220141026A1 (en) * 2020-11-02 2022-05-05 Intel Corporation Graphics security with synergistic encryption, content-based and resource management technology

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US8468244B2 (en) * 2007-01-05 2013-06-18 Digital Doors, Inc. Digital information infrastructure and method for security designated data and with granular data stores
US9195846B2 (en) * 2008-10-01 2015-11-24 Hewlett-Packard Development Company, L.P. Access grants
US20100228961A1 (en) * 2009-03-03 2010-09-09 Erf Wireless, Inc. Hierarchical secure networks
US8799673B2 (en) * 2009-12-31 2014-08-05 Intel Corporation Seamlessly encrypting memory regions to protect against hardware-based attacks
US9430384B2 (en) * 2013-03-31 2016-08-30 Intel Corporation Instructions and logic to provide advanced paging capabilities for secure enclave page caches
US9747028B1 (en) * 2013-12-13 2017-08-29 Amazon Technologies, Inc. Artificial memory pressure for low memory machine
US9697140B2 (en) * 2014-09-23 2017-07-04 Intel Corporation Encryption integrity check with CRC encryption in memory using a word count- and address-derived nonce
US9684608B2 (en) 2014-10-28 2017-06-20 Intel Corporation Maintaining a secure processing environment across power cycles
US9893881B2 (en) * 2015-06-29 2018-02-13 Intel Corporation Efficient sharing of hardware encryption pipeline for multiple security solutions
US10255191B2 (en) * 2015-08-13 2019-04-09 Advanced Micro Devices, Inc. Logical memory address regions
US9678687B2 (en) * 2015-09-25 2017-06-13 Mcafee, Inc. User mode heap swapping
US9990249B2 (en) 2015-12-24 2018-06-05 Intel Corporation Memory integrity with error detection and correction
US10810321B2 (en) 2016-08-11 2020-10-20 Intel Corporation Secure public cloud
US10675103B2 (en) * 2016-08-16 2020-06-09 Ethicon Llc Robotics communication and control
US20180373646A1 (en) * 2017-06-22 2018-12-27 Technion Research & Development Foundation Ltd Cache unit useful for secure execution
US10649911B2 (en) * 2018-03-29 2020-05-12 Intel Corporation Supporting memory paging in virtualized systems using trust domains

Also Published As

Publication number Publication date
US10649911B2 (en) 2020-05-12
EP3547200A1 (en) 2019-10-02
EP4002178A1 (en) 2022-05-25
EP3547200B1 (en) 2022-03-16
US20200226071A1 (en) 2020-07-16
US11288206B2 (en) 2022-03-29
US20190042466A1 (en) 2019-02-07
US20220214976A1 (en) 2022-07-07

Similar Documents

Publication Publication Date Title
TWI712887B (zh) 用於記憶體位址範圍的支持可組態安全性級別的處理器、方法及電腦可讀取非暫態儲存媒體
TWI697804B (zh) 安全區之平台遷移
CN105474227B (zh) 安全存储器重新分区
US11531772B2 (en) Support for increased number of concurrent keys within multi-key cryptographic engine
CN104954356B (zh) 保护共享的互连以用于虚拟机
US10515196B2 (en) Creating secure original equipment manufacturer (OEM) identification
CN104951274B (zh) 用于控制流安全性的二进制转换机制的指令和逻辑
CN118445839A (zh) 使用可信域在虚拟化系统中提供隔离
CN110321729A (zh) 使用信任域支持虚拟化系统中的存储器分页
CN111353164A (zh) 用于信任域创建和摧毁的方法和装置
KR20170033891A (ko) 보호 영역에서의 메모리 초기화
CN110472444A (zh) 防止对加密存储器的未授权访问
CN112148425A (zh) 信任域架构内的信任域内部的可缩放虚拟机操作
US20190095345A1 (en) Evicting clean secure pages without encryption
CN109643283A (zh) 管理飞地存储器页
CN111355574A (zh) 信任域中的安全加密密钥管理
US10324862B2 (en) Supporting oversubscription of guest enclave memory pages
CN107924442B (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