CN116260606A - 与遗留外围设备的密态计算 - Google Patents

与遗留外围设备的密态计算 Download PDF

Info

Publication number
CN116260606A
CN116260606A CN202211398902.6A CN202211398902A CN116260606A CN 116260606 A CN116260606 A CN 116260606A CN 202211398902 A CN202211398902 A CN 202211398902A CN 116260606 A CN116260606 A CN 116260606A
Authority
CN
China
Prior art keywords
memory
data
keys
encrypted
key
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
CN202211398902.6A
Other languages
English (en)
Inventor
A·特里卡利诺
A·巴萨克
R·H·瓦卡哈瓦拉
U·Y·卡卡亚
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 CN116260606A publication Critical patent/CN116260606A/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/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
    • 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/83Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/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/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance 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/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency 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/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/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)

Abstract

在一个实施例中,在互连上从外围设备接收读取请求,其中,读取请求包括进程标识符和经加密虚拟地址。基于读取请求的进程标识符获得一个或多个密钥,并且基于一个或多个密钥对读取请求的经加密虚拟地址进行解密,以获得未加密虚拟地址。基于未加密虚拟地址从存储器获取经加密数据,并且基于一个或多个密钥对经加密数据进行解密,以获得明文数据。在互连上将明文数据发送到外围设备。

Description

与遗留外围设备的密态计算
技术领域
本公开总体上涉及计算机系统的领域,更具体而言,涉及密态计算。
背景技术
密态计算可以指代计算机系统安全解决方案,其在处理器组件的内部采用密态机制以保护由计算系统存储的数据。密态机制可以用以使用密钥、细调或其他安全机制对数据自身和/或指向数据的指针进行加密。密态计算是计算行业中的重要趋势,其中,计算自身的真正基础从根本上变为密态的。密态计算代表浩瀚的改变,对系统安全性的根本性重新思考,对行业具有广泛影响。
附图说明
为了提供本公开及其特征和优点的更完整地理解,结合附图参照以下描述,其中,相同的附图标记代表相同的部分。
图1是根据本公开的至少一个实施例的示例的被配置有安全存储器访问逻辑的示例性计算设备的简化框图。
图2A是示出根据本公开的至少一个实施例的将广义化的已编码指针绑定到由该指针引用的数据的加密的过程的流程图。
图2B是示出根据本公开的至少一个实施例的对绑定到广义化的已编码指针的数据进行解密的过程的流程图。
图3示出根据特定实施例的对于IO设备提供密态计算的示例系统的简化框图。
图4示出根据本公开的实施例的读取过程的示例流程图。
图5示出根据本公开的实施例的写入过程的示例流程图。
图6示出根据本公开的实施例的可以用以存储CC密钥的示例层次结构。
图7示出包括互连架构的计算系统的实施例。
图8示出包括分层栈的互连架构的实施例。
图9示出说明利用CXL链路的示例系统的所示简化框图。
图10示出说明对于实现CXL链路所利用的示例端口架构的简化框图。
图11是示出根据至少一个实施例的示例密态计算环境的框图。
图12是示出根据至少一个实施例的示例处理器的框图。
图13A是示出根据特定实施例的示例性有序流水线和示例性寄存器重命名、乱序发射/执行流水线二者的框图。
图13B是示出根据特定实施例的待包括于处理器中的有序架构内核和示例性寄存器重命名、乱序发射/执行架构内核的示例性实施例二者的框图。
图14是根据至少一个实施例的示例计算机架构的框图。
图15是根据本公开的实施例的对比使用软件指令转换器以将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
具体实施方式
本公开提供用于可以在密态计算的上下文中使用的存储器写入指令的实现的各种可能的实施例或示例。通常,密态计算可以指代在处理器组件内部采用密态机制作为其计算的部分的计算机系统安全解决方案。一些密态计算系统可以使用经加密存储器访问指令在处理器内核中实现指针地址(或其部分)、密钥、数据和代码的加密和解密。因此,可以通过支持这些加密和解密操作的这样的方式配置处理器内核的微架构流水线。
本申请中公开的实施例涉及在强制存储器内的存储器区域的密态隔离的同时主动阻止对存储器的越界访问。密态隔离可以指代因用一个或多个不同参数对存储器的不同区域或区块进行加密而导致的隔离。参数可以包括密钥和/或细调。所隔离的存储器区域可以由包括软件实体(例如,虚拟机(VM)、应用、函数、线程)的数据结构和/或代码的对象组成。因此,可以按任意等级的粒度性(例如,比如,虚拟机之间的隔离、应用之间的隔离、函数之间的隔离、线程之间的隔离或数据结构(例如,少数字节结构)之间的隔离)支持隔离。
可以通过使用与特定存储器区域关联的密钥的密态算法执行与该存储器区域关联的数据或代码的加密和解密操作。在至少一些实施例中,密态算法也可以(或替代地)使用细调作为输入。通常,诸如“密钥”和“细调”之类的参数旨在表示可以是秘密的和/或唯一的并且由加密或解密过程使用以分别产生经加密输出值或经解密输出值的输入值。至少在受密态隔离的存储器区域或子区域当中,密钥可以是唯一值。例如,可以在可通过指令集扩展访问的处理器寄存器或处理器存储器(例如,处理器缓存、内容可寻址存储器(CAM)等)中维护密钥。细调可以从已编码指针(例如,嵌入其中的安全上下文信息)导出到存储或将要存储被加密/解密的数据或代码的存储器地址,并且至少在一些场景中,可以还包括与存储器区域关联的安全上下文信息。
包括读取和写入操作的本说明书中公开的至少一些实施例涉及基于指针的数据加密和解密,其中,指向用于数据或代码的存储器位置的指针用标签和/或其他元数据(例如,安全上下文信息)加以编码,并且可以用以导出对数据或代码密态(例如,加密和解密)算法的细调输入的至少一部分。因此,可以在密态寻址层与数据/代码加密和解密之间创建密态绑定。这样隐含地强制边界,因为远离超出对象(例如,数据)的末尾的指针很可能对于该相邻对象使用不正确的标签值。在一个或多个实施例中,用指向存储器位置和元数据的线性地址(本文也称为“存储器地址”)对指针进行编码。在一些指针编码中,指针中地址的切片或分段包括多个位,并且在秘密地址密钥和基于元数据的细调的基础上被加密(和解密)。可以用明文存储器地址(例如,线性地址)和元数据对其他指针进行编码。
为了说明用于在强制存储器区域的密态隔离的同时主动地阻止越界存储器访问的若干实施例的目的,重要的是首先理解与数据保护和存储器安全关联的操作和活动。因此,以下根本信息可以视为可以恰当地解释本公开所依据的基础。
已知的计算技术(例如,用于进程/内核分离的页表、虚拟机管理器、所管理的运行时等)已经使用架构和元数据以提供数据保护和隔离。例如,在先前的解决方案中,CPU边界外部的存储器控制器支持按更粗糙粒度性(例如,应用)的存储器加密和解密,并且经加密数据的隔离是经由访问控制实现的。典型地,密态引擎放置在处于CPU内核外部的存储器控制器中。为了被加密,在对于加密应使用哪些密钥的某种标识的情况下,数据从内核行进到存储器控制器。该标识经由物理地址中的位进行通信。因此,针对提供附加密钥或细调的任何偏差可能导致增加的费用(例如,对于新总线)或从地址总线正“窃取”的附加位,以允许用物理地址携带用于密钥或细调的附加索引或标识。访问控制可能需要使用元数据,并且处理器将使用查找表以对用于所有权、存储器大小、位置、类型、版本等的策略或关于数据的数据进行编码。动态地存储并且加载元数据需要附加存储(存储器开销)并且影响性能,尤其是对于精细粒度元数据(例如,功能即服务(FaaS)工作负载或对象边界信息)。
存储器分隔(本文也称为“存储器区域”)的密态隔离解决许多上述问题(以及更多)。在根本上新的精细粒度保护模型的情况下,密态隔离可以使进程分离、用户空间和内核的遗留模式冗余。通过存储器分隔的密态隔离,保护是密态的,其中,各种类型的处理器单元(例如,处理器和加速器)同样使用秘密密钥(和可选地,细调)和密码以按日益精细的粒度性提供访问控制和分离。实际上,可以支持对于如1字节那样小的对象到如用于整个虚拟机的数据和代码那样大的存储器分隔的隔离。在至少一些场景中,密态隔离可以导致单独应用或功能变为边界,允许每个地址空间包含多个区别的应用或功能。可以经由指针跨越隔离边界有选择地共享对象。可以对这些指针进行密态编码或非密态编码。此外,在一个或多个实施例中,在内核边界内,加密和解密发生在处理器内核内部。因为加密发生在数据写入内核外部的存储器单元(例如,L1缓存或主存储器)之前,所以不必从物理地址“窃取”位以传达密钥或细调信息,并且任意大数量的密钥和/或细调可以被支持。
密态隔离借助密态寻址层的概念,其中,处理器基于隐式和显式元数据(例如,上下文信息)和/或存储器地址自身的切片(例如,作为对可细调分组密码的细调(例如,针对密文窃取的基于XOR-加密-XOR的细调码本模式(XTS)))对软件分配的存储器地址(线性/虚拟地址空间内的地址,有时也称为“指针”)进行加密。如本文所使用的那样,除了普通明文或密文输入和密钥之外,“细调”还可以指代对分组密码的额外输入等。细调包括表示值的一个或多个位。在一个或多个实施例中,细调可以组成用于分组密码的初始化矢量(IV)的全部或部分。得到的密态已编码指针可以包括存储器地址的经加密部分(或切片)和已编码元数据(例如,上下文信息)的一些位。当执行地址的解密时,如果用以创建细调(例如,隐式和显式元数据、存储器地址的明文地址切片等)的信息对应于存储器分配器(例如,软件分配方法)进行的存储器地址的原始分配,则处理器可以正确地对地址进行解密。否则,随机地址结果将引起故障并为处理器所捕获。
这些密态已编码指针(或其部分)可以进一步由处理器用作对用以对它们引用的数据(由密态已编码指针引用的数据)进行加密/解密的数据加密密码的细调,在密态寻址层与数据/代码加密之间创建密态绑定。在一些实施例中,可以对密态已编码指针进行解密和解码,以获得线性地址。处理器可以使用线性地址(或其部分)作为对数据加密密码的细调。替代地,在一些实施例中,可以不对存储器地址进行加密,但是仍然可以用指针当中的表示唯一值的一些元数据对指针进行编码。在该实施例中,已编码指针(或其部分)可以由处理器用作对数据加密密码的细调。应注意,用作对分组密码的输入以对存储器地址进行加密/解密的细调在本文中也称为“地址细调”。相似地,用作对分组密码的输入以对数据进行加密/解密的细调在本文中也称为“数据细调”。
虽然密态已编码指针(或非密态已编码指针)可以用以隔离数据,但是经由加密,数据的完整性可能仍是易受攻击的。例如,密态隔离的数据的未授权的访问可能破坏存储数据的存储器区域,而无论数据是否被加密,破坏对于受害者未知的数据内容。可以使用完整性验证(或检查)机制(例如,消息认证代码(MAC))或隐式地基于经解密数据的熵测度或二者支持数据完整性。在一个示例中,MAC代码可以每缓存行被存储,并且每次缓存行被读取时进行评估,以确定数据是否被破坏。然而,这种机制并不主动检测未授权的存储器访问。相反,可以通过反应方式(例如,在写入数据之后)而不是主动方式(例如,在写入数据之前)检测存储器的破坏(例如,越界访问)。例如,存储器破坏可能因在对于软件实体处于越界的存储器位置处执行的写入操作而发生。在密态计算的情况下,写入操作可以使用对于存储器位置无效的密钥和/或细调。当在该存储器位置处执行随后读取操作时,读取操作可以在受破坏的存储器上使用不同的密钥并检测破坏。例如,如果读取操作使用有效密钥和/或细调,则获取到的数据将不恰当地进行解密,并且破坏可以例如使用消息认证代码或通过检测经解密数据中的高等级的熵(随机性)(隐式完整性)加以检测。
图1是根据本公开的至少一个实施例的用于在使用安全存储器访问逻辑强制存储器区域的密态隔离的同时实现用于对存储器的越界访问的主动阻挡技术的示例计算设备100的简化框图。在所示示例中,计算设备100包括处理器102,其带有地址密码术单元104、密态计算引擎108、安全存储器访问逻辑106和存储器组件(例如,缓存170(例如,L1缓存、L2缓存))和补充处理器存储器180。安全存储器访问逻辑106包括:加密存储逻辑150,其用于基于各种密钥和/或细调对数据进行加密并且然后存储经加密数据;和解密加载逻辑160,其用于读取并且然后基于密钥和/或细调对数据进行解密。密态计算引擎108可以被配置为:基于各种密钥和/或细调对用于加载操作的数据或代码进行解密,并且基于各种密钥和/或细调对用于存储操作的数据或代码进行加密。地址密码术单元104可以被配置为:对指向由线性地址引用的数据或代码的指针中编码的线性地址(或线性地址的部分)进行解密和加密。
处理器102还包括寄存器110,其可以包括例如通用寄存器和专用寄存器(例如,控制寄存器、模型特定寄存器(MSR)等)。寄存器110可以包含可以在一个或多个实施例中使用的各种数据(例如,指向存储器地址的已编码指针114)。可以对已编码指针进行密态编码或非密态编码。用一些元数据对已编码指针进行编码。如果已编码指针被密态编码,则地址位的至少一部分(或切片)被加密。在一些实施例中,用于地址、代码和/或数据的加密和解密的密钥116可以存储在寄存器110中。在一些实施例中,用于地址、代码和/或数据的加密和解密的细调117可以存储在寄存器110中。
处理器密钥105(本文也称为“硬件密钥”)可以用于各种加密、解密和/或散列操作,并且可以被配置作为处理器102的硬件中的安全密钥。处理器密钥105可以例如存储在熔丝中,存储在只读存储器中,或由产生一致的随机化位集合的物理上不可克隆的函数生成。通常,处理器密钥105可以被配置在硬件中,并且对于处理器102是已知的,但是对于特权化软件(例如,操作系统、虚拟机管理器(VMM)、固件、系统软件等)或非特权化软件并非是已知的或以其他方式可用的。
安全存储器访问逻辑106利用关于已编码指针114的元数据,其编码为已编码指针114的未使用的位(例如,64位地址的非正规位,或例如由操作系统留出的地址范围,以使得地址范围的对应高阶位可以用以存储元数据),以保护和/或提供对由已编码指针114指向的存储器位置的访问控制。例如,由安全存储器访问逻辑106提供的元数据编码和解码可以防止已编码指针114受操纵以引起缓冲区上溢,和/或可以防止程序代码访问它没有对访问的许可的存储器。指针可以当存储器(例如,由操作系统,在堆中)被分配时进行编码,并以数种不同方式(包括:通过使用函数(例如,malloc、alloc或new);或隐式地经由加载器,或由编译器静态地分配存储器,等)中的任何一种方式提供给执行程序。结果,用地址元数据对指向所分配的存储器的已编码指针114进行编码。
地址元数据可以包括有效范围元数据。有效范围元数据允许执行中的程序在有效范围内操纵已编码指针114的值,但是如果使用超越有效范围的已编码指针114访问存储器,则将破坏已编码指针114。替代地或附加地,有效范围元数据可以用以标识有效代码范围(例如,许可访问程序代码的存储器的范围(例如,所编码的范围信息可以用以在寄存器上设置显式范围))。可以在地址元数据中编码的其他信息包括对已编码指针114的访问(或许可)限制(例如,已编码指针114是否可以用以写入、执行或读取所引用的存储器)。
在至少一些其他实施例中,可以在已编码指针114的未使用的位中对其他元数据(或上下文信息)(例如,明文地址切片的大小(例如,已编码指针中嵌入的存储器地址的明文切片中的位的数量)、存储器分配大小(例如,由已编码指针引用的所分配的存储器的字节)、数据或代码的类型(例如,由编程语言定义的数据或代码的类)、许可(例如,已编码指针的读取、写入和执行许可)、数据或代码的位置(例如,存储数据或代码的地方)、待存储指针自身的存储器位置、数据或代码的所有权、已编码指针的版本(例如,每次对于新分配的存储器创建已编码指针就递增的序列号,及时确定所引用的所分配的存储器的当前所有权)、(例如,关于与已编码指针的关联而生成的)随机化位的标签、特权等级(例如,用户或管理员)、密态上下文标识符(或密式上下文ID)(例如,用于每个已编码指针的随机化或确定性唯一值)等)进行编码。例如,在一个实施例中,地址元数据可以包括对已编码指针中的明文地址切片的大小进行编码的大小元数据。大小元数据可以指定可以由执行中的程序修改的已编码指针中的最低阶位的数量。大小元数据取决于由程序请求的存储器的量。因此,如果请求16个字节,则将大小元数据编码为4(或指针的5个高位中的00100),并且将指针的4个最低位指定为可修改的位,以允许寻址到存储器的所请求的16个字节。在一些实施例中,地址元数据可以包括与已编码指针关联的随机化位的标签,以使标签对于敌手是不可预测的。敌手可以尝试猜测标签值,以使得敌手能够访问由指针引用的存储器,并且与用于生成版本值的确定性方法相比,将标签值随机化可以使敌手成功地猜测值成为较不可能的。在一些实施例中,代替随机化的标签值或除此之外,指针可以包括及时确定所引用的所分配的数据的当前所有权的版本号(或其他确定性地不同的值)。即使敌手能够猜测用于存储器的区域的当前标签值或版本号,例如,因为用于生成版本号的算法是可预测的,所以归因于敌手没有对稍后将用以对指针的该部分进行解密的密钥的访问,敌手也可能仍然不能正确地生成指针的对应经加密部分。
示例安全存储器访问逻辑106体现为处理器指令的部分(例如,体现为处理器指令集架构的部分)或微代码(例如,存储在只读存储器中并由处理器102直接执行的指令)。在其他实施例中,安全存储器访问逻辑106的部分可以体现为硬件、固件、软件或其组合(例如,体现为由计算设备100的特权化系统组件142执行的编程代码)。在一个示例中,解密加载逻辑160和加密存储逻辑150体现为执行相应解密和加密操作以隔离存储器分隔的新加载(读取)和存储(写入)处理器指令的部分。解密加载逻辑160和加密存储逻辑150验证关于利用新处理器指令(例如,其可以是现有处理器指令(例如,MOV)的对等物)的存储器读取和写入操作的已编码元数据,其中,通用寄存器用作用于从存储器读取值(例如,加载)或向存储器写入值(例如,存储)的存储器地址。
安全存储器访问逻辑106可由计算设备100执行,以例如在由计算设备100执行程序(例如,用户空间应用134)期间“内联”提供关于已编码指针的安全性。如本文所使用的那样,术语“间接地址”和“指针”可以均指代存储其他数据或指令的存储器位置的地址(例如,虚拟地址或线性地址)等。在示例中,对存储数据或代码的存储器位置的所编码的存储器地址进行存储的寄存器可以充当指针。故此,已编码指针114可体现为例如数据指针(其指代数据的位置)、代码指针(其指代可执行代码的位置)、指令指针或栈指针。如本文所使用的那样,“元数据”可以指代关于或涉及已编码指针114的信息(例如,有效数据范围、有效代码范围、指针访问许可、(例如,在位中编码为幂的)明文地址切片的大小、存储器分配大小、数据或代码的类型、数据或代码的位置、数据或代码的所有权、指针的版本、随机化位的标签、版本、软件的特权等级、密态上下文标识符等)等。
如本文所使用的那样,“存储器访问指令”可以指代“MOV”、或“LOAD”指令、或使数据在一个存储位置(例如,存储器)处得以读取、拷贝或以其他方式访问并移动到另一存储位置(例如,寄存器)中的任何其他指令(其中,“存储器”可以指代主存储器或缓存(例如,随机访问存储器的形式),并且“寄存器”可以指代处理器寄存器(例如,硬件))、或访问或操纵存储器的任何指令等。同样如本文所使用的那样,“存储器访问指令”可以指代“MOV”或“STORE”指令、或使数据在一个存储位置(例如,寄存器)处被读取、拷贝或以其他方式访问并移动到另一存储位置(例如,存储器)中的任何其他指令、或访问或操纵存储器的任何指令等。
地址密码术单元104可以包括逻辑(包括电路)以执行已编码指针的地址解码以获得数据(或代码)的存储器位置的线性地址。地址解码可以包括至少部分地基于密钥和/或从已编码指针导出的细调的当需要时(例如,如果已编码指针包括线性地址的经加密部分)的解密。地址密码术单元104可以还包括逻辑(包括电路)以执行已编码指针的地址编码,其包括至少部分地基于同一密钥和/或用以对已编码指针进行解码的同一细调的当需要时(例如,已编码指针包括线性地址的经加密部分)的加密。地址编码可以还包括:将元数据存储在指针的非正规位中。各种操作(例如,地址编码和地址解码(包括地址或其部分的加密和解密))可以由与地址密码术单元104关联的处理器指令、其他处理器指令、或单独指令或指令系列、或由特权化系统组件(例如,操作系统内核或虚拟机监控器)执行的更高级代码、或作为指令集仿真器执行。如下文更详细描述的那样,地址编码逻辑和地址解码/解密逻辑均使用元数据(例如,有效范围、许可元数据、大小(幂)、存储器分配大小、类型、位置、所有权、版本、标签值、特权等级(例如,用户或管理员)、密式上下文ID等中的一个或多个)和秘密密钥(例如,密钥116)对已编码指针114进行操作,以在存储器分配/访问等级保护已编码指针114。
加密存储逻辑150和解密加载逻辑160可以使用密态计算引擎108以对于待存储在由已编码指针114引用的存储器位置或从由已编码指针114引用的存储器位置获得的数据执行密态操作。密态计算引擎108可以包括逻辑(包括电路)以至少部分地基于从指向数据(或代码)的存储器位置的已编码指针导出的细调执行数据(或代码)解密,并且至少部分基于从指向用于数据(或代码)的存储器位置的已编码指针导出的细调执行数据(或代码)加密。引擎108的密态操作可以使用细调,其包括已编码指针114的至少一部分(或从已编码指针生成的线性地址)和/或秘密密钥(例如,密钥116)以通过将数据/代码加密和解密绑定到已编码指针保护由已编码指针114引用的存储器位置处的数据或代码。
可以使用各种不同的密态算法以实现地址密码术单元104和密态计算引擎108。通常,使用128位分组密码,高级加密标准(AES)一直是用于数据加密的支柱达数十年。同时,如今,存储器寻址典型地是64位。虽然可以参照用于64台计算机的64位存储器寻址示出并且解释本文实施例,但是所公开的实施例并非旨在受限于此,并且可以容易地适用于容纳用于指针的32位、128位或任何其他可用位大小。同样,本文实施例可以进一步适用于容纳各种大小的分组密码(例如,使用Simon、Speck、可细调K-密码、PRINCE或任何其他分组密码的64位、48位、32位、16位等)。
近来也显现适合于基于指针的加密的轻量级密码。例如,PRINCE密码可以实现于在10nm工艺中需要少如799μm2的面积的3个时钟中,在十分之一硅面积中提供AES的时延的一半。密态隔离可以利用这些新密码以及其他密码,引入新颖计算机架构概念,包括但不限于:(i)密态寻址(例如,使用关于所引用的数据(例如,嵌入指针中的元数据和/或外部元数据)、地址自身的切片或其任何合适组合的上下文信息作为细调的处理器处的数据指针的加密);和(ii)使用密态已编码指针或其部分、非密态已编码指针或其部分、关于所引用的数据的上下文信息或其任何合适的组合作为用于数据加密的细调的内核处的数据自身的加密。出于包括元数据的这种目的,可以使用可细调的各种加密模式(例如,计数器模式(CTR)和基于XOR-加密-XOR(XEX)的细调码本模式针对密文窃取(XTS))。除了提供数据机密性的加密之外,其隐式完整性也可以允许处理器确定是否正使用正确的密钥流和细调恰当地对数据进行解密。在一些分组密码加密模式下,分组密码创建密钥流,其然后(例如,使用XOR运算或其他更复杂的逻辑)与输入分组组合,以产生加密的或解密的分组。在一些分组密码中,密钥流馈送到下一分组密码中,以执行加密或解密。
图1中的示例已编码指针114体现为寄存器110(例如,处理器102的通用寄存器)。示例秘密密钥116可以由特权化系统组件142的密钥创建模块148生成,并存储在寄存器110(例如,专用寄存器或控制寄存器(例如,模型特定寄存器(MSR)))、可由处理器102读取的另一存储器位置(例如,固件、数据存储设备126的安全部分等)、外部存储器或适合于执行本文所描述的功能的另一形式的存储器之一中。在一些实施例中,可以实时计算用于对地址、数据或代码进行加密的细调,以用于加密或解密。细调117可以存储在寄存器110、可由处理器102读取的另一存储器位置(例如,固件、数据存储设备126的安全部分等)、外部存储器或适合于执行本文描述的功能的另一形式的存储器中。在一些实施例中,秘密密钥116和/或细调117存储在仅可由处理器读取的位置(例如,补充处理器存储器180)中。在至少一个实施例中,补充处理器存储器180可以实现为新的缓存或内容可寻址存储器(CAM)。在一种或多种实现中,补充处理器存储器180可以用以存储与密态隔离有关的信息(例如,密钥和潜在地细调、凭证和/或上下文ID)。
秘密密钥也可以被生成并且与密态已编码指针关联,以用于对指针中编码的地址部分(或切片)进行加密/解密。这些密钥可以与关联于指针的密钥相同或不同,以对由密态已编码指针引用的数据(或代码)执行数据(或代码)加密/解密操作。为了易于解释,术语“秘密地址密钥”或“地址密钥”可以用以指代存储器地址的加密和解密操作中使用的秘密密钥,并且术语“秘密数据密钥”或“数据密钥”可以用以指代用于对数据或代码进行加密并且解密的操作中使用的秘密密钥。
在存储器分配操作(例如,“malloc”)时(或期间),存储器分配逻辑146对于缓冲区分配存储器的范围,返回指针连同元数据(例如,范围、许可元数据、大小(幂)、存储器分配大小、类型、位置、所有权、版本、标签、特权等级、密式上下文ID等中的一个或多个)。在一个示例中,存储器分配逻辑146可以对已编码指针114中(例如,在加密之前,未使用的/非正规位中)的明文范围信息进行编码,或者将元数据作为一个或多个分离参数提供给指令,其中,参数指定范围、代码许可信息、大小(幂)、存储器分配大小、类型、位置、所有权、版本、标签、特权等级(例如,用户或管理员)、密式上下文ID或其某种合适的组合。说明性地,存储器分配逻辑146可以体现于特权化系统组件142的存储器管理器模块144中。存储器分配逻辑146使指针114用元数据(例如,范围、许可元数据、大小(幂)、存储器分配大小、类型、位置、所有权、版本、标签值、特权等级、密式上下文ID、其某种合适的组合等)加以编码。元数据可以存储在已编码指针114的未使用部分(例如,64位地址的非正规位)中。对于一些元数据或元数据组合,可以在更大的地址空间(例如,128位地址、256位地址)中对指针114进行编码,以容纳元数据或元数据组合的大小。
为了确定有效范围元数据,示例范围规则逻辑选择有效范围元数据,以指示用于由已编码指针114引用的缓冲区的大小的上限。地址调整逻辑根据需要调整有效范围元数据,以使得只要已编码指针114引用处于由范围元数据指示的有效范围内的存储器位置,地址范围中的地址的高地址位(例如,最高有效位)就不改变。这样使得已编码指针114(例如,由执行算术运算的软件等)能够被操纵,但是仅只要操纵就不使已编码指针114超出有效范围(例如,上溢缓冲区)。
在一个实施例中,有效范围元数据用以选择待加密的已编码指针114的部分(或切片)。在其他实施例中,待加密的已编码指针114的切片可以是先验已知的(例如,高32位、低32位等)。使用秘密地址密钥(例如,密钥116)和可选地,地址细调对已编码指针114的所选择的切片(以及在一些实施例中,调整)进行加密,如下文进一步描述的那样。在存储器访问操作(例如,读取、写入或执行操作)时,对先前已编码指针114进行解码。为此,使用秘密地址密钥(例如,密钥116)和地址细调(如果在加密中使用地址细调)对已编码指针114的经加密切片(并且在一些实施例中,经加密调整)进行解密,如下文进一步描述的那样。
已编码指针114基于适当的操作返回其原始(例如,正规)形式,以恢复已编码指针114的原始值(例如,真实的原始线性存储器地址)。为了在至少一个可能实施例中进行该操作,移除已编码指针114的未使用的位中所编码的地址元数据(例如,将未使用的位返回它们的原始形式)。如果已编码指针114成功地进行解码,则存储器访问操作成功地完成。然而,如果已编码指针114已经(例如,由软件、疏忽地、或由攻击者)操纵,以使得其值落在由范围元数据指示的有效范围之外(例如,上溢缓冲区),则作为对指针中的经加密地址位执行的解密过程的结果,已编码指针114可能被破坏。被破坏的指针将引起故障(例如,如果地址并未从分页结构/页表映射为存在,则普通保护故障或页故障)。可能导致生成故障的一种状况是稀疏地址空间。在此情况下,被破坏的地址很可能着落在未映射的页上并生成页错误。即使被破坏的地址着落在所映射的页上,用于该存储器区域的所授权的细调或初始化矢量也高度可能与在此情况下可以作为细调或初始化矢量提供的被破坏的地址不同。以此方式,计算设备100提供对抗缓冲区上溢攻击和相似利用的已编码指针安全性。
现在更详细地参照图1,计算设备100可以体现为用于执行本文描述的功能的任何类型的电子设备。例如,计算设备100可以体现为但不限于智能电话、平板计算机、可穿戴计算设备、膝上型计算机、笔记本计算机、移动计算设备、蜂窝电话、手机、消息传送设备、车辆遥测设备、服务器计算机、工作站、分布式计算系统、多处理器系统、消费者电子设备和/或被配置为执行本文描述的功能的任何其他计算设备。如图1所示,示例计算设备100包括至少一个处理器102,其体现有安全存储器访问逻辑106、地址密码术单元104和密态计算引擎108。
计算设备100还包括存储器120、输入/输出子系统124、数据存储设备126、显示设备128、用户接口(UI)子系统130、通信子系统132、应用134和特权化系统组件142(其说明性地包括存储器管理器模块144和密钥创建模块148)。在其他实施例中,计算设备100可以包括其他或附加组件(例如,一般在移动和/或固定计算机中发现的组件(例如,各种传感器和输入/输出设备))。此外,在一些示例中,一个或多个说明性部件可以并入另一部件中,或以其他方式形成另一部件的一部分。计算设备100的组件中的每一个可以体现为软件、固件、硬件或软件和硬件的组合。
处理器102可以体现为能够执行本文描述的功能的任何类型的处理器。例如,处理器102可以体现为单核或多核中央处理单元(CPU)、多CPU处理器或处理/控制电路、或多个各样的处理单元或电路(例如,CPU和图形处理单元(GPU)等)。
可以在内核的内部和内核边界的外部提供处理器存储器。例如,寄存器110可以包括于内核内,并且可以用以存储已编码指针(例如,114)、秘密密钥116和(可能地)细调117,以用于数据或代码和地址的加密和解密。处理器102可以还包括缓存170,其可以是例如数据在预期由处理器102获取中从存储器120获取时被存储的L1和/或L2缓存。
处理器可以还包括内核边界的外部的补充处理器存储器180。补充处理器存储器180可以是不可由软件直接访问的专用缓存。在一个或多个实施例中,补充处理器存储器180可以存储参数与其关联存储器区域之间的映射188。例如,密钥可以在映射188中映射到它们的对应存储器区域。在一些实施例中,与密钥配对的细调也可以存储在映射188中。在其他实施例中,映射188可以由软件管理。
在一个或多个实施例中,用于保护密态计算中的密钥的硬件可信实体190和密钥管理硬件192可以被配置在计算设备100中。硬件可信实体190和密钥管理硬件192可以是逻辑上分离的实体或组合为一个逻辑和物理实体。该实体被配置为以可以对代码、数据或指针密钥进行解密所依据的经加密密钥或可以导出代码、数据或指针密钥所依据的唯一密钥标识符的形式提供代码和数据密钥。硬件可信实体190和密钥管理硬件192可以体现为电路、固件、软件或其任何合适的组合。在至少一些实施例中,硬件可信实体和/或密钥管理硬件190可以形成处理器102的部分。在至少一些实施例中,硬件可信实体和/或密钥管理硬件190可以体现为在特权化状态下执行的可信固件组件。硬件可信实体的示例可以包括但是不一定限于
Figure BDA0003934236460000151
Trust Doman Extensions的Secure-Arbitration Mode(SEAM)等、
Figure BDA0003934236460000152
Converged Security Management Engine(CSME)、嵌入式安全处理器、其他可信固件等。/>
通常,可以基于特定需要和架构实现以任何合适的方式处置密钥和细调。在第一实施例中,密钥和细调二者可以是隐式的,并且因此由处理器管理。在该实施例中,密钥和细调可以由处理器在内部生成,或由安全处理器在外部生成。在第二实施例中,密钥和细调二者是显式的,并且因此由软件管理。在该实施例中,使用包括引用密钥和细调的操作数的指令在指令调用时间引用密钥和细调。在该实施例中,密钥和细调可以存储在寄存器或存储器中。在第三实施例中,密钥可以由处理器管理,而细调可以由软件管理。
计算设备100的存储器120可以体现为能够执行本文描述的功能的任何类型的易失性或非易失性存储器或数据存储。易失性存储器可以是需要电力以维持由介质存储的数据状态的存储介质。易失性存储器的非限定性示例可以包括各种类型的随机访问存储器(RAM)(例如,DRAM或静态随机访问存储器(SRAM))。可以在存储器模块中使用的一种特定类型的DRAM是同步动态随机访问存储器(SDRAM)。在特定实施例中,存储器120的DRAM符合由联合电子器件工程委员会(JEDEC)颁布的标准(例如,用于双倍数据速率(DDR)SDRAM的JESD79F、用于DDR2 SDRAM的JESD79-2F、用于DDR3 SDRAM的JESD79-3F、或用于DDR4 SDRAM的JESD79-4A(这些标准可得于www.jedec.org处))。非易失性存储器可以是不需要电力以维持由介质存储的数据状态的存储介质。非易失性存储器的非限定性示例可以包括以下中的任一者或组合:固态存储器(例如,平面或3D NAND闪存或NOR闪存)、3D交叉点存储器、使用硫属化物相变材料(例如,硫属化物玻璃)的存储器器件,字节可寻址非易失性存储器器件、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器(例如,铁电聚合物存储器)、铁电晶体管随机访问存储器(Fe-TRAM)ovonic存储器、纳米引线存储器、电可擦除可编程只读存储器(EEPROM)、其他各种类型的非易失性随机访问存储器(RAM)和磁存储存储器。
在一些实施例中,存储器120包括一个或多个存储器模块(例如,双列直插式存储器模块(DIMM))。在一些实施例中,存储器120可以位于与包括处理器102的集成电路芯片区分的一个或多个集成电路芯片上,或者可以位于与处理器102相同的集成电路芯片上。在各种实施例中,存储器120可以包括任何合适的类型存储器,并且不限于存储器的特定速度或技术。
在操作中,存储器120可以存储在计算设备100的操作期间所使用的各种数据和代码、以及操作系统、应用、程序、库和驱动程序。存储器120可以存储包括由处理器102执行的指令序列的数据和/或代码。
存储器120例如经由I/O子系统124以通信方式耦合到处理器102。I/O子系统124可以体现为电路和/或组件,以促进与处理器102、存储器120和计算设备100的其他组件的输入/输出操作。例如,I/O子系统124可以体现为或以其他方式包括存储器控制器中枢、输入/输出控制中枢、固件设备、通信链路(例如,点对点链路、总线链路、引线、电缆、光导、印制电路板迹线等)和/或用于促进输入/输出操作的其他组件和子系统。在一些实施例中,I/O子系统124可以形成片上系统(SoC)的部分,并且连同处理器102、存储器120和/或计算设备100的其他组件一起合并于单个集成电路芯片上。
数据存储设备126可以体现为任何类型的物理设备或被配置用于数据的短期或长期存储的设备(例如,比如存储设备和电路、存储卡、硬盘驱动器、固态驱动器、闪存或其他只读存储器、作为只读存储器和随机访问存储器的组合的存储器设备、或其他数据存储设备)。在各种实施例中,存储器120可以缓存数据存储设备126上存储的数据。
显示设备128可以体现为能够显示数字信息的任何类型的显示器(例如,液晶显示器(LCD)、发光二极管(LED)、等离子体显示器、阴极射线管(CRT)或其他类型的显示设备)。在一些实施例中,显示设备128可以耦合到触摸屏或其他人机接口设备,以允许用户与计算设备100的交互。显示设备128可以是用户接口(UI)子系统130的部分。用户接口子系统130可以包括包含物理或虚拟控制按钮或键、麦克风、扬声器、单向或双向静止图像和/或视频像机等的数个附加设备,以促进用户与计算设备100的交互。用户接口子系统130可以还包括诸如运动传感器、接近度传感器和眼睛跟踪设备之类的设备,其可以被配置为检测、捕获并且处理涉及计算设备100的各种其他形式的人类交互。
计算设备100还包括通信子系统132,其可以体现为能够使得计算设备100能够与其他电子设备之间的通信的任何通信电路、设备或其集合。通信子系统132可以被配置为使用任何一种或多种通信技术(例如,无线或有线通信)和关联协议(例如,以太网、蓝牙TM、Wi-FiTM、WiMAX、3G/LTE等)以实行该通信。通信子系统132可以体现为网络适配器(包括无线网络适配器)。
示例计算设备100还包括数个计算机程序组件(例如,一个或多个用户空间应用(例如,应用134)和特权化系统组件142)。用户空间应用可以体现为经由例如显示设备128或UI子系统130与终端用户直接或间接进行交互的任何计算机应用(例如,软件、固件、硬件或其组合)。用户空间应用的一些示例包括文字处理程序、文档查看器/阅读器、网络浏览器、电子邮件程序、消息传送服务、计算机游戏、相机和视频应用等。除此之外,特权化系统组件142促进用户空间应用(例如,应用134)与计算设备100的硬件组件之间的通信。特权化系统组件142的部分可以体现为能够执行本文描述的功能的任何操作系统(例如,Microsoft公司的WINDOWS的版本、Google公司的ANDROID等)。替代地或附加地,特权化系统组件142的部分可以体现为能够执行本文描述的功能的任何类型的虚拟机监控器(例如,类型I或类型II管理程序)。
示例特权化系统组件142包括密钥创建模块148,其可以体现为软件、固件、硬件或软件和硬件的组合。例如,特权化系统组件148的组件可以体现为操作系统内核、虚拟机监控器或管理程序的模块。密钥创建模块148创建秘密密钥116(例如,秘密地址密钥和秘密数据密钥),并且将它们写入处理器102具有读取访问的一个或多个寄存器(例如,专用寄存器)。为了创建密钥,密钥创建模块148可以执行例如随机数生成器或能够生成可以执行本文描述的功能的密钥的另一算法。在其他实现中,秘密密钥可以写入不可由软件直接访问的补充处理器存储器180。在又一实现中,秘密密钥可以被加密并存储在存储器120中。在一个或多个实施例中,当对于分配给特定软件实体的存储器区域生成数据密钥时,可以对数据密钥进行加密,并且可以向软件实体提供经加密数据密钥、指向经加密数据密钥的指针、或包括经加密密钥或指向经加密数据密钥的指针的数据结构。在其他实现中,可以向软件实体提供指向处理器存储器中存储的未加密数据密钥的指针或包括指向未加密数据密钥的指针的数据结构。通常,在本文所描述的实施例中可以使用用于生成、存储并且提供待用于对数据(或代码)进行加密并且解密以及待用于对指针中所编码的存储器地址(或其部分)进行加密并且解密的安全密钥的任何合适的机制。
应注意,可以使用多种方法以生成或获得用于本文公开的实施例的密钥。例如,虽然密钥创建模块148示出为计算设备100的部分,但是可以使用任何合适的认证过程从任何合适的外部源获得一个或多个秘密密钥,以将密钥安全地传递到计算设备100,这可以包括:生成密钥作为这些过程的部分。此外,特权化系统组件142可以是可信执行环境(TEE)、虚拟机、处理器102、协处理器(未示出)或计算设备100中的或安全地连接到计算设备100的任何其他合适的硬件、固件或软件的部分。此外,密钥可以是“秘密的”,这旨在意指其值保持隐藏、不可访问、混淆或以其他方式受保护以防未授权的行动方(例如,软件、固件、机器、无关的硬件组件和人类)。
图2A是示出基于已编码指针210的实施例的密态计算的普通过程200A的简化流程图。过程200A示出根据至少一个实施例的将数据存储(例如,写入)到由已编码指针210指示的存储器地址处的存储器区域,其中,数据的加密和解密绑定到指针的内容。计算设备100的硬件、固件和/或软件可以执行过程200A的至少一些部分。在所示示例中,指针210是已编码指针114的示例,并且体现为包括元数据部分的已编码线性地址。元数据部分是某种类型的上下文信息(例如,大小/幂元数据、标签、版本等),并且线性地址可以通过任何数量的可能配置(本文描述其中的至少一些)得以编码。
根据各种实施例,指针210可以具有各种配置。例如,已编码指针210可以用明文线性地址加以编码,或可以用一些明文线性地址位和一些经加密线性地址位加以编码。已编码指针210也可以取决于特定实施例用不同的元数据加以编码。例如,已编码指针210中所编码的元数据可以包括但不一定限于大小/幂元数据、标签值或版本号中的一个或多个。
通常,过程200A示出密态计算流程,其中,已编码指针210用以获得用于待存储数据的存储器220的存储器区域的存储器地址,并用以至少部分地基于从已编码指针210导出的细调对于待存储的数据进行加密。首先,地址密码术单元202对已编码指针210进行解码,以获得已解码线性地址212。已解码线性地址212可以用以使用转译后备缓冲区204或页表(未示出)获得存储器220中的物理地址214。至少部分地从已编码指针210导出数据细调217。例如,数据细调217可以包括完整已编码指针、已编码指针的一个或多个部分、已解码线性地址的部分、完整已解码线性地址、已编码元数据和/或外部上下文信息(例如,未在指针中编码的上下文信息)。
一旦已经从已编码指针210导出细调217,密态计算引擎270就可以通过基于数据密钥216和数据细调217对未加密数据222进行加密,来计算经加密数据224。在至少一个实施例中,密态计算引擎270包括加密算法(例如,密钥流生成器),其可以按特定大小粒度性(任何合适的大小)体现为AES-CTR模式分组密码272。在该实施例中,数据细调217可以用作初始化矢量(IV),并且已编码指针210的明文偏移可以用作计数器值(CTR)。密钥流生成器可以对数据细调217进行加密,以产生密钥流276,然后可以对未加密数据222和密钥流276执行密态操作(例如,逻辑函数274(例如,异或(XOR))或其他更复杂的操作),以生成经加密数据224。应注意,在正从已编码指针210获得物理地址214的同时,密钥流276的生成可以开始。因此,并行操作可以增加对未加密数据进行加密的效率。应注意,先于(或在一些实例中,代替)存储到存储器220,经加密数据可以存储到缓存(例如,170)。
图2B是示出基于已编码指针210的实施例的密态计算的普通过程200B的简化流程图。过程200B示出根据至少一个实施例的在由已编码指针210引用的存储器地址处获得(例如,读取、加载、获取)存储器区域中存储的数据,其中,数据的加密和解密绑定到指针的内容。计算设备100的硬件、固件和/或软件可以执行过程200B的至少一些部分。
通常,过程200B示出密态计算流程,其中,已编码指针210用以获得用于存储经加密数据的存储器220的存储器区域的存储器地址,并且一旦经加密数据从存储器区域获取,就至少部分地基于从已编码指针210导出的细调对经加密数据进行解密。首先,地址密码术单元202对已编码指针210进行解码,以获得用以从存储器获取经加密数据224的已解码线性地址212,如在232所指示的那样。至少部分地从已编码指针210导出数据细调217。在用于从存储器加载/读取数据的该过程200B中,以与用于向存储器存储/写入数据的反向过程200A中相同的方式导出数据细调217。
一旦已经从已编码指针210导出细调217,密态计算引擎270就可以通过基于数据密钥216和数据细调217对经加密数据224进行解密计算经解密(或未加密)数据222。如先前所描述的那样,在该示例中,密态计算引擎270包括加密算法(例如,以特定大小粒度性(任何合适的大小)体现为AES-CTR模式分组密码272的密钥流生成器)。在该实施例中,数据细调217可以用作初始化矢量(IV),并且已编码指针210的明文偏移可以用作计数器值(CTR)。密钥流生成器可以对数据细调217进行加密以产生密钥流276,然后可以对经加密数据224和密钥流276执行密态操作(例如,逻辑功能274(例如,异或(XOR)或其他更复杂的操作)),以生成经解密(或未加密)数据222。应注意,在经加密数据在232正被获取的同时,密钥流的生成可以开始。因此,并行操作可以改进对经加密数据进行解密的效率。
使用遗留、非SVM(共享虚拟存储器)设备的密态计算
本文实施例可向输入/输出(IO)设备提供密态计算的益处中的一个或多个。例如,特定实施例可以实现可以强制存储器安全(包括针对在异构工作负载中和跨越不同计算元素(例如,在CPU和GPU之间)的缓冲区溢出、释放后使用等的保护)的架构。架构可以由遗留、非CC启发的设备实现。
在特定实现中,新密态计算IO(CCIO)代理实现于主机系统中(例如,处理器的非内核或片上系统(SoC)中)。CCIO代理可以在每对象粒度的情况下对指针和关联数据唯一地进行加密。例如,在特定实施例中,可以基于与特定进程地址空间标识符(PASID)关联的密钥对数据进行加密,并且可以用与数据关联的经加密指针细调加密。一些实施例也可以定义用于每进程数据和指针密钥的特定存储技术,如以下进一步描述的那样。这些技术可以通常在本文中称为CCIO。
实现如本文描述的CCIO的实施例可以提供一种或多种优于当前保护技术的优点。具体而言,CCIO可以针对2个主类的攻击进行防御:(1)设备内的攻击和(2)跨越设备的攻击。
设备内的攻击可以包括:权限提升攻击(即,沙箱/容器转义),其中,攻击者利用工作负载内的存储器漏洞以破坏或泄露执行的权限信息或赢得其控制;和跨进程攻击,其中,攻击者利用工作负载内的存储器漏洞以破坏或泄露运行在同一设备上运行的不同设备工作负载的信息或赢得其控制。通常,设备安全架构及其驱动程序负责维护设备边界内的每进程隔离。这通常通过维护用于设备接口之间的隔离(如果设备支持多租赁),维护用于设备中存储器的存储器分离等得以实现。这些类型的攻击的一些示例包括思维控制攻击(其利用了CUDA中的缓冲区溢出以改变机器学习算法的预测)、针对GPGPU的动态缓冲区溢出检测(其在7个基准套件中发现了13个缓冲区溢出)和CUDA中的缓冲区溢出漏洞。
对于跨越设备的攻击,主要安全威胁可能来自攻击CPU工作负载以进行沙箱/容器转义的设备工作负载。该攻击可能在很大程度上取决于设备使用情况。例如,当设备支持共享虚拟存储器(SVM)时,其中,存储器页和页表二者在设备与CPU之间加以共享,设备工作负载可以访问整个CPU进程地址空间。在此情况下,恶意设备工作负载可以破坏旨在仅用于CPU使用的存储器(例如,返回地址),并使攻击者赢得CPU执行的控制。在SVM启用的情况下,当前不存在用于分离存储器或注释存储器以由CPU针对设备使用的方式。在共享虚拟存储器不受支持(或未启用)的情况下,设备工作负载与CPU工作负载之间的存储器分离按页粒度完成。CPU进程充当主资源管理器,并显式标记设备进程待访问的页。在此情况下,有缺陷的软件可以向设备给予对并不打算共享的资源的访问。
本文描述的CCIO实施例可以提供具有每对象粒度的存储器机密性,并且可以针对所有上述攻击进行保护。
图3示出根据特定实施例的对于IO设备提供密态计算的示例系统300的简化框图。在示例系统300中,主机SoC 310通过互连(例如,基于PCIe、CXL或USB的互连)315耦合到IO设备SoC 320。主机SoC 310包括处理器318,并且耦合到存储器330,存储器330可以存储与由处理器318执行指令关联的数据和/或与IO设备SoC 320关联的数据。SoC 301、320中的每一个可以包括与所示的那些相比附加的、更少的或其它的组件,或者可以包括以不同于所示的方式配置的相同组件。主机SoC 310包括根端口312,其将IO设备SoC 320与主机SoC310的处理器318以及连接到主机SoC 310的存储器330互连。在一些实例中,根端口312可以相似于PCIe根复合体(例如,图7的控制器集线器715)运作。根端口312包括IOMMU 314,其可以包括将有直接存储器访问(DMA)能力的I/O总线连接到耦合到主机SoC 310的存储器330的存储器管理单元(MMU)。根端口312还包括CCIO代理316,其可以执行本文描述的一个或多个加密/解密功能(例如,关于图4、图5描述的操作)。
如图3所示,IO设备可以运行均与唯一PASID关联的两个(或更多个)不同进程321、322。可以基于唯一的、每进程(例如,每PASID)的密钥对与每个进程(分别,331、332)关联的数据进行加密。与存储器330中的数据的位置关联的指针可以细调加密。在一些实例中,可以对指针进行编码或加密,如上所述。例如,在一些实施例中,可以基于对数据进行加密所用的每进程(例如,每PASID)密钥对指针进行加密。在其它实施例中,可以存在用于数据加密的第一密钥(数据密钥或CC数据密钥)和用于指针加密的第二密钥(指针密钥或CC指针密钥)。在存在分离的数据和指针加密密钥的情况下,密钥可以是相同的大小(例如,128位),或者可以是不同的大小(例如,128位用于指针加密,而96位用于数据加密)。
图4示出根据本公开的实施例的读取过程400的示例流程图。在所示的示例中,假设基于PCIe的互连;然而,应理解,图4所示的概念可以应用于基于CXL的互连、基于USB的互连或其他类型的IO协议。此外,应理解,除流程400中所示的那些操作之外的更少的、附加的或其它操作可以包括于或实现于CCIO实施例中。
在示例流400中,IO设备430首先发送包括PASID、总线/设备/功能(BDF)和虚拟地址的读取请求。取决于IOMMU是否被配置为对于出自设备BDF的事务进行第一级或嵌套转译,读取请求是对经加密IO虚拟地址(IOVA)的PCIe未转译请求或经加密嵌套IOVA(eIOVA)。注意,在设备进行DMA之前,应用已经在DRAM中得以分配并固定存储器页,其将然后由IO设备430访问。在分配期间,修改后的glibc库可以对数据和关联指针进行加密。应用可以使用设备工作负载中的经加密指针,并且例如经由存储器映射IO(MMIO)将工作负载提交到设备。
当主机设备中的CCIO代理420接收到未转译请求时,主机在422获取与该BDF+PASID关联的CC密钥。这可以包括用于数据和指针加密的单个密钥或分离的数据和指针加密密钥(以下描述假设存在分离的密钥)。CCIO代理然后使用CC指针密钥对eIOVA进行解密,以在424产生IOVA。CCIO代理420然后在426进行必要的转译,以获得用于所获得的IOVA的主机物理地址(HPA)。CCIO代理420然后向存储器410发起读取事务,其在412获取存储在其中的经加密数据,并且用读取完成指示将经加密数据(eData)返回CCIO代理420。
CCIO代理420随后使用eIOVA和CC数据密钥在428对接收到的经加密数据进行解密,并且用读取完成指示(例如,读取完成TLP)将明文数据(Data)发送到设备430。IO设备430可以然后如其正常的那样使用、修改等纯文本数据。
图5示出根据本公开的实施例的写入过程500的示例流程图。在所示的示例中,假设基于PCIe的互连;然而,应理解,图5所示的概念可以应用于基于CXL的互连、基于USB的互连或其他类型的IO协议。此外,应理解,除流程500中所示的那些操作之外的更少的、附加的或其它操作可以包括于或实现于CCIO实施例中。
在示例流500中,IO设备530首先发送包括明文数据(Data)、PASID、总线/设备/功能(BDF)和经加密虚拟地址(IOVA)的写入请求。取决于IOMMU是否被配置为对于出自设备BDF的事务进行第一级或嵌套转译,写入请求可以是用于经加密IO虚拟地址(IOVA)的未转译请求或经加密嵌套IOVA(eIOVA)。
当主机设备中的CCIO代理520接收到未转译请求时,CCIO代理在522获取与该BDF+PASID关联的CC密钥,在524使用获取到的CC数据密钥(其中,eIOVA用作细调)对明文数据进行加密(产生eData),在526使用CC指针密钥对eIOVA进行解密以产生IOVA,并在528进行必要的转译,以获得用于所获得的IOVA的主机物理地址(HPA)。CCIO代理然后用HPA和eData向存储器510发起写入事务,并且存储器510在512存储经加密数据。
在以上示例中,CCIO代理(例如,316、420或520)可以实现于主机设备内的任何合适位置中。例如,CCIO代理可以实现于IOMMU(例如,314)内,其可以扩展以执行CCIO操作(例如,上述加密/解密等)。这对于将CC密钥存储在VTd PASID表条目中的实施例(参见以下的进一步讨论)或对于将CC密钥存储在存储器中的实施例(参见以下的进一步讨论)可能是方便的。在其它实施例中,CCIO代理可以实现为专用组件。例如,CCIO代理可以实现为主机设备的根端口内的分离逻辑组件(例如,如图3所示)或实现为主机设备中的专用知识产权(IP)逻辑芯片(例如,图3中的根端口312外部)。该实现对于将CC密钥存储在位于CCIO代理内的专用存储器中的实施例可能是方便的(参见以下的进一步讨论)。在架构不将IOVA存储在出站完成(OTC)缓冲区中的实现中,对于每一OTC条目添加eIOVA可能是昂贵的,因为这会影响用于CC和非CC情景的所有DMA业务。因此,可以在CCIO代理中仅对于基于CCIO的出站事务实现新的出站完成缓冲区。CCIO OTC可以对于仅CCIO出站事务加以预先分配,并且当事务完成时,CCIO代理可以继续对eData进行解密。
此外,在上述实施例中,CC密钥(CC数据密钥和CC指针密钥)可以存储在主机设备中的任何合适位置中。作为一个示例,CC密钥可以存储在PASID表条目内。在该方法中,CC密钥可以缓存在PASID缓存内,这样可以加速页查找(page walk)。PASID缓存可以加以实现以加速页查找,其中,PASID表条目被缓存。因此,如果PASID表条目扩展,则对应PASID缓存亦如是。
作为另一示例,CC密钥可以存储在专用专用存储器(例如,静态随机访问存储器(SRAM))内。在这些实施例中,PASID空间的部分(例如,128个PASID)可以被开辟出来,并且软件可以将这些PASID用于CCIO。对于这些PASID,我们可以具有(例如,在CCIO代理内的)专用SRAM,以存储关联CC密钥。在此情况下,硬件将并发地使用CCIO支持每IOMMU的高达所分配数量(例如,128个)的PASID。以下表1示出所保留的PASID和CCIO条目大小的不同组合所需的MMIO空间的示例值。
Figure BDA0003934236460000251
Figure BDA0003934236460000261
表1
取决于IOMMU负责CC IO操作还是专用代理负责,主机将(使用例如新CC启用位)从PASID表条目检测CCIO是否用于特定BDF+PASID组合。如果对于该PASID启用CC,则主机将使用最低PASID位(例如,最低8位或9位)查找SRAM,以获取CC密钥并进行地址解密。可以通过相似的方式进行数据加密/解密。
作为又一示例,CC密钥可以存储在存储器(例如,动态随机访问存储器(DRAM)(例如,图3的存储器330))中,其可以提供可扩展的实现。在一些实例中,可以在存储器内实现新层次结构,并且主机可以执行另一层的页查找以获取密钥。
图6示出根据本公开的实施例的可以用以存储CC密钥的示例层次结构600。示例结构600包括4个等级的密态计算密钥表(CCKT),其中,最终等级(所示的示例中的L4)包含CC密钥。基于PASID的位查找这些表。例如,在所示示例中,第一等级1(L1)表601包括数个条目,其包括指向多个等级2(L2)表之一的指针。PASID位17-19(最高有效位)可以用以定位指向特定L2表602的L1表601内的特定条目。接下来的PASID位16-11可以于是用以定位指向多个L3表中的特定L3表603的L2表602内的特定条目。接下来的PASID位10-5可以于是用以定位指向多个L4表中的特定L4表604的L3表603内的特定条目。最后,PASID位4-0(最低有效位)可以用以定位包括与PASID关联的CC密钥的L4表604内的条目。该方法可以是非常可扩展的,因为它允许硬件支持用于所有IO进程(其可以高达2^20(~100万)个进程)的CCIO。另一益处在于,CCK表查找可以与常规PASID页查找并行化。在一些实施例中,可以定义专用缓存以加速查找。
作为又一示例,CC密钥可以存储在DRAM存储器中,但是PASID表可以扩展为包括指向存储在存储器中的CC密钥的指针。例如,PASID表条目的高未使用位(例如,PASID[255:199])可以用以存储指向可以包括指针密钥,数据密钥等的256位CCIO密钥结构的指针。主机软件可以管理CC密钥结构,并可以将多个CCIO密钥结构放置在同一页中(例如,高达128个CCIO密钥结构)。
图7-图10示出可以并入本公开的方面的示例互连实施例。参照图7,示出由互连组件集合的点对点链路组成的组构的实施例。系统700包括耦合到控制器中枢715的处理器705和系统存储器710。处理器705包括任何处理元件(例如,微处理器、主处理器、嵌入式处理器、协处理器或其他处理器)。处理器705通过前端总线(FSB)706耦合到控制器中枢715。在一个实施例中,FSB 706是如下所述的串行点对点互连。在另一实施例中,链路706包括符合不同互连标准的串行、差分互连架构。在一些实现中,系统可以包括用于实现多个协议栈的逻辑和用于协商待在公共物理层的顶部上运行的替代协议的另一逻辑等其他示例特征。
系统存储器710包括任何存储器设备(例如,随机访问存储器(RAM)、非易失性(NV)存储器或可由系统700中的设备访问的其他存储器)。系统存储器710通过存储器接口716耦合到控制器中枢715。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。
在一个实施例中,控制器中枢715是外围组件快速互连(PCIe或PCIE)互连层次结构中的根中枢、根综合体或根控制器。控制器中枢715的示例包括芯片集、存储器控制器中枢(MCH)、北桥、互连控制器中枢(ICH)、南桥和根控制器/中枢。一般,术语芯片集指代两个物理上分离的控制器中枢(即,耦合到互连控制器中枢(ICH)的存储器控制器中枢(MCH))。注意,当前系统一般包括与处理器705集成的MCH,而控制器715用于与I/O设备进行通信,如下所述。在一些实施例中,通过根综合体715可选地支持点对点路由。
在此,控制器中枢715通过串行链路719耦合到切换器/桥接器720。输入/输出模块717和721(其也可以称为接口/端口717和721)包括/实现分层协议栈,以提供控制器中枢715与切换器720之间的通信。在一个实施例中,多个设备能够耦合到切换器720。
从处理器705或系统存储器710到设备725,切换器/桥接器720将分组/消息从设备725上游(即,层次结构向上朝向根综合体)路由到到控制器中枢715和下游(即,层次结构向下远离根控制器)。在一个实施例中,切换器720称为多个虚拟PCI到PCI桥接设备的逻辑组装。设备725包括待耦合到电子系统的任何内部或外部设备或组件(例如,I/O设备、网络接口控制器(NIC)、附加件卡、音频处理器、网络处理器、硬驱动器、存储设备、CD/DVD ROM、监控器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描仪和其他输入/输出设备)。一般在PCIe行话中,例如设备称为端点。虽然没有具体示出,但是设备725可以包括PCIe到PCI/PCI-X桥接器,以支持遗留或其他版本的PCI设备。PCIe中的端点设备一般归类为遗留、PCIe或根综合体集成端点。
图形加速器730还通过串行链路732耦合到控制器中枢715。在一个实施例中,图形加速器730耦合到MCH,MCH耦合到ICH。切换器720以及相应地I/O设备725于是耦合到ICH。I/O模块731和718还用于实现分层协议栈,以在图形加速器730与控制器中枢715之间进行通信。与上面的MCH讨论相似,图形控制器或图形加速器730自身可以集成在处理器705中。此外,系统的一个或多个链路(例如,723)可以包括一个或多个扩展设备(例如,750)(例如,重定时器、中继器等)。
转向图8,示出分层协议栈的实施例。分层协议栈800包括任何形式的分层通信栈(例如,快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈或其他分层栈)。虽然以下的讨论涉及PCIe栈,但是相同的概念可以应用于其他互连栈。在一个实施例中,协议栈800是PCIe协议栈,其包括事务层805、链路层810和物理层820。接口(例如,图7中的接口717、718、721、722、726和731)可以表示为通信协议栈800。作为通信协议栈的表示也可以称为实现/包括协议栈的模块或接口。
PCI Express使用分组以在组件之间传递信息。在事务层805和数据链路层810中形成分组,以将信息从发送组件携带到接收组件。随着所发送的分组流动通过其他层,它们用对于在这些层处处置分组必要的附加信息加以扩展。在接收侧,相反的过程发生,并且分组从它们的物理层820表示变换为数据链路层810表示,并最终(对于事务层分组)变换为可以由接收设备的事务层805处理的形式。
事务层
在一个实施例中,事务层805用于提供设备的处理内核与互连架构(例如,数据链路层810与物理层820)之间的接口。于此,事务层805的主要责任是分组(即,事务层分组或TLP)的组装和分解。转译层805典型地管理用于TLP的基于信用的流控制。PCIe实现拆分事务(即,带有由时间分离的请求和响应的事务),允许链路在目标设备关于响应收集数据的同时携带其他业务。
此外,PCIe利用基于信用的流控制。在该方案中,设备对于事务层805中的接收缓冲区中的每一个通告初始信用量。链路的相对端处的外部设备(例如,图7中的控制器中枢715)计算由每个TLP消耗的信用的数量。如果事务没有超过信用限制,则可以发送事务。在接收到响应时,恢复信用量。信用方案的优点在于,信用回报的时延不影响性能,前提是没有遭遇信用限制。
在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括读取请求和写入请求中的一个或多个,以将数据发送去往/来自存储器映射位置。在一个实施例中,存储器空间事务能够使用两种不同的地址格式(例如,短地址格式(例如,32位地址)或长地址格式(例如,64位地址))。配置空间事务用以访问PCIe设备的配置空间。用于配置空间的事务包括读取请求和写入请求。消息空间事务(或简单地,消息)定义为支持PCIe代理之间的带内通信。
因此,在一个实施例中,事务层805组装分组头/净荷806。可以在PCIe规范网站处的PCIe规范中找到用于当前分组头/净荷的格式。
链路层
链路层810(也称为数据链路层810)充当事务层805与物理层820之间的中间级。在一个实施例中,数据链路层810的责任是提供用于在两个组件链路之间交换事务层分组(TLP)的可靠机制。数据链路层810的一侧接受由事务层805组装的TLP,应用分组序列标识符811(即,标识号或分组号),计算并应用错误检测代码(即,CRC812),并且将修改后的TLP提交给物理层820以用于在物理上向外部设备传输。
物理层
在一个实施例中,物理层820包括逻辑子块821和电气子块822,以将分组以物理方式发送到外部设备。在此,逻辑子块821负责物理层821的“数字”功能。于此,逻辑子块包括:发送部,其用于准备传出信息,以用于物理子块822进行的传输;和接收部,其用于标识并且准备接收到的信息,然后将它传递到链路层810。
物理块822包括发射机和接收机。发射机由逻辑子块821提供符号,发射机将这些符号串行化并发送到外部设备上。接收机被提供来自外部设备的串行化符号,并将接收到的信号变换为位流。位流解串行化,并提供给逻辑子块821。在一个实施例中,采用8b/10b传输码,其中,发送/接收十位符号。在此,特殊符号用以用帧823使分组成帧。此外,在一个示例中,接收机还提供从传入串行流恢复的符号时钟。
如上所述,虽然参考PCIe协议栈的特定实施例讨论事务层805、链路层810和物理层820,但是分层协议栈不限于此。事实上,可以包括/实现任何分层协议。作为示例,表示为分层协议的端口/接口包括:(1)用于组装分组的第一层(即,事务层);用于对分组进行排序的第二层(即,链路层);和用于发送分组的第三层(即,物理层)。作为特定示例,使用公共标准接口(CSI)分层协议。
各种其他互连架构和协议可以利用本文讨论的概念。在一个示例中,可以使用计算快速链路(CXL)。CXL保持CPU存储器空间与所附接的设备上的存储器之间的存储器一致性,这允许关于更高性能的资源共享、减少的软件栈复杂度和更低的整体系统成本等其他示例优势。CXL使得主机处理器(例如,CPU)能够与工作负载加速器集合(例如,图形处理单元(GPU)、现场可编程门阵列(FPGA)设备、张量和矢量处理器单元、机器学习加速器、专用加速器解决方案等其他示例)之间的通信。
CXL链路可以是支持一致性、存储器访问和输入/输出(I/O)协议的动态协议复用的低时延、高带宽分立式或封装链路。在其他应用当中,CXL链接可以使得加速器能够访问系统存储器作为缓存代理和/或主机系统存储器等其他示例。CXL是旨在支持广谱的加速器的动态多协议技术。CXL提供丰富的协议集合,其包括相似于PCIe(CXL.io)的I/O语义、缓存协议语义(CXL.cache)和分立式或封装链路上的存储器访问语义(CXL.mem)。基于特定加速器使用模型,可以使得所有CXL协议或仅协议的子集成为可能。在一些实现中,CXL可以建立在良好建立的、广泛采用的PCIe基础设施(例如,PCIe 5.0)上,借助PCIe物理和电气接口以在包括I/O、(例如,允许主机处理器与加速器设备共享存储器的)存储器协议和一致性接口的区块中提供高级协议。
转向图9,示出说明利用CXL链路950的示例系统的简化框图900。例如,链路950可以将主处理器905(例如,CPU)互连到加速器设备910。在该示例中,主机处理器905包括一个或多个处理器内核(例如,915a-b)和一个或多个I/O设备(例如,918)。主机存储器(例如,960)可以具备(例如,相同的封装或管芯上的)主机处理器。加速器设备910可以包括加速器逻辑920,并且在一些实现中,可以包括它自己的存储器(例如,加速器存储器965)。在该示例中,主机处理器905可以包括用于实现一致性/缓存逻辑925和互连逻辑(例如,PCIe逻辑930)的电路。也可以提供CXL复用逻辑(例如,955a-b),以实现CXL协议(例如,I/O协议935a-b(例如,CXL.io)、缓存协议940a-b(例如,CXL.cache)和存储器访问协议945a-b(CXL.mem))的复用,由此使得能够通过主机处理器905与加速器设备910之间的链路950以复用方式发送所支持的协议(例如,935a-b、940a-b、945a-b)中的任一个的数据。
在一些实现中,Flex BusTM端口可以与CXL合规链路协同加以利用,以灵活地适配设备以与各种其他设备(例如,其他处理器设备、加速器、切换器、存储器设备等)互连。Flex总线端口是静态地被配置为支持PCIe或CXL链路(以及潜在地,还有其他协议和架构的链路)的灵活的高速端口。Flex总线端口允许设计在提供原生PCIe协议或高带宽、封装外链路上的CXL之间进行选取。端口处应用的协议的选择可以经由自动协商并基于插入插槽中的设备在引导时间期间发生。Flex总线使用PCIe电气元件,使其与PCIe重定时器兼容,并符合用于附加件卡的标准PCIe形数。
图10示出示出利用以实现CXL链路的示例端口架构1000(例如,Flex总线)的简化框图。例如,Flex总线架构可以组织为多个层,以实现由端口支持的多个协议。例如,端口可以包括(例如,全部或部分实现于电路中的)事务层逻辑(例如,1005)、链路层逻辑(例如,1010)和物理层逻辑(例如,1015)。例如,事务(或协议)层(例如,1005)可以细分为:事务层逻辑1025,其实现PCIe事务层1055和基本PCIe事务层1055的(用于CXL.io的)CXL事务层增强1060;和逻辑1030,其用于实现用于CXL链接的缓存(例如,CXL.cache)和存储器(例如,CXL.mem)协议。相似地,可以提供链路层逻辑1035以实现基本PCIe数据链路层1065和表示PCIe数据链路层1065的增强版本的(用于CX1.io的)CXL链路层。CXL链路层1010可以还包括(例如,用于CXL.cache和CXL.mem的)缓存和存储器链路层增强逻辑1040。
继续图10的示例,在其他示例实现当中,CXL链路层逻辑1010可以与交织来自两个逻辑流(例如,PCIe/CXL.io和CXL.cache/CXL.mem)的业务的CXL仲裁/复用(ARB/MUX)逻辑1020进行接口。在链路训练期间,事务层和链路层被配置为在PCIe模式或CXL模式下进行操作。在一些实例中,在其他示例当中,主机CPU可以支持PCIe或CXL模式的实现,而其他设备(例如,加速器)可以仅支持CXL模式。在一些实现中,端口(例如,Flex总线端口)可以基于PCIe物理层(例如,PCIe电PHY 1050)利用物理层1015。例如,Flex总线物理层可以实现为聚合式逻辑物理层1045,其可以基于在链路训练过程期间的替代模式协商的结果在PCIe模式或CXL模式下进行操作。在一些实现中,物理层可以支持多个信令速率(例如,8GT/s、16GT/s、32GT/s等)和多个链路宽度(例如,x16、x8、x4、x2、x1等)。在PCIe模式下,由端口1000实现的链路可以完全符合(例如,如PCIe规范中定义的)原生PCIe特征,而在CXL模式下,链路支持关于CXL定义的所有特征。因此,在其他示例当中,Flex总线端口可以提供点对点互连,其可以发送原生PCIe协议数据或动态多协议CXL数据,以通过PCIe电气设备提供I/O、一致性和存储器协议。
CXL I/O协议CXL.io对于I/O设备提供非一致加载/存储接口。CXL.io中的事务类型、事务分组格式化、基于信用的流控制、虚拟信道管理和事务排序规则可以遵照PCIe定义的全部或部分。CXL缓存一致性协议CXL.cache将设备与主机之间的交互定义为数个请求,每个请求具有至少一个关联响应消息并且有时数据传送。接口由每个方向上的三个信道——请求、响应和数据——组成。
CXL存储器协议CXL.mem是处理器与存储器之间的事务接口,并且当在管芯上进行通信时使用CXL的物理层和链路层。在其他示例当中,CXL.mem可以用于多个不同的存储器附接选项,包括:当存储器控制器位于主机CPU中时,当存储器控制器处于加速器设备内时,或者当存储器控制器移动到存储器缓冲芯片时。在其他示例特征当中,CXL.mem可以应用于涉及不同存储器类型(例如,易失性、持久性等)和配置(例如,扁平、层次结构等)的事务。在一些实现中,主机处理器的一致性引擎可以使用CXL.mem请求和响应与存储器进行接口。在该配置中,CPU一致性引擎视为CXL.mem主设备,而Mem设备视为CXL.mem从设备。CXL.mem主设备是负责源发CXL.mem请求(例如,读取、写入等)的代理,而CXL.mem从设备是负责响应于CXL.mem请求(例如,数据、完成等)的代理。当从设备是加速器时,CXL.mem协议假设存在设备一致性引擎(DCOH)。假设该代理负责实现一致性有关功能(例如,基于CXL.mem命令的设备缓存的监听和元数据字段的更新)。在其他示例使用当中,在设备附接存储器支持元数据的实现中,主机可以使用它以实现用于CPU插槽的粗略监听过滤器。
以下图11-图12提供可以在如本文描述的实施例的上下文中使用的一些示例计算设备、计算环境、硬件、软件或流程。
图11是示出根据至少一个实施例的示例密态计算环境1100的框图。在所示示例中,密态寻址层1110扩展跨越示例计算矢量中央处理单元(CPU)1102、图形处理单元(GPU)1104、人工智能(AI)1106和现场可编程门阵列(FPGA)1108。例如,CPU 1102和GPU 1104可以对于存储器1112中存储的数据共享相同的虚拟地址转译,并且密态地址可以构建在该所共享的虚拟存储器上。它们可以对于给定的执行流程共享相同的进程密钥,并遵照相同的密态算法计算相同的细调,以对密态已编码地址进行解密并且对由这些已编码地址引用的数据进行解密。
合起来说,本文所描述的能力可以使得密态计算成为可能。可以从缓存的第一层级通过缓存的最后层级并进入系统存储器中在存储器层次结构的每一层级对存储器1112进行加密。将密态地址编码绑定到数据加密可以允许极端精细粒度对象边界和访问控制,从而实现下至甚至用于功能即服务的单独功能及其对象的精细粒度安全容器。对调用栈上的返回地址(取决于它们的位置)进行密态编码也可以在不需要影子栈元数据的情况下实现控制流程完整性。因此,仅取决于密态寻址和各个密态数据绑定,可以通过密态方式执行任何数据访问控制策略和控制流程。
图12-图14是可以根据本文所公开的实施例使用的示例性计算机架构的框图。通常,可以使用本领域中已知的用于处理器和计算系统的任何计算机架构设计。在一个示例中,本领域已知的用于膝上型计算机、台式机、手持式PC、个人数字助理、平板计算机、工程工作站、服务器、网络设备、服务器、电器、网络集线器、路由器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、智能电话、移动设备、可穿戴电子设备、便携式媒体播放器、手持设备和各种其他电子设备的系统设计和配置也适合于本文描述的计算系统的实施例。通常,用于本文所公开的实施例的合适计算机架构可以包括但不限于图12-图14所示的配置。
图12是根据实施例的处理器的示例说明。处理器1200是可以结合本文示出并且描述的实现(例如,处理器102)使用的一种类型的硬件设备的示例。处理器1200可以是任何类型的处理器(例如,微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、多核处理器、单核处理器或其他用于执行代码的设备)。虽然在图12中仅示出一个处理器1200,但是处理元件可以替代地包括图12所示的处理器1200中的多于一个。处理器1200可以是单线程内核,或者对于至少一个实施例,处理器1200可以是多线程的,因为它可以包括每内核多于一个的硬件线程上下文(或“逻辑处理器”)。
图12还示出根据实施例的耦合到处理器1200的存储器1202。存储器1202可以是对于本领域技术人员已知的或以其他方式可用的广泛各种存储器(包括存储器层次结构的各个层)中的任一种。这些存储器元件可以包括但不限于随机访问存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)的逻辑块、可擦除可编程只读存储器(EPROM)和电可擦除可编程ROM(EEPROM)。
处理器1200可以执行与本文详述的算法、过程或操作关联的任何类型的指令。通常,处理器1200可以将要素或物品(例如,数据)从一种状态或事物变换为另一状态或事物。
可以作为待由处理器1200执行的一个或多个指令的代码1204,可以存储在存储器1202中,或者可以存储在软件、硬件、固件或其任何合适的组合中,或者在适当的情况下并基于特定需求存储在任何其他内部或外部组件、设备、要素或对象中。在一个示例中,处理器1200可以遵照由代码1204指示的指令的程序序列。每条指令进入前端逻辑1206,并且由一个或多个解码器1208处理。解码器可以生成微操作(例如,呈预定义格式的固定宽度微操作)作为其输出,或者可以生成反映原始代码指令的其他指令、微指令或控制信号。前端逻辑1206还包括寄存器重命名逻辑1210和调度逻辑1212,它们通常分配资源并且将对应于指令的操作排队以用于执行。
处理器1200可以还包括具有执行单元1216a、1216b、1216n等的集合的执行逻辑1214。一些实施例可以包括专用于特定功能或功能集合的数个执行单元。其他实施例可以仅包括一个执行单元或可以执行特定功能的一个执行单元。执行逻辑1214执行由代码指令指定的操作。
在完成由代码指令指定的操作的执行之后,后端逻辑1218可以退离代码1204的指令。在一个实施例中,处理器1200允许指令的乱序执行,但是要求有序退离。退离逻辑1220可以采取各种已知形式(例如,重新排序缓冲区等)。以此方式,至少鉴于由解码器生成的输出、由寄存器重命名逻辑1210利用的硬件寄存器和表以及由执行逻辑1214修改的任何寄存器(未示出),在代码1204的执行期间变换处理器1200。
虽然未在图12中示出,但是处理元件可以包括带有处理器1200的芯片上的其他元件。例如,处理元件可以包括存储器控制逻辑连同处理器1200。处理元件可以包括I/O控制逻辑,和/或可以包括与存储器控制逻辑集成的I/O控制逻辑。处理元件可以还包括一个或多个缓存。在一些实施例中,非易失性存储器(例如,闪存或熔丝)也可以包括于具有处理器1200的芯片上。
图13A是示出根据本公开的一个或多个实施例的示例性有序流水线和示例性寄存器重命名、乱序发射/执行流水线二者的框图。图13B是示出根据本公开的一个或多个实施例的待包括于处理器中的有序架构内核和示例性寄存器重命名、乱序发射/执行架构内核的示例性实施例二者的框图。图13A-图13B中的实线框示出有序流水线和有序内核,而虚线框的可选添加示出寄存器重命名、乱序发射/执行流水线和内核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图13A中,处理器流水线1300包括获取级1302、长度解码级1304、解码级1306、分配级1308、重命名级1310、调度(也称为指派或发射)级1312、寄存器读取/存储器读取级1314、执行级1316、回写/存储器写入级1318、异常处理级1322和提交级1324。
图13B示出处理器内核1390,其包括耦合到执行引擎单元1350的前端单元1330,并且二者耦合到存储器单元1370。处理器内核1390和存储器单元1370是可以结合本文示出并且描述的实现(例如,处理器102、存储器120)使用的硬件的类型的示例。内核1390可以是精简指令集计算(RISC)内核、复杂指令集计算(CISC)内核、超长指令字(VLIW)内核或混合或替代内核类型。作为又一选项,内核1390可以是专用内核(例如,网络或通信内核、压缩引擎、协处理器内核、通用计算图形处理单元(GPGPU)内核、图形内核等)。此外,处理器内核1390及其组件表示可以用以实现逻辑处理器及其各个组件的示例架构。
前端单元1330包括分支预测单元1332,其耦合到指令缓存单元1334,指令缓存单元1334耦合到指令转译后备缓冲区(TLB)单元1336,指令转译后备缓冲区(TLB)单元1336耦合到指令获取单元1338,指令获取单元1338耦合到解码单元1340。解码单元1340(或解码器)可以对指令进行解码,并生成解码自、或以其他方式反映、或导出自原始指令的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出。可以使用各种不同的机制实现解码单元1340。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微码只读存储器(ROM)等。在一个实施例中,内核1390包括微码ROM或存储用于(例如,解码单元1340中,或以其他方式,前端单元1330内的)特定宏指令的微代码的其他介质。解码单元1340耦合到执行引擎单元1350中的重命名/分配器单元1352。
执行引擎单元1350包括重命名/分配器单元1352,其耦合到退离单元1354和一个或多个调度器单元1356的集合。调度器单元1356表示任何数量的不同调度器,包括保留站、中央指令窗口等。调度器单元1356耦合到物理寄存器文件单元1358。物理寄存器文件单元1358中的每一个表示一个或多个物理寄存器文件,其中的不同寄存器文件存储一种或多种不同的数据类型(例如,标量整数、标量浮点、封装整数、封装浮点、矢量整数、矢量浮点、状态(例如,作为待执行的下一指令的地址的指令指针)等)。在一个实施例中,物理寄存器文件单元1358包括矢量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量掩码寄存器和通用寄存器(GPR)。在本文描述的至少一些实施例中,寄存器单元1358是可以结合本文示出并且描述的实现(例如,寄存器110)使用的硬件的类型的示例。物理寄存器文件单元1358与退离单元1354重叠,以示出可以(例如,使用重排序缓冲区和退离寄存器文件;使用未来文件、历史缓冲区和退离寄存器文件;使用寄存器映射和寄存器池;等)实现寄存器重命名和乱序执行的各种方式。退离单元1354和物理寄存器文件单元1358耦合到执行集群1360。执行集群1360包括一个或多个执行单元1362的集合和一个或多个存储器访问单元1364的集合。执行单元1362可以且对各种类型的数据(例如,标量浮点、封装整数、封装浮点、矢量整数、矢量浮点)执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可以包括专用于特定功能或功能集合的数个执行单元,但是其他实施例可仅包括一个执行单元或全部执行所有功能的多个执行单元。执行单元1362可以还包括地址生成单元,以计算由内核用以访问主存储器(例如,存储器单元1370)和缺页处理程序(PMH)的地址。
调度器单元1356、物理寄存器文件单元1358和执行集群1360示出为可能地是多个,因为特定实施例对于特定类型的数据/操作创建分离的流水线(例如,标量整数流水线、标量浮点/封装整数/封装浮点/矢量整数/矢量浮点流水线和/或存储器访问流水线,其均具有它们自己的调度程序单元、物理寄存器文件单元和/或执行集群——并且在分离的存储器访问流水线的情况下,实现仅该流水线的执行集群具有存储器访问单元1364的特定实施例)。还应理解,在使用分离的流水线的情况下,这些流水线中的一个或多个可以是乱序发射/执行,而其余是有序的。
存储器访问单元1364的集合耦合到存储器单元1370,其包括TLB单元1372,TLB单元1372耦合到数据缓存单元1374,数据缓存单元1374耦合到层级2(L2)缓存单元1376。在一个示例性实施例中,存储器访问单元1364可以包括加载单元、存储地址单元和存储数据单元,其中的每一个耦合到存储器单元1370中的数据TLB单元1372。指令缓存单元1334进一步耦合到存储器单元1370中的层级2(L2)缓存单元1376。L2缓存单元1376耦合到一个或多个其他层级的缓存,并最终耦合到主存储器。此外,如果在数据TLB单元1372中并未找到匹配,则缺页处理程序也可以包括于内核1390中,以在页表中查找地址映射。
通过示例的方式,示例性寄存器重命名、乱序发射/执行内核架构可以如下实现流水线1300:1)指令获取单元1338执行获取和长度解码级1302和1304;2)解码单元1340执行解码级1306;3)重命名/分配器单元1352执行分配级1308和重命名级1310;4)调度器单元1356执行调度级1312;5)物理寄存器文件单元1358和存储器单元1370执行寄存器读取/存储器读取级1314;执行集群1360对执行级1316进行执行;6)存储器单元1370和物理寄存器文件单元1358执行回写/存储器写入级1318;7)在异常处置级1322中可能涉及各种单元;以及8)退离单元1354和物理寄存器文件单元1358执行提交级1324。
内核1390可以支持一个或多个指令集(例如,x86指令集(带有已经添加有新版本的一些扩展);加利福尼亚州桑尼维尔MIPS Technologies的MIPS指令集;加利福尼亚州桑尼维尔ARM Holdings的ARM指令集(带有可选附加扩展(例如,NEON)),包括本文描述的指令。在一个实施例中,内核1390包括用于支持封装数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用封装数据执行由许多多媒体应用使用的操作。
应理解,内核可以支持多线程(执行两个或更多个并行的操作或线程集合),并且可以通过包括以下方式的多种方式这样做:时间切片式多线程、同时多线程(其中,单个物理内核提供用于物理内核正同时多线程化的线程中的每一个的逻辑内核)、或其组合(例如,时间切片式获取和解码以及此后的同时多线程化(例如,在
Figure BDA0003934236460000391
超线程技术中))。因此,在至少一些实施例中,可以支持多线程式飞地。
虽然在乱序执行的上下文中描述寄存器重命名,但是应理解,寄存器重命名可以用在有序架构中。虽然处理器的所示实施例还包括分离的指令和数据缓存单元1334/1374和共享的L2缓存单元1376,但是替选实施例可以具有用于指令和数据二者的单个内部缓存(例如,比如层级1(L1)内部缓存、或多个层级的内部缓存)。在一些实施例中,系统可以包括内部缓存和处于内核和/或处理器外部的外部缓存的组合。替代地,所有缓存可以处于内核和/或处理器的外部。
图14示出根据实施例的点对点(PtP)配置中所布置的计算系统1400。具体而言,图14示出处理器、存储器和输入/输出设备由数个点对点接口互连的系统。通常,可以通过与计算系统1400相同或相似的方式配置本文描述的计算系统或计算设备中的一个或多个。
处理器1470和1480可以实现为单核处理器1474a和1484a或多核处理器1474a-1474b和1484a-1484b。处理器1470和1480可以均包括由它们相应一个或多个内核使用的缓存1471和1481。共享缓存(未示出)可以包括于任一处理器中或这两个处理器之外,但经由P-P互连与处理器连接,以使得如果处理器置于低功耗模式下,则处理器之一或二者的本地缓存信息可以存储在共享缓存中。应注意,本文描述的一个或多个实施例可以实现于计算系统(例如,计算系统1400)中。此外,处理器1470和1480是可以结合本文示出并且描述的实现(例如,处理器102)使用的硬件的类型的示例。
处理器1470和1480也可以均包括集成存储器控制器逻辑(IMC)1472和1482,以与存储器元件1432和1434进行通信,其可以是本地附接到相应处理器的主存储器的部分。在替选实施例中,存储器控制器逻辑1472和1482可以是与处理器1470和1780分离的分立式逻辑。存储器元件1432和/或1434可以存储由处理器1470和1480在实现本文概述的操作和功能中使用的各种数据。
处理器1470和1480可以是任何类型的处理器(例如,结合其他附图讨论的处理器)。处理器1470和1480可以分别使用点对点接口电路1478和1488经由点对点(PtP)接口1450交换数据。处理器1470和1480可以均使用点对点接口电路1476、1486、1494和1498经由单独点对点接口1452和1454与输入/输出(I/O)子系统1490交换数据。I/O子系统1490也可以使用可以是PtP接口电路的接口电路1492经由高性能图形接口1439与高性能图形电路1438交换数据。在一个实施例中,高性能图形电路1438是专用处理器(例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等)。I/O子系统1490还可与显示器1433进行通信,以用于显示人类用户可浏览的数据。在替选实施例中,图14所示的任何或所有PtP链路可以实现为多点总线而非PtP链路。
I/O子系统1490可以经由接口电路1496与总线1410进行通信。总线1410可以具有通过它进行通信的一个或多个设备(例如,总线桥1418、I/O设备1414和一个或更多其他处理器1415)。经由总线1420,总线桥1418可以与其他设备(例如,用户接口1422(例如,键盘、鼠标、触摸屏或其他输入设备)、通信设备1426(例如,调制解调器、网络接口设备或可以通过计算机网络1460进行通信的其他类型的通信设备)、音频I/O设备1424和/或存储单元1428)进行通信。存储单元1428可以存储可以由处理器1470和/或1480执行的数据和代码1430。在替选实施例中,可以用一个或多个PtP链路实现总线架构的任何部分。
程序代码(例如,代码1430)可以应用于输入指令,以执行本文描述的功能并生成输出信息。输出信息可以通过已知方式应用于一个或多个输出设备。出于本申请的目的,处理系统可以是计算系统1400的部分,并且包括具有处理器(例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器)的任何系统。
可以通过高级过程或面向对象的编程语言实现程序代码(例如,1430),以与处理系统进行通信。如果需要,则也可以通过汇编语言或机器语言实现程序代码。事实上,本文描述的机制在范围方面不限于任何特定编程语言。在任何情况下,语言可以是编译型或解释型语言。
在一些情况下,指令转换器可以用以将指令从源指令集转换为目标指令集。例如,指令转换器可以将指令转译(例如,使用静态二进制转译、动态二进制转译(包括动态编译))、变体、仿真或以其他方式转换为待由内核处理的一个或多个其他指令。指令转换器可以实现于软件、硬件、固件或其组合中。指令转换器可以处于处理器上、处理器外、或部分在处理器上且部分在处理器外。
图15是根据本公开的实施例的对比使用软件指令转换器以将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在所示实施例中,指令转换器是软件指令转换器,但是可选地,指令转换器可以实现于软件、固件、硬件或其各种组合中。图15示出可以使用x86编译器1504编译高级语言1502中的程序,以生成可以由带有至少一个x86指令集内核1516的处理器原生地执行的x86二进制代码1506。带有至少一个x86指令集内核的处理器1516表示可以通过以下操作执行与英特尔处理器实质上相同的结果的任何处理器:兼容地执行或以其他方式处理(1)英特尔x86指令集内核的指令集的实质部分、或(2)目标在于在带有至少一个x86指令集内核的英特尔处理器上运行的的目标代码版本,以实现与带有至少一个x86指令集内核的英特尔处理器实质上相同的结果。x86编译器1504表示可操作为生成可以在具有或没有附加链接处理的情况下在带有至少一个x86指令集内核1516的处理器上执行的x86二进制代码1506(例如,目标代码)的编译器。相似地,图15示出可以使用替代指令集编译器1508编译高级语言1502中的程序,以生成可以由没有至少一个x86指令集内核1514的处理器(例如,具有执行加利福尼亚州桑尼维尔MIPS Technologies的MIPS指令集和/或执行加利福尼亚州桑尼维尔ARM Holdings的ARM指令集的内核的处理器)原生地执行的替代指令集二进制代码1510。指令转换器1512用以将x86二进制代码1506转换为可以由没有x86指令集内核1514处理器原生地执行的代码。该转换后的代码不太可能与替选指令集二进制代码1510相同,因为有此能力的指令转换器是难以制造的;然而,转换后的代码将完成普通操作,并由来自替选指令集的指令组成。因此,指令转换器1512表示通过仿真、仿拟或任何其他过程允许没有x86指令集处理器或内核的处理器或其他电子设备执行x86二进制代码1506的软件、固件、硬件或其组合。
可以通过当由机器读取时使机器制造逻辑以执行本文描述的技术中的一个或多个的表示处理器内的各种逻辑的机器可读介质上存储的代表性指令实现至少一个实施例的一个或多个方面。称为“IP内核”的这些表示法可以存储在有形机器可读介质上,并提供给各种客户或制造设施,以加载到实际制作逻辑或处理器的制造机器中。
这些机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的非瞬时性、有形布置,包括存储介质(例如,硬盘、任何其他类型的盘(包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)和磁光盘)、半导体器件(例如,只读存储器(ROM)、随机访问存储器(RAM),例如动态随机访问存储器(DRAM)、静态随机访问存储器(SRAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光卡)或适合于存储电子指令的任何其他类型的介质)。
因此,本公开的实施例还包括包含指令或包含设计数据(例如,定义本文描述的结构、电路、装置、处理器和/或系统特征的硬件描述语言(HDL))的非瞬时性有形机器可读介质。这些实施例也可以称为程序产品。
图14中描绘的计算系统是可以利用以实现本文讨论的各种实施例的计算系统的实施例的示意性说明。应理解,可以在片上系统(SoC)架构中或在能够实现本文提供的示例和实现的功能和特征的任何其他合适的配置中组合图14中描绘的系统的各种组件。
虽然已经鉴于特定实现和通常关联的方法描述本公开,但是这些实现和方法的更改和排列对于本领域技术人员将是显而易见的。例如,本文描述的动作可以通过与所描述的顺序不同的顺序来执行,并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或依次顺序以实现期望的结果。在特定实现中,多任务化和并行处理可以是有利的。其他变型处于所附权利要求的范围内。
本文提出的架构仅通过示例的方式来提供,并且旨在成为非排他性且非限定性的。此外,所公开的各个部分旨在仅作为逻辑划分,而不一定表示物理上分离的硬件和/或软件组件。特定计算系统可以在单个物理存储设备中提供存储元件,而在其他情况下,存储元件可以在功能上分布在许多物理设备上。在虚拟机管理器或管理程序的情况下,可以通过在虚拟化层上运行的软件或固件的形式提供功能的全部或部分,以提供所公开的逻辑功能。
注意,在本文提供的示例的情况下,可以鉴于单个计算系统描述交互。然而,仅为了清楚性和示例的目的,已经进行该操作。在特定情况下,通过仅引用单个计算系统描述给定的流程集合的功能中的一个或多个可能是更容易的。此外,用于深度学习和恶意软件检测的系统是易于扩展的,并且可以实现在大数量的组件(例如,多个计算系统)以及更复杂/精密的布置和配置上。因此,所提供的示例不应限制潜在地应用于无数其他架构的计算系统的范围或禁止广泛教导。
如本文所使用的那样,除非明确地声明为相反,否则短语“……中的至少一个”的使用指代所命名的项、要素、条件或活动的任何组合。例如,“X、Y和Z中的至少一个”旨在意指以下中的任一项:1)至少一个X,但非Y也非Z;2)至少一个Y,但非X也非Z;3)至少一个Z,但非X也非Y;4)至少一个X和至少一个Y,但非Z;5)至少一个X和至少一个Z,但非Y;6)至少一个Y和至少一个Z,但非X;或7)至少一个X、至少一个Y和至少一个Z。
附加地,除非明确地声明为相反,否则术语“第一”、“第二”、“第三”等旨在区分它们修饰的特定名词(例如,要素、条件、模块、活动、操作、权利要求要素等),而非旨在指示所修饰的名词的任何类型的顺序、等级、重要性、时间顺序或层次结构。例如,“第一X”和“第二X”旨在指定不一定为两个要素的任何顺序、等级、重要性、时间顺序或层次结构所限制的两个分离的X要素。
说明书中对“一个方面”、“一方面”“示例性方面”等的引用表示所描述的方面可以包括特定特征、结构或特性,但每个方面可以不一定包括特定特征、结构或特性。此外,这些短语不一定指代同一实施例。
虽然本说明书包含许多具体实现细节,但是它们不应解释为对任何实施例的范围或可能要求保护的内容的范围的限制,而是特定于特定实施例的特征的描述。本说明书中在分离的实施例的上下文中描述的特定特征也可以通过组合实现于单个实施例中。相反,在单个实施例的上下文中描述的各种特征也可以分离地或以任何合适的子组合实现于多个实施例中。此外,虽然特征可以在以上描述为以特定组合起作用,并且甚至最初要求保护如是,但是在一些情况下可以从组合中删除来自要求保护的组合的一个或多个特征,并且所要求保护的组合可以直指子组合或子组合的变型。
相似地,上述实施例中的各种系统组件和模块的分离不应理解为在所有实施例中要求这种分离。应理解,所描述的程序组件、模块和系统通常可以一起集成在单个软件产品中或封装到多个软件产品中。
因此,已经描述主题的特定实施例。其他实施例处于本公开的范围内。本领域技术人员可以确定许多其他改变、替换、变化、变更和修改,并且本公开旨在涵盖落入所附权利要求的范围内的所有这些改变、替换、变化、变更和修改。
示例
示例1包括一种装置,包括:互连电路,用于在外围设备、处理器和存储器之间进行接口;和密态计算电路,用于:基于由所述互连电路从所述外围设备接收的读取请求的进程标识符获得一个或多个密钥;基于所述一个或多个密钥对所述读取请求的经加密虚拟地址进行解密,以获得未加密虚拟地址;使所述互连电路基于所述未加密虚拟地址从所述存储器获取经加密数据;基于所述一个或多个密钥对所述经加密数据进行解密,以获得明文数据;以及使所述互连电路将所述明文数据发送到所述外围设备。
示例2包括如示例1所述的主题,其中,所述一个或多个密钥包括数据密钥和指针密钥,对所述经加密虚拟地址的解密基于所述指针密钥,而对所述经加密数据的解密基于所述数据密钥。
示例3包括如示例1或2所述的主题,其中,所述密态计算电路用于:使用所述经加密虚拟地址作为细调输入对所述经加密数据进行解密。
示例4包括如示例1-3中任一项所述的主题,其中,所述密态计算电路用于:基于所述进程标识符的位,从所述存储器中的层次表结构获得所述一个或多个密钥。
示例5包括如示例1-4中任一项所述的主题,其中,所述互连电路包括输入/输出存储器管理单元(IOMMU),用于:从所述存储器获取所述经加密数据并且将所述明文数据发送到所述外围设备。
示例6包括如示例5所述的主题,其中,所述密态计算电路实现于所述IOMMU内。
示例7包括如示例5所述的主题,其中,所述IOMMU用于:基于所述未加密虚拟地址获得所述存储器中的物理地址。
示例8包括如示例1-7中任一项所述的主题,其中,所述互连电路用于实现基于外围组件互连(PCIe)的互连,并且所述进程标识符是进程地址空间标识符(PASID)。
示例9包括如示例8所述的主题,其中,所述一个或多个密钥是从PASID表的条目获得的。
示例10包括如示例8所述的主题,其中,所述一个或多个密钥是基于PASID表的条目中的指针从所述存储器获得的。
示例11包括如示例8-10中任一项所述的主题,其中,所述读取请求还包括总线/设备/功能(BDF),并且所述一个或多个密钥是进一步基于所述BDF获得的。
示例12包括一种方法,包括:在主机设备的密态计算代理处在互连上从外围设备接收读取请求,所述读取请求包括进程标识符和经加密虚拟地址;基于所述读取请求的进程标识符,获得一个或多个密钥;基于所述一个或多个密钥对所述读取请求的经加密虚拟地址进行解密,以获得未加密虚拟地址;基于所述未加密虚拟地址,从存储器获取经加密数据;基于所述一个或多个密钥对所述经加密数据进行解密,以获得明文数据;以及将所述明文数据在所述互连上发送到所述外围设备。
示例13包括如示例12所述的主题,其中,所述一个或多个密钥包括数据密钥和指针密钥,对所述经加密虚拟地址的解密基于所述指针密钥,而对所述经加密数据的解密基于所述数据密钥。
示例14包括如示例12或13所述的主题,其中,对所述经加密数据进行解密包括:使用所述经加密虚拟地址作为细调输入。
示例15包括如示例12-14中任一项所述的主题,其中,所述密钥是基于所述进程标识符的位从所述存储器中的层次表结构获得的。
示例16包括如示例12-15中任一项所述的主题,还包括:基于所述未加密虚拟地址获得物理地址。
示例17包括如示例12-16中任一项所述的主题,其中,所述互连是基于外围组件快速互连(PCIe)的互连,并且所述进程标识符是进程地址空间标识符(PASID)。
示例18包括如示例17所述的主题,其中,所述一个或多个密钥是从PASID表的条目获得的。
示例19包括如示例17所述的主题,其中,所述一个或多个密钥是基于PASID表的条目中的指针从所述存储器获得的。
示例20包括如示例17-19中任一项所述的主题,其中,所述读取请求还包括总线/设备/功能(BDF),并且所述一个或多个密钥是进一步基于所述BDF获得的。
示例21包括一种或多种非瞬时性计算机可读介质,包括指令,在所述指令由所述电子设备的一个或多个处理器执行时,所述指令使所述电子设备:在互连上从外围设备接收包括进程标识符和经加密虚拟地址的读取请求;基于所述读取请求的进程标识符,获得一个或多个密钥;基于所述一个或多个密钥对所述读取请求的经加密虚拟地址进行解密,以获得未加密虚拟地址;基于所述未加密虚拟地址从存储器获取经加密数据;基于所述一个或多个密钥对所述经加密数据进行解密,以获得明文数据;以及使所述明文数据在所述互连上发送到所述外围设备。
示例22包括如示例21所述的主题,其中,所述一个或多个密钥包括数据密钥和指针密钥,对所述经加密虚拟地址的解密基于所述指针密钥,而对所述经加密数据的解密基于所述数据密钥。
示例23包括如示例21或22所述的主题,其中,所述指令用于:使用所述经加密虚拟地址作为细调输入对所述经加密数据进行解密。
示例24包括:如示例21-23中任一项所述的主题,其中,所述指令用于:基于所述进程标识符的位,从所述存储器中的层次表结构获得所述一个或多个密钥。
示例25包括如示例21-24中任一项所述的主题,其中,所述指令还用于:基于所述未加密虚拟地址获得物理地址。
示例26包括如示例21-25中任一项所述的主题,其中,所述互连是基于外围组件快速互连(PCIe)的互连,并且所述进程标识符是进程地址空间标识符(PASID)。
示例27包括如示例26所述的主题,其中,所述一个或多个密钥是从PASID表的条目获得的。
示例28包括如示例26所述的主题,其中,所述一个或多个密钥是基于PASID表的条目中的指针从所述存储器获得的。
示例29包括如示例26-28中任一项所述的主题,其中,所述读取请求还包括总线/设备/功能(BDF),并且所述一个或多个密钥是进一步基于所述BDF获得的。
示例30包括一种装置,包括:互连电路,用于在外围设备、处理器和存储器之间进行接口;和密态计算电路,用于:基于由所述互连电路从所述外围设备接收的写入请求的进程标识符获得一个或多个密钥;基于所述一个或多个密钥对所述读取请求的经加密虚拟地址进行解密,以获得未加密虚拟地址;基于所述一个或多个密钥对与所述写入请求关联的数据进行加密;以及使所述互连电路将所述经加密数据发送到所述存储器以用于存储。
示例31包括如示例30所述的主题,其中,所述一个或多个密钥包括数据密钥和指针密钥,对所述经加密虚拟地址的解密基于所述指针密钥,而对与所述写入请求关联的数据的加密基于所述数据密钥。
示例32包括如示例30或31所述的主题,其中,所述密态计算电路用于:使用所述经加密虚拟地址作为细调输入对与所述写入请求关联的数据进行加密。
示例33包括如示例30-32中任一项所述的主题,其中,所述密态计算电路用于:基于所述进程标识符的位,从所述存储器中的层次表结构获得所述一个或多个密钥。
示例34包括如示例30-33中任一项所述的主题,其中,所述互连电路包括输入/输出存储器管理单元(IOMMU),用于:使所述互连电路将所述经加密数据发送到所述存储器以用于存储。
示例35包括如示例34所述的主题,其中,所述密态计算电路实现于所述IOMMU内。
示例36包括如示例34所述的主题,其中,所述IOMMU用于:基于所述未加密虚拟地址获得所述存储器中的物理地址。
示例37包括如示例30-36中任一项所述的主题,其中,所述互连电路用于实现基于外围组件快速互连(PCIe)的互连,并且所述进程标识符是进程地址空间标识符(PASID)。
示例38包括如示例37所述的主题,其中,所述一个或多个密钥是从PASID表的条目获得的。
示例39包括如示例37所述的主题,其中,所述一个或多个密钥是基于PASID表的条目中的指针从所述存储器获得的。
示例40包括如示例37-39中任一项所述的主题,其中,所述读取请求还包括总线/设备/功能(BDF),并且所述一个或多个密钥是进一步基于所述BDF获得的。
示例41包括一种方法,包括:在主机设备的密态计算代理处在互连上从外围设备接收写入请求,所述写入请求包括待写入的数据、进程标识符和经加密虚拟地址;基于所述写入请求的进程标识符获得一个或多个密钥;基于所述一个或多个密钥对所述写入请求的经加密虚拟地址进行解密,以获得未加密虚拟地址;基于所述一个或多个密钥对所述待写入的数据进行加密;以及将经加密数据存储在存储器中。
示例42包括如示例41所述的主题,其中,所述一个或多个密钥包括数据密钥和指针密钥,对所述经加密虚拟地址的解密基于所述指针密钥,而对所述待写入的数据的加密基于所述数据密钥。
示例43包括如示例41或42所述的主题,其中,对所述待写入的数据进行加密包括:使用所述经加密虚拟地址作为细调输入。
示例44包括如示例41-43中任一项所述的主题,其中,基于所述进程标识符的位,从所述存储器中的层次表结构获得所述一个或多个密钥获得所述密钥。
示例45包括如示例41-44中任一项所述的主题,还包括:基于所述未加密虚拟地址获得物理地址。
示例46包括如示例41-45中任一项所述的主题,其中,所述互连是基于外围组件快速互连(PCIe)的互连,并且所述进程标识符是进程地址空间标识符(PASID)。
示例47包括如示例46所述的主题,其中,所述一个或多个密钥是从PASID表的条目获得的。
示例48包括如示例46所述的主题,其中,所述一个或多个密钥是基于PASID表的条目中的指针从所述存储器获得的。
示例49包括如示例46-48中任一项所述的主题,其中,所述读取请求还包括总线/设备/功能(BDF),并且所述一个或多个密钥是进一步基于所述BDF获得的。
示例50包括一种或多种非瞬时性计算机可读介质,包括指令,在所述指令由电子设备的一个或多个处理器执行时,所述指令使所述电子设备:在互连上从外围设备接收包括待向存储器写入的数据、进程标识符和经加密虚拟地址的写入请求;基于所述写入请求的进程标识符获得一个或多个密钥;基于所述一个或多个密钥对所述写入请求的经加密虚拟地址进行解密,以获得未加密虚拟地址;基于所述一个或多个密钥对所述待写入的数据进行加密;以及使经加密数据发送到所述存储器以用于存储。
示例51包括如示例50所述的主题,其中,所述一个或多个密钥包括数据密钥和指针密钥,对所述经加密虚拟地址的解密基于所述指针密钥,而对所述待写入的数据的加密基于所述数据密钥。
示例52包括如示例50或51所述的主题,其中,所述指令用于:使用所述经加密虚拟地址作为细调输入对所述待写入的数据进行加密。
示例53包括如示例50-52中任一项所述的主题,其中,所述指令用于:基于所述进程标识符的位,从所述存储器中的层次表结构获得所述一个或多个密钥。
示例54包括如示例50-53中任一项所述的主题,还包括:基于所述未加密虚拟地址获得物理地址。
示例55包括如示例50-54中任一项所述的主题,其中,所述互连是基于外围组件快速互连(PCIe)的互连,并且所述进程标识符是进程地址空间标识符(PASID)。
示例56包括如示例55所述的主题,其中,所述指令用于:从PASID表的条目获得所述一个或多个密钥。
示例57包括如示例55所述的主题,其中,所述指令用于:基于PASID表的条目中的指针从所述存储器获得所述一个或多个密钥。
示例58包括如示例55-57中任一项所述的主题,其中,所述读取请求还包括总线/设备/功能(BDF),并且所述一个或多个密钥是进一步基于所述BDF获得的。
示例59包括一种系统,包括:处理器;存储器;互连电路,用于互连所述处理器和存储器与外围设备,所述互连电路从所述外围设备接收对读取或写入所述存储器的请求;和密态计算电路,用于:基于所述请求的进程标识符获得一个或多个密钥;基于所述一个或多个密钥对所述请求的经加密虚拟地址进行解密,以获得未加密虚拟地址;以及对于对从所述存储器读取数据的请求:基于所述未加密虚拟地址从存储器获取经加密数据;基于所述一个或多个密钥对所述经加密数据进行解密,以获得明文数据;以及使所述明文数据发送到所述外围设备;以及对于对向所述存储器写入数据的请求:基于所述一个或多个密钥对与所述写入请求关联的数据进行加密;以及使所述经加密数据存储在所述存储器中。
示例60包括如示例59所述的主题,其中,所述一个或多个密钥包括数据密钥和指针密钥,对所述经加密虚拟地址的解密基于所述指针密钥,而对数据的加密或解密是基于所述数据密钥。
示例61包括如示例59或60所述的主题,其中,所述处理器还用于:对于对从所述存储器读取数据的请求,使用所述经加密虚拟地址作为细调输入对所述经加密数据进行解密;以及对于对向所述存储器写入数据的请求,使用所述经加密虚拟地址作为细调输入对所述数据进行加密。
示例62包括如示例59-61中任一项所述的主题,其中,所述密态计算电路用于:基于所述进程标识符的位,从所述存储器中的层次表结构获得所述一个或多个密钥。
示例63包括如示例59-62中任一项所述的主题,其中,所述互连电路包括输入/输出存储器管理单元(IOMMU),用于:从所述存储器获取与读取请求关联的所述经加密数据并且发送与写入请求关联的所述经加密数据以用于所述存储器中的存储。
示例64包括如示例63所述的主题,其中,所述密态计算电路实现于所述IOMMU内。
示例65包括如示例63所述的主题,其中,所述IOMMU用于:基于所述未加密虚拟地址获得所述存储器中的物理地址。
示例66包括如示例59-65中任一项所述的主题,其中,所述互连电路用于实现基于外围组件快速互连(PCIe)的互连,并且所述进程标识符是进程地址空间标识符(PASID)。
示例67包括如示例66所述的主题,其中,所述一个或多个密钥是从PASID表的条目获得的。
示例68包括如示例66所述的主题,其中,所述一个或多个密钥是基于PASID表的条目中的指针从所述存储器获得的。
示例69包括如示例66-68中任一项所述的主题,其中,所述读取请求还包括总线/设备/功能(BDF),并且所述一个或多个密钥是进一步基于所述BDF获得的。

Claims (25)

1.一种装置,包括:
互连电路,用于在外围设备、处理器和存储器之间进行接口;和
密态计算电路,用于:
基于由所述互连电路从所述外围设备接收的读取请求的进程标识符,获得一个或多个密钥;
基于所述一个或多个密钥对所述读取请求的经加密虚拟地址进行解密,以获得未加密虚拟地址;
使所述互连电路基于所述未加密虚拟地址从所述存储器获取经加密数据;
基于所述一个或多个密钥对所述经加密数据进行解密,以获得明文数据;以及
使所述互连电路将所述明文数据发送到所述外围设备。
2.如权利要求1所述的装置,其中,所述一个或多个密钥包括数据密钥和指针密钥,对所述经加密虚拟地址的解密基于所述指针密钥的,而对所述经加密数据的解密基于所述数据密钥。
3.如权利要求1所述的装置,其中,所述密态计算电路用于:
使用所述经加密虚拟地址作为细调输入,对所述经加密数据进行解密。
4.如权利要求1所述的装置,其中,所述密态计算电路用于;
基于所述进程标识符的位,从所述存储器中的层次表结构获得所述一个或多个密钥。
5.如权利要求1所述的装置,其中,所述互连电路包括输入/输出存储器管理单元(IOMMU),用于:从所述存储器获取所述经加密数据并且将所述明文数据发送到所述存储器。
6.如权利要求5所述的装置,其中,所述密态计算电路实现于所述IOMMU内。
7.如权利要求5所述的装置,其中,所述IOMMU用于:
基于所述未加密虚拟地址,获得所述存储器中的物理地址。
8.如权利要求1-7中任一项所述的装置,其中,所述互连电路用于实现基于外围组件快速互连(PCIe)的互连,并且所述进程标识符是进程地址空间标识符(PASID)。
9.如权利要求8所述的装置,其中,所述一个或多个密钥是从PASID表的条目获得的。
10.如权利要求8所述的装置,其中,所述一个或多个密钥是基于PASID表的条目中的指针从所述存储器获得的。
11.如权利要求8所述的装置,其中,所述读取请求还包括总线/设备/功能(BDF),并且所述一个或多个密钥是进一步基于所述BDF获得的。
12.一种或多种非瞬时性计算机可读介质,包括指令,所述指令在由电子设备的一个或多个处理器执行时,所述指令使所述电子设备:
在互连上从外围设备接收包括进程标识符和经加密虚拟地址的读取请求;
基于所述读取请求的进程标识符,获得一个或多个密钥;
基于所述一个或多个密钥对所述读取请求的经加密虚拟地址进行解密,以获得未加密虚拟地址;
基于所述未加密虚拟地址,从存储器获取经加密数据;
基于所述一个或多个密钥对所述经加密数据进行解密,以获得明文数据;以及
使所述明文数据在所述互连上发送到所述外围设备。
13.如权利要求12所述的计算机可读介质,其中,所述一个或多个密钥包括数据密钥和指针密钥,对所述经加密虚拟地址的解密基于所述指针密钥,而对所述经加密数据的解密基于所述数据密钥。
14.如权利要求12所述的计算机可读介质,其中,所述指令用于:
使用所述经加密虚拟地址作为细调输入,对所述经加密数据进行解密。
15.如权利要求12所述的计算机可读介质,其中,所述指令用于:
基于所述进程标识符的位,从所述存储器中的层次表结构获得所述一个或多个密钥。
16.如权利要求12-15中任一项所述的计算机可读介质,其中,所述互连是基于外围组件快速互连(PCIe)的互连,并且所述进程标识符是进程地址空间标识符(PASID)。
17.如权利要求16所述的计算机可读介质,其中,所述一个或多个密钥是从PASID表的条目获得的。
18.如权利要求16所述的计算机可读介质,其中,所述一个或多个密钥是基于PASID表的条目中的指针从所述存储器获得的。
19.如权利要求16所述的计算机可读介质,其中,所述读取请求还包括总线/设备/功能(BDF),并且所述一个或多个密钥是进一步基于所述BDF获得的。
20.一种系统,包括:
处理器;
存储器;
互连电路,用于互连所述处理器和存储器与外围设备,所述互连电路从所述外围设备接收对读取或写入所述存储器的请求;和
密态计算电路,用于:
基于所述请求的进程标识符,获得一个或多个密钥;
基于所述一个或多个密钥对所述请求的经加密虚拟地址进行解密,以获得未加密虚拟地址;以及
对于对从所述存储器读取数据的请求:
基于所述未加密虚拟地址从存储器获取经加密数据;
基于所述一个或多个密钥对所述经加密数据进行解密,以获得明文数据;以及
使所述明文数据发送到所述外围设备;以及
对于对向所述存储器写入数据的请求:
基于所述一个或多个密钥对与所述写入请求关联的数据进行加密;以及
使所述经加密数据存储在所述存储器中。
21.如权利要求20所述的系统,其中,所述一个或多个密钥包括数据密钥和指针密钥,对所述经加密虚拟地址的解密基于所述指针密钥,而对数据的加密或解密是基于所述数据密钥。
22.如权利要求20所述的系统,其中,所述电路还用于:
对于对从所述存储器读取数据的请求,使用所述经加密虚拟地址作为细调输入对所述经加密数据进行解密;以及
对于对向所述存储器写入数据的请求,使用所述经加密虚拟地址作为细调输入对所述数据进行加密。
23.如权利要求20所述的系统,其中,所述密态计算电路用于:
基于所述进程标识符的位,从所述存储器中的层次表结构获得所述一个或多个密钥。
24.如权利要求20-23中任一项所述的系统,其中,所述互连电路用于实现基于外围组件快速互连(PCIe)的互连,并且所述进程标识符是进程地址空间标识符(PASID)。
25.如权利要求24的系统,其中,所述一个或多个密钥是从PASID表的条目或基于PASID表的条目中的指针从所述存储器获得的。
CN202211398902.6A 2021-12-10 2022-11-09 与遗留外围设备的密态计算 Pending CN116260606A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/548,170 2021-12-10
US17/548,170 US20220100911A1 (en) 2021-12-10 2021-12-10 Cryptographic computing with legacy peripheral devices

Publications (1)

Publication Number Publication Date
CN116260606A true CN116260606A (zh) 2023-06-13

Family

ID=80822578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211398902.6A Pending CN116260606A (zh) 2021-12-10 2022-11-09 与遗留外围设备的密态计算

Country Status (4)

Country Link
US (1) US20220100911A1 (zh)
EP (1) EP4195054A1 (zh)
JP (1) JP2023086670A (zh)
CN (1) CN116260606A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116760631A (zh) * 2023-08-09 2023-09-15 国网浙江省电力有限公司 基于调控云平台的多业务数据分级管控方法及系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11874777B2 (en) * 2021-12-16 2024-01-16 International Business Machines Corporation Secure communication of virtual machine encrypted memory

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10310990B2 (en) * 2016-06-24 2019-06-04 Hewlett Packard Enterprise Development Lp Direct memory access encryption with application provided keys
US11010067B2 (en) * 2018-12-28 2021-05-18 Intel Corporation Defense against speculative side-channel analysis of a computer system
US11580234B2 (en) * 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
WO2022139850A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Cryptographic computing including enhanced cryptographic addresses
US11669625B2 (en) * 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing
US11625337B2 (en) * 2020-12-26 2023-04-11 Intel Corporation Encoded pointer based data encryption
US11755500B2 (en) * 2020-12-26 2023-09-12 Intel Corporation Cryptographic computing with disaggregated memory
US11960723B2 (en) * 2022-05-27 2024-04-16 Samsung Electronics Co., Ltd. Method and system for managing memory associated with a peripheral component interconnect express (PCIE) solid-state drive (SSD)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116760631A (zh) * 2023-08-09 2023-09-15 国网浙江省电力有限公司 基于调控云平台的多业务数据分级管控方法及系统
CN116760631B (zh) * 2023-08-09 2023-10-31 国网浙江省电力有限公司 基于调控云平台的多业务数据分级管控方法及系统

Also Published As

Publication number Publication date
JP2023086670A (ja) 2023-06-22
US20220100911A1 (en) 2022-03-31
EP4195054A1 (en) 2023-06-14

Similar Documents

Publication Publication Date Title
US11755500B2 (en) Cryptographic computing with disaggregated memory
EP3757856B1 (en) Cryptographic isolation of memory compartments in a computing environment
NL2029792B1 (en) Cryptographic computing including enhanced cryptographic addresses
EP3757849B1 (en) Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
EP3757858A1 (en) Memory write for ownership access in a core
US11625337B2 (en) Encoded pointer based data encryption
US10877806B2 (en) Method and apparatus for securely binding a first processor to a second processor
EP4195054A1 (en) Cryptographic computing with legacy peripheral devices
US20220121447A1 (en) Hardening cpu predictors with cryptographic computing context information
TWI608378B (zh) 裝置與安全處理環境之間的介面
WO2023107212A1 (en) Cryptographic computing with context information for transient side channel security
EP4020273A1 (en) Cache line slot level encryption based on context information
US20240104027A1 (en) Temporal information leakage protection mechanism for cryptographic computing
EP4202700A1 (en) Transient side-channel aware architecture for cryptographic computing
US12032486B2 (en) Transient side-channel aware architecture for cryptographic computing

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication