CN111936979A - 在存在推测性读取操作的情况下的缓存控制 - Google Patents
在存在推测性读取操作的情况下的缓存控制 Download PDFInfo
- Publication number
- CN111936979A CN111936979A CN201980024237.4A CN201980024237A CN111936979A CN 111936979 A CN111936979 A CN 111936979A CN 201980024237 A CN201980024237 A CN 201980024237A CN 111936979 A CN111936979 A CN 111936979A
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- speculative
- target data
- master
- 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
- 230000004044 response Effects 0.000 claims abstract description 117
- 238000012545 processing Methods 0.000 claims abstract description 36
- 230000002401 inhibitory effect Effects 0.000 claims abstract description 9
- 230000008859 change Effects 0.000 claims description 44
- 230000001427 coherent effect Effects 0.000 claims description 40
- 230000001960 triggered effect Effects 0.000 claims description 35
- 239000000872 buffer Substances 0.000 claims description 26
- 238000000034 method Methods 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 11
- 238000012546 transfer Methods 0.000 claims description 5
- 230000003139 buffering effect Effects 0.000 claims 1
- 230000000694 effects Effects 0.000 description 9
- 238000012549 training Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 230000007704 transition Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000000116 mitigating effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000009118 appropriate response Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000002955 isolation 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
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
Images
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/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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching 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
-
- 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
- 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/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
一致性控制电路(10)支持从请求方主设备(4)接收的安全推测性读取事务的处理。安全推测性读取事务是如下类型的:其请求目标数据被返回到请求方主设备(4)的请求方缓存(11),同时禁止响应于安全推测性读取事务的其他缓存(12)中的与目标数据相关联的一致性状态的任何变化。作为响应,至少当目标数据被缓存在与第二主设备相关联的第二缓存中时,一致性控制电路(10)和第二缓存(12)中的至少一者被配置为在将目标数据在第二缓存内维持在相同一致性状态中的同时返回安全推测性读取响应。这帮助减轻了推测性边信道攻击。
Description
技术领域
本技术涉及数据处理的领域。
背景技术
数据处理装置可支持指令的推测性执行,其中,在知道指令的输入操作对象是否正确或者指令到底是否需要被执行之前就执行指令。例如,处理装置可具有分支预测器,用于预测分支指令的结果,使得后续指令可在知道分支的真实结果应当是什么之前被推测性地取得、解码和执行。另外一些系统也可支持负载推测,其中从存储器加载的值在真实值被从存储器实际返回之前被预测,以允许后续指令被更快地处理。其他形式的推测也是可能的。
发明内容
至少一些示例提供了一种系统,包括:
具有关联的缓存的多个主设备;以及
一致性控制电路,用于基于向给定缓存中的每个数据项指派多个一致性状态之一的一致性协议管理所述缓存之间的一致性,其中:
所述一致性控制电路被配置为支持从请求方主设备接收的安全推测性读取事务的处理,所述安全推测性读取事务是如下类型的:其请求目标数据被返回到所述请求方主设备的请求方缓存,同时禁止响应于所述安全推测性读取事务的其他缓存中与所述目标数据相关联的一致性状态的任何变化;并且
响应于所述安全推测性读取事务,至少当所述目标数据被缓存在与第二主设备相关联的第二缓存中时,所述一致性控制电路和所述第二缓存中的至少一者被配置为在将所述目标数据在所述第二缓存内维持在相同一致性状态中的同时返回安全推测性读取响应。
至少一些示例提供一种互连,包括:
多个接口,用于与具有关联的缓存的主设备通信;以及
一致性控制电路,用于基于向给定缓存中的每个数据项指派多个一致性状态之一的一致性协议管理所述缓存之间的一致性,其中:
所述一致性控制电路被配置为支持从请求方主设备接收的安全推测性读取事务的处理,所述安全推测性读取事务是如下类型的:其请求目标数据被返回到所述请求方主设备,同时禁止响应于所述安全推测性读取事务的其他主设备的缓存中与所述目标数据相关联的一致性状态的任何变化;并且
响应于所述安全推测性读取事务,至少当所述目标数据被缓存在与第二主设备相关联的第二缓存中时,所述一致性控制电路被配置为在将所述目标数据在所述第二缓存内维持在相同一致性状态中的同时返回或者请求所述第二缓存返回安全推测性读取响应。
至少一些示例提供了一种主设备,包括:
处理电路,能够进行数据访问操作的推测性执行;以及
接口电路,用于向互连发出事务,所述互连用于基于向给定缓存中的每个数据项指派多个一致性状态之一的一致性协议来管理所述主设备的缓存和至少一个其他缓存之间的一致性;
其中响应于所述处理电路推测性地执行读取操作以请求在所述主设备的缓存中不存在的目标数据,所述接口电路被配置为向所述互连发出安全推测性读取事务,所述安全推测性读取事务是如下类型的:请求所述目标数据被返回到所述主设备,同时禁止响应于所述安全推测性读取事务的所述至少一个其他缓存中与所述目标数据相关联的一致性状态的任何变化。
附图说明
根据结合附图阅读的对示例的以下描述,将清楚本技术的更多方面、特征和优点,附图中:
图1示意性图示了具有若干个主设备和用于管理主设备之间的一致性的互连的系统的示例;
图2A和图2B图示了在允许其他缓存中的一致性状态的变化的同时请求将目标数据返回到请求方缓存的一类读取事务的处理;
图3示出了可基于另一缓存中的一致性状态上的变化来得出关于秘密数据的信息的潜在安全性攻击的示例;
图4A至图4C图示了安全推测性读取事务的处理,其保证了在触发了该事务的读取操作保持推测性的同时该事务不会触发另一缓存中的一致性状态变化;
图5示出了图4C的第一替换方式,用于处理安全推测性读取事务命中处于不允许在请求方主设备的缓存中的缓存的一致性状态中的数据时的情况;
图6示出了处理图4C中所示的情况的第二替换方式;
图7示出了用于缓存由多个请求者分配的数据的共享缓存的示例;
图8是示出在与分配了数据的加载操作相关联的推测解决时推测性条目到非推测性条目的提升的方法;
图9示出了图示出响应于由给定请求者触发的读取请求对共享缓存的查找的流程图;
图10示出了基于解决的正确存储器访问的地址来训练数据预取器的示例;并且
图11图示了基于推测性存储器访问的地址来训练数据预取器并且最初将预取数据分配到缓存的推测性区域中的示例。
具体实施方式
数据处理装置可具有安全性机制,用于确保一些秘密信息对于在数据处理系统上运行的某些进程是可访问的,但不能被其他进程访问。例如,进程可被分配给定的特权级别,并且一些数据可以只是具有某个特权级别或更高特权级别的处理器可访问的。存储器保护技术可用于实施期望的存储器访问许可。
最近,已认识到针对未经授权的访问保护秘密数据的这种安全性措施原则上可被一种安全性攻击所规避,这种安全性攻击利用推测性执行和在许多现代处理器中存在的缓存的组合。这种攻击利用如下属性,即推测性执行的指令的效果在推测性执行的指令的任何体系结构效果已被取消之后仍可存留在缓存中。在该攻击的一些变体中,攻击者可训练分支预测器或其他推测机制以哄骗更有特权的代码推测性地执行被设计为使得特权代码访问取决于敏感信息的存储器地址模式的不正确指令序列,从而不能够访问该敏感信息的不那么有特权的代码可使用缓存定时边信道(对于缓存的地址测量访问时间)来探测哪些地址已被更有特权的代码分配到缓存或者从缓存逐出,以给出可允许敏感信息被推断的一些信息。有一些机制可用来针对暴露关于由在相同主设备上执行的推测性读取操作引起的缓存分配中的变化的边信道信息保护主设备自己的缓存(例如,对缓存中的推测性和非推测性数据进行分区)。
然而,发明人认识到,不仅是主设备自己的缓存中的缓存分配的变化可受到推测性执行的读取的影响。在包括具有关联的缓存的两个或更多个主设备以及用于基于向给定缓存中的每个数据项指派若干个一致性状态之一的一致性协议来管理缓存之间的一致性的一致性控制电路的系统中,也可能当读取操作被一个主设备推测性地执行时,这种读取可触发与第二主设备的缓存中缓存的数据相关联的一致性状态的变化。第二主设备的缓存处的一致性状态的这个变化即使在请求方主设备处的原始推测性读取操作随后由于误推测而被取消时也可存留。即使第二主设备的缓存处的一致性状态的该变化没有引起任何数据被逐出或者被新分配到第二主设备的缓存中,一致性状态的变化仍可引起在第二主设备的缓存中服务读取或写入请求所花费的时间上的差异。第二缓存中的访问时间上的这种差异可被攻击者探测到以推断出关于发起了原始推测性读取的请求方主设备所访问的地址的信息。这可允许不能访问秘密数据、但能够访问其一致性状态在第二主设备的缓存中变化了的数据的进程获得可用于推断出用于得出被请求方主设备请求的地址的秘密数据的属性的信息。
在下文论述的技术中,一致性控制电路可支持从请求方主设备接收的安全推测性读取事务的处理,该安全推测性读取事务是如下类型的:其请求目标数据被返回到请求方主设备,同时禁止响应于该安全推测性读取事务的其他主设备的缓存中与目标数据相关联的一致性状态的任何变化。响应于安全推测性读取事务,至少当目标数据被缓存在与第二主设备相关联的第二缓存中时,一致性控制电路和第二缓存中的至少一者可在将目标数据在第二缓存内维持在相同一致性状态中的同时返回安全推测性读取响应。
因此,通过定义请求方主设备可发出来保证无论什么响应被返回的读取事务的类型,安全推测性读取事务不会触发另一主设备的缓存中的一致性状态的变化,这可减轻上述类型的攻击。当读取被推测性地执行时,则这些可触发安全推测性读取事务,而不是另一种形式的事务,从而在第二主设备的缓存处不发生一致性状态的变化并且因此这消除了基于考查在第二缓存中分配的数据来得出关于请求方主设备请求了什么地址的信息的机会。
此方案是不寻常的,因为通常请求方主设备将会发出请求一定数据项被返回的一致性事务,并且将会预期目标数据应当在(基于事务的类型指定的)某个一致性状态中被返回,无论在其他缓存中与该数据相关联的一致性状态如何。这种传统的事务将会要求其他缓存应当触发为了确保目标数据可被返回到请求方主设备并且被存储在请求方主设备的缓存中而要求的一致性状态的任何变化。与之对比,对于安全推测性读取事务,优先是确保在其他主设备的缓存处没有一致性状态的变化,并且确保这一点可能实现的响应被返回,但可让如下事项成为可任选的:目标是否可被实际返回到请求方主设备,和/或数据被以什么一致性状态返回。是否可能返回目标数据可取决于如果目标数据被缓存在另一主设备的缓存中则什么一致性状态与该目标数据相关联。因此,不是在请求方主设备处返回已知的一致性状态并且在第二缓存处实施一致性状态的任何要求的变化,安全推测性读取事务确保了第二缓存处的一致性状态保持相同,但可在请求方主设备处导致不同的结果。
不同的实现方式可按不同的方式响应安全推测性读取事务。
在一个示例中,响应于安全推测性读取事务,当目标数据在如果不改变目标数据在第二缓存中的一致性状态则不会允许在请求方缓存中缓存目标数据的一致性状态中被缓存在第二缓存中时,一致性控制电路或者第二缓存可返回无数据响应,该响应指示出目标数据不能被第二缓存提供,直到触发了安全推测性读取事务的推测性读取操作被解决为非推测性为止。利用此方案,如果目标数据在第二缓存中的当前一致性状态不能适应也在请求方缓存中缓存目标数据,则提供指示出当前不可能将目标数据提供到请求方主设备缓存的响应,并且因此在此情况下,请求方主设备不响应于安全推测性读取事务而接收目标数据。
利用此实现方式,如果请求方主设备接收到无数据响应,则请求方主设备可等待,直到触发了安全推测性读取事务的推测性读取操作已被解决为正确推测为止,并且随后可发出另一事务到一致性控制电路,该另一事务是如下类型的:请求目标数据被返回到请求方缓存,同时允许其他缓存中与目标数据相关联的一致性状态的变化。此时,其他缓存中的一致性状态的变化可能是安全的,因为原始读取不再是推测性的并且因此基于由不正确推测的读取操作引起的一致性状态的变化的安全性攻击将不再是风险(如果原始推测不正确,则基于该推测的继续处理将被取消,从而另一事务不会被发出)。
在替换方案中,取代在第二缓存中的目标数据的当前一致性状态将不会允许在请求方缓存中缓存目标数据时返回指出不能提供目标数据的指示,安全推测性读取响应可改为包括不可缓存读取响应,其确实向请求方主设备提供目标数据,但其禁止请求方缓存对该目标数据的缓存。这可允许推测性执行的读取操作使用由于该特定操作而从第二缓存返回的目标数据,但随后这个返回的数据可被丢弃,而不被缓存,以避免需要在第二缓存中提供一致性状态的任何变化。同样,这防止了攻击者有机会基于从由不正确推测的读取操作触发的一致性状态的变化得出的边信道信息来获得关于秘密数据的信息。
在一些实现方式中,虽然不可缓存读取响应可禁止目标数据以符合一致性协议的一致方式被缓存在请求方主设备中,但请求方主设备仍可具有非一致推测性缓冲器来在推测性读取操作保持推测性的同时缓冲与推测性读取操作相关联的数据,并且响应于不可缓存读取响应,返回的目标数据可被分配到推测性缓冲器中。这可允许在原始推测性读取之后执行的进一步指令根据需要利用返回的目标数据来继续。然而,在推测性缓冲器中的数据和第二缓存中的数据之间不会维持一致性,以避免需要触发第二缓存中的一致性状态的变化。
如果数据在一致性方案的控制之外被保持在这种推测性缓冲器中,则一旦触发了安全推测性读取事务的推测性读取操作被解决为正确推测的,请求方主设备就可向一致性控制电路发出一致升级请求以请求将推测性缓冲器中的目标数据的非一致版本升级到目标数据的一致版本。例如,一致升级请求可以是请求目标数据的最新版本被返回到请求方主设备的请求(例如利用被允许触发其他主设备的缓存处的一致性状态的变化的一致性变化允许事务)。如果目标数据仍被缓存在第二主设备的缓存中,则其可被从第二缓存返回,或者到推测性读取操作被解决之时,第二缓存可不再持有该数据并且该数据可需要被从另一位置取得。通过一旦推测性读取操作被解决则发出重取得目标数据的请求,则这确保了使得在其他位置中持有的目标数据的任何后续变化对于主设备可用,从而主设备不继续使用可能过时的信息。一旦重取得的数据已被返回,则请求方主设备可将此数据分配到其请求方缓存中,而不是在推测性缓冲器中,并且取消该推测性缓冲器条目。或者,一致升级请求可以是对于指出从接收到不可缓存响应起该数据是否变化了的指示的请求。例如,一致性控制电路和/或第二缓存可以跟踪从提供了不可缓存响应起是否发生了对目标数据的任何写入,并且如果是,则通知请求方主设备触发推测性缓冲器条目的取消和最新数据的重取得。
在将目标数据分配到非一致推测性缓冲器之后,响应于确定自从由不可缓存读取响应提供目标数据起对目标数据的改变将引起不正确执行,请求方主设备可取消基于由不可缓存读取响应提供的目标数据而推测性执行的后续操作。这确保了使用了目标数据的可能不一致拷贝(这些拷贝在其他缓存位置中对目标数据的改变之后未被更新)的后续操作被取消以防止不正确的结果。对于对目标数据的改变是否将会引起不正确执行的检测可例如包括确定触发了推测性读取事务的指令是否相对于读取或写入目标数据的任何其他指令或者任何屏障指令被重排序了。
因此,虽然一致性协议可要求不可缓存读取响应禁止在请求方主设备缓存内以一致方式缓存返回数据,但在微体系结构级别有可能在一致性方案的保护之外缓冲此数据,但在此情况中,于是当数据变得非推测性时,则可提供一种机制来检查自从数据被分配到了推测性缓冲器起是否作出了对数据的任何后续改变(例如,重取得数据并且与先前取得的值相比较以检查后来的推测性操作是否可能使用了不一致数据),然后才将数据的任何一致版本分配到请求方主设备的缓存中。
在安全推测性读取事务如上所述触发不可缓存读取响应的实现方式中,在一些情况下,安全推测性读取响应可始终包括不可缓存读取响应,无论第二缓存中的目标数据的一致性状态如何。在此情况下,即使目标数据在第二缓存中错失并且必须被从另一缓存或者主存储器取得,或者即使目标数据在将会允许目标数据也被以一致方式缓存在请求方主设备的请求方缓存中的一致性状态被持有在第二缓存中,不可缓存读取响应仍可被返回以禁止在请求方缓存中的一致缓存。这意味着相同的响应被返回到请求方主设备,无论什么特定的一致性状态在第二缓存中与目标数据相关联,这实现起来可更简单。
或者,不可缓存读取响应可在目标数据在如下一致性状态中被缓存在第二缓存中的情况下被返回:在该一致性状态中,如果不改变在第二缓存中目标数据处的一致性状态,则将不会允许目标数据在请求方缓存中的缓存。然而,如果响应于安全推测性读取事务,目标数据在目标数据在请求方缓存中的缓存将在不改变第二缓存中的一致性状态的情况下被一致性协议所允许的一致性状态中被缓存在第二缓存中,则在此情况下,安全推测性读取响应可改为包括可缓存读取响应,该可缓存读取响应提供目标数据并且允许请求方主设备的请求方缓存以一致方式缓存目标数据。虽然此方案可依据第二缓存中的一致性状态而导致不同的响应,但其意味着当一致性状态不允许在请求方缓存中的缓存时,则数据可被一致地保留在请求方主设备处,使得推测性读取之后的指令可在遵守一致性方案的同时继续使用该数据,有可能改善性能并且消除对于在一旦推测已被解除时检查一致性的防护措施的需要。
类似地,在无数据响应在目标数据在不允许在请求方主设备缓存中缓存的状态中被缓存在第二缓存中时被返回时,可缓存读取响应可在目标数据在允许在请求方缓存中的缓存的一致性状态中被缓存时被返回。
对于安全推测性读取事务和相应的安全推测性读取响应的所有上述示例,当目标数据在根据一致性协议管理的其他缓存中不存在时,一致性控制电路可从在多个主设备之间共享的另一级缓存或者存储器获得目标数据。也就是说,安全推测性读取事务可发起线填充操作来从另一级缓存或存储器获得目标数据并且将目标数据分配到给定缓存中,而不需要等待触发了安全推测性读取事务的任何推测性操作被解决。这是实现安全推测性读取事务的一个优点(相比于替换技术,在该替换技术中,取而代之,使用标准读取事务,但只是确保在其他缓存中不触发一致性状态变化,该读取事务的发出被延迟,直到与该读取相关联的任何推测已被解决并且确定地知道该读取被正确地推测为止)。如果直到读取被解决为正确为止完全没有发出事务,则在当前没有缓存持有目标数据的情况下,线填充请求将必须被推迟,直到推测已被解决为止。由于线填充操作通常比从缓存访问数据慢得多,所以延迟线填充请求将引起性能的显著降低。与之对比,对于安全推测性读取事务,虽然从另一缓存获得目标数据有时可需要被延迟以便确保一致性状态不会由于仍未解决的推测性访问而在其他缓存中变化,但到另一级缓存或主存储器的最长时延操作仍可利用安全推测性读取事务被提早发起。这帮助改善性能。
将会明白,安全推测性读取事务可不是支持的唯一类型的读取事务。请求方主设备可倾向于在至少对被认为可能敏感的数据执行推测性读取操作时使用安全推测性读取事务。然而,可实现其他类型的读取事务来用于非推测性读取操作或者对已知不敏感的数据的推测性读取操作中。这种其他类型的读取事务可在允许另一主设备的缓存中的一致性状态的变化的同时返回目标数据。另一方面,对于一些实现方式,所有读取(推测性的或者非推测性的)都可触发安全推测性读取事务。这可以更高效,尤其是在如下系统中:在这些系统中,大多数甚至全部读取都被推测性地执行并且不能安全地确定数据是否被认为敏感。因此,一般而言,提供对安全推测性读取事务的支持对于针对边信道攻击的风险进行防护可以是有用的,但到底哪些读取操作触发安全推测性读取事务或者另一类型的读取事务在实现方式与实现方式之间可以是变化的。
除了与特定主设备相关联的缓存以外,系统还可包括在主设备之间共享的一个或多个共享缓存。共享缓存可根据若干个请求者之一的请求被访问,其中每个请求包括给定的主设备或者在给定的主设备上执行的给定进程。在一些情况下,同一主设备上的不同进程可被识别为分开的请求者。这种共享缓存同样可引起推测边信道攻击的潜在机会。为了改善性能,可能希望一个请求者可访问由一不同的请求者分配的数据,一旦该数据已被非推测性地分配。然而,对于推测性分配的数据,如果一个请求者可在由另一请求者推测性分配的数据保持推测性的同时访问该数据,则这可允许攻击者控制确实能够访问秘密信息的一个请求者在不正确推测的读取之后将数据分配到缓存中的取决于秘密信息的地址,然后另一请求者将能够从共享缓存访问定时信息确定哪个地址被分配了并且因此得出关于该秘密的信息。这将是不合需要的。
用于解决此问题的一个技术可以是操作共享缓存以使得引起了对于共享缓存推测性分配数据的分配请求者被跟踪。响应于读取被分配请求者推测性地分配到共享缓存的数据的请求,在触发该数据的分配的操作保持推测性的同时,共享缓存可在该请求是由除了分配请求者以外的请求者触发的时返回错失响应,指出该数据未被缓存在共享缓存中。因此,在分配请求者本身可命中推测性分配的数据并且因此可受益于与将此信息缓存在共享缓存中相关联的性能增益的同时,其他请求者还不能看到该数据,直到任何推测被解决并且确定该数据已被正确分配为止。这避免了攻击者能够对于共享缓存中的不正确推测性分配获得边信道信息。
换言之,响应于给定的请求者读取由分配请求者推测性地分配到共享缓存的目标数据的请求,在触发该数据的推测性分配的操作保持推测性的同时,共享缓存可在给定的请求者是分配的请求者时返回提供目标数据的命中响应,并且在给定的请求者是除了分配请求者以外的请求者时返回指出该数据在该另一级缓存中不存在的错失响应。
在当命中由不同请求者分配的推测性数据时返回错失响应的情况下,如果被推测性分配到缓存的数据是脏污的,则该缓存也可在返回错失响应之前或者与返回错失响应并行地将该脏污数据写回到另一级缓存或存储器。
另一级缓存或存储器可具有用于区分推测性和非推测性数据的机制,使得如果相应的推测性操作被确定为被不正确预测,则推测性数据可被识别并且被丢弃。共享缓存也可确保如果数据被从另一级缓存或存储器推测性地取得到共享缓存中,则其是在清洁状态中被获得的,使得在推测最终是不正确的情况下不需要将该数据写回到另一级缓存或存储器。
可按不同方式来实现共享缓存。在一个示例中,共享缓存可具有推测性缓存区域和分开的主缓存区域。推测性分配的数据可被存储在推测性缓存区域中,而非推测性分配的数据可被存储在主缓存区域中。推测性分配的数据可响应于指出触发该数据的分配的操作已被分配请求者解决为非推测性的指示而被转移到主缓存区域。虽然在一些情况下,每个推测性操作的解决可被单独通知到共享缓存以便触发推测性分配的数据到非推测性主缓存区域的提升,但这可导致与共享缓存的大量通信。如下这样可能是更高效的:将每个缓存条目与推测性执行的操作的某个群组关联起来,然后一旦该群组中的每个操作已被正确地解决,则这可触发与该群组中的操作相关联的任何条目从推测性缓存区域到主缓存区域的转移。
在另一示例中,共享缓存中的单个推测性缓存区域可在所有请求者之间共享。在此情况下,推测性缓存区域的每个条目可额外地指定识别哪个请求者是分配请求者的元数据,从而可以控制来自给定请求者的请求应当被视为命中还是错失。或者,可提供若干个不同的分开的推测性缓存区域,每个对应于给定的请求者,并且在此情况下,来自给定请求者的请求可只在专用于该特定请求者的推测性缓存区域中命中。
或者,推测性和非推测性数据都可被缓存在共享缓存的同一区域内。在此情况下,共享缓存可存储与共享缓存中的每个数据项相关联的元数据,该元数据指示出该数据是否保持推测性,并且如果该数据保持推测性,则指示出哪个请求者是分配请求者。在此情况下,给定的操作或者操作群组被解决为是正确推测的于是可触发与由该操作或操作群组分配的项目相关联的元数据的更新以指示出该数据现在是非推测性的。
在元数据被用于区分哪些条目与每个请求者相关的情况下,仍可应用分区方案来限制可被分配给给定请求者来存储推测性数据的条目的最大数目,或者共享区域的大小被选择为大到足以使得缓存条目的冲突是不那么可能的。这对于降低一个请求者逐出另一请求者的推测性数据的可能性可能是有用的,否则这种逐出可能有泄漏定时信息的风险。
在即使第一请求者可能将推测性数据分配到了共享缓存的情况下第二请求者也可感知共享缓存中的缓存错失的情况下,一些实现方式可允许第二请求者也对相同地址分配第二条目。在此情况下,一些额外的跟踪信息可被指派给与第一和第二请求者相关联的条目中的一者或两者,使得当推测被解决时,于是分开的条目可在维持一致性的同时被合并成单个条目。或者,其他实现方式可通过如下方式来降低为共享缓存中的相同地址处理分开的条目的复杂度:要求当给定的条目在推测解决时被从推测性提升到非推测性时,同一地址的任何额外的推测性条目被无效。
攻击者基于推测性边信道可利用的另一领域可以是用于基于预取地址将数据推测性地预取到缓存中的数据预取器的存在,该预取地址是基于处理电路先前执行的数据访问操作的地址来预测的。例如,数据预取器可具有电路来基于对先前访问的地址的监视来预测预取地址,例如检测地址是否被以给定的步幅模式(在相继地址之间具有规律偏移的地址序列)执行。攻击者可能够控制给定处理器的操作,使得执行的步幅模式以某种方式取决于秘密信息,例如,如果步幅从其开始的基础地址或者相继地址之间的偏移取决于秘密的一部分的话。因此,在推测性执行的指令的地址上训练的数据预取器可通过揭露基础地址或数据步幅而泄漏信息。
在下文论述的一个技术中,具有缓存和数据预取器的一种系统可被控制,以使得缓存和数据预取器禁止被数据预取器基于预取地址推测性预取的数据触发非推测性数据从缓存的逐出,其中该预取地址是基于推测性执行的数据访问操作的先前访问的地址来预测的。这可按不同方式来实现。
在一个示例中,数据预取器可只基于与已经被解决为由处理电路正确推测的数据访问操作相关联的先前访问地址来预测预取地址。通过仅基于已解决的数据访问操作的正确计算的地址来训练数据预取器,而不是基于仍是推测性的并且可能不正确的地址,这意味着不正确访问的地址不会影响未来的预取预测,降低了数据预取器泄漏信息的风险。
一种替换方案可以是提供一种包括主缓存区域和推测性缓存区域的缓存。此情况下的缓存可被布置为将由数据预取器预取的数据分配到推测性缓存区域,并且一旦确定了对于给定数据项的预取地址的预测是正确的,则该缓存可将该给定数据项转移到主缓存区域。利用此方案,可以基于仍待解决的推测性存储器访问的地址来训练数据预取器,但通过避免基于推测性访问污染主缓存区域,直到知道推测性访问正确为止,这防止了任何非推测性数据被推测性预取的数据逐出,从而攻击者不能基于对主缓存区域的内容的分析来获得关于哪些数据地址被预取了的信息。在处理器保持在分配推测性数据的同一操作状态中的同时,推测性缓存区域的内容可以是另外的数据访问操作可访问的。然而,分配到推测性缓存区域的数据可响应于表示状态的变化的事件被丢弃,该变化可能指示出到将不能够访问在该事件之前可访问的一些数据的代码的转变(例如,该事件可以是异常、特权级别的变化、安全性模式的变化等等),从而从更有特权的代码到攻击者的不那么有特权的代码的转变例如将使得尚未被确认为正确的先前推测性预取的数据不可访问。
因此,无论对于预取器采取这些方案的哪一者,通过消除由于从基于尚不知道正确的推测性执行数据访问操作的先前访问地址预测的地址预取数据而从缓存逐出非推测性数据的选项,这减小了上述类型的推测边信道攻击的范围。
图1示意性图示了数据处理系统2的示例(例如,集成电路或片上系统),该数据处理系统2包括若干个主设备4、6以及用于管理主设备和其他缓存之间的一致性的互连10。在此示例中,主设备包括用于执行通用处理的中央处理单元(CPU)4和用于执行图形处理的图形处理单元(GPU)6。CPU和GPU包括缓存11、12。一些主设备可具有多于一个缓存,例如与特定核心9相关联的第1级缓存和在核心之间共享的第2级缓存(为了简洁,在图1中示出了每个主设备单个缓存)。主设备4、6的每一者具有用于与一致互连交互的一致性接口16、22。例如,一致性接口16、22可负责响应于来自相关主设备的缓存访问而生成要求的一致性协议事务,并且利用适当的响应和一致性状态的变化来响应来自互连10的窥探请求。将会明白,这只是一些主设备的一个示例,也可提供其他类型的主设备,例如用于控制通过网络的数据发送和接收的网络接口控制器,用于控制数据在屏幕上的显示的显示控制器,或者用于控制例如数据在存储器和外围设备之间的传送的DMA(直接存储器访问)控制器。可使用的一致性协议的示例是由英国剑桥的 Ltd提供的4ACE和5CHI一致性协议,但将会明白本文论述的技术也可被应用到其他一致性协议。
一致互连10包括若干个从属接口24,用于与各个主设备4、6的一致性接口16、22通信,以及若干个主接口26,用于与从属设备通信,所述从属设备例如是存储器33或者用于对在主设备上执行的操作提供密码支持的密码单元34。在此情境中,从属接口24是在被使用的总线协议(例如上文论述的协议)中充当从属(响应事务而不是发起事务)的接口。因此,与主设备4、6通信的接口24是从属接口,因为其响应由主设备4、6处的相应主接口16、22发起的事务。类似地,主接口26是在总线协议中充当主设备的接口,负责发起相应的从属接口将会响应的事务。因此,互连10的与从属设备33、34通信的接口26是主接口。虽然在图1中没有示出,但一些设备可通过主端口和从属端口两者与互连10通信。一致互连10可包括在主设备之间共享的系统缓存30。与必须从主存储器33取得相应数据的情况下相比,系统缓存30提供对数据的更快访问。
如图1中所示,一致互连10可包括窥探过滤器40,用于跟踪哪些数据地址被缓存在某些主设备4、6处。窥探过滤器40可用于通过允许一致互连10确定数据何时未被缓存在特定主设备处来减少窥探流量。窥探过滤器40不是必要的,并且在一些实施例中可提供不尝试跟踪在每个主设备处缓存的数据的互连10。在此情况下,当一个主设备4、6对于可与其他主设备共享的数据发起读取或写入事务时,一致互连10可触发窥探事务被发出到可具有来自相同地址的数据的缓存拷贝的每个其他主设备,并且管理这些其他主设备处的一致性状态的变化和/或在必要时利用数据的更时新版本来响应请求方主设备。然而,如果有很多个主设备,则向所有缓存的主设备广播窥探的这个方案可能是复杂的并且可导致在系统2内交换大量的一致性流量。
通过提供可至少部分跟踪哪些地址在各个主设备处被缓存的窥探过滤器40,这也可帮助减少窥探流量的量。在一些情况下,窥探过滤器40可精确地跟踪存储在每个主设备的缓存中的数据,使得一致互连10可确切地确定哪个数据被缓存在何处。因此,当从发起方主设备接收到指向可能可共享的数据的事务时,则互连10可从窥探过滤器40的内容确定哪些其他主设备在缓存来自相同地址的数据并且向窥探过滤器中指示的那些主设备发送窥探事务,避免了向当前没有存储该数据的其他主设备发送窥探的需要。
然而,其他窥探过滤器可不精确地跟踪缓存的内容。例如,可以使用一种过滤器方案,其确保了窥探过滤器40避免伪阴性,确保了在缓存11、12中存在的任何数据在窥探过滤器中被记录为存在,但其允许一些假阳性,使得有时窥探过滤器40可指示出数据被缓存在给定的主设备中,但实际上该主设备已经无效了该数据。允许一些不精确性的这个方案可减少更新窥探过滤器的开销,因为其意味着不是来自主设备的缓存11、12的每个无效都必须被反映在窥探过滤器处。
在一些情况下,系统缓存30和窥探过滤器40可被组合。例如,如果系统缓存30充当缓存被主设备的缓存11、12的任何一者所缓存的所有地址的包含性缓存,则每个缓存条目可指定识别出哪些缓存已缓存了哪些地址的额外元数据,使得一致互连10可从系统缓存30确定数据是否被缓存在特定主设备处,而不需要窥探该主设备。
图2示出了处理一致性变化允许读取事务的示例。这是这样的一类读取事务:其不能被保证不通过其他缓存处的一致性状态的变化暴露秘密信息,并且因此可能不能被安全地响应于一些推测性读取操作而被使用。该读取事务指定目标地址并且将与该地址相关联的目标数据返回到发出了该请求的请求方主设备4、6。在下面的示例中假定发出了请求的请求方主设备是CPU 4并且基于该请求窥探的第二主设备是GPU 6,但将会明白这可以是反过来的。
图2A图示了该读取事务导致第二主设备6的第二缓存12中的命中的示例。因此,当请求方主设备4发出一致性变化允许读取事务时,互连10向第二主设备6发出窥探请求。作为响应,第二主设备在其缓存中查找目标地址并且确定其是否将目标数据保持在有效状态中。如果目标数据在第二主设备的缓存中的当前一致性状态将不允许目标数据被同时缓存在请求方主设备4的缓存11中,则第二主设备的缓存将目标数据在第二缓存12中的一致性状态改变到与被缓存在请求方主设备处的该数据相符的状态。
例如,一致性协议包括对于给定的缓存,对于每个缓存线定义以下的一致性状态之一:
·已修改(该缓存持有该缓存线的唯一有效拷贝,并且已修改了该数据);
·独占(该缓存具有该缓存线的唯一有效拷贝,并且该数据是清洁的);
·共享(该缓存持有该缓存线的有效拷贝,但此缓存没有修改该数据的权利,其他缓存可能也持有有效拷贝,或者可能没有持有有效拷贝);以及
·拥有(该缓存持有该缓存线的有效拷贝,该拷贝是脏污的,并且因此如果该缓存线被逐出,则此缓存将需要将该数据写回到存储器,其他缓存可能也持有有效拷贝,或者可能没有持有有效拷贝);
·无效(该缓存没有持有每个缓存线的有效拷贝)。
例如,如果被窥探的目标数据的一致性状态是独占或者已修改,则为了在请求方主设备处缓存该数据,这可要求将第二主设备的缓存12中的一致性状态降级到共享或拥有。由读取事务触发的特定一致性状态转变可取决于使用的特定一致性协议(将会明白上文描述的MOESI协议只是一个示例)。在任何情况下,无论在第二主设备6的缓存12中窥探的数据的一致性状态如何,该数据都经由互连10被返回到请求方主设备4,然后请求方主设备将返回的数据缓存在其缓存11中。
图2B示出了当该请求在第二主设备的缓存12中错失(并且也在由一致互连管理的任何其他主设备的缓存中错失)时对一致性变化允许读取事务的响应。在此情况下,当第二主设备6被互连10窥探时,第二主设备返回指示出该数据在第二主设备6的缓存12中不存在的错失指示,这触发了一致性控制电路(互连)10向另一缓存或主存储器33发出线填充请求。在一些情况下,如果窥探过滤器40指示出数据在第二主设备缓存中不存在,则可能不需要实际窥探第二主设备6并且接收错失指示,取而代之,互连10可响应于从请求方主设备4接收到的读取事务而直接触发线填充请求。
因此,如果读取事务在由互连10管理的所有其他缓存中错失,则线填充请求被触发来从另一缓存(例如,下游互连或存储器控制器中的系统缓存)取得数据,或者从存储器33取得数据。与数据已在主设备的缓存之一中可用的情况相比,可花更长的时间来服务线填充请求。最终,另一缓存或存储器向互连返回数据,然后该数据被提供到请求方主设备4并且被缓存在请求方主设备的缓存11中。
因此,无论该请求是在主设备的缓存中命中还是错失,利用一致性变化允许读取,请求方主设备4始终获得数据并且将其缓存在其自己的缓存中。如果必要,一致性状态的变化可在其他主设备缓存处被触发以允许请求方主设备缓存该数据。将会明白,图2A和图2B所示的读取事务的示例只是可以支持的一种类型的读取事务,并且一致互连10也可支持其他类型的读取事务,这些其他类型的读取事务可按与图2A和图2B所示不同的方式被处理,但可能可以导致第二主设备的缓存12处的一致性状态的变化。
CPU 4或GPU 6或其他主设备可支持指令的推测性执行,包括可触发读取操作来从存储器读取数据的指令。在可信应用中执行的推测性加载可利用缓存定时边信道向非可信应用泄漏数据。这种边信道攻击的一个示例在“Spectre”攻击中描述。该攻击使用以下(或类似的)代码序列:
unsigned long untrusted_value=...;
if(untrusted_value<arr1->length){
unsigned char secret=arr1->data[untrusted_value];
unsigned char value2=arr2->data[secret*64];
}
如果CPU误推测了“if”条件(引发误推测的机制包括分支预测器的恶意训练,和/或出界阵列索引的提供),则CPU推测性地从存储器取得第一值并且可能取得第二值。通过使用缓存边信道,可以推断出秘密的值,因为第二访问使用的缓存集合是取决于数据的并且可利用简单的定时边信道来检测。可通过探测本地缓存层次体系或者通过探测与推测性访问相关联的一致效果来利用这种边信道。
上述示例中的条件在尝试提取秘密值时将始终为假,因为这存在于第一阵列的边界之外,即,该访问将永不会变成非推测性的。如果推测性状态永不被允许影响非推测性状态,则上述的定时边信道将变成无效的。对于缓存,推测性加载可通过在不考虑其推测性/非推测性状态的情况下安装和逐出缓存线来影响非推测性状态;特别地,以可被推测线测量的方式影响非推测线。实现这种隔离的一种方式是利用以下属性:
·推测性访问应当被安装在缓存的隔离部分中并且不应当被允许逐出非推测性缓存线或者来自其他主设备的推测性缓存线,或者(通过定时)可见地影响其状态。
·加载引退(或者更早地变成非推测性的)将推测性缓存线提升到非推测性缓存线。
·硬件预取器应当被视为推测性访问;或者在提升时而不是在推测性访问时训练以避免边信道。
例如,对于单核心中的缓存,推测性区域可被添加,专用于推测性数据并且与主缓存区域分离。推测性区域中的缓存线在加载引退时被提升成非推测性缓存线并且如果该加载被制止则被无效。在提升时,推测性缓存线在需要时逐出非推测性缓存线并且该线被无效。缓存的推测性区域可在情境切换/系统调用(其发生自早前描述的加载的制止)或者推测屏障时被清除。核心也可在回滚误推测的分支时清除推测线,如果被配置为这样做的话(这提供了针对非可信代码保护应用的更严格保证)。
然而,对于攻击者有用的边信道信息也可通过由另一主设备上的推测性读取操作触发的一个主设备的缓存中的一致性的变化而被泄漏。也就是说,图2A和图2B中所示的读取事务的类型可泄漏这种秘密信息,因为攻击者可使用缓存定时边信道来探测可由如图2A所示的读取事务触发的第二主设备6的一致性状态的变化。图3示出了在如上所述具有用于管理一致性的一致互连的系统中这种攻击可如何被攻击者作出的示例,该攻击者可控制在第一主设备(例如CPU 4)和第二主设备(例如,GPU 6)上执行的处理。
如图3中所示,在步骤50,攻击者控制第二主设备6向其缓存12中分配对于攻击者可访问的数据的阵列。分配到第二主设备的缓存中的阵列不需要是包含秘密信息的任何阵列,而只是被分配到其缓存中以使能对基于秘密的变化的检测。
在步骤52,攻击者指挥在第一主设备4上执行的脆弱软件读取秘密信息。脆弱软件可例如是能够访问对于攻击者自身而言不是直接可访问的秘密的更有特权的软件。例如,攻击者可使用分支预测器状态的恶意训练或者向脆弱软件提供出界阵列索引以便欺骗脆弱软件在等待边界检查操作被解决的同时读取秘密。这可使得脆弱软件在其应当在访问其他数据时访问秘密。将会明白,存在某个范围的方式,攻击者可用这些方式来确保脆弱软件读取秘密。
在步骤54,攻击者可指挥脆弱软件基于秘密(或者基于秘密的比特的子集)计算索引,并且在步骤56,使得脆弱软件读取先前在步骤50被分配到第二主设备缓存的阵列,其中读取的阵列元素是基于在步骤54计算的索引来选择的。步骤56处的读取可触发读取事务被发出到如图2A所示的一致互连10并且因此窥探请求被发出到第二主设备6。在步骤58,窥探请求于是可触发第二主设备缓存12中的目标数据(阵列的索引元素)的一致性状态的变化。
在步骤60,攻击者随后可为对第二主设备的缓存12中的先前分配的阵列的不同元素的访问测量缓存访问定时以估计哪个元素被第一主设备访问了。例如,如果阵列先前是在独占状态中被分配的,其中第二主设备6是持有该数据的有效拷贝的唯一主设备,并且来自第一主设备4的读取事务随后使得索引的元素转变到要求修改数据的许可的非独占状态,则对索引的元素的写入访问将比对阵列的其他元素的访问被服务得更慢。即使在这种攻击时的单个尝试不足以识别被第一主设备4访问的确切索引,这也可被重复若干次以使用统计方法来推断访问的索引。因此,在步骤62,可从第二主设备的缓存中的缓存访问定时推断出关于秘密的一些信息。
这种形式的攻击是可能的,因为步骤52至56的推测性操作被允许触发另一主设备的缓存中的一致性状态的变化,即使尚不知道这些操作是否被正确地执行了。在实践中,攻击者将能够控制主设备1执行步骤52至56的方式将依赖于不正确推测,使得主设备1临时执行其操作,但随后检测到这些操作是不正确的并且倒回这些操作的体系结构效果。然而,如果存在由于这些操作引起的主设备2的缓存中的一致性状态的变化,则这个效果即使在推测性执行的操作的体系结构效果在主设备1处已被取消时也将存留。
图4A至图4C图示了可被请求方主设备用于推测性读取操作以确保读取事务不能触发其他缓存处的被请求数据的一致性状态的任何变化的安全推测性读取事务(一致性变化禁止事务)。图4A图示了在目标数据在如下一致性状态中被缓存在第二主设备6的缓存12中的情况下安全推测性读取事务的处理:该一致性状态将允许该数据在请求方主设备4的请求方缓存11中的缓存,而不改变第二主设备的缓存12中的一致性状态。例如,这可以是对被保持在MOESI协议的共享或拥有状态中的数据的命中,虽然将会明白在其他协议中可以认为不同的状态允许其他主设备中的缓存。当第二主设备的缓存12中的目标数据的一致性状态不允许在请求方主设备中的缓存时,对安全推测性读取事务的响应可与如图2A所示的相同,因为第二主设备6经由互连10向请求方主设备4返回窥探的数据,然后该数据被缓存在请求方主设备缓存中。目标数据在第二主设备6处的一致性状态在此情况下保持相同并且因此没有要被攻击者基于推测来探测的一致性状态的变化。
当安全推测性读取事务导致第二主设备的缓存12中和由互连10为其维护一致性的所有其他缓存中的错失时,则这被以与如图2B所示相同的方式来处理。因此,图4B与图2B完全相同。注意在图4A和图4B中,发出到第二主设备6的窥探请求70的类型是与图2A和图2B中所示的窥探请求不同类型的窥探请求,以向第二主设备指示出其只能在数据被保持在也允许在请求方主设备缓存中缓存该数据的一致性状态中的情况下才能返回该数据。
如图4C中所示,在当数据被保持在如果没有第二主设备6处的一致性状态的变化则不允许在请求方主设备缓存中缓存数据的一致性状态中时安全推测性读取事务触发第二主设备6的缓存中的命中的情况下,则在此情况下数据不被返回,取而代之,第二主设备6返回HitNoData响应72。HitNoData响应向请求方主设备4指示出,虽然数据在第二主设备6中存在,但其当前不能被提供给请求方主设备4。因此,没有数据被返回给请求方主设备4。由于在请求方主设备4处没有对目标数据的缓存,所以不需要改变在第二主设备缓存处持有的数据的一致性状态。通过在图4A、图4B和图4C所示的三种情况的每一者中在第二主设备6处将一致性状态保持相同,这避免了攻击者从由推测性操作触发的一致性状态的变化获得边信道信息的任何机会。
当请求方主设备4接收到HitNoData响应72时,则其等待触发了安全推测性读取事务的推测性读取操作在图4C的步骤74被解决为非推测性的并且被正确预测。此时,请求方主设备4随后发出另一个读取事务76(其例如可以是图2A和图2B中所示类型的读取,该读取随后被以与如图2A所示相同的方式处理,包括在必要时对第二主设备6处的一致性状态的可能更新)。该另一事务引起目标数据被从第二主设备6返回到请求方主设备4并且被缓存在请求方主设备4的缓存11中。此时,更新被持有在第二主设备6处的数据的一致性状态是安全的,因为读取操作不再是推测性的。
因此,如果攻击者使用了不正确的推测来欺骗请求方主设备4请求对数据的访问,而这不是请求方主设备4正在执行的代码的作者想要的,则这个读取操作会被解决为误推测的并且会被取消,从而另一读取事务76永不会被触发。注意当另一读取事务76被发出时,有可能到这时目标数据可能已经被从第二主设备6的缓存无效了,因此有时对另一读取事务76的响应可改为如图2B所示,在这里其导致错失和对另一缓存30或存储器33的线填充请求,而不是从第二主设备6的缓存返回数据。
使用图4A至图4C中所示的安全推测性读取事务的一种替换方案将是只支持如图2A和图2B中所示的一致性变化允许读取事务,但延迟发出此事务,直到请求方主设备4处的给定读取操作已被解决为正确推测的为止。然而,在此情况下,在其他主设备的缓存中的错失的情况下,被发出到另一缓存30或者存储器33的线填充请求将必须被延迟,直到推测被解决为止,这可触发长延迟,因为与从另一主设备的缓存获得数据所花费的时间相比,线填充请求通常与大得多的时延相关联。与之对比,通过支持如图4A至图4C所示的保证不会有由该事务触发的其他主设备处的一致性状态的变化的安全推测性读取事务,这使得线填充请求在图4B中所示的错失情况中能够被更早地触发,因为线填充请求可在不等待推测被解决的情况下被触发。因此,对这种安全推测性读取事务的支持可在针对上述类型的攻击进行减轻的同时帮助改善性能。
图5示出了处理图4C中所示的情况的一种替换方案。错失情况,以及安全推测性读取事务在目标数据的一致性状态允许在请求方主设备中的缓存的情况下在第二缓存中命中时的情况,可分别按与如图4B和图4A所示相同的方式被处理。然而,在事务在第二缓存中命中,但数据被保持在如果没有第二缓存处的一致性状态的变化则不允许在请求方主设备中缓存的一致性状态中的情况下,在图5中,取代返回HitNoData响应72,可返回不可缓存读取响应80,其确实从第二主设备6提供目标数据,但指示出目标数据不能被请求方主设备以一致方式缓存。因此,由于该数据不会被缓存在请求方主设备处,因此不需要改变第二主设备6的缓存12中的相应数据的一致性状态,因此同样,这防止了不正确推测的读取操作被用于触发其他缓存中的一致性状态的变化,这种变化可在读取操作已被确定为被误推测之后存留。响应于不可缓存读取响应80,在图5的步骤82,请求方主设备4随后使用返回数据作为推测性读取操作的结果,使得使用该数据的后续操作可推测性地继续。然而,在使用了该数据作为推测性读取操作的结果后,返回数据随后被丢弃,而不将其缓存在请求方主设备4的请求方缓存11中。这意味着如果后续读取操作触发对相同地址的存储器访问,则这将再一次触发事务被发出到互连10以请求数据。也就是说,响应于不可缓存读取响应80,请求方主设备4可将返回数据写入到其内部寄存器,而不是到其缓存。
在一些实现方式中,安全推测性读取事务可在第二缓存12处的一致性状态不允许在请求方主设备的缓存11处的缓存时返回图5中所示的不可缓存读取响应80,但可在一致性状态允许请求方主设备的缓存11处的缓存的情况下触发图4A中所示的行为或者在该请求在第二缓存12中错失的情况下触发图4B的行为。
或者,其他实现方式可不仅在图5所示的场景中返回不可缓存读取响应80,而且在该请求在第二缓存12中命中并且一致性状态不允许在请求方缓存11中缓存目标数据时在图4A所示的场景中也可返回不可缓存读取响应80。也就是说,即使在此情况下数据可能被缓存在了请求方缓存11中,如果无论在第二缓存12中缓存的数据一致性状态如何,安全推测性读取事务在请求在第二缓存12中命中时始终返回不可缓存读取响应,则硬件实现可以更简单。
图6示出了对图4C和图5的替换。在图6中,当安全推测性读取事务触发第二主设备6的缓存中的命中并且数据在该缓存中被保持在除非一致性状态在第二主设备6处被改变否则不允许在请求方主设备4的缓存中的同时缓存的一致性状态中时,则同样,不可缓存读取事务80被返回到请求方主设备。然而,如图1中所示,请求方主设备4可具有推测性缓冲器90,其可被用于与其主缓存12分开地缓存推测性结果。推测性缓冲器90可在由一致互连10管理的一致性方案之外,并且因此不能保证推测性缓冲器90中的值与存储在系统中别处的相应数据保持一致。因此,虽然不可缓存读取响应80要求请求方主设备4不能在服从一致性方案的缓存11内缓存数据,请求方主设备4仍可将返回数据存储在非一致推测性缓冲器90内。因此,除了像图5中那样在步骤82将返回的数据写入到寄存器以用作推测性读取操作的结果以外,利用图6中所示的方案,数据也在步骤84被存储到非一致推测性缓冲器90。这意味着到相同地址的后续读取请求可被更快地处理,因为它们可命中推测性缓冲器90中的推测性数据。
然而,利用此方案,那么一旦触发了原始安全推测性读取事务的推测性读取操作已被解决,则请求方主设备4可需要采取其他步骤来检查数据是否仍一致。在步骤100,请求方主设备4可确定推测性读取操作已被解决为正确的。到此时,在第二主设备6处或者在系统内的其他位置,目标数据中可能有了变化,因此为了确保持续的一致性并且避免用过时的值污染其缓存11,在步骤102,请求方主设备4可发出请求来将推测性缓冲器90中的数据的非一致拷贝升级到可被分配到其主缓存11的一致拷贝。例如,一致升级请求可以是重取得目标数据的最新版本的请求(例如利用图2A和图2B中所示的读取事务的形式),该目标数据的最新版本在被返回时则可在步骤106被缓存在请求方主设备的缓存中。或者,如果互连10和第二主设备6之一跟踪自从由安全推测性读取事务触发的窥探被发出起是否发生了对目标数据的写入,则一致升级请求可以是验证数据值是否本该变化了的请求。不管怎样,在接收到对一致升级请求104的响应时,请求方主设备4可检查自从数据被缓存在推测性缓冲器中起其是否本该有变化(或者通过比较原始和重取得的数据值,或者通过检查指示出是否发生了写入的响应104),并且如果是,则可从推测性缓冲器90丢弃推测性数据并且取消使用了该数据的任何后续操作,因为这些可能是基于不正确的不一致值的。如果请求方主设备4确认基于推测性缓冲的数据的任何后续操作的执行是正确的,则这种操作的结果可被维持并且推测性缓冲的数据可被分配到主缓存11。确保对在一致互连10的控制之外的缓冲器的非一致访问之后的一致性所采取的特定方案可以是取决于特定系统的需要和使用的特定一致性协议的实现方式选择。例如,现有的存储器消歧技术可用于在推测性执行的读取解决时检查一致性。
一般而言,上述示例中示出的安全推测性读取事务可在知道读取的目标地址是否正确或者到底是否需要读取之前用于由推测性操作触发的读取操作。然而,在一些情况下,安全推测性读取事务可用于所有读取请求,例如在一些主设备中,大多数甚至所有读取都可被推测性地进行,因此始终使用读取事务的安全形式可能是最简单的。
然而,在其他系统中,有时可能可以确定上述形式的攻击的风险降低,并且在该情况下可以认为甚至对于推测性请求使用一致性变化允许读取形式的事务是适当的(例如如果针对边信道攻击的一些其他减轻措施在被采取的话)。在此情况下使用一致性变化允许形式的读取事务可在一些情况下通过更早地缓存从第二主设备返回的数据来改善性能。然而,通过提供对于推测性读取事务的安全形式的支持,这避免了采用其他减轻措施的需要并且确保了安全性。
图7示出了在多个请求者之间共享的共享缓存30的示例。一个示例是系统缓存30,其可被多个主设备4、6访问,或者可由在同一主设备4上运行的不同软件进程独立地访问。在图7的示例中,共享缓存30包括推测性区域120和主缓存区域122。推测性区域120在推测性分配的数据保持推测性(即,使得其被分配的相应操作尚未被解决为正确)的同时被专用于这种数据。主区域122被专用于与已被解决为正确的操作相关联的非推测性数据。推测性区域中的条目存储数据130以及指示出该数据的地址的一部分的地址标签132,对于使得数据被分配到共享缓存30的分配请求者134的指示,以及提供对于哪个加载操作或者加载操作的群组使得数据被推测性分配的指示的加载识别符或加载群组识别符136。一旦使得数据被分配的加载(或者加载的群组)全都被解决为正确执行的,这就允许了共享缓存30跟踪何时数据可被从推测性区域120提升到主区域122。与之对比,主区域122中的数据可存储标签132和数据130,但不需要提供关于分配请求134或者加载ID或者群组ID 136的信息。如图7中所示,主区域也可指定与特定数据条目相关联的其他形式的元数据140。此元数据也可指示推测性区域中的条目,虽然为了简洁这在图7中没有示出。虽然图7示出了分开的推测性和主缓存区域120、122,但在其他实施例中,这些可被组合成单个区域,并且与每个条目相关联的额外元数据可标记该条目被认为是推测性的还是非推测性的。
图8示出了流程图,该流程图图示了共享缓存为确定推测性条目何时可被提升到主区域而进行的处理。在步骤150,共享缓存接收指出与特定加载识别符X相关联的加载操作或者与特定群组识别符X相关联的加载群组已被解决为正确推测的指示。作为响应,在步骤152,共享缓存将把识别符X指定为加载ID或群组ID 136的任何推测性缓存线从推测性提升到非推测性。从推测性到非推测性的提升或者可由数据从推测性区域120的条目到主区域122的条目的物理转移来实现,或者通过更新共享缓存区域中的元数据以指示出推测性条目现在是非推测性的来实现。
虽然图8示出了使用加载识别符或加载群组识别符来识别在推测性加载被解决为正确时哪些条目可被提升到非推测性的示例,但其他实现方式可使用缓存条目的地址来识别当相应的加载操作被解决为正确时哪些条目可被提升。
图9示出了图示出特定的请求者X对于给定的目标地址#A的数据的推测性读取请求的处理的流程图。请求者X可以是特定的主设备4、6或者是在主设备上运行的个体进程。该请求在图9的步骤160被共享缓存接收。在步骤162,共享缓存30确定该请求是否在缓存中错失,也就是说在推测性区域120或者主区域122中没有条目与地址#A相关联。如果存在错失,则在步骤164,返回错失响应。例如,这可触发从较低级缓存或者存储器取得数据和/或分配与地址#A相关联的新条目(如果触发了分配的读取请求是推测性的,则这将被分配为推测性条目)。
如果没有错失,则在步骤165确定该请求是否命中非推测性条目(主区域122中的条目,或者由元数据指示为非推测性的共享区域中的条目)。如果是,则在步骤166,命中响应被返回来提供数据供请求者X访问。无论哪个请求者引起了数据被分配,都可为非推测性条目返回命中响应。因此,非推测性条目可被任何请求者命中(服从由系统定义的任何其他存储器访问控制许可)。如果在步骤168,确定读取请求命中由请求者X分配的推测性条目,则这同样被视为命中并且命中响应在步骤166被返回。
另一方面,如果在步骤170确定推测性读取请求命中由不是请求者X的请求者分配的推测性条目,则在步骤172,确定该数据是否脏污(相对于另一级缓存或存储器中的数据被修改)。如果该数据是脏污的,则在步骤174,该数据被写回到另一级缓存或存储器。如果该数据是清洁的,则步骤174可被省略。不管怎样,在步骤164,错失响应被返回。因此在分配到共享缓存的数据保持推测性的同时,只有分配了该数据的请求者可看到该数据并且任何其他请求者不能访问该数据。另外,由于推测性数据不能被分配来引起共享缓存中的非推测性数据的逐出,因此这意味着除了分配推测性条目的请求者以外的请求者完全不知晓推测性分配的条目的任何效果。这消除了缓存定时边信道探测推测性分配的机会并且因此防止了攻击者能够使用不正确推测的存储器访问和缓存定时边信道来泄漏关于秘密数据的信息。
如图1中所示,主设备之一,在此示例中是CPU 4,可具有数据预取器200,用来预测存储器访问的未来访问模式并且在相应的存储器访问指令被主设备4的处理器核心实际执行之前将被预测为在未来需要的地址的数据预取到缓存11中。例如,预取器200可检测某些步幅模式,其中访问的地址是按规律间隔分隔的地址的序列。一旦检测到了步幅模式,则预取器200就可继续将数据取得到与按检测到的步幅偏移的间隔的地址相关联的缓存11中,直到检测到处理器核心不再执行具有匹配步幅模式的地址的数据访问指令为止。这可改善性能。
由于由预取器200触发的数据访问可被看作一种形式的加载推测,所以为了避免调用上述的一致性边信道,预取器可触发如上所述使用安全推测性读取事务来从一致互连获得数据的一类数据访问。
然而,即使由预取器200触发的数据访问没有触发其他主设备中的缓存的一致性状态的任何变化,它们仍可引起具有预取器200的同一主设备4内的缓存11中的分配的变化。特别地,如果预取器200可被攻击者控制来从基于取决于秘密信息的一些信息推测性预测的地址预取数据,则可利用定时边信道来探测到缓存11中的分配的相应变化以便泄漏关于秘密的信息。例如,在以上示出的代码示例中,第二数据访问可被对具有使用取决于秘密的步幅的明确定义模式的存储器位置的访问流所替换。因此,这种流可触发可通过揭露数据步幅并且因此揭露秘密来泄漏信息的硬件预取器活动。在其他示例中,该秘密可用于得出访问的序列的基础地址并且因此预取器可揭露关于基础地址的信息。这个问题是由如下事实引起的:典型的硬件数据预取器200通常将会基于任何发出的存储器访问的地址来训练预测电路,无论这些访问是被推测性地还是非推测性地执行,并且因为由硬件预取器200取得的数据从缓存11逐出非推测性数据,通常是可允许的。
因此,通过提供被禁止从缓存11逐出非推测性数据来为其地址是基于尚未被解决为正确或不正确的推测性访问事务的先前访问地址预测的预取数据让路的硬件预取器200,可消除攻击者从预取器活动得出信息的渠道。图10和图11示出了用于实现这一点的两个替换技术。
图10示出了第一示例,其中数据预取器具有预取地址预测电路202,该预取地址预测电路202被基于已经被解决为正确执行的先前执行的存储器访问的地址来加以训练。因此,预取请求生成电路204于是可基于由预取地址预测电路202预测的地址来生成预取请求,以从一致互连10请求数据。一旦一致互连10返回了请求的数据,则这可被缓存在缓存11中并且可被允许从缓存逐出先前分配的非推测性数据。在此情况下,由于攻击者可用来触发对取决于秘密信息的地址的不适当存储器访问的不正确推测的存储器访问不被用于预取地址预测电路202的训练,所以没有与基于预测的预取地址改变缓存11中的缓存分配的模式相关联的风险。将预取的数据按与非推测性数据相同的方式分配到缓存是安全的,从而诸如最近最少使用之类的任何传统缓存分配策略可被使用。因此,从预取地址预测电路202的训练中消除不正确推测的地址减轻了攻击。
图11示出了用于降低经由数据预取器200的攻击的风险的替换方案。在此情况下,预取器200的预取地址预测电路202是基于推测性执行的存储器访问的地址在还不知道这些访问是正确还是不正确之前训练的。然而,当从预测的地址预取的数据被从存储器系统返回时,则预取数据最初被分配到缓存12的推测性区域210中,该区域是与用于缓存非推测性数据的主缓存区域212分开维护的。因此,由预取引起的分配无法导致非推测性数据从主缓存区域212的逐出。如果处理器4的特权级别发生变化,或者推测屏障指令被执行,则推测性区域210可被冲刷以确保不那么有特权的进程不能获得对预取的数据的访问,以防其是被不正确推测的,从而减少了将在更有特权的状态中访问的信息泄漏给在不那么有特权的状态中执行的软件的机会。注意除了由预取器200预取的数据以外,推测性区域210也可被用于存储由处理器核心执行的加载/存储指令所触发的推测性加载的数据。
当预取器预测(或者被用作推测的基础的其他预测)被确定为正确时,推测性区域210中的数据可被提升到主区域212。因此,通过使用专用的推测性区域210(其可在指示出现在可能存在攻击者可获得对可能不正确推测的结果的访问的风险的事件发生时被冲刷),这将主区域212保留给已被确定为正确的非推测性结果。这意味着即使数据预取器200可基于不正确推测的存储器访问的地址被训练来将数据加载到具有取决于秘密的地址的缓存11中,不能访问秘密的攻击者也不能通过探测主区域212中的缓存访问时间来获得对关于地址的预取模式的信息的访问。
更多示例布置在以下条款中记载:
(1)一种装置,包括:
多个主设备;以及
在所述主设备之间共享的共享缓存,用于根据由多个请求者之一的请求来访问,每个请求者包括给定的主设备或者在给定的主设备上执行的给定进程;
其中响应于给定请求者读取由分配请求者推测性地分配到所述共享缓存的目标数据的请求,在触发所述数据的推测性分配的操作保持推测性的同时,所述共享缓存被配置为:
在所述给定请求者是所述分配请求者时返回提供所述目标数据的命中响应,并且
在所述给定请求者是除了所述分配请求者以外的请求者时返回指出所述数据在所述另一级缓存中不存在的错失响应。
(2)一种装置,包括:
处理电路,能够进行数据访问操作的推测性执行;
缓存,用于缓存响应于数据访问操作而获得的数据;以及
数据预取器,来将数据推测性地预取到与基于由所述处理电路执行的数据访问操作的先前访问地址预测的预取地址相关联的所述缓存中;
其中所述缓存和所述数据预取器被配置为禁止由所述数据预取器基于根据推测性执行的数据访问操作的先前访问地址预测的预取地址推测性预取的数据触发存储在所述缓存中的与已经被解决为非推测性的数据访问操作相关联的非推测性数据的逐出。
(3)如条款(2)所述的装置,其中所述数据预取器被配置为只基于与已经被所述处理电路解决为非推测性的数据访问操作相关联的先前访问地址来预测所述预取地址。
(4)如条款(2)所述的装置,其中所述缓存包括主缓存区域和推测性缓存区域,
并且所述缓存被配置为将所述数据预取器所预取的数据分配到所述推测性缓存区域,并且响应于确定对于分配到所述推测性缓存区域的给定数据项的所述预取地址的预测是正确的,将所述给定数据项转移到所述主缓存区域。
在本申请中,词语“被配置为”被用于意指装置的元素具有能够执行定义的操作的配置。在这个上下文中,“配置”指的是硬件或软件的布置或者互连方式。例如,装置可具有提供定义的操作的专用硬件,或者处理器或其他处理装置可被编程为执行该功能。“被配置为”并不意味着为了提供定义的操作,装置元素需要被以任何方式改变。
虽然本文已参考附图详细描述了本发明的说明性实施例,但要理解本发明不限于这些确切的实施例,并且在不脱离如所附权利要求限定的本发明的范围和精神的情况下,本领域技术人员可在其中实现各种改变和修改。
Claims (15)
1.一种系统,包括:
具有关联的缓存的多个主设备;以及
一致性控制电路,用于基于向给定缓存中的每个数据项指派多个一致性状态之一的一致性协议管理所述缓存之间的一致性,其中:
所述一致性控制电路被配置为支持从请求方主设备接收的安全推测性读取事务的处理,所述安全推测性读取事务是如下类型的:其请求目标数据被返回到所述请求方主设备,同时禁止响应于所述安全推测性读取事务的其他主设备的缓存中的与所述目标数据相关联的一致性状态的任何变化;并且
响应于所述安全推测性读取事务,至少当所述目标数据被缓存在与第二主设备相关联的第二缓存中时,所述一致性控制电路和所述第二缓存中的至少一者被配置为在将所述目标数据在所述第二缓存内维持在相同一致性状态中的同时返回安全推测性读取响应。
2.根据权利要求1所述的系统,其中响应于所述安全推测性读取事务,当所述目标数据在如果不改变所述目标数据在所述第二缓存中的一致性状态则不会允许在所述请求方缓存中缓存所述目标数据的一致性状态中被缓存在所述第二缓存中时,所述安全推测性读取响应包括无数据响应,该无数据响应指示出所述目标数据不能被所述第二缓存提供,直到触发所述安全推测性读取事务的推测性读取操作被解决为非推测性为止。
3.根据权利要求2所述的系统,其中响应于对所述无数据响应的接收,所述请求方主设备被配置为在所述推测性读取操作已被解决为非推测性时向所述一致性控制电路发出另一事务,所述另一事务是如下类型的:其请求所述目标数据被返回到所述请求方缓存,同时允许在其他缓存中与所述目标数据相关联的一致性状态的变化。
4.根据权利要求1所述的系统,其中响应于所述安全推测性读取事务,当所述目标数据在如果不改变所述目标数据在所述第二缓存中的一致性状态则不会允许在所述请求方缓存中缓存所述目标数据的一致性状态中被缓存在所述第二缓存中时,所述安全推测性读取响应包括向所述请求方缓存提供所述目标数据的不可缓存读取响应,所述不可缓存读取响应禁止所述请求方缓存来缓存所述目标数据。
5.根据权利要求4所述的系统,其中响应于所述不可缓存读取响应,所述请求方主设备被配置为将所述目标数据分配到用于在推测性读取操作保持推测性的同时缓冲与推测性读取操作相关联的数据的非一致推测性缓冲器。
6.根据权利要求5所述的系统,其中响应于触发了所述安全推测性读取事务的推测性读取操作被解决为非推测性的,所述请求方主设备被配置为向所述一致性控制电路发出一致升级请求以请求将所述非一致推测性缓冲器中的所述目标数据的非一致版本升级到所述目标数据的一致版本。
7.根据权利要求5和6的任何一项所述的系统,其中响应于确定自从由所述不可缓存读取响应提供所述目标数据起对所述目标数据的改变将引起不正确执行,所述请求方主设备被配置为取消基于由所述不可缓存读取响应提供的所述目标数据而推测性执行的后续操作。
8.根据权利要求4至7的任何一项所述的系统,其中响应于所述安全推测性读取事务,所述安全推测性读取响应包括所述不可缓存读取响应,无论所述第二缓存中的所述目标数据的一致性状态如何。
9.根据权利要求1至7的任何一项所述的系统,其中响应于所述安全推测性读取事务,当所述目标数据在不改变所述目标数据在所述第二缓存中的一致性状态的情况下所述一致性协议将允许在所述请求方缓存中缓存所述目标数据的一致性状态中被缓存在所述第二缓存中时,所述安全推测性读取响应包括提供所述目标数据的可缓存读取响应,所述可缓存读取响应允许所述请求方缓存来缓存所述目标数据。
10.根据任何在前权利要求所述的系统,其中响应于所述安全推测性读取事务,当所述目标数据在根据所述一致性协议管理的其他缓存中不存在时,所述一致性控制电路被配置为从在所述多个主设备之间共享的另一级缓存或者存储器获得所述目标数据。
11.根据任何在前权利要求所述的系统,包括在所述多个主设备之间共享的另一级缓存,用于根据由多个请求者之一的请求来访问,每个请求者包括给定的主设备或者在给定的主设备上执行的给定进程;
其中响应于读取被分配请求者推测性地分配到所述另一级缓存的数据的请求,在触发所述数据的分配的操作保持推测性的同时,所述另一级缓存被配置为在所述请求是由除了所述分配请求者以外的请求者触发的时返回指示出所述数据未被缓存在所述另一级缓存中的错失响应。
12.根据权利要求11所述的系统,其中所述另一级缓存被配置为将推测性分配的数据存储在与用于存储非推测性分配的数据的主缓存区域分开的推测性缓存区域中,并且响应于指出触发所述数据的分配的操作已被所述分配请求者解决为非推测性的指示而将所述推测性分配的数据转移到所述主缓存区域。
13.根据权利要求11所述的系统,其中所述另一级缓存被配置为存储与缓存在所述另一级缓存中的每条数据相关联的元数据,所述元数据指示出该数据是否保持推测性,并且如果该数据保持推测性,则指示出哪个请求者是所述分配请求者。
14.一种互连,包括:
多个接口,用于与具有关联的缓存的主设备通信;以及
一致性控制电路,用于基于向给定缓存中的每个数据项指派多个一致性状态之一的一致性协议管理所述缓存之间的一致性,其中:
所述一致性控制电路被配置为支持从请求方主设备接收的安全推测性读取事务的处理,所述安全推测性读取事务是如下类型的:其请求目标数据被返回到所述请求方主设备,同时禁止响应于所述安全推测性读取事务的其他主设备的缓存中的与所述目标数据相关联的一致性状态的任何变化;并且
响应于所述安全推测性读取事务,至少当所述目标数据被缓存在与第二主设备相关联的第二缓存中时,所述一致性控制电路被配置为在将所述目标数据在所述第二缓存内维持在相同一致性状态中的同时返回或者请求所述第二缓存返回安全推测性读取响应。
15.一种主设备,包括:
处理电路,能够进行数据访问操作的推测性执行;以及
接口电路,用于向互连发出事务,所述互连用于基于向给定缓存中的每个数据项指派多个一致性状态之一的一致性协议来管理所述主设备的缓存和至少一个其他缓存之间的一致性;
其中响应于所述处理电路推测性地执行读取操作以请求在所述主设备的缓存中不存在的目标数据,所述接口电路被配置为向所述互连发出安全推测性读取事务,所述安全推测性读取事务是如下类型的:其请求所述目标数据被返回到所述主设备,同时禁止响应于所述安全推测性读取事务的所述至少一个其他缓存中的与所述目标数据相关联的一致性状态的任何变化。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP18386006.3 | 2018-04-12 | ||
EP18386006.3A EP3553666B1 (en) | 2018-04-12 | 2018-04-12 | Cache control in presence of speculative read operations |
PCT/EP2019/056116 WO2019197106A1 (en) | 2018-04-12 | 2019-03-12 | Cache control in presence of speculative read operations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111936979A true CN111936979A (zh) | 2020-11-13 |
Family
ID=62091818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980024237.4A Pending CN111936979A (zh) | 2018-04-12 | 2019-03-12 | 在存在推测性读取操作的情况下的缓存控制 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11263133B2 (zh) |
EP (1) | EP3553666B1 (zh) |
JP (1) | JP7389048B2 (zh) |
KR (1) | KR20200140293A (zh) |
CN (1) | CN111936979A (zh) |
WO (1) | WO2019197106A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463652A (zh) * | 2020-11-20 | 2021-03-09 | 海光信息技术股份有限公司 | 基于缓存一致性的数据处理方法装置、处理芯片及服务器 |
CN116561825A (zh) * | 2023-07-12 | 2023-08-08 | 北京亿赛通科技发展有限责任公司 | 数据安全管控方法、装置及计算机设备 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11907369B2 (en) | 2020-08-27 | 2024-02-20 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by preventing cache memory state from being affected by a missing load operation by inhibiting or canceling a fill request of the load operation if an older load generates a need for an architectural exception |
US11797673B2 (en) | 2020-08-27 | 2023-10-24 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by expeditiously initiating flushing of instructions dependent upon a load instruction that causes a need for an architectural exception |
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 |
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 |
US11853424B2 (en) | 2020-10-06 | 2023-12-26 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by refraining from allocating an entry in a data TLB for a missing load address when the load address misses both in a data cache memory and in the data TLB and the load address specifies a location without a valid address translation or without permission to read from the location |
US11734426B2 (en) * | 2020-10-06 | 2023-08-22 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by prevents cache line data implicated by a missing load address from being filled into a data cache memory when the load address specifies a location with no valid address translation or no permission to read from the location |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6775749B1 (en) * | 2002-01-29 | 2004-08-10 | Advanced Micro Devices, Inc. | System and method for performing a speculative cache fill |
US20050154863A1 (en) * | 2004-01-13 | 2005-07-14 | Steely Simon C.Jr. | Multi-processor system utilizing speculative source requests |
US20080147992A1 (en) * | 2006-12-05 | 2008-06-19 | Shlomo Raikin | Protecting Private Data from Cache Attacks |
US20090106498A1 (en) * | 2007-10-23 | 2009-04-23 | Kevin Michael Lepak | Coherent dram prefetcher |
US20140006698A1 (en) * | 2012-06-28 | 2014-01-02 | Robert S. Chappell | Hybrid Cache State And Filter Tracking Of Memory Operations During A Transaction |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6918009B1 (en) * | 1998-12-18 | 2005-07-12 | Fujitsu Limited | Cache device and control method for controlling cache memories in a multiprocessor system |
US8281079B2 (en) | 2004-01-13 | 2012-10-02 | Hewlett-Packard Development Company, L.P. | Multi-processor system receiving input from a pre-fetch buffer |
US7984244B2 (en) * | 2007-12-28 | 2011-07-19 | Intel Corporation | Method and apparatus for supporting scalable coherence on many-core products through restricted exposure |
US8533505B2 (en) | 2010-03-01 | 2013-09-10 | Arm Limited | Data processing apparatus and method for transferring workload between source and destination processing circuitry |
-
2018
- 2018-04-12 EP EP18386006.3A patent/EP3553666B1/en active Active
-
2019
- 2019-03-12 US US16/979,624 patent/US11263133B2/en active Active
- 2019-03-12 KR KR1020207030359A patent/KR20200140293A/ko unknown
- 2019-03-12 CN CN201980024237.4A patent/CN111936979A/zh active Pending
- 2019-03-12 WO PCT/EP2019/056116 patent/WO2019197106A1/en active Application Filing
- 2019-03-12 JP JP2020554160A patent/JP7389048B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6775749B1 (en) * | 2002-01-29 | 2004-08-10 | Advanced Micro Devices, Inc. | System and method for performing a speculative cache fill |
US20050154863A1 (en) * | 2004-01-13 | 2005-07-14 | Steely Simon C.Jr. | Multi-processor system utilizing speculative source requests |
US20080147992A1 (en) * | 2006-12-05 | 2008-06-19 | Shlomo Raikin | Protecting Private Data from Cache Attacks |
US20090106498A1 (en) * | 2007-10-23 | 2009-04-23 | Kevin Michael Lepak | Coherent dram prefetcher |
US20140006698A1 (en) * | 2012-06-28 | 2014-01-02 | Robert S. Chappell | Hybrid Cache State And Filter Tracking Of Memory Operations During A Transaction |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463652A (zh) * | 2020-11-20 | 2021-03-09 | 海光信息技术股份有限公司 | 基于缓存一致性的数据处理方法装置、处理芯片及服务器 |
CN112463652B (zh) * | 2020-11-20 | 2022-09-27 | 海光信息技术股份有限公司 | 基于缓存一致性的数据处理方法、装置、处理芯片及服务器 |
CN116561825A (zh) * | 2023-07-12 | 2023-08-08 | 北京亿赛通科技发展有限责任公司 | 数据安全管控方法、装置及计算机设备 |
CN116561825B (zh) * | 2023-07-12 | 2023-09-26 | 北京亿赛通科技发展有限责任公司 | 数据安全管控方法、装置及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3553666B1 (en) | 2023-05-31 |
JP2021520545A (ja) | 2021-08-19 |
KR20200140293A (ko) | 2020-12-15 |
WO2019197106A1 (en) | 2019-10-17 |
US11263133B2 (en) | 2022-03-01 |
US20210042227A1 (en) | 2021-02-11 |
JP7389048B2 (ja) | 2023-11-29 |
EP3553666A1 (en) | 2019-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11263133B2 (en) | Cache control in presence of speculative read operations | |
JP7228592B2 (ja) | 投機的キャッシュ記憶領域 | |
EP3537305B1 (en) | System protecting caches from side-channel attacks | |
US10725992B2 (en) | Indexing entries of a storage structure shared between multiple threads | |
CN112074823B (zh) | 预测限制存储器区域类型的装置、方法、计算机可读存储介质 | |
US20190004961A1 (en) | Memory type which is cacheable yet inaccessible by speculative instructions | |
EP1388065B1 (en) | Method and system for speculatively invalidating lines in a cache | |
CN112119377B (zh) | 用于多个软件工作负载的分支预测缓存 | |
US6546462B1 (en) | CLFLUSH micro-architectural implementation method and system | |
US11210102B2 (en) | Speculative buffer for speculative memory accesses with entries tagged with execution context identifiers | |
US20090106498A1 (en) | Coherent dram prefetcher | |
WO2019005975A1 (en) | TYPE OF MEMORY THAT CAN BE HANGED WHILE INACCESSIBLE BY SPECULATIVE INSTRUCTIONS | |
JP2007533014A (ja) | ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法 | |
US20070180193A1 (en) | History based line install | |
CN111954870A (zh) | 跟踪推测数据缓存 | |
GB2401227A (en) | Cache line flush instruction and method |
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 |