非线性高速缓存逻辑的制作方法

文档序号:11276240阅读:184来源:国知局
本发明涉及用于生成高速缓存(cache)地址的高速缓存逻辑、高速缓存存储系统和用于生成高速缓存地址的方法。
背景技术
::高速缓存存储器被广泛用作存储器层次的部分,以通过减少与主存储器访问关联的等待时间和/或因这些访问消耗的带宽来提高数据处理系统的性能。如hennessy和patterson的“computerarchitecture.aquantitativeapproach.(fifthedition)”(计算机系统结构:量化研究方法(第五版))(章节2.1)中描述的,局部性(时间和空间二者)的原理意指将之前访问的(例如,最近访问的)数据的某个子集存储在相对小的高速缓存存储器中,能够以比(存储原始数据的)主存储器少的等待时间和/或高的带宽来访问该高速缓存存储器,允许实现整个存储系统的更快性能的成本效益的手段。为了确保可容易地从高速缓存存储器获取高速缓存数据,必须根据所定义的方案来组织高速缓存的数据。遵循hennessy和patterson的命名,将“线”(aka“块”)定义成存储器在对准边界上的一个或更多个字中的预定数量。hennessy和patterson指出,最普及方案是“集合相联”,由此“集合”是高速缓存中的物理存储线的群组。存储器中的线首先被映射在集合上,然后可将该线布置在该集合的线中的任一个中。另外,在hennessy和patterson中,用平凡(2的幂)映射来选择该集合。chosen_set=(线地址)mod(高速缓存中的集合的数量)。当集合中存在n条线时,高速缓存方案被称为“n路集合相联”。逻辑极端具有特定名称:其中n=1的情况被称为“直接映射”高速缓存。这使得实现成本最低,但是性能相对低。(将扼要地讨论确定性能的某些因素)。存在包含高速缓存的所有存储线的单个集合并因此任何存储器线可布置在高速缓存中的任何地方的其它极端被称为“全相联高速缓存”。这样使得实现的性能最佳,但是成本通常非常高。虽然某些系统确实使用直接映射的高速缓存,但更典型地,n被选择在比如[2,16]的范围内,从而提供了实现的性能和成本之间的平衡。至于高速缓存的性能,影响性能的一种因素是“缺失率”,缺失率平凡地是针对高速缓存中并不存在的数据访问高速缓存的次数除以访问的总数。hennessy和patterson将“缺失”分为三类:强制、容量和冲突。强制缺失是不可避免的并且对应于任何线的首次访问。容量缺失通常取决于高速缓存的物理大小,而冲突缺失是由于集合内的替换而导致的并且取决于集合的相联,并且在某种意义上,取决于正访问的数据地址。通常,用于高速缓存的数据被保持在用诸如存储器地址或计算系统中的硬件资源地址的地址标识的资源处。对这些资源地址的访问可遵循某些固定模式(诸如,对顺序存储器块的访问或对2d数据结构的交叉访问(stridedaccess)),并且因此可小心地确保代表相关(例如,顺序或交叉的)资源地址的数据被很好地分布于高速缓存存储器,以避免病态访问情况。只被映射到几个高速缓存集合的充分长的地址序列是病态访问情况的示例,从而导致冲突缺失率高,这是因为反复访问相同几个高速缓存集合会导致要进行大量高速缓存线替换。即使强制或容量缺失率可能低,这些差分布特性也严重影响高速缓存存储器的性能。虽然实现较高高速缓存相联可使冲突缺失减少,但它得到功率和面积成本。应该注意,由于将存储器块地址映射到高速缓存集合是“多对一”关系,因此当块数据常驻在高速缓存中时,必须存储有时被称为标签的附加数据,用于识别块的原始存储器位置。显然期望的是,在标签中使用尽可能少的位。用hennessy和patterson在以上描述的简单“选择集合”映射方案,在给定在高速缓存中存在2s个集合并且存储器具有数据的2t+s条线的系统的情况下,那么标签需要t位的数据。在该方案中,因此不必将标签中的线的全地址存储在标签中,这是因为可从高速缓存中的物理位置来获得s个最低有效位。hennessy和patterson还讨论了通过使用多存储体高速缓存来增大高速缓存带宽的方法。提出将高速缓存分成2k个存储体(k在比如[1,3]的范围内)并且将线地址j指派给存储体(jmod2k)。hennessy和patterson声明该简单映射“工作地很好”,但它可能容易以与之前描述的高冲突缺失率相同的方式遭遇病态访问模式。在现有技术中已经提出了用于改进高速缓存内的数据分布并且针对给定大小的高速缓存使高速缓存命中率最大的一些机制。这些机制通常使用复杂哈希函数将伪随机变量插入到数据在高速缓存地址上的映射。例如,m.schlansker等人在他们的论文“randomizationandassociativityinthedesignofplacement-insensitivecaches”(computersystemslaboratory,hpl-93-41,1993年6月)中描述了使用复杂哈希函数将数据在高速缓存中的布置随机化。他们提出了以下映射:chosen_set=((线地址*线地址*174773)/221)mod(number_of_sets_in_cache)。虽然这样确实在将地址映射到集合时产生了良好的分布,但它遭遇了两个主要的不足。第一个是,就在高速缓存存储系统的关键路径中实现的硅面积和等待时间而言,这种复杂哈希函数的成本通常过高。第二个不足是,高速缓存标签存储需要保持全部线地址(而并非其子集),因为看上去不是将哈希映射“反转”的实际方法。因此存储较大标签的需要大幅增加了高速缓存的成本。通过减少冲突缺失来提高高速缓存性能的其它机制包括使用偏斜相联(skewed-associative)高速缓存架构。在“acasefortwo-wayskewed-associativecaches”(a.seznec,proceedingsofthe20thinternationalsymposiumoncomputerarchitecture,sandiego,1993年5月)和h.vandierendonckandk.debosschere的“trade-offsforskewed-associativecaches”(根特大学的电子信息系统系发表的论文)中描述了这些架构。偏斜相联架构需要多个高速缓存存储体,这是因为该机制通过高速缓存地址的存储体间分散来实现低缺失率。然而,如在vandierendonck论文中观察到的,通过将偏斜相联架构与复杂哈希函数组合以在将数据映射到高速缓存中时插入随机符号来实现高性能。另外,这种复杂哈希函数通常太贵,以致无法在高速缓存存储系统的关键路径中实现。高速缓存存储器中的替换策略确定当高速缓存线为满时要丢弃哪个(些)条目。示例是最近最少使用(lru)替换策略,根据该策略,从高速缓存线中丢弃最近最少使用的条目。偏斜相联高速缓存的其它限制是可实现的替换策略的受限集合。例如,seznec指出“unfortunately,wehavenotbeenabletofindconciseinformationtoassociatewithacachelinewhichwouldallowasimplehardwareimplementationofalrureplacementpolicyonaskewed-associativecache”(遗憾的是,不能够找到精简信息与将允许在偏斜相联高速缓存上进行lru替换策略的简单硬件实现的高速缓存线关联),但他确实提出了“可工作得好的”双向伪lru方案。在hennessy和patterson中讨论了可能替换策略的其它示例。可用将资源地址分布于高速缓存存储器上的简单、复杂度低的函数来替换复杂哈希函数。然而,简单函数一般不提供避免病态访问情况的所期望的分布特性。技术实现要素:根据本发明的第一方面,提供了一种用二进制存储器地址生成高速缓存地址的高速缓存逻辑,所述二进制存储器地址包括第一预定长度的第一二进制序列和第二预定长度的第二二进制序列,所述高速缓存逻辑包括:多个取代单元,所述多个取代单元中的每一个被配置成接收所述第一二进制序列的位的相应分配,并且用根据接收到的位的分配而选择的对应取代位串来替换其分配的位;映射单元,其被配置成组合所述多个取代单元输出的取代位串,以形成所述第二预定长度的一个或更多个二进制串;以及组合逻辑,其被布置成通过可逆运算将所述一个或更多个二进制串与所述第二二进制序列组合,以形成用作高速缓存存储器中的高速缓存地址的至少部分的二进制输出串。所述多个取代单元中的每一个可包括查找表,所述查找表定义所述取代位串和各自对应的二进制输入,用于所述取代单元的位的相应分配被用作其查找表(lookuptable)中的查找(lookup)。每个取代单元可具有3、4或5的位宽度。可以用可能取代位串的集合来预先计算在各取代单元处存储的所述取代位串,以使所述取代单元的可能二进制输入的集合和相应的取代位串之间的相关性最小。可以用所述可能取代位串的集合来预先计算在每个取代单元处存储的所述取代位串,以进一步使所述取代单元的所述可能二进制输入的集合和相应的取代位串的线性组合之间的相关性最小。所述多个取代单元可以包括具有相同位宽度的一个以上取代单元,所述一个以上取代单元具有相同的位宽度,所述一个以上取代单元中的每一个具有取代位串的不同集合。在可具有相同位宽度的取代单元处的取代位串的集合共享每个集合中的相同次序的取代位串,通过将所述取代位串相对于所述多个取代单元的可能二进制输入旋转,使取代位串的每个集合与其它集合相关。所述多个取代单元中的一个或更多个可接收比其取代位串中的每个中存在的位的数量少的输入位,所述多个取代单元被配置成将其空输入的值固定在某个预定位值或者根据某个预定方案将其空输入解释为具有位值。所述映射单元可包括物理连接的集合,所述物理连接的集合定义所述多个取代单元的输出位与所述第二预定长度的所述一个或更多个二进制串的位之间的映射。所述组合逻辑可包括位减少逻辑和输出逻辑,所述位减少逻辑被配置成将所述一个或更多个二进制串减少为所述第二预定长度的中间二进制串,并且所述输出逻辑被配置成通过逐位可逆运算将所述中间二进制串与所述第二二进制序列组合以形成所述二进制输出串。所述二进制输出串可用于识别高速缓存存储器存储体中的高速缓存行。所述第一二进制序列可以是所述二进制存储器地址的最高有效位的预定序列。所述第二二进制序列可以是所述二进制存储器地址的较低有效位的预定序列。所述二进制输入存储器地址可具有固定长度并且所述第一二进制序列和所述第二二进制序列是所述二进制存储器地址中的位的相邻序列。在所述组合逻辑执行的可逆运算可包括一个或更多个逐位异或(xor)运算。该高速缓存逻辑还可包括存储体选择单元,所述存储体选择单元被配置成通过第二逐位运算将从所述二进制输出串获得的一个或更多个位与所述二进制存储器地址的相等数量的位组合,以生成存储体标识符,所述存储体标识符用于在具有多个高速缓存存储体的高速缓存存储器中识别存储体。所述存储体标识符的长度可等于从所述二进制输出串获得的位的数量。所述二进制存储器地址中的一个或更多个位可以是相比于所述第二二进制序列的位的较低有效位。所述二进制存储器地址中的一个或更多个位可与所述二进制存储器地址中的所述第二二进制序列相邻。该高速缓存逻辑还可以包括存储体加扰单元,所述存储体加扰单元具有被配置成存储预定二进制串的位寄存器,所述存储体加扰单元被配置成通过将所述二进制输出串中的一个或更多个位的序列用作位寄存器中的查找来对所述二进制输出串中的一个或更多个位进行运算,以在所述存储体选择单元中从所存储的预定二进制串选择预定数量的位用作从所述二进制输出串获得的一个或更多个位,其中,所述预定二进制串具有如下属性:所选择的位的值成为可能值中的任一个具有基本上相同的可能性。所述预定二进制串可以是伪随机二进制串。所述预定二进制串可以是2m位长,并且所述二进制输出串中的位的预定序列可以是所述二进制输出串中的m个最低有效位,所述存储体加扰单元被配置成使用所述二进制输出串中的所述m个最低有效位作为预定二进制串中的位地址,从所述位地址读取所存储的预定二进制串中的预定数量的位。所述位寄存器可以是可编程的,并且所述存储体加扰单元可以用于使得伪随机生成的二进制串能够被编写到所述位寄存器中,用作预定二进制串。提供了一种高速缓存存储系统,该高速缓存存储系统包括:所述高速缓存逻辑;以及高速缓存存储器,其具有多个高速缓存存储体;其中,所述高速缓存存储系统被配置成至少将第一二进制序列和具有二进制存储器地址的用于高速缓存的数据存储在所述存储体标识符所指示的所述高速缓存存储体的二进制输出串所指示的高速缓存行处。每个高速缓存存储体可具有2s行,其中,s是所述第二二进制序列中的位的数量。根据本发明的第二方面,提供了一种用二进制存储器地址生成高速缓存地址的方法,所述二进制存储器地址包括第一预定长度的第一二进制序列和第二预定长度的第二二进制序列,在高速缓存逻辑处执行所述方法,以下步骤:将所述第一二进制序列的位分配给所述高速缓存逻辑的多个取代单元中的每一个;在所述取代单元中的每一个处,使用所述第一二进制序列的分配的位确定对应的取代位串并且用该取代位串来替换所述分配的位;将来自所述多个取代单元的多个取代位串变换成所述第二预定长度的一个或更多个二进制串;以及通过可逆运算将所述一个或更多个二进制串与所述第二二进制序列组合,以形成用作高速缓存存储器中的高速缓存地址的至少部分的二进制输出串。使用所述第一二进制序列的分配的位确定对应的取代位串的步骤可以包括:将所述第一二进制序列中的分配的位用作所述取代单元的查找表中的查找。所述组合的步骤可以包括:将所述第二预定长度的所述一个或更多个二进制串减少为所述第二预定长度的中间二进制串,并且通过逐位可逆运算将所述中间二进制串与所述第二二进制序列组合,以形成二进制输出串。所述方法还可包括以下步骤:通过第二逐位运算将从所述二进制输出串获得的一个或更多个位与所述二进制存储器地址的相等数量的位组合,以生成存储体标识符,所述存储体标识符用于在具有多个高速缓存存储体的高速缓存存储器中识别存储体。所述高速缓存可在集成电路上以硬件实现。可提供在集成电路制造系统制造高速缓存逻辑的方法。可提供一种集成电路定义数据集,所述集成电路定义数据集当在集成电路制造系统中被处理时,将所述系统配置成制造所述高速缓存逻辑。可提供一种非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质上面存储有集成电路的计算机可读描述,所述计算机可读描述当在集成电路制造系统中被处理时,将所述集成电路制造系统配置成制造所述高速缓存逻辑。可提供一种集成电路制造系统,该集成电路制造系统包括:非瞬时计算机可读存储介质,其上存储有描述高速缓存逻辑的计算机可读集成电路描述;布局处理系统,其被配置成处理所述集成电路描述,以生成实施所述高速缓存逻辑的集成电路的电路布局描述;以及集成电路生成系统,其被配置成根据所述电路布局描述来制造所述高速缓存逻辑。可提供一种用于执行根据任何之前权利要求所述的方法的计算机程序代码。可提供一种非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质上面存储有计算机可读指令,所述计算机可读指令当在计算机系统处执行时,致使所述计算机系统执行根据任何之前权利要求所述的方法。附图说明现在,将参照附图以举例的方式来描述本发明,在附图中:图1是按照本文中描述的原理配置的并且具有两个存储体的高速缓存存储系统的示意图。图2是存储体加扰单元的可能实现方式的示意图。图3是高速缓存存储系统的哈希引擎的示意图。图4是例示生成高速缓存集合地址的方法的流程图。图5是集成电路制造系统的示意图。具体实施方式以下描述是以举例方式提出的,用于使本领域的技术人员能够形成并使用本发明。本发明不限于本文中描述的实施方式并且本领域的技术人员将清楚对所公开实施方式的各种修改。本文中描述了提供优异分布特性而没有引入显著的复杂度和等待时间的用于高速缓存存储系统的高速缓存逻辑。高速缓存逻辑可操纵任何类型的数据(包括例如资源地址(诸如,存储器和硬件地址)、处理器指令和来自存储器的数据)。在图1中示出高速缓存存储系统的示意图。高速缓存逻辑100被布置成确定用于高速缓存存储器110(通常并非高速缓存逻辑的部分)的高速缓存地址,具有二进制输入存储器地址101的输入数据114将被高速缓存在该高速缓存地址处,或者将从该高速缓存地址读取高速缓存数据。按照本文中描述的本发明,输入存储器地址101的部分可被存储在高速缓存存储器处,并且可从数据在高速缓存存储器中的位置获得输入存储器地址的其余部分。高速缓存存储器110可具有任何合适的存储器架构:例如,它可以是直接映射的高速缓存存储器或n路集合相联高速缓存存储器。在图4的流程图中例示并且将在本文中参照高速缓存逻辑所执行的方法的示例。高速缓存逻辑100包括哈希引擎106,哈希引擎106被布置成用输入地址101确定高速缓存行地址。在图1中示出的示例中,高速缓存存储器110包括两个高速缓存存储体(111和112)并且在高速缓存逻辑100处设置用于选择高速缓存存储体的存储体选择单元109。可选地,可设置存储体加扰单元108以进一步提高高速缓存逻辑的性能。现在,将参照图1来描述高速缓存逻辑的操作。高速缓存逻辑100被配置成用其接收的输入存储器地址101来确定高速缓存地址(图4中的步骤401)。存储器地址101将通常具有固定长度。更一般地,输入存储器地址101可以是任何类型的二进制串。在本示例中,输入存储器地址101是被表示为二进制串的资源地址。在图1中示出的示例中,存储器地址101包括四个位序列:(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中(但在某些实现方式中,它们会被存储在高速缓存存储器110中)。在图1中示出的示例中,存在两个高速缓存存储体111和112,使得一个存储体位足以识别高速缓存存储体中的一个,所以在这个示例中,b=1。然而,在其它示例中,可以在高速缓存存储器中存在不同数量的存储体,并且通常,高速缓存存储器中的存储体数量将是2的幂(诸如,2、4、8等)。在这些其它示例中,b可能不等于1,并且替代地,可以存在多个存储体位(b),这足以根据高速缓存存储器中的存储体数量来识别高速缓存存储器中的存储体。在本示例中,高速缓存存储器110的高速缓存行是2w个字节+t位宽,使得标签位102与数据一起被存储在高速缓存线中,但在其它示例中,标签位102可不必与数据位相邻地存储在高速缓存线中。例如,这对于允许更快地访问标签位(例如,以确定高速缓存当前是否存储特定数据条目,即,确定是高速缓存命中还是高速缓存缺失)可能是有用的,其中,高速缓存存储器被布置成将标签位102存储在高速缓存存储器110的单元处,从而允许比存储数据本身的高速缓存存储器的单元更快进行访问。通常,高速缓存存储器110可以是n路集合相联高速缓存,在该情况下,酌情地,每条高速缓存线可以是2w×n个字节+tn位宽,(但本领域的技术人员应该理解,附加存储和逻辑对于管理高速缓存替换策略(例如,lru)可能是必要的)。哈希引擎106被配置成对来自二进制输入存储器地址101的标签位102和集合位103进行运算,以生成二进制输出116。在本示例中,二进制输出116的长度等于二进制输入存储器地址101中的s位序列103并且被用作高速缓存存储器110中的高速缓存线地址。在本示例中,t位的串比s位的串长,即,t>s。t位序列可以是二进制输入存储器地址101的t个最高有效位,并且s位序列可以是较低有效位的序列。在图1中示出的示例中,在二进制输入存储器地址101中,“集合”位序列103与“标签”位序列102相邻。标签位通常与输入数据一起存储在高速缓存存储器处。哈希引擎106被配置成以将输入存储器地址分布于高速缓存存储器的行这样的方式来生成高速缓存行地址。因此,哈希引擎106的目的是降低地址规则模式的可能性,从而造成高速缓存线被不均匀使用。哈希引擎106的输出116被用作高速缓存存储器110中的高速缓存线/行标识符,并且指示线标签位102及数据本身将被存储在哪条线处。每个高速缓存存储体可具有2s行,以使得每个s位输出116识别特定高速缓存线。哈希引擎106可被配置成为了提供良好加密哈希函数的特性的原因是,如果一个输入位改变,则平均地,输出位16的大致一半改变。此外,如果输入位中的不同输入位改变,则平均地,我们将预料到输出位16中的不同位改变,但是我们将仍然预料到输出位116中的大约一半改变。在本文中描述的示例中,这在没有通常因加密哈希函数而引入的复杂处理和等待时间的情况下实现。总的目的是,为了对标签位102进行任何改变(不管那些位中有多少改变),平均地,输出位116中的大约一半将改变,并且为了对输入位进行不同改变,输出位116中的不同输出位将改变。在图3中示出哈希引擎106的示例配置。哈希引擎包括多个取代单元(substitutionunit)301、映射单元302、位减少逻辑307和输出逻辑304。位减少逻辑307和输出逻辑304一起表示组合逻辑的示例。每个取代单元301被配置成从t位输入102接收位305的选择并且向映射单元302提供位306的集合。映射单元320被配置成组合取代单元所提供的位306的集合,以生成二进制串303,在这个示例中,二进制串303均具有长度s。组合逻辑309被配置成将二进制串与s位输入串103组合,以生成s位输出串116。通过布置成形成在映射单元302处的每个二进制串303的长度等于s位103的序列,组合逻辑309可被配置成通过诸如xor运算的简单逐位运算来组合二进制串和s位序列。通过映射单元形成的二进制串303的长度不是s位的其它布置是可能的。现在,将更详细地描述取代单元、映射单元、位减少逻辑和输出逻辑的示例性配置。每个取代单元301被配置成根据为了选择标签位305而进行的预定取代来替换该标签位305的选择。例如,每个取代单元可包括或访问查找表(lut),lut针对接收到的标签位305的给定的选择来定义输出取代位306。取代单元所提供的输出取代位306的集合的长度可等于在该取代单元处接收到的标签位的选择。例如,取代单元可被配置成对标签二进制串102中的3位串进行运算并且输出取代3位串。被配置成对3位串进行运算并且提供3位输出的取代单元可被称为3位取代单元。不同取代单元可被配置成对不同长度的位串进行运算。每个取代单元被配置成从标签输入102接收位的预定选择。在设计时,可选择位的随机分配,或者可向每个取代单元提供从标签输入对位的某个有序的(有可能,连续的)选择。可通过在设计时进行建模来确定最佳分配,如以下更详细描述的。宽度为n位的取代单元将具有2n个可能输入。例如,3位取代单元将具有8个可能输入:000、001、010、011、100、101、110、111。这些二进制串还表示可能的二进制输出。在取代单元处,每个二进制输入被二进制输出取代并且唯一地对应于二进制输出。提供了足以针对串102的t位提供取代位串的取代单元301的集合。例如,如果标签串102是12位长,则可提供四个取代单元,每个取代单元被配置成对选自标签串的3位进行运算。在图3中示出该示例。在另一个示例中,标签串102是17位长并且提供四个取代单元,这四个取代单元包括两个5位取代单元、一个4位取代单元和3位取代单元。或者,当标签串102是17位长时,可提供一个5位取代单元和三个4位取代单元。可认为优选地在可能的情况下使用更宽的取代单元,因为更宽的单元(例如,5位单元与3位单元)通常表现出改进的非线性。在一些实施方式中,取代单元可能接收过少的位,例如,其中,102是10位长并且提供一个5位取代单元和两个3位取代单元(以给出11位的总位宽度)。在这些情况下,取代单元可被配置成根据某个预定方案用接收到的位来获得缺失位,或者将这些缺失位固定于某个预定位值。来自这样的取代单元的所需输出位可以是来自取代单元的输出位的预定选择的,或者是凭借来自取代单元的输出位根据某个预定方案来选择的。然而,实际上,在面对的是10位标记串,并且在可能的情况下遵循使用更宽单元的普通偏好,可使用两个5位取代单元。假若对给定高速缓存会话保持选择(例如,直到高速缓存被清除),可根据任何可能的选择向取代单元301分配标签位的子集。这是在图4中的步骤402。选择在高速缓存逻辑106处是预定的。例如,标签串102中的位选择可从保持标签串的寄存器被硬连线到每个取代的输入。每个取代单元可被布置成接收例如标签位的连续选择;标签位的预定伪随机取样;根据预定模式进行的标签位选择。在一些示例中,取代单元被布置成使得标签位中的每个被设置成取代单元301中的一个和仅仅一个。可有利地通过将高速缓存逻辑的不同配置建模并且选择最佳执行配置在设计时确定标签位的最佳选择。每个取代单元被配置成根据它保持或有权访问的预定取代,用取代位来替换标签位中的其分配的位选择。这是图4中的步骤403。每个取代单元可包括查找表(lut),lut针对输入位305的可能范围来定义取代。lut可在制造时被硬连线,或者可以是预先计算的合适取代集合可被加载其中的可编程存储器(例如,在高速缓存逻辑的初始化时)。在设计时预先计算映射,以确保可能标签位输入102的集合被很好地分布于高速缓存存储器110的高速缓存线。如上所述,该预先计算可包括对针对取代单元的位分配的最佳集合的评价和/或映射单元302处的位输出306的组合。当可以向任务分配大量处理功率和时间时在设计时执行预先计算;在取代单元的查找表和向取代单元分配标签位中实施预先计算的结果。然后,取代单元可针对每个标签位输入执行简单位取代,而不用取代单元执行任何实质性处理。该方法允许高速缓存逻辑以非常低的等待时间进行操作,同时表现出在设计时识别的最佳高速缓存线分布特性。换句话讲,位取代可被非常快速地执行并且不需要执行任何实质性处理;因此取代单元301没有在高速缓存逻辑的关键路径中引入显著延迟。取代功能单元的一个目的是使线性最小化。例如,这里我们可以通过二进制运算符o将取代单元定义为线性的,成为以下的关系:输入ai,aj其中,c是给定常数并且ak是标签位输入。在一些示例中,可以通过校验对于输入或输出位的大量子集而言条件是否成立来考虑“部分”线性。该运算符通常被假定是逐位xor,但可替代地是诸如加法(模数2s)的另一个运算符。通过提供被布置成均接收选自标签位中的有限数量的输入位的多个取代单元,允许进行对全部输入位的预先计算、对输入位进行至少统计取样、对输入位的每个可能组合进行可能取代。对于3、4和5位取代而言,在当前多核服务器上进行这种预先计算是可行的(用3位二进制输出306取代3位二进制输入305)。更大宽度的位取代有可能可在超级计算机上进行或者通过采用云资源进行。然而,所需的处理量以取代空间的位宽度非常快速地增大。对于给定位宽度n,用2n!给出在所有可能输入位上进行的可能取代的次数。对于n=3,这等于40,320,对于n=4,这是20,922,789,888,000。对于n=5,这是(大致)2.6313×1035,而26!是1089的阶数,1089对于目前来说是太大的数空间以至于不能进行穷尽地处理。此外,随着取代单元的宽度增大,实现取代单元所需的逻辑增大(在典型实现方式中,对于每个额外的输入/输出位,逻辑成本会增加大约4倍)。在一些示例中,在设计时,输入到输出映射中的一个可被认为通过根据本文中描述的方案而选择的取代单元的其它输入的映射而“固定”。例如,输入“0”可以是到特定输出(同样,有可能“0”)的固定映射,这样减少将其余位的可能映射的搜索空间减小为仅仅(2n-1)!。可通过(如已经描述地)将串分成比如3、4或5位的可管理数据块(chunk)并且将它们分配给相应宽度为3、4或5位的取代单元,在高速缓存逻辑处处理任何长度的标签位串102。可行的是,针对宽度高达大约5或6位的单元计算取代的最佳或几乎最佳集合。窄达3位的取代单元就在可能3位输入的范围内提供输出的甚至伪随机分布而言供应适当性能。通常,取代单元越宽,分布质量可能越好,尽管必须针对以下进行平衡:a)随着位数增大,使预处理良好取代集合的难度快速增大;和b)增加了用硬件和/或软件实现这种取代单元的成本。对于下述的示例,我们将bn定义为所有n位二进制串的集合:所以|bn|=2n。从n位到m位的取代snm是函数:snm:bn→bm对于位串b(b∈bn),我们将b[i](1≤i≤n)定义为串b的“第i”位,即,b=b[n]...b[1],并且将二进制运算符{0,1}×{0,1}→{0,1}定义为“异或”(xor)。计算在取代单元中将n个输入位映射到的m个输出的取代的一个好集合{snm1…snmk}的一种方法的目的是满足以下三个条件中的一个或更多个:i.可能的2m个二进制输出中的每个经常大致地相等生成并且经常优选地精确相等生成。优选地选择满射(surjective)取代,并且在n=m的情况下,表明它们还应该优选地是双射的(bijective);ii.如果n个输入位中的任一个改变,则每个输出位的改变机会是大致50%;iii.二进制输入和对应的二进制输出之间的“相关性”在可能二进制输入的整个集合上被最小化。有许多计算满足以上条件的取代的可能方式。经常可假定,将经常同等地使用取代单元的可能二进制输入中的每个。对于n=m的情况,如果取代在输入二进制串和输出二进制串之间有一对一的对应关系(即,双射),则对于给定集合的可能二进制输出中的每个将因此经常同等地生成。可经常假定满足第一条件。第二条件可不仅被用作用于确定给定取代的质量的度量,而且被用作用于生成可能良好质量的候选取代的直观推断的基础。在给定当前候选(对于n=m的情况,在第一次迭代比如身份取代时可被初始化)的情况下,可如下地生成新候选:当前候选被复制到新候选s'nm。现在考虑将该候选取代表示为具有2n个条目的表格,其中,索引j的条目包含snm(bj),即,位串bj被映射到的m位串。现在,如下地“打乱”候选取代阵列:对于每个位的位置k(1≤k≤n),考虑2n-1对位串中的每个,使得仅仅在位置k(即,)处有所不同。与串对应的表格中的条目被以概率rswap∈(0,1)“随机地”交换。总之,因此使随机选项在表格上是n.2n-1倍,以便生成新候选。然后,可分析该新候选的质量。如果初始母候选是身份取代,则可将rswap选定为1/2,即,每个交换应该具有50%的出现机会。可以在后续迭代时使rswap值逐渐减小,每次迭代都生成新候选。可使用这种方法来生成满足以上条件(ii)的位的可能集合。然后,以下述方式来测试那些可能的集合。另选地,可以检查为了满足条件(ii)而生成的取代集合,以确定它们如何接近地满足条件(iii),其中,只有满足条件(iii)的那些集合被认为是在取代单元处使用的良好取代集合。在一些实施方式中,可以不尝试满足条件(iii)。评价(iii)的手段如下。将取代、j个输入位的选择和所选择的输出位映射到标量值(代表与“理想”结果的绝对差)的偏离函数dj的集合被定义为:等等用于可能偏离函数的集合。应该理解,可定义其它类型的偏离函数。使用偏离函数可定义诸如以下的度量:和和等等,其中,mj确定针对j个输入位与所有输出位的组合的最差情况分数和整体分数tj。这里阐述的度量仅为示例。应该理解,可基于偏离函数来定义其它度量。为了寻求满足第三条件的取代,针对非常小的n的方法是尝试所有2n!个取代(或者在一个映射被固定的以上提到的情况下,(2n-1)!),或者对于较大的n(可能取代的子集合),评价每个的分数。例如,可计算使用mi个度量函数中的全部(或子集合)的分数,并且可选择使分数最低的那些取代。倘若不分胜负,还可以使用ti个度量。另选地,仅仅可采用ti个度量。本质上,应用以上度量可被认为等同于测量输入位和每个输出位的线性组合之间的相关性以及尝试选择使相关性最小的取代。在一些示例中,可使用方差的度量以对二进制输出的每个集合评分。方差的大小接近0的那些集合(例如,小于预定绝对方差或具有最低大小方差的集合或那些集合)可被认为满足以上的条件(iii)。可想起通过以下给出两个变量的方差cov(x,y):出于进行该讨论的目的,在给定q对值的集合的情况下,方差可被表示为:例如,在给定取代snm的情况下,为了用输出位o来计算输入位i的方差,将使:在大部分实际使用的情况下,将预期输出位值经常等同地出现,所以这将简化为:这产生范围在[-1/4,1/4]内的结果。结果越接近零,值的相关性越小。通常,将存在具有相同方差的取代的多个可能集合,可从这些集合中随机拾取集合用作取代单元处的取代的集合。可通过使用其它分数和/或根据在其它取代单元处使用哪些取代集合来进一步精选可能取代集合的群组(可以有利的是,针对具有相同位宽度的高速缓存逻辑的不同取代单元而使用不同的取代集合)。目的是使取代单元的二进制输入和输出之间的相关性最小的以上条件(iii)可被总体表示为以下要求:其中,ii是输入位的集合并且oj是输出位的集合。上述用于评价条件(iii)的示例是使得能够满足或至少大体实现该相关性条件的示例。如果在单元处使用的取代集合被选择以另外使输入和/输出位的线性组合之间的相关性最小,则这样可进一步提高取代单元的性能。换句话讲,即:correlation(li^ik,oj)≈0例如,还可根据输入和/输出位的线性组合之间的相关性的度量,对二进制输出的每个集合进行评分。可通过计算输入位和输出位的线性组合的集合之间的方差来形成相关性的这样的度量。另外或另选地,可按增加的处理需求的成本采用输入和/或输出位的更高阶组合。现在将描述如何针对3位取代单元在设计时确定取代的好集合的示例。现实是针对3位宽的取代单元来计算可能取代的所有可能集合。以下示出取代的这样一个集合:输入输出“000”=>“100”;“001”=>“110”“010”=>“111”“011”=>“010”“100”=>“101”“101”=>“000”“110”=>“001”“111”=>“011”可通过保持输入列表固定并且将输出中的每个旋转一个位置但保持输出次序来实现不同取代集合。同等地,将通过改变二进制输出串的次序来实现不同的取代集合。因此,应该理解,对于输入位的给定集合,存在大量可能的输出位的可能集合。可针对用于二进制输入的给定集合的取代的每个可能集合,沿着上述的线在设计时计算分数,这些分数用于选择取代的一个或更多个“好”集合。可随机地选择好集合中的一个,以用于高速缓存逻辑100中的取代单元310的给定实现。对于具有较大位宽度(例如,5位)的取代集合,或者在设计时可用处理资源有限的情况下,可采用统计取样方法,而不用穷尽地评价二进制输出的每个可能集合。可按多种不同方式来实现此取样。现在将描述一种可能的方法。在一些示例中,可分两阶段来识别取代的好集合。在第一阶段,可评价取代集合的随机选择,以在一个或更多个好取代集合处识别初始猜测。可通过对每个取代集合进行评分—例如通过计算用该集合表示的二进制输出和二进制输入的集合之间的方差的度量来执行此评价,在该情况下,具有相对低分数的那些取代集合代表最有希望的候选。然后,在第二阶段中,可使用代表好取代集合的最有希望的候选的取代集合中的一个或更多个。在第二阶段,可采用迭代处理来识别对初始猜测的改进。例如,可针对在第一阶段中选择的取代集合进行一个或更多个改变(诸如,将集合中的两个或更多个二进制输出交换,使得将这两个或更多个二进制输入映射到不同的二进制输出)。以上针对条件(iii)描述了这种迭代处理的示例。然后,可评价修改后的取代集合的分数,以建立改变是否已经改进了取代集合(例如,修改后的取代集合的方差分数是否低于原始未修改的取代集合)。如果该改变改进了取代集合,则保持该改变并且可测试对取代集合的新修改;否则,拒绝该改变并且可测试对取代集合的新修改。该迭代处理允许识别好的取代集合,这些取代集合满足以上三个条件,但相比于穷尽地处理所有可能取代集合以识别好集合而言,总体处理成本更低。对以上两阶段方法的许多变形形式是可能的。在一些示例中,可省略第一阶段并且对可能取代集合的随机选择直接执行第二阶段。图3的哈希引擎106的取代单元301可被配置成使用按照以上示例预先计算的好取代集合。这样确保了每个取代单元按照以上在点(i)至(iii)中描述的所期望的好哈希的特性来生成二进制输出306。具有相同宽度的取代单元可使用相同的取代集合,但优选地这些单元使用不同的取代集合。不同的取代单元可使用源自相同基础集合但相对于彼此旋转的取代集合。在映射单元302处组合来自取代单元的二进制输出306,以形成一个群组或更多个群组的s位303。这是图4中的步骤404。这可例如通过将二进制输出306的相邻位简单分组成多群组的s位以任何方式来进行,虽然可以有利的是在设计时将二进制输出的不同组合的效果建模,以将输出位306的最佳组合识别成s位群组303。位的组合是固定的,使得当高速缓存逻辑正在运行时,二进制输出306的相同位有助于从一个高速缓存地址到下一个的s位群组303的相同位。映射单元可包括从来自取代单元的二进制输出306到向位减少逻辑307提供输入的s位群组303的位的硬连线。在一些示例中,输出位306的总数将不均匀划分成s。在这些情况下,映射单元可被配置成生成另外的位,使得其输出群组303均包括s个位。在其它示例中,映射单元可被配置成生成一个或更多个位,以确保群组303中的每个具有s个位。映射单元可被配置成根据某个预定方案用接收到的位来获得另外的位。例如,在给定m个输入位(其中,m=js+k,k<s)的情况下,那么映射单元可被配置成使用j+1个输入来生成k个输出位并且仅仅使用j个输入来生成其余位。在其它示例中,映射单元可被配置成用诸如0的某个预定位值来填充原本会具有不到s个位的群组303。以这种方式,映射单元可向位减少逻辑307提供整数个完整的s位群组。例如,如果四个取代单元301中的每个是提供3位输出306的3位单元并且s=5,则需要三个s位的群组303。在s位群组的总共15位中,取代单元只提供12位。因此,s位群组中的三位可以是预定的:这可以是按照任何方式:例如,每个s位群组中的一位可被固定为0或1,或者最后一个s位群组中的三位可以被固定,等等。然而,优选地,取代单元被配置成提供足够数量的位,映射单元可用这些位来创建整数个s位群组。这利用了在取代单元处使用的取代集合的好哈希质量,而非仅仅提供固定位来填充在映射单元处接收的用于生成s位群组303的位的数量中的任何短缺。位减少逻辑307可被设置成将来自映射单元302的s位群组303组合并且向输出逻辑304提供s位二进制串308。位减少逻辑307可按多种方式进行操作。例如,位减少逻辑可被配置成(例如,随机地或根据预定选择来)选择s位群组303中的n个位并且对它们一起进行异或,以确定一位,然后将此重复s次,直到群组30中的n×s个位已经减少成s位二进制串308。在另一个示例中,可使用某个预定取代将n×s个位变换成s个位。在其它示例中,可按多种其它方式通过位减少逻辑而减少至s个位。输出逻辑304被配置成通过可逆逐位运算将来自输入地址101的s位输入103与来自位减少逻辑的s位二进制串308进行组合,以形成s位输出116。这是图4的步骤405。例如,可通过逐位异或运算来组合s位二进制串308和s位输入103:其中,sout是输出116,sin是输入103,并且sred是s位二进制串308。s位输出116可以在高速缓存逻辑100(在此处支持哈希引擎106)处被用作高速缓存线地址,如图1中被示出为图4的步骤406。这是哈希引擎作为整体重要的性能,使得其输出的高速缓存线地址116以避免诸如病态接入情况的差高速缓存性能的方式,很好地分布于高速缓存线。选择哈希引擎的每个取代单元使用好哈希使得能够在哈希引擎处整体具有良好性能。类似地,好哈希引擎满足以上设置的三个条件。可以有利的是,在设计时将哈希引擎建模,以确定以下中的一个或更多个:a)标签输入102中的位的最佳分配;b)在具有相同位宽度的取代单元处的取代集合的最佳组合;c)将来自取代单元的二进制输出306组合成群组303的最佳组合—这可包括确定映射单元处的固定二进制值的最佳使用,以确保每个群组30包括s个位;d)在组合逻辑309处将s位输入303和103最佳组合—例如,将要执行的逐位运算的选择。可按任何合适方式(包括根据这里描述的原理)来确定最佳配置。为了预先计算以上(a)至(d)中的一个或更多个的改变对哈希引擎的整体性能的效果,可通过运行高速缓存逻辑的模型在设计时估计哈希引擎的性能。可使用此模型,通过以下步骤来模拟哈希引擎的性能:对测试输入地址101操作模型,对以上(a)至(d)中的一个或更多个进行改变,并且选择哈希引擎的最佳执行配置,以便在高速缓存逻辑中实现。例如,对于(a),可通过进行以下步骤来确定位的最佳分配:将位初始分配给每个取代单元,对分配迭代地引入修改并且测试该修改对高速缓存逻辑性能的效果,以识别是否应保持该修改。以这种方式可接近对取代单元的最佳位分配,而不必在哈希引擎的取代单元处针对取代表中的所有可能组合穷尽地评价取代单元的所有可能位分配(通常将是要执行的不可行的大量处理)。如以上提到,对于使用相同位宽度的哈希引擎的取代单元,可以有利的是,使用不同的取代集合,使得取代单元针对二进制输入的给定集合执行不同取代。这样可有助于避免高速缓存逻辑中的混叠问题,在一些配置中,这些问题可以是由于源自组合逻辑处的取代单元的二进制输出的后续位组合而导致的(例如,在不同取代单元处重新使用取代集合的情况下,当事实上期望取代单元处使用的取代集合相对于彼此是非线性时,在组合逻辑处使用xor可以在来自映射单元的s位群组的组合中插入线性符号)。例如,独立获得的取代集合可用于具有相同位宽度的取代单元处,或者可用公共取代集合获得在每个这样的取代单元处使用的不同取代集合。在用初始取代集合获得不同取代集合而不影响其“良好”特性的一种可能方式是旋转在集合处限定的位取代的序列。例如,在以上设置的3位取代的集合中,不同取代单元可被配置成使用相同的3位取代,但每个取代旋转1,使得“000”=>“100”、“001”=>“111”、“010”=>“010”等。为了避免混叠问题,可以有益的是,在位宽度意味着取代单元的输出将均匀成为s位群组的情况下,在相同宽度的不同取代单位处使用公共取代集合的旋转:nmods=0其中,n是所关注的取代单元的位宽度。这样避免了如果将二进制输出306一起分组到连续块中以形成s位群组303则在位减少逻辑处生成相同取代集合的线性组合(由于这样将导致遍及一个以上s位群组的相同取代集合而生成的输出)。另选地,假定不同的n位取代单元是线性独立的,不同的n位取代单元可替代地使用上述处理来获得,并且替代旋转方案进行使用。在如本文中描述配置的高速缓存逻辑100中,因为在设计时间已经优化了在哈希引擎处执行的位取代和组合,所以在高速缓存逻辑处生成的高速缓存线地址将很好地分布于高速缓存存储器110。然而,这是以最小运行时间处理成本实现的,因为至少针对n的小值执行n位取代就处理能力而言是快速且成本低的,并且可通过使用硬连线(没有处理成本)和诸如xor的快速、低复杂度硬件来实现在映射单元和组合逻辑处执行的位组合。设想到提供数量比t标签位所需更大的取代单元的更复杂配置。在这些实施方式中,可以使用取代单元中的没有用于取代二进制输入305的位的位以根据某个预定方案在取代单元之间进行选择。这可有助于以额外的极小运行时间处理成本进一步提高高速缓存逻辑的性能。在一些实施方式中,来自取代单元的二进制输出的位宽度可不同于其二进制输入的位宽度—这可以是例如可用的,以提供足以创建整数个s位群组的位。虽然在图3中被示出为单独单元,但取代单元、映射单元和组合逻辑可被集成到单个逻辑单元中,该单个逻辑单元被配置成执行所定义的取代,从被取代的位来获得s位二进制串,并且将这些s位串与来自高速缓存地址输入的s位输入组合。通过诸如逐位xor运算的可逆运算,在组合逻辑309处将哈希引擎106所生成的二进制串303与输入串101中设置的位序列103组合。在其它示例中,该可逆运算可以是诸如加或减模数2s的另一种可逆运算。xor运算用逻辑实现时是直接且快速的。此外,通过将二进制串303(根据输入存储器地址101的标签位102来生成)与输入存储器地址101的集合位103组合,并且通过适宜地选择标签和集合位,可确保对顺序存储器地址的常见访问没有被存储在相同高速缓存线处。按照本文中描述的示例配置的哈希引擎有效地实施了简单哈希函数,该简单哈希函数快得足以用在关键路径中,并没有显著增加高速缓存存储器的复杂度或功耗。哈希引擎106还确保具有输入存储器地址的规则模式的数据的序列分布于高速缓存存储器110。通常,高速缓存存储系统将具有一个以上高速缓存存储体。在图1中,存在两个高速缓存存储体111和112。高速缓存条目可被存储体选择单元109分布于这些存储器存储体之间。在一些实施方式中,存储体选择单元109是逐位运算符,该逐位运算符接收高速缓存行116的最低有效位(121)并且将该位于输入存储器地址101中的“存储体”位104(优选地,与集合位103相邻但是不及集合位103有效的位)组合。在图1中示出的示例中是xor的逐位运算符109在其输出提供存储体指示符122,以将输入数据114导向这两个高速缓存存储体111或112中的一个的高速缓存行116。以这种方式,高速缓存条目被分布于高速缓存存储体之间并且可实现多存储体高速缓存的优点。如果存在不止两个高速缓存存储体,则来自高速缓存地址116的最低有效位的数量和存储体位的(相等)数量酌情增加(例如,对于四个存储体,将需要两个存储体位)。高速缓存逻辑100还可包括存储体加扰单元108,存储体加扰单元108被配置成向存储体选择单元109提供输入,以取代高速缓存行116中的位。高速缓存行116中的最低有效位可用作存储体加扰单元108的存储位序列(例如,伪随机位序列)的位寄存器中的查找,对于该位序列,查找针对所有可能值将返回可能值中的任一个的概率大体相同。图1中示出的示例中的存储体加扰单元109的输出具有1位的宽度,但通常将匹配存储体位104中的位的数量b,其中,存在将存储体加扰单元的输出与存储体位组合的对应数量的xor109。示例的存储体加扰单元108在图2中更详细示出并且包括用于二进制序列的位寄存器201和用于从二进制序列中选择一个或更多个位的位选择单元202。位寄存器201和位选择单元202可以由适于存储所需长度的二进制串的逻辑和存储器、可以是例如单个逻辑单元的位寄存器和选择单元、或更大逻辑单元的部分的任何合适组合来提供位寄存器201和位选择单元202。在图2中示出的示例中,存储体加扰单元被配置成在两个存储体之间进行选择。在一般情况下,存在b个存储体,位寄存器201可以是b×2n个位寄存器。存储体加扰单元108可存储固定的二进制序列,或者可根据本领域中已知的任何合适技术来生成用作二进制序列的其自身伪随机位序列。然而,优选地,能通过诸如支持高速缓存逻辑100的主机计算机的软件或硬件功能的外部代理对位寄存器210进行编程。这样避免增大高速缓存逻辑的复杂度,并且影响了在数据处理系统的实现高速缓存逻辑以形成二进制串的其它部分处通常可用的处理能力。通常,将在系统重置或系统通电时由系统驱动器将位寄存器201初始化。可随机生成存储在位寄存器201处的二进制串。然而,优选地,相等数量的所有可能值被插入二进制串的位置中,然后所述值在二进制串内被打乱,使得对于所有可能值,来自二进制串的查找将返回任何可能值的概率基本上相同。然而,生成二进制串,优选地具有的性质是,如果在二进制串内的任何点处从二进制串读取了b位的群组(例如,在以上详细描述的示例中,b=1),则读取可能2b中的任一个的可能性基本上相同。例如,如果b=1,则优选地二进制串的位中的大约一半是零,使得存储体加扰单元大致可能同等地用于选择高速缓存存储器的每个存储体。这可通过以下步骤来实现:随机生成二进制串,然后丢弃所生成的不满足该条件的二进制串,直到生成满足该条件的二进制串。在一个示例中,通过只将具有40%到60%之间的零的二进制串存储在位寄存器处,或者在另一个示例中,通过只将具有45%到55%之间的零的二进制串存储在位寄存器处,来实施该条件。另选地,对于b>1的示例,格雷码序列可用于二进制串,使得二进制串通过所有可能值循环。形成二进制串的方式可取决于访问数据的次序。存储体加扰单元108可被配置成将高速缓存行116的一个或更多个最低有效位121用作在位寄存器201处存储的二进制串中的查找。该布置意味着,高速缓存地址的位没有用在存储体选择单元109中,而是提供了由存储体加扰单元108从(例如,伪随机)二进制串中选择位的手段。选择单元202可以按适于存储体加扰单元中采用的位寄存器的架构的方式将最低有效位121用作位寄存器210中的查找。例如,可使用最低有效位来识别位寄存器中的位位置,或者作为被布置成从位寄存器中选择一个或更多个位的算法的种子。在替代示例中,存储体加扰单元108可包括一个或更多个取代单元,根据本文中描述的原理来配置这些取代单元,以将s位输出121从哈希引擎106映射到b位输出。在优选实施方式中,位寄存器的长度是2m位,其中,m是高速缓存地址116的最低有效位121的数量。这样允许最低有效位121被用作识别寄存器201中存储的二进制串中的位位置的地址。例如,如果m=5,则位寄存器处的二进制串是32位长,其中,给定高速缓存地址的最低有效位121的5位串识别二进制串的特定位。按从位寄存器201中的特定位开始的序列中选择存储体选择单元109所需的位的数量(例如,对于具有两个高速缓存存储体的高速缓存存储器,仅仅选择所识别的位;对于四个高速缓存存储体,选择两位)。选择单元202从位寄存器201中选择的一个或更多个位被提供到存储体选择单元109用于按上述方式与一个或更多个存储体位104组合。存储体选择单元109(优选地是xor运算符)生成存储体指示符122,以便识别数据和标签位102将被存储在其处的高速缓存存储体。使用存储体加扰单元108用于通过高速缓存系统将访问分布于存储体。由于存储在寄存器201中的二进制序列可被选择为具有伪随机特性(同时优选地确保位中的大约50%是零),因此存储体加扰单元108通常提供比将高速缓存行指示符121的位与存储体位104混合更好的性能。这是因为,由存储体加扰单元进行的存储体选择必须脱离存储器地址101中存在的位的特定序列,因此不太可能导致高速缓存存储体之间的病态访问模式。可通过将位寄存器201中的所有位设置成0或者将所有位设置成1来有效地停用存储体加扰单元108。注意的是,使用xor作为存储体选择单元109确保了,在数据的突发传输的情况下,成对的对准的2w个字节读数将仍然被从替代存储体读取/写入替代存储体,因此提供相关性能益处。也就是说,对于具有相同标签和集合位但具有不同存储体位的两个存储器相邻地址,从组合逻辑309输出的高速缓存行指示116将是相同的,但从存储体选择单元109输出的高速缓存存储体指示符将是不同的。对于其它读/写模式(例如,如果集合位增加1,则标签和/或集合位在两个存储器地址之间改变),高速缓存访问将很好地分布于存储体111和112之中,从而避免了病态访问情况。要注意,从如果重复高速缓存映射则给定存储器地址101将映射到相同高速缓存地址的方面,标签位和存储体加扰的散列(hashing)是确定性处理。通常,只有输入存储器地址10的部分被用作标签和集合位,其中,最低有效位没有被高速缓存逻辑使用并且用图1中的字位105来表示。为了允许从高速缓存存储器重新创建输入存储器地址,并非需要将其所有位存储在高速缓存中。这是因为,在从高速缓存读取条目时:a)因为从高速缓存器中的哪里读取条目是已知的,所以可获得存储体指示符位122和高速缓存指示符位116的值。高速缓存行指示符的最低有效位可通过存储体加扰单元108(或等效单元)被传送,并且结果可被用作xor运算的输入,该xor运算将存储体指示符位作为另一个输入,由此找寻存储器地址的存储体位。b)因为在组合逻辑309处执行的运算是可逆的,所以可容易地用高速缓存行指示符位116计算集合位。标签被存储在高速缓存中,并且可例如通过哈希引擎(或等效单元)被再次推送,以揭示必须与集合位组合以形成高速缓存行地址的位。由于组合逻辑的输出是已知的(高速缓存行指示符位)并且可用从高速缓存获取的标签位来确定组合逻辑的输入中的一个,因此可确定组合逻辑309的其它输入(即,集合位103),这是因为在组合逻辑309处执行的运算是可逆的。换句话讲,为了确定s位输入,标签位可按与上述相同的方式通过取代单元301和映射单元302被传送。然后,通过使用输入303和(从高速缓存行识别的)s位输出116,组合逻辑309可使用将如上所述用于确定输出位116的可逆运算翻转的运算来确定s位输入103。因此,可通过只将存储器地址101的标签位102连同长度为2w的数据本身一起存储,将二进制输入存储器地址的信息内容存储在高速缓存存储器110中。通过高速缓存线中的数据被存储在其处的字节位置来确定字位。虽然实施方式已经引用了存储在存储器中的高速缓存数据,但高速缓存可用于其它运算。例如,在给定成本高但频繁计算的函数f:x→y的情况下,它可用于存储比如近期计算的结果。在此情形下,x的值将取代高速缓存查找中的地址。按照本发明配置的高速缓存逻辑可包括例如专用硬件逻辑、经合适变成的可重新配置逻辑(例如,fpga)、和/或诸如致使处理器和代码的组合来提供本文中描述的本发明的功能的处理器和代码的组合(诸如,asic或fpga)中的一个或更多个。在优选实施方式中高速缓存逻辑是硬连线逻辑单元。所声明的高速缓存逻辑(例如,哈希引擎、组合逻辑、存储体选择单元和存储体加扰单元)的功能不需要被设置为单独的单元并且表示可(a)按任何方式组合和(b)本身包括一个或更多个逻辑单元的功能。本文中使用的术语“随机”是指真随机和伪随机的数字、处理、选择、生成等。图1至图3的高速缓存逻辑、存储体加扰单元和哈希引擎被示出为包括多个功能块。这只是示意性的,并不旨在限定这些实体的不同逻辑元件之间的严格划分。可按任何合适方式来设置每个功能块。要理解,由高速缓存逻辑、存储体加扰单元或哈希引擎形成的本文中描述的中间值不需要在任何点物理产生,并且可仅仅表示传统上描述高速缓存逻辑、存储体加扰单元或哈希引擎在其输入和输出之间执行的处理。通常,以上描述的功能、方法、技术或组件中的任一个可用软件、固件、硬件(例如,固定逻辑电路)或其任何组合来实现。术语“模块”、“功能”、“组件”、“元件”、“单元”、“块”和“逻辑”可在本文中用于总体表示软件、固件、硬件或其任何组合。在软件实现的情况下,模块、功能、组件、元件、单元、块或逻辑代表当在处理器上执行时执行指定任务的程序代码。本文中描述的算法和方法可由一个或更多个处理器来执行,处理器执行致使处理器执行算法/方法的代码。计算机可读存储介质的示例包括随机存取存储器(ram)、只读存储器(rom)、光盘、闪存存储器、硬盘存储器和可使用磁学、光学和其它技术来存储指令或其它数据并且可由机器进行访问的其它存储装置。本文中使用的术语计算机程序代码和计算机可读指令是指用于处理器的任何类型的可执行代码,包括用机器语言、翻译语言或脚本语言表示的代码。可执行代码包括二进制代码、机器代码、字节码、定义集成电路的代码(诸如,硬件描述语言或网表)和用诸如c、java或opencl的编程语言代码表示的代码。可执行代码可以是例如任何类型的软件、固件、脚本、模块或库,该软件、固件、脚本、模块或库在被合适执行、处理、解释、编译、在虚拟机或其它软件环境下执行时,致使支持可执行代码的计算机系统的处理器执行代码所指定的任务。处理器、计算机或计算机系统可以是任何类型的装置、机器或专用电路、或其集合或部分,具有使得它可执行指令的处理能力。处理器可以是诸如cpu、gpu、片上系统、状态机、媒体处理器、专用集成电路(asic)、可编程逻辑阵列、现场可编程门真累(fpga)等的任何类型的通用或专用处理器。计算机或计算机系统可包括一个或更多个处理器。定义集成电路的代码可按任何方式来定义集成电路,包括将集成电路定义为网表、用于配置可编程芯片的代码和定义任一级的集成电路的硬件描述语言(包括计算机传输级(rtl)代码),诸如verilog或vhdl的高级电路表示、和诸如oasis和gdsii的低级电路表示。当在配置用于生成集成电路表示的合适配备的计算机系统处处理时,定义集成电路的代码可致使计算机系统生成代码所表示的集成电路的表示。这些计算机系统可致使通过例如提供输出来生成集成电路的表示,该输出用于控制被配置成构造集成电路或构造集成电路的中间表示(诸如,光刻掩模)的机器。可在计算机系统处处理在逻辑上定义集成电路(诸如,rtl)的更高级表示,该计算机系统被配置用于在软件环境的背景下生成集成电路的,软件环境包括电路元件的定义和用于组合这些元件以生成由该表示如此定义的集成电路的表示的规则。本领域的技术人员还将认识到,本文中描述的功能、技术或方法中的全部或部分可由专有电路、专用集成电路、可编程逻辑阵列、现场可编程门阵列等来执行。例如,模块、功能、组件、单元或逻辑(或哈希引擎106的组件)可包括电路形式的硬件。此电路可包括可用于制造处理中的晶体管和/或其它硬件元件。例如,这些晶体管和/或其它元件可用于形成实现和/或包含诸如寄存器、触发器或锁存器的存储器、诸如布尔运算的逻辑运算符、诸如加法器、乘法器或移位器的算术运算符和互连的电路或结构。这些元件可被设置为定制电路或标准的单元库、宏或其它抽象级别。这些元件可按特定布置互连。模块、功能、组件、单元或逻辑(例如,哈希引擎106的组件)可包括可被编程为执行功能(一个或多个)的固定功能和电路;可以用固件或软件更新或控制机制来提供此编程。在示例中,硬件逻辑具有实现固定功能操作、状态机或处理的电路。还旨在涵盖诸如hdl(硬件描述语言)软件的“描述”或定义实现上述模块、功能、组件、单元或逻辑(例如,哈希引擎106的组件)的软件,该软件用于设计集成电路,或者构成可编程芯片,以执行所期望功能。也就是说,可提供上面编码有集成电路定义数据集形式的计算机可读程序代码的计算机可读存储介质,程序代码当在集成电路制造系统中处理时,将系统配置成制造如上所述的高速缓存逻辑。ic定义数据集可以是例如用诸如计算机传输级(trl)代码的合适hdl编写的计算机代码形式。图5示出包括布局处理系统504和集成电路生成系统506的集成电路(ic)制造系统502的示例。ic制造系统502被配置成接收ic定义数据集(例如,定义如本文中示例中的任一个描述的高速缓存逻辑),处理ic定义数据集,并且根据ic定义数据集来生成ic(例如,实施如本文中的任一个示例描述的高速缓存逻辑)。ic定义数据集的处理将ic制造系统502配置成制造本文中的任一个示例描述的高速缓存逻辑的集成电路。更具体地,布局处理系统504被配置成接收并且处理ic定义数据集,以确定电路布局。用ic定义数据集来确定电路布局的方法是本领域中已知的,例如可涉及合成rtl代码来确定例如就逻辑组件(例如,nand、nor、and、or、mux和触发器组件)而言的待生成电路的门级表示。可通过确定逻辑组件的位置信息,用电路的门级表示来确定电路布局。这可自动地进行或者在用户参与以优化电路布局来进行。当布局处理系统504已经确定电路布局时,它可向ic生成系统506输出电路布局定义。ic生成系统506根据电路布局定义来生成ic,如本领域中已知的。例如,ic生成系统506可实现用于生成ic的半导体器件制造处理,该制造处理可涉及光刻和化学处理步骤的多步序列,在这些步骤期间,在由半导体材料制成的晶圆上逐渐形成电子电路。电路布局定义可以是掩模的形式,该掩模可用于根据电路定义来生成ic的光刻处理。另选地,提供给ic生成系统506的电路布局定义可以是ic生成系统506可用来形成用于生成ic的合适掩模的计算机可读代码的形式。例如,可由一方将ic制造系统502所执行的不同处理都在一个位置实现。另选地,ic制造系统502可以是分布式系统,使得处理中的一些可在不同位置执行,并且可由不同方执行。例如,(i)合成表示ic定义数据集的rtl代码,以形成待生成电路的门级表示,(ii)基于门级表示来生成电路布局,(iii)按照电路布局来形成掩模,以及(iv)使用掩模来制造集成电路这些级中的一些可在不同位置和/或由不同方来执行。申请人由此孤立地公开了本文中描述的每个个体特征和两个或更多个这些特征的任何组合,达到不管这些特征或特征的组合是否解决了本文中公开的任何问题,使这些特征或组合能够依照本领域技术人员的公知常识整体基于本说明书来执行的程度。依据以上描述,对于本领域的技术人员而言,显而易见,可在本发明的范围内进行各种修改。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1