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