TCAM CAM 說明 原理 結構 Verilog 硬件實現


TCAM 三態內容地址查找存儲器,CAM內容地址查找存儲器。區別在於TCAM多了一級掩碼功能,也就是說可以指定某幾位是dont care。匹配的時候0,1都行的意思。

廣泛應用於數據流處理領域,本文簡要介紹TCAM和CAM的邏輯組成和Verilog實例。

TCAM對於一個帶mask的表項,如:“1000 * * * * ”。

為表達流表項,我們在下載流表之前我們需要做一步計算,

首先將其分解為entry1 和 mask:

 

第二步,令entry1' = entry1 & mask

所以entry1' = 10000000

 


 

 

將entry1' 和mask 下載存入TCAM表項組中:

 

 

 

在做查找的時候,key廣播到每個表項組中。之后將key和當前表項組中的mask做與運算,如key = 10001010. key& mask = 10001010 & 11110000 = 10000000

 

最后再和entry做比較,如果相等則將1寫入結果寄存器。之后所有的結果匯總到優先級選路器中。並得到id編號。

 

 

優先級選路器:

可以用function函數實現:

參考代碼請看這里一個粗糙的實現:https://github.com/qiaosiyi/progASICp4SWITCH/blob/master/tcam.v

這樣我們基本上就可以用Verilog語言去實現了,其次要注意的是,廣播,復制,或者做邏輯運算,都會比較占用時延,不要在一個時鍾周期去做,很可能無法完成時序約束。

建議一個操作使用一個時鍾周期,所以tcam查找我這里延遲了四個周期,但是fully-pipeline。吞吐還是一周期一次。

有時候表項很多,也許優先級選路器timing收不了,其實可以考慮將這一步延長倆周期做。其實本質相當於降低了tcam處理頻率。

關於CAM:

CAM與TCAM類似,CAM是精確匹配,key廣播到每個entry,然后比較出結果匯總到優先選路器中,得到id。比tcam操作步驟減少了一些,而且邏輯資源也減少了很多。

可以在這里看一下我粗糙的代碼:https://github.com/qiaosiyi/progASICp4SWITCH/blob/master/cam.v

========================

qsy

15MAR2019

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM