欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

對系統(tǒng)存儲器的gpu渲染的制作方法

文檔序號:6655663閱讀:258來源:國知局
專利名稱:對系統(tǒng)存儲器的gpu渲染的制作方法
技術領域
本發(fā)明涉及計算機圖形學的領域。通過算術模擬光與從給定觀看點觀看的三維場景的相互作用來創(chuàng)建很多計算機圖形圖像。被稱為渲染的此過程產生從給定觀看點觀看的場景的二維圖像,且類似于拍攝一張現實場景的照片。
背景技術
隨著對計算機圖形且尤其對實時計算機圖形的需求增加,具有適合于加速渲染過程的圖形處理子系統(tǒng)的計算機系統(tǒng)已經變得普遍。在這些計算機系統(tǒng)中,渲染過程在計算機的通用中央處理單元(CPU)與圖形處理子系統(tǒng)之間分配。通常,CPU執(zhí)行高等級操作,例如確定給定場景中對象的位置、運動和碰撞。根據這些高等級操作,CPU產生界定所需渲染圖像的一組渲染命令和數據。舉例來說,渲染命令和數據可為場景界定場景幾何形狀、照明、著色、紋理、運動和/或攝影參數。圖形處理子系統(tǒng)從所述組渲染命令和數據中創(chuàng)建一個或一個以上渲染圖像。
典型圖形處理子系統(tǒng)包括一個或一個以上圖形處理單元(GPU)或協(xié)處理器。每個GPU均執(zhí)行由CPU產生的渲染命令。除一個或一個以上GPU外,圖形處理子系統(tǒng)還包括存儲器。圖形子系統(tǒng)存儲器用于存儲要輸出到顯示設備的一個或一個以上渲染圖像、幾何形狀數據、紋理數據、照明和著色數據和用于產生一個或一個以上渲染圖像的其它數據。
為了最大化渲染性能,圖形子系統(tǒng)存儲器通常與由計算機系統(tǒng)使用的通用系統(tǒng)存儲器分離。這允許圖形處理子系統(tǒng)最大化存儲器存取性能,且因此最大化渲染性能。然而,具有用于圖形處理子系統(tǒng)的獨立存儲器顯著增加了成本,不僅是因為額外存儲器(其可為數百兆字節(jié)或更多)的費用,而且是由于例如功率調節(jié)器、濾波器和冷卻設備的支持組件的成本以及電路板的附加復雜性的緣故。此外,獨立的圖形處理子系統(tǒng)存儲器所需的額外空間可帶來困難,尤其對于筆記本式計算機或移動設備來說。
對與獨立的圖形處理子系統(tǒng)存儲器相關的問題的一種解決方案是使用統(tǒng)一存儲器結構,其中圖形處理子系統(tǒng)所需的所有數據,例如幾何形狀數據、紋理數據、照明和著色數據以及渲染圖像,均存儲在計算機系統(tǒng)的通用系統(tǒng)存儲器中。傳統(tǒng)上,連接圖形處理子系統(tǒng)與系統(tǒng)存儲器的數據總線限制了統(tǒng)一存儲器結構系統(tǒng)的性能。
例如PCI-Express數據總線標準的改進的數據總線標準增加了可用于存取存儲器的帶寬;然而,用統(tǒng)一存儲器結構來達到最佳渲染性能仍需要對存儲器帶寬和等待時間的仔細關注。此外,PCI-Express數據總線標準帶來其自身的問題,包括系統(tǒng)死鎖和用于選擇性存儲器存取的高開銷。另外,掃描輸出(將渲染圖像從存儲器轉移到顯示設備的過程)需要精確的計時以防止視覺不連續(xù)性和誤差。因此,執(zhí)行從存儲在系統(tǒng)存儲器中的渲染圖像的掃描輸出較困難。
因此,需要一種圖形處理子系統(tǒng),其使用統(tǒng)一存儲器結構來提供良好的渲染性能和從系統(tǒng)存儲器無誤差的掃描輸出。此外,需要所述圖形處理子系統(tǒng)防止例如系統(tǒng)死鎖和用于選擇性存儲器存取的高開銷的問題。

發(fā)明內容
本發(fā)明的實施例使圖形處理子系統(tǒng)能夠使用系統(tǒng)存儲器作為其用于渲染和掃描輸出圖像圖形存儲器。為了防止數據總線的死鎖,圖形處理子系統(tǒng)可使用數據總線的交替虛擬信道來從系統(tǒng)存儲器存取完成第一數據的寫入操作所需的附加數據。在與系統(tǒng)存儲器的通信中,包括擴展字節(jié)啟用信息(extended byte enable information)的數據包允許圖形處理子系統(tǒng)將具有任意字節(jié)屏蔽的大量數據寫入系統(tǒng)存儲器。為了提高經渲染圖像數據的二維局部性的等級,圖形處理子系統(tǒng)以平鋪式格式將圖像數據排列在系統(tǒng)存儲器中。平鋪塊翻譯單元將圖像數據虛擬地址轉換成對應的系統(tǒng)存儲地址。圖形處理子系統(tǒng)從系統(tǒng)存儲器讀取圖像數據并將其轉換成顯示信號。
在實施例中,圖形處理子系統(tǒng)包含渲染單元,其適合于響應于渲染數據而產生渲染圖像的圖像數據;和數據總線接口,其適合于經由數據總線而與計算機系統(tǒng)的系統(tǒng)存儲器設備連接。響應于將第一數據寫入到與圖形處理子系統(tǒng)相關的圖形存儲器的寫入操作,圖形處理子系統(tǒng)適合于檢索完成第一數據的寫入操作所必需的第二數據。接著,圖形處理子系統(tǒng)從第二數據確定系統(tǒng)存儲器中第一數據的目的地,并將第一數據的寫入操作重新定向到系統(tǒng)存儲器中第一數據的目的地。在進一步實施例中,系統(tǒng)存儲器中第一數據的目的地位于指定為與圖形處理子系統(tǒng)相關的圖形存儲器的系統(tǒng)存儲器的一部分內。在另一實施例中,第二數據包括地址翻譯信息,且圖形處理子系統(tǒng)適合于將與圖形存儲器相關的虛擬地址翻譯成系統(tǒng)存儲器中對應的目的地。
在實施例中,圖形處理子系統(tǒng)適合于經由數據總線接口從數據總線的第一虛擬信道接收第一數據的寫入操作,并使用數據總線的第二虛擬信道經由數據總線接口從系統(tǒng)存儲器檢索第二數據。在替代實施例中,圖形處理子系統(tǒng)適合于從與圖形處理子系統(tǒng)連接的局部存儲器檢索第二數據。
在進一步實施例中,圖形處理子系統(tǒng)包括平鋪塊地址翻譯單元,其適合于將對應于圖像中的位置的虛擬存儲地址轉換成系統(tǒng)存儲器中的圖像數據的平鋪式排列內的存儲地址。平鋪塊地址翻譯單元可進一步適合于響應對應于圖像的連續(xù)部分的虛擬存儲地址的范圍而通過數據總線經由數據總線接口來起始復數個系統(tǒng)存儲器存取。取決于虛擬存儲地址的范圍,所述復數個系統(tǒng)存儲器存取可用于系統(tǒng)存儲器的非連續(xù)部分。
在另一實施例中,數據總線接口適合于響應指示與系統(tǒng)存儲器相關的存儲器控制器與第一數據包類型兼容的指令而經由數據總線使用第一數據包類型的數據包與系統(tǒng)存儲器通信第三數據。第一數據包類型包括擴展字節(jié)啟用數據。響應于指示存儲器控制器與第一數據包類型不兼容的指令,數據總線接口通過使用第二數據包類型的復數個數據包經由數據總線與系統(tǒng)存儲器通信第三數據。
在附加實施例中,圖形處理子系統(tǒng)包括顯示設備控制器,其適合于與顯示設備通信與渲染圖像對應的顯示信號。在一個實施例中,顯示設備控制器適合于從與圖形處理子系統(tǒng)連接的局部存儲器檢索與渲染圖像對應的圖像數據。在另一實施例中,顯示設備控制器適合于從系統(tǒng)存儲器檢索與渲染圖像對應的圖像數據。
在實施例中,顯示設備控制器適合于從系統(tǒng)存儲器中的圖像數據的平鋪式排列檢索與渲染圖像的第一行對應的第一圖像數據,并與顯示設備通信第一圖像數據。圖形處理子系統(tǒng)可從系統(tǒng)存儲器檢索與包括渲染圖像的第一行的渲染圖像的一組平鋪塊對應的一組圖像數據。圖形處理子系統(tǒng)可丟棄所述組圖像數據的不包括圖像數據的所述第一行的一部分。在替代實施例中,顯示設備控制器包括圖像數據高速緩沖存儲器,其適合于存儲包括在所述組平鋪塊中且與渲染圖像的至少一個附加行對應的第二圖像數據。顯示設備控制器適合于在檢索第一圖像數據后從圖像數據高速緩沖存儲器檢索第二圖像數據,并與顯示設備通信第二圖像數據。


將參考附圖來描述本發(fā)明,其中圖1是適合實踐本發(fā)明實施例的計算機系統(tǒng)的方框圖;圖2說明根據本發(fā)明實施例的用于防止系統(tǒng)死鎖的一般技術;圖3說明根據本發(fā)明另一實施例的用于防止系統(tǒng)死鎖的一般技術;圖4A和4B說明根據本發(fā)明實施例的用于通過數據總線選擇性地存取存儲器的系統(tǒng);圖5A和5B說明根據本發(fā)明實施例的組織系統(tǒng)存儲器中的顯示信息以改進渲染性能的系統(tǒng);圖6A和6B說明根據本發(fā)明實施例的用于存取顯示信息的系統(tǒng);和圖7A-7C說明根據本發(fā)明實施例的用于將系統(tǒng)存儲器中的顯示信息輸出到顯示設備的系統(tǒng)。
在附圖中,使用相同參考數字來指示相同組件。
具體實施例方式
圖1是適合于實踐本發(fā)明實施例的計算機系統(tǒng)100的方框圖,所述計算機系統(tǒng)100例如為個人計算機、視頻游戲控制臺、個人數字助理或其它數字設備。計算機系統(tǒng)100包括用于運行軟件應用程序且視需要運行一操作系統(tǒng)的中央處理單元(CPU)105。在實施例中,CPU 105實際上是并行操作的若干獨立中央處理單元。存儲器110存儲應用程序和數據以供CPU 105使用。存儲裝置115為用于應用程序和數據提供非易失性存儲,且可包括固定磁盤驅動器、可移動磁盤驅動器、快閃存儲器設備,和CD-ROM、DVD-ROM或其它光學存儲設備。用戶輸入設備120將來自一個或一個以上用戶的用戶輸入通信到計算機系統(tǒng)100,且用戶輸入設備120可包括鍵盤、鼠標、操縱桿、觸摸屏和/或麥克風。網絡接口125允許計算機系統(tǒng)100經由電子通信網絡與其它計算機系統(tǒng)通信,且可包括通過局域網和廣域網(例如因特網)的有線或無線通信。計算機系統(tǒng)100的組件,包括CPU 105、存儲器110、數據存儲裝置115、用戶輸入設備120和網絡接口125,是經由一個或一個以上數據總線160連接的。數據總線的實例包括ISA、PCI、AGP、PCI、PCI-Express和超傳輸(HyperTransport)數據總線。
圖形子系統(tǒng)130與數據總線160和計算機系統(tǒng)100的組件進一步連接。所述圖形子系統(tǒng)可與計算機系統(tǒng)母板集成,或集成在與計算機系統(tǒng)固定地或可移除地連接的獨立電路板上。圖形子系統(tǒng)130包括圖形處理單元(GPU)135和圖形存儲器。圖形存儲器包括顯示存儲器140(例如幀緩沖器),其用于存儲輸出圖像的每一像素的像素數據。可將像素數據直接從CPU 105提供到顯示存儲器140。或者,CPU 105向GPU 135提供界定所需輸出圖像的數據和/或命令,GPU 135根據所述數據和/或命令而產生一個或一個以上輸出圖像的像素數據。界定所需輸出圖像的數據和/或命令存儲在附加存儲器145中。在實施例中,GPU 135根據界定場景的幾何形狀、照明、著色、紋理、運動和/或攝影參數的渲染命令和數據而產生輸出圖像的像素數據。
在另一實施例中,顯示存儲器140和/或附加存儲器145是存儲器110的一部分,且與CPU 105共享?;蛘?,顯示存儲器140和/或附加存儲器145是提供以供圖形子系統(tǒng)130專用的一個或一個以上獨立存儲器。圖形子系統(tǒng)130周期性地輸出一來自顯示存儲器218并顯示在顯示設備150上的圖像的像素數據。顯示設備150是能夠響應來自計算機系統(tǒng)100的信號而顯示視覺信息的任何設備,包括CRT、LCD、等離子和OLED顯示器。計算機系統(tǒng)100可向顯示設備150提供模擬或數字信號。
在又一實施例中,圖形處理子系統(tǒng)130包括一個或一個以上類似于GPU 135的附加GPU 155。在更進一步的實施例中,圖形處理子系統(tǒng)130包括圖形協(xié)處理器165。圖形處理協(xié)處理器165和附加GPU 155適合于與GPU 135并行操作,或代替GPU 135而操作。類似于GPU 135,附加GPU 155根據渲染命令而產生輸出圖像的像素數據。附加GPU 155可結合GPU 135而操作以同時產生一輸出圖像的不同部分的像素數據,或同時產生不同輸出圖像的像素數據。在實施例中,圖形協(xié)處理器165執(zhí)行與渲染有關的任務,例如GPU 135和/或附加GPU 155的幾何形狀變換、著色器計算和背面剔除(backfaceculling)操作。
附加GPU 155可與GPU 135位于同一電路板上并與GPU 135共享與數據總線160的連接,或可位于與數據總線160獨立地連接的附加電路板上。附加GPU 155還可與GPU 135集成在同一模塊或芯片封裝中。附加GPU 155可具有其自身的類似于顯示存儲器140和附加存儲器145的顯示和附加存儲器,或可與GPU 135共享存儲器140和145。在實施例中,圖形協(xié)處理器165與計算機系統(tǒng)芯片組(未圖示)集成,例如與用于控制數據總線160的北橋或南橋芯片集成。
系統(tǒng)死鎖是由于兩個操作在完成其個別操作之前均需要來自對方的響應而引起的系統(tǒng)執(zhí)行的停止。系統(tǒng)死鎖的一個來源是起因于通過連接CPU與圖形處理子系統(tǒng)的數據總線的投遞式寫入操作(posted write operation)。對于許多類型的數據總線,例如PCI-Express數據總線,必須在任何其它讀取或寫入操作可通過數據總線執(zhí)行之前完成投遞式寫入操作。投遞式寫入操作是一被目的地接受,就被請求者視為已完成的寫入操作。出于性能目的,PCI-Express使用投遞式寫入操作用于所有存儲器寫入。對配置和I/O的PCI-Express寫入操作通常是非投遞式寫入操作,且需要寫入已結束的確認,例如不含數據的完成消息。
因為投遞式寫入操作阻礙了其它的數據總線操作,所以在圖形處理子系統(tǒng)需要附加信息來完成由CPU發(fā)出的投遞式寫入時,可產生系統(tǒng)死鎖。舉例來說,圖形處理子系統(tǒng)常為了處理方便而利用線性連續(xù)存儲器組織(linear contiguous memory organization);然而,在統(tǒng)一的存儲器結構中用作圖形存儲器的計算機系統(tǒng)的通用存儲器的部分通常配置為多組非連續(xù)存儲器頁面。頁面翻譯表將來自由圖形處理子系統(tǒng)使用的線性連續(xù)地址空間存儲地址翻譯到由計算機系統(tǒng)存儲器使用的分頁非連續(xù)地址空間,從而使圖形處理子系統(tǒng)能夠存取計算機系統(tǒng)存儲器。在實施例中,頁面翻譯表存儲在系統(tǒng)存儲器中。當圖形處理子系統(tǒng)需要存取圖形存儲器中的給定存儲地址時,圖形處理子系統(tǒng)的地址翻譯部分檢索頁面翻譯表的適當部分;將由圖形處理子系統(tǒng)使用的線性存儲地址翻譯成由系統(tǒng)存儲器使用的對應的分頁存儲地址,并接著以所翻譯的存儲地址來存取系統(tǒng)存儲器。
當CPU發(fā)出請求將數據寫入到圖形存儲器中的目的地的投遞式寫入命令時,在投遞式寫入命令被接收之前沒有其它的數據總線完成操作可完成。然而,為了接受投遞式寫入命令,圖形處理子系統(tǒng)必須存取存儲在系統(tǒng)存儲器中的頁面翻譯表,以確定對應于圖形存儲器中的目的地的分頁存儲地址。因為投遞式寫入命令阻礙任何隨后的總線完成操作直到其被接收為止,所以返回來自頁面翻譯表的數據的總線完成操作被投遞式寫入操作阻礙。因為投遞式寫入操作在圖形處理子系統(tǒng)接收到來自頁面翻譯表的數據之前不能完成,所以計算機系統(tǒng)死鎖。
在另一實例中,圖形處理系統(tǒng)可在若干不同的上下文中執(zhí)行。獨立的上下文可與由圖形處理子系統(tǒng)處理的每一應用程序、窗口和/或執(zhí)行線程相關。當在上下文之間切換時,圖形處理子系統(tǒng)結束來自先前上下文的所有操作;存儲與先前上下文相關的狀態(tài)信息;加載新的上下文的狀態(tài)信息;并開始對新的上下文執(zhí)行操作。為確保正確執(zhí)行,在從存儲器加載新的上下文的狀態(tài)信息之前,不能執(zhí)行來自新的上下文的命令。
在統(tǒng)一存儲器結構系統(tǒng)中,上下文狀態(tài)信息可存儲在系統(tǒng)存儲器中。當CPU經由投遞式寫入操作來指令圖形處理系統(tǒng)切換上下文時,圖形處理子系統(tǒng)必須從系統(tǒng)存儲器加載新的上下文狀態(tài)信息。然而,因為在圖形處理子系統(tǒng)已切換上下文之前,投遞式寫入操作未完成,所以圖形處理子系統(tǒng)不能經由數據總線來存取系統(tǒng)存儲器。因此,計算機系統(tǒng)變?yōu)樗梨i。
圖2說明根據本發(fā)明實施例的用于防止計算機系統(tǒng)200中的死鎖的一般技術。CPU205通過數據總線經由投遞式寫入操作215而與圖形處理子系統(tǒng)220通信第一數據210。為完成投遞式寫入操作215,圖形處理子系統(tǒng)220必須從系統(tǒng)存儲器230檢索第二數據225。在用于存取系統(tǒng)存儲器230的先前技術下,投遞式寫入操作215將阻礙圖形處理子系統(tǒng)220存取系統(tǒng)數據中的第二數據225。
在本發(fā)明實施例中,圖形處理子系統(tǒng)220通過打開交替虛擬信道以用于通過數據總線而通信來存取系統(tǒng)存儲器230中的第二數據225。虛擬信道為通過同一數據總線的數據通信提供獨立路徑。舉例來說,PCI-Express總線規(guī)范允許一個PCI-Express數據總線通信若干不同的數據交換,其中每一數據交換均獨立發(fā)生且沒有來自PCI-Express數據總線上的其它數據交換的干擾。
響應于經由數據總線上的第一虛擬信道(例如VC0)通信到圖形處理子系統(tǒng)220的投遞式寫入操作215,圖形處理子系統(tǒng)220打開數據總線上的第二虛擬信道(例如VC1),以用于從系統(tǒng)存儲器230檢索第二數據225。通過使用第二虛擬信道VC1,圖形處理子系統(tǒng)220通過數據總線將對第二數據225的請求235發(fā)送到系統(tǒng)存儲器230。通過使用數據總線的第二虛擬信道VC2,來自系統(tǒng)存儲器230的響應240將第二數據225返回到圖形處理子系統(tǒng)220。
通過使用經由第二虛擬信道從系統(tǒng)存儲器230檢索的第二數據225,圖形處理子系統(tǒng)確定完成第一數據210的投遞式寫入操作215所需的信息。舉例來說,如果投遞式寫入操作215試圖將第一數據210寫入到圖形存儲器,那么第二數據225可為用于將圖形存儲器中的線性存儲地址翻譯成系統(tǒng)存儲器230中的對應的分頁存儲地址的地址翻譯表的一部分。圖形處理子系統(tǒng)220接著可將第一數據210寫入245到圖形存儲器250,圖形存儲器250在計算機系統(tǒng)200的統(tǒng)一存儲器結構中位于系統(tǒng)存儲器230的一部分中。這完成了投遞式寫入操作215,并釋放了第一虛擬信道以用于附加操作。
在另一實例中,第一數據210可包括用于圖形處理子系統(tǒng)220的上下文切換命令。在此實例中,CPU 205通過第一虛擬信道經由投遞式寫入操作215而將包括上下文切換命令的第一數據210通信到圖形處理子系統(tǒng)220。作為響應,圖形處理子系統(tǒng)220打開交替虛擬信道(例如VC1)以從系統(tǒng)存儲器230檢索第二數據225,第二數據225在此實例中包括上下文狀態(tài)信息。圖形處理子系統(tǒng)220接著使用第二數據225以根據包括在第一數據210中的上下文切換命令而切換上下文,從而完成投遞式寫入操作215并釋放第一虛擬信道以用于附加操作。圖形處理子系統(tǒng)還將先前上下文的上下文狀態(tài)信息寫入到存儲器,以使得稍后在執(zhí)行切換回到所述上下文時可檢索所述上下文狀態(tài)信息。
圖3說明根據本發(fā)明另一實施例的用于防止計算機系統(tǒng)300中的系統(tǒng)死鎖的一般技術。CPU 305通過數據總線經由投遞式寫入操作315與圖形處理子系統(tǒng)320通信第一數據310。如在上文所論述的實施例中,圖形處理子系統(tǒng)320需要檢索第二數據325以完成投遞式寫入操作315。
為避免在試圖通過由投遞式寫入操作315阻礙的數據總線檢索第二數據時發(fā)生的死鎖問題,計算機系統(tǒng)300的實施例包括局部存儲器330。在實施例中,局部存儲器330經由獨立的數據總線與圖形處理子系統(tǒng)320通信。局部存儲器330存儲圖形處理子系統(tǒng)所需的第二數據325以完成投遞式寫入操作315。因為局部存儲器330需要存儲用于完成涉及第一數據310的投遞式寫入操作的第二數據325,所以局部存儲器330可能為少量存儲器,從而保留統(tǒng)一存儲器結構的許多優(yōu)點。
響應于經由CPU 305與圖形處理子系統(tǒng)之間的第一數據總線通信到圖形處理子系統(tǒng)320的投遞式寫入操作315,圖形處理子系統(tǒng)320在獨立的數據總線上將對第二數據325的請求335發(fā)送到局部存儲器330。來自局部存儲器330的響應340經由獨立的數據總線返回第二數據325。
通過使用從局部存儲器330檢索到的第二數據325,圖形處理子系統(tǒng)320確定完成第一數據310的投遞式寫入操作315所需的信息。舉例來說,如果投遞式寫入操作315試圖將第一數據310寫入到圖形存儲器,那么第二數據325可為用于將圖形存儲器中的線性存儲地址翻譯成系統(tǒng)存儲器355中的對應的分頁存儲地址的地址翻譯表的一部分。圖形處理子系統(tǒng)320接著可將第一數據310寫入345到圖形存儲器350,圖形存儲器350在計算機系統(tǒng)300的統(tǒng)一存儲器結構中位于系統(tǒng)存儲器355的一部分中。這完成了投遞式寫入操作315并釋放CPU 305與圖形處理子系統(tǒng)320之間的數據總線以用于附加操作。
在另一實例中,第一數據310可包括用于圖形處理子系統(tǒng)320的上下文切換命令。在此實例中,CPU 305經由投遞式寫入操作315將包括上下文切換命令的第一數據310通信到圖形處理子系統(tǒng)320。作為響應,圖形處理子系統(tǒng)320從局部存儲器330檢索第二數據325,第二數據325在此實例中包括上下文狀態(tài)信息。接著第二數據325由圖形處理子系統(tǒng)320使用以根據包括在第一數據310中的上下文切換命令而切換上下文,從而完成投遞式寫入操作315并釋放CPU 305與圖形處理子系統(tǒng)320之間的數據總線以用于附加操作。
關于用統(tǒng)一存儲器結構建構圖形處理子系統(tǒng)的另一問題是與選擇性存儲器存取相關的高開銷。圖形處理子系統(tǒng)通常寫入或更新少量稀疏分布的像素的圖像數據,而不是大的連續(xù)區(qū)塊的圖像數據。相反,計算機系統(tǒng)最優(yōu)化其系統(tǒng)存儲器以在大的連續(xù)塊中進行存取。為處理這些差異,許多數據總線標準(例如PCI-Express)允許除了正被寫入存儲器的數據以外還包括字節(jié)啟用數據。字節(jié)啟用數據屏蔽數據區(qū)塊的部分以防止其被寫入系統(tǒng)存儲器。使用字節(jié)啟用數據允許設備將大的連續(xù)數據區(qū)塊發(fā)送到系統(tǒng)存儲器,同時僅更新少量的稀疏分布的像素。
盡管包括用于選擇性地屏蔽數據區(qū)塊的部分以防止其被寫入存儲器的字節(jié)啟用數據,但選擇性存儲器存取仍需要實質開銷。舉例來說,圖4A說明根據PCI-Express標準而格式化的數據的標準包400。包400包括標頭405和主體410。主體410含有將通過數據總線從一個設備(例如圖形處理子系統(tǒng))通信到另一設備(例如與計算機的系統(tǒng)存儲器相關的存儲器控制器)的數據。標頭405包括用于將包400引導到其希望的目的地的信息。
標準包400的標頭405還包括字節(jié)啟用數據415。根據PCI-Express標準,字節(jié)啟用數據415是8位掩碼值。字節(jié)啟用數據415允許根據字節(jié)啟用數據415的值而選擇性地屏蔽主體410中的最前四個字節(jié)的數據420和最后四個字節(jié)的數據425。舉例來說,如果字節(jié)啟用數據415中的第一位是“0”,那么主體410中的第一字節(jié)不會寫入到目標設備。相反,將字節(jié)啟用數據415中的一位設定為“1”將允許主體410中的對應字節(jié)寫入到目標設備。然而,字節(jié)啟用數據415僅可實現主體的最前四個字節(jié)420和最后四個字節(jié)425的選擇性屏蔽。根據PCI-Express標準,主體410中的中間字節(jié)的數據430必須以其整體寫入到目標設備。
因為PCI-Express標準將字節(jié)啟用數據限制為8位值,所以當試圖寫入任意屏蔽的圖像數據時,圖形處理子系統(tǒng)是嚴格受限制的。圖形處理子系統(tǒng)常需要選擇性地屏蔽包主體中任意字節(jié)的能力。然而,當使用標準PCI-Express包時,圖形處理子系統(tǒng)一次僅可屏蔽至多達八個字節(jié)。因此,在使用標準PCI-Express包時,當需要任意字節(jié)屏蔽時,圖形處理子系統(tǒng)限于具有8字節(jié)主體的包。萬一圖形處理子系統(tǒng)需要用于較大組數據的任意字節(jié)屏蔽,圖形處理子系統(tǒng)就必須將數據區(qū)塊分為8字節(jié)或更少的部分,并對每一部分使用獨立的PCI-Express包。
使用具有8字節(jié)主體的PCI-Express包極其浪費數據總線帶寬。因為典型的PCI-Express標頭為20字節(jié)長,所以發(fā)送包主體中的8字節(jié)數據總共需要28個字節(jié)。當圖形處理子系統(tǒng)用于需要較大組數據的任意字節(jié)屏蔽時,此浪費的開銷加劇。舉例來說,發(fā)送具有任意字節(jié)屏蔽的32字節(jié)數據組需要四個獨立的標準PCI-Express包,總共消耗112字節(jié)的總線帶寬。
圖4B說明根據本發(fā)明實施例的允許任意字節(jié)屏蔽以通過數據總線通信的改進的PCI-Express包450。PCI-Express標準允許廠商定義包(vendor defined packet)的定義。廠商定義包可具有非標準包標頭,假定目標設備能夠解譯非標準包標頭。圖4B說明包括非標準標頭455和主體460的廠商定義包450。如在標準PCI-Express包中,主體460含有將通過數據總線從一個設備通信到另一設備的數據。標頭455包括用于將包450引導到其希望的目的地的信息。
非標準標頭455還包括擴展字節(jié)啟用數據465。在實施例中,擴展字節(jié)啟用數據465包括足夠的位以允許主體460中任何字節(jié)的任意屏蔽。在又一實施例中,擴展字節(jié)啟用數據465中的位的數目等于主體465中的字節(jié)的數目。在實例實施中,擴展字節(jié)啟用數據465為32位,允許對主體460中至多達32字節(jié)的數據進行選擇性屏蔽。
因為目標設備必須能夠正確解譯包450的非標準標頭455,所以本發(fā)明實施例使用與圖形處理子系統(tǒng)相關的設備驅動器來檢測計算機的系統(tǒng)存儲器控制器是否與包460的非標準標頭455兼容,所述系統(tǒng)存儲器控制器可與計算機系統(tǒng)北橋或與CPU集成。如果系統(tǒng)存儲器控制器是兼容的,就指令圖形處理子系統(tǒng)使用包450的格式以選擇性地屏蔽寫入到系統(tǒng)存儲器的數據。相反,如果系統(tǒng)存儲器控制器是不兼容的,設備驅動器就指令圖形處理子系統(tǒng)使用標準PCI-Express包400的格式以選擇性地屏蔽寫入到系統(tǒng)存儲器的數據。
圖5A和5B說明根據本發(fā)明實施例的組織系統(tǒng)存儲器中的顯示信息以改進渲染性能的系統(tǒng)。通常,圖像數據的二維陣列在系統(tǒng)或圖形存儲器中已排列為一系列的首尾相連的行或列。舉例來說,存儲器中的幀緩沖器將以圖像中像素的第一行的所有圖像數據開始,隨后為所述圖像中像素的第二行的所有圖像數據,接著是圖像中像素的第三行的所有圖像數據,等等。
盡管圖像數據的這種排列簡化了圖像中二維坐標到存儲器的對應位置的轉換,但其需要附加的數據總線帶寬用于統(tǒng)一的存儲器結構。圖形處理子系統(tǒng)存取具有高等級的二維局部性的圖形存儲器。舉例來說,圖形處理系統(tǒng)可在同一行和附近行兩者中同時產生給定像素和附近像素的圖像數據。
繼續(xù)此實例,當使用上述的線性存儲器配置時,系統(tǒng)存儲器中不同行中的鄰近像素之間的距離將相隔數百或數千字節(jié)。因為此距離大于對于數據總線包所允許的大小,尤其是在包標頭中的字節(jié)啟用數據的大小限制了包主體的長度的先前實施(如上文所論述)中,所以圖形處理子系統(tǒng)必須通過數據總線將多個小包發(fā)送到系統(tǒng)存儲器以寫入一組鄰近像素的圖像數據。通過使用多個小包而不是一個大包所引起的數據總線開銷降低了計算機系統(tǒng)的性能和效率。
圖5A和5B說明根據本發(fā)明實施例的組織系統(tǒng)存儲器中的顯示信息以改進渲染性能的系統(tǒng)。為影響由圖形處理子系統(tǒng)產生的圖像數據的二維局部性,本發(fā)明實施例將圖像數據組織為一組平鋪塊(tile)。每一平鋪塊均包括二維像素陣列的圖像數據。圖5A說明圖像500的一部分。將圖像500劃分為許多平鋪塊,包括平鋪塊505、510和515。在圖5A的實施例中,每一平鋪塊均包括一4乘4像素陣列。然而,在替代實施例中,可使用具有任何數目像素的正方形和非正方形平鋪塊。在圖5A中,用圖像500中的像素的行和列來標記每一像素。舉例來說,平鋪塊505包括圖像500的最前四行的每一行中的最前四個像素。
圖5B說明根據本發(fā)明實施例的表示排列在系統(tǒng)存儲器中的圖像500的一部分的圖像數據550。在此實施例中,每一平鋪塊的圖像數據均連續(xù)存儲在系統(tǒng)存儲器中。舉例來說,系統(tǒng)存儲器的部分555存儲平鋪塊505中所有像素的圖像數據。在實施例中,平鋪塊505的圖像數據之后是系統(tǒng)存儲器的部分560,部分560存儲平鋪塊510中所有像素的圖像數據?;蛘?,系統(tǒng)存儲器的部分560可存儲平鋪塊515中所有像素的圖像數據。
通過將圖像數據存儲為一組二維像素平鋪塊,系統(tǒng)存儲器中鄰近行中像素之間的距離減小,尤其是在兩個像素位于同一平鋪塊中的情況下。因此,圖形處理子系統(tǒng)經常能在數據總線上使用單個寫入操作將一組附近像素寫入到系統(tǒng)存儲器。
在又一實施例中,系統(tǒng)存儲器中作為平鋪塊的圖像數據的排列對圖形處理系統(tǒng)和/或CPU的部分來說是隱藏的。替代地,由如上文所論述的掃描線接著掃描線地排列的幀緩沖器中的虛擬地址來定位像素。圖形處理子系統(tǒng)的平鋪塊地址翻譯部分使用虛擬地址將存儲器存取請求翻譯成一個或一個以上對存儲在系統(tǒng)存儲器中的圖像數據的平鋪式排列的存取請求。
圖6A和6B說明根據本發(fā)明實施例的用于存取圖像數據的實例。圖6A說明實例圖像600的一部分。實例圖像600包括平鋪塊605、610、615和620。區(qū)域625對應于將由圖形處理子系統(tǒng)存取的一組實例像素。在此實例中,區(qū)域625覆蓋平鋪塊605和610的部分。在實施例中,使用一個或一個以上虛擬地址來定位區(qū)域625。
為檢索對應于區(qū)域625的圖像數據,圖形處理子系統(tǒng)將用于定位區(qū)域625的一個或一個以上虛擬存儲地址翻譯成一個或一個以上系統(tǒng)存儲地址。在實施例中,平鋪塊翻譯表用于在虛擬存儲地址與系統(tǒng)存儲地址之間進行翻譯。圖形處理子系統(tǒng)接著檢索含有所需圖像數據的一個或一個以上平鋪塊的全部或部分。
圖6B說明包括對應于上述區(qū)域625的圖像數據的系統(tǒng)存儲器600的一部分。系統(tǒng)存儲器600的所述部分包括對應于平鋪塊605的圖像數據605和對應于平鋪塊610的圖像數據610。在圖像數據605內,圖像數據615的子集對應于平鋪塊605內的區(qū)域625的部分。類似地,圖像數據610內的圖像數據620的子集對應于平鋪塊610內的區(qū)域625的部分。
在實施例中,圖形處理子系統(tǒng)識別包括圖像的所請求區(qū)域的一個或一個以上平鋪塊。圖形處理子系統(tǒng)接著檢索經識別的平鋪塊中的每一者并丟棄所請求區(qū)域外部的圖像數據。圖形處理子系統(tǒng)接著將圖像數據的剩余部分組合成與圖像的所請求區(qū)域對應的一組連續(xù)圖像數據?;蛘?,圖形處理子系統(tǒng)可僅檢索每一經識別的平鋪塊的所需部分。在此實施例中,圖形處理子系統(tǒng)可使用許多非連續(xù)存儲器存取來檢索與圖像的連續(xù)區(qū)域對應的圖像數據。
圖形處理子系統(tǒng)可存取存儲在系統(tǒng)存儲器中的呈平鋪式排列的圖像的區(qū)域以用于許多不同目的,包括讀取和寫入圖像數據以渲染圖像。在一個實施例中,圖形處理子系統(tǒng)在掃描輸出之前將要顯示的圖像轉移到局部存儲器中,例如上文所論述的局部存儲器330。本發(fā)明的替代實施例允許圖形處理子系統(tǒng)將經渲染的圖像從系統(tǒng)存儲器轉移到顯示設備,這就是稱為掃描輸出的過程。掃描輸出通常要求以精確時間間隔將圖像數據通信到顯示設備。如果圖形處理子系統(tǒng)不能在正確時間與顯示設備通信圖像數據,例如由于從系統(tǒng)存儲器檢索圖像數據的延遲的緣故,那么將產生例如撕裂(tearing)的視覺假象。
通常,將圖像數據逐行通信到顯示設備。在實施例中,圖形處理子系統(tǒng)檢索圖像以獲得在正被通信到顯示設備的行之前的圖像數據的一個或一個以上行。圖7A說明此實施例的實例應用。圖7A說明圖像700。在實施例中,如上文所論述,將圖像分為多個平鋪塊。圖形處理子系統(tǒng)將圖像700的行705通信到顯示設備。在與顯示設備通信行705時,圖形處理子系統(tǒng)從系統(tǒng)存儲器檢索圖像數據,以獲得圖像700的隨后行(例如行710和/或行715)。
圖7B說明用于與顯示設備通信圖像數據的圖形處理子系統(tǒng)的實例部分730的操作。部分730包括掃描輸出單元735,其適合于將圖像數據轉換成要與顯示設備740通信的顯示信號。掃描輸出單元735輸出的顯示信號可為數字或模擬信號。
在實施例中,掃描輸出單元從系統(tǒng)存儲器檢索呈平鋪式格式的圖像數據。因為對于圖像的一部分,圖像數據的每一平鋪塊均包括兩行或兩行以上圖像數據,所以掃描輸出單元735根據每一所檢索到的平鋪塊的部分來組合圖像的所需行。舉例來說,可根據許多不同平鋪塊的部分,包括平鋪塊707的圖像數據760的部分745、平鋪塊709的圖像數據765的部分750和平鋪塊711的圖像數據770的部分755,來組合行705的圖像數據。在實施例中,丟棄所檢索到的平鋪塊的未使用部分。
在替代實施例中,當掃描輸出單元735從一組平鋪塊中檢索給定行的圖像數據時,掃描輸出單元735還存儲圖像的一個或一個以上隨后行的圖像數據。這減少了為掃描輸出而存取系統(tǒng)存儲器的次數,從而改進圖形處理子系統(tǒng)的效率和性能。
圖7C說明此替代實施例的實例實施771的操作。在此實例中,掃描輸出單元736從系統(tǒng)存儲器檢索圖像數據的平鋪塊,其包括掃描輸出單元736所需的行。掃描輸出單元根據每一所檢索到的平鋪塊的適當部分來組合所需的行。舉例來說,可根據不同平鋪塊的許多部分,包括部分745、750和755,來組合行705的圖像數據。
當根據許多平鋪塊的部分來組合所需行的圖像數據時,一個或一個以上隨后行的圖像數據存儲在一個或一個以上掃描線高速緩沖存儲器中。舉例來說,在所需行(例如行710)之后的第一行的圖像數據存儲在掃描線高速緩沖存儲器790中。第一隨后行的圖像數據可包括平鋪塊部分772、774和776。類似地,包括平鋪塊部分778和780的第二隨后行的圖像數據存儲在掃描線高速緩沖存儲器788中。包括平鋪塊部分782、783和784的第三隨后行的圖像數據存儲在掃描線高速緩沖存儲器785中。
因此,對于隨后行,掃描線單元736可從適當的掃描線高速緩沖存儲器檢索下一所需行的圖像數據。在實施例中,對應于圖像的平鋪塊中圖像數據的每一行均具有一掃描線高速緩沖存儲器,使得對于一給定圖像,掃描線單元735僅需要從系統(tǒng)存儲器讀取每一平鋪塊一次。替代實施例可具有較少的掃描線高速緩沖存儲器以降低圖形處理子系統(tǒng)的硬件復雜性。
本發(fā)明提供一種能夠使用系統(tǒng)存儲器作為其圖形存儲器以用于渲染并掃描輸出圖像的圖形處理子系統(tǒng)。盡管已參考計算機圖形子系統(tǒng)論述了本發(fā)明,但本發(fā)明可適用于計算機系統(tǒng)的其它組件,包括音頻組件和通信組件。已參照本發(fā)明的具體實例和實施例論述了本發(fā)明;然而,這些論述僅僅是為了說明而非限制本發(fā)明。因此,本發(fā)明的范圍由權利要求書來唯一地確定。
權利要求
1.一種圖形處理子系統(tǒng),其包含一渲染單元,其適合于響應于渲染數據而產生一渲染圖像的圖像數據;和一數據總線接口,其適合于經由一數據總線與一計算機系統(tǒng)的一系統(tǒng)存儲器設備連接;其中響應于一將一第一數據寫入到一與所述圖形處理子系統(tǒng)相關的圖形存儲器的寫入操作,所述圖形處理子系統(tǒng)適合于檢索完成所述第一數據的所述寫入操作所必需的一第二數據,從所述第二數據確定所述系統(tǒng)存儲器中所述第一數據的一目的地,并將所述第一數據的所述寫入操作重新定向到所述系統(tǒng)存儲器中的所述第一數據的所述目的地。
2.根據權利要求1所述的圖形處理子系統(tǒng),其中所述系統(tǒng)存儲器中的所述第一數據的所述目的地位于指定為與所述圖形處理子系統(tǒng)相關的所述圖形存儲器的所述系統(tǒng)存儲器的一部分內。
3.根據權利要求1所述的圖形處理子系統(tǒng),其進一步適合于經由所述數據總線接口從所述數據總線的一第一虛擬信道接收所述第一數據的所述寫入操作,并使用所述數據總線的一第二虛擬信道經由所述數據總線接口從系統(tǒng)存儲器檢索所述第二數據。
4.根據權利要求1所述的圖形處理子系統(tǒng),其進一步適合于從與所述圖形處理子系統(tǒng)連接的一局部存儲器檢索所述第二數據。
5.根據權利要求1所述的圖形處理子系統(tǒng),其中所述第二數據包括地址翻譯信息,且所述圖形處理子系統(tǒng)適合于將與所述圖形存儲器相關的一虛擬地址翻譯成系統(tǒng)存儲器中的一對應目的地。
6.根據權利要求1所述的圖形處理子系統(tǒng),其中所述第二數據包括上下文狀態(tài)信息,且所述圖形處理子系統(tǒng)適合于響應于所述第一數據而執(zhí)行一上下文切換。
7.根據權利要求1所述的圖形處理子系統(tǒng),其進一步包含一平鋪塊地址翻譯單元,其適合于將對應于一圖像中的一位置的一虛擬存儲地址轉換成系統(tǒng)存儲器中的圖像數據的一平鋪式排列內的一存儲地址。
8.根據權利要求7所述的圖形處理子系統(tǒng),其中所述平鋪塊地址翻譯單元進一步適合于響應對應于一圖像的一連續(xù)部分的虛擬存儲地址的一范圍經由所述數據總線接口在所述數據總線上起始復數個系統(tǒng)存儲器存取。
9.根據權利要求8所述的圖形處理子系統(tǒng),其中所述復數個系統(tǒng)存儲器存取是用于系統(tǒng)存儲器的非連續(xù)部分。
10.根據權利要求1所述的圖形處理子系統(tǒng),其中所述數據總線接口適合于響應一指示一與所述系統(tǒng)存儲器相關的存儲器控制器與一第一數據包類型兼容的指令經由所述數據總線使用所述第一數據包類型的一數據包經由所述數據總線與所述系統(tǒng)存儲器通信一第三數據,和響應一指示所述存儲器控制器與所述第一數據包類型不兼容的指令經由所述數據總線使用一第二數據包類型的復數個數據包經由所述數據總線與所述系統(tǒng)存儲器通信所述第三數據。
11.根據權利要求10所述的圖形處理子系統(tǒng),其中所述第一數據包類型包括擴展字節(jié)啟用數據。
12.根據權利要求1所述的圖形處理子系統(tǒng),其進一步包括一顯示設備控制器,所述顯示設備控制器適合于與一顯示設備通信一與所述渲染圖像對應的顯示信號。
13.根據權利要求12所述的圖形處理子系統(tǒng),其中所述顯示設備控制器適合于從與所述圖形處理子系統(tǒng)連接的一局部存儲器檢索與所述渲染圖像對應的圖像數據。
14.根據權利要求12所述的圖形處理子系統(tǒng),其中所述顯示設備控制器適合于從所述系統(tǒng)存儲器檢索與所述渲染圖像對應的圖像數據。
15.根據權利要求14所述的圖形處理子系統(tǒng),其中所述顯示設備控制器適合于從所述系統(tǒng)存儲器中的圖像數據的一平鋪式排列檢索與所述渲染圖像的一第一行對應的一第一圖像數據,并與所述顯示設備通信所述第一圖像數據。
16.根據權利要求15所述的圖形處理子系統(tǒng),其中所述顯示設備控制器適合于從所述系統(tǒng)存儲器檢索與包括所述渲染圖像的所述第一行的所述渲染圖像的一組平鋪塊對應的一組圖像數據。
17.根據權利要求16所述的圖形處理子系統(tǒng),其中所述顯示設備控制器適合于丟棄所述組圖像數據的不包括圖像數據的所述第一行的一部分。
18.根據權利要求16所述的圖形處理子系統(tǒng),其中所述顯示設備控制器包括一圖像數據高速緩沖存儲器,所述高速緩沖存儲器適合于存儲一包括在所述組平鋪塊中且與所述渲染圖像的至少一個附加行對應的第二圖像數據;且其中所述顯示設備控制器適合于在檢索所述第一圖像數據后從所述圖像數據高速緩沖存儲器中檢索所述第二圖像數據,并與所述顯示設備通信所述第二圖像數據。
19.一種圖形處理子系統(tǒng),其包含一顯示設備控制器,其適合于從一系統(tǒng)存儲器中的圖像數據的一平鋪式排列檢索與一渲染圖像的一第一行對應的一第一圖像數據,并與一顯示設備通信所述第一圖像數據。
20.根據權利要求19所述的圖形處理子系統(tǒng),其中所述顯示設備控制器適合于丟棄所述組圖像數據的不包括圖像數據的所述第一行的一部分。
21.根據權利要求19所述的圖形處理子系統(tǒng),其中所述顯示設備控制器包括一圖像數據高速緩沖存儲器,所述圖像數據高速緩沖存儲器適合于存儲一包括在所述組平鋪塊中且與所述渲染圖像的至少一個附加行對應的第二圖像數據;且其中所述顯示設備控制器適合于在檢索所述第一圖像數據后從所述圖像數據高速緩沖存儲器中檢索所述第二圖像數據,并與所述顯示設備通信所述第二圖像數據。
全文摘要
一種圖形處理子系統(tǒng)使用系統(tǒng)存儲器作為其用于渲染并掃描輸出圖像圖形存儲器。為了防止數據總線的死鎖,圖形處理子系統(tǒng)可使用數據總線的交替虛擬信道來從系統(tǒng)存儲器存取完成第一數據的寫入操作所需的附加數據。在與系統(tǒng)存儲器的通信中,包括擴展字節(jié)啟用信息的數據包允許圖形處理子系統(tǒng)將具有任意字節(jié)屏蔽的大量數據寫入系統(tǒng)存儲器。為了提高經渲染圖像數據的二維局部性的等級,圖形處理子系統(tǒng)以平鋪式格式將圖像數據排列在系統(tǒng)存儲器中。平鋪塊翻譯單元將圖像數據虛擬地址轉換成對應的系統(tǒng)存儲地址。圖形處理子系統(tǒng)從系統(tǒng)存儲器中讀取圖像數據并將其轉換成顯示信號。
文檔編號G06F13/28GK1950878SQ200580013511
公開日2007年4月18日 申請日期2005年4月26日 優(yōu)先權日2004年4月27日
發(fā)明者奧倫·魯賓斯坦, 戴維·G·里德, 喬納·M·阿爾本 申請人:輝達公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
甘肃省| 长沙县| 寿光市| 象山县| 宝山区| 武乡县| 江都市| 九龙坡区| 北辰区| 睢宁县| 宝清县| 巴彦淖尔市| 舟曲县| 威海市| 珲春市| 辽宁省| 华蓥市| 科尔| 遵化市| 南通市| 洛宁县| 九江县| 错那县| 章丘市| 鲁山县| 澎湖县| 五家渠市| 信阳市| 崇义县| 岳阳市| 七台河市| 泸西县| 神池县| 九寨沟县| 曲周县| 云林县| 和田县| 高碑店市| 金溪县| 刚察县| 阿拉善左旗|