TWI462101B - 具同時搜尋多資料流的內容可定址記憶體裝置及其運作方法 - Google Patents
具同時搜尋多資料流的內容可定址記憶體裝置及其運作方法 Download PDFInfo
- Publication number
- TWI462101B TWI462101B TW099121557A TW99121557A TWI462101B TW I462101 B TWI462101 B TW I462101B TW 099121557 A TW099121557 A TW 099121557A TW 99121557 A TW99121557 A TW 99121557A TW I462101 B TWI462101 B TW I462101B
- Authority
- TW
- Taiwan
- Prior art keywords
- matching
- data stream
- data
- addressable memory
- stream selection
- Prior art date
Links
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
Landscapes
- Logic Circuits (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
本發明為有關於一種內容可定址記憶體(CAM)裝置及其運作方法,特別是指能同時處理多資料流的內容可定址記憶體(CAM)裝置及其運作方法。
內容可定址記憶體(CAM)裝置是一種存儲裝置,其具有一個記憶體單元的陣列,可標示特定的模式來對一個輸入字串(例如,一個搜尋鍵值或一個比對字元)與存儲在該陣列的資料進行比較。整個內容可定址記憶體的陣列或其中一部分,可在平行搜尋中比對資料是否匹配。如果存在匹配,則內容可定址記憶體裝置透過確立一個匹配旗標(flag)顯示匹配狀態,並且可透過確立一個多匹配旗標確立存在多個匹配。典型的內容可定址記憶體裝置包含一個優先解碼器以決定高優先匹配位址(例如,最小匹配CAM索引)。高優先匹配(highest priority matching,HPM)位址(或稱高優先匹配索引、HPM索引)、匹配位置的內容及其他狀態資訊(例如,跳過位元、空位元、完整旗標、以及匹配與多匹配旗標)可從CAM裝置輸出至一個輸出匯流排。此外,聯想資料(associative data)可從一個聯想可定址儲存裝置(例如:動態隨機存取記憶體)讀出。
為了增加頻寬,必須使CAM裝置在同一時間處理多個資料流(例如,不同的輸入字串)。可實現使用具有多重比較CAM單元列的CAM陣列將多個輸入字串與同時儲存在其中的資料進行比對。一般的多重比較CAM陣列,其匹配結果與各多重比對作業相
關,同時提供單個優先解碼器以依序產生HPM索引。因為習知的優先解碼器產生HPM索引作為一優先的函數(例如,相對於未匹配資料,其匹配資料的實體位置),一個資料流的輸出匹配結果可根據儲存在CAM裝置的資料排列來支配其他資料流的輸出比對結果,舉例來說,假如第一資料流“F1”的輸入字串最頻繁地匹配高優先CAM資料,以及第二資料流“F2”的輸入字串最頻繁地匹配低優先CAM資料,則優先解碼器將最頻繁地回應第一資料流“F1”的匹配結果(即HPM索引),即使第二資料流“F2”也在相同的比較週期中具有匹配狀態。在此例中,第一資料流“F1”的匹配結果優先於第二資料流“F2”的匹配結果,因此,第二資料流的匹配結果的精確性容易受到第一資料流的匹配結果不公平地影響。事實上,在多資料流搜尋系統中,一個資料流的匹配結果優於其他資料流的匹配結果是不被接受的,各資料流須被視為同樣重要(例如,使用服務品質功能、正規表示搜尋、入侵偵測......等)。
有鑒於此,可透過為每一資料流提供單獨的優先編碼器以便在CAM裝置中同時比對。然而,因為優先編碼器是複雜的邏輯電路,具有邏輯閘的等級數值,在多資料流CAM裝置中為每一資料流提供單獨的優先編碼器,將增加CAM裝置的功率消耗及尺寸。
因此,CAM裝置需要一個敏感的資料流優先編碼方案,並確保公平分配多個資料流之間的匹配結果,而不需在每一資料流單獨配置一個優先編碼器。
有鑒於先前技術存在的問題,本發明遂揭露一種具同時搜尋多資料流的內容可定址記憶體裝置及其運作方法。
本發明所揭露之具同時搜尋多資料流的內容可定址記憶體裝置,其包含:CAM陣列、資料流選擇邏輯及優先編碼器。其中,CAM陣列包含多列內容可定址記憶體單元,每一列分別被設置為
同時將多個第一搜尋鍵值及多個第二搜尋鍵值與儲存在該列的資料進行比對以分別產生多個第一匹配結果及多個第二匹配結果;資料流選擇邏輯具有多個第一匹配輸入端自所有列接收第一匹配結果、多個第二匹配輸入端自所有列接收第二匹配結果、控制輸入端用以接收資料流選擇訊號、及多個輸出端;優先編碼器具有多個輸入端連接至與資料流選擇邏輯相應的多個輸出端,以及具有輸出端用以在回應匹配結果時產生高優先匹配索引。
除此之外,本發明所揭露之具同時搜尋多資料流的內容可定址記憶體裝置,亦可包含:CAM陣列、資料流選擇邏輯及優先編碼器。其中,CAM陣列包含多列多重比較內容可定址記憶體單元,每一列多重比較內容可定址記憶體單元被設置用以分別同時將不同資料流的多個第一搜尋鍵值及多個第二搜尋鍵值與儲存在該列的多重比較內容可定址記憶體單元的資料進行比對以產生多個第一匹配結果及多個第二匹配結果;資料流選擇邏輯具有多個匹配輸入端以自所有列接收第一匹配結果及第二匹配結果、控制輸入端接收一資料流選擇訊號、及多個輸出端;優先編碼器具有多個輸入端連接至資料流選擇邏輯的相應輸出端,以及具有輸出端根據回應的匹配訊號產生高優先匹配索引。
至於本發明之具同時搜尋多資料流的內容可定址記憶體裝置的運作方法,其步驟包括:同時將第一輸入資料流及第二輸入資料流與儲存在內容可定址記憶體裝置的CAM陣列中的資料進行比對;根據比對同時產生多個第一匹配結果及多個第二匹配結果;選擇第一輸入資料流;若第一輸入資料流具有匹配狀態,回應第一匹配結果至優先編碼器;若第一輸入資料流不具有匹配狀態,回應第二匹配結果至優先編碼器。
110‧‧‧CAM陣列
120‧‧‧位址解碼器
130A、130B‧‧‧比對暫存器
140‧‧‧讀/寫電路
150‧‧‧匹配邏輯
160‧‧‧可程式優先編碼邏輯
170‧‧‧優先編碼器
180‧‧‧資料流選擇邏輯
190‧‧‧可程式訊號產生器
200‧‧‧CAM陣列
205(1)~205(n)‧‧‧匹配線對
206(1)~206(m)‧‧‧比對線組
210、300‧‧‧CAM單元
211‧‧‧第一記憶體單元
212‧‧‧第二記憶體單元
213‧‧‧第一比對電路
214‧‧‧第二比對電路
301‧‧‧“X”記憶體單元
302‧‧‧“Y”記憶體單元
310‧‧‧比對電路
311~314‧‧‧電晶體
315、316‧‧‧比對子電路
317‧‧‧參考點
320‧‧‧比對電路
321~324‧‧‧電晶體
325、326‧‧‧比對子電路
327‧‧‧參考點
500‧‧‧比對電路
501‧‧‧電阻元件
502~504‧‧‧電晶體
505、506‧‧‧比對線
507‧‧‧匹配線
600‧‧‧資料流選擇邏輯
602(1)~602(n)‧‧‧資料流選擇電路
604‧‧‧匹配匯流排
700‧‧‧資料流選擇邏輯
701A1~701An‧‧‧電晶體
701B1~701Bn‧‧‧電晶體
702A1~702An‧‧‧電晶體
702B1~702Bn‧‧‧電晶體
703A1~703An‧‧‧第一及閘
703B1~703Bn‧‧‧第二及閘
704A、704B‧‧‧資料流匹配線
710(1)~710(n)‧‧‧資料流選擇電路
711A1~711An‧‧‧第一下拉閘極
711B1~711Bn‧‧‧第二下拉閘極
步驟801‧‧‧預充電資料流匹配線
步驟802‧‧‧比對儲存資料的第一及第二搜尋鍵值以產生第一及第二匹配結果
步驟803‧‧‧使用資料流選擇訊號選擇資料流之一
步驟804‧‧‧判斷是否匹配
步驟805‧‧‧轉送選擇資料流的匹配結果至優先編碼器
步驟806‧‧‧產生HPM索引
步驟807‧‧‧轉送未選擇資料流的匹配結果至優先編碼器
第1圖為本發明的內容可定址記憶體裝置之功能方塊圖。
第2圖為本發明第1圖的CAM陣列之簡化方塊圖。
第3圖為第2圖的CAM單元的實施例之示意圖。
第4圖為典型的資料編碼及遮罩位元(D及M)與X及Y位元組成一組四位元資料值,其可儲存在第3圖的CAM單元之示意圖。
第5圖為第3圖的CAM單元的比對電路之電路圖。
第6圖為第1圖的CAM裝置的資料流選擇邏輯之功能方塊圖。
第7圖為第6圖的資料流選擇邏輯之電路圖。
第8圖為第1圖的CAM裝置的典型的比對運作之流程圖。
以下將配合圖式及實施例來詳細說明本發明之實施方式,藉此對本發明如何應用技術手段來解決技術問題並達成技術功效的實現過程能充分理解並據以實施。
一種在CAM裝置中管理多搜尋運作的方法及裝置同時被揭露,在下列說明中,將解釋目的、提出特定術語以便充分了解本發明。然而,這是一種習知技術,其具體細節可能不在本發明中作贅述,在其他情況下,眾所皆知的電路和元件以方塊圖顯示以避免模糊本發明。除此之外,電路元件或方塊之間的相互連接可能顯示為匯流排或單一訊號線,各匯流排可選擇其一作為單一訊號線,各訊號線亦可組成一匯流排。另外,在下列描述中,邏輯等級(logic levels)分配至各訊號是任意的,且可根據需要進行修改(例如:將兩極顛倒)。因此,本發明並未限定在所述的個別例子中,而是必須以權利範圍中所定義的範圍為限。
本發明的具體實施例允許多個輸入資料流(例如,多個搜尋鍵值)以進行處理,同時使用一個可程式優先編碼方案來確保每一資料流的匹配結果平均產生(例如,回應給使用者),根據所述實施例,CAM裝置包含CAM陣列以連接至可程式優先編碼(Programmable Priority Encoding,PPE)邏輯電路,所述CAM陣列包含多個多重比對CAM單元,其可將與各輸入資料流相關的不同
輸入資料同時與儲存在CAM單元中的資料進行比對,以便產生相應的匹配結果並同時提供給PPE邏輯電路。此PPB邏輯電路接收來自CAM陣列的匹配結果,並且根據資料流選擇訊號(flow select signal,FSEL)選擇匹配結果,所述FSEL的訊號狀態可在連續比對作業中交替選擇資料流的匹配結果。在此方式中,即使選擇的資料流其HPM索引的優先權低於其他未選擇的資料流,仍然會產生及輸出選擇的資料流之匹配結果,因此無論匹配位置的優先權如何皆能確保公平分配匹配結果。
特別要說明的是,在一些實施例中,PPE邏輯電路包含資料流選擇邏輯及優先編碼器,所述資料流選擇邏輯包含多個第一匹配輸入端,用以自CAM陣列的所有列接收第一匹配結果、包含多個第二匹配輸入端,用以自CAM陣列的所有列接收第二匹配結果、包含一個控制輸入端用以接收FSEL訊號,以及包含多個輸出端。所述優先編碼器在一些實施例中可為一般的優先編碼器,包含多個輸入端連接至資料流選擇邏輯的相應輸入端,以及包含一個輸出端以根據匹配結果產生高優先匹配索引。所述資料流選擇邏輯根據FSEL訊號選擇轉送第一匹配結果或第二匹配結果至優先編碼器。
在具體實施上,當資料流選擇訊號在第一狀態時,假如至少一個第一匹配結果顯示為匹配狀態,則資料流選擇邏輯轉送第一匹配結果至優先編碼器,假如未有第一匹配結果顯示匹配狀態,則資料流選擇邏輯轉送第二匹配結果至優先編碼器。同樣地,當資料流選擇訊號在第二狀態時,假如至少一個第二匹配結果顯示為匹配狀態,則資料流選擇邏輯轉送第二匹配結果至優先編碼器,倘若未有第二匹配結果顯示匹配狀態,則資料流選擇邏輯轉送第一匹配結果至優先編碼器。在此方式中,倘若選擇的資料流沒有任何匹配結果,CAM裝置的吞吐量透過回應未選擇資料流的匹配結果而最大化。
請參閱「第1圖」,「第1圖」為本發明的內容可定址記憶體裝置之功能方塊圖,CAM裝置100包含:CAM陣列110、位址解碼器120、第一及第二的比對暫存器(130A、130B)、讀/寫電路140、匹配邏輯150及可程式優先編碼(PPE)邏輯160。一個或多個指令及相關的控制訊號可透過指令節碼器(圖中未示)提供CAM裝置100,以便控制CAM裝置100進行讀、寫、比對、初始化及其他操作。其他習知的訊號可提供CAM裝置100,如:致能(enable)訊號、時脈(clock)訊號及電源連接,在此不再對這些習知的訊號進行贅述及示意。
CAM陣列110包含多個列,每一列包含任意數量的多重比對CAM單元(「第1圖」中未示)以儲存相應CAM字元(word),在CAM陣列110中的每一列CAM單元經由相應的字元線(word line)“WL”連接至位址解碼器120,而且也透過相應的第一及第二匹配線“MLA”、“MLB”連接至可程式優先編碼邏輯160及匹配邏輯150。特別要說明的是,雖然在「第1圖」中未示意,但CAM陣列110的每一列CAM單元可包含一個或多個有效位元以顯示CAM單元的相應列(或其任意區段)是否儲存有效資料。此外,在一些實施例中,CAM裝置100包含習知的匹配閂鎖電路(圖中未示)以連接匹配線“ML”及可程式優先編碼邏輯160,以便在CAM裝置100於比對作業期間閂鎖(latch)產生的匹配結果。
在一些實施例中,CAM陣列110的列可分割成多個列區段,例如:減少每一列的電容負載及/或提供陣列多重寬度/深度配置。在此實施例中,CAM陣列110的列區段能夠可程式化以運作在不同寬度及深度的結構配置,並適應在所述不同長度的CAM字元,例如:在美國專利(U.S.Patent No.6,243,281)中所揭露的方式,以及結合文中之參考。
特別要說明的是,雖然為了簡化說明而在「第1圖」中未加以示意,但CAM陣列110可包含一個或多個冗餘列,以便在所述
CAM陣列110中,能夠替換有缺陷之CAM單元的列,例如:參考美國專利(U.S.6,275,426、U.S.6,249,467及/或U.S.6,865,098)所揭露之方式。
在CAM陣列110中的CAM單元的行(columns)透過第一組比對線“CLA”連接至第一個比對暫存器130A,以及透過第二組比對線“CLB”連接至第二個比對暫存器130B,並且透過位元線“BL”連接至讀/寫電路140。所述比對暫存器130A為習知,用以提供自比對匯流排(Comparand BUS,CBUS)至CAM陣列110所接收的第一搜尋鍵值(例如:第一比對字元),以及透過第一組比對線“CLA”得知儲存在CAM陣列110中的CAM字元以進行比對。同樣地,第二個比對暫存器130B也為習知,用以提供自CBUS至CAM陣列110接收的第二搜尋鍵值(例如:第二比對字元),以及透過第二組比對線“CLB”得知儲存在CAM陣列110中的CAM字元以進行比對。在另一實施例中,搜尋鍵值可透過分隔的匯流排來提供第一個比對暫存器130A及第二個比對暫存器130B。在其他實施例中,搜尋鍵值可透過另一匯流排及/或電路提供至CAM陣列110。
讀/寫電路140包含習知的寫入驅動(write drivers)以透過位元線“BL”寫入接收自資料匯流排(data bus,DBUS)的CAM字元到CAM陣列110,以及包含習知的感測放大器以透過位元線“BL”自CAM陣列110讀取CAM字元到DBUS。在實際實施上,讀/寫電路140亦可連接至DBUS以外的其他匯流排。
位址解碼器120為習知,其包含選擇CAM陣列110中的相應列之電路,用以根據接收自位址匯流排(Address BUS,ABUS)的位址,以及使用字元線“WL”來對CAM陣列110進行讀、寫及/或其他運作。在實際實施上,提供位址解碼器120的位址可來自適當的匯流排及/或電路。
第一匹配線“MLA”提供第一搜尋鍵值與CAM字元進行比
對作業後的匹配結果,所述第一搜尋鍵值(SK_A)由第一個比對暫存器130A提供,所述CAM字元儲存在CAM陣列110中,其匹配結果可提供至可程式優先編碼邏輯160及匹配邏輯150。第二匹配線“MLB”提供第二搜尋鍵值與CAM字元進行比對作業後的匹配結果,所述第二搜尋鍵值(SK_B)由第二個比對暫存器130B提供,所述CAM字元儲存在CAM陣列110中,其匹配結果可提供至可程式優先編碼邏輯160及匹配邏輯150。如上所述,CAM陣列110同時將第一搜尋鍵值及第二搜尋鍵值與儲存在CAM陣列110中的資料進行比對,以便同時在“MLA”及“MLB”分別產生第一匹配結果及第二匹配結果。
匹配邏輯150同樣為習知技術,使用顯示在匹配線上的匹配結果產生一個在CAM陣列110中所表示的匹配狀態之匹配旗標。假如在CAM陣列110中多於一個匹配輸入,則匹配邏輯150可產生多匹配旗標以顯示多匹配狀態,此外,當所有在CAM陣列110中的CAM單元的列均填滿有效輸入時,匹配邏輯150可使用來自CAM陣列110的有效位元確立一個滿的旗標(full flag)。
關於自CAM陣列110輸出的匹配結果,可程式優先編碼邏輯160決定匹配的輸入,其具有高優先數值及建立索引或高優先匹配(Highest Priority Match,HPM)的位址。除此之外,可程式優先編碼邏輯160可以使用來自CAM陣列110的有效位元(「第1圖」中未示),用以產生下一個閒置位址(next free address,NFA),其可利用在CAM陣列110以儲存新資料。在實際實施上,提供NFA作為一個輸入位址至位址解碼器120。
特別要說明的是,「第1圖」所示的可程式優先編碼邏輯160包含優先編碼器170、資料流選擇邏輯180及可程式訊號產生器190,其具有輸入端透過第一匹配線“MLA”及第二匹配線“MLB”接收來自CAM陣列110的匹配結果、輸出端產生HPM索引,以及控制輸入端接收模式訊號(MODE)。可程式訊號產生器
190接收MODE且視其情況產生資料流選擇訊號(FSEL)提供給資料流選擇邏輯180的控制輸入端。根據所述資料流選擇訊號,其資料流選擇邏輯180轉送“MLA”或“MLB”上的匹配結果其中之一(例如:資料流A或資料流B的匹配結果其中之一)至優先編碼器170。根據資料流選擇邏輯180轉送的匹配結果,優先編碼器170以習知的方式產生HPM索引。在實際實施上,優先編碼器170可以是任何常規的優先編碼器。
同時,優先編碼器170、資料流選擇邏輯180及可程式訊號產生器190確保在第一資料流“FA”及第二資料流“FB”期間,無論匹配輸入的實體位置為何,其輸出自CAM裝置100的匹配結果是公平地(例如:平均)分配。特別要說明的是,因為常規的優先編碼器,如:優先編碼器170,其產生HPM索引作為一個優先函數(例如:與未匹配資料相關的匹配資料之實體位置),一個資料流的輸出匹配結果依靠儲存在CAM裝置中的資料排列可以決定其他資料流的輸出匹配結果,此問題已於先前技術中提及,故在此不再多作贅述。為了減輕這個問題,資料流選擇邏輯180根據FSEL選擇轉送第一匹配結果或第二匹配結果至優先編碼器170。在此方式中,可程式訊號產生器190產生FSEL導致優先編碼器170在第一資料流“FA”及第二資料流“FB”之間交替索引產生優先權。
在實際實施上,MODE可設為任意狀態以供可程式優先編碼邏輯160選擇HPM索引產生模式,舉例來說,MODE可以設定為第一狀態,其導致可程式訊號產生器190在第一資料流及第二資料流連續比對期間交替FSEL的狀態。特別要說明的是,當FSEL在第一狀態時,若至少一個第一匹配結果顯示匹配狀態,則資料流選擇邏輯180轉送第一匹配結果至優先編碼器170,以及若未有第一匹配結果顯示匹配狀態,則轉送第二匹配結果至優先編碼器170。反之,當FSEL在第二狀態時,若至少一個第二匹配結果顯示匹配狀態,則資料流選擇邏輯180轉送第二匹配結果至優先編
碼器170,以及未有第二匹配結果顯示匹配狀態,則資料流選擇邏輯180轉送第一匹配結果至優先編碼器170。在此方式中,可程式優先編碼邏輯160確保資料流透過交替回應第一資料流“FA”及第二資料流“FB”的匹配結果而達到公平,以及在選擇的資料流不具有任何匹配狀態時,透過回應為未選擇的資料流之匹配結果達到最大的吞吐量(throughput)。
在另一個例子中,MODE可設定為第二狀態,其導致可程式訊號產生器190在全部N次的比對作業中,FSEL在第一資料流選擇狀態及第二資料流選擇狀態之間交替,其中,N是可選擇的整數。舉例來說,在此模式中,假設N為數值“3”,當可程式優先編碼邏輯160產生第一資料流“FA”的匹配結果有三次比對作業,則產生第二資料流“FB”的匹配結果時將使用下三次比對作業,之後再切換為第一資料流“FA”,並且以此類推。
在另一個例子中,MODE可設定為第三狀態,其導致可程式訊號產生器190根據資料流選擇交替FSEL的狀態,而先前產生的匹配結果則透過優先編碼器170處理。舉例來說,若可程式優先編碼邏輯160預先輸出第一資料流的匹配結果時常大於第二資料流,則可以控制FSEL在隨後選擇第二資料流進行比對作業直到可程式優先編碼邏輯160自每一資料流均具有相同數量的匹配結果為止。以交替為例,可切換選擇FSEL的狀態以便在第一資料流及第二資料流間達成預定比例的匹配結果。
如上所述,CAM陣列110將兩個搜尋鍵值與儲存在CAM陣列110中的資料同時進行比對以同時產生第一匹配結果及第二匹配結果。在實際實施上,在CAM陣列110中的每一多重比對CAM單元是四個一組的CAM單元,其具有一對記憶體單元能夠儲存兩位元(two-bit)資料值(以下稱為四個一組的資料),用以代表CAM單元的四個邏輯狀態之一:邏輯“0”、邏輯“1”、強制匹配(亦稱為“don’t care”狀態)及強制未匹配,四個邏輯狀態之一或更
多可能未使用在此實施例。透過提供四個一組的資料至多重比對CAM單元的多重比對電路代替互補二進制資料(complementary binary data),比對結果可能在每一CAM單元中產生(即本地產生),而無須在多重比對電路或CAM單元中的其他地方增加電晶體或其他元件。因此,四個一組的多重比對CAM單元可能小於一個多重比對CAM單元,因為單一個多重比對CAM單元包含額外電路組成以達成本地產生。如此一來,透過將數千或數百萬(或更多)的CAM單元包含在CAM裝置內部,其尺寸將成倍地減少,進而大大地減少整個CAM裝置的晶粒(die)尺寸。減少晶粒尺寸可能使更多的CAM裝置製造在一個半導體晶圓以降低製造成本。
請參閱「第2圖」,「第2圖」為本發明「第1圖」的CAM陣列之簡化方塊圖。CAM陣列200為包含多重比對CAM單元210的陣列,其排列成“n”列(rows)及“m”行(columns)(“n”及“m”為任意整數,包含相同數值)、一組“n”匹配線對205(1)~205(n)、以及一組“m”比對線組206(1)~206(m)。CAM單元210的每一列連接至一對相應的匹配線“MLA”及“MLB”,CAM單元210的每一行透過第一對互補的比對線“CLA/”連接至第一個比對暫存器130A,以及透過第二對互補的比對線“CLB/”連接至第二個比對暫存器130B。為了簡要說明,CAM陣列200的字元線及位元線在「第2圖」中未進行示意。
每一個CAM單元210包含兩個記憶體單元(第一記憶體單元211、第二記憶體單元212)及兩個比對電路(第一比對電路213、第二比對電路214),每一個比對電路(第一比對電路213、第二比對電路214)連接各記憶體單元(第一記憶體單元211、第二記憶體單元212)以接收資料值,並分別連接成為匹配線對205(1)~205(n)的匹配線“MLA”及“MLB”其中之一,且分別連接成為比對線組206(1)~206(m)的第一對互補的比對線“CLA/”及第二對互補的比對線“CLB/”其中之一。特別要說明的是,在每一
個CAM單元210中,第一比對電路213連接至第一記憶體單元211以接收第一資料值,以及連接至第二記憶體單元212以接收第二資料值,並且連接至第一匹配線“MLA”及第一對互補的比對線“CLA/”。第二比對電路214分別連接至各記憶體單元_第一記憶體單元211、第二記憶體單元212以接收第一資料值及第二資料值,並且連接至第二匹配線“MLB”及第二對互補的比對線“CLB/”。在此方式中,每一個CAM單元210能夠將儲存在記憶體單元_第一記憶體單元211、第二記憶體單元212中的四個一組的資料與第一搜尋鍵值及第二搜尋鍵值同時進行比對,以便在“MLA”上產生第一匹配結果,以及在“MLB”上產生第二匹配結果。
在實際實施上,每一個第一對互補的比對線“CLA/”連接至第一個比對暫存器130A,並且提供代表第一搜尋鍵值的各資料位元的一對互補比對訊號到CAM單元210的相應行。同樣地,第二互補比對線“CLB/”連接至第二個比對暫存器130B,並且提供代表第二搜尋鍵值的各資料位元的一對互補比對訊號到CAM單元210的相應行。
在一個替代的實施例中,單一端比對訊號可能傳送到CAM單元的行,使得兩個比對線可能被作為比對線組206(1)~206(m),而不是如「第2圖」所示意的每組具有四條比對線。而在管線(pipelined)系統中,單個比對暫存器可在不同時間中被使用於驅動訊號至第一對互補的比對線及第二對互補的比對線。甚至在一些實施例中,比對暫存器可完全省略,透過外部介面所接收的比對資料訊號直接由第一對互補的比對線及第二對互補的比對線來驅動(兩者同時或以時脈多工的形式)。雖然比對訊號在文中提及互補的比對線對上通稱為互補比對訊號,但互補比對線對的兩個比對線可能是驅動相同的邏輯狀態(例如:低準位或高準位),舉例來說,在CAM陣列200全部的行中進行遮罩(mask)比對作業。
接著,同樣請參考「第2圖」,記憶體單元(第一記憶體單元211、第二記憶體單元212)可能是任何類型的揮發性(volatile)和非揮發性(non-volatile)記憶體單元,包括但不限於靜態隨機存取記憶體(Static Random Access Memory,SRAM)單元、負微分電阻元件(Negative Differential Resistance,NDR)裝置、動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)單元、可程式唯讀記憶體(Programmable Read-Only Memory,PROM)單元、電可擦除可程式唯讀記憶體electrically erasable PROM(EEPROM)單元及快閃記憶體(Flash memory)單元。此外,每一個比對電路(第一比對電路213、第二比對電路214)可以是任何類型的比對電路,其可將儲存在記憶體單元(第一記憶體單元211、第二記憶體單元212)的資料值與透過相應的互補比對線對所傳送的比對資料進行比對。
每一個CAM單元210可以進行擴展,並透過在CAM陣列200中增加比對電路、比對線、匹配線以便同時執行多個比對作業,舉例來說,同時執行三個比對作業可透過在每一個CAM單元210中增加一個第三匹配線連接第三比對電路(圖中未示),如同比對電路(第一比對電路213、第二比對電路214),第三比對電路連接至記憶體單元(第一記憶體單元211、第二記憶體單元212)以接收資料,並且可透過第三組比對線連接至第三個比對暫存器以接收第三個比對資料。
如「第3圖」所示,「第3圖」為「第2圖」的CAM單元的實施例之示意圖。CAM單元300包含一對記憶體單元(301及302)以分別儲存四個一組之資料的組成位元“X”及“Y”,並且稱之為“X”記憶體單元301及“Y”記憶體單元302。字元線“WL”連接至“X”記憶體單元301及“Y”記憶體單元302,當啟動時能夠透過各個位元線對“BLX/”及“BLY/”_分別稱之為“X位元線”及“Y位元線”讀/寫存取“X”記憶體單元301及“Y”記憶體單元302。第一及第二匹配線“MLA”、“MLB”
連接至CAM單元300且用以在CAM單元中顯示比對作業的結果。在「第3圖」的實施例中,每一個匹配線“MLA”、“MLB”最初預先充電成高準位_例如:透過預充或上拉電路,圖中未示,並且透過CAM單元300放電_即下拉至低準位顯示未匹配,倘若CAM單元30沒有發現未匹配_或是其他CAM單元300連接至匹配線,則匹配線“MLA”、“MLB”保持在高準位以顯示為匹配。在其他實施例中,其他匹配線配置及匹配訊號狀態將在稍後作說明。
CAM單元300也包含兩個比對電路(310、320),每一個比對電路連接至記憶體單元(301、302)以接收儲存在其中的四個一組的資料值,並且分別連接匹配線“MLA”、“MLB”其中之一。比對電路(310、320)也各自連接至比對線對“CLA/”及“CLB/”以接收各互補成對的比對訊號_即“C1”與“”,“C2”與“”,透過此一設置方式,CAM單元300能夠在兩個比對電路中同時執行或以管線方式進行比對作業,並因此構成一個雙比對CAM單元。增加比對電路_連接至額外的匹配線及比對線對可作為CAM單元300的另一實施例,如此一來,CAM單元300能夠同時處理大於兩個的比對或大於兩個的管線比對作業。
在「第3圖」中,比對電路310包含一對比對子電路(315、316)以並聯方式相互連接參考點317(在這個例子中,有一接地端點,儘管其他參考電壓可能使用)及“MLA”,且比對電路320同樣包含一對比對子電路(325、326)以並聯方式相互連接參考點327及匹配線“MLB”,至於具體的比對電路310,其比對子電路315包含電晶體(311、312)且以串聯連接至“MLA”及參考點317,而比對電路316包含電晶體(313、314)並以串聯連接至“MLA”及參考點317。在比對電路320中,比對子電路325包含電晶體(321、322)且以串聯連接至“MLB”及參考點327,而比對電路326包含
電晶體(323、324)並以串聯連接至“MLB”及參考點327。電晶體(312、322)的控制端(即此例中的MOS電晶體之閘極)連接至“X”記憶體單元301且根據四個一組的資料值之“X位元”的狀態切換為開(on)或關(off),而電晶體(314、324)的控制端連接至“Y”記憶體單元302且根據四個一組的資料值之“Y位元”的狀態切換為開或關。電晶體(313、311)分別連接比對線CLA及且根據當前在比對線CLA及上的比對訊號“C1”及“”切換為開或關,電晶體_323、321同樣分別連接至比對線CLB及且根據當前在比對線CLB及上的比對訊號“C2”與“”切換為開或關。
請參閱「第4圖」,「第4圖」為典型的資料編碼及遮罩位元(D及M)與X及Y位元組成一組四位元資料值,其可儲存在「第3圖」的CAM單元之示意圖。在傳統的三元CAM裝置中,資料位元及遮罩位元儲存在每一個CAM單元中,資料位元包含比對後存入的比對資料及遮罩位元,當遮罩狀態設定後,防止未匹配狀態(即資料位元與比對訊號未匹配)來自匹配線上已存在的訊號。如「第4圖」所示意的編碼,當遮罩位元“M”為邏輯“0”(即未遮罩狀態),“X”位元具有與位元“D”相同的狀態,且“Y”位元為“X”位元的互補,亦即「當M=0,則X=D且Y==」,相較之下,當遮罩位元為邏輯“1”表示在CAM單元中存在未匹配,因此“X”位元及“Y”位元設為“0”,資料位元的狀態則不作任何處理。在「第4圖」中的編碼,當“XY=01”_即X=D=0且Y==1,則四個一組的資料值在邏輯“0”狀態;當“XY=10”_即X=D=1且Y==0,則四個一組的資料值在邏輯“1”狀態;以及當“XY=00”_即M=1且D=0 or 1,則為強制匹配狀態。此編碼簡化為布林表示為:「X=D*and Y=*」,其中,符號“*”代表邏輯“AND”函數。特別要說明的是,其具有強制未匹配狀態“XY=11”也可以在CAM單元300中強制儲存未匹配顯示,有關
強制未匹配的處理以及強制未匹配狀態的儲存將在稍後作說明。
再次參考「第3圖」特別是比對電路310,其可看出倘若四個一組的資料值儲存在“X”單元及“Y”單元為邏輯“0”或“1”狀態(即XY=01或XY=10),且比對值“C1”是在相反的狀態,那麼一個或其他的比對子電路(315、316)將在匹配線“MLA”及參考點317之間建立一路徑(path)以顯示未匹配狀態。舉例來說,倘若四個一組的資料值為邏輯“0”(XY=01)且“C1”為邏輯“1”,那麼電晶體314將透過儲存在“Y”記憶體單元302的“1”切換為開,以及電晶體313將透過“C1”的高準位狀態切換為開,從而建立一個介於匹配線“MLA”及參考點317的路徑以顯示未匹配狀態。反之,若四個一組的資料值為邏輯“1”(XY=10)且“C1”為邏輯“0””,那麼電晶體312將透過儲存在“X”記憶體單元301的“1”切換為開,以及電晶體311將透過“”的高準位狀態切換為開,從而建立一個介於匹配線“MLA”及參考點317的路徑以信號通知未匹配狀態。
倘若四個一組的資料值具有與“C1”相同的狀態,那麼比對子電路(315、316)中的至少一電晶體將切換為關,也就是說,倘若四個一組的資料值與比對值匹配,兩個比對子電路(315、316)將不在匹配線“MLA””及參考點317之間建立路徑以顯示匹配狀態。同樣地,倘若四個一組的資料值在強制匹配狀態(XY=00),兩個比對子電路(315、316)切換為未傳導狀態(因為電晶體312及電晶體314切換為關),“C1”的狀態不予理會,預防任一比對子電路(315、316)來自建立介於匹配線“MLA”及參考點317的路徑,並且因此強制比對電路310以信號通知匹配狀態。倘若四個一組的資料值在強制未匹配狀態(XY=11)時,那麼至少一個比對子電路(315、316)保證根據在比對線(396、398)上的不同比對訊號切換為傳導狀態,從而強制比對電路310以信號通知未匹配狀態,“C1”的狀態不予理會。如上所述,強制未匹配狀態可用於任何用途(例
如:分別測試CAM陣列及匹配偵測邏輯、CAM陣列的無效列...等等)。
請參閱「第5圖」,「第5圖」為「第3圖」的CAM單元的比對電路之電路圖。比對電路500包含三個電晶體(502、503及504),電晶體504連接在匹配線“ML”及參考電壓(在本例中為接地)之間,且具有閘端(gate terminal)連接至電晶體502及電晶體503的源端(source terminal)。電晶體502的汲端(Drain terminal)連接比對線505,而閘端則連接四個一組的資料值之“X”位元,電晶體503的汲極連接比對線506,而閘端則連接四個一組的資料值之“Y”位元。倘若四個一組的資料值“XY”與當前比對線505及比對線506上的不同比對值(C及未匹配,則為「X=1且=1」或「Y=1且C=1」兩者其一。在第一種未匹配情況_X=1,=1,電晶體502透過高準位的“X”位元切換為開,以便互補的比對訊號“”傳導至電晶體504的閘端,進而將電晶體504切換為開,並因此建立介於匹配線507及接地之間的路徑以信號通知未匹配。在第二種未匹配的情況_Y=1,C=1,電晶體503透過高準位的“Y”位元切換為開,以便高準位狀態的比對訊號“C”傳導至電晶體504的閘端,進而將電晶體504切換為開以信號通知未匹配狀態。假如四個一組的資料值與不同比對值未匹配,那麼低準位訊號將用在任一個電晶體_502、503的汲端透過四個一組的資料值切換為開。因此,電晶體504將不會切換成開以建立介於匹配線507及接地的路徑_即比對電路500將發出匹配狀態的信號。在另一個實施例中,資料及比對輸入端可能透過四個一組的資料值之“X”位元及“Y”位元作用於電晶體_502、503的汲端以進行交換,並且將互補的比對訊號用於電晶體_502、503的閘端。
同樣參考「第5圖」,當四個一組的資料值在強制匹配狀態(XY=00),兩個電晶體(502、503)切換為關,用以隔離電晶體504的閘端。如此一來,電晶體504將不會切換為開,且不會建立介
於匹配線507及接地間的路徑。因此,當四個一組的資料值在強制匹配狀態時,透過比對電路500顯示匹配狀態,不管比對資料的狀態為何。反之,當四個一組的資料值在強制未匹配狀態(XY=11),兩個電晶體(502、503)切換為開,從而保證電晶體504將切換為開,由比對線(505、506)上的一對互補的訊號建立介於匹配線507及接地間的路徑(發出未匹配訊號)。特別要說明的是,電阻元件501,如:洩漏電阻(bleed resistor)或相似結構,可連接介於電晶體504的閘端及接地間以防止電晶體502及電晶體503切換為關時,電晶體504的閘端浮接(floating)。
有關四個一組的CAM單元之更詳細的描述,請參考美國專利(U.S.Patent No 6,856,527)文中的揭露。
如「第6圖」所示意,「第6圖」為「第1圖」的CAM裝置的資料流選擇邏輯之功能方塊圖。資料流選擇邏輯600包含多個資料流選擇電路602(1)~602(n)及匹配匯流排(MBUS)604,其匹配匯流排(MBUS)604延伸穿越CAM陣列110的所有列(「第6圖」中未示),並包含輸入端連接至每一列的匹配線“MLA”及“MLB”,以及包含輸出端連接至各資料流選擇電路602(1)~602(n)的第一輸入端。每一資料流選擇電路602(1)~602(n)包含第二輸入端連接至CAM陣列110相應列的匹配線“MLA”及“MLB”,以及包含控制輸入端接收資料流選擇訊號“FSEL”,並且包含輸出端連接優先編碼器170(「第6圖」中未示)的相應輸入端。
請同時參考「第1圖」,由於比對作業期間,第一搜尋鍵值及第二搜尋鍵值同時與儲存在CAM陣列110中的資料進行比對,用以分別在“MLA”及“MLB”上產生第一匹配結果及第二匹配結果,所述第一匹配結果及第二匹配結果分別經由“MLA”及“MLB”提供至匹配匯流排604及相應的資料流選擇電路602(1)~602(n),對於“MLA1~MLAn”的第一匹配結果,匹配匯流排
604將其提供至所有資料流選擇電路602(1)~602(n),第一資料流匹配訊號“MAT_FA”顯示第一資料流“FA”是否為匹配。同樣地,對於“MLB1~MLBn”的第一匹配結果,匹配匯流排604將其提供至所有資料流選擇電路602(1)~602(n),第二資料流匹配訊號‘‘MAT_FB”顯示第二資料流“FB”是否為匹配。然後,根據資料流選擇訊號“FSEL”及資料流匹配訊號(“MAT_FA”及“MAT_FB”),資料流選擇電路602(1)~602(n)決定是否轉送第一匹配結果或第二匹配結果至優先編碼器170。
舉例來說,假設切換“FSEL”狀態(例如:透過可程式訊號產生器190)用以在第一資料流“FA”及第二資料流“FB”間作選擇,用於交替比對作業週期,倘若選擇的資料流具有匹配狀態,則資料流選擇電路602(1)~602(n)轉送選擇的資料流之匹配結果到優先編碼器170,並且用別的方式轉送未選擇的資料流之匹配結果至優先編碼器170。特別要說明的是,當“FSEL”在第一狀態選擇第一資料流“FA”,若至少一個第一匹配結果顯示匹配狀態,則資料流選擇電路602(1)~602(n)轉送第一匹配結果至優先編碼器170,但若沒有第一匹配結果顯示匹配狀態,則轉送第二匹配結果至優先編碼器170。反之,當“FSEL”在第二狀態選擇第二資料流“FB”,若至少一個第二匹配結果顯示匹配狀態,則資料流選擇電路602(1)~602(n)轉送第二匹配結果至優先編碼器170,但若沒有第二匹配結果顯示匹配狀態,則轉送第一匹配結果至優先編碼器170。在此方式中,資料流選擇邏輯600保證交替回應第一資料流“FA”及第二資料流“FB”的匹配結果是公平的,並且在選擇的資料流未具有任何匹配狀態時,回應未選擇的資料流之匹配結果達到最大的吞吐量。
另外要注意的是,每一資料流選擇電路602(1)~602(n)透過雙向訊號線連接至匹配匯流排604,以方便匹配匯流排604及資料流選擇電路602(1)~602(n)間的控制訊息“CTR”的交換。
在其他實施例中,匹配匯流排604可以排除,導致資料流選擇電路602(1)~602(n)只轉送選擇的資料流之匹配結果至優先編碼器170。
請參考「第7圖」,「第7圖」為「第6圖」的資料流選擇邏輯之電路圖。資料流選擇邏輯700包含資料流匹配線(704A、704B)及資料流選擇電路710(1)~710(n)。資料流匹配線(704A、704B)共同形成「第6圖」所述的匹配匯流排604,延伸穿越CAM陣列(「第7圖」中未示)的所有列,並且分別經由預充電電晶體“MPA”及“MPB”連接至供應電壓VDD
。在「第6圖」的實施例中,其“FSEL”訊號表示為兩個獨立的資料流選擇訊號“FSEL_A”及“FSEL_B”,其中“FSEL_A”及“FSEL_B”共同產生不同的資料流選擇訊號以選擇資料流“FA”及“FB”其中之一來優先匹配回應。舉例來說,選擇第一資料流“FA”,“FSEL_A”為斷言(asserted)(例如:高準位)、“FSEL_B”為取消斷言(de-asserted)(例如:低準位)。反之,選擇第二資料流“FB”,“FSEL_A”為取消斷言(de-asserted)(例如:低準位)、“FSEL_B”為斷言(asserted)(例如:高準位)。
資料流選擇電路710(1)~710(n)為「第6圖」的資料流選擇電路602(1)~602(n),每一資料流選擇電路710(1)~710(n)連接CAM陣列的相應列(或稱為相應CAM列)之匹配線“MLA”及“MLB”、資料流選擇訊號“FSEL_A”及“FSEL_B”、以及透過相應匹配線“MAT”連接優先編碼器170(「第7圖」中未示)。特別要說明的是,每一資料流選擇電路710(1)~710(n)包含第一下拉閘極711A1~711An、第二下拉閘極711B1~711Bn、第一及閘703A1~703An及第二及閘703B1~703Bn。第一下拉閘極711A1~711An是由介於第一資料流匹配線704A及接地之間的串聯NMOS下拉電晶體(701A1~701An、702A1~702An)所組成,電晶體701A1~701An的閘端連接至CAM陣列的相應列之第一匹配線
“MLA”,且電晶體702A1~702An的閘端連接至第一資料流選擇訊號“FSEL_A”。第二下拉閘極711B1~711Bn是由介於第二資料流匹配線704B及接地之間的串聯NMOS下拉電晶體(701B1~701Bn、702B1~702Bn)所組成,電晶體701B的閘端連接至相應CAM列之第二匹配線“MLB”,且電晶體702B1~702Bn的閘端連接至第二資料流選擇訊號“FSEL_B”。第一及閘703A1~703An包含輸入端連接至相應CAM列的第一匹配線“MLA”以及接收來自於第二資料流匹配線704B的閘極資料流匹配訊號“MAT_GFB”,且包含輸出端選擇轉送其中一列匹配結果至優先編碼器170作為“MATA”。第二及閘703B1~703Bn包含輸入端連接至相應CAM列的第二匹配線“MLB”以及接收來自於第一資料流匹配線704A的閘極資料流匹配訊號“MAT_GFA”,且包含輸出端選擇轉送其中一列匹配結果至優先編碼器170作為“MATB”。
第一下拉閘極711A1~711An保證當第一資料流“FA”被選擇時,若“FA”有匹配狀態,則“FA”的匹配結果被轉送至優先編碼器170。同樣地,第二下拉閘極711B1~711Bn保證當第二資料流“FB”被選擇時,若“FB”有匹配狀態,則“FB”的匹配結果被轉送至優先編碼器170。
舉例來說,當第一資料流“FA”被選擇,“FSEL_A”為斷言(asserted)且“FSEL_B”為取消斷言(de-asserted),則“FSEL_A”的斷言狀態開啟電晶體702A1~702An,從而致能第一下拉閘極711A1~711An以根據第一資料流“FA”的匹配結果選擇對第一資料流匹配線704A放電。“FSEL_B”的低準位狀態關閉電晶體702B1~702Bn,從而禁能(disabling)第二下拉閘極711B1~711Bn從第二資料流匹配線704B放電,而與第二資料流“FB”的匹配結果無關。所以,在第二資料流匹配線704B的第二閘極資料流匹配訊號“MATB”維持在高準位的狀態,從而致能第一及閘703A1
~703An以分別在匹配線“MLA1~MLAn”上轉送第一匹配結果至優先編碼器170分別作為匹配訊號“MATA1~MATAn”。
倘若“FA”有匹配狀態,透過在任一匹配線“MLA1~MLAn”上的高準位匹配訊號作為標示,此時相應的NMOS電晶體701A1~701An開啟且將第一資料流匹配線704A拉至低準位狀態(例如:至接地電位)。在資料流匹配線704A上“MAT_GFA”成為低準位狀態,其顯示第一資料流“FA”有匹配狀態,強制第二及閘703B1~703Bn的輸出端為低準位,從而防止第二及閘703B1~703Bn分別在第二匹配線“MLB1~MLBn”上轉送第二匹配結果至優先編碼器170以分別作為匹配訊號“MATA1~MATAn”。因為,第一及閘703A1~703An為致能(例如:透過“MAT_GFB”的高準位狀態),第一資料流“FA”的匹配結果將透過第一及閘703A1~703An被轉送至優先編碼器170作為匹配訊號“MATA1~MATAn”。
假如“FA”沒有匹配狀態,透過在任一匹配線“MLA1~MLAn”上缺乏高準位匹配訊號作為標示,沒有NMOS電晶體701A1~701An開啟,且第一資料流匹配線704A維持預充電的高準位狀態。在資料流匹配線704A上“MAT_GFA”成為高準位狀態,其顯示第一資料流“FA”為未匹配狀態,致能第二及閘703B1~703Bn以分別在匹配線“MLB1~MLBn”上轉送第二匹配結果至優先編碼器170分別作為匹配訊號“MATB1~MATBn”。
反之,當第二資料流“FB”被選擇,“FSEL_A”為取消斷言(de-asserted)且“FSEL_B”為斷言(asserted),則“FSEL_B”的斷言狀態開啟電晶體702B1~702Bn,從而致能第二下拉閘極711B1~711Bn以根據第二資料流“FB”的匹配結果選擇對第二資料流匹配線704B放電。“FSEL_A”的低準位狀態關閉電晶體702A1~702An,從而禁能(disabling)第一下拉閘極711A1~711An從第一資料流匹配線704A放電,而與第一資料流“FA”的匹配結果
無關。所以,在第一資料流匹配線704A的第二閘極資料流匹配訊號“MATA”維持在高準位的狀態,從而致能第二及閘703B1~703Bn以分別在匹配線“MLB1~MLBn”上轉送第二匹配結果至優先編碼器170分別作為匹配訊號“MATB1~MATBn”。之後,資料流選擇邏輯700轉送第二匹配結果至優先編碼器170有如第二資料流為匹配狀態,其相似的方式已於上述選擇第一資料流“FA”的描述中作說明。
最後,請參閱「第8圖」,「第8圖」為「第1圖」的CAM裝置的典型的比對運作之流程圖。其步驟包括:預先比對作業,預充電時脈訊號“PCLK”為斷言(例如:成為低準位),以分別經由PMOS預充電電晶體“MPA”及“MPB”預充電資料流匹配線704A、704B至高準位“VDD
”(步驟801);接著,在比對作業期間,CAM陣列110分別同時產生“FA”的第一匹配訊號及“FB”的第二匹配訊號(步驟802);資料流選擇訊號“FSEL_A”及“FSEL_B”驅動兩個互補的狀態之一,用以選擇資料流“FA”或“FB”(步驟803);之後,若選擇的資料流在步驟804測得有匹配狀態,資料流選擇邏輯700轉送選擇的資料流之匹配結果至優先編碼器170(步驟805);及優先編碼器170產生HPM索引(步驟806);反之,若選擇的資料流在步驟804沒有測得匹配狀態,資料流選擇邏輯700轉送未選擇的資料流至優先編碼器170(步驟807),而且優先編碼器170產生HPM索引(步驟806)。
雖然本發明以前述之實施例揭露如上,然其並非用以限定本發明,任何熟習相像技藝者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之專利保護範圍須視本說明書所附之申請專利範圍所界定者為準。
此外,文中所揭露的各種電路可透過使用電腦輔助設計工具來描繪及陳述(或表示),就他們的行為、暫存器轉換、邏輯元件、電晶體、佈局構型及/或其他特徵而言,資料及/或指令可在各種不
同的電腦可讀媒體中體現。在表達電路可能包括但不限於檔案或其他物件的格式,其支持格式的描述語言,如:C、Verilog及VHDL,支持暫存器等級描述語言,如:RTL,以及支持幾何描述語言,如:GDSII、GDSIV、CIF、MEBES及任何其他合適的格式及語言。電腦可讀媒體包含但不限於各種形式的非揮發式的儲存媒體(例如:光學、磁或半導體儲存介質),其可透過無線、光纖、有線訊號或其組合用於傳輸資料及/或指令格式。
110‧‧‧CAM陣列
120‧‧‧位址解碼器
130A、130B‧‧‧比對暫存器
140‧‧‧讀/寫電路
150‧‧‧匹配邏輯
160‧‧‧可程式優先編碼邏輯
170‧‧‧優先編碼器
180‧‧‧資料流選擇邏輯
190‧‧‧可程式訊號產生器
Claims (19)
- 一種具同時搜尋多資料流的內容可定址記憶體裝置,包含:一CAM陣列,包含多列內容可定址記憶體單元,每一列分別被設置為同時將多個第一搜尋鍵值及多個第二搜尋鍵值與儲存在該列的資料進行比對以分別產生多個第一匹配結果及多個第二匹配結果;一資料流選擇邏輯,具有多個第一匹配輸入端自所有列接收該些第一匹配結果,多個第二匹配輸入端自所有列接收該些第二匹配結果,一控制輸入端用以接收一資料流選擇訊號,及多個輸出端;及一優先編碼器,具有多個輸入端連接至與該資料流選擇邏輯相應的多個輸出端,以及具有一輸出端用以在回應匹配結果時產生一高優先匹配索引;其中該資料流選擇訊號在連續的比對作業中會於一第一狀態及一第二狀態之間進行交替選擇。
- 如申請專利範圍第1項所述之具同時搜尋多資料流的內容可定址記憶體裝置,其中該資料流選擇邏輯在回應該資料流選擇訊號時,以可選擇的方式轉送該些第一匹配結果或該些第二匹配結果其中之一至該優先編碼器。
- 如申請專利範圍第2項所述之具同時搜尋多資料流的內容可定址記憶體裝置,其中當該資料流選擇訊號係在一第一狀態時,若該些第一匹配結果只要至少其中之一顯示為匹配狀態,則該資料流選擇邏輯轉送該些第一匹配結果至該優先編碼器,以及若該些第一匹配結果全都未顯示為匹配狀態,則轉送該些第二匹配結果至該優先編碼器。
- 如申請專利範圍第3項所述之具同時搜尋多資料流的內容可定址記憶體裝置,其中當該資料流選擇訊號係在一第二狀態時,若該些第二匹配結果只要至少其中之一顯示為匹配狀態,則該資料流選擇邏輯轉送該些第二匹配結果至該優先編碼器,以及 該些第二匹配結果全都未顯示為匹配狀態,則該資料流選擇邏輯轉送該些第一匹配結果至該優先編碼器。
- 如申請專利範圍第3項所述之具同時搜尋多資料流的內容可定址記憶體裝置,其中該資料流選擇訊號在預定次數的比對作業中會保持在該第一狀態。
- 如申請專利範圍第1項所述之具同時搜尋多資料流的內容可定址記憶體裝置,其中該裝置更包含:一匹配匯流排,連接至該CAM陣列的所有列,被設置用以同時將該些第一匹配結果及該些第二匹配結果由所有列提供到該資料流選擇邏輯。
- 如申請專利範圍第1項所述之具同時搜尋多資料流的內容可定址記憶體裝置,其中該內容可定址記憶(CAM)單元包含多重比較(Multi-compare)內容可定址記憶體單元。
- 如申請專利範圍第7項所述之具同時搜尋多資料流的內容可定址記憶體裝置,其中該多重比較內容可定址記憶體單元包含:一第一記憶體單元,用以儲存第一資料值;一第二記憶體單元,用以儲存第二資料值;一第一比對電路,用以連接一第一匹配線及具有一第一輸入端連接至該第一記憶體單元,多個第二輸入端接收該些第一搜尋鍵值,以及一第三輸入端連接至該第二記憶體單元;及一第二比對電路,用以連接一第二匹配線及具有一第一輸入端連接至該第一記憶體單元,多個第二輸入端接收該些第二搜尋鍵值,以及一第三輸入端連接至該第二記憶體單元。
- 如申請專利範圍第8項所述之具同時搜尋多資料流的內容可定址記憶體裝置,其中該第一比對電路及該第二比對電路分別連接至第一比對資料線及第二比對資料線,用以分別接收該些第一搜尋鍵值及該些第二搜尋鍵值。
- 如申請專利範圍第8項所述之具同時搜尋多資料流的內容 可定址記憶體裝置,其中該第一記憶體單元連接一第一對位元線以接收該第一資料,以及該第二記憶體單元連接一第二對位元線以接收該第二資料。
- 如申請專利範圍第1項所述之具同時搜尋多資料流的內容可定址記憶體裝置,其中該資料流選擇邏輯包含:一匹配匯流排,延伸並穿越連接所有列,用以接收該些第一匹配結果及該些第二匹配結果;及多個資料流選擇電路,每一資料流選擇電路具有第一輸入端連接至該匹配匯流排,且具有第二輸入端以接收該些第一匹配結果及第二匹配結果,更具有第二輸入端接收該資料流選擇訊號,以及具有多個輸出端連接至該優先編碼器的多個輸入端。
- 如申請專利範圍第11項所述之具同時搜尋多資料流的內容可定址記憶體裝置,其中該資料流選擇訊號包含第一資料流匹配訊號及第二資料流匹配訊號,每一資料流選擇電路包含:一第一下拉閘極,連接於一第一資料流匹配線及接地電位之間,具有輸入端連接至一相應CAM列的該第一匹配線及該第一資料流選擇訊號,以及具有一輸出端以產生一第一資料流匹配訊號;一第二下拉閘極,連接於一第二資料流匹配線及接地電位之間,具有輸入端連接至該相應CAM列的該第二匹配線及該第二資料流選擇訊號,以及具有一輸出端以產生一第二資料流匹配訊號;一第一及閘,具有輸入端連接至該相應CAM列的該第一資料流匹配線及該第二匹配線,以及具有一輸出端連接至該優先編碼器;及一第二及閘,具有輸入端連接至該第二資料流匹配線及該相應CAM列的該第一匹配線,以及具有一輸出端連接至該優先編碼器。
- 如申請專利範圍第12項所述之具同時搜尋多資料流的內容可定址記憶體裝置,其中該第一資料流匹配訊號顯示該第一資 料流是否為匹配狀態,以及該第二資料流匹配訊號顯示該第二資料流是否為匹配狀態。
- 一種具同時搜尋多資料流的內容可定址記憶體裝置,包含:一CAM陣列,包含多列多重比較內容可定址記憶體單元,每一列多重比較內容可定址記憶體單元被設置用以分別同時將不同資料流的多個第一搜尋鍵值及多個第二搜尋鍵值與儲存在該列的多重比較內容可定址記憶體單元的資料進行比對以產生多個第一匹配結果及多個第二匹配結果;一資料流選擇邏輯,具有多個匹配輸入端以自所有列接收該些第一匹配結果及該些第二匹配結果,一控制輸入端接收一資料流選擇訊號,及多個輸出端;及一優先編碼器,具有多個輸入端連接至該資料流選擇邏輯的相應輸出端,以及具有一輸出端根據回應的匹配訊號產生一高優先匹配索引;其中該資料流選擇訊號在連續比對作業中會於一第一資料流及一第二資料流之間進行交替選擇。
- 如申請專利範圍第14項所述之具同時搜尋多資料流的內容可定址記憶體裝置,其中該資料流選擇邏輯在回應該資料流選擇訊號時,以可選擇的方式轉送該些第一匹配結果或該些第二匹配結果其中之一至該優先編碼器。
- 如申請專利範圍第15項所述之具同時搜尋多資料流的內容可定址記憶體裝置,其中當該資料流選擇訊號選擇該第一資料流時,若該些第一匹配結果只要至少其中之一顯示匹配狀態,則該資料流選擇邏輯轉送該些第一匹配結果至該優先編碼器,以及若該些第一匹配結果全都未顯示匹配狀態,則轉送該些第二匹配結果至該優先編碼器。
- 如申請專利範圍第16項所述之具同時搜尋多資料流的內容可定址記憶體裝置,其中當該資料流選擇訊號選擇該第二資料 流時,若該些第二匹配結果只要至少其中之一顯示匹配狀態,則該資料流選擇邏輯轉送該些第二匹配結果至該優先編碼器,以及若該些第二匹配結果全都未顯示匹配狀態,則該資料流選擇邏輯轉送該些第一匹配結果至該優先解碼器。
- 如申請專利範圍第16項所述之具同時搜尋多資料流的內容可定址記憶體裝置,其中該資料流選擇訊號在預定次數的比對作業中會保持選擇該第一資料流。
- 一種具同時搜尋多資料流的內容可定址記憶體裝置的運作方法,其步驟包括:同時將第一輸入資料流及第二輸入資料流與儲存在內容可定址記憶體裝置的CAM陣列中的資料進行比對;根據比對同時產生多個第一匹配結果及多個第二匹配結果;選擇該第一輸入資料流;若該第一輸入資料流具有匹配狀態,回應該些第一匹配結果至該優先編碼器;及若該第一輸入資料流不具有匹配狀態,回應該些第二匹配結果至該優先編碼器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/495,202 US7907432B2 (en) | 2009-06-30 | 2009-06-30 | Content addressable memory device for simultaneously searching multiple flows |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201117213A TW201117213A (en) | 2011-05-16 |
TWI462101B true TWI462101B (zh) | 2014-11-21 |
Family
ID=42660822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099121557A TWI462101B (zh) | 2009-06-30 | 2010-06-30 | 具同時搜尋多資料流的內容可定址記憶體裝置及其運作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7907432B2 (zh) |
TW (1) | TWI462101B (zh) |
WO (1) | WO2011002645A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI777456B (zh) * | 2020-03-23 | 2022-09-11 | 新加坡商聯發科技(新加坡)私人有限公司 | 三態內容可定址記憶體設備及其操作方法 |
US11557328B2 (en) | 2020-03-23 | 2023-01-17 | Mediatek Singapore Pte. Ltd. | Simultaneous write and search operation in a content addressable memory |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8023300B1 (en) | 2009-06-19 | 2011-09-20 | Netlogic Microsystems, Inc. | Content addressable memory device capable of parallel state information transfers |
US8023301B1 (en) | 2009-06-19 | 2011-09-20 | Netlogic Microsystems, Inc. | Content addressable memory device having state information processing circuitry |
US8570783B2 (en) * | 2010-10-28 | 2013-10-29 | Advanced Micro Devices, Inc. | Low power content-addressable memory and method |
JP2013030254A (ja) * | 2011-07-29 | 2013-02-07 | Toshiba Corp | 半導体記憶装置、情報処理装置 |
US9007799B2 (en) * | 2012-04-25 | 2015-04-14 | Intel Corporation | Low power content addressable memory system |
US8848411B2 (en) * | 2012-09-25 | 2014-09-30 | Broadcom Corporation | Shared stack dual phase content addressable memory (CAM) cell |
US9733939B2 (en) * | 2012-09-28 | 2017-08-15 | Intel Corporation | Physical reference list for tracking physical register sharing |
US8958226B2 (en) | 2012-12-28 | 2015-02-17 | Qualcomm Incorporated | Static NAND cell for ternary content addressable memory (TCAM) |
US8934278B2 (en) * | 2012-12-28 | 2015-01-13 | Qualcomm Incorporated | Hybrid ternary content addressable memory |
US9443590B2 (en) * | 2014-10-13 | 2016-09-13 | Sandisk Technologies Llc | Content addressable memory cells, memory arrays and methods of forming the same |
KR20180028020A (ko) * | 2016-09-07 | 2018-03-15 | 르네사스 일렉트로닉스 가부시키가이샤 | 반도체 장치 |
US9967272B1 (en) | 2017-12-05 | 2018-05-08 | Redberry Systems, Inc. | Real-time regular expression search engine |
US10033750B1 (en) | 2017-12-05 | 2018-07-24 | Redberry Systems, Inc. | Real-time regular expression search engine |
US10984863B2 (en) * | 2018-04-20 | 2021-04-20 | Arm Limited | Error detection and correction circuitry |
US10937499B2 (en) * | 2019-04-12 | 2021-03-02 | Micron Technology, Inc. | Content addressable memory systems with content addressable memory buffers |
US11507275B2 (en) * | 2020-10-27 | 2022-11-22 | National Tsing Hua University | Memory unit with multi-bit input local computing cell for multi-bit convolutional neural network based computing-in-memory applications, memory array structure with multi-bit input local computing cell for multi-bit convolutional neural network based computing-in-memory applications and computing method thereof |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000030469A (ja) * | 1998-07-14 | 2000-01-28 | Oki Electric Ind Co Ltd | 連想メモリセル及び連想メモリ |
TW200426588A (en) * | 2003-03-31 | 2004-12-01 | Intel Corp | NoDMA cache |
US6856527B1 (en) * | 2003-05-30 | 2005-02-15 | Netlogic Microsystems, Inc. | Multi-compare content addressable memory cell |
TW200717525A (en) * | 2005-10-28 | 2007-05-01 | Univ Nat Chiao Tung | XOR-based conditional keeper, and its application to implement match line architecture |
TW200807438A (en) * | 2006-07-31 | 2008-02-01 | Jinn-Shyan Wang | A tree-style AND-type match circuit device applied to the content addressable memory |
TW200929235A (en) * | 2007-12-21 | 2009-07-01 | Nat Univ Tsing Hua | Built-in self-repair method for NAND flash memory and system thereof |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5964857A (en) * | 1997-05-30 | 1999-10-12 | Quality Semiconductor, Inc. | Priority encoder for a content addressable memory system |
US6539455B1 (en) * | 1999-02-23 | 2003-03-25 | Netlogic Microsystems, Inc. | Method and apparatus for determining an exact match in a ternary content addressable memory device |
US6137707A (en) * | 1999-03-26 | 2000-10-24 | Netlogic Microsystems | Method and apparatus for simultaneously performing a plurality of compare operations in content addressable memory device |
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 |
US6763425B1 (en) * | 2000-06-08 | 2004-07-13 | Netlogic Microsystems, Inc. | Method and apparatus for address translation in a partitioned content addressable memory device |
US6324087B1 (en) * | 2000-06-08 | 2001-11-27 | Netlogic Microsystems, Inc. | Method and apparatus for partitioning a content addressable memory device |
US6275426B1 (en) | 1999-10-18 | 2001-08-14 | Netlogic Microsystems, Inc. | Row redundancy for content addressable memory |
US6249467B1 (en) | 1999-10-18 | 2001-06-19 | Netlogic Microsystems, Inc | Row redundancy in a content addressable memory |
US6505271B1 (en) * | 1999-11-12 | 2003-01-07 | Integrated Device Technology, Inc. | Increasing priority encoder speed using the most significant bit of a priority address |
US6243281B1 (en) | 2000-06-14 | 2001-06-05 | Netlogic Microsystems, Inc. | Method and apparatus for accessing a segment of CAM cells in an intra-row configurable CAM system |
US6490650B1 (en) * | 2000-12-08 | 2002-12-03 | Netlogic Microsystems, Inc. | Method and apparatus for generating a device index in a content addressable memory |
US6597595B1 (en) * | 2001-08-03 | 2003-07-22 | Netlogic Microsystems, Inc. | Content addressable memory with error detection signaling |
US6744652B2 (en) * | 2001-08-22 | 2004-06-01 | Netlogic Microsystems, Inc. | Concurrent searching of different tables within a content addressable memory |
US6865098B1 (en) | 2003-05-30 | 2005-03-08 | Netlogic Microsystems, Inc. | Row redundancy in a content addressable memory device |
US7219188B1 (en) * | 2004-02-06 | 2007-05-15 | Netlogic Microsystems, Inc. | Segmented content addressable memory array and priority encoder |
US7555593B1 (en) * | 2006-01-31 | 2009-06-30 | Netlogic Microsystems, Inc. | Simultaneous multi-threading in a content addressable memory |
-
2009
- 2009-06-30 US US12/495,202 patent/US7907432B2/en not_active Expired - Fee Related
-
2010
- 2010-06-23 WO PCT/US2010/039605 patent/WO2011002645A1/en active Application Filing
- 2010-06-30 TW TW099121557A patent/TWI462101B/zh not_active IP Right Cessation
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000030469A (ja) * | 1998-07-14 | 2000-01-28 | Oki Electric Ind Co Ltd | 連想メモリセル及び連想メモリ |
TW200426588A (en) * | 2003-03-31 | 2004-12-01 | Intel Corp | NoDMA cache |
US6856527B1 (en) * | 2003-05-30 | 2005-02-15 | Netlogic Microsystems, Inc. | Multi-compare content addressable memory cell |
TW200717525A (en) * | 2005-10-28 | 2007-05-01 | Univ Nat Chiao Tung | XOR-based conditional keeper, and its application to implement match line architecture |
TW200807438A (en) * | 2006-07-31 | 2008-02-01 | Jinn-Shyan Wang | A tree-style AND-type match circuit device applied to the content addressable memory |
TW200929235A (en) * | 2007-12-21 | 2009-07-01 | Nat Univ Tsing Hua | Built-in self-repair method for NAND flash memory and system thereof |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI777456B (zh) * | 2020-03-23 | 2022-09-11 | 新加坡商聯發科技(新加坡)私人有限公司 | 三態內容可定址記憶體設備及其操作方法 |
US11557328B2 (en) | 2020-03-23 | 2023-01-17 | Mediatek Singapore Pte. Ltd. | Simultaneous write and search operation in a content addressable memory |
Also Published As
Publication number | Publication date |
---|---|
WO2011002645A1 (en) | 2011-01-06 |
TW201117213A (en) | 2011-05-16 |
US7907432B2 (en) | 2011-03-15 |
US20100328981A1 (en) | 2010-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI462101B (zh) | 具同時搜尋多資料流的內容可定址記憶體裝置及其運作方法 | |
US8000161B2 (en) | Method and system for encoding to eliminate parasitics in crossbar array memories | |
US7417881B2 (en) | Low power content addressable memory | |
US6856527B1 (en) | Multi-compare content addressable memory cell | |
US6195278B1 (en) | Content addressable memory cells and words | |
US6249449B1 (en) | Hierarchical encoder including timing and data detection devices for a content addressable memory | |
US8339886B2 (en) | Amplifier sensing | |
JP4637388B2 (ja) | 薄膜磁性体記憶装置 | |
US20050174822A1 (en) | Bit line control circuit for a content addressable memory | |
US9318158B2 (en) | Non-volatile memory using bi-directional resistive elements | |
CN101040343A (zh) | 用于静态随机存取存储器的字线驱动器电路及其方法 | |
JPH07326200A (ja) | メモリ回路用冗長スキーム | |
US8659926B1 (en) | PMC-based non-volatile CAM | |
EP1376607B1 (en) | Content addressable memory device and method of operating same | |
US7924589B1 (en) | Row redundancy for content addressable memory having programmable interconnect structure | |
US6845025B1 (en) | Word line driver circuit for a content addressable memory | |
JP3754593B2 (ja) | データビットを記憶するメモリーセルを有する集積回路および集積回路において書き込みデータビットをメモリーセルに書き込む方法 | |
US7525867B2 (en) | Storage circuit and method therefor | |
US7301850B1 (en) | Content addressable memory (CAM) devices having bidirectional interface circuits therein that support passing word line and match signals on global word lines | |
US7920399B1 (en) | Low power content addressable memory device having selectable cascaded array segments | |
US8982596B1 (en) | Content addressable memory having column segment redundancy | |
JPS6331091A (ja) | 半導体メモリ装置 | |
WO2006046237A2 (en) | Coded binary content addressable memory | |
US8787059B1 (en) | Cascaded content addressable memory array having multiple row segment activation | |
US8023300B1 (en) | Content addressable memory device capable of parallel state information transfers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |