用于統(tǒng)一虛擬存儲(chǔ)器系統(tǒng)的遷移方案的制作方法
【專利摘要】用于管理虛擬存儲(chǔ)器的系統(tǒng)。系統(tǒng)包括配置為執(zhí)行引用第一虛擬存儲(chǔ)器地址的第一操作的第一處理單元。系統(tǒng)還包括第一存儲(chǔ)器管理單元(MMU),其與第一處理單元相關(guān)聯(lián)并且配置為一經(jīng)確定存儲(chǔ)在與第一處理單元相關(guān)聯(lián)的第一存儲(chǔ)器單元中的第一頁(yè)面表不包括與第一虛擬存儲(chǔ)器地址相對(duì)應(yīng)的映射,就生成第一頁(yè)面故障。系統(tǒng)進(jìn)一步包括與第一處理單元相關(guān)聯(lián)的第一拷貝引擎。第一拷貝引擎配置為讀取第一命令隊(duì)列以確定與第一虛擬存儲(chǔ)器地址相對(duì)應(yīng)并且包括在第一頁(yè)面狀態(tài)目錄中的第一映射。第一拷貝引擎還配置為更新第一頁(yè)面表以包括第一映射。
【專利說(shuō)明】用于統(tǒng)一虛擬存儲(chǔ)器系統(tǒng)的遷移方案
[0001]相關(guān)申請(qǐng)的交叉引用
[0002]本申請(qǐng)要求享有于2013年3月14日提交的、序列號(hào)為61/782,349的美國(guó)臨時(shí)專利申請(qǐng)的優(yōu)先權(quán)。本申請(qǐng)還要求享有于2013年3月15日提交的、題目為“CPU-To-GPU andGPU-To-GPU Atomics”的、序列號(hào)為61/800,004的美國(guó)臨時(shí)專利申請(qǐng)的優(yōu)先權(quán)。這些相關(guān)申請(qǐng)的主題在此通過(guò)援弓I并入本文。
【技術(shù)領(lǐng)域】
[0003]本發(fā)明的實(shí)施例總地涉及虛擬存儲(chǔ)器,并且更具體地,涉及用于統(tǒng)一虛擬存儲(chǔ)器系統(tǒng)的遷移方案。
【背景技術(shù)】
[0004]許多現(xiàn)代的計(jì)算機(jī)系統(tǒng)典型地實(shí)現(xiàn)某種類型的虛擬存儲(chǔ)器架構(gòu)。在其他方面,虛擬存儲(chǔ)器架構(gòu)使能指令以使用虛擬存儲(chǔ)器地址而非物理存儲(chǔ)器地址訪問(wèn)存儲(chǔ)器。通過(guò)提供物理存儲(chǔ)器和應(yīng)用軟件之間的該虛擬存儲(chǔ)器層,用戶級(jí)軟件被屏蔽以免獲得物理存儲(chǔ)器管理的細(xì)節(jié),其被留給專用存儲(chǔ)器管理系統(tǒng)。
[0005]實(shí)現(xiàn)虛擬存儲(chǔ)器架構(gòu)的典型的計(jì)算機(jī)系統(tǒng)包括中央處理單元(CPU)和一個(gè)或多個(gè)并行處理單元(GPU)。在操作中,在CPU或GPU上執(zhí)行的軟件過(guò)程可以經(jīng)由虛擬存儲(chǔ)器地址請(qǐng)求數(shù)據(jù)。在許多傳統(tǒng)架構(gòu)中,用于CPU和GPU的、處置經(jīng)由虛擬存儲(chǔ)器地址對(duì)于數(shù)據(jù)的請(qǐng)求的虛擬存儲(chǔ)器系統(tǒng)是獨(dú)立的。更具體地,分開(kāi)的CPU存儲(chǔ)器管理系統(tǒng)和分開(kāi)的GPU存儲(chǔ)器管理系統(tǒng)分別處置來(lái)自CPU和GPU的對(duì)于數(shù)據(jù)的請(qǐng)求。
[0006]存在與這類獨(dú)立的存儲(chǔ)器管理系統(tǒng)相關(guān)聯(lián)的數(shù)個(gè)缺陷。例如,每個(gè)獨(dú)立的存儲(chǔ)器管理系統(tǒng)不一定具備與其他存儲(chǔ)器管理系統(tǒng)相關(guān)聯(lián)的存儲(chǔ)器單元的內(nèi)容的知識(shí)。因此,存儲(chǔ)器管理系統(tǒng)不一定能協(xié)作以提供一定的效率,諸如確定數(shù)據(jù)應(yīng)該被存儲(chǔ)在何處用于改進(jìn)的訪問(wèn)時(shí)延。此外,因?yàn)榇鎯?chǔ)器管理系統(tǒng)是獨(dú)立的,所以用于一個(gè)這類系統(tǒng)的指針不一定與其他系統(tǒng)兼容。因此,應(yīng)用程序員必須保持對(duì)兩個(gè)不同類型的指針的追蹤。
[0007]如前述示出,本領(lǐng)域所需要的是管理具有諸如CPU和GPU的異構(gòu)處理器的系統(tǒng)中的虛擬存儲(chǔ)器的更高效的方法。
【發(fā)明內(nèi)容】
[0008]本發(fā)明的一個(gè)實(shí)施例闡述用于經(jīng)由頁(yè)面狀態(tài)目錄管理虛擬存儲(chǔ)器到物理存儲(chǔ)器映射的系統(tǒng)。系統(tǒng)包括配置為執(zhí)行引用第一虛擬存儲(chǔ)器地址的第一操作的第一處理單元。系統(tǒng)還包括第一存儲(chǔ)器管理單元(MMU),其與第一處理單元相關(guān)聯(lián)并且配置為一經(jīng)確定存儲(chǔ)在與第一處理單元相關(guān)聯(lián)的第一存儲(chǔ)器單元中的第一頁(yè)面表不包括與第一虛擬存儲(chǔ)器地址相對(duì)應(yīng)的映射,就生成第一頁(yè)面故障(fault)。系統(tǒng)進(jìn)一步包括與第一處理單元相關(guān)聯(lián)的第一拷貝引擎。第一拷貝引擎配置為讀取第一命令隊(duì)列以確定與第一虛擬存儲(chǔ)器地址相對(duì)應(yīng)并且包括在第一頁(yè)面狀態(tài)目錄中的第一映射。第一拷貝引擎還配置為更新第一頁(yè)面表以包括第一映射。
[0009]所公開(kāi)的方法的一個(gè)優(yōu)勢(shì)是用戶級(jí)應(yīng)用不需要取決于特定數(shù)據(jù)片段存儲(chǔ)在何處保持對(duì)多個(gè)指針的追蹤。附加優(yōu)勢(shì)是基于使用在存儲(chǔ)器單元之間遷移存儲(chǔ)器頁(yè)面,其允許存儲(chǔ)器頁(yè)面位于更頻繁地訪問(wèn)存儲(chǔ)器頁(yè)面的單元的本地。另一個(gè)優(yōu)勢(shì)是允許由PPU所生成的故障被合并用于高效執(zhí)行的故障緩沖區(qū)被提供。
【專利附圖】
【附圖說(shuō)明】
[0010]因此,可以詳細(xì)地理解本發(fā)明的上述特征,并且可以參考實(shí)施例得到對(duì)如上面所簡(jiǎn)要概括的本發(fā)明更具體的描述,其中一些實(shí)施例在附圖中示出。然而,應(yīng)當(dāng)注意的是,附圖僅示出了本發(fā)明的典型實(shí)施例,因此不應(yīng)被認(rèn)為是對(duì)其范圍的限制,本發(fā)明可以具有其他等效的實(shí)施例。
[0011]圖1是示出了配置為實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的框圖;
[0012]圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示出了統(tǒng)一虛擬存儲(chǔ)器系統(tǒng)的框圖;
[0013]圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于追蹤存儲(chǔ)器頁(yè)面的狀態(tài)的系統(tǒng)300的示意圖;
[0014]圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、實(shí)現(xiàn)遷移操作的系統(tǒng)的示意圖;
[0015]圖5示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于將故障存儲(chǔ)在故障緩沖區(qū)中的虛擬存儲(chǔ)器系統(tǒng);
[0016]圖6示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于解決由PPU所生成的頁(yè)面故障的虛擬存儲(chǔ)器系統(tǒng);
[0017]圖7闡述了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于經(jīng)由頁(yè)面狀態(tài)目錄管理虛擬存儲(chǔ)器到物理存儲(chǔ)器映射的方法步驟的流程圖;
[0018]圖8闡述了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于追蹤頁(yè)面故障的方法步驟的流程圖;
[0019]圖9闡述了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于利用故障緩沖區(qū)解決頁(yè)面故障的方法步驟的流程圖;
[0020]圖10闡述了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于創(chuàng)建和管理虛擬存儲(chǔ)器架構(gòu)中的公共指針的方法步驟的流程圖;以及
[0021]圖11闡述了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于管理虛擬存儲(chǔ)器子系統(tǒng)中的所有權(quán)狀態(tài)的方法步驟的流程圖。
【具體實(shí)施方式】
[0022]在下面的描述中,將闡述大量的具體細(xì)節(jié)以提供對(duì)本發(fā)明更透徹的理解。然而,本領(lǐng)域的技術(shù)人員應(yīng)該清楚,本發(fā)明可以在沒(méi)有一個(gè)或多個(gè)這些具體細(xì)節(jié)的情況下得以實(shí)施。在其他實(shí)例中,未描述公知特征以避免對(duì)本發(fā)明造成混淆。
[0023]系統(tǒng)概述
[0024]圖1為示出了配置為實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)100的框圖。計(jì)算機(jī)系統(tǒng)100包括經(jīng)由可以包括存儲(chǔ)器橋105的互連路徑通信的中央處理單元(CPU) 102和系統(tǒng)存儲(chǔ)器104。存儲(chǔ)器橋105可以是例如北橋芯片,經(jīng)由總線或其他通信路徑106 (例如超傳輸(HyperTransport)鏈路)連接到I/O (輸入/輸出)橋107。I/O橋107,其可以是例如南橋芯片,從一個(gè)或多個(gè)用戶輸入設(shè)備108 (例如鍵盤(pán)、鼠標(biāo))接收用戶輸入并且經(jīng)由通信路徑106和存儲(chǔ)器橋105將該輸入轉(zhuǎn)發(fā)到CPU102。并行處理子系統(tǒng)112經(jīng)由總線或第二通信路徑113 (例如外圍部件互連(PCI)Express、加速圖形端口或超傳輸鏈路)耦連到存儲(chǔ)器橋105 ;在一個(gè)實(shí)施例中,并行處理子系統(tǒng)112是將像素傳遞到顯示設(shè)備110的圖形子系統(tǒng),顯示設(shè)備110可以是任何常規(guī)的陰極射線管、液晶顯示器、發(fā)光二極管顯示器等。系統(tǒng)盤(pán)114也連接到I/O橋107并且可以配置為存儲(chǔ)內(nèi)容和應(yīng)用和數(shù)據(jù)以由CPU102和并行處理子系統(tǒng)112使用。系統(tǒng)盤(pán)114為應(yīng)用和數(shù)據(jù)提供非易失性存儲(chǔ)并且可以包括固定的或可移動(dòng)的硬盤(pán)驅(qū)動(dòng)器、閃存設(shè)備以及⑶-ROM (壓縮光盤(pán)只讀存儲(chǔ)器)、DVD-R0M (數(shù)字多功能光盤(pán)ROM)、藍(lán)光、HD-DVD (高清DVD)或其他磁性、光學(xué)或固態(tài)存儲(chǔ)設(shè)備。
[0025]交換器116提供I/O橋107與諸如網(wǎng)絡(luò)適配器118以及各種插卡120和121的其他部件之間的連接。其他部件(未明確示出),包括通用串行總線(USB)或其他端口連接、壓縮光盤(pán)(⑶)驅(qū)動(dòng)器、數(shù)字多功能光盤(pán)(DVD)驅(qū)動(dòng)器、膠片錄制設(shè)備及類似部件,也可以連接到I/O橋107。圖1所示的各種通信路徑包括具體命名的通信路徑106和113可以使用任何適合的協(xié)議實(shí)現(xiàn),諸如PC1-EXpreSS、AGP (加速圖形端口)、超傳輸或者任何其他總線或點(diǎn)到點(diǎn)通信協(xié)議,并且如本領(lǐng)域已知的,不同設(shè)備間的連接可使用不同協(xié)議。
[0026]在一個(gè)實(shí)施例中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于圖形和視頻處理的電路,包括例如視頻輸出電路,并且構(gòu)成一個(gè)或多個(gè)并行處理單元(PPU)202。在另一個(gè)實(shí)施例中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于通用處理的電路,同時(shí)保留底層(underlying)的計(jì)算架構(gòu),本文將更詳細(xì)地進(jìn)行描述。在又一個(gè)實(shí)施例中,可以將并行處理子系統(tǒng)112與一個(gè)或多個(gè)其他系統(tǒng)元件集成在單個(gè)子系統(tǒng)中,諸如結(jié)合存儲(chǔ)器橋105、CPU102以及I/O橋107,以形成片上系統(tǒng)(SoC)。如眾所周知的,許多圖形處理單元(GPU)設(shè)計(jì)為實(shí)施并行操作和計(jì)算并且因此被認(rèn)為是一類并行處理單元(PPU)。
[0027]在并行處理子系統(tǒng)112中可以包括任何數(shù)目的PPU202。例如,可在單個(gè)插卡上提供多個(gè)PPU202、或可將多個(gè)插卡連接到通信路徑113、或可將一個(gè)或多個(gè)PPU202集成到橋式芯片中。在多PPU系統(tǒng)中的PPU202可以彼此同樣或不同。例如,不同的PPU202可能具有不同數(shù)目的處理核心、不同容量的本地并行處理存儲(chǔ)器等等。在存在多個(gè)PPU202的情況下,可并行操作那些PI3U從而以高于單個(gè)PPU202所可能達(dá)到的吞吐量來(lái)處理數(shù)據(jù)。包含一個(gè)或多個(gè)PPU202的系統(tǒng)可以以各種配置和形式因素來(lái)實(shí)現(xiàn),包括臺(tái)式電腦、筆記本電腦或手持式個(gè)人計(jì)算機(jī)、服務(wù)器、工作站、游戲控制臺(tái)、嵌入式系統(tǒng)等等。
[0028]PPU202有利地實(shí)現(xiàn)高度并行處理架構(gòu)。PPU202包括若干通用處理集群(GPC)。每個(gè)GPC能夠并發(fā)執(zhí)行大量(例如數(shù)百或數(shù)千)線程,其中每個(gè)線程是程序的實(shí)例。在一些實(shí)施例中,單指令、多數(shù)據(jù)(SMD)指令發(fā)出技術(shù)用于在不提供多個(gè)獨(dú)立指令單元的情況下支持大量線程的并行執(zhí)行。在其他實(shí)施例中,單指令、多線程(SIMT)技術(shù)用來(lái)支持大量一般來(lái)說(shuō)同步的線程的并行執(zhí)行。不同于所有處理引擎典型地都執(zhí)行同樣指令的SMD執(zhí)行機(jī)制,SIMT執(zhí)行通過(guò)給定線程程序允許不同線程更容易跟隨分散執(zhí)行路徑。
[0029]GPC包括若干流多處理器(SM),其中每個(gè)SM配置為處理一個(gè)或多個(gè)線程組。如本先前所定義的,傳送到特定GPC的一系列指令構(gòu)成線程,并且跨SM內(nèi)的并行處理引擎的某一數(shù)目的并發(fā)執(zhí)行線程的集合在本文中稱為“線程束(warp)”或“線程組”。如本文所使用的,“線程組”是指對(duì)不同輸入數(shù)據(jù)并發(fā)執(zhí)行相同程序的一組線程,所述組的一個(gè)線程被指派到SM內(nèi)的不同處理引擎。此外,多個(gè)相關(guān)線程組可以在SM內(nèi)同時(shí)活動(dòng)(在執(zhí)行的不同階段)。該線程組集合在本文中稱為“協(xié)作線程陣列”(“CTA”)或“線程陣列”。
[0030]在本發(fā)明的實(shí)施例中,使用計(jì)算系統(tǒng)的PPU202或其他處理器來(lái)使用線程陣列執(zhí)行通用計(jì)算是可取的。為線程陣列中的每個(gè)線程指派在線程的執(zhí)行期間對(duì)于線程可訪問(wèn)的唯一的線程標(biāo)識(shí)符(“線程ID”)。可被定義為一維或多維數(shù)值的線程ID控制線程處理行為的各方面。例如,線程ID可用于確定線程將要處理輸入數(shù)據(jù)集的哪部分和/或確定線程將要產(chǎn)生或?qū)戄敵鰯?shù)據(jù)集的哪部分。
[0031]在操作中,CPU102是計(jì)算機(jī)系統(tǒng)100的主處理器,控制和協(xié)調(diào)其他系統(tǒng)部件的操作。具體地,CPU102發(fā)出控制PPU202的操作的命令。在一個(gè)實(shí)施例中,通信路徑113是PCIExpress鏈路,如本領(lǐng)域所知的,其中專用通道被分配到每個(gè)PPU202。也可以使用其他通信路徑。PPU202有利地實(shí)現(xiàn)高度并行的處理架構(gòu)。PPU202可以擁有任何量的本地并行處理存儲(chǔ)器(PI3U存儲(chǔ)器)。
[0032]在一些實(shí)施例中,系統(tǒng)存儲(chǔ)器104包括統(tǒng)一虛擬存儲(chǔ)器(UVM)驅(qū)動(dòng)程序101。UVM驅(qū)動(dòng)程序101包括用于實(shí)施與CPU102和PPU202這二者共用的統(tǒng)一虛擬存儲(chǔ)器(UVM)系統(tǒng)的管理相關(guān)的各種任務(wù)的指令。在其他方面,架構(gòu)使能CPU102和PPU202以使用公共虛擬存儲(chǔ)器地址來(lái)訪問(wèn)物理存儲(chǔ)器位置,而不管物理存儲(chǔ)器位置是否在系統(tǒng)存儲(chǔ)器104或本地于PPU202的存儲(chǔ)器內(nèi)。
[0033]應(yīng)該理解,本文所示系統(tǒng)是示例性的,并且變化和修改都是可能的。連接拓?fù)?,包括橋的?shù)目和布置、CPU102的數(shù)目以及并行處理子系統(tǒng)112的數(shù)目,可根據(jù)需要修改。例如,在一些實(shí)施例中,系統(tǒng)存儲(chǔ)器104直接連接到CPU102而不是通過(guò)橋,并且其他設(shè)備經(jīng)由存儲(chǔ)器橋105和CPU102與系統(tǒng)存儲(chǔ)器104通信。在其他替代性拓?fù)渲?,并行處理子系統(tǒng)112連接到I/O橋107或直接連接到CPU102,而不是連接到存儲(chǔ)器橋105。而在其他實(shí)施例中,I/O橋107和存儲(chǔ)器橋105可能被集成到單個(gè)芯片上而不是作為一個(gè)或多個(gè)分立設(shè)備存在。大型實(shí)施例可以包括兩個(gè)或更多個(gè)CPU102以及兩個(gè)或更多個(gè)并行處理子系統(tǒng)112。本文所示的特定部件是可選的;例如,任何數(shù)目的插卡或外圍設(shè)備都可能得到支持。在一些實(shí)施例中,交換器116被去掉,網(wǎng)絡(luò)適配器118和插卡120、121直接連接到I/O橋107。
[0034]統(tǒng)一虛擬存儲(chǔ)器系統(tǒng)架構(gòu)
[0035]圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示出了統(tǒng)一虛擬存儲(chǔ)器(UVM)系統(tǒng)200的框圖。如所示的,統(tǒng)一虛擬存儲(chǔ)器系統(tǒng)200包括但不限于CPU102、系統(tǒng)存儲(chǔ)器104和耦連到并行處理單元存儲(chǔ)器(PPU存儲(chǔ)器)204的并行處理單元(PTO)202。CPU102和系統(tǒng)存儲(chǔ)器104經(jīng)由存儲(chǔ)器橋105彼此耦連并且耦連到PPU202。
[0036]CPU102執(zhí)行可以經(jīng)由虛擬存儲(chǔ)器地址請(qǐng)求存儲(chǔ)在系統(tǒng)存儲(chǔ)器104或PPU存儲(chǔ)器204中的數(shù)據(jù)的線程。虛擬存儲(chǔ)器地址屏蔽在CPU102中執(zhí)行的線程以免其獲知存儲(chǔ)器系統(tǒng)的內(nèi)部工作。因此,線程可能僅獲知虛擬存儲(chǔ)器地址,并且可通過(guò)經(jīng)由虛擬存儲(chǔ)器地址請(qǐng)求數(shù)據(jù)來(lái)訪問(wèn)數(shù)據(jù)。
[0037]CPU102包括CPU MMU209,其處理來(lái)自CPU102的、對(duì)于將虛擬存儲(chǔ)器地址轉(zhuǎn)譯為物理存儲(chǔ)器地址的請(qǐng)求。訪問(wèn)存儲(chǔ)在諸如系統(tǒng)存儲(chǔ)器104和PPU存儲(chǔ)器204的物理存儲(chǔ)器單元中的數(shù)據(jù)要求物理存儲(chǔ)器地址。CPU102包括CPU故障處理器(handler ) 211,其響應(yīng)于CPU MMU209生成頁(yè)面故障而執(zhí)行步驟,以使所請(qǐng)求的數(shù)據(jù)對(duì)CPU102可用。CPU故障處理器211 一般是駐留在系統(tǒng)存儲(chǔ)器104中并且在CPU102上執(zhí)行的軟件,該軟件由對(duì)CPU102的中斷所喚起。
[0038]系統(tǒng)存儲(chǔ)器104存儲(chǔ)包括數(shù)據(jù)的各種存儲(chǔ)器頁(yè)面(未示出)用于由在CPU102或PPU202上執(zhí)行的線程使用。如所示的,系統(tǒng)存儲(chǔ)器104存儲(chǔ)CPU頁(yè)面表206,其包括虛擬存儲(chǔ)器地址和物理存儲(chǔ)器地址之間的映射。系統(tǒng)存儲(chǔ)器104還存儲(chǔ)頁(yè)面狀態(tài)目錄210,其充當(dāng)用于UVM系統(tǒng)200的“主頁(yè)面表”,如以下所更詳細(xì)論述的。系統(tǒng)存儲(chǔ)器104存儲(chǔ)故障緩沖區(qū)216,其包括由PPU202所寫(xiě)的條目以向CPU102通知由PPU202所生成的頁(yè)面故障。在一些實(shí)施例中,系統(tǒng)存儲(chǔ)器104包括統(tǒng)一虛擬存儲(chǔ)器(UVM)驅(qū)動(dòng)程序101,其包括當(dāng)被執(zhí)行時(shí)使CPU102執(zhí)行用于在其他方面補(bǔ)救頁(yè)面故障的命令的指令。在替代實(shí)施例中,頁(yè)面狀態(tài)目錄210、故障緩沖區(qū)216和一個(gè)或多個(gè)命令隊(duì)列214的任何組合可以存儲(chǔ)在PI3U存儲(chǔ)器204中。此外,PPU頁(yè)面表208可以存儲(chǔ)在系統(tǒng)存儲(chǔ)器104中。
[0039]以與CPU102類似的方式,PPU202執(zhí)行可以經(jīng)由虛擬存儲(chǔ)器地址請(qǐng)求存儲(chǔ)在系統(tǒng)存儲(chǔ)器104或PPU存儲(chǔ)器204中的數(shù)據(jù)的指令。PPU202包括PPU MMU213,其處理來(lái)自PPU202的、對(duì)于將虛擬存儲(chǔ)器地址轉(zhuǎn)譯為物理存儲(chǔ)器地址的請(qǐng)求。PPU202包括拷貝引擎212,其執(zhí)行存儲(chǔ)在命令隊(duì)列214中的、用于拷貝存儲(chǔ)器頁(yè)面、修改PPU頁(yè)面表208中的數(shù)據(jù)的命令以及其他命令。PPU故障處理器215響應(yīng)于PPU202上的頁(yè)面故障而執(zhí)行步驟。PPU故障處理器215可以是運(yùn)行PPU202中的處理器或?qū)S梦⒖刂破鞯能浖?,或者PTO故障處理器215可以是在CPU102上運(yùn)行的軟件,其中后者是優(yōu)選選擇。在一些實(shí)施例中,CPU故障處理器211和PI3U故障處理器215可以是由CPU102或PPU202上的故障所調(diào)用的統(tǒng)一軟件程序。命令隊(duì)列214可以在PPU存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104中,但是優(yōu)先位于系統(tǒng)存儲(chǔ)器104中。
[0040]在一些實(shí)施例中,CPU故障處理器211和UVM驅(qū)動(dòng)程序101可以是統(tǒng)一軟件程序。在這類情況下,統(tǒng)一軟件程序可以是駐留在系統(tǒng)存儲(chǔ)器104中并且在CPU102上執(zhí)行的軟件。PTO故障處理器215可以是在PPU202中的處理器或?qū)S梦⒖刂破魃线\(yùn)行的分開(kāi)的軟件程序,或者PPU故障處理器215可以是在CPU102上運(yùn)行的分開(kāi)的軟件程序。
[0041]在其他實(shí)施例中,PI3U故障處理器215和UVM驅(qū)動(dòng)程序101可以是統(tǒng)一軟件程序。在這類情況下,統(tǒng)一軟件程序可以是駐留在系統(tǒng)存儲(chǔ)器104中并且在CPU102上執(zhí)行的軟件。CPU故障處理器211可以是駐留在系統(tǒng)存儲(chǔ)器104中并且在CPU102上執(zhí)行的分開(kāi)的軟件程序。
[0042]在其他實(shí)施例中,CPU故障處理器211、PPU故障處理器215和UVM驅(qū)動(dòng)程序101可以是統(tǒng)一軟件程序。在這類情況下,統(tǒng)一軟件程序可以是駐留在系統(tǒng)存儲(chǔ)器104中并且在CPU102上執(zhí)行的軟件。
[0043]在一些實(shí)施例中,如以上所描述的,CPU故障處理器211、PPU故障處理器215和UVM驅(qū)動(dòng)程序101可以全部駐留在系統(tǒng)存儲(chǔ)器104中。如圖2所示,UVM驅(qū)動(dòng)程序101駐留在系統(tǒng)存儲(chǔ)器104中,而CPU故障處理器211和PPU故障處理器215駐留在CPU102中。
[0044]CPU故障處理器211和PPU故障處理器215對(duì)可源自CPU102或PPU202的硬件中斷進(jìn)行響應(yīng),所述硬件中斷諸如起因于頁(yè)面故障的中斷。如以下所進(jìn)一步描述的,UVM驅(qū)動(dòng)程序101包括用于實(shí)施與UVM系統(tǒng)200的管理相關(guān)的各種任務(wù)的指令,包括但不限于補(bǔ)救頁(yè)面故障,以及訪問(wèn)CPU頁(yè)面表206、頁(yè)面狀態(tài)目錄210、命令隊(duì)列214和/或故障緩沖區(qū)216。
[0045]在一些實(shí)施例中,CPU頁(yè)面表206和PPU頁(yè)面表208具有不同格式,并且包含不同信息;例如,PPU頁(yè)面表208可以包含以下各項(xiàng),而CPU頁(yè)面表206不包含它們:原子禁用位;壓縮標(biāo)簽;和存儲(chǔ)器混合(swizzling)類型。
[0046]以與系統(tǒng)存儲(chǔ)器104類似的方式,PPU存儲(chǔ)器204存儲(chǔ)各種存儲(chǔ)器頁(yè)面(未示出)。如所示的,PPU存儲(chǔ)器204還包括PPU頁(yè)面表208,其包括虛擬存儲(chǔ)器地址和物理存儲(chǔ)器地址之間的映射。可替代地,PPU頁(yè)面表208可以存儲(chǔ)在系統(tǒng)存儲(chǔ)器104中。
[0047]頁(yè)面狀態(tài)目錄
[0048]圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于追蹤存儲(chǔ)器頁(yè)面的狀態(tài)的系統(tǒng)300的示意圖。如所示的,系統(tǒng)300包括耦連到CPU頁(yè)面表206和PPU頁(yè)面表208這二者的頁(yè)面狀態(tài)目錄210。
[0049]頁(yè)面狀態(tài)目錄210是存儲(chǔ)與特定虛擬存儲(chǔ)器地址空間中的每個(gè)存儲(chǔ)器頁(yè)面相關(guān)聯(lián)的映射的數(shù)據(jù)結(jié)構(gòu)。為了從PSD210獲得物理地址,請(qǐng)求者將所請(qǐng)求的虛擬地址提供到PSD210, PSD210基于虛擬地址實(shí)施查找操作。在一些實(shí)施例中,PSD210能夠保持對(duì)不同大小的存儲(chǔ)器頁(yè)面的追蹤。為此,PSD210包括多個(gè)陣列。例如,第一陣列管理CPU大小的頁(yè)面,第二陣列管理PI3U大小的頁(yè)面。
[0050]盡管在一個(gè)實(shí)施例中,頁(yè)面狀態(tài)目錄210包括多級(jí)表,但是可以以任何技術(shù)可行的方式實(shí)現(xiàn)頁(yè)面狀態(tài)目錄210。每個(gè)非葉級(jí)(non-leaf level)包括指向下一級(jí)中的條目的指針的陣列。指針可以指向PI3U存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104中的條目。
[0051]CPU102或PPU202可以更新PSD210。可以通過(guò)使用跨PC1-E總線的原子比較并交換(compare-and-swap)來(lái)完成對(duì)系統(tǒng)存儲(chǔ)器104中的PSD210頁(yè)面的更新。通過(guò)將更新請(qǐng)求放置到存儲(chǔ)在系統(tǒng)存儲(chǔ)器中的PSD更新循環(huán)緩沖區(qū)來(lái)完成對(duì)PI3U存儲(chǔ)器204中的PSD210頁(yè)面的更新。代理在對(duì)PSD210的任何讀操作之前檢查循環(huán)緩沖區(qū)以應(yīng)用更新。
[0052]如以下所描述的,多個(gè)虛擬存儲(chǔ)器地址空間可以存在??梢詾樵贑PU102上運(yùn)行的兩個(gè)不同過(guò)程指派兩個(gè)不同的虛擬存儲(chǔ)器地址空間。一些過(guò)程可以共享地址空間。PSD210針對(duì)每個(gè)虛擬存儲(chǔ)器地址空間而存在。
[0053]不同的PSD210可以每個(gè)包括到系統(tǒng)存儲(chǔ)器104或PPU存儲(chǔ)器204中的相同存儲(chǔ)器位置的映射。在這類情況下,單個(gè)過(guò)程可以被指明為存儲(chǔ)器位置的所有者。與該單個(gè)過(guò)程相對(duì)應(yīng)的PSD210被視為“所有者PSD”。所有者PSD包括到存儲(chǔ)器位置的映射,并且包括到該存儲(chǔ)器位置的用于所有其他過(guò)程的PSD210包括到所有者PSD中的映射的鏈接。
[0054]當(dāng)與特定PSD210相關(guān)聯(lián)的過(guò)程不再要求與特定存儲(chǔ)器位置相關(guān)聯(lián)的特定映射時(shí),過(guò)程使映射從與該過(guò)程相關(guān)聯(lián)的PSD210移除。映射被放置到撤回(retired)列表上。在該點(diǎn)處,其他PSD210可以仍然包括到存儲(chǔ)器位置的映射。那些PSD210繼續(xù)包括該映射直到與那些PSD210相關(guān)聯(lián)的過(guò)程確定不再需要映射為止。當(dāng)沒(méi)有PSD210包括與存儲(chǔ)器位置相關(guān)聯(lián)的映射時(shí),將映射從撤回列表移除。
[0055]PSD210中的條目包括虛擬存儲(chǔ)器地址和物理存儲(chǔ)器地址之間的映射。條目還包括用于與條目相關(guān)聯(lián)的存儲(chǔ)器頁(yè)面的狀態(tài)信息。下面的列表包括在本發(fā)明的各實(shí)施例中可被包括在PSD條目中的數(shù)個(gè)示范性狀態(tài)?!蔼?dú)享(exclusive)”-存儲(chǔ)器頁(yè)面可以被認(rèn)為是“獨(dú)享”的,意味著存儲(chǔ)器頁(yè)面不被復(fù)制并且對(duì)PPU202或CPU102是可見(jiàn)的,但并非二者都可見(jiàn)。以下所論述的,“獨(dú)享”狀態(tài)類似于“屬于PPU”或“屬于CPU”狀態(tài)?!肮蚕?未緩存(shared-uncached)”-存儲(chǔ)器頁(yè)面可以被認(rèn)為是“共享-未緩存”的,意味著存儲(chǔ)器頁(yè)面不被復(fù)制,但是對(duì)一個(gè)或多個(gè)PPU202和/或一個(gè)或多個(gè)CPU102是可見(jiàn)的?!肮蚕?未緩存”狀態(tài)類似于以下所論述的“CPU共享”狀態(tài),“未緩存”的附加品質(zhì)意味著“不被復(fù)制”。存儲(chǔ)器頁(yè)面可以駐留在多于一個(gè)的存儲(chǔ)器單元中(例如系統(tǒng)存儲(chǔ)器104和PPU存儲(chǔ)器204這二者中),并且因此“被復(fù)制”?!白x-被復(fù)制(read-duplicated)”-存儲(chǔ)器頁(yè)面可以被認(rèn)為是“讀-被復(fù)制”的,意味著存儲(chǔ)器頁(yè)面的多于一個(gè)拷貝存在,并且拷貝中的至少一個(gè)在CPU102或PPU202的本地并且對(duì)該CPU102或PPU202僅可用于讀。“遷移-只讀(migrating-read-only)”-存儲(chǔ)器頁(yè)面可以被認(rèn)為是“遷移-只讀”的,意味著存儲(chǔ)器頁(yè)面在被遷移的過(guò)程中。例如,UVM系統(tǒng)200可以在將存儲(chǔ)器頁(yè)面從PI3U存儲(chǔ)器204遷移到系統(tǒng)存儲(chǔ)器104的過(guò)程中。因?yàn)榇鎯?chǔ)器頁(yè)面被認(rèn)為是“遷移-只讀”的,所以當(dāng)在該狀態(tài)下時(shí)可以讀取自但不可以寫(xiě)入至存儲(chǔ)器頁(yè)面?!斑w移-不可見(jiàn)(migrating-1nvisible)”-存儲(chǔ)器頁(yè)面可以被認(rèn)為是“遷移-不可見(jiàn)”的,意味著存儲(chǔ)器頁(yè)面在被遷移的過(guò)程中,但是存儲(chǔ)器頁(yè)面是“不可見(jiàn)”的,意味著沒(méi)有過(guò)程可以讀取自或?qū)懭胫链鎯?chǔ)器頁(yè)面?!皩?duì)等轉(zhuǎn)發(fā)條目(peer-forwarding-entry)” -PSD210中的特定條目可以被認(rèn)為是“對(duì)等轉(zhuǎn)發(fā)條目”,意味著條目包含到包括與存儲(chǔ)器頁(yè)面相關(guān)聯(lián)的映射的PSD210中的不同條目的鏈接。
[0056]UVM系統(tǒng)200可以將存儲(chǔ)器頁(yè)面存儲(chǔ)在后備存儲(chǔ)(backing store)中,諸如硬盤(pán)驅(qū)動(dòng)器磁盤(pán)空間。UVM驅(qū)動(dòng)程序101或操作系統(tǒng)保持對(duì)存儲(chǔ)在后備存儲(chǔ)中的存儲(chǔ)器頁(yè)面的追蹤。如果對(duì)PSD210所實(shí)施的查找操作指示存儲(chǔ)器頁(yè)面存儲(chǔ)在后備存儲(chǔ)中,那么UVM驅(qū)動(dòng)程序101將存儲(chǔ)器頁(yè)面從后備存儲(chǔ)移動(dòng)到系統(tǒng)存儲(chǔ)器104或PPU存儲(chǔ)器204。在將存儲(chǔ)器頁(yè)面從后備存儲(chǔ)拷貝之后,UVM驅(qū)動(dòng)程序101重試PSD210查找。
[0057]下面的表描繪示范性的PSD條目。每行描繪不同的示范性條目。
[0058]
【權(quán)利要求】
1.一種用于訪問(wèn)虛擬存儲(chǔ)器子系統(tǒng)的數(shù)據(jù)的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括: 響應(yīng)于存儲(chǔ)器訪問(wèn)請(qǐng)求而發(fā)出頁(yè)面故障,其中本地頁(yè)面表不包括與包括在所述存儲(chǔ)器訪問(wèn)請(qǐng)求中的虛擬存儲(chǔ)器地址相對(duì)應(yīng)的條目; 響應(yīng)于所述頁(yè)面故障,執(zhí)行頁(yè)面故障序列,所述頁(yè)面故障序列包括: 標(biāo)識(shí)和與所述虛擬存儲(chǔ)器地址相關(guān)聯(lián)的存儲(chǔ)器頁(yè)面相對(duì)應(yīng)的頁(yè)面狀態(tài)目錄中的條目; 從所述頁(yè)面狀態(tài)目錄中的所述條目讀取與所述存儲(chǔ)器頁(yè)面相關(guān)聯(lián)的所有權(quán)狀態(tài);以及更新所述本地頁(yè)面表以包括與所述虛擬存儲(chǔ)器地址相對(duì)應(yīng)并且將所述虛擬存儲(chǔ)器地址與所述存儲(chǔ)器頁(yè)面相關(guān)聯(lián)的條目。
2.如權(quán)利要求1所述的方法,其中: 在執(zhí)行所述頁(yè)面故障序列之前,與所述存儲(chǔ)器頁(yè)面相關(guān)聯(lián)的所述所有權(quán)狀態(tài)指示所述存儲(chǔ)器頁(yè)面是屬于中央處理單元(屬于CPU)的; 執(zhí)行所述頁(yè)面故障序列進(jìn)一步包括將與所述存儲(chǔ)器頁(yè)面相關(guān)聯(lián)的所述所有權(quán)狀態(tài)修改為CPU共享的;以及 所述本地頁(yè)面表包括 行處理單元(PPU)頁(yè)面表。
3.如權(quán)利要求2所述的方法,其中所述存儲(chǔ)器頁(yè)面表駐留在系統(tǒng)存儲(chǔ)器中,并且所述PPU頁(yè)面表和CPU頁(yè)面表二者都包括將所述虛擬存儲(chǔ)器地址關(guān)聯(lián)到所述存儲(chǔ)器頁(yè)面的條目。
4.如權(quán)利要求1所述的方法,其中: 在執(zhí)行所述頁(yè)面故障序列之前,與所述存儲(chǔ)器頁(yè)面相關(guān)聯(lián)的所述所有權(quán)狀態(tài)指示所述存儲(chǔ)器頁(yè)面是屬于CPU的; 執(zhí)行所述頁(yè)面故障序列進(jìn)一步包括將與所述存儲(chǔ)器頁(yè)面相關(guān)聯(lián)的所述所有權(quán)狀態(tài)修改為屬于PPU的;以及 所述本地頁(yè)面表包括PPU頁(yè)面表。
5.如權(quán)利要求4所述的方法,其中執(zhí)行所述頁(yè)面故障序列進(jìn)一步包括將所述存儲(chǔ)器頁(yè)面從系統(tǒng)存儲(chǔ)器遷移到PI3U存儲(chǔ)器。
6.如權(quán)利要求1所述的方法,其中: 在執(zhí)行所述頁(yè)面故障序列之前,與所述存儲(chǔ)器頁(yè)面相關(guān)聯(lián)的所述所有權(quán)狀態(tài)指示所述存儲(chǔ)器頁(yè)面是屬于PPU的; 執(zhí)行所述頁(yè)面故障序列進(jìn)一步包括將與所述存儲(chǔ)器頁(yè)面相關(guān)聯(lián)的所述所有權(quán)狀態(tài)修改為屬于CPU的;以及 所述本地頁(yè)面表包括CPU頁(yè)面表。
7.如權(quán)利要求6所述的方法,其中執(zhí)行所述頁(yè)面故障序列進(jìn)一步包括將所述存儲(chǔ)器頁(yè)面從PPU存儲(chǔ)器遷移到系統(tǒng)存儲(chǔ)器。
8.如權(quán)利要求1所述的方法,其中: 在執(zhí)行所述頁(yè)面故障序列之前,與所述存儲(chǔ)器頁(yè)面相關(guān)聯(lián)的所述所有權(quán)狀態(tài)指示所述存儲(chǔ)器頁(yè)面是屬于PPU的; 執(zhí)行所述頁(yè)面故障序列進(jìn)一步包括將與所述存儲(chǔ)器頁(yè)面相關(guān)聯(lián)的所述所有權(quán)狀態(tài)修改為CPU共享的;以及所述本地頁(yè)面表包括CPU頁(yè)面表。
9.如權(quán)利要求8所述的方法,其中執(zhí)行所述頁(yè)面故障序列進(jìn)一步包括將所述存儲(chǔ)器頁(yè)面從PPU存儲(chǔ)器遷移到系統(tǒng)存儲(chǔ)器。
10.一種用于訪問(wèn)虛擬存儲(chǔ)器子系統(tǒng)中的數(shù)據(jù)的系統(tǒng),包括: 本地頁(yè)面表;以及 第一處理單元,其配置為: 確定所述本地頁(yè)面表不包括與虛擬存儲(chǔ)器地址相對(duì)應(yīng)的條目, 響應(yīng)于確定所述本地頁(yè)面表不包括所述條目,發(fā)出頁(yè)面故障; 標(biāo)識(shí)和與所述虛擬存儲(chǔ)器地址相關(guān)聯(lián)的存儲(chǔ)器頁(yè)面相對(duì)應(yīng)的頁(yè)面狀態(tài)目錄中的條目; 從所述頁(yè)面狀態(tài)目錄中的所述條目讀取與所述存儲(chǔ)器頁(yè)面相關(guān)聯(lián)的所有權(quán)狀態(tài);以及更新所述本地頁(yè)面表以包括與所述虛擬存儲(chǔ)器地址相對(duì)應(yīng)并且將所述虛擬存儲(chǔ)器地址與所述存儲(chǔ)器 頁(yè)面相關(guān)聯(lián)的條目。
【文檔編號(hào)】G06F3/06GK104049903SQ201310752084
【公開(kāi)日】2014年9月17日 申請(qǐng)日期:2013年12月31日 優(yōu)先權(quán)日:2013年3月14日
【發(fā)明者】杰爾姆·F·小杜魯克, 卡梅倫·布沙特, 張雪儀, 詹姆士·勒羅伊·德明, ??姞枴·鄧肯, 盧森·鄧寧, 羅伯特·喬治, 阿爾溫德·戈帕拉克里希南, 馬克·海爾格羅夫, 賈承歡, 約翰·馬舍 申請(qǐng)人:輝達(dá)公司