亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

在解決存儲器訪問故障的同時重播存儲器事務(wù)的制作方法

文檔序號:6527075閱讀:232來源:國知局
在解決存儲器訪問故障的同時重播存儲器事務(wù)的制作方法
【專利摘要】本發(fā)明的一個實施例是一種并行處理單元(PPU),其包括一個或多個流式多處理器(SM)并按照SM實施重播單元。一經(jīng)檢測到與由特定SM所發(fā)出的存儲器事務(wù)相關(guān)聯(lián)的頁故障,對應的重播單元就令該SM,而非任何未受影響的SM,停滯發(fā)出新的存儲器事務(wù)。重播單元然后將出故障的存儲器事務(wù)以及任何出故障的飛行中的存儲器事務(wù)存儲在重播緩存器中。頁故障被解決時,重播單元對重播緩存器中的存儲器事務(wù)進行重播——將成功的存儲器事務(wù)從重播緩存器移除——直到所存儲的存儲器事務(wù)全部都已成功執(zhí)行為止。有利地,與一經(jīng)檢測到頁故障就跨所有被包括在PPU中的SM停止執(zhí)行存儲器事務(wù)直到故障解決為止的常規(guī)的PPU相比,上述PPU的整體性能得以提高。
【專利說明】在解決存儲器訪問故障的同時重播存儲器事務(wù)

【技術(shù)領(lǐng)域】
[0001]本發(fā)明總體上涉及計算機科學,且更具體地,涉及在解決存儲器訪問故障的同時重播存儲器事務(wù)(transact1n )。

【背景技術(shù)】
[0002]典型的計算機系統(tǒng)包括中央處理單元(CPU)和并行處理單元(PPU)。當軟件應用程序在計算機系統(tǒng)上執(zhí)行時,CPU和PPU執(zhí)行存儲器操作以對物理存儲器位置中的數(shù)據(jù)進行存儲及檢索。一些先進的計算機系統(tǒng)實施為CPU和PPU所共用的統(tǒng)一虛擬存儲器架構(gòu)(UVM)0除此之外,該架構(gòu)還使得CPU和PPU能夠使用共用(例如,同一)虛擬存儲器地址來訪問物理存儲器位置,而不管該物理存儲器位置是在系統(tǒng)存儲器還是PPU本地的存儲器(pro存儲器)內(nèi)。
[0003]計算機系統(tǒng)典型地包括存儲器管理功能以使虛擬存儲器和分頁(paging)操作便利。在正常操作過程中,指令可請求對與頁出(page out)的數(shù)據(jù)頁相關(guān)聯(lián)的虛擬地址進行訪問,從而導致訪問故障。對訪問故障做出響應,常規(guī)的處理單元可完成在出故障的指令之前的指令,并將出故障的指令與在出故障的指令之后開始執(zhí)行的所有指令一起取消。此時,訪問故障處理程序(fau11 handler)對所請求的數(shù)據(jù)頁進行頁入(page-1n),并從出故障的指令開始重新啟動執(zhí)行。在一些情況中,相對于典型的指令執(zhí)行時間,訪問故障處理程序會要求相當多的時間來完成。特別是,如果計算機系統(tǒng)實施統(tǒng)一虛擬存儲器架構(gòu),則訪問故障處理程序會執(zhí)行冗長的出故障的程序(faulting procedure),該程序在系統(tǒng)和PF1U本地的存儲器之間遷移(migrate)存儲器頁。
[0004]在高度并行多線程先進PPU中,成百上千的存儲器事務(wù)且因而許多地址轉(zhuǎn)譯隨時都會很突出。因此,很多存儲器訪問故障隨時都會激活。如果PPU是要實施常規(guī)的指令取消故障處理技術(shù),則PPU將要頻繁地取消所有執(zhí)行單元上的幾千個指令。此外,PPU將要等待冗長的訪問故障處理程序,以為每個執(zhí)行線程內(nèi)的每個出故障的指令加載被頁出的數(shù)據(jù)。這樣的時延(latency)將會極大地并且通常不可接受地使整體系統(tǒng)性能降低。
[0005]如前所述,本領(lǐng)域所需要的是一種更加有效的方法,以處理涉及多線程處理單元的訪問故障。


【發(fā)明內(nèi)容】

[0006]本發(fā)明的一個實施例是為一種由計算機實施的、用于處理與多線程處理單元相關(guān)聯(lián)的虛擬存儲器事務(wù)的方法而設(shè)。該方法包括:從第一單元接收第一虛擬存儲器事務(wù);試圖執(zhí)行第一虛擬存儲器事務(wù);檢測與第一虛擬存儲器事務(wù)有關(guān)的第一頁故障;將第一虛擬存儲器事務(wù)存儲在重播緩存器中;引發(fā)停滯條件,所述停滯條件禁止第一單元產(chǎn)生隨后的虛擬存儲器事務(wù),直到第一頁故障已經(jīng)解決為止;以及一旦第一頁故障已經(jīng)解決,就重新執(zhí)行第一虛擬存儲器事務(wù)以及存儲在重播緩存器中的至少一個其他虛擬存儲器事務(wù)。
[0007]所公開的方法的一個優(yōu)點在于,對頁故障未做出貢獻的多線程處理單元中所包含的單元在頁故障存在時仍可繼續(xù)發(fā)出虛擬存儲器事務(wù)。此外,由于受影響的單元繼續(xù)重播出故障的虛擬存儲器事務(wù)以及出故障的飛行中虛擬存儲器事務(wù),所以在解決頁故障的同時不取消這些虛擬存儲器事務(wù)。因此,與常規(guī)的多線程處理單元相比,多線程處理單元的整體性能被改善,其中常規(guī)的多線程處理單元一經(jīng)產(chǎn)生頁故障,就取消由多處理單元內(nèi)的所有單元所發(fā)出的虛擬存儲器事務(wù),直到頁故障解決為止。

【專利附圖】

【附圖說明】
[0008]因此,可以詳細地理解本發(fā)明的上述特征,并且可以參考示范性實施例得到對如上面所簡要概括的本發(fā)明更具體的描述,其中一些實施例在附圖中示出。然而,應當注意的是,附圖僅示出了本發(fā)明的典型實施例,因此不應被認為是對其范圍的限制,本發(fā)明可以具有其他等效的實施例。
[0009]圖1是示出了配置為實現(xiàn)本發(fā)明的一個或多個方面的計算機系統(tǒng)的框圖;
[0010]圖2是根據(jù)本發(fā)明的一個實施例的、示出統(tǒng)一虛擬存儲器系統(tǒng)(UVM)的框圖;
[0011]圖3是根據(jù)本發(fā)明的一個實施例的、示出配置有重播單元的統(tǒng)一虛擬存儲器系統(tǒng)(UVM)的框圖;
[0012]圖4是根據(jù)本發(fā)明的一個實施例的、示出圖3的重播單元的概念圖;以及
[0013]圖5是根據(jù)本發(fā)明的一個實施例的、用于管理由流式多處理器(SM)所發(fā)出的存儲器事務(wù)的方法步驟的流程圖。

【具體實施方式】
[0014]在下面的描述中,將闡述大量的具體細節(jié)以提供對本發(fā)明更透徹的理解。然而,本領(lǐng)域的技術(shù)人員應該清楚,本發(fā)明可以在沒有一個或多個這些具體細節(jié)的情況下得以實施。
[0015]系統(tǒng)概述
[0016]圖1為示出了配置為實現(xiàn)本發(fā)明的一個或多個方面的計算機系統(tǒng)100的框圖。計算機系統(tǒng)100包括經(jīng)由可以包括存儲器橋105的互連路徑通信的中央處理單元(CPU) 102和系統(tǒng)存儲器104。存儲器橋105可以是例如北橋芯片,經(jīng)由總線或其他通信路徑106 (例如超傳輸(HyperTransport)鏈路)連接到I/O (輸入/輸出)橋107。I/O橋107,其可以是例如南橋芯片,從一個或多個用戶輸入設(shè)備108 (例如鍵盤、鼠標)接收用戶輸入并且經(jīng)由通信路徑106和存儲器橋105將該輸入轉(zhuǎn)發(fā)到CPU102。并行處理子系統(tǒng)112經(jīng)由總線或第二通信路徑113 (例如外圍部件互連(PCI )Express、加速圖形端口或超傳輸鏈路)連接到存儲器橋105 ;在一個實施例中,并行處理子系統(tǒng)112是將像素傳送到顯示設(shè)備110的圖形子系統(tǒng),顯示設(shè)備110可以是任何常規(guī)的陰極射線管、液晶顯示器、發(fā)光二極管顯示器等。系統(tǒng)盤114也可連接到I/O橋107,并且可配置為存儲由CPU102和并行處理子系統(tǒng)112所使用的應用程序和數(shù)據(jù)以及內(nèi)容。系統(tǒng)盤114為應用程序和數(shù)據(jù)提供非易失性存儲空間,并且可包含固定式或可移除式硬盤驅(qū)動器、閃存驅(qū)動器和CD-ROM (壓縮光盤只讀存儲器)、DVD-ROM (數(shù)字通用光盤-ROM)、藍光、HD-DVD (高分辨率DVD)或者其他磁性、光學或固態(tài)存儲設(shè)備。
[0017]交換器116提供I/O橋107與諸如網(wǎng)絡(luò)適配器118以及各種插卡120和121的其他部件之間的連接。其他部件(未明確示出),包括通用串行總線(USB)或其他端口連接、壓縮光盤(CD)驅(qū)動器、數(shù)字通用光盤(DVD)驅(qū)動器、膠片錄制設(shè)備及類似部件,也可以連接到I/O橋107。圖1所示的各種通信路徑包括具體命名的通信路徑106和113可以使用任何適合的協(xié)議實現(xiàn),諸如PC1-EXpreSS、AGP (加速圖形端口)、超傳輸或者任何其他總線或點到點通信協(xié)議,并且如本領(lǐng)域已知的,不同設(shè)備間的連接可使用不同協(xié)議。
[0018]在一個實施例中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于圖形和視頻處理的電路,包括例如視頻輸出電路,并且構(gòu)成一個或多個平行處理單元(PPU)202。在另一個實施例中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于通用處理的電路,同時保留底層(underlying)的計算架構(gòu),本文將更詳細地進行描述。在又一個實施例中,可以將并行處理子系統(tǒng)112與一個或多個其他系統(tǒng)元件集成在單個子系統(tǒng)中,諸如結(jié)合存儲器橋105、CPU102以及I/O橋107,以形成片上系統(tǒng)(SoC)。眾所周知,許多圖形處理單元(GPU)設(shè)計為執(zhí)行并行操作和計算,因而被視為一類并行處理單元(PPU)。
[0019]在并行處理子系統(tǒng)112中可以包括任何數(shù)目的PPU202。例如,可在單個插卡上提供多個PPU202、或可將多個插卡連接到通信路徑113、或可將一個或多個PPU202集成到橋式芯片中。在多PPU系統(tǒng)中的PPU202可以彼此同樣或不同。例如,不同的PPU202可能具有不同數(shù)目的處理內(nèi)核、不同容量的本地并行處理存儲器等等。在存在多個PPU202的情況下,可并行操作那些PI3U從而以高于單個PPU202所可能達到的吞吐量來處理數(shù)據(jù)。包含一個或多個PPU202的系統(tǒng)可以以各種配置和形式因素來實現(xiàn),包括臺式電腦、筆記本電腦或手持式個人計算機、服務(wù)器、工作站、游戲控制臺、嵌入式系統(tǒng)等。
[0020]PPU202有利地實現(xiàn)高度并行處理架構(gòu)。PPU202包括大量通用處理集群(GPC)。每個GPC均能夠并發(fā)執(zhí)行大量的(例如,幾百或幾千)線程,其中每個線程均為程序的實例(instance )。在一些實施例中,單指令、多數(shù)據(jù)(SIMD)指令發(fā)出技術(shù)用于在不提供多個獨立指令單元的情況下支持大量線程的并行執(zhí)行。在其他實施例中,單指令、多線程(SIMT)技術(shù)用于使用配置為向GPC208中的每一個內(nèi)的處理引擎集發(fā)出指令的公共指令單元來支持大量一般來說同步的線程的并行執(zhí)行。不同于所有處理引擎通常都執(zhí)行同樣指令的SMD執(zhí)行機制,SIMT執(zhí)行通過給定線程程序允許不同線程更容易跟隨分散執(zhí)行路徑。
[0021]GPU包括大量流式多處理器(SM),其中每個SM均配置為處理一個或多個線程組。傳送到特定GPC208的一系列指令構(gòu)成線程,并且跨SM內(nèi)的并行處理引擎(未示出)的某一數(shù)目的并發(fā)執(zhí)行線程的集合在本文中稱為“線程束(warp)”或“線程組”。如本文所使用的,“線程組”是指對不同輸入數(shù)據(jù)并發(fā)執(zhí)行相同程序的一組線程,所述組的一個線程被指派到SM內(nèi)的不同處理引擎。另外,多個相關(guān)線程組可以在SM內(nèi)同時活動(在執(zhí)行的不同階段)。該線程組集合在本文中稱為“協(xié)作線程陣列”(“CTA”)或“線程陣列”。
[0022]在本發(fā)明的實施例中,使用計算系統(tǒng)的PPU202或其他處理器來使用線程陣列執(zhí)行通用計算是可取的。為線程陣列中的每個線程指派在線程的執(zhí)行期間對于線程可訪問的唯一的線程標識符(“線程ID”)??杀欢x為一維或多維數(shù)值的線程ID控制線程處理行為的各方面。例如,線程ID可用于確定線程將要處理輸入數(shù)據(jù)集的哪部分和/或確定線程將要產(chǎn)生或?qū)戄敵鰯?shù)據(jù)集的哪部分。
[0023]工作時,CPU102是計算機系統(tǒng)100的主處理器,控制和協(xié)調(diào)其他系統(tǒng)部件的操作。具體地,CPU102發(fā)出控制PPU202的操作的命令。在一個實施例中,通信路徑113是PCIExpress鏈路,如本領(lǐng)域所知的,其中專用通道被分配到每個PPU202。也可以使用其他通信路徑。PPU202有利地實現(xiàn)高度并行處理架構(gòu)。PPU202可配備有任何容量(amount)的本地并行處理存儲器(PPU存儲器)。
[0024]在一些實施例中,系統(tǒng)存儲器104包括統(tǒng)一虛擬存儲器(UVM)驅(qū)動器101。UVM驅(qū)動器101包括用于執(zhí)行與為CPU102和PPU202所共用的統(tǒng)一虛擬存儲器(UVM)有關(guān)的各種任務(wù)的指令。除此之外,該架構(gòu)還使得CPU102和PPU202能夠用共用的(common)虛擬存儲器地址來訪問物理存儲器位置,而不管該物理存儲器位置是在系統(tǒng)存儲器104還是PPU202本地的存儲器(PI3U存儲器)內(nèi)。
[0025]應該理解,本文所示系統(tǒng)是示例性的,并且變化和修改都是可能的。連接拓撲,包括橋的數(shù)目和布置、CPU102的數(shù)目以及并行處理子系統(tǒng)112的數(shù)目,可根據(jù)需要修改。例如,在一些實施例中,系統(tǒng)存儲器104直接連接到CPU102而不是通過橋,并且其他設(shè)備經(jīng)由存儲器橋105和CPU102與系統(tǒng)存儲器104通信。在其他替代性拓撲中,并行處理子系統(tǒng)112連接到I/O橋107或直接連接到CPU102,而不是連接到存儲器橋105。而在其他實施例中,I/O橋107和存儲器橋105可能被集成到單個芯片上而不是作為一個或多個分立設(shè)備存在。大型實施例可以包括兩個或更多個CPU102以及兩個或更多個并行處理系統(tǒng)112。本文所示的特定部件是可選的;例如,任何數(shù)目的插卡或外圍設(shè)備都可能得到支持。在一些實施例中,交換器116被去掉,網(wǎng)絡(luò)適配器118和插卡120、121直接連接到I/O橋107。
[0026]統(tǒng)一虛擬存儲器系統(tǒng)架構(gòu)
[0027]圖2是根據(jù)本發(fā)明的一個實施例的、示出統(tǒng)一虛擬存儲器(UVM)系統(tǒng)200的框圖。如圖所示,統(tǒng)一虛擬存儲器系統(tǒng)200包括而不限于CPU102、系統(tǒng)存儲器104以及與并行處理單元存儲器(PPU存儲器)204相連的并行處理單元(PTO)202。CPU102和系統(tǒng)存儲器104彼此相連且經(jīng)由存儲器橋105而與PPU202相連。
[0028]CPU102經(jīng)由虛擬存儲器地址來執(zhí)行可請求存儲在系統(tǒng)存儲器104或PPU存儲器204中的數(shù)據(jù)的線程。根據(jù)對存儲器系統(tǒng)的內(nèi)部工作方式的了解,虛擬存儲器地址屏蔽(shield)正在CPU102中執(zhí)行的線程。因而,線程可僅知曉虛擬存儲器地址,并可通過經(jīng)由虛擬存儲器地址而請求數(shù)據(jù)來對數(shù)據(jù)進行訪問。
[0029]CPU102包括CPU MMU209,其處理來自CPU102的用于將虛擬存儲器地址轉(zhuǎn)譯成物理存儲器地址的請求。對存儲在諸如系統(tǒng)存儲器104和PPU存儲器204這類物理存儲器單元中的數(shù)據(jù)進行訪問,需要物理存儲器地址。CPU102包括CPU故障處理程序211,其響應于產(chǎn)生頁故障的CPUMMU209而執(zhí)行步驟,以使所請求的數(shù)據(jù)對于CPU102是可用的。CPU故障處理程序211通常為駐存(reside)在系統(tǒng)存儲器104中且在CPU102上執(zhí)行的軟件,該軟件通過對CPU102的中斷而被喚醒。
[0030]系統(tǒng)存儲器104存儲包含各種存儲器頁(未示出),這些存儲器頁供在CPU102或PPU202上執(zhí)行的線程所使用。如圖所示,系統(tǒng)存儲器104存儲CPU頁表206,其包含虛擬存儲器地址和物理存儲器地址之間的映射。系統(tǒng)存儲器104還存儲頁狀態(tài)目錄210,其充當用于UVM系統(tǒng)200的“主頁表”,如下面更為詳細討論的。系統(tǒng)存儲器104存儲故障緩存器216,其包含由PPU202寫入以便通知CPU102P由PU202產(chǎn)生的頁故障的條目。在一些實施例中,系統(tǒng)存儲器104包括統(tǒng)一虛擬存儲器(UVM)驅(qū)動器101,其包含這樣的指令,這些指令在被執(zhí)行時令CPU102此外還執(zhí)行用于修復頁故障的命令。在替代性實施例中,頁狀態(tài)目錄210和一個或多個命令隊列214的任何組合都可存儲在PI3U存儲器204中。此外,PI3U頁表208可存儲在系統(tǒng)存儲器104中。
[0031]以與CPU102類似的方式,PPU202執(zhí)行可經(jīng)由虛擬存儲器地址來請求存儲在系統(tǒng)存儲器104或PPU存儲器204中的數(shù)據(jù)的指令。PPU202包括PPU MMU213,其處理來自PPU202的用于將虛擬存儲器地址轉(zhuǎn)譯成物理存儲器地址的請求。PPU202還包括復制引擎212,其執(zhí)行存儲在命令隊列214中的用于復制存儲器頁、修改PTO頁表208中的數(shù)據(jù)的命令以及其他命令。PPU故障處理程序215響應于PPU202上的頁故障而執(zhí)行步驟。PI3U故障處理程序215可以是在處理器或PPU202中的專用微控制器上運行的軟件。替代地,PTO故障處理程序215可以是彼此通信的在CPU102上運行的軟件和在PPU202中的專用微控制器上運行的軟件的組合。在一些實施例中,CPU故障處理程序211和PPU故障處理程序215可以是通過CPU102或PPU202任一者上的故障而被調(diào)用(invoke)。命令隊列214可在PPU存儲器204或系統(tǒng)存儲器104中,但優(yōu)選位于系統(tǒng)存儲器104中。
[0032]在一些實施例中,CPU故障處理程序211和UVM驅(qū)動器101可以是統(tǒng)一軟件程序。在這類情況中,所述統(tǒng)一軟件程序可以是駐存在系統(tǒng)存儲器104中且在CPU102上執(zhí)行的軟件。PTO故障處理程序215可以是在處理器或PPU202中的專用微控制器上運行的單獨的軟件程序,或者PPU故障處理程序215可以是在CPU102上運行的單獨的軟件程序。
[0033]在其他實施例中,PI3U故障處理程序215和UVM驅(qū)動器101可以是統(tǒng)一軟件程序。在這類情況中,所述統(tǒng)一軟件程序可以是駐存在系統(tǒng)存儲器104中且在CPU102上執(zhí)行的軟件。CPU故障處理程序211可以是駐存在系統(tǒng)存儲器104中且在CPU102上執(zhí)行的軟件。
[0034]在其他實施例中,CPU故障處理程序211、PPU故障處理程序215和UVM驅(qū)動器101可以是統(tǒng)一軟件程序。在這類情況中,所述統(tǒng)一軟件程序可以是駐存于系統(tǒng)存儲器104中且在CPU102上執(zhí)行的軟件。
[0035]在一些實施例中,如上所述,CPU故障處理程序211、PPU故障處理程序215和UVM驅(qū)動器101可全部駐存在系統(tǒng)存儲器104中。如圖2所示,UVM驅(qū)動器101駐存在系統(tǒng)存儲器104中,而CPU故障處理程序211和PPU故障處理程序215駐存在CPU102中。
[0036]CPU故障處理程序211和PF1U故障處理程序215可對源自(emanate from)CPU102或PPU202的硬件中斷例如由于頁故障而導致的中斷做出響應。如下面進一步描述的,UVM驅(qū)動器101包含用于執(zhí)行與UVM系統(tǒng)200的管理有關(guān)的各種任務(wù)的指令,包括而不限于修復頁故障以及訪問CPU頁表206、頁狀態(tài)目錄210和/或故障緩存器216。
[0037]在一些實施例中,CPU頁表206和PPU頁表208具有不同格式,且內(nèi)含不同信息;例如,PPU頁表208可內(nèi)含而CPU頁表206不含下列信息:原子禁用位(atomic disable bit);壓縮標簽(compress1n tag);和存儲器攬和類型(memory swizzling type)。
[0038]以與系統(tǒng)存儲器104類似的方式,PTO存儲器204存儲各種頁(未示出)。如圖所示,PPU存儲器204還包括PPU頁表208,其包含虛擬存儲器地址和物理存儲器地址之間的映射。替代地,PPU頁表208可存儲在系統(tǒng)存儲器104中。
[0039]轉(zhuǎn)譯虛擬存儲器地址
[0040]當在CPU102中執(zhí)行的線程經(jīng)由虛擬存儲器地址來請求數(shù)據(jù)時,CPU102從CPU存儲器管理單元(CPU MMU) 209請求將虛擬存儲器地址轉(zhuǎn)譯成物理存儲器地址。作為響應,CPUMMU209試圖將虛擬存儲器地址轉(zhuǎn)譯成物理存儲器地址,所述物理存儲器地址指定存儲器單元中存儲CPU102所請求的數(shù)據(jù)的位置,例如系統(tǒng)存儲器104。
[0041]為了將虛擬存儲器地址轉(zhuǎn)譯成物理存儲器地址,CPU MMU209執(zhí)行查找操作,以確定CPU頁表206是否包含于虛擬存儲器地址相關(guān)聯(lián)的映射。除虛擬存儲器地址外,訪問數(shù)據(jù)的請求還可指明虛擬存儲器地址空間。統(tǒng)一虛擬存儲器系統(tǒng)200可實現(xiàn)多個虛擬存儲器地址空間,每個空間均被指派一個或多個線程。虛擬存儲器地址在任何給定的虛擬存儲器地址空間中都是唯一的。此外,給定的虛擬存儲器地址內(nèi)的虛擬存儲器地址跨CPU102和PPU202連續(xù),從而允許同一虛擬存儲器地址跨CPU102和PPU202指向同一數(shù)據(jù)。在一些實施例中,兩個虛擬存儲器地址可以指向同一數(shù)據(jù),但可以不映射到同一物理存儲器地址(例如,CPU102和PPU202每個均可具有數(shù)據(jù)的本地只讀副本)。
[0042]對于任何給定的虛擬存儲器地址,CPU頁表206可以包含或可以不包含虛擬存儲器地址和物理存儲器地址之間的映射。如果CPU頁表206包含映射,則CPU MMU209讀取該映射,以確定與虛擬存儲器地址相關(guān)聯(lián)的物理存儲器地址并提供物理存儲器地址給CPU102。然而,如果CPU頁表206不包含與虛擬存儲器地址相關(guān)聯(lián)的映射,則CPU MMU209不能將虛擬存儲器地址轉(zhuǎn)譯成物理存儲器地址,且CPU MMU209產(chǎn)生頁故障。為了修復頁故障并使所請求的數(shù)據(jù)對于CPU102是可用的,執(zhí)行“頁故障序列(sequence)”。更具體地,CPU102讀取PSD210以找出頁的當前映射狀態(tài)且然后確定適當?shù)捻摴收闲蛄?。頁故障序列通常映射與所請求的虛擬存儲器地址相關(guān)聯(lián)的存儲器頁或者改變許可的訪問類型(例如,讀取訪問、寫入訪問、原子訪問)。下面更加詳細地討論在UVM系統(tǒng)200中實現(xiàn)的不同類型的頁故障序列。
[0043]在UVM系統(tǒng)200內(nèi),與給定的虛擬存儲器地址相關(guān)聯(lián)的數(shù)據(jù)可存儲在系統(tǒng)存儲器104,PPU存儲器204或者系統(tǒng)存儲器104和PPU存儲器204兩者中作為同一數(shù)據(jù)的只讀副本。此外,對于任何這類數(shù)據(jù),CPU頁表206和PPU頁表208中任一者或兩者都可包含與該數(shù)據(jù)相關(guān)聯(lián)的映射。請注意,存在一些數(shù)據(jù),針對其的映射存在于一個頁表中但不存在于另一個中。然而,PSD210包含存儲在PI3U頁表208中的所有映射以及存儲在CPU頁表206中的PPU相關(guān)映射。PSD210因而用作用于統(tǒng)一虛擬存儲器系統(tǒng)200的“主”頁表。因此,當CPU MMU209在與特定的虛擬存儲器地址相關(guān)聯(lián)的CPU頁表206中沒有找到映射時,CPU102讀取PSD210以確定PSD210是否包含于該虛擬存儲器地址相關(guān)聯(lián)的映射。除與虛擬存儲器地址相關(guān)聯(lián)的映射外,PSD210的各種實施例還可包含與虛擬存儲器地址相關(guān)聯(lián)的不同類型的信息。
[0044]當CPU MMU209產(chǎn)生頁故障時,CPU故障處理程序211執(zhí)行針對適當?shù)捻摴收闲蛄械囊幌盗胁僮饕孕迯晚摴收?。而且,在頁故障序列過程中,CPU102讀取PSD210并執(zhí)行附加操作以便改變CPU頁表206和PPU頁表208內(nèi)的映射或許可(permiss1n)。這類操作可包含讀取和/或修改CPU頁表206,讀取和/或修改頁狀態(tài)目錄210和/或在存儲器單元(例如,系統(tǒng)存儲器104和PPU存儲器204)之間遷移被稱為“存儲器頁”的數(shù)據(jù)塊。
[0045]為了確定哪些操作將在頁故障序列中執(zhí)行,CPU102識別與虛擬存儲器地址相關(guān)聯(lián)的存儲器頁。CPU102然后從與和引發(fā)頁故障的存儲器訪問請求相關(guān)聯(lián)的虛擬存儲器地址有關(guān)的PSD210中讀取關(guān)于該存儲器頁的狀態(tài)信息。這類狀態(tài)信息此外還可包含關(guān)于與虛擬存儲器地址相關(guān)聯(lián)的存儲器頁的所有權(quán)狀態(tài)。對于任何給定的存儲器頁,若干所有權(quán)狀態(tài)都是可能的。例如,存儲器頁可以是“CPU所有”、“PPU所有”或“CPU共享”。如果CPU102能經(jīng)由虛擬地址訪問存儲器頁而不引發(fā)頁故障,且如果PPU202不能在不引發(fā)頁故障的情況下經(jīng)由虛擬地址訪問存儲器頁,則該存儲器頁被視為是CPU所有。優(yōu)選地,CPU所有的頁駐存在系統(tǒng)存儲器104中,但也可駐存在PI3U存儲器204中。如果PPU202能經(jīng)由虛擬地址訪問存儲器頁,且如果CPU102不能在不引發(fā)頁故障的情況下經(jīng)由虛擬地址訪問該頁,則該存儲器頁被視為是PPU所有。優(yōu)選地,PTO所有的頁駐存在PTO存儲器204中,但當不進行從系統(tǒng)存儲器104到PPU存儲器204的遷移時,也可駐存在系統(tǒng)存儲器104中。最后,如果CPU102和PPU202能經(jīng)由虛擬地址訪問存儲器頁而不引發(fā)頁故障,則該存儲器被視為是CPU共享。CPU共享的頁可駐存在系統(tǒng)存儲器104或PPU存儲器204任一者中。
[0046]CPU頁表206可基于各種因素包括存儲器頁的使用歷史而將所有權(quán)狀態(tài)指派給存儲器頁。使用歷史可包含關(guān)于CPU102或PPU202最近是否訪問過存儲器頁以及這類訪問進行了多少次的信息。例如,如果基于給定的存儲器頁的使用歷史,UVM系統(tǒng)200確定該存儲器頁可能主要或僅僅被CPU102所使用,則UVM系統(tǒng)200可對該存儲器頁指派“CPU所有”的所有權(quán)狀態(tài),并將該頁置于系統(tǒng)存儲器104中。類似地,如果基于給定的存儲器頁的使用歷史,UVM系統(tǒng)200確定該存儲器頁可能主要或僅僅被PPU202所使用,則UVM系統(tǒng)200可對該存儲器頁指派“PPU所有”的所有權(quán)狀態(tài),并將該頁置于PTO存儲器204中。最后,如果基于給定的存儲器頁的使用歷史,UVM系統(tǒng)200確定該存儲器頁可能被CPU102和PPU202兩者都使用,并確定將存儲器頁從系統(tǒng)存儲器104到PPU存儲器204來回遷移將會耗費太多時間,則UVM系統(tǒng)200可對該存儲器頁指派“CPU共享”的所有權(quán)狀態(tài)。
[0047]作為示例,故障處理程序211和215可實施下列用于遷移的啟發(fā)法(heuristics)中的任何或全部:
[0048](a)關(guān)于對映射至PPU202且最近未遷移的被取消映射(unmap)的頁的CPU102訪問,將出故障的頁從PPU202取消映射,將該頁遷移到CPU102,并將該頁映射至CPU102 ;
[0049](b)關(guān)于對映射至CPU102且最近未遷移的被取消映射的頁的PPU202訪問,將出故障的頁從CPU102取消映射,將該頁遷移到PPU202,并將該頁映射至PPU202 ;
[0050](C)關(guān)于對映射至PPU202且最近經(jīng)遷移的被取消映射的頁的CPU102訪問,將出故障的頁遷移到CPU102并將該頁映射在CPU102和PPU202兩者上;
[0051 ] (d)關(guān)于對映射在CPU102上且最近經(jīng)遷移的被取消映射的頁的PPU202訪問,將該頁映射至CPU102和PPU202兩者;
[0052](e)關(guān)于對映射至CPU102和PPU202兩者但對于PPU202所進行的原子操作未啟用的頁的PPU202原子訪問,將該頁從CPU102取消映射,并映射至PPU202且啟用原子操作;
[0053](f)關(guān)于對映射在CPU102和PPU202上作為寫入時復制(copy-on-write) (COff)的頁的PPU202寫入訪問,將該頁復制到PPU202,從而制作該頁的獨立副本,將新的頁作為讀寫(read-write)映射在PPU上,并保留當前頁映射在CPU102上;
[0054](g)關(guān)于對映射在CPU102和PPU202上作為按需填零(zero-fill-on-demand)(ZFOD)的頁的PPU202讀取訪問,分配PPU202上的物理存儲器頁并用零填充,且將該頁映射在PI3U上,但將其改變?yōu)樵贑PU102上被取消映射;
[0055](h)關(guān)于由第一 PPU202 (I)對映射在第二 PPU202 (2)上且最近未遷移的被取消映射的頁的訪問,將出故障的頁從第二 PPU202(2)取消映射,將該頁遷移到第一 PPU202(1),并將該頁映射至第一 PPU202(1);以及
[0056](i)關(guān)于由第一 PPU202(1)對映射在第二 PPU202 (2)上且最近經(jīng)遷移的被取消映射的頁的訪問,將出故障的頁映射至第一 PPU202 (I),并保持該頁在第二 PPU202 (2)上的映射。
[0057]總之,許多啟發(fā)法規(guī)則都是可能的,且本發(fā)明的范圍不限于這些示例。
[0058]另外,任何遷移啟發(fā)法都可“向上取整(round up)”以包含較多的頁或較大的頁尺寸,例如:
[0059](j )關(guān)于對映射至PPU202且最近未遷移的被取消映射的頁的CPU102訪問,將出故障的頁外加在虛擬地址空間中與該出故障的頁相鄰的額外的頁從PPU202取消映射,將這些頁遷移到CPU102,并將這些頁映射至CPU102 (在更詳細的示例中:對于4kB故障頁,遷移包含4kB故障頁的對準的(aligned) 64kB區(qū)域);
[0060](k)關(guān)于對映射至CPU102且最近未遷移的被取消映射的頁的PPU202訪問,將出故障的頁外加在虛擬地址空間中與該出故障的頁相鄰的額外的頁從CPU102取消映射,將這些頁遷移到PPU202,并將這些頁映射至PPU202 (在更詳細的示例中:對于4kB故障頁,遷移包含4kB故障頁的對準的64kB區(qū)域);
[0061 ] (I)關(guān)于對映射至PPU202且最近未遷移的被取消映射的頁的CPU102訪問,將出故障的頁外加在虛擬地址空間中與該出故障的頁相鄰的額外的頁從PPU202取消映射,將這些頁遷移到CPU102,將這些頁映射至CPU102,并將所有遷移的頁作為CPU102上的一個或多個較大的頁對待(在更詳細的示例中:對于4kB故障頁,遷移包含4kB故障頁的對準的64kB區(qū)域,并將該對準的64kB區(qū)域作為64kB頁對待);
[0062](m)關(guān)于對映射至CPU102且最近未遷移的被取消映射的頁的PPU202訪問,將出故障的頁外加在虛擬地址空間中與該出故障的頁相鄰的額外的頁從CPU102取消映射,將這些頁遷移到PPU202,將這些頁映射至PPU202,并將所有遷移的頁作為PPU202上的一個或多個較大的頁對待(在更詳細的示例中:對于4kB故障頁,遷移包含4kB故障頁的對準的64kB區(qū)域,并將該對準的64kB區(qū)域作為64kB頁對待);
[0063](η)關(guān)于由第一 PPU202⑴對映射至第二 PPU202⑵上且最近未遷移的被取消映射的頁的訪問,將出故障的頁外加在虛擬地址空間中與該出故障的頁相鄰的額外的頁從第二 PPU202(2)取消映射,將這些頁遷移到第一 PPU202(1),并將這些頁映射至第一PPU202(1);以及
[0064](ο)關(guān)于由第一 PPU202 (I)對映射在第二 PPU202 (2)上且最近經(jīng)遷移的被取消映射的頁的訪問,將出故障的頁外加在虛擬地址空間中與該出故障的頁相鄰的額外的頁映射至第一 PPU202 (I),并保持這些頁在第二 PPU202 (2)上的映射。
[0065]總之,許多啟發(fā)法規(guī)則都是可能的,且本發(fā)明的范圍不限于這些示例。
[0066]在一些實施例中,PSD條目可包含過渡(transit1nal)狀態(tài)信息,以確保由CPU102和PPU202內(nèi)的單元所做出的各種請求之間的適當?shù)耐交?。例如,PSD210條目可包含這樣的過渡狀態(tài)信息,即特定頁處于正在從CPU所有過渡到PI3U所有的過程中。CPU102和PPU202中的各種單元,例如CPU故障處理程序211和PPU故障處理程序215,一經(jīng)確定頁處于這類過渡狀態(tài),就可放棄(forego)部分頁故障序列,以避免由之前對同一虛擬存儲器地址的虛擬存儲器訪問所觸發(fā)的頁故障序列中的步驟。作為具體示例,如果頁故障導致頁從系統(tǒng)存儲器104遷移到PTO存儲器204,則檢測到將會引發(fā)同一遷移的不同的頁故障且不引發(fā)另一頁遷移。此外,CPU102和PPU202中的各種單元可實施原子操作,用于對PSD210上的操作進行適當?shù)呐判颉@?,關(guān)于對PSD210條目的修改,CPU故障處理程序211或PPU故障處理程序215可發(fā)出原子比較和交換(swap)操作,以修改PSD210中的特定條目的頁狀態(tài)。因此,該修改可以在不受來自其他單元的操作干擾的情況下完成。
[0067]系統(tǒng)存儲器104中可存儲多個PSD210——每個虛擬地址空間一個。CPU102或PPU202任一者產(chǎn)生的存儲器訪問請求因而可包含虛擬存儲器地址并且還識別與該虛擬存儲器地址相關(guān)聯(lián)的虛擬存儲器地址空間。
[0068]正如CPU102可執(zhí)行包含虛擬存儲器地址的存儲器訪問請求(即,包含經(jīng)由虛擬存儲器地址訪問數(shù)據(jù)的請求的指令)一樣,PPU202也可執(zhí)行類似類型的存儲器訪問請求。更具體地,PPU202包括上面結(jié)合圖1描述的配置為執(zhí)行多個線程和線程組的多個執(zhí)行單元,例如GPC和SM。在操作中,那些線程可通過制定虛擬存儲器地址而從存儲器請求數(shù)據(jù)(例如,系統(tǒng)存儲器104或PPU存儲器204)。正如CPU102和CPU MMU209 一樣,PPU202包括PPU存儲器管理單元(MMU)213。PPU MMU213接收來自PPU202的關(guān)于虛擬存儲器地址轉(zhuǎn)譯的請求,并試圖為虛擬存儲器地址從PI3U頁表208提供轉(zhuǎn)譯。
[0069]與CPU頁表206類似地,PI3U頁表208包含虛擬存儲器地址和物理存儲器地址之間的映射。CPU頁表206的情況也如此,對于任何給定的虛擬地址,PPU頁表208可以不包含將虛擬存儲器地址映射至物理存儲器地址的頁表條目。與CPU MMU209—樣,當PPU MMU213從PPU頁表208請求對虛擬存儲器地址的轉(zhuǎn)譯并且PI3U頁表208中不存在任何映射或該訪問類型是PI3U頁表208所不允許的時,PPU MMU213產(chǎn)生頁故障。隨后,PI3U故障處理程序215觸發(fā)頁故障序列。而且,下面將更詳細描述在UVM系統(tǒng)200中實施的不同類型的頁故障序列。
[0070]在頁故障序列過程中,CPU102或PPU202可將命令寫入命令隊列214,用于由復制引擎212執(zhí)行。這種方法使CPU102或PPU202在復制引擎212讀取并執(zhí)行存儲在命令隊列214中的命令的同時得以空出以執(zhí)行其他任務(wù),并允許關(guān)于故障序列的所有命令同時被排隊,從而避免對故障序列的進度的監(jiān)視。由復制引擎212執(zhí)行的命令此外還可包括刪除、生成或修改PPU頁表208中的頁表條目,從系統(tǒng)存儲器104讀取或?qū)懭霐?shù)據(jù),以及將數(shù)據(jù)讀取或?qū)懭氲絇PU存儲器204。
[0071]故障緩存器216存儲指明與由PPU202產(chǎn)生的頁故障有關(guān)的信息的故障緩存器條目。故障緩存器條目可包括例如試圖進行的訪問的類型(例如,讀取、寫入或原子的)、引發(fā)了頁故障的試圖進行的訪問所針對的虛擬存儲器地址、虛擬地址空間以及對引發(fā)了頁故障的單元或線程的指示。在操作中,當PPU202引發(fā)頁故障時,PTO202可將故障緩存器條目寫入故障緩存器216中,以通知PPU故障處理程序215有關(guān)出故障的頁和引發(fā)該故障的訪問的類型。PPU故障處理程序215然后執(zhí)行動作以修復頁故障。因為PPU202正在執(zhí)行多個線程,所以故障緩存器216可存儲多個故障,其中每個線程由于PPU202的存儲器訪問的管線性質(zhì)均可引發(fā)一個或多個故障。
[0072]頁故障序列
[0073]如上所述,響應于收到關(guān)于虛擬存儲器地址轉(zhuǎn)譯的請求,如果CPU頁表206不包含與所請求的虛擬存儲器地址相關(guān)聯(lián)的映射或者不許可正被請求的訪問的類型,則CPUMMU209產(chǎn)生頁故障。類似地,響應于收到關(guān)于虛擬存儲器地址轉(zhuǎn)譯的請求,如果PTO頁表208不包含與所請求的虛擬存儲器地址相關(guān)聯(lián)的映射或者不許可正被請求的訪問的類型,則PPU MMU213產(chǎn)生頁故障。當CPU MMU209或PPU MMU213產(chǎn)生頁故障時,請求了虛擬存儲器地址處的數(shù)據(jù)的線程停滯(stall),且“本地故障處理程序”一用于CPU102的CPU故障處理程序211或用于PPU202的PPU故障處理程序215——試圖通過執(zhí)行“頁故障序列”來修復頁故障。如上面所指出的,頁故障序列包含使得出故障的單元(即,引發(fā)了該頁面故障的單元——CPU102或PPU202任一者)能夠訪問與虛擬存儲器地址相關(guān)聯(lián)的數(shù)據(jù)的一系列操作。在頁故障序列結(jié)束之后,經(jīng)由虛擬存儲器地址請求了數(shù)據(jù)的線程繼續(xù)執(zhí)行。在一些實施例中,通過允許故障恢復邏輯跟蹤與出故障的指令相反的出故障的存儲器訪問,故障恢復得以簡化。
[0074]如果存在任何與頁故障相關(guān)聯(lián)的存儲器頁不得不經(jīng)歷的所有權(quán)狀態(tài)的變化或訪問許可的變化,則在頁故障序列過程中所執(zhí)行的操作取決于這些變化。從當前的所有權(quán)狀態(tài)到新的所有權(quán)狀態(tài)的過渡或者訪問許可的變化可以是頁故障序列的一部分。在一些實例中,將與頁故障相關(guān)聯(lián)的存儲器頁從系統(tǒng)存儲器104遷移到PPU存儲器204也是頁故障序列的一部分。在其他實例中,將與頁故障相關(guān)聯(lián)的存儲器頁從PPU存儲器204遷移到系統(tǒng)存儲器104也是頁故障序列的一部分。本文中較為充分描述的各種啟發(fā)法可用于配置UVM系統(tǒng)200以改變存儲器頁所有權(quán)狀態(tài)或者以按照各種操作條件和圖案的集合遷移存儲器頁。下面將更詳細描述的是關(guān)于下列四種存儲器頁所有權(quán)狀態(tài)過渡的頁故障序列=CPU所有到CPU共享、CPU所有到PPU所有、PPU所有到CPU所有以及PI3U所有到CPU共享。
[0075]由PPU202所產(chǎn)生的故障可開始從CPU所有到CPU共享的過渡。在這種過渡之前,正在PPU202中執(zhí)行的線程試圖訪問在PI3U頁表208中沒被映射的虛擬存儲器地址處的數(shù)據(jù)。此訪問試圖引發(fā)基于PPU的頁故障,該頁故障然后致使故障緩存器條目被寫入到故障緩存器216。作為響應,PI3U故障處理程序215讀取與該虛擬存儲器地址相對應的PSD210條目,并識別與該虛擬存儲器地址相關(guān)聯(lián)的存儲器頁。在對PSD210進行讀取之后,PPU故障處理程序215確定與該虛擬存儲器地址相關(guān)聯(lián)的存儲器頁的當前所有權(quán)狀態(tài)為CPU所有?;诋斍八袡?quán)狀態(tài)以及其他因素,例如關(guān)于存儲器頁的使用特性或存儲器訪問的類型,PPU故障處理程序215確定該頁的新的所有權(quán)狀態(tài)應當為CPU共享。
[0076]為了改變所有權(quán)狀態(tài),PI3U故障處理程序215在PPU頁表208中寫入新條目,與虛擬存儲器地址相對應且將虛擬存儲器地址與經(jīng)由PSD210條目所識別的存儲器頁關(guān)聯(lián)起來。PI3U故障處理程序215還修改關(guān)于該存儲器頁的PSD210條目以指明所有權(quán)狀態(tài)為CPU共享。在一些實施例中,使PPU202中的轉(zhuǎn)譯后備(look-aside)緩存器(TLB)無效,以將其中至無效頁的轉(zhuǎn)譯被高速緩存(cache)的情況加以考慮。此時,頁故障序列結(jié)束。存儲器頁的所有權(quán)狀態(tài)為CPU共享,意味著存儲器頁對于CPU102和PPU202都是可訪問的。CPU頁表206和PPU頁表208兩者都包含將虛擬存儲器地址關(guān)聯(lián)到存儲器頁的條目。
[0077]由PPU202所產(chǎn)生的故障可開始從CPU所有到PPU所有的過渡。在這種過渡之前,正在PPU202中執(zhí)行的操作試圖訪問在PI3U頁表208中沒被映射的虛擬存儲器地址處的數(shù)據(jù)。此存儲器訪問試圖引發(fā)基于PPU的頁故障,該頁故障然后致使故障緩存器條目被寫入到故障緩存器216。作為響應,PTO故障處理程序215讀取與該虛擬存儲器地址相對應的PSD210條目,并識別與該虛擬存儲器地址相關(guān)聯(lián)的存儲器頁。在對PSD210進行讀取之后,PPU故障處理程序215確定與該虛擬存儲器地址相關(guān)聯(lián)的存儲器頁的當前所有權(quán)狀態(tài)為(PU所有。基于當前所有權(quán)狀態(tài)以及其他因素,例如關(guān)于該頁的使用特性或存儲器訪問的類型,PPU故障處理程序215確定該頁的新的所有權(quán)狀態(tài)應當為PI3U所有。
[0078]PPU202將指明PPU202產(chǎn)生了頁故障且指明與該頁故障相關(guān)聯(lián)的虛擬存儲器地址的故障緩存器條目寫入故障緩存器216中。正在CPU102上執(zhí)行的PTO故障處理程序215讀取該故障緩存器條目,且作為響應,CPU102將CPU頁表206中與引發(fā)該頁故障的虛擬存儲器地址相關(guān)聯(lián)的映射移除。CPU102可在移除映射之前和/或之后清理(flush)高速緩存。CPU102還將指示PPU202將頁從系統(tǒng)存儲器104復制到PPU存儲器204中的命令寫入到命令隊列214中。PPU202中的復制引擎212讀取命令隊列214中的命令并將頁從系統(tǒng)存儲器104復制到PPU存儲器204。PPU202將頁表條目寫入PI3U頁表208中,與該虛擬存儲器地址相對應且將該虛擬存儲器地址與PPU存儲器204中的新復制的存儲器頁關(guān)聯(lián)起來。對PPU頁表208的寫入可經(jīng)由PPU202來完成。替代地,CPU102可更新PI3U頁表208。PPU故障處理程序215還修改關(guān)于該存儲器頁的PSD210,以指明所有權(quán)狀態(tài)為PTO所有。在一些實施例中,可使PPU202或CPU102中的TLB中的條目無效,以將其中轉(zhuǎn)譯被高速緩存的情況納入考慮。此時,頁故障序列結(jié)束。存儲器頁的所有權(quán)狀態(tài)為PPU所有,意味著該存儲器頁僅對于PPU202是可訪問的。僅PI3U頁表208包含將虛擬存儲器地址與該存儲器頁關(guān)聯(lián)起來的條目。
[0079]由CPU102所產(chǎn)生的故障可開始從PI3U所有到CPU所有的過渡。在這種過渡之前,正在CPU102中執(zhí)行的操作試圖訪問在CPU頁表206中沒被映射的虛擬存儲器地址處的數(shù)據(jù),這引發(fā)基于CPU的頁故障。CPU故障處理程序211讀取與該虛擬存儲器地址相對應的PSD210條目,并識別與該虛擬存儲器地址相關(guān)聯(lián)的存儲器頁。在對PSD210進行讀取之后,CPU故障處理程序211確定與該虛擬存儲器地址相關(guān)聯(lián)的存儲器頁的當前所有權(quán)狀態(tài)為PPU所有?;诋斍八袡?quán)狀態(tài)以及其他因素,例如關(guān)于該頁的使用特性或訪問的類型,CPU故障處理程序211確定該頁的新的所有權(quán)狀態(tài)為CPU所有。
[0080]CPU故障處理程序211將與存儲器頁相關(guān)聯(lián)的所有權(quán)狀態(tài)改變到CPU所有。CPU故障處理程序211將命令寫入命令隊列214中,以令復制引擎212從PPU頁表208移除將虛擬存儲器地址與該存儲器頁關(guān)聯(lián)起來的條目??墒垢鞣NTLB條目無效。CPU故障處理程序211還將存儲器頁從PTO存儲器204復制到系統(tǒng)存儲器104中,這可經(jīng)由命令隊列214和復制引擎212來完成。CPU故障處理程序211在CPU頁表206中寫入將虛擬存儲器地址與被復制到系統(tǒng)存儲器104中的存儲器頁關(guān)聯(lián)起來的頁表條目。CPU故障處理程序211還更新PSD210以將虛擬存儲器地址與新復制的存儲器頁關(guān)聯(lián)起來。此時,頁故障序列結(jié)束。存儲器頁的所有權(quán)狀態(tài)為CPU所有,意味著該存儲器頁僅對于CPU102是可訪問的。僅CPU頁表206包含將虛擬存儲器地址與該存儲器頁關(guān)聯(lián)起來的條目。
[0081]由CPU102所產(chǎn)生的故障可開始從PI3U所有到CPU共享的過渡。在這種過渡之前,正在CPU102中執(zhí)行的操作試圖訪問在CPU頁表206中沒被映射的虛擬存儲器地址處的數(shù)據(jù),這引發(fā)基于CPU的頁故障。CPU故障處理程序211讀取與該虛擬存儲器地址相對應的PSD210條目,并識別與該虛擬存儲器地址相關(guān)聯(lián)的存儲器頁。在對PSD210進行讀取之后,CPU故障處理程序211確定與該虛擬存儲器地址相關(guān)聯(lián)的存儲器頁的當前所有權(quán)狀態(tài)為PPU所有?;诋斍八袡?quán)狀態(tài)以及其他因素,例如關(guān)于該頁的使用特性,CPU故障處理程序211確定該頁的新的所有權(quán)狀態(tài)為CPU共享。
[0082]CPU故障處理程序211將與存儲器頁相關(guān)聯(lián)的所有權(quán)狀態(tài)改變到CPU共享。CPU故障處理程序211將命令寫入命令隊列214中,以令復制引擎212從PPU頁表208移除將虛擬存儲器地址與該存儲器頁關(guān)聯(lián)起來的條目??墒垢鞣NTLB條目無效。CPU故障處理程序211還將存儲器頁從PTO存儲器204復制到系統(tǒng)存儲器104中。此復制操作可經(jīng)由命令隊列214和復制引擎212來完成。CPU故障處理程序211然后將命令寫入命令隊列214中,以令復制引擎212改變PPU頁表208中的條目,使得虛擬存儲器地址與系統(tǒng)存儲器104中的存儲器頁關(guān)聯(lián)起來。CPU故障處理程序211將頁表條目寫入CPU頁表206,以將虛擬存儲器地址與系統(tǒng)存儲器104中的存儲器頁關(guān)聯(lián)起來。CPU故障處理程序211還更新PSD210以將虛擬存儲器地址與系統(tǒng)存儲器104中的存儲器頁關(guān)聯(lián)起來。此時,頁故障序列結(jié)束。該頁的所有權(quán)狀態(tài)為CPU共享,且該存儲器頁已被復制到系統(tǒng)存儲器104中。由于CPU頁表206包含將虛擬存儲器地址與系統(tǒng)存儲器104中的存儲器頁關(guān)聯(lián)起來的條目,所以該頁對于CPU102是可訪問的。由于PI3U頁表208包含將虛擬存儲器地址與系統(tǒng)存儲器104中的存儲器頁關(guān)聯(lián)起來的條目,所以該頁對于PPU202也是可訪問的。
[0083]頁故障序列的詳細示例
[0084]在此情境下,現(xiàn)在提供對倘若從CPPU所有到CPU共享過渡則由PI3U故障處理程序215執(zhí)行的頁故障序列的詳細描述以展示原子操作和過渡狀態(tài)是如何用來更有效地管理序列的。頁故障序列被試圖訪問在PI3U頁表208中不存在相關(guān)映射的虛擬地址的PPU202線程所觸發(fā)。當線程試圖經(jīng)由虛擬存儲器地址訪問數(shù)據(jù)時,PPU202 (具體地,用戶級線程)從PPU頁表208請求轉(zhuǎn)譯。因為PI3U頁表208不包含于所請求的虛擬存儲器地址相關(guān)聯(lián)的映射,所以作為響應,發(fā)生PPU頁故障。
[0085]在頁故障發(fā)生之后,上述線程被困、停滯,并且PTO故障處理程序215執(zhí)行頁故障序列。PI3U故障處理程序215對PSD210進行讀取,以確定哪個存儲器頁與虛擬存儲器地址相關(guān)聯(lián),以及確定虛擬存儲器地址的狀態(tài)。PPU故障處理程序215從PSD210確定存儲器頁的所有權(quán)狀態(tài)是CPU所有。因此,由PPU202所請求的數(shù)據(jù)經(jīng)由虛擬存儲器地址對于PPU202是可訪問的。存儲器頁的狀態(tài)信息還指明所請求的數(shù)據(jù)不能被遷移到PPU存儲器204。
[0086]基于從PSD210獲得的狀態(tài)信息,PI3U故障處理程序215確定存儲器頁的新的狀態(tài)應當為CPU共享。PPU故障處理程序215將狀態(tài)改變到“過渡到CPU共享”。此狀態(tài)指明頁當前處于正過渡到CPU共享的過程中。當PTO故障處理程序215在存儲器管理單元中的微控制器上運行時,則兩個處理器將異步地更新PSD210,對PSD210使用原子比較-交換(“CAS”)操作而將狀態(tài)改變到“過渡到GPU可見(visible)”(CPU共享)。
[0087]PPU202更新PPU頁表208以將虛擬存儲器地址與存儲器頁關(guān)聯(lián)起來。PPU202還使TLB高速緩存條目無效。接著,PTO202對PSD210執(zhí)行另一原子比較-交換,以將與存儲器頁相關(guān)聯(lián)的所有權(quán)狀態(tài)改變到CPU共享。最后,頁故障序列終止,且經(jīng)由虛擬存儲器地址請求了數(shù)據(jù)的線程繼續(xù)執(zhí)行。
[0088]UVM系統(tǒng)架構(gòu)變形例
[0089]對統(tǒng)一虛擬存儲器系統(tǒng)200的各種修改都是可能的。例如,在一些實施例中,在將故障緩存器條目寫入故障緩存器216中,PPU202可觸發(fā)CPU中斷,以令CPU102讀取故障緩存器216中的故障緩存器條目并響應于該故障緩存器條目而執(zhí)行任何適當?shù)牟僮?。在其他實施例中,CPU102可周期性地輪詢(poll)故障緩存器216。倘若CPU102在故障緩存器216中找到故障緩存器條目,則CPU102響應于該故障緩存器條目而執(zhí)行一系列操作。
[0090]在一些實施例中,系統(tǒng)存儲器104,而不是PPU存儲器204,存儲PPU頁表208。在其他實施例中,可實施單級或多級高速緩存層級架構(gòu)(hierarchy),例如單級或多級轉(zhuǎn)譯后備緩存器(TLB)層級架構(gòu)(未示出),以供CPU頁表206或PPU頁表208高速緩存虛擬地址轉(zhuǎn)譯。
[0091]在又一些實施例中,倘若正在PPU202中執(zhí)行的線程引發(fā)PTO故障(“出故障的線程”)則PPU202可采取一個或多個動作。這些動作包含:使整個PPU202停滯,使正在執(zhí)行出故障的線程的SM停滯,使PPU MMU213停滯,僅使出故障的線程停滯或者使一級或多級TLB停滯。在一些實施例中,在PPU頁故障發(fā)生之后,并且統(tǒng)一虛擬存儲器系統(tǒng)200已執(zhí)行頁故障序列,則出故障的線程繼續(xù)執(zhí)行,且出故障線程再次試圖引發(fā)了該頁故障的存儲器訪問請求。在一些實施例中,TLB處的停滯是以表現(xiàn)為對出故障的SM或出故障的線程的長時延(1ng-1atency)存儲器訪問這樣的方式來進行的,從而無需SM針對故障做出任何特殊操作。
[0092]最后,在其他替代性實施例中,UVM驅(qū)動器101可包含令CPU102執(zhí)行一個或多個操作用于管理UVM系統(tǒng)200并修復頁故障的指令,例如訪問CPU頁表206、PSD210和/或故障緩存器216。在其他實施例中,操作系統(tǒng)內(nèi)核(未示出)可配置為通過訪問CPU頁表206、PSD210和/或故障緩存器216來管理UVM系統(tǒng)200并修復頁故障。在又一些實施例中,操作系統(tǒng)內(nèi)核可連同UVM驅(qū)動器101 —起操作,以通過訪問CPU頁表206、PSD210和/或故障緩存器216來管理UVM系統(tǒng)200并修復頁故障。
[0093]停滯和重播故障
[0094]如上所述,UVM系統(tǒng)200典型地至少部分地依靠CPU102來修復由PPU202所產(chǎn)生的存儲器訪問故障(即,頁故障)。倘若發(fā)生存儲器訪問故障,則常規(guī)的PPU將出故障的存儲器事務(wù)與PPU內(nèi)在出故障的存儲器事務(wù)之后才開始執(zhí)行的所有存儲器事務(wù)一起取消。這類常規(guī)PPU中的SM不再繼續(xù)發(fā)出存儲器事務(wù),直到存儲器訪問故障被解決為止。相反,為了減小與出故障的存儲器事務(wù)相關(guān)聯(lián)的整體性能降低,PPU202配置為僅使發(fā)出該出故障的存儲器事務(wù)的SM停滯。在該SM被停滯的同時,PPU202執(zhí)行SM在出故障的存儲器事務(wù)之前發(fā)出了的“飛行中的”存儲器事務(wù)。此外,SM繼續(xù)重播出故障的存儲器事務(wù)以及沒有成功完成的任何飛行中的存儲器事務(wù),直到所有這些存儲器事務(wù)成功為止。有利地,沒有引發(fā)任何未解決的存儲器訪問故障的SM繼續(xù)發(fā)出存儲器事務(wù),且在UVM系統(tǒng)200修復突出的存儲器訪問故障的同時,PPU202繼續(xù)執(zhí)行這些存儲器事務(wù)。
[0095]通常,本文所描述的技術(shù)僅是例示性而非限制性的,并且在不脫離本發(fā)明的較寬的精神和范圍的情況下,可經(jīng)修改以反映各種實施方式。例如,SM是可發(fā)出存儲器事務(wù)的眾多單元其中之一。當前發(fā)明的實施例可包括任何數(shù)目和類型的執(zhí)行單元來代替SM或與之結(jié)合。此外,在解決存儲器訪問故障的同時僅選擇性停止PPU內(nèi)的特定單元并修復存儲器事務(wù),可以任何技術(shù)上靈活的方式來實施。例如,PPU可重播由某些“可重播的”單元發(fā)出的出故障的存儲器事務(wù),并丟棄由其他單元發(fā)出的出故障的存儲器事務(wù)。
[0096]本文所描述的選擇性停滯和重播功能可在PPU MMU213、不同的存儲器管理單元、專用硬件單元或者在可編程硬件單元上執(zhí)行的軟件中加以實施——以任何組合。此外,PPU202可包含在任何類型的計算機系統(tǒng)中。例如,Pro202可包含在沒有實施統(tǒng)一虛擬存儲器架構(gòu)的計算機系統(tǒng)中。
[0097]帶有重播單元的PPU
[0098]圖3是根據(jù)本發(fā)明的一個實施例的、示出配置有重播單元350的統(tǒng)一虛擬存儲器系統(tǒng)(UVM)200的框圖。PPU202包括任一數(shù)目N的流式多處理器(SM)310和N個重播單元350——每SM310 一個重播單元350。例如,如果PPU202是要包括32個SM310 (0:31),則PPU202將包括32個重播單元350 (0:31)。每個重播單元350均使得PPU202能夠在重播所選的存儲器事務(wù)的同時使對應的SM310停止,而無需使其他SM310延遲。
[0099]圖4是根據(jù)本發(fā)明的一個實施例的、示出圖3的重播單元350(0)的概念圖。如圖所示,重播單元350 (O)包括而不限于事務(wù)多路復用器(事務(wù)Mux)420、微型轉(zhuǎn)譯后備緩存器(uTLB) 430、飛行中緩存器440、故障檢測器450和重播緩存器460。
[0100]通常,正在SM310 (O)內(nèi)執(zhí)行的線程每個均從SM310 (O)產(chǎn)生虛擬存儲器事務(wù)流。在SM310(0)從SM310(0)發(fā)出特定的虛擬存儲器事務(wù)之后,來自SM310(0)的虛擬存儲器事務(wù)在到達UTLB430和飛行中緩存器440之前通過事務(wù)Mux420。
[0101]UTLB430執(zhí)行一個或多個查找操作以將虛擬存儲器事務(wù)的虛擬存儲器地址從SM310(0)映射到PI3U存儲器204中的物理存儲器地址。請注意,UTLB430配置為對映射進行高速緩存,其進一步由TLB高速緩存的層級架構(gòu)表示。頁表或全局TLB數(shù)據(jù)結(jié)構(gòu)(未示出)配置為存儲與包括一個或多個PPU202和一個或多個CPU102的處理器復合體(complex)相關(guān)聯(lián)的所有虛擬地址空間上的所有映射。
[0102]本領(lǐng)域技術(shù)人員將認識到,倘若發(fā)生高速緩存失誤,則由UTLB430執(zhí)行的查找操作會耗時很長。因此,飛行中緩存器440按照先進先出次序?qū)碜許M310 (O)的虛擬存儲器事務(wù)進行排隊,從而保持來自SM310(0)的虛擬存儲器事務(wù)相對于UTLB430的查找操作的情境。
[0103]如果uTLB成功地處理來自SM310 (O)的虛擬存儲器事務(wù),則故障檢測器450將對應的物理存儲器事務(wù)路由(route)到PPU存儲器204。在至PPU存儲器204的物理存儲器事務(wù)中,用由UTLB430查找操作而得到的物理地址更換來自SM310(0)的虛擬存儲器事務(wù)所包含的虛擬地址。
[0104]相反,如果UTLB430不能夠映射由來自SM310(0)的虛擬存儲器事務(wù)所指定的虛擬地址,或者如果虛擬地址需要改變存儲器的目標頁的部署(disposit1n),則UTLB430產(chǎn)生存儲器訪問故障。故障檢測器450處理存儲器訪問故障一發(fā)送故障信號到CPU102并暫時禁止SM310(0)發(fā)出新的虛擬存儲器事務(wù)。有利地,故障檢測器450沒有令PPU202中所包括的任何其他SM310停止發(fā)出新的虛擬存儲器事務(wù)。
[0105]作為處理虛擬存儲器故障的一部分,故障檢測器450令故障緩存器條目被寫入到圖2的故障緩存器216。而且故障檢測器450執(zhí)行寫入操作,將來自SM310 (O)的出故障的虛擬存儲器事務(wù)存儲在重播緩存器460中。此外,故障檢測器450令排隊在飛行中緩存器440中的來自SM310 (O)的任何虛擬存儲器事務(wù)完成執(zhí)行。如果任何這些虛擬存儲器事務(wù)也出故障,則故障檢測器450執(zhí)行寫入操作,將另外的出故障的虛擬存儲器事務(wù)存儲在重播緩存器460中。非必選但優(yōu)選地,故障檢測器450令與另外的出故障的虛擬存儲器事務(wù)相對應的故障緩存器條目被寫入到故障緩存器216。
[0106]PPU故障處理程序215然后執(zhí)行經(jīng)設(shè)計以解決存儲器訪問故障的頁故障序列。一經(jīng)解決一個或多個存儲器訪問故障,CPU102就發(fā)送重播信號到重播單元350(0)。CPU102可在任何時間以任何技術(shù)上靈活的方式產(chǎn)生重播信號。優(yōu)選地,CPU102中所包含的PPU故障處理程序215產(chǎn)生重播信號,通常經(jīng)由命令隊列214產(chǎn)生。以此方式,具有很高開銷(overhead cost)的訪問故障解決程序可一起執(zhí)行,從而提高整體性能。經(jīng)由命令隊列214產(chǎn)生重播信號也允許重播操作與解決故障的命令同步化,使故障解決操作和重播操作管線化,從而允許PPU故障處理程序215以“自主導引(fire-and-forget)”的方式操作。在替代性實施例中,CPU102或PPU202可以任何技術(shù)上靈活的方式產(chǎn)生重播信號。例如,PTO202可以預定的時間間隔產(chǎn)生重播信號,致使以固定頻率周期性重播。
[0107]一經(jīng)收到重播信號,重播單元350 (O)就使UTLB430無效,且事務(wù)Mux420將重播緩存器460中的出故障的虛擬存儲器事務(wù)路由到UTLB430。對于這些出故障的虛擬存儲器事務(wù)中的每一個,UTLB430試圖將虛擬存儲器地址映射至可訪問的物理存儲器地址。如果UTLB430成功地映射重播緩存器460中所包含的虛擬存儲器事務(wù),則故障檢測器450將對應的物理存儲器事務(wù)路由至PPU存儲器204。然而,如果UTLB430不能夠映射重播緩存器460中所包含的特定的虛擬存儲器事務(wù),則故障檢測器450執(zhí)行寫入操作,重新請求重播緩存器460中的虛擬存儲器事務(wù)。請注意,由于CPU102成功地修復每個特定頁故障的原因,則對應的虛擬存儲器事務(wù)成功,物理存儲器事務(wù)產(chǎn)生,并且虛擬存儲器事務(wù)從重播緩存器460移除。
[0108]重播單元350 (O)繼續(xù)重新執(zhí)行重播緩存器460中所包含的存儲器事務(wù),直到重播緩存器460為空為止。在重播單元350 (O)確定重播緩存器460為空之后,重播單元350令SM310(0)繼續(xù)從SM310(0)發(fā)出虛擬存儲器事務(wù)。在SM310 (O)繼續(xù)發(fā)出虛擬存儲器事務(wù)之后,事務(wù)Mux420 (O)將虛擬存儲器事務(wù)路由至UTLB430用于處理。
[0109]在替代性實施例中,虛擬存儲器事務(wù)可被路由至對于PPU202是可訪問的任何物理存儲器,而不是PPU存儲器204。例如,虛擬存儲器事務(wù)可被路由至系統(tǒng)存儲器104中所包含的共享頁。
[0110]圖5是根據(jù)本發(fā)明的一個實施例的、用于管理由流式多處理器(SM)發(fā)出的存儲器事務(wù)的方法步驟的流程圖。雖然本文結(jié)合圖1-4對這些方法步驟進行了描述,但本領(lǐng)域技術(shù)人員將理解,以任何次序配置為實施這些方法步驟的任何系統(tǒng)都落入本發(fā)明的范圍內(nèi)。
[0111]如圖所示,方法500在步驟502開始,其中重播單元350(0)接收來自SM310(0)的虛擬存儲器事務(wù)。作為對收到來自SM310(0)的虛擬存儲器事務(wù)的響應,重播單元350 (O)中所包含的事務(wù)Mux420將虛擬存儲器事務(wù)路由至UTLB430,并將虛擬存儲器事務(wù)排隊在飛行中緩存器440中。如果在步驟504,UTLB430成功地處理虛擬存儲器事務(wù),則方法500前進至步驟506。在步驟506,重播單元350 (O)中所包含的故障檢測器450將對應的物理存儲器事務(wù)路由至PPU存儲器204,且方法500返回到步驟502。重播單元350 (O)通過步驟502-506循環(huán),接收并處理來自SM310 (O)的虛擬存儲器事務(wù),直到UTLB430不能夠成功地處理來自SM310(0)的虛擬存儲器事務(wù)為止。
[0112]在步驟504,如果UTLB430沒有成功地將虛擬存儲器事務(wù)映射至物理地址,則方法500前進至步驟508。在步驟508,重播單元350 (O)中所包含的故障檢測器450發(fā)送故障信號到CPU102,使SM310 (O)停滯,并將出故障的虛擬存儲器事務(wù)添加到重播緩存器460。在步驟510,故障檢測器450處理排隊在飛行中緩存器440中的任何虛擬存儲器事務(wù)。這類存儲器事務(wù)對應由SM310(0)發(fā)出的存儲器事務(wù),并且在出故障的虛擬存儲器事務(wù)之前開始執(zhí)行。如果任何來自SM310(0)的這些虛擬存儲器事務(wù)也出故障,則故障檢測器450執(zhí)行一個或多個寫入操作,將另外的出故障的虛擬存儲器事務(wù)存儲在重播緩存器460中。
[0113]在步驟512,重播單元350(0)等待CPU102經(jīng)由重播信號而信令(signal) —個或多個故障已經(jīng)解決。一經(jīng)收到該重播信號,重播單元350 (O)就使UTLB430無效,并重新執(zhí)行存儲在重播緩存器460中的虛擬存儲器事務(wù)。如果UTLB430成功地映射重播緩存器460中所包含的虛擬存儲器事務(wù),則重播單元350 (O)將對應的物理存儲器事務(wù)路由至PPU存儲器204。然而,如果UTLB430不能夠映射重播緩存器460中所包含的特定的虛擬存儲器事務(wù),則故障檢測器450執(zhí)行寫入操作,將該虛擬存儲器事務(wù)重新排隊在重播緩存器460中。如果在步驟514,重播單元350(0)確定重播緩存器460不為空,則方法500返回到步驟512。重播單元350 (O)通過步驟512-514循環(huán),重新執(zhí)行重播緩存器460中所包含的虛擬存儲器事務(wù),直到重播單元350(0)確定重播緩存器460為空為止。
[0114]在步驟514,如果重播單元350 (O)確定重播緩存器460為空,則方法500前進至步驟516。在步驟516,重播單元350 (O)令SM310(0)繼續(xù)從SM310(0)發(fā)出虛擬存儲器事務(wù),且方法500返回到步驟502。重播單元350(0)繼續(xù)通過步驟502-516循環(huán),接收并處理來自SM310(0)的虛擬存儲器事務(wù)。
[0115]總之,并行處理單元(PPU)實施故障處理技術(shù),該技術(shù)使得某些流式多處理器(SM)在令其他SM暫時停止執(zhí)行線程的同時能夠繼續(xù)執(zhí)行線程。在操作中,如果發(fā)生可歸屬于在特定SM上執(zhí)行的線程的存儲器訪問故障,則在計算機系統(tǒng)解決故障的同時,與SM相對應的重播單元使特定SM停滯。請注意,重播單元令對應的SM停止產(chǎn)生另外的存儲器事務(wù),直到引發(fā)故障的存儲器事務(wù)得以解決為止。此外,重播單元將由對應的SM在故障之前所發(fā)出的任何飛行中存儲器事務(wù)排隊在重播緩存器中。故障一經(jīng)解決,重播單元就令存儲在重播緩存器中的存儲器事務(wù)重新執(zhí)行。在成功地執(zhí)行存儲在重播單元中的所有存儲器事務(wù)之后,重播單元啟用對應的SM以繼續(xù)產(chǎn)生另外的存儲器事務(wù)。
[0116]有利地,在存在存儲器訪問故障時使受到影響的SM停滯的同時允許未受影響的SM繼續(xù)執(zhí)行,減小了與存儲器訪問故障相關(guān)聯(lián)的執(zhí)行懲罰(penalty)。請注意,因為未受影響的SM繼續(xù)執(zhí)行且出故障的存儲器事務(wù)被存儲和重播,所以指令無需取消。而且,由于計算機系統(tǒng)一起執(zhí)行針對飛行中的出故障的存儲器事務(wù)的故障解決程序,所以與單獨解決每個故障相比,整體系統(tǒng)性能得到提高。相反,存儲器訪問故障一經(jīng)產(chǎn)生,常規(guī)的PPU就使PPU中所包括的所有SM都停滯,并取消由SM產(chǎn)生的所有隨后的存儲器事務(wù)。這類PPU中所包括的SM不繼續(xù)發(fā)出存儲器事務(wù),直到存儲器訪問故障得到解決為止。因此,與常規(guī)的PPU相比,在實施選擇性存儲器事務(wù)和重播技術(shù)的PPU中,與存儲器訪問故障相關(guān)聯(lián)的性能降低被減小。
[0117]雖然上述內(nèi)容針對本發(fā)明的實施例,但可對本發(fā)明的其他以及進一步的實施例進行設(shè)計而不脫離其基本范圍。例如,可以硬件或軟件或硬件和軟件的組合來實現(xiàn)本發(fā)明的各方面。本發(fā)明的一個實施例可被實施為與計算機系統(tǒng)一起使用的程序產(chǎn)品。該程序產(chǎn)品的程序定義實施例的各功能(包括本文中描述的方法)并且可以被包含在各種計算機可讀存儲介質(zhì)上。示例性計算機可讀存儲介質(zhì)包括但不限于:(i)不可寫的存儲介質(zhì)(例如,計算機內(nèi)的只讀存儲器設(shè)備,諸如可由CD-ROM驅(qū)動器讀取的光盤只讀存儲器(CD-ROM)盤、閃存、只讀存儲器(ROM)芯片或任何類型的固態(tài)非易失性半導體存儲器),在其上存儲永久性信息;和(ii)可寫的存儲介質(zhì)(例如,磁盤驅(qū)動器或硬盤驅(qū)動器內(nèi)的軟盤或者任何類型的固態(tài)隨機存取半導體存儲器),在其上存儲可更改的信息。當承載針對本發(fā)明的功能的計算機可讀指令時,這樣的計算機可讀存儲介質(zhì)是本發(fā)明的實施例。
[0118]以上已參照特定實施例對本發(fā)明進行了描述。然而,本領(lǐng)域普通技術(shù)人員將理解的是,可對此做出各種修改和變化而不脫離如隨附權(quán)利要求書中所闡述的本發(fā)明的較寬精神和范圍。因此,前面的描述以及附圖應被視為是例示性而非限制性的意義。
[0119]因此,本發(fā)明的范圍由隨附的權(quán)利要求書加以界定。
【權(quán)利要求】
1.一種用于處理與多線程處理單元相關(guān)聯(lián)的虛擬存儲器事務(wù)的計算機實現(xiàn)方法,該方法包括: 從第一單元接收第一虛擬存儲器事務(wù); 試圖執(zhí)行所述第一虛擬存儲器事務(wù); 檢測到與所述第一虛擬存儲器事務(wù)有關(guān)的第一頁故障; 將所述第一虛擬存儲器事務(wù)存儲在重播緩存器中; 引發(fā)停滯條件,所述停滯條件禁止所述第一單元產(chǎn)生隨后的虛擬存儲器事務(wù),直到所述第一頁故障已經(jīng)解決為止;以及 一旦第一頁故障已經(jīng)解決,就重新執(zhí)行所述第一虛擬存儲器事務(wù)以及存儲在所述重播緩存器中的至少一個其他虛擬存儲器事務(wù)。
2.根據(jù)權(quán)利要求1所述的方法,還包括:確定所述重播緩存器為空,并啟用所述第一單元以產(chǎn)生隨后的虛擬存儲器事務(wù)。
3.根據(jù)權(quán)利要求1所述的方法,還包括:在所述第一頁故障未被解決的同時,從第二單元接收第二虛擬存儲器事務(wù),且成功地執(zhí)行所述第二虛擬存儲器事務(wù)。
4.根據(jù)權(quán)利要求1所述的方法,還包括: 在檢測到所述第一頁故障之前,從所述第一單元接收第二虛擬存儲器事務(wù); 檢測到與所述第二虛擬存儲器事務(wù)有關(guān)的第二頁故障;以及 將所述第二虛擬存儲器事務(wù)存儲在所述重播緩存器中。
5.根據(jù)權(quán)利要求1所述的方法,還包括:在重新執(zhí)行所述第一虛擬存儲器事務(wù)之前使轉(zhuǎn)譯后備緩存器無效。
6.根據(jù)權(quán)利要求1所述的方法,其中,重新執(zhí)行所述第一虛擬存儲器事務(wù)包括: 確定在轉(zhuǎn)譯后備緩存器中是否存在與所述第一虛擬存儲器事務(wù)相對應的條目;以及 如果所述條目存在,則完成所述第一虛擬存儲器事務(wù),否則 如果所述條目不存在,則將所述第一虛擬存儲器事務(wù)重新存儲在所述重播緩存器中。
7.根據(jù)權(quán)利要求1所述的方法,其中,解決所述第一頁故障包括: 基于全局轉(zhuǎn)譯表,而將與所述第一虛擬存儲器事務(wù)有關(guān)的存儲器頁置于第一存儲器子系統(tǒng)內(nèi);以及 將用于所述存儲器頁的虛擬映射添加到轉(zhuǎn)譯后備緩存器。
8.根據(jù)權(quán)利要求7所述的方法,其中,解決所述第一頁故障還包括:從所述第一存儲器子系統(tǒng)將所述存儲器頁復制到第二存儲器子系統(tǒng)。
9.根據(jù)權(quán)利要求8所述的方法,其中,所述第一存儲器子系統(tǒng)包括與中央處理單元相耦連的存儲器,且所述第二存儲器子系統(tǒng)包括與所述多線程處理單元相耦連的存儲器。
10.一種配置為處理虛擬存儲器事務(wù)的系統(tǒng),該系統(tǒng)包括: 存儲器;和 多線程處理器,所述多線程處理器與所述存儲器相耦連且經(jīng)配置以: 從第一單元接收第一虛擬存儲器事務(wù); 試圖執(zhí)行所述第一虛擬存儲器事務(wù); 檢測到與所述第一虛擬存儲器事務(wù)有關(guān)的第一頁故障; 將所述第一虛擬存儲器事務(wù)存儲在重播緩存器中;引發(fā)停滯條件,所述停滯條件禁止所述第一單元產(chǎn)生隨后的虛擬存儲器事務(wù),直到所述第一頁故障已經(jīng)解決為止;以及 一旦第一頁故障已經(jīng)解決,就重新執(zhí)行所述第一虛擬存儲器事務(wù)以及存儲在所述重播緩存器中的至少一個 其他虛擬存儲器事務(wù)。
【文檔編號】G06F11/00GK104049951SQ201310752957
【公開日】2014年9月17日 申請日期:2013年12月31日 優(yōu)先權(quán)日:2013年3月15日
【發(fā)明者】詹姆士·勒羅伊·德明, 杰爾姆·F·小杜魯克, 約翰·馬謝, 馬克·海爾格羅夫, 盧森·鄧寧, 喬納森·斯圖爾特·拉姆齊·埃文斯, ??姞枴·鄧肯, 卡梅倫·布沙特, 布雷恩·法斯 申請人:輝達公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1