CN105814548A - 具有使用不同编索引方案的主高速缓存器和溢出高速缓存器的高速缓存器系统 - Google Patents
具有使用不同编索引方案的主高速缓存器和溢出高速缓存器的高速缓存器系统 Download PDFInfo
- Publication number
- CN105814548A CN105814548A CN201480067459.1A CN201480067459A CN105814548A CN 105814548 A CN105814548 A CN 105814548A CN 201480067459 A CN201480067459 A CN 201480067459A CN 105814548 A CN105814548 A CN 105814548A
- Authority
- CN
- China
- Prior art keywords
- cache memory
- hash
- index
- address
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- 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/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
高速缓冲存储器系统包括使用搜索地址共同进行搜索的主高速缓存器和溢出高速缓存器。溢出高速缓存器用作主高速缓存器所用的驱逐阵列。使用搜索地址的位来对主高速缓存器进行寻址,并且利用应用于搜索地址的位的散列函数所生成的散列索引来对溢出高速缓存器进行寻址。散列函数用于使从主高速缓存器所驱逐的丢弃者分散至溢出高速缓存器的不同组,从而提高整体高速缓存利用率。可以包括用以进行散列函数的散列生成器。可以包括用以存储主高速缓存器中的有效条目的散列索引的散列表。高速缓冲存储器系统可用于实现微处理器所用的转译后备缓冲器。
Description
相关申请的交叉引用
本申请要求2014年7月14日提交的美国临时申请序列号62/024,020的优先权,在此通过引用包含其全部内容以用于所有的目的和用途。
技术领域
本发明通常涉及微处理器高速缓存器系统,并且更特别地涉及具有使用不同的编索引方案的主高速缓存器和溢出高速缓存器的高速缓存器系统。
背景技术
现代微处理器包括用于减少存储器访问延迟并且提高整体性能的存储器高速缓存器系统。系统存储器位于微处理器的外部并且经由系统总线等访问该系统存储器,使得系统存储器访问相对较慢。通常,高速缓存器是用于以透明方式存储根据先前请求从系统存储器中检索到的数据、使得将来针对相同数据的请求可以更快检索的更小且更快速的本地存储器组件。高速缓存器系统自身通常是以具有多个高速缓存级的层级方式配置成的,其中这多个高速缓存级诸如包括更小且更快速的第一级(L1)高速缓冲存储器和略大且略慢的第二级(L2)高速缓冲存储器等。尽管可以设置附加的级,但由于附加的级以相似的方式相对于彼此进行工作、并且由于本公开主要关注L1高速缓存器的结构,因此没有进一步论述这些附加的级。
在所请求的数据位于L1高速缓存器中从而引起高速缓存器命中(cachehit)的情况下,在延迟最小的情况下检索到该数据。否则,在L1高速缓存器中发生高速缓存未命中(cachemiss)并且在L2高速缓存器中搜索同一数据。L2高速缓存器是以与L1高速缓存器分开的方式进行搜索的单独的高速缓存器阵列。此外,L1高速缓存器具有的组(set)和/或路(way)更少,与L2高速缓存器相比通常更小且更快速。在所请求的数据位于L2高速缓存器中、从而调用L2高速缓存器中的高速缓存器命中的情况下,与L1高速缓存器相比,在延迟增加的状态下检索到数据。否则,如果在L2高速缓存器中发生高速缓存未命中,则在与该高速缓冲存储器相比延迟明显变大的状态下从更高的高速缓存级和/或系统存储器检索数据。
将来自L2高速缓存器或系统存储器的所检索到的数据存储在L1高速缓存器中。L2高速缓存器用作将从L1高速缓存器驱逐的条目存储在L2高速缓存器中的“驱逐(eviction)”阵列。由于L1高速缓存器是有限的资源,因此新检索到的数据可以移置或驱逐L1高速缓存器中否则将为有效的条目,该条目被称为“丢弃者(victim)”。如此将L1高速缓存器的丢弃者存储在L2高速缓存器中,并且将L2高速缓存器的任何丢弃者(在存在的情况下)存储在更高级中、或者丢弃。可以实现诸如本领域普通技术人员所理解的最近最少使用(LRU)等的各种替换策略。
许多现代微处理器还包括虚拟存储器能力、并且特别是存储器分页机制。如本领域内众所周知的,操作系统创建该操作系统存储在系统存储器中的用于将虚拟地址转译成物理地址的页表。诸如根据如2006年6月出版的IA-32IntelArchitectureSoftwareDeveloper’sManual,Volume3A:SystemProgrammingGuide,Part1中的第三章所述的x86架构处理器所采用的众所周知的方案等,这些页表可以是以层级方式配置的,其中上述文献的全部内容通过引用包含于此以用于所有的目的和用途。特别地,页表包括存储物理存储器页的物理页地址和物理存储器页的属性的各页表条目(PTE)。用于获取虚拟存储器页地址并且使用该虚拟存储器页地址遍历页表层级体系以最终获得与该虚拟地址相关联的PTE、从而使虚拟地址转译成物理地址的处理通常被称为表查找(tablewalk)。
物理系统存储器访问的延迟相对较慢,使得表查找由于涉及潜在地向物理存储器的多个访问,因此是相对昂贵的操作。为了避免引发与表遍历相关联的时间,处理器通常包括对虚拟向物理的地址转译进行高速缓存的转译后备缓冲器(TLB)高速缓存方案。TLB的大小和结构影响性能。典型的TLB结构可以包括L1TLB和相应的L2TLB。各TLB通常被配置为被组织为多个组(或行)的阵列,其中各组具有多个路(或列)。与大多数高速缓存方案相同,L1TLB具有的组和路更少,与L2TLB相比通常更小,由此也更快速。尽管更小且更快速,但期望在不会影响性能的情况下进一步缩小L1TLB的大小。
这里参考TLB高速缓存方案等来说明本发明,其中应当理解,原理和技术等同地适用于任何类型的微处理器高速缓存方案。
发明内容
根据一个实施例的高速缓冲存储器系统包括使用搜索地址共同进行搜索的主高速缓存器和溢出高速缓存器。溢出高速缓存器用作针对主高速缓存器的驱逐阵列。使用搜索地址的位来对主高速缓存器进行寻址,并且利用应用于搜索地址的位的散列函数所生成的散列索引来对溢出高速缓存器进行寻址。散列函数进行操作以使得从主高速缓存器所驱逐的丢弃者分散至溢出高速缓存器的不同组,从而提高整体高速缓存利用率。
可以使用散列生成器来执行散列函数以提供散列索引。可以将从主高速缓存器驱逐的标签提供至散列生成器,以生成用于将所驱逐的标签存储在溢出高速缓存器中的丢弃者散列索引。可选地,散列表可以存储针对主高速缓存器内的有效条目的散列索引。在这种情况下,作为未命中的结果而从外部位置检索到的地址包括索引和主高速缓存器中的利用该索引进行寻址得到的位置处所存储的标签。将所检索到的地址提供至用于生成散列索引的散列生成器,其中该散列索引存储在散列表中的利用所检索到地址的索引寻址得到的位置处。如果存在从主高速缓存器驱逐的丢弃者,则可以将该丢弃者与主索引组合从而形成丢弃者地址,并且将相应的丢弃者散列从散列表驱逐。将丢弃者地址存储在溢出高速缓存器中的利用丢弃者散列进行寻址得到的位置。
高速缓冲存储器系统可用于实现针对微处理器的1级(L1)转译后备缓冲器(TLB)高速缓存器。搜索地址可以是到系统存储器的页的与物理地址相对应的虚拟地址。微处理器还可以包括2级(L2)TLB和表查找引擎。L1TLB可被配置为与多个组和路的组关联。对于溢出高速缓存器使用不同的编索引方案增加了TLB的组的利用率并且使得能够缩小整体L1TLB高速缓存器的大小。
根据一个实施例对数据进行高速缓存的方法包括以下步骤:使用虚拟地址的第一组的位作为主索引;根据所述虚拟地址的第二组的位来生成散列索引;使用所述主索引来在主高速缓存器内进行搜索;以及在所述主高速缓存器内进行搜索的同时,还使用所述散列索引来在所述主高速缓存器的溢出高速缓存器内进行搜索。
附图说明
将针对以下的说明和附图来更好地理解本发明的益处、特征和优点,其中:
图1是包括根据本发明的实施例所实现的高速缓冲存储器系统的微处理器的简化框图;
图2是示出图1的微处理器的前端管道、保留站、MOB的一部分和ROB之间的接口的更详细框图;
图3是用于提供虚拟地址(VA)并且检索图1的微处理器的系统存储器中的所请求数据位置的相应物理地址(PA)的MOB的一部分的简化框图;
图4是示出根据本发明的一个实施例所实现的图3的L1TLB的框图;
图5是示出包括16组4路(16×4)主L1.0阵列和16组2路(16×2)溢出L1.5阵列的更具体实施例的图3的L1TLB的框图;
图6是根据一个实施例使用图5的L1TLB结构的驱逐处理的框图;以及
图7是根据另一实施例使用图5的L1TLB结构的驱逐处理的框图。
具体实施方式
期望在不会实质影响性能的情况下减小L1TLB高速缓存器阵列的大小。本发明人已意识到与传统的L1TLB结构相关联的低效率。例如,大多数应用程序的代码不能使L1TLB的利用率最大化,往往使得一些组被过度利用而其它组未得到充分利用。
因此,本发明人开发了提高高速缓冲存储器利用率的、具有使用不同的编索引方案的主高速缓存器和溢出高速缓存器的高速缓存器系统。该高速缓冲存储系统包括溢出高速缓存器(或L1.5高速缓存器),其中该溢出高速缓存器用作高速缓存器搜索期间主高速缓存器阵列(或L1.0高速缓存器)的扩展,而且还用作针对L1.0高速缓存器的驱逐阵列。此外,组合后的高速缓存器结构在实现相同性能的同时,与传统的L1高速缓存器结构相比大大变小。溢出高速缓存器阵列或L1.5高速缓存器与正常驱逐阵列(诸如L2高速缓存器等)的不同之处在于,该溢出高速缓存器阵列没有使用与主L1.0高速缓存器相同的编索引功能。作为代替,该溢出高速缓存器阵列使用改变所驱逐的条目或丢弃者的局部性的散列编索引功能,使得该溢出高速缓存器阵列与更大的传统配置的L1高速缓存器相比产生保留改善。例如,使从L1.0主高速缓存器的给定组中的路所驱逐的条目分散至L1.5溢出高速缓存器的不同组,以提高这些组的利用率并且改善对所驱逐的条目的保留。依赖于散列函数,针对给定的正常地址索引,可以允许远远多于组合数量的路。
如这里所述,TLB结构根据改进后的高速缓存器系统而被配置为包括溢出TLB(或L1.5TLB),其中该溢出TLB用作高速缓存器搜索期间主L1TLB(或L1.0TLB)的扩展,而且还用作L1.0TLB所用的驱逐阵列。组合后的TLB结构与传统的L1TLB结构相比,在实现相同的性能的同时大大变小。主L1.0TLB使用诸如传统的虚拟地址索引等的第一类型的索引,而溢出L1.5TLB阵列使用改变所驱逐的页的局部性的散列函数。组合后的TLB结构与更大的传统配置的L1TLB相比产生保留改善。尽管这里参考TLB高速缓存方案等来说明本发明,但应当理解,原理和技术等同地适用于任何类型的层级式微处理器高速缓存方案。
图1是包括根据本发明的实施例所实现的高速缓冲存储器系统的微处理器100的简化框图。微处理器100的宏架构可以是x86宏架构,其中在该x86宏架构中,微处理器100可以正确地执行被设计成在x86微处理器上执行的大多数应用程序。在获得了应用程序的预期结果的情况下,正确地执行了该应用程序。特别地,微处理器100执行x86指令集的指令并且包括x86用户可见的寄存器集。然而,本发明不限于x86架构,在本发明中,微处理器100可以是根据如本领域普通技术人员所知的任何可选架构。
在例示实施例中,微处理器100包括指令高速缓存器102、前端管道104、保留站106、执行单元108、存储器排序缓冲器(MOB)110、重排序缓冲器(ROB)112、2级(L2)高速缓存器114和用于连接并访问系统存储器118的总线接口单元(BIU)116。指令高速缓存器102对来自系统存储器118的程序指令进行高速缓存。前端管道104从指令高速缓存器102提取程序指令并且将这些程序指令解码成微指令以供微处理器100执行。前端管道104可以包括共同将宏指令解码并转译成一个或多个微指令的解码器(未示出)和转译器(未示出)。在一个实施例中,指令转译将微处理器100的宏指令集(诸如x86指令集架构等)的宏指令转译成微处理器100的微指令集架构的微指令。例如,可以将存储器访问指令解码成包括一个或多个加载微指令或存储微指令的微指令序列。本公开主要涉及加载操作和存储操作以及这里简单称为加载指令和存储指令的相应微指令。在其它实施例中,加载指令和存储指令可以是微处理器100的原生指令集的一部分。前端管道104还可以包括寄存器别名表RAT(未示出),其中该RAT针对各指令基于其程序顺序、其指定的操作数源和重命名信息来生成依赖信息。
前端管道106将解码后的指令及其关联的依赖信息调度到保留站106。保留站106包括保持从RAT接收到的指令和依赖信息的队列。保留站106还包括发出逻辑,其中该发出逻辑使来自队列的指令在准备好执行的情况下发出至执行单元108和MOB110。在消除了指令的所有依赖的情况下,该指令准备好被发出并执行。与调度指令相结合地,RAT向该指令分配ROB112中的条目。因而,将指令按程序顺序分配到ROB112中,其中该ROB112可被配置为循环队列以确保这些指令按程序顺序退出。RAT还将依赖信息提供至ROB112以存储在其中指令的条目中。在ROB112重放指令的情况下,ROB112在指令的重放期间将ROB条目中所存储的依赖信息提供至保留站106。
微处理器100是超标量,并且包括多个执行单元且能够在单个时钟周期内向执行单元发出多个指令。微处理器100还被配置为进行乱序执行。也就是说,保留站106可以不按由包括指令的程序指定的顺序发出指令。超标量乱序微处理器通常尝试维持相对较大未处理指令池,使得这些微处理器可以利用更大量的指令并行。微处理器100在确定知晓指令实际上是否将完成之前还可以进行指令的预测执行,在预测执行中该微处理器100执行指令或者至少进行该指令所规定的动作中的一部分。由于诸如错误预测分支指令和异常(中断、页故障、除零状况、一般保护错误等)等的各种原因,因而指令可能无法完成。尽管微处理器100可以以预测方式进行指令所规定的动作中的一部分,但该微处理器在确定知晓指令将完成之前不利用指令的结果更新系统的架构状态。
MOB110处理经由L2高速缓存器114和BIU116与系统存储器118的接口。BIU116使微处理器100连接至处理器总线(未示出),其中该处理器总线连接有系统存储器118和诸如系统芯片组等的其它装置。微处理器100上所运行的操作系统将页映射信息存储在系统存储器118中,其中如这里进一步所述,微处理器100针对该系统存储器118进行读取和写入以进行表查找。在保留站106发出指令时,执行单元108执行这些指令。在一个实施例中,执行单元108可以包括微处理器的诸如算术逻辑单元(ALU)等的所有执行单元。在例示实施例中,MOB110包含用于执行加载指令和存储指令的加载执行单元和存储执行单元,以如这里进一步所述访问系统存储器118。执行单元108在访问系统存储器118时与MOB110连接。
图2是示出前端管道104、保留站106、MOB110的一部分和ROB112之间的相互作用的更详细框图。在该结构中,MOB110通常进行工作以接收并执行加载指令和存储指令这两者。保留站106被示出为划分成加载保留站(RS)206和存储RS208。MOB110包括针对加载指令的加载队列(加载Q)210和加载管道212,并且还包括针对存储指令的存储管道214和存储Q216。通常,MOB110使用加载指令和存储指令所指定的源操作数来解析加载指令的加载地址并且解析存储指令的存储地址。操作数的源可以是架构寄存器(未示出)、常数和/或指令所指定的位移。MOB110还从数据高速缓存器中的所计算出的加载地址读取加载数据。MOB110还向数据高速缓存器中的所计算出的加载地址写入加载数据。
前端管道104具有按如下的程序顺序推入加载指令条目和存储指令条目的输出201,其中在该程序顺序中,将加载指令按顺序依次加载到加载Q210、加载RS206和ROB112。加载Q210存储系统中的所有活动加载指令。加载RS206对加载指令的执行进行调度,并且在“准备好”以供执行的情况下(诸如在加载指令的操作数可利用时等),加载RS206将加载指令经由输出203推入到加载管道212以供执行。在例示结构中,可以以乱序和预测方式进行加载指令。在加载指令完成的情况下,加载管道212将完成指示205提供至ROB112。如果出于任何原因、加载指令不能完成,则加载管道212向加载Q210发出未完成指示207,使得现在加载Q210控制未完成的加载指令的状态。在加载Q210判断为可以重放未完成的加载指令的情况下,该加载Q210将重放指示209发出至重新执行(重放)加载指令的加载管道212,但这次加载指令是从加载Q210所加载的。ROB112确保了指令按原始程序的顺序的有序退出。在已完成的加载指令准备好退出、意味着该加载指令是ROB112中按程序顺序的最早指令的情况下,ROB112向加载Q210发出退出指示211并且该加载指令从加载Q210有效地弹出。
将存储指令条目按程序顺序推入存储Q216、存储RS208和ROB112。存储Q216存储系统中的所有活动存储指令。存储RS208调度存储指令的执行,并且在“准备好”以供执行的情况下(诸如在存储指令的操作数可利用时等),存储RS208将存储指令经由输出213推入到存储管道214以供执行。尽管存储指令可以不按程序顺序来执行,但这些存储指令不是以预测方式提交的。存储指令具有执行阶段,其中在该执行阶段中,该存储指令生成其地址、进行异常检查、获得线路的所有权等,而这些操作可以是以预测方式或以乱序方式进行的。然后,存储指令具有提交阶段,其中在该提交阶段中,该存储指令实际上进行非预测或乱序方式的数据写入。存储指令和加载指令在被执行的情况下彼此比较。在存储指令完成的情况下,存储管道214将完成指示215提供至ROB112。如果出于任何原因、存储指令不能完成,则存储管道214向存储Q216发出未完成指示217,使得现在存储Q216控制未完成的存储指令的状态。在存储Q216判断为可以重放未完成的存储指令的情况下,该存储Q216将重放指示219发送至重新执行(重放)该存储指令的存储管道214,但这次存储指令是从存储Q216所加载的。在已完成的存储指令准备好退出的情况下,ROB112向存储Q216发出退出指示221并且该存储指令从存储Q216有效地弹出。
图3是用于提供虚拟地址(VA)并且检索系统存储器118中的所请求数据位置的相应物理地址(PA)的MOB110的一部分的简化框图。使用操作系统使给定处理可用的一组虚拟地址(还已知为“线性”地址等)来引用虚拟地址空间。加载管道212被示出为接收加载指令L_INS并且存储管道214被示出为接收存储指令S_INS,其中L_INS和S_INS这两者都是针对最终位于系统存储器118中的相应物理地址处的数据的存储器访问指令。响应于L_INS,加载管道212生成被示出为VAL的虚拟地址。同样,响应于S_INS,存储管道214生成被示出为VAS的虚拟地址。虚拟地址VAL和VAS通常可被称为搜索地址,其中这些搜索地址用于在高速缓冲存储器系统(例如,TLB高速缓存器系统)中搜索与搜索地址相对应的数据或其它信息(例如,与虚拟地址相对应的物理地址)。在例示结构中,MOB110包括对有限数量的虚拟地址的相应物理地址进行高速缓存的1级转译后备缓冲器(L1TLB)302。在命中的情况下,L1TLB302将相应的物理地址输出至请求装置。因而,如果VAL生成命中,则L1TLB302输出针对加载管道212的相应的物理地址PAL,并且如果VAS生成命中,则L1TLB302输出针对存储管道214的相应的物理地址PAS。
然后,加载管道212可以将所检索到的物理地址PAL应用于数据高速缓存器系统308以访问所请求的数据。高速缓存器系统308包括数据L1高速缓存器310,并且如果在该数据L1高速缓存器310中存储有与物理地址PAL相对应的数据(高速缓存器命中),则将被示出为DL的所检索到的数据提供至加载管道212。如果L1高速缓存器310发生未命中、使得所请求的数据DL没有存储在L1高速缓存器310中,则最终或者从L2高速缓存器114或者从系统存储器118检索到该数据。数据高速缓存器系统308还包括FILLQ312,其中该FILLQ312用于连接L2高速缓存器114以将高速缓存行加载到L2高速缓存器114中。数据高速缓存器系统308还包括探测Q314,其中该探测Q314维持L1高速缓存器310和L2高速缓存器114的高速缓存一致性。对于存储管道214而言,操作相同,其中存储管道214使用所检索到的物理地址PAS以将相应的数据DS经由数据高速缓存器系统308存储到存储器系统(L1、L2或系统存储器)中。没有进一步说明数据高速缓存器系统308以及L2高速缓存器114和系统存储器118相互作用的操作。然而,应当理解,本发明的原理可以以类推方式等同地应用于数据高速缓存器系统308。
L1TLB302是有限的资源,使得最初并且随后周期性地,没有将所请求的与虚拟地址相对应的物理地址存储在L1TLB302中。如果没有存储物理地址,则L1TLB302将“MISS(未命中)”指示连同相应的虚拟地址VA(VAL或VAS)一起设置向L2TLB304,以判断L2TLB304是否存储有与所提供的虚拟地址相对应的物理地址。尽管物理地址可能存储在L2TLB304内,然而该物理地址将表查找连同所提供的虚拟地址一起推入到表查找引擎306中(PUSH/VA)。表查找引擎306作为响应而发起表查找,以获得在L1TLB和L2TLB中未命中的虚拟地址VA的物理地址转译。L2TLB304更大且存储更多的条目,但与L1TLB302相比更慢。如果在L2TLB304内发现与虚拟地址VA相对应的被示出为PAL2的物理地址,则取消推入到表查找引擎306的相应表查找操作,并且将虚拟地址VA和相应的物理地址PAL2提供至L1TLB302以存储在该L1TLB302中。将指示提供回到诸如加载管道212(和/或加载Q210)或者存储管道214(和/或存储Q216)等的请求实体,使得使用相应的虚拟地址的后续请求允许L1TLB302提供相应的物理地址(例如,命中)。
如果在L2TLB304中请求也未命中,则表查询引擎306所进行的表查找处理最终完成并且将所检索到的被示出为PATW的物理地址(与虚拟地址VA相对应)返回提供至L1TLB302以存储在该L1TLB302中。在L1TLB304中发生未命中、使得物理地址由L2TLB304或表查找引擎306来提供的情况下,并且如果所检索到的物理地址驱逐了L2TLB30内的否则为有效的条目,则将所驱逐的条目或“丢弃者”存储在L2TLB中。L2TLB304的任何丢弃者简单地被推出,以有利于新获取到的物理地址。
向物理系统存储器118的各访问的延迟缓慢,使得可能涉及多个系统存储器118访问的表查找处理是相对昂贵的操作。如这里进一步所述,L1TLB302是以与传统的L1TLB结构相比提高性能的方式配置成的。在一个实施例中,L1TLB302的大小与相应的传统L1TLB相比由于物理存储位置较少因此更小,但如这里进一步所述,针对许多程序例程实现了相同的性能。
图4是示出根据本发明的一个实施例所实现的L1TLB302的框图。L1TLB302包括表示为L1.0TLB402的第一或主TLB和表示为L1.5TLB404的溢出TLB(其中,符号“1.0”和“1.5”用于区分彼此以及与整体L1TLB302区分开)。在一个实施例中,TLB402和404这两者都是包括多个组和路的组关联高速缓存器阵列,其中:L1.0TLB402是包括J个组(编索引为I0~IJ-1)和K个路(编索引为W0~WK-1)的J×K阵列,并且L1.5TLB是包括Y个组(编索引为I0~IY-1)和Z个路(编索引为W0~WZ-1)的Y×Z阵列;以及J、K、Y和Z各自均是大于1的整数。使用表示为VA[P]的到系统存储器118中所存储信息的“页”的虚拟地址来访问L1.0TLB402的各位置。“P”表示仅包括完整虚拟地址的足以对各页进行寻址的高位的信息的页。例如,如果信息的页的大小为212=4,096(4K),则丢弃低12位[11…0]以使得VA[P]仅包括其余的高位。
使用VA[P]地址的序列号较低的位“I”(仅高于完整虚拟地址的被丢弃的低位)作为索引VA[I]以对L1.0TLB402的所选择的组进行寻址。将针对L1.0TLB402的索引位数“I”确定为LOG2(J)=I。例如,如果L1.0TLB402具有16个组,则索引地址VA[I]是页地址VA[P]的最低4位。使用VA[P]地址的其余高位“T”作为标签值VA[T],以使用L1.0TLB402的一组比较器406与所选择的组中的各个路的标签值进行比较。这样,索引VA[I]选择L1.0TLB402中的条目的一组或行,并且利用比较器406将所选择的组的被示出为TA1.00、TA1.01、…、TA1.0K-1的K个路各自的所选择的标签值分别与标签值VA[T]进行比较,以确定相应集合的命中位H1.00、H1.01、…、H1.0K-1。
以不同的方式对L1.5TLB404编索引。将VA[P]提供至散列生成器408的输入,从而输出相应的散列索引H[L]。散列生成器408可以位于任何适当的位置。在一个实施例中,散列生成器408可以便利地位于L1TLB302内。在另一实施例中,加载管道212和存储管道214执行用于其它目的的散列函数,其中散列生成器408或其函数可以位于加载管道212和存储管道214这两者中。尽管VA[P]的所有位均可经过散列生成器408所进行的散列函数,但通常使用VA[P]的位中的子集来生成散列索引H[L]。尽管可以将作为VA[P]的最低位的索引VA[I]中的一个或多个位用于散列函数,但散列函数通常减少了大量位用于生成散列值,这使得可以排他或附加地使用高位。在一个实施例中,对于散列函数不使用VA[I]位以有利于VA[P]的所选择的高位。尽管可以根据VA[P]的单个位来推导散列索引H[L]的任何给定位,但通常使用VA[P]的两个或更多个位来开发散列索引H[L]的位其中之一。
散列函数可以是用于生成散列索引H[L]的任何已知的散列函数。在一个实施例中,例如,可以向VA[P]的所选择的位应用异或逻辑函数以生成H[L]索引的位。VA[P]的所选择的位和散列函数可被配置为优化从L1.0TLB402所驱逐的丢弃者向L1.5TLB404内的分散。针对L1.5TLB404的索引位数“L”确定为LOG2(Y)=L。例如,如果L1.5TLB404也具有16个组(即,J=Y),则散列地址H[L]包括4位(其中,L=I)。然而,注意,L1.5TLB404的组数Y可以不同于L1.0TLB402的组数J。
由于VA[P]的低位不直接用作向L1.5TLB404的索引、由此以与L1TLB402不同的方式对L1.5TLB404编索引,因此可以使用整个页地址VA[P]作为标签值,以使用L1.5TLB404的一组比较器410来与所选择的组中的各个路的标签值进行比较。这样,索引H[L]选择L1.5TLB404中的条目的一组或行,并且利用比较器410将所选择的组的被示出为TA1.50、TA1.51、…、TA1.5Z-1的Z个路各自的所选择的标签值与标签地址VA[P]进行比较,以确定命中位H1.50、H1.51、…、H1.5Z-1的相应集合。
将L1.0TLB402的命中位H1.00、H1.01、…、H1.0K-1提供至K输入逻辑OR门412的相应输入,以在所选择的标签值TA1.00、TA1.01、…、TA1.0K-1中的任一个等于标签值VA[T]的情况下,提供表示L1.0TLB402内的命中的命中信号L1.0命中(L1.0HIT)。此外,将L1.5TLB404的命中位H1.50、H1.51、…、H1.5Z-1提供至Z输入逻辑OR门414的相应输入,以在所选择的标签值TA1.50、TA1.51、…、TA1.5K-1中的任一个等于标签值VA[P]的情况下,提供表示L1.5TLB404内的命中的命中信号L1.5命中(L1.5HIT)。将L1.0命中信号和L1.5命中信号提供至2输入逻辑OR门416的输入,从而提供命中信号L1TLB命中。因而,L1TLB命中表示整体L1TLB302内的命中。
L1.0高速缓存器402的各条目具有条目418所示的形式。各条目存储标签字段TA1.0F[T](下标“F”表示字段),其中该标签字段TA1.0F[T]用于存储具有与标签值VA[T]相同的标签位数“T”的标签值,以利用比较器406中的相应比较器进行比较。各条目包括用于存储用于访问系统存储器118中的相应页的物理页地址的相应物理页字段PAF[P]。各条目包括包含表示条目当前是否有效的一个或多个位的有效字段“V”。可以针对各组设置用于确定替换策略的替换向量(未示出)。例如,如果给定组的所有路均有效并且新条目要替换组中的条目其中之一,则使用该替换向量来确定要驱逐哪个有效条目。然后,所驱逐的数据被传送至并存储在L1.5高速缓存器404内。在一个实施例中,例如,根据最近最少使用(LRU)策略来实现替换向量,使得最近最少使用的条目成为驱逐和替换的对象。所例示的条目格式可以包括相应页的诸如状态信息等的附加信息(未示出)。
L1.5高速缓存器404的各条目具有条目420所示的形式。除标签字段是用于存储具有P个位的完整页地址的标签值的TA1.5F[P]外,条目420与条目418大致相同。这样,L1.5TLB404的条目420中的标签字段与L1.0TLB402的条目418中的标签字段相比存储在一定程度上更大的标签值。因而,比较器410被实现为用于比较更大量的位的略大的比较器。所例示的条目格式可以包括相应页的诸如状态信息等的附加信息(未示出)。
同时或者在同一时钟周期内访问L1.0TLB402和L1.5TLB404,由此对这两个TLB的所有条目共同进行搜索。在L1TLB302内发生命中(L1TLB命中)的情况下,从L1.0TLB402或L1.5TLB404内的相应条目中检索到相应的物理地址条目PA[P]。由于以与L1.0TLB402不同的方式对L1.5TLB404编索引(其中,散列索引H[L]的分散不同于索引VA[I]的分散),因此L1TLB302的组合大小(L1和L1.5)的整体利用率大于条目数量相同的单个更大型TLB。在传统的TLB结构中,基于单一索引方案,某些组被过度使用而其它组未得到充分使用。针对L1.5TLB404使用不同的索引方案提高了整体利用率,使得L1TLB302看似为所具有的条目数量比实际具有的条目数量更大的更大型阵列。如这里所述,L1.5TLB404还用作使用从L1.0TLB402驱逐的丢弃者来填充L1.5TLB404的溢出TLB。如前面所述,散列生成器408所采用的散列函数提高了将从L1.0TLB402的给定组驱逐的值存储在L1.5TLB404的不同组中以提高整体L1TLB302的组利用率的可能性。这样,整体L1TLB302与条目数量相同的一个更大型TLB相比通常具有更佳性能。
图5是根据更具体实施例的L1TLB302的框图,其中:J=Y=16,K=4,并且Z=2,使得L1.0TLB402是16组4路的阵列(16×4)并且L1.5TLB404是16组2路的阵列(16×2)。此外,虚拟地址是表示为VA[47:0]的48个位,并且页大小是4K。加载管道212和存储管道214这两者内的虚拟地址生成器502提供虚拟地址的高36位或VA[47:12],其中由于对4K页的数据进行寻址,因此低12位被丢弃。在一个实施例中,VA生成器502进行相加计算以提供用作针对L1TLB302的搜索地址的虚拟地址。将VA[47:12]提供至散列生成器408的输入并且提供至L1TLB302的输入。
虚拟地址的低4位构成提供至L1.0TLB402的索引VA[15:12],以对16个组其中之一的被示出为所选择的组504进行寻址。虚拟地址的其余高位构成提供至比较器406的输入的标签值VA[47:16]。将所选择的组504的4个路的各条目内的各自具有形式VTX[47:16]的标签值VT0~VT3提供至比较器406的各个输入以与标签值VA[47:16]进行比较。比较器406输出四个命中位H1.0[3:0]。如果在所选择的四个条目中的任意条目中存在命中,则还提供相应的物理地址PA1.0[47:12]作为L1.0TLB402的输出。
将散列索引H[3:0]提供至L1.5TLB404,以对16个组其中之一(被示出为所选择的组506)进行寻址。虚拟地址位VA[47:12]构成提供至比较器410的输入的标签值。将所选择的组506中的4个路的各条目内的各自具有形式VTX[47:12]的标签值VT0~VT1提供至比较器410的各个输入以与标签值VA[47:12]进行比较。比较器410输出两个命中位H1.5[1:0]。如果在两个所选择的条目中的任意条目中存在命中,则还提供相应的物理地址PA1.5[47:12]作为L1.5TLB404的输出。
将命中位H1.0[3:0]和H1.5[1:0]提供至表示OR门412、414和416的OR逻辑505的各个输入,从而输出针对L1TLB302的命中位L1TLB命中。将物理地址PA1.0[47:12]和PA1.5[47:12]提供至PA逻辑506的各个输入,从而输出L1TLB302的物理地址PA[47:12]。PA逻辑506可被配置为用于选择L1.0TLB402和L1.5TLB404的物理地址其中之一的选择或多路复用器(MUX)逻辑等。如果没有设置L1TLB命中、从而表示针对L1TLB302的MISS,则相应的物理地址PA[47:12]被忽略或被视为无效而丢弃。
图5所示的L1TLB302包括16×4(L1.0)+16×2(L1.5)个条目的总共96个条目。L1TLB的现有传统结构被配置为总共192个条目的16×12的阵列,这比L1TLB302的两倍大。用于生成散列索引H[3:0]的散列函数与索引VA[15:12]所提供的分散方案相比提供不同的分散方案,使得L1TLB302的组和路的利用率相对于传统结构得以提高。更具体地,一般而言,散列索引在L1.5TLB404中选择与L1.0TLB402内条目被驱逐的组不同的用于存储条目的组。对于某些程序或操作系统配置,可以实现约50~60%的提高。
图6是根据一个实施例的使用图5的L1TLB302结构的驱逐处理的框图。在框602内共同示出L2TLB304和表查找引擎306。在如图3所示、在L1TLB302中发生未命中的情况下,将未命中(MISS)指示提供至L2TLB304。将引发未命中的虚拟地址的低位作为索引应用于L2TLB304,以判断在该L2TLB304内是否存储有相应的物理地址。此外,使用相同的虚拟地址来向表查找引擎306推入表查找。L2TLB304或表查找引擎306返回虚拟地址VA[47:12]以及相应的物理地址PA[47:12]。将虚拟地址的低4位VA[15:12]作为索引应用于L1.0TLB402,并且将虚拟地址的其余高位VA[47:16]和相应返回的物理地址PA[47:12]存储在L1.0TLB402内的条目中。如图4所示,VA[47:16]位形成新的标签值TA1.0并且物理地址PA[47:12]形成所访问的条目内所存储的新的PA[P]页值。根据可应用的替换策略,将该条目标记为有效。
提供至L1.0TLB402的索引VA[15:12]对L1.0TLB402内的相应组进行寻址。如果存在相应组的至少一个无效条目(或路),则在不会引起丢弃者的情况下将该数据存储在否则为“空”的条目内。然而,如果不存在无效条目,则利用该数据驱逐并替换有效条目其中之一,并且L1.0TLB402输出相应的丢弃者。关于利用新条目替换哪个有效条目或路的判断基于替换策略,诸如根据最近最少使用(LRU)方案、伪LRU方案或者任何适当的替换策略或方案等。L1.0TLB402的丢弃者包括丢弃者虚拟地址VVA[47:12]和相应的丢弃者物理地址VPA[47:12]。从L1.0TLB402被驱逐的条目包括用作丢弃者虚拟地址的高位VVA[47:16]的先前存储的标签值(TA1.0)。丢弃者虚拟地址的低位VVA[15:12]与条目被驱逐的组的索引相同。例如,可以使用索引VA[15:12]作为VVA[15:12],或者可以使用标签值被驱逐的组中的相应内部索引位。将标签值和索引位附加到一起以形成丢弃者虚拟地址VVA[47:12]。
如图6所示,将丢弃者虚拟地址VVA[47:12]应用于散列生成器408的输入,从而输出相应的丢弃者散列索引VH[3:0]。将VH[3:0]应用于L1.5TLB404的索引输入,因而用于对L1.5TLB404内的组进行寻址。如果存在L1.5TLB404内的寻址得到的组的中的至少一个无效条目(或路),则在不会产生丢弃者的情况下将虚拟地址VVA[47:12]和相应的物理地址PA[47:12]作为数据存储在无效条目中,并且将该条目标记为有效。
然而,如果不存在利用VH[3:0]在L1.5TLB404内所寻址的组的无效条目,则先前为有效的条目被驱逐,并且将从L1.0TLB402驱逐的包括VVA[47:12]和VPA[47:12]的新条目存储在L1.5TLB404的相应条目中。L1.5TLB404丢弃者包括用作另一丢弃者虚拟地址VVA[47:12]的标签值,并且以与L1.0TLB402的丢弃者相同的方式包括相应的物理地址丢弃者VPA[47:12]。在例示结构中,L2TLB304较大且包括32个组,由此将来自L1.5TLB404的丢弃者虚拟地址的低5位VVA[16:12]作为索引提供至L2TLB304以访问相应的组。将丢弃者虚拟地址的其余高位VVA[47:17]和丢弃者物理地址VPA[47:12]作为数据提供至L2TLB304。这些数据值被存储在L2TLB304内的索引组的无效条目(如果存在)中,或者在驱逐先前存储的条目的情况下存储在所选择的有效条目中。可以简单地丢弃从L2TLB304驱逐的任何条目以有利于新数据。
图7是根据另一实施例的使用图5的L1TLB302结构的驱逐处理的框图。驱逐处理与图6所示的驱逐处理大致相同,其中相同的项和块采用相同的附图标记。然而,在这种情况下,包括L1TLB散列表702,其中该L1TLB散列表702存储针对L1.0TLB402中的所有当前有效值的散列索引。因而,在L1.0TLB402是16×4高速缓存器阵列的情况下,L1TLB散列表702是散列索引值的16×4阵列。除将来自L2TLB304或表查找引擎306的虚拟地址VA[47:12]直接提供至散列生成器408的输入、从而输出相应的散列索引H[3:0]以外,操作相同。还将作为索引应用于L1.0TLB402的虚拟地址的低4位VA[15:12]作为索引应用于散列表702。提供散列生成器408的输出处的散列索引H[3:0]作为散列表702内的利用虚拟地址索引VA[15:12]标识的位置处所存储的相应数据。在以与前述相同的方式从L1.0TLB402驱逐丢弃者的情况下,相应的丢弃者散列索引VH[3:0]也从L1TLB散列表702被驱逐并且作为索引应用于L1.5TLB404。L1.5TLB404~L2TLB304的驱逐处理与针对图6所述的处理相同。
图6的驱逐处理具有避免消耗附加存储器空间的L1TLB散列表702的使用的优点。由于散列表702仅存储索引值,因此该散列表702与L1.0TLB402相比消耗极少的空间。在图7的使用散列表702的替代实施例中,可以期望在单个时钟周期内进行L1.0TLB402~L1.5TLB404的驱逐处理。在图6的结构中配置在L1.0TLB402和L1.5TLB404之间的散列发生器408插入了延迟、或者在某些配置下创建了可能不允许驱逐处理在一个周期内完成的偏移时刻。这样,图7的驱逐处理实施例具有L1TLB302的诸如在单个时钟周期内的更加快速的丢弃者处理时刻的优点。
已呈现了前述说明,以使得本领域普通技术人员能够如在特定应用及其要求的上下文内所提供的那样实行和使用本发明。尽管已参考本发明的特定优选版本相当详细地说明了本发明,但还可进行并考虑其它版本和变化。针对优选实施例的各种变形对于本领域技术人员而言将是显而易见的,并且这里所定义的一般原理还可应用于其它实施例。例如,可以以包括逻辑装置或电路等的任何适当方式实现这里所述的电路。尽管利用TLB阵列等例示了本发明,但这些概念等同地适用于以与第二高速缓存器阵列不同的方式对第一高速缓存器阵列进行编索引的任何多级高速缓存方案。不同的编索引方案提高了高速缓存器的组和路的利用率,并由此提高了性能。
本领域技术人员应当理解,在没有背离本发明的精神和范围的情况下,这些技术人员可以容易地使用所公开的概念和具体实施例作为用于设计或修改用于执行本发明的相同目的的其它结构的基础。因此,本发明并不意图局限于这里所示和所述的特定实施例,而是应当符合与这里所公开的原理和新颖特征一致的最宽范围。
Claims (25)
1.一种高速缓冲存储器系统,包括:
主高速缓冲存储器,其包括第一多个存储位置,其中利用包括搜索地址的第一组的位的主索引来对所述主高速缓冲存储器进行寻址;以及
溢出高速缓冲存储器,其包括第二多个存储位置,并且作为所述主高速缓冲存储器所用的驱逐阵列进行工作,其中利用应用于所述搜索地址的第二组的位的散列函数所生成的散列索引来对所述溢出高速缓冲存储器进行寻址,
其中,使用所述搜索地址来在所述主高速缓冲存储器和所述溢出高速缓冲存储器内共同搜索与所述搜索地址相对应的存储值。
2.根据权利要求1所述的高速缓冲存储器系统,其中,所述主高速缓冲存储器和所述溢出高速缓冲存储器被组织为共通数量的组,以及所述散列索引使得从所述主高速缓冲存储器内的组所驱逐的丢弃者存储在所述溢出高速缓冲存储器内的不同组。
3.根据权利要求1所述的高速缓冲存储器系统,其中,多个搜索地址生成多个主索引,以及所述多个搜索地址使所述散列函数生成至少包括与所述多个主索引不同的散列索引的相应多个散列索引。
4.根据权利要求1所述的高速缓冲存储器系统,其中,所述第二组的位包括所述搜索地址的没有包括在所述第一组的位内的至少一个位。
5.根据权利要求1所述的高速缓冲存储器系统,其中,所述第一组的位和所述第二组的位互斥。
6.根据权利要求1所述的高速缓冲存储器系统,其中,所述主高速缓冲存储器和所述溢出高速缓冲存储器各自包括用于存储微处理器用的主系统存储器的物理地址的转译后备缓冲器。
7.根据权利要求1所述的高速缓冲存储器系统,其中,所述主高速缓冲存储器包括16个组4个路的存储位置的阵列,以及所述溢出高速缓冲存储器包括16个组2个路的存储位置的高速缓存器阵列。
8.根据权利要求1所述的高速缓冲存储器系统,其中,还包括:
所述主高速缓冲存储器,其还包括第一多个路和相应第一多个比较器,从而提供第一多个命中信号;
所述溢出高速缓冲存储器,其还包括第二多个路和相应第二多个比较器,从而提供第二多个命中信号;以及
逻辑,用于将所述第一多个命中信号和所述第二多个命中信号合并为针对所述高速缓冲存储器系统的一个命中信号。
9.根据权利要求1所述的高速缓冲存储器系统,其中,还包括:
散列生成器,用于执行所述散列函数,
其中,所述搜索地址被提供至所述散列生成器的输入,并且所述搜索地址包括被提供至所述主高速缓冲存储器的索引输入的所述主索引,以及
所述散列生成器生成所述散列索引并将所述散列索引提供至所述溢出高速缓冲存储器的索引输入,并且所述主高速缓冲存储器和所述溢出高速缓冲存储器响应于所述搜索地址而共同确定高速缓存器命中指示。
10.根据权利要求1所述的高速缓冲存储器系统,其中,所述主高速缓冲存储器被组织为多个组和多个路,所述溢出高速缓冲存储器被组织为所述多个组,以及所述散列函数使从所述主高速缓冲存储器的给定组的所述多个路所驱逐的多个丢弃者分散至所述溢出高速缓冲存储器的多个不同组。
11.根据权利要求1所述的高速缓冲存储器系统,其中,还包括:
散列生成器,用于执行所述散列函数,
其中,所述主高速缓冲存储器能够用于从所述主高速缓冲存储器内的条目驱逐标签值,并且通过向所驱逐的标签值附加所述条目的索引值来形成丢弃者搜索地址,
所述散列生成器被配置为使用所述丢弃者搜索地址来生成散列索引,以及
所述溢出高速缓存器阵列被配置为将所述丢弃者搜索地址存储在利用所述散列索引进行寻址得到的位置。
12.根据权利要求1所述的高速缓冲存储器系统,其中,还包括:
散列生成器,用于执行所述散列函数;以及
散列表,用于存储针对所述主高速缓冲存储器中所存储的各有效条目的散列索引,
其中,存储到所述主高速缓冲存储器中的所检索到的条目包括标签值和主索引,其中所述所检索到的条目被提供至所述散列生成器的输入,所述主索引被提供至所述散列表的索引输入并被提供至所述主高速缓冲存储器的索引输入,以及所述标签值被提供至所述主高速缓冲存储器的数据输入,
所述主高速缓冲存储器能够用于从所述主高速缓冲存储器内的条目驱逐标签值,并且通过向所驱逐的标签值附加所述条目的索引值来形成丢弃者搜索地址,
所述散列生成器被配置为使用所述所检索到的条目来生成新的散列索引,并且所述散列表被配置为将所述新的散列索引存储在利用所述主索引进行寻址得到的位置并驱逐丢弃者散列索引,以及
所述溢出高速缓存器阵列被配置为将所述丢弃者搜索地址存储在利用所述丢弃者散列索引进行寻址得到的位置。
13.一种微处理器,包括:
地址生成器,用于生成包括形成主索引的第一组的位的虚拟地址;
散列生成器,用于将所述虚拟地址的第二组的位转换成散列索引;以及高速缓冲存储器系统,其包括:
主高速缓冲存储器,其利用所述主索引进行寻址;以及
溢出高速缓冲存储器,其利用所述散列索引进行寻址,
其中,分别使用所述主索引和所述散列索引来在所述主高速缓冲存储器和所述溢出高速缓冲存储器内共同进行搜索,以及所述溢出高速缓存器阵列形成所述主高速缓冲存储器所用的驱逐阵列。
14.根据权利要求13所述的微处理器,其中,还包括:
所述主高速缓冲存储器,其包括第一多个路和相应第一多个比较器,从而提供第一多个命中信号;
所述溢出高速缓冲存储器,其包括第二多个路和相应第二多个比较器,从而提供第二多个命中信号;以及
逻辑,用于将所述第一多个命中信号和所述第二多个命中信号合并为针对所述高速缓冲存储器系统的一个命中信号。
15.根据权利要求13所述的微处理器,其中,所述高速缓冲存储器系统还包括1级转译后备缓冲器,所述1级转译后备缓冲器用于存储与多个虚拟地址相对应的多个物理地址。
16.根据权利要求15所述的微处理器,其中,还包括:
表查找引擎,用于在所述高速缓冲存储器系统中发生未命中的情况下,访问系统存储器,
其中,所述高速缓冲存储器系统还包括2级转译后备缓冲器,所述2级转译后备缓冲器形成所述溢出高速缓冲存储器所用的驱逐阵列,并且在所述主高速缓冲存储器和所述溢出高速缓冲存储器中发生未命中的情况下,在所述2级转译后备缓冲器内进行搜索。
17.根据权利要求13所述的微处理器,其中,所述主高速缓冲存储器包括多个组和多个路,所述溢出高速缓冲存储器包括所述多个组,以及所述主高速缓冲存储器的给定组的所述多个路分散至所述溢出高速缓冲存储器的不同组。
18.根据权利要求13所述的微处理器,其中,
所述主高速缓冲存储器能够用于从所述主高速缓冲存储器内的条目驱逐标签值,并且通过向所驱逐的标签值附加所述条目的索引值来形成丢弃者搜索地址,
所述散列生成器被配置为使用所述丢弃者搜索地址来生成散列索引,以及
所述溢出高速缓存器阵列被配置为将所述丢弃者搜索地址存储在利用所述散列索引进行寻址得到的位置。
19.根据权利要求13所述的微处理器,其中,还包括:
散列表,用于存储针对所述主高速缓冲存储器中所存储的各有效条目的散列索引,
其中,存储到所述主高速缓冲存储器中的所检索到的条目包括标签值和主索引,其中所述所检索到的条目被提供至所述散列生成器的输入,所述主索引被提供至所述散列表的索引输入并被提供至所述主高速缓冲存储器的索引输入,以及所述标签值被提供至所述主高速缓冲存储器的数据输入,
所述主高速缓冲存储器能够用于从所述主高速缓冲存储器内的条目驱逐标签值,并且通过向所驱逐的标签值附加所述条目的索引值来形成丢弃者搜索地址,
所述散列生成器被配置为使用所述所检索到的条目来生成新的散列索引,并且所述散列表被配置为将所述新的散列索引存储在利用所述主索引进行寻址得到的位置并驱逐丢弃者散列索引,以及
所述溢出高速缓存器阵列被配置为将所述丢弃者搜索地址存储在利用所述丢弃者散列索引进行寻址得到的位置。
20.一种对数据进行高速缓存的方法,包括以下步骤:
使用虚拟地址的第一组的位作为主索引;
根据所述虚拟地址的第二组的位来生成散列索引;
使用所述主索引来在主高速缓存器内进行搜索;以及
在所述主高速缓存器内进行搜索的同时,还使用所述散列索引来在所述主高速缓存器的溢出高速缓存器内进行搜索。
21.根据权利要求20所述的方法,其中,根据第二组的位来生成散列索引的步骤包括:使用与所述虚拟地址的所述第一组的位互斥的第二组的位。
22.根据权利要求20所述的方法,其中,还包括以下步骤:
基于在所述主高速缓存器内进行搜索来生成第一命中指示;
基于在所述溢出高速缓存器内进行搜索来生成第二命中指示;以及
将所述第一命中指示和所述第二命中指示合并以提供单个命中指示。
23.根据权利要求20所述的方法,其中,还包括以下步骤:
从所述主高速缓存器驱逐标签;
向所述标签附加用于对所述主高速缓存器中的所述标签被驱逐的存储位置进行寻址的索引,以生成丢弃者地址;
根据所述丢弃者地址来生成散列索引;以及
将所述丢弃者地址存储在所述溢出高速缓存器中的利用所述散列索引进行寻址得到的位置。
24.根据权利要求20所述的方法,其中,还包括以下步骤:
接收用于向所述主高速缓存器内存储值的地址;
使用所接收到的地址的第一选择位作为检索主索引并使用所接收到的地址的第二选择位作为标签地址,并且将所述标签地址存储到所述主高速缓存器中的所述检索主索引处;
根据所接收到的地址来生成散列索引;以及
将所述散列索引存储到散列表中的所述检索主索引所指示的地址处。
25.根据权利要求24所述的方法,其中,还包括以下步骤:
从所述主高速缓存器驱逐与所述检索主索引相对应的标签;
从所述散列表驱逐与所述检索主索引相对应的丢弃者散列地址;
向所驱逐的标签附加索引以提供丢弃者地址;以及
将所述丢弃者地址存储在所述溢出高速缓存器中的利用所述丢弃者散列地址进行寻址得到的位置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462024020P | 2014-07-14 | 2014-07-14 | |
US62/024,020 | 2014-07-14 | ||
PCT/IB2014/003159 WO2016009247A1 (en) | 2014-07-14 | 2014-12-12 | Cache system with primary cache and overflow cache that use different indexing schemes |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105814548A true CN105814548A (zh) | 2016-07-27 |
CN105814548B CN105814548B (zh) | 2019-02-12 |
Family
ID=55077951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480067459.1A Active CN105814548B (zh) | 2014-07-14 | 2014-12-12 | 具有使用不同编索引方案的主高速缓存器和溢出高速缓存器的高速缓存器系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11620220B2 (zh) |
KR (1) | KR101898322B1 (zh) |
CN (1) | CN105814548B (zh) |
WO (1) | WO2016009247A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107832238A (zh) * | 2017-10-09 | 2018-03-23 | 江苏航天龙梦信息技术有限公司 | 一种基于龙芯处理器平台的高速缓存作内存的方法 |
CN108268946A (zh) * | 2016-12-31 | 2018-07-10 | 上海兆芯集成电路有限公司 | 具有阵列宽度可分段之旋转器之神经网络单元 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6207765B2 (ja) * | 2014-12-14 | 2017-10-04 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ |
JP6218971B2 (ja) | 2014-12-14 | 2017-10-25 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アドレス・タグ・ビットに基づく動的キャッシュ置換ウェイ選択 |
JP6209689B2 (ja) | 2014-12-14 | 2017-10-04 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | モードに応じてウェイの全部又はサブセットに選択的に割り当てるように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ |
US10152527B1 (en) * | 2015-12-28 | 2018-12-11 | EMC IP Holding Company LLC | Increment resynchronization in hash-based replication |
US10705590B2 (en) * | 2017-11-28 | 2020-07-07 | Google Llc | Power-conserving cache memory usage |
KR20220005285A (ko) | 2020-07-06 | 2022-01-13 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그 동작 방법 |
US11429590B2 (en) * | 2020-10-15 | 2022-08-30 | International Business Machines Corporation | Protecting against invalid memory references |
US11966331B2 (en) | 2020-12-30 | 2024-04-23 | International Business Machines Corporation | Dedicated bound information register file for protecting against out-of-bounds memory references |
US11983532B2 (en) | 2020-12-30 | 2024-05-14 | International Business Machines Corporation | Optimize bound information accesses in buffer protection |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5592634A (en) * | 1994-05-16 | 1997-01-07 | Motorola Inc. | Zero-cycle multi-state branch cache prediction data processing system and method thereof |
US5603004A (en) * | 1994-02-14 | 1997-02-11 | Hewlett-Packard Company | Method for decreasing time penalty resulting from a cache miss in a multi-level cache system |
US6065091A (en) * | 1997-05-30 | 2000-05-16 | Via-Cyrix, Inc. | Translation look-aside buffer slice circuit and method of operation |
US7136967B2 (en) * | 2003-12-09 | 2006-11-14 | International Business Machinces Corporation | Multi-level cache having overlapping congruence groups of associativity sets in different cache levels |
CN1979452A (zh) * | 2005-12-06 | 2007-06-13 | 国际商业机器公司 | 用于短暂高速缓存存储的方法和处理器 |
US20100332786A1 (en) * | 2009-06-29 | 2010-12-30 | Grohoski Gregory F | System and Method to Invalidate Obsolete Address Translations |
US20120124291A1 (en) * | 2010-11-16 | 2012-05-17 | International Business Machines Corporation | Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data |
US20140082284A1 (en) * | 2012-09-14 | 2014-03-20 | Barcelona Supercomputing Center - Centro Nacional De Supercomputacion | Device for controlling the access to a cache structure |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5386527A (en) * | 1991-12-27 | 1995-01-31 | Texas Instruments Incorporated | Method and system for high-speed virtual-to-physical address translation and cache tag matching |
US5493660A (en) * | 1992-10-06 | 1996-02-20 | Hewlett-Packard Company | Software assisted hardware TLB miss handler |
US5526510A (en) * | 1994-02-28 | 1996-06-11 | Intel Corporation | Method and apparatus for implementing a single clock cycle line replacement in a data cache unit |
US5754819A (en) * | 1994-07-28 | 1998-05-19 | Sun Microsystems, Inc. | Low-latency memory indexing method and structure |
DE19526960A1 (de) * | 1994-09-27 | 1996-03-28 | Hewlett Packard Co | Eine Übersetzungs-Querzuordnungs-Puffer-Organisation mit variabler Seitengrößenabbildung und Opfer-Cache-Speicherung |
US5752274A (en) * | 1994-11-08 | 1998-05-12 | Cyrix Corporation | Address translation unit employing a victim TLB |
US5860117A (en) | 1996-05-31 | 1999-01-12 | Sun Microsystems, Inc. | Apparatus and method to improve primary memory latencies using an eviction buffer to store write requests |
US6044478A (en) * | 1997-05-30 | 2000-03-28 | National Semiconductor Corporation | Cache with finely granular locked-down regions |
US6223256B1 (en) * | 1997-07-22 | 2001-04-24 | Hewlett-Packard Company | Computer cache memory with classes and dynamic selection of replacement algorithms |
US6823471B1 (en) * | 1999-07-30 | 2004-11-23 | International Business Machines Corporation | Method for providing high availability within a data processing system via a reconfigurable hashed storage subsystem |
US6493814B2 (en) * | 2001-03-08 | 2002-12-10 | International Business Machines Corporation | Reducing resource collisions associated with memory units in a multi-level hierarchy memory system |
US20030182539A1 (en) * | 2002-03-20 | 2003-09-25 | International Business Machines Corporation | Storing execution results of mispredicted paths in a superscalar computer processor |
US7124249B1 (en) * | 2003-06-26 | 2006-10-17 | Emc Corporation | Method and apparatus for implementing a software cache |
KR100562906B1 (ko) * | 2003-10-08 | 2006-03-21 | 삼성전자주식회사 | 시리얼 플래시 메모리에서의 xip를 위한 우선순위기반의 플래시 메모리 제어 장치 및 이를 이용한 메모리관리 방법, 이에 따른 플래시 메모리 칩 |
US7606994B1 (en) * | 2004-11-10 | 2009-10-20 | Sun Microsystems, Inc. | Cache memory system including a partially hashed index |
US20060236074A1 (en) * | 2005-04-14 | 2006-10-19 | Arm Limited | Indicating storage locations within caches |
US7444473B1 (en) * | 2005-06-17 | 2008-10-28 | Sun Microsystems, Inc. | Speculative memory accesses in a proximity communication-based off-chip cache memory architecture |
US20070094450A1 (en) * | 2005-10-26 | 2007-04-26 | International Business Machines Corporation | Multi-level cache architecture having a selective victim cache |
US7478197B2 (en) * | 2006-07-18 | 2009-01-13 | International Business Machines Corporation | Adaptive mechanisms for supplying volatile data copies in multiprocessor systems |
US7805575B1 (en) * | 2006-09-29 | 2010-09-28 | Tilera Corporation | Caching in multicore and multiprocessor architectures |
JP4920378B2 (ja) * | 2006-11-17 | 2012-04-18 | 株式会社東芝 | 情報処理装置およびデータ検索方法 |
CA2704987A1 (en) | 2007-11-06 | 2009-05-14 | Certainteed Corporation | Photovoltaic roofing elements including tie layer systems, and roofs using them, and methods for making them |
US7996650B2 (en) * | 2008-07-14 | 2011-08-09 | Via Technologies, Inc. | Microprocessor that performs speculative tablewalks |
US20100049952A1 (en) * | 2008-08-25 | 2010-02-25 | Via Technologies, Inc. | Microprocessor that performs store forwarding based on comparison of hashed address bits |
US8782348B2 (en) * | 2008-09-09 | 2014-07-15 | Via Technologies, Inc. | Microprocessor cache line evict array |
JP5300407B2 (ja) * | 2008-10-20 | 2013-09-25 | 株式会社東芝 | 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 |
US9135215B1 (en) * | 2009-09-21 | 2015-09-15 | Tilera Corporation | Route prediction in packet switched networks |
US9081501B2 (en) * | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
JP2011198091A (ja) * | 2010-03-19 | 2011-10-06 | Toshiba Corp | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム |
US8335908B2 (en) * | 2010-07-01 | 2012-12-18 | Arm Limited | Data processing apparatus for storing address translations |
US8751751B2 (en) * | 2011-01-28 | 2014-06-10 | International Business Machines Corporation | Method and apparatus for minimizing cache conflict misses |
US9342446B2 (en) * | 2011-03-29 | 2016-05-17 | SanDisk Technologies, Inc. | Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache |
US8880857B2 (en) * | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor |
US8595464B2 (en) * | 2011-07-14 | 2013-11-26 | Oracle International Corporation | Dynamic sizing of translation lookaside buffer for power reduction |
KR101862785B1 (ko) * | 2011-10-17 | 2018-07-06 | 삼성전자주식회사 | 타일 기반 렌더링을 위한 캐쉬 메모리 시스템 및 캐슁 방법 |
CN104169892A (zh) * | 2012-03-28 | 2014-11-26 | 华为技术有限公司 | 并发访问的组相联溢出缓存 |
US20130332434A1 (en) * | 2012-06-11 | 2013-12-12 | Actian Netherlands, B.V. | System and method using partial just-in-time complation to resolve memory access pattern problems in hash table probing |
GB2516477A (en) * | 2013-07-24 | 2015-01-28 | Ibm | Method and system for handling virtual memory address synonyms in a multi-level cache hierarchy structure |
-
2014
- 2014-12-12 KR KR1020157031447A patent/KR101898322B1/ko active IP Right Grant
- 2014-12-12 US US14/889,113 patent/US11620220B2/en active Active
- 2014-12-12 CN CN201480067459.1A patent/CN105814548B/zh active Active
- 2014-12-12 WO PCT/IB2014/003159 patent/WO2016009247A1/en active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5603004A (en) * | 1994-02-14 | 1997-02-11 | Hewlett-Packard Company | Method for decreasing time penalty resulting from a cache miss in a multi-level cache system |
US5592634A (en) * | 1994-05-16 | 1997-01-07 | Motorola Inc. | Zero-cycle multi-state branch cache prediction data processing system and method thereof |
US6065091A (en) * | 1997-05-30 | 2000-05-16 | Via-Cyrix, Inc. | Translation look-aside buffer slice circuit and method of operation |
US7136967B2 (en) * | 2003-12-09 | 2006-11-14 | International Business Machinces Corporation | Multi-level cache having overlapping congruence groups of associativity sets in different cache levels |
CN1979452A (zh) * | 2005-12-06 | 2007-06-13 | 国际商业机器公司 | 用于短暂高速缓存存储的方法和处理器 |
US20100332786A1 (en) * | 2009-06-29 | 2010-12-30 | Grohoski Gregory F | System and Method to Invalidate Obsolete Address Translations |
US20120124291A1 (en) * | 2010-11-16 | 2012-05-17 | International Business Machines Corporation | Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data |
US20140082284A1 (en) * | 2012-09-14 | 2014-03-20 | Barcelona Supercomputing Center - Centro Nacional De Supercomputacion | Device for controlling the access to a cache structure |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108268946A (zh) * | 2016-12-31 | 2018-07-10 | 上海兆芯集成电路有限公司 | 具有阵列宽度可分段之旋转器之神经网络单元 |
CN107832238A (zh) * | 2017-10-09 | 2018-03-23 | 江苏航天龙梦信息技术有限公司 | 一种基于龙芯处理器平台的高速缓存作内存的方法 |
Also Published As
Publication number | Publication date |
---|---|
US11620220B2 (en) | 2023-04-04 |
US20160170884A1 (en) | 2016-06-16 |
CN105814548B (zh) | 2019-02-12 |
WO2016009247A1 (en) | 2016-01-21 |
KR20160033651A (ko) | 2016-03-28 |
KR101898322B1 (ko) | 2018-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105814548A (zh) | 具有使用不同编索引方案的主高速缓存器和溢出高速缓存器的高速缓存器系统 | |
US10310987B2 (en) | Systems and methods for accessing a unified translation lookaside buffer | |
US11314647B2 (en) | Methods and systems for managing synonyms in virtually indexed physically tagged caches | |
KR102244191B1 (ko) | 캐시 및 변환 색인 버퍼를 갖는 데이터 처리장치 | |
US8984254B2 (en) | Techniques for utilizing translation lookaside buffer entry numbers to improve processor performance | |
CN105814549A (zh) | 具有主高速缓存器和溢出fifo高速缓存器的高速缓存器系统 | |
US9298615B2 (en) | Methods and apparatus for soft-partitioning of a data cache for stack data | |
EP3298493B1 (en) | Method and apparatus for cache tag compression | |
US8335908B2 (en) | Data processing apparatus for storing address translations | |
JPH1074166A (ja) | 多重レベル・ダイナミック・セット予測方法および装置 | |
US10579522B2 (en) | Method and device for accessing a cache memory | |
US10552338B2 (en) | Technique for efficient utilisation of an address translation cache | |
US11403222B2 (en) | Cache structure using a logical directory | |
US8843726B2 (en) | Cache for storing multiple forms of information and a method for controlling a cache storing multiple forms of information | |
JP2009512943A (ja) | 多階層の変換索引緩衝機構(TLBs)フィールドの更新 | |
WO2021061446A1 (en) | Storage management apparatus, storage management method, processor, and computer system | |
CN109983538B (zh) | 存储地址转换 | |
JP7311959B2 (ja) | 複数のデータ・タイプのためのデータ・ストレージ | |
US20120102271A1 (en) | Cache memory system and cache memory control method | |
CN117971730A (zh) | 一种用于病理图像识别的页表并行搜索虚拟内存管理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Pudong New Area, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |