
利用硬件進行數(shù)據(jù)檢索,通常采用兩種策略一種是利用FPGA或CPLD等可編程邏輯器件定制數(shù)據(jù)檢索單元。本系統(tǒng)兩種地址的數(shù)據(jù)結構并不復雜,定制簡單數(shù)據(jù)結構的檢索單元體現(xiàn)不了可編程邏輯器件功能強大、靈活性強等優(yōu)越性,并且這類器件的開發(fā)難度相對較大,完成后還需要相當長一段時間進行測試。另一種策略是選擇CAM實現(xiàn)數(shù)據(jù)檢索。兩者比較,本系統(tǒng)采用CAM。根據(jù)系統(tǒng)設計,本交換機采用兩塊CAM實現(xiàn)數(shù)據(jù)檢索功能,MAC-CAM用于以太網幀的MAC地址檢索,ATM-CAM用于ATM信元的VPI/VCI檢索,如圖2所示。
2.2 檢索算法設計
下面根據(jù)系統(tǒng)設計方案,以MAC-VP/VC表為例說明以太網側數(shù)據(jù)檢索功能的實現(xiàn)。如圖3所示,MAC-VP/VC表由硬件、軟件兩個子模塊構成。MAC-CAM表實現(xiàn)MAC地址到偏移地址的查詢,這部分由硬件實現(xiàn);RAM表實現(xiàn)偏移地址到配置信息的查詢,這部分由軟件實現(xiàn);兩者通過偏移地址耦合。本系統(tǒng)將每一個VP/VC認為是一個用戶端口,VP/VC的值保存在用戶端口域。
當進行MAC地址檢索時,CPU首先以MAC地址為關鍵字通過MAC-CAM表的檢索得到對應的偏移地址a,然后再根據(jù)公式(1)得到RAM表中該MAC地址的存儲位置,并由此地址獲得相關配置信息。RAM表中標志域1、標志域2分別表示用戶MAC地址的狀態(tài)信息,限于篇幅這里不詳述了。
RAM地址=基地址 + a×b (1)
公式(1)中,基地址是RAM表的起始地址;a是通過MAC-CAM表查詢得到的偏移量,即MAC地址的索引值;b表示RAM表中的一個表項的寬度為多少字節(jié)。
與MAC-VP/VC表的實現(xiàn)基本相同,VPI/VCI通道表的實現(xiàn)也分為兩部分,一部分由硬件CAM實現(xiàn),另一部分由軟件實現(xiàn)。執(zhí)行VPI/VCI檢索時,CPU先通過CAM得到某VPI/VCI的偏移地址,然后再根據(jù)該偏移地址得到RAM表中保存的具體配置。
正是通過MAC-VP/VC表和VPI/VCI通道表,本系統(tǒng)實現(xiàn)了ATM網絡與E-MAN的交換。
2.3 檢索算法的實現(xiàn)
按協(xié)議規(guī)定MAC地址占48位,表示為6字節(jié)的數(shù)組。圖4和圖5分別表示了MAC-CAM表中MAC地址的高32位數(shù)據(jù)和低16位數(shù)據(jù)的數(shù)據(jù)結構。
圖6所示為MAC地址索引項的數(shù)據(jù)結構,它分為兩部分:最高位為匹配標志(MS),0表示匹配成功,1表示匹配失敗;匹配輸出的低16位為MAC地址的索引(macIndex),用戶可按需要對其進行定義,如MAC地址00-3C-CD-17-65-AB的索引值為0x03EF。
不同的協(xié)議要求,VPI/VCI表的數(shù)據(jù)結構與MAC表的數(shù)據(jù)結構并不相同。但由于處理方式相近,這里就不贅述了。
MCM69C233的匹配規(guī)則由通用屏蔽字(Global Mask)制定。進行檢索時,MCM69C233將檢索內容與通用屏蔽字進行按位或運算,1表示屏蔽該位的值,0表示對該位敏感。從上文可看到,兩種數(shù)據(jù)檢索的數(shù)據(jù)結構大不相同,因此需要不同的匹配規(guī)則。根據(jù)本系統(tǒng)設計要求,ATM信元的檢索只對VPI/VCI敏感,因此通用屏蔽字為0xFF00_0000_FFFF_FFFF,即忽略GFC字段和PHY地址標識段。對于MAC地址的匹配操作,通用屏蔽字為0x0000_0000_0000_FFFF,即48位匹配。通用屏蔽字的設定必須在CAM初始化時完成。
在執(zhí)行匹配操作前,CAM須進行初始化。由于ATM-CAM和MAC-CAM的工作模式不同,因此兩者的初始化過程亦不盡相同。下面以ATM-CAM為例,用偽碼形式說明初始化過程。
atmCamInit()
{
Set ATM_CAM working on ATM mode;
Set the Global mask register for VPI/VCI translation;
Set the ATM_CAM to fast entry mode;
Input VPC table;
Initialize VPC table;
}
對于ATM-CAM,首先必須設定工作模式,ATM-CAM工作于ATM模式;然后對通用屏蔽字進行設置,以保證正確的匹配規(guī)則;緊接著,將ATM-CAM設為快速輸入模式(Fast entry mode,當需要將大量數(shù)據(jù)寫入CAM時,該模式能加快輸入速度),將預先定義好的VPI/VCI-Channel Code表寫入CAM;最后執(zhí)行表初始化指令。至此,ATM-CAM能夠正常工作了。前面已提到,MAC表的形成是通過自學習得到的,因此MAC-CAM的初始化并不需要該過程。另外,MAC-CAM工作在基本模式,MCM69C233上電后,默認工作模式為基本模式。因此MAC-CAM的初始化只需要兩步,通用屏蔽字的設置和表初始化。
圖4、圖5和圖6
當進行MAC地址檢索時,CPU先向匹配口寫入如圖4所示的低32位數(shù)據(jù),其中高16位有效,低16位可以為任意值;緊接著CPU向匹配口寫入如圖5所示的高32位數(shù)據(jù);隨后CPU讀匹配口,就可得到如圖6所示的結果。如果被查詢的MAC地址存在,則MS位為0,macIndex為有效輸出;如果被查詢的MAC地址不存在,則MS位為1,macIndex為輸出無效。上述過程可通過偽碼表示如下:
STATUS macCamCheckEntry
{
Write low 32-bit word to match port in first cycle
Write high 32-bit word to match port in second cycle
Read 32-bit result from match port
If MS flag is “1”
There is no such Entry
Else return macIndex
}
3 運行結果
某交換機的運行結果表明, 采用CAM, 交換機的以太網端口能工作在100Mbps,基本滿足設計要求;如采用軟件搜索方法, 則只能達到30Mbps。





