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

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

文檔序號(hào):6606050閱讀:191來源:國知局
專利名稱:體系結(jié)構(gòu)事件期間維持處理器資源的制作方法
體系結(jié)構(gòu)事件期間維持處理器資源本申請(qǐng)是申請(qǐng)?zhí)枮?00580025726. X、國際申請(qǐng)日為2005年7月14日、發(fā)明名稱為 “體系結(jié)構(gòu)事件期間維持處理器資源”的發(fā)明專利申請(qǐng)的分案申請(qǐng)。
背景本發(fā)明一般涉及數(shù)據(jù)處理系統(tǒng),尤其涉及使用處理器在不同上下文中進(jìn)行處理。許多現(xiàn)有的計(jì)算機(jī)系統(tǒng)使用虛擬存儲(chǔ)器系統(tǒng)來管理存儲(chǔ)器,并將其分配給在系統(tǒng) 中運(yùn)行的多個(gè)進(jìn)程,這就允許在該系統(tǒng)上運(yùn)行的每個(gè)進(jìn)程像它能控制由該系統(tǒng)提供的全部 范圍的地址那樣來工作。操作系統(tǒng)(OS)將用于每個(gè)進(jìn)程的虛擬地址空間映射至用于該系 統(tǒng)的實(shí)際物理地址空間。通常使用頁面表來維持從物理地址到虛擬地址的映射。處理器性能可經(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ǔ)在處理器能極快訪問的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ī)制來解決地址翻譯。處理以此方式繼續(xù)直到出現(xiàn)上下文切換。上下文切換會(huì)在多任務(wù) OS停止時(shí)運(yùn)行一個(gè)進(jìn)程(例如,應(yīng)用軟件)并開始運(yùn)行另一個(gè)進(jìn)程時(shí)發(fā)生。當(dāng)發(fā)生上下文 切換時(shí),包括頁面目錄的頁面表和用于新進(jìn)程的頁面表被載入,并且該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)行那樣來工作。因此,客戶軟件期望控制各種事 件并能夠訪問諸如駐留處理器資源、駐留于存儲(chǔ)器內(nèi)的資源和駐留于基礎(chǔ)硬件平臺(tái)的資源 的硬件資源。在虛擬機(jī)環(huán)境中,VMM通常對(duì)這些事件和硬件資源有著最終控制權(quán),以提供客戶軟 件的合適操作,并且為在不同虛擬機(jī)上運(yùn)行的客戶軟件或在這些軟件之間提供保護(hù)。為了 實(shí)現(xiàn)這一目標(biāo),VMM通常在客戶軟件訪問受保護(hù)資源時(shí)或在出現(xiàn)其他事件(諸如中斷或異 常)時(shí)接收控制(即,影響環(huán)境切換)。在VM或其他環(huán)境中的上下文切換會(huì)引起現(xiàn)代微處理器中相當(dāng)大的額外開銷。該 額外開銷會(huì)因?yàn)樵诿看紊舷挛那袚Q時(shí)必須清除并重新加載的巨大二級(jí)TLB而加劇。這樣該 額外開銷就會(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ù)語“地址空間”指的是存 儲(chǔ)器內(nèi)對(duì)應(yīng)于給定應(yīng)用程序(例如上下文)的一組地址。在各個(gè)實(shí)施例中,地址空間可受到確定或影響物理翻譯線性的體系結(jié)構(gòu)控制寄存 器的組合(例如,包括頁面目錄基址寄存器(CR3.PDBR)、頁面級(jí)高速緩存禁用位(PCD)、頁 面級(jí)直寫位(PWT)的控制寄存器3 ;包括分頁位(CR0.PG)、保護(hù)啟用位(CR0.PE)的控制寄 存器0 ;包括頁面大小擴(kuò)展位(CR4.PSE)以及頁面全局啟用位和物理地址擴(kuò)展位(CR4.PGE 和PAE)、經(jīng)擴(kuò)展的功能啟用長寄存器模式尋址(EraR. LMA)和非執(zhí)行位(EFER. NXE)的控制 寄存器4)的控制。在各個(gè)實(shí)施例中,地址空間標(biāo)識(shí)符(ASID)可用于以指向與各個(gè)流水線資源中的 線性地址相關(guān)聯(lián)的上下文的指針來增加這些地址。在這里使用的“地址空間標(biāo)識(shí)符”可以 是標(biāo)識(shí)與其相關(guān)聯(lián)的一個(gè)或多個(gè)地址空間的任何數(shù)字、代碼或其他符號(hào)。在一個(gè)實(shí)施例中, ASID可使用每個(gè)線程兩位ASID(即,四個(gè)地址空間上下文)來實(shí)現(xiàn),盡管本發(fā)明的范圍并 非如此有限。這就允許多個(gè)應(yīng)用程序上下文共享流水線結(jié)構(gòu),從而降低了上下文切換的額 外開銷。例如,當(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(M0V to CR3)指令;改變CRO頁面模式位CR0. PE和CRO. PG 以及EFER. LMA ;改變CR4頁面模式位;VM進(jìn)入(Entry) /退出(Exit);以及32位上下文切 換(如果改變了 CRO或CR4中的分頁模式位)。在某些實(shí)施例中,這些事件中僅有MOV to CR3操作或VMEntry/VMExit事件可改變/遞增ASID。許多流水線結(jié)構(gòu)被線性標(biāo)志或索引。在某些實(shí)施例中,ASID可用指向?qū)?yīng)地址空 間的指針來增加這些流水線資源內(nèi)的線性地址。在這些實(shí)施例中,微處理器可以維持在創(chuàng) 建新的地址空間時(shí)或改變至不同的先前已見的地址空間時(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ì)上的性能增益?,F(xiàn)參看圖1,示出了根據(jù)本發(fā)明一實(shí)施例的適于64位地址翻譯的線性地址翻譯。 如圖1所示,可使用線性地址300來尋址存儲(chǔ)器240內(nèi)的頁面。如圖1所示,線性地址300 包括索引四級(jí)分頁結(jié)構(gòu)以訪問存儲(chǔ)器240內(nèi)物理地址的多個(gè)字段。偏移字段(位0至11)用于尋址存儲(chǔ)器240的一個(gè)頁面內(nèi)的物理地址。頁面表?xiàng)l目(位12至20)尋址頁面表 (PT)310內(nèi)的頁面表?xiàng)l目。頁面目錄條目(位21至29)尋址頁面目錄(PD) 320內(nèi)的頁面目 錄條目。頁面目錄指針(位30至38)尋址頁面目錄指針表(PDPT) 330內(nèi)的頁面目錄指針 條目。最后,頁面映射級(jí)四(PML4)指針(位39至47)尋址PML4340內(nèi)的PML4條目。使用 CR3內(nèi)的指針就可訪問PML4340的基址。以此方式,可使用64位線性地址實(shí)現(xiàn)四級(jí)分頁結(jié) 構(gòu)以訪問物理地址。在各個(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)?ASID字段在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、CRO和CR4分頁位、LMA)的信息保存到便箋式存儲(chǔ)器,并且可將新地址空間與每 個(gè)ASID的已存儲(chǔ)地址空間信息相比較。如果沒有已存儲(chǔ)地址空間/ASID與新地址空間相 匹配,則在之前未看到過該地址空間。因而微代碼可為該地址空間分配新ASID,或選擇一現(xiàn) 有ASID來代替例如最近最少使用(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)稱為客戶軟件。客戶軟件期望訪問該客戶軟件在其上運(yùn)行的VM內(nèi)的物理資源(例如, 處理器寄存器、存儲(chǔ)器和輸入/輸出(I/O)設(shè)備)。VMX監(jiān)視器50可有助于訪問客戶軟件 所期望的資源,同時(shí)還保持對(duì)平臺(tái)硬件內(nèi)資源的最終控制。在一個(gè)實(shí)施例中,可使用存儲(chǔ)在虛擬機(jī)控制結(jié)構(gòu)(VMCS)(未在圖2中具體示出) 內(nèi)一個(gè)或多個(gè)指定字段中的數(shù)據(jù)來定義標(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的頁面表?xiàng)l目(PTE)訪 問的第一頁面35,以及可使用關(guān)于第二客戶軟件40的PTE訪問的第二頁面45。也就是說, 第一頁面35和第二頁面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)于用來指向物理地址空間的線性地址 (或其一部分)。仍參看圖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通過產(chǎn)生由標(biāo)號(hào)60表示的VM退出來控制客戶軟件的操作,該VM退出引起 從當(dāng)前執(zhí)行客戶中退出以強(qiáng)制控制返回VMX監(jiān)視器50。類似地,VMX監(jiān)視器50可通過執(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管理來檢測(cè)交叉地址空間污染。在各個(gè)實(shí)施例中,基于諸如圖2所示的事件,包括使用MOV to CR3指令執(zhí)行的上 下文切換、VM退出或VM進(jìn)入,可避免對(duì)TLB或其他處理器資源的清除,從而在該上下文切 換以及其他體系結(jié)構(gòu)事件時(shí)改進(jìn)性能并降低額外開銷。在某些實(shí)施例中,系統(tǒng)存儲(chǔ)器20內(nèi)的頁面以及其他被高速緩存的頁面于是就可 由跨所有地址空間的VMX監(jiān)視器50來保護(hù),從而對(duì)這些頁面的任何嘗試存儲(chǔ)都可引起從起 動(dòng)這一存儲(chǔ)的客戶軟件的VMX退出。對(duì)于這一事件,VMX監(jiān)視器50可使得對(duì)應(yīng)于這些存儲(chǔ) 的地址在所有TLB和其他處理器資源內(nèi)無效。在各個(gè)實(shí)施例中,處理器可不同地處理某些事件、指令和VMX轉(zhuǎn)換。不同指令和事 件的這些不同實(shí)現(xiàn)可在處理器微代碼中實(shí)現(xiàn)。例如,對(duì)于客戶軟件內(nèi)的MOV to CR3指令、 VM退出或VM進(jìn)入,處理器可尋找與新地址空間匹配的現(xiàn)有ASID。這一確定可通過比較新 地址的ASID與處理器維持的ASID列表來作出。如果匹配存在,則處理器使該ASID成為當(dāng) 前ASID而無需清除任何TLB條目。否則,在一個(gè)實(shí)施例中對(duì)應(yīng)于LRU ASID的所有TLB條 目就被清除,并且最近最少使用ASID的ASID值就作為當(dāng)前ASID。如果該ASID未被清除, 則可維持來自在前地址空間的TLB條目。與之相反,可不同地處理使用于特定頁面的TLB條目無效的指令(例如,INVLPG指 令)。例如,在一個(gè)實(shí)施例中,可基于這一指令使所有TLB內(nèi)的線性地址空間無效。不同的 操作仍可對(duì)其他指令出現(xiàn)。例如,在一個(gè)實(shí)施例中,檢測(cè)到CR4值內(nèi)無改變的MOV to CR4 指令可使每一 ASID內(nèi)的所有TLB條目無效?,F(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)以指示該第二地址空 間(即,來自以下討論的框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策略來清除TLB條目,但是應(yīng)該理解,在其它實(shí) 施例中也可使用其他策略或機(jī)制來確定在ASID列表全滿時(shí)清除的合適地址空間。在某些實(shí)施例中,取決于地址空間切換的原因,可使用軟件清除TLB內(nèi)的特定條 目或其他處理器資源。例如,如上所述,如果對(duì)受保護(hù)頁面的存儲(chǔ)嘗試引起VM退出,則清除 對(duì)應(yīng)于該受保護(hù)空間的TLB內(nèi)的地址。也就是說,在VMX體系結(jié)構(gòu)的各種實(shí)現(xiàn)中,VMX監(jiān)視 器保護(hù)每個(gè)分頁的分層結(jié)構(gòu)。在虛擬化的環(huán)境中,軟件可用于清除TLB或由客戶支配的其 他資源。隨后,因?yàn)樘摂M化軟件處理本文中所述的清除活動(dòng),所以由客戶承擔(dān)的某些事件 (例如,MOV to 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í)刻并沒有使用該TLB條 目。在這一實(shí)施例中,如果軟件期望清除單個(gè)條目,則軟件可用合適地址空間內(nèi)對(duì)應(yīng)于TLB 條目的線性地址來執(zhí)行INVLPG指令。對(duì)于這一軟件調(diào)用INVLPG,處理器可清除對(duì)應(yīng)于該線 性地址的任何TLB條目,而無需考慮它們的ASID。雖然描述了使用INVLPG指令來實(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可通過確定VM退出的原因(框210)開始。例如,在一個(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)視器能訪問該客戶不 能訪問的受保護(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í)的分頁機(jī)制,則可期望該清除能清空TLB或在VMX監(jiān)視器不再保護(hù)地址空間時(shí)從TLB中 移除該地址空間。在一實(shí)施例中,如果軟件期望清除用于一地址空間的整個(gè)TLB,則軟件可 用已經(jīng)存儲(chǔ)在那里的完全相同值執(zhí)行MOV to CR3指令。因?yàn)樵撥浖恢付膫€(gè)ASID需要 被清除,所以當(dāng)處理器看見這一 CR4寫入時(shí),該處理器就清除用于所有ASID的所有TLB。在 各個(gè)實(shí)施例中,如果PDE (或更高)條目被改變或者如果CR3從CR3目標(biāo)值中移除并且監(jiān)視 器不再保護(hù)它,則軟件就可清除用于一地址空間的整個(gè)TLB?,F(xiàn)參看圖5,示出了根據(jù)本發(fā)明一實(shí)施例的另一種方法的流程圖。具體地,方法 250用于清除所有ASID的所有TLB。如圖5所示,這一方法通過接收MOV to CR3指令(橢圓 框255)開始。處理器基于該指令的接收確定新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所述的相類似的方式來執(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í)施例中也可使用其他指令或操作來作為指示VMX監(jiān)視器或其他條目期望清除所有TLB的 標(biāo)志。此外,雖然參看圖5的具體實(shí)現(xiàn)做出了描述,但是在其它實(shí)施例中也可分析因預(yù)定指 令產(chǎn)生的任何選定值以確定是否有值改變。如果沒有,就可對(duì)一個(gè)或多個(gè)處理器資源執(zhí)行 期望動(dòng)作?,F(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可 耦合至諸如鍵盤和鼠標(biāo)的各種I/O設(shè)備。外圍總線450可耦合至諸如可以是諸如閃存、插 入卡之類存儲(chǔ)器設(shè)備的外圍設(shè)備470的各種組件。雖然本說明書提到了系統(tǒng)400的具體部件,但是對(duì)所示實(shí)施例的各種修改也是可能的。各實(shí)施例可用存儲(chǔ)在存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序?qū)崿F(xiàn),其中這些程序具有編程計(jì)算機(jī)系統(tǒng)來執(zhí)行這些實(shí)施例的指令。存儲(chǔ)介質(zhì)可包括但不限于包括軟盤、光盤、光盤只讀存 儲(chǔ)器(CD-ROM)、可重寫光盤(CD-RW)和磁光盤的任何類型的盤;諸如只讀存儲(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ù)和無效TLB條目,所以在各實(shí)施例中可以在上下文切 換(例如,MOV to CR3、VM退出和VM進(jìn)入)時(shí)維持TLB條目。于是在各實(shí)施例中無需窺探 TLB硬件,從而避免了窺探TLB容量或其他限制。在其它實(shí)施例中,半透明ASID可用于含有不將ID顯式地分配給不同的地址空間、 但要求處理器即使在TLB條目未被當(dāng)前地址空間使用的情況下也在修改頁面表之后采取 具體動(dòng)作清除TLB條目的頁面表的任何體系結(jié)構(gòu)中。因此,在各實(shí)施例中,處理器可支持ASID并避免TLB清除(例如,在上下文切換 時(shí)),而無需專門的硬件檢測(cè)交叉地址空間污染、也無需顯式的軟件控制和ASID分配。雖然已對(duì)有限數(shù)目的實(shí)施例描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員應(yīng)該認(rèn)識(shí)到可從 中做出許多修改和變化。所附權(quán)利要求旨在覆蓋落入本發(fā)明真實(shí)精神和范圍內(nèi)的所有這些 修改和變化。
權(quán)利要求
一種方法,包括確定預(yù)定指令是否未修改選定值;以及如果未修改所述選定值則對(duì)處理器資源采取動(dòng)作。
2.如權(quán)利要求1所述的方法,其特征在于,還包括清除所述處理器資源的所有地址空 間內(nèi)的所有條目。
3.如權(quán)利要求1所述的方法,其特征在于,所述預(yù)定指令包括移動(dòng)至控制寄存器指令。
4.如權(quán)利要求1所述的方法,其特征在于,所述選定值包括控制寄存器值。
5.如權(quán)利要求1所述的方法,其特征在于,采取動(dòng)作包括清除至少一個(gè)翻譯后備緩沖器o
6.一種設(shè)備,包括用于確定預(yù)定指令是否未修改選定值的裝置;以及用于如果所述選定值未被修改則對(duì)處理器資源執(zhí)行一動(dòng)作的裝置。
7.如權(quán)利要求6所述的設(shè)備,其特征在于,還包括用于清除所述處理器資源的所有地 址空間內(nèi)所有條目的裝置。
8.如權(quán)利要求6所述的設(shè)備,其特征在于,還包括用于清除至少一個(gè)翻譯后備緩沖器 的裝置。
全文摘要
本發(fā)明涉及體系結(jié)構(gòu)事件期間維持處理器資源。在本發(fā)明一實(shí)施例中,一種方法包括在第一地址空間和第二地址空間之間切換,確定在地址空間列表內(nèi)是否存在該第二地址空間;并且在切換之后維持翻譯緩沖器內(nèi)第一地址空間的條目。這樣,可降低與上下文切換相關(guān)聯(lián)的額外開銷。
文檔編號(hào)G06F12/10GK101872316SQ20101022765
公開日2010年10月27日 申請(qǐng)日期2005年7月14日 優(yōu)先權(quán)日2004年7月30日
發(fā)明者G·尼格, J·布蘭特, R·烏利希, R·喬治, S·K·蒙達(dá)爾 申請(qǐng)人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
合水县| 四子王旗| 远安县| 固安县| 灵台县| 襄樊市| 蓝田县| 秭归县| 华坪县| 临漳县| 兴城市| 临颍县| 张家港市| 松溪县| 化德县| 庆城县| 黄山市| 甘南县| 左权县| 信阳市| 锡林郭勒盟| 象州县| 齐河县| 连南| 淅川县| 罗甸县| 新建县| 遵义市| 花莲县| 睢宁县| 偃师市| 建宁县| 资阳市| 西和县| 株洲县| 武穴市| 图们市| 宜兰县| 三台县| 拜泉县| 汕头市|