TW201342064A - 用於資料讀取/寫入延伸分頁表違反之處理的決策動作決定技術 - Google Patents

用於資料讀取/寫入延伸分頁表違反之處理的決策動作決定技術 Download PDF

Info

Publication number
TW201342064A
TW201342064A TW101143446A TW101143446A TW201342064A TW 201342064 A TW201342064 A TW 201342064A TW 101143446 A TW101143446 A TW 101143446A TW 101143446 A TW101143446 A TW 101143446A TW 201342064 A TW201342064 A TW 201342064A
Authority
TW
Taiwan
Prior art keywords
instruction
data
memory area
allowed
protected memory
Prior art date
Application number
TW101143446A
Other languages
English (en)
Other versions
TWI516937B (zh
Inventor
Kuo-Lang Tseng
Baohong Liu
Ritu Sood
Manohar Ruben Castelino
Madhukar Tallam
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201342064A publication Critical patent/TW201342064A/zh
Application granted granted Critical
Publication of TWI516937B publication Critical patent/TWI516937B/zh

Links

Classifications

    • 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/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

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

Abstract

決定虛擬機的一指令是否被允許修改一受保護記憶體區域的系統、組織和方法的實施例被描述。在一些實施例中,一系統檢測出該指令嘗試寫入受保護記憶體區域的一指示。此外,系統基於一起始位址和該指令的資料長度決定該指令是否被允許寫入該受保護記憶體區域。而且,是否指令被允許寫入受保護記憶體區域,系統則以指令結果更新受保護記憶體區域。

Description

用於資料讀取/寫入延伸分頁表違反之處理的決策動作決定技術 發明領域
發明領域一般而言與電腦記憶體結構有關,且更明確地是與讀取/寫入延伸分頁表違反的處理有關。
發明背景
硬體協助的虛擬化是改良在一主機裝置上虛擬化一訪客平台之效率的一種方法。這包括使用特別設計的中央處理單元(CPUs)和輔助改善一訪客平台環境性能的硬體元件。虛擬化由二個主要的軟體類別所組成,他們是VMM(虛擬機顯示器)和訪客軟體。VMM作用為一主機且控制實際處理器和其他平台硬體。VMM用一抽象化的虛擬處理器呈現訪客軟體且容許它直接在一邏輯處理器上執行。此外,VMM能夠保有處理器資源和其他硬體的選擇控制。虛擬機(VM)是一以減少的特權獨立執行的一訪客軟體環境,所以VMM能保有平台的控制。
VM被一VMM控制的一個問題是在訪客VM中運行之處理器的一指令可能嘗試修改VM之受保護或特權資料,該受保護或特權資料被儲存在唯讀記憶體中。決定此一指令是否有權存取該指令想要修改的資料範圍,VMM將需要提取並解碼該指令,這對於VMM是一代價高的程序。
依據本發明之一實施例,係特地提出一種決定一指令被允許修改一記憶體區域的方法,包含:檢測一指令試圖寫入虛擬機的一受保護記憶體區域的一指示;基於該指令的一起始位址和資料長度決定該指令是否被允許寫入該受保護記憶體區域;以及響應於該指令是否被允許寫入受保護記憶體區域的該決定,以指令結果更新該受保護記憶體區域。
100‧‧‧裝置
102‧‧‧虛擬機
104、1232、1234、1140‧‧‧記憶體
106‧‧‧中央處理單元
108‧‧‧虛擬機控制結構(VMCS)
110‧‧‧延伸分頁表(EPT)
112‧‧‧虛擬機顯示器(VMM)
116‧‧‧EPT模組
118‧‧‧資料長度模組
200、300‧‧‧分頁表
202A-N、890‧‧‧核心
302‧‧‧唯讀區域
400、500‧‧‧方法
401、405、407、409、411、503、507‧‧‧區塊
601‧‧‧EPT違反模組
603‧‧‧資料位址模組
605‧‧‧資料長度模組
607‧‧‧資料範圍模組
609‧‧‧更新EPT模組
611‧‧‧交替動作模組
701‧‧‧EPT違反模組
703‧‧‧擷取資料長度模組
705‧‧‧儲存資料長度模組
707‧‧‧引發VMEXIT模組
800‧‧‧處理器管線
802‧‧‧提取級
804‧‧‧長度解碼級
806‧‧‧解碼級
808‧‧‧分配級
810‧‧‧重命名級
812‧‧‧一排程級
814‧‧‧暫存器取/記憶體讀取級
816‧‧‧執行級
818‧‧‧寫回/記憶體寫入級
822‧‧‧例外處理級
824‧‧‧確定級
830‧‧‧前端單元
832‧‧‧分支預測裝置
834‧‧‧指令快取單元
836‧‧‧指令翻譯旁看緩衝器(TLB)
838‧‧‧指令提取單元
840‧‧‧解碼單元
850‧‧‧執行引擎
852‧‧‧重命名/分配器單元
854‧‧‧收回單元
856‧‧‧排程器單元
858‧‧‧暫存器檔案單元
860‧‧‧執行叢集
862‧‧‧執行單元
864‧‧‧記憶體存取單元
870‧‧‧記憶體單元
872‧‧‧資料TLB單元
874‧‧‧資料快取單元
876‧‧‧二級(L2)快取單元
900‧‧‧指令解碼器
902‧‧‧晶片上互連網路
904‧‧‧二級(L2)快取
906‧‧‧一級(L1)快取
906A‧‧‧L1資料快取
908‧‧‧純量單元
910‧‧‧向量單元
912‧‧‧純量暫存器
914‧‧‧向量暫存器
920‧‧‧拌和單元
922‧‧‧數值變換單元
926‧‧‧寫入遮罩暫存器
928‧‧‧16倍寬ALU
1000、1215‧‧‧處理器
1002A‧‧‧單一核心
1002A-N‧‧‧多個核心
1006‧‧‧共享快取單元
1008‧‧‧特別用途邏輯
1010‧‧‧系統代理程式
1012‧‧‧環狀結構互連單元
1014‧‧‧整合記憶體控制器單元
1016‧‧‧匯流排控制器單元
1100‧‧‧系統
1110、1115‧‧‧處理器
1120‧‧‧控制器集線器
1145‧‧‧共處理器
1160‧‧‧輸入/輸出(I/O)單元
1190‧‧‧圖形記憶體控制器集線器(GMCH)
1195‧‧‧連接
1200‧‧‧示範系統
1216‧‧‧第一匯流排
1220‧‧‧第二匯流排
1222‧‧‧鍵盤及/或滑鼠
1224‧‧‧聲頻輸入/輸出
1227‧‧‧通信裝置
1228‧‧‧儲存單元
1230‧‧‧指令/編碼和資料
1238‧‧‧共處理器
1239‧‧‧高性能介面
1250‧‧‧點對點互連
1252、1254‧‧‧P-P介面
1270‧‧‧第一處理器
1272‧‧‧記憶體控制器(IMC)單元
1276‧‧‧點對點介面電路
1280‧‧‧第二處理器
1282‧‧‧記憶體控制器(IMC)單元
1286‧‧‧點對點介面
1288‧‧‧點對點介面電路
1290‧‧‧晶片組
1294‧‧‧點對點介面電路
1296‧‧‧介面
1298‧‧‧點對點介面電路
1300‧‧‧示範系統
1315‧‧‧I/O裝置
1410‧‧‧應用處理器
1420‧‧‧共處理器
1430‧‧‧靜態隨機存取記憶體(SRAM)單元
1432‧‧‧直接記憶體存取(DMA)單元
1440‧‧‧顯示單元
1502‧‧‧高階語言
1504‧‧‧x86編譯器
1506‧‧‧x86二進制碼
1508‧‧‧指令集編譯器
1510‧‧‧指令集二進制碼
1512‧‧‧指令轉換器
1514、1516‧‧‧x86指令集核心
本發明藉由實例來說明且不受附圖中的圖式限制,附圖中類似編號代表類似元件且其中: 圖1繪示依據本發明的一實施例有多個虛擬機的一裝置的方塊圖。
圖2繪示依據本發明的一實施例一讀取/寫入(RW)延伸分頁表(EPT)違反的一方塊圖。
圖3繪示依據本發明的一實施例一分頁表中重寫至另一位址上的一RW EPT違反的一方塊圖。
圖4繪示決定一RW EPT違反是否被允許使用一資料長度的方法的實施例。
圖5繪示在VMEXIT之前儲存一指令資料長度的方法的一實施例。
圖6繪示依據本發明之一實施例的一用於決定一RW EPT違反是否被允許使用一資料長度的RW EPT模組的方塊圖。
圖7繪示依據本發明之一實施例用於在VMEXIT之前 儲存一指令資料長度的一資料長度模組的方塊圖。
圖8A繪示一說明依據本發明的實施例一示範性順序管線和一示範性暫存器重命名無序發出/執行管線的方塊圖。
圖8B是一說明一順序架構核心之示範實施例以及依據本發明的實施例欲被包含在一處理器中之一示範暫存器重命名、無序發出/執行架構核心的方塊圖。
圖9A和9B是一說明依據本發明之實施例的一示範性順序核心架構的方塊圖。
圖10是一說明依據本發明的實施例可具有一個以上核心之處理器的方塊圖。
圖11是依據本發明一實施例的一系統的方塊圖。
圖12是依據本發明一實施例的一第二系統的方塊圖。
圖13是依據本發明一實施例的一第三系統的方塊圖。
圖14是依據本發明一實施例的一SoC的方塊圖。
圖15是一對比依據本發明實施例使用一軟體指令轉換器將一源指令集中的二進制指令轉換成一目標指令集中的二進制指令的方塊圖。
詳細說明
在下列的描述中闡述許多特定細節。然而,應瞭解的是本發明的實施例可能在毋需這些細節下被實施。在其他實例中,眾所週知的電路、結構和技術未被詳細說明以免模糊對此一描述的理解。
在說明書中參照「一個實施例」、「一實施例」、「一 示範實施例」,等等表示所描述的實施例可包括一特定功能、結構或特性。但每一實施例可能不一定包含該特定的功能、結構或特性。此外,如此的用語不一定指同一實施例。此外,當一特定的功能、結構或特性針對一實施例被描述時,所主張的是針對無論是否明確地描述的其他實施例實現此一功能、結構或特性是在熟習本領域技術之人士的知識範圍內。
讀取/寫入(RW)延伸分頁表(EPT)違反
以下是決定一讀取/寫入(RW)延伸分頁表(EPT)違反是否被允許使用一虛擬化環境中之一資料長度的實施例。在一個實施例中,系統在一VMEXIT期間由一指令的起始位址檢測出一之RW EPT違反。系統決定該指令是否被允許存取起始位址,如果被允許,則係統擷取指令資料長度。使用該資料長度及起始位址範圍,系統決定該指令是否有權存取由起始位址和資料長度指示的資料範圍。如果指令被允許存取該資料範圍,系統更新EPT且回復VM。如果不允許,則系統採取交替動作。
圖1繪示依據本發明的一個實施例具有多個虛擬機102之裝置100的一方塊圖。在圖1中,裝置100包括一或多個虛擬機(VM)102、記憶體104及一或多個中央處理單元(CPUs)106。在一個實施例中,裝置可以是一種能運行一或多個虛擬機之型態的裝置(個人電腦、膝上型電腦,伺服器,埋入式裝置,等等及/或任何其他類型能夠運行一或多個虛擬機的裝置)。在一個實施例中,每一CPUs 106是一可 能是一核心或多核心處理器的中央處理器。在一個實施例中,記憶體104是實體記憶體。
在一個實施例中,裝置100包括一或更多個在裝置100上執行的VMs 102。在此實施例中,一虛擬機顯示器(VMM)112處理每一VM 102。此外,每一VM 102有一相關聯的虛擬機控制結構(VMCS)108。在一個實施例中,VM是一機器(例如一電腦)的一軟體實施,其如同一實體電腦般地執行程式。在一個實施例中,一虛擬機提供一支援作業系統(OS)執行的系統平台。如果有多於一VM,每一VMs可運行相同或不同的OS且此一OS可以是與裝置100上運行的OS相同或不同。且舉例而言在一實施例中,電腦可能運行微軟視窗,然而VMs 102可能執行相同或不同的作業系統。(例如,同一或不同版本的微軟視窗,蘋果電腦Mac作業系統,以UNIX為基礎的作業系統,等等)。
因為每一VM(s)102是一在裝置100內運行的單獨機器,每一VM(s)102與一用來處理主機裝置100上之VM 102的虛擬機管理器(VMM)112相關聯。每一VM 102的VMM 112給予VM 102之訪客OS一虛擬操作平台且處理訪客OS的執行。此外,VMM 112處理對應之VM 102的訪客實體記憶體位址空間與記憶體104的系統實體記憶體位址空間之間的記憶體轉換。在一個實施例中,該VM 102的一延伸分頁表(EPT)110可被用來執行由訪客實體記憶體位址到系統實體位址的轉換程序。在此一實施例中,EPT 110被VMM用來執行該轉換。因此,EPT 110能被使用來支援實 體記憶體的虛擬化。
當EPT 110在使用中,通常被視為實體位址的位址代以被視為訪客實體位址。訪客實體位址藉由尋訪一系列EPT頁結構產生存取實體記憶體的實體位址。在一個實施例中,EPT 110指定由訪客運行之軟體的每一記憶體頁的頁許可(XWR)。在此一實施例中,嘗試執行對記憶體的不許可存取造成EPT違反(例如,VMEXITs)在一VMEXIT中,VMM 112例如可調查訪客背景,一訪客指令指標(例如,一32位元、64位元,等等之指令指標),且做出有關指定的決定,該決定可以是拒絕、允許或其他動作。如果VMM決定允許存取,它能切換到一不同的EPT檢視(例如,EPT表),具有對有關頁的權限,或更新當前EPT頁項目允許存取。在此一實施例中,記憶體許可的粒狀是以按頁為基礎(例如,四千位元組,等等)。
圖2繪示一讀取/寫入(RW)延伸分頁表(EPT)違反之一方塊圖的實施例。在圖2中,一分頁表200包括頁X 202 A與頁Y202B。在一個實施例中,頁是一記憶體之頁且可具有不同大小。(例如,4KB,等等)。如圖2中所繪示,位址A204A和B204B指被包含在頁X202中的位址。此外,位址C指被包含在頁Y202B中的位址。在一個實施例中,EPT 200用作以一頁為基礎監控記憶體的目的。舉例而言且在一實施例中,在圖2中,頁X 202 A具有執行及讀取許可,然而頁Y 202B在EPT表200中具有唯讀許可。在此一實施例中,唯讀許可被用來保護頁Y中的資料不被意外寫入。
在一個實施例中,如果在頁X202A之位址A 204A的一指令存取在EPT中具有一唯讀許可之頁Y202B中的位址C204C的資料,則一EPT違反產生及一VMEXIT。在一VMEXIT中,VMM能決定是否允許以訪客指令指標以及/或其他VMCS欄位為基礎的存取。如果存取被允許,VMM能暫時修改頁Y 202B的許可以允許存取,或者VMM能決定切換到一不同的EPT檢視(例如,EPT表),該檢視具有所需要的頁Y 202B的許可。或者,VMM能拒絕存取或者採取其他動作。藉由此一機制,EPT能夠確定受保護的資料能被可信賴的編碼修改。
圖3繪示依據本發明的一個實施例在一分頁表300中有一重寫到另一位址的一RW EPT違反的一方塊圖。在圖3中,一分頁表300包括頁X 302A及頁Y 302 B。在一個實施例中,頁是記憶體的頁且可以具有不同大小(例如,4KB,等等)。如圖3所繪示,位址A 304A和B 304 B指被包含在頁X 302A中的位址。此外,位址C302C和D302D指一被包含在頁Y302B中的位址。在一個實施例中,位址C 302 C和位址D 302 D之間的差為四位元組。
不像在圖2,在圖3中,記憶體保護是在一較小的粒狀基礎上(例如,部分的頁Y 302 B受保護而部分則否)在一個實施例中,VMM監視Y 302B中之位址D 304 D及以上之資料的存取,而不監視對頁Y 302B中位址D 304D以下的資料存取。如果在頁X 302 B中之一位址B 304B的一指令嘗試寫入一些資料至頁Y 302B中的位址C 304C,由於VMM 未監視位址C 304C的資料,VMM藉由更新EPT頁來允許存取。然而,在一個實施例中,惡意程式碼可能試著藉由從位址C 304C寫入超過四位元組且重寫位址304D的資料而寫入頁Y 302 B中的位址D 304D。在一個實施例中,為了阻止且在允許存取之前發生此一情況,VMM在位址B 302 B提取且解碼指令以查明要被寫入的資料長度,這可能是高代價的。在此一實施例中,對於大部份的資料存取,VMM不能在未提取及解碼指令之下決定起始於位址D 304D的將被寫入之資料範圍。
在一個實施例中,為了使VMM能夠在沒有提取並解碼指令的可能障礙下決定正被寫入的資料範圍,VMM在逢一RW違反VMEXIT時將資料長度填入EPT中之VMCS內。在VMEXIT中,VMM使用資料長度和起始位址(在VMCS可取得)的組合以決定是否引起EPT違反的指令被允許取資料範圍。此外,在此一實施例中,因為VMM不需要解碼指令來決定指令的資料長度,所以VMM更有效率地執行。使用資料長度決定令存取並在VMCS中儲存資料長度以下更進一步在圖4和5中被描述。
圖4繪示方法400的一實施例,該方法使用一資料長度決定是否允許一RWEPT違反。在一個實施例中,方法400藉由上文在圖1中描述之裝置100的RW EPT模組116執行。在圖4中,方法400從在區塊401檢測一VMEXIT中之一EPT違反開始。在一個實施例中,當一指令嘗試寫入一EPT的唯讀頁時,方法400檢測出一EPT違反。舉例而言且 在一實施例中,方法400將會檢測出如上文於圖3中所描述之一由於在位址304B之指令B嘗試寫入位址C 304C之頁Y 302B的一唯讀區域而發生的EPT違反。
在區塊403,方法400決定是否允許由指令所請求之該起始位址處的該指令資料存取。在一個實施例中,方法400藉由從VMCS擷取與EPT違反有關的位址決定該資料存取是否是可允許的。舉例而言且在一實施例中,方法400能夠相對應於請求資料存取之指令的指令指標檢查儲存在VMCS中的訪客背景以決定是否允許或者拒絕存取。舉例而言且在一實施例中,方法400決定指令B想要寫入在位址C 304C的頁Y 302 B的唯讀區域。在此一實施例中,位址C 304C是指令B的起始位址。如果存取被拒絕,方法400區塊411採取其他動作。在一個實施例中,方法400能跨越對應的指令,分派某些其他編碼改正問題,等等。
如果存取被允許,在區塊405,方法400從VMCS提取資料長度。在一個實施例中,資料長度是由因在上述的區塊401檢測出之RW EPT違反所引起的指令被寫入之資料量的資料長度。在一個實施例中,資料長度當EPT違反由VMCS資料長度欄位中的VMM觸發時被儲存。儲存資料長度在下述的圖5更進一步被描述。在區塊407,方法400決定是否允許對資料範圍中之位元組的資料存取。在一個實施例中,資料範圍是在區塊403決定的起始位址與在前述的區塊405擷取的資料長度。如果存取不被允許,方法400在區塊411採取其他動作。在一個實施例中,方法400能跳越對 應的指令,分派一些其他編碼以改正問題,等等。
如果存取被允許,方法400更新EPT和VM回復。在一個實施例中,EPT以指令的結果更新。在一個實施例中,方法400改變頁存取控制以讀取/寫入,且觸發EPT違反的指令被允許在EPT的此一起始位址及資料範圍方面修改資料。指令完成且方法400回復VM。舉例而言且在一實施例中,回參前述的圖3,方法400在位址B304B執行指令,修改起始於位址C 304C並由此一資料之資料長度所示的資料範圍。
如上所述,方法400由VMCS擷取一指令資料長度決定是否指令是否有權存取資料範圍。為使方法400有效率地進行,指令資料長度是在方法400執行之前在VMCS中被儲存。在一個實施例中,指令資料長度在VMEXIT前被儲存在VMCS中。圖5繪示用於在VMEXIT之前儲存指令資料長度的方法500的一實施例。在一實施例中,方法500在上述的圖1中繪示的資料長度模組118執行。圖5中,方法500在區塊501檢測出EPT違反。在一個實施例中,方法500藉由一沒有寫入許可嘗試寫入EPT之一頁的指令檢測出此一違反。舉例而言且在一實施例中,方法500決定在位址304B的指令B正嘗試寫入位址C 304C之頁Y 302B的唯讀區域302。
在區塊503,方法500擷取指令的資料長度。在一個實施例中,資料長度指令是指令想要在該指令之起始位址寫入的資料的長度。舉例而言且在一實施例中,方法500 確定位址302B的指令B如圖3中描述正嘗試將一特定數目之位元組寫入位址C 304C之頁Y304B的一唯讀區域。方法500在區塊505的VMCS中儲存資料長度。在一個實施例中,如圖4中描述,方法400使用資料長度來決定指令是否被允許存取資料範圍。在區塊507方法500VMEXIT。
圖6繪示一RW EPT模組116用以決定依據本發明的一實施例一RW EPT違反是否被允許使用一資料長度的一方塊圖。在一個實施例中,RW EPT模組116包括檢測EPT違反模組601,允許存取資料位址模組603,提取資料長度模組605,允許取資料範圍模組607,更新EPT模組609,以及交替動作模組611。在一個實施例中,如上述在圖4中記載,檢測EPT違反模組601檢測出並接收VMEXIT中的EPT違反。在一個實施例中,如上述在圖4,區塊405中記載,允許存取資料位址模組603決定指令是否在起始位址有權存取。在一個實施例中,如上述在圖4,區塊405中描述,提取資料長度模組605從VMCS提取指令資料的長度。在一個實施例中,如上述在圖4,區塊407記載,允許存取資料範圍模組607決定指令是否有權排列是否指令在圖4的上面有權存取描述的資料範圍。如上述在圖4,區塊409中記載,在一個實施例中,更新EPT模組609更新EPT回復VM。如在圖4,區塊411中記載,在一實施例中,交替動作模組611採取交替動作。
圖7繪示依據本發明的一實施例一資料長度模組118在VMEXIT之前儲存一指令資料長度的方塊圖。在一個 實施例中,資料長度模組118包括檢測EPT違反模組701,擷取資料長度模組703,儲存資料長度模組705,以及引發VMEXIT模組707。在一個實施例中,如上述圖5,區塊503中記載,檢測EPT違反模組701檢測出EPT違反。在一個實施例中,如上述在圖5,區塊503中記載,擷取資料長度模組703擷取指令資料長度。如上述在圖5,區塊505中記載,儲存資料長度模組705儲存指令資料長度於VMCS中。在一實施例中,如上述在圖5,區塊507中記載,引發VMEXIT模組707引發VMEXIT。
示範的核心結構、處理器和電腦架構
處理器核心可能以不同的方式、就不同的目的以及在不同的處理器中實施。舉例而言,如此的核心的實施可能包括:1)一適用於通用計算的通用型順序核心;2)一適用於通用計算的高性能通用型無序核心;3)一主要適用於圖形及/或科學(通量)計算的特別用途核心。不同處理器的實施可能包括:1)一包含一或多個適用於通用型計算之順序核心,及/或一或多個適用於通用計算的無序核心的CPU更;以及2)一包含一或多個主要適用於圖形及/或科學(通量)的特別用途核心的共處理器。此種不同處理器引出不同的電腦系統架構,可包括:1)在一獨立於CPU的晶片上的共處理器;2)在與一CPU同一封裝的一獨立晶片上的共處理器;3)與一CPU在同一晶片上的共處理器;(在此一情況,此一共處理器有時稱作特別用途邏輯,諸如整合式圖形及/或科學(通量)邏輯,或稱作特別用途核心);以及4)一系統單晶 片,可在同一晶片上包含所述的CPU(有時稱之為(多數個)應用核或(多數個)應用處理器)、上述的共處理器,以及額外功能。其次描述示範的核心架構,接著是示範處理器和電腦架構的描述。
示範的核心架構 順序和無序核心方塊圖
圖8A是繪示依據本發明的實施例一示範性順序管線和一示範性暫存器重命名,無序發出/執行管線。圖8B是繪示依據本發明之實施例的一順序架構核心之示範實施例以及包含在一處理器中之一示範性暫存器重命名,無序發出/執行架構核心的方塊圖。圖8A-B中的實線方格繪示順序管線與順序核心,而選擇加入的虛線方格繪示暫存器重命名,無序發出/執行管線和核心。考慮到順序方面是無序方面的一子集,無序方面將被描述。
在圖8A,一處理器管線800包括一提取級802、一長度解碼級804、一解碼級806、一分配級808、一重命名級810,一排程(也稱作一分派或發出)級812,一暫存器取/記憶體讀取級814、一執行級816、一寫回/記憶體寫入級818、一例外處理級822,及一確定級824。
圖8B繪示包括一耦合到一執行引擎850之前端單元830,且兩者皆耦合到一記憶體單元870。核心890可以是一精簡指令集計算(RISC)核心、一複雜指令集計算(CISC)核心,一極長指令字(VLIW)核心,或一混合或替代的核心類型。另一種選項是,核心890可以是一特別用途核心,諸 如,舉例而言,一網路或通信核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心,或同類。
前端單元830包括耦合到一指令快取單元834的分支預測裝置832,該指令快取單元834被耦合到指令翻譯旁看緩衝器(TLB)836,後者耦合到一指令提取單元838,該指令提取單元耦合到一解碼單元840。解碼單元840(或解碼器)可以解碼指令,且產生當做輸出的一或者多個微運算、微碼,或其他控制信號,該等輸出由原始指令被解碼,或以其他方式反映、或衍生自原始指令。解碼單元840可使用各種不同的不同機制被實施。適當機制的例子包括,但未限制於,查找表、硬體實施、可程式的邏輯陣列(PLAs)、微碼唯讀記憶體(ROMs),等等。在一個實施例中,核心890包括一微碼ROM或其他儲存某些巨集指令之微碼(例如,在解碼單元840中或在前端單元830內)。解碼單元840被耦合到執行引擎單元850中的一重命名/分配器單元852。
執行引擎單元850包括耦合到一收回單元854的重命名/分配器單元852及一組一或多個排程器單元856。(多數個)排程器單元856代表一些不同的排程器,包括保留站、中央指令視窗,等等。(多數個)排程器單元856耦合到實體(多數個)暫存器檔案單元858。每一該(多數個)實體暫存器檔案單元858代表一或多個實體暫存器檔案,不同的一暫存器檔案儲存一或多個不同的資料種類,諸如純量整數、純量浮點、封包整數、封包浮點、向量整數、向量浮 點、狀態(例如,要被執行的下一指令的位址之一指令指標),等等。在一個實施例中,(多數個)實體暫存器檔案單元858包含一向量暫存器單元、一寫入遮罩暫存器單元,以及一純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。(多數個)實體暫存器檔案單元858與收回單元854重疊以繪示暫存器重命名與無序執行的各種不同實施方式(例如,使用(多數個)重排序緩衝器和(多數個)收回暫存器檔案,使用(多數個)未來檔案;(多數個)歷史緩衝器,以及(多數個)收回暫存器;使用(多數個)暫存器映射和一(多數個)暫存器之池;等等)。收回裝置854和實體暫存器(多數個)檔案(多數個)單元858被耦合到(多數個)執行叢集860。(多數個)執行叢集860包括一組一或多個執行單元862和一組一或多個記憶體存取單元864。執行單元862可執行各種不同的運算(例如,移位、加法、減法,乘法)及在各種不同類型的資料上(例如,純量浮點、封包整數、封包浮點、向量整數、向量浮點)。雖然一些實施例可能包括一些專用於特定功能或特定功能組的執行單元,其他實施例可僅包括一執行單元或全數執行所有功能的多個執行單元。(多數個)排程器單元856、(多數個)實體暫存器檔案(多數個)單元858,以及(多數個)執行叢集860可能是以複數繪示,因為某些實施例為了某些類型的資料/運算創建單獨的管線(例如,純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線,及/或每一個都有他們自己的排程器單元的記憶體存取管線,(多數個) 實體暫存器檔案單元,及/或執行叢集-且在一單獨記憶體存取管線的情況下,某些實施例被實施成其中只有此管線的執行叢集有(多數個)記憶體存取單元(864)。也應瞭解的是在單獨管線被使用之處,一或多個這些管線可以是無序發出/執行而其餘者無序。
該組記憶體存取單元864被耦合到記憶體單元870,該記憶體單元870包含一資料TLB單元872,後者與一耦合到二級(L2)快取單元876的資料快取單元874耦合。在一個示範實施例中,記憶體存取單元864可包括一載入單元、一儲存位址單元和一儲存資料單元,每一者被耦合到記憶體單元870中的TLB單元872。指令快取單元834更進一步被耦合到記憶體單元870中的二級(L2)快取單元876。L2快取單元876被耦合到一多個其他的快取級並最後耦合到一主記憶體。
舉例說明,示範的暫存器重命名,無序發出/執行核心架構可依下述來實施管線800:1)指令提取838執行提取和長度解碼級802和804;2)解碼單元840執行解碼級806;3)重命名/分配器單元852執行分配級808和重命名級810;4)(多數個)排程器單元856執行排程級812;5)(多數個)實體暫存器檔案(多數個)單元858及記憶體單元870執行暫存器讀取/記憶體讀取級814;執行叢集860執行該執行級816;6)記憶體單元870和(多數個)實體暫存器檔案(多數個)單元858執行寫回/記憶體寫入級818;7)各種不同的單元可能涉入異常處置級822;以及8)收回單元854和(多數個)實體 暫存器檔案(多數個)單元858執行確定級824。
核心890可支援一或者多個指令集(例如,x86個指令集(具有已經以較新版本增加的一些延伸);加州Sunnyvale之MIPS科技公司的MIPS指令集;加州Sunnyvale之ARM控股公司的ARM指令集(具有選擇性的延伸諸如NEON),包括本文中所描述的(多數個)指令。在一個實施例中,核心890包括支援一封裝的資料指令集延伸之邏輯(例如,AVX1,AVX2),因此允許被許多多媒體應用程式使用的運算利用封裝資料被執行。
應瞭解的是核心可支援多線(執行二或者更多個平行運算或線程組),而且可能以多種方式來實行,包括時間截分多線、同時的多線(其中一單一實體核心提供每一線程的一邏輯核心而實體核心為同時多線),或其一組合(例如,時間截分提取與解碼以及其後之同時多線諸如在Intel®超執行緒技術中)。
雖然暫存器重命名以無序執行為背景描述,應瞭解的是暫存器重命名可在一順序架構中被使用。雖然所描述的處理器實施例也包括單獨的指令和資料快取單元834/874及一共享的L2快取單元876,替代選擇之實施例可具有一供指令和資料用的一單一內部快取,諸如,舉例而言,一級(L1)內部快取、或多級的內部快取。在一些實施例中,系統可包括一內部快取和一外部快取的組合在核心及/或處理器外部。或者,所有快取可以是核心及/或處理器外部的。
特定的示範順序核心架構
圖9A-B繪示一更具體的示範順序核心架構的方塊圖,該核心是在晶片中的數個邏輯塊(包括相同型態及/或不同型態的其他核心)中之一。邏輯塊通過一高頻寬互連網路(例如一環狀網路),視應用而定與一些固定的功能邏輯,記憶體輸入/輸出介面,和其他必需的輸入/輸出邏輯通信。
圖9A是依據本發明的實施例,處理器核心連同其與晶片上互連網路902以及二級(L2)快取904的局部子集之連接的一方塊圖。在一個實施例中,一指令解碼器900以一封裝資料指令集延伸支援x86指令集。一L1快取906允許低延遲存取純量和向量單元之中的快取記憶體。雖然在一實施例(簡化設計),一純量單元908和一向量單元910中使用各別的暫存器組(分別為純量暫存器912和向量暫存器914)且被傳送在他們之間的資料被寫入記憶體然後從一級(L1)快取906被回讀,但本發明的替代選擇實施例可使用一不同的方法(例如,使用一單一的暫存器組或包括一容許資料在該二暫存器檔案之間傳送由而不需被回寫及回讀的一通信路徑)。
L2快取904的局部子集是分割成各個局部子集,每一處理器核心一子集,的總體L2快取的一部分。每一處理器核心對其自己的L2快取904的局部子集有一直接存取路徑。由一處理器核心讀取的資料被儲存在其L2快取子集904中,且能與其他處理器核心存取他們自己的L2快取子集 904平行地迅速存取,由一處理器核心寫入的資料被儲存在它自己的L2快取子集904中,且如果有需要的話清除其他子集。環狀網路確保共享資料的一致性。環狀網路是雙向的以允許代理程式,諸如處理器核心,L2快取和其他的邏輯塊在晶片內彼此通信。每一環狀資料路徑是每方向1012-位元寬。
圖9B是依據本發明的實施例在圖9A中的一處理器核心的部分展開視圖。圖9B包括一L1資料快取906A,為L1快取904的一部分,以及關於向量單元910和向量暫存器的更詳細內容。明確地,向量單元910是一16倍寬向量處理單元(VPU)(見16倍寬ALU 928),其執行一或多個整數、單倍精度浮點數,及雙倍精度浮點數指令。VPU以拌和單元920支援拌和暫存器輸入,以數值變換單元922 A-B數值轉換,並以複製單元924複製在記憶體輸入上。寫入遮罩暫存器926允許預測產生的向量寫入。
具有整合之憶體控制器和圖形的處理器
圖10是依據本發明的實施例的一處理器1000的方塊圖,處理器1000可能具有多於一個的核心,可能有一整合的記憶體控制器,且可能具有整合式圖形。圖10中的實線方格繪示一具有單一核心1002A的處理器1000,一系統代理程式1010,一組一或多個匯流排控制器單元1016,另一方面選擇性附加的虛線方格繪示一替代選擇之處理器1000具有多個核心1002A-N,一組一或多個在系統代理單元1010中的整合記憶體控制器單元1014,以及特別用途邏輯 1008。
因此,處理器1000的不同實施可能包括:1)一具有作為整合圖形之特別用途邏輯1008的CPU及/或科學(通量)邏輯(可能包括一或更多核心),以及作為一或多個通用核心的核心1002A-N(例如,通用順序核心,通用無序核心,這兩者的組合);2)一具有作為主要用於圖形及/或科學(通量)之大量特別用途核心的核心1002A-N的共處理器;以及3)一具有作為一大量通用順序核心之核心1002A-N的共處理器。因此,處理器1000可能是一泛用型的處理器,共處理器或特別用途處理器,諸如,舉例而言,一網路或通信處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多重整合核心(MIC)共處理器(包括30或更多核心),埋入式處理器,或同類。處理器可在一或多個晶片上被實施。處理器1000可以是基體的一部分及/或可使用多種處理技術中之任一種被實施在基體上,諸如,舉例而言,BiCMOS、CMOS或NMOS。
記憶體階層包括在核心裡面的一或更多級快取,一組或者一或多個共享快取單元1006,及耦合到該組整合記憶體控制器單元1014的外記憶體(未示於圖中)。該組共享快取單元1006可包括一或更多中級快取,諸如二及(L2)、三級(L3)、四級(L4),或其他級快取,一末級快取(LLC),及/或其組合。雖然在一實施例中,一環狀結構互連單元1012將整合圖形邏輯1008、該組共享快取單元1006,以系統代理單元1010/(多數個)整合記憶體控制器單 元1014,但替代選擇實施例可以使用任一數目的習知技術來互連此種單元。在一個實施例中,在一或多個快取單元1006與核心1002-A-N之間被維持一致性。
在一些實施例中,一或多個核心1002A-N能夠多線程執行。系統代理1010包括那些協調並操作核心1002A-N的組件。系統代理單元1010舉例而言可包括一電源控制單元(PCU)和一顯示單元。PCU可以是或包括控制核心1002A-N和整合圖形邏輯1008的電源狀態所需的邏輯與組件。顯示單元是用於驅動一或更多外部連接顯示器。
核心1002A-N就架構指令集而論可以是同質或異質的;亦即,二或二個以上核心1002A-N可具有能力執行相同的指令集,而其他核心則可具有能力僅執行該指令集的一子集或一不同的指令集。
示範的電腦架構
圖11-14是示範電腦架構的方塊圖。業界習知之有關膝上型電腦、桌上型電腦、手持式個人電腦、個人數位助理、的藝術被知道的其他系統設計和配置,工程工作站、伺服器,網路裝置,網路集線器,開關,埋入式處理器、數位訊號處理器(DSP),圖形裝置,電視遊樂器裝置、機上盒,微控制器、行動電話,可攜式媒體播放器,手持式裝置和各種不同的其他電子裝置的其他系統設計和結構也是適當的。大體上,能夠合併一處理器及/或其他如本文中所揭露之執行邏輯的種類繁多系統或電子裝置通常是適當的。
現在參見圖11,其中繪示依據本發明一實施例之一系統1100的一方塊圖。系統1100可包括一或多個處理器1110,1115,其被耦合到一控制器集線器1120。在一個實施例中控制器集線器1120包括圖形記憶體控制器集線器(GMCH)1190和一輸入/輸出集線器(IOH)1150(可能在單獨的晶片上);GMCH1190包括耦合之記憶體1140和一共處理器1145的記憶體和圖形控制器;IOH 1150耦合輸入/輸出(I/O)單元1160至GMCH 1190。或者,記憶體和圖形控制器的一或兩者被整合在處理器(如本文中所描述)內,記憶體1140和共處理器1145被直接耦合到處理器1110,以及與IOH 1150在一單一晶片上的控制器集線器1120。
另外的處理器1115在圖11中以虛線表示。每一處理器1110,1115可能包括一或多個在本文中描述的處理核心,且可以是處理器1000的某些版本。
憶體1140可以,舉例而言,是動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或此二者的組合。對於至少一實施例,控制器集線器1120經由一多點分支匯流排,諸如一前側匯流排(FSB)、點對點介面諸如快速通道互連(QPI),或類似的連接1195與(多數個)處理器1110,1115通信。
在一個實施例中,共處理器1145是一特別用途處理器,諸如,舉例而言,一高通量MIC處理器、一網路或通信處理器、壓縮引擎、圖形處理器、GPGPU、埋入處理器,或同類。在一個實施例中,控制器集線器1120可包括 一整合圖形加速器。
就一系列的優點指標,包括架構的、微架構的、熱,耗電量特性,及同類者的角度而論,實體資源1110,1115之間可能有各種各樣的差異。
在一個實施例中,處理器1110執行控制一般型態之資料處理運算的指令。埋入在指令內的可能是共處理器指令。處理器1110辨識這些共處理器指令是具有應由相連的共處理器1145執行的一型態。因此,處理器1110在一共處理器匯流排或者其他的互連上向共處理器1145發出這些共處理器指令(或者代表共處理器指令的控制信號)。(多數個)共處理器1145接受且執行收到的共處理器指令。
現在參閱圖12,其中繪示的是依據本發明一實施例之一第一更具體的示範系統1200的一方塊圖。如圖12中所示,多處理器系統1200是一點對點互連系統,且包括經由一點對點互連1250被耦合的第一處理器1270和第二處理器1280。每一處理器1270和1280可能是處理器1000的某些版本。在本發明的一個實施例中,處理器1270和1280分別是處理器1110和1115,而共處理器1238是共處理器1145。在另一個實施例中,處理器1270和1280分別是處理器1110共處理器1145。
處理器1270和1280被顯示成分別包括整合的記憶體控制器(IMC)單元1272和1282。處理器1270也包括點對點(P-P)介面1276和1278為其匯流排控制器單元的一部分;同樣地,第二處理器1280包括P-P介面1286和1288。處理器 1270,1280可經由一使用P-P介面電路1278,1288的點對點(P-P)介面1250交換訊息。如圖12所示,IMCs 1272和1282將處理器耦合到各別的記憶體,也就是一記憶體1232和一記憶體1234,其可為本地連接到各個處理器的主記憶體的部分。
處理器1270,1280可以各自經由使用點對點介面電路1276,1294,1286,1298的個別P-P介面1252,1254與一晶片組1290交換訊息。晶片組1290可選擇地經由一高性能介面1239與共處理器1238交換訊息。在一個實施例中,共處理器1238是一特別用途處理器,諸如,舉例而言,一高通量MIC處理器、一網路或通信處理器、壓縮引擎、圖形處理器、GPGPU、埋入式處理器,或同類。
一共享快取(未示於圖中)可能被包括在處理器內或在二處理器外部,但經由P-P互連與處理器連接,以致於如果一處理器被置於一低功耗模式,則任一者或二處理器的區域快取資訊息可被儲存在共享快取中。
晶片組1290可經由一介面1296被耦合到第一匯流排1216。在一個實施例中,第一匯流排1216可以是一週邊組件互連(PCI)匯流排,或一諸如一PCI快速匯流排的匯流排,或者另一第三代輸入/輸出互連匯流排,但本發明的範圍並不限於此。
如圖12中所示,各種不同的I/O裝置1214可被耦合到第一匯流排1216,隨同一匯流排橋接器1218將第一匯流排1216耦合到一第二匯流排1220。在一個實施例中,一 或多個另外的處理器1215,諸如共處理器、高通量MIC處理器、GPGPU之加速器(諸如,舉例而言,圖形加速器或數位信號處理(DSP)單元),現場可程式閘陣列,或任何其他的處理器,被耦合到第一匯流排1216。在一個實施例中,第二匯流排1220可以是低接腳計數(LPC)匯流排。各種不同的裝置可被耦合到第二匯流排1220,舉例而言,包括一鍵盤及/或滑鼠1222、通信裝置1227和一儲存單元1228,諸如一磁碟驅動器,或其他大量儲存裝置,在一個實施例中該大量儲存裝置可包括指令/編碼和資料1230。此外,一聲頻輸入/輸出1224可被耦合到第二匯流排1220。注意其他架構是可能的。舉例而言,一系統可實施一多點分支匯流排或其他的這種架構而非圖12中的點對點架構。
現在參閱圖13,圖中所示為依據本發明之一實施例的第二更具體的示範系統1300的一方塊圖。圖12和13中相似元件帶有相似參考數字,且為了避免模糊圖13的其他方面,圖12的某些方面已經在圖13中被省略。
圖13繪示處理器1270,1280可分別包括整合的記憶體和I/O控制邏輯("CL")1272和1282。因此,CL 1272,1282包括整合的記憶體控制器單元且包括I/O控制邏輯。圖13繪示不但記憶體1232,1234被對耦合到CL 1272,1282,I/O裝置1314也被耦合到控制邏輯1272,1282。舊有的I/O裝置1315被耦合到晶片組1290。
現在參閱圖14,圖中所示為依據本發明一實施例之一SoC 1400的一方塊圖。在圖10中的相似元件帶有相似 參考數字。同時,虛線方格是更先進的SoCs上的可選擇功能。在圖14中,(多數個)互連單元1402被耦合到一應用處理器1410,該應用處理器1410包括一組一或多個核心202A-N以及(多數個)共享快取單元1006;系統代理單元1010;(多數個)匯流排控制器單元1016;(多數個)整合記憶體控制器單元1014;一組或者一或多個共處理器1420,其可能包括整合的圖形邏輯、一影像處理器、一聲頻處理器,及一視頻處理器;一靜態隨機存取記憶體(SRAM)單元1430;一直接記憶體存取(DMA)單元1432;以及一顯示單元1440以供耦合至一或多個外部的顯示單元。在一個實施例中,(多數個)共處理器1420包括一特別用途處理器,諸如,舉例而言,一網路或通信處理器、壓縮引擎、GPGPU、一高通量MIC處理器,埋入式處理器,或同類。
本文中揭露之機制的實施例可被實施成硬體、軟體、韌體或如此之實施方法的一組合。本發明的實施例可被實施為電腦程式或在可程式系統上執行的編碼,該可程式系統包含至少一處理器、一儲存系統(包括依電性與不變性記憶體及/或儲存元件)、至少一輸入裝置,以及至少一輸出裝置。
編碼,諸如圖12中所示之編碼1230,可被應用至輸入指令以執行本文中所描述的功能並產生輸出訊息。輸出訊息可用習知方式被應用至一或多個輸出裝置。為了此一應用的目的,一處理系統包括具有一處理器的任何系統,該處理器諸如,舉例而言;一數位信號處理器(DSP), 一微控制器,一特殊應用積體電路(ASIC),或一微處理器。
編碼可在一高階程序或者物件導向程式語言中而與一處理系統通信。如果需要,編碼也可實施在組合語言或機器語言中。事實上,本文中描述的機制在範圍上不限於任何特別的程式語言。任何情況下,語言可以是一編譯或解釋語言。
至少一實施例的一或多個方面可被實施為儲存在一機器可讀媒體上的表示指令,該指令表示處理器中的各種不同的邏輯,當由一機器謮取時導致機器組成執行本文中所描述之技術的邏輯。此種表示法被稱為「IP核心」,可被儲存在一有形、機器可讀媒體上且被供應給各種不同的買主或生產設備以加載到該實際上製作邏輯或處理器的加工機。
如此的機器可讀儲存媒體無限制性地可包括由一機器或裝置製造或者形成物品的非暫態、實體安排,包括儲存媒體諸如硬碟,任何其他類型的磁碟包括軟磁碟、光碟、唯讀光碟(CD-ROMs),可讀寫光碟(CD-RWs),及磁光碟、半導體裝置,諸如唯讀記憶體(ROMs)、隨機存取記憶體(RAMs),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROMs)、快閃記憶體、電子可抹除可程式化唯讀記憶體(EEPROMs),相變記憶體(PCM)、有磁卡或光學卡或任何其他型態適合儲存電子指令的媒體。
因此,本發明的實施例也包括非暫態、有形機 器可讀媒體,其包含指令或者包含設計資料,諸如硬體描述語言(HDL),定義結構、電路、設備、處理器以及/或本文中描述的系統功能。如此的實施例也可被稱為程式產品。
仿真(包括二進制翻譯、編碼轉譯,等等)
在某些情況,一指令轉換器可被使用來將一指令從一源指令集轉換成一目標指令集。舉例而言,指令轉換器可翻譯(例如,使用靜態的二進制翻譯、包含動態編譯的動態二進制翻譯)、轉譯、仿真,或其他方式將一指令轉換成一或多個其他指令以被核心處理。指令轉換器可以用軟體、硬體、韌體或其一組合實施。指令轉換器可以在處理器上、離開處理器,或部份在處理器上部分離開處理器實施。
圖15是對照依據本發明的實施例使用一軟體指令轉換器轉換一源指令集中的二進制指令與一目標指令集中的二進制指令的方塊圖。在列舉的實施例中,指令轉換器是軟體指令轉換器,惟替代選擇指令轉換器可被實施為軟體、韌體、硬體或其各種不同的組合。圖15繪示一高階語言1502的程式可使用一x86編譯器1504被編譯而產生x86二進制碼1506,該二進制碼能被一具有至少一x86指令集核心1516的處理器本機執行。具有至少一x86指令集核心1516的處理器代表可與一具有至少一x86指令集核心之Intel處理器執行相同功能的任一處理器,其能兼容執行或處理(1)Intel x86指令集核心的一主要部分指令集或(2)應用程式或者針對運行在一具有至少一x86指令集核心的Intel處理器 上之其他軟體,以便達成與一具有至少一x86指令集核心之Intel處理器的相同結果。x86編譯器1504代表一種能夠操作產生x86二進制碼1506(例如,目標碼)的編譯器,此一操作可以有或者沒有額外的連接處理,在該具有至少一x86指令集核心1516的處理器上被執行。同樣地,圖15繪示高階語言1502的程式可以使用一替代選擇的指令集編譯器1508編譯以產生使用一替代選擇的指令集二進制碼1510,其可由一不具有至少一x86指令集核心1514的處理器本機執行(例如,一處理器具有執行加州Sunnyvale之ARM控股公司之MIPS技術的MIPS指令集的核心,及/或執行加州Sunnyvale之ARM控股公司之ARM指令的核心)。指令轉換器1512被用來將x86二進制碼轉換成可以由不具有一x86指令集核心1514的處理器本機執行。因為有此一能力的指令轉換器難以製造,此轉換的編碼與替代選擇之指令集二進制碼1510是不太可能相同的;然而,轉換的編碼將完成一般的運算而且由替代選擇的指令集的指令組成。因此,指令轉換器1512代表軟體、韌體、硬體、或其一組合,經由仿真,模擬或者任何其他的程序,允許一不具有一x86指令集處理器或核心的處理器或者其他電子裝置執行x86二進制碼1506。
替代選擇實施例
雖然諸圖式中的流程圖繪示由本發明某些實施例執行的一特定操作順序,應瞭解的是此種順序是示範性的(例如,替代選擇實施例可用一不同順序、結合某些操作、重疊某些操作等,等等來執行操作)。
在上文的描述中,為了說明的目的,為了要提供發明的實施例的完全理解,闡述了很多特定細節以便提供對本發明之實施例的一全面理解。然而對熟習此技藝者顯而易見的是一或多個實施例可以在毋需這些特定細節之下實施。本文所描述的實施例並非提供用來限制本發明,而僅是用來例示說明本發明的實施例。本發明的範圍並非由上文提供的特定實例而是僅藉由以下的申請專利範圍決定。
100‧‧‧裝置
102‧‧‧虛擬機
104‧‧‧記憶體
106‧‧‧中央處理單元
108‧‧‧虛擬機控制結構(VMCS)
110‧‧‧延伸分頁表(EPT)
112‧‧‧虛擬機顯示器(VMM)
116‧‧‧EPT模組
118‧‧‧資料長度模組

Claims (21)

  1. 一種決定一指令被允許修改一記憶體區域的方法,其包含:檢測藉由一指令試圖寫入一虛擬機的一受保護記憶體區域的一指示;基於該指令的一起始位址和資料長度決定該指令是否被允許寫入該受保護記憶體區域;以及響應於該指令被允許寫入該受保護記憶體區域的該決定,以該指令結果更新該受保護記憶體區域。
  2. 如申請專利範圍第1項的方法,進一步包含:從該虛擬機之一虛擬機控制結構提取該資料長度。
  3. 如申請專利範圍第1項的方法,其中該決定包含:決定該指令是否被允許寫入該起始位址;以及響應於該指令被允許寫入該起始位址的該決定,基於該起始位址和該資料長度決定該指令是否被允許寫入到一資料範圍中。
  4. 申請專利範圍第1項的方法,其中該受保護記憶體區域是唯讀記憶體。
  5. 如申請專利範圍第1項的方法,其中該受保護記憶體區域是在被一延伸分頁表涵蓋的一記憶體頁中。
  6. 如申請專利範圍第5項的方法,其中該記憶體頁包括對於該指令的一允許記憶體區域和一不允許記憶體區域。
  7. 如申請專利範圍第1項的方法,其中該指示是該受保護記憶體區域的一延伸分頁表違反。
  8. 如申請專利範圍第1項的方法,進一步包含:儲存該資料長度在該虛擬機控制結構中。
  9. 如申請專利範圍第8項的方法,其中儲存該資料長度包含:在一VMEXIT之前檢測該指示;從該指令擷取該資料長度;儲存該資料長度在該虛擬機控制結構的一欄位中;以及引發該VMEXIT。
  10. 如申請專利範圍第1項的方法,其中該虛擬機是一正在一主機上運行的虛擬系統。
  11. 一種裝置,其包含:一檢測違反模組,配置成檢測藉由一指令試圖寫入一受保護記憶體區域之一指示;一允許存取資料範圍模組,適配於基於該指令之一起始位址和資料長度決定該指令是否被允許寫入該受保護記憶體區域;以及響應於該指令被允許寫入該受保護記憶體區域之該決定,一更新模組適配於以該指令結果更新該受保護記憶體區域。
  12. 如申請專利範圍第11項的裝置,其中該裝置進一步包含一提取資料長度模組,適配於從一虛擬機控制結構提取該資料長度。
  13. 如申請專利範圍第11項的裝置,其中該裝置更進一步包 含一允許存取資料位址模組,適配於決定該指令是否被允許寫入該起始位址。
  14. 如申請專利範圍第10項的裝置,其中該受保護記憶體區域是唯讀記憶體。
  15. 如申請專利範圍第10項的裝置,其中該受保護記憶體區域在被一延伸分頁表涵蓋的一記憶體頁中。
  16. 如申請專利範圍第14項的裝置,其中該記憶體頁包括對於該指令的一允許記憶體區域和一不允許記憶體區域。
  17. 如申請專利範圍第10項的裝置,其中該指示是該受保護記憶體區域的一延伸分頁表違反。
  18. 如申請專利範圍第10項的裝置,其中該裝置進一步包含一儲存資料長度模組,配置成將該資料長度儲存在該虛擬機控制結構中。
  19. 一種非暫態機器可讀媒體,其具有可執行指令用於引起一或多個處理單執行一用於決定一指令被允許修改一記憶體區域的方法,該方法包含:檢測藉由一指令試圖寫入一虛擬機的一受保護記憶體區域的一指示;基於該指令之一起始位址和資料長度決定該指令是否被允許寫入該受保護記憶體區域;以及響應於該指令被允許寫入該受保護記憶體區域之該決定,以該指令結果更新該受保護記憶體區域。
  20. 如申請專利範圍第19項的非暫態機器可讀媒體,進一步包含: 從該虛擬機的一虛擬機控制結構提取該資料長度。
  21. 如申請專利範圍第19項的非暫態機器可讀媒體,其中該決定包含:決定該指令是否被允許寫入該起始位址;以及響應於該指令被允許寫入該起始位址的該決定,基於該起始位址和該資料長度決定該指令是否被允許寫入一資料範圍中。
TW101143446A 2011-12-22 2012-11-21 用於資料讀取/寫入延伸分頁表違例之處理的決策動作決定技術之方法、裝置及非暫態機器可讀媒體 TWI516937B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067038 WO2013095577A1 (en) 2011-12-22 2011-12-22 Determining policy actions for the handling of data read/write extended page table violations

Publications (2)

Publication Number Publication Date
TW201342064A true TW201342064A (zh) 2013-10-16
TWI516937B TWI516937B (zh) 2016-01-11

Family

ID=48669218

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101143446A TWI516937B (zh) 2011-12-22 2012-11-21 用於資料讀取/寫入延伸分頁表違例之處理的決策動作決定技術之方法、裝置及非暫態機器可讀媒體

Country Status (3)

Country Link
US (1) US9372812B2 (zh)
TW (1) TWI516937B (zh)
WO (1) WO2013095577A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI556107B (zh) * 2014-08-15 2016-11-01 英特爾股份有限公司 用於安全虛擬機器間共用記憶體通訊之技術
TWI752066B (zh) * 2016-11-01 2022-01-11 香港商阿里巴巴集團服務有限公司 讀寫請求處理方法及裝置
CN115525933A (zh) * 2022-08-26 2022-12-27 杭州杰峰科技有限公司 数据防篡改方法、装置、电子设备及存储介质
TWI795476B (zh) * 2017-12-15 2023-03-11 英商Arm股份有限公司 碼領域

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9934166B2 (en) 2010-12-10 2018-04-03 Daniel Shawcross Wilkerson Hard object: constraining control flow and providing lightweight kernel crossings
GB2490738A (en) * 2011-05-13 2012-11-14 En Twyn Ltd A power line communications network controlled by an operating system in which network terminals include a processor.
US9569612B2 (en) * 2013-03-14 2017-02-14 Daniel Shawcross Wilkerson Hard object: lightweight hardware enforcement of encapsulation, unforgeability, and transactionality
US9753863B2 (en) 2014-12-27 2017-09-05 Intel Corporation Memory protection with non-readable pages
KR102473665B1 (ko) 2015-07-28 2022-12-02 삼성전자주식회사 스토리지 디바이스 및 스토리지 가상화 시스템
US10241706B2 (en) * 2016-05-20 2019-03-26 Renesas Electronics Corporation Semiconductor device and its memory access control method
US11442760B2 (en) * 2016-07-01 2022-09-13 Intel Corporation Aperture access processors, methods, systems, and instructions
US10713177B2 (en) * 2016-09-09 2020-07-14 Intel Corporation Defining virtualized page attributes based on guest page attributes
EP3336691B1 (en) 2016-12-13 2022-04-06 ARM Limited Replicate elements instruction
EP3336692B1 (en) 2016-12-13 2020-04-29 Arm Ltd Replicate partition instruction
CN107341115B (zh) * 2017-06-30 2021-07-16 联想(北京)有限公司 虚拟机内存访问方法、系统和电子设备
CN112596670B (zh) * 2020-12-04 2024-06-07 北京自动化控制设备研究所 一种大容量Flash存储器读写操作的设计方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8281116B2 (en) 2003-02-12 2012-10-02 Intel Corporation System and method for utilizing a protected/hidden region of semiconductor based memory/storage
US7784060B2 (en) * 2003-11-06 2010-08-24 Intel Corporation Efficient virtual machine communication via virtual machine queues
EP1542181A1 (en) * 2003-12-11 2005-06-15 Banksys S.A. Electronic data processing device
US7793067B2 (en) 2005-08-12 2010-09-07 Globalfoundries Inc. Translation data prefetch in an IOMMU
US7707383B2 (en) * 2006-11-21 2010-04-27 Intel Corporation Address translation performance in virtualized environments
WO2009145772A1 (en) 2008-05-29 2009-12-03 Hewlett-Packard Development Company, L.P. Replaceable printer component including a memory updated atomically
TW201040781A (en) 2009-03-25 2010-11-16 Pacid Technologies Llc System and method for protecting a secrets file
US8799879B2 (en) 2009-06-30 2014-08-05 Oracle America, Inc. Method and apparatus for protecting translated code in a virtual machine
US8578080B2 (en) * 2011-07-01 2013-11-05 Intel Corporation Secure handling of interrupted events utilizing a virtual interrupt definition table

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI556107B (zh) * 2014-08-15 2016-11-01 英特爾股份有限公司 用於安全虛擬機器間共用記憶體通訊之技術
CN106201646A (zh) * 2014-08-15 2016-12-07 英特尔公司 用于安全虚拟机间共享存储器通信的技术
CN106201646B (zh) * 2014-08-15 2020-03-31 英特尔公司 用于安全虚拟机间共享存储器通信的设备和方法
TWI752066B (zh) * 2016-11-01 2022-01-11 香港商阿里巴巴集團服務有限公司 讀寫請求處理方法及裝置
TWI795476B (zh) * 2017-12-15 2023-03-11 英商Arm股份有限公司 碼領域
CN115525933A (zh) * 2022-08-26 2022-12-27 杭州杰峰科技有限公司 数据防篡改方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
TWI516937B (zh) 2016-01-11
US20140201422A1 (en) 2014-07-17
WO2013095577A1 (en) 2013-06-27
US9372812B2 (en) 2016-06-21

Similar Documents

Publication Publication Date Title
TWI516937B (zh) 用於資料讀取/寫入延伸分頁表違例之處理的決策動作決定技術之方法、裝置及非暫態機器可讀媒體
US20240184717A1 (en) Processors, methods, systems, and instructions to support live migration of protected containers
US9335943B2 (en) Method and apparatus for fine grain memory protection
US9703562B2 (en) Instruction emulation processors, methods, and systems
EP3516577B1 (en) Processors, methods, systems, and instructions to determine whether to load encrypted copies of protected container pages into protected container memory
JP6006248B2 (ja) 命令エミュレーションプロセッサ、方法、およびシステム
US9959409B2 (en) Processors, methods, systems, and instructions to change addresses of pages of secure enclaves
US10360055B2 (en) Processors, methods, and systems to enforce blacklisted paging structure indication values
US20230109637A1 (en) Aperture access processors, methods, systems, and instructions
US9405937B2 (en) Method and apparatus for securing a dynamic binary translation system
US20180095892A1 (en) Processors, methods, systems, and instructions to determine page group identifiers, and optionally page group metadata, associated with logical memory addresses
US20160092371A1 (en) Method and Apparatus For Deterministic Translation Lookaside Buffer (TLB) Miss Handling
US20160378684A1 (en) Multi-page check hints for selective checking of protected container page versus regular page type indications for pages of convertible memory
US20220398017A1 (en) Independently controlled dma and cpu access to a shared memory region
EP3885950A1 (en) Shadow stack isa extensions to support fast return and event delivery (fred) architecture
US20220414022A1 (en) Apparatus, system, and method for secure memory access control
CN118349314A (zh) 孔径访问处理器、方法、系统和指令

Legal Events

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