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