常立博, 王 琨
(1.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安710061;2.西安市國土資源信息中心,陜西 西安710061)
圖形處理器中圖像處理單元的設(shè)計(jì)與實(shí)現(xiàn)
常立博1, 王 琨2
(1.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安710061;2.西安市國土資源信息中心,陜西 西安710061)
針對(duì)圖形處理器中關(guān)于圖像、紋理的傳輸、偏移、縮放、映射等操作需求,采用具有泡沫擠壓功能的流水線結(jié)構(gòu)以及相同功能單元復(fù)用的方法,實(shí)現(xiàn)了GPU中圖像處理流水線。提高了GPU處理圖像的速度,同時(shí)減少了電路面積。結(jié)果表明,在TSMC 0.13 μm CMOS工藝下,電路消耗面積為390 726.09,速度可達(dá)200 MHz。現(xiàn)該設(shè)計(jì)已集成到完整GPU系統(tǒng)中并流片,用經(jīng)典的測試圖像對(duì)GPU芯片進(jìn)行測試:繪制的圖像質(zhì)量與OpenGL的運(yùn)行結(jié)果具有可比性;像素填充率可達(dá)80 M像素/s,滿足實(shí)時(shí)處理要求。
圖像處理; 圖形處理器; 硬件流水線
作為圖形顯示卡(顯卡)的核心,GPU(Graphics Processing Unit)不僅可以實(shí)現(xiàn)圖形圖像加速和實(shí)時(shí)處理功能,而且已發(fā)展成為一種高度可編程的并行處理器[1-2]。圖像處理單元作為GPU中三維圖形處理的一部分,主要完成圖像、紋理和位圖數(shù)據(jù)從幀緩沖區(qū)讀取以及寫入幀緩沖區(qū)時(shí)所執(zhí)行的各種操作[3]。這些操作主要包括圖像和紋理像素的包裝與解包、映射、圖像的縮放以及位圖的繪制等。在目前高端GPU中,均有針對(duì)實(shí)現(xiàn)高清圖像繪制的專用通道、針對(duì)紋理像素的緩存加速部件??梢?,圖像處理單元是GPU提高圖像繪制質(zhì)量、增強(qiáng)繪制場景真實(shí)性的重要模塊,具有重要的研究價(jià)值和實(shí)用意義。
國外對(duì)GPU技術(shù)的研究起步早,相對(duì)比較成熟。早期以ATI公司推出的M9系列芯片為代表的圖形圖像處理芯片,包含專用的圖像處理單元,可用于圖像處理、實(shí)現(xiàn)簡單紋理處理等功能。目前以NVIDIA和AMD(ATI)兩家公司成就最為顯著,在GPU市場占據(jù)主流。NVIDIA公司在體系架構(gòu)方面面向通用計(jì)算幾經(jīng)演進(jìn),從2009年開始先后推出Fermi、Kepler、Maxwell等產(chǎn)品,尤其是GPGPU(General Purpose GPU)模型CUDA(Compute Unified Device Archi-tecture)平臺(tái)的推出進(jìn)一步發(fā)揮了GPU的數(shù)據(jù)級(jí)并行計(jì)算能力。而AMD(ATI)最新的Radeon R9 390X GPU內(nèi)建2816個(gè)流處理器,并且也有類似CUDA的編程模型CTM(Close to Metal)。由于圖像處理屬于數(shù)據(jù)密集型運(yùn)算,GPU系統(tǒng)性能的飛速發(fā)展和編程語言靈活性的提高,在增強(qiáng)圖像渲染質(zhì)量、渲染場景真實(shí)性的同時(shí),也提升了對(duì)復(fù)雜場景實(shí)時(shí)處理的能力。
相對(duì)于國外來說,國內(nèi)對(duì)GPU的研究相對(duì)滯后,主要研究焦點(diǎn)還集中在GPU應(yīng)用方面。GPU的核心算法和體系結(jié)構(gòu)也將逐漸成為研究的熱點(diǎn)。華南理工大學(xué)在ARM+Linux嵌入式平臺(tái)上基于OpenGL 1.0完成了GPU的建模,涉及到紋理圖像操作,但沒有進(jìn)行硬件實(shí)現(xiàn)[4]。北大眾志微處理器研究中心研發(fā)的PKUnity86-3系統(tǒng),其圖形圖像子系統(tǒng)可以支持OpenGL ES1.1/2.0和OpenVG標(biāo)準(zhǔn)、同時(shí)可實(shí)現(xiàn)高清1 080p 30 fps實(shí)時(shí)解碼;長沙景嘉微電子公司研發(fā)的JM5400圖形處理芯片能夠高效完成2D、3D的圖形加速功能,支持兩路多種格式的外視頻在圖形上進(jìn)行開窗、縮放、旋轉(zhuǎn)以及疊加顯示。西安郵電大學(xué)從2009年開始自主研究GPU,目前基于OpenGL1.5,已經(jīng)完成嵌入式圖形處理器芯片--“螢火蟲1號(hào)”的系統(tǒng)級(jí)芯片測試。本文設(shè)計(jì)的圖像處理單元是“螢火蟲1號(hào)”的一部分,系統(tǒng)級(jí)芯片測試表明:圖像處理單元功能正確,并且為系統(tǒng)進(jìn)行實(shí)時(shí)動(dòng)態(tài)渲染提供支持;在TSMC 0.13 μm CMOS工藝下,速度可達(dá)200 MHz,滿足設(shè)計(jì)需要。
本文主要包括以下幾個(gè)方面:首先介紹圖像處理單元的設(shè)計(jì)思想;其次提出圖像處理單元的硬件結(jié)構(gòu)及主要模塊的實(shí)現(xiàn)方法;最后介紹本文設(shè)計(jì)的驗(yàn)證方案及結(jié)果。
GPU中圖像處理單元主要完成圖像、紋理像素的相關(guān)操作以及位圖的繪制。一個(gè)完整的圖像處理單元的工作流程如圖1所示[5-8]。
圖1 GPU中圖像處理的工作流程
在圖像處理單元中,主要傳輸通道以及像素在各傳輸通道傳輸過程中的操作包括:
(1)從幀緩沖區(qū)到處理器內(nèi)存。用于將圖像(不包括紋理圖像)從幀緩沖區(qū)讀取到處理器內(nèi)存,主要經(jīng)過像素傳輸(像素值縮放與偏移)、像素存儲(chǔ)格式的轉(zhuǎn)換、像素的包裝等操作;
(2)從處理器內(nèi)存到幀緩沖區(qū)。本通道包含兩條支路:一條支路經(jīng)過像素解包、像素存儲(chǔ)格式的轉(zhuǎn)換、光柵化、片斷操作,用于完成位圖的繪制;另一條支路經(jīng)過像素解包、像素存儲(chǔ)格式的轉(zhuǎn)換、像素傳輸、光柵化、片斷操作,用于將圖像(不包括紋理圖像)從處理器內(nèi)存寫入幀緩沖區(qū);
(3)從一個(gè)緩沖區(qū)復(fù)制到另一個(gè)緩沖區(qū)或同一緩沖區(qū)的其他位置。完成圖像(不包括紋理圖像)在幀緩沖區(qū)之間的移動(dòng),主要經(jīng)過像素傳輸、光柵化和基于片段的操作;
(4)幀緩沖區(qū)到紋理內(nèi)存。用于將紋理圖像從幀緩沖區(qū)讀取到紋理內(nèi)存,主要經(jīng)過像素傳輸操作;
(5)紋理內(nèi)存到幀緩沖區(qū)。用于將紋理圖像從紋理內(nèi)存寫入幀緩沖區(qū),主要經(jīng)過光柵化和基于片斷的操作。
由上述分析可以看出:圖形處理器中圖像處理單元數(shù)據(jù)通道眾多、而處理的數(shù)據(jù)多是圖像類的大塊數(shù)據(jù)。針對(duì)這一問題,本文提出一種具有泡沫擠壓功能的流水線結(jié)構(gòu),在該流水線結(jié)構(gòu)中各個(gè)傳輸通道相同的數(shù)據(jù)處理操作復(fù)用,不同操作采用多路選擇器來旁路。因此這種結(jié)構(gòu)既提高像素的處理速度,又可以最大程度的降低電路面積。對(duì)于需要在數(shù)據(jù)通道選擇和功能選擇時(shí)采用控制電路實(shí)現(xiàn)對(duì)于功能專一模塊采用ASIC的設(shè)計(jì)方法實(shí)現(xiàn)。
根據(jù)上一節(jié)分析,將GPU中圖像處理單元?jiǎng)澐殖扇缦?個(gè)主要子模塊,整體硬件結(jié)構(gòu)如圖2所示,其中虛框內(nèi)為本設(shè)計(jì)所包含的子模塊及連接關(guān)系,虛線框外為本設(shè)計(jì)的外圍模塊。各子模塊功能如下:
(1)解碼器模塊。對(duì)命令處理單元發(fā)來的命令進(jìn)行解碼。判斷當(dāng)前命令是否為本單元要處理的命令,如果是,則存儲(chǔ)相應(yīng)參數(shù);反之,則不對(duì)這條命令進(jìn)行處理,并透傳給GPU流水線的下一級(jí);
(2)控制模塊。根據(jù)解碼器存儲(chǔ)的命令參數(shù)和其他單元電路的工作狀態(tài)控制運(yùn)算模塊,產(chǎn)生與GPU中相關(guān)單元電路(DMA單元,幀緩沖區(qū)單元,內(nèi)存管理單元)的通信信號(hào),完成數(shù)據(jù)交互功能;
(3)主流水線模塊。在控制模塊的控制下,接收原始圖像信息(從DMA單元或幀緩沖區(qū)單元),完成圖像的讀取、寫入、復(fù)制、縮放等操作,并將處理后的像素信息發(fā)送到GPU系統(tǒng)中的相關(guān)單元(像素輸出控制單元,GPU內(nèi)存或DMA單元);
(4)參數(shù)存儲(chǔ)模塊。如果GPU系統(tǒng)處理的是glPixelTransfer或 glPixelZoom命令,圖像處理單元的控制模塊啟動(dòng)參數(shù)存儲(chǔ)模塊,并將glPixelTransfer命令中的像素偏移因子或像素縮放因子存儲(chǔ)到相關(guān)寄存器,或?qū)lPixelZoom命令中的縮放因子存儲(chǔ)到相關(guān)寄存器;
(5) 像素映射模塊。如果GPU系統(tǒng)處理的是glPixelMapv命令,圖像處理單元的控制模塊啟動(dòng)本模塊,將像素映射表存儲(chǔ)到相關(guān)RAM中,當(dāng)進(jìn)行像素映射操作時(shí),根據(jù)主流水線模塊計(jì)算出的像素地址信息,本模塊計(jì)算出對(duì)應(yīng)的映射像素信息,完成像素映射操作;
(6)運(yùn)算參數(shù)堆棧模塊。當(dāng)GPU系統(tǒng)進(jìn)行壓棧操作時(shí),圖像處理單元的控制模塊啟動(dòng)本模塊將像素偏移因子、像素縮放因子和圖像縮放因子壓入堆棧中,如果堆棧已滿時(shí),系統(tǒng)再進(jìn)行壓棧操作,則發(fā)出上溢信號(hào);當(dāng)GPU系統(tǒng)進(jìn)行彈棧操作時(shí),圖像處理單元的控制模啟動(dòng)本模塊將像素偏移因子、像素縮放因子和圖像縮放因子從堆棧中彈出,并將這些信息寫入到對(duì)應(yīng)寄存器。當(dāng)堆棧已空時(shí),如果系統(tǒng)再進(jìn)行彈棧操作,則發(fā)出下溢信號(hào);
(7)位圖處理模塊。在控制模塊的控制下,從DMA單元接收位圖信息,完成位圖繪制操作,并將處理后的圖像信息發(fā)送到像素輸出控制單元;
(8)卷積過慮模塊。在繪制圖像過程中,如果啟動(dòng)了卷積過濾功能,則主流水線模塊處理后的圖像信息輸入到本模塊,本模塊完成圖像的卷積過濾操作后,再將圖像信息發(fā)送到像素輸出控制單元。
圖2 圖像處理單元整體結(jié)構(gòu)
3.1 數(shù)據(jù)處理模塊
關(guān)于不同流水級(jí)之間的數(shù)據(jù)交互,通常是采用FIFO[9]??紤]到流水級(jí)的數(shù)量較多,如果采用FIFO進(jìn)行數(shù)據(jù)交互,則需要消耗大量芯片面積;在GPU圖像處理流水線中,每一級(jí)輸入數(shù)據(jù)不一定每一時(shí)鐘都到達(dá),并且多個(gè)輸入到達(dá)時(shí)間未必相同,各級(jí)流水線容易產(chǎn)生泡沫,造成資源浪費(fèi)和性能降低。綜合權(quán)衡面積和效率因素,數(shù)據(jù)處理模塊采用帶泡沫擠壓功能的雙軌握手協(xié)議實(shí)現(xiàn)不同流水級(jí)的互連以提高整體性能,同時(shí)減少芯片面積,如圖3所示。
圖3 泡沫擠壓雙軌握手協(xié)議形式的接口
各個(gè)流水級(jí)的輸入和輸出采用valid和ready控制信號(hào),其中valid信號(hào)表示數(shù)據(jù)線上是否有數(shù)據(jù);ready信號(hào)表示本單元是否可以接受數(shù)據(jù)。當(dāng)數(shù)據(jù)信號(hào)data到達(dá)時(shí),控制信號(hào)valid應(yīng)該是1;當(dāng)沒有數(shù)據(jù)信號(hào)時(shí),控制信號(hào)valid應(yīng)該是0。在不同的輸入控制信號(hào)組合時(shí),valid寄存器和數(shù)據(jù)信號(hào)反應(yīng)如表1所示。
表1 泡沫擠壓雙軌握手協(xié)議接口信號(hào)反應(yīng)
圖4 數(shù)據(jù)處理模塊體系結(jié)構(gòu)
采用泡沫擠壓雙軌握手協(xié)議形式的接口互連和各個(gè)傳輸通道數(shù)據(jù)處理的相同操作復(fù)用、不同操作采用多路選擇器來旁路的設(shè)計(jì)方法實(shí)現(xiàn)的數(shù)據(jù)處理模塊體系結(jié)構(gòu)如圖4所示,虛線部分為采用泡沫擠壓雙軌握手協(xié)議形式實(shí)現(xiàn)的流水線控制結(jié)構(gòu)。信號(hào)data_fb表示來自幀緩沖區(qū)數(shù)據(jù)位寬為128位的數(shù)據(jù),data_dma表示數(shù)據(jù)位寬為32位來自DMA的數(shù)據(jù),data*表示位寬為32位的流水線各級(jí)輸出數(shù)據(jù),valid*表示流水線各級(jí)輸出數(shù)據(jù)的有效信號(hào),ready*表示流水線各級(jí)是否需要停頓,zoom_en表示是否需要啟動(dòng)圖像縮放功能,map_en表示是否需要啟動(dòng)映射功能。流水線各級(jí)所完成的功能如下:
第一級(jí)對(duì)輸入的不同位寬數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換,使輸出的像素均為32b位的統(tǒng)一位寬;
第二級(jí)完成像素傳輸操作中的像素值偏移操作;
第三級(jí)完成像素傳輸操作中的像素值縮放操作;
第四級(jí)完成對(duì)整幅或部分圖像與紋理的縮放;
第五級(jí)根據(jù)像素映射表內(nèi)容,完成顏色索引功能。
3.2 控制模塊
控制模塊是圖像處理單元的核心模塊,除完成對(duì)本設(shè)計(jì)其他功能模塊的控制外,還要根據(jù)各功能模塊的反饋信息與外圍單元(DMA、DDR2、譯碼單元、幀緩沖區(qū)、掃面轉(zhuǎn)換)進(jìn)行通信。由于GPU中圖像處理單元的傳輸通道比較多,使得控制比較復(fù)雜,因此本文采用狀態(tài)機(jī)完成控制模塊的設(shè)計(jì)[10],控制模塊的狀態(tài)機(jī)示意圖如圖5所示。
圖5 控制模塊狀態(tài)機(jī)
其中,各個(gè)狀態(tài)的說明如下:
(1) IDLE。此狀態(tài)為空閑狀態(tài),等待接收命令。當(dāng)沒有接收到本單元要處理的命令時(shí),在此狀態(tài)下,圖像處理單元處于空閑狀態(tài),不進(jìn)行任何操作;如果接收到本單元要處理的命令,則命令中的參數(shù)存儲(chǔ)到相關(guān)寄存器中;
(2)RECEIVE_1。如果一條OpenGL命令需要兩條指令或三條指令才能傳送完成,則此狀態(tài)等待接收命令的第二部分,一旦接收到命令的第二部分,將命令中的參數(shù)存儲(chǔ)到相關(guān)寄存器中;
(3) RECEIVE_2。如果一條OpenGL命令需要三條指令才能傳送完成,則此狀態(tài)等待接收命令的第三部分,一旦接收到命令的第三部分,將命令中的參數(shù)存儲(chǔ)到相關(guān)寄存器中;
(4) SEND_PARA。根據(jù)相關(guān)命令參數(shù),向相鄰單元發(fā)送數(shù)據(jù)交換請求信號(hào),并等待相鄰模塊完成處理數(shù)據(jù)的準(zhǔn)備工作和請求應(yīng)答信號(hào),一旦接收到應(yīng)答信號(hào),則進(jìn)入圖像處理階段;
(5) SEND_ONE_IDLE。完成參數(shù)存儲(chǔ)或堆棧操作的功能。如果處理的是glPixelTransfer命令或glPixelZoom命令,則將相關(guān)參數(shù)存儲(chǔ)到寄存器中;如果處理的是堆棧操作命令,則完成堆棧操作;
(6) BITMAP。和相鄰單元建立數(shù)據(jù)傳輸通路后,產(chǎn)生啟動(dòng)位圖處理信息,由位圖處理模塊完成位圖繪制的功能;
(7) WAIT_FIFO。等待相鄰模塊輸入數(shù)據(jù)。如通過DMA單元從CPU內(nèi)存讀取要處理的像素信息,且此時(shí)用于緩存DMA單元輸入數(shù)據(jù)的FIFO為空時(shí),則流水線停頓,在此狀態(tài)等待DMA單元寫數(shù)據(jù);如通過幀緩沖區(qū)單元讀取要處理的像素信息,且此時(shí)用于緩存幀緩沖區(qū)單元輸入數(shù)據(jù)的FIFO為空時(shí),則流水線停頓,在此狀態(tài)等待幀緩沖區(qū)單元寫數(shù)據(jù);
(8) PIPELINE。當(dāng)相關(guān)輸入緩存FIFO中有要處理的圖像信息時(shí),在此狀態(tài)下,發(fā)出啟動(dòng)流水線信號(hào),由主流水線模塊完成設(shè)置像素偏移和像素縮放,圖像縮放及像素映射的功能;
(9) PIXELMAP。當(dāng)處理glPixelMap命令,且用于緩存DMA單元輸入數(shù)據(jù)的FIFO不為空時(shí),啟動(dòng)像素映射模塊完成像素映射表的存儲(chǔ)功能。
為了驗(yàn)證本文設(shè)計(jì)的正確性和實(shí)用性,本文分別進(jìn)行了綜合、基于FPGA的模塊級(jí)驗(yàn)證及基于西安郵電大學(xué)“嵌入式圖形處理器(GPU)芯片-螢火蟲1號(hào)”的系統(tǒng)級(jí)測試。
4.1 綜合結(jié)果
采用Synopsys公司的Design Compiler工具,使用TSMC 0.13 μm庫單元中的typical元件,在包含線上延時(shí)條件下,本設(shè)計(jì)得到的速度和面積指標(biāo)如表2所示。
表2 電路性能指標(biāo)
4.2 模塊級(jí)驗(yàn)證方法及結(jié)果
本文采用Xilinx的Zedboard開發(fā)平臺(tái)構(gòu)建硬件加速驗(yàn)證平臺(tái),實(shí)現(xiàn)模塊級(jí)驗(yàn)證。具體開發(fā)借助Xilinx公司的Vivado集成開發(fā)環(huán)境實(shí)現(xiàn),Zedboard開發(fā)平臺(tái)上Zynq FPGA芯片分為SoC處理器系統(tǒng)(Processor Systerm,PS)和片上可編程邏輯(Programmable Logic, PL)組成。PS部分包括兩個(gè)ARM Cortex-A9 MPCore微處理器、基于AXI標(biāo)準(zhǔn)的片上互聯(lián)總線和存儲(chǔ)控制器。PL部分通過多個(gè)ARM AMBA AXI端口和PS部分連接起來。在本文的設(shè)計(jì)中,處理器完成外設(shè)控制、下發(fā)和收集數(shù)據(jù)以及特定數(shù)據(jù)處理功能。AIX4總線將包括圖像處理單元在內(nèi)的外設(shè)同處理器有機(jī)連接起來,將測試軟件產(chǎn)生的激勵(lì)輸入到輸入同步器,UART模塊將輸出同步器收集到的測試結(jié)果傳送給軟件驗(yàn)證環(huán)境,具體結(jié)構(gòu)如圖6所示[11-13]。
圖6 驗(yàn)證平臺(tái)結(jié)構(gòu)
該硬件加速驗(yàn)證平臺(tái)中各部分功能說明如下:
(1)參考模型。本驗(yàn)證方案采用System Verilog語言描述圖像處理流水線周期精確的參考模型,為被測設(shè)計(jì)的自動(dòng)檢查提供一個(gè)黃金參考;
(2) 比較器。該模塊用于將硬件加速器的運(yùn)算結(jié)果和參考模型的運(yùn)算結(jié)果做周期精確比較。如果兩者的結(jié)果有差異則給出對(duì)應(yīng)錯(cuò)誤提示;
(3)ARM處理器。該模塊用于管理圖像處理單元和外部設(shè)備,并提供用軟件訪問被測設(shè)計(jì)的方法;
(4) AXI總線控制器。該模塊用于將ARM Cortex處理器和外部設(shè)備連接起來,完成處理器和各外部設(shè)備之間的通信功能。
(5)UART模塊。該模塊將測試激勵(lì)從外部軟件傳送到硬件加速平臺(tái)的片上FIFO中,以及將硬件加速平臺(tái)的片上FIFO中的運(yùn)算結(jié)果傳送到外部軟件;
(6) 包裝后的圖像處理單元。為了便于從軟件終端向被測電路送入測試激勵(lì),并把被測電路的運(yùn)算結(jié)果送回到軟件終端,在被測電路、輸入和輸出均增加一個(gè)FIFO緩存數(shù)據(jù)。這樣可以避免因軟硬件速度不匹配而導(dǎo)致數(shù)據(jù)丟失的問題。
經(jīng)驗(yàn)證,圖像處理單元設(shè)計(jì)和其周期精確的模型接口時(shí)序是完全一致的。由于圖像處理單元的傳輸通道中,從處理器內(nèi)存到幀緩沖區(qū)所經(jīng)歷的處理單元是最完整的,所以本文以這條通道的驗(yàn)證結(jié)果來說明設(shè)計(jì)的正確性。待處理圖像與經(jīng)歷從處理器內(nèi)存到幀緩沖區(qū)傳輸通道(像素值偏移設(shè)置為2,像素值縮放設(shè)置為0.25,圖像行和列均縮小2倍)后的圖像分別如圖7所示。
圖7 原始圖像與幀緩沖區(qū)傳輸通道后的圖像對(duì)比
4.3 系統(tǒng)級(jí)測試
為了進(jìn)一步驗(yàn)證本文設(shè)計(jì)的正確性和實(shí)用性,設(shè)計(jì)作為嵌入式圖形處理器(GPU)芯片(“螢火蟲1號(hào)”)的一個(gè)子模塊,基于該芯片對(duì)本文設(shè)計(jì)進(jìn)行系統(tǒng)級(jí)測試,整個(gè)GPU系統(tǒng)可在時(shí)鐘頻率200 MHz時(shí)穩(wěn)定工作。因?yàn)楸灸K采用完全流水的設(shè)計(jì),所以在理想情況下像素填充率可達(dá)200 M像素/s。在實(shí)際測試中,由于GPU各級(jí)存在數(shù)據(jù)等待的情況,所以統(tǒng)計(jì)結(jié)果顯示約每10個(gè)時(shí)鐘周期可以處理4個(gè)像素,像素填充率可達(dá)80 M像素/s。圖8所示為螢火蟲圖形處理系統(tǒng)與圖像處理單元相關(guān)的部分渲染結(jié)果。圖8(a)所示為GPU系統(tǒng)執(zhí)行g(shù)lCopyTexImage2D相關(guān)命令,完成從幀緩沖區(qū)復(fù)制一個(gè)先前繪制的四邊形作為紋理數(shù)據(jù),再經(jīng)過圖像處理單元及紋理處理單元給一個(gè)矩形圖元貼圖,最后再繪制到幀緩沖區(qū);圖8(b)所示為GPU系統(tǒng)執(zhí)行g(shù)lCopyPixels相關(guān)命令,完成從幀緩沖區(qū)中的一個(gè)矩形區(qū)域(它的)復(fù)制像素?cái)?shù)據(jù),數(shù)據(jù)被復(fù)制到幀緩沖區(qū)的一個(gè)新位置; 圖8(c)所示為GPU系統(tǒng)執(zhí)行g(shù)lDrawPixels及glPixelZoom命令,從CPU內(nèi)存中讀取一幅圖像并放大兩倍繪制到幀緩沖區(qū);圖8(d)為GPU系統(tǒng)執(zhí)行g(shù)lBitMap相關(guān)命令,完成位同繪制。圖8(e)為添加紋理貼圖后的旋轉(zhuǎn)木箱,在木箱的每一個(gè)面上貼不同的紋理;圖8(f)為繪制一幅復(fù)雜圖像,并將其作為環(huán)境紋理包裹在3D模型上,讓它看起來像反射了周圍的場景一樣。
圖8 GPU芯片與圖像處理單元相關(guān)的部分渲染結(jié)果
本文針對(duì)GPU中的圖像處理單元做了深入的研究,并基于OpenGL對(duì)圖像處理進(jìn)行了硬件電路設(shè)計(jì)和驗(yàn)證工作。通過對(duì)GPU中圖像處理單元關(guān)鍵技術(shù)的研究,可為國內(nèi)自主GPU設(shè)計(jì)奠定理論基礎(chǔ)。以后
需要繼續(xù)完善的工作有:
(1) 根據(jù)現(xiàn)有的圖像處理算法,采用專用處理器的設(shè)計(jì)方法,提取設(shè)計(jì)出適合圖像處理算法的指令集,以實(shí)現(xiàn)更高效、更靈活的圖像處理單元[14];
(2) 研究現(xiàn)代GPU處理中復(fù)雜的圖像處理算法:如顏色表替換,圖像信息統(tǒng)計(jì)等,以完善圖像處理器的功能。
[1] 吳恩華,柳有權(quán). 基于圖形處理器(GPU)的通用計(jì)算 [J]. 計(jì)算機(jī)輔助設(shè)計(jì)于圖形學(xué)報(bào),2004,16(5):601-612.
[2] 韓俊剛,劉有耀,張曉.圖形處理器的歷史現(xiàn)狀和發(fā)展趨勢[J].西安郵電學(xué)院學(xué)報(bào),2011,16(3):61-64.
[3] Owens J D, Houston M, Luebke D, et al. GPU Computing[J]. Proceedings of the IEEE, 2008, 96(5):879-899.
[4] 黃偉鈿.面向移動(dòng)平臺(tái)的3D圖形處理器的設(shè)計(jì)[D].廣州: 華南理工大學(xué),2011.
[5] Shreiner D.OpenGL編程指南[M].7版.李軍,徐波,譯.北京:機(jī)械工業(yè)出版社, 2010.
[6] Samuel R B.3D computer graph-ics[M].3rd ed.Beijing:Tsinghua University Press,2006.
[7] Angel E.Interactive computer graphics: a top-down approach using OpenGL[M].4td ed.Beijing: Tsinghua University Press,2006.
[8] Richard S,Wright Jr,Nicholas Haemel,et al. OpenGL超級(jí)寶典[M].5版.付飛,李艷輝,譯.北京:人民郵電出版社, 2012.
[9] Seng L S,Parameswaran S.Design methodology for pipelined heterogeneous multiprocessor system[C]. MA,USA:IEEE Design Automation Conference,IEEE,2007.
[10] 杜慧敏,李宥謀,趙全良.基于Verilog的FPGA設(shè)計(jì)基礎(chǔ)[M].西安:西安電子科技大學(xué)社,2006.
[11] Ruan A,Wang Y,Shi K, et al. SOC HW/SW co-verification technology for application of FPGA test and diagnosis [C]. Hong Kong:International Conference on Computational Problem-Solving (ICCP),IEEE,2011.
[12] Xu Huang,Liu Lintao,Li Yujing,et al. FPGA verification methodology for SiSoC based SoC design [C].Beijing:International Conference of Electron Devices and Solid-State Circuits (EDSSC),IEEE,2011.
[13] Spear C,Tumbush G.System Verilog for verification.A guide to learning the testbench language features [M].Germany:Springer Ebooks,2009.
[14] Shreiner D,Woo M,Neider J,et al.OpenGL編程指南[M].8版.王銳,譯.北京:機(jī)械工業(yè)出版社,2014.
Design and Implementation of the Image Processing Unit in GPU
CHANG Libo1, WANG Kun2
(1. School of Electronic Engineering, Xi’an University of Posts & Telecommunications, Xi’an 710061, China;2.Information Center of Land and Resources in Xi’an, Xi’an 710061, China)
In view of the image and texture processing requirements of graphics in Graphic Processing Unit (GPU), this paper proposes an image processing pipeline with foam extrusion function and multiplexing same function unit, thus improving the speed of image processing while reducing the circuit area. The design was synthesized under TSMC 0.13 um CMOS technology by Synopsys Design-Compiler. The frequency of this design is up to 200 MHz at a circuit area of 390726.09. The design is integrated into a complete GPU system and the results are comparable with the operation results of OpenGL. The pixel fill rate is 80 Mpixels/s, which meets the requirements of real-time processing.
image processing; graphic processing unit; hardware pipeline
2016- 04- 01
國家自然科學(xué)基金重點(diǎn)項(xiàng)目(61136002);陜西省科技計(jì)劃資金資助項(xiàng)目(2011k06-47)
常立博(1985-), 男, 博士研究生, 助教。研究方向:ASIC設(shè)計(jì),GPU開發(fā)。王琨(1988-), 女, 碩士, 工程師。研究方向:GPU軟件開發(fā)。
10.16180/j.cnki.issn1007-7820.2017.02.005
TP391.41
A
1007-7820(2017)02-016-06