CN111936980A - 用于控制将数据分配到缓存存储中的装置和方法 - Google Patents

用于控制将数据分配到缓存存储中的装置和方法 Download PDF

Info

Publication number
CN111936980A
CN111936980A CN201980023742.7A CN201980023742A CN111936980A CN 111936980 A CN111936980 A CN 111936980A CN 201980023742 A CN201980023742 A CN 201980023742A CN 111936980 A CN111936980 A CN 111936980A
Authority
CN
China
Prior art keywords
data
cache
allocation
allocated
memory access
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
Application number
CN201980023742.7A
Other languages
English (en)
Inventor
弗雷德里克·克劳德·玛丽·皮里
彼得·理查德·格林哈尔格
伊恩·迈克尔·考尔菲尔德
阿尔宾·皮尔里克·托内尔
杰弗里·艾伦·凯尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ARM Ltd filed Critical ARM Ltd
Publication of CN111936980A publication Critical patent/CN111936980A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Abstract

提供了用于控制将数据分配到缓存存储中的装置和方法。该装置包括用于执行指令的处理电路,以及用于存储当执行指令时访问的数据的缓存存储。缓存控制电路被布置为在敏感分配条件被确定为存在时,响应于处理电路推测性地执行识别要被分配到缓存存储中的数据的存储器访问指令,将数据分配到缓存存储中并且与被分配到缓存存储中的数据相关联地设置有条件分配标志。缓存控制电路随后响应于检测到分配解决事件,基于分配解决事件的类型来确定是要清除有条件分配标志以使得该数据之后被视为无条件分配的,还是引起缓存存储中的该数据的无效。这种方案可降低缓存对于基于推测的缓存定时边信道攻击的脆弱性。

Description

用于控制将数据分配到缓存存储中的装置和方法
技术领域
本公开涉及用于控制将数据分配到缓存存储中的技术。
背景技术
数据处理装置可支持指令的推测性执行,其中,在知道指令的输入操作对象是否正确或者指令到底是否需要被执行之前就执行指令。例如,处理装置可具有分支预测器,用于预测分支指令的结果,使得后续指令可在知道分支的真实结果应当是什么之前被推测性地取得、解码和执行。另外,一些系统也可支持作为一种形式的推测的数据预取,其中在预期值被处理电路所需要的情况下,从存储器加载值,以允许后续指令被更快地处理。其他形式的推测也是可能的。
最近已识别出,在某些实例中,基于指令的推测性执行将数据分配到缓存存储中可打开试图识别敏感数据的攻击源。例如,最近已发表了关于基于推测的缓存定时边信道攻击的信息,其中可使用若干个技术,使得缓存定时分析可被滥用来从指令的误推测执行泄漏信息。
发明内容
在第一示例配置中,提供了一种装置,包括:处理电路,用于执行指令;缓存存储,用于存储当执行所述指令时访问的数据;以及缓存控制电路,被布置为在敏感分配条件被确定为存在时,响应于处理电路推测性地执行识别要被分配到缓存存储中的数据的存储器访问指令,将所述数据分配到所述缓存存储中并且与被分配到所述缓存存储中的所述数据相关联地设置有条件分配标志;所述缓存控制电路响应于检测到分配解决事件,基于所述分配解决事件的类型来确定是要清除所述有条件分配标志以使得所述数据之后被视为无条件分配的,还是引起缓存存储中的该数据的无效。
在另一示例配置中,提供一种用于控制将数据分配到缓存存储中的方法,所述缓存存储用于存储数据来供处理电路在执行指令时访问,所述方法包括:在敏感分配条件被确定为存在时,通过如下方式响应所述处理电路推测性地执行识别要被分配到所述缓存存储中的数据的存储器访问指令:将所述数据分配到所述缓存存储中并且与被分配到所述缓存存储中的所述数据相关联地设置有条件分配标志;并且在检测到分配解决事件时,基于所述分配解决事件的类型来确定是要清除所述有条件分配标志以使得所述数据之后被视为无条件分配的,还是引起缓存存储中的该数据的无效。
在另外一个示例配置中,提供了一种装置,包括:处理装置,用于执行指令;缓存存储装置,用于存储当执行所述指令时访问的数据;以及缓存控制装置,在敏感分配条件被确定为存在时,用于通过如下方式响应所述处理装置推测性地执行识别要被分配到所述缓存存储装置中的数据的存储器访问指令:将所述数据分配到所述缓存存储装置中并且与被分配到所述缓存存储装置中的所述数据相关联地设置有条件分配标志;所述缓存控制装置用于通过如下方式响应对分配解决事件的检测:基于所述分配解决事件的类型来确定是要清除所述有条件分配标志以使得所述数据之后被视为无条件分配的,还是引起所述缓存存储装置中的所述数据的无效。
附图说明
将参考在附图中图示的本技术的示例来仅作为说明进一步描述本技术,附图中:
图1是根据一个示例的装置的框图;
图2更详细图示了在一个示例布置中图1的第1级数据缓存;
图3是图示出在一个示例中缓存控制电路为了确定如何将数据分配到缓存中而采取的步骤的流程图;
图4是根据一个示例布置图示出缓存控制电路响应于对分配解决事件的检测而采取的步骤的流程图;
图5A示意性图示了一种形式的敏感分配条件,其中用于执行一个或多个可缓存加载操作的代码在在前分支操作被解决之前被推测性地执行,并且图5B是根据一个示例布置图示出一旦条件分支已被解决,缓存控制电路采取的步骤的流程图;
图6A图示了一个示例,其中指令的序列内的推测屏障指令的存在被用于指示敏感分配条件的存在,并且图6B是图示出缓存控制电路响应于关联的分配解决事件而采取的步骤的流程图;
图7A和图7B是根据一个示例布置图示出处理器异常级别的变化可如何用于触发敏感分配条件,以及关联的分配解决事件的流程图;
图8是根据一个示例布置图示出非推测性访问对于先前被有条件分配的缓存线可如何被用作分配解决事件的流程图;
图9根据一个示例布置图示了可如何依据敏感分配条件是否存在来更改数据预取电路的操作;并且
图10A至10C根据一个示例布置图示了在尚不知道早前存储器访问指令的结果的同时,存储器访问指令的推测性执行可如何被缓存控制电路处理。
具体实施方式
在一个示例布置中,提供了一种装置,其包括用于执行指令的处理电路,以及用于存储当执行指令时访问的数据的缓存存储。缓存控制电路被用于控制数据如何被分配到缓存存储中,并且特别地,在敏感分配条件被确定为存在时,其在端口电路推测性执行存储器访问指令时不只是以通常方式分配数据。取而代之,在敏感分配条件被确定为存在时,缓存控制电路响应于处理电路推测性执行识别要被分配到缓存存储中的数据的存储器访问指令,将数据分配到缓存存储中,但与分配到缓存存储中的数据相关联地设置有条件分配标志。有条件分配标志可按多种方式被存储,并且可例如被存储在与缓存存储分开的存储结构中。然而,在一个示例布置中,有条件分配标志与数据被分配到的缓存线相关联地被存储在缓存存储内。
作为上述过程的结果,在某些时间点,在缓存存储中将有至少一些数据具有与其关联设置的有条件分配标志。缓存控制电路于是响应于检测到与这种数据相关的分配解决事件,基于分配解决事件的类型来确定是要为该数据清除有条件分配标志以使得该数据之后被视为无条件分配的,还是引起缓存存储中的该数据的无效。
因此,在敏感分配条件存在的情况下,不只是完全阻止数据被分配到缓存中,上述技术允许了数据继续被分配,但是按如下方式分配的:如果分配解决事件指示出该数据不应当被分配到缓存中,则该分配可被无效。然而,如果相反分配解决事件指示出该数据可被分配到缓存中,则这可提供显著性能改善,因为数据已经被有条件地分配,并且可只是通过清除有条件分配标志而被转换成被无条件分配。
敏感分配条件可出于多种原因而发生,而无论什么形式的敏感分配条件,都可使用上述方案。然而,敏感分配条件的一个具体示例场景可以是当推测性存储器访问指令正以可允许基于缓存定时边信道攻击来得出敏感数据的方式被执行时。
特别地,Google最近已发表了关于基于推测的缓存定时边信道攻击的信息,其中可使用若干个技术,使得缓存定时分析于是可被滥用来从指令的误推测执行泄漏信息。缓存定时边信道后面的基本原理是向缓存中分配的模式、特别是哪些缓存集合已被用于分配,可通过测量访问先前在缓存中的条目所花费的时间,或者通过测量访问已被分配的条目的时间,来确定。这于是可用于确定哪些地址被分配到了缓存中。基于推测的缓存定时边信道的新颖性在于其对推测性存储器读取的使用。推测性存储器读取是先进微处理器的典型特征,并且是使能高性能的整体功能的一部分。
通过执行对超出体系结构上未解决的分支(或程序流中的其他变化)的可缓存位置的第一推测性存储器读取,该读取的结果本身可被用于形成另外的推测性存储器读取的地址。这些推测性读取引起向缓存中分配条目,这些条目的地址指示了第一推测性读取的值。如果非可信代码能够以使得其引起对否则该非可信代码将不可访问的位置的第一推测性读取的方式来控制推测,则这可成为一种可利用的边信道。特别地,到缓存中的第二和后续推测性分配的效果可被非可信代码测量。
假定可采取措施来缓和攻击者从由这种推测性存储器访问从缓存逐出的数据得出有用信息,于是上述技术也可禁止攻击者采取步骤来测量访问已被分配的条目所花的时间。特别地,在这种存储器访问可被推测性执行的时段期间,由于这些访问而被分配到缓存中的数据被标记为有条件分配。分配解决事件于是可在程序流中的未解决变化已被解决时发生,并且因此知道这些推测性存储器访问指令是否应当被执行。如果否,则有条件分配的数据可在缓存中被无效,因此防止基于该数据执行缓存定时边信道攻击。
因此,在一个示例中,敏感分配条件至少在如下时间被确定为存在:执行存储器访问指令的要求取决于在处理电路推测性执行存储器访问指令之时未解决的分支操作的结果。另外,至少在分支操作的结果被解决时可认为分配解决事件发生。
在一个示例布置中,当分支操作的结果指示出要求存储器访问指令的执行时,缓存分配电路被布置为清除与被存储器访问指令的推测性执行所访问的缓存存储中的数据相关联的有条件分配标志,并且当分支指令的结果指示出存储器访问指令不会被执行时,缓存分配电路被布置为引起被存储器访问指令的推测性执行所访问的缓存存储中的数据的无效。因此,这种方案可有效地针对任何指向已由于推测性存储器访问而被分配的缓存线的基于推测的缓存定时边信道攻击进行保护,同时使得在确定存储器访问指令确实应当被执行的情形中能够获得推测性执行存储器访问指令的性能益处。
敏感分配条件可对于任何类型的在存储器访问指令要被推测性执行之时结果未解决的分支操作被确定为存在,或者可只对于某些类型的分支操作被确定为存在。在一个特定布置中,分支操作是范围检查操作来确定识别要被存储器访问指令访问的数据的存储器地址是否在存储器地址的可允许范围内,并且存储器访问指令将在存储器地址在可允许范围内时被执行。已发现这种范围检查操作是在试图利用上述基于推测的缓存定时边信道时可使用的特定类型的分支操作之一。特别地,常见的是非可信软件向可信软件传递数据值,该数据值将被用作到将被可信软件访问的阵列或类似结构中的偏移。最终,可信软件可检测到传递的数据值是不被允许的,但由于推测性执行,基于该非可信值的早前提及的存储器访问指令可能在此期间已被执行,并且导致数据被分配到缓存中。
某些软件技术被用于通过降低推测可发生的程度来试图针对早前提及的基于推测的缓存定时边信道攻击进行减轻。一个这种软件方案涉及对推测屏障指令的使用,并且根据本文描述的技术,推测屏障指令的存在可用于识别敏感分配条件。
例如,在一个实现方式中,敏感分配条件可至少当在指令的序列中遇到推测屏障指令时被确定为存在,推测屏障指令在屏障时段期间阻止处理电路推测性执行在序列中出现在推测屏障指令之后的一种或多种类型的指令,屏障时段结束在对于在序列中出现在推测屏障指令之前的任何推测性执行的指令解决了推测时。被阻止推测性执行的指令的类型可取决于实现方式而变化,但一般而言可引起体系结构上不可见的资源的状态的变化发生的任何指令可被推测屏障指令阻止推测性执行。因此,推测屏障指令可用于试图确保在屏障时段期间被允许执行的任何指令只是不会由于其执行而引起可见的副作用的指令。因此,通常,可引起对诸如缓存或分支预测机制之类的微体系结构结构的更新的指令可被推测屏障指令阻止在屏障时段期间推测性执行。
然而,根据本文描述的技术,对于缓存结构,早前描述的技术的使用允许了提供对约束的某种放松,因为存储器访问指令可被允许在屏障时段期间被推测性执行,但数据是在有条件分配标志被设置的情况下被分配到缓存存储中的。虽然存储器访问指令的执行可引起体系结构上不可见的资源(在此情况下是缓存)的状态的变化,但通过使有条件分配的数据无效,如果确定存储器访问指令不应当被执行,则可撤销该效果。
在敏感分配条件在遇到推测屏障指令时被确定为存在的一个示例场景中,分配解决事件可至少发生在对于在序列中出现在推测屏障指令之前的任何推测性执行的指令解决了推测时。当推测的解决指示出进行了不正确推测时,缓存控制电路被布置为使得有条件分配的数据在缓存存储中被无效。因此,如果对于在推测屏障指令之前出现的指令进行了任何不正确的推测,则存储器访问指令的推测性执行的效果可被撤销。在一个特定示例中,推测屏障指令可被插入在紧随早前提及的分支指令之后。
除了上述示例以外,还有其他情形可触发敏感分配条件。例如,在一个实现方式中,敏感分配条件可至少在处理电路的状态从第一状态变化到第二状态时被确定为存在,在第二状态中处理电路能够访问当处理电路在第一状态中时不可访问的一个或多个存储器地址处的数据。因此,至少对于感兴趣的存储器地址,第二状态中的处理电路可被视为比当在第一状态中时的处理电路具有更高的权限级别。一个或多个存储器地址处的数据可以是希望对于当在第一状态中操作时的处理电路保持秘密的敏感数据。通过在处理电路从第一状态变化到第二状态时触发敏感分配条件,这将确保任何推测性执行的存储器访问指令让其数据作为有条件分配被分配到缓存存储中。
在这种实现方式中,分配解决事件可至少发生在处理电路的状态从第二状态变化到第一状态时,缓存控制电路被布置为当有条件分配标志在处理电路的状态从第二状态变化到第一状态时仍被设置时引起缓存存储内的关联数据的无效。因此,如果任何有条件分配的数据到控制被传递回到处于第一状态中的处理电路之时仍被视为有条件分配,则该有条件分配的数据可被无效,因此去除了处于第一状态中的处理电路试图对于这些分配的缓存线执行任何缓存定时分析的可能性。
已被有条件分配的数据可出于若干个原因被转换成完全分配的数据。例如,分配解决事件也可至少发生在非推测性执行的另一存储器访问指令引起对关联的有条件分配标志被设置的缓存存储中的数据的访问时。在该情况下,缓存控制电路可响应于由该另一存储器访问指令的执行引起的访问而清除有条件分配标志以使得该数据之后被视为无条件分配。特别地,如果发生命中缓存存储中的有条件分配数据的非推测性访问,则这意味着该数据确实应当存在于缓存存储中,并且因此在该时点清除有条件分配标志是安全的。然后,该数据从此之后将被视为无条件分配的。
在一个示例布置中,该装置可包括数据预取电路,用于执行数据预取操作,以在预期数据被处理电路所要求的情况下预加载该数据。通常,数据可被预加载到处理电路的寄存器之一中,但作为该过程的一部分可被缓存在缓存存储内。根据一个示例布置,缓存控制电路还被布置为,至少在敏感分配条件被确定为存在时,与由数据预取电路获得的并且被分配到缓存存储中的预加载数据相关联地设置有条件分配标志。因此,这使得结果被分配到缓存中的预加载数据能够被视为有条件分配的。
在一些实现方式中,缓存控制电路可被布置为最初始终将作为数据预取操作的一部分被分配到缓存中的数据视为有条件分配的。然后,按照早前论述的机制,如果真正非推测性执行的指令访问该数据,则有条件分配标志可被清除。然而,在替换方案中,以这种方式对预取的数据的处理可限于敏感分配条件存在的情形。然后,在关联的分配解决事件发生时,数据或者可被转换成无条件分配的数据,或者被无效,这取决于分配解决事件的类型。例如,如果敏感分配条件是推测屏障指令的存在,则在屏障时段期间被分配到缓存存储中的任何预取数据可被标记为有条件分配的,并且随后如果在对于出现在推测屏障指令之前的任何推测性执行的指令的解决之时,没有检测到误预测,则可被转换成无条件分配的数据。然而,在任何误预测的情况下,则缓存中的预取数据可被无效。
作为敏感分配条件的另一示例,敏感分配条件可至少在以下时间时被确定为存在:可中止的在前存储器访问指令被执行,并且被处理电路推测性执行的存储器访问指令是如果在前存储器访问指令中止则不会被执行的存储器访问指令。
因此,可以看出上述技术当在多种不同情形中将数据分配到缓存中时提供了大量的灵活性,使得数据在某些时间点能够被有条件分配到缓存中,然后在之后或者被转换成完全分配的数据,或者被无效。
在一个示例实现方式中,在敏感分配条件存在时,处理电路被布置为推测性地执行多个存储器访问指令,以使得数据被分配到缓存存储的多个条目中,并且关联的有条件分配标志被设置。于是分配解决事件是同等地应用到多个条目的每一者中的数据的全局分配解决事件,缓存控制电路可被布置为,取决于全局分配解决事件的类型,或者为多个条目的每一者清除有条件分配标志,或者引起多个条目的每一者中的数据的无效。因此,一个分配解决事件可涉及多个有条件分配的缓存线,并且可用于触发对于这些缓存线的每一者的解决,从而使得它们或者全都被视为完全分配的缓存线,或者全都被无效。
被推测性执行并且被以前述方式对待(关于被访问的数据随后如何被分配到缓存中)的存储器访问指令的类型可采取多种形式。例如,在一个实现方式中,被处理电路推测性执行的存储器访问指令是被执行来将数据从存储器加载到处理电路可访问的至少一个寄存器中的加载指令。在一些系统中,可能存储指令不被推测性执行,并且因此不需要对于存储指令采用上述机制。然而,在加载和存储指令都可被推测性执行的实现方式中,于是相同的技术如果需要也可被用于推测性执行存储指令。
缓存控制电路可以有多种方式来使有条件分配的缓存线无效。例如,如果该数据仍是清洁的,即,该数据的拷贝已经存在于存储器系统的更低级别内,则只是清除与相关数据相关联的有效标志可能就足够了。然而,当缓存控制电路使得数据被无效并且数据被标记为脏污时,缓存控制电路可使得数据被从缓存存储逐出到存储器系统的更低级别,除了缓存中的关联条目被标记为无效以外。因此,在此情况下,无效操作实际上包括清洁和无效操作,以便确保对该数据的任何更新在存储器系统内不丢失。
如上所述,分配解决事件可采取多种形式。然而,在一个实现方式中,分配解决事件至少发生在引起敏感分配条件的关联敏感分配事件已被解决时。在该时点相关的有条件分配缓存线是被转换成完全分配的缓存线还是被无效将取决于发生的解决的性质。
在一个示例实现方式中,缓存存储包括多个缓存线,并且缓存控制电路被布置为当在敏感分配条件存在时将数据分配到缓存线中时将该缓存线标记为有条件分配的缓存线。在关联的分配解决事件发生之前可发生多个敏感分配事件,并且该装置还可包括跟踪存储,该跟踪存储被缓存控制电路参考来对于每个等待的分配解决事件识别哪些有条件分配的缓存线与该分配解决事件相关联。
因此,在这种布置中,有可能具有敏感分配事件和关联的分配解决事件的某种程度的嵌套。在这种实例中,跟踪存储可保持跟踪哪些缓存线与哪些级别的嵌套相关联,以确保当对于特定级别的嵌套达到解决时,对于相关的缓存线可采取适当的动作。
现在将参考附图描述具体示例。
图1示意性图示了数据处理装置2的示例。将会明白这只是该装置的组件的子集的高级别表示并且该装置可包括没有图示的许多其他组件。装置2包括处理电路4,用于响应于被指令解码器6解码的指令来执行数据处理。指令解码器6对从指令缓存8取得的指令解码以生成用于控制处理电路4来执行指令表示的相应处理操作的控制信号10。处理电路4包括一个或多个执行单元12来对存储在寄存器14中的值执行操作以生成要被写回到寄存器的结果值。例如,执行单元可包括用于执行算术操作或逻辑操作的算术/逻辑单元(arithmetic/logic unit,ALU)、用于利用浮点操作对象执行操作的浮点单元和/或用于对包括多个独立数据元素的操作对象执行向量操作的向量处理单元。处理电路还包括存储器访问单元(或加载/存储单元)15,用于控制寄存器14和存储器系统之间的数据的传送。存储器系统包括指令缓存8、数据缓存16以及在数据缓存16和指令缓存8的下游提供的更多存储,例如更多级别的缓存(例如第2级或第3级缓存)和主存储器18。响应于加载操作,存储器访问电路15控制存储器系统返回与给定地址相关联的数据并且将加载的数据写入到寄存器14。响应于存储操作,来自寄存器14的值被存储器访问电路15写入到存储器系统。
如图1中所示,装置2可具有至少一种形式的推测机制20,用于作出关于要被处理电路4处理的某些指令的预期行为的预测并且依据早前指令的预测结果控制装置推测地执行后续指令。例如,推测机制20可包括分支预测器,用于预测分支指令的采取/不采取结果和/或用于预测分支指令的目标地址,使得后续指令可在不需要等待实际分支结果被解决的情况下被推测性地取得、解码和执行。如果分支预测最终发现是不正确的,则后续执行的推测性指令对寄存器14的体系结构效果可被撤销并且寄存器14中的体系结构状态可被恢复到遇到分支的点,然后遵循该分支可执行指令的替换路径。然而,如果分支被正确地预测,则通过更早地用后续指令填充管线,这使得性能能够被改善。
推测机制20的另一个示例可以是数据预取机制,其被用于在预期数据被处理电路所要求的情况下试图将数据预取到寄存器14中。在该过程期间,预取的数据可被分配到数据缓存16中。
在实际知道到指令的输入是否正确或者这些指令到底是否需要被执行之前由处理电路4对这些指令的推测性执行在提供高处理器性能方面可以是极为有益的。然而,最近已认识到,如果这种推测导致存储器访问被推测性地执行,则由推测性存储器访问触发的到缓存16中的分配即使在推测性指令已被解决为误预测的或者不正确推测的并且推测性重执行指令的体系结构效果已被撤销之后也仍保持可见。这于是可允许后续执行的代码通过缓存定时边信道来调查什么数据被早前代码所加载。缓存定时边信道后面的基本原理是向缓存中分配的模式、并且,特别地,哪些缓存集合被用于了分配,可通过测量访问先前在缓存中的条目所花费的时间,或者通过测量访问已被分配的条目的时间,来确定。这于是可用于确定哪些地址被分配到了缓存中。
最近已提出了使用推测性存储器读取的基于推测的缓存定时边信道。推测性存储器读取是先进微处理器的典型特征,并且是使能非常高性能的整体功能的一部分。通过执行对超出体系结构上未解决的分支(或程序流中的其他变化)的可缓存位置的推测性存储器读取,并且,进一步地,使用这些读取本身的结果来形成进一步推测性存储器读取的地址,这些推测性读取引起向缓存中分配条目,这些条目的地址指示了第一推测性读取的值。如果非可信代码能够以使得其引起对否则在该非可信代码处将不可访问的位置的第一推测性读取的方式来控制推测,则成为一种可利用的边信道,但缓存内的第二推测性分配的效果可被该非可信代码测量。
对于任何形式的监控软件,常见的是非可信软件传递数据值,该数据值将被用作到将被可信软件访问的阵列或类似结构中的偏移。例如,应用(非可信)可基于文件描述符ID来请求关于开放文件的信息。当然,监控软件在其使用之前将检查该偏移在适当范围内,因此用于这种范例的软件可写成如下形式:
Figure BDA0002709270060000111
Figure BDA0002709270060000121
在现代微处理器中,处理器实现方式通常可推测性地执行数据访问(由以上代码中的第9行暗示)以在执行与untrusted_offset_from_user范围检查相关联的分支之前确立值(由第7行暗示)。在某个监控级别运行此代码的处理器(例如OS内核或超级监督者)可从由非可信软件传递的untrusted_offset_from_user的范围外值所确定的该监控级别可访问的正常存储器中的任何地方推测性地加载。这在体系结构上不是一个问题,因为如果推测不正确,则加载的值将被硬件丢弃。
然而,先进处理器可将推测性加载的值用于进一步推测。正是这个进一步推测被基于推测的缓存定时边信道所利用。例如,先前示例可被扩展为具有以下形式:
Figure BDA0002709270060000122
Figure BDA0002709270060000131
在此示例中,利用根据arr1->data与untrusted_offset_from use相结合计算的地址从存储器加载的“value”(第10行)于是被用作进一步存储器访问的基础(第13行)。因此,value2的推测性加载来自于从为value推测性加载的数据得出的地址。如果处理器对value2的推测性加载引起到缓存中的分配,则该加载的地址的一部分可利用标准缓存定时边信道来推断。由于该地址取决于value中的数据,于是value的数据的一部分可利用边信道来推断。通过将此方案应用到value的不同比特(在若干个推测性执行中),value的数据的全部可被确定。因此,非可信软件可通过为untrusted_offset_from_user提供范围外量来访问监控软件可访问的任何地方,并且因此,此方案可被非可信软件用来恢复监控软件可访问的任何存储器的值。
现代处理器具有多个不同类型的缓存,包括指令缓存、数据缓存和分支预测缓存。在这些缓存中的条目的分配由基于非可信输入加载的一些数据的任何部分的值来确定的情况下,则原则上此边信道可被激励。
作为此机制的一个概括,应当明白底层硬件技术意味着经过分支的代码可被推测性执行,并且因此在分支之后访问存储器的任何序列可被推测性执行。在这种推测中,在推测性加载的一个值随后被用于为也可被推测性执行的第二加载或间接分支构造地址的情况下,则该第二加载或间接分支可留下对于第一推测性加载所加载的值的指示,该指示的方式将使得其可利用否则将不能够读取该值的代码利用对缓存的定时分析来读取。这个概括暗示着通常生成的许多代码序列将把信息泄漏到可被其他不那么有特权的软件读取的缓存分配的模式中。这个问题的最严重形式是本节中早前描述的那种,其中不那么有特权的软件能够选择什么值被以这种方式泄漏。
因此,希望提供针对这类攻击的对策。根据本文描述的技术,缓存控制电路34的操作被修改,使得在敏感分配条件存在的情况下,其更改至少一些数据被分配到数据缓存16中的方式。特别地,当处理电路推测性地执行识别要被分配到缓存中的数据的存储器访问指令,并且敏感分配条件被确定为存在时,该数据仍被允许被分配到缓存中,但有条件分配标志与分配到缓存中的数据相关联地被设置。然后,在检测到关于该有条件分配的数据的分配解决事件时,基于分配解决事件的类型来确定是要清除有条件分配标志以使得该数据之后被视为无条件分配的,还是引起缓存中的该数据的无效。
从本文论述的示例将会清楚,有多种可能的敏感分配条件可被检测,并且它们可具有关联的分配解决事件。另外,不直接链接到敏感分配条件的额外分配解决事件可发生。这后一种情况的一个示例是被有条件分配到缓存中的数据随后被经由非推测性访问指令来访问,表明该数据应当合法地在缓存中,该事件使得有条件分配的缓存线被转换成完全分配的缓存线。
虽然在一些实现方式中,一次可能只有单个敏感分配事件存在,但在一些实例中,在关联的分配解决事件发生之前可发生多个敏感分配事件。在这种情形中,可与缓存控制电路34相关联地提供跟踪存储40,其中跟踪存储的内容被缓存控制电路所维护,以对于每个等待的分配解决事件,识别出哪些有条件分配的缓存线与该分配解决事件相关联。从而,当接收到分配解决事件时,可以确定哪些有条件分配的缓存线受到该分配解决事件的影响,并且取决于该分配解决事件的形式,对于那些识别的缓存线可采取适当的动作。如前所述,这可涉及将所有那些相关缓存线通过清除其有条件分配标志来转换成完全分配的缓存线,或者可要求这些受影响的缓存线中的数据的无效。
有条件分配标志信息可按多种方式来维护,只要可以确定哪些缓存线被有条件分配到了缓存中。图2图示了一个示例布置,其中通过使用关联的标签RAM条目内的额外信息比特,与每个缓存线条目相关联地提供有条件分配标志。特别地,对于缓存的数据RAM 80内的每个缓存线75,在缓存的标签RAM 50内提供相应的标签RAM条目52。本领域技术人员将会理解,标签RAM条目将包括标签部分55,这是被与查找请求的地址相比较的地址的部分,以便确定在该条目中是否存在命中,即查找请求所指定的地址是否在试图访问关联的缓存线75中存储的数据。也可在标签RAM条目52内提供额外信息,包括识别相应缓存线内容是否有效的有效标志60,以及可被设置来指示出缓存线75的内容比存储器系统中的相应数据更时新的脏污标志65。在脏污标志被设置的情况下,于是当该缓存线要被无效时,例如为了为要被分配到缓存中的新的数据线腾出空间,则当前的缓存线内容将首先需要被逐出到存储器系统。
如图2中所示,在每个标签RAM条目52中可提供额外的字段70来识别出相应缓存线75中的数据是否被有条件分配。在一个特定示例中,当标志70被设置到逻辑1值时,这指示出数据被有条件分配,并且当其被设置到逻辑0值时,这指示出数据被无条件分配。
虽然图2图示了可维护有条件分配标志信息的一种具体方式,但将会明白其他结构可用于为受影响的缓存线维护有条件分配信息。
图3是图示出在一个示例布置中缓存控制电路34的操作的流程图。在步骤100,确定存储器访问指令的推测性执行是否识别了要被分配到缓存16中的数据。如果是,则在步骤105确定敏感分配条件是否存在,并且如果否,则过程前进到步骤110,在这里数据被以通常方式分配到缓存中。然而,如果敏感分配条件存在,则过程前进到步骤115,在这里数据被分配到缓存线中,但对于该缓存线,有条件分配标志被设置。在一个示例实现方式中,有效标志在这种有条件分配时被设置,以允许随后对于有条件分配的数据发生命中。在其他实现方式中,有效和有条件标志信息可被组合成特定的编码并且对于有条件分配的有效缓存线的命中可被与对于无条件分配的缓存线的命中略微不同地对待。
图4是图示出缓存控制电路如何处理分配解决事件的流程图。在步骤150,确定是否检测到关于至少一个有条件分配的缓存线的分配解决事件。当检测到这种分配解决事件时,则在步骤155,确定分配解决事件的类型是否指示出数据应当保持在缓存内。如将参考剩余附图论述的,有多种不同类型的分配解决事件可被使用,并且取决于与该分配解决事件相关联的信息,可确定相关的有条件分配数据是否应当保持在缓存内。如果确定数据应当保持在缓存内,则过程前进到步骤160,在这里对于与分配解决事件相关联的每个缓存线清除有条件分配标志,使得这些缓存线的每一者变成正常分配缓存线。如前所述,在一个实施例中,在有条件分配时设置有效标志,因此所要求的只是清除分配标志。然而,在有效标志和有条件标志信息被包含在单个编码内的情况下,则该编码的状态将会变化以识别出数据不再被有条件分配,并且现在被视为完全分配的有效数据。
如果在步骤155确定分配解决事件的类型指示出数据不应当保持在缓存中,则过程前进到步骤165,在这里与分配解决事件相关联的每个有条件分配的缓存线被无效。
如前所述,在一个实现方式中,可能在任何时间点只有一个级别的推测与缓存线到缓存中的有条件分配相关,并且因此当关联的解决事件发生时,可以对于所有有条件分配的缓存线采取动作。然而,在其他实现方式中,可支持一个级别的嵌套,其中将会触发敏感分配条件的存在的多个敏感分配事件可在关联的分配解决事件发生之前发生。如早前参考图1所述,在该情况下跟踪存储40可被缓存控制电路34所维护,以保持跟踪哪些有条件分配的缓存线与每个级别的嵌套相关联,从而对于每个等待的分配解决事件,可以确定哪些有条件分配的缓存线与该分配解决事件相关联,并且因此确定哪些应当响应于接收到每个分配解决事件而经历步骤160或步骤165。然而,将会明白,有若干个不同的机制可用于将每个分配解决事件与相关的有条件分配缓存线相链接。例如,可以使用在处理器内操作的链接表(结合记录缓冲器、异常FIFO或者用于跟踪推测性执行和关联的事件集合的无论什么其他机制)。
图5A示意性图示了可引起对敏感分配条件的存在的检测的一种场景。特别地,假设有条件分支指令200要被执行,但关联的分支操作的结果在处理电路开始推测性执行一块代码205时是未解决的,其中该块代码包括到可缓存存储器地址的一个或多个加载指令,这些指令可使得数据被分配到缓存中。有条件分支指令200的分支目标可以是分支目标210,使得如果分支被确定为要被采取,则指令流将会分支到分支目标210。然而,如果其不被采取,则执行该块代码205将是正确的。有条件分支可采取多种形式,但在一个场景中可以是边界检查操作,并且因此图5A的示例是可用于试图推测性地将数据加载到缓存中以使得非可信代码能够执行基于推测的缓存定时边信道攻击的那类场景的示例。然而,根据早前描述的技术,在敏感分配条件被确定为存在时,在此情况下在有条件分支的结果尚未被解决时,缓存控制电路将确保作为执行该块代码205的结果被分配到缓存中的任何缓存线将被标记为有条件分配的。
图5B是图示出缓存控制电路如何响应关联的分配解决事件(在此情况下是在有条件分支被解决时)的流程图。在步骤220,等待有条件分支被解决,在此之后在步骤225,确定现在检测到了分配解决事件。在步骤230,确定该分支是否被采取。对于图5A的示例,如果分支未被采取,则该块代码205确实应当被执行,并且因此将任何有条件分配的数据保持在缓存内是可接受的。因此,在步骤240,对于由于代码块205的推测性执行而有条件分配的缓存线清除有条件分配标志。
相反,如果分支被采取,则该块代码205不应当被执行,并且在步骤235,由于代码块205的推测性执行而被有条件分配的缓存线被无效。如果这些缓存线的任何一者被标记为脏污,则这可要求清洁和无效操作被执行,以将数据逐回到存储器系统的更低级别。虽然处理器通常将被布置成其不会推测性地写入到缓存中,但存在某些场景,其中在推测性执行期间分配到缓存中的数据可以是脏污的,并且因此在上述情形中需要经历清洁和无效操作。例如,在多处理器系统中,缓存线可在处于脏污状态中的同时在不同处理器的缓存之间迁移。因此,第一处理器可在其本地缓存中推测性地执行线填充操作,并且在该过程期间从第二处理器的本地缓存接收脏污缓存线(由于该缓存线先前已被修改,但尚未被写回到存储器)。因此,脏污数据是不是由第一处理器上的推测性执行产生而是由第二处理器上的合法执行产生的合法数据。从而,当在上述情形中决定将缓存线从第一处理器的缓存冲刷时,脏污数据被写回到存储器。
图6A图示了可引起敏感分配条件的存在的另一示例场景。在此情况下,实质上考虑相同的代码序列,但在此情况下假定推测屏障指令215紧随着有条件分支指令200。推测屏障指令的用途是在屏障时段期间确保阻止处理电路推测性执行出现在推测屏障指令之后的至少某些类型的指令,屏障时段结束在对于在序列中出现在推测屏障指令之前的任何推测性执行的指令解决了推测时。因此,在此示例中,包括有条件分支指令200在内的推测屏障之前的涉及推测性执行的任何早前指令将需要被解决,然后出现在推测屏障之后的这种指令才被允许执行。这可禁止攻击者执行早前提及的基于推测的缓存定时边信道攻击。
推测屏障的目标是确保在屏障时段期间可被推测性执行的后续指令只有不会由于其执行的结果而产生可见的副作用的那些。实际上,这意味着任何可改变诸如缓存的内容之类的体系结构上不可见的资源的状态的指令通常在屏障时段期间将不被允许推测性执行。然而,根据早前描述的技术,推测性存储器访问被允许执行,这是由于如下事实:它们将被有条件地分配到缓存中,并且如果在所有在前推测被解决之时确定这些指令不应当被执行,则缓存内的效果可通过使这些有条件分配的缓存线无效而得以撤销。
图6B是图示出一旦推测屏障之前的所有在前推测被解决,缓存控制电路执行的步骤的流程图。在步骤250,过程等待直到推测屏障之前的所有推测被解决为止。此时在步骤255确定已检测到分配解决事件,然后在步骤260确定关于出现在推测屏障之前的推测性执行的指令是否有任何不正确推测。如果否,则在步骤265对于缓存内的任何有条件分配的缓存线清除有条件分配标志。然而,如果有某种程度的误推测发生,则过程前进到步骤270,在这里任何有条件分配的缓存线被标记为无效。
图7B和图7B图示了在一个示例实现方式中可如何在从较低到较高异常级别的转变发生时确定敏感分配条件存在,然后在处理器变回到较低异常级别时可检测到相应的分配解决事件(处理器异常级别的变化被认为是处理器的状态的变化的示例)。特别地,如图7A处所示,如果处理器变化到较高异常级别300,则在步骤305确定敏感分配条件存在。当处理器处于较高异常级别时,有可能处理器将能够访问在较低异常级别中执行时的处理器不可用的敏感数据。由于早前提及的基于推测的缓存定时边信道攻击是基于非可信代码以使得监控软件执行推测性存储器访问的序列的方式控制推测的,于是通过在从较低异常级别转变到较高异常级别时触发敏感分配条件,这可确保当在较高异常级别处理时分配到缓存中的任何数据最初被有条件地分配到缓存中。
在处理器在较高异常级别执行的时间期间,某些有条件分配的缓存线可通过在较高异常级别执行的活动而被转换成无条件分配的缓存线。例如,非推测性访问可在有条件分配的缓存线内命中,因此指示出该缓存线应当存在于缓存中。此时,有条件分配标志可被清除以将该缓存线转换成完全分配的缓存线。
然而,在处理器从较高异常级别变回到较低异常级别时,于是图7B的过程可被执行。特别地,当在步骤310处理器变回到较低异常级别时,这被视为分配解决事件,并且在步骤315仍具有有条件分配标志的任何有条件分配到缓存中的缓存线被无效。这将去除较低异常级别代码随后试图对于在处理器在较高异常级别中执行时分配的缓存线执行定时分析的前景。作为图7A和7B中所示的方案的替换,该过程可被布置成使得当从给定的异常级别移动到较高特权异常级别时,任何有条件分配的数据被转换成无条件分配的数据。结果,在图7B中的步骤315处当从给定的异常级别移动到较少特权的异常级别时执行的无效将只是使在该给定异常级别推测性访问的数据无效。
图8是示意性图示出非推测性访问如何可被视为关于特定缓存线的另一类型的分配解决事件的流程图。特别地,在步骤350,当非推测性访问命中在被有条件分配的缓存线上时,过程前进到步骤355,在这里该缓存线的有条件分配标志被清除,以将该缓存线转换成完全分配的缓存线。
以上描述的有条件分配缓存线的行为也可被扩展到试图在预期数据被处理电路所要求的情况下从存储器预取该数据的任何数据预取电路的活动。特别地,当敏感分配条件存在时,数据预取电路的行为可如图9中所示被更改。在步骤400确定敏感分配条件是否存在,并且如果否,则过程前进到步骤405,在这里数据预取电路像通常那样预取数据,这可导致数据被以标准方式分配到缓存中。然而,如果敏感分配条件存在,则过程前进到步骤410,在这里由于数据预取电路的活动而在缓存中作出的任何分配被标记为有条件分配的。
按照参考图8描述的机制,一旦预取的数据已被有条件分配到缓存中,如果无条件执行的真正访问请求命中该缓存线中,则可通过清除有条件分配标志将该数据转换成无条件分配格式。另外,当发生与敏感分配条件相关联的分配解决事件时,则对于有条件分配的预取数据采取的动作可与对于任何其他有条件分配的数据采取的相同。因此,取决地分配事件的类型,包含预取数据的相关缓存线可被无效,或者被转换成完全分配的缓存线。
虽然在图9中假定预取数据只在敏感分配条件存在的情况下被有条件分配,但在替换实现方式中,系统可最初始终将预取数据视为有条件分配的,并且相应地始终在缓存线对于被预取电路预取的数据被分配到缓存中时设置有条件分配标志。
图10A至10C图示了缓存线的有条件分配可发生的另一示例场景。如图10A中所示,假定第一存储器访问指令在被执行的过程中,但可中止,并且在第二存储器访问指令被执行时,尚不知道第一存储器访问指令是否将会中止。第二存储器访问指令仅在第一存储器访问指令没有中止的情况下要求执行。结果,第二存储器访问指令被推测性地执行。
如图10B中所示,在步骤450确定第一存储器访问的状态在第二存储器访问被执行时是否是未知的。如果否,则在步骤455执行通常处理,并且被第二存储器访问指令访问的任何可缓存数据可被以正常方式分配到缓存中。然而,如果第一存储器访问的状态是未知的,则过程前进到步骤460,在这里被第二存储器访问指令访问的任何数据被有条件分配到缓存中。
图10C图示了关联的分配解决事件。特别地,当在步骤465确定第一存储器访问的状态已被解决时,过程前进到步骤470,在这里确定第一存储器访问是否被中止。如果否,则过程前进到步骤475,在这里对于与第二存储器访问相关联的缓存线清除有条件分配标志。然而,如果第一存储器访问被中止了,则过程前进到步骤480,在这里与第二存储器访问相关联的缓存线被无效。
将会明白上述技术提供了用于控制将数据分配到缓存存储中的一种改善的机制,其可针对某些类型的缓存定时分析攻击提供一些保护。
在本申请中,词语“被配置为”被用于意指装置的元素具有能够执行定义的操作的配置。在这个上下文中,“配置”指的是硬件或软件的布置或者互连方式。例如,装置可具有提供定义的操作的专用硬件,或者处理器或其他处理装置可被编程为执行该功能。“被配置为”并不意味着为了提供定义的操作,装置元素需要被以任何方式改变。
虽然本文已参考附图详细描述了本发明的说明性实施例,但要理解本发明不限于这些确切的实施例,并且在不脱离如所附权利要求限定的本发明的范围和精神的情况下,本领域技术人员可在其中实现各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可与独立权利要求的特征进行各种组合。

Claims (20)

1.一种装置,包括:
处理电路,用于执行指令;
缓存存储,用于存储当执行所述指令时访问的数据;以及
缓存控制电路,被布置为在敏感分配条件被确定为存在时,响应于所述处理电路推测性地执行识别要被分配到所述缓存存储中的数据的存储器访问指令,将所述数据分配到所述缓存存储中并且与被分配到所述缓存存储中的所述数据相关联地设置有条件分配标志;
所述缓存控制电路响应于检测到分配解决事件,基于所述分配解决事件的类型来确定是要清除所述有条件分配标志以使得所述数据之后被视为无条件分配的,还是引起所述缓存存储中的所述数据的无效。
2.如权利要求1中要求保护的装置,其中:
所述敏感分配条件至少在如下时间被确定为存在:执行所述存储器访问指令的要求取决于在所述处理电路推测性执行所述存储器访问指令之时未解决的分支操作的结果。
3.如权利要求2中要求保护的装置,其中所述分配解决事件至少发生在所述分支操作的结果被解决时。
4.如权利要求3中要求保护的装置,其中当所述分支操作的结果指示出要求所述存储器访问指令的执行时,所述缓存分配电路被布置为清除与被所述存储器访问指令的推测性执行所访问的所述缓存存储中的所述数据相关联的所述有条件分配标志,并且当所述分支指令的结果指示出所述存储器访问指令不会被执行时,所述缓存分配电路被布置为引起被所述存储器访问指令的推测性执行所访问的所述缓存存储中的所述数据的无效。
5.如权利要求2至4的任何一项中要求保护的装置,其中所述分支操作是范围检查操作来确定识别要被所述存储器访问指令访问的数据的存储器地址是否在存储器地址的可允许范围内,并且所述存储器访问指令将在所述存储器地址在所述可允许范围内时被执行。
6.如任何在前权利要求中要求保护的装置,其中所述敏感分配条件至少当在指令的序列中遇到推测屏障指令时被确定为存在,所述推测屏障指令在屏障时段期间阻止所述处理电路推测性执行在所述序列中出现在所述推测屏障指令之后的一种或多种类型的指令,所述屏障时段结束在对于在所述序列中出现在所述推测屏障指令之前的任何推测性执行的指令解决了推测时。
7.如权利要求6中要求保护的装置,其中所述存储器访问指令在所述屏障时段期间被允许被推测性执行,但所述数据是在所述有条件分配标志被设置的情况下被分配到所述缓存存储中的。
8.如权利要求7中要求保护的装置,其中:
所述分配解决事件至少发生在对于在所述序列中出现在所述推测屏障指令之前的任何推测性执行的指令解决了推测时;并且
当所述推测的解决指示出作出了不正确推测时,所述缓存控制电路被布置为使得有条件分配的数据在所述缓存存储中被无效。
9.如任何在前权利要求中要求保护的装置,其中所述敏感分配条件至少在所述处理电路的状态从第一状态变化到第二状态时被确定为存在,在所述第二状态中所述处理电路能够访问当所述处理电路在所述第一状态中时不可访问的一个或多个存储器地址处的数据。
10.如权利要求9中要求保护的装置,其中所述分配解决事件至少发生在所述处理电路的状态从所述第二状态变化到所述第一状态时,所述缓存控制电路被布置为,当在所述处理电路的状态从所述第二状态变化到所述第一状态时所述有条件分配标志仍被设置时,引起所述缓存存储内的关联数据的无效。
11.如任何在前权利要求中要求保护的装置,其中所述分配解决事件至少发生在非推测性执行的另一存储器访问指令引起对关联的有条件分配标志被设置的所述缓存存储中的数据的访问时,所述缓存控制电路响应于由所述另一存储器访问指令的执行引起的访问而清除所述有条件分配标志以使得所述数据之后被视为无条件分配的。
12.如任何在前权利要求中要求保护的装置,还包括:
数据预取电路,用于执行数据预取操作,以在预期数据被所述处理电路所要求的情况下将该数据预加载到所述缓存存储中;并且
所述缓存控制电路还被布置为,至少在所述敏感分配条件被确定为存在时,与由所述数据预取电路获得的并且被分配到所述缓存存储中的预加载数据相关联地设置所述有条件分配标志。
13.如任何在前权利要求中要求保护的装置,其中所述敏感分配条件至少在以下时间时被确定为存在:可中止的在前存储器访问指令被执行,并且被所述处理电路推测性执行的存储器访问指令是如果所述在前存储器访问指令中止则不会被执行的存储器访问指令。
14.如任何在前权利要求中要求保护的装置,其中:
在所述敏感分配条件存在时,所述处理电路被布置为推测性地执行多个存储器访问指令,以使得数据被分配到所述缓存存储的多个条目中,并且关联的有条件分配标志被设置;并且
当所述分配解决事件是同等地应用到所述多个条目的每一者中的数据的全局分配解决事件时,所述缓存控制电路被布置为,取决于所述全局分配解决事件的类型,或者为所述多个条目的每一者清除所述有条件分配标志,或者引起所述多个条目的每一者中的数据的无效。
15.如任何在前权利要求中要求保护的装置,其中被所述处理电路推测性执行的存储器访问指令是被执行来将数据从存储器加载到所述处理电路可访问的至少一个寄存器中的加载指令。
16.如任何在前权利要求中要求保护的装置,其中当所述缓存控制电路使得所述数据被无效并且所述数据被标记为脏污时,所述缓存控制电路将在所述缓存中的关联条目被标记为无效之前使得所述数据被从所述缓存存储逐出。
17.如任何在前权利要求中要求保护的装置,其中所述分配解决事件至少发生在引起所述敏感分配条件的关联敏感分配事件已被解决时。
18.如权利要求17中要求保护的装置,其中:
所述缓存存储包括多个缓存线,并且所述缓存控制电路被布置为当在所述敏感分配条件存在时将数据分配到缓存线中时将该缓存线标记为有条件分配的缓存线;
在关联的分配解决事件发生之前可发生多个敏感分配事件;并且
所述装置还包括跟踪存储,该跟踪存储被所述缓存控制电路参考来对于每个等待的分配解决事件识别哪些有条件分配的缓存线与该分配解决事件相关联。
19.一种用于控制将数据分配到缓存存储中的方法,所述缓存存储用于存储数据来供处理电路在执行指令时访问,所述方法包括:
在敏感分配条件被确定为存在时,通过如下方式响应所述处理电路推测性地执行识别要被分配到所述缓存存储中的数据的存储器访问指令:将所述数据分配到所述缓存存储中并且与被分配到所述缓存存储中的所述数据相关联地设置有条件分配标志;并且
在检测到分配解决事件时,基于所述分配解决事件的类型来确定是要清除所述有条件分配标志以使得所述数据之后被视为无条件分配的,还是引起所述缓存存储中的所述数据的无效。
20.一种装置,包括:
处理装置,用于执行指令;
缓存存储装置,用于存储当执行所述指令时访问的数据;以及
缓存控制装置,在敏感分配条件被确定为存在时,用于通过如下方式响应所述处理装置推测性地执行识别要被分配到所述缓存存储装置中的数据的存储器访问指令:将所述数据分配到所述缓存存储装置中并且与被分配到所述缓存存储装置中的所述数据相关联地设置有条件分配标志;
所述缓存控制装置用于通过如下方式响应对分配解决事件的检测:基于所述分配解决事件的类型来确定是要清除所述有条件分配标志以使得所述数据之后被视为无条件分配的,还是引起所述缓存存储装置中的所述数据的无效。
CN201980023742.7A 2018-04-06 2019-03-20 用于控制将数据分配到缓存存储中的装置和方法 Pending CN111936980A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/946,848 2018-04-06
US15/946,848 US10394716B1 (en) 2018-04-06 2018-04-06 Apparatus and method for controlling allocation of data into a cache storage
PCT/GB2019/050779 WO2019193314A1 (en) 2018-04-06 2019-03-20 An apparatus and method for controlling allocation of data into a cache storage

Publications (1)

Publication Number Publication Date
CN111936980A true CN111936980A (zh) 2020-11-13

Family

ID=65995775

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980023742.7A Pending CN111936980A (zh) 2018-04-06 2019-03-20 用于控制将数据分配到缓存存储中的装置和方法

Country Status (4)

Country Link
US (1) US10394716B1 (zh)
EP (1) EP3776220A1 (zh)
CN (1) CN111936980A (zh)
WO (1) WO2019193314A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11675594B2 (en) * 2018-04-19 2023-06-13 Intel Corporation Systems, methods, and apparatuses to control CPU speculation for the prevention of side-channel attacks
JP7064135B2 (ja) * 2018-05-15 2022-05-10 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US11119784B2 (en) * 2018-06-29 2021-09-14 Intel Corporation Efficient mitigation of side-channel based attacks against speculative execution processing architectures
US10678548B2 (en) * 2018-08-24 2020-06-09 Apple Inc. Pipelined allocation for operand cache
US10757215B2 (en) * 2018-09-13 2020-08-25 Pivotal Software, Inc. Allocation of computing resources for a computing system hosting multiple applications
US11635965B2 (en) 2018-10-31 2023-04-25 Intel Corporation Apparatuses and methods for speculative execution side channel mitigation
GB2580426B (en) * 2019-01-11 2021-06-30 Advanced Risc Mach Ltd Controlling use of data determined by a resolve-pending speculative operation
US11163576B2 (en) * 2019-03-20 2021-11-02 Eta Scale Ab Systems and methods for invisible speculative execution
US10915326B1 (en) 2019-07-31 2021-02-09 Micron Technology, Inc. Cache systems and circuits for syncing caches or cache sets
US11010288B2 (en) * 2019-07-31 2021-05-18 Micron Technology, Inc. Spare cache set to accelerate speculative execution, wherein the spare cache set, allocated when transitioning from non-speculative execution to speculative execution, is reserved during previous transitioning from the non-speculative execution to the speculative execution
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
US10908915B1 (en) * 2019-07-31 2021-02-02 Micron Technology, Inc. Extended tags for speculative and normal executions
US11334495B2 (en) * 2019-08-23 2022-05-17 Arm Limited Cache eviction
US11029957B1 (en) 2020-03-27 2021-06-08 Intel Corporation Apparatuses, methods, and systems for instructions to compartmentalize code
US11947456B2 (en) * 2021-09-30 2024-04-02 Advanced Micro Devices, Inc. Weak cache line invalidation requests for speculatively executing instructions

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7774531B1 (en) * 2005-09-13 2010-08-10 Oracle America, Inc. Allocating processor resources during speculative execution using a temporal ordering policy
CN102473156A (zh) * 2009-08-20 2012-05-23 国际商业机器公司 推测版本控制高速缓存内的检查点
GB2533416A (en) * 2014-12-19 2016-06-22 Advanced Risc Mach Ltd Monitoring utilization of transactional processing resource
US20170242795A1 (en) * 2016-02-23 2017-08-24 International Business Machines Corporation Transactional memory system including cache versioning architecture to implement nested transactions

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5606687A (en) * 1993-10-07 1997-02-25 Sun Microsystems, Inc. Method and apparatus for optimizing supervisor mode store operations in a data cache
US20080040590A1 (en) * 2006-08-11 2008-02-14 Lea Hwang Lee Selective branch target buffer (btb) allocaiton
US20080040591A1 (en) * 2006-08-11 2008-02-14 Moyer William C Method for determining branch target buffer (btb) allocation for branch instructions
US9158685B2 (en) * 2012-09-11 2015-10-13 Apple Inc. System cache with cache hint control
US10324768B2 (en) 2014-12-17 2019-06-18 Intel Corporation Lightweight restricted transactional memory for speculative compiler optimization
US9734070B2 (en) * 2015-10-23 2017-08-15 Qualcomm Incorporated System and method for a shared cache with adaptive partitioning
US10848311B2 (en) * 2017-08-24 2020-11-24 Koninklijke Philips N.V. Edit script verification with match operations and difference operations

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7774531B1 (en) * 2005-09-13 2010-08-10 Oracle America, Inc. Allocating processor resources during speculative execution using a temporal ordering policy
CN102473156A (zh) * 2009-08-20 2012-05-23 国际商业机器公司 推测版本控制高速缓存内的检查点
GB2533416A (en) * 2014-12-19 2016-06-22 Advanced Risc Mach Ltd Monitoring utilization of transactional processing resource
US20170242795A1 (en) * 2016-02-23 2017-08-24 International Business Machines Corporation Transactional memory system including cache versioning architecture to implement nested transactions

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ARM: "Cache Speculation Side-channels", 《WHITEPAPER》, 31 January 2018 (2018-01-31), pages 3 - 30 *
喻明艳;张祥建;杨兵;: "基于跳跃访问控制的低功耗分支目标缓冲器设计", 计算机辅助设计与图形学学报, no. 04, 15 April 2010 (2010-04-15) *

Also Published As

Publication number Publication date
WO2019193314A1 (en) 2019-10-10
US10394716B1 (en) 2019-08-27
EP3776220A1 (en) 2021-02-17

Similar Documents

Publication Publication Date Title
US10394716B1 (en) Apparatus and method for controlling allocation of data into a cache storage
US11461243B2 (en) Speculative cache storage region
US11809316B2 (en) Speculation-restricted memory region type
US10649782B2 (en) Apparatus and method for controlling branch prediction
JP7377211B2 (ja) 投機的サイド・チャネル・ヒント命令
JP7413280B2 (ja) 複数のソフトウェア・ワークロードのための分岐予測キャッシュ
US20200410088A1 (en) Micro-instruction cache annotations to indicate speculative side-channel risk condition for read instructions
US11340901B2 (en) Apparatus and method for controlling allocation of instructions into an instruction cache storage
US11294828B2 (en) Apparatus and method for controlling allocation of information into a cache storage
CN110889147B (zh) 一种利用填充缓存抵御Cache边信道攻击的方法
CN111045731B (zh) 用于执行在推测屏障指令之后的分支指令的方法及装置

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