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

具有前向進度位的存儲器管理系統(tǒng)的制作方法

文檔序號:6657205閱讀:190來源:國知局
專利名稱:具有前向進度位的存儲器管理系統(tǒng)的制作方法
技術領域
本發(fā)明涉及適于與圖形系統(tǒng)一起使用的存儲器管理系統(tǒng)。更具體而言,本發(fā)明涉及使用前向進度信息來管理物理頁面存儲器以確保圖形系統(tǒng)存儲器客戶端取得前向進度。
背景技術
計算機系統(tǒng)總是包括存儲器。實際上,大部分計算機系統(tǒng)具有許多不同類型和等級的存儲器,例如,主存儲器、高速緩沖存儲器、只讀存儲器、隨機存取存儲器、硬盤存儲器、閃速存儲器等。然而,在簡單地提及計算機存儲器時,通常是指用于存儲由處理器執(zhí)行的程序指令及由這些指令使用及產(chǎn)生的數(shù)據(jù)的主存儲器。
主存儲器的數(shù)量及類型對于整個系統(tǒng)性能而言十分重要。主存儲器系統(tǒng)可以由且通常由動態(tài)隨機存取存儲器(DRAM)和磁盤存儲器兩種存儲器構成。DRAM速度很快;數(shù)據(jù)讀取和寫入通常是在以納秒來計量的時間內(nèi)進行。遺憾的是,盡管DRAM很快,但其也相對較貴。該費用往往限制可用的DRAM數(shù)量。為擴增其DRAM,現(xiàn)代計算機將磁盤存儲器并入其主存儲器系統(tǒng)中。當與DRAM比較時,磁盤存儲器很慢,其讀取和寫入時間以微秒來計量。然而,有利的是,磁盤存儲器比DRAM便宜得多。盡管下文經(jīng)常論述磁盤存儲器—主要是因為磁盤存儲器很常用,但事實上在使用磁盤存儲器時,應了解,還可使用其他類型的存儲器,例如“虛擬磁盤”存儲器。還應了解,在論述虛擬存儲器系統(tǒng)的上下文中,術語“物理存儲器”適用于系統(tǒng)的DRAM。
對于將物理存儲器和磁盤存儲器二者結合以形成一整體主存儲器的假象的需求已引起了虛擬存儲器系統(tǒng)和虛擬存儲器管理器的發(fā)展。虛擬存儲器管理器可使在計算機系統(tǒng)上運行的應用程序(計算機程序)能夠一致地訪問比計算機實際上在物理存儲器中所具有的多得多的存儲器。將所述應用程序稱為訪問“虛擬存儲器”,“虛擬存儲器”的基本存儲實際上由物理和磁盤存儲器組合構成,其由虛擬存儲器管理器在幕后(從軟件應用程序的角度來看)進行管理。
虛擬存儲器管理器大多使用頁面概念。程序及其相關數(shù)據(jù)存儲在頁面中,其中使頻繁使用的頁面保持可在物理存儲器中得到。不太經(jīng)常使用的頁面存儲于磁盤存儲器中。當軟件應用程序需要使用不在物理存儲器中的頁面時,操作系統(tǒng)/虛擬存儲器管理器聲明頁面故障異常。當發(fā)生頁面故障異常時,虛擬存儲器管理器使處于磁盤存儲器中的所請求頁面插入到物理存儲器中,且將物理存儲器中的被置換頁面移動到磁盤存儲器中以便為將進入的頁面騰出空間。該過程稱為頁面交換。
通過使用硬件機制和操作系統(tǒng)軟件機制的組合來實施虛擬存儲器系統(tǒng)和虛擬存儲器管理器。為獲得高的性能效率,通常以如下方式構建虛擬存儲器系統(tǒng)當由應用程序進行的虛擬存儲器訪問會使得在不要求任何頁面交換的情況下進行物理存儲器訪問時,通常會完全使用比軟件快得多的硬件機制來執(zhí)行必需的物理訪問。
虛擬存儲器子系統(tǒng)的管理器組件的頁面置換算法(又稱為頁面管理器)負責決定將哪一頁面逐出物理存儲器并寫回到磁盤中以便為所請求的頁面騰出空間。頁面管理器還負責啟動DRAM與磁盤之間的相關傳輸。頁面管理器更新由硬件和軟件用來記錄虛擬頁面與DRAM或磁盤頁面之間的映射的各種表格。由于頁面管理器通常實施于軟件中,且由于其可經(jīng)得起花費一些時間來作決定,因此頁面管理器可使用相對高級的算法來決定逐出哪一頁面有可能對系統(tǒng)性能的不利性最小。
虛擬存儲器系統(tǒng)非常有用,因為其使計算機能夠運行需要使用的存儲器比可用物理存儲器更多的軟件應用程序(或程序),而又不會給軟件應用程序(或其程序員)增加具有任何關于上面正在運行(或?qū)⑦\行)程序的存儲器的基本組成的知識的負擔。此外,虛擬存儲器允許每一計算機程序在專用虛擬存儲器上下文中運行,該專用虛擬存儲器上下文給程序造成如下假象即使其他程序(或相同程序的其他實例)與該程序在系統(tǒng)上同時運行(或?qū)⑦\行),每當其運行時仍可使用相同的虛擬存儲器地址范圍。虛擬存儲器上下文的此種每程序?qū)嵗軌驁?zhí)行現(xiàn)代的多任務,例如使文字處理器、圖形程序、電子表格、及數(shù)據(jù)庫全部同時運行,且不要求這些程序中的任意一者知曉可能有其他程序正在同時運行。
盡管非常有利,但虛擬存儲器系統(tǒng)并非不存在問題。如果計算機系統(tǒng)的物理存儲器不足,則虛擬存儲器管理器可引起不斷的(或幾乎不斷的)頁面交換,這種情況稱為系統(tǒng)失效抖動現(xiàn)象,其導致系統(tǒng)性能不佳。然而,這種問題通常眾所周知且通常通過并入足夠的物理存儲器以防止或?qū)⑾到y(tǒng)失效抖動現(xiàn)象降低至可接受的水平來加以解決。
盡管現(xiàn)有技術計算機系統(tǒng)均得益于虛擬存儲器和虛擬存儲器管理器,然而現(xiàn)有的虛擬存儲器管理方法可能不足以應對現(xiàn)代和未來的圖形處理單元(GPU)的存儲器要求。在最近幾年里,圖形處理已發(fā)展成為由多個存儲器客戶端組成的、具有極高速度的并行處理系統(tǒng),其可對必須從GPU的主存儲器讀出及/或向GPU的主存儲器寫入的巨量數(shù)據(jù)執(zhí)行數(shù)學運算及相關運算。應注意,傳統(tǒng)上(即在不構建虛擬存儲器的GPU中),GPU的主存儲器通常稱為“幀緩沖器”。
在圖形術語中,“存儲器客戶端”是GPU中的硬件實體,該硬件實體可處理存儲在GPU的主存儲器中的數(shù)據(jù)以實現(xiàn)所需結果。例如,本發(fā)明的受讓人制成的圖形處理裝置包括多個著色器流水線,每一著色器流水線具有多個處理站(例如紋理站),且每一處理站可單獨進行編程來處理數(shù)據(jù)段。每一流水線的紋理站可為存儲器客戶端,因為其對存儲在GPU的主存儲器中的紋理數(shù)據(jù)進行讀取和操作,以實現(xiàn)針對其對流水線進行編程的預期結果。其他客戶端可包括光柵操作處理器、光柵化器、幾何引擎等。
圖形處理程序可劃分成所要完成的具體任務的群組。這些任務在本文中稱為上下文。上下文本身可劃分成多個線程,其中線程是可“完成”的上下文的一部分。也就是說,線程產(chǎn)生一給定的結果,該給定的結果然后可由其他線程使用。這時,由于該線程不再需要所述數(shù)據(jù),因而該線程“撤除數(shù)據(jù)”。
現(xiàn)代圖形系統(tǒng)提出的挑戰(zhàn)是確保每一存儲器客戶端具有為執(zhí)行其所分配的任務所需的信息(程序和數(shù)據(jù))。隨著客戶端數(shù)量的增加及隨著每一客戶端可處理的數(shù)據(jù)量的增加,確保所有客戶端均實際上取得進度變得十分重要且越來越困難。頁面交換盡管有利,但是其不能獨立地確保多個客戶端取得進度。
基本問題是多個存儲器客戶端可為了同一物理存儲器而相互競爭。所述問題會因以下事實而進一步加劇所有客戶端可能需要協(xié)同工作,要求來自每一客戶端的某些頁面在物理存儲器中同時存在,以在遇到另一頁面故障之前完成處理某些工作。例如,如果一個客戶端需要四個頁面來取得進度,但是缺失一個頁面,另一客戶端可能需要幾個其他頁面。然后,可能會將第一客戶端所要求的四個頁面中的一者從物理存儲器交換入磁盤存儲器中,以便為第二客戶端所要求的頁面騰出空間。由于其他客戶端引起頁面交換,因此第一客戶端可能永遠不能訪問其需用來取得進度的所有頁面。同樣,其他客戶端可能永遠不能訪問它們需用來取得進度的所有頁面。結果是抖動現(xiàn)象過度且可能導致圖形系統(tǒng)凍結。
因此,一種確??色@得所需頁面以使圖形系統(tǒng)取得進度的方法將較為有利。一種可用來確保取得或?qū)⑷〉们跋蜻M度的簡單硬件機制也將是較為有利。

發(fā)明內(nèi)容
本發(fā)明的原理大體而言涉及一種用于提供虛擬存儲器系統(tǒng)的技術,且具體而言涉及一種頁面管理器,該頁面管理器具有足夠的信息來保持要求駐留在幀緩沖器(物理存儲器)中的頁面的列表,以保證在由多個存儲器客戶端構成的圖形系統(tǒng)上運行的圖形上下文最終取得前向進度?!皥D形上下文”意指圖形應用程序(例如計算機游戲)的給定運行實例。有利的是,所需頁面列表可動態(tài)調(diào)整大小,盡管也可使用大小固定的所需頁面列表。可對所需頁面列表中的至少一些頁面進行標記,以禁止對經(jīng)標記的所需頁面進行頁面交換。
有利的是,存儲器系統(tǒng)通過使客戶端選擇性地對頁面故障異常附上一前向進度位來運行。存在前向進度位意味著自客戶端上一次遇到正在運行的同一上下文的頁面故障以來該頁面故障客戶端已經(jīng)取得了前向進度,而缺乏前向進度位意味著自客戶端在該上下文中出現(xiàn)上一次故障以來該頁面故障客戶端仍未取得前向進度。前向進度位的存在用來清除所述標記,由此使先前所標記的頁面能夠從幀緩沖存儲器交換出。


為能夠更詳細地理解上文所引用的本發(fā)明的特點,可參照實施例對上述簡要歸納的本發(fā)明做更詳細說明,其某些實施例顯示于附圖中。但是應注意附圖僅圖解說明本發(fā)明的典型實施例,且因此不得視為限定本發(fā)明的范圍,因為本發(fā)明可接受其它等效的實施例。
圖1圖解說明通過本發(fā)明的原理來解決問題的概要;圖2圖解說明具有帶多個客戶端的圖形處理單元、并實施本發(fā)明的原理的計算機系統(tǒng);圖3圖解說明幀緩沖存儲器內(nèi)容、所需的頁面列表、及標記列表之間的關系;及圖4圖解說明在虛擬存儲器系統(tǒng)中的多個客戶端的交互作用,包括當所需頁面不在幀緩沖存儲器中時存儲器管理單元(MMU)、主機接口、及CPU之間的交互作用。
為便于理解,盡可能使用相同的參考編號來表示各附圖中共有的相同元件。
具體實施例方式
本發(fā)明的原理提供用于解決與在具有由多個存儲器客戶端(下文中僅稱為“客戶端”)構成的GPU的計算機系統(tǒng)中管理虛擬存儲器相關的問題的方法和系統(tǒng)。圖1適用于圖解說明由本發(fā)明所解決的問題。在多客戶端系統(tǒng)中,為避免在自磁盤存儲器向幀緩沖器進行頁面交換的相對較慢的磁盤傳輸期間使GPU空閑而浪費時間,如果上下文A 50(正在執(zhí)行的程序或程序段)正在由客戶端A 52和B 56處理,且如果客戶端A在訪問位于磁盤存儲器54中的虛擬頁面AAA時遇到頁面故障,則在故障的頁面通過存儲器管理器61得以從磁盤存儲器54交換至幀緩沖存儲器60時,GPU(未示出)會自動執(zhí)行上下文切換,以允許由客戶端B 58運行上下文A 50(或客戶端C 51來運行上下文B 53等)。在頁面AAA駐留于幀緩沖存儲器60中之后,上下文A52將按其正確的順序自由地嘗試在對上下文A 50執(zhí)行的工作上取得前向進度。在頁面AAA換入且上下文A恢復到運行狀態(tài)后,客戶端A 50將執(zhí)行其任務一小段時間,直到給予客戶端B 58機會(例如通過超時)來服務于上下文A 50為止。客戶端A 52很可能不會執(zhí)行完其任務,且客戶端B可能發(fā)現(xiàn)其需要另一虛擬頁面ABB,且發(fā)生另一頁面故障異常以獲得ABB。
為使上下文A繼續(xù)取得前向進度,客戶端A仍需要頁面AAA,而客戶端B需要頁面ABB。為使上下文A前進,必須得到這兩個頁面。但是,如果將頁面AAA逐出(換出)至磁盤存儲器54以便為頁面ABB在幀緩沖器60中騰出空間,客戶端A將引發(fā)其試圖服務于上下文A的另一頁面故障。因此,如果系統(tǒng)從磁盤存儲器54重新獲得頁面AAA,但使頁面ABB被換出至磁盤存儲器54以便為頁面AAA騰出空間,則客戶端B接任且發(fā)現(xiàn)頁面ABB缺失,并聲明又一頁面故障。這種循環(huán)可繼續(xù)許多次。應記住,其他客戶端可正在運行其他上下文(或相同的上下文),因而一個頁面故障引起另一客戶端所需的頁面被逐出的幾率增加。整個系統(tǒng)性能可減慢,或者甚至由于頁面故障引起未來的頁面故障而停止。
應注意,即使GPU僅包含單個客戶端X,而該客戶端X需要兩個頁面AXA和AXB同時駐留以允許上下文A前進,則仍可能存在類似的問題。多個客戶端的存在只會使問題更加復雜化,因為其會產(chǎn)生同時遇到多個頁面故障的可能性。在GPU中的多個客戶端可意味著上下文的一些線程在一些客戶端上運行時可取得前向進度,而同一上下文的其他線程在其他客戶端上運行時不會取得前向進度。但是,這種情況仍構成所述上下文的整個前向進度。
本發(fā)明的原理可確保上下文(在我們實例中的上下文A)的所有所需頁面(在我們主實例中的頁面AAA和頁面ABB)將最終同時駐留于物理存儲器中,同時還允許將不需要的頁面逐出。本發(fā)明的基本原理是將關于上下文的哪些頁面需要(或不需要)同時駐留于物理存儲器中(以及因此應或不應選擇哪些頁面來由后續(xù)頁面故障逐出)的基本信息傳送給由中央處理器運行的頁面管理器的頁面置換算法,以保證所述上下文最終取得前向進度。如果僅僅由于同時需要的頁面多于系統(tǒng)中的物理頁面而不能取得前向進度,則所傳送信息也可向頁面管理器傳遞某些知識。這種知識使中央處理器能夠更適度地處理這種情況。
此外,本發(fā)明的原理通過允許頁面管理器作出更好的頁面置換決策而減輕系統(tǒng)失效抖動現(xiàn)象。這會在具有給定量的物理存儲器情況下提高系統(tǒng)性能,尤其是如果開始時的物理存儲器相對較少時。這一優(yōu)點也可變換為構建具有較小物理存儲器、卻與不使用本發(fā)明的系統(tǒng)具有相同性能的更廉價的系統(tǒng)。
圖2圖解說明計算機系統(tǒng)100,其具有與中央處理器103進行交互作用的帶多個客戶端的圖形處理單元102。中央處理器103正在運行操作系統(tǒng)和應用程序,或者在存儲于存儲器系統(tǒng)105中的多個應用程序之間執(zhí)行多任務。存儲器系統(tǒng)105既包括物理存儲器105A,即幀緩沖器60,又包括硬盤105B,即磁盤存儲器54。應用程序是使用圖形處理單元102中的各個客戶端的圖形程序。操作系統(tǒng)和應用程序可從計算機可讀媒體105C輸入。計算機可讀媒體105C包括程序指令,中央處理器103按照所述程序指令來實施本發(fā)明的原理。
圖形處理單元102包括自中央處理器103接收原始圖形數(shù)據(jù)的主機接口/前端(在下文中稱為主機接口104)。主機接口104緩沖輸入信息,并將原始圖形信息提供至幾何引擎106。幾何引擎可通過幀緩沖器接口116訪問幀緩沖存儲器60。幾何引擎106將形成、按比例縮放、旋轉(zhuǎn)、并將存儲于幀緩沖存儲器60中的“模型”座標中的圖元的三維頂點投影成二維幀緩沖器座標。通常,使用三角形作為三維對象的圖元,但通常使用矩形作為二維對象(例如文本顯示)的圖元。應了解,幀緩沖存儲器60可為圖形系統(tǒng)專用存儲器,或為系統(tǒng)存儲器的一部分。
將來自幾何引擎106的圖元的頂點的二維幀緩沖器座標應用于光柵化器108。光柵化器108識別圖元中的所有像素的位置。這通常沿延伸于界定各圖元的線之間的光柵(水平)線來執(zhí)行。光柵化器108的輸出稱為光柵化像素數(shù)據(jù)。
經(jīng)光柵化的像素數(shù)據(jù)應用于著色器110,著色器110使用著色器程序(指令序列)來處理輸入數(shù)據(jù)(代碼、位置、紋理、條件、常量等)以產(chǎn)生輸出數(shù)據(jù)。著色器可視為能同時處理大量數(shù)據(jù)(例如通過并行處理數(shù)據(jù))的處理能力的集合。
著色器110包括用于將經(jīng)光柵化的像素數(shù)據(jù)修改為具有所需紋理和光學特征的紋理引擎112。可使用高速處理大量數(shù)據(jù)的硬件流水線來實施可訪問存儲于幀緩沖存儲器60中的數(shù)據(jù)的紋理引擎112。然后將經(jīng)著色的像素數(shù)據(jù)發(fā)送至光柵操作處理器114(圖2中的光柵op),光柵操作處理器114視需要對經(jīng)著色的像素數(shù)據(jù)進行其他處理。結果是通過幀緩沖器接口116存儲在幀緩沖存儲器60中的像素數(shù)據(jù)。幀像素數(shù)據(jù)可用于各種過程,例如顯示器122上所顯示。
如圖2所示,各種站(例如主機接口104、光柵化器108、紋理站112、以及光柵操作處理器114)可訪問幀緩沖存儲器60。實際上,著色器110包括多個紋理站,每一紋理站均可訪問幀緩沖存儲器60。所有這些可訪問幀緩沖存儲器的站均處理數(shù)據(jù)以實現(xiàn)所需結果,且因此為客戶端。
在圖1幫助圖解說明本發(fā)明所解決的問題,且圖2圖解說明適用于實施本發(fā)明原理的計算機系統(tǒng)的同時,圖3幫助解釋如何在計算機100中實施本發(fā)明的原理。圖中顯示GPU 102具有存儲器管理單元—在下文中為MMU 300,MMU 300處理對于客戶端A 52、客戶端B 58、及計算機系統(tǒng)100的其他客戶端的存儲器管理任務,且可能存在許多此種裝置,然而為了清晰起見沒有示出??蛻舳俗陨聿恢廊绾螐膸彌_存儲器60向其提供頁面??蛻舳酥皇峭ㄟ^客戶端接口302與MMU 300發(fā)生交互作用。例如,客戶端A 52可能請求頁面AAA。響應于該請求,計算機100以下文所述的方式處理所述請求,該方式確保所請求的頁面AAA處于或?qū)⑻幱趲彌_存儲器60中。
圖3顯示兩個客戶端及其支持總線、線路和存儲器裝置310。其他客戶端將具有類似支持器件。為了將上下文裝載至客戶端中(比如將上下文A裝載入客戶端A 52中),主機接口104獲得上下文(比如從CPU 103)并以上下文A對客戶端A 52編程??蛻舳薃 52然后根據(jù)上下文A處理數(shù)據(jù),并將假定使用虛擬地址最終將對信息頁面的請求發(fā)送至MMU 300。MMU 300剖析所述虛擬地址來確定所請求的頁面是否可在幀緩沖存儲器60中得到。如果沒有頁面故障—意味著所請求的信息可在幀緩沖存儲器60中得到,則MMU 300不在線303上聲明頁面故障,且客戶端A通過幀緩沖器接口116從幀緩沖存儲器60獲得所請求的頁面。如果客戶端A在執(zhí)行上下文A方面取得任何前向進度,則客戶端A設置其存儲器裝置310(例如正反器),以產(chǎn)生前向進度位,該前向進度位通過其接口302輸入至MMU 300中。
前向進度是指撤除在正執(zhí)行的過程中使用的一些數(shù)據(jù)頁面,以使所述數(shù)據(jù)頁面不會再被正運行的上下文的線程所需要。然而,所述數(shù)據(jù)頁面可由另一線程所需要,但是這并不會影響是否已經(jīng)取得前向進度。
然而,如果客戶端A所請求的頁面(比如頁面AAA)不位于幀緩沖存儲器60中,則MMU 300在線路303上將頁面故障發(fā)送至客戶端A 52,從而使客戶端A停止處理上下文A。MMU 300還詢問前向進度位的狀態(tài),并通過總線305向主機接口104發(fā)送頁面異常請求頁面AAA以及關于頁面異常發(fā)起客戶端(在該情況中為客戶端A)是否已報告前向進度的指示。主機接口104將所缺失頁面(頁面AAA)的虛擬地址發(fā)送至中央處理器103。此外,如果且只有當客戶端A報告前向進度時,主機接口104也將前向進度位發(fā)送至中央處理器103。
如果中央處理器103接收到頁面故障虛擬地址,但未接收到前向進度位,則中央處理器103會詢問幀緩沖存儲器60以確定哪些頁面可供用于交換。然而,根據(jù)本發(fā)明的原理,中央處理器103以特別的方式執(zhí)行這一點。如果由于一客戶端(比如客戶端A 52)需要一頁面(比如頁面AAA)(參見圖1)而由該客戶端引起頁面故障異常,但該客戶端未報告前向進度,則中央處理器103將頁面AAA添加至頁面列表402中,參見圖4。此外,因為為使客戶端A 52取得前向進度,頁面AAA必須處于幀緩沖存儲器60中,所以應使用相關聯(lián)的標記列表404將頁面AAA標記為所需頁面。然后,通過將所不需要(即在標記列表404中未伴隨有標記)的頁面中的一者(比如頁面GHB)從幀緩沖存儲器60交換到磁盤驅(qū)動器105B中以便為頁面AAA騰出空間,來執(zhí)行對該頁面故障異常的服務。
應注意,頁面列表402僅包含幀緩沖存儲器60中的頁面的列表,而不包含數(shù)據(jù)本身。還應注意,只有在標記列表404中具有標記的頁面必須保持在幀緩沖存儲器60中。所有其他頁面可被換出,以便為所需頁面騰出空間。檢查標記列表404并確保所有經(jīng)標記的頁面保持在幀緩沖存儲器中,是中央處理器103的任務。
上文已注重于保持標記列表404。然而,響應于頁面異常,中央處理器103還向主機接口104發(fā)送用于另一客戶端的上下文,比如客戶端B 58。這會避免使GPU 102空閑地等待為服務于頁面故障而需要進行的磁盤存取而浪費時間。以上下文(可能為上下文A)經(jīng)由主機接口104對客戶端B 58進行編程,且當在幀緩沖存儲器60中可提供所請求的頁面AAA時,啟動客戶端B 58的運行。如果不存在其他需要運行上下文,則可允許GPU相對空閑。此外,主機接口104為客戶端B 58清除存儲器裝置310。如果客戶端B報告任何前向進度,則存儲器裝置310的狀態(tài)改變以通知MMU 300前向進度已報告。現(xiàn)在,將假定由于不能獲得另一頁面(比如頁面BCD),客戶端B引發(fā)頁面故障異常,但是也不報告前向進度。然后重復關于客戶端A的上述動作。
隨著更多客戶端引發(fā)頁面故障異常且不報告前向進度,標記列表404中的經(jīng)標記頁面數(shù)量增加。例如,當客戶端B 58因不能獲得其所請求的頁面BCD而引發(fā)頁面故障異常且也不報告前向進度時,頁面列表402及標記列表404增大。該過程重復進行,直到一個客戶端引發(fā)頁面故障異常但報告前向進度為止。即,客戶端在遇到頁面故障之前找到其所需要的所有數(shù)據(jù)而取得前向進度。在此種情況下,主機接口104對頁面故障異常附加前向進度位。
當出現(xiàn)一伴隨有前向進度位的頁面故障時,中央處理器103清除標記列表404中的所有標記。這使幀緩沖器中的任何頁面(產(chǎn)生頁面故障異常的頁面除外)均可被換出。
上文已論述前向進度位。大體而言,前向進度位可由任何會通知所述系統(tǒng)引發(fā)頁面故障的客戶端是否已取得前向進度的信號來替代。這些信號可為特殊位、對標志的設置或清除、字或特殊代碼、或類似的此類信號。報告前向進度(或無前向進度)才是重要的。然而,為了清楚起見,下文將繼續(xù)稱為前向進度位。
當尚未發(fā)生頁面故障異常時,中央處理器103控制每一客戶端必須運行其上下文的時間。在所分配的時間經(jīng)過之后,中央處理器103使主機接口104讓另一客戶端運行上下文。這使得能夠運行多個上下文,或允許多個客戶端以交錯方式運行一個上下文。
知曉客戶端是否取得前向進度十分重要,因為這意味著至少一個客戶端在幀緩沖器60中具有充分的信息以實際上撤除某一組數(shù)據(jù),從而使上下文無需使用目前的編程指令再次處理該組數(shù)據(jù)。實質(zhì)上,前向進度意味著某些工作已經(jīng)完成,且因此再也無需重復,因為在執(zhí)行所述工作期間,其因頁面故障而被丟棄。
根據(jù)本發(fā)明的實施例,如果客戶端(比如客戶端A 52)在該客戶端引起頁面故障異常時已取得前向進度,并附加前向進度位,則中央處理器103知曉最近運行的上下文在觸發(fā)頁面故障之前取得了前向進度。然而,如果客戶端尚未取得前向進度,則中央處理器103知曉沒有取得前向進度。甚至無需知曉哪一客戶端報告了關于哪一具體上下文的前向進度,中央處理器103知曉上下文的至少一個線程取得了前向進度。該知識不僅足以保證該線程取得前向進度,而且可使用在系統(tǒng)中進行的前向進度位傳播來確保最終整體上實現(xiàn)前向進度。
上文中隱含一種假設,即如果正在多個客戶端上運行的上下文的其他線程(例如用于將一不同的像素紋理化)保持取得前向進度同時偶爾遇到頁面故障(因此清除所需頁面列表)—一客戶端正在運行一尤其不幸運的、不能取得前向進度的線程,所述不幸運的線程將最終成為阻止啟動上下文的任何新線程的不滿意的從屬。這使得不幸運的線程成為可為該上下文運行的唯一線程。這一線程稱為關鍵線程。需要為上下文保持的列表402和404中的頁面將最終削減至僅有為允許所述關鍵線程取得前向進度所需的頁面。所述關鍵線程所不需要的已完成線程的頁面將已被標記為自由。這意味著系統(tǒng)將最終并自動地使所需數(shù)量的物理頁面專用于使所述關鍵線程能夠取得前向進度,而不會在使所述關鍵線程取得進度時所不需要的頁面上浪費任何物理頁面。
如果有幾個完全獨立的線程正在GPU中的獨立的子系統(tǒng)上運行,則上述方法可修改為使客戶端以子系統(tǒng)標識符來標記每一請求(以及可能每一所產(chǎn)生的頁面故障)。然后,頁面管理器將在所需頁面列表上附加每子系統(tǒng)的標識符。在此種情景下,操作系統(tǒng)將變成負責保持使所需頁面可提供給每一子系統(tǒng),以保證每一子系統(tǒng)可取得進度。由操作系統(tǒng)使用子系統(tǒng)標識符來保持有效的每子系統(tǒng)所需頁面表以確保每一子系統(tǒng)取得前向進度與其保持有效的每上下文所需頁面列表以確保每一上下文取得進度類似。主要差別在于子系統(tǒng)id由GPU客戶端提供,而操作系統(tǒng)將已經(jīng)知曉所運行上下文的上下文id。
本發(fā)明的一替代實施例為每一上下文保持一個頁面列表。在這一實施例中,頁面置換算法可通過僅釋放剛剛報告其已取得前向進度的上下文的前向進度所需要的頁面,來確保每一上下文取得前向進度。這允許頁面管理器保證每一上下文的前向進度,而不是僅僅保護任何一個上下文。
根據(jù)本發(fā)明的原理的計算機系統(tǒng)使用前向進度位、或缺少前向進度位來保證其運行的圖形應用程序或多任務應用程序當計劃在GPU上運行時可實際上均取得前向進度。上述情形的一實例是當紋理子系統(tǒng)(其為GPU中的虛擬存儲器客戶端)需要多個紋素,以便能夠撤除一具體像素來作為執(zhí)行圖形應用程序的上下文的一部分時。如果這多個紋素處在不同的虛擬存儲器頁面上,在提取所述多個虛擬存儲器頁面期間可能發(fā)生多個頁面故障。如果所有所需虛擬存儲器頁面未同時駐留于幀緩沖器中,則紋理子系統(tǒng)將永遠不能撤除該像素,從而有效地凍結圖形應用程序試圖渲染該像素。在不能在一定程度上保證所有所需頁面將同時駐留的情況下,不能保證圖形應用程序取得前向進度。
可使用具有固定大小的所需頁面列表來實施上述總體方案。例如,所需頁面列表的內(nèi)容可能動態(tài)變化,但列表的大小卻不會。當需要添加一新頁面至列表中時,CPU103然后可采用某種置換策略(例如后進先出)。然而,大體而言,動態(tài)變化所需頁面列表大小會避免將固定大小頁面列表制作得大到足以確保在所有情況(包括病理最壞情況)下均可取得前向進度這一需求、或消除病理最壞情況要求這一需求。
雖然上文已闡述使用圖形客戶端的本發(fā)明的原理,但是這些原理比所述原理更寬泛。例如,客戶端可包括軟件應用程序和媒體處理系統(tǒng),例如視頻和音頻系統(tǒng)。實施本發(fā)明的原理可能需要對一些操作系統(tǒng)進一些修改。
雖然上文是關于本發(fā)明的實施例,但在不背離本發(fā)明的基本范疇的前提下,還可構想出本發(fā)明的其它及進一步實施例,且本發(fā)明的范疇由隨附權利要求確定。
權利要求
1.一種用于操作運行具有線程的圖形應用程序上下文的計算機系統(tǒng)的方法,其包括下述步驟在因線程需要未處于幀緩沖器中的信息而由客戶端引發(fā)頁面故障異常之后,向處理器發(fā)送前向進度信息,其中所述前向進度信息指明是否剛好在所述頁面故障異常之前所述客戶端代表所述上下文取得前向進度。
2.如權利要求1所述的方法,其中前向進度信息包括前向進度位。
3.如權利要求1所述的方法,其進一步包括確保將線程的前向進度所需的頁面保持在所述幀緩沖存儲器中,直到報告前向進度為止。
4.如權利要求3所述的方法,其進一步包括以下步驟保持需要保持在幀緩沖器中的頁面的列表。
5.如權利要求4所述的方法,其中動態(tài)地調(diào)節(jié)所述所需頁面的列表的大小。
6.如權利要求4所述的方法,其中所述所需頁面的列表由頁面列表和標識所述所需頁面的標記列表構成。
7.如權利要求6所述的方法,其中禁止對所述幀緩沖存儲器中在所述標記列表中得到標記的頁面進行頁面交換。
8.一種包含用于處理器的指令的計算機可讀媒體,所述處理器控制具有帶多個客戶端的圖形處理子系統(tǒng)的計算機系統(tǒng)執(zhí)行下述步驟在因線程需要幀緩沖器中缺失的信息而由客戶端引發(fā)頁面故障異常之后,向處理器發(fā)送前向進度信息,其中所述前向進度信息提供是否剛好在所述頁面故障異常之前代表所述上下文取得所述前向進度。
9.如權利要求8所述的計算機可讀媒體,其中發(fā)送前向進度信息由發(fā)送前向進度位構成。
10.如權利要求8所述的計算機可讀媒體,其中所述指令進一步使所述計算機系統(tǒng)將前向進度所需的頁面保持在幀緩沖存儲器中,直到報告前向進度為止。
11.如權利要求10所述的計算機可讀媒體,其中所述指令進一步使所述計算機系統(tǒng)保持需要保持在所述幀緩沖器中的頁面的列表。
12.如權利要求11所述的計算機可讀媒體,其中所述頁面的列表動態(tài)地調(diào)節(jié)大小。
13.如權利要求10所述的計算機可讀媒體,其中頁面的列表包括對要保持在所述幀緩沖器中的所述頁面進行標記的標記列表。
14.如權利要求10所述的計算機可讀媒體,其中禁止對經(jīng)標記的頁面進行頁面交換。
15.一種具有帶多個客戶端的圖形子系統(tǒng)的計算機系統(tǒng),其包括幀緩沖存儲器,其用于存儲第一多個數(shù)據(jù)頁面;非駐留存儲器,其用于存儲第二多個數(shù)據(jù)頁面;多個客戶端,其用于運行上下文,其中在服務于上下文時每一客戶端可訪問所述第一多個數(shù)據(jù)頁面的頁面,且其中每一客戶端可發(fā)送虛擬頁面請求;存儲器管理單元,其用于接收虛擬頁面請求,所述存儲器管理器進一步用于在所述所請求的頁面不是所述第一多個數(shù)據(jù)頁面的頁面且因此是缺失的頁面時,發(fā)送頁面故障,其中所述頁面故障標識所述缺失頁面;多個存儲器裝置,每一者均以操作方式連接至相關聯(lián)的客戶端及連接至所述存儲器管理單元;主機接口,其用于將上下文發(fā)送至所述多個客戶端,其中上下文包括使數(shù)據(jù)頁面得到請求的線程,所述主機控制器進一步用于自所述存儲器管理單元接收頁面故障并用于發(fā)送缺失的頁面信息;處理器,其用于選擇性地將數(shù)據(jù)頁面從所述第二多個數(shù)據(jù)頁面交換至第一多個數(shù)據(jù)頁面中,并用于將數(shù)據(jù)頁面從所述第一多個數(shù)據(jù)頁面交換至所述第二多個數(shù)據(jù)頁面中,所述選擇性交換是響應于所述缺失頁面信息而執(zhí)行,所述處理器進一步用于為所述主機接口提供上下文;其中當所述多個客戶端中的第一客戶端在上下文線程上取得前向進度時,所述第一客戶端設置其相關聯(lián)的存儲器裝置以報告前向進度;其中當所述第一客戶端請求未處于所述幀緩沖器中的數(shù)據(jù)頁面時,所述存儲器管理單元產(chǎn)生頁面故障異常,所述頁面故障異常包括與所述第一客戶端相關聯(lián)的所述存儲器裝置的狀態(tài);其中所述頁面故障異常使所述主機接口將缺失頁面信息和前向進度信息發(fā)送至所述處理器;其中所述處理器將所述缺失的數(shù)據(jù)頁面從所述第二多個數(shù)據(jù)頁面交換至所述第一多個數(shù)據(jù)頁面中,并將選定的數(shù)據(jù)頁面從所述第一多個數(shù)據(jù)頁面交換至所述第二多個數(shù)據(jù)頁面中;其中所述所交換的缺失數(shù)據(jù)頁面作為經(jīng)標記的頁面添加在所需頁面列表中;其中所述選定的數(shù)據(jù)頁面不是所述所需頁面列表中經(jīng)標記的頁面;其中如果報告前向進度,則清除所述所需頁面列表中除所述缺失的數(shù)據(jù)頁面以外的所有所述標記;及其中當所述第一客戶端再一次運行所述上下文時,使與所述第一客戶端相關聯(lián)的所述存儲器裝置的狀態(tài)復位。
16.如權利要求15所述的計算機系統(tǒng),其中所述幀緩沖存儲器是物理存儲器。
17.如權利要求15所述的計算機系統(tǒng),其中所述圖形子系統(tǒng)是圖形處理單元。
18.如權利要求15所述的計算機系統(tǒng),其中所述處理器進一步確定所述多個客戶端中的每一客戶端可運行上下文的最大時間。
19.如權利要求15所述的計算機系統(tǒng),其中所述處理器構建虛擬存儲器管理器。
20.如權利要求15所述的計算機系統(tǒng),其中所述頁面故障異常使所述主機控制器切換客戶端以允許運行另一上下文線程。
全文摘要
本發(fā)明提供一種虛擬存儲器系統(tǒng),其保持需要駐留在幀緩沖器中的頁面的列表,以確保在由多個客戶端構成的圖形系統(tǒng)上運行的圖形應用程序上下文最終取得前向進度。需要處于幀緩沖存儲器中的頁面從不會從所述存儲器換出。所需頁面列表可動態(tài)地調(diào)整大小或為固定大小。標記文件用于防止對為取得前向進度所需的幀緩沖器中的頁面進行頁面交換。前向進度指示符表示頁面出故障的客戶端已代表上下文取得前向進度。前向進度指示符的存在用于清除所述標記文件,由此使得能夠?qū)λ鰩彌_存儲器中先前經(jīng)標記的頁面進行頁面交換。
文檔編號G06F12/12GK101048764SQ200580036534
公開日2007年10月3日 申請日期2005年10月25日 優(yōu)先權日2004年10月29日
發(fā)明者卡里姆·M·阿布達拉, 羅伯特·C·凱勒 申請人:輝達公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
阜阳市| 宁强县| 山阴县| 资兴市| 灵台县| 洛南县| 灌阳县| 大埔区| 滁州市| 将乐县| 富锦市| 封开县| 余江县| 大石桥市| 长泰县| 孟津县| 邳州市| 昌黎县| 浏阳市| 石泉县| 盐津县| 沙雅县| 建平县| 芷江| 长海县| 海门市| 宽甸| 邻水| 连城县| 淅川县| 宜宾县| 聂拉木县| 乐都县| 砚山县| 岐山县| 湘西| 从化市| 华宁县| 武平县| 哈巴河县| 盐源县|