CN114008581B - 用以加速推测性执行的备用高速缓存集合 - Google Patents
用以加速推测性执行的备用高速缓存集合 Download PDFInfo
- Publication number
- CN114008581B CN114008581B CN202080046072.3A CN202080046072A CN114008581B CN 114008581 B CN114008581 B CN 114008581B CN 202080046072 A CN202080046072 A CN 202080046072A CN 114008581 B CN114008581 B CN 114008581B
- Authority
- CN
- China
- Prior art keywords
- cache
- execution
- type
- cache set
- speculative
- 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.)
- Active
Links
- 238000013507 mapping Methods 0.000 claims description 66
- 230000004044 response Effects 0.000 description 44
- 230000008859 change Effects 0.000 description 37
- 238000000034 method Methods 0.000 description 34
- 238000012545 processing Methods 0.000 description 14
- 239000012634 fragment Substances 0.000 description 12
- 238000013461 design Methods 0.000 description 8
- 238000000638 solvent extraction Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 6
- 238000002360 preparation method Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/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; 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种高速缓存系统,其具有:高速缓存集合;与识别执行类型的线的连接;与识别推测性执行的状态的线的连接;和逻辑电路,其可:当所述执行类型为指示非推测性执行的第一类型时,分配高速缓存集合的第一子集;当所述执行类型从所述第一类型改变为指示推测性执行的第二类型时,分配第二子集;和当所述执行类型为所述第二类型时,保留高速缓存集合。当所述执行类型从所述第二类型改变为所述第一类型且推测性执行的所述状态指示将接受推测性执行的结果时,所述逻辑电路可:当所述执行类型为第一类型时,重新配置所述第二子集;和当所述执行类型从所述第一类型改变为所述第二类型时,分配所述至少一个高速缓存集合。
Description
相关申请
本申请要求2019年7月31日提交且标题为“用以加速推测性执行的备用高速缓存集合(SPARE CACHE SET TO ACCELERATE SPECULATIVE EXECUTION)”的美国专利申请第16/528,483号的优先权,所述申请的全部公开内容由此以引用方式并入本文中。
技术领域
本文中所公开的至少一些实施例大体上涉及高速缓存架构,且更特定来说,但不限于用于由计算机处理器进行的主执行和推测性执行的高速缓存架构。
背景技术
高速缓存为存储比主存储器更接近处理器的数据以使得可由处理器存取存储于高速缓存中的数据的存储器组件。由于对主存储器中的数据的较早计算或较早存取,数据可存储于高速缓存中。当由处理器使用存储器地址所请求的数据可在高速缓存中找到时,发生高速缓存命中,而当无法在高速缓存中找到所述数据时,发生高速缓存未中。
一般来说,高速缓存为保存最近由处理器使用的数据的存储器。放置于高速缓存中的存储器块相应地受限于放置策略的高速缓存行。存在三个通常已知的放置策略:直接映射、完全关联和集合关联。在直接映射的高速缓存结构中,高速缓存组织成具有每集合单个高速缓存行的多个集合。基于存储器块的地址,存储器块可仅占据单个高速缓存行。对于直接映射的高速缓存,高速缓存可设计为(n*1)列矩阵。在完全关联的高速缓存结构中,高速缓存组织成具有多个高速缓存行的单个高速缓存集合。存储器块可占据单个高速缓存集合中的高速缓存行中的任一个。具有完全关联结构的高速缓存可设计为(1*m)行矩阵。
集合关联高速缓存为具有直接映射的高速缓存与完全关联高速缓存之间的中间接地的结构的中间设计的高速缓存。集合关联高速缓存可设计为(n*m)矩阵,其中n和m都不是1。将高速缓存划分成n个高速缓存集合,且每一集合含有m个高速缓存行。可将存储器块映射到高速缓存集合,且接着将放置到所述集合的任何高速缓存行中。当考虑集合关联性的层级的连续时,集合关联高速缓存可包含从直接映射到完全关联的高速缓存的范围。举例来说,直接映射的高速缓存还可描述为单向集合关联高速缓存,且具有m个块的完全关联高速缓存可描述为m向集合关联高速缓存。定向映射的高速缓存、双向集合关联高速缓存和四向集合关联高速缓存在高速缓存系统中是常见的。
推测性执行为一种计算技术,其中处理器基于在一些条件下需要执行一或多个指令的推测来在可获得关于是否应执行这种指令的确定结果之前执行这种指令。
计算系统中的存储器地址识别计算系统中的存储器位置。存储器地址为常规地显示和操纵为无符号整数的数位的固定长度序列。数位或位的序列的长度可视为存储器地址的宽度。存储器地址可用于中央处理单元(CPU)的某些结构,例如指令指针(或程序计数器)和存储器地址寄存器。CPU的这种结构的大小或宽度通常确定在这种CPU中使用的存储器地址的长度。
附图说明
在附图的图中作为实例而不是限制来说明实施例,在附图中,相似参考标号指示类似元件。
图1A至1E展示根据本公开的一些实施例的将存储器地址分割成可与执行类型一起使用以控制高速缓存的操作的多个部分的各种方式。
图2、3A和3B展示根据本公开的一些实施例的实例计算装置的实例方面,每一计算装置包含具有用于第一类型和第二类型执行的可互换高速缓存的高速缓存系统。
图4、5A和5B特定地展示根据本公开的一些实施例的实例计算装置的实例方面,每一计算装置包含具有用于主类型和推测性类型执行的可互换高速缓存的高速缓存系统。
图6、7A、7B、8A、8B、9A和9B展示根据本公开的一些实施例的实例计算装置的实例方面,每一计算装置包含具有用于第一类型和第二类型执行(例如,主类型和推测性类型执行)的可互换高速缓存集合的高速缓存系统。
图10特定地展示根据本公开的一些实施例的包含具有用于主类型和推测性类型执行的可互换高速缓存集合的高速缓存系统的实例计算装置的实例方面。
图11A和11B说明根据本公开的一些实施例的用于使主高速缓存与影子高速缓存之间的内容同步以保存高速缓存于主高速缓存中的内容以备在影子高速缓存中接受内容的后台同步电路系统。
图12展示根据本公开的一些实施例的图11A和11B的实例同步电路系统的实例操作。
图13、14A、14B、14C、15A、15B、15C和15D展示根据本公开的一些实施例的具有带有包含备用高速缓存集合以加速推测性执行的可互换高速缓存集合的高速缓存系统的实例计算装置的实例方面。
图16和17展示根据本公开的一些实施例的具有带有利用用于由处理器进行的不同类型的执行(例如推测性和非推测性执行)的扩展标签的可互换高速缓存集合的高速缓存系统的实例计算装置的实例方面。
图18展示根据本公开的一些实施例的具有带有利用电路将物理高速缓存集合输出映射到逻辑高速缓存集合输出的可互换高速缓存集合的高速缓存系统的实例计算装置的实例方面。
图19、20和21展示根据本公开的一些实施例的具有带有利用展示于图18中的电路将物理高速缓存集合输出映射到逻辑高速缓存集合输出的可互换高速缓存集合的高速缓存系统的实例计算装置的实例方面。
图22和23展示根据本公开的一些实施例的用于使用可互换高速缓存集合用于由处理器进行的推测性和非推测性执行的方法。
具体实施方式
本公开包含与由已连接处理器进行的不同类型的执行可互换地使用多个高速缓存或高速缓存的高速缓存集合的技术。执行的类型可包含推测性和非推测性执行线程。非推测性执行可称为主执行或普通执行。
为了获得增强型安全性,当处理器进行指令的条件性推测性执行时,处理器可配置成在指令的推测性执行期间使用影子高速缓存,其中影子高速缓存与在指令的主执行或普通执行期间使用的主高速缓存分离。使用影子高速缓存来提高安全性的一些技术可见于2018年7月6日提交且标题为“用于安全条件性推测性指令执行的影子高速缓存(ShadowCache for Securing Conditional Speculative Instruction Execution)”的美国专利申请第16/028,930号,所述申请的全部公开内容由此以引用的方式并入本文中。本公开包含允许以下操作的技术:高速缓存动态地配置为影子高速缓存或主高速缓存;高速缓存资源的统一集合可动态地分配用于影子高速缓存或用于主高速缓存;和可在指令的执行期间改变分配。
在一些实施例中,系统可包含存储器系统(例如,包含主存储器)、处理器和耦合在处理器与存储器系统之间的高速缓存系统。高速缓存系统可具有高速缓存集合。并且,高速缓存集合中的高速缓存可以多种方式设计。举例来说,高速缓存集合中的高速缓存可包含通过高速缓存集合关联性(其可包含物理或逻辑高速缓存集合关联性)的高速缓存集合。
在一些实施例中,系统的高速缓存可在配置成用于由处理器对指令的第一类型的执行与配置成用于由处理器对指令的第二类型的执行之间为可变的。第一类型可为由处理器对指令的非推测性执行。第二类型可为由处理器对指令的推测性执行。
在一些实施例中,高速缓存的高速缓存集合可在配置成用于由处理器对指令的第一类型的执行与配置成用于由处理器对指令的第二类型的执行之间为可变的。第一类型可为由处理器对指令的非推测性执行。并且,第二类型可为由处理器对指令的推测性执行。
在一些实施例中,推测性执行为处理器基于在一些条件下需要执行一或多个指令的推测来在可获得关于是否应执行这种指令的确定结果之前执行这种指令的情况。非推测性执行(或主执行,或普通执行)为根据指令的程序序列按顺序执行指令的情况。
在一些实施例中,系统的高速缓存集合可包含至少第一高速缓存和第二高速缓存。在这种实例中,系统可包含配置成从处理器接收读取命令或写入命令的命令总线。系统还可包含配置成从处理器接收存储器地址以用于针对读取命令或写入命令存取存储器的地址总线。并且,可包含配置成进行以下操作的数据总线:将数据传达到处理器以供处理器读取;和从处理器接收数据以在存储器中写入。来自处理器的存储器存取请求可由命令总线、地址总线和数据总线定义。
在一些实施例中,常见命令和地址总线可替换本文中所描述的命令和地址总线。此外,在这种实施例中,与常见命令和地址总线的常见连接可替换与本文中所描述的命令和地址总线的相应连接。
系统还可包含配置成从处理器接收执行类型的执行类型信号线。执行类型可为普通或非推测性执行的指示或推测性执行的指示。
系统还可包含可配置数据位,所述可配置数据位配置成设定为第一状态(例如,“0”)或第二状态(例如,“1”)以相对于非推测性执行和推测性执行改变第一高速缓存和第二高速缓存的使用。
系统还可包含逻辑电路,所述逻辑电路配置成当可配置数据位设定为第一状态且执行类型信号线接收非推测性执行的指示时,从处理器选择用于存储器存取请求的第一高速缓存。逻辑电路还可配置成当可配置数据位设定为第一状态且执行类型信号线接收推测性执行的指示时,从处理器选择用于存储器存取请求的第二高速缓存。逻辑电路还可配置成当可配置数据位设定为第二状态且执行类型信号线接收非推测性执行的指示时,从处理器选择用于存储器存取请求的第二高速缓存。逻辑电路还可配置成当可配置数据位设定为第二状态且执行类型信号线接收推测性执行的指示时,从处理器选择用于存储器存取请求的第一高速缓存。
系统还可包含配置成从处理器接收推测状态的推测状态信号线。推测状态可为对具有嵌套指令的条件的确认或拒绝,所述嵌套指令最初由推测性执行执行且随后在推测状态为对条件的确认时由非推测性执行执行。
逻辑电路还可配置成当由执行类型信号线接收到的信号从非推测性执行的指示改变为推测性执行的指示时,选择如由可配置数据位的第一状态识别出的第二高速缓存,且限制第一高速缓存如由可配置数据位的第一状态识别出而使用或改变。
并且,逻辑电路可配置成当执行类型信号线接收非推测性执行的指示时,将可配置数据位从第一状态改变为第二状态,且选择用于存储器存取请求的第二高速缓存。这可在由执行类型信号线接收到的信号从推测性执行的指示改变为非推测性执行的指示时发生,且在由推测状态信号线接收到的推测状态为对条件的确认时发生。
逻辑电路还可配置成当执行类型信号线接收非推测性执行的指示时,维持可配置数据位的第一状态,且选择用于存储器存取请求的第一高速缓存。这可在由执行类型信号线接收到的信号从推测性执行的指示改变为非推测性执行的指示时发生,且在推测状态信号线接收到的推测状态为对条件的拒绝时发生。此外,逻辑电路可配置成当由执行类型信号线接收到的信号从推测性执行的指示改变为非推测性执行的指示时,和当由推测状态信号线接收到的推测状态为对条件的拒绝时,使第二高速缓存的内容失效且丢弃所述内容。
系统还可包含配置成将读取命令或写入命令传达到连接到高速缓存系统的主存储器的第二命令总线。可由高速缓存系统从处理器接收读取命令或写入命令。系统还可包含配置成将存储器地址传达到主存储器的第二地址总线。可由高速缓存系统从处理器接收存储器地址。系统还可包含第二数据总线,所述第二数据总线配置成将数据传达到主存储器以在存储器中写入,且从主存储器接收数据以传达到处理器以供处理器读取。来自高速缓存系统的对主存储器的存储器存取请求可由第二命令总线、第二地址总线和第二数据总线定义。
如所提及,高速缓存集合中的高速缓存可以多种方式设计,且那些方式中的一种包含通过高速缓存集合关联性(其可包含物理或逻辑高速缓存集合关联性)划分成高速缓存集合的集合的高速缓存。通过集合关联性的高速缓存设计的益处在于,具有集合关联性的单个高速缓存可具有单个高速缓存内的多个高速缓存集合,且因此,可分配单个高速缓存的不同部分以供处理器使用而不分配整个高速缓存。因此,可更有效地使用单个高速缓存。这在处理器执行多种类型的线程或具有多个执行类型时尤其如此。举例来说,单个高速缓存内的高速缓存集合可与不同执行类型互换使用,而不是使用可互换高速缓存。高速缓存划分的常见实例包含在高速缓存内具有两个、四个或八个高速缓存集合。
此外,当处理器执行主线程和推测性线程时,集合关联性高速缓存设计优于其它常见高速缓存设计。由于与普通或非推测性执行相比,推测性执行可使用较少额外高速缓存容量,所以选择机构可实施于高速缓存集合层级下,且因此保留比整个高速缓存更少的空间(即,高速缓存的一部分)以用于推测性执行。具有集合关联性的高速缓存可具有集合内的多个高速缓存集合(例如,高速缓存内的两个、四个或八个高速缓存集合的划分)。举例来说,如图7A中所展示,高速缓存系统的高速缓存中存在至少四个高速缓存集合(例如,参见高速缓存集合702、704和706)。通常需要大多数高速缓存容量的普通或非推测性执行可具有委托给其的较大数目的高速缓存集合。并且,具有对非推测性执行的修改的推测性执行可使用一个高速缓存集合或较小数目个高速缓存集合,这是由于推测性执行通常涉及比非推测性执行更少的指令。
如图6或10中所展示,高速缓存系统可包含用于处理器的多个高速缓存(例如图6中所描绘的高速缓存602a、602b和602c),且高速缓存系统的高速缓存可包含高速缓存集合(例如图6中所描绘的高速缓存集合610a、610b和610c)以进一步划分高速缓存系统的组织。此实例包含具有集合关联性的高速缓存系统。
在高速缓存的高速缓存集合层级上,第一高速缓存集合(例如,参见图7A、图8A和9A中所描绘的高速缓存集合702)可保存内容用于与由处理器进行的第一类型的执行或第二类型一起使用。举例来说,第一高速缓存集合可保存内容以用于与由处理器进行的非推测性类型或推测性类型的执行一起使用。此外,第二高速缓存集合(例如,参见图7A、图8A和9A中所描绘的高速缓存集合704或706)可保存内容用于与由处理器进行的第一类型的执行或第二类型一起使用。
举例来说,在第一时间例项中,第一高速缓存集合用于普通或非推测性执行,且第二高速缓存集合用于推测性执行。在第二时间例项中,第二高速缓存集合用于普通或非推测性执行,且第一高速缓存集合用于推测性执行。针对非推测性和推测性执行委托/交换高速缓存集合的方式可经由存储器地址标签内或外部的高速缓存集合索引或经由存储器地址标签内的不同于高速缓存集合索引的高速缓存集合指示符使用集合关联性(例如,参见图7A、7B、8A、8B、9A和9B)。
如至少图1B、1C、1D、1E、7A、7B、8A、8B、9A和9B中所展示,高速缓存集合索引或高速缓存集合指示符可包含于高速缓存块寻址中以实施高速缓存集合寻址和关联性。高速缓存块寻址可存储在存储器中(例如,SRAM、DRAM等,取决于计算装置的设计,即处理器寄存器、高速缓存系统、另一中间存储器、主存储器等的设计)。
如图6、7A、7B、8A、8B、9A、9B和10中所展示,高速缓存的每一高速缓存集合(例如,1级、2级或3级高速缓存)具有相应寄存器(例如,展示于图6和10中的寄存器610a、610b或610c,或展示于图7A、7B、8A、8B、9A和9B中的寄存器712、714或716)和集合索引(例如,参见展示于图7A、7B、8A、8B、9A和9B中的集合索引722、724、726和728)中的一个,所述集合索引可在相应寄存器之间调换以实施用于处理器的非推测性和推测性执行(或,一般来说,用于处理器的第一类型和第二类型执行)的高速缓存集合的调换。举例来说,相对于图7A和7B,在第一时间段,第一类型的执行可使用高速缓存集合702和704,且第二类型的执行可使用高速缓存集合706。接着,在第二时间段,第一类型的执行可使用高速缓存集合704和706,且第二类型的执行可使用高速缓存集合702。应注意,这仅是高速缓存集合的一个实例使用,且应理解,取决于时间段或存储在寄存器中的集合索引或指示符,无预定限制的高速缓存集合中的任一个可由第一或第二类型的执行使用。
在一些实施例中,可最初分配数个高速缓存集合以用于第一类型的执行(例如,非推测性执行)。在第二类型的执行(例如,推测性执行)期间,最初是否用于第一类型的执行的高速缓存集合中的一个(例如保留的高速缓存集合)可在第二类型的执行中使用。本质上,分配用于第二类型的执行的高速缓存集合可最初为等待使用的空闲高速缓存集合,或选自用于第一类型的执行的数个高速缓存集合(例如,较不可能进一步用于另外第一类型执行的高速缓存集合)。
一般来说,在一些实施例中,高速缓存系统包含多个高速缓存集合。多个高速缓存集合可包含分别与多个高速缓存集合相关联的第一高速缓存集合、第二高速缓存集合和多个寄存器。多个寄存器可包含与第一高速缓存集合相关联的第一寄存器和与第二高速缓存集合相关联的第二寄存器。高速缓存系统还可包含与耦合在高速缓存系统与处理器之间的命令总线的连接、与耦合在高速缓存系统与处理器之间的地址总线的连接,和与耦合在高速缓存系统与处理器之间的数据总线的连接。高速缓存系统还可包含耦合到处理器以根据多个寄存器控制多个高速缓存集合的逻辑电路。
在这种实施例中,高速缓存系统可配置成耦合在处理器与存储器系统之间。并且,当与地址总线的连接从处理器接收到存储器地址时,逻辑电路可配置成从至少存储器地址产生集合索引(例如,参见分别展示于图7A、7B、8A、8B、9A和9B中的集合索引产生730、732、830、832、930和932)。此外,当与地址总线的连接从处理器接收到存储器地址时,逻辑电路可配置成确定所产生的集合索引是否与存储在第一寄存器中的内容或与存储在第二寄存器中的内容匹配。此外,逻辑电路可配置成响应于所产生的集合索引与存储在第一寄存器中的内容匹配而经由第一高速缓存集合实施在与命令总线的连接中接收到的命令,和响应于所产生的集合索引与存储在第二寄存器中的内容匹配而经由第二高速缓存集合实施所述命令。此外,响应于确定与存储器地址相关联的存储器系统的数据集当前未高速缓存于高速缓存系统中,逻辑电路可配置成分配第一高速缓存集合以用于高速缓存数据集且将所产生的集合索引存储在第一寄存器中。所产生的集合索引可包含存储器地址中的位的预定片段。
高速缓存系统还可包含与来自处理器的识别执行类型的执行类型信号线的连接(例如,参见图6和10中所描绘的连接604d)。在这种实施例中,可进一步基于由执行类型信号线识别出的类型产生所产生的集合索引。此外,所产生的集合索引可包含存储器地址中的位的预定片段和表示由执行类型信号线识别出的的类型的位(例如,所产生的集合索引可包含存储器地址102e中的位的预定片段和表示由展示于图1E中的呈执行类型110e的执行类型信号线识别出的类型的一或多个位,或从所述预定片段和所述一或多个位导出)。
此外,当第一和第二寄存器处于第一状态时,逻辑电路可配置成:当执行类型为第一类型时,实施从命令总线接收到的用于经由第一高速缓存集合存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由第二高速缓存集合存取存储器系统的命令。此外,当第一和第二寄存器处于第二状态时,逻辑电路可配置成:当执行类型为第一类型时,实施从命令总线接收到的用于经由多个高速缓存集合中的除第一高速缓存集合以外的另一高速缓存集合存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由多个高速缓存集合中的除第二高速缓存集合以外的另一其它高速缓存集合存取存储器系统的命令。在这种实例中,多个寄存器中的每一个可配置成存储集合索引,且当执行类型从第二类型改变为第一类型时,逻辑电路可配置成改变存储在第一寄存器中的内容和存储在第二寄存器中的内容。
在一些实施例中,第一类型配置成指示由处理器对指令的非推测性执行;且第二类型配置成指示由处理器对指令的推测性执行。在此类实施例中,高速缓存系统可进一步包含与来自处理器的推测状态信号线的连接,所述推测状态信号线识别由处理器对指令的推测性执行的状态(例如,参见展示于图10中的连接1002)。与推测状态信号线的连接可配置成接收推测性执行的状态,且推测性执行的状态可指示将接受还是拒绝推测性执行的结果。多个寄存器中的每一个可配置成存储集合索引,且当执行类型从第二类型改变为第一类型时,逻辑电路可配置成在推测性执行的状态指示将接受推测性执行的结果的情况下,改变存储在第一寄存器中的内容和存储在第二寄存器中的内容(例如,参见展示于图7A与图7B之间、展示于图8A与图8B之间且展示于图9A与图9B之间的存储在寄存器中的内容的改变)。并且,当执行类型从第二类型改变为第一类型时,逻辑电路可配置成在推测性执行的状态指示将拒绝推测性执行的结果的情况下,维持存储在第一寄存器中的内容和存储在第二寄存器中的内容而不改变。
另外,本文中所描述的高速缓存系统(例如,高速缓存系统200、400、600和1000)可各自包含或连接到后台同步电路系统(例如,参见展示于图11A和11B中的后台同步电路系统1102)。后台同步电路系统可配置成在将影子高速缓存重新配置为主高速缓存和/或将主高速缓存重新配置为影子高速缓存之前使高速缓存或高速缓存集合同步。
举例来说,最初委托用于推测性执行的高速缓存或高速缓存集合的内容(例如,委托用于推测性执行的额外高速缓存或备用高速缓存集合)可与由普通或非推测性执行使用的对应高速缓存或高速缓存集合同步(以具有普通执行的高速缓存内容),使得如果确认推测,那么最初委托用于推测性执行的高速缓存或高速缓存集合可立即加入主执行或非推测性执行的高速缓存集合。此外,可从用于主执行或非推测性执行的高速缓存集合的群组去除对应于最初委托用于推测性执行的高速缓存或高速缓存集合的初始高速缓存集合。在这种实施例中,电路(例如包含后台同步电路系统的电路)可配置成使后台中的高速缓存或高速缓存集合同步以减少对处理器的高速缓存使用的高速缓存集合同步的影响。此外,高速缓存或高速缓存集合的同步可继续,直到放弃推测为止,或直到确认推测且同步完成为止。同步可任选地包含与存储器的同步(例如,写回)。
在一些实施例中,高速缓存系统可包含第一高速缓存和第二高速缓存,以及与耦合在高速缓存系统与处理器之间的命令总线的连接、与耦合在高速缓存系统与处理器之间的地址总线的连接、与耦合在高速缓存系统与处理器之间的数据总线的连接,和与来自处理器的识别执行类型的执行类型信号线的连接(例如,参见高速缓存系统200和400)。这种高速缓存系统还可包含耦合以根据执行类型控制第一高速缓存和第二高速缓存的逻辑电路,且高速缓存系统可配置成耦合在处理器与存储器系统之间。此外,当执行类型为指示由处理器对指令的非推测性执行的第一类型且第一高速缓存配置成服务于来自命令总线的用于存取存储器系统的命令时,逻辑电路可配置成将高速缓存于第一高速缓存中的内容的一部分复制到第二高速缓存(例如,参见操作1202)。另外,逻辑电路可配置成独立于在命令总线中接收到的当前命令而将高速缓存于第一高速缓存中的内容的部分复制到第二高速缓存。
另外,当执行类型为指示由处理器对指令的非推测性执行的第一类型且第一高速缓存配置成服务于来自命令总线的用于存取存储器系统的命令时,逻辑电路可配置成响应于执行类型从第一类型改变为指示由处理器对指令的推测性执行的第二类型而使用第二高速缓存服务于来自命令总线的后续命令(例如,参见操作1208)。在这种实例中,逻辑电路可配置成在执行类型从第一类型改变为第二类型之后服务于后续命令之前完成将内容的部分从第一高速缓存同步到第二高速缓存(例如,参见图12)。逻辑电路还可配置成当服务于后续命令时继续将内容的部分从第一高速缓存同步到第二高速缓存(例如,参见操作1210)。
在这种实施例中,高速缓存系统还可包含可配置数据位,其中逻辑电路进一步耦合以根据可配置数据位控制第一高速缓存和第二高速缓存。此外,在这种实施例中,高速缓存系统可进一步包含多个高速缓存集合。举例来说,第一高速缓存和第二高速缓存可共同包含多个高速缓存集合,且多个高速缓存集合可包含第一高速缓存集合和第二高速缓存集合。高速缓存系统还可包含分别与多个高速缓存集合相关联的多个寄存器。多个寄存器可包含与第一高速缓存集合相关联的第一寄存器和与第二高速缓存集合相关联的第二寄存器。并且,在这种实施例中,逻辑电路可进一步耦合以根据多个寄存器控制多个高速缓存集合。
在一些实施例中,高速缓存系统可包含多个高速缓存集合,所述多个高速缓存集合包含第一高速缓存集合和第二高速缓存集合。高速缓存系统还可包含分别与多个高速缓存集合相关联的多个寄存器,所述多个寄存器包含与第一高速缓存集合相关联的第一寄存器和与第二高速缓存集合相关联的第二寄存器。在这种实施例中,高速缓存系统可包含多个高速缓存,所述多个高速缓存包含第一高速缓存和第二高速缓存,且第一高速缓存和第二高速缓存可共同包含多个高速缓存集合的至少部分。这种高速缓存系统还可包含与耦合在高速缓存系统与处理器之间的命令总线的连接、与耦合在高速缓存系统与处理器之间的地址总线的连接、与耦合在高速缓存系统与处理器之间的数据总线的连接,和与来自处理器的识别执行类型的执行类型信号线的连接,以及耦合以根据执行类型控制多个高速缓存集合的逻辑电路。
在这种实施例中,高速缓存系统可配置成耦合在处理器与存储器系统之间。并且,当执行类型为指示由处理器对指令的非推测性执行的第一类型且第一高速缓存集合配置成服务于来自命令总线的用于存取存储器系统的命令时,逻辑电路配置成将高速缓存于第一高速缓存集合中的内容的一部分复制到第二高速缓存集合。逻辑电路还可配置成独立于在命令总线中接收到的当前命令而将高速缓存于第一高速缓存集合中的内容的部分复制到第二高速缓存集合。
此外,当执行类型为指示由处理器对指令的非推测性执行的第一类型且第一高速缓存集合配置成服务于来自命令总线的用于存取存储器系统的命令时,逻辑电路可配置成响应于执行类型从第一类型改变为指示由处理器对指令的推测性执行的第二类型而使用第二高速缓存集合服务于来自命令总线的后续命令。逻辑电路还可配置成在执行类型从第一类型改变为第二类型之后服务于后续命令之前完成将内容的部分从第一高速缓存集合同步到第二高速缓存集合。逻辑电路还可配置成当服务于后续命令时继续将内容的部分从第一高速缓存集合同步到第二高速缓存集合。并且,逻辑电路可进一步耦合以根据多个寄存器控制多个高速缓存集合。
除使用用于确保推测性执行的影子高速缓存和使主高速缓存与影子高速缓存之间的内容同步以保存高速缓存于主高速缓存中的内容以备在影子高速缓存中接受内容之外,还可使用备用高速缓存集合来加速推测性执行。此外,备用高速缓存集合可用于在不使用影子高速缓存的情况下加速推测性执行。备用高速缓存集合的使用适用于影子高速缓存实施方案,因为可验证保存在用作影子高速缓存的高速缓存集合中的数据且因此用于普通执行,且用作主高速缓存的一些高速缓存集合可能未准备好用作影子高速缓存。因此,可将一或多个高速缓存集合用作备用高速缓存集合,以避免等待高速缓存集合可用性的延迟。换句话说,一旦确认推测,就确认用作影子高速缓存的高速缓存集合的内容为有效的且最新的;且因此,用作用于推测性执行的影子高速缓存的之前的高速缓存集合用于普通执行。然而,最初用作普通高速缓存的高速缓存集合中的一些可能未准备好用于后续推测性执行。因此,可将一或多个高速缓存集合用作备用以避免等待高速缓存集合可用性的延迟且加速推测性执行。
在一些实施例中,如果尚未完成从普通高速缓存中的高速缓存集合到影子高速缓存中的对应高速缓存集合的同步,那么无法立即释放普通高速缓存中的高速缓存集合以供下一推测性执行使用。在这种情形下,如果不存在备用高速缓存集合,那么下一推测性执行必须等待直到完成同步为止,使得可释放普通高速缓存中的对应高速缓存集合。这只是在备用高速缓存集合是有益的且可添加到实施例中时的一个实例。并且,存在无法立即释放普通高速缓存中的高速缓存集合时的许多其它情形,所以备用高速缓存集合可为有用的。
此外,在一些实施例中,推测性执行可参考与高速缓存于用于普通高速缓存中的高速缓存集合中的存储器区不具有重叠的存储器区。由于接受推测性执行的结果,所以影子高速缓存和普通高速缓存中的高速缓存集合可全部在普通高速缓存中。这也可引起延迟,因为高速缓存系统花费时间来释放高速缓存集合以支持下一推测性执行。为了释放高速缓存集合,高速缓存系统可识别高速缓存集合,例如最少使用的高速缓存集合,且使高速缓存集合与存储器系统同步。如果高速缓存具有比存储器系统更新的数据,那么可将数据写入到存储器系统中。
另外,使用备用高速缓存集合的系统还可使用后台同步电路系统,例如图11A和11B中所描绘的后台同步电路系统1102。在一些实施例中,后台同步电路系统1102可为逻辑电路606或1006的一部分。当确认初始推测时,可交换初始推测中使用的高速缓存集合以加入用于主执行的高速缓存集合中的集合。代替使用来自正用于推测失败的情况的先前主执行的高速缓存集合,可立即使备用高速缓存集合可用于下一推测性执行。此外,可经由后台同步电路系统更新备用高速缓存集合以用于下一推测性执行。并且,由于后台同步,当当前用于推测执行的高速缓存集合准备好接受以用于普通执行时,备用高速缓存集合可准备好使用。以这一方式,在等待用于下一推测性执行的下一高速缓存集合的使用时不存在延迟。为准备用于下一推测性执行,可将备用高速缓存集合同步到很可能将用于下一推测性执行的普通高速缓存集合或系统中的最少使用的高速缓存集合。
除使用影子高速缓存、使主高速缓存与影子高速缓存之间的内容同步和使用备用高速缓存集合之外,扩展标签还可用于改进用于由处理器进行的不同类型的执行(例如,推测性和非推测性执行)的可互换高速缓存和高速缓存集合的使用。存在使用扩展标签来寻址高速缓存系统内的高速缓存集合和高速缓存块的许多不同方式。两个实例方式展示于图16和17中。
一般来说,可经由存储器地址选择高速缓存集合和高速缓存块。在一些实例中,选择是经由集合关联性。图16和17中的两个实例使用集合关联性。在图16中,隐式地定义集合关联性(例如,通过可用于针对给定执行类型确定哪一标签应在哪一高速缓存集合中的算法定义)。在图17中,经由存储器地址中的高速缓存集合索引的位实施集合关联性。此外,图16和17中所说明的功能性的部分可在不使用集合关联性的情况下实施(但这未在图16和17中描绘)。
在一些实施例中,包含展示于图16和17中的实施例,块索引可用作个别高速缓存集合内的地址以识别高速缓存集合中的特定高速缓存块。并且,扩展标签可用作高速缓存集合的地址。存储器地址的块索引可用于每一高速缓存集合,以获得高速缓存块和与高速缓存块相关联的标签。此外,如图16和17中所展示,标签比较电路可将从高速缓存集合产生的扩展标签与从存储器地址和当前执行类型产生的扩展高速缓存标签进行比较。比较的输出可为高速缓存命中或未中。扩展标签的构造确保高速缓存集合当中存在至多一个命中。如果存在命中,那么来自选定高速缓存集合的高速缓存块提供输出。否则,与存储器地址相关联的数据未高速缓存于高速缓存集合中的任一个中或从高速缓存集合中的任一个输出。简单地说,图16和17中所描绘的扩展标签用于选择高速缓存集合,且块索引用于选择高速缓存集合内的高速缓存块和其标签。
此外,如图17中所展示,系统中的标签与高速缓存集合索引的组合可提供与仅使用标签的功能性(如图16中所展示)略微类似的功能性。然而,在图17中,通过分离标签和高速缓存集合索引,高速缓存集合不必存储所述高速缓存集合索引的冗余复本,这是由于高速缓存集合可与高速缓存集合寄存器相关联以保存高速缓存集合索引。而在图16中,高速缓存集合的确需要将高速缓存集合指示符的冗余复本存储在所述高速缓存集合的块中的每一个中。然而,由于在图16中所描绘的实施例中标签具有相同高速缓存集合指示符,所以指示符可存储在用于高速缓存集合的寄存器(例如,参见展示于图17中的高速缓存集合寄存器)中一次。使用高速缓存集合寄存器的益处在于与不具有高速缓存集合寄存器的标签的实施方案相比,标签的长度可更短。
展示于图16和17中的实施例两者都具有配置成保存执行类型的高速缓存集合寄存器,使得对应高速缓存集合可用于实施不同执行类型(例如,推测性和非推测性执行类型)。但,展示于图17中的实施例具有寄存器,所述寄存器进一步配置成保存执行类型和高速缓存集合索引。当执行类型与高速缓存集合索引组合以形成扩展高速缓存集合索引时,扩展高速缓存集合索引可用于选择高速缓存集合中的一个而不取决于通过高速缓存块的标签的寻址。此外,当将来自选定高速缓存集合的标签与地址中的标签相比较以确定命中或未中时,二步法选择可类似于使用高速缓存集合索引的常规二步法选择,或可用于与扩展标签组合以支持不同执行类型的高速缓存集合的互换。
除使用扩展标签以及本文中所公开的其它技术来改进用于由处理器进行的不同类型的执行的可互换高速缓存和高速缓存集合的使用之外,包含于高速缓存系统中或连接到高速缓存系统的电路可用于将来自高速缓存硬件系统的高速缓存集合的物理输出映射到分别用于由处理器进行的普通和推测性执行的逻辑主高速缓存和逻辑影子高速缓存。映射可根据至少一个控制寄存器(例如,物理到逻辑-集合-映射(PLSM)寄存器)。
此外,本文中所公开的为具有带有利用映射电路(例如展示于图18中的映射电路1830)将物理高速缓存集合输出映射到逻辑高速缓存集合输出的可互换高速缓存集合的高速缓存系统的计算装置。耦合到高速缓存系统的处理器可执行两种类型的线程,例如推测性和非推测性执行线程。推测性线程以尚未评估的条件推测地执行。推测性线程的数据可在逻辑影子高速缓存中。非推测性线程的数据可在逻辑主高速缓存或普通高速缓存中。随后,当评估条件的结果变得可用时,当条件需要线程的执行或移除线程时,系统可保持执行推测性线程的结果。通过映射电路,可通过改变控制寄存器的内容而将用于影子高速缓存的硬件电路改用作用于主高速缓存的硬件电路。因此,举例来说,如果需要执行推测性线程,那么不需要使主高速缓存与影子高速缓存同步。
在常规高速缓存中,每一高速缓存集合与“索引S”/“块索引L”的特定值静态地相关联。在本文中所公开的高速缓存系统中,任何高速缓存集合可用于任何索引值S/L和主高速缓存或影子高速缓存的任何目的。高速缓存集合可用于与高速缓存集合相关联的高速缓存集合寄存器且可由所述高速缓存集合寄存器中的数据定义。选择逻辑可接着用于基于S/L的索引值和使用高速缓存集合的方式选择适当结果。
举例来说,四个高速缓存集合(高速缓存集合0到集合3)最初可分别用于S/L=00、01、10和11的主高速缓存。假设推测性执行并不改变由01、10和11定义的高速缓存集合,那么第四高速缓存集合可用作S/L=00的推测性高速缓存。如果需要推测性执行的结果,那么可改变映射数据以指示S/L=00、01、10和11的主高速缓存分别用于第四高速缓存集合、高速缓存集合1、高速缓存集合2和高速缓存集合3。高速缓存集合0可接着释放或失效以用于推测性执行中的后续使用。如果下一推测性执行需要将高速缓存集合S/L改变为01,那么高速缓存集合0可用作影子高速缓存(例如,从高速缓存集合1复制且用于查找具有等于‘01’的S/L的地址的内容)。
此外,高速缓存系统和处理器不仅在预定主线程与预定推测性线程之间来回交换。考虑以下伪程序的推测性执行。
指令A;
如果条件=真,
那么指令B;
结束条件环;
指令C;和
指令D。
对于伪程序,处理器可运行两个线程。
线程A:
指令A;
指令C;和
指令D。
线程B:
指令A;
指令B;
指令C;和
指令D。
指令B的执行为推测性的,因为其取决于“条件=真”而不是“条件=假”的测试结果。仅当条件=真时需要指令B的执行。在测试的结果“条件=真”变得可用时,线程A的执行到达指令D,且线程B的执行可到达指令C。如果测试结果需要指令B的执行,那么线程B的高速缓存内容正确且线程A的高速缓存内容不正确。接着,应保持根据线程B的在高速缓存中作出的所有改变,且处理器可使用具有执行指令B的结果的高速缓存继续指令C的执行;且终止线程A。由于根据线程B作出的改变在影子高速缓存中,所以影子高速缓存的内容应作为主高速缓存接受。如果测试结果不需要指令B的执行,那么丢弃线程B的结果(例如,丢弃影子高速缓存的内容或使其失效)。
可根据映射电路和控制寄存器(例如,物理到逻辑-集合-映射(PLSM)寄存器)调换或改变用于影子和普通高速缓存的高速缓存集合。在一些实施例中,高速缓存系统可包含多个高速缓存集合,所述多个高速缓存集合具有配置成在高速缓存命中后即刻提供第一物理输出的第一高速缓存集合和配置成在高速缓存命中后即刻提供第二物理输出的第二高速缓存集合。高速缓存系统还可包含与耦合在高速缓存系统与处理器之间的命令总线的连接,和与耦合在高速缓存系统与处理器之间的地址总线的连接。高速缓存系统还可包含控制寄存器,和耦合到控制寄存器以根据控制寄存器的状态将多个高速缓存集合的相应物理输出映射到第一逻辑高速缓存和第二逻辑高速缓存的映射电路。高速缓存系统可配置成耦合在处理器与存储器系统之间。
当与地址总线的连接从处理器接收到存储器地址时且当控制寄存器处于第一状态时,映射电路可配置成:将第一物理输出映射到用于由处理器进行的第一类型的执行的第一逻辑高速缓存以在第一类型的执行期间实施从命令总线接收到的用于经由第一高速缓存集合存取存储器系统的命令;和将第二物理输出映射到用于由处理器进行的第二类型的执行的第二逻辑高速缓存以在第二类型的执行期间实施从命令总线接收到的用于经由第二高速缓存集合存取存储器系统的命令。并且,当与地址总线的连接从处理器接收到存储器地址时且当控制寄存器处于第二状态时,映射电路配置成:将第一物理输出映射到第二逻辑高速缓存以在第二类型的执行期间实施从命令总线接收到的用于经由第一高速缓存集合存取存储器系统的命令;和将第二物理输出映射到第一逻辑高速缓存以在第一类型的执行期间实施从命令总线接收到的用于经由第二高速缓存集合存取存储器系统的命令。
在一些实施例中,第一逻辑高速缓存为用于由处理器进行的非推测性执行的普通高速缓存,且第二逻辑高速缓存为用于由处理器进行的推测性执行的影子高速缓存。
此外,在一些实施例中,高速缓存系统可进一步包含分别与多个高速缓存集合相关联的多个寄存器,所述多个寄存器包含与第一高速缓存集合相关联的第一寄存器和与第二高速缓存集合相关联的第二寄存器。高速缓存系统还可包含耦合到处理器以根据多个寄存器控制多个高速缓存集合的逻辑电路。当与地址总线的连接从处理器接收到存储器地址时,逻辑电路可配置成从至少存储器地址产生集合索引,以及确定所产生的集合索引是否与存储在第一寄存器中的内容或与存储在第二寄存器中的内容匹配。并且,逻辑电路可配置成响应于所产生的集合索引与存储在第一寄存器中的内容匹配而经由第一高速缓存集合实施在与命令总线的连接中接收到的命令,和响应于所产生的集合索引与存储在第二寄存器中的内容匹配而经由第二高速缓存集合实施所述命令。
在一些实施例中,映射电路可为逻辑电路的一部分或连接到所述逻辑电路,且控制寄存器的状态可控制多个高速缓存集合中的高速缓存集合的状态。在一些实施例中,控制寄存器的状态可通过改变高速缓存集合的每一块的有效位而控制多个高速缓存集合中的高速缓存集合的状态。
此外,在一些实例中,高速缓存系统可进一步包含与来自处理器的识别由处理器对指令的推测性执行的状态的推测状态信号线的连接。与推测状态信号线的连接可配置成接收推测性执行的状态,且推测性执行的状态可指示将接受还是拒绝推测性执行的结果。当执行类型从推测性执行改变为非推测性执行时,逻辑电路可配置成在推测性执行的状态指示将接受推测性执行的结果的情况下(例如,当推测性执行将变为主执行线程时),经由控制寄存器改变第一和第二高速缓存集合的状态。并且,当执行类型从推测性执行改变为非推测性执行时,逻辑电路可配置成在推测性执行的状态指示将拒绝推测性执行的结果的情况下,经由控制寄存器维持第一和第二高速缓存集合的状态而不改变。
在一些实施例中,映射电路为逻辑电路的部分或连接到所述逻辑电路,且控制寄存器的状态可经由映射电路控制多个高速缓存寄存器中的高速缓存寄存器的状态。在这种实例中,高速缓存系统可进一步包含与来自处理器的识别由处理器对指令的推测性执行的状态的推测状态信号线的连接。与推测状态信号线的连接可配置成接收推测性执行的状态,且推测性执行的状态指示将接受还是拒绝推测性执行的结果。当执行类型从推测性执行改变为非推测性执行时,逻辑电路可配置成在推测性执行的状态指示将接受推测性执行的结果的情况下,经由控制寄存器改变第一和第二寄存器的状态。并且,当执行类型从推测性执行改变为非推测性执行时,逻辑电路可配置成在推测性执行的状态指示将拒绝推测性执行的结果的情况下,经由控制寄存器维持第一和第二寄存器的状态而不改变。
另外,本公开包含用以使用各自可互换为影子高速缓存或主高速缓存的多个可互换高速缓存来确保推测性指令执行的技术。推测性指令执行可在计算装置的处理器中进行。处理器可执行指令的两种不同类型的线程。可推测地执行线程中的一个(例如在尚未评估的条件下)。推测性线程的数据可在充当影子高速缓存的逻辑高速缓存中。主线程的数据可在充当主高速缓存的逻辑高速缓存中。随后,当评估条件的结果变得可用时,处理器可在条件需要线程的执行时保持执行推测性线程的结果,或去除结果。可通过改变寄存器的内容而将充当影子高速缓存的高速缓存的硬件电路改用作主高速缓存的硬件电路。因此,如果需要执行推测性线程,那么不需要使主高速缓存与影子高速缓存同步。
本文中所公开的技术还涉及可用于以改进的性能实施主高速缓存和影子高速缓存的统一高速缓存结构的使用。在统一高速缓存结构中,可使用寄存器集合动态地重新映射高速缓存集合的结果以在主高速缓存中与在影子高速缓存中交换。当推测性执行成功时,与影子高速缓存一起使用的高速缓存集合具有正确数据且可重新映射为用于主高速缓存的对应高速缓存集合。这消除了对如由使用影子和主高速缓存的其它技术使用的将数据从影子高速缓存复制到主高速缓存的需要。
一般来说,高速缓存可配置为多个块集合。每一块集合可具有多个块,且每一块可保存数个字节。存储器地址可分割成用于存取高速缓存、标签、块索引(其可用于寻址多个集合内的集合)和高速缓存块(其可用于寻址字节块中的字节)的三个片段。对于集合中的每一块,高速缓存不仅存储来自存储器的数据,而且还可存储数据从其加载的地址的标签和指示块中的内容是否有效的字段。可使用块索引(例如,集合ID)和高速缓存块(例如,字节ID)从高速缓存检索数据。将检索到的数据中的标签与地址的标签部分进行比较。匹配的标签意味着针对所述地址高速缓存数据。否则,意味着可针对映射到高速缓存中的相同位置的另一地址高速缓存数据。
在使用多个可互换高速缓存的技术的情况下,可互换高速缓存的物理高速缓存集合并不硬接线为主高速缓存或影子高速缓存。物理高速缓存集合可用作主高速缓存集合或影子高速缓存集合。并且,寄存器集合可用于指定物理高速缓存集合当前是正用作主高速缓存集合还是影子高速缓存集合。一般来说,映射可构造成将物理高速缓存集合的输出转译为由块索引(例如,集合ID)和主状态或影子状态表示的对应高速缓存集合的逻辑输出。重新映射允许将任何可用物理高速缓存用作影子高速缓存。
在一些实施例中,统一高速缓存架构可将影子高速缓存(例如,推测性高速缓存)重新映射到主高速缓存,且可将主高速缓存重新映射到推测性高速缓存。应理解,设计可包含可在主高速缓存或高速缓存集合或推测性高速缓存或高速缓存集合之间互换的任何数目个高速缓存或高速缓存集合。
应理解,主高速缓存或高速缓存集合和推测性高速缓存或高速缓存集合的硬连线中不存在物理区别。并且,在一些实施例中,本文中所描述的逻辑单元的硬连线中不存在物理区别。应理解,可互换高速缓存或高速缓存集合并不具有不同的高速缓存容量和结构。否则,这种高速缓存或高速缓存集合将不可互换。此外,物理高速缓存集合可动态地配置成主要或推测性的,例如不具有先验确定。
此外,应理解,可互换性发生在高速缓存层级下而不是高速缓存块层级下。高速缓存块层级下的可互换性可允许主高速缓存和影子高速缓存具有不同容量;且因此,不可互换。
此外,在一些实施例中,当由处理器进行的推测成功且高速缓存正用作主高速缓存以及另一高速缓存正用作推测性或影子高速缓存时,与主高速缓存的高速缓存索引块相关联的有效位全部设定为指示无效(例如,通过“0”位值指示无效)。在这种实施例中,推测性高速缓存的所有有效位的初始状态指示无效,但接着改变以指示有效,这是由于推测成功。换句话说,主高速缓存的先前状态作废,且将推测性高速缓存的先前状态从无效设定为有效且可由主线程存取。
在一些实施例中,用于主高速缓存的PLSM寄存器可从指示主高速缓存改变为指示推测性高速缓存。由PLSM寄存器将指示从主高速缓存改变为推测性高速缓存可由在成功推测之后接收指示无效的主高速缓存的有效位的PLSM寄存器进行。举例来说,在成功推测之后且在第一高速缓存最初为主高速缓存且第二高速缓存最初为推测性高速缓存的情况下,位“0”的无效指示可替换用于第一高速缓存的3位PLSM寄存器中的最低有效位,这可将“011”改变为“010”(或将“3”改变为“2”)。并且,对于用于第二高速缓存的3位PLSM寄存器,位“1”的有效指示可替换PLSM寄存器中的最低有效位,这可将“010”改变为“011”(或将“2”改变为“3”)。因此,如实例所展示,最初用于第一高速缓存(例如,主高速缓存)且最初选择第一高速缓存的PLSM寄存器在成功推测之后改变为选择第二高速缓存(例如,推测性高速缓存)。并且,如实例所展示,最初用于第二高速缓存(例如,推测性高速缓存)且最初选择第二高速缓存的PLSM寄存器在成功推测之后改变为选择第一高速缓存(例如,主高速缓存)。通过这种设计,处理器的主线程可首先存取最初指明为主高速缓存的高速缓存,且接着在由处理器进行的成功推测之后存取最初指明为推测性高速缓存的高速缓存。并且,处理器的推测性线程可首先存取最初指明为推测性高速缓存的高速缓存,且接着在由处理器进行的成功推测之后存取最初指明为主高速缓存的高速缓存。
图1A展示分割成标签部分104a、块索引部分106a和块偏移部分108a的存储器地址102a。根据本公开的一些实施例,执行类型110a可与存储器地址的部分组合以控制高速缓存操作。根据本文中所公开的一些实施例的用于控制高速缓存系统中的寻址的总位为A个位。并且,用于部分104a、106a和108a和执行类型110a的位的总和等于A个位。标签部分104a为K个位,块索引部分106a为L个位,块偏移部分108a为M个位,且执行类型110a为一或多个T个位。
举例来说,针对给定执行类型,具有相同块索引部分106a和块偏移部分108a的所有存储器地址的数据可存储在高速缓存中的相同物理位置中。当存储器地址102a处的数据存储在高速缓存中时,标签部分104a还存储用于含有存储器地址的块以识别具有相同块索引部分106a和块偏移部分108a的地址中的哪一个当前正高速缓存于高速缓存中的所述位置处。
可针对不同类型的执行将存储器地址处的数据高速缓存于统一高速缓存结构中的不同位置中。举例来说,数据可在非推测性执行期间高速缓存于主高速缓存中;且随后在推测性执行期间高速缓存于影子高速缓存中。执行类型110a可与标签部分104a组合以从高速缓存选择,所述高速缓存可动态地配置成用于在无限制的情况下在主执行和推测性执行中使用。可存在实施执行类型110a与标签部分104a的组合的使用以作出选择的许多不同方式。举例来说,图2和4中所描绘的逻辑电路206可使用执行类型110a和/或标签部分104a。
在相对简单的实施方案中,执行类型110a可与标签部分104a组合以在确定高速缓存位置是含有用于存储器地址102a的数据还是用于指令的当前类型的执行的数据时形成扩展标签。举例来说,高速缓存系统可使用标签部分104a选择高速缓存位置而不区别执行类型;且当标签部分104a与执行类型110a组合以形成扩展标签时,扩展标签可与类似于在具有不同类型的执行(例如,推测性执行和非推测性执行)中选择高速缓存位置的方式使用,使得影子高速缓存的技术可实施以增强安全性。此外,由于关于与高速缓存的数据相关联的执行类型的信息在许多高速缓存位置当中(例如,在高速缓存集合中,或在具有多个高速缓存集合的高速缓存中)共享,所以不必存储用于个别位置的执行类型;且选择机构(例如,开关、滤波器或多路复用器,例如数据多路复用器)可用于根据执行类型实施选择)。替代地,可将用于不同类型的执行的物理高速缓存或物理高速缓存集合重新映射到分别与不同类型的执行预关联的逻辑高速缓存。因此,可根据执行类型110a选择逻辑高速缓存的使用。
图1B展示分割分割成部分的存储器地址102b以控制高速缓存操作的另一方式。存储器地址102b分割成标签部分104b、高速缓存集合索引部分112b、块索引部分106b和块偏移部分108b。存储器地址102b的总位为A个位。并且,用于四个部分的位的总和等于地址102b的A个位。标签部分104b为K个位,块索引部分106b为L个位,块偏移部分108b为M个位,且高速缓存集合索引部分112b为S个位。因此,对于地址102b,其A个位=K个位+L个位+M个位+S个位。根据图1B的存储器地址102b的分割允许高速缓存数据时的集合关联性的实施。
举例来说,可在高速缓存中配置多个高速缓存集合,其中可使用高速缓存集合索引112b寻址每一高速缓存集合。与相同高速缓存集合索引相关联的数据集可高速缓存于相同高速缓存集合中。高速缓存于高速缓存集合中的数据块的标签部分104b可与数据块相关联地存储在高速缓存中。当地址102b用于从使用高速缓存集合索引112b识别出的高速缓存集合检索数据时,可检索存储在高速缓存集合中的数据块的标签部分,且将所述标签部分与标签部分104b进行比较以确定存取请求的地址102b的标签104b与存储在由高速缓存集合索引112b识别出的高速缓存集合中且存储用于由块索引106b识别出的高速缓存块的标签104b之间是否存在匹配。如果存在匹配(例如高速缓存命中),那么存储在高速缓存集合中的高速缓存块是用于存储器地址112b;否则,存储在高速缓存集合中的高速缓存块是用于具有与存储器地址102b相同的高速缓存集合索引112b和相同的块索引106b的另一存储器地址,这引起高速缓存未中。响应于高速缓存未中,高速缓存系统存取主存储器以根据地址102b检索数据块。为了实施影子高速缓存技术,高速缓存集合索引112b可与执行类型110a组合以形成扩展高速缓存集合索引。因此,可使用识别高速缓存集合索引和执行类型两者的扩展高速缓存集合索引来寻址用于不同高速缓存集合索引的不同类型的执行的高速缓存集合。
在图1B中,从地址102b的预定部分提取高速缓存集合索引部分112b。存储在具有不同集合索引的存储器地址处的数据可高速缓存于高速缓存的不同高速缓存集合中以实施高速缓存数据时的集合关联性。可使用高速缓存集合索引(例如,地址102b的部分112b)选择高速缓存的高速缓存集合。替代地,可使用图1C中所说明的分割方案经由包含高速缓存集合指示符的标签104c实施高速缓存集合关联性。任选地,从标签104c计算高速缓存集合指示符且将其用作高速缓存集合索引以寻址高速缓存集合。替代地,可经由标签104c直接实施集合关联性,使得针对高速缓存命中选择存储标签104c的高速缓存集合;且当没有高速缓存集合存储标签104c时,确定高速缓存未中。替代地,地址102d可以如图1D中所说明的方式分割以用于高速缓存操作,其中标签部分104d包含高速缓存集合索引112d,其中所述高速缓存集合不使用高速缓存集合索引显式且单独地寻址。举例来说,为了实施影子高速缓存技术,执行类型110e与具有嵌入式高速缓存集合指示符的标签104e的组合(图1E中所描绘)可用于选择用于正确执行类型且存储相同标签104e的高速缓存集合以用于高速缓存命中。当没有高速缓存集合具有匹配执行类型且存储相同标签104e时,确定高速缓存未中。
此外,如图1C中所展示,图1C描绘分割分割成部分的存储器地址102c以控制高速缓存操作的另一方式。存储器地址102c分割成具有高速缓存集合指示符的标签部分104c、块索引部分106c和块偏移部分108c。存储器地址102c的总位为A个位。并且,用于三个部分的位的总和等于地址102c的A个位。标签部分104c为K个位,块索引部分106c为L个位,且块偏移部分108c为M个位。因此,对于地址102c,其A个位=K个位+L个位+M个位。如所提及,根据图1C的存储器地址102c的分割允许高速缓存数据时的集合关联性的实施。
此外,如图1D中所展示,图1D描绘分割分割成部分的存储器地址102d以控制高速缓存操作的另一方式。存储器地址102d分割成具有高速缓存集合索引112d的标签部分104d、块索引部分106d和块偏移部分108d。存储器地址102d的总位为A个位。并且,用于三个部分的位的总和等于地址102d的A个位。标签部分104d为K个位,块索引部分106d为L个位,且块偏移部分108d为M个位。因此,对于地址102d,其A个位=K个位+L个位+M个位。如所提及,根据图1D的存储器地址102d的分割允许高速缓存数据时的集合关联性的实施。
此外,如图1E中所展示,图1E描绘分割分割成部分的存储器地址102e以控制高速缓存操作的另一方式。图1E展示分割成具有高速缓存集合指示符的标签部分104e、块索引部分106e和块偏移部分108e的存储器地址102e。根据本公开的一些实施例,执行类型110e可与存储器地址的部分组合以控制高速缓存操作。根据本文中所公开的一些实施例的用于控制高速缓存系统中的寻址的总位为A个位。并且,用于部分104e、106e和108e和执行类型110e的位的总和等于A个位。标签部分104e为K个位,块索引部分106e为L个位,块偏移部分108e为M个位,且执行类型110e为T个位。
图2、3A和3B展示根据本公开的一些实施例的实例计算装置的实例方面,每一计算装置包含具有可针对第一类型和第二类型执行互换(例如,用于以增强的安全性实施影子高速缓存技术)的高速缓存的高速缓存系统。
图2特定地展示包含具有多个高速缓存(例如,参见高速缓存202a、202b和202c)的高速缓存系统200的实例计算装置的方面。实例计算装置还展示为具有处理器201和存储器系统203。高速缓存系统200配置成耦合在处理器201与存储器系统203之间。
高速缓存系统200展示为包含与耦合在高速缓存系统与处理器201之间的命令总线205a的连接204a。高速缓存系统200展示为包含与耦合在高速缓存系统与处理器201之间的地址总线205b的连接204b。分别在图1A、1B、1C、1D和1E中所描绘的地址102a、102b、102c、102d和102e可取决于高速缓存系统200的实施而各自经由地址总线205b传达。高速缓存系统200还展示为包含与耦合在高速缓存系统与处理器201之间的数据总线205c的连接204c。高速缓存系统200还展示为包含与来自处理器201的识别执行类型的执行类型信号线205d的连接204d。
未在图2中展示,高速缓存系统200可包含可配置数据位。可配置数据位可包含于展示于图3A中的第一状态中的数据312中或为所述数据312,且可包含于展示于图3B中的第二状态中的数据314中或为所述数据314。可通过命令总线205a、地址总线205b和数据总线205c控制来自处理器的存储器存取请求和由处理器进行的存储器使用。
在一些实施例中,高速缓存系统200可包含第一高速缓存(例如,参见高速缓存202a)和第二高速缓存(例如,参见高速缓存202b)。在这种实施例中,如图2中所展示,高速缓存系统200可包含耦合到处理器201的逻辑电路206。此外,在这种实施例中,逻辑电路206可配置成基于可配置数据位控制第一高速缓存(例如,参见高速缓存202a)和第二高速缓存(例如,参见高速缓存202b)。
当可配置数据位处于第一状态时(例如,参见图3A中所描绘的数据312),逻辑电路206可配置成当执行类型为第一类型时,实施从命令总线205a接收到的用于经由第一高速缓存存取存储器系统203的命令。此外,当可配置数据位处于第一状态时(例如,参见图3A中所描绘的数据312),逻辑电路206可配置成当执行类型为第二类型时,实施从命令总线205a接收到的用于经由第二高速缓存存取存储器系统203的命令。
当可配置数据位处于第二状态时(例如,参见图3B中所描绘的数据314),逻辑电路206可配置成当执行类型为第一类型时,实施从命令总线205a接收到的用于经由第二高速缓存存取存储器系统203的命令。此外,当可配置数据位处于第二状态时(例如,参见图3B中所描绘的数据314),逻辑电路206可配置成当执行类型为第二类型时,实施从命令总线205a接收到的用于经由第一高速缓存存取存储器系统203的命令。
在一些实施例中,当执行类型从第二类型改变为第一类型时,逻辑电路206配置成切换可配置数据位。
此外,如图2中所展示,高速缓存系统200进一步包含与耦合在高速缓存系统与存储器系统203之间的第二命令总线209a的连接208a。高速缓存系统200还包含与耦合在高速缓存系统与存储器系统203之间的第二地址总线209b的连接208b。高速缓存系统200还包含与耦合在高速缓存系统与存储器系统203之间的第二数据总线209c的连接208c。当可配置数据位处于第一状态时,当执行类型为第一类型(例如非推测性类型)时,逻辑电路206配置成将用于经由第一高速缓存存取存储器系统203的命令提供到第二命令总线209a。当可配置数据位处于第一状态时,当执行类型为第二类型(例如推测性类型)时,逻辑电路206还配置成将用于经由第二高速缓存存取存储器系统的命令提供到第二命令总线209a。
当可配置数据位处于第二状态时,当执行类型为第一类型时,逻辑电路206配置成将用于经由第二高速缓存存取存储器系统203的命令提供到第二命令总线209a。此外,当可配置数据位处于第二状态时,当执行类型为第二类型时,逻辑电路206配置成将用于经由第一高速缓存存取存储器系统203的命令提供到第二命令总线209a。
在一些实施例中,与命令总线205a的连接204a配置成从处理器201接收用于存取存储器系统203的读取命令或写入命令。此外,与地址总线205b的连接204b可配置成从处理器201接收存储器地址以用于针对读取命令或写入命令存取存储器系统203。此外,与数据总线205c的连接204c可配置成将数据传达到处理器201以供处理器针对读取命令读取数据。并且,与数据总线205c的连接204c还可配置成从处理器201接收数据以针对写入命令在存储器系统203中写入。此外,与执行类型信号线205d的连接204d可配置成从处理器201接收执行类型的识别(例如,由处理器进行的非推测性或推测性类型的执行的识别)。
在一些实施例中,逻辑电路206可配置成当可配置数据位处于第一状态且与执行类型信号线205d的连接204d接收第一类型(例如,非推测性类型)的指示时,从处理器201选择用于存储器存取请求(例如,从用于存取存储器系统的命令总线接收到的命令中的一个)的第一高速缓存。此外,逻辑电路206可配置成当可配置数据位处于第一状态且与执行类型信号线205d的连接204d接收第二类型(例如,推测性类型)的指示时,从处理器201选择用于存储器存取请求的第二高速缓存。此外,逻辑电路206可配置成当可配置数据位处于第二状态且与执行类型信号线205d的连接204d接收第一类型的指示时,从处理器201选择用于存储器存取请求的第二高速缓存。并且,逻辑电路206可配置成当可配置数据位处于第二状态且与执行类型信号线205d的连接204d接收第二类型的指示时,从处理器201选择用于存储器存取请求的第一高速缓存。
图3A特定地展示包含具有多个高速缓存(例如,参见高速缓存302和304)的高速缓存系统(例如,高速缓存系统200)的实例计算装置的方面。实例计算装置还展示为具有存储可包含可配置位的数据312的寄存器306。寄存器306可连接到逻辑电路206或为所述逻辑电路206的一部分。在图3A中,展示在第一时间例项(“时间例项X”)期间,寄存器306存储可为处于第一状态的可配置位的数据312。在第一时间例项期间从第一高速缓存(例如,高速缓存302)接收到的内容308a包含用于第一类型的执行的内容。并且,在第一时间例项期间从第二高速缓存(例如,高速缓存304)接收到的内容310a包含用于第二类型的执行的内容。
图3B特定地展示包含具有多个高速缓存(例如,参见高速缓存302和304)的高速缓存系统(例如,高速缓存系统200)的实例计算装置的方面。实例计算装置还展示为具有存储可包含可配置位的数据314的寄存器306。在图3B中,展示在第二时间例项(“时间例项Y”)期间,寄存器306存储可为处于第二状态的可配置位的数据314。在第二时间例项期间从第一高速缓存(例如,高速缓存302)接收到的内容308b包含用于第二类型的执行的内容。并且,在第二时间例项期间从第二高速缓存(例如,高速缓存304)接收到的内容310b包含用于第一类型的执行的内容。
将寄存器306连接到高速缓存302和304的所说明的线320可为逻辑电路206的一部分。
在一些实施例中,代替使用可配置位来控制高速缓存系统200的高速缓存的使用,可使用另一形式的数据来控制高速缓存系统的高速缓存的使用。举例来说,逻辑电路206可配置成基于存储在寄存器306中的不是可配置位的不同数据来控制第一高速缓存(例如,参见高速缓存202a)和第二高速缓存(例如,参见高速缓存202b)。在这种实例中,当寄存器306存储第一数据或处于第一状态时,逻辑电路可配置成:当执行类型为第一类型时,实施从命令总线接收到的用于经由第一高速缓存存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由第二高速缓存存取存储器系统的命令。并且,当寄存器306存储第二数据或处于第二状态时,逻辑电路可配置成:当执行类型为第一类型时,实施从命令总线接收到的用于经由第二高速缓存存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由第一高速缓存存取存储器系统的命令。
图4、5A和5B展示根据本公开的一些实施例的实例计算装置的实例方面,每一计算装置包含具有用于主类型或普通类型执行(例如,非推测性执行)和推测性执行的可互换高速缓存的高速缓存系统。
图4特定地展示包含具有多个高速缓存(例如,参见图4中所描绘的高速缓存202a、202b和202c)的高速缓存系统400的实例计算装置的方面。在图4中,实例计算装置还展示为具有处理器401和存储器系统203。如由图4所展示,高速缓存系统400类似于高速缓存系统200,但高速缓存系统400还包含与来自处理器401的识别由处理器401对指令的推测性执行的状态的推测状态信号线404的连接402。
类似地,高速缓存系统400展示为包含与耦合在高速缓存系统与处理器401之间的命令总线205a的连接204a。系统400还包含与耦合在高速缓存系统与处理器401之间的地址总线205b的连接204b。分别在图1A、1B、1C、1D和1E中所描绘的地址102a、102b、102c、102d和102e可取决于高速缓存系统400的实施而各自经由地址总线205b传达。系统400还包含与耦合在高速缓存系统与处理器401之间的数据总线205c的连接204c。其还包含与来自处理器401的识别非推测性执行类型或推测性执行类型的执行类型信号线205d的连接204d。未在图4中展示,高速缓存系统400还可包含可配置数据位。可配置数据位可包含于展示于图5A中的第一状态中的数据312中或为所述数据312,且可包含于展示于图5B中的第二状态中的数据314中或为所述数据314。
在一些实施例中,高速缓存系统400可包含第一高速缓存(例如,参见高速缓存202a)和第二高速缓存(例如,参见高速缓存202b)。在这种实施例中,如图4中所展示,高速缓存系统400可包含耦合到处理器401的逻辑电路406。此外,在这种实施例中,逻辑电路406可配置成基于可配置数据位控制第一高速缓存(例如,参见高速缓存202a)和第二高速缓存(例如,参见高速缓存202b)。当可配置数据位处于第一状态时(例如,参见图5A中所描绘的数据312),逻辑电路406可配置成:当执行类型为非推测性类型时,实施从命令总线205a接收到的用于经由第一高速缓存存取存储器系统203的命令;和当执行类型为推测性类型时,实施从命令总线205a接收到的用于经由第二高速缓存存取存储器系统203的命令。当可配置数据位处于第二状态时(例如,参见图5B中所描绘的数据314),逻辑电路406可配置成当执行类型为非推测性类型时,实施从命令总线205a接收到的用于经由第二高速缓存存取存储器系统203的命令。此外,当可配置数据位处于第二状态时(例如,参见图5B中所描绘的数据314),逻辑电路406可配置成当执行类型为推测性类型时,实施从命令总线205a接收到的用于经由第一高速缓存存取存储器系统203的命令。
在一些实施例中,例如图4中所展示,第一类型可配置成指示由处理器对指令的非推测性执行。在这种实例中,第二类型可配置成指示由处理器对指令的推测性执行。在这种实施例中,高速缓存系统400可进一步包含与来自处理器401的识别由处理器对指令的推测性执行的状态的推测状态信号线404的连接402。与推测状态信号线404的连接402可配置成接收推测性执行的状态,且推测性执行的状态可指示将接受还是拒绝推测性执行的结果。
此外,当执行类型从第二类型或推测性类型改变为第一类型或非推测性类型时,系统400的逻辑电路406可配置成在推测性执行的状态指示将接受推测性执行的结果的情况下切换可配置数据位。另外,当执行类型从第二类型或推测性类型改变为第一类型或非推测性类型时,系统400的逻辑电路406可配置成在推测性执行的状态指示将拒绝推测性执行的结果的情况下维持可配置数据位而不改变。
图5A特定地展示包含具有多个高速缓存(例如,参见高速缓存302和304)的高速缓存系统(例如,高速缓存系统400)的实例计算装置的方面。实例计算装置还展示为具有存储可包含可配置位的数据312的寄存器306。在图5A中,展示在第一时间例项(“时间例项X”)期间,寄存器306存储可为处于第一状态的可配置位的数据312。这类似于图3A,不同之处在于在第一时间例项期间从第一高速缓存(例如,高速缓存302)接收到的内容502a包含用于非推测性执行的内容。并且,在第一时间例项期间从第二高速缓存(例如,高速缓存304)接收到的内容504a包含用于推测性执行的内容。
图5B特定地展示包含具有多个高速缓存(例如,参见高速缓存302和304)的高速缓存系统(例如,高速缓存系统400)的实例计算装置的方面。实例计算装置还展示为具有存储可包含可配置位的数据314的寄存器306。在图5B中,展示在第二时间例项(“时间例项Y”)期间,寄存器306存储可为处于第二状态的可配置位的数据314。这类似于图3B,不同之处在于在第二时间例项期间从第一高速缓存(例如,高速缓存302)接收到的内容502b包含用于推测性执行的内容。并且,在第二时间例项期间从第二高速缓存(例如,高速缓存304)接收到的内容504b包含用于非推测性执行的内容。
此外,类似地,在图5A和5B中,将寄存器306连接到高速缓存302和304的所说明的线320可为高速缓存系统400的逻辑电路406的一部分。
在一些实施例中,代替使用可配置位来控制高速缓存系统400的高速缓存的使用,可使用另一形式的数据来控制高速缓存系统400的高速缓存的使用。举例来说,系统400中的逻辑电路406可配置成基于存储在寄存器306中的不是可配置位的不同数据来控制第一高速缓存(例如,参见高速缓存202a)和第二高速缓存(例如,参见高速缓存202b)。在这种实例中,当寄存器306存储第一数据或处于第一状态时,逻辑电路可配置成:当执行类型为非推测性类型时,实施从命令总线接收到的用于经由第一高速缓存存取存储器系统的命令;和当执行类型为推测性类型时,实施从命令总线接收到的用于经由第二高速缓存存取存储器系统的命令。并且,当寄存器306存储第二数据或处于第二状态时,逻辑电路可配置成:当执行类型为非推测性类型时,实施从命令总线接收到的用于经由第二高速缓存存取存储器系统的命令;和当执行类型为推测性类型时,实施从命令总线接收到的用于经由第一高速缓存存取存储器系统的命令。
一些实施例可包含高速缓存系统且所述高速缓存系统可包含多个高速缓存,所述多个高速缓存包含第一高速缓存和第二高速缓存。系统还可包含与命令总线的连接,所述连接配置成从连接到高速缓存系统的处理器接收读取命令或写入命令,以用于从存储器系统读取或写入到存储器系统。系统还可包含与地址总线的连接,所述连接配置成从处理器接收存储器地址以用于针对读取命令或写入命令存取存储器系统。系统还可包含与数据总线的连接,所述连接配置成:将数据传达到处理器以供处理器针对读取命令读取数据;和从处理器接收数据以针对写入命令在存储器系统中写入。在这种实例中,来自处理器的存储器存取请求和由处理器使用的存储器可由命令总线、地址总线和数据总线定义。系统还可包含配置成从处理器接收执行类型的识别出的执行类型信号线。执行类型为第一执行类型或第二执行类型(例如,普通或非推测性执行或推测性执行)。
系统还可包含可配置数据位,所述可配置数据位配置成设定为第一状态(例如,“0”)或第二状态(例如,“1”)以控制第一高速缓存和第二高速缓存的选择以供处理器使用。
系统还可包含逻辑电路,所述逻辑电路配置成当可配置数据位处于第一状态且执行类型信号线接收第一类型的执行的指示时,选择供处理器使用的第一高速缓存。逻辑电路还可配置成当可配置数据位处于第一状态且执行类型信号线接收第二类型的执行的指示时,选择供处理器使用的第二高速缓存。逻辑电路还可配置成当可配置数据位处于第二状态且执行类型信号线接收第一类型的执行的指示时,选择供处理器使用的第二高速缓存。逻辑电路还可配置成当可配置数据位处于第二状态且执行类型信号线接收第二类型的执行的指示时,选择供处理器使用的第一高速缓存。
在一些实施例中,第一类型的执行为由处理器对指令的推测性执行,且第二类型的执行为由处理器对指令的非推测性执行(例如,普通或主执行)。在这种实例中,系统可进一步包含与配置成从处理器接收推测状态的推测状态信号线的连接。推测状态可为对具有嵌套指令的条件的接受或拒绝,所述嵌套指令最初由处理器的推测性执行执行且随后在推测状态为对条件的接受时由处理器的普通执行执行。
在一些实施例中,逻辑电路配置成当由推测状态信号线接收到的推测状态为对条件的接受时,将可配置数据位从第一状态交换到第二状态。逻辑电路还可配置成当由推测状态信号线接收到的推测状态为对条件的拒绝时,维持可配置数据位的状态。
在一些实施例中,逻辑电路配置成当由执行类型信号线接收到的信号从普通执行的指示改变为推测性执行的指示时,选择如由可配置数据位的第一状态识别出的第二高速缓存,且限制第一高速缓存如由可配置数据位的第一状态识别出而使用。在这一改变下,可由逻辑电路忽略/绕过推测状态,因为处理器在推测性执行中并不知道是否应由主执行执行在推测性执行下预先形成的指令。
逻辑电路还可配置成当执行类型信号线接收普通执行的指示时、当由执行类型信号线接收到的信号从推测性执行的指示改变为普通执行的指示时,和当由推测状态信号线接收到的推测状态为对条件的拒绝时,维持可配置数据位的第一状态且选择用于存储器存取请求的第一高速缓存。
在一些实施例中,逻辑电路配置成当由执行类型信号线接收到的信号从推测性执行的指示改变为普通执行的指示时,和当由推测状态信号线接收到的推测状态为对条件的拒绝时,使第二高速缓存的内容失效且丢弃所述内容。
在一些实施例中,系统进一步包含与第二命令总线的连接,所述连接配置成将读取命令或写入命令传达到存储器系统(例如,包含主存储器)。可由高速缓存系统从处理器接收读取命令或写入命令。系统还可包含与第二地址总线的连接,所述连接配置成将存储器地址传达到存储器系统。可由高速缓存系统从处理器接收存储器地址。系统还可包含与第二数据总线的连接,所述连接配置成:将数据传达到存储器系统以在存储器系统中写入;和从存储器系统接收数据以传达到处理器以供处理器读取。举例来说,从高速缓存系统到存储器系统的存储器存取请求可由第二命令总线、第二地址总线和第二数据总线定义。
在一些实施例中,当可配置数据位处于第一状态时,逻辑电路配置成:当执行类型为第一类型时,将用于经由第一高速缓存存取存储器系统的命令提供到第二命令总线;和当执行类型为第二类型时,将用于经由第二高速缓存存取存储器系统的命令提供到第二命令总线。并且,当可配置数据位处于第二状态时,逻辑电路可配置成:当执行类型为第一类型时,将用于经由第二高速缓存存取存储器系统的命令提供到第二命令总线;和当执行类型为第二类型时,将用于经由第一高速缓存存取存储器系统的命令提供到第二命令总线。
一些实施例可包含系统,所述系统包含处理器、存储器系统和耦合在处理器与存储器系统之间的高速缓存系统。系统的高速缓存系统可包含多个高速缓存,所述多个高速缓存包含第一高速缓存和第二高速缓存。系统的高速缓存系统还可包含与耦合在高速缓存系统与处理器之间的命令总线的连接、与耦合在高速缓存系统与处理器之间的地址总线的连接、与耦合在高速缓存系统与处理器之间的数据总线的连接,和与来自处理器的识别执行类型的执行类型信号线的连接。
系统的高速缓存系统还可包含可配置数据位,和耦合到处理器以基于可配置数据位控制第一高速缓存和第二高速缓存的逻辑电路。当可配置数据位处于第一状态时,逻辑电路可配置成:当执行类型为第一类型时,实施从命令总线接收到的用于经由第一高速缓存存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由第二高速缓存存取存储器系统的命令。并且,当可配置数据位处于第二状态时,逻辑电路可配置成:当执行类型为第一类型时,实施从命令总线接收到的用于经由第二高速缓存存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由第一高速缓存存取存储器系统的命令。
在这种系统中,第一类型可配置成指示由处理器对指令的非推测性执行,且第二类型可配置成指示由处理器对指令的推测性执行。此外,系统的高速缓存系统可进一步包含与来自处理器的识别由处理器对指令的推测性执行的状态的推测状态信号线的连接。与推测状态信号线的连接可配置成接收推测性执行的状态,且推测性执行的状态可指示将接受还是拒绝推测性执行的结果。当执行类型从第二类型(推测性类型)改变为第一类型(非推测性类型)时,逻辑电路可配置成在推测性执行的状态指示将接受推测性执行的结果的情况下切换可配置数据位。并且,当执行类型从第二类型(推测性类型)改变为第一类型(非推测性类型)时,逻辑电路可配置成在推测性执行的状态指示将拒绝推测性执行的结果的情况下维持可配置数据位而不改变。
图6、7A、7B、8A、8B、9A和9B展示根据本公开的一些实施例的实例计算装置的实例方面,每一计算装置包含具有用于第一类型和第二类型执行(例如,用于以增强的安全性实施影子高速缓存技术和/或用于主类型和推测性类型执行)的可互换高速缓存集合的高速缓存系统。
图6特定地展示包含具有多个高速缓存(例如,参见高速缓存602a、602b和602c)的高速缓存系统600的实例计算装置的方面,其中高速缓存中的至少一个以高速缓存集合关联性实施。实例计算装置还展示为具有处理器601和存储器系统603。高速缓存系统600配置成耦合在处理器601与存储器系统603之间。
高速缓存系统600展示为包含与耦合在高速缓存系统与处理器601之间的命令总线605a的连接604a。高速缓存系统600展示为包含与耦合在高速缓存系统与处理器601之间的地址总线605b的连接604b。分别在图1A、1B、1C、1D和1E中所描绘的地址102a、102b、102c、102d和102e可取决于高速缓存系统600的实施而各自经由地址总线605b传达。高速缓存系统600展示为包含与耦合在高速缓存系统与处理器601之间的数据总线605c的连接604c。高速缓存系统600还展示为包含与来自处理器601的识别执行类型的执行类型信号线605d的连接604d。连接604a、604b、604c和604d可提供总线605a、605b、605c和605d与高速缓存系统600的逻辑电路606之间的通信耦合。
此外,如图6中所展示,高速缓存系统600进一步包含与耦合在高速缓存系统与存储器系统603之间的第二命令总线609a的连接608a。高速缓存系统600还包含与耦合在高速缓存系统与存储器系统603之间的第二地址总线609b的连接608b。高速缓存系统600还包含与耦合在高速缓存系统与存储器系统603之间的第二数据总线609c的连接608c。
高速缓存系统600还包含多个高速缓存集合(例如,参见高速缓存集合610a、610b和610c)。高速缓存集合可包含第一高速缓存集合(例如,参见高速缓存集合610a)和第二高速缓存集合(例如,参见高速缓存集合610b)。
此外,如图6中所展示,高速缓存系统600进一步包含分别与多个高速缓存集合相关联的多个寄存器(例如,参见寄存器612a、612b和612c)。寄存器(或高速缓存集合寄存器)可包含与第一高速缓存集合(例如,参见高速缓存集合610a)相关联的第一寄存器(例如,参见寄存器612a)和与第二高速缓存集合(例如,参见高速缓存集合610b)相关联的第二寄存器(例如,参见寄存器612a)。多个寄存器中的每一个(例如,参见寄存器612a、612b和612c)可配置成存储集合索引。
如图6以及图10中所展示,高速缓存602a和高速缓存602b到高速缓存602c(高速缓存1到N)不是固定结构。然而,应理解,在一些实施例中,高速缓存可为固定结构。所描绘的高速缓存中的每一个可视为高速缓存集合的逻辑分组,且这种逻辑分组由表示每一逻辑高速缓存的虚线展示。高速缓存集合610a到610c(高速缓存集合1到N)可基于寄存器610a到610c(寄存器1到N)的内容。高速缓存集合1到N可为在高速缓存1和高速缓存2到高速缓存N当中共享的高速缓存系统内的高速缓存集合的集合。高速缓存1可为所述集合的子集;高速缓存2可为另一不重叠子集。高速缓存中的每一个中的成员高速缓存集合可基于寄存器1到N中的内容而改变。
取决于实施例,高速缓存集合1(在常规意义上)可或可不与其寄存器1通信。虚线还展示于图7A、7B、8A、8B、9A和9B中以指示高速缓存集合与图7A、7B、8A、8B、9A和9B中的对应寄存器之间的逻辑关系。寄存器1的内容确定如何寻址高速缓存集合1(例如,何种高速缓存集合索引将使得选择高速缓存集合1以输出数据)。在一些实施例中,高速缓存集合1与其对应寄存器1之间不存在直接交互。取决于实施例,逻辑电路606或1006与高速缓存集合和对应寄存器两者交互。
在一些实施例中,逻辑电路606可耦合到处理器601以根据多个寄存器(例如,寄存器612a、612b和612c)控制多个高速缓存集合(例如,高速缓存集合610a、610b和610c)。在这种实施例中,高速缓存系统600可配置成耦合在处理器601与存储器系统603之间。并且,当与地址总线605b的连接604b从处理器601接收存储器地址时,逻辑电路606可配置成从至少存储器地址产生集合索引,且确定所产生的集合索引是否与存储在第一寄存器(例如,寄存器612a)中的内容或与存储在第二寄存器(例如,寄存器612b)中的内容匹配。逻辑电路606还可配置成响应于所产生的集合索引与存储在第一寄存器(例如,寄存器612a)中的内容匹配而经由第一高速缓存集合(例如,高速缓存集合610a)实施在与命令总线605a的连接604a中接收到的命令,和响应于所产生的集合索引与存储在第二寄存器(例如,寄存器612b)中的内容匹配而经由第二高速缓存集合(例如,高速缓存集合610b)实施所述命令。
在一些实施例中,高速缓存系统600可包含第一高速缓存(例如,参见高速缓存602a)和第二高速缓存(例如,参见高速缓存602b)。在这种实施例中,如图2中所展示,高速缓存系统600可包含耦合到处理器601的逻辑电路606。此外,在这种实施例中,逻辑电路606可配置成基于可配置数据位和/或相应寄存器(例如,参见寄存器612a、612b和612c)控制第一高速缓存(例如,参见高速缓存602a)和第二高速缓存(例如,参见高速缓存602b)。
在一些实施例中,响应于确定与存储器地址相关联的存储器系统603的数据集当前未高速缓存于高速缓存系统600中(例如,未高速缓存于系统的高速缓存602a中),逻辑电路606配置成分配第一高速缓存集合(例如,高速缓存集合610a)以用于高速缓存数据集且将所产生的集合索引存储在第一寄存器(例如,寄存器612a)中。在这种实施例和其它实施例中,高速缓存系统可包含与来自处理器(例如,处理器601)的识别执行类型的执行类型信号线的连接(例如,与执行类型信号线605的连接604d)。并且,在这种实施例和其它实施例中,进一步基于由执行类型信号线识别出的类型产生所产生的集合索引。此外,所产生的集合索引可包含存储器地址中的位的预定片段和表示由执行类型信号线605d识别出的类型的位。
此外,当第一和第二寄存器(例如,寄存器612a和612b)处于第一状态时,逻辑电路606可配置成当执行类型为第一类型时,实施从命令总线605a接收到的用于经由第一高速缓存集合(例如,高速缓存集合610a)存取存储器系统601的命令。此外,当第一和第二寄存器(例如,寄存器612a和612b)处于第一状态时,逻辑电路606可配置成当执行类型为第二类型时,实施从命令总线605a接收到的用于经由第二高速缓存集合(例如,高速缓存集合610b)存取存储器系统601的命令。
此外,当第一和第二寄存器(例如,寄存器612a和612b)处于第二状态时,逻辑电路606可配置成当执行类型为第一类型时,实施从命令总线605a接收到的用于经由多个高速缓存集合中的除第一高速缓存集合以外的另一高速缓存集合(例如,高速缓存集合610b或610c)存取存储器系统601的命令。此外,当第一和第二寄存器(例如,寄存器612a和612b)处于第二状态时,逻辑电路606可配置成当执行类型为第二类型时,实施从命令总线605a接收到的用于经由多个高速缓存集合中的除第二高速缓存集合以外的另一其它高速缓存集合(例如,高速缓存集合610a或610c,或图6中未描绘的另一高速缓存集合)存取存储器系统601的命令。
在一些实施例中,多个寄存器中的每一个(例如,参见寄存器612a、612b和612c)可配置成存储集合索引,且当执行类型从第二类型改变为第一类型(例如,从非推测性类型的执行改变为推测性类型的执行)时,逻辑电路606可配置成改变存储在第一寄存器(例如,寄存器612a)中的内容和存储在第二寄存器(例如,寄存器612b)中的内容。在图7A和7B、图8A和8B和图9A和9B中说明存储在第一寄存器(例如,寄存器612a)中的内容和存储在第二寄存器(例如,寄存器612b)中的内容的改变的实例。
图7A、7B、8A、8B、9A和9B中的每一个特定地展示包含具有多个高速缓存集合(例如,参见高速缓存702、704和706)的高速缓存系统的实例计算装置的方面,其中高速缓存集合经由高速缓存集合关联性实施。这些图中的每一个的相应高速缓存系统还展示为具有分别与高速缓存集合相关联的多个寄存器。多个寄存器包含至少寄存器712、寄存器714和寄存器716。多个寄存器包含图中未展示的至少一个额外寄存器。寄存器712展示为与高速缓存集合702相关联或连接到高速缓存集合702,寄存器714展示为与高速缓存集合704相关联或连接到高速缓存集合704,且寄存器716展示为与高速缓存集合706相关联或连接到高速缓存集合706。
未在图7A、7B、8A、8B、9A和9B中展示,相应高速缓存系统中的每一个还可包含与耦合在高速缓存系统与处理器之间的命令总线的连接、与耦合在高速缓存系统与处理器之间的地址总线的连接,和耦合在高速缓存系统与处理器之间的数据总线的连接。高速缓存系统中的每一个还可包含耦合到处理器以根据多个寄存器(例如,寄存器712、714和716)控制多个高速缓存集合(例如,高速缓存集合702、704和706)的逻辑电路。
如由图7A、7B、8A、8B、9A和9B所说明,当与高速缓存系统的地址总线的连接从处理器接收到存储器地址(例如,参见存储器地址102b、102c或102d)时,高速缓存系统的逻辑电路可配置成从存储器地址产生集合索引(例如,参见集合索引722、724、726或728)(例如,参见集合索引产生730、732、830、832、930或932)。
特定来说,如图7A中所展示,至少寄存器712、714和716配置成处于第一状态。当与高速缓存系统的地址总线的连接从处理器接收到存储器地址102b时,高速缓存系统的逻辑电路分别根据至少集合索引产生730a、730b或730c和地址102b的高速缓存集合索引112b的例项产生集合索引722、724或726。集合索引产生730a、730b或730c可用于分别将集合索引722、724或726存储在寄存器712、714或716中。集合索引产生730a、730b或730c还可用于在最近所产生的集合索引与已分别存储在寄存器712、714或716中的内容的比较中使用最近所产生的集合索引。当寄存器配置成处于第一状态时,集合索引产生730a、730b和730c发生。第一状态的配置可通过集合索引产生和存储。
特定来说,如图7B中所展示,至少寄存器712、714和716配置成处于第二状态。当与高速缓存系统的地址总线的连接从处理器接收到存储器地址102b时,高速缓存系统的逻辑电路分别根据至少集合索引产生732a、732b或732c和地址102b的高速缓存集合索引112b的例项产生集合索引726、722或728。集合索引产生732a、732b或732c可用于分别将集合索引726、722或728存储在寄存器712、714或716中。集合索引产生732a、732b或732c还可用于在最近所产生的集合索引与已分别存储在寄存器712、714或716中的内容的比较中使用最近所产生的集合索引。当寄存器配置成处于第二状态时,集合索引产生732a、732b和732c发生。第二状态的配置可通过集合索引产生和存储。
特定来说,如图8A中所展示,至少寄存器712、714和716配置成处于第一状态。当与高速缓存系统的地址总线的连接从处理器接收到存储器地址102c时,高速缓存系统的逻辑电路分别根据至少集合索引产生830a、830b或830c和具有高速缓存集合指示符的地址102b的标签104c的例项产生集合索引722、724或726。集合索引产生830a、830b或830c可用于分别将集合索引722、724或726存储在寄存器712、714或716中。集合索引产生830a、830b或830c还可用于在最近所产生的集合索引与已分别存储在寄存器712、714或716中的内容的比较中使用最近所产生的集合索引。当寄存器配置成处于第一状态时,集合索引产生830a、830b和830c发生。
特定来说,如图8B中所展示,至少寄存器712、714和716配置成处于第二状态。当与高速缓存系统的地址总线的连接从处理器接收到存储器地址102c时,高速缓存系统的逻辑电路分别根据至少集合索引产生832a、832b或832c和具有高速缓存集合指示符的地址102b的标签104c的例项产生集合索引726、722或728。集合索引产生832a、832b或832c可用于分别将集合索引726、722或728存储在寄存器712、714或716中。集合索引产生832a、832b或832c还可用于在最近所产生的集合索引与已分别存储在寄存器712、714或716中的内容的比较中使用最近所产生的集合索引。当寄存器配置成处于第二状态时,集合索引产生832a、832b和832c发生。
特定来说,如图9A中所展示,至少寄存器712、714和716配置成处于第一状态。当与高速缓存系统的地址总线的连接从处理器接收到存储器地址102d时,高速缓存系统的逻辑电路分别根据至少集合索引产生930a、930b或930c和地址102b的标签104d中的高速缓存集合索引112d的例项产生集合索引722、724或726。集合索引产生930a、930b或930c可用于分别将集合索引722、724或726存储在寄存器712、714或716中。集合索引产生930a、930b或930c还可用于在最近所产生的集合索引与已分别存储在寄存器712、714或716中的内容的比较中使用最近所产生的集合索引。当寄存器配置成处于第一状态时,集合索引产生930a、930b和930c发生。
特定来说,如图7B中所展示,至少寄存器712、714和716配置成处于第二状态。当与高速缓存系统的地址总线的连接从处理器接收到存储器地址102d时,高速缓存系统的逻辑电路分别根据至少集合索引产生932a、932b或932c和地址102b的标签104d中的高速缓存集合索引112d的例项产生集合索引726、722或728。集合索引产生932a、932b或932c可用于分别将集合索引726、722或728存储在寄存器712、714或716中。集合索引产生932a、932b或932c还可用于在最近所产生的集合索引与已分别存储在寄存器712、714或716中的内容的比较中使用最近所产生的集合索引。当寄存器配置成处于第二状态时,集合索引产生932a、932b和932c发生。
在通过图7A和7B、8A和8B或9A和9B中所说明的高速缓存系统实施的一些实施例中,当与地址总线的连接从处理器接收到存储器地址时,逻辑电路可配置成确定所产生的集合索引是否与存储在寄存器(例如,寄存器712、714和716)中的一个中的内容匹配。存储在寄存器中的内容可来自集合索引的先前产生和在寄存器中的集合索引的存储。
此外,在通过图7A和7B、8A和8B或9A和9B中所说明的高速缓存系统实施的一些实施例中,逻辑电路可配置成响应于所产生的集合索引与存储在相关联的第一寄存器中的内容匹配而经由第一高速缓存集合实施在与命令总线的连接中接收到的命令,和响应于所产生的集合索引与存储在相关联的第二寄存器中的内容匹配而经由第二高速缓存集合实施所述命令。此外,响应于确定与存储器地址相关联的存储器系统的数据集当前未高速缓存于高速缓存系统中,逻辑电路可配置成分配第一高速缓存集合以用于高速缓存数据集且将所产生的集合索引存储在第一寄存器中。所产生的集合索引可包含存储器地址中的位的预定片段。
此外,在这种实施例中,当第一和第二寄存器处于第一状态时,逻辑电路可配置成:当处理器的执行类型为第一类型时,实施从命令总线接收到的用于经由第一高速缓存集合存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由第二高速缓存集合存取存储器系统的命令。此外,当第一和第二寄存器处于第二状态时,逻辑电路可配置成:当执行类型为第一类型时,实施从命令总线接收到的用于经由多个高速缓存集合中的除第一高速缓存集合以外的另一高速缓存集合存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由多个高速缓存集合中的除第二高速缓存集合以外的另一其它高速缓存集合存取存储器系统的命令。在这种实例中,多个寄存器中的每一个可配置成存储集合索引,且当执行类型从第二类型改变为第一类型时,逻辑电路可配置成改变存储在第一寄存器中的内容和存储在第二寄存器中的内容。
图10特定地展示包含具有多个高速缓存(例如,参见图10中所描绘的高速缓存602a、602b和602c)的高速缓存系统1000的实例计算装置的方面,其中高速缓存中的至少一个以高速缓存集合关联性(例如,参见高速缓存集合610a、610b和601c)实施。在图10中,实例计算装置还展示为具有处理器1001和存储器系统603。如由图10所展示,高速缓存系统1000类似于高速缓存系统600,但高速缓存系统1000还包含与来自处理器1001的识别由处理器1001对指令的推测性执行的状态的推测状态信号线1004的连接1002。
类似地,高速缓存系统1000展示为包含与耦合在高速缓存系统与处理器1001之间的命令总线605a的连接604a。系统1000还包含与耦合在高速缓存系统与处理器1001之间的地址总线605b的连接604b。分别在图1A、1B、1C、1D和1E中所描绘的地址102a、102b、102c、102d和102e可取决于高速缓存系统1000的实施而各自经由地址总线605b传达。系统1000还包含与耦合在高速缓存系统与处理器1001之间的数据总线605c的连接604c。其还包含与来自处理器1001的识别非推测性执行类型或推测性执行类型的执行类型信号线605d的连接604d。
类似地,高速缓存系统1000还展示为包含可类似于逻辑电路606的逻辑电路1006,但其电路系统耦合到与推测状态信号线1004的连接1002。
在一些实施例中,逻辑电路1006可耦合到处理器1001以根据多个寄存器(例如,寄存器612a、612b和612c)控制多个高速缓存集合(例如,高速缓存集合610a、610b和610c)。多个寄存器中的每一个(例如,参见寄存器612a、612b和612c)可配置成存储集合索引。
在这种实施例中,高速缓存系统1000可配置成耦合在处理器1001与存储器系统603之间。并且,当与地址总线605b的连接604b从处理器1001接收到存储器地址时,逻辑电路1006可配置成从至少存储器地址产生集合索引,且确定所产生的集合索引是否与存储在第一寄存器(例如,寄存器612a)中的内容或与存储在第二寄存器(例如,寄存器612b)中的内容匹配。逻辑电路1006还可配置成响应于所产生的集合索引与存储在第一寄存器(例如,寄存器612a)中的内容匹配而经由第一高速缓存集合(例如,高速缓存集合610a)实施在与命令总线605a的连接604a中接收到的命令,和响应于所产生的集合索引与存储在第二寄存器(例如,寄存器612b)中的内容匹配而经由第二高速缓存集合(例如,高速缓存集合610b)实施所述命令。
此外,高速缓存系统1000展示为包含类似于图6中所展示的对应连接的连接608a、608b和608c。相对于图6和10中所描绘的连接608a、608b和608c,当第一和第二寄存器(例如,寄存器612a和612b)处于第一状态时,逻辑电路606或1006可配置成当执行类型为第一类型(例如非推测性类型)时,将用于经由第一高速缓存集合(例如,高速缓存集合610a)存取存储器系统603的命令提供到第二命令总线609a。此外,当第一和第二寄存器(例如,寄存器612a和612b)处于第一状态时,逻辑电路606或1006可配置成当执行类型为第二类型(例如推测性类型)时,将用于经由第二高速缓存集合(例如,高速缓存集合610b)存取存储器系统的命令提供到第二命令总线609a。
另外,当第一和第二寄存器(例如,寄存器612a和612b)处于第二状态时,逻辑电路606或1006可配置成当执行类型为第一类型时,将用于经由除第一高速缓存集合外的高速缓存集合(例如,高速缓存集合610b或610c,或图6或10中未描绘的另一高速缓存集合)存取存储器系统603的命令提供到第二命令总线609a。此外,当第一和第二寄存器(例如,寄存器612a和612b)处于第二状态时,逻辑电路606或1006可配置成当执行类型为第二类型时,将用于经由除第二高速缓存集合外的高速缓存集合(例如,高速缓存集合610a或610c,或图6或10中未描绘的另一高速缓存集合)存取存储器系统603的命令提供到第二命令总线609a。
在一些实施例中,例如展示于图10中,第一类型可配置成指示由处理器1001对指令的非推测性执行;且第二类型可配置成指示由处理器对指令的推测性执行。展示于图10中,高速缓存系统1000进一步包含与来自处理器1001的识别由处理器进行的指令的推测性执行的状态的推测状态信号线1004的连接1002。与推测状态信号线1004的连接1002可配置成接收推测性执行的状态,且推测性执行的状态可指示将接受还是拒绝推测性执行的结果。
在这种实施例中,多个寄存器(例如,寄存器612a、612b和612c)中的每一个可配置成存储集合索引,且当执行类型从推测性执行类型改变为非推测性类型时,逻辑电路1006可配置成在推测性类型的执行的状态指示将接受推测性执行的结果的情况下,改变存储在第一寄存器(例如,寄存器612a)中的内容和存储在第二寄存器(例如,寄存器612b)中的内容。并且,当执行类型从推测性类型改变为非推测性类型时,逻辑电路1006可配置成在推测性类型的执行的状态指示将拒绝推测性类型的执行的结果的情况下,维持存储在第一寄存器中的内容和存储在第二寄存器中的内容而不改变。
一些实施例可包含高速缓存系统,所述高速缓存系统包含多个高速缓存集合,所述多个高速缓存集合具有至少第一高速缓存集合和第二高速缓存集合。高速缓存系统还可包含分别与多个高速缓存集合相关联的多个寄存器。多个寄存器可至少包含配置成存储集合索引的与第一高速缓存集合相关联的第一寄存器,和配置成存储集合索引的与第二高速缓存集合相关联的第二寄存器。高速缓存系统还可包含与耦合在高速缓存系统与处理器之间的命令总线的连接、与耦合在高速缓存系统与处理器之间的地址总线的连接、与耦合在高速缓存系统与处理器之间的数据总线的连接,和与来自处理器的识别执行类型的执行类型信号线的连接。
高速缓存系统还可包含耦合到处理器以根据多个寄存器控制多个高速缓存集合的逻辑电路。并且,高速缓存系统可配置成耦合在处理器与存储器系统之间。当第一和第二寄存器处于第一状态时,逻辑电路可配置成:当执行类型为第一类型时,实施从命令总线接收到的用于经由第一高速缓存集合存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由第二高速缓存集合存取存储器系统的命令。此外,当第一和第二寄存器处于第二状态时,逻辑电路可配置成:当执行类型为第一类型时,实施从命令总线接收到的用于经由多个高速缓存集合中的除第一高速缓存集合以外的另一高速缓存集合存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由多个高速缓存集合中的除第二高速缓存集合以外的另一其它高速缓存集合存取存储器系统的命令。
与地址总线的连接可配置成从处理器接收存储器地址,且存储器地址可包含集合索引。
在一些实施例中,当第一和第二寄存器处于第一状态时,与第一高速缓存集合相关联的第一集合索引存储在第一寄存器中,且与第二高速缓存集合相关联的第二集合索引存储在第二寄存器中。当第一和第二寄存器处于第二状态时,第一集合索引可存储在多个寄存器中的除第一寄存器以外的另一寄存器中,且第二集合索引可存储在多个寄存器中的除第二寄存器以外的另一寄存器中。在这种实例中,当与地址总线的连接从处理器接收到存储器地址时,逻辑电路可配置成:从至少存储器地址产生集合索引;和确定所产生的集合索引是否与存储在第一寄存器中的内容或与存储在第二寄存器中的内容匹配。并且,逻辑电路可进一步配置成响应于所产生的集合索引与存储在第一寄存器中的内容匹配而经由第一高速缓存集合实施在与命令总线的连接中接收到的命令,和响应于所产生的集合索引与存储在第二寄存器中的内容匹配而经由第二高速缓存集合实施所述命令。
响应于确定与存储器地址相关联的存储器系统的数据集当前未高速缓存于高速缓存系统中,逻辑电路可配置成分配第一高速缓存集合以用于高速缓存数据集且将所产生的集合索引存储在第一寄存器中。
在一些实施例中,进一步基于由执行类型信号线识别出的执行类型产生所产生的集合索引。在这种实例中,所产生的集合索引可包含存储器地址中的位的预定片段和表示由执行类型信号线识别出的执行类型的位。
一些实施例可包含系统,所述系统包含处理器、存储器系统和高速缓存系统。高速缓存系统可包含:多个高速缓存集合,其包含第一高速缓存集合和第二高速缓存集合;和分别与多个高速缓存集合相关联的多个寄存器,所述多个寄存器包含与第一高速缓存集合相关联的第一寄存器和与第二高速缓存集合相关联的第二寄存器。高速缓存系统还可包含与耦合在高速缓存系统与处理器之间的命令总线的连接、与耦合在高速缓存系统与处理器之间的地址总线的连接,和与耦合在高速缓存系统与处理器之间的数据总线的连接。
高速缓存系统还可包含耦合到处理器以根据多个寄存器控制多个高速缓存集合的逻辑电路。当与地址总线的连接从处理器接收到存储器地址时,逻辑电路可配置成:从至少存储器地址产生集合索引;和确定所产生的集合索引是否与存储在第一寄存器中的内容或与存储在第二寄存器中的内容匹配。并且,逻辑电路可配置成响应于所产生的集合索引与存储在第一寄存器中的内容匹配而经由第一高速缓存集合实施在与命令总线的连接中接收到的命令,和响应于所产生的集合索引与存储在第二寄存器中的内容匹配而经由第二高速缓存集合实施所述命令。
高速缓存系统可进一步包含与来自处理器的识别执行类型的执行类型信号线的连接。可进一步基于由执行类型信号线识别出的类型产生所产生的集合索引。所产生的集合索引可包含存储器地址中的位的预定片段和表示由执行类型信号线识别出的类型的位。
图11A和11B说明根据本公开的一些实施例的用于使主高速缓存与影子高速缓存之间的内容同步以保存高速缓存于主高速缓存中的内容以备在影子高速缓存中接受内容的后台同步电路系统。图11A和11B中的高速缓存系统包含后台同步电路系统1102。举例来说,高速缓存1124和高速缓存1126可为图2或4中的高速缓存202a和202b,或图6或10中的高速缓存602a和602b。后台同步电路系统1102可为逻辑电路206、406、606或1006的一部分。
图11A说明高速缓存1124在非推测性执行中用作主高速缓存且高速缓存1126在推测性执行中用作影子高速缓存的情境。后台同步电路系统1102配置成将高速缓存的内容从高速缓存1124同步1130到高速缓存1126,使得如果确认需要条件性推测性执行,那么高速缓存1126可在后续非推测性执行中用作主高速缓存;并且,高速缓存1124可在推测性执行的另外例项中用作影子高速缓存。将高速缓存的内容从高速缓存1124同步1130到高速缓存1126将先前执行结果复制到高速缓存1126中,使得在随后将高速缓存1124改用作影子高速缓存时不丢失执行结果。来自高速缓存1124的高速缓存的内容可高速缓存于高速缓存1124中,但尚未刷新到存储器(例如,存储器203或603)。另外,高速缓存于高速缓存1124中的具有相同副本的存储器内容中的一些还可从高速缓存1124复制到高速缓存1126,使得当高速缓存1126随后用作主高速缓存时,先前高速缓存于高速缓存1124中的内容也在高速缓存1126中可用。这可加速对先前高速缓存的内容的存取。在高速缓存1124与高速缓存1126之间复制内容比将数据从存储器检索到高速缓存系统更快。
在一些实施例中,如果程序在普通执行期间参考变量,那么可高速缓存所述变量。在这种实例中,如果在推测期间在透写高速缓存时参考变量,那么主存储器中的值是有效且正确的。如果在推测期间在回写高速缓存时参考变量,那么可使用针对图11A所描述的前述实例特征;且变量的有效值可在高速缓存1124中。
在图11A中说明的情境中,处理器(例如,处理器201、401、601或1001)可在非推测性执行的模式中执行第一指令集。在第一指令集的执行期间,处理器可存取存储器地址以从存储器加载数据(例如,指令和操作数),且存储计算结果。由于高速缓存1124用作主高速缓存,所以数据和/或计算结果的内容可高速缓存于高速缓存1124中。举例来说,高速缓存1124可存储尚未回写到存储器中的计算结果;且高速缓存1124可存储可在指令的后续执行中使用的所加载数据(例如,指令和操作数)。
在准备供在第二指令集的推测性执行中用作影子高速缓存的高速缓存B 1226时,后台同步电路系统1102在同步1130中将高速缓存的内容从高速缓存1124复制到高速缓存1126。复制操作的至少部分可在后台中以独立于经由高速缓存系统存取存储器的处理器的方式进行。举例来说,当处理器正在第一指令集的非推测性执行中存取第一存储器地址时,后台同步电路系统1102可将用于第二存储器地址的高速缓存于高速缓存1124中的内容复制到高速缓存1126中。在一些情况下,复制操作可在后台中与经由高速缓存系统存取存储器同时进行。举例来说,当处理器正在第一指令集的非推测性执行中存取第一存储器地址以存储计算结果时,后台同步电路系统可将计算结果复制到高速缓存1126中作为第一存储器地址的高速缓存内容。
在一个实施方案中,后台同步电路系统1102配置成在允许高速缓存1126用于第二指令集的推测性执行中之前完成同步操作。因此,当高速缓存1126启用以待用于第二指令集的推测性执行时,高速缓存1124中的有效内容也可发现于高速缓存1126中。然而,同步操作可延迟高速缓存1126作为影子高速缓存的使用。替代地,后台同步电路系统1102配置成对脏内容从高速缓存1124到高速缓存1126的同步进行优先级排序。脏内容可为高速缓存中的数据已修改且主存储器中的数据尚未修改的情况。
高速缓存于高速缓存1124中的脏内容可比存储在存储器中的对应一或多个地址中的内容更新。举例来说,当处理器在地址处存储计算结果时,高速缓存1124可高速缓存地址的计算结果而无需将计算结果立即写入到地址处的存储器中。当在地址处将计算结果回写到存储器时,不再将高速缓存的内容视为脏的。高速缓存1124存储数据以跟踪高速缓存于高速缓存1124中的脏内容。后台同步电路1102可将脏内容从高速缓存1124自动复制到高速缓存1126以备高速缓存1126充当影子高速缓存。
任选地,在完成同步操作之前,后台同步电路系统1102可允许高速缓存1126在第二指令集的条件性推测性执行中充当影子高速缓存。在高速缓存1126在推测性执行中用作影子高速缓存的时间段期间,后台同步电路1102可继续将高速缓存的内容从高速缓存1124复制到高速缓存1126的同步操作1130。后台同步电路系统1102配置成在允许接受高速缓存1126作为主高速缓存之前至少完成将脏内容从高速缓存1124到高速缓存1126的同步。举例来说,在需要第二指令集的执行的指示之后,后台同步电路系统1102确定高速缓存1124中的脏内容是否已同步到高速缓存1126;且如果否,那么推迟高速缓存1126作为主高速缓存的使用,直到同步完成为止。
在一些实施方案中,后台同步电路系统1102可甚至在接受高速缓存1126作为主高速缓存之后但在高速缓存1124在第三指令集的条件性推测性执行中用作影子高速缓存之前继续其同步操作。
在完成同步操作1130之前,高速缓存系统可在推测性执行期间将高速缓存1124配置为高速缓存1126与存储器之间的辅助高速缓存,使得当未在高速缓存1126中发现存储器地址的内容时,高速缓存系统检查高速缓存1124以确定内容是否在高速缓存1124中;且如果是,那么将内容从高速缓存1124复制到高速缓存1126(而不是直接从存储器加载)。当处理器将数据存储在存储器地址处且将数据高速缓存于高速缓存1126中时,高速缓存系统检查使高速缓存于作为辅助高速缓存的高速缓存1124中的内容无效。
在接受第二指令集的推测性执行的结果之后高速缓存1126重新配置为主高速缓存之后,后台同步电路系统1102可开始将高速缓存的内容从高速缓存1126同步1132到高速缓存1124,如图11B中所说明。
在第二指令集的推测性执行之后,如果来自处理器的推测性状态指示应拒绝第二指令集的执行的结果,那么高速缓存1124仍充当主高速缓存;且高速缓存1126中的内容可失效。失效可包含高速缓存1126使其所有条目标记为空;因此,任何后续推测都以空推测性高速缓存开始。
后台同步电路系统1102可再次将高速缓存的内容从高速缓存1124同步1130到高速缓存1126以备第三指令集的推测性执行。
在一些实施例中,高速缓存1124和高速缓存1126中的每一个具有高速缓存集合的专用和固定集合;且可配置位用于控制分别作为主高速缓存和影子高速缓存的高速缓存1124和1126的使用,如图3A、3B、5A和5B中所说明。
在其它实施例中,高速缓存1124和高速缓存1126可共享高速缓存集合的池,高速缓存集合中的一些可动态地分配给高速缓存1124和高速缓存1126,如图6至10中所说明。当高速缓存1124用作主高速缓存且高速缓存1126用作影子高速缓存时,高速缓存1126可具有比高速缓存1124更小数目个高速缓存集合。高速缓存1126中的高速缓存集合中的一些可为高速缓存1124中的高速缓存集合的一部分的影子,使得当确定接受推测性执行的结果时,高速缓存1124中的高速缓存集合的部分可重新配置供用作下一推测性执行中的影子高速缓存;且高速缓存集合的未受推测性执行影响的剩余部分可从高速缓存1124重新分配到高速缓存1126,使得未受影响的部分中的高速缓存的内容可进一步用于后续非推测性执行中。
图12展示根据本公开的一些实施例的图11A和11B的后台同步电路系统1102的实例操作。
如图12中所展示,在操作1202处,高速缓存系统将第一高速缓存配置为主高速缓存且将第二高速缓存配置为影子高速缓存。举例来说,当具有固定硬件结构的专用高速缓存用作第一高速缓存和第二高速缓存时,可配置位可用于将第一高速缓存配置为主高速缓存且将第二高速缓存配置为影子高速缓存,如图2至5B中所说明。替代地,可以如图6至10中所说明的方式使用寄存器将高速缓存集合从高速缓存集合的池分配进出第一高速缓存和第二高速缓存。
在操作1204处,高速缓存系统确定当前执行类型是否从非推测性改变为推测性。举例来说,当处理器经由高速缓存系统200存取存储器时,处理器进一步提供当前存储器存取是否与条件性推测性执行相关联的指示。举例来说,可在配置成指定执行类型的信号线205d中提供指示。
如果当前执行类型并未从非推测性改变为推测性,那么高速缓存系统在操作1206处使用第一高速缓存作为主高速缓存服务于来自处理器的存储器存取请求。当存储器存取改变第一高速缓存中的高速缓存的内容时,后台同步电路系统1102可在操作1208中将高速缓存于第一高速缓存中的内容复制到第二高速缓存。举例来说,后台同步电路系统1102可为图2中的逻辑电路206、图4中的406、图6中的606和/或图10中的1006的部分。后台同步电路系统1102可对高速缓存于第一高速缓存中的脏内容的复制进行优先级排序。
在图12中,重复操作1204到1208直到高速缓存系统200确定当前执行类型改变为推测性为止。
任选地,后台同步电路系统1102配置成在操作1210中继续将高速缓存于第一高速缓存中的内容复制到第二高速缓存以完成至少脏内容从第一高速缓存到第二高速缓存的同步,随后在操作1212中允许高速缓存系统在使用第二高速缓存的推测性执行期间服务于来自处理器的存储器请求。
任选地,后台同步电路系统1102可继续同步操作,同时高速缓存系统在操作1212中在推测性执行期间使用第二高速缓存服务于来自处理器的存储器请求。
在操作1214处,高速缓存系统确定当前执行类型是否改变为非推测性。如果当前执行类型仍为推测性,那么可重复操作1210和1212。
响应于在操作1214处确定当前执行类型改变为非推测性,高速缓存系统确定是否将接受推测性执行的结果。推测性执行的结果对应于第二高速缓存中的高速缓存的内容的改变。举例来说,处理器401可经由图4中所说明的推测状态信号线404或图10中的推测状态信号线1004提供是否应接受推测性执行的结果的指示。
如果在操作1216中,高速缓存系统确定将拒绝推测性执行的结果,那么高速缓存系统可在操作1222中丢弃当前高速缓存于第二高速缓存中的高速缓存的内容(例如,经由设定第二高速缓存中的高速缓存块的无效位而丢弃)。随后,在操作1244中,高速缓存系统可保持第一高速缓存作为主高速缓存且保持第二高速缓存作为影子高速缓存;且在操作1208中,后台同步电路系统1102可将高速缓存的内容从第一高速缓存复制到第二高速缓存。当执行仍为非推测性时,可重复操作1204到1208。
如果在操作1216中,高速缓存系统确定将接受推测性执行的结果,那么后台同步电路系统1102配置成在允许高速缓存系统将第一高速缓存重新配置为影子高速缓存之前,在操作1218中进一步将高速缓存于第一高速缓存中的内容复制到第二高速缓存以完成至少脏内容从第一高速缓存到第二高速缓存的同步。在操作1220中,高速缓存系统以略微类似于操作1202的方式将第一高速缓存配置为影子高速缓存且将第二高速缓存配置为主高速缓存。在将第一高速缓存配置为影子高速缓存时,高速缓存系统可使其内容失效,且接着以略微类似于操作1222、1224、1208和1204的方式将第二高速缓存中的高速缓存的内容同步到第一高速缓存。
举例来说,当具有固定硬件结构的专用高速缓存用作第一高速缓存和第二高速缓存时,可配置位可改变为在操作1220中将第一高速缓存配置为影子高速缓存且将第二高速缓存配置为主高速缓存。替代地,当可以如图6至10中所说明的方式使用寄存器将高速缓存集合从高速缓存集合的池分配到从第一高速缓存和第二高速缓存时,最初在第一高速缓存中但未受推测性执行影响的高速缓存集合可经由其相关联的寄存器(例如,图6和10中所说明的寄存器612a和612b重新配置以加入第二高速缓存。最初在第一高速缓存中的高速缓存集合(但现在鉴于第二高速缓存中的内容已无数据内容)可如在新的第一高速缓存中重新配置。任选地,另外的高速缓存集合可从高速缓存集合的可用池分配且添加到新的第一高速缓存。任选地,可将具有失效高速缓存内容的高速缓存集合中的一些放回到高速缓存集合的可用池中以供将来分配(例如,供添加到作为主高速缓存的第二高速缓存或作为影子高速缓存的第一高速缓存)。
在本说明书中,已参考本公开的特定示范性实施例描述本公开。然而,将显而易见的是,可在不脱离如所附权利要求书中所阐述的较广泛精神和范围的情况下对其作出各种修改。因此,应在说明性意义上而非限制性意义上看待本说明书和附图。
举例来说,实施例可包含高速缓存系统,所述高速缓存系统包含:第一高速缓存;第二高速缓存;与耦合在高速缓存系统与处理器之间的命令总线的连接;与耦合在高速缓存系统与处理器之间的地址总线的连接;与耦合在高速缓存系统与处理器之间的数据总线的连接;与来自处理器的识别执行类型的执行类型信号线的连接;和耦合以根据执行类型控制第一高速缓存和第二高速缓存的逻辑电路。在这种实施例中,高速缓存系统配置成耦合在处理器与存储器系统之间。此外,当执行类型为指示由处理器对指令的非推测性执行的第一类型且第一高速缓存配置成服务于来自命令总线的用于存取存储器系统的命令时,逻辑电路配置成将高速缓存于第一高速缓存中的内容的一部分复制到第二高速缓存。
在这种实施例中,逻辑电路可配置成独立于在命令总线中接收到的当前命令而将高速缓存于第一高速缓存中的内容的部分复制到第二高速缓存。
此外,当执行类型为指示由处理器对指令的非推测性执行的第一类型且第一高速缓存配置成服务于来自命令总线的用于存取存储器系统的命令时,逻辑电路可配置成响应于执行类型从第一类型改变为指示由处理器对指令的推测性执行的第二类型而使用第二高速缓存服务于来自命令总线的后续命令。逻辑电路还可配置成在执行类型从第一类型改变为第二类型之后服务于后续命令之前完成将内容的部分从第一高速缓存同步到第二高速缓存。逻辑电路还可配置成当服务于后续命令时继续将内容的部分从第一高速缓存同步到第二高速缓存。
在这种实施例中,高速缓存系统可进一步包含:可配置数据位,且逻辑电路进一步耦合以根据可配置数据位控制第一高速缓存和第二高速缓存。当可配置数据位处于第一状态时,逻辑电路可配置成:当执行类型为第一类型时,实施从命令总线接收到的用于经由第一高速缓存存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由第二高速缓存存取存储器系统的命令。并且,当可配置数据位处于第二状态时,逻辑电路可配置成:当执行类型为第一类型时,实施从命令总线接收到的用于经由第二高速缓存存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由第一高速缓存存取存储器系统的命令。当执行类型从第二类型改变为第一类型时,逻辑电路还可配置成切换可配置数据位。
在这种实施例中,高速缓存系统可进一步包含:与来自处理器的识别由处理器对指令的推测性执行的状态的推测状态信号线的连接。与推测状态信号线的连接配置成接收推测性执行的状态。推测性执行的状态指示将接受还是拒绝推测性执行的结果。当执行类型从第二类型改变为第一类型时,逻辑电路可配置成:在推测性执行的状态指示将接受推测性执行的结果的情况下切换可配置数据位;和在推测性执行的状态指示将拒绝推测性执行的结果的情况下,维持可配置数据位而不改变。
此外,在这种实施例中,第一高速缓存和第二高速缓存共同包含:多个高速缓存集合,其包含第一高速缓存集合和第二高速缓存集合;和分别与多个高速缓存集合相关联的多个寄存器,所述多个寄存器包含与第一高速缓存集合相关联的第一寄存器和与第二高速缓存集合相关联的第二寄存器。在这种实例中,逻辑电路可进一步耦合以根据多个寄存器控制多个高速缓存集合。此外,当与地址总线的连接从处理器接收到存储器地址时,逻辑电路可配置成:从至少存储器地址产生集合索引;和确定所产生的集合索引是否与存储在第一寄存器中的内容或与存储在第二寄存器中的内容匹配。逻辑电路还可配置成响应于所产生的集合索引与存储在第一寄存器中的内容匹配而经由第一高速缓存集合实施在与命令总线的连接中接收到的命令,和响应于所产生的集合索引与存储在第二寄存器中的内容匹配而经由第二高速缓存集合实施所述命令。此外,响应于确定与存储器地址相关联的存储器系统的数据集当前未高速缓存于高速缓存系统中,逻辑电路可配置成分配第一高速缓存集合以用于高速缓存数据集且将所产生的集合索引存储在第一寄存器中。
另外,在具有高速缓存集合的这种实施例中,高速缓存系统还可包含与来自处理器的识别执行类型的执行类型信号线的连接,且进一步基于由执行类型信号线识别出的类型产生所产生的集合索引。所产生的集合索引可包含存储器地址中的位的预定片段和表示由执行类型信号线识别出的类型的位。此外,当第一和第二寄存器处于第一状态时,逻辑电路可配置成:当执行类型为第一类型时,实施从命令总线接收到的用于经由第一高速缓存集合存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由第二高速缓存集合存取存储器系统的命令。并且,当第一和第二寄存器处于第二状态时,逻辑电路配置成:当执行类型为第一类型时,实施从命令总线接收到的用于经由多个高速缓存集合中的除第一高速缓存集合以外的另一高速缓存集合存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由多个高速缓存集合中的除第二高速缓存集合以外的另一其它高速缓存集合存取存储器系统的命令。
在具有高速缓存集合的这种实施例中,多个寄存器中的每一个可配置成存储集合索引。并且,当执行类型从第二类型改变为第一类型时,逻辑电路可配置成改变存储在第一寄存器中的内容和存储在第二寄存器中的内容。此外,第一类型可配置成指示由处理器对指令的非推测性执行,且第二类型可配置成指示由处理器对指令的推测性执行。在这种实例中,高速缓存系统可进一步包含与来自处理器的识别由处理器对指令的推测性执行的状态的推测状态信号线的连接。与推测状态信号线的连接配置成接收推测性执行的状态,且推测性执行的状态指示将接受还是拒绝推测性执行的结果。当执行类型从第二类型改变为第一类型时,逻辑电路可配置成:如果推测性执行的状态指示将接受推测性执行的结果,那么改变存储在第一寄存器中的内容和存储在第二寄存器中的内容;和如果推测性执行的状态指示将拒绝推测性执行的结果,那么维持存储在第一寄存器中的内容和存储在第二寄存器中的内容而不改变。
此外,例如,实施例可包含高速缓存系统,所述高速缓存系统包含:一般来说,多个高速缓存集合和分别与多个高速缓存集合相关联的多个寄存器。多个高速缓存集合包含第一高速缓存集合和第二高速缓存集合,且多个寄存器包含与第一高速缓存集合相关联的第一寄存器和与第二高速缓存集合相关联的第二寄存器。类似地,在这种实施例中,高速缓存系统可包含与耦合在高速缓存系统与处理器之间的命令总线的连接、与耦合在高速缓存系统与处理器之间的地址总线的连接、与耦合在高速缓存系统与处理器之间的数据总线的连接、与来自处理器的识别执行类型的执行类型信号线的连接,和耦合以根据执行类型控制多个高速缓存集合的逻辑电路。高速缓存系统还可配置成耦合在处理器与存储器系统之间。并且,当执行类型为指示由处理器对指令的非推测性执行的第一类型且第一高速缓存集合配置成服务于来自命令总线的用于存取存储器系统的命令时,逻辑电路可配置成将高速缓存于第一高速缓存集合中的内容的一部分复制到第二高速缓存集合。
在具有高速缓存集合的这种实施例中,逻辑电路可配置成独立于在命令总线中接收到的当前命令而将高速缓存于第一高速缓存集合中的内容的部分复制到第二高速缓存集合。当执行类型为指示由处理器对指令的非推测性执行的第一类型且第一高速缓存集合配置成服务于来自命令总线的用于存取存储器系统的命令时,逻辑电路可配置成响应于执行类型从第一类型改变为指示由处理器对指令的推测性执行的第二类型而使用第二高速缓存集合服务于来自命令总线的后续命令。逻辑电路还可配置成在执行类型从第一类型改变为第二类型之后服务于后续命令之前完成将内容的部分从第一高速缓存集合同步到第二高速缓存集合。逻辑电路还可配置成当服务于后续命令时继续将内容的部分从第一高速缓存集合同步到第二高速缓存集合。
此外,在具有高速缓存集合的这种实施例中,逻辑电路可进一步耦合以根据多个寄存器控制多个高速缓存集合。当与地址总线的连接从处理器接收到存储器地址时,逻辑电路可配置成:从至少存储器地址产生集合索引;和确定所产生的集合索引是否与存储在第一寄存器中的内容或与存储在第二寄存器中的内容匹配。逻辑电路还可配置成响应于所产生的集合索引与存储在第一寄存器中的内容匹配而经由第一高速缓存集合实施在与命令总线的连接中接收到的命令,和响应于所产生的集合索引与存储在第二寄存器中的内容匹配而经由第二高速缓存集合实施所述命令。此外,响应于确定与存储器地址相关联的存储器系统的数据集当前未高速缓存于高速缓存系统中,逻辑电路可配置成分配第一高速缓存集合以用于高速缓存数据集且将所产生的集合索引存储在第一寄存器中。
另外,在具有高速缓存集合的这种实施例中,高速缓存系统可进一步包含与来自处理器的识别执行类型的执行类型信号线的连接,且可进一步基于由执行类型信号线识别出的类型产生所产生的集合索引。所产生的集合索引可包含存储器地址中的位的预定片段和表示由执行类型信号线识别出的类型的位。当第一和第二寄存器处于第一状态时,逻辑电路可配置成:当执行类型为第一类型时,实施从命令总线接收到的用于经由第一高速缓存集合存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由第二高速缓存集合存取存储器系统的命令。并且,当第一和第二寄存器处于第二状态时,逻辑电路可配置成:当执行类型为第一类型时,实施从命令总线接收到的用于经由多个高速缓存集合中的除第一高速缓存集合以外的另一高速缓存集合存取存储器系统的命令;和当执行类型为第二类型时,实施从命令总线接收到的用于经由多个高速缓存集合中的除第二高速缓存集合以外的另一其它高速缓存集合存取存储器系统的命令。
在具有高速缓存集合的这种实施例中,多个寄存器中的每一个可配置成存储集合索引,且当执行类型从第二类型改变为第一类型时,逻辑电路可配置成改变存储在第一寄存器中的内容和存储在第二寄存器中的内容。此外,第一类型可配置成指示由处理器对指令的非推测性执行,且第二类型配置成指示由处理器对指令的推测性执行。
在具有高速缓存集合的这种实施例中,高速缓存系统还可包含与来自处理器的识别由处理器对指令的推测性执行的状态的推测状态信号线的连接。与推测状态信号线的连接配置成接收推测性执行的状态,且推测性执行的状态指示将接受还是拒绝推测性执行的结果。当执行类型从第二类型改变为第一类型时,逻辑电路可配置成:如果推测性执行的状态指示将接受推测性执行的结果,那么改变存储在第一寄存器中的内容和存储在第二寄存器中的内容;和如果推测性执行的状态指示将拒绝推测性执行的结果,那么维持存储在第一寄存器中的内容和存储在第二寄存器中的内容而不改变。
此外,在具有高速缓存集合的这种实施例中,高速缓存集合可在高速缓存系统内的多个高速缓存当中划分。举例来说,高速缓存集合可在多个高速缓存中的第一和第二高速缓存当中划分。
图13、14A、14B、14C、15A、15B、15C和15D展示根据本公开的一些实施例的具有带有包含备用高速缓存集合(例如,参见展示于图14A和15A中的备用高速缓存集合1310d)以加速推测性执行的可互换高速缓存集合(例如,参见高速缓存集合1310a、1310b、1310c和1310d)的高速缓存系统(例如,参见展示于图13中的高速缓存系统1000)的实例计算装置的实例方面。
除使用影子高速缓存以确保推测性执行以及使主高速缓存与影子高速缓存之间的内容同步以保存高速缓存于主高速缓存中的内容以备在影子高速缓存中接受内容之外,备用高速缓存集合还可用于加速推测性执行(例如,参见如图14A和15A中所描绘的备用高速缓存集合1310d,以及如图15B和15C中所描绘的高速缓存集合1310b和如图15D中所描绘的高速缓存集合1310c)。备用高速缓存集合还可用于在不使用影子高速缓存的情况下加速推测性执行。保存在用作影子高速缓存的高速缓存集合中的数据可经过验证且因此用于普通执行(例如,参见如图14A和15A中所描绘的高速缓存集合1310c,以及如图15B和15C中所描绘的高速缓存集合1310d和如图15D中所描绘的高速缓存集合1310b,其中的每一个可用于推测性执行且为影子高速缓存的高速缓存集合,且接着在内容验证之后可用于普通执行)。并且,用作用于普通或非推测性执行的主高速缓存的一些高速缓存集合(例如,参见如图14A和15A中所描绘的高速缓存集合1310b,以及如图15B和15C中所描绘的高速缓存集合1310c和如图15D中所描绘的高速缓存集合1310d)可能未准备好用作用于推测性执行的影子高速缓存。因此,一或多个高速缓存集合可用作备用高速缓存集合以避免等待高速缓存集合可用性的延迟(例如,参见如图14A和15A中所描绘的高速缓存集合1310d,以及如图15B和15C中所描绘的高速缓存集合1310b和如图15D中所描绘的高速缓存集合1310c)。
一旦确认推测,就确认用作影子高速缓存的高速缓存集合的内容为有效且最新的;且因此,用作用于推测性执行的影子高速缓存的之前的高速缓存集合用于普通执行。举例来说,参见如图14A和15A中所描绘的高速缓存集合1310c,以及如图15B和15C中所描绘的高速缓存集合1310d和如图15D中所描绘的高速缓存集合1310b,其中的每一个可用于推测性执行且为影子高速缓存的高速缓存集合,且接着在内容验证之后可用于普通执行。然而,最初用作普通高速缓存的高速缓存集合中的一些可能未准备好用于后续推测性执行。举例来说,参见如图14A和15A中所描绘的高速缓存集合1310b,以及如图15B和15C中所描绘的高速缓存集合1310c和如图15D中所描绘的高速缓存集合1310d,其中的每一个用作普通高速缓存的部分但可能未准备好用于后续推测性执行。因此,一或多个高速缓存集合可用作备用高速缓存集合以避免等待高速缓存集合可用性的延迟且加速推测性执行。举例来说,参见如图14A和15A中所描绘的高速缓存集合1310d,以及如图15B和15C中所描绘的高速缓存集合1310b和如图15D中所描绘的高速缓存集合1310c,其中的每一个用作备用高速缓存集合。
在一些实施例中,在高速缓存系统具有后台同步电路系统(例如,参见后台同步电路系统1102)的情况下,如果尚未完成从普通高速缓存中的高速缓存集合到影子高速缓存中的对应高速缓存集合的同步(例如,参见展示于图11A中的同步1130),那么普通高速缓存中的高速缓存集合无法立即释放以供用于下一推测性执行中。在这种情形下,如果不存在备用高速缓存集合,那么下一推测性执行必须等待直到完成同步为止,使得可释放普通高速缓存中的对应高速缓存集合。这只是在备用高速缓存集合是有益的时的一个实例。存在无法立即释放普通高速缓存中的高速缓存集合时的许多其它情形。
此外,例如,推测性执行可参考存储器系统(例如,参见图6、10和13中的存储器系统603)中的与高速缓存于用于普通高速缓存中的高速缓存集合中的存储器区不具有重叠的存储器区。由于接受推测性执行的结果,所以影子高速缓存和普通高速缓存中的高速缓存集合现在全部在普通高速缓存中。这也可引起延迟,因为高速缓存系统花费时间来释放高速缓存集合以支持下一推测性执行。为了释放高速缓存集合,高速缓存系统需要识别高速缓存集合,例如最少使用的高速缓存集合,且使高速缓存集合与存储器系统同步。如果高速缓存具有比存储器系统更新的数据,那么需要将数据写入到存储器系统中。
另外,使用备用高速缓存集合(例如,参见如图14A和15A中所描绘的高速缓存集合1310d,以及如图15B和15C中所描绘的高速缓存集合1310b和如图15D中所描绘的高速缓存集合1310c)的系统还可使用后台同步电路系统(例如后台同步电路系统1102)。当确认初始推测时,可交换初始推测中使用的高速缓存集合(例如,参见如图14A和15A中所描绘的高速缓存集合1310c)以加入用于主执行的高速缓存集合中的集合(例如,参见如图14A、B和C中所展示且如图15A、B、C和D中所描绘的高速缓存集合1310a,其为用于主执行或非推测性执行的高速缓存集合中的集合的高速缓存集合)。代替使用来自正用于推测失败的情况的先前主执行的高速缓存集合(例如,参见如图14A和15A中所描绘的高速缓存集合1310b,以及如图15B和15C中所描绘的高速缓存集合1310c和如图15D中所描绘的高速缓存集合1310d),可立即使备用高速缓存集合可用于下一推测性执行(例如,参见如图14A和15A中所描绘的高速缓存集合1310d,以及如图15B和15C中所描绘的高速缓存集合1310b和如图15D中所描绘的高速缓存集合1310c)。可例如经由后台同步电路系统1102更新备用高速缓存集合以用于下一推测性执行。并且,由于后台同步,当当前用于推测执行的高速缓存集合(例如如图14A和15A中所展示的高速缓存集合1310c)准备好接受以用于普通执行时,备用高速缓存集合(例如如图14A和15A中所展示的备用高速缓存集合1310d)可准备好使用。以这一方式,在等待用于下一推测性执行的下一高速缓存集合的使用时不存在延迟。为准备用于下一推测性执行,可将备用高速缓存集合(例如如图14A和15A中所展示的高速缓存集合1310c)同步到很可能将用于下一推测性执行的普通高速缓存集合(例如如图14A和15A中所展示的高速缓存集合1310b)或系统中的最少使用的高速缓存集合。
图13展示根据本公开的一些实施例的具有带有包含备用高速缓存集合以加速推测性执行的可互换高速缓存集合(例如,参见高速缓存集合1310a、1310b、1310c和1310d)的高速缓存系统1000的实例计算装置的实例方面。图13中的计算装置类似于图10中所描绘的计算装置。举例来说,展示于图13中的装置包含处理器1001、存储器系统603、高速缓存系统1000,和连接604a到604d和609a到609c,以及连接1002。
在图13中,高速缓存系统1000展示为具有高速缓存集合(例如,高速缓存集合1310a、1310b、1310c和1310d)。高速缓存系统1000还展示为具有与来自处理器1001的识别执行类型的执行类型信号线605d的连接604d,和与来自处理器1001的识别推测性执行的状态的信号线1004的连接1002。
高速缓存系统1000还展示为包含逻辑电路1006,所述逻辑电路1006可配置成当执行类型为指示由处理器1001对指令的非推测性执行的第一类型时,分配高速缓存集合的第一子集(例如,参见如图13中所展示的高速缓存602a)以用于在高速缓存操作中高速缓存。逻辑电路1006还可配置成当执行类型从第一类型改变为指示由处理器对指令的推测性执行的第二类型时,分配高速缓存集合的第二子集(例如,参见如图13中所展示的高速缓存602b)以用于在高速缓存操作中高速缓存。逻辑电路1006还可配置成当执行类型为第二类型时,保留至少一个高速缓存集合或高速缓存集合的第三子集(例如,参见如图13中所展示的高速缓存602c)。
逻辑电路1006还可配置成当执行类型为第一类型时和当执行类型从第二类型改变为第一类型且推测性执行的状态指示将接受推测性执行的结果时,重新配置第二子集以用于在高速缓存操作中高速缓存(例如,参见如图13中所展示的高速缓存602b)。并且,逻辑电路1006还可配置成当执行类型从第一类型改变为第二类型时和当执行类型从第二类型改变为第一类型且推测性执行的状态指示将接受推测性执行的结果时,分配至少一个高速缓存集合或第三子集以用于在高速缓存操作中高速缓存(例如,参见如图13中所展示的高速缓存602c)。逻辑电路1006还可配置成当执行类型为第二类型时和当至少一个高速缓存集合为多个高速缓存集合中的最少使用的高速缓存集合时,保留至少一个高速缓存集合或第三子集(例如,参见如图13中所展示的高速缓存602c)。
在一些实施例中,高速缓存系统可包含可映射本文中所提及的高速缓存集合的一或多个映射表。并且,在这种实施例中,例如本文中所提及的逻辑电路的逻辑电路可配置成根据一或多个映射表分配和重新配置高速缓存集合的子集,例如高速缓存系统中的高速缓存。映射可为本文中所描述的高速缓存集合寄存器的替代方案或除这种寄存器之外使用。
在一些实施例中,如至少图13、14A至14C和15A至15D中所展示,高速缓存系统1000可包含分别与高速缓存集合(例如,参见高速缓存集合1310a、1310b、1310c和1310d)相关联的高速缓存集合寄存器(例如,参见高速缓存集合寄存器1312a、1312b、1312c和1312d)。在这种实施例中,逻辑电路1006可配置成根据高速缓存集合寄存器分配和重新配置高速缓存集合的子集(例如,参见如图13中所展示的高速缓存602a、602b和602c)。
此外,在一些实施例中,如图15A至15D中所展示,高速缓存集合的第一子集可包含第一高速缓存集合,高速缓存集合的第二子集可包含第二高速缓存集合,且第三子集可包含第三高速缓存集合。在这种实施例中,高速缓存集合寄存器可包含与第一高速缓存集合相关联的第一高速缓存集合寄存器,所述第一高速缓存集合寄存器配置成最初存储第一高速缓存集合索引,使得第一高速缓存集合用于非推测性执行(例如,参见如图15A中所展示的保存在高速缓存集合寄存器1312b中的高速缓存集合索引1504b)。高速缓存集合寄存器还可包含与第二高速缓存集合相关联的第二高速缓存集合寄存器,所述第二高速缓存集合寄存器配置成最初存储第二高速缓存集合索引,使得第二高速缓存集合用于非推测性执行(例如,参见如图15A中所展示的保存在高速缓存集合寄存器1312c中的高速缓存集合索引1504c)。高速缓存集合寄存器还可包含与第三高速缓存集合相关联的第三高速缓存集合寄存器,所述第三高速缓存集合寄存器配置成最初存储第三高速缓存集合索引,使得第三高速缓存集合用作备用高速缓存集合(例如,参见如图15A中所展示的保存在高速缓存集合寄存器1312d中的高速缓存集合索引1504d)。
此外,在这种实施例中,逻辑电路1006可配置成基于从来自处理器1001的地址总线605b接收到的存储器地址和从来自处理器的识别执行类型的执行类型信号线605d接收到的推测性执行或非推测性执行的识别来产生集合索引(例如,参见集合索引1504a、1504b、1504c和1504d)。并且,逻辑电路1006可配置成确定集合索引是否与存储在第一高速缓存集合寄存器、第二高速缓存集合寄存器或第三高速缓存集合寄存器中的内容匹配。
并且,在这种实施例中,逻辑电路1006可配置成将第一高速缓存集合索引存储在第二高速缓存集合寄存器或与多个高速缓存集合的第二子集中的另一高速缓存集合相关联的另一高速缓存集合寄存器中,使得当执行类型从第二类型改变为第一类型且推测性执行的状态指示将接受推测性执行的结果时,第二高速缓存集合或第二子集中的另一高速缓存集合用于非推测性执行。举例来说,参见描绘保存在第二高速缓存集合寄存器1312c中的高速缓存集合索引1504b的图15B,使得第二高速缓存集合1310c可用于非推测性执行。另外,逻辑电路1006可配置成将第二高速缓存集合索引存储在第三高速缓存集合寄存器或与至少一个高速缓存集合中的另一高速缓存集合相关联的另一高速缓存集合寄存器中,使得当执行类型从第二类型改变为第一类型且推测性执行的状态指示将接受推测性执行的结果时,第三高速缓存集合或至少一个高速缓存集合中的另一高速缓存集合用于推测性执行。举例来说,参见描绘保存在第三高速缓存集合寄存器1312d中的高速缓存集合索引1504c的图15B,使得第三高速缓存集合1310d可用且可用于推测性执行。逻辑电路1006还可配置成将第三高速缓存集合索引存储在第一高速缓存集合寄存器或与多个高速缓存集合的第一子集中的另一高速缓存集合相关联的另一高速缓存集合寄存器中,使得当执行类型从第二类型改变为第一类型且推测性执行的状态指示将接受推测性执行的结果时,第一高速缓存集合或第一子集中的另一高速缓存集合用作备用高速缓存集合。举例来说,参见描绘保存在第一高速缓存集合寄存器1312b中的高速缓存集合索引1504d的图15B,使得第一高速缓存集合1310b用作备用高速缓存集合。
图14A、14B和14C展示根据本公开的一些实施例的具有带有包含备用高速缓存集合(例如,参见如图14A和14B中所展示的备用高速缓存集合1310d和如图14C中所展示的备用高速缓存集合1310b)以加速推测性执行的可互换高速缓存集合(例如,参见高速缓存集合1310a、1310b、1310c和1310d)的高速缓存系统1000的实例计算装置的实例方面。特定来说,图14A展示第一状态中的高速缓存集合,在所述第一状态中,高速缓存集合1310a和1310b可用于非推测性执行,高速缓存集合1310c可用于推测性执行,且高速缓存集合1310d用作备用高速缓存集合。图14B展示第二状态中的高速缓存集合,在所述第二状态中,高速缓存集合1310a、1310b和1310c可用于非推测性执行,且高速缓存集合1310c可供用于且可用于推测性执行。图14C展示第三状态中的高速缓存集合,在所述第三状态中,高速缓存集合1310a和1310c可用于非推测性执行,高速缓存集合1310d可用于推测性执行,且高速缓存集合1310b用作备用高速缓存集合。
图15A、15B、15C和15D各自展示根据本公开的一些实施例的具有带有包含备用高速缓存集合以加速推测性执行的可互换高速缓存集合(例如,参见高速缓存集合1310a、1310b、1310c和1310d)的高速缓存系统1000的实例计算装置的实例方面。
特定来说,图15A展示第一状态中的高速缓存集合,在所述第一状态中,高速缓存集合1310a和1310b可用于非推测性执行(或第一类型的执行),高速缓存集合1310c可用于推测性执行(或第二类型执行),且高速缓存集合1310d用作备用高速缓存集合。如图15A中所展示,在这一第一状态中,逻辑电路1006可配置成将高速缓存集合索引1504b存储在高速缓存集合寄存器1312b中,使得高速缓存集合1310b中的内容1502b用于非推测性执行。另外,在这一第一状态中,逻辑电路1006可配置成将高速缓存集合索引1504c存储在高速缓存集合寄存器1312c中,使得高速缓存集合1310c可用且可用于推测性执行。逻辑电路1006还可配置成将高速缓存集合索引1504d存储在高速缓存集合寄存器1312d中,使得高速缓存集合1310d在这一第一状态中用作备用高速缓存集合。
图15B展示第二状态中的高速缓存集合,在所述第二状态中,高速缓存集合1310a和1310c可用于非推测性执行,高速缓存集合1310d可供用于推测性执行,且高速缓存集合1310b用作备用高速缓存集合。图15B中所描绘的第二状态在执行类型从第二类型改变为第一类型且推测性执行的状态指示将接受推测性执行的结果时发生。如图15B中所展示,在这一第二状态中,逻辑电路1006可配置成将高速缓存集合索引1504b存储在高速缓存集合寄存器1312c中,使得高速缓存集合1310c中的内容1502b用于非推测性执行。另外,在这一第二状态中,逻辑电路1006可配置成将高速缓存集合索引1504c存储在高速缓存集合寄存器1312d中,使得高速缓存集合1310d可供用于推测性执行。逻辑电路1006还可配置成将高速缓存集合索引1504d存储在高速缓存集合寄存器1312b中,使得高速缓存集合1310b在这一第二状态中用作备用高速缓存集合。
图15C展示大部分在第二状态中的高速缓存集合,其中高速缓存集合1310a和1310c可用于非推测性执行,且高速缓存集合1310b用作备用高速缓存集合。但,在图15C中,展示高速缓存集合1310d正用于推测性执行而不是仅为可用的。如图15C中所展示,在这一第二状态中,逻辑电路1006可配置成将高速缓存集合索引1504c存储在高速缓存集合寄存器1312d中,使得保存在高速缓存集合1310d中的内容1502c还可用于推测性执行。
图15D展示第三状态中的高速缓存集合,在所述第三状态中,高速缓存集合1310a和1310d可用于非推测性执行,高速缓存集合1310b可供用于推测性执行,且高速缓存集合1310c用作备用高速缓存集合。在第二状态之后的后续循环中,图15D中所描绘的第三状态在执行类型再次从第二类型改变为第一类型且推测性执行的状态指示将接受推测性执行的结果时发生。如图15D中所展示,在这一第三状态中,逻辑电路1006可配置成将高速缓存集合索引1504b存储在高速缓存集合寄存器1312d中,使得高速缓存集合1310d中的内容1502b用于非推测性执行。另外,在这一第三状态中,逻辑电路1006可配置成将高速缓存集合索引1504c存储在高速缓存集合寄存器1312b中,使得高速缓存集合1310b可供用于推测性执行。逻辑电路1006还可配置成将高速缓存集合索引1504d存储在高速缓存集合寄存器1312c中,使得高速缓存集合1310c在这一第三状态中用作备用高速缓存集合。
如由图15A至15D所展示,高速缓存集合为可互换的且用作备用高速缓存集合的高速缓存集合也为可互换的。
在这种实施例中,当与地址总线605b的连接604b从处理器1001接收到存储器地址时,逻辑电路1006可配置成根据地址的这一高速缓存集合索引112b从至少存储器地址102b产生集合索引(例如,参见分别产生集合索引1504a、1504b、1504c和1504d的集合索引产生1506a、1506b、1506c和1506d)。此外,当与地址总线605b的连接604b从处理器1001接收到存储器地址时,逻辑电路1006可配置成确定所产生的集合索引是否与存储在寄存器中的一个中的内容(其可为所存储集合索引1504a、1504b、1504c或1504d)匹配。此外,逻辑电路1006可配置成响应于所产生的集合索引与存储在对应寄存器中的内容匹配而经由高速缓存集合实施在与命令总线605a的连接604a中接收到的命令。此外,响应于确定与存储器地址相关联的存储器系统的数据集当前未高速缓存于高速缓存系统中,逻辑电路1001可配置成分配高速缓存集合以用于高速缓存数据集且将所产生的集合索引存储在对应寄存器中。所产生的集合索引可包含存储器地址中的位的预定片段,如图15A至15B中所展示。
此外,在这种实施例中,逻辑电路1006可配置成基于从来自处理器1001的地址总线605b接收到的存储器地址(例如,存储器地址102b)和从来自处理器的识别执行类型的执行类型信号线605d接收到的推测性执行或非推测性执行的识别来产生集合索引(例如,参见集合索引1504a、1504b、1504c和1504d)。并且,逻辑电路1006可配置成确定集合索引是否与存储在高速缓存集合寄存器1312b、高速缓存集合寄存器1312c或高速缓存集合寄存器1312d中的内容匹配。
在一些实施例中,高速缓存系统可包含多个高速缓存集合、与来自处理器的识别执行类型的执行类型信号线的连接、与来自处理器的识别推测性执行的状态的信号线的连接,和逻辑电路。逻辑电路可配置成:当执行类型为指示由处理器对指令的非推测性执行的第一类型时,分配多个高速缓存集合的第一子集以用于在高速缓存操作中高速缓存;和当执行类型从第一类型改变为指示由处理器对指令的推测性执行的第二类型时,分配多个高速缓存集合的第二子集以用于在高速缓存操作中高速缓存。逻辑电路还可配置成当执行类型为第二类型时,保留至少一个高速缓存集合(或多个高速缓存集合的第三子集)。当执行类型从第二类型改变为第一类型且推测性执行的状态指示将接受推测性执行的结果时,逻辑电路还可配置成当执行类型为第一类型时,重新配置第二子集以用于在高速缓存操作中高速缓存。并且,当执行类型从第二类型改变为第一类型且推测性执行的状态指示将接受推测性执行的结果时,逻辑电路还可配置成当执行类型从第一类型改变为第二类型时,分配至少一个高速缓存集合(或多个高速缓存集合的第三子集)以用于在高速缓存操作中高速缓存。
在这种实施例中,逻辑电路可配置成当执行类型为第二类型且至少一个高速缓存集合(或多个高速缓存集合的第三子集)包含多个高速缓存集合中的最少使用的高速缓存集合时,保留至少一个高速缓存集合(或多个高速缓存集合的第三子集)。
此外,在这种实施例中,高速缓存系统可包含映射多个高速缓存集合的一或多个映射表。在这种实例中,逻辑电路配置成根据一或多个映射表分配和重新配置多个高速缓存集合的子集。
此外,在这种实施例中,高速缓存系统可包含分别与多个高速缓存集合相关联的多个高速缓存集合寄存器。在这种实例中,逻辑电路配置成根据多个高速缓存集合寄存器分配和重新配置多个高速缓存集合的子集。在这种实例中,多个高速缓存集合的第一子集可包含第一高速缓存集合,多个高速缓存集合的第二子集可包含第二高速缓存集合,且至少一个高速缓存集合(或多个高速缓存集合的第三子集)可包含第三高速缓存集合。此外,多个高速缓存集合寄存器可包含与第一高速缓存集合相关联的第一高速缓存集合寄存器,所述第一高速缓存集合寄存器配置成最初存储第一高速缓存集合索引,使得第一高速缓存集合用于非推测性执行。多个高速缓存集合寄存器还可包含与第二高速缓存集合相关联的第二高速缓存集合寄存器,所述第二高速缓存集合寄存器配置成最初存储第二高速缓存集合索引,使得第二高速缓存集合用于推测性执行。多个高速缓存集合寄存器还可包含与第三高速缓存集合相关联的第三高速缓存集合寄存器,所述第三高速缓存集合寄存器配置成最初存储第三高速缓存集合索引,使得第三高速缓存集合用作备用高速缓存集合。
在这种实施例中,逻辑电路可配置成基于从来自处理器的地址总线接收到的存储器地址和从来自处理器的识别执行类型的执行类型信号线接收到的推测性执行或非推测性执行的识别来产生集合索引。并且,逻辑电路可配置成确定集合索引是否与存储在第一高速缓存集合寄存器、第二高速缓存集合寄存器或第三高速缓存集合寄存器中的内容匹配。当执行类型从第二类型改变为第一类型且推测性执行的状态指示将接受推测性执行的结果时,逻辑电路还可配置成将第一高速缓存集合索引存储在第二高速缓存集合寄存器或与多个高速缓存集合的第二子集中的另一高速缓存集合相关联的另一高速缓存集合寄存器中,使得第二高速缓存集合或第二子集中的另一高速缓存集合用于非推测性执行。当执行类型从第二类型改变为第一类型且推测性执行的状态指示将接受推测性执行的结果时,逻辑电路还可配置成将第二高速缓存集合索引存储在第三高速缓存集合寄存器或与至少一个高速缓存集合中的另一高速缓存集合(或多个高速缓存集合的第三子集)相关联的另一高速缓存集合寄存器中,使得第三高速缓存集合或至少一个高速缓存集合中的另一高速缓存集合(或多个高速缓存集合的第三子集)用于推测性执行。当执行类型从第二类型改变为第一类型且推测性执行的状态指示将接受推测性执行的结果时,逻辑电路还可配置成将第三高速缓存集合索引存储在第一高速缓存集合寄存器或与多个高速缓存集合的第一子集中的另一高速缓存集合相关联的另一高速缓存集合寄存器中,使得第一高速缓存集合或第一子集中的另一高速缓存集合用作备用高速缓存集合。
在一些实施例中,高速缓存系统可包含具有高速缓存集合的第一子集、高速缓存集合的第二子集和高速缓存集合的第三子集的多个高速缓存集合。高速缓存系统还可包含与来自处理器的识别执行类型的执行类型信号线的连接、与来自处理器的识别推测性执行的状态的信号线的连接,和逻辑电路。逻辑电路可配置成:当执行类型为指示由处理器对指令的非推测性执行的第一类型时,分配多个高速缓存集合的第一子集以用于在高速缓存操作中高速缓存;和当执行类型从第一类型改变为指示由处理器对指令的推测性执行的第二类型时,分配多个高速缓存集合的第二子集以用于在高速缓存操作中高速缓存。逻辑电路还可配置成当执行类型为第二类型时,保留多个高速缓存集合的第三子集。当执行类型从第二类型改变为第一类型且推测性执行的状态指示将接受推测性执行的结果时,逻辑电路还可配置成当执行类型为第一类型时,重新配置第二子集以用于在高速缓存操作中高速缓存。当执行类型从第二类型改变为第一类型且推测性执行的状态指示将接受推测性执行的结果时,逻辑电路还可配置成当执行类型从第一类型改变为第二类型时,分配第三子集以用于在高速缓存操作中高速缓存。
在一些实施例中,高速缓存系统可包含多个高速缓存,所述多个高速缓存包含第一高速缓存、第二高速缓存和第三高速缓存。高速缓存系统还可包含与来自处理器的识别执行类型的执行类型信号线的连接、与来自处理器的识别推测性执行的状态的信号线的连接,和逻辑电路。逻辑电路可配置成:当执行类型为指示由处理器对指令的非推测性执行的第一类型时,分配第一高速缓存以用于在高速缓存操作中高速缓存;和当执行类型从第一类型改变为指示由处理器对指令的推测性执行的第二类型时,分配第二高速缓存以用于在高速缓存操作中高速缓存。逻辑电路还可配置成当执行类型为第二类型时保留第三高速缓存。当执行类型从第二类型改变为第一类型且推测性执行的状态指示将接受推测性执行的结果时,逻辑电路还可配置成当执行类型为第一类型时,重新配置第二高速缓存以用于在高速缓存操作中高速缓存。并且,逻辑电路还可配置成当执行类型从第一类型改变到第二类型时分配第三高速缓存以用于在高速缓存操作中高速缓存。
图16和17展示根据本公开的一些实施例的具有带有利用用于由处理器进行的不同类型的执行(例如推测性和非推测性执行)的扩展标签(例如,参见扩展标签1640a、1640b、1740a和1740b)的可互换高速缓存集合(例如,参见高速缓存集合1610a、1610b、1710a和1710b)的高速缓存系统的实例计算装置的实例方面。此外,图16和17说明寻址高速缓存系统(例如分别在图6、10和13中所描绘的高速缓存系统600和1000)内的高速缓存集合和高速缓存块的不同方式。此外,展示可经由存储器地址(例如存储器地址102e或102b以及存储器地址102a、102c或102d(图1中展示))选择高速缓存集合和高速缓存块的方式。
图16和17中的两个实例使用集合关联性,且可使用集合关联性实施高速缓存系统,例如高速缓存系统600和1000。在图16中,隐式地定义集合关联性(例如,通过可用于针对给定执行类型确定哪一标签应在哪一高速缓存集合中的算法定义)。在图17中,经由存储器地址中的高速缓存集合索引的位实施集合关联性。此外,图16和17中所说明的功能性可在不使用集合关联性的情况下实施(虽然这未描绘),例如通过分别展示于图2和4中的高速缓存系统200和400实施。
在图16和17中,块索引(例如,参见块索引106e和106b)可用作个别高速缓存集合(例如,参见高速缓存集合1610a、1610b、1710a和1710b)内的地址以识别高速缓存集合中的特定高速缓存块(例如,参见高速缓存块1624a、1624b、1628a、1628b、1724a、1724b、1728a和1728b)。并且,扩展标签(例如,扩展标签1640a、1640b、1740a、1740b、1650和1750)可用作高速缓存集合的地址。存储器地址(例如,参见存储器地址102e和102b)的块索引(例如,参见块索引106e和106b)可用于每一高速缓存集合(例如,参见高速缓存集合1610a、1610b、1710a和1710b)以获得高速缓存块(例如,参见高速缓存块1624a、1624b、1628a、1628b、1724a、1724b、1728a和1728b)和与高速缓存块相关联的标签(例如,参见对应标签1622a、1622b、1626a、1626b、1722a、1722b、1726a和1726b)。
此外,如图16和17中所展示,标签比较电路(例如,标签比较电路1660a、1660b、1760a和1760b)可将从高速缓存集合所产生的扩展标签(例如,扩展标签1640a、1640b、1740a和1740b)与来自存储器地址(例如,参见存储器地址102e和102b)和当前执行类型(例如,参见执行类型110e和110b)的扩展高速缓存标签(例如,扩展标签1650)进行比较,以确定高速缓存命中或未中。扩展标签的构造确保高速缓存集合(例如,参见高速缓存集合1610a、1610b、1710a和1710b)当中存在至多一个命中。如果存在命中,那么来自选定高速缓存集合的高速缓存块(例如,参见高速缓存块1624a、1624b、1628a、1628b、1724a、1724b、1728a和1728b)提供输出。否则,与存储器地址(例如,存储器地址102e或102b)相关联的数据未高速缓存于高速缓存集合中的任一个中或从高速缓存集合中的任一个输出。简单地说,图16和17中所描绘的扩展标签用于选择高速缓存集合,且块索引用于选择高速缓存集合内的高速缓存块和其标签。
此外,如图16和17中所展示,以不同方式分割存储器地址(例如,参见地址102e和102b);且因此,根据地址对高速缓存操作的控制也是不同的。然而,存在一些类似性。举例来说,展示于图16和17中的系统经由集合关联性控制高速缓存集合使用。高速缓存操作的控制可包含控制高速缓存集合是用于由处理器进行的第一还是第二类型的执行(例如,非推测和推测性执行),且这种控制可在某一程度上或完全经由集合关联性控制。
在图16中,存储器地址102e的扩展标签1650具有执行类型110e和标签104e,所述标签104e具有实施集合关联性的高速缓存集合指示符。在图17中,用于存储器地址102b的扩展标签1750具有执行类型110e、高速缓存集合索引112b和标签104b。在这种实例中,高速缓存集合索引112b实施集合关联性而不是标签中的高速缓存集合指示符。存储器地址的不同分割略微改变扩展标签(例如,扩展标签1640a、1640b、1650、1740a和1740b和1750)经由集合关联性控制高速缓存操作的方式。
在存储器地址分割的情况下,在实例中,来自存储器地址和执行类型的扩展标签(例如,参见扩展标签1650和1750)与用于高速缓存集合的扩展标签(例如,参见扩展标签1640a、1640b、1740a和1740b)进行比较,以用于控制经由高速缓存集合实施的高速缓存操作。取决于输入到比较电路中的扩展标签匹配还是不匹配,标签比较电路(例如,标签比较电路1660a、1660b、1760a和1760b)可输出命中或未中。高速缓存集合的扩展标签(例如,参见扩展标签1640a、1640b、1740a和1740b)可从保存于寄存器(例如,参见寄存器1612a、1612b、1712a和1712b)中的执行类型(例如,参见执行类型1632a、1632b、1732a和1732b)和来自第一高速缓存集合(例如,参见高速缓存集合1610a、1610b、1710a和1710b)的块标签(例如,参见标签1622a、1622b、1626a、1626b、1722a、1722b、1726a和1726b)导出。并且,如图16和17中所展示,执行类型在高速缓存集合的每一寄存器中不同。对于所展示的实例,第一高速缓存集合(例如,高速缓存集合1610a或1710a)可用于第一类型的执行(例如,非推测性执行),且第二高速缓存集合(例如,高速缓存集合1610b或1710b)可用于第二类型的执行(例如,推测性执行)。
在图17中,标签104b与高速缓存集合索引112b的组合提供与展示于图16中的标签104e类似的功能性。然而,在图17中,通过分离标签104b和高速缓存集合索引112b,高速缓存集合不必存储高速缓存集合索引112b的冗余副本,这是由于高速缓存集合(例如,参见高速缓存集合1710a和1710b)可与高速缓存集合寄存器(例如,参见寄存器1732a和1732b)相关联以保存高速缓存集合索引(例如,参见高速缓存集合索引1732a和1732b)。而在图16中,高速缓存集合(例如,参见高速缓存集合1610a和1610b)的确需要将高速缓存集合指示符的冗余副本存储在其块(例如,参见块1624a、1624b、1628a和1628b)中的每一个中,这是由于高速缓存集合的相关联寄存器未配置成保存高速缓存集合索引。
换句话说,由于标签1622a、1622b等具有相同高速缓存集合指示符,所以指示符可存储在用于高速缓存集合的寄存器(例如,参见高速缓存集合寄存器1712a和1712b)中一次。这是图17中所描绘的布置的优于图16中所描绘的布置的益处中的一个。此外,图17中的标签1722a、1722b、1726a和1726b的长度与展示于图16中的标签(例如,参见1622a、1622b、1626a和1626b)的实施方案相比更短,这是由于图17中所描绘的高速缓存集合寄存器(例如,寄存器1710a和1710b)存储高速缓存集合索引和执行类型两者。
当执行类型与高速缓存集合索引组合以形成扩展高速缓存集合索引时,扩展高速缓存集合索引可用于选择高速缓存集合中的一个。接着,将来自选定高速缓存集合的标签与地址中的标签进行比较以确定命中或未中。二步法选择可类似于使用高速缓存集合索引的常规二步法选择,或可用于与扩展标签组合以支持针对不同执行类型的高速缓存集合的更高效互换(例如推测性和非推测性执行类型)。
在一些实施例中,高速缓存系统(例如高速缓存系统600或1000)可包含多个高速缓存集合(例如高速缓存集合610a到610c、1010a到1010c、1310a到1310d、1610a到1610b或1710a到1710b)。多个高速缓存集合可包含第一高速缓存集合和第二高速缓存集合(例如,参见高速缓存集合1610a到1610b,和集合1710a到1710b)。高速缓存系统还可包含分别与多个高速缓存集合相关联的多个寄存器(例如寄存器612a到612c、1012a到1012c、1312a到1312d、1612a到1612b或1712a到1712b)。多个寄存器可包含与第一高速缓存集合相关联的第一寄存器,和与第二高速缓存集合相关联的第二寄存器(例如,参见寄存器1612a到1612b和寄存器1712a到1712b)。
高速缓存系统还可包含与耦合在高速缓存系统与处理器(例如,参见处理器601和1001)之间的命令总线(例如,参见命令总线605a)的连接(例如,参见连接604a)。高速缓存系统还可包含与耦合在高速缓存系统与处理器之间的地址总线(例如,参见地址总线605b)的连接(例如,参见连接604b)。
高速缓存系统还可包含耦合到处理器以根据多个寄存器控制多个高速缓存集合的逻辑电路(例如,参见逻辑电路606和1006)。当与地址总线的连接从处理器接收到存储器地址(例如,参见展示于图1中的存储器地址102a到102e和分别展示于图16和17中的地址102e和102b)时,逻辑电路可配置成从至少存储器地址产生扩展标签(例如,参见扩展标签1650和1750)。此外,当与地址总线的连接从处理器接收到存储器地址时,逻辑电路可配置成确定所产生的扩展标签(例如,参见扩展标签1650和1750)是否与第一高速缓存集合(例如,参见高速缓存集合1610a和1710a)的第一扩展标签(例如,参见扩展标签1640a和1740a)或第二高速缓存集合(例如,参见高速缓存集合1610b和1710b)的第二扩展标签(例如,参见扩展标签1640b和1740b)匹配。
逻辑电路(例如,参见逻辑电路606和1006)还可配置成响应于所产生的扩展标签(例如,参见扩展标签1650和1750)与第一扩展标签(例如,参见扩展标签1640a和1740a)匹配而经由第一高速缓存集合(例如,参见高速缓存集合1610a和1710a)实施在与命令总线(例如,参见命令总线605a)的连接(例如,参见连接604a)中接收到的命令,和响应于所产生的扩展标签与第二扩展标签(例如,参见扩展标签1640b和1740b)匹配而经由第二高速缓存集合(例如,参见高速缓存集合1610b和1710b)实施所述命令。
逻辑电路(例如,参见逻辑电路606和1006)还可配置成从第一高速缓存集合(例如,参见高速缓存集合1610a和1710a)的高速缓存地址(例如,参见在扩展标签1640a和1740a中标记为‘标签’的块,以及标签1622a、1622b、1722a、1722b等)和存储在第一寄存器(例如,参见寄存器1612a和1712a)中的内容(例如,参见扩展标签1640a和1740a中的标记为‘执行类型’的块和在扩展标签1740a中标记为‘高速缓存集合索引’的块,以及执行类型1632a和高速缓存集合索引1732a)产生第一扩展标签(例如,参见扩展标签1640a和1740a)。逻辑电路还可配置成从第二高速缓存集合(例如,参见高速缓存集合1610b和1710b)的高速缓存地址(例如,参见在扩展标签1640b和1740b中标记为‘标签’的块,以及标签1626a、1626b、1726a、1726b等)和存储在第二寄存器(例如,参见寄存器1612b和1712b)中的内容(例如,参见扩展标签1640b和1740b中的标记为‘执行类型’的块和在扩展标签1740b中标记为‘高速缓存集合索引’的块,以及执行类型1632b和高速缓存集合索引1732b)产生第二扩展标签(例如,参见扩展标签1640b和1740b)。
在一些实施例中,高速缓存系统(例如高速缓存系统600或1000)可进一步包含与来自处理器(例如,参见处理器601和1001)的识别执行类型的执行类型信号线(例如,参见执行类型信号线605d)的连接(例如,参见连接604d)。在这种实施例中,逻辑电路(例如,参见逻辑电路606和1006)可配置成从存储器地址(例如,参见分别展示于图16和17中的存储器地址102e和102b)和由执行类型信号线识别出的执行类型(例如,参见展示于图16和17中的执行类型110e)产生扩展标签(例如,参见扩展标签1650和1750)。此外,在这种实施例中,存储在第一寄存器和第二寄存器(例如,参见寄存器1612a、1612b、1712a和1712b)中的每一个中的内容可包含执行类型(例如,参见第一执行类型1632a和第二执行类型1632b)。
在一些实施例中,为了确定所产生的扩展标签(例如,参见扩展标签1650和1750)是否与第一高速缓存集合的第一扩展标签(例如,参见扩展标签1640a和1740a)或第二高速缓存集合的第二扩展标签(例如,参见扩展标签1640b和1740b)匹配,逻辑电路(例如,参见逻辑电路606和1006)可配置成将第一扩展标签(例如,参见扩展标签1640a和1740a)与所产生的扩展标签(例如,参见扩展标签1650和1750)进行比较以确定第一高速缓存集合(例如,参见高速缓存集合1610a和1710a)的高速缓存命中或未中。特定来说,如图16和17中所展示,第一标签比较电路(例如,参见标签比较电路1660a和1760a)配置成接收第一扩展标签(例如,参见扩展标签1640a和1740a)和所产生的扩展标签(例如,参见扩展标签1650和1750)作为输入。第一标签比较电路(例如,参见标签比较电路1660a和1760a)还配置成比较第一扩展标签与所产生的扩展标签以确定第一高速缓存集合的高速缓存命中或未中。第一标签比较电路(例如,参见标签比较电路1660a和1760a)还配置成输出第一高速缓存集合的确定的高速缓存命中或未中(例如,参见输出1662a和1762a)。
此外,为了确定所产生的扩展标签是否与第一高速缓存集合的第一扩展标签或第二高速缓存集合的第二扩展标签匹配,逻辑电路可配置成将第二扩展标签(例如,参见扩展标签1640b和1740b)与所产生的扩展标签(例如,参见扩展标签1650和1750)进行比较以确定第二高速缓存集合的高速缓存命中或未中(例如,参见高速缓存集合1610b和1710b)。特定来说,如图16和17中所展示,第二标签比较电路(例如,参见标签比较电路1660b和1760b)配置成接收第二扩展标签(例如,参见扩展标签1640b和1740b)和所产生的扩展标签(例如,参见扩展标签1650和1750)作为输入。第二标签比较电路(例如,参见标签比较电路1660b和1760b)还配置成比较第二扩展标签与所产生的扩展标签以确定第二高速缓存集合的高速缓存命中或未中。第二标签比较电路(例如,参见标签比较电路1660b和1760b)还配置成输出第二高速缓存集合的确定的高速缓存命中或未中(例如,参见输出1662b和1762b)。
在一些实施例中,逻辑电路(例如,参见逻辑电路606和1006)可进一步配置成当逻辑电路确定所产生的扩展标签(例如,参见扩展标签1640a和1740a)与第一高速缓存集合的第一扩展标签(例如,参见扩展标签1640a和1740a)匹配时,从第一高速缓存集合(例如,参见高速缓存集合1610a和1710a)接收输出。逻辑电路还可进一步配置成当逻辑电路确定所产生的扩展标签(例如,参见高速缓存集合1610a和1710a)与第二高速缓存集合的第二扩展标签(例如,参见扩展标签1640a和1740a)匹配时,从第二高速缓存集合(例如,参见高速缓存集合1610b和1710b)接收输出。
在一些实施例中,第一高速缓存集合的高速缓存地址包含第一高速缓存集合(例如,参见高速缓存集合1610a和1710a)中的高速缓存块(例如,参见高速缓存块1624a、1624b、1724a和1724b)的第一标签(例如,参见标签1622a、1622b、1722a和1722b)。在这种实施例中,第二高速缓存集合的高速缓存地址包含第二高速缓存集合(例如,参见高速缓存集合1610b和1710b)中的高速缓存块(例如,参见高速缓存块1628a、1628b、1728a和1728b)的第二标签(例如,参见标签1626a、1626b、1726a和1726b)。此外,在这种实施例中,一般来说,块索引用作个别高速缓存集合内的地址。举例来说,在这种实施例中,逻辑电路(例如,参见逻辑电路606和1006)可配置成使用来自存储器地址的第一块索引(例如,参见分别展示于图16和17中的来自存储器地址102e和102b的块索引106e和106b)获得第一高速缓存集合中的第一高速缓存块和与第一高速缓存块相关联的标签(例如,参见高速缓存块1624a、1624b、1724a和1724b和相应相关联的标签1622a、1622b、1722a和1722b)。此外,逻辑电路(例如,参见逻辑电路606和1006)可配置成使用来自存储器地址的第二块索引(例如,参见分别展示于图16和17中的来自存储器地址102e和102b的块索引106e和106b)获得第二高速缓存集合中的第二高速缓存块和与第二高速缓存块相关联的标签(例如,参见高速缓存块1628a、1628b、1728a和1728b和相应相关联的标签1626a、1626b、1726a和1726b)。
在一些实施例(例如图16中所说明的实施例)中,当第一和第二高速缓存集合(例如,参见高速缓存集合1610a和1610b)处于第一状态时,第一高速缓存集合的高速缓存地址(例如,参见标签1622a、1622b等)包含与第一高速缓存集合相关联的第一高速缓存集合指示符。第一高速缓存集合指示符可为第一高速缓存集合索引。在这种实施例中,当第一和第二高速缓存集合处于第一状态时,第二高速缓存集合的高速缓存地址(例如,参见标签1626a、1626b等)包含与第二高速缓存集合相关联的第二高速缓存集合指示符。第二高速缓存集合指示符可为第二高速缓存集合索引。
此外,在展示于图16中的实施例中,当第一和第二高速缓存集合(例如,参见高速缓存集合1610a和1610b)处于第二状态时(这未在图16中所描绘),第一高速缓存集合的高速缓存地址包含与第二高速缓存集合相关联的第二高速缓存集合指示符。另外,当第一和第二高速缓存集合处于第二状态时,第二高速缓存集合的高速缓存地址包含与第一高速缓存集合相关联的第一高速缓存集合指示符。高速缓存地址内的内容的这一改变可实施高速缓存集合之间的可互换性。
在展示于图16中的实施例的情况下,高速缓存集合指示符在高速缓存集合中的每一高速缓存块的标签中重复,且因此,标签比图17中所描绘的高速缓存集合中的每一高速缓存块的标签更长。在图17中,代替重复每一高速缓存块的标签中的高速缓存集合索引,将集合索引存储在与高速缓存集合相关联的高速缓存集合寄存器(例如,参见寄存器1712a和1712b)中。
在一些实施例(例如图17中所说明的实施例)中,当第一和第二高速缓存集合(例如,参见高速缓存集合1710a和1710b)处于第一状态时,第一高速缓存集合的高速缓存地址(例如,参见标签1722a、1722b等)可不包含与第一高速缓存集合相关联的第一高速缓存集合指示符。替代地,第一高速缓存集合指示符展示为存储在第一高速缓存集合寄存器1712a中(例如,参见保存于高速缓存集合寄存器1712a中的第一高速缓存集合索引1732a)。这可减小第一高速缓存集合中的高速缓存块的标签的大小,这是由于高速缓存集合指示符存储在与第一高速缓存集合相关联的寄存器中。此外,当第一和第二高速缓存集合处于第一状态时,第二高速缓存集合的高速缓存地址(例如,参见标签1726a、1726b等)可不包含与第二高速缓存集合相关联的第二高速缓存集合指示符。替代地,第二高速缓存集合指示符展示为存储在第二高速缓存集合寄存器1712b中(例如,参见保存于高速缓存集合寄存器1712b中的第二高速缓存集合索引1732b)。这可减小第二高速缓存集合中的高速缓存块的标签的大小,这是由于高速缓存集合指示符存储在与第二高速缓存集合相关联的寄存器中。
此外,在展示于图17中的实施例中,当第一和第二高速缓存集合(例如,参见高速缓存集合1710a和1710b)处于第二状态时(这未在图17中所描绘),第一高速缓存集合的高速缓存地址(例如,参见标签1722a、1722b等)可不包含与第二高速缓存集合相关联的第二高速缓存集合指示符。替代地,第二高速缓存集合指示符将存储在第一高速缓存集合寄存器1712a中。此外,当第一和第二高速缓存集合处于第二状态时,第二高速缓存集合的高速缓存地址(例如,参见标签1726a、1726b等)可不包含与第一高速缓存集合相关联的第一高速缓存集合指示符。替代地,第一高速缓存集合指示符将存储在第二高速缓存集合寄存器1712b中。高速缓存集合寄存器的内容的这一改变可实施高速缓存集合之间的可互换性。
在一些实施例中,如图17中所展示,当第一和第二寄存器(例如,参见寄存器1712a和1712b)处于第一状态时,存储在第一寄存器(例如,参见寄存器1712a)中的内容可包含与第一高速缓存集合(例如,参见高速缓存集合1710a)相关联的第一高速缓存集合索引(例如,参见高速缓存集合索引1732a)。并且,存储在第二寄存器(例如,参见寄存器1712b)中的内容可包含与第二高速缓存集合(例如,参见高速缓存集合1710a)相关联的第二高速缓存集合索引(例如,参见高速缓存集合索引1732b)。在这种实施例中,虽然未在图17中描绘,但当第一和第二寄存器处于第二状态时,存储在第一寄存器中的内容可包含与第二高速缓存集合相关联的第二高速缓存集合索引,且存储在第二寄存器中的内容可包含与第一高速缓存集合相关联的第一高速缓存集合索引。
在一些实施例(例如如图16中所展示的实施例和例如具有与识别执行类型的执行类型信号线的连接的实施例)中,高速缓存系统(例如,参见高速缓存系统1000)可进一步包含与来自处理器(例如,参见处理器1001)的识别由处理器对指令的推测性执行的状态的推测状态信号线(例如,参见推测状态信号线1004)的连接(例如,参见连接1002)。在这种实施例中,与推测状态信号线的连接可配置成接收推测性执行的状态。推测性执行的状态可指示将接受还是拒绝推测性执行的结果。当执行类型从推测性执行改变为非推测性执行时,逻辑电路可配置成在推测性执行的状态指示将接受推测性执行的结果的情况下,改变第一和第二高速缓存集合(例如,参见高速缓存集合1610a和1610b)的状态。并且,当执行类型从推测性执行改变为非推测性执行时,逻辑电路可配置成在推测性执行的状态指示将拒绝推测性执行的结果的情况下,维持第一和第二高速缓存集合(例如,参见高速缓存集合1610a和1610b)的状态而不改变。
在某种程度上类似地,在一些实施例(例如如图17中所展示的实施例和例如具有与识别执行类型的执行类型信号线的连接的实施例)中,高速缓存系统可进一步包含与来自处理器的识别由处理器对指令的推测性执行的状态的推测状态信号线的连接。在这种实施例中,与推测状态信号线的连接可配置成接收推测性执行的状态。推测性执行的状态可指示将接受还是拒绝推测性执行的结果。当执行类型从推测性执行改变为非推测性执行时,逻辑电路可配置成在推测性执行的状态指示将接受推测性执行的结果的情况下,改变第一和第二高速缓存集合(例如,参见高速缓存集合1610a和1610b)的状态。并且,当执行类型从推测性执行改变为非推测性执行时,逻辑电路可配置成在推测性执行的状态指示将接受推测性执行的结果的情况下,改变第一和第二寄存器(例如,参见寄存器1712a和1712b)的状态。并且,当执行类型从推测性执行改变为非推测性执行时,逻辑电路可配置成在推测性执行的状态指示将拒绝推测性执行的结果的情况下,维持第一和第二寄存器(例如,参见寄存器1712a和1712b)的状态而不改变。
在一些实施例中,高速缓存系统可包含多个高速缓存集合,所述多个高速缓存集合包含第一高速缓存集合和第二高速缓存集合。高速缓存系统还可包含分别与多个高速缓存集合相关联的多个寄存器,所述多个寄存器包含与第一高速缓存集合相关联的第一寄存器和与第二高速缓存集合相关联的第二寄存器。高速缓存系统可进一步包含与耦合在高速缓存系统与处理器之间的命令总线的连接、与耦合在高速缓存系统与处理器之间的地址总线的连接,和耦合到处理器以根据多个寄存器控制多个高速缓存集合的逻辑电路。逻辑电路可配置成从第一高速缓存集合的高速缓存地址和存储在第一寄存器中的内容产生第一扩展标签,和从第二高速缓存集合的高速缓存地址和存储在第二寄存器中的内容产生第二扩展标签。逻辑电路还可配置成确定第一高速缓存集合的第一扩展标签或第二高速缓存集合的第二扩展标签是否与根据从处理器接收到的存储器地址产生的所产生的扩展标签匹配。并且,逻辑电路可配置成响应于所产生的扩展标签与第一扩展标签匹配而经由第一高速缓存集合实施在与命令总线的连接中接收到的命令,和响应于所产生的扩展标签与第二扩展标签匹配而经由第二高速缓存集合实施所述命令。
在这种实施例中,高速缓存系统还可包含与耦合在高速缓存系统与处理器之间的地址总线的连接。当与地址总线的连接从处理器接收到存储器地址时,逻辑电路可配置成从至少存储器地址产生扩展标签。此外,高速缓存系统可包含与来自处理器的识别执行类型的执行类型信号线的连接。在这种实例中,逻辑电路可配置成从存储器地址和由执行类型信号线识别出的执行类型产生扩展标签。此外,存储在第一寄存器和第二寄存器中的每一个中的内容可包含执行类型。
另外,为了确定所产生的扩展标签是否与第一高速缓存集合的第一扩展标签或第二高速缓存集合的第二扩展标签匹配,逻辑电路可配置成:将第一扩展标签与所产生的扩展标签进行比较以确定第一高速缓存集合的高速缓存命中或未中;和将第二扩展标签与所产生的扩展标签进行比较以确定第二高速缓存集合的高速缓存命中或未中。此外,逻辑电路可配置成:当逻辑电路确定所产生的扩展标签与第一高速缓存集合的第一扩展标签匹配时,从第一高速缓存集合接收输出;和当逻辑电路确定所产生的扩展标签与第二高速缓存集合的第二扩展标签匹配时,从第二高速缓存集合接收输出。在这种实施例和其它实施例中,第一高速缓存集合的高速缓存地址可包含第一高速缓存集合中的高速缓存块的第一标签,且第二高速缓存集合的高速缓存地址可包含第二高速缓存集合中的高速缓存块的第二标签。
在一些实施例中,高速缓存系统可包含多个高速缓存集合,所述多个高速缓存集合包含第一高速缓存集合和第二高速缓存集合。高速缓存系统还可包含分别与多个高速缓存集合相关联的多个寄存器,所述多个寄存器包含与第一高速缓存集合相关联的第一寄存器和与第二高速缓存集合相关联的第二寄存器。并且,高速缓存系统可包含与耦合在高速缓存系统与处理器之间的命令总线的连接、与来自处理器的识别执行类型的执行类型信号线的连接、与耦合在高速缓存系统与处理器之间的地址总线的连接,和耦合到处理器以根据多个寄存器控制多个高速缓存集合的逻辑电路。当与地址总线的连接从处理器接收到存储器地址时,逻辑电路可配置成:从存储器地址和由执行类型信号线识别出的执行类型产生扩展标签;和确定所产生的扩展标签是否与第一高速缓存集合的第一扩展标签或第二高速缓存集合的第二扩展标签匹配。此外,逻辑电路可配置成响应于所产生的扩展标签与第一扩展标签匹配而经由第一高速缓存集合实施在与命令总线的连接中接收到的命令,和响应于所产生的扩展标签与第二扩展标签匹配而经由第二高速缓存集合实施所述命令。
图18展示根据本公开的一些实施例的具有带有利用映射电路1830将物理高速缓存集合输出(例如,参见物理输出1820a、1820b和1820c)映射到逻辑高速缓存集合输出(例如,参见逻辑输出1840a、1840b和1840c)的可互换高速缓存集合(例如,参见高速缓存集合1810a、1810b和1810c)的高速缓存系统(例如,参见分别展示于图6和10中的高速缓存系统600和1000)的实例计算装置的实例方面。
如所展示,高速缓存系统可包含多个高速缓存集合(例如,参见高速缓存集合1810a、1810b和1810c)。多个高速缓存集合包含配置成在高速缓存命中后即刻提供第一物理输出(例如,参见物理输出1820a)的第一高速缓存集合(例如,参见高速缓存集合1810a),和配置成在高速缓存命中后即刻提供第二物理输出(例如,参见物理输出1820b)的第二高速缓存集合(例如,参见高速缓存集合1810b)。高速缓存系统还可包含与耦合在高速缓存系统与处理器(例如,参见处理器601和1001)之间的命令总线(例如,参见命令总线605a)的连接(例如,参见图6和10中所描绘的连接604a)。高速缓存系统还可包含与耦合在高速缓存系统与处理器之间的地址总线(例如,参见地址总线605b)的连接(例如,参见连接604b)。
展示于图18中,高速缓存系统包含控制寄存器1832(例如,物理到逻辑-集合-映射(PLSM)寄存器1832)和映射电路1830,所述映射电路1830耦合到控制寄存器以将多个高速缓存集合(例如,参见高速缓存集合1810a、1810b和1810c)的相应物理输出(例如,参见物理输出1820a、1820b和1820c)映射到第一逻辑高速缓存(例如,普通高速缓存)和第二逻辑高速缓存(例如,影子高速缓存)作为对应逻辑高速缓存集合输出(例如,参见逻辑输出1840a、1840b和1840c)。由映射电路1830将物理输出(例如,参见物理输出1820a、1820b和1820c)映射到逻辑高速缓存集合输出(例如,参见逻辑输出1840a、1840b和1840c)是根据控制寄存器1832的状态。如图18中所展示,将至少逻辑输出1840a和1840b映射到用于第一类型的执行的第一逻辑高速缓存,且将至少逻辑输出1840c映射到用于第二类型的执行的第二逻辑高速缓存。未展示,高速缓存系统可配置成耦合在处理器与存储器系统(例如,参见存储器系统603)之间。
当与地址总线(例如,参见地址总线605b)的连接(例如,参见连接604b)从处理器(例如,参见处理器601和1001)接收到存储器地址(例如,参见存储器地址102b)时和当控制寄存器1832处于第一状态(展示于图18中)时,映射电路1830可配置成将第一物理输出(例如,参见物理输出1820a)映射到用于由处理器进行的第一类型的执行的第一逻辑高速缓存(例如,参见逻辑输出1840a),以实施从命令总线(例如,参见命令总线605a)接收到的用于在第一类型的执行(例如,非推测性执行)期间经由第一高速缓存集合(例如,高速缓存集合1820a)存取存储器系统(例如,参见存储器系统601)的命令。
此外,当与地址总线(例如,参见地址总线605b)的连接(例如,参见连接604b)从处理器(例如,参见处理器601和1001)接收到存储器地址(例如,参见存储器地址102b)时和当控制寄存器1832处于第一状态(展示于图18中)时,映射电路1830可配置成将第二物理输出(例如,参见物理输出1820b)映射到用于由处理器进行的第二类型的执行的第二逻辑高速缓存(例如,参见逻辑输出1840b),以实施从命令总线(例如,参见命令总线605a)接收到的用于在第二类型的执行(例如,推测性执行)期间经由第二高速缓存集合(例如,高速缓存集合1820b)存取存储器系统(例如,参见存储器系统601)的命令。
当与地址总线(例如,参见地址总线605b)的连接(例如,参见连接604b)从处理器(例如,参见处理器601和1001)接收到存储器地址(例如,参见存储器地址102b)时和当控制寄存器1832处于第二状态(未展示于图18中)时,映射电路1830配置成将第一物理输出(例如,参见物理输出1820a)映射到第二逻辑高速缓存(例如,参见逻辑输出1840b),以实施从命令总线(例如,参见命令总线605a)接收到的用于在第二类型的执行(例如,推测性执行)期间经由第一高速缓存集合(例如,高速缓存集合1820a)存取存储器系统(例如,参见存储器系统601)的命令。
此外,当与地址总线(例如,参见地址总线605b)的连接(例如,参见连接604b)从处理器(例如,参见处理器601和1001)接收到存储器地址(例如,参见存储器地址102b)时和当控制寄存器1832处于第二状态(未展示于图18中)时,映射电路1830配置成将第二物理输出(例如,参见物理输出1820b)映射到第一逻辑高速缓存(例如,参见逻辑输出1840a),以实施从命令总线(例如,参见命令总线605a)接收到的用于在第一类型的执行(例如,非推测性执行)期间经由第二高速缓存集合(例如,高速缓存集合1820b)存取存储器系统(例如,参见存储器系统601)的命令。
在一些实施例中,第一逻辑高速缓存为用于由处理器进行的非推测性执行的普通高速缓存,且第二逻辑高速缓存为用于由处理器进行的推测性执行的影子高速缓存。
映射电路1830解决与执行类型相关的问题。映射电路1830提供关于执行类型如何涉及将物理高速缓存集合映射到逻辑高速缓存集合的解决方案。如果使用映射电路1830,那么可在每一高速缓存集合(例如,参见高速缓存集合1810a、1810b和1810c)中应用存储器地址(例如,参见地址102b)以产生物理输出(例如,参见物理输出1820a、1820b和1820c)。物理输出(例如,参见物理输出1820a、1820b和1820c)包含使用存储器地址的块索引查找到的标签和高速缓存块(例如,参见块索引106b)。映射电路1830可将物理输出(例如,参见物理输出1820a、1820b和1820c)重新路由到逻辑输出(例如,参见逻辑输出1840a、1840b和1840c)中的一个。高速缓存系统可在物理输出处或逻辑输出处进行标签比较。如果在物理输出处进行标签比较,那么通过映射电路1830路由物理输出的标签命中或未中以产生逻辑输出的命中或未中。否则,标签自身通过映射电路1830路由;且在逻辑输出处进行标签比较以产生对应标签命中或未中结果。
如图18中所说明,逻辑输出预定义用于推测性执行和非推测性执行。因此,可使用当前执行类型(例如,参见执行类型110e)来选择将使用逻辑输出的哪部分。举例来说,由于预定义的是逻辑输出1840c用于图18中的推测性执行,所以如果当前执行类型为普通执行,那么可丢弃其结果。否则,如果当前执行类型为推测性的,那么来自图18中的逻辑输出(例如,输出1840a和1840b)的第一部分的结果可受阻。
在展示于图18中的实施例中,如果当前执行类型为推测性的,那么来自用于非推测性执行的逻辑输出的命中或未中结果可用‘0’进行AND以迫使高速缓存“未中”;且来自用于非推测性执行的逻辑输出的命中或未中结果可用‘1’进行AND以保持结果未更改。执行类型110e可配置成使得推测性执行=0且非推测性执行=1,且来自非推测性输出1840a到1840b的标签命中或未中结果可用执行类型(例如,执行类型110e)进行AND以产生包含匹配标签和执行类型两者的考虑因素的命中或未中。并且,来自1840c的标签命中或未中结果可用执行类型110e的倒数进行AND以产生命中或未中。
图19和20展示根据本公开的一些实施例的具有带有利用展示于图18中的电路(映射电路1830)将物理高速缓存集合输出(例如,参见图18中所描绘的物理输出1820a、1820b和1820c以及展示于图19中的物理输出1820a)映射到逻辑高速缓存集合输出(例如,参见逻辑输出1840a、1840b和1840c)的可互换高速缓存集合(例如,参见图18到21中所描绘的高速缓存集合1810a、1810b和1810c)的高速缓存系统(例如,分别展示于图6和10中的高速缓存系统600和1000)的实例计算装置的实例方面。
特定来说,图19展示第一高速缓存集合1810a、第一高速缓存集合寄存器1812a、第一高速缓存集合的标签1815a(其包含当前标签和高速缓存集合索引)、来自地址102b的标签和集合索引1850(其包含来自存储器地址102b的当前标签104b和当前高速缓存集合索引112b),和用于第一高速缓存集合1810a的标签比较电路1860a。此外,图19展示具有高速缓存块和相关联标签(例如,参见高速缓存块1818a和1818b,和标签1816a和1816b)的第一高速缓存集合1810a,以及保存用于第一高速缓存集合的高速缓存集合索引1813a的第一高速缓存集合寄存器1812a。另外,图19展示用于第二高速缓存集合1810b的标签比较电路1860b。所述图展示将来自第一高速缓存集合1810a的物理输出1820a输出到映射电路1830。第二高速缓存集合1810b和系统的其它高速缓存集合也可将其相应物理输出提供到映射电路1830(虽然这未在图19中描绘)。
图20展示系统的将物理输出提供到映射电路1830的多个高速缓存集合(例如,参见分别由高速缓存集合1810a、1810b和1810c提供的物理输出1820a、1820b和1820c,如图20中所展示)的实例。图20还描绘映射电路1830的部分(例如,参见多路复用器2004a、2004b和2004c以及PLSM寄存器2006a、2006b和2006c)。图20还展示具有至少高速缓存块1818a和1818b和相关联标签1816a和1816b的第一高速缓存1810a。并且,第二高速缓存1810b还展示为具有至少高速缓存块1818c和1818d和相关联标签1816c和1816d。
图19还展示多路复用器1904a和1904b以及PLSM寄存器1906a和1906b,其可为逻辑电路(例如,参见逻辑电路606和1006)和/或映射电路(例如,参见映射电路1830)的部分。多路复用器1904a和1904b中的每一个从标签比较电路1860a和1860b接收至少命中或未中结果1862a和1862b,所述标签比较电路1860a和1860b各自比较高速缓存集合的相应标签(例如,参见第一高速缓存集合1815a的标签)与来自存储器地址的标签和集合索引(例如,参见标签和集合索引1850)。在一些实例中,对于针对系统的每一高速缓存集合的每一标签比较,可存在等效多路复用器。多路复用器(例如,参见多路复用器1904a和1904b)中的每一个可基于多路复用器的相应PLSM寄存器(例如,参见PLSM寄存器1906a和1906b)的状态来输出选定命中或未中结果。控制对多路复用器的选择以用于输出来自高速缓存集合比较的高速缓存命中或未中的PLSM寄存器可在主PLSM寄存器(例如控制寄存器1832)为映射电路1830的一部分时由这种寄存器控制。
在一些实施例中,PLSM寄存器(例如,参见PLSM寄存器1906a和1906b,以及图21中所描绘的PLSM寄存器2110a、2110b和2110c)中的每一个可取决于特定实施方案而为一位、两位或三位寄存器或任何位长度寄存器。可使用这种PLSM寄存器(例如,由多路复用器使用)选择适当的物理标签比较结果或输出命中或未中的逻辑单元中的一个的正确结果。
在图20中所描绘的PLSM寄存器2006a、2006b和2006c的情况下,可使用这种寄存器(例如由多路复用器使用)选择高速缓存集合(例如,参见如图20中所展示的高速缓存集合1810a、1810b和1810c)的适当的物理输出(例如,参见展示于图20中的物理输出1820a、1820b和1820c)。这种PLSM寄存器还可各自取决于特定实施方案而为一位、两位或三位寄存器或任何位长度寄存器。此外,控制寄存器1832可取决于特定实施方案而为一位、两位或三位寄存器或任何位长度寄存器。
在一些实施例中,选择来自高速缓存集合的物理输出或选择高速缓存命中或未中是由多路复用器(例如,参见展示于图19中的多路复用器1904a和1904b、展示于图20中的多路复用器2004a、2004b和2004c,和展示于图21中的多路复用器2110a、2110b和2110c)进行,所述多路复用器在系统中布置成每输出类型和每逻辑单元或每高速缓存集合具有至少一个多路复用器。如图中所展示,在一些实施例中,在存在n数目个高速缓存集合或逻辑比较单元的情况下,存在n数目个n到1多路复用器。
如图19中所展示,计算装置可包含第一多路复用器(例如,多路复用器1904a),所述第一多路复用器配置成根据由第一PLSM寄存器(例如,参见PLSM寄存器1906a)接收到的内容将第一命中或未中结果或第二命中或未中结果(例如,参见如图19中所展示的命中或未中输出1862a和1862b)输出到处理器。计算装置还可包含第二多路复用器(例如,多路复用器1904b),所述第二多路复用器配置成根据由第二PLSM寄存器(例如,参见PLSM寄存器1906b)接收到的内容将第二命中或未中结果或第一命中或未中结果(例如,参见如图19中所展示的命中或未中输出1862b和1862a)输出到处理器。
在一些实施例中,可从控制寄存器(例如展示于图18中的控制寄存器1832)接收PLSM寄存器的内容。举例来说,在一些实施例中,当由第一PLSM寄存器接收到的内容指示第一状态时,第一多路复用器输出第一命中或未中结果,且当由第一PLSM寄存器接收到的内容指示第二状态时,第一多路复用器输出第二命中或未中结果。此外,当由第二PLSM寄存器接收到的内容指示第一状态时,第二多路复用器可输出第二命中或未中结果。并且,当由第二PLSM寄存器接收到的内容指示第二状态时,第二多路复用器可输出第一命中或未中结果。
如图20中所展示,计算装置可包含第一多路复用器(例如,多路复用器2004a),所述第一多路复用器配置成根据由第一PLSM寄存器(例如,PLSM寄存器2006a)接收到的内容将第一高速缓存集合的第一物理输出1820a或第二高速缓存集合的第二物理输出1820b输出到处理器。计算装置可包含第二多路复用器(例如,多路复用器2004b),所述第二多路复用器配置成根据由第二PLSM寄存器(例如,PLSM寄存器2006b)接收到的内容将第一高速缓存集合的第一物理输出1820a或第二高速缓存集合的第二物理输出1820b输出到处理器。
在一些实施例中,可从控制寄存器(例如展示于图18中的控制寄存器1832)接收PLSM寄存器的内容。举例来说,在一些实施例中,当由第一PLSM寄存器接收到的内容指示第一状态时,第一多路复用器输出第一物理输出1820a,且当由第一PLSM寄存器接收到的内容指示第二状态时,第一多路复用器输出第二物理输出1820b。此外,当由第二PLSM寄存器接收到的内容指示第一状态时,第二多路复用器可输出第二物理输出1820b。并且,当由第二PLSM寄存器接收到的内容指示第二状态时,第二多路复用器可输出第一物理输出1820a。
在一些实施例中,块选择可基于块索引与主设定或影子设定的组合。这种参数可控制PLSM寄存器。
在一些实施例(例如展示于图19和20中的实例)中,仅将一个地址(例如,标签和索引)馈送到可互换高速缓存集合(例如,高速缓存集合1810a、1810b和1810c)中。在这种实施例中,如果高速缓存集合产生未中,那么存在根据存储器控制更新哪一高速缓存集合的信号。
当高速缓存集合处于第一状态时,多路复用器1904a由PLSM寄存器1906a控制以提供高速缓存集合1810a的命中或未中输出,且因此提供用于主执行或普通执行的高速缓存集合的命中或未中状态。当高速缓存集合处于第一状态时,多路复用器1904b由PLSM寄存器1906b控制以提供高速缓存集合1810b的命中或未中输出,且因此提供用于推测性执行的高速缓存集合的命中或未中状态。另一方面,当高速缓存集合处于第二状态时,多路复用器1904a由PLSM寄存器1906a控制以提供高速缓存集合1810b的命中或未中输出,且因此提供用于主执行或普通执行的高速缓存集合的命中或未中状态。当高速缓存集合处于第二状态时,多路复用器1904b由PLSM寄存器1906b控制以提供高速缓存集合1810a的命中或未中输出,且因此提供用于推测性执行的高速缓存集合的命中或未中状态。
类似于命中或未中信号的选择,可选择从可互换高速缓存查找到的数据以产生用于处理器的一个结果(例如在存在命中的情况下),例如参见展示于图20中的物理输出1820a、1820b和1820c。
举例来说,在高速缓存集合的第一状态中,当高速缓存集合1810a用作主高速缓存集合且高速缓存集合1810b用作影子高速缓存集合时,多路复用器2004a由PLSM寄存器2006a控制以选择用于非推测性执行的主高速缓存或普通逻辑高速缓存的高速缓存集合1810a的物理输出1820a。此外,例如,在高速缓存集合的第二状态中,当高速缓存集合1810b用作主高速缓存集合且高速缓存集合1810a用作影子高速缓存集合时,则多路复用器2004a由PLSM寄存器2006a控制以选择用于非推测性执行的主高速缓存或普通逻辑高速缓存的高速缓存集合1810b的物理输出1820b。在这种实例中,在高速缓存集合的第一状态中,当高速缓存集合1810a用作主高速缓存集合且高速缓存集合1810b用作影子高速缓存集合时,则多路复用器2004b由PLSM寄存器2006b控制以选择用于推测性执行的影子逻辑高速缓存的高速缓存集合1810b的物理输出1820b。此外,例如,在高速缓存集合的第二状态中,当高速缓存集合1810a用作主高速缓存集合且高速缓存集合1810b用作影子高速缓存集合时,则多路复用器2004b由PLSM寄存器2006b控制以选择用于推测性执行的影子逻辑高速缓存的高速缓存集合1810a的物理输出1820a。
在一些实施例中,高速缓存系统可进一步包含分别与多个高速缓存集合(例如,参见如图18至21中所展示的高速缓存集合1810a、1810b和1810c)相关联的多个寄存器(例如,参见如图19中所展示的寄存器1812a)。寄存器可包含与第一高速缓存集合(例如,参见高速缓存集合1810a)相关联的第一寄存器(例如,参见寄存器1812a),和与第二高速缓存集合(例如,参见高速缓存集合1810b)相关联的第二寄存器(未在图18至21中描绘但在图6和10中描绘)。高速缓存系统还可包含耦合到处理器(例如,参见逻辑电路601和1001)以根据多个寄存器控制多个高速缓存集合的逻辑电路(例如,参见逻辑电路606和1006)。当与地址总线(例如,参见地址总线605b)的连接(例如,参见连接604b)从处理器接收到存储器地址时,逻辑电路可配置成从至少存储器地址产生集合索引,和确定所产生的集合索引是否与存储在第一寄存器中的内容或与存储在第二寄存器中的内容匹配。并且,逻辑电路可配置成响应于所产生的集合索引与存储在第一寄存器中的内容匹配而经由第一高速缓存集合实施在与命令总线(例如,参见命令总线605a)的连接(例如,参见连接604a)中接收到的命令,且响应于所产生的集合索引与存储在第二寄存器中的内容匹配而经由第二高速缓存集合实施所述命令。
在一些实施例中,映射电路(例如,参见映射电路1830)可为逻辑电路的一部分或连接到所述逻辑电路,且控制寄存器(例如,参见控制寄存器1832)的状态可控制多个高速缓存集合中的高速缓存集合的状态。在一些实施例中,控制寄存器的状态可通过改变高速缓存集合的每一块的有效位来控制多个高速缓存集合中的高速缓存集合的状态(例如,参见图21至23)。
此外,在一些实例中,高速缓存系统可进一步包含与来自处理器的识别由处理器对指令的推测性执行的状态的推测状态信号线(例如,参见推测状态信号线1004)的连接(例如,参见连接1002)。与推测状态信号线的连接可配置成接收推测性执行的状态,且推测性执行的状态可指示将接受还是拒绝推测性执行的结果。当执行类型从推测性执行改变为非推测性执行时,逻辑电路(例如,参见逻辑电路606和1006)可配置成在推测性执行的状态指示将接受推测性执行的结果的情况下,经由控制寄存器(例如,参见控制寄存器1832)改变第一和第二高速缓存集合的状态。并且,当执行类型从推测性执行改变为非推测性执行时,逻辑电路可配置成在推测性执行的状态指示将拒绝推测性执行的结果的情况下,经由控制寄存器维持第一和第二高速缓存集合的状态而不改变。
在一些实施例中,映射电路(例如,参见映射电路1830)为逻辑电路(例如,参见逻辑电路606和1006)的部分或连接到所述逻辑电路,且控制寄存器(例如,参见控制寄存器1832)的状态可经由映射电路控制多个高速缓存寄存器中的高速缓存寄存器(例如,参见如图19中所展示的寄存器1812a)的状态。在这种实例中,高速缓存系统可进一步包含与来自处理器的识别由处理器对指令的推测性执行的状态的推测状态信号线(例如,参见推测状态信号线1004)的连接(例如,参见连接1002)。与推测状态信号线的连接可配置成接收推测性执行的状态,且推测性执行的状态指示将接受还是拒绝推测性执行的结果。当执行类型从推测性执行改变为非推测性执行时,逻辑电路可配置成在推测性执行的状态指示将接受推测性执行的结果的情况下,经由控制寄存器改变第一和第二寄存器的状态。并且,当执行类型从推测性执行改变为非推测性执行时,逻辑电路可配置成在推测性执行的状态指示将拒绝推测性执行的结果的情况下,经由控制寄存器维持第一和第二寄存器的状态而不改变。
图21展示根据本公开的一些实施例的具有带有可互换高速缓存集合(例如展示于图18中的高速缓存集合,包含高速缓存集合1810a、1810b和1810c)的高速缓存系统的实例计算装置的实例方面。高速缓存集合(例如,高速缓存集合1810a、1810b和1810c)展示为利用展示于图18中的电路(映射电路1830)将物理高速缓存集合输出映射到逻辑高速缓存集合输出。
图21中所描绘的部分为包含存储器(例如主存储器)、处理器(例如,参见处理器1001)和至少三个可互换高速缓存集合(例如,参见可互换高速缓存集合1810a、1810b和1810c)的计算装置的部分。处理器配置成执行主线程和推测性线程。
如图21中所展示,第一高速缓存集合(例如,高速缓存集合1810a)可耦合在存储器与处理器之间,且可在高速缓存集合的第一状态中包含用于主线程的第一多个块(例如,参见展示于图21中的块2101a、2101b和2101c)。第一多个块中的每一块可包含高速缓存的数据、第一有效位和包含索引和标签的块地址。并且,处理器(单独地或结合高速缓存控制器)可配置成当推测性线程的推测成功时将每一第一有效位从指示有效改变为指示无效,使得在高速缓存集合的第二状态中,第一多个块变成可针对推测性线程存取且针对主线程受阻。
如图21中所展示,第二高速缓存集合(例如,高速缓存集合1810b)可耦合在主存储器与处理器之间,且可在高速缓存集合的第一状态中包含用于推测性线程的第二多个块(例如,参见展示于图21中的块2101d、2101e和2101f)。第二多个块中的每一块可包含高速缓存的数据、第二有效位和包含索引和标签的块地址。并且,处理器(单独地或结合高速缓存控制器)可配置成当推测性线程的推测成功时将每一第二有效位从指示无效改变为指示有效,使得在高速缓存集合的第二状态中,第二多个块变成可针对主线程存取且针对推测性线程受阻。
在一些实施例中,如图21中所展示,第一多个块中的块可对应于第二多个块中的相应块。并且,第一多个块中的块可通过具有与第二多个块中的相应块相同的块地址而对应于第二多个块中的相应块。
此外,如图21中所展示,计算装置可包含配置成接收第一多个块中的块的第一有效位的第一物理到逻辑-映射-集合-映射(PLSM)寄存器(例如,PLSM寄存器1 2108a)。第一有效位可指示第一多个块中的块的高速缓存的数据的有效性。还可指示在主线程中是使用第一多个块中的块还是第二多个块中的对应块。
此外,如图21中所展示,计算装置可包含配置成接收第二多个块中的块的第二有效位的第二PLSM寄存器(例如,PLSM寄存器2 2108b)。第二有效位指示第二多个块中的块的高速缓存的数据的有效性。还可指示在主线程中是使用第二多个块中的块还是第一多个块中的对应块。
此外,如图21中所展示,计算装置可包含用于第一高速缓存集合的逻辑单元2104a,所述逻辑单元2104a配置成确定第一多个块中的块是命中还是未中。逻辑单元2104a展示为包含比较器2106a和与门(AND gate)2107a。比较器2106a可确定块的标签与存储器中的地址的对应标签之间是否存在匹配。并且,如果标签匹配且块的有效位为有效的,那么与门2107a输出块命中的指示。否则,与门2107a输出块未中的指示。换句话说,用于第一高速缓存的逻辑单元2104a配置成根据逻辑单元处的确定来输出第一命中或未中结果。
此外,如图21中所展示,计算装置可包含用于第二高速缓存集合的逻辑单元2104b,所述逻辑单元2104b配置成确定第二多个块中的块是命中还是未中。逻辑单元2104b展示为包含比较器2106b和与门2107b。比较器2106b可确定块的标签与存储器中的地址的对应标签之间是否存在匹配。并且,如果标签匹配且块的有效位为有效的,那么与门2107b输出块命中的指示。否则,与门2107b输出块未中的指示。换句话说,用于第二高速缓存的逻辑单元2104b配置成根据逻辑单元处的确定来输出第二命中或未中结果。
此外,如图21中所展示,计算装置可包含第一多路复用器(例如,多路复用器2110a),所述第一多路复用器配置成根据由第一PLSM寄存器接收到的第一有效位将第一命中或未中结果或第二命中或未中结果输出到处理器。计算装置还可包含第二多路复用器(例如,多路复用器2110b),所述第二多路复用器配置成根据由第二PLSM寄存器接收到的第二有效位将第二命中或未中结果或第一命中或未中结果输出到处理器。在一些实施例中,当由第一PLSM寄存器接收到的第一有效位指示有效时,第一多路复用器输出第一命中或未中结果,且当由第一PLSM寄存器接收到的第一有效位指示无效时,第一多路复用器输出第二命中或未中结果。此外,当由第二PLSM寄存器接收到的第二有效位指示有效时,第二多路复用器输出第二命中或未中结果。并且,当由第二PLSM寄存器接收到的第二有效位指示无效时,第二多路复用器输出第一命中或未中结果。
在一些实施例中,块选择可基于块索引与主设定或影子设定的组合。
在一些实施例中,仅将一个地址(例如,标签和索引)馈送到可互换高速缓存集合(例如,高速缓存集合1810a、1810b和1810c)中。在这种实施例中,如果高速缓存集合产生未中,那么存在根据存储器控制更新哪一高速缓存集合的信号。类似于命中或未中信号的选择,可选择从可互换高速缓存查找到的数据以产生用于处理器的一个结果(例如在存在命中的情况下)。举例来说,在高速缓存集合的第一状态中,如果高速缓存集合1810a用作主高速缓存集合且高速缓存集合1810b用作影子高速缓存集合,那么多路复用器2110a由PLSM寄存器2108a控制以选择高速缓存集合1804a的命中或未中输出和主高速缓存集合的命中或未中状态。并且,多路复用器2110b由PLSM寄存器2108b控制以提供高速缓存集合1810b的命中或未中输出,且因此提供影子高速缓存集合的命中或未中状态。
在这种实施例中,当高速缓存集合处于第二状态时,当高速缓存集合1810a用作影子高速缓存且高速缓存集合1810b用作主高速缓存时,多路复用器2110a可由PLSM寄存器2108b控制以选择高速缓存集合1810b的命中或未中输出和主高速缓存的命中或未中状态。并且,多路复用器2110b可由PLSM寄存器2108b控制以提供高速缓存集合1810a的命中或未中输出,且因此提供影子高速缓存的命中或未中状态。
因此,多路复用器2110a可输出主高速缓存是否具有用于地址的高速缓存中的命中或未中;且多路复用器2110b可输出影子高速缓存是否具有用于相同地址的高速缓存中的命中或未中。接着,取决于地址是否为推测性的,可选择输出中的一个。当存在高速缓存未中时,所述地址用于存储器中以将数据加载到对应高速缓存。PLSM寄存器可类似地实现对应高速缓存集合1810a或集合1810b的更新。
在一些实施例中,在高速缓存集合的第一状态中,在由推测性线程对第一指令的推测性执行期间,推测性执行的效应存储在第二高速缓存集合(例如,高速缓存集合1810b)内。在第一指令的推测性执行期间,处理器可配置成确证指示配置成阻挡第一高速缓存集合(例如,高速缓存集合1810a)的改变的推测性执行的信号。当信号由处理器确证时,处理器可进一步配置成阻挡第二高速缓存集合(例如,高速缓存集合1810b)更新存储器。
当高速缓存集合的状态改变为第二状态时,响应于确定将用主线程进行对第一指令的执行,第二高速缓存集合(而不是第一高速缓存集合)与第一指令一起使用。响应于确定将不用主线程进行对第一指令的执行,第一高速缓存集合与第一指令一起使用。
在一些实施例中,在第一状态中,在第一指令的推测性执行期间,处理器经由第二高速缓存集合(例如,高速缓存集合1810b)存取存储器。并且,在一或多个指令的推测性执行期间,对第二高速缓存中的内容的存取限于由处理器对第一指令的推测性执行。在第一指令的推测性执行期间,可禁止处理器改变第一高速缓存集合(例如,高速缓存集合1810a)。
在一些实施例中,第一高速缓存集合(例如,高速缓存集合1810a)和/或第二高速缓存集合(例如,高速缓存集合1810b)的内容可为可经由高速缓存一致性协议存取的。
图22和23分别展示根据本公开的一些实施例的使用用于由处理器进行的推测性和非推测性执行的可互换高速缓存集合的方法2200和2300。特定来说,方法2200和2300可由图21中所说明的计算装置进行。此外,可由图18至20中所说明的计算装置以及本文中所公开的计算装置中的任一个进行在某种程度上类似的方法;然而,这种计算装置将经由除块地址的有效位以外的另一参数控制高速缓存状态、高速缓存集合状态或高速缓存集合寄存器状态。举例来说,在图16中,经由高速缓存集合的块的标签内的高速缓存集合指示符控制高速缓存集合的状态。并且,例如,在图17中,经由与高速缓存集合相关联的高速缓存集合寄存器的状态控制高速缓存集合的状态。在这种实例中,经由存储在高速缓存集合寄存器中的高速缓存集合索引控制状态。另一方面,对于通过图21至23所公开的实施例,经由高速缓存集合内的块地址的有效位控制高速缓存集合的状态。
方法2200在框2202处包含由处理器(例如,处理器1001)执行主线程和推测性线程。方法2200在框2204处包含在耦合在存储器系统与处理器之间的高速缓存系统的第一高速缓存集合(例如,如图21中所展示的高速缓存集合1810a)中提供用于主线程的第一多个块(例如,图21中所描绘的块2101a、2101b和2101c)。第一多个块中的每一块可包含高速缓存的数据、第一有效位和具有索引和标签的块地址。方法2200在框2206处包含在耦合在存储器系统与处理器之间的高速缓存系统的第二高速缓存集合(例如,高速缓存集合1810b)中提供用于推测性线程的第二多个块(例如,块2101d、2101e和2101f)。第二多个块中的每一块可包含高速缓存的数据、第二有效位和具有索引和标签的块地址。
在框2207处,方法2200以例如由处理器识别推测性线程的推测是否成功继续,使得第一多个块变成可针对推测性线程存取且针对主线程受阻,且使得第二多个块变成可针对主线程存取且针对推测性线程受阻。如图22中所展示,如果推测性线程的推测失败,那么处理器不改变第一和第二多个块的有效性位,且保留与在框2207处确定推测性线程是否成功之前相同的有效性值。因此,高速缓存集合的状态并不从第一状态改变为第二状态。
在框2208处,方法200以当推测性线程的推测成功时由处理器(单独地或结合高速缓存控制器)将每一第一有效位从指示有效改变为指示无效继续,使得第一多个块变成可针对推测性线程存取且针对主线程受阻。此外,在框2210处,方法200以当推测性线程的推测成功时由处理器(单独地或结合高速缓存控制器)将每一第二有效位从指示无效改变为指示有效继续,使得第二多个块变成可针对主线程存取且针对推测性线程受阻。因此,高速缓存集合的状态并不从第一状态改变为第二状态。
在一些实施例中,在由推测性线程对第一指令的推测性执行期间,推测性执行的影响存储在第二高速缓存集合内。在这种实施例中,在第一指令的推测性执行期间,处理器可确证指示可阻挡对第一高速缓存的改变的推测性执行的信号。此外,当信号由处理器确证时,处理器可阻挡第二高速缓存更新存储器。这在高速缓存集合处于第一状态时发生。
此外,在这种实施例中,响应于确定将用主线程进行对第一指令的执行,第二高速缓存集合(而不是第一高速缓存集合)与第一指令一起使用。响应于确定将不用主线程进行对第一指令的执行,第一高速缓存与第一指令一起使用。这在高速缓存集合处于第二状态时发生。
在一些实施例中,在第一指令的推测性执行期间,处理器经由第二高速缓存存取存储器。并且,在一或多个指令的推测性执行期间,对第二高速缓存中的内容的存取限于由处理器对第一指令的推测性执行。在这种实施例中,在第一指令的推测性执行期间,禁止处理器改变第一高速缓存。
在一些实施例中,可经由高速缓存一致性协议存取第一高速缓存的内容。
在图23中,方法2300包含方法2200的框2202、2204、2206、2207、2208和2210处的操作。
方法2300在框2302处包含由第一物理到逻辑-映射-集合-映射(PLSM)寄存器(例如,展示于图21中的PLSM寄存器2108a)接收第一多个块中的块的第一有效位。第一有效位可指示第一多个块中的块的高速缓存的数据的有效性。此外,方法2300在框2304处包含由第二PLSM寄存器(例如,PLSM寄存器2108b)接收第二多个块中的块的第二有效位。第二有效位可指示第二多个块中的块的高速缓存的数据的有效性。
在框2306处,方法2300包含由用于第一高速缓存集合的第一逻辑单元(例如,图21中所描绘的逻辑单元2104a)确定第一多个块中的块是命中还是未中。在框2307处,方法2300以由第一逻辑单元根据确定输出第一命中或未中结果继续。此外,在框2308处,方法2300包含由用于第二高速缓存集合的第二逻辑单元(例如,逻辑单元2104b)确定第二多个块中的块是命中还是未中。在框处2309,方法2300以由第二逻辑单元根据确定输出第二命中或未中结果继续。
在框2310处,方法2300以由第一多路复用器(例如,图21中所描绘的多路复用器2110a)根据由第一PLSM寄存器接收到的第一有效位将第一命中或未中结果或第二命中或未中结果输出到处理器继续。在一些实施例中,当由第一PLSM寄存器接收到的第一有效位指示有效时,第一多路复用器输出第一命中或未中结果,且当由第一PLSM寄存器接收到的第一有效位指示无效时,第一多路复用器输出第二命中或未中结果。
并且,在框2312处,由第二多路复用器(例如,多路复用器2110b)根据由第二PLSM寄存器接收到的第二有效位将第二命中或未中结果或第一命中或未中结果输出到处理器。在一些实施例中,当由第二PLSM寄存器接收到的第二有效位指示有效时,第二多路复用器输出第二命中或未中结果。并且,当由第二PLSM寄存器接收到的第二有效位指示无效时,第二多路复用器输出第一命中或未中结果。
一些实施例可包含具有配置成执行主线程和推测性线程的处理电路系统的中央处理单元。中央处理单元还可包含或连接到配置成耦合在主存储器与处理电路系统之间的高速缓存系统的第一高速缓存集合,所述第一高速缓存集合具有用于主线程的第一多个块。第一多个块中的每一块可包含高速缓存的数据、第一有效位和包含索引和标签的块地址。处理电路系统(单独地或结合高速缓存控制器)可配置成当推测性线程的推测成功时将每一第一有效位从指示有效改变为指示无效,使得第一多个块变成可针对推测性线程存取且针对主线程受阻。中央处理单元还可包含或连接到配置成耦合在主存储器与处理电路系统之间的高速缓存系统的第二高速缓存集合,所述第二高速缓存集合包含用于推测性线程的第二多个块。第二多个块中的每一块可包含高速缓存的数据、第二有效位和具有索引和标签的块地址。处理电路系统(单独地或结合高速缓存控制器)可配置成当推测性线程的推测成功时将每一第二有效位从指示无效改变为指示有效,使得第二多个块变成可针对主线程存取且针对推测性线程受阻。并且,第一多个块中的块通过具有与第二多个块中的相应块相同的块地址而对应于第二多个块中的相应块。
本文中所公开的技术至少可应用于处理器与存储器分离且处理器经由通信总线和/或计算机网络与存储器和存储装置通信的计算机系统。另外,本文中所公开的技术可应用于处理能力集成于存储器/存储装置内的计算机系统。举例来说,包含典型处理器的执行单元和/或寄存器的处理电路可在存储器媒体的集成电路和/或集成电路封装内实施以进行存储器装置内的处理。因此,如上文所论述且在图中所说明的处理器(例如,参见处理器201、401、601和1001)未必是冯诺伊曼(von Neumann)体系结构中的中央处理单元。处理器可为集成于存储器内以克服冯诺伊曼瓶颈的单元,所述瓶颈由于由数据在根据冯诺伊曼体系结构单独配置的中央处理单元与存储器之间移动时的时延造成的处理量的限制而限制计算性能。
本公开的描述和附图是说明性的,且不应理解为限制性的。描述了许多特定细节以提供透彻理解。然而,在某些情况下,未对公知的或常规的细节进行描述,以避免混模糊描述。本公开中对一个实施例或一实施例的参考未必参考同一实施例;并且,这种参考意味着至少一个实施例。
在前述说明书中,本公开已参考其具体示范性实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中所阐述的较广泛精神和范围的情况下对其作出各种修改。因此,应在说明性意义上而非限制性意义上看待本说明书和附图。
Claims (20)
1.一种高速缓存系统,其包括:
多个高速缓存集合;
与来自处理器的执行类型信号线的连接,所述执行类型信号线识别执行类型;
与来自所述处理器的信号线的连接,所述信号线识别推测性执行的状态;
逻辑电路,其配置成:
当所述执行类型为指示由所述处理器对指令的非推测性执行的第一类型时,分配所述多个高速缓存集合的第一子集以用于在高速缓存操作中高速缓存;
当所述执行类型从所述第一类型改变为指示由所述处理器对指令的推测性执行的第二类型时,分配所述多个高速缓存集合的第二子集以用于在高速缓存操作中高速缓存;
当所述执行类型为所述第二类型时,保留至少一个高速缓存集合;
当所述执行类型从所述第二类型改变为所述第一类型且推测性执行的所述状态指示将接受推测性执行的结果时:
当所述执行类型为所述第一类型时,重新配置所述第二子集以用于在高速缓存操作中高速缓存;以及
当所述执行类型从所述第一类型改变为所述第二类型时,分配所述至少一个高速缓存集合以用于在高速缓存操作中高速缓存。
2.根据权利要求1所述的高速缓存系统,其中所述逻辑电路配置成:当所述执行类型为所述第二类型且所述至少一个高速缓存集合包含所述多个高速缓存集合中的最少使用的高速缓存集合时,保留所述至少一个高速缓存集合。
3.根据权利要求1所述的高速缓存系统,其包括:
一或多个映射表,其映射所述多个高速缓存集合;且
其中所述逻辑电路配置成根据所述一或多个映射表分配以及重新配置所述多个高速缓存集合的子集。
4.根据权利要求1所述的高速缓存系统,其包括:
多个高速缓存集合寄存器,其分别与所述多个高速缓存集合相关联;且
其中所述逻辑电路配置成根据所述多个高速缓存集合寄存器分配以及重新配置所述多个高速缓存集合的子集。
5.根据权利要求4所述的高速缓存系统,
其中所述多个高速缓存集合的所述第一子集包括第一高速缓存集合,所述多个高速缓存集合的所述第二子集包括第二高速缓存集合,且所述至少一个高速缓存集合包括第三高速缓存集合;且
其中所述多个高速缓存集合寄存器包括:
第一高速缓存集合寄存器,其与所述第一高速缓存集合相关联,所述第一高速缓存集合寄存器配置成最初存储第一高速缓存集合索引,使得所述第一高速缓存集合用于非推测性执行;
第二高速缓存集合寄存器,其与所述第二高速缓存集合相关联,所述第二高速缓存集合寄存器配置成最初存储第二高速缓存集合索引,使得所述第二高速缓存集合用于推测性执行;以及
第三高速缓存集合寄存器,其与所述第三高速缓存集合相关联,所述第三高速缓存集合寄存器配置成最初存储第三高速缓存集合索引,使得所述第三高速缓存集合用作备用高速缓存集合。
6.根据权利要求5所述的高速缓存系统,其中所述逻辑电路配置成:
基于从来自处理器的地址总线接收到的存储器地址以及从来自所述处理器的识别执行类型的执行类型信号线接收到的推测性执行或非推测性执行的识别来产生集合索引;以及
确定所述集合索引是否与存储在所述第一高速缓存集合寄存器、所述第二高速缓存集合寄存器或所述第三高速缓存集合寄存器中的内容匹配。
7.根据权利要求6所述的高速缓存系统,其中当所述执行类型从所述第二类型改变为所述第一类型且推测性执行的所述状态指示将接受推测性执行的结果时,所述逻辑电路还配置成:
将所述第一高速缓存集合索引存储在所述第二高速缓存集合寄存器或与所述多个高速缓存集合的所述第二子集中的另一高速缓存集合相关联的另一高速缓存集合寄存器中,使得所述第二高速缓存集合或所述第二子集中的所述另一高速缓存集合用于非推测性执行。
8.根据权利要求7所述的高速缓存系统,其中当所述执行类型从所述第二类型改变为所述第一类型且推测性执行的所述状态指示将接受推测性执行的结果时,所述逻辑电路还配置成:
将所述第二高速缓存集合索引存储在所述第三高速缓存集合寄存器或与所述至少一个高速缓存集合中的另一高速缓存集合相关联的另一高速缓存集合寄存器中,使得所述第三高速缓存集合或所述至少一个高速缓存集合中的所述另一高速缓存集合用于推测性执行。
9.根据权利要求8所述的高速缓存系统,其中当所述执行类型从所述第二类型改变为所述第一类型且推测性执行的所述状态指示将接受推测性执行的结果时,所述逻辑电路还配置成:
将所述第三高速缓存集合索引存储在所述第一高速缓存集合寄存器或与所述多个高速缓存集合的所述第一子集中的另一高速缓存集合相关联的另一高速缓存集合寄存器中,使得所述第一高速缓存集合或所述第一子集中的所述另一高速缓存集合用作备用高速缓存集合。
10.一种高速缓存系统,其包括:
多个高速缓存集合,其包括高速缓存集合的第一子集、高速缓存集合的第二子集以及高速缓存集合的第三子集;
与来自处理器的执行类型信号线的连接,所述执行类型信号线识别执行类型;
与来自所述处理器的信号线的连接,所述信号线识别推测性执行的状态;
逻辑电路,其配置成:
当所述执行类型为指示由所述处理器对指令的非推测性执行的第一类型时,分配所述多个高速缓存集合的所述第一子集以用于在高速缓存操作中高速缓存;
当所述执行类型从所述第一类型改变为指示由所述处理器对指令的推测性执行的第二类型时,分配所述多个高速缓存集合的所述第二子集以用于在高速缓存操作中高速缓存;
当所述执行类型为所述第二类型时,保留所述多个高速缓存集合的所述第三子集;
当所述执行类型从所述第二类型改变为所述第一类型且推测性执行的所述状态指示将接受推测性执行的结果时:
当所述执行类型为所述第一类型时,重新配置所述第二子集以用于在高速缓存操作中高速缓存;以及
当所述执行类型从所述第一类型改变为所述第二类型时,分配所述第三子集以用于在高速缓存操作中高速缓存。
11.根据权利要求10所述的高速缓存系统,其中所述逻辑电路配置成:当所述执行类型为所述第二类型且所述多个高速缓存集合的所述第三子集为所述多个高速缓存集合中的最少使用的子集时,保留所述多个高速缓存集合的所述第三子集。
12.根据权利要求10所述的高速缓存系统,其包括:
一或多个映射表,其映射所述多个高速缓存集合;且
其中所述逻辑电路配置成根据所述一或多个映射表分配以及重新配置所述多个高速缓存集合的子集。
13.根据权利要求10所述的高速缓存系统,其包括:
多个高速缓存集合寄存器,其分别与所述多个高速缓存集合相关联;且
其中所述逻辑电路配置成根据所述多个高速缓存集合寄存器分配以及重新配置所述多个高速缓存集合的子集。
14.根据权利要求13所述的高速缓存系统,
其中所述多个高速缓存集合的所述第一子集包括第一高速缓存集合,所述多个高速缓存集合的所述第二子集包括第二高速缓存集合,且所述多个高速缓存集合的所述第三子集包括第三高速缓存集合;且
其中所述多个高速缓存集合寄存器包括:
第一高速缓存集合寄存器,其与所述第一高速缓存集合相关联,所述第一高速缓存集合寄存器配置成最初存储第一高速缓存集合索引,使得所述第一高速缓存集合用于非推测性执行;
第二高速缓存集合寄存器,其与所述第二高速缓存集合相关联,所述第二高速缓存集合寄存器配置成最初存储第二高速缓存集合索引,使得所述第二高速缓存集合用于推测性执行;以及
第三高速缓存集合寄存器,其与所述第三高速缓存集合相关联,所述第三高速缓存集合寄存器配置成最初存储第三高速缓存集合索引,使得所述第三高速缓存集合用作备用高速缓存集合。
15.根据权利要求14所述的高速缓存系统,其中所述逻辑电路配置成:
基于从来自处理器的地址总线接收到的存储器地址以及从来自所述处理器的识别执行类型的执行类型信号线接收到的推测性执行或非推测性执行的识别来产生集合索引;以及
确定所述集合索引是否与存储在所述第一高速缓存集合寄存器、所述第二高速缓存集合寄存器或所述第三高速缓存集合寄存器中的内容匹配。
16.根据权利要求15所述的高速缓存系统,其中当所述执行类型从所述第二类型改变为所述第一类型且推测性执行的所述状态指示将接受推测性执行的结果时,所述逻辑电路还配置成:
将所述第一高速缓存集合索引存储在所述第二高速缓存集合寄存器或与所述多个高速缓存集合的所述第二子集中的另一高速缓存集合相关联的另一高速缓存集合寄存器中,使得所述第二高速缓存集合或所述第二子集中的所述另一高速缓存集合用于非推测性执行。
17.根据权利要求16所述的高速缓存系统,其中当所述执行类型从所述第二类型改变为所述第一类型且推测性执行的所述状态指示将接受推测性执行的结果时,所述逻辑电路还配置成:
将所述第二高速缓存集合索引存储在所述第三高速缓存集合寄存器或与所述多个高速缓存集合的所述第三子集中的另一高速缓存集合相关联的另一高速缓存集合寄存器中,使得所述第三高速缓存集合或所述第三子集中的所述另一高速缓存集合用于推测性执行。
18.根据权利要求17所述的高速缓存系统,其中当所述执行类型从所述第二类型改变为所述第一类型且推测性执行的所述状态指示将接受推测性执行的结果时,所述逻辑电路还配置成:
将所述第三高速缓存集合索引存储在所述第一高速缓存集合寄存器或与所述多个高速缓存集合的所述第一子集中的另一高速缓存集合相关联的另一高速缓存集合寄存器中,使得所述第一高速缓存集合或所述第一子集中的所述另一高速缓存集合用作备用高速缓存集合。
19.一种高速缓存系统,其包括:
多个高速缓存,其包括第一高速缓存、第二高速缓存以及第三高速缓存;
与来自处理器的执行类型信号线的连接,所述执行类型信号线识别执行类型;
与来自所述处理器的信号线的连接,所述信号线识别推测性执行的状态;
逻辑电路,其配置成:
当所述执行类型为指示由所述处理器对指令的非推测性执行的第一类型时,分配所述第一高速缓存以用于在高速缓存操作中高速缓存;
当所述执行类型从所述第一类型改变为指示由所述处理器对指令的推测性执行的第二类型时,分配所述第二高速缓存以用于在高速缓存操作中高速缓存;
当所述执行类型为所述第二类型时,保留所述第三高速缓存;
当所述执行类型从所述第二类型改变为所述第一类型且推测性执行的所述状态指示将接受推测性执行的结果时:
当所述执行类型为所述第一类型时,重新配置所述第二高速缓存以用于在高速缓存操作中高速缓存;以及
当所述执行类型从所述第一类型改变为所述第二类型时,分配所述第三高速缓存以用于在高速缓存操作中高速缓存。
20.根据权利要求19所述的高速缓存系统,其中所述逻辑电路配置成:当所述执行类型为所述第二类型且所述第三高速缓存为所述高速缓存系统中的最少使用的高速缓存时,保留所述第三高速缓存。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/528,483 | 2019-07-31 | ||
US16/528,483 US11010288B2 (en) | 2019-07-31 | 2019-07-31 | 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 |
PCT/US2020/042853 WO2021021490A1 (en) | 2019-07-31 | 2020-07-21 | Spare cache set to accelerate speculative execution |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114008581A CN114008581A (zh) | 2022-02-01 |
CN114008581B true CN114008581B (zh) | 2024-04-02 |
Family
ID=74230069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080046072.3A Active CN114008581B (zh) | 2019-07-31 | 2020-07-21 | 用以加速推测性执行的备用高速缓存集合 |
Country Status (5)
Country | Link |
---|---|
US (3) | US11010288B2 (zh) |
EP (1) | EP4004746A4 (zh) |
KR (1) | KR20220024955A (zh) |
CN (1) | CN114008581B (zh) |
WO (1) | WO2021021490A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
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 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4371927A (en) * | 1977-11-22 | 1983-02-01 | Honeywell Information Systems Inc. | Data processing system programmable pre-read capability |
CN1397880A (zh) * | 2001-05-04 | 2003-02-19 | 智慧第一公司 | 附有第二预测装置的假想分支目标地址高速缓存 |
CN102138129A (zh) * | 2008-09-05 | 2011-07-27 | 飞思卡尔半导体公司 | 用于数据处理系统中的统一高速缓存的错误检测方案 |
Family Cites Families (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4646233A (en) | 1984-06-20 | 1987-02-24 | Weatherford James R | Physical cache unit for computer |
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 |
US5822755A (en) | 1996-01-25 | 1998-10-13 | International Business Machines Corporation | Dual usage memory selectively behaving as a victim cache for L1 cache or as a tag array for L2 cache |
US6490658B1 (en) | 1997-06-23 | 2002-12-03 | Sun Microsystems, Inc. | Data prefetch technique using prefetch cache, micro-TLB, and history file |
US6405287B1 (en) | 1999-11-17 | 2002-06-11 | Hewlett-Packard Company | Cache line replacement using cache status to bias way selection |
US6604171B1 (en) | 2000-09-29 | 2003-08-05 | Emc Corporation | Managing a cache memory |
US6665776B2 (en) * | 2001-01-04 | 2003-12-16 | Hewlett-Packard Development Company L.P. | Apparatus and method for speculative prefetching after data cache misses |
US6754776B2 (en) | 2001-05-17 | 2004-06-22 | Fujitsu Limited | Method and system for logical partitioning of cache memory structures in a partitoned computer system |
US6622211B2 (en) | 2001-08-15 | 2003-09-16 | Ip-First, L.L.C. | Virtual set cache that redirects store data to correct virtual set to avoid virtual set store miss penalty |
US7315921B2 (en) | 2002-02-19 | 2008-01-01 | Ip-First, Llc | Apparatus and method for selective memory attribute control |
US7657880B2 (en) * | 2003-01-31 | 2010-02-02 | Intel Corporation | Safe store for speculative helper threads |
US7216202B1 (en) * | 2003-02-25 | 2007-05-08 | Sun Microsystems, Inc. | Method and apparatus for supporting one or more servers on a single semiconductor chip |
US7139909B2 (en) | 2003-10-16 | 2006-11-21 | International Business Machines Corporation | Technique for system initial program load or boot-up of electronic devices and systems |
US7124254B2 (en) | 2004-05-05 | 2006-10-17 | Sun Microsystems, Inc. | Method and structure for monitoring pollution and prefetches due to speculative accesses |
JP4753549B2 (ja) | 2004-05-31 | 2011-08-24 | パナソニック株式会社 | キャッシュメモリおよびシステム |
US7277989B2 (en) | 2004-06-22 | 2007-10-02 | Sun Microsystems, Inc. | Selectively performing fetches for store operations during speculative execution |
US20070083783A1 (en) | 2005-08-05 | 2007-04-12 | Toru Ishihara | Reducing power consumption at a cache |
US8024522B1 (en) | 2005-09-28 | 2011-09-20 | Oracle America, Inc. | Memory ordering queue/versioning cache circuit |
US20070094664A1 (en) | 2005-10-21 | 2007-04-26 | Kimming So | Programmable priority for concurrent multi-threaded processors |
US7496771B2 (en) | 2005-11-15 | 2009-02-24 | Mips Technologies, Inc. | Processor accessing a scratch pad on-demand to reduce power consumption |
US7350027B2 (en) | 2006-02-10 | 2008-03-25 | International Business Machines Corporation | Architectural support for thread level speculative execution |
US7600078B1 (en) * | 2006-03-29 | 2009-10-06 | Intel Corporation | Speculatively performing read transactions |
US8370609B1 (en) | 2006-09-27 | 2013-02-05 | Oracle America, Inc. | Data cache rollbacks for failed speculative traces with memory operations |
US7966457B2 (en) | 2006-12-15 | 2011-06-21 | Microchip Technology Incorporated | Configurable cache for a microprocessor |
US7676636B2 (en) | 2007-07-10 | 2010-03-09 | Sun Microsystems, Inc. | Method and apparatus for implementing virtual transactional memory using cache line marking |
US7925867B2 (en) | 2008-01-23 | 2011-04-12 | Arm Limited | Pre-decode checking for pre-decoded instructions that cross cache line boundaries |
JP5439808B2 (ja) | 2008-12-25 | 2014-03-12 | 富士通セミコンダクター株式会社 | 複数バスを有するシステムlsi |
US8521961B2 (en) | 2009-08-20 | 2013-08-27 | International Business Machines Corporation | Checkpointing in speculative versioning caches |
US8521962B2 (en) | 2009-09-01 | 2013-08-27 | Qualcomm Incorporated | Managing counter saturation in a filter |
US8868837B2 (en) | 2010-01-15 | 2014-10-21 | International Business Machines Corporation | Cache directory lookup reader set encoding for partial cache line speculation support |
CN102662868B (zh) | 2012-05-02 | 2015-08-19 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
KR101983833B1 (ko) | 2012-06-26 | 2019-09-04 | 삼성전자주식회사 | 공유된 캐쉬들을 제공하는 방법 및 장치 |
US9395984B2 (en) | 2012-09-12 | 2016-07-19 | Qualcomm Incorporated | Swapping branch direction history(ies) in response to a branch prediction table swap instruction(s), and related systems and methods |
ES2546072T3 (es) | 2012-09-14 | 2015-09-18 | Barcelona Supercomputing Center-Centro Nacional De Supercomputación | Dispositivo para controlar el acceso a una estructura de memoria caché |
US9424046B2 (en) | 2012-10-11 | 2016-08-23 | Soft Machines Inc. | Systems and methods for load canceling in a processor that is connected to an external interconnect fabric |
US9575890B2 (en) | 2014-02-27 | 2017-02-21 | International Business Machines Corporation | Supporting atomic accumulation with an addressable accumulator |
US10089238B2 (en) | 2014-07-17 | 2018-10-02 | Qualcomm Incorporated | Method and apparatus for a shared cache with dynamic partitioning |
US9612970B2 (en) | 2014-07-17 | 2017-04-04 | Qualcomm Incorporated | Method and apparatus for flexible cache partitioning by sets and ways into component caches |
US20160055004A1 (en) | 2014-08-21 | 2016-02-25 | Edward T. Grochowski | Method and apparatus for non-speculative fetch and execution of control-dependent blocks |
US9658963B2 (en) | 2014-12-23 | 2017-05-23 | Intel Corporation | Speculative reads in buffered memory |
US10108467B2 (en) | 2015-04-24 | 2018-10-23 | Nxp Usa, Inc. | Data processing system with speculative fetching |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10002076B2 (en) | 2015-09-29 | 2018-06-19 | Nxp Usa, Inc. | Shared cache protocol for parallel search and replacement |
US20170091111A1 (en) | 2015-09-30 | 2017-03-30 | International Business Machines Corporation | Configurable cache architecture |
US10152322B2 (en) | 2015-11-05 | 2018-12-11 | International Business Machines Corporation | Memory move instruction sequence including a stream of copy-type and paste-type instructions |
US10042580B2 (en) | 2015-11-05 | 2018-08-07 | International Business Machines Corporation | Speculatively performing memory move requests with respect to a barrier |
US10067713B2 (en) | 2015-11-05 | 2018-09-04 | International Business Machines Corporation | Efficient enforcement of barriers with respect to memory move sequences |
US10140052B2 (en) | 2015-11-05 | 2018-11-27 | International Business Machines Corporation | Memory access in a data processing system utilizing copy and paste instructions |
GB2546731B (en) | 2016-01-20 | 2019-02-20 | Advanced Risc Mach Ltd | Recording set indicator |
US10733091B2 (en) * | 2016-05-03 | 2020-08-04 | International Business Machines Corporation | Read and write sets for ranges of instructions of transactions |
US10162758B2 (en) | 2016-12-09 | 2018-12-25 | Intel Corporation | Opportunistic increase of ways in memory-side cache |
US10324726B1 (en) | 2017-02-10 | 2019-06-18 | Apple Inc. | Providing instruction characteristics to graphics scheduling circuitry based on decoded instructions |
US10642744B2 (en) | 2017-06-28 | 2020-05-05 | Nvidia Corporation | Memory type which is cacheable yet inaccessible by speculative instructions |
US10229061B2 (en) | 2017-07-14 | 2019-03-12 | International Business Machines Corporation | Method and arrangement for saving cache power |
GB2570110B (en) * | 2018-01-10 | 2020-04-15 | Advanced Risc Mach Ltd | Speculative cache storage region |
US10394716B1 (en) * | 2018-04-06 | 2019-08-27 | Arm Limited | Apparatus and method for controlling allocation of data into a cache storage |
US20190332384A1 (en) | 2018-04-30 | 2019-10-31 | Hewlett Packard Enterprise Development Lp | Processor architecture with speculative bits to prevent cache vulnerability |
US10949210B2 (en) | 2018-05-02 | 2021-03-16 | Micron Technology, Inc. | Shadow cache for securing conditional speculative instruction execution |
US11481221B2 (en) | 2018-05-02 | 2022-10-25 | Micron Technology, Inc. | Separate branch target buffers for different levels of calls |
US11888710B2 (en) | 2018-09-25 | 2024-01-30 | Intel Corporation | Technologies for managing cache quality of service |
US11216556B2 (en) * | 2018-12-17 | 2022-01-04 | Intel Corporation | Side channel attack prevention by maintaining architectural state consistency |
US11164496B2 (en) | 2019-01-04 | 2021-11-02 | Channel One Holdings Inc. | Interrupt-free multiple buffering methods and systems |
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 |
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 |
US10915326B1 (en) | 2019-07-31 | 2021-02-09 | Micron Technology, Inc. | Cache systems and circuits for syncing caches or cache sets |
US11194582B2 (en) | 2019-07-31 | 2021-12-07 | Micron Technology, Inc. | Cache systems for main and speculative threads of processors |
US11048636B2 (en) | 2019-07-31 | 2021-06-29 | Micron Technology, Inc. | Cache with set associativity having data defined cache sets |
-
2019
- 2019-07-31 US US16/528,483 patent/US11010288B2/en active Active
-
2020
- 2020-07-21 WO PCT/US2020/042853 patent/WO2021021490A1/en unknown
- 2020-07-21 KR KR1020227002555A patent/KR20220024955A/ko active IP Right Grant
- 2020-07-21 EP EP20846588.0A patent/EP4004746A4/en active Pending
- 2020-07-21 CN CN202080046072.3A patent/CN114008581B/zh active Active
-
2021
- 2021-05-07 US US17/315,076 patent/US11561903B2/en active Active
-
2022
- 2022-11-30 US US18/060,163 patent/US20230103438A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4371927A (en) * | 1977-11-22 | 1983-02-01 | Honeywell Information Systems Inc. | Data processing system programmable pre-read capability |
CN1397880A (zh) * | 2001-05-04 | 2003-02-19 | 智慧第一公司 | 附有第二预测装置的假想分支目标地址高速缓存 |
CN102138129A (zh) * | 2008-09-05 | 2011-07-27 | 飞思卡尔半导体公司 | 用于数据处理系统中的统一高速缓存的错误检测方案 |
Also Published As
Publication number | Publication date |
---|---|
EP4004746A1 (en) | 2022-06-01 |
US11561903B2 (en) | 2023-01-24 |
US11010288B2 (en) | 2021-05-18 |
WO2021021490A1 (en) | 2021-02-04 |
EP4004746A4 (en) | 2023-08-23 |
US20210263843A1 (en) | 2021-08-26 |
KR20220024955A (ko) | 2022-03-03 |
CN114008581A (zh) | 2022-02-01 |
US20230103438A1 (en) | 2023-04-06 |
US20210034367A1 (en) | 2021-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114008581B (zh) | 用以加速推测性执行的备用高速缓存集合 | |
CN114041125A (zh) | 具有数据定义高速缓存集合的带有集合关联性的高速缓存 | |
CN113994320A (zh) | 用于推测性和普通执行的扩展标签 | |
CN114026546A (zh) | 用于使高速缓存或高速缓存集合同步的高速缓存系统和电路 | |
CN114026547A (zh) | 用于推测性和普通执行的数据定义高速缓存 | |
CN114041124A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |