異構(gòu)型處理設(shè)備上的動(dòng)態(tài)工作劃分的制作方法
【專利摘要】一種用于平衡異構(gòu)型處理設(shè)備上的工作負(fù)荷的方法、系統(tǒng)以及制品。所述方法包括:由與不同類型的處理器相關(guān)的離隊(duì)實(shí)體存取一種類型的處理器的存儲器;從在所述存儲器內(nèi)的多個(gè)任務(wù)中識別可以由所述不同類型的所述處理器處理的任務(wù);對能夠存取所述存儲器的多個(gè)離隊(duì)實(shí)體進(jìn)行同步;以及使所述任務(wù)從所述存儲存儲器中離隊(duì)。
【專利說明】異構(gòu)型處理設(shè)備上的動(dòng)態(tài)工作劃分
【技術(shù)領(lǐng)域】
[0001]本發(fā)明大體上是針對計(jì)算機(jī)系統(tǒng)。更具體來說,本發(fā)明是針對一種用于統(tǒng)一計(jì)算機(jī)系統(tǒng)內(nèi)部的計(jì)算部件的體系結(jié)構(gòu)。
【背景技術(shù)】
[0002]對使用圖形處理單元(GPU)來進(jìn)行一般計(jì)算的渴望在最近由于GPU的示例性每單位功率性能和/或成本而變得更加顯著。一般來說,GPU的計(jì)算能力已以超過對應(yīng)中央處理器(CPU)平臺的計(jì)算能力的速率增長。隨著移動(dòng)計(jì)算市場(例如,筆記本計(jì)算機(jī)、移動(dòng)智能電話、平板計(jì)算機(jī)等)和其所必需的支持服務(wù)器/企業(yè)系統(tǒng)的蓬勃發(fā)展,這種增長已被用來提供指定品質(zhì)的所需用戶體驗(yàn)。因此,組合使用CPU和GPU來執(zhí)行具有數(shù)據(jù)并行內(nèi)容的工作負(fù)荷正在成為一項(xiàng)體積技術(shù)(volume technology)。
[0003]然而,GPU傳統(tǒng)上已在約束程序設(shè)計(jì)環(huán)境中進(jìn)行操作,其可主要用于圖形的加速。這些約束由以下事實(shí)而引起:GPU并不具有與CPU—樣豐富的程序設(shè)計(jì)生態(tài)系統(tǒng)。因此,它們的使用已主要限于2D和3D圖形以及少數(shù)前沿的多媒體應(yīng)用,這些多媒體應(yīng)用已被習(xí)慣地用于處理圖形和視頻應(yīng)用程序設(shè)計(jì)接口(API)。
[0004]隨著多廠商支持的OpenCL?和DirectCompute:?、標(biāo)準(zhǔn)API和支持工具的出現(xiàn),GPU在傳統(tǒng)應(yīng)用中的限制已被擴(kuò)展到傳統(tǒng)圖形的范圍之外。雖然OpenCL和DirectCompute是有希望的開端,但是在創(chuàng)建允許將CPU和GPU組合來像CPU —樣流暢地用于大多數(shù)程序設(shè)計(jì)任務(wù)的環(huán)境和生態(tài)系統(tǒng)方面仍存在著許多障礙。
[0005]現(xiàn)有的計(jì)算系統(tǒng)常常包括多個(gè)處理設(shè)備。例如,一些計(jì)算系統(tǒng)包括在獨(dú)立芯片上的CPU和GPU (例如,CPU可能位于母板上,而GPU可能位于圖形卡上)或在單個(gè)芯片封裝中的CPU和GPU。然而,這兩種布置仍包括與以下各項(xiàng)相關(guān)的重大挑戰(zhàn):(i)獨(dú)立的存儲系統(tǒng)、(ii)有效調(diào)度、(iii)提供進(jìn)程之間的服務(wù)質(zhì)量(QoS)保證、(iv)程序設(shè)計(jì)模型以及(v)編譯至多個(gè)目標(biāo)指令集體系結(jié)構(gòu)(ISA)—全部都要同時(shí)使功耗降到最小。
[0006]例如,離散的芯片布置迫使系統(tǒng)和軟件體系結(jié)構(gòu)設(shè)計(jì)者利用芯片間接口來使每一個(gè)處理器存取存儲器。雖然這些外部接口(例如,芯片間接口)對用于配合異構(gòu)型處理器的存儲器等待時(shí)間和功耗具有負(fù)效應(yīng),但是獨(dú)立的存儲系統(tǒng)(即,獨(dú)立的地址空間)和驅(qū)動(dòng)器管理的共享存儲器產(chǎn)生開銷,所述開銷對細(xì)粒卸荷(fine grain offload)來說變得不可接受。
[0007]盡管CPU和GPU傳統(tǒng)上執(zhí)行不同任務(wù),但許多類型的工作負(fù)荷可以使用CPU或GPU來執(zhí)行。當(dāng)CPU或者GPU空閑時(shí),如果工作負(fù)荷可以在處理器之間重新分布,那么計(jì)算環(huán)境會(huì)受益。
[0008]在處理之前,工作負(fù)荷被分為許多個(gè)離散任務(wù)。每個(gè)任務(wù)被指派給與CPU或者GPU相關(guān)的工作隊(duì)列。一旦任務(wù)被指派給CPU或GPU來處理,包括CPU和GPU的常規(guī)計(jì)算環(huán)境就不允許工作重新分布給不同類型的處理設(shè)備。常規(guī)系統(tǒng)允許CPU將任務(wù)重新分布給其它CPU,而GPU不具有重新分布工作的功能性。這一點(diǎn)還妨礙了處理,因?yàn)镃PU可能在GPU空閑時(shí)為繁忙的,反之亦然。這些失衡的處理導(dǎo)致了低效率和次最優(yōu)性能,特別是當(dāng)任務(wù)可以在任一個(gè)處理設(shè)備上進(jìn)行處理時(shí)。
【發(fā)明內(nèi)容】
[0009]因此,所需要的是其中CPU和GPU能夠在它們自己之間重新分布并且平衡任務(wù)的系統(tǒng)和方法。
[0010]雖然GPU、加速處理單元(APU)以及通用用途的圖形處理單元(GPGPU)是這個(gè)領(lǐng)域中常用的術(shù)語,但是表述“加速處理設(shè)備(APD) ”被認(rèn)為是更廣義的表述。例如,APD是指硬件和/或軟件的任何配合集合,與常規(guī)CPU、常規(guī)GPU、軟件和/或其組合相比,所述任何配合集合以加速方式完成與加速圖形處理任務(wù)、數(shù)據(jù)并行任務(wù)或嵌套數(shù)據(jù)并行任務(wù)相關(guān)的那些功能和計(jì)算。
[0011]在一些情況下,本發(fā)明的實(shí)施方案包括一種用于平衡異構(gòu)型處理設(shè)備上的工作負(fù)荷的方法、系統(tǒng)以及制品。所述方法包括:由與不同類型的處理器相關(guān)的離隊(duì)實(shí)體存取一種類型的處理器的存儲器;從在存儲器內(nèi)的多個(gè)任務(wù)中識別可以由所述不同類型的處理器處理的任務(wù);對能夠存取所述存儲器的多個(gè)離隊(duì)實(shí)體進(jìn)行同步;以及使這個(gè)任務(wù)從所述存儲器中離隊(duì)。
[0012]以下參照附圖詳細(xì)地描述本發(fā)明的額外特征和優(yōu)點(diǎn),連同本發(fā)明的各種實(shí)施方案的結(jié)構(gòu)和操作。應(yīng)該指出,本發(fā)明不限于本文所描述的具體實(shí)施方案。本文所提出的這類實(shí)施方案僅用于說明性目的?;诒疚乃ǖ慕塘x,一個(gè)或多個(gè)相關(guān)領(lǐng)域的技術(shù)人員將會(huì)明白額外的實(shí)施方案。
【專利附圖】
【附圖說明】
[0013]并入本文并且形成本說明書的一部分的附圖示出本發(fā)明,并且與描述一起,進(jìn)一步用于解釋本發(fā)明的原理并且用于使相關(guān)領(lǐng)域技術(shù)人員能夠制作并使用本發(fā)明。以下參照附圖描述本發(fā)明的各種實(shí)施方案,在所述附圖中,相似參考數(shù)字自始至終用于指示相似元件。
[0014]圖1A是根據(jù)本發(fā)明的實(shí)施方案的處理系統(tǒng)的說明性方框圖。
[0015]圖1B是圖1A中所示的APD的說明性方框圖圖解。
[0016]圖2是一種排隊(duì)系統(tǒng)的說明性方框圖,在所述排隊(duì)系統(tǒng)中,CPU和APD被熔鑄在同
一娃片上。
[0017]圖3是一種處于離散系統(tǒng)環(huán)境中的排隊(duì)系統(tǒng)的說明性方框圖。
[0018]圖4是為多個(gè)CPU和APD平衡任務(wù)的多個(gè)隊(duì)列的說明性方框圖。
[0019]圖5是APD使任務(wù)從存儲任務(wù)的隊(duì)列中離隊(duì)以用于在融合環(huán)境中的CPU上進(jìn)行處理的說明性流程圖。
[0020]圖6是CPU使任務(wù)從存儲任務(wù)的隊(duì)列中離隊(duì)以用于在APD上進(jìn)行處理的說明性流程圖。
[0021]圖7是CPU使任務(wù)從存儲任務(wù)的隊(duì)列中離隊(duì)以用于在離散環(huán)境中的CPU上進(jìn)行處理的說明性流程圖。
[0022]將參看附圖描述本發(fā)明。一般來說,元件第一次出現(xiàn)所在的附圖通常由對應(yīng)元件符號的最左邊的數(shù)字指示。
【具體實(shí)施方式】
[0023]在以下詳述中,對“一個(gè)實(shí)施方案”、“實(shí)施方案”、“示例實(shí)施方案”等的參考指示所描述的實(shí)施方案可以包括具體特征、結(jié)構(gòu)或特點(diǎn),但是每個(gè)實(shí)施方案可能并沒有必要包括所述具體特征、結(jié)構(gòu)或特點(diǎn)。此外,這類短語沒有必要是指同一實(shí)施方案。另外,當(dāng)結(jié)合一個(gè)實(shí)施方案描述具體特征、結(jié)構(gòu)或特點(diǎn)時(shí),所主張的是本領(lǐng)域技術(shù)人員知道結(jié)合無論是否被明確地描述的其它實(shí)施方案來實(shí)現(xiàn)這種特征、結(jié)構(gòu)或特點(diǎn)。
[0024]術(shù)語“本發(fā)明的實(shí)施方案”不要求本發(fā)明的所有實(shí)施方案都包括所論述的特征、優(yōu)點(diǎn)或操作模式。在不脫離本發(fā)明的范圍的情況下,可以設(shè)計(jì)出替代實(shí)施方案,并且可能并未詳細(xì)描述或可能省略本發(fā)明的眾所周知的元件,以免模糊本發(fā)明的相關(guān)細(xì)節(jié)。另外,本文所使用的術(shù)語僅出于描述具體實(shí)施方案的目的,而并不意圖限制本發(fā)明。例如,如本文所使用,單數(shù)形式的“一個(gè)(種)”以及“所述”也意圖包括復(fù)數(shù)形式,除非上下文另有明確指示。還將進(jìn)一步理解的是,術(shù)語“包括”、“包括了”、“包含”和/或“包含了”在本文中使用時(shí)指明所陳述的特征、整體、步驟、操作、元件和/或部件的存在,但是并不排除一個(gè)或多個(gè)其它特征、整體、步驟、操作、元件、部件和/或其群組的存在或添加。
[0025]圖1A是包括兩個(gè)處理器(即,CPU 102和APD 104)的統(tǒng)一計(jì)算系統(tǒng)100的示例性圖解。CPU 102可以包括一個(gè)或多個(gè)單核或多核CPU。在本發(fā)明的一個(gè)實(shí)施方案中,系統(tǒng)100被形成在單個(gè)硅芯片或封裝上,組合CPU 102和APD 104以提供統(tǒng)一的程序設(shè)計(jì)和執(zhí)行環(huán)境。這個(gè)環(huán)境使得APD 104能夠像CPU 102 —樣流暢地用于一些程序設(shè)計(jì)任務(wù)。然而,CPU 102和APD 104被形成在單個(gè)硅芯片上并不是本發(fā)明的絕對要求。在一些實(shí)施方案中,CPU和APD有可能被單獨(dú)地形成并且被安裝在相同或不同的襯底上。
[0026]在一個(gè)實(shí)施例中,系統(tǒng)100還包括存儲器106、操作系統(tǒng)108以及通信基礎(chǔ)設(shè)施109。以下更詳細(xì)地論述操作系統(tǒng)108和通信基礎(chǔ)設(shè)施109。
[0027]系統(tǒng)100還包括內(nèi)核模式驅(qū)動(dòng)器(KMD) 110、軟件調(diào)度器(SWS) 112,以及存儲器管理單元116,如輸入/輸出存儲器管理單元(IOMMU)。系統(tǒng)100的部件可以被實(shí)施為硬件、固件、軟件或其任何組合。本領(lǐng)域技術(shù)人員將會(huì)理解,除了圖1A中所示的實(shí)施方案中所示的各項(xiàng)之外,系統(tǒng)100可以包括一個(gè)或多個(gè)軟件、硬件以及固件部件,或與圖1A中所示的實(shí)施方案中所示的各項(xiàng)不同的一個(gè)或多個(gè)軟件、硬件以及固件部件。
[0028]在一個(gè)實(shí)施例中,驅(qū)動(dòng)器(如KMD 110)典型地通過計(jì)算機(jī)總線或通信子系統(tǒng)來與設(shè)備進(jìn)行通信,硬件連接至所述計(jì)算機(jī)總線或通信子系統(tǒng)。當(dāng)調(diào)用程序調(diào)用驅(qū)動(dòng)器中的例程時(shí),所述驅(qū)動(dòng)器向設(shè)備發(fā)出命令。一旦設(shè)備將數(shù)據(jù)發(fā)送回到驅(qū)動(dòng)器,所述驅(qū)動(dòng)器就可以調(diào)用原始調(diào)用程序中的例程。在一個(gè)實(shí)施例中,驅(qū)動(dòng)器是與硬件有關(guān)的并且是操作系統(tǒng)特定的。所述驅(qū)動(dòng)器常常提供任何必要的異步的時(shí)間有關(guān)的硬件接口所需要的中斷處理。
[0029]設(shè)備驅(qū)動(dòng)器,特別是在現(xiàn)代Microsoft Windows.?-平臺上的,能夠以內(nèi)核模式(環(huán)O)或以用戶模式(環(huán)3)進(jìn)行運(yùn)行。以用戶模式運(yùn)行驅(qū)動(dòng)器的主要益處是改進(jìn)的穩(wěn)定性,因?yàn)閷懭氩涣嫉挠脩裟J皆O(shè)備驅(qū)動(dòng)器不會(huì)通過蓋寫內(nèi)核存儲器來使系統(tǒng)崩潰。另一方面,用戶/內(nèi)核模式轉(zhuǎn)換常常強(qiáng)加相當(dāng)大的性能開銷,從而針對短等待時(shí)間和高吞吐量要求禁止用戶模式驅(qū)動(dòng)器。內(nèi)核空間可以由用戶模塊僅通過使用系統(tǒng)調(diào)用來存取。最終用戶程序,像UNIX操作系統(tǒng)外殼或其它基于GUI的應(yīng)用程序,是用戶空間的一部分。這些應(yīng)用程序通過內(nèi)核支持的功能來與硬件進(jìn)行交互。
[0030]CPU 102可以包括(未圖示)控制處理器、現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)或數(shù)字信號處理器(DSP)中的一個(gè)或多個(gè)。例如,CPU 102執(zhí)行控制計(jì)算系統(tǒng)100的操作的控制邏輯,所述控制邏輯包括操作系統(tǒng)108、KMD 110,SffS 112以及應(yīng)用程序111。在這個(gè)說明性實(shí)施方案中,根據(jù)一個(gè)實(shí)施方案,CPU 102通過例如以下操作來發(fā)起并且控制應(yīng)用程序111的執(zhí)行:在CPU 102和其它處理資源(如APD 104)上分配與那個(gè)應(yīng)用程序相關(guān)的處理。
[0031]尤其是APD 104執(zhí)行用于所選定的功能的命令和程序,所述所選定的功能如圖形操作和可能例如特別適用于并行處理的其它操作。一般來說,APD 104可以被頻繁地用于執(zhí)行圖形流水線操作(如像素操作、幾何計(jì)算),并且將圖像渲染至顯示器。在本發(fā)明的各種實(shí)施方案中,APD 104還可以基于從CPU 102所接收的命令或指令來執(zhí)行計(jì)算處理操作(例如,與圖形無關(guān)的那些操作,例如像視頻操作、物理模擬、計(jì)算流體動(dòng)力學(xué)等)。
[0032]例如,命令可以被認(rèn)為是典型地不是定義在指令集體系結(jié)構(gòu)(ISA)中的特殊指令??梢酝ㄟ^特殊處理器(如分派處理器、命令處理器或網(wǎng)絡(luò)控制器)來執(zhí)行命令。另一方面,指令可以被認(rèn)為是例如計(jì)算機(jī)體系結(jié)構(gòu)內(nèi)部的處理器的單一操作。在一個(gè)實(shí)施例中,當(dāng)使用兩個(gè)ISA集時(shí),一些指令被用于執(zhí)行x86程序,而一些指令被用于執(zhí)行APD單元上的內(nèi)核。
[0033]在一個(gè)說明性實(shí)施方案中,CPU 102將所選定的命令傳輸至APD 104。這些所選定的命令可以包括圖形命令和服從并行執(zhí)行的其它命令。可以大致上獨(dú)立于CPU 102來執(zhí)行還可以包括計(jì)算處理命令在內(nèi)的這些所選定的命令。
[0034]APD 104可以包括其自己的計(jì)算單元(未圖示),如但不限于一個(gè)或多個(gè)SMD處理核心。如本文所提及,SIMD是流水線或程序設(shè)計(jì)模型,其中通過每個(gè)處理元件自己的數(shù)據(jù)和共享的程序計(jì)數(shù)器,在多個(gè)處理元件中的每一個(gè)上同時(shí)地執(zhí)行內(nèi)核。所有處理元件執(zhí)行一個(gè)完全相同的指令集。預(yù)測的使用使得工作項(xiàng)目能夠參與或不參與每個(gè)所發(fā)出的命令。
[0035]在一個(gè)實(shí)施例中,每個(gè)APD 104計(jì)算單元可以包括一個(gè)或多個(gè)標(biāo)量和/或向量浮點(diǎn)單元和/或算術(shù)邏輯單元(ALU)。APD計(jì)算單元還可以包括專用處理單元(未圖示),如反平方根單元和正弦/余弦單元。在一個(gè)實(shí)施例中,Aro計(jì)算單元在本文中統(tǒng)稱為著色器核心122。
[0036]一般來說,具有一個(gè)或多個(gè)SMD使得APD 104理想地適用于數(shù)據(jù)并行任務(wù)(如在圖形處理中常見的那些)的執(zhí)行。
[0037]—些圖形流水線操作(如像素處理)和其它并行計(jì)算操作可能要求對輸入數(shù)據(jù)元素的流或集合執(zhí)行同一命令流或計(jì)算內(nèi)核。同一計(jì)算內(nèi)核的相應(yīng)實(shí)例化可以在著色器核心122中的多個(gè)計(jì)算單元上同時(shí)地執(zhí)行,以便并行地處理這類數(shù)據(jù)元素。如本文所提及,例如,計(jì)算內(nèi)核是含有在程序中陳述并且在Aro上執(zhí)行的指令的功能。這個(gè)功能還被稱為內(nèi)核、著色器、著色器程序或程序。
[0038]在一個(gè)說明性實(shí)施方案中,每個(gè)計(jì)算單元(例如,SIMD處理核心)可以執(zhí)行特定工作項(xiàng)目的相應(yīng)實(shí)例化來處理傳入數(shù)據(jù)。工作項(xiàng)目是由命令在設(shè)備上所調(diào)用的內(nèi)核的并行執(zhí)行的集合中的一個(gè)。工作項(xiàng)目可以由一個(gè)或多個(gè)處理元件執(zhí)行為在Aro計(jì)算單元上執(zhí)行的工作群組的一部分。
[0039]工作項(xiàng)目通過其全局ID和局部ID來與所述集合內(nèi)的其它執(zhí)行區(qū)別開。在一個(gè)實(shí)施例中,一起同時(shí)在SMD上執(zhí)行的工作群組中的工作項(xiàng)目子集可以被稱為波前136。波前的寬度是計(jì)算單元(例如,SMD處理核心)的硬件的特點(diǎn)。如本文所提及,工作群組是在單一計(jì)算單元上執(zhí)行的相關(guān)工作項(xiàng)目的集合。群組中的工作項(xiàng)目執(zhí)行同一內(nèi)核并且共享本地存儲器和工作群組屏障。
[0040]在示例性實(shí)施方案中,在同一 SMD處理核心上處理來自工作群組的所有波前。一次一個(gè)地發(fā)出波前上的指令,并且在所有工作項(xiàng)目遵循同一控制流時(shí),每個(gè)工作項(xiàng)目執(zhí)行同一程序。波前還可以被稱為彎曲、向量或線程。
[0041]執(zhí)行掩碼和工作項(xiàng)目預(yù)測用于使得發(fā)散的控制流能夠在一個(gè)波前內(nèi),其中每個(gè)單獨(dú)的工作項(xiàng)目實(shí)際上可以采取通過內(nèi)核的唯一的代碼路徑。當(dāng)工作項(xiàng)目的全集不可在波前開始時(shí)間使用時(shí),可以處理部分填充的波前。例如,著色器核心122可以同時(shí)執(zhí)行預(yù)定數(shù)量的波前136,每個(gè)波前136包括多個(gè)工作項(xiàng)目。
[0042]在系統(tǒng)100內(nèi),APD 104包括其自己的存儲器,如圖形存儲器130 (但存儲器130不限于僅供圖形使用)。圖形存儲器130提供用于在APD 104中進(jìn)行計(jì)算期間使用的本地存儲器。著色器核心122內(nèi)的單獨(dú)計(jì)算單元(未圖示)可以具有其自己的本地?cái)?shù)據(jù)儲存器(未圖示)。在一個(gè)實(shí)施方案中,APD 104包括存取本地圖形存儲器130以及存取存儲器106。在另一個(gè)實(shí)施方案中,APD 104可以包括存取動(dòng)態(tài)隨機(jī)存取存儲器(DRAM)或直接附接至APD 104并且與存儲器106分離的其它此類存儲器(未圖示)。
[0043]在所示實(shí)施例中,APD 104還包括一個(gè)或“η”數(shù)量個(gè)命令處理器(CP) 124。CP 124控制APD 104內(nèi)的處理。CP 124還從存儲器106中的命令緩沖區(qū)125檢索待執(zhí)行的命令,并且對這些命令在APD 104上的執(zhí)行進(jìn)行協(xié)調(diào)。
[0044]在一個(gè)實(shí)施例中,CPU 102將基于應(yīng)用程序111的命令輸入適當(dāng)?shù)拿罹彌_區(qū)125中。如本文所提及,應(yīng)用程序是將在CPU和APD內(nèi)的計(jì)算單元上執(zhí)行的程序部分的組合。
[0045]多個(gè)命令緩沖區(qū)125可以用被調(diào)度來在APD 104上執(zhí)行的每個(gè)進(jìn)程來維護(hù)。
[0046]CP 124可以用硬件、固件或軟件或其組合來實(shí)施。在一個(gè)實(shí)施方案中,CP 124被實(shí)施為具有用于實(shí)施包括調(diào)度邏輯在內(nèi)的邏輯的微代碼的精簡指令集計(jì)算機(jī)(RISC)引擎。
[0047]APD 104還包括一個(gè)或“η”數(shù)量個(gè)分派控制器(DC) 126。在本申請中,術(shù)語“分派”是指由分派控制器執(zhí)行的命令,所述分派控制器使用上下文狀態(tài)來為計(jì)算單元集合上的工作群組集合發(fā)起內(nèi)核的執(zhí)行的開始。DC 126包括用以發(fā)起著色器核心122中的工作群組的邏輯。在一些實(shí)施方案中,DC 126可以被實(shí)施為CP 124的一部分。
[0048]系統(tǒng)100還包括用于從運(yùn)行列表150選擇進(jìn)程以在APD 104上執(zhí)行的硬件調(diào)度器(HWS) 128。HWS 128可以使用循環(huán)法、優(yōu)先級或基于其它調(diào)度策略來從運(yùn)行列表150選擇進(jìn)程。例如,可以動(dòng)態(tài)地確定優(yōu)先級。HWS 128還可以包括用以管理運(yùn)行列表150的功能性,例如通過添加新的進(jìn)程以及通過從運(yùn)行列表150刪除現(xiàn)有進(jìn)程來管理。HWS 128的運(yùn)行列表管理邏輯有時(shí)被稱為運(yùn)行列表控制器(RLC)。
[0049]在本發(fā)明的各種實(shí)施方案中,當(dāng)HWS 128發(fā)起執(zhí)行來自RLC 150的進(jìn)程時(shí),CP 124開始從對應(yīng)的命令緩沖區(qū)125檢索并且執(zhí)行命令。在一些情況下,CP 124可以生成待在APD104內(nèi)部執(zhí)行的一個(gè)或多個(gè)命令,這些命令對應(yīng)于從CPU 102接收的命令。在一個(gè)實(shí)施方案中,CP 124與其它部件一起對APD 104上的命令進(jìn)行區(qū)分優(yōu)先次序并且調(diào)度,其方式為改進(jìn)或最大化對APD 104和/或系統(tǒng)100的資源的利用率。
[0050]APD 104可以存取或可以包括中斷生成器146。中斷生成器146可以由APD 104配置來在APD 104遇到如頁面錯(cuò)誤等中斷事件時(shí)中斷操作系統(tǒng)108。例如,APD 104可以依賴于IOMMU 116內(nèi)的中斷生成邏輯來產(chǎn)生以上所指出的頁面錯(cuò)誤中斷。
[0051]APD 104還可以包括用于搶先取得當(dāng)前正在著色器核心122內(nèi)運(yùn)行的一個(gè)進(jìn)程的搶先和上下文切換邏輯120。例如,上下文切換邏輯120包括用以停止所述進(jìn)程并且保存其當(dāng)前狀態(tài)(例如,著色器核心122狀態(tài)和CP 124狀態(tài))的功能性。
[0052]如本文所提及,術(shù)語“狀態(tài)”可以包括初始狀態(tài)、中間狀態(tài)和/或最終狀態(tài)。初始狀態(tài)是機(jī)器根據(jù)程序設(shè)計(jì)次序處理輸入數(shù)據(jù)集以產(chǎn)生數(shù)據(jù)輸出集合的開始點(diǎn)。存在例如需要在幾個(gè)點(diǎn)處被存儲以使得處理能夠向前進(jìn)的中間狀態(tài)。這個(gè)中間狀態(tài)有時(shí)被存儲來允許當(dāng)由某一其它進(jìn)程中斷時(shí)在稍后時(shí)間處繼續(xù)執(zhí)行。還存在可以被記錄為輸出數(shù)據(jù)集的一部分的最終狀態(tài)。
[0053]搶先和上下文切換邏輯120還可以包括用以將另一個(gè)進(jìn)程上下文切換至APD 104中的邏輯。用以將另一個(gè)進(jìn)程上下文切換成在APD 104上運(yùn)行的功能性可以包括例如通過CP 124和DC 126來實(shí)例化所述進(jìn)程以在APD 104上運(yùn)行,為這個(gè)進(jìn)程恢復(fù)任何先前保存的狀態(tài),并且開始其執(zhí)行。
[0054]存儲器106可以包括非永久性存儲器,如DRAM(未圖示)。存儲器106可以在執(zhí)行應(yīng)用程序或其它處理邏輯的若干部分期間存儲例如處理邏輯指令、常量值以及變量值。例如,在一個(gè)實(shí)施方案中,用以在CPU 102上執(zhí)行一個(gè)或多個(gè)操作的控制邏輯的若干部分可以在由CPU 102執(zhí)行操作的相應(yīng)部分期間駐留在存儲器106內(nèi)。
[0055]在執(zhí)行期間,相應(yīng)的應(yīng)用程序、操作系統(tǒng)功能、處理邏輯命令以及系統(tǒng)軟件可以駐留在存儲器106中。對操作系統(tǒng)108很重要的控制邏輯命令在執(zhí)行期間通常將駐留在存儲器106中。包括例如KMD 110和軟件調(diào)度器112在內(nèi)的其它軟件命令在系統(tǒng)100的執(zhí)行期間也可以駐留在存儲器106中。
[0056]在這個(gè)實(shí)施例中,存儲器106包括由CPU 102使用來將命令發(fā)送至APD 104的命令緩沖區(qū)125。存儲器106還包含進(jìn)程列表和進(jìn)程信息(例如,活動(dòng)列表152和進(jìn)程控制塊154)。這些列表以及信息由在CPU 102上執(zhí)行的調(diào)度軟件使用來將調(diào)度信息傳遞至APD104和/或相關(guān)調(diào)度硬件。存取存儲器106可以由耦合到存儲器106的存儲器控制器140管理。例如,來自CPU 102或來自其它設(shè)備的對從存儲器106讀取或?qū)懭氪鎯ζ?06的請求由所述存儲器控制器140管理。
[0057]轉(zhuǎn)回參看系統(tǒng)100的其它方面,IOMMU 116是一個(gè)多上下文存儲器管理單元。
[0058]如本文所使用,上下文可以認(rèn)為是內(nèi)核在其中執(zhí)行的環(huán)境和在其中定義同步與存儲器管理的領(lǐng)域。上下文包括設(shè)備集合、可由這些設(shè)備存取的存儲器、對應(yīng)的存儲器特性以及用來調(diào)度一個(gè)或多個(gè)內(nèi)核的執(zhí)行或在存儲器對象上的操作的一個(gè)或多個(gè)命令隊(duì)列。
[0059]轉(zhuǎn)回參看圖1A中所示的實(shí)施例,IOMMU 116包括用以執(zhí)行用于包括APD 104在內(nèi)的設(shè)備的存儲器頁面存取的虛擬至物理地址翻譯的邏輯。IOMMU 116還可以包括用以生成中斷的邏輯,例如當(dāng)由如APD 104等設(shè)備的頁面存取導(dǎo)致頁面錯(cuò)誤時(shí)生成中斷。IOMMU 116還可以包括或能夠存取翻譯旁視緩沖區(qū)(TLB) 118。作為實(shí)例,TLB 118可以在內(nèi)容可尋址存儲器(CAM)中實(shí)施,以便應(yīng)由APD 104對存儲器106中的數(shù)據(jù)所做出的請求而加速邏輯(即,虛擬)存儲器地址至物理存儲器地址的翻譯。
[0060]在所示實(shí)施例中,通信基礎(chǔ)設(shè)施109視需要互連系統(tǒng)100的部件。通信基礎(chǔ)設(shè)施109可以包括(未圖示)外圍部件互連(PCI)總線、擴(kuò)展的PCI (PC1-E)總線、高級微控制器總線體系結(jié)構(gòu)(AMBA)總線、加速圖形端口(AGP)或其它此類通信基礎(chǔ)設(shè)施中的一個(gè)或多個(gè)。通信基礎(chǔ)設(shè)施109還可以包括以太網(wǎng),或類似網(wǎng)絡(luò),或滿足應(yīng)用程序的數(shù)據(jù)傳送速率要求的任何適當(dāng)物理通信基礎(chǔ)設(shè)施。通信基礎(chǔ)設(shè)施109包括用以互連包括計(jì)算系統(tǒng)100的部件在內(nèi)的部件的功能性。
[0061]在這個(gè)實(shí)施例中,操作系統(tǒng)108包括用以管理系統(tǒng)100的硬件部件以及用以提供常見服務(wù)的功能性。在各種實(shí)施方案中,操作系統(tǒng)108可以在CPU 102上執(zhí)行,并且提供常見服務(wù)。這些常見服務(wù)可以包括例如調(diào)度用于在CPU 102內(nèi)部執(zhí)行的應(yīng)用程序、錯(cuò)誤管理、中斷服務(wù)以及處理其它應(yīng)用程序的輸入和輸出。
[0062]在一些實(shí)施方案中,基于由如中斷控制器148的中斷控制器生成的中斷,操作系統(tǒng)108調(diào)用適當(dāng)?shù)闹袛嗵幚砝獭@?,在檢測到頁面錯(cuò)誤中斷之后,操作系統(tǒng)108可以即刻調(diào)用中斷處理程序來起始將相關(guān)頁面加載到存儲器106中,并且更新對應(yīng)頁面表。
[0063]操作系統(tǒng)108還可以包括用以通過確保以下操作來保護(hù)系統(tǒng)100的功能性:存取硬件部件是通過操作系統(tǒng)管理的內(nèi)核功能性來進(jìn)行調(diào)解。事實(shí)上,操作系統(tǒng)108確保了應(yīng)用程序(如應(yīng)用程序111)在用戶空間中在CPU 102上運(yùn)行。操作系統(tǒng)108還確保了應(yīng)用程序111調(diào)用由操作系統(tǒng)提供的內(nèi)核功能性,以便存取硬件和/或輸入/輸出功能性。
[0064]舉例來說,應(yīng)用程序111包括用以執(zhí)行用戶計(jì)算的各種程序或命令,這些用戶計(jì)算也在CPU 102上執(zhí)行。CPU 102能夠無縫地發(fā)送所選定的命令以用于在APD 104上處理。
[0065]在一個(gè)實(shí)施例中,KMD 110實(shí)施應(yīng)用程序設(shè)計(jì)接口(API),通過所述應(yīng)用程序設(shè)計(jì)接口,CPU 102或在CPU 102上執(zhí)行的應(yīng)用程序或其它邏輯可以調(diào)用APD 104功能性。例如,KMD 110可以使來自CPU 102的命令排隊(duì)到命令緩沖區(qū)125,APD 104隨后將從命令緩沖區(qū)檢索這些命令。此外,KMD 110可以與SWS 112—起執(zhí)行待在APD 104上執(zhí)行的進(jìn)程的調(diào)度。例如,SWS 112可以包括用以維護(hù)待在APD上執(zhí)行的進(jìn)程的已區(qū)分優(yōu)先次序的列表的邏輯。
[0066]在本發(fā)明的其它實(shí)施方案中,在CPU 102上執(zhí)行的應(yīng)用程序可以在對命令進(jìn)行排隊(duì)時(shí)完全繞過KMD 110。
[0067]在一些實(shí)施方案中,SWS 112維護(hù)待在APD 104上執(zhí)行的進(jìn)程的在存儲器106中的活動(dòng)列表152。SffS 112還在活動(dòng)列表152中選擇進(jìn)程子集來由硬件中的HWS 128管理。關(guān)于在APD 104上運(yùn)行每個(gè)進(jìn)程的信息通過進(jìn)程控制塊(PCB) 154而從CPU 102傳遞至APD104。
[0068]用于應(yīng)用程序、操作系統(tǒng)以及系統(tǒng)軟件的處理邏輯可以包括在如C語言的程序設(shè)計(jì)語言中和/或如Verilog、RTL或網(wǎng)表的硬件描述語言中指定的命令,以便使得能夠最終通過掩模作品(maskwork)/光掩模的產(chǎn)生而配置制造過程,從而生產(chǎn)體現(xiàn)本文所描述的本發(fā)明的方面的硬件設(shè)備。
[0069]本領(lǐng)域技術(shù)人員在閱讀本描述后將了解,計(jì)算系統(tǒng)100可以包括比圖1A中所示更多或更少的部件。例如,計(jì)算系統(tǒng)100可以包括一個(gè)或多個(gè)輸入接口、非易失性儲存器、一個(gè)或多個(gè)輸出接口、網(wǎng)絡(luò)接口以及一個(gè)或多個(gè)顯示器或顯示器接口。
[0070]圖1B為示出圖1A中所示的APD 104的更詳細(xì)的圖解的實(shí)施方案。在圖1B中,CP124可以包括CP流水線124a、124b以及124c。CP 124可以被配置來處理命令列表,這些命令列表被提供為來自圖1A中所示的命令緩沖區(qū)125的輸入。在圖1B的示例性操作中,CP輸入O (124a)負(fù)責(zé)將命令驅(qū)動(dòng)到圖形流水線162中。CP輸入I和2 (124b和124c)將命令轉(zhuǎn)發(fā)到計(jì)算流水線160。還提供了用于控制HWS128的操作的控制器機(jī)構(gòu)166。
[0071]在圖1B中,圖形流水線162可以包括塊集合,本文稱為有序流水線164。作為一個(gè)實(shí)例,有序流水線164包括頂點(diǎn)群組翻譯器(VGT) 164a、圖元匯編器(PA) 164b、掃描變換器(SC) 164c以及著色器輸出后期渲染單元(SX/RB)176。有序流水線164內(nèi)的每個(gè)塊可以表示圖形流水線162內(nèi)的不同圖形處理級。有序流水線164可以是固定功能硬件流水線。
[0072]可以使用也將在本發(fā)明的精神和范圍內(nèi)的其它實(shí)施方式。盡管只有少量數(shù)據(jù)可以被提供為到圖形流水線162的輸入,但這些數(shù)據(jù)將在被提供為從圖形流水線162的輸出時(shí)被放大。圖形流水線162還包括用于在從CP流水線124a接收的工作項(xiàng)目群組內(nèi)的整個(gè)范圍中進(jìn)行計(jì)數(shù)的DC 166。通過DC 166提交的計(jì)算工作與圖形流水線162是半同步的。
[0073]計(jì)算流水線160包括著色器DC 168和170。所述DC168和170中的每一個(gè)被配置來在從CP流水線124b和124c接收的工作群組內(nèi)的整個(gè)計(jì)算范圍中進(jìn)行計(jì)數(shù)。
[0074]在圖1B中示出的DC 166、168以及170接收輸入范圍,將這些范圍分解成工作群組,然后將這些工作群組轉(zhuǎn)發(fā)到著色器核心122。
[0075]由于圖形流水線162通常是固定功能流水線,因而難以保存并恢復(fù)其狀態(tài),并且因此,圖形流水線162難以進(jìn)行上下文切換。因此,在大多數(shù)情況下,如本文所論述,上下文切換不涉及在圖形進(jìn)程之間進(jìn)行上下文切換。一個(gè)例外是對于在著色器核心122中的圖形工作,它可以進(jìn)行上下文切換。
[0076]在圖形流水線162內(nèi)部的工作處理已經(jīng)完成之后,通過后期渲染單元176處理所完成的工作,所述后期渲染單元進(jìn)行深度和色彩計(jì)算,并且然后將其最終結(jié)果寫入存儲器130。
[0077]著色器核心122可以由圖形流水線162和計(jì)算流水線160共享。著色器核心122可以是被配置來運(yùn)行波前的一般處理器。
[0078]在一個(gè)實(shí)施例中,在計(jì)算流水線160內(nèi)部的所有工作是在著色器核心122中進(jìn)行處理的。著色器核心122運(yùn)行可編程的軟件代碼,并且包括各種形式的數(shù)據(jù),例如狀態(tài)數(shù)據(jù)。
[0079]圖2是一種排隊(duì)系統(tǒng)200的說明性方框圖,在所述排隊(duì)系統(tǒng)中,工作負(fù)荷受到平衡并且被重新分布以用于在CPU和AH)處理設(shè)備上進(jìn)行處理。排隊(duì)系統(tǒng)200包括隊(duì)列202、任務(wù)204、信號量塊206、CP 124(本文所描述)、一個(gè)或多個(gè)SMD調(diào)度器208、著色器核心122、CPU同步模塊210、CPU離隊(duì)模塊212以及CPU核心214。
[0080]CPU 102包括如本文所描述的一個(gè)或多個(gè)CPU核心214。每個(gè)CPU核心214處理CPU 102中的計(jì)算機(jī)指令和數(shù)據(jù)。
[0081]隊(duì)列202是從系統(tǒng)存儲器106分配的一段存儲器。隊(duì)列根據(jù)先進(jìn)先出(“FIFO”)原則來操作。也就是,先入隊(duì)到隊(duì)列的工作負(fù)荷是先從隊(duì)列離隊(duì)的工作負(fù)荷。此外,本領(lǐng)域技術(shù)人員將了解的是,以實(shí)例方式而非限制方式給出對具體隊(duì)列數(shù)據(jù)結(jié)構(gòu)的論述,并且可以使用其它存儲器存儲數(shù)據(jù)結(jié)構(gòu)。
[0082]隊(duì)列202是公用隊(duì)列。公用隊(duì)列可以由如CPU 102和APD 104等處理設(shè)備來存取。隊(duì)列202存儲根據(jù)FIFO原則而入隊(duì)到隊(duì)列202并且從其離隊(duì)的多個(gè)任務(wù)204。任務(wù)204是獨(dú)立作業(yè),這些作業(yè)包括為在APD 104或CPU 102上進(jìn)行處理而調(diào)度的操作系統(tǒng)指令、應(yīng)用程序指令、圖像以及數(shù)據(jù)。一個(gè)作業(yè)根據(jù)“粒度”而分成多個(gè)任務(wù)204,其中粒度表示任務(wù)204的大小。粒度的大小針對為APD 104和CPU 102處理器調(diào)度的任務(wù)204而變化。例如,針對在CPU102上處理的任務(wù)204的粒度大小通常小于針對在APD 104上處理的任務(wù)204的粒度大小。
[0083]任務(wù)204包括含有指向需要處理的數(shù)據(jù)的信息指令和/或指針的數(shù)據(jù)結(jié)構(gòu)。例如,含有用于任務(wù)204的信息的數(shù)據(jù)結(jié)構(gòu)可以被定義為MyTask結(jié)構(gòu)。在一個(gè)非限制性實(shí)施例中,MyTask結(jié)構(gòu)可以包括以下參數(shù):
[0084]
【權(quán)利要求】
1.一種用于平衡異構(gòu)型處理設(shè)備上的工作負(fù)荷的方法,其包括: 由與不同類型的處理器相關(guān)的離隊(duì)實(shí)體存取一種類型的處理器的存儲器; 從在所述存儲器內(nèi)的多個(gè)任務(wù)中識別可以由所述不同類型的所述處理器處理的任務(wù); 對能夠存取所述存儲器的多個(gè)離隊(duì)實(shí)體進(jìn)行同步;以及 使所述任務(wù)從所述存儲器中離隊(duì)。
2.如權(quán)利要求1所述的方法,其中所述存取響應(yīng)于來自所述不同類型的所述處理器的請求。
3.如權(quán)利要求1所述的方法,其中所述處理器包括中央處理器(CPU)和加速處理設(shè)備(APD)。
4.如權(quán)利要求3所述的方法,其中與所述APD相關(guān)的所述離隊(duì)實(shí)體是硬件設(shè)備。
5.如權(quán)利要求3所述的方法,其中與所述CPU相關(guān)的所述離隊(duì)實(shí)體包括軟件模塊。
6.如權(quán)利要求1所述的方法,其中所述識別進(jìn)一步包括存取任務(wù)參數(shù)。
7.如權(quán)利要求1所述的方法,其中所述存儲器是隊(duì)列。
8.如權(quán)利要求1所述的方法,其中所述離隊(duì)實(shí)體使之離隊(duì)的任務(wù)的數(shù)量與處理器類型相關(guān)。
9.一種用于平衡異構(gòu)型 處理設(shè)備上的工作負(fù)荷的系統(tǒng),其包括: 與一種類型的處理器相關(guān)的存儲器,其被配置來存儲多個(gè)任務(wù), 與不同類型的處理器相關(guān)的離隊(duì)實(shí)體,其被配置來從所述多個(gè)任務(wù)中識別可以由所述不同類型的所述處理器處理的任務(wù);以及 同步部件,其被配置來當(dāng)所述離隊(duì)實(shí)體使所述任務(wù)從所述存儲器中離隊(duì)時(shí)對所述多個(gè)離隊(duì)實(shí)體進(jìn)行同步。
10.如權(quán)利要求9所述的系統(tǒng),其中所述存取響應(yīng)于來自所述不同類型的所述處理器的請求。
11.如權(quán)利要求9所述的系統(tǒng),其中處理器包括中央處理器(CPU)和加速處理設(shè)備(APD)。
12.如權(quán)利要求9所述的系統(tǒng),其中與APD相關(guān)的所述離隊(duì)實(shí)體是硬件設(shè)備。
13.如權(quán)利要求9所述的系統(tǒng),其中所述識別進(jìn)一步包括存取任務(wù)參數(shù)。
14.如權(quán)利要求9所述的系統(tǒng),其中所述存儲器是隊(duì)列。
15.如權(quán)利要求9所述的系統(tǒng),其中所述離隊(duì)實(shí)體使之離隊(duì)的任務(wù)的數(shù)量與所述處理器類型相關(guān)。
16.一種包括上面存儲有指令的計(jì)算機(jī)可讀介質(zhì)的制品,所述指令在由處理設(shè)備執(zhí)行時(shí)致使所述處理設(shè)備平衡異構(gòu)型處理設(shè)備上的工作負(fù)荷,所述制品包括: 由與不同類型的處理器相關(guān)的離隊(duì)實(shí)體存取一種類型的處理器的存儲器 從在所述存儲器內(nèi)的多個(gè)任務(wù)中識別可以由所述不同類型的所述處理器處理的任務(wù); 對能夠存取所述存儲器的多個(gè)離隊(duì)實(shí)體進(jìn)行同步;以及 使所述任務(wù)從所述存儲器中離隊(duì)。
17.如權(quán)利要求16所述的制品,其中所述存取響應(yīng)于來自所述不同類型的所述處理器的請求。
18.如權(quán)利要求16所述的制品,其中所述處理器包括中央處理器(CPU)和加速處理設(shè)備(APD)。
19.如權(quán)利要求16所述的制品,其中與APD相關(guān)的所述離隊(duì)實(shí)體是硬件設(shè)備。
20.一種上面記錄有指令的計(jì)算機(jī)可讀介質(zhì),所述指令在由計(jì)算設(shè)備執(zhí)行時(shí)致使所述計(jì)算設(shè)備執(zhí)行包括以下操作的方法: 由與不同類型的處理器相關(guān)的離隊(duì)實(shí)體存取一種類型的處理器的存儲器,所述存取響應(yīng)于隊(duì)列分析; 從在所述存儲器內(nèi)的多個(gè)任務(wù)中識別可以由所述不同類型的所述處理器處理的任務(wù); 對能夠存取所述存儲器的多個(gè)離隊(duì)實(shí)體進(jìn)行同步;以及 使所述任務(wù)從所述存儲器中離隊(duì)。
21.如權(quán)利要求20所述的計(jì)算機(jī)可讀介質(zhì),其響應(yīng)于來自所述不同類型的所述處理器的請求。
22.如權(quán)利要求20所述的計(jì)算機(jī)可讀介質(zhì),其中所述處理器包括中央處理器(CPU)和加速處理設(shè)備(APD)。
23.如權(quán)利要求20所 述的計(jì)算機(jī)可讀介質(zhì),其中與APD相關(guān)的所述離隊(duì)實(shí)體是硬件設(shè)備。
【文檔編號】G06F9/46GK103608776SQ201180060199
【公開日】2014年2月26日 申請日期:2011年12月9日 優(yōu)先權(quán)日:2010年12月15日
【發(fā)明者】本杰明·托馬斯·桑德, 邁克爾·休斯頓, 牛頓·張, 基思·洛韋里 申請人:超威半導(dǎo)體公司