CN107015922A - 缓存存储器 - Google Patents
缓存存储器 Download PDFInfo
- Publication number
- CN107015922A CN107015922A CN201611270538.XA CN201611270538A CN107015922A CN 107015922 A CN107015922 A CN 107015922A CN 201611270538 A CN201611270538 A CN 201611270538A CN 107015922 A CN107015922 A CN 107015922A
- Authority
- CN
- China
- Prior art keywords
- label
- value
- buffer memory
- independent
- data
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
-
- 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/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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- 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/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
- 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/1009—Address translation using page tables, e.g. page table structures
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; 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
-
- 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/1048—Scalability
-
- 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/6032—Way prediction in set-associative cache
-
- 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/65—Details of virtual memory and virtual address translation
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
提供了一种缓存存储器。一种缓存存储器(例如,转换后备缓冲器缓存16),包括多个位存储电路块26,位存储电路块可以以第一模式操作或以第二模式操作,其中第一模式存储具有(被存储在标签存储器24中的)共享标签的多个共享标签数据,第二模式存储多个单独标签数据值和相应的单独标签。标签存储器中的标签条目包括针对以第一模式操作的给定块的共享标签值和针对以第二模式操作的给定块的复合值。复合值包括指示相应的单独标签的判决器值(例如根据单独标签计算的散列值或布隆过滤器值),这样可以根据判决器值识别与单独标签的潜在匹配。
Description
技术领域
本公开涉及数据处理系统领域。更具体地,本公开涉及用于在数据处理系统内使用的缓存存储器。
背景技术
向数据处理系统配置缓存存储器以提供对数据和/或指令的高速且低功耗的访问是公知的。缓存存储器存储主存储器系统内保持的数据和/或指令的真子集。该特定部分来自缓存存储器内保持的存储器地址空间的数据和/或指令通过标签值来标识。标签值标识存储器地址空间内与缓存存储器内保持的一个或多个数据值(该术语也涵盖指令)相对应的存储器地址区域。与缓存存储器内的标签值相关联的数据值块的大小由缓存存储器的架构设置,以表示可以在其中存储数据块的粒度与提供标签值存储以标识存储在缓存存储器内的块的开销之间的平衡。
发明内容
本公开的至少一些实施例提供一种缓存存储器,包括:多个位存储电路块;以及控制电路,该控制电路用于控制对多个块内的给定块的访问,使得给定块以下面两种模式中可选择的一种模式操作:第一模式,该第一模式存储具有共享标签的多个共享标签数据值;第二模式,该第二模式存储多个单独标签数据值和相应的单独标签。
本公开的至少一些实施例提供一种操作具有多个位存储电路块的缓存存储器的方法,方法包括:控制对多个块内的给定块的访问,使得给定块以下面两种模式中可选择的一种模式操作:第一模式,该第一模式存储具有共享标签的多个共享标签数据值;第二模式,该第二模式存储多个单独标签数据值和相应的单独标签。
本公开的至少一些实施例提供一种缓存存储器,包括:多个位存储电路块;以及标签存储器,该标签存储器用于存储判决器值;其中多个块内的给定块存储多个单独标签数据值和相应的单独标签;并且判决器值指示相应的单独标签。
根据以下对要连同附图被阅读的示意性实施例的详细描述,以上内容以及本公开的其它对象、特征和优点将是显而易见的。
附图说明
图1示意性地示出包括数据/指令缓存存储器和转换后备缓冲器缓存存储器的数据处理系统;
图2示意性地示出包括标签存储器和多个位存储电路块的缓存存储器;
图3示意性地示出标签存储器内与工作在第一模式或第二模式中的块相对应的条目;
图4示意性地示出标签存储器内的示例复合值条目;
图5是示意性地示出缓存读操作的示例的流程图;
图6是示意性地示出缓存更新操作的示例的流程图;
图7是示意性地示出简化的缓存更新操作的示例的流程图;
图8示意性地示出包括标签存储器和多个位存储电路块的缓存存储器,其中标签存储器存储判决器值,多个位存储电路块存储各个标签数据值和相应的各个标签。
具体实施方式
图1示意性地示出包括执行程序指令以操纵数据的处理器核4的数据处理系统2。程序指令和数据6被存储在主存储器8内。放置在主存储器8和处理器核4之间的数据和指令缓存10用于将程序指令和数据6的子集本地缓存到处理器核4,从而根据传统技术提供对所缓存的指令和数据的更高速和更高效的访问。
存储器管理单元12与处理器核4相关联并且用于管理对主存储器8的访问,例如提供与主存储器8相对应的存储器地址空间的区域的许可(permission)数据和其他特性(例如,可缓存性、从不执行、……)。更具体地,存储器管理单元12利用分级页表数据来对存储器的区域的访问许可和其他特性进行定义。将这些区域称作页,并且如本领域技术人员将熟悉的,使用分级页表数据14问的多级页表行走(page table walking)操作来访问存储器内给定页的页数据。页表行走操作通常执行起来相对较慢,因此存储器管理单元12包括转换后备缓冲器缓存16来存储与主存储器8的存储器地址空间内当前活跃的数据页相关的页表数据。因此,当试图访问给定页的页数据时,存储器管理单元12将首先检查该页数据是否存在于转换后备缓冲器缓存16内。如果该页数据不存在于转换页表后备缓冲器缓存16内,则存储器管理单元12内的页表行走状态机18执行分级页表行走操作,其访问主存储器8内的分级页表数据14以恢复所期望的页表数据并将其存储到转换后备缓冲器缓存16。如果转换后备缓冲器缓存16已满,则存储新的页表数据项将要求驱逐某一已经存在的页表数据。受害者(Victim)选择和替换算法是本领域熟知的技术,这些技术中的各种技术可被用于选择哪个页表数据被替换。
从分级页表数据14内的不同级别恢复的页表数据具有与其用途相关联的不同特性,例如,即将使用相邻页表数据的可能性。通常,当来自分级页表数据14内的较低级别的页表数据被访问时,与之相关联的存在较高概率的是,分级页表数据14内该较低级别处的相邻页表数据也将很快被访问。因此,当将低级别的页表数据缓存在转换后备缓冲器16内时,缓存这种低级别页表数据的相对较大区块(包含多个低级别页表数据条目)可能更加高效,因为存在较高的可能性那些其他低级别的页表数据条目将很快被需要并因此将已经存在转换后备缓冲器缓存16内。相反,针对分级页表数据14内较高级别的页表数据条目,当访问这种高级别页表数据时,相邻的高级页表数据也将很快被需要的可能性相对较低。因此,考虑到存储器管理单元12将存在较高概率不需要这种高级别页表数据的大部分相邻块,与以较大的区块为单位存储高级别页表数据相比,以较小的区块为单位对这种高级别页表数据进行缓存使得转换后备缓冲器缓存16的有限存储容量可被用来存储更大量的这种小块的高级别页表数据可能更高效。
图2示意性地更详细地示出转换后备缓冲器缓存16。转换后备缓冲器缓存16是可对其应用本技术的缓存类型的一个示例。本技术也可被应用于其他类型的缓存存储器。本示例实施例中的转换后备缓冲器缓存16包括共享位线22的位存储单元(电路)的统一阵列,位值经由共享位线22被存储到转换后备缓冲器缓存16并被从转换后备缓冲器缓存16读出。转换后备缓冲器缓存16在逻辑上被划分为标签存储器24和多个位存储电路块26。其他示例实施例可采用物理上分开和不连续的存储器来分别存储标签值和数据值,在一些情况下这是可取的。
标签存储器24存储多个标签条目。在该示例实施例中,标签条目可以具有共享标签值(Norm)的形式,该共享标签值是整个给定的位存储电路块的标签值。可替代地,标签条目可以是复合值(Comp),在该示例实施例中,复合值包括判决器(discriminator)值。将要理解的是,每个标签条目可以包括指示该标签条目是共享标签值还是复合值的旗标值。缓存控制和标签比较电路20被耦接到转换后备缓冲器缓存16并用于管理转换后备缓冲器缓存16的操作,如下文将进一步描述的。
当标签条目是共享标签值(例如,标签56)时,则这指示相应的位存储电路块以存储多个共享标签数据值(数据56.1、数据56.2、数据56.3、数据56.4、数据56.5、数据56.6、数据56.7、数据56.8)的第一模式进行操作,其中所有的共享标签数据值对共享标签值(标签56)进行共享。当缓存控制电路20对转换后备缓冲器缓存16进行查找时,则对所接收的地址与标签条目进行比较(在共享标签的情况下,对所接收的地址与共享标签值进行比较),以确定是否存在匹配。如果存在匹配,则相应的一个或多个共享标签数据值被访问。
在标签条目是复合值(例如,标签57)的情况下,则这指示相应的位存储电路块以存储多个单独标签数据值和相应的单独标签(individualtag)的第二模式进行操作。因此,复合值用作到进一步的单独标签值的指针,可对该单独标签值进行明确的匹配。在图2示出的示例中,复合值标签57对应于存储四个单独标签(标签57.1、标签57.2、标签57.3、标签57.4)和相应的单独标签数据值(数据57.1、数据57.2、数据57.3、数据57.4)的位存储电路块。在位存储电路块以第二模式进行操作的情况下,查找操作是两阶段处理。第一阶段是与复合值进行比较以确定是否存在潜在匹配的阶段。如果存在潜在匹配,则第二阶段执行与存储在给定块内的每个单独标签的比较。如果在与复合值相对应的给定块内的单独标签中的一个单独标签上存在命中,则相应的单独标签数据值然后被访问。
图3示意性地示出当包括位存储电路块的给定块以相应的模式操作时针对该给定块存储的示例标签条目。当给定块以第一模式进行操作时,则标签存储器24内针对该给定块的标签条目是共享标签值。当给定块以第二模式进行操作时,则标签存储器24内针对该给定块的标签条目是复合值。
如前所述,当标签条目是复合值时,则进行查找时的第一阶段比较被用于标识与给定块(该给定块与复合值相对应)的单独标签的潜在匹配。为辅助该确定,复合值可以包括指示相应的单独标签的判决器值。可以用各种不同的方式形成判决器值,例如从单独标签内的位的散列或根据单独标签的位确定的布隆过滤器(Bloom filter)值。也可以使用其它方式来形成指示与单独标签的潜在匹配的判决器值。
可以由多个独立地计算的值来形成判决器值,每个独立地计算的值根据相应的单独标签被确定。可替代地,单个值可以被计算并被用作块的判决器值。在这种情形下,单个判决器值取决于多个相应的单独标签,例如以第二模式操作的给定块内的所有的单独标签。
另一种可能性是具有多个部分的判决器值,每个部分取决于包括相关块的多个单独标签的相应的真子集。
图4示意性地示出复合值的一种示例形式。在图4示出的示例中,复合值包括多个旗标28,旗标28包括指示有关的标签条目是复合值而不是共享标签值的第二模式旗标。旗标28还可以包括例如指示有关的标签条目有效的有效旗标。复合值还包括判决器值。在所示出的该示例中,判决器值包括根据对应给定块内相应的单独标签确定的多个单独计算的散列或布隆过滤器值。与这些单独计算的值中的每个值相关联的是相应的单独驱逐控制数据条目,用于控制相应的单独标签数据值和单独标签在转换后备缓冲器缓存16内的保留。更具体地,驱逐控制数据可以包括诸如脏旗标(指示条目自从它被存储在转换后备缓冲器缓存16内起已经被写入)和/或最近最少使用数据(指示单独标签数据值被访问的时间有多近期)等之类的数据。因此,在图4的示例中,驱逐控制数据被存储在复合值的级别处而不是在单独标签值的级别处。
将要理解的是,在其它实施例中,判决器值可以被计算为单个值,该单个值取决于与判决器值相关的给定块内的所有单独标签。在这种情况下,当通过对所接收的地址与判决器值进行比较识别出潜在匹配时,则随后可以针对该地址对所有相应的单独标签进行检查。相反,当判决器值包括根据相应的单独标签被单独计算的值时,则当在这些单独计算的值中的一个值上检测到匹配时,则针对该地址仅需要检查相应的匹配的单独标签。
将要理解的是,在一些示例实施例中,可以通过对单独标签使用考虑判决器值内表示的信息的编码来减小位数以减小单独标签大小,使得通过与判决器值的匹配操作已经与输入地址匹配的位不需要被再次存储在单独标签内。这释放了给定块内更多空间用于存储单独标签和单独标签数据值。
在图2的示例中,存在数据可以以共享标签数据值的一部分的形式被存储或作为单独标签数据值被存储的暗示。事实不一定如此。应用本技术的缓存存储器可以是这样的:其中要存储的数据可以都作为共享标签数据值被存储,而要存储在缓存存储器中的其它类型的数据可以都作为单独标签数据值被存储。相反,在其它实施例中,这种限制不一定适用,并且单独的数据项可以以任一种形式被存储。也可能给定的缓存存储器可以操作以存储仅可以以一种类型被存储的一些数据以及存储可以存储为任意类型的数据。
当控制电路20针对判决器值执行比较时,其用于标识潜在匹配。判决器值被选择为使得它针对这种潜在的匹配检测不生成漏报。与判决器值的比较可能产生误报,即当针对相应的单独标签执行全部的比较时,实际上没发现匹配。因此判决器值指示潜在匹配而不是指示确定的匹配。如果与判决器值的比较指示没有潜在匹配,则控制电路20可以终止给定的访问请求。当存在与判决器值的匹配时,则访问请求进一步前进并且缓存控制器20用于读取并执行与来自在判决器值级别匹配的给定块的单独标签的比较。
将要理解的是,因为判决器值不表示全部的单独标签,则存在这样的可能性,即多个单独标签的相应的判决器值将相互混叠,即,不同的单独标签将具有相同的判决器值。为解决该问题,控制电路20可以被配置为控制单独标签数据值以及相应的单独标签到多个块中的分配,使得给定的一组相关联的转换后备缓冲器缓存16内相互混叠的所有单独标签被分配到相同的给定块。在必要的情况下,这可能涉及驱逐该给定块内的现有条目,以便为与该块内的另一条目混叠的新条目腾出地方。控制电路20可以使用判决器值内与单独标签数据值相关联的有效位,以在给定块内单独地标记为有效或无效的具体条目。因此,在任何时间点给定块可以不完全充满数据条目。
图5是示意性地示出由控制电路20控制的缓存读操作的示例的流程图。在步骤30处,接收缓存读操作(例如,针对给定地址的存储器访问请求)。步骤32确定相关联的缓存内的要与之进行标签比较的缓存组。步骤34读取步骤32处标识的缓存组的标签条目。这些标签条目可以是共享标签值或复合值。步骤36对步骤34处读取的标签条目与所作出的访问请求的地址进行比较。如果不存在匹配,则步骤38返回缓存未命中响应。如果存在与共享标签值的命中,则步骤40用于从相应的给定块中的位单元电路读取相应的一个或多个共享标签数据值并然后在步骤42处返回该数据。
如果步骤36处的比较识别出标签条目是复合值,则步骤44用于对与访问请求相关联的地址和复合值的判决器值进行比较。如果不存在潜在匹配,则处理再次前进到步骤38,在该处返回未命中响应。如果在步骤44处标识潜在匹配,则处理前进到步骤46,在该处从给定块读取单独标签。步骤48然后对这些单独标签与访问请求进行比较。如果在步骤48处在访问请求和所读取的单独标签之间存在匹配,则步骤50读取并返回相应的单独标签数据值并在步骤52处以该数据值进行响应。如果在步骤48处没有标识匹配,则处理前进到步骤54,在该处判定是否存在更多的需要进行比较的潜在匹配的单独标签。这对应于步骤32处标识的缓存组包含潜在地与所接收的地址匹配的多个判决器值、指示需要对多组单独标签进行检查的情形。如果存在其它的这种单独标签组,需要被检查,则接下来这些被选择并且处理返回到步骤46。当混叠的单独标签被控制电路20约束和控制以存储在相同的给定块内时,可以避免多个匹配判决器值的存在。这将移除图5中对步骤54的需要。
图6是示意性地示出在执行缓存更新时由控制电路20控制的操作的示例的流程图。在步骤56处,接收缓存更新请求。步骤58确定相关联的缓存存储器内要存储该缓存更新的组。步骤60读取步骤58处标识的组的标签条目。步骤62对步骤60处读取的标签条目与要执行的缓存更新的地址进行比较。如果不存在匹配并且在所读取的标签条目内没有判决器值,则处理前进到步骤64,在该处给定的块被分配用于存储新条目(可能包括受害者选择和驱逐操作)。
如果在步骤62处在所读取的标签条目内存在命中,并且在步骤60处读取的标签条目内没有判决器值,则处理前进到步骤66,在该处判定是把要存储的新数据项以第一模式存储为共享标签数据值还是以第二模式存储为单独标签数据值。如果把要存储的新数据值存储为共享标签数据值,则处理前进到步骤68,在该处将值存储到与缓存命中相对应的存储位置。如果在步骤66处确定将以第二模式把要存储的新数据项存储为单独标签数据值,则处理前进到70,在该处被匹配的共享标签的全部条目被驱逐并且然后通过使用步骤72和74在此标签条目内存储使用第二模式作为单独标签数据值和相关联的判决器值存储在该位置处的新的条目被存储在该。
如果步骤62处的确定标识步骤60处读取的标签包括一个或多个复合值,则处理前进到步骤76,在该处对那些一个或多个判决器值与缓存更新的地址进行比较。如果不存在匹配,则处理前进到步骤64。如果存在潜在的一个或多个匹配,则处理前进到步骤78,在该处读取相匹配的第一(或仅一个)判决器值的单独标签。步骤80然后对这些单独标签与更新请求地址进行比较。如果存在命中,则处理前进到步骤82,在该处确定正被更新的新数据是共享标签数据值还是单独标签数据值。如果新更新的数据值是单独标签数据值,则处理前进到步骤68,在该处对该单独标签数据值进行更新。如果要缓存的数据是共享标签数据值,则命中单独标签数据值中的一者需要驱逐包含该单独标签数据值的整个块并且这在步骤84处被执行。处理然后前进到步骤86,在该处确定是否存在步骤76处标识的需要被检查的任何其它判决器值以确定在步骤76处标识的潜在匹配之后是否发生实际的匹配。如果存在要被检查的其它判决器值,则处理返回到步骤78,在该处选择这些判决器值中的下一个并对其进行检查。如果不存在要被检查的其它判决器值,则处理从步骤86前进到步骤64,在该处针对共享标签数据值(即,整个缓存线)分配新的条目。
图7是示意性地示出在执行适用于例如只读缓存的简化的缓存更新操作时由缓存控制电路20执行的控制的示例的流程图。在步骤88处接收缓存更新操作。步骤90判定在相关联的缓存内哪组可能存储与缓存更新操作涉及的地址相对应的数据。步骤92然后读取步骤90处标识的组的标签条目。步骤94对步骤92处读取的标签条目与缓存更新操作的地址进行比较。如果不存在匹配,则处理前进到步骤96,在该处在所标识的组内分配新条目并且然后在步骤98处执行更新。如果步骤94处确定存在具有共享标签的匹配,则处理前进到步骤100,在该处判定与缓存更新相对应的新数据是多个共享标签数据值(例如,全缓存线)还是单独标签数据值。如果新数据值是多个共享标签数据值,则在步骤102处对条目进行更新。如果新条目是单独标签数据值,则步骤104使得相对应的多个共享标签数据值(针对其在步骤94处出现命中)无效,并且处理然后前进到步骤96,在该处在缓存存储器内的分配新条目并且将新数据写入到其中。
如果步骤94处确定所读取的标签条目包括判决器值,则处理前进到步骤106,在该处对判决器值与缓存更新的地址进行比较。如果这指示存在潜在匹配,则处理前进到步骤108,在该处那些潜在地匹配的单独标签数据值的条目在处理针对新条目的分配再次前进到步骤96之前被无效。如果在步骤106处没有标识潜在匹配,则处理直接前进到步骤96。
图8示意性地是示出缓存存储器110的另一示例实施例,该缓存存储器110包括标签存储器112和多个位存储电路块114。在该示例实施例中,标签存储器112内的标签条目都包括判决器值,该判决器值用于标识与多个位存储电路块114中给定块内的单独标签的潜在匹配。如果出现标识与判决器值中的一者的潜在匹配的命中,则可以对所标识的给定块内的单独标签进行检查以确认命中。在该示例实施例中,缓存存储器110不存储共享标签或共享标签数据值。使用判决器值连同存储在由该判决器值标识的给定块内的单独标签的技术允许支持高度的关联性,而不会不利地需要宽比较器来并行地比较大量标签。相反,实际上执行多个连续查找,首先是与判决器值相对应的查找,如果有必要的话,然后是与单独标签相对应的查找。
虽然本文已经参考附图详细描述示意性实施例,要理解的是,权利要求不限于这些精确的实施例,并且可以由本领域技术人员在其中实施各种改变、增加和修改而不背离所附权利要求书的范围和精神。例如,可以对从属权利要求的特征与独立权利要求的特征进行各种组合。
Claims (19)
1.一种缓存存储器,包括:
多个位存储电路块;以及
控制电路,该控制电路用于控制对所述多个块内的给定块的访问,使得所述给定块以下面两种模式中可选择的一种模式操作:
第一模式,该第一模式存储具有共享标签的多个共享标签数据值;以及
第二模式,该第二模式存储多个单独标签数据值和相应的单独标签。
2.如权利要求1所述的缓存存储器,包括用于存储多个标签条目的标签存储器,其中所述多个标签条目内与所述给定块相对应的给定标签条目存储以下各项中的一项:
当所述给定块处于所述第一模式中时,存储所述共享标签值;以及
当所述给定块处于所述第二模式中时,存储复合值。
3.如权利要求2所述的缓存存储器,其中,所述复合值包括指示所述给定块处于所述第二模式的第二模式旗标。
4.如权利要求2所述的缓存存储器,其中,所述复合值包括指示所述相应的单独标签的判决器值。
5.如权利要求4所述的缓存存储器,其中,所述判决器值是以下项中的一项:
多个独立计算的值,这多个独立计算的值依据所述相应的单独标签;以及
依据所述多个相应的单独标签计算的单个值。
6.如权利要求4所述的缓存存储器,其中,当所述给定块处于所述第二模式中时,所述控制电路响应于对所述给定块的访问请求,执行对所述判决器值以及与所述访问请求相关联的存储器地址值的至少一部分的比较来进行识别,在所述相应的单独标签都不与所述存储器地址值匹配时,所述访问请求终止。
7.如权利要求6所述的缓存存储器,其中,当所述比较标识所述相应的单独标签中的至少一个与所述存储器地址值潜在匹配时,所述控制电路从所述给定块读取所述相应的单独标签并对所述相应的单独标签与所述存储器地址值进行比较。
8.如权利要求4所述的缓存存储器,其中,所述控制电路控制单独标签数据值与相应的单独标签在所述多个块内的分配,使得当相同缓存组内检测到多个混叠单独标签时,所述多个混叠单独标签和相应的单独标签数据值被一起存储在所述多个块中的同一个块内,其中所述多个混叠单独标签在所述判决器值内彼此混叠。
9.如权利要求2所述的缓存存储器,其中,所述标签存储器和所述多个位存储电路块包括具有共享位线的存储器块,并且控制电路包括耦接到所述共享位线以提供对存储在所述标签存储器中的所述标签条目和存储在所述给定块中的所述相应的单独标签两者的访问的比较器电路。
10.如权利要求2所述的缓存存储器,其中,所述复合值包括针对所述多个单独标签数据值和相应的单独标签的驱逐控制数据,并且所述控制电路响应于所述驱逐控制数据来控制针对所述多个单独标签数据值和相应的单独标签的驱逐操作。
11.如权利要求10所述的缓存存储器,其中,所述驱逐控制数据包括针对所述多个单独标签数据值的相应的脏位,该相应的脏位指示所述多个单独标签数据值在被存储在所述给定块期间是否被改变。
12.如权利要求10所述的缓存存储器,其中,所述驱逐控制数据包括有效性数据,该有效性数据指示所述给定块是否包含有效数据,并且所述控制电路通过改变所述有效性数据来使所述多个单独标签数据值和相应的单独标签无效。
13.如权利要求1所述的缓存存储器,其中,所述缓存存储器是只读缓存存储器并且当将所述给定块从存储所述多个单独标签数据值和相应的单独标签改变为存储所述共享标签数据值时,所述控制电路使得与所述给定块相对应的缓存组内的所有的所述多个单独标签数据值和相应的单独标签无效。
14.如权利要求5所述的缓存存储器,其中,所述缓存存储器是只读缓存存储器并且当分配所述多个块中的一个块存储具有主题共享标签的主题共享标签数据值时,所述控制电路使得相同缓存组内具有与根据主题共享标签确定的判决器值相匹配的判决器值的任何存储的单独标签数据值和相应的单独标签无效。
15.如权利要求1所述的缓存存储器,其中,所述缓存存储器是存储器管理单元的一部分并且存储来自具有多个页表级别的分级页表的页表数据。
16.如权利要求15所述的缓存存储器,其中,所述控制电路控制所述缓存存储器依据所述页表数据对应于所述多个页表级别中的哪个级别来以所述第一模式或所述第二模式存储所述页表数据。
17.如权利要求1所述的缓存存储器,其中,所述共享标签数据值和所述单独标签数据值具有不同的大小和不同的用途。
18.一种操作具有多个位存储电路块的缓存存储器的方法,所述方法包括:
控制对所述多个块内的给定块的访问,使得所述给定块以下面两种模式中可选择的一种模式操作:
第一模式,该第一模式存储具有共享标签的多个共享标签数据值;
第二模式,该第二模式存储多个单独标签数据值和相应的单独标签。
19.一种缓存存储器,包括:
多个位存储电路块;以及
标签存储器,该标签存储器用于存储判决器值;其中
所述多个块内的给定块存储多个单独标签数据值和相应的单独标签;并且
所述判决器值指示所述相应的单独标签。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1600133.1A GB2546245B (en) | 2016-01-05 | 2016-01-05 | Cache memory |
GB1600133.1 | 2016-01-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107015922A true CN107015922A (zh) | 2017-08-04 |
CN107015922B CN107015922B (zh) | 2023-05-16 |
Family
ID=55406700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611270538.XA Active CN107015922B (zh) | 2016-01-05 | 2016-12-29 | 缓存存储器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10423534B2 (zh) |
KR (1) | KR20170082121A (zh) |
CN (1) | CN107015922B (zh) |
GB (1) | GB2546245B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109582601A (zh) * | 2017-09-13 | 2019-04-05 | Arm有限公司 | 缓存存储装置 |
CN111433742A (zh) * | 2018-01-22 | 2020-07-17 | Arm有限公司 | 多保护标签设置指令 |
US11762566B2 (en) | 2018-01-22 | 2023-09-19 | Arm Limited | Programmable mapping of guard tag storage locations |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10402337B2 (en) | 2017-08-03 | 2019-09-03 | Micron Technology, Inc. | Cache filter |
GB2566469B (en) | 2017-09-13 | 2021-03-24 | Advanced Risc Mach Ltd | Cache line statuses |
US10725927B2 (en) * | 2017-12-04 | 2020-07-28 | Beijing Panyi Technology Co., Ltd. | Method and apparatus for co-managed cache system |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101689146A (zh) * | 2007-06-29 | 2010-03-31 | 英特尔公司 | 分层的高速缓存标签架构 |
US20120054443A1 (en) * | 2010-08-27 | 2012-03-01 | Tarun Nakra | Partially sectored cache |
CN103136117A (zh) * | 2011-08-08 | 2013-06-05 | Arm有限公司 | 探听过滤器和非包含共享高速缓冲存储器 |
US20140181387A1 (en) * | 2012-12-21 | 2014-06-26 | Advanced Micro Devices, Inc. | Hybrid cache |
US20140189243A1 (en) * | 2012-12-28 | 2014-07-03 | Blas Cuesta | Sectored cache with hybrid line granularity |
-
2016
- 2016-01-05 GB GB1600133.1A patent/GB2546245B/en active Active
- 2016-12-05 US US15/369,193 patent/US10423534B2/en active Active
- 2016-12-15 KR KR1020160171208A patent/KR20170082121A/ko active IP Right Grant
- 2016-12-29 CN CN201611270538.XA patent/CN107015922B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101689146A (zh) * | 2007-06-29 | 2010-03-31 | 英特尔公司 | 分层的高速缓存标签架构 |
US20120054443A1 (en) * | 2010-08-27 | 2012-03-01 | Tarun Nakra | Partially sectored cache |
CN103136117A (zh) * | 2011-08-08 | 2013-06-05 | Arm有限公司 | 探听过滤器和非包含共享高速缓冲存储器 |
US20140181387A1 (en) * | 2012-12-21 | 2014-06-26 | Advanced Micro Devices, Inc. | Hybrid cache |
US20140189243A1 (en) * | 2012-12-28 | 2014-07-03 | Blas Cuesta | Sectored cache with hybrid line granularity |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109582601A (zh) * | 2017-09-13 | 2019-04-05 | Arm有限公司 | 缓存存储装置 |
CN109582601B (zh) * | 2017-09-13 | 2023-12-12 | Arm有限公司 | 缓存存储装置 |
CN111433742A (zh) * | 2018-01-22 | 2020-07-17 | Arm有限公司 | 多保护标签设置指令 |
CN111433742B (zh) * | 2018-01-22 | 2023-08-29 | Arm有限公司 | 用于数据处理的装置和方法、非暂态存储介质 |
US11762566B2 (en) | 2018-01-22 | 2023-09-19 | Arm Limited | Programmable mapping of guard tag storage locations |
Also Published As
Publication number | Publication date |
---|---|
KR20170082121A (ko) | 2017-07-13 |
GB2546245A (en) | 2017-07-19 |
US10423534B2 (en) | 2019-09-24 |
GB201600133D0 (en) | 2016-02-17 |
US20170192900A1 (en) | 2017-07-06 |
GB2546245B (en) | 2020-08-19 |
CN107015922B (zh) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107015922A (zh) | 缓存存储器 | |
US6640286B2 (en) | Cache control system | |
US7284096B2 (en) | Systems and methods for data caching | |
US7020748B2 (en) | Cache replacement policy to mitigate pollution in multicore processors | |
US7321954B2 (en) | Method for software controllable dynamically lockable cache line replacement system | |
US9734059B2 (en) | Methods and apparatus for data cache way prediction based on classification as stack data | |
US20100281218A1 (en) | Intelligent cache replacement mechanism with varying and adaptive temporal residency requirements | |
US4914582A (en) | Cache tag lookaside | |
CN109983536A (zh) | 响应标签匹配命令的存储电路 | |
US9176856B2 (en) | Data store and method of allocating data to the data store | |
CN100541452C (zh) | 处理高速缓存未命中的方法和装置 | |
CN115168248B (zh) | 支持simt架构的高速缓冲存储器及相应处理器 | |
JPH11509356A (ja) | キャッシュシステム | |
US20160019065A1 (en) | Prefetching instructions in a data processing apparatus | |
CN107278298A (zh) | 缓存器维护指令 | |
US20190155747A1 (en) | Performing maintenance operations | |
JP2019517689A (ja) | 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換 | |
CN109074313A (zh) | 缓存和方法 | |
US5822760A (en) | Cache-memory system having multidimensional cache | |
KR100987996B1 (ko) | 메모리 액세스 제어 장치 및 메모리 액세스 제어 방법 | |
CN110046107A (zh) | 存储器地址转换 | |
US7472226B1 (en) | Methods involving memory caches | |
US20190243778A1 (en) | Memory address translation | |
US20070028055A1 (en) | Cache memory and cache memory control method | |
JP2009015509A (ja) | キャッシュメモリ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |