專利名稱:圖形處理事件同步的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)案請(qǐng)求2005年10月18日申請(qǐng)的美國(guó)專利申請(qǐng)案第60/727,668號(hào)「用于多重圖形處理單元(GPU)解決方案的智能型中央處理單元(CPU)同步技術(shù)」的權(quán)利。本申請(qǐng)案也與美國(guó)專利申請(qǐng)案第60/727,635號(hào)有關(guān),后者與本申請(qǐng)案為共同擁有并一起申請(qǐng),其內(nèi)容以引用的方式全部并入本文中。
本發(fā)明涉及一種具有多重圖形處理單元(GPU)的計(jì)算機(jī)系統(tǒng)中的圖形處理同步(synchronization),更特定言之,涉及圖像轉(zhuǎn)譯(image rendering)與翻轉(zhuǎn)(flipping)的時(shí)序(timing)。
背景技術(shù):
現(xiàn)代計(jì)算機(jī)系統(tǒng)通常采用多重圖形處理單元(GPU)來同時(shí)轉(zhuǎn)譯圖像,并將此等圖像存儲(chǔ)在多個(gè)緩沖器中。某一特定的GPU(稱為主GPU)連接到顯示驅(qū)動(dòng)器。所有圖像都通過圖形驅(qū)動(dòng)器的翻轉(zhuǎn)操作,并從與主GPU關(guān)聯(lián)的一或多個(gè)緩沖器來顯示。翻轉(zhuǎn)是將之前的前緩沖器變成后緩沖器,并將之前的后緩沖器變成前緩沖器。所謂的「前緩沖器」是目前將圖像提供到顯示驅(qū)動(dòng)器的緩沖器,而后緩沖器是準(zhǔn)備從轉(zhuǎn)譯或位區(qū)塊傳送接收?qǐng)D像的緩沖器。
位區(qū)塊傳送(BLT)將來自兩個(gè)緩沖器的兩個(gè)圖像(例如,位圖)圖案合而為一。由于只有一主GPU進(jìn)行翻轉(zhuǎn),因此所有其它GPU都是從屬的。從GPU所轉(zhuǎn)譯的圖像最終以位區(qū)塊傳送的方式從其自身的緩沖器傳送到與主GPU關(guān)聯(lián)的主緩沖器。圖形驅(qū)動(dòng)器還管理BLT時(shí)序以及已轉(zhuǎn)譯及隨后傳送的圖像來源與目標(biāo)緩沖器中的存儲(chǔ)位置。圖形驅(qū)動(dòng)器可以在任何數(shù)量的緩沖器之間翻轉(zhuǎn),但傳統(tǒng)的雙緩沖器仍然是驅(qū)動(dòng)器最容易處理的,因此最理想。但在任何情況下,驅(qū)動(dòng)器都必須使翻轉(zhuǎn)、轉(zhuǎn)譯和BLT同步,為此,持續(xù)檢查每個(gè)組件(即GPU、緩沖器等)的狀態(tài)的傳統(tǒng)方式較無效率。
因此,計(jì)算機(jī)系統(tǒng)最好具有統(tǒng)一、有效的方式來使這些事件同步。
發(fā)明內(nèi)容鑒于上述問題,本發(fā)明提供一種用于監(jiān)視圖形處理事件(例如,轉(zhuǎn)譯、翻轉(zhuǎn)和BLT)的狀態(tài)、從而使此等事件同步的方法及系統(tǒng)。
為了達(dá)到上述目的,本發(fā)明揭露了一種方法及系統(tǒng),用于使具有多重圖形處理單元(GPU)的計(jì)算機(jī)系統(tǒng)中的圖形處理事件同步。例如,主GPU(masterGPU)將第一圖像轉(zhuǎn)譯到與顯示驅(qū)動(dòng)器或顯示接口關(guān)聯(lián)的主緩沖器(masterbuffer)或主要緩沖器(primary buffer)的第一部分中,然后將對(duì)應(yīng)于第一圖像的第一預(yù)定值寫入第一內(nèi)存單元。從GPU(slave GPU)將第二圖像轉(zhuǎn)譯到從緩沖器(slave buffer)或次要緩沖器(secondary buffer)中,然后將第二圖像傳送到主緩沖器的第二部分,并且將對(duì)應(yīng)于第二圖像的第二預(yù)定值寫入第一內(nèi)存單元。第一及第二預(yù)定值表示圖像的轉(zhuǎn)譯結(jié)束事件。主GPU翻轉(zhuǎn)第一圖像并僅在檢查第一內(nèi)存單元中的第一預(yù)定值之后顯示,并且翻轉(zhuǎn)第二圖像并僅在檢查第一內(nèi)存單元中的第二預(yù)定值之后顯示。
根據(jù)以下結(jié)合附圖所述的特定具體實(shí)施例,將能充分了解本發(fā)明的構(gòu)造及操作方法,以及其額外的目的和優(yōu)點(diǎn)。
圖1是根據(jù)本發(fā)明的一具體實(shí)施例的具有兩個(gè)圖形處理單元(GPU)及兩個(gè)事件內(nèi)存的計(jì)算機(jī)系統(tǒng)的一部分的方塊圖。
圖2是根據(jù)本發(fā)明的一具體實(shí)施例的計(jì)算機(jī)系統(tǒng)的時(shí)序圖。
附圖符號(hào)說明100 計(jì)算機(jī)系統(tǒng)110 主GPU120 主緩沖器陣列130 顯示接口140 從GPU150 緩沖器陣列160 W事件內(nèi)存170 S事件內(nèi)存180 CPU190 總線
195 主存儲(chǔ)器230 時(shí)隙235 時(shí)隙240 時(shí)隙244 時(shí)隙248 時(shí)隙250 時(shí)隙254 時(shí)隙258 時(shí)隙260 時(shí)隙265 時(shí)隙270 時(shí)隙275 時(shí)隙280 時(shí)隙285 時(shí)隙具體實(shí)施方式
美國(guó)專利申請(qǐng)案第60/727,635號(hào)詳細(xì)說明具有多個(gè)圖形處理單元(GPU)及其相關(guān)緩沖器(buffer)的計(jì)算機(jī)系統(tǒng)的操作,此申請(qǐng)案與本申請(qǐng)案一起申請(qǐng),并將全文并入本文中。
圖1是根據(jù)本發(fā)明的一具體實(shí)施例的計(jì)算機(jī)系統(tǒng)的一部分的方塊圖。計(jì)算機(jī)系統(tǒng)100具有兩個(gè)圖形處理單元(GPU)110及140。主GPU 110將圖像轉(zhuǎn)譯到與顯示接口130連接的主緩沖器或主要緩沖器120。將主緩沖器120中存儲(chǔ)或隊(duì)列(queue)的圖像依次翻轉(zhuǎn)到顯示接口130。從GPU 140獨(dú)立將圖像轉(zhuǎn)譯到從緩沖器或次要緩沖器150。應(yīng)了解的是,緩沖器可以是緩沖器陣列或內(nèi)存單元配置的任何其它形式。主與從GPU交替轉(zhuǎn)譯圖像,即如果主GPU轉(zhuǎn)譯幀[i],則從GPU140轉(zhuǎn)譯幀[i+1],然后主GPU轉(zhuǎn)譯幀[i+2],依此類推。為了將從緩沖器150中的圖像傳送到主緩沖器120,主GPU 110或從GPU 140在特定的時(shí)間通過總線190開始位區(qū)塊傳送(BLT),從而使所有轉(zhuǎn)譯的圖像以相同于轉(zhuǎn)譯序列的序列在主緩沖器120中隊(duì)列。
根據(jù)本發(fā)明的一具體實(shí)施例,藉由內(nèi)存對(duì)映(memory-mapped)輸入/輸出(I/O)或多媒體輸入/輸出(MultiMedia I/O,MMIO)執(zhí)行翻轉(zhuǎn)操作。亦即,在CPU寫入GPU中已進(jìn)行內(nèi)存對(duì)映的相關(guān)緩存器之后,顯示裝置立即顯示指定緩沖器中的圖像。
根據(jù)本發(fā)明的一具體實(shí)施例,為了方便計(jì)算機(jī)系統(tǒng)各組件的轉(zhuǎn)譯、翻轉(zhuǎn)及BLT事件的同步,配置兩個(gè)事件內(nèi)存(event memory),即W事件內(nèi)存160和S事件內(nèi)存170。
在本發(fā)明的一具體實(shí)施例中,GPU更新W事件內(nèi)存160。無論何時(shí)完成轉(zhuǎn)譯工作,主GPU 110都會(huì)將W事件內(nèi)存160的值遞增(increments)。同樣,無論何時(shí)從GPU 140完成BLT,其也會(huì)將遞增值寫入W事件內(nèi)存160中。藉由在每個(gè)命令周期(command cycle)期間檢查W事件內(nèi)存160的值,CPU 180可以決定特定的圖像是否已完全轉(zhuǎn)譯并準(zhǔn)備翻轉(zhuǎn)。請(qǐng)注意,W內(nèi)存具有用于不同GPU的不同部分。以下是偽代碼(pseudo codes)的示范性子程序(subroutine),名為「queued-flip(隊(duì)列翻轉(zhuǎn))」,用于使CPU 180檢查并翻轉(zhuǎn)主緩沖器120中的隊(duì)列圖像。
While(queued-flip){get the first flipif(tracked W event value not back)break;do FLIP through MMIOwrite an incremental S event value to the S event memoryRemove current flip}請(qǐng)注意,在以上隊(duì)列翻轉(zhuǎn)子程序中的翻轉(zhuǎn)之后,CPU 180將遞增的S事件值寫入S事件內(nèi)存170,這意味著隊(duì)列圖像已翻轉(zhuǎn),并且主緩沖器120可接受新圖像。因此,藉由檢查S事件內(nèi)存的值,CPU可決定其是否可讓GPU將新圖像轉(zhuǎn)譯或BLT到主緩沖器120中以進(jìn)行隊(duì)列。
但是,如果主緩沖器120很大,以致新轉(zhuǎn)譯的圖像保證不會(huì)覆寫未翻轉(zhuǎn)的隊(duì)列圖像,則不需要檢查甚至配置S事件內(nèi)存。
圖2為詳細(xì)說明事件內(nèi)存如何輔助多GPU系統(tǒng)中的轉(zhuǎn)譯、翻轉(zhuǎn)及BLT事件的同步的時(shí)序圖。參考圖1及圖2,圖2中包含CPU 180、主GPU 110、從GPU 140。CPU180內(nèi)包含時(shí)隙230等待S(i+2-N)命令至從GPU140、時(shí)隙235等待S(i+4-N)命令至從GPU140及時(shí)隙240等待S(i+1-N)命令至主GPU110、時(shí)隙244 queued filp(i),「寫入S(i)」、時(shí)隙248 queued filp(i+1),「寫入S(i+1)」、時(shí)隙250等待事件S(i+3-N)命令至主GPU 110、時(shí)隙254 queuedfilp(i+2),「寫入S(i+2)」、時(shí)隙258 queued filp(i+3),「寫入S(i+3)」。主GPU 110包含時(shí)隙260轉(zhuǎn)譯幀[i]寫入W(i)及時(shí)隙265轉(zhuǎn)譯幀[i+2]。從GPU 140包含時(shí)隙270轉(zhuǎn)譯幀[i+1]、時(shí)隙275將幀BLT至主緩沖器,寫入W(i+1)、時(shí)隙280轉(zhuǎn)譯幀[i+3]、時(shí)隙285將幀BLT至主緩沖器,寫入W(i+3)等舉例說明。假定主GPU 110與從GPU 140都具有N個(gè)組件。每次將轉(zhuǎn)譯命令發(fā)送到主GPU 110之前,CPU 180檢查S事件內(nèi)存170,并且新轉(zhuǎn)譯命令僅在時(shí)隙240中當(dāng)S事件內(nèi)存170的值達(dá)到i+1-N時(shí)發(fā)送,這意味著在目前的圖像之前,已經(jīng)有N個(gè)緩沖的圖像翻轉(zhuǎn),并且緩沖器準(zhǔn)備好接受新轉(zhuǎn)譯的圖像,而不會(huì)覆寫先前轉(zhuǎn)譯及隊(duì)列的圖像。此處,「i」是表示目前命令周期的索引。在每個(gè)命令周期中轉(zhuǎn)譯一圖像幀。
從CPU 180收到轉(zhuǎn)譯命令之后,主GPU 110開始在時(shí)隙260中轉(zhuǎn)譯幀[i]。當(dāng)完成轉(zhuǎn)譯時(shí),主GPU 110也在時(shí)隙260中將值i寫入W事件內(nèi)存中。
從GPU 140以不同的方式操作。其轉(zhuǎn)譯相當(dāng)獨(dú)立,并且其可以在時(shí)隙270中轉(zhuǎn)譯后續(xù)的幀[i+1],當(dāng)主GPU 110轉(zhuǎn)譯幀[i]時(shí),時(shí)隙270可以與時(shí)隙260重迭。但在時(shí)隙275中以位區(qū)塊傳送(BLT)的方式將從GPU轉(zhuǎn)譯的圖像(即幀[i+1])傳送到主緩沖器120需要確保S事件內(nèi)存的值經(jīng)過i+2-N,即在幀[i+1]之前,已經(jīng)有N個(gè)以上的幀翻轉(zhuǎn),并且主緩沖器準(zhǔn)備好接受新轉(zhuǎn)譯的圖像。如圖2所示,時(shí)隙275在時(shí)隙230之后。在時(shí)隙230中,CPU 180在S事件內(nèi)存的值經(jīng)過i+2-N之后,將BLT命令發(fā)送到從GPU 140。在完成BLT命令之后,從GPU 140還會(huì)在時(shí)隙275中將遞增值i+1寫入W事件內(nèi)存中。
在時(shí)隙244中執(zhí)行子程序queued-flip(i+1)時(shí),CPU 180首先檢查W事件內(nèi)存160的值。如果值i+1已經(jīng)在W事件內(nèi)存160中,即幀[i+1]已經(jīng)在主緩沖器120中隊(duì)列,則其翻轉(zhuǎn)幀[i+1],并將值i+1寫入S事件內(nèi)存。這些步驟亦在以上queued-flip子程序中陳述。
本質(zhì)上,CPU 180在對(duì)應(yīng)于隊(duì)列圖像的值位于W事件內(nèi)存160中之后翻轉(zhuǎn)主緩沖器120中的隊(duì)列圖像,并在翻轉(zhuǎn)結(jié)束時(shí)將遞增的值寫入S事件內(nèi)存。同時(shí),GPU轉(zhuǎn)譯或BLT欲在主緩沖器120中隊(duì)列的圖像,并在主GPU 110完成轉(zhuǎn)譯或從GPU 140完成傳送之后,將遞增的值寫入W事件內(nèi)存160。以此方式,簡(jiǎn)化了計(jì)算機(jī)圖形子系統(tǒng)中的翻轉(zhuǎn)、轉(zhuǎn)譯及位區(qū)塊傳送的同步。
本發(fā)明提供許多不同的具體實(shí)施例或范例,用于實(shí)施本發(fā)明的不同特征。說明組件和方法的特定范例是為了幫助闡明本揭示內(nèi)容。當(dāng)然,這些只是范例,無意限制申請(qǐng)專利范圍所述的本揭示內(nèi)容的范圍。
權(quán)利要求
1.一種用于在具有一主圖形處理單元及至少一從圖形處理單元的計(jì)算機(jī)系統(tǒng)中使圖形處理事件同步的方法,該方法包括藉由該主圖形處理單元轉(zhuǎn)譯一第一圖像以存儲(chǔ)在一主緩沖器的一第一部分中;藉由該從圖形處理單元轉(zhuǎn)譯一第二圖像以存儲(chǔ)在一從緩沖器中;將對(duì)應(yīng)于該第一圖像的一第一預(yù)定值寫入一第一內(nèi)存單元;將該第二圖像傳送到該主緩沖器的一第二部分;在完成該傳送之后將對(duì)應(yīng)于該第二圖像的一第二預(yù)定值寫入該第一內(nèi)存單元;以及發(fā)送一第一及一第二翻轉(zhuǎn)命令,用于翻轉(zhuǎn)該主緩沖器中的該第一及該第二圖像,以便在檢查該第一內(nèi)存單元中對(duì)應(yīng)于該等圖像的值之后顯示,其中,該第一及該第二預(yù)定值表示欲隊(duì)列進(jìn)行顯示的第一及第二圖像的一序列。
2.如權(quán)利要求
1所述的方法,其中,該發(fā)送進(jìn)一步包括如下之一如果對(duì)應(yīng)于該圖像的值未在該第一內(nèi)存單元中,則取消發(fā)送該翻轉(zhuǎn)命令;發(fā)送一條內(nèi)存對(duì)映輸入/輸出翻轉(zhuǎn)命令。
3.如權(quán)利要求
1所述的方法,其進(jìn)一步包括如下步驟的群組之一以一預(yù)定的序列發(fā)送一或多條轉(zhuǎn)譯命令至該主圖形處理單元及該從圖形處理單元;在圖像翻轉(zhuǎn)完成之后,將對(duì)應(yīng)于翻轉(zhuǎn)圖像的該主緩沖器的一第三部分的預(yù)定值寫入一第二內(nèi)存單元,以及,在將一圖像轉(zhuǎn)譯或傳送至該主緩沖器的該第三部分之前,檢查該第二內(nèi)存單元中的值。
4.如權(quán)利要求
1所述的方法,其中,該傳送進(jìn)一步包括發(fā)送一位區(qū)塊傳送命令,以傳送該第二圖像。
5.一種用于在具有至少一第一及一第二圖形處理單元的計(jì)算機(jī)系統(tǒng)中使圖形處理事件同步的方法,該方法包括藉由該第一圖形處理單元轉(zhuǎn)譯一第一圖像以存儲(chǔ)在一主要緩沖器中;藉由該第二圖形處理單元轉(zhuǎn)譯一第二圖像以存儲(chǔ)在一次要緩沖器中;將該第二圖像傳送到該主要緩沖器以在該第一圖像后隊(duì)列;在完成該傳送之后將對(duì)應(yīng)于該第二圖像的一預(yù)定值寫入一第一事件內(nèi)存單元;以及顯示該第一圖像之后,一旦確認(rèn)該預(yù)定值位于該第一事件內(nèi)存單元中,即發(fā)送翻轉(zhuǎn)命令,以翻轉(zhuǎn)該主要緩沖器中隊(duì)列的該第二圖像。
6.如權(quán)利要求
5所述的方法,其進(jìn)一步包括如下步驟的群組之一將對(duì)應(yīng)于該第一圖像的一預(yù)定值寫入該第一事件內(nèi)存單元;在圖像翻轉(zhuǎn)完成之后,將對(duì)應(yīng)于該翻轉(zhuǎn)圖像的該主要緩沖器中的一第一位置的一預(yù)定值寫入一第二事件內(nèi)存單元,以及,在將一圖像轉(zhuǎn)譯或傳送至該主要緩沖器中的第一位置之前,檢查該第二事件內(nèi)存單元中的值。
7.如權(quán)利要求
5所述的方法,其中,該發(fā)送翻轉(zhuǎn)命令進(jìn)一步包括發(fā)送一條內(nèi)存對(duì)映輸入/輸出翻轉(zhuǎn)命令。
8.一種具有圖形處理事件同步的計(jì)算機(jī)系統(tǒng),該系統(tǒng)包括一或多個(gè)圖形處理單元;一圖像緩沖器,用于供每個(gè)圖形處理單元存儲(chǔ)所轉(zhuǎn)譯的圖像,其中,一主緩沖器耦合至顯示接口;一或多個(gè)指定的內(nèi)存,用于記錄表示圖形處理事件的值;以及至少一中央處理單元,用于檢查指定內(nèi)存中的值并發(fā)送對(duì)應(yīng)于與該等值的命令。
9.如權(quán)利要求
8所述的系統(tǒng),其中,該等指定的內(nèi)存進(jìn)一步包括一第一內(nèi)存,用于記錄表示翻轉(zhuǎn)事件的該值。
10.如權(quán)利要求
9所述的系統(tǒng),其中,該等指定的內(nèi)存進(jìn)一步包括一第二內(nèi)存,用于記錄表示該主緩沖器中的圖像緩沖事件的值。
11.如權(quán)利要求
8所述的系統(tǒng),其進(jìn)一步包括一主存儲(chǔ)器。
12.如權(quán)利要求
8所述的系統(tǒng),其進(jìn)一步包括一總線,用于將圖像從一圖像緩沖器傳送到另一圖像緩沖器。
13.如權(quán)利要求
12所述的系統(tǒng),其中,該總線將圖像從其它緩沖器傳送到該主緩沖器。
專利摘要
本發(fā)明揭露了一種用于使多重圖形處理單元(GPU)計(jì)算機(jī)系統(tǒng)中的圖形處理事件同步的方法及系統(tǒng)。主GPU將第一圖像轉(zhuǎn)譯到與顯示接口關(guān)聯(lián)的主緩沖器的第一部分中,然后將對(duì)應(yīng)于第一圖像的第一預(yù)定值寫入第一內(nèi)存單元。從GPU將第二圖像轉(zhuǎn)譯到從緩沖器中,然后將第二圖像傳送到主緩沖器的第二部分,并將對(duì)應(yīng)于第二圖像的第二預(yù)定值寫入第一內(nèi)存單元。上述第一及第二預(yù)定值表示所轉(zhuǎn)譯圖像的隊(duì)列序列。主GPU翻轉(zhuǎn)第一圖像并僅在檢查第一內(nèi)存單元中的第一預(yù)定值之后顯示,并且翻轉(zhuǎn)第二圖像并僅在檢查第一內(nèi)存單元中的第二預(yù)定值之后顯示。
文檔編號(hào)G06T1/60GK1991903SQ200610135590
公開日2007年7月4日 申請(qǐng)日期2006年10月18日
發(fā)明者張國(guó)峰, 趙璇 申請(qǐng)人:威盛電子股份有限公司導(dǎo)出引文BiBTeX, EndNote, RefMan