CN113260994A - 针对对计算机系统的推测性边信道分析的防御 - Google Patents

针对对计算机系统的推测性边信道分析的防御 Download PDF

Info

Publication number
CN113260994A
CN113260994A CN201980042311.5A CN201980042311A CN113260994A CN 113260994 A CN113260994 A CN 113260994A CN 201980042311 A CN201980042311 A CN 201980042311A CN 113260994 A CN113260994 A CN 113260994A
Authority
CN
China
Prior art keywords
address
memory
processor
tag
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201980042311.5A
Other languages
English (en)
Inventor
D·M·杜汉姆
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 CN113260994A publication Critical patent/CN113260994A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • 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/55Detecting local intrusion or implementing counter-measures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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
    • 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/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/653Page colouring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

公开了用于防御对计算机系统的推测性边信道分析的方法和装置的实施例。在实施例中,一种处理器包括解码器、高速缓存、地址变换电路、高速缓存控制器和存储器控制器。解码器用于对指令解码。指令用于指定与数据对象相关联的第一地址,第一地址具有第一存储器标签。地址变换电路用于将第一地址变换为第二地址,第二地址用于标识数据对象的存储器位置。比较器用于将第一存储器标签和与第二地址相关联的第二存储器标签进行比较。高速缓存控制器用于检测与存储器位置相关联的高速缓存未命中。存储器控制器用于响应于比较器检测到第一存储器标签与第二存储器标签之间的匹配并且高速缓存控制器检测到高速缓存未命中而将数据对象从存储器位置加载到高速缓存中。其他实施例包括对存储器标签以及地址的加密。

Description

针对对计算机系统的推测性边信道分析的防御
技术领域
技术领域总体上涉及计算机,并且更具体地涉及计算机系统安全。
背景技术
计算机系统可能容易受到攻击者获取机密的、私人的或秘密的机密信息的尝试的影响。例如,诸如幽灵(Spectre)和灾难(Meltdown)之类的攻击利用处理器的推测性和乱序执行能力来通过边信道分析非法读取数据。
附图说明
在所附附图中以示例方式而非限制方式来图示本发明,在附图中,类似的附图标记指示类似的要素,其中:
图1A是根据本文中描述的至少一个实施例的通过为处理器内的存储器提供基于地址的安全特征来降低处理器内的成功边信道分析的可能性的计算环境的框图;
图1B是根据至少一个实施例的处理器的框图;
图2是根据至少一个实施例的可以用于保护存储器地址指针免于边信道分析的存储器标签的实现方式的示图;
图3是根据至少一个实施例的用于在针对边信道分析的防御中使用存储器标签的方法的流程图;
图4是图示根据至少一个实施例的在针对边信道分析的防御中使用存储器标签的框图;
图5是图示根据至少一个实施例的可以存储在虚拟存储器地址内的各种位置中的标识标签(例如,颜色标签)的虚拟存储器地址的框图;
图6是根据至少一个实施例的处理器的框图;
图7是图示根据实施例的图6的安全存储器访问逻辑的应用的计算环境的示图;
图8A是用于在计算机程序的执行期间发起存储器分配操作的方法的至少一个实施例的流程图;
图8B是用于继续图8A的存储器分配操作的方法的至少一个实施例的流程图;
图9是用于为间接地址提供安全的方法的至少一个实施例的流程图;
图10是用于验证先前安全的间接地址的方法的至少一个实施例的流程图;
图11表示其中存储器标签利用地址的经加密部分来加密的实施例;
图12A是图示根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名的乱序发布/执行流水线两者的框图;
图12B是图示根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核两者的框图;
图13是根据本发明的实施例的可以包括在处理器中的示意性乱序发布/执行处理器核的框图;
图14是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、并且可具有集成图形器件的处理器的框图;
图15是根据本发明的实施例的可以包括在处理器中的示意性中央处理单元(CPU)复合体的框图;
图16是根据本发明的实施例的可以包括在处理器中的示意性高速缓存层级结构的框图;
图17-21是示例性计算机架构的框图;
图17示出根据本发明的一个实施例的系统的框图;
图18是根据本发明的实施例的第一更具体的示例性系统的框图;
图19是根据本发明的实施例的第二更具体的示例性系统的框图;
图20是根据本发明的实施例的芯片上系统(SoC)的框图;
图21是根据本发明的实施例的芯片上系统(SoC)的框图;
图22是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在下列描述中,阐述了众多具体细节。然而应当理解,在没有这些具体细节的情况下也可实践本发明的实施例。在其他实例中,未详细示出公知的电路、结构和技术,以免使对本描述的理解模糊。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用表明所描述的实施例可以包括特定的结构、特征或特性,但是每个实施例可能不一定都包括该特定的结构、特征或特性。而且,此类短语不一定是指同一实施例。此外,当结合实施例描述特征、结构或特性时,认为结合无论是否被明确描述的其他实施例而影响此类特征、结构或特性是在本领域技术人员的知识范围之内的。
许多处理器和处理器核支持提高性能的能力,诸如高速缓存操作、多线程操作、乱序执行、分支预测和推测性执行。攻击者已经找到多种方式来利用这些处理器的能力以非法读取数据。
例如,攻击者可能故意试图从不应当可由其读取的存储器位置(例如,出界)读取数据(例如,秘密数据)。读取可能被允许推测性地继续,直到确定访问是否出界。可以通过不提交任何结果直到作出确定来确保系统的架构正确性,但是推测性执行可能会导致处理器的微架构状态在作出确定之前改变,并且攻击者可能能够执行边信道分析以根据处理器的微架构状态的差异来推断秘密数据的值。这种类型的推测性攻击的许多变型是可能的。在一种情况下,攻击者可能推测性地将秘密数据用作存储器地址的一部分,并通过使用时序分析来确定哪些存储器位置正被加载到高速缓存中以推断该值。
作为更具体的示例,在高速缓存行尺寸为64位的情况下,对存储器地址的最低有效的六个位中的任一个的改变不会导致地址引用不同的高速缓存行,但是对第七个最低有效位的改变会导致地址引用不同的高速缓存行。因此,攻击者可能会重复地(例如,为了消除噪声和/或实现统计上显著的结果)将高速缓存转储清除和/或填充到已知或可预测的状态,使用推测流以使处理器推测地访问秘密数据,推测地将秘密数据的一个位应用到存储在寄存器中的已知存储器地址的第七个最低有效位(例如,使用移位和/或其他位操纵指令),推测地利用被操纵的存储器地址来访问它们自己的存储器空间,使用时序边信道分析来确定是否加载了新的高速缓存行,并推断秘密位的值与已知存储器地址的第七个最低有效位的值相同还是不同。
本发明的实施例包括系统、方法和装置,这些系统、方法和装置提供出于各种原因对于在各种计算机系统中使用可能期望的特征或特性,包括基于推测、边信道分析降低对攻击的脆弱性;与替代方法相比,在性能或其他方面以较低的成本降低对此类分析的脆弱性;和/或总体上提高安全性。实施例提供了细粒度的存储器访问控制机制或其组合,这些机制不能被推测绕过,但不阻止对推测的使用,从而保留了推测性能提高。例如,为了防止前面的段落中描述的分析类型,实施例提供了各自如下所述的存储器加标签技术和/或地址编码/加密,以限制通过试图推测性地将秘密数据用作存储器地址或其他内容和/或访问针对有效性、安全性或其他目的而定义的边界之外的存储器位置来推断关于秘密数据的信息的敌对努力的有效性。
实施例可以包括以下各项中的任一个和/或任何组合(每一个可以在下面进一步描述):标识/完整性加标签,使得内联标签信息在数据访问的同时对处理器或存储器控制器可用,因此处理器将立即知道推测性存储器访问是否不正确并且应该被停止或遮挡;存储器标签的加密,使得对数据的正确解密是基于对正确的标签值(密钥)的知晓,因此利用不正确的加密标签(密钥标识符)来推测只会向边信道攻击者提供无用的密文,而不会揭示给定地址的秘密数据;密码指针,使得对边信道攻击者可用的被分派的指针(例如,经由malloc)不能在其边界之外被使用而不导致地址损坏,从而根本上防止边信道攻击者使用此类指针针对已知的存储器位置进行边信道分析(典型地,处理器也会捕捉被损坏的虚拟地址,因为它会终止到未分配的虚拟存储器中,从而导致页错误);技术的组合,使得密码指针包括标签信息(地址的标签部分也与实际位置地址信息一起被加密),使得边信道攻击者既不能针对存储器,也不能独立地选择标签信息,因此,修改其中一个或另一个会使两者都损坏,从边信道分析的角度看,会产生完全的混乱;以及计数器,用于对推测性存储器访问控制损坏计数,使得如果攻击者持续进行不正确的推测,则处理器可能会杀死超过指定阈值的进程,并且OS可能会跟进以补救。
存储器加标签技术
所公开的实施例包括存储器加标签电路和技术,以解决现有的和潜在的计算机系统安全脆弱性。存储器加标签电路可以配置为防止存储器指针(引用)被用于推测性地超出有效边界,防止使指针访问错误的(未授权的)数据对象的存储器指针操纵(例如,通过添加值),并且增大存储器加标签的粒度以在高速缓存中包括字节水平加标签。存储器加标签电路还可以被配置为通过对存储器的部分(例如,字)加标签以指示存储器的加标签部分何时包括受保护指针来对不受信任代码进行沙盒化。存储器加标签电路提供安全特征,同时使处理器能继续使用推测性操作并且受益于执行推测性操作。
图1A是与本公开的实施例一致的其中可以通过为处理器内的存储器提供基于地址的安全特征来降低成功边信道分析的可能性的计算环境100的框图。根据实施例,计算环境100包括系统104,系统104降低成功边信道分析的可能性,同时使处理器能执行推测性操作并且受益于执行推测性操作。图1示出攻击者102通过一个或多个网络106或一个或多个物理连接108耦合至系统104。攻击者102可以通过网络106和/或通过物理连接108对系统104执行一个或多个边信道分析110。系统104可以包括各种计算设备中的一个或多个,包括但不限于:个人计算机,服务器,膝上型计算机,平板,平板手机,智能电话,具有芯片组的主板,或其他计算设备。系统104被配置为使用各种基于地址的安全特征来保护处理器免于边信道分析,这些基于地址的安全特征使处理器能在执行推测性操作时安全地操作。换言之,处理器和/或相关联的硬件被提供对允许处理器安全地推测的附加(访问控制)信息的并发访问(意味着与推测性数据访问在相同时刻可用)。
攻击者102可以是计算机系统、个人、或计算机系统和个人的组合,其可能尝试对系统104或针对系统104的一个或多个边信道分析(例如,幽灵)。攻击者102可以使用一个或多个网络106来执行边信道分析110。攻击者102还可以使用一个或多个物理连接108,诸如存储器插入机构、存储器探针等,以读取、修改和/或写入系统104内的一个或多个存储器地址。边信道分析110中的一些可以包括尝试使用指针来推测性地访问超出允许的存储器边界的数据,尝试操纵指针(例如,将值加到指针以使指针指向非预期的对象),等等。
系统104被配置为提供各种基于存储器的安全特征以保护免于边信道分析110。系统104包括处理器112,处理器112通过一个或多个通信信道116耦合至存储器114。处理器112可以包括处理器核118、高速缓存120、加密电路122、完整性校验电路124、和存储器控制器170。处理器112还包括指针安全电路126,指针安全电路126配置为扩展存储器标签能力、减少或防止指针超控攻击、减少或防止指针操纵、并且为处理器112实现字节粒度存储器安全。
处理器112可以包括任何数量和/或组合的当前可用和/或未来开发的单核或多核处理单元。在实施例中,处理器112可以表示或包括通用处理器,诸如,酷睿
Figure BDA0002853878620000061
i3、i5、i7、2Duo和Quad、至强
Figure BDA0002853878620000062
安腾
Figure BDA0002853878620000063
凌动
Figure BDA0002853878620000064
Figure BDA0002853878620000065
微处理器,这些处理器均可以从
Figure BDA0002853878620000066
(加利福尼亚州圣克拉拉市的英特尔公司)获得。替代地,处理器112可以表示或包括来自另一制造商或供应商的一个或多个处理器,诸如超微半导体有限公司
Figure BDA0002853878620000067
公司、
Figure BDA0002853878620000068
等。处理器112可以表示或包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等等。处理器112可以被实现为单个半导体管芯或封装或者被实现为堆叠的或以其他方式互连的半导体管芯和/或封装的组合。处理器112可以是一个或多个衬底的部分,和/或可使用数种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何工艺技术被实现在一个或多个衬底上。
根据实施例,存储器114表示可以在系统104中使用的各种类型的存储器中的一个或多个。存储器114可以是易失性存储器、非易失性存储器、或者易失性存储器和非易失性存储器的组合。易失性存储器可以包括各种类型的随机存取存储器(RAM)。非易失性存储器可以包括NAND存储器、3D交叉点(3DXP)、相变存储器(PCM)、硬盘驱动器等。
根据实施例,处理器112可以使用存储器控制器170在处理器112与存储器114之间来回移动数据。例如,当操作一个或多个软件程序时或者当执行各种指令时,处理器核118可以生成新数据128。处理器核118可以使用新数据128的虚拟地址(或线性地址)130以将新数据128写入高速缓存120或写入存储器114。新数据128可以作为所高速缓存的数据132被保存在高速缓存120中,或者可以被添加到现有的所高速缓存的数据132。所高速缓存的数据132可以具有物理地址134。处理器112可以配置为在将新数据128和/或所高速缓存的数据132保存至存储器电路114作为所存储的数据138之前使用加密电路122和加密算法136来加密新数据128和/或所高速缓存的数据132;然而,所存储的数据138不需要被加密,并且可以包括被加密的数据、未被加密的数据、或被加密的和未被加密的数据的任何组合。处理器112还可以使用完整性校验电路124基于新数据128、虚拟地址130、所高速缓存的数据132和/或物理地址134来生成完整性校验值140。存储器控制器170可以基于处理器的密钥标识符(密钥ID)将完整性校验值写入存储器114(以促进对所存储的数据138的损坏检测),并且/或者存储器控制器170可以使用由处理器标识的密钥(例如,通过在物理地址中指定密钥标识符)对写入存储器的数据进行加密。
处理器112可以使用指针安全电路126来为系统104内的数据提供安全。根据本文中公开的各种实施例,指针安全电路126可以配置为检测虚拟地址130和/或物理地址134何时被超控,检测虚拟地址130和/或物理地址134何时已经被操纵,提供字节粒度存储器安全,和/或提供对存储器标签的使用。根据各种实施例,图2、图4和图5图示各种示例存储器标签配置,这些存储器标签配置可由指针安全电路126标识、定义和/或应用以保护系统104免于边信道分析110。
当处理器核118将虚拟地址130(例如,通过执行软件程序)分派给新数据128时,指针安全电路126可以在虚拟地址130中定义、插入或标识一个或多个存储器标签142A以与新数据128相关联来降低成功边信道分析的可能性。一个或多个存储器标签142A可以包括标识标签144和/或加密标签146。在一些实施例中,标签可以由将其数据写入存储器的软件选择。软件(例如,存储器分配器函数,诸如malloc)可以选择标签值并且将其插入到虚拟(线性)地址中。硬件可以解译标签值或者对其进行编码或者对其进行变换和/或将其传递至物理地址。
用于新数据128的虚拟地址130可以包括标识标签144来为新数据128提供访问控制。标识标签144可以指代颜色、密码颜色、存储器颜色、标签颜色、密钥ID等。指针安全电路126可以被配置为定义标识标签144在虚拟地址130内何处驻留或被定义。例如,指针安全电路126可以将标识标签144定义为虚拟地址130中的最高有效的八个位。例如,标识标签144可以被定义为虚拟地址130的位0-63中的位56-62(即,七个位),假设,作为示例,虚拟地址130的长度为64位。其他实施例可以使用更大或更小的标签尺寸和/或更大或更小的虚拟地址尺寸(例如,128位)。
指针安全电路126可以按各种方式使用标识标签144以向新数据128提供安全。例如,指针安全电路126可以在加密算法136中使用标识标签144作为微调(tweak)或者作为微调的一部分(例如,除了明文数据之外的密码的输入,其针对不同的微调值产生不同的密文数据)。在实施例中,标识标签144与虚拟地址130的子集组合以定义当加密新数据128时可由加密算法136使用的微调。
用于新数据128的虚拟地址130可以包括加密标签146来为新数据128提供安全。指针安全电路126可以被配置为定义加密标签146在虚拟地址130内何处驻留或被定义。例如,指针安全电路126可以将加密标签146定义为虚拟地址130中的最高有效的三个位。例如,加密标签146可以被定义为虚拟地址130的位0-63中的位59-62(即,四个位),假设,作为示例,虚拟地址130的长度为64位。加密标签146可以是密钥ID152的表示,其用于通过加密电路122查找密钥表156内的加密密钥154。加密标签146还可以或者替代地使用其他技术被标识,例如,可以被定义在物理地址134中的一个或多个位内。其可以被从虚拟地址复制或变换到物理地址中,使得密钥ID可以被传递至存储器加密电路。实施例可以提供对密钥ID的使用以有助于针对推测性边信道分析的防御,因为如果错误的存储器加密标签被使用,则数据将不会被揭示(其将被解密为随机位),因此在边信道分析上基于该随机数据的推测不会向攻击者揭示任何秘密。
指针安全电路126还可以包括至少部分地提供标签定义160的指针安全指令158。指针安全指令158可以包括可由指针安全电路126或处理器112使用以根据标签定义160添加指针的多个指令或操作。标签定义160可以定义标识标签144和/或加密标签146中的一个或多个的长度、位置和使用中的一个或多个。在实施例中,指令可以用于设置存储器中的对应标签值和/或用于从存储器读取标签值并且可以被限制为由有特权软件(例如,OS内核或VMM)使用。
指针安全电路126可以使用指针元数据表162来存储、更新和检取存储器标签142E和/或标签定义160。
当处理器112利用物理地址134将新数据128写入所高速缓存的数据132时,指针安全电路126可以在物理地址134中定义、插入或标识一个或多个存储器标签142B以与所高速缓存的数据132相关联以降低成功边信道分析的可能性。嵌入物理地址134内的一个或多个存储器标签142B可以包括标识标签144和/或加密标签146中的一个或多个。物理地址134可以包括比被使用的或与虚拟地址130相关联的存储器标签142B的更少的、更多的或不同的部分。
出于推测攻击阻止的目的,由于进行存储器写入的是“拥有”被写入的数据的软件函数,因此写入可以分派相关联的标识标签(例如,为所有权写入,或我的数据我的标签),标签分派以用于写入数据的应用于对应的虚拟(线性)地址的软件流开始。硬件负责基于标签值执行读取存储器访问控制。在标识标签场景下,硬件将最初与数据一起写入的标签值与存储器访问请求(存储器加载)的地址中的标签值进行比较。如果标签匹配,则存储器访问可以继续进行(请求者知道要使用的正确的标识标签值)。类似地,对于加密标签,请求者知道要使用的正确密钥(在将数据写入存储器时用于加密的密钥)。
图1B是根据实施例的图1A的处理器112的框图,示出处理器核118、高速缓存120、指针元数据表162和对存储器控制器170的更详细描绘。根据诸如图3的方法300之类的实施例,标签查找电路172可以用于查找与物理地址相关联的存储器标签。根据诸如图3的方法300之类的实施例,标签比较电路174可以将与物理地址130相关联的存储器标签和与虚拟地址130相关联的存储器标签进行比较。存储器控制电路178可以表示用于根据任何方法执行存储器控制操作的任何其他电路。
图2图示根据实施例的可以用于保护存储器地址指针免于边信道分析的存储器标签的实现方式的存储器地址变换图200。存储器地址变换图200图示扩展虚拟地址(或线性地址)202,包括占用一个或多个位(例如,非标准位)的标识标签204,和占用扩展虚拟地址202的子集的虚拟地址206。扩展虚拟地址202可以是64位。标识标签204可以占用一个或多个最高有效位或扩展虚拟地址202内的其他位。如图所示,虚拟地址206通过转换后备缓冲器(TLB)210被变换为物理地址208,或者通过对页表的走查被变换为物理地址208。标识标签204被附加到物理地址208。物理地址208和标识标签204可以被组合以形成或定义加密微调212,如下所述,加密微调212可以被应用于加密算法。加密标签214可以被附加到标识标签204和物理地址208以通过密钥表156(在图1中示出)标识一个或多个加密密钥。标识标签204、物理地址208和加密标签214可以被组合以定义高速缓存行物理地址216。位位置和/或标签尺寸在不同实施例之间可以变化。标签尺寸越大,可能的标签值越多,并且攻击者越难以猜测。
在实施例中,存储器地址变换图200中示出的存储器标签架构可以采用不同尺寸的标识标签204和/或加密标签214来调节猜测哪个存储器标签(例如,标识标签204和/或加密标签214)与特定存储器地址指针和/或特定对象相关联的难度。
存储器加标签与多密钥总存储器加密(MKTME)类似地工作,其中物理地址位(或其他所高速缓存的元数据)保存标签位(例如,密钥标识符KeyID或密钥域)。软件(例如,存储器分配器库,诸如glibc中的malloc)选择标签可以通过将非标准位设置为标签值来选择线性地址空间内的标签位。硬件可以为这些变换绕过分页结构,从而允许线性地址直接设置物理地址中的标签位。实施例可以包括在加载操作中检查外部存储器与处理器高速缓存之间的标签元数据,从而提供边信道防御机制,因为可以在高速缓存内容被影响之前检查和验证标签。根据实施例,本文中描述的加标签操作可以由被称为“存储器控制器”或“存储器标签控制器”的硬件执行,更一般地,该硬件指代存储器控制器子系统硬件,可能位于存储器子系统的各种位置中以处置高速缓存行数据加标签。
图3示出根据本发明的实施例的用于执行加载操作的方法300的流程图。在实施例中,方法300可以由存储器控制器或其他存储器执行电路执行。由此,方法300可以由硬件电路、固件、软件、和/或其组合来执行。
如所示,方法300以接收包括存储器中的数据行的标签信息的加载请求开始(框310)。该加载请求可以是来自要从数据行读取至少一个数据槽的任何给定组件的请求。在实施例中,该数据请求可以包括加载请求的地址的非标准部分中所包括的标签标识符。响应于该加载请求,存储器控制器将加载请求发送至存储器(框320)。对于该加载操作,存储器控制器可以接收与存储器行相关联的元数据中所包括的标签以及来自存储器的所请求地址的数据(框330)。存储器控制器(例如,由存储器控制器170中的标签比较电路174)可以确定标签信息的一个或多个标签是否匹配存储器请求的地址的标签(菱形框340)。如果是,则可以将一个或多个部分(例如,数据槽)存储在高速缓存行中,以及将标签标识符本身存储在例如高速缓存行的元数据中。
如果在加载中未找到匹配标签,则控制传递至框360,其中在实施例中,存储器控制器可以阻止加载高速缓存行,或者在另一实施例中,存储器控制器可以用随机数据或垃圾数据(即,不指示存储在存储器中的对应物理地址处的数据)加载高速缓存行,这可以提供针对试图猜测标识标签值的攻击者的防御,但不揭示是否存在标识标签匹配。
现在参考图4,所示的是包括处理器(CPU)410和相关联的存储器(DRAM)460的系统400的高层级布置。如所示,假设生成了加载或读取请求。软件可以使用64位线性地址420来请求要被读取的数据,如所示,64位线性地址420包括多个部分,包括最低有效部分422(例如,用于标识高速缓存行内的字节的6位),用于标识高速缓存行的另一部分424,用于标识页位置的线性地址部分425,以及小对象指示符426,例如,小对象位,当小对象指示符426被设置时标识该请求针对小于高速缓存行宽度。例如,该小对象地址位可以由与作为堆的小对象区域的一部分的页对应的页表条目设置。如进一步所示,地址的非标准部分可以包括如本文中描述的标签428。注意,线性地址部分425可以用于在页表和TLB高速缓存结构430内执行查找以获得存储器物理地址442。假设该物理地址对应于也在图4中示出的存储器行466,存储器行466包括四个16B槽(槽0-槽3),每个槽具有存储在ECC存储器468(或其中的表)中的对应标签4680-3
当这些被存储的标签中的每一个具有不同的标签标识符值时,这意味着每个槽与不同的标签相关联,并且因此如图4进一步所示,当被加载和存储到高速缓存445中时,每个槽可以被存储到不同的高速缓存行中(例如,如所示,在高速缓存行的右手边),其中其对应的标签标识符448在高速缓存行的PA地址中。因此,如图4所示,在标签标识符4680-4683各自包括不同的值(即值1-4)的情况下,存储器行466中的每个对应的数据槽可以被存储在不同的高速缓存行446中,每个数据槽与其对应的标签标识符相关联地存储在与高速缓存行相关联的高速缓存445的地址或元数据部分中。
如进一步所示,示出要在加载中执行的存储器控制器操作。当然,在其他情况下,该(存储器标签控制器)功能可以在高速缓存层中的任何层之间执行,例如,在L2高速缓存与LLC之间,或者在L1与L2高速缓存之间,等等。如所示,存储器控制器450可以确定地址的标签是否匹配从存储器获得的标签信息中的被标识的标签中的任一个(菱形框452)。如果是,还可以确定小地址对象指示符是否被设置(菱形框456)。如果是,则存储器控制器450可以使与匹配标签相关联的数据槽存储在与所示的右手边对齐的给定的高速缓存行中。当要被读取或写入的下一字节超出高速缓存行的末尾时,利用出界检测的高速缓存行中的数据移位可以发生。并且注意,取决于想要捕捉下溢读取错误还是上溢读取错误,数据可以被对齐/移位至高速缓存行的开始或末尾。取决于使用情形,数据槽可以被移位至一端或另一端。例如,对于堆栈使用,移位可以到最高有效侧。如果通过将所有数据推至高速缓存行的末尾而存在上溢,则可以以字节粒度检测缓冲器上溢,因为超出缓冲器的末尾再走查多一个字节,并且读取另一高速缓存行。当该后续相邻高速缓存行读取发生时,其被提供给存储器控制器以针对相邻高速缓存行,存储器控制器确定标签与上一高速缓存行不匹配,从而检测到破坏。对于特定高速缓存行发生哪个方向的移位可以被配置为存储在(例如,ECC)存储器中的标签配置的一部分,或者替代地,可以由与指示移位操作的预期方向的小对象指示符位类似的另一地址位指示。
如果在存储器加载中在地址的标签与从存储器接收的标签标识符中的任一个之间不存在匹配,则在实施例中,存储器控制器450可以阻止加载高速缓存行,或者在另一实施例中,存储器控制器450可以用随机数据或垃圾数据(即,不指示存储在存储器中的对应物理地址处的数据)加载高速缓存行,这可以提供针对试图猜测标识标签值的攻击者的防御,但不揭示是否存在标识标签匹配。
图5图示扩展虚拟存储器地址502的框图500,其图示标识标签504(例如,颜色标签)可以被存储在虚拟存储器地址内的各种位置中。标识标签504可以占用虚拟存储器地址502内的一个或多个位,使得虚拟存储器地址502包括高于标识标签504的一个或多个位和在标识标签与被变换为物理地址(例如,通过转换后备缓冲器)的虚拟存储器地址的部分之间的一个或多个位。
地址编码/加密
返回图1A,处理器112可以配置为对虚拟/线性地址(例如,虚拟地址130)、其任何部分、任何其他地址(直接或间接)、和/或其任何部分进行加密和解密,还可以或者替代地使用例如加密电路122对新数据128、所高速缓存的数据132、和/或所存储的数据138进行加密和解密。
图6是图1A和图1B的处理器112的另一表示的框图,示出根据其中虚拟地址可以被加密的实施例的处理器核118、高速缓存120和安全存储器访问电路600。安全存储器访问电路600可以使用或包括如图1A所示的加密电路122所表示的加密电路,或者可以使用或包括其他加密电路,但是出于方便起见而示出为包括加密电路658和解密电路654。
在实施例中,安全存储器访问电路600利用关于地址(例如,虚拟地址130)的元数据,元数据被编码到存储器标签位(例如,存储器标签142A)或在地址内或与地址相关联的其他位中(例如,64位地址的非标准位,或例如由操作系统留出的地址范围,使得地址范围的对应的高阶位可以用于存储元数据),以便保护由地址指向的存储器位置和/或提供对存储器位置的访问控制。例如,由安全存储器访问电路600提供的元数据编码和解码可以防止地址被操纵以引起缓冲器上溢,和/或可以阻止程序代码访问其不具有访问许可的存储器。
在实施例中,安全存储器访问电路600包括地址编码电路652,当存储器以多种不同方式中的任一种被分配(例如,由操作系统,在堆中)并且被提供给执行程序时,包括通过使用诸如malloc、alloc之类的函数或新的函数、或经由加载程序隐式地、或由编译器静态地分配存储器等等,地址编码电路652可被调用。结果,指向所分配的存储器的经编码的地址用地址元数据被编码。
地址元数据可以包括有效范围元数据。有效范围元数据可以允许执行程序操纵有效范围内的地址的值(例如,通过对指针的明文部分执行指针算术),但是如果使用超出有效范围的地址来访问存储器则可能损坏地址(例如,通过影响被用作密码的微调输入的一部分的指针的密文部分或指针的其他位)。替代地或附加地,有效范围元数据可以用于标识有效代码范围,例如,程序代码被允许访问的存储器范围(例如,所编码的范围信息可以用于在寄存器上设置显式范围)。可以被编码在地址元数据中的其他信息包括对地址的访问限制(例如,地址可以用于写入、执行、还是仅读取所引用的存储器)。
在实施例中,安全存储器访问电路600包括地址解码电路662,地址解码电路662可以被调用以在利用诸如MOV之类的处理器指令的存储器读取和写入操作中验证所编码的元数据,其中通用寄存器被用作存储器地址以从存储器读取值或向存储器写入值(例如,加载/存储),以及在涉及对存储器的“使用”(诸如控制转移指令,例如CALL/JMP等)和/或可以采用存储器操作数的任何指令的其他操作中验证所编码的元数据。用于存储器访问的间接(例如,经编码的虚拟/线性)存储器地址首先由处理器解码和/或解密以得到正确的虚拟/线性存储器地址。
在实施例中,在存储器分配操作(例如,“malloc”)中(或在其期间),存储器分配电路(例如,系统存储器中的有特权系统组件内的存储器管理代码)可以为缓冲器分配存储器范围并且返回地址和对应元数据(例如,范围和/或许可元数据)。例如,存储器分配电路可以将明文范围信息编码在地址中(例如,在加密之前,在未使用/非标准位中),或者将元数据作为一个或多个单独的参数提供给指令,其中(多个)参数指定范围和/或代码许可信息。因此,根据实施例,存储器分配电路可以调用地址编码电路652。地址编码电路652包括范围规则电路654和地址调节电路656,如下所所述,范围规则电路654和地址调节电路656用元数据(例如,范围和/或许可元数据)和“调节”来编码地址。地址编码电路652可以将元数据存储在地址的未使用部分(例如,64位地址的非标准位)中。
为了确定有效范围元数据,范围规则电路654可以选择有效范围元数据来指示由地址引用的缓冲器的尺寸的上限。地址调节电路656可以根据需要调节有效范围元数据,使得只要地址指向在由范围元数据指示的有效范围内的存储器位置,则地址范围中的地址的较高地址位(例如,最高有效位)不会改变,这可以使地址能被操纵(例如,由执行算术操作的软件,等等),但是仅在操纵不会使地址超出有效范围(例如,上溢缓冲器)的情况下。换言之,处理器将采用调节值并且将其加到地址(指针)值,并且只要该操作不影响地址的密文(或用作微调的一部分的位),则存储器访问被允许。在实施例中,调节值本身可以被加密为经编码地址的一部分以防止推测攻击者控制地址的调节值。
地址编码电路652可以使用有效范围元数据来选择要被加密的地址的一部分。加密电路658可以使用秘密密钥(例如,图1A中的密钥154)和微调来对地址的所选择部分(以及一些实施例中的调节和/或标识标签)加密,如下文进一步描述。在存储器访问操作(例如,读取、写入或执行操作)中,地址解码电路662可以对先前编码的地址解码。为了这样做,解密电路664可以使用秘密密钥和微调对地址的经加密部分(以及一些实施例中的经加密调节和/或经加密标识标签)解密,如下文进一步描述。
地址恢复电路666可以将地址返回至其原始(例如,规范)形式,以便恢复地址的原始值(例如,真实的、原始的线性存储器地址)。为了这样做,地址恢复电路666可以移除编码在地址的未使用位中的有效范围元数据(例如,将未使用位返回至它们的原始形式)。如果地址成功地解码,则存储器访问操作成功地完成。然而,如果经编码地址已经被操纵(例如,由软件),使得其值落在由范围元数据指示的有效范围之外(例如,上溢缓冲器),则作为由解密电路664执行的解密过程的结果,地址将被损坏。被损坏的间接地址将引起错误(例如,一般保护错误)。以此方式,安全存储器访问电路650使处理器能针对缓冲器上溢攻击和类似利用提供访问控制和地址安全。
现在参考图7,在一些实施例中,计算机系统可以在操作期间建立计算环境710(例如,本机和/或虚拟运行时或“执行”环境)。环境710中描绘的各种模块可被具体化为硬件、固件、软件或其组合。在环境710中,用户空间应用734(或有特权系统组件742,例如,在加载用户空间应用734中)可以在计算机系统的操作期间不时地发布存储器分配702。存储器分配702可以根据需要在被传递至处理器(例如,处理器112)之前由有特权系统组件742的存储器分配电路746变换(例如,编译或解释)。在处理器中,响应于存储器分配702(例如,代替常规“malloc”指令),地址编码电路652被调用。如本文所述,鉴于常规malloc指令简单地分配存储器并且返回(未被保护的)指针,地址编码电路652对包括元数据705(例如,范围和/或许可信息,已经是编码在地址中的明文(还没有处理器应用的加密),或者作为指令的指定范围的单独参数)的地址704进行编码,并且返回经编码地址706。
类似地,用户空间应用734或有特权系统组件742可以不时地发布存储器访问708,存储器访问708可由处理器作为从存储器读取并且向寄存器写入或从寄存器读取并且向存储器写入的处理器指令(例如,MOV指令)来处置。使用MOV指令作为示例,安全移动电路660仅在成功调用地址解码电路662之后执行存储器访问。尽管安全移动电路660和地址解码电路662在图6和图7中被示出为分开的模块,但是应当理解,地址解码电路662可以被合并到安全移动电路660中或者可以被单独地实现。此外,应当理解,地址解码电路662可以被合并到作为MOV指令的替代或附加的其他类型的指令(例如,调用、JMP等等)中或者由其他类型的指令引用。例如,诸如调用和JMP之类的控制转移指令可以为代码加载经编码地址以执行到处理器的程序计数器寄存器(例如,指令指针或RIP,其中RIP是使用64位代码中的指令相对寻址的指令指针寄存器)中。指令指针寄存器然后可以由程序查询,并且作为结果,当前程序计数器地址将是经编码形式(到当前程序计数器位置的偏移)。
如果地址解码电路662成功解码经编码地址706,则原始地址704被返回给有特权系统组件742并且存储器访问被完成(716),或者程序执行在新的程序计数器位置处开始(在控制流改变的情况下)。如果经编码地址706未成功解码,则引起错误(718)。
现在参考图8A和图8B,示出用于执行存储器分配过程的方法802和820的示例。方法802和820的部分可以由计算机系统的硬件、固件和/或软件(例如,由执行存储器分配电路746的有特权系统组件742)执行。在图8A中,方法802响应于来自调用代码(例如,有特权系统组件742或用户空间应用734)的对存储器分配的调用而开始。在框810中,计算机系统确定调用代码是否被授权分配存储器。为了这样做,计算机系统可以利用处理器寄存器集合来记录最近采取的代码分支的位置,例如,最后分支记录(LBR)。例如,为了确定调用代码(例如,调用函数的代码),函数可以查询LBR以查看分支历史。替代地,函数可以针对返回地址查询调用堆栈(但是堆栈上的返回地址可能不如存储在处理器寄存器中的数据安全)。如果计算机系统确定调用代码未被授权分配存储器,则在框812中引起错误。如果计算机系统确定调用代码被授权分配存储器,则计算机系统前进至框814并且使用本文中公开的技术发起安全存储器分配。因此,计算机系统从框814前进至方法900的起点,在图9中示出并且在下文描述。
在图8B中,方法820响应于方法900的框924处的经编码地址的输出而开始。在框822中,计算机系统将地址的经编码版本(例如,经编码地址706)返回给在图8A的框814中发起存储器分配的调用代码。在框824中,调用代码使用经编码地址来访问所分配的存储器(例如,缓冲器)。在这样做时,调用代码可以通过例如对经编码地址执行算术操作来改变或修改经编码地址。因此,调用代码的后续读取或写入操作可以触发对图10的方法的执行,如下文所述。
现在参考图9,示出用于保护地址的方法900的示例。方法900的部分可以由计算机系统的硬件、固件和/或软件(例如,由处理器112调用地址编码电路652)执行。方法900响应于(例如,由存储器管理器模块在图8A的框814中的)存储器分配而开始。在框910中,计算机系统获得地址、地址范围和编码地址所需的其他输入(例如,代码块标识符或指令指针,如下文所述)。在框912中,计算机系统确定调用代码(例如,图8A的框810中发起存储器分配的代码)是否被授权访问在框910中接收的间接地址(例如,地址704)。为了这样做,计算机系统可以通过验证指令指针或调用代码的调用程序特权级别信息来执行访问控制检查,调用代码的调用程序特权级别信息可以从例如存储器管理器模块的堆管理器获得。如果计算机系统确定调用代码未被授权访问地址,则引起错误(914)。如果计算机系统确定调用代码被授权访问地址,则计算机系统前进至框916。在框916中,计算机系统确定地址的未使用(例如,非标准)地址位以执行地址范围编码。为了这样做,计算机系统可以简单地使用地址的较高(例如,最高有效)未使用/非标准位。应注意,经编码地址不需要是架构上非标准的。相反,未使用/非标准地址可以简单地是由例如有特权系统组件742留出的存储器范围以实现本文公开的地址编码。
在框918中,计算机系统创建元数据(例如,有效范围和/或许可数据)并且将元数据存储在框916中选择的地址的未使用/非标准位中。示意性地,元数据指示由地址指向的缓冲器的尺寸的上限。为了创建元数据,计算机系统将地址值转换到中心位置,其中最高有效标准地址位对于有效存储器范围不变。在一些实施例中,范围元数据包括用于确定存储器范围尺寸的2的幂的“指数”。在一些情况下,“调节”用于强制值到2的幂的范围的末尾,如下所述。在其他实施例中,当缓冲器“下溢”需要被解决(与缓冲器“上溢”相反)时,调节可以用于强制缓冲器到2的幂的范围的开始。通过使用指数元数据,可以定义任何2的幂的存储器范围(例如,2,4,8,16…2^64)。
以下是范围元数据编码的简单示例。地址0000b–0011b容纳范围0-3,其中较高两位不变。然而,如果指针被修改为去往索引4,则较高位中的一个将改变。因此,有效范围元数据可以被编码为[2](对于较高两位编码范围4),并且有效范围元数据可以被存储在较高非标准位中,例如,“[2]00xxb”。在该示例中,指数的尺寸将是2位(例如,值[1-4]),以覆盖在示例中使用的4位地址。下面的表1示出多个附加简化示例。
Figure BDA0002853878620000191
Figure BDA0002853878620000201
表1.地址编码示例
在表1中,使用与浮点格式类似的格式来表示经编码地址。在表1的第三列中的经编码地址中,括号中的数字,例如,[2],是指数或有效范围元数据;大括号中的数字,例如,{3},是调节值,并且调节值右边的地址指示其中存储有效范围元数据和调节值的未使用/非标准位。在框920中,计算机系统确定要应用于有效范围的调节(或“偏移”)并且将调节值存储在间接地址的未使用/非标准位中。在一些实施例中,调节用于强制经编码范围到2的幂边界的末尾(例如,用于设置缓冲器尺寸的特定上界)。以此方式,可以创建原始(未编码)有效地址范围的经编码版本。经编码版本可以被设计为使得在有效范围上最少数量的较高位将改变(例如,使得对较高位的加密将在解密时检测/放大对经编码地址的修改)。编码是可逆的,使得只要编码在范围内被修改,原始预期有效地址范围就可以被返回。在上面的示例中,十进制范围0-3(二进制0000b-0011b)可以被编码为[2]{0}00xxb(其中“xx”意味着这些位可以对于范围采取任何值:00,01,10,11)。在另一示例中,十进制范围1-4(0001b-0100b)可以被编码为[2]{-1}00xxb(其中调节被减去以便保持较高位恒定)。替代地,同一十进制范围1-4(0001b-0100b)可以被编码为[2]{3}01xxb(这次加上调节3以便保持较高位恒定)。利用任一种表示,经编码版本解码回到原始地址范围1-4。在又一示例中,如果缓冲器尺寸为4KB,则可以使用精度为4字节的10位调节值。
其他实施例可以使用有符号调节值(例如,2的补码),其中取决于调节的符号(+/-),缓冲器可以被调节到2的幂的边界的开始或末尾。取决于调节符号,此类实施例可以防止缓冲器上溢或下溢情况。在未使用/非标准地址中16位可用(例如,在当前64位处理器中)的情况下,可用位中的10位可以用于调节,并且其余6位可以用于有效范围元数据(例如,指数值/2的幂)。如果指数值达到超过4KB页的范围,则调节可以由乘数2扩展以允许在2的甚至更大幂的范围内的大缓冲器的调节(注意,在一些实施例中,4096字节被10位调节值完全覆盖,在较高(2的幂)位将改变之前,10位调节值允许调节将缓冲器“调节”为在4KB页中以最后4字节字结尾)。此类调节(例如,加1)将一次调节缓冲器位置4字节。在其他实施例中,初始调节尺寸和字尺寸的任何其他选择是可能的。在另一示例中,如果指数的值为13,则调节值可以被乘以2,使得调节将仍然涵盖完整的2的幂的范围(在这种情况下,如果一次调节8字节,则是两个4KB页),等等(例如,指数值14意味着调节值被乘以4,并且指数值15意味着调节值被乘以8,以此类推,从而允许调节涵盖完整的2的幂的范围)。
在框922中,计算机系统对地址的一部分加密,其中地址的要被加密的一部分由有效范围元数据(例如,指数/2的幂)和调节值确定。有效范围元数据确定经编码地址的要被加密的最高有效地址位的数量(例如,下至最小数量,因此一些地址位可以总是被加密)。在一些实施例中,调节值和/或标识标签也被加密(例如,以创建块密码的合理块尺寸)。在一些实施例中,在有效范围元数据中标识的被使用位/标准地址的最高有效位利用秘密密钥(例如,秘密密钥720)被加密,使用有效范围元数据(其可以或可以不包括调节值)作为微调。在所示实施例中,有效范围元数据(例如,指数/2的幂)不会被加密,因为处理器使用有效范围元数据明文来确定要加密的位数。然而,在可微调的块密码(并且由此影响被加密的位)的情况下,有效范围元数据(例如,指数/2的幂)可以被用作微调。可以用作微调的其他数据值包括:存储在间接地址的未使用位中的数据,缓冲器尺寸的上限,被选择为缓冲器尺寸的上限的2的幂边界的指数,应用于2的幂边界的调节值,代码块标识符,指令指针数据,编码在元数据中的许可信息,和/或版本号(当重新分派/调用先前被分派给程序的指针时有用,版本可以由处理器在寄存器中维护)。实施例可以使用诸如Simon、Speck密码、和PRINCE密码之类的小的块密码(例如,加密32位数据),因为块尺寸对应于(适应)64位虚拟/线性存储器地址/指针的尺寸。作为加密的附加或替代,密码可以用于生成消息认证码(MAC),消息认证码可以被截断并且存储在未使用的非标准线性/虚拟地址位中;该密码MAC可以用于检测当在虚拟地址的边界之外操纵时对虚拟地址的篡改或修改。
如本文所使用,除了其他方面,“微调”可以指代除了常用的明文或密文输入和密钥(例如,秘密密钥720)之外的块密码的第二输入。对两个较高标准位加密使计算机系统能检测地址何时已经被非法改变,因为加密算法将使被非法改变的较高位产生对于攻击者不确定的随机位序列,当非法改变的间接地址被使用时,随机位序列很可能产生错误。
使用诸如可微调块密码之类的密码模式加密算法对地址的要被加密的部分(例如,较高的被使用/标准位)加密,使用有效范围元数据和调节(例如,在上面的示例中,[2]{-1})作为微调。可微调块密码的一些示例包括:XOR-加密-XOR(XEX),Liskov、Rivest和Wagner(LRW),和利用密文窃取的基于XEX的微调码本模式(XTS)。可以使用其中密文中的任何单个位变化导致跨整个被解密的明文的变化的其他位扩散方法。如果需要,替代实施例可以通过使用与块密码类似的仍实现合理的位扩散的非密码方法来用安全性交换性能。
通过使用具有位可选择的块尺寸(例如,SPECK)的算法,或者允许具有使用其余未加密位(例如,在固定块尺寸之外的额外位)的微调的固定块尺寸的算法,为加密选择的密码可以用硬件实现。在一些实施例中,密码具有足够的位扩散,使得对经加密地址位作出的任何位改变在解密时将均等地影响(级联通过)所有位位置。给定任何改变或边界破坏,这为被损坏的地址提供基础。通过使用这种方法,如果攻击者试图篡改元数据(例如,指数或调节值或标识标签,或被加密的最高有效位),则所得的经解码地址将被损坏。在64位地址空间中,地址损坏将以高概率产生错误,从而允许地址损坏(以及指针访问或边界破坏)被有特权系统组件742(例如,操作系统/执行程序/VMM/替代模式/调试跟踪/管理处理器/子系统等等)捕获。
在以上示例中,如果地址/指针值被增加超过3,那么以此方式修改地址/指针将损坏较高标准位,并且导致不能受攻击者控制的非确定性存储器访问。例如,超过缓冲器尺寸一个字节将产生会以高概率导致页错误的随机存储器访问。这是由于密码的用于确保甚至一个位的改变将穿过所有最高有效位扩散的位扩散属性。作为强制值到2的幂的范围的末尾的调节的结果,缓冲器上溢导致对被加密的地址位的损坏。
密码微调可以被扩展为包括代码块标识符以提供访问控制,对于这些访问控制代码块(例如,调用代码的块)被允许使用间接地址/指针来访问存储器。此外,指令指针(其可以被称为“程序计数器”)信息或范围可以被编码为指针加密微调的一部分。指令指针信息可以用于限制什么代码可以访问什么数据的范围。例如,所有代码可以被布置在64位地址空间内的固定存储器块内。具有类似访问许可的代码可以在相同块或范围内被编组在一起。微调可以包括存储器块的标识符,来自该存储器块的指令正在执行。以此方式,代码和数据可以是相关联的,并且是访问受控的,使得来自不同代码块的攻击者将不能使用经加密指针来访问受保护的块的数据,因为如果错误的代码块标识符被用作微调,那么经加密指针不会正确地解码。此外,当代码块调用例如malloc以将存储器分配给它本身时,malloc可以使用调用代码的存储器块返回经加密地址以确保对所分配的存储器的私有访问(只要所分配的存储器未被释放并且然后重新分配给另一代码块)。替代地,标识调用代码的其他方法可以在微调中使用,诸如保护密钥。更进一步,由处理器112使用以控制对存储器的访问的用于读取/写入/执行访问的元数据可以被用作用于经加密地址位的微调的一部分。此外,指令指针本身可以被表示为(例如,基于范围的)经编码指针。在这种情况下,元数据和经加密地址位可以用作标识访问数据指针或请求存储器分配/分派的代码块的“微调”的一部分。
现在参考图10,示出用于解码地址的方法1000的示例。方法1000的部分可以由计算机系统的硬件、固件和/或软件(例如,由处理器112调用安全移动电路660和/或地址解码电路662)执行。方法1000响应于诸如读取、写入或执行操作之类的存储器访问操作(例如,MOV指令)而开始。下面的表2提供可以使用本文公开的地址编码技术的MOV指令的一些示意性示例。当然,不同处理器架构可以以指令的不同名称或不同选项/参数指代“MOV”功能。由此,所公开实施例应用于跨不同架构的所有类型的“MOV”功能,无论用于指代此类功能的术语如何。此外,MOV指令是一个示例,并且可以访问存储器以读取/写入数据的任何指令可以应用本文公开的地址编码和解码方法。
Figure BDA0002853878620000241
表2.示例MOV指令
在框1010中,计算机系统获得经编码地址(例如,可以从寄存器获得的经编码地址706)。在框1012中,计算机系统确定在框1010中获得的经编码地址是否具有未使用或非标准位。如果计算机系统确定经编码地址不具有未使用/非标准位(例如,地址未落入非标准的或以其他方式保留的地址范围内,不论地址范围是32位、64位、128位还是替代架构可能需要的任何范围),则引起错误(1014)。如果计算机系统确定经编码地址具有未使用/非标准位(例如,地址落入标准的或保留的地址范围内),则计算机系统前进至框1016。在框1016中,通过使用在图9的框922中所使用的加密算法的对应解密算法,并且使用由图9的框922中的加密算法所使用的相同秘密密钥和微调,计算机系统对经编码地址的经加密部分解密。在框1018中,计算机系统对经解密地址中的范围元数据“撤销”调节(例如,通过从地址的完整解密值中减去未使用/非标准位中的经解密调节值)。在框1030中,计算机系统通过例如移除未使用/非标准位将经解密地址返回至其原始(例如,标准)形式。在框1022中,计算机系统使用由框1020输出的经解码地址作为“真实”(例如,虚拟或线性)存储器地址(例如,作为指针)。在框1024中,计算机系统确定在框1022处用作存储器地址/指针的经解码地址是否是被损坏的地址。如果经解码地址被损坏,则引起错误(1014)。如果经解码地址未被损坏,则在框1026中,计算机系统使用经解码地址作为存储器地址/指针来成功地完成存储器访问操作。以此方式,方法1000允许计算机系统验证范围经编码的间接地址,并且在将范围经编码的地址转换为实际存储器地址之前实施嵌入范围检查。此外,无效调节值(例如,超出2的幂的范围的调节值)可以用于以某种概率确定损坏何时发生以及被保留以检测损坏何时发生的无效地址值或元数据。即使损坏未被检测到,所得的地址对于攻击者将是不确定的(并且因此不可用)。
标签和地址编码/加密
图11表示其中存储器标签利用地址的经加密部分来加密的实施例。其中存储器标签被包括在由存储器分配器(例如,malloc)分派的地址的经加密部分中的实施例可以防止攻击者操纵地址的密文部分而不会同时影响标签值。因此,攻击者不能独立地采取固定地址并且开始猜测标签位。加密将使标签值和经加密地址位改变,从而产生与随机地址相关联的随机标签。
其中存储器标签被包括在密码指针的经加密部分中的实施例可以防止攻击者猜测标签。如果经加密指针的任何部分被修改,则所有经解密位将是随机的。经解密地址和标签都将是不同的;因此,攻击者不能将标签与经加密地址关联,因为每当攻击者试图修改密文并且对结果进行推测,这两者都会改变。
示例实施例
在实施例中,一种处理器包括解码器、高速缓存、地址变换电路、高速缓存控制器和存储器控制器。解码器用于对指令解码。指令用于指定与数据对象相关联的第一地址,第一地址具有第一存储器标签。地址变换电路用于将第一地址变换为第二地址,第二地址用于标识数据对象的存储器位置。比较器用于将第一存储器标签和与第二地址相关联的第二存储器标签进行比较。高速缓存控制器用于检测与存储器位置相关联的高速缓存未命中。存储器控制器用于响应于比较器检测到第一存储器标签与第二存储器标签之间的匹配并且高速缓存控制器检测到高速缓存未命中而将数据对象从存储器位置加载到高速缓存中。
在各实施例中,以下各项中的任一项或任何组合也可以适用。第一地址可以是虚拟地址,并且第二地址可以是物理地址。存储器控制器还可以用于阻止加载与存储器位置对应的高速缓存行,直到比较器已经检测到匹配。存储器控制器还可以用于响应于比较器检测到第一存储器标签与第二存储器标签之间的失配而将不指示数据对象的数据加载到与存储器位置对应的高速缓存行中。处理器还可以包括污染队列电路,用于响应于比较器检测到第一存储器标签与第二存储器标签之间的失配而设置指示符以指示与存储器位置对应的高速缓存行是无效的。污染队列电路还可以用于仅在指令的结果已经被提交之后向软件提供高速缓存行是无效的指示。处理器还可以包括指针安全电路,用于定义第一存储器标签。处理器还可以包括加密电路,用于至少部分地基于第一存储器标签密码地保护数据对象。第一存储器标签可以包括标识标签,用于标识数据对象的类型、功能、存储器位置或用途。加密电路可以用于使用存储器标签的至少一部分来至少部分地定义加密算法的微调输入。第一存储器标签可以包括加密标签,并且加密电路还可以用于使用加密标签来标识多个加密密钥中的一个。第一存储器标签可以包括小对象标签,用于指示与存储器位置相关联的高速缓存行是否用于包括多个数据对象。小对象标签可以用于实现子高速缓存行粒度的存储器加标签。第一存储器标签包括边界距离标签,用于指示第一存储器地址与数据对象之间的允许距离。处理器还可以包括完整性校验电路,用于至少部分地基于第一地址和数据对象的加密值生成完整性校验值。处理器还可以包括指针安全电路,用于至少部分地基于完整性校验值检测对第一地址的篡改。
在实施例中,一种处理器包括:解码器,用于对指令解码,指令用于将存储器区域分配给软件程序;以及执行单元,用于执行指令。执行单元包括:范围规则电路,用于确定存储器区域的有效范围;地址调节电路,用于确定第一多个地址位和第二多个地址位,第一多个地址位要由软件程序使用以操纵有效范围内的地址,第二多个地址位用于包括存储器标签以指示访问许可;以及加密电路,用于对地址的至少一部分和存储器标签加密以生成要返回给软件程序的经加密的地址。
在实施例中,一种处理器包括:解码器,用于对指令解码,指令用于指定与数据对象相关联的经加密的第一地址;解密电路,用于对经加密的第一地址解密以生成经解密的第一地址和经解密的第一存储器标签;高速缓存;地址变换电路,用于将经解密的第一地址变换为第二地址,第二地址用于标识数据对象的存储器位置;比较器,用于将第一存储器标签和与第二地址相关联的第二存储器标签进行比较;高速缓存控制器,用于检测与存储器位置相关联的高速缓存未命中;以及存储器控制器,用于响应于比较器检测到第一存储器标签与第二存储器标签之间的匹配并且高速缓存控制器检测到高速缓存未命中而将数据对象从存储器位置加载到高速缓存中。
在实施例中,一种处理器包括:解码器,用于对指令解码,指令用于指定与数据对象相关联的第一地址,第一地址具有第一存储器标签;高速缓存;地址变换电路,用于将第一地址变换为第二地址,第二地址用于标识数据对象的存储器位置;比较器,用于将第一存储器标签和与第二地址相关联的第二存储器标签进行比较;高速缓存控制器,用于检测与存储器位置相关联的高速缓存未命中;以及用于响应于比较器检测到第一存储器标签与第二存储器标签之间的匹配并且高速缓存控制器检测到高速缓存未命中而将数据对象从存储器位置加载到高速缓存中的装置。
在各实施例中,以下各项中的任一项或任何组合也可以适用。装置还可以用于阻止加载与存储器位置对应的高速缓存行,直到比较器已经检测到匹配。装置还可以用于响应于比较器检测到第一存储器标签与第二存储器标签之间的失配而将不指示数据对象的数据加载到与存储器位置对应的高速缓存行中。处理器还可以包括污染队列装置,用于响应于比较器检测到第一存储器标签与第二存储器标签之间的失配而设置指示符以指示与存储器位置对应的高速缓存行是无效的。污染队列装置还可以用于仅在指令的结果已经被提交之后向软件提供高速缓存行是无效的指示。
在实施例中,一种处理器包括:解码器,用于对指令解码,指令用于将存储器区域分配给软件程序;执行单元,用于执行指令,执行单元包括:范围规则装置,用于确定存储器区域的有效范围;地址调节装置,用于确定第一多个地址位和第二多个地址位,第一多个地址位要由软件程序使用以操纵有效范围内的地址,第二多个地址位用于包括存储器标签以指示访问许可;以及加密装置,用于对地址的至少一部分和存储器标签加密以生成要返回给软件程序的经加密的地址。
在实施例中,一种处理器包括:解码器,用于对指令解码,指令用于指定与数据对象相关联的经加密的第一地址;解密电路,用于对经加密的第一地址解密以生成经解密的第一地址和经解密的第一存储器标签;高速缓存;地址变换电路,用于将经解密的第一地址变换为第二地址,第二地址用于标识数据对象的存储器位置;比较器,用于将第一存储器标签和与第二地址相关联的第二存储器标签进行比较;高速缓存控制器,用于检测与存储器位置相关联的高速缓存未命中;以及用于响应于比较器检测到第一存储器标签与第二存储器标签之间的匹配并且高速缓存控制器检测到高速缓存未命中而将数据对象从存储器位置加载到高速缓存中的装置。
在实施例中,一种方法包括:对指令解码,指令用于指定与数据对象相关联的第一地址,第一地址具有第一存储器标签;将第一地址变换为第二地址,第二地址用于标识数据对象的存储器位置;将第一存储器标签和与第二地址相关联的第二存储器标签进行比较;检测与存储器位置相关联的高速缓存未命中;以及响应于检测到第一存储器标签与第二存储器标签之间的匹配并且检测到高速缓存未命中而将数据对象从存储器位置加载到高速缓存中。
在各实施例中,以下各项中的任一项或任何组合也可以适用。第一地址可以是虚拟地址,并且第二地址可以是物理地址。方法还可以包括阻止加载与存储器位置对应的高速缓存行,直到检测到匹配。方法还可以包括响应于检测到第一存储器标签与第二存储器标签之间的失配而将不指示数据对象的数据加载到与存储器位置对应的高速缓存行中。方法还可以包括响应于比较器检测到第一存储器标签与第二存储器标签之间的失配而设置指示符以指示与存储器位置对应的高速缓存行是无效的。方法还可以包括仅在指令的结果已经被提交之后向软件提供高速缓存行是无效的指示。
在实施例中,一种方法包括:对指令解码,指令用于将存储器区域分配给软件程序;执行指令,执行包括确定存储器区域的有效范围;确定第一多个地址位,第一多个地址位要由软件程序使用以操纵有效范围内的地址;确定第二多个地址位,第二多个地址位用于包括存储器标签以指示访问许可;以及对地址的至少一部分和存储器标签加密以生成经加密的地址;以及将经加密的地址返回给软件程序。
在实施例中,一种方法包括:对指令解码,指令用于指定与数据对象相关联的经加密的第一地址;对经加密的第一地址解密以生成经解密的第一地址和经解密的第一存储器标签;将经解密的第一地址变换为第二地址,第二地址用于标识数据对象的存储器位置;将第一存储器标签和与第二地址相关联的第二存储器标签进行比较;检测与存储器位置相关联的高速缓存未命中;以及响应于检测到第一存储器标签与第二存储器标签之间的匹配并且检测到高速缓存未命中而将数据对象从存储器位置加载到高速缓存中。
在实施例中,一种设备可以包括用于执行以上所描述的功能和/或方法中的任一项的装置。在实施例中,一种机器可读有形介质可以存储指令,这些指令在由机器执行时,使该机器执行以上所描述的方法中的任一项。
示例性核、处理器和系统架构
已经参考处理器112描述和描绘了本发明的实施例,该处理器可以表示在其中以不同方式和/或出于不同目的具体化本发明的许多不同处理器中的任一个。这些处理器和核,例如如下所述,可以包括诸如高速缓存和分支预测器之类的硬件,该硬件改善性能,但是可能使处理器和/或核更容易受到根据本发明的实施例可以防御的分析的攻击。
例如,其中可以具体化本发明的处理器中的核(例如,核118)的实现方式可以包括:旨在用于通用计算的通用有序核;旨在用于通用计算的高性能通用乱序核;旨在主要用于图形和/或科学(吞吐量)计算的专用核。其中可以具体化本发明的处理器的实现方式可以包括:中央处理单元(CPU),包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及协处理器,包括旨在主要用于图形和/或科学(吞吐量)计算的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:在与CPU分开的芯片上的协处理器;在与CPU相同的封装中但在分开的管芯上的协处理器;与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及芯片上系统(SoC),其可以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。
接着描述示例性核架构,随后描述示例性处理器和计算机架构。每个处理器可以包括一个或多个核,其中每个核和/或核的组合可以被构造和设计为在不同时刻执行一个或多个线程、进程或其他指令序列。根据称为同时(或对称)多线程(SMT)的一类方法中的任一种或任何其他方法,核架构和设计技术可以准备和/或支持多个线程的并发执行。
此外,如上文所提及且在下文中更详细地解释,本公开的实施例可以应用于任何类型的处理器或处理元件,包括:通用处理器、服务器处理器或在服务器环境中使用的处理元件、协处理器(例如,安全协处理器)、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备。一个或多个处理器可以实现在一个或多个芯片上。一个或多个处理器可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。上面列出并在本文中描述的处理器和处理设备是示例性的;如本文所解释,本公开适用于任何处理器或处理设备。
此外,如上所述和在下文中更详细解释的,本公开的实施例可以应用于使用多种指令集和指令集架构的处理器或处理元件,包括例如:x86指令集(可选地包括已经添加更新版本的扩展);加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有诸如NEON之类的可选的附加扩展);IBM的“Power”指令集或任何其他指令集,包括RISC和CISC指令集两者。上面列出的和本文中描述的指令集和指令集架构是示例性的;如本文所解释,本公开适用于任何指令集或指令集架构。
示例性核架构
图12A是图示根据本发明的实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线两者的框图。图12B是图示根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核两者的框图。图12A-图12B中的实线框图示有序流水线和有序核,而任选增加的虚线框图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图12A中,处理器流水线1200包括取出级1202、长度解码级1204、解码级1206、分配级1208、重命名级1210、调度(也被称为分派或发布)级1212、寄存器读取/存储器读取级1214、执行级1216、写回/存储器写入级1218、异常处置级1222和提交级124。
图12B示出处理器核1290,处理器核1290包括耦合到执行引擎单元1250的前端单元1230,并且两者耦合到存储器单元1270。核1290可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或者混合或替代的核类型。作为又一选项,核1290可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。例如,如上文所解释,核1290可以是包含以下各项的集合的任何成员:通用处理器、服务器处理器或在服务器环境中使用的处理元件、协处理器(例如,安全协处理器)、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备。
前端单元1230包括分支预测单元1232,该分支预测单元1232耦合至微操作高速缓存1233和指令高速缓存单元1234,该指令高速缓存单元1234耦合至指令转换后备缓冲器(TLB)1236,该指令转换后备缓冲器1236耦合至指令取出单元1238,该指令取出单元1238耦合至解码单元1240。解码单元1240(或解码器)可对指令进行解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。微操作、微代码进入点、微指令等可以至少存储在微操作高速缓存1233中。解码单元1240可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1290包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元1240中,或以其他方式在前端单元1230内)。微操作高速缓存1233和解码单元1240耦合至执行引擎单元1250中的重命名/分配器单元1252。在各实施例中,诸如1233的微操作高速缓存还可以或者替代地被称为op高速缓存、u-op高速缓存、uop高速缓存或μop高速缓存;并且微操作可以被称为微op、u-op、uop和μop。
执行引擎单元1250包括重命名/分配器单元1252,该重命名/分配器单元1252耦合至引退单元1254和一个或多个调度器单元的集合1256。(多个)调度器单元1256表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元1256耦合至(多个)物理寄存器堆单元1258。(多个)物理寄存器堆单元1258中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,(多个)物理寄存器堆单元1258包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元1258由引退单元1254重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器以及(多个)引退寄存器堆;使用寄存器映射和寄存器池;等等)。引退单元1254和(多个)物理寄存器堆单元1258耦合至(多个)执行集群1260。(多个)执行集群1260包括一个或多个执行单元的集合1262以及一个或多个存储器访问单元的集合1264。执行单元1262可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可包括专用于特定功能或功能集合的数个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元1256、(多个)物理寄存器堆单元1258和(多个)执行集群1260示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元1264的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序发布/执行。
存储器访问单元的集合1264耦合到存储器单元1270,该存储器单元1270包括数据TLB单元1272,该数据TLB单元1272耦合到数据高速缓存单元1274,该数据高速缓存单元1274耦合到第2级(L2)高速缓存单元1276。在一个示例性实施例中,存储器访问单元1264可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元1270中的数据TLB单元1272。指令高速缓存单元1234还耦合到存储器单元1270中的第2级(L2)高速缓存单元1276。L2高速缓存单元1276耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线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。
核1290可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的任选的附加扩展),IBM的“Power”指令集,或任何其他指令集,包括RISC和CISC指令集两者),包括本文中所描述的(多条)指令。在一个实施例中,核1290包括用于支持紧缩数据指令集扩展(例如,AVX、AVX2、AVX-512)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、SMT(例如,单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用
Figure BDA0002853878620000351
超线程化技术的SMT)。
尽管在乱序执行的上下文中描述寄存器重命名,但应当理解,可在有序架构中使用寄存器重命名。尽管所图示出的处理器的实施例还包括分开的指令和数据高速缓存单元1234/1274以及共享L2高速缓存单元1276,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第1级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。替代地,所有(多个)高速缓存都可在核和/或处理器的外部。
示例性核架构
图13是根据本发明的实施例的可以包括在处理器中的示意性乱序发布/执行处理器核的框图。在图13中,处理器核1300包括前端单元1310、整数单元1320、FP单元1330、加载存储单元1340和第2级(L2)高速缓存单元1350。出于说明性目的而提供图13,并且由此图13示出根据多种方法中的一种布置和命名的各种单元,这些方法根据本发明的实施例是可能的。
在图13中,前端单元1310包括分支预测单元1311、微操作高速缓存(op高速缓存)单元1312、指令高速缓存(i高速缓存)单元1313、解码单元1314和微操作(微op)队列单元1315。分支预测单元1311包括分支预测电路,诸如分支目标缓冲器(BTB),用于减少平均分支延迟,并且分支预测单元1311耦合至op高速缓存单元1312和i高速缓存单元1313。op高速缓存单元1312包括op高速缓存,其中对与指令相关联的微操作进行高速缓存。i高速缓存1313单元包括i高速缓存,在实施例中i高速缓存可以是用于高速缓存指令的64K四路i高速缓存。i高速缓存单元1313耦合至解码单元1314以提供要被解码的所高速缓存的指令。解码单元1314包括解码电路,诸如指令解码器,以解码指令。在实施例中,前端单元1310可以每时钟周期取出至多四条指令,并且解码单元1314可以每时钟周期解码至多四条指令。op高速缓存单元1312和解码单元1314各自耦合至微操作队列单元1315,以提供用于将微操作加载到微操作队列单元1315中的两条路径。微操作队列单元1315包括微操作队列,在实施例中微操作队列可以每周期将六个微操作分派给一个或多个执行单元。
此外,在图13中,整数单元1320包括整数重命名单元1321;整数调度器单元1322A、1322B、1322C、1322D、1322E和1322F(统称为整数调度器单元1322);整数物理寄存器堆1323;算术逻辑单元(ALU)1324A、1324B、1324C和1324D(统称为ALU 1324);和地址生成单元(AGU)1325A和1325B(统称为AGU 1325)。整数重命名单元1321耦合至微操作队列单元1315以接收要全部地或部分地由ALU 1324和/或AGU 1325中的一个或多个执行的一个或多个微操作。整数重命名单元1321包括寄存器重命名电路,并且还耦合至整数调度器单元1322,整数调度器单元1322进而耦合至整数物理寄存器堆1323,以提供整数寄存器重命名。整数调度器单元1322包括用于调度要全部地或部分地由ALU 1324和/或AGU 1325中的一个或多个执行的微操作的调度电路。整数物理寄存器堆1323包括物理整数寄存器堆,在实施例中物理整数寄存器堆可以包括168个物理整数寄存器。ALU 1324和AGU 1325中的每一个耦合至物理寄存器堆1323以接收要用作微操作的执行中的输入的值和/或提供作为微操作的执行的输出的值。
此外,在图13中,FP单元1330包括FP重命名单元1331、FP调度器单元1332、FP寄存器堆1333、FP乘法器1334A和1334B(统称为FP乘法器1334)、和FP加法器1335A和1335B(统称为FP加法器1335)。FP重命名单元1331耦合至微操作队列单元1315以接收要全部地或部分地由FP乘法器1334和/或FP加法器1335中的一个或多个执行的一个或多个微操作。FP重命名单元1331包括寄存器重命名电路,并且还耦合至FP调度器单元1332,FP调度器单元1332进而耦合至FP寄存器堆1333,以提供FP寄存器重命名。FP调度器单元1332包括用于调度要全部地或部分地由FP乘法器1334和/或FP加法器1335中的一个或多个执行的微操作的调度电路。FP乘法器1334和FP加法器1335中的每一个耦合至FP寄存器堆1333以接收要用作微操作的执行中的输入的值和/或提供作为微操作的执行的输出的值。
此外,在图13中,加载存储单元1340包括加载存储队列单元1341和数据高速缓存(d高速缓存)单元1342。加载存储队列单元1341可以包括任何数量的加载和/或存储队列,在实施例中每时钟周期提供两次加载和一次存储,耦合至AGU 1325以接收用于加载和/或存储操作的存储器地址。d高速缓存单元1342包括d高速缓存,在实施例中d高速缓存可以是32K八路第1级(L1)d高速缓存,在其中对数据进行高速缓存,d高速缓存耦合至整数物理寄存器堆1323、FP寄存器堆1333、和加载存储队列单元1341以接收由微操作的执行生成的数据并且提供要在微操作的执行中使用的数据。
此外,在图13中,L2高速缓存单元1350包括L2高速缓存,在实施例中L2高速缓存可以是512K八路高速缓存,在其中对指令和数据进行高速缓存。
示例性处理器架构
图14是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器1400的框图。图14中的实线框示出具有单个核1402A、系统代理1410、一个或多个总线控制器单元的集合1416的处理器1400,而可选附加的虚线框示出具有多个核1402A-N、系统代理单元1410中的一个或多个集成存储器控制器单元的集合1414以及专用逻辑1408的替代处理器1400。
由此,处理器1400的不同实现方式可包括:1)CPU,其中专用逻辑1408是集成图形器件和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1402A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核1402A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;3)协处理器,其中核1402A-N是大量通用有序核;以及4)核1402A-N表示任何数量的具有分开的输入/输出(I/O)块的分解的核。因此,处理器1400可以是通用处理器、服务器处理器或在服务器环境中使用的处理元件、协处理器(例如,安全协处理器)、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备。处理器可被实现在一个或多个芯片上。处理器1400可以是一个或多个衬底的部分,和/或可使用数种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何工艺技术被实现在一个或多个衬底上。
存储器层级结构包括核内的一个或多个级别的高速缓存、或一个或多个共享高速缓存单元的集合1406、以及耦合至集成存储器控制器单元的集合1414的外部存储器(未示出)。共享高速缓存单元的集合1406可包括一个或多个中间级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合,中间级别的高速缓存诸如第2级(L2)、第3级(L3)、第4级(L4)或其他级别的高速缓存。虽然在一个实施例中,基于环的互连单元1412将集成图形逻辑1408(集成图形逻辑1408是其示例,并且在本文中还被称为专用逻辑)、共享高速缓存单元的集合1406以及系统代理单元1410/(多个)集成存储器控制器单元1414互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,维护一个或多个高速缓存单元1406和核1402A-N之间的一致性。
在一些实施例中,核1402A-N中的一个或多个能够实现多线程化。系统代理1410包括协调并操作核1402A-N的那些组件。系统代理单元1410可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核1402A-N以及集成图形逻辑1408的功率状态进行调节所需要的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1402A-N在架构指令集方面可以是同构的或异构的;即,核1402A-N中的两个或更多个核可以能够执行相同的指令集,而其他核可以能够仅执行该指令集的子集或者执行不同的指令集。
图15是根据本发明的实施例的可以包括在处理器中的示意性中央处理单元(CPU)复合体的框图。在实施例中,L3高速缓存是在四核模块(称为CPU复合体或CCX)上分散的8MB16路高速缓存,提供每核2MB“片”的L3高速缓存。然而,CCX中的L3高速缓存片被实现为使得L3高速缓存是共享高速缓存。多个CCX可以被包括在单个处理器中(例如,两个CCX形成16MBL3高速缓存)。每个CCX上的8MB高速缓存是分开的,因此这些高速缓存充当每个四核模块的末级高速缓存,具有到另一L3高速缓存中的适当挂钩以确定数据是否被需要(涉及L3高速缓存设计的协议允许每个核访问其他核的L3高速缓存)。因此,这些L1、L2和L3高速缓存是一致性高速缓存,其中CCX内的L3高速缓存片和CCX之间的L3高速缓存片由高速缓存一致性互连(也称为高速缓存一致性结构)连接。
图16是根据本发明的实施例的可以包括在处理器中的示意性高速缓存层级结构的框图。在图16中,高速缓存层级结构1600包括L1i高速缓存1610A和L1 d高速缓存1610B(统称为L1高速缓存1610)、L2指令和数据高速缓存1620、和第3级(L3)指令和数据高速缓存1630。在实施例中,L1高速缓存1610和L2高速缓存1620都是私有/本地写回高速缓存,而L3高速缓存1630是受害高速缓存。在实施例中,L1 i高速缓存1610A是64KB 4路高速缓存,L1d高速缓存1610B是32KB 8路高速缓存,L2高速缓存1620是512KB 8路高速缓存,并且第3级(L3)高速缓存1630是8MB 16路高速缓存。
示例性计算机架构
图17-图21是示例性计算机架构的框图。本领域中已知的用于膝上型设备、台式机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、通用处理器、服务器处理器或在服务器环境中使用的处理元件、协处理器(例如,安全协处理器)、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图17,所示出的是根据本发明一个实施例的系统1700的框图。系统1700可包括一个或多个处理器1710、1715,这些处理器耦合至控制器中枢1720。在一个实施例中,控制器中枢1720包括图形存储器控制器中枢(GMCH)1790和输入/输出中枢(IOH)1750(其可以在分开的芯片上);GMCH 1790包括存储器和图形控制器,存储器1740和协处理器1745耦合到该存储器和图形控制器;IOH 1750将I/O设备1760耦合到GMCH 1790。或者,存储器和图形控制器中的一者或两者被集成在处理器内(如本文中所描述的),存储器1740和协处理器1745直接耦合到处理器1710以及控制器中枢1720,控制器中枢1720与IOH 1750处于单个芯片中。
附加的处理器1715的任选性质在图17中利用虚线来表示。每一个处理器1710、1715可包括本文中所描述的处理核中的一个或多个,并且可以是某个版本的处理器1400。
存储器1740可以例如是动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器中枢1720经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接1795来与(多个)处理器1710、1715进行通信。
在一个实施例中,处理器1745是专用处理器(包括例如通用处理器、服务器处理器或在服务器环境中使用的处理元件、诸如安全协处理器之类的协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备)。在一个实施例中,控制器中枢1720可包括集成图形加速器。
在物理资源1710、1715之间可以存在包括架构、微架构、热、功耗特性等的一系列品质度量方面的各种差异。
在一个实施例中,处理器1710执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1710将这些协处理器指令识别为具有应当由附连的协处理器1745执行的类型。因此,处理器1710在协处理器总线或其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1745。(多个)协处理器1745接受并执行所接收的协处理器指令。
现在参照图18,所示出的是根据本发明的实施例的更具体的第一示例性系统1800的框图。如图18中所示,多处理器系统1800是点对点互连系统,并且包括经由点对点互连1850耦合的第一处理器1870和第二处理器1880。处理器1870和1880中的每一个可以是某个版本的处理器1400。在本发明的一个实施例中,处理器1870和1880分别是处理器1710和1715,而协处理器1838是协处理器1745。在另一实施例中,处理器1870和1880分别是处理器1710、协处理器1745。
处理器1870和1880示出为分别包括集成存储器控制器(IMC)单元1872和1882。处理器1870还包括作为其总线控制器单元的一部分的点对点(P-P)接口1876和1878;类似地,第二处理器1880包括P-P接口1886和1888。处理器1870、1880可经由使用点对点(P-P)接口电路1878、1888的P-P接口1850来交换信息。如图18中所示,IMC 1872和1882将处理器耦合至相应的存储器,即存储器1832和存储器1834,这些存储器可以是本地地附连至相应的处理器的主存储器的部分。
处理器1870、1880可各自经由使用点对点接口电路1876、1894、1886、1898的各个P-P接口1852、1854来与芯片组1890交换信息。芯片组1890可以任选地经由高性能接口1892来与协处理器1838交换信息。在一个实施例中,协处理器1838是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1890可经由接口1896耦合到第一总线1816。在一个实施例中,第一总线1816可以是外围组件互连(PCI)总线、或者诸如PCI快速(PCI Express)总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图18中所示,各种I/O设备1814可连同总线桥1818一起耦合至第一总线1816,该总线桥1818将第一总线1816耦合至第二总线1820。在一个实施例中,一个或多个附加处理器1815(诸如通用处理器、服务器处理器或在服务器环境中使用的处理元件、协处理器(例如,安全协处理器)、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备)耦合至第一总线1816。在一个实施例中,第二总线1820可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合至第二总线1820,这些设备包括例如键盘和/或鼠标1822、通信设备1827以及存储单元1828,该存储单元1828诸如可包括指令/代码和数据1830的盘驱动器或其他大容量存储设备。此外,音频I/O 1824可耦合至第二总线1820。注意,其他架构是可能的。例如,代替图18的点对点架构,系统可实现多分支总线或其他此类架构。
现在参考图19,示出的是根据本发明的实施例的第二更具体的示例性系统1900的框图。图18和图19中的类似元件使用类似的附图标记,并且从图19中省略了图18的某些方面以避免混淆图19的其他方面。
图19图示出处理器1870、1880可分别包括集成存储器和I/O控制逻辑(“CL”)1872和1882。由此,CL 1872、1882包括集成存储器控制器单元并且包括I/O控制逻辑。图19图示出不仅存储器1832、1834耦合至CL 1872、1882,而且I/O设备1914也耦合至控制逻辑1872、1882。传统I/O设备1915耦合至芯片组1890。
现在参照图20,所示出的是根据本发明的实施例的SoC 2000的框图。图14中的相似的元件具有同样的附图标记。另外,虚线框是更先进的SoC上的任选的特征。在图20中,(多个)互连单元2002被耦合至:应用处理器2010,其包括一个或多个核的集合1402A-N以及(多个)共享高速缓存单元1406,一个或多个核的集合1402A-N包括高速缓存单元1404A-N;系统代理单元1410;(多个)总线控制器单元1416;(多个)集成存储器控制器单元1414;一个或多个协处理器的集合2020,其可包括集成图形逻辑、图像处理器、音频处理器、和视频处理器、通用处理器、服务器处理器或在服务器环境中使用的处理元件、安全协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备;静态随机存取存储器(SRAM)单元2030;直接存储器存取(DMA)单元2032;以及用于耦合到一个或多个外部显示器的显示单元2040。在一个实施例中,(多个)协处理器2020包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器,等等。
现在参照图21,所示出的是根据本发明的实施例的SoC 2000的框图。
结论
本文中所公开的机制的实施例可被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可以被实现为在可编程系统上执行的计算机程序或程序代码,这些可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备,处理器包括例如通用处理器、服务器处理器或在服务器环境中使用的处理元件、协处理器(例如,安全协处理器)、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元、密码加速器、固定功能加速器、机器学习加速器、联网加速器、或计算机视觉加速器)、现场可编程门阵列、或任何其他处理器或处理设备。
可将程序代码(诸如,图18中所图示的代码1830)应用于输入指令,以执行本文中所描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中所描述的机制不限于任何特定的编程语言的范围。在任何情况下,语言可以是经编译或经解释的语言。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的表示处理器中的各种逻辑的表示性指令来实现,该机器可读介质在由机器读取时使得该机器制造用于执行本文中所描述的技术的逻辑。被称为“IP核”的此类表示可被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中所描述的结构、电路、装置、处理器和/或系统特征。此类实施例也可被称为程序产品。
根据本发明的实施例的将由处理器核执行的指令可以以下文详细描述的“通用向量友好指令格式”来具体化。在其他实施例中,不利用此类格式而使用另一指令格式,然而,下文对写掩码寄存器、各种数据变换(混合、广播等)、寻址等的描述一般适用于上文(多条)指令的实施例的描述。此外,在下文中详述示例性系统、架构和流水线。指令可在此类系统、架构和流水线上执行,但是不限于详述的那些系统、架构和流水线。
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成将由核来处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图22是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图22示出可使用x86编译器2204来编译高级语言2202形式的程序,以生成可由具有至少一个x86指令集核的处理器2216原生执行的x86二进制代码2206。具有至少一个x86指令集核的处理器2216表示可以通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:(1)英特尔x86指令集核的指令集的实质部分,或(2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器2204表示可操作用于生成x86二进制代码2206(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器2216上执行。类似地,图22示出可以使用替代的指令集编译器2208来编译利用高级语言2202的程序,以生成可以由不具有至少一个x86指令集核的处理器2214(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代指令集二进制代码2210。指令转换器2212用于将x86二进制代码2206转换成可以由不具有x86指令集核的处理器2214原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码2210相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。由此,指令转换器2212通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码2206的软件、固件、硬件或其组合。
可能已经参考其他附图的示例性实施例描述了流程图中的操作。然而,应当理解,流程图的操作可由除参照其他附图所讨论的本发明的那些实施例之外的实施例来执行,并且参照其他附图所讨论的本发明的实施例可执行与参照流程图所讨论的操作不同的操作。此外,尽管附图中的流程图示出由本发明的某些实施例执行的操作的特定顺序,但是,应当理解,此类顺序是示例性的(例如,替代实施例可按不同顺序执行操作,可组合某些操作,可使某些操作重叠,等等)。
本发明的实施例的一个或多个部分可使用软件、固件和/或硬件的不同组合来实现。实施例可使用电子设备来实现,电子设备使用机器可读介质(也称为计算机可读介质)来存储和(在内部以及/或者通过网络与其他电子设备)传输代码(该代码由软件指令组成,并且有时被称为计算机程序代码或计算机程序)和/或数据,机器可读介质诸如机器可读存储介质(例如,磁盘、光盘、只读存储器(ROM)、闪存设备、相变存储器)和机器可读传输介质(也称为载体)(例如,电、光、无线电、声或其他形式的传播信号——诸如,载波、红外信号)。因此,电子设备(例如,计算机)可以包括硬件和软件,诸如,一个或多个处理器的集合,该一个或多个处理器的集合耦合到一个或多个机器可读存储介质,该机器可读存储介质用于存储供在处理器集合上执行的代码和/或用于存储数据。例如,电子设备可包括包含代码的非易失性存储器,因为非易失性存储器即使当电子设备被关闭(当功率被移除)时也可使代码/数据留存,而当电子设备被开启时,将由那个电子设备的(多个)处理器执行的代码的那部分典型地从较慢的非易失性存储器被复制到那个电子设备的易失性存储器(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))中。典型的电子设备还包括用于建立与其他电子设备的网络连接(以使用传播信号传输和/或接收代码和/或数据)的一个或多个物理网络接口的集合。
尽管已经通过若干实施例来描述本发明,但是本领域技术人员将认识到,本发明不限于所描述的实施例,本发明可由在所附权利要求的精神和范围内的修改和变化实践。描述因此被视为是说明性的而不是限制性的。

Claims (25)

1.一种处理器,包括:
解码器,用于对指令解码,所述指令用于指定与数据对象相关联的第一地址,所述第一地址具有第一存储器标签;
高速缓存;
地址变换电路,用于将所述第一地址变换为第二地址,所述第二地址用于标识所述数据对象的存储器位置;
比较器,用于将所述第一存储器标签和与所述第二地址相关联的第二存储器标签进行比较;
高速缓存控制器,用于检测与所述存储器位置相关联的高速缓存未命中;以及
存储器控制器,用于响应于所述比较器检测到所述第一存储器标签与所述第二存储器标签之间的匹配并且所述高速缓存控制器检测到所述高速缓存未命中而将所述数据对象从所述存储器位置加载到所述高速缓存中。
2.如权利要求1所述的处理器,其中,所述第一地址是虚拟地址,并且所述第二地址是物理地址。
3.如权利要求1所述的处理器,其中,所述存储器控制器还用于阻止加载与所述存储器位置对应的高速缓存行,直到所述比较器已经检测到所述第一存储器标签与所述第二存储器标签之间的所述匹配。
4.如权利要求1所述的处理器,其中,所述存储器控制器还用于响应于所述比较器检测到所述第一存储器标签与所述第二存储器标签之间的失配而将不指示所述数据对象的数据加载到与所述存储器位置对应的高速缓存行中。
5.如权利要求1所述的处理器,进一步包括指针安全电路,用于提供所述第一存储器标签。
6.如权利要求1所述的处理器,进一步包括加密电路,用于至少部分地基于所述第一存储器标签密码地保护所述数据对象。
7.如权利要求1所述的处理器,其中,所述第一存储器标签包括标识标签,用于标识所述数据对象的类型、功能、存储器位置或用途。
8.如权利要求6所述的处理器,其中,所述加密电路使用所述存储器标签的至少一部分来至少部分地定义加密算法的微调输入。
9.如权利要求6所述的处理器,其中,所述第一存储器标签包括加密标签,其中所述加密电路用于使用所述加密标签来标识多个加密密钥中的一个。
10.如权利要求1所述的处理器,其中,所述第一存储器标签包括小对象标签,用于指示与所述存储器位置相关联的高速缓存行是否用于包括多个数据对象。
11.如权利要求10所述的处理器,其中,所述小对象标签用于实现子高速缓存行粒度的存储器加标签。
12.如权利要求1所述的处理器,进一步包括完整性校验电路,用于至少部分地基于所述第一地址和所述数据对象的加密值生成完整性校验值。
13.如权利要求12所述的处理器,进一步包括指针安全电路,用于至少部分地基于所述完整性校验值检测对所述第一地址的篡改。
14.一种处理器,包括:
解码器,用于对第一指令解码,所述第一指令用于将存储器区域分配给软件程序;
执行单元,用于执行所述第一指令和所述第二指令,所述执行单元包括:
范围规则电路,用于确定所述存储器区域的有效范围;
地址调节电路,用于确定第一多个地址位和第二多个地址位,所述第一多个地址位要由所述软件程序使用以操纵所述有效范围内的地址,所述第二多个地址位用于包括存储器标签以指示访问许可;以及
加密电路,用于对所述地址的至少一部分和所述存储器标签加密以生成要返回给所述软件程序的经加密的地址。
15.如权利要求14所述的处理器,其中,所述解码器还用于对第二指令解码,所述第二指令用于指定与数据对象相关联的经加密的第一地址,所述处理器进一步包括解密电路,用于对所述经加密的第一地址解密以生成经解密的地址和经解密的存储器标签。
16.一种方法,包括:
对指令解码,所述指令用于指定与数据对象相关联的第一地址,所述第一地址具有第一存储器标签;
将所述第一地址变换为第二地址,所述第二地址用于标识所述数据对象的存储器位置;
将所述第一存储器标签和与所述第二地址相关联的第二存储器标签进行比较;
检测与所述存储器位置相关联的高速缓存未命中;以及
响应于检测到所述第一存储器标签与所述第二存储器标签之间的匹配并且检测到所述高速缓存未命中而将所述数据对象从所述存储器位置加载到高速缓存中。
17.如权利要求16所述的方法,其中,所述第一地址是虚拟地址,并且所述第二地址是物理地址。
18.如权利要求16所述的方法,进一步包括阻止加载与所述存储器位置对应的高速缓存行,直到检测到所述匹配。
19.如权利要求16所述的方法,进一步包括响应于检测到所述第一存储器标签与所述第二存储器标签之间的失配而将不指示所述数据对象的数据加载到与所述存储器位置对应的高速缓存行中。
20.如权利要求16所述的方法,进一步包括对经加密的地址解密以提供所述第一地址和所述第一存储器标签。
21.一种处理器,包括:
解密装置,用于对指令解码,所述指令用于指定与数据对象相关联的第一地址,所述第一地址具有第一存储器标签;
高速缓存;
地址变换装置,用于将所述第一地址变换为第二地址,所述第二地址用于标识所述数据对象的存储器位置;
比较装置,用于将所述第一存储器标签和与所述第二地址相关联的第二存储器标签进行比较;
高速缓存控制器装置,用于检测与所述存储器位置相关联的高速缓存未命中;以及
存储器控制器装置,用于响应于所述比较装置检测到所述第一存储器标签与所述第二存储器标签之间的匹配并且所述高速缓存控制器装置检测到所述高速缓存未命中而将所述数据对象从所述存储器位置加载到所述高速缓存中。
22.如权利要求21所述的处理器,其中,所述第一地址是虚拟地址,并且所述第二地址是物理地址。
23.如权利要求21所述的处理器,其中,所述存储器控制器装置还用于阻止加载与所述存储器位置对应的高速缓存行,直到所述比较装置已经检测到所述第一存储器标签与所述第二存储器标签之间的所述匹配。
24.如权利要求21所述的处理器,其中,所述存储器控制器装置还用于响应于所述比较装置检测到所述第一存储器标签与所述第二存储器标签之间的失配而将不指示所述数据对象的数据加载到与所述存储器位置对应的高速缓存行中。
25.如权利要求21所述的处理器,其中,所述第一存储器标签包括标识标签,用于标识所述数据对象的类型、功能、存储器位置或用途。
CN201980042311.5A 2018-12-28 2019-12-02 针对对计算机系统的推测性边信道分析的防御 Pending CN113260994A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/236,117 2018-12-28
US16/236,117 US11010067B2 (en) 2018-12-28 2018-12-28 Defense against speculative side-channel analysis of a computer system
PCT/US2019/063994 WO2020139517A1 (en) 2018-12-28 2019-12-02 Defense against speculative side-channel analysis of a computer system

Publications (1)

Publication Number Publication Date
CN113260994A true CN113260994A (zh) 2021-08-13

Family

ID=71122930

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980042311.5A Pending CN113260994A (zh) 2018-12-28 2019-12-02 针对对计算机系统的推测性边信道分析的防御

Country Status (7)

Country Link
US (2) US11010067B2 (zh)
EP (1) EP3903214A4 (zh)
JP (1) JP7497806B2 (zh)
KR (1) KR20210097021A (zh)
CN (1) CN113260994A (zh)
BR (1) BR112021010475A2 (zh)
WO (1) WO2020139517A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114968088A (zh) * 2022-04-08 2022-08-30 中移互联网有限公司 文件存储方法、文件读取方法及装置
TWI785952B (zh) * 2021-12-30 2022-12-01 新唐科技股份有限公司 密碼加速器以及加解密運算的差分故障分析方法

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11635965B2 (en) 2018-10-31 2023-04-25 Intel Corporation Apparatuses and methods for speculative execution side channel mitigation
US11023379B2 (en) * 2019-02-13 2021-06-01 Google Llc Low-power cached ambient computing
CN112148665B (zh) * 2019-06-28 2024-01-09 深圳市中兴微电子技术有限公司 缓存的分配方法及装置
US11947663B2 (en) * 2019-09-24 2024-04-02 The Trustees Of Columbia University In The City Of New York Control flow protection based on phantom addressing
CN112783811B (zh) * 2019-11-04 2023-08-18 富泰华工业(深圳)有限公司 微控制器架构及架构内数据读取方法
US11029957B1 (en) * 2020-03-27 2021-06-08 Intel Corporation Apparatuses, methods, and systems for instructions to compartmentalize code
US11374744B2 (en) * 2020-05-15 2022-06-28 The Boeing Company Threshold scheme enabled symmetric key member deletion
US11733972B2 (en) 2020-10-06 2023-08-22 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by providing random load data as a result of execution of a load operation that does not have permission to access a load address
US11907369B2 (en) 2020-08-27 2024-02-20 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by preventing cache memory state from being affected by a missing load operation by inhibiting or canceling a fill request of the load operation if an older load generates a need for an architectural exception
US11797673B2 (en) 2020-08-27 2023-10-24 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by expeditiously initiating flushing of instructions dependent upon a load instruction that causes a need for an architectural exception
US11868469B2 (en) 2020-08-27 2024-01-09 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by preventing all dependent instructions from consuming architectural register result produced by instruction that causes a need for an architectural exception
US11907126B2 (en) * 2020-09-25 2024-02-20 Advanced Micro Devices, Inc. Processor with multiple op cache pipelines
US11853424B2 (en) 2020-10-06 2023-12-26 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by refraining from allocating an entry in a data TLB for a missing load address when the load address misses both in a data cache memory and in the data TLB and the load address specifies a location without a valid address translation or without permission to read from the location
US11734426B2 (en) * 2020-10-06 2023-08-22 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by prevents cache line data implicated by a missing load address from being filled into a data cache memory when the load address specifies a location with no valid address translation or no permission to read from the location
US11675899B2 (en) * 2020-12-15 2023-06-13 International Business Machines Corporation Hardware mitigation for Spectre and meltdown-like attacks
US20210117341A1 (en) * 2020-12-26 2021-04-22 Intel Corporation Cache line slot level encryption based on context information
EP4248323A1 (en) * 2021-02-12 2023-09-27 Huawei Technologies Co., Ltd. Low overhead active mitigation of security vulnerabilities by memory tagging
US20220278963A1 (en) * 2021-03-01 2022-09-01 Samsung Electronics Co., Ltd. Storage device, storage system, and method of secure data movement between storage devices
KR20230015636A (ko) 2021-07-23 2023-01-31 주식회사 엘지에너지솔루션 음극 및 이를 포함하는 이차전지
US11556482B1 (en) 2021-09-30 2023-01-17 International Business Machines Corporation Security for address translation services
US20220100911A1 (en) * 2021-12-10 2022-03-31 Intel Corporation Cryptographic computing with legacy peripheral devices
US11940927B2 (en) 2022-06-14 2024-03-26 Intel Corporation Technologies for memory tagging
WO2024006371A1 (en) * 2022-06-28 2024-01-04 Apple Inc. Pc-based computer permissions
CN115033188B (zh) * 2022-08-10 2022-11-15 武汉麓谷科技有限公司 一种基于zns固态硬盘的存储硬件加速模块系统

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5396604A (en) * 1991-07-12 1995-03-07 Hewlett-Packard Company System and method for reducing the penalty associated with data cache misses
US6240183B1 (en) * 1997-06-19 2001-05-29 Brian E. Marchant Security apparatus for data transmission with dynamic random encryption
TW501011B (en) * 1998-05-08 2002-09-01 Koninkl Philips Electronics Nv Data processing circuit with cache memory
US7310706B1 (en) * 2001-06-01 2007-12-18 Mips Technologies, Inc. Random cache line refill
US6976131B2 (en) * 2002-08-23 2005-12-13 Intel Corporation Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
EP1546884A4 (en) * 2002-09-16 2007-08-01 Tigi Corp STORAGE SYSTEM ARCHITECTURES AND MULTI-CACHE ARRANGEMENTS
US7624236B2 (en) * 2004-12-27 2009-11-24 Intel Corporation Predictive early write-back of owned cache blocks in a shared memory computer system
US7475321B2 (en) * 2004-12-29 2009-01-06 Intel Corporation Detecting errors in directory entries
JP4912174B2 (ja) * 2007-02-07 2012-04-11 株式会社日立製作所 ストレージシステム及び記憶管理方法
EP2077559B1 (en) * 2007-12-27 2012-11-07 Hagiwara Solutions Co., Ltd. Refresh method of a flash memory
JP2009163542A (ja) * 2008-01-08 2009-07-23 Hitachi Ltd 論理ボリュームに関する設定を制御する制御装置
US20090220088A1 (en) * 2008-02-28 2009-09-03 Lu Charisse Y Autonomic defense for protecting data when data tampering is detected
US8494168B1 (en) * 2008-04-28 2013-07-23 Netapp, Inc. Locating cryptographic keys stored in a cache
US8732409B2 (en) * 2008-11-17 2014-05-20 Entropic Communications, Inc. Cache management policy and corresponding device
US8185692B2 (en) * 2009-02-09 2012-05-22 Oracle America, Inc. Unified cache structure that facilitates accessing translation table entries
US8443263B2 (en) * 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
US10133676B2 (en) * 2010-07-28 2018-11-20 Rambus Inc. Cache memory that supports tagless addressing
WO2012127266A1 (en) 2011-03-23 2012-09-27 Sandisk Il Ltd. Storage device and method for updating data in a partition of the storage device
FR2980285B1 (fr) * 2011-09-15 2013-11-15 Maxim Integrated Products Systemes et procedes de gestion de cles cryptographiques dans un microcontroleur securise
US10359972B2 (en) * 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US8909942B1 (en) * 2012-03-30 2014-12-09 Western Digital Technologies, Inc. MRAM-based security for data storage systems
US9111621B2 (en) * 2012-06-20 2015-08-18 Pfg Ip Llc Solid state drive memory device comprising secure erase function
US9213653B2 (en) * 2013-12-05 2015-12-15 Intel Corporation Memory integrity
US9361182B2 (en) * 2014-05-20 2016-06-07 Transcend Information, Inc. Method for read disturbance management in non-volatile memory devices
US9405920B1 (en) * 2014-05-21 2016-08-02 Amazon Technologies, Inc. Data integrity verification
US9892803B2 (en) * 2014-09-18 2018-02-13 Via Alliance Semiconductor Co., Ltd Cache management request fusing
US9436847B2 (en) 2014-09-26 2016-09-06 Intel Corporation Cryptographic pointer address encoding
US10089240B2 (en) * 2014-12-26 2018-10-02 Wisconsin Alumni Research Foundation Cache accessed using virtual addresses
MA41915A (fr) * 2015-04-07 2018-02-13 Benjamin Gittins Unités de requête de transfert de mémoire programmable
US10229051B2 (en) * 2015-12-30 2019-03-12 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device
US10489303B2 (en) 2016-03-10 2019-11-26 Arm Limited Multi-range lookup in translation lookaside buffer
JP2017167582A (ja) 2016-03-14 2017-09-21 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法
US10877897B2 (en) * 2018-11-02 2020-12-29 Intel Corporation System, apparatus and method for multi-cacheline small object memory tagging

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI785952B (zh) * 2021-12-30 2022-12-01 新唐科技股份有限公司 密碼加速器以及加解密運算的差分故障分析方法
CN114968088A (zh) * 2022-04-08 2022-08-30 中移互联网有限公司 文件存储方法、文件读取方法及装置
CN114968088B (zh) * 2022-04-08 2023-09-05 中移互联网有限公司 文件存储方法、文件读取方法及装置

Also Published As

Publication number Publication date
US20200210070A1 (en) 2020-07-02
KR20210097021A (ko) 2021-08-06
US11733880B2 (en) 2023-08-22
JP7497806B2 (ja) 2024-06-11
EP3903214A4 (en) 2022-09-07
EP3903214A1 (en) 2021-11-03
WO2020139517A1 (en) 2020-07-02
JP2022514803A (ja) 2022-02-16
US20210349634A1 (en) 2021-11-11
BR112021010475A2 (pt) 2021-08-24
US11010067B2 (en) 2021-05-18

Similar Documents

Publication Publication Date Title
US11733880B2 (en) Memory region allocation to a software program
EP3757852B1 (en) Pointer based data encryption
US11711201B2 (en) Encoded stack pointers
EP3757853B1 (en) Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11575504B2 (en) Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US20200257827A1 (en) Memory write for ownership access in a core
US11625337B2 (en) Encoded pointer based data encryption
US20220382885A1 (en) Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US20210150040A1 (en) Data type based cryptographic computing
CN112149114A (zh) 利用用于指示数据类型的隐藏内联元数据的存储器保护
US20220121447A1 (en) Hardening cpu predictors with cryptographic computing context information
CN117546168A (zh) 用于瞬态侧信道安全的使用上下文信息的密码计算
CN116340963A (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