TWI300899B - Associative memory support for data processing cross reference to related applications - Google Patents
Associative memory support for data processing cross reference to related applications Download PDFInfo
- Publication number
- TWI300899B TWI300899B TW094114905A TW94114905A TWI300899B TW I300899 B TWI300899 B TW I300899B TW 094114905 A TW094114905 A TW 094114905A TW 94114905 A TW94114905 A TW 94114905A TW I300899 B TWI300899 B TW I300899B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- signal
- command
- data
- line
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Executing Machine-Instructions (AREA)
Description
1300899 九、發明說明: 【發明所屬之技術領域】 本發明係有關一種資料處理之關聯記憶體支援 (associative memory support for data processing)» 特別是有關於一種記憶體引擎,其使用改良的關聯 (associative)技術以增快資料處理速度及其靈活性。 【先前技術】 本說明書内容與下列申請案有關聯,在此一併提出作為參 考:美國專利申請案申請號碼09/928,151題為”A Memory Engine for the Inspection and Manipulation of Data”( 2001 年8月10曰申請)、美國專利申請案申請號碼10/728,234題 為”Data Processing System for a Cartesian Controller” (2003年12月4曰申請)、美國專利申請案申請號碼 10/727,811 題為”Cellular Engine for a Data Processing System”( 2003 年 12 月 4 曰申請)。 緩衝器(buffer )或記憶體元件内係儲存著由符號 (symbols)戶斤組成的字串(strings)。欲在此緩衝器或記憶體 中查詢(searching )得到與一預設字串相符合(或匹配)(match ) 的字串乃是資料庫、基因資料處理、資料壓縮、或電腦語言處理 各領域的一種基本運算。於一字串當中插入新序列 (sequences),或從其中刪除一序列,也是屬於一種基本的運 算。進行這些運算所需花費的時間將會直接影響到各種主要應用 的執行時間。
假設緩衝器内具有Μ個符號(symbols),當要在此緩衝 器中查詢是否出現一具N符號之字串時’最差的情況需要MxN 1300899 個比較步驟。當要在緩衝器中插入一字元(ch㈣咖)時,平 , 肖來講,此緩衝器中-半的符號(SymbGls)必須向左右移動來 、進行插人動作,在此情況下,平均需要N/2個步驟。 為了加快運算,-般是使用串列演算法,其係利用散列 (hashing)或樹狀資料結構(仕饮等技術。 當所要處理的字元(w〇rds)具有固定長度時,可以使用散列 (hashing)技術;每一個字元(w〇rd)係關聯於一特定數值, 作為索引,就好像將字(words)儲存於字典中一般。此種方法 僅適用於當負料疋屬於靜態的,且在處理當中資料的位置不會作 Φ 改變,此為其缺點。再者,產生這些關聯的數值需要花費相當的 時間,且經韦發生好幾個不同字元(words)對應於一個相同數 值的情形,因此還需要使用額外的方法來找出真正要的字元。字 尾樹狀結構(suffix trees )儲存所有的次字串(substrings )。 當要查詢某個字串是否儲存於緩衝區内時,需要從樹狀結構由上 往下一個字元(character )接著一個字元來進行查詢,直到查 到所要的字串,或者無法查到所要字串為止。不管是哪一種情形, 假設缓衝區内的字串長度為Μ符號,則最壞情況需要Μ個步驟 來確定字串是否位於長度為L的緩衝器内。雖然此方法速度很快, 然而要建立此字尾樹狀結構(suffix trees )則需要花費相當的 •時間。 内容定址記憶體(Content Addressable Memory, CAM) 技術可以在單一記憶體存取中找到某符號或字元的位置。此方法 對於固定長度的字元很有效,但是無法很有效的擴大應用於具變 動長度符號的字串。由於多個(M個)查詢可以並行的同時進行, 因此,所需要的步驟數量即可減少至N。有人提出使用多個並列 比較器及標記(markers)以儲存每個比較結果,而得以增快查 詢速度。例如,美國專利4,575,818 (發明人Almy等)、美國 1300899 ttoZnLV^^ Μ&ΥβΓ) 5^〇2,764 (# 月人Gharnm#)、美國專利5,448,733 (發明人h 這些f利所揭露的方法大都是在緩衝器的每-個_存單元連結一 =較器及-標記(marker)用以儲存最近一次的比較結果。 這些比較器、儲存單元、及標記使得所要查詢字串的各個符號傳 (broadcast)至緩衝器的各比較器。這些比較器各自將儲存 單元中的内容與所要查詢的符號作比較;再將比較結果記錄於標 記(marker)中。 緩衝器建構成位移暫存器(shift registers)的形式,其儲 存内容可以依時脈信號同步且並行地向右或向左進行位移,且只 要一個步驟即可將所有内容進行移位。然而,這些方法僅允許全 面的(global)位移,而無法僅位移其中一部份;再者,使用個 別的比較器將增加整個裝置的面積及複雜度,因而增加額外成本 及電源的消耗。 鐘於上述的問題,本發明提出一種記憶體裝置,其使用一種 稱為聯結記憶體(Connex Memory)(底下簡稱為CM)的新 記憶體電路,其允許非常快速的字串查詢、插入、及刪除功能。 本發明所提出的聯結記憶體(CM)類似傳統的關聯記憶體 (associative memory),但比傳統關聯記憶體更具有靈活性。 傳統的資料處理系統大都使用一般的記憶體位置定址。也就 是說’每一個儲存位置都相對應有一特定位址。當系統處理器 (processor)要將位址A的數值與位址B的數值相加時,傳統 的作法就是取出這些位址的數值,經由一介面而至該處理器以進 行相加的動作。在此種系統架構中,處理器及記憶體裝置彼此各 執行不同功能,各具不同性質。 1300899 此外,傳統的資料處理系統還可能包含多個處理器及記憶體 裝置,以形成多指令流(multiple instruction streams)。此 種多指令流多資料流(multiple instruction streams,multiple data streams (MIMD))裝置可以視為由多個單指令流單資料流 (SISD)裝置所組成,其中每一個單指令流單資料流(SISD) 裝置負責一部份的工作。因此,多指令流多資料流(MIMD)裝 置的效率取決且限定於如何將所要解決問題解析(parsable)為 多個類似但互相獨立的次問題(sub-problem )。在此架構中, 各個組成的單指令流單資料流(SISD)裝置彼此各執行不同功 能,各具不同性質。 另有一種資料處理系統為單指令流多資料流(single instruction multiple data streams (SIMD))裝置,其使用多 個處理器,同步來處理相同的問題;每一個處理器之運算符 (operator)分別運算處理不同的運算元(operand),以分別 得到其結果。在此種SIMD裝置中,處理器藉由存取記憶體裝置 以取得運算元並儲存運算結果。類似於前述各類型裝置,此種 SIMD裝置彼此各執行不同功能,各具不同性質。 即使上述各種資料處理系統可以用來處理大量資料,然而其 處理器及記憶體裝置的不可變特性卻限制了處理運算的速度及效 率。 鑑於此,有人提出一些非傳統之定址記憶體,一般稱為關聯 記憶體(associative memory )裝置,其並非以實體(physical) 位址來儲存資料,而是以所儲存資料的内容、特質(property ) 來定址的。 1300899 在關聯記憶體(associative memory)裝置中,資料係對 應於具固定大小的關鍵欄位(key field);當進行查詢時,不管 資料的位置在哪裡,是以查詢關鍵字(search key)來和記憶體 裝置中的關鍵攔位作比較,以決定兩者是否相符合。 在這些關聯記憶體(associative memory)裝置中’所有 儲存的資料都包含有關鍵欄位(key field)以及相對應的資料攔 位(data field)。進行關聯查詢時,藉由關鍵欄位的查詢以相 對應得出所要查詢的資料。一旦找到了,即可以在其關鍵攔位中 加以標記(tagged或marked),便於接下來後續的查詢或處置。 傳統關聯記憶體(associative memory)裝置使用一控制 器(controller )來觀察關鍵欄位的内容以找出相對應資料欄位 的内容。然而,傳統關聯記憶體裝置的架構仍然缺乏查詢彈性; 因此,當查詢時間變長時,此種關聯記憶體的用處就變少了。 鑑於上述傳統記憶體裝置的缺失,本發明提出一種較傳統關聯記 憶體更具彈性的記憶體裝置,用以增加效能及減少處理所需時 【發明内容】 本發明的目的之一係提供一種有效率的資料處理系統。 本發明的另一目的在於提出一種資料處理系統的單元引擎 (cellular engine)或關聯引擎以實現一主動式關聯記憶體’並增 加資料的處理速度及效率。 本發明的另一特徵在於提出一種資料處理系統的單元引擎 (cellular engine )或關聯引擎以實現一主動式關聯記憶體’其可 1300899 以普遍的使用關鍵攔位(key field )或資料欄位(data field )的 、 任何單元(cell)。 本發明另一重要特徵為提出一種資料處理系統的單元引擎 (cellular engine )或關聯引擎以實現一主動式關聯記憶體,於實 現一特定命令時,關聯記憶裝置中的關鍵欄位和資料欄位之間不 具有區別。 本發明又一重要特徵為提出一種資料處理系統的單元引擎 (cellular engine )或關聯引擎以實現一主動式關聯記憶體,其個 > 別的單元可以於單一時脈週期内並行的處理某一指令。 本發明再一重要特徵為提出一種資料處理系統的單元引擎 (cellular engine )或關聯引擎以實現一主動式關聯記憶體,其結 構具有同質性(homogeneous ),因此於不同時間進行程式之執行 時,同一資訊可以是屬於關鍵欄位或資料欄位。 — 本發明的另一目的在於提出一種有效率的資料處理系統之單 元引擎(cellular engine ),使得關聯記憶體中具有動態的查詢空 間。 根據本發明的實施例,資料處理之關聯記憶體(associated memory support)支援包含一關聯記憶體裝置,其包含η個單 元。控制器發出一指令至關聯記憶體裝置。時脈裝置輸出同步時 脈信號,此同步時脈信號每一秒包含有預設數量的時脈週期;時 脈裝置將同步時脈信號輸出至關聯記憶體裝置與控制器。控制器 於一個時脈週期内,全域地(globally)且同時的將指令與所有 的單元進行通信;且該指令均等地施加於每一個單元。 11 1300899 【實施方式】 在本發明聯結記憶體(Connex Memory )裝置中,—串(· 係由多個字元(words)所組成’每-個字元則^記:= 集(Set〇fmemorysymbols)中取出,且每〜個字元後面^ 一額外位元(bit),其内容用以代表下列兩狀態之—:尸曰艽 (marked)或未標記(not marked)。上述的符號 是由具固定長度之多個相連位元所組成,其實際長度視應用場合 而定。 〇 本發明架構可以在一個時脈中執行所有的Cjy[指令,今 週期之延遲時間(delay )大約為目前一般离 /比脈 奴阿速緩衝記憶體 (c a c h e )延遲時間的兩倍。本實施例之架構係為一獨立的電路, 然而,其也可以使用多個電路組合。第一圖顯示本發明實施例之 記憶體引擎(memory engine) 205的一般性架構,以及外界 的控制器255和同步時脈電路256。其中,記憶體引擎2〇5與 外界控制器235是由時脈電路256來協調。只要該外界控制/器 255可以送出命令(commands)至記憶體引擎205,以及從記 憶體引擎205接收資料,此外界控制器255的結構可以作很多 變化,並不會影響到本發明的特徵範圍。 如第二圖所示,聯結記憶體(Connex Memory,CM ) 206 關聯於線記憶體隨機存取裝置(Line Memory random access device) 200,其包含多個緩衝器,且每一個緩衝器的大小和聯 結記憶體(CM ) 206的大小相同,且受到聯結引擎(Connex Engine,CE) 205的控制。這些緩衝器(又稱為線(lines))的 功能在於針對較聯結記憶體(CM) 206還長的字串進行查詢、 插入、及刪除運算,以及可以減低成本及降低電源消耗,此將在 底下作進一步描述。
12 1300899 第三圖顯示聯結引擎(CE) 205的應用處理流程。首先,於 • 方塊302中,將控制器255所選定的字串載入相對應的線記憶 體200中。這些字串所含有的多個符號(symbols)被載入至線 " 記憶體200的一或多個緩衝器中,直到將字串完整儲存完畢。根 據此種方式,線記憶體200的每個緩衝器係儲存該字串的不同部 位,且每一部位之長度等於聯結記憶體(CM) 206的長度。 如第三圖方塊304所示,聯結引擎(CE)205將線記憶體200 的第一個緩衝器内容,經由資料隨機存取匯流排(data RAM) 100 載入聯結記憶體(CM) 206中。接著,聯結記憶體(cm) 206 ® 根據控制器255所下達的命令,針對被載入的字串進行字串運算 或檢視,如方塊306所示。在方塊308中,聯結記憶體(CM) 206判斷被檢視的字串部分之標記(marker)位元是否要進行 設定(set)(方塊307);如果為是,則將標記(marker)予以 設定;如果為否,則將標記(marker )予以清除(re-set)(方 塊309)。上述標記是否要進行設定的判斷係根據控制器255所 • 下達的命令。 當聯結記憶體(CM) 2〇6所載入的字串部分被檢視過,且也 執行了標記的設定以後’聯結引擎(CE) 205將把聯結記憶體 (CM) 206中的内容存回線記憶體200的第一個緩衝器内;並 接著將其第二個缓衝器内容載入聯結記憶體(CM) 206内’並 重複上述的相同操作。聯結引擎(CE) 205重複執行將緩衝器 内容載入聯結記憶體(CM) 206、對於該内容進行字串處理、 及將處理後資料存回緩衝器’如此重複執行直到字串的所有部分 都處理完畢為止。由於所要查詢的字串符號具有區域性 (locality),因此,當所要查詢的數量增加後,聯結記憶體(CM) 206内的緩衝器數量就會變少,因而得以將整個的運算侷限於少 數的緩衝器當中。 13 1300899 本發明特徵之一在於,藉由標記(marker)位元的設定或清 除狀態’使得儲存於線記憶體2〇〇緩衝器内的整個字串並不需要 一再地進行全部檢視,有些緩衝器得以省略檢視動作。例如,當 控制器255下達命令尋找一組特定資料,聯結記憶體(CM) 206, 會依序載入各緩衝器内的字串内容,若發現到所找尋的字串則設 定其標記。後續若需要再檢視這些緩衝器時,僅需要檢視被標記 的緩衝器内容,那些未被標記者則不需要檢視。據此,聯結記憶 體(CM) 206不需要重複地檢視所有的緩衝器,因而得以省略 不需要的檢視,而增快操作速度。 本發明的另一特徵為,聯結記憶體(CM) 206可以在同一時 脈週期内並行地執行多個運算。在第三圖中的方塊3〇6、3〇7、 308、309中,聯結記憶體(cm) 206可以同時執行這些方塊。 也就是說,第三圖(以及其它圖式)中的各個方塊是可以由聯結 記憶體(CM) 206於同一時脈週期内並行地執行多個運算。 底下將進一步描述,當控制器255下達命令後,聯結記憶體 (CM ) 206及聯結引擎(CE ) 205是如何執行操作的。 聯結記憶體(CM) 206的操作通常是從控制器255接收命 令及資料。當命令需要資料運算元(〇perand)時,則命令及相 關的符號會同時載入聯結記憶體(CM) 206内。例如,假設運 算元為”find”,用以在聯結記憶體(CM) 206所儲存的字串中 尋找相同的符號或資料。聯結記憶體(CM) 206支援許多種命 令,其大致分為兩大類:正向命令(forward commands)、反 向命令(reverse commands)。每一類別的命令又包含有三種: 設定或清除標記的命令、存取已標記的儲存字元、修改已標記的 儲存字元。雖然本發明實施例的標記係使用一個位元,然而,在 其它實施例也可以使用多位元標記,而不會脫離本發明的特徵及 1300899 保護範圍。 首先說明正向命令(f〇rward commands );至於反向命令 (reverse commands )之指令貝,J具有鏡像(mirror-image )(或 對稱)的特色,將在底下說明之。在底下的說明中,”符號(symbol)” 一詞係指多個位元所組成的邏輯區塊。對於一些應用,通常以八 位元來實施;然而在另一些應用當中,例如基因的生化處理,其 符號(symbol)則具有四個位元。 正向命令(forward command 當進行字串查詢(search)及插入(insen)運算時,將字 串的符號一個接一個地依序與命令載入聯結記憶體(CM) 2〇6 中。當進仃查珣命令時’將欲查詢符號與聯結記憶體(CM”〇6 ^的二有符5虎作比。_般來說,有兩種比較:有條件的 二。== 二條:广較。字串 已査詢得到的情形下進行有條“::後的付遽— 當進行插入運算時,繼 (insertion P〇int)之右^结記憶體(CM) 206中欲插入點 則儲存於欲插人點。根據^的符號均右移—個位置’而新的符號 設有標記之第一個符號位置發明其中一個實施例,插入點即為已 如前所述,由於聯結弓丨 因此本發明特徵之一乃在^u/CE) 205架構具有較佳的效率, 運算。 ;單一時脈週期内得以進行查詢及插入 當進行刪除運算時,從 沖、、、《記憶體(CM ) 206中欲刪除點 15 1300899 (deletion p〇mt)讀取連續多個符號,而在刪除點右邊的符號 、 則向左移位。根據本發明其中一個實施例,刪除點即為已設有標 " 記之第一個或最後一個符號位置。 底下將介紹上述各種運算的相關命令。 find命令及cfind命令屬於存取命令。如第三圖及第四圖所 示,find命令及符號經由控制器255被載入聯結記憶體(CM) 206,用以和聯結記憶體(CM ) 206中的所有符號進行比較。 φ 執行此命令以後,經比較相符的符號後面之標記(marker)即 會被設定;而其它的標記則被清除。第三圖的方塊3〇2-314顯 示命令的一般執行流程,而第四圖的方塊3〇4,、3〇3及3〇5則 特別顯示了 find命令的執行流程;其中,第三圖的方塊3〇4及 第四圖的方塊304’表示將所欲檢視的字串載入聯結記憶體(cm) 206中。第四圖同時也顯示出find命令係於單一時脈週期内完 成的;完成後,則由E進入第三圖中其它的執行步驟。例如,假 設聯結記憶體(CM) 206内儲存有字串”ron AND ROBERT”, 當執行find(R)命令後,會將R後面符號的標記予以設定,因而 變成”R[0]N AND R[0]BERT”(這裡係以方括弧來表示標記設 ♦ 定),此即為第三圖方塊308所執行的步驟。
Cfind (’’conditional find”)命令與 find 命令類似,亦即, 將命令與符號載入聯結記憶體(CM )206並進行查詢;然而,cfind 命令僅針對線記憶體200中已標記的符號進行表進,如第五圖方 塊322所示。承續前述例子,cfind命令僅針對已標記的符號〇 進行比較;當比較完成後,字串將變成” RO[N] AND R〇[B]ERT” ; 其中,N和B的標記被設定,其餘則被清除。接著,於執行cfind(B) 後,僅有E的標記被設定,變成為”RON AND R〇B[E〗RT”。如 此重複執行查詢運算,直到所要找的字串被找到(或者找不到) 16 1300899 為止,並將結果輸出至控制器255,如第五圖方塊324-326所 〜 示0 如前所述,第三圖係顯示命令的一般執行流程,適用於各種 的命令。因此,根據不同的命令,方塊302可以包含一或多項資 料。再者,第三圖假設載入的字串長度大於聯結記憶體(CM) 206 的長度,因此需要分段的從線記憶體200將字串部分載入聯結記 憶體(CM) 206内。然而,有時候聯結記憶體(CM) 206的長 度足以容納所要查詢的字串,如第四圖所示;於方塊303中,根 據所下達的命令檢視聯結記憶體(CM) 206所載入的字串;接 著,判斷是否要設定或清除標記(方塊305)。 如果聯結記憶體(CM)206的長度足以容納所要檢視的字串, 因跳過聯結引擎(CE) 205及線記憶體200而得以節省時間及 電源。 底下介紹read命令(屬於正向命令)。此命令使得聯結記憶 體(CM) 206將第一個(最左端)已標記之符號送回。在本實 施例中,假設其長度為Μ符號,則其最左端符號之位址為〇,而 最右端位址為Μ-1。 當read命令執行以後’被讀取符號之標記即被清除,而其右 邊的標記則被設定。承續前述的例子”R〇[N] AND RO[B】ERT” ; 當執行了 read命令後,聯結記憶體(CM) 206送出符號”N”, 並將字串變為”R〇N[ ]AND ROBERT”(第一個空格被標記)。第 六圖的方塊330顯示read命令的流程,其涵蓋於第三圖的方塊 308當中。 底下介紹insert命令。此命令同時與符號X載入聯結記憶體 17 1300899 (CM) 206中,且此命令僅針對聯結記憶體2〇6中第一 , 個(或最左邊的)標記儲存單元產生影響。當欲插入符號X時, • 位於標記右邊的所有儲存單元以及標記單元本身都右移一個位 置,並將符號X存放在標記的前一個位置;至於在該位置的原本 設定標記則被清除。假設聯結記憶體(CM) 206内儲存有字 串”R[0]N AND R[0】BERT”,於執行了 insertpg命令後,將變 為”RX[0】N AND R[0】BERT”。第七圖的方塊332顯示此命令的 執行流程,其相當於第三圖的方塊308 ;且所要處理的字串可以 比聯結記憶體(CM) 206所能容納的長度來得大。 ’ delete命令刪除被標記位置的符號,並將其右邊的所有儲存 單元都左移一個位置。假設聯結記憶體(CM ) 206内儲存有字 串”RO[N] AND RO[B]ERT” ’於執行delete命令後,將變 為”RO[ ]AND RO[B]ERT”。第八圖的方塊334顯示此命令的執 行流程,其相當於第三圖的方塊308 ;且所要處理的字串可以比 聯結記憶體(CM) 206所能容納的長度來得大。 另一個要介紹的是next命令,其不需要參數(parameter); 此命令會將第一個(或最左邊的)標記予以清除。當一字串中具 φ 有多個標記時,藉由執行next而得以對其它的標記儲存單元進 行處理。假設聯結記憶體(CM) 206内儲存有字串”R[〇】N AND R[0]BERT”,於執行了 next命令後’將變成”RON AND R[0]BERT”。第九圖的方塊335顯示next命令的執行流程,其 相當於第三圖的方塊3 0 8 ;且所要處理的字串可以比聯結記憶體 (CM) 206所能容納的長度來得大。 參閱第二圖,其中的index輸出端13會輸出聯結記憶體 (C Μ ) 2 06第一個標記單元的位址。例如’假設聯結記憶體(c M ) 206的第一單元係被設定的’則index輸出端會輸出數值0。假 18 1300899 設聯結記憶體(CM) 206的第二單元單元係被設定的,則index , 輸出端會輸出數值1。又假設聯結記憶體(CM) 206内儲存有 字串”RO[N] AND RO[B]ERT”,其中”RON”儲存於最左邊單元, ★ 則index輸出端會輸出數值2,因為符號N的位址為2。 另一個命令為write-one命令,其與符號S —起載入聯結記 憶體(CM) 206。此命令將符號S寫至第一個(或最左邊的) 標記位置的儲存單元;該位置的原有標記將被清除,而緊鄰的右 邊標記則被設定。 Φ 另一個為write-all命令,其與符號S —起載入聯結記憶體 (CM) 206。此命令將符號S寫至所有標記位置的儲存單元; 該位置的原有標記將被清除,而緊鄰的右邊標記則被設定。 還有一個為write命令,其與符號S及位址A —起載入聯結 記憶體(CM) 206。此命令將符號S寫至位址為A的儲存單元。 此命令類似於一般隨機存取記憶體的寫入(write)操作。位址A 的原來標記被清除,而緊鄰的右邊標記則被設定。 •I read命令與位址A —起載入聯結記憶體(CM) 206,並將 位址A的内容輸出。此命令類似於一般隨機存取記憶體的讀取 (read )操作。執行read命令之後,標記的設定並不會受到改 變0 、 另一個為jump命令,主要係用於當字串長度非固定,但具 有相同的前置(prefix )及後置(suffix ),亦即,每一字串的前 置及後置是相同的,但是每一字串的中間部分之長度是不相同 的。當所有字串的前置(prefix)之最後一符號都被設定時,則 可以使用jump命令,將詳細描述如下。 19 l3〇〇899 假設聯結記憶體 (CM ) 206 内儲存有兩字 串:”AAA%BB%CCCC”及”AAA%DDD%CCCC”,其中0/〇代表分 、 界符號(delimiter)。假設前置AAA之後的分界符號%之標記, 經過一些命令(例如find(A)、cfind(A)、cfind(A))的執行後, 被設定成如下:”AAA[%】BB%CCCC,,及”AAA[%]DDD%CCCC”。 jump(s)命令(其中s代表符號)係用以將設定標記移動至後置 CCCC之前的分界符號%,並以符號s來取代該分界符號。 承續上例,當第一次執行了 jump($)之後,聯結記憶體(CM) | 206 内的字 串變為:” AAA%[B]B%CCCC” 及AAA%[D]DD%CCCC”。於執行了第二次junip($)之後,字串 變為:”AAA%B[B】%CCCC”及”AAA%D[D】D%CCCC”。於執行 了第三次jump($)之後,字串變為:”aaA%BB$CCCC” 及,AAA%DD[D]%CCCC”。於執行了第四次juinp($)之後,字 串變為:”AAA%BB$CCCC”及,,AAA%DDD$CCCC,,。也就是說, 針對jump命令,將設定樨記之内容與分界符號(在本例中是為 %)作比較;假如比較結果是相符合的,則以符號s來取代(在 本例中是為$),並將摞記予以清除。如果比較結果是不相符合的, 則將標記清除,並將其右邊位置之標記予以設定,因而實質上使 9 传標記位置往右移動。第十圖的方塊336顯示jump命令的執行 流程,其載入的字串可以容納於聯結記憶體(CM) 206内(相 當於第三圖的方塊304及第十圖的方塊3〇4,); e係表示執行完 jump命令後回到第三圖的一般性執行流程中。 jump命令對於資料庫的應用很重要;在這些應用中,字串中 包含有固定長度的攔位識別(field identifier )(或分界符號), 以及非固定長度的資料欄位。本發明提供一種很好的方法來檢視 字串中的資料。再者,由於比較的進行係於一個時脈週期内完成 的’因此字串的檢視可以快速且有效率的完成。 20 1300899 本發明的另一特色為,jump命令可以使用一預定之定位符 號(locator symbol)來取代分界符號。此定位符號(1〇cat〇r symbol)即可以用來表不賀料搁位的終點,不管該資料攔位的 長度是多大;另外,還可以於資料查詢之後用來標示資料欄位。 如前所述,jump命令允許針對聯結記憶體(CM) 2〇6内多 個字串的並行檢視,因此可以並行的且在單一時脈週期内來識別 分界符號及進行取代。 反向命令(reverse commands)
I 月ίΐ述之查询、插入、及刪除係針對聯結記憶體(CM ) 206内 的第一個没疋標§己,以及影響到該設定標記右邊的儲存單元。聯 結記憶體(CM) 206也支援反向的查詢、插入、删除、及索引 運算,其係針對聯結記憶體(CM) 206内的最後一個設定標記; 其操作對稱於前述的正向插入、刪除、及索引運算。 反向find命令與一符號s —起載入聯結記憶體(CM) 2〇6 内,並將符號s左邊單元之標記予以設定。假設聯結記憶體(CM) • 206儲存有字串” JOHN AND JOHNNY,,,於執行反向find命令 後,將變成”JO[H】N [A】ND JO[H】[N]NY”。 反向有條件cfind命令與一符號s —起載入聯結記憶體(CM) 206内,而聯結記憶體(CM) 206僅針對已標記之單元作關聯 查詢。含有符號s之左邊標記被設定,其餘則被清除。假設聯結 記憶體(CM) 206 儲存有字串”JO[H]N [a]ND JO[H][N]NY,,, 經執行反向有條件cfind命令後,將變成”j[〇]hn AND J[0]HNNY”。 21 1300899 反向insert命令與一符號s —起載入聯結記憶體(CM ) 206 内。最左邊之已標記單元以及其右邊的單元都被右移一個位置, 而符號s則儲存於左邊之已標記單元内;然而標記則不會作改變。 假設聯結記憶體(CM ) 206儲存有字串”JO[H]N AND JO[H]NNY”,經插入 X 後變為:”JO[X】HN AND JO[H]NNY”。 反向delete*命令將最左邊已標記單元内容刪除,且將其右邊 的單元往左移一個位置。該最左邊標記單元之標記被清除,且其 左邊的標記被設定。假設聯結記憶體(CM ) 206儲存有字 串”JO[H]N AND JO[H]NNY”,經執行反向delete命令後變 為:”J[0]HN AND JO[H]NNY”。 範圍限定命令(Limited-Range Commands) 聯結記憶體(CM) 206支援一些命令,其僅會影響到位址超 過某一數值之儲存單元;這些命令稱之為範圍限定命令。這些命 令所進行的查詢、插入、及刪除運算範圍並非涵蓋聯結記憶體 (CM) 206内所有的Μ字元,而是僅涵蓋其中一部份。當執行 find、cfmd、lnsert、delete命令時,僅有相鄰的區塊才會受到 * 影響。此區塊之左邊受限於特殊位址暫存器,並延伸至最右邊的 單元。
Set-Hmit命令用以將最左邊之已設定標記作為下界限定仿 址。假設聯結記憶體(CM) 206儲存有字串,,R NI ROBERT”,職行了 Set_limit命令後,由於最左邊之已標资 符號為N,因此限定位址將設定為2。 1300899 儲存器中。
Limited-find 、 limited-cfind 、 limited-reverse-find 、 limited-reverse-cfind 命令與 find、cfind、reverse-find、 reverse-cfind的操作類似,但是僅適用於位址超過限定位址 (limiting address)的範圍内。
Limited-write-all命令與一符號s —起載入聯結記憶體 (CM) 206内;其與write-all命令之操作相同;但是僅對於位 址超過限定位址(limiting address )的所有已標記單元,將符 ,!虎s寫入。 聯結記憶體(CM) 206會輸出一些邏輯(布林/boolean) 信號,用以反映出已標記單元的狀態: 1) 如果具有至少一個已標記單元,則聯結記憶體(CM) 206 會將某信號設定為1 ;否則為0。 2) 如果恰好具有一個已標記單元,則聯結記憶體(CM) 206 會將某信號設定為1 ;否則為0。 3) 如果最後一次的有條件查詢類命令(正向、反向、或限定) φ 並沒有執行成功,亦即沒有標記位元被設定,則聯結記憶體 (CM) 206會將某信號設定為1。 4) 如果具有預設之二元格式(binary pattern)的一或多個字 元(characters)的標記被設定,則聯結記憶體(CM) 206 會將某信號設定為1。這些字元係用以代表空或無效符號位 置,其受到外界控制器255之操作而設定其標記。 5) 如果緩衝器中沒有存放任何含有已標記符號,或者隨機存取 記憶體(RAM)控制器已經將所有緩衝器内容載入聯結記 憶體(CM) 206,則聯結引擎(CE) 205會將某信號設定 為1 〇 23 1300899 聯結引擎(Connex Engine ) 如前第二圖所述,聯結引擎(CE) 205係用以處理聯結記憶 體(CM) 206及線記憶體(Line Memory) 200之緩衝器(又 稱為線(lines))中的字串。線記憶體(Line Memory) 200中每 一線之容量相等於聯結記憶體(CM) 206的容量,其儲存有Μ 字元(words ),每一字元含有(Ν+1)位元。聯結引擎(CE ) 205 受到外界電腦或處理器的控制,使得線記憶體(Line Memory) 200的内容可以寫入聯結記憶體(CM) 206,或者自聯結記憶 體(CM ) 206讀取資料。寫入運算(write operation)將線(line) 的内容儲存至聯結記憶體(CM ) 206 ;讀取運算(read operation)則將聯結記憶體(CM) 206内容儲存至線(line) 内;這兩種運算都是在一個時脈週期内完成的。外界的處理器可 以使用insert、或write命令,藉由data-in匯流排10,將資 料符號寫入聯結記憶體(CM) 206。符號之讀取可以有下列兩 種途徑:一種途徑是藉由command端14下達read命令,並 經由data-out匯流排11來讀取聯結記憶體(CM)206的内容; 另一種途徑是將位址輸入word-address匯流排203,而直接從 線記憶體(Line Memory) 200 之 data-words 匯流排 204 讀 取一或多符號。data-ram匯流排100用以達成聯結記憶體(CM) 206與線記憶體(Line Memory) 200之間資料的寫入、讀取。 此匯流排包含M*(N+1)條線,使得聯結記憶體(CM) 206之讀 取、或寫入可以在一個時脈週期内完成。 第十六圖顯示線記憶體係由隨機存取記憶體(RAM) 130及 RAM控制器120所組成。其中,隨機存取記憶體(RAM) 130 内含有線記憶體,而RAM控制器120則使得線記憶體之内容可 以快速的載入聯結記憶體(CM) 206。在每一執行週期(pass), RAM控制器120掃瞄(scan)線記憶體,並將一部份載入聯結 24 1300899 記憶體(CM)2(^RAM控繼12〇對於隨機存取記憶體(raM) 130内的每一線記憶體保有兩個位元:第— …郎-兮蝮 „ 禾個位元用以顯不邊緑 記憶體疋否要在本處理週期(pass)中被栽 CM) 獅;RAM控制器120會定時且自動的針對已:丄之第〆 位元來產生下一個位址,以進行聯結記憶體(c=f2〇6的載入 及處理。當聯結記憶體(CM) 206内資料一處理完畢後,raM 控制器120會將no_flag信號15儲存於第二個位當現行處 理週期執行完畢後,RAM控制器120會將所有的第二位元分別 儲存於第一位元。這些位元代表線記憶體的一些標記被設定,而 這些已標記之線記憶體將於下一處理週期(pas^J妾續進行處理。
如果隨機存取記憶體(RAM) 130内僅有一部份的線記憶體 是有效的(valid),例如從線位址0開始的連續多個線記憶體, 則由外界處理器經由limit-address信號207饋入有效的最後一 個限定位址。 線記憶體(Line Memory) 200的L個記憶體線(lines)可 以和聯結記憶體(CM) 206製作於同一單晶片,也可以採用一 般的記憶體元件,而與聯結記憶體(CM) 206分屬於不同的晶 φ 片。不管是哪一種方式,都是藉由聯結引擎(CE) 205之控制 用以將L條線記憶體依序載入聯結記憶體(CM) 206,執行命 令運算後,再存回線記憶體中;藉此,而得以處理一字串,其長 度遠大於聯結記憶體(CM) 206之Μ個符號容量。 當需要執行insert和delete命令時,線記憶體中不會完全塞 滿符號,而是預留一些空間用以讓字串擴大或縮小之用。在此種 情況下,聯結記憶體(CM) 206中未含有效符號的儲存單元 (cells)裡則是存放一些預設的識別圖樣位元(pattern),其與 所要處理的字串符號均不相同。聯結記憶體(CM) 206會產生
25 1300899 一種稱為interrupt的信號(如第二圖的1〇1);前述當預設的 - 識別圖樣位元(pattern)被標記時,即會產生此interrupt信 號。 聯結記憶體(CM) 206及其外部連接 這裡牽涉到兩種連接型態:第一種型態是關於聯結記憶體 (CM) 206與其周邊的連接關係;另一種型態則是關於當多個 聯結記憶體(CM) 206要連接起來以擴充儲存容量時,需要藉 | 由一些信號來相互連接。 在接下來的描述中,我們假設每一個聯結記憶體(CM) 206 可以健存Μ個字元(words ),而每一個字元則有N+ 1個位元, 其中N位元代表符號,而一個位元則作為標記(marker )。 第十一圖顯示聯結記憶體(CM) 206的連接。底下說明中括 弧内數字代表其位元數;如果使用到對數(log function),其基 底假設為2 〇 ® Data-in (Μ): N位元之資料輸入10,用以輸入符號至聯結記 憶體(CM) 206。
Data-out (Μ): N位元之資料輸出11,用以自聯結記憶體 (CM) 206讀取符號。
Address (log(N)):具有l〇g(N)位元的位址輸入12,其中log() 之基底為2。
Data-Ram:雙向資料輸入及輸出100,其具有M*(N+1)位元, 用以寫入或讀取線記憶體(Line Memory) 200内容。
Index (log(M)):具l〇g(M)位元的輸出13,用以紀錄第一個或 最後一個已標記單元之位址,此視所執行的命令究竟是正向 26 1300899 (forward )或反向(reverse )而定。
Interrupt (1):此信號由聯結記憶體(CM) 206產生,當一 " 或多個單元中具有預設的識別圖樣位元時,表示未含有效符號。 • Command (5):五位元的命令輸入14,要求聯結記憶體(cm) 206執行。
No-flag (1):輸出信號15,用以表示聯結記憶體(CM) 206 未含有標記單元。
No-eq (1):輸出信號16,用以表示最後一次的條件式find命 令家族(即正向、反向、或限定cfind命令)並未設定標記。 One-flag:輸出信號17,用以表示聯結記憶體(CM) 206具 | 有恰好一個已標記單元。 clock:時脈輸入信號24,用以控制聯結記憶體(CM) 206 的運作。 上述的data-in、address、及command信號,相對於時脈 的主動邊緣(active edge )必須具有一準備時間(set-up time )。 Data-out、index、no-flag、no-eq、one-flag 貝丨J 於延遲時間後 將會變為穩定,該延遲時間係相對於時脈信號的主動邊緣而言。 當多個聯結記憶體(CM) 206需要連接起來形成線性的一維 陣列時,用以延伸其内部位移暫存器之總長度,必須使用到一些 信號來連接。這些信號顯示於第十一圖,並說明如下:
Data-left-in (N+2):此信號26來自前一個連接的模組,其包 含Μ位元的符號,一位元標記,以及該標記之相關比較器輸出 位元。
Data-left-out (Ν+2):此信號25傳送給前一個連接的模組,. 其包含Μ位元的符號,一位元標記,以及該標記之相關比較器 輸出位元。 27 1300899
Data-right-in (N+2):此信號19來自後—個連接的模組, • 其包含Μ位元的符號’一位元標記,以及該標記之相關比較器 輸出位元。
Data-right-out (Ν+2):此信號18傳送給後一個連接的模 組,其包含Μ位元的符號,一位元標記,以及該標記之相關比 較器輸出位元。
Line-in (2):接收來自x_transcoder電路的兩個信號23,用 以擴充整個結構。
Line-out (1):傳送至 χ-transcoder 電路的信號 22 〇
Column-in:接收來自Y_transc〇der電路的兩個信號20, _ 用以擴充整個結構。
Column-out:傳送至 γ-transcoder 電路的信號 21。 上述後面四個信號將於後面的内部結構(internal structure)段落中進一步說明。如果並未進行記憶體的擴充, 則上述的所有信號必須以傳統一般方法適當的加以連接,以確保 聯結記憶體( CM) 206可以正確的運作。 聯結記憶體(CM ) 206的内部結構(internal structure ) 第十二圖顯示聯結記憶體206的内部結構實施例,其係由記 憶體單元30所組成的二維陣列,該圖式也顯示了連接至其它聯 結記憶體(CM) 206或聯結引擎(CE) 205的信號,以及用以 選擇單元及顯示標記單元位置狀態的電路。此二維陣列包含Μ 個單元(cells),每一單元具有Ν+1位元。為什麼使用二維陣列 的原因,其一是為了善於利用矽晶片的面積,其二為減少信號於 聯結記憶體(CM) 206中傳遞所造成的延遲。本發明實施例中 的聯結記憶體(CM) 206並非使用一般隨機存取記憶體(RAM) 的解碼器,而是使用兩個transcoder電路,因為所要解碼的位 28 1300899 址係與所執行的命令相關;此二個transcoder電路分別對應於 • 各自一個維度。 釀 在本發明其它的實施例中,聯結記憶體(CM) 206也可以使 用一維的陣列結構,其也包含於本發明的範圍内。 第十二圖所示的聯結記憶體(CM) 206内部結構包含下列的 次系統: 符號單元(symbol cells ):用以儲存符號,這些單元形成二 . 維陣列3 0 ’具有Μ個早元’每一個單元儲存一個符號(第一個 單元係位於二維陣列的第一行(column)的第一線(line))。 為了便於說明,線(line )的編號係從下往上依次遞增,而行 (column)的編號貝丨]從左至右依次遞增。
Data-ram:係為具有M*(N+1)位元的匯流排,使得Μ個符號 及其標記可以寫入或讀取。線(line )的選擇係由X-transcoder 電路39所產生的line-select信號106所控制選擇的。
Interrupt:此信號由聯結記憶體(CM) 206產生,當一或 多個單元中具有預設的識別圖樣位元時,表示未含有效符號。 . X-transcoder:此電路39包含邏輯電路,配合Y-transcoder 電路40,用以對聯結記憶體(CM) 206定址及進行存取。 Y-transcoder:此電路40包含邏輯電路,配合X-transcoder 電路39,用以對聯結記憶體(CM) 206定址及進行存取。 二輸入之AND閘:此閘34接收兩個transcoder電路之eq 信號36、41,以產生one-flag信號35。 二transcoder電路將聯結記憶體(CM) 206區隔為三個區 域:在第一個已標記單元之前的所有單元;第一個已標記之單元; 及第一個已標記單元之後的所有單元。 29 1300899 底下說明聯結記憶體(CM) 206内部的信號。由於二維陣列 • 中的最低或最高已標記單元之位址必須加以計算’因此 transcoder電路之運作需要依據底下的幾個主要信號’亦即 line-out、line-in、column_out、column-in :
Line-out:此信號42的個數相當於(VN)。每一個line-out信 號係關聯於二維陣列其中的一列;當該列含有已標記單元,則該 line-out信號變為主動(active),否則為非主動(inactive)。
Column-out:類似的情形,此信號44的個數相當於(λ/Ν)。每 一個column-out信號係關聯於二維陣列其中的一行;當該行含 除 有已標記單元,則該column-out信號變為主動(active ),否 則為非主動(inactive )。
Line-in:此信號43的個數相當於(2VN)。二維陣列的每一列 接收兩個來自X-transcoder電路的兩個信號,iine_in[i]、 line-in[0],其分別代表下列意義: •該列是否為包含有已標記單元的第一列; •該列是否為已標記之第一列,或者大於已標記之第一列。 我們以底下的表-作為舒來說明。此例子為8x8之二維陣 _ 列’其中的方括弧代表已標記單^ ;最上-列及最左-行的數字 分別代表行與列的編號。
表 0 1 2 3 4 5 6 7 0 X X X X X X X X 1 X X X X X X X X 2 X X X X X X X X 3 X X X X X X X X 4 X X [X] X X X [X] X 30 1300899 5 X X X X X X X X 6 [X] X X X [X] X X X 7 X X X X X X X [X] 在這個例子中,line-〇ut信號42為00001011 ; line-in信 號43當中的line-in[l】為ooooiooo,且line_in[〇】信號則為 00001111°
Column-in 45:二維陣列的每一行接收兩個來自 Y-transcoder 電路的兩個信號,column-in[l]、column-in[0】,
其分別代表下列意義: •該行是否為包含有已標記單元的第一行; •該行是否為已標記之第一行,或者大於已標記之第一行。 同樣以上述表一為例,則column-in信號45當中的 column-in[l]為 00100000,且 column-in[0]信號則為 00111111° 聯結記憶體(CM) 206之單元的外部結缉 除了前述的data-in、data-out、及command信號外,底 下的信號則跟符號、標記有關,如第十三圖、第十四圖所示。
Data-left-out:此具有N+2位元的信號25傳送給前一個單 元,其包含N+1位元的left-cell-out信號代表儲存的符號,以 及一相關的標記位元。
Left-eq-out (1):此輸出信號54係由單元内的比較器所產 生。
Data-right-out (N+2):此具有N+2位元的信號傳送給後一 31 1300899 個單元,其包含Ν+l位元的right-cell-out信號代表儲存的符 - 號,以及一相關的標記位元。 “ Right-eq-out (1):此輸出信號57係由單元内的比較器55 所產生。 口
Data-left-in (N+2):此具有N+2位元的信號係來自前一個 單元,其包含N+1位元的left-cell-in信號52代表儲存的符號, 及一相關的標§己位元,left-eq-in信號53則為前一單元比較55 的輸出結果。
Data-right-in (N+2):此具有N+2位元的信號係來自後一個 單元,其包含N+1位元的right-cell-in信號58代表儲存的符 ί 號,及一相關的標記位元;right-eq-in信號56則為前一輩亓士 較器55的輸出結果。
Line-out (1):此信號為開放汲極(open-drain)信號,乃將 標記予以反相;其與同一線(line )其它單元的line-out信號42 併行連接起來,並作為X-transcoder電路39的一個輸入。
Column-out (1):此信號為開放汲極(〇peri-drain)信號, 乃將標記予以反相;其與同一線(line)其它單元的c〇lumn_out 信號併行連接起來,並作為Y-transcoder電路40的一個輸入。 Line-in (2):由X-transcoder電路39所產生的兩個信號, φ line-in[l]、line-in[0】,其分別代表下列意義: • line-in[l】:該列是否為包含有已標記單元的第一列; • line-in[0】:該列是否為已標記之第一列,或者大於已標 記之第一列。
Column-in (2):由Y-transcoder電路40所產生的兩個信 號,column-in[l】、column-in[0】,其分別代表下列意義: • column-in[l]:該行是否為包含有已標記單元的第一行; • column-in[0]:該行是否為已標記之第一行。
No-eq:此信號16為開放汲極(open-drain)信號,當cfind 形式的命令執行成功時,此no-eq信號變為主動低電位(active 32 1300899 low) 〇
Symbol-data (N+ 1):此雙向信號用以控制單元的寫入戍許 取0
Interrupt 101:此信號係由單元所產生,當一或多個單元中 具有預設的識別圖樣位元時,表示未含有效符號,或者其内 空的。此信號為開放汲極(open-drain)信號,且M w 一疋 產生的Μ個interrupt信號經邏輯”或(〇r) ”運算,以疋> 三圖之interrupt信號101。
單元的内部結構(internal structure) 第十四圖顯示單元的内部結構,其包含下述電路 REG電路60:為(N+1)位元的暫存器,用以儲存單元内 容及相關的標記位元。 '内 MUX1電路61 :由N個四輸入多工器所組成,其根據選擇碼 cl (65)、c2 (66)讓四個輸入當中的一個儲存於REG電路6〇裡: 選擇情形有下列幾種: •外部輸入的data-in信號10 ; •外部輸入的symbol-data信號1〇6 ; •自前一單元的left-cell-out信號51 ; •來自後一單元的right-cell-in信號;或 • REG電路60所儲存的值。 MUX2電路62 :由N個四輸入多工器所組成,其根據選擇碼 c3 (67)、c4 (68)讓四個輸入當中的一個儲存於REG電路6〇裡。 選擇情形有下列幾種: • PLA電路63所產生的標記; • symbol-data信號106的標記位元; •自前一單元標記的left-eq-in信號53 ; 33 1300899 •來自後一單元標記的right-eq-in信號56 ;或 • REG電路60所儲存的標記。 COMP電路55:其為組合邏輯電路,當data-in輸入信號10 與right-cell-out信號59相等時,則產生輸出1。
Symbol-data (N+1):這些信號106包含某一線(line)之 單元内容,或者是傳送給外部記憶體的REG電路内容。傳送的 方向係由R/W信號112所控制。 PLA電路63 :係一種可編程邏輯陣列(PLA)之組合邏輯電 路,其產生命令位元 65、66、67、68、69、107、109、111 分別稱為cl、c2、c3、c4、c5、c6、c7、c8,以及產生反相的 no-eq 信號 16 及 column-out 信號 44。開放汲極(open-drain) 反相器70用以驅動column-out信號44。PLA電路63輸入底 下各種信號:
Command信號14包含有聯結記憶體(CM) 206所要執行 的命令(find、cfind、index 等); REG電路60的值; 前一單元比較器55的輸出,係藉由left-eq-in輸入端53 來輸入; 後一單元比較器55的輸出,係藉由right-eq-in輸入端56 來輸出; no-eq信號; X-transcoder電路所產生的line-in信號43及γ一 transcoder電路所產生的column-in信號45。 當REG電路60内包含預設的識別圖樣用以表示未用到或無 效的單元,且相關的標記也被設定時,則PLA電路63所產生的 interrupt信號15將變為主動(active )。 REG電路60的N位元輸出被N個三態(tri-state)反向器 34 1300899 71所反向,產生data-out信號11 ;其中,反向器71係受到 •信號c5 (69)的控制。開放没極(open-drain)反相器64將REG 電路60的標記位元予以反相,並產生line-out信號42。一開 放沒極(open-drain)反相器將得自PLA電路63的信號予以 反相後,得到column-out信號44。理論上,從二維陣列各單 元的data-out信號11及no-eq信號16都連接起來,且屬於同 一線(line)的line-out信號44也都連接起來。
Transcoder 第十五圖顯示兩個transcoder的内部結構。其中,X-transcoder電路39接收底下的信號: line-out信號包含有(λ/Ν)位元:這些信號來自每一線(line), 係用以表示標記單元的存在; address-high信號96包含有log(N)/2個位元,用以表示饋 至聯結記憶體(CM) 206的上半位址,並用以從(VN)線(line) 當中選擇其中一條; 五位元的command信號14僅用以實施次命令:set-limit、 set-limit-address、limited-find、limited-cfind、limited-reverse-find 、limited-reverse-cfind、limited-write-all、 ram-read、及 ram-write o Y-transcoder電路40接收底下的信號: column_oui信號44包含有(VM)個位元:這些信號來自每一 行(column ),係用以表示標記單元的存在,此已標記位元為該 線的第一個標記; address-low信號97包含有(VM)個位元,用以表示線選擇位 址的下半位址; 五位元的command信號14僅用以實施前述的次命令。 35 1300899 二transcoder包含有下列電路: DCD解碼器83,用以解X-transcoder電路39的上半位址, 或者解Y-transcoder電路40的下半位址。 MUX-3多工器82包含(VM)個雙向多工器,其使用c6信號92 作為選擇控制。 前置網路PN-OR電路91用以執行邏輯”或”運算。 拴鎖LATCH電路85,用以鎖住PN-OR的輸出信號,並用 以界定(delimit)聯結記憶體(CM) 206的主動部分;其使用 c7信號93作為載入命令。 MUX-4多工器87與MUX-3多工器82具有相同的結桃,其 使用c8信號94作為選擇信號。 由(λ/Μ)個XOR閘所組成的線性網路XOR-1 (86)用以決定 MUX-4多工器87輸出中第一個1。 優先編碼器(priority encoder) ΡΕ (80)將 X-transcoder 電路的line-outs 42編碼,或者是將Y-transcoder電路的 column-outs信號44編碼,用以產生X-transcoder電路之 index攔位的上半部index-high 38,或者Y-transcoder電路 之index欄位的下半部index-low 46。 優先編碼器(priority encoder) RPE (81)與優先編碼器 (priority encoder) PE (80)係接收一樣的輸入,但是方向剛好 相反,因此產生了 c-index的上半及下半部。 PLA電路84為一個可編程邏輯陣列(PLA)之小型組合邏輯 電路,其將command field 14解碼以得到c9位元92、c 10位 元93、c 11位元94、c 12位元95,用以控制transcoder電路。 XOR-2電路89產生一個p/2位元值,其饋至AND閘88的 p/2輸入端’以產生eq信號36。此eq信號是index-high信 號98與X-transcoder電路39之優先編碼器rpe (81)的反向 index上半部之比較結果,或者是index-l〇w信號99與Y- 36 1300899 transcodei·電路40之優先編碼器RpE (81)的反向下半 - 部之比較結果。 隨機存取記憶體(RAM) 第十六圖顯示RAM控制器12〇的方塊圖,而第十七圖則顯 示此RAM控制器120的内部結構。此RAM控制器12〇對於每 線(line)儲存有兩個位元·其第一位元儲存於暫存器ar 208 中,其包含L個位元,分別對應至RAM 13〇當中的每一線。此 , L位元饋至優先解碼器(prior;[ty enc〇der) 21〇,用以 產生被δ又疋為1之最小權重之位元。優先解碼器p_enc 210之 輸出為line-address 201,亦即被選為聯結記憶體(CM) 2〇6 下一個進行讀寫之線(line)的位址。例如,如果暫存器AR2〇8 内容為00101110,則優先解碼器P_ENC 210會在line_address 201上輸出010,也就是暫存器AR 208中被設為1之最低有效 位址。line-address 201還同時被饋至多工器MUX-7 213之0 輸入端;當被適當選擇後,將這些内容饋至解碼器ADCD 214。 此解碼器含有L個輸出’其中一個為主動(active),其餘為非 主動(inactive)。此主動輸出與暫存器Ar 208之最低有效位元 • 1具有相同的權重,該權重(或位址)藉由line-address 201 送出。例如,如果line - address為010,則解碼器ADCD 214 產生00000010,其中位元1之權重為2。解碼器ADCD 214 所輸出的1個信號與暫存器AR 208之L位元輸出經由L個XOR 閘215進行邏輯”互斥或”運算,以產生和AR相同的圖樣 (pattern),然而其中的最低有效位元1已經被設為〇 〇針對相 同例子,假如AR含有00101110,則Ρ-ENC輸出010,其饋 至解碼器ADCD後變為00000010,其與00101110進行邏輯” 互斥或”運算,因而產生00101100。XOR閘215的輸出經由多 工器MUX-6 209饋至暫存器AR,當step-enable信號222變 37 1300899 為^動時則於下一時脈進行儲存。此信號為c〇m信號2〇2的一 部份’並由外部處理器來控制聯結引擎(CE) 205。 ^ 對於 AR、P〜ENC、MUX-7、ADCD、L 個 X0R 閘、及 MUX-6 所形成的電路,當一開始時AR内儲存的值為κ,於line-address 之輸出之總和也等於K。再者,此電路於step_enabie信號的控 制下,於固定時間内產生2的冪方。當所有的位元1都從暫存器 AR中消失了,優先解碼器(priority enc〇der)會偵測到此情 形,並讓stop信號221變為主動,此再進一步由外界的處理器 偵彳于並知道不再有其它的線(line )需要處理了。本發明可以自 | 動產生位元1的權重,並於每一個單一時脈週期内輸出此權重。 當暫存器AR中的位元1逐漸減少時,聯結記憶體(cm) 206 則進行記憶體線(line)以及進行字串的處理。在這些運作的最 後,當聯結記憶體(CM) 206的内容被存回線(line),被反相 及經過邏輯”或”運算的no-flag信號15被儲存於L個D-flip-flop 218當中的一個。被選到的flip-flop之位址相等於ram之線 (line)的位址;因此,flip-fl〇p的選擇係使用解碼器ADCD的 輸出,此將於底下說明。這L個D-flip-flop 218具有一特定的 位元圖樣(pattern),其正代表下一運算所要處理的線(line) 組合。 RAM控制器120之初始化需要在暫存器AR中存入位元1, 使得RAM當中需要處理的線(line)所對應的位元被設定為1。 這些有效線被儲存於RAM中相鄰的區塊中,因而最小的位址為 〇。例如,假設RAM中僅有三條線是有效的,則暫存器ar的最 低三個位元被設為1,其餘為0。在這個情形下,由於有效線位 址為0、1、2 ’因此其最高位址線為2。在此情形下,外界處理 器於limit-address信號207送給RAM —個最高的位址線,並 38 1300899 讓init信號224變為主動。 • MUX-7的輸出被饋至前置或電路or-pn 216,其將值為〇 之所有位元轉換為1,以及將權重小於僅有一個1位元之位元轉 換為1。例如,假如OR-PN接收到oooooioo,其權重為2, 則其輸出00000111。這L個信號經過L個OR閘219並饋至 L 個 D-flip-fl〇P 218 的 D 輸入端。這些 D-flip-flop 218 係分 別由ADCD電路所產生的L個信號所驅動,並分別與init信號 224進行邏輯或運算。這L個flip-fl〇p之内容中,位元1係對 應於RAM中的有效線,而flip-fi〇p之内容藉由控制多工器 , MUX-6 209以載入暫存器AR 208。 如第十八圖所示,聯結引擎(CE) 205係由包含記憶體單元 或處理單元的聯結記憶體(CM ) 206,和多數個隨機存取記憶 體(RAM)向量(vectors) 400所組成。其中,每一個記憶體 向量的容量相等於聯結記憶體(CM) 206的容量,亦即η個記 憶單元;而聯結引擎(CE) 205則受到外部控制器255的控制。 在發明實施例中,記憶體向量400係用於處理(查詢、插入、刪 除)比聯結記憶體(CM ) 206還來得長的字串,因而可以減少 藝 實施的成本以及降低消耗的功率。 聯結引擎(CE) 205對於命令碼的執行係由控制器255所驅 動。聯結引擎(CE) 205與控制器255之間的介面使用四個特 殊暫存器,如第十八圖所示: ‘INR’ 402-資料輸入暫存器;在本實施例中,聯結引擎(CE) 205提供給聯結引擎(CE) 205的參數就是藉由INR得到的; OUTR’ 404-作為資料輸出之用,其包含未標記(no mark) 位元以及一數值。假如至少有一單元為已標記,則OUTR包含位 39 1300899 元〇以及位於第一標示單元的數值;否則,〇UTR包含位元丄以 - 及一個與實施相關的特殊數值,例如11...工; • ‘〇PR’ 4〇6-指令暫存器,包含聯結引擎(CE) 205目前的執 行碼(其來源為控制器255中的一個攔位); ‘VAR’ 408-作為記憶體向量的位址暫存器。VAR暫存器408 的内容係由特殊的控制器255指令更新的,且此暫存器内容作為 一些直接存取記憶體向量之指令的參數;此暫存器也用來作為記 憶體單元相關的一般暫存器之執行。 第十八圖所顯示的輸入/輸出線41〇可以用來存取聯結記憶 験體(CM) 206的兩端,此輸入/輸出線41〇進一步說明如下: left—m 412={w,mark, eq,first},預設初始值為 〇 (eq=1 表示單元中的兩個運算元(〇perancjs)是相等的;first==i表示 該單元係為第一被標示單元); ‘left一out’ 414={w,mark,eq,first},係來自第一單元。 本發明聯結引擎(CE) 205的實施電路可以作一些變化,而 仍然屬於本發明的範圍,只要是控制器255可以發出命令給聯結 • 引擎(CE) 205,以及從聯結引擎(CE) 205取得資料。本發 明的特徵之一是,聯結記憶體(CM) 206内的m位元儲存單元 除了用來儲存資料,也可以用以處理資料;該資料之處理可能發 生在違m位元儲存單元内,也可能發生於一特定單元之左邊或 右邊單元。藉由增加聯結記憶體(CM) 206内m位元儲存單元 的功能性,本發明較之傳統處理系統具有更複雜的系統功能與特 性0 本發明的另一特徵為,在聯結記憶體(CM) 206内的單元級 (cell level)之所以具有資料處理能力,主要係因為每一個單元 1300899 可以被標記(marked),或者標示為後續即將處理之工作,或者 • 於聯結記憶體(CM) 206内之某單元或鄰近單元進行運算元之 處理。 本發明的優點之一在於,其不但可以在單一時脈週期内同時 執行多個指令,也可以藉由當地(l〇cal)及全域(gl〇bal)狀態 訊息來限制執行全域傳播指令(g1〇bally broadcast instructions )的記憶單元。特別的是,藉由在個別單元級所使 用的標示位元,因而可以影響標示單元左邊或右邊的單元,此為 傳統所未見者。因此,本發明於系統級提供標示狀態的觸發或修 瞻改功能,其係根據聯結記憶體(CM) 20ό内個別單元之性質, 而非針對特定的位址。 本發明結合了處理及記憶於同一階級,因此個別的單元不需 要對個別的記憶體區塊進行存取以完成其工作。再者,由於運算 元係位於單元級之區域位置,因此,結果也是儲存於這些地方, 因而減少彼此的通訊時間、處理時間、晶片面積、及消耗功率。 本發明聯結記憶體(CM) 206的η個單元中可以彈性的選擇 # 某部分作為關鍵攔位(key field)或者資料攔位。相較於傳統關 聯記憶體結構之固定關鍵攔位與資料欄位,本發明的聯結記憶體 (CM) 206可以根據命令的性質及所要執行的運算來調整其關 鍵欄位或資料攔位。 第十九圖顯示傳統關聯記憶體5〇〇的格式;為了簡化說明, 在此僅顯示一列。本發明不限於該架構,且更提供比該圖式更複 雜的陣列單元。 如第十九圖所示,關鍵攔位(key field) 502具有六攔,而 1300899 資料攔位(datafield) 504具有八攔;這裡的搁位值僅為例示, 其可以根據實際的應用來設計訂定。在傳統的關聯記憶體中,對 於所有命令及運算,這兩個攔位都是固定的。舉一個例子,假設 一傳統關聯記憶體來設計一資料庫,其中資料欄位代表一特 定資料内容,例如員工的資訊,而關鍵攔位則表示員工的姓。當 下達一命令後,控制器於關聯記憶體中將查詢關鍵攔位5〇2來^ 到Smith’,而相關的資料則是位於資料攔位5〇4内,其將相關 的貝料攔位標記連結(tag)至,Smith,的關鍵攔位。在此例子中, 其關鍵攔位無法超過六攔。 在本發明之記憶則擎中,關鍵攔位與資料攔位之間的區隔 已經被消除了 ’因此’控制器可以根據所下達的命令來全面 取這兩個攔位502、504的内容。 值得注意的是,本發明與傳統關聯記憶體的差異並不在於結 構’而在於軟體以及命令的實施方面。也就是說,本發明根據特 定下達的命令,控制器可以彈性的存取關鍵字(key)或者資料 (data)。因此,某一記憶單元中的關鍵字(key)或者資料(如⑷ 特性係存在於命令本身,而非存在於襲記龍的結構中。
二如第一十圖所示,控制器可以從本發明實施例之丄斗單元關聯 記憶體510的單元2 (ceu 2)來存取資料;此單元2 (_ 2) 相較於傳統關聯記憶體(第十九圖)則是屬於_攔位。又例如, 控制态可以從本發明實施例之關聯記憶體51〇的單元9 (aU 9 ^存取關鍵字;此單元9 (eell 9)相較於傳統關聯記憶體(第 隐體較傳統關聯記憶體具有更大的彈性。 由於本發明將關鍵欄位與f料攔位之間的區隔加以取消,使 42 1300899 得記憶體的編程(programming)能力也跟著提高了。 φ ♦ 再以前述例子為例,傳統的關聯記憶體無法進行不同格气的 " 查詢;例如,無法查詢具16欄位之關鍵字及1024攔位之資^ 相對的,由於本發明並未對關鍵欄位與資料攔位加以固貝二 M疋,因而 可以根據個別的命令來隨時定義何者為關鍵字何者為資料,所以 可以廣泛的進行一般性的處理。 再舉一個例子,控制器首先使用具5單元的關鍵字以查詢所 φ 有員工的姓;接下來的命令則查詢另一個具2單元的關鍵字。藉 此,本發明於進行每一次特殊的處理時,並不需要對整個架構^ 新進行設計。本發明提供一個一般性的聯結記憶體,其: . 穴J以根據 個別命令來指定所需要的資料内容及長度。 由於本發明之聯結記憶體(CM) 206的關鍵字與資料之間並 非固定的,因而可以實施前面第三圖至第十圖所提到各種命人曰亚 由於本發明可以使用記憶體中每一單元的位元,不受限於其 所在位置也不會受到關鍵攔位與資料攔位之限制,因二^制二 鲁 255可以於一個時脈週期内全域地(globally)傳送—預二二= 至聯結記憶體(CM) 206每一個單元中,可以在一個 内來處理執行命令。 以上所述僅為本發明之較佳實制而已,並_錄定本發明之中, 範圍,·凡其它未麟本侧所揭示之精神下所完成之等效改魏修飾,^ 應包含在下述之申請專利範圍内。 ^ 【圖式簡單說明】 第-圖顯示本發明實施例之記憶體㈣的—般性架構,以及外界 43 1300899 的控制器和同步時脈電路。 第二圖顯示第一圖中所示的記憶體引擎,及其相關的匯流排,用 以在記憶體引擎中傳遞訊息。 第三圖顯示第一圖之記憶體引擎的流程圖。 第四圖顯示find命令的執行流程。 第五圖顯示cfind命令的執行流程。 第六圖顯示read命令的執行流程。 第七圖顯示insert命令的執行流程。 第八圖顯示delete命令的執行流程。 第九圖顯示next命令的執行流程。 第十圖顯示jump命令的執行流程。 第十一圖之方塊圖顯示聯結記憶體與外界連接之輸出入信號,以 及與其它記憶體的連結。 第十二圖顯示聯結記憶體的内部結構實施例,其中靜態或動態記 憶體單元所組成的陣列可以經由二個transcoder進行存取。 第十三圖顯示聯結記憶體與外界的輸出入信號。 第十四圖顯示記憶體單元的内部電路,其包含有符號及標記的儲 存,藉此,符號及標記得以被寫入或讀取以及作比較。 第十五圖顯示第十二圖中的transcoder之内部電路,藉由這些 電路,可以產生第一及最後一個已標記單元的位址。 第十六圖顯示線記憶體係由隨機存取記憶體(RAM)及RAM控 1300899 制器所組成。 第十七圖顯示第十六圖之RAM控制器的内部結構。 第十八圖顯示第一圖中聯結引擎(CE)的細部結構。 第十九圖顯示傳統關聯記憶體之格式。 第二十圖顯示本發明之關聯記憶體架構,其去除了傳統關聯記憶 體(第十九圖)對於關鍵欄位與資料欄位之間的區隔。 【主要元件符號說明】
10 data-in匯流排 11 data-out匯流排 12 address位址輸入 13 index輸出端 14 command 端 15 no-flag輸出信號 16 no-eq輸出信號 17 one-flag輸出信號 18 data-right-out 信號 19 data-right-in 信號 20 column-in 信號 21 column-out 信號 22 line-out 信號 23 line-in 信號 24 時脈信號 25 data-left-out 信號 26 data-left-in 信號 30 二維陣列單元(cell) 34 二輸入之AND閘 35 one-flag 信號 45 1300899
36 eq信號 38 index-high 39 X-transcoder 電路 40 Y- transcoder 電路 41 eq信號 42 line-out 信號 43 line-in 信號 44 column-out 信號 45 column-in 信號 46 index - low 51 left-cell-out 信號 52 left-cell-in 信號 53 left-eq-in 信號 54 left-eq-out 信號 55 比較器 56 right-eq-in 信號 57 right-eq-out 信號 58 right-cell-in 信號 59 right-cell-out 信號 60 REG電路 61 MUX1電路 62 MUX2電路 63 PLA電路 64 開放沒極(open-drain)反相器 65 選擇碼cl 66 選擇碼c2 67 選擇碼c3 68 選擇碼c4 69 選擇碼c5 46 開放汲極(open-drain)反相器 三態(tri-state)反向器
優先編碼器PE
優先編碼器RPE MUX-3多工器 DCD解碼器 PLA電路 拴鎖LATCH電路 線性網路XOR-1 MUX-4多工器 AND閘 XOR-2電路 前置網路PN-OR電路 c9位元 c 10位元 c 11位元 c 12位元 address-high 信號 address-low 信號 index-high 信號 index-low 信號 資料隨機存取匯流排(data RAM) interrupt 信號 line-select 信號 c6 c7 c8 R/W信號 RAM控制器 47 1300899 130 隨機存取記憶體(RAM) 200 線記憶體(Line Memory)隨機存取裝置 201 line-address 202 com信號 203 word-address 匯流排 204 data-words 匯流排 205 聯結弓丨擎(Connex Engine,CE) 206 聯結記憶體(Connex Memory,CM) 207 limit-address 信號
208 暫存器AR
209 多工器MUX-6
210 優先解碼器P-ENC 213 多工器MUX-7
214 解碼器ADCD 215 XOR閘
216 前置或電路OR-PN 218 D-flip-flop 219 OR 閘 221 stop 信號 222 step-enable 信號 224 init 信號 255 控制器 256 同步時脈電路 302、304、306、307、308、309、314、316、318、320 第三圖的步驟 304’、303、305 第四圖的步驟 322、324、326第五圖的步驟 330 第六圖的步驟 332 第七圖的步驟 48 1300899 334 第八圖的步驟 335 第九圖的步驟 336 第十圖的步驟 402 1NR’資料輸入暫存器 404 OUTR’暫存器 406 OPR’指令暫存器 408 VAR’位址暫存器 410 輸入/輸出線 412 ’left_in’輸入線 414 ‘left_out’ 輸出線 500 關聯記憶體 502 關鍵欄位(key field) 504 資料欄位(data field) 510 關聯記憶體
49
Claims (1)
1300899 外年7月/^修(粟)正替換頁 十、申請專利範圍: suPP〇r^H料^理系統之關聯記憶體mem〇ry C體裝置,其包含η個單^ 制:’用以發出一指令至該關聯記憶體裝置; —秒^崎丨—$步雜健,制步時脈信號每 輪出,關^=, 2 ^、中1才曰令^均等地施加於每一個該單元。 suppfrt^ ^^i^l^tt^(associative memory =M,體裝置’其包含η個單元; 元;控制③’用以發出—命令至該關聯記憶體裝置之η,個單 及 S—貝料t系統之關聯記憶.sso—ve memory 一關聯記憶财置,其包含η個單元; 二控制用以發出一指令至該η個單元;及 二t撼令於執行時定義出—關鍵攔位的大小及特性。 |#tu備'圍第3項所述之支援資料處理系統之關聯記憶 體5又備其中上述之_欄位施加於所有該η個單元。 50
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/842,075 US7069386B2 (en) | 2001-08-10 | 2004-05-10 | Associative memory device |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200604802A TW200604802A (en) | 2006-02-01 |
TWI300899B true TWI300899B (en) | 2008-09-11 |
Family
ID=35428542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW094114905A TWI300899B (en) | 2004-05-10 | 2005-05-09 | Associative memory support for data processing cross reference to related applications |
Country Status (8)
Country | Link |
---|---|
US (1) | US7069386B2 (zh) |
EP (1) | EP1763759A4 (zh) |
JP (1) | JP2007536696A (zh) |
KR (1) | KR20070052240A (zh) |
CN (1) | CN100565475C (zh) |
SG (1) | SG117550A1 (zh) |
TW (1) | TWI300899B (zh) |
WO (1) | WO2005114426A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI451260B (zh) * | 2008-09-26 | 2014-09-01 | Cypress Semiconductor Corp | 記憶體系統及方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8631195B1 (en) * | 2007-10-25 | 2014-01-14 | Netlogic Microsystems, Inc. | Content addressable memory having selectively interconnected shift register circuits |
US7924590B1 (en) | 2009-08-10 | 2011-04-12 | Netlogic Microsystems, Inc. | Compiling regular expressions for programmable content addressable memory devices |
US7916510B1 (en) | 2009-08-10 | 2011-03-29 | Netlogic Microsystems, Inc. | Reformulating regular expressions into architecture-dependent bit groups |
US8527488B1 (en) | 2010-07-08 | 2013-09-03 | Netlogic Microsystems, Inc. | Negative regular expression search operations |
US11114136B2 (en) * | 2018-08-21 | 2021-09-07 | Marcon International Inc | Circuit, system, and method for reading memory-based digital identification devices in parallel |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4491932A (en) * | 1981-10-01 | 1985-01-01 | Yeda Research & Development Co. Ltd. | Associative processor particularly useful for tomographic image reconstruction |
US4575818A (en) | 1983-06-07 | 1986-03-11 | Tektronix, Inc. | Apparatus for in effect extending the width of an associative memory by serial matching of portions of the search pattern |
US4907148A (en) | 1985-11-13 | 1990-03-06 | Alcatel U.S.A. Corp. | Cellular array processor with individual cell-level data-dependent cell control and multiport input memory |
US5122984A (en) | 1987-01-07 | 1992-06-16 | Bernard Strehler | Parallel associative memory system |
US4983958A (en) | 1988-01-29 | 1991-01-08 | Intel Corporation | Vector selectable coordinate-addressable DRAM array |
AU624205B2 (en) | 1989-01-23 | 1992-06-04 | General Electric Capital Corporation | Variable length string matcher |
US5497488A (en) | 1990-06-12 | 1996-03-05 | Hitachi, Ltd. | System for parallel string search with a function-directed parallel collation of a first partition of each string followed by matching of second partitions |
US5319762A (en) | 1990-09-07 | 1994-06-07 | The Mitre Corporation | Associative memory capable of matching a variable indicator in one string of characters with a portion of another string |
DE69131272T2 (de) * | 1990-11-13 | 1999-12-09 | International Business Machines Corp., Armonk | Paralleles Assoziativprozessor-System |
US5150430A (en) | 1991-03-15 | 1992-09-22 | The Board Of Trustees Of The Leland Stanford Junior University | Lossless data compression circuit and method |
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 |
US5640582A (en) | 1992-05-21 | 1997-06-17 | Intel Corporation | Register stacking in a computer system |
US5818873A (en) | 1992-08-03 | 1998-10-06 | Advanced Hardware Architectures, Inc. | Single clock cycle data compressor/decompressor with a string reversal mechanism |
US5440753A (en) | 1992-11-13 | 1995-08-08 | Motorola, Inc. | Variable length string matcher |
JPH07114577A (ja) | 1993-07-16 | 1995-05-02 | Internatl Business Mach Corp <Ibm> | データ検索装置、データ圧縮装置及び方法 |
US5602764A (en) | 1993-12-22 | 1997-02-11 | Storage Technology Corporation | Comparing prioritizing memory for string searching in a data compression system |
US6317819B1 (en) | 1996-01-11 | 2001-11-13 | Steven G. Morton | Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction |
US5828593A (en) | 1996-07-11 | 1998-10-27 | Northern Telecom Limited | Large-capacity content addressable memory |
US5909686A (en) * | 1997-06-30 | 1999-06-01 | Sun Microsystems, Inc. | Hardware-assisted central processing unit access to a forwarding database |
US6089453A (en) | 1997-10-10 | 2000-07-18 | Display Edge Technology, Ltd. | Article-information display system using electronically controlled tags |
US6226710B1 (en) * | 1997-11-14 | 2001-05-01 | Utmc Microelectronic Systems Inc. | Content addressable memory (CAM) engine |
US6295534B1 (en) | 1998-05-28 | 2001-09-25 | 3Com Corporation | Apparatus for maintaining an ordered list |
US6542989B2 (en) | 1999-06-15 | 2003-04-01 | Koninklijke Philips Electronics N.V. | Single instruction having op code and stack control field |
US6611524B2 (en) * | 1999-06-30 | 2003-08-26 | Cisco Technology, Inc. | Programmable data packet parser |
US6760821B2 (en) * | 2001-08-10 | 2004-07-06 | Gemicer, Inc. | Memory engine for the inspection and manipulation of data |
US6901476B2 (en) * | 2002-05-06 | 2005-05-31 | Hywire Ltd. | Variable key type search engine and method therefor |
-
2004
- 2004-05-10 US US10/842,075 patent/US7069386B2/en not_active Expired - Fee Related
-
2005
- 2005-04-29 CN CNB2005800224590A patent/CN100565475C/zh not_active Expired - Fee Related
- 2005-04-29 WO PCT/US2005/014992 patent/WO2005114426A1/en active Application Filing
- 2005-04-29 KR KR1020067023510A patent/KR20070052240A/ko not_active Application Discontinuation
- 2005-04-29 EP EP05741270A patent/EP1763759A4/en not_active Withdrawn
- 2005-04-29 JP JP2007513188A patent/JP2007536696A/ja not_active Abandoned
- 2005-05-04 SG SG200502761A patent/SG117550A1/en unknown
- 2005-05-09 TW TW094114905A patent/TWI300899B/zh not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI451260B (zh) * | 2008-09-26 | 2014-09-01 | Cypress Semiconductor Corp | 記憶體系統及方法 |
Also Published As
Publication number | Publication date |
---|---|
US7069386B2 (en) | 2006-06-27 |
US20040210727A1 (en) | 2004-10-21 |
TW200604802A (en) | 2006-02-01 |
WO2005114426A1 (en) | 2005-12-01 |
CN100565475C (zh) | 2009-12-02 |
KR20070052240A (ko) | 2007-05-21 |
EP1763759A1 (en) | 2007-03-21 |
CN101076787A (zh) | 2007-11-21 |
SG117550A1 (en) | 2005-12-29 |
JP2007536696A (ja) | 2007-12-13 |
EP1763759A4 (en) | 2009-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6760821B2 (en) | Memory engine for the inspection and manipulation of data | |
JP2668438B2 (ja) | データ検索装置 | |
CN107608750B (zh) | 用于型式辨识的装置 | |
US5423011A (en) | Apparatus for initializing branch prediction information | |
TWI300899B (en) | Associative memory support for data processing cross reference to related applications | |
US20150120754A1 (en) | Systems and Methods for Generating Bit Matrices for Hash Functions Using Fast Filtering | |
US8819376B2 (en) | Merging arrays using shiftable memory | |
US7836253B2 (en) | Cache memory having pipeline structure and method for controlling the same | |
JP2006509306A (ja) | 関係アプリケーションへのデータ処理システム相互参照用セルエンジン | |
KR100346515B1 (ko) | 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일 | |
US7694068B1 (en) | Re-entrant processing in a content addressable memory | |
KR102513265B1 (ko) | 레지스터 뱅크에 저장된 데이터 요소들의 하나 이상의 벡터와 메모리 사이에서 복수의 데이터 구조를 전송하는 장치 및 방법 | |
EP0652521A1 (en) | Rapid data retrieval from a physically addressed data storage structure using memory page crossing predictive annotations | |
CN104978284A (zh) | 处理器子程序高速缓冲存储器 | |
KR950006590B1 (ko) | 캐시 메모리를 갖는 마이크로 프로세서 | |
EP0518575A1 (en) | Memory unit for data processing system | |
JP2007536696A5 (zh) | ||
US20160217079A1 (en) | High-Performance Instruction Cache System and Method | |
US5649178A (en) | Apparatus and method for storing and initializing branch prediction with selective information transfer | |
JPH08255079A (ja) | コンピュータ・プロセッサ用のレジスタ・キャッシュ | |
US6629297B2 (en) | Tracing the change of state of a signal in a functional verification system | |
US20040039877A1 (en) | Information processing device equipped with improved address queue register files for cache miss | |
US20020116689A1 (en) | Tracing different states reached by a signal in a functional verification system | |
Lai et al. | REMAP+: An efficient banking architecture for multiple writes of algorithmic memory | |
Hascsi et al. | The Connex Content Addressable Memory (C 2 AM) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |