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