專利名稱:本地與全局?jǐn)?shù)據(jù)共享的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及優(yōu)化圖形處理單元中執(zhí)行線程之間的數(shù)據(jù)共享。
背景技術(shù):
圖形處理單元(graphics processing unit ;GPU)是為圖形處理操作優(yōu)化的專用 集成電路。在執(zhí)行具有苛刻的圖形處理需求的應(yīng)用,例如視頻游戲應(yīng)用,的計(jì)算設(shè)備中(例 如個(gè)人電腦、渲染農(nóng)場(chǎng)(rendering farm)或服務(wù)器、手持設(shè)備、數(shù)字電視等)經(jīng)常包含有圖 形處理單元(GPU)。為提升處理效率,圖形處理單元(GPU)通常利用單指令多數(shù)據(jù)(single instruction multiple data ;“SIMD”,或“向量”)指令執(zhí)行并行線程,以實(shí)現(xiàn)數(shù)據(jù)級(jí)并行。 這使得SIMD處理器能夠例如通過對(duì)單個(gè)SIMD通道(lane)上的各像素運(yùn)行獨(dú)立的線程操 作而對(duì)多個(gè)像素?cái)?shù)據(jù)執(zhí)行相同的指令。但是,在未執(zhí)行計(jì)算復(fù)雜且成本昂貴的數(shù)據(jù)存儲(chǔ)和 檢索指令的情況下,在任一 SIMD通道內(nèi)生成的數(shù)據(jù)通常無法被其他SIMD通道訪問。因此,需要提供一種改進(jìn)技術(shù),以實(shí)現(xiàn)SIMD通道之間的數(shù)據(jù)共享。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例包含一種圖形處理單元,該圖形處理單元包括多個(gè)SIMD處 理單元,各SIMD處理單元包括多個(gè)線程處理器,多個(gè)通用寄存器(general purpose register ;GPR)文件,各GI3R文件與該多個(gè)線程處理器之一通信,以及本地?cái)?shù)據(jù)共享(local data share ;LDQ,該本地?cái)?shù)據(jù)共享與該多個(gè)線程處理器的各線程處理器通信;以及全局?jǐn)?shù) 據(jù)共享(glcAal data share ;⑶幻,該全局?jǐn)?shù)據(jù)共享與該多個(gè)SIMD處理單元的各SIMD處 理單元中該多個(gè)線程處理器的各線程處理器通信。本發(fā)明實(shí)施例還包含一種制造方法,其包括多個(gè)SIMD處理單元,各SIMD處理單 元包括多個(gè)線程處理器,多個(gè)通用寄存器(GPR)文件,各GI3R文件與該多個(gè)線程處理器之 一通信,以及本地?cái)?shù)據(jù)共享(LDQ,該本地?cái)?shù)據(jù)共享與該多個(gè)線程處理器的各線程處理器通 信;以及形成全局?jǐn)?shù)據(jù)共享(⑶幻,該全局?jǐn)?shù)據(jù)共享與該多個(gè)SIMD處理單元的各SIMD處理 單元中該多個(gè)線程處理器的各線程處理器通信。本發(fā)明實(shí)施例還包含一種計(jì)算機(jī)可讀介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,若由 計(jì)算設(shè)備執(zhí)行該些指令,則使該計(jì)算設(shè)備執(zhí)行一種方法,該方法包括將圖像的一組像素分 配至一組SIMD處理器;將該組像素的像素子集分配至各該組SIMD處理器的各SIMD處理器 的各處理通道;將該像素子集存儲(chǔ)在與各處理通道關(guān)聯(lián)的通用寄存器(GPR)文件中;基于 該像素子集計(jì)算逐通道(per-lane)本地結(jié)果;以及將該逐通道本地結(jié)果自該GI5R文件寫 入與該處理通道關(guān)聯(lián)的本地?cái)?shù)據(jù)共享(LDQ的私有區(qū)域,該LDS僅與包含該處理通道的該 SIMD處理器關(guān)聯(lián)。下面參照附圖進(jìn)一步詳細(xì)描述本發(fā)明的特征和優(yōu)點(diǎn),以及本發(fā)明不同實(shí)施例的結(jié) 構(gòu)和操作。應(yīng)當(dāng)注意的是,本發(fā)明并不限于這里所述的特定實(shí)施例。這里所提出的實(shí)施例僅僅是出于說明目的。基于這里所包含的教導(dǎo),其他實(shí)施例對(duì)于相關(guān)領(lǐng)域的技術(shù)人員將顯 而易見。
包含于此并構(gòu)成說明書一部分的附圖顯示本發(fā)明實(shí)施例,并進(jìn)一步與書面描述一 起用于解釋本發(fā)明的原理,并使相關(guān)領(lǐng)域的技術(shù)人員能夠制造和使用本發(fā)明。圖1顯示依據(jù)本發(fā)明實(shí)施例的計(jì)算架構(gòu);圖2顯示依據(jù)本發(fā)明實(shí)施例的本地?cái)?shù)據(jù)共享;圖3顯示依據(jù)本發(fā)明實(shí)施例的全局?jǐn)?shù)據(jù)共享;圖4顯示依據(jù)本發(fā)明實(shí)施例的利用該計(jì)算架構(gòu)改進(jìn)圖像處理算法的步驟流程圖; 以及圖5顯示可實(shí)施本發(fā)明實(shí)施例的示例計(jì)算機(jī)系統(tǒng)。下面參照附圖進(jìn)一步詳細(xì)描述本發(fā)明的特征和優(yōu)點(diǎn),以及本發(fā)明不同實(shí)施例的結(jié) 構(gòu)和操作。應(yīng)當(dāng)注意的是,本發(fā)明并不限于這里所述的特定實(shí)施例。這里所提出的實(shí)施例 僅僅是出于說明目的。基于這里所包含的教導(dǎo),其他實(shí)施例對(duì)于相關(guān)領(lǐng)域的技術(shù)人員將顯 而易見。
具體實(shí)施例方式I 介紹以下參照附圖對(duì)本發(fā)明示例實(shí)施例作詳細(xì)描述,所述
與本發(fā)明一致的示 例實(shí)施例。本發(fā)明還可具有其他實(shí)施例,并可在本發(fā)明的精神和范圍內(nèi)修改該些實(shí)施例。因 此,所作詳細(xì)描述并非意圖限制本發(fā)明。相反,本發(fā)明的范圍由所附權(quán)利要求定義。對(duì)于本領(lǐng)域技術(shù)人員顯而易見的是,如下所述的本發(fā)明可在軟件、硬件、固件和/ 或附圖所示的實(shí)體等諸多不同的實(shí)施例中實(shí)施。專門控制硬件以實(shí)施本發(fā)明的任意實(shí)際的 軟件代碼并不限制本發(fā)明。因此,對(duì)本發(fā)明的操作行為描述的前提是在給定的詳細(xì)程度下 可對(duì)所述實(shí)施例進(jìn)行修改和變更。此外,對(duì)于本領(lǐng)域的技術(shù)人員顯而易見的是,可通過使 用計(jì)算機(jī)可讀代碼(如上所述),包含通用編程語言(例如C或C++),Verilog HDL、VHDL、 Altera HDL(AHDL)等硬件描述語言(HDL),或其他可用的編程和/或原理圖擷取工具(例 如電路擷取工具)部分地實(shí)施本發(fā)明的各種實(shí)施例的模擬、綜合和/或制造。該計(jì)算機(jī)可讀代碼可設(shè)置于任意已知的計(jì)算機(jī)可用介質(zhì)中,包含半導(dǎo)體、磁盤、光 盤(例如CD-ROM、DVD-ROM),并作為計(jì)算機(jī)數(shù)據(jù)信號(hào)實(shí)施于計(jì)算機(jī)可用(例如可讀)傳輸 介質(zhì)中(例如載波或任意其他介質(zhì),包含數(shù)字介質(zhì)、光學(xué)介質(zhì)或基于模擬的介質(zhì))。因此,該 代碼可在包含hternet以及互聯(lián)網(wǎng)的通信網(wǎng)絡(luò)上傳輸。應(yīng)當(dāng)理解,由上述系統(tǒng)和技術(shù)實(shí)現(xiàn) 的功能和/或提供的結(jié)構(gòu)可表示在以程序代碼實(shí)施的核心中(例如GPU核心),并可轉(zhuǎn)換成 硬件作為集成電路生產(chǎn)的一部分。圖1顯示依據(jù)本發(fā)明實(shí)施例的計(jì)算架構(gòu)100。架構(gòu)100包含一個(gè)或多個(gè)SIMD 處理器l(^a-102m。依據(jù)本發(fā)明實(shí)施例,各SIMD處理器包含一個(gè)或多個(gè)線程處理器,在 SIMD 0102a 中顯示為 104a0-104an,在 SIMD m 102m 中顯示為 104m0_104mn。此外,依據(jù) 本發(fā)明實(shí)施例,各線程處理器也關(guān)聯(lián)一通用寄存器(GPR)文件,在SIMD 0 10 中顯示為6106a0-106an,在SIMD m 102m中顯示為106m0_106mn。盡管該些附圖標(biāo)記顯示本發(fā)明的范 圍內(nèi)考慮了多個(gè)SIMD處理器,各具有多個(gè)線程處理器和GI3R文件,但文中偶爾會(huì)通過引用 基本附圖標(biāo)記(例如102、104和106)而涉及單個(gè)SIMD處理器、線程處理器和GPR文件。通常將單個(gè)線程處理器104和與其關(guān)聯(lián)的GPR文件106的結(jié)合稱作SIMD處理通 道(或簡(jiǎn)稱為“通道”或“SIMD通道”)。相關(guān)領(lǐng)域的技術(shù)人員應(yīng)了解,與該線程處理器104 和GPR文件106關(guān)聯(lián)的其他元素可構(gòu)成單個(gè)SIMD通道的一部分,并且圖1所示的特定實(shí)施 例僅為示例,而非限制本發(fā)明。依據(jù)本發(fā)明實(shí)施例,架構(gòu)100進(jìn)一步包含多個(gè)本地?cái)?shù)據(jù)共享(“LDS”) 108a-108m, 各SIMD處理器102關(guān)聯(lián)一 LDS 108。而且,架構(gòu)100包含一全局?jǐn)?shù)據(jù)共享(“⑶S”) 110,其 可由各SIMD處理器102的各線程處理器104訪問。該LDS和⑶S將在后面進(jìn)一步詳細(xì)討 論。在架構(gòu)100上執(zhí)行一進(jìn)程(process)時(shí),該進(jìn)程可生成線程集(collection of thread)以在一 SIMD處理器102上執(zhí)行。在SIMD處理器102中,為該線程集中的各線程分 配一特定的SIMD通道,因而將各線程分配至一特定的線程處理器104和GPR文件106。依 據(jù)本發(fā)明實(shí)施例,由同一進(jìn)程生成的該線程集作為“波陣面”分配至一 SIMD處理器102,從 而允許暫時(shí)掩蔽該波陣面中單個(gè)線程的執(zhí)行。依據(jù)本發(fā)明實(shí)施例,可將多個(gè)波陣面分配至 一 SIMD處理器102,如同將任意其他線程集分配至一 SIMD處理器102 —樣。將SIMD處理 器102中運(yùn)行的所有線程,包括多個(gè)波陣面,或其任意子集,統(tǒng)稱為一線程群組(group)。II通用寄存器依據(jù)本發(fā)明實(shí)施例,各SIMD處理器102包含一個(gè)或多個(gè)線程處理器104,各線程處 理器與一 Gra文件106關(guān)聯(lián)。如上所述,可將一波陣面分配至一 SIMD處理器。該波陣面中 的各線程被分配至一特定的SIMD通道執(zhí)行,因而被分配至與該SIMD通道關(guān)聯(lián)的一特定線 程處理器104和GPR文件106。線程處理器104上執(zhí)行的線程能夠讀寫同一通道的GPR文 件106的寄存器。相關(guān)領(lǐng)域的技術(shù)人員應(yīng)了解,目前有多種寄存器訪問實(shí)施技術(shù)能夠使線 程處理器104與GPR文件106通信,從而訪問GPR文件106的寄存器,并且本發(fā)明的實(shí)施例 不限于任意特定的實(shí)施技術(shù)。依據(jù)本發(fā)明實(shí)施例,各GI3R文件106包含與線程處理器104上執(zhí)行的一線程關(guān) 聯(lián)的指定私有空間或寄存器區(qū)塊。依據(jù)本發(fā)明進(jìn)一步實(shí)施例,GI^R文件106被提前分割 (segment)為多個(gè)私有寄存器區(qū)塊(private register block)。線程處理器104中執(zhí)行的 多個(gè)新線程于首次執(zhí)行時(shí)被分配一私有寄存器區(qū)塊,并成為可寫訪問該私有寄存器區(qū)塊的 唯一線程。依據(jù)本發(fā)明另一實(shí)施例,GPR文件106包含共享全局池(sharedglobal pool), 在線程處理器104上執(zhí)行的任意線程,無論其與哪個(gè)波陣面關(guān)聯(lián),都能夠讀寫該共享 全局池。該功能允許相鄰線程訪問保留全局區(qū),因而允許讀取、修改和寫入順序無關(guān) (order-independent)的相關(guān)全局?jǐn)?shù)據(jù)。該功能還允許分配至同一 SIMD通道但屬于不同波 陣面的多個(gè)線程之間的快速共享。III本地?cái)?shù)據(jù)共享如上所述,各SIMD處理器102包含一 LDS 108。該LDS 108可供同一 SIMD處理器 102內(nèi)的各線程處理器104直接訪問。依據(jù)本發(fā)明一實(shí)施例,LDS 108被分割為多個(gè)私有寫空間,各私有寫空間對(duì)應(yīng)并保留給一線程處理器104的一個(gè)執(zhí)行線程。依據(jù)本發(fā)明另一實(shí) 施例,各私有寫空間對(duì)應(yīng)一線程處理器104。相關(guān)領(lǐng)域的技術(shù)人員應(yīng)了解,LDS 108的分割 方式可變化,并且上述分割方式僅為示例,而非限制本發(fā)明。依據(jù)本發(fā)明一實(shí)施例,被分配至LDS 108的一私有寫空間的線程處理器104上運(yùn) 行的線程能夠讀寫該所分配的私有寫空間。此外,任意線程處理器104能夠讀取LDS 108 的任意私有寫空間,從而能夠使多個(gè)線程處理器104在SIMD處理器102內(nèi)共享數(shù)據(jù)。相關(guān) 領(lǐng)域的技術(shù)人員應(yīng)了解,盡管LDS 108采用“所有者-寫(owner-write)”模式操作,但還可 采用其他訪問模式,并且該“所有者-寫”模式僅為示例,而非限制本發(fā)明。依據(jù)本發(fā)明另一實(shí)施例,分配至LDS 108的一私有寫空間的單個(gè)線程能夠讀寫該 所分配的私有寫空間。在SIMD 102上執(zhí)行的任意線程,包含在其他線程處理器104上執(zhí)行 的那些線程,則能夠自該所分配的私有寫空間讀取數(shù)據(jù)。提供具有“所有者-寫”模式的LDS 108不僅能夠使單個(gè)線程處理器104上執(zhí)行 的多個(gè)線程之間共享數(shù)據(jù),如同上面所述的Gra共享一樣,而且能夠使SIMD 102的所有線 程處理器104上運(yùn)行的所有線程之間共享數(shù)據(jù)。其允許在一波陣面內(nèi)的線程與在同一波陣 面內(nèi)的其他線程共享數(shù)據(jù)。此外,該行為允許同一 SIMD 102上執(zhí)行的任意波陣面內(nèi)運(yùn)行的 線程訪問屬于該線程群組中任意其他波陣面的線程的數(shù)據(jù)。圖2顯示依據(jù)本發(fā)明實(shí)施例對(duì)應(yīng)圖1的LDS 108a-108m的LDS存儲(chǔ)器寫架構(gòu)200。 相關(guān)領(lǐng)域的技術(shù)人員應(yīng)了解,圖2所示的數(shù)據(jù)寬度和邏輯布局并不一定嚴(yán)格按照如圖所示 實(shí)施,并且可容納不同數(shù)目的數(shù)據(jù)寬度和邏輯布局。單個(gè)SIMD處理器102內(nèi)的所有GI5R文 件106集在圖2中顯示為GPRs 201。依據(jù)本發(fā)明一實(shí)施例,將數(shù)據(jù)自GPRs 201寫入LDS 203是通過將該數(shù)據(jù)寫至對(duì)應(yīng) 一線程向量寫位置的LDS內(nèi)地址實(shí)現(xiàn)的,它是為特定的執(zhí)行線程保留的一節(jié)LDS。將其稱作 在該LDS內(nèi)該線程的私有寫空間。相關(guān)領(lǐng)域的技術(shù)人員應(yīng)了解,可使用多種尋址模式,并且 這里所述的尋址模式僅為示例,而非限制本發(fā)明。依據(jù)本發(fā)明進(jìn)一步實(shí)施例,該LDS內(nèi)的私有寫空間是可變的。例如,但不限于,私 有寫空間被分配為每個(gè)線程一個(gè)寄存器,容納高達(dá)16個(gè)波陣面,或是,16個(gè)寄存器以及僅 一個(gè)波陣面。本領(lǐng)域的技術(shù)人員應(yīng)了解,為每個(gè)線程分配的寄存器數(shù)目以及該LDS可容納 的最終的波陣面總數(shù)有多種組合,并且上面提供的群組僅為示例,而非限制本發(fā)明。在其他 實(shí)施例中,還可將該多個(gè)波陣面分成大小可變的線程群組。依據(jù)本發(fā)明另一實(shí)施例,設(shè)置一個(gè)或多個(gè)復(fù)用器(multiplexer) 202,以將數(shù)據(jù)自 GPRs 201寫入LDS 203。安排寫操作時(shí),自GPRs 201讀取數(shù)據(jù)并將其寫入LDS 203。在一 實(shí)施例中,在單個(gè)時(shí)鐘周期內(nèi)將四個(gè)線程的數(shù)據(jù)自GPRs 201寫入LDS 203。如前所述,依據(jù)本發(fā)明一實(shí)施例,每個(gè)SIMD處理器102具有一 LDS存儲(chǔ)器 108/203。依據(jù)本發(fā)明另一實(shí)施例,SIMD處理器102內(nèi)執(zhí)行的各波陣面被分配至LDS 108內(nèi) 一波陣面存儲(chǔ)區(qū)。構(gòu)成該波陣面的各線程被分配至此較大的波陣面存儲(chǔ)區(qū)內(nèi)的一特定存儲(chǔ) 區(qū)。此避免線程向非分配存儲(chǔ)區(qū)或由其相應(yīng)波陣面的其他線程共享的存儲(chǔ)區(qū)寫入數(shù)據(jù),但 允許線程在其所分配的存儲(chǔ)區(qū)內(nèi)交換數(shù)據(jù)。例如,但不限于,將LDS存儲(chǔ)器203分割成對(duì)應(yīng)各波陣面的存儲(chǔ)區(qū)以對(duì)其索引 (index) 0例如,存儲(chǔ)區(qū)206對(duì)應(yīng)波陣面0。當(dāng)寫入存儲(chǔ)區(qū)206時(shí),將波陣面0的線程0_3安排寫入存儲(chǔ)塊索引(bank indeX)0處的LDS 203,如204處所示。一實(shí)施例中,該寫操作發(fā) 生于單個(gè)時(shí)鐘周期內(nèi)。對(duì)波陣面0內(nèi)的每組四個(gè)線程重復(fù)該進(jìn)程,接著在下一時(shí)鐘周期內(nèi) 將下一組四個(gè)線程寫至下一存儲(chǔ)塊(bank)。相關(guān)領(lǐng)域的技術(shù)人員應(yīng)了解,這里提出的時(shí)序 和存儲(chǔ)容量值僅為示例,而非限制本發(fā)明。依據(jù)本發(fā)明進(jìn)一步實(shí)施例,可使用專門的廣播讀模式,以自該LDS快速讀取數(shù)據(jù), 該數(shù)據(jù)被返回至波陣面中的所有線程,或返回至共享寄存器。一實(shí)施例中,該廣播讀模式執(zhí) 行一至四個(gè)dword數(shù)據(jù)的快速讀取,并在四個(gè)時(shí)鐘周期內(nèi)將該數(shù)據(jù)返回至各波陣面內(nèi)的所 有線程。依據(jù)本發(fā)明另一實(shí)施例,實(shí)施屏障(barrier)指令。該屏障指令出現(xiàn)于自同一進(jìn) 程生成的所有線程內(nèi)(例如線程群組或波陣面),該屏障指令迫使所有線程在繼續(xù)執(zhí)行之 前同步至該屏障點(diǎn)(barrier point)。例如,但不限于,使用該屏障指令可避免訪問該LDS 時(shí)出現(xiàn)危險(xiǎn)(hazard)狀況。例如,如果一線程執(zhí)行讀取該LDS數(shù)據(jù)的指令,而該LDS正由來 自另一波陣面的不同線程寫入,則這時(shí)無法知道是否能夠獲得該線程希望讀取的數(shù)據(jù)。通 過將提供所述數(shù)據(jù)的寫指令置于屏障指令之前,并將讀指令置于該屏障指令之后,可保證 該讀指令將自LDS獲得正確的數(shù)據(jù)。相關(guān)領(lǐng)域的技術(shù)人員應(yīng)了解,該屏障指令可具有其他 用途,包含,例如但不限于,避免其他訪問危險(xiǎn)。IV全局?jǐn)?shù)據(jù)共享圖3顯示依據(jù)本發(fā)明實(shí)施例支持來自所有SIMD處理單元的讀寫操作的⑶S 300。 另外,依據(jù)本發(fā)明進(jìn)一步實(shí)施例,SIMD處理單元可通過廣播自該⑶S 300請(qǐng)求數(shù)據(jù),從而利 用來自該GDS 300的廣播數(shù)據(jù)更新系統(tǒng)中所有的GI^R文件。相關(guān)領(lǐng)域的技術(shù)人員應(yīng)了解,圖3所示的數(shù)據(jù)寬度和邏輯布局并不一定嚴(yán)格按照 如圖所示實(shí)施,并且可容納不同數(shù)目的數(shù)據(jù)寬度和邏輯布局。V示例應(yīng)用圖4顯示依據(jù)本發(fā)明實(shí)施例利用該私有GPR空間、全局GPR空間、LDS和⑶S的所 述功能的示例應(yīng)用的流程圖400。例如,但不限于,該流程圖400可用于在一個(gè)操作周期內(nèi) 計(jì)算圖像上的屬性,例如該圖像的最大和最小亮度值。相關(guān)領(lǐng)域的技術(shù)人員應(yīng)了解,其他應(yīng) 用也可利用該私有GPR空間、全局GPR空間、LDS和⑶S的配置,并且流程圖400僅為示例, 而非限制本發(fā)明。該方法從步驟402開始執(zhí)行,接著前進(jìn)至步驟404,在步驟404中,將該圖像的像素 子集分配至一個(gè)或多個(gè)波陣面。在各波陣面中,將分配至該波陣面的像素子集分配至該波 陣面的各線程,其中,該波陣面已分配至一 SIMD處理器102。該波陣面的各線程在該所分 配的SIMD處理器102的一通道內(nèi)執(zhí)行,該通道對(duì)應(yīng)特定的線程處理器104以及與其關(guān)聯(lián)的 GPR文件106。由于在單個(gè)SIMD處理器102中可執(zhí)行一個(gè)或多個(gè)波陣面,因此執(zhí)行流程圖 400的步驟的多個(gè)線程可被分配至同一 SIMD處理器102中的同一通道。在步驟406中,將各線程的相應(yīng)像素子集存儲(chǔ)在與其關(guān)聯(lián)的GI^R文件106中。接 著,在步驟408中,線程處理器104上的各線程計(jì)算逐線程私有結(jié)果。以最大和最小亮度值 為例,線程處理器104計(jì)算分配至該執(zhí)行線程的像素子集的最大和最小亮度值。波陣面的 各通道原子地(atomically)將其結(jié)果與存儲(chǔ)在各通道的全局GI5R空間中的逐通道結(jié)果結(jié) 合。在安排完成該圖像的所有像素后,縮減階段(reductionphase)開始將存儲(chǔ)在該全局寄存器中的“本地結(jié)果”寫入LDS 108的該線程私有區(qū)域。接著,在步驟412中,對(duì)于各SIMD 102,配置一個(gè)通道以讀取由SIMD 102的各通道 生成的全部本地結(jié)果,并將該數(shù)據(jù)縮減,以獲得SIMD本地結(jié)果。例如,對(duì)應(yīng)單個(gè)線程處理器 104的通道被分配用以縮減所述本地結(jié)果,以獲得所述SIMD本地結(jié)果。該線程處理器104 將LDS 108的所有本地結(jié)果讀入其GI^R文件106,并在所有該本地結(jié)果中計(jì)算最大和最小亮 度值。該計(jì)算結(jié)果成為該SIMD本地結(jié)果。在步驟414中,該線程處理器104將該SIMD本 地結(jié)果寫入⑶S 110的私有區(qū)域。類似地,在步驟416中,單個(gè)線程處理器104自⑶S 110讀取并收集所有SIMD本 地結(jié)果,并縮減該數(shù)據(jù)以獲得最終結(jié)果。例如,單個(gè)線程處理器104將所有SIMD本地結(jié)果 自GDS 110讀入其GPR文件106,并在所有該SIMD本地結(jié)果中計(jì)算最大和最小亮度值。該 計(jì)算結(jié)果成為該縮減的最終結(jié)果。接著,在步驟418中,將該最終結(jié)果存儲(chǔ)至一存儲(chǔ)器位置 (memory location)。依據(jù)本發(fā)明另一實(shí)施例,該步驟418使用計(jì)算的最終結(jié)果被作為中間 結(jié)果存儲(chǔ)回該GDS,并在該存儲(chǔ)操作后接著執(zhí)行廣播讀,以導(dǎo)入(populate) GI^R文件106中 供第二次執(zhí)行流程圖400所述的操作。VI計(jì)算機(jī)系統(tǒng)實(shí)施可由軟件、固件、硬件或其組合實(shí)施本發(fā)明的不同態(tài)樣。圖5顯示示例計(jì)算機(jī)系統(tǒng) 500,其中,本發(fā)明或其部分作為計(jì)算機(jī)可讀代碼實(shí)施。根據(jù)該示例計(jì)算機(jī)系統(tǒng)500描述本 發(fā)明的不同實(shí)施例。閱讀本說明之后,對(duì)于相關(guān)領(lǐng)域的技術(shù)人員而言,如何利用其他計(jì)算機(jī) 系統(tǒng)和/或計(jì)算機(jī)架構(gòu)實(shí)施本發(fā)明將變得顯而易見。計(jì)算機(jī)系統(tǒng)500包含一個(gè)或多個(gè)處理器,例如處理器504。處理器504可為專用或 通用處理器。處理器504連接至通信基礎(chǔ)設(shè)施506 (例如總線或網(wǎng)絡(luò))。計(jì)算機(jī)系統(tǒng)500還包含主要存儲(chǔ)器508,較佳為隨機(jī)訪問存儲(chǔ)器(random access memory ;RAM);并且還可包含次要存儲(chǔ)器510。次要存儲(chǔ)器510例如可包含硬盤驅(qū)動(dòng)器512、 可移除存儲(chǔ)驅(qū)動(dòng)器514和/或存儲(chǔ)卡(memory stick)。可移除存儲(chǔ)驅(qū)動(dòng)器514可包括軟盤 驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、光盤驅(qū)動(dòng)器、快閃存儲(chǔ)器等等??梢瞥鎯?chǔ)驅(qū)動(dòng)器514通過現(xiàn)有方式 讀取和/或?qū)懭肟梢瞥鎯?chǔ)單元518??梢瞥鎯?chǔ)單元518可包括軟盤、磁帶、光盤等等,其 由可移除存儲(chǔ)驅(qū)動(dòng)器514讀寫。相關(guān)領(lǐng)域的技術(shù)人員應(yīng)了解,可移除存儲(chǔ)單元518包含計(jì) 算機(jī)可用存儲(chǔ)介質(zhì),其中存儲(chǔ)有計(jì)算機(jī)軟件和/或數(shù)據(jù)。在替代實(shí)施中,次要存儲(chǔ)器510可包含可將計(jì)算機(jī)程序或其他指令載入計(jì)算機(jī)系 統(tǒng)500的其他類似裝置。此類裝置可包含,例如可移除存儲(chǔ)單元522以及接口 520。此類裝 置例如可包含程序磁帶盒(program cartridge)和磁帶盒接口(例如可在視頻游戲設(shè)備中 找到)、可移除存儲(chǔ)芯片(例如EPROM或PR0M)及相關(guān)插座,以及允許將軟件和數(shù)據(jù)傳輸至 計(jì)算機(jī)系統(tǒng)500的其他可移除存儲(chǔ)單元522和接口 520。計(jì)算機(jī)系統(tǒng)500還可包含通信接口 524。通信接口 5M允許計(jì)算機(jī)系統(tǒng)500與外部 設(shè)備之間傳輸軟件和數(shù)據(jù)。通信接口 5M可包含調(diào)制解調(diào)器、網(wǎng)絡(luò)接口(例如以太網(wǎng)卡)、 通信端口、PCMCIA插槽和卡等等。經(jīng)由通信接口 5M傳輸?shù)能浖蛿?shù)據(jù)為信號(hào)形式,其可為 電子信號(hào)、電磁信號(hào)、光信號(hào)或其他能夠由通信接口 5M接收的信號(hào)。這些信號(hào)經(jīng)由通信路 徑5 提供至通信接口 524。通信路徑5 傳輸信號(hào),并可使用電線或線纜、光纖、電話線、 蜂窩電話鏈路、RF鏈路或其他通信溝道實(shí)現(xiàn)。
本文中,術(shù)語“計(jì)算機(jī)程序介質(zhì)”和“計(jì)算機(jī)可用介質(zhì)”一般指例如可移除存儲(chǔ)單元 518、可移除存儲(chǔ)單元522以及安裝在硬盤驅(qū)動(dòng)器512中的硬盤等介質(zhì)。在通信路徑5 上 傳輸?shù)男盘?hào)還可實(shí)施這里所述的邏輯。計(jì)算機(jī)程序介質(zhì)和計(jì)算機(jī)可用介質(zhì)還可指存儲(chǔ)器, 例如主要存儲(chǔ)器508和次要存儲(chǔ)器510,其可為存儲(chǔ)器半導(dǎo)體(memorysemiconductor)(例 如DRAM等)。該些計(jì)算機(jī)程序產(chǎn)品是為計(jì)算機(jī)系統(tǒng)500提供軟件的裝置。計(jì)算機(jī)程序(還稱作計(jì)算機(jī)控制邏輯或數(shù)據(jù)和/或指令)存儲(chǔ)在主要存儲(chǔ)器508 和/或次要存儲(chǔ)器510中。計(jì)算機(jī)程序還可經(jīng)由通信接口 5M接收。此類計(jì)算機(jī)程序于執(zhí) 行時(shí)能夠使計(jì)算機(jī)系統(tǒng)500實(shí)施這里所討論的本發(fā)明。尤其是,該些計(jì)算機(jī)程序于執(zhí)行時(shí) 能夠使處理器504實(shí)施本發(fā)明的進(jìn)程。因此,此類計(jì)算機(jī)程序代表計(jì)算機(jī)系統(tǒng)500的控制 器。利用軟件實(shí)施本發(fā)明時(shí),該軟件可存儲(chǔ)在計(jì)算機(jī)程序產(chǎn)品中,并通過可移除存儲(chǔ)驅(qū)動(dòng)器 514、接口 510、硬盤驅(qū)動(dòng)器512或通信接口 5M載入計(jì)算機(jī)系統(tǒng)500。本發(fā)明還針對(duì)計(jì)算機(jī)程序產(chǎn)品,其包括存儲(chǔ)在任意計(jì)算機(jī)可用介質(zhì)上的軟件。在 一個(gè)或多個(gè)數(shù)據(jù)處理設(shè)備中執(zhí)行此類軟件時(shí),此類軟件使數(shù)據(jù)處理設(shè)備如這里所述操作, 或如上所述允許計(jì)算設(shè)備(例如ASIC或處理器)的綜合和/或制造,從而執(zhí)行如這里所述 的本發(fā)明的實(shí)施例。本發(fā)明的實(shí)施例采用已知或未知的任意計(jì)算機(jī)可用或可讀介質(zhì)。計(jì)算 機(jī)可用介質(zhì)例如包含,但不限于,主存儲(chǔ)設(shè)備(例如任意類型的隨機(jī)訪問存儲(chǔ)器)、輔助存 儲(chǔ)設(shè)備(例如硬盤驅(qū)動(dòng)器、軟盤、CD ROM,ZIP盤、磁帶、磁存儲(chǔ)設(shè)備、光存儲(chǔ)設(shè)備、MEMS、納米 技術(shù)存儲(chǔ)設(shè)備等等)以及通信介質(zhì)(例如有線和無線通信網(wǎng)絡(luò)、局域網(wǎng)、廣域網(wǎng)、企業(yè)內(nèi)部 網(wǎng)等等)。VII 結(jié)論盡管上面描述了本發(fā)明的不同實(shí)施例,但應(yīng)當(dāng)理解,這些實(shí)施例僅為示例,而非限 制本發(fā)明。相關(guān)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可在所附權(quán)利要求所定義的本發(fā)明的精神和范 圍內(nèi)對(duì)本發(fā)明進(jìn)行形式和細(xì)節(jié)上的各種修改。應(yīng)當(dāng)理解,本發(fā)明并不限于這些示例。本發(fā) 明可適用于如這里所述操作的任意元件。因此,本發(fā)明的廣度和范圍不應(yīng)當(dāng)限于示例實(shí)施 例,而是僅依據(jù)權(quán)利要求及其等同所定義。
權(quán)利要求
1.一種圖形處理單元,包括多個(gè)SIMD處理單元,各SIMD處理單元包括 多個(gè)線程處理器,多個(gè)通用寄存器(GPR)文件,各GI^R文件與該多個(gè)線程處理器之一通信,以及 本地?cái)?shù)據(jù)共享(LDQ,該本地?cái)?shù)據(jù)共享與該多個(gè)線程處理器的各線程處理器通信;以及全局?jǐn)?shù)據(jù)共享(⑶幻,該全局?jǐn)?shù)據(jù)共享與該多個(gè)SIMD處理單元的各SIMD處理單元中該 多個(gè)線程處理器的各線程處理器通信。
2.如權(quán)利要求1所述的圖形處理單元,其中,各GI^R文件包括寄存器的私有區(qū)塊,該寄存器的私有區(qū)塊被分配至與該GPR文件關(guān)聯(lián)的該線程處理器 上執(zhí)行的一個(gè)或多個(gè)線程的第一線程,其中,僅該第一線程能夠讀或?qū)懺撍接袇^(qū)塊;以及 寄存器的全局區(qū)塊,其中,該一個(gè)或多個(gè)線程的任意線程能夠讀與寫該全局區(qū)塊。
3.如權(quán)利要求1所述的圖形處理單元,其中,該多個(gè)SIMD處理單元的各LDS包括 多個(gè)私有寫空間,各私有寫空間被分配至與該LDS關(guān)聯(lián)的該SIMD處理單元的該多個(gè)線程處理器上執(zhí)行的多個(gè)線程的各線程。
4.如權(quán)利要求3所述的圖形處理單元,其中,該私有寫空間的大小是可變的。
5.如權(quán)利要求3所述的圖形處理單元,其中,僅該多個(gè)線程處理器的第一線程處理器 能夠?qū)懭肫渌峙涞乃接袑懣臻g,并且其中,該多個(gè)線程處理器能夠讀取該所分配的私有 寫空間。
6.如權(quán)利要求1所述的圖形處理單元,其中,該GDS包括多個(gè)私有寫空間,各私有寫空間被分配至該多個(gè)SIMD處理單元的該多個(gè)線程處理器之一。
7.如權(quán)利要求6所述的圖形處理單元,其中,僅該多個(gè)線程處理器的第一線程處理器 能夠?qū)懭肫渌峙涞乃接袑懣臻g,并且其中,該多個(gè)線程處理器能夠讀取該所分配的私有 寫空間。
8.一種制造方法,包括形成多個(gè)SIMD處理單元,各SIMD處理單元包括 多個(gè)線程處理器,多個(gè)通用寄存器(GPR)文件,各GI^R文件與該多個(gè)線程處理器之一通信,以及 本地?cái)?shù)據(jù)共享(LDQ,該本地?cái)?shù)據(jù)共享與該多個(gè)線程處理器的各線程處理器通信;以及形成全局?jǐn)?shù)據(jù)共享(⑶幻,該全局?jǐn)?shù)據(jù)共享與該多個(gè)SIMD處理單元的各SIMD處理單元 中該多個(gè)線程處理器的各線程處理器通信。
9.如權(quán)利要求8所述的方法,其中,形成該多個(gè)SIMD處理單元的各SIMD處理單元包括形成該多個(gè)GPR文件的各GPR文件,各GPR文件包括寄存器的私有區(qū)塊,該寄存器的私有區(qū)塊被分配至與該GPR文件關(guān)聯(lián)的該線程處理 器上執(zhí)行的一個(gè)或多個(gè)線程的第一線程,其中,僅該第一線程能夠?qū)懭朐撍接袇^(qū)塊,并且其 中,該一個(gè)或多個(gè)線程的任意線程能夠讀取該私有區(qū)塊;以及寄存器的全局區(qū)塊,其中,該一個(gè)或多個(gè)線程的任意線程能夠讀寫該全局區(qū)塊。
10.如權(quán)利要求8所述的方法,其中,形成該多個(gè)SIMD處理單元的各SIMD處理單元包括形成該LDS,該LDS包括多個(gè)私有寫空間,各私有寫空間被分配至與該LDS關(guān)聯(lián)的該SIMD處理單元的該多個(gè)線 程處理器上執(zhí)行的多個(gè)線程的各線程。
11.如權(quán)利要求10所述的方法,其中,該私有寫空間的大小是可變的。
12.如權(quán)利要求10所述的方法,其中,僅該多個(gè)線程處理器的線程處理器上執(zhí)行的第 一線程能夠?qū)懭肫渌峙涞乃接袑懣臻g,并且其中,該線程處理器上執(zhí)行的該多個(gè)線程能 夠讀取該所分配的私有寫空間。
13.如權(quán)利要求8所述的方法,其中,該⑶S包括多個(gè)私有寫空間,各私有寫空間被分配至該多個(gè)SIMD處理單元的該多個(gè)線程處理器 上執(zhí)行的該線程之一。
14.如權(quán)利要求13所述的方法,其中,僅該多個(gè)線程處理器的線程處理器上執(zhí)行的第 一線程能夠讀寫其所分配的私有寫空間。
15.如權(quán)利要求8所述的方法,其中,該方法通過綜合硬件描述語言指令執(zhí)行。
16.一種計(jì)算機(jī)可讀介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,若由計(jì)算設(shè)備執(zhí)行該些指 令,則使該計(jì)算設(shè)備執(zhí)行一種方法,該方法包括將圖像的一組像素分配至一組SIMD處理器;將該組像素的像素子集分配至該組SIMD處理器的各SIMD處理器的處理通道上執(zhí)行的 各線程;將該像素子集存儲(chǔ)在與各處理通道關(guān)聯(lián)的通用寄存器(GPR)文件中; 基于該GPR文件的私有空間中的該像素子集計(jì)算逐線程私有結(jié)果; 累積該逐線程私有結(jié)果與由同一通道的線程計(jì)算的其他逐線程私有結(jié)果,以生成逐通 道本地結(jié)果,該逐通道本地結(jié)果存儲(chǔ)在該GPR文件的全局空間中;以及將該逐通道本地結(jié)果自該GI^R文件的該全局空間寫入與該處理通道關(guān)聯(lián)的本地?cái)?shù)據(jù) 共享(LDQ的私有區(qū)域,該LDS僅與包含該處理通道的該SIMD處理器關(guān)聯(lián)。
17.如權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),該方法進(jìn)一步包括將各逐通道本地結(jié)果自該LDS讀入第一單個(gè)處理通道的第一單個(gè)GPR文件; 縮減來自該LDS的所有逐通道本地結(jié)果的結(jié)果,以獲得SIMD本地結(jié)果;以及 將該SIMD本地結(jié)果自該第一單個(gè)GPR文件寫入與該第一單個(gè)處理通道關(guān)聯(lián)的全局?jǐn)?shù) 據(jù)共享(GDS)的私有區(qū)域。
18.如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其中,該方法進(jìn)一步包括 將各SIMD本地結(jié)果自該⑶S讀入第二單個(gè)處理通道的第二單個(gè)GPR文件; 縮減來自該GDS的所有SIMD本地結(jié)果的結(jié)果,以獲得最終結(jié)果;以及 寫入該最終結(jié)果。
19.如權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),其中,寫入該最終結(jié)果包括 將該最終結(jié)果寫入存儲(chǔ)器位置。
20.如權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),其中,寫入該最終結(jié)果包括將該最終結(jié)果寫回至該⑶S,該方法進(jìn)一步包括 執(zhí)行廣播讀指令;響應(yīng)該廣播讀指令將該GDS的該最終結(jié)果導(dǎo)入該GPR ;以及 在隨后的計(jì)算中使用該最終結(jié)果作為中間結(jié)果以計(jì)算隨后的逐線程私有結(jié)果。
21.一種方法,包括將圖像的一組像素分配至一組SIMD處理器;將該組像素的像素子集分配至該組SIMD處理器的各SIMD處理器的處理通道上執(zhí)行的 各線程;將該像素子集存儲(chǔ)在與各處理通道關(guān)聯(lián)的通用寄存器(GPR)文件中; 基于該GPR文件的私有空間中的該像素子集計(jì)算逐線程私有結(jié)果; 累積該逐線程私有結(jié)果與由同一通道的線程計(jì)算的其他逐線程私有結(jié)果,以生成逐通 道本地結(jié)果,其存儲(chǔ)在該GI^R文件的全局空間中;以及將該逐通道本地結(jié)果自該GPR文件的該全局空間寫入與該處理通道關(guān)聯(lián)的本地?cái)?shù)據(jù) 共享(LDQ的私有區(qū)域,該LDS僅與包含該處理通道的該SIMD處理器關(guān)聯(lián)。
22.如權(quán)利要求21所述的方法,進(jìn)一步包括將各逐通道本地結(jié)果自該LDS讀入第一單個(gè)處理通道的第一單個(gè)GPR文件; 縮減來自該LDS的所有逐通道本地結(jié)果的結(jié)果,以獲得SIMD本地結(jié)果;以及 將該SIMD本地結(jié)果自該第一單個(gè)GPR文件寫入與該第一單個(gè)處理通道關(guān)聯(lián)的全局?jǐn)?shù) 據(jù)共享(GDS)的私有區(qū)域。
23.如權(quán)利要求22所述的方法,進(jìn)一步包括將各SIMD本地結(jié)果自該⑶S讀入第二單個(gè)處理通道的第二單個(gè)GPR文件; 縮減來自該GDS的所有SIMD本地結(jié)果的結(jié)果,以獲得最終結(jié)果;以及 寫入該最終結(jié)果。
24.如權(quán)利要求23所述的方法,其中,寫入該最終結(jié)果包括 將該最終結(jié)果寫入存儲(chǔ)器位置。
25.如權(quán)利要求23所述的方法,其中,寫入該最終結(jié)果包括將該最終結(jié)果寫回至該 ⑶S,該方法進(jìn)一步包括執(zhí)行廣播讀指令;響應(yīng)該廣播讀指令將該GDS的該最終結(jié)果導(dǎo)入該GPR ;以及 在隨后的計(jì)算中使用該最終結(jié)果作為中間結(jié)果以計(jì)算隨后的逐線程私有結(jié)果。
全文摘要
本發(fā)明揭露一種圖形處理單元,該圖形處理單元具有處理器,該處理器具有一個(gè)或多個(gè)SIMD處理單元,以及對(duì)應(yīng)該一個(gè)或多個(gè)SIMD處理單元之一的本地?cái)?shù)據(jù)共享,該本地?cái)?shù)據(jù)共享包括供分配至一個(gè)或多個(gè)執(zhí)行波陣面(wavefront)的各線程群組的一個(gè)或多個(gè)低延遲可訪問存儲(chǔ)區(qū),以及全局?jǐn)?shù)據(jù)共享,該全局?jǐn)?shù)據(jù)共享包括供各線程群組的一個(gè)或多個(gè)低延遲存儲(chǔ)區(qū)。
文檔編號(hào)G06F15/167GK102047241SQ200980119960
公開日2011年5月4日 申請(qǐng)日期2009年6月1日 優(yōu)先權(quán)日2008年5月30日
發(fā)明者B·恩貝林, M·J·曼托 申請(qǐng)人:先進(jìn)微裝置公司