TWI540578B - A semiconductor device, and a method of writing / reading a registered address in a semiconductor device - Google Patents
A semiconductor device, and a method of writing / reading a registered address in a semiconductor device Download PDFInfo
- Publication number
- TWI540578B TWI540578B TW103104479A TW103104479A TWI540578B TW I540578 B TWI540578 B TW I540578B TW 103104479 A TW103104479 A TW 103104479A TW 103104479 A TW103104479 A TW 103104479A TW I540578 B TWI540578 B TW I540578B
- Authority
- TW
- Taiwan
- Prior art keywords
- address
- data
- divided
- memory
- search
- 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
- G11C15/046—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 using non-volatile storage elements
-
- 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
-
- 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/02—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 magnetic 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
- 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
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Static Random-Access Memory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本發明係有關一種半導體裝置、及寫入/讀取登錄位址於半導體裝置中的方法。具體而言,本發明係有關一種聯想記憶體(內容可定址記憶體,CAM,Content Addressable Memory),該聯想記憶為藉由以分割搜尋記憶墊(searching memory mat)的方式來謀求使資料搜尋時的電力消耗減少。
近年來,已成為雲端運算科技(cloud computing)時代,網路交換機(internet switch)或路由器的高性能化或電力消耗的減少,已被認作是緊急的課題。此外,以網路的搜尋引擎而言,一種能夠以更高速且低電力消耗進行確實的搜尋操作的技術正需求甚殷。為了能應付這種需求,近年來,在網路交換機(internet switch)或搜尋引擎(searching engine)方面,使用CAM的情況越來越多。
在此,一般的CAM係在對CAM內所記憶的資料進行搜尋之際,使所謂關鍵資料(key data)的搜尋資料輸入其中。另一方面,記憶體內記憶有與關鍵資料相同的資料的情況中,CAM會將記憶有該關鍵資料的所謂登錄位址的地址(address)輸出。一般而言,為了實現這種搜尋功能,必須存取(access)CAM內的整個記憶空間,故不僅使電路構成複雜化,也造成電力消耗增大的問題。特別是,這種電力消耗增大的問題,由於會隨著CAM規模而變大,所以現在被認為是非常重大的問題。
對於這種問題,在例如專利文獻1中,已提案一種以一邊活用CAM的高速搜尋性一邊謀求降低電力消耗為目的的資料搜尋裝置。專利文獻1的資料搜尋裝置係將決定有優先次序的複數個規則資料(rule data)按照其大小順序重新賦予次序,並按照該次序分配到複數個記憶區塊(memory block)。而且,該搜尋裝置在進行資料搜尋之際,指定要搜尋的一個記憶區塊來執行搜尋處理。依此方式,專利文獻1的資料搜尋裝置在進行搜尋處理
之際,由於僅將所指定的一個區塊激活(active),而不需要將其他區塊激活,以其不需激活的程度,與一般的CAM比較,被認為可以減少搜尋時的電力消耗。
(專利文獻1)日本特開2004-185792號公報
然而,上述專利文獻1所揭露的資料搜尋裝置,與一般的記憶體比較,雖可減少搜尋時的電力消耗,但為了執行搜尋處理,必須一次就存取於區塊內的整個記憶空間。因此,習知的資料搜尋裝置,電路構成複雜,且有搜尋時電力消耗甚大的問題。依此情形,上述專利文獻1的技術對於現前的這些問題並未提出根本的解決方案。
因此,現在續需求一種在維持CAM的高速搜尋性能的同時能夠減少搜尋處理時的電力消耗的新穎半導體裝置。
因此,經本發明的發明人等針對上述問題點的解決手段專心銳意研究的結果,獲得了一種將搜尋記憶墊分割複數個,並將關鍵資料分割為複數個後,將與經分割的關鍵資料對應的登錄位址寫入到經分割的搜尋記憶墊的新認知。依此方式,藉由將關鍵資料分割為複數個並寫入到搜尋記憶墊的方式,在進行該關鍵資料的搜尋之際,即可將搜尋記憶墊作局部分性激活以進行資料的搜尋。結果,與習知的CAM相比較,本發明得以實現大幅度的消耗電力降低。從而,本發明人等乃根據上述認知,而想到能夠解決習知技術課題的方案,因而完成了本發明。
本發明的第1方面為關於半導體裝置。在此,首先,就將資料寫入半導體裝置的處理加以說明。
本發明的半導體裝置具備搜尋記憶墊102與控制電路105。
搜尋記憶墊102係使記入登錄位址用位置分配於y軸方向(行方向),關鍵資料則朝x軸方向(列方向)分配。
在此,搜尋記憶墊102藉由將分配關鍵資料的區域沿x軸方向分割成複數個,形成有複數個分割記憶體102a、102b...。
而且,控制電路105係連接於搜尋記憶墊。
在此,控制電路105具有輸入部1051、分割部1052、及寫入部1053。
關鍵資料(輸入資料)係輸入於輸入部1051。
分割部1052係將輸入到輸入部的關鍵資料(輸入資料)分割成複數個。
寫入部1053係將分割部所分割的各個關鍵資料以該分割的關鍵資料作為位址分配到分割記憶體,並將與該經分割的各個關鍵資料對應的登錄位址寫入到該分割記憶體。
依上述構成的方式,本發明的半導體裝置中,首先,使搜尋記憶墊102中的分配關鍵資料的區域分割成複數個。藉此方式,搜尋記憶墊102即分割成複數個分割記憶體102a、102b...。在此,本發明係以對此複數個分割記憶體102a、102b...寫入與關鍵資料對應的登錄位址的方式來記憶關鍵資料。亦即,本發明係在關鍵資料輸入到控制電路105時,將該關鍵資料分割成複數個。接著,控制電路105會針對所分割的各個關鍵資料,將分配到該關鍵資料的登錄位址寫入到分割記憶體102a、102b...。而且,此時,控制電路105在將登錄位址寫入到分割記憶體時,會將分配到搜尋記憶墊102之y軸的登錄位址的記入位置,當作經分割的關鍵資料內容(二進制資料),而將與該經分割的關鍵資料對應的登錄位址寫入到藉該分割的關鍵資料來表示的位置。
依此方式,本發明的半導體裝置,除了將搜尋記憶墊102分割成複數個,還將與分割成複數個的關鍵資料對應的登錄位址寫入到該處。藉由進行這種寫入處理的方式,就可以以低消耗電力且高速方式進行關鍵資料的讀取處理。亦即,如上所述,在本發明中,係使關鍵資料分割成複數個,並使該經分割的各個關鍵資料的相關登錄位址記憶到分割記憶體。因此,在搜尋登錄位址之際,不必一次就將搜尋記憶墊102整體活化,而可以使搜尋記憶墊102按每一個分割記憶體102a、102b...作局部性活化以進行搜尋。從而,若依本發明,可以一面用與習知CAM同樣的高速性實現資料搜尋,一面又以極低於習知CAM的電力消耗執行資料搜尋。
本發明的半導體裝置中,控制電路105較佳為再具有衝突重複資訊記憶部1054。
衝突重複資訊記憶部1054在藉由寫入部使複數個登錄位址寫入到同一個分割記憶體的情形中,會將表示登錄位址衝突重複的資訊寫入到該分割記憶體。
本發明的半導體裝置中,由於控制電路105的寫入部1053係將分割成複數個的各個關鍵資料,以該分割的關鍵資料作為位址,將與該分割關鍵資料對應的登錄位址寫入到該分割記憶體,而有複數個登錄位址寫入到相同分割記憶體的相同位址的可能性。如此,複數個登錄位址寫入到相同位址的現象,在本案說明書中係以「衝突重複」字眼來表示。在此,本發明的半導體裝置,在進行登錄位址的寫入處理中發生「衝突重複」時,將表示衝突重複的資訊(旗標等)記入到該衝突重複的位址,並直接繼續執行寫入處理。藉此方式,就可使登錄位址的寫入處理高速化。而且,本發明不是僅避免登錄位址的衝突重複,而是即使登錄位址有衝突重複,也不予理會,逕行寫入處理。藉此方式,本發明即可將寫入處理/讀取處理的計算法簡潔化,更進一步實現資料搜尋的高速性與低消耗電力性而兩全其美。
接著,就從半導體裝置讀取資料的處理加以說明。
本發明的半導體裝置中,控制電路105再具有讀取部1055。
讀取部1055係在作為搜尋對象資料的關鍵資料輸入到輸入部時發揮其功能。亦即,本發明中,作為搜尋對象資料的關鍵資料輸入到輸入部時,分割部會將作為該搜尋對象資料的關鍵資料分割成複數個。然後,讀取部1055會以分割部所分割的各個關鍵資料當作位址而存取於分割記憶體,並從該分割記憶體讀取與該經分割的各個關鍵資料對應的登錄位址。
如上所述,本發明的半導體裝置中,關鍵資料係分割成複數個,有關該分割的各個關鍵資料的登錄位址則記憶在分割記憶體。因此,搜尋該登錄位址的處理中,不必一次就將搜尋記憶墊102整體活化,而可使搜尋記憶墊102按每一個分割記憶體102a、102b...局部活化後進行搜尋。因而,若依本發明,可用和習知CAM同樣的高速性來實現資料搜尋,又可以極低於習知CAM的消耗電力進行資料搜尋。
本發明的半導體裝置中,讀取部1055在將分割部所分割的關鍵資料作為位址而存取於分割記憶體時,在表示衝突重複的資訊寫入到該分割記憶體的情況中,對於該分割的關鍵資料,不會將對應的登錄位址讀取,而是當作無需顧慮的資料來處理。
如上所述,本發明的半導體裝置,在將經分割的關鍵資料作為位址進行搜尋記憶墊102的搜尋之際,在同一位址產生複數個登錄位址的衝突重複情形中,對於該經分割的關鍵資料,可將其自搜尋對象中除開,而當作「無需顧慮(don’t care)」的資料來處理。本發明除了將作為搜尋對象資料的一個關鍵資料分割成複數個外,亦進行搜尋記憶墊102的搜尋。因此,即使分割的關鍵資料中有若干個被當作「無需顧慮(don’t care)」資料來處理時,只要可藉至少一個分割關鍵資料來讀取登錄位址,就可確認與該登錄位址對應的關鍵資料和作為搜尋對象資料的關鍵資料是否一致。所以,依此方式,發生衝突重複時,就不需硬要讀取登錄位址,而將其當作無需顧慮(可忽略)的資料來處理,並藉由特意以原樣來續行處理,使讀取處理高速化。
不過,在進行資料的讀取處理時,若存在有登錄位址的衝突重複,理論上,可想到資料搜尋精度會被降低。因此,接著就即使在產生登錄位址衝突重複的情形中,也能提高正確進行資料搜尋的可能性的作法例子加以說明。
作為衝突重複對策的第1個例子,半導體裝置較佳為具備確認記憶墊104。該確認記憶墊104係使各登錄位址與各關鍵資料形成對應關係來記憶。
而且,在此情形中,控制電路105較佳為具有確認部1056。該確認部1056係將與讀取部1055所讀取的登錄位址對應的關鍵資料從確認記憶墊讀取,並就該關鍵資料和輸入到輸入部的作為搜尋對象資料的關鍵資料是否一致加以確認。
依上述構成的方式,本發明的半導體裝置設有建構確認記憶墊104的記憶區域,且可將登錄位址與關鍵資料的對應關係記憶在此處。例如,半導體裝置在輸入有新穎的關鍵資料時,只要將登錄位址分配到該新穎的關鍵資料,該新穎的關鍵資料與登錄位址的對應關係預先記憶到確認記憶墊
104即可。以這種作法,藉上述的讀取處理讀取登錄位址時,只要參閱確認記憶墊104就可確認該登錄位址是否與作為搜尋對象資料而輸入的關鍵資料對應。特別是,搜尋記憶墊102發生登錄位址的衝突重複,藉讀取部進行「無需顧慮(don’t care)」處理的情形中,可利用確認記憶墊102確認所讀取的登錄位址是否適當,甚為有效。依此方式,若依本發明,即使是發生登錄位址的衝突重複的情形中,也可提高正確進行資料搜尋的可能性。
作為衝突重複對策的第2個例子,半導體裝置較佳為再具備編碼電路106。該編碼電路106為配置在控制電路105的輸入部1051前段的電路。亦即,編碼電路106藉由預定的處理將關鍵資料進行編碼,並將該經編碼的關鍵資料向控制電路的輸入部輸出。
本發明的半導體裝置係為將與經分割的關鍵資料對應的登錄位址寫入到搜尋記憶墊102的分割記憶體102a、102b...,並在分割記憶體的同一位址寫入了複數個登錄位址時,採用將衝突重複資訊記入的設計。在此,為了寫入記憶體而使輸入的關鍵資料偏倚(biased)時,有資料的衝突重複頻度增高而發生不能搜尋的資料行變多的問題。亦即,資料的偏倚就像例如以遞減排序記入ID號碼那樣,發生在持續記入複數個幾乎相同的資料的情形中。幾乎相同內容的資料持續記入時,不會均勻分散在搜尋記憶墊102內,而會集中在搜尋記憶墊102的幾乎相同位址,而記入成偏倚形態。如此,在搜尋記憶墊102內,就會發生登錄位址衝突重複的可能性增高。因此,以上述構成的方式,在將關鍵資料輸入到控制電路105的輸入部1051之前,藉由編碼電路106將該關鍵資料進行編碼。此處所稱的編碼,包含以規定的計算法使關鍵資料(二進制資料)分散的方式、或將關鍵資料(二進制資料)的次序變換排列的處理。依此方式,即使在幾乎相同的關鍵資料持續輸入的情形中,藉由將這些關鍵資料編碼,即可解除這些資料的偏倚。只要資料的偏倚解除,即可使搜尋記憶墊102內發生衝突重複的可能性降低。結果,可正確進行資料搜尋的可能性就提高。
再就控制電路105的讀取部1055所存取的整個分割記憶體中寫入有表示衝突重複的資訊的情形,作為衝突重複對策的第3個例子加以說明。分割記憶體的整體發生衝突重複的可能性雖然極低,但理論上仍會發生。
因此,讀取部1055在以分割部所分割的各個關鍵資料作為位址而存取於分割記憶體時,在將表示衝突重複的資訊寫入到全部分割記憶體的情形中,較佳為將已經寫入該全部分割記憶體的登錄位址讀取。
此外,在這種情形中,確認部1056較佳為以讀取部所讀取的登錄位址依序參閱確認記憶墊,將與作為搜尋對象資料的關鍵資料一致的關鍵位址從該確認記憶墊抽出後,將與該抽出的關鍵資料對應的登錄位址輸出。
如上所述,即使來自搜尋記憶墊102的輸出為全屬忽視搜尋狀態,本發明仍可從搜尋中找到的全部位址,將業已寫入的登錄位址讀取,並以各登錄位址依序參閱確認記憶墊。藉此方式,來自搜尋記憶墊102的輸出即使為全屬忽視搜尋狀態,仍有可以資料搜尋導出正確解答的可能性。結果,可正確進行資料搜尋的可能性得以提高。
本發明的第2方面係為關於寫入/讀取登錄位址於半導體裝置中的方法。首先,就將登錄位址寫入半導體裝置方法加以說明。
本發明的方法係關於將與關鍵資料對應的登錄位址寫入半導體裝置的方法。該半導體裝置具備搜尋記憶墊102與連接於該搜尋記憶墊102的控制電路105,該搜尋記憶墊102設有朝y軸方向分配登錄位址記入用位置,並朝x軸方向分配關鍵資料的結構。
搜尋記憶墊102藉由將分配關鍵資料的區域沿x軸方向分割成複數個,形成有複數個分割記憶體102a、102b...。
在此,本發明的方法,首先使關鍵資料輸入到半導體裝置的控制電路105。之後,控制電路將所輸入的關鍵資料分割成複數個。接著,控制電路將所分割的各個關鍵資料以該經分割的關鍵資料作為位址分配到分割記憶體,並將與該經分割的各個關鍵資料對應的登錄位址寫入到該分割記憶體。
接著,就藉由上述寫入處理而寫入到半導體裝置的登錄位址的讀取方法加以說明。
該讀取處理中,首先,係使作為搜尋對象資料的關鍵資料輸入到控制電路。之後,控制電路將所輸入的作為搜尋對象資料的關鍵資料分割成複數個。接著,控制電路以經分割的各個關鍵資料作為位址而存取於分割記憶體,並從該分割記憶體讀取與該經分割的各個關鍵資料對應的登錄位址。
按照上述程序,藉由對半導體裝置進行登錄位址的寫入/讀取的方式,即可高速進行資料搜尋,同時,也可抑制資料搜尋時的電力消耗。
若依本發明,可以低電力消耗高速地進行資料的搜尋處理。
而且,若依本發明,可以實現得進行硬體式動態再建構的自動開關。此外,本發明中,若以叢發傳送(burst transmission)輸入基本輸入資訊群,基本上,在進行搜尋處理時,只要有微符碼(microcode)就很充分,並不需要程式。當然,以相同方法也可作影像壓縮或加密。
又,一般的影像處理或模糊(vague)處理時,因為是在龐大的資料庫中處理,需要步驟數較多的程式。對於這種情形,若依本發明,基本上,可以減少程式的步驟數,而可謀求程式的簡潔化。
此外,若依本發明,可以消除輸入資料(搜尋資料)的偏倚,減少資料的衝突重複頻度。同時,在本發明中,可以實現即使在發生資料衝突重複時,仍可因應的半導體裝置。
而且,若依本發明,可以實現即使搜尋時所輸入的搜尋資料發
生全行衝突重複狀態,仍可輸出搜尋結果的半導體裝置。
再者,若依本發明,可以實現藉由増加搜尋用記憶墊的分割數來使衝突重複頻度得以減少的半導體裝置。
101‧‧‧近接快捷記憶墊
102、1002‧‧‧搜尋記憶墊
102a、102b、102c、...、102l‧‧‧分割記憶體
103‧‧‧比較及閂鎖電路
104、1004‧‧‧確認用記憶體
105‧‧‧控制電路
1051‧‧‧輸入部
1052‧‧‧分割部
1053‧‧‧寫入部
1054‧‧‧衝突重複資訊記憶部
1055‧‧‧讀取部
1056‧‧‧確認部
1057‧‧‧輸出部
106‧‧‧編碼電路
第1圖為顯示本發明一實施形態之半導體裝置的主要構成的功能方塊圖;第2圖為顯示本發明一實施形態之寫入方法的主流程流程圖;第3圖為顯示本發明一實施形態之寫入方法的副流程流程圖;第4圖為顯示本發明一實施形態之讀取方法的主流程流程圖;第5圖為顯示本發明一實施形態之讀取方法的副流程流程圖;第6圖為顯示本發明一實施例之半導體記憶體電路的構成圖;第7圖為顯示本發明一實施例之SRAM-CAM的開關或搜尋動作圖;第8圖為顯示本發明一實施例之SRAM-CAM的寫入動作圖;
第9圖為顯示本發明一實施例之SRAM-CAM的搜尋動作圖;第10圖為顯示依本發明一實施例之SRAM-CAM登錄數的程度將關鍵資料寫入時所產生的搜尋時NG發生數的圖示;第11圖為顯示本發明其他實施例之半導體記憶體電路構成圖,其為以256個登錄數來適應的例子的構成圖;第12圖為顯示第11圖中,登錄寬度(登錄數)雖為256,但在關鍵資料長度32位元仍沒有誤動作的機率圖;第13圖為顯示登錄位址的資料相同時,未寫入區域増加,可以增加寫入數的構成圖;第14圖為顯示本發明又一實施例之表示擴張功能的構成圖;第15圖為顯示第14圖之寫入動作的圖示;第16圖為顯示第14圖之搜尋動作的圖示;第17圖為顯示關鍵字搜尋之基礎的遮蔽操作的圖示。
第18圖為顯示多發命中(multihit)功能之實現例的構成圖;第19圖為顯示與一般CAM的多發命中之差異的圖示;第20圖為顯示可達成一般CAM的多發命中功能的構成圖;第21圖為顯示多發命中的時脈定時(clock timing)的時序圖;第22圖為顯示搜尋記憶墊附加有LUT控制電路之狀態的構成圖;第23圖為顯示作為四則運算及數據位移(shift)源之一加法器例的構成圖;第24圖為顯示256登錄數×32鍵的CAM陣列(array)的單元部分構成圖。
第25圖為顯示開關或搜尋的構成圖;第26圖為顯示一動態組構記憶體例的構成圖;第27圖為顯示一運算時脈減少例的構成圖;第28圖為顯示登錄數較256大時之想法的概念圖;第29圖為顯示本發明第4實施例之半導體記憶體電路的構成圖;第30圖為顯示編碼位元與資料的散亂程度的說明圖;第31圖為顯示本發明第4實施例之SRAM-CAM的編碼電路輸出的原資訊及編碼位元的圖示;
第32圖為顯示本發明第4實施例之SRAM-CAM的編碼電路輸出的其他原資訊與編碼位元的圖示;第33圖為顯示本發明第4實施例之SRAM-CAM的編碼電路的構成圖;第34圖為顯示本發明第4實施例之SRAM-CAM的編碼電路的其他構成圖;第35圖為顯示本發明第4實施例之SRAM-CAM的開關或搜尋動作的圖示;第36圖為顯示本發明第4實施例之SRAM-CAM的寫入動作的圖示;第37圖為顯示本發明第4實施例之SRAM-CAM的搜尋動作的圖示;第38圖為顯示本發明第4實施例之SRAM-CAM的編碼電路輸出的原資訊與編碼位元的圖示;第39圖為顯示輸入到SRAM-CAM的原資訊的關鍵資料、依每組4位元分群組並進行群組的排列變更後的關鍵資料、及以8位元單位編碼後的3種資料變化的圖示;第40圖為顯示關鍵資料及對關鍵資料進行排列變更-編碼處理時的搜尋記憶墊內容及讀取結果的圖示;第41圖為顯示對關鍵資料執行2次排列變更-編碼處理時的搜尋記憶墊的內容及讀取結果的圖示;第42圖為顯示本發明第5實施例之SRAM-CAM的寫入動作圖;第43圖為顯示本發明第5實施例之SRAM-CAM的搜尋動作圖;第44圖為顯示本發明第4實施例之SRAM-CAM的寫入動作圖;以及第45圖為顯示本發明第4實施例之SRAM-CAM的搜尋動作圖。
以下,使用附圖就本發明的實施形態加以說明。本發明並非限定於以下說明的形態,本業者亦可在一般顯而易知範圍內對以下形態作適當地修正。
此外,本說明書中,所謂「寫入/讀取」的用語,係意指「寫入及讀
取的雙方或任一方」。
本發明係關於半導體裝置及登錄位址寫入/讀取於半導體裝置中的方法。本發明的基本技術思想要素如下述。
(1)半導體裝置的控制電路係將作為搜尋對象的資料(亦即,關鍵資料)分割成複數個(n分割),並以該經分割的關鍵資料作為位址而連接存取(接取)於記憶體電路(搜尋記憶墊)。
(2)控制電路係將與經分割的關鍵資料對應的登錄位址記入所存取的記憶體電路的位址。
(3)該登錄位址的記入處理係對與關鍵資料的分割數(n)對應的整個記憶體電路執行。
(4)該登錄位址的記入處理後,作為搜尋對象資料的關鍵資料輸入到控制電路時,控制電路會將所輸入的關鍵資料分割成複數個(n分割)。接著,控制電路會以所分割的關鍵資料作為位址而連接存取(接取)於記憶體電路,並將記入於記憶體電路的登錄位址輸出。
此外,較理想的情況為,(5)控制電路在所輸出的登錄位址全部一致時,將其採用作為所尋求的登錄位址。另一方面,若所輸出的登錄位址有不一致,控制電路會判定為與搜尋對象資料一致的資料未記入。
以上為本發明的基本技術思想。此外,將本發明安裝在可實際實現功能的製品上時,雖會留下各色各樣的待解決問題,惟針對解決這些問題的方法,將於後述的實施例中詳細說明。
首先,參照第1圖至第5圖說明有關本發明的概要。
第1圖為顯示本發明半導體裝置之主要功能結構的功能方塊圖。
如第1圖所示,本發明的半導體裝置具備搜尋記憶墊102與控制電路105。而且,如第1圖所示,本發明的半導體裝置較佳為再具備確認記憶墊104與編碼電路106。控制電路105係連接於各個搜尋記憶墊102、確認記憶墊104、及編碼電路106,行使統合控制半導體裝置中的資訊處理功能。
第1圖所示的搜尋記憶墊102具有使登錄位址記入用位置朝y軸方向分配,關鍵資料朝x軸方向分配的結構。此處所稱「y軸方向」,意指
由行列所構成的陣列的行方向(縱向)與列方向(橫向)的任一方向,所稱「x軸方向」則意指行方向(縱向)與列方向(橫向)的任一個的另一方向。亦即,搜尋記憶墊102中,使一個關鍵資料以對應關係記憶到一個登錄位址中。以此方式,搜尋記憶墊102以可朝y軸方向分配複數個登錄位址記入用位置,並朝x軸方向使一個關鍵資料分配到各登錄位址的結構作為基礎。
此外,可藉本發明半導體裝置實現的CAM(聯想記憶體),一般而言,具有以下功能:從記入於搜尋記憶墊的複數個關鍵資料中搜尋並找出使用者所指定的關鍵資料,把發現該關鍵資料的位置的登錄位址提供給使用者。亦即,所謂「關鍵資料」係指記入於搜尋記憶墊內的期望資訊。同時,所謂「登錄位址」,係指顯示記入有關鍵資料的搜尋記憶墊內的位置(位址)的原資訊(meta information或稱元資訊)。
同時,例如後述的第8圖等所示,分配到搜尋記憶墊102之y軸方向的「登錄位址記入位置」中,係分別賦予用以特定(註:特別指定或特別定義之意,以下仍譯為“特定”,以省篇幅)該位置的地址資料。例如,第8圖所示的例子中,「登錄位址記入位置」就是朝y軸方向以每組4個的方式存在。各個「登錄位址記入位置」的地址,則以例如2位元資料來特定。例如,4個「登錄位址記入位置」中,係分別賦以“00”、“01”、“10”、及“11”的地址資料。該所謂地址資料,係為用以特定搜尋記憶體102的記憶空間中的「登錄位址記入位置」之地址的資料。此外,「登錄位址記入位置」也可存在8個以上。用以特定該「登錄位址記入位置」的地址資料,也可為3位元以上的資料。例如,用以特定該「登錄位址記入位置」的地址資料,也可為2位元至6位元或3位元至5位元的資料。
又,本發明的半導體裝置中,關鍵資料可將期望位元數的資料寫入或讀取。此外,關於登錄位址方面,以例如2位元以上來定義為佳。例如,登錄位址可設為2位元至6位元,也可為3位元至5位元。
而且,如第1圖所示,搜尋記憶墊102藉由複數個分割記憶體102a、102b、102c...來建構。複數個分割記憶體在搜尋記憶墊102的記憶空間中,將要分配關鍵資料的x軸方向區域沿y軸方向分割成複數個。亦即,藉由將搜尋記憶墊102分割成複數個分割記憶體102a、102b、102c...來建構
的方式,使要分配關鍵資料的區域分割成複數個。各分割記憶體可用SRAM等記憶裝置來構成。在這種意義上,本發明可說是利用複數個SRAM來實現的CAM。本案說明書中,將用SRAM來實現的CAM稱為SRAM-CAM。例如,要分配關鍵資料的區域分割成複數個的搜尋記憶墊102,係形成如第8圖所示的結構,這部分將陳述於後。
依此方式,藉由將搜尋記憶墊102的要分配關鍵資料的x軸方向區域分割成複數個的方式,搜尋記憶墊102的記憶空間即可使y軸方向及x軸方向的各個區域分割成複數個。如此,在本案說明書中,以y軸及x軸來特定的區分記憶空間(記憶包),係以搜尋記憶墊102的位置或位址來表現。
例如,搜尋記憶墊102的總登錄數假設定為4096個登錄時,可識別4096個登錄的位址規格即為12位元。再者,輸入到搜尋記憶體102的關鍵資料的大小設為144位元時,將其除以前述的12位元,商數為12。亦即,在此情況中,分割記憶體數必須至少12個以上。
以這種條件來考慮時,搜尋記憶墊102的分割數N的最低必要限度就可以下式求得。
(式)N=L/Log2‧M
L:關鍵資料長度
M:總登錄數
N:搜尋記憶墊的分割數(分割記憶體的最小個數)
另一方面,如第1圖所示,控制電路105基本上具有:輸入部1051、分割部1052、寫入部1053、讀取部1055、及輸出部1057。而且,控制電路105較佳為再具有衝突重複資訊記憶部1054與確認部1056。這些要素1051至1056係以控制電路105的功能作概念性分類來表示。亦即,控制電路105係利用這些要素1051至1056將登錄位址寫入於搜尋記憶墊102中,或進行將記入於搜尋記憶墊102的登錄位址讀取的處理。
以下,一邊參照第2圖至第5圖的流程圖,一邊就藉由控制電路105執行的基本處理加以說明。
首先,說明藉由控制電路105進行的登錄位址寫入處理。
在此,第2圖及第3圖為顯示控制電路105進行的寫入處理的流程圖。
此處所謂的寫入處理,係指要記憶新的關鍵資料(輸入資料)時,將與該新的關鍵資料對應的登錄位址寫入到搜尋記憶墊的處理。
如第2圖所示,在寫入處理中,首先,使要用於新記入到搜尋記憶墊內的關鍵資料(輸入資料)輸入到半導體裝置(步驟S1)。在此,作為輸入資料的關鍵資料,如第1圖所示,可直接輸入到控制電路105的輸入部1051,也可經由編碼電路106輸入到控制電路105的輸入部1051。
在此,關鍵資料輸入至編碼電路106時,藉由編碼電路106進行關鍵資料的編碼處理(步驟S2)。又,有關此處所進行的編碼處理,將於後面的〔實施例4〕中詳細說明。
另一方面,作為輸入資料的關鍵資料直接輸入控制電路105的輸入部1051時,該輸入部1051會將關鍵資料往分割部1052送出。亦即,輸入部1051是控制電路105的輸入介面。
接著,分割部1052將作為輸入資料的關鍵資料分割成複數個(步驟S3)。亦即,分割部1052會將所輸入的關鍵資料的二進制資料(binary data,電腦可處理的二進式資料)分割成複數個。例如,分割部1052較佳為將關鍵資料分割成和建構搜尋記憶墊102的分割記憶體102a、102b、102c...的數目相等的數量。總而言之,分割部1052分割關鍵資料的分割數n較佳為建構搜尋記憶墊102的分割記憶體的數目N。藉此方式,即可將藉分割部1052分割成複數個的關鍵資料(亦稱「分割關鍵資料」)的全部分別依序記入到複數個分割記憶體。
此外,分割部1052在將關鍵資料的二進制資料進行分割時,該二進制資料以分成每組預定位元為佳。例如,輸入“2699”作為關鍵資料時,若以二進制來表現該關鍵資料“2699”,就成為“101010001011”。例如,分割部1052也可將該關鍵資料以“10”“10”“10”“00”“10”“11”的方式分割成每組2位元。此外,分割部1052也可將關鍵資料分割成每組3位元,分割成每組4位元亦可。例如,分割的位元數只要是每組2至10位元即可。
更具體說明時,分割部1052所分割的關鍵資料的位元數(α)較佳為相等於用以特定要分配到搜尋記憶墊102之y軸方向的「登錄位址記入位置」的地址資料位元數(β)(α=β)。例如,用以特定搜尋記憶墊102內的「登
錄位址記入位置」的地址資料以2位元來表示時,分割部1052較佳為將所輸入的關鍵資料依每組2位元分割成複數組。同樣地,分配到搜尋記憶墊102的登錄位址記入位置以3位元的地址資料來特定時,分割部1052較佳為將所輸入的關鍵資料依每組3位元分割成複數組。藉此方式,在後面的處理中,分割部1052即可將經分割的各個關鍵資料,以該經分割的關鍵資料作為位址,適當分配到用以建構搜尋記憶墊102的分割記憶體。
如第1圖所示,在寫入處理中,分割部1052係以上述方式分割的關鍵資料往寫入部1053送出。
其次,寫入部1053對從分割部1052接收的關鍵資料分配固有的登錄位址,並對確認記憶墊104進行寫入處理(步驟S4)。亦即,該步驟S4中,將新穎關鍵資料新記入到搜尋記憶墊102之際,對新穎關鍵資料分配一個登錄位址,且將新穎關鍵資料與登錄位址的對應關係預先記憶到確認記憶墊104。確認記憶墊104的資料構造例,係顯示於第8圖的右下方。依此方式,確認記憶墊104就可作為用以預先記憶關鍵資料與登錄位址之對應關係的資料庫來發揮功能。而且,依後述方式進行讀取處理之際,確認記憶墊104就可在進行控制電路所讀取的登錄位址是否正確的最終確認之際加以利用。此外,確認記憶墊104只要藉SRAM等記憶裝置來構成即可。
之後,寫入部1053會進行將藉分割部1052所分割的複數個分割關鍵資料分別寫入到搜尋記憶墊102的分割記憶體102a、102b、102c...的處理(步驟S5)。該步驟S5進行的處理,在第3圖中有更詳細的說明。
第3圖的流程圖係顯示將關鍵資料(KD)的二進制資料分割為n個分割關鍵資料,並將該分割關鍵資料的次序定義第k個的情形。
亦即,如第3圖所示,首先,將“1”代入“k”,而在n個分割關鍵資料中開始第1個(最初)分割關鍵資料的處理(步驟S5A)。
接著,寫入部1053將第1個(第k個)分割關鍵資料的登錄位址分配到搜尋記憶墊102(步驟S5B)。具體而言,寫入部1053一邊參照分配到搜尋記憶墊102之y軸之用以特定「要記入登錄位址(EA)的位置」的地址資料,以表示第1個(第k個)分割關鍵資料的二進制資料作為位址而存取於搜尋記憶墊102,並將與該分割關鍵資料對應的登錄位址(EA)分配到此處所存
取的搜尋記憶墊102的位置(位址)。此處的處理將於下文中參照第8圖等作詳細說明。
總而言之,寫入部1053會持續將與第1個(第k個)分割關鍵資料形成對應的登錄位址(EA)分配到搜尋記憶墊102的適當位置(位址)。該搜尋記憶墊102的適當位置(位址)可藉現在處理中的分割關鍵資料的次序(第k個)與分割關鍵資料的二進制資料來特定。亦即,首先,參照分割關鍵資料的次序(第k個),特定要寫入該分割關鍵資料的登錄位址在搜尋記憶墊102之x軸方向的區域。例如,使第1個分割關鍵資料的登錄位址寫入到建構搜尋記憶墊102的複數個分割記憶體102a、102b、103c...中的第1個分割記憶體102a。接著,參照分割關鍵資料的二進制資料,特定要寫入該分割關鍵資料的登錄位址在搜尋記憶墊102之y軸方向的區域。亦即,分割關鍵資料的登錄位址所寫入的區域,係為表示該分割關鍵資料的二進制資料、與用以特定分配到搜尋記憶墊102之y軸方向的「要記入登錄位址(EA)的位置」的地址資料一致的y軸方向區域。例如,搜尋記憶墊102的y軸方向分配有“00”“01”“10”“11”等4個地址資料,分割關鍵資料的二進制資料為“10”,而且,假設與該分割關鍵資料對應的登錄位址為“00”的情形。在此情形中,該分割關鍵資料的登錄位址“00”寫入到搜尋記憶墊102之中分配有“10”的地址資料的y軸方向區域(要記入登錄位址(EA)的位置)。依此方式,即可根據現在處理中的分割關鍵資料的次序(第k個)與分割關鍵資料的二進制資料,求得要分配該分割關鍵資料的登錄位址之搜尋記憶墊102的適當位置(位址)。
接著,寫入部1053會確認分配有第1個(第k個)分割關鍵資料的登錄位址(EA)的位置(位址)是否已寫入了其他登錄位址,而發生登錄位址的衝突重複(步驟S5C)。例如,於進行現在寫入處理中的關鍵資料之前,有其他的關鍵資料業已寫入搜尋記憶墊102時,就會發生登錄位址的衝突重複。
首先,在步驟S5C中,寫入部1053判斷為未發生登錄位址的衝突重複時,寫入部1053就直接將對應第1個(第k個)分割關鍵資料的登錄位址寫入到搜尋記憶墊102的適當位置(位址)(步驟S5D)。
另一方面,在步驟S5C中,寫入部1053判斷為已發生登錄位址的衝突重複時,衝突重複資訊記憶部1054就將表示衝突重複的資訊寫入
到正發生該衝突重複的搜尋記憶墊102的位置(位址)(步驟S5E)。例如,衝突重複資訊記憶部1054只要將旗標位元等追加到正發生衝突重複的位置(位址),將已產生衝突重複的情形加以記錄即可。
上述步驟S5D或步驟S5E的任一處理結束後,寫入部1053會在“k”中加入“1”,並將該“k+1”的值代入“k”(步驟S5F)。然後,寫入部1053會確認經由步驟S5G所得的“k”值是否等於“n(關鍵資料的分割數)”(步驟S5G)。k未達n(k<n)時,寫入部1053就返回步驟S5B。例如,第1個(第k個)分割關鍵資料的處理完畢後,繼續進行第2個(k+第1個)分割關鍵資料的處理。另一方面,k與n相等(k=n)時,寫入部1053會將第3圖所示的副流程結束,並返回第2圖所示的主流程。
藉由上述各步驟(S1至S5),寫入部1053可針對複數個分割關鍵資料的全部,將對應的登錄位址寫入到搜尋記憶墊102的適當位置(位址)。全部分割關鍵資料的登錄位址寫入完畢後,寫入部1053就將寫入處理結束。
接著,說明藉控制電路105執行的登錄位址的讀取處理。
在此,第4圖及第5圖係顯示控制電路105執行的讀取處理的流程圖。此處所稱之讀取處理,係指與作為搜尋對象的關鍵資料(搜尋資料)一致的資料業已寫入搜尋記憶墊102內時,即讀取與該關鍵資料對應的登錄位址的處理。
如第4圖所示,在讀取處理中,首先使作為要在搜尋記憶墊102內進行搜尋之對象的關鍵資料(搜尋資料)輸入到半導體裝置(步驟S6)。在此,作為搜尋資料的關鍵資料,如第1圖所示,可設為直接輸入到控制電路105的輸入部1051,也可經由編碼電路106輸入到控制電路105的輸入部1051。
在此,作為搜尋資料的關鍵資料輸入到編碼電路106時,藉由編碼電路106進行該關鍵資料的編碼處理(步驟S7)。此外,關於要在此進行的編碼處理,將於後面的〔實施例4〕中詳細說明。
另一方面,作為搜尋資料的關鍵資料直接輸入到控制電路105的輸入部1051時,該輸入部1051就將關鍵資料向分割部1052送出。
接著,分割部1052會將作為搜尋資料的關鍵資料分割成複數個(步驟S8)。在此,分割部1052在讀取處理中所進行的分割處理(步驟S8),係用與分割部1052在前述寫入處理中進行的分割處理(步驟S3)相同的計算法來進行。依此方式,由於步驟S8的處理係與步驟S3的處理相同,其說明從略。
如第1圖所示,讀取處理中,分割部1052係將經分割的關鍵資料往讀取部1055送出。
其後,讀取部1055根據藉分割部1052分割的複數個分割關鍵資料存取於搜尋記憶墊102的分割記憶體102a、102b、102c...,並將對應於複數個分割關鍵資料之各個資料的登錄位址進行讀取的處理(步驟S9)。該步驟S9中進行的處理,在第5圖中有更詳細的說明。
第5圖的流程圖係顯示將關鍵資料(KD)的二進制資料分割為n個分割關鍵資料,並將該分割關鍵資料的次序定義為第k個的情形。
亦即,如第3圖所示,首先,將“1”代入“k”,開始n個分割關鍵資料之中的第1個(最初)分割關鍵資料的處理(步驟S9A)。
接著,讀取部1055根據第1個(第k個)分割關鍵資料,對搜尋記憶墊102內進行搜尋(步驟S9B)。具體而言,讀取部1055一邊參照分配於搜尋記憶墊102之y軸之用以特定「要記入登錄位址(EA)的位置」的地址資料,將表示第1個(第k個)分割關鍵資料的二進制資料作為位址,而存取於搜尋記憶墊102,並將寫入於此處存取的搜尋記憶墊102的位址內的資訊抽出。此處的處理,將於後文中參照第8圖等作更詳細的說明。
總而言之,步驟S9B中,讀取部1055係用與寫入部1053在步驟S5B進行的相同方法來存取於搜尋記憶墊102的適當位置(位址)。亦即,該搜尋記憶墊102的適當位置(位址)可藉由現在處理中的分割關鍵資料的次序(第k個)、與分割關鍵資料的二進制資料來特定。特定搜尋記憶墊102的適當位置的方法,由於已在步驟S5B中說明,故此處的說明從略。
接著,讀取部1055會根據第1個(第k個)分割關鍵資料來確認所存取的位址是否已寫入有表示衝突重複的資訊(衝突重複旗標)(步驟S9C)。此處所稱「表示衝突重複的資訊」,係為上述步驟S5F中藉由衝突重
複資訊記憶部1054所寫入的資訊。
在此,步驟S9C中,判斷為已發生登錄位址的衝突重複時,讀取部1055即將第1個(第k個)分割關鍵資料作為搜尋對象當作「無需顧慮(don’t care)」者來處理(步驟S9D)。亦即,有關當作「無需顧慮(don’t care)」來處理的分割關鍵資料,係不讀取與其對應的登錄位址,就結束處理(往步驟S9G)。以此方式,在讀取處理中存取的位址有發生登錄位址的衝突重複時,藉由導入將該登錄位址當作「無需顧慮(don’t care)」的概念,即可以高速且低電力消耗有效率的進行資料搜尋。
另一方面,步驟S9C中,判斷為未發生登錄位址的衝突重複時,讀取部1055就將寫入於所存取的搜尋記憶墊102的位置(位址)的一個登錄位址讀取(步驟9E)。亦即,此處讀取部1055所讀取的登錄位址,有可能是與作為搜尋對象而輸入的入的關鍵資料(搜尋資料)對應的登錄位址。但,雖可讀取與一個分割關鍵資料對應的登錄位址,但由於並不能肯定該登錄位址就是與作為搜尋對象的關鍵資料(搜尋資料)對應的登錄位址,故繼續進行與各分割資料對應之登錄位址的讀取處理。
接著,讀取部1055會確認以步驟S9C讀取的登錄位址與之前根據其他分割資料讀取的登錄位址是否不一致(步驟S9F)。此外,最先就第1個分割關鍵資料進行處理,由於之前讀取的登錄位址不存在,所以藉由步驟S9F,而移換到步驟S9G。
上述步驟S9D或步驟S5F的任一處理結束後,讀取部1055在“k”中加入“1”,並將該“k+1”的值代入“k”(步驟S9G)。然後,讀取部1055確認經步驟S9G所得的“k”值是否與“n(關鍵資料的分割數)”相等(步驟S9H)。K未達n(k<n)時,讀取部1055返回步驟S5B。例如,根據第1個(第k個)分割關鍵資料進行的讀取處理完了之後,繼續進行根據第2個(k+第1個)分割關鍵資料的讀取處理。另一方面,k與n相等(k=n)時,讀取部1055就將第5圖所示的副流程結束,並返回第4圖所示的主流程。
然後,繼第1個(第k個)分割關鍵資料之後,根據第2個(k+第1個)分割關鍵資料進行讀取處理。在此,例如步驟9F中,假設判斷為根據第2個分割關鍵資料讀取的登錄位址與之前根據第1個分割資料讀取的登錄
位址不一致(步驟9F)。例如,相對於根據第2個分割關鍵資料讀取的登錄位址為“00”的情況,會有之前根據第1個分割資料讀取的登錄位址為“01”的可能性。在此情況中,讀取部1055會以作為搜尋對象而輸入的關鍵資料並未記入搜尋記憶墊102內,而判定為「無一致資料」(步驟S9I)。接下來,讀取部1055不會向第4圖所示的主流程返回,而在此將讀取處理整體結束。依此方式,本發明中,例如,由於在處理第2個分割關鍵資料的階段可判定為「無一致資料」,當然不用執行第3個以後的分割關鍵資料的讀取處理,而可早期獲得結果。藉此方式,可謀求搜尋處理的高速化。
如第4圖所示,登錄位址的讀取處理(步驟S9)結束時,控制電路105執行的處理就進到步驟S10。在步驟S10中,控制電路105的確認部1056根據讀取部1055所讀取的登錄位址來參閱確認記憶墊104。如步驟S4所說明者,登錄位址係與關鍵資料以正確組合構成對應關係而記憶在確認記憶墊104中。亦即,在此,確認部1056根據讀取部1055所讀取的登錄位址,從確認記憶墊104中讀取與該登錄位址構成對應關係的關鍵資料。接著,確認部1056會對從確認記憶墊104讀取的關鍵資料與作為搜尋對象而輸入的關鍵資料的登錄位址是否一致加以確認。以此方式,藉由根據讀取部1055所讀取的登錄位址來參閱確認記憶墊104,就可確認該登錄位址是否真的與作為搜尋對象而輸入的關鍵資料的登錄位址一致。
例如,根據分割成複數個的關鍵資料來讀取複數個登錄位址時,全部的登錄位址若為相同值,即可知該登錄位址係屬正確。但,如上所述,本發明中導入了以下的概念:複數個登錄位址記入到相同位置(位址)而發生“衝突重複”時,以「無需顧慮(don’t care)」來處理。於是,根據分割成複數個的關鍵資料來讀取複數個登錄位址時,會獲得其中幾個雖顯示為相同值,但其他為「無需顧慮(don’t care)」的結果。因此,在機率理論上,也會有所讀取的登錄位址發生錯誤的情形。因此,為了排除這種不確定性,本發明中,採用了參閱確認記憶墊104的方式。
步驟S10中,參閱確認記憶墊104的結果,判斷為讀取部1055所讀取的登錄位址無誤時,確認部1056就將該登錄位址往輸出部1057送出。接著,輸出部1057會將接受自確認部1056的一個登錄位址作為搜尋結
果向控制電路105的外部輸出(步驟S10)。亦即,輸出部1057係為控制電路105的輸出介面。
藉由上述各步驟(S6至S10),控制電路105可按照來自使用者的搜尋要求,進行搜尋記憶墊102中所記入的資料的搜尋,並將與當作搜尋資料而輸入的關鍵資料對應的一個登錄位址輸出。
如上所述,本發明的半導體裝置具有第1圖所示的基本構成。該半導體裝置基本上進行第2圖至第5圖所示的寫入處理/讀取處理。這些處理係顯示本發明的基本概念者。本發明中更具體的處理,將於下述的〔實施例1〕至〔實施例6〕中更詳細地加以說明。
如上所述,本發明係以習知的電路,特別是記憶體電路作為基礎所構成,同時提供全新的邏輯方法論(logical method theory)的發明。亦即,本發明係關於巧妙利用關鍵資料及其登錄位址之結構而無需程式的架構(programless architecture)。若換成另一種說法,本發明係關於一種頭腦形式(brain type))的架構。
本發明中,首先,在將記憶體電路的記憶空間分割成複數個分群(cluster)的同時,寫入該分群的資料亦同樣進行分割。此外,本發明中,將分割的資料本身當作用以存取於分群的位址來掌握。而且,將該位址分配於記憶空間之y軸,輸入分群的資料則分配於記憶空間之x軸。同時,本發明中,x方向的記憶空間係分割成可獨立地寫入/讀取的複數個記憶體,並將經分割的分群的輸入分配到所分割的複數個記憶體。
而且,本發明根據利用上述的構成,在位址衝突重複時導入「無需顧慮(don’t care)」的概念,而得以用高速且低電力消耗的方式實現開關(switch)或搜尋的構想。
再者,本發明的發明人亦想到設置可將輸入輸出資料的次序以選擇性地分配到分割記憶體的輸入與輸出部的開關、及控制這些開關的控制電路。藉此方式,即可將分割記憶體作為查找表(LUT(Look Up Table))來使用,也將記憶體內的分群作為邏輯電路來使用。亦即,本發明的半導體裝置係成為所謂的均質電路。藉此方式,本發明的半導體裝置可依需要來切換其作為邏輯電路或記憶體的功能來使用。此外,本發明的半導體裝置也可動態
地移動到使設定的必要分群相鄰接的位置,且可用低電力消耗進行高速的搜尋處理。
再者,本發明的半導體裝置也可在分割記憶體的輸入部與輸出部設置開關電路。在此情形中,半導體裝置的控制電路又得以可邏輯性選擇分割記憶體的方式來構成。而且,該分割記憶體再具備有藉由輸入資料作為LUT以進行邏輯運算的構成,必要時,可將其排列複數個區塊。
此外,對本發明的半導體裝置進行寫入/讀取登錄位址的方法,在以分割關鍵資料特定的分割記憶體的同一位址寫入複數個登錄位址的情況中,係假設在該分割記憶體的位址記憶有表示衝突重複的資訊。而且,本發明方法的構成方式係:根據分割關鍵資料讀取的全部資訊為表示衝突重複的資訊時,以所讀取的衝突重複資訊依序參閱確認記憶墊,並將一致的關鍵位址抽出。
在此,為了容易理解本發明,茲針對搜尋記憶墊及分割記憶體,使用具體的數值來說明。搜尋記憶墊102具備有複數個分割記憶體。例如,搜尋記憶墊102的總登錄數定為4096個登錄時,可識別4096個登錄的位址規格即為12位元。其次,假設從搜尋記憶墊102搜尋登錄位址所需的關鍵資料大小為144位元時,用前述的12位元除以該數值,其商數為12。亦即,分割記憶體的數目為12個。
附屬於搜尋記憶墊102的控制電路105,在144位元的關鍵資料輸入時,即將其作12等份分割,並分別分配到預先對應的各分割記憶體。經分割的關鍵資料的二進制資料則作為存取於對應的分割記憶體所需的位址來使用。然後,藉該分割的關鍵資料所指定的搜尋記憶墊的位置,則寫入對應關鍵資料的登錄位址。該登錄位址係寫入於該12等份分割的全部分割記憶體。
接著,讀取所寫入的資訊時,控制電路105會用相同於寫入的步驟將輸入的144位元關鍵資料作12等份分割。此外,控制電路105會存取於以分割的關鍵資料作為位址的預定分割記憶體。然後,控制電路105將寫入於指定的分割記憶體的資料讀取。該讀取的資料即為與關鍵資料對應的登錄位址。
在此,也可將要輸入的關鍵資料的大小再行放大。例如,可從關鍵資料的144位元大小擴張到288位元。在此情形中,只要將搜尋記憶墊102構成為並排式2排即可。此外,搜尋記憶墊102的總登錄數也可擴大。例如,要將搜尋記憶墊102的總登錄數從4096擴大到8192時,只要將搜尋記憶墊102構成為串列式排成2個即可。另外,搜尋記憶墊總登錄數的基本單位或、並列式或串列式排列的搜尋記憶墊的個數,並不限定於上述方式,而是可依要求而自由擴大或縮小。
又,如後文所述,也可在上述搜尋記憶墊中附加開關功能。在此情形中,可將搜尋記憶墊構成為查找表LUT(Look Up Table)方式的邏輯電路。而且,也可設定成包含搜尋記憶墊的構成作為一部分擴大記憶空間的方式。
上述說明係為了容易理解本發明所列舉的具體例。從而,本發明並不限定於上述方式。
【實施例1】
第1圖顯示了實現本發明的半導體裝置例。特別是第6圖顯示了藉由SRAM-CAM表現記憶體電路構成的一個例子。另外,本實施例中,係就藉SRAM-CAM構成的半導體裝置的記憶體構成與基本原理加以說明。然而,只要是半導體裝置具備可對例如由列位址(row address)與行位址(column address)所組成的記憶體陣列存取的記憶空間(記憶墊),即可實現本發明的原理。
如第6圖所示,本發明一實施例的半導體裝置具備:近接快捷記憶墊101、控制電路105、搜尋記憶墊102、比較及閂鎖電路103、以及確認記憶墊104。而且,搜尋記憶墊102由複數個分割記憶體102a、102b、102c、...、102h建構而成。此外,近接快捷記憶墊101不需要時,就沒有設置的必要。
首先,本發明係以克服網路的開關或路由器常用的CAM的缺點為目的。亦即,習知的CAM具有在進行資料的搜尋時,為了要使全部位元具備活性而消耗大電力的缺點。因此,本發明在搜尋時並不是像習知的CAM那樣使全部位元具備活性,而是僅使y軸的指定登錄位址活化。藉此
方式,若依本發明,與習知的CAM相比較,可用登錄數分之一(1/登錄數)的活性位元進行搜尋。亦即,若與習知的CAM相比較,本發明只要使y軸登錄數分之一(1/登錄數)的位址動作,就可輸出搜尋結果。因此,本發明中,不需要習知CAM所使用的輸出編碼器,而且,不需要會消耗大電力的NAND電路的樹狀構造。從而,若依本發明,可以以低消耗電力執行搜尋處理。
如第6圖所示,本發明的半導體裝置(SRAM-CAM)中,作為輸入資料的關鍵資料(KD)與登錄位址(EA)係輸入到控制電路105,並以預定的計算法寫入於搜尋記憶墊102。亦即,控制電路105會將所輸入的關鍵資料分割成預定數,並以分割的關鍵資料作為位址,存取於預定的對應分割記憶體102a、102b、102c、...、102h。然後,控制電路105會將關鍵資料與登錄位址寫入到所存取的該分割記憶體102a、102b、102c、...、102h。該控制電路105的寫入動作係對全部分割記憶體102a、102b、102C、...、102h進行。此外,本案說明書中,係將為了新記入於搜尋記憶墊102而輸入的關鍵資料稱為「輸入資料」,為了對搜尋記憶墊102內進行搜尋而輸入的關鍵資料稱為「搜尋資料」。
控制電路105係將要記入登錄位址(EA)的位置分配於搜尋記憶墊102之y軸(位址),關鍵位址(KD)分配到x軸。將該控制電路105的動作與CAM的基本動作構成對應關係來說明時,係將資料搜尋時所輸入的關鍵資料分配於x軸,用於記入登錄位址的位置(位址)分配於y軸。
搜尋記憶墊102使x軸方向的區域分割為複數個基本單元(cell)。搜尋記憶墊102的分割數為n(n為2以上的自然數)。各基本單元中,在依據分割成適當大小位元數的關鍵資料來指定的位置儲存有登錄位址(EA)。第6圖的例子中,係顯示n設為8的情形。儲存在各基本單元的登錄位址的位元數由所分割的關鍵資料的位元數來決定,但關鍵資料的位元數則為任意個。
確認記憶墊104中,使登錄位址(EA)分配於y軸,與登錄位址對應的關鍵資料(KD)則分配於x軸。亦即,與登錄位址對應的關鍵資料寫入於確認記憶墊104的x軸。
第7圖係將第6圖所示的記憶體電路的搜尋動作的時序(timing)
以第1時脈(clock)及第2時脈的關係來表示。在第1時脈裡,執行將關鍵資料(KD)輸入到控制電路105且將儲存於經分割的各墊的登錄位址(EA)讀取、直到將所讀取的登錄位址往閂鎖電路103a閂鎖為止的動作。接著,在第2時脈裡,執行以比較器103b比較及閂鎖電路103a的資料、將經確認一致的登錄位址往確認記憶墊104輸入、參閱確認記憶墊104並將經確認一致的登錄位址作為CAM之輸出的動作。
以此方式,第7圖中,顯示了依本發明實施例的SRAM-CAM進行的開關或搜尋的動作。如第7圖所示,本實施例中,一次搜尋動作係在2個時脈的機器週期完畢。與此相對地,習知的CAM在執行每一次搜尋動作時,最低也需要3個時脈的機器週期。一般而言,需要5到10個時脈。亦即,習知的CAM因為務必供給使全部位元動作所需的電力,故需要管線(pipeline)式操作。而且,習知的CAM在編碼器要消耗1個時脈,所以最低也需要3個時脈。在這方面,本發明的SRAM-CAM,藉由研創了關鍵資料的輸入方法,如第7圖所示,可用2個時脈完成搜尋動作。亦即,本發明的SRAM-CAM中,與習知的CAM相比較,可用登錄數分之一(1/登錄數)的電力來執行搜尋動作。
第8圖顯示了本發明實施例的SRAM-CAM的寫入動作。第8圖中,顯示了將4個關鍵資料(KD=“2699”“3779”“1859”“1440”)的登錄位址輸入到搜尋記憶墊102時的例子。另外,第8圖所示的例子中,即使在4個關鍵資料的登錄位址全部輸入後,搜尋記憶墊102中仍存在有空白。因此,第8圖的例子中,可記入登錄數以上的關鍵資料。這是因為相對於登錄數,關鍵資料長度充分夠大的緣故。第8圖的例子中,關鍵資料長度為登錄數的2倍以上。
茲用第8圖說明對搜尋記憶墊102進行登錄位址寫入動作的例子。第8圖的例子中,將搜尋記憶墊102分割成6個(搜尋記憶墊的分割數:N)。藉此方式,搜尋記憶墊102b由6個分割記憶體102a、102b、102c、102d、102e、102f建構而成。此外,第8圖的例子中,寫入於搜尋記憶墊的關鍵資料係以12位元來表現。將這種12位元的關鍵資料持續寫入於6個分割記憶體。因此,控制電路105會將所輸入的關鍵資料分割為6個(關鍵資料的分
割數:n)。從而,所分割的關鍵資料的位元數分別為2位元。
而且,如第8圖所示,構成搜尋記憶墊102的複數個分割記憶體102a至102f的每一個,係在其y軸方向分配用以記入複數個登錄位址的位置。以此方式,各分割記憶體102a至102f的記憶區域,分別朝y軸方向分割成複數個。在第8圖所示的例子中,各分割記憶體102a至102f以每組4個的方式具有登錄位址記入位置。再者,如第8圖所示,登錄位址記入位置分別賦予用以特定搜尋記憶墊102內之記憶空間地址所需的地址資料。在第8圖所示的例子中,地址資料為2位元的資訊。例如,地址資料係以“00”“01”“10”“11”的二進制資料來表現。如第8圖所示,登錄位址記入位置中只要從上依序賦予“00”“01”“10”“11”的地址資料即可。
首先,將登錄位址(EA)分配到作為輸入資料的各關鍵資料(KD)“2699”“3779”“1859”“1440”。在第8圖的例子中,登錄位址係分別為2位元資料。亦即,登錄位址為“00”“01”“10”“11”。依此方式,一個關鍵資料係與一個登錄位址形成對應關係。關鍵資料與登錄位址的對應關係既可記憶在確認記憶墊104,也可記憶在其他記憶體。第8圖的左上方顯示了登錄位址(EA)與關鍵資料(KD)的對應關係。
首先,作為應寫入登錄位址“00”的資料而輸入的關鍵資料為“2699”。該關鍵資料“2699”以二進制來表現時,為“10 10 10 00 10 11”。本實施例中,將該6等份分割的關鍵資料的二進制值作為存取於經分割的搜尋記憶墊102所需的位址來使用。亦即,控制電路105將關鍵資料“2699”的登錄位址的“00”寫入到建構搜尋記憶墊102的複數個分割記憶體102a至102f的每一個。依此方式,在本發明的半導體裝置中,寫入到記憶墊的資料成為與一般的CAM反轉的形式。
如第8圖(a)所示,關鍵資料“2699”經6等份分割,並以“10”“10”“10”“00”“10”“11”的型態來表現。控制電路105將登錄位址“00”寫入到具備以這些分割關鍵資料作為位址而分割的分割記憶體102a至102f的搜尋記憶墊102中。若具體來說明時,控制電路105將經6等份分割的輸入資料“2699”之中的第1個分割關鍵資料“10”作為位址,而存取於以第1個分割記憶體102a內的地址資料“10”來特定的位置,並將與輸入資料“2699”對應的
登錄位址“00”寫入到該位置。接著,控制電路105會針對輸入資料“2699”的第2個分割關鍵資料“10”,以該“10”作為位址而存取於以第2個分割記憶體102b內的地址資料“10”來特定的位置,並將登錄位址“00”寫入到該位置。其次,控制電路105會以第3個分割關鍵資料“10”作為位址而存取於以第3個分割記憶體102c內的地址資料“10”來特定的位置,並將登錄位址“00”寫入到該位置。然後,控制電路105會以第4個分割關鍵資料“00”作為位址而存取於以第4個分割記憶體102d內的地址資料“00”來特定的位置,並將登錄位址“00”寫入到該位置。而且,控制電路105也以第5個分割關鍵資料“10”作為位址而存取於以第5個分割記憶體102e內的地址資料“10”來特定的位置,並將登錄位址“00”寫入到該位置。同樣地,控制電路105亦以第6個分割關鍵資料“11”作為位址而存取於以第6個分割記憶體102f內的地址資料“11”來特定的位置,並將登錄位址“00”寫入到該位置。
藉此方式,與所輸入的關鍵資料“2699”對應的登錄位址“00”就寫入於用關鍵資料“2699”來指定的搜尋記憶墊102的分割記憶體。依此方式,由於關鍵資料“2699”係以“10 10 10 00 10 11”來表現,故將其以每組2位元作6等份分割。然後,將經分割的各個關鍵資料作為用來存取於分配到經6等份分割的搜尋記憶墊之y軸的「登錄位址記入位置」的位址。
經上述方式,即可將與輸入的關鍵資料對應的登錄位址寫入到搜尋記憶墊。然後,對搜尋記憶墊進行搜尋時,就以與寫入關鍵資料時同樣的步驟,將作為搜尋對象的關鍵資料分割成複數個。例如,作為搜尋對象的關鍵資料為“2699”的情況中,就將該二進制資料分割為“10 10 10 00 10 11”等6個。藉此方式,以第1個分割關鍵資料“10”作為位址來讀取搜尋記憶墊102的資料時,就讀取登錄位址“00”。接著,以第2個“10”作為位址來讀取搜尋記憶墊102的資料時,就讀取登錄位址“00”。以下,依同樣方式,分別以第3個至第6個資料“10”“00”“10”“11”作為位址而存取搜尋記憶墊102時,與上述同樣地從搜尋記憶墊102讀取登錄位址“00”。此外,第8圖係顯示從各個分割記憶體102a至102h讀取登錄位址的狀態。
亦即,可以以所分割的關鍵資料的任一個來搜尋登錄位址“00”。此外,在此意義上,本實施例所具備的確認記憶墊104充其量只是作為確認
之用,在原理上並非必要的構成要件。
如上所述,藉由利用複數個分割記憶體來構成搜尋記憶墊102,同時進行分割輸入用及搜尋用關鍵資料的處理,可解決習知CAM的問題。亦即,若依本發明,由於不必像習知CAM那樣使全部位元活化,故可解決消耗大電力的缺點。本發明的實施例中,要輸出搜尋結果時,可用y軸的登錄數分之一(1/登錄數)的活性位元進行搜尋。依此方式,本發明可以僅使y軸的登錄數分之一(1/登錄數)的登錄位址動作。從而,本發明中,並不需要習知CAM的輸出部所使用的會消耗大面積的NAND電路的樹狀構造式輸出編碼器。
接著,返回第8圖繼續進行說明。用與上述同樣的方式,針對下一個輸入資料的關鍵資料“3779”輸入時的動作加以說明。該關鍵資料“3779”係作為應寫入登錄位址“01”的資料而輸入的關鍵資料。以二進制來表現關鍵資料“3779”時,即為“11 10 11 00 00 11”。以該二進制值作為位址,存取於經6等份分割的搜尋記憶墊102之y軸的記憶區域,將與關鍵資料“3779”對應的登錄位址“01”寫入搜尋記憶墊102中。
第8圖(b)中,關鍵資料“3779”經6等份分割而表現作“11”“10”“11”“00”“00”“11”。控制電路105即以這些分割關鍵資料作為位址,將登錄位址“01”寫入於具備複數個分割記憶體102a至102f的搜尋記憶墊102中。亦即,控制電路105在輸入關鍵資料“3779”的分割關鍵資料中,以最初的分割關鍵資料“11”作為位址,存取於以最初分割記憶體102a內的地址資料“11”來特定的位置,將與關鍵資料“3779”對應的登錄位址“01”寫入到該位置。接著,控制電路105會以第2個分割關鍵資料“10”作為位址,存取於以第2個分割記憶體102b內的地址資料“10”來特定的位置,並將登錄位址“01”寫入到該位置。惟,登錄位址寫入於第2個分割記憶體102b之際,該第2個分割記憶體102b的位置中,業已寫入有關鍵資料“2699”的登錄位址“00”。依此方式,欲將登錄位址寫入於搜尋記憶墊102之際,會有所謂衝突重複的現象發生的情形。發生該衝突重複現象的位址,在第8圖(b)中,係以塗黑部分來表示。該塗黑部分的關鍵資料,在此後進行的搜尋處理,係當作「無需顧慮(don’t care)」者來處理。
此外,在本發明中,為了記錄發生上述衝突重複的情事,較佳為設置衝突重複旗標。衝突重複旗標可以設成例如2位元的資料。例如,衝突重複旗標設為2位元的情況中,“00”時,係表示未寫入的初期狀態,“01”表示寫入完畢狀態,“10”表示衝突重複狀態,“11”表示其他狀態。
第8圖(b)中,接著以第3個分割關鍵資料“11”作為位址,存取於以第3個分割記憶體102c內的地址資料“10”來特定的位置,並將登錄位址“01”寫入到該位置。同樣的,對於從第4個到第6個分割關鍵資料“00”“00”“11”,也以這些關鍵資料作為位址,分別將登錄位址“01”寫入第4個到第6個分割記憶體102d至102f中。惟,關於第4個與第6個位址,業已因關鍵資料“2699”的寫入而正處於使用中,故寫入衝突重複旗標。藉此方式,有關第4個與第6個位址,在之後進行的搜尋處理中,係當作「無需顧慮(don’t care)」來處理。
藉由以上的處理,登錄位址“01”就被寫入於以關鍵資料“3799”指定的搜尋記憶墊102。在上述步驟中,2個關鍵資料“2699”“3799”寫入於搜尋記憶墊102的處理即告完成。惟,有關關鍵資料“3799”,第2、4、6個分割關鍵資料的寫入動作中發生了衝突重複,故在後續的搜尋處理中,執行「無需顧慮(don’t care)」的處理。因此,如著眼於關鍵資料“3799”時,6個分割關鍵資料中,3個不能當作搜尋對象來處理,搜尋對象乃從6個減少為3個。
控制電路105也是同樣的針對第3個及第4個關鍵資料“1859”及“1440”,以與上述關鍵資料同樣的步驟,將對應的登錄位址“10”及“11”寫入搜尋記憶墊102。如第8圖(c)所示,關鍵資料“1859”的寫入處理中,重新在第5個分割記憶體102e產生位址衝突重複。而且,如第8圖(d)所示,關鍵資料“1440”的寫入處理中,重新在第1個與第3個分割記憶體102a、102c發生位址衝突重複。
第8圖(e)顯示了確認記憶墊(SRAM)104的寫入狀態。第1輸入資料的關鍵資料“2699”的二進制資料“10 10 10 00 10 11”經分割並依序寫入到該確認記憶墊104的記憶體位址“00”中。而且,在確認記憶墊104的記憶體位址“01”中依序寫入第2輸入資料的關鍵資料“3779”的二進制資料“11 10 11 00 00 11”。以下,同樣地,在確認記憶墊104的記憶體位
址“10”中依序寫入第3輸入資料的關鍵資料“1859”的二進制資料,記憶體位址“11”中則依序寫入第4輸入資料的關鍵資料“1440”的二進制資料。
以上的處理係為將與輸入於搜尋記憶墊102的關鍵資料對應的登錄位址寫入的基本處理。
接著,在下文中,就根據所輸入的關鍵資料對搜尋記憶墊102內進行搜尋,並讀取與該關鍵資料對應的登錄位址的處理加以說明。
第9圖係為顯示本發明實施例的SRAM-CAM的搜尋-讀取動作例的圖示。第9圖顯示了即使在寫入處理時發生登錄位址衝突重複的情況下,亦即,將第8圖中所示的塗黑登錄位址設為「無需顧慮(don’t care)」的情形中,也可根據搜尋輸入資料正確搜尋的情形。
第9圖(a)係顯示輸入關鍵資料“2699”作為搜尋資料的情形。所輸入的關鍵資料“2699”係以二進制資料表現為“10 10 10 00 10 11”。而且,該關鍵資料“2699”的二進制資料係以“10”“10”“10”“00”“10”“11”的方式作6等份分割。然後,這些複數個分割關鍵資料係作為存取於分配於經6等份分割的搜尋記憶墊102之y軸的「登錄位址記入位置」所需的位址來使用。
首先,在6個分割關鍵資料之中,以最初的分割關鍵資料“10”作為位址,存取於以搜尋記憶墊102內的地址資料“10”來特定的位置時,從與最初的分割記憶體10a中的“10”對應的位置(位址)讀取登錄位址“00”。同樣地,以第2個分割關鍵資料“10”作為位址,存取於以第2個分割記憶體102b內的地址資料“10”來特定的位置。然而,該第2個分割記憶體102b的位置(位址)已寫入有第8圖(b)的第2輸入資料“3799”時,發生了位址的衝突重複。因此,控制電路會在根據第2個分割關鍵資料“10”的搜尋處理中,把搜尋結果當作「無需顧慮(don’t care)」者來處理。於是,來自搜尋記憶墊102的第2個分割記憶體102b的讀取資料就被當成搜尋對象外。是否要執行「無需顧慮(don’t care)」處理,只要從記憶體暫行資料讀取,並以賦予到該讀取資料的旗標部分來判斷即可。依此方式,嚴格來說,控制電路105雖對於當作搜尋對象外的資料未進行登錄位址的輸出,但會進行從記憶體電路讀取的動作。
關於以第3個分割關鍵資料“10”、第4個分割關鍵資料“00”、
及第6個分割關鍵資料“11”作為位址對搜尋記憶墊102進行的存取,也是同樣的利用「無需顧慮(don’t care)」的處理,使所讀取的資料設為搜尋對象外。另一方面,以第5個分割關鍵資料“10”作為位址,存取於以搜尋記憶墊102的第5個分割記憶體102f內的地址資料“10”特定的位置時,因未產生衝突重複旗標,故可讀取登錄位址“00”。第9圖(a)右側之圖係根據關鍵資料“2699”,將從搜尋記憶墊102讀取的登錄位址(EA)排列顯示。
如第9圖(a)所示,根據作為搜尋資料的關鍵資料“2699”而從搜尋記憶墊102讀取的登錄位址之中,實際使用於搜尋的登錄位址就會變成為寫入於第1個分割記憶體105a及第5個分割記憶體105e的登錄位址“00”。
在此,根據登錄位址“00”從第8圖(e)所示的確認記憶墊104讀取關鍵資料值時,可知與該登錄位址“00”對應的關鍵資料為“10 10 10 00 10 11”。該“10 10 10 00 10 11”若以十進法表現,即為“2699”。藉此方式,就可知以讀取處理所讀取的登錄位址“00”,係為當作搜尋資料而輸入的關鍵資料“2699”。亦即,本發明中,可一面使用「無需顧慮(don’t care)」處理,一面從搜尋記憶墊102讀取登錄位址,用該登錄位址存取於確認記憶墊104。因此,本發明將來自確認記憶墊104之輸出資料的關鍵資料與作為搜尋對象而輸入的關鍵資料相比較,確認其一致性,並輸出該登錄位址。
第9圖(b)係顯示作為搜尋輸入資料的關鍵資料而輸入“3779”的情形。所輸入的關鍵資料“3779”可以二進制資料“11 10 11 00 00 11”來表現。該二進制資料係以“11”“10”“11”“00”“00”“11”的方式作6等份分割,且分別使用作為用以存取於分配在搜尋記憶墊102之y軸的「登錄位址記入位置」所需的位址。以最初的分割關鍵資料“11”作為位址,從最初的分割記憶體102a讀取資料時,就會讀取登錄位址“01”。以第2個分割關鍵資料“10”作為位址,雖從第2個分割記憶體102b讀取資料,但由於在輸入資料“3779”輸入時產生了位址衝突重複,所以該資料會被當作「無需顧慮(don’t care)」來處理,而變成搜尋對象外。
以第3個分割關鍵資料“11”作為位址,從搜尋記憶墊102的分割記憶體102c讀取資料時,登錄位址“01”就被讀取。此外,分別以第4個分割關鍵資料“00”、第5個分割關鍵資料“00”、第6個分割關鍵資料“11”作
為位址而朝搜尋記憶墊102的存取動作,由於產生了衝突重複,故藉由「無需顧慮(don’t care)」處理而成為搜尋對象外。
如第9圖(b)所示,根據作為搜尋資料的關鍵資料“3779”而從搜尋記憶墊102讀取的值,係成為寫入於最初分割記憶體102a的(刪除)第3個分割記憶體102c的登錄位址“01”。
在此,藉由登錄位址“01”讀取儲存於第8圖(e)所示的確認記憶墊104的關鍵資料的值時,即為“11 10 11 00 00 11”,可知以作為輸入資料而言,其與關鍵資料“3779”係一致。亦即,一邊使用「無需顧慮(don’t care)」處理,一邊使用從讀取自搜尋記憶墊102的資料所讀取的登錄位址,存取於確認記憶墊104。然後,控制電路105會將來自確認記憶墊104的作為輸出資料的關鍵資料與作為搜尋對象而輸入的關鍵資料加以比較,確認是否一致後進行輸出。
接著,第9圖(c)係顯示將未寫入搜尋記憶墊102的關鍵資料“1504”當作搜尋對象的關鍵資料而輸入時的處理。
首先,關鍵資料“1504”作為搜尋資料被輸入時,“1504”的二進制資料即以“01”“01”“11”“10”“00”“00”的方式作6等份分割。該6個分割關鍵資料分別用作為存取於分配於搜尋記憶墊102之y軸的「登錄位址記入位置」所需的位址。把最初的分割關鍵資料“01”作為位址而從最初的分割記憶體102a讀取資料時,由於在寫入處理時產生位址衝突重複,故執行「無需顧慮(don’t care)」處理。然後,以第2個分割關鍵資料“01”作為位址,而從第2個分割記憶體102b讀取資料時,可讀取登錄位址“11”。接著,將第3個分割關鍵資料“11”作為位址,而從第3個分割記憶體102c讀取資料時,登錄位址“01”就被讀取。不過,在此讀取的登錄位址“01”與剛才讀取的登錄位址“11”係為相異的值。亦即,根據關鍵資料“1504”讀取的登錄位址中,在“11”與“01”上發生了不一致。於是,可知搜尋記憶墊102中尚未記錄有關鍵資料“1504”。從而,控制電路10可在處理第3個分割關鍵資料的階段判定為「無一致資料」。
以此方式,從搜尋記憶墊102讀取的登錄位址發生不一致時,不需要使用上述確認記憶墊104進行確認處理。此外,本實施例中雖未揭示
相同的分割記憶體中有複數個位址衝突重複,要執行「無需顧慮(don’t care)」處理時,即使從記憶體讀取得全部登錄位址一致,作為搜尋資料而輸入的關鍵資料、和與在讀取處理時輸出的登錄位址對應的關鍵資料,也會發生不一致的問題。惟,這種問題可藉由參閱確認記憶墊104來解決。亦即,根據從搜尋記憶墊102讀取的登錄位址而存取於確認記憶墊104,作為搜尋對象的關鍵資料和從確認記憶墊104輸出的關鍵資料不一致時,就可判定為「無一致資料」。
第10圖係為顯示依登錄數份寫入關鍵資料時的搜尋不一致(NG)發生數的曲線圖。亦即,第10圖的曲線圖中,顯示了「無需顧慮(don’t care)」的處理在搜尋記憶墊102內發生複數次,並從亂數表模擬誤動作機率的例子。第10圖(a)係顯示關鍵資料在4位元以上,搜尋記憶墊的登錄數為4個的情形。其次,第10圖(b)係顯示關鍵資料在8位元以上,搜尋記憶墊的登錄數為8個的情形。由第10圖(a)所示的模擬結果觀之,可知藉由將關鍵資料長設定在8位元以上,搜尋不一致(NG)的發生數會無限接近零。同樣地,由第10圖(b)所示的模擬結果觀之,可知藉由將關鍵資料長設定在16位元以上,搜尋不一致(NG)的發生數會無限接近零。亦即,由這些模擬結果來看,可知藉由將關鍵資料的位元數設為搜尋記憶墊之登錄數的2倍以上,可以大致確實防止半導體裝置誤動作而發生搜尋不一致(NG)的情形。所以,關鍵資料的位元數較佳為搜尋記憶墊之登錄數的2倍以上。
如上所述,本發明的半導體裝置係以輸入資料經分割的分割關鍵資料作為位址,將其輸入資料的登錄位址寫入到構成搜尋記憶墊102的複數個分割記憶體中。由於分割關鍵資料將輸入資料分割成複數個,所以在將這些分割關鍵資料寫入到搜尋記憶墊102之際,有發生衝突重複狀態的可能。
登錄位址寫入於這種複數個分割記憶體的操作設為「第1操作」。此外,第1操作的處理程序例在第2圖中亦有顯示。
以上的第1操作係為搜尋記憶墊內的開關操作或製作用以執行搜尋處理的基本資訊資料的操作。
在該第1操作中,即使是複數個登錄位址寫入到相同位址的情況中,也是設定衝突重複旗標,並直接進行輸入。然後,在對搜尋記憶墊內進行搜
尋之際,關於設定有衝突重複旗標的位址,係當作「無需顧慮(don’t care)」來處理。依此方式,本發明中,登錄位址寫入至分割記憶體時,所發生的位址衝突重複問題係在執行搜尋動作時加以解決。
在此,在本實施例所說明的情形,係登錄位址(EA)的數目相對於所輸入的關鍵資料(KD)的位元長度為充分大時,針對例如2倍以上的情形來考量。
例如,關鍵資料的位元長度相對於登錄位址的大小為較小的情形中,在分割關鍵資料時,藉由使分割部分的最初資料的一部分重疊於下一個分割關鍵資料的方式分割關鍵資料,使分割部分的資料的總和可大於本來的關鍵資料位元長度。利用該關鍵資料的擴張,即使在關鍵資料的位元長度相對於登錄位址的大小為較小的情形中,也可將關鍵資料的位元長度擴大到相對於登錄位址的大小為充分大。惟,關鍵資料的擴張必須使分割關鍵資料彼此間不會發生完全重疊。
而且,在後文說明的搜尋動作中,要使作為搜尋結果而輸出的資料可確認為正確無誤,對確保資料的信頼度至為重要。因此,在本發明的實施例中,乃將記憶空間的一部分分配到確認記憶墊104。該確認記憶墊104朝y軸方向具有登錄位址(EA)的記憶區域,在x軸方向則與登錄位址形成對應關係而具有關鍵資料(KD)的記憶區域。而且,本發明的實施例中,在將所輸入的關鍵資料寫入搜尋記憶墊102的同時,也將所輸入的關鍵資料與登錄位址對該確認記憶墊104進行寫入。依此方式,即可在確認記憶墊104準備確認用的基本資訊資料。這種關鍵資料寫入確認記憶墊104的操作係作為「第2操作」。此外,第1操作的處理程序例亦顯示於第2圖。
之後,控制電路105會按照使用者的要求,根據所輸入的關鍵資料在搜尋記憶墊102內進行搜尋,並進行將與該關鍵資料對應的登錄位址讀取的處理。在登錄位址的讀取處理中,控制電路105會將作為搜尋資料而輸入的關鍵資料依照上述關鍵資料(KD)的分割方法進行分割,以分割關鍵資料使搜尋記憶墊活化,並將根據該分割關鍵資料而讀取的登錄位址(EA)輸出。該搜尋處理係作為「第3操作」。惟,有關在上述寫入處理(第1操作)中記錄了位址衝突重複的登錄位址,則在讀取處理中當作「無需顧慮(don’t
care)」來處理,而不輸出登錄位址。
再者,控制電路105根據複數個分割關鍵資料讀取1個以上登錄位址,該所讀取的登錄位址全部一致時,就使用該登錄位址來參閱儲存有確認用基本資訊資料的確認記憶墊104。亦即,控制電路105會將在搜尋處理所讀取的登錄位址及作為搜尋對象而輸入的關鍵資料,與記憶在確認記憶墊104之y軸的登錄位址及記憶在x軸的關鍵資料進行比較。接著,控制電路105對登錄位址與關鍵資料一致的情況進行確認,並輸出一個登錄位址。這種參閱確認記憶墊104的操作係作為「第4操作」。另外,第4操作的處理程序例亦顯示於第4圖。又,上述第3操作及在第3操作輸出的登錄位址係為開關連接或搜尋的位址。
上文中,本發明用第6圖所示的SRAM-CAM記憶體電路來實現可進行第1操作至第4操作的4個操作的記憶體電路構成〔亦即,這些邏輯形式的構成〕。
【實施例2】
接著,就「無需顧慮(don’t care)」的處理即使發生複數次,也可減少半導體裝置的誤動作機率的其他方法作為本發明的實施例加以說明。
首先,說明該實施例的概要。該實施例中,係準備m個(m為2以上的自然數)定義區塊作為搜尋記憶墊102。而且,搜尋記憶墊102的登錄數決定為某種任意大小時,對於1個區塊,將登錄位址作分割,決定從下位開始輸入到登錄數的1/m為止。然後,對於1個區塊,將一定數以上登錄位址的輸入中斷,移到其他記憶區塊,繼續該操作,並將較大的基本資訊資料儲存於複數個記憶區塊。該方法中,係以關鍵資料長度為登錄數的1/8位元以上作為條件。針對其餘的較1/m上位的登錄位址,也是與最初的記憶區塊同樣從下位位址開始依序輸入。本實施例中,各記憶區塊間的操作切換等,可藉選擇器進行控制。藉此方式,上位下位搜尋位址即得以合成,且可輸入到作為前述確認用搜尋墊的位址軸之y軸,以進行實施例1所說明的第1至第4操作。
第11圖係顯示搜尋記憶墊102的登錄數假設為256個時的實施例。
如第11圖所示,搜尋記憶墊102係以2個記憶墊所構成。在此,y軸方向的登錄數大小設為256個時,將從0到127的登錄輸入到第1搜尋記憶墊102,從128到255的登錄輸入到第2搜尋記憶墊102。藉此方式,就可幾乎完全將誤動作發生機率維持在實用水平以下。構成該搜尋記憶墊102的2個記憶墊間的切換,只要使用附加於標頭(header)的第1旗標F1來進行即可。由於實際的搜尋記憶墊102中,需要2位元作為旗標,故在256登錄×32位元關鍵資料的情形中,就以8個256字元×10位元的SRAM作為搜尋記憶墊、及1個256字元×32位元的SRAM作為確認記憶墊104來構成搜尋記憶墊。
如以上所述,藉由將可寫入到搜尋記憶墊102的登錄數限制於1/m(m為2以上自然數)個,就可減少誤動作發生的機率。第12圖中係顯示m為2時,亦即,寫入記憶體的登錄數限制於1/2時的誤動作發生機率的模擬結果。如第12圖所示,即使登錄寬度(登錄數)為256字元(8位元),在機機率上,在關鍵資料長度32位元發生的誤動作就不會發生。此外,第12圖所示的模擬中,係使用EXCEL的亂數函數作為CAM的寫入資料。
以上係就防止誤動作的方法的例子加以說明,但以本發明的其他實施例而言,也有將未寫入區域消除,並有效率的將登錄位址記入到搜尋記憶墊102的方法。
以SRAM單位來看可寫入的登錄位址的記入登錄位址數目,僅限於記入登錄位址全部皆為唯一性(unique)時,未寫入區域並不存在。所謂唯一性,可假想SRAM的構成為n字元×n位元時,會有SRAM的位址與SRAM的內容相同的情況、及在該狀態下SRAM的內容或位址經任意取代的兩種情況。
但,如第13圖所示,在複數個位置發生SRAM的內容、或位址重疊時,未寫入區域會依其程度増加。亦即,SRAM的內容相同時,例如「00...00」地址的資料與「00...01」地址的資料相同時,「00...00」地址的內容會如右圖所示的成為未寫入區域。亦即,非唯一性的資料増加時,就會導致未寫入區域増加(變得容易記入)的結果。利用這種特性,即可增加寫入數。說明這種情形的理由,是因例如CAM搜尋的情況中,就有像標頭那樣
可將相同資料使用好幾次的傾向。這種結果,是因為以各個SRAM來看時,未寫入區域有增多的傾向的緣故。
在此,將本實施例從其效果方面進行歸納。
首先,由於使用SRAM,所以容易大規模化,相較於一般的CAM,可獲得登錄數分之一(1/登錄數)的大幅低電力化。
其次,寫入動作結束後,即使寫入登錄位址的分割記憶體(SRAM)剩下1個,也可正常搜尋所記入的登錄位址。
分割記憶體(SRAM)中存在了複數個搜尋對象外的位址,也可藉由使用確認記憶墊(SRAM)進行正確的搜尋。本實施例中,雖係使用SRAM來說明,但確認記憶墊的內容,只要是按照位址將輸入資料寫入的裝置即可,也可用暫存器(register)等來實現。
若依本實施例,在記入關鍵資料的登錄記入時若發生位址衝突重複,可藉由執行「無需顧慮(don’t care)」處理,將會處於搜尋對象之外的「搜尋對象外」導入,使未寫入區域増加。藉由利用該未寫入區域,即可擴張登錄位址。
此外,若依本實施例,在關鍵資料的登錄記入時,在搜尋記憶墊102的全部分割記憶體(SRAM)成為搜尋對象外的情況下,雖無法進行關鍵資料的登錄記入,但這種狀態係表示構成CAM的SRAM的區域有超限(overflow)的情形。在對策上,可準備複數個搜尋記憶墊,倘若發生這種狀態,藉由切換即可解決。
【實施例3】
接著,在實施例3中,係就實施例1及實施例2說明的半導體裝置,更進一步進行功能擴張的步驟加以說明。
實施例1或實施例2中,為了防止誤動作,將登錄位址的寫入處理限制於不會因分割記憶體的位址衝突重複而誤動作的區域。除此之外,也可藉由増加可輸入的登錄位址數,進一步防止誤動作。
例如,如第14圖所示,也可將登錄位址(EA)從2位元(第14圖(a))增加到3位元(第14圖(b))。藉此方式,即可增加確認記憶墊104的登錄位址數。如第14圖所示,將登錄位址設為3位元時,只要設定擴張旗標
(FRG),就可識別一般的登錄位址(一般位址)與經擴張的登錄位址(擴張位址)。例如,在第14圖的例子中,登錄位址的第3位元為“0”時,表示為一般位址,登錄位址的第3位元為“1”時,表示為擴張位址。
第15圖及第16圖係顯示登錄位址(EA)設為3位元時,進行資料寫入處理的例子及資料搜尋處理的例子。
第15圖係顯示寫入動作的例子。如第15圖所示,利用以3位元表現登錄位址(EA),登錄位址(EA)的數目即為8個。例如,第15圖的例子中,係在第8圖所示的4個關鍵資料“2699”“3779”“1859”“1440”之外,按照實施例1所說明的第1操作步驟,將第5個關鍵資料“408”寫入到各搜尋記憶墊1002與確認記憶墊1004。
由於關鍵資料“408”的二進制資料為“00 01 10 01 10 00”,故將這些資料作為位址寫入到搜尋記憶墊1002中。於是,對於最初的分割關鍵資料“00”,係將3位元的登錄位址“001”寫入記憶體位址“00”。第15圖中,雖記載為“00”,實際是寫入“001”。
藉由將登錄位址(EA)從2位元設為3位元,例如,増加的1位元為“0”時,進行相同於登錄位址為2位元時的處理,増加的1位元為“1”時,則使用於擴張位址的識別。具體上,若以關鍵資料“408”的第2個分割關鍵資料“01”作為位址,由於在業已寫入的“1440”之間會產生位址衝突重複(參照第8圖(d)),故進行「無需顧慮(don’t care)」的處理。以關鍵資料“408”的第3個分割關鍵資料“10”作為位址時,由於在該位址“1440”的寫入處理之際業已進行「無需顧慮(don’t care)」處理,故不再進行寫入就結束處理。同樣地,第4個分割關鍵資料“01”中,將“001”寫入記憶體位址。第15圖中,雖記載為“00”,實際上是寫入“001”。第5、6個分割關鍵資料“10”“00”中,亦在各個記憶體位址進行「無需顧慮(don’t care)」處理。
對於搜尋記憶墊1002,藉由用登錄位址3位元中的上位2位元進行寫入動作,即可和實施例1同樣的進行寫入動作。
另一方面,對於確認記憶墊1004,由於藉由3位元使登錄數增加為2倍,故3位元中的下位1位元如第15圖所示地増加。亦即,將輸入資料“00 01 10 01 10 00”寫入到登錄位址“001”。
接著,第16圖中,係顯示用第15圖寫入的經擴張的登錄位址進行搜尋的例子。
如第16圖(a)所示,輸入關鍵資料“2699”作為搜尋資料的情形中,係從經分割的搜尋記憶墊1004的最初分割記憶體(SRAM)讀取“000”。對於與第2個至第6個分割關鍵資料對應的記憶體位址,因已進行「無需顧慮(don’t care)」處理,故所讀取的資料即成為搜尋對象外。然後,以“000”作為位址而存取於確認記憶墊1004時,“10 10 10 00 10 11”即被讀取。依此方式,可知搜尋記憶墊102的確認結果係與輸入資料“2699”一致。
然後,如第16圖(b)所示,輸入關鍵資料“408”作為搜尋資料的情況中,從已分割的搜尋記憶墊1002的第1個及第4個讀取“001”的登錄位址。至於其餘的搜尋記憶墊1002,則由於所存取的資料皆已進行「無需顧慮(don’t care)」處理,故讀取的資料成為搜尋對象外。以讀取的登錄位址“001”來存取於確認記憶墊1004時,可知“00 01 10 01 10 00”係與輸入資料“408”一致。
其次,使用第17圖就作為關鍵字(key word)搜尋之基礎的遮蔽操作方法加以說明。第17圖(a)係顯示以關鍵資料“1440”將已分割的搜尋記憶墊1002的第4個至第6個遮蔽並進行搜尋的情況。在此情形中,第17圖(a)的狀態中,從搜尋記憶墊1002輸出“11”,並以記憶位址“11”存取確認記憶墊1004時,可知從搜尋記憶墊1002的輸出係與作為輸入資料的關鍵資料一致。
另一方面,第17圖(b)係顯示對於輸入資料“1440”將第2個、第4個、及第6個記憶墊遮蔽並進行搜尋的例子。在此情形中,因為第1個、第3個、及第5個登錄係當作「無需顧慮(don’t care)」,而第2個、第4個、及第6個已被遮蔽,故致搜尋記憶墊1002的輸出消失。亦即,在此情況中,係判斷為無搜尋資料。
接著,就本發明實施例中的多發命中(multihit)的定義及對搜尋引擎的擴張加以說明。
與實施例1或實施例2同樣的,將作為第1控制位元的第1旗標F1的位元、及表示作為第2、第3、第4---旗標位元的相關位址RF的樹狀結構
(tree)位元追加到標頭,並完成第1操作至第3操作。第1旗標F1的位元為非活性時,係為與實施例1或實施例2同樣地進行操作的單發命中模式(singlehit mode)。另一方面,第1旗標F1為有活性時,即設為對應多發命中,而如第18圖所示,以第3操作來處理要求取的關鍵資料,並於輸出登錄位址後,將其暫時儲存於緩衝記憶體BSRAM。此時,就將第4操作中止,並在第2時脈裡,以快捷記憶墊找出藉由第3操作輸出的登錄位址相關位址樹狀結構的上位位址,並抽出資料,與其位址一起暫時儲存。在下一個時脈裡,以前述快捷記憶墊將相關位址樹狀結構的位於第2個的位址及該第2資料找出,並將該位址及資料抽出。繼續進行該程序,一直到相關旗標樹狀結構的優先順位的下位。返回到第1相關位址時,進行旗標為非活性的操作。由於這是一種反饋環圈(feedback loop),所以在重複進行期間(旗標的活性期間),會將新的搜尋中止。以新的第4操作暫時儲存,並將具有相關關係的複數個位址輸出,且依需要進行資料的附加。
藉此方式,搜尋引擎之重要作用的複數個類似搜尋就能夠執行。第6圖中,於旗標F1存在的情況下,雖剛才的輸入登錄數的1/2輸入也需要旗標,但可進行位元數的追加,並追加旗標功能,而與資料相關聯地準備旗標RF。該旗標分類成若干個,且成為可進行樹狀結構搜尋的旗標。由於該組資訊寫入於近接快捷記憶墊,故可開始次程序的操作,並輸出複數個搜尋位址及資料。
要將CAM設成可利用作多發命中時,有必要使複數個關鍵資料與一個登錄對應。在現況下,假設欲使複數個關鍵資料對應1個登錄位址,則搜尋記憶墊102的輸出會完全成為忽視搜尋狀態,而成為不能進行確認記憶墊104的讀取。對於該問題,藉下述方法來解決。
要使複數個關鍵資料對應1個登錄位址的情況中,係將旗標設定於“11”。旗標為“11”時,就不使用確認記憶墊104,以去除忽視搜尋的部分。如果確認所讀取的登錄位址全部一致,就將該資料判定為登錄位址。
這意味著可將搜尋的動作利用以登錄位址存取的快捷記憶體的資料中的一部分資料來控制。
說明這個意義的圖示為第19圖。第19圖顯示了本實施例之多
發命中與一般CAM之多發命中的差異。在一般CAM的多發命中裡,如第19圖(a)所示,對於一個關鍵資料,輸出複數個登錄位址。另一方面,本實施例之SRAM-CAM的多發命中裡,如第19圖(b)所示,對於複數個關鍵資料的輸入,輸出一個登錄位址。
本發明的SRAM-CAM中,達到與一般CAM類似之多發命中功能的方法,表述於第20圖。一般的CAM中,如第20圖(a)所示,對於一個關鍵資料“A”,可找到複數個登錄位址“m”“n”“p”。相對地,本實施例的SRAM-CAM中,如第20圖(b)所示,對於一個關鍵資料“A”,有登錄位址“m”“n”“p”相對應。資料0的部分,作為旗標,多發命中on時使用0或1的資料;多發命中off時,則使用0或1的資料。在資料1的部分直到成為0切換旗標;而在成為0的時刻,將關鍵資料的停止輸入解除。
透過這種方式,以登錄位址存取的SRAM就可設置複數個,而以資料0來控制複數個SRAM。而且,透過使用多埠(multi-port)型SRAM,可使多發命中資料的輸出高速化。
多發命中的時脈計時(clock timing)如第21圖所示。對於系統動作,SRAM的動作有餘裕時,可使SRAM高速化以進行多埠式動作。該第21圖顯示了4埠動作的例子。系統時脈、RAM0時脈、RAM1時脈、RAM2時脈、RAM3時脈可藉由4倍速時脈用計數器與簡單邏輯電路輕易產生。此外,以RAM3時脈的反轉信號來閂鎖系統輸出時,就成為與系統輸出相同的時序。此外,一般的動作係用系統時脈與RAM0時脈使之動作。多發命中時,係以RAM0至RAM3的OR信號(4倍速時脈)使登錄目標的SRAM動作,用RAM3時脈的反轉信號將SRAM的閂鎖輸出加以閂鎖時,可獲得與系統輸出同一時序的4個並列輸出。
以上係就可使用於開關路由器的CAM動作及實現搜尋引擎的方式加以陳述,這個構成也可擴張為以LUT(Look Up Table,查找表)為基礎的功能。為達成此目的,只要在搜尋記憶墊的墊上下附設小規模的開關等控制電路即可。
在登錄位址往記憶體的輸入中,把重疊當作「無需顧慮(don’t care)」來處理的實施例1、2所記載的方法的界限,係為在記憶體列完全重
疊之前。這種問題容易發生在比隨機資料更具資料差異性(隔閡性)時。此時的對策係對附帶於登錄位址的旗標進行改讀。
寫入資料時若選擇了已完成寫入的位址時,則不將旗標當作“10”來進行寫入,而在搜尋時忽視“10”的旗標的輸入資料資訊。但,由於資料的差異性,而有搜尋時整個記憶墊的旗標都變成“10”,導致陷入無法搜尋的情形。為了避免這種情形,搜尋時即使整個輸入資料的旗標都是“10”,也只限於SRAM的讀取資訊完全一致的情況,才將該資料作為搜尋資料的關鍵資料來處理。
使用邏輯電路的方法由均質電路群單位(Unified cluster circuit)的概念所形成,使應用範圍得以大幅擴大。搜尋記憶墊中附加有LUT控制電路(LUTC)的狀態揭示於第22圖。亦即,第22圖係顯示在第6圖的搜尋記憶墊102的輸入部及邏輯輸出部中附加開關電路網的結構。
在該第22圖中,CTS表示控制信號,LO表示邏輯輸出。搜尋記憶墊102則當作LUT(Look Up Table)102’來利用。若將作為四則運算及數據位移源的加法器的例子加以顯示,則會形成第23圖所示的構成。四則運算所需要之運算步驟係以開關電路構成。亦即,第23圖係顯示具有複數個LUT的情況,其中顯示了選擇16位元加法器時的例子。SW為切換2個輸入的開關電路,b_DV為位元分配電路,C為連接器,可設定為on/off,且在off時強制設為0的電路。此外,透過使LUT的周邊電路對應於複數個LUT,其功能即可動態地改變。而且,透過與複數個電路區塊進行協調,可以提升處理效率,並縮小系統的面積。又,連接器C的輸出設定在0時,就成為8位元加法器×2。
接著,將顯示位元數的整體構成例揭示於第24圖。依此方式,搜尋記憶墊就成為可藉由附加開關電路(LUT控制電路)進行邏輯動作的區塊。
第24圖中,將256登錄×32鍵的CAM陣列的單元部分構成加以顯示時,即成為下述的形態。亦即,(1)CAM本體係實現至具多發命中功能為止的CAM功能的單元。(2)LUT成為(a)8個256字元×10位元的SRAM、(b)1個256字元×32位元的SRAM、(c)1個256字元×48位元的SRAM的構成。
其中,(b)與(c)也可為9個256字元×10位元的SRAM。這種方式可使作為LUT的利用效率提高。此外,若設計成這種方式,即可實現面積效率優異的邏輯電路或可當作記憶體來使用的均質電路群單位。將第24圖所示的區塊配置成陣列狀時,就可作為可程式邏輯區塊或記憶區塊來使用。概念上,可構成為CAM功能及可程式邏輯區塊或與記憶區塊相等的形態。此外,MB係表示多匯流排(multibus)。
可用相同墊來構成這種記憶體與邏輯的均質區塊排列,由於可將必須處理的區塊鄰接配置,故可解除匯流排縮頸(bus neck)的情形,確保以低消耗電力高速動作。而且,藉由這種均質區塊排列,所有資料處理(processing)皆屬可能。
第25圖中,第25圖(a)係說明開關或搜尋的動作,第25圖(b)則說明邏輯運算的步驟。第25圖中,係顯示透過來自控制系統整體的電路的指示進行切換,可執行所有的處理的構成。此外,第25圖(b)中,CB係表示近接連接匯流排,LI表示邏輯輸入,LO表示邏輯輸出。又,以一點鏈線圈起來的部分係表示次程序(subroutine),其為1環圈/時脈。
本實施例中,由於將必要資料群鄰接配置,故可用鄰接及1時脈進行並列運算。第25圖中,係將其以所謂第1時脈的時序來顯示。藉此方式,就可在可能範圍內以鄰接狀態來構成。第25圖(a)係顯示開關或搜尋的情況,第25圖(b)則顯示邏輯運算的情況。亦即,若將其再擴張,亦可作為區塊單位,而在系統上產生動態重組(Dynamic reconfiguration)的概念(第26圖)。亦即,以4×4區塊排列的例來顯示時,就成為第26圖的形態,很容易判知所有構成皆可瞬時切換。只有這樣才是大腦型電腦的開端。
第26圖係為加上邏輯運算功能的SRAM_CAM陣列構成的圖示。第26圖所示的例子係為動態重組(Dynamic reconfiguration)記憶區塊作4×4的16個排列時的構成例。第26圖所示的例子中,全部都是以SRAM構成的區塊,而且透過內建功能切換暫存器使任何形態皆可瞬時切換。區域匯流排(local bus)(LB)在第25圖中係記載為鄰接匯流排(CB),藉此方式,相鄰接之間的資訊或處理的共有化可在1個時脈內完成,可達成高速化及低電力消耗。大域匯流排(global bus)(GB)主要是使用在動態重組時的區塊轉換,
區塊資料群的叢發傳送為其主要任務。
第26圖係顯示SRAM-CAM陣列,GB為大域匯流排,LB為區域匯流排。區塊A、D、E、H、I、L、M、P為CAM功能區塊,其他為LUT功能區塊。各區塊係以程式設定功能指定。藉此方式,即可以CAM功能區塊進行搜尋,以LUT功能區塊執行各種運算處理。以虛線圍繞2個區塊的部分,意指以2個區塊構成處理單元區塊。此外,大域匯流排(GB)的1組資料寬度設為n位元組(byte)時,在本例子中,就可進行16n位元組的處理。而且,本實施例的LUT方式,如第27圖所示,四則運算處理可在1個時脈內完成具極大優點(第27圖)。亦即,一般的運算方式的移位(shift)、加算及暫存器閂鎖過程的4位元乘算中,需要6個步驟。但本實施例的LUT方式中,因為只要拉出以x、y位址輸入即可存取的回應答覆就可完成,用1個步驟即可完成。此外,第27圖(a)為2進4位元乘法器,H為半加法器,F為全加法器、圖中以○標示者為正反電路(F/F)(flip flop circuit)。同時,漣波進位(ripple carry)加法器的加算段數為6段,潛在數(latency)為2。而且,其與第27圖(b)所示的LUT方式乘法器係屬相同功能。
而且,第28圖顯示登錄數大於256時的思考概念。登錄數大於256,例如4k的情況中,可從256×16=4k確保16個面的區域“0000”至“1111”。透過將該16個面的區域分配到記憶體區域、LUT、運算器、及比較器等,並動態地切換,就可謀求功能的提升。登錄位址設為12位元時,可將其中的4位元設為區域指定,8位元設為區域內位址。
【實施例4】
第29圖係顯示將輸入資料的關鍵資料與作為搜尋資料的關鍵資料施以編碼處理的實施例。該〔實施例4〕為與第2圖所示的步驟S2、及第4圖所示的步驟S7相關的例子。
亦即,實施例4所涉及的半導體裝置係透過將輸入資料及作為搜尋資料的關鍵資料進行編碼,以解除輸入於控制電路的複數個關鍵資料之偏倚為其目的。藉由將複數個關鍵資料的偏倚解除,可減少寫入搜尋記憶墊時的衝突重複頻度,同時,縱使發生衝突重複,也可適切地進行搜尋處理。特別是,第29圖顯示了SRAM-CAM記憶體電路構成的一個例子。
所謂的關鍵資料偏倚,係發生在例如具有幾乎相同的二進制資料的複數個關鍵資料相連續寫入到搜尋記憶墊的情況。例如,假設在“00 01 10 01 10 00”的關鍵資料輸入之後,接著輸入“00 01 10 01 10 01”的關鍵資料的情況中,2個關鍵資料中,只有最後1位元不同。本發明的半導體裝置中,為了減少發生位址“衝突重複”的機率,較佳為使複數個關鍵資料作某種程度的隨機化,再行輸入。然而,如上述例子所示,幾乎相同的關鍵資料持續輸入時,會頻繁發生位址的“衝突重複”。因此,本實施例係將所輸入的關鍵資料予以編碼,並以人為方式使複數個關鍵資料的二進制資料隨機化。
在此,所稱「編碼」係包含按照預定的規則(計算法)進行關鍵資料的分散化。而且,「編碼」不僅包含利用數式(計算法)的編碼,也包含將表示關鍵資料的資料位元次序改變排列的作法。
如第29圖所示,半導體裝置包含:近接快捷記憶墊101、編碼電路106、控制電路105、搜尋記憶墊102、比較及閂鎖電路103、以及確認用記憶體104。近接快捷記憶墊101在不需要時,不必設置。
第29圖所示的SRAM-CAM中,首先係使原資訊的關鍵資料(KD)最先輸入編碼電路106。然後,原資訊的關鍵資料再藉由編碼電路106按照預定的計算法予以編碼。編碼電路106會按照預定的計算法將所輸入的關鍵資料進行編碼,並輸出編碼後的關鍵資料。藉編碼電路106所編碼的關鍵資料係輸入到控制電路105。控制電路105則將經編碼的關鍵資料使用作為用以對搜尋記憶墊102進行搜尋的位址,或作為新寫入搜尋記憶墊102所需的位址來使用。
亦即,控制電路105可將編碼後的關鍵資料以完全相同於〔實施例1〕所說明的關鍵資料的方式來處理。亦即,控制電路105會將編碼後的關鍵資料分割成複數個,並以分割的關鍵資料作為位址而存取於搜尋記憶墊102。接著,控制電路105將登錄位址寫入於所存取的搜尋記憶墊102,並將寫入所存取的搜尋記憶墊102的登錄位址讀取。這些寫入處理及讀取處理係與〔實施例1〕等所說明的處理相同。該寫入處理及讀取處理,係對所有的經分割的搜尋記憶墊102全部進行。
首先,控制電路105將用以儲存登錄位址(EA)的位置(位址)分配於搜尋記憶墊102的y軸,將編碼後的經分割關鍵資料(KD)分配於x軸。
搜尋記憶墊102分割為與分配於x軸的編碼後關鍵資料對應的適當大小位元數的基本單元(cell)(分割數:N)。在此,N為2以上的自然數。第29圖的例子中,N為8。另一方面,位元數對各基本單元的分配係為任意。同時,控制電路105分別將登錄位址分配於確認記憶墊104之y軸,與登錄位址對應的關鍵資料分配於x軸。因此,確認記憶墊104中係按照登錄位址寫入有關的關鍵資料。另外,儲存於確認記憶墊104的關鍵資料並非對應於經上述編碼電路106編碼後的輸入資料,而是對應於輸入編碼電路106之前作為原資訊的關鍵資料。
亦即,輸入於搜尋記憶墊102的關鍵資料係為寫入時或搜尋時所輸入的作為原資訊的關鍵資料經施以編碼的編碼後關鍵資料。相對於此,儲存於確認記憶墊104的關鍵資料為編碼前的資料,換言之,係為寫入時或搜尋時所輸入的作為原資訊的關鍵資料本身。亦即,對於確認記憶墊104的參閱處理係對輸入於編碼電路106的編碼前作為原資訊的關鍵資料進行者。
第35圖係以將第29圖所示的半導體裝置動作時序與第1時脈及第2時脈的連結來顯示。首先,在第1時脈裡,關鍵資料輸入至編碼電路106,使作為原資訊的關鍵資料進行編碼,再使編碼後的關鍵資料向控制電路105輸出。此外,在第1時脈裡,編碼後的關鍵資料係輸入到控制電路105,並進行對搜尋記憶墊102的寫入處理或讀取處理,使登錄位址閂鎖到閂鎖電路103a。在此之前的處理係在第1時脈執行。接著,在第2時脈裡,來自閂鎖電路103a的資料係藉比較器103b加以比較,其比較結果則往確認記憶墊104輸入。而且,在第2時脈裡,亦就確認記憶墊104的資料與編碼前的輸入資料的一致性進行確認,最後,將自確認記憶墊104所讀取的資料輸出。
以下,就本實施例的編碼電路106的動作及電路構成加以說明。編碼電路106將資料的寫入時或讀取時所輸入的作為原資訊的關鍵資料進行編碼。而且,編碼電路106具有透過適當設定編碼條件以除去關鍵資料的偏倚或變更位元長度的功能。如後所述,該編碼處理藉由將資料混合、擴散、或附加冗長性來進行。。例如,編碼位元使用生成多項式從原資訊產生,
冗長位元的長度則按照生成符碼時指定的參數而變化。以將經編碼的資料輸入到搜尋記憶墊102(SRAM-CAM)的方法而言,可舉出(1)以原資訊及編碼位元的形式來使用的方法、或(2)僅使用編碼位元的方法。本實施例中,最初先說明上述的方法(1),然後就上述的方法(2)加以說明。另外,方法(2)由於是使原資訊擴散到編碼位元中的廣大範圍來構成,故對位元偏倚的除去更為有效。
第30圖係為用以說明編碼位元與資料的散亂程度的圖示。第30圖中,係顯示28位元的關鍵資料輸入於編碼電路的情形。第30圖所示的符碼生成參數係作為表示輸入資料或作為關鍵資料的原資訊的散亂程度指標。例如,對28位元的原資訊施以編碼處理,而獲得6位元的編碼位元的情況中,輸入於控制電路105的編碼後輸入資料為總位元數34位元。在此情形中,表示散亂程度的符碼生成參數為1位元。此外,對於28位元的原資訊施以編碼處理,而獲得27位元的編碼位元的情況中,輸入於控制電路105的編碼後輸入資料為總位元數55位元。在此情形中,表示散亂程度的符碼生成參數為5位元。又,對28位元的原資訊施以編碼處理,而獲得70位元的編碼位元的情況中,輸入於控制電路105的編碼後輸入資料為總位元數98位元。在此情形中,表示散亂程度的符碼生成參數為11位元。
從而,可知為了提高散亂程度以使符碼生成參數的位元數増大,只要増大編碼位元數即可。但,編碼位元數増大時,構成搜尋記憶墊102的SRAM數也要増加。相對於此,僅使用上述(2)編碼位元的方法中,總位元數會依原資訊的位元數份程度減少,故可節約構成搜尋記憶墊102的SRAM數。而且,由於所生成的編碼位元具有冗長性,所以沒有將所生成的編碼位元全部使用的必要,可刪除一部分。依此方式,藉由刪除編碼位元的一部分,則不僅可節約構成搜尋記憶墊102的SRAM數,關鍵資料的位元長度也可適當調整為合於SRAM構成的形態。
在此,就作為原資訊的關鍵資料設為7位元,編碼位元設為8位元的情況加以說明。第31圖係為顯示本發明一實施例的圖示,其中顯示了編碼電路106輸出的原資訊與編碼位元。本實施例中,利用波斯‧喬德林‧霍堃鐫碼(BCH碼,Bose Chaudhurin Hocquenghem code)作為使用於編碼處
理的一個符碼例。BCH碼的特徵:BCH碼係為經參數化的錯誤訂正符碼的一種,可以以稱之為徵狀解碼(Syndrome decode)的簡潔式代數學手法來解碼方面。BCH碼可用低電力以小型機器來編碼及解碼。在本發明中,僅使用編碼功能,不使用解碼功能。BCH碼由複數個位元的原資料的XOR(以加法+來表示)組成的值所構成。從編碼的觀點來看,BCH碼即使只用不含原資料部分的編碼位元進行編碼也可進行搜尋。另外,編碼除了BCH編碼以外,還有低密度奇偶校驗碼(LDPC,Low-density parity-check code)、四元變軌碼(QSBC,Quadruple Swing-By Code,註:亦為(株)東芝的登錄商標)等。本發明中,可使用這些LDPC或QSBC來代替BCH碼。
如第31圖所示,藉由將7位元的作為原資訊的關鍵資料“a6 a5 a4 a3 a2 a1 a0”進行編碼處理,會產生8位元編碼位元(15、7)符號。編碼位元的各位元為“a6+a2+a0”、“a6+a5+a2+a1+a0”、“a6+a5+a4+a2+a1”、“a5+a4+a3+a1+a0”、“a6+a4+a3”、“a5+a3+a2”、“a4+a2+a1”、“a3+a1+a0”。依此方式,所產生的編碼位元的各位元中,作為原資訊的關鍵資料的各位元的值會被混合及擴散,使冗長性得以確保。
茲就以編碼電路106執行的BCH編碼處理說明其詳細內容。假設k位元的原資訊的資訊位元為“ak-1、ak-2、---a1、a0”,m位元的編碼位元為“cm-1、cm-2、---c1、c0”,n位元的BCH碼則以“ak-1、ak-2、---a1、a0、cm-1、cm-2、---c1、c0”的方式來表示。BCH碼的生成即為求得m位元的編碼位元的情形。
表現該向量的多項式為數式(1)。
【數式1】F(x)=ak-1 xn-1+ak-2 xn-2+...+a1 xm+1+a0 xm+cm-1 xm-1+cm-2 xm-2+...+c1 x+c0...(1)
再者,資訊位元部分設為P(x),符碼位元設為R(x)時,即可表現如數式(2)。
【數式2】F(x)=xm P(x)+R(x)...(2)
而且,將稱為生成多項式的m次多項式G(x)導入,而只將可用
G(x)除得盡者作為符碼語時,F(x)與G(x)之間,就成立下列數式(3)。另外,下列數式(3)中,係以數式來表現以G(x)除盡F(x)的情況,故以F(x)除以G(x)時的商數設為“Q(x)”。
【數式3】F(x)=Q(x)G(x)...(3)
從數式(2)及數式(3)可得下式(4)。
【數4】xm P(x)=Q(x)G(x)+R(x)...(4)
BCH碼的生成即是從該式求得xmP(x)除以G(x)的餘數R(x)的情況。
計算K-1次的多項式,數式(5)
【數式5】P(x)=ak-1 xk-1+ak-2 xk-2+ak-3 xk-3+...+a1 x+a0...(5)
除以m次的多項式,式(6)
【數式6】G(x)=gm xm+gm-1 xm-1+...+g1 x+g0...(6)
時的商數與餘數的電路,一般如第33圖所示。
而且,將第33圖所示的電路變形為xmP(x)除以G(x)的電路時,即成為第34圖所示的構成。第34圖係顯示實際上用於生成BCH碼的電路。餘數R(x)可在輸入ak-1、ak-2、---a1、a0後,藉由移位(shift)操作將儲存於移位暫存器的資訊輸出而獲得。透過以該第34圖所示的編碼電路進行運算,可生成第31圖所示的(15,7)符碼。本發明的編碼電路106並不使用第34圖的電路,而是使用表示第31圖的運算結果的式子來構成。藉由使用該式子,
即如第34圖的電路那樣,編碼並不須好幾個循環,就可進行編碼。(15、7)符碼係生成參數為2(t=2)的情況,係為在上述第31圖所示的原資訊附加有編碼位元的15位元符碼。然後,該符碼即為編碼後的輸入資料。亦即,經由控制電路105,就可生成要輸入搜尋記憶墊102的關鍵資料。t=4的情況中,即如第32圖所示,散亂度更為増加。第32圖係顯示在本發明的其他例子中,8位元的原資訊及由此生成的20位元的編碼位元的圖示。
第32圖中,藉由對8位元的作為原資訊的關鍵資料“a7 a6 a5 a4 a3 a2 a1 a0”進行編碼處理,而生成了20位元的編碼位元。編碼位元的各位元,為“a1+a2+a3”、“a0+a1+a2”、“a0+a2+a3+a6+a7”、“a3+a5”、“a2+a4+a7”、“a1+a3+a6+a7”、“a0+a2+a5+a6”、“a2+a3+a4+a5+a6”、“a1+a2+a3+a4+a5+a7”、“a0+a1+a2+a3+a4+a6+a7”、“a0+a5”、“a1+a2+a3+a4+a6+a7”、“a0+a1+a2+a3+a5+a6”、“a0+a3+a4+a5+a6”、“a1+a4+a5+a6”、“a0+a3+a4+a5+a6”、“a1+a4+a6+a7”、“a0+a3+a5+a6+a7”、“a1+a3+a4+a5”、“a0+a2+a3+a4+a7”。依此方式,所生成的編碼位元的各位元中,即得以使作為原資訊的關鍵資料的各位元值經混合、擴散而確保冗長性。而且,與第31圖的情況相比,散亂度明顯増大。由該原資訊所生成的20位元的編碼位元,係以原資訊的XOR邏輯式來表示,可直接變換為原資訊的XOR邏輯電路。
以對上述編碼電路106的要求條件而言,係在資料寫入時及搜尋時,編碼電路106的輸出要一致。亦即,編碼電路106在資料的寫入時及搜尋時執行相同的編碼。依此方式,編碼電路106只要能保証在資料寫入時及搜尋時不會生成不同的編碼位元即可。透過採用這種方式,構成搜尋記憶墊102的各SRAM的對應關係就可維持。
茲使用第36圖說明往本發明的搜尋記憶墊102的寫入動作。第36圖中,為了容易了解說明內容,與4個登錄位址對應的作為輸入資料的關鍵資料“167”、“235”、“116”、“90”表示在括號( )內。亦即,表示在括號( )內的關鍵資料為編碼前的資料。而且,這些資料藉編碼電路106施以編碼,變換成關鍵資料“2699”、“3779”、“1859”、“1440”。
第36圖的例子中,搜尋記憶墊102分割成6個分割記憶體(分割數N=6)。而且,假想為控制電路105對編碼後關鍵資料的各個
“2699”“3779”“1859”“1440”分配登錄位址“00”“01”“10”“11”的情況。
亦即,作為應寫入登錄位址“00”的資料而輸入的關鍵資料“167”係藉編碼電路106而變換成“2699”。此外,編碼後的關鍵資料“2699”若以二進制資料來表示,則為“10 10 10 00 10 11”。編碼後的關鍵資料輸入於控制電路105時,該控制電路105會將該編碼後關鍵資料分割成複數個。第36圖所示的例子中,編碼後的關鍵資料係分割成6個。將該分割後的各個關鍵資料寫入經6等份分割的搜尋記憶墊102中。此時,寫入於搜尋記憶墊102的資料為與編碼後關鍵資料“2699”對應的登錄位址“00”。
如第36圖(a)所示,經編碼的關鍵資料“2699”藉控制電路105作6等份分割,並表現作“10”“10”“10”“00”“10”“11”。控制電路105以最初的分割關鍵資料“10”作為位址,將登錄位址“00”寫入到最初的分割記憶體102a。接著,控制電路105以第2個分割關鍵資料“10”作為位址,將登錄位址“00”寫入到第2個分割記憶體102b。再來,控制電路105以第3個分割關鍵資料“10”作為位址,將登錄位址“00”寫入到第3個分割記憶體102c。而且,控制電路105繼針對第4個至第6個分割關鍵資料“00”“10”“11”,同樣將登錄位址“00”寫入到第4個至第6個各分割記憶體102d、102e、102f。
藉此方式,即可使登錄位址“00”寫入到以編碼後關鍵資料“2699”指定的搜尋記憶墊102。
接著,作為應寫入登錄位址“01”的資料而輸入的關鍵資料“235”,藉編碼電路106變換為“3779”。編碼後的關鍵資料“3779”若以二進制資料來表現,則成為“11 10 11 00 00 11”。在此,控制電路105將與該編碼後關鍵資料“3779”對應的登錄位址“01”寫入到經6等份分割的搜尋記憶墊102。
如第36圖(b)所示,編碼後關鍵資料“3779”藉控制電路105作6等份分割,並表現作“11”“10”“11”“00”“00”“11”。控制電路105以該等分割關鍵資料作為位址,將登錄位址“01”寫入到搜尋記憶墊102。亦即,控制電路105會以最初的分割關鍵資料“11”作為位址,將登錄位址“01”寫入到最初的分割記憶體102a。然後,控制電路105會以第2個分割關鍵資料“10”作為位址,將登錄位址“01”寫入到第2個分割記憶體102b。此時,由於編碼後的關
鍵資料“2699”業已寫入,第2個分割記憶體102b的位址已寫入有登錄位址“00”。因此,控制電路105會在有位址衝突重複的位置寫入衝突重複旗標,而在後續的讀取處理中,當作「無需顧慮(don’t care)」者來處理。又,如第36圖(b)所示,接下來,控制電路105會以第3個分割關鍵資料“11”作為位址,將登錄位址“01”寫入到第3個分割記憶體102c中。同樣的,控制電路105亦以第4個至第6個關鍵資料“00”“00”“11”作為位址,將登錄位址“01”寫入到第4個至第6個分割記憶體102d、102e、102f。但,由於第4個及第6個分割記憶體102d、102f的位址上業已寫入有編碼後關鍵資料“2699”的登錄位址,故控制電路105會在該位址設定衝突重複旗標,並在後來進行的搜尋處理中,當作「無需顧慮(don’t care)」者來處理。
藉此方式,以編碼後的關鍵資料“3799”所指定的搜尋記憶墊102就可寫入登錄位址“01”。同樣的,以編碼電路將原資訊的關鍵資料“116”“90”變換為“1859”“1440”,再以這些編碼後的關鍵資料“1859”“1440”作為位址,將登錄位址“10”“11”寫入到搜尋記憶墊102。另外,如第36圖(c)所示,在編碼後關鍵資料“1859”的寫入處理中,會在第5個分割記憶體102e中新產生位址衝突重複。而且,如第36圖(d)所示,編碼後關鍵資料“1440”的寫入處理中,會在第1個及第3個分割記憶體102a、102c新產生位址衝突重複。
第36圖(e)上段顯示了確認記憶墊(SRAM)104的寫入狀態的例子。
如第36圖(e)上段所示,在確認記憶墊104中,登錄位址“00”中寫入了關鍵資料“167”的二進制資料“10 10 10 00”,登錄位址“01”中寫入了關鍵資料“235”的二進制資料“11 10 11 00”,登錄位址“10”中寫入了關鍵資料“116”的二進制資料“01 11 01 00”,登錄位址”11”中寫入了關鍵資料“90”的二進制資料“01 01 10 10”。
此外,如第36圖(e)下段所示,也可在確認記憶墊104的登錄位址“00”“01”“10”“11”寫入編碼後的關鍵資料“2699”、“3779”、“1859”、“1440”。
第37圖為顯示本發明半導體裝置(SRAM-CAM)之搜尋動作的圖示。第37圖(a)顯示了輸入“167”作為原資訊的關鍵資料,並變換為藉編
碼電路106編碼後的關鍵資料“2699”時的搜尋動作。編碼後的關鍵資料“2699”,以二進制資料來說,是表現作“10 10 10 00 10 11”。該二進制資料在控制電路105中分割為6個。經分割的關鍵資料係分別作為用以存取於分配到經6等份分割的搜尋記憶墊102之y軸的「登錄位址記入位置」的位址來使用。以最初的分割關鍵資料“10”作為位址,從最初的分割記憶體102a讀取資料時,會讀取登錄位址“00”。再以第2個分割關鍵資料“10”作為位址,從第2個分割記憶體102b讀取資料。但,由於該資料已在輸入第36圖(b)所示的編碼後關鍵資料“3799”時產生位址衝突重複,故進行「無需顧慮(don’t care)」處理。亦即,來自第2個分割記憶體102b的讀取資料會成為搜尋對象外。
此外,以各個第3個分割關鍵資料“10”、第4個分割關鍵資料“00”、及第6個分割關鍵資料“11”作為位址的搜尋處理,也是由於同樣產生了位址的衝突重複,故會因「無需顧慮(don’t care)」處理,而將讀取的資料作為搜尋對象外。又,有關於第5個分割關鍵資料“10”,以其為位址而存取於第5個分割記憶體102e時,可將登錄位址“00”讀取。
如第37圖(a)所示,根據編碼後的關鍵資料“2699”,從搜尋記憶墊102讀取的資料中,最初的分割記憶體102a的資料及第5個分割記憶體102e的資料都是“00”,具有一致性。藉此方式,與編碼後關鍵資料“2699”對應的登錄位址,可推測為“00”。
因此,使用確認記憶墊104來讀取藉登錄位址“00”存取的關鍵資料值時,係為“10 10 10 00”,可知其與編碼前輸入資料的關鍵資料“10 10 10 00”一致。以此方式,控制電路105就會將來自確認記憶墊104的輸出資料的關鍵資料與作為編碼前搜尋資料的關鍵資料加以比較,確認兩者的一致性,並輸出登錄位址。
第37圖(b)顯示了編碼後的關鍵資料“3779”作為搜尋對象而予以輸入的情形。關鍵資料“3779”係以“11 10 11 00 00 11”的二進制資料來表現,並藉控制電路105作6等份分割。經分割的關鍵資料係分別用作存取於分配在經6等份分割的搜尋記憶墊102之y軸的「登錄位址記入位置」所需的位址。以最初的分割關鍵資料“11”作為位址,從最初的分割記憶體
102a讀取資料時,可讀取登錄位址“01”。雖以第2個分割關鍵資料“10”作為位址,從第2個分割記憶體102b讀取資料,但在該資料已產生位址衝突重複,故當作「無需顧慮(don’t care)」者來處理。藉此方式,第2個分割關鍵資料“10”即被認作為搜尋對象外。
以第3個分割關鍵資料“11”作為位址,從第3個分割記憶體102c讀取資料時,可讀取登錄位址“01”。另一方面,以各第4個分割關鍵資料“00”、第5個分割關鍵資料“00”、及第6個分割關鍵資料“11”作為位址而往第4至第6個分割記憶體102d、102e、102f的存取,即藉「無需顧慮(don’t care)」的處理而成為搜尋對象外。
如第37圖(b)所示,藉編碼後關鍵資料“3779”從搜尋記憶墊102讀取的值,係為第1個及第3個分割記憶體102a、102c的登錄位址“01”。
因此,使用確認記憶墊104,讀取藉登錄位址“01”存取關鍵資料的值時,為“11 10 11 00”,與編碼前的關鍵資料“11 10 11 00”一致。亦即,控制電路105會將來自確認記憶墊104的作為輸出資料的關鍵資料、與作為編碼前搜尋資料的關鍵資料加以比較,經確認其一致性後,輸出登錄位址。
接著,第37圖(c)顯示了對未寫入搜尋記憶墊102的關鍵資料“94”施以編碼,將編碼後的關鍵資料“1504”作為搜尋對象予以輸入的情形。
如第37圖所示,編碼電路106會將關鍵資料“94”進行編碼,變換為“1504”。編碼後的關鍵資料“1504”係以二進制資料資料“01 01 11 10 00 00”來表現。編碼後的關鍵資料係藉控制電路105作6等份分割。經分割的關鍵資料係分別用作存取分配到經6等份分割的搜尋記憶墊102之y軸的「登錄位址記入位置」所需的位址。以最初的關鍵資料“01”作為位址,從最初的分割記憶體102a讀取資料時,由於發生位址衝突重複,故施行「無需顧慮(don’t care)」處理。其次,以第2個分割關鍵資料“01”作為位址,讀取第2個分割記憶體102b的資料時,會輸出登錄位址“11”。
此外,如第37圖(c)所示,根據編碼後的輸入資料“1504”從搜尋記憶墊102讀取的資料係分別作為第2個分割記憶體102b之輸出的登錄位址“11”、作為第3個分割記憶體102c之輸出的登錄位址“01”、作為第4個分
割記憶體102d之輸出的登錄位址“11”、及作為第6個分割記憶體102f之輸出的登錄位址“11”。另外,對以第5個分割關鍵資料“00”作為位址的分割記憶體102e的存取,係藉「無需顧慮(don’t care)」處理而設為搜尋對象外。在此情形中,從搜尋記憶墊102所讀取的登錄位址存在有複數種。亦即,登錄位址發生了不一致。因此,控制電路105即使不用確認記憶墊104,也可以在該階段判定為與作為搜尋資料的關鍵資料一致的資料不存在於搜尋記憶墊102內。
其次,參照第38圖至第41圖,就僅用編碼位元進行編碼時的實施例加以說明。為了使說明簡單化,將要輸入SRAM-CAM的關鍵資料的位元長度設為24位元,藉編碼所生成的編碼後關鍵資料的位元長度也設為24位元。而且,構成為將編碼後的關鍵資料與前述說明同樣作6等份分割,以經分割的關鍵資料來搜尋經6等份分割的搜尋記憶墊102。由此前提可知,SRAM-CAM的搜尋記憶墊102係由6個16字元×4位元的SRAM所構成。因此,SRAM-CAM的登錄數為16。
由24位元的原資訊生成24位元的編碼位元的方法有各色各樣的方法。在此使用第38圖來說明編碼位元的一個生成方法例。第38圖係顯示可從8位元的原資訊生成10位元的編碼位元的例子。但,在編碼位元的10位元之中,由於原資訊係經擴散,所以除了c0與c1外,係使用c2至c9的位元。如此一來,就可從8位元的原資訊生成8位元的編碼位元。但,在此狀態下,對於24位元的關鍵資料,只能以8位元單位進行編碼。若以8位元單位進行24位元的編碼,則在關鍵資料有偏倚時,會發生無法處理的問題。因此,將24位元的關鍵資料分為每組4位元的6個群組,並以群組單位按照預定的計算法,進行群組排列的調換操作。然後,從調換後群組的左端以每2群組8位元單位進行編碼。該方法顯示於第39圖。
第39圖顯示了輸入於SRAM-CAM的原資訊的關鍵資料(第39圖(a))、按每4位元一組劃分群組並進行群組的排列變更後的關鍵資料(第39圖(b))、及以8位元單位進行編碼後的關鍵資料(第39圖(c))等3種資料的變化。圓圈內的數字(1)至(6)係為了進行群組區別而加註者。
第39圖(a)、(b)、(c)的3種資料中,SRAM-CAM的登錄數
為16,由於搜尋記憶墊102可寫入16種資料,所以依登錄編號順序記述了16個。此外,為了觀察偏倚的影響,而假設在原資訊的6個群組中,3個群組((1)至(3))的資料為完全相同值的情形。第39圖的登錄位址及(1)至(6)所示位置的數字係為將以4位元表現的2進數以10進制來標記者。在作為原資訊的關鍵資料的登錄位址“0”中,(1)至(6)的6個數字“4”、“1”、“13”、“14”、“11”、“5”係表示將24位元的原資訊按每組4位元劃分時的(1)至(6)的各群組值。從而,若實施該群組的排列變更,則如第39圖(b)所示,(1)、(2)、(3)、(4)、(5)、(6)的原資訊會依(2)、(5)、(6)、(3)、(1)、(4)的順序調換排列。而且,調換排列後的登錄位址“0”,其24位元的二進制資料為“1”、“11”、“5”、“13”、“4”、“14”。將該資料以8位元單位的編碼看作(2)(5)、(6)(3)、(1)(4)的8位元資料,並依照第38圖所示之編碼位元的XOR邏輯式,以XOR組合邏輯電路進行變換。實施該8位元單位的編碼的結果,係如第39圖(c)所示。亦即,如第39圖(c)所示,實施編碼時,在登錄位址“0”處,係為以“1”、“7”、“1”、“10”、“6”、“12”表現的24位元資料。
第40圖(a)顯示了作為原資訊的關鍵資料不進行編碼就寫入SRAM-CAM的搜尋記憶墊102,並將寫入於搜尋記憶墊102的資料讀取的情形。第40圖(a)中,由左側依序顯示了作為原資訊的關鍵資料、搜尋記憶墊102的內容、及搜尋記憶墊102的讀取結果。第40圖(b)顯示了實施前述8位元單位的編碼後,寫入於搜尋記憶墊102,並讀取該資料的情形。亦即,第40圖(b)顯示了由於搜尋記憶墊102的登錄數為16,故寫入16種關鍵資料,並從搜尋記憶墊102讀取的情形。第40圖(b)中,由左側依序顯示了實施8位元單位編碼的資料、搜尋記憶墊102的內容、及搜尋記憶墊102的讀取結果。
如第40圖(a)所示,若不進行編碼,則在(1)、(2)、(3)的分割記憶體的偏倚會變大,產生只能寫入1種資料的狀態。而且,如第40圖(a)所示,依登錄位址的順序往搜尋記憶墊102進行寫入時,(1)、(2)、(3)的記憶墊中,以10進制寫入登錄位址“0”,而在其後的寫入操作中,變成位址衝突重複的狀態。第40圖中,以塗黑狀態寫入的資訊為“0”。又,(4)、(5)、(6)的資料,由於係假設為隨機狀態,所以在搜尋記憶墊102上看來,可知其位
址衝突重複發生了隨機(random)的情形。第40圖中,位址衝突重複係以塗黑狀態來表示。若讀取寫入於該搜尋記憶墊102的內容時,(1)、(2)、(3)為完全的衝突重複狀態,可知發揮SRAM-CAM的功能者,實質上只有(4)、(5)、(6)等3個記憶墊。依此方式,由於發生了多起位址衝突重複,6個分割記憶體之中,只有3個產生功能,16個登錄之中,在5個登錄的讀取,亦即在登錄位址“1”、“6”、“7”、“10”、“11”的讀取中,(1)至(6)為全部衝突重複狀態。然而,未發生(1)至(6)的全部衝突重複之處,寫入於搜尋記憶墊102的登錄位址與分割後的關鍵資料登錄位址係為一致,可說是可進行正確搜尋。
第40圖(b)為實施8位元單位的編碼處理時的例子。如第40圖(b)所示,藉由進行編碼處理,第40圖(a)所示的在(1)、(2)、(3)發生的那種極端衝突重複情況不會發生。但,搜尋記憶墊102的讀取結果,在經編碼處理的情況與未編碼處理的情形上,係屬相同的結果。這是由於像第39圖的實施8位元單位編碼之前的群組排列變更實施後的資料所示那樣,作為編碼對象的2個資料中的1個成為完全沒變化的固定資料的緣故。因此,以8位元單位的編碼實施後資料作為原資訊,再一次進行群組排列變更與8位元單位的編碼,將該結果實施第2次8位元單位的編碼,並使用該資料實施對搜尋記憶墊102的寫入、讀取。
第41圖(a)係顯示作為原資訊的關鍵資料不進行編碼,即對SRAM-CAM的搜尋記憶墊進行寫入、讀取時的結果,第41圖(b)則顯示了進行第2次8位元單位的編碼,並使用該資料對搜尋記憶墊進行寫入與讀取時的結果。如第41圖(b)所示,以第2次進行8位元單位的編碼的資料,寫入於搜尋記憶墊102,並讀取所寫入的資料時,就沒有6個分割記憶體形成全部位址衝突重複的狀態。而且,如第41圖(b)所示,從分割記憶體讀取的全部登錄位址與關鍵資料的登錄位址係為一致,可知16個全部登錄資料皆可正確進行搜尋。
從該結果可知,即使為資料偏倚較大的情況,藉由進行複數次編碼處理,可以更有效的除去資料的偏倚。本實施例中,雖以8位元單位進行編碼,但編碼不必為8位元,也可選擇各色各樣的組合。亦即,本發明可透過選擇符碼生成參數或原資訊的位元數,生成各色各樣的編碼位元。例
如,即使為搜尋記憶墊102之構成不改變的情況,也可將原資訊設為12位元或16位元,而生成10位元的編碼位元,其中,也可如本實施例那樣使用8位元,也可將原資訊設為24位元,編碼位元設為24位元。原資訊設為16位元的情況,在所獲得的編碼位元設為8位元時,如以不發生重疊的方式從6個4位元群組(1)至(6)中選擇4個群組,即可生成24位元的編碼位元。
【實施例5】
第42圖係為用以說明即使在搜尋時所輸入的整行關鍵資料都發生衝突重複狀態的情況下,仍可輸出搜尋結果的SRAM-CAM寫入動作的圖示。
本實施例中,有關半導體記憶體電路的構成、及SRAM-CAM的開關或搜尋的動作,因與實施例1同樣,故省略其說明。
參照第42圖說明本實施例中對搜尋記憶墊102的寫入動作。另外,本實施例,係假定為登錄位址為2位元4字元,作為輸入資料的關鍵資料長度為12位元的情況。第42圖的例子中,搜尋記憶墊102經6等份分割。
此外,在本實施例中,係假定將關鍵資料“2699”“2691”“1859”“1440”寫入到各登錄位址“00”“01”“10”“11”的情況。
作為應寫入登錄位址“00”的資料而輸入的關鍵資料“2699”,以二進制資料表現時,為“10 10 10 00 10 11”。以該值作為經6等份分割的分割記憶體102a至102f之y軸的位址,將資料寫入搜尋記憶墊102。此時,所寫入的資料為例如關鍵資料“2699”的登錄位址“00”。
如第42圖(a)所示,使關鍵資料“2699”作6等份分割,並表現為“10”“10”“10”“00”“10”“11”,以這些值作為位址,使登錄位址”00”寫入到分割記憶體102a至102f。亦即,控制電路105以最初的分割關鍵資料“10”作為位址,將登錄位址“00”寫入到最初的分割記憶體102a。接著,控制電路105以第2個分割關鍵資料“10”作為位址,將登錄位址“00”寫入到第2個分割記憶體102b。而且,控制電路105以第3個分割關鍵資料“10”作為位址,將登錄位址“00”寫入到第3個分割記憶體102c。然後,控制電路105以第4個至第6個分割關鍵資料“00”“10”“11”作為位址,將登錄位址“00”寫入到第4個至第6個分割記憶體102d、102e、102f。
藉此方式,登錄位址“00”就寫入到以關鍵資料“2699”所指定的搜尋記憶墊102中。
以同樣方式,作為應寫入於登錄位址“01”的資料而輸入的關鍵資料“2691”,若以二進制來表現時,為“10 10 10 00 00 11”。將該值作為存取分配到經6等份分割的搜尋記憶墊之y軸的「登錄位址記入位置」的位址,將資料寫入到搜尋記憶墊102。此時,要寫入的資料即為作為登錄位址而輸入的“01”。
如第42圖(b)所示,使關鍵資料“2691”作6等份分割,並表現作“10”“10”“10”“00”“00”“11”,以這些值作為位址,使登錄位址“01”寫入到搜尋記憶墊102。亦即,控制電路105係以最初的分割關鍵資料“10”作為位址,將登錄位址“01”寫入到最初的分割記憶體102a。此時,由於在關鍵資料“2699”的寫入處理中,最初的分割記憶體102a的位址業已寫入有登錄位址“00”,所以會產生位址的衝突重複。第42圖(b)中,產生了位址衝突重複的部分係以塗黑來表示。產生該位址衝突重複的部分,在後續的讀取處理中,係當作「無需顧慮(don’t care)」來處理。
如第42圖(b)所示,控制電路105又以第2個分割關鍵資料“10”作為位址,將登錄位址“01”寫入到第2個分割記憶體102b。接著,控制電路105以第3個至第6個分割關鍵資料“10”“00”“00”“11”作為位址,將登錄位址“01”分別寫入到第3個至第6個分割記憶體102c、102d、102e、102f。但,由於第2個至第4個及第6個位址中,均業已寫入了關鍵資料“2699”的登錄位址,所以,控制電路105會設定衝突重複旗標,而在後續的讀取處理中,當作「無需顧慮(don’t care)」者來處理。
藉此方式,登錄位址“01”就寫入了以關鍵資料“2691”指定的搜尋記憶墊102。
同樣地,控制電路105會以關鍵資料“1859”“1440”作為位址,將登錄位址“10”“11”寫入到SRAM-CAM的搜尋記憶墊102。如第42圖(c)所示,在關鍵資料“1859”的寫入處理中,第4個至第6個分割記憶體102d、102e、102f會產生位址衝突重複。而且,如第42圖(d)所示,以關鍵資料“1440”而言,在第1、3、5個分割記憶體102a、102c、102e產生了位址衝突重複。
第42圖(e)顯示了確認記憶墊(SRAM)104的寫入狀態。
第42圖(a)中,關鍵資料”2699”的二進制資料係寫入到登錄位址“00”,關鍵資料“2691”的二進制資料寫入到登錄位址“01”,關鍵資料“1859”的二進制資料寫入到登錄位址“10”,關鍵資料“1440”的二進制資料寫入到登錄位址“11”。
第43圖係為顯示本發明〔實施例5〕所涉及的SRAM-CAM的搜尋動作的圖示。
第43圖係顯示第42圖所示的位址重疊部分,亦即,將加了濃色網底的登錄位址當作「無需顧慮(don’t care)」時,是否正確搜尋輸入資料的情形。
在第43圖(a)中,係顯示輸入有作為搜尋資料的關鍵資料“2699”的情況。作為搜尋資料的關鍵資料“2699”,係以“10 10 10 00 10 11”的二進制來表現,並藉控制電路105以每組2位元作6等份分割。經分割的關鍵資料,分別用作存取於分配到經6等份分割的搜尋記憶墊102之y軸的「登錄位址記入位置」所需的位址。首先,控制電路105將最初的分割關鍵資料作為位址,從最初的分割記憶體102a讀取登錄位址“00”時,由於該資料產生了位址衝突重複,所以當作「無需顧慮(don’t care)」者來處理。因而,控制電路105會將來自最初分割記憶體102a的讀取資料設為搜尋對象外。接著,控制電路105又以各第2個分割關鍵資料“10”、第3個分割關鍵資料“10”、第4個分割關鍵資料“00”、及第6個分割關鍵資料“11”作為位址,而存取於各分割記憶體102b、102c、102d、102f。但,針對這些分割記憶體的存取,由於已產生位址的衝突重複,所以控制電路105會藉由「無需顧慮(don’t care)」處理,將已讀取資料當作搜尋對象外。另一方面,控制電路105可將第5個分割資料“10”作為位址,從第5個分割記憶體102e讀取登錄位址“00”。
如第43圖(a)所示,藉由作為搜尋資料的關鍵資料“2699”而從搜尋記憶墊102讀取的資料中,實際使用於搜尋的資料係為從第5個分割記憶體102e讀取的登錄位址“00”。
因此,控制電路105使用確認記憶墊104讀取藉登錄位址“00”存取的關鍵資料的值時,即為“10 10 10 00 10 11”,可知此與作為輸入資料的關鍵資料一致。亦即,控制電路105會將來自確認記憶墊104的作
為關鍵資料的輸出資料與輸入資料比較,經確認為正確後,將登錄位址輸出。
第43圖(b)係顯示輸入有作為搜尋資料的關鍵資料“1859”的情形。作為搜尋資料的關鍵資料“1859”係以“01 11 01 00 00 11”來表現,藉控制電路105以每組2位元作6等份分割。分割關鍵資料係分別用於作為存取於分配到經6等份分割的搜尋記憶墊102之y軸的「登錄位址記入位置」所需的位址。控制電路105係以最初的分割關鍵資料“01”作為位址,讀取最初的分割記憶體102a的資料,而該資料由於已產生位址衝突重複,故決定進行「無需顧慮(don’t care)」處理。接著,控制電路105以第2個分割關鍵資料“11”作為位址,從第2個分割記憶體102b讀取資料時,可讀取登錄位址“10”。然後,控制電路105以第3個分割關鍵資料“01”作為位址,從第3個分割記憶體102c讀取資料時,可獲得登錄位址“10”。
此外,以各第4個分割關鍵資料“00”、第5個分割關鍵資料“00”、及第6個分割關鍵資料“11”作為位址對分割記憶體102d、102e、102f的存取,係藉「無需顧慮(don’t care)」處理而變為搜尋對象外。
如第43圖(b)所示,藉由作為搜尋資料的關鍵資料“1859”而從搜尋記憶墊102讀取的值,為來自第2個分割記憶體102b之輸出的登錄位址“10”及來自第3個分割記憶體102c之輸出的登錄位址“10”。
使用確認記憶墊104讀取以登錄位址“10”作為位址而存取的關鍵資料的值時,為“01 11 01 00 00 11”,可知該值係與作為搜尋資料的關鍵資料一致。亦即,控制電路105會將來自確認記憶墊104的作為關鍵資料的輸出資料與搜尋資料進行比較,經確認為正確後,將登錄位址輸出。
第43圖(c)係顯示以關鍵資料當作搜尋資料,並輸入“2691”作為關鍵資料的情況。作為搜尋資料的關鍵資料“2691”係以“10 10 10 00 00 11”的二進制來表現。控制電路105會將關鍵資料“2691”的二進制資料以每組2位元作6等份分割。分割關鍵資料係分別使用於存取於分配到經6等份分割的搜尋記憶墊102之y軸的「登錄位址記入位置」的位址。以最初的分割關鍵資料“10”作為位址,讀取最初的分割記憶體102a的資料時,係執行「無需顧慮(don’t care)」處理。而且,以第2個分割關鍵資料“10”、第3個分割關鍵資料“10”、第4個分割關鍵資料“00”、第5個分割關鍵資料“00”、
第6個分割關鍵資料“11”作為位址,讀取各分割記憶體102b、102c、102d、102e、102f的資料時,則執行「無需顧慮(don’t care)」處理,而成為搜尋對象外。亦即,在第43圖(c)所示的例子中,將關鍵資料施以分割的全部分割位數上,形成了產生位址衝突重複的狀態。
在此情形中,控制電路105首先從設為「無需顧慮(don’t care)」的各分割記憶體102a至102f的位址中,將寫入到各該位址的登錄位址讀取。亦即,即使在各分割記憶體102a至102f中產生了衝突重複的情況下,也與衝突重複旗標一起寫入有一個登錄位址。控制電路105會預先從各分割記憶體102a至102f將與該衝突重複旗標一起寫入的登錄位址讀取。接著,控制電路105會使用與衝突重複旗標一起寫入的登錄位址,依序參閱第43圖(e)所示的確認記憶墊104。該第43圖(e)所示的例子中,衝突重複狀態的登錄位址為“00”及“01”。最初,控制電路105從確認記憶墊104讀取與登錄位址“00”對應的關鍵資料值時,可知其為“10 10 10 00 10 11”。該關鍵資料“10 10 10 00 10 11”與作為搜尋對象資料而輸入的關鍵資料並不一致。故而,控制電路105會判斷“00”非為所要求取的登錄位址。接著,控制電路105從確認記憶墊104中讀取與登錄位址“01”對應的關鍵資料值時,可知為“10 10 10 00 00 11”。該關鍵資料“10 10 10 00 00 11”則與作為搜尋對象資料而輸入的關鍵資料一致。故而,控制電路105可判斷“01”為所要求得的登錄位址。然後,控制電路105將該登錄位址“01”輸出作為搜尋結果。依此方式,即使已分割的全部搜尋資料皆處於衝突重複狀態,透過以衝突重複狀態的登錄位址依序參閱確認記憶墊104,就可將與關鍵資料一致的關鍵資料抽出。
亦即,本發明的實施例中,登錄位址的寫入處理時若發生位址的衝突重複,就執行「無需顧慮(don’t care)」處理。在該「無需顧慮(don’t care)」處理中,係執行(1)停止登錄位址的寫入動作、或(2)在已寫入的登錄位址上寫入其他登錄位址的任一種處理。因此,搜尋記憶墊102中,在前者(1)的情況中,係為寫入有最初寫入的登錄位址的狀態;在後者(2)的情況中,則為寫入有最後寫入的登錄位址的狀態。因此,即使為發生位址衝突重複的狀態,該位址中仍有可能包含成為搜尋對象的登錄位址。所以,在本發明的實施例
中,乃著眼於這種可能性,透過將發生衝突重複的位址中所包含的登錄位址抽出,而提高可找出搜尋對象的可能性。藉此方式,在本發明的實施例中,即使在搜尋時所輸入的搜尋資料的全行發生衝突重複的狀態,只要其中含有可成為搜尋對象的登錄位址,即可輸出搜尋結果。
【實施例6】
首先,如先前所述,要分割搜尋記憶墊102時,前提上,必須有最低限度以下的個數。
(式)N=L/Log2.M
L:關鍵資料長度
M:總登錄數
N:搜尋記憶墊的分割數(分割記憶體的最小個數)
例如,關鍵資料長度為32位元,搜尋記憶墊的總登錄數為8位元256字元時,分割記憶體的最低必要限度為4個。再者,關鍵資料長度為相同時,搜尋記憶墊的總登錄數若増加,最低必要限度的分割數會減少。但,若分割記憶體的個數減少時,資訊的分散會縮小,而有衝突重複機率升高的傾向。因此,本實施例中,如以下所說明,將分割記憶體數増加來使衝突重複頻度減少。另外,例如資料長度為12位元時,一般從第1位元至第12位元來特定各位元,但下文中,為方便說明以稱作第0位元至第11位元來說明。
第44圖係顯示本發明第6實施例的搜尋記憶墊的寫入動作的圖示。茲參照第44圖說明對本發明的搜尋記憶墊102的寫入動作。此外,本實施例中,係假想登錄位址為2位元4字元,關鍵資料長度為12位元的情形。在此情形中,藉由上述式子的計算,最低必要限度的分割記憶體個數為6個。第44圖中係顯示搜尋記憶墊102經分割為分割記憶體102a至102f等6個,再加上追加用分割記憶體102g至102l等6個,共為12個分割記憶體時的例子。亦即,本實施例中,與〔實施例1〕相比較,將搜尋記憶墊102的分割數設成了2倍。而且,本實施例中,係假想“2699”“2691”“1859”“1440”作為關鍵資料而寫入於登錄位址“00”“01”“10”“11”的情形。
此外,在說明資料寫入於搜尋記憶墊102時的具體動作前,先
就寫入於追加用分割記憶體102g至102l的資料加以說明。
第44圖(a)中,搜尋記憶墊102的下部所顯示之例如〔1:0〕等數字係意指「關鍵資料選擇位元」。此處所稱「關鍵資料選擇位元」,係為用以按複數個分割記憶體102a至102f的每一個而選擇儲存於各分割記憶體的關鍵資料的位元編號的資訊。例如,第44圖(a)所示的例子中,在所輸入的12位元關鍵資料的二進制資料中,「關鍵資料選擇位元」係顯示其第0位元及第1位元儲存於第6個分割記憶體102f,第2位元及第3位元儲存於第5個分割記憶體102e,第4位元及第5位元則儲存於第4個分割記憶體102d,第6位元及第7位元為儲存於第3個分割記憶體102c,第8位元及第9位元儲存於第2個分割記憶體102b,第10位元及第11位元儲存於第1個分割記憶體102a。
而且,如第44圖(a)所示,12位元的關鍵資料中,係以第4位元及第6位元儲存於第12個分割記憶體102l,第5位元及第7位元儲存於第11個分割記憶體102k,第0位元及第8位元儲存於第10個分割記憶體102j,第1位元及第9位元儲存於第9個分割記憶體102i,第2位元及第10位元儲存於第8個分割記憶體102h,第3位元及第11位元儲存於第7個分割記憶體102g的方式,設定有「關鍵資料選擇位元」。
依此方式,在本實施例中,所輸入的12位元關鍵資料擴張為24位元,並分散儲存於包含追加分割記憶體的合計12個分割記憶體中。因此,可使儲存於6個分割記憶體的位元資料重複儲存於6個追加分割記憶體中。此外,該位元資料的重複可設定為期望值,追加用SRAM的個數亦可藉此任意設定。
其次,具體說明對搜尋記憶墊102的寫入動作。
作為應寫入於登錄位址“00”的資料而輸入的關鍵資料“2699”,若以二進制資料來表現,為“10 10 10 00 10 11”。而且,依上述方式,按照「關鍵資料選擇位元」將應儲存於追加分割記憶體的位元資料重複追加於所輸入的關鍵資料。亦即,將12位元的資料作為下位位元追加到12位元的關鍵資料。藉此方式,追加後的關鍵資料即成為“10 10 10 00 10 11 11 00 11 01 10 00”(24位元)。以該值作為經12等份分割的搜尋記憶墊102
之y軸位址,將資料寫入搜尋記憶墊102。此時,寫入於搜尋記憶墊的資料為作為關鍵資料“2699”的登錄位址而輸入的“00”。
如第44圖(a)所示,使依據關鍵資料選擇位元的12位元追加到12位元的關鍵資料“2699”的下位。藉此方式,關鍵資料“2699”即得以24位元來表現。然後,該資料作12等份分割,並表現作“10”“10”“10”“00”“10”“11”“11”“00”“11”“01”“10”“00”。控制電路105係以這些12個分割關鍵資料作為位址,將登錄位址“00”寫入於12個分割墊102a至102l。亦即,以最初的分割關鍵資料“10”作為位址,使登錄位址“00”寫入最初的分割記憶體102a。接著,以第2個分割關鍵資料“10”作為位址,使登錄位址“00”寫入於第2個分割記憶體102b。再以第3個分割關鍵資料“10”作為位址,使登錄位址“00”寫入於第3個分割記憶體102c。同樣的,第4個至第6個分割關鍵資料“00”“10”“11”作為位址,使登錄位址“00”寫入於第4個至第6個分割記憶體102d至102f。而且,同樣的,以第7個至第12個分割關鍵資料“11”“00”“11”“01”“10”“00”作為位址,使登錄位址“00”也寫入到第7個至第12個分割記憶體102g至記憶體102l的6個追加分割記憶體。
藉此方式,登錄位址“00”就可寫入到以關鍵資料“2699”所指定的搜尋記憶墊102。
以同樣方式,作為應寫入於登錄位址“01”的資料而輸入的關鍵資料“2691”,若以二進制來表現,則為“10 10 10 00 00 11”。然後,如上述方式,依據關鍵資料選擇位元,將應儲存於追加分割記憶體的位元資料重複追加到所輸入的關鍵資料。亦即,將12位元的資料作為下位位元追加到12位元的關鍵資料。追加後的關鍵資料為“10 10 10 00 00 11 10 00 11 01 10 00”(24位元)。將該24位元的關鍵資料分割為12個分割關鍵資料。然後,使該分割關鍵資料作為用以存取於經12等份分割的搜尋記憶墊102之y軸的位址,將資料寫入於搜尋記憶墊102。此時,寫入於搜尋記憶墊102的資料係為作為登錄位址而輸入的“01”。
在第44圖(b)中,於關鍵資料“2691”,係按上述方式依據關鍵資料選擇位元使12位元追加於下位,之後作12等份分割,並表現作“10”“10”“10”“00”“00”“11”“10”“00”“11”“01”“10”“00”。以這些分割關鍵資料
作為位址,將登錄位址“01”寫入到經分割的搜尋記憶墊102。亦即,以最初的分割關鍵資料“10”作為位址,使登錄位址“01”寫入於最初的分割記憶體102a。此時,業均已因關鍵資料“2699”的寫入而在分割記憶體102a的位址上寫入有登錄位址“00”,產生了位址的衝突重複。在第44圖(b)中,以塗黑表示的部分即為產生了衝突重複的部分。而在產生該衝突重複的部分,分割關鍵資料係當作「無需顧慮(don’t care)」來處理。第44圖(b)中,又以第2個分割關鍵資料“10”作為位址,將登錄位址“01”寫入到第2個分割記憶體102b。再將第3個至第6個分割關鍵資料“10”“00”“00”“11”作為位址,分別在第3個至第6個分割記憶體102c、102d、102e、102f寫入登錄位址“01”。但,第2個至第4個及第6個位址業均已因關鍵資料“2699”的寫入而在使用中,故以「無需顧慮(don’t care)」來處理。接著,將第7個至第12個分割關鍵資料“10”“00”“11”“01”“10”“00”作為位址,分別在7第個至第12個等6個追加分割記憶體102g至102l的6個寫入登錄位址“01”。但,8第個至第12個位址也均因分割關鍵資料“2699”的寫入而在使用中,故以「無需顧慮(don’t care)」來處理。
藉此方式,登錄位址“01”就被寫入以關鍵資料“2691”指定的分割記憶體中。依同樣方式,以關鍵資料“1859”“1440”作為位址,將登錄位址“10”“11”寫入到搜尋記憶墊102。如第44圖(c)所示,由於關鍵資料“1859”的寫入,在第4個至第6個、第9個分割記憶體產生了位址的衝突重複。而且,如第44圖(d)所示,以關鍵資料“1440”而言,第1、3、5、7、8、12個分割記憶體產生了位址的衝突重複。
第44圖(e)係顯示確認記憶墊(SRAM)104的寫入狀態。
如第44圖(e)所示,確認記憶墊中,關鍵資料“2699”的二進制資料寫入於登錄位址“00”,關鍵資料“2691”的二進制資料寫入於登錄位址“01”,關鍵資料“1859”的二進制資料寫入於登錄位址“10”,關鍵資料“1440”的二進制資料寫入於登錄位址”11”。
第45圖顯示了本發明〔實施例6〕中的搜尋記憶墊102的搜尋動作。第45圖表現了將第44圖所示的位址重疊部分,亦即,加了濃色網底的登錄位址當作「無需顧慮(don’t care)」時,輸入資料是否被正確搜尋。
第45圖(a)中,係顯示輸入關鍵資料“2699”作為搜尋資料的情形。關鍵資料“2699”以二進制資料“10 10 10 00 10 11”來表現。然後,如第44圖所說明者,依據關鍵資料選擇位元,將12位元的資料作為下位位元追加在12位元的關鍵資料。追加後的關鍵資料為“10 10 10 00 10 11 11 00 11 01 10 00”(24位元)。該分割關鍵資料係分別使用作為存取於分配到經12等份分割的搜尋記憶墊102之y軸的「登錄位址記入位置」所需的位址。以最初的分割關鍵資料“10”作為位址,將最初的分割記憶體102a之資料的登錄位址讀取時,由於產生了位址衝突重複,故施行「無需顧慮(don’t care)」處理。於是,來自分割記憶墊102a的讀取資料就被當作搜尋對象外。對於第2個以後的分割關鍵資料,也是同樣以這些分割關鍵資料作為位址,從搜尋記憶墊102讀取登錄位址。在此,以第5個分割關鍵資料“10”作為位址,從第5個分割記憶體102e讀取資料時,可讀取登錄位址“00”。此外,以第7個分割關鍵資料“11”作為位址,讀取第7個分割記憶墊102g時,可獲得登錄位址“00”。有關其他的分割關鍵資料,則藉「無需顧慮(don’t care)」處理而設為搜尋對象外。
如第45圖(a)所示,藉由作為搜尋資料的關鍵資料“2699”而從搜尋記憶墊102讀取的資料之中,使用於搜尋的資料即為第5個分割記憶體102e及第7個分割記憶體102g之輸出的登錄位址“00”。
使用確認記憶墊104,讀取以登錄位址“00”作為位址所存取的關鍵資料值時,為“10 10 10 00 10 11”,可知係與作為搜尋資料的關鍵資料一致。亦即,控制電路105會在將來自確認記憶墊104之輸出資料的關鍵資料與搜尋資料相比較,並確認一致性後,再輸出登錄位址。
第45圖(b)顯示了作為搜尋資料而輸入關鍵資料“1859”的情形。關鍵資料“1859”係以“01 11 01 00 00 11”來表現。而且,如在第44圖所說明的方式,依據關鍵資料選擇位元,將12位元的資料作為下位位元而追加到12位元的關鍵資料。追加後的關鍵資料為“01 11 01 00 00 11 00 10 11 11 00 10”(24位元)。這些分割關鍵資料係分別用作存取分配到經12等份分割的搜尋記憶墊102之y軸的「登錄位址記入位置」所需的位址。雖以最初的分割關鍵資料“01”作為位址,讀取最初分割記憶體
102a的資料,但由於產生了位址衝突重複,故設成執行「無需顧慮(don’t care)」處理的方式。於是,最初的分割關鍵資料即成為搜尋對象外。以第2個分割關鍵資料“11”作為位址,從第2個分割記憶體102b讀取資料時,可讀取登錄位址“10”。以第3個分割關鍵資料”01”作為位址,從第3個分割記憶體102c讀取資料時,可獲得登錄位址“10”。
分別以第4個“00”、第5個“00”、第6個“11”、第7個“00”、第8個“10”、第9個“11”作為位址而對分割記憶體的存取,因為「無需顧慮(don’t care)」的處理而成為搜尋對象外。此外,以第10個分割關鍵資料“11”作為位址而從第10個分割記憶體102j讀取資料時,可讀取登錄位址“10”。以第11個分割關鍵資料“00”作為位址,而從第11個分割記憶體102k讀取資料時,可讀取登錄位址“10”。再者,以第12個分割關鍵資料“10”作為位址,從第12個分割記憶體102l讀取資料時,可獲得登錄位址“10”。
如第45圖(b)所示,藉著作為搜尋資料的關鍵資料“1859”而從搜尋記憶墊102讀取的值,係為經分割的第2個分割記憶體102b、第3個分割記憶體102c、第10個分割記憶體102j、第11個分割記憶體102k、及第12個分割記憶體102l之輸出的登錄位址“10”。
使用確認記憶墊104來讀取藉登錄位址“10”存取的關鍵資料的值時,為“01 11 01 00 00 11”,可知其與作為搜尋資料的關鍵資料一致。亦即,控制電路105將來自確認記憶墊104之輸出資料的關鍵資料與搜尋資料相比較並確認一致性後,輸出登錄位址。
第45圖(c)顯示了將關鍵資料作為搜尋資料且使“2691”輸入作為關鍵資料的情形。作為搜尋資料的關鍵資料“2691”係以二進制資料“10 10 10 00 00 11”來表現。接著,如第44圖所說明的方式,依據關鍵資料選擇位元,將12位元的資料作為下位位元而追加到12位元的關鍵資料。追加後的關鍵資料係為“10 10 10 00 00 11 10 00 11 01 10 00”(24位元)。分割關鍵資料係分別用作存取分配到經12等份分割的搜尋記憶墊102’之y軸的「登錄位址記入位置」所需的位址。以最初的分割關鍵資料“10”作為位址,讀取最初的分割記憶體102a的資料時,由於位址衝突重複,故執行「無需顧慮(don’t care)」處理。第2個“10”、第3個“10”、第4
個“00”、第5個“00”、第6個“11”作為位址,讀取各分割記憶體102b、102c、102d、102e、102f的資料時,由於位址衝突重複,故執行「無需顧慮(don’t care)」處理。
接著,以第7個分割關鍵資料“10”作為位址,從第7個分割記憶體102g讀取資料時,可讀取登錄位址“01”。另一方面,以第8個“00”、第9個“11”、第10個“01”、第11個“10”、第12個“00”作為位址來讀取各分割記憶體的資料時,由於有位址衝突重複,故執行「無需顧慮(don’t care)」處理,並當作搜尋對象外。
如第45圖(c)所示,藉由作為搜尋資料的關鍵資料“2691”從搜尋記憶墊102讀取的值,係為第7個分割記憶體102g輸出的登錄位址“01”。
使用確認記憶墊104,將藉登錄位址“01”存取的關鍵資料的值讀取時,係為“10 10 10 00 00 11”,可知其與作為搜尋資料的關鍵資料一致。亦即,控制電路105會將來自確認記憶墊104之輸出資料的關鍵資料與搜尋資料進行比較,確認一致性後,輸出登錄位址。
在此,使用第45圖(c),思考假設將搜尋記憶墊102分割成分割記憶體102a至102f等6個的情形。在此情形中,作為搜尋資料的關鍵資料“2691”輸入時,該“2691”係以二進制資料“10 10 10 00 00 11”來表現。分割關鍵資料係分別用作存取分配到經6等份分割的搜尋記憶墊之y軸的「登錄位址記入位置」所需的位址。以第1個“10”、第2個“10”、第3個“10”、第4個“00”、第5個“00”、第6個“11”作為位址來讀取各分割記憶體的資料時,任一位址都有衝突重複,故進行「無需顧慮(don’t care)」處理。因此,在該條件上,只將搜尋記憶墊102分割為分割記憶體102a至102f等6個,並不充分,不能從搜尋記憶墊輸出搜尋結果。
從而,若依本實施例,可依上述方式透過増加分割記憶體的數目,以減少衝突重複頻度。而且,若依本實施例,可提高得輸出搜尋結果的可能性。
以上雖係沿實施例依序說明本發明,但本發明並非限定於上述實施例,而是包含了各色各樣的變化例。亦即,上述實施例是為了容易瞭解本發明而將本發明的內容作詳細說明者。因而,本發明不應限定於具備上述
說明的全部構成。
例如,在上述說明中,本發明的半導體裝置係藉SRAM所構成的例子來說明,本發明也同樣可用其他記憶體電路來實現。特別是,以本發明而言,適於使用高速非揮發性記憶體,例如MRAM。
101‧‧‧近接快捷記憶墊
102‧‧‧搜尋記憶墊
103‧‧‧比較及閂鎖電路
104‧‧‧確認記憶墊
105‧‧‧控制電路
Claims (9)
- 一種半導體裝置,具備:搜尋記憶墊,具有朝y軸方向分配登錄位址記入用位置,朝x軸方向分配關鍵資料的結構;以及控制電路,連接於前述搜尋記憶墊,其特徵在於:前述搜尋記憶墊藉由將分配前述關鍵資料的區域沿y軸方向分割成複數個,而形成有複數個分割記憶體;前述控制電路具有:輸入部,關鍵資料輸入於其中;分割部,將輸入於前述輸入部的關鍵資料分割成複數個;以及寫入部,前述分割部所分割的各個關鍵資料,以該經分割的關鍵資料作為位址分配到前述分割記憶體,將與該經分割的各個關鍵資料對應的登錄位址寫入到該分割記憶體。
- 如申請專利範圍第1項所述的半導體裝置,其中,前述控制電路再具有衝突重複資訊記憶部,其在藉前述寫入部將複數個登錄位址寫入到分割記憶體的同一位址時,將表示登錄位址之衝突重複的資訊寫入於該分割記憶體。
- 如申請專利範圍第2項所述的半導體裝置,其中,前述控制電路再具有讀取部,其在使作為搜尋對象資料的關鍵資料輸入於前述輸入部,而前述分割部將作為該搜尋對象資料的關鍵資料分割成複數個的情況中,以前述分割部所分割的各個關鍵資料作為位址而存取於前述分割記憶體,並將與該經分割的各個關鍵資料對應的登錄位址從該分割記憶體讀取。
- 如申請專利範圍第3項所述的半導體裝置,其中,前述讀取部在以前述分割部所分割的關鍵資料作為位址而存取於前述分割記憶體時,在該分割記憶體寫入有表示前述衝突重複的資訊的情況中,針對該經分割關鍵資料,不讀取對應的登錄位址,而當作無需顧慮者來處理。
- 如申請專利範圍第4項所述的半導體裝置,其中,前述半導體裝置再具備使各登錄位址與各關鍵資料形成對應關係並加以記憶的確認記憶墊,前述控制電路則再具有確認部,其從前述確認記憶墊讀取與前述讀取部所讀取的登錄位址對應的關鍵資料,並確認該關鍵資料與輸入於前述輸入部之作為前述搜尋對象資料的關鍵資料是否一致。
- 如申請專利範圍第1項所述的半導體裝置,其中,前述半導體裝置再具備編碼電路,其將關鍵資料藉由預定的處理施以編碼,並將該經編碼的關鍵資料往前述控制電路的輸入部進行輸出。
- 如申請專利範圍第4項所述的半導體裝置,其中,前述讀取部以前述分割部所分割的各個關鍵資料作為位址而進出前述分割記憶體時,在全部的分割記憶體寫入有表示前述衝突重複的資訊的情況中,將業已均寫入該全部分割記憶體的登錄位址讀取,前述確認部以前述讀取部所讀取的登錄位址依序參閱前述確認記憶墊,並從該確認記憶墊抽出與作為前述搜尋對象資料的關鍵資料一致的關鍵位址後,將與該抽出的關鍵資料對應的登錄位址進行輸出。
- 一種寫入/讀取登錄位址於半導體裝置中的方法,該方法為將與關鍵資料對應的登錄位址寫入到該半導體裝置的方法,該半導體裝置具備有搜尋記憶墊,該搜尋記憶墊則具有朝y軸方向分配有登錄位址記入用的位置且朝x軸方向分配關鍵資料之結構,其中,前述搜尋記憶墊藉由將分配前述關鍵資料的區域沿y軸方向分割成複數個,形成有複數個分割記憶體;前述方法包含:使關鍵資料輸入到前述半導體裝置的控制電路的程序;前述控制電路將前述所輸入的關鍵資料分割成複數個的程序;以及前述控制電路將前述經分割的各個關鍵資料以該經分割的關鍵資料作 為位址而分配到前述分割記憶體,與該經分割的各個關鍵資料對應的登錄位址寫入到該分割記憶體的程序。
- 一種寫入/讀取登錄位址於半導體裝置中的方法,係為藉由申請專利範圍第8項所述的方法將寫入到前述半導體裝置的前述登錄位址讀取的方法,包含:使作為搜尋對象資料的關鍵資料輸入到前述控制電路的程序;前述控制電路將前述所輸入之作為搜尋對象資料的關鍵資料分割成複數個的程序;以及前述控制電路以前述經分割的各個關鍵資料當作位址而存取於前述分割記憶體,將與該經分割的各個關鍵資料對應的登錄位址從該分割記憶體讀取的程序。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013051050 | 2013-03-13 | ||
PCT/JP2013/084908 WO2014141566A1 (ja) | 2013-03-13 | 2013-12-26 | 半導体装置及び半導体装置に対するエントリアドレス書き込み/読み出し方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201445567A TW201445567A (zh) | 2014-12-01 |
TWI540578B true TWI540578B (zh) | 2016-07-01 |
Family
ID=51536251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103104479A TWI540578B (zh) | 2013-03-13 | 2014-02-11 | A semiconductor device, and a method of writing / reading a registered address in a semiconductor device |
Country Status (5)
Country | Link |
---|---|
US (1) | US9240237B2 (zh) |
JP (2) | JP5575997B1 (zh) |
CN (1) | CN105190762B (zh) |
TW (1) | TWI540578B (zh) |
WO (1) | WO2014141566A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9722334B2 (en) | 2010-04-07 | 2017-08-01 | Black & Decker Inc. | Power tool with light unit |
US9225275B2 (en) | 2010-04-07 | 2015-12-29 | Black & Decker Inc. | Power tool with light unit |
JP6166306B2 (ja) * | 2015-05-18 | 2017-07-19 | 長瀬産業株式会社 | 半導体装置,情報処理システム,及び情報書込/読出方法 |
JP6205386B2 (ja) * | 2015-05-18 | 2017-09-27 | 長瀬産業株式会社 | 半導体装置及び情報書込/読出方法 |
WO2016193947A1 (en) * | 2015-06-05 | 2016-12-08 | King Abdullah University Of Science And Technology | Resistive content addressable memory based in-memory computation architecture |
US10684961B1 (en) * | 2015-10-02 | 2020-06-16 | Amazon Technologies, Inc. | External memory protection for content addressable memory |
US9923579B2 (en) * | 2016-03-08 | 2018-03-20 | International Business Machines Corporation | Clock path technique for using on-chip circuitry to generate a correct encode pattern to test the on-chip circuitry |
US10254782B2 (en) * | 2016-08-30 | 2019-04-09 | Micron Technology, Inc. | Apparatuses for reducing clock path power consumption in low power dynamic random access memory |
US11334284B2 (en) * | 2018-09-24 | 2022-05-17 | Samsung Electronics Co., Ltd. | Database offloading engine |
TWI789836B (zh) * | 2021-07-20 | 2023-01-11 | 旺宏電子股份有限公司 | 用於資料搜尋之記憶體裝置及資料搜尋方法 |
US11587611B2 (en) * | 2021-07-20 | 2023-02-21 | Macronix International Co., Ltd. | Memory device with input circuit, output circuit for performing efficient data searching and comparing within large-sized memory array |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6037502B2 (ja) * | 1977-11-10 | 1985-08-27 | 日本電気株式会社 | 変換装置 |
JPS5847798B2 (ja) * | 1978-03-09 | 1983-10-25 | 富士通株式会社 | 記憶装置 |
JPS5847798A (ja) | 1981-09-09 | 1983-03-19 | 象印チエンブロツク株式会社 | 電動チエンブロック |
JPH0358743U (zh) * | 1989-06-09 | 1991-06-07 | ||
JPH0358743A (ja) | 1989-07-27 | 1991-03-13 | Takeda Miso Jozo Kk | 乾燥おからを用いた水吸収材 |
JPH03105444A (ja) * | 1989-09-19 | 1991-05-02 | Fujitsu Ltd | メモリアドレス制御回路 |
JP3662618B2 (ja) | 1995-02-01 | 2005-06-22 | 川崎マイクロエレクトロニクス株式会社 | マルチプロトコルアドレス検索用連想メモリおよびその検索方法 |
JPH10187550A (ja) * | 1996-12-26 | 1998-07-21 | Rohm Co Ltd | Icカード |
JP3524707B2 (ja) | 1996-12-28 | 2004-05-10 | 株式会社堀場製作所 | マイクロフローセンサ素子 |
JP2939584B1 (ja) * | 1998-06-09 | 1999-08-25 | 株式会社超高速ネットワーク・コンピュータ技術研究所 | 検索回路 |
JP3644494B2 (ja) * | 2001-04-13 | 2005-04-27 | 日本電気株式会社 | 情報検索装置 |
JP3938124B2 (ja) | 2002-11-20 | 2007-06-27 | ソニー株式会社 | データ検索装置 |
US8645620B2 (en) * | 2007-06-29 | 2014-02-04 | International Business Machines Corporation | Apparatus and method for accessing a memory device |
-
2013
- 2013-12-26 CN CN201380074530.4A patent/CN105190762B/zh active Active
- 2013-12-26 US US14/364,826 patent/US9240237B2/en active Active
- 2013-12-26 WO PCT/JP2013/084908 patent/WO2014141566A1/ja active Application Filing
- 2013-12-26 JP JP2013558841A patent/JP5575997B1/ja active Active
-
2014
- 2014-02-11 TW TW103104479A patent/TWI540578B/zh active
- 2014-06-25 JP JP2014129941A patent/JP2014199710A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JPWO2014141566A1 (ja) | 2017-02-16 |
CN105190762A (zh) | 2015-12-23 |
TW201445567A (zh) | 2014-12-01 |
JP5575997B1 (ja) | 2014-08-20 |
US9240237B2 (en) | 2016-01-19 |
JP2014199710A (ja) | 2014-10-23 |
US20150070957A1 (en) | 2015-03-12 |
WO2014141566A1 (ja) | 2014-09-18 |
CN105190762B (zh) | 2018-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI540578B (zh) | A semiconductor device, and a method of writing / reading a registered address in a semiconductor device | |
US10545865B2 (en) | Systems and methods for implementing low-latency lookup circuits using sparse hash functions | |
Dogramacl et al. | Bilkent University Lecture Series | |
US10503716B2 (en) | Systems and methods for generating bit matrices for hash functions using fast filtering | |
US9384145B2 (en) | Systems and methods for implementing dynamically configurable perfect hash tables | |
US8732538B2 (en) | Programmable data storage management | |
US9396512B2 (en) | Fully parallel construction of k-d trees, octrees, and quadtrees in a graphics processing unit | |
US20150169467A1 (en) | Systems and Methods for Rapidly Generating Suitable Pairs of Hash Functions | |
Efe et al. | Topological properties of the crossed cube architecture | |
TW202127238A (zh) | 可重組態架構的編譯器流程邏輯 | |
US6119198A (en) | Recursive address centrifuge for distributed memory massively parallel processing systems | |
Schwartz | An algorithm for minimizing read only memories for machine control | |
US5765181A (en) | System and method of addressing distributed memory within a massively parallel processing system | |
CN107017030A (zh) | 用于不规则代码的高效ldpc编码器 | |
US9899088B1 (en) | Content addressable memory decomposition | |
GB2389933A (en) | Programmable index hashing function circuit and method of optimisation, for use with a cache memory on a microprocessor | |
EP1195674A1 (en) | Instruction sets for processors | |
Han et al. | Parallel integer sorting is more efficient than parallel comparison sorting on exclusive write PRAMs | |
Sholl et al. | Design of asynchronous sequential networks using read-only memories | |
US5192882A (en) | Synchronization circuit for parallel processing | |
US7133959B2 (en) | Data-driven information processing device and method to access multiple bank memories according to multiple addresses | |
JP3606922B2 (ja) | ハイパキュ−ブマルチコンピュ−タ−のタスク割当方法および装置 | |
Mayr et al. | Optimal tree contraction and term matching on the hypercube and related networks | |
Sani et al. | A dynamically reconfigurable ECC decoder architecture | |
TWI640879B (zh) | Semiconductor device, information processing system, and information writing/reading method |