對(duì)頁(yè)駐留的條件性頁(yè)錯(cuò)誤控制的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及圖形存儲(chǔ)器中的駐留及非駐留頁(yè),且更確切地說,涉及用于頁(yè)錯(cuò)誤控 制的技術(shù)。
【背景技術(shù)】
[0002] -般來說,對(duì)一些系統(tǒng)中的非駐留頁(yè)的存取導(dǎo)致頁(yè)錯(cuò)誤。非駐留頁(yè)是不具有與其 相關(guān)聯(lián)的物理存儲(chǔ)器位置的頁(yè)。相反,駐留頁(yè)是具有與其相關(guān)聯(lián)的物理存儲(chǔ)器位置的頁(yè)。例 如,非駐留頁(yè)可具有虛擬地址,但沒有實(shí)際物理存儲(chǔ)器與所述地址相關(guān)聯(lián)。在一些實(shí)例中, 軟件可使用例如頁(yè)表將虛擬地址映射到駐留頁(yè)的物理地址。一般來說,非駐留頁(yè)可不發(fā)生 映射,因?yàn)榉邱v留頁(yè)不具有分配給其的物理存儲(chǔ)器。存儲(chǔ)器管理單元(MMU)可執(zhí)行查找以確 定虛擬地址與物理地址之間的映射以便執(zhí)行例如存儲(chǔ)器讀取或存儲(chǔ)器寫入等存儲(chǔ)器事務(wù)。
【發(fā)明內(nèi)容】
[0003] 用于處置與例如多媒體相關(guān)的任務(wù)的一些應(yīng)用編程接口(API)可允許在沒有出錯(cuò) 的情況下存取非駐留頁(yè)。本發(fā)明提供與用于區(qū)別導(dǎo)致錯(cuò)誤及不導(dǎo)致錯(cuò)誤的非駐留頁(yè)的技術(shù) 相關(guān)的系統(tǒng)及方法。在一個(gè)實(shí)例中,在存取非駐留瓦片時(shí),可響應(yīng)于讀取指令且響應(yīng)于到非 駐留瓦片的寫入指令而返回預(yù)定位值,可丟棄所述寫入。在另一實(shí)例中,填充有恰當(dāng)默認(rèn)值 的"虛擬頁(yè)"可用于所有非駐留頁(yè)。所述虛擬頁(yè)可為填充有恰當(dāng)默認(rèn)值的單一存儲(chǔ)器頁(yè),可 例如在讀取到非駐留頁(yè)的任何存儲(chǔ)器地址時(shí)存取所述恰當(dāng)默認(rèn)值。在一些實(shí)例中,還可返 回存儲(chǔ)器讀取未翻譯的指示,例如信號(hào)。在虛擬地址不映射到物理地址時(shí),存儲(chǔ)器讀取不翻 譯。換句話說,在頁(yè)虛擬地址指向非駐留的頁(yè)時(shí),存儲(chǔ)器地址不翻譯。在頁(yè)是非駐留時(shí),虛擬 地址不可被翻譯為物理地址,因?yàn)椴淮嬖谟糜谒鎏摂M地址的物理地址。
[0004] 非駐留頁(yè)是不存在物理存儲(chǔ)器位置且因此沒有虛擬地址到物理地址的映射的頁(yè)。 相反,駐留頁(yè)是具有物理存儲(chǔ)器位置且因此可為虛擬地址到物理地址的映射的頁(yè)。另外,本 發(fā)明描述使客戶端(即,可嘗試讀取或?qū)懭氪鎯?chǔ)器中的頁(yè)的裝置)知曉頁(yè)何時(shí)是非駐留的各 種方式。
[0005] 在一個(gè)實(shí)例中,本發(fā)明描述一種處理非駐留頁(yè)的方法,其包含:嘗試存取非駐留 頁(yè),所述非駐留頁(yè)的地址指向含有默認(rèn)值的存儲(chǔ)器頁(yè);基于檢查指示所述非駐留頁(yè)不應(yīng)該 產(chǎn)生頁(yè)錯(cuò)誤的指示符而確定所述非駐留頁(yè)不應(yīng)該導(dǎo)致頁(yè)錯(cuò)誤;及返回存儲(chǔ)器讀取未翻譯的 指示且在對(duì)所述非駐留頁(yè)的存取是讀取且非駐留頁(yè)不應(yīng)該導(dǎo)致頁(yè)錯(cuò)誤時(shí)返回所述默認(rèn)值。
[0006] 在一個(gè)實(shí)例中,本發(fā)明描述一種處理非駐留頁(yè)的方法,其包含:嘗試存取非駐留 頁(yè),所述非駐留頁(yè)的地址指向含有默認(rèn)值的存儲(chǔ)器頁(yè);返回存儲(chǔ)器讀取未翻譯的指示且在 對(duì)所述非駐留頁(yè)的存取是讀取且所述非駐留頁(yè)不應(yīng)該導(dǎo)致頁(yè)錯(cuò)誤時(shí)返回所述默認(rèn)值;及在 對(duì)所述非駐留頁(yè)的存取是寫入且所述非駐留頁(yè)不應(yīng)該導(dǎo)致頁(yè)錯(cuò)誤時(shí)中斷寫入。
[0007] 在另一實(shí)例中,本發(fā)明描述一種處理非駐留頁(yè)的設(shè)備,其包含處理器,所述處理器 經(jīng)配置以:嘗試存取非駐留頁(yè),所述非駐留頁(yè)的地址指向含有默認(rèn)值的存儲(chǔ)器頁(yè);基于檢查 指示所述非駐留頁(yè)不應(yīng)該產(chǎn)生頁(yè)錯(cuò)誤的指示符而確定所述非駐留頁(yè)不應(yīng)該導(dǎo)致頁(yè)錯(cuò)誤;及 返回存儲(chǔ)器讀取未翻譯的指示且在對(duì)所述非駐留頁(yè)的存取是讀取且非駐留頁(yè)不應(yīng)該導(dǎo)致 頁(yè)錯(cuò)誤時(shí)返回所述默認(rèn)值。
[0008] 在另一實(shí)例中,本發(fā)明描述一種處理非駐留頁(yè)的設(shè)備,其包含處理器,所述處理器 經(jīng)配置以:嘗試存取非駐留頁(yè),所述非駐留頁(yè)的地址指向含有默認(rèn)值的存儲(chǔ)器頁(yè);返回存儲(chǔ) 器讀取未翻譯的指示且在對(duì)所述非駐留頁(yè)的存取是讀取且所述非駐留頁(yè)不應(yīng)該導(dǎo)致頁(yè)錯(cuò) 誤時(shí)返回所述默認(rèn)值;及在對(duì)所述非駐留頁(yè)的存取是寫入且所述非駐留頁(yè)不應(yīng)該導(dǎo)致頁(yè)錯(cuò) 誤時(shí)中斷寫入。
[0009] 在另一實(shí)例中,本發(fā)明描述一種處理非駐留頁(yè)的設(shè)備,其包含:用于嘗試存取非駐 留頁(yè)的裝置,所述非駐留頁(yè)的地址指向含有默認(rèn)值的存儲(chǔ)器頁(yè);用于基于檢查指示所述非 駐留頁(yè)不應(yīng)該產(chǎn)生頁(yè)錯(cuò)誤的指示符而確定所述非駐留頁(yè)不應(yīng)該導(dǎo)致頁(yè)錯(cuò)誤的裝置;及用于 返回存儲(chǔ)器讀取未翻譯的指示且在對(duì)所述非駐留頁(yè)的存取是讀取且非駐留頁(yè)不應(yīng)該導(dǎo)致 頁(yè)錯(cuò)誤時(shí)返回所述默認(rèn)值的裝置。
[0010] 在另一實(shí)例中,本發(fā)明描述一種向客戶端告知頁(yè)是非駐留的設(shè)備,其包含:用于存 取非駐留頁(yè)的裝置,所述非駐留頁(yè)的地址指向含有默認(rèn)值的存儲(chǔ)器頁(yè);用于返回存儲(chǔ)器讀 取未翻譯的指示的裝置及用于在對(duì)所述非駐留頁(yè)的存取是讀取且所述非駐留頁(yè)不應(yīng)該導(dǎo) 致頁(yè)錯(cuò)誤時(shí)返回所述默認(rèn)值的裝置;及用于在對(duì)所述非駐留頁(yè)的存取是寫入且所述非駐留 頁(yè)不應(yīng)該導(dǎo)致頁(yè)錯(cuò)誤時(shí)中斷寫入的裝置。
[0011] 在另一實(shí)例中,本發(fā)明描述一種計(jì)算機(jī)可讀存儲(chǔ)媒體。所述計(jì)算機(jī)可讀存儲(chǔ)媒體 具有存儲(chǔ)在其上的指令,所述指令在執(zhí)行時(shí)導(dǎo)致一或多個(gè)處理器:嘗試存取非駐留頁(yè),所述 非駐留頁(yè)的地址指向含有默認(rèn)值的存儲(chǔ)器頁(yè);基于檢查指示所述非駐留頁(yè)不應(yīng)該產(chǎn)生頁(yè)錯(cuò) 誤的指示符而確定所述非駐留頁(yè)不應(yīng)該導(dǎo)致頁(yè)錯(cuò)誤;及返回存儲(chǔ)器讀取未翻譯的指示且在 對(duì)所述非駐留頁(yè)的存取是讀取且非駐留頁(yè)不應(yīng)該導(dǎo)致頁(yè)錯(cuò)誤時(shí)返回所述默認(rèn)值。
[0012] 在另一實(shí)例中,本發(fā)明描述一種計(jì)算機(jī)可讀存儲(chǔ)媒體。計(jì)算機(jī)可讀存儲(chǔ)媒體具有 存儲(chǔ)在其上的指令,所述指令在執(zhí)行時(shí)導(dǎo)致一或多個(gè)處理器非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)媒體 存儲(chǔ)指令,所述指令在由一或多個(gè)處理器執(zhí)行時(shí)致使所述一或多個(gè)處理器:嘗試存取非駐 留頁(yè),所述非駐留頁(yè)的地址指向含有默認(rèn)值的存儲(chǔ)器頁(yè);返回存儲(chǔ)器讀取未翻譯的指示且 在對(duì)所述非駐留頁(yè)的存取是讀取且所述非駐留頁(yè)不應(yīng)該導(dǎo)致頁(yè)錯(cuò)誤時(shí)返回所述默認(rèn)值;及 在對(duì)所述非駐留頁(yè)的存取是寫入且所述非駐留頁(yè)不應(yīng)該導(dǎo)致頁(yè)錯(cuò)誤時(shí)中斷寫入。
[0013] 附圖及以下描述中陳述一或多個(gè)實(shí)例的細(xì)節(jié)。其它特征、目標(biāo)和優(yōu)點(diǎn)將從所述描 述和圖式以及權(quán)利要求書而顯而易見。
【附圖說明】
[0014] 圖1為說明可用于實(shí)施本發(fā)明中描述的技術(shù)的實(shí)例計(jì)算裝置的框圖。
[0015] 圖2是說明用以實(shí)施本發(fā)明中所描述的用于區(qū)別導(dǎo)致錯(cuò)誤的非駐留頁(yè)及不導(dǎo)致錯(cuò) 誤的非駐留頁(yè)的技術(shù)的實(shí)例計(jì)算裝置的框圖。
[0016] 圖3是說明用以實(shí)施本發(fā)明中所描述的用于區(qū)別導(dǎo)致錯(cuò)誤的非駐留頁(yè)及不導(dǎo)致錯(cuò) 誤的非駐留頁(yè)的技術(shù)的另一實(shí)例計(jì)算裝置的框圖。
[0017] 圖4是說明實(shí)例圖形管線的概念圖,其包含可執(zhí)行本發(fā)明的用于區(qū)別導(dǎo)致錯(cuò)誤的 非駐留頁(yè)及不導(dǎo)致錯(cuò)誤的非駐留頁(yè)的技術(shù)的單元。
[0018] 圖5為說明根據(jù)本發(fā)明中所描述的一或多個(gè)實(shí)例的實(shí)例方法的流程圖。
[0019] 圖6為說明根據(jù)本發(fā)明中所描述的一或多個(gè)實(shí)例的實(shí)例方法的流程圖。
【具體實(shí)施方式】
[0020] 如上文所論述,一些API允許在沒有出錯(cuò)的情況下存取非駐留頁(yè)。一個(gè)實(shí)例是 DirectX 11 (DX11)中的被稱為瓦片化資源的新特征。瓦片化資源允許在沒有出錯(cuò)的情況下 經(jīng)由圖形操作(例如,紋理讀取、色彩緩沖器寫入)存取資源的非駐留頁(yè)。
[0021] 本發(fā)明涉及用于頁(yè)錯(cuò)誤控制的技術(shù)。本發(fā)明提供與用于區(qū)別導(dǎo)致錯(cuò)誤及不導(dǎo)致錯(cuò) 誤的非駐留頁(yè)的技術(shù)相關(guān)的系統(tǒng)及方法。例如,本發(fā)明描述區(qū)別導(dǎo)致錯(cuò)誤的非駐留頁(yè)及不 導(dǎo)致錯(cuò)誤的非駐留頁(yè)的各種技術(shù)。一般在處理器或存儲(chǔ)器管理單元嘗試讀取或?qū)懭胍环邱v 留頁(yè)的存儲(chǔ)器地址時(shí)出現(xiàn)頁(yè)錯(cuò)誤。如上文所描述,非駐留頁(yè)是不存在物理存儲(chǔ)器位置且因 此沒有虛擬地址到物理地址的映射的頁(yè)。相反,駐留頁(yè)是具有物理存儲(chǔ)器位置且因此可為 虛擬地址到物理地址的映射的頁(yè)。
[0022] 另外,本發(fā)明描述使客戶端知曉頁(yè)何時(shí)是非駐留頁(yè)的各種方式。例如,本發(fā)明中描 述的技術(shù)可允許客戶端確定其存取非駐留頁(yè)。在本發(fā)明中描述的一些技術(shù)中,不暫停后續(xù) 命令的執(zhí)行,客戶端可經(jīng)配置以處置對(duì)非駐留頁(yè)的此類存取。客戶端是可嘗試讀取或?qū)懭?到存儲(chǔ)器中的頁(yè)的裝置。在一些實(shí)例中,處理器可為客戶端。例如,圖形處理單元可為客戶 端。在此實(shí)例中,GPU內(nèi)的多個(gè)子客戶端可請(qǐng)求存取(例如,紋理子客戶端可請(qǐng)求從地址的讀 取,而光柵單元可請(qǐng)求寫入)。在此實(shí)例中,GPU進(jìn)行讀取和寫入請(qǐng)求。在一些實(shí)例中,客戶端 可為GHJ內(nèi)的請(qǐng)求端,例如紋理單元、混合器單元或著色器單元。存儲(chǔ)器管理單元(MMU)可為 客戶端。然而,MMU-般是以上客戶端中的一或多者的從屬裝置。在一個(gè)實(shí)例中,在非駐留瓦 片被客戶端存取時(shí),可響應(yīng)于讀取操作返回預(yù)定位值且響應(yīng)于寫入操作可丟棄預(yù)定位值。 在另一實(shí)例中,填充有恰當(dāng)默認(rèn)值的"虛擬頁(yè)"可以用于所有非駐留頁(yè)。所述虛擬頁(yè)可為填 充有所述恰當(dāng)默認(rèn)值的單一存儲(chǔ)器頁(yè)。在客戶端存取到非駐留頁(yè)的任何存儲(chǔ)器地址時(shí),可 將虛擬頁(yè)中的值返回到客戶端。
[0023] 如上文所論述,DX11中的被稱為瓦片化資源的新特征允許在沒有出錯(cuò)的情況下經(jīng) 由圖形操作(即紋理讀取、色彩緩沖器寫入)存取資源的非駐留頁(yè)。因此,可需要區(qū)別導(dǎo)致錯(cuò) 誤的非駐留頁(yè)及不導(dǎo)致錯(cuò)誤的非駐留頁(yè)。另外,應(yīng)該找到使客戶端知曉頁(yè)何時(shí)是非駐留的 方式。
[0024] 在一個(gè)實(shí)例中,DX11頁(yè)屬性(例如讀取權(quán)限(R)、寫入權(quán)限(W)、可高速緩存存儲(chǔ)器 位置(C)及共享存儲(chǔ)器位置(S))可包含額外的位、旗標(biāo)或其它指示以指定對(duì)非駐留頁(yè)的存 取不應(yīng)該產(chǎn)生頁(yè)錯(cuò)誤。本文中描述的系統(tǒng)和方法的一些實(shí)例可在現(xiàn)有ARM位的頂部上添加 NF(無錯(cuò))位。其它位的以上列表相對(duì)于其它屬性既定不是窮盡性的??纱嬖谄渌?。僅基于 ARM給出頁(yè)屬性R、W、C及S作為實(shí)例。
[0025] 在一些實(shí)例中,無錯(cuò)(NF)位(旗標(biāo)等)可指示對(duì)此非駐留頁(yè)的存取不應(yīng)該產(chǎn)生頁(yè)錯(cuò) 誤。例如,對(duì)于給定虛擬地址,頁(yè)表可存儲(chǔ)與虛擬地址相關(guān)聯(lián)的物理地址以及存儲(chǔ)在由物理 地址識(shí)別的頁(yè)中的數(shù)據(jù)的頁(yè)屬性。頁(yè)屬性可作為二進(jìn)制位存儲(chǔ)在頁(yè)表中。頁(yè)表可映射一物 理地址(作為一個(gè)實(shí)例hNF位208可被添加到頁(yè)屬性以指定對(duì)此非駐留頁(yè)的存取不應(yīng)該產(chǎn) 生頁(yè)錯(cuò)誤。實(shí)施這些系統(tǒng)和方法的實(shí)例裝置可隨后返回用于讀取的默認(rèn)值或丟棄寫入。因 此,NF位208可指示對(duì)非駐留材料的存取不應(yīng)該導(dǎo)致錯(cuò)誤。在一個(gè)實(shí)例中,此裝置可確定讀 取或?qū)懭胧欠駥l(fā)生錯(cuò)誤。如果不出現(xiàn)錯(cuò)誤,那么可翻譯讀取或?qū)懭搿H绻l(fā)生錯(cuò)誤,那么 裝置可使用NF位208確定是否應(yīng)該報(bào)告所述錯(cuò)誤、關(guān)于所述錯(cuò)誤的操作系統(tǒng)(OS)的錯(cuò)誤。裝 置可執(zhí)行各種典型的頁(yè)錯(cuò)誤校正。或者,如果NF位208指示不應(yīng)該將錯(cuò)誤報(bào)告給OS,那么裝 置可返回用于讀取的例如0x0的值或裝置可中止寫入且繼續(xù)。
[0026]如上文所論述,在一些實(shí)例中,還可返回存儲(chǔ)器讀取未翻譯的指示,例如單精度。 在虛擬地址不映射到物理地址時(shí),存儲(chǔ)器讀取不翻譯。換句話說,在頁(yè)虛擬地址指向非駐留 的頁(yè)時(shí),存儲(chǔ)器地址不翻譯。在頁(yè)是非駐留時(shí),虛擬地址不可被翻譯為物理地址,因?yàn)椴淮?在用于所述虛擬地址的物理地址。
[0027]雖然NF位208的一個(gè)目的可為指定非駐留材料不應(yīng)該導(dǎo)致錯(cuò)誤,但NF位208還可影 響非駐留頁(yè)的確定。例如,NF位208可用于確定瓦片化資源中的頁(yè)是否為駐留,如此處所描 述。在本文中描述的各種實(shí)例中,NF位208可結(jié)合默認(rèn)值、駐留檢查等使用以確定瓦片化資 源中的頁(yè)是否為駐留。
[0028]在一實(shí)例中,如果出現(xiàn)錯(cuò)誤,那么對(duì)非駐留頁(yè)的存儲(chǔ)器存取已發(fā)生且NF位208必定 已被設(shè)定成允許錯(cuò)誤。如果未出現(xiàn)錯(cuò)誤,存儲(chǔ)器存取已發(fā)生,且NF位208使得允許發(fā)生錯(cuò)誤, 那么嘗試的存儲(chǔ)器存取必定是對(duì)駐留頁(yè)。如果錯(cuò)誤將出現(xiàn),除了 NF位208被設(shè)定成使得錯(cuò)誤 將發(fā)生之外,那么可發(fā)生本發(fā)明的其它方面,例如返回默認(rèn)值、駐留檢查等。
[0029] 一些實(shí)例可使用現(xiàn)有的頁(yè)表屬性。換句話說,在此實(shí)例中可不需要存在NF位20