CN110442381A - 用于保护有条件的推测性指令执行的影子缓存 - Google Patents
用于保护有条件的推测性指令执行的影子缓存 Download PDFInfo
- Publication number
- CN110442381A CN110442381A CN201811036866.2A CN201811036866A CN110442381A CN 110442381 A CN110442381 A CN 110442381A CN 201811036866 A CN201811036866 A CN 201811036866A CN 110442381 A CN110442381 A CN 110442381A
- Authority
- CN
- China
- Prior art keywords
- processor
- instruction
- caching
- memory
- computing device
- 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.)
- Withdrawn
Links
- 230000008878 coupling Effects 0.000 claims abstract description 10
- 238000010168 coupling process Methods 0.000 claims abstract description 10
- 238000005859 coupling reaction Methods 0.000 claims abstract description 10
- 230000008859 change Effects 0.000 claims description 14
- 238000000034 method Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 7
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 claims description 5
- 230000003068 static effect Effects 0.000 description 27
- 238000005516 engineering process Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 6
- 230000001681 protective effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- BASFCYQUMIYNBI-UHFFFAOYSA-N platinum Chemical compound [Pt] BASFCYQUMIYNBI-UHFFFAOYSA-N 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 229910052697 platinum Inorganic materials 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 241000406668 Loxodonta cyclotis Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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/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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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
- G06F9/3846—Speculative instruction execution using static prediction, e.g. branch taken strategy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种计算装置,具有:处理器;存储器;第一缓存,被耦合在存储器和处理器之间;以及第二缓存,被耦合在存储器和处理器之间。在推测性执行一个或多个指令期间,推测性执行的影响被包含在第二缓存中。
Description
相关申请
本申请要求于2018年5月2日提交的美国临时专利申请序列号62/665,803并且题为“Shadow Cache for Securing Conditional Speculative Instruction Execution”的申请日的权益,其申请的全部公开通过引用并入本文。
技术领域
本文所公开的至少一些实施例一般涉及计算机架构,并且更具体地但不限于涉及计算机处理器中的有条件的推测性指令执行。
背景技术
计算系统中的存储器地址标识了计算系统中的存储器位置。存储器地址是通常被显示和被操作为无符号整数的固定长度的数字序列。数字或位的序列的长度可以被认为是存储器地址的宽度。存储器地址可以在中央处理单元(CPU)的某些结构(诸如指令指针(或程序计数器)和存储器地址寄存器)中被使用。CPU的这种结构的大小或宽度通常确定了在这种CPU中所使用的存储器地址的长度。
推测性执行是一种其中处理器基于在关于一个或多个指令是否应该被执行的确定结果是可用之前在某些情况下需要执行这样的指令的推测来执行一个或多个指令的计算技术。推测性执行可能导致安全漏洞,诸如在2018年进行公开的Meltdown和Spectre。
附图说明
实施例借由示例的方式被示出而在附图中不受限制,在附图中相同的附图标记表示类似的元件。
图1示出了根据一个实施例的使用地址系统的计算机系统。
图2示出了图1的地址系统中的静态对象标识。
图3和4示出了使用静态对象标识来映射不同地址空间的地址。
图5示出了在存储器地址中使用对象标识以保护条件推测性指令执行的方法。
图6示出了被用于保护条件推测性指令执行的影子缓存。
具体实施方式
本公开包括使用影子缓存来包含和隔离指令的推测性执行的影响的技术。在确定需要执行指令之后,影子缓存中的结果被合并到主缓存中。如果确定实际执行路径不涉及指令的推测性执行,则丢弃影子缓存中的结果。在影子缓存中的推测性执行的影响的隔离可以防止基于主缓存中的推测性执行的影响的可用性的安全攻击。
本公开还包括在指令集(例如,128位指令)的预定宽度(例如,128位)的地址中使用静态对象标识号来表示某些类型的对象的技术,所述对象诸如内核对象、使用由其他指令集(例如,64位指令、32位指令)生成和/或使用的较小宽度(例如,64位、32位)的地址的对象等等。通常,可以使用各种处理器中的各种指令集(例如,128位指令、64位指令、32位指令)来生成预定宽度(例如,128位)的地址,这些处理器可以使用这样的指令集来生成和/或使用预定宽度(例如,128位)的地址。因此,预定宽度(例如,128位)不限于特定类型的指令集和/或特定宽度的指令。
本公开还包括在存储器地址中使用对象标识号来保护条件推测性指令执行的技术。例如,当存储器地址的静态对象标识号标识了操作系统的内核对象时,处理器可以避免对内核对象的推测性执行,并因此提高计算系统的安全性并防止经由推测性执行攻击操作系统的内核的潜在安全威胁。例如,当与推测时要被执行的后续指令相关联的存储器地址的对象标识号与在后续指令之前执行的先前指令相关联的对象标识号不同时,处理器可以中止执行随后指令的推测性执行的尝试以用于改进安全性。
图1示出了根据一个实施例的使用地址系统的计算机系统。
在图1中,处理器(101)(例如,微处理器或CPU)具有执行单元(103),其用于执行根据可以生成128位虚拟存储器地址的一个或多个指令集(例如,128位指令集)而被编程的指令(例如,105)的操作。
128位指令集的示例是由RISC-V基金会标识出的RISC-V指令集的RV128。
处理器(101)被配置有预定宽度(诸如128位)的寄存器(例如,102)。处理器(101)可以获取预定宽度的指令(105),并使用执行单元(103)对指令(105)中所提供的数据和/或在指令(105)中标识出的一个或多个寄存器(例如,102)中所提供的数据执行操作,并且在适用时,将由指令(105)标识出的操作的结果存储在指令(105)中标识出的寄存器中。
寄存器(例如,102)可以包括预定宽度(例如,128位)的存储器寄存器和/或预定宽度(例如,128位)的指令指针(或程序计数器)。
例如,指令可以根据指令集的预定规范而被编码,以执行整数计算(例如,加、或异或)、以执行控制传输(例如,跳转、分支)、以在使用预定宽度的地址(例如,111)所指定的存储器位置处加载来自存储器的数据/指令、或者以将数据存储在使用预定宽度(例如,128位)的地址(例如,111)所指定的存储器位置处。
例如,地址(111)可被用于标识将指令存储在计算机系统中的存储器位置;并且地址(111)可以被放置在指令指针(或程序计数器)中以标识由处理器(101)执行的指令。
例如,地址(111)可被用于标识将数据项存储在计算机系统中的存储器位置;并且地址(111)可以被放置在存储器寄存器中以标识要由处理器(101)在执行指令时操作的数据。
通常,128位指令集可以寻址128位地址空间。类似地,64位指令集可以寻址64位地址空间;以及32位指令集可以处理32位地址空间。
在某些情况下,64位指令(例如,125)(或32位指令(例如,126))也可以生成和/或使用128位地址(例如,111)。例如,当128位地址被存储在地址寄存器(例如,102)中时,在处理器(101)(和/或另一个处理器)中所执行的64位指令(125)(或32位指令(126))可以对128位地址(111)进行操作或使用128位地址(111)和/或生成另一个128位地址。因此,存储器地址的宽度不一定受生成或使用存储器地址的指令的宽度限制。
在图1所示的计算机系统中,128位地址(111)被配置为包括两个部分:64位对象ID(113)和相对于由对象ID(113)标识出的对象的64位偏移量(115)。例如,偏移量(115)可以是字节偏移量。
64位偏移量(115)可被用于索引诸如程序计数器、堆栈指针,用于从存储器位置加载数据和/或指令,或用于将数据存储在该位置处。存储器位置可以是在经由一个通信信道(例如,存储器总线)被连接到处理器(101)的主存储器(107)中,或者在经由另一个通信信道(例如,通过网络109)被连接到处理器的存储装置(119)中。
图1示出了128位地址的示例结构。其他大小选择可以被实施以具有对象ID(113)和相对于由对象ID标识出的对象的偏移量(113)的结构。例如,地址的宽度可以不同于128位。例如,对象ID(113)和偏移量(115)可以被配置为具有不同的位数。
通常,图1中所示的128位地址系统可以被配置为独立于指令集架构,使得具有不同指令集的不同处理器(例如,103)的不同供应商可以使用相同的地址系统。使用地址(128)进行的存储器访问请求可以通过存储器总线、输入/输出总线和/或网络(109)在计算机系统中像路由互联网协议(IP)分组那样被路由。优选地,存储器/存储位置与地址(111)之间的关联在时间和空间上是持久的。
响应于指令(105、125或126),处理器(101)可以访问由被存储在寄存器(102)中的128位存储器地址(111)标识出的数据项。地址(111)的对象ID(113)可用于标识具有不同名称的对象。这样的对象可以是具有由集中名称服务器(117)所控制、分配、发布和/或注册的名称的软件或硬件结构。名称服务器(117)可以经由计算机网络(109)被耦合到处理器(101);并且由对象ID(113)表示的对象(例如,121或123)可以是在经由存储器总线而被耦合到处理器(101)的存储器(107)中、或者是在经由网络(109)被耦合到处理器(101)的存储装置(119)中、或者是在网络(109)上被耦合到另一个处理器的存储器中。
由地址(111)中的对象ID(113)标识出的对象可被用于对位置和保护机制、语言特定/架构属性(诸如分区全局地址空间(PGAS)节点)、加密的数据、和/或区块链进行指定。
可以使用名称服务器(117)针对由可以包括因特网的网络(109)连接的整个计算机系统创建或分配对应对象(121或123)的对象ID(113)。
优选地,使用图1所示的格式中的地址(例如,111)的地址空间在时间和空间上是唯一的。支持地址空间的任何计算机都可由名称服务器(117)在网络(109)上寻址。
当处理器(101)正第一次访问对象时,访问可以需要验证访问许可(例如,下载可执行文件、访问访问控制列表(ACL)中的条目),并且验证对象的访问权限(例如,读、写、执行、通过受保护的子对象的访问、执行域)。可以经由用户级别(例如,黄金、铂金、执行铂金)和管理级别(例如,1、2、...、n)的分类来标识执行域。
某些静态对象ID可被用于标识预定的对象类型或对象空间,如图2所示。
图2示出了图1的地址系统中的静态对象标识。
例如,具有零(0)的预定值的对象ID(141)可被用于标识操作系统(131)的任何内核对象(133);并且对象ID(141)对于计算机系统中的所有节点上的内核对象(例如,133)可以是静态的,而不管计算机系统中的内核对象(133)的位置如何。操作系统(131)可以具有不是内核(133)的一部分的实用程序(例如,135)。
例如,具有一(1)的预定值的对象ID(143)可被用于标识使用64位指令(143)编程的应用(137)的任何对象;并且对象ID(143)对于计算机系统中的所有节点上的64位指令对象(例如137)可以是静态的,而不管计算机系统中的64位指令对象(137)的位置如何。
例如,具有二(2)的预定值的对象ID(145)可被用于标识使用32位指令编程的应用(139)的任何对象(147);并且对象ID(145)对于计算机系统中的所有节点上的32位指令对象(例如139)可以是静态的,而不管计算机系统中的32位指令对象(139)的位置如何。
静态对象ID(141、143和/或145)提供关于经由具有静态对象ID(141、143和/或145)的存储器地址(例如,111)所访问的对象的预定信息。
例如,当处理器(101)使用其中对象ID(113)是静态对象ID(141)的地址(111)来访问存储器位置时,处理器(101)可以确定被存储在该存储器位置中的数据或指令是用于操作系统(131)的内核对象(133)。因此,处理器(101)可以基于所访问的存储器是用于操作系统内核(133)的信息来调整其操作(例如,优先级、安全级)。
类似地,当处理器(101)使用其中对象ID(113)是静态对象ID(143或145)的地址(111)来访问存储器位置时,处理器(101)可以确定被存储在该存储器位置中的数据或指令是用于64位应用(137)或32位应用(139)。因此,处理器(101)可以调整其操作以优化应用的性能、优先级和/或安全性。
通常,静态对象ID(例如,141、143和/或145)可被用于向处理器(101)提供关于由包含静态对象ID(例如,141、143和/或145)的存储器地址(111)所引用的对象的预定信息,而无需联系名称服务器(117)来查找对象(例如,121或123)的属性。因此,计算机系统和/或处理器(101)可以使用预定信息有效地处理使用包含静态对象ID(例如,141、143或145)的地址(111)而获取到的数据和/或指令。例如,静态ID可被用于标识预定宽度(例如,128位或64位)的分区全局地址空间(PGAS)地址、互联网协议地址的版本(例如,互联网协议版本6(IPv6))、唯一ID等。例如,静态ID可被用于指示对象是用户对象、操作系统(OS)的内核对象、还是OS/服务器对象的非内核部分。例如,静态ID可被用于指示是否启用(invoke)系统调用、是否启用对OS/服务器的非内核部分的调用、或者是否启用对OS的内核的调用。在某些情况下,根据预定方案,地址可以具有在其中被编码的多于一个静态对象ID。例如,静态对象ID可以在地址中被提供,而不限于地址的特定64位字段。
图3和图4示出了使用静态对象标识来映射不同地址空间的地址。
使用静态对象标识(143和145),计算系统可以根据预定规则自动将64位地址空间和32位地址空间映射到128位地址空间。转换规则允许128位处理器运行64位应用和32位应用。
例如,由使用64位指令(147)编程的应用(137)所使用的64位地址(151)可以使用针对64位对象的预定对象ID(143)(一(1)的预定值)被转换为128位地址,并且使用64位地址(151)作为128位地址(111)中的偏移量(115),如图3所示。
例如,由使用32位指令(149)编程的应用(139)所使用的32位地址(153)可以使用针对32位对象的预定对象ID(145)(例如,二(2)的预定值)被转换为128位地址,并且使用32位地址(153)作为128位地址(111)中的偏移量(115),如图4所示。
由对象标识所提供的信息可被用于改进计算系统的安全操作。
例如,推测性指令执行已经在使用某些微处理器所实施的计算机系统中引起安全威胁,如Google的Project Zero团队在googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html的网页中所记录的那样,其在此通过引用并入本文。
本公开包括在存储器地址中使用对象标识号以改进与条件推测性指令执行相关的安全性的技术。
例如,当处理器(101)到达分支指令时,处理器(101)可以基于在分支指令之后对指令的对象ID的检查来确定是否在分支指令之后执行指令的推测性执行。
例如,如果在分支指令之后与指令相关联的存储器地址具有表示操作系统(131)的内核(133)的静态对象ID(141),则处理器(101)可以防止在分支指令之后指令的推测性执行。
例如,如果在分支指令之后与指令相关联的存储器地址引用了与当前对象不同的对象,诸如由与分支指令(或在分支指令之前所执行的指令)相关联的存储器地址标识出的对象,则处理器(101)可以防止在分支指令之后的指令的推测性执行。
图5示出了在地址中使用对象标识来保护条件推测性指令执行的方法。图5的方法可以在图1的计算系统中实施。
条件推测性指令执行涉及在一个或多个第一指令的结果是可用之前执行一个或多个第二指令。当可用时,一个或多个第一指令的结果可以允许执行一个或多个第二指令,或者防止执行一个或多个第二指令。因此,在一个或多个第一指令的结果是可用之前执行一个或多个第二指令是推测性的。如果一个或多个第一指令的结果允许执行一个或多个第二指令,则可以使用一个或多个第二指令的推测性执行的结果,这加速了指令的执行。如果一个或多个第一指令的结果防止执行一个或多个第二指令,则丢弃一个或多个第二指令的推测性执行的结果。
条件推测性指令执行可能导致安全漏洞。图5的方法可以改进与条件推测性指令执行相关的计算系统的安全性。
图5的方法包括:接收(151)分支指令(或类似地子例程调用);检查(153)继分支指令之后的一个或多个指令;确定(155)在一个或多个指令中所使用的地址(111)的对象ID(113);并确定(157)对象ID是否标识内核对象。
例如,在其中静态对象ID(141)(例如,零(0)的预定值)被用于标识内核对象(133)的计算机系统中,处理器(101)可以通过将对象ID与静态对象ID(141)(例如,预定值零(0))进行比较来确定对象ID是否(157)标识内核对象。
如果(157)在继分支指令之后的一个或多个指令中所使用的地址(111)的对象ID标识了内核对象(并且当前对象不是内核对象),则处理器不(159)执行一个或多个指令的推测性执行。这种安排防止了对使用条件推测性指令执行所进行的操作系统的内核的攻击。
否则(157),图5的方法还包括:确定(161)对象ID是否标识不同的对象。如果在继分支指令之后的一个或多个指令中所使用的地址(111)的对象ID所引用的对象与从其执行分支的当前对象不同,则存在安全风险;并且因此,处理器(101)不执行(159)一个或多个指令的推测性执行。通常,当处理器(101)执行推测中的从被寻址为一个对象改变为另一个对象的指令序列时,可以执行中介操作以确定是否存在安全风险。
否则(161),处理器(101)可以被允许执行(163)一个或多个指令的推测性执行。
因此,处理器(101)可以防止、避免或跳过对操作系统(131)的内核(133)的推测性执行和/或从当前对象(123)向不同对象(121)的推测性执行。
图5的方法可被用于保护涉及子例程调用的推测性指令执行。此外,基于对象ID(例如,静态对象ID)而制定的其他条件可被用于排除推测。
用于保护推测性指令执行的另一种技术包括使用影子缓存,如图6所示。可选地,影子缓存技术可以与上面讨论的对象标识技术结合使用。
图6示出了被用于保护条件推测性指令执行的影子缓存。
在图6中,处理器(101)使用被耦合在存储器(107)和处理器(101)之间的主缓存(209)来正常执行指令。例如,主缓存(209)可以包括传统一级缓存(201)、传统二级缓存(203)和/或传统三级缓存(205)。
在图6中,影子缓存(211)被提供在存储器(107)和处理器(101)之间。影子缓存(211)与主缓存(209)分离,并且在物理结构中可以或不可以复制缓存(209)。在某些情况下,影子缓存(211)和主缓存(209)具有相同数量的缓存级别;并且在其他情况下,影子缓存(211)和主缓存(209)具有不同数量的缓存级别。在某些情况下,影子缓存(211)和主缓存(209)具有相同的缓存容量;并且在其他情况下,影子缓存(211)和主缓存(209)具有不同的缓存容量。优选地,影子缓存(211)的逻辑结构与主缓存(209)的逻辑结构相同。逻辑结构的示例包括缓存属性,诸如关联类型、写入存储器策略(例如,回写或直写)、标签大小、缓存块大小。缓存(211和209)可以被应用于逻辑和物理关联。
为了准备一个或多个指令的推测性执行,处理器(101)可以使用从主缓存(209)获得的状态来初始化影子缓存(211)。例如,在某些情况下,影子缓存(211)在正常执行指令期间对主缓存(209)进行镜像,使得当处理器(101)开始在推测中执行一个或多个指令时,不需要进一步的初始化。在其他情况下,影子缓存(211)在正常执行指令期间对主缓存(209)不进行镜像;并且初始化操作被执行以考虑主缓存(209)对存储器(107)的影响。例如,可以在推测性执行之前将主缓存(209)的内容复制到影子缓存(211)。
在推测性执行一个或多个指令期间,处理器(101)可以经由影子缓存(211)访问存储器(107)中的数据。推测性执行的影响被包含在影子缓存(211)中。在确认在推测性执行期间所执行的指令应该被执行之前,推测性执行对主缓存(209)和存储器(107)没有影响。此外,对影子缓存(211)的访问限于一个或多个指令的推测性执行。这种安排防止经由推测性执行的影响所进行的未经授权的数据访问。
在图6中,处理器(101)中的一个或多个指令的推测性执行被阻止改变主缓存(209)和存储器(107)的状态。例如,在推测性执行期间,主缓存(209)被锁定以防止改变;并且存储器(107)可访问影子缓存(211);并且影子缓存(211)不允许刷新从影子缓存(211)到存储器(107)的改变。因此,处理器(101)中的一个或多个指令的推测性执行可以被物理上或管理上禁止改变主缓存(209)和存储器(107)的状态。处理器(101)中的一个或多个指令的推测性执行被允许改变影子缓存(211)的状态。
例如,来自处理器(101)的控制信号可以指示当前存储器访问是否是推测性执行的结果。当控制信号被声明时,使用影子缓存(211)并且不使用主缓存(209)。因此,推测性执行对主缓存(209)没有影响,但被允许改变影子缓存(211)。
在使用影子缓存(211)所进行的推测性执行期间,存储器(107)不被改变。在推测性执行一个或多个指令期间所进行的改变被缓存在影子缓存中(211)。例如,在推测性执行期间,存储器存储指令将被阻止使数据存储到存储器(107)中。影子缓存(211)可以被更新以指示存储器(107)中的对应数据已过期;并且,作为使用影子缓存(211)进行推测性执行的结果,影子缓存(211)中的当前数据是最新的。
如果导致了在影子缓存(211)中推测时被执行的一个或多个指令的指令的正常执行的结果允许或要求执行一个或多个指令,则影子缓存(211)中的有效结果可以被应用于主缓存(209)。主缓存(209)的更新可以同时发生(例如,使用主缓存(209)和影子缓存(211)之间的通信信道)。
例如,每个缓存块可以具有有效位以指示缓存块是否包含有效数据。当推测性执行的结果要被接受时,由推测性执行产生的影子缓存(211)中的有效数据可以被标识并被移动/复制到主缓存(209)。
在主缓存(209)与影子缓存(211)同步以包含推测性执行对影子缓存(211)的影响之后,处理器(101)可以被通知使用主缓存(209)来执行后续操作,该主缓存(209)具有先前使用影子缓存(211)在推测时所执行的一个或多个指令的执行的结果。
如果导致了在影子缓存(211)中推测时被执行的一个或多个指令的指令的正常执行结果防止执行一个或多个指令,则用于执行一个或多个指令的推测是不正确的。因此,影子缓存(211)中的结果无效(例如,通过在影子缓存(211)中设置缓存块的无效位)。影子缓存(211)可以可选地与主缓存(209)同步以具有主缓存(209)的内容,以准备下一个推测性执行。例如,可以将尚未被刷新到存储器(107)的主缓存(209)中的改变复制到影子缓存(211)。
影子缓存(211)的技术还可以被用在具有共享存储器多处理器的计算机中。例如,多个处理器/核(例如,101)可以经由交换机或总线来共享存储器(107)。每个处理器(例如,101)具有主缓存(209)和影子缓存(211)。处理器(例如,101)在处理器(例如,101)和它们的主缓存(例如,209)之间/当中实施缓存一致性协议。在这种情况下,在确定推测性执行中所涉及的指令的执行是被允许的之前,由一个处理器(例如,101)进行的推测执行的影响被配置为被包含在处理器(例如,101)的影子缓存(211)内。不需要从一个处理器(例如,101)到另一个处理器的控制线来指示在处理器(例如,101)内的推测性执行。
使用影子缓存(211)来保护主缓存(209)的技术也可以以类似的方式被用于使用影子堆栈来保护主栈。计算装置中的堆栈具有存储器,该存储器允许数据被添加到存储器中以用于存储,然后从存储器获取以便在最后以第一输出方式进行消耗。
本文公开的技术可以至少被应用于计算机系统,其中处理器与存储器分离,并且处理器经由通信总线和/或计算机网络与存储器和存储装置进行通信。此外,本文公开的技术可以被应用于计算机系统,其中处理能力被集成在存储器/存储装置中。例如,处理电路(包括典型处理器的执行单元和/或寄存器)可以在集成电路和/或存储器介质的集成电路封装内被实施,以在存储器装置内执行处理。因此,如上所述并在附图中所示的处理器(例如,101)不一定是冯·诺依曼结构中的中央处理单元。处理器可以是被集成在存储器内的单元,以克服由于中央处理单元和根据冯·诺依曼结构而单独配置的存储器之间的数据移动的延迟而导致的吞吐量的限制而引起的限制计算性能的冯·诺伊曼瓶颈。
本公开的描述和附图是说明性的,并且不应被解释为限制性的。许多具体细节被描述以提供透彻理解。然而,在某些情况下,众所周知的或传统的细节不被描述以避免模糊了描述。对本公开中的一个实施例或实施例的参考不一定是对同一实施例的参考;并且,这样的引用意味着至少一个。
在前述说明书中,已经参考本公开的特定示例性实施例描述了本公开。显而易见的是,在不脱离所附权利要求中阐述的更广泛的精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图应被视为说明性意义而非限制性意义。
Claims (20)
1.一种计算装置,包括:
处理器;
存储器;
第一缓存,被耦合在所述存储器和所述处理器之间;和
第二缓存,被耦合在所述存储器和所述处理器之间;
其中,在推测性执行一个或多个指令期间,推测性执行的影响被包含在所述第二缓存内。
2.根据权利要求1所述的计算装置,其中,在推测性执行一个或多个指令期间,所述处理器断言指示推测性执行的信号;并且当信号被断言时,所述第一缓存被阻止更改。
3.根据权利要求2所述的计算装置,其中,当所述信号被断言时,所述第二缓存被阻止更新所述存储器。
4.根据权利要求3所述的计算装置,其中,响应于确定要实施所述一个或多个指令的执行,根据所述第二缓存更新所述第一缓存。
5.根据权利要求3所述的计算装置,其中,在执行继所述一个或多个指令之后的指令之前,根据所述第二缓存向所述处理器通知更新所述第一缓存的完成。
6.根据权利要求3所述的计算装置,其中,响应于确定不实施所述一个或多个指令的执行,根据所述第一缓存更新所述第二缓存。
7.根据权利要求3所述的计算装置,其中,响应于确定不需要所述一个或多个指令的执行,所述第二高速缓存中的改变被使得无效。
8.根据权利要求1所述的计算装置,其中,在推测性执行一个或多个指令期间,所述处理器经由所述第二缓存访问所述存储器;并且在推测性执行一个或多个指令期间,对所述第二缓存中的内容的访问限于由所述处理器对一个或多个指令的推测性执行。
9.根据权利要求8所述的计算装置,其中,在推测性执行一个或多个指令期间,禁止所述处理器改变所述第一缓存。
10.根据权利要求1所述的计算装置,其中,所述第一缓存的内容经由缓存一致性协议是可访问的。
11.一种在计算装置中实施的方法,所述方法包括:
由处理器使用被耦合在存储器和所述处理器之间的第一缓存来执行第一指令;
由所述处理器使用被耦合在所述存储器和所述处理器之间的第二缓存来推测性执行第二指令;并且
在所述计算装置中,限制在所述第二缓存中的推测性执行所述第二指令的影响。
12.根据权利要求11所述的方法,还包括:
在推测性执行所述第二指令之后,确定是否需要执行所述第二指令。
13.根据权利要求12所述的方法,还包括:
响应于确定需要执行所述第二指令,将由所述第二缓存中的第二指令所做的改变应用于所述第一缓存。
14.根据权利要求12所述的方法,还包括:
响应于确定不需要执行所述第二指令,使所述第二缓存的内容无效。
15.根据权利要求12所述的方法,其中,限制推测性执行所述第二指令的影响,包括:
在允许执行所述第二指令以改变所述第二缓存的同时,禁止推测性执行所述第二指令改变存储器;并且
禁止推测性执行所述第二指令改变所述第一缓存。
16.根据权利要求15所述的方法,还包括:
除了由所述处理器推测性执行所述第二指令之外,禁止访问所述第二缓存。
17.一种计算装置,包括:
存储器;
多个处理器;和
分别用于所述多个处理器的多对缓存,其中对于所述多个处理器中的每个相应处理器,所述多对缓存具有:
第一缓存,被耦合在所述存储器和相应的处理器之间;和
第二缓存,被耦合在所述存储器和相应的处理器之间;
其中,在所述多个处理器之间实施缓存一致性协议,所述缓存一致性协议允许所述多个处理器中的第一处理器访问除所述第一处理器之外的相应处理器的第一缓存;并且
其中,在由相应处理器推测性执行一个或多个指令期间,所述相应处理器限于经由所述相应处理器的第二缓存访问所述存储器并且被禁止改变所述存储器。
18.根据权利要求17所述的计算装置,其中,在由所述相应处理器推测性执行一个或多个指令期间,禁止所述第一处理器访问除所述第一处理器之外的相应处理器的第二缓存。
19.根据权利要求18所述的计算装置,其中,在推测性执行一个或多个指令之后,响应于执行所述一个或多个指令的确定,将所述相应处理器的第二缓存中的改变合并到所述相应处理器的第一缓存中。
20.根据权利要求19所述的计算装置,其中,在推测性执行一个或多个指令之前,所述相应处理器的第二缓存与所述相应处理器的第一缓存同步。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862665803P | 2018-05-02 | 2018-05-02 | |
US62/665,803 | 2018-05-02 | ||
US16/028,930 | 2018-07-06 | ||
US16/028,930 US10949210B2 (en) | 2018-05-02 | 2018-07-06 | Shadow cache for securing conditional speculative instruction execution |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110442381A true CN110442381A (zh) | 2019-11-12 |
Family
ID=68384844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811036866.2A Withdrawn CN110442381A (zh) | 2018-05-02 | 2018-09-06 | 用于保护有条件的推测性指令执行的影子缓存 |
Country Status (2)
Country | Link |
---|---|
US (4) | US10949210B2 (zh) |
CN (1) | CN110442381A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117896035A (zh) * | 2024-03-14 | 2024-04-16 | 杭州义益钛迪信息技术有限公司 | 边缘控制器的数据获取方法和设备 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10657057B2 (en) * | 2018-04-04 | 2020-05-19 | Nxp B.V. | Secure speculative instruction execution in a data processing system |
US10949210B2 (en) | 2018-05-02 | 2021-03-16 | Micron Technology, Inc. | Shadow cache for securing conditional speculative instruction execution |
US10908915B1 (en) | 2019-07-31 | 2021-02-02 | Micron Technology, Inc. | Extended tags for speculative and normal executions |
US11200166B2 (en) | 2019-07-31 | 2021-12-14 | Micron Technology, Inc. | Data defined caches for speculative and normal executions |
US11194582B2 (en) | 2019-07-31 | 2021-12-07 | Micron Technology, Inc. | Cache systems for main and speculative threads of processors |
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 |
US10915326B1 (en) | 2019-07-31 | 2021-02-09 | Micron Technology, Inc. | Cache systems and circuits for syncing caches or cache sets |
US11210102B2 (en) * | 2019-11-26 | 2021-12-28 | Arm Limited | Speculative buffer for speculative memory accesses with entries tagged with execution context identifiers |
US12099997B1 (en) | 2020-01-31 | 2024-09-24 | Steven Mark Hoffberg | Tokenized fungible liabilities |
US11216366B2 (en) | 2020-02-13 | 2022-01-04 | Intel Corporation | Security check systems and methods for memory allocations |
EP4139805A4 (en) | 2020-04-22 | 2023-06-21 | Micron Technology, Inc. | MAPPING DESCRIPTORS FOR READ OPERATIONS |
WO2022139850A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Cryptographic computing including enhanced cryptographic addresses |
US11972126B2 (en) | 2021-03-26 | 2024-04-30 | Intel Corporation | Data relocation for inline metadata |
US11954045B2 (en) | 2021-09-24 | 2024-04-09 | Intel Corporation | Object and cacheline granularity cryptographic memory integrity |
US11907124B2 (en) | 2022-03-31 | 2024-02-20 | International Business Machines Corporation | Using a shadow copy of a cache in a cache hierarchy |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5838943A (en) * | 1996-03-26 | 1998-11-17 | Advanced Micro Devices, Inc. | Apparatus for speculatively storing and restoring data to a cache memory |
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 | 英特尔公司 | 多处理器环境中基于事务的共享数据操作 |
US8370609B1 (en) * | 2006-09-27 | 2013-02-05 | Oracle America, Inc. | Data cache rollbacks for failed speculative traces with memory operations |
CN103250131A (zh) * | 2010-09-17 | 2013-08-14 | 索夫特机械公司 | 包括用于早期远分支预测的影子缓存的单周期多分支预测 |
US8943273B1 (en) * | 2008-08-14 | 2015-01-27 | Marvell International Ltd. | Method and apparatus for improving cache efficiency |
CN107250993A (zh) * | 2015-02-23 | 2017-10-13 | 英特尔公司 | 向量缓存行写回处理器、方法、系统和指令 |
CN111527479A (zh) * | 2018-01-10 | 2020-08-11 | Arm有限公司 | 推测性缓存存储区 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5671444A (en) * | 1994-02-28 | 1997-09-23 | Intel Corporaiton | Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers |
US6772294B2 (en) * | 2002-07-08 | 2004-08-03 | Sun Microsystems, Inc. | Method and apparatus for using a non-committing data cache to facilitate speculative execution |
US7496732B2 (en) * | 2003-12-17 | 2009-02-24 | Intel Corporation | Method and apparatus for results speculation under run-ahead execution |
US7490229B2 (en) * | 2004-03-30 | 2009-02-10 | Sun Microsystems, Inc. | Storing results of resolvable branches during speculative execution to predict branches during non-speculative execution |
US7277989B2 (en) * | 2004-06-22 | 2007-10-02 | Sun Microsystems, Inc. | Selectively performing fetches for store operations during speculative execution |
US8024522B1 (en) * | 2005-09-28 | 2011-09-20 | Oracle America, Inc. | Memory ordering queue/versioning cache circuit |
US9507647B2 (en) * | 2010-01-08 | 2016-11-29 | Globalfoundries Inc. | Cache as point of coherence in multiprocessor system |
US9575890B2 (en) * | 2014-02-27 | 2017-02-21 | International Business Machines Corporation | Supporting atomic accumulation with an addressable accumulator |
US11481221B2 (en) * | 2018-05-02 | 2022-10-25 | Micron Technology, Inc. | Separate branch target buffers for different levels of calls |
US10949210B2 (en) | 2018-05-02 | 2021-03-16 | Micron Technology, Inc. | Shadow cache for securing conditional speculative instruction execution |
-
2018
- 2018-07-06 US US16/028,930 patent/US10949210B2/en active Active
- 2018-09-06 CN CN201811036866.2A patent/CN110442381A/zh not_active Withdrawn
-
2021
- 2021-03-01 US US17/189,151 patent/US11422820B2/en active Active
-
2022
- 2022-08-15 US US17/888,410 patent/US11934836B2/en active Active
-
2024
- 2024-01-29 US US18/425,378 patent/US20240168766A1/en active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5838943A (en) * | 1996-03-26 | 1998-11-17 | Advanced Micro Devices, Inc. | Apparatus for speculatively storing and restoring data to a cache memory |
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 | 英特尔公司 | 多处理器环境中基于事务的共享数据操作 |
US8370609B1 (en) * | 2006-09-27 | 2013-02-05 | Oracle America, Inc. | Data cache rollbacks for failed speculative traces with memory operations |
US8943273B1 (en) * | 2008-08-14 | 2015-01-27 | Marvell International Ltd. | Method and apparatus for improving cache efficiency |
CN103250131A (zh) * | 2010-09-17 | 2013-08-14 | 索夫特机械公司 | 包括用于早期远分支预测的影子缓存的单周期多分支预测 |
CN107250993A (zh) * | 2015-02-23 | 2017-10-13 | 英特尔公司 | 向量缓存行写回处理器、方法、系统和指令 |
CN111527479A (zh) * | 2018-01-10 | 2020-08-11 | Arm有限公司 | 推测性缓存存储区 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117896035A (zh) * | 2024-03-14 | 2024-04-16 | 杭州义益钛迪信息技术有限公司 | 边缘控制器的数据获取方法和设备 |
CN117896035B (zh) * | 2024-03-14 | 2024-06-04 | 杭州义益钛迪信息技术有限公司 | 边缘控制器的数据获取方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
US20190339978A1 (en) | 2019-11-07 |
US11422820B2 (en) | 2022-08-23 |
US10949210B2 (en) | 2021-03-16 |
US20240168766A1 (en) | 2024-05-23 |
US11934836B2 (en) | 2024-03-19 |
US20220391212A1 (en) | 2022-12-08 |
US20210208892A1 (en) | 2021-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110442381A (zh) | 用于保护有条件的推测性指令执行的影子缓存 | |
CN110442537A (zh) | 用于不同等级的调用的单独分支目标缓冲区 | |
US7886098B2 (en) | Memory access security management | |
CN110442379A (zh) | 保护有条件的推测指令执行 | |
US8370575B2 (en) | Optimized software cache lookup for SIMD architectures | |
CN103383667B (zh) | 存储器保护电路、处理单元和存储器保护方法 | |
US7822924B2 (en) | Processing of self-modifying code in multi-address-space and multi-processor systems | |
US10824350B2 (en) | Handling contingent and non-contingent memory access program instructions making use of disable flag | |
KR20220045211A (ko) | 캐패빌리티 기입 어드레스 추적 | |
US20090063783A1 (en) | Method and appartaus to trigger synchronization and validation actions upon memory access | |
CN104321750B (zh) | 在共享存储器编程中保持释放一致性的方法和系统 | |
US8301844B2 (en) | Consistency evaluation of program execution across at least one memory barrier | |
CN110036377A (zh) | 可缓存的但不可通过推测指令访问的内存类型 | |
CN110442536A (zh) | 基于对象的存储器访问中的静态标识 | |
US11119941B2 (en) | Capability enforcement controller | |
US9886212B2 (en) | Mechanism for copying data in memory | |
KR102476438B1 (ko) | 데이터 액세스의 원자 세트를 제공하는 장치 및 방법 | |
JP5828324B2 (ja) | マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ | |
US20230205609A1 (en) | Scatter-gather atomic optimization | |
Berke | A cache technique for synchronization variables in highly parallel, shared memory systems | |
JPH0337745A (ja) | キャッシュメモリ制御装置 |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20191112 |
|
WW01 | Invention patent application withdrawn after publication |