包含虛擬地址空間和物理地址空間之間的映射的數(shù)據(jù)結(jié)構(gòu)的查找的制作方法
【專利說明】
【背景技術(shù)】
[0001]計算機系統(tǒng)可包括輔助儲存器(Storage)(也稱為大容量儲存器)和存儲器(memory),其中所述存儲器與輔助儲存器相比具有更快的訪問速度。輔助儲存器可以用一個或多個基于盤的存儲設(shè)備或其它類型的存儲設(shè)備來實現(xiàn)。存儲器可以用一個或多個存儲器設(shè)備來實現(xiàn)。與在輔助儲存器中存儲的數(shù)據(jù)相比,在存儲器中存儲的數(shù)據(jù)可以由數(shù)據(jù)請求器(諸如,處理器)以更低的等待時間來訪問。
[0002]由于存儲器和輔助儲存器之間擴大的性能差距,一些應(yīng)用越來越多地依賴于使用存儲器(而不是輔助儲存器)作為數(shù)據(jù)的主要數(shù)據(jù)存儲區(qū)。
【附圖說明】
[0003]關(guān)于以下附圖描述一些實施例:
[0004]圖1是根據(jù)一些實現(xiàn)方式的示例系統(tǒng)的示意圖;
[0005]圖2是根據(jù)一些實現(xiàn)方式的技術(shù)的流程圖;
[0006]圖3和4是根據(jù)一些實現(xiàn)方式的包括頁表的緩沖器設(shè)備的不同布置的示意圖;
[0007]圖5A-5B是根據(jù)一些實現(xiàn)方式的包括存儲器設(shè)備和緩沖器設(shè)備的不同布置的示意圖;和
[0008]圖6是根據(jù)可替代實現(xiàn)方式的散列化(hash)虛擬地址和過程標識符以選擇多個緩沖器設(shè)備之一的布置的示意圖。
【具體實施方式】
[0009]系統(tǒng)可以使用虛擬存儲器地址空間以將數(shù)據(jù)存儲在存儲器中。系統(tǒng)的示例包括計算機系統(tǒng)(例如,服務(wù)器計算機、臺式計算機、筆記本計算機、平板計算機等)、存儲系統(tǒng)或其他類型的電子設(shè)備。如此處所使用的,存儲器可以用一個或多個存儲器設(shè)備來實現(xiàn)。通常,存儲器指代與系統(tǒng)的另一個儲存器(諸如以(一個或多個)較高等待時間的存儲設(shè)備實現(xiàn)的輔助儲存器,諸如(一個或多個)基于盤的存儲設(shè)備或其它類型的存儲設(shè)備)相比具有更低的數(shù)據(jù)訪問等待時間的儲存器。
[0010]虛擬存儲器地址空間不被系統(tǒng)中的存儲器的實際物理容量所約束。作為結(jié)果,虛擬存儲器地址空間可以比存儲器上的物理地址空間大得多。物理地址空間包括對應(yīng)于存儲器的物理位置的物理地址。相比而言,虛擬地址空間包括被映射到物理地址的虛擬地址。虛擬地址并不指向存儲器的物理位置;而是,虛擬地址首先被翻譯為對應(yīng)于存儲器中物理位置的物理地址。
[0011]圖1是包括處理器110和可在處理器110上執(zhí)行的過程108的示例性系統(tǒng)100的框圖。系統(tǒng)100還包括存儲器106。過程108可以是應(yīng)用(例如,數(shù)據(jù)庫管理應(yīng)用或可訪問數(shù)據(jù)的任何其它應(yīng)用)的過程。更一般地,過程可以指代在系統(tǒng)100中可執(zhí)行為機器可讀指令的任何實體。盡管在圖1中描繪了僅一個過程108,但應(yīng)該指出的是,可以存在在處理器110上執(zhí)行的多個過程。此外,在另外的示例中,系統(tǒng)100可以包括多個處理器110。
[0012]在存儲器分配時(將存儲器106的部分分配到在系統(tǒng)中執(zhí)行的相應(yīng)過程),系統(tǒng)100的操作系統(tǒng)(0S) 109可以針對每個過程創(chuàng)建虛擬地址空間和相應(yīng)的物理地址空間之間的映射。
[0013]在一些示例中,0S 109可在稱為頁表102的數(shù)據(jù)結(jié)構(gòu)中存儲每個映射。頁表102將被過程使用的虛擬頁(其是指定大小的數(shù)據(jù)塊)映射到相應(yīng)的物理存儲器頁(存儲器的塊)。0S 109可以針對使用存儲器106的每個活動的過程維護單獨的頁表。
[0014]系統(tǒng)100中的處理器108可以執(zhí)行過程108的指令(例如,加載指令或存儲指令),其導(dǎo)致存儲器106的訪問(分別地,讀取訪問或?qū)懭朐L問)。指令的地址是指向虛擬地址空間中的位置的虛擬地址。相應(yīng)的頁表102可用于將指令的虛擬地址翻譯為物理地址。為了加速地址翻譯過程,頁表102的子集可以被高速緩存在高速緩存中,稱為翻譯后備緩沖器(TLB) 111。例如,TLB 111可以存儲頁表102的最近被訪問的條目。
[0015]當(dāng)發(fā)出加載或存儲指令時,處理器109首先訪問TLB 111以尋找相應(yīng)的物理地址。然而,如果TLB 111不包含針對指令的虛擬地址的條目,則已經(jīng)發(fā)生TLB 111的未命中(miss),在該情況下,可以調(diào)用頁表行走(walk)過程來遍歷頁表102以尋找對應(yīng)的物理地址。頁表行走過程遍歷通過頁表102,以標識包含用于將加載或存儲指令的虛擬地址映射到物理地址的映射的條目。
[0016]根據(jù)一些實現(xiàn)方式,為了相比于傳統(tǒng)技術(shù)或機制而改進頁表行走過程的性能,頁表102被存儲在存儲器區(qū)域104中,該存儲器區(qū)域104具有比存儲器106的訪問等待時間更低的訪問等待時間。在根據(jù)圖1的實現(xiàn)方式中,存儲器區(qū)域104與位于處理器110和存儲器106之間的緩沖器設(shè)備112相關(guān)聯(lián)。
[0017]相對于其中頁表被存儲在較慢存儲器106中的布置,在具有減少的訪問等待時間的存儲器區(qū)域104中存儲頁表102改進了頁表行走過程的性能。
[0018]在一些示例中,頁表可以是多級頁表。多級頁表包括多個頁表部分(在不同級別處),所述多個頁表部分在頁表行走過程期間被按順序訪問以尋找包含加載或存儲指令的虛擬地址與對應(yīng)的物理地址之間的映射的條目。響應(yīng)于TLB 111中的未命中,頁表行走過程使用虛擬地址的一部分以索引到在不同級別中的最高級別處的頁表部分的條目。所選擇的條目包含到在下一較低級別處的頁表部分的索引。前述迭代過程繼續(xù),直到達到最低級別處的頁表部分為止。最低級頁表部分的所選擇條目包含與虛擬地址的某個部分(例如,最低的Μ位)組合以生成最終物理地址的地址部分。行走通過多個級別的頁表部分是相對緩慢的過程,尤其是在其中多級頁表被存儲在存儲器106中的實現(xiàn)方式中。
[0019]由于在存儲器區(qū)域104中的頁表行走過程將快于在較慢存儲器106中的頁表行走過程,通過在較快的存儲器區(qū)域104中實現(xiàn)頁表102,可減少與TLB 111的未命中相關(guān)聯(lián)的懲罰(penalty)。
[0020]在較快的存儲器區(qū)域104中維護的頁表102可以是多級頁表。在其它示例中,頁表102可以是單級頁表。
[0021]緩沖器設(shè)備112可以被實現(xiàn)為集成電路(1C)芯片。例如,緩沖器設(shè)備112可以是作為存儲器堆疊的部分的裸片(die),所述存儲器堆疊是多個裸片的堆疊。裸片的堆疊包括包含用于存儲數(shù)據(jù)的(一個或多個)相應(yīng)存儲器設(shè)備的一個或多個存儲器裸片。存儲器堆疊中的另一種裸片是邏輯裸片,其可以包括緩沖器設(shè)備112 (該邏輯裸片可被稱為緩沖器設(shè)備裸片)。
[0022]在不同的示例中,緩沖器設(shè)備112可以被提供在存儲器模塊上、在主電路板上,等等。雖然在圖1中描繪了僅僅一個緩沖器設(shè)備112,但在其他示例中可以包括多個緩沖器設(shè)備112,其中多個緩沖器設(shè)備112中的每一個可以包括相應(yīng)的頁表。
[0023]緩沖器設(shè)備112可包括用于臨時緩存在處理器110和存儲器106之間傳送的數(shù)據(jù)的緩沖器儲存器(未示出)。此外,緩沖器設(shè)備112可以包括用于在處理器110和存儲器106之間路由請求和地址的邏輯(未示出)。
[0024]此外,如圖1所描繪的,緩沖器設(shè)備112可包括用于執(zhí)行存儲器區(qū)域104中的頁表102的頁表行走過程的頁表行走邏輯114。頁表行走邏輯114可被實現(xiàn)為硬件控制器,諸如專用集成電路(ASIC)設(shè)備、現(xiàn)場可編程門陣列(FPGA),或其它類型的控制器。
[0025]雖然存儲器區(qū)域104被示出為緩沖器設(shè)備112的部分,但應(yīng)注意:在可替代實現(xiàn)方式中,存儲器區(qū)域104可以與緩沖器設(shè)備112分離地實現(xiàn)。在這樣的可替代實現(xiàn)方式中,存儲器區(qū)域104可耦合到緩沖器設(shè)備112。例如,如果緩沖器設(shè)備112在存儲器堆疊的緩沖器設(shè)備裸片中,存儲器區(qū)域104可以是堆疊在緩沖器設(shè)備裸片頂部的另一個裸片的部分??商娲兀鎯ζ鲄^(qū)域104可以是通過點對點鏈路直接連接到緩沖器設(shè)備112的電路的部分。點對點鏈路指代其中連接到鏈路的兩個設(shè)備可以彼此直接通信而不必尋求針對鏈路的訪問的仲裁的鏈路。
[0026]圖2是根據(jù)一些實現(xiàn)方式的技術(shù)的流程圖。過程在耦合到緩沖器設(shè)備112的存儲器區(qū)域104中存儲(在202處)包含存儲器106的物理地址空間和虛擬地址空間之間的映射的數(shù)據(jù)結(jié)構(gòu)(例如,頁表102)。該過程還在高速緩存存儲器(諸如TLB 111)中高速緩存(在204處)頁表102的映射的一部分。
[0027]響應(yīng)于指定虛擬地址的過程108的存儲器請求(例如,加載指令、存儲指令等),處理器110首先嘗試確定TLB 111是否包含對應(yīng)于存儲器請求的虛擬地址的條目。如果這樣的條目不在TLB 111中,則認為未命中已經(jīng)發(fā)生。
[0028]響應(yīng)于對存儲器請求的虛擬地址的查找進行響應(yīng)的TLB 111中的未命中(如在206處確定的),處理器110可以向緩沖器設(shè)備112發(fā)送(在208處)頁表查找指示。頁表查找指示是將執(zhí)行關(guān)于頁表102的頁表行走過程的指示。響應(yīng)于頁表查找指示,頁表行走邏輯114執(zhí)行(在210處)存儲器區(qū)域104中的頁表102的查找,以尋找對應(yīng)于存儲器請求的虛擬地址的物理地址。
[0029]圖3是根據(jù)另外的實現(xiàn)方式的包括緩沖器設(shè)備112A的示例布置的框圖。在根據(jù)圖3的實現(xiàn)方式中,向緩沖器設(shè)備112A發(fā)送(在圖2的208處)的頁表查找指示是在指定的地址范圍(其可以指定地址范圍)內(nèi)的特殊地址,或可替代地單個地址。在處理器110和緩沖器設(shè)備112A之間的主機地址總線302上提供地址。主機地址總線302上的地址由緩沖器設(shè)備112A中的地址范圍檢測器304接收。地址范圍檢測器304確定所接收的地址是否在指定的地址范圍內(nèi)。如果是,則那是頁表102的頁表行走過程將被執(zhí)行的指示。
[0030]然而,如果所接收的地址不在指定的地址范圍內(nèi),則那是用于存儲器106的正常訪問的地址,在該情況下,地址范圍檢測器304向緩沖器設(shè)備112A的地址邏輯306提供所接收的地址。地址邏輯306將對應(yīng)的地址輸出到緩沖器設(shè)備112A和存儲器106之間的存儲器地址總線308上。
[0031]緩沖器設(shè)備112A還被連接到處理器110和緩沖器設(shè)備112A之間的主機數(shù)據(jù)總線310。主機數(shù)據(jù)總線310用于在處理器110和緩沖器設(shè)備112A之間攜帶數(shù)據(jù)。此外,存儲器數(shù)據(jù)總線312在存儲器106和緩沖器設(shè)備112A之間。
[0032]緩沖器設(shè)備112A包括數(shù)據(jù)邏輯314,所述數(shù)據(jù)邏輯314能夠通過主機數(shù)據(jù)總線310將從存儲器106讀取的數(shù)據(jù)提供到處理器110,或者可替代地,將來自主機數(shù)據(jù)總線310的寫入數(shù)據(jù)提供到存儲