本發(fā)明涉及處理數(shù)據(jù),且更明確地說(shuō),涉及使用通用圖形處理單元(GPGPU)來(lái)處理數(shù)據(jù)。
背景技術(shù):通用圖形處理單元(GPGPU)是原始設(shè)計(jì)用來(lái)處理2D和3D圖形的圖形處理單元的一般化版本。GPGPU將GPU的高電力并行處理擴(kuò)展到超越圖形處理的一般數(shù)據(jù)處理應(yīng)用。作為一個(gè)實(shí)例,GPU可經(jīng)配置以根據(jù)OpenCL規(guī)范來(lái)處理數(shù)據(jù),OpenCL規(guī)范給予某些應(yīng)用對(duì)圖形處理單元的接入權(quán)以用于非圖形計(jì)算?!癘penCL規(guī)范,版本1.1”在2010年6月發(fā)布,且公開(kāi)可用。GPGPU包含布置在高度并行結(jié)構(gòu)中的可編程處理單元,高度并行結(jié)構(gòu)不允許處理單元之間的數(shù)據(jù)共享或同步。代替地,個(gè)別處理單元僅與外部存儲(chǔ)器交換數(shù)據(jù)集合。歸因于此結(jié)構(gòu),GPGPU的應(yīng)用限于內(nèi)在并行的那些應(yīng)用。GPGPU架構(gòu)可能高度并行化,以致其阻礙了基于管線的計(jì)算的高效實(shí)施。此限制擴(kuò)展到在每一處理級(jí)處使用并行處理但需要計(jì)算資源在各級(jí)之間的管線化的2D和3D圖形處理。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明描述用于以并行處理單元來(lái)擴(kuò)展通用圖形處理單元(GPGPU)的架構(gòu)以允許基于管線的應(yīng)用的高效處理的技術(shù)。舉例來(lái)說(shuō),所述技術(shù)可包含配置連接到作為處理管線的級(jí)而操作的并行處理單元的本地存儲(chǔ)器緩沖器以保持?jǐn)?shù)據(jù)以供在并行處理單元之間傳送。本地存儲(chǔ)器緩沖器允許并行處理單元之間的芯片上、低電力、直接數(shù)據(jù)傳送。本地存儲(chǔ)器緩沖器可包含基于硬件的數(shù)據(jù)流控制機(jī)制,以實(shí)現(xiàn)數(shù)據(jù)在并行處理單元之間的傳送。以此方式,可經(jīng)由本地存儲(chǔ)器緩沖器將數(shù)據(jù)直接從處理管線中的一個(gè)并行處理單元傳遞到下一并行處理單元,實(shí)際上將并行處理單元變換為一系列管線級(jí)。本地存儲(chǔ)器緩沖器可通過(guò)減少或消除對(duì)處理管線中的并行處理單元中的每一者調(diào)用系統(tǒng)存儲(chǔ)器來(lái)檢索且/或存儲(chǔ)數(shù)據(jù)的需要來(lái)顯著降低存儲(chǔ)器帶寬使用率。在一些實(shí)例中,所述技術(shù)可包含配置本地存儲(chǔ)器緩沖器中的每一者以具有緩沖器保持從前一并行處理單元輸出的數(shù)據(jù)所需的寬度。舉例來(lái)說(shuō),本地存儲(chǔ)器緩沖器可為基于硬件的緩沖器,其可配置以用深度來(lái)?yè)Q取寬度。另外,在一些實(shí)例中,所述技術(shù)可包含執(zhí)行序列化壁壘以在處理管線內(nèi)保存數(shù)據(jù)序列。舉例來(lái)說(shuō),可在數(shù)據(jù)集合進(jìn)入到并行處理單元后,即刻記錄數(shù)據(jù)集合的數(shù)據(jù)線程的序列,且在處理數(shù)據(jù)集合之后,可以與記錄相同的序列將數(shù)據(jù)集合的數(shù)據(jù)線程從并行處理單元釋放。在一個(gè)實(shí)例中,本發(fā)明是針對(duì)一種GPGPU,其包括:兩個(gè)或兩個(gè)以上并行處理單元,其經(jīng)配置以選擇性地作為處理管線的級(jí)而操作;以及一個(gè)或一個(gè)以上本地存儲(chǔ)器緩沖器,所述緩沖器中的每一者連接在所述并行處理單元中的兩者之間,所述本地存儲(chǔ)器緩沖器經(jīng)配置以保持?jǐn)?shù)據(jù)以供在所述并行處理單元之間傳送。在另一實(shí)例中,本發(fā)明是針對(duì)一種用GPGPU來(lái)處理數(shù)據(jù)的方法,所述方法包括:配置兩個(gè)或兩個(gè)以上并行處理單元以選擇性地作為處理管線的級(jí)而操作;以及配置一個(gè)或一個(gè)以上本地存儲(chǔ)器緩沖器,所述緩沖器中的每一者連接在所述并行處理單元中的兩者之間,以保持?jǐn)?shù)據(jù)以供在所述并行處理單元之間傳送。在另一實(shí)例中,本發(fā)明是針對(duì)一種GPGPU,其包括:用于配置兩個(gè)或兩個(gè)以上并行處理單元以選擇性地作為處理管線的級(jí)而操作的裝置;以及用于配置一個(gè)或一個(gè)以上本地存儲(chǔ)器緩沖器的裝置,所述緩沖器中的每一者連接在所述并行處理單元中的兩者之間,以保持?jǐn)?shù)據(jù)以供在所述并行處理單元之間傳送。在另一實(shí)例中,本發(fā)明是針對(duì)一種包括用于用GPGPU來(lái)處理數(shù)據(jù)的指令的計(jì)算機(jī)可讀媒體,所述指令在被執(zhí)行時(shí)致使可編程處理器:配置兩個(gè)或兩個(gè)以上并行處理單元以選擇性地作為處理管線的級(jí)而操作;以及配置一個(gè)或一個(gè)以上本地存儲(chǔ)器緩沖器,所述緩沖器中的每一者連接在所述并行處理單元中的兩者之間,以保持?jǐn)?shù)據(jù)以供在所述并行處理單元之間傳送。在附圖和以下描述中陳述一個(gè)或一個(gè)以上實(shí)例的細(xì)節(jié)。其它特征、目標(biāo)和優(yōu)點(diǎn)將從描述和圖式,且從權(quán)利要求書顯而易見(jiàn)。附圖說(shuō)明圖1是說(shuō)明包含可配置以實(shí)施處理管線的通用圖形處理單元(GPGPU)的裝置的框圖。圖2是說(shuō)明包含經(jīng)配置以執(zhí)行并行處理的并行處理單元的常規(guī)GPGPU的框圖。圖3是說(shuō)明來(lái)自圖1的包含經(jīng)配置以實(shí)施處理管線的并行處理單元和本地存儲(chǔ)器緩沖器的GPGPU的一個(gè)實(shí)例的框圖。圖4是說(shuō)明包含連接到并行處理單元以在作為處理管線的級(jí)的并行處理單元之間傳送數(shù)據(jù)的本地存儲(chǔ)器緩沖器的GPGPU的實(shí)例操作的流程圖。圖5是說(shuō)明在由GPGPU的并行處理單元和本地存儲(chǔ)器緩沖器實(shí)施的處理管線內(nèi)保存數(shù)據(jù)序列的實(shí)例操作的流程圖。具體實(shí)施方式本發(fā)明描述用于以并行處理單元擴(kuò)展通用圖形處理單元(GPGPU)的架構(gòu)以允許基于管線的應(yīng)用程序的高效處理的技術(shù)。具體地說(shuō),所述技術(shù)包含配置連接到作為處理管線的級(jí)操作的并行處理單元的本地存儲(chǔ)器緩沖器,以保持?jǐn)?shù)據(jù)以供在并行處理單元之間傳送。本地存儲(chǔ)器緩沖器允許并行處理單元之間的芯片上、低電力、直接數(shù)據(jù)傳送。本地存儲(chǔ)器緩沖器可包含基于硬件的數(shù)據(jù)流控制機(jī)制,以實(shí)現(xiàn)并行處理單元之間的數(shù)據(jù)傳送。以此方式,可經(jīng)由本地存儲(chǔ)器緩沖器將數(shù)據(jù)從一個(gè)并行處理單元直接傳遞到處理管線中的下一并行處理單元,實(shí)際上將并行處理單元變換為一系列管線級(jí)。本地存儲(chǔ)器緩沖器可通過(guò)減少或消除對(duì)處理管線中的并行處理單元中的每一者調(diào)用系統(tǒng)存儲(chǔ)器來(lái)檢索且/或存儲(chǔ)數(shù)據(jù)的需要來(lái)顯著降低存儲(chǔ)器帶寬使用率。圖1是包含可配置以實(shí)施處理管線10的通用圖形處理單元(GPGPU)6的裝置2的框圖。如下文更詳細(xì)地描述,GPGPU6的處理管線10包含:兩個(gè)或兩個(gè)以上并行處理單元,其經(jīng)配置以作為處理管線10的級(jí)而操作;以及一個(gè)或一個(gè)以上本地存儲(chǔ)器緩沖器,其經(jīng)配置以保持?jǐn)?shù)據(jù)以供在并行處理單元之間傳送以實(shí)施處理管線10。裝置2能夠發(fā)射和接收數(shù)據(jù),支持多種數(shù)據(jù)處理應(yīng)用程序,且輸出經(jīng)處理的數(shù)據(jù)以向用戶呈現(xiàn)。裝置2的實(shí)例包含(但不限于)移動(dòng)無(wú)線電話、個(gè)人數(shù)字助理(PDA)、視頻游戲裝置、視頻游戲控制臺(tái)、視頻會(huì)議單元、膝上型計(jì)算機(jī)、桌上型計(jì)算機(jī)、平板計(jì)算機(jī)、電視機(jī)頂盒、數(shù)字記錄裝置、數(shù)字媒體播放器等。在圖1中所說(shuō)明的實(shí)例中,裝置2包含主機(jī)處理器4、具有處理管線10的GPGPU6、顯示器8、揚(yáng)聲器10、裝置存儲(chǔ)器12、收發(fā)器模塊14以及用戶輸入裝置16。在其它情況下,例如當(dāng)裝置2為桌上型計(jì)算機(jī)時(shí),顯示器8、揚(yáng)聲器10和/或用戶接口16可在裝置2外部。主機(jī)處理器4和GPGPU6可包括數(shù)字信號(hào)處理器(DSP)、通用微處理器、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA),或其它等效集成或離散邏輯電路。主機(jī)處理器4可執(zhí)行一個(gè)或一個(gè)以上應(yīng)用程序。應(yīng)用程序的實(shí)例包含網(wǎng)絡(luò)瀏覽器、電子郵件應(yīng)用程序、電子表格、視頻游戲、音頻和視頻編輯應(yīng)用程序,或產(chǎn)生視覺(jué)和/或音頻輸出以經(jīng)由顯示器8和/或揚(yáng)聲器10向用戶呈現(xiàn)的其它應(yīng)用程序。GPGPU6也可執(zhí)行一個(gè)或一個(gè)以上應(yīng)用程序。GPGPU6可執(zhí)行支持由主機(jī)處理器4執(zhí)行的應(yīng)用程序的應(yīng)用程序。具體地說(shuō),GPGPU6可執(zhí)行用以準(zhǔn)備數(shù)據(jù)以經(jīng)由顯示器8和/或揚(yáng)聲器10向用戶呈現(xiàn)的應(yīng)用程序。GPGPU6為將GPU的高電力并行處理擴(kuò)展為超越圖形處理的通用數(shù)據(jù)處理應(yīng)用程序的圖形處理單元(GPU)的一般化版本。作為一實(shí)例,GPGPU6可經(jīng)配置以根據(jù)OpenCL規(guī)范來(lái)處理數(shù)據(jù),OpenCL規(guī)范給予某些應(yīng)用程序?qū)PU的接入權(quán)以用于非圖形計(jì)算。下文相對(duì)于圖2更詳細(xì)描述的常規(guī)GPGPU包含布置在阻礙基于管線的應(yīng)用程序的高效實(shí)施的高度并行結(jié)構(gòu)中的可編程處理單元。此限制擴(kuò)展到在每一處理級(jí)處使用并行處理的2D和3D圖形處理應(yīng)用程序,但需要計(jì)算資源在各級(jí)之間的管線化?;诠芫€的應(yīng)用程序要求在級(jí)中處理數(shù)據(jù)集合,使得第一級(jí)經(jīng)配置以處理原始數(shù)據(jù)集合,第二級(jí)經(jīng)配置以處理第一級(jí)的輸出,第三級(jí)經(jīng)配置以處理第三級(jí)的輸出,且對(duì)應(yīng)用程序所需數(shù)目的級(jí)依此類推?;诠芫€的應(yīng)用程序的最高效實(shí)施方案是將數(shù)據(jù)集合直接從處理管線中的一個(gè)級(jí)傳遞到下一級(jí)?;诠芫€的應(yīng)用程序的較低效實(shí)施方案為處理管線中的每一級(jí)從芯片外存儲(chǔ)器檢索由前一級(jí)處理的數(shù)據(jù),且接著將經(jīng)處理的數(shù)據(jù)存儲(chǔ)回到芯片外存儲(chǔ)器以用于下一級(jí)。所述較低效實(shí)施方案仍需要序列化機(jī)制來(lái)確保數(shù)據(jù)集合以正確的序列由處理管線中的每一級(jí)處理。常規(guī)GPGPU無(wú)法經(jīng)配置以實(shí)施處理管線,或甚至對(duì)執(zhí)行基于管線的應(yīng)用程序來(lái)說(shuō)必要的序列化機(jī)制。根據(jù)本發(fā)明中的技術(shù)且與常規(guī)GPGPU不同,在一些實(shí)例中,GPGPU6可配置以實(shí)施處理管線10以執(zhí)行基于管線的應(yīng)用程序,包含2D和3D圖形處理應(yīng)用程序。如下文相對(duì)于圖3更詳細(xì)地描述,GPGPU6的處理管線10包含:兩個(gè)或兩個(gè)以上并行處理單元,其經(jīng)配置以作為處理管線10的級(jí)而操作;以及一個(gè)或一個(gè)以上本地存儲(chǔ)器緩沖器,其經(jīng)配置以保持?jǐn)?shù)據(jù)以供在并行處理單元之間傳送以實(shí)施處理管線10。包含在處理管線10中的本地存儲(chǔ)器緩沖器允許并行處理單元之間的芯片上、低電力、直接數(shù)據(jù)傳送。以此方式,可經(jīng)由本地存儲(chǔ)器緩沖器將數(shù)據(jù)從一個(gè)并行處理單元直接傳遞到處理管線10中的下一并行處理單元,實(shí)際上將并行處理單元變換為一系列管線級(jí)。處理管線10的實(shí)施可通過(guò)減少或消除對(duì)處理管線10中的并行處理單元中的每一者調(diào)用位于GPGPU6的芯片外的裝置存儲(chǔ)器12來(lái)檢索且/或存儲(chǔ)數(shù)據(jù)的需要來(lái)顯著降低存儲(chǔ)器帶寬使用率。本發(fā)明的技術(shù)可包含配置處理管線10內(nèi)的本地存儲(chǔ)器緩沖器中的每一者以具有緩沖器保持從前一并行處理單元輸出的數(shù)據(jù)所需的寬度。舉例來(lái)說(shuō),本地存儲(chǔ)器緩沖器可為可配置以用深度來(lái)?yè)Q取寬度的基于硬件的緩沖器。另外,所述技術(shù)包含執(zhí)行序列化壁壘來(lái)在處理管線10內(nèi)保存數(shù)據(jù)序列。舉例來(lái)說(shuō),可在數(shù)據(jù)集合進(jìn)入到處理管線10內(nèi)的并行處理單元后即刻記錄數(shù)據(jù)集合的數(shù)據(jù)線程序列,且在數(shù)據(jù)集合被處理之后,可在如所記錄的同一序列中將數(shù)據(jù)集合的數(shù)據(jù)線程從并行處理單元釋放。舉例來(lái)說(shuō),當(dāng)GPGPU6經(jīng)配置以實(shí)施處理管線10時(shí),GPGPU6可執(zhí)行基于管線的2D和3D圖形處理應(yīng)用程序,以支持網(wǎng)絡(luò)瀏覽器、電子郵件、視頻游戲以及由主機(jī)處理器4執(zhí)行的視頻編輯應(yīng)用程序。作為另一實(shí)例,當(dāng)GPGPU6不經(jīng)配置以實(shí)施處理管線10時(shí),GPGPU6可執(zhí)行在高度并行結(jié)構(gòu)中高效操作的應(yīng)用程序,例如基于圖像的搜索應(yīng)用程序、圖像描述符產(chǎn)生/提取、輻射測(cè)量圖像調(diào)整、音頻處理以及通常由主機(jī)處理器4執(zhí)行的其它操作。在一些情況下,GPGPU6可執(zhí)行支持基于管線的圖形處理應(yīng)用程序的應(yīng)用程序?;诠芫€的圖形處理應(yīng)用程序可由GPGPU6本身使用處理管線10或由包含于裝置2中的單獨(dú)GPU執(zhí)行。舉例來(lái)說(shuō),GPGPU6可執(zhí)行圖像特殊效果應(yīng)用程序、GPU管線的頂點(diǎn)產(chǎn)生,以及使用來(lái)自GPU管線的色彩緩沖器的圖形后處理應(yīng)用程序。顯示器8和揚(yáng)聲器10兩者均包括裝置2的輸出裝置。在一些情況下,顯示器8和揚(yáng)聲器10可一起用以向用戶呈現(xiàn)視覺(jué)和音頻輸出兩者。在其它情況下,顯示器8和揚(yáng)聲器10可單獨(dú)用以向用戶呈現(xiàn)輸出。作為一實(shí)例,顯示器8可包括液晶顯示器(LCD)、陰極射線管(CRT)顯示器、等離子體顯示器,或另一類型的顯示裝置。用戶輸入裝置16包括裝置2的一個(gè)或一個(gè)以上用戶輸入裝置。舉例來(lái)說(shuō),用戶輸入裝置16可包含跟蹤球、鼠標(biāo)、鍵盤、麥克風(fēng)和/或其它類型的輸入裝置。在一些實(shí)例中,用戶輸入裝置16可包括觸摸屏,且可并入作為顯示器8的一部分。用戶可經(jīng)由用戶輸入裝置16選擇待由主機(jī)處理器4和/或GPGPU6執(zhí)行的一個(gè)或一個(gè)以上應(yīng)用程序。主機(jī)處理器4可經(jīng)由收發(fā)器模塊14下載待由主機(jī)處理器4和/或GPGPU6處理的數(shù)據(jù)。主機(jī)處理器4還可經(jīng)由收發(fā)器模塊14下載由主機(jī)處理器4和/或GPGPU6執(zhí)行的一個(gè)或一個(gè)以上應(yīng)用程序。收發(fā)器模塊14可包含允許裝置2與另一裝置或網(wǎng)絡(luò)之間的無(wú)線或有線通信的電路。收發(fā)器模塊14可包含調(diào)制器、解調(diào)器、放大器和其它此類用于有線或無(wú)線通信的電路。裝置存儲(chǔ)器12可存儲(chǔ)待由主機(jī)處理器4和/或GPGPU6處理的數(shù)據(jù),且還可存儲(chǔ)從主機(jī)處理器4和/或GPGPU6接收的經(jīng)處理數(shù)據(jù)。另外,裝置存儲(chǔ)器12可存儲(chǔ)由主機(jī)處理器4和/或GPGPU6執(zhí)行的一個(gè)或一個(gè)以上應(yīng)用程序。裝置存儲(chǔ)器12可包括一個(gè)或一個(gè)以上計(jì)算機(jī)可讀存儲(chǔ)媒體。裝置存儲(chǔ)器12的實(shí)例包含(但不限于)隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、CD-ROM或其它光盤存儲(chǔ)裝置、磁盤存儲(chǔ)裝置或其它磁性存儲(chǔ)裝置、快閃存儲(chǔ)器,或任何其它可用于以指令或數(shù)據(jù)結(jié)構(gòu)的形式運(yùn)載或存儲(chǔ)所要程序代碼且可由計(jì)算機(jī)或處理器存取的媒體。圖2是說(shuō)明包含經(jīng)配置以執(zhí)行并行處理的并行處理單元22A到22D的常規(guī)GPGPU18的框圖。在一些實(shí)例中,GPGPU18可包含在大體上類似于上文參看圖1所述的裝置2的裝置內(nèi)。GPGPU18包含數(shù)據(jù)分布單元20、并行處理單元22A到22D(“并行處理單元22”),以及總線24,其用以將并行處理單元22連接到在GPGPU18外部的裝置存儲(chǔ)器26。常規(guī)GPGPU18是原始設(shè)計(jì)用來(lái)處理2D和3D圖形的GPU的一般化版本。GPGPU18能夠?qū)PU的高電力并行處理擴(kuò)展為超越圖形處理的通用處理應(yīng)用程序。作為一實(shí)例,GPGPU18可經(jīng)配置以根據(jù)OpenCL規(guī)范來(lái)處理數(shù)據(jù)。OpenCL規(guī)范給予某些應(yīng)用程序?qū)PU的接入權(quán)以用于非圖形計(jì)算。在OpenCL術(shù)語(yǔ)中,將數(shù)據(jù)線程稱為工作項(xiàng)目,將數(shù)據(jù)集合稱為工作群組,將處理單元稱為計(jì)算單元,且將處理單元的集合稱為計(jì)算群組。典型的GPU任務(wù)是高度并行的,且不需要正在給定處理單元內(nèi)處理的數(shù)據(jù)集合的數(shù)據(jù)線程之間的信息交換。舉例來(lái)說(shuō),針對(duì)頂點(diǎn)計(jì)算的值與針對(duì)不同頂點(diǎn)計(jì)算的值無(wú)關(guān),且針對(duì)像素計(jì)算的值與針對(duì)不同像素計(jì)算的值無(wú)關(guān)。為了模仿GPU的并行性質(zhì),將GPGPU18設(shè)計(jì)為包含布置在高度并行結(jié)構(gòu)中的并行處理單元22。GPGPU18的架構(gòu)高度并行,以致其不允許并行處理單元22之間的數(shù)據(jù)共享或同步。在操作中,數(shù)據(jù)分布單元20將存儲(chǔ)在裝置存儲(chǔ)器26中的數(shù)據(jù)集合指派給并行處理單元22中的每一者。在處理期間,所指派的數(shù)據(jù)集合的數(shù)據(jù)線程可在并行處理單元22中的每一者內(nèi)共享和同步。然而,不同數(shù)據(jù)集合的數(shù)據(jù)線程無(wú)法在并行處理單元22之間共享或同步。代替的是,并行處理單元22中的每一者僅經(jīng)由總線24與裝置存儲(chǔ)器26交換所指派的數(shù)據(jù)集合。更具體地說(shuō),并行處理單元22中的每一者經(jīng)由總線24從裝置存儲(chǔ)器26檢索供處理的所指派數(shù)據(jù)集合,且在處理所述數(shù)據(jù)集合之后,經(jīng)由總線24將經(jīng)處理的數(shù)據(jù)集合存儲(chǔ)回裝置存儲(chǔ)器26中。GPGPU18的并行架構(gòu)阻礙了基于管線的應(yīng)用程序在并行處理單元22之間的高效實(shí)施。在基于管線的應(yīng)用程序中,處理單元作為管線中的級(jí)而連接,以使數(shù)據(jù)能夠從一個(gè)級(jí)行進(jìn)到另一級(jí),以用于不同的處理任務(wù)。對(duì)GPGPU18中的基于管線的應(yīng)用程序的限制擴(kuò)展到2D和3D圖形處理應(yīng)用程序,其在每一處理級(jí)處使用并行處理,但需要各級(jí)之間的管線化。因此,GPGPU18的應(yīng)用限于內(nèi)在并行的那些應(yīng)用。并行處理單元22中的每一者可包括算術(shù)邏輯單元(ALU)或其它可配置邏輯元件的群集。因此,并行處理單元22可編程或可配置以依據(jù)GPGPU18所執(zhí)行的應(yīng)用程序來(lái)執(zhí)行不同操作。在GPGPU18的高度并行結(jié)構(gòu)中高效操作的應(yīng)用程序可包含基于圖像的搜索應(yīng)用程序、圖像描述符產(chǎn)生/提取、輻射測(cè)量圖像調(diào)整、音頻處理、通常由數(shù)字信號(hào)處理器(DSP)執(zhí)行的其它操作等。另外,由GPGPU18執(zhí)行的應(yīng)用程序可能需要與基于管線的圖形處理應(yīng)用程序(例如圖像特殊效果產(chǎn)生、GPU管線的頂點(diǎn)產(chǎn)生,以及使用來(lái)自GPU管線的色彩緩沖器的圖形后處理操作)交互。圖3是說(shuō)明來(lái)自圖1的示范性GPGPU6的框圖,GPGPU6包含經(jīng)配置以實(shí)施處理管線10的并行處理單元42A到42D和本地存儲(chǔ)器緩沖器44A到44C。在其它實(shí)例中,GPGPU6可包含較多或較少的并行處理單元和本地存儲(chǔ)器緩沖器。在圖3的實(shí)例中,GPGPU6包含數(shù)據(jù)分布單元40、并行處理單元42A到42D(“并行處理單元42”)以及總線46,總線46用以將并行處理單元42連接到在GPGPU6外部的裝置存儲(chǔ)器12(來(lái)自圖1)。不同于常規(guī)GPGPU,例如來(lái)自圖3的GPGPU18,GPGPU6還包含本地存儲(chǔ)器緩沖器44A到44C(“本地存儲(chǔ)器緩沖器44”),其連接在并行處理單元42之間。并行處理單元42與連接在并行處理單元42之間的本地存儲(chǔ)器緩沖器44的組合可稱為處理管線10。GPGPU6還包含控制單元30和本地存儲(chǔ)器38。本地存儲(chǔ)器38可包括類似于本地存儲(chǔ)器緩沖器44的緩沖器、寄存器或臨時(shí)存儲(chǔ)GPGPU6的數(shù)據(jù)的高速緩沖存儲(chǔ)器??刂茊卧?0包含應(yīng)用編程接口(API)32、緩沖器管理器34以及序列管理器36。本地存儲(chǔ)器緩沖器44可包含基于硬件的數(shù)據(jù)流控制機(jī)制以實(shí)現(xiàn)數(shù)據(jù)在并行處理單元42之間的傳送。舉例來(lái)說(shuō),本地存儲(chǔ)器緩沖器44可包括基于硬件的先入先出(FIFO)緩沖器或其它類型的基于硬件的緩沖器,例如后入先出(LIFO)緩沖器或經(jīng)編索引緩沖器。舉例來(lái)說(shuō),在其中本地存儲(chǔ)器緩沖器44A包括基于硬件的FIFO的情況下,本地存儲(chǔ)器緩沖器44A包含數(shù)據(jù)流控制機(jī)制,其在存在用以將數(shù)據(jù)寫入到緩沖器的空間時(shí),允許并行處理單元42A將數(shù)據(jù)發(fā)送到本地存儲(chǔ)器緩沖器44A,且否則停止寫入請(qǐng)求。在所述情況下,本地存儲(chǔ)器緩沖器44A還包含在存在可用于從緩沖器讀取的數(shù)據(jù)時(shí)允許并行處理單元42B從本地存儲(chǔ)器緩沖器44A接收數(shù)據(jù)且否則停止讀取請(qǐng)求的數(shù)據(jù)流控制機(jī)制。當(dāng)本地存儲(chǔ)器緩沖器44包含基于硬件的數(shù)據(jù)流控制機(jī)制時(shí),較低效的基于軟件的數(shù)據(jù)流控制對(duì)于實(shí)現(xiàn)數(shù)據(jù)在并行處理單元42之間的傳送來(lái)說(shuō)是不必要的。本地存儲(chǔ)器緩沖器44允許并行處理單元42之間的芯片上、低電力、直接數(shù)據(jù)傳送。本地存儲(chǔ)器緩沖器44為“本地”是因?yàn)槠湮挥贕PGPU6內(nèi),且與處理單元42在同一芯片上。以此方式,數(shù)據(jù)可經(jīng)由本地存儲(chǔ)器緩沖器44直接從處理管線10中的并行處理單元42中的一者傳遞到并行處理單元42中的另一者。不需要并行處理單元42重復(fù)地向在GPGPU6外部或位于GPGPU6的芯片外的裝置存儲(chǔ)器12檢索和存儲(chǔ)數(shù)據(jù)。因此,本地存儲(chǔ)器緩沖器44將并行處理單元42變換為一系列管線級(jí),且在GPGPU6內(nèi)實(shí)施處理管線10。在所說(shuō)明的實(shí)例中,本地存儲(chǔ)器緩沖器44中的每一者以連續(xù)次序直接連接在并行處理單元42中的兩者之間,使得處理管線10為純串行管線。本地存儲(chǔ)器緩沖器44“直接”連接,因?yàn)槠鋬H可由其連接到的兩個(gè)并行處理單元42存取,而不可由并行處理單元42中的任一者總線尋址。舉例來(lái)說(shuō),本地存儲(chǔ)器緩沖器44A直接連接在并行處理單元42A與42B之間,本地存儲(chǔ)器緩沖器44B直接連接在并行處理單元42B與42C之間,且本地存儲(chǔ)器緩沖器44C直接連接在并行處理單元42C與42D之間。在其它實(shí)例中,本地存儲(chǔ)器緩沖器44中的每一者還可直接連接到并行處理單元42中不是連續(xù)次序的一者或一者以上。在此情況下,本地存儲(chǔ)器緩沖器44中的每一者可經(jīng)由橫桿連接直接連接到并行處理單元42中的任一者。舉例來(lái)說(shuō),本地存儲(chǔ)器緩沖器44A可經(jīng)由橫桿連接直接連接到并行處理單元42中的每一者,使得并行處理單元42A可經(jīng)由本地存儲(chǔ)器緩沖器44A將數(shù)據(jù)傳送到并行處理單元42B到42D中的任一者。橫桿連接的使用使本地存儲(chǔ)器緩沖器44可更廣泛地由并行處理單元42存取,且實(shí)現(xiàn)不是純串行的處理管線的實(shí)施。在所說(shuō)明的其中處理管線10包括純串行管線的實(shí)例中,并行處理單元42可僅被準(zhǔn)許將數(shù)據(jù)寫入到本地存儲(chǔ)器緩沖器44中的后一者,且可僅被準(zhǔn)許從本地存儲(chǔ)器緩沖器44中的前一者讀取數(shù)據(jù)。舉例來(lái)說(shuō),并行處理單元42B可僅能夠從本地存儲(chǔ)器緩沖器44A讀取數(shù)據(jù),且僅能夠?qū)?shù)據(jù)寫入到本地存儲(chǔ)器緩沖器44B。在其中處理管線可包含橫桿連接的情況下,并行處理單元42可被準(zhǔn)許從本地存儲(chǔ)器緩沖器44中的任一者讀取數(shù)據(jù)且將數(shù)據(jù)寫入到本地存儲(chǔ)器緩沖器44中的任一者。舉例來(lái)說(shuō),并行處理單元42B可能夠從本地存儲(chǔ)器緩沖器44A且從本地存儲(chǔ)器緩沖器44B讀取數(shù)據(jù),且將數(shù)據(jù)寫入到本地存儲(chǔ)器緩沖器44A和本地存儲(chǔ)器緩沖器44B。如上文所述,本地存儲(chǔ)器緩沖器44可包括FIFO緩沖器、LIFO緩沖器或經(jīng)編索引緩沖器中的至少一者。用于本地存儲(chǔ)器緩沖器44的緩沖器的類型可取決于處理管線10中所需的基于硬件的數(shù)據(jù)流控制機(jī)制的類型。用于本地存儲(chǔ)器緩沖器44的緩沖器的類型還可取決于本地存儲(chǔ)器緩沖器44是否經(jīng)由一對(duì)一連接或橫桿連接連接到并行處理單元42。另外,當(dāng)使用橫桿連接時(shí),控制單元30的緩沖器管理器34可能需要執(zhí)行某種存儲(chǔ)器控制,以管理在給定時(shí)間哪一并行處理單元42正存取哪一本地存儲(chǔ)器緩沖器44。如上文所述,本地存儲(chǔ)器緩沖器44可經(jīng)由一對(duì)一或橫桿連接直接連接在并行處理單元42中的至少兩者之間。然而,本地存儲(chǔ)器緩沖器44可能不可由并行處理單元42總線尋址。以此方式,為本地存儲(chǔ)器緩沖器44指定的存儲(chǔ)器控制器可能是不必要的。具體地說(shuō),存儲(chǔ)器控制器不必要處理經(jīng)由總線的對(duì)本地存儲(chǔ)器緩沖器44的讀取和寫入命令。本地存儲(chǔ)器緩沖器44可通過(guò)減少或消除并行處理單元42中的每一者經(jīng)由總線46調(diào)用裝置存儲(chǔ)器12來(lái)檢索且/或存儲(chǔ)數(shù)據(jù)的需要來(lái)顯著降低存儲(chǔ)器帶寬使用率。在操作中,并行處理單元42A,作為處理管線10的第一處理單元,經(jīng)由總線46從裝置存儲(chǔ)器12檢索原始數(shù)據(jù)集合。所述數(shù)據(jù)集合可由數(shù)據(jù)分布單元40指派給并行處理單元42A。另外,并行處理單元42D,作為處理管線10的最后處理單元,經(jīng)由總線46將后管線數(shù)據(jù)集合存儲(chǔ)在裝置存儲(chǔ)器12中。并行處理單元42B和42C,作為處理管線10的中間處理單元,經(jīng)由本地存儲(chǔ)器緩沖器44中的一者從并行處理單元42中的前一者接收數(shù)據(jù)集合,并經(jīng)由本地存儲(chǔ)器緩沖器44中的一者將數(shù)據(jù)集合發(fā)送到并行處理單元42中的后一者。因此,不需要中間處理單元與裝置存儲(chǔ)器12交互來(lái)檢索且/或存儲(chǔ)數(shù)據(jù)。在一些情況下,中間處理單元可從裝置存儲(chǔ)器檢索補(bǔ)充數(shù)據(jù),以便執(zhí)行處理管線10的特定級(jí)。然而,用于處理的主數(shù)據(jù)集合經(jīng)由本地存儲(chǔ)器緩沖器44直接沿處理管線10傳遞。如上文所述,GPGPU6為將GPU的高電力并行處理擴(kuò)展為超越圖形處理的通用數(shù)據(jù)處理應(yīng)用程序的GPU的一般化版本。作為一實(shí)例,GPGPU6可經(jīng)配置以根據(jù)OpenCL規(guī)范來(lái)處理數(shù)據(jù),OpenCL規(guī)范給予某些應(yīng)用程序?qū)D形處理單元的接入權(quán)以用于非圖形計(jì)算。在OpenCL術(shù)語(yǔ)中,將數(shù)據(jù)線程稱為工作項(xiàng)目,將數(shù)據(jù)集合稱為工作群組,將處理單元稱為計(jì)算單元,且將處理單元的集合稱為計(jì)算群組。根據(jù)本發(fā)明中的技術(shù),GPGPU6可配置以實(shí)施處理管線10以執(zhí)行基于管線的應(yīng)用程序,包含2D和3D圖形處理應(yīng)用程序。更具體地說(shuō),GPGPU6的控制單元30配置并行處理單元42以作為處理管線的級(jí)來(lái)操作。控制單元30還配置連接在并行處理單元42之間的本地存儲(chǔ)器緩沖器44,以保持?jǐn)?shù)據(jù)以供在并行處理單元42之間傳送。并行處理單元42可為可編程或可配置的以依據(jù)由GPGPU6執(zhí)行的應(yīng)用程序執(zhí)行不同操作??刂茊卧?0可配置并行處理單元42中的每一者以根據(jù)所述應(yīng)用程序來(lái)操作。舉例來(lái)說(shuō),并行處理單元22中的每一者可包括算術(shù)邏輯單元(ALU)或其它可配置邏輯元件的群集。本地存儲(chǔ)器緩沖器44也可為可編程或可配置的,以依據(jù)由GPGPU6執(zhí)行的應(yīng)用程序而保持從并行處理單元42輸出的不同類型的數(shù)據(jù)。舉例來(lái)說(shuō),本地存儲(chǔ)器緩沖器44可包括基于硬件的緩沖器,但包含一組可配置方面。所述可配置方面中的一者可為本地存儲(chǔ)器緩沖器44的寬度,以便適應(yīng)從并行處理單元42輸出的不同類型的數(shù)據(jù)。舉例來(lái)說(shuō),本地存儲(chǔ)器緩沖器44可為可配置以用深度來(lái)?yè)Q取寬度??刂茊卧?0的緩沖器管理器34可確定本地存儲(chǔ)器緩沖器44中的每一者保持從并行處理單元42中的前一者輸出的數(shù)據(jù)所需的寬度。緩沖器管理器34可知曉從并行處理單元42中的每一者輸出的數(shù)據(jù)的類型,且因此知曉本地存儲(chǔ)器緩沖器44中的每一者保持所述數(shù)據(jù)所需的寬度。緩沖器管理器34可接著配置本地存儲(chǔ)器緩沖器44中的每一者以具有所確定的寬度。一旦并行處理單元42和本地存儲(chǔ)器緩沖器44經(jīng)配置以在GPGPU6內(nèi)實(shí)施處理管線10,并行處理單元42就可經(jīng)由本地存儲(chǔ)器緩沖器44傳送數(shù)據(jù)。控制單元30可配置并行處理單元42中的一者或一者以上,以將數(shù)據(jù)發(fā)送到本地存儲(chǔ)器緩沖器44,且配置并行處理單元44中的一者或一者以上以從本地存儲(chǔ)器緩沖器44接收數(shù)據(jù)。舉例來(lái)說(shuō),控制單元30可配置并行處理單元42A、42B和42C,以分別將數(shù)據(jù)發(fā)送到本地存儲(chǔ)器緩沖器44A、44B和44C。控制單元30還可配置并行處理單元42B、42C和42D,以分別從本地存儲(chǔ)器緩沖器44A、44B和44C接收數(shù)據(jù)??赏ㄟ^(guò)引入新的API32,使用GPGPU標(biāo)準(zhǔn)(例如OpenCL標(biāo)準(zhǔn))來(lái)暴露具有基于硬件的流控制機(jī)制的本地存儲(chǔ)器緩沖器44。舉例來(lái)說(shuō),控制單元30可執(zhí)行API32中的一者或一者以上,以確定本地存儲(chǔ)器緩沖器44中的每一者所需的寬度,以所確定的寬度配置本地存儲(chǔ)器緩沖器44中的每一者,且確定本地存儲(chǔ)器緩沖器44中的每一者的深度。另外,控制單元30可執(zhí)行API32中的一者或一者以上以配置并行處理單元42,將數(shù)據(jù)發(fā)送到本地存儲(chǔ)器緩沖器44,且從本地存儲(chǔ)器緩沖器44接收數(shù)據(jù)。包含于本地存儲(chǔ)器緩沖器44中的基于硬件的數(shù)據(jù)流控制機(jī)制允許并行處理單元42將數(shù)據(jù)發(fā)送到本地存儲(chǔ)器緩沖器44且從本地存儲(chǔ)器緩沖器44接收數(shù)據(jù),而無(wú)任何額外的基于軟件的數(shù)據(jù)流控制。另外,GPGPU6的控制單元30可通過(guò)在并行處理單元42中的一者或一者以上內(nèi)保存數(shù)據(jù)序列來(lái)在處理管線10內(nèi)保存數(shù)據(jù)序列。由GPGPU6執(zhí)行的基于管線的應(yīng)用程序(具體地說(shuō),3D圖形應(yīng)用程序)可能需要在處理管線10內(nèi)以某一序列處理數(shù)據(jù)。當(dāng)在處理管線的每一級(jí)處處理數(shù)據(jù)時(shí),數(shù)據(jù)可歸因于執(zhí)行問(wèn)題(例如條件、高速緩沖存儲(chǔ)器命中或未中等)而改變序列??刂茊卧?0的序列管理器36可執(zhí)行序列化壁壘,以在并行處理單元42中的至少一些內(nèi)保存數(shù)據(jù)序列。所述序列化壁壘可減慢處理管線10內(nèi)的處理速度,因此序列管理器36可僅在需要為準(zhǔn)確處理保存數(shù)據(jù)序列的那些并行處理單元42處執(zhí)行序列化壁壘。由序列管理器36執(zhí)行的序列化壁壘可包含序列確定計(jì)數(shù)器(SDC)和序列強(qiáng)制執(zhí)行壁壘(SEB)。舉例來(lái)說(shuō),可使用GPGPU標(biāo)準(zhǔn)(例如OpenCL標(biāo)準(zhǔn)),通過(guò)將新的函數(shù)調(diào)用添加到用于SDC和SEB的OpenCLC語(yǔ)言來(lái)暴露序列化壁壘。序列管理器36可在數(shù)據(jù)集合進(jìn)入到并行處理單元42中的任一者后即刻執(zhí)行SDC。序列管理器36接著通過(guò)記錄本地存儲(chǔ)器38內(nèi)接收到的數(shù)據(jù)集合的數(shù)據(jù)線程序列來(lái)執(zhí)行SDC操作。舉例來(lái)說(shuō),序列管理器36可以從裝置存儲(chǔ)器12接收數(shù)據(jù)線程的次序來(lái)記錄數(shù)據(jù)集合的每一數(shù)據(jù)線程的索引。序列管理器36可在數(shù)據(jù)集合從并行處理單元42中的所述一者退出后即刻執(zhí)行SEB。序列管理器36接著通過(guò)以如SDC所記錄的同一序列將數(shù)據(jù)集合的數(shù)據(jù)線程從并行處理單元42中的所述一者釋放來(lái)執(zhí)行SEB操作。舉例來(lái)說(shuō),序列管理器36可存取記錄在本地存儲(chǔ)器38中的數(shù)據(jù)線程索引,且根據(jù)其索引曾被記錄的次序來(lái)釋放每一數(shù)據(jù)線程。以此方式,數(shù)據(jù)集合的數(shù)據(jù)線程將以與數(shù)據(jù)集合的所述數(shù)據(jù)線程進(jìn)入并行處理單元42中的當(dāng)前一者相同的次序進(jìn)入并行處理單元42中的后一者。在一個(gè)實(shí)例中,控制單元30可配置GPGPU6以執(zhí)行基于管線的3D圖形處理應(yīng)用程序。在所述情況下,控制單元30可配置并行處理單元42以作為3D圖形處理管線的級(jí)來(lái)操作。舉例來(lái)說(shuō),控制單元30可配置并行處理單元42A以作為頂點(diǎn)著色器來(lái)操作,配置并行處理單元42B以作為三角形光柵化器來(lái)操作,配置并行處理單元42C以作為片段著色器來(lái)操作,且配置并行處理單元42D以作為像素混合器來(lái)操作??刂茊卧?0還可用基于硬件的數(shù)據(jù)流控制機(jī)制來(lái)配置本地存儲(chǔ)器緩沖器44,以保持?jǐn)?shù)據(jù)以供在并行處理單元42之間傳送,以實(shí)施3D圖形處理管線10。舉例來(lái)說(shuō),控制單元30可配置本地存儲(chǔ)器緩沖器44A以保持后頂點(diǎn)著色器頂點(diǎn)數(shù)據(jù)以供在作為頂點(diǎn)著色器而操作的并行處理單元42A與作為三角形光柵化器而操作的并行處理單元42B之間傳送??刂茊卧?0可配置本地存儲(chǔ)器緩沖器44B以保持預(yù)片段著色器像素?cái)?shù)據(jù)以供在作為三角形光柵化器而操作的并行處理單元42B與作為片段著色器而操作的并行處理單元42C之間傳送。最后,控制單元30可配置本地存儲(chǔ)器緩沖器44C以保持后片段著色器像素值,以供在作為片段著色器而操作的并行處理單元42C與作為像素混合器而操作的并行處理單元42D之間傳送。在執(zhí)行3D圖形處理應(yīng)用程序后,數(shù)據(jù)分布單元40可即刻將原始頂點(diǎn)數(shù)據(jù)指派給作為頂點(diǎn)著色器而操作的并行處理單元42A。并行處理單元42A經(jīng)由總線46從裝置存儲(chǔ)器12檢索所指派的原始頂點(diǎn)數(shù)據(jù)集合。在所述數(shù)據(jù)集合進(jìn)入后,序列管理器36即刻執(zhí)行SDC以記錄頂點(diǎn)數(shù)據(jù)的序列。并行處理單元42A接著執(zhí)行頂點(diǎn)著色操作,且將后頂點(diǎn)著色器頂點(diǎn)數(shù)據(jù)發(fā)送到本地存儲(chǔ)器緩沖器44A。在數(shù)據(jù)集合從并行處理單元42A退出后,序列管理器36即刻執(zhí)行SEB以與由SDC所記錄的相同的序列釋放頂點(diǎn)數(shù)據(jù)。以此方式,頂點(diǎn)數(shù)據(jù)將以與頂點(diǎn)數(shù)據(jù)進(jìn)入作為頂點(diǎn)著色器而操作的并行處理單元42A相同的次序到達(dá)作為三角形光柵化器而操作的并行處理單元42B。作為三角形光柵化器而操作的并行處理單元42B從本地存儲(chǔ)器緩沖器44A接收后頂點(diǎn)著色器頂點(diǎn)數(shù)據(jù)。在一些情況下,并行處理單元42B還可經(jīng)由總線46從裝置存儲(chǔ)器12檢索補(bǔ)充數(shù)據(jù),以便執(zhí)行三角形光柵化操作。并行處理單元42B接著執(zhí)行三角形光柵化操作,且將預(yù)片段著色器像素?cái)?shù)據(jù)發(fā)送到本地存儲(chǔ)器緩沖器44B。在一些實(shí)例中,序列管理器36可在頂點(diǎn)數(shù)據(jù)進(jìn)入到并行處理單元42B后即刻執(zhí)行SDC,且在像素?cái)?shù)據(jù)從并行處理單元42B退出后即刻執(zhí)行SEB以保存數(shù)據(jù)序列。在其它實(shí)例中,序列化壁壘可為不必要的,且因此不對(duì)并行處理單元42B執(zhí)行。操作片段著色器的并行處理單元42C從本地存儲(chǔ)器緩沖器44B接收預(yù)片段著色器像素?cái)?shù)據(jù)。在數(shù)據(jù)集合進(jìn)入后,序列管理器36即刻執(zhí)行SDC以記錄像素?cái)?shù)據(jù)的序列。在一些情況下,并行處理單元42C還可經(jīng)由總線46從裝置存儲(chǔ)器12檢索補(bǔ)充數(shù)據(jù),以便執(zhí)行片段著色器操作。并行處理單元42C接著執(zhí)行片段著色操作,且將后片段著色器像素值發(fā)送到本地存儲(chǔ)器緩沖器44C。在數(shù)據(jù)集合從并行處理單元42C退出后,序列管理器36即刻執(zhí)行SEB以與由SDC所記錄的相同的序列釋放像素?cái)?shù)據(jù)。以此方式,像素?cái)?shù)據(jù)將以與像素?cái)?shù)據(jù)進(jìn)入作為片段著色器而操作的并行處理單元42C相同的次序到達(dá)作為像素混合器而操作的并行處理單元42D。作為像素混合器而操作的并行處理單元42D從本地存儲(chǔ)器緩沖器44C接收后片段著色器像素值。并行處理單元42D接著執(zhí)行像素混合操作,且經(jīng)由總線46將后管線數(shù)據(jù)集合存儲(chǔ)在裝置存儲(chǔ)器12中。在一些實(shí)例中,序列管理器36可在像素?cái)?shù)據(jù)進(jìn)入到并行處理單元42D后即刻執(zhí)行SDC,且在圖像數(shù)據(jù)從并行處理單元42D退出后即刻執(zhí)行SEB以保存數(shù)據(jù)序列。在其它實(shí)例中,序列化壁壘可為不必要的,且因此不對(duì)并行處理單元42D執(zhí)行。3D圖形處理應(yīng)用程序的上述實(shí)例僅為示范性的,且所揭示的技術(shù)可用以執(zhí)行GPGPU6中的多種基于管線的應(yīng)用程序。圖4是說(shuō)明包含本地存儲(chǔ)器緩沖器44的GPGPU6的實(shí)例操作的流程圖,本地存儲(chǔ)器緩沖器44連接到并行處理單元42以在作為處理管線10的級(jí)的并行處理單元之間傳送數(shù)據(jù)。參考來(lái)自圖3的GPGPU6來(lái)描述所說(shuō)明的操作。GPGPU6的控制單元30配置并行處理單元42以作為處理管線10的級(jí)來(lái)操作(50)。舉例來(lái)說(shuō),控制單元30可配置并行處理單元42以作為3D圖形處理管線的級(jí)來(lái)操作。在所述實(shí)例中,控制單元30可配置并行處理單元42A以作為頂點(diǎn)著色器來(lái)操作,配置并行處理單元42B以作為三角形光柵化器來(lái)操作,配置并行處理單元42C以作為片段著色器來(lái)操作,且配置并行處理單元42D以作為像素混合器來(lái)操作。控制單元30還配置本地存儲(chǔ)器緩沖器44以保持?jǐn)?shù)據(jù)以供在并行處理單元42之間傳送,實(shí)際上將并行處理單元42變換為處理管線10(52)。本地存儲(chǔ)器緩沖器44可包含基于硬件的數(shù)據(jù)流控制機(jī)制以實(shí)現(xiàn)數(shù)據(jù)在并行處理單元42之間的傳送。舉例來(lái)說(shuō),本地存儲(chǔ)器緩沖器44可包括基于硬件的FIFO、LIFO或經(jīng)編索引的緩沖器。本地存儲(chǔ)器緩沖器44可直接連接在并行處理單元42中的至少兩者之間。舉例來(lái)說(shuō),在3D圖形處理管線的情況下,本地存儲(chǔ)器緩沖器44A可直接連接在作為頂點(diǎn)著色器而操作的并行處理單元42A與作為三角形光柵化器而操作的并行處理單元42B之間,且經(jīng)配置以保持后頂點(diǎn)著色器頂點(diǎn)數(shù)據(jù)。本地存儲(chǔ)器緩沖器44B可直接連接在作為三角形光柵化器而操作的并行處理單元32B與作為片段著色器而操作的并行處理單元42C之間,且經(jīng)配置以保持預(yù)片段著色器像素?cái)?shù)據(jù)。最后,本地存儲(chǔ)器緩沖器44C可直接連接在作為片段著色器而操作的并行處理單元42C與作為像素混合器而操作的并行處理單元42D之間,且經(jīng)配置以保持后片段著色器像素值。另外,控制單元30的緩沖器管理器34可確定本地存儲(chǔ)器緩沖器44中的每一者保持從并行處理單元42中的前一者輸出的數(shù)據(jù)所需的寬度(54)。緩沖器管理器34可知曉從并行處理單元42中的每一者輸出的數(shù)據(jù)的類型,且因此,知曉本地存儲(chǔ)器緩沖器44中的每一者保持所述數(shù)據(jù)所需的寬度。緩沖器管理器34可接著配置本地存儲(chǔ)器緩沖器44中的每一者以具有所確定的寬度(56)。在一些情況下,本地存儲(chǔ)器緩沖器44可為基于硬件的,但包含一組可配置方面。舉例來(lái)說(shuō),本地存儲(chǔ)器緩沖器44可為可配置以用深度來(lái)?yè)Q取寬度。舉例來(lái)說(shuō),緩沖器管理器34可知曉作為頂點(diǎn)著色器而操作的并行處理單元42A輸出后頂點(diǎn)著色器頂點(diǎn)數(shù)據(jù),且配置本地存儲(chǔ)器緩沖器44A以具有保持后頂點(diǎn)著色器頂點(diǎn)數(shù)據(jù)所需的寬度。緩沖器管理器34還可知曉作為三角形光柵化器而操作的并行處理單元42B輸出預(yù)片段著色器像素?cái)?shù)據(jù),且配置本地存儲(chǔ)器緩沖器44B以具有保持預(yù)片段著色器像素?cái)?shù)據(jù)所需的寬度。此外,緩沖器管理器34可知曉作為片段著色器而操作的并行處理單元42C輸出后片段著色器像素值,且配置本地存儲(chǔ)器緩沖器44C以具有保持后片段著色器像素值所需的寬度。一旦并行處理單元42和本地存儲(chǔ)器緩沖器44經(jīng)配置以在GPGPU6內(nèi)實(shí)施處理管線10,并行處理單元42就可經(jīng)由本地存儲(chǔ)器緩沖器44在彼此之間傳送數(shù)據(jù)(58)。更具體地說(shuō),控制單元30可配置并行處理單元42中的一者或一者以上以將數(shù)據(jù)發(fā)送到本地存儲(chǔ)器緩沖器44,且配置并行處理單元44中的一者或一者以上以從本地存儲(chǔ)器緩沖器44接收數(shù)據(jù)。舉例來(lái)說(shuō),控制單元30可配置并行處理單元42A、42B和42C,以分別將數(shù)據(jù)發(fā)送到本地存儲(chǔ)器緩沖器44A、44B和44C??刂茊卧?0還可配置并行處理單元42B、42C和42D,以分別從本地存儲(chǔ)器緩沖器44A、44B和44C接收數(shù)據(jù)。圖5是說(shuō)明在由GPGPU6的并行處理單元42和本地存儲(chǔ)器緩沖器44實(shí)施的處理管線內(nèi)保存數(shù)據(jù)序列的實(shí)例操作的流程圖。GPGPU6的控制單元30可通過(guò)在并行處理單元42中的一者或一者以上內(nèi)保存數(shù)據(jù)序列來(lái)在處理管線內(nèi)保存數(shù)據(jù)序列。參考來(lái)自圖3的GPGPU6的并行處理單元42A來(lái)描述所說(shuō)明的操作??蓪?duì)其它并行處理單元42中的任一者執(zhí)行類似操作。作為一實(shí)例,并行處理單元42和本地存儲(chǔ)器緩沖器44可經(jīng)配置以實(shí)施3D圖形處理管線。在所述實(shí)例中,并行處理單元42A可經(jīng)配置以作為頂點(diǎn)著色器來(lái)操作,并行處理單元42B可經(jīng)配置以作為三角形光柵化器來(lái)操作,并行處理單元42C可經(jīng)配置以作為片段著色器來(lái)操作,且并行處理單元42D可經(jīng)配置以作為像素混合器來(lái)操作。經(jīng)配置以作為處理管線10的級(jí)(例如,頂點(diǎn)著色器)來(lái)操作的并行處理單元42A接收數(shù)據(jù)集合以供處理(62)。舉例來(lái)說(shuō),數(shù)據(jù)分布單元40可將頂點(diǎn)數(shù)據(jù)的數(shù)據(jù)集合指派給并行處理單元42A,且并行處理單元42A可經(jīng)由總線46從裝置存儲(chǔ)器12接收所指派的數(shù)據(jù)集合。在數(shù)據(jù)集合進(jìn)入到并行處理單元42A后,控制單元30的序列管理器36執(zhí)行序列確定計(jì)數(shù)器(SDC)(64)。根據(jù)SDC,序列管理器36將所接收到的數(shù)據(jù)集合的數(shù)據(jù)線程序列記錄在本地存儲(chǔ)器38內(nèi)(66)。舉例來(lái)說(shuō),序列管理器36可以從裝置存儲(chǔ)器12接收數(shù)據(jù)線程的次序記錄數(shù)據(jù)集合的每一數(shù)據(jù)線程的索引。經(jīng)配置以作為頂點(diǎn)著色器而操作的并行處理單元42A接著處理所述數(shù)據(jù)集合以產(chǎn)生后頂點(diǎn)著色器頂點(diǎn)數(shù)據(jù)(68)。如上文所述,并行處理單元42A可經(jīng)配置以將后頂點(diǎn)著色器頂點(diǎn)數(shù)據(jù)發(fā)送到本地存儲(chǔ)器緩沖器44A,以便將所述數(shù)據(jù)集合傳送到經(jīng)配置以作為三角形光柵化器而操作的并行處理單元42B。在數(shù)據(jù)集合從并行處理單元42A退出后,序列管理器36執(zhí)行序列強(qiáng)制執(zhí)行壁壘(SEB)(70)。根據(jù)SEB,序列管理器36以與由SDC記錄相同的序列將數(shù)據(jù)集合的數(shù)據(jù)線程從并行處理單元42A釋放(72)。舉例來(lái)說(shuō),序列管理器36可存取記錄在本地存儲(chǔ)器38中的數(shù)據(jù)線程索引,且根據(jù)其索引曾被記錄的次序來(lái)釋放每一數(shù)據(jù)線程。以此方式,頂點(diǎn)將以與頂點(diǎn)進(jìn)入經(jīng)配置以作為頂點(diǎn)著色器而操作的并行處理單元42A相同的次序進(jìn)入經(jīng)配置以作為三角形光柵化器而操作的并行處理單元42B。在一個(gè)或一個(gè)以上實(shí)例中,所描述的功能可以硬件、軟件、固件或其任何組合來(lái)實(shí)施。如果以軟件來(lái)實(shí)施,那么功能或操作可作為一個(gè)或一個(gè)以上指令或代碼存儲(chǔ)在非暫時(shí)性計(jì)算機(jī)可讀媒體上,且由基于硬件的處理單元執(zhí)行。計(jì)算機(jī)可讀媒體可包含計(jì)算機(jī)可讀存儲(chǔ)媒體,其對(duì)應(yīng)于例如數(shù)據(jù)存儲(chǔ)媒體等有形媒體,或包含例如根據(jù)通信協(xié)議促進(jìn)計(jì)算機(jī)程序從一處傳送到另一處的任何媒體的通信媒體。以此方式,計(jì)算機(jī)可讀媒體通??蓪?duì)應(yīng)于(1)有形計(jì)算機(jī)可讀存儲(chǔ)媒體,其為非暫時(shí)性的,或(2)通信媒體,例如信號(hào)或載波。數(shù)據(jù)存儲(chǔ)媒體可為可由一個(gè)或一個(gè)以上計(jì)算機(jī)或一個(gè)或一個(gè)以上處理器存取以檢索指令、代碼和/或數(shù)據(jù)結(jié)構(gòu)以實(shí)施本揭示中所述的技術(shù)的任何可用媒體。計(jì)算機(jī)程序產(chǎn)品可包含計(jì)算機(jī)可讀媒體。作為實(shí)例(而非限制),所述計(jì)算機(jī)可讀媒體可包含非暫時(shí)性媒體,例如RAM、ROM、EEPROM、CD-ROM或其它光盤存儲(chǔ)裝置、磁盤存儲(chǔ)裝置或其它磁性存儲(chǔ)裝置、快閃存儲(chǔ)器,或可用于運(yùn)載或存儲(chǔ)呈指令或數(shù)據(jù)結(jié)構(gòu)的形式的所要程序碼且可由計(jì)算機(jī)存取的任何其它媒體。并且,任何連接均可恰當(dāng)?shù)胤Q為計(jì)算機(jī)可讀媒體。舉例來(lái)說(shuō),如果使用同軸電纜、光纖纜線、雙絞線、數(shù)字訂戶線(DSL)或例如紅外線、無(wú)線電及微波等無(wú)線技術(shù)從網(wǎng)站、服務(wù)器或其它遠(yuǎn)程源傳輸指令,那么將同軸電纜、光纖纜線、雙絞線、DSL或例如紅外線、無(wú)線電及微波等無(wú)線技術(shù)包含于媒體的定義中。然而,應(yīng)理解,計(jì)算機(jī)可讀存儲(chǔ)媒體和數(shù)據(jù)存儲(chǔ)媒體不包含連接、載波、信號(hào)或其它瞬態(tài)媒體,而是針對(duì)非瞬態(tài)有形存儲(chǔ)媒體。如本文中所使用,磁盤及光盤包括壓縮光盤(CD)、激光光盤、光學(xué)光盤、數(shù)字多功能光盤(DVD)、軟磁盤及藍(lán)光光盤,其中磁盤通常以磁性方式再現(xiàn)數(shù)據(jù),而光盤使用激光以光學(xué)方式再現(xiàn)數(shù)據(jù)。上文的組合也應(yīng)包含在計(jì)算機(jī)可讀媒體的范圍內(nèi)。指令可由一個(gè)或一個(gè)以上處理器執(zhí)行,例如一個(gè)或一個(gè)以上DSP、通用微處理器、ASIC、FPGA,或其它等效集成或離散邏輯電路。因此,如本文中所使用的術(shù)語(yǔ)“處理器”可指上述結(jié)構(gòu)或適合于實(shí)施本文中所描述的技術(shù)的任一其它結(jié)構(gòu)中的任一者。另外,在一些方面中,本文所述的功能性可提供于經(jīng)配置以用于編碼及解碼的專用硬件及/或軟件模塊內(nèi),或并入在組合式編解碼器中。并且,可將所述技術(shù)完全實(shí)施于一個(gè)或一個(gè)以上電路或邏輯元件中。本發(fā)明的技術(shù)可在各種各樣的裝置或設(shè)備中實(shí)施,包含無(wú)線手持機(jī)、集成電路(IC)或一組IC(例如,芯片組)。本揭示中描述各種組件、模塊或單元,以強(qiáng)調(diào)經(jīng)配置以執(zhí)行所揭示技術(shù)的裝置的功能方面,但不一定要求由不同硬件單元來(lái)實(shí)現(xiàn)。相反,如上文所述,各種單元可組合在編解碼器硬件單元中,或由互操作硬件單元的集合提供,包含如上文所述的一個(gè)或一個(gè)以上處理器,結(jié)合合適的軟件和/或固件。已描述了各種實(shí)例。這些和其它實(shí)例在所附權(quán)利要求書的范圍內(nèi)。