專利名稱:基于fpga的高速搜索引擎及搜索方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信處理領(lǐng)域,尤其涉及一種基于FPGA的高速搜索引擎及搜索方法。
背景技術(shù):
在高速交換、流量管理以及用戶業(yè)務(wù)QOS (Quality of Service)保證的器件設(shè)計(jì)中,會用 到一種網(wǎng)絡(luò)搜索引擎(Network Search Engine,縮寫為NSE)器件,NSE器件雖然具有非常強(qiáng) 大的搜索處理能力,但是也存在功耗較高、體積較大、價格昂貴等缺點(diǎn),尤其是NSE器件涉 及到許多高端技術(shù),通常是國外禁運(yùn)的高技術(shù)產(chǎn)品之一,所以, 一定程度上限制了它在一些 中小型網(wǎng)絡(luò)設(shè)備或SOC系統(tǒng)中的應(yīng)用。在一些中低端或者中小規(guī)模網(wǎng)絡(luò)設(shè)備如中低端路由器 產(chǎn)品中,為了降低成本以及減小體積,人們通常采用軟件搜索的方法來實(shí)現(xiàn)數(shù)據(jù)的處理。釆 用這種方法雖然能夠降低成本,但是同時也會大幅降低了系統(tǒng)的處理能力,因此也不是一種 最佳方法。
FPGA (可編程器)器件是一種通用邏輯器件,不僅很少會受到禁運(yùn)或者停產(chǎn)的影響,而 且隨著FPGA技術(shù)的發(fā)展,F(xiàn)PGA的成本越來越低,性能卻越來越好,現(xiàn)在的FPGA芯片內(nèi) 部大都集成了大量的BlockRAM, BlockRAM具有單塊容量小、功耗低、運(yùn)行頻率高以及不 占用邏輯資源等優(yōu)點(diǎn)。因此,利用FPGA內(nèi)部豐富的BlockRAM資源完全可以實(shí)現(xiàn)用戶想要 實(shí)現(xiàn)的各種功能和算法,也適合用來實(shí)現(xiàn)高速搜索引擎。這正是本發(fā)明的基礎(chǔ)所在。
發(fā)明內(nèi)容
本發(fā)明公開了一種基于FPGA的高速搜索引擎,該高速搜索引擎包括多個并行的搜索子 模塊、匹配內(nèi)容選擇器、兩個或門,各搜索子模塊分別與數(shù)據(jù)總線及地址總線連接;各搜索 子模塊分別將搜索到的匹配數(shù)據(jù)送入匹配內(nèi)容選擇器;系統(tǒng)將開始搜索及停止搜索命令傳送 到各搜索子模塊,各搜索子模塊將搜索到匹配項(xiàng)的信息送到第一個或門,將搜索結(jié)束的信息 送入第二個或門。
搜索子模塊包括RAM、處理器接口、搜索地址產(chǎn)生器、已搜索條目計(jì)數(shù)器、匹配項(xiàng)比
較器
處理器接口與外部處理器數(shù)據(jù)總線及地址總線連接,完成對搜索條目內(nèi)容的設(shè)置或修改,
外部處理器通過地址、數(shù)據(jù)及控制總路線將數(shù)據(jù)內(nèi)容存入RAM或者從RAM中讀出;RAM 用來保存搜索條目內(nèi)容,通過數(shù)據(jù)總線將數(shù)據(jù)送到處理器接口或者輸出數(shù)據(jù)到比較器;搜索 地址產(chǎn)生器用來產(chǎn)生搜索條目地址作為RAM的讀地址;搜索條目計(jì)數(shù)器對完成數(shù)據(jù)搜索的 條目計(jì)數(shù);比較器用來完成待搜索數(shù)據(jù)內(nèi)容與RAM輸出數(shù)據(jù)的比較。
一種基于FPGA的高速搜索引擎的搜索方法為當(dāng)系統(tǒng)發(fā)出開始搜索命令后,各個并行 的搜索子模塊同時開始搜索本子模塊的全部條目,直到接收到停止搜索命令或根據(jù)搜索結(jié)果
停止搜索,等待下一次搜索。所述根據(jù)搜索結(jié)果停止搜索是指搜索子模塊完成了本模塊內(nèi)整個條目的遍歷工作,發(fā)出 搜索結(jié)束命令,等待下一次搜索;或者其中任何一個子模塊在未完成所有條目搜索時搜索到 了匹配項(xiàng)條目,即發(fā)出搜索結(jié)束命令,通知搜索引擎已經(jīng)搜索到匹配項(xiàng)等待下一次搜索。
當(dāng)搜索子模塊接收到搜索引擎發(fā)來的開始搜索命令后,搜索地址產(chǎn)生器開始計(jì)數(shù)、當(dāng)接 收到停止搜索命令后就停止計(jì)數(shù),每一個時鐘周期搜索地址產(chǎn)生器就加1,搜索地址產(chǎn)生器 的計(jì)數(shù)值作為RAM的讀地址,RAM中的輸出內(nèi)容跟隨搜索地址產(chǎn)生器的地址變化;處理器 接口將保存在RAM中的內(nèi)容送出供比較器與待搜索內(nèi)容比較,如果相等則送出搜索到匹配 項(xiàng)命令;在搜索地址改變的同時,每完成1個數(shù)據(jù)搜索,搜索條目計(jì)數(shù)器就加1,直到完成 所有數(shù)據(jù)的搜索或接收到搜索引擎送來的停止搜索命令為止;當(dāng)計(jì)數(shù)器值加大到最大(RAM 中能保存的最大條目數(shù))時,如果還沒有搜索到相匹配的數(shù)據(jù),則送出搜索結(jié)束命令,通知 搜索引擎,搜索子模塊己經(jīng)完成了本子模塊內(nèi)全部條目的搜索;如果在未完成所有數(shù)據(jù)條目 的搜索時,搜索子模塊找到了匹配條目,比較器立即送出搜索結(jié)束命令,此時地址產(chǎn)生器則 自動停止加l,保持當(dāng)前地址,搜索條目計(jì)數(shù)器自動清零,等待下一次搜索。
當(dāng)處理器接口在設(shè)置或修改搜索內(nèi)容時,搜索引擎自動停止搜索。
本發(fā)明的有益技術(shù)效果是充分利用FPGA內(nèi)部豐富的BlockRAM資源實(shí)現(xiàn)的高速搜索 引擎,解決了在中小規(guī)模網(wǎng)絡(luò)設(shè)備中由于使用NSE器件帶來的功耗較高、體積較大、價格昂 貴、容易受禁運(yùn)或者停產(chǎn)影響以及采用軟件處理方式帶來的性能極大降低等缺點(diǎn),并且可以 使搜索引擎做到性能強(qiáng)大、功耗低、體積小、價格非常便宜,有效降低了對FPGA內(nèi)部有限 的觸發(fā)器和査找表資源的占用,從而取得性能和資源占用的平衡。
圖l,搜索引擎的原理框圖2,搜索子模塊邏輯框圖。 具體實(shí)施方法
技術(shù)領(lǐng)域:
本發(fā)明所述的一種基于FPGA的高速搜索引擎由多個并行的搜索子模塊構(gòu)成,根據(jù)搜索 條目數(shù)量和RAM容量大小不同,搜索子模塊的數(shù)量可以不同?;贔PGA的高速搜索引擎 的原理框圖如圖1所示每個搜索子模塊分別與數(shù)據(jù)總線、地址總線連接,各搜索子模塊根 據(jù)系統(tǒng)的命令啟動搜索,任何一個搜索子模塊收到系統(tǒng)停止搜索命令則停止搜索;或者任何 一個搜索子模塊完成了整個條目的遍歷工作則停止搜索。
搜索子模塊可以完成較少條目的搜索,根據(jù)RAM容量的大小和搜索項(xiàng)位寬大小不同, 而搜索條目數(shù)不同,子模塊搜索條目可以從8-128不等。以每個子模塊128條為例,每個子 模塊完成整個條目的遍歷時鐘周期為128個,如果時鐘為100MHz,那么此子模塊搜索能力 最小為80萬次/秒。
如果一個基于FPGA的搜索引擎由256個子模塊構(gòu)成,每當(dāng)系統(tǒng)發(fā)出了搜索啟動命令后,這256個子模塊都同時開始搜索本子模塊的全部條目,直到收到停止搜索命令,或者完成了 整個條目的遍歷工作為止。由于所有模塊并行搜索,此搜索引擎的搜索能力非常強(qiáng)大,以每 個子模塊最大128條待搜索條目計(jì)算,可以達(dá)到2億次/秒。
圖2所示為一個搜索子模塊的原理框圖, 一個搜索子模塊包括RAM、處理器接口、搜 索地址產(chǎn)生器、已搜索條目計(jì)數(shù)器、匹配項(xiàng)比較器-
處理器接口與外部處理器數(shù)據(jù)總線及地址總線連接,完成對搜索條目內(nèi)容的設(shè)置或修改, 外部處理器通過地址、數(shù)據(jù)及控制總路線將數(shù)據(jù)內(nèi)容存入RAM或者從RAM中讀出;RAM 用來保存搜索條目內(nèi)容,通過數(shù)據(jù)總線將數(shù)據(jù)送到處理器接口或者輸出數(shù)據(jù)到比較器;搜索 地址產(chǎn)生器用來產(chǎn)生搜索條目地址作為RAM的讀地址;搜索條目計(jì)數(shù)器對完成數(shù)據(jù)搜索的 條目計(jì)數(shù);比較器用來完成待搜索數(shù)據(jù)內(nèi)容與RAM輸出數(shù)據(jù)的比較。
當(dāng)搜索引擎向系統(tǒng)發(fā)出開始搜索命令后,系統(tǒng)中的每個子模塊都同時并行搜索本子模塊 的全部條目,直到收到系統(tǒng)停止搜索命令或者根據(jù)搜索結(jié)果停止搜索,等待下一次搜索;
根據(jù)搜索結(jié)果停止搜索是指搜索子模塊完成了本模塊內(nèi)全部條目的遍歷工作,發(fā)出搜索 結(jié)束命令,等待下一次搜索;或者其中任何一個子模塊在未完成所有條目搜索時搜索到了匹 配項(xiàng)條目,即發(fā)出搜索結(jié)束命令,通知搜索引擎已經(jīng)搜索到匹配項(xiàng);等待下一次搜索。
當(dāng)搜索子模塊接收到搜索引擎發(fā)來的開始搜索命令后,搜索地址產(chǎn)生器開始計(jì)數(shù)、當(dāng)接 收到停止搜索命令后就停止計(jì)數(shù),每一個時鐘周期搜索地址產(chǎn)生器就加1,搜索地址產(chǎn)生器 的計(jì)數(shù)值作為RAM的讀地址,RAM中的輸出內(nèi)容跟隨搜索地址產(chǎn)生器的地址變化;處理器 接口將保存在RAM中的內(nèi)容送出供比較器與待搜索內(nèi)容比較,如果相等則送出搜索到匹配 項(xiàng)命令;在搜索地址改變的同時,每完成1個數(shù)據(jù)搜索,搜索條目計(jì)數(shù)器就加1,直到完成 所有數(shù)據(jù)的搜索或接收到搜索引擎送來的停止搜索命令為止;當(dāng)計(jì)數(shù)器值加大到最大(RAM 中能保存的最大條目數(shù))時,如果還沒有搜索到相匹配的數(shù)據(jù),則送出搜索結(jié)束命令,通知 搜索引擎,搜索子模塊已經(jīng)完成了本子模塊內(nèi)全部條目的搜索;如果在未完成所有數(shù)據(jù)條目 的搜索時,搜索子模塊找到了匹配條目,比較器立即送出搜索結(jié)束命令,此時地址產(chǎn)生器則 自動停止加l,保持當(dāng)前地址,搜索條目計(jì)數(shù)器自動清零,等待下一次搜索。
當(dāng)處理器接口在設(shè)置或修改搜索內(nèi)容時,搜索引擎自動停止搜索。以免此時影響搜索的 正確性。
權(quán)利要求
1、一種基于FPGA的高速搜索引擎,其特征在于該高速搜索引擎包括多個并行的搜索子模塊、1個匹配內(nèi)容選擇器、兩個或門,各搜索子模塊分別與搜索數(shù)據(jù)總線及搜索地址總線連接;各搜索子模塊將搜索到的匹配數(shù)據(jù)送入匹配內(nèi)容選擇器;系統(tǒng)將開始搜索及停止搜索命令傳送到各搜索子模塊,各搜索子模塊將搜索到匹配項(xiàng)的信息送到第一個或門,將搜索結(jié)束的信息送入第二個或門。
2、 根據(jù)權(quán)利要求1所述的基于FPGA的高速搜索引擎,其特征在于所述的搜索子模塊 包括RAM、處理器接口、搜索地址產(chǎn)生器、已搜索條目計(jì)數(shù)器、匹配項(xiàng)比較器-處理器接口與外部處理器數(shù)據(jù)總線及地址總線連接,完成對搜索條目內(nèi)容的設(shè)置或修改, 外部處理器通過地址、數(shù)據(jù)及控制總路線將數(shù)據(jù)內(nèi)容存入RAM或者從RAM中讀出;RAM 用來保存搜索條目內(nèi)容,通過數(shù)據(jù)總線將數(shù)據(jù)送到處理器接口或者輸出數(shù)據(jù)到比較器;搜索 地址產(chǎn)生器用來產(chǎn)生搜索條目地址作為RAM的讀地址;搜索條目計(jì)數(shù)器對完成數(shù)據(jù)搜索的 條目計(jì)數(shù);比較器用來完成待搜索數(shù)據(jù)內(nèi)容與RAM輸出數(shù)據(jù)的比較。
3、 一種基于FPGA的高速搜索引擎的搜索方法,其特征在于當(dāng)系統(tǒng)發(fā)出開始搜索的命 令后,各個并行的搜索子模塊同時開始搜索本子模塊的全部條目,直到收到系統(tǒng)停止搜索命 令或者根據(jù)搜索結(jié)果停止搜索,等待下一次搜索。
4、 根據(jù)權(quán)利要求3所述的基于FPGA的高速搜索引擎的搜索方法,其特征在于所述的 根據(jù)搜索結(jié)果停止搜索為搜索子模塊完成了本模塊內(nèi)整個條目的遍歷工作,發(fā)出搜索結(jié)束 命令,等待下一次搜索;或者其中任何一個子模塊在未完成所有條目搜索時搜索到了匹配項(xiàng) 條目,即發(fā)出搜索結(jié)束命令,通知搜索引擎已經(jīng)搜索到匹配項(xiàng);等待下一次搜索。
5、 根據(jù)權(quán)利要求3所述的基于FPGA的高速搜索引擎的搜索方法,其特征在于當(dāng)搜索 子模塊接收到搜索引擎發(fā)來的開始搜索命令后,搜索地址產(chǎn)生器開始計(jì)數(shù)、當(dāng)接收到停止搜 索命令后就停止計(jì)數(shù),每一個時鐘周期搜索地址產(chǎn)生器就加1,搜索地址產(chǎn)生器的計(jì)數(shù)值作 為RAM的讀地址,RAM中的輸出內(nèi)容跟隨搜索地址產(chǎn)生器的地址變化;RAM根據(jù)搜索地 址將保存在RAM中的內(nèi)容送出供比較器與待搜索內(nèi)容比較,如果相等則送出搜索到匹配項(xiàng) 命令;在搜索地址改變的同時,每完成1個數(shù)據(jù)搜索,搜索條目計(jì)數(shù)器就加1,直到完成所 有數(shù)據(jù)的搜索或接收到搜索引擎送來的停止搜索命令為止;當(dāng)計(jì)數(shù)器值加大到最大(RAM中 能保存的最大條目數(shù))時,如果還沒有搜索到相匹配的數(shù)據(jù),則送出搜索結(jié)束命令,通知搜 索引擎,搜索子模塊己經(jīng)完成了本子模塊內(nèi)全部條目的搜索;如果在未完成所有數(shù)據(jù)條目的 搜索時,搜索子模塊找到了匹配條目,比較器立即送出搜索結(jié)束命令,此時地址產(chǎn)生器則自 動停止加l,保持當(dāng)前地址,搜索條目計(jì)數(shù)器自動清零,等待下一次搜索。
6、根據(jù)權(quán)利要求3所述的基于FPGA的高速搜索引擎的搜索方法,其特征在于當(dāng)處理 器接口在設(shè)置或修改搜索內(nèi)容時,搜索引擎自動停止搜索。
全文摘要
本發(fā)明公開了一種基于FPGA的高速搜索引擎及搜索方法。該高速搜索引擎包括多個并行的搜索子模塊,當(dāng)系統(tǒng)發(fā)出開始搜索命令后,各個并行的搜索子模塊同時開始搜索本子模塊的全部條目,直到接收到停止搜索命令或者完成了整個條目的遍歷工作為止停止搜索。本發(fā)明的有益技術(shù)效果是充分利用FPGA內(nèi)部豐富的BlockRAM資源實(shí)現(xiàn)的高速搜索引擎,解決了在中小規(guī)模網(wǎng)絡(luò)設(shè)備中由于使用NSE器件帶來的功耗較高、體積較大、價格昂貴以及采用軟件處理方式帶來的性能極大降低等缺點(diǎn),并且可以使搜索引擎做到性能強(qiáng)大、功耗低、體積小、價格非常便宜,有效降低了對FPGA內(nèi)部有限的觸發(fā)器和查找表資源的占用,從而取得性能和資源占用的平衡。
文檔編號G06F17/30GK101551824SQ20091010383
公開日2009年10月7日 申請日期2009年5月13日 優(yōu)先權(quán)日2009年5月13日
發(fā)明者夏洪君, 釗 楊 申請人:重慶金美通信有限責(zé)任公司