專利名稱:頁(yè)面大小可變的虛擬內(nèi)存系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)和其他電子設(shè)備的內(nèi)存管理,尤其涉及虛擬內(nèi)存系統(tǒng)中大小可變頁(yè)面的映射。同時(shí),還涉及大小可變頁(yè)面可映射于虛擬內(nèi)存系統(tǒng)之中的計(jì)算機(jī)。
背景技術(shù):
一現(xiàn)有技術(shù)說(shuō)明虛擬內(nèi)存系統(tǒng)廣泛用于現(xiàn)代計(jì)算機(jī)和其他電子設(shè)備。虛擬內(nèi)存系統(tǒng)允許程序在一個(gè)或多個(gè)虛擬內(nèi)存區(qū)域使用虛擬地址訪問(wèn)數(shù)據(jù)。虛擬內(nèi)存系統(tǒng)的內(nèi)存管理單元(MMU )將一個(gè)地址空間的地址轉(zhuǎn)換為另一個(gè)地址空 間的地址。就MMU而言,第一個(gè)地址空間稱為虛擬地址空間,第二個(gè)地址空間稱為物理地址空間。虛擬地址空間的地址稱為虛擬地址,物理地址空間的地址稱為物理地址。在某些情況下,必須將物理地址進(jìn)一步轉(zhuǎn)換為可用地址。MMU包括查找表(轉(zhuǎn)換旁視緩沖器形式)、頁(yè)表、反置頁(yè)表、散列表或類似表,使虛擬地址空間的一系列地址與頁(yè)表項(xiàng)相關(guān)聯(lián)。許多MMU結(jié)合使用轉(zhuǎn)換旁視緩沖器和頁(yè)表。頁(yè)表項(xiàng)包括轉(zhuǎn)換描述符,也稱頁(yè)描述符。頁(yè)描述符字段使所述頁(yè)表項(xiàng)與物理地址空間的若干(一些)地址相關(guān)聯(lián)。在傳統(tǒng)系統(tǒng)中,物理地址空間被分為預(yù)定固定大小的頁(yè)面。每個(gè)頁(yè)描述符字段包括物理地址空間中的一個(gè)頁(yè)面的地址。通常,頁(yè)描述符的低位會(huì)被刪節(jié)。地址轉(zhuǎn)換過(guò)程中,虛擬地址分為頁(yè)碼和頁(yè)偏移量。MMU定位與頁(yè)碼相關(guān)的頁(yè)表項(xiàng)。頁(yè)表項(xiàng)中頁(yè)描述符字段中的頁(yè)面地址與虛擬地址的頁(yè)偏移量部分一起來(lái)確定物理地址。頁(yè)表項(xiàng)還包括若干訪問(wèn)控制和保護(hù)字段,如只寫字段、只讀字段和執(zhí)行字段,為頁(yè)表項(xiàng)所映射的頁(yè)面提供訪問(wèn)控制和保護(hù)。時(shí)常,可在主存儲(chǔ)器或輔助存儲(chǔ)器中定位頁(yè)面。通過(guò)虛擬內(nèi)存系統(tǒng)中的頁(yè)數(shù)據(jù)庫(kù)、頁(yè)框數(shù)據(jù)庫(kù)或核心地圖可跟蹤各頁(yè)面的物理位置。頁(yè)面的有效大小為所述頁(yè)面中地址映射到的虛擬地址的數(shù)量。在傳統(tǒng)虛擬內(nèi)存系統(tǒng)中,頁(yè)面大小與其有效大小相同。虛擬內(nèi)存系統(tǒng)通常在多個(gè)級(jí)別實(shí)施,或與其他地址轉(zhuǎn)換機(jī)制一起實(shí)施。例如,英特爾(Intel)80386微處理器執(zhí)行兩級(jí)分頁(yè)地址轉(zhuǎn)換機(jī)制,并支持頁(yè)目錄和頁(yè)表。除了分頁(yè)機(jī)制之外,英特爾80386微處理器還支持分段機(jī)制?,F(xiàn)有虛擬內(nèi)存系統(tǒng)存在許多缺點(diǎn)。尤其是針對(duì)將物理內(nèi)存映射到虛擬地址空間提供的框架不靈活,如下所述。I、頁(yè)面大小需從少數(shù)可能的頁(yè)面大小中選擇。頁(yè)面不可能為任意大小。頁(yè)面不可能為非二的次方的數(shù)。2、頁(yè)面的物理地址需在固定邊界對(duì)齊。頁(yè)面的物理地址需為所述頁(yè)面大小的倍數(shù)。頁(yè)面的物理地址不可能在其他或任意選擇的邊界對(duì)齊。3、某些虛擬內(nèi)存系統(tǒng)支持可能頁(yè)面大小中的很多頁(yè)面大小。在某些情況下,如果兩個(gè)或兩個(gè)以上頁(yè)面在物理地址空間和虛擬地址空間是連續(xù)的,則根據(jù)固定規(guī)則兩個(gè)或兩個(gè)以上頁(yè)面結(jié)合形成較大的頁(yè)面。然而,總的來(lái)說(shuō),在單個(gè)虛擬地址空間結(jié)合使用任意大小的頁(yè)面是不可能、不切實(shí)際或無(wú)益的。
4、必須在虛擬地址空間的固定邊界映射頁(yè)面。所述虛擬地址需為該頁(yè)面大小的倍數(shù)。不可能在其他或任意選擇的虛擬地址映射頁(yè)面。如果新虛擬地址未在所述固定邊界對(duì)齊,則不可能將之前在虛擬地址映射的頁(yè)面重新映射到更高或更低的虛擬地址。5、需把整個(gè)頁(yè)面映射到虛擬地址空間。不會(huì)在頁(yè)面中保持未用、備用或未映射空間。頁(yè)面有效大小需與頁(yè)面大小相等。6、雖然虛擬地址頁(yè)偏移量部分未轉(zhuǎn)換,但無(wú)需修改即可用作該頁(yè)面的頁(yè)偏移量。頁(yè)偏移量不另外參與轉(zhuǎn)換或映射過(guò)程。7、頁(yè)表項(xiàng)將整個(gè)頁(yè)面映射到虛擬地址空間。不會(huì)使用頁(yè)表項(xiàng)映射部分頁(yè)面。使用多個(gè)頁(yè)表項(xiàng)映射相同頁(yè)面或部分相同頁(yè)面,是毫無(wú)意義的。8、未提供細(xì)粒度保護(hù)和訪問(wèn)控制。如上所述,保護(hù)和訪問(wèn)控制限于固定大小頁(yè)面。然而,在實(shí)踐中,不可能確保需要控制的數(shù)據(jù)邏輯單元完全適合一個(gè)或多個(gè)固定大小頁(yè)面。
9、未提供創(chuàng)建和管理內(nèi)存映射功能或程序的方法。10、未提供創(chuàng)建和管理內(nèi)存映射虛擬查找表的方法。在編程中,經(jīng)常希望提供一些計(jì)算結(jié)果作為查找表。例如,虛擬查找表可提供自然數(shù)的平方根。理想情況下,當(dāng)在虛擬地址首先訪問(wèn)所述查找表的項(xiàng)時(shí),可調(diào)用用戶定義函數(shù)計(jì)算該位置的相關(guān)值。該值可置于小頁(yè)面中,該小頁(yè)面隨后可映射到虛擬地址空間。然而,在現(xiàn)有虛擬內(nèi)存系統(tǒng)中,頁(yè)面需相當(dāng)大,除了預(yù)期結(jié)果之外,還需計(jì)算幾個(gè)數(shù)的平方根。這使得虛擬查找表不可行。11、未提供在虛擬內(nèi)存區(qū)域遷移、插入或刪除任意量數(shù)據(jù)的方法,遷移、插入或刪除這些操作可在沒(méi)有大規(guī)模復(fù)制現(xiàn)有數(shù)據(jù)的情況下進(jìn)行。12、優(yōu)化轉(zhuǎn)換旁視緩沖器中有限頁(yè)表項(xiàng)使用的方法不充分。因此,需要一種更靈活、更有效的將物理內(nèi)存映射到虛擬地址空間的方法。發(fā)明目的本發(fā)明的多個(gè)目的是提供一種虛擬內(nèi)存系統(tǒng),其中I、大小不同或有效大小不同的頁(yè)面映射到連續(xù)虛擬地址空間。2、頁(yè)面有效大小(即頁(yè)面的地址映射到的虛擬地址的數(shù)量)不需要與所述頁(yè)面大小相同。頁(yè)面有效大小可不時(shí)改變。3、頁(yè)面大小或有效大小無(wú)需固定,而是可能會(huì)因頁(yè)面不同而有所不同,并且可以是任意方便的大小。頁(yè)面大小或有效大小不依賴于任何頁(yè)框大小。4、頁(yè)面具有未用、未映射或備用空間。頁(yè)面中的未用、未映射或備用空間可不時(shí)改變。頁(yè)面無(wú)需存儲(chǔ)與頁(yè)面大小相等的數(shù)據(jù),可擁有未用空間,從而存儲(chǔ)不等數(shù)量的數(shù)據(jù)。5、頁(yè)面的物理地址無(wú)需在固定邊界對(duì)齊。頁(yè)面映射到的虛擬地址無(wú)需在固定邊界對(duì)齊。6、一個(gè)頁(yè)表項(xiàng)可將兩個(gè)或兩個(gè)以上頁(yè)面,或者兩個(gè)或兩個(gè)以上頁(yè)面的部分內(nèi)容映射到虛擬地址空間。若干頁(yè)表項(xiàng)映射到一個(gè)頁(yè)面或一個(gè)頁(yè)面的部分。7、為虛擬內(nèi)存區(qū)域的任何部分提供細(xì)粒度訪問(wèn)控制和保護(hù)。為大小可變或不同大小頁(yè)面提供訪問(wèn)控制和保護(hù)。此外,可為頁(yè)面一部分提供訪問(wèn)控制和保護(hù)。8、提供在虛擬內(nèi)存區(qū)域遷移、插入和刪除任意量數(shù)據(jù)的方法,遷移、插入或刪除這些操作不需要大規(guī)模復(fù)制物理內(nèi)存中的數(shù)據(jù)。9、提供創(chuàng)建和管理有效內(nèi)存映射功能及程序的方法。此外,還提供創(chuàng)建和管理有效虛擬查找表的方法。提供的虛擬查找表操作不要求對(duì)目標(biāo)查找表項(xiàng)之外的查找表項(xiàng)值進(jìn)行計(jì)算。10、提供優(yōu)化方法,以優(yōu)化使用轉(zhuǎn)換旁視緩沖器中有限數(shù)量頁(yè)表項(xiàng)。根據(jù)隨后的說(shuō)明和附圖,本發(fā)明的進(jìn)一步目的和優(yōu)點(diǎn)會(huì)更清楚地體現(xiàn)出來(lái)。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,提供創(chuàng)建映射大小可變或不同大小頁(yè)面的虛擬內(nèi)存系統(tǒng)的裝置和方法。本發(fā)明可將大小可變頁(yè)面映射到虛擬地址空間。因此,使用該發(fā)明時(shí),存儲(chǔ)在頁(yè)面中的數(shù)據(jù)量可能會(huì)因頁(yè)面不同而有所不同。附圖
圖I顯示了本發(fā)明內(nèi)存管理單元101的示意圖。圖2A顯示了虛擬地址空間。圖2B顯示了物理地址空間。圖3顯示了虛擬地址。圖4顯示了頁(yè)表結(jié)構(gòu)。圖5顯示了頁(yè)表項(xiàng)結(jié)構(gòu)。圖6顯示了映射項(xiàng)結(jié)構(gòu)。圖7顯示了轉(zhuǎn)換描述符選擇模塊的工作情況。圖8顯示了地址計(jì)算模塊的工作情況。圖9顯示了將大小可變頁(yè)面映射到虛擬地址空間的示意圖。
圖11顯示了本發(fā)明內(nèi)存管理單元1101的示意圖。圖12顯示了轉(zhuǎn)換旁視緩沖器。圖21顯示了本發(fā)明內(nèi)存管理單元2101的示意圖。圖22顯示了轉(zhuǎn)換旁視緩沖器2201。圖31顯示了本發(fā)明的虛擬內(nèi)存區(qū)域3101。圖32A顯示了大小可變頁(yè)面3201。圖32B顯示了大小可變頁(yè)面3202。圖33顯示了頁(yè)數(shù)據(jù)庫(kù)3301。圖34顯示了將若干頁(yè)面3201和3202映射到虛擬地址空間201的情況。圖38A顯示了典型內(nèi)存區(qū)域3801。圖38B顯示了在遷移某些現(xiàn)有數(shù)據(jù)和插入新數(shù)據(jù)之后的典型內(nèi)存區(qū)域3801。圖41顯示了虛擬內(nèi)存區(qū)域4101的示意圖。圖51顯示了虛擬查找表5101的示意圖。本發(fā)明詳細(xì)說(shuō)明參考優(yōu)選實(shí)施例和附圖,本發(fā)明描述如下。但是,所述附圖僅說(shuō)明本發(fā)明,不限制本發(fā)明。圖I顯示了本發(fā)明優(yōu)選實(shí)施例的示意圖。相應(yīng)地,內(nèi)存管理單元101包括虛擬地址空間201、物理地址空間202、頁(yè)表401、頁(yè)表項(xiàng)選擇模塊701、轉(zhuǎn)換描述符選擇模塊702、地址計(jì)算模塊801、頁(yè)面出錯(cuò)處理程序(頁(yè)面出錯(cuò)處理器)901以及訪問(wèn)控制器1001。
圖2A顯示了虛擬地址空間。虛擬地址空間201包括若干(一些)虛擬地址。圖2B顯示了物理地址空間。物理地址空間202包括若干頁(yè)面203。每個(gè)頁(yè)面203包括若干物理地址。圖3顯示了虛擬地址301。虛擬地址分為頁(yè)碼302和頁(yè)偏移量303。圖4顯不了頁(yè)表401。該頁(yè)表包括若干頁(yè)表項(xiàng)501。圖5顯不了頁(yè)表項(xiàng)501。頁(yè)表項(xiàng)包括一個(gè)或多個(gè)映射項(xiàng)601。圖6顯示了映射項(xiàng)601。映射項(xiàng)是轉(zhuǎn)換描述符,包括物理地址映射的虛擬地址,如下所述。映射項(xiàng)包括LAB字段602、PAB字段603、BC字段604、存在位字段605、訪問(wèn)位字段606、臟位字段607、只讀位字段608、只寫位字段609以及執(zhí)行位字段610。 LAB字段包括一個(gè)虛擬地址。PAB字段包括一個(gè)物理地址。BC字段包括若干字節(jié)。映射項(xiàng)將若干虛擬地址映射到相同數(shù)量的物理地址。LAB和PAB包括完整的地址,并且未刪節(jié)低位。頁(yè)表項(xiàng)選擇模塊701通過(guò)使用所接收虛擬地址的頁(yè)碼302作為頁(yè)表索引來(lái)選擇頁(yè)表項(xiàng)。圖7顯不了轉(zhuǎn)換描述符號(hào)選擇模塊702。轉(zhuǎn)換描述符號(hào)選擇模塊702嘗試在所選頁(yè)表項(xiàng)中選擇合適的映射項(xiàng)。如果設(shè)置了存在位字段,虛擬地址大于或等于LAB值且虛擬地址小于LAB和BC值之和,則認(rèn)為適合選擇映射項(xiàng)。圖8顯示了地址計(jì)算模塊801的工作情況。地址計(jì)算模塊801通過(guò)將頁(yè)偏移量303和所選映射項(xiàng)的PAB值相加來(lái)計(jì)算指定虛擬地址的物理地址。圖9顯示了內(nèi)存管理單元101的工作情況。在使用虛擬地址進(jìn)行數(shù)據(jù)訪問(wèn)期間,頁(yè)選擇模塊選擇頁(yè)表項(xiàng);轉(zhuǎn)換描述符選擇模塊在所選頁(yè)表項(xiàng)中選擇映射項(xiàng)。地址計(jì)算模塊計(jì)算物理地址,如上所述。系統(tǒng)在計(jì)算出的物理地址訪問(wèn)數(shù)據(jù)。然而,如果不能選擇合適的頁(yè)表項(xiàng)或合適的映射項(xiàng),則會(huì)導(dǎo)致頁(yè)面出錯(cuò)。頁(yè)面出錯(cuò)處理程序901會(huì)對(duì)頁(yè)面出錯(cuò)進(jìn)行處理。頁(yè)面出錯(cuò)處理程序編寫一個(gè)合適的頁(yè)面并在頁(yè)表項(xiàng)中插入合適的映射項(xiàng)。然后,頁(yè)面出錯(cuò)處理程序?qū)⒖刂品祷亟o系統(tǒng),并且內(nèi)存訪問(wèn)操作重
啟O當(dāng)訪問(wèn)映射項(xiàng)映射的內(nèi)存區(qū)域時(shí),內(nèi)存管理單元在映射項(xiàng)中設(shè)置訪問(wèn)位字段。當(dāng)訪問(wèn)內(nèi)存進(jìn)行寫操作時(shí),內(nèi)存管理單元設(shè)置臟位字段。映射項(xiàng)中的訪問(wèn)位字段和臟位字段用來(lái)執(zhí)行替換策略。配置訪問(wèn)控制器1001用于執(zhí)行內(nèi)存保護(hù)和控制策略。需要時(shí),訪問(wèn)控制器在映射項(xiàng)中設(shè)置只讀位字段、只寫位字段和執(zhí)行位字段,以提供所需的訪問(wèn)控制,如下所述。如果在映射項(xiàng)中設(shè)置了只讀位字段,則嘗試修改映射項(xiàng)所映射內(nèi)存區(qū)域的數(shù)據(jù)時(shí),內(nèi)存管理單元會(huì)產(chǎn)生異?;蚬收?。如果設(shè)置了只寫位字段,則嘗試讀取映射項(xiàng)所映射內(nèi)存區(qū)域的數(shù)據(jù)時(shí),內(nèi)存管理單元會(huì)產(chǎn)生異?;蚬收稀H绻丛O(shè)置執(zhí)行位字段,則嘗試執(zhí)行映射項(xiàng)所映射內(nèi)存區(qū)域的數(shù)據(jù)時(shí),內(nèi)存管理單元會(huì)產(chǎn)生異?;蚬收?。利用適當(dāng)?shù)奶幚沓绦蚩商幚磉@些異常或故障情況。映射項(xiàng)所映射的字節(jié)數(shù)不是固定的,而是需要時(shí)可能會(huì)發(fā)生變化。映射項(xiàng)所映射的字節(jié)數(shù)無(wú)需為一個(gè)或多個(gè)具體的頁(yè)面大小的倍數(shù)。映射的字節(jié)數(shù)無(wú)需為二的倍數(shù)或二的次方。映射項(xiàng)所映射的開(kāi)始虛擬地址和結(jié)束虛擬地址無(wú)需在虛擬地址空間任何特定邊界對(duì)齊,而是需要時(shí)可能會(huì)發(fā)生變化。映射項(xiàng)所映射的開(kāi)始和結(jié)束物理地址無(wú)需在物理地址空間任何特定邊界對(duì)齊,而是需要時(shí)可能會(huì)發(fā)生變化。映射項(xiàng)從而將整個(gè)或部分頁(yè)面映射到虛擬地址空間。頁(yè)面的許多區(qū)域可使用一個(gè)或多個(gè)頁(yè)表項(xiàng)中的一個(gè)或多個(gè)映射項(xiàng)映射到虛擬地址空間。由于映射項(xiàng)能將頁(yè)面中任意量數(shù)據(jù)映射到虛擬地址空間,因此頁(yè)面可保留未用、備用或未映射空間。該備用空間可隨后映射到虛擬地址空間,并且可用于插入和刪除數(shù)據(jù),如隨后所述。正如所見(jiàn),虛擬內(nèi)存系統(tǒng)能在虛擬地址空間映射許多任意大小或任意有效大小的頁(yè)面。頁(yè)面大小和有效大小不是固定的,而是無(wú)需相同。虛擬內(nèi)存區(qū)域頁(yè)面的大小和有效大小無(wú)需分別等于所述虛擬內(nèi)存區(qū)域另一個(gè)頁(yè)面的大小和有效大小。頁(yè)面的物理地址無(wú)需在固定邊界對(duì)齊。頁(yè)面第一個(gè)地址映射到的虛擬地址無(wú)需在固定邊界對(duì)齊。圖11顯示了本發(fā)明另一個(gè)優(yōu)選實(shí)施例的示意圖。相應(yīng)地,內(nèi)存管理單元1101包括虛擬地址空間201、物理地址空間202、轉(zhuǎn)換旁視緩沖器1201、頁(yè)表項(xiàng)501、映射項(xiàng)601、頁(yè) 表項(xiàng)選擇模塊701、轉(zhuǎn)換描述符選擇模塊702、地址計(jì)算模塊801、頁(yè)面出錯(cuò)處理程序901和訪問(wèn)控制器1001。圖12顯示了轉(zhuǎn)換旁視緩沖器1201。轉(zhuǎn)換旁視緩沖器包括一個(gè)或多個(gè)頁(yè)表項(xiàng)501。轉(zhuǎn)換旁視緩沖器中的每個(gè)頁(yè)表項(xiàng)與頁(yè)碼有關(guān)。訪問(wèn)虛擬內(nèi)存地址時(shí),選擇模塊使用頁(yè)碼來(lái)選擇轉(zhuǎn)換旁視緩沖器中的頁(yè)表項(xiàng)。如果選擇了合適的頁(yè)表項(xiàng),則嘗試在所選頁(yè)表項(xiàng)中選擇合適的映射項(xiàng),如前文所述。地址計(jì)算模塊計(jì)算物理地址,如前文所述。系統(tǒng)現(xiàn)在可以在計(jì)算出的物理地址訪問(wèn)數(shù)據(jù)。如果不能選擇合適的頁(yè)表項(xiàng)或合適的映射項(xiàng),則內(nèi)存管理單元會(huì)產(chǎn)生頁(yè)面出錯(cuò)。頁(yè)面出錯(cuò)處理程序901會(huì)對(duì)頁(yè)面出錯(cuò)進(jìn)行處理。頁(yè)面出錯(cuò)處理程序編寫一個(gè)物理內(nèi)存區(qū)域或頁(yè)面并在轉(zhuǎn)換旁視緩沖器的頁(yè)表項(xiàng)中插入映射項(xiàng),然后將控制返回給系統(tǒng)。所述實(shí)施例的其他要素已在前文進(jìn)行描述。圖21顯示了本發(fā)明另一個(gè)優(yōu)選實(shí)施例的示意圖。相應(yīng)地,內(nèi)存管理單元2101包括虛擬地址空間201、物理地址空間202、轉(zhuǎn)換旁視緩沖器2201、頁(yè)表項(xiàng)501、映射項(xiàng)601、轉(zhuǎn)換描述符選擇模塊702、地址計(jì)算模塊801、頁(yè)面出錯(cuò)處理程序901和訪問(wèn)控制器1001。圖22顯示了轉(zhuǎn)換旁視緩沖器2201。轉(zhuǎn)換旁視緩沖器包括單個(gè)頁(yè)表項(xiàng)501。頁(yè)表項(xiàng)501包括一個(gè)或多個(gè)映射項(xiàng)601。在所述實(shí)施例中,虛擬地址未分為頁(yè)碼和頁(yè)偏移量。整個(gè)虛擬地址被視為頁(yè)偏移量。當(dāng)在虛擬地址訪問(wèn)內(nèi)存位置時(shí),轉(zhuǎn)換描述符選擇模塊702嘗試從頁(yè)表項(xiàng)501的映射項(xiàng)中選擇合適的映射項(xiàng),如前文所述。地址計(jì)算模塊計(jì)算物理地址,如前文所述。系統(tǒng)現(xiàn)在可以在得出的物理地址訪問(wèn)數(shù)據(jù)。如果不能選擇合適的映射項(xiàng),則內(nèi)存管理單元會(huì)產(chǎn)生頁(yè)面出錯(cuò)。頁(yè)面出錯(cuò)處理程序901會(huì)對(duì)頁(yè)面出錯(cuò)進(jìn)行處理。頁(yè)面出錯(cuò)處理程序編寫一個(gè)相關(guān)的物理內(nèi)存區(qū)域或頁(yè)面并在轉(zhuǎn)換旁視緩沖器的頁(yè)表項(xiàng)中插入合適的映射項(xiàng),然后將控制返回給系統(tǒng)。圖31顯示了本發(fā)明的另一個(gè)實(shí)施例。相應(yīng)地,虛擬內(nèi)存區(qū)域3101包括內(nèi)存管理單元101、大小可變頁(yè)面3201或3202、頁(yè)數(shù)據(jù)庫(kù)3301、數(shù)據(jù)遷移模塊3501、數(shù)據(jù)插入模塊3601和數(shù)據(jù)刪除模塊3701。
圖32A顯示了大小可變頁(yè)面3201(n個(gè)字節(jié)大小)。n的值可因頁(yè)面不同而有所不同。圖32B顯示了頁(yè)面3202,其容量為1024字節(jié),未用或備用空間為91個(gè)字節(jié),有效大小為933個(gè)字節(jié),即所述頁(yè)面的僅933字節(jié)會(huì)映射到虛擬地址空間。所述頁(yè)面的有效大小以及所述頁(yè)面中未用空間大小可能會(huì)因頁(yè)面不同而有所不同并不時(shí)變化。圖33顯示了頁(yè)數(shù)據(jù)庫(kù)3301。頁(yè)數(shù)據(jù)庫(kù)包括若干頁(yè)面3201或3202。頁(yè)數(shù)據(jù)庫(kù)記錄虛擬內(nèi)存區(qū)域的頁(yè)面及其虛擬地址、各個(gè)頁(yè)面的大小和有效大小。頁(yè)面的虛擬地址、大小和有效大小會(huì)不時(shí)變化。圖34顯示了使用內(nèi)存管理單元101或1101的頁(yè)表401將頁(yè)數(shù)據(jù)庫(kù)中若干頁(yè)面3201和3202映射到虛擬地址空間201的示意圖。頁(yè)表401的一個(gè)或多個(gè)頁(yè)表項(xiàng)501中的一個(gè)或多個(gè)映射項(xiàng)601將每個(gè)大小可變頁(yè)面中的地址映射到虛擬地址空間。 數(shù)據(jù)遷移模塊3501將虛擬內(nèi)存區(qū)域的一個(gè)或多個(gè)數(shù)據(jù)元遷移至更高或更低的虛擬地址。數(shù)據(jù)遷移模塊通過(guò)使頁(yè)目錄中的一個(gè)或多個(gè)頁(yè)面與其虛擬地址分離并使所述頁(yè)面與新虛擬地址相關(guān)聯(lián)的方式來(lái)遷移數(shù)據(jù)。因此,數(shù)據(jù)遷移模塊可將內(nèi)存區(qū)域的數(shù)據(jù)遷移至更高或更低的地址,并且無(wú)需物理復(fù)制所述數(shù)據(jù)。數(shù)據(jù)插入模塊3601在虛擬內(nèi)存區(qū)域插入一個(gè)或多個(gè)數(shù)據(jù)元。數(shù)據(jù)插入模塊使用數(shù)據(jù)遷移模塊將一個(gè)或多個(gè)現(xiàn)有數(shù)據(jù)元遷移到新虛擬地址。同時(shí),也配置數(shù)據(jù)插入模塊用于在頁(yè)數(shù)據(jù)庫(kù)中插入新頁(yè)面并使新頁(yè)面與虛擬地址相關(guān)聯(lián)。還配置數(shù)據(jù)插入模塊用于在帶備用容量的頁(yè)面中插入附加數(shù)據(jù)元。數(shù)據(jù)刪除模塊3701刪除虛擬內(nèi)存區(qū)域中的一個(gè)或多個(gè)數(shù)據(jù)元。配置數(shù)據(jù)刪除模塊用于刪除頁(yè)面中的一個(gè)或多個(gè)現(xiàn)有數(shù)據(jù)元,從而增加頁(yè)面的備用容量。同時(shí),也配置數(shù)據(jù)刪除模塊用于使一個(gè)或多個(gè)數(shù)據(jù)元與其映射到的虛擬地址分離。還配置數(shù)據(jù)刪除模塊用于刪除頁(yè)數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)頁(yè)面。此外,數(shù)據(jù)刪除模塊使用數(shù)據(jù)遷移模塊將一個(gè)或多個(gè)數(shù)據(jù)元遷移到新虛擬地址。配置數(shù)據(jù)遷移模塊、數(shù)據(jù)插入模塊和數(shù)據(jù)刪除模塊,用于通過(guò)一項(xiàng)或多項(xiàng)以下操作遷移、插入和刪除虛擬內(nèi)存區(qū)域的數(shù)據(jù)。I、在頁(yè)數(shù)據(jù)庫(kù)中插入一個(gè)或多個(gè)新頁(yè)面。2、刪除頁(yè)數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)現(xiàn)有頁(yè)面。3、用另一個(gè)頁(yè)面更換數(shù)據(jù)庫(kù)中的一個(gè)頁(yè)面。4、重新編排頁(yè)數(shù)據(jù)庫(kù)中的頁(yè)面順序。5、增加頁(yè)數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)頁(yè)面大小。6、減少頁(yè)數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)頁(yè)面大小。7、使頁(yè)數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)頁(yè)面重新關(guān)聯(lián)至虛擬地址空間的更高地址。8、使頁(yè)數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)頁(yè)面重新關(guān)聯(lián)至虛擬地址空間的更低地址。9、通過(guò)以下方式將新數(shù)據(jù)插入現(xiàn)有頁(yè)面即使用所述頁(yè)面的未用空間并增加所述頁(yè)面的有效尺寸。10、從頁(yè)數(shù)據(jù)庫(kù)的頁(yè)面中刪除現(xiàn)有數(shù)據(jù),增加所述頁(yè)面的未用空間并減少所述頁(yè)面的有效大小。11、通過(guò)修改轉(zhuǎn)換旁視緩沖器或頁(yè)表中的一個(gè)或多個(gè)映射項(xiàng)來(lái)重新映射或使現(xiàn)有映射無(wú)效。圖38A和38B顯示了在內(nèi)存區(qū)域遷移和插入數(shù)據(jù)的方法。刪除數(shù)據(jù)的方法和插入數(shù)據(jù)的方法相反。圖38A顯示了典型虛擬內(nèi)存區(qū)域3801包括的若干大小可變頁(yè)面。相應(yīng)地,第I、第
2、第3、第4頁(yè)面在虛擬位置0、63、93和792映射。此外,第I、第2、第3、第4頁(yè)面將63、30,699和17個(gè)字節(jié)分別映射到虛擬地址空間。虛擬地址區(qū)域的總大小為809個(gè)字節(jié)。圖38B顯示了在遷移某些現(xiàn)有數(shù)據(jù)和插入新數(shù)據(jù)之后虛擬內(nèi)存區(qū)域3801包括的頁(yè)面。相應(yīng)地,第3頁(yè)面和第4頁(yè)面分別在地址105和804映射。第5頁(yè)面插入內(nèi)存區(qū)域并在地址93映射。第I頁(yè)面和第2頁(yè)面保持不變。第5頁(yè)面在虛擬地址空間映射的字節(jié)數(shù)為12。虛擬內(nèi)存區(qū)域的新大小為821個(gè)字節(jié)。按這種方式,第3頁(yè)面和第4頁(yè)面中的若干字節(jié)遷移至內(nèi)存區(qū)域中更高的地址并且無(wú)需物理復(fù)制頁(yè)面中的數(shù)據(jù),第5頁(yè)面中的若干字節(jié)插入內(nèi)存區(qū)域。圖41顯示了本發(fā)明的另一個(gè)實(shí)施例。相應(yīng)地,虛擬內(nèi)存區(qū)域4101包括內(nèi)存管理單元101和用戶定義函數(shù)4102。
用戶定義函數(shù)4102由系統(tǒng)、程序設(shè)計(jì)員或用戶配置,以進(jìn)行操作和/或提供數(shù)值。當(dāng)訪問(wèn)虛擬內(nèi)存區(qū)域的虛擬地址時(shí),發(fā)生了頁(yè)面出錯(cuò)。頁(yè)面出錯(cuò)處理程序調(diào)用用戶定義函數(shù)4102。用戶定義函數(shù)配有該虛擬地址作為輸入?yún)?shù),并根據(jù)該參數(shù)進(jìn)行配置操作和/或計(jì)算數(shù)值。該數(shù)值保存在小頁(yè)面中。頁(yè)面出錯(cuò)處理程序使用一個(gè)或多個(gè)映射項(xiàng)在虛擬地址映射該頁(yè)面。現(xiàn)在可在該虛擬地址訪問(wèn)該計(jì)算值。圖51顯示了本發(fā)明的另一個(gè)實(shí)施例。相應(yīng)地,虛擬查找表5101包括虛擬內(nèi)存區(qū)域4101和若干虛擬表項(xiàng)5102。虛擬內(nèi)存區(qū)域的一個(gè)或多個(gè)虛擬地址代表一個(gè)虛擬表項(xiàng)。虛擬內(nèi)存區(qū)域的所有虛擬表項(xiàng)一起代表虛擬查找表。當(dāng)訪問(wèn)虛擬查找表中的項(xiàng)時(shí),發(fā)生了頁(yè)面出錯(cuò)。頁(yè)面出錯(cuò)處理程序調(diào)用用戶定義函數(shù)4102。用戶定義函數(shù)計(jì)算數(shù)值。該計(jì)算值保存在隨后會(huì)在合適的虛擬地址映射的小頁(yè) 面中。同樣地,無(wú)需計(jì)算虛擬查找表中訪問(wèn)項(xiàng)之外的項(xiàng)的值。通過(guò)在映射項(xiàng)中設(shè)置只讀位字段也可為查找表中的項(xiàng)提供保護(hù)。然而,如果未使用只讀保護(hù),則可使用虛擬地址修改查找表中的項(xiàng)。任何此類修改可在后續(xù)操作中用作用戶定義函數(shù)輸入。用戶定義函數(shù)也可使用保存在其他虛擬查找表或虛擬內(nèi)存區(qū)域中的數(shù)值。發(fā)明優(yōu)點(diǎn)除了上述優(yōu)點(diǎn)之外,本發(fā)明還有許多其他優(yōu)點(diǎn)。例如,本發(fā)明簡(jiǎn)化了許多數(shù)據(jù)結(jié)構(gòu)及其使用,從而提高了計(jì)算機(jī)效率。本發(fā)明對(duì)使用若干不同大小網(wǎng)絡(luò)數(shù)據(jù)包創(chuàng)建虛擬內(nèi)存區(qū)域有用。本發(fā)明也對(duì)創(chuàng)建帶任意大小孔的內(nèi)存區(qū)域有用。發(fā)明范圍
本發(fā)明可使用頁(yè)表、轉(zhuǎn)換旁視緩沖器或任何其它合適的機(jī)制來(lái)實(shí)施。本發(fā)明也可以在多個(gè)級(jí)別實(shí)施,使一個(gè)級(jí)別的物理地址成為另一個(gè)級(jí)別的虛擬地址。可通過(guò)增加頁(yè)目錄、分段等支持,對(duì)分頁(yè)地址轉(zhuǎn)換機(jī)制進(jìn)行擴(kuò)展。映射項(xiàng)結(jié)構(gòu)的一些變化能夠縮小頁(yè)表項(xiàng)或TLB項(xiàng)的大小。例如,可以通過(guò)刪除一些高位來(lái)縮短LAB字段,因?yàn)檫@些位的數(shù)值暗含在頁(yè)碼中。對(duì)于帶有兩個(gè)映射項(xiàng)的頁(yè)表項(xiàng),無(wú)需第二個(gè)映射項(xiàng)的LAB,因?yàn)檫@一數(shù)值只要通過(guò)前一項(xiàng)的LAB+BC即可獲得。另外,第二個(gè)映射項(xiàng)PAB的多個(gè)低位可以刪除,因?yàn)樵谶m當(dāng)情況下,它們的數(shù)值可以為零。優(yōu)選實(shí)施例顯示出一個(gè)字節(jié)的內(nèi)存映射粒度。可以通過(guò)使用其它的數(shù)據(jù)類型(例如位、字、雙字或其它的記錄類型)來(lái)修改映射過(guò)程的粒度。使用本發(fā)明能夠?qū)崿F(xiàn)通過(guò)單個(gè)頁(yè)表項(xiàng)對(duì)多個(gè)頁(yè)面進(jìn)行映射,或?qū)崿F(xiàn)將多個(gè)頁(yè)面映射到單個(gè)頁(yè)框中。頁(yè)表項(xiàng)的使用還可以實(shí)現(xiàn)通過(guò)多個(gè)頁(yè)表項(xiàng)來(lái)對(duì)單個(gè)頁(yè)面進(jìn)行映射,或者實(shí)現(xiàn)將單個(gè)頁(yè)面映射到多個(gè)頁(yè)框中。另外,無(wú)需同時(shí)映射某個(gè)頁(yè)框中的所有地址,頁(yè)表項(xiàng)也能用于僅僅將頁(yè)框的一部分映射到物 理內(nèi)存中。本發(fā)明還包括一臺(tái)具有一個(gè)或多個(gè)上述特點(diǎn)的電腦或其它電子設(shè)備。盡管上文描述包括許多特征,但這些特征不得解釋為發(fā)明范圍的限制條件,而應(yīng)是優(yōu)選實(shí)施例的一個(gè)范例??赡苓€有許多其它的變化。
權(quán)利要求
1.將物理地址空間映射到虛擬地址空間的內(nèi)存管理單元,包括 a、一個(gè)虛擬地址空間,包括若干虛擬地址; b、一個(gè)物理地址空間,包括若干頁(yè)面,每個(gè)頁(yè)面包括一個(gè)或多個(gè)物理地址; C、一個(gè)或多個(gè)轉(zhuǎn)換描述符;以及 d、一臺(tái)保持若干虛擬地址與若干物理地址之間關(guān)聯(lián)性的裝置,所述裝置通過(guò)以下方式保持若干虛擬地址與若干物理地址之間關(guān)聯(lián)性 i、保持若干虛擬地址與一個(gè)轉(zhuǎn)換描述符之間的關(guān)聯(lián)性;以及 ii、保持一個(gè)轉(zhuǎn)換描述符與頁(yè)面中若干物理地址之間的關(guān)聯(lián)性; 其中, 1.轉(zhuǎn)換描述符所映射的地址數(shù)量不等于2n,n為自然數(shù);或 ii、與轉(zhuǎn)換描述符相關(guān)聯(lián)的虛擬地址數(shù)量不等于2n,n為自然數(shù);或 iii、與轉(zhuǎn)換描述符相關(guān)聯(lián)的物理地址數(shù)量不等于2n,n為自然數(shù)。
2.將物理地址空間映射到虛擬地址空間的內(nèi)存管理單元,包括 a、一個(gè)虛擬地址空間,包括若干虛擬地址; b、一個(gè)物理地址空間,包括若干頁(yè)面,每個(gè)頁(yè)面包括一個(gè)或多個(gè)物理地址; C、一個(gè)或多個(gè)轉(zhuǎn)換描述符;以及 d、一臺(tái)保持若干虛擬地址與若干物理地址之間關(guān)聯(lián)性的裝置,所述裝置通過(guò)以下方式保持若干虛擬地址與若干物理地址之間關(guān)聯(lián)性 i、保持虛擬地址空間中一個(gè)或多個(gè)虛擬地址范圍與一個(gè)轉(zhuǎn)換描述符的關(guān)聯(lián)性;以及 ii、保持一個(gè)轉(zhuǎn)換描述符與一個(gè)或多個(gè)物理地址范圍的關(guān)聯(lián)性; 其中, i、在與轉(zhuǎn)換描述符相關(guān)的一系列虛擬地址中,第一個(gè)虛擬地址不是所述轉(zhuǎn)換描述符所映射地址數(shù)量的倍數(shù);或 ii、在與轉(zhuǎn)換描述符相關(guān)的一系列物理地址中,第一個(gè)物理地址不是所述轉(zhuǎn)換描述符所映射地址數(shù)量的倍數(shù)。
3.將物理地址空間映射到虛擬地址空間的內(nèi)存管理單元,包括 a、一個(gè)虛擬地址空間,包括若干虛擬地址; b、一個(gè)物理地址空間,包括若干頁(yè)面,每個(gè)頁(yè)面包括一個(gè)或多個(gè)物理地址; C、一個(gè)或多個(gè)轉(zhuǎn)換描述符;以及 d、一臺(tái)保持若干虛擬地址與若干物理地址之間關(guān)聯(lián)性的裝置,所述裝置通過(guò)以下方式保持若干虛擬地址與若干物理地址之間關(guān)聯(lián)性 i、保持若干虛擬地址與一個(gè)轉(zhuǎn)換描述符之間的關(guān)聯(lián)性;以及 ii、保持一個(gè)轉(zhuǎn)換描述符與若干物理地址之間的關(guān)聯(lián)性; 其中, i、虛擬地址中包含頁(yè)偏移量的位的數(shù)值不等于與所述虛擬地址相關(guān)的物理地址中相應(yīng)位的數(shù)值;或 ii、虛擬地址中的頁(yè)偏移量不等于與所述虛擬地址相關(guān)的物理地址與所述相關(guān)物理地址所在頁(yè)的物理地址之間的差值。
4.將物理地址空間映射到虛擬地址空間的內(nèi)存管理單元,包括a、一個(gè)虛擬地址空間,包括若干虛擬地址; b、一個(gè)物理地址空間,包括若干頁(yè)面,每個(gè)頁(yè)面包括一個(gè)或多個(gè)物理地址; C、一個(gè)或多個(gè)轉(zhuǎn)換描述符;以及 d、一臺(tái)保持若干虛擬地址與若干物理地址之間關(guān)聯(lián)性的裝置,所述裝置通過(guò)以下方式保持若干虛擬地址與若干物理地址之間關(guān)聯(lián)性 i、保持若干虛擬地址與一個(gè)轉(zhuǎn)換描述符之間的關(guān)聯(lián)性;以及 ii、保持一個(gè)轉(zhuǎn)換描述符與若干物理地址之間的關(guān)聯(lián)性; 其中,頁(yè)面大小或有效大小不等于2n,n為自然數(shù),所述頁(yè)面不包含被映射到虛擬地址空間中最高或最低虛擬地址的物理地址。
5.將物理地址空間映射到虛擬地址空間的內(nèi)存管理單元,包括 a、一個(gè)虛擬地址空間,包括若干虛擬地址; b、一個(gè)物理地址空間,包括若干頁(yè)面,每個(gè)頁(yè)面包括一個(gè)或多個(gè)物理地址; C、一個(gè)或多個(gè)轉(zhuǎn)換描述符;以及 d、一臺(tái)保持若干虛擬地址與若干物理地址之間關(guān)聯(lián)性的裝置,所述裝置通過(guò)以下方式保持若干虛擬地址與若干物理地址之間關(guān)聯(lián)性 i、保持若干虛擬地址與一個(gè)轉(zhuǎn)換描述符之間的關(guān)聯(lián)性;以及 ii、保持一個(gè)轉(zhuǎn)換描述符與若干物理地址之間的關(guān)聯(lián)性; 其中,一個(gè)頁(yè)面包括被映射到一個(gè)虛擬地址空間的若干物理地址,而且所述頁(yè)面還包括備用空間,備用空間是所述頁(yè)面中能夠被映射到虛擬地址空間、但沒(méi)有被映射到虛擬地址空間的若干物理地址。
6.如權(quán)利要求1、2、3、4或5所述的內(nèi)存管理單元,其中,一個(gè)轉(zhuǎn)換描述符配置后用于向與所述轉(zhuǎn)換描述符相關(guān)的一個(gè)或多個(gè)虛擬地址提供訪問(wèn)控制。
7.如權(quán)利要求1、2、3、4、5或6所述的內(nèi)存管理單元,其中,頁(yè)面映射的虛擬地址不是 i、所述頁(yè)面大小的倍數(shù);或 i i、所述頁(yè)面有效大小的倍數(shù)。
8.如權(quán)利要求1、2、3、4、5或6所述的內(nèi)存管理單元,其中,頁(yè)面的物理地址不是 i、所述頁(yè)面大小的倍數(shù);或 i i、所述頁(yè)面有效大小的倍數(shù)。
9.如權(quán)利要求1、2、3、4、5或6所述的內(nèi)存管理單元,其中,頁(yè)面大小不等于2n,n為自然數(shù)。
10.如權(quán)利要求1、2、3、4、5或6所述的內(nèi)存管理單元,其中,被映射到虛擬地址空間的頁(yè)面的大小大于同樣被映射到所述虛擬地址空間另外一個(gè)頁(yè)面的大小,而所述另外一個(gè)頁(yè)面的大小大于I。
11.如權(quán)利要求10所述的內(nèi)存管理單元,其中,所述頁(yè)面的大小不是所述另外一個(gè)頁(yè)面的大小的倍數(shù)。
12.如權(quán)利要求1、2、3、4、5或6所述的內(nèi)存管理單元,其中,頁(yè)面的有效大小不等于2n,n為自然數(shù)。
13.如權(quán)利要求1、2、3、4、5或6所述的內(nèi)存管理單元,其中,被映射到虛擬地址空間的頁(yè)面的有效大小大于同樣被映射到所述虛擬地址空間另外一個(gè)頁(yè)面的有效大小,而所述另外一個(gè)頁(yè)面的有效大小大于I。
14.如權(quán)利要求13所述的內(nèi)存管理單元,其中,所述頁(yè)面的有效大小不是所述另外一個(gè)頁(yè)面的有效大小的倍數(shù)。
15.如權(quán)利要求1、2、3、4、5或6所述的內(nèi)存管理單元,其中,將頁(yè)面中一個(gè)物理地址映射到虛擬地址的頁(yè)表項(xiàng)并不是將所述頁(yè)面中一個(gè)或多個(gè)其它物理地址映射到所述虛擬地址的頁(yè)表項(xiàng)。
16.如權(quán)利要求1、2、3、4、5或6所述的內(nèi)存管理單元,其中,一個(gè)頁(yè)表項(xiàng)將包括在一個(gè)頁(yè)面中的一個(gè)物理地址映射到一個(gè)虛擬地址中,并將包括在另一個(gè)頁(yè)面中的一個(gè)物理地址映射到所述虛擬地址中。
17.如權(quán)利要求1、2、3、4、5或6所述的內(nèi)存管理單元,其中,頁(yè)面的大小或有效大小不是物理地址數(shù)量的倍數(shù),所述物理地址數(shù)量是與單個(gè)轉(zhuǎn)換描述符相關(guān)的所述頁(yè)面中所包含的物理地址數(shù)量。
18.如權(quán)利要求1、2、3、4、5或6所述的內(nèi)存管理單元,其中,虛擬地址與一個(gè)程序相關(guān)聯(lián),當(dāng)訪問(wèn)所述虛擬地址時(shí),所述程序由出錯(cuò)處理程序調(diào)用。
19.如權(quán)利要求18所述的內(nèi)存管理單元,其中,所述程序在頁(yè)面中存儲(chǔ)有數(shù)值,并將所述頁(yè)面映射到所述虛擬地址空間中。
20.如權(quán)利要求18所述的內(nèi)存管理單元,其中,所述程序是可進(jìn)行配置的。
21.如權(quán)利要求18所述的內(nèi)存管理單元,還包括一個(gè)虛擬查找表,所述虛擬查找表包括若干查找表項(xiàng),各查找表項(xiàng)與一個(gè)或多個(gè)虛擬地址相關(guān)聯(lián); 其中,當(dāng)訪問(wèn)與所述查找表項(xiàng)相關(guān)的虛擬地址時(shí),所述程序?qū)⒋_定與所述查找表項(xiàng)相應(yīng)的數(shù)值,將所述數(shù)值存儲(chǔ)在頁(yè)面中,并將所述頁(yè)面映射到虛擬地址空間中。
22.如權(quán)利要求21所述的內(nèi)存管理單元,其中,如果沒(méi)有訪問(wèn)與所述查找表項(xiàng)相關(guān)的虛擬地址,那么無(wú)需計(jì)算查找表項(xiàng)數(shù)值或?qū)⒉檎冶眄?xiàng)數(shù)值存儲(chǔ)到虛擬地址空間中。
23.如權(quán)利要求1、2、3、4、5或6所述的內(nèi)存管理單元,還包括 a、一個(gè)虛擬內(nèi)存區(qū)域,包括邏輯存儲(chǔ)于虛擬地址空間內(nèi)若干虛擬地址中的若干數(shù)據(jù)元;以及 b、一個(gè)數(shù)據(jù)遷移模塊,用于通過(guò) i、將一個(gè)或多個(gè)頁(yè)面中的一個(gè)或多個(gè)物理地址從其現(xiàn)在的虛擬地址中分離出來(lái),以及 ii、將所述的一個(gè)或多個(gè)物理地址與新的虛擬地址結(jié)合起來(lái); 將所述虛擬內(nèi)存區(qū)域中一個(gè)或多個(gè)數(shù)據(jù)元從其現(xiàn)在的虛擬地址遷移到所述虛擬地址空間中的新虛擬地址中。
24.如權(quán)利要求23所述的內(nèi)存管理單元,其中,遷移到新位置的物理地址的數(shù)量等于2n, n為自然數(shù)。
25.如權(quán)利要求23所述的內(nèi)存管理單元,其中,遷移到新位置的物理地址的數(shù)量不等于2n,n為自然數(shù)。
26.如權(quán)利要求23所述的內(nèi)存管理單元,還包括 一個(gè)數(shù)據(jù)插入模塊,用于通過(guò) a、促使所述數(shù)據(jù)遷移模塊將一個(gè)或多個(gè)現(xiàn)有數(shù)據(jù)元遷移到新的虛擬地址中,以及 b、在頁(yè)面中映射一個(gè)附加物理地址,所述附加物理地址還未映射到比另一個(gè)物理地址所映射到的虛擬地址更低的虛擬地址中; 以在所述虛擬內(nèi)存區(qū)域中插入一個(gè)或多個(gè)附加數(shù)據(jù)元。
27.如權(quán)利要求23所述的內(nèi)存管理單元,還包括 一個(gè)數(shù)據(jù)刪除模塊,用于通過(guò) a、從物理地址所映射到的虛擬地址中取消所述物理地址的映射;以及 b、促使所述數(shù)據(jù)遷移模塊將一個(gè)或多個(gè)現(xiàn)有數(shù)據(jù)元遷移到新的虛擬地址中; 以刪除所述虛擬內(nèi)存區(qū)域中一個(gè)或多個(gè)數(shù)據(jù)元。
28.將內(nèi)存管理單元中物理地址空間映射到虛擬地址空間的方法,包括 a、提供一個(gè)虛擬地址空間,包括若干虛擬地址; b、提供一個(gè)物理地址空間,包括若干頁(yè)面,每個(gè)頁(yè)面包括一個(gè)或多個(gè)物理地址; C、提供一個(gè)或多個(gè)轉(zhuǎn)換描述符;以及 d、通過(guò) i、保持若干虛擬地址與一個(gè)轉(zhuǎn)換描述符之間的關(guān)聯(lián)性;以及 ii、保持一個(gè)轉(zhuǎn)換描述符與頁(yè)面中若干物理地址之間的關(guān)聯(lián)性; 以保持若干虛擬地址與若干物理地址之間的關(guān)聯(lián)性; 其中, i、轉(zhuǎn)換描述符所映射的地址數(shù)量不等于2n,n為自然數(shù);或 ii、與轉(zhuǎn)換描述符相關(guān)聯(lián)的虛擬地址數(shù)量不等于2n,n為自然數(shù);或 iii、與轉(zhuǎn)換描述符相關(guān)聯(lián)的物理地址數(shù)量不等于2n,n為自然數(shù)。
29.將內(nèi)存管理單元中物理地址空間映射到虛擬地址空間的方法,包括 a、提供一個(gè)虛擬地址空間,包括若干虛擬地址; b、提供一個(gè)物理地址空間,包括若干頁(yè)面,每個(gè)頁(yè)面包括一個(gè)或多個(gè)物理地址; C、提供一個(gè)或多個(gè)轉(zhuǎn)換描述符;以及 d、提供一臺(tái)保持若干虛擬地址與若干物理地址之間關(guān)聯(lián)性的裝置,所述裝置通過(guò)以下方式保持若干虛擬地址與若干物理地址之間關(guān)聯(lián)性 i、保持虛擬地址空間中一個(gè)或多個(gè)虛擬地址范圍與一個(gè)轉(zhuǎn)換描述符的關(guān)聯(lián)性;以及 ii、保持一個(gè)轉(zhuǎn)換描述符與一個(gè)或多個(gè)物理地址范圍的關(guān)聯(lián)性; 其中, i、在與轉(zhuǎn)換描述符相關(guān)的一系列虛擬地址中,第一個(gè)虛擬地址不是所述轉(zhuǎn)換描述符所映射地址數(shù)量的倍數(shù);或 ii、在與轉(zhuǎn)換描述符相關(guān)的一系列物理地址中,第一個(gè)物理地址不是所述轉(zhuǎn)換描述符所映射地址數(shù)量的倍數(shù)。
30.將內(nèi)存管理單元中物理地址空間映射到虛擬地址空間的方法,包括 a、提供一個(gè)虛擬地址空間,包括若干虛擬地址; b、提供一個(gè)物理地址空間,包括若干頁(yè)面,每個(gè)頁(yè)面包括一個(gè)或多個(gè)物理地址; C、提供一個(gè)或多個(gè)轉(zhuǎn)換描述符;以及 d、通過(guò) i、保持若干虛擬地址與一個(gè)轉(zhuǎn)換描述符之間的關(guān)聯(lián)性;以及 ii、保持一個(gè)轉(zhuǎn)換描述符與若干物理地址之間的關(guān)聯(lián)性;以保持若干虛擬地址與若干物理地址之間的關(guān)聯(lián)性; 其中, i、虛擬地址中包含頁(yè)偏移量的位的數(shù)值不等于與所述虛擬地址相關(guān)的物理地址中相應(yīng)位的數(shù)值;或 ii、虛擬地址中的頁(yè)偏移量不等于與所述虛擬地址相關(guān)的物理地址與所述相關(guān)物理地址所在頁(yè)的物理地址之間的差值。
31.將內(nèi)存管理單元中物理地址空間映射到虛擬地址空間的方法,包括 a、提供一個(gè)虛擬地址空間,包括若干虛擬地址; b、提供一個(gè)物理地址空間,包括若干頁(yè)面,每個(gè)頁(yè)面包括一個(gè)或多個(gè)物理地址; C、提供一個(gè)或多個(gè)轉(zhuǎn)換描述符;以及 d、通過(guò) i、保持若干虛擬地址與一個(gè)轉(zhuǎn)換描述符之間的關(guān)聯(lián)性;以及 ii、保持一個(gè)轉(zhuǎn)換描述符與若干物理地址之間的關(guān)聯(lián)性; 以保持若干虛擬地址與若干物理地址之間的關(guān)聯(lián)性; 其中,頁(yè)面的大小或有效大小不等于2n,n為自然數(shù)。
32.將內(nèi)存管理單元中物理地址空間映射到虛擬地址空間的方法,包括 a、提供一個(gè)虛擬地址空間,包括若干虛擬地址; b、提供一個(gè)物理地址空間,包括若干頁(yè)面,每個(gè)頁(yè)面包括一個(gè)或多個(gè)物理地址; C、提供一個(gè)或多個(gè)轉(zhuǎn)換描述符;以及 d、通過(guò) i、保持若干虛擬地址與一個(gè)轉(zhuǎn)換描述符之間的關(guān)聯(lián)性;以及 ii、保持一個(gè)轉(zhuǎn)換描述符與若干物理地址之間的關(guān)聯(lián)性; 以保持若干虛擬地址與若干物理地址之間的關(guān)聯(lián)性; 其中,一個(gè)頁(yè)面包括被映射到一個(gè)虛擬地址空間的若干物理地址,而且所述頁(yè)面還包括備用空間,備用空間是所述頁(yè)面中能夠被映射到虛擬地址空間、但沒(méi)有被映射到虛擬地址空間的若干物理地址。
33.將內(nèi)存管理單元中物理地址空間映射到虛擬地址空間的方法,其中,一個(gè)轉(zhuǎn)換描述符配置后用于向與所述轉(zhuǎn)換描述符相關(guān)的一個(gè)或多個(gè)虛擬地址提供訪問(wèn)控制。
34.如權(quán)利要求28、29、30、31、32或33所述的方法,其中,頁(yè)面映射的虛擬地址不是 i、所述頁(yè)面大小的倍數(shù);或 i i、所述頁(yè)面有效大小的倍數(shù)。
35.如權(quán)利要求28、29、30、31、32或33所述的方法,其中,頁(yè)面的物理地址不是 i、所述頁(yè)面大小的倍數(shù);或 i i、所述頁(yè)面有效大小的倍數(shù)。
36.如權(quán)利要求28、29、30、31、32或33所述的方法,其中,頁(yè)面的大小不等于2n,n為自然數(shù)。
37.如權(quán)利要求28、29、30、31、32或33所述的方法,其中,被映射到虛擬地址空間的頁(yè)面的大小大于同樣被映射到所述虛擬地址空間另外一個(gè)頁(yè)面的大小,而所述另外一個(gè)頁(yè)面的大小大于I。
38.如權(quán)利要求37所述的內(nèi)存管理單元,其中,所述頁(yè)面的大小不是所述另外一個(gè)頁(yè)面的大小的倍數(shù)。
39.如權(quán)利要求28、29、30、31、32或33所述的方法,其中,頁(yè)面的有效大小不等于2n,n為自然數(shù)。
40.如權(quán)利要求28、29、30、31、32或33所述的方法,其中,被映射到虛擬地址空間的頁(yè)面的有效大小大于同樣被映射到所述虛擬地址空間另外一個(gè)頁(yè)面的有效大小,而所述另外一個(gè)頁(yè)面的有效大小大于I。
41.如權(quán)利要求40所述的內(nèi)存管理單元,其中,所述頁(yè)面的有效大小不是所述另外一個(gè)頁(yè)面的有效大小的倍數(shù)。
42.如權(quán)利要求28、29、30、31、32或33所述的方法,其中,將頁(yè)面中一個(gè)物理地址映射到虛擬地址的頁(yè)表項(xiàng)并不是將所述頁(yè)面中一個(gè)或多個(gè)其它物理地址映射到所述虛擬地址的頁(yè)表項(xiàng)。
43.如權(quán)利要求28、29、30、31、32或33所述的方法,其中,一個(gè)頁(yè)表項(xiàng)將包括在一個(gè)頁(yè)面中的一個(gè)物理地址映射到一個(gè)虛擬地址中,并將包括在另一個(gè)頁(yè)面中的一個(gè)物理地址映射到所述的虛擬地址中。
44.如權(quán)利要求28、29、30、31、32或33所述的方法,其中,頁(yè)面的大小或有效大小不是物理地址數(shù)量的倍數(shù),所述物理地址數(shù)量是與單個(gè)轉(zhuǎn)換描述符相關(guān)的所述頁(yè)面中所包含的物理地址數(shù)量。
45.如權(quán)利要求28、29、30、31、32或33所述的方法,其中,虛擬地址與一個(gè)程序相關(guān)聯(lián),當(dāng)訪問(wèn)所述虛擬地址時(shí),所述程序由出錯(cuò)處理程序調(diào)用。
46.如權(quán)利要求45所述的內(nèi)存管理單元,其中,所述程序在頁(yè)面中存儲(chǔ)有數(shù)值,并將所述頁(yè)面映射到虛擬地址空間中。
47.如權(quán)利要求45所述的內(nèi)存管理單元,其中,所述程序是可進(jìn)行配置的。
48.如權(quán)利要求28、29、30、31、32或33所述的方法,包括 a、提供一個(gè)虛擬查找表,所述虛擬查找表包括若干查找表項(xiàng),各查找表項(xiàng)與一個(gè)或多個(gè)虛擬地址相關(guān)聯(lián);以及 b、當(dāng)訪問(wèn)與所述查找表項(xiàng)相關(guān)的一個(gè)虛擬地址時(shí),在頁(yè)面中存儲(chǔ)與所述查找表項(xiàng)相應(yīng)的一個(gè)數(shù)值,并將所述頁(yè)面映射到虛擬地址空間中。
49.如權(quán)利要求48所述的內(nèi)存管理單元,其中,如果沒(méi)有訪問(wèn)與所述查找表項(xiàng)相關(guān)的虛擬地址,那么無(wú)需計(jì)算查找表項(xiàng)數(shù)值或?qū)⒉檎冶眄?xiàng)數(shù)值存儲(chǔ)到虛擬地址空間中。
50.如權(quán)利要求28、29、30、31、32或33所述的方法, a、提供一個(gè)虛擬內(nèi)存區(qū)域,包括邏輯存儲(chǔ)于虛擬地址空間內(nèi)若干虛擬地址中的若干數(shù)據(jù)元;以及 b、通過(guò) i、將一個(gè)或多個(gè)頁(yè)面中的一個(gè)或多個(gè)物理地址從其現(xiàn)在的虛擬地址中分離出來(lái),以及 ii、將所述的一個(gè)或多個(gè)物理地址與新的虛擬地址結(jié)合起來(lái); 將所述虛擬內(nèi)存區(qū)域中一個(gè)或多個(gè)數(shù)據(jù)元從其現(xiàn)在的虛擬地址遷移到所述虛擬地址空間中的新虛擬地址中。
51.如權(quán)利要求50所述的內(nèi)存管理單元,其中,遷移到新位置的物理地址的數(shù)量等于.2n, n為自然數(shù)。
52.如權(quán)利要求50所述的內(nèi)存管理單元,其中,遷移到新位置的物理地址的數(shù)量不等于2n,n為自然數(shù)。
53.如權(quán)利要求50所述的內(nèi)存管理單元,其中,通過(guò) a、促使將一個(gè)或多個(gè)現(xiàn)有數(shù)據(jù)元遷移到新的虛擬地址中,以及 b、在頁(yè)面中映射一個(gè)附加物理地址,所述附加物理地址還沒(méi)有被映射到比另外一個(gè)物理地址所映射到的虛擬地址更低的虛擬地址中; 所述虛擬內(nèi)存區(qū)域內(nèi)的一個(gè)或多個(gè)附加數(shù)據(jù)元被插入到所述虛擬地址空間內(nèi)。
54.如權(quán)利要求50所述的內(nèi)存管理單元,其中,通過(guò) a、從物理地址所映射到的虛擬地址中取消所述物理地址的映射;以及 b、促使將一個(gè)或多個(gè)現(xiàn)有數(shù)據(jù)元遷移到新的虛擬地址中; 所述虛擬內(nèi)存區(qū)域內(nèi)的一個(gè)或多個(gè)數(shù)據(jù)元被刪除。
全文摘要
本發(fā)明提供一種管理頁(yè)面大小可變的虛擬內(nèi)存系統(tǒng)的方法。頁(yè)面大小無(wú)需為二的次方。大小可變的、任意大小的頁(yè)面映射到連續(xù)段或虛擬地址空間。本方法也便于在虛擬內(nèi)存區(qū)域有效的遷移、插入和刪除數(shù)據(jù)。本方法還提供虛擬查找表。
文檔編號(hào)G06F12/10GK102754086SQ201080052852
公開(kāi)日2012年10月24日 申請(qǐng)日期2010年9月22日 優(yōu)先權(quán)日2009年9月25日
發(fā)明者凱姆萊西甘地 申請(qǐng)人:凱姆萊西 甘地