CN110232031A - 保护缓存免受侧信道攻击的方法、系统和存储介质 - Google Patents
保护缓存免受侧信道攻击的方法、系统和存储介质 Download PDFInfo
- Publication number
- CN110232031A CN110232031A CN201910164064.8A CN201910164064A CN110232031A CN 110232031 A CN110232031 A CN 110232031A CN 201910164064 A CN201910164064 A CN 201910164064A CN 110232031 A CN110232031 A CN 110232031A
- Authority
- CN
- China
- Prior art keywords
- cache blocks
- cache
- caching
- access
- memory
- 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.)
- Granted
Links
- 238000003860 storage Methods 0.000 title claims description 36
- 238000000034 method Methods 0.000 title claims description 33
- 239000000872 buffer Substances 0.000 claims abstract description 40
- 230000008859 change Effects 0.000 claims description 27
- 230000007246 mechanism Effects 0.000 claims description 11
- 230000000737 periodic effect Effects 0.000 claims 1
- 208000027418 Wounds and injury Diseases 0.000 abstract 1
- 230000006378 damage Effects 0.000 abstract 1
- 208000014674 injury Diseases 0.000 abstract 1
- 101100166522 Dictyostelium discoideum cycB gene Proteins 0.000 description 40
- 101100439280 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CLB1 gene Proteins 0.000 description 40
- 101150033539 CLB2 gene Proteins 0.000 description 21
- PWNAWOCHVWERAR-UHFFFAOYSA-N Flumetralin Chemical compound [O-][N+](=O)C=1C=C(C(F)(F)F)C=C([N+]([O-])=O)C=1N(CC)CC1=C(F)C=CC=C1Cl PWNAWOCHVWERAR-UHFFFAOYSA-N 0.000 description 14
- 239000000523 sample Substances 0.000 description 14
- 230000000694 effects Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000011049 filling Methods 0.000 description 7
- 230000001419 dependent effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000007689 inspection Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000009466 transformation 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/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- 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/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or 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/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
-
- 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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
- 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/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
缓存可易受到涉及指令的推测执行的侧信道攻击(如,Spectre和Meltdown)伤害,以揭露关于攻击者不被允许访问的缓存的信息。访问许可可以存储在缓存中,如,存储在缓存表的条目中或存储在缓存表的区域信息中。可选地,如果访问许可在存储器指令未决时改变,则可重新检查访问许可。可选地,随机索引值可以存储在缓存中,且至少部分用来识别缓存块的存储器位置。可选地,在存储器指令的推测负载中涉及的缓存块可以被标记为推测的。在将推测负载解析为非推测的条件下,缓存块可以被标记为非推测的;且在将推测负载解析为误推测的条件下,可从所述缓存移除所述缓存块。
Description
相关申请的交叉引用
本申请要求保护于2018年3月5日提交的美国临时申请No.62/638,450的权益。该申请的整个公开内容通过引用并入本文。
技术领域
本公开涉及用于访问计算机存储器装置中的数据的方法和系统,包括用于改善缓存(cache)的安全性的机制和技术。
背景技术
此部分提供关于本公开的不必是现有技术的背景信息。
处理器可配备有缓存,其可存储一些高容量存储器(如,动态随机访问存储器(DRAM))中存储的数据和指令的副本。在此,术语“存储器”可用来统指所有现有和未来的存储器实施方式。缓存存储器(或简称为“缓存”)可根据比其他存储器实施方式小且快的存储器而建立,并且随后可在任何给定时间仅保存主存储器或次级存储装置中存储的数据的一部分的副本。可使用SRAM实现较小的缓存,且可以使用DRAM实现大的缓存。
计算机系统的存储器系统可包括许多缓存,且一些计算机系统可包括与主存储器物理上和/或逻辑上较近的较大且较慢的缓存(本文称为较高级的缓存)和与处理器物理上和/或逻辑上较近的较小且较快的缓存(本文称为较低级的缓存)。该配置可被称为缓存层次结构、存储器层次结构或存储器系统。缓存层次结构中的每个级被称为缓存级。
发明内容
此部分提供对公开内容的总体概述且不是对其整个范围或其所有特征的全面公开。
在示例实施例中,提供一种用于访问装置的缓存中的数据的方法,方法包括:在缓存区(buffer)中存储缓存(cache)中存储的缓存块的访问许可;对于涉及缓存块的存储器指令,至少部分基于缓存块的访问许可,确定是否允许存储器指令访问缓存块;以及在确定不允许存储器指令访问缓存块的条件下,抑制改变缓存。
在示例实施例中,提供一种系统,包括:缓存;和至少一个处理器,其被配置成:在缓存区中存储缓存块的访问许可;对于涉及缓存块的存储器指令,至少部分基于缓存块的访问许可,确定是否允许存储器指令访问缓存块;以及在确定不允许存储器指令访问缓存块的条件下,抑制改变缓存。
进一步的适用领域将根据本文提供的说明变得显而易见。此发明内容中的说明和具体示例仅旨在用于说明目的而不旨在限制本公开的范围。
附图说明
并入说明书中并构成其一部分的附图示出了一个或多个示例实施例,并与说明书一起解释这些示例实施例的至少一些部分。附图不旨在限制本公开的范围。在附图中:
图1是示出多处理器系统的示例实施例的框图;
图2是包括缓存层次结构的单处理器系统的示例实施例的框图;
图3示出包括组相联缓存和组相联数据转换后备缓存区的两级缓存层次结构的示例实施例;
图4是示出包括两级缓存层次结构和两级缓存块地址后备缓存区(CLB)层次结构的系统的示例实施例的框图,其中,第一级被虚拟访问而第二级被物理访问;
图5是示出包括连接到两级缓存层次结构和两级缓存块后备缓存区层次结构的两个CPU的系统的示例实施例的框图;
图6是示出例示图4的CLB1的扩展的实施方式的示例实施例的框图;和
图7是示出例示图3的TLB的扩展的实施方式的示例实施例的框图。
具体实施方式
示例实施例的以下说明参考附图。不同附图中的相同附图标记指代相同或类似特征。以下具体描述不限制本发明。然而,由随附权利要求限定本发明的范围。为了简单起见,关于缓存层次结构的术语和结构以及用于执行这种层次结构中的查找的方法,讨论以下示例实施例中的一些。然而,示例实施例不限于这些配置,而是可扩展到在下面讨论的其他布置。
整个说明书对“示例实施例”或“多个示例实施例”的参考旨在意为可在所公开的主题的至少一个示例实施例中包括特征、结构或特性。因此,整个说明书中各位置出现的短语“在示例实施例中”或“在多个示例实施例中”不一定指代相同的(一个或多个)实施例。进一步的,可在一个或多个示例实施例中以任何适当的方式组合特征、结构或特性。
现在将参考附图更全面的描述示例实施例。
图1描绘了示例计算机系统,其中,每个CPU 101被分配有其自己的第一级专用缓存102(L1缓存),其中,专用缓存是其数据单元的空间可仅由对缓存是本地的CPU和/或与缓存在相同节点中(其中,缓存专用于该节点)的CPU的活动访问的缓存。在此示例计算机系统中,第二级缓存103由所有CPU 101共享且可包含由所有CPU 101访问的数据和指令。缓存103是共享的缓存,因为数据单元的空间可由任何CPU 101的活动访问。缓存103还是共享的缓存,因为每个数据单元可仅存在于一个共享的副本中,而每个专用缓存可具有复制的副本。主存储器105还存储可由所有CPU 101访问的指令和数据。使用物理地址(或简称为PA)访问主存储器105,同时CPU 101生成的地址被识别为虚拟地址(或简称为VA)。具有若干CPU和若干专用缓存的计算机系统(如,图1中所示的示例计算机系统)可以以下机制为特征:该机制用于快速地在缓存之一中找到请求的数据单元和/或用于将在不同节点中存储的数据的多个副本保持为一致。
在图1的示例计算机系统中,如果CPU 101访问在磁盘104上存储的数据,则虚拟存储器系统(图1中未示出)将识别为页面的数据块从磁盘104移动到存储器105并创建从对应于该页面的虚拟地址到物理地址的转换。被识别为“转换后备缓存区”(或简称为TLB)的特殊类型的转换缓存(图1中未示出)缓存从虚拟页面到物理页面的转换映射。虚拟存储器系统可被视为缓存系统,其将位于磁盘104中的数据的一部分存储在存储器105中。
图2示出图1的缓存组织的更具体的示图,其中,CPU 204被示出为包含若干类似缓存结构(如,指令TLB(ITLB,201)和数据TLB(DTLB,205))和CPU核202。第一级缓存102被示出为包括介于CPU 204和第二级(以及潜在的更高级)缓存207之间的指令缓存200(L1ICACHE)和数据缓存206(L1DCACHE)。图2还示出连接到缓存层次结构的高容量的存储器208。
在CPU 204请求存在于缓存中的数据(称为缓存命中)时,相比于对不存在于缓存中的数据的访问(称为缓存未命中),该请求可被更快地服务。假设两应用具有类似属性,相比于展现更多缓存未命中的应用,在经历较少缓存未命中的CPU 204上运行的应用可更快地执行和/或消耗更少的能量。因此,提供减少缓存未命中和/或使缓存命中和缓存未命中相对于其访问延迟和/或这种存储器事务所消耗的能量而言有效的计算机系统是有利的。
数据可以比处理器的字长大的固定块的形式存储在缓存中,称为缓存块。示例实施例的特征可为如32、64和128字节的缓存块大小以及更大和/或更小的缓存块大小和/或可变的缓存块大小。
在示例实施例中,可以每个数据字被静态地映射为存在于一个特定的缓存块中的方式组织存储器208中的数据放置。每个缓存可具有随机索引值,其识别缓存的每个缓存块可存在于其中的部分,称为组(set)。该组可以包含用于同时保存一个或多个缓存块的空间。该组可以保存的缓存块的数量被称为其关联性(associativity)。在组相联缓存中,所有组的关联性相同。关联性还可在组之间变化。组中的可保存缓存块的空间中的每一个被称为路(way)。
为了确定在每个组中存储的每个缓存块的身份,缓存中的缓存块均具有与它们相关联的某一标识符,如,地址标签(ATAG)。当在缓存中寻找特定缓存块时,缓存块的地址可用来确定缓存块可存在于其中的缓存的组。对应组的缓存块的地址标签与用于识别缓存块的地址的标签部分(例如参见在图3中描绘且在下面描述的地址标签(ATAG))比较以确定期望的缓存块是否存在于缓存中,如果是,则确定其存在于哪个路中(例如,其存在于组中可保存缓存块的空间中的哪个中)。在示例实施例中,这种ADDR地址标签的大小可相当大且可在30-40比特(其可以是缓存块的大小的6-10%)的范围中。
在示例实施例中,缓存可具有用于确定哪个缓存块保持在组中以及哪个缓存块被逐出(还称为替换)从而为被引入组中的新的缓存块让出空间的嵌入策略,还称为其替换策略。替换的缓存块被称为受害者(victim)或替换的缓存块。可与缓存存储器结合使用的替换策略包括但不限于最近最少使用(LRU)、伪LRU以及随机替换策略。
在包容型缓存层次结构中,存在于一个缓存级中的数据的块(例如,缓存块)(例如,L1缓存中的数据的块)的副本还可存在于较高的缓存级中(在此,较高指的是高于第一级的缓存级),例如,存在于L2和L3缓存中。独占型缓存层次结构仅具有存在于整个缓存层次结构中的数据的块(例如,缓存块)的一个副本,而非包容型缓存层次结构可具有两种策略的混合。在独占型和非包容型缓存层次结构的示例实施例中,缓存块在从给定缓存级逐出时可存储在下一个较高的缓存级中。
现在描述用于识别在示例缓存层次结构内的特定缓存位置的一些技术,如在图1和图2中所示的。图3示出计算机系统节点的组织的示例,该计算机系统节点包含CPU核301、数据转换后备缓存区(DTLB)303、L1缓存307和L2缓存311,L2缓存311以具有缓存条目为特征,缓存条目包括ATAG 312和DATA(数据)313。CPU核301生成包含虚拟地址302(VADDR)的存储器请求,虚拟地址302用来执行DTLB 303中的关联查找。在该示例中,虚拟地址302被分成三个部分:P-OFFSET(页面偏移,例如,包括低级比特)、TAG(标签)和INDEX(索引)。虚拟地址302的INDEX部分用来识别DTLB 303内的可存储地址转换的组。
在此示例中使用的所示DTLB 303具有两路关联组织,其示出所识别的组的两个条目。每个条目包括地址标签(ATAG)304和物理页框(PPF)305。虚拟地址302的TAG部分与所识别的组的每个条目的ATAG 304进行比较。逻辑318确定是否存在任一条目的匹配,且如果存在,就控制复用器(MUX)306选择对应的PPF 305。通过将MUX 306选择的PPF 305与虚拟地址302的P-OFFSET部分并置,组成物理地址(PADDR)316。替代地,如果所识别的组的条目中的任一个都不与虚拟地址302的TAG部分匹配,则执行TLB填充操作且对应的转换条目被引入DTLB 303。
PADDR 316用来执行L1缓存307中的查找。更具体地,PADDR 316的INDEX部分用来识别其中可存储包含请求的数据的缓存块的组。L1索引可包含与DTLB索引不同的比特。所描绘的L1缓存307具有2路关联组织,其具有在所识别的组中的两个条目。每个条目包括对应的缓存块的地址标签(ATAG)308和数据309。PADDR 316的TAG部分与所识别的组的每个条目的ATAG进行比较。逻辑319确定是否存在任一条目的匹配,且控制MUX 310来选择对应的数据并将数据返回(315)到CPU核301。如果条目中的任一个都不匹配(由L1MISS(L1未命中)317描绘),则通过提供给第三复用器(MUX)314的逻辑320执行L2缓存311中的查找,该MUX314将数据返回(315)到CPU核301。
尽管针对L2缓存查找将PADDR 316划分成INDEX部分和TAG部分可不同于针对L1缓存查找进行的划分,但L2缓存查找的剩余步骤可与针对L1缓存中的查找执行的步骤类似。如果确定了L2缓存中的未命中,则可执行在较高级的缓存中的新的查找或对存储器的访问。如果L1缓存使用的PADDR 316的INDEX部分完全由P_OFFSET比特组成,则可在来自MUX306的PPF信息可用之前开始对L1缓存307的访问。这可被称为虚拟索引的物理标记的缓存(VIPT)。L2(和更高级的)缓存可包含比L1缓存更大数量的组,且TLB可转换一些地址比特以用做索引比特。
在示例实施例中,均具有类似于图3中描绘的存储器层次结构的若干“节点”可连接在一起以形成一致的多处理器系统。在图1中所示的多处理器的示例实施例中,每个CPU具有其自己的专用L1缓存。多处理器配置可使对请求的数据所存在的位置进行定位的任务复杂化,因为其可不足以搜索下一个更高缓存级中的数据。用于搜索其他节点的缓存以及用于使不同节点中存储的数据的多个副本一致的机制用来执行那些任务。
图4呈现了包括无标签的缓存的示例实施例,无标签的缓存可依赖与匹配缓存表条目CTE(有时称为区域位置条目)的请求的缓存块对应的位置信息LI(有时称为缓存块指针CP)来指示请求的缓存块存在于哪个缓存中以及在该缓存的哪个位置中。这将使实施例在适当的缓存处执行直接缓存查找。
例如,图4的示例系统示出了在示例多处理器系统中的无标签的节点,其中,位置信息可用来区分L1缓存和L2缓存。位置信息还可用来区分在示例多处理器系统的剩余部分中存在的其他缓存(图4中未示出)。还可能够识别其中存储请求的数据的缓存内的相关联的路。图4中示出的示例无标签的节点可连接到具有组相联缓存的两级缓存层次结构和CPU(其可包含一个或多个缓存,在此描绘为L0)的示例多处理器系统中的其他节点,其中,CPU401生成地址(ADDR)402。在示例实施例中,ADDR 402为VA。在另一示例实施例中,ADDR 402为PA。图4还示出了组相联CLB的两级缓存块地址后备缓存区(CLB)层次结构,其中,利用ADDR索引CLB1 410和CLB2 420。CLB1中的每个条目至少包括地址标签(AT)411、缓存位置表(CLT)412。在示例实施例中,AT 411存储虚拟地址的一部分,且在不同实施例中,AT 411存储物理地址的一部分。条目可存储附加信息,如,区域信息(RI)413。CLT存储对应区域的缓存块的位置信息(LI)(还称为微页面(micropage))。作为示例,图4示出每个区域四个LI。发明人的实验研究表明每个区域8至16个LI(如,每个区域8至16个数据单元和/或缓存块)是划算的且是有效的。位置信息编码多处理器系统内可找到对应的缓存块的位置。例如,位置信息可包含其中可找到数据单元的缓存的身份。位置信息还可包含在该缓存内可找到数据单元的位置,称为其在相关联的缓存中的路信息。替代地,位置信息可包含其中可找到数据单元的节点的身份和/或可包含提供关于其位置的信息的符号。例如,符号“MEM”可指示可在存储器中找到数据单元。在示例实施例中,符号“不知道(don’t know)”指示对应的数据单元的位置未记录在对应于该区域的CLT中。
区域信息(RI)413存储适用于该区域的属性。例如,这可为该区域的物理地址(或其一部分)以及一些区域分类信息(如,如果该区域仅存在于该CLB而不存在于其他CLB,则为编码)。
MUX 416选择其中AT 411匹配ADDR 402的TAG部分的CLT,且MUX 415基于ADDR 402的LI-OFFSET部分选择对应于所请求的缓存块的LI 414。如果存储在所选择的LI中的缓存身份对应于L2缓存440,则使用地址402的INDEX部分和位置信息414的一部分形成用于访问L2缓存440中的所请求的数据单元的地址417。在组相联的L2缓存440的示例中,该部分包含与其中存储所请求的数据单元的相关联的路对应的信息。在示例实施例中,使用ADDR 402的一部分和区域信息RI 413中存储的物理地址中的一些形成L2索引。如果存储在所选择的LI中的缓存身份对应于L1缓存430,则以类似方式形成用于访问L1缓存430中的所请求的数据单元的地址418。
对于包括具有相同关联性的组相联缓存的缓存层次结构,每个LI中的比特的数量取决于路的数量和CLB覆盖的缓存层次结构的缓存的数量。对于无效模式(“MEM”),可保留一个LI值。在此实施方式中,(一个或多个)LI比特的数量等于以2为底的(一个或多个)路的数量的对数加上以2为底的CLB覆盖的缓存级的数量的对数再加一(如,log2(路的数量)+log2(级的数量)+1)。如果不同的缓存级的路的数量变化或如果使用组相联缓存以外的缓存,则其他LI表示可以是可能的。在示例实施例中,LI的大小可远小于地址标签的大小。可使用6个LI比特对在每个级具有16路相关联的缓存的2级缓存层次结构进行编码。
图4示出如下示例实施例,其中,L1缓存430和L2缓存440中的每个条目分别具有分别与其缓存块(DATA)431和441相关联的反向指针(BP)432和442。在不同实施例中,BP指针指向在CLB2 420中或在CLB1 410中的其各自相关联的CTE。CLB2 420中的每个CTE包含地址标签(AT)421、CLT 422、CLB1指针(CIP)423和区域信息(RI)425。如果CLB2条目具有存在于CLB1 410的对应的CLT,则其CIP将指向该条目。在该情况下,CLB1 410将包含该区域的最新信息。在该情况下,CLB1中的CLE被识别为有源(active)CLB条目,而CLB2 420中的区域的CLB条目包含无源(passitive)条目。CLB2 420可向一个或多个复用器(MUX)424提供级和路信息。在示例实施例中,如果CLB1 410包含区域的有源条目,则CLB2 420可包含该区域的无源条目。
在示例实施例中,当可以在CLB1 410中找不到匹配的CTE时,在CLB2 420中寻找对应的CTE,且该对应的CTE复制到CLB1,而CLB1中的旧的条目复制到CLB2 420。这些操作可被称为“溢出和填充”或简称为“溢出/填充”,其可在图4中被表示为SPILL和FILL。溢出可发生在包容型缓存将数据单元逐出到下一级从而为新的数据单元让出空间,可从下一缓存级引入(填充)该新的数据单元。将在不同的CLB级之间执行类似的溢出/填充活动,其中,CLB条目在CLB级之间移动,因为CLB级构成包容型层次结构。在示例实施例中,目录DIR在CLB层次结构的根部,最高级CLB进行溢出/填充。
在示例实施例中,可与溢出/填充活动同时地发起对所请求的数据单元的访问。
在示例实施例中,CLB层次结构是包容型的,但缓存层次结构L1430、L2 440和更高级的缓存不强制包容性。一个或多个缓存可将数据返回(450)到CPU 401。
在示例实施例中,多级CLB实施方式的CLB的内容保持与他们管理的多级缓存系统的数据单元的位置一致。在缓存层次结构中移动(包括但不限于由来自CPU的对数据单元的请求、数据单元的逐出、预提取活动和一致性活动导致的移动)的数据单元导致在CLB的一个或许多中对其对应的位置信息的更新。例如,在图4中,从L2缓存440逐出数据单元441可涉及以下步骤:跟随其相关联的BP 442指针以找到可存在于CLB2 420中的其对应的CTE;以及更新其对应的位置信息以指向数据单元的新位置(如,存储MEM符号)。如果对应的CLB2的CLE的CIP指针是有效的,则跟随CIP以找到CLB1 410中的其对应的CTE以及更新其与缓存块相关联的位置信息。在示例实施例中,如果存在有效的CIP指针,则不更新CLB2中的条目。在示例实施例中,仅更新有源CLT。
在使用无标签的缓存系统(如,存储在缓存中的数据单元不具有与其相关联的地址标签的缓存系统)的示例实施例中,在CPU 401请求位于不同存储装置中的各种缓存块时可发生多种不同类型的事务。例如,图4中描绘的节点可以是由若干这种缓存节点组成的较大多处理器系统的子系统(或节点)。使许多节点中的缓存的数据保持一致可以涉及缓存一致性协议,其可包括窥探和/或基于目录的一致性。一致性协议可向图4中描绘的节点发送一致性请求(外部请求(EXTERNAL REQUEST))。这些请求可首先转向CLB2 420,其可确定该缓存系统不具有所请求的缓存块(CLB2未命中或CLB2命中具有无效(inactive)CIP和保持存储器模式值的所请求的缓存块的位置信息)。如果是,不涉及关于数据缓存L1和L2(称为一致性过滤)的进一步动作,但可更新有源CLT中的对应的LI以跟踪与数据单元相关联的新位置。否则,CLB2查找可提供所请求的位置信息(CLB2命中和保持缓存块的位置的所请求的缓存块的位置信息)或者其可确定CLB1 410存储相关联的位置信息(CLB2命中和有效CIP)。在后一种情况下,CLB1 410中的查找可确定所请求的缓存块的位置或缓存块不存在于该缓存子系统中。CLB1中对应的位置信息包含存储器模式。取决于一致性请求(例如,无效请求、读取请求或独占性读取请求)的属性,一致性协议可对所请求的数据单元执行一些操作且可能改变其状态。有源CLT中的对应的LI还可被更新以跟踪与数据单元相关联的新位置。
尽管图4中所示的节点包括两个缓存级,在示例实施例中,也可使用其他数量的级来集合节点,且节点可包含一个以上的CPU。此外,在示例实施例中,节点中缓存级的数量和CLB级的数量可变化。
示例实施例还可应用于具有共享由CLB管理的缓存的若干CPU的系统。例如,图5示出了根据示例实施例的由两个CPU节点(580和590)构建的示例系统,每个CPU节点均在其自己的一级缓存层次结构内具有一个CLB1(CLB1A 503和CLB1B 513)和专用L1缓存(504和514)。图5的示例系统还包含共享的L2缓存523(有时被称为末级缓存LLC),其在两个CPU501、511之间被共享。在图5的示例系统中,共享的L2缓存523包括以数据505和反向指针(BP)506为特征的条目。
CLB1(513或503)中的查找基于由其相应的CPU(501、511)生成的地址502、512例如使用类似于CLB1 410的技术选择单个LI。如由CLB1A 503和CLB1B 513中的两个所示的CLT条目发起的三个箭头(包括517)指示的,所选择的LI可识别位置在对应的L1缓存(分别为504和514)中、在L2缓存523中或在其他节点(分别由570和571示出)中。在此示例中,CLB1A503识别共享的L2缓存523中的访问的数据505,而CLB1A 503识别其访问的数据在其L1缓存514中为505(由实线箭头示出)。如果其他节点识别为存储数据,则执行在其CLB中的查找以确定所请求的缓存块在其(一个或多个)专用缓存内的精确位置。
减少计算机系统中侧门(side-door)的存在可以是有利的,该侧门的存在可以允许安全性攻击,如,Spectre、Meltdown以及其他侧信道攻击。
处理器不按顺序执行独立指令,企图隐藏由繁忙的功能单元导致的延迟或存储器访问延迟。在示例实施例中,处理器不拖延而会尝试将指令流中的后续操作调度至可用功能单元。在完成时,在重排序缓存区(ROB)中对指令排队。指令被正式提交且在他们从ROB退出时对系统中的其他处理器和/或处理器核外部可见。在所有之前的指令已经退出时,指令可仅从重排序缓存区退出。
现在讨论推测执行的一些方面,其可涉及缓存的安全性。
参考图1的示例计算机系统,相比于访问缓存和存储器,CPU 101可更快地执行指令。为了对此进行补偿,CPU可执行推测工作。推测工作的示例包括开始沿着可以是错误路径的执行路径执行指令、按照与程序顺序不同的顺序执行指令以及在数据的第一请求之前将数据预提取到缓存中。
在一些处理架构中,处理器可推测下一指令以引进程序(在分支或函数调用的情况下)和/或应当由负载返回的值。在一些这种情况下,评估第一指令的处理器不能确定是否应当执行程序中的下一指令。这种情况可由将虚拟地址转换成物理地址以及随后检查位置的访问许可时的延迟导致。作为示例,如果程序中的下一指令尝试经由读取操作访问存储器位置A,则确定程序是否有这么做的许可会花一些时间。尽管处理器等待以确定其是否具有读取A的许可,但如果最终确定不许可该访问,只要其“擦除”读取的软件可见效果,其就可推测性的执行读取。
在一些情况下,推测可源自错误预测的分支。分支预测是处理器用于降低未执行的推测指令的数量的技术。分支涉及分支目标的计算。条件分支还涉及用于确定是否“采用”该分支的分支条件的评估。分支目标缓存区(BTB)可存储从最近执行的分支指令的地址到分支目标地址的映射。保持最近分支结果的记录的另一硬件组件用来确定是否采用该分支。
Spectre和Meltdown攻击利用CPU缓存作为信息泄露的主要来源。基于缓存的侧信道攻击是安全漏洞,其中,攻击者在受害程序执行时利用缓存行为获取关于受害程序的信息,且然后作用于该信息以攻击主系统。具体地,这些情况依赖于攻击者能够区分缓存命中和未命中。
一些基于缓存的攻击可利用定时信道作为攻击媒介的一部分。这些定时信道可利用可测量的存储器和/或页面表访问延迟差以监控受害者行为。定时攻击的示例包括Prime+Probe和Flush+Reload。
在Prime+Probe攻击中,首先,攻击者通过利用其自己的缓存块填充一个或多个组来准备好缓存,且随后允许执行受害程序。在已经执行受害程序后,攻击者通过再访问其之前准备的缓存块并测定这些访问的时间来调查缓存。较长的访问时间(即,缓存未命中)指示受害程序已经触及映射到相同组的地址,从而逐出攻击者的缓存块。
Flush+Reload攻击可具有与Prime+Probe类似的目的,但可依赖于在攻击者和受害程序之间的共享虚拟存储器(如,共享的只读库或页面去重)和通过虚拟地址清除的能力。在Flush+Reload攻击中,攻击者可识别特定的缓存块,而不只是识别缓存组。Flush+Reload攻击可通过清除感兴趣的(一个或多个)共享的缓存块且随后允许受害程序执行而开始。在已经执行受害程序后,攻击者可重新加载之前逐出的(一个或多个)缓存块,同时测定访问的持续时间以确定缓存块是否被受害程序预加载。
Meltdown和Spectre代表了一类最近发现的缓存定时侧信道攻击,其利用无序推测执行对缓存状态的影响。Meltdown打破了使应用无法访问任意系统存储器的机制。Spectre误训练(mis-train)现代处理器中的分支预测器以诱导应用访问其存储器中的任意位置。在引起推测执行之后,两种攻击使用定时侧信道(具体地,Flush+Reload)识别哪个地址被处理器推测性访问。通过引起(经由地址计算)依赖于之前特许的读取访问的非特许的读取访问的推测执行,攻击可以能够访问特许的核心存储器。
Meltdown和Spectre攻击表明CPU缓存可被推测执行的指令污染。即使消除了推测指令的软件可见效果,微架构效果仍可保留。此外,Meltdown和Spectre攻击表明从受害存储器访问到攻击者存储器访问可利用软件依赖关系,使得攻击者可以增加Flush+Reload攻击可执行的地址的范围以除了共享的存储器之外还包括非共享的存储器位置。
总之,由于(如,由稍后不应当执行的指令的推测执行导致的)微架构状态变化,各种缓存实施方式(包括图1至图5中描绘的示例系统)可易受包括Spectre和Meltdown的侧信道攻击,该微架构状态变化可通过其自己的处理且有时还通过未被允许访问数据的其他处理观察到。
设计缓存系统以降低安全性攻击(如,侧信道攻击)的漏洞可能是有利的。一些缓存系统可考虑是否允许执行存储器指令的处理对其访问的地址执行该存储器指令。在一些缓存系统中,在发出存储器指令时,不执行访问许可检查。然而,至少对于一些存储器指令,在指令提交时执行访问许可检查。可通过TLB检查访问许可。访问许可可随时间变化(如,通过TLB无效,其使一个或若干条目无效并在下一访问时强迫重新加载TLB),且可仅在提交时应用访问许可。尽管从架构角度看,后期的访问许可检查可以是可接受的,但后期的许可检查可以允许未许可的推测指令改变缓存的状态,这可允许秘密信息在过程之间被泄露。
可利用额外字段扩展示例实施例(包括图3和图4中描绘的示例)以实现与保护缓存系统相关联的实施例。
在示例实施例中,图3的DTLB 303的每个条目的净负荷被扩展以还对用于对区域的访问的访问许可进行编码。使用地址302的全虚拟地址(可能包括任何处理ID(又名地址空间标识符,ASID)、虚拟机ID(如,VMID)以及可能包括对虚拟地址的其他特定扩展)访问DTLB303。还扩展地址标签ATAG 304以存储全虚拟地址的对应的比特。在发出存储器指令时检查CLB中的访问许可。违反访问许可导致缓存层次结构中无缓存块移动或状态改变,以及CPU被通知存储器指令违反访问许可。
在示例实施例中,扩展图4的区域信息RI 413,以还对用于对区域的访问的访问许可进行编码。使用地址402的全虚拟地址(可能包括任何处理ID(又名地址空间标识符,ASID)、虚拟机ID(如,VMID)以及可能包括对虚拟地址的其他特定扩展)访问CLB1 410。还扩展地址标签AT 411以存储全虚拟地址的对应的比特。在发出存储器指令时检查CLB中的访问许可。违反访问许可导致缓存层次结构中无缓存块移动或状态改变,以及CPU被通知存储器指令违反访问许可。
在示例实施例中,执行区域或页面的访问许可改变(如,TLB无效)还涉及移除(或通过一些其他手段无效)CLB1 410中的对应的条目。然而,L1缓存430和L2缓存440中的通过在其CLT 412中存储的位置信息(LI)指向的缓存块可被逐出(有时称为强行逐出)。
在示例实施例中,针对具有标记的缓存的系统执行访问许可改变(如,TLB无效)还涉及移除(或通过一些其他手段无效)图3中描绘的DTLB 303中的对应的条目。可以进行访问许可的有效改变的对上述图3和图4的扩展分别在图7和图6中描绘且在下面更详细的描述。
在示例实施例中,填充来自CLB2 420的CLB1 410条目(图4中的FILL箭头)还包括访问TLB(图4中未示出)的步骤。从TLB读取的访问许可作为访问许可AP存储在扩展的区域信息(RI)中。区域信息还被扩展为存储TLB重新加载比特(TR)。在CLB1 410接收访问许可改变(如,TLB无效)时,其设置对应区域的TR,但不逐出CLB条目或使其无效。这将强迫新的TLB重新加载(访问在CLB1 410填充期间使用的TLB)读取(可能修改的)访问许可比特。然而,由于CLB1 410条目未从CLB1 410移除或无效,可不逐出缓存块。
在示例实施例中,可包括附加机制以处理发出存储器指令的时间与之后提交的时间之间的访问许可改变。在示例实施例中,如果访问许可改变(可能通过在检查初始缓存访问许可的时间与提交指令的时间之间接收TLB无效),则流水线(pipel ine)将重新检查其访问许可。这可应用于如图3所示的标记的缓存的扩展功能和/或如图4中所示的无标签的缓存。在示例实施例中,这通过以下方式实施:在对CLB1 410和DTLB 303的访问许可改变分别发生时,设置每个飞行中(in-fl ight)指令(即,在发出和提交之间的指令)的RECHECK比特。只要设置了RECHECK比特,就有必要在提交时重新检查访问许可(如,通过分别执行图3中的DTLB 303查找或图4中的CLB1 410查找)。在另一示例实施例中,受访问许可改变影响的飞行中指令被识别且这些指令被强制在提交时重新检查其许可。
在示例实施例中,缓存的一部分可包括随机索引值(RIV),其与在缓存中存储的缓存块相关联且用来识别缓存块在装置的存储器中的位置。随机索引值(RIV)可存储在区域的区域信息(RI)413中。例如,存储在该字段中的RIV比特的数量可从单个比特变化到用于索引系统中的缓存的最大数量的比特。在示例实施例中,初始化RIV以存储对应用未知的随机值。在示例实施例中,RIV可用来确定待在处理器访问缓存时使用的索引。在示例实施例中,通过对RIV比特与一些地址比特进行异或运算以计算缓存索引或通过比特的一些其他逻辑变换,形成随机索引值。RIV比特还可直接用作到缓存的索引比特,而不需要任何逻辑变换。可使系统中的一些缓存完全依赖于用于其索引的地址比特,而其他缓存依赖于随机索引。
在示例实施例中,DTLB 303还可将具有随机索引值(RIV)的字段添加到其净负荷。该页面的所有缓存块可使用RIV计算其索引。(假设4k字节的页面大小和64字节的缓存块大小,每个页面具有64个缓存块。)在示例实施例中,存在比特(PB)字段可添加到DTLB 303净负荷,存储与页面上的多个缓存块对应的多个比特(如,64比特)。
现在假设RIV索引仅应用于一个缓存级(如,L1),每次将缓存块存储在该缓存中时,设置对应的PB比特,且每次其被逐出时,清除该比特。以此方式,TLB可以告知何时逐出一组中的最后的缓存块。在示例实施例中,在逐出TLB条目时,还逐出仍存在于L1中的任何缓存块。然而,假设比L1大小大得多的TLB范围,这不应当产生太多性能问题。实际上,了解哪些TLB条目仍具有有效L1缓存块会促进TLB的替换逻辑,以抑制用L1缓存中存在的缓存块替换条目,且可以替代地选择另一TLB条目来逐出,这可改进性能。
图6示出了可以如何如上所述地利用更多区域信息扩展图4的CLB1 410的示例实施例(扩展的CLB1标记为610)。清楚起见,图4中的不改变的一些组件已经在图6中省略了。CPU 601产生可由VA+ASID+VMID组成的虚拟地址。虚拟地址的一部分(CI)用来索引CLB1610且将其一部分与存储在索引的组中的CLB1 610条目(仅示出一个条目)中的所有地址标签(AT)611进行比较。每个条目包含字段的缓存位置表(CLT)612(存储区域的缓存块的LI)、物理地址(PA)614、区域分类比特(P)615、随机索引值(RIV)616、TLB重新加载比特(TR)617和访问许可(AP)618。处理器产生的虚拟地址的一部分与组中的所有条目的AT 611进行比较(640)。如果存在匹配,则该条目的字段用来访问对应区域的RIV 616,其至少部分用来索引L1缓存,并且对应缓存块的位置信息(LI)用来在该缓存内找到正确的缓存级(如,L1缓存)和相关联的路。
如果存在未命中(索引的CLB1 610组中没有AT 611与处理器601产生的地址匹配),则发起TLB 620中的查找以检索物理地址(PA)622和访问许可(AP)623。如果在TLB 620中存在与虚拟地址标签(VAT)621的匹配,则匹配的TLB 620条目的PA 622用来执行CLB2630中的查找且使用来自匹配的CLB2 630条目的信息以及PA 622和AP 623来创建新的CLB1610条目。同时,如果这是系统中唯一的CLB1 610条目,则新的随机数被写入RIV 616、TR617未被设置且P 615被设置。
图7示出了可以如何针对其条目中的每一个利用更多字段扩展图3的DTLB 303的示例实施例(由TLB 710描绘)。CPU 701产生由VA+ASID+VMID组成的虚拟地址。虚拟地址的一部分(TI)用来索引TLB 710且将其一部分与存储在索引的组中的TLB条目(仅示出一个条目)的虚拟地址标签(VAT)711进行比较(740)。每个条目包含字段存在比特(PB)712(每个页面的缓存块存储一个比特)、物理地址(PA)714、随机索引值(RIV)716、TLB重新加载比特(TR)717和访问许可(AP)718。处理器产生的虚拟地址的一部分与组中的所有条目的虚拟地址标签VAT 711进行比较。如果存在匹配,则该条目的字段用来访问存储器层次结构。RIV716用来索引L1缓存以找到适当组,将该组的所有缓存块的地址标签(AT)与物理地址进行比较。
图7中描绘的TLB 710与图6的CLB1 610的类似之处在于二者都存储PA、RIV、AP、TR以及一些每个缓存块位置信息(如,PB 712存储关于页面中的哪些缓存块被存储在L1中的信息)。因此,TLB 710可被认为是缓存位置缓存区(CLB)的形式。
以下部分概括上述示例实施例的特征可以如何降低各种安全性攻击。以下说明适用于图6和图7描述的示例实施例以及其他示例实施例。
Meltdown攻击涉及过程间攻击,其中,攻击过程可以促进被攻击过程推测性地访问攻击者的地址空间并留下可揭露秘密的微架构状态下的轨迹。Meltdown攻击部分依赖于以下事实:未被许可的推测指令被允许影响微架构状态。在发出时执行的早期的许可检查(如,对于导致图6和图7的扩展所建议的)将足以用来减少这种攻击(即使架构实施的其他部分(如,共享的分支预测器状态)也可以是固定的)。
Spectre攻击涉及对过程自己的地址空间的推测访问的副作用,其可以将数据从过程的一个部分泄露到过程的已经被设计成不能对其进行访问的代码的部分。一个这种示例是使代码能够跨出安全隔离架构(如,实时(JIT)执行沙盒),并且访问过程中的由于安全隔离架构而应当在界外的数据。通过允许推测(以及稍后不执行的)访问导致的微架构副作用通过非推测访问(被执行的)是可观察的,如,通过测量定时以确定数据是否存储在缓存中,来激活该安全漏洞。
可利用这种类型的推测的攻击的示例包括flush+reload和prime+probe,flush+reload依赖于能够对推测性加载的数据的非推测性命中,prime+probe依赖于推测性加载的数据逐出非推测性加载的数据。
在flush+reload中,攻击者清空选择的一组数据的缓存,然后使其控制的数据间接地从推测负载被推测性地加载到缓存中(如,加载controlled_data[speculative_data])。攻击者然后可以测定访问其受控数据中的所有元素的时间以查看哪个被缓存,从而推断出推测数据的值。如果推测性加载的数据可访问非推测负载,则该攻击可成功。
在prime+probe中,使用相反方法。首先,以每个受控数据元素的缓存中的索引比特中的一些是已知的方式将受控数据加载到缓存中。攻击者然后将推测数据加载到缓存中,其逐出受控数据元素中的一个。攻击者然后能够测定加载推测数据元素中的每个的时间以确定逐出哪个,从而获得关于推测信息的信息。如果推测性加载的数据逐出非推测性加载的数据,则该攻击成功。
通过区分推测性加载的数据和非推测数据可减少这种攻击,可选地,同时,降低保护推测负载的性能成本。即,在推测时可以从DRAM取出推测数据,但是仅在其不再是推测的时,才可以使其在缓存层次结构中的效果可见。
prime+probe攻击的一部分涉及以下事实:攻击者知道关于特定缓存级的每个缓存块的缓存索引。这种攻击者可以在攻击之前完全填充其组中的一个或许多,然后在攻击之后测定对准备好的缓存块的访问的时间以推断一些关于缓存的秘密信息。然而,如果缓存块的随机索引值是未知的,则填充组和/或基于在攻击之后的某些访问的定时推断秘密信息可变得更加困难。本文描述的示例实施例可以分别使用CLB1 610条目和TLB 710条目的随机索引值(RIV)字段来减少这种攻击。RIV可包括随机数,其对于应用(包括攻击者)是未知的且可至少部分用来产生缓存访问的索引比特。
图6和图7示出了缓存系统利用RIV产生随机缓存索引。如上所述,相当好地,CLB1610和TLB 710中的随机索引值616、716被初始设置为对任何应用未知的随机数。以下描述基于图6和图7。
周期性地改变随机索引值可进一步减少prime+probe攻击。随机索引还可使设计侧信道“prime+probe”安全性攻击更困难,因为监视的数据的索引以及用于恶意探测访问的索引是不容易知道的。这种攻击涉及确定用于在能够建立攻击之前填充组的足够区域的动态索引。动态索引可以增加攻击的难度(如,增加时间),包括通过以比攻击者可以访问缓存块更快的速率主动改变缓存块的动态索引。
在示例实施例中,可以选择的速率动态改变CLB1 610和TLB 710中的区域的随机索引值。在改变随机索引值时,区域的位置信息(LI)指向的缓存块可被复制到新的随机索引值识别的新的组。
在示例实施例中,当分别通过其LI指向的或通过其PB记录的最后的缓存块从使用随机索引值的缓存移除以计算其随机索引值时,区域的随机索引值能够被改变为新的随机数。在此情况下,随机索引值能够被改变为新的随机值而不移动任何缓存块。例如,参照图6,如果CLB1 610的随机索引值616字段仅用来计算L1缓存的随机索引值616且CLT 612确定区域的最后的缓存块从L1缓存逐出,则CLT的区域的随机索引值616能够被改变为新的随机数而不移动L1缓存中的任何缓存块。图7的类似示例依赖于PB 712以确定其页面之一的最后的缓存块何时被逐出以允许有效的随机索引值716更新。
在示例实施例中,系统检测尚不具有在使其随机索引值改变的选择的时间段内改变其随机索引值的区域,即使其缓存块中的一些可以由于随机索引值改变而被重新定位。这允许选择的随机索引值改变时间段,同时在较长的时间段限制将缓存块重新定位至具有L1中存在的数据的区域/页面。
无标签的缓存可以展现较高的关联性,因为其关联性的成本仅对数地增长其LI的大小。例如,可利用又一个LI比特实现使所有缓存的关联性加倍。高关联性本身线性地使“prime+probe”侧信道攻击代价更高。
在较高关联性缓存组织的情况下,替换算法变得不那么有影响力了,允许无标签的缓存容易支持随机替换。由于许多侧信道攻击利用替换算法的知识(如,LRU)建立其攻击,切换到随机替换使它们在统计上更难于预测,这导致较长的攻击时间。不仅随机替换数据还随机保护数据的方法可以使得难以确定随机索引值。尽管随机替换能够期望产生较低效率的缓存行为,但大的关联性将使性能差别与最优的替换相比相对小。
缺乏包容性可以允许无标签的缓存降低存储整个缓存层次结构的推测数据。在一些示例计算机系统中,随着数据的引入,推测负载可以留下在每一级存储和/或移除数据的痕迹。无标签的缓存可以允许任意数据缓存策略,这可促进缓存中推测数据的放置,而不影响其他缓存。这种放置可以减少泄露的数据的量,和/或以使对其效果和可以被观察的方式的控制变得更容易的方式促进用于隔离推测的灵活性。
尽管缓存设计的这些特性中的每个能够帮助减少这种攻击,示例实施例可以以下方式组合他们:可以针对性能进行对数据的推测预提取,同时防止推测访问以逐出非推测数据(prime+probe)和/或以来自非推测访问的命中(flush+reload)的形式变得可见。
缺乏包容性和无标签的缓存能够容易地跟踪多个级中的数据可以实现具有可以减少推测访问的单独的推测缓存的无标签缓存。
在示例实施例中,推测负载可以专门存储在推测缓存中,从而减少非推测数据从存储器层次结构的剩余部分逐出(prime+probe)。可降低对来自其他负载的推测缓存中的数据的命中,这可减少通过非推测访问的检测(flush+reload)。在流水线已经提交和/或退出负载且其被确定为是非推测的时,来自推测缓存的数据能够安全地移动进入规则的层次结构,以实现推测预提取的性能优势。在一些实施方式中,可以在指令提交之前完成向非推测的转换。在示例实施例中,一旦能够确定指令不再是推测的且要被执行就完成向非推测的转换。
通过减少对推测性加载的数据的命中和/或使得难于从推测负载导致的逐出(prime+probe)中学习,将RIV分别引入到CLB和TLB中可允许保护缓存层次结构免受这种攻击。该方法可以组合以下效果:高关联性、随机索引和缺乏强制包容性,以提供用于加载和存储推测数据的安全区缓存。推测负载能够存储在安全缓存中且被标记为推测的。一旦推测被解析,则在误推测的情况下能够安静地逐出数据。否则,其为推测的标记被清除,且从这点来说,其还可存储在缓存层次结构的其余部分中。
在示例实施例中,L1缓存可以被设计成减少侧信道攻击。在示例实施例中,L1缓存可以展现32路关联性、随机索引、随机替换和跟踪推测性加载的数据。跟踪推测性加载的数据可以减少对推测数据的命中,这可减少flush+reload攻击。减少prime+probe攻击可以涉及选择难于确定的随机索引值,这可允许增加关联性,以及利用随机索引比特掩盖数据存储在缓存中的位置。
在示例实施例中,可偶尔改变区域的随机索引值。例如,如果攻击者确定区域的索引,则可在攻击者访问该区域之前改变随机索引值。在示例实施例中,可以选择的时间段和/或频率改变一个或多个随机索引值。在示例实施例中,改变随机索引值的时间段和/或频率可以基于攻击的速度和/或选择的安全性级别进行选择。在示例实施例中,区域的子集可具有偶尔改变的随机索引值,因为每次首先引入区域或在逐出区域中的最后的缓存块时,可以无偿改变索引比特。如果区域的动态索引比特在其具有存在于缓存中的数据时改变,则可逐出和重新存储那些缓存块,但是可以不针对这些缓存块搜索L1缓存,因为可以通过看具有L1缓存中存在的数据的CLB条目找到他们。
在示例实施例中,由于非包容型缓存层次结构,针对存储器请求返回的缓存块可以在安装在L1缓存中时不安装在L2缓存中。在L1缓存逐出时并且只要认为这样做是适当的(如,通过一些缓存放置启发引导),缓存块可以安装在L2缓存中。对于推测访问,缓存块可以仅安装在安全的L1缓存中和/或被标记为推测的,这可减少非推测访问,同时使他们接近处理器和/或处理器核以促进推测预提取。当推测完成且确定指令被执行时,缓存块可以移动进入适当位置以用于未来的再使用。
在示例实施例中,状态机(SM)可以将数据引入安全的缓存或引入推测缓存中。在示例实施例中,状态机可以决定哪个缓存块安装在L1缓存和/或L2缓存中以及还决定何时推动(promote)他们。在一些实施例中,处理器可通知状态机存储器请求何时变成非推测的,如,何时知道它不再是恶意侧信道攻击的一部分。如果状态机正在处理长延迟的DRAM访问且其所有在前的分支已经被解析(以及不执行推测指令的其他潜在原因),则处理器可通知状态机存储器请求不再是推测的且其可以安全地安装在一些其他缓存中。如果在数据从DRAM返回时缓存块仍被认为是推测的,则从L1缓存满足存储器请求且缓存块被标记为推测的。
为了简单起见,本文的一些说明描述了用于可以如何定位缓存块和/或将其返回到请求CPU的技术。一些示例未详细描述缓存块内包含的请求的字被选择和/或返回到CPU的各种方式,但这种细节对本领域技术人员是明显的。
为了简单起见,本文的一些说明描述了处理缓存层次结构的数据并且描述了独占型缓存层次结构。本领域技术人员可以理解所描述的实施例可以被扩展为涵盖包容型存储器层次结构和非独占型存储器层次结构。
虽然上面描述的示例实施例结合单处理器系统和多处理器系统(如,分别关于图1和图2在上面说明和描述的)可是可用的,根据示例实施例的CLB可结合单处理器系统示出,也可与多处理器系统一起使用。
包括在附图中讨论的和/或呈现的示例实施例的本公开的主题可在各种架构中实现。在示例实施例中,缓存可存储在以下组件中、由以下组件访问和/或由以下组件控制:一个或多个软件组件(如,在一个或多个处理器上执行的线程或过程);软件库,如,存储在存储器中且通过操作系统和/或应用的过程和/或线程访问的一组指令;和/或在非临时计算机可读介质上存储的可由处理器执行的一组指令。在示例实施例中,缓存可存储在一个或多个硬件装置中、由其访问和/或控制。在示例实施例中,这种硬件装置可包括处理电路系统,如,但不限于,分别具有一个或多个处理器核的一个或多个处理器。这种处理器可包括中央处理单元(CPU);图形处理单元(GPU);多核CPU或GPU的核;算术逻辑单元(ALU);数字信号处理器;微控制器和/或微计算机;片上系统(SoC);现场可编程门阵列(FPGA);可编程逻辑阵列(PLA);专用集成电路(ASIC);模块化逻辑装置,如,包装的逻辑芯片;和/或能够以限定方式响应和执行指令的任何其他装置。在示例实施例中,缓存可存储在诸如以下的相同和/或不同类型的组件的组合中、由其访问和/或受其控制:单处理器或多处理器计算机中的多个处理器和/或处理核;串联操作的两个或更多个处理器,如,CPU和GPU;利用ASIC的CPU和/或由处理器执行的软件。示例实施例可包括单个装置的组件,如,包括存储、访问和管理缓存的一个或多个CPU的计算机。示例实施例可包括多个装置(如,具有CPU的两个或更多个装置,其通信以访问和/或管理缓存)的组件。示例实施例可包括包含在服务器计算装置中、服务器计算机中、一系列服务器计算机中、服务器场中、云计算机中、内容平台中、移动计算装置中、智能手机中、平板电脑中或机顶盒中的一个或多个组件。示例实施例可包括直接通信的组件(如,多核处理器的两个或更多个核)和/或间接(如,经由总线、通过有线或无线信道或网络、和/或经由诸如微控制器或仲裁器的中间组件)通信的组件。示例实施例可以分别由装置或组件执行的缓存管理器的多个实例为特征,其中,这种实例可同时、连续和/或以交替方式执行。示例实施例可以在两个或更多个装置或组件上分布缓存管理器的实例为特征。
示例实施例可包括组件,其包括在存储器中存储的缓存和计算机可读指令。存储器的非限制示例包括但不限于:可再写非易失性存储器装置(包括,例如,闪存存储器装置、可擦写可编程只读存储器装置或掩码只读存储器装置);易失性存储器装置(包括,例如,静态随机访问存储器装置或动态随机访问存储器装置);磁存储介质(包括,例如,模拟或数字磁带或硬盘驱动);以及光存储介质(包括,例如,CD、DVD或蓝光盘)。具有嵌入的可再写非易失性存储器的存储器的示例包括但不限于:存储器卡;和具有嵌入的ROM的介质(包括但不限于ROM磁带)等。示例实施例可包括和/或利用有形或非暂时性计算机可读存储介质(如,随机存取存储器(RAM)、只读存储器(ROM)、永久性大容量存储装置(如,硬盘驱动)、和/或能够存储和记录数据的任何其他类似数据存储机制)的存储器装置。存储器可被配置成存储用于一个或多个操作系统和/或用于实现本文描述的示例实施例的计算机程序、程序代码、指令或其一些组合。存储器可包括通用串行总线(USB)闪存驱动、存储器棒、蓝光/DVD/CD-ROM驱动、存储器卡和/或其他类似计算机可读存储介质。在示例实施例中,缓存、计算机程序、程序代码和/或指令或其一些组合可经由网络接口从远程数据存储装置加载到一个或多个本地存储器和/或一个或多个本地处理器。在示例实施例中,缓存、计算机程序、程序代码和/或指令或其一些组合可从另一本地存储器和/或另一本地处理器或组件加载。
尽管上面在某些示例计算机架构的语境下进行了描述,但缓存以许多其他设置方式存在于计算机系统内以及在计算机系统外,且前述实施例同样适用于这种其他语境。这种使用的示例是虚拟存储器系统,其从慢的高容量存储(如,磁盘或FLASH存储器)缓存数据到可利用动态RAM实现的较快且较小的高容量存储器中。计算机系统中的缓存的其他示例包括但不限于磁盘缓存、网络缓存和名称缓存。这种缓存的组织和缓存机制可与上述缓存的不同,如,组大小的变化、组的实施方式和关联性等。不管缓存机制的实施方式如何,本文描述的示例实施例可适用于实现各种缓存方案。
例如,所公开的实施例描述与各种缓存层次结构相关联的系统和方法。然而,示例实施例旨在涵盖包括在本发明的精神和范围中的替代方案、修改和等效物。进一步地,在示例实施例的具体描述中,阐述了大量具体细节以提供对本发明的全面理解。然而,本领域技术人员将理解可以在不具有这种具体细节的情况下实践各种实施例。
尽管以一些组合方式在示例实施例中描述了本实施例的特征和元素,但每个特征或元素可以不与示例实施例的其他特征和元素一起而被单独使用,或者与本文公开的其他特征和元素一起或不与本文公开的其他特征和元素一起以各种组合方式被使用。可在有形地体现在计算机可读存储介质中的计算机程序、软件或固件中实现本申请中提供的方法或流程以通过专用计算机或处理器执行。
该书面的说明书使用所公开的主题的示例以使任何本领域技术人员实践该主题,包括制造和使用任何装置或系统以及执行任何并入的方法。主题的专利范围由随附权利要求限定且可包括本领域技术人员想到的其他示例。这种其他示例旨在落入随附权利要求的范围内。
Claims (20)
1.一种用于访问装置的缓存中的数据的方法,所述方法包括:
在缓存区中存储所述缓存中存储的缓存块的访问许可;
对于涉及所述缓存块的存储器指令,至少部分基于所述缓存块的所述访问许可,确定是否允许所述存储器指令访问所述缓存块;以及
在确定不允许所述存储器指令访问所述缓存块的条件下,抑制改变所述缓存。
2.根据权利要求1所述的方法,还包括:
在改变所述缓存块的所述访问许可的条件下,使所述缓存中的所述缓存块无效。
3.根据权利要求1所述的方法,其中,
所述缓存区包括缓存表,所述缓存表包括缓存表条目,该缓存表条目识别所述缓存块在所述装置的存储器中的区域,并且
存储所述缓存块的所述访问许可包括在所述缓存块的所述缓存表条目中存储所述访问许可。
4.根据权利要求1所述的方法,其中,
所述缓存区包括缓存表,所述缓存表包括缓存表条目,该缓存表条目识别所述缓存块在所述装置的存储器中的区域和所述缓存表的区域信息,并且
存储所述缓存块的所述访问许可包括在所述缓存表的所述区域信息中存储所述访问许可。
5.根据权利要求1所述的方法,还包括:
在确定允许未决存储器指令访问所述缓存块之后改变所述缓存块的所述访问许可的条件下,至少部分基于所述访问许可重新确定是否允许所述未决存储器指令访问所述缓存块。
6.根据权利要求1所述的方法,还包括:
在所述缓存区中存储随机索引值;
在所述缓存中,在至少部分基于所述随机索引值的位置处,存储所述缓存块;以及
在确定允许所述存储器指令访问所述缓存块的条件下,通过至少部分基于所述随机索引值确定所述缓存块的位置来访问所述缓存块。
7.根据权利要求6所述的方法,还包括:
以选择的速率周期性地改变所述随机索引值。
8.根据权利要求7所述的方法,还包括:
在将所述随机索引值改变为新的随机索引值的条件下,将所述缓存块移动到至少部分基于所述新的随机索引值的新的位置。
9.根据权利要求6所述的方法,还包括:
在从所述缓存移除所述缓存块的条件下,改变所述随机索引值。
10.根据权利要求1所述的方法,还包括:
在将所述缓存块作为所述存储器指令的推测负载进行存储的条件下,将所述缓存块标记为推测的;
在将所述存储器指令的所述推测负载解析为非推测的条件下,将所述缓存块标记为非推测的;以及
在将所述存储器指令的所述推测负载解析为误推测的条件下,从所述缓存移除所述缓存块。
11.一种系统,包括:
存储缓存块的缓存;和
至少一个处理器,其被配置成:
在缓存区中存储所述缓存块的访问许可;
对于涉及所述缓存块的存储器指令,至少部分基于所述缓存块的所述访问许可,确定是否允许所述存储器指令访问所述缓存块;以及
在确定不允许所述存储器指令访问所述缓存块的条件下,抑制改变所述缓存。
12.根据权利要求11所述的系统,其中,
所述缓存区包括缓存表,所述缓存表包括缓存表条目,该缓存表条目识别所述缓存块在存储器中的区域,并且
所述至少一个处理器被配置成将所述访问许可存储在所述缓存块的所述缓存表条目中。
13.根据权利要求11所述的系统,其中,
所述缓存区包括缓存表,所述缓存表包括缓存表条目,该缓存表条目识别所述缓存块在存储器中的区域和所述缓存表的区域信息,并且
所述至少一个处理器被配置成将所述访问许可存储在所述缓存表的所述区域信息中。
14.根据权利要求11所述的系统,其中,所述至少一个处理器还被配置成:在改变所述缓存块的所述访问许可的条件下,使所述缓存中的所述缓存块无效。
15.根据权利要求11所述的系统,其中,所述至少一个处理器还被配置成:
在所述缓存区中存储随机索引值;
在所述缓存中,在至少部分基于所述随机索引值的位置处,存储所述缓存块;以及
在确定允许所述存储器指令访问所述缓存块的条件下,通过至少部分基于所述随机索引值确定所述缓存块的位置来访问所述缓存块。
16.根据权利要求15所述的系统,其中,所述至少一个处理器还被配置成:以选择的速率周期性地改变所述随机索引值。
17.根据权利要求16所述的系统,其中,所述至少一个处理器还被配置成:在将所述随机索引值改变为新的随机索引值的条件下,将所述缓存块移动到至少部分基于所述新的随机索引值的新的位置。
18.根据权利要求15所述的系统,其中,所述至少一个处理器还被配置成:在从所述缓存移除所述缓存块的条件下,改变所述随机索引值。
19.根据权利要求11所述的系统,其中,所述至少一个处理器还被配置成:
在将所述缓存块作为所述存储器指令的推测负载进行存储的条件下,将所述缓存块标记为推测的;
在将所述存储器指令的所述推测负载解析为非推测的条件下,将所述缓存块标记为非推测的;以及
在将所述存储器指令的所述推测负载解析为误推测的条件下,从所述缓存移除所述缓存块。
20.一种非临时性计算机可读存储介质,包括指令,该指令在被处理器执行时使所述处理器执行操作,所述操作包括:
在缓存区中存储缓存中存储的缓存块的访问许可;
对于涉及所述缓存块的存储器指令,至少部分基于所述缓存块的所述访问许可,确定是否允许所述存储器指令访问所述缓存块;以及
在确定不允许所述存储器指令访问所述缓存块的条件下,抑制改变所述缓存。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862638450P | 2018-03-05 | 2018-03-05 | |
US62/638,450 | 2018-03-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110232031A true CN110232031A (zh) | 2019-09-13 |
CN110232031B CN110232031B (zh) | 2024-09-20 |
Family
ID=65685221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910164064.8A Active CN110232031B (zh) | 2018-03-05 | 2019-03-05 | 保护缓存免受侧信道攻击的方法、系统和存储介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10915466B2 (zh) |
EP (1) | EP3537305B1 (zh) |
KR (1) | KR102287758B1 (zh) |
CN (1) | CN110232031B (zh) |
TW (1) | TWI798370B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111241599A (zh) * | 2019-09-19 | 2020-06-05 | 中国科学院信息工程研究所 | 一种处理器芯片安全依赖的动态识别及维护方法 |
CN111259384A (zh) * | 2020-01-17 | 2020-06-09 | 中国科学院计算技术研究所 | 一种基于缓存随机无效的处理器瞬态攻击防御方法 |
CN111274584A (zh) * | 2020-01-17 | 2020-06-12 | 中国科学院计算技术研究所 | 一种基于缓存回滚以防御处理器瞬态攻击的装置 |
CN111274198A (zh) * | 2020-01-17 | 2020-06-12 | 中国科学院计算技术研究所 | 一种微架构 |
CN111274573A (zh) * | 2019-09-19 | 2020-06-12 | 中国科学院信息工程研究所 | 一种基于访存请求序列的处理器芯片假安全依赖冲突的识别方法 |
CN111414321A (zh) * | 2020-02-24 | 2020-07-14 | 中国农业大学 | 一种基于动态映射机制的cache防护方法及装置 |
CN111638913A (zh) * | 2019-09-19 | 2020-09-08 | 中国科学院信息工程研究所 | 一种基于随机化索引的处理器芯片分支预测器安全增强方法及电子装置 |
CN113779649A (zh) * | 2021-09-08 | 2021-12-10 | 中国科学院上海高等研究院 | 一种针对投机执行攻击的防御方法 |
CN114244581A (zh) * | 2021-11-29 | 2022-03-25 | 西安四叶草信息技术有限公司 | 缓存中毒漏洞检测方法、装置、电子设备及存储介质 |
US20220108013A1 (en) * | 2020-10-06 | 2022-04-07 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by refraining from allocating an entry in a data tlb for a missing load address when the load address misses both in a data cache memory and in the data tlb and the load address specifies a location without a valid address translation or without permission to read from the location |
US11734426B2 (en) | 2020-10-06 | 2023-08-22 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by prevents cache line data implicated by a missing load address from being filled into a data cache memory when the load address specifies a location with no valid address translation or no permission to read from the location |
US11733972B2 (en) | 2020-10-06 | 2023-08-22 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by providing random load data as a result of execution of a load operation that does not have permission to access a load address |
US11797673B2 (en) | 2020-08-27 | 2023-10-24 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by expeditiously initiating flushing of instructions dependent upon a load instruction that causes a need for an architectural exception |
US11868469B2 (en) | 2020-08-27 | 2024-01-09 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by preventing all dependent instructions from consuming architectural register result produced by instruction that causes a need for an architectural exception |
US11907369B2 (en) | 2020-08-27 | 2024-02-20 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by preventing cache memory state from being affected by a missing load operation by inhibiting or canceling a fill request of the load operation if an older load generates a need for an architectural exception |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10116436B1 (en) * | 2017-09-26 | 2018-10-30 | Intel Corporation | Techniques for preventing memory timing attacks |
US11372972B2 (en) * | 2018-03-19 | 2022-06-28 | Intel Corporation | Side-channel exploit detection |
US20190332384A1 (en) * | 2018-04-30 | 2019-10-31 | Hewlett Packard Enterprise Development Lp | Processor architecture with speculative bits to prevent cache vulnerability |
US11169805B2 (en) * | 2018-04-30 | 2021-11-09 | Hewlett Packard Enterprise Development Lp | Dynamic processor cache to avoid speculative vulnerability |
US10929535B2 (en) * | 2018-06-29 | 2021-02-23 | Intel Corporation | Controlled introduction of uncertainty in system operating parameters |
US11055226B2 (en) * | 2018-06-29 | 2021-07-06 | Intel Corporation | Mitigation of cache-latency based side-channel attacks |
US20200034152A1 (en) * | 2018-07-30 | 2020-01-30 | Cavium, Llc | Preventing Information Leakage In Out-Of-Order Machines Due To Misspeculation |
US11068612B2 (en) * | 2018-08-01 | 2021-07-20 | International Business Machines Corporation | Microarchitectural techniques to mitigate cache-based data security vulnerabilities |
US11221957B2 (en) * | 2018-08-31 | 2022-01-11 | International Business Machines Corporation | Promotion of ERAT cache entries |
US11635965B2 (en) * | 2018-10-31 | 2023-04-25 | Intel Corporation | Apparatuses and methods for speculative execution side channel mitigation |
US20210081575A1 (en) * | 2019-09-12 | 2021-03-18 | Microsoft Technology Licensing, Llc | Hybrid mitigation of speculation based attacks based on program behavior |
US11210102B2 (en) * | 2019-11-26 | 2021-12-28 | Arm Limited | Speculative buffer for speculative memory accesses with entries tagged with execution context identifiers |
KR102358108B1 (ko) | 2019-12-09 | 2022-02-07 | 충남대학교 산학협력단 | 소스코드 내 cpu 취약점 탐색 방법 |
KR20210079637A (ko) * | 2019-12-20 | 2021-06-30 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그 동작 방법 |
US11029957B1 (en) | 2020-03-27 | 2021-06-08 | Intel Corporation | Apparatuses, methods, and systems for instructions to compartmentalize code |
CN111898127A (zh) * | 2020-07-02 | 2020-11-06 | 中国科学院信息工程研究所 | 一种可抵抗基于flush操作的Spectre攻击的方法及系统 |
KR102526499B1 (ko) * | 2020-09-28 | 2023-05-02 | 고려대학교 산학협력단 | Fpga 기반 캐시 무효화 방법 및 이를 수행하는 장치 |
WO2022092499A1 (ko) * | 2020-10-30 | 2022-05-05 | 재단법인대구경북과학기술원 | 신뢰가능한 실행 환경을 이용한 캐시 부 채널 공격 탐지 방법 및 장치 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020156962A1 (en) * | 1999-10-01 | 2002-10-24 | Rajesh Chopra | Microprocessor having improved memory management unit and cache memory |
US6519684B1 (en) * | 1999-11-23 | 2003-02-11 | Motorola, Inc. | Low overhead method for selecting and updating an entry in a cache memory |
US20030065890A1 (en) * | 1999-12-17 | 2003-04-03 | Lyon Terry L. | Method and apparatus for updating and invalidating store data |
CN101421706A (zh) * | 2006-04-19 | 2009-04-29 | 高通股份有限公司 | 具有经物理标记的行为的经虚拟标记的指令高速缓存器 |
US20120066474A1 (en) * | 2010-09-13 | 2012-03-15 | International Business Machines Corporation | Real Address Accessing in a Coprocessor Executing on Behalf of an Unprivileged Process |
CN102906703A (zh) * | 2010-02-24 | 2013-01-30 | 先进微装置公司 | 硬件交易存储器的自动暂停及回复 |
US20150143047A1 (en) * | 2013-11-21 | 2015-05-21 | Green Cache AB | Systems and methods for direct data access in multi-level cache memory hierarchies |
CN104679669A (zh) * | 2014-11-27 | 2015-06-03 | 华为技术有限公司 | 高速缓存cache存储器系统及访问缓存行cache line的方法 |
US20170286421A1 (en) * | 2016-03-31 | 2017-10-05 | Arm Limited | Indexing entries of a storage structure shared between multiple threads |
US20190018813A1 (en) * | 2015-03-27 | 2019-01-17 | Intel Corporation | Pooled memory address translation |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4886682B2 (ja) | 2005-05-26 | 2012-02-29 | パナソニック株式会社 | データ処理装置 |
KR101639672B1 (ko) * | 2010-01-05 | 2016-07-15 | 삼성전자주식회사 | 무한 트랜잭션 메모리 시스템 및 그 동작 방법 |
US8682877B2 (en) * | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
-
2019
- 2019-02-26 KR KR1020190022577A patent/KR102287758B1/ko active IP Right Grant
- 2019-02-27 US US16/286,821 patent/US10915466B2/en active Active
- 2019-03-04 TW TW108107018A patent/TWI798370B/zh active
- 2019-03-04 EP EP19160463.6A patent/EP3537305B1/en active Active
- 2019-03-05 CN CN201910164064.8A patent/CN110232031B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020156962A1 (en) * | 1999-10-01 | 2002-10-24 | Rajesh Chopra | Microprocessor having improved memory management unit and cache memory |
US6519684B1 (en) * | 1999-11-23 | 2003-02-11 | Motorola, Inc. | Low overhead method for selecting and updating an entry in a cache memory |
US20030065890A1 (en) * | 1999-12-17 | 2003-04-03 | Lyon Terry L. | Method and apparatus for updating and invalidating store data |
CN101421706A (zh) * | 2006-04-19 | 2009-04-29 | 高通股份有限公司 | 具有经物理标记的行为的经虚拟标记的指令高速缓存器 |
CN102906703A (zh) * | 2010-02-24 | 2013-01-30 | 先进微装置公司 | 硬件交易存储器的自动暂停及回复 |
US20120066474A1 (en) * | 2010-09-13 | 2012-03-15 | International Business Machines Corporation | Real Address Accessing in a Coprocessor Executing on Behalf of an Unprivileged Process |
US20150143047A1 (en) * | 2013-11-21 | 2015-05-21 | Green Cache AB | Systems and methods for direct data access in multi-level cache memory hierarchies |
CN104679669A (zh) * | 2014-11-27 | 2015-06-03 | 华为技术有限公司 | 高速缓存cache存储器系统及访问缓存行cache line的方法 |
US20190018813A1 (en) * | 2015-03-27 | 2019-01-17 | Intel Corporation | Pooled memory address translation |
US20170286421A1 (en) * | 2016-03-31 | 2017-10-05 | Arm Limited | Indexing entries of a storage structure shared between multiple threads |
Non-Patent Citations (2)
Title |
---|
CAROLINE TRIPPEL等: "MeltdownPrime and SpectrePrime: Automatically-Synthesized Attacks Exploiting Invalidation-Based Coherence Protocols", ARXIV, 28 February 2018 (2018-02-28), pages 1 - 11 * |
林帆: "下一代网络安全态势评估系统中数据缓存子系统的设计与实现", 中国优秀硕士学位论文全文数据库, 15 March 2011 (2011-03-15), pages 1 - 75 * |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111638913A (zh) * | 2019-09-19 | 2020-09-08 | 中国科学院信息工程研究所 | 一种基于随机化索引的处理器芯片分支预测器安全增强方法及电子装置 |
CN111638913B (zh) * | 2019-09-19 | 2023-05-12 | 中国科学院信息工程研究所 | 一种基于随机化索引的处理器芯片分支预测器安全增强方法及电子装置 |
CN111241599B (zh) * | 2019-09-19 | 2022-08-23 | 中国科学院信息工程研究所 | 一种处理器芯片安全依赖的动态识别及维护方法 |
CN111241599A (zh) * | 2019-09-19 | 2020-06-05 | 中国科学院信息工程研究所 | 一种处理器芯片安全依赖的动态识别及维护方法 |
CN111274573A (zh) * | 2019-09-19 | 2020-06-12 | 中国科学院信息工程研究所 | 一种基于访存请求序列的处理器芯片假安全依赖冲突的识别方法 |
CN111274198A (zh) * | 2020-01-17 | 2020-06-12 | 中国科学院计算技术研究所 | 一种微架构 |
CN111274198B (zh) * | 2020-01-17 | 2021-11-19 | 中国科学院计算技术研究所 | 一种微架构 |
CN111274584B (zh) * | 2020-01-17 | 2022-07-15 | 中国科学院计算技术研究所 | 一种基于缓存回滚以防御处理器瞬态攻击的装置 |
CN111274584A (zh) * | 2020-01-17 | 2020-06-12 | 中国科学院计算技术研究所 | 一种基于缓存回滚以防御处理器瞬态攻击的装置 |
CN111259384A (zh) * | 2020-01-17 | 2020-06-09 | 中国科学院计算技术研究所 | 一种基于缓存随机无效的处理器瞬态攻击防御方法 |
CN111414321A (zh) * | 2020-02-24 | 2020-07-14 | 中国农业大学 | 一种基于动态映射机制的cache防护方法及装置 |
CN111414321B (zh) * | 2020-02-24 | 2022-07-15 | 中国农业大学 | 一种基于动态映射机制的cache防护方法及装置 |
US11907369B2 (en) | 2020-08-27 | 2024-02-20 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by preventing cache memory state from being affected by a missing load operation by inhibiting or canceling a fill request of the load operation if an older load generates a need for an architectural exception |
US11868469B2 (en) | 2020-08-27 | 2024-01-09 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by preventing all dependent instructions from consuming architectural register result produced by instruction that causes a need for an architectural exception |
US11797673B2 (en) | 2020-08-27 | 2023-10-24 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by expeditiously initiating flushing of instructions dependent upon a load instruction that causes a need for an architectural exception |
US20220108013A1 (en) * | 2020-10-06 | 2022-04-07 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by refraining from allocating an entry in a data tlb for a missing load address when the load address misses both in a data cache memory and in the data tlb and the load address specifies a location without a valid address translation or without permission to read from the location |
US11733972B2 (en) | 2020-10-06 | 2023-08-22 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by providing random load data as a result of execution of a load operation that does not have permission to access a load address |
US11734426B2 (en) | 2020-10-06 | 2023-08-22 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by prevents cache line data implicated by a missing load address from being filled into a data cache memory when the load address specifies a location with no valid address translation or no permission to read from the location |
US11853424B2 (en) * | 2020-10-06 | 2023-12-26 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by refraining from allocating an entry in a data TLB for a missing load address when the load address misses both in a data cache memory and in the data TLB and the load address specifies a location without a valid address translation or without permission to read from the location |
CN113779649A (zh) * | 2021-09-08 | 2021-12-10 | 中国科学院上海高等研究院 | 一种针对投机执行攻击的防御方法 |
CN114244581A (zh) * | 2021-11-29 | 2022-03-25 | 西安四叶草信息技术有限公司 | 缓存中毒漏洞检测方法、装置、电子设备及存储介质 |
CN114244581B (zh) * | 2021-11-29 | 2024-03-29 | 西安四叶草信息技术有限公司 | 缓存中毒漏洞检测方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
TWI798370B (zh) | 2023-04-11 |
KR102287758B1 (ko) | 2021-08-09 |
EP3537305A1 (en) | 2019-09-11 |
US20190272239A1 (en) | 2019-09-05 |
TW201945941A (zh) | 2019-12-01 |
KR20190105507A (ko) | 2019-09-17 |
US10915466B2 (en) | 2021-02-09 |
CN110232031B (zh) | 2024-09-20 |
EP3537305B1 (en) | 2021-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110232031A (zh) | 保护缓存免受侧信道攻击的方法、系统和存储介质 | |
US10657101B2 (en) | Techniques for implementing hybrid flash/HDD-based virtual disk files | |
US10031849B2 (en) | Tracking alternative cacheline placement locations in a cache hierarchy | |
US9182927B2 (en) | Techniques for implementing hybrid flash/HDD-based virtual disk files | |
US4775955A (en) | Cache coherence mechanism based on locking | |
CN100444135C (zh) | 用于短暂高速缓存存储的方法和处理器 | |
US9280300B2 (en) | Techniques for dynamically relocating virtual disk file blocks between flash storage and HDD-based storage | |
JP2020527777A (ja) | レルム階層における目標レルムの無効化 | |
TW201933112A (zh) | 區域融合 | |
TWI768039B (zh) | 多處理器系統、資料管理方法及非暫時性電腦可讀媒體 | |
US20150301952A1 (en) | Multiplexed memory for segments and pages | |
JP2024520742A (ja) | 複数のスレッド間での命令キャッシュのフットプリントの共有 | |
Lersch et al. | An analysis of LSM caching in NVRAM | |
Venkatesan et al. | Ex-tmem: Extending transcendent memory with non-volatile memory for virtual machines | |
Singh et al. | SPX64: A scratchpad memory for general-purpose microprocessors | |
Lersch et al. | Rethinking DRAM caching for LSMs in an NVRAM environment | |
EP0220451B1 (en) | A cache coherence mechanism based on locking | |
US11494300B2 (en) | Page table walker with page table entry (PTE) physical address prediction | |
CN115398410A (zh) | 存储器访问器失效 | |
Cha et al. | Morphable DRAM cache design for hybrid memory systems | |
Yoon et al. | Harmonized memory system for object-based cloud storage | |
Güvenilir | Scalable Virtual Memory via Tailored and Larger Page Sizes | |
Gruss | Cache Covert Channels | |
CN103294613B (zh) | 存储器的访问方法 | |
Liu | EECS 252 Graduate Computer Architecture |
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 | ||
GR01 | Patent grant |