TWI806334B - 內容可定址記憶體及其操作方法 - Google Patents
內容可定址記憶體及其操作方法 Download PDFInfo
- Publication number
- TWI806334B TWI806334B TW111100217A TW111100217A TWI806334B TW I806334 B TWI806334 B TW I806334B TW 111100217 A TW111100217 A TW 111100217A TW 111100217 A TW111100217 A TW 111100217A TW I806334 B TWI806334 B TW I806334B
- Authority
- TW
- Taiwan
- Prior art keywords
- stage
- cam
- sub
- match
- search key
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
- G11C15/04—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
Abstract
本發明提供了一種內容可定址記憶體(CAM)設備及其操作方法。該CAM設備包括多個CAM子庫。每個CAM子庫包括按列和行佈置並且沿行維度劃分為第一階段和第二階段的CAM單元陣列。每個CAM子庫包括多個第一階段匹配線(ML)、多個第一階段搜索線(SL)對、多個第二階段ML、多個第二階段SL對。第一階段ML指示第一階段列分段是否有第一部分搜索關鍵字的匹配。每個第二階段SL對耦接至第二階段的一行CAM單元並由SL使能信號選通。當多個第一階段ML都沒有指示匹配時SL使能信號解除生效,從而阻止第二部分搜索關鍵字被提供至多個第二階段SL對。
Description
本發明涉及內容可定址記憶體(content addressable memory,CAM)設備的低功率設計。
內容可定址記憶體(content addressable memory,CAM)通常用於高速搜索應用中。CAM 設備將搜索關鍵字(search key)與存儲在 CAM 單元陣列(CAM cell array)的每一列中的資料進行比較,並返回匹配資料的位址。當使用在網路交換機中時,CAM 可以加快路由表查找(routing table lookup)和資料轉發(data forwarding)的操作。
在CAM設備中,每個CAM單元耦接到跨越相應列的匹配線(match line,ML)和跨越相應行的搜索線對(search line pair)(SL和SLB)。匹配線和搜索線消耗了整體動態功率的最主要部分;例如,高達80%的動態功率。CAM應用的一種常見情況是,當與搜索關鍵字(search key)進行比較時,大多數CAM列都未命中。在搜索之前,所有匹配線和所有搜索線對都被預充電。在搜索過程中,每個搜索線對(SL和SLB)根據搜索關鍵字的相應位元,被驅動到相反的邏輯狀態(即,一個邏輯高,另一個邏輯低)。因此,每個週期都切換SL和SLB之一。當CAM列與搜索關鍵字不匹配時,相應的匹配線將被放電(例如,放電至地電壓)。如果所有CAM列都不匹配,則所有匹配線在每個週期都會充電和放電,從而消耗最大功率。
因而,降低CAM功耗是降低網路交換機的晶片級整體動態功耗的關鍵。
有鑑於此,本發明提供了一種新穎的內容可定址記憶體(content addressable memory,CAM)設備以及操作方法。
在一個實施例中,提供了一種內容可定址記憶體(CAM)設備。該CAM設備包括多個CAM子庫。每個CAM子庫包括按列和行佈置的CAM單元的陣列,所述CAM單元的陣列沿行維度被劃分為第一階段和第二階段。每個CAM子庫還包括多個第一階段匹配線(ML),每個第一階段ML耦接到第一階段列分段的CAM單元並且指示是否在所述第一階段列分段中找到第一部分搜索關鍵字的匹配。每個 CAM 子庫還包括所述第一階段中的多個第一階段搜索線(SL)對,以及多個第二階段ML,其中每個第二階段ML耦接到第二階段列分段的CAM單元。每個CAM子庫還包括多個第二階段SL對,其中每個第二階段SL對耦接至第二階段中的一行CAM單元並由SL使能信號選通。每個CAM子庫還包括用於接收所述多個第一階段ML作為輸入的電路,並且當所述多個第一階段ML都沒有指示匹配時所述電路使得所述SL使能信號解除生效,其中SL使能信號的解除生效能夠阻止第二部分搜索關鍵字被提供至所述多個第二階段SL對。
在另一個實施例中,提供了一種CAM設備的操作方法,由CAM設備的每個CAM子庫執行。每個CAM子庫包括按列和行排行的CAM單元陣列,並且每個CAM子庫沿行維度被劃分為第一階段和第二階段。該方法包括以下步驟:將第一部分搜索關鍵字與第一階段列分段的CAM單元中存儲的資料進行比較;由每個第一階段 ML 指示是否在對應的第一階段列分段中找到對所述第一部分搜索關鍵字的匹配;基於所有第一階段ML的邏輯狀態產生SL使能信號,其中所述SL使能信號為多個第二階段SL對的選通信號,所述多個第二階段SL對耦接至所述第二階段中相應行的CAM單元;以及當所有第一階段ML都沒有指示匹配時,SL使能信號解除生效,其中所述SL使能信號的解除生效能夠阻止第二部分搜索關鍵字被提供至所述多個第二階段SL對。
本發明中通過子庫級(sub-bank level)動態選通搜索線(dynamically gated search lines)技術來降低功率,可以節省CAM設備的大量功率,從而提高設備的整體性能。
本發明的優點將在以下描述中詳細解釋。
在以下描述中,闡述了許多具體細節。然而,應當理解,可以在沒有這些具體細節的情況下實踐本發明的實施例。在其他情況下,為了不混淆對本發明的理解,沒有詳細示出眾所周知的電路、結構和技術。然而,本領域習知技藝者將理解,可以在沒有這些具體細節的情況下實踐本發明。本領域習知技藝者根據本發明的描述在無需過度實驗的情況下將能夠實現適當的功能。
本發明的實施例提供了一種超低功率的內容可定址記憶體(content addressable memory,CAM)設備。本文使用的術語“CAM”可以涵蓋不同類型的CAM,例如二進位CAM(binary CAM)、三進位CAM(ternary CAM, TCAM)、四進位CAM(quaternary CAM, QCAM)或其他類型的CAM。在一個實施例中,本文公開的CAM設備可以是片上系統(system-on-a-chip,SOC)的一部分,例如處理和/或通信設備(例如,網路設備)中的SOC。
在一種使用場景中,可以使用CAM設備來存儲查閱資料表,通過使用搜索關鍵字在該查閱資料表中搜索匹配條目。在查閱資料表中,可以按優先順序順序存儲一組規則(例如,存取控制(access control,ACL)規則或其他規則)。當多個條目與搜索關鍵字相匹配時,匹配條目的最高位址被輸出為匹配位址。相關規則(correlated rules)可以被程式設計為彼此相鄰並佔據查閱資料表中的相鄰條目。因此,如果給定條目與表示給定規則的搜索關鍵字相匹配,則附加匹配(如果有)很可能會出現在與給定條目相鄰存儲的相關規則中。例如,可以在優先順序比給定條目稍高或稍低的條目中找到附加匹配,因此附加匹配被存儲在給定條目附近。因此,搜索結果中經常存在空間局部性(spatial locality)的模式。這裡公開的子庫級(sub-bank level)動態選通搜索線(dynamically gated search lines)技術尋求利用CAM設備的可能匹配的空間局部性來降低功率。
本文公開的CAM設備可以包括任意數量的存儲庫(memory bank)並且每個存儲庫是按列和行佈置的CAM單元陣列。每個存儲庫可以沿列維度劃分為多個子庫。每個子庫還可以沿行維度進一步劃分為至少兩個階段(stage),其中僅當在同一子庫的第一階段中找到匹配時該子庫的第二階段才被啟動(即,啟用)用於搜索。在子庫級別有條件地啟用第二階段搜索。即,每個子庫可以獨立於其他子庫來啟用或禁用其第二階段搜索。子庫級別的啟用利用了上述空間局部性,因為經常在同一個子庫中找到匹配條目。其第一階段沒有匹配的子庫可以禁用第二階段的搜索。更具體地,根據第一階段的搜索結果動態地產生搜索使能信號,以選通第二階段中的搜索線。當由於第一階段中沒有匹配使得搜索使能信號被解除生效(de-asserted)(例如,為邏輯低)時,第二階段搜索線被禁止搜索並禁止上述切換(toggle)。因此,可以節省大量功率,從而提高設備的整體性能。
在以下描述中,術語“連接”、“耦接”和它們的派生詞用於表示兩個或多個元件可以直接物理接觸或不直接物理接觸,且在它們之間具有電連接。因此,下文中的術語“連接”和“耦接”分別等效於“電連接”和“電耦接”。
第1圖例示了根據一個實施例的CAM設備100。CAM設備100包括沿著列維度劃分為四個子庫(例如,子庫0、子庫1、子庫2和子庫3)的CAM庫101。可以理解的是,CAM設備100可以包括任意數量的CAM庫,並且每個CAM庫可以包括多個子庫,並不限於四個。CAM庫101具有C行CAM單元,C等於要與CAM單元中存儲的資料進行比較的搜索關鍵字的位數。在四個子庫的示例中,每個子庫具有R列和C行的CAM單元並且CAM庫101具有(4xR)列和C行。
在一個實施例中,每個子庫進一步沿著行維度劃分為多個階段;例如,第一階段110和第二階段120。第一階段110具有C1行並且第二階段120具有C2行,其中C1+C2=C。在對稱單元結構的一個實施例中,C1=C2;在不對稱單元結構的替代實施例中,C1和C2可以是不同的數值。具有非對稱單元結構的CAM庫101可以具有C1<C2。如下文將進一步詳細描述的,當在相同子庫的第一階段110中沒有發現匹配時,可以禁用第二階段120中的搜索線以節省功率。當第一階段 110 中的大多數搜索的結果都是不匹配時,具有較寬的第二階段(即,C1 < C2)可以比對稱單元結構(即,C1= C2)節省更多功率,因為較寬的第二階段包含更多的可能會被禁用的搜索線。然而,應當理解,這裡描述的動態選通搜索線技術適用於C1和C2的任何正整數值。
CAM設備100還包括搜索輸入寄存器170,其存儲要與存儲在CAM單元的列中的資料進行比較的搜索關鍵字。在第1圖的示例中,子庫中CAM 單元的每一列被劃分為第一階段列分段(row segment)和第二階段列分段。第一部分搜索關鍵字(例如,前 C1個位元)與存儲在第一階段列分段中的資料進行比較,第二部分搜索關鍵字(例如,後面的C2個位元)與存儲在第二階段列分段中的資料進行比較。經由耦接到子庫的驅動器,搜索關鍵字從搜索輸入寄存器170提供至每個子庫的CAM單元。
如將參考第3圖和第4圖詳細描述的,在子庫的兩個階段110和120中,每個 CAM 單元都耦接到匹配線 (ML) 和兩條互補搜索線(SL)(稱為搜索線對)。每個ML耦接到同一列分段中的所有CAM單元,並且每個SL對都耦接到同一行中的CAM單元。第一階段110中的ML被稱為第一階段ML(即,ML1),而第二階段120中的ML被稱為第二階段ML(即,ML2)。第一階段110中的SL對被稱為第一階段SL對(即,SL1和SLB1),而第二階段120中的SL對被稱為第二階段SL對(即,SL2和SLB2 )。
在第1圖的示例中,第一階段驅動器(例如,驅動器01、驅動器11、驅動器21或驅動器31)接收第一部分搜索關鍵字並根據第一部分搜索關鍵字的位元值驅動第一階段SL對。第二階段驅動器(例如,驅動器02、驅動器12、驅動器22或驅動器32)接收第二部分搜索關鍵字並根據第二部分搜索關鍵字的位元值驅動第二階段SL對。例如,如果搜索關鍵字位元值為1,則相應的SL可以被驅動為邏輯高並且SLB可以被驅動為邏輯低。根據本發明的實施例,當同一子庫的第一階段110使SL使能(SL_EN)信號生效(例如, 邏輯高)時,每個第二階段SL對被啟用且根據第二部分搜索關鍵字被驅動至相反邏輯電平。 當子庫的第一階段110使SL_EN 信號解除生效(例如,SL_EN 處於邏輯低電平)時,同一子庫的第二階段SL對被禁用並且在第二階段120中不執行比較操作。
第1圖進一步例示了在每對對應的第一階段110和第二階段120之間的控制電路150。在替代實施例中,控制電路150可以被放置在子庫中不同於第1圖中所示位置的其他位置中。此外,控制電路150的不同部分可以放置在子庫的不同或分開的位置。每個子庫的控制電路150包括為子庫生成SL_EN信號的電路元件等。
此外,CAM設備100包括位址解碼器160和匹配輸出電路180。位址解碼器160包括響應於從位址匯流排或其他電路接收到的位址,選擇CAM單元的對應列以進行讀取、寫入和/或其他操作的電路。當在CAM庫101中出現匹配時,匹配輸出電路180產生匹配信號,以指示包含匹配條目的列的索引。
在一些實施例中,子庫中的第一階段110和第二階段120中的每一個可以進一步劃分為多個CAM塊(例如,在該示例中,每個階段分為兩個CAM塊)。在第1圖中在每一階段中由虛線表示這種劃分。例如,子庫(Sub-Bank)0的第一階段110可以包括左CAM塊和右CAM塊,每個塊具有(C1/2)行和R列個CAM單元。在左CAM塊中左半列分段的CAM單元耦接到左ML,而在右CAM塊中對應的右半列分段耦接到右ML。左ML和右ML 上的信號被組合(例如,通過及閘)以生成該列分段的第一階段ML信號。子庫0的第二階段120可以類似地劃分為左右塊。應理解,子庫的每一階段可被劃分為具有任何塊寬度(即,行數)的任何數量的塊,這由電路設計決定。在以下描述中,當使用這種塊劃分時,術語“第一階段ML”和“第二階段ML”分別指的是第一階段和第二階段中的組合的左ML和右ML。
第2圖例示了根據另一個實施例CAM設備200,其中的CAM庫202被劃分為四個子庫。CAM設備200所執行的操作以及CAM庫202所產生的信號與CAM設備100和CAM庫101的相同。然而,CAM設備200中驅動器的佈置不同於CAM設備100中驅動器的佈置。更具體地說,在CAM設備100中,子庫0和子庫1的驅動器彼此緊鄰,子庫2和子庫3的驅動器也彼此緊鄰。在CAM設備200中,子庫1和子庫2的驅動器彼此緊鄰,而子庫0和子庫3的驅動器與其他驅動器分開。在替代實施例中,每個子庫中驅動器的佈置可以不同於第1圖和第2圖的示例。可以理解,所公開的動態選通搜索線的技術可以應用於CAM設備中的不同佈置的驅動器。
第3圖例示了根據一個實施例的子庫300的進一步細節。子庫300可以是第1圖和第2圖所示的子庫中的任何一個。子庫300包括第一階段110、第二階段120和第一階段預充電(pre-charge,PRCHG)電路361 、第二階段PRCHG電路362和使能產生電路380。第一階段110包括CAM單元陣列310,第二階段120包括CAM單元陣列320。為了簡單起見,在第一階段110和第二階段120中沒有示出所有的CAM單元列和CAM單元行。
每個CAM單元(310和320)位於一個列分段和行中。每個CAM單元耦接到匹配線(ML)和搜索線對(SL和SLB)。在子庫300內,每個第一階段ML(即,ML1)耦接到同一第一階段列分段中的所有CAM單元310,並且每個第二階段ML(即,ML2)耦接到同一第二階段列分段中的所有CAM單元320。每個第一階段SL對(SL1和SLB1)耦接到第一階段110的同一行中的所有CAM單元310,並且每個第二階段SL對(例如,SL2和SLB2)耦接到第二階段120的同一行中的所有CAM單元320。搜索關鍵字是分別輸入到第一階段110和第二階段120的資料D1_in和D2_in的組合。為了說明的目的,D2_in(k)代表輸入到第二階段120的一個搜索關鍵字位元。第一階段驅動器331和第二階段驅動器332根據相應的資料輸入值驅動相應的SL對。
第一階段PRCHG電路361、第二階段PRCHG電路362和使能產生電路380可以是第1圖和第2圖中的控制電路150的一部分,在替代實施例中,這些電路361、362、380的佈置可以與第3圖中所示的不同。為簡單起見,第3圖的示例中並未顯示所有時鐘信號。
對於第一階段110中的每個列分段,第一階段PRCHG電路361包括及閘(AND)365,其用於接收預充電(PRCHG)信號和特定列的有效位元(valid bit,VBIT)指示符。VBIT 指示符指示相應列中存儲的資料是否有效。VBIT指示符選通/控制第一階段ML的預充電。以最上面一列的分段為例,當VBIT(0)為邏輯高電平時,相應的第一階段ML(即,ML1(0))被預充電為邏輯高電平。如果第一部分搜索關鍵字與存儲在 CAM 單元 310 的最上面一列的分段中的資料匹配,則 ML1(0) 保持高電平並在下一個時鐘中通過相應的觸發器(flip-flop)傳送(例如,D觸發器352),以用作第二階段120中最上面一列的分段的ML使能信號(ML_EN(0))。替代實施例中在第一階段PRCHG 電路 361中可以不包括VBIT指示符。
對於第二階段120中的每個列分段,第二階段PRCHG電路362包括及閘366,以接收相應列分段的PRCHG信號和ML_EN信號。邏輯高狀態的ML_EN信號指示在第一階段110中對應列分段中的匹配。例如,ML_EN(0)使得在第二階段 120 中搜索第二部分搜索關鍵字之前,ML2(0)可以被預充電至邏輯高電平。
線或(wired-OR)電路370從第一階段110中所有R個列分段的ML1接收輸入並對所有ML1執行邏輯或運算。線或電路370的輸出在下一個時鐘中通過D觸發器372傳送,以作為第二階段120的SL使能(SL_EN)信號。注意,每個子庫根據該子庫的第一階段中的匹配結果,生成其自己的SL_EN。也就是說,SL_EN 是子庫級使能信號。生效的(例如,邏輯高)SL_EN信號使能第二階段120中的搜索(即,比較)操作。SL_EN信號是第二階段驅動器332的輸入處的選通信號。生效的SL_EN指示第一階段110的一個或多個列分段中存在匹配,並且使第二部分搜索關鍵字能夠向前傳送到第二階段SL對。第二階段驅動器332包括用於每個第二階段SL對的一對3-輸入及閘(例如,及閘381和382)。 及閘381接收SL_EN、時鐘信號CCLK和搜索關鍵字位元D2_in(k)作為輸入,及閘382接收SL_EN、時鐘信號CCLK和反相的(inverted)搜索關鍵字位元作為輸入。
第4圖示出了根據一個實施例的線或電路370的進一步細節。為了說明的簡單起見,在第一階段110和第二階段120中並未示出CAM單元的所有列和行。線或電路370包括R列開關375,R列開關375之後是反相器(inverter)376。開關375並聯連接,它們的所有輸出端彼此連接,所有輸入端接地。每個開關375的閘極端連接到同一列分段中的對應ML1。以頂部列分段為例,當在第一階段110的頂部列分段中發現匹配時,ML1(0)處於邏輯高狀態。相應的開關375接通,導致其輸出端被下拉至地。當任一開關375接通時,所有開關375的所有輸出端均被拉至邏輯低狀態(例如接地),且反相器376輸出具有邏輯高狀態(即,生效 SL_EN)的SL_EN信號。
因此,線或電路370對所有第一階段ML執行布林或運算。具有邏輯高ML1的一個或多個第一階段列分段使得線或電路370能使SL_EN生效。當第一階段列分段中都沒有邏輯高 ML1時(即,第一階段110中沒有匹配),SL_EN 被解除生效。輸入到第二階段120的搜索關鍵字由SL_EN和時鐘信號(CCLK)進行選通(gated)。因此,當在第一階段110中沒有匹配時,在第二階段120中不能執行搜索。
第4圖以虛線示出了子庫300中的一些時鐘信號連接。例如,線或電路370可以在輸入端(即,ML1)和輸出端(即,在反相器376處)處通過時鐘信號(DCLK)被選通。所有的D觸發器352可以由另一個時鐘信號(CK)進行選通。此外,第一階段驅動器331和第二階段驅動器332可以被另一個時鐘信號(CCLK)選通。可以理解,動態選通搜索線技術可以應用於使用不同時鐘信號的子庫。
第5圖是示出根據一個實施例的由CAM設備的子庫執行的過程500的流程圖。第1圖至第4圖中提供了子庫的一些示例。在步驟510,第一階段ML(例如,ML1)和第一階段SL對(例如,SL1和SLB1)被預充電(例如,至邏輯高)。在一些實施例中,預充電的ML1對應於有效的CAM列條目,如對應的VBIT指示符所指示的。在步驟520,第一階段驅動器根據第一部分搜索關鍵字將每個第一階段SL對驅動到相反的邏輯電平。例如,如果搜索關鍵字的第一位元是1,則第一行的SL1和SLB1可以分別被驅動到高邏輯狀態和低邏輯狀態。如果搜索關鍵字的第一位元為0,則第一行的SL1和SLB1可以分別被驅動到低邏輯狀態和高邏輯狀態。在步驟530,將第一部分搜索關鍵字與第一階段列分段中存儲的資料進行比較;例如,每個第一階段CAM單元將其存儲的值與相應 SL 對的邏輯電平進行比較。在步驟540,當對應的第一階段列分段是匹配的時,使該列分段的ML_EN生效(例如,邏輯高),或者當對應的第一階段列分段不匹配時,使該列分段的ML_EN解除生效(例如,邏輯低)。過程500進行到步驟550或步驟560。在步驟550,當所有第一階段列分段都沒有匹配時,SL_EN被解除生效(de-assert)(例如,邏輯低),並且在步驟555,第二階段SL對被禁用;因此,在子庫中沒有匹配。
當過程500進行到步驟560時,當一個或多個第一階段列分段具有匹配時,SL_EN生效 (例如,為邏輯高)。繼續到步驟570,對於由ML_EN使能的每個第二階段列分段,對應的第二階段ML(例如,ML2)被預充電到邏輯高。此外,所有的第二階段 SL 對(例如,SL2 和 SLB2)都預充電到邏輯高電平。在步驟580,根據第二部分搜索關鍵字的對應位元值,生效的SL_EN使得每個第二階段SL對被驅動到相反的邏輯狀態。在步驟590,將第二部分搜索關鍵字與由對應ML_EN使能的那些第二階段列分段中存儲的資料進行比較。在步驟595,輸出比較結果以指示匹配或不匹配。還可以輸出匹配條目的列索引。
第6圖是示出根據一個實施例的在子庫中動態選通搜索線的方法的流程圖。方法600可以由第1圖至第4圖所示的子庫執行。每個子庫包括按列和行佈置的 CAM 單元陣列。子庫沿行維度劃分為第一階段和第二階段。
在步驟610,將第一部分搜索關鍵字與子庫中第一階段列分段的CAM單元中存儲的資料進行比較。在步驟620,第一階段ML指示在對應的第一階段列分段中是否找到第一部分搜索關鍵字的匹配。在步驟630,基於所有第一階段ML的邏輯狀態產生SL_EN信號。SL_EN信號是第二階段SL對的選通信號,第二階段SL對耦接到第二階段中對應行的CAM單元。在步驟640,當第一階段ML都沒有指示匹配時,SL_EN信號被解除生效。SL_EN信號的解除生效阻止了將第二部分搜索關鍵字提供給第二階段SL對。
已經參考第1圖至第4圖的示例性實施例描述了第5圖和第6圖的流程圖的操作。然而,應當理解,第5圖和第6圖的流程圖的操作可以由除了參考第1圖至第4圖所討論的那些實施例之外的本發明實施例來執行,並且參考第1圖至第4圖所討論的實施例可以執行與參考這些流程圖所討論的操作所不同的操作。雖然第5圖和第6圖的流程圖示出了由本發明的某些實施例執行的特定操作順序,但應當理解,這種順序是示例性的(例如,替代實施例可以執行不同順序的操作、組合某些操作、重複某些操作等)。
雖然已經根據幾個實施例描述了本發明,但是本領域習知技藝者將認識到,本發明不限於所描述的實施例,並且可以在所附申請專利範圍的精神和範圍內進行修改和變更。因此,本發明被認為是說明性的而不是限制性的。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100, 200:CAM設備
101, 202:CAM庫
110:第一階段
120:第二階段
170:搜索輸入寄存器
01, 11, 21, 31, 02, 12, 22, 32:驅動器
150:控制電路
160:位址解碼器
180:匹配輸出電路
300:子庫
361:第一階段預充電電路
362:第二階段預充電電路
380:使能產生電路
310, 320:CAM單元陣列
331:第一階段驅動器
332:第二階段驅動器
365, 366, 381, 382:及閘
352, 372:D觸發器
370:線或電路
375:開關
376:反相器
500, 600:流程圖
510~595, 610~640:步驟
在附圖中通過示例而非限制的方式說明本發明,其中相同的附圖標記表示相同的元件。需要說明的是,本發明中“一”或“一個”實施例並不一定是指同一實施例,此類表述表示至少一個。此外,當結合實施例描述特定特徵、結構或特性時,無論是否進行了明確描述,都應當認為在本領域習知技藝者的知識範圍內可結合其他實施例來實施此類特徵、結構或特性。
第1圖例示了根據一個實施例的CAM設備。
第2圖例示了根據另一個實施例的CAM設備。
第3圖例示了根據一個實施例的CAM設備的子庫。
第4圖示出了根據一個實施例的線或電路。
第5圖是示出根據一個實施例的由CAM設備的子庫執行的過程的流程圖。
第6圖是示出根據一個實施例的用於子庫中的動態選通搜索線的方法的流程圖。
100:CAM設備
101:CAM庫
110:第一階段
120:第二階段
170:搜索輸入寄存器
01,11,21,31,02,12,22,32:驅動器
150:控制電路
160:位址解碼器
180:匹配輸出電路
Claims (19)
- 一種內容可定址記憶體(CAM)設備,包括: 多個CAM子庫,每個CAM子庫包括: 按列和行佈置的CAM單元的陣列,所述CAM單元的陣列沿行維度被劃分為第一階段和第二階段; 多個第一階段匹配線(ML),每個第一階段ML耦接到第一階段列分段的CAM單元並且指示是否在所述第一階段列分段中找到第一部分搜索關鍵字的匹配; 所述第一階段中的多個第一階段搜索線(SL)對; 多個第二階段ML,每個第二階段ML耦接到第二階段列分段的CAM單元; 多個第二階段SL對,其中每個第二階段SL對耦接至第二階段中的一行CAM單元並由SL使能信號選通;以及 用於接收所述多個第一階段ML作為輸入的電路,並且當所述多個第一階段ML都沒有指示匹配時所述電路使得所述SL使能信號解除生效,其中所述SL使能信號的解除生效能夠阻止第二部分搜索關鍵字被提供至所述多個第二階段SL對。
- 如請求項1之CAM設備,其中當一個或多個第一階段ML指示與所述第一部分搜索關鍵字的匹配時,所述SL使能信號生效。
- 如請求項1之CAM設備,其中所述電路包括線或電路,所述線或電路用於對所述多個第一階段ML執行邏輯或操作以產生所述SL使能信號。
- 如請求項1之CAM設備,其中,所述電路包括時鐘選通觸發器,所述時鐘選通觸發器接收用於指示所述第一階段列分段中的匹配的第一階段ML並且輸出ML使能信號以使能相應第二階段ML的預充電。
- 如請求項1之CAM設備,其中,每個CAM子庫都是CAM庫沿列維度劃分的所述多個CAM子庫的一部分。
- 如請求項1之CAM設備,其中每個CAM子庫產生對應的SL使能信號以指示在所述CAM子庫的對應第一階段中的匹配。
- 如請求項1之CAM設備,其中所述第一階段和所述第二階段包括相同行數的CAM單元,或者所述第一階段包括比所述第二階段更少行的CAM單元。
- 如請求項1之CAM設備,其中每個CAM單元為三進位CAM單元、二進位CAM單元或者四進位CAM單元。
- 如請求項1之CAM設備,其中每個第二階段SL對耦接到一對及閘,該對及閘包括接收所述SL使能信號、時鐘信號和第二部分搜索關鍵字位元輸入的第一及閘以及接收所述SL使能信號、所述時鐘信號和反相的第二部分搜索關鍵字位元輸入的第二及閘。
- 如請求項1之CAM設備,還包括: 輸出電路,用於指示搜索關鍵字與存儲在所述多個CAM子庫的一個或多個列中的資料之間的匹配,其中所述搜索關鍵字包括提供至所述第一階段的所述第一部分搜索關鍵字和提供至所述第二階段的所述第二部分搜索關鍵字。
- 一種CAM設備的操作方法,由所述CAM設備的多個CAM子庫中的每一個CAM子庫執行,每個CAM子庫包括按列和行佈置的CAM單元的陣列,所述方法包括: 將第一部分搜索關鍵字與第一階段列分段的CAM單元中存儲的資料進行比較,其中每個CAM子庫沿行維度被劃分為第一階段和第二階段; 由每個第一階段 ML 指示是否在對應的第一階段列分段中找到對所述第一部分搜索關鍵字的匹配; 基於所有第一階段ML的邏輯狀態產生SL使能信號,其中所述SL使能信號為多個第二階段SL對的選通信號,所述多個第二階段SL對耦接至所述第二階段中相應行的CAM單元;以及 當所有第一階段ML都沒有指示匹配時,所述SL使能信號解除生效,其中所述SL使能信號的解除生效能夠阻止第二部分搜索關鍵字被提供至所述多個第二階段SL對。
- 如請求項11之方法,還包括: 當一個或多個第一階段ML指示匹配時,所述SL使能信號生效。
- 如請求項11之方法,還包括: 當所述SL使能信號生效時,將所述第二部分搜索關鍵字與第二階段列分段的CAM單元中存儲的資料進行比較。
- 如請求項11之方法,還包括: 對所有第一階段ML執行邏輯或運算,以生成所述SL使能信號。
- 如請求項11之方法,還包括: 當對應的第一階段列分段中具有匹配時,產生ML使能信號以使能相應第二階段列分段的預充電。
- 如請求項11之方法,還包括: 當對應的有效位元指示符指示對應列的CAM單元的有效性時,對對應的第一階段ML進行預充電。
- 如請求項11之方法,還包括: 當發現搜索關鍵字與在所述多個CAM子庫的一個或多個列中存儲的資料相匹配時輸出匹配指示,其中所述搜索關鍵字包括提供至所述第一階段的所述第一部分搜索關鍵字和提供至所述第二階段的所述第二部分搜索關鍵字。
- 如請求項11之方法,其中每個CAM單元是三進位CAM單元、二進位CAM單元或者四進位CAM單元。
- 如請求項11之方法,其中每個CAM子庫都是CAM庫沿列維度劃分的所述多個CAM子庫的一部分。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163135038P | 2021-01-08 | 2021-01-08 | |
US63/135,038 | 2021-01-08 | ||
US17/522,214 US11967377B2 (en) | 2021-01-08 | 2021-11-09 | Dynamically gated search lines for low-power multi-stage content addressable memory |
US17/522,214 | 2021-11-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202228135A TW202228135A (zh) | 2022-07-16 |
TWI806334B true TWI806334B (zh) | 2023-06-21 |
Family
ID=79230717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111100217A TWI806334B (zh) | 2021-01-08 | 2022-01-04 | 內容可定址記憶體及其操作方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11967377B2 (zh) |
EP (1) | EP4027347B1 (zh) |
CN (1) | CN114758704A (zh) |
TW (1) | TWI806334B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2608009B (en) * | 2021-12-29 | 2023-08-09 | Univ Dalian Tech | Enhanced TL-TCAM lookup-table hardware search engine |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7692941B2 (en) * | 2008-08-25 | 2010-04-06 | Netlogic Microsystems, Inc. | Separate CAM core power supply for power saving |
US7848129B1 (en) * | 2008-11-20 | 2010-12-07 | Netlogic Microsystems, Inc. | Dynamically partitioned CAM array |
US8493763B1 (en) * | 2011-10-27 | 2013-07-23 | Netlogic Microsystems, Inc. | Self-timed match line cascading in a partitioned content addressable memory array |
US9063840B1 (en) * | 2009-08-21 | 2015-06-23 | Broadcom Corporation | Multiple match detection for multiple flows in a content addressable memory |
US9824757B2 (en) * | 2015-08-28 | 2017-11-21 | Renesas Electronics Corporation | Semiconductor device including TCAM cell arrays capable of skipping TCAM-cell search in response to control signal |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5373290A (en) * | 1991-09-25 | 1994-12-13 | Hewlett-Packard Corporation | Apparatus and method for managing multiple dictionaries in content addressable memory based data compression |
US6687785B1 (en) * | 2000-06-08 | 2004-02-03 | Netlogic Microsystems, Inc. | Method and apparatus for re-assigning priority in a partitioned content addressable memory device |
US6374326B1 (en) | 1999-10-25 | 2002-04-16 | Cisco Technology, Inc. | Multiple bank CAM architecture and method for performing concurrent lookup operations |
US7219188B1 (en) * | 2004-02-06 | 2007-05-15 | Netlogic Microsystems, Inc. | Segmented content addressable memory array and priority encoder |
US7242600B2 (en) | 2005-10-28 | 2007-07-10 | Qualcomm Incorporated | Circuit and method for subdividing a CAMRAM bank by controlling a virtual ground |
US7920399B1 (en) | 2010-10-21 | 2011-04-05 | Netlogic Microsystems, Inc. | Low power content addressable memory device having selectable cascaded array segments |
US8031501B1 (en) | 2010-10-21 | 2011-10-04 | Netlogic Microsystems, Inc. | Segmented content addressable memory device having pipelined compare operations |
US8467213B1 (en) * | 2011-03-22 | 2013-06-18 | Netlogic Microsystems, Inc. | Power limiting in a content search system |
US8787059B1 (en) * | 2011-12-05 | 2014-07-22 | Netlogic Microsystems, Inc. | Cascaded content addressable memory array having multiple row segment activation |
US8619451B1 (en) * | 2012-01-06 | 2013-12-31 | Netlogic Microsystems, Inc. | Power savings in a content addressable memory device using masked pre-compare operations |
US9306596B2 (en) * | 2014-06-27 | 2016-04-05 | Intel Corporation | Hybrid CAM assisted deflate decompression accelerator |
US10397263B2 (en) * | 2017-04-25 | 2019-08-27 | Futurewei Technologies, Inc. | Hierarchical pattern matching for deep packet analysis |
US10261487B1 (en) * | 2018-01-31 | 2019-04-16 | Hewlett Packard Enterprise Development Lp | Finite state machines |
US10453531B1 (en) * | 2018-06-29 | 2019-10-22 | Sandisk Technologies Llc | Content addressable memory using threshold-adjustable vertical transistors and methods of forming the same |
US10741585B2 (en) * | 2018-06-29 | 2020-08-11 | Sandisk Technologies Llc | Content addressable memory using threshold-adjustable vertical transistors and methods of forming the same |
US11264096B2 (en) * | 2019-05-14 | 2022-03-01 | Micron Technology, Inc. | Apparatuses, systems, and methods for a content addressable memory cell with latch and comparator circuits |
US11031079B1 (en) * | 2019-11-27 | 2021-06-08 | Flashsilicon Incorporation | Dynamic digital perceptron |
US11600320B2 (en) * | 2019-12-17 | 2023-03-07 | Flashsilicon Incorporation | Perpectual digital perceptron |
US11031080B1 (en) * | 2019-12-26 | 2021-06-08 | Micron Technology, Inc. | Architecture for fast content addressable memory search |
JP7376435B2 (ja) * | 2020-07-27 | 2023-11-08 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US11211111B1 (en) * | 2020-09-30 | 2021-12-28 | Arm Limited | CAM device with 3D CAM cells |
US11561607B2 (en) * | 2020-10-30 | 2023-01-24 | Hewlett Packard Enterprise Development Lp | Accelerating constrained, flexible, and optimizable rule look-ups in hardware |
-
2021
- 2021-11-09 US US17/522,214 patent/US11967377B2/en active Active
-
2022
- 2022-01-04 EP EP22150235.4A patent/EP4027347B1/en active Active
- 2022-01-04 TW TW111100217A patent/TWI806334B/zh active
- 2022-01-06 CN CN202210009979.3A patent/CN114758704A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7692941B2 (en) * | 2008-08-25 | 2010-04-06 | Netlogic Microsystems, Inc. | Separate CAM core power supply for power saving |
US7848129B1 (en) * | 2008-11-20 | 2010-12-07 | Netlogic Microsystems, Inc. | Dynamically partitioned CAM array |
US9063840B1 (en) * | 2009-08-21 | 2015-06-23 | Broadcom Corporation | Multiple match detection for multiple flows in a content addressable memory |
US8493763B1 (en) * | 2011-10-27 | 2013-07-23 | Netlogic Microsystems, Inc. | Self-timed match line cascading in a partitioned content addressable memory array |
US9824757B2 (en) * | 2015-08-28 | 2017-11-21 | Renesas Electronics Corporation | Semiconductor device including TCAM cell arrays capable of skipping TCAM-cell search in response to control signal |
Also Published As
Publication number | Publication date |
---|---|
EP4027347A1 (en) | 2022-07-13 |
EP4027347B1 (en) | 2024-03-06 |
CN114758704A (zh) | 2022-07-15 |
US11967377B2 (en) | 2024-04-23 |
US20220223207A1 (en) | 2022-07-14 |
TW202228135A (zh) | 2022-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7042748B2 (en) | Content addressable memory with cascaded array | |
US6243280B1 (en) | Selective match line pre-charging in a partitioned content addressable memory array | |
US7349231B2 (en) | Semiconductor memory device | |
US6597596B2 (en) | Content addressable memory having cascaded sub-entry architecture | |
US6901000B1 (en) | Content addressable memory with multi-ported compare and word length selection | |
WO2010138639A2 (en) | Longest prefix match internet protocol content addressable memories and related methods | |
Hussain et al. | Match-line division and control to reduce power dissipation in content addressable memory | |
WO2009032457A1 (en) | Low power ternary content-addressable memory (tcam) | |
US7924589B1 (en) | Row redundancy for content addressable memory having programmable interconnect structure | |
TWI806334B (zh) | 內容可定址記憶體及其操作方法 | |
US7113415B1 (en) | Match line pre-charging in a content addressable memory having configurable rows | |
US6972978B1 (en) | Content addressable memory (CAM) devices with block select and pipelined virtual sector look-up control and methods of operating same | |
US7426127B2 (en) | Full-rail, dual-supply global bitline accelerator CAM circuit | |
TWI713051B (zh) | 內容可定址記憶體裝置 | |
Chang | A high-performance and energy-efficient TCAM design for IP-address lookup | |
US6493790B1 (en) | Translation-lookaside buffer with current tracking reference circuit | |
US8493763B1 (en) | Self-timed match line cascading in a partitioned content addressable memory array | |
Cheng et al. | Low leakage mask vertical control TCAM for network router | |
Ali et al. | A comprehensive review of energy efficient content addressable memory circuits for network applications | |
US7667993B2 (en) | Dual-ported and-type match-line circuit for content-addressable memories | |
Jiang et al. | A fully parallel content addressable memory design using multi-bank structure | |
Hussain et al. | Pseudo-Static Master-Slave Match-Line Scheme for Sustainable-Performance and Energy-Efficient Content Addressable Memory | |
TWI777456B (zh) | 三態內容可定址記憶體設備及其操作方法 | |
Chang | Don't-care gating (DCG) TCAM design used in network routing table | |
Raju et al. | A low power content addressable memory with self-control mechanism and segmented matchlines |