文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)05-0038-03
在圖形處理應(yīng)用中,圖形圖像數(shù)據(jù)的存取帶寬直接決定著整個(gè)圖形處理器的性能[1],因此,對(duì)圖形圖像數(shù)據(jù)的存取管理非常重要。參考文獻(xiàn)[2-3]對(duì)目前NVIDIA提出的統(tǒng)一計(jì)算設(shè)備架構(gòu)CUDA(Compute Unified Device Architecture)[4]中的存儲(chǔ)層次結(jié)構(gòu)做了介紹,但僅局限于從應(yīng)用層次上進(jìn)行描述,并未對(duì)具體的圖形數(shù)據(jù)存取進(jìn)行研究。參考文獻(xiàn)[5-6]對(duì)Neon圖形加速器進(jìn)行了詳細(xì)的剖析,并從存儲(chǔ)架構(gòu)層次的角度介紹了Neon圖形加速器的存儲(chǔ)管理系統(tǒng)。Neon圖形加速器采用統(tǒng)一存儲(chǔ)系統(tǒng)模型,將所有圖形數(shù)據(jù)(如顏色、紋理圖像以及顯示數(shù)據(jù)等)進(jìn)行統(tǒng)一管理。然而,Neon圖形加速器不提供對(duì)2維圖形圖像以及3維引擎中的緩沖區(qū)對(duì)象、顯示列表、頂點(diǎn)染色程序的支持。
并構(gòu)多核圖形處理器HMGPU(Heterogeneous Multi-core Graphic Processor Unit)是由西安郵電大學(xué)GPU團(tuán)隊(duì)自主設(shè)計(jì)研發(fā)的異構(gòu)多核圖形處理器。通過(guò)對(duì)HMGPU的并行渲染架構(gòu)以及存儲(chǔ)數(shù)據(jù)進(jìn)行分析,在參考文獻(xiàn)[5-6]的基礎(chǔ)上,本文設(shè)計(jì)并實(shí)現(xiàn)了HMGPU存儲(chǔ)管理系統(tǒng),將顯示存儲(chǔ)區(qū)與其他圖形存儲(chǔ)區(qū)劃分成兩個(gè)存儲(chǔ)區(qū),分別予以管理。同時(shí),根據(jù)不同的圖形數(shù)據(jù)類型,分別進(jìn)行存儲(chǔ)控制,為HMGPU提供了2 021.2 MB/s的存儲(chǔ)訪問(wèn)速率。最后采用System Verilog進(jìn)行行為模型建模,并驗(yàn)證了其功能正確性。
1 HMGPU存儲(chǔ)管理系統(tǒng)總體分析
針對(duì)HMGPU圖形繪制任務(wù)并行實(shí)時(shí)處理的特點(diǎn),兼顧效率與靈活性的具體需求,HMGPU存儲(chǔ)系統(tǒng)采用共享存儲(chǔ)模型實(shí)現(xiàn)對(duì)頂點(diǎn)數(shù)組、顯示列表、紋理貼圖、用戶加載程序/數(shù)據(jù)、2D圖形圖像等相關(guān)圖形數(shù)據(jù)的管理。其中顯示列表和頂點(diǎn)數(shù)組的數(shù)據(jù)一般不具有紋理貼圖、用戶加載程序以及2D圖形圖像數(shù)據(jù)的大片連續(xù)性。為了充分利用存儲(chǔ)空間,本存儲(chǔ)管理系統(tǒng)采用固定分區(qū)和分頁(yè)式分區(qū)兩種方式進(jìn)行存儲(chǔ)管理;并利用片上存儲(chǔ)高性能的特性,將所有的管理控制信息存儲(chǔ)于片上存儲(chǔ),用硬件管理方式實(shí)現(xiàn)存儲(chǔ)管理系統(tǒng),減少了圖形圖像數(shù)據(jù)的存取延遲,滿足HMGPU峰值為289.98 Mpixel/s像素填充率的性能要求。
2 HMGPU存儲(chǔ)管理系統(tǒng)設(shè)計(jì)
2.1 HMGPU存儲(chǔ)管理頂層設(shè)計(jì)
HMGPU存儲(chǔ)系統(tǒng)采用共享存儲(chǔ)結(jié)構(gòu),存儲(chǔ)空間主要?jiǎng)澐殖瑟?dú)立的染色程序區(qū)、2D圖形/圖像區(qū)、3D紋理貼圖區(qū)、用戶區(qū)4大塊。在圖形渲染過(guò)程中,渲染管線各部件以并發(fā)的方式訪問(wèn)共享存儲(chǔ)。因此為了各個(gè)部件正確訪問(wèn)存儲(chǔ),對(duì)存儲(chǔ)內(nèi)部的讀寫操作采用互斥的方式來(lái)實(shí)現(xiàn)。同時(shí),為了保證存儲(chǔ)管理對(duì)各渲染部件的實(shí)時(shí)響應(yīng),為每一個(gè)存儲(chǔ)訪問(wèn)部件設(shè)定獨(dú)立的控制單元,當(dāng)滿足突發(fā)傳輸條件時(shí),向存儲(chǔ)管理仲裁部件發(fā)送訪問(wèn)請(qǐng)求,由仲裁器仲裁,將存儲(chǔ)訪問(wèn)權(quán)授予本次存儲(chǔ)訪問(wèn)優(yōu)先級(jí)最高的渲染部件。HMGPU存儲(chǔ)管理系統(tǒng)的頂層框架設(shè)計(jì)如圖1所示。
2.2 用戶區(qū)空閑塊的管理
在HMGPU中,對(duì)用戶區(qū)存儲(chǔ)空間的管理采用分頁(yè)式管理機(jī)制實(shí)現(xiàn),整個(gè)存儲(chǔ)空間以頁(yè)為單位進(jìn)行分配和回收,每一存儲(chǔ)頁(yè)表示一個(gè)存儲(chǔ)塊??臻e區(qū)域由1 KB的空閑頁(yè)組成,并采用鏈表的方式進(jìn)行連接,對(duì)空閑區(qū)域的管理實(shí)質(zhì)上就是對(duì)空閑鏈表進(jìn)行管理??臻e區(qū)域鏈表具體結(jié)構(gòu)如圖2所示。對(duì)存儲(chǔ)空間的分配操作是:假設(shè)需要分配N頁(yè)存儲(chǔ)空間,按照鏈表的遍歷方式,從空閑鏈表表頭分配N頁(yè)存儲(chǔ)空間實(shí)現(xiàn)空間分配。類似的,對(duì)于空間回收,則將需要回收的空間鏈接至空閑鏈表的表尾從而實(shí)現(xiàn)空間回收。
2.3 分頁(yè)式數(shù)據(jù)對(duì)象管理
由于緩沖區(qū)對(duì)象與顯示列表數(shù)據(jù)的大小不定,在本存儲(chǔ)管理設(shè)計(jì)中采用分頁(yè)式存儲(chǔ)空間進(jìn)行數(shù)據(jù)管理。
對(duì)于緩沖區(qū)對(duì)象以及顯示列表的管理,在片上SRAM中設(shè)定固定的8個(gè)塊用以存儲(chǔ)緩沖區(qū)對(duì)象的索引信息,設(shè)定256個(gè)塊用以存儲(chǔ)顯示列表索引信息。對(duì)于緩沖區(qū)對(duì)象以及顯示列表的存儲(chǔ),則首先從空閑區(qū)獲取存儲(chǔ)空間,并將數(shù)據(jù)存儲(chǔ)至分配的鏈表中,將分配的存儲(chǔ)首地址、尾地址、數(shù)據(jù)大小以及對(duì)應(yīng)的參數(shù)信息根據(jù)標(biāo)識(shí)號(hào)存儲(chǔ)至對(duì)應(yīng)的索引塊片上SRAM中。當(dāng)對(duì)緩沖區(qū)對(duì)象或顯示列表進(jìn)行調(diào)用時(shí),首先根據(jù)標(biāo)識(shí)號(hào)從對(duì)應(yīng)的索引塊中獲取存儲(chǔ)首地址、數(shù)據(jù)大小等參數(shù)信息,并根據(jù)偏移地址按照鏈表的遍歷方式從指定的地址開始返回被調(diào)用的數(shù)據(jù)信息,以此完成緩沖區(qū)對(duì)象與顯示列表的管理。
2.4 紋理對(duì)象與2D圖形圖像索引塊管理
紋理作為繪制更逼近真實(shí)場(chǎng)景的渲染數(shù)據(jù)信息之一,具有大片、連續(xù)等特征,其存儲(chǔ)空間一般都要求具有連續(xù)性。在HMGPU中,紋理采用固定分區(qū)形式進(jìn)行連續(xù)存儲(chǔ),紋理空間最多支持6幅紋理圖像,每一幅紋理共提供12層mipmap映射。對(duì)于每一幅紋理,在SRAM中均設(shè)有獨(dú)立且固定的索引塊。當(dāng)接收到紋理創(chuàng)建請(qǐng)求時(shí),首先根據(jù)紋理名字以及mipmap層次從片上SRAM中獲取該紋理數(shù)據(jù)的物理存儲(chǔ)地址,并將紋理數(shù)據(jù)存儲(chǔ)于指定的存儲(chǔ)空間,最后將對(duì)應(yīng)參數(shù)信息存儲(chǔ)于SRAM中以備后續(xù)訪問(wèn)紋理使用。當(dāng)需要進(jìn)行紋理訪問(wèn)時(shí),類似于紋理的創(chuàng)建過(guò)程,首先從片上SRAM中獲取該紋理對(duì)應(yīng)的mipmap層的存儲(chǔ)首地址,并將其與偏移地址相加,獲取實(shí)際需要讀取的紋理數(shù)據(jù),最后返回給用戶端即完成紋理的訪問(wèn)。
2D引擎中所需存儲(chǔ)于DDR2 SDRAM中的圖像包括源圖像、目標(biāo)圖像、掩碼圖像、2D圖形等4類圖像。對(duì)于2D圖形圖像存儲(chǔ)與讀取,則根據(jù)2D引擎所發(fā)送的圖形圖像索引信息進(jìn)行對(duì)應(yīng)的物理地址映射,并進(jìn)行數(shù)據(jù)的存儲(chǔ)或者讀取。
2.5 頂點(diǎn)染色器與像素染色器染色程序索引塊
在HMGPU系統(tǒng)中,頂點(diǎn)染色器VS(Vertex Shader)以及像素染色器PS(Pixel Shader)均是可編程的。為了節(jié)省片上存儲(chǔ)空間,依據(jù)Cache與主存之間的存儲(chǔ)層次性原理,將大小固定的VS與PS染色程序存儲(chǔ)于DDR2中,備后續(xù)固定程序加載使用。以VS程序加載為例,在存儲(chǔ)中預(yù)定兩塊固定存儲(chǔ)空間,并按照乒乓方式進(jìn)行染色程序的存儲(chǔ)與讀取,即每次存儲(chǔ)與讀取加載程序的存儲(chǔ)塊都是交替進(jìn)行的,靈活而高效地實(shí)現(xiàn)染色程序的加載。
3 設(shè)計(jì)驗(yàn)證和綜合
對(duì)所完成的HMGPU存儲(chǔ)管理系統(tǒng)的硬件電路進(jìn)行具體設(shè)計(jì),在Synopsys公司的VCS環(huán)境下進(jìn)行了充分的功能仿真,并在DC環(huán)境下進(jìn)行邏輯綜合,電路工作頻率達(dá)到167 MHz。同時(shí),采用System Verilog語(yǔ)言,使用總線功能模型驗(yàn)證方法構(gòu)建層次化的驗(yàn)證環(huán)境,搭建自動(dòng)化的驗(yàn)證平臺(tái),通過(guò)固定測(cè)試和隨機(jī)測(cè)試對(duì)各功能點(diǎn)進(jìn)行測(cè)試。測(cè)試平臺(tái)如圖3所示。
測(cè)試平臺(tái)由輸入單元、輸出單元以及輸出響應(yīng)構(gòu)成,其中輸入單元采用總線功能模型驗(yàn)證的方法產(chǎn)生不同的測(cè)試激勵(lì),按照接口時(shí)序的要求將測(cè)試命令送到參考模型和待測(cè)試設(shè)計(jì)DUV(Design Under Verification)中;輸出單元比較參考模型輸出信號(hào)和DUV輸出信號(hào),若結(jié)果不一致則打印錯(cuò)誤報(bào)告同時(shí)結(jié)束仿真。
本文根據(jù)HMGPU的具體應(yīng)用需求,將存儲(chǔ)區(qū)劃分成顯示存儲(chǔ)區(qū)與其他圖形圖像數(shù)據(jù)區(qū)兩部分。對(duì)于每一類數(shù)據(jù),分別設(shè)定獨(dú)立控制模塊完成對(duì)該類數(shù)據(jù)的管理,并提供存儲(chǔ)系統(tǒng)的并發(fā)訪問(wèn),有效地實(shí)現(xiàn)了異構(gòu)多核圖形處理器的存儲(chǔ)管理系統(tǒng)。
整個(gè)系統(tǒng)采用Verilog語(yǔ)言實(shí)現(xiàn)其電路設(shè)計(jì),并對(duì)電路進(jìn)行了功能驗(yàn)證與DC綜合以及FPGA驗(yàn)證。結(jié)果表明,HMGPU存儲(chǔ)管理系統(tǒng)電路工作正常,且硬件電路具有良好的擴(kuò)展性,實(shí)用性強(qiáng),能夠滿足HMGPU存儲(chǔ)帶寬需求。本設(shè)計(jì)已經(jīng)應(yīng)用于自主研發(fā)的HMGPU中,協(xié)同其他部件完成圖形的渲染。
參考文獻(xiàn)
[1] COPE B,PETER Y K,LUK W.Using reconfigurable logic to optimise GPU memory accesses[C].Design,Automation and Test in Europe,DATE′08.Munich,2008:44-49.
[2] 馬安國(guó),成玉,唐遇星,等.GPU異構(gòu)系統(tǒng)中的存儲(chǔ)層次和負(fù)載均衡策略研究[J].國(guó)防科技大學(xué)學(xué)報(bào),2009,31(5):38-43.
[3] HENRY W,MISELMYRTO P,MARYAM S A,et al.Demystifying GPU microarchitecture through microbenchmarking[C]. Performance Analysis of Systems & Software,IEEE International Symposium on Computing & Processing(Hardware/Software),White Plains,NY,March 2010:235-246.
[4] NVIDIA Corporation.NVIDIA CUDA compute unified device architecture reference manual[EB/OL].(2008-06-xx)[2013-01-15].http://www.cs.ucla.edu/~palsberg/course/cs239/papers/CudaReferenceManual_2.0.pdf.1-247.
[5] MCCORMACK J,MCNAMARA R,GIANOS C,et al.Implementing neon:a 256-bit graphics accelerator[J].Micro IEEE,1999,19(2):58-69.
[6] MCCORMACK J,MCNAMARA R,GIANOS C,et al.Neon: A single-chip 3D workstation graphics accelerator,research report 98/1[C].HWWS′98 Proceedings of the ACM SIGGRAPH/EUROGRAPHICS Workshop on Graphics Hardware. ACM,New York,NY,USA,1998:123-132.