而不是片外存儲器在本地處理數(shù)據(jù)。此允許 GPU 12通過消除GPU 12經(jīng)由總線20讀取及寫入數(shù)據(jù)的需要而以更有效的方式操作,其中經(jīng) 由總線操作可經(jīng)歷繁重的總線業(yè)務(wù)。然而,在一些情況下,GPU 12可不包含單獨的高速緩沖 存儲器,而是經(jīng)由總線20利用存儲器10XPU高速緩沖存儲器14可包含一或多個易失性或非 易失性存儲器或儲存裝置,例如隨機存取存儲器(RAM)、靜態(tài)RAM(SRAM)、動態(tài)RAM(DRAM)、可 擦除可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)、快閃存儲器、磁性數(shù)據(jù)媒體或光學(xué) 存儲媒體。
[0062] CPU 6及/或GPU 12可將再現(xiàn)的圖像數(shù)據(jù)存儲在存儲器10內(nèi)所分配的幀緩沖器中。 顯示接口 16可從幀緩沖器檢索數(shù)據(jù)且配置顯示器18以顯示由再現(xiàn)的圖像數(shù)據(jù)表示的圖像。 在一些實例中,顯示接口 16可包含經(jīng)配置以將從幀緩沖器檢索的數(shù)字值轉(zhuǎn)換為可由顯示器 18消耗的模擬信號的數(shù)/模轉(zhuǎn)換器(DAC)。在其它實例中,顯示接口 16可將數(shù)字值直接傳遞 到顯示器18以進(jìn)行處理。
[0063] 顯示器18可包含監(jiān)視器、電視、投影裝置、液晶顯示器(IXD)、等離子顯示面板、發(fā) 光二極管(LED)陣列、陰極射線管(CRT)顯示器、電子紙、表面?zhèn)鲗?dǎo)電子發(fā)射顯示器(SED)、激 光電視顯示器、納米晶體顯示器或另一種類型的顯示單元。顯示器18可集成在計算裝置2 內(nèi)。舉例來說,顯示器18可為移動電話手持機或平板計算機的屏幕。或者,顯示器18可為經(jīng) 由有線或無線通信鏈路而耦合到計算機裝置2的獨立裝置。舉例來說,顯示器18可為經(jīng)由電 纜或無線鏈路而連接到個人計算機的計算機監(jiān)視器或平板顯示器。
[0064]總線20可使用總線結(jié)構(gòu)和總線協(xié)議的任何組合來實施,包含第一、第二和第三代 總線結(jié)構(gòu)和協(xié)議、共享總線結(jié)構(gòu)和協(xié)議、點對點總線結(jié)構(gòu)和協(xié)議、單向總線結(jié)構(gòu)和協(xié)議以及 雙向總線結(jié)構(gòu)和協(xié)議??捎靡詫嵤┛偩€20的不同總線結(jié)構(gòu)和協(xié)議的實例包含例如 HyperTransport總線、InfiniBand總線、高級圖形端口總線、外圍組件互連(PCI)總線、PCI 高速總線、高級微控制器總線架構(gòu)(AMBA)、高級高性能總線(AHB)、AMBA高級外圍總線 (APB),和AMBA高級eXentisible接口(AXI)總線。也可以使用其它類型的總線結(jié)構(gòu)和協(xié)議。
[0065] 可在圖1中說明的計算裝置2中的組件中的任一者中實施本發(fā)明中所描述的用于 區(qū)別導(dǎo)致錯誤的非駐留頁及不導(dǎo)致錯誤的非駐留頁的技術(shù),所述組件包含例如CPU 6、GPU 12及存儲器10。頁也可被稱作存儲器頁或虛擬頁。所述頁可為虛擬存儲器的固定長度鄰接 塊。由于所述頁是虛擬的,所以其可或可不存儲于例如存儲器10等存儲器中。在特定頁存儲 在例如存儲器1 〇中時,其可被稱為駐留頁。相反,在特定頁未存儲在例如存儲器1 〇中時,其 可被稱為非駐留頁。其也可被稱作未駐留。在一些實例中,可在GPU 12中(例如,在GPU 12的 圖形管線中)實施用于區(qū)別導(dǎo)致錯誤的非駐留頁及不導(dǎo)致錯誤的非駐留頁的技術(shù)中的全部 或幾乎全部。
[0066] 圖2及3說明本發(fā)明的兩個實例系統(tǒng)的進(jìn)一步細(xì)節(jié),其描述區(qū)別導(dǎo)致錯誤的非駐留 頁及不導(dǎo)致錯誤的非駐留頁的各種技術(shù)。另外,圖2及3說明使例如GPU 12等客戶端知曉頁 何時為非駐留的各種方式。換句話說,在頁不存儲于例如存儲器10等存儲器中時。一些實例 實現(xiàn)區(qū)別導(dǎo)致錯誤及不導(dǎo)致錯誤的非駐留頁。
[0067] 圖2是說明用以實施本發(fā)明中所描述的用于區(qū)別導(dǎo)致錯誤的非駐留頁及不導(dǎo)致錯 誤的非駐留頁的技術(shù)的實例計算裝置的框圖。所述計算裝置包含GPU 12、存儲器控制器8 (其可為輸入/輸出存儲器管理單元(I0MMU))、存儲器10(其可為動態(tài)隨機存取存儲器 (DRAM))及頁表(PTE)206。
[0068] 如圖2中所說明,實例計算裝置包含存儲器控制器8。存儲器控制器8可呈存儲器控 制器的形式。另外,存儲器控制器8可經(jīng)配置以處理各種頁屬性210,例如讀取權(quán)限(R)、寫入 權(quán)限(W)、可高速緩存存儲器位置(C)及共享存儲器位置(S)。如所說明,在圖2的實例中,頁 屬性210可包含用以指定對不應(yīng)該產(chǎn)生頁錯誤的非駐留頁的存取的額外位。因此,存儲器控 制器8可經(jīng)配置以處理指示對非駐留頁的存取不應(yīng)該產(chǎn)生頁錯誤的"無錯"(NF)位208 JF位 208可指示對此非駐留頁的存取不應(yīng)該產(chǎn)生頁錯誤。
[0069] NF位208的一個目的可為指定非駐留材料不應(yīng)該導(dǎo)致錯誤。NF位208還可影響非駐 留頁的確定。NF位208可用于確定瓦片化資源中的頁是否為駐留,如此處所描述。例如,NF位 208可結(jié)合默認(rèn)值、駐留檢查等使用以確定瓦片化資源中的頁是否為駐留。
[0070] 在一實例中,如果GPU 12、存儲器控制器8或其它處理器執(zhí)行導(dǎo)致錯誤發(fā)生的存儲 器存取(例如,讀取、寫入),那么存儲器存取是對非駐留頁且NF位208必定已經(jīng)被設(shè)定成允 許所述存儲器存取的錯誤。如果存儲器存取不出現(xiàn)錯誤且NF位208使得允許發(fā)生錯誤,那么 GPU 12、存儲器控制器8或其它處理器進(jìn)行的嘗試的存儲器存取必定是對駐留頁。如果錯誤 將出現(xiàn),除了NF位208被設(shè)定成使得錯誤將不發(fā)生之外,那么可發(fā)生本發(fā)明的其它方面,例 如返回默認(rèn)值、駐留檢查等。
[0071 ]圖2說明包含被稱作"NF" 208的"無錯"、"不是駐留位"或"非駐留位"的實例。對于 給定虛擬地址,頁表可存儲與虛擬地址相關(guān)聯(lián)的物理地址212,以及存儲在由物理地址識別 的頁中的數(shù)據(jù)的頁屬性210。頁屬性210可被存儲為前置于物理地址212 (作為一個實例)的 二進(jìn)制位。這些頁屬性210中的一者是NF位208,如圖2中所說明。
[0072] 一些實例實現(xiàn)使例如GPU 12等客戶端知曉頁何時是非駐留的。如本文中所描述, 頁在其不存儲于例如存儲器10等存儲器中時是非駐留的。由于頁是虛擬的,所以其可或可 不存儲于例如存儲器10等存儲器中。在特定頁存儲在例如存儲器10中時,其可被稱為駐留 頁。相反,在特定頁不存儲在例如存儲器10中時,其可被稱為非駐留頁。其也可被稱作不駐 留。
[0073]頁可為虛擬存儲器的固定長度鄰接塊。一般來說,虛擬存儲器允許尋址及使用當(dāng) 前不駐留在主存儲器中的頁。在一些情況下,如果例如在GPU 12上運行的程序嘗試存取不 是在存儲器中的頁中的位置,即,不駐留或非駐留,那么產(chǎn)生被稱為頁錯誤的異常。在一些 情況下,操作系統(tǒng)或硬件可自動從輔助存儲裝置載入所需的頁。然而,在本應(yīng)用中,對非駐 留頁的一些嘗試的存取導(dǎo)致頁錯誤且其它嘗試的存取不導(dǎo)致頁錯誤。如上文所論述,DX11 瓦片化可允許在不導(dǎo)致錯誤的情況下發(fā)生非駐留存儲器存取,確切地說,可替代地發(fā)生本 文中描述的方面中的一或多者。
[0074]在圖2中說明的實例中,NF位208可提供非駐留的頁不應(yīng)該導(dǎo)致錯誤的指示。例如, NF位208可用于確定非駐留的瓦片化資源中的頁是否應(yīng)該導(dǎo)致錯誤。在一些實例中,這種解 決方案的優(yōu)點是可通過以下方式支持到所有其它資源(非瓦片化)的存取的頁錯誤:簡單地 返回頁錯誤而非將非瓦片化的非駐留頁的虛擬地址映射到虛擬頁,這是因為一般在處理器 或存儲器管理單元嘗試讀取或?qū)懭氲椒邱v留頁的存儲器地址時出現(xiàn)頁錯誤。
[0075]在一實例中,對于到瓦片化資源的存取,可將NF位208設(shè)定成不允許錯誤。相反,對 于到所有其它資源(例如非瓦片化)的存取,可將NF位208設(shè)定成允許錯誤。換句話說,對非 駐留頁的讀取或?qū)懭霊?yīng)該導(dǎo)致到所有其它資源的存取的頁錯誤。因此,如果NF 208是單一 位且NF= "Γ指示不應(yīng)該發(fā)生錯誤,那么NF= "0"指示應(yīng)該正常地處理錯誤。因此,對于到所 有其它資源(例如非瓦片化)的存取,NF位208將為"0"。相反情況也一樣。因此,如果NF 208 是單一位且NF= "0"(例如,低有效)指示不應(yīng)該發(fā)生錯誤,那么NF= "Γ指示應(yīng)該正常地處 理錯誤。因此,對于到所有其它資源(例如非瓦片化)的存取,NF位208將為"1"。
[0076]在圖2的實例中,在讀取不應(yīng)該導(dǎo)致錯誤的非駐留頁時,可針對所述讀取返回默認(rèn) 值,例如預(yù)定位值,例如全部〇、全部1等。所述默認(rèn)值提供可以用于所有非駐留頁存取的預(yù) 定義值。在所說明的實例中,如果發(fā)生到非駐留頁的讀取,那么所述值將為0。所述默認(rèn)值可 為例如存儲在存儲器控制器8中的值。不讀取存儲器10,存儲器控制器8可替代地返回所述 默認(rèn)值。然而,所述默認(rèn)值不確鑿地指示所述頁是非駐留的。所述默認(rèn)值(例如〇)可為共同 值且駐留頁的存儲器10中的存儲器位置有可能偶然含有默認(rèn)值。因此,存儲器控制器8可提 供狀態(tài)或確認(rèn)(ACK)以向執(zhí)行所述讀取的裝置(例如GPU 12)指示已經(jīng)存取不應(yīng)該導(dǎo)致錯誤 的非駐留頁。
[0077]在一實例中,可執(zhí)行讀取但一般不執(zhí)行寫入的紋理單元可在讀取不應(yīng)該導(dǎo)致錯誤 的非駐留頁時返回默認(rèn)值。所述紋理單元可為單獨的硬件或可為像素著色器或其它著色器 的部分。所述紋理單元可選擇所顯示的粗糙水平。例如,所述紋理單元可選擇駐留的較粗糙 紋理而不是非駐留的更詳細(xì)紋理。
[0078]如圖2的實例中所說明,可由例如GPU 12等客戶端執(zhí)行(或請求)駐留檢查。在圖2 的實例中,GPU 12請求駐留檢查且存儲器控制器8返回指示虛擬存儲器位置是駐留還是非 駐留的駐留確認(rèn)。
[0079]在圖2的實例中,在嘗試寫入到非駐留頁時,應(yīng)該丟棄所述寫入嘗試,因為寫入嘗 試是針對不是存儲在存儲器中的頁。換句話說,非駐留頁的虛擬地址不映射到實際的物理 存儲器地址。用于嘗試的寫入的數(shù)據(jù)可被丟失且可需要重新計算所述數(shù)據(jù)(如果稍后需要 所述數(shù)據(jù))。然而,此一般是必要的,因為尚未分配存儲器位置來存儲非駐留頁的信息。在一 實例中,存儲器控制器8(例如,存儲器管理單元(MMU)或輸入/輸出MMU(IOMMU))可在存儲器 控制器8確定寫入是針對非駐留頁時丟棄所述寫入。在其它實例中,像素著色器、幾何著色 器或其它著色器單元可執(zhí)行寫入且可經(jīng)編程以丟棄對非駐留頁的寫入。
[0080] 在一些實例中,執(zhí)行讀取及/或?qū)懭胍杂糜谏疃葴y試。深度測試是可相對于三維 (3-D)圖形中的圖像深度坐標(biāo)使用以決定所渲染場景的哪些元素可見及哪些元素被隱藏的 圖形操作。還可執(zhí)行讀取以作為色彩混合的部分,其可使用操作指派新的色彩值:New_ color = old_color*( l-blend_value)+incoming_color*(blend_value)。這些功能可使用 本文中提供的實例以允許處理與深度測試、色彩混合等相關(guān)的駐留及非駐留頁。
[0081] 如上文所論述,一些實例可使用現(xiàn)有的頁表屬性。換句話說,在此實例中可不需要 存在NF位208。在此實例中,填充有恰當(dāng)默認(rèn)值的"虛擬頁"可用于所有非駐留頁。所述虛擬 頁可為填充有恰當(dāng)默認(rèn)值的單一存儲器頁,可例如在讀取到非駐留頁的任何存儲器地址時 存取所述恰當(dāng)默認(rèn)值。
[0082]圖3是說明用以實施本發(fā)明中所描述的用于區(qū)別導(dǎo)致錯誤的非駐留頁及不導(dǎo)致錯 誤的非駐留頁的技術(shù)的實例計算裝置的框圖。圖3的實例使用現(xiàn)有的頁表屬性且不使用NF 位208。在此實例中,填充有恰當(dāng)默認(rèn)值的"虛擬頁"可用于所有非駐留頁。計算裝置包含GPU 12、存儲器控制器8、存儲器10、PTE 306及比較單元308。不使用無錯/非駐留位。
[0083]在圖3中說明的替代解決方案中,虛擬頁含有指示頁是否為駐留的虛擬值。所述虛 擬頁可為填充有恰當(dāng)默認(rèn)值的單一存儲器頁,可例如在讀取到非駐留頁的任何存儲器地址