TW201941087A - 具有旋轉布隆過濾器之資料結構 - Google Patents

具有旋轉布隆過濾器之資料結構 Download PDF

Info

Publication number
TW201941087A
TW201941087A TW108107671A TW108107671A TW201941087A TW 201941087 A TW201941087 A TW 201941087A TW 108107671 A TW108107671 A TW 108107671A TW 108107671 A TW108107671 A TW 108107671A TW 201941087 A TW201941087 A TW 201941087A
Authority
TW
Taiwan
Prior art keywords
bloom filter
currently selected
bloom
array
tlb
Prior art date
Application number
TW108107671A
Other languages
English (en)
Inventor
傑森 諾曼
愛布朗沙 摩 阿布杜爾 撒妲楊 葛豪斯 漢尼 撒妲楊
Original Assignee
美商高通公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 美商高通公司 filed Critical 美商高通公司
Publication of TW201941087A publication Critical patent/TW201941087A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本發明提供一種方法,其包括獲得包括複數個布隆過濾器之一資料結構,該等布隆過濾器各自包括位元之一陣列且各自與將一資料集之至少一個元素映射至該陣列之該等位元中之至少一者的複數個雜湊函數相關聯。藉由以下操作將該資料集之一元素添加至該資料結構:判定一當前所選布隆過濾器,將該元素應用於該等相關聯雜湊函數中之每一者以獲得一相應複數個陣列位元位置,以及將在該複數個陣列位元位置中之每一者處的該當前所選布隆過濾器之該陣列之位元設定為一第一邏輯狀態。該方法亦包括基於在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態之位元之一數目使該複數個布隆過濾器旋轉。

Description

具有旋轉布隆過濾器之資料結構
本發明係關於利用布隆過濾器之資料結構,且更特定言之,係關於利用旋轉布隆過濾器之資料結構。
布隆過濾器(BF)為一種用以測試元素是否為集合之成員的空間有效概率資料結構,且經描述於B. Bloom,「Space/Time Tradeoffs in Hash Coding with Allowable Errors」, Communications of the ACM 13:7,第422至426頁(1970)中。布隆過濾器為對一組資料之簡明表示,其中相較於其所表示之資料集,該布隆過濾器資料結構操作及/或以電子方式傳輸更高效。空布隆過濾器為全部設定為零(0)之m個位元之的位元陣列。對於該過濾器,存在所定義之k個不同雜湊函數,其各自藉由均勻隨機分佈將一些集合元素映射或雜湊至陣列位元位置中之一者。為添加元素,將該元素送至k個雜湊函數中之每一者以得到k個陣列位元位置。將此等位置中之所有處的位元設定為一(1)。為查詢元素(測試其是否在集合中),將候選元素送至k個雜湊函數中之每一者以得到k個陣列位元位置。若此等位置處之位元中之任一者為0,則候選元素一定不在該集合中,若其為0,則所有位元將在其插入時經設定為1。若全部為1,則候選元素在該集合中,或該等位元已在其他元素之插入期間經隨機設定為1,導致偽陽性。對於其中使用布隆過濾器之某些資料應用,當與自其使用中所產生之操作及傳輸效率進行比較時,可容許偽陽性。
然而,傳統BF並不意謂針對無限資料項串流,此係因為偽陽性錯誤率將最終接近於100%且永不下降。使用每一陣列位元位置之遞減整數時間值的穩定布隆過濾器為一種僅保持填充之最近歷程的方式。然而,相較於簡單BF,此方式使用遠遠較多之觸發器,(例如H*m,其中H為您想要追蹤之歷程之項的數目,且m為該陣列中之位元的數目)。然而,以上所識別之BF的益處僅在預測正確時獲得。當預測不正確時,引發成本。
因此,本發明之態樣包括用於實施及利用資料結構之方法、計算器件及非暫時性電腦可讀媒體,該資料結構包括用於提供對元素是否包含於資料集中之有效指示的多個布隆過濾器。如上文所提及,習知布隆過濾器不意謂針對無限資料項串流,此係因為偽陽性錯誤率將最終增加至降低或消除使用布隆過濾器本身之益處的水平。因此,本發明之態樣包括資料結構,該資料結構包括多個布隆過濾器及用於在用於將資料填充至資料結構中之多個布隆過濾器當中選擇性循環之旋轉策略。在一個態樣中,對何時使布隆過濾器旋轉之決策可基於設定於資料結構之當前所選布隆過濾器的陣列中之位元的數目來進行。亦即,本發明之態樣使用現有布隆過濾器結構來判定是否需要旋轉及/或判定何時清空布隆過濾器,而非將額外組件(例如觸發器)添加至資料結構來計時,或自資料集中之所填充空間來接收反饋。如下文將進一步詳細描述,設定於布隆過濾器中之位元的數目可間接地對應於已經填充於資料結構中之條項的數目,且亦可直接指示偽陽性錯誤率。因此,本發明之態樣可利用布隆過濾器資料結構中之所設定位元的數目來判定何時使布隆過濾器旋轉,以便維持所儲存資料元素之所要歷程。此外,所設定位之數目亦可用以判定何時清空布隆過濾器資料結構以維持可接受之偽陽性錯誤率。
舉例而言,根據一個態樣,一種方法包括藉由一處理器來獲得包括複數個布隆過濾器之一資料結構。該複數個布隆過濾器中之每一布隆過濾器包括位元之一陣列且與複數個雜湊函數相關聯,其中該複數個雜湊函數中之每一雜湊函數將一資料集之至少一個元素映射至該陣列之位元中之至少一者。該方法亦包括:藉由該處理器將該資料集之一元素添加至該資料結構,其中將該元素添加至該資料結構包括:(i)判定複數個布隆過濾器中之一當前所選布隆過濾器,(ii)將該資料集之該元素應用於該當前所選布隆過濾器之複數個雜湊函數中之每一者,以獲得該當前所選布隆過濾器之該陣列之一相應複數個陣列位元位置,以及(iii)將該複數個陣列位元位置中之每一者處的該當前所選布隆過濾器之該陣列的位元設定為一第一邏輯狀態。該處理器隨後基於在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態之位元之數目使該複數個布隆過濾器旋轉。在一個態樣中,使複數個布隆過濾器旋轉包括將該複數個布隆過濾器之一下一布隆過濾器選為該當前所選布隆過濾器。
在另一態樣中,一種計算器件包括耦接至至少一個記憶體之至少一個處理器。該至少一個處理器及至少一個記憶體經組態以指示該計算器件獲得包括複數個布隆過濾器之一資料結構。該複數個布隆過濾器中之每一布隆過濾器包括位元之陣列且與複數個雜湊函數相關聯,其中該複數個雜湊函數中之每一雜湊函數將一資料集之至少一個元素映射至該陣列之該等位元中之至少一者。該至少一個處理器及至少一個記憶體進一步經組態以指示該計算器件將該資料集之一元素添加至該資料結構,其中將該元素添加至該資料結構包括:(i)判定該複數個布隆過濾器之當一前所選布隆過濾器,(ii)將該資料集之該元素應用於該當前所選布隆過濾器之該複數個雜湊函數中之每一者,以獲得該當前所選布隆過濾器之該陣列的相應複數個陣列位元位置,以及(iii)將該複數個陣列位元位置中之每一者設定為一第一邏輯狀態。該計算器件隨後基於在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態的位元之數目來使該複數個布隆過濾器旋轉,其中使該複數個布隆過濾器旋轉包括將該複數個布隆過濾器中之下一布隆過濾器選為該當前所選布隆過濾器。
在另一態樣中,一種計算器件包括用於獲得包括複數個布隆過濾器之一資料結構的構件。該複數個布隆過濾器中之每一布隆過濾器包括位元之陣列且與複數個雜湊函數相關聯,其中該複數個雜湊函數中之每一雜湊函數將一資料集之至少一個元素映射至該陣列之該等位元中之至少一者。該計算器件亦包括用於將該資料集之一元素添加至該資料結構的構件,其中用於將該元素添加至該資料結構之構件包括:(i)用於判定該複數個布隆過濾器中之一當前所選布隆過濾器之構件,(ii)用於將該資料集之該元素應用於該當前所選布隆過濾器之該複數個雜湊函數中之每一者以獲得當前所選布隆過濾器之陣列之相應複數個陣列位元位置之構件,以及(iii)用於將該複數個陣列位元位置中之每一者設定為一第一邏輯狀態之構件。該計算器件中進一步包括用於基於在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態的位元之一數目來使該複數個布隆過濾器旋轉之構件,其中用於使該複數個布隆過濾器旋轉之構件包括用於將該複數個布隆過濾器中之一下一布隆過濾器選為該當前所選布隆過濾器的構件。
在又另一態樣中,提供一種包括程式碼之非暫時性電腦可讀媒體。該程式碼包括指令,該等指令在由一計算器件之一處理器執行時指示該計算器件獲得包括複數個布隆過濾器之一資料結構。該複數個布隆過濾器中之每一布隆過濾器包括位元之一陣列且與複數個雜湊函數相關聯,其中該複數個雜湊函數中之每一雜湊函數將一資料集之至少一個元素映射至該陣列之該等位元中之至少一者。該等指令進一步指示該計算器件將該資料集之一元素添加至該資料結構,其中將該元素添加至該資料結構包括:(i)判定複數個布隆過濾器之一當前所選布隆過濾器,(ii)將該資料集之該元素應用於該當前所選布隆過濾器之複數個雜湊函數中之每一者,以獲得該當前所選布隆過濾器之該陣列的相應複數個陣列位元位置,以及(iii)將該複數個陣列位元位置中之每一者設定為一第一邏輯狀態。該程式碼亦包括用以指示該計算器件基於在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態的位元之一數目來使該複數個布隆過濾器旋轉之指令,其中用以使該複數個布隆過濾器旋轉之該等指令包括用以將該複數個布隆過濾器之一下一布隆過濾器選為該當前所選布隆過濾器之指令。
優先權之主張
本申請案主張於2018年3月15日申請之標題為「DATA STRUCTURE WITH ROTATING BLOOM FILTERS」之美國非臨時專利申請案第15/922,854號的優先權,該申請案此處轉讓給受讓人且特此明確地以其全文引用之方式併入本文中。
根據各種態樣的實例裝置、方法、系統及操作經揭示於以下描述及相關圖式中。可在不脫離所揭示概念之情況下設計替代方案。另外,將不詳細地描述或將省略熟知元件,以免混淆本發明之相關細節。
字組「例示性」在本文中用以意謂「充當實例、例子或說明」。因此,在本文中描述為「例示性」之任何實施方案或變型未必解釋為比其他實施方案及變型較佳或有利。
本文中所使用之術語僅出於描述具體實施方案的目的,且並不意欲對任何態樣進行限制。如本文中所使用,除非上下文另有明確指示,否則單數形式「一(a/an)」及「該」意欲亦包括複數形式。將理解,當在本文中使用時,術語「包含(comprises/comprising)」、「包括(includes)」及/或「包括(including)」指定所陳述之特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件或其群組之存在或添加。
此外,根據各種態樣的方法及程序可至少部分地按照由例如經特別組態之計算器件或此類器件中之一或多者的部分所執行之動作的序列來描述。將認識到,本文中所描述之各種動作可藉由特殊電路(例如特殊應用積體電路(ASIC)),藉由一或多個處理器所執行之程式指令或藉由兩者之組合來執行。另外,可認為本文中所描述之動作的序列完全體現於任何形式之電腦可讀儲存媒體內,該電腦可讀儲存媒體中儲存有電腦指令之相應集合,該等指令在經執行時將促使相關聯處理器執行本文中所描述之功能性。因此,可按全部已涵蓋於所主張標的物之範疇內的數種不同形式來體現各種態樣。另外,對於本文中所描述之實施例中之每一者,任何此類實施例之相應形式可在本文中經描述為(例如)「經組態以」執行所描述之動作「的邏輯」。
圖1為說明根據各種態樣的利用包括複數個布隆過濾器的資料結構之程序100的流程圖。程序100將藉由對圖2及圖3之額外參考來描述。舉例而言,圖2說明根據各種態樣的包括複數個布隆過濾器202的一實例資料結構200。如圖2中所示,每一布隆過濾器202包括位元之陣列210。雖然圖2將資料結構200說明為包括n數目個布隆過濾器(例如BF0至BFN),但資料結構200中可包括任何數目之布隆過濾器,包括2個或2個以上。圖2亦說明包括一或多個資料元素214之資料集212。在操作中,資料結構200可用以判定候選元素是否為資料集212之成員。
如將在下文更詳細地描述,資料結構200之操作可包括維持索引204,該索引指代當前所選布隆過濾器。如圖2之實例中所示,布隆過濾器BF0為如由索引204指示之當前所選布隆過濾器,其中當元素(亦即資料集212之資料元素214)經添加至資料結構200時,當前所選布隆過濾器(例如BF0)為待申請之唯一布隆過濾器202,如由程序206所指示。亦即,當資料集之元素待經添加至資料結構200時,僅將該元素添加至當前所選布隆過濾器。然而,當欲搜索資料結構200時,將使用所有布隆過濾器。舉例而言,程序208說明當搜索資料結構200以判定候選元素是否在資料集中時,對所有布隆過濾器202進行搜索。在一個實例中,當搜索資料結構200時,以所有布隆過濾器202 (亦即BF0至BFN)之逐位元OR來搜索所有布隆過濾器202。因此,在此實例中,若布隆過濾器202中之任一者指示候選元素在資料集中,則可將候選元素判定為在資料集中。
現返回至圖1,程序區塊102包括藉由處理器獲得包括複數個布隆過濾器之資料結構,諸如圖2之資料結構200。若資料結構200經實施為軟體模組,則獲得資料結構200可包括對資料結構200進行分配、初始化及/或自計算器件之記憶體擷取該資料結構。若資料結構200經實施為一或多個數位電路,則獲得資料結構200可包括激活數位電路或另外對該數位電路進行存取。
程序區塊104包括將資料集之元素添加至資料結構200之處理器。在一個實例中,程序區塊104對應於圖2之程序206,其在圖3中詳細地說明。現參考圖3,程序區塊106包括判定資料結構200之複數個布隆過濾器之當前所選布隆過濾器。舉例而言,判定當前所選布隆過濾器可包括讀取索引204以判定複數個布隆過濾器202中之哪一者為當前所選布隆過濾器(例如布隆過濾器BF0為圖2中之當前所選布隆過濾器)。
隨後,在程序區塊108中,處理器將資料集之元素312應用於與當前所選布隆過濾器相關聯的複數個雜湊函數314中之每一者。雖然圖3僅說明兩個(亦即k=2)雜湊函數,但任何數目之雜湊函數可與當前所選布隆過濾器相關聯,包括一或多個。在一個實例中,每一雜湊函數314包括可用以將任意大小之資料映射為固定大小之資料的任何函數。舉例而言,每一雜湊函數314可經組態以將元素312映射或雜湊至當前所選布隆過濾器之若干陣列位元位置316中之一者。在一個態樣中,對資料集之元素的映射或雜湊藉由均勻隨機分佈而雜湊至陣列210之位元位置。在一個實例中,將相同雜湊函數314用於每一布隆過濾器。亦即,當布隆過濾器BF0為當前所選布隆過濾器時,雜湊函數HASH0及雜湊函數HASH1用於將元素添加至資料結構200,而當布隆過濾器BF1為當前所選布隆過濾器時,亦可利用相同雜湊函數HASH0及雜湊函數HASH1。
如圖3中所示,將元素312應用於複數個雜湊函數314中之每一者導致獲得相應複數個陣列位元位置316。亦即,所獲得陣列位元位置之數目等於包括在複數個雜湊函數314中之數目k個雜湊函數。在圖3之實例中,k等於二,且因此將元素312應用於雜湊函數314導致獲得兩個陣列位元位置316。
隨後,在程序區塊110中,處理器在陣列位元位置316中之每一者處將當前所選布隆過濾器202 (例如BF0)之陣列210的位元設定為第一邏輯狀態(例如邏輯「1」)。在圖3之實例中,回應於程序區塊108中所獲得之陣列位元位置316而將位元位置1及位元位置4處之位元設定為第一邏輯狀態。
如所示,程序區塊106、108及110說明將元素添加至布隆過濾器之一實例操作。如下文將進一步詳細描述,可對資料結構執行額外操作,諸如旋轉、清空及搜索。關於搜索資料結構200,搜索可能需要針對候選元素搜索資料結構200之每一布隆過濾器202。若布隆過濾器中之任一者指示候選元素在資料集212中,則判定該候選元素的確在資料集212中。類似地,若布隆過濾器中之全部指示候選元素不在資料集212中,則判定該候選元素不包括在資料集212中。當搜索候選元素之資料結構200時,可採用與圖3之程序區塊108中所說明之彼程序類似的程序來搜索每一布隆過濾器。舉例而言,搜索候選元素可包括將候選元素應用於複數個雜湊函數314中之每一者以獲得相應複數個陣列位元位置316。僅當陣列位元位置316處之全部位元均設定為第一邏輯狀態時,將布隆過濾器判定為儲存有該候選元素。若陣列位元位置316中之任一者未設定為第一邏輯狀態(亦即替代地設定為第二邏輯狀態),則將該候選元素判定為尚未儲存於布隆過濾器中。
現返回至圖1,程序100進一步包括使複數個布隆過濾器旋轉(亦即程序區塊112)。在一個態樣中,使複數個布隆過濾器旋轉包括將複數個布隆過濾器中之下一布隆過濾器選為當前所選布隆過濾器(亦即程序區塊114)。舉例而言,參考圖2,索引204指示布隆過濾器BF0為當前所選布隆過濾器。因此,使布隆過濾器旋轉可包括將索引204遞增以使得布隆過濾器BF1現為當前所選布隆過濾器。在一個態樣中,使複數個布隆過濾器旋轉包括在將其選為當前所選布隆過濾器之前將下一布隆過濾器清空。因此,在圖2之實例中,當布隆過濾器BF1經選為當前所選布隆過濾器時,可將布隆過濾器BF1清空(例如使陣列210之全部位元復位至邏輯「0」)。
如上文所提及,設定於布隆過濾器之陣列中之位元的數目可間接對應於已經添加至布隆過濾器之元素的數目。因此,使布隆過濾器旋轉之程序可基於經設定為第一邏輯狀態(例如邏輯「1」)之當前所選布隆過濾器的陣列之位元的數目。舉例而言,圖4為說明根據各種態樣的基於當前所選布隆過濾器之陣列的經設定為第一邏輯狀態之位元的數目來使資料結構之複數個布隆過濾器旋轉之程序400的流程圖。程序400為圖1之程序區塊112之一種可能的實施方案。
程序區塊402包括判定當前所選布隆過濾器之陣列中的經設定為第一邏輯狀態之位元的數目。藉助於實例,圖3說明布隆過濾器BF0之陣列210具有兩個經設定為第一邏輯狀態之位元(亦即位元1及位4)。隨後,在決策區塊404中,作出對經設定為第一邏輯狀態之位元的數目是否大於設定位元臨限值之判定。在一個實例中,設定位元臨限值之值經設定為控制資料結構200之所要歷程。亦即,設定位元臨限值之值可至少部分地控制在旋轉之前每一布隆過濾器中儲存有多少項。在一個實例中,設定位元臨限值經設定為當前所選布隆過濾器之陣列中的位元之總數目的50%。因此,在說明具有16個位元之陣列210的圖3之實例中,設定位元臨限值可經設定為8。
隨後,在程序區塊406中,回應於判定設定位元臨限值已超過當前所選臨限值而清空下一布隆過濾器。在程序區塊408中,將下一布隆過濾器選為當前所選布隆過濾器。舉例而言,參考圖2,一旦布隆過濾器BF0之陣列210之位元的數目超過設定位臨限值,即可將布隆過濾器BF1清空並選為當前所選布隆過濾器(例如藉由使索引204遞增)。在一個態樣中,每當元素經添加至資料結構200時,作出關於是否使布隆過濾器旋轉之判定。
如上文所提及,設定於布隆過濾器中之位元的數目可直接指示偽陽性錯誤率(在本文中亦稱為錯誤命中率)。因此,在程序區塊410中,判定資料結構200之錯誤命中率(FHR)。在一個實例中,判定FHR包括判定所有布隆過濾器202之所有經設定為第一邏輯狀態(例如邏輯「1」)之位元的總和。舉例而言,可基於每一布隆過濾器BF0至BFN之所有陣列210的所有經設定為第一邏輯狀態之位元的總和來判定FHR命中率。在決策區塊412中,作出關於FHR是否超過FHR臨限值之判定。在一個態樣中,FHR臨限值可等於位元之總數目的25%。因此,若所有布隆過濾器202之所有陣列210的經設定為第一邏輯狀態之位元的總數目超過FHR臨限值,則程序400繼續進行至程序區塊414,其中清空所有布隆過濾器202。在一個實例中,清空所有布隆過濾器202包括將每一布隆過濾器202之每一陣列210之所有位元復位至第二邏輯狀態(例如邏輯「0」)。在一個態樣中,每當元素經添加至資料結構200時,作出關於是否清空所有布隆過濾器之判定。
如上文所描述,程序400包括直接基於當前所選布隆過濾器之陣列210的經設定為第一邏輯狀態之位元的數目來使布隆過濾器旋轉。在另一實例中,對是否旋轉之判定可基於對當前所選布隆過濾器中實際所儲存之元素之數目的估計來進行。舉例而言,圖5為說明根據各種態樣的基於當前所選布隆過濾器中之元素的所估計數目來使資料結構200之布隆過濾器旋轉之程序500的流程圖。程序500為圖1之程序區塊112之一種可能的實施方案。
在程序區塊502中,作出對當前所選布隆過濾器中之元素之數目的估計。在一個實例中,對元素之數目的估計可部分地基於當前所選布隆過濾器之陣列210上的經設定為第一邏輯狀態之位元的數目來進行。舉例而言,程序區塊502之態樣可包括基於以下每一者來對儲存於當前所選布隆過濾器中之元素之數目進行估計:當前所選布隆過濾器之陣列中之位元的總數目(例如圖3之陣列210中之總共16個位元)、與當前所選布隆過濾器相關聯的雜湊函數的數目(例如在圖3之雜湊函數314中,k=2)以及在當前所選布隆過濾器之陣列中經設定為第一邏輯狀態之位元的數目(例如,在如圖3之底部所示之陣列210中,2個位經設定為第一邏輯狀態)。特定言之,對儲存於當前所選布隆過濾器中之元素之數目進行估計可基於以下來進行:
等式1
其中E 為儲存於當前所選布隆過濾器中之元素的數目,m 為當前所選布隆過濾器之陣列中之位元的總數目,k 為與當前所選布隆過濾器相關聯的雜湊函數的數目,且設定位之 # 為在當前所選布隆過濾器之陣列中經設定為第一邏輯狀態之位元的數目。
因此,在一些實例中,儲存於當前所選布隆過濾器中之元素的數目可基於等式1來判定,其中在圖5之決策區塊504中,作出關於所估計元素之數目是否大於填充臨限值之判定。若如此,則程序繼續進行至程序區塊406及程序區塊408以清空下一布隆過濾器並將下一布隆過濾器選為當前所選布隆過濾器。
在一個實例中,填充臨限值之值係基於資料結構200之最大所要歷程以及包括於資料結構200中之布隆過濾器202的數目。特定言之,填充臨限值可基於比率n/N,其中n為最大歷程且N為布隆過濾器之數目。舉例而言,假設布隆過濾器之數目為N=2,且最大歷程為n=256,則當儲存於當前所選布隆過濾器中之元素的所估計數目超過128 (亦即256/2)時,將發生旋轉。類似地,假設布隆過濾器之數目為N=4,且最大歷程為256,則當儲存於當前所選布隆過濾器中之元素的所估計數目超過64 (亦即256/4)時,將發生旋轉。
圖6為說明對根據各種態樣的一實例資料結構之填充及旋轉的圖式。圖6之資料結構包括布隆過濾器BF0 602及布隆過濾器BF1 604以及其相應陣列。圖6之資料結構包括兩個相應雜湊函數(亦即k=2,圖6中未展示)且為圖2之資料結構200之一種可能的實施方案。圖6亦說明指示經添加至布隆過濾器BF0 602之條項之數目的行606以及指示經添加至布隆過濾器BF1 604之條項之數目的行608。圖6中進一步展示資料集(例如圖2之資料集212)之若干元素612 (例如E00至E10)以及其相應資料值614。
如圖6中所示,當元素E00經添加至資料結構時,布隆過濾器BF0 602為該資料結構之當前所選布隆過濾器。隨後將元素E00之資料值614 (例如0012)應用於k=2雜湊函數中之每一者以獲得陣列位元位置1及陣列位元位置4。因此,如圖6中所示,布隆過濾器BF0 602之陣列的位在位元位置1及位元位置4兩者處均設定為邏輯「1」。元素E01經類似地添加至當前所選布隆過濾器BF0 602,其中位元位置0及位元位置10兩者均設定為邏輯「1」。隨後,藉由將布隆過濾器BF0 602仍設定為當前所選布隆過濾器,將元素E02添加至資料結構。然而,將元素E02之資料值(亦即0003)應用於雜湊函數之結果產生重複陣列位元位置(例如位元位置0及位元位置1)。因此,由於位元位置0及1已經設定為邏輯「1」,因此允許此等位置處之位元保持設定為邏輯「1」。類似地,當添加元素E03時,將資料值8400應用於雜湊函數導致一個新的位元位置(亦即位元位置15)及一個重複位元位置(例如位元位置10)。因此,布隆過濾器BF0 602之位元位置15經設定為邏輯「1」且位元位置10保持設定為邏輯「1」。
在元素E03之輸入之後,儲存於當前所選布隆過濾器BF0 602中之條項的總數目為4,該總數目經判定為超出填充臨限值。因此,如所展示,藉由清空布隆過濾器BF1 604 (例如將所有位元復位至邏輯「0」)且將布隆過濾器BF1 604設置為當前所選布隆過濾器來使資料結構旋轉。隨後以上文參考布隆過濾器BF0 602所描述類似之方式將元素E04至E07添加至布隆過濾器BF1 604。如可見,當元素經添加至布隆過濾器BF1 604時,布隆過濾器BF0 602維持已經添加至資料結構之最近元素的歷程。因此,對資料結構之搜索將包括對當前所選布隆過濾器BF1 604以及布隆過濾器BF0 602兩者之搜索。
然而,在元素E07之輸入之後,已超過當前所選布隆過濾器(亦即BF1 604)之填充臨限值。因此,資料結構再次經旋轉以使得現將布隆過濾器BF0 602清空並設定為當前所選布隆過濾器。
上述資料結構以及添加元素、使資料結構旋轉、清空一或多個布隆過濾器及搜索候選元素之相關聯操作可適用於需要識別最近重複之任何資料串流傳輸應用。一般而言,本發明之態樣可以超低延遲及較小佔據面積設計而良好應用於任何硬體要求資料集提示。舉例而言,本發明之包括前述資料結構之態樣可與記憶體管理單元(MMU)之轉換旁視緩衝器(TLB)結合來實施,其中可利用該資料結構來指示是否已在之前發現某一事務,該事務(剪掉無效者)與TLB內容直接相關。
一般而言,MMU常用於微處理器中以提供虛擬記憶體能力。當啟用虛擬記憶體時,在處理器上執行之軟體僅發現及使用虛擬位址(VA)。MMU經分派以將VA轉換為可隨後在處理器內部及外部使用之實體位址(PA)。使用虛擬記憶體具有數個優勢,其包括能夠給予比實際上可獲得之更多的記憶之錯覺,給予對具有比由軟體所支援之更多的位址位元之實體記憶體系統的存取,以及藉由不同存取權限對實體記憶體之保護。
一般而言,虛擬位址空間經劃分為頁。儘管可使用其他頁大小,但頁通常為幾千位元組。系統通常支援自幾千位元組至幾百萬位元組或甚至十億位元組之多個頁大小以增加轉換效率。頁內之所有位址以相同方式轉換且所有存取權限資訊相同。經由(通常多級)頁表來進行VA與PA之間的轉換。貫穿頁表以將VA轉換為PA之程序通常稱作查核,此係因為其包含一序列表查找。
MMU通常包含兩個部件。第一部件為TLB。其對轉換進行快取以使得其可非常快速地對處理器進行存取,以使得對於經快取之轉換,處理器可以少量延遲來執行。第二部分為查核器,其在TLB不含有轉換時對頁表進行查核。在一些系統中,可在TLB與查核器之間存在較多快取。舉例而言,TLB可具有2級之快取。查核器可本身含有快取記憶體。
對相同頁之類似轉換(諸如自DMA引擎發起之彼等轉換)可經堆疊於彼此之後以較佳利用記憶體轉換資源。當藉由其較長記憶體轉換進行第一轉換時,類似轉換之後的彼方式將全部為快速TLB命中。此避免使用所有資源轉換相同頁而浪費轉換資源。
然而,若第一轉換已在TLB中經本地快取,則此等轉換經堆疊於第一個之後,在第一個之後具有所有非必要等待之若干循環,等待TLB結果。此可能在給出經完全填充之TLB的轉換結果時導致死循環。
因此,本發明之態樣可將諸如資料結構200之資料結構併入至MMU中以判定是否某一行中之轉換將有可能在單次循環內為TLB命中,而非在其後分派類似轉換之前等待若干循環(持續完整TLB搜索)。在一個態樣中,資料結構200可藉由TLB來實施以判定事務是否已有可能預先產生TLB命中。若如此,則可立即分派(且不經堆疊)類似事務以降低由非必要堆疊所導致之延遲。
舉例而言,圖7為說明根據各種態樣的併有布隆過濾器(BF)資料結構718之一實例MMU 702的功能區方塊圖。MMU 702之所說明實例包括輸入單元708、VA隊列710、TLB搜索、VA轉換及TLB填充單元712、TLB 714、堆疊單元716、BF資料結構718、輸出單元720、搜索單元722、填充單元724、旋轉單元726及清空單元728。TLB 714中包括一或多個TLB條項730。圖7中亦說明虛擬位址704 (例如VA1、VA2及VA3)以及PA 706。
在一個實例中,BF資料結構718可經實施為圖2之資料結構200,其中TLB條項730對應於資料集212之一或多個資料元素214。MMU 702之操作將藉由對圖8之額外參考來予以描述,該圖說明利用BF資料結構718來預測TLB條項是否存在於TLB 714之TLB條項730中的實例程序800。
舉例而言,在程序區塊802中,MMU 702之輸入單元708接收多個VA 704。可在輸入單元708處經由藉由處理器或其他處理器件(例如CPU)產生之一或多個VA轉換請求來接收VA 704。VA 704可包括第一VA (例如VA1)以及一或多個後續VA (例如VA2及VA3)。輸入單元708經耦接以向VA隊列710提供VA 704,該隊列為轉換提供對所接收之VA 704的調度或其他機化性。堆疊單元716經耦接至VA隊列710以判定是否應堆疊所接收之VA 704中之一或多者。在一個態樣中,堆疊單元716部分地基於對所接收之VA 704與已在VA隊列710中之另一VA 704類似的判定來判定是否堆疊VA 704。舉例而言,若堆疊單元716判定後續VA、VA2及VA3包括於虛擬位址空間之相同頁中,則堆疊單元716可判定後續VA、VA2及VA3與第一VA1類似(亦即若VA2及VA3與VA1在虛擬位址空間之相同頁中,則VA2及VA3與VA1類似)。
在一個態樣中,堆疊類似事務包括使對後續VA之轉換延遲,直至對第一VA之轉換完成為止且直至對應於第一VA之條項已經儲存於TLB 714中為止。因此,當對第一VA之轉換完成時,對後續類似VA轉換之轉換將全部為快速TLB命中。然而,如上文所提及,若對應於第一VA之條項已在TLB 714中經本地快取,則將類似VA (亦即VA2及VA3)堆疊於第一VA1之後將導致對後續VA之轉換的非必要延遲。因此,堆疊單元716可利用BF資料結構718來判定對第一VA之轉換是否將有可能導致TLB命中,以便判定是否堆疊後續VA。
特定言之,程序區塊804包括搜索單元722,該搜索單元搜索BF資料結構718以判定對應於第一VA1之TLB條項(例如TLB條項730)是否經儲存於TLB 714中。藉助於實例,搜索BF資料結構718可包括搜索BF資料結構718之所有布隆過濾器BF0至BFN以判定對應於第一VA1之條項是否已經儲存於TLB 714中。在一個態樣中,以所有布隆過濾器之逐位元OR來搜索所有布隆過濾器BF0至BFN。因此,在此實例中,若BF資料結構718之布隆過濾器中之任一者指示對應於第一VA1之條項在TLB 714中,則可判定對應於第一VA之TLB條項經儲存於TLB 714中。
當針對候選元素(例如第一VA1)搜索BF資料結構718時,可採用與在圖3之程序區塊108中所說明類似的程序來搜索每一布隆過濾器。舉例而言,搜索第一VA1可包括將第一VA1的值之全部或部分應用於複數個雜湊函數314中之每一者以獲得相應複數個陣列位元位置316。唯有當陣列位元位置316處之所有位元均設定為第一邏輯狀態時,將布隆過濾器判定儲存有第一VA1 (例如見圖3)。若陣列位元位置316中之任一者未設定為第一邏輯狀態(亦即替代地設定為第二邏輯狀態),則將第一VA1判定為尚未儲存於布隆過濾器中。
現返回至圖8,在決策區塊806判定沒有對應於第一VA1之TLB條項儲存於TLB 714中時,程序800繼續進行至程序區塊810,其中堆疊單元716堆疊後續VA (VA2及VA3)。如上文所提及,堆疊後續VA包括使對後續VA之轉換延遲,直至對第一VA1之轉換完成為止且直至對應於第一VA1之TLB條項已經儲存於TLB 714中為止。
然而,若對BF資料結構718之搜索顯示的確存在對應於第一VA1之TLB條項已經儲存於TLB 714中,則程序800繼續進行至程序區塊808,其中堆疊單元716判定不堆疊後續VA。在一個實例中,判定不堆疊後續VA包括立即發起對後續VA之轉換且不包含將由堆疊引發之延遲。
如圖8中所示,程序區塊812包括對TLB 714之搜索、對一或多個VA之轉換以及將一或多個TLB條項730向TLB 714之填充(亦即添加)。特定言之,搜索TLB 714可包括當後續VA、VA2及VA3延遲(若堆疊單元716判定堆疊後續VA)時,針對對應於第一VA1之TLB條項搜索TLB條項730。類似地,搜索TLB 714可包括當亦搜索對應於後續VA之TLB條項而無延遲時(若堆疊單元716判定不堆疊後續VA),針對對應於第一VA1之TLB條項搜索TLB條項730。此外,對一或多個VA之轉換可包括當對TLB 714之搜索產生TLB遺漏(亦即沒有對應於VA之條項經儲存於TLB中)時,對頁表進行查核(例如藉助於包括於圖7之區塊712中的查核器)。在將VA轉換為PA之後,隨後藉助於輸出單元720提供PA 706。
如上文所提及,將VA 704轉換為PA 706可包括將相應TLB條項730添加至TLB 714。另外,本發明之態樣可包括每當TLB條項730經添加至TLB 714時,對BF資料結構718進行更新。舉例而言,程序區塊814包括對BF資料結構718之填充、旋轉及清空。在一個態樣中,填充BF資料結構718可包括對執行圖1之程序區塊104的單元724進行填充以將元素(例如VA)添加至BF資料結構718。另外,使BF資料結構718旋轉可包括使執行圖1之程序區塊112、圖4之程序400及/或圖5之程序500之單元726旋轉。此外,清空BF資料結構718可包括當使BF資料結構718旋轉時,將清空下一布隆過濾器之單元728清空,及/或可包括回應於判定錯誤命中率(FHR)超過FHR臨限值而清空BF資料結構718之所有布隆過濾器。
如熟習此項技術者將瞭解,MMU 702之各種組件可以分散元件、執行於處理器上之軟體模組或軟體與硬體之任何組合來實施以達成本文中所揭示之功能性,該等組件包括輸入單元708、VA隊列710、TLB搜索、VA轉換及TLB填充單元712、TLB 714、堆疊單元716、BF資料結構718、輸出單元720、搜索單元722、填充單元724、旋轉單元726及清空單元728。舉例而言,MMU 702之所說明組件中之任一者可以硬體(例如特殊應用積體電路(ASIC)、可程式化閘陣列(PGA)、分散數位電路等)或以硬體與軟體(例如由相應處理器執行之軟體模型)之組合來實施。可替代地,可將MMU 702之組件之功能性併入至一個離散組件中。因此,圖7之MMU 702之特徵將僅視為例示性的,且本發明不限於所說明之特徵或佈置。
圖9為說明根據各種態樣的計算器件900之功能方塊圖。實例計算器件900在圖9中經展示為包括處理器902,該處理器具有藉由系統匯流排(在圖9中可見,但並未單獨標記)互連之CPU 908、處理器記憶體906及記憶體管理單元(MMU) 904。在一個態樣中,MMU 904可經組態以包括圖7之MMU 702之一或多個組件。MMU 904亦包括可經組態為圖2之資料結構200的BF資料結構912及可經組態為圖7之TLB 714的TLB 914。
計算器件900可經組態以參考圖1至圖8來執行所描述之各種方法,且可進一步經組態以執行自處理器記憶體906或外部記憶體910擷取之指令,以便參考圖1至圖8來執行所描述方法中之任一者。
圖9亦展示耦接至處理器902及顯示器928之顯示控制器926。編碼器/解碼器(CODEC) 934 (例如音訊及/或語音CODEC)可耦接至處理器902。亦說明諸如無線控制器940 (其可包括調制解調器)之其他組件。舉例而言,揚聲器936及麥克風938可耦接至CODEC 934。圖9亦指示無線控制器940可耦接至無線天線942。在特定態樣中,處理器902、顯示控制器926、處理器記憶體906、外部記憶體910、CODEC 934及無線控制器940可包括於系統級封裝或系統單晶片器件922中。
在特定態樣中,輸入器件930及電力供應器944可耦接至系統單晶片器件922。此外,在特定態樣中,如圖9中所示,顯示器928、輸入器件930、揚聲器936、麥克風938、無線天線942及電力供應器944可耦接至系統單晶片器件922之組件,諸如介面或控制器。
在一個態樣中,處理器記憶體906或外部記憶體910或兩者可經組態為包含包括指令之程式碼的非暫時性電腦可讀媒體,該等指令在藉由諸如處理器902之處理器讀取及執行時,促使計算器件900執行本文中所論述之操作中之任一者,諸如將條項添加至BF資料結構912、使BF資料結構912之布隆過濾器旋轉、清空BF資料結構912之布隆過濾器及/或針對候選條項(例如對應於TLB 914之TLB條項的事務)搜索BF資料結構912。
亦應注意,雖然圖9描繪計算器件900,但包括具有BF資料結構912之MMU 904的處理器902亦可經整合至無線器件、機上盒、音樂播放器、視訊播放器、娛樂單元、導航器件、個人數位助理(PDA)、固定位置資料單元、伺服器、電腦、膝上型電腦、平板電腦、行動電話或其他類似器件中。此等器件可或可不包括無線通信能力。
圖10說明根據各種態樣的可在計算器件1000中採用之組件的若干取樣態樣。計算器件1000為圖9之計算器件900之一種可能的實施方案。可替代地,計算器件1000可為併有圖2之資料結構200之任何器件,及/或參考圖1至圖8中描述之程序中之任一者所描述的功能性。
用於獲得包括複數個布隆過濾器之資料結構的模組1002至少在一些態樣中可對應於例如圖2之資料結構200、圖7之MMU 702及/或圖9之處理器902。用於將資料集之元素添加至資料結構之模組1004至少在一些態樣中可對應於例如圖7之填充單元724及/或圖9之處理器902。用於基於在當前所選布隆過濾器之陣列中經設定為第一邏輯狀態之位元的數目來使複數個布隆過濾器旋轉之模組1006至少在一些態樣中可對應於例如圖7之旋轉單元726及/或圖9之處理器902。
模組1002至1006之功能性可以與本文中之教示相符之各種方式來實施。在一些設計中,模組1002至1006之功能性可經實施為一或多個電性組件。在一些設計中,模組1002至1006之功能性可經實施為包括一或多個處理器組件之處理系統。在一些設計中,模組1002至模組1006之功能性可使用例如一或多個積體電路(例如ASIC)之至少部分來實施。如本文中所論述,積體電路可包括處理器、軟體、其他相關組件,或其某一組合。因此,不同模組之功能性可經實施為(例如)積體電路之不同子集、一組軟體模組之不同子集,或其組合。另外,應瞭解,(例如積體電路及/或一組軟體模組之)給定子集可提供用於超過一個模組之功能性之至少部分。
另外,圖10所表示之組件及功能以及本文中所描述之其他組件及功能可使用任何合適的構件來實施。亦可至少部分地使用如本文中所教示之相應結構來實施此類構件。舉例而言,上文與圖10之組件之「模組」相結合所描述的組件亦可對應於類似所指定之用於功能性之「構件」。因此,在一些態樣中,可使用處理器組件、積體電路或本文中教示之其他合適的結構中之一或多者來實施此類構件中之一或多者。
熟習此項技術者應瞭解,可使用多種不同技術及技藝中之任一者來表示資訊及信號。舉例而言,可由電壓、電流、電磁波、磁場或粒子、光場或粒子或其任何組合來表示在貫穿以上描述中可能引用之資料、指令、命令、資訊、信號、位元、符號及晶片。
另外,熟習此項技術者應瞭解,結合本文中揭示之實施例所描述的各種說明性邏輯區塊、模組、電路及演算法步驟可經實施為電子硬體、電腦軟體或兩者之組合。為清楚地說明硬體與軟體之此可互換性,各種說明性組件、區塊、模組、電路及步驟已在上文大體上按其功能性予以描述。此功能性實施為硬體抑或軟體視特定應用及強加於整個系統之設計約束而定。熟習此項技術者可針對每一特定應用以不同方式來實施所描述之功能性,但不應將此類實施決策解釋為導致脫離本發明之範疇。
結合本文中所揭示之實施例所描述之方法、序列及/或演算法可直接以硬體、以由處理器執行之軟體模組或以其兩者之組合來體現。軟體模組可駐留於RAM記憶體、快閃記憶體、ROM記憶體、EPROM記憶體、EEPROM記憶體、暫存器、硬碟、可移除式磁碟、CD-ROM,或此項技術中已知的任何其他形式之儲存媒體中。例示性儲存媒體經耦合至處理器,以使得處理器可自儲存媒體讀取並向儲存媒體寫入資訊。在替代方案中,儲存媒體可與處理器成一體式。
因此,根據一或多個態樣之實施方案或實踐可包括電腦可讀媒體,該電腦可讀媒體根據各種態樣基於指令標誌來體現用於推測性最佳化之基於動態可調標誌的方法。因此,該等實踐不限於所說明之實例。替代地,用於執行本文中所描述功能性之任何構件均包括於由本發明所設想之實踐及實施方案的範疇內。
當前述揭示內容展示根據一或多個態樣之例示性實施方案或實踐時,應注意,可在不脫離根據由所附申請專利範圍限定之一或多個態樣的實施方案、組態、佈置或實踐之範疇的情況下,在本文中作出各種改變及修改。無需以任何特定次序執行根據本文中所描述之概念及態樣之方法技術方案的功能、步驟及/或動作。此外,雖然根據一或多個態樣之實施方案、組態、佈置或實踐的元件可以單數形式描述或主張,但除非顯式地陳述對單數之限制,否則設想複數個。
100‧‧‧程序
102‧‧‧程序區塊
104‧‧‧程序區塊
106‧‧‧程序區塊
108‧‧‧程序區塊
110‧‧‧程序區塊
112‧‧‧程序區塊
114‧‧‧程序區塊
200‧‧‧資料結構
202‧‧‧布隆過濾器
204‧‧‧索引
206‧‧‧程序
208‧‧‧程序
210‧‧‧陣列
212‧‧‧資料集
214‧‧‧資料元素
312‧‧‧元素
314‧‧‧雜湊函數
316‧‧‧陣列位元位置
400‧‧‧程序
402‧‧‧程序區塊
404‧‧‧決策區塊
406‧‧‧程序區塊
408‧‧‧程序區塊
410‧‧‧程序區塊
412‧‧‧決策區塊
414‧‧‧程序區塊
500‧‧‧程序
502‧‧‧程序區塊
504‧‧‧決策區塊
602‧‧‧過濾器BF0
604‧‧‧過濾器BF1
606‧‧‧行
608‧‧‧行
612‧‧‧元素
614‧‧‧資料值
702‧‧‧MMU
704‧‧‧虛擬位址
706‧‧‧PA
708‧‧‧輸入單元
710‧‧‧VA隊列
712‧‧‧TLB填充單元
714‧‧‧TLB
716‧‧‧堆疊單元
718‧‧‧BF資料結構
720‧‧‧輸出單元
722‧‧‧搜索單元
724‧‧‧填充單元
726‧‧‧旋轉單元
728‧‧‧清空單元
730‧‧‧TLB條項
800‧‧‧實例程序
802‧‧‧程序區塊
804‧‧‧程序區塊
806‧‧‧決策區塊
808‧‧‧程序區塊
810‧‧‧程序區塊
812‧‧‧程序區塊
814‧‧‧程序區塊
900‧‧‧計算器件
902‧‧‧處理器
904‧‧‧記憶體管理單元
906‧‧‧處理器記憶體
908‧‧‧CPU
910‧‧‧外部記憶體
912‧‧‧BF資料結構
914‧‧‧TLB
922‧‧‧系統單晶片器件
926‧‧‧顯示控制器
928‧‧‧顯示器
930‧‧‧輸入器件
934‧‧‧編碼器/解碼器
936‧‧‧揚聲器
938‧‧‧麥克風
940‧‧‧無線控制器
942‧‧‧無線天線
944‧‧‧電力供應器
1000‧‧‧計算器件
1002‧‧‧模組
1004‧‧‧模組
1006‧‧‧模組
隨附圖式經呈現以輔助對態樣及根據態樣之例示性實踐的描述,且僅提供用於對實施例之說明且不對其進行限制。
圖1為說明根據各種態樣的利用包括複數個布隆過濾器的資料結構之方法的流程圖。
圖2為展示根據各種態樣的包括複數個布隆過濾器之一實例資料結構的圖形說明。
圖3為說明根據各種態樣的將資料集之元素添加至資料結構之方法的圖式。
圖4為說明根據各種態樣的基於當前所選布隆過濾器之陣列的經設定為第一邏輯狀態之位元之數目來使資料結構之複數個布隆過濾器旋轉之程序的流程圖。
圖5為說明根據各種態樣的基於當前所選布隆過濾器中之元素的所估計數目來使資料結構之複數個布隆過濾器旋轉之程序的流程圖。
圖6為說明對根據各種態樣的一實例資料結構之填充及旋轉的圖式。
圖7為說明根據各種態樣的併有布隆過濾器資料結構之一實例記憶體管理單元的功能方塊圖。
圖8為說明根據各種態樣的利用布隆過濾器資料結構來預測轉換旁視緩衝器(TLB)條項是否存在於處理器之TLB中之程序的流程圖。
圖9為說明根據各種態樣的計算器件之功能方塊圖。
圖10說明根據各種態樣的可在計算器件中採用的組件之若干取樣態樣。

Claims (32)

  1. 一種方法,其包含: 藉由一處理器獲得包括複數個布隆過濾器之一資料結構,其中: 該複數個布隆過濾器中之每一布隆過濾器包括位元之一陣列, 該等複數個布隆過濾器中之每一布隆過濾器與複數個雜湊函數相關聯,且 該複數個雜湊函數中之每一雜湊函數將一資料集之至少一個元素映射至該陣列之該等位元中之至少一者; 藉由該處理器將該資料集之一元素添加至該資料結構,其中將該元素添加至該資料結構包括: 判定該複數個布隆過濾器中之一當前所選布隆過濾器, 將該資料集之該元素應用於該當前所選布隆過濾器之該複數個雜湊函數中之每一者,以獲得該當前所選布隆過濾器之該陣列之一相應複數個陣列位元位置,以及 將該複數個陣列位元位置中之每一者處的該當前所選布隆過濾器之該陣列的位元設定為一第一邏輯狀態;以及 藉由該處理器基於在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態之位元之一數目來使該複數個布隆過濾器旋轉,其中使該複數個布隆過濾器旋轉包括將該複數個布隆過濾器中之一下一布隆過濾器選為該當前所選布隆過濾器。
  2. 如請求項1之方法,其進一步包含: 基於在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態之位元的該數目來估計儲存於該當前所選布隆過濾器中之元素之一數目,其中使該複數個布隆過濾器旋轉係基於儲存於該當前所選布隆過濾器中之元素之該數目來進行。
  3. 如請求項2之方法,其進一步包含: 判定儲存於該當前所選布隆過濾器中之元素之該數目是否大於一填充臨限值,其中使該複數個布隆過濾器旋轉係回應於判定儲存於該當前所選布隆過濾器中之元素之該數目大於該填充臨限值而進行。
  4. 如請求項3之方法,其中估計儲存於該當前所選布隆過濾器中之元素之該數目係部分地基於該當前所選布隆過濾器之該陣列中之位元之一總數目、包括於與該當前所選布隆過濾器相關聯的該複數個雜湊函數中之該等雜湊函數之一數目及在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態之位元之該數目來進行。
  5. 如請求項4之方法,其中估計儲存於該當前所選布隆過濾器中之元素之該數目係基於:, 其中E 為儲存於該當前所選布隆過濾器中之元素之該數目,m 為該當前所選布隆過濾器之該陣列中之位元之該總數目,k 為包括於與該當前所選布隆過濾器相關聯的該複數個雜湊函數中之該等雜湊函數之該數目,且設定位元之 # 為在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態之位元之該數目。
  6. 如請求項3之方法,其中該填充臨限值係基於該資料結構之一最大歷程及包括於該複數個布隆過濾器中之布隆過濾器之一數目。
  7. 如請求項6之方法,其中該填充臨限值係基於一比率n/N ,其中n為該資料結構之該最大歷程,且N為包括於該等複數個布隆過濾器中之布隆過濾器之該數目。
  8. 如請求項1之方法,其中使該複數個布隆過濾器旋轉係回應於判定在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態的位元之該數目大於一設定位元臨限值而進行。
  9. 如請求項1之方法,其進一步包含: 針對一候選元素搜索該複數個布隆過濾器中之每一布隆過濾器;以及 回應於該複數個布隆過濾器中之任一者指示該候選元素在該資料集中而判定該候選元素在該資料集中。
  10. 如請求項1之方法,其中使該複數個布隆過濾器旋轉進一步包括在將該下一布隆過濾器選為該當前所選布隆過濾器之前清空該下一布隆過濾器。
  11. 如請求項1之方法,其進一步包含: 判定該資料結構之一錯誤命中率;以及 回應於判定該錯誤命中率超過一錯誤命中率臨限值而清空該複數個布隆過濾器中之每一布隆過濾器。
  12. 如請求項1之方法,其中該資料集包含儲存於該處理器之一TLB中之一或多個轉換旁視緩衝器(TLB)條項,該方法進一步包含: 接收一第一虛擬位址及一或多個後續虛擬位址,其中該一或多個後續虛擬位址與該第一虛擬位址類似; 搜索該資料結構以判定對應於該第一虛擬位址之一TLB條項是否儲存於該TLB中,該資料結構包括該複數個布隆過濾器; 回應於判定沒有對應於該第一虛擬位址之TLB條項儲存於該TLB中而堆疊該等後續虛擬位址,其中堆疊該等後續虛擬位址包括使對該等後續虛擬位址之轉換延遲,直至對該第一虛擬位址之一轉換完成且對應於該第一虛擬位址之該TLB條項經儲存於該TLB中為止;以及 回應於判定有對應於該第一虛擬位址之一TLB條項經儲存於該TLB中而發起對該等後續虛擬位址之轉換而無堆疊且無該延遲。
  13. 如請求項12之方法,其進一步包含回應於判定該一或多個後續虛擬位址及該第一虛擬位址包括於虛擬位址空間之一相同頁中而判定該一或多個後續虛擬位址與該第一虛擬位址類似。
  14. 一種計算器件,其包含: 至少一個處理器;及 至少一個記憶體,其耦接至該至少一個處理器,該至少一個處理器及該至少一個記憶體經組態以指示該計算器件: 獲得包括複數個布隆過濾器之一資料結構,其中: 該複數個布隆過濾器中之每一布隆過濾器包括位元之一陣列, 該複數個布隆過濾器中之每一布隆過濾器與複數個雜湊函數相關聯,且 該複數個雜湊函數中之每一雜湊函數將一資料集之至少一個元素映射至該陣列之該等位元中之至少一者; 將該資料集之一元素添加至該資料結構,其中將該元素添加至該資料結構包括: 判定該複數個布隆過濾器中之一當前所選布隆過濾器, 將該資料集之該元素應用於該當前所選布隆過濾器中之該複數個雜湊函數中之每一者,以獲得該當前所選布隆過濾器之該陣列之一相應複數個陣列位元位置,以及 將該等複數個陣列位元位置中之每一者設定為一第一邏輯狀態;以及 基於在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態之位元之一數目來使該複數個布隆過濾器旋轉,其中使該複數個布隆過濾器旋轉包括將該複數個布隆過濾器之一下一布隆過濾器選為該當前所選布隆過濾器。
  15. 如請求項14之計算器件,其中該至少一個處理器及該至少一個記憶體進一步經組態以指示該計算器件: 基於在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態之位元之該數目來估計儲存於該當前所選布隆過濾器中之元素之一數目,其中使該複數個布隆過濾器旋轉係回應於判定儲存於該當前所選布隆過濾器中之元素之該數目大於一填充臨限值而進行。
  16. 如請求項15之計算器件,其中該至少一個處理器及該至少一個記憶體進一步經組態以指示該計算器件: 部分地基於以下每一者來估計儲存於該當前所選布隆過濾器中之元素之該數目:該當前所選布隆過濾器之該陣列中之位元之一總數目、包括於與該當前所選布隆過濾器相關聯的該複數個雜湊函數中之該等雜湊函數之一數目及在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態之位元之該數目。
  17. 如請求項15之計算器件,其中該至少一個處理器及該至少一個記憶體進一步經組態以指示該計算器件估計儲存於該當前所選布隆過濾器中之元素之該數目係基於:, 其中E 為儲存於該當前所選布隆過濾器中之元素之該數目,m 為該當前所選布隆過濾器之該陣列中之位元之該總數目,k 為包括於與該當前所選布隆過濾器相關聯的該複數個雜湊函數中之該等雜湊函數之該數目,且設定位元之 # 為在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態之位元之該數目。
  18. 如請求項15之計算器件,其中該填充臨限值係基於比率n/N ,其中n為該資料結構之一最大歷程,且N為包括於該複數個布隆過濾器中之布隆過濾器之一數目。
  19. 如請求項14之計算器件,其中該至少一個處理器及該至少一個記憶體進一步經組態以指示該計算器件使該複數個布隆過濾器旋轉係回應於判定在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態之位元之該數目大於一設定位元臨限值而進行。
  20. 如請求項14之計算器件,其中該至少一個處理器及該至少一個記憶體進一步經組態以指示該計算器件: 針對一候選元素搜索該複數個布隆過濾器中之每一布隆過濾器;以及 回應於該複數個布隆過濾器中之任一者指示該候選元素在該資料集中而判定該候選元素在該資料集中。
  21. 如請求項14之計算器件,其中該至少一個處理器及該至少一個記憶體進一步經組態以指示該計算器件在將該下一布隆過濾器選為該當前所選布隆過濾器之前清空該下一布隆過濾器。
  22. 如請求項14之計算器件,其中該至少一個處理器及該至少一個記憶體進一步經組態以指示該計算器件: 判定該資料結構之一錯誤命中率;以及 回應於判定該錯誤命中率超過一錯誤命中率臨限值而清空該複數個布隆過濾器中之每一布隆過濾器。
  23. 如請求項14之計算器件,其進一步包含: 該至少一個處理器之一轉換旁視緩衝器(TLB),其中該資料集包括儲存於該TLB中之一或多個TLB條項,該至少一個處理器及至少一個記憶體進一步經組態以指示該計算器件: 接收一第一虛擬位址及一或多個後續虛擬位址,其中該一或多個後續虛擬位址與該第一虛擬位址類似; 搜索該資料結構以判定對應於該第一虛擬位址之一TLB條項是否儲存於該TLB中,該資料結構包括該複數個布隆過濾器; 回應於判定沒有對應於該第一虛擬位址之TLB條項儲存於該TLB中而堆疊該等後續虛擬位址,其中堆疊該等後續虛擬位址包括使對該等後續虛擬位址之轉換延遲,直至對該第一虛擬位址之一轉換完成且對應於該第一虛擬位址之該TLB條項經儲存於該TLB中為止;以及 回應於判定有對應於該第一虛擬位址之TLB條項經儲存於該TLB中而發起對該等後續虛擬位址之轉換而無堆疊且無該延遲。
  24. 如請求項23之計算器件,其中該至少一個處理器及該至少一個記憶體進一步經組態以指示該計算器件回應於判定該一或多個後續虛擬位址及該第一虛擬位址包括於虛擬位址空間之一相同頁中而判定該一或多個後續虛擬位址與該第一虛擬位址類似。
  25. 一種計算器件,其包含: 用於獲得包括複數個布隆過濾器之一資料結構之構件,其中: 該複數個布隆過濾器中之每一布隆過濾器包括位元之一陣列, 該複數個布隆過濾器中之每一布隆過濾器與複數個雜湊函數相關聯,且 該複數個雜湊函數中之每一雜湊函數將一資料集之至少一個元素映射至該陣列之該等位元中之至少一者; 用於將該資料集之一元素添加至該資料結構之構件,其中用於將該元素添加至該資料結構之該構件包括: 用於判定該複數個布隆過濾器中之一當前所選布隆過濾器之構件, 用於將該資料集之該元素應用於該當前所選布隆過濾器之該複數個雜湊函數中之每一者以獲得該當前所選布隆過濾器之該陣列之一相應複數個陣列位元位置之構件,以及 用於將該複數個陣列位元位置中之每一者設定為一第一邏輯狀態之構件;以及 用於基於在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態之位元之一數目來使該複數個布隆過濾器旋轉之構件,其中用於使該複數個布隆過濾器旋轉之該構件包括用於將該複數個布隆過濾器中之一下一布隆過濾器選為該當前所選布隆過濾器之構件。
  26. 如請求項25之計算器件,其進一步包含: 用於部分地基於以下每一者來估計儲存於該當前所選布隆過濾器中之元素之一數目的構件:該當前所選布隆過濾器之該陣列中之位元之一總數目、包括於與該當前所選布隆過濾器相關聯的該複數個雜湊函數中之該等雜湊函數之一數目及在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態之位元之該數目,其中用於使該複數個布隆過濾器旋轉之該構件包括用於回應於判定儲存於該當前所選布隆過濾器中之元素之該數目大於一填充臨限值而使該複數個布隆過濾器旋轉之構件。
  27. 如請求項26之計算器件,其中該填充臨限值係基於比率n/N ,其中n為該資料結構之一最大歷程,且N為包括於該複數個布隆過濾器中之布隆過濾器之一數目。
  28. 如請求項26之計算器件,其進一步包含: 至少一個處理器,其包括一轉換旁視緩衝器(TLB),其中該資料集包括儲存於該TLB中之一或多個TLB條項; 用於接收一第一虛擬位址及一或多個後續虛擬位址之構件,其中該一或多個後續虛擬位址與該第一虛擬位址類似; 用於搜索該資料結構以判定對應於該第一虛擬位址之一TLB條項是否儲存於該TLB中之構件,該資料結構包括該複數個布隆過濾器; 用於回應於判定沒有對應於該第一虛擬位址之TLB條項儲存於該TLB中而堆疊該等後續虛擬位址之構件,其中堆疊該等後續虛擬位址包括使對該等後續虛擬位址之轉換延遲,直至對該第一虛擬位址之一轉換完成且對應於該第一虛擬位址之該TLB條項經儲存於該TLB中為止;以及 用於回應於判定有對應於該第一虛擬位址之一TLB條項經儲存於該TLB中而發起對該等後續虛擬位址之轉換而無堆疊且無該延遲之構件。
  29. 一種非暫時性電腦可讀媒體,其包括儲存於其上之程式碼,其中該程式碼包括指令,該等指令在由一計算器件之一處理器執行時指示該計算器件: 獲得包括複數個布隆過濾器之一資料結構,其中: 該複數個布隆過濾器中之每一布隆過濾器包括位元之一陣列, 該複數個布隆過濾器中之每一布隆過濾器與複數個雜湊函數相關聯,且 該複數個雜湊函數中之每一雜湊函數將一資料集之至少一個元素映射至該陣列之該等位元中之至少一者; 將該資料集之一元素添加至該資料結構,其中將該元素添加至該資料結構包括: 判定該複數個布隆過濾器中之一當前所選布隆過濾器, 將該資料集之該元素應用於該當前所選布隆過濾器之該複數個雜湊函數中之每一者,以獲得該當前所選布隆過濾器之該陣列之一相應複數個陣列位元位置,以及 將該等複數個陣列位元位置中之每一者設定為一第一邏輯狀態;以及 基於在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態之位元之一數目來使該複數個布隆過濾器旋轉,其中用以使該複數個布隆過濾器旋轉之該等指令包括用以將該複數個布隆過濾器中之一下一布隆過濾器選為該當前所選布隆過濾器的指令。
  30. 如請求項29之非暫時性電腦可讀媒體,其中該程式碼進一步包括指令,該等指令用以指示該計算器件: 部分地基於以下每一者來估計儲存於該當前所選布隆過濾器中之元素之一數目:該當前所選布隆過濾器之該陣列中之位元之一總數目、包括於與該當前所選布隆過濾器相關聯的該複數個雜湊函數中之該等雜湊函數之一數目及在該當前所選布隆過濾器之該陣列中經設定為該第一邏輯狀態之位元之該數目,其中用以使該複數個布隆過濾器旋轉之該等指令包括用以回應於判定儲存於該當前所選布隆過濾器中之元素之該數目大於一填充臨限值而使該複數個布隆過濾器旋轉之指令。
  31. 如請求項30之非暫時性電腦可讀媒體,其中該填充臨限值係基於一比率n/N ,其中n為該資料結構之一最大歷程,且N為包括於該複數個布隆過濾器中之布隆過濾器之一數目。
  32. 如請求項31之非暫時性電腦可讀媒體,其中該資料集包括儲存於該計算器件之至少一個處理器之一轉換旁視緩衝器(TLB)中的一或多個TLB條項,其中該程式碼進一步包括指令,該等指令用以指示該計算器件: 在該TLB處接收一第一虛擬位址及一或多個後續虛擬位址,其中該一或多個後續虛擬位址與該第一虛擬位址類似; 搜索該資料結構以判定對應於該第一虛擬位址之一TLB條項是否儲存於該TLB中,該資料結構包括該複數個布隆過濾器; 回應於判定沒有對應於該第一虛擬位址之TLB條項儲存於該TLB中而堆疊該等後續虛擬位址,其中堆疊該等後續虛擬位址包括使對該等後續虛擬位址之轉換延遲,直至對該第一虛擬位址之一轉換完成且對應於該第一虛擬位址之該TLB條項經儲存於該TLB中為止;以及 回應於判定有對應於該第一虛擬位址之一TLB條項經儲存於該TLB中而發起對該等後續虛擬位址之轉換而無堆疊且無該延遲。
TW108107671A 2018-03-15 2019-03-07 具有旋轉布隆過濾器之資料結構 TW201941087A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/922,854 US20190286718A1 (en) 2018-03-15 2018-03-15 Data structure with rotating bloom filters
US15/922,854 2018-03-15

Publications (1)

Publication Number Publication Date
TW201941087A true TW201941087A (zh) 2019-10-16

Family

ID=65861722

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108107671A TW201941087A (zh) 2018-03-15 2019-03-07 具有旋轉布隆過濾器之資料結構

Country Status (3)

Country Link
US (1) US20190286718A1 (zh)
TW (1) TW201941087A (zh)
WO (1) WO2019177867A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10635654B2 (en) * 2017-06-12 2020-04-28 Samsung Electronics Co., Ltd. Data journaling for large solid state storage devices with low DRAM/SRAM
CN111930924A (zh) * 2020-07-02 2020-11-13 上海微亿智造科技有限公司 基于布隆过滤器的数据查重系统及方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8990243B2 (en) * 2011-11-23 2015-03-24 Red Hat, Inc. Determining data location in a distributed data store
US20130226972A1 (en) * 2012-02-27 2013-08-29 Ramakumar Kosuru Methods and systems for processing data arrays using bloom filters
US9361327B1 (en) * 2012-12-28 2016-06-07 Emc Corporation Rolling bloom filter for data with retention policy
US9274967B2 (en) * 2013-08-07 2016-03-01 Nimble Storage, Inc. FIFO cache simulation using a bloom filter ring
US20160253425A1 (en) * 2014-01-17 2016-09-01 Hewlett Packard Enterprise Development Lp Bloom filter based log data analysis
US10452676B2 (en) * 2014-01-31 2019-10-22 Hewlett Packard Enterprise Development Lp Managing database with counting bloom filters
US9454574B2 (en) * 2014-03-28 2016-09-27 Sybase, Inc. Bloom filter costing estimation
CA2876466C (en) * 2014-12-29 2022-07-05 Ibm Canada Limited - Ibm Canada Limitee Scan optimization using bloom filter synopsis

Also Published As

Publication number Publication date
WO2019177867A1 (en) 2019-09-19
US20190286718A1 (en) 2019-09-19

Similar Documents

Publication Publication Date Title
US11163828B2 (en) Building and querying hash tables on processors
US11706020B2 (en) Circuit and method for overcoming memory bottleneck of ASIC-resistant cryptographic algorithms
TWI545435B (zh) 於階層式快取處理器中之協調預取
US11403044B2 (en) Method and apparatus for performing multi-object transformations on a storage device
US9280474B2 (en) Adaptive data prefetching
US10572378B2 (en) Dynamic memory expansion by data compression
TWI804466B (zh) 擷取記憶體中儲存的資料的方法與去重複模組
TW200817897A (en) Pseudo-LRU virtual counter for a locking cache
TWI582592B (zh) 用於存取快取記憶體的方法與裝置
KR20120123127A (ko) 이종 플랫폼에서 포인터를 공유시키는 방법 및 장치
US9063860B2 (en) Method and system for optimizing prefetching of cache memory lines
US10482021B2 (en) Priority-based storage and access of compressed memory lines in memory in a processor-based system
WO2017053109A1 (en) Method and apparatus for cache line deduplication via data matching
JP2018503924A (ja) 中央処理ユニット(cpu)ベースのシステム内の圧縮メモリコントローラ(cmc)による連続読取り動作を使用するメモリ帯域幅圧縮の提供
EP2945126A2 (en) Graphics processing method and graphics processing apparatus
TW202145010A (zh) 數據儲存方法、電子設備及儲存媒體
US9384131B2 (en) Systems and methods for accessing cache memory
TW201941087A (zh) 具有旋轉布隆過濾器之資料結構
CN116860665A (zh) 由处理器执行的地址翻译方法及相关产品
US11030714B2 (en) Wide key hash table for a graphics processing unit
CN106649143B (zh) 一种访问缓存的方法、装置及电子设备
Deng et al. Herniated hash tables: Exploiting multi-level phase change memory for in-place data expansion
WO2023241655A1 (zh) 数据处理方法、装置、电子设备以及计算机可读存储介质
CN114398368A (zh) 一种散列表创建方法、装置、设备及存储介质