《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 異構(gòu)多核SoC可編程圖形系統(tǒng)硬件設(shè)計(jì)
異構(gòu)多核SoC可編程圖形系統(tǒng)硬件設(shè)計(jì)
2014年電子技術(shù)應(yīng)用第7期
周建偉1,韓俊剛1,李 濤1,杜慧敏2,焦繼業(yè)1
1.西安郵電大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安710061; 2.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安7
摘要: 采用開源LEON3(basic version)處理器,運(yùn)行Linux操作系統(tǒng),并驅(qū)動(dòng)西安郵電大學(xué)自主設(shè)計(jì)研發(fā)的基于傳統(tǒng)GPU架構(gòu)的可編程圖形處理器,實(shí)現(xiàn)了包含可編程圖形系統(tǒng)的SoC平臺(tái)。將系統(tǒng)集成到Dini Group最新的DNV6_F2PCIE開發(fā)板上,采取OpenGL編程,通過鼠標(biāo)、鍵盤、顯示器運(yùn)行2D、3D程序,進(jìn)行圖形的繪制,從而比較充分地驗(yàn)證了圖形系統(tǒng)硬件設(shè)計(jì)。
中圖分類號(hào): TP302
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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ā)擁有自主知識(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.

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