CN105378685B - 数据存储装置和用于给数据存储装置分配数据的方法 - Google Patents
数据存储装置和用于给数据存储装置分配数据的方法 Download PDFInfo
- Publication number
- CN105378685B CN105378685B CN201480038132.1A CN201480038132A CN105378685B CN 105378685 B CN105378685 B CN 105378685B CN 201480038132 A CN201480038132 A CN 201480038132A CN 105378685 B CN105378685 B CN 105378685B
- Authority
- CN
- China
- Prior art keywords
- data
- entry
- tag
- array
- value
- 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
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
-
- 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/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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
技术领域
本发明涉及数据处理领域。更具体地,本发明涉及用于存储数据的数据存储装置和用于给数据存储装置分配数据的方法。
背景技术
数据处理装置可以具有用于存储数据的数据存储装置,例如缓存。对于诸如缓存之类的数据存储装置来说以“组相联(set-associative)”的方式被组织是相当常见的,这意味着与特定存储器地址相关联的数据值仅可以被存储在数据存储装置内有限的一组位置中,该组位置基于数据值的地址来被选择。为了记录哪些数据值被存储在哪个位置中,每个数据存储位置通常具有相应的用于存储标签值的标签存储位置,其中标签值指示数据存储位置中所存储的数据值的地址的一部分。当在数据存储装置中搜索由目标地址标识的数据值时,数据存储装置搜索与可以存储数据值的一组数据位置相对应的所有可能的标签位置,并且如果这些标签位置中的一个标签位置存储与目标地址相匹配的标签值,则数据值从该标签位置被访问。由于在数据存储装置中的数据条目和标签存储中的标签条目之间存在一对一的映射,因此一旦已经发现相应的标签则会很容易定位所需要的数据位置。
然而,搜索标签位置的集合消耗能量。本技术寻求提供比传统数据存储装置更节能的数据存储装置。
发明内容
从一方面看,本发明提供了一种用于存储数据的数据存储装置,包括:
数据阵列,该数据阵列包括用于存储数据值的多个数据条目;
标签阵列,该标签阵列包括用于存储标签值的多个标签条目,用于追踪哪些数据值被存储在数据阵列中;以及
控制电路,该控制电路被配置为控制数据值到所述数据阵列的分配和控制相应标签值到所述标签阵列的分配,以执行以下各项操作:
(a)将所述数据值分配到所述数据阵列的N个数据条目的相应数据组的所选择的数据条目,其中N是小于所述数据阵列的数据条目的总数的整数,所述相应数据组基于所述数据值的地址来被选择,其中所述数据值不能被分配给不在所述相应数据组中的数据条目;以及
(b)将所述相应标签值分配到所述标签阵列的M个标签条目的相应标签组的所选择的标签条目,其中M是整数并且M<N,所述相应标签组基于所述数据值的所述地址来被选择,其中所述标签值不能被分配给不在所述相应标签组中的标签条目;以及
(c)在所述所选择的标签条目中存储指针,该指针标识所述相应数据组中的哪个数据条目是所述所选择的数据条目。
在传统的数据存储装置中,数据阵列的关联性与标签阵列的关联性相同。这意味着具有目标地址的数据值可以被分配给基于地址所选择的数据阵列的有限的一组数据条目中的一个数据条目。每个数据条目在标签阵列中具有相应的标签条目,并且因此与数据值相对应的标签值可以被存储在有限的一组标签条目中的一个标签条目中,其中标签组中的标签条目的数量与数据组中的数据条目的数量相同。为了定位数据阵列中的数据值,搜索与数据值的目标地址相对应的整个标签组是必要的。然而,针对任何给定的标签访问,最多仅有一个标签条目将匹配该目标地址,并且对该组中的其它标签条目的访问消耗功率并且增加访问时间。因此,就功率消耗和访问延迟而言,增加标签关联性是昂贵的。
对该问题的一个可能的解决方案可能是降低数据阵列和标签阵列这二者的关联性,从而使得针对每个标签访问需要搜索较少的标签位置。然而,对于数据阵列来说,为了性能原因,较大的关联性通常是可取的,因为这样降低了以下情况的可能性:当数据值需要被分配给数据存储装置时,可以存储新的数据值的所有可能位置已经是满的。在这种情况下,旧的数据值将需要从相应的一组数据条目中的一个数据条目中被逐出,并且在后续的访问上,该数据值将需要从更高级别的数据存储装置或存储器中被取出并且被重新分配给数据存储装置。这增加了访问延迟。因此,降低数据阵列和标签阵列这二者的关联性可能降低处理性能。
为了解决这些问题,本技术提供了具有数据阵列和标签阵列的数据存储装置,其中标签阵列的关联性小于数据阵列的关联性。也就是说,当数据值被控制电路分配给数据存储装置时,数据值可以位于N个数据条目的相应的数据组中的任意数据条目,并且不能被分配给不在该组中的数据条目。另一方面,相应的标签值仅可以位于标签阵列的M个标签条目的相应的标签组中的一个标签条目,其中M小于N。由于数据条目和标签条目之间不再有一对一的映射,因此标识相应的数据组中存储相应的数据值的的数据条目的指针被存储在标签条目中。
该方法是反直觉的(counter-intuitive),这是由于对于标签阵列来说具有与数据阵列相同的逻辑布置是常见的。然而,本公开的发明人意识到事实上提供具有比数据阵列的关联性更小的关联性的标签阵列可以降低数据存储装置的总体功率消耗,这是因为当针对给定数据值搜索数据存储装置时,较少的标签条目可以存储相应的标签值,因此较少的标签条目需要被搜索,并且这样不只是补偿了与将指针存储到相应的数据条目的每个标签条目相关联的任何额外的开销。另外,利用该技术,可以节省功率,而仍允许数据阵列的关联性被维持。
数据阵列和标签阵列可以被实现为单独的存储器,或被实现在既存储数据值又存储相应的标签值的共同的存储器内。
由于每个标签组的标签条目的数量小于每个数据组的数据条目的数量,因此可以提供比数据组的数量更多数量的标签组,从而使得与数据值相对应的足够的标签值可以被存储。例如,标签阵列可以包括M个标签条目的Y个标签组,并且数据阵列可以包括N个数据条目的Z个数据组,其中Y和Z是整数并且Y大于Z。例如,每个标签组可以与比每个数据组的地址范围更小的地址范围相对应,从而使得标签组的总体地址覆盖范围等价于数据组的总体地址覆盖范围。
在一些示例中,标签条目的总数可以大于数据条目的总数,从而使得(Y×M)≥(Z×N)。这可以有助于降低与不同的地址相对应的访问竞争同一标签组时的冲突。通过提供标签条目的额外的标签组,可以降低冲突的数量,因此可以提高数据存储装置中的命中率。为了使得地址到数据组和标签组的映射更加方便,数据条目的数量和标签条目的数量之间的比率是二的幂(例如,二或四)这是有用的。
响应于用于访问来自数据阵列的目标数据值的访问请求,数据存储装置的控制电路可以执行第一标签查找,用于从M个标签条目的相应的标签组中的每个标签条目读取标签值。由于标签组小于数据组,因此不必读取与相应的数据组的尺寸相对应的N个标签条目,从而使得功率消耗被降低。基于从与目标地址相对应的标签组读取的标签值,控制电路可以确定数据阵列是否存储目标数据值。访问请求可以是用于从数据存储装置读取数据值的读取访问请求或可以是用于将数据值写到数据存储装置的写入访问请求。
如果标签条目的读标签组中的读标签值中的一个读标签值与标签地址的标签部分相对应,则存储所需的数据值的目标数据条目可以使用目标地址和存储相应的标签值的标签条目的指针的至少一部分来确定。目标数据值然后可以在目标数据条目中被访问。因此,指针帮助定位数据阵列中的数据值。其它参数(例如,存储相应的标签值的标签条目)也可以被用于确定目标数据条目这是可能的。
为了获得目标数据值而对目标数据条目的访问可以在第一标签查找被执行来读取标签值的处理周期之后的处理周期中发生。通过将数据访问延迟一个周期,标签访问可以被提前完成,从而已经知道哪个数据条目存储所需的数据值。这意味着不必读取相应的数据组的所有数据条目,因此可以降低功率消耗。
如果来自相应的标签组的所有读取标签值都不与目标地址的标签部分相对应,则控制电路可以将新的数据值分配给相应的数据组的N个数据条目中的一个数据条目,并且将标签部分分配给相应的标签组的M个标签条目中的一个标签条目,到所选择的数据条目的指针被存储在所选择的标签条目中。新的数据值可能需要从另外的数据存储装置(例如,更高级缓存或存储器)中被获取。
当新的数据值被分配给数据存储装置时,另一数据值可能必须从数据存储装置中被逐出。如果被逐出的数据值是脏的,则它可能需要被写回到更高级别的数据存储装置中。如果是这样,则它的地址可以从标签阵列中的相应的标签值中被确定。针对相同数据组中的数据值可能存在可以存储标签值的数个不同的标签组,因此与被逐出的数据值相关联的标签条目是在与在第一标签查找中被读取以确定目标数据值是否在数据存储装置中的标签组不同的标签组中这是可能的。如果是这样,则第二标签查找可以被执行以读取与要被逐出的数据值相对应的标签值。另一方面,如果被逐出的数据值在与已经被查找的标签组相同的标签组中具有相应的标签条目,则第二标签查找可以被省略。第二标签查找未显著影响处理性能,这是因为它不在关键路径上(不论是否有标签错过或命中,并且在命中的情况下存储所需的数据的方式已经被确定)。
当将数据值分配给数据存储装置时,控制电路可以执行牺牲选择(victimselection),用于选择用于存储来自相应数据组的N个可用数据条目的数据值的数据条目。例如,牺牲选择可以考虑相应数据组中存储的数据值是干净的还是脏的,并且可以优先地选择包含干净数据值(不需要被写回到存储器)的数据条目。另外,牺牲选择可以考虑有效性信息,该有效性信息指示数据组的相应数据条目内的数据值是否是有效的。如果数据值是有效的,则相应的数据条目可以被优先选择为牺牲数据条目。
数据存储装置可以具有牺牲选择数据阵列,该牺牲选择数据阵列用于存储牺牲选择数据以供在牺牲选择中使用。例如,牺牲选择数据可以包括用于估计条目的相应数据组中的哪个数据条目最近已被使用的信息,以供最近最少使用(LRU)或伪最近最少使用(LRU)牺牲选择算法使用。例如该信息可以指示数据条目最近被访问的顺序。其它类型的牺牲选择数据可以包括关于特定数据条目被访问的频率的指示和关于特定数据条目是否被视为锁定(指示那些数据条目中的数据不能被逐出)的指示。
在传统的缓存中,牺牲选择数据通常与相应的标签值相关联,并且当确定牺牲条目时,针对相应标签组中的所有标签条目的牺牲选择数据被核查。然而,由于在本公开中标签组比数据组具有更低的关联性,针对一个标签组仅考虑牺牲选择数据将降低可用于选择的数据条目的数量,有效地降低了数据阵列的关联性(这将损害处理性能)。替代地,控制电路可以使用与N个数据条目的整个数据组相对应的牺牲选择条目组的牺牲选择数据来执行牺牲选择,以保持较高关联性数据阵列的性能益处。
在牺牲选择之后,之前与第一标签条目相关联的数据条目现在变得与第二标签条目相关联这是可能的。这可能在数据条目中存储的新数据值与之前存储的数据值的标签组不同的标签组相对应的情况下发生。第一标签条目中的标签值不需要被逐出,并且将该标签值标记为无效的是足够简单的。因此,标签阵列可以随着时间存储数个无效且不与数据阵列中的有效数据值相对应的标签值。如果标签阵列具有的标签条目的数量比数据阵列具有的数据条目的数量多,这尤其是可能的。由控制电路执行的牺牲选择处理可以考虑这些无效的标签值,这是由于这些无效的标签值可以指示已经从数据阵列中被逐出的数据值的部分历史。无效标签值可用于实现更高级的数据存储分配策略。
在一些示例中,牺牲选择可以选择特定的数据条目,并且然后可以选择与目标地址相对应的标签组的标签条目中的一个标签条目作为相应的标签条目。
在其它情况下,牺牲选择可以首先选择给定的标签条目,然后相应的数据组的数据条目可以在之后被选择。由于数个原因,该方法是方便的。首先,这意味着所选择的标签条目中存储的指针可用于定位要被选择用于存储新数据值的相应的数据条目。其次,所选择的标签条目中存储的标签值可用于标识已经存储在相应数据条目中的任何数据值的地址,这在该数据值需要被写回到更高级的数据存储装置的情况下是有用的。
在一些实现方式中,每个标签条目可以指向相应的数据组的数据条目中的任意数据条目。这在相应的数据值和标签值可以被存储的位置中提供了最大的自由。不管相应的标签组中的哪个标签条目存储特定的标签值,相应的数据值可以被存储在相应数据组的数据条目中的任意数据条目中。
然而,实际上将每个标签条目限制为指向相应数据组的数据条目的子是更有效的。每个标签条目可以与相应数据组的条目的给定子集相对应。例如,数据条目的每个子集可以包括N/M个数据条目。如果数据值被存储在数据组的数据条目的特定子集中,则相应的标签值可以仅位于与该子集相对应的标签条目中。虽然该方法未提供对分配的一些限制(当不具有针对相应的数据条目的冲突时,可能偶尔引起针对特定标签条目的冲突),该类型的标签冲突被期望很少发生。通过限制可以被给定标签条目指向的数据条目的数量,具有较少的位的指针可以被用于标签阵列中,这在整个标签阵列上可以节省大量的存储容量。即使标签冲突偶尔发生,数据存储装置的总体功率消耗仍可以被降低。
为了将目标地址映射到相应的数据组和相应的标签组,不同的哈希函数(hashfunction)可以分别被用于数据阵列和标签阵列。第一哈希函数可以被应用到地址的第一部分以标识相应的数据组,并且第二哈希函数可以被应用到地址的第二部分以标识相应的标签组。哈希函数可以是直接映射函数,该直接映射函数不改变地址值(即,地址的第一部分和第二部分可以直接索引到相应的数据组和标签组中)。替代地,诸如异或(XOR)操作之类的哈希函数可用于将地址的索引部分转换为数据组或标签组的标识符。
用于不同哈希函数的地址的第一部分和第二部分可以是相同尺寸的或可以是不同尺寸的。通常,如果标签组的数量比数据组的数量多,则用于标识标签组的第二部分可以大于用于标识数据组的第一部分。这意味着作为标签值被存储在标签阵列中的剩余标签部分将小于标签关联性与数据关联性相同的传统数据存储装置下的情况。因此,在本技术中,标签值本身可以具有比传统数据存储装置中的位更少的位,补偿表示相应数据阵列的指针的额外的位,从而使得每个标签条目中的位的总数与传统数据存储装置中近似相同。
由于标签条目和数据条目之间不再存在固定关系,因此单独的有效数据阵列可以分别地被维持用于数据条目和标签条目以追踪存储有效数据的条目。
从另一方面看,本发明提供了一种用于存储数据的数据存储装置,包括:
用于存储数据的数据阵列装置,该数据阵列装置包括用于存储数据值的多个数据条目装置;
用于存储标签的标签阵列装置,该标签阵列装置包括用于存储标签值的多个标签条目装置,用于追踪哪些数据值被存储在数据阵列装置中;以及
用于控制数据值到所述数据阵列装置的分配和控制相应标签值到所述标签阵列装置的分配的控制装置,以执行以下各项操作:
(a)将所述数据值分配到所述数据阵列装置的N个数据条目装置的相应数据组的所选择的数据条目装置,其中N是小于所述数据阵列装置的数据条目装置的总数的整数,所述相应数据组基于所述数据值的地址来被选择,其中所述数据值不能被分配给不在所述相应数据组中的数据条目装置;
(b)将所述相应标签值分配到所述标签阵列装置的M个标签条目装置的相应标签组的所选择的标签条目装置,其中M是整数并且M<N,所述相应标签组基于所述数据值的所述地址来被选择,其中所述标签值不能被分配给不在所述相应标签组中的标签条目装置;以及
(c)在所述所选择的标签条目装置中存储指针,该指针标识所述相应数据组中的哪个数据条目装置是所述所选择的数据条目装置。
从另一方面看,本发明提供了一种用于给数据存储装置分配数据值的方法,所述数据存储装置包括数据阵列和标签阵列,其中数据阵列包括用于存储数据值的多个数据条目,标签阵列包括用于存储标签值的多个标签条目,用于追踪哪些数据值被存储在数据阵列中;所述方法包括:
将所述数据值分配到所述数据阵列的N个数据条目的相应数据组的所选择的数据条目,其中N是小于所述数据阵列的数据条目的总数的整数,所述相应数据组基于所述数据值的地址来被选择,其中所述数据值不能被分配给不在所述相应数据组中的数据条目;
将所述相应标签值分配到所述标签阵列的M个标签条目的相应标签组的所选择的标签条目,其中M是整数并且M<N,并且所述相应标签组基于所述数据值的所述地址来被选择,其中所述标签值不能被分配给不在所述相应标签组中的标签条目;以及
在所述所选择的标签条目中存储指针,该指针标识所述相应数据组中的哪个数据条目是所述所选择的数据条目。
从结合附图所阅读的说明性实施例的下面的详细描述中,本发明的上述的和其它的目标、特征和优势将是显而易见的。
附图说明
图1示出了传统数据存储装置中的数据条目和标签条目的逻辑布置的示例;
图2示出了数据阵列的关联性大于标签阵列的关联性的数据存储装置的逻辑布置的示例;
图3示出了根据本公开的数据存储装置的示例;
图4示出了用于访问图3的数据存储装置中的数据的方法;
图5A和5B示出了用于给数据存储装置分配数据值的方法;
图6A到图6C示出了数据条目、标签条目和牺牲选择数据条目中作为连续数据值被存储的信息被分配给数据存储装置的示例;
图7示出了其中每个标签条目与相应数据组的数据条目的子集相关联的示例实现方式;
图8是对包括具有不同关联性的数据阵列和标签阵列的数据存储装置的性能与包括具有相同关联性的数据阵列和标签阵列的传统数据存储装置的性能进行比较的图示;
图9是表示由本技术的数据存储装置实现的估计节能的表。
具体实施方式
图1示出了传统数据阵列2的逻辑布置的示例,传统数据阵列2包括很多用于存储数据值的条目4。条目4在逻辑上被布置为路(way)6和组8,每个组8包括来自每个路6的条目4。路6的数量(或每个组8中条目4的数量)被称为数据阵列的“关联性”。将理解的是,图1仅示出了条目4的逻辑布置,并且条目4的物理布置可以是不同的。例如,相同的组8或相同的路4的“邻近的”条目实际上可以被布置在存储器设备中的分离的物理位置处。
要被存储到数据阵列2的每个数据值都具有相应的地址,该相应的地址由索引部分9和标签部分10构成。数据值可以被存储在基于数据值的地址的索引部分9来确定的相应的组8的条目4中的任意条目中,并且不能被存储在其它组的条目4中。由于存在数个可以存储数据值的条目4,地址的标签部分10与数据值12一起被存储到所选择的条目4,从而使得后续的访问可以确定哪个条目存储数据值12。每个条目4还可以存储与数据值12相关联的状态信息,例如有效位或脏位,其中有效位指示数据阵列2中存储的数据是否是有效的,脏位指示数据值12与更高级数据存储装置(例如,更高级缓存(例如,L2或L3缓存)或存储器)中的相应的数据值相比是否已经被修改。
图1示出了被存储在数据阵列2的相同条目4中的标签值10和相应的数据值12。在一些数据阵列中,单个存储器设备既存储标签值10也存储数据值12。在其它示例中,单独的数据存储器和标签存储器可以被提供用于分别存储数据值12和标签值10。
在传统的数据存储装置中,在用于存储数据值12的数据条目和用于存储标签值10的标签条目之间存在一对一的关系。当数据值需要从数据存储装置2被访问时,则相应的组8的所有标签10被读取,并且如果这些标签10中的一个标签与目标地址的标签部分相匹配,则相应的数据值被返回。然而,由于只有一个标签可以与目标地址的标签部分相匹配,其它标签读取是不必要的并且这纯粹是浪费功率和增加访问时间。组8中的条目的数量越多,浪费的标签读取的数量就越多,因此功率消耗就越大。虽然降低数据存储装置2的关联性以降低必须被读取的标签的数量这是可能的,但对于数据条目来说,期望给定量的关联性以维持命中率和处理性能。因此,降低数据存储装置2的关联性通常是不可取的。
如图2中所示,本技术通过提供具有关联性低于相应数据阵列40的关联性的标签阵列30的数据存储装置20来解决该问题。数据阵列40包括很多用于存储数据值的数据条目42。数据条目42在逻辑上被布置为数据组44,每个数据组包括来自每个路46的一个条目。数据阵列40的关联性是W,这表示具有W个路46,或每个数据组44具有W个条目42。在该示例中,W等于4。具有目标地址的数据值可以被存储在相应数据组44的W个条目42中的任意条目中,相应数据组44使基于目标地址的索引部分49被选择的。
标签阵列30具有很多标签条目32,用于存储与数据阵列40中的数据值相对应的标签值。标签条目32被布置为标签组34,每个标签组包括w个条目,其中w是标签阵列30的关联性。标签阵列30的关联性w小于数据阵列40的关联性W。在该示例中,标签阵列30的关联性w是2。因此,虽然数据值可以被放置在相应数据组44内的W个位置中的任意位置,但是相应的标签值仅可以被放置在相应标签组34的w个标签条目32中的一个标签条目中。此外,标签组34基于目标地址的索引部分39来被标识,但是用于标识标签组34的索引部分39可以是与用于标识数据组49的索引部分49不同的地址部分。
由于每个标签组具有的标签条目比每个数据组具有的数据条目少,因此在每个数据访问时需要查找较少的标签。这意味着消耗较少的功率。然而,数据阵列的关联性被维持以实现较高的命中率。因此,数据阵列40和标签阵列30的非对称布置在未显著影响性能的情况下提高了功率效率(参见下面图8和图9针对非对称数据存储装置20的性能和功率消耗与如图1中所示的传统对称数据存储装置的性能和功率消耗的对比)。
由于现在标签条目32和数据条目42之间存在一对多的关系,每个标签条目32具有指针37,指针37指示相应数据组44的数据条目42中的哪个数据条目存储相应的数据值。当访问数据存储装置时,来自包含针对目标地址的匹配标签值的标签条目32的指针37被用于定位存储相应数据值的数据条目42。
为了给标签值提供足够的空间,标签阵列30具有的标签组34比数据阵列40具有的数据组44更多。优选地,标签条目32的总数大于数据条目42的总数,例如标签条目32的总数是数据条目42的总数的2倍、4倍或8倍(或比率是2的一些其它幂)。提供更多数量的标签条目32对降低针对标签条目的竞争是有用的。由于标签条目32比数据条目42多,在任何时候一些标签条目可能存储无效标签值38,无效标签值38不与数据存储装置40中的有效数据值相对应。无效标签条目38由图2中的Z表示。无效标签条目38中的信息可以在执行牺牲选择时被使用,这是由于该信息表示过去的标签访问的部分历史。
图3示出了更详细示出数据存储装置20的示例。如图2中所示,数据存储装置20具有数据阵列40和标签阵列30,并且数据阵列40的关联性大于标签阵列30的关联性。在该示例中,数据组44各自包括N个数据条目,而标签组34各自包括M个标签条目,其中N大于M。目标地址具有索引部分50和标签部分52。索引部分50服从数据哈希函数54以获得用于标识与目标地址相对应的数据组44的数据索引。索引部分50还服从标签哈希函数56以生成用于标识目标地址的相应标签组34的标签索引。数据哈希函数和标签哈希函数54、56可以是不同的函数或可以是相同的函数。在一些示例中,哈希函数54、56可以简单地将索引部分50直接映射到数据组或标签组44、34的索引,而在其它情况下哈希函数54、56可以例如使用具有预定常数的XOR函数来将索引部分转换为不同的数值。与数据哈希函数54相比,标签哈希函数56可以使用目标地址的更多位,从而使得与给定标签组34相对应的地址的范围小于与数据组44相对应的地址的范围。
数据存储装置20还具有访问控制电路60,用于控制对数据阵列40和标签阵列30的访问。访问控制电路60具有牺牲选择策略62,用于选择条目42、32中的哪些被分配有数据值和标签值。数据存储装置20还具有临时数据存储装置70(例如很多寄存器或存储器),用于在访问被执行时存储临时值。数据可以被临时存储在临时数据存储装置70中,以避免之后需要再次从数据存储装置20读取它。
数据存储装置20具有牺牲选择阵列72,用于存储由牺牲选择策略62使用的牺牲选择数据,以供确定数据条目42和标签条目32中的哪些应该存储新分配的数据值和标签值。在该示例中,牺牲选择阵列包括标签状态信息阵列80和数据状态信息阵列90。标签状态信息阵列80包括若干标签状态条目,每个标签状态条目与标签阵列30的标签条目32中的一个标签条目相对应,而数据状态信息阵列90包括数个数据状态条目,每个数据状态条目与数据阵列40中的数据条目42中的一个数据条目相对应。
图3的下面部分示出了各种阵列30、40、80、90的条目中存储的信息的示例。数据阵列40中的数据条目42存储数据值。标签阵列30中的相应标签条目32存储标签值33,标签值33表示相应数据值的地址的标签部分52。标签条目还包括指针37,指针37标识存储数据值的相应数据条目42。
标签状态信息条目110包括排序信息112,排序信息112至少近似地表示各种标签条目被访问的顺序。排序信息112对于实现各种牺牲选择策略62(例如最近最少使用或伪最近最少使用)是有用的。标签状态信息条目110还包括脏位114,脏位114用于指示数据阵列40中的相应数据值是干净的还是脏的。与更高级数据存储装置中的数据值相比,如果数据值未被修改则数据值是干净的,而如果它已经被修改则数据值是脏的。标签状态信息条目110还包括标签有效位,该标签有效位指示相应标签条目32是否是有效的。如果标签条目32与数据阵列40中的有效数据值相对应,则标签条目32是有效的。
数据状态信息条目120包括数据有效位122,数据有效位122指示相应数据条目42中的数据值是否是有效的。虽然图3示出了标签和数据状态信息阵列80、90中的牺牲选择数据的特定布置,但是它还可以被不同地布置。例如,脏位114或排序信息112可以在数据状态信息条目120中而不是在标签状态信息条目112中。另外,虽然图3示出了单独的标签状态信息和数据状态信息阵列80、90,但是在一些实施例中,这些阵列可以被合并到单个阵列中。另外,在一些实施例中,标签状态信息阵列80可以与标签阵列30合并,而数据状态信息阵列90可以与数据阵列40合并。因此,具有可以布置牺牲选择数据的很多方式。
标签状态信息条目和数据状态信息条目110、120被用于由访问控制电路60执行的牺牲选择策略62。虽然标签阵列30的关联性小于数据阵列40的关联性,但是访问控制电路60使用与整个数据组44相对应的若干条目的标签状态信息和数据状态信息来执行牺牲选择。在牺牲选择中,考虑可以指向相应数据组44的数据条目42的所有标签条目32的标签状态信息条目110。这确保减少的标签关联性不影响向数据组44的任何位置分配数据的能力,而维持数据组的关联性,从而维持命中率。
图4示出了用于处理图3的数据存储装置中的数据访问的方法。在步骤150处,指定要被读取或要被写入数据存储装置20的数据值的目标地址的读取或写入访问被接收。在步骤152处,访问控制电路60通过将标签哈希函数56应用到目标地址的索引部分50来获得标签索引。在步骤154处,访问控制电路60查找来自由标签索引标识的标签组34的M个标签值和指针,并且将这些标签和指针存储在临时数据存储装置70中。在步骤156处,访问控制电路60确定是否存在标签命中(也就是说,读取的标签中是否有标签与目标地址的标签部分52相匹配)。如果存在标签命中,则在步骤158处,目标数据条目使用目标地址的索引部分50和具有匹配标签的标签条目32中存储的指针37来确定。索引部分服从数据哈希函数54以标识数据阵列40中的相应数据组44的索引。指针标识该数据组44内存储所需的数据值的数据条目。然后在步骤160处,访问控制电路60在步骤154处标签被查找的周期之后的处理周期中访问目标数据条目。通过延迟数据访问至下一周期,在访问数据阵列之前等待步骤154和156中的标签对比的结果这是可能的,使得只有一个数据条目42需要被访问,从而节约了功率。在步骤162处,牺牲选择信息被更新(例如,排序信息112和脏位114可能需要被更新)。因此,当图1中所示的传统缓存布置将在每个数据访问查找N个标签位置(其中N是每个数据组8中的数据条目的数量)时,利用图2和图3的减少的标签关联性,在步骤154处只有M个标签位置需要被读取,这样节约了功率并且减少了访问时间。
如果在步骤156处存在标签错过(即,步骤154处读取的M个标签中的任何标签都不与目标地址的标签部分52相匹配),则方法继续进行到步骤170,在步骤170中,分配程序被执行以将所需数据值分配到数据存储装置20的数据条目42并且将相应的标签值分配到标签条目32。图5A和图5B中更详细示出了分配过程170的示例。
在图5A的步骤200处,访问控制电路60读取与目标地址相对应的数据组44的数据条目42的N个数据状态条目120的数据有效位122。在步骤202处,访问控制电路60确定这些数据有效位122中是否有数据有效位被清除(例如,等于0),这表示相应的数据值是无效的。如果有数据有效位被清除,则在步骤204处,具有未被设置的有效位122的条目中的一个条目被选择用于存储新的数据值。因此,无效数据条目122被优先地选择用于存储新分配的数据值,以避免可能从缓存中逐出其它数据值。
另一方面,如果相应数据组44的所有数据有效位122都被设置(例如,等于1),则数据值将需要从数据存储装置20被逐出,从而为新的值让出地方。在步骤204处,牺牲选择算法被执行以选择与要被逐出的数据值相对应的牺牲标签条目32。牺牲标签条目从可以指向与新数据值的目标地址相对应的数据组44的标签条目32中的任意标签条目中被选择。不必从与图4的步骤154处被查找的标签组34相同的标签组34中选择牺牲标签条目。牺牲选择算法选择具有被设置的相应标签有效位116的有效标签条目作为牺牲标签条目,以确保牺牲标签条目将与数据值要被逐出的有效数据条目相对应。任何适当的牺牲选择策略可以用于选择特定的标签条目32。例如,最近最少使用或伪最近最少使用策略可以使用排序信息112来至少近似地确定哪个标签条目32被最近最少被访问(假设最近最少使用的条目在未来最不可能被需要,因此最适用于逐出)。替代地,其它牺牲选择策略62可以使用非最近最多使用近似或最近最少使用二进制近似。另外,脏位114可以被考虑,从而使得如果标签条目与干净的数据相对应则它们被优先地选择,以避免脏数据的写回(这将增加访问延迟)。
在步骤204处无论哪种技术被用于选择牺牲标签条目,该方法然后继续进行到步骤206,在步骤206处确定牺牲标签条目是否在与步骤154处被查找的标签组34相同的标签组34中。如果是,则在步骤154处牺牲标签条目的指针37和标签值33将已经被存储到临时数据存储装置70,因此不必再从标签阵列30中读取它们。为了节省时间和能量,在步骤208处,牺牲标签条目的指针37和标签值33从临时数据存储装置70被读取。另一方面,如果在步骤206处确定牺牲标签条目是在与已经被查找的标签组34不同的标签组,则在步骤210处,第二标签查找被执行以从其它标签组34中的牺牲标签条目读取指针37和标签值33。针对处理性能来说,该第二标签查找不在关键路径上,因为标签命中/错过已经被确定。
方法然后继续进行到步骤212,在步骤212中,所选择的数据条目42使用牺牲标签条目的指针37来确定。在步骤214处,访问控制电路60确定相应脏位114是否被设置(例如,等于1)。如果脏位114未被设置,则写回是不必要的。然而如果脏位114被设置,则在步骤216处执行写回。写回地址基于与包括步骤208或210处所读取的牺牲标签条目和标签值33的标签组34相对应的索引部分来被识别,然后数据值从所选择的数据条目被写入由写回地址所标识的更高级数据存储装置中的位置。牺牲标签条目的标签有效位116然后被清除以指示标签条目32不再与数据阵列40中的有效数据相对应。
此时,所选择的数据条目已被选择用于存储新分配的数据值和该条目内已经被逐出的任何数据。然后,用于存储相应标签值的标签条目被选择。方法继续进行到图5B的步骤220,不论步骤204处是否选择了无效数据条目或步骤212处是否选择了已经被占用的数据条目,图5B的步骤220都被执行。在步骤220处,访问控制电路60确定标签组34内是否存在与具有未被设置的有效位并且可以指向所选择的数据条目的目标地址相对应的标签条目。如果存在,则在步骤221处选择无效标签条目32作为所选择的标签条目。否则,则在步骤222处选择已经有效的标签条目,相应数据条目中存储的任何数据被逐出(如果数据是脏的则被写回),然后相应数据条目的数据有效位122被清除。然而,由于标签条目32的数量比数据条目42的数量多,因此期望步骤222将很少被要求并且大部分时候将存在可用的无效标签条目。
在步骤224处,目标地址的标签部分52和指示所选择的数据条目42的指针37被写入所选择的标签条目32。在步骤226处,与所选择的标签条目32相对应的标签有效位116被设置。如果要被写入所选择的数据条目的新的数据值不同于更高级处所存储的相应值,则脏位114也被设置。在步骤228处,新的数据值被写入204或214处被选择的所选择的数据条目42。最后,在步骤230处,与所选择的数据条目相对应的数据状态信息条目120的数据有效位122被设置。新存储的数据值可用于由发出原始访问请求的处理使用。然后该方法返回到图4的步骤162,在图4的步骤162中,牺牲选择信息的排序信息112被更新以反映最近的访问。
因此,提供与数据阵列的关联性相比具有减少的关联性的标签阵列,使得在给缓存分配新的值时产生很少的额外的复杂性。然而,如果命中率是合理地高,则分配通常将不被要求,并且在访问较少的标签条目中每个数据访问上获得的功率节省远远超过分配时偶尔招致的额外的开销。因此,降低了总的功率消耗。
图6A到6C示出了将图5A和5B的分配机制应用到数据存储装置(其中,数据阵列的关联性为4,并且标签阵列的关联性为2)的简化示例。在该示例中,数据组44与具有索引部分0b00XX的地址相对应,并且具有与索引部分0b0000、0b0001、0b0010和0b0011相对应的四个标签组32-0到32-3,这四个标签组可以存储与数据组44中的数据值相对应的标签值。标签组32-0到32-3的每个标签条目具有相应的标签状态信息条目110-00到110-31(标签状态信息条目和标签条目之间的映射被示出在图6A中),并且数据组44的每个数据条目具有相应的数据状态信息条目120-0到120-3。
图6A示出了数据组44、标签组34、标签状态信息阵列80和数据信息状态阵列90中的数据的初始布置的示例。对目标地址0b00111010的数据访问然后被接收。目标地址的索引部分0b0011与标签组34-3相对应。来自该标签组的标签被读取并且标签错过被检测到,这是因为标签组34-3中的任何标签都不与目标地址的标签0b1010相匹配(在该情况中,是因为标签组34-3中的所有标签条目都是无效的)。标签错过意味着分配是必要的。
因此,访问控制电路60检查是否有相应数据组的数据条目清除了其相应有效位(图5A的步骤202)。在图6A中,数据状态信息条目120-3的有效位等于0(未被设置),并且这指示数据组44的相应数据条目3未被占用。因此,该数据条目被选择用于存储新的数据值。
因此,如图6B中所示,新数据值D被存储到数据组44的数据条目3。此外,根据图5B的步骤220和224,相应标签组34-3的空标签条目被选择来存储新的标签(在该示例中,标签组34-3的条目30已被选择)。数据值D的地址的标签部分0b1010与指针0b11(标识数据组44的数据条目3存储相应的数据值D)一起被存储在所选择的标签条目中。此外,图6B示出了相应的标签状态信息条目110-30利用新的排序信息被更新,并且该条目110-30的有效位V被设置。相应数据状态信息条目120-3中的数据有效位也被更新以指示有效数据。因此,在第一访问之后,各种阵列中的数据如图6B中所示。
如图6C中所示,指定目标地址0b00001011的另一访问然后被接收。在该情况下,索引0b0000与标签组34-0相对应,并且目标地址的标签部分0b1011再次与标签组34-0中的任何标签都不匹配(如图6B中所示,标签中的一个存储不同的标签值0b0000,并且标签组34-0的另一标签是无效的)。因此存在标签错过,并且再次需要步骤170的分配过程。这次,索引0b0000的相应数据组44完全充满现有的数据值,如所有相应数据有效位120-0到120-3都被设置的事实所示。因此,有必要执行图5A的步骤204到216的牺牲选择算法。在步骤204处,牺牲标签条目基于牺牲选择数据来被选择。在该示例中,与较高排序值相比,较低排序值表示最近较少被访问。因此,与标签组34-2中的标签条目21相对应的具有最低排序值的标签状态信息条目110-21被选择为牺牲标签条目。在其它示例中,当确定牺牲标签条目时有效信息或脏信息可以已被使用,或另一分配策略可以被使用。
由于包含牺牲标签条目的标签组34-2不同于确定标签错过时已被查找的标签组34-0,因此有必要执行第二标签查找以从标签组34-2中的牺牲标签条目21读取指针和标签值。该标签条目的指针0b01标识数据组34的数据位置1,因此数据位置1被选择为所选择的数据条目,并且来自所选择的数据条目的数据B以写地址0b00100010(基于与标签组34-2相对应的索引0b0010和标签组34-2的标签条目21中的标签值0b0010来确定)被写回到存储器。与牺牲标签条目相对应的标签状态信息条目110-21中的有效位V现在被清除(在图6C中,它已被设置为0)。
然后,标签条目被选择用于存储与新数据值相对应的标签值。由于数据访问的索引部分是0b0000,因此标签组34-0中的条目01被选择。目标地址的标签部分0b1011和所选择的数据条目的指针0b01被写入所选择的标签条目,并且相应的标签状态信息条目110-01被更新排序信息和有效位(被设置为1以指示相应标签条目是有效的)。然后,新的数据值E被写入所选择的数据条目。因此,各种阵列中的数据现在如图6C中所示。
因此,如图6A到6C中所示,牺牲选择阵列72帮助访问控制电路60记录哪些数据值被存储在数据阵列44中以及哪些标签值被存储在标签阵列30中,并且被用于牺牲选择以尝试选择未来最不可能被要求的牺牲数据值。
上面所讨论的示例允许每个标签条目指向相应数据组44的任意位置。然而,如果数据组很大,则这意味着标签条目32的指针37也变得更大。为了节省标签阵列30中的空间,提供如图7中所示的实施例(其中,每个标签条目与数据组的特定子集相对应)是可能的。在该示例中,数据组44具有16个条目,并且每个标签条目32可以指向相应数据组的子集(具有4个数据条目42)。例如,在图7中,标签组34-0和34-1的标签条目0可以指向数据组44的子集0内的四个数据条目42中的任意数据条目,并且每个标签组34-0、34-1的标签条目1、2和3类似地指向子集1、2和3中的条目。这表示指针37可以是两位数以标识四个可能的位置中的一个,而不是能够标识16个位置中的一个位置的四位数。这将与维护指针37相关联的开销减少了一半。虽然将标签条目限制到数据组的特定子集稍微限制了分配,但这未必将显著影响命中率。数据值可以被分配到数据组44的任意数据条目,因此如果特定子集的相应标签条目已被使用,则不同子集中的数据条目可以替代地被选择。
如图7中所示,如果数据组44被分为子集,则图4和图5的方法可以稍微地被修改。在步骤158处,目标数据条目基于如之前所讨论的(参见步骤158的部分)包括匹配标签的标签条目、以及目标地址的索引部分和指针来被识别。在该情况下,索引部分将标识相应的数据组44,存储匹配标签的标签条目将标识包含所选择的数据条目的子集,并且标签条目中所存储的指针37将标识存储目标数据的子集内的特定数据条目。
此外,如图7中所示,如果子集被使用,则在步骤220到222处,所选择的标签条目必须是与包括所选择的数据条目的子集相对应的标签条目。否则,分配方法与上面所讨论的相同。
图8是对根据本技术的缓存的性能与传统缓存的性能进行比较的图示。左侧的Y轴表示缓存命中率,而X轴表示访问新近(recency)(表示为被标准化为缓存尺寸的栈距离)。访问新近是当做出另一访问时对自之前对相同数据的访问以来时间长度的有效测量。由于访问变得更少,预计命中率将下降,这是由于很可能所期望的数据在此期间已被逐出。
图示包括线300和线302,其中线300表示标准4路缓存,线302表示标准8路缓存。在这些缓存中,标签和数据阵列的关联性相同。如图8中的左侧部分中所示,在数据最近已被访问的情况下,命中率是高的。随着访问变得不那么频繁,命中率下降。图8的线304示出了16路数据阵列的性能。针对数据阵列和标签阵列具有相同关联性的标准16路缓存,命中率将如线304中所示。如图8中所示,与线300、302中所示的4路缓存和8路缓存相比,存在性能改善,这是因为允许更多的与相同一组地址相对应的数据值被存储在缓存中增加了所需的数据值存在于缓存中的可能性。然而,增加的性能是以在每个访问时查找16个标签条目为代价得到的,这增加了功率消耗。
因此,本技术提供了与数据阵列相比具有减少的关联性的标签阵列。图8示出了线306,线306表示4路标签阵列的命中率,该4路标签阵列包含的标签条目为线304表示的16路数据阵列中的数据条目的两倍。线306和线300之间的比较示出了:与标签条目和数据条目的数量相同的阵列相比,提供两倍的标签条目大大增加了命中率。通过在每个缓存访问时查找较少的标签,降低了功率消耗。然而,由于每个标签值仅可以被存储在4个可能的位置而不是数据阵列中的16个位置,存在图的被标记为310的部分,在该部分图中,标签阵列306的命中率下降至数据阵列304的命中率之下。这表示以下情况:数据阵列40中具有存储新数据值的空间但相应标签组中不具有用于存储相应标签值的空间,因此数据无论如何必须从数据阵列中被逐出以允许标签中的一个标签被重新分配。该数据命中/标签错过条件在线310中被更详细地示出,线310相对表示错过率(而不是左侧Y轴中的命中率)的右侧的Y轴被绘出。如线310中所示,针对访问新近的一些值,数据命中/标签错过率值上升到大约1%,但是一旦数据命中率再次开始落后于标签命中率(由于具有较少的数据条目),则数据命中/标签错过率值再次下降。由于线310中所示的数据命中/标签错过率值仍然是合理地低的,因此降低标签关联性并不显著影响性能,并且减少的关联性的功率节省证明该小的性能损失是适当的。
图9中示出了对本技术实现的功率节省的估计。行350表示具有16路标签阵列的传统16路缓存的估计功率消耗。图9的行360表示对非对称关联缓存(其中,数据阵列具有16路而标签阵列具有4路)的相应估计。由于非对称缓存中具有较多的标签组,具有与每个标签组相对应的较少的地址,因此作为标签值存储的标签部分对于非对称缓存来说是较小的(18位而不是20位),并且这补偿了指针所需的额外的2位(该示例使用图7的技术,其中每个标签条目与数据条目的子集相对应)。因此,指针事实上不需要任何额外的位被存储在每个标签条目中。主要的功率节省来自很多较少的位需要在每个标签访问时被读取的事实(标签命中的情况下为80位而不是320位)。在缓存错过的情况下,一些额外的位有时可能需要被读取,这是因为可能需要第二标签查找,然而读取的标签位的数量仍远小于传统缓存的情况。如图9中表的行370中所示,平均功率节省(假设50%的命中率)是标签功率消耗的65%,并且是总体缓存功率消耗的28%(数据阵列的功率消耗保持不变)。这是保守估计,并且如果平均命中率大于50%,则节省甚至将会更大。此外,功率节省在高速RAM(比高密度RAM消耗更多的功率)上将会更大。因此,可以在并未很影响性能的情况下实现显著的功率节省。
将上面所描述的非对称关联缓存与监听目录(snoop directory)的缓存相结合以提供单个查找3级缓存和监听过滤器这将是可能的。
尽管本文已参照附图详细描述了本发明的说明性实施例,但是要理解的是,本发明不限于这些精确的实施例,并且在不脱离由附加权利要求所定义的本发明的范围和精神的情况下,可以由本领域技术人员在其中产生各种变化和修改。
Claims (21)
1.一种用于存储数据的数据存储装置,包括:
数据阵列,该数据阵列包括用于存储数据值的多个数据条目;
标签阵列,该标签阵列包括用于存储标签值的多个标签条目,用于追踪被存储在所述数据阵列中的数据值;以及
控制电路,该控制电路被配置为控制数据值到所述数据阵列的分配和控制相应标签值到所述标签阵列的分配,以执行以下各项操作:
(a)将所述数据值分配到所述数据阵列的N个数据条目的相应数据组的所选择的数据条目,其中N是小于所述数据阵列的数据条目的总数的整数,所述相应数据组基于所述数据值的地址被选择,其中所述数据值不能被分配给不在所述相应数据组中的数据条目;
(b)将所述相应标签值分配到所述标签阵列的M个标签条目的相应标签组的所选择的标签条目,其中M是整数并且M<N,所述相应标签组基于所述数据值的所述地址被选择,其中所述标签值不能被分配给不在所述相应标签组中的标签条目;以及
(c)在所述所选择的标签条目中存储指针,该指针标识所述相应数据组中的哪个数据条目是所述所选择的数据条目。
2.如权利要求1所述的数据存储装置,其中,所述标签阵列包括M个标签条目的Y个标签组,并且所述数据阵列包括N个数据条目的Z个数据组,其中Y和Z是整数并且Y>Z。
3.如权利要求2所述的数据存储装置,其中,(Y×M)≥(Z×N)。
4.如权利要求3所述的数据存储装置,其中,(Y×M)=(Z×N)×2J,其中,J是整数。
5.如任何前述权利要求所述的数据存储装置,其中,响应于从所述数据阵列访问由目标地址标识的目标数据值的访问请求,所述控制电路被配置为:执行第一标签查找,用于从基于所述目标地址来选择的M个标签条目的相应标签组中的每个标签条目读取标签值,以及通过将所述目标地址的标签部分与所述读取的标签值的每个标签值进行比较来确定所述数据阵列是否存储所述目标数据值。
6.如权利要求5所述的数据存储装置,其中,如果所述读取的标签值中的一个标签值与所述目标地址的所述标签部分相对应,则所述控制电路被配置为:使用所述目标地址和存储所述读取的标签值中的一个标签值的标签条目的所述指针的至少一部分来确定所述数据阵列中的目标数据条目,并且访问所述目标数据条目中的所述目标数据值。
7.如权利要求6所述的数据存储装置,其中,所述控制电路被配置为:在所述第一标签查找被执行的处理周期之后的处理周期中访问所述目标数据条目中的目标数据值。
8.如权利要求5所述的数据存储装置,其中,如果所述读取的标签值中的任何标签值都不与所述目标地址的所述标签部分相对应,则所述控制电路被配置为:执行所述分配,用于将所述目标数据值分配到所述数据阵列并且将所述目标地址的所述标签部分分配到所述标签阵列。
9.如权利要求8所述的数据存储装置,其中,如果在所述分配中,所述所选择的标签条目是来自与所述第一标签查找中所读取的标签组不同的标签组,并且所述所选择的数据条目已经存储需要被写回到存储器的数据值,则所述控制电路被配置为:针对所述不同的标签组执行第二标签查找,以读取与已经被存储在所述所选择的数据条目中的所述数据值相对应的标签值。
10.如权利要求1所述的数据存储装置,其中,所述控制电路被配置为:执行牺牲选择,用于选择N个数据条目的所述相应数据组中的哪个数据条目是所述所选择的数据条目。
11.如权利要求10所述的数据存储装置,包括:牺牲选择数据阵列,该牺牲选择数据阵列包括多个牺牲选择条目,用于存储所述数据阵列的相应数据条目的牺牲选择数据;
其中,所述控制电路被配置为:使用与N个数据条目的所述相应数据组相对应的一组牺牲选择条目的牺牲选择数据来执行所述牺牲选择。
12.如权利要求11所述的数据存储装置,其中,所述牺牲选择数据包括用于估计N个数据条目的所述相应数据组中的哪个数据条目最近已被使用的信息。
13.如权利要求10到12中的任一项所述的数据存储装置,其中,所述控制电路被配置为:使用所述标签阵列的标签条目中所存储的无效标签值来执行所述牺牲选择,所述无效标签值包括不与所述数据阵列中的有效数据值相对应的标签值。
14.如权利要求10到12中的任一项所述的数据存储装置,其中,在所述牺牲选择中,所述控制电路被配置为:选择所述相应标签组的标签条目作为所述所选择的标签条目,并且选择由已经存储在所述所选择的标签条目中的指针标识的所述相应数据组的数据条目作为所述所选择的数据条目。
15.如权利要求14所述的数据存储装置,其中,如果所述所选择的数据条目已经存储将要被写回到存储器的数据值,则所述控制电路被配置为:确定所述数据值将要从已经存储在所述所选择的标签条目中的标签值被写回到的地址。
16.如权利要求1所述的数据存储装置,其中,所述相应标签组中的每个标签条目与所述相应数据组的数据条目的子集相对应。
17.如权利要求16所述的数据存储装置,其中,所述所选择的标签条目中存储的所述指针标识数据条目的相应子集中的哪个数据条目是所述所选择的数据条目。
18.如权利要求1所述的数据存储装置,其中,所述控制电路被配置为:基于应用到所述地址的第一部分的第一哈希函数来选择所述相应数据组,以及基于应用到所述地址的第二部分的第二哈希函数来选择所述相应标签组。
19.如权利要求1所述的数据存储装置,包括:
数据有效信息阵列,该数据有效信息阵列被配置为存储数据有效信息,所述数据有效信息指示所述数据阵列的相应数据条目是否存储有效数据值;以及
标签有效信息阵列,该标签有效信息阵列被配置为存储标签有效信息,所述标签有效信息指示所述标签阵列的相应标签条目是否存储与所述数据阵列中的有效数据值相对应的标签值。
20.一种用于存储数据的数据存储装置,包括:
用于存储数据的数据阵列装置,该数据阵列装置包括用于存储数据值的多个数据条目装置;
用于存储标签的标签阵列装置,该标签阵列装置包括用于存储标签值的多个标签条目装置,用于追踪被存储在所述数据阵列装置中的数据值;以及
用于控制数据值到所述数据阵列装置的分配和控制相应标签值到所述标签阵列装置的分配的控制装置,以执行以下各项操作:
(a)将所述数据值分配到所述数据阵列装置的N个数据条目装置的相应数据组的所选择的数据条目装置,其中N是小于所述数据阵列装置的数据条目装置的总数的整数,所述相应数据组基于所述数据值的地址被选择,其中所述数据值不能被分配给不在所述相应数据组中的数据条目装置;
(b)将所述相应标签值分配到所述标签阵列装置的M个标签条目装置的相应标签组的所选择的标签条目装置,其中M是整数并且M<N,所述相应标签组基于所述数据值的所述地址被选择,其中所述标签值不能被分配给不在所述相应标签组中的标签条目装置;以及
(c)在所述所选择的标签条目装置中存储指针,该指针标识所述相应数据组中的哪个数据条目装置是所述所选择的数据条目装置。
21.一种用于给数据存储装置分配数据值的方法,所述数据存储装置包括数据阵列和标签阵列,其中所述数据阵列包括用于存储数据值的多个数据条目,所述标签阵列包括用于存储标签值的多个标签条目,用于追踪被存储在所述数据阵列中的数据值;所述方法包括:
将所述数据值分配到所述数据阵列的N个数据条目的相应数据组的所选择的数据条目,其中N是小于所述数据阵列的数据条目的总数的整数,所述相应数据组基于所述数据值的地址被选择,其中所述数据值不能被分配给不在所述相应数据组中的数据条目;
将所述相应标签值分配到所述标签阵列的M个标签条目的相应标签组的所选择的标签条目,其中M是整数并且M<N,并且所述相应标签组基于所述数据值的所述地址被选择,其中所述标签值不能被分配给不在所述相应标签组中的标签条目;以及
在所述所选择的标签条目中存储指针,该指针标识所述相应数据组中的哪个数据条目是所述所选择的数据条目。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/936,749 | 2013-07-08 | ||
US13/936,749 US9176856B2 (en) | 2013-07-08 | 2013-07-08 | Data store and method of allocating data to the data store |
PCT/GB2014/051990 WO2015004422A1 (en) | 2013-07-08 | 2014-07-01 | Data store and method of allocating data to the data store |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105378685A CN105378685A (zh) | 2016-03-02 |
CN105378685B true CN105378685B (zh) | 2019-06-14 |
Family
ID=51168296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480038132.1A Active CN105378685B (zh) | 2013-07-08 | 2014-07-01 | 数据存储装置和用于给数据存储装置分配数据的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9176856B2 (zh) |
KR (1) | KR102344008B1 (zh) |
CN (1) | CN105378685B (zh) |
WO (1) | WO2015004422A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9367454B2 (en) * | 2013-08-15 | 2016-06-14 | Applied Micro Circuits Corporation | Address index recovery using hash-based exclusive or |
US9846648B2 (en) * | 2015-05-11 | 2017-12-19 | Intel Corporation | Create page locality in cache controller cache allocation |
KR102415626B1 (ko) * | 2016-01-04 | 2022-07-01 | 한국전자통신연구원 | 데이터 소유권 검증 방법 및 장치 |
US20180285274A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Apparatus, method and system for just-in-time cache associativity |
CN107688438B (zh) * | 2017-08-03 | 2021-08-27 | 中国石油集团东方地球物理勘探有限责任公司 | 适用于大规模地震数据存储、快速定位的方法及装置 |
GB2566470B (en) | 2017-09-13 | 2021-02-10 | Advanced Risc Mach Ltd | Cache storage |
GB2566469B (en) * | 2017-09-13 | 2021-03-24 | Advanced Risc Mach Ltd | Cache line statuses |
US10992707B2 (en) * | 2017-12-07 | 2021-04-27 | Ridgeback Network Defense, Inc. | Tagging network data |
CN111813734B (zh) * | 2020-06-15 | 2022-11-01 | 上海航天计算机技术研究所 | 无消息间隔限制的1553b总线通信方法和系统 |
US20240061784A1 (en) * | 2022-08-18 | 2024-02-22 | Samsung Electronics Co | System and method for performing caching in hashed storage |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063406A (zh) * | 2010-12-21 | 2011-05-18 | 清华大学 | 用于多核处理器的网络共享Cache及其目录控制方法 |
CN102298554A (zh) * | 2010-06-24 | 2011-12-28 | 英特尔公司 | 用于降低存储设备功耗的方法和系统 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5025366A (en) * | 1988-01-20 | 1991-06-18 | Advanced Micro Devices, Inc. | Organization of an integrated cache unit for flexible usage in cache system design |
US5978888A (en) | 1997-04-14 | 1999-11-02 | International Business Machines Corporation | Hardware-managed programmable associativity caching mechanism monitoring cache misses to selectively implement multiple associativity levels |
JP4073157B2 (ja) | 2000-08-21 | 2008-04-09 | 富士通株式会社 | タグメモリのアクセス回数を制限したキャッシュシステム |
US6854033B2 (en) | 2001-06-29 | 2005-02-08 | Intel Corporation | Using linked list for caches with variable length data |
US7552277B2 (en) | 2003-08-20 | 2009-06-23 | International Business Machines Corporation | Distributed buffer integrated cache memory organization and method for reducing energy consumption thereof |
US20060090034A1 (en) | 2004-10-22 | 2006-04-27 | Fujitsu Limited | System and method for providing a way memoization in a processing environment |
US20090031082A1 (en) | 2006-03-06 | 2009-01-29 | Simon Andrew Ford | Accessing a Cache in a Data Processing Apparatus |
US7650465B2 (en) | 2006-08-18 | 2010-01-19 | Mips Technologies, Inc. | Micro tag array having way selection bits for reducing data cache access power |
US7788445B2 (en) | 2007-03-28 | 2010-08-31 | Cisco Technology, Inc | Intelligent allocation of programmable comparison operations for reducing the number of associative memory entries required |
US20090006756A1 (en) | 2007-06-29 | 2009-01-01 | Donley Greggory D | Cache memory having configurable associativity |
US9507647B2 (en) * | 2010-01-08 | 2016-11-29 | Globalfoundries Inc. | Cache as point of coherence in multiprocessor system |
US8589627B2 (en) | 2010-08-27 | 2013-11-19 | Advanced Micro Devices, Inc. | Partially sectored cache |
US20130036270A1 (en) | 2011-08-04 | 2013-02-07 | The Regents Of The University Of Michigan | Data processing apparatus and method for powering down a cache |
US9043570B2 (en) | 2012-09-11 | 2015-05-26 | Apple Inc. | System cache with quota-based control |
US9292451B2 (en) * | 2013-02-19 | 2016-03-22 | Qualcomm Incorporated | Methods and apparatus for intra-set wear-leveling for memories with limited write endurance |
US20140289468A1 (en) * | 2013-03-25 | 2014-09-25 | International Business Machines Corporation | Lightweight primary cache replacement scheme using associated cache |
-
2013
- 2013-07-08 US US13/936,749 patent/US9176856B2/en active Active
-
2014
- 2014-07-01 KR KR1020167002454A patent/KR102344008B1/ko active IP Right Grant
- 2014-07-01 WO PCT/GB2014/051990 patent/WO2015004422A1/en active Application Filing
- 2014-07-01 CN CN201480038132.1A patent/CN105378685B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102298554A (zh) * | 2010-06-24 | 2011-12-28 | 英特尔公司 | 用于降低存储设备功耗的方法和系统 |
CN102063406A (zh) * | 2010-12-21 | 2011-05-18 | 清华大学 | 用于多核处理器的网络共享Cache及其目录控制方法 |
Also Published As
Publication number | Publication date |
---|---|
KR102344008B1 (ko) | 2021-12-28 |
KR20160029086A (ko) | 2016-03-14 |
US9176856B2 (en) | 2015-11-03 |
WO2015004422A1 (en) | 2015-01-15 |
US20150012719A1 (en) | 2015-01-08 |
CN105378685A (zh) | 2016-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105378685B (zh) | 数据存储装置和用于给数据存储装置分配数据的方法 | |
US6381676B2 (en) | Cache management for a multi-threaded processor | |
US6427188B1 (en) | Method and system for early tag accesses for lower-level caches in parallel with first-level cache | |
EP1654660B1 (en) | A method of data caching | |
US10628318B2 (en) | Cache sector usage prediction | |
US20060155932A1 (en) | Method and apparatus for an efficient multi-path trace cache design | |
US20070260818A1 (en) | Power-performance modulation in caches using a smart least recently used scheme | |
JP2603476B2 (ja) | データ取り出し方法 | |
CN101617298A (zh) | 用于dma、任务终止和同步操作的缓存一致保持 | |
US20140143499A1 (en) | Methods and apparatus for data cache way prediction based on classification as stack data | |
CN106126441A (zh) | 追踪缓存的内容 | |
WO2010004497A1 (en) | Cache management systems and methods | |
US6854033B2 (en) | Using linked list for caches with variable length data | |
US7761665B2 (en) | Handling of cache accesses in a data processing apparatus | |
CN107015922A (zh) | 缓存存储器 | |
CN109074313A (zh) | 缓存和方法 | |
US12093180B2 (en) | Tags and data for caches | |
US7010649B2 (en) | Performance of a cache by including a tag that stores an indication of a previously requested address by the processor not stored in the cache | |
US20050270876A1 (en) | Selectively changeable line width memory | |
US7007135B2 (en) | Multi-level cache system with simplified miss/replacement control | |
US20020174304A1 (en) | Performance improvement of a write instruction of a non-inclusive hierarchical cache memory unit | |
US20050160228A1 (en) | Equipment and method for cache replacement | |
CN103885890B (zh) | 高速缓冲存储器cache中cache块的替换处理方法和装置 | |
CN109478164A (zh) | 用于存储用于高速缓存条目传输的高速缓存位置信息的系统和方法 | |
JP4741844B2 (ja) | ライン幅を選択的に変更することが可能なメモリ |
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 |