欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

體系結(jié)構(gòu)事件期間維持處理器資源的制作方法

文檔序號(hào):84000閱讀:584來(lái)源:國(guó)知局
專利名稱:體系結(jié)構(gòu)事件期間維持處理器資源的制作方法
背景本發(fā)明一般涉及數(shù)據(jù)處理系統(tǒng),尤其涉及使用處理器在不同上下文中進(jìn)行處理。
許多現(xiàn)有的計(jì)算機(jī)系統(tǒng)使用虛擬存儲(chǔ)器系統(tǒng)來(lái)管理存儲(chǔ)器,并將其分配給在系統(tǒng)中運(yùn)行的多個(gè)進(jìn)程,這就允許在該系統(tǒng)上運(yùn)行的每個(gè)進(jìn)程像它能控制由該系統(tǒng)提供的全部范圍的地址那樣來(lái)工作。操作系統(tǒng)(OS)將用于每個(gè)進(jìn)程的虛擬地址空間映射至用于該系統(tǒng)的實(shí)際物理地址空間。通常使用頁(yè)面表來(lái)維持從物理地址到虛擬地址的映射。
處理器性能可經(jīng)由多級(jí)流水線體系結(jié)構(gòu)改進(jìn),在該多級(jí)流水線體系結(jié)構(gòu)中諸如高速緩存、緩沖器、陣列等的各種流水線資源可更為有效地用于執(zhí)行指令。改進(jìn)虛擬存儲(chǔ)器系統(tǒng)的使用的一種流水線資源是翻譯后備緩沖器(TLB)。TLB是處理器流水線內(nèi)存儲(chǔ)器的相對(duì)較小部分,用于高速緩存部分系統(tǒng)虛擬地址至物理地址的翻譯。具體地,翻譯集的少量元素被存儲(chǔ)在處理器能極快訪問(wèn)的TLB中。系統(tǒng)中可存在各種TLB。例如,存在用于指令和數(shù)據(jù)的單獨(dú)TLB(分別為指令TLB(iTLB)和數(shù)據(jù)TLB(dTLB)。此外,在某些系統(tǒng)中可存在二級(jí)dTLB(STLB)。
如果在TLB中不存在對(duì)特定虛擬地址的翻譯,則會(huì)出現(xiàn)“翻譯遺漏”并且使用更一般機(jī)制來(lái)解決地址翻譯。處理以此方式繼續(xù)直到出現(xiàn)上下文切換。上下文切換會(huì)在多任務(wù)OS停止時(shí)運(yùn)行一個(gè)進(jìn)程(例如,應(yīng)用軟件)并開(kāi)始運(yùn)行另一個(gè)進(jìn)程時(shí)發(fā)生。當(dāng)發(fā)生上下文切換時(shí),包括頁(yè)面目錄的頁(yè)面表和用于新進(jìn)程的頁(yè)面表被載入,并且該TLB和其他流水線資源必須被清除。清除意味著資源內(nèi)容被清空。
某些系統(tǒng)可實(shí)現(xiàn)其中虛擬機(jī)監(jiān)視器(VMM)可向其他軟件呈現(xiàn)一個(gè)或多個(gè)虛擬機(jī)的抽象的虛擬機(jī)(VM)環(huán)境。每個(gè)VM都可用作自主式平臺(tái),從而運(yùn)行它自己的“客戶操作系統(tǒng)”(即,由VMM提供的OS)以及被統(tǒng)稱為客戶軟件(或簡(jiǎn)稱為“客戶”)的其他軟件。客戶軟件期望像在專用計(jì)算機(jī)而非虛擬機(jī)上運(yùn)行那樣來(lái)工作。因此,客戶軟件期望控制各種事件并能夠訪問(wèn)諸如駐留處理器資源、駐留于存儲(chǔ)器內(nèi)的資源和駐留于基礎(chǔ)硬件平臺(tái)的資源的硬件資源。
在虛擬機(jī)環(huán)境中,VMM通常對(duì)這些事件和硬件資源有著最終控制權(quán),以提供客戶軟件的合適操作,并且為在不同虛擬機(jī)上運(yùn)行的客戶軟件或在這些軟件之間提供保護(hù)。為了實(shí)現(xiàn)這一目標(biāo),VMM通常在客戶軟件訪問(wèn)受保護(hù)資源時(shí)或在出現(xiàn)其他事件(諸如中斷或異常)時(shí)接收控制(即,影響環(huán)境切換)。
在VM或其他環(huán)境中的上下文切換會(huì)引起現(xiàn)代微處理器中相當(dāng)大的額外開(kāi)銷。該額外開(kāi)銷會(huì)因?yàn)樵诿看紊舷挛那袚Q時(shí)必須清除并重新加載的巨大二級(jí)TLB而加劇。這樣該額外開(kāi)銷就會(huì)對(duì)性能,特別是帶有多個(gè)活動(dòng)上下文的系統(tǒng)中的性能產(chǎn)生不利影響。于是就需要在上下文切換時(shí)能更有效地維持流水線資源。
附圖簡(jiǎn)述圖1是根據(jù)本發(fā)明一實(shí)施例的線性地址翻譯。
圖2是根據(jù)本發(fā)明一實(shí)施例的系統(tǒng)的一部分的框圖。
圖3是根據(jù)本發(fā)明一實(shí)施例的方法的流程圖。
圖4是根據(jù)本發(fā)明另一實(shí)施例的方法的流程圖。
圖5是根據(jù)本發(fā)明又一實(shí)施例的方法的流程圖。
圖6是本發(fā)明一實(shí)施例的代表性計(jì)算機(jī)系統(tǒng)的框圖。
詳細(xì)描述在本發(fā)明的各個(gè)實(shí)施例中,諸如TLB、跟蹤緩存(TC)、分支預(yù)測(cè)單元(BPU)陣列、小型標(biāo)志等的流水線資源或結(jié)構(gòu)可支持多地址空間。在此使用的術(shù)語(yǔ)“地址空間”指的是存儲(chǔ)器內(nèi)對(duì)應(yīng)于給定應(yīng)用程序(例如上下文)的一組地址。
在各個(gè)實(shí)施例中,地址空間可受到確定或影響物理翻譯線性的體系結(jié)構(gòu)控制寄存器的組合(例如,包括頁(yè)面目錄基址寄存器(CR3.PDBR)、頁(yè)面級(jí)高速緩存禁用位(PCD)、頁(yè)面級(jí)直寫(xiě)位(PWT)的控制寄存器3;包括分頁(yè)位(CR0.PG)、保護(hù)啟用位(CR0.PE)的控制寄存器0;包括頁(yè)面大小擴(kuò)展位(CR4.PSE)以及頁(yè)面全局啟用位和物理地址擴(kuò)展位(CR4.PGE和PAE)、經(jīng)擴(kuò)展的功能啟用長(zhǎng)寄存器模式尋址(EFER.LMA)和非執(zhí)行位(EFER.NXE)的控制寄存器4)的控制。
在各個(gè)實(shí)施例中,地址空間標(biāo)識(shí)符(ASID)可用于以指向與各個(gè)流水線資源中的線性地址相關(guān)聯(lián)的上下文的指針來(lái)增加這些地址。在這里使用的“地址空間標(biāo)識(shí)符”可以是標(biāo)識(shí)與其相關(guān)聯(lián)的一個(gè)或多個(gè)地址空間的任何數(shù)字、代碼或其他符號(hào)。在一個(gè)實(shí)施例中,ASID可使用每個(gè)線程兩位ASID(即,四個(gè)地址空間上下文)來(lái)實(shí)現(xiàn),盡管本發(fā)明的范圍并非如此有限。這就允許多個(gè)應(yīng)用程序上下文共享流水線結(jié)構(gòu),從而降低了上下文切換的額外開(kāi)銷。例如,當(dāng)上下文切換出現(xiàn)時(shí),可改變當(dāng)前的ASID值,而不是清除流水線結(jié)構(gòu)。類似地,在某些實(shí)施例中,可提供線程標(biāo)識(shí)符(線程ID)以標(biāo)識(shí)用于對(duì)應(yīng)地址空間的給定處理器線程。
根據(jù)本發(fā)明的各個(gè)實(shí)施例,各種體系結(jié)構(gòu)事件都可能會(huì)引起TLB的選擇性清除。這些事件例如可包括移至CR3(MOV to CR3)指令;改變CR0頁(yè)面模式位CRO.PE和CR0.PG以及EFER.LMA;改變CR4頁(yè)面模式位;VM進(jìn)入(Entry)/退出(Exit);以及32位上下文切換(如果改變了CR0或CR4中的分頁(yè)模式位)。在某些實(shí)施例中,這些事件中僅有MOV to CR3操作或VMEntry/VMExit事件可改變/遞增ASID。
許多流水線結(jié)構(gòu)被線性標(biāo)志或索引。在某些實(shí)施例中,ASID可用指向?qū)?yīng)地址空間的指針來(lái)增加這些流水線資源內(nèi)的線性地址。在這些實(shí)施例中,微處理器可以維持在創(chuàng)建新的地址空間時(shí)或改變至不同的先前已見(jiàn)的地址空間時(shí)更新的全局當(dāng)前ASID寄存器??捎卯?dāng)前ASID值擴(kuò)展TLB插入,并且只有當(dāng)ASID標(biāo)志與當(dāng)前ASID值匹配時(shí)TLB查找才匹配。當(dāng)上下文切換(例如,MOV to CR3或者VM entry/exit)觸發(fā)了地址空間改變時(shí),微處理器可切換至表示此新地址空間的不同ASID值,而不清除TLB或其他流水線結(jié)構(gòu)。在某些實(shí)施例中,不清除任何條目或者選擇性地清除對(duì)應(yīng)于特定地址空間的部分或所有條目可為帶有多個(gè)上下文的環(huán)境提供實(shí)質(zhì)上的性能增益。
現(xiàn)參看圖1,示出了根據(jù)本發(fā)明一實(shí)施例的適于64位地址翻譯的線性地址翻譯。如圖1所示,可使用線性地址300來(lái)尋址存儲(chǔ)器240內(nèi)的頁(yè)面。如圖1所示,線性地址300包括索引四級(jí)分頁(yè)結(jié)構(gòu)以訪問(wèn)存儲(chǔ)器240內(nèi)物理地址的多個(gè)字段。偏移字段(位0至11)用于尋址存儲(chǔ)器240的一個(gè)頁(yè)面內(nèi)的物理地址。頁(yè)面表?xiàng)l目(位12至20)尋址頁(yè)面表(PT)310內(nèi)的頁(yè)面表?xiàng)l目。頁(yè)面目錄條目(位21至29)尋址頁(yè)面目錄(PD)320內(nèi)的頁(yè)面目錄條目。頁(yè)面目錄指針(位30至38)尋址頁(yè)面目錄指針表(PDPT)330內(nèi)的頁(yè)面目錄指針條目。最后,頁(yè)面映射級(jí)四(PML4)指針(位39至47)尋址PML4 340內(nèi)的PML4條目。使用CR3內(nèi)的指針就可訪問(wèn)PML4 340的基址。以此方式,可使用64位線性地址實(shí)現(xiàn)四級(jí)分頁(yè)結(jié)構(gòu)以訪問(wèn)物理地址。
在各個(gè)實(shí)施例中,根據(jù)一實(shí)施例的TLB可包括物理地址(標(biāo)志地址)和相關(guān)聯(lián)的有效線程ID以及ASID位,連同相對(duì)應(yīng)的線性和物理地址。TLB條目包括在其標(biāo)志內(nèi)指示它們所對(duì)應(yīng)地址空間的ASID字段。該ASID字段包括在載入TLB條目時(shí)的當(dāng)前ASID值。因?yàn)锳SID字段在TLB條目的標(biāo)志內(nèi),所以TLB條目只有在當(dāng)前ASID值與該TLB條目?jī)?nèi)的ASID字段相匹配時(shí)才能被命中。
當(dāng)一地址空間改變(例如,上下文切換)時(shí),微代碼會(huì)將關(guān)于當(dāng)前地址空間/ASID(CR3、CR0和CR4分頁(yè)位、LMA)的信息保存到便箋式存儲(chǔ)器,并且可將新地址空間與每個(gè)ASID的已存儲(chǔ)地址空間信息相比較。如果沒(méi)有已存儲(chǔ)地址空間/ASID與新地址空間相匹配,則在之前未看到過(guò)該地址空間。因而微代碼可為該地址空間分配新ASID,或選擇一現(xiàn)有ASID來(lái)代替例如最近最少使用(LRU)策略。在后一種情況下,微代碼可清除用于該LRU ASID的TLB條目。
現(xiàn)參看圖2,示出了根據(jù)本發(fā)明一實(shí)施例的系統(tǒng)的一部分的框圖。如圖2所示,系統(tǒng)10包括系統(tǒng)存儲(chǔ)器20和多個(gè)軟件實(shí)體,包括第一客戶軟件(即,第一客戶)30、第二客戶軟件(即,第二客戶)40和虛擬機(jī)擴(kuò)展(VMX)監(jiān)視器50。在一個(gè)實(shí)施例中,系統(tǒng)存儲(chǔ)器20可包括代碼和數(shù)據(jù)兩者,并且可由例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)形成。
在圖2的實(shí)施例中,VMX監(jiān)視器50可向其他軟件(例如,客戶軟件)呈現(xiàn)一個(gè)或多個(gè)虛擬機(jī)的抽象。VMX監(jiān)視器50可向各種客戶機(jī)提供相同或不同的抽象。在各VM上運(yùn)行的客戶軟件可包括客戶OS和各種客戶軟件應(yīng)用程序。這些客戶OS和軟件應(yīng)用程序在此被統(tǒng)稱為客戶軟件??蛻糗浖谕L問(wèn)該客戶軟件在其上運(yùn)行的VM內(nèi)的物理資源(例如,處理器寄存器、存儲(chǔ)器和輸入/輸出(I/O)設(shè)備)。VMX監(jiān)視器50可有助于訪問(wèn)客戶軟件所期望的資源,同時(shí)還保持對(duì)平臺(tái)硬件內(nèi)資源的最終控制。
在一個(gè)實(shí)施例中,可使用存儲(chǔ)在虛擬機(jī)控制結(jié)構(gòu)(VMCS)(未在圖2中具體示出)內(nèi)一個(gè)或多個(gè)指定字段中的數(shù)據(jù)來(lái)定義標(biāo)準(zhǔn)(控制傳送標(biāo)準(zhǔn)和/或故障標(biāo)準(zhǔn))。例如,VMCS可存儲(chǔ)客戶軟件的狀態(tài)和信息以控制其操作。VMCS可駐留于存儲(chǔ)器20中并且可由處理器維持。應(yīng)該理解,可使用任何其他的數(shù)據(jù)結(jié)構(gòu)(例如,芯片內(nèi)高速緩存、文件、查找表等)存儲(chǔ)已存儲(chǔ)在VMCS內(nèi)的信息。
在一個(gè)實(shí)施例中,如果傳送標(biāo)準(zhǔn)確定當(dāng)前事件必須由VMX監(jiān)視器50處理,則控制就被傳送至VMX監(jiān)視器50。VMX監(jiān)視器50然后可處理該事件并將控制傳送回客戶軟件。從VMM或VMX監(jiān)視器到客戶軟件的控制傳送在這里可被稱為VM進(jìn)入,而從客戶軟件到VMM或VMX監(jiān)視器的控制傳送在此可被稱為VM退出。
如圖2所示,存儲(chǔ)器20可包括可使用關(guān)于第一客戶軟件30的頁(yè)面表?xiàng)l目(PTE)訪問(wèn)的第一頁(yè)面35,以及可使用關(guān)于第二客戶軟件40的PTE訪問(wèn)的第二頁(yè)面45。也就是說(shuō),第一頁(yè)面35和第二頁(yè)面45可包括分別對(duì)應(yīng)于第一客戶30和第二客戶40的代碼和/或數(shù)據(jù)。在圖2的實(shí)施例中,存儲(chǔ)器20可以對(duì)應(yīng)于包括代碼和數(shù)據(jù)兩者的物理地址,并且對(duì)應(yīng)于客戶軟件30和客戶軟件40的ASID的地址可對(duì)應(yīng)于用來(lái)指向物理地址空間的線性地址(或其一部分)。
仍參看圖2,第一客戶30具有第一ASID值(即,ASID=1),并且還包括對(duì)應(yīng)于第一地址空間的CR3值。同樣地,第二客戶40具有第二ASID值(即,ASID=2)并且還具有與其相關(guān)聯(lián)的CR3值。
控制第一客戶軟件30和第二客戶軟件40的執(zhí)行的VMX監(jiān)視器還具有與其相關(guān)聯(lián)的ASID值。例如,如圖2的實(shí)施例中所示,VMX監(jiān)視器50可具有三個(gè)與其相關(guān)聯(lián)的ASID值。
如圖2所示,可執(zhí)行MOV to CR3指令以產(chǎn)生如箭頭55所示的上下文切換。此外,VMX監(jiān)視器50通過(guò)產(chǎn)生由標(biāo)號(hào)60表示的VM退出來(lái)控制客戶軟件的操作,該VM退出引起從當(dāng)前執(zhí)行客戶中退出以強(qiáng)制控制返回VMX監(jiān)視器50。類似地,VMX監(jiān)視器50可通過(guò)執(zhí)行VM進(jìn)入(由圖2中的標(biāo)號(hào)70表示)就可引起客戶的起動(dòng)或恢復(fù)。
在各個(gè)實(shí)施例中,VMX體系結(jié)構(gòu)增強(qiáng)能允許VMX監(jiān)視器在上下文切換和使用ASID的VMX轉(zhuǎn)換時(shí)避免清除TLB或其他類似的處理器資源。在各個(gè)實(shí)施例中,既不需要軟件也不需要硬件中的顯式ASID管理來(lái)檢測(cè)交叉地址空間污染。
在各個(gè)實(shí)施例中,基于諸如圖2所示的事件,包括使用MOV to CR3指令執(zhí)行的上下文切換、VM退出或VM進(jìn)入,可避免對(duì)TLB或其他處理器資源的清除,從而在該上下文切換以及其他體系結(jié)構(gòu)事件時(shí)改進(jìn)性能并降低額外開(kāi)銷。
在某些實(shí)施例中,系統(tǒng)存儲(chǔ)器20內(nèi)的頁(yè)面以及其他被高速緩存的頁(yè)面于是就可由跨所有地址空間的VMX監(jiān)視器50來(lái)保護(hù),從而對(duì)這些頁(yè)面的任何嘗試存儲(chǔ)都可引起從起動(dòng)這一存儲(chǔ)的客戶軟件的VMX退出。對(duì)于這一事件,VMX監(jiān)視器50可使得對(duì)應(yīng)于這些存儲(chǔ)的地址在所有TLB和其他處理器資源內(nèi)無(wú)效。
在各個(gè)實(shí)施例中,處理器可不同地處理某些事件、指令和VMX轉(zhuǎn)換。不同指令和事件的這些不同實(shí)現(xiàn)可在處理器微代碼中實(shí)現(xiàn)。例如,對(duì)于客戶軟件內(nèi)的MOVto CR3指令、VM退出或VM進(jìn)入,處理器可尋找與新地址空間匹配的現(xiàn)有ASID。這一確定可通過(guò)比較新地址的ASID與處理器維持的ASID列表來(lái)作出。如果匹配存在,則處理器使該ASID成為當(dāng)前ASID而無(wú)需清除任何TLB條目。否則,在一個(gè)實(shí)施例中對(duì)應(yīng)于LRU ASID的所有TLB條目就被清除,并且最近最少使用ASID的ASID值就作為當(dāng)前ASID。如果該ASID未被清除,則可維持來(lái)自在前地址空間的TLB條目。
與之相反,可不同地處理使用于特定頁(yè)面的TLB條目無(wú)效的指令(例如,INVLPG指令)。例如,在一個(gè)實(shí)施例中,可基于這一指令使所有TLB內(nèi)的線性地址空間無(wú)效。不同的操作仍可對(duì)其他指令出現(xiàn)。例如,在一個(gè)實(shí)施例中,檢測(cè)到CR4值內(nèi)無(wú)改變的MOV to CR4指令可使每一ASID內(nèi)的所有TLB條目無(wú)效。
現(xiàn)在參看圖3,示出了根據(jù)本發(fā)明一實(shí)施例的方法的流程圖。方法100可用于在處理器內(nèi)的不同上下文之間切換。如圖3所示,可進(jìn)行第一和第二地址空間之間的切換(框110)。雖然未在圖3中示出,但是在這一切換之前,第一地址空間可被保存到對(duì)應(yīng)于當(dāng)前地址空間標(biāo)識(shí)符的控制寄存器(或其他存儲(chǔ)器)中。在其它實(shí)施例中,這一保存可在其他時(shí)刻進(jìn)行。
地址空間切換可對(duì)應(yīng)于VM退出或VM進(jìn)入,或者可由MOV to CR3指令或其他類似事件所引起。接著,可確定ASID列表中是否存在第二地址空間(菱形框120)。這一列表可由處理器維持以標(biāo)識(shí)不同的活動(dòng)地址空間、與其相對(duì)應(yīng)的線性地址空間內(nèi)的位置、以及其他任選信息。例如,ASID列表可以是處理器中的便箋式存儲(chǔ)器。
如果ASID列表內(nèi)存在第二地址空間,則控制就可傳至框130,其中可維持包括了對(duì)應(yīng)于第一地址空間的TLB內(nèi)任何條目的第一地址空間。此外,第二ASID可被存儲(chǔ)在處理器的控制寄存器(例如,當(dāng)前ASID寄存器)(或其他存儲(chǔ)器位置)內(nèi)以指示該第二地址空間(即,在菱形框120中找到的地址空間)是處理器內(nèi)當(dāng)前執(zhí)行的地址空間(框135)。
如果相反在菱形框120處確定ASID列表內(nèi)不存在第二地址空間,則接著就確定ASID列表是否已滿(菱形框140)。如果該列表未滿,則控制可傳至框145,其中可維持包括了對(duì)應(yīng)于第一地址空間的TLB內(nèi)任何條目的第一地址空間。此外,第二ASID可被存儲(chǔ)在處理器的控制寄存器(例如,當(dāng)前ASID寄存器或其他存儲(chǔ)器位置)內(nèi)以指示該第二地址空間(即,來(lái)自以下討論的框160的空地址空間或自由地址空間)是處理器內(nèi)的當(dāng)前執(zhí)行地址空間(框150)。
如果相反在菱形框140處確定ASID列表已滿,則在ASID列表內(nèi)對(duì)應(yīng)于LRU條目的TLB內(nèi)的條目就被清除(菱形框160)。隨后控制可傳至方框145以便于進(jìn)一步的處理,其中如上所述在該框145處第二ASID可被存儲(chǔ)在LRU條目?jī)?nèi)。因此,就能啟用TLB條目以及與第二ASID相關(guān)聯(lián)的其他資源。
雖然在圖3實(shí)施例中示為使用LRU策略來(lái)清除TLB條目,但是應(yīng)該理解,在其它實(shí)施例中也可使用其他策略或機(jī)制來(lái)確定在ASID列表全滿時(shí)清除的合適地址空間。
在某些實(shí)施例中,取決于地址空間切換的原因,可使用軟件清除TLB內(nèi)的特定條目或其他處理器資源。例如,如上所述,如果對(duì)受保護(hù)頁(yè)面的存儲(chǔ)嘗試引起VM退出,則清除對(duì)應(yīng)于該受保護(hù)空間的TLB內(nèi)的地址。也就是說(shuō),在VMX體系結(jié)構(gòu)的各種實(shí)現(xiàn)中,VMX監(jiān)視器保護(hù)每個(gè)分頁(yè)的分層結(jié)構(gòu)。在虛擬化的環(huán)境中,軟件可用于清除TLB或由客戶支配的其他資源。隨后,因?yàn)樘摂M化軟件處理本文中所述的清除活動(dòng),所以由客戶承擔(dān)的某些事件(例如,MOVto CR3指令)將不會(huì)清除資源。于是在客戶中,如果任何存儲(chǔ)指令修改了由CR3在CR3目標(biāo)值中使用的TLB條目,則會(huì)產(chǎn)生VM退出。
使用根據(jù)本發(fā)明一實(shí)施例的半透明ASID,軟件在這一VM退出之后可清除對(duì)應(yīng)于引起該VM退出的存儲(chǔ)指令的所有TLB條目,即使客戶在VM退出時(shí)刻并沒(méi)有使用該TLB條目。在這一實(shí)施例中,如果軟件期望清除單個(gè)條目,則軟件可用合適地址空間內(nèi)對(duì)應(yīng)于TLB條目的線性地址來(lái)執(zhí)行INVLPG指令。對(duì)于這一軟件調(diào)用INVLPG,處理器可清除對(duì)應(yīng)于該線性地址的任何TLB條目,而無(wú)需考慮它們的ASID。雖然描述了使用INVLPG指令來(lái)實(shí)現(xiàn),但是在其它實(shí)施例中其他指令或操作也可清除這些條目。
現(xiàn)在參看圖4,示出了根據(jù)本發(fā)明一實(shí)施例的方法的流程圖。更具體地,圖4示出了用于清除TLB內(nèi)某些條目的方法200。這一方法可在VM環(huán)境內(nèi)執(zhí)行,并且可基于VM退出起動(dòng)。如圖4所示,方法200可通過(guò)確定VM退出的原因(框210)開(kāi)始。例如,在一個(gè)實(shí)施例中,可分析在VM退出之前的最后一個(gè)操作以確定是否對(duì)受保護(hù)存儲(chǔ)器空間執(zhí)行存儲(chǔ)或其他存儲(chǔ)器操作引起了該VM退出。當(dāng)然也存在使VM退出發(fā)生的許多其他原因。
然后,在菱形框220處可確定存儲(chǔ)操作是否嘗試修改受保護(hù)的條目,諸如受保護(hù)的TLB條目(例如,對(duì)應(yīng)于不同地址空間)。如果不是,在可繼續(xù)VMX監(jiān)視器的正常執(zhí)行(框230)。這一執(zhí)行可取決于程序指令采取許多形式。在這一執(zhí)行之后,控制可在需要時(shí)返回給客戶。
如果相反確定存儲(chǔ)嘗試修改受保護(hù)的條目,則因?yàn)樵揤MX監(jiān)視器能訪問(wèn)該客戶不能訪問(wèn)的受保護(hù)位置,所以該VMX監(jiān)視器可執(zhí)行該存儲(chǔ)操作(框235)。然后,對(duì)應(yīng)于該存儲(chǔ)地址的所有TLB條目可從所有TLB和其他存儲(chǔ)器資源中清除(框240)。VM進(jìn)入然后將控制返回給客戶以便繼續(xù)執(zhí)行(框245)。這一執(zhí)行例如可在下一個(gè)客戶指令處繼續(xù)。
在其它實(shí)施例中,可期望清除所有TLB內(nèi)的所有條目。例如,如果已經(jīng)修改了更高級(jí)的分頁(yè)機(jī)制,則可期望該清除能清空TLB或在VMX監(jiān)視器不再保護(hù)地址空間時(shí)從TLB中移除該地址空間。在一實(shí)施例中,如果軟件期望清除用于一地址空間的整個(gè)TLB,則軟件可用已經(jīng)存儲(chǔ)在那里的完全相同值執(zhí)行MOVto CR3指令。因?yàn)樵撥浖恢付膫€(gè)ASID需要被清除,所以當(dāng)處理器看見(jiàn)這一CR4寫(xiě)入時(shí),該處理器就清除用于所有ASID的所有TLB。在各個(gè)實(shí)施例中,如果PDE(或更高)條目被改變或者如果CR3從CR3目標(biāo)值中移除并且監(jiān)視器不再保護(hù)它,則軟件就可清除用于一地址空間的整個(gè)TLB。
現(xiàn)參看圖5,示出了根據(jù)本發(fā)明一實(shí)施例的另一種方法的流程圖。具體地,方法250用于清除所有ASID的所有TLB。如圖5所示,這一方法通過(guò)接收MOV to CR3指令(橢圓框255)開(kāi)始。處理器基于該指令的接收確定新CR4值是否與其前一值相同(菱形框260)。如果該新地址值不同,則執(zhí)行正常的CR4操作(框270)。這些操作可基于CR4內(nèi)不同位的狀態(tài)而變化。例如,基于位狀態(tài)可清除諸如TLB的處理器資源,并且可進(jìn)行其他處理。例如,改變數(shù)據(jù)的CR4轉(zhuǎn)換可引起對(duì)清除至少當(dāng)前TLB內(nèi)條目的需要。此外,這一CR4轉(zhuǎn)換可要求地址空間的改變??捎门c參看圖3所述的相類似的方式來(lái)執(zhí)行這一地址空間改變。
如果相反確定新值與前一值相同,則這可以是指示VMX監(jiān)視器或其他實(shí)體期望清除所有TLB的標(biāo)志。如上所述,存在清除所有TLB的各種原因。因此,在框280處,可對(duì)所有ASID清除所有TLB。最后,執(zhí)行可在相同(即,初始)地址空間內(nèi)繼續(xù)(框290)(例如,在下一個(gè)指令處)。
雖然在圖5的實(shí)施例中描述為基于MOV to CR3指令實(shí)現(xiàn),但是應(yīng)該理解,在其它實(shí)施例中也可使用其他指令或操作來(lái)作為指示VMX監(jiān)視器或其他條目期望清除所有TLB的標(biāo)志。此外,雖然參看圖5的具體實(shí)現(xiàn)做出了描述,但是在其它實(shí)施例中也可分析因預(yù)定指令產(chǎn)生的任何選定值以確定是否有值改變。如果沒(méi)有,就可對(duì)一個(gè)或多個(gè)處理器資源執(zhí)行期望動(dòng)作。
現(xiàn)在參看圖6,示出了根據(jù)本發(fā)明一實(shí)施例的代表性計(jì)算機(jī)系統(tǒng)400的框圖。如圖6所示,計(jì)算機(jī)系統(tǒng)400包括處理器401。在一個(gè)實(shí)施例中,處理器401可經(jīng)由前側(cè)總線420耦合至存儲(chǔ)器集線器430,而該存儲(chǔ)器集線器430可經(jīng)由存儲(chǔ)器總線耦合至共享主存儲(chǔ)器440。如圖6所示,處理器401根據(jù)本發(fā)明一實(shí)施例可包括TLB 403和ASID列表405。此外,2級(jí)(L2)高速緩存407可耦合至處理器401。
存儲(chǔ)器集線器430還可(經(jīng)由集線器鏈路)耦合至I/O集線器435,而該I/O集線器435則耦合至I/O擴(kuò)展總線455和外圍總線450。在各實(shí)施例中,I/O擴(kuò)展總線455可耦合至諸如鍵盤(pán)和鼠標(biāo)的各種I/O設(shè)備。外圍總線450可耦合至諸如可以是諸如閃存、插入卡之類存儲(chǔ)器設(shè)備的外圍設(shè)備470的各種組件。雖然本說(shuō)明書(shū)提到了系統(tǒng)400的具體部件,但是對(duì)所示實(shí)施例的各種修改也是可能的。
各實(shí)施例可用存儲(chǔ)在存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序?qū)崿F(xiàn),其中這些程序具有編程計(jì)算機(jī)系統(tǒng)來(lái)執(zhí)行這些實(shí)施例的指令。存儲(chǔ)介質(zhì)可包括但不限于包括軟盤(pán)、光盤(pán)、光盤(pán)只讀存儲(chǔ)器(CD-ROM)、可重寫(xiě)光盤(pán)(CD-RW)和磁光盤(pán)的任何類型的盤(pán);諸如只讀存儲(chǔ)器(ROM)、例如動(dòng)態(tài)或靜態(tài)隨機(jī)存取存儲(chǔ)器(RAM)的RAM、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、閃存、磁性卡或光學(xué)卡的半導(dǎo)體器件;或者用于存儲(chǔ)電子指令的任何類型的介質(zhì)。其他實(shí)施例可被實(shí)現(xiàn)為由可編程控制設(shè)備執(zhí)行的軟件模塊。
因?yàn)檐浖兄谔幚砥鞅Wo(hù)和無(wú)效TLB條目,所以在各實(shí)施例中可以在上下文切換(例如,MOV to CR3、VM退出和VM進(jìn)入)時(shí)維持TLB條目。于是在各實(shí)施例中無(wú)需窺探TLB硬件,從而避免了窺探TLB容量或其他限制。
在其它實(shí)施例中,半透明ASID可用于含有不將ID顯式地分配給不同的地址空間、但要求處理器即使在TLB條目未被當(dāng)前地址空間使用的情況下也在修改頁(yè)面表之后采取具體動(dòng)作清除TLB條目的頁(yè)面表的任何體系結(jié)構(gòu)中。
因此,在各實(shí)施例中,處理器可支持ASID并避免TLB清除(例如,在上下文切換時(shí)),而無(wú)需專門(mén)的硬件檢測(cè)交叉地址空間污染、也無(wú)需顯式的軟件控制和ASID分配。
雖然已對(duì)有限數(shù)目的實(shí)施例描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員應(yīng)該認(rèn)識(shí)到可從中做出許多修改和變化。所附權(quán)利要求
旨在覆蓋落入本發(fā)明真實(shí)精神和范圍內(nèi)的所有這些修改和變化。
權(quán)利要求
1.一種方法,包括在第一地址空間和第二地址空間之間切換;確定在地址空間列表內(nèi)是否存在所述第二地址空間;并且在所述切換之后維持翻譯緩沖器內(nèi)所述第一地址空間的條目。
2.如權(quán)利要求
1所述的方法,其特征在于,還包括從所述列表中獲取對(duì)應(yīng)于所述第二地址空間的地址空間標(biāo)識(shí)符,并且將所述地址空間標(biāo)識(shí)符存儲(chǔ)在控制寄存器內(nèi)。
3.如權(quán)利要求
1所述的方法,其特征在于,還包括如果在所述地址空間列表內(nèi)不存在所述第二地址空間,則清除所述翻譯緩沖器內(nèi)選定地址空間的條目。
4.如權(quán)利要求
1所述的方法,其特征在于,還包括確定對(duì)受保護(hù)位置的存儲(chǔ)是否引起了所述切換。
5.如權(quán)利要求
4所述的方法,其特征在于,還包括如果所述存儲(chǔ)引起了所述切換,則從所述翻譯緩沖器清除對(duì)應(yīng)于所述受保護(hù)位置的條目。
6.如權(quán)利要求
5所述的方法,其特征在于,清除對(duì)應(yīng)于所述受保護(hù)位置的所述條目包括使用無(wú)效條目指令使所述翻譯緩沖器內(nèi)的線性地址無(wú)效。
7.如權(quán)利要求
1所述的方法,其特征在于,所述第一地址空間包括客戶軟件,而所述第二地址空間包括虛擬機(jī)監(jiān)視器。
8.如權(quán)利要求
7所述的方法,其特征在于,還包括在虛擬機(jī)退出操作時(shí)維持所述條目。
9.如權(quán)利要求
1所述的方法,其特征在于,所述第一地址空間包括虛擬機(jī)監(jiān)視器,而所述第二地址空間包括客戶軟件。
10.如權(quán)利要求
9所述的方法,其特征在于,還包括在虛擬機(jī)進(jìn)入操作時(shí)維持所述條目。
11.一種方法,包括在客戶軟件和虛擬機(jī)監(jiān)視器之間切換;確定對(duì)受保護(hù)位置的存儲(chǔ)是否引起了所述切換;以及選擇性地清除對(duì)應(yīng)于所述受保護(hù)位置的處理器資源的至少一個(gè)條目,同時(shí)維持對(duì)應(yīng)于所述客戶軟件的所述處理器資源的其他條目。
12.如權(quán)利要求
11所述的方法,其特征在于,還包括如果在地址空間列表中不存在對(duì)應(yīng)于所述虛擬機(jī)監(jiān)視器的地址空間標(biāo)識(shí)符,則清除所述處理器資源內(nèi)選定地址空間的頁(yè)面條目。
13.如權(quán)利要求
11所述的方法,其特征在于,還包括使用無(wú)效條目指令選擇性地清除所述至少一個(gè)條目。
14.如權(quán)利要求
11所述的方法,其特征在于,所述切換是由控制寄存器移動(dòng)指令引起的。
15.如權(quán)利要求
11所述的方法,其特征在于,選擇性地清除所述至少一個(gè)條目包括清除未由當(dāng)前地址空間使用的至少一個(gè)條目。
16.如權(quán)利要求
11所述的方法,其特征在于,還包括使用微代碼啟用對(duì)其他條目的維持。
17.一種方法,包括確定預(yù)定指令是否未修改選定值;以及如果未修改所述選定值則對(duì)處理器資源采取動(dòng)作。
18.如權(quán)利要求
17所述的方法,其特征在于,還包括清除所述處理器資源的所有地址空間內(nèi)的所有條目。
19.如權(quán)利要求
17所述的方法,其特征在于,所述預(yù)定指令包括移動(dòng)至控制寄存器指令。
20.如權(quán)利要求
17所述的方法,其特征在于,所述選定值包括控制寄存器值。
21.如權(quán)利要求
17所述的方法,其特征在于,采取動(dòng)作包括清除至少一個(gè)翻譯后備緩沖器。
22.一種裝置,包括具有第一和第二地址空間的條目的處理器資源,所述第一和第二地址空間對(duì)應(yīng)于相應(yīng)的第一和第二地址空間標(biāo)識(shí)符;以及耦合至所述處理器資源的執(zhí)行引擎,以在上下文切換至所述第二地址空間時(shí)維持所述第一地址空間的至少一部分條目。
23.如權(quán)利要求
22所述的裝置,其特征在于,還包括耦合至所述處理器資源以向所述條目提供所述第一和第二地址空間標(biāo)識(shí)符的地址空間緩沖器。
24.如權(quán)利要求
22所述的裝置,其特征在于,如果對(duì)受保護(hù)位置的存儲(chǔ)引起所述上下文切換,則所述執(zhí)行引擎適于執(zhí)行微代碼以選擇性地清除所述第一地址空間的條目。
25.如權(quán)利要求
22所述的裝置,其特征在于,所述處理器資源包括翻譯后備緩沖器。
26.一種系統(tǒng),包括處理器,包括具有第一和第二地址空間的條目的處理器資源,所述第一和第二地址空間分別對(duì)應(yīng)于第一和第二地址空間標(biāo)識(shí)符,以及耦合至所述處理器資源的執(zhí)行引擎,所述執(zhí)行引擎在上下文切換至所述第二地址空間時(shí)維持所述第一地址空間的至少一部分條目;以及耦合于所述處理器的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器。
27.如權(quán)利要求
26所述的系統(tǒng),其特征在于,還包括耦合至所述處理器資源的地址空間緩沖器,以向所述處理器資源提供所述第一和第二地址空間標(biāo)識(shí)符。
28.如權(quán)利要求
26所述的系統(tǒng),其特征在于,還包括地址空間標(biāo)識(shí)符列表,以將具有條目的地址空間標(biāo)識(shí)符存儲(chǔ)在所述處理器資源內(nèi)。
29.如權(quán)利要求
26所述的系統(tǒng),其特征在于,所述處理器資源包括翻譯后備緩沖器。
30.一種包括含有指令的機(jī)器可訪問(wèn)存儲(chǔ)介質(zhì)的物品,如果執(zhí)行所述指令會(huì)使得系統(tǒng)確定預(yù)定指令是否未修改選定值;以及如果所述選定值未被修改則對(duì)處理器資源執(zhí)行一動(dòng)作。
31.如權(quán)利要求
30所述的物品,其特征在于,還包括如果被執(zhí)行就能使所述系統(tǒng)清除所述處理器資源的所有地址空間內(nèi)所有條目的指令。
32.如權(quán)利要求
30所述的物品,其特征在于,還包括如果被執(zhí)行就能使所述系統(tǒng)清除至少一個(gè)翻譯后備緩沖器的指令。
專利摘要
在本發(fā)明一實(shí)施例中,一種方法包括在第一地址空間和第二地址空間之間切換,確定在地址空間列表內(nèi)是否存在該第二地址空間;并且在切換之后維持翻譯緩沖器內(nèi)第一地址空間的條目。這樣,可降低與上下文切換相關(guān)聯(lián)的額外開(kāi)銷。
文檔編號(hào)G06F9/455GK1993683SQ20058002572
公開(kāi)日2007年7月4日 申請(qǐng)日期2005年7月14日
發(fā)明者J·布蘭特, S·K·蒙達(dá)爾, R·烏利希, G·尼格, R·喬治 申請(qǐng)人:英特爾公司導(dǎo)出引文BiBTeX, EndNote, RefMan
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
陇西县| 曲周县| 榆树市| 恩平市| 赫章县| 九龙城区| 尤溪县| 勐海县| 大同县| 青铜峡市| 广平县| 鄂尔多斯市| 石屏县| 新昌县| 中西区| 政和县| 五华县| 涪陵区| 上栗县| 古丈县| 云安县| 宣武区| 旬阳县| 彰化县| 谷城县| 台南县| 集贤县| 武功县| 突泉县| 晴隆县| 六安市| 九寨沟县| 方正县| 福建省| 界首市| 锡林郭勒盟| 珲春市| 张家川| 郯城县| 射阳县| 桂平市|