專利名稱:圖形處理中管理活動線程依賴關(guān)系的制作方法
技術(shù)領(lǐng)域:
本發(fā)明 一般涉及圖形處理,并且確切地來說涉及圖形處理過程中 信息的解碼。
背景技術(shù):
為了減少往基于處理器的系統(tǒng)和從基于處理器的系統(tǒng)傳送數(shù)據(jù) 的帶寬,可以采用壓縮信息的方式來對信息編碼。當(dāng)該信息到達(dá)接收 基于處理器的系統(tǒng)時,必須將其解碼或解壓。
通常,在具有許多執(zhí)行單元的系統(tǒng)中,可以利用軟件來跟蹤線程
依賴關(guān)系(dependency)-其中一個線程的執(zhí)行依賴于另一個線程的執(zhí) 行。線程依賴關(guān)系是重要的,因為當(dāng)有大量線程,并且一些線程必須 在另一些線程之前執(zhí)行時,必須考慮這些依賴關(guān)系。但是當(dāng)線程的數(shù) 量很大,且依賴關(guān)系的數(shù)量很大時,維護所有線程和所有依賴關(guān)系的 狀態(tài)4主4主4艮麻煩。
發(fā)明內(nèi)容
本發(fā)明提供了一種方法,包括在寄存器中,通過僅跟蹤所述寄 存器接收的尚未完成執(zhí)行的線程,管理線程和線程依賴關(guān)系,以便由 多個執(zhí)行單元來執(zhí)行線程。
本發(fā)明還提供了一種設(shè)備,包括視頻前端;以及耦合到所述視 頻前端的寄存器,耦合到線程調(diào)度器的線程響應(yīng)器,以及所述寄存器 僅跟蹤所述寄存器接收的尚未完成執(zhí)行的線程。
本發(fā)明還4是供了一種系統(tǒng),包括
圖形處理器,包括視頻前端;
耦合到所述視頻前端的線程派生器,所述線程派生器包括記分 牌,所述記分牌僅維護所述記分牌接收的尚未完成執(zhí)行的線程;
耦合到所述線程派生器的線程調(diào)度器; 耦合到所述線程調(diào)度器的多個執(zhí)行單元;以及 耦合到所述處理器的硬盤驅(qū)動器。
圖1是根據(jù)本發(fā)明的一個實施例的系統(tǒng)說明; 圖2是本發(fā)明的一個實施例的示意圖說明;
圖3是示出根據(jù)一個實施例的圖1的線程派生器(spawner)的框
圖4是兩個不同幀中的宏塊的說明;以及
圖5是根據(jù)本發(fā)明的一個實施例的圖2的記分牌寄存器22的說明。
圖5是根據(jù)本發(fā)明的一個實施例的系統(tǒng)說明。
具體實施例方式
圖1所示的計算機系統(tǒng)130可以包括通過總線104耦合到芯片組 核邏輯110的硬盤驅(qū)動器134和可移動i某體136。在一個實施例中, 核邏輯可以耦合到圖形處理器112(經(jīng)由總線105)和主或宿主處理器 100。還可以通過總線106將圖形處理器112耦合到幀緩沖器114。可 以通過總線107將幀緩沖器114耦合到顯示屏118,然后顯示屏118 又通過總線108耦合到常規(guī)組件,例如鍵盤或鼠標(biāo)120。
在軟件實現(xiàn)的情況中,可以將相關(guān)代碼存儲在任何適合的半導(dǎo) 體、磁或光存儲器(包括主存儲器132)中。因此,在一個實施例中,代 碼139可以存儲在機器可讀々某體(例如主存儲器132)中,以便供處理器 (例如處理器100或圖形處理器112)執(zhí)行。參考圖2,圖形核邏輯110可以包括圖形流水線。圖形流水線可
以包括命令流操作器(command streamer)10、視頻前端12和耦合到線 程調(diào)度器18的線程派生器14,此外還包括一些其他組件。
圖形核邏輯110可以通過命令流操作器10從驅(qū)動程序或圖形處 理器112或主處理器100執(zhí)行的其他軟件來接收輸入。通常,驅(qū)動程 序提供必須由圖形處理器112的多個執(zhí)行單元16來執(zhí)行的工作。由線 程調(diào)度器18來調(diào)度必須執(zhí)行的任務(wù)。線程派生器14創(chuàng)建任務(wù),然后 由執(zhí)行單元16來執(zhí)行線程。
在一個實施例中,命令流操作器10可以是用于提取控制始發(fā)于 宿主或主處理器100的線程生成的命令的直接存儲器訪問引擎。視頻 前端12包含視頻處理功能。線程派生器14負(fù)責(zé)生成并仲裁始發(fā)于可 能包括處理單元16的宿主和圖形處理器112的線程。線程調(diào)度器16 仲裁線程生成請求。
參考圖3,線程派生器14包括根線程請求隊列20,線程派生器 14從視頻前端12接收這些根線程請求。根線程是可以創(chuàng)建后續(xù)子線 程的線程。這些線程請求被存儲在根線程請求隊列20中。任何由執(zhí) 行單元16中運行的另一個線程創(chuàng)建的線程稱為子線程。子線程可以 創(chuàng)建附加線程,全部均在經(jīng)由視頻前端12路徑請求的根的樹之下。
并隨后跟蹤一皮調(diào)度的線程直到它們? j退(retirement)為止。線程派生器 14還在根和子線程之間執(zhí)行仲裁。線程請求隊列20饋送(feed)記分牌 (scoreboard) 22,記分牌22管理線程間的依賴關(guān)系以及根線程的調(diào)度 (dispatch)。派生線程請求隊列32負(fù)責(zé)請求>^4艮線程派生的線程。
來自記分牌22的輸出去到緩沖器24,而來自派生線程請求隊列 32的輸出去到緩沖器34。將這兩個緩沖器24和34同步,如緩沖器 24與34之間的箭頭A所示。緩沖器24的輸出是根線程,而緩沖器 34的輸出是子線程。由同步乘法器26將這些線程同步以便傳輸?shù)骄€ 程調(diào)度器18。記分牌22考慮線程之間的空間依賴關(guān)系。圖4可以用于說明兩 個不同幀Z和Z + A內(nèi)和之間的空間依賴關(guān)系的示例。在幀Z中,所 關(guān)心的宏塊可具有相對于幀內(nèi)所有其他宏塊的坐標(biāo)(X, Y),其中X和 Y給出行和列坐標(biāo)。假定圖像的原點(O, O)在左上角,宏塊(X, Y)正上 方的宏塊是(X, Y-l),而緊靠宏塊(X, Y)左邊的是(X-l, Y),并以此類推。 為了將給定宏塊解碼,可能需要從其鄰居(例如鄰居(X-l, Y)、 (X-l, y-l)、 (X, Y-1)和(X+1, Y-l))解碼信息。
可以通過記分牌22來跟蹤這些依賴關(guān)系。在由線程派生器調(diào)度 到執(zhí)行單元的過程中,記分牌22基本上相對于所關(guān)心的宏塊(在此情 況中為宏塊(X, Y))來考慮這些依賴關(guān)系。因此,如果宏塊(X, Y)依賴 于宏塊(X, Y+l),則宏塊(X, Y)與Y方向上+l的宏塊依賴關(guān)系之間存 在德爾塔(delta)??梢酝ㄟ^三坐標(biāo)系統(tǒng)來指定它,其中X是第一坐標(biāo)、 Y是第二坐標(biāo)以及Z是第三坐標(biāo)。因此,對于宏塊(X, Y)而言,通過 (0, l,O)的德爾塔來指定這種依賴關(guān)系。對于任何宏塊來說可能有許多 依賴關(guān)系,因此許多德爾塔被檢查。
Z方向包含兩個不同幀之間的依賴關(guān)系。例如,如果幀Z中的宏 塊(X, Y)依賴于幀Z+A中的宏塊(X, Y),則在Z方向上存在依賴關(guān)系。 此依賴關(guān)系還可以指定為(O, 0, A)的德爾塔。
些進程是A和B,則對所有A操作可以將Z設(shè)為等于零,以及對所 有B操作可以將Z設(shè)為等于1。這允許一個物理記分牌通過將所有Z 德爾塔值保持為零來管理許多邏輯記分牌。因此,可以使用Z來管理 (l)具有依賴關(guān)系的宏塊,(2)沒有依賴關(guān)系的宏塊,(3)不同幀上的宏 塊,或(4)涉及相同幀的不同操作的宏塊。
因此,參考圖5,其中示出記分牌22的更詳細(xì)操作,由框50處 理來自視頻前端12的線程請求,其獲取當(dāng)前線程的唯一線程標(biāo)識符 (TDID)并標(biāo)記記分牌寄存器68。記分牌寄存器68包括對應(yīng)于每個坐 標(biāo)X、 Y和Z的列以及對應(yīng)于每個編號的線程或每個線程標(biāo)識符的行。每個活動線程接收線程標(biāo)識符(具有標(biāo)識符1至N)以構(gòu)成記分牌寄存
器68的行。
簡單地標(biāo)記記分牌意味著無論何時,只要調(diào)度線程,則必須通知 記分牌寄存器68: —個線程在運行中。優(yōu)先級編碼器74通過查看寄 存器66中有效位來確定下一個可用線程標(biāo)識符是什么。寄存器66實 際上告知記分牌寄存器68中哪些位是有效的。因此,將下一個有效 位指定給下一個線程,然后在框50處將該線程視為"已標(biāo)記"。作為 被標(biāo)記的結(jié)果,在記分牌寄存器68中建立對應(yīng)于該線程標(biāo)識符的項 (entry),將該項置于適合的行中,其中這些行編號為從1至N。標(biāo)記 的線程提供其X、 Y和Z坐標(biāo),而作為回l艮,為該線程提供也可以視 為行號的線程標(biāo)識符。當(dāng)在執(zhí)行單元16中通過完成執(zhí)行將線程引退 時,該線程交還(surrender)其線程標(biāo)識符。
一般來說,雖然為所有線程提供線程標(biāo)識符,但是對于沒有依賴 關(guān)系的獨立線程在記分牌中需要的處理更少。那些線程可以從框50 向上傳遞,并上至仲裁器56的上方端口。
在先進先出(FIFO)緩沖器52中收集依賴線程。依賴線程的執(zhí)行 依賴于另一個潛在活動(潛在未執(zhí)行)的線程的執(zhí)行。這允許移動通過 框50的多個依賴線程離開(get them out of the way),使得確保在未決 的依賴關(guān)系使依賴線程FIFO緩沖器52停滯時可以快速地處理獨立線 程并將其傳送到仲裁器56。仲裁器56在依賴線程停滯時查看獨立線程。
然后依次從先進先出緩沖器52處理依賴線程。在框72中標(biāo)識它 們的依賴關(guān)系,并在一些情況中可以利用那些依賴關(guān)系來標(biāo)記線程依 賴關(guān)系寄存器30???4將依賴關(guān)系和那些依賴關(guān)系的X、 Y和Z坐 標(biāo)提供到框72。在一個實施例中,如果兩種類型的線程都已就緒可供 調(diào)度,則可以對依賴線程賦予較高的優(yōu)先級。如上所述,框72從線 程的坐標(biāo)以及其中存在依賴關(guān)系的宏塊或幀的相對坐標(biāo)來確定 (develop)德爾塔。在記分牌22的一個操作模式(稱為"停滯模式")中,記分牌22 在生成下一個X、 Y和Z坐標(biāo)或德爾塔,或清除當(dāng)前線程以用于調(diào)度 之前等待匹配。因此,在停滯模式中,直到某線程依賴的所有線程都 被引退(即被執(zhí)行且不再處于活動,即引退)之后,才啟動該線程。因 此,當(dāng)遇到停滯模式且緩沖器52變滿時,線程FIFO緩沖器52還通 知^L頻前端12,如框52下方箭頭所指示的。
仲裁器56選擇要由執(zhí)行單元16執(zhí)行的獨立或依賴線程,以便通 過線程有效負(fù)荷58傳遞它。已經(jīng)由執(zhí)行單元16執(zhí)行的線程回到框60, 這將從記分牌寄存器68以及任何匹配線程寄存器30中清除線程標(biāo)識 符。比較器62幫助發(fā)現(xiàn)匹配線程寄存器30。
因此, 一旦執(zhí)行了線程,則需要通知其執(zhí)行依賴于該線程的執(zhí)行 的任何線程。尤其在停滯模式中,線程在它依賴的所有線程被執(zhí)行之 前無法被調(diào)度。比較器62可以用于重設(shè)線程依賴關(guān)系寄存器30以移 除在檢查線程依賴關(guān)系期間引退的任何線程的依賴關(guān)系。
然后,內(nèi)容可尋址存儲器或CAM 70確定寄存器68中是否有希 望進行調(diào)度的線程依賴于之的任何線程。如果在記分牌寄存器68的 任何行中均沒有項,則可以推斷當(dāng)前在執(zhí)行中沒有此類依賴線程,并 且可以將該線程作為就緒可調(diào)度來釋放,并可以從框54將其傳遞到 仲裁器56中。如果在停滯模式中有依賴關(guān)系,則可以強制該線程等 待那些依賴關(guān)系清除。
根據(jù)記分牌22的另一個操作模式(稱為廣播模式),該模式比停滯 模式更魯棒(robust),確定要調(diào)度的給定線程的依賴關(guān)系,獲取那些依 賴關(guān)系的線程標(biāo)識符,并將其置于線程依賴關(guān)系寄存器30中,然后 即使那些依賴關(guān)系仍存在或未決(outstanding),仍調(diào)度該線程。
實際上,將該線程調(diào)度到執(zhí)行單元16,并指令(call upon)該線程 管理它自己的依賴關(guān)系。該線程通過監(jiān)聽廣播到每個執(zhí)行單元16和 記分牌的引退線程TDID(框60)來執(zhí)行此目的。 一旦線程確定它所依 賴的所有線程均已被清除,則在執(zhí)行單元16中處于空閑狀態(tài)的該線程可以接著在該執(zhí)行單元16中執(zhí)行。
在一個實施例中,每個線程使用8個位來指示最多8個依賴關(guān)系 (各由德爾塔所指示)中哪個是重要的。這8個德爾塔按預(yù)定義的次序 加載到連續(xù)的線程依賴關(guān)系寄存器30中。隨后,該線程基于其8個 位獲知它必須檢查哪個依賴關(guān)系寄存器來確定涉及的這些依賴關(guān)系 是否已引退。
與停滯模式的差異在于,在廣播才莫式中,線程基本由記分牌來啟 動,然后線程實際通過觀察引退線程信息來自己控制它何時開始執(zhí) 行。在廣播才莫式中,從仲裁器56調(diào)度當(dāng)前線程,其具有未決依賴關(guān) 系和線程依賴關(guān)系寄存器30的附加有效負(fù)荷,該附加有效負(fù)荷包含 所有未決依賴線程的線程標(biāo)識符。
當(dāng)給定線程通過執(zhí)行單元16執(zhí)行而引退時,除了通知記分牌22 外,它還將其線程標(biāo)識符廣播到所有執(zhí)行單元16。 一旦調(diào)度的線程接 收到與它一起調(diào)度的所有線程依賴關(guān)系寄存器的線程標(biāo)識符,則調(diào)度 的線程開始執(zhí)行。
在又一種操作模式(稱為依序模式)中,記分牌22標(biāo)記依賴于緊接 當(dāng)前線程之前調(diào)度的線程的線程標(biāo)識符的每個線程。
根據(jù)本發(fā)明的一些實施例,記分牌22可以采用硬件來實現(xiàn),這 可以提高性能和速度。在一些實施例中,硬件記分牌22可以更有效 率地以無序方式調(diào)度線程,從而允許對工作量重新排序以實現(xiàn)性能提 高。在一些實施例中,記分牌22要求的唯一規(guī)則是,其執(zhí)行依賴于 線程B的執(zhí)行的線程A必須在線程B到達(dá)記分牌22之后到達(dá)記分牌 22。如果線程A在線程B之前到達(dá),則記分牌將注意不到線程B而 假定線程B已引退,因此不正確地清除線程A。但是,可執(zhí)行任何其 他重新排序,例如為了提高性能。 一般,在一些實施例中,驅(qū)動程序 確保該規(guī)則始終^皮遵守。
在一些實施例中,必須執(zhí)行的線程的數(shù)量遠(yuǎn)超過記分牌22中的 活動線程的數(shù)量。在一些實施例中,通過使記分牌22能夠僅跟蹤活動線程(即,尚未引退的線程),可以大大地提高記分牌的大小和效率。
圖1、 2、 3和5中指示的框可以構(gòu)成硬件和軟件組件。在軟件組 件的情況中,附圖可以指示可存儲在計算機可讀々某體(諸如半導(dǎo)體集成 電路存儲器、光存儲裝置或磁存儲裝置等)中的指令序列。在此類情況 中,指令可由計算機或基于處理器的系統(tǒng)來執(zhí)行,計算機或基于處理 器的系統(tǒng)從存儲裝置中檢索指令并執(zhí)行它們。在一些情況中,指令可 以是可存儲在適合的存儲+某體中的固件。
本文描述的圖形處理技術(shù)可以在各種硬件體系結(jié)構(gòu)中實現(xiàn)。例 如,可以將圖形功能性集成到芯片組內(nèi)?;蛘?,可以使用離散的圖形 處理器。作為又一個實施例,可以由通用處理器(包括多核處理器)來 實現(xiàn)圖形功能。
雖然本發(fā)明是參考有限數(shù)量的實施例來描述的,但是本領(lǐng)域技術(shù) 人員將認(rèn)識到許多修改和變化。所附權(quán)利要求意在涵蓋落在本發(fā)明的 真正精神和范圍內(nèi)的所有此類修改和變化。
權(quán)利要求
1.一種方法,包括在寄存器中,通過僅跟蹤所述寄存器接收的尚未完成執(zhí)行的線程,管理線程和線程依賴關(guān)系,以便由多個執(zhí)行單元來執(zhí)行線程。
2. 如權(quán)利要求l所述的方法,包括使線程執(zhí)行能夠重新排序。
3. 如權(quán)利要求l所述的方法,包括只要如下情況成立,則使線程執(zhí)行的次序能夠更改成任何次序依賴于另 一個線程的完成的一個線程必須在所述另一個線程到達(dá)所述寄存器之后到達(dá)以記分牌形式的 所述寄存器。
4. 如權(quán)利要求1所述的方法,包括在線程的所有依賴關(guān)系完成了 執(zhí)行之前啟動所述線程來執(zhí)行。
5. 如權(quán)利要求4所述的方法,包括使線程能夠管理它自己的依賴 關(guān)系。
6. 如權(quán)利要求5所述的方法,包括將一個執(zhí)行單元中線程執(zhí)行的 完成向其他執(zhí)行單元廣播。
7. 如權(quán)利要求l所述的方法,包括確定空間依賴關(guān)系,包括確定 一個宏塊的線程對相鄰宏塊的線程的執(zhí)行的依賴關(guān)系,以及確定一個 線程對不同幀中的線程的依賴關(guān)系。
8. 如權(quán)利要求7所述的方法,包括使用坐標(biāo)來指示相同幀上的空 間依賴關(guān)系和不同邏輯進程。
9. 如權(quán)利要求1所述的方法,包括通過指示相同幀內(nèi)的宏塊和不 同幀中的宏塊的坐標(biāo)之間的德爾塔來指示兩個線程之間的依賴關(guān)系。
10. —種設(shè)備,包括 牙見頻前端;以及耦合到所述視頻前端的寄存器,耦合到線程調(diào)度器的線程響應(yīng) 器,以及所述寄存器僅跟蹤所述寄存器接收的尚未完成執(zhí)行的線程。
11. 如權(quán)利要求10所述的設(shè)備,包括耦合到所述寄存器的執(zhí)行單 元,所述寄存器是記分牌。
12. 如權(quán)利要求10所述的設(shè)備,其中所述寄存器是包括記分牌寄存器的記分牌,所述記分牌寄存器通過線程標(biāo)識符列出線程,并且對 于每個線程提供關(guān)聯(lián)的宏塊的坐標(biāo)。
13. 如權(quán)利要求12所述的設(shè)備,所述記分牌包括存儲未決線程依 賴關(guān)系的寄存器。
14. 如權(quán)利要求13所述的設(shè)備,所述記分牌使線程能夠在依賴關(guān) 系已清除之前啟動。
15. 如權(quán)利要求12所述的設(shè)備,所述記分牌接收執(zhí)行的線程的線 程標(biāo)識符,使執(zhí)行的線程的線程標(biāo)識符引退,以及使等待依賴關(guān)系的 執(zhí)行的線程能夠監(jiān)聽執(zhí)行的線程的線程標(biāo)識符。
16. 如權(quán)利要求10所述的設(shè)備,其中所述設(shè)備使線程執(zhí)行能夠重 新排序。
17. 如權(quán)利要求15所述的設(shè)備,其中只要如下情況成立,則所述 記分牌能夠進行任何重新排序其執(zhí)行依賴于另 一個線程的一個線程 在所述另一個線程到達(dá)所述記分牌之后到達(dá)所述記分牌。
18. 如權(quán)利要求10所述的設(shè)備,所述寄存器在處理依賴于其他線 程的線程之前處理不依賴于其他線程的線程。
19. 如權(quán)利要求18所述的設(shè)備,所述寄存器包括線程依賴關(guān)系寄 存器,所述線程依賴關(guān)系寄存器通過存儲所述依賴關(guān)系來指示線程的 所述依賴關(guān)系。
20. 如權(quán)利要求10所述的設(shè)備,所述寄存器管理多個邏輯記分牌。
21. —種系統(tǒng),包括 圖形處理器,包括 -f見頻前端;耦合到所述視頻前端的線程派生器,所述線程派生器包括記分牌,所述記分牌僅維護所述記分牌接收的尚未完成執(zhí)行的線程; 耦合到所述線程派生器的線程調(diào)度器; 耦合到所述線程調(diào)度器的多個執(zhí)行單元;以及 耦合到所述處理器的硬盤驅(qū)動器。
22. 如權(quán)利要求21所述的系統(tǒng),其中所述記分牌包括記分牌寄存 器,所述記分牌寄存器通過線程標(biāo)識符列出線程,并且對于每個線程 提供關(guān)聯(lián)的宏塊的坐標(biāo)。
23. 如權(quán)利要求22所述的系統(tǒng),所述記分牌包括存儲線程依賴關(guān) 系的寄存器。
24. 如權(quán)利要求23所述的系統(tǒng),所述記分牌向多個其他^丸行單元 廣播一個執(zhí)行單元對線程執(zhí)行的完成。
25. 如權(quán)利要求24所述的系統(tǒng),所述記分牌接收執(zhí)行的線程的線 程標(biāo)識符,使執(zhí)行的線程的線程標(biāo)識符引退,以及使等待依賴關(guān)系的 執(zhí)行的線程能夠監(jiān)聽執(zhí)行的線程的線程標(biāo)識符。
全文摘要
本發(fā)明為圖形處理中管理活動線程依賴關(guān)系。視頻處理器的記分牌可以僅跟蹤尚未完成執(zhí)行的已調(diào)度的線程。第一個線程可以自行監(jiān)聽必須在第一個線程的執(zhí)行之前被執(zhí)行的第二個線程的執(zhí)行??梢詫€程執(zhí)行自由地重新排序,唯一要求的規(guī)則是,其執(zhí)行依賴于第一個線程的執(zhí)行的第二線程只能在第一個線程之后被執(zhí)行。
文檔編號G06F9/38GK101620527SQ20091015942
公開日2010年1月6日 申請日期2009年6月30日 優(yōu)先權(quán)日2008年6月30日
發(fā)明者H·姜, J·霍蘭, P·敘爾蒂 申請人:英特爾公司