CN114692131A - 带有分解式存储器的密码式计算 - Google Patents
带有分解式存储器的密码式计算 Download PDFInfo
- Publication number
- CN114692131A CN114692131A CN202111360284.1A CN202111360284A CN114692131A CN 114692131 A CN114692131 A CN 114692131A CN 202111360284 A CN202111360284 A CN 202111360284A CN 114692131 A CN114692131 A CN 114692131A
- Authority
- CN
- China
- Prior art keywords
- memory
- node
- data
- processor
- soc
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 415
- 238000000034 method Methods 0.000 claims description 60
- 238000012545 processing Methods 0.000 claims description 38
- 238000004891 communication Methods 0.000 claims description 25
- 230000006870 function Effects 0.000 description 40
- 230000008569 process Effects 0.000 description 33
- 238000010586 diagram Methods 0.000 description 31
- 238000002955 isolation Methods 0.000 description 23
- 230000004224 protection Effects 0.000 description 21
- 239000000872 buffer Substances 0.000 description 19
- 238000004364 calculation method Methods 0.000 description 15
- 238000007726 management method Methods 0.000 description 13
- 238000013519 translation Methods 0.000 description 13
- 230000007246 mechanism Effects 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 10
- 238000007667 floating Methods 0.000 description 10
- 238000013500 data storage Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 230000000153 supplemental effect Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000027455 binding Effects 0.000 description 6
- 238000009739 binding Methods 0.000 description 6
- 235000019580 granularity Nutrition 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 238000000926 separation method Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000004075 alteration Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013499 data model Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000008570 general process Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 229920000642 polymer Polymers 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- CQIZBIFTOGBKDB-UHFFFAOYSA-N 4-cyclohexyl-1-methyl-3,6-dihydro-2h-pyridine Chemical compound C1N(C)CCC(C2CCCCC2)=C1 CQIZBIFTOGBKDB-UHFFFAOYSA-N 0.000 description 1
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 101100076239 Drosophila melanogaster Mctp gene Proteins 0.000 description 1
- 241000282412 Homo Species 0.000 description 1
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 101150116046 PCBD1 gene Proteins 0.000 description 1
- 102100029333 Pterin-4-alpha-carbinolamine dehydratase Human genes 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000005387 chalcogenide glass Substances 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011217 control strategy Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012358 sourcing Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
- G06F21/46—Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/1425—Protection 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/1433—Protection 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 module or a part of a module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
在一个实施例中,主机节点上执行的应用分配远程节点的存储器地址。所述应用至少部分地基于关于所述主机和远程节点的设备能力信息选择所述主机节点或所述远程节点之一,以对应用数据进行加密,并将所选择的节点配置为基于密钥和指向所述远程节点的所述存储器地址的指针对所述应用数据进行加密。
Description
技术领域
本公开总体上涉及计算机系统的领域,更具体而言,涉及密码式计算。
背景技术
密码式计算可以指代计算机系统安全解决方案,其在处理器组件的内部采用密码式机制以保护由计算系统存储的数据。密码式机制可以用以使用密钥、细调或其他安全机制对数据自身和/或指向数据的指针进行加密。密码式计算是计算行业中的重要趋势,其中,计算自身的真正基础从根本上变为密码式的。密码式计算代表浩瀚的改变,对系统安全性的根本性重新思考,对行业具有广泛影响。
附图说明
为了提供本公开及其特征和优点的更完整地理解,结合附图参照以下描述,其中,相同的附图标记代表相同的部分。
图1是根据本公开的至少一个实施例的示例的被配置有安全存储器存取逻辑的示例性计算设备的简化框图。
图2A是示出根据本公开的至少一个实施例的将广义化的已编码指针绑定到由该指针引用的数据的加密的过程的流程图。
图2B是示出根据本公开的至少一个实施例的对绑定到广义化的已编码指针的数据进行解密的过程的流程图。
图3示出应用和与执行应用的各方面的各种XPU关联的数据的另一简化框图。
图4示出根据特定实施例的用于提供IO设备数据加密的示例硬件配置的简化框图。
图5示出应用和与执行应用的各方面的各种XPU关联的数据的又一简化框图。
图6示出根据特定实施例的用于提供IO设备数据加密的另一示例硬件配置的简化框图。
图7示出根据特定实施例的基于CC的保护可以扩展到分解式存储器的示例计算环境。
图8示出根据特定实施例的基于CC的保护可以扩展到分解式存储器的另一示例计算环境。
图9示出根据特定实施例的用于将基于CC的保护扩展到分解式存储器的示例过程的流程图。
图10示出包括互连架构的计算系统的实施例。
图11示出包括分层栈的互连架构的实施例。
图12示出说明利用CXL链路的示例系统的简化框图。
图13示出说明利用以实现CXL链路的示例端口架构的简化框图。
图14是示出根据至少一个实施例的示例密码式计算环境的框图。
图15是示出根据至少一个实施例的示例处理器的框图。
图16A是示出根据特定实施例的示例性有序流水线和示例性寄存器重命名、无序发放/执行流水线二者的框图。
图16B是示出根据特定实施例的待包括于处理器中的有序架构内核和示例性寄存器重命名、无序发放/执行架构内核的示例性实施例二者的框图。
图17是根据至少一个实施例的示例计算机架构的框图。
图18是根据本公开的实施例的对比使用软件指令转换器以将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
具体实施方式
本公开提供用于可以在密码式计算的上下文中使用的存储器写入指令的实现方式的各种可能的实施例或示例。通常,密码式计算可以指代在处理器组件内部采用密码式机制作为其计算的部分的计算机系统安全解决方案。一些密码式计算系统可以使用所加密的存储器存取指令在处理器内核中实现指针地址(或其部分)、密钥、数据和代码的加密和解密。因此,可以通过支持这些加密和解密操作的这样的方式配置处理器内核的微架构流水线。
本申请中公开的实施例涉及在强制存储器内的存储器区域的密码式隔离的同时主动阻止对存储器的越界存取。密码式隔离可以指代因用一个或多个不同参数对存储器的不同区域或区块进行加密而导致的隔离。参数可以包括密钥和/或细调。所隔离的存储器区域可以由包括软件实体(例如,虚拟机(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”或“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、Spec、可细调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可以体现为在特权化状态下执行的可信固件组件。硬件可信实体的示例可以包括但是不一定限于Trust Doman Extensions的Secure-Arbitration Mode(SEAM)等、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,并且然后密码式操作(例如,逻辑函数274(例如,异或(XOR))或其他更复杂的操作)可以对未加密的数据222和密钥流276得以执行,以生成受加密数据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,并且然后密码式操作(例如,逻辑功能274(例如,异或(XOR)或其他更复杂的操作))可以对受加密数据224和密钥流276得以执行,以生成解密的(或未加密的)数据222。应注意,在受加密数据在232正被获取的同时,密钥流的生成可以开始。因此,并行操作可以改进对受加密数据进行解密的效率。
对于密码式计算的I/O扩展
在一些实施例中,由密码式计算(CC)提供的寻址和密码式保护可以在设备的内核和存储器层次结构的外部扩展到经由输入/输出(I/O或IO)互连连接到内核和存储器层次结构的其他设备。相似于用于来自内核侧的存取的基于CC的对象粒度存储器保护,来自IO侧的不同设备上下文的存储器存取可能需要类似的保护以真正保障系统。随着设备和加速器(其一般称为XPU,XPU可以包括中央处理单元(CPU)、图形处理单元(GPU)和其他类型的处理设备)日益被视为计算环境(例如,云平台)中的第一类计算元件,IO安全性的重要性正与日俱增。
具体而言,从粗粒度式开始朝向相似于内核侧的保护的日益精细粒度式保护,从不同的IO威胁边界/保护粒度性的方面详细地按适用而枚举硬件和软件改变。当指代“IO”、“IO子系统”或“IO侧”等时,本描述可以指代设备互连和关联协议(例如,比如,基于外围组件互连高速(PCIe)和/或基于计算高速链路(CXL)的互连和兼容设备(其在此可以称为“IO设备”)和同一系统/平台(例如,8插槽服务器平台)上的加速器)。
图3示出与执行应用的各个方面的各种XPU关联的应用存储器310和数据311、312、313的另一简化框图。在所示示例中,数据311、313与主机设备的CPU关联,而数据$412与连接到主机设备的IO设备的代码或数据关联。如所示,数据311、313中的每一个当处于存储器310中时受加密,其中,用不同的密钥/细调配对(例如,用上下文特定指针细调/密钥)对每个数据进行加密,如所示。可以根据本文和美国专利No.9,436,847(题为“Cryptographicpointer address encoding”)和/或美国专利申请公开No.2020/0125501(题为“PointerBased Data Encryption”)中所公开的密码式计算实施例执行数据311、313的加密。数据312当存储在存储器310中时也使用租户IO密钥得以加密。租户IO密钥可以与由CPU经由CC启发库使用的密钥不同。
可以将这些受加密指针发送到IO设备作为控制路径操作的部分,并且可以相应地初始化对应存储器。实际代码/数据加密密钥(例如,Gimli/GCM密钥)可以保持相同。如果在对CPU代码/数据结构的所允许的分配的外部(例如,通过伪造的指针)进行恶意IO存取尝试,则故障将源自指针解密之后的IOMMU页遍历(walk),或者垃圾返回/CC完整性失败将源自对应读取/写入,如上所述。此外,考虑到与上述相同的密码式分离语义,对IO代码/数据的(例如,来自Jit代码、第3方插件、库等的)不可信CPU侧存取将是不成功的。因此,提供IO侧保护以防恶意的/易受攻击的CPU侧存取。
注意,在该示例中,并未使用用于这些IO指针(和实际数据)的加密的基于大小/类型/版本的细调,并且由此在相同地址空间中不存在不同IO分配之间的保护(以下进一步描述该情况)。此外,如果不同租户正共享相同地址空间(例如,浏览器、数据库、其他分隔化使用情况等),则可以用租户特定IO指针加密密钥实现租户间隔离。
图4示出根据特定实施例的用于提供IO设备数据加密的示例硬件配置400的简化框图。在示例硬件配置400中,主机SoC 410通过互连(例如,基于PCIe或CXL的互连)耦合到IO设备SoC 420。主机SoC 410还包括处理器418和存储器419(其中,可以存储CPU数据和/或IO数据,例如,如图3所示)。每个SoC可以包括除了所示组件之外的其他组件。主机SoC 410包括根端口412,其可以运作得相似于PCIe根综合体的根端口。根端口412包括:IOMMU 414,其可以包括将有直接存储器存取(DMA)能力的I/O总线连接到主机SoC 410的存储器419的存储器管理单元(MMU);和加密引擎416,其可以执行如本文所描述的一种或多种加密/解密功能。例如,在主机SoC 410与IO设备SoC 420之间的互连链路上(分别地)的存储/传输之前,加密引擎416可以对所加密的IO代码/数据312进行加密/解密。IO设备SoC 420包括设备TLB 422和一致数据存储424。
图4所示的示例还示出例如对于SVM场景用于对IO侧存储器存取的粗粒度式CC扩展的示例操作流程。以下示出并且描述的示例流程指代CXL.cache协议(因此使用PCIe地址转译服务(ATS)协议),但是将理解,可以在其他互连协议中利用底层概念。首先,作为(例如,经由常规MMIO或特定ENQCMD指令的)IO控制路径中的命令提交的部分,受加密虚拟地址(EVA)发送到IO设备SoC 420。作为数据路径DMA操作的部分,IO设备SoC 420发送回它接收的同一EVA。
在图4中的(1)处,IO设备SoC 420经由PCIe ATS协议向主机SoC 410的根端口412发送包括EVA的转译请求。根端口412然后在(2)处(例如,经由分组密码加密/解密方案(例如,美国专利申请公开No.2020/0145187(题为“Bit-Length Parameterizable Cipher”)中公开的K-Cipher、或另一32比特轻量级分组密码))使用加密引擎416将EVA解密为GVA。根端口412然后在IOMMU 414中定位GVA。在单个IO指针加密密钥的情况下,密钥可以在CPU侧得以安全地生成,并且经由新基址寄存器(BAR)或甚至现有VT-d BAR(用于有向I/O的虚拟化技术)通过存储器映射IO(MMIO)在IO侧得以编程。对于多个IO密钥(例如,每租户或上下文密钥),利用现有设备以进行上下文VT-d映射,IO密钥可以存储在PASID(进程地址空间ID)表条目中,或经由该条目中的指针(例如,每域ID 1个)引用。在查找IA页表之前,可以经由上述方法获得密钥,并可以对指针进行解密。基于K密码的管道同样可以处于集成IP(例如,HIOP(主机I/O处理器))中,并且分离的硬件微架构可以保留以存储专用BAR中开放的请求方ID(RID)、PASID所引用的密钥。对于PCIe ATS,作为转译完成的部分,可以扩展设备以将EVA+所返回的HPA存储在设备TLB 422中,并且可以在转译后的路径上扩展PCIe协议,以使用新的或现有的前缀比特发送EVA作为相同TLP净荷的部分,以表明净荷中的有效EVA。这是因为,主机侧的实际数据加密/解密需要EVA。其他VT-d扩展(例如,将EVA存储在从PASID表条目引用的结构中,以用于挂起转译后的(以及由此,所完成的转译)请求)可以得以完成(由GVA索引)并在转译后的路径中加以检索。
接下来,在主机侧获得主机物理地址(HPA),并且在(3)处,HPA发送到IO设备SoC420。例如,在DMA路径中(要么未转译的(在EVA解密之后),要么转译后的(在PCIe ATS的情况下)),可以经由IOTLB存取/页遍历正常地获得/检查HPA。在(4)处,IO设备SoC 420使用所获得的HPA发送读取或写入请求。响应于此,主机SoC 410经由加密引擎416(例如,经由分组密码(例如,64比特分组密码(例如,PRINCE、伽罗瓦/计数器模式(GCM)或Gimli)或比特长度可参数化的密码(例如,K密码)))对主机存储器中存储的数据进行解密,并在(7)处将已解密数据发送到IO设备SoC 420。对于写入,可以将EVA存储在IO输入缓冲区条目中,并且可以经由在IO路径中内联的加密引擎416对数据进行加密。对于读取,EVA可以附加地存储在可以用在用于完成的数据解密中的现有的所分配的完成缓冲区条目中(带有所携带的唯一标签)。可以在读取/写入路径上共享同一数据加密/解密管道。可以经由安全MMIO与IO子系统共享对应密钥。
在一些实施例中,加密引擎416可以在向IO设备SoC 420的传输之前对已解密数据执行完整性检查。例如,消息认证代码(MAC)或散列可以连同已加密数据存储在存储器中。如果已加密数据(例如,由敌手)改变,则(例如,经由确定性检测)MAC在完整性检查中将不再匹配。
在所描述的实施例中,IO设备总是通过互连接收/发送未加密的数据,保持设备改变最小(其中,仅对用于PCIe ATS操作的EVA进行改变)。经由点对点MMIO通过上述路径存取附接到设备的存储器将恰按原样工作,其中,在DMA源发IO栈上执行加密/解密。通用的、可缩放的存储器边界扩展用于支持任何设备附接的系统存储器(例如,CXL.mem协议),而无需每一IO硬件栈上的SoC改变。
在来自上述示例的进展中,以下在对应缓冲区分配上基于大小字段、类型字段、版本字段或指针中的另一字段强制针对细调的IO对象内存储器存取控制。在如上所述的租户特定IO分配密钥的顶部上,用该细调信息启发对应IO分配栈。因此,IO代码/内核内的存储器安全问题(例如,缓冲区上溢、悬空指针/释放后使用(UAF)等)也(连同CPU侧)受检测/防止导致利用。如果IO存储器在插槽之外分配给所附接的DRAM,则如上文关于图3和图4所描述的通过增强型SoC/IOMMU的相同流程也可以应用于下文关于图5和图6进一步描述的示例。
图5示出与执行应用的各个方面的各种XPU关联的应用存储器510和数据511、512、513、514的又一简化框图。在所示示例中,数据511、513与主机设备的CPU关联,而数据512、514与连接到主机设备的IO设备的代码或数据关联。如所示,数据511、513中的每一个当处于存储器510中时受加密,其中,每一个用不同的密钥/细调配对(例如,用上下文特定指针细调/密钥)加以加密,如所示。可以根据本文和美国专利No.9,436,847(题为“Cryptographic pointer address encoding”)和/或美国专利申请公开No.2020/0125501(题为“Pointer Based Data Encryption”)中所公开的密码式计算实施例执行数据511、513的加密。数据512、514当存储在存储器510中时也使用相应租户IO密钥/细调配对加以加密。租户IO密钥可以与由CPU经由CC启发库使用的密钥不同。
图6示出根据特定实施例的用于提供IO设备数据加密的另一示例硬件配置600的简化框图。在示例硬件配置600中,主机SoC 610通过互连(例如,基于PCIe或CXL的互连)耦合到IO设备SoC 620。主机SoC 610还包括处理器618和存储器619(其中,可以存储CPU数据和/或IO数据,例如,如图5所示)。每个SoC可以包括除了所示组件之外的其他组件。主机SoC610包括根端口612,其可以运作得相似于PCIe根综合体的根端口。根端口612包括IOMMU614,其可以包括将有直接存储器存取(DMA)能力的I/O总线连接到主机SoC 410的存储器619的存储器管理单元(MMU)。在此,IO设备SoC 620包括加密引擎616,其可执行如本文所描述的一个或多个加密/解密功能。例如,加密引擎616可以于在互连上向主机SoC 610的传输之前对受加密IO代码/数据512、514进行加密/解密。IO设备SoC 420还包括设备TLB 622和一致数据存储624。
与实现方式2相比,在IO设备/加速器内吸收位于SoC IO子系统上的上述加密引擎。在上图中示出设备在PCIe ATS协议之后拿回HPA并使用它以存取任何系统存储器的最普通情况。这种设备包含式CC H/W启发防止需要支持在SoC中的每一IO子系统栈上的硬件改变(理想地,没有SoC改变)。这里,IO S/W栈向控制路径中的设备发送受加密虚拟地址(EVA)。经由PCIe安全协议和数据模型(SPDM)流或经由命令提交控制路径中的正常MMIO(使用PCIe/CXL IDE链接加密所保护的链接)与设备共享特定IO指针加密密钥。对于多个密钥,控制路径主机/访客S/W和设备需要遵照某种协议以进行同步(例如,在提交路径中针对租户改变共享/通知密钥改变)。可以经由正被标准化为可信设备要求的部分的设备接口管理协议(DIMP)中的新消息完成该操作。
在图6中的(1)处,IO设备SoC 620对EVA进行解密以获得GVA,并且也可以在设备TLB 622的条目中存储原始EVA细调(例如,EVA的部分(例如,EVA的高比特),包括大小字段、版本字段、类型字段等中的一个或多个)。在(2)处,IO设备SoC 620向主机SoC 610发送带有GVA的转译请求。主机SoC 610在根端口612中通过系统IOMMU 614(或在一些实例中,经由设备页遍历器)在转译之后获得HPA,并且在(4)处将HPA发送回IO设备SoC 620。在(5)处,IO设备SoC 620存储HPA,并且在(6)处,IO设备SoC 620使用HPA向主机SoC 610发送读取/写入请求以存取存储器619中的数据(其可以如所示处于主机SoC 610中,或例如使用CXL.mem协议以另一方式(例如,通过附接到主机SoC 610的设备)耦合到主机SoC 610)。
对于写入,IO设备SoC 620使用加密引擎626对于待写入的数据进行加密。加密引擎626可以用基于EVA的计数器流对数据进行加密。对于读取,IO设备SoC 620负责IO数据解密(与上述实现方式2对比)。也可以经由所建立的安全信道(例如,经由PCIe/MCTP SPDM(分别为管理组件传输协议、安全协议和数据模型)1.1协议)与IO设备SoC 620共享用于对IO数据进行加密/解密的密钥(例如,64比特密码(例如,PRINCE、Galois/计数器模式(GCM)或Gimli)或比特长度参数化密码(例如,K密码))。因此,所有CC密码式操作可以自含于IO设备内部,并且将不依赖于特定主机SoC能力。从设备硬件架构的角度来看,IDE(完整性和数据加密)PCIe/CXL链路加密引擎626可以扩展以支持IO设备中的数据路径加密/解密。通过这种可缩放的扩展,可以对于IO用CC语义支持(例如,平台上的,并且可以由CXL.mem协议存取的)任何系统存储器。
在一些实施例中,在系统中可以组合实现方式2和实现方式3的方面。例如,一些IO设备可能不具有关于实现方式3描述的配置(例如,板载加密引擎(例如,加密引擎626)),并且可以利用主机SoC加密引擎以用于CC操作,例如,如以上关于实现方式2所描述的那样。在这些实例中,可以扩展VT-d表以指示在页遍历期间系统支持CC的要求(其中,虚拟地址可以视为EVA)。在一些情况下,IO设备可以在所编码的TLP前缀比特中向主机SoC通知其CC能力/要求(例如,如以上关于实现方式2所描述的那样)。同样可以采用其他模型特定系统级解决方案(例如,具有带有传入设备/BDF(Bus:Device.Function)的列表的微架构表的IOMMU,其中,不需要附加CC操作(如适用))。
最后,对于附接到IO设备(例如,未公开于系统地址空间中)并由主机SoC/设备驱动程序管理的本地存储器,可以实现类似设备侧改变,以支持用于该存储器中的所有本地分配的精细粒度式CC保护。
用于密码式计算的分解式存储器扩展
除了上述I/O扩展之外,本公开的方面可以将基于CC的存储器安全性和保护扩展到分解式平台,其包括存储器,来自存储器的内核或IO侧代码/数据(例如,图3和图5中所示的数据)得以在远程位置(例如,跨越数据中心或云环境的机架或节点)中分配。典型地,云环境中的扩大组构是网络,有远程直接存储器存取(RDMA)能力的NIC对于本地节点提供存取环境中的其他节点上的存储器的方式。因此,关于RDMA协议和关联硬件(例如,RDMA网络接口卡(NIC))描述本文的特定方面。RDMA NIC可以位于其他加速器或基础设施处理单元(IPU)内部,如本文所描述的那样。然而,应理解,本文描述的相同或相似的概念可以应用于其他扩大组构或协议(例如,比如,InfinibandTM或GenZTM)。
例如,在特定实施例中,主机处理器/SoC上运行的软件栈或应用可以通过网络将受CC保护的数据安全地卸载到设备(例如,远程SoC),以用于远程存储。也就是说,可以从远程设备上的DDR或耦合到IO设备的远程DDR对主机SoC上的软件栈或应用分派存储器。在一个示例场景中,对远程DDR的用于应用的主机内核或IO侧存取可以是通过RDMA的。RDMA可以提供特定优势:直接用户空间设置和存取、无反弹缓冲区、对硬件的更容易的传输卸载、以及其他优势。可以通过资源管理器或通过其他手段使软件栈/应用感知远程设备存储器可用性。在一些实例中,主机同样可以将基于CC的计算(例如,加密/解密功能或其他CC机制)卸载到远程设备/SoC。卸载可以基于设备能力(例如,主机与远程设备之间的相对处理本领(例如,处理器(CPU与GPU)的数量或类型))、负载平衡(例如,在主机受瓶颈的情况下)、基于地理位置的远程设备的可信度、或出于其他原因。在一些实例中,主机可以将基于CC的计算卸载到耦合到主机的智能NIC。在其他实例中,主机可以将基于CC的计算卸载到远程设备或耦合到远程设备的智能NIC,例如,其中,这些设备处于主机的可信计算边界(TCB)内。可以经由基于RDMA的协议(例如,融合以太网上的RDMA(RoCE)、互联网广域RDMA协议(IWARP)或Infiniband)在主机与远程设备之间共享数据。
图7-图8示出根据特定实施例的基于CC的保护可以扩展到分解式存储器的示例计算环境700、800。在所示的每个示例中,相应计算环境包括主机片上系统(SoC)(例如,710、710),其包括:数个处理器(例如,712、812);和根端口(例如,714、814),其可以运作得相似于PCIe根综合体的根端口。根端口包括输入/输出存储器管理单元(IOMMU)(例如,714、814),其可以包括将有直接存储器存取(DMA)能力的I/O总线连接到耦合到主机SoC的存储器(例如,718、818)的存储器管理单元(MMU)。在特定实施例中,存储器(例如,718、818)可以实现为DDR存储器。根端口经由IO互连协议提供处理器(例如,712、812)与输入/输出(IO或I/O)设备(例如,IO设备711、811或IPU 730、730)之间的连接。互连协议可以实现基于外围组件互连高速(PCIe)和/或基于计算高速链路(CXL)的互连协议。
主机SoC通过网络(例如,735、835)耦合到远程SoC(例如,720、820)。在一些实施例中,网络(例如,735、835)可以是TCP/IP网络。远程SoC包括一个或多个处理器(例如,722、822)和带有IOMMU(例如,726、826)的根端口(例如,724、824),相似于主机SoC。主机和远程SoC经由相应IPU(例如,分别,730、830和740、840)通过网络耦合。在一些实施例中,IPU可以是智能NIC,例如,除了网络接口(例如,734、744、834、844)之外,IPU可以还包括处理器(例如,732、742、832、842),以使得IPU可以执行一个或多个计算功能(例如,加密/解密)。如上所述,在主机SoC或耦合到主机SoC的IO设备(例如,IO设备711或811)上运行的应用可受分派(或以其他方式能够存取)耦合到远程SoC的存储器(例如,DDR存储器)(例如,存储器728、828)。一起地,主机SoC 710、IO设备711、IPU 730和存储器718可以称为主机节点,而远程SoC 720、IPU 740和存储器728可以称为远程节点。
在图7所示的示例中,加密引擎(例如,717、736)包括于主机SoC 710的根端口714和耦合到主机SoC 710的IPU 730中的一个或多个中,以对于待远程存储的数据执行加密/解密操作。因此,在所示的示例中,可以在通过网络835发送数据之前对于待远程存储的数据执行基于CC的加密。以此方式,横穿网络735的任何数据都得以加密,并且不能由远程SoC或带有对网络业务的存取的任何其他设备存取。这当远程SoC不处于主机SoC的TCB内时的场景中可以是有用的,但是也可以当远程和主机SoC处于同一TCB内时加以使用。
与之对比,在图8所示的示例中,加密引擎(例如,827、846)包括于远程SoC 820的根端口824和耦合到远程SoC 820的IPU 840中的一个或多个中,以对(待存储在存储器828中的)来自主机SoC 810的数据执行加密/解密操作。因此,在图8所示的示例中,主机SoC810可以将对CC操作进行加密/解密卸载到远程加密引擎827、846之一。例如,在当远程SoC处于主机SoC的TCB内并且主机SoC没有CC能力(即,不包括如图7所示的加密引擎)时的场景中,这可能是有用的。具有TCB内的远程SoC 820的优点在于,除了在远程SoC 820上分配存储器之外,主机SoC 810还可以将受加密数据的存储器计算卸载到远程SoC 820。这赋能云环境中的所有节点之间的更好的资源利用和平衡。
虽然在图7-图8中示出两个具体示例,但是在特定实施例中可以组合每个示例的方面。例如,主机SoC可以包括如图7所示的加密引擎,但是可以将加密/解密操作卸载到位于远程SoC或IPU中的加密引擎,例如,以用于负载平衡或其他目的。在任何情况下,主机SoC上运行的软件栈/应用可以感知每个设备的CC能力,并且可以相应地确定哪个设备将要执行基于CC的加密/解密以用于远程数据存储。例如,主机软件栈可以在通过网络发送数据之前(例如,经由ENQCMD和MMIO命令)命令其CC赋能的IPU以执行加密操作,或者可以用远程SoC执行某些证明/配置(例如,如下文进一步描述的那样),以使得它对远程存储的数据执行加密操作。
图9示出根据特定实施例的用于将基于CC的保护扩展到分解式存储器的示例过程900的流程图。示例过程可以实现于软件、硬件、固件或其组合中。例如,在一些实施例中,图9所示的示例过程中的操作可以由执行存储器分配的主机节点(例如,图7-图8的主机SoC710、810)的电路执行。在一些实施例中,可以用实现以下示例过程中的操作中的一个或多个的指令对计算机可读介质进行编码。示例过程可以包括附加的或不同的操作,并且操作可以按所示的顺序或按其他顺序加以执行。在一些情况下,图9中所示的操作中的一个或多个实现为包括多个操作、子过程或其他类型的例程的过程。在一些情况下,操作可以加以组合、以另一顺序执行、并行执行、迭代、或以其他方式重复或以另一方式执行。
在902,主机节点(例如,主机SoC 710或810)上执行的软件栈(例如,云系统的资源管理器或编排层栈)获得关于远程节点(例如,远程SoC 720或820)的设备能力信息。软件栈还可以获得关于主机节点和/或远程节点的智能NIC/IPU(例如,IPU 730、740)的设备能力信息。在一些实例中,RDMA软件栈(例如,VERBS API库)、SoC CC密式驱动程序、IPU/NIC驱动程序可受被启发,以经由队列配对传递能力信息作为硬件设置/配置和/或命令提交的部分。SoC和/或IPU上的CC硬件可以被配置为解释这些软件指导并如下所述相应地执行动作。如果资源管理器/编排栈处于主机应用TCB中,则该流程将良好地运行。然而,如果不是,则软件可以首先验证远程平台的真实性,并执行某种证明(例如,就像它将对于主机平台真实性/来源同样所做的那样)。这可以基于公钥签名和基于质询-响应的协议。
在904,软件栈确定远程节点中存在存储器可用性,并且可以在906相应地指引主机节点上运行的主机应用以使用该的存储器以用于分配。栈可以例如以清单的形式将在902所获得的设备能力信息传递到主机应用。可以用如上所述的CC有关信息(例如,设备硬件能力、(例如,来自远程IPU IP地址的)地理位置、SoC制造商(例如,英特尔与非英特尔SoC)等)增强清单。
在908,主机应用选择执行基于CC的密式操作所处的节点。例如,如果能力信息对于远程节点是不可用的,或者应用判断远程节点处于TCB的外部,则可以选取主机节点硬件以执行密码式操作。在特定实施例中,也可以选取主机节点硬件以作为默认执行密码式操作。替代地,如果主机节点和/或IPU在其CC能力方面受限制(例如,不能执行这些操作/没有加密引擎,如图8所示),则可以去往/来自主机旁路应用数据,并且可以(经由远程IPU或远程SoC)在远程节点上执行密式操作,以用于对应读取/写入。如果这两个平台是有CC能力的,则主机节点上的软件栈可以强制用于负载平衡的动态策略。例如,软件栈可以与主机应用和对应RDMA栈/驱动程序交互,以基于主机和/或远程设备中的当前处理工作负载、来自其他上下文的IO业务、功率状态等在设备之间动态地切换CC密式责任。
在910,所选择的节点被配置为执行基于CC的密式操作。例如,基于SoC的加密引擎(例如,717、827)可以具有配置信息(其可以由主机/远程上的对应驱动程序经由存储器映射式输入/输出(MMIO)命令加以设置),以指示当前模式(即,它应关于写入/读取进行加密/解密还是旁路加密)。主机应用可以与驱动程序进行通信,以配置该当前模式信息。对于多主机<->远程活动IO上下文,该模式可以依照硬件中的上下文(例如,主机RDMA NIC/IPU的BDF或PASID)。对于CC启发式IPU/RDMA NIC,可以用每条目1个附加比特扩展现有转译保护表(其用于对于每一存储器窗口配置STAG),这可以由主机或远程平台上的IPU驱动程序配置(如适用)。与上述场景相似,主机应用将与IPU驱动程序进行通信,以设置/禁用该比特。这将与设备内部的数据加密/解密引擎交互,以对用于该特定逻辑存储器窗口的业务进行旁路或加密/解密。
在一些情况下,用于RDMA NIC/IPU执行CC密式操作的意图可以作为命令提交自身的部分嵌入对应队列中。例如,NIC可以读取描述符并获知要使用哪种模式(加密/解密或旁路)。在例如容器、功能即服务(Faas)等的使用情况下,在多个上下文在精细粒度式存储器对象等级进行CC远程存储器存取的情况下,这可能是有用的。
倘若远程SoC/IPU将要执行加密/解密操作,那么数据加密/解密密钥可以经由远程与主机之间的安全信道设置传递,并且远程SoC/IPU驱动程序可以将它配置在远程硬件上。安全信道设置可以基于证明/认证协议。对应受加密虚拟地址远程可以被配置在NIC侧,以用于对应存储器窗口用于数据的加解密。
图10-图13示出可以并入本公开的方面的示例互连实施例。参照图10,示出由互连组件集合的点对点链路组成的组构的实施例。系统1000包括耦合到控制器中枢1015的处理器1005和系统存储器1010。处理器1005包括任何处理元件(例如,微处理器、主处理器、嵌入式处理器、协处理器或其他处理器)。处理器1005通过前端总线(FSB)1006耦合到控制器中枢1015。在一个实施例中,FSB 1006是如下所述的串行点对点互连。在另一实施例中,链路1006包括符合不同互连标准的串行、差分互连架构。在一些实现方式中,系统可以包括用于实现多个协议栈的逻辑和用于协商待在公共物理层的顶部上运行的替代协议的另一逻辑等其他示例特征。
系统存储器1010包括任何存储器设备(例如,随机存取存储器(RAM)、非易失性(NV)存储器或可由系统1000中的设备存取的其他存储器)。系统存储器1010通过存储器接口1016耦合到控制器中枢1015。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。
在一个实施例中,控制器中枢1015是外围组件互连高速(PCIe或PCIE)互连层次结构中的根中枢、根综合体或根控制器。控制器中枢1015的示例包括芯片集、存储器控制器中枢(MCH)、北桥、互连控制器中枢(ICH)、南桥和根控制器/中枢。一般,术语芯片集指代两个物理上分离的控制器中枢(即,耦合到互连控制器中枢(ICH)的存储器控制器中枢(MCH))。注意,当前系统一般包括与处理器1005集成的MCH,而控制器1015用于与I/O设备进行通信,如下所述。在一些实施例中,通过根综合体1015可选地支持点对点路由。
在此,控制器中枢1015通过串行链路1019耦合到切换器/桥接器1020。输入/输出模块1017和1021(其也可以称为接口/端口1017和1021)包括/实现分层协议栈,以提供控制器中枢1015与切换器1020之间的通信。在一个实施例中,多个设备能够耦合到切换器1020。
从处理器1005或系统存储器1010到设备1025,切换器/桥接器1020将分组/消息从设备1025上游(即,层次结构向上朝向根综合体)路由到到控制器中枢1015和下游(即,层次结构向下远离根控制器)。在一个实施例中,切换器1020称为多个虚拟PCI到PCI桥接设备的逻辑组装。设备1025包括待耦合到电子系统的任何内部或外部设备或组件(例如,I/O设备、网络接口控制器(NIC)、附加件卡、音频处理器、网络处理器、硬驱动器、存储设备、CD/DVDROM、监控器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描仪和其他输入/输出设备)。一般在PCIe行话中,例如设备称为端点。虽然没有具体示出,但是设备1025可以包括PCIe到PCI/PCI-X桥接器,以支持遗留或其他版本的PCI设备。PCIe中的端点设备一般归类为遗留、PCIe或根综合体集成端点。
图形加速器1030还通过串行链路1032耦合到控制器中枢1015。在一个实施例中,图形加速器1030耦合到MCH,MCH耦合到ICH。切换器1020以及相应地I/O设备1025于是耦合到ICH。I/O模块1031和1018还用于实现分层协议栈,以在图形加速器1030与控制器中枢1015之间进行通信。与上面的MCH讨论相似,图形控制器或图形加速器1030自身可以集成在处理器1005中。此外,系统的一个或多个链路(例如,1023)可以包括一个或多个扩展设备(例如,1050)(例如,重定时器、中继器等)。
转向图11,示出分层协议栈的实施例。分层协议栈1100包括任何形式的分层通信栈(例如,快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈或其他分层栈)。虽然以下的讨论涉及PCIe栈,但是相同的概念可以应用于其他互连栈。在一个实施例中,协议栈1100是PCIe协议栈,其包括事务层1105、链路层1110和物理层1120。接口(例如,图10中的接口1017、1018、1021、1022、1026和1031)可以表示为通信协议栈1100。作为通信协议栈的表示也可以称为实现/包括协议栈的模块或接口。
PCI高速使用分组以在组件之间传递信息。在事务层1105和数据链路层1110中形成分组,以将信息从发送组件携带到接收组件。随着所发送的分组流动通过其他层,它们用对于在这些层处处置分组必要的附加信息加以扩展。在接收侧,相反的过程发生,并且分组从它们的物理层1120表示变换为数据链路层1110表示,并最终(对于事务层分组)变换为可以由接收设备的事务层1105处理的形式。
事务层
在一个实施例中,事务层1105用于提供设备的处理内核与互连架构(例如,数据链路层1110与物理层1120)之间的接口。于此,事务层1105的主要责任是分组(即,事务层分组或TLP)的组装和分解。转译层1105典型地管理用于TLP的基于信用的流控制。PCIe实现拆分事务(即,带有由时间分离的请求和响应的事务),允许链路在目标设备关于响应收集数据的同时携带其他业务。
此外,PCIe利用基于信用的流控制。在该方案中,设备对于事务层1105中的接收缓冲区中的每一个通告初始信用量。链路的相对端处的外部设备(例如,图10中的控制器中枢1015)计算由每个TLP消耗的信用的数量。如果事务没有超过信用限制,则可以发送事务。在接收到响应时,恢复信用量。信用方案的优点在于,信用回报的时延不影响性能,前提是没有遭遇信用限制。
在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括读取请求和写入请求中的一个或多个,以将数据发送去往/来自存储器映射位置。在一个实施例中,存储器空间事务能够使用两种不同的地址格式(例如,短地址格式(例如,32比特地址)或长地址格式(例如,64比特地址))。配置空间事务用以存取PCIe设备的配置空间。用于配置空间的事务包括读取请求和写入请求。消息空间事务(或简单地,消息)定义为支持PCIe代理之间的带内通信。
因此,在一个实施例中,事务层1105组装分组头/净荷1106。可以在PCIe规范网站处的PCIe规范中找到用于当前分组头/净荷的格式。
链路层
链路层1110(也称为数据链路层1110)充当事务层1105与物理层1120之间的中间级。在一个实施例中,数据链路层1110的责任是提供用于在两个组件链路之间交换事务层分组(TLP)的可靠机制。数据链路层1110的一侧接受由事务层1105组装的TLP,应用分组序列标识符1111(即,标识号或分组号),计算并应用错误检测代码(即,CRC 1112),并且将修改后的TLP提交给物理层1120以用于跨越物理向外部设备的传输。
物理层
在一个实施例中,物理层1120包括逻辑子块1121和电子块1122,以将分组以物理方式发送到外部设备。在此,逻辑子块1121负责物理层1121的“数字”功能。于此,逻辑子块包括:发送部,其用于准备传出信息,以用于物理子块1122进行的传输;和接收部,其用于标识并且准备接收到的信息,然后将它传递到链路层1110。
物理块1122包括发射机和接收机。发射机由逻辑子块1121提供符号,发射机将这些符号串行化并发送到外部设备上。接收机得以提供来自外部设备的串行化符号,并将接收到的信号变换为比特流。比特流解串行化,并提供给逻辑子块1121。在一个实施例中,采用8b/10b传输码,其中,发送/接收十比特符号。在此,特殊符号用以用帧1123使分组成帧。此外,在一个示例中,接收机还提供从传入串行流恢复的符号时钟。
如上所述,虽然参考PCIe协议栈的特定实施例讨论事务层1105、链路层1110和物理层1120,但是分层协议栈不限于此。事实上,可以包括/实现任何分层协议。作为示例,表示为分层协议的端口/接口包括:(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、(例如,允许主机处理器与加速器设备共享存储器的)存储器协议和一致性接口的区块中提供高级协议。
转向图12,示出说明利用CXL链路1250的示例系统的简化框图1200。例如,链路1250可以将主处理器1205(例如,CPU)互连到加速器设备1210。在该示例中,主机处理器1205包括一个或多个处理器内核(例如,1215a-b)和一个或多个I/O设备(例如,1218)。主机存储器(例如,1260)可以具备(例如,相同的封装或管芯上的)主机处理器。加速器设备1210可以包括加速器逻辑1220,并且在一些实现方式中,可以包括它自己的存储器(例如,加速器存储器1265)。在该示例中,主机处理器1205可以包括用于实现一致性/缓存逻辑1225和互连逻辑(例如,PCIe逻辑1230)的电路。也可以提供CXL复用逻辑(例如,1255a-b),以赋能CXL协议(例如,I/O协议1235a-b(例如,CXL.io)、缓存协议1240a-b(例如,CXL.cache)和存储器存取协议1245a-b(CXL.mem)的复用),由此赋能通过主机处理器1205与加速器设备1210之间的链路1250以复用方式发送所支持的协议(例如,1235a-b、1240a-b、1245a-b)中的任一个的数据。
在一些实现方式中,Flex BusTM端口可以与CXL合规链路协同加以利用,以灵活地适配设备以与各种其他设备(例如,其他处理器设备、加速器、切换器、存储器设备等)互连。Flex总线端口是静态地被配置为支持PCIe或CXL链路(以及潜在地,还有其他协议和架构的链路)的灵活的高速端口。Flex总线端口允许设计在提供原生PCIe协议或高带宽、封装外链路上的CXL之间进行选取。端口处应用的协议的选择可以经由自动协商并基于插入插槽中的设备在引导时间期间发生。Flex总线使用PCIe电气元件,使其与PCIe重定时器兼容,并符合用于附加件卡的标准PCIe形数。
图13示出示出利用以实现CXL链路的示例端口架构1300(例如,Flex总线)的简化框图。例如,Flex总线架构可以组织为多个层,以实现由端口支持的多个协议。例如,端口可以包括(例如,全部或部分实现于电路中的)事务层逻辑(例如,1305)、链路层逻辑(例如,1310)和物理层逻辑(例如,1315)。例如,事务(或协议)层(例如,1305)可以细分为:事务层逻辑1325,其实现PCIe事务层1355和基本PCIe事务层1355的(用于CXL.io的)CXL事务层增强1360;和逻辑1330,其用于实现用于CXL链接的缓存(例如,CXL.cache)和存储器(例如,CXL.mem)协议。相似地,可以提供链路层逻辑1335以实现基本PCIe数据链路层1365和表示PCIe数据链路层1365的增强版本的(用于CX1.io的)CXL链路层。CXL链路层1310可以还包括(例如,用于CXL.cache和CXL.mem的)缓存和存储器链路层增强逻辑1340。
继续图13的示例,在其他示例实现方式当中,CXL链路层逻辑1310可以与交织来自两个逻辑流(例如,PCIe/CXL.io和CXL.cache/CXL.mem)的业务的CXL仲裁/复用(ARB/MUX)逻辑1320进行接口。在链路训练期间,事务层和链路层被配置为在PCIe模式或CXL模式下进行操作。在一些实例中,在其他示例当中,主机CPU可以支持PCIe或CXL模式的实现方式,而其他设备(例如,加速器)可以仅支持CXL模式。在一些实现方式中,端口(例如,Flex总线端口)可以基于PCIe物理层(例如,PCIe电PHY 1350)利用物理层1315。例如,Flex总线物理层可以实现为聚合式逻辑物理层1345,其可以基于在链路训练过程期间的替代模式协商的结果在PCIe模式或CXL模式下进行操作。在一些实现方式中,物理层可以支持多个信令速率(例如,8GT/s、16GT/s、32GT/s等)和多个链路宽度(例如,x16、x8、x4、x2、x1等)。在PCIe模式下,由端口1300实现的链路可以完全符合(例如,如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插槽的粗略监听过滤器。
以下图14-图18提供可以在如本文描述的实施例的上下文中使用的一些示例计算设备、计算环境、硬件、软件或流程。
图14是示出根据至少一个实施例的示例密码式计算环境1400的框图。在所示示例中,密码式寻址层1410扩展跨越示例计算矢量中央处理单元(CPU)1402、图形处理单元(GPU)1404、人工智能(AI)1406和现场可编程门阵列(FPGA)1408。例如,CPU 1402和GPU1404可以对于存储器1412中存储的数据共享相同的虚拟地址转译,并且密码式地址可以构建在该所共享的虚拟存储器上。它们可以对于给定的执行流程共享相同的进程密钥,并遵照相同的密码式算法计算相同的细调,以对密码式已编码地址进行解密并且对由这些已编码地址引用的数据进行解密。
加以组合,本文所描述的能力可以赋能密码式计算。可以从缓存的第一层级通过缓存的最后层级并进入系统存储器中在存储器层次结构的每一层级对存储器1412进行加密。将密码式地址编码绑定到数据加密可以允许极端精细粒度对象边界和存取控制,赋能下至甚至用于功能即服务的单独功能及其对象的精细粒度安全容器。对调用栈上的返回地址(取决于它们的位置)进行密码式编码也可以在不需要影子栈元数据的情况下赋能控制流程完整性。因此,仅取决于密码式寻址和各个密码式数据绑定,可以通过密码式方式执行任何数据存取控制策略和控制流程。
图15-图14是可以根据本文所公开的实施例使用的示例性计算机架构的框图。通常,可以使用本领域中已知的用于处理器和计算系统的任何计算机架构设计。在一个示例中,本领域已知的用于膝上型计算机、台式机、手持式PC、个人数字助理、平板计算机、工程工作站、服务器、网络设备、服务器、电器、网络集线器、路由器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、智能电话、移动设备、可穿戴电子设备、便携式媒体播放器、手持设备和各种其他电子设备的系统设计和配置也适合于本文描述的计算系统的实施例。通常,用于本文所公开的实施例的合适计算机架构可以包括但不限于图15-图17所示的配置。
图15是根据实施例的处理器的示例说明。处理器1500是可以结合本文示出并且描述的实现方式(例如,处理器102)使用的一种类型的硬件设备的示例。处理器1500可以是任何类型的处理器(例如,微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、多核处理器、单核处理器或其他用于执行代码的设备)。虽然在图15中仅示出一个处理器1500,但是处理元件可以替代地包括图15所示的处理器1500中的多于一个。处理器1500可以是单线程内核,或者对于至少一个实施例,处理器1500可以是多线程的,因为它可以包括每内核多于一个的硬件线程上下文(或“逻辑处理器”)。
图15还示出根据实施例的耦合到处理器1500的存储器1502。存储器1502可以是对于本领域技术人员已知的或以其他方式可用的广泛各种存储器(包括存储器层次结构的各个层)中的任一种。这些存储器元件可以包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)的逻辑块、可擦除可编程只读存储器(EPROM)和电可擦除可编程只读存储器(EEPROM)。
处理器1500可以执行与本文详述的算法、过程或操作关联的任何类型的指令。通常,处理器1500可以将要素或物品(例如,数据)从一种状态或事物变换为另一状态或事物。
可以作为待由处理器1500执行的一个或多个指令的代码1504,可以存储在存储器1502中,或者可以存储在软件、硬件、固件或其任何合适的组合中,或者在适当的情况下并基于特定需求存储在任何其他内部或外部组件、设备、要素或对象中。在一个示例中,处理器1500可以遵照由代码1504指示的指令的程序序列。每条指令进入前端逻辑1506,并且由一个或多个解码器1508处理。解码器可以生成微操作(例如,呈预定义格式的固定宽度微操作)作为其输出,或者可以生成反映原始代码指令的其他指令、微指令或控制信号。前端逻辑1506还包括寄存器重命名逻辑1510和调度逻辑1512,它们通常分配资源并且将对应于指令的操作排队以用于执行。
处理器1500可以还包括具有执行单元1516a、1516b、1516n等的集合的执行逻辑1514。一些实施例可以包括专用于特定功能或功能集合的数个执行单元。其他实施例可以仅包括一个执行单元或可以执行特定功能的一个执行单元。执行逻辑1514执行由代码指令指定的操作。
在完成由代码指令指定的操作的执行之后,后端逻辑1518可以退离代码1504的指令。在一个实施例中,处理器1500允许指令的无序执行,但是要求有序退离。退离逻辑1520可以采取各种已知形式(例如,重新排序缓冲区等)。以此方式,至少鉴于由解码器生成的输出、由寄存器重命名逻辑1510利用的硬件寄存器和表以及由执行逻辑1514修改的任何寄存器(未示出),在代码1504的执行期间变换处理器1500。
虽然未在图15中示出,但是处理元件可以包括带有处理器1500的芯片上的其他元件。例如,处理元件可以包括存储器控制逻辑连同处理器1500。处理元件可以包括I/O控制逻辑,和/或可以包括与存储器控制逻辑集成的I/O控制逻辑。处理元件可以还包括一个或多个缓存。在一些实施例中,非易失性存储器(例如,闪存或熔丝)也可以包括于具有处理器1500的芯片上。
图16A是示出根据本公开的一个或多个实施例的示例性有序流水线和示例性寄存器重命名、无序发放/执行流水线二者的框图。图16B是示出根据本公开的一个或多个实施例的待包括于处理器中的有序架构内核和示例性寄存器重命名、无序发放/执行架构内核的示例性实施例二者的框图。图16A-图16B中的实线框示出有序流水线和有序内核,而虚线框的可选添加示出寄存器重命名、无序发放/执行流水线和内核。考虑到有序方面是无序方面的子集,将描述无序方面。
在图16A中,处理器流水线1600包括获取级1602、长度解码级1604、解码级1606、分配级1608、重命名级1610、调度(也称为指派或发放)级1612、寄存器读取/存储器读取级1614、执行级1616、回写/存储器写入级1618、异常处理级1622和提交级1624。
图16B示出处理器内核1690,其包括耦合到执行引擎单元1650的前端单元1630,并且二者耦合到存储器单元1670。处理器内核1690和存储器单元1670是可以结合本文示出并且描述的实现方式(例如,处理器102、存储器120)使用的硬件的类型的示例。内核1690可以是精简指令集计算(RISC)内核、复杂指令集计算(CISC)内核、超长指令字(VLIW)内核或混合或替代内核类型。作为又一选项,内核1690可以是专用内核(例如,网络或通信内核、压缩引擎、协处理器内核、通用计算图形处理单元(GPGPU)内核、图形内核等)。此外,处理器内核1690及其组件表示可以用以实现逻辑处理器及其各个组件的示例架构。
前端单元1630包括分支预测单元1632,其耦合到指令缓存单元1634,指令缓存单元1634耦合到指令转译后备缓冲区(TLB)单元1636,指令转译后备缓冲区(TLB)单元1636耦合到指令获取单元1638,指令获取单元1638耦合到解码单元1640。解码单元1640(或解码器)可以对指令进行解码,并生成解码自、或以其他方式反映、或导出自原始指令的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出。可以使用各种不同的机制实现解码单元1640。合适的机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(PLA)、微码只读存储器(ROM)等。在一个实施例中,内核1690包括微码ROM或存储用于(例如,解码单元1640中,或以其他方式,前端单元1630内的)特定宏指令的微代码的其他介质。解码单元1640耦合到执行引擎单元1650中的重命名/分配器单元1652。
执行引擎单元1650包括重命名/分配器单元1652,其耦合到退离单元1654和一个或多个调度器单元1656的集合。调度器单元1656表示任何数量的不同调度器,包括保留站、中央指令窗口等。调度器单元1656耦合到物理寄存器文件单元1658。物理寄存器文件单元1658中的每一个表示一个或多个物理寄存器文件,其中的不同寄存器文件存储一种或多种不同的数据类型(例如,标量整数、标量浮点、封装整数、封装浮点、矢量整数、矢量浮点、状态(例如,作为待执行的下一指令的地址的指令指针)等)。在一个实施例中,物理寄存器文件单元1658包括矢量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量掩码寄存器和通用寄存器(GPR)。在本文描述的至少一些实施例中,寄存器单元1658是可以结合本文示出并且描述的实现方式(例如,寄存器110)使用的硬件的类型的示例。物理寄存器文件单元1658与退离单元1654重叠,以示出可以(例如,使用重排序缓冲区和退离寄存器文件;使用未来文件、历史缓冲区和退离寄存器文件;使用寄存器映射和寄存器池;等)实现寄存器重命名和无序执行的各种方式。退离单元1654和物理寄存器文件单元1658耦合到执行集群1660。执行集群1660包括一个或多个执行单元1662的集合和一个或多个存储器存取单元1664的集合。执行单元1662可以且对各种类型的数据(例如,标量浮点、封装整数、封装浮点、矢量整数、矢量浮点)执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可以包括专用于特定功能或功能集合的数个执行单元,但是其他实施例可仅包括一个执行单元或全部执行所有功能的多个执行单元。执行单元1662可以还包括地址生成单元,以计算由内核用以存取主存储器(例如,存储器单元1670)和缺页处理程序(PMH)的地址。
调度器单元1656、物理寄存器文件单元1658和执行集群1660示出为可能地是多个,因为特定实施例对于特定类型的数据/操作创建分离的流水线(例如,标量整数流水线、标量浮点/封装整数/封装浮点/矢量整数/矢量浮点流水线和/或存储器存取流水线,其均具有它们自己的调度程序单元、物理寄存器文件单元和/或执行集群——并且在分离的存储器存取流水线的情况下,实现仅该流水线的执行集群具有存储器存取单元1664的特定实施例)。还应理解,在使用分离的流水线的情况下,这些流水线中的一个或多个可以是无序发放/执行,而其余是有序的。
存储器存取单元1664的集合耦合到存储器单元1670,其包括TLB单元1672,TLB单元1472耦合到数据缓存单元1674,数据缓存单元1474耦合到层级2(L2)缓存单元1676。在一个示例性实施例中,存储器存取单元1664可以包括加载单元、存储地址单元和存储数据单元,其中的每一个耦合到存储器单元1670中的数据TLB单元1672。指令缓存单元1634进一步耦合到存储器单元1670中的层级2(L2)缓存单元1676。L2缓存单元1676耦合到一个或多个其他层级的缓存,并最终耦合到主存储器。此外,如果在数据TLB单元1672中并未找到匹配,则缺页处理程序也可以包括于内核1690中,以在页表中查找地址映射。
通过示例的方式,示例性寄存器重命名、无序发放/执行内核架构可以如下实现流水线1600:1)指令获取单元1638执行获取和长度解码级1602和1604;2)解码单元1640执行解码级1606;3)重命名/分配器单元1652执行分配级1608和重命名级1610;4)调度器单元1656执行调度级1612;5)物理寄存器文件单元1658和存储器单元1670执行寄存器读取/存储器读取级1614;执行集群1660对执行级1616进行执行;6)存储器单元1670和物理寄存器文件单元1658执行回写/存储器写入级1618;7)在异常处置级1622中可能涉及各种单元;以及8)退离单元1654和物理寄存器文件单元1658执行提交级1624。
内核1690可以支持一个或多个指令集(例如,x86指令集(带有已经添加有新版本的一些扩展);加利福尼亚州桑尼维尔MIPS Technologies的MIPS指令集;加利福尼亚州桑尼维尔ARM Holdings的ARM指令集(带有可选附加扩展(例如,NEON)),包括本文描述的指令。在一个实施例中,内核1690包括用于支持封装数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用封装数据执行由许多多媒体应用使用的操作。
应理解,内核可以支持多线程(执行两个或更多个并行的操作或线程集合),并且可以通过包括以下方式的多种方式这样做:时间切片式多线程、同时多线程(其中,单个物理内核提供用于物理内核正同时多线程化的线程中的每一个的逻辑内核)、或其组合(例如,时间切片式获取和解码以及此后的同时多线程化(例如,在超线程技术中))。因此,在至少一些实施例中,可以支持多线程式飞地。
虽然在无序执行的上下文中描述寄存器重命名,但是应理解,寄存器重命名可以用在有序架构中。虽然处理器的所示实施例还包括分离的指令和数据缓存单元1634/1674和共享的L2缓存单元1676,但是替选实施例可以具有用于指令和数据二者的单个内部缓存(例如,比如层级1(L1)内部缓存、或多个层级的内部缓存)。在一些实施例中,系统可以包括内部缓存和处于内核和/或处理器外部的外部缓存的组合。替代地,所有缓存可以处于内核和/或处理器的外部。
图17示出根据实施例的点对点(PtP)配置中所布置的计算系统1700。具体而言,图17示出处理器、存储器和输入/输出设备由数个点对点接口互连的系统。通常,可以通过与计算系统1700相同或相似的方式配置本文描述的计算系统或计算设备中的一个或多个。
处理器1770和1780可以实现为单核处理器1774a和1784a或多核处理器1774a-1774b和1784a-1784b。处理器1770和1780可以均包括由它们相应一个或多个内核使用的缓存1771和1781。共享缓存(未示出)可以包括于任一处理器中或这两个处理器之外,但经由P-P互连与处理器连接,以使得如果处理器置于低功耗模式下,则处理器之一或二者的本地缓存信息可以存储在共享缓存中。应注意,本文描述的一个或多个实施例可以实现于计算系统(例如,计算系统1700)中。此外,处理器1770和1780是可以结合本文示出并且描述的实现方式(例如,处理器102)使用的硬件的类型的示例。
处理器1770和1780也可以均包括集成存储器控制器逻辑(IMC)1772和1782,以与存储器元件1732和1734进行通信,其可以是本地附接到相应处理器的主存储器的部分。在替选实施例中,存储器控制器逻辑1772和1782可以是与处理器1770和1780分离的分立式逻辑。存储器元件1732和/或1734可以存储由处理器1770和1780在实现本文概述的操作和功能中使用的各种数据。
处理器1770和1780可以是任何类型的处理器(例如,结合其他附图讨论的处理器)。处理器1770和1780可以分别使用点对点接口电路1778和1788经由点对点(PtP)接口1750交换数据。处理器1770和1780可以均使用点对点接口电路1776、1786、1794和1798经由单独点对点接口1752和1754与输入/输出(I/O)子系统1790交换数据。I/O子系统1790也可以使用可以是PtP接口电路的接口电路1792经由高性能图形接口1739与高性能图形电路1738交换数据。在一个实施例中,高性能图形电路1738是专用处理器(例如,比如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等)。I/O子系统1790还可与显示器1733进行通信,以用于显示人类用户可浏览的数据。在替选实施例中,图17所示的任何或所有PtP链路可以实现为多点总线而非PtP链路。
I/O子系统1790可以经由接口电路1796与总线1710进行通信。总线1710可以具有通过它进行通信的一个或多个设备(例如,总线桥1718、I/O设备1714和一个或更多其他处理器1715)。经由总线1720,总线桥1718可以与其他设备(例如,用户接口1722(例如,键盘、鼠标、触摸屏或其他输入设备)、通信设备1726(例如,调制解调器、网络接口设备或可以通过计算机网络1760进行通信的其他类型的通信设备)、音频I/O设备1724和/或存储单元1728)进行通信。存储单元1728可以存储可以由处理器1770和/或1780执行的数据和代码1730。在替选实施例中,可以用一个或多个PtP链路实现总线架构的任何部分。
程序代码(例如,代码1730)可以应用于输入指令,以执行本文描述的功能并生成输出信息。输出信息可以通过已知方式应用于一个或多个输出设备。出于本申请的目的,处理系统可以是计算系统1700的部分,并且包括具有处理器(例如,比如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器)的任何系统。
可以通过高级过程或面向对象的编程语言实现程序代码(例如,1730),以与处理系统进行通信。如果需要,则也可以通过汇编语言或机器语言实现程序代码。事实上,本文描述的机制在范围方面不限于任何特定编程语言。在任何情况下,语言可以是编译型或解释型语言。
在一些情况下,指令转换器可以用以将指令从源指令集转换为目标指令集。例如,指令转换器可以将指令转译(例如,使用静态二进制转译、动态二进制转译(包括动态编译))、变体、仿真或以其他方式转换为待由内核处理的一个或多个其他指令。指令转换器可以实现于软件、硬件、固件或其组合中。指令转换器可以处于处理器上、处理器外、或部分在处理器上且部分在处理器外。
图18是根据本公开的实施例的对比使用软件指令转换器以将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在所示实施例中,指令转换器是软件指令转换器,但是可选地,指令转换器可以实现于软件、固件、硬件或其各种组合中。图18示出可以使用x86编译器1804编译高级语言1802中的程序,以生成可以由带有至少一个x86指令集内核1816的处理器原生地执行的x86二进制代码1806。带有至少一个x86指令集内核的处理器1816表示可以通过以下操作执行与英特尔处理器实质上相同的结果的任何处理器:兼容地执行或以其他方式处理(1)英特尔x86指令集内核的指令集的实质部分、或(2)目标在于在带有至少一个x86指令集内核的英特尔处理器上运行的的目标代码版本,以实现与带有至少一个x86指令集内核的英特尔处理器实质上相同的结果。x86编译器1804表示可操作为生成可以在具有或没有附加链接处理的情况下在带有至少一个x86指令集内核1816的处理器上执行的x86二进制代码1806(例如,目标代码)的编译器。相似地,图18示出可以使用替代指令集编译器1808编译高级语言1802中的程序,以生成可以由没有至少一个x86指令集内核1814的处理器(例如,具有执行加利福尼亚州桑尼维尔MIPS Technologies的MIPS指令集和/或执行加利福尼亚州桑尼维尔ARM Holdings的ARM指令集的内核的处理器)原生地执行的替代指令集二进制代码1810。指令转换器1812用以将x86二进制代码1806转换为可以由没有x86指令集内核1814处理器原生地执行的代码。该转换后的代码不太可能与替代指令集二进制代码1810相同,因为有此能力的指令转换器是难以制造的;然而,转换后的代码将完成普通操作,并由来自替代指令集的指令组成。因此,指令转换器1812表示通过仿真、仿拟或任何其他过程允许没有x86指令集处理器或内核的处理器或其他电子设备执行x86二进制代码1806的软件、固件、硬件或其组合。
可以通过当由机器读取时使机器制造逻辑以执行本文描述的技术中的一个或多个的表示处理器内的各种逻辑的机器可读介质上存储的代表性指令实现至少一个实施例的一个或多个方面。称为“IP内核”的这些表示法可以存储在有形机器可读介质上,并提供给各种客户或制造设施,以加载到实际制作逻辑或处理器的制造机器中。
这些机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的非瞬时、有形布置,包括存储介质(例如,硬盘、任何其他类型的盘(包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)和磁光盘)、半导体器件(例如,只读存储器(ROM)、随机存取存储器(RAM),例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光卡)或适合于存储电子指令的任何其他类型的介质)。
因此,本公开的实施例还包括包含指令或包含设计数据(例如,定义本文描述的结构、电路、装置、处理器和/或系统特征的硬件描述语言(HDL))的非瞬时有形机器可读介质。这些实施例也可以称为程序产品。
图17中描绘的计算系统是可以利用以实现本文讨论的各种实施例的计算系统的实施例的示意性说明。应理解,可以在片上系统(SoC)架构中或在能够实现本文提供的示例和实现方式的功能和特征的任何其他合适的配置中组合图17中描绘的系统的各种组件。
虽然已经鉴于特定实现方式和通常关联的方法描述本公开,但是这些实现方式和方法的更改和排列对于本领域技术人员将是显而易见的。例如,本文描述的动作可以通过与所描述的顺序不同的顺序得以执行,并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或依次顺序以实现期望的结果。在特定实现方式中,多任务化和并行处理可以是有利的。其他变型处于所附权利要求的范围内。
本文提出的架构仅通过示例的方式得以提供,并且旨在成为非排他性且非限定性的。此外,所公开的各个部分旨在仅作为逻辑划分,而不一定表示物理上分离的硬件和/或软件组件。特定计算系统可以在单个物理存储设备中提供存储元件,而在其他情况下,存储元件可以在功能上分布在许多物理设备上。在虚拟机管理器或管理程序的情况下,可以通过在虚拟化层上运行的软件或固件的形式提供功能的全部或部分,以提供所公开的逻辑功能。
注意,在本文提供的示例的情况下,可以鉴于单个计算系统描述交互。然而,仅为了清楚性和示例的目的,已经进行该操作。在特定情况下,通过仅引用单个计算系统描述给定的流程集合的功能中的一个或多个可能是更容易的。此外,用于深度学习和恶意软件检测的系统是易于扩展的,并且可以实现得跨越大数量的组件(例如,多个计算系统)以及更复杂/精密的布置和配置。因此,所提供的示例不应限制潜在地应用于无数其他架构的计算系统的范围或禁止广泛教导。
如本文所使用的那样,除非明确地声明为相反,否则短语“……中的至少一个”的使用指代所命名的项、要素、条件或活动的任何组合。例如,“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要素。
说明书中对“一个方面”、“一方面”“示例性方面”等的引用表示所描述的方面可以包括特定特征、结构或特性,但每个方面可以不一定包括特定特征、结构或特性。此外,这些短语不一定指代同一方面。
虽然本说明书包含许多具体实现方式细节,但是它们不应解释为对任何实施例的范围或可能要求保护的内容的范围的限制,而是特定于特定实施例的特征的描述。本说明书中在分离的实施例的上下文中描述的特定特征也可以通过组合实现于单个实施例中。相反,在单个实施例的上下文中描述的各种特征也可以分离地或以任何合适的子组合实现于多个实施例中。此外,虽然特征可以在以上描述为以特定组合起作用,并且甚至最初要求保护如是,但是在一些情况下可以从组合中删除来自要求保护的组合的一个或多个特征,并且所要求保护的组合可以直指子组合或子组合的变型。
相似地,上述实施例中的各种系统组件和模块的分离不应理解为在所有实施例中要求这种分离。应理解,所描述的程序组件、模块和系统通常可以一起集成在单个软件产品中或封装到多个软件产品中。
因此,已经描述主题的特定实施例。其他实施例处于本公开的范围内。本领域技术人员可以确定许多其他改变、替换、变化、变更和修改,并且本公开旨在涵盖落入所附权利要求的范围内的所有这些改变、替换、变化、变更和修改。
示例
示例C1涉及:一种或多种非瞬时计算机可读介质,其包括指令,所述指令所述设备在由所述电子设备的一个或多个处理器执行所述指令时:从主机节点跨越网络获得关于所述主机节点和远程节点的设备能力信息,所述设备能力信息指示所述节点是否可以执行基于指针的密码式操作;指引所述主机节点上执行的应用以分配所述远程节点的存储器地址;至少部分地基于所述设备能力信息,选择所述主机节点或所述远程节点之一以对所述应用的应用数据进行加密;以及将所选择的节点配置为基于密钥和指向所述远程节点的所述存储器地址的指针对所述应用数据进行加密。
示例C2包括:如示例C1所述的主题,其中,所述指令用于实现动态负载平衡策略,以选择所述主机节点和所述远程节点之一。
示例C3包括:如示例C1或C2所述的主题,其中,关于每个节点的所述设备能力信息包括关于所述节点的基础设施处理单元(IPU)的能力信息。
示例C4包括:如示例C3所述的主题,其中,所述指令用于将所选择的节点的所述IPU配置为对所述应用数据进行加密。
示例C5包括:如任何先前示例C所述的主题,其中,所述指令用于经由存储器映射式输入/输出(MMIO)命令配置所选择的节点。
示例C6包括:如任何先前示例C所述的主题,其中,所述指令用于指引所述应用以分配所述远程节点的所述存储器地址以用于内核数据。
示例C7包括:如任何先前示例C所述的主题,其中,所述指令用于指引所述应用以分配所述远程节点的所述存储器地址以用于内核数据。
示例M1包括:一种方法,包括:从主机节点跨越网络获得关于所述主机节点和远程节点的设备能力信息,所述设备能力信息指示所述节点是否可以执行基于指针的密码式操作;指引所述主机节点上执行的应用以分配所述远程节点的存储器地址;至少部分地基于所述设备能力信息,选择所述主机节点或所述远程节点之一以对所述应用的应用数据进行加密;以及将所选择的节点配置为基于密钥和指向所述远程节点的所述存储器地址的指针对所述应用数据进行加密。
示例M2包括:如示例M1所述的主题,其中,所述选择进一步基于所述主机节点和所述远程节点的处理工作负载、所述主机节点和所述远程节点中的处理器的类型和所述远程节点的地理位置中的一个或多个。
示例M3包括:如示例M1或M2所述的主题,其中,指引所述应用以分配所述远程节点的所述存储器地址以用于内核数据。
示例M4包括:如任何先前示例M所述的主题,其中,指引所述应用以分配所述远程节点的所述存储器地址以用于输入/输出(IO)设备数据或代码。
示例M5包括:如任何先前示例M所述的主题,其中,选择所述主机节点,并且所述方法还包括:在所述主机节点处对所述应用数据进行加密,并且将所加密的应用数据发送到所述远程节点,以用于所分配的存储器地址处的存储。
示例M6包括:如示例M5所述的主题,其中,所述加密由所述主机节点的基础设施处理单元(IPU)执行,所述IPU包括处理器和网络接口。
示例M7包括:如任何先前示例M所述的主题,其中,选择所述远程节点,并且所述方法还包括:将所述应用数据发送到所述远程节点,并且在所述远程节点处对所述应用数据进行加密。
示例M8包括:如示例M7所述的主题,其中,所述加密由所述远程节点的基础设施处理单元(IPU)执行,所述IPU包括处理器和网络接口。
示例L1涉及:一种装置,其包括用于执行如示例M1-M8中任一项所述的方法的一个或多个要素的部件。
示例L2涉及:一种或多种非瞬时计算机可读介质,其包括指令,所述指令使电子设备在由所述电子设备的一个或多个处理器执行所述指令时执行如示例M1-M8中任一项所述的方法的一个或多个要素。
示例L3涉及:机器可读存储,其包括机器可读指令,所述机器可读指令当执行时实现如M1-M8中任一项所述的方法。
示例L4涉及:一种装置,其包括:一个或多个处理器;和一个或多个计算机可读介质,其包括指令,所述指令当由所述一个或多个处理器执行时使所述一个或多个处理器执行如示例M1-M8中任一项所述的方法。
示例S1包括:一种系统,包括:处理器,其用于分配指向处理器上执行的应用的存储器地址,存储器的所述存储器地址跨越网络;加密引擎,其包括用于以下操作的电路:获得应用数据和所述存储器地址;以及基于密钥和指向所述存储器地址的指针对所述应用数据进行加密;和网络接口电路,其用于跨越网络提供所述处理器与所述存储器之间的通信。
示例S2包括:如示例S1所述的主题,其中,所述网络接口电路用于经由基于远程直接存储器存取(RDMA)的协议跨越所述网络提供所述处理器与所述存储器之间的通信。
示例S3包括:如示例S1所述的主题,其中,所述系统包括片上系统(SoC),其包括所述处理器和所述加密引擎。
示例S4包括:如示例S1所述的主题,其中,所述系统包括片上系统(SoC),其包括所述处理器和耦合到所述SoC的基础设施处理单元(IPU),所述IPU包括所述加密引擎和所述网络接口电路。
示例S5包括:如示例S1所述的主题,其中,所述系统包括第一片上系统(SoC),其包括所述处理器和耦合到所述存储器的第二SoC,所述第二SoC包括所述加密引擎。
Claims (25)
1.一种片上系统(SoC),包括:
一个或多个处理器;和
软件栈,其包括用于以下操作的指令:
从主机节点跨越网络获得关于所述主机节点和远程节点的设备能力信息,所述设备能力信息指示所述节点是否可以执行基于指针的密码式操作;
指引所述主机节点上执行的应用以分配所述远程节点的存储器地址;
至少部分地基于所述设备能力信息,选择所述主机节点或所述远程节点之一以对所述应用的应用数据进行加密;以及
将所选择的节点配置为基于密钥和指向所述远程节点的所述存储器地址的指针对所述应用数据进行加密。
2.如权利要求1所述的SoC,其中,所述软件栈指令用于实现动态负载平衡策略,以选择所述主机节点和所述远程节点之一。
3.如权利要求1或2所述的SoC,其中,关于每个节点的所述设备能力信息包括关于所述节点的基础设施处理单元(IPU)的能力信息。
4.如权利要求3所述的SoC,其中,所述软件栈指令用于将所选择的节点的所述IPU配置为对所述应用数据进行加密。
5.如权利要求1-4中任一项所述的SoC,其中,所述软件栈指令用于经由存储器映射式输入/输出(MMIO)命令配置所选择的节点。
6.如权利要求1-5中任一项所述的SoC,其中,所述软件栈指令用于指引所述应用以分配所述远程节点的所述存储器地址以用于内核数据。
7.如权利要求1-6中任一项所述的SoC,其中,所述软件栈指令用于指引所述应用分配所述远程节点的存储器地址以用于输入/输出(IO)设备数据或代码。
8.一种装置,包括用于以下操作的部件:
从主机节点跨越网络获得关于所述主机节点和远程节点的设备能力信息,所述设备能力信息指示所述节点是否可以执行基于指针的密码式操作;
指引所述主机节点上执行的应用以分配所述远程节点的存储器地址;
至少部分地基于所述设备能力信息,选择所述主机节点或所述远程节点之一以对所述应用的应用数据进行加密;以及
将所选择的节点配置为基于密钥和指向所述远程节点的所述存储器地址的指针对所述应用数据进行加密。
9.如权利要求8所述的装置,其中,所述部件用于实现动态负载平衡策略,以选择所述主机节点和所述远程节点之一。
10.如权利要求8所述的装置,其中,关于每个节点的所述设备能力信息包括关于所述节点的基础设施处理单元(IPU)的能力信息。
11.如权利要求10所述的装置,其中,所述部件用于将所选择的节点的所述IPU配置为对所述应用数据进行加密。
12.如权利要求8-11中任一项所述的装置,其中,所述部件用于经由存储器映射式输入/输出(MMIO)命令配置所选择的节点。
13.一种方法,包括:
从主机节点跨越网络获得关于所述主机节点和远程节点的设备能力信息,所述设备能力信息指示所述节点是否可以执行基于指针的密码式操作;
指引所述主机节点上执行的应用以分配所述远程节点的存储器地址;
至少部分地基于所述设备能力信息,选择所述主机节点或所述远程节点之一以对所述应用的应用数据进行加密;以及
将所选择的节点配置为基于密钥和指向所述远程节点的所述存储器地址的指针对所述应用数据进行加密。
14.如权利要求8所述的方法,其中,所述选择进一步基于所述主机节点和所述远程节点的处理工作负载、所述主机节点和所述远程节点中的处理器的类型和所述远程节点的地理位置中的一个或多个。
15.如权利要求8所述的方法,其中,指引所述应用以分配所述远程节点的所述存储器地址以用于内核数据。
16.如权利要求8所述的方法,其中,指引所述应用以分配所述远程节点的所述存储器地址以用于输入/输出(IO)设备数据或代码。
17.如权利要求8-11中任一项所述的方法,其中,选择所述主机节点,并且所述方法还包括:在所述主机节点处对所述应用数据进行加密,并且将所加密的应用数据发送到所述远程节点,以用于所分配的存储器地址处的存储。
18.如权利要求12所述的方法,其中,所述加密由所述主机节点的基础设施处理单元(IPU)执行,所述IPU包括处理器和网络接口。
19.如权利要求8-13中任一项所述的方法,其中,选择所述远程节点,并且所述方法还包括:将所述应用数据发送到所述远程节点,并且在所述远程节点处对所述应用数据进行加密。
20.如权利要求14所述的方法,其中,所述加密由所述远程节点的基础设施处理单元(IPU)执行,所述IPU包括处理器和网络接口。
21.一种系统,包括:
处理器,其用于分配指向处理器上执行的应用的存储器地址,存储器的所述存储器地址跨越网络;
加密引擎,其包括用于以下操作的电路:
获得应用数据和所述存储器地址;以及
基于密钥和指向所述存储器地址的指针对所述应用数据进行加密;和
网络接口电路,其用于跨越网络提供所述处理器与所述存储器之间的通信。
22.如权利要求16所述的系统,其中,所述网络接口电路用于经由基于远程直接存储器存取(RDMA)的协议跨越所述网络提供所述处理器与所述存储器之间的通信。
23.如权利要求16所述的系统,其中,所述系统包括片上系统(SoC),其包括所述处理器和所述加密引擎。
24.如权利要求16所述的系统,其中,所述系统包括片上系统(SoC),其包括所述处理器和耦合到所述SoC的基础设施处理单元(IPU),所述IPU包括所述加密引擎和所述网络接口电路。
25.如权利要求16所述的系统,其中,所述系统包括第一片上系统(SoC),其包括所述处理器和耦合到所述存储器的第二SoC,所述第二SoC包括所述加密引擎。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/134,332 | 2020-12-26 | ||
US17/134,332 US11755500B2 (en) | 2020-12-26 | 2020-12-26 | Cryptographic computing with disaggregated memory |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114692131A true CN114692131A (zh) | 2022-07-01 |
Family
ID=75491170
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111360284.1A Pending CN114692131A (zh) | 2020-12-26 | 2021-11-17 | 带有分解式存储器的密码式计算 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11755500B2 (zh) |
EP (1) | EP4020290A1 (zh) |
CN (1) | CN114692131A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116011041A (zh) * | 2022-12-07 | 2023-04-25 | 成都海光集成电路设计有限公司 | 密钥管理方法、数据保护方法、系统、芯片及计算机设备 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11580234B2 (en) | 2019-06-29 | 2023-02-14 | Intel Corporation | Implicit integrity for cryptographic computing |
US11575504B2 (en) | 2019-06-29 | 2023-02-07 | Intel Corporation | Cryptographic computing engine for memory load and store units of a microarchitecture pipeline |
US11722299B1 (en) * | 2020-01-22 | 2023-08-08 | Perspecta Labs Inc. | Spatially-bound cryptographic storage |
JP2021189462A (ja) * | 2020-05-25 | 2021-12-13 | 株式会社日立製作所 | ストレージ装置 |
US11669625B2 (en) | 2020-12-26 | 2023-06-06 | Intel Corporation | Data type based cryptographic computing |
US11580035B2 (en) * | 2020-12-26 | 2023-02-14 | Intel Corporation | Fine-grained stack protection using cryptographic computing |
US20220327052A1 (en) * | 2021-04-12 | 2022-10-13 | Meta Platforms, Inc. | Systems and methods for transforming data in-line with reads and writes to coherent host-managed device memory |
US20220358208A1 (en) * | 2021-05-06 | 2022-11-10 | Meta Platforms, Inc. | Systems and methods for enabling accelerator-based secure execution zones |
US20220358042A1 (en) * | 2021-05-07 | 2022-11-10 | Samsung Electronics Co., Ltd. | Coherent memory system |
US11886372B1 (en) | 2021-07-14 | 2024-01-30 | Cadence Design Systems, Inc. | Systems and methods for packing of transaction layer (TL) packets |
US20230096451A1 (en) * | 2021-09-24 | 2023-03-30 | Intel Corporation | Remote disaggregated infrastructure processing units (ipus) |
US20220100911A1 (en) * | 2021-12-10 | 2022-03-31 | Intel Corporation | Cryptographic computing with legacy peripheral devices |
WO2024011497A1 (en) * | 2022-07-14 | 2024-01-18 | Mellanox Technologies, Ltd. | Fault resilient transaction handling device |
US20240069805A1 (en) * | 2022-08-30 | 2024-02-29 | Micron Technology, Inc. | Access request reordering for memory-based communication queues |
US20240069795A1 (en) * | 2022-08-30 | 2024-02-29 | Micron Technology, Inc. | Access request reordering across a multiple-channel interface for memory-based communication queues |
CN117201198B (zh) * | 2023-11-07 | 2024-01-26 | 北京数盾信息科技有限公司 | 一种基于分布式的高速加密计算方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9185088B1 (en) * | 2013-02-19 | 2015-11-10 | Amazon Technologies, Inc. | Secure and efficient communication through an intermediary |
US9436847B2 (en) | 2014-09-26 | 2016-09-06 | Intel Corporation | Cryptographic pointer address encoding |
US9948620B2 (en) * | 2015-12-15 | 2018-04-17 | International Business Machines Corporation | Management of encryption within processing elements |
US11042657B2 (en) | 2017-09-30 | 2021-06-22 | Intel Corporation | Techniques to provide client-side security for storage of data in a network environment |
US11580234B2 (en) * | 2019-06-29 | 2023-02-14 | Intel Corporation | Implicit integrity for cryptographic computing |
US20200145187A1 (en) | 2019-12-20 | 2020-05-07 | Intel Corporation | Bit-length parameterizable cipher |
-
2020
- 2020-12-26 US US17/134,332 patent/US11755500B2/en active Active
-
2021
- 2021-09-16 EP EP21197174.2A patent/EP4020290A1/en active Pending
- 2021-11-17 CN CN202111360284.1A patent/CN114692131A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116011041A (zh) * | 2022-12-07 | 2023-04-25 | 成都海光集成电路设计有限公司 | 密钥管理方法、数据保护方法、系统、芯片及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
US11755500B2 (en) | 2023-09-12 |
US20210117340A1 (en) | 2021-04-22 |
EP4020290A1 (en) | 2022-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755500B2 (en) | Cryptographic computing with disaggregated memory | |
US12019562B2 (en) | Cryptographic computing including enhanced cryptographic addresses | |
EP3757856B1 (en) | Cryptographic isolation of memory compartments in a computing environment | |
EP3757858A1 (en) | Memory write for ownership access in a core | |
EP4020298A1 (en) | Encoded pointer based data encryption | |
US10877806B2 (en) | Method and apparatus for securely binding a first processor to a second processor | |
CN112149151A (zh) | 用于微架构流水线的存储器加载单元和存储单元的加密计算引擎 | |
US20220100911A1 (en) | Cryptographic computing with legacy peripheral devices | |
US10270598B2 (en) | Secure elliptic curve cryptography instructions | |
US20220121447A1 (en) | Hardening cpu predictors with cryptographic computing context information | |
WO2017052811A2 (en) | Secure modular exponentiation processors, methods, systems, and instructions | |
EP4020299A1 (en) | Memory address bus protection for increased resilience against hardware replay attacks and memory access pattern leakage | |
CN115525387A (zh) | 用于支持加密远程直接存储器访问(erdma)以供进行虚拟机实时迁移的电路和方法 | |
WO2023107212A1 (en) | Cryptographic computing with context information for transient side channel security | |
US20240104027A1 (en) | Temporal information leakage protection mechanism for cryptographic computing | |
EP4020273A1 (en) | Cache line slot level encryption based on context information | |
US12032486B2 (en) | Transient side-channel aware architecture for cryptographic computing |
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 |