一種高數(shù)據(jù)通量紋理Cache層次結(jié)構(gòu)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機硬件技術(shù)領(lǐng)域,尤其涉及一種高數(shù)據(jù)通量紋理Cache結(jié)構(gòu)。
【背景技術(shù)】
[0002]3D圖形繪制的紋理映射功能存在大量需要被貼圖的片段,每個片段的紋理過濾時會發(fā)出多個紋理存儲器訪問請求,紋理存儲器需要為紋理過濾單元提供“高帶寬、低延遲”的紋理數(shù)據(jù),而3D圖形繪制中大量的紋理數(shù)據(jù)需要存儲在片外的DDR存儲器上,因此需要使用高數(shù)據(jù)通量的cache完成數(shù)據(jù)的獲取。
【發(fā)明內(nèi)容】
[0003]本發(fā)明提供了一種高數(shù)據(jù)通量紋理Cache層次結(jié)構(gòu),解決了圖形處理器內(nèi)部存儲帶寬瓶頸問題。
[0004]本發(fā)明的技術(shù)解決方案是:本發(fā)明為一種高數(shù)據(jù)通量紋理Cache層次結(jié)構(gòu),其特殊之處在于:該結(jié)構(gòu)包括兩組多端口、非阻塞、流水線的紋理一級Cache、紋理濾波單元、紋理解壓縮單元和流水線紋理二級Cache;所述紋理一級Cache與紋理濾波單元相連,用于提供紋素給紋理濾波單元進行紋理濾波;紋理一級Cache還有一端與紋理解壓縮單元相連,用于當(dāng)一級Cache發(fā)生缺失時通過紋理二級Cache和紋理解壓縮單元獲取更新數(shù)據(jù);所述紋理解壓縮單元一端與紋理一級Cache相連,另一端與紋理二級Cache相連,用于解壓縮紋理二級Cache的數(shù)據(jù);所述紋理二級Cache與紋理解壓縮單元相連。
[0005]上述紋理一級Cache為多Bank多端口 Cache,可同時處理紋理地址產(chǎn)生器并發(fā)的多組紋理請求;
[0006]上述紋理一級Cache為非阻塞Cache,紋理地址產(chǎn)生器的某個紋理請求發(fā)生缺失后,紋理一級Cache可以繼續(xù)取后續(xù)紋理地址產(chǎn)生器的紋理請求;
[0007]上述紋理一級Cache為流水線Cache,發(fā)生命中時能夠每時鐘周期完成一組紋理訪問請求的訪問。
[0008]上述的紋理二級Cache為流水線Cache,發(fā)生命中時每個時鐘周期可以完成一次紋理請求的處理;所述紋理二級Cache內(nèi)部存儲壓縮格式的紋理,根據(jù)紋理一級Cache的更新請求將壓縮紋理通過解壓縮模塊解壓縮后更新紋理一級Cache。
[0009]紋理存儲訪問是3D圖形處理中對于DDR帶寬需求巨大的訪問。采用兩級紋理Cache可以有效地降低3D圖形處理對于DDR帶寬的需求。圖形處理器中設(shè)置多個并行的紋理單元可以極大地提高紋理貼圖速度,多個紋理單元需要并行讀取多個紋理數(shù)據(jù),對應(yīng)的紋理Cache系統(tǒng)應(yīng)該可以一次提供多個數(shù)據(jù)訪問,多端口多Bank的Cache設(shè)計能夠滿足多個紋理請求同時訪問的需求。紋理貼圖時多個紋理貼圖之間沒有相關(guān)性,某個紋理訪問紋理Cache時發(fā)生缺失的更新等待期間紋理處理單元可以處理后續(xù)的紋理,將Cache數(shù)據(jù)的更新和紋理的請求并行起來,所以Cache應(yīng)該是非阻塞的。
[0010]本發(fā)明為了進一步減少存儲帶寬需求,紋理數(shù)據(jù)可以采用壓縮格式存儲在DDR中。由于紋理映射過程對于每個三角形僅執(zhí)行一次,所以可以使用有損壓縮。S3TC壓縮算法將紋理圖像劃分為4*4的Tiles,壓縮算法針對每個Tile進行。將一個Tile的16個顏色值用4個參考值(其中兩個需要存儲,另外兩個通過插值獲得)和16個2位的索引值標(biāo)志。因此本發(fā)明的具有以下優(yōu)點:
[0011 ] 1、本發(fā)明內(nèi)部集成一級Cache和二級Cache,一級Cache又根據(jù)紋理需求劃分為多個子Cache。一級Cache采用多Bank、多端口、非阻塞、流水線設(shè)計,能夠同時為多個并發(fā)的紋理流水線提供多組紋理數(shù)據(jù)。
[0012]2、本發(fā)明的二級Cache采用流水線設(shè)計,內(nèi)部采用壓縮存儲,提高總體帶寬。
[0013]3、本發(fā)明的層次結(jié)構(gòu)的紋理Cache數(shù)據(jù)吞吐率高,延遲小,并發(fā)性強,適用于多紋理流水線的處理。
【附圖說明】
:
[0014]圖1是本發(fā)明的結(jié)構(gòu)框圖;
[0015]圖2是本發(fā)明中紋理一級Cache的結(jié)構(gòu)框圖;
[0016]圖3是本發(fā)明中紋理二級Cache的結(jié)構(gòu)框圖;
[0017]圖4是本發(fā)明中紋理解壓縮的結(jié)構(gòu)框圖。
【具體實施方式】
:
[0018]下面結(jié)合附圖和具體實施例,對本發(fā)明的技術(shù)方案進行清楚、完整地表述。顯然,所表述的實施例僅是本發(fā)明一部分實施例,而不是全部的實施例,基于本發(fā)明中的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提所獲得的所有其他實施例,都屬于本發(fā)明的保護范圍。
[0019]參見圖1,本發(fā)明的具體實施例中,該結(jié)構(gòu)包括兩組多端口、非阻塞、流水線的紋理一級Cache2、紋理濾波單元3、紋理解壓縮單元4和流水線紋理二級Cache5,其外部分別與紋理地址處理器I和外部紋理DDR緩沖區(qū)6連接;其中:
[0020]紋理一級Cache2—端與紋理地址處理器I相連,用于接收紋理地址處理器產(chǎn)生的并行的多個紋理訪問請求,另一端與紋理濾波單元3相連,用于提供紋素給紋理濾波單元進行紋理濾波;紋理一級Cache還有一端與紋理解壓縮單元4相連,用于當(dāng)一級Cache發(fā)生缺失時通過紋理二級Cache和紋理解壓縮單元4獲取更新數(shù)據(jù);
[0021 ] 紋理解壓縮單元4一端與紋理一級Cache I相連,另一端與紋理二級Cache5相連,用于解壓縮紋理二級Cache的數(shù)據(jù);
[0022]紋理二級Cache5—端與紋理解壓縮單元4相連,另一端與外部紋理DDR緩沖區(qū)6相連,用于當(dāng)紋理一級Cache發(fā)生缺失時從外部DDR中更新紋理圖像到一級Cache。
[0023]參見圖2,紋理一級Cache設(shè)計為多端口、多Bank、非阻塞、流水線的Cache。分為三個部分:輸入請求沖突檢測及請求合并劃分2.1、多端口多Bank的紋理一級Cache核2.2、非阻塞單元2.3。其中輸入請求沖突檢測及合并劃分模塊負責(zé)將紋理地址計算單元送來的紋理請求進行合并,并檢測紋素地址的Bank沖突,一次將不沖突的最多9個紋素請求送到多Bank的紋理一級Cache核進行訪問。紋理一級Cache核是標(biāo)準(zhǔn)的多端口、多Bank、流水線Cache,最多可以同時接收9個請求并輸出9組數(shù)據(jù)。非阻塞單元用于非阻塞請求及數(shù)據(jù)緩沖、更新請求合并、缺失更新以及輸出數(shù)據(jù)按照紋理訪問特性進行組裝,并將結(jié)果送到紋理過濾單元。