TCAM(三態內(nei)容尋址存(cun)儲器(qi),ternary content-addressable memory)作為一個基本(ben)功能廣泛(fan)應用(yong)于(yu)網(wang)卡、路由器、交換(huan)機、防(fang)火(huo)墻等網(wang)絡設備中,通常用(yong)于(yu)路由查找、包過濾等場景。具有并行比較、查找速度快、支(zhi)持(chi)模糊匹配(pei)的優勢。
TCAM的(de)基本(ben)實(shi)現方法如(ru)圖所(suo)示:

TCAM實現的基本過(guo)程包含搜索廣播、匹配比較、優(you)先(xian)級編碼器三個部分。其中使用key RAM、mask RAM分(fen)別存儲報文分(fen)類所需(xu)的關鍵字(key)和查找掩碼(mask)。當報文進入網絡設備時,使用(yong)報文識別(bie)出來的報文特征如五元組(zu)進行組(zu)合,得(de)到報文的tuple,將報文的(de)tuple進行(xing)掩碼(ma),得(de)到匹配(pei)的特(te)(te)征值(zhi)。使用掩碼(ma)后(hou)的特(te)(te)征值(zhi)與(yu)配(pei)置的key進行(xing)匹配,得到若干(gan)匹配結果(guo)。將匹配結果(guo)進行(xing)優先級排序。根(gen)據排序結果(guo)獲取報文(wen)動(dong)作和(he)去向。上述(shu)過程如(ru)下圖所示(shi)。

四個過程通常使(shi)用(yong)4級pipeline進行實現。
考慮邏(luo)輯優化,我(wo)們(men)可以將4級pipeline壓縮為3級(ji)。將mask和key壓(ya)縮(suo)為同一級(ji)pipeline實(shi)現,使用一種替代邏輯進行實(shi)現: = (~Key & Mask) | (Key & Tuple)。減少一級pipeline可以(yi)減少資源消(xiao)耗(hao)。
壓(ya)縮后TCAM分為(wei)三(san)個過程

TCAM表在邏輯實現中(zhong)的優(you)化
資源優化:對(dui)于(yu)一些(xie)小規格設備(如(ru)小于(yu)等于(yu)64條TCAM),可以直(zhi)接使用片上寄存器實(shi)現mask表和(he)key表;對于中(zhong)等(deng)規格設(she)備(如數(shu)萬條TCAM),可以使用(yong)片上BRAM實現mask表(biao)和key表;對(dui)于(yu)大規格(ge)設備(如(ru)百(bai)萬條(tiao)TCAM),在(zai)進(jin)行芯(xin)片設計時通常會(hui)使用(yong)廠商特種芯(xin)片庫進(jin)行非易失性存儲,在(zai)進(jin)行FPGA設計時會使(shi)用廠(chang)商IP進(jin)行設計。
功(gong)耗優化:對(dui)于大規模(mo)設(she)備,一(yi)個報文(wen)只會命中很小(xiao)比例的表項,但是會進(jin)行所有(you)的表項匹配(pei),可以通過分組分時匹配(pei),犧牲(sheng)報文(wen)轉(zhuan)發速率實現功(gong)耗降低。
時序(xu)(xu)優(you)化:對于大(da)規模設備,命(ming)中結(jie)果(guo)(guo)進(jin)(jin)行優(you)先級排(pai)序(xu)(xu)的過(guo)程,需要對上百萬位寬的匹配結(jie)果(guo)(guo)進(jin)(jin)行優(you)先級排(pai)序(xu)(xu),對時序(xu)(xu)是(shi)極大(da)的挑戰。可以通過(guo)分組匹配搭配分層匹配,層層獲取排(pai)序(xu)(xu)結(jie)果(guo)(guo),經過(guo)多(duo)個時鐘周期得到(dao)優(you)先級排(pai)序(xu)(xu)結(jie)果(guo)(guo)。