CN117940910A - 选择性高速缓存行存储器加密 - Google Patents
选择性高速缓存行存储器加密 Download PDFInfo
- Publication number
- CN117940910A CN117940910A CN202280062559.XA CN202280062559A CN117940910A CN 117940910 A CN117940910 A CN 117940910A CN 202280062559 A CN202280062559 A CN 202280062559A CN 117940910 A CN117940910 A CN 117940910A
- Authority
- CN
- China
- Prior art keywords
- data
- cache line
- cache
- memory
- encryption
- 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 description 246
- 238000000034 method Methods 0.000 claims description 63
- 230000004044 response Effects 0.000 claims description 23
- 238000004891 communication Methods 0.000 description 29
- 239000004744 fabric Substances 0.000 description 20
- 238000012545 processing Methods 0.000 description 19
- 238000013461 design Methods 0.000 description 11
- 239000000872 buffer Substances 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 239000000758 substrate Substances 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 239000002131 composite material Substances 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 230000020169 heat generation Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 235000013599 spices Nutrition 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000002087 whitening effect Effects 0.000 description 1
Classifications
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- 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/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种高速缓冲存储器可维护多个高速缓存行且每一高速缓存行可包含数据字段、加密状态属性及加密密钥属性。所述加密状态属性可指示所述对应高速缓存行中的所述数据字段包含加密数据还是未加密数据且所述加密密钥属性可包含所述对应高速缓存行的加密密钥标识符。在实例中,密码控制器可从密钥表存取密钥以选择性地加密或未加密高速缓存数据。不经常存取的高速缓存数据可作为加密数据进行维护,且更频繁存取的高速缓存数据可作为未加密数据进行维护。在一些实例中,同一高速缓冲存储器中的不同高速缓存行可作为加密或未加密数据进行维护,且不同高速缓存行可使用相应不同加密密钥。
Description
优先权申请
本申请主张2021年8月18日申请的序列号63/234,335的美国临时申请的优先权权利,所述申请的全部内容以引用的方式并入本文中。
政府权利
本发明在美国政府的支持下根据太平洋西北国家实验室授予的第DE-AC05-76RL01830号协议进行。美国政府对本发明拥有一定权利。
背景技术
例如冯·诺依曼(Von Neumann)架构的各种计算机架构通常使用用于数据的共享存储器、用于存取共享存储器的总线、算术单元及程序控制单元。然而,在处理器与存储器之间移动数据可能需要大量时间及能量,这又会约束计算机系统的性能及容量。鉴于这些限制,期望新计算架构及装置来提高计算性能使其超越晶体管微缩的实践(即,摩尔定律)。
包含或使用集成处理器核心的一些架构包含嵌入式存储器,例如可包含一或多个高速缓冲存储器。在一些实例中,高速缓存可在处理器核心之间共享,且外围设备与存储器控制装置介接。
附图说明
为了容易地识别任何特定元件或动作的论述,参考元件符号中的最高有效数字或前几个最高有效数字是指其中首先介绍所述元件的图号。
图1大体上说明根据实施例的存储器计算系统的背景下的第一存储器计算装置的第一实例。
图2大体上说明根据实施例的存储器计算装置的存储器子系统部分的实例。
图3大体上说明高速缓冲存储器的高速缓存行结构的实例。
图4大体上说明密码存储器系统的实例。
图5大体上说明高速缓存数据读取实例的实例。
图6大体上说明高速缓存数据写入实例的实例。
图7大体上说明高速缓存定时器方法的实例。
图8大体上说明高速缓存存取计数器方法的实例。
图9大体上说明高速缓存加密策略方法的实例。
图10A大体上说明根据实施例的小芯片系统的实例。
图10B大体上说明展示来自图10A的实例的小芯片系统中的各个组件的框图。
图11说明本文中所论述的技术(例如,方法论)中的任何一或多者可用其实施、在其中实施或由其实施的实例机器的框图。
具体实施方式
可利用材料、装置及集成技术中的最新进展来提供以存储器为中心的计算拓扑。举例来说,针对受大小、重量或功率要求约束的应用,此类拓扑可实现计算效率及工作负载处理量的提高。拓扑可用于促进存储器或其它数据存储元件附近或内部的低延时计算。方法可特别适于具有稀疏查找的各种计算密集型操作,例如在变换计算(例如,快速傅里叶变换计算(FFT))中或在例如神经网络或人工智能(AI)、金融分析或模拟或建模(例如针对计算流体动力学(CFD)、工程师用增强型声学模拟器(EASE)、模拟集成电路重点项目(SPICE)及其它)等的应用中。
本文中所论述的系统、装置及方法可包含或使用具有处理器或处理能力的存储器计算系统,所述处理器或处理能力提供于存储器或数据存储组件中、附近或与所述存储器或数据存储组件集成。此类系统在本文中通常称为近存储器计算(CNM)系统。CNM系统可为基于节点的系统,其中系统中的个别节点使用系统缩放组构耦合。每一节点可包含或使用具有用以促进密集操作的自定义计算组构的专用或通用处理器及用户可存取加速器。
在实例中,CNM系统中的每一节点可具有一或若干主机处理器。在每一节点内,专用混合线程处理器可占用芯片上网络的离散端点。混合线程处理器可存取系统的特定节点中的一些或所有存储器,或混合线程处理器可跨多个节点的网络经由系统缩放组构存取存储器。自定义计算组构或混合线程组构(HTF)在每一节点处可具有其自身处理器或加速器或存储器且可以比混合线程处理器更高的带宽操作。近存储器计算系统中的不同节点可不同地配置,例如具有不同计算能力、不同类型的存储器、不同接口、不同安全或加密功能或要求,或其它差异。在实例中,节点可经共同耦合以共享定义地址空间内的数据及计算资源。
近存储器计算系统,或近存储器计算系统的节点或片块可包含或使用各种存储器装置、控制器及互连件以及其它事物。在实例中,系统可包括各种互连节点,且节点或节点群组可使用小芯片实施。小芯片是一种用于集成各种处理功能性的新兴技术。通常,小芯片系统由集成于中介层上且封装在一起的离散芯片(例如,不同衬底或裸片上的集成电路(IC))组成。此布置不同于在一个衬底(例如,单个裸片)上含有相异装置块(例如,知识产权(IP)块)的单个芯片(例如,IC),例如片上系统(SoC)或集成于板上的离散封装装置。一般来说,小芯片提供优于单裸片芯片的生产效益,其包含更高的良率或降低的开发成本。下文所论述的图10A及图10B大体上说明例如可包括近存储器计算系统、存储器控制器、存储器子系统或存储器系统的其它组件或附属于存储器系统的其它组件的小芯片系统的实例。
例如包含近存储器计算系统的系统可使用数据加密或存储器加密来有助于保护信息免受不必要的使用或监视。加密可有助于避免由不允许获得对物理(例如,非易失性)存储器装置或具有共享存储器的系统或虚拟机的存取的其它系统或参与者进行数据监视。在一些情况中,可使用不同加密密钥来增强安全性,例如用于相应不同数据区或用于不同虚拟机的不同密钥。
以加密形式维护数据可能引入延时或降低性能,因为通常加密数据在用于处理之前经解密或未加密。本发明者已认识到,除其它事项外,首先要解决的问题可因此包含平衡数据安全性与性能的竞争利益。
发明者已进一步认识到,存储器内或近存储器或其它计算系统通常可使用呈未加密形式的数据(本文中有时称为“明文”)来进行处理。此类处理系统可包含用于临时存储频繁使用的数据的缓冲器或高速缓存。然而,由于加密及解密操作可能很耗时且增加处理延时,因此将高速缓存数据存储为未加密数据或明文以促进低延时操作是优选的。然而,存储为明文的数据可降低数据的安全性。在实例中,对这些及其它问题的解决方案可包含或使用允许加密一些高速缓存数据、所有高速缓存数据或不加密高速缓存数据的灵活存储器加密及解密系统。所述解决方案可进一步包含手动或自动控制哪些高速缓存数据被存储为加密数据且哪些高速缓存数据被存储为未加密数据。在实例中,选择性存储器加密系统及方法可应用或用于各种处理器高速缓存中,包含用于CPU、GPU、FPGA或其它加速器或装置。
图1大体上说明近存储器计算系统或CNM系统102的第一实例。CNM系统102的实例包含多个不同存储器计算节点,例如可各自包含各种近存储器计算装置。系统中的每一节点可在其自身操作系统(OS)域(例如,Linux以及其它)中操作。在实例中,节点可共同存在于CNM系统102的共同OS域中。
图1的实例包含CNM系统102的第一存储器计算节点104的实例。CNM系统102可具有使用缩放组构106耦合的多个节点,例如包含第一存储器计算节点104的不同例子。在实例中,CNM系统102的架构可支持使用缩放组构106对高达n个不同存储器计算节点(例如,n=4096)进行缩放。如下文进一步论述,CNM系统102中的每一节点可为多个装置的组合件。
CNM系统102可包含用于系统中的各个节点的全局控制器,或系统中的特定存储器计算节点可任选地用作同一系统中的一个或多个其它存储器计算节点的主机或控制器。因此,CNM系统102中的各个节点可类似或不同地配置。
在实例中,CNM系统102中的每一节点可包括使用指定操作系统的主机系统。操作系统可在CNM系统102中的各个节点之间是共同或不同的。在图1的实例中,第一存储器计算节点104包括主机系统108、第一交换机110及第一存储器计算装置112。主机系统108可包括处理器,例如可包含X86、ARM、RISC-V或其它类型的处理器。第一交换机110可经配置以例如使用本文中通常称为芯片到芯片协议接口(CTCPI)的专用或其它通信协议促进第一存储器计算节点104或CNM系统102的装置之间或当中的通信。即,CTCPI可包含CNM系统102独有的专用接口,或可包含或使用例如计算快速链路(CXL)接口、外围组件互连高速(PCIe)接口或小芯片协议接口(CPI)等的其它接口。第一交换机110可包含经配置以使用CTCPI的交换机。举例来说,第一交换机110可包含CXL交换机、PCIe交换机、CPI交换机或其它类型的交换机。在实例中,第一交换机110可经配置以耦合以不同方式配置的端点。举例来说,第一交换机110可经配置以例如在PCIe与CPI格式以及其它之间转换分组格式。
CNM系统102在本文中以各种实例配置描述,例如包括节点的系统,且每一节点可包括各种芯片(例如,处理器、交换机、存储器装置等)。在实例中,CNM系统102中的第一存储器计算节点104可包含使用小芯片实施的各种芯片。在下文所论述的CNM系统102的基于小芯片的配置中,小芯片间通信以及系统内的额外通信可使用CPI网络。本文中所描述的CPI网络是CTCPI的实例,即,作为CTCPI的小芯片特定实施方案。因此,CPI的下述结构、操作及功能性可同样适用于原本可使用非基于小芯片的CTCPI实施方案实施的结构、操作及功能。除非另外明确指示,否则本文中对CPI的任何论述同样适用于CTCPI。
CPI接口包含支持虚拟通道以实现小芯片之间的灵活且高速交互的基于分组的网络,例如可包括第一存储器计算节点104或CNM系统102的部分。CPI可实现从小芯片内网络桥接到更广泛小芯片网络。举例来说,高级可扩展接口(AXI)是一种用于芯片内通信的规范。然而,AXI规范涵盖各种物理设计选项,例如物理通道数、信号时序、功率等。在单个芯片内,这些选项通常经选择以满足设计目标,例如功耗、速度等。然而,为了实现基于小芯片的存储器计算系统的灵活性,例如使用CPI的适配器可在可实施于各个小芯片中的各个AXI设计选项之间进行介接。通过实现物理通道到虚拟通道映射及用分组协议封装基于时间的信令,CPI可用于桥接小芯片内网络,例如在特定存储器计算节点内、跨更广泛小芯片网络,例如跨第一存储器计算节点104或跨CNM系统102。
CNM系统102可缩放以包含多节点配置。即,第一存储器计算节点104或其它以不同方式配置的存储器计算节点的多个不同例子可使用缩放组构106耦合以提供缩放系统。存储器计算节点中的每一者可运行其自身操作系统且可经配置以共同协调全系统资源使用。
在图1的实例中,第一存储器计算节点104的第一交换机110耦合到缩放组构106。缩放组构106可提供可促进不同存储器计算节点当中及之间的通信的交换机(例如,CTCPI交换机、PCIe交换机、CPI交换机或其它交换机)。在实例中,缩放组构106可有助于各个节点在分区全局地址空间(PGAS)中通信。
在实例中,来自第一存储器计算节点104的第一交换机110耦合到一个或多个不同存储器计算装置,例如包含第一存储器计算装置112。第一存储器计算装置112可包括本文中称为近存储器计算(CNM)小芯片的基于小芯片的架构。第一存储器计算装置112的封装版本可包含举例来说一个或多个CNM小芯片。小芯片可使用CTCPI通信耦合以实现高带宽及低延时。
在图1的实例中,第一存储器计算装置112可包含片上网络(NOC)或第一NOC 118。通常,NOC是装置内的连接一组特定端点的互连网络。在图1中,第一NOC 118可在第一存储器计算装置112的各种存储器、计算资源及端口之间提供通信及连接性。
在实例中,第一NOC 118可包括折叠Clos拓扑,例如在存储器计算装置的每一例子内或作为耦合节点中的多个存储器计算装置的网格。Clos拓扑(例如可使用多个较小基数交叉开关提供与较高基数交叉开关拓扑相关联的功能性)提供各种益处。举例来说,Clos拓扑可跨NOC展现一致延时及对分带宽。
第一NOC 118可包含各种相异交换机类型,包含中心交换机、边缘交换机及端点交换机。交换机中的每一者可经构造为在输入节点与输出节点之间提供基本上均匀延时及带宽的交叉开关。在实例中,端点交换机及边缘交换机可包含两个单独交叉开关:一个用于前往中心交换机的业务,而另一个用于离开中心交换机的业务。中心交换机可经构造为将所有输入切换到所有输出的单个交叉开关。
在实例中,中心交换机可各自具有多个端口(例如,各自四个或六个端口),这例如取决于特定中心交换机是否参与芯片间通信。参与芯片间通信的中心交换机数目可由芯片间带宽要求设置。
第一NOC 118可支持计算元件与存储器之间的各种有效负载(例如,从8到64字节有效负载;可类似地使用其它有效负载大小)。在实例中,第一NOC 118可经优化用于相对较小有效负载(例如,8到16个字节)以高效处置对稀疏数据结构的存取。
在实例中,第一NOC 118可经由第一物理层接口114、PCIe从属模块116或端点及PCIe主模块126或根端口耦合到外部主机。即,第一物理层接口114可包含允许外部主机处理器耦合到第一存储器计算装置112的接口。外部主机处理器可例如使用PCIe交换机或其它本机协议交换机任选地耦合到一个或多个不同存储器计算装置。通过基于PCIe的交换机与外部主机处理器通信可将装置到装置通信限于由交换机支持的通信。相比之下,例如使用CTCPI通过存储器计算装置本机协议交换机的通信可允许不同存储器计算装置之间或当中的更完全通信,其包含支持分区全局地址空间,例如用于创建工作线程及发送事件。
在实例中,CTCPI协议可由第一存储器计算装置112中的第一NOC 118使用,且第一交换机110可包含CTCPI交换机。CTCPI交换机可允许CTCPI分组从例如第一存储器计算装置112的源存储器计算装置传送到不同目的地存储器计算装置(例如,在相同或其它节点上),而例如无需转换成另一分组格式。
在实例中,第一存储器计算装置112可包含内部主机处理器122。内部主机处理器122可经配置以举例来说使用内部PCIe主模块126与第一NOC 118或第一存储器计算装置112的其它组件或模块通信,此可有助于消除会消耗时间及能量的物理层。在实例中,内部主机处理器122可基于RISC-V ISA处理器,且可使用第一物理层接口114在第一存储器计算装置112外部例如与第一存储器计算装置112的其它存储装置、联网或其它外围设备通信。内部主机处理器122可控制第一存储器计算装置112且可用作用于操作系统相关功能性的代理。内部主机处理器122可包含相对少量处理核心(例如,2到4个核心)及主机存储器装置124(例如,包括DRAM模块)。
在实例中,内部主机处理器122可包含PCI根端口。当内部主机处理器122在使用中时,其根端口中的一者可经连接到PCIe从属模块116。内部主机处理器122的根端口中的另一者可经连接到第一物理层接口114以例如提供与外部PCI外围设备的通信。当内部主机处理器122被停用时,PCIe从属模块116可耦合到第一物理层接口114以允许外部主机处理器与第一NOC 118通信。在具有多个存储器计算装置的系统的实例中,第一存储器计算装置112可经配置以用作系统主机或控制器。在此实例中,内部主机处理器122可在使用中,且相应其它存储器计算装置中的内部主机处理器的其它例子可被停用。
内部主机处理器122可在第一存储器计算装置112加电时进行配置以例如允许主机初始化。在实例中,内部主机处理器122及其相关联数据路径(例如,包含第一物理层接口114、PCIe从属模块116等)可从输入引脚到第一存储器计算装置112进行配置。引脚中的一或多者可用于启用或停用内部主机处理器122且相应地配置PCI(或其它)数据路径。
在实例中,第一NOC 118可经由缩放组构接口模块136及第二物理层接口138耦合到缩放组构106。缩放组构接口模块136或SIF可促进第一存储器计算装置112与例如分区全局地址空间(PGAS)的装置空间之间的通信。PGAS可经配置使得例如第一存储器计算装置112的特定存储器计算装置可例如使用加载/存储范例存取不同存储器计算装置上(例如,在相同或不同节点上)的存储器或其它资源。可使用各种可缩放组构技术,其包含CTCPI、CPI、Gen-Z、PCI或经由CXL桥接的以太网。缩放组构106可经配置以支持各种分组格式及加密。在实例中,缩放组构106支持无序分组通信或支持有序分组,例如可使用路径标识符跨多个等效路径扩展带宽。缩放组构106通常可支持远程操作,例如远程存储器读取、写入及其它内置原子学、远程存储器原子学、远程存储器计算装置发送事件及远程存储器计算装置调用及返回操作。
在实例中,第一NOC 118可耦合到一个或多个不同存储器模块,例如包含第一存储器装置128。第一存储器装置128可包含各种存储器装置,举例来说,LPDDR5或GDDR6等。在图1的实例中,第一NOC 118可经由可专用于特定存储器模块的存储器控制器130协调与第一存储器装置128的通信。在实例中,存储器控制器130可包含存储器模块高速缓存及原子操作模块。原子操作模块可经配置以提供相对高处理量原子运算符,例如包含整数及浮点运算符。原子操作模块可经配置以将其运算符应用到存储器模块高速缓存(例如,包括SRAM存储器侧高速缓存)内的数据,借此允许使用相同存储器位置在最小处理量降级下进行背靠背原子操作。在实例中,存储器模块高速缓存中的一些或所有数据可以加密形式存储或维护,如本文中进一步论述。
存储器模块高速缓存可提供对频繁存取的存储器位置的存储,而例如不必重新存取第一存储器装置128。在实例中,存储器模块高速缓存可经配置以高速缓存仅用于存储器控制器130的特定例子的数据。在实例中,存储器控制器130包含经配置以介接例如包含DRAM装置的第一存储器装置128的DRAM控制器。存储器控制器130可提供存取调度及位错误管理以及其它功能。在实例中,存储器模块高速缓存可存取与特定存储器控制器130或高速缓存相关联的加密密钥表,或可存取节点或CNM系统102的全局表。
在实例中,第一NOC 118可耦合到混合线程处理器(HTP 140)、混合线程组构(HTF142)及主机接口及分派模块(HIF 120)。HIF 120可经配置以促进对基于主机的命令请求队列及响应队列的存取。在实例中,HIF 120可在HTP 140或HTF 142的处理器或计算元件上分派新的执行线程。在实例中,HIF 120可经配置以跨HTP 140模块及HTF 142模块维持工作量平衡。
混合线程处理器或HTP 140可包含加速器,例如可基于RISC-V指令集。HTP 140可包含高度线程化的事件驱动处理器,其中线程可在单个指令旋转中执行以例如维持高指令处理量。HTP 140包括相对较少的自定义指令以支持低开销线程化能力、事件发送/接收及共享存储器原子运算符。
混合线程组构或HTF 142可包含加速器,例如可包含非冯·诺依曼、粗粒度、可重新配置处理器。HTF 142可经优化用于高级语言操作及数据类型(例如,整数或浮点)。在实例中,HTF 142可支持数据流计算。HTF 142可经配置以使用第一存储器计算装置112上可用的基本上所有存储器带宽,例如当执行受存储器限制的计算内核时。
图2大体上说明根据实施例的存储器计算装置的存储器子系统200的实例。存储器子系统200的实例包含控制器202、可编程原子单元208及第二NOC 206。控制器202可包含或使用可编程原子单元208以使用存储器装置204中的信息实施操作。在实例中,存储器子系统200包括来自图1的实例的第一存储器计算装置112的一部分,例如包含第一NOC 118或存储器控制器130的部分。
在图2的实例中,第二NOC 206耦合到控制器202,且控制器202可包含存储器控制模块210、本地高速缓存模块212、近存储器计算模块214及密钥表216。在实例中,近存储器计算模块214可经配置以处置相对简单、单循环整数原子。近存储器计算模块214可以与举例来说正常存储器读取或写入操作相同的处理量执行原子。在实例中,原子存储器操作可包含将数据存储到存储器、执行原子存储器操作及接着用来自存储器的加载数据作出响应的组合。
本地高速缓存模块212(例如可包含SRAM快速缓存)可经提供以有助于减少重复存取的存储器位置的延时。在实例中,本地高速缓存模块212可为子存储器行存取提供读取缓冲。本地高速缓存模块212可特别有益于具有相对小数据高速缓存或无数据高速缓存的计算元件。在实例中,本地高速缓存模块212包括多个高速缓存行且每一行可包含加密数据(密文)或未加密数据(明文)或可单独寻址加密及未加密数据的组合。下文所论述的图3提供用于本地高速缓存模块212中的数据或行的高速缓存行结构300的实例。
近存储器计算模块214(例如可包含DRAM控制器)可提供低级请求缓冲及调度以例如提供对例如可包含DRAM装置的存储器装置204的高效存取。在实例中,存储器装置204可包含或使用GDDR6 DRAM装置,例如具有16Gb密度及64Gb/秒峰值带宽。可类似地使用其它装置。在实例中,近存储器计算模块214包括密码处理电路系统,所述加密处理电路系统经配置以加密或解密从或向本地高速缓存模块212或向存储器装置204传送的信息。举例来说,近存储器计算214可包括密码存储器系统400的一部分,例如密码控制器404或密码引擎,如下文在图4的实例中进一步论述。
在实例中,可编程原子单元208可包括单循环或多循环运算符,例如可经配置以执行整数加法或例如布隆过滤器插入的更复杂多指令操作。在实例中,可编程原子单元208可经配置以执行加载及存储到存储器操作。可编程原子单元208可经配置以利用具有一组专用指令的RISC-V ISA促进与控制器202交互以原子执行用户定义操作。
可编程原子请求(例如从节点上或节点外主机接收)可经由第二NOC 206及控制器202路由到可编程原子单元208。在实例中,自定义原子操作(例如,由可编程原子单元208实施)可与内置原子操作(例如,由近存储器计算模块214实施)相同,区别仅在于可编程原子操作可由用户而非系统架构师定义或编程。在实例中,可编程原子请求分组可通过第二NOC206发送到控制器202,且控制器202可将请求识别为自定义原子。接着,控制器202可将经识别请求转发到可编程原子单元208。
密钥表216可存储关于加密密钥及对应密钥标识符的信息。在实例中,密钥表216可举例来说在启动时由主机装置填入或编程。
图3大体上说明可包含加密数据或未加密数据的不同块或高速缓存行的高速缓存行结构300的实例。高速缓存行结构300以图形方式说明可包括高速缓存行的部分的若干不同字段;可使用其它或额外字段。
通常,高速缓存可由包含其大小、块或行大小、关联性、写入策略(例如,直写或回写)及替换策略的各种属性来指定。高速缓存地址可由索引及任选地偏移来指定。实例高速缓存行结构300包含促进从高速缓存地址到特定CPU地址的转译的标签字段302(标签)。当CPU或主机尝试存取特定地址且匹配高速缓存行可用时,存取成功且被认为是高速缓存命中。如果匹配高速缓存行不可用,那么存取不成功且被认为是高速缓存未命中。如果存在高速缓存未命中,那么控制器可存取RAM或其它存储器以获得正确数据。
高速缓存行结构300进一步包含数据字段304(数据)。数据字段304的大小可为固定的或可变的,且可经配置以保存各种类型的数据。在一些实例中,数据字段304包括加密数据且在其它实例中,数据字段304包括未加密数据。在一些实例中,数据字段304包括可单独寻址加密及未加密数据的组合。即,数据字段304可包含多个数据存储库,且每一存储库可例如使用相同或不同密钥来单独加密。
高速缓存行结构300进一步包含有效性字段306(V)及修改字段308(D)。有效性字段306可包含指示高速缓存行是被使用(例如,高速缓存行是否包含有效数据)还是未使用的位。修改字段308可包含指示高速缓存行是包含与主存储器中相同的数据还是被修改(有时被称为脏)的位。
在图3的实例中,高速缓存行结构300进一步包含加密状态字段310(E)、存取计数器312(F)及密钥字段314(密钥ID)。在实例中,加密状态字段310可包含经设置以指示在同一高速缓存行中(例如,在数据字段304中)别处的信息是被加密还是未加密的一或多个位。
密钥字段314可包含与特定加密密钥相关联的加密密钥标识符。在实例中,关于密钥及对应密钥标识符的信息可存储在别处,例如存储在来自图2的实例的密钥表216中。密钥字段314可包含用于寻址密钥表216中的相应不同加密密钥的一个或多个信息位。在实例中,密钥字段314可包含对应于数据字段304中的相应不同存储库的多个加密密钥标识符。
可在高速缓存行填充操作期间使用存储在主存储器中的密钥标识符信息或其它元数据来填入密钥字段314中的信息。在实例中,在主存储器中存储密钥标识符可在对应回写操作上或在逐出对应脏高速缓存行时发生。
在另一实例中,密钥标识符可与相应存储器地址相关联,且来自主机装置的读取或写入请求可包含密钥标识符。在此实例中,密钥标识符可在存取存储器之前从对应存储器地址移除或与其分离,且密钥标识符可在稍后高速缓存未命中期间被回写到存储器或从存储器读取以有助于确保选择正确密钥用于加密或解密。
存取计数器312可包含经设置以指示存取高速缓存行的新近度或频率的一或多个位。在一种操作模式中,存取计数器312可为当特定高速缓存行与数据字段304中的明文数据一起经存取、解密及原位存储于高速缓存中时设置为指定初始值(例如,零)的计数器。接着,在每一主机间隔,计数器可递增或递减。举例来说,每当主机间隔包含对特定高速缓存行的存取请求时计数器可递增,或计数器可针对不包含对特定高速缓存行的请求的每一间隔递减。可类似地使用其它关系举例来说针对指定数目的多个间隔中的每一者递减计数器一次。如果计数器达到指示最近未使用高速缓存行的指定阈值条件,那么可加密特定高速缓存行中的数据字段304。
在实例中,作为使用存取计数器312的替代或补充,高速缓存可包括根据存取新近度组织其块的最近最少使用(LRU)高速缓存。如果任何冷(即,最近未存取)或不频繁使用的高速缓存行中的数据未加密,那么可指示此类行进行加密。
图4大体上说明密码存储器系统400的实例,例如可包含或包括存储器子系统200的一部分。密码存储器系统400包含主机接口402、密码控制器404、近存储器计算模块406、密钥表408、高速缓冲存储器410、第一密码引擎412、存储器控制器414且任选地包含第二密码引擎416。在图4的实例中,主机接口402、近存储器计算模块406、密码控制器404、高速缓冲存储器410、第一密码引擎412及存储器控制器414可由例如第二NOC 206的网络耦合。密钥表408可任选地与NOC解耦合且可由密码控制器404安全地存取,或密钥表408可包括密码控制器404的一部分。密码存储器系统400可经配置以有助于使存储在高速缓冲存储器410中的数据的相对较大部分保持被安全地加密,同时保持对频繁请求的高速缓存行的低延时存取。
在实例中,密码控制器404可包括有助于协调来自主机接口402或来自近存储器计算模块406的读取及写入请求的高速缓存控制器。密码控制器404可经配置以监测高速缓冲存储器410中的高速缓存行中的信息,例如加密状态字段310或存取计数器312或其它字段,以确定所请求的高速缓存行包含加密数据还是未加密数据。在实例中,密码控制器404可经配置以协调高速缓冲存储器410的特定高速缓存行中的数据的加密或解密,且可回写明文或密文,例如与和特定高速缓存行相关联的其它属性一起。密码控制器404可进一步协调回写到同一高速缓存行位置,或回写到例如LRU高速缓存中的其它位置。
在另一实例中,密码控制器404可协调高速缓存行填充操作以例如使用存储器控制器414从(例如)主存储器或其它外部存储器填入高速缓冲存储器410。主存储器中的数据可被存储为加密数据或未加密数据。可任选地提供查找表,或可使用存储器内元数据,以指示主存储器中的特定数据的加密状态。
在实例中,密码控制器404经配置以存取密钥表408。密钥表408可包含关于例如可存储在高速缓存行的密钥字段314中的加密密钥标识符与经配置为由第一密码引擎412用于执行加密或解密的密钥之间的对应关系的信息。在实例中,密码控制器404可检索特定高速缓存行的特定密钥且将其与来自同一特定高速缓存行的数据一起传递到第一密码引擎412。
在实例中,第一密码引擎412可为经配置以响应于来自密码控制器404的请求而执行加密或解密的密码电路。在实例中,密码存储器系统400可包含第二密码引擎416以例如经由存储器控制器414帮助促进或优化高速缓冲存储器410与主存储器之间的一些事务。举例来说,第二密码引擎416可包含经配置以加密从高速缓冲存储器410逐出的任何未加密数据的加密电路。在一些实例中,第二密码引擎416可经配置以解密从主存储器接收到高速缓冲存储器410中的数据。
在实例中,第一密码引擎412及第二密码引擎416可并行操作。因此,例如使用第二密码引擎416进行的高速缓存行逐出及对应加密处理可与由第一密码引擎412针对高速缓冲存储器410与主机接口402或近存储器计算模块406之间正在进行的事务进行的数据加密或解密并发执行。具有用以处理传出高速缓存行的专用引擎的此配置可有助于减少系统延时同时保持高数据安全性。
在实例中,密码控制器404、第一密码引擎412或第二密码引擎416可经配置以使用各种加密算法或算法组合进行加密或解密。除其它事项外,加密算法的实例可包含或使用高级加密标准(AES)密钥、散列密钥、白化密钥、李维斯特-沙米尔-阿德尔曼(Rivest-Shamir-Adleman)(RSA)、三重DES、对称或非对称密钥或其它。在一些实例中,可基于参考密钥来产生密钥。参考密钥可本地存储在密码存储器系统400的一部分中或外部存储在(例如)可经由主机接口402存取的主机装置中或可经由NOC存取的别处。
图5、图6、图7及图8大体上说明使用密码存储器系统400或其部分通过将一些高速缓存内容保持为加密数据同时选择性地解密其它内容以供使用来增强数据的安全性的各种实例。通过取决于举例来说线存取速率或使用选择性地解密高速缓存行,系统效率可相较于在使用之前或期间全局加密或解密整个高速缓存的系统得到改进。
图5大体上说明高速缓存数据读取实例500的实例。高速缓存数据读取实例500可包含或使用来自密码存储器系统400的各种组件。在框502处,高速缓存数据读取实例500包含在密码控制器处接收读取请求。举例来说,框502可包含例如经由主机接口402从主机装置接收从高速缓冲存储器410中的特定高速缓存行读取特定数据的请求。在实例中,来自框502的请求可由密码控制器404接收。
在决策框504处,密码控制器404可存取所请求的高速缓存行且确定所述高速缓存行中的所请求数据是否被加密。在实例中,密码控制器404可使用来自高速缓存行中的加密状态字段310的信息来确定数据的加密状态。举例来说,加密状态字段310中的信息可包含高速缓存行中的数据被加密或不被加密的二进制指示。在一些实例中,加密状态字段310中的信息可包含比关于加密的二进制指示更多的信息,且可包含关于高速缓存行中被加密或未被加密的数据的某一部分的信息。
如果在决策框504处,密码控制器404确定所请求数据不被加密,那么高速缓存数据读取实例500可前进到框510。在框510处,可将对应于所请求数据的明文或未加密信息提供到在框502处发出请求的主机,或提供到另一目的地。
如果在决策框504处,密码控制器404确定所请求数据被加密,那么高速缓存数据读取实例500可前进到框506。在框506处,密码控制器404可确定用以搭配所请求的高速缓存行中的数据使用的加密密钥。举例来说,密码控制器404可从高速缓存行的密钥字段314读取密钥标识符且使用所述密钥标识符来查找加密密钥以用于解密来自高速缓存行的与所请求数据相关联的数据。举例来说,密码控制器404可从密钥表408获得加密密钥。
在框508处,高速缓存数据读取实例500可包含将高速缓存数据解密成明文。举例来说,框508可包含使用第一密码引擎412及来自框506的加密密钥来解密包含所请求数据的高速缓存行的数据字段304中的信息。接着,在框510处,第一密码引擎412可将解密数据或明文提供到在框502处发出请求的主机或可将解密数据回写到高速缓冲存储器410。在实例中,框510可包含在同一高速缓存行的数据字段304中从框502处的请求回写明文信息,且可进一步包含更新高速缓存行中的一或多个字段。举例来说,框510可包含改变加密状态字段310中的信息以指示高速缓存行中的数据未加密。
图6大体上说明高速缓存数据写入实例600的实例。高速缓存数据写入实例600可包含或使用来自密码存储器系统400的各种组件。在框602处,高速缓存数据写入实例600包含在密码控制器处接收写入请求。举例来说,框602可包含例如经由主机接口402从主机装置接收将数据写入到高速缓冲存储器410中的特定高速缓存行的请求。在实例中,来自框602的请求可由密码控制器404接收。
在决策框604处,密码控制器404可确定写入请求是否包含被加密或未被加密的数据。如果在决策框604处,密码控制器404确定数据被加密,那么高速缓存数据写入实例600可前进到框610。在框610处,可将对应于所请求数据的密文或加密数据写入到存储器,例如写入到高速缓冲存储器410。
如果在决策框604处,密码控制器404确定所请求数据未被加密,那么高速缓存数据写入实例600可前进到框606。在框606处,密码控制器404可确定用以搭配目的地高速缓存行处的所请求数据使用的加密密钥。举例来说,密码控制器404可从目的地高速缓存行的密钥字段314读取密钥标识符且使用所述密钥标识符来查找用于加密数据的加密密钥。举例来说,密码控制器404可从密钥表408获得加密密钥。
在框608处,高速缓存数据写入实例600可包含将所请求数据加密成密文。举例来说,框608可包含使用第一密码引擎412及来自框606的加密密钥来加密所请求数据。接着,在框610处,第一密码引擎412可将加密数据或密文写入到高速缓冲存储器410中的目的地高速缓存行。在实例中,框610可包含更新加密状态字段310以指示高速缓存行中的数据被加密。
在实例中,框608可包含或使用第二密码引擎416以加密所请求数据。如果使用第二密码引擎416,那么高速缓存数据写入实例600可包含在框610处使用存储器控制器414将加密数据写入到主存储器。加密数据可与其对应密钥标识符一起写入到主存储器以供以后的用户使用。
图7大体上说明用于增强可包含或使用高速缓存定时器方法700的高速缓冲存储器中的高速缓存安全性的实例。在框702处,高速缓存定时器方法700可包含初始化高速缓存安全性定时器。高速缓存安全性定时器可经配置以按各种速率运行且可任选地引用到系统时钟或主机处理器间隔计数器,或引用到另一内部或外部引用。
在框704处,高速缓存定时器方法700可包含针对到期条件监测高速缓存安全性定时器。在高速缓存安全性定时器到期时,密码控制器404可扫描高速缓冲存储器的所有部分或指定部分且识别未加密的任何高速缓存行。举例来说,密码控制器404可在高速缓冲存储器中搜索具有指示数据字段304中的信息未加密的加密状态字段310的任何行。密码控制器404可命令第一密码引擎412加密被识别为包含未加密数据的任何行。在框704之后,对高速缓冲存储器的存取可被视为初始存取请求且任何加密数据可原位解密。
在高速缓存定时器方法700的实例中,高速缓冲存储器中的高速缓存行可任选地省略存取计数器312字段,或可不使用存取计数器312。
图8大体上说明用于增强可包含或使用高速缓存存取计数器方法800的高速缓存安全性的实例。在框802处,高速缓存存取计数器方法800包含初始化每一高速缓存行中的高速缓存存取计数器312字段以包含计数器值。举例来说,框802可包含初始化一个或多个存取计数器312字段以具有例如零的参考值。密码控制器404可任选地经配置以更新或改变高速缓冲存储器410中的每一高速缓存行的存取计数器312字段中的信息。
在框804处,高速缓存存取计数器方法800可包含在对来自特定高速缓存行的数据的每一次请求时,递增存储在特定高速缓存行的存取计数器312中的计数器值。在实例中,框804可进一步包含确定特定高速缓存行包含明文还是密文。如果特定高速缓存行包含密文,那么框804可包含原位解密密文及将明文回写到特定高速缓存行的数据字段304中。解密密文可包含或使用第一密码引擎412。
在框806处,高速缓存存取计数器方法800可包含针对未在主机间隔期间存取的每一高速缓存行递减计数器值。即,针对任何未请求的高速缓存行,其相应存取计数器312字段中的计数器值可由密码控制器404递减或以其它方式更新以指示未使用数据。
在框808处,高速缓存存取计数器方法800可包含选择性地加密具有指示陈旧行的计数器值的任何高速缓存行的高速缓存数据。举例来说,框808可包含使用密码控制器404来确定特定行的计数器值是否满足或超过指定阈值计数器值。举例来说,如果计数器值为零,那么数据可被确定为不经常存取且因此,可被发送以进行加密或重新加密。在实例中,被指定用于加密的数据可使用第一密码引擎412进行加密且在高速缓冲存储器410中原位回写。
在实例中,高速缓存定时器方法700及高速缓存存取计数器方法800可一起使用。举例来说,例如根据高速缓存定时器方法700,存储器控制器级定时器可用于间歇地或周期性地检视所有高速缓存内容并加密高速缓冲存储器410中的任何未加密信息。并发地,或按不同或更频繁间隔,高速缓存存取计数器方法800可用于监测高速缓存行存取且选择性地加密满足指定加密或重新加密准则的任何未加密高速缓存行。
图9大体上说明可包含或使用密码存储器系统400的增强加密策略方法900的实例。加密策略方法900可有助于减少或消除无意中存取未加密高速缓存行的风险。加密策略方法900可包含或使用硬件或软件,其经配置以识别未加密高速缓存行数据并强制重新加密具有不同于关于当前或最近请求的密钥标识符的任何未加密数据。
在框902处,加密策略方法900可包含建立密钥标识符计数器表。表可包含对应于高速缓存中的每一密钥标识符的数字计数器。举例来说,计数器表可包含高速缓冲存储器410中的高速缓存行的密钥字段314中的每一不同密钥标识符的相应计数器。密钥标识符计数器表可任选地存储在密钥表216中或可存储在高速缓冲存储器410中或别处。在实例中,当用未加密数据填充对应高速缓存行时,特定密钥标识符的计数器可被初始化为非零数或值,或当用加密数据填充对应高速缓存行时,计数器可被初始化为零或空值。
在框904处,加密策略方法900可包含接收数据解密请求。举例来说,框904可包含在密码存储器系统400的密码控制器404处接收针对对应于特定密钥标识符的数据的读取请求。尽管包含所请求数据的高速缓存行(或包括高速缓存行的一部分的数据块)具有加密状态,但加密策略方法900可在框906处继续识别密钥标识符计数器表中的任何非零密钥标识符计数器。举例来说,框906可包含识别对应于除了来自框904的特定密钥标识符以外的密钥标识符的计数器值,其为非零的。
在框908处,在框906处识别任何非零计数器之后,加密策略方法900可包含加密与一或若干经识别非零计数器相关联的数据。换句话说,框908可包含加密与除了来自框904的、对应于当前请求的特定密钥标识符以外的任何密钥标识符相关联的数据。在实例中,框908可进一步包含递减对应于加密或重新加密数据的任何密钥标识符的计数器。在框910处,加密策略方法900可继续处理来自框904的数据解密请求,且可进一步包含递增对应于解密数据的特定密钥标识符的计数器。因此,使用加密策略方法900,对应于当前请求且具有单个密钥标识符的高速缓存数据可未加密,而高速缓存中的其它数据保持安全地加密。
图10A及图10B大体上说明可用于实施CNM系统102、存储器子系统200或密码存储器系统400的一或多个方面的小芯片系统的实例。如上文类似地提及,CNM系统102中的节点,或CNM系统102中的节点内的装置,或密码存储器系统400可包含基于小芯片的架构或近存储器计算(CNM)小芯片。经封装存储器计算装置可包含举例来说1个、2个或4个CNM小芯片。小芯片可使用高带宽低延时互连件(例如使用CPI接口)互连。通常,小芯片系统由集成于中介层上且在许多实例中根据需要通过一或多个已建网络互连以向系统提供期望功能性的离散模块(各自一“小芯片”)组成。中介层及所包含小芯片可封装在一起以促进与较大系统的其它组件互连。每一小芯片可包含一或多个个别集成电路(IC)或“芯片”(可能与离散电路组件组合),且可耦合到相应衬底以促进附接到中介层。系统中的大多数或所有小芯片可个别经配置以通过已建网络通信。
将小芯片配置为系统的个别模块不同于将此系统实施于在一个衬底(例如,单个裸片)上含有相异装置块(例如,知识产权(IP)块)的单个芯片上,例如片上系统(SoC)或集成于印刷电路板(PCB)上的多个离散封装装置。一般来说,小芯片提供比离散封装装置更好的性能(例如,更低功耗、减少延时等),且小芯片提供比单裸片芯片更大的生产效益。这些生产效益可包含更高的良率或减少的开发成本及时间。
小芯片系统可包含举例来说一或多个应用(或处理器)小芯片及一或多个支持小芯片。此处,应用与支持小芯片之间的相异性仅为对小芯片系统的可能设计案例引用。因此,举例来说,合成视觉小芯片系统可包含(仅通过实例)产生合成视觉输出的应用小芯片以及支持小芯片,例如存储器控制器小芯片(例如可包括密码存储器系统400)、传感器接口小芯片或通信小芯片。在典型用例中,合成视觉设计者可设计应用小芯片且从其他方获得支持小芯片。因此,设计支出(例如,在时间或复杂性方面)因为避免体现于支持小芯片中的功能性的设计及生产而降低。
小芯片还支持原本可能很难的IP块的紧密集成,例如使用不同处理技术或使用不同特征大小(或利用不同接触技术或间隔)制造的IP块。因此,具有不同物理、电或通信特性的多个IC或IC组合件可以模块化方式组装以向组合件提供各种期望功能性或安全级别。小芯片系统还可促进调适以适应小芯片系统将并入到其中的不同较大系统的需求。在实例中,IC或其它组合件可针对特定功能优化安全性、功率、速度或发热且可比(例如)使用单个裸片更容易地与其它装置集成。另外,通过减小裸片的整体大小,小芯片的良率趋向于高于更复杂的单裸片装置的良率。
图10A及图10B大体上说明根据实施例的小芯片系统的实例。图10A是安装于外围板1004上的小芯片系统1002的表示,外围板1004可通过举例来说外围组件互连高速(PCIe)连接到更大计算机系统。小芯片系统1002包含封装衬底1006、中介层1008及四个小芯片:应用小芯片1010、主机接口小芯片1012、存储器控制器小芯片1014及存储器装置小芯片1016。其它系统可包含许多额外小芯片以提供将从以下论述明白的额外功能性。小芯片系统1002的封装说明为具有盖或盖子1018,但可使用用于小芯片系统的其它封装技术及结构。图10B是为清楚起见而标记小芯片系统中的组件的框图。
应用小芯片1010被说明为包含小芯片系统NOC 1020以支持小芯片网络1022进行小芯片间通信。在实例实施例中,小芯片系统NOC 1020可经包含于应用小芯片1010上。在实例中,来自图1的实例的第一NOC 118可响应于所选择的支持小芯片(例如,主机接口小芯片1012、存储器控制器小芯片1014及存储器装置小芯片1016)而定义,因此使设计者能够选择适于小芯片系统NOC 1020的数目或小芯片网络连接或交换机。在实例中,小芯片系统NOC1020可经定位于单独小芯片上或中介层1008内。在如本文中所论述的实例中,小芯片系统NOC 1020实施小芯片协议接口(CPI)网络。在实例中,小芯片系统1002可包含或包括密码存储器系统400的一部分。即,密码存储器系统400的各个块或组件可包含可安装于外围板1004、封装衬底1006及中介层1008上的小芯片。
CPI接口(例如可用于系统中的小芯片之间或当中的通信)是支持虚拟通道实现小芯片之间的灵活及高速交互的基于分组的网络。CPI实现从小芯片内网络桥接到小芯片网络1022。举例来说,高级可扩展接口(AXI)是设计芯片内通信的广泛使用的规范。然而,AXI规范涵盖各种物理设计选项,例如物理通道数目、信号时序、功率等。在单个芯片内,这些选项通常经选择以满足设计目标,例如功耗、速度等。然而,为了实现小芯片系统的灵活性,例如CPI的适配器用于介接于可经实施于各个小芯片中的各个AXI设计选项之间。通过启用物理通道到虚拟通道映射及用分组协议封装基于时间的信令,CPI跨小芯片网络1022桥接小芯片内网络。
CPI可使用各种不同物理层来传输分组。物理层可包含简单导电连接,或可包含驱动器以增大电压,或以其它方式促进在较长距离内传输信号。一个此物理层的实例可包含高级接口总线(AIB),在各个实例中,其可经实施于中介层1008中。AIB使用具有转发时钟的源同步数据传送传输及接收数据。分组以关于所传输时钟的单倍数据速率(SDR)或双倍数据速率(DDR)跨AIB传送。各个通道宽度由AIB支持。通道可经配置以具有对称数目个传输(TX)及接收(RX)输入/输出(I/O),或具有非对称数目个传输器及接收器(例如,全传输器或全接收器)。通道可取决于哪一小芯片提供主时钟而用作主或从属AIB。AIB I/O单元支持三种时控模式:异步(即,非时控)、SDR及DDR。在各个实例中,非时控模式用于时钟及一些控制信号。SDR模式可使用专用仅SDR I/O单元或双用SDR/DDR I/O单元。
在实例中,CPI分组协议(例如,点到点或可路由)可在AIB通道内使用对称接收及传输I/O单元。CPI流式传输协议允许更灵活使用AIB I/O单元。在实例中,用于流式传输模式的AIB通道可将I/O单元配置为全TX、全RX或一半TX及一半RX。CPI分组协议可在SDR或DDR操作模式中使用AIB通道。在实例中,AIB通道以用于SDR模式的80个I/O单元(即,40个TX及40个RX)及用于DDR模式的40个I/O单元的增量配置。CPI流式传输协议可在SDR或DDR操作模式中使用AIB通道。此处,在实例中,AIB通道以用于SDR及DDR两种模式的40个I/O单元递增。在实例中,每一AIB通道被指派唯一接口标识符。标识符在CPI复位及初始化期间用于确定跨相邻小芯片的成对AIB通道。在实例中,接口标识符是包括7位小芯片标识符、7位列标识符及6位链路标识符的20位值。AIB物理层使用AIB带外移位寄存器传输接口标识符。20位接口标识符使用移位寄存器的位32到51跨AIB接口在两个方向上传送。
AIB将一组堆叠AIB通道定义为AIB通道列。AIB通道列具有某数目个AIB通道加辅助通道。辅助通道含有用于AIB初始化的信号。列内的所有AIB通道(除辅助通道之外)具有相同配置(例如,全TX、全RX或一半TX及一半RX,以及具有相同数目个数据I/O信号)。在实例中,AIB通道从相邻于AUX通道的AIB通道开始以连续递增顺序编号。相邻于AUX的AIB通道被定义为AIB通道0。
通常,个别小芯片上的CPI接口可包含序列化-反序列化(SERDES)硬件。SERDES互连件非常适于其中期望具有低信号计数的高速信令的案例。然而,SERDES可导致用于多路复用及解多路复用、错误检测或校正(例如,使用块级循环冗余校验(CRC))、链路级重试或转发错误校正的额外功耗及更长延时。然而,当低延时或能量消耗是超短距离小芯片到小芯片互连件的主要关注点时,可利用具有允许以最小延时进行数据传送的时钟速率的并行接口。CPI包含最小化这些超短距离小芯片互连件中的延时及能量消耗两者的元件。
针对流量控制,CPI采用基于信用的技术。例如应用小芯片1010的接收者向例如存储器控制器小芯片1014的发送者提供表示可用缓冲器的信用。在实例中,针对给定时间单位的传输,CPI接收者包含用于每一虚拟通道的缓冲器。因此,如果CPI接收者支持5条时间消息及单个虚拟通道,那么接收者具有布置于5个行中的5个缓冲器(例如,每单位时间1个行)。如果支持4个虚拟通道,那么接收者具有布置于5个行中的20个缓冲器。每一缓冲器保持1个CPI分组的有效负载。
当发送者传输到接收者时,发送者基于传输递减可用信用。一旦接收者的所有信用被消耗,发送者就停止向接收者发送分组。这确保接收者始终具有存储传输的可用缓冲器。
随着接收者处理接收到的分组及释放缓冲器,接收者将可用缓冲器空间传回给发送者。接着,此信用返回可由发送者用于允许传输额外信息。
图10A的实例包含在无需小芯片系统NOC 1020的情况下使用直接小芯片到小芯片技术的小芯片网状网络1024。小芯片网状网络1024可经实施于CPI或另一小芯片到小芯片协议中。小芯片网状网络1024通常启用小芯片管线,其中一个小芯片用作到管线的接口而管线中的其它小芯片仅介接其本身。
另外,例如一或多个工业标准存储器接口(例如(举例来说)同步存储器接口,例如DDR5、DDR6)的专用装置接口可用于将装置连接到小芯片。小芯片系统或个别小芯片到外部装置(例如较大系统)的连接可通过期望接口(举例来说,PCIe接口)。在实例中,此外部接口可通过主机接口小芯片1012实施,在所描绘实例中,主机接口小芯片1012提供小芯片系统外部的PCIe接口。通常在工业中的公约或标准已汇集于此接口上时采用此专用小芯片接口1026。将存储器控制器小芯片1014连接到动态随机存取存储器(DRAM)存储器装置小芯片1016的双倍数据速率(DDR)接口的所说明实例恰好是此行业公约。
在各种可能支持小芯片中,存储器控制器小芯片1014由于几乎无所不在地将存储装置用于计算机处理以及高级先进的存储器装置而可能存在于小芯片系统中。因此,使用由其他人生产的存储器装置小芯片1016及存储器控制器小芯片1014使小芯片系统设计者能使用由先进生产商生产的稳健产品。通常,存储器控制器小芯片1014提供读取、写入或擦除数据的存储器装置特定接口。在一些实例中,存储器控制器小芯片1014可提供额外特征,例如选择性加密或解密、错误检测、错误校正、维护操作或原子运算符执行。针对一些类型的存储器,维护操作趋向于特定于存储器装置小芯片1016,例如NAND快闪或存储类存储器中的废弃项目收集、NAND快闪存储器中的温度调整(例如,交叉温度管理)。在实例中,维护操作可包含逻辑到物理(L2P)映射或管理以提供数据的物理与逻辑表示之间的间接级别。在举例来说DRAM的其它类型的存储器中,例如刷新的一些存储器操作在一些时间可由存储器控制器的主机处理器控制,且在其它时间由DRAM存储器装置或由与例如接口芯片(在实例中,缓冲器)的一或多个DRAM装置相关联的逻辑控制。
原子运算符是举例来说可由存储器控制器小芯片1014执行的数据操纵。在其它小芯片系统中,原子运算符可由其它小芯片执行。举例来说,“递增”的原子运算符可由应用小芯片1010在命令中指定,命令包含存储器地址及可能递增值。在接收命令之后,存储器控制器小芯片1014从指定存储器地址检索数目,按在命令中指定的量递增数目,且存储结果。在成功完成之后,存储器控制器小芯片1014将命令成功的指示提供到应用小芯片1010。原子运算符避免跨小芯片网状网络1024传输数据,从而实现此类命令的较低延时执行。
原子运算符可经分类为内置原子或可编程(例如,自定义)原子。内置原子是不变地实施于硬件中的一组有限操作。可编程原子是可在存储器控制器小芯片1014的可编程原子单元(PAU)(例如,自定义原子单元(CAU))上执行的小程序。
存储器装置小芯片1016可为易失性存储器装置或非易失性存储器,或包含易失性存储器装置或非易失性存储器的任何组合。易失性存储器装置的实例包含(但不限于)随机存取存储器(RAM),例如DRAM、同步DRAM(SDRAM)、图形双倍数据速率型6SDRAM(GDDR6SDRAM)等。非易失性存储器装置的实例包含(但不限于)与非(NAND)型快闪存储器、存储类存储器(例如,相变存储器或基于忆阻器的技术)、铁电RAM(FeRAM)等。所说明实例包含存储器装置小芯片1016作为小芯片,然而,装置可驻留于别处,例如在外围板1004上的不同封装中。针对许多应用,可提供多个存储器装置小芯片。在实例中,这些存储器装置小芯片可各自实施一或多种存储技术,且可包含集成计算主机。在实例中,存储器小芯片可包含不同技术的多个堆叠存储器裸片,举例来说与一或多个动态随机存取存储器(DRAM)装置堆叠或以其它方式通信的一或多个静态随机存取存储器(SRAM)装置。在实例中,存储器控制器小芯片1014可用于协调小芯片系统1002中的多个存储器小芯片之间的操作,举例来说在一或多个高速缓存存储级中使用一或多个存储器小芯片及将一或多个额外存储器小芯片用作主存储器。小芯片系统1002可包含多个存储器控制器小芯片1014例子,如可用于为单独主机、处理器、传感器、网络等提供存储器控制功能性。小芯片架构(例如在所说明系统中)提供允许适应不同存储器存储技术的优点;及通过升级小芯片配置提供不同存储器接口,例如无需重新设计系统结构的剩余部分。
图11说明本文中所论述的技术(例如,方法论)中的任何一或多者可用其实施、在其中实施或由其实施的实例机器1100的框图。如本文中所描述,实例可包含机器1100中的逻辑或数个组件或机构或可由所述逻辑或数个组件或机构操作。电路系统(例如,处理电路系统)是实施于包含硬件(例如,简单电路、门、逻辑等)的机器1100的有形实体中的电路集合。随时间推移,电路系统成员关系可灵活变化。电路系统包含可在操作时单独或组合地执行指定操作的成员。在实例中,电路系统的硬件可经不变设计以实施特定操作(例如,硬连线),例如促进高速缓存数据的加密或解密。在实例中,电路系统的硬件可包含可变连接的物理组件(例如,执行单元、晶体管、简单电路等),其包含物理上经修改(例如,不变质量粒子等的磁性、电、可移动放置)以编码特定操作的指令的机器可读媒体。在连接物理组件时,硬件构成的基本电性质举例来说从绝缘体变成导体,或反之亦然。指令使嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接产生硬件中的电路系统的成员以在操作中实施特定操作的部分。因此,在实例中,机器可读媒体元件是电路系统的部分或在装置操作时通信耦合到电路系统的其它组件。在实例中,物理组件中的任何者可用于多于一个电路系统的多于一个成员中。举例来说,在操作时,执行单元可在一个时间点用于第一电路系统的第一电路中且在不同时间由第一电路系统中的第二电路或由第二电路系统中的第三电路重用。
在一些实施例中,机器1100可作为独立装置操作或可连接(例如,联网)到其它机器。在联网部署中,机器1100可在服务器-客户端网络环境中以服务器机器、客户端机器或两者的身份操作。在实例中,机器1100可充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器1100可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络设备、网络路由器、交换机或网桥或能够(循序或以其它方式)执行指定由机器所采取的动作的指令的任何机器。此外,虽然仅说明单个机器,但术语“机器”还应被视为包含个别或联合执行一(或多个)指令集以执行本文中所论述的方法论中的任何一或多者(例如云计算、软件即服务(SaaS)、其它计算机集群配置)的机器的任何集合。
机器1100(例如,计算机系统)可包含硬件处理器1102(例如,中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合)、主存储器1104、静态存储器1106(例如,用于固件、微代码、基本输入输出(BIOS)、统一可扩展固件接口(UEFI)等的存储器或存储装置)及大容量存储装置1108(例,硬驱动、磁带驱动、快闪存储装置或其它块装置),其中的一些或全部可经由互连1130(例如,总线)彼此通信。机器1100可进一步包含显示器装置1110、字母数字输入装置1112(例如,键盘)及用户接口(UI)导航装置1114(例如,鼠标)。在实例中,显示器装置1110、输入装置1112及UI导航装置1114可为触摸屏显示器。机器1100可另外包含大容量存储装置1108(例如,驱动单元)、信号产生装置1118(例如,扬声器)、网络接口装置1120及一或多个传感器1116,例如全球定位系统(GPS)传感器、指南针、加速度计或其它传感器。机器1100可包含输出控制器1128,例如用于与一或多个外围装置(例如,打印机、读卡器等)通信或控制一或多个外围装置的串行(例如,通用串行总线(USB)、并行或其它有线或无线(例如,红外(IR)、近场通信(NFC)等)连接。
硬件处理器1102、主存储器1104、静态存储器1106或大容量存储装置1108的寄存器可为或包含其上存储体现本文中所描述的技术或功能中的任何一或多者或由本文中所描述的技术或功能中的任何一或多者使用的一或多组数据结构或指令1124(例如,软件)的机器可读媒体1122。指令1124还可在其由机器1100执行期间完全或至少部分驻留于硬件处理器1102、主存储器1104、静态存储器1106或大容量存储装置1108的寄存器中的任何者内。在实例中,硬件处理器1102、主存储器1104、静态存储器1106或大容量存储装置1108中的一者或任何组合可构成机器可读媒体1122。虽然将机器可读媒体1122说明为单个媒体,但术语“机器可读媒体”可包含经配置以存储一或多个指令1124的单个媒体或多个媒体(例如,集中式或分布式数据库,或相关联高速缓存及服务器)。
术语“机器可读媒体”可包含能够存储、编码或载送由机器1100执行且致使机器1100执行本公开的技术中的任何一或多者的指令或能够存储、编码或载送由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体及信号(例如,射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有含不变(例如,静止)质量的多个粒子的机器可读媒体,且因此为物质组成。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的特定实例可包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))及快闪存储器装置;磁盘,例如内部硬盘及可装卸磁盘;磁光盘;及CD-ROM及DVD-ROM磁盘。
在实例中,存储或以其它方式提供于机器可读媒体1122上的信息可表示指令1124,例如指令1124本身或指令1124可从其导出的格式。指令1124可从其导出的此格式可包含源代码、经编码指令(例如,呈压缩或加密形式)、封装指令(例如,分成多个封装)或类似者。在机器可读媒体1122中表示指令1124的信息可由处理电路系统处理成实施本文中所论述的操作中的任何者的指令。举例来说,从信息导出指令1124(例如,由处理电路系统处理)可包含:将信息编译(例如,从源代码、目标代码等)、解译、加载、组织(例如,动态或静态链接)、编码、解码、加密、未加密、解密、封装、解封或以其它方式操纵成指令1124。
在实例中,指令1124的导出可包含组装、编译或解译信息(例如,通过处理电路系统)以从由机器可读媒体1122提供的一些中间或经预处理格式创建指令1124。信息在以多个部分提供时可经组合、拆包及修改以创建指令1124。举例来说,信息可在一或若干远程服务器上的多个压缩源代码封装(或目标代码或二进制可执行代码等)中。源代码封装可在经由网络中转时加密且在本地机器处解密、解压、组装(例如,链接)(如果有必要)及编译或解译(例如,变成库、独立可执行文件等)且由本地机器执行。
指令1124可进一步通过通信网络1126使用传输媒体经由利用数个传送协议中的任一者(例如,帧中继、因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等)的网络接口装置1120来传输或接收。实例通信网络可包含局域网(LAN)、广域网(WAN)、分组数据网络(例如,因特网)、移动电话网络(例如,蜂窝网络)、简易老式电话(POTS)网络及无线数据网络(例如,称为的电气及电子工程师协会(IEEE)402.11系列标准、称为/>的IEEE 402.16系列标准)、IEEE 402.15.4系列标准、对等(P2P)网络等。在实例中,网络接口装置1120可包含一或多个物理插孔(例如,以太网、同轴或电话插孔)或一或多个天线以连接到网络1126。在实例中,网络接口装置1120可包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一者进行无线通信。术语“传输媒体”应被视为包含能够存储、编码或载送由机器1100执行的指令的任何无形媒体,且包含促进此软件通信的数字或模拟通信信号或其它无形媒体。传输媒体是机器可读媒体。
为了更好说明本文中所描述的方法及设备,下文将一组非限制性实例实施例阐述为数字识别实例。
实例1可包含一种方法,其包括:在高速缓冲存储器中维护多个高速缓存行,其中每一高速缓存行包括数据字段、加密状态属性及加密密钥属性。在实例1中,所述加密状态属性指示所述对应高速缓存行中的所述数据字段包含加密数据还是未加密数据,且所述加密密钥属性包含所述对应高速缓存行的加密密钥标识符。
在实例2中,根据实例1所述的标的物包含维护所述多个高速缓存行且任选地进一步包括针对每一高速缓存行维护指示所述对应高速缓存行的存取历史的相应存取计数器。
在实例3中,根据实例2所述的标的物可包含在主机存取第一高速缓存行时递增所述第一高速缓存行的所述存取计数器。
在实例4中,根据实例2到3所述的标的物可包含在主机的计算间隔过去而没有存取第一高速缓存行时递减所述第一高速缓存行的所述存取计数器。
在实例5中,根据实例2到4所述的标的物可包含基于高速缓存行的所述存取计数器的相应值选择性地逐出所述高速缓存行。
在实例6中,根据实例5所述的标的物任选地包含为了选择性地逐出高速缓存行,逐出具有未加密第一数据字段的第一高速缓存行,包含通过使用由所述第一高速缓存行的所述加密密钥属性识别的加密密钥来加密所述第一数据字段来准备逐出数据,及将所述逐出数据写入到外部存储器。
在实例7中,根据实例1到6所述的标的物可包含或使用与相应不同加密密钥相关联的多个所述高速缓存行中的每一者。
在实例8中,根据实例1到7所述的标的物可包含维护密钥表,所述密钥表包含对应于多个加密密钥标识符的加密密钥。实例8可包含使用密码控制器来检索加密密钥以实现所述高速缓存行中的至少一者中的数据的加密或解密。
在实例9中,根据实例1到8所述的标的物可包含针对由所述高速缓冲存储器使用的多个加密密钥标识符创建相应密钥标识符计数器,及选择性地加密与非空密钥标识符计数器相关联的任何高速缓存行数据的至少一部分。
在实例10中,根据实例9所述的标的物任选地包含递减对应于所述选择性地加密的高速缓存行数据的所述密钥标识符计数器。
在实例11中,根据实例9或10所述的标的物任选地包含接收数据解密请求及递增对应于所述请求的所述高速缓存行数据的所述密钥标识符计数器。
在实例12中,根据实例9到11所述的标的物任选地包含使用来自所述密钥标识符计数器的信息来提供或强制执行数据安全性策略,所述数据安全性策略允许对应于单个密钥标识符的明文信息的解密或存储,同时维持对应于由所述高速缓冲存储器使用的所有其它密钥标识符的密文信息的加密或存储。
实例13包含一种方法,其包括使用密码控制器来从高速缓冲存储器读取第一高速缓存行及识别所述第一高速缓存行中的加密状态属性。当所述加密状态属性指示所述第一高速缓存行包括加密数据时,实例13包含:从密钥表存取第一加密密钥,所述第一加密密钥由来自所述第一高速缓存行的加密密钥属性来识别;及解密来自所述第一高速缓存行的所述加密数据的至少一部分以提供第一解密数据;及将所述第一解密数据提供到主机。当所述加密状态属性指示所述第一高速缓存行包括第一未加密数据时,实例13包含将所述第一未加密数据提供到所述主机。
在实例14中,根据实例13所述的标的物可包含:响应于将所述第一解密数据提供到所述主机,在所述密码控制器处从所述主机接收经处理数据;及使用所述第一加密密钥来加密所述经处理数据以提供加密脏数据;及将所述加密脏数据与所述加密密钥属性一起写入到所述第一高速缓存行。
在实例15中,根据实例14所述的标的物可包含将所述加密脏数据写入到所述第一高速缓存行进一步包括更新指示所述第一高速缓存行的存取历史的存取计数器。
在实例16中,根据实例13到15所述的标的物可包含:响应于将所述第一未加密数据提供到所述主机,在所述密码控制器处从所述主机接收经处理数据;及将所述经处理数据与所述加密密钥属性与一起写入到所述第一高速缓存行。
在实例17中,根据实例16所述的标的物可包含更新指示所述第一高速缓存行的存取历史的存取计数器。
在实例18中,根据实例17所述的标的物可包含在所述存取计数器指示满足指定阈值存取条件的存取频率时加密所述第一高速缓存中的所述经处理数据,且加密所述经处理数据包含使用所述第一加密密钥。
实例19可包含一种系统,其包括:高速缓冲存储器,其包括多个高速缓存行,其中每一高速缓存行包括数据字段、指示所述数据字段是否包括加密数据的加密状态属性,及指示来自多个加密密钥中的与所述高速缓存行或与所述数据字段中的所述数据相关联的特定加密密钥的加密密钥属性。实例19可进一步包含一种密码控制器电路,其经配置以从主机装置接收读取及/或写入请求且作为响应,从所述高速缓冲存储器检索第一高速缓存行。当所述加密状态属性指示所述第一高速缓存行包含加密数据时,所述密码控制器可使用由来自所述第一高速缓存行的所述加密密钥属性指示的密钥来解密来自所述第一高速缓存行的所述数据字段的信息,以提供第一解密数据且将所述第一解密数据提供到所述主机装置,且任选地从所述主机装置接收未加密第一响应数据,且使用由来自所述第一高速缓存行的所述加密密钥属性指示的所述相同密钥来加密所述第一响应数据以提供更新数据字段,且将所述更新数据字段写入到所述第一高速缓存行。
在实例20中,根据实例19所述的标的物可包含或使用所述密码控制器,所述密码控制器进一步经配置以从所述高速缓冲存储器检索第二高速缓存行且当所述第二高速缓存行的所述加密状态属性指示所述第二高速缓存行包含未加密数据时,将所述未加密数据提供到所述主机装置,从所述主机装置接收未加密第二响应数据,且确定是将所述第二响应数据回写到所述第二高速缓存行还是加密所述第二响应数据。
在实例21中,根据实例20所述的标的物可包含或使用所述密码控制器以基于所述第二高速缓存行的高速缓存行存取计数器来确定是回写所述第二响应数据还是加密所述第二响应数据。
在实例22中,根据实例19到21所述的标的物可包含或使用密钥表,所述密钥表经配置以维护所述高速缓冲存储器中的所述多个高速缓存行的所述多个加密密钥及相关联加密密钥属性。
在实例23中,根据实例19到22所述的标的物可包含耦合到所述高速缓冲存储器及主存储器的回写加密引擎,且所述加密引擎可经配置以加密从所述高速缓冲存储器写入到主存储器的任何未加密数据。
在实例24中,根据实例19到23所述的标的物可包含所述高速缓冲存储器中的高速缓存行,所述高速缓存行包括经配置以指示所述高速缓存行中的所述数据的相对年龄的相应高速缓存行存取计数器。在实例24中,所述密码控制器电路可经配置以在所述主机装置的每一循环递增或递减所述高速缓存行存取计数器。
实例25是至少一种机器可读媒体,其包含指令,所述指令在由处理电路系统执行时致使所述处理电路系统执行实施实例1到24中任一者的操作。
这些非限制性实例中的每一者可独立存在,或可以各种排列或组合与其它实例中的一或多者组合。
上文详细描述包含参考形成详细描述的一部分的附图。图式通过说明来展示其中可实践本发明的特定实施例。这些实施例在本文中也称为“实例”。此类实例可包含除所展示或描述的元件之外的元件。然而,本发明者还考虑其中仅提供所展示或描述的那些元件的实例。此外,本发明者还考虑使用关于特定实例(或其一或多个方面)或关于本文中所展示或描述的其它实例(或其一或多个方面)展示或描述的那些元件的任何组合或排列的实例(或其一或多个方面)。
在本档案中,如专利档案中常见,术语“一(a/an)”用于包含一个或多于一个,其独立于“至少一个”或“一或多个”的任何其它例子或使用。在本档案中,术语“或”用于指代非排他性“或”,使得“A或B”可包含“A但非B”、“B但非A”及“A及B”,除非另有指示。在所附权利要求书中,术语“包含”及“其中(in which)”用作相应术语“包括”及“其中(wherein)”的普通英语等效形式。而且,在所附权利要求书中,术语“包含”及“包括”是开放式的,即,权利要求中包含除此术语之后所列的元件之外的元件的系统、装置、物品或过程仍被认为落于所述权利要求的范围内。此外,在所附权利要求书中,术语“第一”、“第二”及“第三”等仅用作标记,且不希望对其对象强加数值要求。
上文描述希望是说明性而非限制性的。举例来说,上述实例(或其一或多个方面)可彼此组合使用。例如所属领域的一般技术人员可在检视上文描述之后使用其它实施例。在理解以上描述将不用于解译或限制权利要求书的范围或含义的情况下提交以上描述。而且,在上文详细描述中,可将各种特征分组在一起以简化本公开。此不应被解译为希望未主张的公开特征是任何权利要求所必需的。确切来说,发明标的物可具有特定公开实施例的非所有特征。因此,所附权利要求书特此并入具体实施方式中,其中每一权利要求自身作为单独实施例,且预期此类实施例可以各种组合或排列彼此组合。应参考所附权利要求书以及此权利要求书授权的等效物的全范围来确定本发明的范围。
Claims (20)
1.一种方法,其包括:
在高速缓冲存储器中维护多个高速缓存行,其中每一高速缓存行包括数据字段、加密状态属性及加密密钥属性;
其中所述加密状态属性指示所述对应高速缓存行中的所述数据字段包含加密数据还是未加密数据,且
其中所述加密密钥属性包含所述对应高速缓存行的加密密钥标识符。
2.根据权利要求1所述的方法,其中维护所述多个高速缓存行进一步包括针对每一高速缓存行维护指示所述对应高速缓存行的存取历史的相应存取计数器。
3.根据权利要求2所述的方法,其进一步包括以下中的一者:
在主机存取第一高速缓存行时递增所述第一高速缓存行的所述存取计数器;或
在主机的计算间隔过去而没有存取第一高速缓存行时递减所述第一高速缓存行的所述存取计数器。
4.根据权利要求2所述的方法,其进一步包括基于所述高速缓存行的所述存取计数器的相应值选择性地逐出所述高速缓存行。
5.根据权利要求4所述的方法,其中选择性地逐出高速缓存行包含:
逐出具有未加密第一数据字段的第一高速缓存行,包含通过使用由所述第一高速缓存行的所述加密密钥属性识别的加密密钥来加密所述第一数据字段来准备逐出数据,及将所述逐出数据写入到外部存储器。
6.根据权利要求1所述的方法,其中多个所述高速缓存行中的每一者与相应不同加密密钥相关联。
7.根据权利要求1所述的方法,其进一步包括维护密钥表,所述密钥表包含对应于多个加密密钥标识符的加密密钥;及
使用密码控制器,检索加密密钥以实现所述高速缓存行中的至少一者中的数据的加密或解密。
8.根据权利要求1所述的方法,其进一步包括:
针对由所述高速缓冲存储器使用的多个加密密钥标识符创建相应密钥标识符计数器;及
选择性地加密与非空密钥标识符计数器相关联的任何高速缓存行数据的至少一部分。
9.根据权利要求8所述的方法,其中选择性地加密所述高速缓存行数据包含递减对应于所述选择性地加密的高速缓存行数据的所述密钥标识符计数器。
10.根据权利要求9所述的方法,其进一步包括接收数据解密请求及递增对应于所述请求的所述高速缓存行数据的所述密钥标识符计数器。
11.根据权利要求8所述的方法,其进一步包括使用来自所述密钥标识符计数器的信息来强制执行数据安全性策略,所述数据安全性策略允许对应于单个密钥标识符的明文信息的解密或存储,同时维持对应于由所述高速缓冲存储器使用的所有其它密钥标识符的密文信息的加密或存储。
12.一种方法,其包括:
使用密码控制器:
从高速缓冲存储器读取第一高速缓存行;
识别所述第一高速缓存行中的加密状态属性;
当所述加密状态属性指示所述第一高速缓存行包括加密数据时:
从密钥表存取第一加密密钥,所述第一加密密钥由来自所述第一高速缓存行的加密密钥属性来识别;
解密来自所述第一高速缓存行的所述加密数据的至少一部分以提供第一解密数据;且
将所述第一解密数据提供到主机;且
当所述加密状态属性指示所述第一高速缓存行包括第一未加密数据时:
将所述第一未加密数据提供到所述主机。
13.根据权利要求12所述的方法,其进一步包括:
响应于将所述第一解密数据提供到所述主机,在所述密码控制器处从所述主机接收经处理数据;
使用所述第一加密密钥来加密所述经处理数据以提供加密脏数据;及
将所述加密脏数据与所述加密密钥属性一起写入到所述第一高速缓存行。
14.根据权利要求13所述的方法,其中将所述加密脏数据写入到所述第一高速缓存行进一步包括更新指示所述第一高速缓存行的存取历史的存取计数器。
15.根据权利要求12所述的方法,其进一步包括:
响应于将所述第一未加密数据提供到所述主机,在所述密码控制器处从所述主机接收经处理数据;
将所述经处理数据与所述加密密钥属性一起写入到所述第一高速缓存行;
更新指示所述第一高速缓存行的存取历史的存取计数器;及
在所述存取计数器指示满足指定阈值存取条件的存取频率时加密所述第一高速缓存中的所述经处理数据,其中加密所述经处理数据包含使用所述第一加密密钥。
16.一种系统,其包括:
高速缓冲存储器,其包括多个高速缓存行,其中每一高速缓存行包括数据字段、指示所述数据字段是否包括加密数据的加密状态属性,及指示来自多个加密密钥中的与所述高速缓存行或与所述数据字段中的所述数据相关联的特定加密密钥的加密密钥属性;及
密码控制器电路,其经配置以从主机装置接收读取及/或写入请求且作为响应:
从所述高速缓冲存储器检索第一高速缓存行;
当所述加密状态属性指示所述第一高速缓存行包含加密数据时,使用由来自所述第一高速缓存行的所述加密密钥属性指示的密钥来解密来自所述第一高速缓存行的所述数据字段的信息以提供第一解密数据;
将所述第一解密数据提供到所述主机装置;
从所述主机装置接收未加密第一响应数据;且
使用由来自所述第一高速缓存行的所述加密密钥属性指示的所述相同密钥来加密所述第一响应数据以提供更新数据字段;且
将所述更新数据字段写入到所述第一高速缓存行。
17.根据权利要求16所述的系统,其中所述密码控制器进一步经配置以:
从所述高速缓冲存储器检索第二高速缓存行;
当所述第二高速缓存行的所述加密状态属性指示所述第二高速缓存行包含未加密数据时,将所述未加密数据提供到所述主机装置;
从所述主机装置接收未加密第二响应数据;且
确定是将所述第二响应数据回写到所述第二高速缓存行还是加密所述第二响应数据;
其中所述密码控制器经配置以基于所述第二高速缓存行的高速缓存行存取计数器来确定是回写所述第二响应数据还是加密所述第二响应数据。
18.根据权利要求16所述的系统,其进一步包括:
密钥表,其经配置以维护所述高速缓冲存储器中的所述多个高速缓存行的所述多个加密密钥及相关联加密密钥属性。
19.根据权利要求16所述的系统,其进一步包括耦合到所述高速缓冲存储器及主存储器的回写加密引擎,其中所述加密引擎经配置以加密从所述高速缓冲存储器写入到主存储器的任何未加密数据。
20.根据权利要求16所述的系统,其中所述高速缓冲存储器中的高速缓存行包括经配置以指示所述高速缓存行中的所述数据的相对年龄的相应高速缓存行存取计数器;且
其中所述密码控制器电路经配置以在所述主机装置的每一循环递增或递减所述高速缓存行存取计数器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163234335P | 2021-08-18 | 2021-08-18 | |
US63/234,335 | 2021-08-18 | ||
PCT/US2022/034048 WO2023022787A1 (en) | 2021-08-18 | 2022-06-17 | Selective cache line memory encryption |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117940910A true CN117940910A (zh) | 2024-04-26 |
Family
ID=85228354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280062559.XA Pending CN117940910A (zh) | 2021-08-18 | 2022-06-17 | 选择性高速缓存行存储器加密 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230058668A1 (zh) |
CN (1) | CN117940910A (zh) |
WO (1) | WO2023022787A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230138673A (ko) * | 2022-03-24 | 2023-10-05 | 주식회사 티맥스티베로 | 데이터베이스를 관리하기 위한 방법 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4226816B2 (ja) * | 2001-09-28 | 2009-02-18 | 株式会社東芝 | マイクロプロセッサ |
KR20040041684A (ko) * | 2001-10-12 | 2004-05-17 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 블록식으로 저장된 사용자 데이터를 판독 또는 기록하는장치 및 방법 |
US7681047B2 (en) * | 2006-04-18 | 2010-03-16 | International Business Machines Corporation | Decryption of data in storage systems |
US9218296B2 (en) * | 2014-01-27 | 2015-12-22 | International Business Machines Corporation | Low-latency, low-overhead hybrid encryption scheme |
US20180052779A1 (en) * | 2016-08-19 | 2018-02-22 | Advanced Micro Devices, Inc. | Data cache region prefetcher |
-
2022
- 2022-06-17 US US17/843,571 patent/US20230058668A1/en active Pending
- 2022-06-17 CN CN202280062559.XA patent/CN117940910A/zh active Pending
- 2022-06-17 WO PCT/US2022/034048 patent/WO2023022787A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2023022787A1 (en) | 2023-02-23 |
US20230058668A1 (en) | 2023-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11481343B1 (en) | Transporting request types with different latencies | |
US20230215500A1 (en) | Programmable atomic operator resource locking | |
US11782725B2 (en) | Mask field propagation among memory-compute tiles in a reconfigurable architecture | |
US11392527B2 (en) | Ordered delivery of data packets based on type of path information in each packet | |
WO2023022906A1 (en) | Tile-based result buffering in memory-compute systems | |
CN118076944A (zh) | 可重新配置计算组构中的循环执行期间的数据存储 | |
US20240086324A1 (en) | High bandwidth gather cache | |
US20230058668A1 (en) | Selective cache line memory encryption | |
US11675713B2 (en) | Avoiding deadlock with a fabric having multiple systems on chip | |
US11740800B2 (en) | Alleviating memory hotspots on systems with multiple memory controllers | |
WO2023278015A1 (en) | Loading data from memory during dispatch | |
CN118043792A (zh) | 提供事件消息的可靠接收的机制 | |
CN117795496A (zh) | 可重新配置计算组构中的并行矩阵运算 | |
CN116529721A (zh) | 按需可编程原子内核加载 | |
US11698853B2 (en) | Saturating local cache in memory-compute systems | |
US20240028526A1 (en) | Methods and systems for requesting atomic operations in a computing system | |
US20240028390A1 (en) | Methods and systems for communications between hardware components | |
CN118056181A (zh) | 链式资源锁定 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |