內容可尋址存儲器MCM69C232及其應用
內容可尋址存儲器CAM(Coment-Addressable Memo-ry)以內容進行尋址的存儲器,是一種特殊的存儲陣列RAM。它的主要工作機制就是將一個輸入數(shù)據(jù)項與存儲在CAM中的所有數(shù)據(jù)項自動同時進行比較,判別該輸入數(shù)據(jù)項與CAM中存儲的數(shù)據(jù)項是否相匹配,并輸出該數(shù)據(jù)項對應的匹配信息。美Motorola公司的CAM芯片MCM69C232在市場上是性價比較高的產品,因而被廣泛地應用于網絡通信、模式識別等領域,其用于數(shù)據(jù)檢索的優(yōu)勢是軟件無法比擬的,可以極大地提高系統(tǒng)性能。
1 MCM69C232芯片介紹
內容可尋址存儲器(CAM)從本質上講是一種基于RAM技術的特殊存儲器,數(shù)據(jù)項存儲在CAM內部的陣列單元中。每個數(shù)據(jù)項的位數(shù)稱為“字寬”,陣列內所有數(shù)據(jù)項的條數(shù)稱為“深度”,CAM的容量通過字寬和深度來表征。MCM69C232設計可存儲4096條寬度為64位的數(shù)據(jù)項。
MCM69C232有兩組數(shù)據(jù)端口:控制端口(controlport)和匹配端口(match port)。控制端口用于處理器(CPU)對CAM表的操作,包括插入、刪除數(shù)據(jù)表項、模式設置和模擬匹配,以及讀取芯片內部狀態(tài)寄存器的信息等。數(shù)據(jù)項的檢索通過匹配端口完成。
盡管基于RAM技術,但CAM的存儲機制卻與RAM大相徑庭。圖1為MCM69C232的結構框圖。圖中MCM69C232沒有用于確定內容存儲單元的地址總線,其地址線A0~A2用于對片內控制寄存器的尋址。處理器通過操作MCM69C232的控制端口(數(shù)據(jù)線DQ0~DQl5)可以讀/寫CAM表中的數(shù)據(jù)項,數(shù)據(jù)項的存儲地址由芯片內部邏輯控制。MCM69C232有兩種工作模式:ATM模式和基本模式。ATM模式主要用于ATM交換機對ATM信元進行虛擬通路標識號/虛擬通道標識號(VPI/VCI)的轉換處理;基本模式主要用于以太網上的IP/MAC地址匹配等數(shù)據(jù)檢索。
MCM69C232芯片的主要特性如下:
◇160 ns的匹配時間;
◇設有屏蔽寄存器;
◇通過芯片級聯(lián)擴展深度;
◇時鐘頻率最高為50 MHz;
◇匹配字寬和輸出結果位寬可自定義;
◇在ATM模式下可進行VPC(Virtual Path Circuits)和VCC(Virtual Connection Circuits)的同時匹配;
◇端口主要分為控制和匹配端口;
◇20Ons的插入時間(在12個輸入數(shù)據(jù)項隊列未滿的情況下);
◇12ms的初始化時間(在設置了快速寫入模式后);
◇具有符合IEEE標準1149.1的測試端口(JTAG)。
2 MCM69C232芯片的使用
在基本操作模式下,MCM69C232讀取輸入數(shù)據(jù)并與CAM表中的所有表項相比較。無論匹配項找到與否,當比較完成后,MC(Match Complete)引腳均有效。如果找到了匹配項,則MS(Mateh Successful)引腳有效,同時在MQ總線上輸出與匹配數(shù)據(jù)項相關的數(shù)據(jù);如果沒有找到,則MQ總線保持高阻態(tài),以便級聯(lián)CAM芯片來擴展存儲深度。
MCM69C232上電后,默認工作模式為基本模式。在進入數(shù)據(jù)檢索操作之前,芯片必須先完成幾個啟動操作過程:首先,要設置全局屏蔽寄存器,定義匹配字寬和輸出結果位寬;其次,要選擇數(shù)據(jù)表項的寫入模式,即快速寫入模式還是動態(tài)寫入模式;再次,要把用戶需要的數(shù)據(jù)項(共64位,包括匹配字節(jié)和與其對應的輸出結果字節(jié))逐次裝入CAM表中。
CAM表數(shù)據(jù)項寫入模式的選擇,往往是在寫入速度和啟動匹配操作花費的時間中取個平衡??焖賹懭肽J剑S糜趯⒋罅康臄?shù)據(jù)項初始寫入CAM表中;而動態(tài)寫入模式,則常用于啟動匹配后往CAM表中插入少量的數(shù)據(jù)項。用戶通過操作控制口4個I/O寄存器來插入或刪除CAM表項,當有異常狀態(tài)出現(xiàn)時,可以從標志寄存器和錯誤代碼寄存器反映出來。MCM69C232內部的寄存器如圖2所示。
CAM表的匹配位取決于全局屏蔽寄存器的定義。屏蔽寄存器為0的位要求數(shù)據(jù)項的對應位作匹配操作;為1,則對應位無需匹配。典型的應用中用戶總是把數(shù)據(jù)項的高位序位定義為“待匹配字節(jié)”,低位序位定義為“結果輸出字節(jié)”。64位中的任何位都可以定義為“匹配操作”,但實際上輸出到匹配口MQ0~MQ31總線上的總是最低32位數(shù)據(jù),并非可任意編程輸出的。如果設置的輸出結果字節(jié)超過32位,則是無意義的。
通常情況下,MCM69C232通過寫控制口數(shù)據(jù)和指令來準備匹配操作。一般步驟是把數(shù)據(jù)項裝入4個I/O寄存器,然后往操作代碼寄存器寫入操作代碼,即可完成一種指令的操作。指令完成后,CAM表的內容可能會被修改,標志寄存器的相應位會被置位,錯誤代碼寄存器會返回錯誤碼,當使能時,還會觸發(fā)中斷。芯片的操作指令如表1所列。
復位。復位同步于主時鐘的上升沿,一個時鐘周期的復位就能清空CAM表和輸入數(shù)據(jù)項隊列,置標志寄存器為1C,錯誤代碼寄存器為FFFF,幾乎滿寄存器為FFF,并清除中斷屏蔽??刂瓶跁r序。訪問控制口如同處理器訪問RAM一樣,時序較為簡單。
匹配口時序。訪問匹配口分兩種情況:一種是匹配字節(jié)小于等于32位,只用LH/SM信號裝載匹配數(shù)據(jù),LL信號無用;另一種是匹配字節(jié)大于32位,先用LL信號裝載匹配數(shù)據(jù)低位部分,再由LH/SM信號裝載高位部分。匹配結果由MC信號和MS信號指示,使能G信號讀取匹配結果數(shù)據(jù)。匹配口時序見參考文獻。
兩口同時匹配??刂瓶谀M匹配和匹配口匹配同時進行時,匹配口優(yōu)先權較高。另外控制口模擬匹配操作之前要求輸入隊列為空,以便接收結果。深度擴展。芯片簡單級聯(lián)即可擴展深度,具體的擴展連線方法請參見參考文獻。
3 MCM69C232芯片的應用
3.1 MCM69C232在交換機中的應用
在以太網上.交換機維護一張用于二層交換的地址表(通常稱為“CAM表”),該表維護MAC地址與出接口的對應關系。樣每當接收到一個以太網數(shù)據(jù)幀,交換機就會進行判斷。如果該數(shù)據(jù)幀不是發(fā)送給自己的,則根據(jù)數(shù)據(jù)幀的目的MAC地址查詢CAM表;如果能命中(所謂命中,就是在CAM表中找到與該MAC地址對應的轉發(fā)項),則根據(jù)查詢的結果(通常是一個出接口列表)進行轉發(fā);如果不能命中,則向所有端口廣播該數(shù)據(jù)幀。
交換機的這張CAM表可以通過多種方式獲得,比如靜態(tài)配置、動態(tài)學習。針對多播,還可以通過各種多播協(xié)議(如IGMP窺探、GMRP協(xié)議等方式)獲得(多播轉發(fā)表不能通過學習獲得,而且多播轉發(fā)項跟普通轉發(fā)項不同,與其對應的出口可能不只一個,而是一個出口集合);但對于單播,最重要的一種建立方式是動態(tài)學習。
當交換機接收到一個數(shù)據(jù)幀時,提取出該數(shù)據(jù)幀的目的MAC地址,并以此為根據(jù)進行CAM表查詢。如果能查找到結果,則根據(jù)結果進行數(shù)據(jù)幀的轉發(fā);如果不能命中,則對除接收端口外的所有端口進行復制。在進行數(shù)據(jù)轉發(fā)的同時,交換機還進行一個學習的過程。它把數(shù)據(jù)幀的源MAC地址提取出來,查詢CAM表,看CAM表中是否有針對該MAC地址的轉發(fā)項。如果沒有,則把該MAC地址和接收到該MAC地址的端口綁定起來,插入CAM表項。這樣當接收到一個發(fā)送到該MAC地址的數(shù)據(jù)幀時,就不需要向所有端口廣播,而僅向這個端口發(fā)送即可。需要注意的是,數(shù)據(jù)幀的轉發(fā)是依據(jù)目的MAC地址查詢CAM表,而CAM表的學習則是以源MAC地址為依據(jù)的。
之所以在交換機中使用CAM,是因為交換機對性能要求特別高。交換機中的嵌入式實時控制系統(tǒng)的性能主要取決于兩方面:硬件平臺的運算性能和算法的優(yōu)越性。其中,硬件平臺的運算性能最為關鍵,這一點在交換機中表現(xiàn)得尤為突出。按照設計要求,以太網幀的MAC地址的檢索時間一般都是μs級,因此首先要保證數(shù)據(jù)檢索任務的響應速度;除了十分繁重的數(shù)據(jù)檢索任務外,交換機還必須完成SNMP(Simple Network Management Pmtocol)協(xié)議處理、命令行處理等任務,所以還必須解決數(shù)據(jù)檢索對系統(tǒng)資源的占用問題。利用軟件實現(xiàn)對以太網幀的MAC地址檢索并不復雜,但由于檢索次數(shù)頻繁,大量的系統(tǒng)資源被占用,致使系統(tǒng)的響應速度大大降低,滿足不了大流量數(shù)據(jù)通信的要求。因此純軟件算法解決不了數(shù)據(jù)檢索部分占用大量資源的問題,為提高系統(tǒng)的響應速度,
必須將這數(shù)據(jù)檢索的任務分離出來由硬件實現(xiàn),而協(xié)議處理部分仍由CPU完成。數(shù)據(jù)檢索模塊和協(xié)議處理模塊并行工作,利用硬件實現(xiàn)數(shù)據(jù)檢索還可以提高檢索速度,降低系統(tǒng)資源的占用率。在這里CAM的優(yōu)勢就體現(xiàn)出來了。
3.2 檢索操作
當進行MAC地址檢索時,CPU首先以MAC地址為關鍵字通過MAC-CAM表的檢索得到對應的索引值,然后再根據(jù)索引值找到RAM表中該MAC地址對應的相關信息的存儲位置,并由此地址獲得相關配置信息。在RAM中的相關配置信息中可以存放諸如MAC地址、用戶端口、有效標志域等其他信息。CAM表與RAM的映射關系如圖3所示。
按協(xié)議規(guī)定MAC地址占48位,表示為6字節(jié)的數(shù)組,故對于MAC地址的匹配操作,屏蔽字設為0x0000_0000_0000_FFFF,即48位匹配。屏蔽字的設定必須在CAM初始化時完成。在執(zhí)行匹配操作前,CAM須進行初始化。MCM69C232上電后,默認工作模式為基本模式,因此不必再設置工作模式。前面已提到過,CAM中MAC表的形成是通過自學習得到的,因此無需向CAM表中寫入數(shù)據(jù)項。
匹配操作通過對匹配口讀/寫來完成。匹配口數(shù)據(jù)線MQ只有32位。由于MAC地址占48位,因此需要兩次寫操作才能完整地將一個MAC地址表達出來。當進行MAC地址檢索時,CPU先向匹配口寫入MAC地址的低32位數(shù)據(jù),其中高16位有效,低16位可以為任意值;緊接著CPU向匹配口寫入高32位數(shù)據(jù);隨后CPU讀匹配口,即可得到匹配結果。
結語
采用內容可尋址存儲器MCM69C232,極大地提高了數(shù)據(jù)檢索速度.而這是用純軟件檢索算法所不能比擬的。設備的數(shù)據(jù)處理能力滿足了大流量網絡通信的要求,使產品獲得了良好的社會效益和經濟效益。
評論