用于避免頁面錯誤的gpu存儲緩沖器預(yù)提取和預(yù)備份信令的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及用于圖形處理的技術(shù),且更具體來說涉及用于來自圖形處理單元 (GPU)的用于避免虛擬存儲器系統(tǒng)中的頁面錯誤的預(yù)提取和預(yù)備份信令的技術(shù)。
【背景技術(shù)】
[0002] 可由圖形處理單元(GPU)產(chǎn)生供顯示的視覺內(nèi)容(例如,圖形用戶接口和視頻游 戲的內(nèi)容)。GPU可將二維或三維(3D)對象轉(zhuǎn)換成可顯示的二維(2D)像素表示。另外,GPU 正越來越多地用于執(zhí)行某些類型的計算,所述計算通過GPU核心的高度并行性質(zhì)得到有效 地處置。此些應(yīng)用程序有時被稱為通用GPU(GPGPU)應(yīng)用程序。將關(guān)于3D對象的信息轉(zhuǎn)換 成可顯示的位圖以及大型GPGPU應(yīng)用程序需要相當(dāng)大的存儲器和處理功率。常??稍诖鎯?器存取期間發(fā)生GPU處理無效率,因為缺乏用于停止和恢復(fù)執(zhí)行于GPU上的高度并行作業(yè) 的技術(shù)。因而,使用復(fù)雜且昂貴的存儲器控制器以及中央處理單元(CPU)監(jiān)察來改善存儲 器存取效率。
【發(fā)明內(nèi)容】
[0003] 一般來說,本發(fā)明描述用于來自圖形處理單元(GPU)的用于避免虛擬存儲器系統(tǒng) 中的頁面錯誤的預(yù)提取和預(yù)備份信令的技術(shù)。
[0004] 在本發(fā)明的一個實例中,一種用于輸入/輸出裝置中的請求調(diào)頁的方法包括:由 輸入/輸出裝置跟蹤由執(zhí)行于輸入/輸出裝置上的應(yīng)用程序?qū)μ摂M存儲器系統(tǒng)中的映射頁 面的第一部分的使用,其中映射頁面的所述第一部分表示所述應(yīng)用程序可能需要的若干頁 面的一部分,且其中映射頁面的所述第一部分備份到物理存儲器中。輸入/輸出裝置可進 一步經(jīng)配置以確定所述使用是否跨越閾值,且在確定跨越所述閾值的情況下用信號通知處 理器將頁面的第二部分備份在物理存儲器中,其中頁面的所述第二部分表示所述應(yīng)用程序 可能需要的所述若干頁面的不同部分。
[0005] 在上述技術(shù)的一個實例中,閾值為表示映射頁面的第一部分的使用百分數(shù)的水 印,且映射頁面的至少第一部分存儲在緩沖器中。在此情況下,水印為緩沖器內(nèi)的位置。輸 入/輸出裝置通過確定由輸入/輸出裝置在緩沖器中存取的當(dāng)前位置是否越過水印來確定 所述使用是否跨越閾值。
[0006] 在本發(fā)明的另一實例中,一種用于輸入/輸出裝置中的請求調(diào)頁的方法包括由輸 入/輸出裝置跟蹤由執(zhí)行于輸入/輸出裝置上的應(yīng)用程序?qū)μ摂M存儲器系統(tǒng)中的映射頁面 的第一部分的使用,其中映射頁面的所述第一部分表示所述應(yīng)用程序可能需要的若干頁面 的一部分,且其中映射頁面的第一部分的頁面表項存儲在存儲器管理單元中。輸入/輸出 裝置可進一步經(jīng)配置以確定所述使用是否跨越閾值,且在確定跨越閾值的情況下用信號通 知處理器提取映射頁面的第二部分的頁面表項,其中頁面的所述第二部分表示所述應(yīng)用程 序可能需要的所述若干頁面的不同部分。
[0007] 在上述技術(shù)的一個實例中,閾值為表示映射頁面的第一部分的使用百分數(shù)的水 印。更具體來說,水印可為映射頁面的第一部分的最后一頁面內(nèi)的位置。在此情況下,輸入 /輸出裝置通過確定由輸入/輸出裝置在最后一頁面中存取的當(dāng)前位置是否越過水印來確 定所述使用是否跨越閾值。
[0008] 也就設(shè)備及計算機可讀存儲媒體來描述本發(fā)明的技術(shù),所述計算機可讀存儲媒體 存儲用于致使處理器執(zhí)行所述技術(shù)的指令。一或多個實例的細節(jié)陳述于附圖及以下描述 中。其它特征、目標(biāo)及優(yōu)勢將從描述及附圖和從權(quán)利要求書中顯而易見。
【附圖說明】
[0009] 圖1是展示經(jīng)配置以使用本發(fā)明的技術(shù)的實例計算裝置的框圖。
[0010] 圖2是說明圖1的系統(tǒng)存儲器的實例物理頁的概念圖。
[0011] 圖3是展示經(jīng)配置以使用本發(fā)明的技術(shù)的實例處理單元的框圖。
[0012] 圖4是展示根據(jù)本發(fā)明的技術(shù)的用于預(yù)提取和預(yù)備份信令的實例設(shè)備的框圖。
[0013] 圖5是展示根據(jù)本發(fā)明的一個實例的預(yù)備份信號觸發(fā)的一個實例的概念圖。
[0014] 圖6是展示根據(jù)本發(fā)明的一個實例的預(yù)提取信號觸發(fā)的一個實例的概念圖。
[0015] 圖7是根據(jù)本發(fā)明的一個實例的用于執(zhí)行一種方法的流程圖。
[0016] 圖8是根據(jù)本發(fā)明的另一實例的用于執(zhí)行一種方法的流程圖。
【具體實施方式】
[0017] 本發(fā)明涉及用于圖形處理的技術(shù),且更具體來說涉及用于來自圖形處理單元的用 于避免虛擬存儲器系統(tǒng)中的頁面錯誤的預(yù)提取和預(yù)備份信令的技術(shù)。
[0018] 運行于中央處理單元(CPU)上的現(xiàn)代操作系統(tǒng)(OS)通常使用虛擬存儲器方案來 將存儲器分配到操作于CPU上的多個程序。虛擬存儲器為將計算機系統(tǒng)的物理存儲器(例 如,RAM、磁盤存儲器等)虛擬化以使得應(yīng)用程序需求僅指一組存儲器(即,虛擬存儲器)的 存儲器管理技術(shù)。虛擬存儲器由映射到物理存儲器中的位置的相連地址空間組成。以此方 式,物理存儲器的分段被"隱藏"而使應(yīng)用程序看不到,應(yīng)用程序改為可與虛擬存儲器的相 連塊相互作用。虛擬存儲器中的相連塊通常排列成"頁面"。每一頁面為虛擬存儲器地址的 某種固定長度的相連區(qū)塊。通常由存儲器管理單元(MMU)來處置從虛擬存儲器到物理存儲 器的映射。當(dāng)前映射到物理存儲器中的位置的虛擬存儲器空間被看作"備份"到物理存儲 器。
[0019] 通過翻譯后備緩沖器(TLB)來存儲虛擬存儲器空間中的位置到物理存儲器的映 射。所述TLB由MMU用于將虛擬地址快速翻譯為物理地址。可將TLB實施為將虛擬存儲器 地址用作輸入且輸出物理存儲器地址的內(nèi)容可尋址存儲器(CAM)。MMU可隨后使用輸出的 物理存儲器地址來快速地檢索所請求的數(shù)據(jù)。
[0020] 一些應(yīng)用程序可在執(zhí)行期間使用大量存儲器。然而,可能同時不需要可由應(yīng)用程 序使用的存儲器的量。代替將所有頁面映射到程序可能需要的虛擬存儲器中的做法是,可 僅針對實際上當(dāng)前正由程序請求的存儲器來映射頁面。如果程序請求先前尚未映射的數(shù) 據(jù),那么映射虛擬存儲器的額外頁面。這被稱為請求調(diào)頁或請求存儲器備份。如果程序請 求尚未映射的數(shù)據(jù),那么觸發(fā)頁面錯誤。響應(yīng)于頁面錯誤,MMU可隨后映射正請求的物理存 儲器位置。響應(yīng)于頁面錯誤大體上減緩虛擬存儲器系統(tǒng)的響應(yīng)時間。
[0021] 虛擬存儲器系統(tǒng)的響應(yīng)時間的減少也可由TLB失敗引起。當(dāng)從備份的頁面請求數(shù) 據(jù)時,發(fā)生TLB失敗,但頁面中的虛擬存儲器地址的實際映射當(dāng)前不存儲在TLB中。在許多 情況下,TLB可能不存儲所有頁面映射,即使頁面先前已被備份仍如此。當(dāng)發(fā)生TLB失敗時, MMU存取合乎需要的映射且將它們存儲在TLB中。
[0022] 現(xiàn)代圖形處理單元(GPU)具有類似于CPU的頁面出錯能力,從而允許在GPU存取 時間不存在存儲器分配。然而,相對于GPU的計算功率,用于處置GPU中的頁面錯誤的時延 使請求填充頁面出錯變得不合乎需要。時延可為用戶顯而易見,因此產(chǎn)生令人不滿意的用 戶經(jīng)驗。這對于不能有效地重新調(diào)度工作以涵蓋參與從存儲器調(diào)頁的時延的GPU系統(tǒng)來說 可尤其成問題。
[0023] 歷史上,例如圖形處理單元(GPU)的輸入/輸出(I/O)裝置已要求在發(fā)起對抗由 此裝置存取的任何存儲緩沖器的作業(yè)之前將那些緩沖器全部備份到物理存儲器中且映射 到IO存儲器管理單元(IOMMU)虛擬存儲器空間中。在此上下文中,緩沖器為用來臨時保存 數(shù)據(jù)的物理存儲裝置的區(qū)域。當(dāng)隨虛擬存儲器系統(tǒng)一起使用時,在軟件中將緩沖器虛擬地 實施為到物理存儲器中的位置的指針。以此方式,虛擬軟件緩沖器被"備份"在物理存儲器 中。
[0024] 隨著緩沖器大小的增長,移到請求調(diào)頁模型已變得合乎需要,如發(fā)生在最現(xiàn)代的 中央處理單元CPU/0S中。在此情境中,當(dāng)IO裝置試圖存取當(dāng)前未備份(及映射)到表示 緩沖器的一部分的物理存儲器中的存儲器中時,在IOMMU內(nèi)觸發(fā)頁面錯誤。當(dāng)發(fā)生頁面錯 誤時,IO裝置暫停對出錯作業(yè)的處理,且切換到另一作業(yè)或暫停直到錯誤處置完成。當(dāng)發(fā)生 錯誤時,通常經(jīng)由來自IO子系統(tǒng)(例如,I0MMU)的指示錯誤的中斷來用信號通知主機CPU。 在此情況下,OS確定錯誤為請求頁面錯誤且將討論中的某量的緩沖器從備份存儲器移到物 理存儲器中并將它映射到IOMMU中。隨后,OS用信號通知IO子系統(tǒng)已發(fā)生備份,從而允許 出錯的IO作業(yè)繼續(xù)。
[0025] 請求調(diào)頁是一種用以在利用時間填充存儲器的有價值技術(shù)。然而,請求頁面錯誤 的性能成本可極高,特別是在IO裝置(例如,GPU)不能夠在錯誤處置期間調(diào)度其它工作的 情況下。錯誤處置為長路徑,包含IO子系統(tǒng)到CPU中斷處置且隨后到磁盤存取以用于備份 存儲器檢索。因此在可能的情況下避免頁面錯誤是高度合乎需要的。
[0026] 鑒于這些缺點,本發(fā)明提議用于IO裝置(例如,GPU)的請求調(diào)頁的技術(shù),所述技 術(shù)利用預(yù)提取和預(yù)備份通知事件信令以減少與請求調(diào)頁相關(guān)聯(lián)的時延。根據(jù)本發(fā)明的一個 實例,通過在IO裝置實際上請求未備份的存儲器之前執(zhí)行請求調(diào)頁操作來限制頁面錯誤。 如果IO裝置能夠在當(dāng)前處理期具備"預(yù)見"能力同時仍在所映射的存儲器中工作,那么IO 裝置可預(yù)期未來的頁面錯誤且可將預(yù)備份信號發(fā)送到主機CPU OS/驅(qū)動器以請求備份將在 未來存取的存儲器。如果信令發(fā)生得足夠早以隱藏頁面?zhèn)浞莸臅r延,那么將在IO裝置存取 存儲器之前備份所述存儲器,且因此避免頁面錯誤。
[0027] 在本發(fā)明的一個實例中,一種用于輸入/輸出裝置中的請求調(diào)頁的方法包括:由 輸入/輸出裝置跟蹤由執(zhí)行于輸入/輸出裝置上的應(yīng)用程序?qū)μ摂M存儲器系統(tǒng)中的映射頁 面的第一部分的使用,其中映射頁面的所述第一部分表示所述應(yīng)用程序可能需要的若干頁 面的一部分,且其中映射頁面的所述第一部分備份到物理存儲器中。輸入/輸出裝置可進 一步經(jīng)配置以確定所述使用是否跨越閾值,且在確定跨越所述閾值的情況下用信號通知處 理器將頁面的第二部分備份到物理存儲器中,其中頁面的所述第二部分表示所述應(yīng)用程序 可能需要的所述若干頁面的不同部分。
[0028] 在本發(fā)明的另一實例中,一種用于輸入/輸出裝置中的請求調(diào)頁的方法包括:由 輸入/輸出裝置跟蹤由執(zhí)行于所述輸入/輸出裝置上的應(yīng)用程序?qū)μ摂M存儲器系統(tǒng)中的映 射頁面的第一部分的使用,其中映射頁面的所述第一部分表示所述應(yīng)用程序可能需要的若 干頁面的一部分,且其中映射頁面的第一部分的頁面表項存儲在存儲器管理單元中。輸入/ 輸出裝置可進一步經(jīng)配置以確定使用是否跨越閾值,且在確定跨越閾值的情況下用信號通 知處理器提取映射頁面的第二部分的頁面表項,其中頁面的所述第二部分表示所述應(yīng)用程 序可能需要的所述若干頁面的不同部分。
[0029] 圖1是說明實例計算裝置2的框圖,