許家麟,韓思齊,孫寧霄,吳瓊之
(北京理工大學(xué) 信息與電子學(xué)院,北京100081)
硬件加速系統(tǒng)中的PCIe-SRIO橋技術(shù)
許家麟,韓思齊,孫寧霄,吳瓊之
(北京理工大學(xué) 信息與電子學(xué)院,北京100081)
針對(duì)一種基于PCI Express和Serial RapidIO混合式互連架構(gòu)的硬件加速系統(tǒng),介紹了其中基于FPGA實(shí)現(xiàn)的低延遲、多通道、跨平臺(tái)的PCIe-SRIO橋接方法。介紹了該P(yáng)CIe-SRIO橋的邏輯架構(gòu),詳細(xì)敘述了數(shù)據(jù)調(diào)度方法,給出了系統(tǒng)實(shí)現(xiàn)成果以及性能測(cè)試結(jié)果。該成果解決了標(biāo)準(zhǔn)計(jì)算機(jī)與硬件加速部件的高速接口問(wèn)題,比同功能的專(zhuān)用ASIC器件具有更好的適應(yīng)性以及擴(kuò)展性。
硬件加速;PCI Express;RapidIO;FPGA
基于混合架構(gòu)的硬件加速是計(jì)算機(jī)領(lǐng)域中很重要的研究方向之一。它是指將一些特定的任務(wù)從通用CPU移植到硬件處理模塊上并進(jìn)行相應(yīng)的算法優(yōu)化。由于硬件設(shè)備的專(zhuān)用結(jié)構(gòu),這些硬件處理模塊往往比在基于順序指令集的CPU上運(yùn)行同樣功能的軟件在速度上有大幅度的提升[1]。
文中的主要研究?jī)?nèi)容是通用CPU和嵌入式計(jì)算硬件之間的橋接。這是硬件加速系統(tǒng)的關(guān)鍵技術(shù)問(wèn)題之一,既要求較高的傳輸速率,也要求數(shù)據(jù)類(lèi)型、長(zhǎng)度、通道數(shù)量的靈活性。當(dāng)前,計(jì)算機(jī)系統(tǒng)多采用PCI Express(PCIe)與外設(shè)進(jìn)行數(shù)據(jù)交互。而高性能的分布式嵌入式處理系統(tǒng)則多采用Serial RapidIO(SRIO)作為接口標(biāo)準(zhǔn)。實(shí)現(xiàn)PCIe總線到RapidIO橋,意味著實(shí)現(xiàn)了通用計(jì)算機(jī)與多結(jié)點(diǎn)、多類(lèi)型的分布式硬件計(jì)算子系統(tǒng)的接口能力,為硬件加速系統(tǒng)提供了跨架構(gòu)的數(shù)據(jù)傳輸通道。文中介紹了一種基于FPGA的PCIe-SRIO橋接方法,在性能和功能上有效的支撐了大規(guī)模硬件加速系統(tǒng)的實(shí)現(xiàn)。
文獻(xiàn)3中提出了一種PCI-SRIO的橋轉(zhuǎn)接技術(shù),重點(diǎn)描述了PCI到RapidIO各種事務(wù)的轉(zhuǎn)接方法,為本文提供了一種設(shè)計(jì)思路,但是PCI總線已逐漸被淘汰,而PCIe-SRIO橋轉(zhuǎn)接技術(shù)的需求則在各應(yīng)用領(lǐng)域逐漸顯現(xiàn)出來(lái)。文獻(xiàn)2介紹了一種用于CPU與FPGA間DMA通信方案,采用了Scatter Gather的內(nèi)存管理方法,提高了DMA效率,并且提供了驅(qū)動(dòng)以及API,可應(yīng)用于Xilinx、Altera的多種FPGA,為本文實(shí)現(xiàn)PCIe-SRIO橋接奠定了基礎(chǔ)。文獻(xiàn)4和文獻(xiàn)5分別介紹了FPGA實(shí)現(xiàn)RapidIO協(xié)議以及RapidIO互連網(wǎng)絡(luò)。然而,以上文獻(xiàn)都是在單獨(dú)的討論某一方面的具體問(wèn)題,例如DMA或者RapidIO的實(shí)現(xiàn)。相比之下,本文主要從通用計(jì)算機(jī)與嵌入式處理系統(tǒng)融合的角度上討論如何建立兩個(gè)架構(gòu)間的高速橋接,并進(jìn)行了系統(tǒng)實(shí)現(xiàn)。
圖1給出了本文所針對(duì)的硬件加速系統(tǒng)的拓?fù)浣Y(jié)構(gòu)。負(fù)責(zé)橋接的FPGA以PCIe接口連接至計(jì)算機(jī),計(jì)算機(jī)通過(guò)DMA實(shí)現(xiàn)與FPGA的數(shù)據(jù)交換。FPGA實(shí)現(xiàn)PCIe-SRIO橋接,并將數(shù)據(jù)交由SRIO路由設(shè)備分發(fā)至各個(gè)SRIO網(wǎng)絡(luò)結(jié)點(diǎn)進(jìn)行處理。處理完成的數(shù)據(jù)則沿原路徑反向傳輸回計(jì)算機(jī)。
圖1 計(jì)算機(jī)與嵌入式系統(tǒng)的SRIO互連結(jié)構(gòu)圖
計(jì)算機(jī)作為此硬件加速網(wǎng)絡(luò)的一個(gè)終端節(jié)點(diǎn),既是數(shù)據(jù)源端也是數(shù)據(jù)輸出端,同時(shí)還是整個(gè)系統(tǒng)的控制核心。因此,該體系架構(gòu)要求FPGA實(shí)現(xiàn)的PCIe-SRIO橋接具有極高的傳輸能力和靈活性,具體表現(xiàn)為以下幾點(diǎn):
高傳輸率:傳輸速率應(yīng)能滿足計(jì)算機(jī)與計(jì)算網(wǎng)格之間的實(shí)時(shí)數(shù)據(jù)交換,否則硬件加速的處理能力將失去意義。
多線程:在硬件加速應(yīng)用中,輸入輸出數(shù)據(jù)的分集、類(lèi)型、長(zhǎng)度以及依賴關(guān)系等等會(huì)隨著算法設(shè)計(jì)而發(fā)生很大變化。在軟件上則經(jīng)常體現(xiàn)為多個(gè)不同功能的線程并發(fā)工作,每個(gè)線程都會(huì)有各自的數(shù)據(jù)傳輸需求。
信令系統(tǒng):除了高速數(shù)據(jù)傳輸,橋接設(shè)備應(yīng)該還能實(shí)現(xiàn)信令的傳遞,使得計(jì)算機(jī)可以與某個(gè)RapidIO網(wǎng)絡(luò)結(jié)點(diǎn)進(jìn)行數(shù)據(jù)流傳輸?shù)耐瑫r(shí)對(duì)該結(jié)點(diǎn)進(jìn)行監(jiān)視和控制。
多平臺(tái):應(yīng)能工作在不同的操作系統(tǒng)下,并且能夠根據(jù)具體的網(wǎng)絡(luò)結(jié)構(gòu)和數(shù)據(jù)傳輸需求調(diào)整PCIe-SRIO橋的配置。
在工程領(lǐng)域,目前主流的橋接方案是采用專(zhuān)用ASIC 芯片,例如 IDT(Integrated Device Technology)公司的TSI721。然而,固定功能的ASIC在一些特定的應(yīng)用場(chǎng)合下會(huì)面臨諸多問(wèn)題,例如傳輸線程數(shù)較少、溫度范圍窄、可擴(kuò)展性不足等。文中所選用的FPGA方案與ASIC方案的對(duì)比參見(jiàn)表1。
表1 ASIC與FPGA實(shí)現(xiàn)實(shí)現(xiàn)橋接的性能和功能對(duì)比
本系統(tǒng)中PCIe到SRIO的數(shù)據(jù)搬移、調(diào)度和管理均由FPGA邏輯固件實(shí)現(xiàn)。邏輯設(shè)計(jì)可以分成PCIe處理模塊、SRIO處理模塊、橋接模塊3個(gè)部分。PCIe處理模塊主要負(fù)責(zé)與上位機(jī)驅(qū)動(dòng)的DMA過(guò)程,SRIO模塊負(fù)責(zé)按照RapidIO協(xié)議進(jìn)行邏輯層的打包并實(shí)現(xiàn)傳輸層和物理層,橋接部分則實(shí)現(xiàn)以上兩個(gè)模塊的對(duì)接并且實(shí)現(xiàn)數(shù)據(jù)的調(diào)度。整體結(jié)構(gòu)如圖2所示。
PCIe的DMA實(shí)現(xiàn)部分,選用了RIFFA(ReusableIntegrationFrameworkforFPGAAccelerators,可復(fù)用的集成FPGA加速架構(gòu))解決方案。它實(shí)現(xiàn)了CPU與FPGA間的DMA傳輸,支持Windows、Linux操作系統(tǒng),并支持多種計(jì)算機(jī)編程語(yǔ)言和多種FPGA器件。
SRIO模塊的主要任務(wù)是提供RapidIO協(xié)議規(guī)定的各種事務(wù)操作的基本接口。RapidIO協(xié)議是一種基于包的數(shù)據(jù)交換協(xié)議。最常用的幾種包格式有:SWRITE(寫(xiě)數(shù)據(jù)流)、NREAD(讀數(shù)據(jù))、NWRITE_R(有響應(yīng)寫(xiě)數(shù)據(jù))、NWRITE(無(wú)響應(yīng)寫(xiě)數(shù)據(jù))。其中SWRITE適合于大量數(shù)據(jù)流的傳輸,與DMA實(shí)現(xiàn)對(duì)接;NREAD與NWRITE_R適合實(shí)現(xiàn)寄存器的讀寫(xiě)。SRIO模塊主要以Xilinx的SRIO IP核[6]為基礎(chǔ),接口形式為HELLO FORMAT,展現(xiàn)給用戶為AXI[7]接口。SRIO模塊內(nèi)部包含3種接口:I/O接口、Message接口、Maintenance接口,其中前兩者又分別獨(dú)立為發(fā)起端(initiator)、目的端(target),即一共有 5 個(gè)獨(dú)立的內(nèi)部數(shù)據(jù)通道,均為AXI形式。這5個(gè)通道與PCIe模塊一側(cè)的Endpoint channel1-5分別一一對(duì)應(yīng)。
圖2 PCIe-SRIO橋邏輯架構(gòu)
本設(shè)計(jì)的核心內(nèi)容是將SIRIO的各個(gè)事務(wù)操作映射到PCIe和主機(jī)端的操作流程。在滿足RapidIO協(xié)議的同時(shí),此處我們還需要解決SRIO模塊與PCIe模塊之間的接口適配問(wèn)題。SRIO處理模塊的接口形式AXI Stream,其數(shù)據(jù)流傳輸是一種根據(jù)tlast信號(hào)表征數(shù)據(jù)流結(jié)束的一種無(wú)限長(zhǎng)度傳輸機(jī)制。而PCIe的DMA傳輸是一種定長(zhǎng)度傳輸機(jī)制。這兩者存在著天然的不兼容問(wèn)題,給事務(wù)流程的設(shè)計(jì)帶來(lái)一定的難度。
同時(shí),為了解決前述的信令需求,在基本的SRIO讀寫(xiě)操作基礎(chǔ)上擴(kuò)展了寄存器讀寫(xiě)協(xié)議,將系統(tǒng)中所有的參數(shù)、命令、狀態(tài)等信令機(jī)制全部封裝為寄存器讀寫(xiě)。這樣一來(lái),橋接模塊需要完成的指令類(lèi)型就包含了讀寄存器、寫(xiě)寄存器、讀數(shù)據(jù)流、寫(xiě)數(shù)據(jù)流、維護(hù)包操作幾種類(lèi)型。對(duì)于不同的指令類(lèi)型具體處理流程如下:
1)讀寫(xiě)寄存器指令:
分別打包為NREAD、NWRITE_R格式,并且使能TX_active信號(hào),狀態(tài)機(jī)進(jìn)入接收響應(yīng)數(shù)據(jù)狀態(tài),接收數(shù)據(jù)長(zhǎng)度為1。SRIO端的響應(yīng)接口會(huì)分別接收到寫(xiě)響應(yīng)以及回讀寄存器值。成功接收到數(shù)據(jù)后,TX_done拉高,狀態(tài)機(jī)跳轉(zhuǎn)至DMA上傳階段,發(fā)起長(zhǎng)度為1的DMA上行操作,完成一次寄存器讀寫(xiě)。
2)讀數(shù)據(jù)流操作:
需要在讀數(shù)據(jù)流前通過(guò)寄存器讀寫(xiě)來(lái)控制遠(yuǎn)端SRIO設(shè)備發(fā)起設(shè)定長(zhǎng)度LEN的SWRITE操作,然后狀態(tài)機(jī)進(jìn)入發(fā)起一次長(zhǎng)度為L(zhǎng)EN的DMA上行狀態(tài),數(shù)據(jù)量傳輸結(jié)束后跳回空閑狀態(tài),完成一次數(shù)據(jù)流讀取操作。
3)寫(xiě)數(shù)據(jù)流操作:
系統(tǒng)中要求遠(yuǎn)端設(shè)備預(yù)知下行數(shù)量LEN,因此也要通過(guò)寄存器讀寫(xiě)來(lái)控制遠(yuǎn)端SRIO設(shè)備做好接收數(shù)據(jù)準(zhǔn)備,也可以通過(guò)doorbell控制DSP等SRIO設(shè)備,這里主要是面向執(zhí)行硬件加速的FPGA處理板。完成寄存器控制后,狀態(tài)機(jī)進(jìn)入DMA下行階段,長(zhǎng)度為預(yù)先設(shè)置的LEN。
4)維護(hù)包操作:
類(lèi)似于讀寫(xiě)寄存器操作,狀態(tài)機(jī)進(jìn)入指令解析后從指令中獲取hop count、地址、數(shù)據(jù)信息,并通過(guò)SRIO IP核完成maintenance打包的AXI-LITE接口實(shí)現(xiàn)寄存器讀寫(xiě),然后使能TX_active信號(hào),狀態(tài)機(jī)進(jìn)入接收響應(yīng)數(shù)據(jù)狀態(tài),接收數(shù)據(jù)長(zhǎng)度為1。SRIO端的AXI-LITE接口會(huì)寫(xiě)響應(yīng)或者回讀寄存器值。成功接收到數(shù)據(jù)后,TX_done拉高,狀態(tài)機(jī)跳轉(zhuǎn)至DMA上傳階段,發(fā)起長(zhǎng)度為1的DMA上行,完成一次維護(hù)包操作。
其中下行的各種包格式在進(jìn)入SRIO發(fā)送模塊之前,會(huì)進(jìn)行邏輯判決。傳輸數(shù)據(jù)流用的SWRITE包的打包單元是256字節(jié)的小包,在傳輸大量數(shù)據(jù)流時(shí),判決模塊會(huì)在兩小包間查詢是否有DOORBELL、NWRITE_R、NREAD 等擁有更高的優(yōu)先級(jí)的包存在,如果有則優(yōu)先發(fā)送這些包,因此系統(tǒng)可以實(shí)現(xiàn)在數(shù)據(jù)流傳輸?shù)倪^(guò)程中讀寫(xiě)寄存器,訪問(wèn)遠(yuǎn)端設(shè)備狀態(tài)。
實(shí)際系統(tǒng)應(yīng)用中,實(shí)現(xiàn)數(shù)據(jù)流的上下行傳輸是由一系列寄存器操作和數(shù)據(jù)流操作完成的。RapidIO協(xié)議中常用于數(shù)據(jù)流傳輸?shù)陌荢WRITE,這種包具有最高的打包效率,可以最大限度的提升系統(tǒng)的數(shù)據(jù)傳輸帶寬,因此在發(fā)送數(shù)據(jù)時(shí)選用的是這種包格式。
針對(duì)數(shù)據(jù)流讀取操作,通常是主端發(fā)起NREAD來(lái)獲取數(shù)據(jù)流,但是這種打包效率較低。由于FPGA的程序設(shè)計(jì)是透明的,而且對(duì)遠(yuǎn)端SRIO設(shè)備的控制都處理為寄存器操作,可以輕松實(shí)現(xiàn)控制遠(yuǎn)端SRIO設(shè)備發(fā)起數(shù)據(jù)流寫(xiě)操作,因此仍使用SWRITE包進(jìn)行傳輸,再由橋模塊解包并完成數(shù)據(jù)流上傳。具體流程如圖4所示。
狀態(tài)機(jī)的設(shè)計(jì)包容錯(cuò)誤指令,以流水線的形式實(shí)現(xiàn)PCIe指令/數(shù)據(jù)到RapidIO包的轉(zhuǎn)換,整個(gè)流程的時(shí)間開(kāi)銷(xiāo)為固定的9個(gè)時(shí)鐘周期(時(shí)鐘頻率150Mhz),使延遲量控制在了60 ns,適用于實(shí)時(shí)性較強(qiáng)的系統(tǒng)。
圖3 數(shù)據(jù)調(diào)度處理流程
圖4 數(shù)據(jù)流處理流程
文中提出的解決方案在某FPGA硬件加速系統(tǒng)中得到了應(yīng)用。通用計(jì)算機(jī)搭配PCIe-SRIO橋,通過(guò)4X SRIO連接RapidIO路由板卡,進(jìn)而連接至若干FPGA數(shù)據(jù)處理板卡。具體的測(cè)試系統(tǒng)配置如表2所示。
表2 測(cè)試系統(tǒng)配置表
基于上述測(cè)試環(huán)境,計(jì)算機(jī)通過(guò)橋接模塊與各FPGA處理板卡實(shí)現(xiàn)數(shù)據(jù)傳輸,由主機(jī)和處理FPGA互發(fā)SWRITE數(shù)據(jù)包來(lái)進(jìn)行上下行速率測(cè)試。測(cè)試結(jié)果如下圖所示,方塊曲線代表SWRITE下行速度隨著包長(zhǎng)度變化的趨勢(shì),三角曲線則代表SWRITE上行速度的變化趨勢(shì)。測(cè)試結(jié)果表明,該橋接模塊的上行、下行傳輸在包長(zhǎng)度達(dá)到16 kB后,即可達(dá)到700~800 MB/s的速率;包長(zhǎng)度超過(guò)1 MB后,則可穩(wěn)定的達(dá)到1 GB/s的速率。
文中展示了基于PCIe DMA傳輸?shù)腜CIe-SRIO橋接在FPGA上的實(shí)現(xiàn)方法,并給出了系統(tǒng)實(shí)現(xiàn)和性能測(cè)試結(jié)果。RapidIO作為目前高性能嵌入式系統(tǒng)廣泛應(yīng)用的互連技術(shù),在實(shí)踐中會(huì)對(duì)PCIe-SRIO橋接的功能和性能提出越來(lái)越高的要求,而基于FPGA可編程特性使得本文的PCIe-SRIO橋接方案具有非常大的靈活性和可擴(kuò)展性。我們未來(lái)的工作方向有:1)改善數(shù)據(jù)調(diào)度流程進(jìn)一步提高流數(shù)據(jù)的傳輸帶寬;2)研究信令系統(tǒng)傳輸能力的改善潛力;3)在國(guó)產(chǎn)化FPGA、CPU以及操作系統(tǒng)下實(shí)現(xiàn)本系統(tǒng)。
圖5 橋接模塊傳輸數(shù)據(jù)流的性能測(cè)試結(jié)果
[1]Possa P,Schaillie D,Valderrama C.FPGA-based hardware acceleration:A CPU/accelerator interface exploration[C]//Electronics,Circuits and Systems(ICECS), 2011 18th IEEE International Conference on.IEEE,2011:374-377.
[2]Jacobsen M D.Smart Frame Grabber:A Hardware Accelerated Computer Vision Framework[D].University of California,SAN DIEGO,2014.[3]Fuller.The Interconnect Problem[J].Journal of the American College of Cardiology, 2015, 65(10):1-12.
[4]ARM, “AMBA AXI and ACE Protocol Specification AXI3, AXI4, and AXI4-Lite ACE and ACELite”, Oct.2011.
[5]王輝球.一種基于FPGA的Serial RapidIO交換設(shè)計(jì)[J].電子世界, 2014(6):122-122.
[6]秦小娟.SRapidIO總線在通信設(shè)備中的應(yīng)用[D].南京:東南大學(xué),2014.
[7]馮龍輝,張興明,楊鎮(zhèn)西,等.基于RapidIO控制符產(chǎn)生單元設(shè)計(jì)與實(shí)現(xiàn) [J].電子技術(shù)應(yīng)用,2015,41(11):48-50.
[8]上官珠,范國(guó)忠,高文昀,等.基于RapidIO協(xié)議的高速數(shù)據(jù)互聯(lián)模塊設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2014,(15):28-31.
[9]鄧豹.RapidIO交換互連與配置管理研究[J].航空計(jì)算技術(shù),2014(2):124-127.
[10]陳剛,張京,唐建.一種基于FPGA的PCIe總線及其DMA的設(shè)計(jì)方法 [J].兵工自動(dòng)化,2014(5):75-77.
[11]趙會(huì)彬,馬衛(wèi)平,梁曉英.基于PCIE點(diǎn)對(duì)點(diǎn)傳輸?shù)腇PGA系統(tǒng) [J].計(jì)算機(jī)系統(tǒng)應(yīng)用, 2014,23(4):201-204.
[12]吳峰鋒,賈嵩,王源,等.一種低時(shí)延的串行RapidIO端點(diǎn)設(shè)計(jì)方案 [J].北京大學(xué)學(xué)報(bào):自然科學(xué)版,2013,49(4):570-578.
[13]陳宏銘,李蕾,姚益武,等.基于AXI總線串行RapidIO端點(diǎn)控制器的FPGA實(shí)現(xiàn)[J].北京大學(xué)學(xué)報(bào):自然科學(xué)版, 2014,50(4):697-703.
[14]王維,劉垚,孔超,等.基于RapidIO技術(shù)的網(wǎng)絡(luò)交換板卡的設(shè)計(jì)與實(shí)現(xiàn) [J].應(yīng)用聲學(xué),2012(3):229-234.
[15]母其勇,王永良,高飛,等.基于SRapidIO及PCIe協(xié)議的雷達(dá)多通道數(shù)據(jù)光纖高速記錄系統(tǒng)[J].計(jì)算機(jī)應(yīng)用, 2015(z2):30-33.
[16]張娟娟,陳迪平,柴小麗.VxWorks下RapidIO互連系統(tǒng)的實(shí)現(xiàn)[J].計(jì)算機(jī)工程, 2011,37(3):236-237.
[17]鄭建,徐海.Serial RapidIO橋接以太網(wǎng)設(shè)計(jì)和實(shí)現(xiàn)[J].微處理機(jī), 2015(1):16-18.
PCIe-RapidIO bridge for hardware acceleration systems
XU Jia-lin, HAN Si-qi, SUN Ning-xiao,WU Qiong-zhi
(School of Information and Electronics, Beijing Institute of Technology, Beijing 100081, China)
This paper presents a hybrid interconnection architecture based on both PCI Express and Serial RapidIO for hardware acceleration applications.It introduces a low-latency,multi-channels and platform-compatibility PCIe-SRIO bridge running in FPGA.This paper introduces the logic architecture of the PCIe-SRIO bridge, describes the data scheduling method in details, and provides the system implementation and performance test results.This PCIe-SRIO bridge can provide high speed interface between standard computers and hardware accelerators,and it has better adaptability and expansibility than ASIC devices with the same function.
hardware acceleration;PCI express;RapidIO;FPGA
TN919.5
:A
:1674-6236(2017)15-0189-05
2016-07-06稿件編號(hào):201607043
許家麟(1992—),男,山東菏澤人,碩士研究生。研究方向:電子科學(xué)與技術(shù)、信號(hào)與信息處理。