CN105446897A - 高速缓存哈希 - Google Patents
高速缓存哈希 Download PDFInfo
- Publication number
- CN105446897A CN105446897A CN201510659352.2A CN201510659352A CN105446897A CN 105446897 A CN105446897 A CN 105446897A CN 201510659352 A CN201510659352 A CN 201510659352A CN 105446897 A CN105446897 A CN 105446897A
- Authority
- CN
- China
- Prior art keywords
- bit
- binary string
- string
- scale
- 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
-
- 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/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/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/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
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/762—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data having at least two separately controlled rearrangement levels, e.g. multistage interconnection networks
-
- 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/1056—Simplification
-
- 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/608—Details relating to cache mapping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
高速缓存哈希。一种用于根据包括第一二进制串和第二二进制串的输入存储器地址生成高速缓存地址的高速缓存逻辑器,该高速缓存逻辑器包括:哈希引擎,该哈希引擎被构造成根据该第一二进制串生成第三二进制串,并通过借助于第一逐比特运算组合第一二进制串的比特的相应子集来形成第三二进制串的各比特,其中,在该哈希引擎处定义该第一二进制串的比特的子集使得每个子集是唯一的并且每个子集包括第一二进制串的约一半比特;以及组合单元,该组合单元被设置成借助于可逆运算将该第三二进制串与该第二二进制串组合,以形成用作高速缓存存储器中的高速缓存地址的至少一部分的二进制输出串。
Description
技术领域
本发明涉及用于生成高速缓存地址的高速缓存逻辑器、高速缓存存储器***和用于生成高速缓存地址的方法。
背景技术
高速缓存存储器通过减少与存储器访问相关的延迟而被广泛用于提高数据处理***的性能。这通常是通过在能够以低于存储数据的主存储器的延迟来访问的高速缓存存储器处高速缓存一些之前访问过的(例如,最近访问的)数据来实现的。为了保证能够易于从高速缓存存储器检索高速缓存的数据,必须根据定义的方案组织高速缓存的数据。
通常,将用于高速缓存的数据保存在由地址(诸如,存储器地址或计算***中的硬件资源地址)标识的资源处。这些资源地址的访问可以遵循某些固定的模式(诸如,顺序存储器区块的访问),并且因此可能注意确保表示相关(例如,顺序)资源地址的数据均匀分布在高速缓存存储器上,以避免病态访问情况。全部映射到仅少数高速缓存线路的一系列地址是病态访问情况的实例,其中重复访问相同的少数高速缓存线路可能导致大量高速缓存线路更换和当从该高速缓存需要数据时的糟糕的命中率。这种行为严重影响高速缓存存储器的性能。
本领域中已提出多种机制以改进数据在高速缓存上的分布和对于针对给定大小的高速缓存最大化高速缓存命中率。这些机制可以使用哈希函数来给数据到高速缓存地址上的映射注入伪随机变化。例如,M.Schlanskeer等在其论文“RandomizationandAssociativityintheDesignofPlacement-InsensitiveCaches”(ComputerSystemsLaboratory,HPL-93-41,1993年6月)中描述了使用哈希函数来随机化高速缓存中的数据的位置。然而,使用此类复杂的哈希函数在硅面积和延迟方面一般太昂贵,而不能在高速的高速缓存存储器***的关键路径中实现。
通过避免高速缓存访问冲突(例如,当因在同一高速缓存线路上正执行另一高速缓存读取而无法访问高速缓存的数据时可能发生)来改进高速缓存性能的其它机制包括使用偏斜相关的高速缓存架构。在“Acasefortwo-wayskewed-associativecaches”(A.Seznec,Proceedingsofthe20thInternationalSymposiumonComputerArchitecture,SanDiego,1993年5月)和“Trade-offsforSkewed-AssociativeCaches”H.Vandierendonck和K.Debosschere(根特大学的电子及信息***系发表的论文)中描述了这种架构。偏斜相关的架构需要多个高速缓存块(cachebank),因为该机制通过高速缓存地址的块间分散来获取低未命中率。然而,如Vandierendonck的论文所评述的,通过将偏斜相关的架构与哈希函数组合以将随机字符注入数据至高速缓存的映射来实现最佳性能。再次地,这种哈希函数很复杂并且通常太昂贵而不能在高速的高速缓存存储器***的关键路径中实现。
发明内容
根据本发明第一方面,提供了一种用于根据二进制输入存储器地址生成高速缓存地址的高速缓存逻辑器,该二进制输入存储器地址包括为具有第一预定义长度的第一比特序列的第一二进制串和作为具有第二预定义长度的第二比特序列的第二二进制串,该高速缓存逻辑器包括:
哈希引擎,该哈希引擎被构造成根据第一二进制串生成第三二进制串,该第三二进制串具有第二预定义长度,并且哈希引擎被构造成通过借助于第一逐比特运算组合第一二进制串的比特的相应子集来形成第三二进制串的各比特,其中,在哈希引擎处定义第一二进制串的比特的子集,使得每个子集是唯一的并且每个子集平均起来包括第一二进制串的约一半比特;以及
组合单元,该组合单元被设置成借助于可逆运算将第三二进制串与第二二进制串组合,以形成用作高速缓存存储器中的高速缓存地址的至少一部分的二进制输出串。
可以在哈希引擎用硬件借助于第一二进制串与第三二进制串的比特之间的数据路径,定义第一二进制串的比特的该子集,每个数据路径被设置成提供第一二进制串的比特,以与同一子集的第一二进制串的其它比特组合,以形成第三二进制串的对应比特。
所述数据路径可以是哈希引擎的物理连接。
哈希引擎可以包括多组逐比特运算符,每组逐比特运算符被设置成根据第一二进制串的比特的对应子集形成第三二进制串的比特。
该二进制输出串可以用于标识高速缓存存储器块中的高速缓存行。
该第一二进制串可以是二进制输入存储器地址的预定的最高有效比特序列。
该第二二进制串可以是二进制输入地址的预定的次高有效比特序列。
该二进制输入存储器地址可以具有固定长度,并且第一二进制串和第二二进制串是二进制输入存储器地址中相邻的比特序列。
高速缓存逻辑器还可以包括块选择单元,该块选择单元被构造成借助于第二逐比特运算将从二进制输出串导出的一个或更多个比特与二进制输入存储器地址的同等数量的比特组合,以生成用于标识具有多个高速缓存块的高速缓存存储器中的块的块标识符。
块标识符在长度上可以等于从二进制输出串导出的比特的数量。
该二进制输入串的该一个或更多个比特可以是不比第二二进制串的比特高的比特。
该二进制输入串的该一个或更多个比特可以与该二进制输入串中的第二二进制串相邻。
高速缓存逻辑器还可以包括块加扰单元,该块加扰单元具有比特寄存器,该比特寄存器被构造成存储预定二进制串,该块加扰单元被构造成通过将来自二进制输出串的一个或更多个比特的序列用作比特寄存器中的查找器来对二进制输出串的一个或更多个比特进行运算,以从所存储的预定二进制串选择预定数量的比特以在块选择单元中用作从二进制输出串导出的该一个或更多个比特,其中,该预定二进制串具有以下属性,即所选择比特的值具有基本相同的可能性为可能值中的任一值。
预定二进制串可以是伪随机二进制串。
预定二进制串可以是2N个比特长,并且来自二进制输出串的该预定比特序列可以是二进制输出串的N个最低有效比特,块加扰单元被构造成将二进制输出串的该N个最低有效比特用作该预定二进制串中的比特地址,从该比特地址其从所存储的预定二进制串读取预定数量比特。
比特寄存器可以是可编程的,并且块加扰单元可操作用于使伪随机生成的二进制串被写入比特寄存器以用作预定二进制串。
第一逐比特运算和可逆运算均可以是XOR运算。
第二逐比特运算可以是XOR运算。
根据本发明第二方面,提供了一种高速缓存存储器***,该高速缓存存储器***包括:
根据本发明第一方面的具有上述任意特征的高速缓存逻辑器;以及
具有多个高速缓存块的高速缓存存储器;
其中,高速缓存存储器***被构造成在由块标识符指示的高速缓存块的二进制输出串指示的高速缓存行至少存储第一二进制串和具有二进制输入存储器地址、用于高速缓存的数据。
每个高速缓存块可以具有2S个行,其中,S为第二二进制串和第三二进制串的每个中的比特数量。
二进制输入存储器地址可以包括二进制输入存储器地址的W个最低有效比特的第四二进制串,第四二进制串不包括第一二进制串、第二二进制串或从二进制输出串导出的、用在块选择单元的比特,并且高速缓存存储器的各高速缓存行具有至少2W个字节加上第一二进制串宽的长度的宽度。
根据本发明第三方面,提供了一种用于根据二进制输入存储器地址生成高速缓存地址的方法,该二进制输入存储器地址包括为具有第一预定义长度的第一比特序列的第一二进制串和作为具有第二预定义长度的第二比特序列的第二二进制串,该方法包括以下步骤:
接收输入存储器地址的第一二进制串;
根据第一二进制串生成第三二进制串,第三二进制串具有第二预定义长度,第三二进制串的各比特通过借助于第一逐比特运算组合第一二进制串的比特的相应子集来形成,其中,第一二进制串的比特的子集被定义成使得每个子集是唯一的并且每个子集平均起来包括第一二进制串的约一半比特。
借助于可逆运算将第三二进制串与第二二进制串组合,以形成用作高速缓存存储器中的高速缓存地址的至少一部分的二进制输出串。
可以提供用于生成高速缓存逻辑器的机器可读代码。可以提供已被编码了非暂时性机器可读代码的机器可读存储介质以生成高速缓存逻辑器。
附图说明
现在将以例示的方式参照附图描述本发明,其中:
图1是高速缓存存储器***的示意图。
图2是块加扰单元的示意图;
图3是例示生成高速缓存地址的方法的流程图。
图4是根据一个示例的硬连线的哈希引擎的示意图。
具体实施方式
以下描述被提出以使本领域的任何技术人员能够进行和使用本发明,并在特定应用的上下文中提供。对于本公开的实施方式的各种变更对于本领域技术人员是显而易见的。
本文定义的一般原理可以应用于其它实施方式和应用,儿不背离本发明的精神和范围。因此,本发明不旨在受限于所示的实施方式,而是被给予与本文公开的原理及特征一致的最广泛范围。
本文描述了用于高速的高速缓存存储器***的高速缓存逻辑器,该高速缓存逻辑器提供了常规哈希函数的优点,而未引入显著的复杂性和延迟。用于高速缓存***的高速缓存逻辑器可以处理包括例如资源地址(诸如,存储器和硬件地址)、处理器指令和来自存储器的数据的任何种类的数据。
图1示出了一种高速缓存存储器***的示意图。高速缓存逻辑器100被设置成为高速缓存存储器110(通常不是高速缓存逻辑器的一部分)确定高速缓存地址,在该高速缓存存储器110将高速缓存具有二进制输入存储器地址101的输入数据114,或将从其读取高速缓存的数据。根据本文描述的发明,仅输入存储器地址101的一部分需要被存储在高速缓存存储器处,因为可以从高速缓存存储器中的数据的位置推断出输入存储器地址的部分。高速缓存存储器110能够具有任何合适的存储架构:例如,它可以是直接映射的高速缓存存储器或N路相关的高速缓存存储器。由高速缓存逻辑器执行的方法的示例在图3的流程图中例示并且将在本文中被参考。
高速缓存逻辑器100包括哈希引擎106和组合单元107,该组合单元107被设置成根据输入地址101确定高速缓存行地址。在图1所示的示例中,高速缓存存储器110包括两个高速缓存块(111和112),并且在高速缓存逻辑器100中提供了块选择单元109来选择高速缓存块。可以可选地设置块加扰单元108以进一步改善高速缓存逻辑器的性能。现在将参照图1描述高速缓存逻辑器的操作。
高速缓存逻辑器100被构造成根据它接收到的输入存储器地址确定高速缓存地址(图3中的步骤301)。存储器地址101通常具有固定长度。更一般地,输入存储器地址101可以是任意类型的二进制串。在所示的示例中,输入存储器地址101是被表示为二进制串的资源地址。
在图1所示的示例中,存储器地址101包括4个比特序列:(i)T个标签比特102,(ii)S个集比特103,(iii)B个块比特104,和(iv)W个字比特105。因此,存储器地址101具有T+S+B+W个比特的长度。标签比特T是存储器地址101的最高有效比特,并且字比特W是存储器地址101的最低有效比特。
通常,高速缓存存储器110小于与存储器地址101相关的主存储器,并且特定高速缓存线中的数据可以与在主存储器中的多个不同存储器地址中的一个存储器地址处存储的数据对应。在典型的高速缓存***中,针对数据的线的存储器地址101的集比特和块比特是可以根据高速缓存存储器110中的存储(或将存储)数据的位置推断出的那些比特。存储器地址101的标签比特是不能从高速缓存存储器110中的该位置推断出的那些比特。标签比特区分对应于同一高速缓存线的存储器地址。因此,标签比特被存储在高速缓存存储器110中,但当数据被存储在高速缓存110中时,集比特和块比特无需并且没有被存储在高速缓存存储器110中。字比特以比高速缓存线大的分辨率指示数据在主存储器中的位置,并且因为数据以高速缓存线为单位存储在高速缓存存储器110内,字比特不需要被存储在高速缓存存储器110中。
在图1所示的示例中,存在两个高速缓存块111和112,使得一个块比特对于标识高速缓存块中的一个高速缓存块是充足的,因此在此示例中B=1。然而,在其它示例中,缓存存储器中可以存在不同数量的块,通常高速缓存存储器中块的数量是2的幂,诸如,2、4、8等。在这些其它示例中,B可以不等于1,相反可以对于根据高速缓存存储器中块的数量标识高速缓存存储器中的块而言充足的许多块比特(B)。该示例中,高速缓存存储器110的高速缓存行为2W字节+T比特宽,使得标签比特102随数据存储在高速缓存线中,但在其它示例中,标签比特102不必须邻近数据比特存储在高速缓存线中,因为允许较快访问标签比特(例如,确定高速缓存是否当前存储特定数据项,即确定是否有高速缓存命中或高速缓存未命中)可以是有用的,并且像这样,标签比特102可以存储在允许比数据本身所存储在高速缓存存储器110中的硅快地访问的高速缓存存储器110中的硅中。更一般地,高速缓存存储器110可以是N路集相关高速缓存,在此情况下视情况而定,每个高速缓存线可以是2W字节+TN比特宽。
哈希引擎106被构造成对来自二进制输入存储器地址101的标签比特102进行运算,以生成二进制串116(图3中的步骤302),该二进制串116在长度上等于来自二进制输入存储器地址101的较短的S个比特的序列103。因此,T>S。通过将哈希引擎106的输出设置成在长度上等于S个比特的序列103,组合单元107可以被构造成借助于简单的逐比特运算来组合哈希引擎输出和S个比特的序列。
T个比特的序列优选为输入二进制存储器地址101的T个最高有效比特,并且S个比特的序列优选为次高有效比特的序列。在图1所示的示例中,“集”比特序列103与输入二进制存储器地址101中的“标签”比特序列102相邻。标签比特通常随输入数据存储在高速缓存存储器。
哈希引擎106本质上将哈希函数应用于二进制串102,以更好地在高速缓存存储器的行上分布高速缓存地址并且以实现将串长度由T减至S个比特。使用哈希引擎106的目的是降低导致高速缓存线的使用不均衡的常规寻址模式的可能性。在本文描述的示例中,这是通过设置根据输入“标签”比特102的预定且唯一的子集来形成二进制串116的每个输出比特来实现。换言之,哈希引擎106被构造(例如,硬连线)使得将每个输入“标签”比特被提供给哈希引擎的逐比特运算符的排列,逐比特运算符被一起构造成成形成二进制串116的输出比特。逐比特运算符优选为逐比特XOR,因为XOR运算用硬件实现非常简单。
哈希引擎106被设置使得二进制串116的每个输出比特从第一二进制串102的约一半比特接收基值(contribution)(例如,将第一二进制串102的约一半比特提供给各逐比特运算符)。这确保哈希引擎106粗略显示良好的加密哈希函数的特性,即如果一个输入比特变化,那么平均来说,我们期望输出比特116的大约一半发生变化。另外,如果输入比特中的不同的一个变化,那么平均来说我们期望输出比特116的不同比特变化,但我们将仍然期望输出比特116的约一半发生变化。在本文所述的示例中,我们通过对输入比特的预定的逐比特组合实现了所述特性,而没有由这种加密哈希函数一般会引入的复杂处理和延迟。总体目标是对于输入比特102的任何变化(无论多少输入比特102变化),平均来说输出比特116的约一半将发生变化,并且对于输入比特102的不同变化,不同的输出比特116将变化。这一总体目标可能不会完美实现,但是本文所述的示例为此目的实现了良好的解决方案。
对于给定长度的“标签”和“集”比特序列,第一二进制串102的比特总体上存在多种可能的组合,该第一二进制串102满足上述需求并提供本文所述示例的优点。现在将描述两个示例,这两个示例示出了可以确定哈希引擎的输入和输出比特之间连接集的方法。
在设计过程中,对于输入比特102中的每个比特,分别标识输出比特116的各自的比特集以指示当相应的输入比特变化时输出比特116的哪些比特将变化。如果可能,每个输出比特集包括约一半输出比特,因为以这种方式,当对应的输入比特变化时,约一半输出比特会变化。另外,如果可能,输出比特集优选地互不相同,使得改变每个输入比特对输出比特有不同的影响。因此,如果存在T个输入比特,那么确定S个输出比特的T个集。因为优选地是每个输出比特集包括一半输出比特,那么最初可以确定S选S/2(即,)个不同集。如果这没有提供足够的集,那么使用输出比特的其它额外的组合,如下面详细描述的。下面的方法描述了如何针对各自的输入比特确定输出比特集。
在第一示例中,考虑标签比特102的长度T为28比特和集比特103的长度S为5比特(因此,该长度为哈希引擎106的输出的期望长度)的情况。首先,根据长度S的集计算长度的数学组合数-即,在此情况下,为5选2,因为|5/2|=|2.5|=2。这提供了10个输出比特集,因此仍然需要另外18个集达到28个输出比特集。通过5选3将给出用于实现在这种情况下当输入比特中的一个变化时约一半输出比特变化的目标的次最优集。这也提供了10个输出比特集,意味着我们仍然缺8个达不到28(即,T)个组合。因此,我们接下来添加由5选1所给出的集。这提供了5个输出比特集,意味着仍需要另外3个达到28个输出比特集。因此,我们接下来添加由5选4所给出的下一组集中的一些。这提供了5个输出比特集,可以从该输出比特集选择3个从而提供28个输出比特集。
通过对从5选4运算得出的可能集进行稀疏采样,可以选出3个所选的集。例如,我们可以保留5个4比特集的第一、第二及第四个。下面将详细描述其它示例中用于确定输出比特集的一般原理。一旦已经确定了T个适当的输出比特集,它们每个可以分别与T个输入比特中的一个相关。下面列表为分别指示来自5个输出比特(“OUT”)的各个比特集的示例,该5个输出比特(“OUT”)与各个28个输入比特(“IN”)中的每个相关。在不同的示例中,T个输出比特集可以与不同的输入比特相关。例如,能够打乱(例如,随机化)下面列表中T个输入比特的排序,借助于输出比特集与输入比特集相关的来消除***偏差。
输入:输出
0:34
1:24
2:14
3:04
4:23
5:13
6:03
7:12
8:02
9:01
10:234
11:134
12:034
13:124
14:024
15:014
16:123
17:023
18:013
19:012
20:4
21:3
22:2
23:1
24:0
25:0123
26:0134
27:0234
这种方法让我们易于为哈希引擎确定适当的输入至输出的连接集。上面的列表能够用于标识哪些输出比特由哪些输入比特接收基值。也就是说,对于每个输出比特,可以标识一个输入比特集以用于确定输出比特。在哈希引擎106中通过借助于逐比特运算(例如,此示例中XOR运算)来组合每个输入比特集。因此,二进制串116的5个输出比特为:
Out[0]=In[3]XORIn[6]XORIn[8]XORIn[9]XORIn[12]XORIn[14]XORIn[15]XORIn[17]XORIn[18]XORIn[19]XORIn[24]XORIn[25]XORIn[26]XORIn[27];
Out[1]=In[2]XORIn[5]XORIn[7]XORIn[9]XORIn[11]XORIn[13]XORI[15]XORIn[16]XORIn[18]XORIn[19]XORIn[23]XORIn[25]XORIn[26]XORIn[27];
Out[2]=In[1]XORIn[4]XORIn[7]XORIn[8]XORIn[10]XORIn[13]XORIn[14]XORIn[16]XORIn[17]XORIn[19]XORIn[22]XORIn[25]XORIn[26]XORIn[27];
Out[3]=In[0]XORIn[4]XORIn[5]XORIn[6]XORIn[10]XORIn[11]XORIn[12]XORIn[16]XORIn[17]XORIn[18]XORIn[21]XORIn[25]XORIn[26]XORIn[27];
Out[4]=In[0]XORIn[1]XORIn[2]XORIn[3]XORIn[10]XORIn[11]XORIn[12]XORIn[13]XORIn[14]XORIn[15]XORIn[20]XORIn[25]XORIn[26]XORIn[27].
其中,在上面的输出列表中,作为示例,“In[11]”指的是标签102中位置11处的输入比特,“Out[3]”指的是输出116中位置3处的输出比特,等等。
在第二示例中,考虑标签比特102的长度T为31比特并且集比特103的长度S为7比特(其现在是哈希引擎106的输出的期望长度)的情况。首先,为了确定将与各自的输入比特相关的输出比特集,计算来自长度S的集的长度的数学组合数-即在此情况下,那是给出35种组合的7选3。因为我们有太多组合,我们对输出比特可能集的列表进行稀疏采样-例如,让我们将我们丢弃3个输出比特的可能组合的列表中位置4(其将包括输出比特056)、13(其将包括输出比特026)、22(其将包括输出比特125)和31(其将包括输出比特123)处的集。与上述第一示例类似,一旦已经确定T个合适的输出比特集,它们每个可以与T个输入比特分别相关。下面列表为从与各个31个输入比特(“IN”)中的每个相关的7个输出比特(“OUT”)指示各自的比特集的示例。如上所述,在不同的示例中,T个输出比特集可以与不同的输入比特相关。
输入:输出
0:456
1:356
2:256
3:156
4:346
5:246
6:146
7:046
8:236
9:136
10:036
11:126
12:016
13:345
14:245
15:145
16:045
17:235
18:135
19:035
20:025
21:015
22:234
23:134
24:034
25:124
26:024
27:014
28:023
29:013
30:012
上面列表可以用来标识哪些输出比特从哪些输入比特接收基值。也就是说,对于每个输出比特,可以标识输入比特集以用于确定输出比特。以XOR运算的方式表示为哈希引擎中组合的输入比特集,因此,二进制串116的7个输出比特为:
Out[0]=In[7]XORIn[10]XORIn[12]XORIn[16]XORIn[19]XORIn[20]XORIn[21]XORIn[24]XORIn[26]XORIn[27]XORIn[28]XORIn[29]XORIn[30];
Out[1]=In[3]XORIn[6]XORIn[9]XORIn[11]XORIn[12]XORIn[15]XORIn[18]XORIn[21]XORIn[23]XORIn[25]XORIn[27]XORIn[29]XORIn[30];
Out[2]=In[2]XORIn[5]XORIn[8]XORIn[11]XORIn[14]XORIn[17]XORIn[20]XORIn[22]XORIn[25]XORIn[26]XORIn[28]XORIn[30];
Out[3]=In[1]XORIn[4]XORIn[8]XORIn[9]XORIn[10]XORIn[13]XORIn[17]XORIn[18]XORIn[19]XORIn[22]XORIn[23]XORIn[24]XORIn[28]XORIn[29];
Out[4]=In[0]XORIn[4]XORIn[5]XORIn[6]XORIn[7]XORIn[13]XORIn[14]XORIn[15]XORIn[16]XORIn[22]XORIn[23]XORIn[24]XORIn[25]XORIn[26]XORIn[27];
Out[5]=In[0]XORIn[1]XORIn[2]XORIn[3]XORIn[13]XORIn[14]XORIn[15]XORIn[16]XORIn[17]XORIn[18]XORIn[19]XORIn[20]XORIn[21];
Out[6]=In[0]XORIn[1]XORIn[2]XORIn[3]XORIn[4]XORIn[5]XORIn[6]XORIn[7]XORIn[8]XORIn[9]XORIn[10]XORIn[11]XORIn[12].
上述集的许多变化时可能的,但上述方法提供一种用于为哈希引擎106确定输入至输出映射的集的简单技术,这确保二进制串116的每个输出比特从第一二进制串102的约一半比特接收基值。在上述第一示例中,二进制输出串116的5个比特中的每个从标签102的28个输入比特的14或15接收基值;并且在上述第二示例中,二进制输出串116的7个比特中的每个从标签102的31个输入比特的12至15之间接收基值。在第一实施方式中,被组合以形成输出比特的每个输入比特集包括平均来说在所述集上输入比特的40%和60%之间。在第二实施方式中,被组合以形成输出比特的每个输入比特集包括平均来说在所述集上输入比特的42%和58%之间。在第三实施方式中,被组合以形成输出比特的每个输入比特集包括平均来说所述集上输入比特的45%和55%之间。
上面的方法可以被概括如下。给定T个输入比特和S个输出比特,计算S选以看看这产生对应于包括个输出比特的不同集的多少数学组合。如果组合数大于T,那么稀疏采样组合的列表以确定T个输出比特集。如果组合数小于T,那么我们需要确定某些更多的输出比特集,该输出比特集具有不同数量的输出比特。
目标是具有包括接近S/2个输出比特于其中的集,但有时会与如果可能确定唯一输出比特集的目标冲突。因此如果不提供至少T个输出比特集,那么我们能够尝试具有不同数量的输出比特的额外的输出比特集。下一接近S/2的未用数将用于所述集中的输出比特的数量。当一对数同样接近S/2且均未用,那么将首先使用两个数中较小的,因为这导致需要执行的XOR运算更少,因而需要略少的硬件。例如,如果S为偶数(例如,S=6),那么(例如,),并且如果S选S/2(例如,6选3)未提供足够的组合,那么使用S选S/2-1(例如,6选2)。如果这仍未提供足够的组合,那么使用S选S/2+1(例如,6选4),等等,以S选S/2-2、S选S/2+2、S选S/2-3等的顺序直到已经确定T个或更多个组合。
如果已经确定多于T个组合,那么将被确定的最终组合(例如,S/2-3)被稀疏采样(注意,在此示例中未稀疏采样较早的组合),以确定T个组合。以这种方式,T个输入比特可以被分配给他们将贡献的输出比特集。如果S为奇数(例如,S=7),那么(例如,),并且如果S选(例如,7选3)未提供足够的组合,那么使用S选(例如,7选4)。如果这仍未提供足够的组合,那么使用S选(例如,7选2),等等,以S选S选S选等的顺序直到已经确定≥T个组合。如果已经确定多于T个组合,那么稀疏采样将被确定的最终组合(注意,在此示例中未稀疏采样更早的组合),以确定T个组合。以这种方式,T个输入比特可以被分配给他们将贡献的输出比特集。如果存在少于T个可能从S个输出比特形成的唯一的输出比特集,那么将需要重用输出比特集中的一些以与不同输入比特关联。
哈希引擎106可以被硬连线,使得每个输入“标签”比特被提供给逐比特XOR的排列连同被配置以形成二进制串116的输出比特。图4示出了这种实施方式的一个简单示例。在该图中,标签比特的数量T为5(输入),并且集比特的数量S为4(输出)。该图根据上述原理示出合适的XOR401-406的排列,以形成输出比特如下:
Out[0]=In[2]XORIn[3]XORIn[4]
Out[1]=In[1]XORIn[4]
Out[2]=In[0]XORIn[3]
Out[3]=In[0]XORIn[1]XORIn[2]
在组合单元107以可逆运算的方式(优选为逐比特XOR运算)将由哈希引擎106生成的二进制输出串116与来自输入串101的集比特序列103组合(这是图3的步骤303),虽然在其它实施方式中该可逆运算可以是另一中可逆运算(诸如,以2S为模的加或减)。在XOR运算是简单和快速的以实现逻辑。另外,XOR运算用作将输出串116(其是输入存储器地址101的标签102的混合)与输入存储器地址101的集比特103“混合”,这可以有助于确保对顺序存储器地址的访问不存储于同一高速缓存线。组合单元107的输出120被用作高速缓存存储器110中的高速缓存线/行标识符,因此指示标签比特102和数据本身存储于哪条线(这是图3的步骤304)。优选地每个高速缓存块会有2S个行,使得每个S比特输出120标识特定高速缓存线。
根据本文所述示例配置的哈希引擎有效地体现了简单的哈希函数,该哈希函数快得足以用于关键路径,并且不会显著增加高速缓存存储器的复杂性或功耗。哈希引擎106还确保具有常规输入存储器地址模式的数据序列在高速缓存存储器110分布。
通常,高速缓存存储器***将具有多于一个高速缓存体。图1中,存在2个高速缓存块,111和112。可以由块选择单元109将高速缓存条目分布在这些存储器块之间。在一些实施方式中,块选择单元109为逐比特运算符,该逐比特运算符接收高速缓存行120的最低有效比特(121)并将那个比特与来自输入存储器地址101的“块”比特104组合(优选地,该比特邻近集比特103,但不及其高)。逐比特运算符109(在图1所示的示例中为XOR)在其输出提供块指示符122,以将输入数据114导至2个高速缓存块111或112中的一个的高速缓存行120。以这种方式,高速缓存条目被分布在高速缓存块之间,并且可以实现多块高速缓存的优点。如果存在多于2个高速缓存块,适当时增加来自高速缓存地址120的最低有效比特数和(相等的)块比特数(例如,对于4个块,将需要2个块比特)。
然而,在优选实施方式中,高速缓存逻辑器100还包括块加扰单元108,该块加扰单元108被构造成在来自高速缓存行120的比特位置向块选择单元109提供输入(例如,伪随机输入)。相反,来自高速缓存行120的最低有效比特用作对存储比特序列(例如,伪随机比特序列)的块加扰单元108的比特寄存器的查找,对于所有可能值查找将返回任意可能值的可能性基本上相同。
图2更详细地显示了块加扰单元108,该块加扰单元108包括用于存储二进制序列的比特寄存器201和用于从二进制序列选择一个或更多个比特的比特选择单元202。比特寄存器201和比特选择单元202能够由适于存储具有所需长度的二进制串的逻辑及存储器的任意适当组合提供;例如,比特寄存器和选择单元可以是单个逻辑单元或大型逻辑单元的一部分。
块加扰单元108可以存储固定的二进制序列,或可以根据本领域任意适当的公知技术生成其自身的伪随机比特序列,以用作二进制序列。然而,优选地比特寄存器201可由外部代理(诸如,支持高速缓存逻辑器100的主机的软件或硬件功能)编程。这避免增加所述高速缓存逻辑器的复杂性,并且利用在实现高速缓存逻辑器以便形成二进制串的数据处理***的其它部分处可用的处理功率。通常,比特寄存器201在***重置或***上电时由***驱动器初始化。
在比特寄存器201处存储的二进制串可以是伪随机生成的。然而,优选地,将同等数量的所有可能值***二进制串的位置,并且接着在二进制串内打乱所述值,这样来自二进制串的查找将返回任意可能值的概率对于所有可能值基本相同。然而,生成二进制串,其优选地具有属性:如果在二进制串内任意点处从所述二进制串读取一组B个比特(例如,在上面详述的示例中,B=1),那么读取任意可能的2B的可能性基本上相同。例如,如果B=1,那么优选地二进制串的约一半比特为0,使得块加扰单元大约同样可能选择所述高速缓存存储器的各块。这能通过随机(或伪随机)生成二进制串并且然后丢弃不满足该条件的所生成的二进制串直至生成满足该条件的二进制串来实现。一个示例中通过仅在具有40-60%之间的0的比特寄存器存储二进制串或另一示例中通过仅在具有45和55%之间的0的比特存储器存储二进制串可以执行该条件。另选地,对于B>1的示例,格雷码序列能够用于所述二进制串,使得二进制串通过所有可能值循环。形成二进制串的方法可能取决于访问数据的顺序。
块加扰单元108被构造成将高速缓存行120的一个或更多个最低有效比特121用作对比特寄存器201处存储的二进制串的查找。该布置意味着高速缓存地址的比特不用于块选择单元109,相反提供了由块加扰单元108从(例如,伪随机)二进制串选择比特的方法。以适于所述块加扰单元中所用的比特寄存器架构的方式,将最低有效比特121用作选择单元202对比特寄存器201的查找。例如,最低有效比特可以用于标识比特寄存器中的比特位置,或用作设置成从比特寄存器选择一个或更多个比特的算法的种子。
在优选实施方式中,比特寄存器在长度上为2N个比特,其中N为高速缓存地址120的最低有效比特121的数量。这允许最低有效比特121用作标识存储器201中存储的二进制串内的比特位置。例如,如果N=5,那么比特寄存器处的二进制串为32比特长,同时给定的高速缓存地址的最低有效比特121的5比特串标识二进制串的特定比特。从比特寄存器201中那一特定比特开始顺序地选择块选择单元109所需的比特数(例如,对于具有两个高速缓存块的高速缓存存储器,仅选择所标识的比特;对于4个高速缓存块,选择2个比特)。
将选择单元202从比特寄存器201所选的一个或更多个比特提供给块选择单元109以用上述方式与一个或更多个块比特104组合。块选择单元109(优选为XOR运算符)生成块指示符122,以标识将存储数据及标签比特102的高速缓存块。
块加扰单元108的使用用于分配高速缓存***对块的访问。因为寄存器201中存储的二进制序列可以被选择为具有伪随机特性(同时优选地确保约50%比特为0),块加扰单元108通常提供优于具有块比特104的高速缓存行指示符121的混合比特的性能。这是因为由块加扰单元进行的块选择本质上与存储器地址101内存在的特定比特序列解耦,因而不太可能导致高速缓存块之间的病态访问模式。通过将比特寄存器201的所有比特设为0,或所有比特设为1,可以有效地禁用块加扰单元108。
注意,将XOR用作块选择单元109确保了在数据突发传输的情况下,对齐的2W字节读取对仍然交替地从块读取或写入块,并且因此提供相关的性能利益。也就是说,对于具有相同的标签和集比特、但不同的块比特的两个存储相邻地址,从组合单元107输出的高速缓存行指示120将是相同的,但是从块选择单元109输出的高速缓存体指示符将是不同的。对于其它读/写模式(例如,如果集比特增加1,两个存储器地址之间的标签和/或集比特变化),高速缓存访问将很好地分布在块111和112之中,从而避免病态访问情况。注意,标签比特和块扰乱的哈希是确定性过程,在此意义上如果重复高速缓存映射,给定的存储器地址101将映射到同一高速缓存地址。
通常,仅输入存储器地址101的部分被用作标签和集比特,最低有效比特未被高速缓存逻辑器使用并且由图1中的字比特105表示。为了允许从高速缓存存储器重建输入存储器地址,无需将所有比特存储在高速缓存中。这是因为,从高速缓存读取条目时:
a)块指示符比特122和高速缓存行指示符比特120的值是已知的,因为在高速缓存中从哪里读取所述条目是已知的;可以通过块加扰单元108(或等效单元)传递高速缓存行标识符的最低有效比特,并且该结果可以用作到XOR运算的输入,该XOR运算具有作为另一输入的块标识符以因而找到存储器地址的块比特。
b)可以易于根据高速缓存行指示符比特120计算集比特,因为在组合单元107处执行的运算是可逆的。标签被存储在高速缓存内并且可以例如通过哈希引擎(或等效单元)再次推送,以展现必须与集比特组合以形成高速缓存行地址的比特。因为组合单元的输出是已知的(高速缓存行指示符比特)并且到组合单元的输入中的而一个是已知的,因为在组合单元107处执行的运算是可逆的所以可以确定集比特103到组合单元的另一个输入。
因此,通过仅连同长度为2W的数据本身一起存储存储器地址101的标签比特102,可以将二进制输入存储器地址的信息内容存储在高速缓存存储器110。字比特由存储数据的高速缓存线内的字节位置确定。
根据本发明配置的高速缓存逻辑器可以包括例如专用硬件逻辑、适于编程的可重配置逻辑(例如,FPGA)和/或处理器执行代码中的一个或更多个,该处理器执行代码被构造成诸如使得处理器和代码的组合以提供本文描述的发明的功能(诸如,ASIC或FPGA)。在优选实施方式中,高速缓存逻辑器是硬连线的逻辑单元。
无需将所要求保护的高速缓存逻辑器的功能(例如,哈希引擎、组合单元、块选择单元和块加扰单元)提供为能够(a)以任意形式组合和(b)本身包括一个或更多个逻辑单元的独立单元和代表性功能。
本文所用的术语软件及程序代码包括用于处理器(例如,CPU和/和GPU)的可执行代码、固件、字节码、诸如C和OpenCL的编程语言代码和用于例如FGA的可重配置逻辑设备的模块。机器可读代码包括软件/程序代码以及用于定义任意级的集成电路的硬件表示,包括在寄存器传输级(RTL)、在诸如Verilog或VHDL的高级电路表示和诸如OASIS及GDSII的低级表示。
本文所述的算法和方法可以由执行使得单元执行所述算法/方法的软件的一个或更多个物理处理单元执行。所述或各个物理处理单元可以是诸如CPU或GPU(或其内核)的任意适当处理器、或固定函数或可编程硬件。软件可以以非暂时性形式存储于机器可读介质(诸如,集成电路存储器、光或磁存储器)。机器可读介质可能包括诸如片上存储器、计算机工作存储器和非易失性存储设备的多个存储器。
申请人由此孤立地公开了本文描述的每个个体特征和两个或多个此类特征的任意组合,以达到能够总体上根据本领域技术人员的公知常识、基于本说明书执行此类特征或组合的程度,无论此类特征或特征组合是否解决本文公开的任何问题,并且不限于所述权利要求的范围。申请人指出本发明各方面可以由任意此类个体特征或特征组合构成。鉴于前述说明,对于本领域技术人员来说显而易见的是,可以在本发明范畴内进行各种变更。
Claims (20)
1.一种用于根据二进制输入存储器地址生成高速缓存地址的高速缓存逻辑器,该二进制输入存储器地址包括为具有第一预定义长度的第一比特序列的第一二进制串和为具有第二预定义长度的第二比特序列的第二二进制串,该高速缓存逻辑器包括:
哈希引擎,该哈希引擎被构造成根据所述第一二进制串生成第三二进制串,该第三二进制串具有所述第二预定义长度,并且所述哈希引擎被构造成通过借助于第一逐比特运算组合所述第一二进制串的比特的相应子集来形成所述第三二进制串的各比特,其中,在所述哈希引擎处定义所述第一二进制串的比特的子集,使得每个子集是唯一的并且每个子集平均来说包括所述第一二进制串的约一半比特;以及
组合单元,该组合单元被设置成借助于可逆运算将所述第三二进制串与所述第二二进制串组合,以形成用作高速缓存存储器中的高速缓存地址的至少一部分的二进制输出串。
2.根据权利要求1所述的高速缓存逻辑器,其中,借助于所述第一二进制串和所述第三二进制串的比特间的数据路径,在所述哈希引擎用硬件定义所述第一二进制串的比特的所述子集,每个数据路径被设置成提供所述第一二进制串的比特,以与同一子集的第一二进制串的其它比特组合,以形成所述第三二进制串的对应比特。
3.根据权利要求1所述的高速缓存逻辑器,其中,所述数据路径是所述哈希引擎的物理连接。
4.根据前述任一项权利要求所述的高速缓存逻辑器,其中,所述哈希引擎包括多组逐比特运算符,每组逐比特运算符被设置成根据所述第一二进制串的比特的对应子集形成所述第三二进制串的比特。
5.根据前述任一项权利要求所述的高速缓存逻辑器,其中,所述二进制输出串用于标识高速缓存存储器块中的高速缓存行。
6.根据前述任一项权利要求所述的高速缓存逻辑器,其中,所述第一二进制串是所述二进制输入存储器地址的预定的最高有效比特序列。
7.根据权利要求6所述的高速缓存逻辑器,其中,所述第二二进制串是所述二进制输入地址的预定的次高有效比特序列。
8.根据前述任一项权利要求所述的高速缓存逻辑器,其中,所述二进制输入存储器地址具有固定长度,并且所述第一二进制串和所述第二二进制串是所述二进制输入存储器地址中相邻的比特序列。
9.根据前述任一项权利要求所述的高速缓存逻辑器,所述高速缓存逻辑器还包括块选择单元,该块选择单元被构造成借助于第二逐比特运算将从所述二进制输出串导出的一个或更多个比特与所述二进制输入存储器地址的同等数量的比特组合,以生成用于标识具有多个高速缓存块的高速缓存存储器中的块的块标识符。
10.根据权利要求9所述的高速缓存逻辑器,其中,所述块标识符在长度上等于从所述二进制输出串导出的比特的数量。
11.根据权利要求9或10所述的高速缓存逻辑器,其中,所述二进制输入串的所述一个或更多个比特是比所述第二二进制串的比特更低有效位的比特。
12.根据权利要求11所述的高速缓存逻辑器,其中,所述二进制输入串的所述一个或更多个比特与所述二进制输入串中的所述第二二进制串相邻。
13.根据权利要求9至12中的任一项所述的高速缓存逻辑器,所述高速缓存逻辑器还包括块加扰单元,该块加扰单元具有比特寄存器,该比特寄存器被构造成存储预定二进制串,该块加扰单元被构造成通过将来自所述二进制输出串的一个或更多个比特的序列用作所述比特寄存器中的查找器来对所述二进制输出串的所述一个或更多个比特进行运算,以从所存储的预定二进制串选择预定数量的比特以在所述块选择单元中用作从所述二进制输出串导出的所述一个或更多个比特,其中,所述预定二进制串具有以下属性,即所选择的比特的值具有基本相同的可能性为可能值中的任一值。
14.根据权利要求13所述的高速缓存逻辑器,其中,所述预定二进制串是伪随机二进制串。
15.根据权利要求13或14所述的高速缓存逻辑器,其中,所述预定二进制串为2N个比特长,并且来自所述二进制输出串的所述预定比特序列为所述二进制输出串的N个最低有效比特,所述块加扰单元被构造成将所述二进制输出串的所述N个最低有效位比特用作所述预定二进制串中的比特地址,从该比特地址从所存储的预定二进制串读取所述预定数量的比特。
16.根据权利要求13至15中的任一项所述的高速缓存逻辑器,其中,所述比特寄存器是可编程的,并且所述块加扰单元可操作用于使伪随机生成的二进制串被写入所述比特寄存器以用作所述预定二进制串。
17.一种高速缓存存储器***,该高速缓存存储器***包括:
根据权利要求9至16中的任一项所述的高速缓存逻辑器;以及
具有多个高速缓存块的高速缓存存储器;
其中,所述高速缓存存储器***被构造成在由所述块标识符指示的高速缓存块的二进制输出串指示的高速缓存行存储至少所述第一二进制串和具有所述二进制输入存储器地址的用于高速缓存的数据。
18.根据权利要求17所述的高速缓存存储器***,其中,每个高速缓存块具有2S个行,其中,S为所述第二二进制串和所述第三二进制串的每个中的比特的数量。
19.根据权利要求19或20所述的高速缓存存储器***,其中,所述二进制输入存储器地址包括所述二进制输入存储器地址的W个最低有效比特的第四二进制串,该第四二进制串不包括所述第一二进制串、所述第二二进制串或从所述二进制输出串导出的在所述块选择单元使用的比特,并且所述高速缓存存储器的各高速缓存行具有至少2W个字节加上所述第一二进制串宽的所述长度的宽度。
20.一种用于根据二进制输入存储器地址生成高速缓存地址的方法,该二进制输入存储器地址包括为具有第一预定义长度的第一比特序列的第一二进制串和作为具有第二预定义长度的第二比特序列的第二二进制串,该方法包括以下步骤:
接收所述输入存储器地址的第一二进制串;
根据所述第一二进制串生成第三二进制串,所述第三二进制串具有第二预定义长度,所述第三二进制串的各比特通过借助于第一逐比特运算组合所述第一二进制串的比特的相应子集来形成,其中,所述第一二进制串的比特的子集被定义成使得每个子集是唯一的并且每个子集平均起来包含所述第一二进制串的约一半比特;并且
借助于可逆运算将所述第三二进制串与所述第二二进制串组合,以形成用作高速缓存存储器中的高速缓存地址的至少一部分的二进制输出串。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1416619.3 | 2014-09-19 | ||
GB1416619.3A GB2530722B (en) | 2014-09-19 | 2014-09-19 | Cache hashing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105446897A true CN105446897A (zh) | 2016-03-30 |
CN105446897B CN105446897B (zh) | 2020-09-25 |
Family
ID=51869201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510659352.2A Active CN105446897B (zh) | 2014-09-19 | 2015-09-15 | 高速缓存逻辑器、存储器***及生成高速缓存地址的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9836395B2 (zh) |
CN (1) | CN105446897B (zh) |
DE (1) | DE102015114260A1 (zh) |
GB (1) | GB2530722B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107579916A (zh) * | 2016-07-04 | 2018-01-12 | 新华三技术有限公司 | 转发表项访问方法及装置 |
CN108255464A (zh) * | 2016-12-28 | 2018-07-06 | 北京忆恒创源科技有限公司 | 数据加扰方法、解扰方法及其装置 |
CN108733584A (zh) * | 2017-04-17 | 2018-11-02 | 伊姆西Ip控股有限责任公司 | 用于优化数据缓存的方法和设备 |
TWI750243B (zh) * | 2017-01-25 | 2021-12-21 | 南韓商三星電子股份有限公司 | 非揮發性記憶體儲存裝置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9678717B2 (en) * | 2014-11-14 | 2017-06-13 | Cavium, Inc. | Distributing resource requests in a computing system |
GB2542646B (en) * | 2016-03-18 | 2017-11-15 | Imagination Tech Ltd | Non-linear cache logic |
GB2560336B (en) * | 2017-03-07 | 2020-05-06 | Imagination Tech Ltd | Address generators for verifying integrated circuit hardware designs for cache memory |
US10558573B1 (en) * | 2018-09-11 | 2020-02-11 | Cavium, Llc | Methods and systems for distributing memory requests |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101482851A (zh) * | 2008-12-31 | 2009-07-15 | 中国科学院计算技术研究所 | 二进制翻译器中线程共享目标本地码缓存替换方法及*** |
EP2634997A1 (en) * | 2008-05-23 | 2013-09-04 | Telefonaktiebolaget L M Ericsson AB (Publ) | Maintaining distributed hash tables in an overlay network |
JP6190288B2 (ja) * | 2014-02-25 | 2017-08-30 | 日本電信電話株式会社 | キャッシュ制御装置及び方法及びプログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7606994B1 (en) * | 2004-11-10 | 2009-10-20 | Sun Microsystems, Inc. | Cache memory system including a partially hashed index |
KR100957782B1 (ko) * | 2007-11-19 | 2010-05-13 | 한국전자통신연구원 | 캐시 메모리 및 그 제어 방법 |
US8751751B2 (en) * | 2011-01-28 | 2014-06-10 | International Business Machines Corporation | Method and apparatus for minimizing cache conflict misses |
EP2709017B1 (en) * | 2012-09-14 | 2015-05-27 | Barcelona Supercomputing Center-Centro Nacional de Supercomputación | Device for controlling the access to a cache structure |
-
2014
- 2014-09-19 GB GB1416619.3A patent/GB2530722B/en active Active
-
2015
- 2015-08-27 DE DE102015114260.0A patent/DE102015114260A1/de active Pending
- 2015-09-15 CN CN201510659352.2A patent/CN105446897B/zh active Active
- 2015-09-18 US US14/858,882 patent/US9836395B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2634997A1 (en) * | 2008-05-23 | 2013-09-04 | Telefonaktiebolaget L M Ericsson AB (Publ) | Maintaining distributed hash tables in an overlay network |
CN101482851A (zh) * | 2008-12-31 | 2009-07-15 | 中国科学院计算技术研究所 | 二进制翻译器中线程共享目标本地码缓存替换方法及*** |
JP6190288B2 (ja) * | 2014-02-25 | 2017-08-30 | 日本電信電話株式会社 | キャッシュ制御装置及び方法及びプログラム |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107579916A (zh) * | 2016-07-04 | 2018-01-12 | 新华三技术有限公司 | 转发表项访问方法及装置 |
US11038797B2 (en) | 2016-07-04 | 2021-06-15 | New H3C Technologies Co., Ltd. | Forwarding table entry access |
CN108255464A (zh) * | 2016-12-28 | 2018-07-06 | 北京忆恒创源科技有限公司 | 数据加扰方法、解扰方法及其装置 |
TWI750243B (zh) * | 2017-01-25 | 2021-12-21 | 南韓商三星電子股份有限公司 | 非揮發性記憶體儲存裝置 |
CN108733584A (zh) * | 2017-04-17 | 2018-11-02 | 伊姆西Ip控股有限责任公司 | 用于优化数据缓存的方法和设备 |
CN108733584B (zh) * | 2017-04-17 | 2022-07-19 | 伊姆西Ip控股有限责任公司 | 用于优化数据缓存的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
GB2530722A (en) | 2016-04-06 |
US9836395B2 (en) | 2017-12-05 |
GB2530722B (en) | 2016-08-17 |
CN105446897B (zh) | 2020-09-25 |
DE102015114260A1 (de) | 2016-03-24 |
GB201416619D0 (en) | 2014-11-05 |
US20160085672A1 (en) | 2016-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105446897A (zh) | 高速缓存哈希 | |
CN103823763B (zh) | 用于控制对缓存结构的访问的装置 | |
US10950292B1 (en) | Method and apparatus for mitigating row hammer attacks | |
CN103218309B (zh) | 多级指令高速缓存预取的方法、***与设备 | |
US9048834B2 (en) | Grouping of physically unclonable functions | |
US20080065809A1 (en) | Optimized software cache lookup for simd architectures | |
EP2366156A1 (en) | String matching method and apparatus | |
CN110018811B (zh) | Cache数据处理方法以及Cache | |
US7761662B2 (en) | Cache memory device and microprocessor | |
Lulli et al. | Highly optimized simulations on single-and multi-GPU systems of the 3D Ising spin glass model | |
CN107203481B (zh) | 逻辑器件、生成地址的方法、集成电路制造***和介质 | |
CN105095104A (zh) | 数据缓存处理方法及装置 | |
US8380779B2 (en) | Technique for determining if a logical sum of a first operand and a second operand is the same as a third operand | |
CN107291630B (zh) | 一种高速缓冲存储器处理方法及装置 | |
GR20150100422A (el) | Αποθηκευση δεδομενων | |
US20140013054A1 (en) | Storing data structures in cache | |
US20160179666A1 (en) | Apparatus and Method to Dynamically Expand Associativity of A Cache Memory | |
CN112380150B (zh) | 计算装置以及用于加载或更新数据的方法 | |
US12001346B2 (en) | Device, method and system to supplement a skewed cache with a victim cache | |
CN112380147A (zh) | 计算装置以及用于加载或更新数据的方法 | |
US20210182262A1 (en) | System and method using hash table with a set of frequently-accessed buckets and a set of less frequently-accessed buckets | |
Subha | An algorithm for variable cache ways | |
KR100899097B1 (ko) | 복수의 인덱싱 정보를 제공하는 방법 및 이를 이용한 캐쉬메모리 장치 | |
US8364915B2 (en) | Method, apparatus and system for generating access information from an LRU tracking list | |
CN114637609B (zh) | 基于冲突检测的gpu的数据获取*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |