文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2014)07-0040-04
為打破國外壟斷,研發(fā)擁有自主知識產(chǎn)權(quán)的圖形處理器GPU(Graphics Processing Unit)對國民經(jīng)濟(jì)以及增強(qiáng)國防力量具有極其重要的意義,。西安郵電大學(xué)GPU項目組2009年研發(fā)了GPU及其配套軟件OpenGL,。為了驗證設(shè)計的GPU,并為GPU應(yīng)用開發(fā)建立平臺,,本文研發(fā)了一個異構(gòu)多核片上系統(tǒng)SoC(System on Chip)平臺,。
本文在分析了嵌入式開源LEON3處理器[1]、Linux操作系統(tǒng)和西安郵電大學(xué)自主研發(fā)的可編程圖形處理器的基礎(chǔ)上,,提出異構(gòu)多核SoC圖形系統(tǒng)[2]的設(shè)計,,最后在DNV6_F2PCIE FPGA開發(fā)板進(jìn)行系統(tǒng)驗證。
1 系統(tǒng)論證
1.1 研究路線
首先構(gòu)建一個C++的GPU算法仿真平臺,,并在其上進(jìn)行圖像渲染算法的研究,;其次設(shè)計搭建System Verilog[3]建立驗證平臺,并開始Verilog語言設(shè)計硬件和OpenGL相關(guān)軟件的開發(fā),,為了加快硬件設(shè)計速度,,采用了第三方IP;由于此系統(tǒng)電路規(guī)模較大,,選擇Xilinx公司的XC6VLX550T[4]進(jìn)行原型開發(fā),,并運(yùn)行大量裸機(jī)OpenGL應(yīng)用程序;最后加上嵌入式LEON3處理器,、Linux操作系統(tǒng),,通過軟件驅(qū)動和硬件接口完成CPU與GPU的數(shù)據(jù)交互,實現(xiàn)了一個完整的移動異構(gòu)多核SoC圖形處理系統(tǒng),,通過外部可編程的方式在FPGA上驗證整個SoC系統(tǒng),,進(jìn)而驗證硬件設(shè)計的正確性。
1.2 關(guān)鍵技術(shù)與可行性分析
本系統(tǒng)采取軟硬件協(xié)同設(shè)計技術(shù),、IP設(shè)計和復(fù)用技術(shù),、超深亞微米設(shè)計技術(shù)。涉及的關(guān)鍵技術(shù)包括系統(tǒng)描述,、高層次的算法分析與設(shè)計,、軟硬件的劃分、語言和編譯器設(shè)計,、微處理器設(shè)計,、Linux操作系統(tǒng)在LEON3處理器上的運(yùn)行,、驅(qū)動軟件和硬件接口設(shè)計、圖形處理器的軟硬件協(xié)同設(shè)計,、異構(gòu)系統(tǒng)的協(xié)同仿真驗證以及圖形界面的生成,。針對上述涉及的關(guān)鍵技術(shù)提出了理論分析與仿真、驗證和原型測試相結(jié)合的研究方法,,制訂了從系統(tǒng)的算法級到電路的RTL級,,再到原型系統(tǒng)實現(xiàn),逐級細(xì)化,、逐級驗證的技術(shù)路線,。
采用Top-to-Down方法[5]設(shè)計SoC芯片,充分考慮了異構(gòu)多核SoC可編程圖形處理器設(shè)計過程中所面臨的挑戰(zhàn),,保證了芯片功能和性能技術(shù)指標(biāo)達(dá)到設(shè)計要求,,有利于縮短開發(fā)周期,降低開發(fā)成本及產(chǎn)品的單片價格,,符合SoC研究設(shè)計的客觀規(guī)律,。
2 系統(tǒng)的硬件設(shè)計
系統(tǒng)的硬件設(shè)計主要包括作為系統(tǒng)主機(jī)的嵌入式開源LEON3處理器設(shè)計和作為從機(jī)的可編程圖形處理器設(shè)計。系統(tǒng)的整體硬件結(jié)構(gòu)如圖1所示,。
系統(tǒng)主要數(shù)據(jù)流向:
(1)2D程序:上位機(jī)將鏡像文件通過JTAG傳到CPU-DDR中,,CPU從中取出相應(yīng)2D數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果通過AHB/APB Bridge傳到VGA,,再將VGA的數(shù)據(jù)發(fā)送到GPU中的顯控,,最終傳到顯示器上顯示。
(2)3D程序:CPU從CPU-DDR中取出相應(yīng)的3D命令數(shù)據(jù)環(huán),,將數(shù)據(jù)環(huán)通過AHB Bridge傳到GPU,;GPU經(jīng)過各級渲染,將渲染結(jié)果存儲到GPU-DDR中,;顯控通過存儲管理器從中取出數(shù)據(jù),,傳到顯示器上顯示。
2.1 嵌入式LEON3處理器的設(shè)計
LEON3(basic version)作為整個系統(tǒng)的主機(jī),,是一款由歐洲航天總局旗下的Gaisler Research公司開發(fā)研制的32 bit,、符合SPARC V8[6]架構(gòu)的、可配置,、可綜合適用于SoC設(shè)計中的開源處理器IP核[7],,遵循GNU LGPL協(xié)議。LEON3內(nèi)部包含7級整數(shù)流水線,,具有可配置的TLB的內(nèi)存管理MMU(Memory Management Unit)單元,,支持硬件乘/除法器以及分立的指令與數(shù)據(jù)緩存,并將其設(shè)計為4核,。它的源代碼由可綜合的VHDL代碼構(gòu)成,,同時LEON系列處理器的性能也比較理想,,可以達(dá)到大約0.85 MIPS/MHz。更大的好處是LEON處理器是一個公開源代碼,,遵循GNU,。通過高速的AMBA AHB[8]總線鏈接內(nèi)存控制器及高速外部接口,低速的AMBA APB總線實現(xiàn)片上外設(shè)的接口,,如定時器,、串口、VGA等,。
作為整個系統(tǒng)的主機(jī),,其功能如下:
(1)處理上位機(jī)發(fā)來的命令,,并在主存中設(shè)置命令數(shù)據(jù)環(huán),,將處理命令放入環(huán)中;
(2)采用Linux操作系統(tǒng)作為系統(tǒng)運(yùn)行平臺,,完成圖形驅(qū)動處理,;
(3)管理系統(tǒng)內(nèi)存和輸入/輸出設(shè)備(鍵盤、鼠標(biāo),、顯示器),;
(4)運(yùn)行2D程序;
(5)支持Sparc V8指令集,、多核運(yùn)行,;
(6)支持以太網(wǎng)、串口,、PS2,、GPIO、WatchDog,、Timer等外設(shè),,支持AHB總線擴(kuò)展。
LEON3結(jié)構(gòu)如圖2所示,。
2.2 可編程圖形處理器硬件設(shè)計
可編程圖形處理器采用傳統(tǒng)GPU架構(gòu),,并結(jié)合了可編程技術(shù),經(jīng)過9級流水線處理后,,完成了一個3D基本圖元的渲染過程,。作為整個系統(tǒng)的從機(jī),各級流水線及功能如下:
(1)命令處理器(CMD,,1 core):CPU在主存中設(shè)置命令數(shù)據(jù)環(huán),,將處理命令放入環(huán)中,命令處理器通過總線接口,、DMA引擎從環(huán)中獲取命令,、數(shù)據(jù)或向量地址并進(jìn)行解析,,如果獲得的命令是3D處理命令,則將命令下發(fā)給3D引擎,;如果是命令處理器需要處理的命令(緩沖區(qū)對象操作,、顯示列表操作等),則在命令處理器中進(jìn)行處理,,而不發(fā)送給3D引擎,。
(2)頂點(diǎn)染色器(VS,2 core):完成幾何變換(平移,、縮放,、旋轉(zhuǎn))、光照染色等功能,。
(3)圖元裝配器(AS,,1 ASIC):圖元裝配將從VS發(fā)送出來的帶有屬性的頂點(diǎn)根據(jù)用戶指定裝配模式(由glBegin指定)裝配為點(diǎn)、線,、三角形,。經(jīng)過AS處理后,GPU后續(xù)的流水部件將不會識別頂點(diǎn),,而是識別基本圖元點(diǎn),、線和三角形。
(4)平面裁剪(CLIP-Plane,,1 core):根據(jù)用戶自定義裁剪平面(最多支持6個自定義裁剪平面)對基本圖元進(jìn)行裁剪,。
(5)視景體裁剪(CLIP-3D,1 core):根據(jù)用戶所定義的視景體對基本圖元進(jìn)行視景體裁剪操作,。
(6)視窗變換(HCW,,1 core):完成3D坐標(biāo)向屏幕坐標(biāo)的轉(zhuǎn)換,經(jīng)過HCW的處理后,,基本圖元將轉(zhuǎn)變?yōu)槠聊簧纤姷降膱D元,,為后續(xù)的光柵化做準(zhǔn)備。
(7)光柵化(Rasterization,,5 core):Rasterization根據(jù)圖元的屏幕坐標(biāo)計算圖元內(nèi)部的所有像素值,,并將像素傳送給像素染色器。
(8)像素染色器(PS,,4 core):根據(jù)Rasterization所發(fā)送的片段信息計算片段的具體顏色,,如果啟用了紋理操作,則根據(jù)紋理函數(shù)參數(shù)信息對片段進(jìn)行像素染色,,最終將片段染色的值傳送給段操作部件,。
(9)片段操作(Fragment,1 ASIC):接收PS所發(fā)送的片段信息,,對片段進(jìn)行后期的FOP等處理,,處理完畢后將最終的像素值寫入Frame Buffer中,。
可編程圖形處理器由15個處理器以及圖元裝配、片斷操作,、內(nèi)部圖像處理子集,、MMU和直接內(nèi)存存取DMA(Direct Memory Access)5個專用圖形加速單元所構(gòu)成。15個處理器均為可編程處理器,,其中CMD和PS為定點(diǎn)處理器,,其他的處理器為浮點(diǎn)處理器。圖像處理子集,、MMU和DMA功能如下:
(1)圖像處理子集(PS_IMG_PROC, 1 ASIC):完成對像素數(shù)據(jù)的處理,,以及紋理和霧相關(guān)信息的存儲。
(2)內(nèi)存管理[9](MMU,,1 ASIC):實現(xiàn)對GPU存儲空間分配,、存儲讀/寫控制、存儲空間回收以及存儲保護(hù),、地址映射等,,對有訪存要求的SoC圖形處理芯片渲染管線部件進(jìn)行仲裁并予以實時響應(yīng),協(xié)調(diào)各模塊對存儲的訪問,,保證各個模塊能夠順利地對存儲器進(jìn)行讀/寫操作;
(3)直接存儲訪問(DMA,,1 ASIC):從命令處理器那完全接管對總線的控制,,數(shù)據(jù)交換不再經(jīng)過命令處理器、圖像處理子集,,而直接在DDR或片上存儲與CPU內(nèi)存之間進(jìn)行數(shù)據(jù)傳送,。可編程圖形處理器結(jié)構(gòu)圖如圖3所示,。
可編程圖形處理器功能如下:
(1)支持OpenGL 1.3,;
(2)支持3D圖元及相應(yīng)幾何變換;
(3)支持緩沖區(qū)對象,、頂點(diǎn)數(shù)組和顯示列表,;
(4)每個時鐘周期可同時支持4個像素的處理;
(5)支持6個平面裁剪,、三維裁剪,;
(6)支持多達(dá)8盞燈的方向性光照和位置性光照;
(7)支持Phong和Gouraud兩種光照模型,;
(8)采用32位深度緩沖,,實現(xiàn)隱藏面消除;
(9)支持6幅紋理貼圖,;
(10)支持顏色,、深度,、累計、幀緩沖區(qū),;
(11)支持位圖,、圖像繪制、圖像讀取,、圖像復(fù)制等圖像操作,。
3 實驗數(shù)據(jù)
采用DINI公司DNV6_F2PCIE FPGA開發(fā)板驗證系統(tǒng),將LEON3集成到A片,,ISE14.4綜合頻率為86.895 MHz,,所占Slice為33%。將可編程圖形處理器集成到B片,,綜合頻率為97.032 MHz,,所占Slice為76%。在Dini公司配套的EMU軟件下,,GPU實際工作頻率最高為120 MHz(高于綜合頻率),,每個時鐘周期可同時支持4個像素的處理,其圖形渲染速度為120×4=480 MPixels/s,,顯示窗口為800×600,,顯示圖像大小為640×480,38個時鐘渲染完一個像素,,如圖4所示,。
本文對異構(gòu)SoC可編程圖像系統(tǒng)硬件設(shè)計進(jìn)行深入分析,并在FPGA上驗證,,得出了以下結(jié)論:
(1)采用開源LEON3處理器,,大大降低了系統(tǒng)硬件開發(fā)成本,加快了硬件開發(fā)速度,。
(2)CPU和GPU之間采用AHB總線通信,,滿足高性能、高時鐘頻率的系統(tǒng)模塊之間的數(shù)據(jù)交互,。
(3)采用自主研發(fā)的并行多核處理器架構(gòu),,由15個微處理器和硬件加速協(xié)處理器構(gòu)成可編程GPU。
(4)為了優(yōu)化系統(tǒng)性能和節(jié)省芯片面積,,部分微處理器的運(yùn)算單元采用了定點(diǎn)設(shè)計,,而其他處理器采用浮點(diǎn)設(shè)計,支持處理器并行SIMT運(yùn)算,,通過軟件協(xié)調(diào)圖形系統(tǒng)運(yùn)行精度,、性能、面積和功耗的平衡。
(5)為了加速圖形運(yùn)算,,設(shè)計了GPU的圖元裝配,、片段操作、圖像處理子集,、MMU和DMA 5個專用圖形加速單元,。
參考文獻(xiàn)
[1] Aeroflex Gaisler.LEON/GRLIB configuration and development guide[EB/OL].(2014-04)[2014-05-08].http://gaisler.com/products/grlib/guide.pdf.
[2] 王超.異構(gòu)多核可重構(gòu)片上網(wǎng)絡(luò)系統(tǒng)關(guān)鍵技術(shù)研究[D].合肥:中國科學(xué)技術(shù)大學(xué),2011.
[3] 山蕊,,蔣林,,李濤.基于System Verilog的可重用驗證平臺[J].電子技術(shù)應(yīng)用,2013,,39(5):128-131.
[4] Xlinx中文官方網(wǎng)址[EB/OL].(2014)[2014].http://china.xilinx.com/products/boards-and-kits/1-2BIW6U.htm.
[5] 沈理.SOC/ASIC設(shè)計驗證和測試方法學(xué)[M].廣州:中山大學(xué)出版社,,2006.
[6] SPARC International.The SPARC architecture manual,version 8[M].Prentice Hall,,1992.
[7] Aeroflex Gaisler.GRLIB IP library user′s manual version 1.3.0-B4133[EB/OL].(2013-01)[2014-05].http://gaisler.com.
[8] Aeroflex Gaisler.GRLIB IP core user′s manual version 1.3.0-B4133[EB/OL].(2013-07)[2014-05].http://gaisler.com.
[9] 肖靈芝.異構(gòu)多核圖形處理器存儲系統(tǒng)設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,,2013(5):38-40.