1、概述
龍芯系列CPU是中國科學院計算技術研究所自主研發(fā)的高性能通用CPU,。龍芯2號超標量處理器及其IP系列主要面向桌面應用和部分高端嵌入式應用,。其中,龍芯2E微處理器是一款實現(xiàn)64位MIPS III指令集的通用RISC處理器,。其綜合性能已經(jīng)達到高端奔騰III處理器以及中,、低端奔騰4處理器的水平。目前,,采用龍芯系列處理器的個人計算機,、便攜式計算機和嵌入式計算機已經(jīng)得到推廣。
先進電信計算構(gòu)架(Advanced Telecom ComputingArchitecture, ATCA)作為開放式,、可互操作的電信行業(yè)標準,,正在成長為新一代電信級模塊化通信平臺構(gòu)架。目前,,多種構(gòu)架的主流處理器在此平臺上都有應用,,如Intel公司的Xeon系列x86處理器,F(xiàn)reescale公司的MPC8xxx系列PowerPC處理器,。本文介紹的采用龍芯2E處理器的高級夾層卡(Advanced Mezzanine Card, AMC)計算模塊是ATCA規(guī)范定義的標準模塊,,可以直接應用于符合該規(guī)范的系統(tǒng),。基于ATCA的廣泛用途和良好的發(fā)展前景,,這種模塊必將大大擴展龍芯系列處理器在電信服務,、信號處理等高端領域的應用。
2,、ATCA 系統(tǒng)
2.1 ATCA平臺
ATCA標準即先進的電信計算平臺,,是為下一代融合通信及數(shù)據(jù)網(wǎng)絡的應用提供一個高性價比的,、兼容的,、可擴展的硬件構(gòu)架,同時以模塊化結(jié)構(gòu)的形式呈現(xiàn),,以支持符合現(xiàn)代傳輸需求的技術或應用,。ATCA標準由一個核心規(guī)范PICMG3.0和一系列輔助規(guī)范組成。在核心規(guī)范中定義了機械結(jié)構(gòu),、散熱管理,、電源分配和系統(tǒng)管理,而輔助規(guī)范定義了多種交換互聯(lián)的構(gòu)架,。與同是PICMG(PCI Industrial Computer Manufacturers Group) 組織制定的前一代標準CompactPCI相比,,ATCA提供了更大的帶寬、功率與更好的冷卻能力,,節(jié)省了更多電路板面積,,整合了基底層系統(tǒng)管理功能,同時也移除了可能導致單點失效的并行總線,。表1列出了2代標準部分內(nèi)容的比較,。
2.2 AMC模塊
AMC適用于但不僅限于ATCA載板。其基本規(guī)范定義了機械結(jié)構(gòu),、管理,、供電、散熱和交換互聯(lián),。AMC通過GbE, PCI Express和Serial RapidIO等高性能串行通道互聯(lián),,支持熱插拔,不丟失數(shù)據(jù),。AMC模塊采用前操作方式,,插拔過程不會對背板或其他板卡產(chǎn)生影響,擁有智能平臺管理接口(Intelligent Platform Management Interface, IPMI),,保證ATCA載板與模塊之間的兼容,。通過AMC可以實現(xiàn)模塊化設計并提高系統(tǒng)靈活性。又由于其性價比及其他優(yōu)點,,因此AMC越來越多地被看作設備中的現(xiàn)場可更換單元(Field Replaceable Units, FRU),。種類豐富的AMC以多樣的功能適用于廣泛的市場,尤其能夠滿足小型化和低成本的需求。AMC夾層卡的典型功能包括電信接口,、處理器(CPU, DSP, FPGA)與存儲,。
3、模塊整體框架
該模塊是一個功能完整,、可以獨立工作的小型化計算機系統(tǒng),。該系統(tǒng)主要由龍芯2E處理器、內(nèi)存模塊,、北橋和相應的外圍接口組成,,其結(jié)構(gòu)如圖1所示。
龍芯2E處理器的外圍接口主要包括64位SYSAD 總線和DDR SDRAM控制器總線,,系統(tǒng)其他接口均需要由橋片提供,。為了使系統(tǒng)具備更加先進的通信接口和靈活配置的能力,采用FPGA作為北橋芯片的方案,。利用FPGA具有豐富I/O資源的特點,,通過對FPGA的開發(fā),系統(tǒng)具有可以用于配置,、監(jiān)測和調(diào)試的RS232串口,、以太網(wǎng)和JTAG-UART接口,同時還具備高帶寬,、低延遲的高速RapidIO接口,。其中,F(xiàn)PGA融合了傳統(tǒng)意義的北橋,、南橋的部分功能,,形成適合本模塊應用的接口芯片組。板載的Flash ROM用于存儲啟動程序,、操作系統(tǒng)和其他用戶需要存放的代碼,。
4、關鍵技術特點
4.1 芯片組
芯片組設計是實現(xiàn)模塊功能的重點和難點,。由于本模塊中沒有分離的北橋和南橋,,因此后文將其更準確地表示為“芯片組”。盡管處理器一直是研究和市場的熱點,,但芯片組會直接影響最終系統(tǒng)的功能和性能,,在系統(tǒng)中同樣具有十分重要的地位。
龍芯2E處理器采用64位SYSAD總線,,而ATCA和AMC規(guī)范定義了系統(tǒng)內(nèi)互聯(lián)的標準是RapidIO,、PCI Express、InfiniBand和交換式以太網(wǎng)等基于串行通信和包交換的通信協(xié)議,。目前,,實驗室已有的ATCA構(gòu)架的實驗平臺是基于RapidIO協(xié)議構(gòu)建的,。因此,模塊設計規(guī)范化的要求和實際條件決定芯片組必須具備以下特征:
(1)為處理器提供SYSAD總線接口,;
(2)為模塊提供串行RapidIO接口,;
(3)可以修改通信協(xié)議,以方便接入其他ATCA系統(tǒng),。
市場上并沒有同時滿足前2條要求的ASIC產(chǎn)品,,而第(3)條要求更需要芯片組有可重構(gòu)的能力?;诖丝紤],,最終確定了FPGA的實現(xiàn)方案。
對于大規(guī)模數(shù)字系統(tǒng)的設計,,模塊化思想已經(jīng)被公認為行之有效的設計方法,。Altera公司的SOPC工具可以方便地幫助設計者實現(xiàn)模塊化設計。它提供了大量成熟的IP和公開的,、可裁剪的Avalon總線。用戶只需將自己的獨特需求封裝成帶有Avalon接口的模塊,,就可以集成到FPGA系統(tǒng)中,,與其他通用部件協(xié)同工作。根據(jù)對芯片組功能的分析,,利用SOPC工具,,采用模塊化的方法設計并實現(xiàn)了基于FPGA的芯片組,其結(jié)構(gòu)如圖2所示,。其中,,SYSAD2Avalon模塊實現(xiàn)了SYSAD總線到Avalon總線的轉(zhuǎn)換。龍芯2E處理器可以通過此模塊主動地訪問芯片組內(nèi)的寄存器等資源,,也可以連接到RapidIO, ETH等模塊,,實現(xiàn)對外I/O通信。同時,,由于龍芯2E處理器的2個特點:(1)集成了內(nèi)存控制器,;(2)系統(tǒng)總線(SYSAD)分為Master和Slave狀態(tài),支持外部設備和DDRSDRAM的直接通信,,因此SYSAD2Avalon模塊又可以將處理器掛載的內(nèi)存在Avalon總線一側(cè)映射為一段地址空間,,允許其他模塊主動訪問龍芯2E 的存儲空間。這種互易的主從關系決定了該模塊在Avalon總線一側(cè)同時具有一個主接口和一個從接口,。在這種結(jié)構(gòu)下需要注意的是,,在系統(tǒng)設計時必須采取一定的保護措施,保證龍芯2E的內(nèi)存免于錯誤或惡意的外部訪問,。
圖中陰影部分的NiosII處理器和片內(nèi)存儲器可以方便地測試,、驗證其他部分,,而在AMC模塊接入ATCA系統(tǒng)后,可以將其移除,,不會影響芯片組的功能,。
4.2 RapidIO
RapidIO是一種高性能、低引腳數(shù),、基于包交換的系統(tǒng)級互聯(lián)協(xié)議,。面向多種嵌入式互聯(lián)應用,其目標是建立緊耦合系統(tǒng)內(nèi)的一種開放式互聯(lián)標準,,主要是指芯片到芯片和電路板到電路板之間,。主要針對的應用目標包括單片機、DSP,、存儲器,、網(wǎng)絡/通信處理器等。RapidIO目前支持存儲器映射I/O,、端口訪問,、系統(tǒng)維護和Cache一致性等6類十余種通信事務,可以支持的編程模式包括存儲器映射,、基于端口的消息傳遞和全局共享存儲器,。各種通信事務的絕大部分功能由硬件完成,對軟件是透明的,。
RapidIO協(xié)議共有3層層次結(jié)構(gòu),,從高到低依次為:
(1)邏輯層
定義數(shù)據(jù)包格式及端點設備發(fā)起并完成1 次事務的必要信息。RapidIO交換機無須解釋流經(jīng)的數(shù)據(jù)包,,采用這種結(jié)構(gòu)設計很容易實現(xiàn)未來擴展協(xié)議的兼容性,。
(2)傳輸層
定義RapidIO的地址空間并為數(shù)據(jù)包在端點設備間傳輸提供必要的路由信息。
(3)物理層
描述設備級接口,,明確說明數(shù)據(jù)包傳輸機制,、流控機制、電氣特性和底層錯誤處理,。物理層包括8位/16位并行接口標準和1×/4×串行接口標準,。
ATCA規(guī)范中支持的物理層接口為串行RapidIO。FPGA實現(xiàn)串行RapidIO接口有2種方式:(1)在內(nèi)部實現(xiàn)完整的3 層協(xié)議的功能,;(2)FPGA 實現(xiàn)上面2層,,由外置的串行收發(fā)器實現(xiàn)物理層的功能。選用何種方式取決于FPGA是否內(nèi)置了串行收發(fā)器,。為了使電路設計簡潔,,選用了內(nèi)置串行收發(fā)器的Stratix II GX型FPGA。這種器件專為高速串行通信設計,,內(nèi)置的收發(fā)器可以支持高達6.375 Gb/s的速率,。在高頻率的條件下,,收發(fā)器的性能、設置和電路設計都會影響性能表現(xiàn)甚至功能實現(xiàn),。因此,, 在接收端測量了模塊進行3.125 Gb/s串行RapidIO通信時的眼圖,見圖3,。
可以看出,,收發(fā)器被設置為引入一定幅度的波形預加重,這樣可以更好地抵抗高頻衰減,。眼圖張開的幅度滿足RapidIO規(guī)范要求的接收端200 mV的差分信號幅度,。
最終設計的模塊如圖4 所示。
圖4 龍芯2E處理器AMC模塊
4.3 軟件部分
為了支持功能應用的實現(xiàn),, 該處理器模塊配備了由BIOS(Basic I/O System)和Linux操作系統(tǒng)組成的軟件平臺,。
龍芯2號系列處理器的各種開發(fā)系統(tǒng)一直采用PMON作為BIOS,它具有功能強大,、可擴展性好的優(yōu)點,。PMON作為最常用的MIPS處理器的BIOS,只要一個串口,、512 KB ROM,、128 KB RAM就能實現(xiàn)全部特性。它不僅支持BIOS啟動配置,、內(nèi)核加載,還支持程序調(diào)試,、內(nèi)存寄存器顯示和設置,、內(nèi)存反匯編等。在實際工作過程中,,PMON首先對處理器和芯片組進行初始化,,通過設置板級相關的寄存器對系統(tǒng)中的設備進行配置,然后從Flash存儲器中加載操作系統(tǒng),。由于PMON是與硬件結(jié)合最緊密的軟件,,因此同時可以作為硬件調(diào)試的有力工具。
操作系統(tǒng)采用了經(jīng)過裁剪的2.6.18版Linux內(nèi)核,。由于RapidIO系統(tǒng)在啟動時會對所有節(jié)點進行枚舉,,因此采取在內(nèi)核中集成RapidIO驅(qū)動程序的方式。目前,,Linux開發(fā)者已經(jīng)設計了針對RapidIO網(wǎng)絡的驅(qū)動程序,,沿用已有的構(gòu)架,并針對自己的設備進行了移植,。RapidIO互聯(lián)網(wǎng)絡上的Linux系統(tǒng)主要由4 個部分組成:
(1)主端口(Master Port)
Linux通過主端口向RapidIO 網(wǎng)絡進行各種通信事務,。
(2)設備(Device)
設備是RapidIO網(wǎng)絡中定義的網(wǎng)絡節(jié)點,。
(3)交換機(Switch)
交換機是一種特殊的設備,用于轉(zhuǎn)發(fā)節(jié)點間通信的數(shù)據(jù),。
(4)網(wǎng)絡(Network)
網(wǎng)絡是指由節(jié)點和交換機組成的互聯(lián)系統(tǒng),。
每個部分分別被定義成一種數(shù)據(jù)結(jié)構(gòu),用于對硬件的抽象,。RapidIO規(guī)范規(guī)定了系統(tǒng)初始化時發(fā)現(xiàn)和枚舉的算法和過程,,這些數(shù)據(jù)結(jié)構(gòu)在此過程中進行初始化,完備描述了整個網(wǎng)絡的情況,。
RapidIO子系統(tǒng)同樣基于2.6版的Linux內(nèi)核設備模型(Lniux Device Model),。在實現(xiàn)過程中,需要將一條RapidIO總線注冊到子系統(tǒng)中,,然后每一個設備再注冊為該總線的一個子節(jié)點,。這一點與傳統(tǒng)的PCI總線設備相同。而特有的match和dev attrs函數(shù)分別實現(xiàn)了設備識別和寄存器數(shù)據(jù)結(jié)構(gòu)映射的功能,。
5,、結(jié)束語
本文所述的模塊在主頻759MHz的龍芯2E處理器條件下運行穩(wěn)定,軟硬件協(xié)同工作正常,。在ATCA系統(tǒng)中,,與其他具有RapidIO接口的設備,包括Freescale公司的多款PowerPC處理器,、FPGA和RapidIO交換芯片通信正常,。實際應用表明,該模塊擴展了龍芯系列處理器的用途,,是對高性能計算系統(tǒng)國產(chǎn)化進行的有益嘗試,。
為了使設計更加實用,今后將在以下2個方面進行深入的研究:
(1)適當調(diào)整任務負載,、工作頻率,,對模塊在各種條件下的功耗、可靠性等指標進行完備的測試,。
(2)目前FPGA作為芯片組只應用了其I/O接口的功能,,其邏輯資源還有較大余量。完全可以針對特定任務進行開發(fā),,使FPGA同時成為協(xié)處理器,,分擔處理器的工作,這將大幅度提高模塊的整體性能,。
致謝 中國科學院計算技術研究所龍芯技術服務中心提供的技術支持和資料對本項目有很大的幫助,,在此向他們表示衷心感謝。