夏飛 李暉宙
摘 要: 基于雙FPGA芯片的可重構原型系統(tǒng),提出一種系統(tǒng)高速全局動態(tài)重構設計方法。利用Xilinx Virtex?7系列FPGA的常規(guī)配置通道,使用一片規(guī)模較小的FPGA芯片作為重構控制器對大規(guī)模算法FPGA芯片實現(xiàn)全局動態(tài)重構。實驗結果表明,系統(tǒng)重構時間小于60 ms,與常規(guī)FPGA邏輯下載方法相比,配置效率提高了2~3個數(shù)量級。
關鍵詞: 可編程門陣列; 可重構計算; 全局動態(tài)重構; 并行配置通道
中圖分類號: TN919?34 文獻標識碼: A 文章編號: 1004?373X(2017)16?0151?04
Abstract: A system design method of high?speed global dynamic reconfiguration is proposed, which is based on a dual?FPGA reconfigurable prototype system. By virtue of the general configuration channel of Xilinx Virtex?7 Series FPGA, a small?scale FPGA chip is used as the reconfigurable controller to realize the global dynamic reconfiguration of large?scale algorithm FPGA chip . The experimental results show that the system reconfiguration time is less than 60 ms, and the configuration efficiency of the method is improved by 2 to 3 magnitude orders in comparison with the conventional FPGA logic downloading method.
Keywords: FPGA; reconfigurable computing; global dynamic reconfiguration; parallel configuration channel
動態(tài)重構是現(xiàn)場可編程門陣列(Field?Programmable Gate Array,F(xiàn)PGA)計算平臺設計的技術難點之一,其重構能力是系統(tǒng)結構設計靈活性和適應性的體現(xiàn)。系統(tǒng)的動態(tài)重構能力體現(xiàn)在重構的粒度、時間和控制方法多個方面。FPGA屬于細粒度重構器件,配置信息量大,需要開發(fā)高效的重構方法,降低重構開銷,提高系統(tǒng)的實際計算效率。
1 FPGA
FPGA內(nèi)部的基本結構是邏輯單元陣列,包括可編程邏輯模塊(CLB)、I/O模塊(IOB)和連線資源(PI)三部分[1],如圖1所示。FPGA是完全不同于CPU,GPU的一種超大規(guī)模集成電路芯片,其功能需要在芯片制造后再定義,用戶可以根據(jù)使用需求將其定義為一個處理器,也可以定義為實現(xiàn)特定功能的邏輯器件。
其中CLB是FPGA的基本邏輯單元,它提供了用戶所需要的邏輯功能,通常規(guī)則地排列成一個陣列,散布于整個芯片。
IOB完成芯片的內(nèi)部邏輯和外部封裝腳的接口,它可編程為輸入/輸出和雙向I/O口三種方式,通常排列于芯片的四周;PI包括各種長度的連接線段和一些可編程的連接開關,它們將各個可編程邏輯塊或輸入/輸出塊連接起來,構成特定功能的電路。改變各個CLB的功能或改變各個CLB與IOB的連接組合都能改變整個芯片的功能。
2 FPGA重構
2.1 重構的定義和類型
FPGA的重構(Reconfiguration)指的是對FPGA進行重新配置來改變其邏輯功能,即對FPGA的功能進行重定義。FPGA的重構可分為靜態(tài)重構和動態(tài)重構,前者指系統(tǒng)邏輯功能的靜態(tài)重載,即在外部邏輯的控制下,通過改寫芯片配置存儲器中目標系統(tǒng)的數(shù)據(jù)實現(xiàn)芯片邏輯功能的改變。通過JTAG 對FPGA 進行編程的方法即為典型的靜態(tài)重構方法。
動態(tài)重構是指在可重構器件運行的過程中,可根據(jù)需要進行實時配置,改變電路結構,實現(xiàn)不同的功能,從而實現(xiàn)芯片邏輯功能的高速動態(tài)變換[2]。動態(tài)重構方法使得系統(tǒng)中不同時工作的模塊可以分時復用FPGA的硬件資源,在動態(tài)切換過程中,系統(tǒng)其他模塊仍能正常工作。動態(tài)重構能夠提高系統(tǒng)的自適應能力和資源利用率,而且對計算任務從時間和空間上進行分解,使FPGA不僅具有接近ASIC的速度,而且兼具軟件的靈活性。根據(jù)對芯片實現(xiàn)重構的區(qū)域和面積不同,動態(tài)重構可以分為全局重構和局部重構。全局重構是指對整個FPGA器件進行重新配置。在配置過程中,計算的中間結果必須取出存放在外部的存儲器中,直到新的配置功能全部下載完為止,重構前后電路相互獨立、沒有關聯(lián)。局部重構是指對FPGA器件的一部分進行重新配置,在配置過程中,系統(tǒng)其余部分的工作狀態(tài)不受影響。
2.2 動態(tài)重構方法
近年來隨著FPGA產(chǎn)品和技術的發(fā)展,動態(tài)可重構FPGA作為一種新興的計算結構,其設計理論和設計方法已經(jīng)逐漸成為新的研究熱點?;诓煌Y構的FPGA芯片實現(xiàn)動態(tài)重構的方法不同,目前常見的有以下兩種:
(1) Off?Chip重構。通過改寫芯片配置存儲器來實現(xiàn)芯片的重構。FPGA內(nèi)部的邏輯單元可實現(xiàn)多種電路功能,配置存儲器(CM)用于裝載邏輯單元功能和互連關系的配置信息。這種方式需要首先將配置信息通過端口傳送至FPGA內(nèi)部的CM,然后再將配置信息裝載到芯片邏輯單元中,對邏輯功能進行修改。
(2) Context重構。這種方式僅限于基于多重Context結構的FPGA,采用交換CM和片上Context存儲器的部分或全部的配置數(shù)據(jù)來實現(xiàn)動態(tài)重構。FPGA內(nèi)部的Context存儲器可以存儲多種配置信息。最早實現(xiàn)Context重構的是SIDNA工程提出的名為現(xiàn)場可編程片上系統(tǒng)(Field Programmable System On a Chip,F(xiàn)IPSOC),它是一種具備可重構能力的粗粒度結構FPGA[3]。動態(tài)編程門陣列(Dynamically Programmable Gate Array,DPGA)是美國麻省理工學院提出的一種基于多重context 重構方式的動態(tài)可重構FPGA[4]。又如美國California大學Morphoing System工程提出的一種粗粒度、多重Context結構的芯片M1[5]中可存儲32種Context信息,通過切換Context部分或全部內(nèi)容來改變配置,從而控制陣列單元實現(xiàn)新的邏輯功能。由于配置信息預先存儲在FPGA片內(nèi),芯片的重構時間僅取決于Context間的切換速度,重構開銷一般僅需幾納秒。此外,RAPID[6]也是一種比較知名的粗粒度可重構結構。endprint
在商用領域,Xilinx公司的Virtex系列是基于SRAM技術和Off?Chip結構的可重構FPGA芯片,提供了Select MAP 32 b并行配置端口,為芯片的快速重構提供了良好的硬件支持。
此外,Altera公司也成功推出了Stratix系列動態(tài)可重構FPGA[7]并獲得了廣泛的應用。文獻[8]提出了一種基于改進型游程編碼的FPGA動態(tài)重構方法,提高了動態(tài)重構效率,但是本質(zhì)上還是基于FPGA芯片提供的并行配置端口。
3 Virtex?7 FPGA配置端口
3.1 V7芯片配置模式
根據(jù)芯片是否能夠主動加載配置數(shù)據(jù),F(xiàn)PGA的配置方式可分為主動、被動以及JTAG(Joint Test Action Group)模式。除了JTAG模式只支持串行配置外,主被動模式都支持串行和并行(×8,×16和×32)配置方式[9]。
主動配置模式需要預先將配置文件寫入外部存儲器中,F(xiàn)PGA加電后驅(qū)動配置時鐘,從片外存儲器載入配置信息。在被動模式下,F(xiàn)PGA作為從屬器件,需要外部控制器將數(shù)據(jù)寫入FPGA配置存儲器中。配置數(shù)據(jù)可以存放在系統(tǒng)任何存儲設備中,如硬盤、主存、FLASH,甚至可以嵌入CPU的執(zhí)行代碼,配置方式更靈活。JTAG模式通常作為系統(tǒng)的調(diào)試模式,主要用于開發(fā)環(huán)節(jié)對芯片功能進行測試。XC7VX1140T作為Xilinx Virtex?7系列中的最高檔芯片,能夠支持主動串行、被動串行、JTAG、并行(Select MAP)等多種配置模式[9]。其中Select MAP被動模式是速度最快的并行配置方式,本文采用該模式實現(xiàn)系統(tǒng)的動態(tài)重構。
3.2 被動Select MAP模式
被動Select MAP模式下有×8,×16和×32三種位寬可供選擇,主設備可以是微處理器、微控制器、DSP、CPLD等,主從設備的連接關系如圖2所示。
CLOCK信號為控制信號和數(shù)據(jù)的采樣時鐘,CS_B為片選,RDWR_B為配置讀/寫控制信號。并行Select MAP端口配置數(shù)據(jù)加載時序如圖3所示。
配置過程包括初始化、配置啟動、配置數(shù)據(jù)加載、CRC校驗和START?UP五個步驟:
(1) 初始化。主設備首先拉低CONFIG_START信號啟動配置過程,250 ns后將CONFIG_START信號拉高;FPGA采樣到CONFIG_START信號為低后啟動初始化,完成后將DONE信號置低。
(2) 清空配置存儲器。主設備拉低INIT_START信號,F(xiàn)PGA采樣到該信號后,自動清空配置存儲器;控制器可延長INIT_START信號拉低的時間確保配置存儲器被清空,隨后拉高INIT_START信號表示初始化完成。
(3) 配置數(shù)據(jù)加載。配置存儲器清空后,F(xiàn)PGA對配置模式引腳進行采樣,確定數(shù)據(jù)加載方式;FPGA在CCLK時鐘的上升沿采樣配置數(shù)據(jù),寫入配置存儲器。
(4) CRC校驗。FPGA在加載配置數(shù)據(jù)的同時計算CRC值,并將結果和配置文件中內(nèi)置的CRC值進行比較,如果不一致,則說明數(shù)據(jù)加載發(fā)生錯誤,F(xiàn)PGA隨即將INIT_B引腳置低,中斷配置過程??刂破髟谂渲眠^程中檢測到INIT_B引腳被置低,則立即拉低CONFIG_START,重啟配置過程。
(5) START?UP。當最后一個數(shù)據(jù)接收完成并校驗無誤后,F(xiàn)PGA將DONE信號置為高電平,表示FPGA配置完成;將所有I/O引腳由三態(tài)切換到用戶設置的狀態(tài);對所有邏輯進行復位,由配置狀態(tài)過渡到用戶狀態(tài)。
4 雙FPGA系統(tǒng)全局動態(tài)重構
4.1 系統(tǒng)介紹
本設計中采用雙FPGA芯片,即使采用一塊小規(guī)模的Virtex?7系列FPGA芯片作為控制器來動態(tài)配置目標FPGA芯片。Virtex?7是全球首款28 nm FPGA系列,與Virtex?6器件相比,系統(tǒng)性能提高1倍,功耗降低[12],信號處理能力提升1.8倍,I/O帶寬提升1.6倍,存儲帶寬提升2倍,達到2 133 Mb/s,是業(yè)界密度最高的FPGA。該系列頂級的XC7VX1140T芯片集成了178 000個Slice,總計達1 139 200個邏輯單元;1 880個36 Kb Block RAM存儲模塊,總計67 680 Kb存儲容量;片內(nèi)還集成了3 360個DSP模塊,可達到5 335 Gb MACS的峰值計算性能[10]。本設計采用V7系列較小規(guī)模的XC7VX330T芯片作為接口控制器,330T芯片內(nèi)部包含個51 000個Slice,750個32 Kb BlockRAM和1 120個DSP,此外還集成了2個PCI?E端點(支持第二代PCI?E×8接口)和以太網(wǎng)MAC(媒體訪問控制器)模塊及其他增強型IP Core、系統(tǒng)監(jiān)控模塊以及DCM (數(shù)字時鐘管理器)模塊等,是實現(xiàn)數(shù)據(jù)交互和對目標FPGA芯片(即算法FPGA)實現(xiàn)動態(tài)配置的理想選擇。
PCI?E×8接口是主機和算法加速器之間的主要互連通路,用于數(shù)據(jù)交互,傳遞操作指令、原始數(shù)據(jù)、計算結果和算法FPGA重構所需的配置流文件,有效數(shù)據(jù)傳輸帶寬為1.0 GB/s。控制FPGA和算法FPGA之間通過兩個獨立的雙向128 b數(shù)據(jù)通道相連,算法FPGA通過這兩個數(shù)據(jù)通道經(jīng)控制FPGA與主機實現(xiàn)數(shù)據(jù)交互,峰值數(shù)據(jù)傳輸帶寬為6.4 GB/s。此外,控制FPGA還和算法FPGA的并行配置端口相連,支持32 b并行高速配置,有效數(shù)據(jù)傳輸帶寬為160 MB/s。
4.2 全局動態(tài)重構
圖4為雙FPGA原型系統(tǒng)全局動態(tài)重構示意圖。采用雙FPGA原型系統(tǒng)的好處是可以靈活控制數(shù)據(jù)的I/O操作和動態(tài)配置全部過程。系統(tǒng)的動態(tài)重構過程由主機,PCI?E接口,CPLD,PROM,SRAM部件共同參與完成。由主機生成FPGA配置數(shù)據(jù),并通過PCI?E接口向配置控制器XC7VX330T發(fā)出重構命令和配置數(shù)據(jù)。XC7VX330T的通用I/O接口與XC7VX1140T的Select MAP配置端口相連,作為控制器發(fā)起配置過程。系統(tǒng)動態(tài)重構過程如下(圖4中的序號對應動態(tài)重構過程編號):endprint
(1) 采用靜態(tài)重構方法將控制FPGA(XC7VX330T)的配置數(shù)據(jù)通過JTAG接口預先下載至PROM中;
(2) 設備加電后,CPLD從兩塊PROM芯片的4個Bank中選擇一個設計加載至控制FPGA。加載過程完成后,XC7VX330T自動復位并進入正常工作狀態(tài),通過PCI?E接口與主機建立連接;
(3) 控制FPGA接收到主機發(fā)出的算法FPGA重構命令,進入啟動配置狀態(tài);
(4) 控制FPGA從PCI?E接口接收主機發(fā)送的配置數(shù)據(jù),并緩存在SRAM中;
(5) 配置數(shù)據(jù)接收完成后,控制FPGA啟動對算法FPGA(XC7VX1140T)的動態(tài)重構過程,按照芯片被動模式下的配置時序?qū)⑴渲梦募腟RAM存儲器中讀出,通過XC7VX1140T芯片SelectMAP32 配置端口寫入FPGA配置存儲器;
(6) 配置過程結束后,XC7VX1140T芯片返回配置完成信號(DONE),并自動復位,進入正常工作狀態(tài);
(7) XC7VX330T芯片將配置完成信號返回給主機,配置過程結束,算法FPGA芯片進入正常工作狀態(tài),開始執(zhí)行計算任務;
(8) 在正常工作狀態(tài)下,如果XC7VX330T再次收到主機發(fā)出的重構命令,則重復步驟(4)~步驟(7)對算法FPGA實現(xiàn)動態(tài)重構。
4.3 動態(tài)任務切換
在系統(tǒng)工作過程中,主機和FPGA之間通過片外存儲器的指定地址空間,采用DMA方式經(jīng)PCI?E接口實現(xiàn)數(shù)據(jù)交互。對于簡單的單個應用,主機首先通過配置通道將配置文件加載至FPGA,數(shù)據(jù)發(fā)送后啟動計算過程,之后不再干預FPGA的工作,直到計算結果有效。而對包含不同算法和多個處理步驟的較復雜應用則需要主機和FPGA的高效協(xié)同:主機在計算的特定環(huán)節(jié)向FPGA發(fā)出操作命令,通過數(shù)據(jù)和配置通道提供配置文件和計算參數(shù),對FPGA實現(xiàn)動態(tài)重構;FPGA則使用中斷和狀態(tài)寄存器報告程序的執(zhí)行狀態(tài)。主機根據(jù)當前應用類型和用戶指定的算法選擇合適的處理流程,在文件庫中按次序調(diào)用相應的配置文件,通過動態(tài)重構將配置文件發(fā)送給FPGA,實現(xiàn)不同應用和處理過程之間的任務切換,讓不同應用程序或程序段分時使用硬件資源。通過自動改變硬件配置來適應正在運行的用戶程序,可實現(xiàn)在不同計算任務之間進行快速切換,大大提高對應用的整體加速效果。
5 結 語
本文基于雙FPGA芯片的可重構原型系統(tǒng),提出了一種系統(tǒng)高速全局動態(tài)重構設計方法。利用Xilinx Virtex?7系列FPGA的常規(guī)配置通道,使用一片規(guī)模較小的FPGA作為重構控制器對大規(guī)模算法FPGA芯片實現(xiàn)全局動態(tài)重構,芯片重構時間小于60 ms,可以實現(xiàn)不同算法和應用的快速切換。與幾十秒乃至上百秒的常規(guī)FPGA邏輯下載方法相比,配置效率提高了2~3個數(shù)量級,從而有效提高了系統(tǒng)的實際計算效率。
注:本文通訊作者為李暉宙。
參考文獻
[1] HAUCK S, DEHON A. Reconfigurable computing: the theory and practice of FPGA?based computing [M]. San Francisco: Morgan Kaufmann Publisher, 2008.
[2] 王志遠,王建華,徐旸.可重構計算綜述[J].小型微型計算機系統(tǒng),2009,30(6):1203?1207.
[3] MORENO J M, MADRENAS J, CABESTANY J, et al. Realization of self?repairing and evolvable hardware structures by means of implicit self?configuration [C]// Proceedings of the First NASA/DoD Workshop on Evolvable Hardware. [S.l.]: IEEE, 1999: 182?187.
[4] 覃祥菊,朱明程,張?zhí)?,?FPGA動態(tài)可重構技術原理及實現(xiàn)方法分析[J].電子器件,2004,27(2):277?282.
[5] MAESTRE R, KURDAHI F J, FERNANDEZ M, et al. A framework for reconfigurable computing: task scheduling and context management [J]. IEEE transactions on very large integration systems: system level design, 2001, 9(6): 858?873.
[6] EBELING Carl. Rapid: a configurable architecture for compute?intensive applications [EB/OL]. [2016?03?21]. http://www.cs.washing ton.edu/research/lis/rapid/overview. 2016.
[7] 李昆吉.FPGA動態(tài)可重構技術及其應用研究[D].哈爾濱:哈爾濱工業(yè)大學,2012.
[8] 邵龍.一種基于改進型游程編碼的FPGA動態(tài)重構方法[J].電子器件,2014,37(5):1009?1012.
[9] Xilinx Corporation Product Specification. Virtex?7 Series FPGAs configuration user guide, UG470 (v1.10) [EB/OL]. [2016?04?22]. http://www.xilinx.com/support.html#documentation.
[10] Xilinx Corporation Product Specification. Virtex?7 series FPGAs overview, DS180 (V1.17) [EB/OL]. [2015?06?21]. http://www.xilinx.com/support/documentation/data_sheets/ds180_7Series_
Overview.pdf.endprint