專利名稱:轉(zhuǎn)換后備緩沖器的惰性轉(zhuǎn)儲(chǔ)清除的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及存儲(chǔ)器管理領(lǐng)域,尤其涉及地址轉(zhuǎn)換高速緩存的轉(zhuǎn)儲(chǔ)清除。
背景技術(shù):
大多數(shù)計(jì)算機(jī)系統(tǒng)提供虛擬地址機(jī)制,藉此將虛擬地址映射到物理地址。當(dāng)使用虛擬地址作出訪問(wèn)存儲(chǔ)器位置的請(qǐng)求時(shí),將該虛擬地址轉(zhuǎn)換成向其尋找訪問(wèn)的目標(biāo)存儲(chǔ)器位置的對(duì)應(yīng)的物理地址。一組地址轉(zhuǎn)換表定義了虛擬地址和物理地址之間的映射。該轉(zhuǎn)換表通常儲(chǔ)存于存儲(chǔ)器內(nèi),因此地址的轉(zhuǎn)換需要存儲(chǔ)器訪問(wèn)以讀取該表。讀該表所需要的存儲(chǔ)器訪問(wèn)是在目標(biāo)位置上執(zhí)行的訪問(wèn)操作之外的訪問(wèn)。由此,當(dāng)使用虛擬尋址時(shí),相對(duì)于如果所有訪問(wèn)請(qǐng)求由物理地址作出將產(chǎn)生的訪問(wèn)數(shù)而言,有系統(tǒng)執(zhí)行的存儲(chǔ)器訪問(wèn)數(shù)將加倍。一些虛擬地址就其需要映射分階段進(jìn)行間接引用而言是多級(jí)的,這意味著可能花費(fèi)兩次或更多次存儲(chǔ)器訪問(wèn)來(lái)執(zhí)行地址轉(zhuǎn)換(由此令實(shí)現(xiàn)一個(gè)基礎(chǔ)訪問(wèn)請(qǐng)求所需要的存儲(chǔ)器訪問(wèn)數(shù)變?yōu)槿痘蚋?。
為減少轉(zhuǎn)換地址所必須發(fā)生的存儲(chǔ)器訪問(wèn)數(shù),許多虛擬地址系統(tǒng)采用一種稱為轉(zhuǎn)換后備緩沖器(TLBtranslation look-aside buffer)的高速緩存類型。由于最近被訪問(wèn)的存儲(chǔ)器頁(yè)可能在不久的將來(lái)再次被訪問(wèn),一旦地址轉(zhuǎn)換表被用于將虛擬頁(yè)描述符轉(zhuǎn)換成物理頁(yè)位置,則將虛擬頁(yè)和物理頁(yè)之間的對(duì)應(yīng)高速緩存在TLB中。每次需要執(zhí)行地址轉(zhuǎn)換時(shí),檢查TLB來(lái)確定TLB是否包含了所請(qǐng)求的存儲(chǔ)器單元所處的頁(yè)的高速緩存的映射。如果相關(guān)的映射被高速緩存在TLB中,則使用高速緩存的副本;否則,從轉(zhuǎn)換表來(lái)轉(zhuǎn)換地址。由于訪問(wèn)TLB要比訪問(wèn)存儲(chǔ)器中的轉(zhuǎn)換表快,因此當(dāng)連續(xù)的存儲(chǔ)器訪問(wèn)位于同一組頁(yè)上時(shí)—事情往往如此—使用TLB將加快執(zhí)行。
當(dāng)用虛擬存儲(chǔ)器提供存儲(chǔ)器保護(hù)時(shí),TLB產(chǎn)生了其它問(wèn)題。存儲(chǔ)器保護(hù)尋求實(shí)施支配哪些軟件組件可執(zhí)行對(duì)哪些物理頁(yè)的哪種訪問(wèn)(如,讀、寫(xiě))的安全政策;該保護(hù)可由虛擬存儲(chǔ)器通過(guò)控制對(duì)虛擬—物理地址轉(zhuǎn)換的控制來(lái)實(shí)施。(該控制可由創(chuàng)建映射的操作系統(tǒng)或?qū)⒆兓^(guò)濾到這一映射的地址轉(zhuǎn)換控制(ATC)來(lái)行使。)然而,當(dāng)修改地址轉(zhuǎn)換時(shí),舊映射仍可在TLB中存在。由此,當(dāng)為某一軟件組件修改地址轉(zhuǎn)換表來(lái)撤回對(duì)頁(yè)的某一訪問(wèn)權(quán)限時(shí),組件可保留對(duì)頁(yè)的訪問(wèn)直到從TLB轉(zhuǎn)儲(chǔ)清除(flush)這些舊映射。完成這一過(guò)程的普通方法是作為操作的一部分強(qiáng)制轉(zhuǎn)儲(chǔ)清除所有相關(guān)的TLB。
然而,轉(zhuǎn)儲(chǔ)清除TLB是高代價(jià)的,尤其是在共享存儲(chǔ)器的多處理器上。必須發(fā)信號(hào)通知包含違反新安全政策的過(guò)時(shí)映射的每一處理器轉(zhuǎn)儲(chǔ)清除其TLB;發(fā)這種信號(hào)通常需要相對(duì)較慢的處理器間中斷(IPI)。另外,轉(zhuǎn)儲(chǔ)清除本身的開(kāi)銷大。
鑒于以上原因,需要一種克服現(xiàn)有技術(shù)的缺點(diǎn)的機(jī)制。
發(fā)明內(nèi)容
本發(fā)明提供了一種支持TLB的惰性轉(zhuǎn)儲(chǔ)清除(lazy flushing)的機(jī)制。對(duì)每一TLB,維護(hù)一計(jì)數(shù)器,并且每次當(dāng)轉(zhuǎn)儲(chǔ)清除TLB時(shí),遞增該計(jì)數(shù)器。在每一處理器維護(hù)其自己的TLB的多處理器系統(tǒng)中,每一處理器可有其單獨(dú)的計(jì)數(shù)器,其中,當(dāng)一特定處理器轉(zhuǎn)儲(chǔ)清除其TLB時(shí),遞增該處理器的計(jì)數(shù)器。當(dāng)觸發(fā)事件出現(xiàn)時(shí),在觸發(fā)事件完成之后記錄任一相關(guān)計(jì)數(shù)器的值?!坝|發(fā)事件”是以過(guò)時(shí)的TLB條目會(huì)導(dǎo)致政策的違反的方式影響地址轉(zhuǎn)換映像或約束映射的存儲(chǔ)器訪問(wèn)政策的事件;相關(guān)計(jì)數(shù)器是可包含這一過(guò)時(shí)條目的TLB的計(jì)數(shù)器。例如,在某一政策下,可將存儲(chǔ)器的給定頁(yè)聲明為在界限外,并且從地址轉(zhuǎn)換映像中移除到該頁(yè)的所有映射;這種從映射對(duì)該頁(yè)解除鏈接(de-link)是觸發(fā)事件的一個(gè)示例,并且包含到該頁(yè)的映射的任一TLB的計(jì)數(shù)器都是相關(guān)的。情況可以是執(zhí)行了觸發(fā)事件,并且在觸發(fā)事件的效果或結(jié)果實(shí)際在地址轉(zhuǎn)換過(guò)程中使用之前已經(jīng)過(guò)了充分的時(shí)間。(例如,到存儲(chǔ)器的給定頁(yè)的映射可在給定的時(shí)間點(diǎn)上發(fā)生改變,但是在作出嘗試來(lái)重新使用解除鏈接的頁(yè)之前可能發(fā)生了上百萬(wàn)個(gè)操作。)當(dāng)要使用觸發(fā)事件的結(jié)果時(shí),將儲(chǔ)存的計(jì)數(shù)器值與當(dāng)前計(jì)數(shù)器值向比較,以確定哪些(如果有的話)相關(guān)TLB可能自從觸發(fā)事件以來(lái)尚未被轉(zhuǎn)儲(chǔ)清除。如果任一相關(guān)TLB具有匹配其記錄值的計(jì)數(shù)器值,則以常規(guī)方式轉(zhuǎn)儲(chǔ)清除所有這樣的TLB。
應(yīng)當(dāng)注意,如果計(jì)數(shù)器值改變,則TLB是安全的—即,一定沒(méi)有可導(dǎo)致違反適用的訪問(wèn)政策的過(guò)時(shí)TLB條目,而并且如果計(jì)數(shù)器值未改變,則TLB是不安全的。由此,在轉(zhuǎn)儲(chǔ)清除時(shí),可以安全地使用任意大小的計(jì)數(shù)器,并以任意方式改變計(jì)數(shù)器(或甚至根本就不改變)。另一可能性是使用實(shí)時(shí)計(jì)數(shù)器來(lái)為最后一次轉(zhuǎn)儲(chǔ)清除的時(shí)間加時(shí)間戳;如果時(shí)鐘被同步到某一時(shí)滯(time skew)內(nèi),則轉(zhuǎn)儲(chǔ)清除的啟動(dòng)方可僅記錄修改轉(zhuǎn)換的時(shí)間,并假定其時(shí)間戳至少超出轉(zhuǎn)換修改時(shí)間該時(shí)滯的任何轉(zhuǎn)儲(chǔ)清除已完成。
在高保證和非高保證環(huán)境(分別為“左側(cè)”和“右側(cè)”)并排存在,并且每一TLB轉(zhuǎn)儲(chǔ)清除需要到右側(cè)的行程的系統(tǒng)中,本發(fā)明的機(jī)制可用于避免到右側(cè)的不必要的行程。例如,在右側(cè)和左側(cè)之間的每一次變化可導(dǎo)致TLB轉(zhuǎn)儲(chǔ)清除,并且在每次處理器從右側(cè)移到左側(cè)時(shí),遞增每一處理器的計(jì)數(shù)器。換言之,由于右側(cè)可靠地執(zhí)行(或核實(shí))TLB的轉(zhuǎn)儲(chǔ)清除,計(jì)數(shù)器反映出TLB包含將破壞存儲(chǔ)器訪問(wèn)控制模式的條目的最后時(shí)間。每次令頁(yè)變得對(duì)左側(cè)不可訪問(wèn)(或不可寫(xiě))時(shí),本質(zhì)上使用計(jì)數(shù)器值來(lái)對(duì)該頁(yè)“加時(shí)間戳”。當(dāng)由處理器訪問(wèn)該頁(yè)時(shí),確定處理器是否(1)當(dāng)前在右側(cè),或(2)自從頁(yè)狀態(tài)改變以來(lái)可靠地轉(zhuǎn)儲(chǔ)清除了其TLB。后一確定可通過(guò)確保處理器的計(jì)數(shù)器值大于該頁(yè)的保存值來(lái)執(zhí)行。
下文描述了本發(fā)明的其它特征。
當(dāng)結(jié)合附圖閱讀時(shí),可以更好地理解上述概述以及以下較佳實(shí)施例的詳細(xì)描述。為說(shuō)明本發(fā)明的目的,附圖中示出了本發(fā)明的示例性構(gòu)造;然而,本發(fā)明不限于所揭示的具體方法和手段。附圖中圖1是可在其中實(shí)現(xiàn)本發(fā)明的各方面的示例計(jì)算環(huán)境的框圖;圖2是示例虛擬地址系統(tǒng)的框圖;圖3是在一個(gè)機(jī)器上共存的兩個(gè)環(huán)境的框圖,并且其存儲(chǔ)器部分被遮蔽(curtained);圖4所示是在地址轉(zhuǎn)換過(guò)程中使用的轉(zhuǎn)換后備緩沖器(TLB)的框圖;圖5是包括多個(gè)處理器的系統(tǒng)的框圖,其中,每一處理器與一TLB和一計(jì)數(shù)器關(guān)聯(lián);以及圖6是依照本發(fā)明的TLB惰性轉(zhuǎn)儲(chǔ)清除的過(guò)程的流程圖。
具體實(shí)施例方式
綜述地址轉(zhuǎn)換控制(ATC)可用于通過(guò)動(dòng)態(tài)地控制用于將虛擬地址轉(zhuǎn)換成物理地址的映射來(lái)實(shí)現(xiàn)存儲(chǔ)器訪問(wèn)政策。當(dāng)轉(zhuǎn)換后備緩沖器(TLB)用于高速緩存映射時(shí),與訪問(wèn)政策的當(dāng)前狀態(tài)不一致的舊映射可保留在TLB中,由此向政策展現(xiàn)了運(yùn)行計(jì)數(shù)器要使用的存儲(chǔ)器。TLB可以被轉(zhuǎn)儲(chǔ)清除,但是轉(zhuǎn)儲(chǔ)清除TLB是昂貴的操作,優(yōu)選盡可能少地執(zhí)行該操作。本發(fā)明提供了一種惰性TLB轉(zhuǎn)儲(chǔ)清除的機(jī)制,允許推遲TLB的轉(zhuǎn)儲(chǔ)清除直到需要轉(zhuǎn)儲(chǔ)清除。該機(jī)制較佳地在每一處理器維護(hù)其自己的TLB的多處理器系統(tǒng)中使用,可獨(dú)立于其它處理器的TLB來(lái)轉(zhuǎn)儲(chǔ)清除。
示例性計(jì)算布置方案圖1示出了適合在其中實(shí)現(xiàn)本發(fā)明的各方面的一個(gè)示例計(jì)算環(huán)境。計(jì)算系統(tǒng)環(huán)境100僅為合適的計(jì)算環(huán)境的一個(gè)示例,并非建議對(duì)本發(fā)明的使用或功能的范圍的局限。也不應(yīng)將計(jì)算環(huán)境100解釋為對(duì)示例性操作環(huán)境100中示出的任一組件或其組合具有依賴或需求。
本發(fā)明可以使用眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置來(lái)操作。適合使用本發(fā)明的已知的計(jì)算系統(tǒng)、環(huán)境和/或配置包括但不限于個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持式或膝上設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)者電子設(shè)備、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)、嵌入式系統(tǒng)、包括任一上述系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。
本發(fā)明可在計(jì)算機(jī)可執(zhí)行指令的一般上下文環(huán)境中描述,計(jì)算機(jī)可執(zhí)行指令如由計(jì)算機(jī)執(zhí)行的程序模塊。一般而言,程序模塊包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等,執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。本發(fā)明也可以在分布式計(jì)算環(huán)境中實(shí)踐,其中,任務(wù)由通過(guò)通信網(wǎng)絡(luò)或其它數(shù)據(jù)傳輸媒質(zhì)連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)媒質(zhì)中,如存儲(chǔ)器存儲(chǔ)設(shè)備。
參考圖1,用于實(shí)現(xiàn)本發(fā)明的示例系統(tǒng)包括以計(jì)算機(jī)110形式的通用計(jì)算裝置。計(jì)算機(jī)110的組件可包括但不限于,處理單元120、系統(tǒng)存儲(chǔ)器130以及將包括系統(tǒng)存儲(chǔ)器的各類系統(tǒng)組件耦合至處理單元120的系統(tǒng)總線121。處理單元120可代表多個(gè)邏輯處理單元,如多線程處理器上所支持的。系統(tǒng)總線121可以是若干種總線結(jié)構(gòu)類型的任一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線以及使用各類總線結(jié)構(gòu)的局部總線。作為示例而非局限,這類結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線以及外圍部件互連(PCI)總線(也稱為Mezzanine總線)。系統(tǒng)總線121也可被實(shí)現(xiàn)為點(diǎn)對(duì)點(diǎn)連接、交換光纖等通信設(shè)備。
計(jì)算機(jī)110通常包括各種計(jì)算機(jī)可讀媒質(zhì)。計(jì)算機(jī)可讀媒質(zhì)可以是可由計(jì)算機(jī)110訪問(wèn)的任一可用媒質(zhì),包括易失和非易失媒質(zhì)、可移動(dòng)和不可移動(dòng)媒質(zhì)。作為示例而非局限,計(jì)算機(jī)可讀媒質(zhì)包括計(jì)算機(jī)存儲(chǔ)媒質(zhì)和通信媒質(zhì)。計(jì)算機(jī)存儲(chǔ)媒質(zhì)包括以用于儲(chǔ)存信息的任一方法或技術(shù)實(shí)現(xiàn)的易失和非易失,可移動(dòng)和不可移動(dòng)媒質(zhì),信息如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)。計(jì)算機(jī)存儲(chǔ)媒質(zhì)包括但不限于,RAM、ROM、EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲(chǔ)、磁盒、磁帶、磁盤存儲(chǔ)或其它磁存儲(chǔ)設(shè)備、或可以用來(lái)儲(chǔ)存所期望的信息并可由計(jì)算機(jī)110訪問(wèn)的任一其它媒質(zhì)。通信媒質(zhì)通常在諸如載波或其它傳輸機(jī)制的已調(diào)制數(shù)據(jù)信號(hào)中包含計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任一信息傳送媒質(zhì)。術(shù)語(yǔ)“已調(diào)制數(shù)據(jù)信號(hào)”指以對(duì)信號(hào)中的信息進(jìn)行編碼的方式設(shè)置或改變其一個(gè)或多個(gè)特征的信號(hào)。作為示例而非局限,通信媒質(zhì)包括有線媒質(zhì),如有線網(wǎng)絡(luò)或直接連線連接,以及無(wú)線媒質(zhì),如聲學(xué)、RF、紅外和其它無(wú)線媒質(zhì)。上述任一的組合也應(yīng)當(dāng)包括在計(jì)算機(jī)可讀媒質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲(chǔ)器130包括以易失和/或非易失存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)媒質(zhì),如只讀存儲(chǔ)器(ROM)131和隨機(jī)存取存儲(chǔ)器(RAM)132?;据斎?輸出系統(tǒng)133(BIOS)包括如在啟動(dòng)時(shí)幫助在計(jì)算機(jī)110內(nèi)的元件之間傳輸信息的基本例程,通常儲(chǔ)存在ROM 131中。RAM 132通常包含處理單元120立即可訪問(wèn)或者當(dāng)前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非局限,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。
計(jì)算機(jī)110也可包括其它可移動(dòng)/不可移動(dòng)、易失/非易失計(jì)算機(jī)存儲(chǔ)媒質(zhì)。僅作示例,圖1示出了對(duì)不可移動(dòng)、非易失磁媒質(zhì)進(jìn)行讀寫(xiě)的硬盤驅(qū)動(dòng)器141、對(duì)可移動(dòng)、非易失磁盤152進(jìn)行讀寫(xiě)的磁盤驅(qū)動(dòng)器151以及對(duì)可移動(dòng)、非易失光盤156,如CD ROM或其它光媒質(zhì)進(jìn)行讀寫(xiě)的光盤驅(qū)動(dòng)器155??梢栽谑纠圆僮鳝h(huán)境中使用的其它可移動(dòng)/不可移動(dòng)、易失/非易失計(jì)算機(jī)存儲(chǔ)媒質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字視頻帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動(dòng)器141通常通過(guò)不可移動(dòng)存儲(chǔ)器接口,如接口140連接到系統(tǒng)總線121,磁盤驅(qū)動(dòng)器151和光盤驅(qū)動(dòng)器155通常通過(guò)可移動(dòng)存儲(chǔ)器接口,如接口150連接到系統(tǒng)總線121。
圖1討論并示出的驅(qū)動(dòng)器及其關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)媒質(zhì)為計(jì)算機(jī)110提供了計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。例如,在圖1中,示出硬盤驅(qū)動(dòng)器141儲(chǔ)存操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147。注意,這些組件可以與操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137相同,也可以與它們不同。這里對(duì)操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147給予不同的標(biāo)號(hào)來(lái)說(shuō)明至少它們是不同的副本。用戶可以通過(guò)輸入設(shè)備,如鍵盤162和定位設(shè)備161(通常指鼠標(biāo)、跟蹤球或觸摸板)向計(jì)算機(jī)110輸入命令和信息。其它輸入設(shè)備(未示出)可包括麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通常通過(guò)耦合至系統(tǒng)總線的用戶輸入接口160連接至處理單元120,但是也可以通過(guò)其它接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器191或其它類型的顯示設(shè)備也通過(guò)接口,如視頻接口190連接至系統(tǒng)總線121。除監(jiān)視器之外,計(jì)算機(jī)也包括其它外圍輸出設(shè)備,如揚(yáng)聲器197和打印機(jī)196,通過(guò)輸出外圍接口195連接。
計(jì)算機(jī)110可以在使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)180的邏輯連接的網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)180可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它公用網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括許多或所有上述與計(jì)算機(jī)110相關(guān)的元件,盡管在圖1中僅示出了存儲(chǔ)器存儲(chǔ)設(shè)備181。圖1描述的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也可包括其它網(wǎng)絡(luò)。這類網(wǎng)絡(luò)環(huán)境常見(jiàn)于辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)以及因特網(wǎng)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)110通過(guò)網(wǎng)絡(luò)接口或適配器170連接至LAN 171。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)110通常包括調(diào)制解調(diào)器172或其它裝置,用于通過(guò)WAN 173,如因特網(wǎng)建立通信。調(diào)制解調(diào)器172可以是內(nèi)置或外置的,通過(guò)用戶輸入接口160或其它合適的機(jī)制連接至系統(tǒng)總線121。在網(wǎng)絡(luò)化環(huán)境中,描述的與計(jì)算機(jī)110相關(guān)的程序模塊或其部分可儲(chǔ)存在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。作為示例而非局限,圖1示出了遠(yuǎn)程應(yīng)用程序185駐留在存儲(chǔ)器設(shè)備181中??梢岳斫?,示出的網(wǎng)絡(luò)連接是示例性的,也可以使用在計(jì)算機(jī)之間建立通信鏈路的其它裝置。
示例性虛擬地址模式圖2示出了虛擬地址系統(tǒng)的一個(gè)示例。圖2描述的示例是一分頁(yè)類型虛擬地址模式,盡管可以理解,虛擬尋址可基于其它模型,如分段(segmentation)。圖2所示的模式是二級(jí)地址模式,如INTEL x86處理器上可用的虛擬尋址模式之一。該模式就其必須使用兩級(jí)間接以將虛擬頁(yè)標(biāo)識(shí)符轉(zhuǎn)換成物理頁(yè)而言是“兩級(jí)”的,如后文所描述的。
在該分頁(yè)模式中,頁(yè)目錄202包含一組條目。條目的一個(gè)示例結(jié)構(gòu)在下文結(jié)合圖3更詳細(xì)地描述,但是本質(zhì)上,每一條目標(biāo)識(shí)了具體頁(yè)表,如頁(yè)表204(1)、204(2)或204(3)的物理位置(如,頁(yè)幀號(hào)或“PFN”)。每一頁(yè)表進(jìn)而包含一組條目,每一條目標(biāo)識(shí)具體數(shù)據(jù)頁(yè),如頁(yè)206(1)、206(2)、206(3)或206(4)的物理位置(還是頁(yè)幀號(hào))。數(shù)據(jù)頁(yè)是確定長(zhǎng)度的RAM 132的鄰近部分。數(shù)據(jù)頁(yè)可儲(chǔ)存任一類型的數(shù)據(jù),并且應(yīng)當(dāng)注意,除儲(chǔ)存普通數(shù)據(jù)之外,數(shù)據(jù)頁(yè)也可用于儲(chǔ)存頁(yè)目錄202和頁(yè)204(1)到204(3)的內(nèi)容。由此,給定的頁(yè)可以是目錄、表/數(shù)據(jù)頁(yè)或扮演作為這三個(gè)結(jié)構(gòu)的組合的多重角色。
圖2描述的虛擬地址模式是兩級(jí)虛擬地址模式,因?yàn)樾枰ㄟ^(guò)頁(yè)目錄(級(jí)1)和頁(yè)表(級(jí)2)以查找具體頁(yè)。本領(lǐng)域的技術(shù)人員可以理解,可以用任意數(shù)量級(jí)來(lái)設(shè)計(jì)虛擬地址系統(tǒng),并且本發(fā)明的原理可應(yīng)用到所有這類虛擬地址模式。如本領(lǐng)域所已知的,IINTEL x86處理器支持具有一、二或三級(jí)的虛擬地址,并且通常采用一種“混合”模式,其中“小”頁(yè)(即,長(zhǎng)度為4千字節(jié)的頁(yè))使用兩級(jí)虛擬地址,“大”頁(yè)(即,長(zhǎng)度為4兆字節(jié)的頁(yè))使用一級(jí)虛擬地址。
在圖2的分頁(yè)模式中,頁(yè)上的一個(gè)字節(jié)可由虛擬地址210來(lái)標(biāo)識(shí),包括頁(yè)目錄偏移211、頁(yè)表偏移212和頁(yè)偏移213。由此,為查找一物理地址,執(zhí)行地址轉(zhuǎn)換的存儲(chǔ)器管理單元(MMU)220使用頁(yè)目錄偏移211來(lái)查找頁(yè)目錄202中具體條目。例如,偏移211可等于零,指示應(yīng)當(dāng)參考頁(yè)目錄202中的第零個(gè)條目。該條目包含儲(chǔ)存頁(yè)表的PFN,因此MMU 20使用該P(yáng)FN來(lái)查找頁(yè)表之一(如,頁(yè)表204(1))。MMU 220然后使用頁(yè)表偏移212作為到標(biāo)識(shí)的頁(yè)表的索引,并檢索在該偏移處找到的條目。該條目包含數(shù)據(jù)頁(yè)(如頁(yè)206(1))的PFN,因此MMU 220將頁(yè)偏移213添加到標(biāo)識(shí)的頁(yè)的基礎(chǔ)地址,以查找物理存儲(chǔ)器的具體字節(jié)。除純粹地址轉(zhuǎn)換之外,MMU 220也可適用于執(zhí)行各種其它功能如,如果表中的頁(yè)條目被標(biāo)記為“不存在”,則MMU 220可從盤上加載該頁(yè);如果該頁(yè)被標(biāo)記為“只讀”,則MMU可不允許寫(xiě)訪問(wèn),等等。
在圖2的虛擬地址模式中,頁(yè)目錄本身的位置(即,PFN)儲(chǔ)存在存儲(chǔ)位置201。當(dāng)開(kāi)始轉(zhuǎn)換虛擬地址210時(shí),MMU 220使用存儲(chǔ)位置的內(nèi)容來(lái)查找頁(yè)目錄202。由此,可以存在多個(gè)頁(yè)映射,并且可通過(guò)設(shè)置存儲(chǔ)位置201的內(nèi)容包含給定映射的頁(yè)目錄的PFN來(lái)選擇具體的映射用于當(dāng)前使用。在INTEL x86處理器的示例中,存儲(chǔ)位置201對(duì)應(yīng)于名為CR3的寄存器。
高保證環(huán)境和通過(guò)地址轉(zhuǎn)換控制的遮蔽存儲(chǔ)器可以理解,上文描述的虛擬地址系統(tǒng)的一個(gè)特征是可能有在給定地址轉(zhuǎn)換映像下未由任意虛擬地址映射的物理地址。由此,在幾乎所有的訪問(wèn)請(qǐng)求都由虛擬地址作出的諸如INTEL x86處理器等系統(tǒng)中,有可能通過(guò)確保給定源的地址轉(zhuǎn)換映像不指向界限外的存儲(chǔ)器來(lái)令物理存儲(chǔ)器的一部分在該源的界限外。盡力在地址轉(zhuǎn)換映像上進(jìn)行控制來(lái)實(shí)現(xiàn)這一界限外存儲(chǔ)器被稱為地址轉(zhuǎn)換控制(ATC)。存儲(chǔ)器的界限外部分有時(shí)被稱為“遮蔽存儲(chǔ)器(curtained memory)”,并且ATC是實(shí)現(xiàn)遮蔽存儲(chǔ)器的一種方法。
遮蔽存儲(chǔ)器的一種用途是在高保證環(huán)境和非高保證環(huán)境在同一機(jī)器上共存時(shí)。高保證環(huán)境可具有不能被非高保證環(huán)境訪問(wèn)的遮蔽存儲(chǔ)器。高保證環(huán)境的概念—及其對(duì)遮蔽存儲(chǔ)器的關(guān)系—在下文參考圖3描述。
圖3示出了在同一機(jī)器上共存的兩個(gè)環(huán)境高保證環(huán)境360和非高保證環(huán)境350。為方便起見(jiàn),這些環(huán)境分別被稱為右側(cè)(RHS)和左側(cè)(LHS);RHS 360是高保證的,而LHS 350是非高保證的。對(duì)于一個(gè)環(huán)境是“高保證的”意味著能夠高度確保在該環(huán)境中執(zhí)行的功能將被正確地執(zhí)行。由此,LHS 350執(zhí)行各種功能306(1)、306(2)、…、306(n),并且RHS執(zhí)行各種功能308(1)、308(2)、…、308(m)。LHS 350與描述功能306(1)到306(n)如何表現(xiàn)的規(guī)范302關(guān)聯(lián)。同樣,RHS360與描述功能308(1)到308(m)如何表現(xiàn)的規(guī)范304關(guān)聯(lián)??梢詴?shū)寫(xiě)或不書(shū)寫(xiě)規(guī)范302和304。例如,LHS 350可以是與解釋其各種服務(wù)、驅(qū)動(dòng)器、系統(tǒng)調(diào)用等如何表現(xiàn)的書(shū)面手冊(cè)一起供給的商用操作系統(tǒng)?;蛘?,可以僅有對(duì)給定環(huán)境如何表現(xiàn)的一般理解,并且該理解可構(gòu)成規(guī)范。
不論規(guī)范采用什么形式,可以理解,幾乎所有的軟件包含程序錯(cuò)誤、非法途徑(backdoor)(已知的或未發(fā)現(xiàn)的)、邏輯錯(cuò)誤等等,它們可導(dǎo)致軟件以非預(yù)期的方式表現(xiàn)。然而,可以評(píng)估給定的軟件將以期望的方式表現(xiàn)的保證度—即,軟件的行為實(shí)際上將與其規(guī)范中所描述的匹配的保證度。在圖3的示例中,RHS 360在具有設(shè)計(jì)RHS 360來(lái)執(zhí)行的功能308(1)到308(m)實(shí)際上將依照規(guī)范304執(zhí)行的相對(duì)高保證度的意義上是“高保證的”。同樣,LHS 350在具有LHS 350將依照規(guī)范302執(zhí)行功能306(1)到306(n)的相對(duì)低保證度的意義上是“非高保證的”。在該上下文中,“相對(duì)高”和“相對(duì)低”意味著RHS 360將依照規(guī)范304表現(xiàn)的保證度高于LHS 350將依照規(guī)范302表現(xiàn)的保證度。
一般的情況是,諸如MICROSOFT WINDOWS操作系統(tǒng)等具有全特征的商用操作系統(tǒng)是非高保證環(huán)境。這類環(huán)境支持可自由添加設(shè)備驅(qū)動(dòng)器、插件和其它類型的擴(kuò)充的開(kāi)放體系結(jié)構(gòu),這令所有可想像的情況下這一操作系統(tǒng)的行為變得很難核實(shí)。因此,當(dāng)期望某一類型的安全性時(shí),與高保證操作環(huán)境并排地運(yùn)行這一具有完整特征的操作系統(tǒng)是有用的。高保證操作系統(tǒng)是提供少量特征的小型操作系統(tǒng)。由于高保證操作系統(tǒng)提供的功能是較小的,有較少的變量影響其操作,因此在高度確定性上,其行為更容易核實(shí)。
在一個(gè)較佳的實(shí)施例中,高保證環(huán)境包括遮蔽存儲(chǔ)器—即,對(duì)非高保證環(huán)境不可訪問(wèn)的存儲(chǔ)器的一部分。由此,RHS 360可在遮蔽存儲(chǔ)器中儲(chǔ)存機(jī)密數(shù)據(jù)(如,密碼密鑰),而不會(huì)有被運(yùn)行在LHS 350中的進(jìn)程讀或?qū)懙奈kU(xiǎn)。例如,規(guī)范304可規(guī)定RHS 360能夠保護(hù)信息免遭外部干預(yù),并且遮蔽存儲(chǔ)器允許RHS 360執(zhí)行這一功能。此外,RHS 360用于執(zhí)行其各種功能的代碼可儲(chǔ)存在遮蔽存儲(chǔ)器中,以防止運(yùn)行在LHS 350中的進(jìn)程用不同的代碼來(lái)重寫(xiě)該代碼(這將導(dǎo)致RHS 360的行為超出其規(guī)范)。圖3示出了可由RHS 360使用的遮蔽存儲(chǔ)器312。物理地址空間310包括給定計(jì)算裝置上可用的所有物理存儲(chǔ)器位置。物理遮蔽存儲(chǔ)器312是這些位置的子集。如圖3所示,RHS 360可對(duì)所有物理地址空間310進(jìn)行訪問(wèn),但是LHS 350缺乏對(duì)構(gòu)成遮蔽存儲(chǔ)器312的物理地址空間310部分的訪問(wèn)。(應(yīng)當(dāng)注意,盡管圖3示出地址空間的遮蔽和非遮蔽部分的分別是連續(xù)的,但對(duì)這一連續(xù)性沒(méi)有需求。此外,RHS 360不必具有對(duì)整個(gè)物理地址空間的訪問(wèn),或者LHS 350不必具有對(duì)處于遮蔽存儲(chǔ)器312之外的物理地址空間的每一部分的訪問(wèn)。)如上所述,在某些系統(tǒng)中,幾乎所有的存儲(chǔ)器訪問(wèn)請(qǐng)求都由物理地址作出。在這一系統(tǒng)上實(shí)現(xiàn)遮蔽存儲(chǔ)器312的一種方法是以不向LHS 350展現(xiàn)遮蔽存儲(chǔ)器312的任何虛擬地址的方式控制地址轉(zhuǎn)換映像的內(nèi)容。(當(dāng)某一類型的訪問(wèn)請(qǐng)求有可能按照其物理地址標(biāo)識(shí)其目標(biāo)時(shí),可由某一輔助協(xié)作機(jī)制來(lái)限制對(duì)遮蔽存儲(chǔ)器的訪問(wèn),如過(guò)濾來(lái)自直接存儲(chǔ)器訪問(wèn)設(shè)備或來(lái)自其它源的訪問(wèn)請(qǐng)求的排除矢量。)有若干算法可用來(lái)確保LHS 350無(wú)法使用將通向遮蔽存儲(chǔ)器312的地址轉(zhuǎn)換映像,但是這些算法背后的中心思想是(1)當(dāng)處理器在LHS 350中操作時(shí),確保加載到CR3(圖2所示的存儲(chǔ)位置201)中的任一映射不通向包含在遮蔽存儲(chǔ)器312內(nèi)的頁(yè);以及(2)對(duì)于編輯LHS 350中的活動(dòng)映射的任一嘗試,對(duì)所提出的編輯進(jìn)行評(píng)估以確保該編輯將不產(chǎn)生到遮蔽存儲(chǔ)器312的頁(yè)的鏈接。
以下是用于通過(guò)ATC實(shí)現(xiàn)遮蔽存儲(chǔ)器的示例算法設(shè)D1是可用作頁(yè)目錄的頁(yè)組。設(shè)D2是可用作頁(yè)表的頁(yè)組。設(shè)D是D1和D2的并集(即,D=D1∪D2)。頁(yè)目錄或頁(yè)表中被標(biāo)記為“存在”(即,其存在位被設(shè)置)的每一條目被稱為“鏈接”。如果有從D1中的某一頁(yè)到所討論的D2的小讀寫(xiě)鏈接,則D2中的頁(yè)是“寫(xiě)活動(dòng)”的。(“小”鏈接是從目錄到表的鏈接—即,目錄中最終將通向小頁(yè)的鏈接?!按蟆辨溄邮悄夸浿兄赶虼箜?yè)的鏈接。)假定有定義某一實(shí)體被準(zhǔn)許對(duì)其讀和/或?qū)懺L問(wèn)的頁(yè)的政策。
維護(hù)以下不變式(invariant)—CR3在D1內(nèi);—在相關(guān)政策下所有D1和D2頁(yè)是可讀的;—每一小鏈接從D1頁(yè)指向D2頁(yè);—D2頁(yè)的鏈接指向政策下可讀的頁(yè);—寫(xiě)活動(dòng)D2頁(yè)的每一讀寫(xiě)鏈接指向相關(guān)政策下可寫(xiě)但不在D中的頁(yè);—包含在D1頁(yè)的大鏈接的大頁(yè)目標(biāo)中的每一小頁(yè)在政策下是可讀的;如果該鏈接是讀寫(xiě),則該小頁(yè)在政策下也是可寫(xiě)的,并且不在D中。
例如,如果政策將遮蔽存儲(chǔ)器312定義為不可訪問(wèn),則為可由LHS 350使用的所有地址轉(zhuǎn)換表維護(hù)上述不變式將確保沒(méi)有安全虛擬地址標(biāo)識(shí)其目標(biāo)并在LHS350中出現(xiàn)的訪問(wèn)請(qǐng)求會(huì)到達(dá)遮蔽存儲(chǔ)器312。
結(jié)合ATC使用轉(zhuǎn)換后備緩沖器轉(zhuǎn)換后備緩沖器(TLB)本質(zhì)上是儲(chǔ)存了映射數(shù)據(jù)的高速緩存。TLB背后的基本思想是最近被訪問(wèn)的頁(yè)可能再次被訪問(wèn),因此最近使用過(guò)的從給定虛擬頁(yè)到對(duì)應(yīng)的物理頁(yè)的映射被儲(chǔ)存在TLB中。從地址轉(zhuǎn)換表計(jì)算映射(至少以INTEL x86處理器上采用的最常見(jiàn)二級(jí)虛擬地址模式)需要兩次存儲(chǔ)器訪問(wèn)一次訪問(wèn)頁(yè)目錄來(lái)找出相關(guān)頁(yè)表的位置,然后第二次訪問(wèn)頁(yè)表來(lái)找出相關(guān)數(shù)據(jù)頁(yè)。僅可在執(zhí)行了這兩次(其它)存儲(chǔ)器訪問(wèn)來(lái)找出目標(biāo)數(shù)據(jù)的物理位置之后才可找尋到要訪問(wèn)的實(shí)際目標(biāo)位置。TLB通過(guò)提供維護(hù)最近使用過(guò)的映射信息的快速存儲(chǔ)器減少了這一額外的存儲(chǔ)器訪問(wèn)的需求。由此,對(duì)于需要執(zhí)行的每一地址轉(zhuǎn)換,處理器首先參考其TLB來(lái)確定給定虛擬頁(yè)的映射數(shù)據(jù)是否高速緩存在TLB中。如果映射數(shù)據(jù)不在TLB中,則參考地址轉(zhuǎn)換表。
圖4示出了處理器如何使用TLB 402。處理器102執(zhí)行代碼片斷,并且在執(zhí)行過(guò)程中,引發(fā)讀或?qū)懘鎯?chǔ)器400的目標(biāo)位置406的指令。該指令不標(biāo)識(shí)目標(biāo)位置406的物理地址,而是指定了目標(biāo)位置406的虛擬地址。由此,處理器120(或,在許多情況下,與處理器120關(guān)聯(lián)的存儲(chǔ)器管理單元)必須將虛擬地址轉(zhuǎn)換成物理地址。處理器120首先在TLB 402中查找以確定是否高速緩存了可在虛擬地址轉(zhuǎn)換中使用的映射(圈1)。如果存在這一映射,則使用該映射來(lái)轉(zhuǎn)換地址。如果不存在這樣的映射,則從存儲(chǔ)器400讀取地址轉(zhuǎn)換映像的相關(guān)部分(圈2),并且使用這些映射部分來(lái)轉(zhuǎn)換虛擬地址。不論地址轉(zhuǎn)換是如何進(jìn)行的,使用轉(zhuǎn)換的地址來(lái)訪問(wèn)物理目標(biāo)位置406(圈3)。TLB能夠提供效率的原因是在TLB 402中查找信息比在存儲(chǔ)器400中讀地址轉(zhuǎn)換映像404要快。另外,在一些設(shè)計(jì)中,儲(chǔ)存在TLB402中的數(shù)據(jù)可將兩步轉(zhuǎn)換過(guò)程壓縮成一步即,使用地址轉(zhuǎn)換映像需要在以不同的步驟來(lái)讀頁(yè)目錄和頁(yè)表;然而,單個(gè)的頁(yè)目錄(PD)偏移/頁(yè)表(PT)偏移組合可以高速緩存在TLB 402中,由此允許在單個(gè)步驟中由PD/PT偏移組合來(lái)標(biāo)識(shí)虛擬頁(yè)。
當(dāng)在ATC系統(tǒng)中使用TLB時(shí),對(duì)ATC不變式進(jìn)行修改以把通過(guò)TLB可用的轉(zhuǎn)換考慮進(jìn)來(lái)。例如,在先前描述的示例ATC算法中,鏈接的定義可被修改如下如果從某一頁(yè)到另一頁(yè)的鏈接在物理存儲(chǔ)器中存在或者高速緩存在某一TLB中,則該鏈接存在。盡管在大多數(shù)體系結(jié)構(gòu)中(如,x86處理器)TLB的內(nèi)容不是直接可觀察的,然而可綁定其內(nèi)容,因?yàn)檗D(zhuǎn)換僅通過(guò)存儲(chǔ)器進(jìn)入TLB。使用示例算法中的不變式,則必須在從D1或D2移除一頁(yè)時(shí)、放棄對(duì)頁(yè)的讀或讀寫(xiě)訪問(wèn)時(shí)以及在對(duì)D2作出將頁(yè)的狀態(tài)從寫(xiě)活動(dòng)改為寫(xiě)非活動(dòng)或從寫(xiě)非活動(dòng)改為寫(xiě)活動(dòng)的寫(xiě)或添加時(shí),轉(zhuǎn)儲(chǔ)清除TLB。
然而,有充分的激勵(lì)來(lái)進(jìn)一步減少TLB轉(zhuǎn)儲(chǔ)清除,因?yàn)檗D(zhuǎn)儲(chǔ)清除TLB是減慢性能的昂貴操作。首先,TLB對(duì)效率改進(jìn)的程度僅止于用有用的映射數(shù)據(jù)來(lái)填充它、且轉(zhuǎn)儲(chǔ)清除TLB從TLB中消除了這一映射數(shù)據(jù)而已。第二,由于以下原因,實(shí)際上轉(zhuǎn)儲(chǔ)清除本身可能是昂貴的在圖3描述的體系結(jié)構(gòu)中,遮蔽存儲(chǔ)器312的維護(hù)取決于計(jì)數(shù)器政策映射的缺乏。在一個(gè)較佳的實(shí)施例中,由于計(jì)數(shù)器政策映射的缺乏是提供高保證環(huán)境的元素,因此,對(duì)映射的控制本身必須在高保證環(huán)境中執(zhí)行。由此,不僅地址轉(zhuǎn)換映像的控制本身必須在高保證環(huán)境中執(zhí)行,而且TLB的轉(zhuǎn)儲(chǔ)清除也必須在高保證環(huán)境中執(zhí)行(或至少被核實(shí))。因此,作為ATC系統(tǒng)的一部分被依賴的每一TLB轉(zhuǎn)儲(chǔ)清除需要當(dāng)前環(huán)境從LHS 350改為RHS 360。將上下文從當(dāng)前環(huán)境改變到另一環(huán)境本身是昂貴的,它增加了轉(zhuǎn)儲(chǔ)清除的開(kāi)支。因此,期望盡可能地避免轉(zhuǎn)儲(chǔ)清除TLB。
本發(fā)明提供了一種延遲并盡可能避免某些此類轉(zhuǎn)儲(chǔ)清除的機(jī)制。在一個(gè)實(shí)施例中,本發(fā)明基于兩種子機(jī)制。第一種子機(jī)制規(guī)定那些不修改實(shí)際存儲(chǔ)器映射的操作(如,向D2添加頁(yè),或令頁(yè)對(duì)寫(xiě)不可訪問(wèn))可在概念上被延遲,直到需要其完成來(lái)準(zhǔn)許對(duì)存儲(chǔ)器的某一修改。例如,放棄對(duì)頁(yè)的讀訪問(wèn)(在安全政策中)的行動(dòng)可被延遲,直到該頁(yè)可能被修改(當(dāng)另一計(jì)算實(shí)體創(chuàng)建對(duì)該頁(yè)的讀寫(xiě)映射時(shí))。第二種子機(jī)制使用時(shí)間戳來(lái)更精確地跟蹤到頁(yè)的特定映射是否在特定的TLB中存在。
在先前所呈現(xiàn)的示例算法中,需要轉(zhuǎn)儲(chǔ)清除的可延遲操作可被劃分成兩個(gè)類需要從TLB移除允許讀頁(yè)(放棄對(duì)頁(yè)的讀訪問(wèn)或從D1或D2移除頁(yè))的任一轉(zhuǎn)換的那些操作,以及需要從TLB移除允許修改頁(yè)(移除對(duì)頁(yè)的寫(xiě)訪問(wèn))的任一轉(zhuǎn)換的那些操作。調(diào)用前一“讀轉(zhuǎn)儲(chǔ)清除操作”和后一“寫(xiě)轉(zhuǎn)儲(chǔ)清除操作”,這些操作可被如下延遲●讀轉(zhuǎn)儲(chǔ)清除操作可被延遲直到某一計(jì)算實(shí)體示圖創(chuàng)建到該頁(yè)的讀寫(xiě)映射,或直到某一設(shè)備可能通過(guò)直接存儲(chǔ)器訪問(wèn)修改該頁(yè),或直到由ATC算法本身修改該頁(yè);●寫(xiě)轉(zhuǎn)儲(chǔ)清除操作可被延遲直到某一計(jì)算實(shí)體試圖創(chuàng)建到該頁(yè)的讀或讀寫(xiě)映射,或直到某一設(shè)備可能通過(guò)直接存儲(chǔ)器訪問(wèn)修改該頁(yè),或直到由ATC算法本身修改該頁(yè)。
當(dāng)執(zhí)行讀轉(zhuǎn)儲(chǔ)清除操作時(shí),僅需在TLB仍潛在地包含到所討論的頁(yè)的讀映射時(shí)轉(zhuǎn)儲(chǔ)清除該TLB。唯一的這種情況是自從最后一次有對(duì)該頁(yè)的讀映射以來(lái)TLB未被轉(zhuǎn)儲(chǔ)清除過(guò)。類似地,當(dāng)執(zhí)行寫(xiě)轉(zhuǎn)儲(chǔ)清除操作時(shí),僅需在自從最后一次有對(duì)該頁(yè)的讀寫(xiě)映射以來(lái)TLB未被轉(zhuǎn)儲(chǔ)清除過(guò)時(shí)轉(zhuǎn)儲(chǔ)清除TLB。
為確定自從有對(duì)頁(yè)的讀/讀寫(xiě)映射以來(lái)TLB是否被轉(zhuǎn)儲(chǔ)清除,為每一頁(yè)維護(hù)兩個(gè)時(shí)間戳(其讀時(shí)間戳和寫(xiě)時(shí)間戳),并且對(duì)每一TLB維護(hù)一個(gè)時(shí)間戳(其轉(zhuǎn)儲(chǔ)清除時(shí)間戳)。只要移除了到頁(yè)的最后一個(gè)讀/讀寫(xiě)映射,在其讀/讀寫(xiě)時(shí)間戳中記錄當(dāng)前時(shí)間。只要轉(zhuǎn)儲(chǔ)清除了TLB,在其轉(zhuǎn)儲(chǔ)清除時(shí)間戳中記錄當(dāng)前時(shí)間。
可以若干種方式測(cè)量時(shí)間。在第一種示例方法中,用于TLB的時(shí)鐘僅是轉(zhuǎn)儲(chǔ)清除時(shí)間戳。由此,從TLB的轉(zhuǎn)儲(chǔ)清除時(shí)間戳復(fù)制頁(yè)的讀和讀寫(xiě)時(shí)間戳。當(dāng)轉(zhuǎn)儲(chǔ)清除TLB時(shí),轉(zhuǎn)儲(chǔ)清除時(shí)間戳改變(如何改變并不重要)。如果頁(yè)的讀/讀寫(xiě)時(shí)間戳與轉(zhuǎn)儲(chǔ)清除時(shí)間戳不同,則確保讀/讀寫(xiě)映射不在TLB中。如果碰巧轉(zhuǎn)儲(chǔ)清除時(shí)間戳改變(可能改變了若干次),而恰巧與讀/讀寫(xiě)時(shí)間戳符合(如,由于時(shí)鐘的繞回),不產(chǎn)生任何損害;只是會(huì)有一次不必要的轉(zhuǎn)儲(chǔ)清除。
在第二種示例方法中,用實(shí)時(shí)或虛擬時(shí)鐘來(lái)測(cè)量時(shí)間。如果確保用于記錄讀/讀寫(xiě)時(shí)間戳和轉(zhuǎn)儲(chǔ)清除時(shí)間戳的時(shí)鐘在總是某一時(shí)滯內(nèi)一致,則如果讀/讀寫(xiě)時(shí)間戳超前轉(zhuǎn)儲(chǔ)清除時(shí)間戳至少該時(shí)滯,則確保讀/讀寫(xiě)映射不再TLB中。完全避免時(shí)滯的一個(gè)方法是使用全局時(shí)鐘,一個(gè)當(dāng)轉(zhuǎn)儲(chǔ)清除時(shí)被遞增的共享計(jì)數(shù)器;然而,這類時(shí)鐘可能變成一個(gè)熱點(diǎn)(hotspot)。
第一種方法具有不需要同步時(shí)鐘的優(yōu)點(diǎn)。然而,如果要考慮大量的TLB,則第一種方法對(duì)每一TLB需要一個(gè)單獨(dú)的讀/讀寫(xiě)時(shí)間戳,而第二種方法僅需要讀單個(gè)時(shí)鐘。此外,它消除了時(shí)鐘本身的存儲(chǔ)器爭(zhēng)用。也可組合這兩種方法,并且也可采用其它機(jī)制(如,矢量時(shí)鐘)。
本發(fā)明提供了一種允許TLB的惰性轉(zhuǎn)儲(chǔ)清除的機(jī)制,使得TLB的顯式轉(zhuǎn)儲(chǔ)清除被延遲直到有LHS 350實(shí)際上使用了不再符合地址轉(zhuǎn)換映像的舊TLB條目訪問(wèn)頁(yè)的潛在可能。本質(zhì)上,當(dāng)移除了對(duì)頁(yè)的最后一次映射時(shí),該頁(yè)被“加時(shí)間戳”,(如下文所討論的,“時(shí)間戳”可能實(shí)際上不包含時(shí)間,而是順序計(jì)數(shù)器的值。)當(dāng)隨后訪問(wèn)頁(yè)時(shí),根據(jù)自從頁(yè)被加時(shí)間戳以來(lái)TLB是否被轉(zhuǎn)儲(chǔ)清除來(lái)確定是否要轉(zhuǎn)儲(chǔ)清除TLB。
在圖5所示的多處理器系統(tǒng)中,處理器120(1)到120(n)的每一個(gè)維護(hù)其子集的TLB 402(1)到402(n)。換言之,處理器120(1)到120(n)的每一個(gè)可訪問(wèn)同一基礎(chǔ)地址轉(zhuǎn)換表,但是它們可以單獨(dú)從這些表高速緩存映射。另外,在一個(gè)實(shí)施例中,每一處理器可在LHS 350或RHS 360中操作。依照本發(fā)明,計(jì)數(shù)器502(1)到502(n)與處理器120(1)到120(n)的每一個(gè)關(guān)聯(lián)。每一次處理器上的環(huán)境從RHS 360改變到LHS 350時(shí),遞增與該處理器關(guān)聯(lián)的計(jì)數(shù)器。
每當(dāng)令頁(yè)對(duì)LHS 350不可用(即,當(dāng)在相關(guān)訪問(wèn)政策下令頁(yè)對(duì)LHS 350不可用、并將其從對(duì)LHS 350可用的所有映射解除鏈接),則有效地用計(jì)數(shù)器值為該頁(yè)“加時(shí)間戳”。(計(jì)數(shù)器不在物理意義上計(jì)算“時(shí)間”,而可以被視為一種類型的計(jì)時(shí),因?yàn)橛?jì)數(shù)器響應(yīng)于某一事件的出現(xiàn)而前移。)由此,通過(guò)將頁(yè)的儲(chǔ)存的計(jì)數(shù)器值與試圖訪問(wèn)該頁(yè)的處理器的當(dāng)前計(jì)數(shù)器值相比較,可確定計(jì)數(shù)器是否在頁(yè)對(duì)LHS 350之后進(jìn)入了RHS 360。(如上文所解釋的,進(jìn)入RHS 360促使TLB被可靠地轉(zhuǎn)儲(chǔ)清除。)如果處理器在頁(yè)被解除鏈接之后未進(jìn)入RHS 360,則處理器進(jìn)入RHS 360并轉(zhuǎn)儲(chǔ)清除其TLB。如果在LHS 350中出現(xiàn)訪問(wèn)該頁(yè)的嘗試,則處理器返回到LHS 350并再次試圖訪問(wèn)該頁(yè)。如果處理器在頁(yè)被解除鏈接之后進(jìn)入了RHS360(即,如果處理器當(dāng)前在RHS 360中,或在頁(yè)被解除鏈接之后的某一點(diǎn)進(jìn)入RHS),則已知自從該頁(yè)最后一次對(duì)LHS 350可用以來(lái)已可靠地轉(zhuǎn)儲(chǔ)清除了TLB,并且由此TLB不能包含到該頁(yè)的任何映射,因此在那一時(shí)刻不需要轉(zhuǎn)儲(chǔ)清除TLB。
圖6所示是在令頁(yè)變得對(duì)LHS 350不可用之后轉(zhuǎn)儲(chǔ)清除TLB的過(guò)程的流程圖。在圖6所示的過(guò)程的開(kāi)始,假定了在一種適用訪問(wèn)政策下可從LHS 350訪問(wèn)給定頁(yè)(頁(yè)X)。在某一點(diǎn),在該訪問(wèn)政策下令頁(yè)X對(duì)LHS 350不可用,并且根據(jù)需要調(diào)整對(duì)LHS 350可用的地址轉(zhuǎn)換映像以確保頁(yè)X從那些映射中解除鏈接(602)。在頁(yè)X被解除鏈接時(shí),記錄機(jī)器上所有處理器的計(jì)數(shù)器值,并且該記錄與頁(yè)X關(guān)聯(lián)用于稍后的檢索(604)。該記錄較佳地包含機(jī)器上每一處理器的當(dāng)前計(jì)數(shù)器值。
在從對(duì)LHS 350可用的映射解除鏈接頁(yè)X之后,可以在過(guò)去某些時(shí)間后再實(shí)際訪問(wèn)頁(yè)X。然而,在某一點(diǎn)上,對(duì)頁(yè)X的訪問(wèn)請(qǐng)求將始發(fā)于一特定處理器(處理器Y)(606)。然后檢索與該頁(yè)關(guān)聯(lián)的記錄的計(jì)數(shù)器值,并將處理器Y的儲(chǔ)存值與處理器Y的當(dāng)前計(jì)數(shù)器值相比較。(該記錄還包含其它處理器的儲(chǔ)存的計(jì)數(shù)器值,但是在確定處理器Y是否需要轉(zhuǎn)儲(chǔ)清除其TLB時(shí)丟棄這些其它值)。如果處理器Y的當(dāng)前計(jì)數(shù)器值大于儲(chǔ)存的計(jì)數(shù)器值,則準(zhǔn)許對(duì)該頁(yè)的訪問(wèn)(614)而不需要進(jìn)一步的詢問(wèn),因?yàn)樘幚砥鱕肯定在頁(yè)X對(duì)LHS 350不可用之后已進(jìn)入了RHS360并轉(zhuǎn)儲(chǔ)清除了其TLB。另一方面,如果處理器Y儲(chǔ)存的計(jì)數(shù)器值與處理器Y的當(dāng)前計(jì)數(shù)器值相等,則在頁(yè)X解除鏈接之后尚未進(jìn)入RHS 360,這意味著處理器Y的TLB可能仍包含到頁(yè)X的映射。
如果處理器Y運(yùn)行在RHS 360中(610),則TLB可在不違反訪問(wèn)政策的情況下包含到頁(yè)X的映射,因此準(zhǔn)許對(duì)頁(yè)X的訪問(wèn)(614)。然而,如果處理器Y運(yùn)行在LHS 350中(并且從608已知處理器Y在頁(yè)X被解除鏈接之后尚未轉(zhuǎn)儲(chǔ)清除其TLB),則有處理器Y的TLB的內(nèi)容將向LHS 350展現(xiàn)到頁(yè)X的映射的可能。由此,處理器Y進(jìn)入RHS 360并轉(zhuǎn)儲(chǔ)清除其TLB(612)。在TLB被轉(zhuǎn)儲(chǔ)清除之后,處理器Y返回到LHS 350,并重新執(zhí)行訪問(wèn)請(qǐng)求(614)(由此需要用新的空TLB重新轉(zhuǎn)換請(qǐng)求地址。)應(yīng)當(dāng)注意,令頁(yè)對(duì)LHS 350不可訪問(wèn)不是可觸發(fā)轉(zhuǎn)儲(chǔ)清除TLB的需求的唯一事件,并且本發(fā)明的機(jī)制也可用于觸發(fā)由于其它原因而引起的TLB轉(zhuǎn)儲(chǔ)清除。例如,從組D1或D2(如上文所定義的)之一移除頁(yè),或放棄對(duì)頁(yè)的讀訪問(wèn)(或?qū)懺L問(wèn)),也可引發(fā)TLB轉(zhuǎn)儲(chǔ)清除的需求,因?yàn)檫@些事件會(huì)影響什么映射在相關(guān)政策下是合法的。在這一情況下,本發(fā)明的機(jī)制可以類似于上文描述的方式來(lái)使用—如,當(dāng)從D1或D2移除頁(yè)時(shí),或當(dāng)放棄讀(或?qū)?訪問(wèn)時(shí),可記錄計(jì)數(shù)器值,并且處理器訪問(wèn)頁(yè)的任一隨后的嘗試可觸發(fā)處理器的當(dāng)前計(jì)數(shù)器值和該頁(yè)的儲(chǔ)存的計(jì)數(shù)器值之間的比較。
還應(yīng)當(dāng)注意,本發(fā)明的機(jī)制不限于轉(zhuǎn)儲(chǔ)清除需要到RHS 360的行程的情況—或甚至是LHS 350和RHS 360都可用的情況。更一般而言,本發(fā)明的機(jī)制可在有過(guò)時(shí)條目在不再反映映射的狀態(tài)的TLB中存在的可能的任一情況下使用—如,在由操作系統(tǒng)執(zhí)行的普通進(jìn)程隔離的情況下。
注意,以上示例僅為解釋目的提供,并且不應(yīng)被解釋為對(duì)本發(fā)明的局限。盡管參考各種實(shí)施例描述了本發(fā)明,可以理解,此處所使用的詞語(yǔ)是描述和說(shuō)明的詞語(yǔ),而非限制的詞語(yǔ)。此外,盡管此處參考具體的方法、材料和實(shí)施例描述了本發(fā)明,本發(fā)明不意味著對(duì)此處所揭示的特性的限制;相反,本發(fā)明延及所有功能等效的結(jié)構(gòu)、方法和使用,如處于所附權(quán)利要求書(shū)的范圍之內(nèi)的。從本說(shuō)明書(shū)的教導(dǎo)獲益的本領(lǐng)域的技術(shù)人員可在不脫離本發(fā)明各方面的范圍和精神的情況下作出各種修改和變化。
權(quán)利要求
1.一種從多個(gè)映射高速緩存的第一個(gè)中清除過(guò)時(shí)條目的方法,所述多個(gè)映射高速緩存的每一個(gè)與計(jì)算裝置的多個(gè)處理單元的對(duì)應(yīng)的一個(gè)關(guān)聯(lián),每一所述高速緩存用于將虛擬地址轉(zhuǎn)換成物理地址并基于地址轉(zhuǎn)換映像儲(chǔ)存映射,其特征在于,所述方法包括維護(hù)一計(jì)數(shù)器;每次當(dāng)轉(zhuǎn)儲(chǔ)清除所述多個(gè)映射高速緩存的第一個(gè)時(shí)更新所述計(jì)數(shù)器;響應(yīng)于所述地址轉(zhuǎn)換映像中的變化記錄所述計(jì)數(shù)器值;基于所述計(jì)數(shù)器值與所記錄的計(jì)數(shù)器值的比較確定自從所述地址轉(zhuǎn)換映像中的所述變化出現(xiàn)以來(lái)所述多個(gè)映射高速緩存的第一個(gè)一定未被轉(zhuǎn)儲(chǔ)清除;以及轉(zhuǎn)儲(chǔ)清除所述多個(gè)映射高速緩存的第一個(gè)。
2.如權(quán)利要求1所述的方法,其特征在于,所述計(jì)數(shù)器是多個(gè)計(jì)數(shù)器之一,每一計(jì)數(shù)器與所述映射高速緩存的對(duì)應(yīng)的一個(gè)關(guān)聯(lián)。
3.如權(quán)利要求2所述的方法,其特征在于,當(dāng)計(jì)數(shù)器的對(duì)應(yīng)的映射高速緩存被轉(zhuǎn)儲(chǔ)清除時(shí),更新所述多個(gè)計(jì)數(shù)器的每一個(gè)。
4.如權(quán)利要求1所述的方法,其特征在于,所述地址轉(zhuǎn)換映像包括到具有第一頁(yè)的存儲(chǔ)器頁(yè)的鏈接,并且其中,所述變化包括將所述地址轉(zhuǎn)換映像置于所述地址轉(zhuǎn)換映像不包含到所述第一頁(yè)的任一鏈接的狀態(tài)。
5.如權(quán)利要求1所述的方法,其特征在于,所述地址轉(zhuǎn)換映像定義可由實(shí)體讀取的存儲(chǔ)器的部分,所述存儲(chǔ)器的部分包括第一部分,并且其中,所述變化包括將所述地址轉(zhuǎn)換映像置于所述第一部分不可由所述實(shí)體讀取的狀態(tài)。
6.如權(quán)利要求1所述的方法,其特征在于,所述地址轉(zhuǎn)換映像定義可由實(shí)體寫(xiě)入的存儲(chǔ)器的部分,所述存儲(chǔ)器的部分包括第一部分,并且其中,所述變化包括將所述地址轉(zhuǎn)換映像置于所述第一部分不可由所述實(shí)體寫(xiě)入的狀態(tài)。
7.如權(quán)利要求1所述的方法,其特征在于,一政策定義對(duì)存儲(chǔ)器的許可訪問(wèn),并且其中,所述方法還包括控制所述地址轉(zhuǎn)換映像的內(nèi)容,使得所述地址轉(zhuǎn)換映像不向?qū)嶓w展現(xiàn)準(zhǔn)許所述實(shí)體在違反所述政策的情況下訪問(wèn)所述存儲(chǔ)器的虛擬地址映射;其中,所述變化包括使所述映射適應(yīng)所述政策或維持所述映射與所述政策的適應(yīng)性的對(duì)所述映射的修改,或限制所述實(shí)體對(duì)所述映射的訪問(wèn)的對(duì)所述映射的修改。
8.如權(quán)利要求7所述的方法,其特征在于,所述地址轉(zhuǎn)換映像包括到所述存儲(chǔ)器的一部分的鏈接,其中,控制所述地址轉(zhuǎn)換映像的內(nèi)容包括令所述存儲(chǔ)器的部分對(duì)所述實(shí)體不可訪問(wèn),并且其中,所述變化包括從所述地址轉(zhuǎn)換映像中移除到所述存儲(chǔ)器的部分的所有鏈接。
9.如權(quán)利要求1所述的方法,其特征在于,它還包括確定可能使用所述地址轉(zhuǎn)換映像在所述變化之前的狀態(tài)的事件已出現(xiàn);其中,所述多個(gè)映射高速緩存的第一個(gè)的轉(zhuǎn)儲(chǔ)清除響應(yīng)于確定所述事件已出現(xiàn)而執(zhí)行。
10.如權(quán)利要求9所述的方法,其特征在于,所述事件包括將虛擬地址轉(zhuǎn)換成包含在由所述變化從所述地址轉(zhuǎn)換映像中解除鏈接的存儲(chǔ)器部分內(nèi)的物理地址。
11.一種管理地址映射高速緩存的應(yīng)用的系統(tǒng),其特征在于,所述系統(tǒng)包括多個(gè)處理器,每一所述處理器具有一映射高速緩存以及一與其關(guān)聯(lián)的計(jì)數(shù)器;儲(chǔ)存地址轉(zhuǎn)換映像的存儲(chǔ)器,每一所述映射高速緩存基于所述地址轉(zhuǎn)換映像儲(chǔ)存映射,有一支配對(duì)所述存儲(chǔ)器的訪問(wèn)的政策,控制所述地址轉(zhuǎn)換映像的內(nèi)容來(lái)防止在違反所述政策的情況下準(zhǔn)許對(duì)所述存儲(chǔ)器的訪問(wèn)的映射的展現(xiàn);第一邏輯,它轉(zhuǎn)儲(chǔ)清除所述映射高速緩存的第一個(gè),并且當(dāng)所述映射高速緩存的第一個(gè)被轉(zhuǎn)儲(chǔ)清除時(shí),遞增所述計(jì)數(shù)器的第一個(gè);第二邏輯,它響應(yīng)于所述地址轉(zhuǎn)換映像中或關(guān)于所述地址轉(zhuǎn)換映像的特性中的變化,記錄所述第一計(jì)數(shù)器的當(dāng)前值,所記錄的計(jì)數(shù)器值與所述變化關(guān)聯(lián)地儲(chǔ)存;第三邏輯,它將所記錄的計(jì)數(shù)器值與所述第一計(jì)數(shù)器的當(dāng)前值相比較,并且如果所述比較指示自從變化以來(lái)所述映射高速緩存的第一個(gè)尚未被轉(zhuǎn)儲(chǔ)清除,則促使所述映射高速緩存的第一個(gè)被轉(zhuǎn)儲(chǔ)清除。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,每一所述處理器與所述計(jì)數(shù)器的第一個(gè)關(guān)聯(lián),并且其中,所述第一邏輯在任一所述映射高速緩存被轉(zhuǎn)儲(chǔ)清除時(shí)遞增所述計(jì)數(shù)器的第一個(gè)。
13.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述映射高速緩存的每一個(gè)與多個(gè)計(jì)數(shù)器的不同的一個(gè)關(guān)聯(lián),并且其中,所述的第一邏輯在一給定的映射高速緩存被轉(zhuǎn)儲(chǔ)清除時(shí)遞增對(duì)應(yīng)于所述給定映射高速緩存的計(jì)數(shù)器。
14.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述變化包括將所述地址轉(zhuǎn)換映像置于在其中到所述存儲(chǔ)器的第一頁(yè)的所有鏈接都被從所述地址轉(zhuǎn)換映像移除的狀態(tài)。
15.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述變化包括將所述地址轉(zhuǎn)換映像置于其中不存在到所述存儲(chǔ)器的第一頁(yè)的可寫(xiě)鏈接的狀態(tài)。
16.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述第三邏輯響應(yīng)于檢測(cè)到要使用所述變化的結(jié)果而被調(diào)用。
17.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述變化包括將所述地址轉(zhuǎn)換映像置于其中到所述存儲(chǔ)器的第一頁(yè)的所有鏈接都被從所述地址轉(zhuǎn)換映像中移除的狀態(tài),并且其中,所述檢測(cè)是基于被轉(zhuǎn)換成所述第一頁(yè)上的位置的虛擬地址。
18.一種計(jì)算機(jī)可讀媒質(zhì),在其上編碼了執(zhí)行管理高速緩存地址映射的轉(zhuǎn)換后備緩沖器的轉(zhuǎn)儲(chǔ)清除的方法的計(jì)算機(jī)可執(zhí)行指令,其特征在于,所述方法包括接收由虛擬地址指示目標(biāo)位置的訪問(wèn)請(qǐng)求;轉(zhuǎn)換所述虛擬地址來(lái)獲取所述目標(biāo)位置的物理地址;將(1)與包括所述目標(biāo)地址的頁(yè)關(guān)聯(lián)的儲(chǔ)存的計(jì)數(shù)器值與(2)當(dāng)前計(jì)數(shù)器值相比較;基于所述儲(chǔ)存的計(jì)數(shù)器值和所述當(dāng)前計(jì)數(shù)器值之間的比較,確定自從影響所述頁(yè)的映射的事件被修改以來(lái),所述轉(zhuǎn)換后備緩沖器尚未被轉(zhuǎn)儲(chǔ)清除;以及轉(zhuǎn)儲(chǔ)清除所述轉(zhuǎn)換后備緩沖器。
19.如權(quán)利要求18所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,所述地址映射由儲(chǔ)存在存儲(chǔ)器中的地址轉(zhuǎn)換映像來(lái)定義,所述轉(zhuǎn)換后備緩沖器高速緩存基于所述地址轉(zhuǎn)換映像的映射。
20.如權(quán)利要求18所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,一政策定義存儲(chǔ)器對(duì)軟件實(shí)體的可訪問(wèn)性,并且其中,所述事件包括從所述地址映射所基于的地址轉(zhuǎn)換映像中移除到所述存儲(chǔ)器的頁(yè)的鏈接,所述頁(yè)在所述政策下對(duì)所述軟件實(shí)體不可訪問(wèn)。
21.如權(quán)利要求18所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,一政策定義存儲(chǔ)器對(duì)軟件實(shí)體的可訪問(wèn)性,并且其中,所述事件包括調(diào)整地址轉(zhuǎn)換映像以使對(duì)頁(yè)的映射不可寫(xiě),其中,或者(1)所述政策將所述頁(yè)定義為不可由所述軟件實(shí)體寫(xiě),或者(2)所述頁(yè)儲(chǔ)存所述地址轉(zhuǎn)換映像的一部分。
22.如權(quán)利要求18所述的計(jì)算機(jī)可讀媒質(zhì),其特征在于,一地址轉(zhuǎn)換控制機(jī)制控制可用于儲(chǔ)存地址轉(zhuǎn)換映像的一部分的存儲(chǔ)器頁(yè)組的成員資格,并且其中,所述事件包括所述頁(yè)組的成員資格中的變化。
23.一種從多個(gè)映射高速緩存的第一個(gè)清除過(guò)時(shí)條目的方法,所述多個(gè)映射高速緩存的每一個(gè)與計(jì)算裝置的多個(gè)處理單元的對(duì)應(yīng)的一個(gè)關(guān)聯(lián),每一所述高速緩存用于將虛擬地址轉(zhuǎn)換到物理地址,并基于地址轉(zhuǎn)換映像儲(chǔ)存映射,其特征在于,所述方法包括維護(hù)基于其可確定事件的順序前進(jìn)的對(duì)象;響應(yīng)于對(duì)從頁(yè)中移除(1)讀訪問(wèn),或(2)讀/寫(xiě)訪問(wèn)中的一個(gè)或多個(gè)的所述地址轉(zhuǎn)換映像的變化,記錄所述對(duì)象的值;響應(yīng)于對(duì)所述頁(yè)的訪問(wèn)請(qǐng)求,基于所述對(duì)象的當(dāng)前值與所記錄的值的比較,確定自從所述變化出現(xiàn)以來(lái)所述多個(gè)映射高速緩存的第一個(gè)已被轉(zhuǎn)儲(chǔ)清除;以及如果無(wú)法基于所述比較毫無(wú)疑問(wèn)地確定自從所述變化出現(xiàn)以來(lái)所述多個(gè)映射高速緩存的第一個(gè)已被轉(zhuǎn)儲(chǔ)清除,則轉(zhuǎn)儲(chǔ)清除所述多個(gè)映射高速緩存的第一個(gè)。
24.如權(quán)利要求23所述的方法,其特征在于,所述對(duì)象包括時(shí)鐘。
25.如權(quán)利要求23所述的方法,其特征在于,所述對(duì)象包括在每次所述多個(gè)映射高速緩存的第一個(gè)被轉(zhuǎn)儲(chǔ)清除時(shí)被遞增的計(jì)數(shù)器。
26.如權(quán)利要求23所述的方法,其特征在于,所述對(duì)象包括多個(gè)計(jì)數(shù)器,每一所述計(jì)數(shù)器對(duì)應(yīng)于所述多個(gè)映射高速緩存之一,其中,當(dāng)所述計(jì)數(shù)器的對(duì)應(yīng)的映射高速緩存被轉(zhuǎn)儲(chǔ)清除時(shí),遞增每一所述計(jì)數(shù)器。
27.如權(quán)利要求23所述的方法,其特征在于,所述變化包括移除對(duì)所述頁(yè)的讀訪問(wèn),并且其中,所述訪問(wèn)請(qǐng)求包括讀取所述頁(yè)的請(qǐng)求。
28.如權(quán)利要求23所述的方法,其特征在于,所述變化包括移除對(duì)所述頁(yè)的讀/寫(xiě)訪問(wèn),并且其中,所述訪問(wèn)請(qǐng)求包括寫(xiě)所述頁(yè)的請(qǐng)求。
全文摘要
地址轉(zhuǎn)換控制(ATC)限制了虛擬和物理地址之間的映射,以實(shí)現(xiàn)存儲(chǔ)器訪問(wèn)政策。多處理器系統(tǒng)中的每一處理器維護(hù)高速緩存映射的轉(zhuǎn)換后備緩沖器(TLB),以加速虛擬地址的轉(zhuǎn)換。每一處理器也維護(hù)一計(jì)數(shù)器。每次當(dāng)處理器的TLB被轉(zhuǎn)儲(chǔ)清除時(shí),遞增該處理器的計(jì)數(shù)器。當(dāng)從地址轉(zhuǎn)換映像移除到頁(yè)的鏈接時(shí),記錄所有處理器的計(jì)數(shù)器值。當(dāng)該頁(yè)由處理器訪問(wèn)時(shí),將記錄的計(jì)數(shù)器值與該處理器的當(dāng)前計(jì)數(shù)器值比較,以確定自從到該頁(yè)的鏈接被從映射中移除以來(lái)該處理器的TLB是否已被轉(zhuǎn)儲(chǔ)清除。昂貴的TLB轉(zhuǎn)儲(chǔ)清除操作被延遲直到需要,但是仍足夠早地出現(xiàn)以防止無(wú)效的TLB條目被用于違反訪問(wèn)政策。
文檔編號(hào)G06F12/10GK1622060SQ20041008826
公開(kāi)日2005年6月1日 申請(qǐng)日期2004年10月18日 優(yōu)先權(quán)日2003年11月26日
發(fā)明者E·S·科恩 申請(qǐng)人:微軟公司