專利名稱:改善對(duì)非連貫設(shè)備要執(zhí)行的任務(wù)的調(diào)度的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理的領(lǐng)域,具體而言涉及對(duì)非連貫設(shè)備(non-coherentdevice)要執(zhí)行的任務(wù)的調(diào)度。
背景技術(shù):
已知具有多個(gè)彼此交互的設(shè)備并且具有存儲(chǔ)器系統(tǒng)的系統(tǒng)。在這多個(gè)不同設(shè)備有其自己的用于數(shù)據(jù)的本地存儲(chǔ)庫(kù)的情況下,可能遇到維護(hù)不同本地存儲(chǔ)位置和存儲(chǔ)器之間的數(shù)據(jù)連貫性(coherency)的問(wèn)題。一般地,設(shè)備通過(guò)執(zhí)行一致性操作(consistencyoperation)來(lái)解決此問(wèn)題,一致性操作例如有緩存維護(hù)操作、使用屏障(barrier)以及在執(zhí)行中的特定點(diǎn)沖刷本地存儲(chǔ)庫(kù),其中重要的是數(shù)據(jù)對(duì)于系統(tǒng)的其余部分的至少一部分是連貫的。對(duì)于諸如圖形處理單元GPU之類的具有長(zhǎng)管道(pipeline)的設(shè)備,可能遇到特別的問(wèn)題。在一致性操作正被執(zhí)行的同時(shí)等待GPU執(zhí)行一項(xiàng)任務(wù)向管道中引入了氣泡,這在、深管道中有嚴(yán)重的缺點(diǎn)?,F(xiàn)有技術(shù)的設(shè)備或者立即執(zhí)行一致性操作,這一般導(dǎo)致多個(gè)更新并因此具有與之相關(guān)聯(lián)的帶寬成本,但具有低等待時(shí)間,或者它們等待并在批處理中一起執(zhí)行一致性操作,這避免了不必要的多個(gè)更新,但增大了等待時(shí)間。希望既減小與這種一致性操作相關(guān)聯(lián)的等待時(shí)間,又不會(huì)過(guò)度影響帶寬。
發(fā)明內(nèi)容
從第一方面來(lái)看,本發(fā)明提供了一種用于對(duì)多個(gè)非連貫處理設(shè)備中的一個(gè)非連貫處理設(shè)備要處理的任務(wù)進(jìn)行調(diào)度的方法,所述多個(gè)非連貫處理設(shè)備中的至少兩個(gè)是異種設(shè)備(heterogeneous device)并且所述任務(wù)中的至少一些是針對(duì)所述多個(gè)非連貫處理設(shè)備中的特定一個(gè)的,所述多個(gè)非連貫處理設(shè)備處理本地存儲(chǔ)庫(kù)和所述多個(gè)非連貫處理設(shè)備中的至少一些可訪問(wèn)的存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù),所述方法包括對(duì)于所述非連貫處理設(shè)備要處理的多個(gè)非依從任務(wù)(non-dependent task)中的每個(gè)非依從任務(wù),確定在處理所述非依從任務(wù)之前需要執(zhí)行的一致性操作;執(zhí)行針對(duì)所述多個(gè)非依從任務(wù)中的一個(gè)非依從任務(wù)的一致性操作并且在完成時(shí)將所述任務(wù)發(fā)出到所述處理設(shè)備以處理;執(zhí)行針對(duì)另一非依從任務(wù)的一致性操作,使得在這些一致性操作完成時(shí)所述非連貫處理設(shè)備能夠處理所述另一任務(wù)。本發(fā)明認(rèn)識(shí)到,雖然在設(shè)備彼此一致并且能夠在它們之間自由傳遞數(shù)據(jù)之前可能需要執(zhí)行多個(gè)一致性操作,但為了非連貫設(shè)備執(zhí)行特定任務(wù),要使此任務(wù)安全執(zhí)行可能只需要執(zhí)行完整的一致性操作的子集。從而,不是執(zhí)行所有一致性操作,本發(fā)明確定對(duì)于特定任務(wù)必要的一致性操作并且只執(zhí)行這些一致性操作。當(dāng)它們完成時(shí),該任務(wù)可被發(fā)出到非連貫設(shè)備以便處理,同時(shí)并行地,后續(xù)任務(wù)所需的一致性操作可被執(zhí)行。一旦這些一致性操作完成了,該后續(xù)任務(wù)就準(zhǔn)備好被非連貫設(shè)備處理。由于一般在任何設(shè)計(jì)良好的系統(tǒng)中,一致性操作花的時(shí)間將少于與之相關(guān)聯(lián)的任務(wù),所以針對(duì)后續(xù)任務(wù)的一致性操作將在先前任務(wù)執(zhí)行之前完成,從而后續(xù)任務(wù)將在設(shè)備準(zhǔn)備好執(zhí)行它之前就準(zhǔn)備好被發(fā)出來(lái)供執(zhí)行。從而,由一致性操作引入到系統(tǒng)中的等待時(shí)間一般只是與針對(duì)第一任務(wù)的一致性操作相關(guān)聯(lián)的等待時(shí)間。應(yīng)當(dāng)注意,至少一些設(shè)備是異種設(shè)備,并且至少一些任務(wù)是針對(duì)特定設(shè)備的。這與具有同種核心的設(shè)備不同,在具有同種核心的設(shè)備的情況下任務(wù)可依據(jù)可用性和負(fù)載而被重引導(dǎo)至不同核心。異種設(shè)備是在其執(zhí)行能力方面具有不同的屬性或性能的設(shè)備。例如,具有專用圖像操縱電路的GPU的執(zhí)行性能將比CPU上的等效軟件更高效且快得多。這個(gè)差異可能如此顯著,以至于選擇在較慢的設(shè)備上做工作以避免需要一致性工作,將不是不可行的。在其他設(shè)備中,功能在一個(gè)設(shè)備上可能是完全沒(méi)有的,從而其將不能夠執(zhí)行某些功能。本發(fā)明關(guān)注了至少在一些情況下不能在設(shè)備之間移植任務(wù)的情形。從而,對(duì)于本發(fā)明的實(shí)施例及其實(shí)現(xiàn)方式的操作的一個(gè)約束是設(shè)備是預(yù)先選擇的,從而對(duì)其的選擇不能被用作優(yōu)化的另一維度。在一些實(shí)施例中,非依從任務(wù)是獨(dú)立于所有在處理之前要求執(zhí)行一致性操作的任 務(wù)的任務(wù),所述方法包括在所述執(zhí)行針對(duì)所述多個(gè)非依從任務(wù)中的所述一個(gè)非依從任務(wù)的一致性操作的步驟之后、在執(zhí)行所述針對(duì)另一非依從任務(wù)的一致性操作的步驟之前的另一步驟重評(píng)估依從于所述一個(gè)非依從任務(wù)的任何任務(wù)以確定所述任何任務(wù)是依從的還是非依從的。非依從任務(wù)可被看作是不依從于任何其他要處理的待處理任務(wù)的任務(wù)。然而,在此實(shí)施例的上下文中,非依從任務(wù)是這樣的任務(wù)該任務(wù)不依從于任何其他有一致性操作需要執(zhí)行的待處理任務(wù)。例如,如果任務(wù)a、b、C、d具有以下依從性a = > b = > d,并且c = > d,也就是說(shuō)a必須在b之前執(zhí)行,b必須在d之前執(zhí)行,并且c必須在d之前執(zhí)行,那么最初a和c被視為非依從任務(wù)。然而,一旦已為任務(wù)a執(zhí)行了一致性操作,則獨(dú)立于任務(wù)a是否完成,b被視為非依從任務(wù),從而使得如果針對(duì)任務(wù)b的一致性操作小于針對(duì)任務(wù)c的,則它們可被先執(zhí)行。從而,在每個(gè)一致性任務(wù)完成之后,可以根據(jù)任務(wù)現(xiàn)在是否被認(rèn)為是非依從的來(lái)重評(píng)估一致性工作的順序。在一些實(shí)施例中,所述非連貫處理設(shè)備包括任務(wù)隊(duì)列存儲(chǔ)庫(kù),用于在至少一個(gè)任務(wù)的執(zhí)行之前將該任務(wù)存儲(chǔ)在隊(duì)列中,并且在針對(duì)所述另一非依從任務(wù)的一致性操作完成時(shí)將所述另一任務(wù)發(fā)送到所述非連貫處理設(shè)備以被處理或者如果所述非連貫處理設(shè)備正在處理先前的任務(wù)則被存儲(chǔ)在所述任務(wù)存儲(chǔ)隊(duì)列中等待處理。如果非連貫處理設(shè)備具有用于將至少一個(gè)任務(wù)存儲(chǔ)在隊(duì)列中的任務(wù)隊(duì)列存儲(chǔ)庫(kù),則可能是有利的。如果是這樣的話,則在針對(duì)另一任務(wù)的一致性操作完成之后,這個(gè)另一任務(wù)可被發(fā)送到非連貫處理設(shè)備并且可待在隊(duì)列中等待執(zhí)行,并且只要非連貫處理設(shè)備準(zhǔn)備好執(zhí)行它就可被執(zhí)行。這樣,在這個(gè)點(diǎn)在管道中將不會(huì)出現(xiàn)氣泡,因?yàn)閷⒉恍枰却摿硪蝗蝿?wù)的一致性操作被執(zhí)行,該另一任務(wù)將在隊(duì)列中等待,準(zhǔn)備好被執(zhí)行。在一些實(shí)施例中,所述方法包括初始步驟確定所述任務(wù)的能夠被彼此獨(dú)立地執(zhí)行的部分并且在可能的情況下將所述任務(wù)細(xì)分成所述多個(gè)非依從任務(wù)。確定哪些是最適當(dāng)?shù)脑尤蝿?wù)(atomic task)以將任務(wù)細(xì)分成這些原子任務(wù),可能是有利的。換言之,能夠做出的非依從任務(wù)的最小細(xì)分是什么。通過(guò)將任務(wù)細(xì)分成小分害I],可以減小系統(tǒng)的等待時(shí)間,因?yàn)橐赃@種方式可以為小任務(wù)執(zhí)行一致性操作,然后該任務(wù)可在下一任務(wù)的一致性操作被執(zhí)行的同時(shí)被執(zhí)行。在一些實(shí)施例中,所述方法包括所述初始步驟之后的步驟確定所述任務(wù)的依從性并且提供對(duì)所述任務(wù)的排序以減小初始等待時(shí)間。一旦任務(wù)已被細(xì)分成非依從任務(wù),調(diào)度器就可基于每個(gè)任務(wù)的一致性工作的大小來(lái)執(zhí)行排序以減小初始等待時(shí)間。從而,具有最小一致性工作的任務(wù)可被選擇來(lái)首先執(zhí)行。在其他實(shí)施例中,在執(zhí)行針對(duì)所述另一非依從任務(wù)的一致性操作之后,所述方法將所述另一任務(wù)存儲(chǔ)在特權(quán)隊(duì)列中,準(zhǔn)備好響應(yīng)于表明所述非連貫設(shè)備準(zhǔn)備好處理所述另一任務(wù)的指示而輸出到所述非連貫設(shè)備。如果在非連貫處理設(shè)備上沒(méi)有任務(wù)隊(duì)列存儲(chǔ)庫(kù),則該另一任務(wù)被存儲(chǔ)在可以采取環(huán)形緩沖區(qū)的形式的特權(quán)隊(duì)列中,可能是有利的。此隊(duì)列可以在執(zhí)行連貫性操作的設(shè)備上,或者其可以在存儲(chǔ)器中。任務(wù)將存在于此特權(quán)隊(duì)列中,準(zhǔn)備好輸出。當(dāng)非連貫設(shè)備準(zhǔn)備好處理另一任務(wù)時(shí),它將此通知給執(zhí)行一致性操作的設(shè)備,并且該任務(wù)隨后可被迅速且高效地傳送給它。這避免了非連貫設(shè)備為另一任務(wù)等待太長(zhǎng)時(shí)間。此系統(tǒng)的一個(gè)缺陷是在不同 設(shè)備之間需要更多通信。在一些實(shí)施例中,所述一致性操作包括以下各項(xiàng)中的至少一種連貫性操作,以及其他數(shù)據(jù)傳送操作,用以確保所述多個(gè)處理設(shè)備和所述存儲(chǔ)器之間的一致性。所執(zhí)行的一致性操作是諸如使數(shù)據(jù)連貫的連貫性操作之類的操作。為了設(shè)備一致地操作可能需要其他操作。例如,可能涉及別名的拷貝。在一些實(shí)施例中,該方法還包括執(zhí)行針對(duì)多個(gè)另外的非依從任務(wù)的一致性操作并且在針對(duì)這多個(gè)另外的任務(wù)中的每個(gè)另外的任務(wù)的一致性操作完成時(shí),確定所述非連貫處理設(shè)備是否有容量來(lái)接收所述另外的任務(wù)并且響應(yīng)于所述非連貫處理設(shè)備有容量而將所述另外的任務(wù)發(fā)出到所述非連貫處理設(shè)備。如果等待在非連貫處理設(shè)備上執(zhí)行的所有非依從任務(wù)的一致性操作被一個(gè)接一個(gè)地執(zhí)行,本發(fā)明的實(shí)施例則尤其有利。如果是這樣的話,則只要這些非連貫操作已被執(zhí)行,這些任務(wù)就準(zhǔn)備好被發(fā)出到非連貫處理設(shè)備??身憫?yīng)于來(lái)自非連貫處理設(shè)備的表明其任務(wù)隊(duì)列存儲(chǔ)庫(kù)具有容量的指示而將任務(wù)發(fā)出到非連貫處理設(shè)備。如果接收到這種信號(hào),則可以傳送其連貫性操作已完成的任何任務(wù)。在許多實(shí)施例中,任務(wù)隊(duì)列可并行存儲(chǔ)若干個(gè)任務(wù),從而,單次傳送可用于在設(shè)備之間傳送這些任務(wù),從而節(jié)省了時(shí)間和功率。在一些實(shí)施例中,所述方法還包括從所述非連貫處理設(shè)備接收表明所述任務(wù)隊(duì)列存儲(chǔ)庫(kù)具有容量的指示,并且響應(yīng)于所述指示以及沒(méi)有任務(wù)的一致性操作已完成而記錄所述指示,以使得在待處理的連貫性操作完成時(shí)相應(yīng)的任務(wù)可被放在所述隊(duì)列中。如果接收到表明任務(wù)隊(duì)列存儲(chǔ)庫(kù)具有容量的指示,并且當(dāng)前沒(méi)有一致性操作已完成,則響應(yīng)于此,系統(tǒng)可記錄此指示,并且在待處理的一致性操作完成時(shí),相應(yīng)的任務(wù)可被放在隊(duì)列中。這樣,另一任務(wù)可在其準(zhǔn)備就緒時(shí)有希望被及時(shí)地發(fā)送到非連貫設(shè)備以存儲(chǔ)在任務(wù)隊(duì)列中,以避免管道中出現(xiàn)氣泡。在一些實(shí)施例中,所述對(duì)于所述任務(wù)中的每一個(gè)確定要執(zhí)行的一致性操作的步驟包括確定所述任務(wù)中的哪個(gè)任務(wù)有最小數(shù)目的一致性操作與之相關(guān)聯(lián)并且在執(zhí)行其他一致性操作和任務(wù)之前執(zhí)行所述最小數(shù)目的一致性操作并將所述任務(wù)發(fā)出到所述非連貫處理設(shè)備。確定哪個(gè)任務(wù)具有等待時(shí)間最小的最小數(shù)目的一致性操作,可能是有利的。如果這么做了,那么只要這些操作完成,任務(wù)就可被發(fā)送到非連貫處理設(shè)備,從而比選擇了具有更多連貫性操作的任務(wù)的情況更迅速。這樣,減小了系統(tǒng)的等待時(shí)間。然后在處理具有最小等待時(shí)間一致性操作的任務(wù)的同時(shí),可以執(zhí)行另外的較大等待時(shí)間的一致性操作。如前所述,在行為良好的系統(tǒng)中,任務(wù)花的時(shí)間一般長(zhǎng)于連貫性操作,從而在前一任務(wù)完成之前,下一任務(wù)的連貫性操作應(yīng)當(dāng)已完成并且它準(zhǔn)備好被處理。在一些實(shí)施例中,處理所述任務(wù)的所述非連貫處理設(shè)備包括具有深管道的圖形處
理單元。雖然非連貫處理設(shè)備可以是多種事物,但其對(duì)于具有深管道的圖形處理單元尤其有利。在深管道中出現(xiàn)氣泡是尤其不利的,從而,以這種方式執(zhí)行連貫性操作并且減小任務(wù) 被發(fā)送到圖形處理單元時(shí)的等待時(shí)間,可以幫助減少氣泡并且改善系統(tǒng)的系統(tǒng)。 在一些實(shí)施例中,所述一致性操作是在非連貫中央處理單元上執(zhí)行的。雖然一致性操作可在多種處理設(shè)備上執(zhí)行,但經(jīng)常是中央處理單元執(zhí)行調(diào)度和一致性操作。本發(fā)明的第二方面提供了一種計(jì)算機(jī)程序產(chǎn)品,其包括程序,所述程序在被處理器執(zhí)行時(shí)將控制所述處理器執(zhí)行根據(jù)本發(fā)明的第一方面的方法中的步驟。本發(fā)明的第三方面提供了一種數(shù)據(jù)處理裝置,包括用于處理數(shù)據(jù)的多個(gè)非連貫處理設(shè)備,所述多個(gè)非連貫處理設(shè)備中的至少一些包括本地?cái)?shù)據(jù)存儲(chǔ)庫(kù);用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器,可被所述多個(gè)非連貫處理設(shè)備中的至少一些訪問(wèn);以及調(diào)度電路,用于對(duì)所述多個(gè)非連貫處理設(shè)備中的至少一個(gè)非連貫處理設(shè)備要執(zhí)行的任務(wù)進(jìn)行調(diào)度;其中所述至少一個(gè)非連貫處理設(shè)備包括任務(wù)隊(duì)列存儲(chǔ)庫(kù),用于存儲(chǔ)至少一個(gè)等待執(zhí)行的任務(wù);所述調(diào)度電路被配置為對(duì)于所述多個(gè)非連貫處理設(shè)備中的一個(gè)非連貫處理設(shè)備要執(zhí)行的多個(gè)非依從任務(wù)中的每個(gè)非依從任務(wù),確定在執(zhí)行所述任務(wù)之前需要執(zhí)行的一致性操作,并且調(diào)度所述一致性操作的執(zhí)行并且在完成時(shí)發(fā)出所述任務(wù)以由所述非連貫處理設(shè)備執(zhí)行并且執(zhí)行針對(duì)另一任務(wù)的一致性操作。從應(yīng)聯(lián)系附圖來(lái)理解的對(duì)示例性實(shí)施例的以下詳細(xì)描述中將清楚本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)。
圖I示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)處理裝置;圖2示意性地示出了任務(wù)及其相關(guān)聯(lián)的連貫性操作的調(diào)度;圖3示意性地示出了獨(dú)立任務(wù)及其連貫性操作的調(diào)度;圖4示出了圖示根據(jù)本發(fā)明實(shí)施例的方法中的步驟的流程圖;并且圖5示出了本發(fā)明實(shí)施例的虛擬機(jī)實(shí)現(xiàn)。
具體實(shí)施例方式圖I示出了數(shù)據(jù)處理裝置5,其具有中央處理單元CPU 10、圖形處理單元GPU 20和存儲(chǔ)器30。中央處理單元和圖形處理單元經(jīng)由總線40與彼此通信并與存儲(chǔ)器通信。
中央處理單元10具有調(diào)度器12,用于調(diào)度要執(zhí)行的多個(gè)任務(wù)。在一些實(shí)施例中,調(diào)度器在調(diào)度任務(wù)之前可將任務(wù)細(xì)分為非依從任務(wù)的最小分割。在基本情況中,調(diào)度器可以讓用戶以任務(wù)的最小形式指定任務(wù)(例如圖3中所示),或者調(diào)度器可以使用標(biāo)準(zhǔn)來(lái)細(xì)分任務(wù),這些任務(wù)依從于該任務(wù)本身中使用的指令的序列。任務(wù)本身是通用計(jì)算(如CPU將會(huì)執(zhí)行的),這樣代碼可能有或沒(méi)有阻止細(xì)分的副作用。例如,可從存儲(chǔ)器的每個(gè)元素讀取簡(jiǎn)單的任務(wù),修改它,并將它寫入回到同一位置。在此情況下,可按用戶限定的邊界瑣碎地細(xì)分該任務(wù)。作為具體情況,如果用戶應(yīng)用在該任務(wù)被執(zhí)行時(shí)請(qǐng)求一百萬(wàn)個(gè)這樣的讀取/修改/寫入,則我們可以細(xì)分成500k線程的兩個(gè)任務(wù),250k的四個(gè),等等。這趨向于最佳情況,其中額外控制結(jié)構(gòu)的創(chuàng)建勝過(guò)了等待時(shí)間減小。也存在具有阻止此細(xì)分的關(guān)系的線程的更大分組。極端例子是需要被反轉(zhuǎn)的一百萬(wàn)個(gè)項(xiàng)目的陣列,在此情況下每個(gè)線程將被指派來(lái)交換第一元素和最末元素、第二元 素和倒數(shù)第二元素,等等。代碼也可能充分復(fù)雜,以致無(wú)法確定訪問(wèn)模式(NP完備停機(jī)問(wèn)題),或者可能有訪問(wèn)模式為數(shù)據(jù)驅(qū)動(dòng)的情況(在運(yùn)行時(shí)提供了索引的列表用于元素訪問(wèn))。這太計(jì)算密集了,以至于分析無(wú)法成功,因此我們將不再進(jìn)一步細(xì)分。在現(xiàn)實(shí)生活中當(dāng)處理典型應(yīng)用時(shí)會(huì)看到這些情況的混合,并且“盡力而為”分析將被用于確定應(yīng)當(dāng)執(zhí)行什么細(xì)分。這些非依從任務(wù)中的每一個(gè)具有與之相關(guān)聯(lián)的資源,在執(zhí)行作業(yè)的設(shè)備上需要使這些資源一致。從而,CPU 10確定為了使任務(wù)在其目標(biāo)設(shè)備上成功執(zhí)行需要執(zhí)行什么一致性操作。在此示例中,我們考慮要在圖形處理單元20上執(zhí)行的任務(wù)。從而,CPU 10將確定要在GPU 20上執(zhí)行的非依從任務(wù),并且將確定在可以執(zhí)行每個(gè)任務(wù)之前需要執(zhí)行什么一致性操作。調(diào)度器12隨后將確定這些一致性操作中的哪個(gè)具有最小成本,即能夠被最迅速地執(zhí)行,并且將首先執(zhí)行這些操作。應(yīng)當(dāng)注意,通過(guò)預(yù)先將任務(wù)細(xì)分成小的非依從任務(wù),與每個(gè)任務(wù)相關(guān)聯(lián)的一致性操作的數(shù)目將減少,從而由等待一致性任務(wù)的執(zhí)行而導(dǎo)致的等待時(shí)間將降低。當(dāng)一致性操作完成時(shí),然后與這些一致性操作相關(guān)聯(lián)的任務(wù)將被發(fā)送到GPU 20,在GPU 20處其可被執(zhí)行。CPU 10隨后將為要在GPU上執(zhí)行的另一任務(wù)執(zhí)行一致性操作,并且當(dāng)這些一致性操作完成時(shí),將把該另一任務(wù)發(fā)送到GPU 20,在GPU 20處該另一任務(wù)將被存儲(chǔ)在任務(wù)存儲(chǔ)庫(kù)22中。CPU隨后將為另一任務(wù)執(zhí)行一致性操作,并且如果任務(wù)存儲(chǔ)庫(kù)22變滿,則將它們存儲(chǔ)在低等待時(shí)間或特權(quán)隊(duì)列14中,該隊(duì)列是特權(quán)操作系統(tǒng)所擁有的隊(duì)列。此隊(duì)列可被實(shí)現(xiàn)為FIFO或存儲(chǔ)器30中與CPU相關(guān)聯(lián)的環(huán)形緩沖區(qū)。應(yīng)當(dāng)注意,如果CPU 10在與不具有任務(wù)存儲(chǔ)庫(kù)22的GPU通信,則其將把待處理的任務(wù)存儲(chǔ)在此特權(quán)隊(duì)列中,等待來(lái)自GPU的表明其準(zhǔn)備好處理下一任務(wù)的信號(hào)。圖2示意性地示出了任務(wù)和多個(gè)任務(wù)的一致性操作的調(diào)度和執(zhí)行。從而,存在多個(gè)任務(wù)Tl至T6,它們與多個(gè)一致性操作Cl至C6相關(guān)聯(lián)??梢钥闯觯恢滦圆僮鰿3具有最小成本,從而它們首先被執(zhí)行,并且一旦它們完成,T3就被發(fā)出以供GPU 20執(zhí)行。一致性操作Cl隨后被執(zhí)行,并且當(dāng)它們完成時(shí),Tl被發(fā)出到GPU 20并待在任務(wù)存儲(chǔ)隊(duì)列22中。在此實(shí)施例中,GPU具有兩個(gè)深隊(duì)列(de印queue),其由兩個(gè)執(zhí)行寄存器(它們是用于存儲(chǔ)正在執(zhí)行的命令的寄存器)和用于存儲(chǔ)待處理的命令的兩個(gè)影子寄存器構(gòu)成,并且這些寄存器被用作任務(wù)存儲(chǔ)隊(duì)列。應(yīng)當(dāng)注意,此寄存器接口是在總線上配置的,并且隨后在GPU被通知開(kāi)始對(duì)任務(wù)工作時(shí)被存儲(chǔ)在GPU內(nèi)部,這使得相同的寄存器可以為下一任務(wù)作好準(zhǔn)備。一致性操作C2、C7和C4隨后被調(diào)度,并且在完成時(shí),任務(wù)T2、I7和T4被放在CPU上的特權(quán)隊(duì)列14中。當(dāng)CPU完成了任務(wù)T3時(shí),其向CPU發(fā)送中斷,表明影子寄存器具有容量。此時(shí),由于一致性操作C2、C7和C4已完成,于是待處理的任務(wù)I7、T4和T2被發(fā)送并存儲(chǔ)在充當(dāng)任務(wù)存儲(chǔ)庫(kù)的影子寄存器中。如果任務(wù)被一起發(fā)送,則它們可以被一起作為任務(wù)列表存儲(chǔ)在影子寄存器之一中,并且以這種方式,任務(wù)存儲(chǔ)庫(kù)可一起接收數(shù)個(gè)任務(wù),并將它們一起存儲(chǔ),以使得在任何一個(gè)時(shí)間發(fā)送并待在隊(duì)列中待處理的任務(wù)的數(shù)目可以增加。任務(wù)Tl隨后被執(zhí)行,并且當(dāng)此完成時(shí),又有了具有容量的影子寄存器,從而另一中斷被發(fā)送到CPU,并且當(dāng)用于任務(wù)T5和T6的連貫性操作也就是C5和C6完成時(shí),任務(wù)T5、和T6在特權(quán)隊(duì)列中準(zhǔn)備就緒,并且它們也可被發(fā)送。這樣,用于數(shù)個(gè)任務(wù)的一致性操作可被預(yù)先執(zhí)行,并且它們?cè)试S了任務(wù)被一個(gè)接一個(gè)地執(zhí)行,而不會(huì)在管道中出現(xiàn)氣泡。另外,如果若干個(gè)任務(wù)同時(shí)準(zhǔn)備好被傳送,則它們可被一起傳送和存儲(chǔ),從而降低了帶寬和存儲(chǔ)要求。圖3示意性地示出了任務(wù)A和B如何是可按任何順序執(zhí)行的非依從任務(wù),而任務(wù)C是需要在它們已完成時(shí)才執(zhí)行的任務(wù)。從而,任務(wù)A和B是可被CPU按任何順序調(diào)度的任務(wù)。這些任務(wù)都被圖形處理器GPU 20執(zhí)行并且有一致性操作X和Y與之相關(guān)聯(lián)。如此圖中示意性示出的,一致性操作Y大于一致性操作X,從而,CPU中的調(diào)度器調(diào)度一致性操作X被首先執(zhí)行,并且當(dāng)它們完成時(shí),其向GPU 20發(fā)出任務(wù)A以執(zhí)行。一致性任務(wù)Y隨后被執(zhí)行。由于在此實(shí)施例中當(dāng)一致性任務(wù)Y完成時(shí)在GPU上沒(méi)有任務(wù)隊(duì)列,所以任務(wù)B被存儲(chǔ)在特權(quán)隊(duì)列中,等待來(lái)自GPU的表明任務(wù)A已完成的信號(hào)。當(dāng)其接收到此信號(hào)時(shí),然后任務(wù)B被發(fā)送到GPU以執(zhí)行。應(yīng)當(dāng)注意,任務(wù)B可在一致性操作Y完成后立即就被放在特權(quán)隊(duì)列中,等待來(lái)自GPU的信號(hào),或者在一些實(shí)施例中,CPU可以估計(jì)任務(wù)A將花多長(zhǎng)時(shí)間,并且在大約其計(jì)算出GPU將準(zhǔn)備就緒的時(shí)間將任務(wù)B放到隊(duì)列中。這樣,任務(wù)B不會(huì)在特權(quán)隊(duì)列中待很長(zhǎng)時(shí)間,并且允許了其他任務(wù)被放在特權(quán)隊(duì)列中。一旦任務(wù)A和B都已完成,任務(wù)C就可被處理,只要可能與其相關(guān)聯(lián)的任何一致性操作都已完成。它們可能在任務(wù)A或B的執(zhí)行期間已被執(zhí)行了。圖4示出了圖示根據(jù)本發(fā)明實(shí)施例的方法中的步驟的流程圖。在此方法中,首先,要執(zhí)行的任務(wù)被分成多個(gè)非依從任務(wù)。對(duì)任務(wù)的這個(gè)細(xì)分被執(zhí)行到最小基本任務(wù)。然后,確定為了在非連貫設(shè)備上執(zhí)行這多個(gè)非依從任務(wù)中的每一個(gè)而要執(zhí)行的連貫性操作。然后確定哪些連貫性操作具有最低成本,并且這些連貫性操作被首先執(zhí)行。當(dāng)它們已完成時(shí),與它們相關(guān)聯(lián)的任務(wù)被發(fā)出到非連貫設(shè)備,并且確定是否有另一任務(wù)要執(zhí)行。如果有,則下一組連貫性操作可被執(zhí)行。在此之前,在一些實(shí)施例中,(雖然在此圖中沒(méi)有示出)有一步驟確定任何先前依從的任務(wù)現(xiàn)在在連貫性操作完成之后是否是非依從的。如果是,則與它們相關(guān)聯(lián)的連貫性操作被添加到要執(zhí)行的連貫性操作的列表,并且如果它們的成本低則可被選擇為下一組。一旦下一組連貫性操作已被執(zhí)行,則確定非連貫設(shè)備上的任務(wù)隊(duì)列是否已滿。如果其已滿,那么如果其連貫性操作已被執(zhí)行則現(xiàn)在準(zhǔn)備好被執(zhí)行的任務(wù)被排隊(duì)在CPU上或存儲(chǔ)器中,等待來(lái)自非連貫設(shè)備的表明在任務(wù)隊(duì)列中有空間或者如果沒(méi)有任務(wù)隊(duì)列則表明非連貫設(shè)備準(zhǔn)備好執(zhí)行該任務(wù)的信號(hào)。當(dāng)接收到此信號(hào)時(shí),該任務(wù)被發(fā)出到非連貫設(shè)備。如果非連貫設(shè)備上的任務(wù)隊(duì)列尚未變滿,則與已完成的連貫性操作相關(guān)聯(lián)的任務(wù)將在連貫性操作完成之后立即被發(fā)出到該隊(duì)列。當(dāng)沒(méi)有另外的任務(wù)要發(fā)出時(shí),則該方法結(jié)束。圖5圖示了可以使用的虛擬機(jī)實(shí)現(xiàn)。雖然先前描述的實(shí)施例按照用于操作支持所 關(guān)注的技術(shù)的特定處理硬件的裝置和方法來(lái)實(shí)現(xiàn)本發(fā)明,但也可以提供硬件設(shè)備的所謂虛擬機(jī)實(shí)現(xiàn)。這些虛擬機(jī)實(shí)現(xiàn)在主機(jī)處理器530上運(yùn)行,該主機(jī)處理器530通常運(yùn)行支持虛擬機(jī)程序510的主機(jī)操作系統(tǒng)520。通常,要提供以合理速度執(zhí)行的虛擬機(jī)實(shí)現(xiàn)需要大型強(qiáng)力處理器,但這種方案在某些情況下可能是有道理的,例如當(dāng)出于兼容性或再使用原因而希望運(yùn)行另一處理器原生的代碼時(shí)。虛擬機(jī)程序510能夠執(zhí)行應(yīng)用程序(或操作系統(tǒng))500以給出與這種真實(shí)硬件設(shè)備執(zhí)行該程序?qū)?huì)給出的結(jié)果相同的結(jié)果。從而,可以利用虛擬機(jī)程序510從應(yīng)用程序500內(nèi)執(zhí)行對(duì)非連貫設(shè)備要執(zhí)行的任務(wù)的調(diào)度。雖然這里已經(jīng)參考附圖詳細(xì)描述了本發(fā)明的示例性實(shí)施例,但是要理解,本發(fā)明并不限于這些確切的實(shí)施例,本領(lǐng)域的技術(shù)人員在不脫離由權(quán)利要求限定的本發(fā)明的范圍和精神的情況下可以對(duì)其實(shí)現(xiàn)各種變化和修改。
權(quán)利要求
1.一種用于對(duì)多個(gè)非連貫處理設(shè)備中的一個(gè)非連貫處理設(shè)備要處理的任務(wù)進(jìn)行調(diào)度的方法,所述多個(gè)非連貫處理設(shè)備中的至少兩個(gè)是異種設(shè)備并且所述任務(wù)中的至少一些是針對(duì)所述多個(gè)非連貫處理設(shè)備中的特定一個(gè)的,所述多個(gè)非連貫處理設(shè)備處理本地存儲(chǔ)庫(kù)和所述多個(gè)非連貫處理設(shè)備中的至少一些可訪問(wèn)的存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù),所述方法包括 對(duì)于所述多個(gè)非連貫處理設(shè)備中的一個(gè)非連貫處理設(shè)備要處理的多個(gè)非依從任務(wù)中的每個(gè)非依從任務(wù),確定在處理所述非依從任務(wù)之前需要執(zhí)行的一致性操作; 執(zhí)行針對(duì)所述多個(gè)非依從任務(wù)中的一個(gè)非依從任務(wù)的一致性操作并且在完成時(shí)將所述任務(wù)發(fā)出到所述一個(gè)非連貫處理設(shè)備以處理; 執(zhí)行針對(duì)另一非依從任務(wù)的一致性操作,使得在所述一致性操作完成時(shí)所述非連貫處理設(shè)備能夠處理所述另一任務(wù)。
2.根據(jù)權(quán)利要求I所述的方法,其中,非依從任務(wù)是獨(dú)立于所有在處理之前要求執(zhí)行一致性操作的任務(wù)的任務(wù),所述方法包括在所述執(zhí)行針對(duì)所述多個(gè)非依從任務(wù)中的所述一個(gè)非依從任務(wù)的一致性操作的步驟之后、在執(zhí)行所述針對(duì)另一非依從任務(wù)的一致性操作的步驟之前的另一步驟重評(píng)估依從于所述多個(gè)非依從任務(wù)中的所述一個(gè)非依從任務(wù)的任何任務(wù)以確定所述任何任務(wù)是依從的還是非依從的。
3.根據(jù)權(quán)利要求I所述的方法,其中,所述非連貫處理設(shè)備包括任務(wù)隊(duì)列存儲(chǔ)庫(kù),用于在至少一個(gè)任務(wù)的執(zhí)行之前將所述任務(wù)存儲(chǔ)在隊(duì)列中,并且在針對(duì)所述另一非依從任務(wù)的一致性操作完成時(shí)將所述另一任務(wù)發(fā)送到所述非連貫處理設(shè)備以被處理或者如果所述非連貫處理設(shè)備正在處理先前的任務(wù)則被存儲(chǔ)在所述任務(wù)存儲(chǔ)隊(duì)列中等待處理。
4.根據(jù)權(quán)利要求3所述的方法,還包括從所述非連貫處理設(shè)備接收表明所述任務(wù)隊(duì)列存儲(chǔ)庫(kù)具有容量的指示并且響應(yīng)于所述指示而發(fā)送準(zhǔn)備好執(zhí)行的任何另外任務(wù)。
5.根據(jù)權(quán)利要求3所述的方法,還包括從所述非連貫處理設(shè)備接收表明所述任務(wù)隊(duì)列存儲(chǔ)庫(kù)具有容量的指示,并且響應(yīng)于所述指示以及沒(méi)有任務(wù)的一致性操作已完成而記錄所述指示,以使得在待處理的連貫性操作完成時(shí)相應(yīng)的任務(wù)被放在所述隊(duì)列中。
6.根據(jù)權(quán)利要求I所述的方法,包括初始步驟確定所述任務(wù)的能夠被彼此獨(dú)立地執(zhí)行的部分并且在可能的情況下將所述任務(wù)細(xì)分成所述多個(gè)非依從任務(wù)。
7.根據(jù)權(quán)利要求6所述的方法,其中,所述初始步驟包括將所述任務(wù)中的至少一些細(xì)分成有可能的最小的任務(wù)。
8.根據(jù)權(quán)利要求6所述的方法,還包括在所述初始步驟之后執(zhí)行的步驟確定所述任務(wù)的依從性并且提供對(duì)所述任務(wù)的排序以減小初始等待時(shí)間。
9.根據(jù)權(quán)利要求I所述的方法,其中,在執(zhí)行針對(duì)所述另一非依從任務(wù)的一致性操作之后,所述方法將所述另一任務(wù)存儲(chǔ)在特權(quán)隊(duì)列中,準(zhǔn)備好響應(yīng)于表明所述非連貫設(shè)備準(zhǔn)備好處理所述另一任務(wù)的指示而輸出到所述非連貫設(shè)備。
10.根據(jù)權(quán)利要求I所述的方法,其中,所述一致性操作包括以下各項(xiàng)中的至少一種連貫性操作,以及其他數(shù)據(jù)傳送操作,用以確保所述多個(gè)處理設(shè)備和所述存儲(chǔ)器之間的一致性。
11.根據(jù)權(quán)利要求I所述的方法,所述方法還包括執(zhí)行針對(duì)多個(gè)另外的非依從任務(wù)的一致性操作并且在針對(duì)所述多個(gè)另外的非依從任務(wù)中的每個(gè)另外的非依從任務(wù)的一致性操作完成時(shí),確定所述非連貫處理設(shè)備是否有容量來(lái)接收所述另外的非依從任務(wù)并且響應(yīng)于所述非連貫處理設(shè)備有容量而將所述另外的非依從任務(wù)發(fā)出到所述非連貫處理設(shè)備。
12.根據(jù)權(quán)利要求I所述的方法,其中,所述對(duì)于所述任務(wù)中的每一個(gè)確定要執(zhí)行的一致性操作的步驟包括確定所述任務(wù)中的哪個(gè)任務(wù)有最小數(shù)目的一致性操作與之相關(guān)聯(lián)并且在執(zhí)行針對(duì)其他任務(wù)的其他一致性操作之前執(zhí)行所述最小數(shù)目的一致性操作并將所述任務(wù)發(fā)出到所述非連貫處理設(shè)備。
13.根據(jù)權(quán)利要求I所述的方法,其中,處理所述任務(wù)的所述非連貫處理設(shè)備包括具有深管道的圖形處理單元。
14.根據(jù)權(quán)利要求13所述的方法,其中,所述一致性操作是在非連貫中央處理單元上執(zhí)行的。
15.一種計(jì)算機(jī)程序產(chǎn)品,以非暫態(tài)形式存儲(chǔ)程序,所述程序在被處理器執(zhí)行時(shí)將控制所述處理器執(zhí)行根據(jù)權(quán)利要求I的方法中的步驟。
16.一種數(shù)據(jù)處理裝置,包括 用于處理數(shù)據(jù)的多個(gè)非連貫處理設(shè)備,所述多個(gè)非連貫處理設(shè)備中的至少一些包括本地?cái)?shù)據(jù)存儲(chǔ)庫(kù)并且所述多個(gè)非連貫處理設(shè)備中的至少兩個(gè)是異種設(shè)備; 用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器,可被所述多個(gè)非連貫處理設(shè)備中的至少一些訪問(wèn);以及 調(diào)度電路,用于對(duì)所述多個(gè)非連貫處理設(shè)備中的至少一個(gè)非連貫處理設(shè)備要執(zhí)行的任務(wù)進(jìn)行調(diào)度,所述任務(wù)中的至少一些是針對(duì)所述多個(gè)非連貫處理設(shè)備中的特定一個(gè)的,其中 所述至少一個(gè)非連貫處理設(shè)備包括任務(wù)隊(duì)列存儲(chǔ)庫(kù),用于存儲(chǔ)至少一個(gè)等待執(zhí)行的任務(wù); 所述調(diào)度電路被配置為對(duì)于所述多個(gè)非連貫處理設(shè)備中的一個(gè)非連貫處理設(shè)備要執(zhí)行的多個(gè)非依從任務(wù)中的每個(gè)非依從任務(wù),確定在執(zhí)行所述任務(wù)之前需要執(zhí)行的一致性操作,并且調(diào)度所述一致性操作的執(zhí)行并且在完成時(shí)發(fā)出所述任務(wù)以由所述非連貫處理設(shè)備執(zhí)行并且執(zhí)行針對(duì)另一任務(wù)的一致性操作。
17.根據(jù)權(quán)利要求16所述的數(shù)據(jù)處理裝置,其中,非依從任務(wù)是獨(dú)立于所有在處理之前要求執(zhí)行一致性操作的任務(wù)的任務(wù),所述調(diào)度電路被配置為在針對(duì)所述多個(gè)非依從任務(wù)中的一個(gè)非依從任務(wù)的一致性操作完成之后評(píng)估依從于所述一個(gè)非依從任務(wù)的任務(wù),并且響應(yīng)于確定任何評(píng)估的任務(wù)現(xiàn)在是非依從的,在調(diào)度一致性操作的執(zhí)行時(shí)包括針對(duì)現(xiàn)在非依從的任務(wù)的一致性操作。
18.根據(jù)權(quán)利要求16所述的數(shù)據(jù)處理裝置,其中,所述非連貫處理設(shè)備包括數(shù)據(jù)存儲(chǔ)庫(kù),該數(shù)據(jù)存儲(chǔ)庫(kù)被配置為作為任務(wù)隊(duì)列存儲(chǔ)至少一個(gè)待處理的任務(wù),所述調(diào)度電路被配置為在針對(duì)所述另一任務(wù)的相應(yīng)一致性操作完成時(shí)發(fā)出所述另一任務(wù),如果所述非連貫設(shè)備尚未完成所述任務(wù)則所述另一任務(wù)被存儲(chǔ)在所述任務(wù)隊(duì)列中。
19.根據(jù)權(quán)利要求18所述的數(shù)據(jù)處理裝置,所述調(diào)度電路被配置為響應(yīng)于從所述非連貫處理設(shè)備接收到表明所述任務(wù)隊(duì)列存儲(chǔ)庫(kù)具有容量的指示而發(fā)送任何準(zhǔn)備好執(zhí)行的另外任務(wù)。
20.根據(jù)權(quán)利要求18所述的數(shù)據(jù)處理裝置,其中,所述調(diào)度電路被配置為從所述非連貫處理設(shè)備接收表明所述任務(wù)隊(duì)列存儲(chǔ)庫(kù)何時(shí)有存儲(chǔ)任務(wù)的容量的信號(hào),并且響應(yīng)于所述指示以及沒(méi)有任務(wù)的連貫性操作已完成,調(diào)度針對(duì)另一任務(wù)的連貫操作開(kāi)始。
21.根據(jù)權(quán)利要求16所述的數(shù)據(jù)處理裝置,其中,所述調(diào)度電路還被配置為確定所述任務(wù)的能夠被彼此獨(dú)立地執(zhí)行的部分并且在可能的情況下將所述任務(wù)細(xì)分成所述多個(gè)非依從任務(wù)。
22.根據(jù)權(quán)利要求16所述的數(shù)據(jù)處理裝置,所述數(shù)據(jù)處理裝置包括用于存儲(chǔ)要被所述多個(gè)非連貫設(shè)備中的至少一個(gè)執(zhí)行的任務(wù)的特權(quán)隊(duì)列,所述調(diào)度電路被配置為,如果所述非連貫設(shè)備尚未完成所述任務(wù),則將所述另一任務(wù)存儲(chǔ)在所述特權(quán)隊(duì)列中,準(zhǔn)備好在針對(duì)所述另一任務(wù)的相應(yīng)一致性操作完成時(shí)輸出到所述非連貫設(shè)備。
23.根據(jù)權(quán)利要求16所述的數(shù)據(jù)處理裝置,其中,所述一致性操作包括以下各項(xiàng)中的至少一種連貫性操作,以及其他數(shù)據(jù)傳送操作,用以確保所述多個(gè)處理設(shè)備和所述存儲(chǔ)器之間的一致性。
24.根據(jù)權(quán)利要求16所述的數(shù)據(jù)處理裝置,所述調(diào)度電路被配置為執(zhí)行針對(duì)多個(gè)另外的非依從任務(wù)的一致性操作并且在針對(duì)所述多個(gè)另外的任務(wù)中的每個(gè)另外的任務(wù)的一致性操作完成時(shí),確定所述非連貫處理設(shè)備是否有容量來(lái)接收所述另外的任務(wù)并且響應(yīng)于所述非連貫處理設(shè)備有容量而將所述另外的任務(wù)發(fā)出到所述非連貫處理設(shè)備。
25.根據(jù)權(quán)利要求16所述的數(shù)據(jù)處理裝置,其中,所述調(diào)度電路被配置為確定所述多個(gè)非依從任務(wù)中的哪個(gè)非依從任務(wù)有最低數(shù)目的要執(zhí)行的一致性操作,所述調(diào)度電路被配置為將所述最低數(shù)目的要執(zhí)行的一致性操作調(diào)度為第一組一致性操作并且在完成時(shí)發(fā)出相應(yīng)的任務(wù)以被執(zhí)行。
26.根據(jù)權(quán)利要求16所述的數(shù)據(jù)處理裝置,其中,處理所述任務(wù)的所述非連貫處理設(shè)備包括具有深管道的圖形處理單元。
27.根據(jù)權(quán)利要求16所述的數(shù)據(jù)處理裝置,包括中央處理單元,所述中央處理單元被配置為響應(yīng)于來(lái)自所述調(diào)度電路的請(qǐng)求而執(zhí)行所述一致性操作。
28.一種計(jì)算機(jī)程序產(chǎn)品,以非暫態(tài)形式存儲(chǔ)計(jì)算機(jī)程序,所述計(jì)算機(jī)程序用于控制計(jì)算機(jī)為與如權(quán)利要求16中所述的數(shù)據(jù)處理裝置相對(duì)應(yīng)的程序指令提供虛擬機(jī)執(zhí)行環(huán)境。
全文摘要
本發(fā)明公開(kāi)了改善對(duì)非連貫設(shè)備要執(zhí)行的任務(wù)的調(diào)度。公開(kāi)了用于調(diào)度多個(gè)非連貫處理設(shè)備中的一個(gè)處理設(shè)備要處理的任務(wù)的方法,這些處理設(shè)備中的至少兩個(gè)是異種設(shè)備并且任務(wù)中的至少一些是針對(duì)這些處理設(shè)備中的特定一個(gè)的,和包括非連貫設(shè)備和用于調(diào)度任務(wù)的任務(wù)調(diào)度器的數(shù)據(jù)處理裝置。這些處理設(shè)備處理本地存儲(chǔ)庫(kù)和這些處理設(shè)備中的至少一些可訪問(wèn)的存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)。方法包括對(duì)于處理設(shè)備要處理的多個(gè)非依從任務(wù)中的每個(gè),確定在處理非依從任務(wù)之前需執(zhí)行的一致性操作;執(zhí)行針對(duì)非依從任務(wù)之一的一致性操作并在完成時(shí)將該任務(wù)發(fā)出到處理設(shè)備以處理;執(zhí)行針對(duì)另一非依從任務(wù)的一致性操作,使得在這些一致性操作完成時(shí)處理設(shè)備可處理另一任務(wù)。
文檔編號(hào)G06F9/46GK102736949SQ201210085059
公開(kāi)日2012年10月17日 申請(qǐng)日期2012年3月26日 優(yōu)先權(quán)日2011年3月24日
發(fā)明者羅伯特·伊利奧特 申請(qǐng)人:Arm有限公司