CN114692231A - 用于针对硬件重放攻击和存储器访问模式泄漏的提高的恢复力的存储器地址总线保护 - Google Patents

用于针对硬件重放攻击和存储器访问模式泄漏的提高的恢复力的存储器地址总线保护 Download PDF

Info

Publication number
CN114692231A
CN114692231A CN202111434717.3A CN202111434717A CN114692231A CN 114692231 A CN114692231 A CN 114692231A CN 202111434717 A CN202111434717 A CN 202111434717A CN 114692231 A CN114692231 A CN 114692231A
Authority
CN
China
Prior art keywords
memory
address
data
tree
mac
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
CN202111434717.3A
Other languages
English (en)
Inventor
S·查博拉
A·巴萨克
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 CN114692231A publication Critical patent/CN114692231A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • 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/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了用于针对硬件重放攻击和存储器访问模式泄漏的提高的恢复力的存储器地址总线保护。本文详述了利用经密码认证的地址总线CAAB保护的实施例,CAAB保护使用智能存储器设计来防止对地址总线的攻击而不被检测到,并消除存储器总线作为攻击者进行访问模式分析的可观察表面。本文描述了具有密码能力的智能存储器模块。存储器控制器和智能存储器模块交换密钥,并且通过使用该密钥,(地址总线上的)地址被加密,并且利用经认证的计数器模式加密来保护完整性。存储器控制器在接收到读取或写入请求时对地址进行加密(例如,使用预生成的经加密计数器以使密码开销最小化)。消息认证码MAC也与经加密的地址一起生成,以便能够检测对经加密的地址的修改。

Description

用于针对硬件重放攻击和存储器访问模式泄漏的提高的恢复 力的存储器地址总线保护
背景技术
目前的存储器保护技术,如多密钥加密和具有完整性的多密 钥,集中于经由基于硬件的密码方法对存储器数据总线上的数据的机密性 和完整性(篡改)进行保护。
在目前的多密钥加密和具有完整性的多密钥的方法中,存储 器地址总线没有得到保护。这使得系统容易受到其他攻击,诸如对过期数 据的硬件重放和访问模式监控。作为示例,攻击者可以在地址总线上翻转 位,从而有效地导致写入被丢弃(写入到与预期位置不同的位置)。此类 攻击可以通过允许硬件攻击者进行成功的重放攻击(即,重放被丢弃/写出 到安全范围外部的不同区域的高速缓存行的过期版本)而颠覆安全范围的 安全性。通过使用这些简单的地址位翻转技术,攻击者可以误导安全关键 数据(潜在地确定性地误导至所分配的感兴趣的系统地址),并且还知晓 何时重放回过期数据。
附图说明
将参考附图来描述根据本公开的各实施例,其中:
图1是根据本公开的实现方式的计算系统100的示意性框 图,该计算系统100使用TD在虚拟化系统中提供隔离。
图2是描绘根据一些实施例的实现TD架构的示例计算系统 的框图。
图3图示芯片上系统(SoC)或处理器与存储器的交互的各 种实施例。
图4更详细地图示利用CAAB和/或RR-树的实施例。
图5图示经认证的Diffie-Hellman协议密钥交换的实施例。
图6图示使用CAAB的总线使用的实施例。
图7图示用于使用CAAB的方法的实施例。
图8图示示例性RR-树的实施例。
图9图示用于使用RR-树的方法的实施例。
图10图示示例性系统的实施例。
图11图示可具有多于一个的核、可具有集成存储器控制器、 并且可具有集成图形器件的处理器的实施例的框图。
图12(A)是图示根据实施例的示例性有序流水线以及示例性 寄存器重命名的乱序发布/执行流水线两者的框图。
图12(B)是图示根据实施例的要包括在处理器中的有序架构 核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核两者的 框图。
图13图示(多个)执行单元电路的实施例。
图14是根据一些实施例的寄存器架构的框图。
图15图示指令格式的实施例。
图16图示寻址字段的实施例。
图17图示第一前缀的实施例。
图18(A)-图18(D)图示如何使用第一前缀的R、X和B字段 的实施例。
图19(A)-图19(B)图示第二前缀的实施例。
图20图示第三前缀的实施例。
图21图示根据实施例的对照使用软件指令转换器将源指令 集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本公开涉及至少用于防御重放攻击的方法、装置、系统和非 暂态计算机可读存储介质。为了防御背景技术中提到的攻击类型,直接的 解决方案是在存储器上建立重放保护树。然而,这引发了很大的性能成本, 因为随着每次读取和写入访问,重放树需要被验证/更新,以确保从存储器 读取的数据是处理器先前写入的数据。这种解决方案的最坏情况的开销可 以高达7倍,在16线程系统中平均为3倍(来自具有服务器工作负载的性 能模型)。这在实际用例场景中往往是不可接受的。
在不受保护的地址总线的情况下,连同增加主动攻击者可以 进行硬件重放攻击的容易程度,被动攻击者可以静静地观察地址总线从而 获得与已被证明在某些场景下导致信息泄漏的访问模式有关的信息。为了 防止访问模式公开,可以使用不经意(Oblivious)RAM(ORAM),每当 特定行/地址/块被读取或写入时,ORAM对该特定行/地址/块的DRAM位 置进行随机化。然而,这样做会导致极大的性能/带宽成本,其中最先进的 ORAM设计会导致典型的存储器尺寸的至少5-10倍的开销。
本文详述了利用经密码认证的地址总线(CAAB)保护的实 施例,CAAB保护使用智能存储器设计来防止对地址总线的攻击而不被检 测到,并消除存储器总线作为攻击者进行访问模式分析的可观察表面。本 文详述的实施例描述了具有密码能力的智能存储器模块。在一些实施例中, 存储器控制器和智能存储器模块交换密钥,并且通过使用该密钥,(地址 总线上的)地址被加密,并且利用经认证的计数器模式加密来保护完整性。 存储器控制器在接收到读取或写入请求时对地址进行加密(例如,使用预 生成的经加密计数器以使密码开销最小化)。消息认证码(MAC)也与经 加密的地址一起生成,以便能够检测对经加密的地址的修改。
为了发送MAC,在一些实施例中,存储器总线上的周期被“占 用”以仅发送MAC。实现存储器智能的微控制器用于对地址进行解密,并 验证其完整性(在接收到对应的MAC之后并且在服务读取或写入命令之 前)。地址总线上的任何修改将被检测为完整性失败。
在一些实施例中,经随机化的重放树(RR-树)被部署(有 时与CAAB一起),以检测硬件重放攻击,其中硬件攻击者通过记录和重 放MAC来直接修改存储器内容。RR-树引入了随机化重放验证的概念,其 中通过在对受保护的存储器的每次写入时更新树来保持重放树处于最新状 态,但使用下面列出的若干方法之一随机地验证从受保护的存储器的读取。RR-树为对存储器的重放攻击增加了非确定性,因为同一地址可能在一次访 问中针对重放树被验证,而在对同一地址的不同访问中可能不被验证。在 大多数安全设置中,RR-树被设置为在每次读取时进行验证。在一些实施例 中,验证的频率是可选择的。这允许RR-树的使用在安全和性能之间提供 了可调整的平衡,同时使对存储器的所有重放攻击都是非确定的。
如在本公开中所构想,实施例包括称为受信任域扩展(TDX) 的处理器安全性能力,以经由存储器加密和完整性的使用、经由存储器控 制器引擎来满足增加的安全目标。如在TDX中所使用,受信任域(TD) 是受保护的VM。
实施例包括称为安全扩展页表(SEPT)的附加扩展页表 (EPT)结构,该附加扩展页表(EPT)结构由处理器用于TD私有页走查。 SEPT是逐TD的EPT(即,每个TD具有其自身的SEPT),该逐TD的 EPT仅由受信任域资源管理器(TDRM)经由新添加到处理器的指令集架 构(ISA)的特殊指令来管理。在不使用这些指令的情况下,TDRM不能改 变SEPT,否则将由处理器报告完整性失败。在其他实施例中,可以使用处 理器范围-寄存器保护来对SEPT的全部或部分进行访问控制。
在典型的VM实现中,处理器针对每个虚拟存储器控制结构 (VMCS)支持一个EPT指针(EPTP)。VMCS是存储器中针对每个VM 存在一次的数据结构,而VM由VMM管理。在不同VM之间的执行上下 文的每一次改变的情况下,针对当前VM恢复VMCS,由此定义VM的虚 拟处理器的状态。VMM管理由EPTP引用的EPT。在实施例中,VM可以 由TD封装,并且VMCS可以由称为受信任域控制结构(TDCS)的类似控 制结构代替,该受信任域控制结构(TDCS)管理TD的客户机状态。
描述了使用受信任域(TD)在虚拟化系统中提供隔离的架构。 当前的计算趋势是通过利用由云服务提供方(CSP)提供的主控服务将数据 和企业工作负载放置在云中。作为在云中主控数据和企业工作负载的结果, CSP的客户(本文中称为租户)正在为其工作负载请求更好的安全性和隔 离解决方案。具体而言,客户正在寻找能够在租户的软件的TCB外部实现CSP提供的软件的操作的解决方案。系统的TCB指的是具有影响对系统的 整体操作的信任的能力的硬件、固件和/或软件组件的集合。
在本公开的实现方式中,提供TD架构以及用于TD架构的 指令集架构(ISA)扩展(在本文中称为TD扩展(TDX))以为在不受信 任的CSP基础结构中执行的客户(租户)软件提供机密性(和完整性)。 TD架构(其可以是芯片上系统(SoC)能力)在TD工作负载与CSP软件之间提供隔离,该CSP软件诸如CSP的虚拟机管理器(VMM)。TD架构 的组件可以包括:1)经由MK-总存储器加密(MKTME)引擎的存储器加 密,2)资源管理能力,在本文中称为受信任域资源管理器(TDRM)(TDRM 可以是虚拟机监视器(VMM)的软件扩展),以及3)处理器中的执行状态和存储器隔离能力,其经由CPU管理的存储器所有权表(MOT)并经由 CPU访问受控的TD控制结构来提供。TD架构提供了处理器部署TD的能 力,TD利用MK-TME引擎、MOT、和访问受控的TD控制结构来实现TD 工作负载的安全操作。
在一个实现方式中,租户的软件在被称为TD的架构概念中 执行。TD(也称为租户TD)是指租户工作负载(其可包括例如操作系统 (OS)本身以及在该OS之上运行的其他环3应用、或在VMM之上运行 的虚拟机(VM)以及其他环3应用)。每个TD独立于系统中的其他TD进行操作,并且在平台上使用由TDRM指派的(多个)逻辑处理器、存储 器和I/O。每个ID使用MK-TME引擎的至少一个专用加密密钥在存储器中 被密码隔离,该至少一个专用加密密钥用于对与受信任域相关联的(保持 代码和/或数据的)存储器进行加密。
在本公开的实现方式中,TD架构中的TDRM充当用于TD 的主机,并且具有对核和其他平台硬件的完全控制。TDRM将(多个)逻 辑处理器指派给TD中的软件。然而,TDRM无法访问在所指派的(多个) 逻辑处理器上的TD的执行状态。类似地,TDRM将物理存储器和I/O资源 指派给TD,但由于使用由处理器针对每个TD实施的单独的加密密钥、以 及对存储器的其他完整性和重放控制而无权访问TD的存储器状态。在TD 中执行的软件以降低的特权操作,使得TDRM可保留对平台资源的控制。 然而,在所定义的情况下,TDRM不能影响存储器中或CPU结构中的TD 状态的机密性或完整性。
用于在虚拟化系统中提供隔离的传统系统不完全从租户的 TCB提取CSP软件。此外,传统系统可能使用本公开的实现方式所避免的 多个单独的芯片组子系统而显著地增加TCB。本公开的实现方式的TD架 构通过从TCB移除CSP软件来明确地减少TCB以提供客户(租户)工作 负载与CSP软件之间的隔离。实现方式通过为CSP客户工作负载(租户 TD)提供安全隔离来提供对传统系统的技术改进,并允许从客户的TCB移 除CSP软件,同时满足CSP的安全性和功能要求。此外,TD架构可扩展 到多个TD,这可支持多个租户工作负载。此外,本文中描述的TD架构是 通用的,并且可以应用于任何动态随机存取存储器(DRAM)或基于存储 类存储器(SCM)的存储器(诸如,非易失性双列直插存储器模块 (NV-DIMM))。由此,本公开的实现方式允许软件利用性能益处(诸如, 用于SCM的NVDIMM直接存取存储(DAS)模式)而不损害平台安全要 求。
图1是根据本公开的实现方式的计算系统100的示意性框图, 该计算系统100使用TD在虚拟化系统中提供隔离。虚拟化系统100包括 虚拟化服务器110,该虚拟化服务器110支持多个客户端设备101A–101C。 虚拟化服务器110包括执行TDRM 180的至少一个处理器112(也称为处 理设备)。TDRM 180可以包括VMM(也可以称为管理程序),该VMM 可以对一个或多个TD 190A-190C实例化,这一个或多个TD 190A-190C经 由网络接口170可由客户端设备101A-101C访问。客户端设备101A-101C 可包括但不限于台式计算机、平板计算机、膝上型计算机、上网本、笔记 本计算机、个人数字助理(PDA)、服务器、工作站、蜂窝电话、移动计算设备、智能电话、互联网设备或任何其他类型的计算设备。
TD可以指租户(tenant)(例如,客户)工作负载。租户工作 负载可包括例如OS本身以及在该OS之上运行的其他环3应用,或者可包 括在VMM之上运行的VM以及其他环3应用。在本公开的实现方式中, 可以使用用于对与TD相关联的(保存代码和数据的)存储器进行加密的 单独的专用密钥以便在存储器中以密码方式将每个TD隔离。
处理器112可以包括一个或多个核120(也称为处理核120)、 范围寄存器130、存储器管理单元(MMU)140、和(多个)输出端口150。 TDRM 180与MOT 160以及一个或多个受信任域控制结构(TDCS)124和 受信任域线程控制结构(TDTCS)128通信。TDTCS和TD-TCS在本文中 可以可互换地使用。处理器112可用在系统中,该系统包括但不限于台式 计算机、平板计算机、膝上型计算机、上网本、笔记本计算机、PDA、服 务器、工作站、蜂窝电话、移动计算设备、智能电话、互联网设备或任何 其他类型的计算设备。在另一实现方式中,处理器112可以用在SoC系统 中。
计算系统100代表基于可从美国加利福尼亚州圣克拉拉市的 英特尔公司获得的微处理设备的处理系统,不过也可使用其他系统(包括 具有其他微处理设备的PC、工程工作站、机顶盒等等)。在一个实现方式 中,样本系统100执行可从华盛顿州雷蒙德市的微软公司获得的 WINDOWSTM操作系统的某个版本,但是也可使用其他操作系统(例如, UNIX、Linux)、嵌入式软件、和/或图形用户界面。因此,本公开的实现 方式不限于硬件电路和软件的任何特定组合。
一个或多个处理核120执行系统的指令。处理核120包括但 不限于:用于取出指令的预取逻辑、用于对指令解码的解码逻辑、用于执 行指令的执行逻辑,等等。在实现方式中,计算系统100包括组件(诸如, 处理器112)以采用包括逻辑的执行单元来执行用于处理数据的算法。
虚拟化服务器110包括用于存储程序二进制文件和OS驱动 器事件的主存储器114和次级存储118。次级存储118中的数据可被存储在 被称为页的块中,并且每个页可与物理存储器地址的集合对应。虚拟化服 务器110可以采用虚拟存储器管理,在该虚拟存储器管理中,由(多个) 核120运行的诸如TD 190A–190C之类的应用使用被映射到客户机物理存储器地址的虚拟存储器地址,并且客户机物理存储器地址通过MMU 140 被映射到主机/系统物理地址。
核120可以执行MMU 140以将来自次级存储118的页加载 到主存储器114中(该主存储器114包括易失性存储器和/或非易失性存储 器),以供由在处理器112上(例如,在核上)运行的软件更快地访问。 当TD 190A-190C中的一个试图访问与被加载到主存储器114中的页的物理 存储器地址相对应的虚拟存储器地址时,MMU 140返回所请求的数据。核120可以执行TDRM 180的VMM部分以将客户机物理地址转换为主存储 器的主机物理地址,并且为允许核120读取、走查并解释这些映射的协议 提供参数。
在一个实现方式中,处理器112实现TD架构以及用于该TD 架构的ISA扩展(TDX)。TD架构提供TD工作负载190A-190C之间的隔 离以及与CSP软件(例如,在处理器112上执行的TDRM 180和/或CSP VMM(例如,根VMM 180))的隔离。TD架构的组件可以包括:1)经 由MK-TME引擎(存储器加密引擎(MEE))145的存储器加密,2)在 本文中称为TDRM 180的资源管理能力,以及3)经由MOT 160和经由访 问受控的TD控制结构(即,TDCS 124和TDTCS 128)提供的处理器112 中的执行状态和存储器隔离能力。TDX架构提供处理器112部署TD 190A-190C的能力,TD 190A-190C利用MK-TME引擎145、MOT 160、和 访问受控的TD控制结构(即,TDCS124和TDTCS 128)以用于TD工作 负载190A-190C的安全操作。
在本公开的实现方式中,TDRM 180充当主机,并且具有对 核120和其他平台硬件的完全控制。TDRM 180将(多个)逻辑处理器指 派给TD 190A-190C中的软件。然而,TDRM180不能访问在所指派的(多 个)逻辑处理器上的TD 190A-190C的执行状态。类似地,TDRM180将物 理存储器和I/O资源指派给TD 190A-190C,但是由于多个单独的加密密钥 以及对存储器的其他完整性和重放控制而不参与访问TD 190A的存储器状 态。
关于单独的加密密钥,处理器可以利用MK-TME引擎145 对在执行期间使用的存储器加密(和解密)。利用总存储器加密(TME), 由在核120上执行的软件进行的任何存储器访问都可以利用加密密钥在存 储器中被加密。MK-TME是对允许使用多个加密密钥(所支持的密钥数量 取决于实现方式)的TME的增强。处理器112可以利用MKTME引擎145 以使得使用不同的MK-TME密钥对不同的页加密。MK-TME引擎145可以 被用在本文中所描述的TD架构中,以支持针对每个TD 190A-190C的一个 或多个加密密钥,从而帮助实现不同的CSP客户工作负载之间的密码隔离。 例如,当在TD架构中使用MK-TME引擎145时,CPU默认强制要求:将 使用TD专用密钥来加密TD(所有页)。此外,TD可以进一步将特定TD 页选择为是明文,或者是使用对CSP软件不透明的不同短暂密钥而被加密 的。MK-TME引擎145可以包括用于一个或多个密钥的存储。在一些实施 例中,在管芯上存在至少一个熔丝密钥。
每个TD 190A-190C是支持由(例如,使用虚拟机扩展(VMX) 的)VMM、OS和/或(由OS主控的)应用软件组成的软件栈的软件环境。 每个TD 190A-190C独立于其他TD 190A-190C进行操作,并且在平台上使 用由TDRM 180指派的(多个)逻辑处理器、存储器和I/O。TD190A-190C 中执行的软件以降低的特权操作,使得TDRM 180能够保持对平台资源的 控制;但是,在所定义的情况下,TDRM不会影响TD 190A-190C的机密 性或完整性。下文更详细地描述TD架构和TDX的进一步细节。
本公开的实现方式不限于计算机系统。可在其他设备(诸如, 手持式设备和嵌入式应用)中使用本公开的替代实现方式。手持式设备的 一些示例包括,蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA) 和手持式PC。嵌入式应用可包括微控制器、数字信号处理设备(DSP)、 芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN) 交换机,或能够根据至少一个实现方式执行一条或多条指令的任何其他系 统。
可在单个处理设备台式机或服务器系统的上下文中描述一个 实现方式,但是替代实现方式可被包括在多处理设备系统中。计算系统100 可以是“中枢”系统架构的示例。计算系统100包括用于处理数据信号的处 理器112。作为一个说明性示例,处理器112包括例如复杂指令集计算机 (CISC)微处理设备、精简指令集计算(RISC)微处理设备、超长指令字 (VLIW)微处理设备、实现指令集的组合的处理设备或任何其他处理设备(诸如,数字信号处理设备)。处理器112耦合至处理设备总线,该处理 设备总线在处理器112与计算系统100中的其他组件之间传送数据信号, 计算系统100中的其他组件诸如存储指令、数据或指令和数据的任何组合 的主存储器114和/或次级存储118。计算系统100的其他组件可包括图形 加速器、存储器控制器中枢、I/O控制器中枢、无线收发机、闪存BIOS、 网络控制器、音频控制器、串行扩展端口、I/O控制器等。这些元件执行为 熟悉本领域的人员公知的它们的传统功能。
在一个实现方式中,处理器112包括第1级(L1)内部高速 缓存存储器。取决于架构,处理器112可具有单个内部高速缓存或多级的 内部高速缓存。取决于特定实现方式和需求,其他实现方式包括内部高速 缓存和外部高速缓存两者的组合。寄存器堆用于将不同类型的数据存储在 各种寄存器中,这些寄存器包括整数寄存器、浮点寄存器、向量寄存器、区块化寄存器、影子寄存器、检查点寄存器、状态寄存器、配置寄存器、 以及指令指针寄存器。
应当注意,执行单元可具有浮点单元,或可不具有浮点单元。 在一个实现方式中,处理器112包括用于存储微代码的微代码(ucode) ROM,该微代码当被执行时,用于执行用于某些宏指令的算法或处置复杂 场景。在此,微代码是潜在地可更新的以处置针对处理器112的逻辑漏洞/ 修复。
也可在微控制器、嵌入式处理设备、图形设备、DSP以及其 他类型的逻辑电路中使用执行单元的替代实现方式。系统100包括主存储 器114(也可称为存储器114)。主存储器114包括DRAM设备、静态随 机存取存储器(SRAM)设备、闪存设备或其他存储器设备。主存储器114 存储由数据信号表示的、用于由处理器112执行的指令和/或数据。处理器 112经由处理设备总线而耦合至主存储器114。诸如存储器控制器中枢 (MCH)之类的系统逻辑芯片可耦合至处理设备总线和主存储器114。MCH 可提供至主存储器114的高带宽存储器路径,用于指令和数据存储并用于 图形命令、数据和纹理的存储。例如,MCH可用于在处理器112、主存储 器114与系统100中的其他组件之间引导数据信号,并且用于在处理设备 总线、存储器114与系统I/O之间桥接数据信号。MCH可通过存储器接口 而耦合至存储器114。在一些实现方式中,系统逻辑芯片可提供图形端口, 用于通过加速图形端口(AGP)互连而耦合至图形控制器。
计算系统100还可包括I/O控制器中枢(ICH)。ICH可提供 经由本地I/O总线而至一些I/O设备的直接连接。本地I/O总线是用于将外 围设备连接到存储器114、芯片组和处理器112的高速I/O总线。一些示例 是音频控制器、固件中枢(闪存BIOS)、无线收发机、数据存储、包含用 户输入和键盘接口的传统I/O控制器、诸如通用串行总线(USB)之类的串 行扩展端口、以及网络控制器。数据存储设备可包括硬盘驱动器、软盘驱 动器、CD-ROM设备、闪存设备、或其他大容量存储设备。
对于系统的另一实现方式,由如上所述的处理设备核120执 行的指令可与芯片上系统一起使用。芯片上系统的一个实现方式包括处理 设备和存储器。用于一个此类系统的存储器是闪存。闪存可以位于与处理 设备和其他系统组件相同的管芯上。此外,诸如存储器控制器或图形控制 器之类的其他逻辑块也可以位于芯片上系统上。
图2是描绘根据一些实施例的实现TD架构200的示例计算 系统的框图。TD架构200支持两种类型的TD。第一类型的TD是在其中 租户信任CSP以实施机密性、并且不实现本公开的实现方式的TD架构的 TD。这种类型的传统TD被描绘为TD1 210。TD1 210是具有CSPVMM管 理的TCB 202的CSP TD。TD1 210可以包括CSP VMM 212,该CSP VMM 212管理CSP VM214和/或一个或多个租户VM 216A、216B。在这种情况 下,租户VM 216A、租户VM 216B由在VM 216A、VM 216B的TCB 202 中的CSP VMM 212来管理。在本公开的实现方式中,租户VM216A、租 户VM 216B仍然可以经由该模型中的TME或MK-TME来利用存储器加密 (下面进一步描述)。
另一种类型的TD是在其中租户不信任CSP以实施机密性、 并且因此依赖于具有本公开的实现方式的TD架构的CPU的TD。这种类 型的TD以两种变体被示出为TD2 220和TD3230。示出TD2 220具有虚拟 化模式(诸如,VMX),该虚拟化模式由在TD2 220中运行的租户VMM (非根)222利用以管理租户VM 225A、租户VM 225B。TD3 230不包括 使用虚拟化模式的软件,而是替代地直接在TD3 230中运行开明的 (enlightened)OS 235。TD2 220和TD3 230是具有如在本公开的实现方式 中所描述的硬件实施的TCB 204的租户TD。在一个实现方式中,TD2 220 或TD3 230可以与关于图1描述的TD 190A相同。
TDRM 180管理所有三种类型的TD 210、TD 220、TD 230 的生命周期,包括管理资源的分配。然而,TDRM 180不在用于TD类型 TD2 220和TD3 230的TCB中。TD架构200不对在系统上活跃的TD的数 量或混合施加任何架构限制。然而,特定实现方式中的软件和某些硬件限 制可能由于其他约束而限制在系统上并发地运行的TD的数量。
图3图示芯片上系统(SoC)或处理器与存储器的交互的各 种实施例。顶部的示图示出SoC 301(或处理器)的一部分以及它与存储器 芯片311的交互。如图所示,存储器控制器303(例如,MMU 140)与存 储器设备311(诸如随机存取存储器)通信。存储器控制器303引起在DIMM 模块315和317之一中的读取或写入。控制逻辑313负责进行这些读取和/ 或写入。读取和写入至少利用地址总线(具有要写入或接收的数据的地址) 和数据总线(在一些实施例中,例如通过使用利用基于地址的微调(tweak) 的数据加密的XTS模式进行加密)。此外,命令总线可以用于指示读取、 写入等。在该顶部部分中,最多是数据总线受到保护。命令和/或地址可以 被操纵。
中间的示图示出SoC(或处理器)的一部分以及它与存储器 芯片的使用CAAB的交互(注意,数字没有重复,因此关于指示哪一个实 施例不会混淆)。如图所示,地址总线与数据总线一起被保护。该保护可 能有多种形式。在一些实施例中,地址总线使用AES-GCM计数器模式经 认证加密来加密,其中生成相关联的GHASH(MAC)以用于篡改抵抗。 利用这种方案,每当为读取或写入而将地址发送至存储器时,对地址进行 不同的加密(对应的密码之间没有关联性)。这防止对总线上存在什么地 址和/或何时在存储器请求中发送特定地址的任何知晓(从被动物理攻击者 的角度)。相关联的GHASH检测用于翻转位的任何地址篡改。为了防止 关键路径上的等待时间命中,在一些实施例中,预生成经加密的计数器流(例如,具有96位的计数器),并且一旦读取/写入请求到达,最终操作只 是具有相关联的截断的与地址的按位XOR操作。
在一些实施例中,CAAB只对地址总线进行完整性保护。利 用这种方案,安全保证较弱,但足以满足不同用例下的威胁模型/要求。在 几乎与上述最小等待时间开销相同的情况下,硬件复杂度较低。在该实施 例中,为地址值生成MAC(例如,GMAC/HMAC),并作为存储器总线上 的特殊的下一个周期的一部分发送该MAC。这检测任何地址位翻转,从而 防止由于丢弃的或误导的写入而导致的重放攻击。然而,它不能防御存储 器访问模式泄漏以及对特定地址何时作为存储器请求的一部分被发送的知 晓。
底部的示图示出SoC(或处理器)的一部分以及它与存储器 芯片的使用RR-树的交互(注意,数字没有重复,因此关于指示哪一个实 施例不会混淆)。注意,CAAB可以被使用(并且在该示图中被使用), 但在一些实施例中不被要求。CAAB地址总线保护为简单的硬件重放攻击 提供了高效的解决方案(这些硬件重放攻击可以使用地址总线上的单个位 的翻转来完成),并且也使地址总线上的访问模式模糊。RR-树帮助防止对 受保护的存储器的重放攻击,其中攻击者直接操纵存储器内容。作为示例, 攻击者可以在特定位置处记录数据行和相关联的MAC,并在稍后的时间点 重放该行和MAC。此类攻击需要比地址总线上的简单的位翻转高得多的复 杂度,地址总线上的简单的位翻转实现相同的最终结果,并受到CAAB保 护,并且因此在非常安全的设置中很可能对其感兴趣。存储器设备的DIMM 模块中的一个或多个DIMM模块存储RR-树(或RRT)331。RR-树的使用 涉及通过在每次写入时更新重放树来保持重放树处于最新状态,但是使控 制逻辑基于某个函数仅以概率或随机的方式来验证它。由于写入不在性能 关键路径上,因此在写入期间引发的用于保持重放树被更新的附加等待时 间和带宽不会导致任何显著的性能损失。此外,由于验证仅被随机地进行, 因此性能开销直接由验证的频率规定。
图4更详细地图示利用CAAB和/或RR-树的实施例。注意, 维持图3中所示的组件的编号。具体而言,存储器控制器303和控制逻辑 313的各方面被更详细地示出。
为了支持CAAB,存储器控制器303包括密码学电路单元 405(A)、认证电路单元408(A)和用于密钥406(A)的存储中的一个或多个, 并且/或者核401包括密码学电路单元405(B)、认证电路单元408(B)和用于 密钥406(B)的存储中的一个或多个。在一些实施例中,密码单元405实现 一种或多种密码算法,诸如电子密码本(ECB)、伽罗瓦-计数器模式(GCM)和/或密码块链接(CBC)模式下的高级加密标准(AES)算法。密码单元 405用于加密数据和/或地址总线。
在一些实施例中,认证电路单元406实现一种或多种散列算 法(例如,安全散列算法(SHA)、伽罗瓦散列(GHASH)算法等),生 成消息认证码(MAC)、认证标签或可用于认证或验证句柄的完整性的其 他数据,和/或执行任何其他认证功能,以提供除了加密之外的认证作为保 护机制。
为了对存储器地址总线上的地址进行密码保护,对应的实体 (即,存储器控制器303和控制逻辑313)需要共享用于加密/解密的密钥 (例如,128位或256位密钥),它们将密钥存储在密钥存储406和418 中。
存在提供这些密钥的多个选项。在一些实施例中,在引导时 存在密钥交换。例如,在引导阶段处,存储器控制器303和控制逻辑313 基于经认证的Diffie-Hellman协议交换密钥。为了实现这一点,两个实体都 需要具有公钥-私钥对。私钥将被融合在对应的组件制造中(减少层级的硬 件反向工程攻击不在范围内),并且持有公钥的证书(或证书链)在组件 验证期间也被提供到组件中。在一些实施例中,对于存储器控制器303,底 层核供应的证明和私钥组合被重新用于该交换。在一些实施例中,在启动 与对应的存储器模块的密钥交换之前,存储器控制器303经由安全边带通 信机制从核401获得必要的信息。
对于经认证的Diffie-Hellman协议,实际的密钥交换消息将 在引导阶段通过存储器总线在特殊周期中发生。图5图示经认证的Diffie-Hellman协议密钥交换的实施例。控制/命令表示由存储器控制器和智 能存储器模块(控制逻辑313)两者理解的“密钥交换活跃消息”。涉及发送 公钥、现时数(nonce)/挑战、确认等的实际消息通过数据总线执行。实际 的算法步骤可以在两个实体内部的硬件逻辑中或在微控制器中的固件中执 行。当使用微控制器时,这些模块内部的用于控制路径操作(如存储器芯 片中的刷新控制)的任何现有微控制器也可以重新用于密钥交换。经签名 的证书或证书链将基于已签名的证书链的可信度用于相互认证和证实。在 交换结束时,存储器控制器和存储器模块两者将具有共享密钥,该共享密 钥可用于地址总线保护。在每次引导时,该密钥将是不同的。
在一些实施例中,在制造/系统集成时使用静态密钥配置。在 一些实施例中,特别是在存储器控制器和存储器由同一供应商制造或至少 由同一供应商组装的封闭系统中,为了避免组件的硬件和/或固件变化以及 用于上述密钥交换的存储器总线协议的任何变化,共享密钥可以在生命周 期的早期被预编程到两个组件中。由于存储器控制器由CPU/SoC制造商拥 有,而存储器模块由存储器制造商拥有,CPU/SoC制造商和存储器制造商 通常是两个独立的实体,因此在过程中出现了复杂的情况。在一些实施例 中,在制造时,共同的系统集成商从相应的制造商获取CPU和存储器芯片 两者来建立系统,并且对于这些单元,通过使用密码和/或安全监管协议, 密钥将在两个拥有实体之间共享。它们将被安全地供应在相应的组件熔丝 中,然后被出售给系统集成商。在一些实施例中,系统集成商将共享密钥 编程在组件上。这将在组件的整个生命周期内保持。
对应于从核401或IO子系统到达存储器控制器303的每个读 取和写入请求,在地址总线上发出请求之前,物理地址值(例如,64位值) 在存储器控制器303处进行加密和完整性保护。在一些实施例中,使用密 码单元405和认证单元408中的一个或多个对相应的GHASH执行 AES-GCM经认证加密。在每次硬件重置时,对应的线性反馈移位寄存器 (LFSR)/计数器(96位)被重置。(每次引导时随机生成的)初始化向 量用于生成密码块的输入值。采用流水线式AES设计,在存储器控制器时 钟的每个周期可以生成经加密的计数器垫(128位)。在存储器读取和写入 请求通常不是在每个存储器控制器周期都到达的情况下,此类经加密的计 数器流可以被预生成并存储在缓冲器中。取决于在任何时间到达存储器控 制器303的读取/写入请求的最大突发尺寸,预生成的经加密计数器的数量 被设置,并且由此缓冲器深度被设置。在一些实施例中,认证单元408(A)、 密码单元405等是MK-TME引擎145的一部分。
因此,当任何读取或写入请求进入存储器控制器303中时, 64位经加密地址值是通过地址与下一预生成的计数器垫(counter pad)的 XOR操作(具有对应的64位计数器/密码截断)获得的。GHASH计算(例 如,涉及128位密码和2个伽罗瓦域乘法)也将引发最小附加等待时间。 取决于威胁模型,命令/控制总线值(读取/写入、长度等)可以用作GHASH 计算的输入中的“经认证的数据”。最终GHASH将被截断为与要被发送以用 于完整性保护的地址相同尺寸的位值(例如,用于64位地址的64位MAC)。
为了向存储器发送请求,经加密的地址与对应的数据一起被 发出。地址MAC(GHASH)在下一个总线周期被发送,其中命令/控制操 作码表示MAC传输。MAC可以通过地址总线(或数据总线)发送。
在一些实施例中,存储器控制器303维护已发送但未验证的 请求的记分牌,并且当接收到对未验证的请求中的一个的读取请求时,该 读取请求被缓冲在存储器控制器中,直到验证完成。如果验证未成功地完 成,则引发安全异常,并且可以采取特定动作。
图6图示使用CAAB的总线使用的实施例。如图所示,在每 个经加密的地址之后,下一个周期使用MAC传输命令发送用于该地址的 MAC。注意,数据总线可能也已经被使用。类似地,在每个经加密的读取 地址之后,MAC被发送。
该安全通信中的另一个主要组件是与存储器通道对应的存储 器设备311。与存储器控制器303类似,经加密的计数器流可以被预生成并 存储在存储器设备311内部以防止瓶颈。
为了减少MAC带宽开销,在一些实施例中,代替为每个读 取或写入访问发送地址MAC,对多个请求计算和跟踪(地址值的)运行 MAC,并且每‘X’次访问通过总线发送一次该MAC。‘X’的值可以由BIOS 或微代码在每次平台引导时经由型号专属寄存器(MSR)被编程在存储器 控制器中。存储器设备也通过专用通信经由存储器控制器被通知X的值。
图7图示用于使用CAAB的方法的实施例。在701处,存储 器控制器接收存储器访问请求。例如,读取或写入请求。无论请求的类型 如何,请求都包括地址。
在703处,存储器控制器对请求的地址进行加密(如上文所 讨论),并对经加密的请求生成MAC。注意,在一些实施例中,仅针对写 入对地址计算MAC。由于与典型程序的读取相比,写入的频率要低得多, 这将显著减少MAC传输的带宽命中。在只有写入的情况下,多个预生成的 计数器流的计算压力也很可能会降低。
在705处,存储器控制器然后在第一周期中发送请求,并且 在随后的周期中发送MAC。
在707处,接收方存储器设备试图验证所接收的MAC。在一 些实施例中,该验证通过由存储器设备对所接收的经加密地址生成MAC (GHASH)来执行。地址也被解密。在一些实施例中,地址值经由与序列 中的下一个有效计数器垫的XOR操作来解密。
在709处,作出MAC是否匹配(并且因此请求被验证为没 有完整性问题)的确定。只有在MAC匹配的情况下,请求才被送入/送出 存储器。作为优化,在一些实施例中,为了掩蔽MAC生成和比较,一旦地 址被解密,区块行选择操作(和/或行缓冲器比较)可以已经在进行中。
当MAC检查失败时,其表示一个或多个地址位在运输通过 存储器总线时被改变,并且在711处引发安全异常。对于读取请求,在来 自存储器模块的响应中设置表示地址总线修改的污染。对于具有地址总线 检查失败的写入请求,密钥被标记为无效或污染,对应的(和未来的)写 入被丢弃,并且所有进一步的读取请求响应与以上污染(利用附加信号以用于指示过去的地址总线篡改)一起被送回。这样做是因为在写入时,被 篡改的地址指示被丢弃或被误导的写入,并且按顺序的下一个请求可能是 到同一原始地址的读取请求,从而读取过期的值并且由此进行成功的硬件 重放。在一些实施例中,这通过使存储器设备311通过特殊的周期向存储 器控制器往回发送在写入请求中地址总线被篡改并且不再服务进一步的请 求的指示来实现。在接收到该特殊的周期时,存储器控制器303将记录特 殊的错误代码,使密钥无效,并且可选地引发机器校验异常以向软件通知 篡改。
当MAC检查成功时,在713处服务存储器请求。
在一些实施例中,为了给予用户以性能为代价智能地获得安 全性以及反之亦然的灵活性,通过编译器支持,程序可以枚举具有特定前 缀或操作码的新的加载/存储指令类型。这些加载/存储指示,如果对应的操 作是去往存储器以取出/写入,则地址总线必须被保护。这些可以是对存储 器的安全关键区域、或者程序想要保护的进程存储器的沙盒化区域的加载/ 存储。信号被携载通过高速缓存子系统、并且然后通过高速缓存归属代理 到存储器控制器,该信号指示这些读取/写入请求期望地址总线保护。存储 器控制器将通过前面提及的方案来保护这些请求的地址总线。为了消除对 其他程序的存储器带宽的影响,MAC将仅在存储器总线的在某个正常的仲 裁/QoS阈值内的空闲的特殊周期(在这些周期中在通道处没有未决的正常 读取/写入)中被插入。存储器总线上的信号被设置为指示读取/写入之后是 否会跟随它的MAC。由此,存储器模块将相应地决定对请求进行缓冲以防 止未经验证的读取/写入。
利用上文公开的CAAB地址总线保护,公开了用于可以通过 使用地址总线上的单个位的翻转来完成的简单的硬件重放攻击的高效的解 决方案,并且也使地址总线上的访问模式模糊。虽然这本身提出了进步, 但RR-树可用于防止对受保护的存储器的重放攻击,其中攻击者直接操纵 存储器内容。作为示例,攻击者可以在特定位置处记录数据行和相关联的 MAC,并在稍后的时间点重放该行和MAC。此类攻击需要比地址总线上的 简单的位翻转高得多的复杂度,地址总线上的简单的位翻转实现相同的最 终结果,并受到CAAB保护,并且因此在非常安全的设置中很可能对其感 兴趣。目前的解决方案需要在受保护的存储器上建立元数据树,并沿着树 的分支对树进行走查,以验证从存储器读取的数据的新鲜度。
图8图示示例性RR-树的实施例。在一些实施例中,RR-树 的根被存储在管芯上并形成信任根(即,信任边界)。高速缓存行(CL) 的版本是该计数器树结构的一部分。替代地,其他保护机制可以用于重放 保护。例如,与安全CL相关联的消息认证码(MAC)可以存储在管芯上。 存储与安全CL相关联的管芯上MAC的优势在于提高计算系统的安全性并 防御硬件和软件攻击。例如,当与安全CL相关联的MAC被存储在管芯上 时,成功的重放攻击将需要重放CL和其相关联的MAC两者。在示例中, 树建立在与受保护的CL相关联的VER(版本)之上。在该示例中,建立 在VER之上的树与前一级相比可以减少每一级的尺寸。
在一些实施例中,存储器311至少存储经加密的CL和安全 元数据。安全元数据包括VER和MAC CL以及L0至Ln-1计数器。在某些 实现方式中,对于移动到外部存储器311的每个数据行,与其相关联的MAC 值被存储。当数据行从外部存储器311被读取时,可以通过计算数据行的 MAC值并将所计算的MAC值与所存储的MAC值进行比较来验证其完整 性。可以通过存储数据行的版本(VER)进一步提供重放保护,每当数据 行被写回至外部存储器时,该版本被递增。在某些实现方式中,SoC 301 可以进一步包括高速缓存,该高速缓存可被用于透明地存储最近访问的 MAC和VER行的副本,使得可以更高效地满足对这些MAC和VER行的 未来请求。
例如,MEE 145使用对每个CL唯一的加密种子执行计数器 模式加密。加密种子是存储在受保护的存储器中的、由MEE 145用于加密 或解密CL的一组加密参数。在一个示例中,加密参数包括多个唯一加密密 钥和一个计数器。计数器被递增以为存储器中的不同CL或密码高速缓存块 (CCB)提供加密密钥的唯一种子。CCB是一组CL。在一个示例中,MEE 145可以使用加密种子以用于计数器模式加密。在另一示例中,MEE 145 可以使用加密种子以用于计数器模式解密。在一个实施例中,与写入主存 储器的数据的每个部分相关联的加密种子是唯一的。例如,加密密钥用于 对加密种子进行加密。在该示例中,每当数据被写入主存储器时,加密种 子是不同的,并且数据将被唯一地加密。当两个数据部分是相同的数据时, 当这两个数据部分被写入主存储器时,这两个数据部分中的每一个数据部 分被唯一地加密。
在另一示例中,加密参数包括空间参数和时间参数。空间上 唯一的参数可以是使用要被访问的CL或CCB的物理地址的参数。时间上 唯一参数可以是使用用作CL的版本(VER)的计数器的参数。例如,空间 参数是CL的物理位置,并且时间参数是基于CL的物理位置迭代通过一系 列数字的VER。VER与主存储器中的每个CL或CCB相关联。在一个实施 例中,一系列数字可以随着对存储器的每次写入而递增。例如,MEE可以 使用计数器,该计数器随着对存储器的每次写入而增加计数以迭代通过一 系列数字。在另一实施例中,使用加密种子生成的一系列数字可以是用于 加密或解密数据的一系列伪随机数字。在该示例中,加密种子是用于加密 和解密的迭代函数的输入,该迭代函数迭代通过不同CL的时间上唯一的参 数和空间上唯一的参数。
VER可以足够大以避免溢出,从而确保同一VER不被重新 使用。例如,VER可以是56位(b)的计数器。空间和时间唯一性的一个 优势在于,当相同的数据被写入存储器的不同位置时,每个数据条目被加 密成不同的密文。此外,通过将消息认证码(MAC)与每个CL相关联来 提供完整性,以确保当数据驻留在存储器中时,数据不能在不被检测到的 情况下被修改。在一个示例中,密码MAC的长度为56位以提供足够的安 全强度。
如图所示,示例性计数器树(RR-树)可以包括VER和MAC CL、元数据节点L0、L1和L2、以及顶级(例如,L3)计数器。每个MAC 可以与经加密的CL相关联。当经加密的CL被写回存储器311时,MAC 可以被更新以反映当前被存储在存储器311中的经加密的CL的内容的测量。当经加密的CL稍后从存储器被读取时,经加密的CL的内容可以被验 证,以确定它自上次使用MAC被加载以来还未被编辑。利用MAC的认证 防止在存储器311中时对经加密的CL的修改攻击以确保数据完整性。
VER是当经加密的CL上一次被存储在存储器311中时确定 的经加密的CL的基于计数器值的“版本”。每当经加密的CL被写回存储器 时,VER可以被增加。元数据节点L0、L1和L2可以包括计数器和基于计 数器的值计算的嵌入式MAC(eMAC)两者。eMAC可以使用来自树中下 一个更高级别的计数器作为输入来用公式表达。这可以继续到根或顶级的 L3计数器,它们可以安全地存储在处理设备中。
L3计数器可以不从处理设备被驱逐,并可以被保护以防止攻 击。每个节点L3、L2、L1和L0中的计数器可以充当接下来的级别的版本, 以VER或存储与经加密的CL对应的VER的MAC CL结束。当经加密的 CL被写入时,与经加密的CL对应的所有计数器(包括L3计数器和VER) 被更新。每个节点中的eMAC也被更新,因为eMAC是使用节点中的所有 计数器的值计算的。为了确保重放保护,当从存储器311加载时,经加密 的CL可以基于MAC来认证,MAC是利用VER来用公式表达的。VER可 以基于节点L0、L1和L2中的计数器一直到L3计数器来认证。不匹配可 以指示潜在的攻击,并且可以引发安全异常以击败潜在的攻击。
如图4所示,控制逻辑313和存储器控制器303中的一个或 多个包括负责维护RR-树的重放逻辑416或407。图9图示用于使用RR- 树的方法的实施例。
在901处,接收到存储器请求。该请求可以是读取或写入请 求,并且至少包括地址。该请求由重放逻辑416或407接收。
在903处作出对请求的类型的确定。对于写入请求,在905 处走查RR-树以更新RR-树。本文详述了此类走查的实施例。在一些实施 例中,当数据被加密并存储在存储器中(例如,作为经加密的CL)时,重 放树中的每个节点都被递增。例如,每个节点的所有计数器都被递增。在 另一实施例中,对于基于SoC的高速缓存,树走查可以停止而不爬到L3 并且不递增所有相关联的重放树级别。在一个示例中,对于读取请求,树 走查可以停止在高速缓存中已经存在的树级别。在另一示例中,对于写入 请求,当发现节点在高速缓存中处于已修改状态时,树走查可以停止。在 一个示例中,高速缓存中的每个节点L2、L1和L0可以维护用于指示该节 点是否被先前的请求写入的位。位可以被设置为指示高速缓存中的节点L2、L1或L0的副本已被修改。例如,节点L2、L1或L0可以由另一个加密请 求修改。处于已修改状态的高速缓存节点指示先前的写入已经更新了树中 的更高级别的节点,并且走查不需要继续到更高级别来递增节点。当经修 改的节点被驱逐出高速缓存时,eMAC被重新计算以反映被写回存储器的 最新数据。每个eMAC的计算都使用下一个更高级别中的计数器值,并且针对与eMAC对应的节点的内容计算eMAC。
当高速缓存中的经修改的节点被考虑时,必须遍历节点L2、 L1或L0,直到作出节点已经被修改的确定。从L0到L3的每个节点都可 以被遍历,以寻找高速缓存中已经被修改的版本。在一个示例中,当在树 走查期间节点不位于高速缓存中时,该节点可以从存储器被加载到高速缓 存中。在每个级别的遍历中,节点被递增。在另一示例中,当节点被确定为已修改时,在经修改的节点被递增后,树走查停止。当在高速缓存中未 发现经修改的节点时,在递增L3中的计数器后,树走查可以停止。当CL 被加密并写入存储器(例如,作为经加密的CL)时,eMAC可以被重新计 算。可以利用VER来重新计算eMAC。VER可以用于对数据加密作为经加 密的CL。然后,经加密的CL可以被存储在存储器中。
当请求是读取请求时,在一些实施例中,在907处生成与验 证阈值相同长度的随机数(N)。典型地,验证阈值是取决于使用RR-树的 环境由BIOS、OS或微代码编程的随机值。在每次读取请求时,实现RR- 树逻辑的逻辑生成随机数。如果生成的数字大于所编程的阈值,只有这时 才实行对传入的读取请求的验证,否则读取请求被简单地解密并返回给请求者。使用经随机化的阈值使得对存储器的重放攻击对攻击者来说是非确 定的。在一次访问时未被验证的相同的存储器位置在下一次访问时可以被 验证,增加了非确定性。注意,软件可以总是选择阈值为零。在这种情形 下,RR-树将去生成(de-generate)为正常的重放树,并在每次读取访问时 执行验证。软件还具有对进行验证的频率的控制。阈值越大将指示验证越 少,同样,阈值越小将指示验证频率越高。
在一些实施例中,验证阈值是用户可配置的。具体而言,可 以执行单条指令来设置验证阈值。单条指令的示例是SETRPTHLD SRC指 令。在此,操作码(由操作码助记符示出)用于指示执行电路用于设置由 源(SRC)指示的验证阈值,该源可以是存储验证阈值的寄存器、存储验 证阈值的存储器位置、和/或编码验证阈值的立即数。在一些实施例中,指 令是以封装为范围的,并且因此期望软件对平台上的封装中的每一个封装 执行该指令。指令在封装上的存储器加密引擎中的每一个存储器加密引擎 上对阈值进行编程(在大多数常见的实现方式中,每个存储器通道一个阈 值)。
在一些实施例中,不执行907和909的动作。相反,以不同 的方式确定是否执行树走查的确定。示例性方式包括但不限于:使用奇/偶 请求(其中服务奇数编号或偶数编号的请求中的一者),每X个请求检查 一次,在请求之间的设定时间量已经过去后检查请求,等等。
当所生成的数字不大于验证阈值时,在911处跳过任何树走 查或重放检查。请求被服务。
当所生成的数字大于验证阈值时,在913处执行完整的树走 查,并对读取请求的新鲜度进行验证。在一些实施例中,树走查可以包括 将L0、L1和/或L2加载到MEE高速缓存中以用于认证与经加密的CL对 应的VER。树走查可以以MEE高速缓存被检查以确定VER是否存在开始。 当VER和MAC CL、L0、L1或L2在MEE高速缓存中存在时,节点已经 被认证。例如,节点在针对经加密的CL的之前的树走查中已经被认证,对 应于另一个经加密的CL。当节点已经被认证时,树走查可以停止。
在一个实施例中,当VER已经存在于MEE高速缓存中时, 则可以使用VER来验证MAC。在一个示例中,当MAC被验证时,可以进 行对经加密的CL的解密。在另一示例中,当VER尚未在MEE高速缓存 中存在时,则树走查可以继续,并且VER和MAC CL可以被认证。认证可以包括针对VER和MAC CL计算MAC,并将新计算的MAC与VER和 MAC eMAC进行比较。在一个示例中,MAC驻留在VER和MAC CL中并 保护经加密的CL。在另一示例中,VER和MAC eMAC保护VER和MAC CL。
在一个实施例中,VER和MAC CL的MAC可以使用密码过 程来计算,其中可以基于VER和MAC CL的地址生成经加密的值。当生成 经加密的值时,然后通过利用VER和MAC CL中的所有计数器值对密码值 进行散列来生成L0节点中的计数器的计数器值、AES密钥和MAC值。在 一个示例中,当VER和MAC CL的MAC与VER和MAC eMAC匹配时, VER和MAC CL可能是真实的。在另一示例中,当MAC与VER和MAC eMAC不匹配时,则安全异常可以发生。安全异常包括任何与安全有关的 操作,该操作进行干预以防止电子设备的安全受到损害。例如,安全异常 可以停止对经加密的CL的MEE加密和/或解密操作,限制对存储器311中 的受保护的存储器空间的访问,或通知电子设备的其他系统。
在一个实施例中,当L0计数器值用于计算VER和MAC CL 的MAC时,MEE确定L0是否已经被加载到MEE高速缓存中。当L0已 经在高速缓存中时,则L0被验证,并且树走查可以停止。当L0还没有在 高速缓存中时,L0被验证。在一个示例中,通过利用来自L1的计数器值计算L0的MAC来验证L0。当新计算的MAC值与L0 eMAC匹配时,则 L0可以被认为是真实的。当新计算的MAC与L0 eMAC不匹配时,则安全 异常可以发生。
上文详述的实施例可以在许多不同的架构和系统中利用。下 文详述示例性架构、系统、处理器等的示例。
示例性计算机架构
下文详述示例性计算机架构的描述。本领域中已知的对膝上 型设备、台式机、手持式PC、个人数字助理、工程工作站、服务器、网络 设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图 形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放 器、手持式设备以及各种其他电子设备的其他系统设计和配置也是合适的。 一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样 的系统或电子设备一般都是合适的。
图10图示示例性系统的实施例。多处理器系统1000是点对 点互连系统,并且包括多个处理器,多个处理器包括经由点对点互连1050 耦合的第一处理器1070和第二处理器1080。在一些实施例中,第一处理器 1070和第二处理器1080是同构的。在一些实施例中,第一处理器1070和 第二处理器1080是异构的。
处理器1070和1080示出为分别包括集成存储器控制器 (IMC)单元电路1072和1082。处理器1070还包括作为其互连控制器单 元的一部分的点对点(P-P)接口1076和1078;类似地,第二处理器1080 包括P-P接口1086和1088。处理器1070、1080可以经由使用点对点(P-P) 接口电路1078、1088的P-P互连1050来交换信息。IMC 1072和1082将 处理器1070、1080耦合到相应的存储器,即存储器1032和存储器1034, 这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1070、1080可各自经由使用点对点接口电路1076、 1094、1086和1098的各个P-P互连1052和1054与芯片组1090交换信息。 芯片组1090可以任选地经由高性能接口1092来与协处理器1038交换信息。 在一些实施例中,协处理器1038是专用处理器,诸如例如,高吞吐量MIC 处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处 理器,等等。
共享高速缓存(未示出)可被包括在任一处理器1070、1080 中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如 果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信 息可被存储在共享高速缓存中。
芯片组1090可以经由接口1096耦合到第一互连1016。在一 些实施例中,第一互连1016可以是外围组件互连(PCI)互连或诸如PCI 快捷互连或另一I/O互连之类的互连。在一些实施例中,互连中的一个互 连耦合到功率控制单元(PCU)1017,功率控制单元1017可以包括用于执 行与处理器1070、1080和/或协处理器1038有关的功率管理操作的电路、 软件和/或固件。PCU 1017将控制信息提供给电压调节器,以使电压调节器 生成适当的经调节的电压。PCU 1017还提供控制信息以控制所生成的操作 电压。在各实施例中,PCU 1017可包括用于执行基于硬件的功率管理的各 种功率管理逻辑单元(电路)。此类功率管理可以完全由处理器控制(例 如,由各种处理器硬件控制,并且其可以由工作负载和/或功率、热约束或 其他处理器约束触发),并且/或者功率管理可以响应于外部源(诸如,平 台或管理功率源或系统软件)而被执行。
PCU 1017被图示为作为与处理器1070和/或处理器1080分 开的逻辑存在。在其他情形下,PCU 1017可以在处理器1070或1080的核 中的给定的一个或多个核(未示出)上执行。在一些情况下,可将PCU 1017 实现为被配置成用于执行其自身的专用功率管理代码(有时被称为P代码) 的(专用的或通用的)微控制器或其他控制逻辑。在另外的其他实施例中, 将由PCU 1017执行的功率管理操作可在处理器外部实现,诸如,通过分开 的功率管理集成电路(PMIC)或处理器外部的另一组件的方式。在另外的 其他实施例中,将由PCU 1017执行的功率管理操作可在BIOS或其他系统 软件内实现。
各种I/O设备1014可连同互连(总线)桥1018耦合至第一 互连1016,互连桥1018将第一互连1016耦合至第二互连1020。在一些实 施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例 如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列(FPGA) 或任何其他处理器的一个或多个附加处理器1015耦合到第一互连1016。在 一些实施例中,第二互连1020可以是低引脚数(LPC)互连。各种设备可 以耦合到第二互连1020,包括例如,键盘和/或鼠标1022、通信设备1027 和存储单元电路1028。在一些实施例中,存储单元电路1028可以是可以包 括指令/代码和数据1030的盘驱动器或其他大容量存储设备。此外,音频 I/O 1024可被耦合至第二互连1020。注意,与上述点对点架构不同的其他 架构是可能的。例如,代替点对点架构,诸如多处理器系统1000之类的系 统可以实现多分支互连或其他此类架构。
示例性核架构、处理器和计算机架构
处理器核能以不同方式、出于不同的目的、在不同的处理器 中实现。例如,此类核的实现方式可以包括:1)旨在用于通用计算的通用 有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图 形和/或科学(吞吐量)计算的专用核。不同处理器的实现方式可包括:1) CPU,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括旨在主要用于 图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不 同的计算机系统架构,这些计算机系统架构可包括:1)在与CPU分开的 芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处 理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科 学(吞吐量)逻辑);以及4)芯片上系统,其可以将所描述的CPU(有 时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器 和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性 处理器和计算机架构。
图11图示可具有多于一个的核、可具有集成存储器控制器、 并且可具有集成图形器件的处理器1100的实施例的框图。实线框图示具有 单个核1102A、系统代理1110、一个或多个互连控制器单元电路的集合1116 的处理器1100,而虚线框的任选增加图示具有多个核1102(A)-(N)、系统代 理单元电路1110中的一个或多个集成存储器控制器单元电路的集合1114、 和专用逻辑1108、以及一个或多个互连控制器单元电路的集合1116的替代 处理器1100。注意,处理器1100可以是图10的处理器1070或1080、或 协处理器1038或1015中的一个。
因此,处理器1100的不同实现方式可包括:1)CPU,其中 专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个 核,未示出),并且核1102(A)-(N)是一个或多个通用核(例如,通用有序 核、通用乱序核、或这两者的组合);2)协处理器,其中核1102(A)-(N) 是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理 器,其中核1102(A)-(N)是大量通用有序核。因此,处理器1100可以是通 用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩 引擎、图形处理器、GPGPU(通用图形处理单元电路)、高吞吐量的集成 众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。处理器可以被实现在一个或多个芯片上。处理器1100可以是一个或多个基板 的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或 NMOS)中的任何技术被实现在一个或多个基板上。
存储器层级结构包括核1102(A)-(N)内的一个或多个级别的 高速缓存单元电路1104(A)-(N)、一个或多个共享高速缓存单元电路的集合 1106、以及耦合至集成存储器控制器单元电路的集合1114的外部存储器(未 示出)。一个或多个共享高速缓存单元电路的集合1106可包括一个或多个 中间级别的高速缓存(诸如第二级(L2)、第三级(L3)、第四级(L4)) 或其他级别的高速缓存(诸如末级高速缓存(LLC))和/或以上各项的组 合。尽管在一些实施例中,基于环的互连网络电路1112将专用逻辑1108 (例如,集成图形逻辑)、共享高速缓存单元电路的集合1106以及系统代 理单元电路1110互连,但替代实施例使用任何数量的公知技术来将这些单 元互连。在一些实施例中,维持共享高速缓存单元电路1106和核1102(A)-(N) 中的一个或多个之间的一致性。
在一些实施例中,核1102(A)-(N)中的一个或多个能够实现多 线程化。系统代理单元电路1110包括协调和操作核1102(A)-(N)的那些组 件。系统代理单元电路1110可包括例如功率控制单元(PCU)电路和/或显 示单元电路(未示出)。PCU可以是对核1102(A)-(N)和/或专用逻辑1108 (例如,集成图形逻辑)的功率状态进行调节所需的逻辑和组件,或可包 括这些逻辑和组件。显示单元电路用于驱动一个或多个外部连接的显示器。
核1102(A)-(N)在架构指令集方面可以是同构的或异构的; 即,核1102(A)-(N)中的两个或更多个核可能能够执行相同的指令集,而其 他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性核架构
有序和乱序核框图
图12(A)是图示根据实施例的示例性有序流水线以及示例性 寄存器重命名的乱序发布/执行流水线两者的框图。图12(B)是图示根据实 施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器 重命名的乱序发布/执行架构核两者的框图。图12(A)-图12(B)中的实线框 图示有序流水线和有序核,而任选增加的虚线框图示寄存器重命名的、乱 序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序 方面。
在图12(A)中,处理器流水线1200包括取出级1202、可选的 长度解码级1204、解码级1206、可选的分配级1208、可选的重命名级1210、 调度(也称为分派或发布)级1212、可选的寄存器读取/存储器读取级1214、 执行级1216、写回/存储器写入级1218、可选的异常处置级1222、以及可 选的提交级1224。一个或多个操作可以在这些处理器流水线级中的每一级 中执行。例如,在取出级1202期间,从指令存储器取出一条或多条指令, 在解码级1206期间,可以对所取出的一条或多条指令进行解码,可以生成 使用所转发的寄存器端口的地址(例如,加载存储单元(LSU)地址), 并且可以执行分支转发(例如,立即数偏移或链接寄存器(LR))。在一 个实施例中,解码级1206和寄存器读取/存储器读取级1214可以组合成一个流水线级。在一个实施例中,在执行级1216期间,可以执行经解码的指 令,可以执行LSU地址/数据流水线到高级微控制器总线(AHB)接口,可 以执行乘法和加法操作,可以执行具有分支结果的算术操作,等等。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可如 下所述地实现流水线1200:1)指令取出1238执行取出级1202和长度解码 级1204;2)解码单元电路1240执行解码级1206;3)重命名/分配器单元 电路1252执行分配级1208和重命名级1210;4)(多个)调度器单元电路 1256执行调度级1212;5)(多个)物理寄存器堆单元电路1258和存储器 单元电路1270执行寄存器读取/存储器读取级1214;执行集群1260执行执 行级1216;6)存储器单元电路1270和(多个)物理寄存器堆单元电路1258 执行写回/存储器写入级1218;7)各单元(单元电路)可牵涉到异常处置 级1222;以及8)引退单元电路1254和(多个)物理寄存器堆单元电路1258 执行提交级1224。
图12(B)示出处理器核1290,处理器核1290包括耦合到执行 引擎单元电路1250的前端单元电路1230,并且两者耦合到存储器单元电路 1270。核1290可以是精简指令集计算(RISC)核、复杂指令集计算(CISC) 核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核 1290可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、 通用计算图形处理单元(GPGPU)核、图形核,等等。
前端单元电路1230可包括耦合至指令高速缓存单元电路 1234的分支预测单元电路1232,该指令高速缓存单元电路1234耦合至指 令转换后备缓冲器(TLB)1236,该指令转换后备缓冲器1236耦合至指令 取出单元电路1238,该指令取出单元电路1238耦合至解码单元电路1240。 在一个实施例中,指令高速缓存单元电路1234被包括在存储器单元电路1270中,而不是在前端单元电路1230中。解码单元电路1240(或解码器) 可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指 令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、 其他指令、或其他控制信号作为输出。解码单元电路1240可进一步包括地 址生成单元电路(AGU,未示出)。在一个实施例中,AGU使用所转发的寄存器端口生成LSU地址,并且可以进一步执行分支转发(例如,立即数 偏移分支转发、LR寄存器分支转发等)。解码单元电路1240可使用各种 不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、 可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例 中,核1290包括存储用于某些宏指令的微代码的微代码ROM(未示出) 或其他介质(例如,在解码单元电路1240中,或以其他方式在前端单元电 路1230内)。在一个实施例中,解码单元电路1240包括微操作(micro-op) 或操作高速缓存(未示出)以保持/高速缓存在处理器流水线1200的解码级 或其他级期间生成的经解码的操作、微标签或微操作。解码单元电路1240 可耦合到执行引擎单元电路1250中的重命名/分配器单元电路1252。
执行引擎电路1250包括重命名/分配器单元电路1252,该重 命名/分配器单元电路1252耦合到引退单元电路1254和一个或多个调度器 电路的集合1256。(多个)调度器电路1256表示任意数量的不同调度器, 包括预留站、中央指令窗口等。在一些实施例中,(多个)调度器电路1256 可以包括算术逻辑单元(ALU)调度器/调度电路、ALU队列、算术生成单元(AGU)调度器/调度电路、AGU队列,等等。(多个)调度器电路1256 耦合到(多个)物理寄存器堆电路1258。(多个)物理寄存器堆电路1258 中的每个物理寄存器堆电路表示一个或多个物理寄存器堆,其中不同的物 理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、 紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的 下一条指令的地址的指令指针)等。在一个实施例中,(多个)物理寄存 器堆单元电路1258包括向量寄存器单元电路、写掩码寄存器单元电路和标 量寄存器单元电路。这些寄存器单元可以提供架构向量寄存器、向量掩码 寄存器、通用寄存器等。(多个)物理寄存器堆单元电路1258由引退单元 电路1254(也称为引退队列)重叠,以图示可实现寄存器重命名和乱序执 行的各种方式(例如,使用(多个)重排序缓冲器(ROB)和(多个)引 退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器和(多个)引 退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元电路1254和 (多个)物理寄存器堆电路1258耦合到(多个)执行集群1260。(多个) 执行集群1260包括一个或多个执行单元电路的集合1262以及一个或多个 存储器访问电路的集合1264。执行单元电路1262可执行各种算术、逻辑、 浮点或其他类型的操作(例如,移位、加法、减法、乘法)并可对各种数 据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点) 执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单 元或执行单元电路,但是其他实施例可包括仅一个执行单元电路或全都执 行所有功能的多个执行单元/执行单元电路。(多个)调度器电路1256、(多 个)物理寄存器堆单元电路1258和(多个)执行集群1260示出为可能有 多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如, 标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线, 和/或各自具有其自身的调度器电路、(多个)物理寄存器堆单元电路和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情 况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元电路 1264的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些 流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序 的。
在一些实施例中,执行引擎单元电路1250可以执行加载存储 单元(LSU)地址/数据流水线到高级微控制器总线(AHB)接口(未示出)、 以及地址分阶段和写回、数据分阶段加载、存储和分支。
存储器访问电路的集合1264耦合到存储器单元电路1270, 该存储器单元电路1270包括数据TLB单元电路1272,该数据TLB单元电 路1272耦合到数据高速缓存电路1274,该数据高速缓存电路1274耦合到 第二级(L2)高速缓存电路1276。在一个示例性实施例中,存储器访问单 元电路1264可包括加载单元电路、存储地址单元电路和存储数据单元电路,其中的每一个均耦合至存储器单元电路1270中的数据TLB电路1272。指 令高速缓存电路1234还耦合到存储器单元电路1270中的第二级(L2)高 速缓存单元电路1276。在一个实施例中,指令高速缓存1234和数据高速缓 存1274被组合为L2高速缓存单元电路1276、第三级(L3)高速缓存单元 电路(未示出)和/或主存储器中的单个指令和数据高速缓存(未示出)。L2高速缓存单元电路1276耦合到一个或多个其他级别的高速缓存,并最 终耦合到主存储器。
核1290可支持一个或多个指令集(例如,x86指令集(具有 已与较新版本一起添加的一些扩展);MIPS指令集;ARM指令集(具有 诸如NEON的任选的附加扩展)),其中包括本文中描述的(多条)指令。 在一个实施例中,核1290包括用于支持紧缩数据指令集扩展(例如,AVX1、 AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操 作。
示例性(多个)执行单元电路
图13图示(多个)执行单元电路的实施例,诸如图12(B)的 (多个)执行单元电路1262。如图所示,(多个)执行单元电路1262可以 包括一个或多个ALU电路1301、向量/SIMD单元电路1303、加载/存储单 元电路1305、和/或分支/跳转单元电路1307。ALU电路1301执行整数算 术和/或布尔运算。向量/SIMD单元电路1303对紧缩数据(诸如SIMD/向 量寄存器)执行向量/SIMD操作。加载/存储单元电路1305执行加载和存储 指令,以将数据从存储器加载到寄存器中或将数据从寄存器存储到存储器。 加载/存储单元电路1305也可以生成地址。分支/跳转单元电路1307取决于 指令而引起到存储器地址的分支或跳转。浮点单元(FPU)电路1309执行 浮点算术。(多个)执行单元电路1262的宽度取决于实施例而变化,并且 范围可以从16位到1024位。在一些实施例中,两个或更多个较小的执行 单元在逻辑上被组合以形成较大的执行单元(例如,两个128位执行单元 在逻辑上被组合以形成256位执行单元)。
示例性寄存器架构
图14是根据一些实施例的寄存器架构1400的框图。如图所 示,存在向量/SIMD寄存器1410,其宽度从128位到1024位变化。在一些 实施例中,向量/SIMD寄存器1410在物理上是512位的,并且取决于映射, 只有较低位中的一些位被使用。例如,在一些实施例中,向量/SIMD寄存 器1410是512位的ZMM寄存器:较低的256位用于YMM寄存器,并且 较低的128位用于XMM寄存器。由此,存在寄存器的叠加。在一些实施 例中,向量长度字段在最大长度与一个或多个其他较短长度之间进行选择, 其中每个此类较短长度是前一长度的一半长度。标量操作是对 ZMM/YMM/XMM寄存器中的最低阶数据元素位置执行的操作;取决于实 施例,较高阶数据元素位置保持与在指令之前相同或者被归零。
在一些实施例中,寄存器架构1400包括写掩码/断言寄存器 1415。例如,在一些实施例中,存在8个写掩码/断言寄存器(有时称为k0 到k7),它们的尺寸各自为16位、32位、64位或128位。写掩码/断言寄 存器1415可以允许合并(例如,允许目的地中的任何元素集合在任何操作 的执行期间免于更新)和/或归零(例如,归零向量掩码允许目的地中的任 何元素集合在任何操作的执行期间被归零)。在一些实施例中,给定的写 掩码/断言寄存器1415中的每个数据元素位置对应于目的地的数据元素位 置。在其他实施例中,写掩码/断言寄存器1415是可缩放的,并由给定向量 元素的设定数量个启用位组成(例如,每个64位向量元素有8个启用位)。
寄存器架构1400包括多个通用寄存器1425。这些寄存器可 以是16位、32位、64位等,并且可用于标量操作。在一些实施例中,这 些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及 R8到R15来引用。
在一些实施例中,寄存器架构1400包括标量浮点寄存器1445,标量浮点寄存器1445用于使用x87指令集扩展的对32/64/80位浮点 数据的标量浮点操作,或者作为MMX寄存器对64位紧缩整数数据执行操 作,以及用于为在MMX和XMM寄存器之间执行的一些操作保存操作数。
一个或多个标志寄存器1440(例如,EFLAGS,RFLAGS等) 存储用于算术、比较和系统操作的状态和控制信息。例如,一个或多个标 志寄存器1440可以存储条件代码信息,诸如进位、奇偶性、辅助进位、零、 符号和溢出。在一些实施例中,一个或多个标志寄存器1440被称为程序状 态和控制寄存器。
段寄存器1420包含用于访问存储器的段点。在一些实施例 中,这些寄存器通过名称CS、DS、SS、ES、FS和GS来引用。
机器专用寄存器(MSR)1435控制和报告处理器性能。大多 数MSR 1435处置与系统有关的功能,并且不可由应用程序访问。机器校 验寄存器1460由控制、状态和错误报告MSR组成,这些MSR用于检测和 报告硬件错误。
一个或多个指令指针寄存器1430存储指令指针值。(多个) 控制寄存器1455(例如,CR0-CR4)确定处理器(例如,处理器1070、1080、 1038、1015和/或1100)的操作模式和当前执行的任务的特性。调试寄存器 1450控制并允许监控处理器或核的调试操作。
存储器管理寄存器1465指定用于受保护模式存储器管理的 数据结构的位置。这些寄存器可以包括GDTR、IDRT、任务寄存器和LDTR 寄存器。
替代实施例可以使用更宽的或更窄的寄存器。另外,替代实 施例可以使用更多、更少或不同的寄存器堆和寄存器。
指令集
指令集架构(ISA)可包括一种或多种指令格式。给定的指 令格式可定义各种字段(例如,位的数量、位的位置)以指定要执行的操 作(例如,操作码)以及将对其执行该操作的(多个)操作数和/或(多个) 其他数据字段(例如,掩码),等等。通过指令模板(或子格式)的定义 来进一步分解一些指令格式。例如,可将给定指令格式的指令模板定义为 具有该指令格式的字段(所包括的字段通常按照相同顺序,但是至少一些 字段因为较少的字段被包括而具有不同的位的位置)的不同子集,和/或定 义为具有以不同方式进行解释的给定字段。由此,ISA的每一条指令使用 给定的指令格式(并且如果被定义,则按照该指令格式的指令模板中的给 定的一个指令模板)来表达,并包括用于指定操作和操作数的字段。例如, 示例性ADD(加法)指令具有特定的操作码和指令格式,该特定的指令格 式包括用于指定该操作码的操作码字段和用于选择操作数(源1/目的地以 及源2)的操作数字段;并且该ADD指令在指令流中出现将使得在操作数 字段中具有选择特定操作数的特定的内容。
示例性指令格式
本文中所描述的(多条)指令的实施例能以不同格式来具体 化。此外,在下文中详述示例性系统、架构和流水线。(多条)指令的实 施例可在此类系统、架构和流水线上执行,但是不限于详述的那些系统、 架构和流水线。
图15图示指令格式的实施例。如图所示,指令可以包括多个 组分,包括但不限于用于以下各项的一个或多个字段:一个或多个前缀 1501,操作码1503,寻址信息1505(例如,寄存器标识符、存储器寻址信 息等),位移值1507,和/或立即数1509。注意,一些指令利用格式中的一 些或全部字段,而其他指令可能仅使用用于操作码1503的字段。在一些实施例中,图示的顺序是这些字段要被编码的顺序,然而,应当理解,在其 他实施例中,这些字段可以以不同的顺序被编码、组合等。
(多个)前缀字段1501在使用时对指令进行修改。在一些实 施例中,一个或多个前缀用于重复串指令(例如,0xF0、0xF2、0xF3等), 提供分段超控(例如,0x2E、0x36、0x3E、0x26、0x64、0x65、0x2E、0x3E 等),执行总线锁定操作,和/或改变操作数(例如,0x66)和地址尺寸(例 如,0x67)。某些指令需要强制性前缀(例如,0x66、0xF2、0xF3等)。 这些前缀中的某些前缀可能被认为是“传统”前缀。在本文中详述其一个或 多个示例的其他前缀指示和/或提供进一步的能力,诸如指定特定寄存器等。 其他前缀通常在“传统”前缀之后。
操作码字段1503用于至少部分地定义在对指令的解码时要 执行的操作。在一些实施例中,在操作码字段1503中编码的主操作码的长 度为1、2或3字节。在其他实施例中,主操作码可以是不同的长度。附加 的3位操作码字段有时被编码在另一个字段中。
寻址字段1505用于寻址指令的一个或多个操作数,诸如存储 器或一个或多个寄存器中的位置。图16图示寻址字段1505的实施例。在 该图示中,示出可选的Mod R/M字节1602和可选的比例、索引、基址(SIB) 字节1604。Mod R/M字节1602和SIB字节1604用于编码指令的多达两个 操作数,其中每一个是直接的寄存器或有效的存储器地址。注意,这些字段中的每一个都是可选的,因为并非所有的指令都包括这些字段中的一个 或多个。MOD R/M字节1602包括MOD字段1642、寄存器字段1644、和 R/M字段1646。
MOD字段1642的内容将存储器访问模式和非存储器访问模 式区分开。在一些实施例中,当MOD字段1642的值为b11时,利用寄存 器直接寻址模式,否则使用寄存器间接寻址。
寄存器字段1644可以编码目的地寄存器操作数或源寄存器 操作数,或者可以编码操作码扩展而不用于编码任何指令操作数。寄存器 索引字段1644的内容直接地或通过地址生成来指定源或目的地操作数的位 置(在寄存器中或在存储器中)。在一些实施例中,寄存器字段1644利用 来自前缀(例如,前缀1501)的附加位来补充以允许更大的寻址。
R/M字段1646可用于编码引用存储器地址的指令操作数, 或者可用于编码目的地寄存器操作数或源寄存器操作数。注意,在一些实 施例中,R/M字段1646可与MOD字段1642组合以指示寻址模式。
SIB字节1604包括比例字段1652、索引字段1654和基址字 段1656以用于地址的生成。比例字段1652指示比例因数。索引字段1654 指定要使用的索引寄存器。在一些实施例中,索引字段1654利用来自前缀 (例如,前缀1501)的附加位来补充以允许更大的寻址。基址字段1656 指定要使用的基址寄存器。在一些实施例中,基址字段1656利用来自前缀 (例如,前缀1501)的附加位来补充以允许更大的寻址。在实践中,比例 字段1652的内容允许对索引字段1654的内容进行缩放以用于存储器地址 生成(例如,用于使用2比例*索引+基址的地址生成)。
一些寻址形式利用位移值来生成存储器地址。例如,可以根 据2比例*索引+基址+位移、索引*比例+位移、r/m+位移、指令指针(RIP/EIP) +位移、寄存器+位移等生成存储器地址。位移可以是1字节、2字节、4字 节等的值。在一些实施例中,位移字段1507提供该值。此外,在一些实施 例中,在寻址字段1505的MOD字段中编码位移因数使用,其指示压缩的 位移方案,对于该方案,通过将disp8与基于向量长度、B的值和指令的输 入元素尺寸确定的比例因数N相乘来计算位移值。位移值被存储在位移字 段1507中。
在一些实施例中,立即数字段1509指定指令的立即数。立即 数可以被编码为1字节的值、2字节的值、4字节的值,等等。
图17图示第一前缀1501(A)的实施例。在一些实施例中,第 一前缀1501(A)是REX前缀的实施例。使用该前缀的指令可以指定通用寄 存器、64位紧缩数据寄存器(例如,单指令多数据(SIMD)寄存器或向量 寄存器)、和/或控制寄存器和调试寄存器(例如,CR8-CR15和DR8-DR15)。
取决于格式,使用第一前缀1501(A)的指令可以使用3位字 段指定多达三个寄存器:1)使用Mod R/M字节1602的reg字段1644和 R/M字段1646;2)使用Mod R/M字节1602与SIB字节1604,包括使用 reg字段1644和基址字段1656和索引字段1654;或者3)使用操作码的寄 存器字段。
在第一前缀1501(A)中,位位置7:4被设置为0100。位位置3 (W)可用于确定操作数尺寸,但可能不能单独确定操作数宽度。由此, 当W=0时,操作数尺寸由代码段描述符(CS.D)确定,并且当W=1时, 操作数尺寸为64位。
请注意,添加另一个位允许寻址16(24)个寄存器,而单独 的MOD R/M reg字段1644和MOD R/M R/M字段1646各自只能寻址8个 寄存器。
在第一前缀1501(A)中,位位置2(R)可以是MOD R/M reg 字段1644的扩展,并且当该字段编码通用寄存器、64位紧缩数据寄存器(例 如,SSE寄存器)、或控制或调试寄存器时,可用于修改ModR/M reg字段 1644。当Mod R/M字节1602指定其他寄存器或定义扩展操作码时,R被 忽略。
位位置1(X)X位可以修改SIB字节索引字段1654。
位位置B(B)-位可以修改Mod R/M R/M字段1646或SIB 字节基址字段1656中的基址;或者其可以修改用于访问通用寄存器(例如, 通用寄存器1425)的操作码寄存器字段。
图18(A)-图18(D)图示如何使用第一前缀1501(A)的R、X和 B字段的实施例。图18(A)图示当SIB字节1604不用于存储器寻址时,来 自第一前缀1501(A)的R和B用于扩展MODR/M字节1602的reg字段1644 和R/M字段1646。图18(B)图示当SIB字节1604未被使用时(寄存器-寄 存器寻址),来自第一前缀1501(A)的R和B用于扩展MOD R/M字节1602 的reg字段1644和R/M字段1646。图18(C)图示当SIB字节1604用于存 储器寻址时,来自第一前缀1501(A)的R、X和B用于扩展MOD R/M字节 1602的reg字段1644以及索引字段1654和基址字段1656。图18(D)图示 当寄存器被编码在操作码1503中时,来自第一前缀1501(A)的B用于扩展 MOD R/M字节1602的reg字段1644。
图19(A)-图19(B)图示第二前缀1501(B)的实施例。在一些实 施例中,第二前缀1501(B)是VEX前缀的实施例。第二前缀1501(B)编码允 许指令具有多于两个操作数,并允许SIMD向量寄存器(例如,向量/SIMD 寄存器1410)长于64位(例如,128位和256位)。第二前缀1501(B)的 使用提供了三操作数(或更多操作数)的语法。例如,先前的两操作数指 令执行诸如A=A+B之类的操作,其覆写源操作数。第二前缀1501(B)的 使用使操作数能执行非破坏性操作,诸如A=B+C。
在一些实施例中,第二前缀1501(B)有两种形式——两字节形 式和三字节形式。两字节的第二前缀1501(B)主要用于128位、标量和一些256位指令;而三字节的第二前缀1501(B)提供了对第一前缀1501(A)和3 字节操作码指令的紧凑替换。
图19(A)图示两字节形式的第二前缀1501(B)的实施例。在一 个示例中,格式字段1901(字节0 1903)包含值C5H。在一个示例中,字 节1 1905包括位[7]中的“R”值。该值是第一前缀1501(A)的相同值的补码。 位[2]用于指示向量的长度(L)(其中值0是标量或128位向量,而值1 是256位向量)。位[1:0]提供操作码的扩展性,相当于一些传统前缀(例 如,00=无前缀,01=66H,10=F3H,并且11=F2H)。位[6:3]示出为 vvvv,可用于:1)编码第一源寄存器操作数,以反转(1补码)的形式指 定,并且对具有2个或更多个源操作数的指令有效;2)编码目的地寄存器 操作数,以1补码的形式指定,用于某些向量移位;或者3)不编码任何操 作数,字段被保留,并且应当包含某个值,诸如1111b。
使用该前缀的指令可以使用Mod R/M R/M字段1646来编码 引用存储器地址的指令操作数,或者编码目的地寄存器操作数或源寄存器 操作数。
使用该前缀的指令可以使用Mod R/M reg字段1644来编码目 的地寄存器操作数或源寄存器操作数,被视为操作码扩展并且不用于编码 任何指令操作数。
对于支持四个操作数的指令语法,vvvv、Mod R/M R/M字段 1646和Mod R/M reg字段1644编码四个操作数中的三个操作数。然后,立 即数1509的位[7:4]用于编码第三源寄存器操作数。
图19(B)图示三字节形式的第二前缀1501(B)的实施例。在一 个示例中,格式字段1911(字节0 1913)包含值C4H。字节1 1915包括位 [7:5]中的“R”、“X”和“B”,它们是第一前缀1501(A)的相同值的补码。字节 1 1915的位[4:0](示出为mmmmm)包括用于根据需要编码一个或多个隐 含前导操作码字节的内容。例如,00001暗示0FH前导操作码,00010暗示0F38H前导操作码,00011暗示0F3AH前导操作码,等等。
字节2 1917的位[7]与第一前缀1501(A)的W类似地使用,包 括帮助确定可提升的操作数尺寸。位[2]用于指示向量的长度(L)(其中值0是标量或128位向量,而值1是256位向量)。位[1:0]提供操作码的扩展 性,相当于一些传统前缀(例如,00=无前缀,01=66H,10=F3H,并 且11=F2H)。位[6:3]示出为vvvv,可用于:1)编码第一源寄存器操作 数,以反转(1补码)的形式指定,并且对具有2个或更多个源操作数的指 令有效;2)编码目的地寄存器操作数,以1补码的形式指定,用于某些向 量移位;或者3)不编码任何操作数,字段被保留,并且应当包含某个值, 诸如1111b。
使用该前缀的指令可以使用Mod R/M R/M字段1646来编码 引用存储器地址的指令操作数,或者编码目的地寄存器操作数或源寄存器 操作数。
使用该前缀的指令可以使用Mod R/M reg字段1644来编码目 的地寄存器操作数或源寄存器操作数,被视为操作码扩展并且不用于编码 任何指令操作数。
对于支持四个操作数的指令语法,vvvv、Mod R/M R/M字段 1646和Mod R/M reg字段1644编码四个操作数中的三个操作数。然后,立 即数1509的位[7:4]用于编码第三源寄存器操作数。
图20图示第三前缀1501(C)的实施例。在一些实施例中,第 一前缀1501(A)是EVEX前缀的实施例。第三前缀1501(C)是四字节前缀。
第三前缀1501(C)可以以64位模式编码32个向量寄存器(例 如,128位、256位和512位寄存器)。在一些实施例中,利用写掩码/操作 掩码(参见前面的图中对寄存器的讨论,诸如图14)或断言的指令利用该 前缀。操作掩码寄存器允许条件处理或选择控制。使用第二前缀1501(B) 来编码操作掩码指令,其源/目的地操作数是操作掩码寄存器,并将操作掩 码寄存器的内容视为单个值。
第三前缀1501(C)可以编码专用于指令类的功能(例如,具 有“加载+操作”语义的紧缩指令可以支持嵌入式广播功能,具有舍入语义的 浮点指令可以支持静态舍入功能,具有非舍入算术语义的浮点指令可以支 持“抑制所有异常”功能,等等)。
第三前缀1501(C)的第一字节是格式字段2011,在一个示例 中,格式字段2011的值为62H。后续的字节被称为有效载荷字节2015-2019, 并且共同形成24位值P[23:0],从而以一个或多个字段的形式提供特定能力 (本文中详述)。
在一些实施例中,有效载荷字节2019的P[1:0]与低两个 mmmmm位相同。在一些实施例中,P[3:2]被保留。位P[4](R’)在与P[7] 和ModR/M reg字段1644组合时允许对高16个向量寄存器集合的访问。当 不需要SIB类型寻址时,P[6]也可以提供对高16个向量寄存器的访问。P[7:5] 由R、X和B组成,它们是用于向量寄存器、通用寄存器、存储器寻址的 操作数指定符修饰符位,并且当与Mod R/M寄存器字段1644和Mod R/M R/M字段1646组合时,允许对低8个寄存器之外的下一组8个寄存器的访 问。P[9:8]提供操作码扩展性,相当于一些传统前缀(例如,00=无前缀, 01=66H,10=F3H,并且11=F2H)。在一些实施例中,P[10]是固定值1。 P[14:11]示出为vvvv,可用于:1)编码第一源寄存器操作数,以反转(1 补码)的形式指定,并且对具有2个或更多个源操作数的指令有效;2)编 码目的地寄存器操作数,以1补码的形式指定,用于某些向量移位;或者3) 不编码任何操作数,字段被保留,并且应当包含某个值,诸如1111b。
P[15]类似于第一前缀1501(A)和第二前缀1511(B)的W,并 且可以用作操作码扩展位或操作数尺寸提升。
P[18:16]指定操作掩码(写掩码)寄存器(例如,写掩码/断 言寄存器1415)中的寄存器的索引。在一个实施例中,特定值aaa=000具 有暗示没有操作掩码用于特定指令的特殊行为(这能以各种方式实现,包 括使用硬连线为全部为一的操作掩码或者绕过掩码硬件的硬件来实现)。 当合并时,向量掩码允许在执行(由基础操作和扩充操作指定的)任何操作期间保护目的地中的任何元素集免于更新;在另一实施例中,保持其中 对应掩码位具有0的目的地的每一元素的旧值。相反,当归零时,向量掩 码允许在执行(由基础操作和扩充操作指定的)任何操作期间使目的地中 的任何元素集归零;在一个实施例中,目的地的元素在对应掩码位具有0 值时被设置为0。该功能的子集是控制正在被执行的操作的向量长度的能力 (即,从第一个到最后一个正在被修改的元素的跨度);然而,被修改的 元素不一定要是连续的。由此,操作掩码字段允许部分向量操作,包括加 载、存储、算术、逻辑等。尽管描述了其中操作掩码字段的内容选择多个 操作掩码寄存器中的包含要使用的操作掩码的一个操作掩码寄存器(并且 由此操作掩码字段的内容间接地标识要执行的掩码)的实施例,但是替代 实施例相反或另外允许掩码写字段的内容直接地指定要执行的掩码。
P[19]可以与P[14:11]组合,以非破坏性源语法编码第二源向 量寄存器,其可以使用P[19]访问高16个向量寄存器。P[20]编码多种功能, 其在不同类别的指令之间有所不同,并且可以影响向量长度/舍入控制指定 符字段(P[22:21])的含义。P[23]指示对合并-写掩码的支持(例如,当设 置为0时)或对归零和合并-写掩码的支持(例如,当设置为1时)。
使用第三前缀1501(C)的指令中的对寄存器的编码的示例性 实施例在下面的表中详述。
Figure BDA0003381389210000421
表1:64位模式下的32寄存器支持
Figure BDA0003381389210000422
Figure BDA0003381389210000431
表2:32位模式下的编码寄存器指定符
[2:0] 寄存器类型 常见用途
REG ModR/M Reg k0-k7
VVVV vvvv k0-k7 第二源
RM ModR/M R/M k0-7 第一源
{k1] aaa k0<sup>1</sup>-k7 操作掩码
表3:操作掩码寄存器指定符编码
可将程序代码应用于输入指令以执行本文描述的功能并生成 输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了 本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如, 数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编 程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器 语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程 语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
本文公开的机制的各实施例可以被实现在硬件、软件、固件 或此类实现方式的组合中。实施例可实现为在可编程系统上执行的计算机 程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易 失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个 输出设备。
至少一个实施例的一个或多个方面可以由存储在机器可读介 质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被 机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP 核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客 户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制 造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何 其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重 写紧致盘(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、 诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随 机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电 可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光 卡;或适于存储电子指令的任何其他类型的介质。
因此,实施例还包括非暂态有形机器可读介质,该介质包含 指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的 结构、电路、装置、处理器和/或系统特征。这些实施例也可被称为程序产 品。
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器可用于将指令从源指令集转换至 目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制 变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换 成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固 件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图21图示根据实施例的对照使用软件指令转换器将源指令 集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的 实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以 用软件、固件、硬件或其各种组合来实现。图21示出可使用第一ISA编译 器2104来编译高级语言2102形式的程序,以生成可由具有至少一个第一指令集核的处理器2116原生执行的第一ISA二进制代码2106。具有至少 一个第一ISA指令集核的处理器2116表示任何处理器,这些处理器能通过 兼容地执行或以其它方式处理以下内容来执行与具有至少一个第一ISA指 令集核的
Figure BDA0003381389210000451
处理器基本相同的功能:1)第一ISA指令集核的指令集的 实质部分,或2)目标为在具有至少一个第一ISA指令集核的英特尔处理器 上运行的应用或其他软件的目标代码版本,以便取得与具有至少一个第一ISA指令集核的处理器基本相同的结果。第一ISA编译器2104表示可用于 生成第一ISA二进制代码2106(例如,目标代码)的编译器,该第一ISA 二进制代码2106能够通过附加的链接处理或无需附加的链接处理而在具有 至少一个第一ISA指令集核的处理器2116上被执行。类似地,图21示出 可使用替代的指令集编译器2108来编译高级语言2102形式的程序,以生成可由不具有第一ISA指令集核的处理器2114原生执行的替代的指令集二 进制代码2110。指令转换器2112用于将第一ISA二进制代码2106转换成 可以由不具有第一ISA指令集核的处理器2114原生执行的代码。该转换后 的代码不大可能与替代的指令集二进制代码2110相同,因为能够这样做的 指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自 替代指令集的指令构成。因此,指令转换器2112通过仿真、模拟或任何其 他过程来表示允许不具有第一ISA指令集处理器或核的处理器或其他电子 设备执行第一ISA二进制代码2106的软件、固件、硬件或其组合。
示例性实施例包括但不限于:
1.一种装置,包括:
存储器控制器电路,用于将读取请求和写入请求发送至存储器设备, 所述存储器控制器电路用于使用地址总线、控制总线和数据总线耦合至所 述存储器设备;以及
存储器保护电路,用于生成要在所述地址总线上发送至所述存储器设 备的受保护的地址数据。
2.如示例1所述的装置,其中,所述地址总线上的所述地址数据用于 使用消息认证码(MAC)来保护,所述MAC用于对所述地址数据生成并 且用于在与所述受保护的地址数据不同的周期中被发送。
3.如示例2所述的装置,其中,所述MAC用于通过认证单元执行 GHASH函数来生成。
4.如示例2所述的装置,其中,所述存储器保护电路用于对所述地址 加密,其中,对所述地址数据的保护包括经加密的数据和所述MAC。
5.如示例4所述的装置,其中,所述存储器保护电路包括密码单元, 所述密码单元用于支持多个加密密钥和AES-XTS加密的使用。
6.如示例1所述的装置,其中,所述数据总线上的数据用于被加密。
7.如示例1所述的装置,进一步包括:
存储器设备,用于通过将所生成的MAC与所接收的受保护的地址数 据MAC进行比较来验证所接收的请求。
8.如示例8所述的装置,其中,所述存储器设备用于存储经随机化的 重放树,所述存储器设备用于
9.一种装置,包括:
控制器,用于接收存储器请求,所述请求至少包括地址数据和控制数 据;
存储器设备,用于存储经随机化的重放树;以及
重放逻辑,用于基于所接收的请求的类型来响应确定要执行的一个或 多个动作,其中,对于读取请求,所述重放逻辑用于引起随机数的生成, 将所述随机数与阈值进行比较,并且用于当所述随机数大于所述阈值时, 执行对所述经随机化的重放树的树走查以验证所述请求的新鲜度,并且用 于当所述随机数小于所述阈值时,跳过对所述经随机化的重放树的任何树 走查。
10.如示例9所述的装置,其中,所述经随机化的重放树包括至少一 个计数器级别和元数据,所述元数据包括版本和MAC数据。
11.如示例10所述的装置,其中,在所述经随机化的重放树的顶部 的计数器级别存储在所述存储器设备的外部。
12.如示例9所述的装置,其中,所述阈值通过指令的执行来设置。
13.如示例9所述的装置,其中,所述阈值由基本输入/输出系统 (BIOS)设置。
14.如示例9所述的装置,其中,所述重放逻辑用于通过执行对所述 经随机化的重放树的树走查来对写入请求作出响应。
15.如示例9所述的装置,进一步包括:
存储器控制器电路,用于将读取请求和写入请求发送至所述存储器设 备,所述存储器控制器电路用于使用地址总线、控制总线和数据总线耦合 至所述存储器设备;以及
存储器保护电路,用于生成要在所述地址总线上发送至所述存储器设 备的受保护的地址数据。
16.一种系统,包括:
存储器设备,用于存储经随机化的重放树和数据;以及
存储器控制器电路,用于将读取请求和写入请求发送至存储器设备, 所述存储器控制器电路用于使用地址总线、控制总线和数据总线耦合至所 述存储器设备;
存储器保护电路,用于生成要在所述地址总线上发送至所述存储器设 备的受保护的地址数据;
重放逻辑,用于基于所接收的请求的类型来响应确定要执行的一个或 多个动作,其中,对于读取请求,所述重放逻辑用于引起随机数的生成, 将所述随机数与阈值进行比较,并且用于当所述随机数大于所述阈值时, 执行对所述经随机化的重放树的树走查以验证所述请求的新鲜度,并且用 于当所述随机数小于所述阈值时,跳过对所述经随机化的重放树的任何树 走查。
17.如示例16所述的系统,其中,所述地址总线上的所述地址数据 用于使用消息认证码(MAC)来保护,所述MAC用于对所述地址数据生 成并且用于在与所述受保护的地址数据不同的周期中被发送。
18.如示例17所述的系统,其中,所述存储器保护电路用于对所述 地址加密,其中,对所述地址数据的保护包括经加密的数据和所述MAC。
19.如示例16所述的系统,其中,所述经随机化的重放树包括至少 一个计数器级别和元数据,所述元数据包括版本和MAC数据。
20.如示例16所述的系统,其中,所述阈值通过指令的执行来设置。
对“一个实施例”、“实施例”、“示例实施例”等的引用指示所 描述的实施例可包括特定的特征、结构或特性,但是每个实施例可以不一 定包括该特定的特征、结构或特性。而且,此类短语不一定是指同一实施 例。此外,当结合实施例描述特定的特征、结构或特性时,认为结合无论 是否被明确描述的其他实施例而影响此类特征、结构或特性是在本领域技 术人员的知识范围之内的。
此外,在上文描述的各实施例中,除非另外专门指出,否则, 诸如短语“A、B或C中的至少一个”之类的分隔语言旨在被理解为意味着A、 B、或C、或其任何组合(例如,A、B、和/或C)。由此,分隔语言不旨 在也不应当被理解为暗示给定的实施例要求A中的至少一个、B中的至少 一个或C中的至少一个各自都存在。
因此,说明书和附图应被认为是说明性而非限制性意义。然 而,将显而易见的是,可对这些实现方式作出各种修改和改变,而不背离 如权利要求中所述的本公开的更宽泛的精神和范围。

Claims (19)

1.一种装置,包括:
存储器控制器电路,用于将读取请求和写入请求发送至存储器设备,所述存储器控制器电路用于使用地址总线、控制总线和数据总线耦合至所述存储器设备;以及
存储器保护电路,用于生成要在所述地址总线上发送至所述存储器设备的受保护的地址数据。
2.如权利要求1所述的装置,其中,所述地址总线上的所述地址数据用于使用消息认证码MAC来保护,所述MAC用于对所述地址数据生成并且用于在与所述受保护的地址数据不同的周期中被发送。
3.如权利要求2所述的装置,其中,所述MAC用于通过认证单元执行GHASH函数来生成。
4.如权利要求2所述的装置,其中,所述存储器保护电路用于对所述地址加密,其中,对所述地址数据的保护包括经加密的数据和所述MAC。
5.如权利要求4所述的装置,其中,所述存储器保护电路包括密码单元,所述密码单元用于支持多个加密密钥和AES-XTS加密的使用。
6.如权利要求1-5中任一项所述的装置,其中,所述数据总线上的数据用于被加密。
7.如权利要求1-6中任一项所述的装置,进一步包括:
存储器设备,用于通过将所生成的MAC与所接收的受保护的地址数据MAC进行比较来验证所接收的请求。
8.一种装置,包括:
控制器,用于接收存储器请求,所述请求至少包括地址数据和控制数据;
存储器设备,用于存储经随机化的重放树;以及
重放逻辑,用于基于所接收的请求的类型来响应确定要执行的一个或多个动作,其中,对于读取请求,所述重放逻辑用于引起随机数的生成,将所述随机数与阈值进行比较,并且用于当所述随机数大于所述阈值时,执行对所述经随机化的重放树的树走查以验证所述请求的新鲜度,并且用于当所述随机数小于所述阈值时,跳过对所述经随机化的重放树的任何树走查。
9.如权利要求8所述的装置,其中,所述经随机化的重放树包括至少一个计数器级别和元数据,所述元数据包括版本和MAC数据。
10.如权利要求9所述的装置,其中,在所述经随机化的重放树的顶部的计数器级别存储在所述存储器设备的外部。
11.如权利要求8-10中任一项所述的装置,其中,所述阈值通过指令的执行来设置。
12.如权利要求8-11中任一项所述的装置,其中,所述阈值由基本输入/输出系统BIOS设置。
13.如权利要求8-12中任一项所述的装置,其中,所述重放逻辑用于通过执行对所述经随机化的重放树的树走查来对写入请求作出响应。
14.如权利要求8-13中任一项所述的装置,进一步包括:
存储器控制器电路,用于将读取请求和写入请求发送至所述存储器设备,所述存储器控制器电路用于使用地址总线、控制总线和数据总线耦合至所述存储器设备;以及
存储器保护电路,用于生成要在所述地址总线上发送至所述存储器设备的受保护的地址数据。
15.一种系统,包括:
存储器设备,用于存储经随机化的重放树和数据;以及
存储器控制器电路,用于将读取请求和写入请求发送至存储器设备,所述存储器控制器电路用于使用地址总线、控制总线和数据总线耦合至所述存储器设备;
存储器保护电路,用于生成要在所述地址总线上发送至所述存储器设备的受保护的地址数据;
重放逻辑,用于基于所接收的请求的类型来响应确定要执行的一个或多个动作,其中,对于读取请求,所述重放逻辑用于引起随机数的生成,将所述随机数与阈值进行比较,并且用于当所述随机数大于所述阈值时,执行对所述经随机化的重放树的树走查以验证所述请求的新鲜度,并且用于当所述随机数小于所述阈值时,跳过对所述经随机化的重放树的任何树走查。
16.如权利要求15所述的系统,其中,所述地址总线上的所述地址数据用于使用消息认证码MAC来保护,所述MAC用于对所述地址数据生成并且用于在与所述受保护的地址数据不同的周期中被发送。
17.如权利要求16所述的系统,其中,所述存储器保护电路用于对所述地址加密,其中,对所述地址数据的保护包括经加密的数据和所述MAC。
18.如权利要求15-17中任一项所述的系统,其中,所述经随机化的重放树包括至少一个计数器级别和元数据,所述元数据包括版本和MAC数据。
19.如权利要求15-18中任一项所述的系统,其中,所述阈值通过指令的执行来设置。
CN202111434717.3A 2020-12-26 2021-11-29 用于针对硬件重放攻击和存储器访问模式泄漏的提高的恢复力的存储器地址总线保护 Pending CN114692231A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/134,346 US20220207194A1 (en) 2020-12-26 2020-12-26 Memory address bus protection for increased resilience against hardware replay attacks and memory access pattern leakage
US17/134,346 2020-12-26

Publications (1)

Publication Number Publication Date
CN114692231A true CN114692231A (zh) 2022-07-01

Family

ID=77910636

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111434717.3A Pending CN114692231A (zh) 2020-12-26 2021-11-29 用于针对硬件重放攻击和存储器访问模式泄漏的提高的恢复力的存储器地址总线保护

Country Status (3)

Country Link
US (1) US20220207194A1 (zh)
EP (1) EP4020299A1 (zh)
CN (1) CN114692231A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11579783B1 (en) * 2022-03-09 2023-02-14 Vim Inc. Multi-tenant storage

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2726991B1 (en) * 2011-06-29 2018-03-14 Intel Corporation Method and apparatus for memory encryption with integrity check and protection against replay attacks
US20170097771A1 (en) * 2015-10-01 2017-04-06 Netapp, Inc. Transaction log layout for efficient reclamation and recovery
US10540297B2 (en) * 2017-08-03 2020-01-21 Arm Limited Memory organization for security and reliability
US20200151362A1 (en) * 2019-08-21 2020-05-14 Intel Corporation Integrity and data encryption (ide) over computer buses
US11442845B2 (en) * 2020-12-07 2022-09-13 Diffblue Ltd Systems and methods for automatic test generation

Also Published As

Publication number Publication date
US20220207194A1 (en) 2022-06-30
EP4020299A1 (en) 2022-06-29

Similar Documents

Publication Publication Date Title
US11562063B2 (en) Encoded inline capabilities
US10325118B2 (en) Cryptographic cache lines for a trusted execution environment
US11917067B2 (en) Apparatuses, methods, and systems for instructions for usage restrictions cryptographically tied with data
US20230018585A1 (en) Updating encrypted security context in stack pointers for exception handling and tight bounding of on-stack arguments
EP4109312A1 (en) Circuitry and methods for supporting encrypted remote direct memory access (erdma) for live migration of a virtual machine
CN113051192A (zh) 具有能够实现tdx keyid缩放的自包含范围的tdx岛
EP4020288A1 (en) Low overhead memory integrity with error correction capabilities
EP4020299A1 (en) Memory address bus protection for increased resilience against hardware replay attacks and memory access pattern leakage
US20230269076A1 (en) Creating, using, and managing protected cryptography keys
EP4020180A1 (en) Isa accessible physical unclonable function
EP4020877A1 (en) Isa accessible physical unclonable function
TW202242658A (zh) 在可信區域中執行共享虛擬記憶體的設備與方法
US11570010B2 (en) ISA accessible physical unclonable function
US20220209967A1 (en) Isa accessible physical unclonable function
EP4156006A1 (en) Isa accessible physical unclonable function

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