欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

圖形處理器中的前端動態(tài)共享方法

文檔序號:9326650閱讀:478來源:國知局
圖形處理器中的前端動態(tài)共享方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于通用圖形處理器芯片設(shè)計領(lǐng)域,特別涉及處理器芯片的前端部分,可 用于芯片運(yùn)行時,基本不損失性能的前提下,最大程度的節(jié)約能耗。
【背景技術(shù)】
[0002] 近年來,圖形處理器GPU作為通用和高通量設(shè)備經(jīng)歷了巨大的增長。圖形處理器 廠商不斷增加架構(gòu)創(chuàng)新來推進(jìn)多核圖形處理器的并行處理能力大幅度高于多核中央處理 器。但另一方面,現(xiàn)代的圖形處理器芯片消耗了相對于中央處理器數(shù)倍的能量,因此研究 人員提出各架構(gòu)方案以期提高圖形處理器的能量效率。在英偉達(dá)的術(shù)語中,一個典型的圖 形處理器是由多個稱為流多處理器(SM)的計算引擎組成。每個流多處理器的流水線前端 包含取指令,指令譯碼和發(fā)射指令通常需要一部分晶體管工作,平均占圖形處理器的總動 態(tài)功耗的18%,而且僅僅是取指令單元占了圖形處理器總功耗的12%,是第四最耗電的部 件。受此現(xiàn)象引導(dǎo),我們試圖在圖形處理器流水線前端組件上設(shè)計架構(gòu)方案來節(jié)約能耗。
[0003] 如nVidia GPU使用了 CUDA編程模型,對硬件進(jìn)行抽象,包括三個基本概念:線程 組的層次,共享內(nèi)存,同步。提供了細(xì)粒度數(shù)據(jù)并行和線程并行,循環(huán)的粗粒度數(shù)據(jù)并行和 任務(wù)并行。CUDA有可擴(kuò)展的多線程流處理器(SMs)陣列構(gòu)成。當(dāng)執(zhí)行CUDA的kernel時, grid的塊就被分布到多處理器上。一個多處理器由8個標(biāo)量處理器(SP)。每個SM有兩個 warp scheduler 和 dispatch unit。
[0004] CUDA線程模型:GPU上的thread有三個層次。最高層是grid,grid內(nèi)的thread 執(zhí)行相同的kernel,每個grid可以有2~ 16-1個blocks,blocks組織成一維或者二維形式。 中間層是block,每個block內(nèi)部的thread可以組織成三維,最多可以有512個threads。 同一 block內(nèi)部的thread可以通過一個低延遲的片上共享內(nèi)存共享數(shù)據(jù),對數(shù)據(jù)進(jìn)行原子 操作,并通過_syncthreads原語進(jìn)行同步。最后,硬件將thread分為warp執(zhí)行以提高訪 存性能。
[0005] CUDA kernel函數(shù)是C函數(shù),在被調(diào)用時按照指定的grid維數(shù)和線程塊維數(shù)并行 的執(zhí)行。CUDA可以通過內(nèi)置的threadldx變量獲得線程ID。kernel的限制:不能包含循 環(huán),靜態(tài)變量,參數(shù)的個數(shù)必須固定。threadldx是一個三元矢量,所以可以將線程按照一 維,二維或者三維來劃分。在kernel內(nèi)可以通過內(nèi)置的blockldx變量和WockDim變量訪 問某個線程塊。同一網(wǎng)格中不同線程塊中的線程不能互相通信和同步。Block內(nèi)的線程通 過 shared memory,atomic operations 和 barrier synchronization 協(xié)同工作,不同 block 內(nèi)的線程不能通信。Kernel啟動時內(nèi)置變量和函數(shù)參數(shù)存放在shared memory中。
[0006] 每個線程有私有本地內(nèi)存,每個線程塊有共享內(nèi)存,所有線程可以訪問全局內(nèi)存。 所有線程還可以訪問二個只讀內(nèi)存空間,常量和紋理內(nèi)存空間。Kernel內(nèi)的數(shù)組存儲在 local memory 中。Shared memory,G80 上為 16 個 bank,4bytes 為單位進(jìn)行尋址,bank ID =4-byte address% 16,相鄰的4-byte地址映射為相鄰的bank,每一個bank的帶寬為 4bytes per clock cycle。對同一個bank的同時訪問導(dǎo)致bank conflict,只能順序處理。 角軍決方法,padding,transpose。Coalesced global memory accesses,在 half-warp 層對 訪問global memory進(jìn)行協(xié)調(diào),
[0007] CUDA將32個標(biāo)量線程稱為warp,以warp為單位來進(jìn)行創(chuàng)建,管理,調(diào)度,執(zhí)行。 一個warp共享和執(zhí)行相同的指令,由于每個SM有8個core,執(zhí)行一個warp指令需要4個 cycles,類似于一組矢量指令的流,所以標(biāo)量線程可以看成矢量處理單元。一個cycle -條 指令從Ll指令cache加載到指令buffer中,當(dāng)warp的數(shù)據(jù)都可用時被選擇執(zhí)行。Block 內(nèi)的thread按順序分配到不同的warp中,但是warp的順序可能隨著GPU的更新而變化。 GHJ調(diào)度線程零開銷。執(zhí)行結(jié)構(gòu)為單指令多線程SIMT,SM將線程塊中的每一個線程映射 到一個標(biāo)量處理器,每一個標(biāo)量線程獨(dú)立的在自己的指令空間和寄存器狀態(tài)運(yùn)行。S頂T與 SIMD的不同指出在于后者指定了數(shù)據(jù)寬度,然而SIMT中的每一個線程可以執(zhí)行不同的代 碼路徑。SIMT可以使得程序員編寫指令級并行代碼。
[0008] warp是CUDA中,每一個SM執(zhí)行的最小單位;如果GPU有16組SM的話,也就代表 他真正在執(zhí)行的thread數(shù)目會是32*16個。不過由于CUDA是要透過warp的切換來隱藏 thread的延遲、等待,來達(dá)到大量平行化的目的,所以會用所謂的active thread來代表一 個SM里同時可以處理的thread數(shù)目。
[0009] 而在block的方面,一個SM可以同時處理多個thread block,當(dāng)其中有block的 所有thread都處理完后,就會再去找其他還沒處理的block來處理。假設(shè)有16個SM、64 個block、每個SM可以同時處理三個block的話,那一開始執(zhí)行時,device就會同時處理48 個block ;而剩下的16個block則會等SM有處理完block后,再進(jìn)到SM中處理,直到所有 block都處理結(jié)束。
[0010] 為一個多處理器指定了一個或多個要執(zhí)行的線程塊時,它會將其分成warp塊,并 由SIMT單元進(jìn)行調(diào)度。將塊分割為warp的方法總是相同的,每個warp都包含連續(xù)的線 程,遞增線程索引,第一個warp中包含全局線程過索引0-31。每發(fā)出一條指令時,SMT單 元都會選擇一個已準(zhǔn)備好執(zhí)行的warp塊,并將指令發(fā)送到該warp塊的活動線程。Warp塊 每次執(zhí)行一條通用指令,因此在warp塊的全部32個線程執(zhí)行同一條路徑時,可達(dá)到最高效 率。如果一個warp塊的線程通過獨(dú)立于數(shù)據(jù)的條件分支而分散,warp塊將連續(xù)執(zhí)行所使 用的各分支路徑,而禁用未在此路徑上的線程,完成所有路徑時,線程重新匯聚到同一執(zhí)行 路徑下,其執(zhí)行時間為各時間總和。分支僅在warp塊內(nèi)出現(xiàn),不同的warp塊總是獨(dú)立執(zhí)行 的一無論它們執(zhí)行的是通用的代碼路徑還是彼此無關(guān)的代碼路徑。

【發(fā)明內(nèi)容】

[0011] 本發(fā)明的目的是,為了解決圖形處理器高能耗的問題,而提出了一種前端共享架 構(gòu)來改善的GPU(圖形處理單元)的能源使用效率。
[0012] 本發(fā)明的目的是通過下述技術(shù)方案實(shí)現(xiàn)的,一種提高通用圖形處理器能量利用率 的方法,基于共享流多處理器前端的芯片架構(gòu),其特征在于:
[0013] 1)若干相鄰的流多處理器被分組到一個共享前端的集群中同步執(zhí)行,其中一個集 群中索引最小的流多處理器成為主處理器;索引按照設(shè)計時從左到右固定編號,主處理器 不變;
[0014] 2)主流多處理器的前端始終通電,而在從流多處理器的前端中大部分組件是門控 電源;從而節(jié)省能耗;
[0015] 3)不同的共享前端的集群相互獨(dú)立工作;不存在同步。
[0016] 在通用圖形處理器中,每N個相鄰的流多處理器形成集群。在本發(fā)明中,我們推薦 使用兩個或者四個流多處理器集群。
[0017] 進(jìn)一步實(shí)現(xiàn)為:主流多處理器中包含一個增強(qiáng)版的記分板;對于訪存指令,在不 同流多處理器中延遲不同,記分板要記錄所有集群成員的數(shù)據(jù)依賴關(guān)系。
[0018] 但是,對于非訪存指令,因?yàn)槠鋵λ辛鞫嗵幚砥饔邢嗤膱?zhí)行延遲,所以記分板 只檢查主流多處理器自己的數(shù)據(jù)依賴。
[0019] 流多處理器的所有前端部件除了 SMT堆棧外都是門控的。從流多處理器還是管 理自己S頂T堆棧記錄分支發(fā)散和重新收斂條件。這在集群被迫解散以后,各流多處理器獨(dú) 立執(zhí)行后發(fā)揮作用。
[0020] 1)主流多處理器通過片上網(wǎng)絡(luò)調(diào)控和發(fā)射指令。在每一個發(fā)射周期中,主流多處 理器檢查條件以決定是否能發(fā)出指令;檢查條件是指需檢查記分板能夠滿足所有操作數(shù)都 到位;大多數(shù)情況下,由于集群中完全同步狀態(tài),它僅需要檢查它的本地信息(snrr棧,記 分板,執(zhí)行單元狀態(tài)等)。
[0021] 2)對于訪存相關(guān)指令,當(dāng)延遲用于存取存儲器是不同的橫跨短信,從流多處理器 被要求通過片上網(wǎng)絡(luò)向主流多處理器發(fā)送"確認(rèn)"以確認(rèn)完成訪存相關(guān)指令的訪問任務(wù)。
[0022] 3)主流多處理器使用增強(qiáng)的記分板來記錄對整個集群的訪存指令狀態(tài)。一個增強(qiáng) 的記分板是通過給每個記分板的條目添加四個位來實(shí)現(xiàn)的。
[0023] 同時為了保證該方法的正確運(yùn)行,CTA軟件調(diào)度器需要給一個集群中所有流多處 理器分配了相同數(shù)量的線程塊。
[0024] 進(jìn)一步實(shí)現(xiàn)為:在一個包含N個流多處理器的通用圖形處理器開啟一個新的核函 數(shù)時,該通用圖形處理器將通過分成N/S集群,每個集群包含S個相鄰的流多處理器。在每 個集群中,索引最小的流多處理器成為主流多處理器而所有其余的成為從流多處理器。
[0025] 在每一個分支指令時,warp塊中去一個方向(指跳轉(zhuǎn)到同一條指令)將設(shè)置其掩 碼為" 1",而其他方向?qū)⑵溲诖a設(shè)置"0"。
[
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
黄梅县| 固始县| 包头市| 万源市| 丹江口市| 六枝特区| 灌南县| 泗洪县| 齐齐哈尔市| 密山市| 宁陕县| 句容市| 安新县| 济南市| 龙江县| 辽阳市| 绥中县| 改则县| 贵州省| 奎屯市| 罗平县| 翼城县| 兴宁市| 文化| 永德县| 阜阳市| 陈巴尔虎旗| 德安县| 汾西县| 河池市| 南皮县| 清镇市| 吴江市| 五指山市| 香港 | 鹤山市| 都兰县| 民乐县| 甘肃省| 久治县| 元朗区|