崔冰萌, 倪 明, 凌幸華
(中國電子科技集團公司第三十二研究所,上海 201800)
自第一臺電子數(shù)字計算機問世以來,計算機技術發(fā)展迅速,計算機系統(tǒng)對設計靈活性、速度以及并行性方面提出了越來越高的要求. 在傳統(tǒng)架構下,盡管CPU編程靈活且在很多領域應用廣泛,但其計算能力的提升只能寄希望于器件設備的更新?lián)Q代,且現(xiàn)有器件技術的發(fā)展已經無法滿足更大數(shù)量級的計算效能的需求.
在這樣的現(xiàn)狀下,使用不同類型指令集和體系架構的計算單元組成系統(tǒng)的異構計算方式被提出. 異構計算作為一種特殊形式的并行計算方式,能夠根據(jù)每個計算子系統(tǒng)的結構特點為其分配不同的計算任務,在提高服務器計算性能、能效比和計算實時性方面體現(xiàn)出了傳統(tǒng)架構所不具備的優(yōu)勢,因此異構計算技術是解決計算能效問題的重要手段[1]. 目前有關異構計算的研究主要是基于CPU+GPU 的這種異構計算系統(tǒng),它在傳統(tǒng)計算機系統(tǒng)中加入GPU 作為加速部件并配合CPU 共同承擔計算任務,但GPU 高能耗、小緩存等特點限制了其能效的提升與應用范圍[2]. 而且,這樣的體系結構更多的也只是系統(tǒng)軟件程序上實現(xiàn)數(shù)據(jù)計算的優(yōu)化,不能真正實現(xiàn)硬件上更細粒度的設計和定制,在硬件結構設計和其空間資源利用上也仍有提升的空間. 在此基礎上,擬態(tài)計算作為一種基于認知的軟硬件結構動態(tài)變化的計算架構,除了部件級的結構組合之外,還能在硬件層面實現(xiàn)動態(tài)重構,以硬件適應算法、硬件定制和硬件并行的方式實現(xiàn)計算,讓計算效能的進一步提升成為可能.
從體系結構創(chuàng)新入手,鄔江興院士在2014年首次引入了“應用決定結構,結構決定效能”的思想,提出了基于多維重構函數(shù)化結構與動態(tài)多變體運行機制的擬態(tài)計算體系[3].
傳統(tǒng)計算中的硬件執(zhí)行體結構基本不變,僅依靠軟件算法的改進獲取運算速度和計算效能的等效提高.擬態(tài)計算在應用處理的過程中,計算、存儲、互聯(lián)等執(zhí)行結構都是隨事務處理過程效能動態(tài)可變的. 對一個確定的可計算問題,在擬態(tài)架構中可以由多種功能等價、計算效能不同的硬件結構和軟件算法結合來實現(xiàn). 即擬態(tài)計算是一種基于認知的主動重構計算技術(Proactive Reconfigurable Computing Architecture,PRCA),它是以實現(xiàn)高效能計算為目的,在任務處理的全過程中通過感知自變量動態(tài)地選擇或生成應用問題的最佳計算結構集合[4]. 計算結構的函數(shù)化是擬態(tài)計算的本質.
圖1說明了PRCA的基本理念,從圖中可以看出,擬態(tài)計算融合了通用計算和專用計算,在這一點上,它與現(xiàn)在流行的以CPU+GPU為基礎的異構計算有著相似之處. 現(xiàn)在異構計算的高速發(fā)展已經證明了結構模式的調整對于計算效能的促進作用,而擬態(tài)計算是在此基礎上進行的更進一步的拓展. 擬態(tài)計算希望做到的是基于認知的主動重構,即根據(jù)不同應用的要求,通過分析應用的需求認知,動態(tài)重構一個適應它的硬件系統(tǒng)和軟件環(huán)境. 因此,擬態(tài)計算架構不僅僅是對資源的按需調配,其系統(tǒng)軟件程序和硬件設計均具有編程重構的功能,能夠通過對這些可計算變體的動態(tài)選擇和使用實現(xiàn)計算效能的最優(yōu)化.

圖1 PRCA的基本理念
目前常用的用于研究和實現(xiàn)數(shù)據(jù)計算和分析的主要器件包括CPU、GPU、DSP和FPGA.
(1) CPU
CPU是傳統(tǒng)計算機運行管理和計算的主要設備,擅長復雜運算,內部擁有豐富的指令集和計算資源,相關的算法開發(fā)完善,用戶友好度高. 但是對于大量多發(fā)簡單處理的數(shù)據(jù),運算能力相較并行設備有很大差距.
(2) GPU
GPU具有超高的運算速度,擅長圖像處理、浮點計算和并行計算. 另外,OpenCL的提出,也為GPU相應的軟件開發(fā)提供了便利. 但GPU開發(fā)也面臨著負載均衡、功耗和任務劃分等問題.
(3) DSP
DSP是專用的數(shù)字信號處理工具,對數(shù)字信號采集、處理的效率極高. 同時可通過匯編或高級語言進行編程,實時實現(xiàn)方案[5]. 但受指令集的時鐘周期的限制,DSP適用于系統(tǒng)較低取樣速率、低數(shù)據(jù)率的信號,不能處理頻率太高的信號.
(4) FPGA
FPGA的集成度很高,可以完成極其復雜的時序與組合邏輯電路功能. 一般情況下,FPGA可以反復地編程、擦除. 在不改變外圍電路的情況下,設計不同片內邏輯就能實現(xiàn)不同的電路功能. 同時新型FPGA內嵌CPU或DSP內核,支持軟硬件協(xié)同設計[6]. 但是,FPGA更適合開發(fā)時序邏輯電路,對于復雜算法的開發(fā)難度較大.
從圖2 PRCA的計算部件架構圖可以看出,擬態(tài)計算的思想就是融合了CPU、GPU、DSP、FPGA、HRCA(混合可重構計算陣列)和RIC(可重構互連網(wǎng)絡)等技術,建立了由通用系統(tǒng)、專用系統(tǒng)和可認知的柔性結構共同構建的擬態(tài)計算系統(tǒng). 其中通用系統(tǒng)指傳統(tǒng)的CPU通用處理器,用來處理基本的資源分配、任務調度等問題. 專用系統(tǒng)指DSP、ASIC等專用處理器,用來完成特定計算任務. 可認知的柔性結構指CPU+GPU、CPU+FPGA、HRCA等混合異構計算模式,用來分析應用需求,并針對不同應用對計算資源的不同需求動態(tài)配置系統(tǒng)的軟硬件架構. 以上3種系統(tǒng)融合來實現(xiàn)擬態(tài)計算基于指令、部件、系統(tǒng)級的深度重構,保證計算效能最大化.

圖2 PRCA的計算部件
擬態(tài)計算架構基于應用驅動的變結構計算模式,根據(jù)決策系統(tǒng)的指令來實現(xiàn)計算單元間的部件級重構,以滿足應用對計算資源、帶寬資源、存儲資源等的需求.其中,它的初步實現(xiàn)就是對于計算單元的指令級重構.FPGA作為一種可編程的專用處理器,其動態(tài)可重構技術能夠在僅更新配置 FPGA的一部分資源的同時,保證內部未改變的部分繼續(xù)工作. 通過對 FPGA 動態(tài)重新配置,可以使它在不同的時間執(zhí)行不同的功能. FPGA的動態(tài)可重構技術可以用來實現(xiàn)系統(tǒng)的自診斷,產生對不同運行環(huán)境重新配置的系統(tǒng)能力,或者對給定的應用實現(xiàn)多用途的硬件[7],也可以通過遠程重構實現(xiàn)產品的升級和維護. 這些都能保證擬態(tài)計算服務器在資源調度、應用分析層面的重構需求. 除此之外,FPGA可在不同邏輯下執(zhí)行多個線程,具有較強的并行處理能力[8],且相較于GPU具有更低的功耗,可實現(xiàn)更高效的計算加速. 因此,針對擬態(tài)計算數(shù)字處理、數(shù)據(jù)計算、網(wǎng)絡存儲的需求,本文設計了一種基于FPGA的擬態(tài)計算服務器.
擬態(tài)計算服務器硬件結構圖如圖3所示,整機由4片大規(guī)模XILINX 7 系列FPGA板、基于ATOM的控制單元、機箱管理模塊(BMC)以及底板模塊所組成. 核心板由FPGA 7 系列芯片組成,完成片內及片間的邏輯電路重構. 控制單元由N455、NM10(橋片)、DDR3內存條、SATA-SSD、網(wǎng)卡、USB轉JATG模塊組成,實現(xiàn)FPGA程序下載和遠程管理,另外通過Open IPMI與BMC的通信,實現(xiàn)對機箱和電源信號的管理. BMC模塊采用以Intel的Atom處理器為核心的CPU功能模塊作為上層控制/管理模塊,完成對硬件平臺電源管理、溫度監(jiān)控、低功耗管理、機箱散熱管理、SOL、時鐘管理等硬件管理功能,并提供給用戶管理相關系統(tǒng)資源的界面. 同時,底板模塊為整個系統(tǒng)提供物理連接通路、時鐘、電源,以及各種GPIO控制信號.
擬態(tài)計算服務器采用FPGA全互聯(lián)的方式實現(xiàn)高速高帶寬數(shù)據(jù)通信,FPGA兩兩之間都要相互配置互聯(lián)接口. 如果單板的FPGA數(shù)目過多,就會造成用于配置的接口數(shù)在FPGA板的占用比加大,留給實際處理計算任務的可用資源變少,同時相應產生的整板功耗也會加大. 因此單純通過增加每個服務器的FPGA個數(shù)來提高計算規(guī)模,可能會適得其反. 如圖4所示,在實際使用的過程中,每一臺服務器作為一個科學計算單元可以通過交換機與其他服務器進行互聯(lián),組成一個更大的集群,從而可以進行更大規(guī)模的計算任務.

圖3 擬態(tài)計算服務器硬件結構圖

圖4 服務器互聯(lián)方式
FPGA核心板總體框圖如圖5所示,主芯片選擇Xilinx公司的Virtes-7系列FPGA芯片,其配置接口為BPI,配置FLASH為PC28F00AG18FE,通過并行接口,實現(xiàn)對FPGA的配置.
該核心板通過兩個高速連接器與底板相連,高速連接器分別連接GTX信號、LVDS信號和其他控制信號. 其中GTX信號包括:1路SFP+,2路QSFP,1路PCIE,一路SATA和三路用于FPGA核心模塊間互連的GTX信號. LVDS信號及相關控制信號包括電源及電源控制,SFP+,QSFP,PCIE控制信號,串口,I2C信號等. 板載二路DDR3內存,接口形式為SODIMM. 板載千兆PHY芯片,型號為88E1111,其通過SGMII總線與FPGA互通,對外通過高速連接器連接到底板的RJ45接口. 板載溫度傳感器LM84及FPGA核心溫度傳感器LM84,通過SMBus總線互連,可由底板BMC讀取溫度信息. 7路時鐘芯片SI534產生用于各個基于GTX應用所需要的時鐘,WX501提供一個單端全局時鐘,WX703提供一個差分全局時鐘. 機箱采用12V為主供電電壓,通過在電源輸入端串聯(lián)保險絲和PMOS管分別實現(xiàn)對系統(tǒng)電源的過流保護和輸入開關控制功能.
擬態(tài)服務器的核心部分采用這樣的四塊7系列的FPGA互聯(lián)組成. 7系列的FPGA提供超過2×106個邏輯單元,收發(fā)器的線路速率達到28.05 Gb/s,I/O帶寬達到2.8 Tb/s,與前幾代的產品相比,功耗下降達50%,能夠在提升計算速度,提供更多計算資源的同時,降低了整版的系統(tǒng)功耗,保證服務器實際使用時的計算資源需求和通信速度要求. 4塊FPGA分別擁有獨立的內存通道,搭載2塊DDR3 SDRAM和一塊4 M 18 bitQDRII SRAM存儲器,其中單個DDR3支持的通量可達8 G,滿足FPGA的存儲需求. 4個FPGA之間采用通過GTX×4和LVDS×10兩套獨立互聯(lián)資源實現(xiàn)相互的全互聯(lián)通信,最高帶寬可達37 Gbps. FPGA之間可以通過調用該高速接口來實現(xiàn)局部可重構網(wǎng)絡以及實現(xiàn)對其它FPGA資源的訪問和擴展.

圖5 FPGA核心板總體框圖
FPGA互聯(lián)是該擬態(tài)計算服務器的關鍵技術. 計算的任務分配、數(shù)據(jù)傳送、資源共享等都需要通過FPGA互聯(lián)資源高速處理完成. 在保證FPGA之間的通訊數(shù)據(jù)帶寬的同時,還需要與其他外設進行數(shù)據(jù)交互. RapidIO技術主要面向于嵌入式應用,其協(xié)議均有硬件實現(xiàn),能夠實現(xiàn)高性能的點對點通信. 因此,本文設計實現(xiàn)了基于RapidIO的FPGA互聯(lián),并對其進行了仿真.
RapidIO總線技術是一種高性能、低引腳數(shù)、基于數(shù)據(jù)包交換的互連技術,具有極低延遲和高帶寬等特點,主要應用于嵌入式系統(tǒng)內部互連,支持芯片到芯片、板到板間的通訊. 從體系結構上RapidIO可以分為三層,分別是邏輯層、傳輸層和物理層. 邏輯層界定了協(xié)議和包格式; 傳輸層規(guī)定RapidIO地址空間和在端點器件間傳輸包所需的路由信息; 物理層定義包傳送機制、電氣特性和信息流控制及低級錯誤管理等方式[9].
RapidIO的接口模塊設計[10]方案如圖6所示. 設計將RapidIO的邏輯(I/O)和傳輸層整合為一個邏輯層模塊(Logic CORE),用來完成與遠端目標進行數(shù)據(jù)包收發(fā)的請求與響應. 另外還包括了物理層(phy_wrapper)模塊、緩存器,以及時鐘、復位和配置訪問等參考設計.

圖6 RapidIO接口模塊設計
邏輯層模塊包含3類接口:用戶接口、鏈路接口和保持接口. 用戶接口包含發(fā)起者響應(Initiator Response)、目標請求(Target Request)、發(fā)起者請求(Initiator Request)和目標響應(Target Response)四個端口,用于與遠端端點之間發(fā)送和接收請求和響應. 鏈路接口包含接收和發(fā)送兩個端口,用于連接RapidIO的物理層或作為緩存應用. 保持接口包含保持請求/響應和寄存器配置兩個端口,用于將數(shù)據(jù)讀寫到任意由用戶定義的或連接至物理層的配置寄存器[11].
物理層(phy_wrapper)模塊接口提供兩種配置模式:單通道(1x)和4通道(4x). 在數(shù)據(jù)帶寬要求較低時使用單通道可以使占用的邏輯資源最少,4通道物理層模塊實現(xiàn)要求的邏輯資源較多,但可以提供更大的帶寬和更高的可靠性,而且可以通過訓練從4x降低到1x,實現(xiàn)單通道下的操作[12].
本次設計的RapidIO總線互聯(lián)方式采用4x方式傳輸,單路傳輸頻率為3.125 G波特率,輸入時鐘信號頻率為156.25 MHz.
仿真實現(xiàn)的是互聯(lián)的兩個FPGA之間基于RapidIO的邏輯層用戶接口的數(shù)據(jù)收發(fā). RapidIO邏輯層模塊的用戶接口包含四個端口,分別為:發(fā)起者響應(Initiator Response)端口、目標請求(Target Request)端口、發(fā)起者請求(Initiator Request)端口和目標響應(Target Response)端口,即FPGA的兩方均可以作為發(fā)起方發(fā)送數(shù)據(jù)或作為目標方接收數(shù)據(jù). 具體數(shù)據(jù)傳輸流程圖如圖7所示,在仿真設計中是以RapidIO(A)作為發(fā)送方,RapidIO(B)作為目標接收方進行數(shù)據(jù)收發(fā)的,因此在圖7中的RapidIO(A)的用戶接口只包含發(fā)起者接口,RapidIO(B)只包含目標接口.

圖7 RapidIO(A)數(shù)據(jù)收發(fā)流程
由圖7,RapidIO(A)和RapidIO(B)分別代表數(shù)據(jù)的發(fā)起者(Initiator)和數(shù)據(jù)的目標接收者(Target). 首先由發(fā)起者RapidIO(A)的用戶接口的發(fā)起者請求(Initiator Request)端口通過發(fā)送模塊將整合好的數(shù)據(jù)包發(fā)送,由鏈路發(fā)送接口到達RapidIO的物理層,物理層通過4x的差分信號由GTX收發(fā)器將信號發(fā)送到數(shù)據(jù)目標接收者RapidIO(B). RapidIO(B)物理層接收數(shù)據(jù)包后通過鏈路接收接口發(fā)送至RapidIO(B)的接收模塊并由RapidIO(B)邏輯層的用戶接口的目標請求(Target Request)端口接收.
目標接收者RapidIO(B)將接收到的數(shù)據(jù)包通過用戶接口的目標響應(Target Response)端口將收到的數(shù)據(jù)包經由RapidIO(B)的發(fā)送模塊返回,通過物理層和邏輯層鏈路接口后到達RapidIO(A)的邏輯層接收模塊,再由發(fā)起者響應(Initiator Response)端口輸出數(shù)據(jù)包. 對比發(fā)送端的發(fā)起者請求(Initiator Request)端口和發(fā)起者響應(Initiator Response)端口的數(shù)據(jù)包,即可判斷數(shù)據(jù)包收發(fā)的正確性. 具體的仿真圖像如圖8所示.
圖8(a)以發(fā)起者請求(Initiator Request)端口發(fā)送數(shù)據(jù)包為例分析控制信號與發(fā)送數(shù)據(jù)包的關系. 首先,發(fā)送端通過ireq_sof_n和ireq_vld_n端口置位說明幀開始且數(shù)據(jù)有效. 在下一個時鐘周期,ireq_rdy_n端口置位,表示端口已準備好接收發(fā)送來的數(shù)據(jù)包.ireq_rdy_n和ireq_vld_n共同構成有效地數(shù)據(jù)環(huán)路,ireq_sof_n的端口置位不僅用于標記一個新的數(shù)據(jù)包,還用于驗證端口頭文件信息的有效性. 接下來,i r e q_s o f_n置為高電平,開始傳輸數(shù)據(jù). 當ireq_vld_n置為高電平時,暫停數(shù)據(jù)發(fā)送,此時的數(shù)據(jù)環(huán)路作廢. 當ireq_vld_n重新置位并伴隨著ireq_rdy_n的信號置位,數(shù)據(jù)繼續(xù)傳輸. 當ireq_eof_n信號置位時表明數(shù)據(jù)包發(fā)送完成.
圖8(b)是發(fā)起者請求(Initiator Request)端口和發(fā)起者響應(Initiator Response)端口的數(shù)據(jù)對比,說明了數(shù)據(jù)傳輸?shù)恼_性. 由圖8(b),首先發(fā)起者請求端口發(fā)送的數(shù)據(jù)包data_write,此時發(fā)起者響應端口還沒有數(shù)據(jù). 經過一段時間后發(fā)起者響應(Initiator Response)端口的收到之前由發(fā)起者請求端口發(fā)送數(shù)據(jù)包,data_read與data_write數(shù)據(jù)一致,說明經過了一段時間之后,發(fā)送端的數(shù)據(jù)成功接收并反饋發(fā)起者響應(Initiator Response)端口,即數(shù)據(jù)收發(fā)實現(xiàn).

圖8 數(shù)據(jù)收發(fā)仿真圖像
圖9以文字的形成呈現(xiàn)了數(shù)據(jù)的對比情況,其中iresp即為發(fā)起者響應(Initiator Response)端口. 經對比,期望接收的數(shù)據(jù)與實際收到的結果一致,因此輸出“所有響應接受正確(All Responses received correctly)”的標識,即數(shù)據(jù)收發(fā)成功.

圖9 數(shù)據(jù)收發(fā)情況對比
FPGA的互聯(lián)設計仿真只實現(xiàn)了以RapidIO總線這一種方式,在之后的開發(fā)中,也將實現(xiàn)以其他高速總線作為連接方式的互聯(lián)技術,從而進一步提升擬態(tài)計算服務器的通用性.
在現(xiàn)有的FPGA可動態(tài)重構特性的基礎上,服務器的設計中將進一步研究CPU+FPGA的模式,這樣可以彌補FPGA在復雜算法開發(fā)難度大的問題,能夠使擬態(tài)計算服務器在兼顧復雜算法設計和資源配置管理的同時,保證其良好的可編程性、高效的計算加速能力和低功耗等的優(yōu)勢. 最終服務器也將與CPU、GPU和DSP協(xié)作,通過對應用和計算資源情況的合理分配,發(fā)揮各個部件的優(yōu)勢協(xié)同工作,以實現(xiàn)擬態(tài)計算基于認知的的部件級和系統(tǒng)級重構.
1 Iyer R,Tullsen D. Heterogeneous computing. IEEE Micro,2015,35(4):4-5. [doi:10.1109/MM.2015.82]
2 Mittal S,Vetter JS. A survey of CPU-GPU heterogeneous computing techniques. ACM Computing Surveys (CSUR),2015,47(4):69.
3 鄔江興. 擬態(tài)計算與擬態(tài)安全防御的原意和愿景. 電信科學,2014,30(7):2-7.
4 成平廣. 基于擬態(tài)計算的社會網(wǎng)絡劃分算法. 計算機科學,2015,42(8):136-137.
5 劉榮. DSP技術的現(xiàn)狀及發(fā)展. 電子技術應用,1999,25(4):7-10.
6 EDA先鋒工作室,王城,蔡海寧,等. Altera FPGA/CPLD設計(基礎篇). 2版. 北京:人民郵電出版社,2011.
7 周盛雨. 基于FPGA的動態(tài)部分重構系統(tǒng)實現(xiàn)[博士學位論文]. 北京:中國科學院研究生院(空間科學與應用研究中心),2007.
8 Afonso G,Baklouti Z,Duvivier D,et al. Heterogeneous CPU/FPGA reconfigurable computing system for avionic test application. Proceedings of the 27th International Parallel and Distributed Processing Symposium Workshops & PhD Forum (IPDPSW). Cambridge,MA,USA. 2013. 260-267.
9 高毅,劉永強,梁小虎. 基于串行RapidIO協(xié)議的包交換模塊的設計與實現(xiàn). 航空計算技術,2010,40(3):123-126.
10 劉東華. Xilinx系列FPGA芯片IP核詳解. 北京:電子工業(yè)出版,2013.
11 LogiCORE IP serial RapidIO user guide. 64-66. http://tec.icbuy.com/uploads/2010/5/20/srio_gsg247.pdf
12 LogiCORE IP serial RapidIO product specification. 1-2.