用于細(xì)粒存儲(chǔ)器保護(hù)的方法和設(shè)備的制造方法
【專利說明】用于細(xì)粒存儲(chǔ)器保護(hù)的方法和設(shè)備 【背景技術(shù)】 技術(shù)領(lǐng)域
[0001] 本發(fā)明總體涉及計(jì)算機(jī)處理器領(lǐng)域。更具體而言,本發(fā)明涉及用于細(xì)粒存儲(chǔ)器保 護(hù)的設(shè)備和方法。
[0002] 相關(guān)技術(shù)描述
[0003] 虛擬機(jī)系統(tǒng)是包括支持一個(gè)或多個(gè)虛擬機(jī)(VM)的虛擬機(jī)監(jiān)視器(VMM)的計(jì)算機(jī) 系統(tǒng)。虛擬機(jī)監(jiān)視器(VMM)是控制物理計(jì)算機(jī)硬件并給在虛擬機(jī)(VM)內(nèi)執(zhí)行的程序呈現(xiàn) 它們正在在真正的物理計(jì)算機(jī)硬件上執(zhí)行的假象的軟件程序。每一個(gè)VM都通常充當(dāng)由〃 訪客"操作系統(tǒng)(OS) (即,由VMM托管的OS)控制的自包含平臺(tái),該平臺(tái)執(zhí)行時(shí)好像它在真 實(shí)機(jī)器上運(yùn)行,而不是在VM內(nèi)。
[0004] 為實(shí)現(xiàn)此模仿,VM內(nèi)的某些操作(例如,配置設(shè)備硬件的企圖)必須被VMM捕捉 并模仿,VMM將執(zhí)行模仿虛擬硬件資源(例如,被模仿的設(shè)備)以維持訪客OS正在操縱真 正硬件的假象的操作。如此,在虛擬機(jī)系統(tǒng)中,從VM到VMM的過渡以及反向過渡將以某種 頻率發(fā)生,該頻率取決于VMM必須模仿的指令和事件的數(shù)量。
[0005] 在虛擬存儲(chǔ)器系統(tǒng)中,由軟件(〃虛擬〃地址)所生成的存儲(chǔ)器地址被硬件轉(zhuǎn)換為 然后被用來引用存儲(chǔ)器的物理地址。此轉(zhuǎn)換過程叫做分頁(yè),用于執(zhí)行轉(zhuǎn)換的硬件叫做分頁(yè) 硬件。在許多虛擬存儲(chǔ)器系統(tǒng)中,虛擬到物理地址轉(zhuǎn)換由駐留在存儲(chǔ)器中的一組數(shù)據(jù)結(jié)構(gòu) (叫做"頁(yè)面表")中的系統(tǒng)軟件進(jìn)行定義?,F(xiàn)代的虛擬存儲(chǔ)器系統(tǒng)通常在系統(tǒng)的中央處理 單元(CPU)中包括專門的緩存結(jié)構(gòu),常常叫做轉(zhuǎn)換后備緩沖器(TLB),該結(jié)構(gòu)存儲(chǔ)有關(guān)虛擬 到物理地址轉(zhuǎn)換的信息,并能夠比存儲(chǔ)器快得多地被訪問。
[0006] 當(dāng)OS停止執(zhí)行一個(gè)進(jìn)程并開始執(zhí)行另一個(gè)進(jìn)程時(shí),它通常將通過指示硬件使用 新的一組分頁(yè)結(jié)構(gòu),來改變地址空間。這可以使用軟件或硬件機(jī)制來實(shí)現(xiàn),以使TLB的全部 內(nèi)容作廢或刪除。比進(jìn)程之間的變化更頻繁的是進(jìn)程和OS軟件之間的控制的過渡。由于 此,如果TLB在每一個(gè)這樣的過渡中被作廢,則系統(tǒng)性能將受到嚴(yán)重?fù)p失。如此,現(xiàn)代的操 作系統(tǒng)通常被構(gòu)建為不要求地址空間的更改。每個(gè)地址空間中的(虛擬)存儲(chǔ)器地址的一 個(gè)或多個(gè)范圍被保護(hù),以便只有OS才可以訪問那些范圍中的地址。
[0007] 某些虛擬機(jī)系統(tǒng)可以支持多層VMM。例如,有時(shí)被稱為虛擬機(jī)擴(kuò)展(VMX)根的單一 VMM直接控制CPU。此VMX根可以在訪客VM中支持本身可以支持訪客VM的其他"訪客'?ΜΜ。 對(duì)于分層的支持可以通過軟件、硬件,或兩者的組合來提供。
[0008] VMM可以在頁(yè)面級(jí)別監(jiān)視運(yùn)行時(shí)數(shù)據(jù)結(jié)構(gòu)完整性。即,讀/寫特權(quán)及其他存儲(chǔ)器策 略在存儲(chǔ)器頁(yè)面的粒度實(shí)現(xiàn),存儲(chǔ)器頁(yè)面通常是4k字節(jié)尺寸。OS內(nèi)的帶內(nèi)(IB)代理通過 VMX根來配置這些策略。對(duì)被監(jiān)視的頁(yè)面的寫入訪問生成虛擬化異常(VE)。利用現(xiàn)有的硬 件,這會(huì)導(dǎo)致IB代理對(duì)存儲(chǔ)器訪問者進(jìn)行檢查/列出白名單。由于此架構(gòu),假共享的數(shù)據(jù) 結(jié)構(gòu)(相同4K頁(yè)面上的數(shù)據(jù))可能會(huì)導(dǎo)致必須被IB代理蠻力過濾的大量的VE事件。子 頁(yè)面(小于4K)區(qū)域保護(hù)適用的使用情況的其他示例是:用于虛擬化的存儲(chǔ)器映射的輸入 /輸出(MMIO)設(shè)備存儲(chǔ)器區(qū)域;用于頁(yè)面表中的稀疏映射的頁(yè)面表保護(hù);對(duì)VM存儲(chǔ)器設(shè)立 檢查點(diǎn);以及,支持存儲(chǔ)器監(jiān)視僅限于用于VM自省的4K粒度的應(yīng)用程序編程接口(API)的 任何VMM架構(gòu)。
[0009] 附圖簡(jiǎn)述
[0010] 結(jié)合以下附圖,從以下【具體實(shí)施方式】中可獲得對(duì)本發(fā)明更好的理解,其中:
[0011] 圖IA是示出根據(jù)本發(fā)明的各實(shí)施例的示例性有序流水線和示例性的寄存器重命 名的無序發(fā)布/執(zhí)行流水線的框圖;
[0012] 圖IB是示出根據(jù)本發(fā)明的各實(shí)施例的要包括在處理器中的有序架構(gòu)核的示例性 實(shí)施例和示例性的寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu)核的框圖;
[0013] 圖2是根據(jù)本發(fā)明的實(shí)施例的具有集成的存儲(chǔ)器控制器和圖形器件的單核處理 器和多核處理器的框圖;
[0014] 圖3示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖;
[0015] 圖4示出根據(jù)本發(fā)明的實(shí)施例的第二系統(tǒng)的框圖;
[0016] 圖5示出根據(jù)本發(fā)明的實(shí)施例的第三系統(tǒng)的框圖;
[0017] 圖6示出了根據(jù)本發(fā)明的實(shí)施例的芯片上系統(tǒng)(SoC)的框圖;
[0018] 圖7示出根據(jù)本發(fā)明的各實(shí)施例的對(duì)照使用軟件指令轉(zhuǎn)換器將源指令集中的二 進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖;
[0019] 圖8示出了用于細(xì)粒存儲(chǔ)器保護(hù)的架構(gòu)的一個(gè)實(shí)施例;
[0020] 圖9示出了用于細(xì)粒存儲(chǔ)器保護(hù)的一個(gè)實(shí)施例中使用的更多細(xì)節(jié);
[0021] 圖10示出了在一個(gè)實(shí)施例中在分層表結(jié)構(gòu)中執(zhí)行的查詢;
[0022] 圖11示出了用于細(xì)粒存儲(chǔ)器保護(hù)的方法的一個(gè)實(shí)施例;以及
[0023] 圖12示出了用64位向量表示讀?。≧)、寫入(W)、執(zhí)行禁用(XD),以及臟位的實(shí)施 例。 【具體實(shí)施方式】
[0024] 在下面的描述中,出于說明目的,闡述了眾多具體細(xì)節(jié)以便提供對(duì)以下描述的本 發(fā)明的實(shí)施例的全面理解。然而,對(duì)本領(lǐng)域的技術(shù)人員顯而易見的是,可以在沒有這些具體 細(xì)節(jié)中的一些細(xì)節(jié)的情況下實(shí)施本發(fā)明的實(shí)施例。在其他實(shí)例中,公知的結(jié)構(gòu)和設(shè)備以框 圖形式示出,以避免使本發(fā)明實(shí)施例的基本原理不清楚。
[0025] 示例性處理器架構(gòu)和數(shù)據(jù)類型
[0026] 圖IA是示出根據(jù)本發(fā)明的各實(shí)施例的示例性有序流水線和示例性的寄存器重命 名的無序發(fā)布/執(zhí)行流水線的框圖。圖IB是示出根據(jù)本發(fā)明的各實(shí)施例的要包括在處理 器中的有序架構(gòu)核的示例性實(shí)施例和示例性的寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu)核的 框圖。圖IA-B中的實(shí)線框示出有序流水線和有序核,而任選增加的虛線框示出寄存器重命 名的無序發(fā)布/執(zhí)行流水線和核。給定有序方面是無序方面的子集的情況下,將描述無序 方面。
[0027] 在圖IA中,處理器流水線100包括獲取級(jí)102、長(zhǎng)度解碼級(jí)104、解碼級(jí)106、分配 級(jí)108、重命名級(jí)110、調(diào)度(也稱為分派或發(fā)布)級(jí)112、寄存器讀取/存儲(chǔ)器讀取級(jí)114、 執(zhí)行級(jí)116、寫回/存儲(chǔ)器寫入級(jí)118、異常處理級(jí)122以及提交級(jí)124。
[0028] 圖IB示出了處理器核190,包括耦合到執(zhí)行引擎單元150的前端單元130,該執(zhí) 行引擎單元和該前端單元兩者都耦合到存儲(chǔ)器單元170。核190可以是精簡(jiǎn)指令集計(jì)算 (RISC)核、復(fù)雜指令集計(jì)算(CISC)核、超長(zhǎng)指令字(VLIW)核或混合或替代核類型。作為又 一選項(xiàng),核190可以是專用核,諸如例如網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)處理器核、通用計(jì)算圖 形處理器單元(GPGPU)核、或圖形核等等。
[0029] 前端單元130包括親合到指令高速緩存單元134的分支預(yù)測(cè)單元132,該指令高速 緩存單元耦合到指令轉(zhuǎn)換后備緩沖器(TLB) 136,該指令轉(zhuǎn)換后備緩沖器耦合到指令獲取單 元138,該指令獲取單元耦合到解碼單元140。解碼單元140 (或解碼器)可解碼指令,并生 成從原始指令解碼出的、或以其他方式反映原始指令的、或從原始指令導(dǎo)出的一個(gè)或多個(gè) 微操作、微代碼進(jìn)入點(diǎn)、微指令、其他指令、或其他控制信號(hào)作為輸出。解碼單元140可使用 各種不同的機(jī)制來實(shí)現(xiàn)。合適的機(jī)制的示例包括但不限于查找表、硬件實(shí)現(xiàn)、可編程邏輯陣 列(PLA)、微代碼只讀存儲(chǔ)器(ROM)等。在一個(gè)實(shí)施例中,核190包括(例如,在解碼單元 140中或否則在前端單元130內(nèi)的)微代碼ROM或存儲(chǔ)某些宏指令的微代碼的其他介質(zhì)。 解碼單元140耦合到執(zhí)行引擎單元150中的重命名/分配器單元152。
[0030] 執(zhí)行引擎單元150包括耦合到引退單元154的重命名/分配器單元152和一組一 個(gè)或多個(gè)調(diào)度器單元156。調(diào)度器單元156表示任意數(shù)量的不同的調(diào)度器,包括預(yù)留站、中 心指令窗口等等。調(diào)度器單元156耦合到物理寄存器組單元158。每個(gè)物理寄存器組單元 158表示一個(gè)或多個(gè)物理寄存器組,其中不同的物理寄存器組存儲(chǔ)一種或多種不同的數(shù)據(jù) 類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、緊縮整數(shù)、緊縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn)、狀態(tài)(例如,作 為要執(zhí)行的下一指令的地址的指令指針)等。在一個(gè)實(shí)施例中,物理寄存器組單元158包 括向量寄存器單元、寫掩碼寄存器單元和標(biāo)量寄存器單元。這些寄存器單元可以提供架構(gòu) 向量寄存器、向量掩碼寄存器、和通用寄存器。物理寄存器組單元158與引退單元154重疊 以示出可以用來實(shí)現(xiàn)寄存器重命名和無序執(zhí)行的各種方式(例如,使用重新排序緩沖器和 引退寄存器組;使用將來的文件、歷史緩沖器和引退寄存器組;使用寄存器映射和寄存器 池等等)。引退單元154和物理寄存器組單元158耦合到執(zhí)行群集160。執(zhí)行群集160包括 一組一個(gè)或多個(gè)執(zhí)行單元162和一組一個(gè)或多個(gè)存儲(chǔ)器訪問單元164。執(zhí)行單元162可以 對(duì)各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、緊縮整數(shù)、緊縮浮點(diǎn)、向量整型、向量浮點(diǎn))執(zhí)行各種 操作(例如,移位、加法、減法、乘法)。盡管一些實(shí)施例可以包括專用于特定功能或功能組 的若干個(gè)執(zhí)行單元,但是,其他實(shí)施例可以只包括一個(gè)執(zhí)行單元或都執(zhí)行所有功能的多個(gè) 執(zhí)行單元。調(diào)度器單元156、物理寄存器組單元158以及執(zhí)行群集160被示為可能是多個(gè), 因?yàn)槟承?shí)施例對(duì)于某些類型的數(shù)據(jù)/操作創(chuàng)建單獨(dú)的流水線(例如,標(biāo)量整數(shù)流水線、標(biāo) 量浮點(diǎn)/緊縮整數(shù)/緊縮浮點(diǎn)/向量整數(shù)/向量浮點(diǎn)流水線和/或存儲(chǔ)器訪問流水線,每 一個(gè)流水線都具有它們自己的調(diào)度器單元、物理寄存器組單元和/或執(zhí)行群集一一并且在 單獨(dú)的存儲(chǔ)器訪問流水線的情況下,實(shí)現(xiàn)了其中只有此流水線的執(zhí)行群集具有存儲(chǔ)器訪問 單元164的某些實(shí)施例)。還應(yīng)該理解,使用單獨(dú)的流水線,這些流水線中的一個(gè)或多個(gè)可 以是無序發(fā)出/執(zhí)行,其余的是有序的。
[0031] 存儲(chǔ)器訪問單元164的集合耦合到存儲(chǔ)器單元170,該存儲(chǔ)器單元包括耦合到數(shù) 據(jù)高速緩存單元174的數(shù)據(jù)TLB單元172,其中數(shù)據(jù)高速緩存單元耦合到二級(jí)(L2)高速緩 存單元176。在一個(gè)示例性實(shí)施例中,存儲(chǔ)器訪問單元164可以包括加載單元、存儲(chǔ)地址單 元以及存儲(chǔ)數(shù)據(jù)單元,其中每一個(gè)都耦合到存儲(chǔ)器單元170中的數(shù)據(jù)TLB單元172。指令高 速緩存單元134進(jìn)一步耦合到存儲(chǔ)器單元170中的2級(jí)(L2)高速緩存單元176。L2高速 緩存單元176耦合到一個(gè)或多個(gè)其他級(jí)的高速緩存,并最終耦合到主存儲(chǔ)器。
[0032] 作為示例,示例性寄存器重命名的、無序發(fā)布/執(zhí)行核架構(gòu)可以如下實(shí)現(xiàn)流水線 100 :1)指令取出138執(zhí)行取出和長(zhǎng)度解碼級(jí)102和104 ;2)解碼單元140執(zhí)行解碼級(jí)106 ; 3)重命名/分配器單元152執(zhí)行分配級(jí)108和重命名級(jí)110 ;4)調(diào)度器單元156執(zhí)行調(diào)度 級(jí)112 ;5)物理寄存器組單元158和存儲(chǔ)器單元170執(zhí)行寄存器讀取/存儲(chǔ)器讀取級(jí)114 ; 執(zhí)行