用FPGA打造刀鋒伺服管理控制器
隨著電信及企業網路的不斷融合,網路架構變得更加簡化。刀鋒平台透過乙太網實現網路匯聚,從1G/10G擴充至40G/100G。刀鋒管理控制器則透過標準智慧平台管理界面(IPMI)來滿足不斷變化的需求。
藉由整合FPGA的PowerPC與標準及客製化周邊核心,打造出一款靈活的刀鋒管理控制器,創新各種嵌入式系統配置,推動網路匯聚進軍主流市場。此FPGA設計充分運用包括系統重新組態、嵌入式處理器、IP核心以及刀鋒常見用於機架管理服務的嵌入式Linux韌體。
藉由FPGA設計平台核心,可以快速將UART、I2C匯流排、記憶體界面、乙太網路MAC/PHY組合,以及負責電壓與溫度變化的系統監視器加以實例化,並能夠創造客製化核心。
深層資料包處理架構
新世代內容處理平台是一種高度可編程、模組化的高速硬體系統,可處理各種網路應用和多種同步功能,如圖一所示。機架整合了深層封包處理器刀鋒、應用服務處理器刀鋒、冗餘機架管理模組,以及一系列可採用不同網路界面及組態的界面模組。
《圖一 新世代深層封包檢測處理系統支援將服務控制、安全性及傳輸功能轉換成整合式服務和功能》
|
機架與刀鋒管理
機架與刀鋒管理受控于冗餘機架管理模組;該模組使用智慧型機架管理匯流排(ICMB),可擴展IPMI智慧平台管理功能,從而滿足高安全性的需求。與智慧型機架管理匯流排連接的每個刀鋒或模組(電源供應器模組除外),包含一個IPMI管理控制器與機架管理模組,共同監控環境與狀態。
我們的管理控制器系列產品是根據共通需求所設計的,包含機架管理控制器(CMC)、處理器刀鋒上的處理器管理控制器(PMC)以及界面模組上的界面管理控制器(IMC),如圖二所示。
《圖二 安全可靠的ICMB機架管理系統》
|
網路連接功能
機架具有豐富的網路連接功能。在控制層,每個刀鋒對應4條Gigabit乙太網路鏈路。在資料層,透過XAU I(4×3.125Gbps),每個刀鋒可對應16個高速通道,提供4條10GB乙太網路鏈路。隨著未來頻寬不斷擴展,每個通道可達到10GBASE-KR(每個通道10.3125Gbps)。
刀鋒管理服務
機架管理解決方案採用分層結構,基本上,IMC和PMC是以與相對應的模組與刀鋒上的標準IPMI機板管理控制器(BMC)相同的方式運作。針對每個刀鋒,控制器使用IPMI指令監控電壓和溫度,提供一個電源控制界面,進行刀鋒網路界面配置以及生產資料的傳輸溝通。
機架管理控制器架構
作為機架管理中心,CMC與IMC和PMC共用IPMI BMC機板層級的功能,以及其他更高階的機架管理功能。雙冗餘CMC以作業中/待機容量運作,可實現自動化系統正常監控與故障復原。此種機架管理功能使CMC能夠為所有刀鋒和模組發現、盤存並提供電源許可。為防止對現有電源的過度使用,在作業狀態中的CMC可管理整個機架的電力需求,使IMC和PMC僅在擁有剩餘電量時供電。風扇架和電源供應器模組使用一個機架I2C匯流排,在作業狀態中的CMC可確保整個機架得到充足電源供給與冷卻功能。
一旦檢測到機架內有新刀鋒,CMC將使用發現通訊協定來尋找並確認每個刀鋒的位置。發現通訊協定通過交換IPMI資訊,可以檢索出刀鋒或模組的序列號碼、機種型號以及功能清單。如果能夠準確無誤地找到刀鋒與可供應的電源,發現通訊協定將隨後發出一個電源許可指令。CMC對來自每個IMC或PMC的事件進行監控,以檢測是否存在警告或緊急情況,並收集和記錄在事件日誌中。
主視窗管理和指令列界面
機架管理系統的主用戶界面是通過一個在應用處理器刀鋒上運作的視窗管理或指令列界面(WMI或CLI),以提供豐富的用戶功能組。應用處理器刀鋒通常占一個機架插槽,或者通過控制層網路連接與機架管理控制器進行遠端通訊。CMC可自動對機架進行健康與環境監控並通過前面板LED顯示監控結果,而特定目的應用的用戶則從處理器刀鋒進行控制。該刀鋒將與包括CMC的所有刀鋒和模組進行詢問作業,以向用戶提供環境與運作狀態資訊。CMC包含RS485 IPMI代理服務,可將控制層上的應用處理器刀鋒指令經RS485 IPMI路徑傳送到目標刀鋒。
提高CMC與刀鋒的連接安全性
每個CMC與每個刀鋒都有5個獨立的點對點RS485來連接。與匯流排拓撲不同,即便某個刀鋒出現故障也不會讓CMC與其他刀鋒之間的通訊中斷,因此這種架構不僅提高了防止竊聽的安全性、將頻寬爭用降至最低,同時亦提高可靠性。我們的冗餘建置方案要求待機的CMC持續監控作業中的CMC的運作狀態。一旦檢測到故障,待機的CMC透過其獨立放射狀的RS485鏈路連結取代作業中的CMC,以保持機架正常運行。(待續)
管理控制器硬體架構
控制器具有通用硬體功能,包括FPGA多重啟動與應變功能、處理器、SDRAM與NOR快閃記憶體配置、中斷控制器、序列控制台UART、ICMB RS485客製化核心、Gigabit乙太網路鏈路、系統監控感測器以及本機I2C匯流排。
在控制器設計上,可使用一個微處理器硬體規格檔來共用硬體平台,這個檔定義了嵌入式處理器核心實例化、連接和參數化等。微型開機載入(mini boot loader)程式位於內部模塊隨機存取記憶體(BRAM)中,其可將U-Boot載入程式從快閃記憶體複製到DDR記憶體,然後跳至U-Boot進入點。
運用FPGA的多重啟動配置,系統無需管理位元流載入的處理器,便可實現真正的系統內FPGA升級。外部快閃記憶體可支援位於RS針腳所確定位址的「黃金」和「升級」位元檔。我們的目標是設計一款可組態的高可用性系統,實現該目標的必要條件是FPGA能在升級鏡像出現故障的情況下,利用黃金鏡像回覆並重新進行組態。
經組態後,處理器核心可在400MHz速度下運作,交錯型系統與MPLB匯流排可於133MHz速度下運作,TEMAC則在125 MHz速度下運作,而DDR2則266 MHz速度下運作。硬體系統包含CMC、IMC和PMC所需的全部功能(如圖三所示)。快閃記憶體具有足夠的存儲空間,可容納包括CMC、IMC和 PMC組態等的多種應用程式。
客製化IP核心
在軟體發展工作啟動後,我們隨後開發了客製化IP核心,以滿足各種需求。雖然現成的處理器核心能滿足功能性需求,但簡單處理器核心的多個實例(如GPIO)可能會導致處理器本機匯流排(PLB)超量載入與較高的晶片利用率。不用建製多種不同IP界面,借助CIP精靈,可開發整合至XPS中的單一超級GPIO模組。透過讓多個GPIO暫存器共用單一IP界面,將大量內外部戰存器匯整到單一客製化處理器核心中,其中包括修改、擦除以及內外部GPIO暫存器等。
我們也可使用CIP精靈來開發我們的特定目的客製化IP。該精靈不僅建置了必要的檔(如 MPD、PAO、HDL範本)與目錄結構,而且還有助選擇IP界面服務與用戶邏輯界面,並可產生模擬所需的匯流排功能模組。
《圖三 CMC(上)、IMC(中)和 PMC(下)的通用硬體架構》 |
IPMI訊息傳送
圖四顯示的是機架管理控制器及其相應的系統界面。這裡使用客製化ICMB協同處理器核心,向處理器管理及界面管理刀鋒控制器發送IPMI訊息。GPIO用於監控前面板、背板、冗餘、聯鎖裝置以及內部暫存器,而TEMAC則用於控制層乙太網交換器管理。I2C則用於讀取本機模組EEPROM,並對機架風扇和電源進行遠端監控。UART負責前面板用戶連接、除錯控制臺,以及處理器刀鋒上的CPU的代理UART。
智慧型機架管理匯流排的即時通訊協定要求成為我們需要解決的問題,因為嵌入式Linux作業系統本身不能保證中斷時延。在解決方案中,採用包含PicoBlaze 8位元定序器的客製化ICMB處理器核心,作為ICMB資料鏈結與實體層協同處理器,可減輕處理器的負載。如圖五所示,這種常常被人們忽視的資源,可與BRAM指令庫、暫存器、通訊FIFO、UART以及計時器配合使用。
這裡可以狀態機形式編寫PicoBlaze代碼,用以監控傳輸FIFO與控制暫存器,建置碰撞避免及倒退機制演算法,並管理五個UART。
《圖四 CMC系統介面》
|
《圖五 定制ICMB PicoBlaze處理器核心》
|
資料封包在多個UART上同步進入。PicoBlaze保存每個通道的個別狀態資訊。資料封包和資料位元組的開始/結束提示將連同通道數寫入RX FIFO中,一旦資料處於可用狀態,處理器將獲得中斷資訊。RX FIFO將8位元資料、5位元狀態(資料封包開始/結束、錯誤提示、除錯資訊)、以及3位元通道數資訊傳送至處理器。處理器會對資料封包數據進行解多工,如果有效,會將資料上傳至服務代理。另外,利用CIP精靈可建立一個匯流排功能模式,無需開發廣泛的測試指標或全系統模擬,就能建立匯流排模擬環境,並驗證週邊核心的運作情況。
這裡可使用PicoBlaze組合語言程式的輸出對BRAM程式進行初始化,也可使用匯流排功能語言(BFL)描述PLB匯流排傳輸,來產生一個PicoBlaze重新設定,將數據傳至TX FIFO,並寫入控制暫存器以便在一個通道上傳輸資料。通過回送傳輸和接收埠的方式,可簡單地對接收通道和RX FIFO的運作進行驗證。
韌體架構
對處理器核心來說,有許多嵌入式作業系統可供選擇,包括Linux。重新設定之後,處理器開機程序開始於小型內部BRAM中的重設向量空間。映射到該空間的微型開機載入程式(12KB),負責在NOR快閃記憶體的「升級」或「黃金」位址上尋找一個有效UBoot鏡像。由於黃金鏡像僅在工廠生產過程中進行編程,因此選擇這種方案可避免快閃記憶體編寫新UBoot程式時出現故障。處理器一旦檢測到並確認適當的UBoot鏡像後,便將其載入SDRAM並予以執行。隨後,UBoot將載入適當的Linux鏡像檔並最後一次通過控制指令。此時,完全可組奈的Linux核心將載入並開始特定應用處理流程。
設計過程中,我們針對開機順序將幾種選項列入考量範圍。比如,微型開機載入程式無需使用BRAM,即可將NOR快閃記憶體映射到重設向量區。如此可以節省一些BRAM空間,但處理器將依賴於有效的NOR快閃記憶體部分和鏡像,而該鏡像在快閃記憶體故障時可能被毀壞。同樣,也可透過直接載入並執行Linux作業系統,從而避免採用UBoot。雖然這種方法是更直接的開機順序,但UBoot的特性在開發過程中對原型設計和除錯極為重要。
在最初的設計階段中,找出並選擇正確的開放源代碼tree是其挑戰。因此,我們選擇使用包含最新修改以及I2C、ENET與LLTEMAC驅動程式的UBoottree Linux開發分支,並開始研究Linux主系統目錄tree及其對驅動程式的支援。
《圖六 CMC韌體架構》 |
為了構建UBoot與Linux,一套Linux發行套件、以及可進行交叉編譯、連結並建構處理器可執行程式腳本與工具的Linux機器,是有其必要的。現在有幾種Windows虛擬機器可在Windows環境下執行Linux。另外一個好處是,一旦建立一個機器,便可備份或複製虛擬機器的磁片鏡像,以用於其他開發機器上。
儘管Linux核心提供厚實基礎,但實際上應用的全部工作負載都是由驅動成器和應用程式來處理。I2C與LLTEMAC驅動程式可將Linux IP堆疊連結至硬體,而CloudShield ICMB驅動程式則可將客製化的PicoBlaze IP核心連結至Linux驅動程式子系統中。這裡可以使用Busybox作為一種標準Linux應用,並針對CMC機架管理增加三個新的CloudShield應用,如圖六所示。
設計、構建、驗證與供應
快速設計、開發並提供複雜的嵌入式系統解決方案,可借助FPGA中功能強大的處理器、現成的IP以及客製化IP的快速設計與驗證優勢。藉由通用硬體設計方案,可開發多種嵌入式系統組態。使用Linux和整合式開發環境的好處在於,能夠充分運用現有的開放源碼服務、驅動程式和函式庫,專注開發各種目標應用。也因此,快速修改內部FPGA嵌入式架構、輕鬆在系統中進行升級,以及運用最新軟硬體權衡使用界線,正在改變目前的嵌入式系統設計。
(本文由美商賽靈思Xilinx所提供)