CN111527479A - 推测性缓存存储区 - Google Patents
推测性缓存存储区 Download PDFInfo
- Publication number
- CN111527479A CN111527479A CN201880084565.9A CN201880084565A CN111527479A CN 111527479 A CN111527479 A CN 111527479A CN 201880084565 A CN201880084565 A CN 201880084565A CN 111527479 A CN111527479 A CN 111527479A
- Authority
- CN
- China
- Prior art keywords
- speculative
- cache
- memory
- entry
- entries
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/6022—Using a prefetch buffer or dedicated prefetch cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
装置(2)包括:执行指令的推测性执行的处理电路(4);主缓存存储区(30);推测性缓存存储区(32);以及缓存控制电路(34),该缓存控制电路(34)在处理电路触发的推测性存储器访问保持推测性的情况下,将由推测性存储器访问引起的分配的条目分配给推测性缓存存储区而不是主缓存存储区。这能够帮助防止潜在的安全攻击,这些攻击利用缓存定时侧信道来获取关于由推测性存储器访问引起的对于缓存的分配的信息。
Description
技术领域
本技术涉及数据处理领域。
背景技术
数据处理装置可以支持指令的推测性执行,其中在知道指令的输入操作数是否正确或者指令是否完全需要执行之前执行指令。例如,处理装置可以具有用于预测分支指令的结果的分支预测器,使得在知道分支的实际结果应该是什么之前能够获取、解码和推测性执行后续指令。另外,一些系统可以支持加载推测,其中在从存储器实际返回实际值之前预测从存储器加载的值,以允许更快地处理后续指令。其他形式的推测也是可能的。
发明内容
至少一些示例提供了一种装置,包括:
处理电路,用于执行指令的推测性执行;
主缓存存储区;
推测性缓存存储区;以及
缓存控制电路,用于在由处理电路所触发的推测性存储器访问保持推测性的情况下将推测性存储器访问引起的分配的条目分配到推测性缓存存储区而不是主缓存存储区,其中:
当触发条目到推测性缓存存储区的分配的推测性存储器访问是用于从存储器系统加载数据的推测性加载存储器访问时,响应于推测性加载存储器访问而分配到推测性缓存存储区的条目指定了从存储器系统加载的数据。
至少一些示例提供了一种用于下述装置的方法,该装置包括执行指令的推测性执行的处理电路;主缓存存储区;以及推测性缓存存储区,该方法包括:
响应于由处理电路触发的推测性存储器访问,在推测性存储器访问保持推测性的情况下,将条目分配给推测性缓存存储区而不是主缓存存储区,其中:
当触发条目到推测性缓存存储区的分配的推测性存储器访问是用于从存储器系统加载数据的推测性加载存储器访问时,响应于推测性加载存储器访问而分配到推测性缓存存储区的条目指定了从存储器系统加载的数据。
至少一些示例提供了一种装置,包括:
处理电路,用于执行指令的推测性执行;
指令解码器,对指令进行解码以根据所解码的指令来控制处理电路的操作;其中:
指令解码器响应于推测性缓存刷新指令来控制处理电路从缓存中丢弃或使得不可访问一个或多个推测性条目,该一个或多个推测性条目是响应于仍保持未解析或被解析为不正确的推测性存储器访问而被分配到缓存的。
至少一些示例提供了一种数据处理方法,包括:
对指令进行解码以根据所解码的指令控制处理电路的操作;
使用处理电路执行指令的推测性执行;以及
响应于推测性缓存刷新指令的解码,控制处理电路从缓存中丢弃或使得不可访问一个或多个推测性条目,该一个或多个推测性条目是响应于仍保持未解析或被解析为不正确的推测性存储器访问而被分配到缓存的。
附图说明
从下面结合附图进行阅读的示例的描述中,本技术的其他方面、特征和优点将变得显而易见,在附图中:
图1示意性地示出了具有主缓存存储区和推测性缓存存储区的数据处理装置的示例;
图2示出了主缓存区和推测性缓存区的示例实现方式;
图3是示出控制缓存分配的流程图。
图4是示出在推测性存储器访问被解析之后控制缓存分配的流程图;以及
图5是示出针对推测性缓存刷新事件的响应的流程图。
具体实施例
装置具有用于执行指令的推测性执行的处理电路、主缓存存储区、推测性缓存存储区、以及缓存控制电路,该缓存控制电路用于在由处理电路所触发的推测性存储器访问保持推测性的情况下将推测性存储器访问引起的分配的条目分配到推测性缓存存储区而不是主缓存存储区。当触发条目到推测性缓存存储区的分配的推测性存储器访问是用于从存储器系统加载数据的推测性加载存储器访问时,响应于推测性加载存储器访问而分配到推测性缓存存储区的条目指定了从存储器系统加载的数据。
通过提供单独的推测性缓存存储区(当条目与推测结果尚未被解析为正确或不正确的推测性存储器访问相关时,条目可被分配到该单独的推测性缓存存储区),这避免了使用与由处理电路推测性访问的地址相关联的条目污染主缓存存储区。这有助于防止潜在的安全攻击,否则这些安全攻击可能利用推测性执行指令的影响可能会保留在缓存中的属性,即使推测执行指令的任何架构影响在错误推测后被反转之后也是如此。这样的攻击可以训练分支预测器或其他推测机制,以欺骗特权较高代码推测性地执行指令序列,该指令序列被设计为使特权代码根据敏感信息访问存储器地址的模式(pattern),使得无法访问敏感信息的特权较低代码可以使用缓存定时侧信道(side channel)来探查特权较高代码将哪些地址分配给缓存或从缓存中逐出哪些地址,以给出可以允许推断出敏感信息的一些信息。通过提供与主缓存存储区分离的推测性缓存存储区,使得条目在其相应的存储器访问保持推测性的情况下可以被分配给推测性缓存存储区,这意味着推测性结果的分配不影响条目在主缓存存储区中缓存的地址,从而减少通过测量缓存访问定时可以获得的侧信道信息,由此限制上述类型的攻击的机会。缓存控制电路可以排他地向主缓存存储区分配与非推测性存储器访问相对应的条目或与已经被解析为正确的推测性存储器访问相对应的条目。
推测性缓存存储区可以用于响应于推测性加载存储器访问(用于从存储器系统加载数据)而分配的条目。对于数据处理系统领域的技术人员来说,使用单独的推测性缓存存储区来存储从存储器系统推测性加载的数据,这被视为反直觉的,因为仅从存储器中读取数据(但是不更新数据)的推测性操作通常将被允许在主缓存中分配条目,因为即使推测是不正确的,但由于推测性加载不会修改数据,因此缓存的数据仍将是正确的。但是,通过在推测性缓存存储区而不是主缓存存储区中分配用于推测性加载操作的条目,这避免了公开关于推测性访问的地址的信息,从而降低了上述类型的缓存定时侧信道攻击的风险。
推测性缓存存储区还可以用于响应于推测性存储存储器访问(用于将数据存储到存储器系统)而分配给缓存的条目。替代地,在处理管线的微架构中提供的单独的存储缓冲器可以在将推测性存储数据写入缓存之前缓冲该数据,在这种情况下,可能不需要响应于存储存储器访问而使用推测性缓存存储区。
响应于由处理电路执行的推测性指令触发的读取(加载),主缓存存储区和推测性缓存存储区两者都可以是可访问的。因此,仍然可以实现缓存推测性地加载的数据的性能益处。用于解决上述类型的攻击的替换方法可以是完全禁止缓存推测性条目直到推测被解析,但这将损害性能,因为这将意味着需要与先前推测性存储器访问相同的数据的后续指令将无法读取缓存的数据,直到较早的存储器访问被解析,从而导致延迟。相反,通过提供专用的推测性缓存存储区,使得在主缓存存储中可以将推测性条目与非推测性条目区分开来,但仍然使主缓存和推测性缓存都可访问,这有助于提高性能。
响应于处理电路从特权较高状态切换到特权较低状态,缓存控制电路可以丢弃推测性缓存存储区的条目,或者使处理电路无法访问推测性缓存存储的条目。这避免了与特权较低状态相关联的代码能够获得与由错误推测的指令引起的缓存分配的影响有关的侧信道信息。另一方面,主缓存存储区中的条目在特权较低状态下可以保持可访问,但是由于主缓存存储区尚未被在推测之后仍待解析的分配所污染,因此攻击者无法获得关于在错误预测之后推测性执行的指令的任何信息,不能将此用作导致特权更高状态泄漏敏感信息的方式。因此,这避免了上述类型的安全攻击。
缓存控制电路可以在推测性存储器访问被解析为正确之后将响应于推测性存储器访问而分配的条目从推测性缓存存储区传送到主缓存存储区。该传送可以响应于检测到推测性存储器访问被解析为正确而被直接执行,或者可以在稍后的时间被执行。
例如,在一些实现方式中,不是分配条目的相应访问被解析就立即传送条目,缓存控制电路可以周期性地执行推测性缓存传送操作,其中确定推测性缓存存储区的任何条目是否对应于被解析为正确的解析的推测性存储器访问,如果是,则与解析的推测性存储器访问相对应的条目被传送到主缓存存储区。在一些实现方式中,这种周期性方法可能更易于实施(更高的面积有效性和更高的功率效率)。例如,不是按指令级别在单个指令上跟踪推测性缓存存储区中的哪些条目对应于特定的存储器访问指令,而是可以使用基于时段(epoch)的方法,其中可以以更粗粒度(例如,在一定数量的指令的块(时段)中)跟踪推测性指令的解析。例如,推测性缓存存储区的每个条目可以包括元数据,该元数据指定导致该条目被分配的时段(指令块)的标识符,并且当给定时段的所有指令被确定为被解析为正确地推测时,指定该时段的标识符的任何条目然后可以被传送到主缓存存储区。
因此,在条目和指令可以被解析为正确推测的精度与跟踪此操作的性能和面积开销之间可能存在折衷。然而,通常,一旦确定相应的存储器访问被正确地推测,则通过将条目从推测性缓存存储区传送到主缓存存储区,即使随后的推测失败,所传送的条目也可以在主缓存中保持可访问,因此条目从推测性缓存存储区中被丢弃。该传送还使得推测性缓存存储区的条目可用于重新分配给其他推测性存储器操作。
注意,在条目从推测性缓存存储区传送到主缓存存储区时,要在该条目中缓存的数据值可能尚未被存储在所传送的条目内。例如,对于一些条目,在从另一缓存或存储器接收到要加载到该条目中的实际数据值之前,分配该条目的存储器访问可以被解析为正确的。缓存控制电路可以具有缓存行填充机制,该缓存行填充机制可以在从另一缓存或存储器接收到先前请求的数据值时,可以查找推测性缓存存储区和主缓存存储区两者,以识别哪个条目应该用响应于缓存行填充请求而返回的数据值来更新,因为要更新的条目可以存在于主缓存存储区或推测性缓存区中,这取决于对存储器访问的推测是否正确的解析与对接收到的缓存行填充请求的响应的相对定时。
在一些实现方式中,如果给定推测性存储器访问被解析为不正确,则推测性缓存存储区中与该推测性存储器访问相关联的条目可以被丢弃。例如,当确定分支被错误预测时,推测性缓存存储区中响应于错误预测的分支之后的存储器访问指令而分配的条目可以被丢弃。此外,该丢弃可以响应于检测到相应的推测性存储器访问被解析为不正确而被直接执行,或者可以稍后在周期性检查操作中执行以检查任何条目是否与不正确推测的存储器访问有关。
替代地,在一些情况下,从推测性缓存存储区中丢弃条目可以独立于特定存储器访问是否被解析为不正确推测的任何知识而被执行。例如,如果存在从更受信任的代码到更不受信任的代码的切换,则上述类型的安全攻击可能只是风险。如果处理保持在更受信任的代码中,则能够访问缓存中仍待解析的推测性条目可能不会有任何问题。实际上,尽管保持在给定信任级别的代码内,将仍待解析的推测性条目保持在推测性缓存存储区中以减少对同一数据的后续访问的访问时间对于性能可能是有益的。因此,在一些情况下,推测性缓存存储区中的条目可以保留直到推测性缓存刷新(flush)事件发生。
缓存控制电路可以响应于推测性缓存刷新事件而至少丢弃推测性缓存存储区的与被解析为不正确的推测性存储器访问或仍待解析的推测性存储器访问相关联的条目。如果推测性缓存存储区能够区分与已经解析的存储器访问相关的条目,则不必丢弃这些条目。然而,在一些实现方式中,当推测性缓存刷新事件发生时,缓存控制电路可以简单地丢弃推测性缓存存储区的所有条目。这可以减少在推测性缓存存储区的每个条目中记录元数据以跟踪分配该条目的相应存储器访问的推测结果的开销。
不同类型的推测性缓存刷新事件可以被定义用于触发从推测性缓存存储区中丢弃条目。通常,推测性缓存刷新事件可以是通报存在如下风险的任何事件:如果仍待解析的推测性存储器访问的结果在推测性缓存刷新事件之后仍可访问,则推测性缓存刷新事件之后执行的代码可能获得与推测性缓存刷新事件之前执行的代码相关联的信息。
例如,推测性缓存刷新事件可以包括处理电路的特权级别的切换。例如,处理电路在特权较高状态和特权较低状态之间切换可以被视为刷新事件,并触发丢弃来自推测性缓存存储区的至少一些条目。特别地,处理电路从特权较高状态切换到特权较低状态可以触发推测性缓存刷新事件。因此,通过避免主缓存区被与未解析的推测性存储器访问相关联的条目污染并且在处理电路的特权级别降低的情况下从推测性缓存存储区中丢弃条目,这可以提供针对特权较低代码能够使用缓存定时侧信道来探查访问仅限于在特权级别改变之前运行的特权较高代码的那些信息的防范措施。
推测性缓存刷新事件的另一示例可以是处理电路对推测性缓存刷新指令的处理。通过提供可用于触发从推测性缓存存储区丢弃与仍被解析为不正确推测的存储器访问有关的任何条目的推测性缓存刷新指令,这可以允许程序员显式标记代码中的点,超出该点启用关于由推测性指令引起的缓存分配的信息的可见性可能是不安全的。例如,程序员可以在用于处理敏感信息的一段代码的末尾包括推测性缓存刷新指令,使得任何后续代码都无法获得使其能够推断出敏感信息的侧信道信息。在一些情况下,推测性缓存刷新指令可以是还提供另一种影响的指令,例如触发返回特权较低级别的异常返回指令,这也可以被解释为触发推测性缓存存储区的仍待解析或被解析为不正确的条目的刷新。
然而,提供在架构级别不提供任何其它影响但其触发缓存控制电路从推测性缓存存储区至少丢弃由仍待解析或解析为不正确的存储器访问分配的条目(或者在一些情况下,其触发要丢弃的推测性缓存存储区的所有条目)的专用推测性缓存刷新指令(即表现为架构空操作(nop)指令的指令)可能是有用的。这允许程序员/编译器(即使不需要对特权级别或架构影响进行其他改变)标记代码中的边界,超出该边界,任何推测性分配的条目应从缓存中丢弃,以进一步确保随后执行的代码无法从测量缓存访问定时获得侧信道信息。
当从推测性缓存存储区中丢弃条目时,如果与该条目相关联的数据是干净的,则可以简单地使该条目无效。然而,有时当需要丢弃条目时,存储在推测性缓存存储区的条目中的数据可能是脏的。在一些情况下,当执行推测性存储器访问时,不需要从主存储器中获取相应的数据,如果数据在同一处理系统内的另一缓存中(例如与另一处理器核或其他主设备相关联的缓存)已经可用,则可以将数据从该另一缓存写入推测性缓存存储区。在这种情况下,迁移到推测性缓存存储区中的数据在其处于另一缓存中时可能已经是脏的,并且可能尚未写回到存储器中,因此即使访问推测性缓存存储区的处理电路尚未更新数据,推测性缓存存储区中的数据可能仍然是脏的。因此,如果简单地使分配给推测性缓存存储区的条目无效,则可能存在来自给定地址的最新数据副本丢失的风险。因此,在从推测性缓存存储区丢弃条目时,缓存控制电路可以检查存储在条目中的数据是否是脏的,如果是,则将数据写入到另一位置。
(从推测性缓存存储区丢弃的条目的数据被写回到)另一存储位置可以是更高级的缓存或存储器。替代地,另一存储位置可以是响应于触发了条目到推测性缓存存储区的分配的推测性存储器访问而最初获得数据的位置。例如,该另一位置可以是上述另一处理器核或主设备中的缓存。通过将丢弃的推测性条目中的数据返回或恢复到最初获取数据的位置,则这意味着在存储器访问的解析为错误推测之后,在整个系统中的缓存中分配的地址的模式可能更接近于根本不执行推测性存储器访问时可能会出现的模式,从而减少攻击者通过测量另一位置(例如,另一处理器核的缓存)中的缓存定时来获取关于推测性地执行的指令的访问模式的信息的机会。因此,这可以防止二阶侧信道,该二阶侧信道可以从推测性执行指令不能直接访问的另一缓存中的一致性状态或缓存分配模式的变化中获得信息。为了使数据能够被恢复到其被获取的位置,推测性缓存存储区的每个条目可以指定指示从其获得数据的位置的位置元数据。
推测性缓存存储区可以以不同的方式实施。通常,推测性缓存存储区可以是与主缓存存储区在物理上不同的缓存存储区,因此用于对响应于推测性存储器访问(在这些访问保持推测性的情况下)而分配的条目进行缓存的物理位置不同于用于对非推测性存储器访问或已经被解析的推测性存储器访问相关联的条目进行缓存的那些条目。这意味着当响应于仍未解析的推测性存储器访问而进行分配时,不需要从缓存中丢弃非推测性值,因为针对推测性和非推测性条目分配的物理上不同的区意味着对推测性缓存存储区的分配不影响在主缓存存储区中已经进行的分配。这可能是有用的,因为上述攻击的一些变体可从对哪些地址从缓存中被丢弃/逐出的分析中获得侧信道洞察,而不仅仅是分析哪些地址已被分配到缓存中。因此,与提供具有可用于推测性或非推测性分配的条目的单个共享区(但是在此情况中,每个条目中存储的元数据将会区分推测性分配与非推测性分配区)的替代方法相比,提供物理上不同的主缓存存储区和推测性缓存存储区可以提供针对此类攻击的更有效的防范措施。
在一个示例中,推测性缓存存储区可以包括与主缓存存储区分开的缓存存储结构。例如,主缓存存储区和推测性缓存存储区可以具有单独的索引、选择和/或标记比较电路,用于选择从中读取或写入具有给定存储器地址的数据的缓存的位置。因此,主缓存存储区和推测性缓存存储区可以具有不同的索引或标记方案。具有用于主缓存存储区和推测性缓存存储区的完全分离的缓存存储结构的益处在于:这允许根据主缓存存储区和推测性缓存存储区的需要,以不同的方式为主缓存存储区和推测性缓存存储区设计关联性、索引或标记方案以及为每个条目提供的元数据。例如,推测性区通常可能仅需要存储相对较少的条目,这些条目可以被合理地经常替换。相反,主存储区可以被设计为处理更大数量的数据,但是可以使用对于长期存储可能更加节能的分配策略。
例如,推测性缓存存储区可以比主缓存存储区具有更高的关联性。即,与给定存储器地址相关联的数据值可以被限制为被存储在主缓存存储区中的一组特定位置中,并且不能被存储在这些位置之外。在推测性缓存存储区中,可能存在大量可能的可以放置与给定地址相关联的数据值的位置。在一些实现方式中,推测性缓存存储区可以是全相关联的,使得与任何给定地址相关联的数据可以被存储在推测性缓存存储区的任何条目处。相反,主缓存存储区可以是组相关联(set-associative)的。这可以利用如下事实:即推测性缓存存储区可能仅需要相对较少的条目,并且通过使其全相关联,这避免了由于响应于对应于组相关联结构中的同一组的不同的推测性地执行的存储器操作而分配的条目之间存在冲突的情况而导致的性能损失。相反,对于主缓存存储区,因为主缓存存储区的条目总数可能大于推测性缓存存储区的条目总数,所以组相关联分配方案可以更节能,因为这意味着每次访问缓存时,为了查找哪个条目存储与给定地址相关联的数据而需要查找更少的条目来比较地址标记。
在其他实施例中,推测性缓存存储区可以被实施为包括主缓存存储区的同一缓存存储结构的保留部分。例如,尽管推测性缓存存储区可能仍然在物理上与主缓存存储区不同,以使得对推测性缓存存储区的分配并不需要导致主缓存存储区中的非推测性条目的任何丢弃,但是它们可以利用例如共同的索引/标记方案构成同一缓存存储结构的部分。例如,缓存存储结构可以包括组相关联缓存,并且推测性缓存存储区可以包括缓存存储结构的至少一个保留路。
装置可具有用于执行推测性执行指令的处理电路和用于解码指令以根据解码的指令来控制处理电路的操作的指令解码器。指令解码器可以响应于推测性缓存刷新指令来控制处理电路丢弃或使得不可从缓存访问响应于仍然保持未被解析或已被解析为不正确的推测性存储器访问而被分配给缓存的一个或多个推测性条目。通过在架构级别提供程序员可用于确保缓存中不存在剩余的推测性条目的此种类型的指令,这可以有助于降低对上述类型的攻击的易损性。
图1示意性地示出了数据处理装置2的示例。将理解的是,这仅是装置的组件的子集的高级表示,并且装置可以包括许多未示出的其他组件。装置2包括用于响应于由指令解码器6解码的指令来执行数据处理的处理电路4。指令解码器6对从指令缓存8获取的指令进行解码,以生成用于控制处理电路4执行由指令表示的相应处理操作的控制信号10。处理电路4包括用于对存储在寄存器14中的值执行操作以生成要写回到寄存器的结果值的一个或多个执行单元12。例如,执行单元可以包括用于执行算术运算或逻辑运算的算术/逻辑单元(ALU)、用于使用浮点操作数执行运算的浮点单元和/或用于对包括多个独立的数据元素的操作数执行矢量运算的向量处理单元。处理电路还包括用于控制寄存器14与存储系统之间的数据传输的存储器访问单元(或加载/存储单元)15。存储器系统包括指令缓存8、数据缓存16以及在数据缓存16和指令缓存8的下游提供的其他存储装置,例如其他级别的缓存(例如,2级或3级缓存)和主存储器18。响应于加载操作,存储器访问电路15控制存储器系统以返回与给定地址相关联的数据,并将加载的数据写入寄存器14。响应于存储操作,存储器访问电路15将来自寄存器14的值写入存储器系统。
如图1所示,装置2可以具有至少一种形式的推测机制20,用于对要由处理电路4处理的某些指令的预期行为进行预测,并控制装置根据先前指令的预期结果来推测地执行后续指令。例如,推测机制20可以包括分支预测器,用于预测分支指令的取得的/未取得的结果和/或用于预测分支指令的目标地址,使得后续指令可以被获取、解码和推测性地执行,而无需等待解析出实际分支结果。如果分支预测证明是不正确的,则随后执行的推测性指令对寄存器14上的架构影响可以被反转,并且寄存器14中的架构状态可以被恢复到遇到分支的点,然后在分支之后,替代的指令路径可以被执行。但是,如果分支被正确地预测,则通过更早地使用后续指令填充管线,这使得性能得以提高。
推测机制20的另一示例可以是加载推测单元,其可以在将要从存储器系统加载的数据实际返回之前预测该数据,从而可以使用预测的数据值推测地执行后续指令。如果以后证明该预测是不正确的,则后续的推测指令可以被再次取消,并且寄存器14中的架构状态被恢复到遇到推测的加载的那点。
因此,在实际上知道指令的输入是否正确或者这些指令是否完全需要执行之前,由处理电路4进行的对于指令的这种推测性执行在提供高处理器性能方面将是非常有益的。然而,最近已经认识到,如果这种推测导致存储器访问被推测性地执行,则即使在推测性指令被解析为误预测或错误地推测并且推测性重新执行的指令的架构影响已经被反转,由推测性存储器访问触发的对缓存16的分配也可以保持可见。于是,这可以允许随后执行的代码通过使用缓存定时侧信道来调查哪些数据是由较早的代码加载的。缓存定时侧信道的基本原理是对于缓存的分配的模式(具体地,哪些缓存组已用于分配)可以通过测量访问先前在缓存中的条目所花费的时间或通过测量访问已经分配的条目的时间来确定。于是,这可以用于确定哪些地址已分配到缓存中。
最近已经提出了使用推测性存储器读取的基于推测的缓存定时侧信道。推测性存储器读取是典型的高级微处理器,是实现非常高性能的整体功能的一部分。通过对架构上未解析的分支之外的可缓存位置执行推测性存储器读取(或程序流中的其他改变)并且进一步使用这些读取的结果本身来形成其他推测性存储器读取的地址,这些推测性读取导致其地址表示第一推测性读取的值的条目分配到缓存。如果不可信代码能够以导致对某位置的第一推测性读取(否则该不可信代码无法访问该位置,但是缓存内第二推测性分配的影响可以由该不可信代码测量)控制推测,则这将成为可利用的侧信道。
对于任何形式的监控软件,不可信软件通常将要用作偏移量的数据值传递到将由可信软件访问的数组或类似结构中。例如,应用(不可信)可以基于文件描述符ID询问有关打开文件的信息。当然,监控软件将在使用偏移量之前检查该偏移量是否在合适的范围内,因此可以使用以下形式编写用于此范例的软件:
在现代微处理器中,处理器实现方式通常可以推测性地执行数据访问(由上面的代码中的第9行暗示)以在执行与untrusted_offset_from_user范围检查(由第7行暗示)相关联的分支之前建立值。在监控级别运行此代码的处理器(例如OS内核或超级监控程序)可以从监控级别可访问的普通存储器中的任何位置推测性地加载,这由不可信软件传递的untrusted_offset_from_user的超出范围的值确定。这在架构上不是问题,因为如果推测不正确,则加载的值将被硬件丢弃。
但是,高级处理器可以使用推测性加载的值进行进一步的推测。基于推测的缓存定时侧信道利用的正是这种进一步的推测。例如,前面的示例可以扩展为以下形式:
在本示例中,使用根据arr1->data结合untrusted_offset_from_user(第10行)计算得出的地址从存储器加载的“值(value)”然后被用作进一步存储器访问(第13行)的基础。因此,值2(value2)的推测性加载来自从为值value推测性加载的数据得出的地址。如果处理器对value2的推测性加载导致到缓存中的分配,则可以使用标准缓存定时侧信道推断出该加载的地址的一部分。由于该地址取决于值value中的数据,所以可以使用侧信道来推断出值value的数据的一部分。通过向值value的不同位应用这种方法,可以(在多个推测性执行中)确定值value的数据的整体。因此,不可信软件可以通过提供untrusted_offset_from_user的超范围数量,访问监控软件可访问的任何位置,因此,这种方法可以被不可信软件用来恢复监控软件可访问的任意存储器的值。
现代处理器具有多种不同类型的缓存,这些缓存包括指令缓存、数据缓存以及分支预测缓存。在这些缓存中的条目的分配由基于不可信输入加载的某些数据的任意部分的值确定的情况下,原则上可以刺激这种侧信道。
作为这种机制的概述,应该理解的是,底层硬件技术是指可以经过分支的代码可以被推测性地执行,因此在分支之后访问存储器的任何序列可以被推测性地执行。在这种推测中,在推测性地加载的一个值然后被用于构造也可以被推测性地执行的第二加载或间接分支的地址的情况下,该第二加载或间接分支可以留下对于由第一推测性加载所加载的值的指示(以无法读取该值的代码使用缓存的定时分析可以读取该值的方式)。这种概述意味着通常生成的很多代码序列将信息泄露到可以由其他特权较低的软件读取的缓存分配模式中。这个问题的最严重形式是在本部分较早描述的形式,其中较低特权的软件可以选择以这样的方式泄露什么值。
因此,期望提供针对这种攻击的防范措施。如图1所示,诸如一级数据缓存16之类的缓存可以设置有物理上不同的主缓存存储区30和推测性缓存存储区32,以帮助防止上述类型的攻击。图2更详细地示意性地示出了主缓存存储区30和推测性缓存存储区32的示例。缓存控制电路34控制对缓存的分配。如图2所示,缓存控制电路34控制分配,使得当通过推测性存储器访问触发条目对缓存16的分配时,则在推测性存储器访问保持推测性的同时,对推测性缓存存储区32而不是主缓存区30进行分配。另一方面,仅响应于非推测性存储器访问或响应于被解析为正确的推测性存储器访问进行对主缓存存储区30的分配。因此,这避免了主缓存区被仍是推测性的或已被解析为失败的推测的条目所污染。一旦推测性存储器访问被解析为正确,则响应于该存储器访问而分配给推测性缓存存储区32的条目可以被传送到主缓存区。
虽然处理保持在相同的特权级别,但是主缓存区30和推测性缓存区32中的所有条目都对于读取请求或加载指令是可访问的。但是,当某些刷新事件(例如,表示可能存在上述类型的攻击的风险的事件)发生时,条目可能会从推测性缓存区中丢弃或变得不可访问,以防止在推测性缓存刷新事件之后执行的代码可见那些推测性分配。例如,这种丢弃可以响应于处理电路4的特权级别的降低而进行。处理电路4可以在与访问数据的不同权限相关联的多个特权状态之一中进行操作。通常,在特权较高状态下,处理电路4可以访问处理电路在特权较低状态下操作时不可访问的一些数据。例如,特权较高状态可以是内核级别(或操作系统级别)特权状态,而特权较低状态可以是应用级别状态,其中处于应用特权级别时执行的应用可以被排除在访问内核级别可访问的某些数据之外。通过在存在从特权较高状态到特权较低状态的切换时(例如,异常返回时)丢弃推测性缓存区32的内容,这意味着特权较低的代码然后只能够看到响应于非推测性或解析的存储器访问而进行的缓存分配,以避免使用缓存定时侧信道来调查推测性执行的指令分配了哪些条目从而规避由特权控制机制提供的安全保护。
在图2的示例中,主缓存存储区30和推测性缓存存储区32被实现为具有不同的关联性和不同的缓存索引方案的完全分离的缓存存储结构。在该示例中,主缓存存储区是组相相联的(N路组相关联,例如在该示例中N=4)。因此,与特定地址相关联的数据只能够被放置在由从存储器地址得出的组索引所标识的一组N个位置中,并且该组的N个位置中的每一个位置都包括标识该地址的一部分的标记信息36,该标记信息36可以与该地址中要在查询缓存时寻找的数据的相应标记部分进行比较,以便确定索引的组的条目中的任何条目是否实际存储该地址的数据。
相反,推测性缓存存储区32可以被实现为例如8或16个条目的相对小的缓冲器,并且可以被提供为全相关联的缓存结构,使得任何地址的数据都可以被存储在推测性缓存存储区的任何条目中。在这种情况下,与给定条目相关联的数据的完整地址38可以被存储在该条目中,以使得能够查找推测性缓存区是否存储了与所需目标地址相对应的任何数据。推测性缓存区的全相关联实现方式可以更有效地避免导致必须从推测性缓存存储区中丢弃数据的组冲突。
在主缓存存储区中,除了标记36和存储的数据外,每个条目35还可以指定用于控制缓存分配或一致性的元数据(在图2中未被明确示出)。例如,该元数据可以包括指定条目是否有效的有效信息、指定相应数据的一致性状态的一致性状态信息(例如数据是干净的还是脏的,或者是否与包括图1的处理器核2的较大处理系统中的其它主设备中的缓存共享)和/或驱逐策略信息,该驱逐策略信息用于控制在不存在准备好接受向缓存分配新条目的可用条目的情况下驱逐一组条目35中的哪一个。
相反,对于推测性缓存区,存储在每个条目37中的元数据40可以具有与主缓存存储区中的元数据不同的形式。例如,上述用于主缓存区的任何元数据以及推测性缓存区32中的条目378还可以存储诸如推测性跟踪信息之类的附加信息,该推测性跟踪信息用于跟踪推测性缓存区32的条目与由处理电路4处理的推测性执行指令(或推测执行的指令块)之间的对应关系。在一些情况下,元数据40可以标识推测加载指令的特定地址,该地址触发了条目37在推测性缓存区32中的分配。但是,实际上,基于逐个指令的跟踪可能比合理的跟踪更复杂,并且其他实现方式可以以更粗糙的粒度跟踪推测。例如,元数据40可以指定由处理电路4执行的特定指令块(时段)的标识符。当块中的所有指令被解析为正确推测时,则这可以触发推测性缓存存储区32的被标记有相应指令块的标识符的任何条目37从推测性缓存到主缓存存储区30的传送。
在一些情况下,在推测性缓存存储区32的条目37中指定的元数据40还可以包括标识条目37中的数据被加载到此分配的条目中时从中获得该数据的位置的信息。如图1所示,该位置可以是其他缓存或主存储器18,或者在多处理器系统中,该位置也可以是与不同处理器核相关联的缓存。例如,系统可以包括如图1所示的处理器的多个实例,或者可以包括具有不同配置但还包括缓存的其他主设备。在这种情况下,元数据40可以指定从中获取数据的特定缓存的位置,使得如果推测性缓存存储区32的条目37需要被丢弃并且该条目中的数据是脏的,则该数据可以被写回到获取该数据的位置,而不需要写回到主存储器。在一些情况下,这可以更快地执行。此外,将数据写回到该数据来自的位置可能意味着该另一缓存中的缓存分配中存在较少的改变,这减少了攻击者能够从对整个系统中缓存分配的分析中获得关于不正确地推测性执行的指令的行为的信息的机会。
尽管图2示出了其中推测性缓存区32与主缓存区30完全独立的实施例,但是另一种实现方式可以提供如图2的主区30所示的单个组相关联结构,但保留组相联关结构的至少一路44用于存储推测性地分配的条目,而其他路44专用于非推测性分配。这可以提供针对上述攻击的类似保护。
在一个示例中,推测性缓存区可以如下实施。除了现有的缓存以外,可以提供“推测缓存”32,其保持推测性地添加的存储器访问。例如,推测缓存可以包括大小为N个缓存行的全相关联缓冲器(例如N=8、16或32),其表现为另一“缓存路”,但具有以下属性:
1)作为推测访问的结果,条目被分配到该推测缓存中,并且它们被标记有指示导致条目被分配的指令块的推测性时段信息;该信息用于其他存储器访问,或者与能够确定与推测缓存32中的条目相关联的访问是通过/未通过它们的推测还是仍是推测性的元数据一起使用。
2)通过推测的条目可以被分配到主缓存30中。
3)未通过推测的条目无法被分配到主缓存30中,但是可以保留直到异常级别改变为止。
4)在特权减少(即,异常返回)时,推测缓存30中未通过推测的条目被丢弃(如果它们是干净的)或被写回(如果它们是脏的,则后一种情况可能是由于脏的行从其他位置迁移到推测缓存30中)。
图3示出了说明控制缓存分配的方法的流程图。在步骤50,缓存控制电路34确定需要将条目分配到缓存中,例如,当遇到加载指令,并且因此,当所请求的地址尚未被缓存在缓存16中时,存储器访问电路15请求要从存储器系统加载的数据。在步骤52,缓存控制电路确定分配是否响应于保持推测性的推测性存储器访问。如果是,则在步骤54,条目被分配到推测性缓存区32中。如果该分配不是响应于保持推测性的推测性存储器访问,则在步骤56,对主缓存存储区30进行分配。
替代地,在一些实施例中,不是试图在缓存分配时确定存储器访问是否被推测性地执行,缓存控制器34可以简单地在初始时将任何新条目分配到推测性缓存存储区中,然后一旦相应的存储器访问或指令块已被解析为正确地预测,则将新条目传送到主缓存存储区30。在这种情况下,除了通过从推测性缓存区传送条目之外,缓存控制器34可能无法对主缓存区30进行新条目的任何直接分配。因此,即使一些存储器访问被非推测地执行,它们仍然可以被分配到推测性缓存存储区中,但是如果它们已经被解析为正确,则可以相对快速地被传送到主缓存中(例如,作为块传送的一部分)。
图4示出了说明一旦推测性存储器访问被解析时缓存控制器34的功能的流程图。在步骤60,确定特定的推测性存储器访问已被解析。在步骤62,确定推测是否正确。如果推测是正确的,则在步骤64,响应于推测性存储器访问而被分配到推测性缓存存储区32的条目可以从推测性缓存存储区32传送到主缓存存储区30。这种传送可以直接响应于确定推测是正确的而发生,或者可以在在稍后的某个时间发生。例如,代替检查每个指令是否可以传送相应的条目,另一种方法可以是提供不时执行的周期检查操作。当执行检查操作时,缓存控制器可以逐步通过推测性缓存区32的每个条目,以检查其是否对应于已被完全解析为正确的一个或多个指令的块,如果是,则这些条目中的任何条目都可以被传送到主缓存区30,而与仍待解析的指令有关的条目可以被保留在推测性缓存区内。
另一方面,如果在步骤62确定导致推测性存储器访问的推测被解析为不正确,则在步骤66中,与该存储器访问相关联的条目可以在推测性缓存存储区32中被丢弃或变得不可访问,而不将其传送到主缓存区30。当条目被丢弃或变得不可访问时,如果该条目中的数据被指示为是脏的,则在步骤68该数据被写回到另一存储位置,该位置可以是另一级缓存或主存储器18,或者可以是元数据40中指示作为该条目在先前分配时从中获取数据的位置的位置。
在图4的处理的替代实现方式中,步骤66和68可以被省略,并且在确定某些推测性地执行的指令被错误地推测时,可能不需要实际丢弃推测性缓存存储区32的条目。即使在推测被解析为不正确之后条目仍保留在推测性缓存存储区32中,仍然有可能的是,后续指令仍需要访问相同的数据。如果代码随后切换到特权较低代码或不应获得对某些敏感信息的访问的代码,则上述类型的攻击风险可能会发生。但是,如果尽管进行了错误推测,但是在错误推测之后执行的代码仍然具有特权或被允许访问敏感信息,则将与错误地推测的指令相关联的分配保留在推测性缓存区32内没有问题。实际上,保留这些条目可能提供性能益处,因为即使存在错误推测,后续指令仍可能尝试访问相同的地址位置。因此,在一些情况下,丢弃可能不是在解析推测性指令时进行,而是响应于在切换到不应访问某些敏感信息的代码的部分时可能触发的单独刷新事件。
图5是示出了这种刷新事件的处理的流程图。在步骤70,推测性缓存刷新事件发生。例如,该事件可以是处理电路4正在运行的特权级别的降低,例如异常返回或从特权状态到特权较低状态的切换。此外,刷新事件的另一示例可以是处理电路4执行推测性缓存刷新指令。也就是说,指令解码器6可以支持指令集架构,其将指令的某些子集定义为推测性缓存刷新指令,当它们被执行时,可以触发缓存控制器34丢弃推测性缓存存储区32中与未解析的推测性存储器访问或被解析为错误地推测的存储器访问有关的任何条目。这可以允许程序员或编译器显式地标记代码中推测性分配应从缓存丢弃的点,以避免后续代码通过上述侧信道方法探查到先前执行的代码的操作。例如,推测性缓存刷新指令可以是不具有其他架构影响的专用指令,即架构NOP指令。
响应于在步骤70发生的推测性缓存刷新事件,在步骤72,缓存控制器34控制缓存16至少丢弃响应于尚未解析的或已经被解析为失败(错误地推测)的推测性存储器访问而被分配的那些条目37。在一些情况下,仅这种未解析的或失败的推测性条目可以被丢弃,而与已经被解析为正确决的存储器访问相关的条目不需要被丢弃(例如,由于那些条目被解析为正确的,所以可能尚未执行用于检查要传送到主缓存区30的条目的周期性扫除)。然而,实际上,与检查条目是被解析还是未被解析相关联的开销可能是不合理的,并且更简单的方法可以是响应于推测性缓存刷新事件而丢弃推测性缓存区32的所有条目。不管所有条目是被丢弃还是仅那些未解析或失败的条目被丢弃,如果丢弃的条目中的数据是脏的,则类似于图4的步骤68,可以再次执行写回到另一存储位置的操作。
在本申请中,词语“被配置为……”用于表示装置的元件具有能够执行所定义的操作的配置。在本文中,“配置”是指硬件或软件的互连的布置或方式。例如,装置可以具有提供所定义的操作的专用硬件,或者处理器或其他处理设备可被编程以执行该功能。“被配置为”并不意味着需要以任何方式改变装置元件以提供所定义的操作。
尽管这里已经参考附图详细描述了说明性实施例,但是应当理解,本发明不限于那些精确的实施例,并且本领域的技术人员可以在不脱离由所附权利要求书限定的本发明的精神和范围的情况下在其中进行各种改变和修改。进一步的示例布置在以下条款中列出:
(1)一种装置,包括:
处理电路,用于执行指令的推测性执行;
主缓存存储区;
推测性缓存存储区;以及
缓存控制电路,用于在由处理电路所触发的推测性存储器访问保持推测性的情况下将推测性存储器访问引起分配的条目分配到所述推测性缓存存储区而不是所述主缓存存储区。
(2)根据条款1所述的装置,其中,缓存控制电路被配置为:将与被解析为正确的非推测性存储器访问或推测性存储器访问相对应的条目排他地分配到主缓存存储区。
(3)根据条款1和2中任一项所述的装置,其中,主缓存存储区和推测性缓存存储区响应于由处理电路所执行的推测性指令触发的读取而都可访问。
(4)根据条款3所述的装置,其中,缓存控制电路被配置为:响应于处理电路从特权较高状态切换到特权较低状态而丢弃推测性缓存存储区的条目或使处理电路无法访问推测性缓存存储区的条目。
(5)根据前述条款中任一项所述的装置,其中,缓存控制电路被配置为:在推测性存储器访问被解析为正确之后,将响应于推测性存储器访问而分配的条目从推测性缓存存储区传送到主缓存存储区。
(6)根据条款5所述的装置,其中,缓存控制电路被配置为:响应于检测到推测性存储器访问被解析为正确,将响应于推测性存储器访问而分配的条目直接传送到主缓存存储区。
(7)根据条款5所述的装置,其中,缓存控制电路被配置为周期性地执行推测性缓存传送操作,以确定推测性缓存存储区的任何条目是否与被解析为正确的解析的推测性存储器访问相对应,并将与解析的推测性存储器访问相对应的条目传送到主缓存存储区。
(8)根据前述条款中任一项所述的装置,其中,缓存控制电路被配置为丢弃推测性缓存存储区中与解析为不正确的推测性存储器访问相关联的条目。
(9)根据前述条款中任一项所述的装置,其中,缓存控制电路响应于推测性缓存刷新事件,至少丢弃推测性缓存存储区中与以下项中的一者相关联的条目:
被解析为不正确的推测性存储器访问;以及
仍待解析的推测性存储器访问。
(10)根据条款9所述的装置,其中,缓存控制电路响应于推测性缓存刷新事件而丢弃推测性缓存存储区的所有条目。
(11)根据条款9和10中任一项所述的装置,其中,推测性缓存刷新事件包括:处理电路在特权较高状态与特权较低状态之间切换。
(12)根据条款9和10中任一项所述的装置,其中,推测性缓存刷新事件包括:处理电路从特权较高状态切换到特权较低状态。
(13)根据条款9至12中任一项所述的装置,其中,推测性缓存刷新事件包括:由处理电路对推测性缓存刷新指令的处理。
(14)根据条款8至13中任一项所述的装置,其中,缓存控制电路被配置为:在丢弃推测性缓存存储区的条目时,确定所丢弃的条目中的数据是否是脏的,并且当数据是脏的时将数据写入另外的存储位置。
(15)根据条款14所述的装置,其中,另外的存储位置包括另外级别的缓存或存储器。
(16)根据条款14所述的装置,其中,另外的存储位置包括响应于触发了条目到推测性缓存存储区的分配的推测性存储器访问获得所述数据的位置。
(17)根据条款16所述的装置,其中,推测性缓存存储区的每个条目指定指示获得所述数据的位置的位置元数据。
(18)根据前述条款中任一项所述的装置,其中,推测性缓存存储区包括与主缓存存储区分离的缓存存储结构。
(19)根据前述条款中任一项所述的装置,其中,推测性缓存存储区具有比主缓存存储区更高的关联性。
(20)根据条款19所述的装置,其中,推测性缓存存储区是全相关联的。
(21)根据条款1至16中任一项所述的装置,其中,推测性缓存存储区包括包含主缓存存储区的同一缓存存储结构的保留部分。
(22)根据条款21所述的装置,其中,缓存存储结构是组相关联的,并且推测性缓存存储区包括缓存存储结构的至少一个保留路。
(23)一种用于下述装置的方法,装置包括执行指令的推测性执行的处理电路;主缓存存储区;以及推测性缓存存储区,方法包括:
响应于由处理电路触发的推测性存储器访问,在推测性存储器访问保持推测性的情况下,将条目分配给推测性缓存存储区而不是所述主缓存存储区。
(24)一种装置,包括:
处理电路,用于执行指令的推测性执行;
指令解码器,对指令进行解码以根据所解码的指令来控制所述电路的操作;其中:
指令解码器响应于推测性缓存刷新指令来控制处理电路从缓存中丢弃或使得不可访问一个或多个推测性条目,这一个或多个推测性条目是响应于仍保持未解析或被解析为不正确的推测性存储器访问而被分配到缓存的。
(25)一种数据处理方法,包括:
对指令进行解码以根据所解码的指令控制处理电路的操作;
使用处理电路执行指令的推测性执行;以及
响应于推测性缓存刷新指令的解码,控制处理电路从缓存中丢弃或使得不可访问一个或多个推测性条目,这一个或多个推测性条目响应于仍保持未解析或被解析为不正确的推测性存储器访问而被分配到缓存的。
Claims (25)
1.一种装置,包括:
处理电路,用于执行指令的推测性执行;
主缓存存储区;
推测性缓存存储区;以及
缓存控制电路,用于在所述处理电路触发的推测性存储器访问保持推测性的情况下,将所述推测性存储器访问引起分配的条目分配到所述推测性缓存存储区而不是所述主缓存存储区,其中:
当触发所述条目到所述推测性缓存存储区的分配的所述推测性存储器访问是用于从存储器系统加载数据的推测性加载存储器访问时,响应于所述推测性加载存储器访问而分配到所述推测性缓存存储区的所述条目指定了从所述存储器系统加载的所述数据。
2.根据权利要求1所述的装置,其中,所述缓存控制电路被配置为:将与被解析为正确的推测性存储器访问或非推测性存储器访问相对应的条目排他地分配到所述主缓存存储区。
3.根据权利要求1和2中任一项所述的装置,其中,所述主缓存存储区和所述推测性缓存存储区二者都能响应于由所述处理电路所执行的推测性指令触发的读取而被访问。
4.根据权利要求3所述的装置,其中,所述缓存控制电路被配置为:响应于所述处理电路从特权较高状态切换到特权较低状态,而丢弃所述推测性缓存存储区的条目或使所述处理电路无法访问所述推测性缓存存储区的所述条目。
5.根据前述权利要求中任一项所述的装置,其中,所述缓存控制电路被配置为:在所述推测性存储器访问被解析为正确之后,将响应于推测性存储器访问而分配的条目从所述推测性缓存存储区传送到所述主缓存存储区。
6.根据权利要求5所述的装置,其中,所述缓存控制电路被配置为:响应于检测到所述推测性存储器访问被解析为正确,将响应于所述推测性存储器访问而分配的条目直接传送到所述主缓存存储区。
7.根据权利要求5所述的装置,其中,所述缓存控制电路被配置为:周期性地执行推测性缓存传送操作,以确定所述推测性缓存存储区的任何条目是否与被解析为正确的所解析的推测性存储器访问相对应,并将与所解析的推测性存储器访问相对应的条目传送到所述主缓存存储区。
8.根据前述权利要求中任一项所述的装置,其中,所述缓存控制电路被配置为:丢弃所述推测性缓存存储区中与解析为不正确的推测性存储器访问相关联的条目。
9.根据前述权利要求中任一项所述的装置,其中,所述缓存控制电路响应于推测性缓存刷新事件,至少丢弃所述推测性缓存存储区中与以下项中的一者相关联的条目:
被解析为不正确的推测性存储器访问;以及
仍待解析的推测性存储器访问。
10.根据权利要求9所述的装置,其中,所述缓存控制电路响应于所述推测性缓存刷新事件而丢弃所述推测性缓存存储区的所有条目。
11.根据权利要求9和10中任一项所述的装置,其中,所述推测性缓存刷新事件包括:所述处理电路在特权较高状态与特权较低状态之间切换。
12.根据权利要求9和10中任一项所述的装置,其中,所述推测性缓存刷新事件包括:所述处理电路从特权较高状态切换到特权较低状态。
13.根据权利要求9至12中任一项所述的装置,其中,所述推测性缓存刷新事件包括:由所述处理电路对推测性缓存刷新指令的处理。
14.根据权利要求8至13中任一项所述的装置,其中,所述缓存控制电路被配置为:在丢弃所述推测性缓存存储区的条目时,确定所丢弃的条目中的数据是否是脏的,并且当所述数据是脏的时将所述数据写入另外的存储位置。
15.根据权利要求14所述的装置,其中,所述另外的存储位置包括另外级别的缓存或存储器。
16.根据权利要求14所述的装置,其中,所述另外的存储位置包括响应于触发了所述条目到所述推测性缓存存储区的分配的所述推测性存储器访问而获得所述数据的位置。
17.根据权利要求16所述的装置,其中,所述推测性缓存存储区的每个条目指定指示获得所述数据的位置的位置元数据。
18.根据前述权利要求中任一项所述的装置,其中,所述推测性缓存存储区包括与所述主缓存存储区分离的缓存存储结构。
19.根据前述权利要求中任一项所述的装置,其中,所述推测性缓存存储区比所述主缓存存储区具有更高的关联性。
20.根据权利要求19所述的装置,其中,所述推测性缓存存储区是全相关联的。
21.根据权利要求1至16中任一项所述的装置,其中,所述推测性缓存存储区包括包含所述主缓存存储区的同一缓存存储结构的保留部分。
22.根据权利要求21所述的装置,其中,所述缓存存储结构是组相关联的,并且所述推测性缓存存储区包括所述缓存存储结构的至少一个保留路。
23.一种用于下述装置的方法,所述装置包括执行指令的推测性执行的处理电路;主缓存存储区;以及推测性缓存存储区,所述方法包括:
响应于由所述处理电路触发的推测性存储器访问,在所述推测性存储器访问保持推测性的情况下,将条目分配给所述推测性缓存存储区而不是所述主缓存存储区,其中:
当触发所述条目到所述推测性缓存存储区的分配的所述推测性存储器访问是用于从存储器系统加载数据的推测性加载存储器访问时,响应于所述推测性加载存储器访问而分配到所述推测性缓存存储区的条目指定了从所述存储器系统加载的所述数据。
24.一种装置,包括:
处理电路,用于执行指令的推测性执行;
指令解码器,对指令进行解码以根据所解码的指令来控制所述处理电路的操作;其中:
所述指令解码器响应于推测性缓存刷新指令来控制所述处理电路从缓存中丢弃或使得不可访问一个或多个推测性条目,所述一个或多个推测性条目是响应于仍保持未解析或被解析为不正确的推测性存储器访问而被分配到所述缓存的。
25.一种数据处理方法,包括:
对指令进行解码以根据所解码的指令控制处理电路的操作;
使用所述处理电路执行指令的推测性执行;以及
响应于推测性缓存刷新指令的解码,控制所述处理电路从缓存中丢弃或使得不可访问一个或多个推测性条目,所述一个或多个推测性条目是响应于仍保持未解析或被解析为不正确的推测性存储器访问而被分配到所述缓存的。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| GB1800357.4 | 2018-01-10 | ||
| GB1800357.4A GB2570110B (en) | 2018-01-10 | 2018-01-10 | Speculative cache storage region |
| PCT/GB2018/052449 WO2019138206A1 (en) | 2018-01-10 | 2018-08-30 | Speculative cache storage region |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN111527479A true CN111527479A (zh) | 2020-08-11 |
| CN111527479B CN111527479B (zh) | 2024-06-14 |
Family
ID=61190395
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201880084565.9A Active CN111527479B (zh) | 2018-01-10 | 2018-08-30 | 数据处理装置和方法 |
Country Status (7)
| Country | Link |
|---|---|
| US (1) | US11461243B2 (zh) |
| EP (1) | EP3738041B1 (zh) |
| JP (1) | JP7228592B2 (zh) |
| KR (1) | KR102746185B1 (zh) |
| CN (1) | CN111527479B (zh) |
| GB (1) | GB2570110B (zh) |
| WO (1) | WO2019138206A1 (zh) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110442381A (zh) * | 2018-05-02 | 2019-11-12 | 美光科技公司 | 用于保护有条件的推测性指令执行的影子缓存 |
| CN111259384A (zh) * | 2020-01-17 | 2020-06-09 | 中国科学院计算技术研究所 | 一种基于缓存随机无效的处理器瞬态攻击防御方法 |
| CN114008581A (zh) * | 2019-07-31 | 2022-02-01 | 美光科技公司 | 用以加速推测性执行的备用高速缓存集合 |
| WO2023051228A1 (zh) * | 2021-09-28 | 2023-04-06 | 阿里巴巴(中国)有限公司 | 样例数据的处理方法、装置、设备和存储介质 |
Families Citing this family (20)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11169805B2 (en) * | 2018-04-30 | 2021-11-09 | Hewlett Packard Enterprise Development Lp | Dynamic processor cache to avoid speculative vulnerability |
| US20200034152A1 (en) * | 2018-07-30 | 2020-01-30 | Cavium, Llc | Preventing Information Leakage In Out-Of-Order Machines Due To Misspeculation |
| US10915326B1 (en) * | 2019-07-31 | 2021-02-09 | Micron Technology, Inc. | Cache systems and circuits for syncing caches or cache sets |
| US11048636B2 (en) * | 2019-07-31 | 2021-06-29 | Micron Technology, Inc. | Cache with set associativity having data defined cache sets |
| US11194582B2 (en) | 2019-07-31 | 2021-12-07 | Micron Technology, Inc. | Cache systems for main and speculative threads of processors |
| US11200166B2 (en) | 2019-07-31 | 2021-12-14 | Micron Technology, Inc. | Data defined caches for speculative and normal executions |
| US11169737B2 (en) | 2019-08-13 | 2021-11-09 | Micron Technology, Inc. | Speculation in memory |
| US11061824B2 (en) * | 2019-09-03 | 2021-07-13 | Microsoft Technology Licensing, Llc | Deferring cache state updates in a non-speculative cache memory in a processor-based system in response to a speculative data request until the speculative data request becomes non-speculative |
| US20210081575A1 (en) * | 2019-09-12 | 2021-03-18 | Microsoft Technology Licensing, Llc | Hybrid mitigation of speculation based attacks based on program behavior |
| US11403394B2 (en) | 2019-09-17 | 2022-08-02 | International Business Machines Corporation | Preventing selective events of a computing environment |
| US11443044B2 (en) * | 2019-09-23 | 2022-09-13 | International Business Machines Corporation | Targeted very long delay for increasing speculative execution progression |
| US11210102B2 (en) | 2019-11-26 | 2021-12-28 | Arm Limited | Speculative buffer for speculative memory accesses with entries tagged with execution context identifiers |
| CN111274584B (zh) * | 2020-01-17 | 2022-07-15 | 中国科学院计算技术研究所 | 一种基于缓存回滚以防御处理器瞬态攻击的装置 |
| GB2598784B (en) | 2020-09-14 | 2022-11-16 | Advanced Risc Mach Ltd | Draining operation for draining dirty cache lines to persistent memory |
| US12105715B2 (en) * | 2021-10-19 | 2024-10-01 | Salesforce, Inc. | Tenant identification for cache keys |
| US11734278B2 (en) | 2021-10-19 | 2023-08-22 | Salesforce, Inc. | Cache management for multiple tenants |
| JP2023079640A (ja) * | 2021-11-29 | 2023-06-08 | 富士通株式会社 | 演算処理装置および演算処理方法 |
| US20240104022A1 (en) * | 2022-09-27 | 2024-03-28 | Intel Corporation | Multi-level cache data tracking and isolation |
| GB2630754B (en) * | 2023-06-05 | 2025-09-24 | Advanced Risc Mach Ltd | Extension processing circuitry start-up |
| US20250293704A1 (en) * | 2024-03-14 | 2025-09-18 | Qualcomm Incorporated | Bandwidth Compressed Data Movement and Footprint Compression |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6321328B1 (en) * | 1999-03-22 | 2001-11-20 | Hewlett-Packard Company | Processor having data buffer for speculative loads |
| US20050154805A1 (en) * | 2004-01-13 | 2005-07-14 | Steely Simon C.Jr. | Systems and methods for employing speculative fills |
| CN102622276A (zh) * | 2004-12-29 | 2012-08-01 | 英特尔公司 | 多处理器环境中基于事务的共享数据操作 |
| US8943273B1 (en) * | 2008-08-14 | 2015-01-27 | Marvell International Ltd. | Method and apparatus for improving cache efficiency |
| CN104583957A (zh) * | 2012-06-15 | 2015-04-29 | 索夫特机械公司 | 具有无消歧乱序加载存储队列的重新排序的推测性指令序列 |
Family Cites Families (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63292255A (ja) | 1987-05-25 | 1988-11-29 | Matsushita Electric Ind Co Ltd | 論理キャッシュ |
| US7171610B2 (en) * | 2002-06-12 | 2007-01-30 | International Business Machines Corporation | Method, system, and article of manufacture for preventing data loss |
| US7225299B1 (en) | 2003-07-16 | 2007-05-29 | Transmeta Corporation | Supporting speculative modification in a data cache |
| WO2006027643A1 (en) * | 2004-09-07 | 2006-03-16 | Freescale Semiconductors, Inc | A virtual address cache and method for sharing data stored in a virtual address cache |
| US8832415B2 (en) * | 2010-01-08 | 2014-09-09 | International Business Machines Corporation | Mapping virtual addresses to different physical addresses for value disambiguation for thread memory access requests |
| US20120079245A1 (en) | 2010-09-25 | 2012-03-29 | Cheng Wang | Dynamic optimization for conditional commit |
| US9411739B2 (en) * | 2012-11-30 | 2016-08-09 | Intel Corporation | System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators |
| US9195465B2 (en) | 2012-12-28 | 2015-11-24 | Intel Corporation | Cache coherency and processor consistency |
| US10409763B2 (en) * | 2014-06-30 | 2019-09-10 | Intel Corporation | Apparatus and method for efficiently implementing a processor pipeline |
| US10089238B2 (en) * | 2014-07-17 | 2018-10-02 | Qualcomm Incorporated | Method and apparatus for a shared cache with dynamic partitioning |
| US10120809B2 (en) * | 2015-09-26 | 2018-11-06 | Intel Corporation | Method, apparatus, and system for allocating cache using traffic class |
| US10187308B2 (en) * | 2016-09-30 | 2019-01-22 | Intel Corporation | Virtual switch acceleration using resource director technology |
| US10489273B2 (en) * | 2016-10-20 | 2019-11-26 | Microsoft Technology Licensing, Llc | Reuse of a related thread's cache while recording a trace file of code execution |
| US10552153B2 (en) * | 2017-03-31 | 2020-02-04 | Intel Corporation | Efficient range-based memory writeback to improve host to device communication for optimal power and performance |
| US20180373646A1 (en) * | 2017-06-22 | 2018-12-27 | Technion Research & Development Foundation Ltd | Cache unit useful for secure execution |
| US10430186B2 (en) * | 2017-10-27 | 2019-10-01 | Vmware, Inc. | Speeding up transactions in non-volatile memory using hardware transactional memory |
-
2018
- 2018-01-10 GB GB1800357.4A patent/GB2570110B/en active Active
- 2018-08-30 EP EP18765999.0A patent/EP3738041B1/en active Active
- 2018-08-30 CN CN201880084565.9A patent/CN111527479B/zh active Active
- 2018-08-30 WO PCT/GB2018/052449 patent/WO2019138206A1/en not_active Ceased
- 2018-08-30 JP JP2020537167A patent/JP7228592B2/ja active Active
- 2018-08-30 US US16/959,280 patent/US11461243B2/en active Active
- 2018-08-30 KR KR1020207021153A patent/KR102746185B1/ko active Active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6321328B1 (en) * | 1999-03-22 | 2001-11-20 | Hewlett-Packard Company | Processor having data buffer for speculative loads |
| US20050154805A1 (en) * | 2004-01-13 | 2005-07-14 | Steely Simon C.Jr. | Systems and methods for employing speculative fills |
| CN102622276A (zh) * | 2004-12-29 | 2012-08-01 | 英特尔公司 | 多处理器环境中基于事务的共享数据操作 |
| US8943273B1 (en) * | 2008-08-14 | 2015-01-27 | Marvell International Ltd. | Method and apparatus for improving cache efficiency |
| CN104583957A (zh) * | 2012-06-15 | 2015-04-29 | 索夫特机械公司 | 具有无消歧乱序加载存储队列的重新排序的推测性指令序列 |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110442381A (zh) * | 2018-05-02 | 2019-11-12 | 美光科技公司 | 用于保护有条件的推测性指令执行的影子缓存 |
| CN114008581A (zh) * | 2019-07-31 | 2022-02-01 | 美光科技公司 | 用以加速推测性执行的备用高速缓存集合 |
| CN111259384A (zh) * | 2020-01-17 | 2020-06-09 | 中国科学院计算技术研究所 | 一种基于缓存随机无效的处理器瞬态攻击防御方法 |
| WO2023051228A1 (zh) * | 2021-09-28 | 2023-04-06 | 阿里巴巴(中国)有限公司 | 样例数据的处理方法、装置、设备和存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| GB2570110A (en) | 2019-07-17 |
| US11461243B2 (en) | 2022-10-04 |
| WO2019138206A1 (en) | 2019-07-18 |
| US20210056043A1 (en) | 2021-02-25 |
| EP3738041A1 (en) | 2020-11-18 |
| EP3738041B1 (en) | 2024-02-21 |
| JP2021510434A (ja) | 2021-04-22 |
| JP7228592B2 (ja) | 2023-02-24 |
| GB2570110B (en) | 2020-04-15 |
| CN111527479B (zh) | 2024-06-14 |
| KR102746185B1 (ko) | 2024-12-26 |
| GB201800357D0 (en) | 2018-02-21 |
| KR20200106042A (ko) | 2020-09-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111527479B (zh) | 数据处理装置和方法 | |
| US20210173931A1 (en) | Speculative side-channel attack mitigations | |
| US7657880B2 (en) | Safe store for speculative helper threads | |
| US6412043B1 (en) | Microprocessor having improved memory management unit and cache memory | |
| US6681295B1 (en) | Fast lane prefetching | |
| US6598128B1 (en) | Microprocessor having improved memory management unit and cache memory | |
| US7350027B2 (en) | Architectural support for thread level speculative execution | |
| US11314509B2 (en) | Processing of plural-register-load instruction | |
| US11734426B2 (en) | 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 | |
| KR102664370B1 (ko) | 민감성으로서 명령들의 동적 지정 | |
| US11733972B2 (en) | 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 | |
| US20220108013A1 (en) | 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 | |
| US11210102B2 (en) | Speculative buffer for speculative memory accesses with entries tagged with execution context identifiers | |
| KR20120070584A (ko) | 데이터 스트림에 대한 저장 인식 프리페치 | |
| US9424190B2 (en) | Data processing system operable in single and multi-thread modes and having multiple caches and method of operation | |
| US6553460B1 (en) | Microprocessor having improved memory management unit and cache memory | |
| CN113795837B (zh) | 用于控制将信息分配到高速缓存存储装置中的装置和方法 | |
| US20250258675A1 (en) | Apparatus and method using hint capability for controlling micro-architectural control function | |
| US11822652B1 (en) | Prime and probe attack mitigation |
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 | ||
| GR01 | Patent grant |