TWI723080B - 用於子頁寫入保護的方法及設備 - Google Patents

用於子頁寫入保護的方法及設備 Download PDF

Info

Publication number
TWI723080B
TWI723080B TW105137680A TW105137680A TWI723080B TW I723080 B TWI723080 B TW I723080B TW 105137680 A TW105137680 A TW 105137680A TW 105137680 A TW105137680 A TW 105137680A TW I723080 B TWI723080 B TW I723080B
Authority
TW
Taiwan
Prior art keywords
page
subpage
sub
gpa
processor
Prior art date
Application number
TW105137680A
Other languages
English (en)
Other versions
TW201732604A (zh
Inventor
凡德伊斯 沙巴吉
克里斯多夫 布萊恩
傑夫 威德梅爾
Original Assignee
美商英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商英特爾股份有限公司 filed Critical 美商英特爾股份有限公司
Publication of TW201732604A publication Critical patent/TW201732604A/zh
Application granted granted Critical
Publication of TWI723080B publication Critical patent/TWI723080B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一種用於子頁延伸分頁表保護的設備及方法。舉例來說,設備之一實施例包含:分頁漏失處置器,用以使用客戶實體位址(GPA)進行分頁巡覽且用以偵測以該GPA識別的分頁是否以子頁許可來映射;子頁控制儲存體,用以儲存至少一GPA和其它子頁相關的資料;該分頁漏失處置器用以決定該GPA是否被編程在子頁控制儲存體中;以及該分頁漏失處置器用以發送轉譯到轉譯側查緩衝器(TLB),其具有設定以當存取匹配具有子頁保護指示的TLB項目時引起匹配該子頁控制儲存體的子頁保護指示。

Description

用於子頁寫入保護的方法及設備
本發明一般係關於電腦處理器的領域。更特別的是,本發明係關於用於子頁寫入保護的設備及方法。
虛擬機器系統為一種電腦系統,其包括虛擬機器監視器(VMM;virtual machine monitor),該虛擬機器監視器支援一或多個虛擬機器(VM;virtual machine)。虛擬機器監視器(VMM)為一種軟體程式,其控制實體電腦硬體且以他們正在真實實體電腦硬體上執行的錯覺呈現執行於虛擬機器(VM)內的程式。各個VM典型地作用為自備動力工作平台(self-contained platform),其由「客戶(guest)」作業系統(OS;operating system)所控制,亦即由VMM所主控的OS,其仿佛其在真實機器上而非在VM內運行般地執行。
在一些實行中,虛擬執行環境係由「主(host)」作業系統支援,其係原生地在電腦硬體上執行。主OS可支援多個不同的「客戶」OS,各者有可能地運行 多個不同的應用程式。在此實行中,由應用程式執行的非原生的指令被在主OS內的邏輯攔截、解碼且轉譯成原生指令(native instruction)。接著將原生指令的結果從主OS提供回至應用程式。除了非原生通用指令(general purpose instruction)以外,非原生圖形指令亦可需要被攔截、解碼及轉譯成成生圖形指令以用於在圖形處理單元(GPU;graphics processing unit)上執行。
基於延伸分頁表(EPT;Extended Page Table)的子頁保護允許VMM針對客戶實體記憶體(guest physical memory)在子分(128位元)粒度上特定寫入保護。當利用此性能時,CPU對於如由VMM所特定之4K頁的子頁區域施行寫入存取許可(write-access permission)。基於EPT(EPT-based)的子頁保護係打算藉由VMM致能細粒度的(fine-grained)記憶體寫入施行以用於安全(客戶OS監控)及使用,像是裝置虛擬化和記憶體檢查點(check pointing)。
100‧‧‧處理器管線
102‧‧‧抓取級
104‧‧‧長度解碼級
106‧‧‧解碼級
108‧‧‧分配級
110‧‧‧更名級
112‧‧‧排程級
114‧‧‧暫存器讀取/記憶體讀取級
116‧‧‧執行級
118‧‧‧寫回/記憶體寫入級
122‧‧‧例外處理級
124‧‧‧提交級
130‧‧‧前端單元
132‧‧‧分支預測單元
134‧‧‧指令快取單元
136‧‧‧指令轉譯側查緩衝器
138‧‧‧指令抓取單元
140‧‧‧解碼單元
150‧‧‧執行引擎單元
152‧‧‧更名/分配器單元
154‧‧‧退役單元
156‧‧‧排程器單元
158‧‧‧實體暫存器檔案單元
160‧‧‧執行叢集
162‧‧‧執行單元
164‧‧‧記憶體存取單元
170‧‧‧記憶體單元
172‧‧‧資料TLB單元
174‧‧‧資料快取單元
176‧‧‧二級(L2)快取單元
190‧‧‧核心
200‧‧‧處理器
202A-202N‧‧‧核心
204A-204N‧‧‧快取單元
206‧‧‧共享快取單元
208‧‧‧專用邏輯
210‧‧‧系統代理器
212‧‧‧基於環的互連單元
214‧‧‧積體記憶體控制器單元
216‧‧‧匯流排控制器單元
300‧‧‧系統
310‧‧‧處理器
315‧‧‧處理器
320‧‧‧控制器中樞
340‧‧‧記憶體
345‧‧‧協同處理器
350‧‧‧輸入/輸出中樞
360‧‧‧輸入/輸出(I/O)裝置
390‧‧‧圖形記憶體控制器中樞
395‧‧‧連接
400‧‧‧系統
414‧‧‧I/O裝置
415‧‧‧處理器
416‧‧‧第一匯流排
418‧‧‧處理器
420‧‧‧第二匯流排
422‧‧‧鍵盤及/或滑鼠
424‧‧‧音訊I/O
427‧‧‧通訊裝置
428‧‧‧儲存單元
430‧‧‧指令/代碼及資料
432‧‧‧記憶體
434‧‧‧記憶體
438‧‧‧協同處理器
439‧‧‧高效能介面
450‧‧‧點對點互連
452‧‧‧點對點(P-P)介面
454‧‧‧點對點(P-P)介面
470‧‧‧處理器
472‧‧‧控制邏輯
476‧‧‧點對點(P-P)介面
478‧‧‧點對點(P-P)介面
480‧‧‧處理器
482‧‧‧控制邏輯
486‧‧‧P-P介面
488‧‧‧P-P介面
490‧‧‧晶片組
492‧‧‧介面
494‧‧‧點對點介面電路
496‧‧‧介面
498‧‧‧點對點介面電路
500‧‧‧系統
502A-502N‧‧‧核心
504A-504N‧‧‧快取單元
506‧‧‧共享快取單元
510‧‧‧系統代理器單元
514‧‧‧I/O裝置
515‧‧‧舊有的I/O裝置
516‧‧‧匯流排控制器單元
600‧‧‧晶片上系統
602‧‧‧互連單元
610‧‧‧應用處理器
620‧‧‧協同處理器
630‧‧‧靜態存機存取記憶體(SRAM)單元
632‧‧‧直接記憶體存取(DMA)單元
640‧‧‧顯示單元
702‧‧‧高階語言
704‧‧‧x86編譯器
706‧‧‧x86二進制碼
708‧‧‧指令集編譯器
710‧‧‧指令集二進制碼
712‧‧‧指令轉換器
714‧‧‧x86指令集核心
716‧‧‧x86指令集核心
801‧‧‧OS內核
802‧‧‧記憶體分頁
803‧‧‧安全代理器
805‧‧‧凸顯區域
810‧‧‧擬機器監視器(VMM)
811‧‧‧記憶體視界
812‧‧‧子頁策略模組
813‧‧‧子頁記憶體視界
820‧‧‧處理器
900‧‧‧分頁表
901‧‧‧記憶體分頁虛擬位址
902‧‧‧實體位址
903‧‧‧SPP致能位元
904‧‧‧寫入許可位元
905‧‧‧分頁巡覽邏輯
909‧‧‧轉譯側查緩衝器
910‧‧‧子頁保護模組
911‧‧‧虛擬機器控制結構
912‧‧‧子頁保護表指標
915‧‧‧子頁保護表
1001‧‧‧寫入許可位元
1201‧‧‧SPP位元向量
1202‧‧‧表
1300‧‧‧記憶體叢集
1301‧‧‧子頁控制暫存器
1305‧‧‧微碼輔助
1310‧‧‧分頁漏失處置器
1320‧‧‧允許寫入的草稿暫存器
1401‧‧‧欄位
1402‧‧‧欄位
1403‧‧‧欄位
1404‧‧‧欄位
本發明之較佳的了解能從下列詳細的說明連同下列圖式獲得,其中:圖1A為依據本發明之實施例闡述示範性順序管線及示範性暫存器更名、亂序發出/執行管線兩者的方塊圖;圖1B為依據本發明之實施例闡述用以被包括在處理器內的順序架構核心之示範性實施例和示範性暫存器更 名、亂序發出/執行架構核心兩者的方塊圖;圖2為依據本發明之實施例具有積體記憶體控制器和圖形的單核心處理器及多核心處理器的方塊圖;圖3依據本發明之一實施例闡述系統之方塊圖;圖4依據本發明之實施例闡述第二系統之方塊圖;圖5依據本發明之實施例闡述第三系統之方塊圖;圖6依據本發明之實施例闡述晶片上系統(SOC)之方塊圖;圖7依據本發明之實施例闡述對照用以將在來源指令集中的二進制指令轉換成在目標指令集中的二進制指令的軟體指令轉換器之使用的方塊圖;圖8闡述用於細粒度記憶體保護的架構之一實施例;圖9闡述用於細粒度記憶體保護的一實施例中所採用的額外的細節;圖10闡述在一實施例中於分層表結構中進行的查找;圖11闡述用於細粒度記憶體保護的方法之一實施例;圖12闡述其中讀取(R)、寫入(W)、執行禁能(XD)以及髒位元被展開於64位元向量中的實施例;圖13闡述用於實行子分頁保護的設備之一實施例;以及圖14闡述依據本發明之一實施例在子分頁控制暫存器內的值;以及 圖15闡述依據本發明之一實施例的方法。
【發明內容及實施方式】
在下列說明中,為了解釋的目的,提出眾多的細節以為了提供下面說明之本發明的實施例之全面的了解。然而,對於本領域具有通常知識者將為明白的是,本發明之實施例可不以這些特定細節中的一些來實踐。在其它實例中,周知的結構和裝置係以方塊圖形式來繪示,用以避免模糊本發明之實施例的基本原則。
示範性處理器架構和資料類型
圖1A為依據本發明之實施例闡述示範性順序管線(in-order pipeline)和示範性暫存性更名、亂序發出/執行管線(out-of-order issue/execution pipeline)兩者的方塊圖。圖1B為依據本發明之實施例用以被包括在處理器內順序架構核心之示範性實施例和示範性暫存器更名、亂序發出/執行架構核心兩者的方塊圖。在圖1A~B中的實線方框闡述順序管線及順序核心,同時可選擇的添加虛線方框闡述暫存器更名、亂序發出/執行管線及核心。給定順序態樣為亂序態樣的子集,將說明亂序態樣。
在圖1A中,處理器管線100包括抓取(fetch)級102、長度解碼級104、解碼級106、分配(allocation)級108、更名級110、排程(亦已知為派發(dispatch)或發出(issue))級112、暫存器讀取/記憶體讀取級114、執行級 116、寫回/記憶體寫入級118、例外處理(exception handling)級122以及提交(commit)級124。
圖1B繪示處理器核心190,其包括耦接至執行引擎單元150的前端單元130並且兩者皆耦接至記憶體單元170。核心190可為精簡指令集計算(RISC;reduced instruction set computing)核心、複雜指令集計算(CISC;complex instruction set computing)核心、超長指令字(VLIW;very long instruction word)或者是混合或選替的核心類型。又如另一選擇,核心190可為特別目的核心,例如像是網路或通訊核心、壓縮引擎、協同處理器核心、通用計算圖形處理單元(GPGPU;general purpose computing graphics processing unit)核心、圖形核心等。
前端單元130包括耦接至指令快取單元134的分支預測(branch prediction)單元132,其耦接至指令轉譯側查緩衝器(TLB;translation lookaside buffer)136、其耦接至指令抓取單元138、其耦接至解碼單元140。解碼單元140(或解碼器)可解碼指令並且產生為輸出一或多個微運算、微碼進入點(micro-code entry point)、微指令、其它指令或其它控制信號,其從原始指令解碼、或另以反映原始指令或源自於原始指令。解碼單元140可使用各種不同的機制來實行。合適的機制之範例包括(但不限於)查找表(look-up table)、硬體實行、可編程邏輯陣列(PLA;programmable logic array)、微碼唯讀記憶體(ROM;read only memory)等。在一實施例中,核心190 包括微碼ROM或儲存用於某微指令的微碼的其它媒體(例如,在解碼單元140中或另外在前端單元130內)。解碼單元140係耦接至在執行引擎單元150中的更名/分配器單元152。
執行引擎單元150包括耦接至退役單元(retirement unit)154的更名/分配器單元152以及成組的一或多個排程器單元156。排程器單元156代表任何數目之不同的排程器,包括保留站(reservations station)、中央指令窗等。排程器單元156係耦接至實體暫存器檔案單元158。實體暫存器檔案單元158之各者代表一或多個實體暫存器檔案,其之不同者儲存一或多個不同的資料類型,像是純量整數(scalar integer)、純量浮點(scalar floating point)、包封整數(packed integer)、包封浮點(packed floating point)、向量整數、向量浮點、狀態(例如,指令指標,其為要被執行的下一個指令的位址)等。在一實施例中,實體暫存器檔案單元158包含向量暫存器單元、寫入遮罩暫存器單元(write mask registers unit)以及純量暫存器單元。這些暫存器單元可提供架構向量暫存器(architectural vector register)、向量遮罩暫存器(vector mask register)以及通用暫存器。實體暫存器檔案單元158係被退役單元154重疊,用以闡述可以其實行暫存器更名和亂序執行的各種方式(例如,使用重排序緩衝器(reorder buffer)及退役暫存器檔案;使用未來檔案、歷史緩衝器以及退役暫存器檔案;使用暫存器映射(register map)及暫存器之池(pool);等等)。退役單元154和實體暫存器檔案單元158係耦接至執行叢集(execution cluster)160。執行叢集160包括成組的一或多個執行單元162和成組的一或多個記憶體存取單元164。執行單元162可進行各種運算(例如,移位、加法、減法、乘法)以及各種類型的資料(例如,純量浮點、包封整數、包封浮點、向量整數、向量浮點)。在當一些實施例可包括專用於特定功能或成組的功能的若干執行單元的同時,其它實施例可包括僅一執行單元或全進行所有功能的多個執行單元。排程器單元156、實體暫存器檔案單元158以及執行叢集160係如可能的複數來繪示,因為某些實施例對於某些類型的資料/運算創建分開的管線(例如,純量整數管線、純量浮點/包封整數/包封浮點/向量整數/向量浮點管線及/或各者具有他們自己的排程器單元的記憶體存取管線、實體暫存器檔案單元及/或執行叢集一並且在分開的記憶體存取管線之情形中,某些實施例係以僅此管線之執行叢集具有記憶體存取單元164來實行)。亦應理解,在使用分開的管線上,該些管線之一或多者可為亂序發出/執行且剩餘者為順序的。
該組記憶體存取單元164係耦接至記憶體單元170,其包括資料TLB單元172,其耦接至資料快取單元174,資料快取單元174耦接至二級(L2;level 2)快取單元176。在一示範性實施例中,記憶體存取單元164可包括載入單元、儲存位址單元以及儲存資料單元,其之各 者係耦接至在記憶體單元170中的資料TLB單元172。指令快取單元134更耦接至在記憶體單元170中的二級(L2)快取單元176。L2快取單元176係耦接至一或多個其它級的快取且最終耦接至主記憶體。
藉由範例的方式,示範性暫存器更名、亂序發出/執行核心架構可如下列般實行管線100:1)指令抓取138進行抓取及長度解碼級102及104;2)解碼單元140進行解碼級106;3)更名/分配器單儿152進行分配級108及更名級110;4)排程器156進行排程級112;5)實體暫存器檔案單元158和記憶體單元170進行暫存器讀取/記憶體讀取級114;執行叢集160進行執行級116;6)記憶體單元170和實體暫存器檔案單元158進行寫回/記憶體寫入級118;7)各種單元可包含在例外處理級122;以及8)退役單元154和實體暫存器檔案單元158進行提交級124。
核心190可支援一或多個指令集(例如,x86指令集(具有已添加以較新版本的一些延伸);加州、桑尼維爾之MIPS技術的MIPS指令集;加州、桑尼維爾之ARM Holdings的ARM指令集(具有選擇額外的延伸,像是NEON)),包括於此說明的指令。在一實施例中,核心190包括用以支援包封資料指令集延伸的邏輯(例如,AVX1、AVX2及/或下面說明之同屬向量友善指令格式(U=0及/或U=1))之某形式,從而允許藉由要用以使用包封資料來進行的許多的多媒體應用程式所使用的運算。
應了解,核心可支援多緒處理(multithreading)(執行二或多個平行組的運算或執行緒(thread)),且以各種方式來這樣做,包括時間切片多緒處理(time sliced multithreading)、同時多緒處理(其中單一實體核心提供邏輯核心,以用於實體核心同時地多緒處理的每個執行緒)或其結合(例如,時間切片抓取和解碼且之後同時進行多執行緒,像是在英特爾(Intel®)超執行緒技術(Hyperthreading technology))。
在當暫存器更名係於亂序執行的上下文中說明的同時,應了解可在順序架構中使用暫存器更名。在當闡述的處理器之實施例包括分開的指令及資料快取單元134/174和共享的L2快取單元176的同時,選替的實施例可具有用於指令和資料兩者的單一內部快取,例如像是一級(L1;Level 1)內部快取,或多個層級的內部快取。在一些實施例中,系統可包括內部快取和外部於核心及/或處理器的外部快取之結合。或者,該快取之所有可外部於核心及/或處理器。
圖2為依據本發明之實施例可具有多於一核心、可具有積體記憶體控制器以及可具有積體圖形的處理器200之方塊圖。在圖2中的實線方框闡述具有單一核心202A、系統代理器210、成組的一或多個匯流排控制器單元216的處理器200,同時可選擇的添加虛線方框闡述具有多個核心202A~N、在系統代理器單元210中之成組的一或多個積體記憶體控制器單元214以及專用(special purpose)邏輯208之選替的處理器200。
因此,處理器200之不同的實行可包括:1)具有專用邏輯208之CPU為積體圖形及/或科學(處理量(throughput))邏輯(其可包括一或多個核心),和核心202A~N為一或多個通用核心(例如,通用順序核心、通用亂序核心、兩者的結合);2)具有核心202A~N的協同處理器為打算主要用於圖形及/或科學(處理量)之大數目的專用核心;以及3)具有核心202A~N的協同處理器為大數目的通用順序核心。因此,處理器200可為通用處理器、協同處理器或專用處理器,例如像是網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高處理量(high-throughput)眾多積體核心(MIC;many integrated core)協同處理器(包括30或更多核心)、嵌入式處理器或類似者。處理器可在一或多個晶片上實行。處理器200可為一或多個基板之部分的及/或使用若干處理技術之任一者實行在一或多個基板上,處理技術例如像是BiCMOS、CMOS或NMOS。
記憶體分層包括在核心內快取之一或多個位級、成組或一或多個共享快取單元206以及耦接至該組積體記憶體控制器單元214的外部記憶體(未繪示)。該組共享的快取單元206可包括一或多個中級快取,諸如2級(L2)、3級(L3)、4級(L4)或快取的其它級位、終級快取(LLC;last level cache)及/或其結合。在於一實施例中基於環的(ring based)互連單元212將積體圖形邏輯208、該 組共享的快取單元206以及系統代理器單元210/積體記憶體控制器單元214互連,選替的實施例可使用任何數目的周知的技術以用於將這類單元互連。在一實施例中,於一或多個快取單元206與核心202-AN之間維持同調性(coherency)。
在一些實施例中,核心202A~N之一或多者係能夠多緒處理。系統代理器210包括協調及運算核心202A~N之該些組件。系統代理器單元210可例如包括電源控制單元(PCU;power control unit)和顯示單元。PCU可為或包括需要用於調節核心202A~N及積體圖形邏輯208之電源狀態的邏輯和組件。顯示單元係用於驅動一或多個外部連接的顯示器。
核心202A~N就架構指令集而言可為同質的或異質的;亦即,核心202A~N之二或多者可能夠執行相同的指令集,同時其它者可能夠執行該指令集或不同指令集之子集。在一實施例中,核心202A~N為異質的且包括下面所述之「小」核心及「大」核心兩者。
圖3~6為示範性電腦架構之方塊圖。對於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站(engineering workstation)、伺服器、網路裝置、網路中樞(network hub)、交換器(switch)、嵌入式處理器、數位信號處理器(DSP;digital signal processor)、圖形裝置、電玩裝置(video game device)、機上盒、微控制器、手機(cell phone)、可攜媒體播放器、手持裝置以及各種其 它電子裝置之在本領域已知的其它系統設計和組態亦為合適的。一般而言,能夠包含處理器及/或如於此揭示的其它執行邏輯的大量繁多的系統或電子裝置一般是合適的。
現參照圖3,依據本發明一實施例繪示系統300之方塊圖。系統300可包括一或多個處理器310、315,其耦接至控制器中樞(controller hub)320。在一實施例中,控制器中樞320包括圖形記憶體控制器中樞(GMCH;graphics memory controller hub)390和輸入/輸出中樞(IOH;Input/Output Hub)350(其可在分開的晶片上);GMCH 390包括記憶體和圖形控制器,記憶體340和協同處理器345係耦接至該圖形控制器;IOH 350將輸入/輸出(I/O;Input/Output)裝置360耦接至GMCH 390。或者,記憶體和圖形控制器之一者或兩者係整合於處理器(如於此說明的)內,記憶體340和協同處理器345係直接耦接至處理器310,以及在具有IOH 350的單一晶片中的控制器中樞320。
額外處理器315之選擇性(optional nature)係以斷線(broken line)在圖3中表示。各個處理器310、315可包括於此說明的處理核心之一或多者且可為處理器200之某版本。
記憶體340可例如為動態隨機存取記憶體(DRAM;dynamic random access memory)、相變記憶體(PCM;phase change memory)或兩者之結合。對於至少一實施例,控制器中樞320經由像是前端匯流排(FSB; frontside bus)的多點下傳匯流排(multi-drop bus)、經由像是快速通道互連(QPI;QuickPath Interconnect)或類似的連接395來與處理器310、315通訊。
在一實施例中,協同處理器345為專用處理器,例如像是高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似者。在一實施例中,控制器中樞320可包括積體圖形加速器。
就包括架構、微架構、熱、功率消耗特性等的指標度量譜(spectrum of metrics of merit)而言在實體資源310、315之間能有各種差異。
在一實施例中,處理器310執行控制一般類型之資料處理運算的指令。嵌入於指令內可為協同處理器指令。處理器310將這些協同處理器指令辨識為應由附接的協同處理器345執行之類型的。據此,處理器310在協同處理器匯流排或其它互連上發出這些協同處理器指令(或代表協同指令的控制信號)給協同處理器345。協同處理器345接受且執行接收的協同處理器指令。
現參照圖4,依據本發明之實施例繪示第一更特定示範性系統400之方塊圖。如圖4所繪示,多處理器400為點對點互連系統且包括第一處理器470和經由點對點互連450耦接的第二處理器480。處理器470和480之各者可為處理器200之某版本。在本發明之一實施例中,處理器470和480分別為處理器310和315,同時協同處 理器438為協同處理器345。在另一實施例中,處理器470和480分別為處理器310、協同處理器345。
處理器470及480係繪示分別包括積體記憶體控制器(IMC;integrated memory controller)單元472及482。處理器470亦包括其匯流排控制器單元、點對點(P-P)介面476及478之部分;同樣地,第二處理器480包括P-P介面486及488。處理器470、480可使用P-P介面電路478、488經由點對點(P-P)介面450交換資訊。如圖4所示,IMC 472及482將處理器耦接至分別的記憶體,即記憶體432及記憶體434,其可為區域地附接至分別的處理器之主記憶體的部分。
處理器470、480各者可使用點對點介面電路476、494、486、498經由個別P-P介面452、454與晶片組490交換資訊。晶片組490可經由高效能介面439與協同處理器438可選擇地交換資訊。在一實施例中,協同處理器438為專用處理器,例如像是高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似者。
共享快取(未繪示)可被包括在任一處理器中或在兩處理器之外側,其還是經由P-P互連與處理器連接,使得若處理器被置到低功率模式中,則任一或兩處理器的本地快取(local cache)資訊可儲存在共享快取中。
晶片組490可經由介面496耦接至第一匯流排416。在一實施例中,雖然本發明之範圍並不如此限 制,但第一匯流排416可為周邊組件互連(PCI;Peripheral Component Interconnect)匯流排,或像是PCI快捷(PCI Express)匯流排的匯流排,或是另一第三代I/O互連匯流排。
如在圖4中所繪示,各種I/O裝置414可隨著將第一匯流排416耦接至第二匯流排420的匯流排橋418而耦接至第一匯流排416。在一實施例中,一或多個額外的處理器415,像是協同處理器、高處理量MIC處理器、GPGPU、加速器(例如像是圖形加速器或數位信號處理(DSP;digital signal processing)單元)、場可編程閘陣列或任何其它處理器,係耦接至第一匯流排416。在一實施例中,第二匯流排420可為低接腳計數(LPC;low pin count)匯流排。在一實施例中,各種裝置可耦接至第二匯流排420,例如包括鍵盤及/或滑鼠422、通訊裝置427和像是磁碟驅動的儲存單元428或可包括指令/碼及資料430的其它大量儲存裝置。進一步而言,音訊I/O 424可耦接至第二匯流排420。注意,其它架構是可能的。舉例而言,取代圖4的點對點架構的是,系統可實行多點下傳匯排或其它這類架構。
現參照圖5,依據本發明之實施例繪示第二更特定示範性系統500之方塊圖。在圖4及5中相似的元件承接相似的參考號碼,並且圖4之某些態樣已從圖5中省略,以為了避免模糊圖5之其它態樣。
圖5例示處理器470、480分別包括積體記憶 體和I/O控制邏輯(「CL(control logic)」)472及482。因此,CL 472、482包括積體記憶體控制器單元且包括I/O控制邏輯。圖5例示不僅有記憶體432、434耦接至CL 472、482,而I/O裝置514也耦接至控制邏輯472、482。舊有的I/O裝置515耦接至晶片組490。
現請參照圖6,依據本發明之實施例繪示SoC 600之方塊圖。在圖2中類似的元件承接相似的參考號碼。也同樣的,虛線方框為在更多進階的SoC上可選的特徵。在圖6中,互連單元602係耦接至:包括成組的一或多個核心202A~N及共享快取單元206的應用處理器610;系統代理單元210;匯流排控制器單元216;積體記憶體控制器單元214;成組或者一或多個協同處理器620,其可包括積體圖形邏輯、影像處理器、音訊處理器以及視訊處理器;靜態存機存取記憶體(SRAM;static random access memory)單元630;直接記憶體存取(DMA;direct memory access)單元632;以及用於耦接至一或多個外部顯示器的顯示單元640。在一實施例中,協同處理器620包括專用處理器,例如像是網路或通訊處理器、壓縮引擎、GPGPU、高處理量MIC處理器、嵌入式處理器或類似者。
於此揭示的機制之實施例可以硬體、軟體、韌體或上述實行的方式之結合來實行。本發明之實施例可被實行為在包含至少一處理器、儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置及至 少一輸出裝置的可編程系統上執行的電腦程式或程式碼。
程式碼,像是在圖4中例示的碼430,可應用至輸入指令,用以進行於此所說明的功能並且產生輸出資訊。輸入資訊可以已知的方式應用到一或多個輸出裝置。為了此應用之目的,處理系統包括具有處理器的任何系統,處理器例如像是數位信號處理器(DSB)、微控制器、特定應用積體電路(ASIC;application specific integrated circuit)或微處理器。
程式碼可以高階程序或物件導向程式語言來實行,用以與處理系統通訊。如果需要的話,程式碼亦可以組合或機器語言來實行。事實上,於此說明的機制並非在範圍上限制到任何特別的程式語言。在任一情形中,語言能為編譯的(compiled)或解譯的(interpreted)語言。
至少一實施例之一或多個態樣可藉由儲存在機器可讀媒體上的代表指令來實行,代表指令代表在處理器內的各種邏輯,其當由機器讀取時造成機器製造用以進行於此說明之技術的邏輯。這類代表,已知為「IP核心」,可儲存在有形、機器可讀媒體上且供應給各種消費者或製造設施用以載入到實際作成邏輯或處理器的產製機器中。
這類機器可讀儲存媒體可包括(沒有限制)由機器或裝置製造或形成的物之非暫態、有形的配置,包括像是硬碟、任何其它類型的磁碟(包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可寫入光碟(CD-RW)以及磁光 碟(magneto-optical disk))的儲存媒體,包括像是唯讀記憶體(ROM)、隨機存取記憶體(RAM)(諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可編程唯讀記憶體(EEPROM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光卡)或合適於儲存電指令的任何其它類型的媒體的半導體裝置。
據此,本發明之實施例亦包括非暫態、有形機器可讀媒體,其包含指令或包括設計資料,像是硬體描述語言(HDL;Hardware Description Language),其界定於此說明的結構、電路、設備、處理器及/或系統特徵。這類實施例亦可稱為程式產品(program product)。
在一些情形中,可使用指令轉換器以將指令從來源指令集轉換到目標指令集。舉例而言,指令轉換器可轉譯(例如使用靜態二進制轉譯、包括重態編譯的動態二進制轉譯)、變型(morph)、仿真(emulate)、或另以將指令轉換成用以由核心處理的一或多個其它指令。指令轉換器可以軟體、硬體、韌體或其結合來實行。指令轉換器可在處理器上、在處理器外或是部分在處理器上及部分在處理器外。
圖7為依據本發明之實施例對比使用軟體指令轉換器來將在來源指令集中的二進制指令轉換到在目標指令集中的二進制指令的方塊圖。在例示的實施例中,指令轉換器為軟體指令轉換器,雖然替代地指令轉換器可以 軟體、韌體、硬體或其各種結合來實行。圖7繪示在高階語言702中的程式可使用x86編譯器704來編譯,用以產生x86二進制碼706,其可由具有至少一x86指令集核心716的處理器來原生地執行。具有至少一x86指令集核心716的處理器代表能藉由相容地執行或另以處理(1)英特爾x86指令集核心之指令集的實質部分或者(2)目標對準在具有至少一x86指令集核心的英特爾處理器上運行的應用或其它軟體之物件碼版本而進行與具有至少一x86指令集核心的英特爾處理器實質相同的功能,以為了達成與具有至少一x86指令集核心的英特爾處理器實質相同的結果。 x86編譯器704代表可操作以產生二進制碼706(例如,物件碼)的編譯器,在具有或不具有額外的鏈接(linkage)處理下,x86二進制碼706能在具有至少一x86指令集核心716的處理器上執行。同樣地,圖7繪示在高階語言702中的程式可使用替代的指令集編譯器708來編譯,用以產生替代的指令集二進制碼710,其可由不具有至少一x86指令集核心714的處理器原生地執行(例如,具有執行加州桑尼維爾的MIPS科技之MIPS指令集及/或執行加州桑尼維爾的ARM Holdings的ARM指令集的核心的處理器)。指令轉換器712係使用來將x86二進制碼706轉換成可由不具有x86指令集核心714的處理器原生地執行的碼。此轉換的碼不太可能與替代的指令集二進制碼710相同,因為能夠進行此的指令轉換器是難以作成的;然而,轉換的碼將完成一般運算且由來自替代的指令集的指 令構成。因此,指令轉換器712代表軟體、韌體、硬體或其結合,而透過仿真、模擬或任何其它處理,允許處理器或不具有x86指令集處理器或核心的其它電子裝置執行x86二進制碼706。
用於細粒度記憶體保護的設備和方法
由於允許VMM寫入保護任何分頁之子頁區域的分頁共享使用技術,本發明之一實施例降低記憶體揮發量。在一實施例中,各個記憶體分頁在尺寸上為4k而子頁區域為128B。然而,本發明之基本原則並不限於任何特定子頁區域或分頁尺寸。
在一實施例中,對於各個子頁區域的許可維護在VMM管理表中。隨著用於子頁的128B粒度,沒有寫入(no-write)與沒有執行(no-execute)許可可在64位元值中展開(例如,具有分配給各個子頁的2位元,一者指示沒有寫入而一者指示沒有執行)。
圖8例示一實施例,其包含在處理器820上執行的VMM 810,用以對於一或多個客戶提供執行環境,其可為OS內核(kernel)801。在一實施例中,在VMM(例如,VMX根)內的子頁策略模組812實行於此說明的技術,以產生子頁記憶體視界813,其指示對於在各個記憶體分頁內的子頁之許可。在OS內核801內的安全代理器803(例如,帶內代理器(in-band agent))利用子頁記憶體視界813來決定哪些分頁和子頁需要被監控。舉 例而言,如下面詳細討論的,各個子頁可具有寫入許可位元來指示寫入該子頁是否被許可。或者,可設定寫入保護位元來指示不許可寫入。
結果,將處理導向記憶體分頁802的每一個VE事件取代的是,安全代理器803被提供有允許其處理導向記憶體分頁802內的特定子頁的僅該些事件(例如,寫入運算)的資訊。舉例來說,在圖8中,僅記憶體分頁802之凸顯區域(highlighted region)805內的子頁相關於安全代理器803。因此,安全代理器803處理在此區域內發生的VE事件但濾除在其餘區域中發生的事件(例如,因為針對該些子頁設定寫入許可)。由VMM管理的其它記憶體視界811代表傳統地由VMM提供給客系統(例如像是內核801)的標準記憶體分頁視界。
本發明之一實施例的額外細節係例示於圖9中,其繪示具有記憶體分頁虛擬位址901(有時亦稱為線性位址)與實體位址902(有時亦稱為真實位址)之間映射的分頁表900。在一實施例中,分頁表900包含在目前x86架構中採用的延伸分頁表(EPT;extended page table)。分頁巡覽邏輯905可進行「分頁巡覽(page walk)」運算,用以使用虛擬位址存取分頁表900且識別對應該虛擬位址的實體位址。在一實施例中,分頁巡覽邏輯905包含整合在處理器之記憶體管理單元(MMU;memory management unit)內的分頁漏失處置器(PMH;page miss handler)。一旦經識別實體位址,可在記憶體中 特定實體位置處存取記憶體分頁之位置。
分頁表項目(page table entry)可在處理器內轉譯側查緩衝器(TLB)909中進行快取以用於較快的存取。若分頁表項目位於TLB內,則分頁的實體位址可直接由處理器之記憶體管理單元(MMU;memory management unit)決定而不需要分頁巡覽(其典型地包含從系統記憶體存取分頁表900因而消耗明顯更多的周期)。本發明之基本原理是相同的,不論關於此分頁的資訊是否從TLB 909取回或是直接從分頁表900取回。通常使用於虛擬對實體位址轉譯的各種其它組件並未例示於圖9中,以避免模糊本發明的基本原理。
在本發明之一實施例中,包括在分頁表項目之各者內的SPP致能位元903指示子頁保護是否應用到對應的記憶體分頁。舉例來說,在圖9中的分頁表900中,SPP致能位元被設定到1以用於與VA2和VA3關聯的項目。在一實施例中,若SPP對於特定分頁致能,接著則子頁保護(SPP)模組910實行於此說明的技術來在一或多個子頁保護表915中進行查找。在一實施例中,為了進行查找,子頁保護模組910將分頁之實體位址(從分頁巡覽模組905或TLB 909來提供)與在記憶體中識別SPPT 915之基本位置的子頁保護表指標(SPPTP;sub-page protection table pointer)912結合。在一實施例中,SPPTP 912為在虛擬機器控制結構(VMCS)911內的64位元欄位。然而,SPPTP可以各種不同的方式來實行,同時仍遵 守本發明之基本原則。
在一實施例中,與各個分頁關聯的寫入許可位元904(和潛在一或多個其它許可位元)亦可被使用來決定對於該分頁連同子頁保護表915的許可。舉例來說,在一實施例中,分頁層級(page-level)許可904係與子頁保護(特定於SPPT 915中)結合,用以決定對於各個子頁的寫入許可。例如,在一實施例中,若對於分頁的寫入許可904被設定至0,接著對於子頁則不許可寫入,除非在子頁保護表中寫入許可被設定至1。在另一實施例中,若對於分頁的寫入許可904被設定至0,接著對於子頁則不許可寫入,不去管在子頁保護表中指示的設定。類似地,若對於分頁的寫入保護904被設定至1,接著對於子頁許可寫入,除非在子頁保護表915中寫入許可位元被設定至0。在另一實施例中,若對於分頁的寫入許可904被設定至1,接著對於所有子頁許可寫入,不去管在子頁保護表中指示的設定。因此,寫入許可位元904和子頁保護位元可以各種方式結合來決定對於各個子頁的寫入許可。
在一實施例中,SPPT 915包含表的分層(hierarchy of table),其之各者係由記憶體分頁的實體位址之不同部分索引。依據一這類實施例的查找係圖形地例示於圖10中。如在此實施例中所例示的,SPPTP 912係與實體位址之最高實體位址位元結合,用以識別在第5級(L5)表中的項目。包含在該項目中的位址為用於第4級(L4)表的基本位址。在L4表中的項目係藉由將基本位址 與分頁之實體位址的位元39~47結合來定位。L4項目識別L3表之基本位址且與實體位址的位元30~38結合,用以識別在包含L2表之基本位址的L3表中的項目。接著位元12~29與此基本位址結合用以識別在L2表中的項目,其識別L1表之基本位址。包含對於分頁之所有子頁許可的64位元子頁(SP)向量係藉由將用於L1表的基本位址與實體位址之位元12~20結合來識別。寫入許可位元接著使用實體位址位元7~11在64位元SP向量內識別。在一實施例中,64位元SP向量包含與各個子頁關聯的兩個位元,一者用以指示寫入許可(例如,1=寫入許可;0=寫入保護),而另一者用以指示對於子頁的一或多個額外的許可(例如,執行保護及/或許可)。
應注意,特定細節係繪示於圖10中以為了解釋本發明之一實施例的目的。然而,本發明的基本原則並不限於繪示於圖10中的特定細節。例如,與各個記憶體分頁關聯的不同的位址位元可以替代的方式來結合,用以在各種類型的表結構中進行查找(非分層的(non-hierarchical)以及分層的(hierarchical)),同時仍遵守本發明之基本原則。
依據本發明之一實施例用於決定子頁保護的方法係例示於圖11中。方法可在上述的架構內實行,但不限於任何特定系統架構。
在1101處,取回與記憶體分頁關聯的分頁表項目。舉例來說,如上所討論的,分頁表項目可從TLB 讀取或可從儲存在記憶體中的分頁表取出。在1102處,作成關於是否致能子頁保護的決定。舉例來說,如上所提,子頁保護位元可被設定於分頁表項目中用以指示子頁保護。若未致能子頁保護,接著在1105處則僅實行分頁層級許可/保護。
若致能子頁保護,接著在1103處,則在子頁保護表(SPPT)中進行查找用以決定與各個子頁關聯的許可/保護。如上所提,此可包括寫入許可、執行許可或能夠相對於子頁來實行的任何其它許可/保護。在1104處,子頁保護指示係與分頁層級許可/保護(若有任何的話)結合,用以到達對於各個子頁的許可之最終設定。
實行下列特定細節以在本發明之一實施例中提供子頁保護/許可。然而,應注意的是,本發明的基本原則並不限於這些特定細節。
在一實施例中,在分頁表中使用的SPP位元包含僅針對映射分頁的EPT分頁排程結構(EPT paging-structure)項目(例如,4KB延伸分頁表(EPT)頁表項目)而界定的位元。在其它EPT分頁排程結構項目中忽略該位元。
如所提及的,累計的分頁層級EPT寫入許可/保護可與子頁寫入許可/保護結合,用以決定對於該分頁的寫入許可/保護。在一實施例中,處理器檢查此寫入許可且當適當時產生EPT違反(EPT violation)。
額外的SPPT查找特徵:
若SPPT項目不存在,則此可造成新的虛擬機器退出。在一實施例中,此會僅對於藉由VMM之SPPT的懶人口(lazy population)而發生。在漏失上,在一實施例中,實體位址可保存於VMCS(用以被使用為用於後續請求的快取)中。VM退出會另以保存資料,如EPT違反目前所進行(例如,NMI阻塞(NMI blocking)、IDT向量化(IDT vectoring)等)。
若沒有漏失,接著則SPPT巡覽可識別用於分頁的32位元寫入許可位元映像(bitmap)。處理器可高速緩存/快取(cache)在資料轉譯側查緩衝器(DTLB;data translation lookaside buffer)中的位元映像或是用於後續存取的相關的/其它結構。
SPPT無效特徵:
在一實施例中,VMM可修改在SPPT中的子頁保護位元且可經由INVEPT指令使結合的映射無效化。此亦引起經快取的子頁許可之清除(flush)。在一實施例中,延伸分頁表指標(EPTP;extended page table pointer)交換(例如,經由執行VMWRITE或VMFUNC指令)可引起清除經快取關於子頁許可的任何資訊。此可對於位址空間ID(ASID;address space ID)漏失情況(例如,具有被分配的新的ASID)需要TLB清除。在一實施例中,項目亦在非ASID標記的(non-ASID-tagged)結構中被無效化 (例如,資料TLB、延伸分頁目錄指標(EPDP;extended page directory pointer)以及延伸分頁目錄項目(EPDE;extended page directory entry)快取)。
位址(A)/資料(D)位元更新處置:
在一實施例中,子頁保護(SPP;sub-page protection)分頁對於客戶分頁排程通結構以及虛擬化的進階可編程中斷控制器(APIC;advanced programmable interrupt controller)存取被視為「唯讀」。對於英特爾架構(IA)-32 A/D位元更新:(a)若客戶A/D位元更新是用以對SPP分頁作成,則產生EPT違反;(b)退出資格像是分頁早已在EPT中被唯讀一樣(沒有新資料);(c)VMM能以現存機制處置這類EPT違反。對於EPT A/D位元架構:(a)若致能EPT A/D位元,則客戶分頁巡覽可被視為對於EPT的寫入;(b)若致能EPT A/D位元,接著對SPP分頁的客戶分頁巡覽則引起EPT違反;(c)與VMM介接用以監控OS分頁表的開明的OS能藉由在包含臨界映射(critical mapping)的分頁上預設定A/D位元來有效率地使用子頁保護,使得VMM不必在具有子頁監控區域的寫入保護分頁上仿真A/D更新。
以存取的多個子頁區域對單一分頁寫入:
此之一範例為8字元MOV,其在分頁內被4字元對齊。在一實施例中,處理器將檢查兩者子頁的寫入 能力。若兩者子頁皆為可寫入的,則允許寫入。若任一子頁不是可寫入的,則寫入引起EPT違反。
張拓多個分頁的寫入:
此之一範例為8字元MOV,其橫跨分頁邊界被4字元對齊。在一實施例中,處理器將檢查任一分頁是否具有子頁保護。若沒有分頁具有子頁保護,正常每EPT處置寫入。若任一分頁具有子頁保護,則寫入引起EPT違反。
具有多個寫入的處置指令:
此之一範例為FXSAVE指令,其可產生對多個分頁的多個寫入。處理器可就像任何其它儲存來對待儲存探測(store probe)。在一實施例中,若特定探測的位址不是可寫入的,則處理器將產生EPT違反。此能造成在一些資料寫入之後發生的EPT違反。
在一實施例中,若探測的分頁具有子頁保護,則改變儲存探測以引起EPT違反。在一實施例中,在做任何寫入之前,處理器探測高和低字元。
APIC虛擬化互動:
若VMM組態EPT PTE,則可造成進階可編程中斷控制器(APIC)互動使得實體位址在「APIC-存取位址(APIC-access address)」中並且SPP=1。在一實施例中, 此被視為無效使用。全APIC虛擬化提供細粒的控制而沒有子頁保護。
與EPTP交換的互動:
在一實施例中,子頁保護表指標(SPPTP;sub-page protection table pointer)並沒有在延伸分頁表指標(EPTP;extended page table pointer)交換上改變。目前使用情況需要特定EPT分層以具有對!W子頁的存取。此係對於這些EPT分層經由EPTE SPP位元設定至0來達成。
在一實施例中,SPPT可經由新的VMFUNC指令來交換,VMFUNC指令經由記憶體描述符將下列交換:<CR3,EPT,SPPT>VMFUNC leaf 2
<CR3,EPT>VMFUNC leaf 1
<EPTP>VMFUNC leaf 0
額外的實施例:
上面所述的架構可映射至各種實行。提出的架構對處理器實行之平直映射為進行SPPT之查找者,其係由於處理器分頁漏失處置器(PMH;page miss handler)巡覽具有在EPT結構中設定SPP位元的分頁排程結構。在EPT中不需要SPP位元之替代的實行實施例係如下。VMM分配連續記憶體區域之區塊,其預留用於使用為分頁之「子頁可監控池(sub-page monitorable pool)」。當OS或OS服務想要需要子頁監控或動態地設定在子頁層級 被監控的分頁時,OS服務請求VMM指派這些池分頁之一者。VMM將OS映射(在OS PT中)之全域實體位址(GPA;global physical address)從分頁的池映射到指派的分頁隱藏實體位址(HPA;hidden physical address)。在一些環境中,VMM可從原始GPA分頁複製內容到從此池指派的分頁。VMM亦編程處理器的範圍暫存器和遮罩之其中一者來涵蓋連續的記憶體區域。範圍暫存器允許處理器偵測何時作成對在池中分頁之一者的RW或X存取。VMM額外地如在上面的架構所界定編程SPPT用以對於在此池中所有分頁明定每分頁子頁政策。在一實施例中,對於在記憶體區域內任何分頁的RW或X存取造成處理器微碼輔助,在其中CPU對於在SPPT中的該HPA核對子頁政策,且允許或不許存取。
軟體實行:
在一實施例中,當對於成組的分頁期望子頁許可時,VMM以對於明定用於各個分頁的子頁許可位元向量之該組分頁的映射來集結SPPT。對於落入不許寫入(write-disallowed)子頁區域內的存取,VMM處置誘發的EPT違反或客戶軟體處置誘發的虛擬化例外(#VE)。對於落入允許寫入(write-allowed)子頁區域內的存取,不產生誘發的EPT違反或#VE。
巢狀虛擬化互動:
在一實施例中,根VMM可能不會針對SPPT致能。在此情形中,其不會將之曝露且不會對之虛擬化。在另一實施例中,根VMM係針對SPPT致能但不使用SPPT本身而是將其虛擬化。在另一實施例中,根VMM係針對SPPT致能且正使其本身,但不將其曝露給客戶實體。於此,沒有SPPT巢狀化的實行。又在另一實施例中,針對SPPT致能根VMM,係使用其本身,且將其曝露給客戶實體(例如,對其虛擬化)。該些最後兩個實施例在下面章節中以更多的細節來說明。
針對SPPT致能的根VMM,不使用其本身但對其虛擬化:
在一實施例中,根VMM影遮(shadow)SPPT結構以保留對HPA(包括SPPT)的所有參考。由於SPPT係經由一般記憶體存取指令來存取,根VMM將需要編輯控制(edit-control)SPPT客戶記憶體分頁。在更新能由根VMM正確地虛擬化的SPPT之後客戶VMM必需進行INVEPT指令(EPTP文本)。在一實施例中,INVEPT指令清理任何SPPT快取(針對相同的範圍)、全域、EPTP以及特定的位址(若支援的話)。
對於SPPT致能的根VMM,使用其本身且將其曝露至客戶:
在此實施例中,根VMM影遮SPPT結構用以 保留對HPA(包括SPPT)的所有參考。針對抵觸SPPT政策,根VMM可將最保守的組合編碼為由處理器使用的SPPT,以為了由於客戶SPPT的違反。根VMM可仿真#VE/VM退出客戶VMM。由於SPPT係經由一般記憶體存取指令來存取,根VMM將需要編輯控制SPPT客戶記憶體分頁。在更新能由根VMM正確地虛擬化的SPPT之後,客戶VMM可進行INVEPT指令(EPTP文本)。在一實施例中,INVEPT指令可清理任何SPPT快取(針對相同的範圍)、全域、EPTP以及特定的位址(若支援的話)。
圖12例示在本發明一實施例中採用的SPP位元向量,在其中讀取(R;read)、寫入(W;write)、執行禁能(XD;execute disable)以及髒(D;dirty)位元能以64位元向量展開。如所例示的,在一實施例中,使用偶數位元以用於決定W和XD指示器,並且使用奇數位元以用於決定R和D指示器。在圖12中例示的表1202繪示用於R、W及XD之不同值的不同結果(例如,具有1的值指示為致能的而0的值指示為禁能的)。在一實施例中,CPU可對於已寫入且可能不會造成故障(Fault)的子頁簡單地更新髒(D)位元。
用於子頁延伸分頁表(EPT)寫入保護的方法及設備
延伸分頁表(EPT)基礎(EPT-based)的子頁保護允許VMM對於在子頁(例如,128字元)粒度上明定客 戶實體記憶體之寫入保護。當利用此性能時,CPU施行如由VMM所明定的對於4K分頁之子頁區域的寫入存取許可(write-access permission)。EPT基礎的子頁保護係打算針對安全(客戶OS監控)和像是裝置虛擬化及記憶體檢查點致能藉由VMM的細粒度的記憶體寫入施行。
目前處理器在記憶體子系統中實行TLB快取,用以快取線性位址對實體記憶體轉譯。在一些處理器中,轉譯的最細粒度為4K字元,其亦為分頁表轉譯能被安裝到的最小粒度。EPT子頁以32寫入許可位元將此延伸-一者用於在該分頁中的128B區域-而取代用於完整分頁的單一寫入許可位元。用來支援此架構的自然延伸係用以在保持32新的寫入許可位元之處理器中具有新類型的TLB並且用以取決於由載入明定的位址及運算元尺寸測試適當的寫入許可位元或是儲存uop。然而,提供完整新的TLB結構或擴增其中資料TLB之各個項目現具有32額外許可的TLB結構是昂貴的。
另一個技藝為在當以子頁許可存取TLB時,微碼輔助(microcode assist)係由分頁漏失處置器(PHM)所叫用(invoke)。微碼輔助驗證存取之偏移(offset)和資料尺寸,且若存取為如由寫入許可位元所決定的有效存取,則在編程PMH硬體之後重新開始指令以不引起在對命中(hit)該TLB項目者的下一個儲存上的微碼輔助。然而,這類的解在缺乏保證指令快取包括所有微運算(包括在機器中於飛行狀態(in flight)中的載入/儲存)的某些微架構 上是不可行的。因此,若指令在該些核心之一者上重新開始,則重新開始的指令可能不能在指令快取134中找到且前端單元130可能需要再從記憶體抓取指令,而在該位址的該指令可能在記憶體中已改變了。若指令已改變且若再抓取指令在子頁中存取無效的位置,則由於硬體會允許下對在該分頁中任何偏移的下一個存取,故存取會做完。
本發明之實施例導入新的解以實行子頁匹配(sub-page matching),使得在不具有指令包括的保證下能進行正確的運算。特別是,一實施例包括不需要指令包括保證下使用微碼輔助進行子頁粒度存取控制的微架構。
如在圖13中所例示,在一實施例中,記憶體叢集1300(例如,處理器的記憶體管理單元)係延伸以允許使用利用在圖14中例示的下列欄位以控制本發明實施例之控制運算的子頁控制暫存器1301(CR_SUB_PAGE)來在EPT子頁分頁915上匹配可編程偏移:
1. VALID 1401-指示控制暫存器是否有效的位元。
2. GUEST_PHYS_ADDR 1402-EPT子頁之客戶實體位址。
3. ADDR_OSIZE 1403-儲存之運算元尺寸,其應被允許在當它到其位址被編程為GUEST_PHYS_ADDR欄位1402的分頁時完成。
4. ADDR_OFFSET 1404-儲存之第一字元的偏移,其應被允許在當它到其位址被編程為GUEST_PHYS_ADDR欄位1402的分頁時完成。
在一實施例中,PMH 1310進行EPT分頁巡覽且偵測包含客戶實體位址(GPA;guest physical address)的分頁係以在EPT中的子頁許可來映射。若以子頁許可映射,接著則其決定該GPA是否匹配編程到子頁控制暫存器1301(CR_SUB_PAGE)中的GPA。若如此,PMH 1310以設定來指示此為子頁TLB項目的SPP位元來發送轉譯到TLB 909。若沒有發現有匹配,則接著叫用微碼輔助1305(如下所述)。
特別是,本發明之一實施例進行下列成組的運算:IF EPT_WALk_FOR_FINAL_GPA AND IS_SUB_PAGE==1 AND存取為資料載入或儲存
IF GPA[Max_Phys_Addr_1:12]==CR_SUB_PAGE.GUEST_PHYS_ADDR
AND
CR_SUB_PAGE.VALID==1
//GPA匹配CR_SUB_PAGE_標記為SPP TLB
TLB_REPLY.APIC=0
TLB_REPLY.SPP=1
ELSE
//GPA不匹配CR_SUB_PAGE_叫用微碼輔助
CR_FAULT_REG1.SUB_PAGE_FAULT=1
CR_FAULT_REG0=Linear_Address
CR_GPA_ADDRESS=GPA
Invoke Sub page Microcode assist(叫用子頁微碼輔助)
ENDIF
ENDIF
因此,若用於以在EPT中的子頁屬性映射的分頁巡覽的GPA匹配編程到CR_SUB_PAGE 1301中的 GPA,則PMH 1310以設定來指示此為子頁TLB項目的SPP位元來發送轉譯到TLB 909。若沒有發現有匹配,則接著叫用微碼輔助1305。
在一實施例中,當載入或儲存匹配具有設定的SPP位元之TLB實體,則偏移和運算元尺寸可在SPP控制暫存器1301中匹配。若偏移和運算元尺寸並未匹配,則接著可叫用微碼輔助1305來進行故障檢查。特別是,可針對藉由TLB 909的匹配進行下列動作://在SPP控制暫存器中匹配偏移和運算元尺寸
//能平行於在ULTB中的LA查找而發生
IFLA[11:7]==CR_SUB_PAGE.ADDR_OFFSET AND
Operand_Size==CR_SUB_PAGE.ADDR_OSIZE
SPP_MATCH=0x01
ENDIF
//查找UTLB
UTLB_LOOKUP_RESULT=LOOKUP_UTLB(Linear_Address)
//若偏移和尺寸並未匹配,則叫用微碼輔助為部分的故障檢查
IF UTLB_LOOKUP_RESULT.SPP==1 AND
Access_Type==Store AND SPP_MATCH==0
//偏移或尺寸並未匹配SPP控制暫存器
//-叫用微碼輔助
CR_FAULT_REG1.SUB_PAGE_FAULT=1
AGU_CR_FAULT_REG1.UTLB=1
DCU_CR_FAULT_REG0=Linear_Address
Invoke Sub page microcode assist(叫用子頁微碼輔助)
ENDIF
在一實施例中,當微碼輔助係由PMH 1310或TLB 909叫用時,若子頁許可表915指示由輔助儲存所存取的偏移已是可寫入,則微碼巡覽子頁許可表915且以偏移和運算元尺寸編程CR_SUB_PAGE暫存器1301。否則,其引起EPT違反故障去通知VMM。在一實施例中,當微碼輔助已由PMH 1310所觸發時,接著微碼將32寫入許可位元快取到允許寫入(WA;write-allowed)的草稿暫存器(scratchpad register)1320中。一實施例係依據下列碼來實行://若輔助來自PMH,則巡覽SPPT。否則WA位元已被快取。
IF AGU_CR_FAULT_REG1.UTLB=0
//從PMH輔助。將TLB無效以移除任何其它可常駐在TLB中的子頁轉譯。當//CR_SUB_PAGE追蹤僅單一子頁轉譯時,吾人在TLB中能僅具有一子頁TLB。
Invalidate TLB(將TLB無效)
GPA=CR_GPA_ADDRESS
巡覽子頁許可表以得到32位元子頁寫入許可且將其保存到草稿暫存器1320 SCP_CR_SPP_WA。
//準備寫入SPP控制暫存器
PAGE_ADDR=GPA[Max_Phys_Addr-1:12]
ELSE
//輔助係來自TLB。我們已具有在SCP_CR_SPP_WA中所快取的寫入許可位元
//SPP_WA_BITS=SCP_CR_SPP_WA
PAGE_ADDR=CR_SUB_PAGE.PAGE_ADDR
ENDIF
//檢查存取的128字元區域是否為可寫入的
test_bit_0=(CR_FAULT_REG0[11:0]>>7)* 2; IF(SPP_WA_BITS &(1<<test_bit_0))==0
//若不允許寫入,則接著VM退出
Goto EPT_Violation
ENDIF
//若存取在相同分頁上橫跨128字元區域
//則檢查下一者。NUM_BYTES包含故障uop的運算元尺寸
test_bit_1= ((CR_FAULT_REG0[11:0]+CR_FAULT_REG1.NUM_BYTES)>>7)* 2
IF(SPP_WA_BITS &(1<<test_bit_1))==0
//若不允許寫入,則VM退出
Goto EPT_Violation
ENDIF
CR_SUB_PAGE.MATCH_OFFSET=AGU_C__FAUL__REG0[11:7]
CR_SUB_PAGE.MATCH_OSIZE=AGU_CR_FAULT_REG1.NUM_BYTES
CR_SUB_PAGE.PAGE_ADDR=PAGE_ADDR
CR_SUB_PAGE.VALID=1
Restart the macroinstruction(重新開始微指令)
END
依據上面實施例,若指令被重新開始且作成不匹配編程到CR_SUB_PAGE中的偏移和運算元尺寸之存取,接著其將再引起對微碼1305的輔助。
依據本發明之一實施例的方法係在圖15中例示。方法可在上述的系統架構之上下文內被實行,但並不 限於任何特定系統架構。
在1501,PMH進行EPT分頁巡覽且偵測了包含GPA的分頁以在EPT中的子頁許可來映射。若GPA在子頁控制暫存器中被編程,在1502決定,接著在1530處,PMH發送轉譯到具有設定以指示這是子頁TLB項目的SPP位元的TLB。若GPA未被編程在子頁控制暫存器中,接著在1506處,叫用微碼輔助。在1504處進行TLB查找。在1505處,若子頁保護位元等於1且有運算元尺寸和偏移匹配,接著過程完成。若否,則接著在1506處叫用微碼輔助。
本發明之實施例提供用於有效的、正確的子頁管理,而不需要指令包含性質(instruction inclusion property)或具有子頁許可之特別的TLB。
在當為了簡潔而僅單一子頁控制暫存器1301繪示在圖13中的同時,在一些實施例中,可有複數個子頁控制暫存器1301來同時地支援在TLB中多個子頁轉譯。
本發明之實施可包括各種步驟,其已說明於上方。步驟可體現在機器可執行指令,其可被使用來引起通用或專用處理器來進行該等步驟。或者,這些步驟可由包含用於進行該些步驟的硬接線邏輯(hardwired logic)的特定硬體組件來進行,或是藉由經編程的電腦組件和客製硬體組件之任何結合。
如於此所說明的,指令可指的是硬體的特定 組態,像是組態以進行某種運算的特定應用積體電路(ASIC)或是具有預定的功能性或是在體現在非暫態電腦可讀媒體中的記憶體中儲存的軟體指令。因此,在圖中繪示的技術能使用在一或多個電子裝置(例如,終端站台(end station)、網路元件等)上儲存及執行的碼和資料來實行。這類電子裝置使用電腦機器可讀媒體來儲存且通訊(內部地及/或在網路之上與其它電子裝置)碼和資料,電腦機器可讀媒體像是非暫態電腦機器可讀儲存媒體(例如,磁碟;光碟;隨機存取記憶體;唯讀記憶體;快閃記憶體裝置;相變記憶體)和暫態電腦機器可讀通訊媒體(例如,傳播的信號之電學、光學、聲學或其它形式-諸如載波、紅外線信號、數位信號等)。此外,這類電子裝置典型地包括耦接至一或多個其它組件之成組的一或多個處理器,其它組件像是一或多個儲存裝置(非暫態機器可讀儲存媒體)、使用者輸入/輸出裝置(例如,鍵盤、觸控螢幕及/或顯示器)以及網路連接。成組的處理器與其它組件之耦接係典型地透過一或多個匯流排及橋接器(亦被稱為匯流排控制器)。儲存裝置和運載網路流量的信號分別代表一或多個機器可讀儲存媒體和機器可讀通訊媒體。因此,給定電子裝置之儲存裝置典型地儲存用於在該電子裝置之該組一或多個處理器上執行的碼及/或資料。當然,本發明之實施例的一或多個部分可使用軟體、韌體及/或硬體之不同的結合來實行。遍及此詳細的發明說明,為了解釋的目的,已提出眾多特定的細節以為了提供 本發明之徹底的了解。然而,將為明白的是,對於本領域具有通常知識者而言,本發明可不以一些該些特定細節來實行。在某些實例中,周知的結構和功能並未以詳盡的細節來說明,以為了避免模糊本發明之標的。據此,本發明之範圍及精神應按照附隨的申請專利範圍來判斷。

Claims (16)

  1. 一種處理器,包含:實行於電路中的記憶體管理單元,包括分頁漏失處置器,用以使用客戶實體位址(GPA)來進行分頁巡覽且用以藉由在記憶體分頁表內檢查一或多個子頁許可位元偵測以該GPA識別的分頁是否以該一或多個子頁許可位元來映射,該一或多個子頁許可位元指示巡覽子頁保護表針對該分頁被致能,且其中該子頁保護表指示子頁之讀取和寫入許可;子頁控制儲存器,用以儲存至少一GPA和包括用於該GPA的偏移和運算元尺寸的其它子頁相關的資料;以及允許寫入草稿暫存器,其中該分頁漏失處置器係用以決定該GPA是否在該子頁控制儲存器中被識別;以及該分頁漏失處置器用以發送轉譯到轉譯側查緩衝器(TLB),該TLB具有設定以當有TLB命中時引起該子頁相關的資料之匹配的子頁保護指示,該子頁保護指示進行指示該轉譯係用於子頁TLB項目,其中該TLB更組態以若具有該子頁保護指示的TLB項目已被命中用於存取,則在該子頁控制儲存器中匹配用於該GPA的該偏移和運算元尺寸,且其中該TLB係用以叫用一或多個微碼輔助運算來當存取匹配具有子頁保護指示的TLB項目時,若沒有匹配該偏移及/或運算元尺寸則進行故障檢查,以及 其中當該一或多個微碼輔助運算由該分頁漏失處置器叫用時,則該一或多個微碼輔助運算將用於該GPA的寫入許可位元快取到該允許寫入草稿暫存器中。
  2. 如申請專利範圍第1項的處理器,其中若該GPA並非在該子頁控制儲存器中編程,接著該分頁漏失處置器用以叫用一或多個微碼輔助運算來進行故障檢查。
  3. 如申請專利範圍第1項的處理器,其中當叫用該一或多個微碼輔助運算時,若該子頁保護表指示由輔助儲存所存取的偏移是可寫入的,則該一或多個微碼輔助運算巡覽該子頁保護表且以該偏移和運算元尺寸來編程該子頁控制儲存器。
  4. 如申請專利範圍第3項的處理器,其中若該輔助儲存不是可寫入的,接著觸發延伸分頁表違反故障來通知虛擬機器監視器。
  5. 如申請專利範圍第1項的處理器,其中該子頁控制儲存器包含用以指示包含在其中的該資料是否為有效的有效指示、GPA指示、位址運算元尺寸指示以及位址偏移指示。
  6. 如申請專利範圍第2項的處理器,更包含:前端單元,其包含非包容性指令快取,用以儲存觸發該一或多個微碼輔助運算的指令,該一或多個微碼輔助運算用以引起該指令重新執行。
  7. 一種用於子頁寫入保護的方法,包含:使用客戶實體位址(GPA)進行分頁巡覽且藉由在記憶 體分頁表內檢查一或多個子頁許可位元偵測以該GPA識別的分頁是否以該一或多個子頁許可位元映射,該一或多個子頁許可位元指示巡覽子頁保護表針對該分頁被致能,且其中該子頁保護表指示子頁之讀取和寫入許可;儲存至少一GPA和關於在子頁控制儲存器中包括用於該GPA的偏移和運算元尺寸之其它子頁相關資料;決定該GPA是否在該子頁控制儲存體儲存器中被識別;發送轉譯到具有子頁保設指示設定的轉譯側查緩衝器(TLB)用以當有TLB命中時,引起與在該子頁控制儲存器中編程的資料匹配的子頁保護指示;若TLB項目具有子頁保護指示,則在該子頁控制儲存器中匹配用於該GPA的該偏移和運算元尺寸;若沒有匹配該偏移及/或運算元尺寸,則叫用一或多個微碼輔助運算以進行故障檢查;以及當叫用該一或多個微碼輔助運算時,將用於該GPA的寫入許可位元快取到該允許寫入草稿暫存器中。
  8. 如申請專利範圍第7項的方法,其中若該GPA並非被編程在該子頁控制儲存器中,接著叫用一或多個微碼輔助運算來進行故障檢查。
  9. 如申請專利範圍第7項的方法,其中當叫用該一或多個微碼輔助運算時,該一或多個微碼輔助運算巡覽該子頁保護表,且若該子頁保護表指示由輔助儲存所存取的偏移為可寫入的,則編程具有該偏移和運算元尺寸的該子頁控制儲存器。
  10. 如申請專利範圍第9項的方法,其中若該輔助儲存並非可寫入的,接著觸發延伸分頁表違反故障以通知虛擬機器監視器。
  11. 如申請專利範圍第7項的方法,其中該子頁控制儲存器包含用以指示包含在其中的該資料是否有效的有效指示、GPA指示、位址運算元尺寸指示以及位址偏移指示。
  12. 一種用於子頁寫入保護的系統,包含:記憶體,用以儲存程式碼及資料;處理器,用以處理該程式碼及資料來實行虛擬機器監視器(VMM)及在由該VMM支援的一或多個虛擬機器(VM)內執行的一或多個客戶作業系統(OS),該客戶OS用以利用客戶實體位執(GPA)來進行記憶體運算,該GPA用以由該VMM轉譯;該處理器更包含:實行於電路中的記憶體管理單元,包括分頁漏失處置器,用以使用GPA進行分頁巡覽,並且用以藉由在記憶體分頁表內檢查一或多個子頁許可位元偵測以該GPA識別的分頁是否以該一或多個子頁許可位元來映射,該一或多個子頁許可位元指示巡覽子頁保護表針對該分頁被致能,且其中該子頁保護表指示子頁之讀取和寫入許可;子頁控制儲存器,用以儲存至少一GPA和包括用於該GPA的偏移和運算元尺寸的其它子頁相關的資料;以及 允許寫入草稿暫存器,其中該分頁漏失處置器係用以決定該GPA是否被編程於該子頁控制儲存器中,以及該分頁漏失處置器係用以發送轉譯到轉譯側查緩衝器(TLB),其具有設定以當有TLB命中時引起該子頁相關的資料之匹配的子頁保護指示,該子頁保護指示進行指示該轉譯係用於子頁TLB項目,其中該TLB更組態以若具有該子頁保護指示的TLB項目曾被命中用於存取,則在該子頁控制儲存器中匹配用於該GPA的該偏移和運算元尺寸,其中該TLB係用以叫用一或多個微碼輔助運算來當存取匹配具有子頁保護指示的TLB項目時,若沒有匹配該偏移及/或運算元尺寸則進行故障檢查,以及其中當該一或多個微碼輔助運算由該分頁漏失處置器叫用時,則該一或多個微碼輔助運算將用於該GPA的寫入許可位元快取到該允許寫入草稿暫存器中。
  13. 如申請專利範圍第12項的系統,其中若該GPA並未被編程在該子頁控制儲存器中,接著該分頁漏失處置器用以叫用一或多個微碼輔助運算來進行故障檢查。
  14. 如申請專利範圍第12項的系統,其中當叫用該一或多個微碼輔助運算時,該一或多個微碼輔助運算巡覽該子頁保護表,且若該子頁保護表指示由輔助儲存所存取的偏移為可寫入的,則以該偏移和運算元尺寸來編程該子頁控制儲存器。
  15. 如申請專利範圍第14項的系統,其中若該輔助 儲存並非可寫入的,接著觸發延伸分頁表違反故障以通知該虛擬機器監視器。
  16. 如申請專利範圍第12項的系統,其中該子頁控制儲存器包含用以指示包含在其中的該資料是否有效的有效指示、GPA指示、位址運算元尺寸指示以及位址偏移指示。
TW105137680A 2015-12-22 2016-11-17 用於子頁寫入保護的方法及設備 TWI723080B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/979,038 US10255196B2 (en) 2015-12-22 2015-12-22 Method and apparatus for sub-page write protection
US14/979,038 2015-12-22

Publications (2)

Publication Number Publication Date
TW201732604A TW201732604A (zh) 2017-09-16
TWI723080B true TWI723080B (zh) 2021-04-01

Family

ID=59065177

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105137680A TWI723080B (zh) 2015-12-22 2016-11-17 用於子頁寫入保護的方法及設備

Country Status (5)

Country Link
US (1) US10255196B2 (zh)
CN (1) CN108292273A (zh)
DE (1) DE112016005919T5 (zh)
TW (1) TWI723080B (zh)
WO (1) WO2017112486A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10515023B2 (en) * 2016-02-29 2019-12-24 Intel Corporation System for address mapping and translation protection
KR102701812B1 (ko) * 2016-07-27 2024-09-03 에스케이하이닉스 주식회사 휘발성 메모리를 캐쉬로 사용하는 비휘발성 메모리 시스템
US10528746B2 (en) * 2016-12-27 2020-01-07 Intel Corporation System, apparatus and method for trusted channel creation using execute-only code
US10671737B2 (en) * 2017-11-10 2020-06-02 Intel Corporation Cryptographic memory ownership table for secure public cloud
US11693790B2 (en) 2019-05-24 2023-07-04 Texas Instmments Incorporated Methods and apparatus to facilitate write miss caching in cache system
US12086446B2 (en) 2019-10-21 2024-09-10 Intel Corporation Memory and storage pool interfaces
CN111367831B (zh) * 2020-03-26 2022-11-11 超睿科技(长沙)有限公司 翻译页表的深度预取方法、部件、微处理器及计算机设备
CN113722247B (zh) * 2021-08-06 2024-04-26 杭州中天微系统有限公司 物理内存保护单元、物理内存权限控制方法和处理器
CN115729694A (zh) * 2021-08-31 2023-03-03 华为技术有限公司 一种资源管理的方法及相应装置
CN113722246B (zh) * 2021-11-02 2022-02-08 超验信息科技(长沙)有限公司 处理器中物理内存保护机制的实现方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440710A (en) * 1994-03-08 1995-08-08 Exponential Technology, Inc. Emulation of segment bounds checking using paging with sub-page validity
US5652872A (en) * 1994-03-08 1997-07-29 Exponential Technology, Inc. Translator having segment bounds encoding for storage in a TLB
US5664159A (en) * 1994-03-08 1997-09-02 Exponential Technology, Inc. Method for emulating multiple debug breakpoints by page partitioning using a single breakpoint register
US20140006681A1 (en) * 2012-06-29 2014-01-02 Broadcom Corporation Memory management in a virtualization environment

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111145B1 (en) * 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US7376949B2 (en) 2003-10-01 2008-05-20 Hewlett-Packard Development Company, L.P. Resource allocation and protection in a multi-virtual environment
US20050273571A1 (en) 2004-06-02 2005-12-08 Lyon Thomas L Distributed virtual multiprocessor
US8799620B2 (en) 2007-06-01 2014-08-05 Intel Corporation Linear to physical address translation with support for page attributes
US9804870B2 (en) * 2011-10-28 2017-10-31 Intel Corporation Instruction-set support for invocation of VMM-configured services without VMM intervention
WO2013095644A1 (en) 2011-12-23 2013-06-27 Intel Corporation Page miss handler including wear leveling logic
US9183161B2 (en) * 2012-12-28 2015-11-10 Intel Corporation Apparatus and method for page walk extension for enhanced security checks

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440710A (en) * 1994-03-08 1995-08-08 Exponential Technology, Inc. Emulation of segment bounds checking using paging with sub-page validity
US5598553A (en) * 1994-03-08 1997-01-28 Exponential Technology, Inc. Program watchpoint checking using paging with sub-page validity
US5652872A (en) * 1994-03-08 1997-07-29 Exponential Technology, Inc. Translator having segment bounds encoding for storage in a TLB
US5664159A (en) * 1994-03-08 1997-09-02 Exponential Technology, Inc. Method for emulating multiple debug breakpoints by page partitioning using a single breakpoint register
US20140006681A1 (en) * 2012-06-29 2014-01-02 Broadcom Corporation Memory management in a virtualization environment

Also Published As

Publication number Publication date
DE112016005919T5 (de) 2018-09-13
US20170177500A1 (en) 2017-06-22
WO2017112486A1 (en) 2017-06-29
TW201732604A (zh) 2017-09-16
CN108292273A (zh) 2018-07-17
US10255196B2 (en) 2019-04-09

Similar Documents

Publication Publication Date Title
TWI723080B (zh) 用於子頁寫入保護的方法及設備
US9335943B2 (en) Method and apparatus for fine grain memory protection
US10409603B2 (en) Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory
US9043559B2 (en) Block memory engine with memory corruption detection
KR101467069B1 (ko) 일련의 페이지의 캐시 플러싱 및 일련의 엔트리의 tlb 무효화를 위한 시스템, 방법 및 장치
TWI516937B (zh) 用於資料讀取/寫入延伸分頁表違例之處理的決策動作決定技術之方法、裝置及非暫態機器可讀媒體
US9891936B2 (en) Method and apparatus for page-level monitoring
US20160092371A1 (en) Method and Apparatus For Deterministic Translation Lookaside Buffer (TLB) Miss Handling
US9471494B2 (en) Method and apparatus for cache line write back operation
US20170286302A1 (en) Hardware apparatuses and methods for memory performance monitoring
CN108694057B (zh) 用于存储器回写的装置和方法
US9405937B2 (en) Method and apparatus for securing a dynamic binary translation system
US20160378684A1 (en) Multi-page check hints for selective checking of protected container page versus regular page type indications for pages of convertible memory
CN110162380A (zh) 用来防止软件侧通道的机制
US9183161B2 (en) Apparatus and method for page walk extension for enhanced security checks
EP2798471A1 (en) Structure access processors, methods, systems, and instructions
US20220413860A1 (en) System, Apparatus And Methods For Minimum Serialization In Response To Non-Serializing Register Write Instruction
US20240054077A1 (en) Pipelined out of order page miss handler
US20220413859A1 (en) System, apparatus and methods for performant read and write of processor state information responsive to list instructions
GB2616643A (en) Read-as-X property for page of memory address space

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees