TWI659303B - 使用複數個共用記憶體之可重組態並列查找的方法和系統 - Google Patents
使用複數個共用記憶體之可重組態並列查找的方法和系統 Download PDFInfo
- Publication number
- TWI659303B TWI659303B TW103145450A TW103145450A TWI659303B TW I659303 B TWI659303 B TW I659303B TW 103145450 A TW103145450 A TW 103145450A TW 103145450 A TW103145450 A TW 103145450A TW I659303 B TWI659303 B TW I659303B
- Authority
- TW
- Taiwan
- Prior art keywords
- search
- memory
- hierarchy
- item
- output
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17724—Structural details of logic blocks
- H03K19/17728—Reconfigurable logic blocks, e.g. lookup tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7452—Multiple parallel or consecutive lookup operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Human Computer Interaction (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Logic Circuits (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System (AREA)
- Multi Processors (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本發明的實施例涉及通過互連網路的適當組態使用共用記憶體池的複數個並列查找。為每一個查找保留的共用記憶體的數目可基於該查找所需的記憶體能力而重組態。共用記憶體被分組為同質階層。基於該查找所需的記憶體能力,每一個查找被分派一組階層。為每一個查找分派的階層不與其他查找重疊,使得所有查找能並存執行而不衝突。每一個查找可重組態為基於散列或直接存取。基於怎樣為每一個查找分派階層,對互連網路進行編程。
Description
本發明涉及使用共用記憶體池之複數個並列查找。更尤其地,本發明涉及使用複數個共用記憶體之可重組態並列查找的方法和系統。
在網路處理器中,存在許多需要快速查找的應用,例如每流狀態管理、IP查找和封包分類。能夠使用幾種技術實現查找系統,例如基於TCAM、基於散列和直接存取查找。基於散列的查找技術和直接存取查找技術具有較低的儲存成本,並且比基於TCAM查找技術更快。現有技術的基於散列的查找技術是基於D-LEFT散列查找方案,因為其在使用記憶體時效率高。然而,在使用這些查找技術的現有技術的查找系統中,用於每一個查找的記憶體的數目是固定的。這種不靈活性禁止在系統製造後對每一個查找的儲存量的任何改變。此外,現有技術的查找系統不能從一種查找技術變為另一種查找技術,例如從基於散列到例如直接存取,以實現
100%記憶體利用,而100%記憶體利用能夠在包括精確匹配查找的應用中有用。
晶片上系統支援共用一個記憶體池的複數個並列查找。保留給每一個查找的記憶體的數目可基於該查找所需的記憶體的量重組態。此外,每一個查找能夠被組態為執行為基於散列查找或直接存取查找。共用記憶體被分組成同質階層。每一個查找被分派一組階層。該組中的階層與其他組共用,使得所有查找能並列執行,而不衝突。系統也包括可重組態連接網路,其基於怎樣為每一個查找分派階層來編程。
在一個方面,提供了晶片上系統,其被組態為使用共用記憶體池支援N個並列查找。晶片上系統包括T×M個共用記憶體,其被分組為T個階層、用於每一個查找路徑的M索引轉換器、用於將N個輸入埠連接到T個階層的中心可重組態互連結構、用於將T個階層連接到N個輸出埠的輸出可重組態相互連接結構、和N個輸出結果收集器。各N個輸出結果收集器為每一個之查找路徑。
在一些實施例中,T個階層被分區並基於每一個查找路徑所需的記憶體量被分派給查找路徑。被分派給每一個查找路徑的階層的數目為2的冪次。階層在分區間重疊。
在一些實施例中,T個階層係各包括用於以每查找M個路徑支援D-LEFT查找的M個記憶體、用於比較M個記憶體中的預編程金鑰和輸入金鑰的匹配塊、和用於為階層選擇命中結果的選擇塊。
在一些實施例中,每一個共用記憶體都具有2m個條目。每一個條目含有用於以每路P個桶支持D-LEFT查找的P對可編程金鑰{金鑰,資料}。
在一些實施例中,每一個查找路徑可組態為基於散列之查找或直接存取查找。
在一些實施例中,每一個查找路徑的M個索引轉換器的索引轉換器i被用於存取在為該查找路徑分派的所述T個階層中的一個的記憶體i。
在一些實施例中,每一個查找路徑的M個索引轉換器係各可基於分派給該查找路徑的階層的數目而組態。
在一些實施例中,每一個查找路徑的M個索引轉換器係各進一步包括log2(T)+1個散列函數和log2(T)+1個非散列函數(其中所述函數的輸出所具有的位元寬是介於m個位元到log2(T)+m個位元之間)、用於選擇一個函數的第一可組態寄存器、和用於選擇階層偏移的第二可組態寄存器,以使得查找索引指向該查找路徑的所分派階層中的正確階層,其中分派的階層從選自所述T個階層。
在一些實施例中,各所述M個索引轉換器的輸出索引具有log2(T)+m個位元。在輸出索引中log2(T)最高有效位元被用於指向T個階層中的一個,並且輸出索引中m個最不高有效位元是作為記憶體讀取位址。
在一些實施例中,中央可重組態互連結構包括M個可組態的N×T個網路。N×T個網路的每一個都能夠是交叉開關(crossbar)或可組態蝶形開關。
在一些實施例中,輸出可組態互連結構包括M個可組態的I×N解多工器。
在一些實施例中,與查找路徑相關聯的其中一個所述N個輸出結果收集器是配置為從用於查找路徑的分派階層收集結果,並且是配置為從由分派的階層輸出的結果中選擇一個最終結果。
在一些實施例中,各所述T個階層之命中結果是基於該階層的記憶體中預編程金鑰和該階層的一輸入金鑰之間的金鑰匹配結果。
在另一個方面,提供了一種使用共用記憶體池執行N個並列查找的方法。該方法包括將T個階層分區為N組。T個階層的每一個都包括M個記憶體。使每一個查找路徑與輸入埠和輸出埠相關聯。N個查找路徑的每一個都被分派到N個組中的一組。該方法也包括執行N個並列查找。
N個並列查找的執行包括,針對N個輸入金鑰中的每一個:(1)將輸入金鑰轉換為複數個查找索引,其中複數個查找索引的每一個都包括在由各自查找路徑存取的N個組的一組中的特定階層的階層ID,並且也包括將從其讀取資料的特定階層中的記憶體的記憶體位址,(2)藉由使用來自該特定階層的一匹配資訊集合,確定是要返回那個命中資訊,和(3)藉由使用複數個查找索引所指示的那些階層的一命中資訊集合,確定與該輸入金鑰相關聯之一查找路徑要返回那個最終查找結果。
在一些實施例中,在確定從特定階層所要返回的命
中資訊中,給予在該特定階層中具有該特定階層的所有記憶體中最低記憶體ID的記憶體一最高優先順序。在一些實施例中,該命中資訊包括與一匹配金鑰相對應的命中資料和命中資料的位置。命中資料的位置包括記憶體ID、與記憶體ID相關聯的記憶體的位址、和命中資料在記憶體中的位置。
在一些實施例中,在確定為查找路徑返回的最終查找結果中,最高優先順序給定在為查找路徑分派的所有階層中的階層ID最低的階層。在一些實施例中,最終查找結果包括命中資料、容納命中資料的階層的階層ID、記憶體ID和讀取命中資料的記憶體位址。
在一些實施例中,該方法也包括,在執行N個並列查找之前,為每一個查找路徑計算散列尺寸、為散列選擇產生組態位元,並為每一個查找路徑產生階層偏移、組態連接查找路徑和階層的網路、以及為每一個查找路徑編程記憶體。在一些實施例中,用於為每一個查找路徑編程記憶體的技術是基於具有M路和P桶的D-LEFT查找技術。
在另一個方面,本發明提供了轉換裝置,其係配置以支援N個並列金鑰對查找索引之轉換。該轉換裝置包括在轉換器處所接收的N個金鑰。N個金鑰的每一個都與來自T個階層的階層群組相關聯。T個階層的每一個都包括M個記憶體。
轉換裝置也包括N×M個查找索引,以在N個金鑰對N×M個查找索引的並列轉換之後,從轉換器返回。
轉換裝置也包括N×M個轉換器。N×M個轉換器中
的每一個都被配置以將N個金鑰中的一金鑰轉換為N×M個查找索引中的一查找索引。N×M個轉換器中的每一個都包括log2(T)+1個散列函數和log2(T)+1個非散列函數(其中所述函數的輸出所具有的位元寬是介於m個位元到log2(T)+m個位元)、用於選擇一個函數的第一可組態寄存器、和用於選擇階層偏移的第二可組態寄存器,以使得查找索引指向與該金鑰相關聯之階層群組中的正確階層。
在一些實施例中,N×M個查找索引被傳送到中央重組態互連結構。中央重組態互連結構被組態為將N×M個查找索引連接到T個階層的其中一個,用於比較該金鑰與該階層中所保存的預編程金鑰。
在另外一個方面,本發明提供了階層裝置。所述階層裝置包括M個記憶體。M個記憶體的每一個都包括2m條目。每一個條目都容納P對可編程{金鑰,資料}。
所述階層裝置也包括匹配和選擇邏輯,其係配置為用於接收輸入金鑰並輸出查找結果。匹配和選擇邏輯包括匹配塊和選擇塊,匹配塊係配置為確定輸入金鑰是否匹配M個記憶體中的任一預編程金鑰,而選擇塊係配置以從M個記憶體中含有與輸入金鑰匹配之預編程金鑰的記憶體中選擇一記憶體。選擇的記憶體在這些記憶體中具有最低記憶體ID。查找結果包括與預編程金鑰配對的預編程資料。該查找結果也包括記憶體ID和儲存預編程資料的記憶體位址。
在一輸出些實施例中,查找結果傳送到輸出重組態互連結構。輸出重組態互連結構係配置以將T個階層的每一
個都連接到N個查找路徑之N個最終輸出選擇裝置的一個。在一些實施例中,N個最終輸出選擇裝置中的每一個都包括收集塊和選擇塊,收集塊係配置以從各自查找路徑保留的所有階層接收查找結果,而選擇塊係配置以從收集塊所收集的所有查找結果選擇一個最終查找結果,其中選擇的最終查找結果是來自具有最低階層ID的命中階層。選擇的最終查找結果包括命中資料、階層ID、記憶體ID和儲存命中資料的記憶體位址。
100‧‧‧並列查找系統
105-130‧‧‧方塊
200‧‧‧共用記憶體
205‧‧‧階層
210‧‧‧記憶體
215‧‧‧方塊
300‧‧‧查找路徑
305‧‧‧分區
400‧‧‧金屬對查找索引轉換器
405‧‧‧索引轉換器
500‧‧‧索引轉換器
600‧‧‧互連結構
605‧‧‧索引轉換器
610a‧‧‧中央網路
610b‧‧‧中央網路
615‧‧‧階層
700‧‧‧記憶體
705‧‧‧預編程{金鑰,資料}
800‧‧‧階層
805‧‧‧記憶體
810‧‧‧匹配塊
815‧‧‧選擇塊
900‧‧‧方法
905-930‧‧‧步驟
1000‧‧‧輸出可重組態互連結構
1005‧‧‧階層
1010‧‧‧輸出網路
1015‧‧‧結果收集器
1100‧‧‧方法
1105-1130‧‧‧步驟
1200‧‧‧方法
1205-1230‧‧‧步驟
第一圖示出根據本發明的實施例的並列查找系統。
第二圖示出根據本發明的實施例的共用記憶體的示例性分組的圖表。
第三圖示出根據本發明的實施例的用於查找路徑的共用階層(tile)的示例性分派的圖表。
第四圖示出根據本發明的實施例的金鑰對查找索引之轉換器。
第五圖示出根據本發明的實施例的索引轉換器。
第六圖示出根據本發明的實施例的中央可重組態的互連結構。
第七圖示出根據本發明的實施例在階層內的記憶體的格式。
第八圖示出根據本發明的實施例的示例性階層的示意圖。
第九圖示出根據本發明的實施例在選擇塊中選擇命
中結果的方法。
第十圖示出根據本發明的實施例的輸出可重組態互連結構。
第十一圖示出根據本發明的實施例在結果收集器中選擇命中結果的方法。
第十二圖示出根據本發明的實施例的組態和編程並列查找系統的方法。
如附圖中所說明的,上文從本發明的實例實施例的下列更特定描述中將顯而易見,在附圖中貫穿不同視圖,同樣的附圖標記指代相同的部分。附圖不需要按比例,而是將重點放在說明本發明的實施例上。
在下列描述中,為了解釋的目的闡述了許多細節。然而,本領域普通技術人員將認識到,能夠實踐本發明而無需使用這些具體細節。因此,本發明不是意圖被限制於所示的實施例,而是符合與本文中所述的原理和特徵一致的最寬的保護範圍。
晶片上系統支援共用一個記憶體池的複數個並列查找。為每一個查找保留的記憶體的數目可基於該查找所需的記憶體能力而重組態。此外,每一個查找能夠被組態為執行為基於散列查找或直接存取查找。共用記憶體被集合成同質階層。每一個查找被分派一組階層。該組中的階層不與其他組共用,使得所有查找能並列執行而不衝突。系統也包括可重組態連接網路,其基於怎樣為每一個查找分派階層來編程。
第一圖示出根據本發明的實施例的並列查找系統100。系統100被組態為用於使用複數個共用記憶體的N個同時或並列查找路徑,而無衝突。該系統100為每一個查找路徑的每一個k位元輸入金鑰返回n位元資料。該系統100包括塊105-130,在詳細討論其各自特徵之前首先一般地討論每一個塊。
在方塊115,共用記憶體的池被分組為T個共用同質階層。每一個階層含有M個記憶體。每一個查找路徑被分派來自這些T個階層的複數個階層。為每一個查找路徑的階層分派通常可由軟體進行重組態。
在方塊105,每一個查找路徑的輸入金鑰轉換為複數個查找索引。用於讀取查找資料的資訊,例如查找路徑將存取的各個階層的階層ID以及在將從中讀取資料的這些階層中的記憶體的位址,變為查找索引的一部分。
階層ID和每一個輸入金鑰的記憶體位址通過方塊110被發送給相應的階層,方塊110為中央可重組態互連結構(fabric)。中央可重組態互連結構110包括複數個可組態之中央網路。這些中央網路通常基於為各個查找路徑保留的階層的位置來組態。
在每一個階層中,在方塊120,在先前已經從相應輸入金鑰轉換的位址(例如,在方塊110的轉換)從記憶體讀取預編程金鑰和資料。位於記憶體中的這些預編程金鑰與用於各個查找路徑的輸入金鑰相比較。如果在具有輸入金鑰的這些預編程金鑰中存在任何匹配,那麼階層返回命中資料
和命中位址。
每一個階層的命中資訊由各個查找路徑收集,這些查找路徑通過方塊125擁有該階層,方塊125為輸出可重組態互連網路。在為查找路徑返回最終查找結果之前,每一個查找路徑在方塊130擁有的所有階層的命中資訊中執行另一輪選擇。
第二圖示出根據本發明的實施例的共用記憶體200的示例性分組的圖表。圖表示出在使用階層205的並列查找系統中,例如第一圖中的並列查找系統100,共用記憶體的組織。共用記憶體被分組為T個共用同質階層205。每一個階層205含有M個記憶體,其用於以在方塊215用M個路徑支援D-LEFT查找。因此,並列查找系統100具有總共T×M個記憶體。每一個階層205都具有用於識別並列查找系統100中的階層的階層ID(Tile ID)。每一個階層205內的記憶體210都與從0到M-1的記憶體ID相關聯,記憶體ID用於識別在該階層205中的記憶體210。
在執行查找之前,每一個查找路徑被分派來自共用階層的一組連續階層。分派給每一個查找路徑的階層的數目為2的冪次,並且其取決於該查找路徑所需的儲存能力。允許在任何兩個查找路徑之間不存在階層重疊。在示例性方案中假設,並列查找系統100具有八個階層和四個並列查找路徑。用於這些查找路徑的階層分區能夠為{8,0,0,0}或{4,4,0,0}或{4,2,2,0}或{4,2,1,1}或{2,2,2,2}或對這些分區的一個的任何變更。這個示例性的方案將不斷被提及並基於其說明並列
查找系統100。
第三圖示出根據本發明的實施例的用於查找路徑300的共用階層的示例性分派的圖表。繼續參照具有八個階層和四個並列查找路徑的並列查找系統100的示例性方案,八個階層被分區305如下:{4,1,2,1}。基於這個分區實例,查找路徑0被分派四個階層(尤其是,階層0,1,2和3),查找路徑1被分派一個階層(尤其,階層4),查找路徑2被分派兩個階層(尤其,階層5和6)而查找路徑三被分派一個階層(尤其,階層7)。
在為每一個查找路徑分派一組階層之後,用於每一個查找路徑的輸入金鑰在第一圖的方塊105被轉換為複數個查找索引。查找索引被用於為各個查找路徑存取所分派的階層。用於每一個金鑰的每一個查找索引具有log2(T)+m個位元。查找索引的log2(T)個最高有效位元(MSB)被用於階層ID(Tile ID),並且查找索引的m個最不高有效位元(LSB)是用於記憶體讀取位址。階層ID指向用於相應查找路徑的分派階層的一個,而記憶體讀取位址為從中讀取資料的該階層內的記憶體的位址。繼續參照具有八個階層和四個並列查找路徑的並列查找系統100的示例性方案,假設每一個階層中的每一個記憶體為1k條目寬度。由於每一個階層為3個位元寬且每一個記憶體讀取位址為10個位元寬,那麼每一個查找索引為13個位元寬。
由於在階層(即,M)中存在記憶體,每一個查找路徑通常配備相同數目的索引轉換器。第四圖示出根據本發
明的實施例的金鑰對查找索引之轉換器400。在一些實施例中,第一圖的方塊105同樣被組態為如同金鑰對查找索引轉換器400者。每一個查找路徑的每一個輸入金鑰被發送給所有其M個索引轉換器405。因此,為每一個查找路徑的每一個輸入金鑰獲得M個查找索引。通過使用階層ID的值,每一個查找索引能夠在用於相應查找路徑的分派階層中存取任何階層,但是查找索引i只能夠存取階層中的記憶體i,下面進一步討論。
每一個索引轉換器405都包括一組散列函數。如果並列查找系統具有T個階層,那麼每一個索引轉換器405都具有log2(T)+1個散列函數。這些散列函數的輸出的位元寬介於m個位元至log2(T)+m個位元。散列大小是指散列函數的位元寬。基於為查找路徑保留的階層的數目,為每一個查找路徑選擇的散列大小係可重組態。如果查找路徑分派q個階層,那麼為查找路徑選擇的用於每一個索引轉換器的散列大小即為m+log2(q)。繼續參照具有八個階層的並列查找系統100的示例性方案,每一個索引轉換器都具有log2(8)+1=4(四個)散列函數。
第五圖示出根據本發明的實施例的索引轉換器500。在一些實施例中,第四圖的索引轉換器405是類似地被組態為如同索引轉換器500者。繼續參照示例性方案,假設每一個階層中的記憶體位址為10位寬。四個散列函數的散列大小分別為10、11、12和13,(10至log2(8)+10),因為這個示例性方案中的系統具有八個階層。因為散列大小不一
致,零位在這些四個散列函數的輸出的前置碼連接(concatenate),使得每一個輸出為13個位元寬。
可重組態之cfg_hash_sel寄存器能夠用於為每一個查找路徑選擇散列函數。在第五圖中,如果查找路徑分派一個階層,即選擇10位元之散列函數(log2(1)+10=10)。如果查找分派兩個階層,那麼選擇11位元之散列函數(log2(2)+10=11)。如果查找路徑分派四個階層,那麼選擇12位元之散列函數(log2(4)+10=12)。如果查找分派八個階層,那麼選擇13位元之散列函數(log2(8)+10=13)。
類似地,cfg_hash_sel寄存器能夠用於為每一個查找路徑選擇非散列函數。尤其是,索引轉換器500也包括一組非散列函數,其與散列函數大小相同。非散列函數內不具有邏輯。相反,非散列函數簡單地從輸入金鑰取最低有效位元(LSB)。當使用者需要直接存取記憶體(通過使用輸入金鑰作為直接記憶體指示器)而不是通過散列時,使用非散列函數。以這個設計,例如第一圖的並列查找系統100的系統能支援基於散列和直接存取查找。為查找選擇基於散列或直接存取是通過組態cfg_hash_sel寄存器進行的。例如,如果查找被分派四個階層,那麼cfg_hash_sel寄存器為基於散列查找選擇12位元之散列函數,或者為直接存取查找選擇12位元之非散列函數。
索引轉換器500也包括可重組態之cfg_tile_offsel寄存器,以調整每一個查找索引的階層ID,使得查找索引能正確指向被分派給各個查找路徑的階層的一個。
cfg_tile_offset寄存器之組態值通常在為相應的查找分派的階層的組中的第一階層ID。例如,在第三圖中,用於查找路徑0的cfg_tile_offset寄存器被組態為0,因為為查找路徑0分派的階層為階層0、1、2和3。類似地,用於查找路徑1、2和3的cfg_tile_offset寄存器分別被組態為4、5和7。
返回第一圖,並列查找系統100包括中央可重組態互連結構110。中央可重組態互連結構100包括與階層中存在的記憶體相同數目的單獨的中央網路(即,M個)。每一個中央網路具有與存在的查找路徑相同數目的輸入埠(即,N),並且具有與存在的階層相同數目的輸出埠(即,T)。每一個中央網路將所有查找路徑的索引轉換器i的輸出連接到所有階層中的記憶體i。
第六圖示出根據本發明的實施例的中央可重組態的互連結構600。在一些實施例中,中央可重組態的互連結構110被類似地組態為如可重組態的互連結構600那樣。再次繼續參照示例性方案,存在使用八個階層615的四個並列查找路徑,每一個階層具有兩個記憶體,並因此每一個查找路徑有兩個索引轉換器605。中央可重組態互連結構600具有兩個4*8的中央網路610a,610b(統稱為610)。網路0將所有查找路徑的索引轉換器0的輸出連接到所有階層615的記憶體0,並且網路1將所有查找路徑的索引轉換器1的輸出連接到所有階層615的記憶體1。
這些中央網路610被組態為將每一個查找路徑正確地連接到其保留的階層615。例如,在第三圖中,查找0被分
派至階層0,1,2和3。同樣,網路0被組態為將輸入埠0連接到輸出埠0,1,2,3。類似地,輸入埠1連接到輸出埠4。類似地,輸入埠2連接到輸出埠5和6。類似地,輸入埠3連接到輸出埠7。這些連接在第六圖中示出。所有中央網路610具有相同組態設定。這樣,網路1的組態與網路0準確相同。
每一個中央網路610都可以是交叉開關。然而,這些中央網路610通常在執行查找之前預先組態,這意味著是其在執行時間期間不變化。替代地,中央網路610能夠從蝶形開關網路建立,其比交叉開關更廉價。存在能夠實現的幾個普通的可重組態蝶形開關網路,例如Clos網路、Benes網路或Omega網路。
在組態中央網路610之後,每一個查找路徑都將其輸入金鑰和輸入金鑰的查找索引發送給所有分派的階層615,查找索引包括階層ID和記憶體位址。一旦分派的階層615接收查找索引,分派的階層615檢查這個查找索引的階層ID是否實際上指向階層615。如果階層ID是該階層的,那麼該階層將使用查找索引中的記憶體位址從相應的記憶體讀取。如果階層ID不是該階層的,那麼可忽略接收的索引。
當階層615接收階層ID指向的查找索引時,這個查找索引被稱作有效索引。由於每一個階層615都具有M個記憶體,所以每一個階層615都能夠通過M個中央網路從相同金鑰接收直到M個有效查找索引。例如,在第六圖中,每一個階層615能夠接收其兩個本機存放區器之兩個有效索引。
第七圖示出根據本發明的實施例在階層內的記憶體
700的格式。記憶體700的深度通常為2m個條目(m位位址)。記憶體700的每一個條目含有用於以每路徑P個桶支援D-LEFT查找的P對預編程{金鑰,資料}705。因此,記憶體700的寬度為P×(k+n)個位元,其中k為每一個金鑰的位元寬,並且n為每一個資料的位元寬。階層的本機存放區器中的金鑰和資料的值可依賴於怎樣為每一個查找路徑分區並分派共用階層來編程。用於這些記憶體的編程原理基於D-LEFT查找技術。
當階層接收本機存放區器之有效索引時,在這個有效索引中的記憶體位址被用於讀取本機存放區器。本機存放區器的輸出在由記憶體位址指出的條目處含有P對預編程{金鑰,資料}。在階層為其M個本機存放區器接收M個有效索引的極端情況下,存在M×P對{金鑰,資料}。M×P個金鑰被發送到該階層內的匹配邏輯塊,以決定這些預編程金鑰哪些與輸入金鑰匹配。匹配結果用於選擇預編程資料,以返回作為該階層的查找結果。
第八圖示出根據本發明的實施例的示例性階層800的示意圖,在一些實施例中,第一圖的方塊115中的階層被類似地組態為如階層800那樣。再次繼續參照示例性的方案,階層800包括兩個記憶體805,每一個都具有三對預編程{金鑰,資料}。對於每一個輸入金鑰,階層800能夠從其兩個記憶體805獲得多達六對有效預編程{金鑰,資料}的最大值。六個或預編程的儲存金鑰被發送給階層800的匹配塊810。來自匹配塊810的匹配結果被發送給選擇塊815,以輸出階層800
的查找結果。在一些實施例中,第二圖的方塊215類似地被組態為如匹配塊810和選擇塊815那樣。
第九圖示出根據本發明的實施例在選擇塊900中選擇命中結果的方法。在一些實施例中,第八圖的選擇塊815類似地被組態為如選擇塊900那樣。該方法900在步驟905開始,其中用於所有儲存的金鑰的匹配結果是從第八圖的匹配部件810接收的。在步驟910,確定在預編程或儲存金鑰中是否存在與輸入金鑰匹配的任何匹配。如果在步驟910沒有確定匹配,那麼在步驟915,設定缺失位並且不返回結果。如果在步驟910確定至少一個匹配,那麼在步驟920,確定在與輸入金鑰匹配的預編程金鑰中是否存在超過一個匹配。如果在步驟920僅僅確定一個匹配,那麼在步驟925,設定命中位,並且與預編程金鑰配對的預編程資料作為命中資料返回。如果在步驟920確定超過一個匹配,那麼在步驟930,設定命中位,並且與具有最低記憶體ID的記憶體中預編程金鑰配對的預編程資料被選定並作為命中資料返回。
除了為輸入金鑰返回命中資料之外,階層也返回命中資料的位置,其包括階層ID和儲存命中資料的記憶體位址。命中資料的位置對使用者系統調試有用,也對統計目的有用。在步驟915、925和930後,方法900回到步驟905。
返回參考第八圖,階層800的查找結果通過輸出可重組態互連結構,例如第一圖的輸出可重組態互連結構125,被發送到每一個查找路徑的結果收集器重組態。
第十圖示出根據本發明的實施例的輸出可重組態互
連結構1000。在一些實施例中,輸出可重組態互連結構125類似地被組態為如輸出可重組態互連結構1000那樣。輸出可重組態互連結構1000包括輸出網路3010。輸出網路1010包括T1-輸入×N輸出可重組態解多工器。輸出網路1010將每一個階層1005的輸出連接到查找路徑的適當結果收集器1015。例如,在第三圖中,輸出網路1010被組態為將階層0,1,2和3的輸出連接到查找路徑0的結果收集器1015。輸出網路1010也被組態為將階層4的輸出連接到查找路徑1的結果收集器1015。輸出網路1010也被組態為將階層5和6連接到查找路徑2的結果收集器1015。輸出網路1010也被組態為將階層7的輸出連接到查找路徑3的結果收集器1015。這些連接在第十圖中示出。每一個查找路徑的結果收集器1015從階層1005中選擇其擁有的一個結果,以輸出該結果收集器1015的最終查找結果。
第十一圖示出根據本發明的實施例在結果收集器中選擇命中結果的方法1100。在一些實施例中,第十圖的結果收集器類似地被組態為如結果收集器1100那樣。方法1100從步驟1105開始,其中從分派的階層接收查找結果。在步驟1110,確定是否存在任何階層命中。如果在步驟1110未確定命中,那麼在步驟1115,設定缺失位並且不返回結果。如果在步驟1110確定至少一個命中,那麼在步驟1120,確定是否存在來自階層的超過一個命中。如果在步驟1120僅僅確定一個命中,那麼在步驟1125,設定命中位,並且命中結果或命中資料作為查找結果返回。如果在步驟1120確定超過一個命
中,那麼在步驟1130,設定命中位,並且選擇來自階層命中中階層ID最低的階層的命中結果並且將該結果作為查找結果返回。
除了返回命中結果,結果收集器也返回階層ID、記憶體ID和讀取命中資料的記憶體位址。階層ID、記憶體ID和記憶體位址對使用者系統調試有用,也對統計目的有用。在步驟1115、1125和1130後,方法1100回到步驟1105。
第十二圖示出根據本發明的實施例來組態和編程並列查找系統的方法1200。該方法1200為使用者提供建立並列查找系統的指南,例如第一圖的並列查找系統100。並列查找系統100具有帶T個共用階層的N個並列查找路徑。每一個階層都具有M個記憶體。每一個記憶體都具有m個位元寬的記憶體位址。每一個記憶體條目都含有可通過軟體編程的P對{金鑰,資料}。系統100中的每一個查找為具有M路和每路P桶的D-LEFT查找。
方法1200在步驟1205開始,其中使用者為每一個查找路徑分派階層。分派給每一個查找路徑的階層的數目必須為2的冪次。階層分區也必須保證在查找路徑中不存在階層重疊。
在步驟1210,計算每一個查找路徑的散列的大小。用於每一個查找路徑的散列大小基於為該查找路徑分派的階層的數目。如果查找路徑分派q個階層,那麼其散列大小等於log2(q)+m。
在已知每一個查找的散列大小之後,在步驟1215,
索引轉換器中的寄存器cfg_hash_sel和cfg_tile_offset被相應組態。cfg_hash_sel寄存器為查找路徑選擇函數。cfg_tile_offset寄存器為查找路徑調整查找索引的階層ID。
其間,在步驟1220,中央和輸出互連網路被組態為將查找路徑與其保留的階層連接。所有用於索引轉換器和網路的組態位元能夠由腳本根據本文中所述的原理自動產生。
在步驟1225,為每一個查找路徑分派的記憶體被編程。編程技術基於D-LEFT查找技術,其具有每查找M路和每路P桶。
在編程所有分派的記憶體後,在步驟1230,並列查找系統100準備接收輸入金鑰並且並存執行N個查找。在步驟1230之後,方法1200結束。
本發明的實施例涉及多並列查找,所述多並列查找使用通過互連網路的適當組態的共用記憶體的池。為每一個查找保留的共用記憶體的數目可根據該查找需要的儲存能力而重組態。共用記憶體被分組為同質階層。基於該查找所需的儲存能力,每一個查找分派一組階層。為每一個查找分派的階層不與其他查找重疊,使得所有查找能夠並存執行而不衝突。每一個查找可重組態為基於散列或直接存取。基於如何為每一個查找分派這些階層而編程所述互連網路。
本領域技術人員將認識到也存在其他使用和優點。儘管已經參考許多具體細節描述本發明,但是本領域技術人員將認識到,本發明能夠以其他具體形式涵蓋,而不偏離本發明的精神。因此,本領技術人員會理解,本發明不限制于
上文說明性的細節,而是通過附加權利要求限定。
Claims (29)
- 一種晶片上系統,其係配置為使用一共用記憶體池支援N個並列查找,該晶片上系統包括:一池的T×M個共用記憶體,被分組為T個階層;N個查找路徑之每一者的M個索引轉換器;一中央可重組態互連結構,用於將N個輸入埠連接到所述T個階層;一輸出可重組態互連結構,用於將所述T個階層連接到N個輸出埠;及N個輸出結果收集器,其中各所述N個輸出結果收集器是針對每一個查找路徑,其中該晶片上系統經組態以對該池的T×M個共用記憶體延著該N個查找路徑執行N個基於散列或直接存取的多個查找。
- 根據申請專利範圍第1項所述的晶片上系統,其中所述T個階層基於每一個查找路徑所需的儲存能力而被分區並分派給查找路徑。
- 根據申請專利範圍第1項所述的晶片上系統,其中為每一個查找路徑分派的階層的數目為2的冪次,且一階層無法於分區之間重疊。
- 根據申請專利範圍第1項所述的晶片上系統,其中所述T個階層的每一個包括:M個記憶體,用於以每一查找M路支援D-LEFT查找;一匹配塊,用於比較所述M個記憶體中的預編程金鑰與輸入金鑰;和一選擇塊,用於為該階層選擇命中結果。
- 根據申請專利範圍第1項所述的晶片上系統,其中各所述共用記憶體係具有2m個條目,其中所述條目的每一個含有P對之可編程{金鑰,資料},用於以每路P桶支援D-LEFT查找。
- 根據申請專利範圍第1項所述的晶片上系統,其中每一個查找路徑可組態為一基於散列之查找或一直接存取查找。
- 根據申請專利範圍第1項所述的晶片上系統,其中每一個查找路徑的M個索引轉換器的索引轉換器i係用以存取分派給該查找路徑的其中一個所述T個階層中的記憶體i。
- 根據申請專利範圍第1項所述的晶片上系統,其中每一個查找路徑的M個索引轉換器的每一個皆基於分派給該查找路徑的複數個階層而為可組態。
- 根據申請專利範圍第1項所述的晶片上系統,其中每一個查找路徑的M個索引轉換器中的每一個還包括:log2(T)+1個散列函數和log2(T)+1個非散列函數,其中所述函數的輸出具有之位元寬係介於m個位元至log2(T)+m個位元;一第一可組態寄存器,用於選擇其中一個所述函數;和一第二可組態寄存器,用於選擇一階層偏移,使得一查找索引可指向該查找路徑的所分派階層中之一正確階層,其中所述所分派階層是選自所述T個階層。
- 根據申請專利範圍第1項所述的晶片上系統,其中所述M個索引轉換器的每一個的輸出索引具有log2(T)+m個位元,其中所述輸出索引中的所述log2(T)個最高有效位元被用於指向所述T個階層的其中一個,且所述輸出索引中的所述m個最低有效位元係使用作為一記憶體讀取位址。
- 根據申請專利範圍第1項所述的晶片上系統,其中所述中央可重組態互連結構包括M個可組態的N×T網路。
- 根據申請專利範圍第1項所述的晶片上系統,其中各所述N×T個網路係一交叉開關與一可組態蝶形開關中其一。
- 根據申請專利範圍第1項所述的晶片上系統,其中所述輸出可重組態互連結構包括T個可組態的1×N解多工器。
- 根據申請專利範圍第1項所述的晶片上系統,其中與一查找路徑相關聯的N個輸出結果收集器中其一係配置為從為所述查找路徑分派的階層收集結果,且係配置為從所述分派的階層輸出的結果中選擇一個最終結果。
- 根據申請專利範圍第1項所述的晶片上系統,其中各所述T個階層之一命中結果是基於在該階層的記憶體中的預編程金鑰和該階層的一輸入金鑰之間的金鑰匹配結果。
- 一種使用一共用記憶體池執行N個並列查找的方法:將T個階層分區為N組,其中各所述T個階層包括M個記憶體,且其中N個查找路徑的每一個與一輸入埠和一輸出埠相關聯,且其中各所述N個查找路徑係分配給所述N組中其一;及執行所述N個並列查找,包括:針對N個輸入金鑰中的每一個:將所述輸入金鑰轉換為複數個查找索引,其中所述複數個查找索引中各包括由一各別查找路徑所存取之所述N組中其一的一特定階層的一階層ID,且也包括該特定階層中的一記憶體之一記憶體位置,從其中資料將被讀取;藉由使用來自該特定階層的一匹配資訊集合確定要返回哪個命中資訊;及藉由使用來自所述複數個查找索引所指示的那些階層之一命中資訊集合,確定針對與所述輸入金鑰相關聯的一查找路徑要返回哪個最終查找結果。
- 根據申請專利範圍第16項所述的方法,其中在所述確定要從所述特定階層返回哪個命中資訊中,一最高優先順序係被給予該特定階層中的一記憶體,所述記憶體在該特定階層中的所有記憶體中具有一最低記憶體ID。
- 根據申請專利範圍第16項所述的方法,其中該命中資訊包括與一匹配金鑰相對應的命中資料和該命中資料的位置,其中該命中資料的該位置包括一記憶體ID、與該記憶體ID相關聯的一記憶體的位址及該命中資料在所述記憶體中的位置。
- 根據申請專利範圍第16項所述的方法,其中在所述確定一查找路徑要返回哪個最終查找結果中,一最高優先順序是被給予在為該查找路徑所分派的所有階層中具有一最低階層ID之一階層。
- 根據申請專利範圍第19項所述的方法,其中該最終查找結果包括命中資料、含有該命中資料之一階層的階層ID和讀取該命中資料的記憶體位址。
- 根據申請專利範圍第16項所述的方法,進一步包括:在執行所述N個並列查找之前:計算各查找路徑之散列尺寸;產生散列選擇之組態位元及各查找路徑之階層偏移;組態連接查找路徑和所述階層的網路;和為各查找路徑編程所述記憶體。
- 根據申請專利範圍第21項所述的方法,其中用於為每一個查找路徑編程所述記憶體的技術是基於具有M路和P桶的D-LEFT查找技術。
- 一種轉換裝置,係配置以支援N個並列金鑰對查找之索引轉換,包括:N個金鑰,其係於該轉換器處所接收,其中各所述N個金鑰係與來自T個階層的一階層群組相關聯,其中各所述T個階層係包括M個記憶體;N×M個查找索引,其在所述N個金鑰並列轉換為所述N×M個查找索引之後從該轉換器返回;和N×M個轉換器,其中各所述N×M個轉換器係配置以來自所述N個金鑰的一金鑰轉換為來自所述N×M個查找索引的一查找索引,並且包括:log2(T)+1個散列函數和log2(T)+1個非散列函數,其中所述函數的輸出具有之位元寬係介於m個位元至log2(T)+m個位元之範圍;一第一可組態寄存器,用於選擇所述函數中其一;和一第二可組態寄存器,用於選擇一階層偏移,使得該查找索引指向來自與該金鑰相關聯之所述階層群組的一正確階層。
- 根據申請專利範圍第23項所述的轉換裝置,其中所述N×M個查找索引被轉發到一中央可重組態互連結構,其中該中央可重組態互連結構係組態為可使各所述N×M個查找索引連接到T個階層中其一,以比較該金鑰與該階層中所儲存的預編程金鑰。
- 一種階層裝置,包括:M個記憶體,其中所述M個記憶體係各包括2m個條目,其中所述條目係各含有P對可編程{金鑰,資料};和一匹配和選擇邏輯,係配置以接收一輸入金鑰並輸出一查找結果,其中該匹配和選擇邏輯包括:一匹配塊,係配置以確定該輸入金鑰是否匹配所述M個記憶體中的任一預編程金鑰;和一選擇塊,係配置以從所述M個記憶體中含有與該輸入金鑰匹配的預編程金鑰的那些記憶體中選擇一記憶體,其中所選擇的記憶體具有在那些記憶體中之一最低記憶體ID,其中所述查找結果包括與該預編程金鑰配對的預編程資料。
- 根據申請專利範圍第25項所述的階層裝置,其中所述查找結果還包括記憶體ID和儲存該預編程資料的記憶體位址。
- 根據申請專利範圍第25項所述的階層裝置,其中所述查找結果被轉發到一輸出重組態互連結構,其中所述輸出重組態互連結構係配置為可將各所述T個階層連接到N個查找路徑之N個最終輸出選擇裝置中其一。
- 根據申請專利範圍第27項所述的階層裝置,其中所述N個最終輸出選擇裝置係各包括:一收集塊,配置以從保留一各別查找路徑之所有階層接收查找結果;和一選擇塊,配置以從該收集塊所收集的所有查找結果中選擇一個最終查找結果,其中所述選擇的最終查找結果是來自具有最低階層ID的一命中階層。
- 根據申請專利範圍第27項所述的階層裝置,其中所述選擇的最終查找結果包括命中資料、階層ID、記憶體ID和儲存所述命中資料的記憶體位址。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/142,511 | 2013-12-27 | ||
US14/142,511 US9620213B2 (en) | 2013-12-27 | 2013-12-27 | Method and system for reconfigurable parallel lookups using multiple shared memories |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201602782A TW201602782A (zh) | 2016-01-16 |
TWI659303B true TWI659303B (zh) | 2019-05-11 |
Family
ID=53482550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103145450A TWI659303B (zh) | 2013-12-27 | 2014-12-25 | 使用複數個共用記憶體之可重組態並列查找的方法和系統 |
Country Status (6)
Country | Link |
---|---|
US (6) | US9620213B2 (zh) |
JP (1) | JP6594624B2 (zh) |
KR (1) | KR102391602B1 (zh) |
CN (1) | CN104951494B (zh) |
HK (1) | HK1210843A1 (zh) |
TW (1) | TWI659303B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9620213B2 (en) | 2013-12-27 | 2017-04-11 | Cavium, Inc. | Method and system for reconfigurable parallel lookups using multiple shared memories |
US9379963B2 (en) | 2013-12-30 | 2016-06-28 | Cavium, Inc. | Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine |
US9825884B2 (en) | 2013-12-30 | 2017-11-21 | Cavium, Inc. | Protocol independent programmable switch (PIPS) software defined data center networks |
US9413357B2 (en) | 2014-06-11 | 2016-08-09 | Cavium, Inc. | Hierarchical statistically multiplexed counters and a method thereof |
US10616380B2 (en) | 2014-06-19 | 2020-04-07 | Cavium, Llc | Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof |
US9635146B2 (en) | 2014-06-19 | 2017-04-25 | Cavium, Inc. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
US9813327B2 (en) | 2014-09-23 | 2017-11-07 | Cavium, Inc. | Hierarchical hardware linked list approach for multicast replication engine in a network ASIC |
US10616144B2 (en) | 2015-03-30 | 2020-04-07 | Cavium, Llc | Packet processing system, method and device having reduced static power consumption |
US10496543B2 (en) * | 2016-03-31 | 2019-12-03 | Samsung Electronics Co., Ltd. | Virtual bucket multiple hash tables for efficient memory in-line deduplication application |
US10305799B2 (en) * | 2016-08-17 | 2019-05-28 | Cisco Technology, Inc. | Re-configurable lookup pipeline architecture for packet forwarding |
GB2569844B (en) * | 2017-10-20 | 2021-01-06 | Graphcore Ltd | Sending data off-chip |
CN108306835B (zh) * | 2018-01-23 | 2021-05-04 | 中国航空工业集团公司洛阳电光设备研究所 | 一种以太网交换机的输入缓存及数据转发方法 |
CN109039911B (zh) * | 2018-07-27 | 2021-02-26 | 烽火通信科技股份有限公司 | 一种基于hash查找方式共享ram的方法及系统 |
US11362948B2 (en) * | 2019-01-10 | 2022-06-14 | Marvell Israel (M.I.S.L) Ltd. | Exact match and ternary content addressable memory (TCAM) hybrid lookup for network device |
US20200136971A1 (en) * | 2019-06-07 | 2020-04-30 | Intel Corporation | Hash-table lookup with controlled latency |
US11899985B1 (en) | 2021-03-31 | 2024-02-13 | DreamBig Semiconductor Inc. | Virtual modules in TCAM |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030093613A1 (en) * | 2000-01-14 | 2003-05-15 | David Sherman | Compressed ternary mask system and method |
TW200832408A (en) * | 2007-01-19 | 2008-08-01 | Univ Nat Chiao Tung | Hierarchical search line with internal storage irrelevant entry control |
TW201134252A (en) * | 2009-11-24 | 2011-10-01 | Qualcomm Inc | Method and apparatus for facilitating a layered cell search for long term evolution systems |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4929939A (en) | 1988-10-31 | 1990-05-29 | International Business Machines Corporation | High-speed switching system with flexible protocol capability |
US5319347A (en) | 1992-04-30 | 1994-06-07 | Sgs-Thomson Microelectronics, Inc. | Parallelized magnitude comparator for comparing a binary number to a fixed value |
JP3703518B2 (ja) * | 1995-03-30 | 2005-10-05 | 川崎マイクロエレクトロニクス株式会社 | 連想メモリシステム |
US6667984B1 (en) | 1998-05-15 | 2003-12-23 | Polytechnic University | Methods and apparatus for arbitrating output port contention in a switch having virtual output queuing |
JP2001024641A (ja) | 1999-07-06 | 2001-01-26 | Nec Corp | クロスバー型スイッチのアービタにおける接続許可システム及び方法 |
DE60026229T2 (de) | 2000-01-27 | 2006-12-14 | International Business Machines Corp. | Verfahren und Vorrichtung für Klassifizierung von Datenpaketen |
US6831917B1 (en) | 2000-05-10 | 2004-12-14 | Cisco Technology, Inc. | Network address translation for multicast virtual sourcing |
US7075926B2 (en) | 2000-05-24 | 2006-07-11 | Alcatel Internetworking, Inc. (Pe) | Programmable packet processor with flow resolution logic |
JP2002198430A (ja) | 2000-12-26 | 2002-07-12 | Nec Microsystems Ltd | 駆動力可変ブロックおよびこれを用いたlsi設計方法 |
JP4489308B2 (ja) | 2001-01-05 | 2010-06-23 | 富士通株式会社 | パケットスイッチ |
CA2494149C (en) * | 2002-08-10 | 2010-05-25 | Cisco Technology, Inc. | Associative memory with enhanced capabilities |
US7461167B1 (en) | 2002-11-22 | 2008-12-02 | Silicon Image, Inc. | Method for multicast service in a crossbar switch |
US7685436B2 (en) | 2003-10-02 | 2010-03-23 | Itt Manufacturing Enterprises, Inc. | System and method for a secure I/O interface |
EP1553738A1 (en) | 2004-01-12 | 2005-07-13 | Thomson Licensing S.A. | Method and apparatus for generating data packets |
US7085907B2 (en) | 2004-02-17 | 2006-08-01 | International Business Machines Corporation | Dynamic reconfiguration of memory in a multi-cluster storage control unit |
KR100603567B1 (ko) | 2004-09-02 | 2006-07-24 | 삼성전자주식회사 | 스위치에서의 대역폭 예약을 통한 QoS 보장 방법 및 그시스템 |
US20060059269A1 (en) | 2004-09-13 | 2006-03-16 | Chien Chen | Transparent recovery of switch device |
US20060140126A1 (en) | 2004-12-27 | 2006-06-29 | Intel Corporation | Arbitrating virtual channel transmit queues in a switched fabric network |
JP4779955B2 (ja) | 2006-01-06 | 2011-09-28 | 富士通株式会社 | パケット処理装置及びパケット処理方法 |
US8112622B2 (en) | 2006-12-08 | 2012-02-07 | Broadcom Corporation | Chaining port scheme for network security |
US8259715B2 (en) | 2007-07-25 | 2012-09-04 | Hewlett-Packard Development Company, L.P. | System and method for traffic load balancing to multiple processors |
US8054744B1 (en) | 2007-10-25 | 2011-11-08 | Marvell International Ltd. | Methods and apparatus for flow classification and flow measurement |
WO2009113918A1 (en) | 2008-03-12 | 2009-09-17 | Telefonaktiebolaget Lm Ericsson (Publ) | Improved cell reselection in an mbsfn system |
US8638665B2 (en) | 2008-04-30 | 2014-01-28 | Nec Corporation | Router, information processing device having said router, and packet routing method |
JP4784786B2 (ja) | 2009-03-27 | 2011-10-05 | 日本電気株式会社 | クロック分配回路及びクロックスキュー調整方法 |
JPWO2011078108A1 (ja) * | 2009-12-21 | 2013-05-09 | 日本電気株式会社 | マルチプロセッサ環境におけるパターンマッチング方法、及び装置 |
US9077669B2 (en) * | 2010-06-14 | 2015-07-07 | Dynamic Invention Llc | Efficient lookup methods for ternary content addressable memory and associated devices and systems |
US8467213B1 (en) * | 2011-03-22 | 2013-06-18 | Netlogic Microsystems, Inc. | Power limiting in a content search system |
CN102724101B (zh) | 2011-03-29 | 2015-01-21 | 华为技术有限公司 | 报文转发方法及系统与中继代理设备 |
AU2012261972A1 (en) | 2011-06-01 | 2014-01-09 | Security First Corp. | Systems and methods for secure distributed storage |
CN103858386B (zh) * | 2011-08-02 | 2017-08-25 | 凯为公司 | 用于通过优化的决策树执行包分类的方法和装置 |
US9159420B1 (en) * | 2011-08-16 | 2015-10-13 | Marvell Israel (M.I.S.L) Ltd. | Method and apparatus for content addressable memory parallel lookup |
WO2013054497A1 (ja) | 2011-10-14 | 2013-04-18 | パナソニック株式会社 | 中継器、中継器の制御方法、およびコンピュータプログラム |
US8711860B2 (en) | 2011-12-22 | 2014-04-29 | Telefonaktiebolaget L M Ericsson (Publ) | Controller for flexible and extensible flow processing in software-defined networks |
US9674114B2 (en) | 2012-02-09 | 2017-06-06 | Intel Corporation | Modular decoupled crossbar for on-chip router |
US9225635B2 (en) | 2012-04-10 | 2015-12-29 | International Business Machines Corporation | Switch routing table utilizing software defined network (SDN) controller programmed route segregation and prioritization |
US20140153443A1 (en) | 2012-11-30 | 2014-06-05 | International Business Machines Corporation | Per-Address Spanning Tree Networks |
CN104022960B (zh) | 2013-02-28 | 2017-05-31 | 新华三技术有限公司 | 基于OpenFlow协议实现PVLAN的方法和装置 |
US20140369363A1 (en) | 2013-06-18 | 2014-12-18 | Xpliant, Inc. | Apparatus and Method for Uniquely Enumerating Paths in a Parse Tree |
CN103347013B (zh) | 2013-06-21 | 2016-02-10 | 北京邮电大学 | 一种增强可编程能力的OpenFlow网络系统和方法 |
US9590914B2 (en) | 2013-11-05 | 2017-03-07 | Cisco Technology, Inc. | Randomized per-packet port channel load balancing |
US9973599B2 (en) | 2013-12-04 | 2018-05-15 | Mediatek Inc. | Parser for parsing header in packet and related packet processing apparatus |
US9363178B2 (en) | 2013-12-18 | 2016-06-07 | Telefonaktiebolaget L M Ericsson (Publ) | Method, apparatus, and system for supporting flexible lookup keys in software-defined networks |
US9620213B2 (en) | 2013-12-27 | 2017-04-11 | Cavium, Inc. | Method and system for reconfigurable parallel lookups using multiple shared memories |
US9825884B2 (en) | 2013-12-30 | 2017-11-21 | Cavium, Inc. | Protocol independent programmable switch (PIPS) software defined data center networks |
US9379963B2 (en) | 2013-12-30 | 2016-06-28 | Cavium, Inc. | Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine |
CN104010049B (zh) | 2014-04-30 | 2017-10-03 | 易云捷讯科技(北京)股份有限公司 | 基于sdn的以太网ip报文封装方法及网络隔离和dhcp实现方法 |
-
2013
- 2013-12-27 US US14/142,511 patent/US9620213B2/en active Active
-
2014
- 2014-12-25 JP JP2014263373A patent/JP6594624B2/ja active Active
- 2014-12-25 TW TW103145450A patent/TWI659303B/zh active
- 2014-12-29 KR KR1020140191978A patent/KR102391602B1/ko active IP Right Grant
- 2014-12-29 CN CN201410838433.4A patent/CN104951494B/zh active Active
-
2015
- 2015-11-20 HK HK15111519.2A patent/HK1210843A1/zh unknown
-
2017
- 2017-03-01 US US15/446,297 patent/US9952800B2/en active Active
- 2017-03-01 US US15/446,259 patent/US9952799B2/en active Active
-
2018
- 2018-03-16 US US15/923,851 patent/US10782907B2/en active Active
-
2020
- 2020-08-18 US US16/996,749 patent/US11435925B2/en active Active
-
2022
- 2022-07-27 US US17/874,544 patent/US20220404995A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030093613A1 (en) * | 2000-01-14 | 2003-05-15 | David Sherman | Compressed ternary mask system and method |
TW200832408A (en) * | 2007-01-19 | 2008-08-01 | Univ Nat Chiao Tung | Hierarchical search line with internal storage irrelevant entry control |
TW201134252A (en) * | 2009-11-24 | 2011-10-01 | Qualcomm Inc | Method and apparatus for facilitating a layered cell search for long term evolution systems |
Also Published As
Publication number | Publication date |
---|---|
JP6594624B2 (ja) | 2019-10-23 |
US20180203639A1 (en) | 2018-07-19 |
US9952800B2 (en) | 2018-04-24 |
US20170242618A1 (en) | 2017-08-24 |
KR102391602B1 (ko) | 2022-04-27 |
CN104951494B (zh) | 2019-08-09 |
US20210034269A1 (en) | 2021-02-04 |
US10782907B2 (en) | 2020-09-22 |
US9952799B2 (en) | 2018-04-24 |
CN104951494A (zh) | 2015-09-30 |
US20220404995A1 (en) | 2022-12-22 |
US20170242619A1 (en) | 2017-08-24 |
US20150187419A1 (en) | 2015-07-02 |
TW201602782A (zh) | 2016-01-16 |
HK1210843A1 (zh) | 2016-05-06 |
US9620213B2 (en) | 2017-04-11 |
US11435925B2 (en) | 2022-09-06 |
KR20150077372A (ko) | 2015-07-07 |
JP2015172925A (ja) | 2015-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI659303B (zh) | 使用複數個共用記憶體之可重組態並列查找的方法和系統 | |
US11824796B2 (en) | Protocol independent programmable switch (PIPS) for software defined data center networks | |
US8625604B2 (en) | Hash-based prefix-compressed trie for IP route lookup | |
CN104871145A (zh) | 网络设备中的存储器共享 | |
CN105141525B (zh) | IPv6路由查找方法及装置 | |
US6725216B2 (en) | Partitioning search key thereby distributing table across multiple non-contiguous memory segments, memory banks or memory modules | |
US20140358886A1 (en) | Internal search engines architecture | |
US20150180778A1 (en) | Traffic engineering for large scale data center networks | |
TWI638554B (zh) | 用於網路交換機中的可擴展且靈活的表格搜索的裝置和方法 | |
WO2017000893A1 (zh) | Ip路由查找 | |
US10430353B2 (en) | Memory device performing near-data processing using a plurality of data processing engines that independently perform data processing operations, and system including the same | |
US10469368B2 (en) | Distributed routing table system with improved support for multiple network topologies | |
EP3104283B1 (en) | Hardware programmable device with integrated search engine | |
US20080123663A1 (en) | Method and apparatus for managing ternary content addressable memory entries for use in a data packet routing device | |
WO2016149121A1 (en) | Protocol independent programmable switch (pips) for software defined data center networks | |
US9571395B2 (en) | Reconfigurable interconnect element with local lookup tables shared by multiple packet processing engines | |
JP4343377B2 (ja) | 連想メモリ | |
CN110691032A (zh) | 一种融合自适应和确定性路由算法的分级路由方法及装置 | |
US20160203089A1 (en) | Expander data routing | |
US20090313413A1 (en) | method for wiring allocation and switch configuration in a multiprocessor environment | |
JP2002525754A (ja) | 知識ベースのサーチ方法 |