国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

統(tǒng)一渲染架構(gòu)GPU中可配置二級Cache設(shè)計

2020-04-07 09:53杜慧敏康浩然
西安郵電大學(xué)學(xué)報 2020年6期
關(guān)鍵詞:緩沖區(qū)命中率容量

杜慧敏,康浩然,王 可

(西安郵電大學(xué) 電子工程學(xué)院,陜西 西安 710121)

圖形處理器(graphics processing unit,GPU)是專門用于圖像和圖形相關(guān)運算工作的微處理器。GPU可以分為統(tǒng)一渲染架構(gòu)和分離式渲染架構(gòu)兩種類型。相較于分離式渲染架構(gòu),統(tǒng)一渲染架構(gòu)GPU增加了幾何著色器模塊,并將頂點著色器和像素著色器被合成為一個流處理器,同時負(fù)責(zé)頂點著色和像素著色,降低了附載不均衡現(xiàn)象,提高了渲染效果,成為當(dāng)前主流的渲染架構(gòu)。

二級高速緩存(L2 Cache)作為統(tǒng)一渲染架構(gòu)GPU緩存結(jié)構(gòu)中重要的一級,直接影響著GPU整體的性能[1]。由于統(tǒng)一渲染架構(gòu)GPU中存儲系統(tǒng)所占用的芯片面積大多來源于Cache[2],因此對Cache的結(jié)構(gòu)參數(shù)和性能方面的優(yōu)化十分必要[3]。受功耗和面積的限制,統(tǒng)一渲染架構(gòu)GPU中固定的緩存結(jié)構(gòu)難以兼顧不同應(yīng)用場景下存取速度快、容量大和成本低的需求[4]。

事實上,L2 Cache結(jié)構(gòu)和配置取決于整個系統(tǒng)平臺的應(yīng)用場景要求[5],不同應(yīng)用場景的3D圖形渲染需要處理的數(shù)據(jù)量也不同[6],例如,對于圖形渲染能力要求不高的場景,容量更小的Cache存儲器能夠在滿足應(yīng)用需求的情況下降低訪存代價;而在圖形渲染能力要求高的場景,則需要統(tǒng)一渲染架構(gòu)GPU使用容量更大的Cache,充分利用片上資源實現(xiàn)性能提升。例如,文獻(xiàn)[7]從緩存的容量、空間邏輯組織結(jié)構(gòu)的組大小、塊大小、數(shù)據(jù)的替換算法和寫入Cache的數(shù)據(jù)地址流等方面對Cache命中率的影響進(jìn)行分析,選擇合適的參數(shù),提高了緩存的命中率。然而,這些對緩存的優(yōu)化方法都是針對于Cache內(nèi)部結(jié)構(gòu)進(jìn)行相應(yīng)的改善,雖然在一定程度上可以提高緩存的命中率,但是也相應(yīng)地導(dǎo)致緩存結(jié)構(gòu)更加復(fù)雜。

針對上述問題,擬提出一種統(tǒng)一渲染架構(gòu)GPU中可配置L2 Cache設(shè)計方案。L2 Cache采用4路組相聯(lián)映射方式,應(yīng)用讀貫穿策略處理讀缺失,分別使用寫不分配策略及直寫策略處理寫缺失及寫命中,同時,采用路預(yù)測以及改進(jìn)后的最近最少使用(least recently used,LRU)替換算法提升結(jié)構(gòu)性能,應(yīng)用哈希選擇算法,根據(jù)不同的應(yīng)用場景配置統(tǒng)一渲染架構(gòu)GPU內(nèi)部Cache的大小和數(shù)目,以期在實現(xiàn)統(tǒng)一渲染架構(gòu)GPU緩存結(jié)構(gòu)的可擴(kuò)展性及可定制性的同時,提高緩存的性能。

1 設(shè)計思路

1.1 L2 Cache的映射方式

L2 Cache采用4路組相聯(lián)映射方式。訪問L2 Cache的物理地址位寬為40 bit。單個的L2 Cache的大小有128 kB、256 kB和512 kB等3種配置。索引位寬bi的計算公式為

(1)

其中:SC表示單個Cache的大小配置;MC表示Cache內(nèi)部的塊大小;P表示Cache內(nèi)部的相聯(lián)度。標(biāo)記位寬bT的計算公式為

bT=ba-bi-bo。

(2)

其中:ba表示物理地址的位寬;bo表示偏移量的位寬。

1.2 L2 Cache的讀寫策略

對L2 Cache的訪問由處理器核中的一級緩存L1 Cache發(fā)起,L1 Cache與L2 Cache直接通過高級可擴(kuò)展接口(advanced extensible interface,AXI)總線協(xié)議進(jìn)行握手操作。L2 Cache采取讀貫穿策略處理讀取缺失,采取直寫策略處理寫命中,采取寫不分配策略處理寫缺失[8]。

1.3 L2 Cache的替換算法

對于4路組相聯(lián)而言,如果采用經(jīng)典的LRU算法,需要為每一組設(shè)置對應(yīng)位置來記錄每一路的使用狀態(tài),造成邏輯資源的大量消耗。改進(jìn)后的LRU算法,如偽LRU(pseudo-LRU,PLRU)替換算法[9]、改進(jìn)的偽LRU替換算法MPLRU (modified pseudo-LRU)[10]和PLRU-0(pseudo-LRU-0)[11]等算法可以在使用資源較少的情況下,達(dá)到接近經(jīng)典LRU算法的性能。根據(jù)在不同情況下替換結(jié)果的準(zhǔn)確率,對PLRU、MPLRU和PLRU-0等3種算法測試比較發(fā)現(xiàn),PLRU-0算法的替換結(jié)果更加接近于LRU替換算法,故采用PLRU-0算法作為L2 Cache的替換算法。

1.4 路預(yù)測

在計算機(jī)系統(tǒng)中,大部分訪問存儲的操作都是載入操作,即大部分的處理器指令不會對存儲器有寫入操作。一般在無內(nèi)部互鎖流水級的微處理器(microprocessor without interlocked piped stages,MIPS)程序中,存儲指令操作占10%,載入指令占26%。在存儲器通信的總流量中,寫入操作流量約占10%。根據(jù)讀取操作對緩存進(jìn)行優(yōu)化可以獲得計算性能的提升[12]。

采用路預(yù)測技術(shù)后,4路組相聯(lián)的L2 Cache綜合了直接相聯(lián)的優(yōu)點。在Cache訪問時,采用直接相聯(lián)的方式訪問預(yù)測的路,預(yù)測成功后返回數(shù)據(jù),縮短了命中時間,即使預(yù)測失敗也不會造成額外的延遲。

2 硬件電路設(shè)計

設(shè)計的L2 Cache主要由哈希選擇模塊、片上網(wǎng)絡(luò)(network-on-chip,NoC)接收模塊、仲裁器模塊、標(biāo)識匹配模塊、緩存行獲取模塊、缺失Buffer模塊以及寫入緩沖區(qū)模塊組成。設(shè)計的L2 Cache整體硬件架構(gòu)示意圖如圖1所示。

圖1 L2 Cache硬件架構(gòu)

2.1 哈希選擇模塊

由于L2 Cache數(shù)量可配置,當(dāng)存在多個L2 Cache時,需要對當(dāng)前請求訪問的L2 Cache進(jìn)行判斷。以512 kB大小的L2 Cache為例,可以有1個512 kB的Cache塊、2個256 kB的Cache塊和4個128 kB的Cache塊3種配置方案,即L2 Cache通過改變配置字段L2_config將L2 Cache數(shù)量配置為1、2或4個,每一種配置都對應(yīng)著Model 1、Model 2和Model 4中的一種L2 Cache的選擇方法,L2 Cache ID與模式選擇方法如表1所示。

表1 L2 Cache ID和模式選擇方法

根據(jù)當(dāng)前L2 Cache的配置對地址進(jìn)行位哈希運算,得到不同配置模式下選擇L2 Cache的方法Model 1、Model 2、Model 4,分別對應(yīng)使能1個、2個和4個L2 Cache的模式。訪問L2 Cache地址的具體計算方法示意圖如圖2所示,其中Abus代表地址總線。

圖2 哈希選擇計算方法示意圖

2.2 NoC接收模塊

NoC接收模塊負(fù)責(zé)接收來自片上網(wǎng)絡(luò)的L2 Cache讀請求、寫回請求和寫請求。來自片上網(wǎng)絡(luò)的讀請求事務(wù)信息包含讀有效信號、讀地址和讀事務(wù)ID等信息。寫請求是對L2 Cache某個地址的寫操作,寫回請求是L1 Cache中為“臟”的數(shù)據(jù)在替換時向L2 Cache發(fā)出的寫回請求,以保證二者數(shù)據(jù)的一致性。寫回請求和寫請求包含寫有效信號、寫地址、寫數(shù)據(jù)和寫事務(wù)ID等信息。NoC接收模塊通過對讀請求、寫回請求和寫請求進(jìn)行緩存處理,保證L2 Cache每處理一個請求時其他請求不會丟失,同時輸出對應(yīng)事務(wù)的事務(wù)信息傳遞給仲裁模塊進(jìn)行仲裁。處理讀請求、寫回請求和寫請求的結(jié)構(gòu)相同,以讀請求為例說明其原理,NoC接收模塊中的讀請求原理示意圖如圖3所示。

圖3 NoC接收模塊讀請求原理

2.3 仲裁模塊

仲裁模塊會接收來自互聯(lián)網(wǎng)絡(luò)和任務(wù)控制總線(job control bus,JCB)上的各種請求并進(jìn)行仲裁處理,具體包括寫請求、寫回請求、讀請求、JCB總線請求和重匹配請求等。仲裁模塊會對這些請求進(jìn)行優(yōu)先級的判斷,輸出最終送往Tag_tp模塊的事務(wù)。仲裁模塊結(jié)構(gòu)示意圖如圖4所示。

圖4 仲裁模塊結(jié)構(gòu)

2.4 路預(yù)測模塊

路預(yù)測模塊的作用是對讀取操作采取預(yù)測處理。在組相聯(lián)的Cache中,對當(dāng)前命中的路進(jìn)行預(yù)測,以有效地減少延遲。采用路預(yù)測時,若預(yù)測成功,可以減少Tag匹配的時間,即使預(yù)測失敗,延遲增加也較小,失敗代價為多訪問一次數(shù)據(jù)隨機(jī)存取存儲器(random access memory,RAM)的時間。

2.5 標(biāo)識匹配模塊

標(biāo)識匹配模塊主要進(jìn)行訪問地址Tag的匹配、LRU狀態(tài)的更新以及根據(jù)當(dāng)前LRU狀態(tài)選擇合適的LRU塊進(jìn)行替換。標(biāo)識匹配模塊中主要包含LRU_UPDATE模塊和LRU_REPLACE模塊。標(biāo)識匹配模塊結(jié)構(gòu)示意圖如圖5所示。

圖5 標(biāo)識匹配模塊結(jié)構(gòu)

LRU_UPDATE模塊根據(jù)當(dāng)前訪問的緩存塊來進(jìn)行LRU狀態(tài)的更新。每當(dāng)對一個緩存塊進(jìn)行訪問或者替換時,都會根據(jù)hit_way或者vict_way更新LRU信息,以此來保證LRU狀態(tài)保存的是當(dāng)前最新的LRU塊。

LRU_REPLACE模塊主要根據(jù)讀取的LRU狀態(tài)來計算當(dāng)前所要替換的路vict_way,并將從內(nèi)存中讀取回來的數(shù)據(jù)寫入RAM中所要替換的數(shù)據(jù)塊。

整個Tag的匹配過程是一個4級流水線。首先,根據(jù)arb_trans_addr[16:6]讀取4路組中的Tag和State。其次,進(jìn)行請求地址與Cache本身Tag的匹配。再次,根據(jù)當(dāng)前請求命中情況進(jìn)行讀寫操作。最后,將產(chǎn)生信號進(jìn)行一級緩沖,輸出RAM更新信息。

2.6 緩存行獲取模塊

緩存行模塊主要負(fù)責(zé)在發(fā)生讀取缺失時,將缺失地址等信息通過AXI總線發(fā)送給內(nèi)存,取出數(shù)據(jù)后寫回到對應(yīng)需要替換的緩存塊。該模塊需要緩存讀取缺失時的地址以及需要替換的緩存塊號,以保證數(shù)據(jù)返回后寫入Data_RAM的位置正確。緩存行獲取模塊結(jié)構(gòu)示意圖如圖6所示。

lf_buffer主要緩存讀取缺失需要替換的緩存塊信息,即每次缺失需要替換的緩存的組lf_line和根據(jù)PLRU計算出來的需要替換的路lf_way。AXI模塊是對當(dāng)前事務(wù)信息進(jìn)行處理,得到標(biāo)準(zhǔn)的AXI讀地址通道信息。

圖6 緩存行獲取模塊結(jié)構(gòu)

2.7 缺失buffer模塊

缺失buffer負(fù)責(zé)緩存請求缺失的地址和ID。由于采取讀貫穿策略,當(dāng)前讀取請求缺失時會將缺失地址發(fā)送給內(nèi)存請求數(shù)據(jù),在請求數(shù)據(jù)返回Cache后會將本次缺失地址發(fā)送給Cache再次進(jìn)行匹配,缺失地址采用先入先出的形式發(fā)送給Cache。

2.8 寫入緩沖區(qū)模塊

L2 Cache在寫命中時采用直寫策略,在寫缺失時采用寫不分配策略。無論寫入操作是否命中,寫操作的內(nèi)容都必須發(fā)送到內(nèi)存。由于內(nèi)存的寫入操作時間過長,L2 Cache需要等待寫入內(nèi)存完成才能繼續(xù)工作,為此引入寫入緩沖區(qū)。當(dāng)寫入緩沖區(qū)為空狀態(tài)時,寫地址和寫數(shù)據(jù)存入寫入緩沖區(qū),處理核默認(rèn)寫入操作完成,繼續(xù)處理其他請求,實際寫入操作由寫入緩沖區(qū)完成。當(dāng)寫入緩沖區(qū)為滿狀態(tài)時,緩存必須等待寫緩沖區(qū)中的項目寫入內(nèi)存,直到寫入緩沖區(qū)有空,寫入緩沖區(qū)模塊結(jié)構(gòu)示意圖如圖7所示。

圖7 寫緩沖區(qū)模塊結(jié)構(gòu)

3 測試結(jié)果及分析

使用Xilinx Virtex UltraScale系列的XCVU440平臺對搭載可重配置L2 Cache的統(tǒng)一渲染架構(gòu)GPU進(jìn)行測試。XCVU440平臺有432 680個邏輯單元、88.6 Mb的BRAM、2 880個DSP Slices和6個PCIe嵌入式IP硬核,是常用的GPU性能測試平臺。由于XCVU440測試平臺的板載資源有限,將待測試GPU架構(gòu)中L2 Cache的總大小固定為512 kB,根據(jù)L2 Cache的可配置性,將L2 Cache的大小及數(shù)目分為1個512 kB、2個256 kB以及4個128 kB三種情況。

渲染任務(wù)選用了“獸人”“花瓣”“甜甜圈”“猴子”“汽車”等5種較為典型的OpenGL ES 2.0應(yīng)用程序,渲染任務(wù)如圖8所示。

圖8 渲染任務(wù)

測試得到的不同配置情況條件下L2 Cache的命中率如圖9所示。

圖9 L2 Cache的命中率

可以看出,渲染任務(wù)“獸人”所需要處理的頂點個數(shù)為39 356個,頂點個數(shù)較多。單個L2 Cache容量較小時命中率較低,當(dāng)逐漸增大L2 Cache容量并減少Cache個數(shù)時,內(nèi)存能映射到L2 Cache的存儲塊增多,導(dǎo)致命中率有著較大提升。當(dāng)單個L2 Cache容量從128 kB提高到512 kB時,命中率有將近4%的提升。

渲染任務(wù)“花瓣”“甜甜圈”中所需要處理的頂點個數(shù)分別為789個和1 985個,繪制過程中處理重復(fù)數(shù)據(jù)次數(shù)較多,且數(shù)據(jù)之間的相關(guān)性較高,Cache的命中率較高。由于數(shù)據(jù)量較少,單個L2 Cache大小的升高反而不會導(dǎo)致命中率有更大的提升。

渲染任務(wù)“猴子”中所需要處理的頂點個數(shù)為14 985個,且數(shù)據(jù)之間相關(guān)性較小,單個Cache容量較小時,命中率不高。當(dāng)Cache容量從128 kB增加到512 kB時,命中率約提升了2.5%左右。

渲染任務(wù)“汽車”中所需要處理的頂點個數(shù)為27 956個,且圖形中具有較多鏤空,在運行過程中會造成Cache數(shù)據(jù)的多次替換,具有較少的重復(fù)數(shù)據(jù),較小的單個Cache容量不利于命中率的提高,其命中率在單個Cache大小為512 kB時約為70.88%,達(dá)到最大。

為了進(jìn)一步驗證算法的性能,與文獻(xiàn)[14]嵌入式平臺統(tǒng)一渲染架構(gòu)GPU中不可配置L2 Cache的性能進(jìn)行比較。文獻(xiàn)[13]選用“斯坦福兔”“牛”“猶他壺”圖形作為渲染任務(wù)。為了方便對比,選用同樣的渲染圖形作為測試用例,統(tǒng)一設(shè)置L2 Cache總?cè)萘繛?12 kB。在3種渲染渲染任務(wù)中,“斯坦福兔”模型中的三角形有69 451個,是3種測試用例中最多的,在配置時選用單個Cache大小512 kB的模式;“?!蹦P椭械娜切斡? 804個,在3種測試用例中處于居中位置,在配置時選用2個256 kB Cache大小的配置模式;“猶他壺”模型使用的三角形有1 024個,是3種測試用例中最少的,在配置中選用4個128 kB大小的Cache配置模式,命中率與文獻(xiàn)[13]對比結(jié)果如表2所示。

表2 命中率對比結(jié)果

得益于更為合理的替換算法,“斯坦福兔”和“猶他壺”模型測試得到的命中率相較于文獻(xiàn)[13]分別提升了9.28%和1.03%,“?!蹦P蜏y試得到的命中率有所下降,但更小的單一Cache容量能夠有效降低數(shù)據(jù)替換過程的時間、功耗等代價。

4 結(jié)語

針對統(tǒng)一渲染架構(gòu)GPU在不同應(yīng)用場景下緩存需求差距較大的問題,提出了一種統(tǒng)一渲染架構(gòu)GPU中可配置L2 Cache設(shè)計方案。采用4路組相聯(lián)映射方式配置L2 Cache結(jié)構(gòu),應(yīng)用讀貫穿策略處理讀缺失,分別使用寫不分配策略及直寫策略處理寫缺失及寫命中,采用路預(yù)測和PLRU-0替換算法提升結(jié)構(gòu)性能,應(yīng)用哈希選擇算法,根據(jù)不同的應(yīng)用場景配置統(tǒng)一渲染架構(gòu)GPU內(nèi)部Cache的大小和數(shù)目,最終實現(xiàn)了128 kB、256 kB、512 kB 三種L2 Cache大小及數(shù)目的配置模式,實現(xiàn)了主存和緩存之間的高效數(shù)據(jù)交換。經(jīng)過系統(tǒng)級測試,與不可配置L2 Cache方案相比,所提設(shè)計方案能夠為統(tǒng)一渲染架構(gòu)GPU提供多種存儲結(jié)構(gòu)優(yōu)化方案,使其在不同應(yīng)用場景下,能夠合理劃分內(nèi)部資源,在降低Cache數(shù)據(jù)替換代價的同時,有效地提升了GPU中緩存結(jié)構(gòu)的性能。

猜你喜歡
緩沖區(qū)命中率容量
基于文獻(xiàn)回顧的罰球命中率與軀干穩(wěn)定性影響因素研究
水瓶的容量
2015男籃亞錦賽四強(qiáng)隊三分球進(jìn)攻特點的比較研究
投籃的力量休斯敦火箭
緩沖區(qū)溢出漏洞攻擊及其對策探析
小桶裝水
初涉緩沖區(qū)
本期導(dǎo)讀
Linux系統(tǒng)下緩沖區(qū)溢出漏洞攻擊的防范
鼴鼠牌游樂場
长沙市| 河池市| 额济纳旗| 崇州市| 海兴县| 渝中区| 大埔县| 怀宁县| 兴安县| 博客| 阜平县| 沈丘县| 青河县| 聊城市| 西宁市| 遂昌县| 天全县| 墨脱县| 峨山| 鄂托克前旗| 万源市| 安化县| 许昌县| 沁阳市| 肥东县| 伊宁市| 凤庆县| 连江县| 大理市| 宜阳县| 紫云| 德昌县| 原阳县| 鄂尔多斯市| 彰化县| 长葛市| 大厂| 辛集市| 商都县| 武平县| 成武县|