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