亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

非線性高速緩存邏輯的制作方法

文檔序號:11276240閱讀:215來源:國知局
本發(fā)明涉及用于生成高速緩存(cache)地址的高速緩存邏輯、高速緩存存儲系統和用于生成高速緩存地址的方法。
背景技術
::高速緩存存儲器被廣泛用作存儲器層次的部分,以通過減少與主存儲器訪問關聯的等待時間和/或因這些訪問消耗的帶寬來提高數據處理系統的性能。如hennessy和patterson的“computerarchitecture.aquantitativeapproach.(fifthedition)”(計算機系統結構:量化研究方法(第五版))(章節(jié)2.1)中描述的,局部性(時間和空間二者)的原理意指將之前訪問的(例如,最近訪問的)數據的某個子集存儲在相對小的高速緩存存儲器中,能夠以比(存儲原始數據的)主存儲器少的等待時間和/或高的帶寬來訪問該高速緩存存儲器,允許實現整個存儲系統的更快性能的成本效益的手段。為了確??扇菀椎貜母咚倬彺娲鎯ζ鳙@取高速緩存數據,必須根據所定義的方案來組織高速緩存的數據。遵循h(huán)ennessy和patterson的命名,將“線”(aka“塊”)定義成存儲器在對準邊界上的一個或更多個字中的預定數量。hennessy和patterson指出,最普及方案是“集合相聯”,由此“集合”是高速緩存中的物理存儲線的群組。存儲器中的線首先被映射在集合上,然后可將該線布置在該集合的線中的任一個中。另外,在hennessy和patterson中,用平凡(2的冪)映射來選擇該集合。chosen_set=(線地址)mod(高速緩存中的集合的數量)。當集合中存在n條線時,高速緩存方案被稱為“n路集合相聯”。邏輯極端具有特定名稱:其中n=1的情況被稱為“直接映射”高速緩存。這使得實現成本最低,但是性能相對低。(將扼要地討論確定性能的某些因素)。存在包含高速緩存的所有存儲線的單個集合并因此任何存儲器線可布置在高速緩存中的任何地方的其它極端被稱為“全相聯高速緩存”。這樣使得實現的性能最佳,但是成本通常非常高。雖然某些系統確實使用直接映射的高速緩存,但更典型地,n被選擇在比如[2,16]的范圍內,從而提供了實現的性能和成本之間的平衡。至于高速緩存的性能,影響性能的一種因素是“缺失率”,缺失率平凡地是針對高速緩存中并不存在的數據訪問高速緩存的次數除以訪問的總數。hennessy和patterson將“缺失”分為三類:強制、容量和沖突。強制缺失是不可避免的并且對應于任何線的首次訪問。容量缺失通常取決于高速緩存的物理大小,而沖突缺失是由于集合內的替換而導致的并且取決于集合的相聯,并且在某種意義上,取決于正訪問的數據地址。通常,用于高速緩存的數據被保持在用諸如存儲器地址或計算系統中的硬件資源地址的地址標識的資源處。對這些資源地址的訪問可遵循某些固定模式(諸如,對順序存儲器塊的訪問或對2d數據結構的交叉訪問(stridedaccess)),并且因此可小心地確保代表相關(例如,順序或交叉的)資源地址的數據被很好地分布于高速緩存存儲器,以避免病態(tài)訪問情況。只被映射到幾個高速緩存集合的充分長的地址序列是病態(tài)訪問情況的示例,從而導致沖突缺失率高,這是因為反復訪問相同幾個高速緩存集合會導致要進行大量高速緩存線替換。即使強制或容量缺失率可能低,這些差分布特性也嚴重影響高速緩存存儲器的性能。雖然實現較高高速緩存相聯可使沖突缺失減少,但它得到功率和面積成本。應該注意,由于將存儲器塊地址映射到高速緩存集合是“多對一”關系,因此當塊數據常駐在高速緩存中時,必須存儲有時被稱為標簽的附加數據,用于識別塊的原始存儲器位置。顯然期望的是,在標簽中使用盡可能少的位。用hennessy和patterson在以上描述的簡單“選擇集合”映射方案,在給定在高速緩存中存在2s個集合并且存儲器具有數據的2t+s條線的系統的情況下,那么標簽需要t位的數據。在該方案中,因此不必將標簽中的線的全地址存儲在標簽中,這是因為可從高速緩存中的物理位置來獲得s個最低有效位。hennessy和patterson還討論了通過使用多存儲體高速緩存來增大高速緩存帶寬的方法。提出將高速緩存分成2k個存儲體(k在比如[1,3]的范圍內)并且將線地址j指派給存儲體(jmod2k)。hennessy和patterson聲明該簡單映射“工作地很好”,但它可能容易以與之前描述的高沖突缺失率相同的方式遭遇病態(tài)訪問模式。在現有技術中已經提出了用于改進高速緩存內的數據分布并且針對給定大小的高速緩存使高速緩存命中率最大的一些機制。這些機制通常使用復雜哈希函數將偽隨機變量插入到數據在高速緩存地址上的映射。例如,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”(根特大學的電子信息系統系發(fā)表的論文)中描述了這些架構。偏斜相聯架構需要多個高速緩存存儲體,這是因為該機制通過高速緩存地址的存儲體間分散來實現低缺失率。然而,如在vandierendonck論文中觀察到的,通過將偏斜相聯架構與復雜哈希函數組合以在將數據映射到高速緩存中時插入隨機符號來實現高性能。另外,這種復雜哈希函數通常太貴,以致無法在高速緩存存儲系統的關鍵路徑中實現。高速緩存存儲器中的替換策略確定當高速緩存線為滿時要丟棄哪個(些)條目。示例是最近最少使用(lru)替換策略,根據該策略,從高速緩存線中丟棄最近最少使用的條目。偏斜相聯高速緩存的其它限制是可實現的替換策略的受限集合。例如,seznec指出“unfortunately,wehavenotbeenabletofindconciseinformationtoassociatewithacachelinewhichwouldallowasimplehardwareimplementationofalrureplacementpolicyonaskewed-associativecache”(遺憾的是,不能夠找到精簡信息與將允許在偏斜相聯高速緩存上進行l(wèi)ru替換策略的簡單硬件實現的高速緩存線關聯),但他確實提出了“可工作得好的”雙向偽lru方案。在hennessy和patterson中討論了可能替換策略的其它示例。可用將資源地址分布于高速緩存存儲器上的簡單、復雜度低的函數來替換復雜哈希函數。然而,簡單函數一般不提供避免病態(tài)訪問情況的所期望的分布特性。技術實現要素:根據本發(fā)明的第一方面,提供了一種用二進制存儲器地址生成高速緩存地址的高速緩存邏輯,所述二進制存儲器地址包括第一預定長度的第一二進制序列和第二預定長度的第二二進制序列,所述高速緩存邏輯包括:多個取代單元,所述多個取代單元中的每一個被配置成接收所述第一二進制序列的位的相應分配,并且用根據接收到的位的分配而選擇的對應取代位串來替換其分配的位;映射單元,其被配置成組合所述多個取代單元輸出的取代位串,以形成所述第二預定長度的一個或更多個二進制串;以及組合邏輯,其被布置成通過可逆運算將所述一個或更多個二進制串與所述第二二進制序列組合,以形成用作高速緩存存儲器中的高速緩存地址的至少部分的二進制輸出串。所述多個取代單元中的每一個可包括查找表,所述查找表定義所述取代位串和各自對應的二進制輸入,用于所述取代單元的位的相應分配被用作其查找表(lookuptable)中的查找(lookup)。每個取代單元可具有3、4或5的位寬度??梢杂每赡苋〈淮募蟻眍A先計算在各取代單元處存儲的所述取代位串,以使所述取代單元的可能二進制輸入的集合和相應的取代位串之間的相關性最小。可以用所述可能取代位串的集合來預先計算在每個取代單元處存儲的所述取代位串,以進一步使所述取代單元的所述可能二進制輸入的集合和相應的取代位串的線性組合之間的相關性最小。所述多個取代單元可以包括具有相同位寬度的一個以上取代單元,所述一個以上取代單元具有相同的位寬度,所述一個以上取代單元中的每一個具有取代位串的不同集合。在可具有相同位寬度的取代單元處的取代位串的集合共享每個集合中的相同次序的取代位串,通過將所述取代位串相對于所述多個取代單元的可能二進制輸入旋轉,使取代位串的每個集合與其它集合相關。所述多個取代單元中的一個或更多個可接收比其取代位串中的每個中存在的位的數量少的輸入位,所述多個取代單元被配置成將其空輸入的值固定在某個預定位值或者根據某個預定方案將其空輸入解釋為具有位值。所述映射單元可包括物理連接的集合,所述物理連接的集合定義所述多個取代單元的輸出位與所述第二預定長度的所述一個或更多個二進制串的位之間的映射。所述組合邏輯可包括位減少邏輯和輸出邏輯,所述位減少邏輯被配置成將所述一個或更多個二進制串減少為所述第二預定長度的中間二進制串,并且所述輸出邏輯被配置成通過逐位可逆運算將所述中間二進制串與所述第二二進制序列組合以形成所述二進制輸出串。所述二進制輸出串可用于識別高速緩存存儲器存儲體中的高速緩存行。所述第一二進制序列可以是所述二進制存儲器地址的最高有效位的預定序列。所述第二二進制序列可以是所述二進制存儲器地址的較低有效位的預定序列。所述二進制輸入存儲器地址可具有固定長度并且所述第一二進制序列和所述第二二進制序列是所述二進制存儲器地址中的位的相鄰序列。在所述組合邏輯執(zhí)行的可逆運算可包括一個或更多個逐位異或(xor)運算。該高速緩存邏輯還可包括存儲體選擇單元,所述存儲體選擇單元被配置成通過第二逐位運算將從所述二進制輸出串獲得的一個或更多個位與所述二進制存儲器地址的相等數量的位組合,以生成存儲體標識符,所述存儲體標識符用于在具有多個高速緩存存儲體的高速緩存存儲器中識別存儲體。所述存儲體標識符的長度可等于從所述二進制輸出串獲得的位的數量。所述二進制存儲器地址中的一個或更多個位可以是相比于所述第二二進制序列的位的較低有效位。所述二進制存儲器地址中的一個或更多個位可與所述二進制存儲器地址中的所述第二二進制序列相鄰。該高速緩存邏輯還可以包括存儲體加擾單元,所述存儲體加擾單元具有被配置成存儲預定二進制串的位寄存器,所述存儲體加擾單元被配置成通過將所述二進制輸出串中的一個或更多個位的序列用作位寄存器中的查找來對所述二進制輸出串中的一個或更多個位進行運算,以在所述存儲體選擇單元中從所存儲的預定二進制串選擇預定數量的位用作從所述二進制輸出串獲得的一個或更多個位,其中,所述預定二進制串具有如下屬性:所選擇的位的值成為可能值中的任一個具有基本上相同的可能性。所述預定二進制串可以是偽隨機二進制串。所述預定二進制串可以是2m位長,并且所述二進制輸出串中的位的預定序列可以是所述二進制輸出串中的m個最低有效位,所述存儲體加擾單元被配置成使用所述二進制輸出串中的所述m個最低有效位作為預定二進制串中的位地址,從所述位地址讀取所存儲的預定二進制串中的預定數量的位。所述位寄存器可以是可編程的,并且所述存儲體加擾單元可以用于使得偽隨機生成的二進制串能夠被編寫到所述位寄存器中,用作預定二進制串。提供了一種高速緩存存儲系統,該高速緩存存儲系統包括:所述高速緩存邏輯;以及高速緩存存儲器,其具有多個高速緩存存儲體;其中,所述高速緩存存儲系統被配置成至少將第一二進制序列和具有二進制存儲器地址的用于高速緩存的數據存儲在所述存儲體標識符所指示的所述高速緩存存儲體的二進制輸出串所指示的高速緩存行處。每個高速緩存存儲體可具有2s行,其中,s是所述第二二進制序列中的位的數量。根據本發(fā)明的第二方面,提供了一種用二進制存儲器地址生成高速緩存地址的方法,所述二進制存儲器地址包括第一預定長度的第一二進制序列和第二預定長度的第二二進制序列,在高速緩存邏輯處執(zhí)行所述方法,以下步驟:將所述第一二進制序列的位分配給所述高速緩存邏輯的多個取代單元中的每一個;在所述取代單元中的每一個處,使用所述第一二進制序列的分配的位確定對應的取代位串并且用該取代位串來替換所述分配的位;將來自所述多個取代單元的多個取代位串變換成所述第二預定長度的一個或更多個二進制串;以及通過可逆運算將所述一個或更多個二進制串與所述第二二進制序列組合,以形成用作高速緩存存儲器中的高速緩存地址的至少部分的二進制輸出串。使用所述第一二進制序列的分配的位確定對應的取代位串的步驟可以包括:將所述第一二進制序列中的分配的位用作所述取代單元的查找表中的查找。所述組合的步驟可以包括:將所述第二預定長度的所述一個或更多個二進制串減少為所述第二預定長度的中間二進制串,并且通過逐位可逆運算將所述中間二進制串與所述第二二進制序列組合,以形成二進制輸出串。所述方法還可包括以下步驟:通過第二逐位運算將從所述二進制輸出串獲得的一個或更多個位與所述二進制存儲器地址的相等數量的位組合,以生成存儲體標識符,所述存儲體標識符用于在具有多個高速緩存存儲體的高速緩存存儲器中識別存儲體。所述高速緩存可在集成電路上以硬件實現??商峁┰诩呻娐分圃煜到y制造高速緩存邏輯的方法??商峁┮环N集成電路定義數據集,所述集成電路定義數據集當在集成電路制造系統中被處理時,將所述系統配置成制造所述高速緩存邏輯。可提供一種非瞬時計算機可讀存儲介質,所述非瞬時計算機可讀存儲介質上面存儲有集成電路的計算機可讀描述,所述計算機可讀描述當在集成電路制造系統中被處理時,將所述集成電路制造系統配置成制造所述高速緩存邏輯??商峁┮环N集成電路制造系統,該集成電路制造系統包括:非瞬時計算機可讀存儲介質,其上存儲有描述高速緩存邏輯的計算機可讀集成電路描述;布局處理系統,其被配置成處理所述集成電路描述,以生成實施所述高速緩存邏輯的集成電路的電路布局描述;以及集成電路生成系統,其被配置成根據所述電路布局描述來制造所述高速緩存邏輯??商峁┮环N用于執(zhí)行根據任何之前權利要求所述的方法的計算機程序代碼。可提供一種非瞬時計算機可讀存儲介質,所述非瞬時計算機可讀存儲介質上面存儲有計算機可讀指令,所述計算機可讀指令當在計算機系統處執(zhí)行時,致使所述計算機系統執(zhí)行根據任何之前權利要求所述的方法。附圖說明現在,將參照附圖以舉例的方式來描述本發(fā)明,在附圖中:圖1是按照本文中描述的原理配置的并且具有兩個存儲體的高速緩存存儲系統的示意圖。圖2是存儲體加擾單元的可能實現方式的示意圖。圖3是高速緩存存儲系統的哈希引擎的示意圖。圖4是例示生成高速緩存集合地址的方法的流程圖。圖5是集成電路制造系統的示意圖。具體實施方式以下描述是以舉例方式提出的,用于使本領域的技術人員能夠形成并使用本發(fā)明。本發(fā)明不限于本文中描述的實施方式并且本領域的技術人員將清楚對所公開實施方式的各種修改。本文中描述了提供優(yōu)異分布特性而沒有引入顯著的復雜度和等待時間的用于高速緩存存儲系統的高速緩存邏輯。高速緩存邏輯可操縱任何類型的數據(包括例如資源地址(諸如,存儲器和硬件地址)、處理器指令和來自存儲器的數據)。在圖1中示出高速緩存存儲系統的示意圖。高速緩存邏輯100被布置成確定用于高速緩存存儲器110(通常并非高速緩存邏輯的部分)的高速緩存地址,具有二進制輸入存儲器地址101的輸入數據114將被高速緩存在該高速緩存地址處,或者將從該高速緩存地址讀取高速緩存數據。按照本文中描述的本發(fā)明,輸入存儲器地址101的部分可被存儲在高速緩存存儲器處,并且可從數據在高速緩存存儲器中的位置獲得輸入存儲器地址的其余部分。高速緩存存儲器110可具有任何合適的存儲器架構:例如,它可以是直接映射的高速緩存存儲器或n路集合相聯高速緩存存儲器。在圖4的流程圖中例示并且將在本文中參照高速緩存邏輯所執(zhí)行的方法的示例。高速緩存邏輯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內不需要是連續(xù)的。通常,高速緩存存儲器110小于與存儲器地址101相關的主存儲器,其中,特定高速緩存線中的數據對應于主存儲器中的多個不同存儲器地址中的一個存儲器地址處存儲的數據。在典型的高速緩存系統中,用于數據線的存儲器地址101的集合位和存儲體位是用高速緩存存儲器110中的數據存儲在其處(或將存儲在其處)的集合(有可能與高速緩存線標簽組合地)獲得的那些位。存儲器地址101的標簽位是不能用在高速緩存存儲器110中的位置獲得的那些位。標簽位在與相同高速緩存集合對應的線存儲器地址之間進行區(qū)分。因此,標簽位被存儲在高速緩存存儲器110中,但是當數據被存儲在高速緩存存儲器110中時,集合位和存儲體位不需要(優(yōu)選地,沒有)被存儲在高速緩存存儲器110中。字位指示主存儲器中的數據的位置具有比高速緩存線大的分辨率,并且由于數據以高速緩存線為單元存儲在高速緩存存儲器110中,因此字位不需要被存儲在高速緩存存儲器110中(但在某些實現方式中,它們會被存儲在高速緩存存儲器110中)。在圖1中示出的示例中,存在兩個高速緩存存儲體111和112,使得一個存儲體位足以識別高速緩存存儲體中的一個,所以在這個示例中,b=1。然而,在其它示例中,可以在高速緩存存儲器中存在不同數量的存儲體,并且通常,高速緩存存儲器中的存儲體數量將是2的冪(諸如,2、4、8等)。在這些其它示例中,b可能不等于1,并且替代地,可以存在多個存儲體位(b),這足以根據高速緩存存儲器中的存儲體數量來識別高速緩存存儲器中的存儲體。在本示例中,高速緩存存儲器110的高速緩存行是2w個字節(jié)+t位寬,使得標簽位102與數據一起被存儲在高速緩存線中,但在其它示例中,標簽位102可不必與數據位相鄰地存儲在高速緩存線中。例如,這對于允許更快地訪問標簽位(例如,以確定高速緩存當前是否存儲特定數據條目,即,確定是高速緩存命中還是高速緩存缺失)可能是有用的,其中,高速緩存存儲器被布置成將標簽位102存儲在高速緩存存儲器110的單元處,從而允許比存儲數據本身的高速緩存存儲器的單元更快進行訪問。通常,高速緩存存儲器110可以是n路集合相聯高速緩存,在該情況下,酌情地,每條高速緩存線可以是2w×n個字節(jié)+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的目的是降低地址規(guī)則模式的可能性,從而造成高速緩存線被不均勻使用。哈希引擎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位的其它布置是可能的?,F在,將更詳細地描述取代單元、映射單元、位減少邏輯和輸出邏輯的示例性配置。每個取代單元301被配置成根據為了選擇標簽位305而進行的預定取代來替換該標簽位305的選擇。例如,每個取代單元可包括或訪問查找表(lut),lut針對接收到的標簽位305的給定的選擇來定義輸出取代位306。取代單元所提供的輸出取代位306的集合的長度可等于在該取代單元處接收到的標簽位的選擇。例如,取代單元可被配置成對標簽二進制串102中的3位串進行運算并且輸出取代3位串。被配置成對3位串進行運算并且提供3位輸出的取代單元可被稱為3位取代單元。不同取代單元可被配置成對不同長度的位串進行運算。每個取代單元被配置成從標簽輸入102接收位的預定選擇。在設計時,可選擇位的隨機分配,或者可向每個取代單元提供從標簽輸入對位的某個有序的(有可能,連續(xù)的)選擇??赏ㄟ^在設計時進行建模來確定最佳分配,如以下更詳細描述的。寬度為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位取代單元。可認為優(yōu)選地在可能的情況下使用更寬的取代單元,因為更寬的單元(例如,5位單元與3位單元)通常表現出改進的非線性。在一些實施方式中,取代單元可能接收過少的位,例如,其中,102是10位長并且提供一個5位取代單元和兩個3位取代單元(以給出11位的總位寬度)。在這些情況下,取代單元可被配置成根據某個預定方案用接收到的位來獲得缺失位,或者將這些缺失位固定于某個預定位值。來自這樣的取代單元的所需輸出位可以是來自取代單元的輸出位的預定選擇的,或者是憑借來自取代單元的輸出位根據某個預定方案來選擇的。然而,實際上,在面對的是10位標記串,并且在可能的情況下遵循使用更寬單元的普通偏好,可使用兩個5位取代單元。假若對給定高速緩存會話保持選擇(例如,直到高速緩存被清除),可根據任何可能的選擇向取代單元301分配標簽位的子集。這是在圖4中的步驟402。選擇在高速緩存邏輯106處是預定的。例如,標簽串102中的位選擇可從保持標簽串的寄存器被硬連線到每個取代的輸入。每個取代單元可被布置成接收例如標簽位的連續(xù)選擇;標簽位的預定偽隨機取樣;根據預定模式進行的標簽位選擇。在一些示例中,取代單元被布置成使得標簽位中的每個被設置成取代單元301中的一個和僅僅一個??捎欣赝ㄟ^將高速緩存邏輯的不同配置建模并且選擇最佳執(zhí)行配置在設計時確定標簽位的最佳選擇。每個取代單元被配置成根據它保持或有權訪問的預定取代,用取代位來替換標簽位中的其分配的位選擇。這是圖4中的步驟403。每個取代單元可包括查找表(lut),lut針對輸入位305的可能范圍來定義取代。lut可在制造時被硬連線,或者可以是預先計算的合適取代集合可被加載其中的可編程存儲器(例如,在高速緩存邏輯的初始化時)。在設計時預先計算映射,以確??赡軜撕炍惠斎?02的集合被很好地分布于高速緩存存儲器110的高速緩存線。如上所述,該預先計算可包括對針對取代單元的位分配的最佳集合的評價和/或映射單元302處的位輸出306的組合。當可以向任務分配大量處理功率和時間時在設計時執(zhí)行預先計算;在取代單元的查找表和向取代單元分配標簽位中實施預先計算的結果。然后,取代單元可針對每個標簽位輸入執(zhí)行簡單位取代,而不用取代單元執(zhí)行任何實質性處理。該方法允許高速緩存邏輯以非常低的等待時間進行操作,同時表現出在設計時識別的最佳高速緩存線分布特性。換句話講,位取代可被非??焖俚貓?zhí)行并且不需要執(zhí)行任何實質性處理;因此取代單元301沒有在高速緩存邏輯的關鍵路徑中引入顯著延遲。取代功能單元的一個目的是使線性最小化。例如,這里我們可以通過二進制運算符o將取代單元定義為線性的,成為以下的關系:輸入ai,aj其中,c是給定常數并且ak是標簽位輸入。在一些示例中,可以通過校驗對于輸入或輸出位的大量子集而言條件是否成立來考慮“部分”線性。該運算符通常被假定是逐位xor,但可替代地是諸如加法(模數2s)的另一個運算符。通過提供被布置成均接收選自標簽位中的有限數量的輸入位的多個取代單元,允許進行對全部輸入位的預先計算、對輸入位進行至少統計取樣、對輸入位的每個可能組合進行可能取代。對于3、4和5位取代而言,在當前多核服務器上進行這種預先計算是可行的(用3位二進制輸出306取代3位二進制輸入305)。更大寬度的位取代有可能可在超級計算機上進行或者通過采用云資源進行。然而,所需的處理量以取代空間的位寬度非??焖俚卦龃蟆τ诮o定位寬度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個二進制輸出中的每個經常大致地相等生成并且經常優(yōu)選地精確相等生成。優(yōu)選地選擇滿射(surjective)取代,并且在n=m的情況下,表明它們還應該優(yōu)選地是雙射的(bijective);ii.如果n個輸入位中的任一個改變,則每個輸出位的改變機會是大致50%;iii.二進制輸入和對應的二進制輸出之間的“相關性”在可能二進制輸入的整個集合上被最小化。有許多計算滿足以上條件的取代的可能方式。經常可假定,將經常同等地使用取代單元的可能二進制輸入中的每個。對于n=m的情況,如果取代在輸入二進制串和輸出二進制串之間有一對一的對應關系(即,雙射),則對于給定集合的可能二進制輸出中的每個將因此經常同等地生成??山洺<俣M足第一條件。第二條件可不僅被用作用于確定給定取代的質量的度量,而且被用作用于生成可能良好質量的候選取代的直觀推斷的基礎。在給定當前候選(對于n=m的情況,在第一次迭代比如身份取代時可被初始化)的情況下,可如下地生成新候選:當前候選被復制到新候選s'nm。現在考慮將該候選取代表示為具有2n個條目的表格,其中,索引j的條目包含snm(bj),即,位串bj被映射到的m位串?,F在,如下地“打亂”候選取代陣列:對于每個位的位置k(1≤k≤n),考慮2n-1對位串中的每個,使得僅僅在位置k(即,)處有所不同。與串對應的表格中的條目被以概率rswap∈(0,1)“隨機地”交換??傊?,因此使隨機選項在表格上是n.2n-1倍,以便生成新候選。然后,可分析該新候選的質量。如果初始母候選是身份取代,則可將rswap選定為1/2,即,每個交換應該具有50%的出現機會??梢栽诤罄m(xù)迭代時使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例如,還可根據輸入和/輸出位的線性組合之間的相關性的度量,對二進制輸出的每個集合進行評分??赏ㄟ^計算輸入位和輸出位的線性組合的集合之間的方差來形成相關性的這樣的度量。另外或另選地,可按增加的處理需求的成本采用輸入和/或輸出位的更高階組合?,F在將描述如何針對3位取代單元在設計時確定取代的好集合的示例。現實是針對3位寬的取代單元來計算可能取代的所有可能集合。以下示出取代的這樣一個集合:輸入輸出“000”=>“100”;“001”=>“110”“010”=>“111”“011”=>“010”“100”=>“101”“101”=>“000”“110”=>“001”“111”=>“011”可通過保持輸入列表固定并且將輸出中的每個旋轉一個位置但保持輸出次序來實現不同取代集合。同等地,將通過改變二進制輸出串的次序來實現不同的取代集合。因此,應該理解,對于輸入位的給定集合,存在大量可能的輸出位的可能集合??舍槍τ糜诙M制輸入的給定集合的取代的每個可能集合,沿著上述的線在設計時計算分數,這些分數用于選擇取代的一個或更多個“好”集合??呻S機地選擇好集合中的一個,以用于高速緩存邏輯100中的取代單元310的給定實現。對于具有較大位寬度(例如,5位)的取代集合,或者在設計時可用處理資源有限的情況下,可采用統計取樣方法,而不用窮盡地評價二進制輸出的每個可能集合??砂炊喾N不同方式來實現此取樣。現在將描述一種可能的方法。在一些示例中,可分兩階段來識別取代的好集合。在第一階段,可評價取代集合的隨機選擇,以在一個或更多個好取代集合處識別初始猜測??赏ㄟ^對每個取代集合進行評分—例如通過計算用該集合表示的二進制輸出和二進制輸入的集合之間的方差的度量來執(zhí)行此評價,在該情況下,具有相對低分數的那些取代集合代表最有希望的候選。然后,在第二階段中,可使用代表好取代集合的最有希望的候選的取代集合中的一個或更多個。在第二階段,可采用迭代處理來識別對初始猜測的改進。例如,可針對在第一階段中選擇的取代集合進行一個或更多個改變(諸如,將集合中的兩個或更多個二進制輸出交換,使得將這兩個或更多個二進制輸入映射到不同的二進制輸出)。以上針對條件(iii)描述了這種迭代處理的示例。然后,可評價修改后的取代集合的分數,以建立改變是否已經改進了取代集合(例如,修改后的取代集合的方差分數是否低于原始未修改的取代集合)。如果該改變改進了取代集合,則保持該改變并且可測試對取代集合的新修改;否則,拒絕該改變并且可測試對取代集合的新修改。該迭代處理允許識別好的取代集合,這些取代集合滿足以上三個條件,但相比于窮盡地處理所有可能取代集合以識別好集合而言,總體處理成本更低。對以上兩階段方法的許多變形形式是可能的。在一些示例中,可省略第一階段并且對可能取代集合的隨機選擇直接執(zhí)行第二階段。圖3的哈希引擎106的取代單元301可被配置成使用按照以上示例預先計算的好取代集合。這樣確保了每個取代單元按照以上在點(i)至(iii)中描述的所期望的好哈希的特性來生成二進制輸出306。具有相同寬度的取代單元可使用相同的取代集合,但優(yōu)選地這些單元使用不同的取代集合。不同的取代單元可使用源自相同基礎集合但相對于彼此旋轉的取代集合。在映射單元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位群組中的三位可以被固定,等等。然而,優(yōu)選地,取代單元被配置成提供足夠數量的位,映射單元可用這些位來創(chuàng)建整數個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以避免諸如病態(tài)接入情況的差高速緩存性能的方式,很好地分布于高速緩存線。選擇哈希引擎的每個取代單元使用好哈希使得能夠在哈希引擎處整體具有良好性能。類似地,好哈希引擎滿足以上設置的三個條件??梢杂欣氖牵谠O計時將哈希引擎建模,以確定以下中的一個或更多個:a)標簽輸入102中的位的最佳分配;b)在具有相同位寬度的取代單元處的取代集合的最佳組合;c)將來自取代單元的二進制輸出306組合成群組303的最佳組合—這可包括確定映射單元處的固定二進制值的最佳使用,以確保每個群組30包括s個位;d)在組合邏輯309處將s位輸入303和103最佳組合—例如,將要執(zhí)行的逐位運算的選擇??砂慈魏魏线m方式(包括根據這里描述的原理)來確定最佳配置。為了預先計算以上(a)至(d)中的一個或更多個的改變對哈希引擎的整體性能的效果,可通過運行高速緩存邏輯的模型在設計時估計哈希引擎的性能??墒褂么四P?,通過以下步驟來模擬哈希引擎的性能:對測試輸入地址101操作模型,對以上(a)至(d)中的一個或更多個進行改變,并且選擇哈希引擎的最佳執(zhí)行配置,以便在高速緩存邏輯中實現。例如,對于(a),可通過進行以下步驟來確定位的最佳分配:將位初始分配給每個取代單元,對分配迭代地引入修改并且測試該修改對高速緩存邏輯性能的效果,以識別是否應保持該修改。以這種方式可接近對取代單元的最佳位分配,而不必在哈希引擎的取代單元處針對取代表中的所有可能組合窮盡地評價取代單元的所有可能位分配(通常將是要執(zhí)行的不可行的大量處理)。如以上提到,對于使用相同位寬度的哈希引擎的取代單元,可以有利的是,使用不同的取代集合,使得取代單元針對二進制輸入的給定集合執(zhí)行不同取代。這樣可有助于避免高速緩存邏輯中的混疊問題,在一些配置中,這些問題可以是由于源自組合邏輯處的取代單元的二進制輸出的后續(xù)位組合而導致的(例如,在不同取代單元處重新使用取代集合的情況下,當事實上期望取代單元處使用的取代集合相對于彼此是非線性時,在組合邏輯處使用xor可以在來自映射單元的s位群組的組合中插入線性符號)。例如,獨立獲得的取代集合可用于具有相同位寬度的取代單元處,或者可用公共取代集合獲得在每個這樣的取代單元處使用的不同取代集合。在用初始取代集合獲得不同取代集合而不影響其“良好”特性的一種可能方式是旋轉在集合處限定的位取代的序列。例如,在以上設置的3位取代的集合中,不同取代單元可被配置成使用相同的3位取代,但每個取代旋轉1,使得“000”=>“100”、“001”=>“111”、“010”=>“010”等。為了避免混疊問題,可以有益的是,在位寬度意味著取代單元的輸出將均勻成為s位群組的情況下,在相同寬度的不同取代單位處使用公共取代集合的旋轉:nmods=0其中,n是所關注的取代單元的位寬度。這樣避免了如果將二進制輸出306一起分組到連續(xù)塊中以形成s位群組303則在位減少邏輯處生成相同取代集合的線性組合(由于這樣將導致遍及一個以上s位群組的相同取代集合而生成的輸出)。另選地,假定不同的n位取代單元是線性獨立的,不同的n位取代單元可替代地使用上述處理來獲得,并且替代旋轉方案進行使用。在如本文中描述配置的高速緩存邏輯100中,因為在設計時間已經優(yōu)化了在哈希引擎處執(zhí)行的位取代和組合,所以在高速緩存邏輯處生成的高速緩存線地址將很好地分布于高速緩存存儲器110。然而,這是以最小運行時間處理成本實現的,因為至少針對n的小值執(zhí)行n位取代就處理能力而言是快速且成本低的,并且可通過使用硬連線(沒有處理成本)和諸如xor的快速、低復雜度硬件來實現在映射單元和組合邏輯處執(zhí)行的位組合。設想到提供數量比t標簽位所需更大的取代單元的更復雜配置。在這些實施方式中,可以使用取代單元中的沒有用于取代二進制輸入305的位的位以根據某個預定方案在取代單元之間進行選擇。這可有助于以額外的極小運行時間處理成本進一步提高高速緩存邏輯的性能。在一些實施方式中,來自取代單元的二進制輸出的位寬度可不同于其二進制輸入的位寬度—這可以是例如可用的,以提供足以創(chuàng)建整數個s位群組的位。雖然在圖3中被示出為單獨單元,但取代單元、映射單元和組合邏輯可被集成到單個邏輯單元中,該單個邏輯單元被配置成執(zhí)行所定義的取代,從被取代的位來獲得s位二進制串,并且將這些s位串與來自高速緩存地址輸入的s位輸入組合。通過諸如逐位xor運算的可逆運算,在組合邏輯309處將哈希引擎106所生成的二進制串303與輸入串101中設置的位序列103組合。在其它示例中,該可逆運算可以是諸如加或減模數2s的另一種可逆運算。xor運算用邏輯實現時是直接且快速的。此外,通過將二進制串303(根據輸入存儲器地址101的標簽位102來生成)與輸入存儲器地址101的集合位103組合,并且通過適宜地選擇標簽和集合位,可確保對順序存儲器地址的常見訪問沒有被存儲在相同高速緩存線處。按照本文中描述的示例配置的哈希引擎有效地實施了簡單哈希函數,該簡單哈希函數快得足以用在關鍵路徑中,并沒有顯著增加高速緩存存儲器的復雜度或功耗。哈希引擎106還確保具有輸入存儲器地址的規(guī)則模式的數據的序列分布于高速緩存存儲器110。通常,高速緩存存儲系統將具有一個以上高速緩存存儲體。在圖1中,存在兩個高速緩存存儲體111和112。高速緩存條目可被存儲體選擇單元109分布于這些存儲器存儲體之間。在一些實施方式中,存儲體選擇單元109是逐位運算符,該逐位運算符接收高速緩存行116的最低有效位(121)并且將該位于輸入存儲器地址101中的“存儲體”位104(優(yōu)選地,與集合位103相鄰但是不及集合位103有效的位)組合。在圖1中示出的示例中是xor的逐位運算符109在其輸出提供存儲體指示符122,以將輸入數據114導向這兩個高速緩存存儲體111或112中的一個的高速緩存行116。以這種方式,高速緩存條目被分布于高速緩存存儲體之間并且可實現多存儲體高速緩存的優(yōu)點。如果存在不止兩個高速緩存存儲體,則來自高速緩存地址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可存儲固定的二進制序列,或者可根據本領域中已知的任何合適技術來生成用作二進制序列的其自身偽隨機位序列。然而,優(yōu)選地,能通過諸如支持高速緩存邏輯100的主機計算機的軟件或硬件功能的外部代理對位寄存器210進行編程。這樣避免增大高速緩存邏輯的復雜度,并且影響了在數據處理系統的實現高速緩存邏輯以形成二進制串的其它部分處通??捎玫奶幚砟芰?。通常,將在系統重置或系統通電時由系統驅動器將位寄存器201初始化。可隨機生成存儲在位寄存器201處的二進制串。然而,優(yōu)選地,相等數量的所有可能值被插入二進制串的位置中,然后所述值在二進制串內被打亂,使得對于所有可能值,來自二進制串的查找將返回任何可能值的概率基本上相同。然而,生成二進制串,優(yōu)選地具有的性質是,如果在二進制串內的任何點處從二進制串讀取了b位的群組(例如,在以上詳細描述的示例中,b=1),則讀取可能2b中的任一個的可能性基本上相同。例如,如果b=1,則優(yōu)選地二進制串的位中的大約一半是零,使得存儲體加擾單元大致可能同等地用于選擇高速緩存存儲器的每個存儲體。這可通過以下步驟來實現:隨機生成二進制串,然后丟棄所生成的不滿足該條件的二進制串,直到生成滿足該條件的二進制串。在一個示例中,通過只將具有40%到60%之間的零的二進制串存儲在位寄存器處,或者在另一個示例中,通過只將具有45%到55%之間的零的二進制串存儲在位寄存器處,來實施該條件。另選地,對于b>1的示例,格雷碼序列可用于二進制串,使得二進制串通過所有可能值循環(huán)。形成二進制串的方式可取決于訪問數據的次序。存儲體加擾單元108可被配置成將高速緩存行116的一個或更多個最低有效位121用作在位寄存器201處存儲的二進制串中的查找。該布置意味著,高速緩存地址的位沒有用在存儲體選擇單元109中,而是提供了由存儲體加擾單元108從(例如,偽隨機)二進制串中選擇位的手段。選擇單元202可以按適于存儲體加擾單元中采用的位寄存器的架構的方式將最低有效位121用作位寄存器210中的查找。例如,可使用最低有效位來識別位寄存器中的位位置,或者作為被布置成從位寄存器中選擇一個或更多個位的算法的種子。在替代示例中,存儲體加擾單元108可包括一個或更多個取代單元,根據本文中描述的原理來配置這些取代單元,以將s位輸出121從哈希引擎106映射到b位輸出。在優(yōu)選實施方式中,位寄存器的長度是2m位,其中,m是高速緩存地址116的最低有效位121的數量。這樣允許最低有效位121被用作識別寄存器201中存儲的二進制串中的位位置的地址。例如,如果m=5,則位寄存器處的二進制串是32位長,其中,給定高速緩存地址的最低有效位121的5位串識別二進制串的特定位。按從位寄存器201中的特定位開始的序列中選擇存儲體選擇單元109所需的位的數量(例如,對于具有兩個高速緩存存儲體的高速緩存存儲器,僅僅選擇所識別的位;對于四個高速緩存存儲體,選擇兩位)。選擇單元202從位寄存器201中選擇的一個或更多個位被提供到存儲體選擇單元109用于按上述方式與一個或更多個存儲體位104組合。存儲體選擇單元109(優(yōu)選地是xor運算符)生成存儲體指示符122,以便識別數據和標簽位102將被存儲在其處的高速緩存存儲體。使用存儲體加擾單元108用于通過高速緩存系統將訪問分布于存儲體。由于存儲在寄存器201中的二進制序列可被選擇為具有偽隨機特性(同時優(yōu)選地確保位中的大約50%是零),因此存儲體加擾單元108通常提供比將高速緩存行指示符121的位與存儲體位104混合更好的性能。這是因為,由存儲體加擾單元進行的存儲體選擇必須脫離存儲器地址101中存在的位的特定序列,因此不太可能導致高速緩存存儲體之間的病態(tài)訪問模式??赏ㄟ^將位寄存器201中的所有位設置成0或者將所有位設置成1來有效地停用存儲體加擾單元108。注意的是,使用xor作為存儲體選擇單元109確保了,在數據的突發(fā)傳輸的情況下,成對的對準的2w個字節(jié)讀數將仍然被從替代存儲體讀取/寫入替代存儲體,因此提供相關性能益處。也就是說,對于具有相同標簽和集合位但具有不同存儲體位的兩個存儲器相鄰地址,從組合邏輯309輸出的高速緩存行指示116將是相同的,但從存儲體選擇單元109輸出的高速緩存存儲體指示符將是不同的。對于其它讀/寫模式(例如,如果集合位增加1,則標簽和/或集合位在兩個存儲器地址之間改變),高速緩存訪問將很好地分布于存儲體111和112之中,從而避免了病態(tài)訪問情況。要注意,從如果重復高速緩存映射則給定存儲器地址101將映射到相同高速緩存地址的方面,標簽位和存儲體加擾的散列(hashing)是確定性處理。通常,只有輸入存儲器地址10的部分被用作標簽和集合位,其中,最低有效位沒有被高速緩存邏輯使用并且用圖1中的字位105來表示。為了允許從高速緩存存儲器重新創(chuàng)建輸入存儲器地址,并非需要將其所有位存儲在高速緩存中。這是因為,在從高速緩存讀取條目時:a)因為從高速緩存器中的哪里讀取條目是已知的,所以可獲得存儲體指示符位122和高速緩存指示符位116的值。高速緩存行指示符的最低有效位可通過存儲體加擾單元108(或等效單元)被傳送,并且結果可被用作xor運算的輸入,該xor運算將存儲體指示符位作為另一個輸入,由此找尋存儲器地址的存儲體位。b)因為在組合邏輯309處執(zhí)行的運算是可逆的,所以可容易地用高速緩存行指示符位116計算集合位。標簽被存儲在高速緩存中,并且可例如通過哈希引擎(或等效單元)被再次推送,以揭示必須與集合位組合以形成高速緩存行地址的位。由于組合邏輯的輸出是已知的(高速緩存行指示符位)并且可用從高速緩存獲取的標簽位來確定組合邏輯的輸入中的一個,因此可確定組合邏輯309的其它輸入(即,集合位103),這是因為在組合邏輯309處執(zhí)行的運算是可逆的。換句話講,為了確定s位輸入,標簽位可按與上述相同的方式通過取代單元301和映射單元302被傳送。然后,通過使用輸入303和(從高速緩存行識別的)s位輸出116,組合邏輯309可使用將如上所述用于確定輸出位116的可逆運算翻轉的運算來確定s位輸入103。因此,可通過只將存儲器地址101的標簽位102連同長度為2w的數據本身一起存儲,將二進制輸入存儲器地址的信息內容存儲在高速緩存存儲器110中。通過高速緩存線中的數據被存儲在其處的字節(jié)位置來確定字位。雖然實施方式已經引用了存儲在存儲器中的高速緩存數據,但高速緩存可用于其它運算。例如,在給定成本高但頻繁計算的函數f:x→y的情況下,它可用于存儲比如近期計算的結果。在此情形下,x的值將取代高速緩存查找中的地址。按照本發(fā)明配置的高速緩存邏輯可包括例如專用硬件邏輯、經合適變成的可重新配置邏輯(例如,fpga)、和/或諸如致使處理器和代碼的組合來提供本文中描述的本發(fā)明的功能的處理器和代碼的組合(諸如,asic或fpga)中的一個或更多個。在優(yōu)選實施方式中高速緩存邏輯是硬連線邏輯單元。所聲明的高速緩存邏輯(例如,哈希引擎、組合邏輯、存儲體選擇單元和存儲體加擾單元)的功能不需要被設置為單獨的單元并且表示可(a)按任何方式組合和(b)本身包括一個或更多個邏輯單元的功能。本文中使用的術語“隨機”是指真隨機和偽隨機的數字、處理、選擇、生成等。圖1至圖3的高速緩存邏輯、存儲體加擾單元和哈希引擎被示出為包括多個功能塊。這只是示意性的,并不旨在限定這些實體的不同邏輯元件之間的嚴格劃分。可按任何合適方式來設置每個功能塊。要理解,由高速緩存邏輯、存儲體加擾單元或哈希引擎形成的本文中描述的中間值不需要在任何點物理產生,并且可僅僅表示傳統上描述高速緩存邏輯、存儲體加擾單元或哈希引擎在其輸入和輸出之間執(zhí)行的處理。通常,以上描述的功能、方法、技術或組件中的任一個可用軟件、固件、硬件(例如,固定邏輯電路)或其任何組合來實現。術語“模塊”、“功能”、“組件”、“元件”、“單元”、“塊”和“邏輯”可在本文中用于總體表示軟件、固件、硬件或其任何組合。在軟件實現的情況下,模塊、功能、組件、元件、單元、塊或邏輯代表當在處理器上執(zhí)行時執(zhí)行指定任務的程序代碼。本文中描述的算法和方法可由一個或更多個處理器來執(zhí)行,處理器執(zhí)行致使處理器執(zhí)行算法/方法的代碼。計算機可讀存儲介質的示例包括隨機存取存儲器(ram)、只讀存儲器(rom)、光盤、閃存存儲器、硬盤存儲器和可使用磁學、光學和其它技術來存儲指令或其它數據并且可由機器進行訪問的其它存儲裝置。本文中使用的術語計算機程序代碼和計算機可讀指令是指用于處理器的任何類型的可執(zhí)行代碼,包括用機器語言、翻譯語言或腳本語言表示的代碼。可執(zhí)行代碼包括二進制代碼、機器代碼、字節(jié)碼、定義集成電路的代碼(諸如,硬件描述語言或網表)和用諸如c、java或opencl的編程語言代碼表示的代碼??蓤?zhí)行代碼可以是例如任何類型的軟件、固件、腳本、模塊或庫,該軟件、固件、腳本、模塊或庫在被合適執(zhí)行、處理、解釋、編譯、在虛擬機或其它軟件環(huán)境下執(zhí)行時,致使支持可執(zhí)行代碼的計算機系統的處理器執(zhí)行代碼所指定的任務。處理器、計算機或計算機系統可以是任何類型的裝置、機器或專用電路、或其集合或部分,具有使得它可執(zhí)行指令的處理能力。處理器可以是諸如cpu、gpu、片上系統、狀態(tài)機、媒體處理器、專用集成電路(asic)、可編程邏輯陣列、現場可編程門真累(fpga)等的任何類型的通用或專用處理器。計算機或計算機系統可包括一個或更多個處理器。定義集成電路的代碼可按任何方式來定義集成電路,包括將集成電路定義為網表、用于配置可編程芯片的代碼和定義任一級的集成電路的硬件描述語言(包括計算機傳輸級(rtl)代碼),諸如verilog或vhdl的高級電路表示、和諸如oasis和gdsii的低級電路表示。當在配置用于生成集成電路表示的合適配備的計算機系統處處理時,定義集成電路的代碼可致使計算機系統生成代碼所表示的集成電路的表示。這些計算機系統可致使通過例如提供輸出來生成集成電路的表示,該輸出用于控制被配置成構造集成電路或構造集成電路的中間表示(諸如,光刻掩模)的機器??稍谟嬎銠C系統處處理在邏輯上定義集成電路(諸如,rtl)的更高級表示,該計算機系統被配置用于在軟件環(huán)境的背景下生成集成電路的,軟件環(huán)境包括電路元件的定義和用于組合這些元件以生成由該表示如此定義的集成電路的表示的規(guī)則。本領域的技術人員還將認識到,本文中描述的功能、技術或方法中的全部或部分可由專有電路、專用集成電路、可編程邏輯陣列、現場可編程門陣列等來執(zhí)行。例如,模塊、功能、組件、單元或邏輯(或哈希引擎106的組件)可包括電路形式的硬件。此電路可包括可用于制造處理中的晶體管和/或其它硬件元件。例如,這些晶體管和/或其它元件可用于形成實現和/或包含諸如寄存器、觸發(fā)器或鎖存器的存儲器、諸如布爾運算的邏輯運算符、諸如加法器、乘法器或移位器的算術運算符和互連的電路或結構。這些元件可被設置為定制電路或標準的單元庫、宏或其它抽象級別。這些元件可按特定布置互連。模塊、功能、組件、單元或邏輯(例如,哈希引擎106的組件)可包括可被編程為執(zhí)行功能(一個或多個)的固定功能和電路;可以用固件或軟件更新或控制機制來提供此編程。在示例中,硬件邏輯具有實現固定功能操作、狀態(tài)機或處理的電路。還旨在涵蓋諸如hdl(硬件描述語言)軟件的“描述”或定義實現上述模塊、功能、組件、單元或邏輯(例如,哈希引擎106的組件)的軟件,該軟件用于設計集成電路,或者構成可編程芯片,以執(zhí)行所期望功能。也就是說,可提供上面編碼有集成電路定義數據集形式的計算機可讀程序代碼的計算機可讀存儲介質,程序代碼當在集成電路制造系統中處理時,將系統配置成制造如上所述的高速緩存邏輯。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和觸發(fā)器組件)而言的待生成電路的門級表示??赏ㄟ^確定邏輯組件的位置信息,用電路的門級表示來確定電路布局。這可自動地進行或者在用戶參與以優(yōu)化電路布局來進行。當布局處理系統504已經確定電路布局時,它可向ic生成系統506輸出電路布局定義。ic生成系統506根據電路布局定義來生成ic,如本領域中已知的。例如,ic生成系統506可實現用于生成ic的半導體器件制造處理,該制造處理可涉及光刻和化學處理步驟的多步序列,在這些步驟期間,在由半導體材料制成的晶圓上逐漸形成電子電路。電路布局定義可以是掩模的形式,該掩模可用于根據電路定義來生成ic的光刻處理。另選地,提供給ic生成系統506的電路布局定義可以是ic生成系統506可用來形成用于生成ic的合適掩模的計算機可讀代碼的形式。例如,可由一方將ic制造系統502所執(zhí)行的不同處理都在一個位置實現。另選地,ic制造系統502可以是分布式系統,使得處理中的一些可在不同位置執(zhí)行,并且可由不同方執(zhí)行。例如,(i)合成表示ic定義數據集的rtl代碼,以形成待生成電路的門級表示,(ii)基于門級表示來生成電路布局,(iii)按照電路布局來形成掩模,以及(iv)使用掩模來制造集成電路這些級中的一些可在不同位置和/或由不同方來執(zhí)行。申請人由此孤立地公開了本文中描述的每個個體特征和兩個或更多個這些特征的任何組合,達到不管這些特征或特征的組合是否解決了本文中公開的任何問題,使這些特征或組合能夠依照本領域技術人員的公知常識整體基于本說明書來執(zhí)行的程度。依據以上描述,對于本領域的技術人員而言,顯而易見,可在本發(fā)明的范圍內進行各種修改。當前第1頁12當前第1頁12
當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1