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