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

?

面向GPU Cache的訪存請求處理技術(shù)

2021-09-27 16:15:07李炳超
電腦知識與技術(shù) 2021年19期
關(guān)鍵詞:線程

李炳超

摘要:GPU內(nèi)部大量線程的同時運行會生成大量的訪存請求,當訪問同一L1 Cache組的訪存請求所涉及的空間超過L1 Cache一組的容量時,由于沒有Cache行可以分配而導(dǎo)致當前訪存請求及后續(xù)所有訪存請求發(fā)生停頓,影響了GPU的性能。該文設(shè)計了一種訪存請求緩沖隊列結(jié)構(gòu),訪存請求被發(fā)送到不同的隊列中,并通過調(diào)度策略來選擇不會發(fā)生停頓的訪存請求訪問L1 Cache。實驗表明,該方法能夠有效地減少停頓次數(shù),使得GPU的性能平均提高了26%。

關(guān)鍵詞:圖形處理器;高速緩沖存儲器;線程;訪存請求;單指令多線程

中圖分類號:TP33? ? ? ?文獻標識碼:A

文章編號:1009-3044(2021)19-0128-03

1引言

近十多年來,GPU受到越來越多的應(yīng)用程序的青睞。它不僅可以處理高分辨率的3D圖形應(yīng)用,還能為一些具有數(shù)據(jù)并行特征的應(yīng)用程序加速,如圖算法、天氣預(yù)報、加密算法、生物信息處理等等。特別是對于深度神經(jīng)網(wǎng)絡(luò)的迅速發(fā)展,GPU的硬件支撐起到了積極的推動作用。

GPU由多個可執(zhí)行相同程序的流多處理器構(gòu)成,每個流多處理器內(nèi)部具有數(shù)十個用于并行計算的計算核心。另外,為了減少訪存操作的開銷,GPU還為每個流多處理器配備了高帶寬、低延遲的L1 Cache。用戶將應(yīng)用程序的任務(wù)以線程為單位進行細分,進而將多個線程組成一個線程塊。應(yīng)用程序以線程塊為單位被派遣到各個流多處理器上。每個流多處理器能夠同時運行上千個線程,32個線程會被硬件組織成一個線程束。GPU采用單指令多線程的執(zhí)行模式,一個線程束內(nèi)的線程以并行的方式執(zhí)行同一條指令。另外,為了服務(wù)計算核心的并行計算需求,GPU在每個流多處理器內(nèi)部配備了高帶寬、低延遲的L1 Cache。GPU在執(zhí)行訪存指令時,線程束內(nèi)的每個線程都能夠生成一個訪存請求。GPU的讀寫單元對訪問同一數(shù)據(jù)塊(例如128字節(jié))的訪存請求進行合并來減少訪存請求個數(shù),從而能夠減少訪存指令的處理延遲和存儲系統(tǒng)的擁堵。對于一些具有不規(guī)則數(shù)據(jù)結(jié)構(gòu)的應(yīng)用程序,線程束生成的訪存請求并不能被讀寫單元全部合并,從而導(dǎo)致一條訪存指令產(chǎn)生多個訪存請求,線程束需要串行處理各個訪存請求并且等待所有訪存請求的數(shù)據(jù)準備就緒才能繼續(xù)執(zhí)行。如果訪存請求在L1 Cache中發(fā)生命中,則直接從L1 Cache中獲取數(shù)據(jù);如果發(fā)生缺失,根據(jù)替換策略,L1 Cache需要為當前缺失的訪存請求分配一個Cache行,并向下一級存儲器發(fā)送訪存請求來為該Cache行獲取數(shù)據(jù)。在缺失的數(shù)據(jù)未取回之前,該Cache行處于“預(yù)留”狀態(tài),表示該Cache行已經(jīng)被占用并且不能被替換。

然而,GPU的L1 Cache需要為流多處理器內(nèi)部的所有線程服務(wù),過多的訪存請求將會在L1 Cache發(fā)生資源競爭[7]。當訪存請求所需的資源全部被占用時,所有的訪存請求都不得不發(fā)生停頓,從而影響了GPU的性能。文章對由L1 Cache資源競爭引起停頓進行了具體的分析,設(shè)計了一種處理訪存請求的方法REOD。REOD包含一個多緩存隊列結(jié)構(gòu),并結(jié)合相應(yīng)的調(diào)度策略,能夠有效地緩解訪存請求的停頓現(xiàn)象,最終提高GPU的性能。

2訪存請求停頓

由于流多處理器內(nèi)部能同時運行上千個線程,并且每個線程束又能夠產(chǎn)生多個訪存請求,因此流多處理器內(nèi)部會存在大量的訪存請求對L1 Cache進行訪問。頻繁的訪問L1 Cache不僅會造成Cache行局部性的丟失,甚至會造成L1 Cache的暫停。圖1描述了造成訪存請求停頓的三種現(xiàn)象:(1)對于采用組相聯(lián)映射的Cache架構(gòu),訪存請求只能訪問其訪存地址所映射的Cache組。由于大量線程的同時運行,并且每個線程束又能夠產(chǎn)生多個訪存請求,從而導(dǎo)致訪存請求對某一Cache組的集中訪問。若一個Cache組的所有Cache行都已經(jīng)處于“預(yù)留(R)”狀態(tài),則意味著當前Cache組中沒有可以被替換的Cache行,表示該Cache組已滿(例如圖1中的Cache組set-0)。若繼續(xù)有訪存請求訪問該組并發(fā)生缺失,該訪存請求只能停頓并等待數(shù)據(jù)返回該Cache組才能繼續(xù)被處理。對于這種停頓現(xiàn)象,文章將其命名為“CSF”;(2)若缺失的訪存請求沒有發(fā)生CSF,那么缺失信息會暫存在缺失狀態(tài)保持寄存器MSHR中。MSHR由多個條目構(gòu)成,每個條目保存一個Cache行的塊地址,每個條目可容納若干訪問該Cache行的訪存請求。當訪存請求發(fā)生缺失時,若MSHR所有的條目都已經(jīng)被占用或?qū)⒁L問的Cache行所容納的訪存請求個數(shù)已滿,該訪存請求也會發(fā)生停頓,文章將這種停頓現(xiàn)象命名為“MSHRF”;(3)若MSHR能夠保存缺失信息,則訪存請求會被發(fā)送到片內(nèi)互聯(lián)網(wǎng)絡(luò)的缺失隊列中。如果缺失隊列已滿,則訪存請求依然會發(fā)生停頓直到缺失隊列中的一個訪存請求被片內(nèi)互聯(lián)網(wǎng)絡(luò)發(fā)送出去,文章將這種停頓現(xiàn)象命名為“MQF”。在以上三種情況中,訪存請求發(fā)生停頓之后,后續(xù)訪問其他未滿Cache組的訪存請求也必須停頓等待,從而造成訪存指令處理延遲的增加,嚴重影響GPU的性能。

文章對一些應(yīng)用程序運行過程中發(fā)生的停頓次數(shù)進行了統(tǒng)計并進行了歸一化,如圖2所示。三種停頓現(xiàn)象中,CSF的平均比例為92%,MSHRF的平均比例為1%,MQF的平均比例為7%。因此,訪存請求發(fā)生停頓的主要瓶頸是一個訪存請求由于所要訪問的Cache組沒有可分配的Cache行而造成所有的訪存請求都發(fā)生停頓。

3 REOD架構(gòu)

3.1多緩存隊列結(jié)構(gòu)

REOD的主要目標是減少CSF次數(shù),使得訪存請求出現(xiàn)CSF時不會影響后續(xù)訪存請求的處理。為此,文章在REOD中設(shè)計了一種新的訪存請求緩存隊列結(jié)構(gòu),并結(jié)合訪存請求調(diào)度策略,有效地減少訪存請求的停頓現(xiàn)象。如圖3所示,REOD包含若干個容量較小的隊列,每個隊列可與一個(或多個)Cache組對應(yīng)。線程束的訪存請求在訪問L1 Cache之前,首先要根據(jù)訪存請求的訪問地址計算其將要訪問的Cache組索引,然后根據(jù)Cache組索引通過隊列選擇器將訪存請求發(fā)送到相應(yīng)的緩存隊列中。訪存請求選擇器在每個周期根據(jù)輪詢調(diào)度器的調(diào)度結(jié)果從所有的緩存隊列中選取一個有效的訪存請求發(fā)送到L1 Cache進行訪問。若新的訪存請求所對應(yīng)的緩存隊列已滿,則該訪存請求暫定等待。

猜你喜歡
線程
Linux 下多線程的方案實現(xiàn)與對比
基于C#線程實驗探究
基于國產(chǎn)化環(huán)境的線程池模型研究與實現(xiàn)
線程池調(diào)度對服務(wù)器性能影響的研究*
淺談linux多線程協(xié)作
線程池技術(shù)在B/S網(wǎng)絡(luò)管理軟件架構(gòu)中的應(yīng)用
基于上下文定界的Fork/Join并行性的并發(fā)程序可達性分析*
Linux線程實現(xiàn)技術(shù)研究
么移動中間件線程池并發(fā)機制優(yōu)化改進
Java的多線程技術(shù)探討
計算機教育(2006年4期)2006-04-19 02:48:00
梅河口市| 开化县| 东丰县| 大洼县| 常熟市| 军事| 宜阳县| 双柏县| 清水县| 杂多县| 拉孜县| 兖州市| 林周县| 清原| 花莲市| 平潭县| 虞城县| 郯城县| 沁阳市| 珲春市| 江源县| 财经| 临沧市| 岚皋县| 中山市| 当涂县| 敦化市| 洛扎县| 东海县| 宁阳县| 古浪县| 乐清市| 平安县| 新郑市| 天水市| 博客| 正镶白旗| 探索| 龙陵县| 河池市| 濮阳县|