付怡雯,蔣 林,山 蕊,吳皓月,樊 萌
(1.西安郵電大學 電子工程學院,西安 710121; 2.西安科技大學 集成電路實驗室,西安 710600)
近年來隨著高清視頻的發(fā)展,視頻算法數(shù)據(jù)量劇增,數(shù)據(jù)并行性高,應用場景復雜多變,迭代更新快,對實現(xiàn)平臺提出了更高的要求。專用硬件平臺靈活性較差,中央處理器(Central Processing Unit,CPU)設計和制造成本高,而可重構陣列處理器具有優(yōu)異的計算效能和靈活性,成為實現(xiàn)視頻算法的主流平臺[1]。視頻算法數(shù)據(jù)處理量大、簇間數(shù)據(jù)交互頻繁,如何將這些處理元(Processor Element,PE)高效互連成為限制可重構視頻陣列處理器性能的主要瓶頸[2]。
傳統(tǒng)的互連方式中,電長線互連方式在無沖突時訪問周期短、設計簡單,但可擴展性差、延遲大;電的交叉互連方式在無沖突時訪問延遲小,具備一定的可擴展性,但互連線較多,當系統(tǒng)規(guī)模增大后,設計復雜度急劇增加[3];片上網(wǎng)絡(Network on Chip,NOC)是一種全新的互連通信架構,包括了mesh、torus和flattree等結構,可擴展性好,在局部通信情況下延遲較小,但在遠距離通信情況下延遲較大[4]。
結合電互連方式在局部通信中實現(xiàn)簡單和延遲小,以及光互連方式在遠距離通信中帶寬高、抗干擾能力強和延遲小的特點,進行了光電混合互連[5-6]。本文基于BEE4開發(fā)平臺設計實現(xiàn)了可重構視頻陣列處理器光電混合互連原型系統(tǒng),并以標準測試序列akiyo_qcif_176×144.yuv為例進行測試。
本文提出的可重構視頻陣列處理器光電混合互連系統(tǒng)結構由1 024個同構輕核處理元(Thin-Core Processor Elements,TCPE)陣列組成,每16個TCPE構成一個輕核處理元簇(Processor Element Group,PEG)??芍貥嬕曨l陣列處理器系統(tǒng)包括TCPE、數(shù)據(jù)/指令存儲器和虛通道路由器等模塊。TCPE主要由指令寄存器文件、數(shù)據(jù)/指令存儲器和算術邏輯運算單元等組成,采用load/store模式的精簡指令集計算機(Reduced Instruction Set Computer,RISC)結構實現(xiàn)。每個TCPE包含一個容量為30×512bit的指令存儲器和一個容量為16×512bit的數(shù)據(jù)存儲器。相鄰TCPE間通過鄰接短線將東、南、西、北4個方向的鄰接寄存器互連,完成數(shù)據(jù)通信。
圖1所示為由可重構視頻陣列處理器與高速交換單元、光電轉換器和光總線結構共同構成的可重構視頻陣列處理器光電混合互連系統(tǒng)。當系統(tǒng)復位完成后,首先通過電控制信號對光鏈路按照預期的鏈路結構進行配置;當處理元進行數(shù)據(jù)通信時,首先發(fā)送訪問請求信號,通過光電轉換器將該請求信號發(fā)送到光鏈路,經(jīng)過光鏈路的交換,送往指定輸出端口。當數(shù)據(jù)返回時,沿相反的傳輸路徑進行傳輸[7]。
圖1 可重構視頻陣列處理器光電混合互連系統(tǒng)結構
三維集成工藝為核間通信提供了新的解決方案,能縮短通信距離、降低通信延遲[8]。傳統(tǒng)電互連方式可通過硬件編程,在單片現(xiàn)場要編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)上進行功能驗證,然而由于工藝水平的限制,集成光器件無法在FPGA芯片內部實現(xiàn),且現(xiàn)有技術無法做到三維集成,因此采用片外光器件模擬片上光互連系統(tǒng)來達到原型驗證。
光電混合互連FPGA原型系統(tǒng)結構如圖2所示。簇內電通信采用單片F(xiàn)PGA進行系統(tǒng)驗證,而簇間光通信則通過兩片F(xiàn)PGA上的4通道小型可插拔+(Quad Small Form-factor Pluggable Plus,QSFP+)光模塊實現(xiàn)光纖互連,以達到簇間通信驗證的目的。
圖2 光電混合互連FPGA原型系統(tǒng)結構圖
Aurora IP配置是實現(xiàn)簇間光通信的重要部分。Aurora IP是Xilinx公司開發(fā)的用于點對點串行通信的數(shù)據(jù)傳輸協(xié)議,在FPGA開發(fā)過程中,通過引腳綁定,將I/O口連接到QSFP+光口便可實現(xiàn)FPGA間的數(shù)據(jù)通信。Aurora IP鏈路結構如圖3所示。
為了對Aurora IP進行功能仿真,需要在測試文件中調用兩個Aurora IP核,分別用于兩側的用戶應用,用信號線將數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端互連,以模擬實際鏈路中的數(shù)據(jù)傳輸。測試方案如圖4所示。圖中,LANE_UP和CHANNEL_UP信號為鏈路狀態(tài)指示,當信號為高電平時,說明當前通信鏈路已經(jīng)建立完成;RXP、RXN、TXP和TXN分別為數(shù)據(jù)的接收與發(fā)送信號,用于同另一側的用戶進行數(shù)據(jù)通信。
圖3 Aurora IP鏈路結構示意圖
圖4 Aurora IP測試方案框圖
BEE4平臺共集成4片Xilinx V6系列FPGA芯片,現(xiàn)對其中兩片F(xiàn)PGA芯片進行通信,每個芯片配有兩路QSFP+光接口,支持40Gbit/s的傳輸速率。為了驗證通過Aurora IP核搭建的光鏈路的正確性,在BEE4平臺上接入QSFP+光模塊與Aurora IP核互連,形成光通信鏈路,在兩片F(xiàn)PGA上分別進行發(fā)送和接收邏輯的設計,進而驗證光通信鏈路數(shù)據(jù)傳輸?shù)恼_性。兩片F(xiàn)PGA之間光通信鏈路的設計方案如圖5所示。由于所使用的光纖在同一時刻只允許進行單向通信,雖然Aurora IP支持全雙工方式進行數(shù)據(jù)通信,但在用戶邏輯端需要避免對光纖鏈路發(fā)送與接收的爭用。
圖5 兩片F(xiàn)PGA之間光通信鏈路設計方案示意圖
用Verilog硬件描述語言對用戶發(fā)送和接收邏輯進行設計,F(xiàn)PGA A和B端的邏輯設計框圖分別如圖6和7所示。采用狀態(tài)機的方式連續(xù)發(fā)送4個數(shù)據(jù),在 modelsim 10.1d環(huán)境下進行功能仿真,在Xilinx ISE14.7開發(fā)套件下選擇相應器件進行邏輯綜合。
在BEE4平臺上,將兩個QSFP+光模塊與對應光口連接,而后將BPS環(huán)境下生成的FPGA A和B端的配置流文件分別下載到相應FPGA上,通過Analyzer工具加載chipscope文件進行波形觀測,看接收到的數(shù)據(jù)是否與發(fā)送數(shù)據(jù)一致。
圖6 FPGA A端邏輯設計框圖
圖7 FPGA B端邏輯設計框圖
通過編寫測試和檢測文件得到的仿真波形如圖8所示。圖中,frame_gen1欄中產(chǎn)生待發(fā)送的數(shù)據(jù),當CHANNEL_UP信號為高電平且TX_DST_RDY_N信號為低電平時,說明鏈路建立完成,且接收方已做好接收數(shù)據(jù)的準備,此時發(fā)送數(shù)據(jù)使能信號TX_SRC_RDY_N和發(fā)送起始位信號TX_SOF_N拉低,數(shù)據(jù)開始傳輸,當?shù)竭_最后一位時,發(fā)送使能信號TX_SRC_RDY_N拉高,發(fā)送結束位信號TX_EOF_N 拉低,數(shù)據(jù)傳輸結束。在frame_check2欄中,接收數(shù)據(jù)使能信號RX_SRC_RDY_N拉低,接收起始位信號RX_SOF_N拉低,數(shù)據(jù)開始接收,當接收到最后一位時,接收數(shù)據(jù)使能信號RX_SRC_RDY_N拉高,接收結束位信號RX_EOF_N拉低,數(shù)據(jù)接收完成。圖中可以看到發(fā)送端數(shù)據(jù)信號TX_D與接收端數(shù)據(jù)信號RX_D相同,說明數(shù)據(jù)傳輸正確。(圖中所有信號的高電平都為1,低電平都為0)
圖8 Aurora IP仿真波形圖
在對Xilinx Aurora IP進行了功能驗證后,選用BEE4板進行光通信鏈路的FPGA驗證。發(fā)送端用戶邏輯的仿真波形如圖9所示。從圖中可以看到,當tx_dst_rdy信號為高電平時,可以發(fā)送數(shù)據(jù),之后發(fā)送端使能信號tx_src_rdy拉高,同時發(fā)送數(shù)據(jù)信號tx_data開始發(fā)送數(shù)據(jù),連續(xù)4個時鐘周期后,發(fā)送端使能信號tx_src_rdy拉低,數(shù)據(jù)發(fā)送完成。
圖9 發(fā)送端用戶邏輯的仿真波形圖
在BEE4平臺上,將BPS環(huán)境下生成的FPGA A和B端的配置流文件分別下載到相應的FPGA上進行波形觀測,觀測到FPGA A和B端的波形分別如圖10和11所示。
圖10 FPGA A端觀測結果
圖11 FPGA B端觀測結果
在FPGA A端,當光模塊接入對應光口,且FPGA上完成電復位,Aurora IP核完成初始化后,數(shù)據(jù)發(fā)送準備信號tx_dst_rdy拉高,表示鏈路建立完成。在操作終端對FPGA A端進行復位后,數(shù)據(jù)發(fā)送使能信號tx_src_rdy拉高,發(fā)送數(shù)據(jù)信號tx_data有效,開始發(fā)送數(shù)據(jù),此處發(fā)送一組數(shù)據(jù)111、222、333和444,發(fā)送完成后,數(shù)據(jù)發(fā)送使能信號tx_src_rdy拉低,發(fā)送數(shù)據(jù)信號tx_data無效。在FPGA B端同樣完成上電復位和Aurora IP核的初始化后,數(shù)據(jù)接收使能信號rx_src_rdy拉高,此時數(shù)據(jù)接收信號rx_data有效,當接收完成后,數(shù)據(jù)接收使能信號rx_src_rdy拉低,數(shù)據(jù)接收信號rx_data無效。由圖可見接收到的數(shù)據(jù)為111、222、333和444,與發(fā)送端發(fā)送的數(shù)據(jù)一致,驗證結果正確。
課題研究組在前期對高效視頻編碼(High Efficient Video Coding,HEVC)做并行化映射的過程中,進行了不斷探索與改進,在BEE4平臺的兩片F(xiàn)PGA芯片上,實現(xiàn)了HEVC編碼過程。為了使片間通信延遲較小,同時驗證簇間光鏈路的正確性,將片間的電通信以光通信的方式進行替代,圖12所示為簇間光鏈路FPGA驗證方案示意圖。圖中,DIM為數(shù)據(jù)輸入存儲器,用于存放原始圖像的視頻序列;DOM為視頻序列處理結果的存儲器,用于存放處理后的像素值。在兩片F(xiàn)PGA之間,通過接入QSFP+光模塊構建片間光通信鏈路。
圖12 簇間光鏈路FPGA驗證方案示意圖
驗證方案中幀內環(huán)路使用96個處理元(6個PEG)來完成編碼塊大小為8×8的包括幀內預測、量化變換、反量化反變換和去塊濾波在內的幀內環(huán)路算法的處理。幀間環(huán)路使用112個處理元(7個PEG)來完成8×8的包括整數(shù)運動估計、分數(shù)運動估計、運動補償、量化變換、反量化反變換和去塊濾波在內的幀間環(huán)路算法的處理。以分辨率176×144的標準測試序列akiyo_qcif_176×144.yuv為例進行測試,幾個關鍵算法間的數(shù)據(jù)交互仿真波形如圖13~18所示。
圖13 DIM和幀內預測數(shù)據(jù)交互仿真波形
圖14 幀內預測和圖像重建數(shù)據(jù)交互仿真波形
圖15 幀內環(huán)路圖像重建和去塊濾波數(shù)據(jù)交互仿真波形
圖16 整數(shù)運動估計和分數(shù)運動估計數(shù)據(jù)交互仿真波形
圖17 運動補償和量化變換數(shù)據(jù)交互仿真波形
在PEG10中處理的是幀內預測算法,DIM和幀內預測數(shù)據(jù)交互仿真波形如圖13所示。圓圈處表示從DIM中取出的數(shù)據(jù)放在PEG10的PE00以1號地址為起始的地址中。圖13中1000表示PEG10中的PE00,圖14中0133表示PEG01中的PE33,下文同理。
幀內預測和圖像重建數(shù)據(jù)交互仿真波形如圖14所示,圓圈中的數(shù)表示PE1033給PE0133通過路由的方式傳數(shù)。數(shù)據(jù)傳過來后存儲在PE0133以100號地址為起始的地址中。
幀內環(huán)路的圖像重建和去塊濾波數(shù)據(jù)交互仿真波形如圖15所示。圓圈表示PE0130通過鄰接互連方式給PE0033傳數(shù)。由于數(shù)據(jù)是從右向左傳輸,所以當 PE0130的 wo_exu_wr=1,no_exu_data=34時,表示將數(shù)據(jù)34傳出去;當PE0033的ei_w_r=1、ei_data=-94時,表示PE0033收到數(shù)據(jù)34。
圖18 幀間環(huán)路圖像重建和去塊濾波數(shù)據(jù)交互仿真波形
整數(shù)運動估計和分數(shù)運動估計數(shù)據(jù)交互仿真波形如圖16所示。圓圈表示PE1200接收到PE0230給傳的兩個1,由于數(shù)據(jù)是從上向下傳輸,所以PE1200的ni_w_r=1、ni_data=1。
運動補償和量化變換的數(shù)據(jù)交互仿真波形如圖17所示。圓圈表示PE0403通過鄰接互連的方式給PE0500傳數(shù)。由于數(shù)據(jù)是從左向右傳輸,所以當PE0403的eo_exu_wr=1、eo_exu_data=-72時,表示將數(shù)據(jù)-72傳出去;當PE0500的wi_w_r=1、wi_data=-72時,表示PE0500收到數(shù)據(jù)-72。一次數(shù)據(jù)交互完成,一共進行64次。
幀間環(huán)路圖像重建和去塊濾波的數(shù)據(jù)交互仿真波形如圖18所示。圓圈表示PE1530通過鄰接互連的方式給PE1433傳數(shù)。由于數(shù)據(jù)是從右向左傳輸,所以當 PE1530的 wo_exu_wr=1、wo_exu_data=33時,表示將數(shù)據(jù)33傳出去;當PE1433的ei_w_r=1、ei_data=33時,表示PE0500收到數(shù)據(jù)33。一次數(shù)據(jù)交互完成,一共進行64次。
測試結果表明,以光鏈路替代片間電通信能夠正確完成HEVC編碼過程。
在Xilinx V6系列芯片上通過Xilinx ISE對設計進行綜合,綜合結果如表1所示。寄存器占用90 658個,利用率為13%;查找表(Look-Up-Table,LUT)占用215 783個,利用率為62%;綜合頻率為51.327MHz。
表1 綜合結果
運動補償算法在可重構視頻陣列結構中并行實現(xiàn)的性能如表2所示。本算法可以實現(xiàn)塊大小的切換,靈活性較高。當處理一個8×8的塊大小時,串行執(zhí)行運動補償算法需要2.196s,而并行執(zhí)行只需要0.257s,加速比達到8.53。
表2 運動補償算法性能
一些文章實現(xiàn)了HEVC中一兩個重要算法,但本文最后的測試用例下片間光鏈路實現(xiàn)了包括運動補償、去塊濾波、幀內預測、整數(shù)運動估計和分數(shù)運動估計等多個算法,其復雜性更高。測試用例下電互連與光互連時間比較如表3所示,因光互連的Aurora IP配置需要較長時間,所以整體測試時間較長,但其板間傳輸時間僅為電互連的一半。FPGA綜合頻率比較如表4所示,雖然本文頻率優(yōu)勢不是很明顯,但光通信帶寬高和損耗小的優(yōu)勢與傳統(tǒng)的電互連相比,在大規(guī)模電路遠距離傳輸和光通信領域發(fā)展空間巨大。
表3 時間比較
表4 FPGA綜合頻率比較
本文提出了一種光電混合互連結構,并將其應用在視頻陣列處理器架構中。以Xilinx Aurora IP為基礎,在BEE4平臺上搭建了可重構視頻陣列處理器光電混合互連原型系統(tǒng)。為了驗證原型系統(tǒng)的正確性,通過典型算法HEVC進行測試,實驗結果表明,以光鏈路替代片間電通信能夠正確實現(xiàn),且板間傳輸時間僅為電互連的一半。也為光電混合互連提出一種仿真驗證方案。
由于光具有帶寬高和延時小的優(yōu)勢,未來在多簇間和遠距離通信中應用廣泛。后期將對片間光鏈路進行改進,并采取多數(shù)據(jù)發(fā)送,其性能將會有大幅度提高。