两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

在計(jì)算機(jī)系統(tǒng)中延遲命令發(fā)出的方法和系統(tǒng)的制作方法

文檔序號:6561973閱讀:279來源:國知局
專利名稱:在計(jì)算機(jī)系統(tǒng)中延遲命令發(fā)出的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明總的涉及計(jì)算機(jī)的中央處理單元(CPU)與外圍處理單元之間的同步,具體涉及命令發(fā)出的定時(shí)。
背景技術(shù)
在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,每個(gè)外圍功能模塊(如音頻或視頻)具有它自己的專用處理子系統(tǒng),并且這些子系統(tǒng)的操作典型地要求計(jì)算機(jī)的中央處理單元(CPU)的直接控制。此外,子系統(tǒng)的部件之間的通信與同步典型地是通過硬件連接實(shí)現(xiàn)的。例如,在具有兩個(gè)或更多圖形處理單元(GPU)的高級圖形處理子系統(tǒng)中,CPU不得不頻繁地評估GPU的狀態(tài),并且只有當(dāng)前一或當(dāng)前命令結(jié)束時(shí),才能發(fā)出下一提供的(rendering)命令。在其他情況下,當(dāng)CPU在使用多線程技術(shù)為GPU進(jìn)行某些計(jì)算時(shí),GPU在執(zhí)行需要來自CPU的結(jié)果的命令之前,可能不得不等待CPU完成計(jì)算。當(dāng)一個(gè)GPU向另一GPU請求數(shù)據(jù)時(shí),必須在CPU的控制下通過直接硬件連接或總線進(jìn)行傳輸,于是CPU在執(zhí)行后繼命令之前,不得不等待數(shù)據(jù)傳輸完成。不管是CPU等待GPU還是反過來,等待時(shí)間都是一種浪費(fèi),并且降低了計(jì)算機(jī)的整體性能。
因此,期望計(jì)算機(jī)系統(tǒng)能夠盡可能地將硬等待與CPU的操作分開。

發(fā)明內(nèi)容
考慮到上述情況,本發(fā)明提供一種方法和系統(tǒng)來移除CPU的一些等待時(shí)間、以及外圍處理單元的一些空閑時(shí)間。換句話說,它增加處理器之間的并行度。
公開一種在具有多個(gè)外圍處理器的計(jì)算機(jī)系統(tǒng)中使用延遲命令發(fā)出的方法和系統(tǒng),所述多個(gè)外圍處理器與嵌入一個(gè)或多個(gè)中央處理器中的外圍設(shè)備驅(qū)動程序進(jìn)行操作。在外圍設(shè)備驅(qū)動程序發(fā)出具有第一事件標(biāo)記的第一命令之后,外圍設(shè)備驅(qū)動程序在發(fā)出第一命令之后,生成用于第一外圍處理器的第二命令。如果第一和第二命令需要被同步,則存儲第二命令,等待返回第一事件標(biāo)記,并且當(dāng)返回第一事件標(biāo)記時(shí),發(fā)出第二命令。
然而,當(dāng)下面結(jié)合附圖閱讀特定實(shí)施例的描述時(shí),本發(fā)明操作的結(jié)構(gòu)和方法、以及其額外目的和優(yōu)點(diǎn)將會得到最好地理解。


圖1是傳統(tǒng)計(jì)算機(jī)系統(tǒng)的部分的框圖。
圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的計(jì)算機(jī)系統(tǒng)的部分的框圖。
圖3示出根據(jù)本發(fā)明一個(gè)實(shí)施例的命令和事件標(biāo)記流。
圖4A是示出根據(jù)本發(fā)明一個(gè)實(shí)施例的命令塊生成和同步機(jī)制的流程圖。
圖4B、4C是示出根據(jù)本發(fā)明一個(gè)實(shí)施例的每個(gè)命令塊執(zhí)行中的三個(gè)不同的驅(qū)動子程序的流程圖。
圖5A和5B是示出根據(jù)本發(fā)明一個(gè)實(shí)施例的延時(shí)命令發(fā)出的省時(shí)效果的命令時(shí)序圖。
具體實(shí)施例方式
圖1示出傳統(tǒng)計(jì)算機(jī)系統(tǒng)100的部分。在該系統(tǒng)中,外圍設(shè)備驅(qū)動程序110僅僅是程序,功能在本質(zhì)上類似使用說明,其為操作系統(tǒng)提供關(guān)于如何控制和與外圍子系統(tǒng)140的專用處理器120和130通信的信息的指令。驅(qū)動程序110沒有任何由一個(gè)或多個(gè)中央處理器(CPU)150替代執(zhí)行的控制功能。通過硬件連接160或者通過總線170,進(jìn)行專用處理器120與130之間的通信。
作為本發(fā)明的實(shí)施例,圖2示出多處理器計(jì)算機(jī)系統(tǒng)200的部分,它具有嵌入一個(gè)或多個(gè)中央處理器220中的驅(qū)動程序210。這里,“嵌入”的意思是驅(qū)動程序?qū)嶋H上運(yùn)行在CPU中,并且使用了一些CPU處理能力,從而驅(qū)動程序可以產(chǎn)生存儲在緩存中的命令,當(dāng)需要與其他命令同步時(shí)分配事件標(biāo)記,發(fā)出命令并且監(jiān)視事件標(biāo)記的返回,而完全沒有CPU硬等待。這樣的驅(qū)動程序?qū)崿F(xiàn)不需要大規(guī)模的硬件支持,因此它也是節(jié)省成本的。
計(jì)算機(jī)系統(tǒng)200還采用命令緩存器230,后者存儲驅(qū)動程序210發(fā)送的即時(shí)命令。命令緩存器230可以僅僅是主存儲器290中的存儲空間,或者是位于任何地方的另一存儲器,并且可以由驅(qū)動程序210動態(tài)地分配。利用中央處理器220的處理能力,驅(qū)動程序210指揮將命令緩存到命令緩存器230中和以后從命令緩存器230中發(fā)出命令,以及指揮專用處理器240和250與中央處理器220之間的同步。專用處理器可以是專用于圖形操作的處理器,稱為圖形處理單元(CPU)。
圖3是示出根據(jù)本發(fā)明一個(gè)實(shí)施例的CPU、緩存器與專用處理器之間的命令流的圖。為了說明的目的,提供了更多關(guān)于命令緩存的細(xì)節(jié)。嵌入的驅(qū)動程序320連同事件標(biāo)記一起生成命令,然后將其有選擇地發(fā)送到命令緩存器330和340。專用處理器1350的命令和事件標(biāo)記被送到命令緩存器1330,而專用處理器2360的命令和事件標(biāo)記被送到命令緩存2340,從而可以獨(dú)立和同時(shí)發(fā)出不同專用處理器的命令。當(dāng)當(dāng)前命令需要與另一命令執(zhí)行同步時(shí),驅(qū)動程序320伴隨著當(dāng)前命令生成事件標(biāo)記。處理器,不管是外圍專用處理器350和360、還是中央處理器300,都執(zhí)行它們相應(yīng)的命令,并且在執(zhí)行完成后返回事件標(biāo)記(如果有的話)。它們之間存在通過通信建立的多種控制機(jī)制。例如,中央處理器300可以在其操作中控制這兩個(gè)緩存器。
圖4A展示了圖形驅(qū)動程序320如何與GPU和CPU同步命令發(fā)出的詳細(xì)流程圖。這里,驅(qū)動程序320在步驟410A到470A中連續(xù)生成命令塊而沒有在CPU側(cè)的任何延遲。這些命令中的一些在被送到GPU執(zhí)行之前,要被存儲在命令緩存器中。例如,命令塊[n-1]410A具有到第一GPU的、請求返回事件標(biāo)記[i]的命令。第一GPU將在命令塊[n-1]410A完成后返回事件標(biāo)記[i]。在檢測到事件標(biāo)記[i]后,驅(qū)動程序320于是可以從命令緩存器中發(fā)出需要與命令塊[n-1]410A同步的另一命令。這樣,消除了CPU對同步事件的硬等待。術(shù)語“延遲命令發(fā)出”泛指該命令緩存過程。
圖4A還示出需要與另一CPU線程同步的命令塊[n+m]440A以及需要與第二GPU同步的命令塊[n+m+k]470A。在這兩種情況中,驅(qū)動程序320的存儲命令、檢查事件標(biāo)記和發(fā)出命令的操作與上面第一GPU情況中的相同。
在每個(gè)命令塊中,驅(qū)動程序320執(zhí)行特定子程序,如生成新命令和相關(guān)事件標(biāo)記(如果需要的話),檢查返回的事件標(biāo)記,緩存新命令,以及發(fā)出緩存的命令,或者如果沒有待決的事件標(biāo)記的話直接發(fā)出新命令。這些子程序可以以各種順序執(zhí)行。圖4B、4C和4D是執(zhí)行這些子程序的三個(gè)例子。
參照圖3和圖4B,驅(qū)動程序320首先在步驟410B中生成當(dāng)前命令,然后在步驟420B中檢查任何返回的事件標(biāo)記。如果存在返回的事件標(biāo)記,并且如果相關(guān)的命令在緩存器中,則驅(qū)動程序320將緩存的命令與其自己的事件標(biāo)記(如果有的話)一同發(fā)出,如步驟430B和440B中所示。這里,“相關(guān)”的意思是指在緩存的命令與向緩存器返回事件標(biāo)記的前一命令之間存在同步需要。如果相關(guān)命令不在緩存器中,則驅(qū)動程序320在步驟450B中檢查當(dāng)前命令是否與返回的事件標(biāo)記相關(guān)。如果是的話,則它發(fā)出當(dāng)前命令(步驟470B),否則,它緩存當(dāng)前命令(步驟480B)。
另一方面,如果緩存器中不存在返回的事件標(biāo)記,則驅(qū)動程序320在步驟460B中檢查任何待決事件標(biāo)記。在存在當(dāng)前命令發(fā)出將依賴或相關(guān)的待決事件標(biāo)記的情況下,則驅(qū)動程序320緩存當(dāng)前命令(步驟480B)。在不存在待決相關(guān)事件標(biāo)記的情況下,驅(qū)動程序320直接發(fā)出當(dāng)前命令。要注意,在所有命令緩存或發(fā)出的情況中,相關(guān)的事件標(biāo)記(如果存在的話)也連同命令一起被緩存或發(fā)出。
圖4C示出根據(jù)本發(fā)明另一實(shí)施例的另一子程序,其中驅(qū)動程序320首先在步驟410C中檢查任何返回的事件標(biāo)記。如果存在返回的事件標(biāo)記,并且如果相關(guān)的命令在緩存器中,則驅(qū)動程序320發(fā)出緩存的命令(步驟430C)。如果不存在返回的事件標(biāo)記(步驟410C),或者緩存器中不存在相關(guān)命令(步驟420C),則驅(qū)動程序320生成當(dāng)前命令(步驟445C)。如果當(dāng)前命令與任何返回的事件標(biāo)記相關(guān)(步驟450C),則驅(qū)動程序發(fā)出當(dāng)前命令(步驟480C)。如果當(dāng)前命令不與任何返回的事件標(biāo)記相關(guān),則它還檢查是否存在任何與當(dāng)前命令相關(guān)的待決事件標(biāo)記(步驟460C)。在存在待決的相關(guān)事件標(biāo)記的情況下,驅(qū)動程序320將當(dāng)前命令與其事件標(biāo)記(如果有的話)一同緩存(步驟470C),否則驅(qū)動程序320發(fā)出當(dāng)前命令與其事件標(biāo)記(如果存在的話)(步驟480C)。上述事件標(biāo)記檢查過程可以僅限于那些以前向其發(fā)送了命令與事件標(biāo)記的處理器。
在圖4B和4C所示的兩種情況下,作為替代,如果存在任何待決的事件標(biāo)記,則總是緩存當(dāng)前命令。如果驅(qū)動程序320只檢查事件標(biāo)記緩存器,則在待決事件標(biāo)記返回之前,驅(qū)動程序320事實(shí)上沒有辦法知道它是否與新生成的當(dāng)前命令相關(guān)。因此如果存在任何待決的事件標(biāo)記,那么需要緩存當(dāng)前命令。
圖5A和5B是示出減少CPU等待時(shí)間和GPU空閑時(shí)間的延遲命令發(fā)出的時(shí)序圖。圖5A顯示不采用延遲命令發(fā)出過程的情形。在這種情況下,CPU在時(shí)隙500A、510A和520A中分別生成用于第一GPU(或GPU1)在時(shí)隙550A、560A和570A中的命令。在時(shí)隙502A、512A和522A中生成的命令分別是用于第二GPU(或GPU2)在時(shí)隙552A、562A和572A中。由于沒有采用命令緩存過程,因此只有當(dāng)當(dāng)前GPU操作完成時(shí)才能生成和發(fā)出后繼命令。例如,時(shí)隙510A只能在時(shí)隙552A之后開始,類似地,時(shí)隙520A只能在時(shí)隙562A之后開始。在之前發(fā)出的命令被執(zhí)行期間,CPU不得不等待。如圖所示,兩個(gè)相鄰時(shí)隙之間的時(shí)間間隔為CPU等待時(shí)間或GPU空閑時(shí)間。例如,510A和502A之間的間隔是CPU的等待時(shí)間,而560A和550A之間的間隔是GPU1的空閑時(shí)間。
與圖5A相對比,圖5B示出在采用延遲命令發(fā)出過程以允許CPU連續(xù)生成命令到命令緩存器、而不必等待任何GPU完成命令執(zhí)行的情形下的時(shí)序關(guān)系。在這種情況下,CPU在時(shí)隙500B、510B和520B中分別生成用于GPU1在時(shí)隙550B、560B和570B中的命令。在時(shí)隙502B、512B和522B中生成的命令分別是用于GPU2在時(shí)隙552B、562B和572B中。如圖所示,CPU命令生成時(shí)隙510B被上提到緊跟時(shí)隙502B的完成,而在GPU2時(shí)隙552B結(jié)束之前。但是在時(shí)隙520B的CPU的第五命令仍然等待時(shí)隙552B結(jié)束,這是因?yàn)樵撎囟钆cGPU2執(zhí)行之間存在同步需要,在530B的命令和在562B的GPU2執(zhí)行也是如此。在這樣的命令處理系統(tǒng)中,尤其是對于采用這樣的延遲命令發(fā)出過程的圖形系統(tǒng),由于后繼命令已經(jīng)被生成并在命令緩存器中等待GPU執(zhí)行,因此獲得了好處。另一方面,GPU不需要等待CPU生成命令,并且可以在當(dāng)前命令結(jié)束之后執(zhí)行下一命令。這在GPU2在時(shí)隙562B和572B的情況中進(jìn)一步示出,其中GPU2沒有空閑時(shí)間?;谕瑯拥脑?,時(shí)隙570B和560B之間的GPU1空閑時(shí)間也減少。
為了量化通過采用的延遲命令發(fā)出過程而節(jié)省的時(shí)間,如果假設(shè)CPU命令生成時(shí)間為‘t’,并且GPU1和GPU2的執(zhí)行時(shí)間分別為T1和T2(為了容易估計(jì),假設(shè)T1<T2),如圖5A所示,不使用延遲命令發(fā)出的系統(tǒng)花費(fèi)3*T2+3*t來完成三個(gè)命令周期。圖5B的具有延遲命令發(fā)出的系統(tǒng)將三周期的時(shí)間縮短到3*T2+t。因此,對于三個(gè)周期,節(jié)省的時(shí)間為2*t。一般地說,對于n個(gè)命令周期,節(jié)省(n-1)*t。
圖5A與5B之間的比較還顯示出GPU空閑時(shí)間的節(jié)省。在圖5A中,時(shí)隙560A與570A之間的GPU1空閑時(shí)間為T2-T1+t,并且GPU2空閑時(shí)間為t。在圖5B中,對應(yīng)時(shí)隙之間的GPU1空閑時(shí)間變?yōu)門2-T1,或者說節(jié)省了t。GPU2空閑時(shí)間完全被消除,也節(jié)省了t。
本發(fā)明提供用于實(shí)現(xiàn)本發(fā)明不同特征的許多不同的實(shí)施例或例子。描述部件或方法的特定例子以幫助闡明本公開。它們當(dāng)然僅僅是例子,而不是意圖將本公開限制于說明書所描述的內(nèi)容。
本申請要求于2005年10月18日提交的名為“Smart CPU SyncTechnology for MultiGPU Solution”的美國專利申請No.60/727668的優(yōu)先權(quán)。
權(quán)利要求
1.一種在具有一個(gè)或多個(gè)專用處理器的計(jì)算機(jī)系統(tǒng)中延遲命令發(fā)出的方法,所述一個(gè)或多個(gè)專用處理器用運(yùn)行在一個(gè)或多個(gè)中央處理器上的設(shè)備驅(qū)動程序進(jìn)行操作,該方法包括外圍設(shè)備驅(qū)動程序發(fā)出第一命令與第一事件標(biāo)記;外圍設(shè)備驅(qū)動程序在發(fā)出第一命令之后,生成用于第一外圍處理器的第二命令;存儲第二命令,等待返回第一事件標(biāo)記;以及當(dāng)返回第一事件標(biāo)記時(shí),發(fā)出第二命令。
2.如權(quán)利要求1所述的方法,其中,所述存儲第二命令的步驟還包括將第二命令存儲在與第一處理器相關(guān)的緩存器中。
3.如權(quán)利要求2所述的方法,還包括生成用于第二處理器的第三命令;以及將第三命令存儲在與其相關(guān)的緩存器中。
4.如權(quán)利要求3所述的方法,其中,與第一和第二處理器相關(guān)的緩存器是不同的。
5.如權(quán)利要求1所述的方法,還包括檢查生成的第二命令是否與第一命令相關(guān),要求在第二命令發(fā)出前返回第一事件標(biāo)記。
6.如權(quán)利要求5所述的方法,其中,所述檢查步驟還包括檢查第一事件標(biāo)記是否已返回;以及如果還未返回第一事件標(biāo)記,并且如果第一事件標(biāo)記與第二命令相關(guān),則檢查第一事件標(biāo)記是否是待決的。
7.如權(quán)利要求6所述的方法,其中,所述檢查第一事件標(biāo)記是否已返回的步驟是在如下兩個(gè)時(shí)間之一時(shí)執(zhí)行的生成第二命令之后;生成第二命令之前。
8.一種在具有多個(gè)圖形處理器的計(jì)算機(jī)系統(tǒng)中延遲命令發(fā)出的方法,所述多個(gè)圖形處理器用嵌入多線程中央處理器中的圖形驅(qū)動程序進(jìn)行操作,該方法包括圖形驅(qū)動程序發(fā)出第一命令與第一事件標(biāo)記;圖形驅(qū)動程序在發(fā)出第一命令之后,生成用于計(jì)算機(jī)系統(tǒng)的第一處理器的第二命令;存儲第二命令,等待返回第一事件標(biāo)記;以及當(dāng)返回第一事件標(biāo)記時(shí),發(fā)出第二命令。
9.如權(quán)利要求8所述的方法,其中,所述存儲第二命令的步驟還包括將第二命令存儲在與第一處理器相關(guān)的緩存器中。
10.如權(quán)利要求9所述的方法,還包括生成到第二處理器的第三命令;以及將第三命令存儲在與其相關(guān)的緩存器中。
11.如權(quán)利要求10所述的方法,其中,與第一和第二處理器相關(guān)的緩存器是不同的。
12.如權(quán)利要求8所述的方法,還包括檢查生成的第二命令是否需要等待第一事件標(biāo)記返回。
13.如權(quán)利要求12所述的方法,其中,所述檢查步驟還包括檢查第一事件標(biāo)記是否已返回;以及如果還未返回第一事件標(biāo)記,則檢查第一事件標(biāo)記是否是待決的。
14.如權(quán)利要求13所述的方法,其中,所述檢查第一事件標(biāo)記是否已返回的步驟是在如下兩個(gè)時(shí)間之一時(shí)執(zhí)行的生成第二命令之后;生成第二命令之前。
15.一種在高級計(jì)算機(jī)系統(tǒng)中支持延遲命令發(fā)出的系統(tǒng),該系統(tǒng)包括多線程中央處理單元CPU;具有多個(gè)圖形處理單元的圖形子系統(tǒng);至少一個(gè)命令緩存器,用于存儲命令和相關(guān)事件標(biāo)記;和嵌入CPU中的圖形驅(qū)動程序,用于生成要存儲在命令緩存器中的命令,當(dāng)需要同步時(shí)分配事件標(biāo)記,控制命令發(fā)出并監(jiān)視事件標(biāo)記返回。
全文摘要
公開一種在具有多個(gè)外圍處理器的計(jì)算機(jī)系統(tǒng)中延遲命令發(fā)出的方法,所述多個(gè)外圍處理器用嵌入多線程中央處理器中的外圍設(shè)備驅(qū)動程序進(jìn)行操作。在外圍設(shè)備驅(qū)動程序發(fā)出第一命令與第一事件標(biāo)記之后,外圍設(shè)備驅(qū)動程序在發(fā)出第一命令之后,生成用于第一外圍處理器的第二命令。如果第一和第二命令需要被同步,則存儲第二命令,等待返回第一事件標(biāo)記,并且當(dāng)返回第一事件標(biāo)記時(shí),發(fā)出第二命令。
文檔編號G06F9/46GK101025717SQ20061013594
公開日2007年8月29日 申請日期2006年10月17日 優(yōu)先權(quán)日2005年10月18日
發(fā)明者張國峰 申請人:威盛電子股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
塔河县| 常山县| 遂平县| 芦溪县| 新源县| 慈利县| 广德县| 靖远县| 平泉县| 仲巴县| 遂平县| 大庆市| 巴南区| 阿拉善盟| 台南市| 仁化县| 光山县| 平谷区| 梓潼县| 通渭县| 浑源县| 辉南县| 长乐市| 溆浦县| 清镇市| 马鞍山市| 定边县| 汕尾市| 丰县| 肇州县| 遵化市| 蒲城县| 密山市| 嘉荫县| 五原县| 静海县| 金门县| 涪陵区| 神农架林区| 响水县| 永济市|