《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 異構(gòu)多核SoC可編程圖形系統(tǒng)硬件設(shè)計
異構(gòu)多核SoC可編程圖形系統(tǒng)硬件設(shè)計
2014年電子技術(shù)應(yīng)用第7期
周建偉1,韓俊剛1,李 濤1,杜慧敏2,焦繼業(yè)1
1.西安郵電大學(xué) 計算機學(xué)院,陜西 西安710061; 2.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安7
摘要: 采用開源LEON3(basic version)處理器,運行Linux操作系統(tǒng),并驅(qū)動西安郵電大學(xué)自主設(shè)計研發(fā)的基于傳統(tǒng)GPU架構(gòu)的可編程圖形處理器,實現(xiàn)了包含可編程圖形系統(tǒng)的SoC平臺。將系統(tǒng)集成到Dini Group最新的DNV6_F2PCIE開發(fā)板上,采取OpenGL編程,通過鼠標(biāo)、鍵盤、顯示器運行2D、3D程序,進行圖形的繪制,從而比較充分地驗證了圖形系統(tǒng)硬件設(shè)計。
中圖分類號: TP302
文獻標(biāo)識碼: A
文章編號: 0258-7998(2014)07-0040-04
Hardware design of programmable graphics system in heterogeneous multi-core SoC
Zhou Jianwei1,Han Jungang1,Li Tao1,Du Huimin2,Jiao Jiye1
1.School of Computer,Xi′an University of Posts & Telecommunications, Xi′an 710061,China;2.School of Electrical Engineering,Xi′an University of Posts & Telecommunications,Xi′an 710061,China
Abstract: Based on the Linux operating system platform and open source LEON3 processor, combined with programmable Graphics processor designed by Xi′an University of Posts Telecommunications, a heterogeneous multi-core SoC is implemented in DNV6_F2PCIE development board made by Dini Group. Running various OpenGL 2D and 3D programs on the SoC through the mouse, keyboard and display,the hardware design of graphics processing unit is validated sufficiently.
Key words : graphics processing unit;LEON3 processor;heterogeneous multi-core;Linux operating system

       為打破國外壟斷,研發(fā)擁有自主知識產(chǎn)權(quán)的圖形處理器GPU(Graphics Processing Unit)對國民經(jī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ā)板進行系統(tǒng)驗證。

1 系統(tǒng)論證

1.1 研究路線

        首先構(gòu)建一個C++的GPU算法仿真平臺,并在其上進行圖像渲染算法的研究;其次設(shè)計搭建System Verilog[3]建立驗證平臺,并開始Verilog語言設(shè)計硬件和OpenGL相關(guān)軟件的開發(fā),為了加快硬件設(shè)計速度,采用了第三方IP;由于此系統(tǒng)電路規(guī)模較大,選擇Xilinx公司的XC6VLX550T[4]進行原型開發(fā),并運行大量裸機OpenGL應(yīng)用程序;最后加上嵌入式LEON3處理器、Linux操作系統(tǒng),通過軟件驅(qū)動和硬件接口完成CPU與GPU的數(shù)據(jù)交互,實現(xiàn)了一個完整的移動異構(gòu)多核SoC圖形處理系統(tǒng),通過外部可編程的方式在FPGA上驗證整個SoC系統(tǒng),進而驗證硬件設(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處理器上的運行、驅(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)達到設(shè)計要求,有利于縮短開發(fā)周期,降低開發(fā)成本及產(chǎn)品的單片價格,符合SoC研究設(shè)計的客觀規(guī)律。

2 系統(tǒng)的硬件設(shè)計

        系統(tǒng)的硬件設(shè)計主要包括作為系統(tǒng)主機的嵌入式開源LEON3處理器設(shè)計和作為從機的可編程圖形處理器設(shè)計。系統(tǒng)的整體硬件結(jié)構(gòu)如圖1所示。

        系統(tǒng)主要數(shù)據(jù)流向:

        (1)2D程序:上位機將鏡像文件通過JTAG傳到CPU-DDR中,CPU從中取出相應(yīng)2D數(shù)據(jù)進行運算,將運算結(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)的主機,是一款由歐洲航天總局旗下的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系列處理器的性能也比較理想,可以達到大約0.85 MIPS/MHz。更大的好處是LEON處理器是一個公開源代碼,遵循GNU。通過高速的AMBA AHB[8]總線鏈接內(nèi)存控制器及高速外部接口,低速的AMBA APB總線實現(xiàn)片上外設(shè)的接口,如定時器、串口、VGA等。

        作為整個系統(tǒng)的主機,其功能如下:

        (1)處理上位機發(fā)來的命令,并在主存中設(shè)置命令數(shù)據(jù)環(huán),將處理命令放入環(huán)中;

        (2)采用Linux操作系統(tǒng)作為系統(tǒng)運行平臺,完成圖形驅(qū)動處理;

        (3)管理系統(tǒng)內(nèi)存和輸入/輸出設(shè)備(鍵盤、鼠標(biāo)、顯示器);

        (4)運行2D程序;

        (5)支持Sparc V8指令集、多核運行;

        (6)支持以太網(wǎng)、串口、PS2、GPIO、WatchDog、Timer等外設(shè),支持AHB總線擴展。

        LEON3結(jié)構(gòu)如圖2所示。

2.2 可編程圖形處理器硬件設(shè)計

        可編程圖形處理器采用傳統(tǒng)GPU架構(gòu),并結(jié)合了可編程技術(shù),經(jīng)過9級流水線處理后,完成了一個3D基本圖元的渲染過程。作為整個系統(tǒng)的從機,各級流水線及功能如下:

        (1)命令處理器(CMD,1 core):CPU在主存中設(shè)置命令數(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坐標(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ù)信息對片段進行像素染色,最終將片段染色的值傳送給段操作部件。

        (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ù)的處理,以及紋理和霧相關(guān)信息的存儲。

        (2)內(nèi)存管理[9](MMU,1 ASIC):實現(xiàn)對GPU存儲空間分配、存儲讀/寫控制、存儲空間回收以及存儲保護、地址映射等,對有訪存要求的SoC圖形處理芯片渲染管線部件進行仲裁并予以實時響應(yīng),協(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圖元及相應(yīng)幾何變換;

        (3)支持緩沖區(qū)對象、頂點數(shù)組和顯示列表;

        (4)每個時鐘周期可同時支持4個像素的處理;

        (5)支持6個平面裁剪、三維裁剪;

        (6)支持多達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è)計進行深入分析,并在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é)省芯片面積,部分微處理器的運算單元采用了定點設(shè)計,而其他處理器采用浮點設(shè)計,支持處理器并行SIMT運算,通過軟件協(xié)調(diào)圖形系統(tǒng)運行精度、性能、面積和功耗的平衡。

        (5)為了加速圖形運算,設(shè)計了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)絡(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。