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