国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于著色器核心中著色器資源分配的策略的制作方法

      文檔序號(hào):6497659閱讀:361來(lái)源:國(guó)知局
      用于著色器核心中著色器資源分配的策略的制作方法
      【專利摘要】本發(fā)明提供了一種在加速處理設(shè)備內(nèi)確定優(yōu)先級(jí)的方法。所述加速處理設(shè)備包括根據(jù)預(yù)定標(biāo)準(zhǔn)處理的計(jì)算管線隊(duì)列?;趦?yōu)先級(jí)特征來(lái)選擇所述隊(duì)列,并且對(duì)選定隊(duì)列進(jìn)行處理,直至?xí)r間量子流逝或者具有更高優(yōu)先級(jí)的隊(duì)列變得可供用于處理。
      【專利說(shuō)明】用于著色器核心中著色器資源分配的策略
      [0001]背景發(fā)明領(lǐng)域
      [0002]本發(fā)明總體涉及計(jì)算系統(tǒng)。更具體地,本發(fā)明涉及用于在多個(gè)管線(pipeline)輸入間分配圖形處理單元資源的仲裁策略。
      【背景技術(shù)】
      [0003]最近,由于GPU的每單位功率和/或成本的典型性能,因此對(duì)將圖形處理單元(GPU)用于一般計(jì)算的期望已經(jīng)變得更加明顯。一般來(lái)說(shuō),GPU的計(jì)算能力已以超過(guò)對(duì)應(yīng)中央處理單元(CPU)平臺(tái)的計(jì)算能力的速度增長(zhǎng)。結(jié)合移動(dòng)計(jì)算市場(chǎng)和其必需支持服務(wù)器/企業(yè)系統(tǒng)的開發(fā),已經(jīng)利用這種增長(zhǎng)來(lái)提供指定的期望用戶體驗(yàn)質(zhì)量。因此,組合使用CPU和GPU來(lái)執(zhí)行帶有數(shù)據(jù)并行內(nèi)容的工作負(fù)載正在變成一種廣泛應(yīng)用的技術(shù)。
      [0004]然而,傳統(tǒng)上,GPU是在受約束的編程環(huán)境中操作,僅可用于圖形加速。這些約束起因于GPU不具有與CPU —樣豐富的編程生態(tài)系統(tǒng)這一事實(shí)。因此,它們的用途一直大多局限于二維(2D)和三維(3D)圖形以及已習(xí)慣于處理圖形和視頻應(yīng)用編程接口(API)的少量前沿多媒體應(yīng)用。
      [0005]隨著多供應(yīng)商支持的OpenCL?和DirectCompute?、標(biāo)準(zhǔn)API和支持工具出
      現(xiàn),GPU的應(yīng)用已經(jīng)不再局限于諸如傳統(tǒng)圖形等傳統(tǒng)應(yīng)用。雖然OpenCL和DirectCompute是有前景的起點(diǎn),但形成創(chuàng)造一種允許對(duì)于大多數(shù)編程任務(wù)CPU和GPU的組合使用起來(lái)與CP U —樣流暢的環(huán)境和生態(tài)系統(tǒng)仍存在許多障礙。
      [0006]現(xiàn)有計(jì)算系統(tǒng)通常包括多個(gè)處理設(shè)備。例如,一些計(jì)算系統(tǒng)包括位于單獨(dú)芯片上(例如,CPU可以位于主板上并且GPU可以位于圖形卡上)或者在單個(gè)芯片封裝中的CPU和GPU兩種情況。然而,這兩種布置仍包括與以下項(xiàng)相關(guān)的重大挑戰(zhàn):(i)單獨(dú)的存儲(chǔ)器系統(tǒng)、
      (ii)有效調(diào)度、(iii)提供進(jìn)程間服務(wù)質(zhì)量(QoS)保證、(iv)編程模型以及(V)編譯成多種目標(biāo)指令集體系結(jié)構(gòu)(ISA)——在所有這些的同時(shí)還要使功耗最小化。
      [0007]例如,分立芯片布置迫使系統(tǒng)以及軟件體系結(jié)構(gòu)針對(duì)每個(gè)處理器利用芯片到芯片接口對(duì)存儲(chǔ)器進(jìn)行存取。這些外部接口(例如,芯片到芯片)對(duì)用于協(xié)同操作異構(gòu)處理器的存儲(chǔ)器等待時(shí)間和功耗造成不利影響,同時(shí),單獨(dú)的存儲(chǔ)器系統(tǒng)(即,單獨(dú)地址空間)和驅(qū)動(dòng)器管理共享存儲(chǔ)器會(huì)產(chǎn)生變得對(duì)精細(xì)粒度卸載而言不可接受的開銷。
      [0008]分立芯片布置和單芯片布置兩者均可以限制可發(fā)送給GPU以供執(zhí)行的命令的類型。例如,計(jì)算命令(例如,物理或人工智能命令)通常無(wú)法發(fā)送給GPU以供執(zhí)行。這種限制存在的原因是因?yàn)镃PU可能相對(duì)較快地要求這些計(jì)算命令所執(zhí)行的操作的結(jié)果。然而,由于將工作分派給當(dāng)前系統(tǒng)中的GPU的高開銷以及這些命令可能不得不排隊(duì)等待有待被首先執(zhí)行的其它先前發(fā)布的命令這一事實(shí),因此將計(jì)算命令發(fā)送至GPU所引致的等待時(shí)間經(jīng)常是不可接受的。
      [0009]考慮到傳統(tǒng)GPU可能未能高效執(zhí)行一些計(jì)算命令,命令必須隨后在CPU內(nèi)執(zhí)行。必須在CPU上執(zhí)行命令使得CPU上的處理負(fù)擔(dān)增加,并且可能妨礙總體系統(tǒng)性能。
      [0010]雖然GPU為計(jì)算卸載提供絕佳機(jī)會(huì),但是傳統(tǒng)GPU可能并不適于一些多處理器環(huán)境中高效操作所期望的系統(tǒng)軟件驅(qū)動(dòng)的進(jìn)程管理。這些限制可能產(chǎn)生若干問(wèn)題。
      [0011]例如,由于無(wú)法有效識(shí)別和/搶占進(jìn)程,因此流氓進(jìn)程可能持續(xù)任意量的時(shí)間占據(jù)GPU硬件。在其它情況下,上下文切斷硬件的能力嚴(yán)重受到約束一在非常粗的粒度下并且僅在程序執(zhí)行中非常有限的一組點(diǎn)處發(fā)生。這種約束存在的原因是因?yàn)楸4姹匦璧捏w系結(jié)構(gòu)狀態(tài)和微體系結(jié)構(gòu)狀態(tài)以恢復(fù)并且繼續(xù)進(jìn)程不受支持。缺少對(duì)精確異常的支持使得無(wú)法上下文切斷錯(cuò)誤作業(yè)并且在稍后點(diǎn)處恢復(fù),從而導(dǎo)致更低的硬件使用率,因?yàn)殄e(cuò)誤線程占據(jù)硬件資源并且在錯(cuò)誤處理期間閑置。
      [0012]在計(jì)算機(jī)系統(tǒng)內(nèi),仲裁發(fā)生在兩個(gè)不同級(jí)別上。一個(gè)級(jí)別涉及在GPU計(jì)算管線前端處正在驅(qū)動(dòng)的是什么作業(yè)。另一級(jí)別涉及共享資源的利用率。由于存在同時(shí)執(zhí)行的多個(gè)任務(wù),因此必須對(duì)這些任務(wù)進(jìn)行優(yōu)先級(jí)排序。因此,要求決策以確定將如何利用共享資源。例如,將如何在任務(wù)到達(dá)分派管線的開始處并且行進(jìn)至著色器核心時(shí)對(duì)它們進(jìn)行優(yōu)先級(jí)排序。
      [0013]概述
      [0014]因此,需要解決仲裁策略的改進(jìn)仲裁方法和系統(tǒng),其中系統(tǒng)具有多個(gè)計(jì)算管線。
      [0015]雖然GPU、加速處理單元(APU)以及通用圖形處理單元(GPGPU)是本領(lǐng)域中的常用術(shù)語(yǔ),但是術(shù)語(yǔ)“加速處理設(shè)備(APD) ”被認(rèn)為是一種更廣泛的表述。例如,Aro是指相對(duì)于諸如常規(guī)CPU、常規(guī)GPU和/或它們的組合等資源以加速的方式執(zhí)行與加速圖形處理任務(wù)、數(shù)據(jù)并行任務(wù)或嵌套數(shù)據(jù)并行任務(wù)相關(guān)聯(lián)的那些功能和計(jì)算的任何協(xié)同操作的硬件和/或軟件集合。
      [0016]本發(fā)明的一個(gè)實(shí)施方案提供一種在包括計(jì)算管線的APD內(nèi)確定優(yōu)先級(jí)的方法。所述方法包括根據(jù)預(yù)定標(biāo)準(zhǔn)從所述計(jì)算管線中的每個(gè)內(nèi)的計(jì)算管線處理隊(duì)列中選擇第一隊(duì)列和第二隊(duì)列,并且根據(jù)優(yōu)先級(jí)標(biāo)準(zhǔn)選擇所述第一隊(duì)列和所述第二隊(duì)列中的一個(gè)以進(jìn)行處理。處理所述選定隊(duì)列,直至?xí)r間量子流逝或者具有更高優(yōu)先級(jí)的隊(duì)列變得可用。
      [0017]本發(fā)明的進(jìn)一步特征和優(yōu)點(diǎn)以及本發(fā)明的各實(shí)施方案的結(jié)構(gòu)和操作在下文中參照附圖詳細(xì)描述。應(yīng)當(dāng)注意,本發(fā)明不限于本文所描述的這些特定實(shí)施方案。本文呈現(xiàn)此類實(shí)施方案僅用于說(shuō)明目的?;诒疚乃慕虒?dǎo)內(nèi)容,另外的實(shí)施方案對(duì)于相關(guān)領(lǐng)域的技術(shù)人員而言將是顯而易見(jiàn)的。
      [0018]附圖簡(jiǎn)述
      [0019]附圖并入本文并且構(gòu)成本說(shuō)明書的一部分,圖解了本發(fā)明并且與說(shuō)明書一起進(jìn)一步用來(lái)解釋本發(fā)明的原理并使相關(guān)領(lǐng)域的技術(shù)人員能夠?qū)嵺`和使用本發(fā)明。本發(fā)明的各實(shí)施方案參照附圖在下文中進(jìn)行描述,其中在全文中,類似參考標(biāo)號(hào)用于指代類似元素。
      [0020]圖1A是根據(jù)本發(fā)明的實(shí)施方案的一種處理系統(tǒng)的說(shuō)明性框圖;
      [0021 ] 圖1B是圖1A所示APD的說(shuō)明性框圖圖示;
      [0022]圖2是圖1B的APD的更詳細(xì)的框圖圖示;
      [0023]圖3是圖2所示計(jì)算管線的更詳細(xì)的框圖圖示;
      [0024]圖4是根據(jù)本發(fā)明的實(shí)施方案的硬件描述符隊(duì)列的圖示;
      [0025]圖5是實(shí)踐本發(fā)明的實(shí)施方案的示例性方法的流程圖;[0026]圖6是根據(jù)本發(fā)明的實(shí)施方案的示例性方法的圖示;并且
      [0027]圖7是根據(jù)本發(fā)明的實(shí)施方案的示例性方法的其它方面的圖示。
      [0028]詳述
      [0029]在以下詳細(xì)描述中,提及“一個(gè)實(shí)施方案”、“實(shí)施方案”、“示例實(shí)施方案”等等表明所描述的實(shí)施方案可包括某一特定特征、結(jié)構(gòu)或特性,但是每個(gè)實(shí)施方案可能不一定包括該特定特征、結(jié)構(gòu)或特性。此外,此類措詞不一定是指同一實(shí)施方案。此外,當(dāng)結(jié)合一個(gè)實(shí)施方案來(lái)描述某一特定特征、結(jié)構(gòu)或特性時(shí),應(yīng)當(dāng)認(rèn)為,無(wú)論是否明確描述,使得此類特征、結(jié)構(gòu)或者特性結(jié)合其它實(shí)施方案起作用是在本領(lǐng)域的技術(shù)人員知識(shí)范圍內(nèi)的。
      [0030]術(shù)語(yǔ)“本發(fā)明的實(shí)施方案”并不要求本發(fā)明的所有實(shí)施方案都包括所論述的特征、優(yōu)點(diǎn)或操作模式。在不背離本發(fā)明的范圍的情況下可設(shè)想出替代實(shí)施方案,并且本發(fā)明的眾所周知的元素可能并未詳細(xì)描述或者可能被省略,以免混淆本發(fā)明的相關(guān)細(xì)節(jié)。另外,本文所使用的術(shù)語(yǔ)僅用于描述特定實(shí)施方案的目的,而并不意在限制本發(fā)明。例如,如在本文所使用的,單數(shù)形式“一個(gè)”和“所述”意在還包括復(fù)數(shù)形式,除非上下文另外清楚表明。還應(yīng)理解,當(dāng)在本文中使用時(shí),術(shù)語(yǔ)“包括(comprises) ”、“包括(comprising) ”、“包括(includes) ”和/或“包括(including) ”指明存在所述特征、整數(shù)、步驟、操作、元件和/或部件,但并不排除存在或者增添一個(gè)或多個(gè)其它特征、整數(shù)、步驟、操作、元件、部件和/或它們的組合。
      [0031]圖1A是包括CPU102和APD104的統(tǒng)一計(jì)算系統(tǒng)100的示例性圖示。CPU102可以包括一個(gè)或多個(gè)單核或多核CPU。在本發(fā)明的一個(gè)實(shí)施方案中,系統(tǒng)100形成在單個(gè)硅裸片或硅封裝上,從而組合CPU102與APD104以提供統(tǒng)一的編程和執(zhí)行環(huán)境。這種環(huán)境使得APD104能夠與CPU102 —樣流暢地用于一些編程任務(wù)。然而,本發(fā)明不絕對(duì)要求CPU102和APD104形成在單個(gè)硅裸片上。在一些實(shí)施方案中,它們可能單獨(dú)形成并且安裝在相同或不同的基片上。
      [0032]在一個(gè)實(shí)施例中,系統(tǒng)100還包括存儲(chǔ)器106、操作系統(tǒng)(OS) 108以及通信基礎(chǔ)設(shè)施109。0S108和通信基礎(chǔ)設(shè)施109在下文中更詳細(xì)地論述。
      [0033]系統(tǒng)100還包括了內(nèi)核模式驅(qū)動(dòng)器(KMD) 110、軟件調(diào)度器(SWS) 112,以及存儲(chǔ)器管理單元116,如輸入/輸出存儲(chǔ)器管理單元(IOMMU)。系統(tǒng)100的部件可以實(shí)現(xiàn)為硬件、固件、軟件或它們的任何組合。本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)了解,系統(tǒng)100可以包括除了圖1A所示實(shí)施方案中所示部件之外或不同于所示部件的一個(gè)或多個(gè)軟件、硬件以及固件部件。
      [0034]在一個(gè)實(shí)施例中,驅(qū)動(dòng)器(如KMD110)通常通過(guò)硬件連接到其上的計(jì)算機(jī)總線或通信子系統(tǒng)與設(shè)備進(jìn)行通信。當(dāng)調(diào)用程序調(diào)用驅(qū)動(dòng)器中例程時(shí),驅(qū)動(dòng)器向設(shè)備發(fā)布命令。一旦設(shè)備向驅(qū)動(dòng)器發(fā)送回?cái)?shù)據(jù),驅(qū)動(dòng)器可調(diào)用原始調(diào)用程序中的例程。在一個(gè)實(shí)施例中,驅(qū)動(dòng)器是依賴于硬件的并且是操作系統(tǒng)特定的。它們通常提供任何必需異步的時(shí)間依賴硬件接口所要求的中斷處理。設(shè)備驅(qū)動(dòng)器、尤其在現(xiàn)代Windows平臺(tái)上可以內(nèi)核模式(第O級(jí))或以用戶模式(第3級(jí))運(yùn)行。
      [0035]以用戶模式運(yùn)行驅(qū)動(dòng)器的一個(gè)益處是穩(wěn)定性提高,因?yàn)榫帉懽玖拥挠脩裟J皆O(shè)備驅(qū)動(dòng)器不可能通過(guò)重寫內(nèi)核存儲(chǔ)器使系統(tǒng)崩潰。另一方面,用戶/內(nèi)核模式翻譯通常強(qiáng)加相當(dāng)大的性能開銷,從而抑制用戶模式驅(qū)動(dòng)器的低等待時(shí)間和高吞吐量要求。用戶模塊僅可通過(guò)使用系統(tǒng)調(diào)用來(lái)訪問(wèn)內(nèi)核空間。像UNIX shell或其它基于圖形用戶接口(⑶I)的應(yīng)用等終端用戶程序是用戶空間的一部分。這些應(yīng)用通過(guò)內(nèi)核支持的功能與硬件交互。
      [0036]CPU102可以包括(未示出)控制處理器、現(xiàn)場(chǎng)可編程門陣列(FPGA)、專用集成電路(ASIC)或數(shù)字信號(hào)處理器(DSP)中的一個(gè)或多個(gè)。CPU102例如執(zhí)行控制計(jì)算系統(tǒng)100的操作的控制邏輯,包括0S108、KMD110、SWS112以及應(yīng)用111。在此說(shuō)明性實(shí)施方案中,根據(jù)一個(gè)實(shí)施方案,CPU102發(fā)起并且控制應(yīng)用111的執(zhí)行,例如,通過(guò)在CPU102和諸如APD104等其它處理資源上分發(fā)與這個(gè)應(yīng)用相關(guān)聯(lián)的處理。
      [0037]除了其它之外,APD104執(zhí)行用于選定功能(如圖形操作和可能(例如)尤其適于并行處理的其它操作)的命令和程序。通常,APD104常??梢杂糜趫?zhí)行圖形管線操作,如像素操作、幾何計(jì)算以及為顯示器渲染圖像。在本發(fā)明的各種實(shí)施方案中,APD104還可基于從CPU102接收到的命令或指令來(lái)執(zhí)行計(jì)算處理操作。
      [0038]例如,命令可以被認(rèn)為是沒(méi)有定義在ISA中的特殊指令,并且通常由來(lái)自給定ISA或獨(dú)特硬件的一組指令完成。命令可以由特殊處理器(如分派處理器、CP或網(wǎng)絡(luò)控制器)來(lái)執(zhí)行。另一方面,指令可以被認(rèn)為是例如在計(jì)算機(jī)體系結(jié)構(gòu)內(nèi)的處理器的單個(gè)操作。在一個(gè)實(shí)施例中,當(dāng)使用兩組ISA時(shí),一些指令被用于執(zhí)行X86程序,并且一些指令被用于執(zhí)行APU/APD計(jì)算單元上的內(nèi)核。
      [0039]在一個(gè)說(shuō)明性實(shí)施方案中,CPU102向APD104發(fā)送選定命令。這些選定命令可以包括圖形命令和適于并行執(zhí)行的其它命令。這些選定命令(還可包括計(jì)算處理命令)可以基本獨(dú)立于CPU102執(zhí)行。
      [0040]APD104可以包括其自己的計(jì)算單元(未示出),諸如但不限于一個(gè)或多個(gè)單指令多數(shù)據(jù)(SMD)處理核心。如本文中提及,SMD是數(shù)學(xué)管線或編程模型,其中內(nèi)核在多個(gè)處理元件上并發(fā)執(zhí)行,每個(gè)處理元件具有其自己的數(shù)據(jù)和共享程序計(jì)數(shù)器。所有處理元件執(zhí)行完全相同的指令集。使用預(yù)測(cè)使工作項(xiàng)能夠參與或不參與每個(gè)所發(fā)布的命令。
      [0041 ] 在一個(gè)實(shí)施例中,每個(gè)APD104計(jì)算單元可以包括一個(gè)或多個(gè)標(biāo)量和/或矢量浮點(diǎn)單元和/或算術(shù)邏輯單元(ALU)。APD計(jì)算單元還可以包括專用處理單元(未示出),如平方根倒數(shù)單元和正弦/余弦單元。在一個(gè)實(shí)施例中,Aro計(jì)算單元在本文中統(tǒng)稱著色器核心 122。
      [0042]通常,具有一個(gè)或多個(gè)SMD使得APD104理想適于執(zhí)行數(shù)據(jù)并行任務(wù),如在圖形處理中常見(jiàn)的任務(wù)。
      [0043]諸如像素處理等一些圖形管線操作以及其它并行計(jì)算操作可能要求對(duì)輸入數(shù)據(jù)元素流或集合執(zhí)行同一命令流或計(jì)算內(nèi)核。同一計(jì)算內(nèi)核的相應(yīng)實(shí)例化可以在著色器核心122中的多個(gè)計(jì)算單元上并發(fā)執(zhí)行,以便并行處理這些數(shù)據(jù)元素。如本文中提及,例如,計(jì)算內(nèi)核是包含程序中聲明并且在APU/AH)計(jì)算單元上執(zhí)行的指令的函數(shù)。這個(gè)函數(shù)也被稱為內(nèi)核、著色器、著色器程序或程序。
      [0044]在一個(gè)說(shuō)明性實(shí)施方案中,每個(gè)計(jì)算單元(例如,SIMD處理核心)可以執(zhí)行特定工作項(xiàng)的相應(yīng)實(shí)例化以便處理輸入數(shù)據(jù)。工作項(xiàng)是由命令在設(shè)備上調(diào)用的并行內(nèi)核執(zhí)行集合中的一個(gè)。工作項(xiàng)可以作為在計(jì)算單元上執(zhí)行的工作組的一部分由一個(gè)或多個(gè)處理元件執(zhí)行。工作項(xiàng)也可以稱為線程、通道(lane)或?qū)嵗?br> [0045]工作項(xiàng)在全局ID和本地ID方面與集合內(nèi)的其它執(zhí)行不同。在一個(gè)實(shí)施例中,工作組中同時(shí)一起在單個(gè)SMD引擎上執(zhí)行的工作項(xiàng)子集可被稱為波前136。波前寬度是硬件SIMD引擎的特性如本文中提及,工作組是在單個(gè)計(jì)算單元上執(zhí)行的相關(guān)工作項(xiàng)的集合。組中的工作項(xiàng)執(zhí)行同一內(nèi)核并且共享本地存儲(chǔ)器和工作組隔離。工作組還可以稱為線程組或線程塊。
      [0046]來(lái)自工作組的所有波前在相同SMD引擎上進(jìn)行處理。波前中的指令一次發(fā)布一個(gè),并且當(dāng)所有工作項(xiàng)都遵循相同控制流程時(shí),每個(gè)工作項(xiàng)均執(zhí)行同一程序。執(zhí)行掩碼和工作項(xiàng)預(yù)測(cè)用于在波前內(nèi)實(shí)現(xiàn)發(fā)散控制流程,其中每個(gè)單獨(dú)工作項(xiàng)實(shí)際可以占有通過(guò)核心的唯一代碼路徑。當(dāng)工作項(xiàng)的全集在波前開始時(shí)間時(shí)不可用時(shí),可以處理部分已填充的波前。波前也可稱為線程束(warp)、矢量或線程。
      [0047]對(duì)于波前,命令可能一次發(fā)布一個(gè)。當(dāng)所有工作項(xiàng)都遵循同一控制流程時(shí),每個(gè)工作項(xiàng)均可執(zhí)行同一程序。在一個(gè)實(shí)施例中,使用執(zhí)行掩碼和工作項(xiàng)預(yù)測(cè)來(lái)實(shí)現(xiàn)發(fā)散控制流程,其中每個(gè)單獨(dú)工作項(xiàng)可以實(shí)際占有通過(guò)內(nèi)核驅(qū)動(dòng)器的唯一代碼路徑。當(dāng)工作項(xiàng)的全集在開始時(shí)間時(shí)不可用時(shí),可以處理部分波前。例如,著色器核心122可以同時(shí)執(zhí)行預(yù)定數(shù)量的波前136,每個(gè)波前136包括預(yù)定數(shù)量的工作項(xiàng)。
      [0048]在系統(tǒng)100內(nèi),APD104包括其自己的存儲(chǔ)器,如圖形存儲(chǔ)器130。圖形存儲(chǔ)器130提供用于在APD104中的計(jì)算過(guò)程中使用的本地存儲(chǔ)器。著色器核心122內(nèi)的單獨(dú)計(jì)算單元(未示出)可以具有它們自己的本地?cái)?shù)據(jù)存儲(chǔ)器(未示出)。在一個(gè)實(shí)施方案中,APD104包括對(duì)本地圖形存儲(chǔ)器130的存取以及對(duì)存儲(chǔ)器106的存取。在另一實(shí)施方案中,APD104可以包括對(duì)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)或直接附接到APD104上并且與存儲(chǔ)器106分開的其它此類存儲(chǔ)器(未示出)的存取。
      [0049]所示實(shí)施例中,APD104還包括一個(gè)或(η)個(gè)命令處理器(CP) 124。CP124控制APD104內(nèi)的處理。CP124還從存儲(chǔ)器106中的命令緩沖器125檢索有待執(zhí)行的命令并且協(xié)調(diào)這些命令在APD104上的執(zhí)行。
      [0050]在一個(gè)實(shí)施例中,CPU102將基于應(yīng)用111的命令輸入到合適命令緩沖器125中。如本文中提及,應(yīng)用是將在CPU和APD內(nèi)的計(jì)算單元上執(zhí)行的程序部分的組合。
      [0051]對(duì)于被調(diào)度用于在APD104上執(zhí)行的每個(gè)進(jìn)程,可以維護(hù)多個(gè)命令緩沖器125。
      [0052]CP124可以在硬件、固件、軟件或它們的組合中實(shí)現(xiàn)。在一個(gè)實(shí)施方案中,CP124被實(shí)現(xiàn)為具有微代碼的精簡(jiǎn)指令集計(jì)算機(jī)(RISC)引擎以實(shí)現(xiàn)包括調(diào)度邏輯的邏輯。
      [0053]APD104還包括一個(gè)或(η)個(gè)分派控制器(DC) 126。在本申請(qǐng)中,術(shù)語(yǔ)分派是指由DC執(zhí)行的命令,所述分派控制器使用上下文狀態(tài)來(lái)發(fā)起用于一組計(jì)算單元上的一組工作組的內(nèi)核的執(zhí)行的開始。DC126包括用于發(fā)起著色器核心122中的工作組的邏輯。在一些實(shí)施方案中,DC126可以實(shí)現(xiàn)為CP124的一部分。
      [0054]系統(tǒng)100還包括用于從運(yùn)行列表150選擇進(jìn)程以供在APD104上執(zhí)行的硬件調(diào)度器(HWS) 128。HWS128可以使用循環(huán)方法、優(yōu)先級(jí)或基于其它調(diào)度策略從運(yùn)行列表150選擇進(jìn)程。例如,優(yōu)先級(jí)可以動(dòng)態(tài)地確定。HWS128還可以包括管理運(yùn)行列表150的功能性,例如,通過(guò)添加新的進(jìn)程并且通過(guò)從運(yùn)行列表150刪除現(xiàn)有進(jìn)程。HWS128的運(yùn)行列表管理邏輯有時(shí)稱為運(yùn)行列表控制器(RLC)。
      [0055]在本發(fā)明的各實(shí)施方案中,當(dāng)HWS128發(fā)起對(duì)來(lái)自RLC150的進(jìn)程的執(zhí)行時(shí),CP124開始檢索并且執(zhí)行來(lái)自對(duì)應(yīng)命令緩沖器125的命令。在一些情況下,CP124可以生成有待在APD104內(nèi)執(zhí)行的一個(gè)或多個(gè)命令,所述命令與從CPU102接收到的命令對(duì)應(yīng)。在一個(gè)實(shí)施方案中,CP124與其它部件一起以提高或最大化APD104和/或系統(tǒng)100資源的利用率的方式來(lái)實(shí)現(xiàn)APD104上的命令的優(yōu)先級(jí)排序和調(diào)度。
      [0056]APD104可以訪問(wèn)或者可以包括中斷發(fā)生器146。中斷發(fā)生器146可以由APD104配置成當(dāng)APD104遇到諸如頁(yè)面錯(cuò)誤之類的中斷事件時(shí)中斷0S108。例如,APD104可以依賴于10MMU116內(nèi)的中斷發(fā)生邏輯來(lái)形成上述頁(yè)面錯(cuò)誤中斷。
      [0057]APD104還可以包括搶占和上下文切換邏輯120,以便搶占當(dāng)前正在著色器核心122內(nèi)運(yùn)行的進(jìn)程。例如,上下文切換邏輯120包括停止進(jìn)程并保存其當(dāng)前狀態(tài)(例如,著色器核心122狀態(tài)和CP124狀態(tài))的功能性。
      [0058]如本文中提及,術(shù)語(yǔ)狀態(tài)可以包括初始狀態(tài)、中間狀態(tài)以及最終狀態(tài)。初始狀態(tài)是機(jī)器根據(jù)程序處理輸入數(shù)據(jù)集合以形成輸出數(shù)據(jù)集合的起始點(diǎn)。存在一種中間狀態(tài),例如,需要在若干點(diǎn)處對(duì)這種中間狀態(tài)進(jìn)行存儲(chǔ)以使得處理向前進(jìn)展。有時(shí)存儲(chǔ)這種中間狀態(tài)是為了允許當(dāng)被某一其它進(jìn)程中斷時(shí)在稍后時(shí)間繼續(xù)執(zhí)行。還存在一種最終狀態(tài),可以記錄這種最終狀態(tài)作為輸出數(shù)據(jù)集合的一部分。
      [0059]搶占和上下文切換邏輯120還可以包括將另一進(jìn)程上下文切換到APD104中的邏輯。將另一進(jìn)程上下文切換成在APD104上運(yùn)行的功能性可以包括例如通過(guò)CP124和DC126將進(jìn)程實(shí)例化以在APD104上運(yùn)行,恢復(fù)用于此進(jìn)程的任何先前所保存的狀態(tài),并且開始它的執(zhí)行。
      [0060]存儲(chǔ)器106可以包括非永久性存儲(chǔ)器,如DRAM (未不出)。存儲(chǔ)器106可以在應(yīng)用或其它處理邏輯的部分的執(zhí)行過(guò)程中存儲(chǔ)(例如)處理邏輯指令、常量值以及變量值。例如,在一個(gè)實(shí)施方案中,用于在CPU102上執(zhí)行一個(gè)或多個(gè)操作的控制邏輯的部分在所述操作的各自部分由CPU102執(zhí)行的過(guò)程中可以駐存在存儲(chǔ)器106內(nèi)。如在本文所使用,術(shù)語(yǔ)“處理邏輯”或“邏輯”是指控制流程命令、用于執(zhí)行計(jì)算的命令以及用于對(duì)資源進(jìn)行相關(guān)訪問(wèn)的命令。
      [0061]在執(zhí)行過(guò)程中,相應(yīng)應(yīng)用、OS功能、處理邏輯命令以及系統(tǒng)軟件可以駐存在存儲(chǔ)器106中。對(duì)0S108重要的控制邏輯命令在執(zhí)行過(guò)程中通常將會(huì)駐存在存儲(chǔ)器106中。在系統(tǒng)100執(zhí)行過(guò)程中,包括例如內(nèi)核模式驅(qū)動(dòng)器110和軟件調(diào)度器112的其它軟件命令也可以駐存在存儲(chǔ)器106中。
      [0062]在此實(shí)施例中,存儲(chǔ)器106包括被CPU102用來(lái)向APD104發(fā)送命令的命令緩沖器125。存儲(chǔ)器106還包含進(jìn)程列表和處理信息(例如,活動(dòng)列表152和進(jìn)程控制塊154)。這些列表以及信息由在CPU102上執(zhí)行的調(diào)度軟件用來(lái)向APD104和/或相關(guān)調(diào)度硬件傳遞調(diào)度信息。對(duì)存儲(chǔ)器106的存取可以由耦接到存儲(chǔ)器106上的存儲(chǔ)器控制器140管理。例如,來(lái)自CPU102或來(lái)自其它設(shè)備的對(duì)從存儲(chǔ)器106讀出或?qū)懭氪鎯?chǔ)器106的請(qǐng)求由存儲(chǔ)器控制器140管理。
      [0063]返回系統(tǒng)100的其它方面,IOMMUl 16是多上下文存儲(chǔ)器管理單元。
      [0064]如本文中所用,上下文(有時(shí)稱為進(jìn)程)可被認(rèn)為是內(nèi)核在其中執(zhí)行的環(huán)境以及其中限定同步和存儲(chǔ)器管理的域。上下文包括一組設(shè)備、這些設(shè)備可存取的存儲(chǔ)器、對(duì)應(yīng)存儲(chǔ)器性質(zhì)以及用于調(diào)度內(nèi)核或操作在存儲(chǔ)器對(duì)象上的執(zhí)行的一個(gè)或多個(gè)命令隊(duì)列。另一方面,可以認(rèn)為進(jìn)程是程序的執(zhí)行,因?yàn)閼?yīng)用將創(chuàng)建在計(jì)算機(jī)上運(yùn)行的進(jìn)程。OS可以形成數(shù)據(jù)記錄和虛擬存儲(chǔ)器地址空間以供程序執(zhí)行。程序執(zhí)行所用存儲(chǔ)器和當(dāng)前狀態(tài)可被稱作進(jìn)程。OS會(huì)調(diào)度任務(wù)以用于使進(jìn)程在存儲(chǔ)器上從初始狀態(tài)操作到最終狀態(tài)。
      [0065]返回參考圖1A所示的實(shí)施例,IOMMUl 16包括用于執(zhí)行虛擬地址到物理地址翻譯以用于包括APD104的設(shè)備對(duì)存儲(chǔ)器頁(yè)面的存取的邏輯。10MMU116還可以包括用于例如當(dāng)設(shè)備(如APD104)所進(jìn)行的頁(yè)面存取導(dǎo)致頁(yè)面錯(cuò)誤時(shí)生成中斷的邏輯。10MMU116還可以包括或者有權(quán)存取翻譯后備緩沖器(TLB)118。例如,TLB118可以實(shí)現(xiàn)在內(nèi)容可尋址存儲(chǔ)器(CAM)中以針對(duì)APD104對(duì)存儲(chǔ)器106中的數(shù)據(jù)所作出的請(qǐng)求來(lái)加速邏輯(即,虛擬)存儲(chǔ)器地址到物理存儲(chǔ)器地址的翻譯。
      [0066]在所示實(shí)施例中,通信基礎(chǔ)設(shè)施109根據(jù)需要互連系統(tǒng)100的部件。通信基礎(chǔ)設(shè)施109可以包括(未示出)外圍部件互連(PCI)總線、擴(kuò)展PCI (PC1-E)總線、高級(jí)微控制器總線體系結(jié)構(gòu)(AMBA)總線、加速圖形端口(AGP)或此類通信基礎(chǔ)設(shè)施中的一種或多種。通信基礎(chǔ)設(shè)施109還可以包括以太網(wǎng)或類似網(wǎng)絡(luò),或滿足應(yīng)用的數(shù)據(jù)傳輸速率要求的任何合適物理通信基礎(chǔ)設(shè)施。通信基礎(chǔ)設(shè)施109包括互連包括計(jì)算系統(tǒng)100的部件等各部件的功能性。
      [0067]在此實(shí)施例中,0S108包括用于管理系統(tǒng)100的硬件部件并且提供常見(jiàn)服務(wù)的功能性。在各實(shí)施方案中,0S108可以在CPU102上執(zhí)行并且提供常見(jiàn)服務(wù)。這些常見(jiàn)服務(wù)可以包括例如用于在CPU102內(nèi)執(zhí)行的調(diào)度應(yīng)用、故障管理、中斷服務(wù)以及處理其它應(yīng)用的輸入和輸出。
      [0068]在一些實(shí)施方案中,基于中斷控制器(如中斷控制器148)所生成的中斷,0S108調(diào)用適當(dāng)?shù)闹袛嗵幚砝?。例如,一旦檢測(cè)到頁(yè)面錯(cuò)誤中斷,0S108就可以調(diào)用中斷處理器來(lái)發(fā)起將相關(guān)頁(yè)面加載到存儲(chǔ)器106中并且更新對(duì)應(yīng)頁(yè)表。
      [0069]0S108還可包括通過(guò)確保對(duì)硬件部件的訪問(wèn)通過(guò)OS管理的內(nèi)核功能性作為中介從而保護(hù)系統(tǒng)100的功能性。實(shí)際上,0S108確保應(yīng)用(如應(yīng)用111)在用戶空間中在CPU102上運(yùn)行。0S108還確保應(yīng)用111調(diào)用OS提供的內(nèi)核功能性來(lái)訪問(wèn)硬件和/或輸入/輸出功能性。
      [0070]例如,應(yīng)用111包括各種程序或命令以執(zhí)行還在CPU102上執(zhí)行的用戶計(jì)算。統(tǒng)一概念可以允許CPU102無(wú)縫發(fā)送用于在APD104上處理的選定命令。在這種統(tǒng)一 APD/CPU構(gòu)架下,來(lái)自應(yīng)用111的輸入/輸出請(qǐng)求將通過(guò)對(duì)應(yīng)OS功能性進(jìn)行處理。
      [0071]在一個(gè)實(shí)施例中,KMDl 10實(shí)現(xiàn)API,CPU102或在CPU102上執(zhí)行的應(yīng)用或其它邏輯可以通過(guò)所述API調(diào)用APD104功能性。例如,KMDllO可使來(lái)自CPU102的命令入隊(duì)到命令緩沖器125中,APD104隨后將從命令緩沖器125檢索命令。另外,KMDllO可以與SWS112 —起執(zhí)行對(duì)有待在APD104上執(zhí)行的進(jìn)程的調(diào)度。SWS112例如可以包括用于維護(hù)有待在APD上執(zhí)行的進(jìn)程的優(yōu)先列表的邏輯。
      [0072]在本發(fā)明的其它實(shí)施方案中,在CPU102上執(zhí)行的應(yīng)用在使命令入隊(duì)時(shí)可以完全繞過(guò) KMDl 10。
      [0073]在一些實(shí)施方案中,SWSl 12在存儲(chǔ)器106中維護(hù)有待在APD104上執(zhí)行的進(jìn)程的活動(dòng)列表152。SWS112還選擇活動(dòng)列表152中有待由硬件中的HWS128管理的進(jìn)程子集。與在APD104上運(yùn)行每個(gè)進(jìn)程相關(guān)的信息通過(guò)進(jìn)程控制塊(PCB) 154從CPU102傳遞到APD104。
      [0074]用于應(yīng)用、OS以及系統(tǒng)軟件的處理邏輯可以包括在諸如C之類的編程語(yǔ)言和/或者在諸如Verilog、RTL或網(wǎng)表之類的硬件描述語(yǔ)言中指定的命令,以使得能夠通過(guò)生成掩模作品/光掩模來(lái)最終配置制造過(guò)程,從而產(chǎn)生體現(xiàn)本文所述發(fā)明的各方面的硬件設(shè)備。
      [0075]在閱讀本說(shuō)明書時(shí),本領(lǐng)域的技術(shù)人員將會(huì)理解,計(jì)算系統(tǒng)100可以包括比圖1A中所示更多或更少的部件。例如,計(jì)算系統(tǒng)100可以包括一個(gè)或多個(gè)輸入接口、非易失性存儲(chǔ)裝置、一個(gè)或多個(gè)輸出接口、網(wǎng)絡(luò)接口以及一個(gè)或多個(gè)顯示器或顯示接口。
      [0076]圖1B是示出圖1A所示APD104的更詳細(xì)的圖示的實(shí)施方案。在圖1B中,CP124可以包括CP管線124a、124b以及124c。CP124可以配置成處理被提供作為來(lái)自圖1A所示命令緩沖器125的輸入的命令列表。在圖1B的示例性操作中,CP輸入O (124a)負(fù)責(zé)將命令驅(qū)動(dòng)到圖形管線162中。CP輸入I和2(124b和124c)將命令轉(zhuǎn)發(fā)給計(jì)算管線160。還提供了用于控制HWS128的操作的控制器機(jī)制166。
      [0077]在圖1B中,圖形管線162可以包括一組框,在本文中稱作有序管線164。例如,有序管線164包括頂點(diǎn)組翻譯器(VGT) 164a、原語(yǔ)匯編程序(PA) 164b、掃描轉(zhuǎn)換器(SC) 164c以及著色器輸出、渲染支持單元(SX/RB)176。有序管線164內(nèi)的每個(gè)框可以表示圖形管線162內(nèi)的不同圖形處理階段。有序管線164可為固定功能硬件管線。但是,可以使用將在本發(fā)明的精神和范圍內(nèi)的其它實(shí)現(xiàn)方式。
      [0078]雖然只有少量數(shù)據(jù)可以提供作為到圖形管線162的輸入,但是當(dāng)將這種數(shù)據(jù)提供作為來(lái)自圖形管線162的輸出時(shí),數(shù)據(jù)將被放大。圖形管線162還包括用于通過(guò)對(duì)CP管線124a接收到的工作項(xiàng)組內(nèi)的范圍進(jìn)行計(jì)數(shù)的DC166。通過(guò)DC166提交的計(jì)算工作是與圖形管線162半同步的。
      [0079]計(jì)算管線160包括著色器DC168和170。DC中的每一個(gè)均被配置成對(duì)從CP管線124b和124c接收到的工作組內(nèi)的計(jì)算范圍進(jìn)行計(jì)數(shù)。
      [0080]圖1B所示DC166U68以及170接收輸入范圍,將所述范圍劃分成工作組,并且隨
      后將工作組轉(zhuǎn)發(fā)給著色器核心122。
      [0081]由于圖形管線162通常是固定功能管線,因此難以保存和恢復(fù)它的狀態(tài),并且因此,圖形管線162難以進(jìn)行上下文切換。因此,在大多數(shù)情況下,如本文中論述,上下文切換不涉及圖形進(jìn)程中的上下文切換。著色器核心122中的圖形工作則是例外,它能被上下文切換。
      [0082]著色器核心122可以由圖形管線162和計(jì)算管線160共享。著色器核心122可以是被配置成運(yùn)行波前的通用處理器。
      [0083]在一個(gè)實(shí)施例中,計(jì)算管線160內(nèi)的所有工作都在著色器核心122內(nèi)處理。著色器核心122運(yùn)行可編程軟件代碼,并且包括諸如狀態(tài)數(shù)據(jù)等各種形式的數(shù)據(jù)。然而,計(jì)算管線160不將工作發(fā)送到圖形管線162以進(jìn)行處理。在圖形管線162內(nèi)的工作處理已完成后,通過(guò)渲染支持單元176對(duì)所完成的工作進(jìn)行處理,渲染支持單元176進(jìn)行深度和色彩計(jì)算并且隨后將其最終結(jié)果寫入存儲(chǔ)器130。
      [0084]圖2是圖1B的示例性APD104的更詳細(xì)的框圖圖示。如圖1B所示,APD104包括計(jì)算管線160,所述計(jì)算管線160將輸入I和輸入2提供給著色器核心122。圖2中所示示例性APD包括八個(gè)計(jì)算管線CS管O至CS管7 (CS PO至CS P7)。這種配置被配置成通過(guò)多個(gè)計(jì)算管線處理多個(gè)計(jì)算任務(wù)。APD200內(nèi)的多個(gè)計(jì)算管線有利于實(shí)現(xiàn)計(jì)算工作負(fù)載之間的靈活資源分配。盡管示例性APD200示出八個(gè)計(jì)算管線,但是本領(lǐng)域的普通技術(shù)人員將會(huì)了解,可以使用其它數(shù)量的計(jì)算和圖形輸入。[0085]為了高效地處理來(lái)自多個(gè)計(jì)算輸入的數(shù)據(jù),在計(jì)算管線CS PO至CS P7內(nèi)的管線隊(duì)列之間發(fā)生仲裁,如圖3中更詳細(xì)地示出。更確切地,根據(jù)本發(fā)明的實(shí)施方案的仲裁策略在多個(gè)管線輸入之間分配Aro資源。著色器輸入塊(SPI) 202提供一種用于在計(jì)算管線CS PO至CSP7與圖形管線204之間提交波前的仲裁方案。波分派器206與兩個(gè)交替計(jì)算管線連接,以將波前轉(zhuǎn)發(fā)到著色器核心208。著色器核心208執(zhí)行波前。
      [0086]圖3是圖2所示計(jì)算管線CS PO至CS P7的更詳細(xì)的框圖圖示。這八個(gè)計(jì)算管線參與針對(duì)訪問(wèn)共享著色器核心208的仲裁。每個(gè)計(jì)算管線CS PO至CS P7例如包括硬件隊(duì)列描述符HQD。計(jì)算管線CS PO與HQDO相關(guān)聯(lián),計(jì)算管線CS Pl與HQDl相關(guān)聯(lián)等等,直至CSP7與HQD7相關(guān)聯(lián)。每個(gè)硬件隊(duì)列描述符HQD包括八個(gè)存儲(chǔ)器隊(duì)列的相關(guān)聯(lián)隊(duì)列。如圖4所示,例如,CS PO與隊(duì)列QO至Q7相關(guān)聯(lián)。類似的是,CS Pl與隊(duì)列Q8至Q15相關(guān)聯(lián)等等,直至CS管7與隊(duì)列Q56至Q63相關(guān)聯(lián)。提供CP多線程微處理器引擎ME301和電網(wǎng)DC控制器O至控制器3用來(lái)對(duì)線程組進(jìn)行處理。
      [0087]如上論述,硬件調(diào)度器HWS128被配置成從RLC150中選擇調(diào)度過(guò)的進(jìn)程以在APD上執(zhí)行。例如,HWS128支持基于優(yōu)先級(jí)或基于其它仲裁調(diào)度標(biāo)準(zhǔn)應(yīng)用于RLC150的調(diào)度技術(shù)。另外,KMDllO可以與SWS112—起執(zhí)行對(duì)有待在APD上執(zhí)行的進(jìn)程的調(diào)度。0SSWS112例如可以包括用于維護(hù)通過(guò)仲裁得到的有待在APD200上執(zhí)行的進(jìn)程的優(yōu)先列表的邏輯。
      [0088]在另一個(gè)示例性實(shí)施方案中,每個(gè)管線的計(jì)算管線CS PO至CSP7硬件隊(duì)列描述符HQDO至HQD7之間的仲裁是使用多級(jí)調(diào)度進(jìn)程進(jìn)行解析。在具有多個(gè)計(jì)算輸入的實(shí)現(xiàn)方式中,多級(jí)調(diào)度可以用于控制多級(jí)優(yōu)先級(jí)隊(duì)列間的資源分配,其中每個(gè)計(jì)算輸入與具有類似優(yōu)先級(jí)的作業(yè)相關(guān)聯(lián)。
      [0089]OS可以調(diào)度隊(duì)列QO至Q7以通過(guò)編程硬件隊(duì)列描述符HQDO至HQD7來(lái)由這些計(jì)算管線硬件隊(duì)列描述符處理。八個(gè)硬件隊(duì)列描述符HQD中的任何一個(gè)均可包含活動(dòng)隊(duì)列。與一個(gè)計(jì)算管線相關(guān)聯(lián)的隊(duì)列可為獨(dú)立進(jìn)程或者可以表示進(jìn)程子集的實(shí)現(xiàn)方式。例如,在一個(gè)管線中建立的任何系統(tǒng)可以通過(guò)在共享存儲(chǔ)器中的一個(gè)或多個(gè)(例如,圖1A和圖1B中示出的L2R/W緩存174、圖形存儲(chǔ)器130)中建立的同步來(lái)與來(lái)自其它計(jì)算管線的隊(duì)列或隊(duì)列集合進(jìn)行交互。
      [0090]與每個(gè)隊(duì)列相關(guān)聯(lián)的硬件隊(duì)列描述符HQD可以為OS提供搶占活動(dòng)進(jìn)程以防分派尚未分配任何著色器資源的任何更多工作組的能力。從硬件移除的任何隊(duì)列可以重新調(diào)度以供在稍后時(shí)間繼續(xù)或者如果期望的話由OS終止。
      [0091 ] 硬件隊(duì)列描述符HQDO至HQD7中的每個(gè)可以包括OS分配的存儲(chǔ)器隊(duì)列描述符MQD的存儲(chǔ)器隊(duì)列描述符地址MQDA。OS可以使用MQD來(lái)存儲(chǔ)隊(duì)列的永久狀態(tài)并且將MQDA地址提供給HQD,從而使得硬件可以更新以選擇存儲(chǔ)器隊(duì)列描述符的字段。當(dāng)存儲(chǔ)隊(duì)列描述符與HQD斷開連接時(shí),硬件將在任何搶占期間使用MQD的一部分暫時(shí)存儲(chǔ)必需的持久數(shù)據(jù)。空間子集還可用于OS與HQD之間的同步協(xié)調(diào)。
      [0092]隊(duì)列仲裁
      [0093]圖5是實(shí)踐本發(fā)明的一個(gè)實(shí)施方案的示例性方法的流程圖。在圖5的步驟502中,就緒隊(duì)列和活動(dòng)隊(duì)列是選自用于每個(gè)計(jì)算管線CS PO至CS P7的八個(gè)硬件隊(duì)列描述符隊(duì)列HQDO至HQD7。例如,選擇可由每個(gè)計(jì)算管線并行并且獨(dú)立地執(zhí)行。
      [0094]在本發(fā)明的一個(gè)實(shí)施方案中,對(duì)于每個(gè)波前隊(duì)列分組提供以下寄存器控制:[0095]I).隊(duì)列活動(dòng)(I位),
      [0096]2).隊(duì)列優(yōu)先級(jí)(4 位 O 至 15 — L-H),3),
      [0097]3).量子持續(xù)時(shí)間(5位,以5000時(shí)鐘為單位)
      [0098]4).量子啟用(I位),
      [0099]5).管優(yōu)先級(jí)(2位),以及
      [0100]6).就緒(“就緒”表明隊(duì)列是活動(dòng)的并且(非空或分派管非空)并且隊(duì)列未停止。
      [0101]在步驟504中,選擇被確定為就緒可供處理的具有最高隊(duì)列優(yōu)先級(jí)的隊(duì)列。一旦被選定,例如,隊(duì)列保持選中,直至出現(xiàn)以下情況之一:
      [0102]I).更高優(yōu)先級(jí)隊(duì)列變成就緒,
      [0103]2).量子被啟用,諸如超過(guò)處理持續(xù)時(shí)間并且具有相同優(yōu)先級(jí)的另一隊(duì)列就緒可供處理,
      [0104]3).量子被禁用,并且當(dāng)前隊(duì)列中的波前分組寫入任何其它隊(duì)列優(yōu)先級(jí)寄存器,并且具有相同優(yōu)先級(jí)的另一隊(duì)列就緒,
      [0105]4).當(dāng)前隊(duì)列波前分組搶占來(lái)自計(jì)算管線的隊(duì)列并且調(diào)度例如智能等待特定條件(如定時(shí)器到期),
      [0106]5).當(dāng)前隊(duì)列和計(jì)算管線DC206變空,并且同一計(jì)算管線中的任何其它隊(duì)列就緒,以及
      [0107]6).0S請(qǐng)求當(dāng)前隊(duì)列進(jìn)行搶占。
      [0108]在步驟506處,當(dāng)仲裁器確定更佳隊(duì)列就緒可供處理時(shí),計(jì)算管線頂部的隊(duì)列仲裁器發(fā)送信號(hào)給相應(yīng)CP ME301線程以便停止在下一分組邊界上。如果確定更佳隊(duì)列不可用,那么過(guò)程在步驟508處繼續(xù)。
      [0109]在步驟510處,CP ME301執(zhí)行上下文切換例程,并且發(fā)送信號(hào)給獲取器以停止獲取隊(duì)列數(shù)據(jù),并且發(fā)送信號(hào)給DC以停止向當(dāng)前隊(duì)列分派波前。CP ME301可以存儲(chǔ)相應(yīng)電網(wǎng)DC控制器O至控制器3的重啟線程組id。
      [0110]在步驟512處,切換計(jì)算管線的當(dāng)前持續(xù)狀態(tài)被以預(yù)定義的偏移存儲(chǔ)在相應(yīng)存儲(chǔ)器隊(duì)列描述符MQD中,以有待用于在重啟隊(duì)列前進(jìn)行狀態(tài)預(yù)載??梢圆迦脒M(jìn)程結(jié)束(EOP)圍欄事件,其放置在MQD的管存儲(chǔ)雙字當(dāng)前最終讀出地址的末尾。在所述事件中,隊(duì)列被從硬件中移除,同時(shí)著色器復(fù)合器件中的工作未完成,HQD最終讀出地址將被存儲(chǔ)在MQD中。隨后,低級(jí)驅(qū)動(dòng)器可以通過(guò)將管最終讀出地址的開頭與管最終讀出地址的末尾進(jìn)行比較來(lái)確定隊(duì)列的所有未完成工作何時(shí)已經(jīng)完成,當(dāng)它們匹配時(shí),所有工作已經(jīng)完成。
      [0111]在步驟514處,前一隊(duì)列狀態(tài)被調(diào)度以進(jìn)行保存,并且預(yù)取數(shù)據(jù)被調(diào)度以棄置。CPME可以釋放獲取器以選擇下一隊(duì)列進(jìn)行處理。如果下一隊(duì)列具有第一時(shí)間狀態(tài)位組,那么獲取器將插入來(lái)自MQD的所存儲(chǔ)的永久狀態(tài),隨后是隊(duì)列讀出/寫入指針設(shè)置以用于隊(duì)列獲取。在一個(gè)實(shí)施方案中,預(yù)期切換時(shí)間可為約500時(shí)鐘,直至CP ME開始處理下一隊(duì)列。
      [0112]考慮圖6中示出的以下實(shí)施例,其中T〈n> =時(shí)間,并且η =時(shí)鐘數(shù)量,
      [0113]QA =隊(duì)列活動(dòng),
      [0114]QP=隊(duì)列優(yōu)先級(jí),
      [0115]QE =量子啟用,并且[0116]QD = 5000時(shí)鐘的量子持續(xù)單位對(duì)于單個(gè)計(jì)算管線中的八個(gè)隊(duì)列QO至Q7,時(shí)間垂
      直增加。
      [0117]如圖6所示,對(duì)于每個(gè)優(yōu)先級(jí),計(jì)算管線維護(hù)最后執(zhí)行隊(duì)列記分板。返回到該優(yōu)先級(jí)將處理下一就緒隊(duì)列。如果在優(yōu)先級(jí)中僅一個(gè)隊(duì)列就緒,那么它將繼續(xù)。
      [0118]管可以將隊(duì)列從零到七定序,并且在重置時(shí),前一隊(duì)列將設(shè)置為七,從而得到QO — Q7作為本地排序。如果Q0、Q3、Q7在剛重置后啟用的量子處以隊(duì)列優(yōu)先級(jí)7就緒,那么隊(duì)列將以以下次序Q0、Q3、Q7、Q0等等進(jìn)行處理。如果Q5顯示具有相同隊(duì)列優(yōu)先級(jí)(7),那么它將在下一周期中在Q3后并且在Q7前得到執(zhí)行。
      [0119]如果Ql和Q4在Q5量子期間達(dá)到優(yōu)先級(jí)10,那么Ql搶占Q5,并且系統(tǒng)在在Q4與Ql之間的量子上反復(fù)切換直至隊(duì)列變空或者另一隊(duì)列被調(diào)度以進(jìn)行處理。當(dāng)Ql和Q4變空時(shí),進(jìn)程返回到Q7,因?yàn)镼5先前以優(yōu)先級(jí)7進(jìn)行處理。
      [0120]圖6是根據(jù)本發(fā)明的實(shí)施方案的示例性方法的圖示。在圖6中示出的實(shí)施例中,計(jì)算管線使用兩種主要方法中的一種得到至其它隊(duì)列的管。第一方法是響應(yīng)于時(shí)間量子到期,并且第二方法是向隊(duì)列優(yōu)先級(jí)寄存器進(jìn)行寫入。
      [0121]如上所述,其中時(shí)間量子被啟用并超過(guò)的隊(duì)列將由于具有相同優(yōu)先級(jí)的現(xiàn)有隊(duì)列或具有相同或更高優(yōu)先級(jí)的到達(dá)隊(duì)列而啟用搶占。如果隊(duì)列是僅有的最高優(yōu)先級(jí)隊(duì)列,那么隊(duì)列將會(huì)保持計(jì)算管線的所有權(quán),直到具有相同或更高優(yōu)先級(jí)的隊(duì)列變成就緒。
      [0122]在一個(gè)替代實(shí)施方案中,仲裁事件可以針對(duì)計(jì)算管線的隊(duì)列優(yōu)先級(jí)寄存器的任何寫入產(chǎn)生。這種方法可以使得用戶能夠在啟用管的其它隊(duì)列以取得進(jìn)展之前控制發(fā)布的工作量。另外,這種替代實(shí)施方案可以啟用用于每一 CP ME的特權(quán)隊(duì)列。
      [0123]計(jì)算管線間的仲裁
      [0124]一旦最高優(yōu)先級(jí)隊(duì)列已經(jīng)在每個(gè)計(jì)算管線硬件描述符隊(duì)列中得到解析,下一仲裁點(diǎn)就必須解析來(lái)自具有最高管優(yōu)先級(jí)的計(jì)算管線的哪個(gè)波前將提交給著色器核心以進(jìn)行處理。由于兩個(gè)計(jì)算管線以交替的方式共享公共DC,因此在優(yōu)先級(jí)被確定后,共享電路分配哪個(gè)計(jì)算管線被提交給著色器核心。
      [0125]例如,參與管線可為圖形管線中的任一個(gè)、HP3D任務(wù)(LS、HS、ES、GS、NS、PS)和GFX任務(wù)(LS、HS、ES、GS、VS、PS、CS)以及八個(gè)計(jì)算管線中的四個(gè)。計(jì)算管線可以具有以下管優(yōu)先級(jí)之一:CS_HIGH—高于HP3D,CS_MEDIUM—介于HP3D與GFX之間,以及CS_L0W—低于 GFX。
      [0126]為了解析具有相同管優(yōu)先級(jí)的多個(gè)計(jì)算管線之間的聯(lián)系,例如,可以采用最近最少發(fā)布電路或最近最少使用電路,如圖騰柱式電路。每次選擇管線以向著色器核心發(fā)布任何工作時(shí),管線都將被移動(dòng)到最近最少發(fā)布電路的底部,從而向這個(gè)管線分配管線優(yōu)先級(jí)中的最低優(yōu)先級(jí),直至具有相同優(yōu)先級(jí)的另一管線發(fā)布波前。這種特殊電路將被用于幫助促進(jìn)發(fā)布具有相同優(yōu)先級(jí)的工作組的過(guò)程中的公平性。
      [0127]重置之后,最近最少發(fā)布列表將為PO — P7,其中對(duì)于給定管優(yōu)先級(jí)而言管O最初是最受偏愛(ài)的。
      [0128]圖7是示例性管線仲裁策略的圖示。在從最高優(yōu)先級(jí)到最低優(yōu)先級(jí)的CS HIGH、HP3D、CS MEDIUM、GFX、CS_L0ff五個(gè)優(yōu)先級(jí)中,將會(huì)選擇最佳的優(yōu)先級(jí)。
      [0129]在所述實(shí)施例中,“粗體”管線被認(rèn)為是用于波前發(fā)射并且“粗體且?guī)聞澗€的”管線被選擇用于波前發(fā)射。
      [0130]圖1中示出的表格從左至右示出示例性圖騰柱式布置。在所述實(shí)施例中,計(jì)算管線CS PO至CS P7被表示為Pn,其中η是提供波前的計(jì)算管線并且㈠表示無(wú)=無(wú)工作。H表示一管優(yōu)先級(jí)為高,M—表示管優(yōu)先級(jí)為中,并且L表示一管優(yōu)先級(jí)為低。對(duì)于每個(gè)時(shí)間段,八個(gè)計(jì)算管線中的在DC的計(jì)算管線成對(duì)仲裁后保留下來(lái)的四個(gè)計(jì)算管線以“粗體”示出,并且“粗體且?guī)聞澗€的”計(jì)算管線是管仲裁將從處于競(jìng)爭(zhēng)的6個(gè)管線中選擇出的管。
      [0131]結(jié)論
      [0132]概述以及摘要部分可以闡明如發(fā)明人所構(gòu)想的本發(fā)明的一個(gè)或多個(gè)但非所有的示例性實(shí)施方案,并且因此,并不意圖通過(guò)任何方式對(duì)本發(fā)明和所附權(quán)利要求書進(jìn)行限制。
      [0133]本發(fā)明已在上文中借助示出特定功能和其關(guān)系的實(shí)現(xiàn)的功能構(gòu)建塊來(lái)描述。為了方便描述,本文已對(duì)這些功能構(gòu)建塊的邊界進(jìn)行任意界定。只要合適執(zhí)行特定功能和其關(guān)系,就可界定替代邊界。
      [0134]特定實(shí)施方案的前述描述將會(huì)完全地揭示本發(fā)明的一般性質(zhì),以使他人可以在不背離本發(fā)明的一般概念的情況下通過(guò)應(yīng)用本領(lǐng)域的技術(shù)范圍內(nèi)的知識(shí)來(lái)容易地修改和/或改編此類特定實(shí)施方案以用于各種應(yīng)用。因此,基于本文所呈現(xiàn)的教導(dǎo)內(nèi)容以及指導(dǎo)內(nèi)容,此類改編以及修改意圖在所公開的實(shí)施方案的等同物的范圍內(nèi)。應(yīng)當(dāng)理解,本文的措詞或術(shù)語(yǔ)目的在于說(shuō)明而非限制,因此技術(shù)人員將會(huì)根據(jù)教導(dǎo)內(nèi)容以及指導(dǎo)內(nèi)容來(lái)對(duì)本說(shuō)明書的術(shù)語(yǔ)或措詞進(jìn)行解釋。
      [0135]本發(fā)明的寬度以及范圍不應(yīng)限于上述示例性實(shí)施方案,而應(yīng)僅僅根據(jù)所附權(quán)利要求和它們的等同物來(lái)界定。
      【權(quán)利要求】
      1.一種在包括計(jì)算管線的加速處理設(shè)備(APD)內(nèi)確定優(yōu)先級(jí)的方法,所述方法包括: 根據(jù)預(yù)定標(biāo)準(zhǔn)從所述計(jì)算管線中的每個(gè)內(nèi)的計(jì)算管線處理隊(duì)列中選擇第一隊(duì)列和第二隊(duì)列;以及 根據(jù)優(yōu)先級(jí)標(biāo)準(zhǔn)來(lái)選擇所述第一隊(duì)列和所述第二隊(duì)列中的一個(gè)以進(jìn)行處理; 其中對(duì)所述選定隊(duì)列進(jìn)行處理,直至來(lái)自包括以下各項(xiàng)的組中的至少一個(gè)變得可用:(i)時(shí)間量子流逝;以及(ii)具有更高優(yōu)先級(jí)的隊(duì)列。
      2.如權(quán)利要求1所述的方法,其中處理所述選定隊(duì)列包括搶占所述選定隊(duì)列。
      3.如權(quán)利要求2所述的方法,其中搶占所述選定隊(duì)列包括對(duì)所述選定隊(duì)列執(zhí)行上下文切換操作。
      4.如權(quán)利要求2所述的方法,其還包括在所述搶占后發(fā)起對(duì)第二隊(duì)列的處理。
      5.如權(quán)利要求1所述的方法,其還包括確定所述計(jì)算管線中的每個(gè)的相對(duì)優(yōu)先級(jí)。
      6.如權(quán)利要求5所述的方法,其中所述計(jì)算管線中的每個(gè)的所述相對(duì)優(yōu)先級(jí)是使用最近最少發(fā)布電路來(lái)確定。
      7.如權(quán)利要求6所述的方法,其中所述最近最少發(fā)布電路是圖騰柱式電路。
      8.如權(quán)利要求6所述的方法,其還包括將具有最低優(yōu)先級(jí)的所述計(jì)算管線指派至所述電路的底部。
      9.如權(quán)利要求1所述的方法,其中所述第一隊(duì)列是就緒隊(duì)列。
      10.如權(quán)利要求1所述的方法,其中所述第二隊(duì)列是活動(dòng)隊(duì)列。
      11.如權(quán)利要求1所述的方法,其中所述預(yù)定標(biāo)準(zhǔn)包括(i)隊(duì)列優(yōu)先級(jí),(?)隊(duì)列量子持續(xù)時(shí)間,以及(iii)隊(duì)列就緒控制。
      12.—種系統(tǒng),所述系統(tǒng)包括: 存儲(chǔ)器;以及 加速處理設(shè)備(APD),所述APD包括耦接至所述存儲(chǔ)器的計(jì)算管線,其中所述計(jì)算管線被配置成基于存儲(chǔ)在存儲(chǔ)器中的指令執(zhí)行以下操作: 根據(jù)預(yù)定標(biāo)準(zhǔn)從所述計(jì)算管線中的每個(gè)內(nèi)的計(jì)算管線處理隊(duì)列中選擇第一隊(duì)列和第二隊(duì)列; 根據(jù)優(yōu)先級(jí)標(biāo)準(zhǔn)選擇所述第一隊(duì)列和所述第二隊(duì)列中的一個(gè)以進(jìn)行處理;以及 處理所述選定隊(duì)列,直至來(lái)自包括以下各項(xiàng)的組中的至少一個(gè)變得可用:(i)時(shí)間量子流逝;以及(ii)具有更高優(yōu)先級(jí)的隊(duì)列。
      13.如權(quán)利要求12所述的系統(tǒng),其中所述計(jì)算管線被配置成搶占處理所述選定隊(duì)列。
      14.如權(quán)利要求13所述的系統(tǒng),其中所述計(jì)算管線被配置成在所述搶占期間上下文切換所述選定隊(duì)列。
      15.如權(quán)利要求13所述的系統(tǒng),其中所述計(jì)算管線被配置成在所述搶占后發(fā)起對(duì)第二隊(duì)列的處理。
      16.如權(quán)利要求12所述的系統(tǒng),其還包括著色器輸入塊,所述著色器輸入塊耦接至所述計(jì)算管線并且被配置成確定所述計(jì)算管線中的每個(gè)的相對(duì)優(yōu)先級(jí)。
      17.如權(quán)利要求16所述的系統(tǒng),其中所述計(jì)算管線中的每個(gè)的所述相對(duì)優(yōu)先級(jí)是使用最近最少發(fā)布電路來(lái)確定。
      18.如權(quán)利要求17所述的系統(tǒng),其中所述最近最少發(fā)布電路是圖騰柱式電路。
      19.如權(quán)利要求17所述的系統(tǒng),其還包括將具有最低優(yōu)先級(jí)的所述計(jì)算管線指派至所述電路的底部。
      20.如權(quán)利要求12所述的方法,其中所述第一隊(duì)列是就緒隊(duì)列。
      21.如權(quán)利要求12所述的方法,其中所述第二隊(duì)列是活動(dòng)隊(duì)列。
      22.如權(quán)利要求12所述的方法,其中所述預(yù)定標(biāo)準(zhǔn)包括(i)隊(duì)列優(yōu)先級(jí),(ii)隊(duì)列量子持續(xù)時(shí)間,以及(iii)隊(duì)列就緒控制。
      【文檔編號(hào)】G06F9/48GK103999051SQ201280061763
      【公開日】2014年8月20日 申請(qǐng)日期:2012年12月14日 優(yōu)先權(quán)日:2011年12月14日
      【發(fā)明者】羅伯特·斯科特·哈托格, 馬克·萊瑟, 邁克爾·曼特, 雷克斯·麥克拉里, 塞巴斯蒂安·努斯鮑姆, 菲利普·J·羅杰斯, 拉爾夫·克萊·泰勒, 托馬斯·沃勒 申請(qǐng)人:超威半導(dǎo)體公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1