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