TWI752031B - 孔徑存取處理器、方法、系統及指令 - Google Patents

孔徑存取處理器、方法、系統及指令 Download PDF

Info

Publication number
TWI752031B
TWI752031B TW106117239A TW106117239A TWI752031B TW I752031 B TWI752031 B TW I752031B TW 106117239 A TW106117239 A TW 106117239A TW 106117239 A TW106117239 A TW 106117239A TW I752031 B TWI752031 B TW I752031B
Authority
TW
Taiwan
Prior art keywords
aperture
processor
access
instruction
memory address
Prior art date
Application number
TW106117239A
Other languages
English (en)
Other versions
TW201810027A (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 TW201810027A publication Critical patent/TW201810027A/zh
Application granted granted Critical
Publication of TWI752031B publication Critical patent/TWI752031B/zh

Links

Images

Classifications

    • 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
    • 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/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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • 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/45583Memory management, e.g. access or allocation
    • 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/45591Monitoring or debugging support
    • 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/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine

Abstract

處理器的態樣包括:解碼單元,用以解碼孔徑存取指令;及耦合於該解碼單元的執行單元。該執行單元回應於該孔徑存取指令而用以:自存取保護結構讀取主機實體記憶體位址,其被關聯於用以在系統記憶體中的孔徑;及存取該孔徑內的在主機實體記憶體位址處的資料,該主機實體記憶體位址並不是透過位址轉譯所獲得。其他處理器也被揭示,就像是方法、系統、及儲存孔徑存取指令的機器可讀取媒體。

Description

孔徑存取處理器、方法、系統及指令
文中所述的實施例一般關於處理器。尤其,文中所述的實施例一般關於具有用以支持虛擬化的架構擴充的處理器。
虛擬機監控器(VMM)可被用來產生在其中虛擬機(VM)可操作的虛擬機系統。該VMM可呈現該VM的抽象給在該VM的各者內運作的客端軟體。該VMM可促進對系統硬體的存取,同時大致上保持對該系統硬體及各方面的操作的控制。
在一些實施方式中,該VM可能大致上不知道它們在該VMM上運作,且可能大致上不知道該系統中有其他VM。在其他實施例中,該VM可能知道它們在該VMM上運作,且可能知道該系統中有其他VM。此種VM有時被描述成是「準虛擬化」或「啟發」。
100‧‧‧虛擬機系統
102‧‧‧虛擬機
102-1‧‧‧第一虛擬機
102-2‧‧‧第二虛擬機
104-1‧‧‧第一客端作業系統
104-2‧‧‧第二客端作業系統
106-1‧‧‧客端應用程式
106-2‧‧‧客端應用程式
108‧‧‧虛擬機監控器
109‧‧‧孔徑管理模組
110‧‧‧系統硬體
112‧‧‧處理器
114‧‧‧虛擬化擴充
116‧‧‧孔徑存取指令
118‧‧‧孔徑寫入指令
120‧‧‧孔徑讀取指令
122‧‧‧孔徑存取邏輯
124‧‧‧位址轉譯邏輯
126‧‧‧記憶體
128‧‧‧虛擬機控制結構
130‧‧‧孔徑位址資訊
132‧‧‧孔徑
134‧‧‧資料
136‧‧‧階層式分頁結構
138‧‧‧孔徑寫入指令
140‧‧‧孔徑讀取指令
246‧‧‧方法
308‧‧‧VMM模組
309‧‧‧孔徑管理模組
350‧‧‧記憶體分配模組
352‧‧‧VMCS管理模組
354‧‧‧第二級階層式分頁結構管理模組
356‧‧‧孔徑分配模組
358‧‧‧主機實體記憶體位址儲存模組
360‧‧‧孔徑存取保護模組
462‧‧‧方法
512‧‧‧處理器
518‧‧‧孔徑寫入指令
526‧‧‧記憶體
528‧‧‧存取保護結構
530‧‧‧主機實體記憶體位址
532‧‧‧孔徑
534‧‧‧資料
568‧‧‧解碼單元
570‧‧‧執行單元
572‧‧‧來源運算元
574‧‧‧資料
576‧‧‧主機實體記憶體位址
578‧‧‧暫存器
580‧‧‧記憶體位址資訊
682‧‧‧方法
712‧‧‧處理器
720‧‧‧孔徑讀取指令
726‧‧‧記憶體
728‧‧‧存取保護結構
730‧‧‧主機實體記憶體位址
732‧‧‧孔徑
734‧‧‧資料
768‧‧‧解碼單元
770‧‧‧執行單元
776‧‧‧主機實體記憶體位址
778‧‧‧暫存器
780‧‧‧記憶體位址資訊
790‧‧‧目的地運算元
792‧‧‧資料
816‧‧‧孔徑存取指令
828‧‧‧存取保護結構
830‧‧‧主機實體位址
832‧‧‧孔徑
834‧‧‧資料
894‧‧‧基底
895‧‧‧偏移
916‧‧‧孔徑存取指令
928‧‧‧存取保護結構
930‧‧‧主機實體位址
932-1‧‧‧第一孔徑
932-4‧‧‧第四孔徑
934‧‧‧資料
994‧‧‧基底
995‧‧‧偏移
996‧‧‧孔徑選擇器
999‧‧‧基底
1016‧‧‧孔徑存取指令
1028‧‧‧存取保護結構
1030‧‧‧主機實體位址
1032-4‧‧‧第四孔徑
1034‧‧‧資料
1094‧‧‧基底
1095‧‧‧偏移
1096‧‧‧孔徑選擇器
1097‧‧‧基底
1098-1‧‧‧第一主機實體記憶體位址
1098-4‧‧‧第四主機實體記憶體位址
1100‧‧‧處理器管線
1102‧‧‧提取層
1104‧‧‧長度解碼層
1106‧‧‧解碼層
1108‧‧‧分配層
1110‧‧‧重新命名層
1112‧‧‧排程層
1114‧‧‧暫存器讀取/記憶體讀取層
1116‧‧‧執行層
1118‧‧‧寫回/記憶體寫入層
1122‧‧‧異常處理層
1124‧‧‧提交層
1130‧‧‧前端單元
1132‧‧‧分支預測單元
1134‧‧‧指令快取單元
1136‧‧‧指令轉譯後備緩衝區
1138‧‧‧指令提取單元
1140‧‧‧解碼單元
1150‧‧‧執行引擎單元
1152‧‧‧重新命名/分配器單元
1154‧‧‧引退單元
1156‧‧‧排程器單元
1158‧‧‧實體暫存器檔案單元
1160‧‧‧執行叢集
1162‧‧‧執行單元
1164‧‧‧記憶體存取單元
1170‧‧‧記憶體單元
1172‧‧‧資料TLB單元
1174‧‧‧資料快取單元
1176‧‧‧L2快取單元
1190‧‧‧處理器核心
1200‧‧‧指令解碼器
1202‧‧‧晶粒上互連網路
1204‧‧‧L2快取的本地子集
1206‧‧‧L1快取
1206A‧‧‧L1資料快取
1208‧‧‧純量單元
1210‧‧‧向量單元
1212‧‧‧純量暫存器
1214‧‧‧向量暫存器
1220‧‧‧調換單元
1222A‧‧‧數字轉換單元
1222B‧‧‧數字轉換單元
1224‧‧‧複製單元
1226‧‧‧寫入遮罩暫存器
1228‧‧‧16倍寬向量ALU
1300‧‧‧處理器
1302A-N‧‧‧核心
1306‧‧‧共享快取單元
1308‧‧‧專用邏輯
1310‧‧‧系統代理
1312‧‧‧環形互連單元
1314‧‧‧整合式記憶體控制器單元
1316‧‧‧匯流排控制器單元
1400‧‧‧系統
1410‧‧‧處理器
1415‧‧‧處理器
1420‧‧‧控制器集線器
1440‧‧‧記憶體
1445‧‧‧共處理器
1450‧‧‧輸入/輸出集線器
1460‧‧‧I/O裝置
1490‧‧‧圖形記憶體控制器集線器
1495‧‧‧連接
1500‧‧‧系統
1514‧‧‧I/O裝置
1515‧‧‧額外處理器
1516‧‧‧第一匯流排
1518‧‧‧匯流排橋接器
1520‧‧‧第二匯流排
1522‧‧‧鍵盤及/或滑鼠
1524‧‧‧音訊I/O
1527‧‧‧通訊裝置
1528‧‧‧儲存單元
1530‧‧‧碼及資料
1532‧‧‧記憶體
1534‧‧‧記憶體
1538‧‧‧共處理器
1539‧‧‧高性能介面
1550‧‧‧點對點互連
1570‧‧‧第一處理器
1572‧‧‧整合式記憶體控制器單元
1576‧‧‧點對點介面
1578‧‧‧點對點介面
1580‧‧‧第二處理器
1582‧‧‧整合式記憶體控制器單元
1586‧‧‧點對點介面
1588‧‧‧點對點介面
1590‧‧‧晶片組
1594‧‧‧點對點介面
1596‧‧‧介面
1598‧‧‧點對點介面
1600‧‧‧系統
1614‧‧‧I/O裝置
1615‧‧‧傳統I/O裝置
1700‧‧‧系統晶片
1702‧‧‧互連單元
1710‧‧‧應用處理器
1720‧‧‧共處理器
1730‧‧‧SRAM單元
1732‧‧‧DMA單元
1740‧‧‧顯示單元
1802‧‧‧高階語言
1804‧‧‧x86編譯器
1806‧‧‧x86二進制碼
1808‧‧‧替代指令集編譯器
1810‧‧‧替代指令集二進制碼
1812‧‧‧指令轉換器
1814‧‧‧沒有x86指令集核心的處理器
1816‧‧‧具有至少一個x86指令集核心的處理器
本發明可最好藉由參照下列說明及用來示出實施例的隨附圖式來加以理解。在圖式中:第1圖為在其中本發明的實施例可被實施的虛擬機系統的實施例之方塊圖。
第2圖為方法的實施例的方塊流程圖,該方法可由VMM所施行以供應孔徑。
第3圖為VMM模組的範例實施例的方塊圖。
第4圖為施行孔徑寫入指令的實施例的方法的實施例之方塊流程圖。
第5圖為處理器的實施例的方塊圖,該處理器可操作以施行孔徑寫入指令的實施例。
第6圖為施行孔徑讀取指令的實施例的方法的實施例之方塊流程圖。
第7圖為處理器的實施例的方塊圖,該處理器可操作以施行孔徑讀取指令的實施例。
第8圖為存取來自孔徑的資料的第一方法之方塊圖。
第9圖為存取來自孔徑的資料的第二方法之方塊圖。
第10圖為存取來自孔徑的資料的第三方法之方塊圖。
第11A圖為示出循序管線的實施例及暫存器重新命名亂序發送/執行管線的實施例的方塊圖。
第11B圖為處理器核心的實施例的方塊圖,該處理器核心包括前端單元,耦合至執行引擎單元且皆耦合至記憶體單元。
第12A圖為單一處理器核心的方塊圖,以及它對該晶粒上互連網路的連接、與它的第2階(L2)快取的本地子集。
第12B圖為第12A圖的處理器核心的部份的展開圖之實施例的方塊圖。
第13圖為處理器的實施例的方塊圖,該處理器可具有超過一個核心、可具有整合式記憶體控制器、及可具有整合式圖形。
第14圖為電腦架構的第一實施例的方塊圖。
第15圖為電腦架構的第二實施例的方塊圖。
第16圖為電腦架構的第三實施例的方塊圖。
第17圖為系統晶片架構的實施例的方塊圖。
第18圖為使用軟體指令轉換器來轉換來源指令集中的二進制指令至目標指令集中的二進制指令之方塊圖,依據本發明的實施例。
【發明內容】及【實施方式】
文中所述的是孔徑存取指令的實施例、用以施行該孔徑存取指令的處理器的實施例、在施行該孔徑存取指令時由該處理器所施行之方法的實施例、併入用以施行該孔徑存取指令的一或更多處理器之系統的實施例、以及提供該孔徑存取指令的程式或機器可讀取媒體的實施例。在一些實施例中,該處理器可具有解碼單元以解碼孔徑存取指令、或其他邏輯以接收該孔徑存取指令、及執行 單元或其他邏輯以施行該孔徑存取指令。也揭示的是用以管理孔徑(例如,分配孔徑、保護孔徑、配置哪些實體能夠存取孔徑的一或更多者)的模組、程式、及機器可讀取媒體。
在下列的說明中,許多特定細節被陳述(例如,特定指令操作、資料格式、處理器配置、微架構細節、操作序列、虛擬機系統等)。然而,實施例可在沒有這些特定細節的情況下被實行。在其他情況中,熟知的電路、結構及技術未被詳細顯示以避免模糊該說明的理解。
第1圖為在其中本發明的實施例可被實施的虛擬機系統100的實施例之方塊圖。該虛擬機系統包括複數個虛擬機(VM)102、虛擬機監控器(VMM)108、及系統硬體110。在所示實例中,該VM包括第一虛擬機(VM1)102-1、第二虛擬機(VM2)102-2、及選用的其他者。
在各種實施例中,該系統硬體110可表示一或更多桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、伺服器、主機、網路裝置(例如,路由器、切換器等)、智慧型手機、或一或更多其他類型的電腦系統或電子裝置。在一些實施例中,該虛擬機系統可選用地被實施於二或更多此種電子裝置上及/或可為分佈式虛擬機系統,儘管本發明的範圍非如此受限。典型地,該系統硬體可包括至少一個處理器112及記憶體126。在一些實施例中,該處理器可為通用處理器。替代地,該處理器可為專用處理 器。合適專用處理器的實例包括但不限於網路處理器、通訊處理器、加密處理器、圖形處理器、共處理器、嵌入式處理器、及數位信號處理器(DSP),僅舉幾個實例。無論相同或者不同類型的二或更多處理器也可被選用地使用。該記憶體126可包括一或更多類型的一或更多記憶裝置。合適記憶裝置的實例包括但不限於各種不同類型的隨機存取記憶體(RAM)、各種不同類型的唯讀記憶體(ROM)、一或更多硬碟、快閃記憶體、及相似者、及其各種組合。該記憶體可被用來儲存用來實施該虛擬機系統的軟體及資料。
該VM的各者可具有它本身的客端軟體。如所示,該第一VM可具有第一客端作業系統104-1、及第一組的一或更多客端應用程式106-1。相似地,該第二VM可具有第二客端作業系統104-2、及第二組的一或更多客端應用程式106-2。在各種實施例中,這些作業系統可表示標準或即時作業系統、具有有限作業系統功能的高度剝離操作設備、或不必然包括所有或至少一些傳統作業系統功能及/或設施的軟體。各個虛擬機上的客端軟體可能通常預期存取該系統硬體的至少一些(例如,該處理器112及該記憶體126)。
該虛擬機系統也包括該虛擬機監控器(VMM)108。在所示實施例中,單一VMM被顯示,儘管二或更多VMM可被選用地使用於其他實施例中。該VMM在本技藝中有時也被稱為超管理器(hypervisor)。該 VMM可被實施於軟體、韌體、硬體、或其組合中。該VMM可能比該VM更有特權。該VMM可模擬及輸出裸機介面至高階軟體。該VMM可呈現該複數個VM 102的抽象給其他軟體(例如,在該VM上及/或內運作的客端軟體)。該VMM可促進該客端軟體對該系統硬體110的存取,同時保持對該系統硬體及/或對某些其他操作方面(例如,中斷等)的充分控制,以幫助提供該客端軟體的適當操作,及幫助提供來自該客端軟體及該客端軟體之間的保護。
該VMM可能通常分配該系統硬體的資源給該VM(例如,硬體執行緒、系統記憶體空間、磁碟機儲存空間等)。該VMM也可在需要時或在某些類型的事件發生時接管控制。從VM操作轉變至VMM操作及/或控制從客端軟體轉移至該VMM可被稱為VM退出。VM退出的潛在原因包括但不限於某些類型的特權異常、系統事件、虛擬化事件、對記憶體的受保護區的存取違規、及相似者。轉變成VM操作及/或控制從該VMM轉移至該VM(例如,至客端軟體)可被稱為VM進入。此種VM進入及退出一般傾向於具有相關系統開銷或性能成本,大部分由於情境或狀態切換。該VM無需必然不知道它們在VMM上運作,且無需必然不知道有其他VM在該系統中,但反而可能是「準虛擬化」或「啟發」。然而通常除了某些相當有限類型的互動以外,諸如文中別處所述在VM間共享資料,該VMM可能以某些方式將該不同VM的客端軟體堆疊彼此隔離。
該虛擬機系統100可使用虛擬記憶體。虛擬記 憶體一般表示一種記憶體管理技術,在其中潛在非連續實體記憶體(例如,實體位址空間)被呈現給程序及/或應用程式(例如,客端軟體)作為連續記憶體(例如,虛擬位址空間)。該虛擬位址空間有時也可被稱為線性位址空間。該實際分配的實體記憶體可能不是連續或循序安排,且可能甚至被包括於多個不同類型的儲存裝置上。然而,由於該虛擬記憶體,該程序可能將該記憶體視為通過該連續虛擬位址空間的線性序列。虛擬記憶體容許應用程式在它們整個位址空間無須常駐於實體記憶體中的情況下執行,其可容許該應用程式藉由使用比容納它們整個位址空間所需更少的實體記憶體而被執行。該應用程式可能無需知道該實體記憶體如何被分配。虛擬記憶體也可被用來將應用程式彼此隔離,因為各個應用程式虛擬位址空間可被獨立地映射至專門分配給該應用程式的實體記憶體的一或更多分頁。該實體記憶體可在邏輯上被分割成分頁。該實體記憶體的該分頁可被映射至虛擬位址。程序及應用程式(例如,客端軟體)可能僅看見它們的虛擬位址空間,而該實體位址空間是對應資料實際上常駐於記憶體中的地方。
稱為位址轉譯的程序可被用來映射該虛擬位址空間至該實體位址空間。該位址轉譯可包含根據給定虛擬位址及選用地根據其他資訊(例如,在處理器暫存器中)來查找實體位址。通常地,該第一及第二客端作業系統104-1、104-2及該VMM 108可一起工作來轉譯虛擬位址 至該記憶體126中的實際實體記憶體位置的實體記憶體位址。記憶體存取指令(例如,從記憶體讀取指令、寫入至記憶體指令等)可具有相關虛擬或線性位址。一組階層式分頁結構136可被儲存於該記憶體中。在該虛擬機系統的情況中,這些階層式分頁結構可包括第一級分頁結構以及第二級分頁結構兩者。藉由實例,該第一級分頁結構可包括頁表、或其他分頁結構,像是在非虛擬化系統中的位址轉譯通常使用的那些。一般而言,該客端作業系統104-1、104-2可管理、或至少協助管理這些第一級分頁結構。該第一級分頁結構可被用來轉譯該指令的該虛擬位址成為所謂的客端實體位址。
該客端實體位址可能尚未表示可被用來存取該記憶體中的實際實體記憶體位置的實際實體記憶體位址,但反而可表示需要進一步位址轉譯的中間記憶體位址。在一些實施例中,除了該第一級分頁結構(例如,第一級頁表)以外,也可能有額外第二級分頁結構,諸如例如擴充頁表、其他第二級頁表、或其他第二級分頁結構。該VMM可管理該第二級分頁結構。從該第一級分頁結構所獲得的該客端實體位址可用作對該第二級分頁結構的輸入。該第二級分頁結構可被用來轉譯該客端實體位址成為主機實體記憶體位址。該主機實體記憶體位址在本技藝中有時也被稱為平台實體記憶體位址。該主機實體記憶體位址可表示可被用來存取實際實體記憶體位置的實際實體記憶體位址。該第二級分頁結構也可具有對該相關頁的存取 權或許可。藉由實例,此種存取權或許可可以指出該頁是否為可讀取、可寫入、可執行、或其組合。在此種虛擬機系統中,對該實際實體記憶體位置的存取,至少用於普通載入、儲存、及其他普通記憶體存取指令而沒有特別或額外特權,一般可能僅透過由該第二級分頁結構所提供的有效位址轉譯及/或由該VMM所容許而可用。
再次參照第1圖,該階層式分頁結構136一般被儲存於該記憶體中。該處理器可具有位址轉譯邏輯124以幫助轉譯虛擬記憶體位址至主機實體記憶體位址。藉由實例,此位址轉譯邏輯可包括記憶體管理單元(MMU)、及一或更多級的轉譯後備緩衝區(TLB)。最初,該MMU可能可操作以檢查該一或更多TLB而查看位址轉譯是否已經被快取或者除此以外被儲存於該一或更多TLB中。該一或更多TLB的各者可將先前決定的虛擬記憶體位址快取至主機實體記憶體位址轉譯。TLB「命中」是在適當位址轉譯被儲存於該一或更多TLB中時出現。若發生TLB命中,該位址轉譯可從該TLB入口加以擷取。相反地,TLB「未命中」是在適當位址轉譯未被儲存於該一或更多TLB中時出現。若發生TLB未命中,該MMU可施行頁表行走(page table walk)以決定該位址轉譯。例如,該MMU可包括頁未命中處理單元或邏輯、頁表行走單元或邏輯、或相似者。例如,該MMU可存取及行走或前進通過該階層式分頁結構136以嘗試到達頁表入口,該頁表入口儲存該主機實體記憶體位址。一旦決定,該主機實體記 憶體位址可被用來存取該實體記憶體。並且,通過該頁表行走所決定的該位址轉譯可被快取於該TLB中,以供未來可能使用。若再次需要該位址轉譯,在夠短的一段時間內,它可能相對快地從該TLB加以擷取,無須該MMU施行相對較慢的頁表行走。
再次參照第1圖,該記憶體可儲存至少一個虛擬機控制結構(VMCS)128。該至少一個VMCS廣泛地表示至少一個存取保護結構,其被用來儲存虛擬機及/或虛擬化相關控制。該VMCS可被存取保護的是,通常它僅由具有被特定設計且意圖與它互動的特別特權之有限組的指令存取(例如,特別存取特權指令以配置該VMCS、讀取該VMCS、寫入該VMCS、或相似者),但無法由從記憶體定期通用讀取指令、儲存至記憶體指令、或相似者存取。該VMCS可控制與不同實施例中的虛擬機系統的操作關聯的各種不同方面,諸如例如關於VM操作、VM進入、VM退出、及相似者的方面。在一些實施例中,相同VMCS可選用地由多個VM共享。在其他實施例中,不同組的一或更多VMCS可被使用於各個VM。在又一方面中,不同組的一或更多VMCS可被使用於可能有至少二個的各個VM的各個邏輯處理器。合適VMCS 128的一個特定實例為在某些英特爾® 64及IA-32架構處理器的虛擬機擴充(VMX)中所使用的虛擬機控制結構,儘管本發明的範圍非如此受限。合適VMCS 128的另一特定合適實例為IBM PowerVM®對電源系統伺服器的虛擬化技術中所使用的一 個,儘管本發明的範圍非如此受限。為了清楚,術語虛擬機控制結構及VMCS的使用非意圖意指VMX的特定VMCS,除非具體指明。
再次參照第1圖,該處理器112具有虛擬化擴充114。該虛擬化擴充可包括架構擴充以支持虛擬化及/或硬體輔助虛擬化支援邏輯。這些虛擬化擴充可包括一組指令以支持虛擬化,及硬體、韌體、軟體、或此種邏輯的組合以施行這些指令。在一些實施例中,該虛擬化擴充可包括孔徑存取指令116的至少一個實施例,如文中所揭示。在一些實施例中,該至少一個孔徑存取指令可選用地包括孔徑寫入指令118的至少一個實施例,如文中所揭示,其可被用來寫入資料134至孔徑132。在一些實施例中,該至少一個孔徑存取指令可選用地包括孔徑讀取指令120的至少一個實施例,如文中所揭示,其可被用來讀取來自該孔徑132的該資料134。在一些實施例中,這些指令的僅一個可選用地被支持。在其他實施例中,這些指令皆可選用地被支持。該虛擬化擴充也可包括孔徑存取邏輯122,其可操作以施行該至少一個孔徑存取指令116的各者。在一些實施例中,該(等)孔徑存取指令可被允許使用該孔徑存取邏輯及存取該孔徑,但定期通用記憶體存取指令可能無法。
在一些實施例中,該至少一個孔徑132可位於該記憶體126中。該孔徑可廣泛地表示該記憶體的可被用來安全地儲存資料的存取保護範圍、區、或其他部分。在 一些實施例中,該孔徑可表示該記憶體的被該VMM容許或限制對其存取的此種部分。在一些實施例中,該VMM可包括孔徑管理模組109,其可操作以施行與管理該孔徑關聯的一或更多方面。此種管理方面的實例包括但不限於分配記憶體的一部分給該孔徑、配置該孔徑、配置或容許一或更多VM存取該孔徑、保護該孔徑不受定期通用記憶體存取指令的存取、及相似者。
在一些實施例中,該VMM 108及/或該孔徑管理模組109可藉由使該孔徑不能透過位址轉譯存取或到達來控制或保護該孔徑132不受非預期存取。例如,在一些實施例中,該VMM及/或該孔徑管理模組可配置該第二級階層式分頁結構136,使得沒有其中對該孔徑內的主機實體記憶體位址的轉譯。在一些實施例中,該VMM及/或該孔徑管理模組可儲存孔徑位址資訊130於該虛擬機控制結構128中、或另一存取保護結構中。該VMM及/或該孔徑管理模組可選擇性僅容許存取該孔徑位址資訊至一或更多預期或授權實體(例如,一或更多VM),同時將該孔徑存取資訊保持祕密或機密且非預期或非授權實體(例如,一或更多其他VM)不可用。結果,僅該VMM預期及授權以利用該孔徑的實體可操作來利用它。這可幫助保護或保安該孔徑中所儲存的資料。
該至少一個孔徑132、及該至少一個孔徑存取指令116可在不同實施例中被使用於各種不同目的。作為一個實例,該VMM 108及/或該孔徑管理模組109可以使該 孔徑位址資訊130對該第一VM 102-1及該第二VM 102-2兩者都可用,以便容許該第一及第二VM共享資料。藉由實例,在一些實施例中,該第一VM可發出該孔徑寫入指令138的請求以存取該孔徑位址資訊130(例如,來自該虛擬機控制結構128或另一類型的存取保護結構),且使用它來寫入或者除此以外儲存來自該孔徑寫入指令的來源運算元的該資料134至該孔徑132。後續地,在一些實施例中,該第二VM2可發出該孔徑讀取指令140的請求以存取該孔徑位址資訊130(例如,來自該虛擬機控制結構128或另一類型的存取保護結構),且使用它來讀取來自該孔徑132的該資料134至該孔徑讀取指令的目的地運算元中。以此方式該孔徑可被使用於二或更多該VMM容許存取該孔徑的VM間的資料的保護共享(例如,藉由使該孔徑位址資訊130可存取)。
第2圖為方法246的實施例的方塊流程圖,該方法可由VMM所施行以供應孔徑。在一些實施例中,該方法246可能由及/或以第1圖的該VMM 108及/或該孔徑管理模組109所施行。文中針對該VMM 108及/或該孔徑管理模組109所述的組件、特徵、及特定選用細節也選用地適用於該方法246。替代地,該方法246可能由及/或在類似或不同VMM或孔徑管理模組內加以施行。此外,該VMM108及/或該孔徑管理模組109可施行與該方法246相同、類似、或不同的方法。
該方法包括分配系統記憶體的範圍、區、或 其他部分給孔徑,在方塊247。藉由實例,在一些實施例中,該部分可包括該系統記憶體的一或更多分頁。
與該孔徑關聯的主機實體記憶體位址可被儲存於存取保護結構中,在方塊248。在一些實施例中,該主機實體記憶體位址可為該孔徑的主機實體記憶體位址。在其他實施例中,該主機實體記憶體位址可能不必然是該孔徑的主機實體記憶體位址,但可能是存取該孔徑所需。例如,該主機實體記憶體位址可導致該孔徑的主機實體記憶體位址被儲存的保護儲存位置。
該存取保護結構可廣泛地表示一種存取被控制、被限制、或被保護的結構。在一些實施例中,該VMM可保護該存取保護結構不受非授權存取。合適結構的實例包括但不限於記憶體中的資料結構、處理器晶粒上的儲存位置、晶粒上的另一結構等。存取保護結構的一個具體合適實例為虛擬機控制結構,儘管本發明的範圍非如此受限。替代地,不是使用虛擬機控制結構,專用結構可被用來儲存該主機實體記憶體位址,而沒有必然需要儲存通常被儲存於虛擬機控制結構中的其他類型資料的一些或全部。在一些實施例中,此種專用結構可選用地藉由使用相同於或類似於那些用來保護虛擬機控制結構的技術而被保護。
在一些實施例中,該存取保護結構中所儲存的主機實體記憶體位址可被保護不受非特定設計成存取它的指令及/或沒有特別存取特權來存取它的指令的存取, 但可能對特定設計成存取它的指令及/或具有特別存取特權來存取它的至少一個指令(例如,該至少一個孔徑存取指令116)可存取。藉由實例,晶粒上處理器邏輯可被配置成根據該指令(例如,它的運算碼)來容許或拒絕存取。例如,在一些實施例中,該主機實體記憶體位址可被儲存於可能在系統記憶體中的該存取保護結構中,且晶粒上處理器邏輯可操作以選擇性容許該至少一個孔徑存取指令116對其中所儲存的主機實體記憶體位址的存取,且可操作以防止定期通用記憶體存取指令(例如,從記憶體載入/讀取指令、儲存/寫入至記憶體指令等)對其中所儲存的主機實體記憶體位址的存取。
再次參照第2圖,該孔徑的主機實體記憶體位址(例如,用於整個孔徑的所有主機實體記憶體位址)可透過擴充頁表、其他第二級頁表、或其他第二級階層式分頁結構變成不可存取,在方塊249。例如,該第二級階層式分頁結構可被配置成不具有對該孔徑的主機實體記憶體位址(例如,用於整個孔徑的所有主機實體記憶體位址)的任何轉譯。這可能有助於透過位址轉譯使該孔徑通常不可存取或不可到達。這轉而可幫助保護該孔徑不受定期通用記憶體存取指令(例如,從記憶體讀取指令、儲存至記憶體指令、記憶體複製指令、收集指令等)的存取,該定期通用記憶體存取指令不具有特別存取特權且可通常透過分頁及位址轉譯僅到達實際實體記憶體。例如,此種記憶體存取指令可指明需要透過位址轉譯被轉換至主機實體記 憶體位址的虛擬或線性位址,以便存取該實際實體記憶體。在虛擬機系統中,此種位址轉譯最終需要通過該第二級階層式分頁結構(或根據此種第二級階層式分頁結構所獲得的TLB快取轉譯)。然而,配置該第二級階層式分頁結構不具有對落在整個孔徑內任何地方的主機實體記憶體位址的任何轉譯,當此種指令通過位址轉譯時,它們將不會找到容許它們存取該孔徑的任何主機實體記憶體位址或路徑。
該VMM可能以不同方式使用該方法246於不同實施例中。作為一個實例,該VMM可使用該方法以選擇性容許二或更多VM使用該孔徑來共享資料。藉由實例,這可回應於諸如例如透過超調用(hypercall)的請求而被完成,來自請求該VM被容許透過該孔徑與一或更多其他VM共享資料的VM或相關軟體。該VMM可決定容許此種資料共享,且可供應該孔徑(若一個還未可用),且可選擇性配置該預期VM使用該孔徑,而沒有配置其他非預期VM使用該孔徑。這可藉由選擇性容許僅該預期VM但不是其他非預期VM能夠存取該主機實體記憶體位址而被達成。可能需要該主機實體記憶體位址(潛在地連同一或更多其他主機實體記憶體位址)以便存取該孔徑。作為一個實例,各個VM可具有它本身的對應存取保護結構(例如,VMCS),且該VMM可選擇性儲存該主機實體記憶體位址於僅對應於它容許使用該孔徑的那些VM的存取保護結構中,但不是在對應於其他VM的存取保護結構中。作 為另一實例,多個VM可共享存取保護結構(例如,共享VMCS),且可能有控制(例如,在該共享存取保護結構中)來控制該VM的哪個被容許存取該主機實體記憶體位址。其他方法也是可能的。
第3圖為VMM模組308的範例實施例的方塊圖。在一些實施例中,該VMM模組308可操作以施行第2圖的方法246。對該方法246所述的特定選用特徵及細節也可選用地適用於該VMM模組308。替代地,該方法246可能由及/或以類似或不同VMM模組加以施行。此外,該VMM模組308可操作以施行與該方法246類似或不同的方法。
該VMM模組包括記憶體分配模組350、虛擬機控制結構(VMCS)管理模組352、及第二級階層式分頁結構管理模組354。這些模組的各者可被實施於硬體、韌體、軟體、或其組合中。該記憶體分配模組可操作以分配實體記憶體的分頁。該VMCS管理模組可操作以管理一或更多VMCS。該第二級階層式分頁結構管理模組可操作以管理一或更多第二級階層式分頁結構。
該VMM模組也可包括孔徑管理模組309的實施例,其可被實施於硬體、韌體、軟體、或其組合中。如所示,在一些實施例中,該孔徑管理模組可選用地包括該記憶體分配模組、該VMCS管理模組、及該第二級階層式分頁結構管理模組內所實施的功能或模組。具體而言,孔徑分配模組356可選用地被實施於該記憶體分配模組內,主
機實體記憶體位址儲存模組358可選用地被實施於該VCMS管理模組內,且孔徑存取保護模組360可選用地被實施於該第二級階層式分頁結構管理模組內。替代地,這些模組的各者可選用地被實施作為可在需要時與該記憶體分配模組、該VMCS管理模組、及該第二級階層式分頁結構管理模組互動的個別組件。
在一些實施例中,該孔徑分配模組356及/或該記憶體分配模組350及/或該孔徑管理模組309可操作以分配系統記憶體的一區給該孔徑。在一些實施例中,這可能類似於針對第2圖的方塊247所述加以完成。在一些實施例中,該主機實體記憶體位址儲存模組358及/或該VMCS管理模組352及/或該孔徑管理模組309可操作以儲存主機實體記憶體位址於該一或更多虛擬機控制結構中,該主機實體記憶體位址被關聯於該孔徑。在一些實施例中,這可能類似於針對第2圖的方塊248所述加以完成。在一些實施例中,該孔徑存取保護模組360及/或該第二級階層式分頁結構管理模組354及/或該孔徑管理模組309可操作以透過該一或更多第二級階層式分頁結構使該孔徑的主機實體記憶體位址變成不可存取。在一些實施例中,這可能類似於針對第2圖的方塊249所述加以完成
第4圖為施行孔徑寫入指令的實施例的方法682的實施例之方塊流程圖。在各種實施例中,該方法可由處理器、指令處理設備、數位邏輯裝置、或積體電路所施行。
該方法包括接收該孔徑寫入指令,在方塊463。在各種態樣中,該指令可在處理器或其一部分處(例如,指令提取單元、解碼單元、匯流排介面單元等)被接收。在各種態樣中,該指令可從處理器外及/或晶粒外來源(例如,從記憶體、互連等)、或從處理器上及/或晶粒上來源(例如,從指令快取、指令佇列等)所接收。
該孔徑寫入指令可指明(例如,透過欄位或其他組的位元來明確地指明)、或指出(例如,隱含地指出)來源運算元。在一些實施例中,該來源運算元可選用地在記憶體中。在其他實施例中,該來源運算元可選用地在該處理器的暫存器中。又在其他實施例中,其他來源儲存位置可選用地被使用。
在方塊464,回應於該孔徑寫入指令,資料可被存取或從該來源運算元接收。在一個特定範例實施例中,資料的量可選用地為六十四個位元組的資料。在其他實施例中,資料的量可選用地為大於或者小於六十四個位元組。
在方塊465,回應於該孔徑寫入指令,與系統記憶體中的孔徑關聯的主機實體記憶體位址可從存取保護結構讀取。該存取保護結構可類似於或相同於那些以上所討論者。在一些實施例中,該主機實體記憶體位址可能不會在架構上被暴露至該孔徑寫入指令對應的軟體及/或可能保持對此種軟體不可見。
接著,在方塊466,回應於該孔徑寫入指令,從該來源運算元所接收的資料可在該孔徑內被儲存至主機實體記憶體位址。在一些實施例中,該資料被儲存的該主機實體記憶體位址未能透過位址轉譯所獲得(例如,未能從TLB、或藉由施行頁表行走(page table walk)等所獲得)。
在一些實施例中,在方塊465從該保護結構所讀取的主機實體記憶體位址可選用地在方塊466資料被儲存的相同孔徑內。例如,在方塊465從該保護結構所讀取的主機實體記憶體位址可選用地為該孔徑的基底,該指令可進一步與該孔徑的該基底有一偏移,且在方塊466資料被儲存的該主機實體記憶體位址可選用地為藉由施加該偏移至該基底所獲得的位址。在其他實施例中,在方塊465從該保護結構所讀取的主機實體記憶體位址可選用地不是在方塊466資料被儲存的相同孔徑內。反之,在一些實施例中,在方塊465從該保護結構所讀取的主機實體記憶體位址可定址於記憶體中的一或更多其他主機實體記憶體位址被儲存的位置。在一些實施例中,可能選用地有一個列表或多個此種其他主機實體記憶體位址,例如其各對應於不同孔徑。在此種情況中,該指令可選用地具有索引或其他孔徑選擇器以選擇該主機實體記憶體位址的一者及/或選擇該孔徑的一者。此選定主機實體記憶體位址可在一些實施例中為在方塊466所使用的主機實體記憶體位址,或在其他實施例中為由該指令所指出的偏移可被施加以決定 在方塊466所使用的主機實體記憶體位址的該基底主機實體記憶體位址。在此情況中,僅有單一級的間接,儘管選用地二或更多級的間接也可選用地被使用。一般而言,在方塊465從該存取保護結構所讀取的主機實體記憶體位址可表示存取該孔徑所需的至少一個此種主機實體記憶體位址。
該所示方法包含架構操作(例如,那些從軟體觀點可見)。在其他實施例中,該方法可選用地包括一或更多微架構操作。藉由實例,該指令可被提取、解碼、亂序排程,來源運算元可被存取,執行單元可施行微架構操作以實施該指令等。
第5圖為處理器512的實施例的方塊圖,該處理器可操作以施行孔徑寫入指令518的實施例。在一些實施例中,該處理器512可操作以施行第4圖的方法462。文中針對該處理器512及/或該指令518所述的組件、特徵、及特定選用細節也選用地適用於該方法462。替代地,該方法462可由及/或在類似或不同處理器或設備內及/或使用類似或不同指令加以施行。此外,該處理器512可操作以施行與該方法462類似或不同的方法。
在一些實施例中,該處理器可為通用處理器(例如,桌上型、膝上型、或其他電腦中所使用類型的通用微處理器或中央處理單元(CPU))。替代地,該處理器可為專用處理器。合適專用處理器的實例包括但不限於網路處理器、通訊處理器、加密處理器、圖形處理器、共 處理器、嵌入式處理器、及數位信號處理器(DSP)、及控制器(例如,微控制器)。該處理器可具有各種複雜指令集運算(CISC)架構、精簡指令集運算(RISC)架構、超長指令字(VLIW)架構、混合架構、其他類型架構的任一者,或具有不同架構(例如,不同核心可具有不同架構)的組合。在一些實施例中,該處理器可包括被設置於至少一個積體電路或半導體晶粒上。在一些實施例中,該處理器可包括至少一些硬體(例如,電晶體、積體電路、非揮發性記憶體儲存微碼、或相似者)。
在操作期間,該處理器512可接收該孔徑寫入指令518。例如,該指令可經由匯流排或其他互連從記憶體所接收。該指令可表示巨集指令、機器碼指令、或該處理器的指令集的其他指令或控制信號。在一些實施例中,該孔徑寫入指令可明確地指明(例如,透過一或更多欄位或一組的位元)、或指出(例如,隱含地指出)具有資料574的來源運算元572。作為一個實例,該指令可具有來源運算元規格欄位以指明用於該來源運算元的暫存器、記憶體位置、或其他儲存位置。替代地,該來源運算元可選用地被儲存於對該指令隱含的儲存位置(例如,由該指令的運算碼隱含地或內在地指出的暫存器,儘管非明白表達)中。藉由實例,如所示範例實施例中所示,該來源運算元572可被儲存於記憶體526中,且該孔徑寫入指令可指明或指出具有記憶體位址資訊580的一組暫存器578的一或更多暫存器,以定址該來源運算元572。
再次參照第1圖,該處理器包括解碼單元或解碼器568。該解碼單元可接收及解碼該孔徑寫入指令。該解碼單元可輸出一或更多相對低階的指令或控制信號(例如,一或更多微指令、微操作、微碼進入點、解碼指令或控制信號等),其反映、表示、及/或源自該相對高階的孔徑寫入指令。在一些實施例中,該解碼單元可包括一或更多輸入結構(例如,埠、互連、介面),用以接收該孔徑寫入指令;指令辨識及解碼邏輯,與之耦合以辨識及解碼該孔徑寫入指令;及一或更多輸出結構(例如,埠、互連、介面),與之耦合以輸出該(等)低階指令或控制信號。該解碼單元可藉由使用各種不同機制加以實施,包括但不限於微碼唯讀記憶體(ROM)、查找表、硬體實施方式、可程式化邏輯陣列(PLA)、及適於實施解碼單元的其他機制。在一些實施例中,該解碼單元可被包括於晶粒上(例如,與該執行單元570在晶粒上)。在一些實施例中,該解碼單元可包括至少一些硬體(例如,電晶體、積體電路、或晶粒上韌體等)。
在一些實施例中,不是該孔徑寫入指令被直接提供給該解碼單元568,指令仿真器、轉譯器、變形器(morpher)、直譯器、或其他指令轉換模組可選用地被使用。各種類型的指令轉換模組可被實施於軟體、硬體、韌體、或其組合中。在一些實施例中,該指令轉換模組可位於該處理器外側,諸如例如在個別晶粒上及/或在記憶體中(例如,作為靜態、動態、或運行時仿真模組)。藉 由實例,該指令轉換模組可接收該孔徑寫入指令,其可為第一指令集,且可仿真、轉譯、變形、直譯、或轉換該孔徑寫入指令成為一或更多對應中間指令或控制信號,其可為第二不同指令集。該第二指令集的一或更多中間指令或控制信號可被提供給解碼單元(例如,解碼單元568),其可解碼它們成為該處理器的本地硬體(例如,一或更多執行單元)可執行的一或更多低階指令或控制信號。
再次參照第5圖,該執行單元570被耦合於該解碼單元568。在一些實施例中,該執行單元可為在晶粒上或為積體電路(例如,晶粒上或與該解碼單元的積體電路)。該執行單元可接收該一或更多解碼或轉換的指令或控制信號,其表示及/或源自該孔徑寫入指令。在操作期間,當部署在系統中時,該執行單元可操作以被耦合於該記憶體526。該執行單元及/或該處理器可包括特定或具體邏輯(例如,電晶體、積體電路、或與韌體(例如,非揮發性記憶體中所儲存的指令)及/或軟體潛在地結合的其他硬體),其可操作以施行該孔徑寫入指令。該所示執行單元被顯示為單一單元,儘管被理解的是,該執行單元可潛在地/選用地包括被分佈或分散遍及該處理器的記憶體子系統或記憶體存取資源的各種不同組件的邏輯。
該執行單元可能回應於及/或由於該孔徑寫入指令(例如,回應於從該指令所解碼的一或更多指令或控制信號及/或回應於被解碼的指令及/或回應於被提供給解碼器的指令)而操作以存取或接收該來源運算元572的資 料574。在該來源運算元是在記憶體中的情況中,該執行單元及/或該處理器可施行位址轉譯以存取該來源運算元。在一個特定範例實施例中,資料的量可選用地為六十四個位元組的資料。在其他實施例中,資料的量可選用地為大於或者小於六十四個位元組。
該執行單元也可回應於及/或由於該孔徑寫入指令而操作以存取或接收與該孔徑532關聯的主機實體記憶體位址530。如所示,在一些實施例中,該主機實體記憶體位址可選用地被儲存於存取保護結構528中。該存取保護結構可類似於或相同於那些先前所討論者。如以上所討論,該存取保護結構可廣泛地表示一種存取被控制、被限制、或被保護的結構。在一些實施例中,VMM可保護該存取保護結構不受非授權存取。存取保護結構的一個具體合適實例為VMCS,儘管本發明的範圍非如此受限。替代地,不是使用虛擬機控制結構,專用結構可被用來儲存該主機實體記憶體位址,而沒有必然需要儲存通常被儲存於VMCS中的其他類型資料的一些或全部。在一些實施例中,此種專用結構可選用地藉由使用相同於或類似於那些用來保護VMCS的技術而被保護。如所示,在一些實施例中,該存取保護結構可選用地被儲存於該記憶體526中。替代地,晶粒上或處理器上存取保護結構可反而選用地被使用。
在一些實施例中,該處理器可具有晶粒上邏輯以保護該存取保護結構結構528中所儲存的主機實體記 憶體位址530不受非特定設計成存取它的指令及/或沒有特別存取特權來存取它的指令的存取。例如,從記憶體定期通用讀取指令、儲存至記憶體指令、收集指令、散佈指令、及相似者可能不能夠存取該存取保護結構中所儲存的主機實體記憶體位址。然而,該晶粒上邏輯可容許該孔徑寫入指令存取該存取保護結構中所儲存的主機實體記憶體位址(例如,根據它的運算碼)。該孔徑寫入指令可被特定設計及/或有特別特權來存取它。在一些實施例中,當該存取保護結構被儲存於該記憶體中時,該孔徑寫入指令可能能夠存取它,即使該孔徑寫入指令未能指出用以指出該存取保護結構被儲存於該記憶體中的何處的任何架構可見資訊。
該執行單元也可回應於及/或由於該孔徑寫入指令而操作以將從該來源運算元572所接收的資料574在該孔徑532內儲存於主機實體記憶體位址576。該孔徑可能類似於或相同於先前所述的孔徑。例如,該孔徑可廣泛地表示該記憶體的可被用來安全地儲存資料的存取保護範圍、區、或其他部分。在一些實施例中,該孔徑可表示該記憶體的被該VMM容許或限制對其存取的此種部分。在一些實施例中,該孔徑的主機實體記憶體位址(例如,用於整個孔徑的所有主機實體記憶體位址)可透過位址轉譯及/或透過第二級階層式分頁結構而是不可存取或不可到達。例如,在一些實施例中,該第二級階層式分頁結構可能不具有對落在該孔徑內的主機實體記憶體位址的其中任何轉 譯。
在一些實施例中,在該孔徑532內對其儲存該資料534的主機實體記憶體位址576未能透過位址轉譯所獲得(例如,未能從TLB、或藉由施行頁表行走等所獲得)。那就是,在一些實施例中,該孔徑可被存取而無需施行從虛擬位址至實際實體記憶體位址(例如,主機實體記憶體位址)的位址轉譯、無需存取第一或第二級階層式分頁結構(例如,擴充頁表)、及沒有必須存取或嘗試使用被用來快取對主機實體位址的轉譯的TLB。反之,該主機實體記憶體位址576可被儲存於某處、在該孔徑寫入指令被施行時擷取、及用來直接儲存資料至該孔徑中而沒有進一步的位址轉譯。該孔徑寫入指令可具有在該處理器的晶粒上邏輯內的特別特權以繞過此種位址轉譯。
然而,定期通用記憶體存取指令(例如,從記憶體讀取指令、儲存至記憶體指令、收集指令、散佈指令等)可能不具有容許它們繞過位址轉譯的此種屬性。反之,此種定期通用記憶體存取指令將需要通過位址轉譯以及最終該第二級階層式分頁結構及/或已經從此種第二級階層式分頁結構所獲得的TLB快取轉譯。然而,在一些實施例中,如以上所述,此種第二級階層式分頁結構可被配置成不具有對落在該孔徑內的主機實體記憶體位址的任何轉譯。以此方式,該孔徑可能對此種定期通用記憶體存取指令不可存取。此外,在一些實施例中,可能沒有需要調換該EPT或其他第二級頁表。該EPT或其他第二級頁表的 此種調換(其為不需要)可能除此以外具有額外負擔,諸如例如用以序列化該處理器、刷新該TLB(例如,由於它們儲存對新第二級頁表不相關的陳舊資訊)、以更新資訊重建該TLB等。
在一些實施例中,從該存取保護結構528所讀取的主機實體記憶體位址530可選用地為該孔徑532的基底。在一些實施例中,該孔徑寫入指令可進一步具有偏移,其可被施加至該孔徑的此基底以指出該資料534被儲存的主機實體記憶體位址576。在其他實施例中,從該存取保護結構528所讀取的主機實體記憶體位址530可選用地定址於一或更多其他主機實體記憶體位址被儲存的實體記憶體位置,且這些其他主機實體記憶體位址的一者可為該主機實體記憶體位址576或者可為指令提供偏移可被施加以獲得該主機實體記憶體位址576的該孔徑532的基底。例如,該主機實體記憶體位址530可導致各對應於不同孔徑的基底的一個列表或其他組的多個主機實體記憶體位址。在此種情況中,該孔徑寫入指令可進一步指明或指出數量、索引、或其他孔徑選擇器以選擇這些孔徑的一者。用於該選定孔徑的基底的主機實體記憶體位址可接著被讀取,且指令提供偏移可被施加至該基底以獲得該主機實體記憶體位址576。這些只是一些例示性實例。其他方法將對那些熟習本技藝之人士而言顯而易見且具有本揭示的益處。一般而言,從該存取保護結構528所讀取的主機實體記憶體位址530可表示存取該孔徑532所需的至少一個主機 實體記憶體位址,且在一些情況中一或更多額外主機實體記憶體位址可選用地被需要。
在一些實施例中,該主機實體記憶體位址530及該主機實體記憶體位址576可能在該處理器的微架構內被保持祕密或機密但從未在架構上暴露至該孔徑寫入指令對應的軟體。例如,施行該孔徑寫入指令的VM可能不能夠得知或知道這些主機實體記憶體位址。該VM可仍然能夠利用該孔徑,藉由施行該存取寫入指令,即使該VM未能知道該孔徑位於系統記憶體中的何處。該VMM可知道此主機實體記憶體位址,由於它可能儲存該主機實體位址於該存取保護結構,但實施該孔徑寫入指令的微架構可在一些情況中甚至不顯露該主機實體位址給該VMM。反之,在一些實施例中,該微架構可保持該主機實體記憶體位址對所有軟體祕密及/或不可見。
為了避免模糊該說明,相對簡單處理器512已經被顯示及描述。然而,該處理器可選用地包括其他處理器組件。例如,各種不同實施例可包括針對第11-13圖的任一者所示及所述之組件的各種不同組合及配置。該處理器的組件的全部可被耦合在一起以容許它們如預期操作。藉由實例,考慮第11B圖,該指令快取1134可快取該指令,該指令提取單元1138可提取該指令,該解碼單元1140可解碼該指令,該排程器單元1156可排程該相關操作,該執行單元1162可施行該指令,該引退單元1154可引退該指令等。
第6圖為施行孔徑讀取指令的實施例的方法682的實施例之方塊流程圖。在各種實施例中,該方法可由處理器、指令處理設備、數位邏輯裝置、或積體電路所施行。
該方法包括接收該孔徑讀取指令,在方塊683。在各種態樣中,該指令可在處理器或其一部分處(例如,指令提取單元、解碼單元、匯流排介面單元等)被接收。在各種態樣中,該指令可從處理器外及/或晶粒外來源(例如,從記憶體、互連等)、或從處理器上及/或晶粒上來源(例如,從指令快取、指令佇列等)所接收。
該孔徑讀取指令可指明(例如,透過欄位或其他組的位元來明確地指明)、或指出(例如,隱含地指出)目的地運算元。在一些實施例中,該目的地運算元可選用地在記憶體中。在其他實施例中,該目的地運算元可選用地在該處理器的暫存器中。又在其他實施例中,其他目的地儲存位置可選用地被使用。
在方塊684,與系統記憶體中的孔徑關聯的主機實體記憶體位址可從存取保護結構讀取,回應於該孔徑讀取指令。該存取保護結構可類似於或相同於那些以上所討論者。在一些實施例中,該主機實體記憶體位址可能不會在架構上被暴露至該孔徑讀取指令對應的軟體及/或可能保持對此種軟體不可見。
接著,在方塊685,來自該孔徑內在主機實體 記憶體位址的資料可被讀取,回應於該孔徑讀取指令。在一些實施例中,該資料被讀取的該主機實體記憶體位址未能透過位址轉譯所獲得(例如,未能從TLB、或藉由施行頁表行走等所獲得)。在方塊684所讀取的主機實體記憶體位址可相同或者不同於用來在方塊685讀取該資料的主機實體記憶體位址,如先前所述。
在方塊686,從該孔徑所讀取的資料可被儲存至該目的地運算元,回應於該孔徑讀取指令。在一個特定範例實施例中,資料的量可選用地為六十四個位元組的資料。在其他實施例中,資料的量可選用地為大於或者小於六十四個位元組。
第7圖為處理器712的實施例的方塊圖,該處理器可操作以施行孔徑讀取指令720的實施例。在一些實施例中,該處理器712可操作以施行第6圖的方法682。文中針對該處理器712及/或該指令720所述的組件、特徵、及特定選用細節也選用地適用於該方法682。替代地,該方法682可由及/或在類似或不同處理器或設備內及/或使用類似或不同指令加以施行。此外,該處理器712可操作以施行與該方法682類似或不同的方法。
該處理器712可能相同於、類似於、或不同於第5圖的處理器512。該處理器包括解碼單元768,可操作以解碼該孔徑讀取指令720;執行單元770,可操作以施行該孔徑讀取指令;及暫存器578,可操作以儲存用於該孔徑讀取指令720的目的地運算元790的記憶體位址資訊 780。除了有關於該孔徑讀取指令的這些態樣以外,代替或除了有關於該孔徑寫入指令518的態樣,除非另有所指,這些組件可選用地類似於、或相同於(例如,具有相同或類似的特性)第5圖的對應命名組件。此外,該孔徑讀取指令720可造成該處理器712與存取保護結構728及孔徑732互動。除了有關於僅該孔徑讀取指令的任何態樣以外,除非另有所指,這些組件也可選用地類似於、或相同於(例如,具有相同或類似的特性)第5圖的對應命名組件。為了避免模糊該說明,該處理器712的不同及/或額外特性及它的組件將主要地被描述,而沒有重複可選用地相同的所有特性。
在操作期間,該處理器712可接收該孔徑讀取指令720。在一些實施例中,該孔徑讀取指令可明確地指明、或指出目的地運算元790。藉由實例,如所示範例實施例中所示,該目的地運算元790可被儲存於記憶體726中,且該孔徑讀取指令可指明或指出具有記憶體位址資訊780的一組暫存器778的一或更多暫存器,以定址該目的地運算元,儘管本發明的範圍非如此受限。
該解碼單元768可接收及解碼該孔徑讀取指令。該執行單元770被耦合於該解碼單元768及被耦合於該暫存器778。在操作期間,當部署在系統中時,該執行單元可操作以被耦合於該記憶體726。該執行單元可能回應於及/或由於該孔徑讀取指令(例如,回應於從該指令所解碼的一或更多指令或控制信號及/或回應於被解碼的指 令及/或回應於被提供給解碼器的指令)而操作以存取或接收與孔徑732關聯的主機實體記憶體位址730。如所示,在一些實施例中,該主機實體記憶體位址730可選用地被儲存於存取保護結構728。該存取保護結構可能類似於、或相同於(例如,具有相同或類似的特性)那些先前所述者(例如,針對該存取保護結構528)。
該執行單元也可回應於及/或由於該孔徑讀取指令而操作以讀取來自該孔徑732內的在主機實體記憶體位址776的資料734。該孔徑可能類似於、或相同於(例如,具有相同或類似的特性)那些先前所討論者(例如,針對該孔徑532)。在一些實施例中,該資料734在該孔徑732內被讀取的主機實體記憶體位址776未能透過位址轉譯所獲得。該孔徑讀取指令可具有在該處理器的晶粒上邏輯內的特別特權以藉由繞過位址轉譯來存取該孔徑。該主機實體記憶體位址776可能以各種不同方式被關連至該主機實體記憶體位址730,如先前所述。
該執行單元可進一步回應於及/或由於該孔徑讀取指令而操作以儲存從該孔徑732所接收的資料734於該目的地運算元790中作為資料792。在一個特定範例實施例中,資料的量可選用地為六十四個位元組的資料。在其他實施例中,資料的量可選用地為大於或者小於六十四個位元組。
第8圖為存取來自孔徑832的資料834的第一方法之方塊圖。在此第一方法中,孔徑存取指令816可指出 偏移。該孔徑存取指令可被用來存取來自存取保護結構828之用於該孔徑832的基底894的主機實體位址830。接著,由該指令所指出的偏移895可被施加至該基底894以獲得該孔徑832內的資料834的實體記憶體位址或位置,該資料將被存取。該偏移895可容許該孔徑存取指令816定址或指出與使用該孔徑832的不同儲存位置或部分。軟體可能不會知道或得知用於該孔徑的基底894的實際主機實體位址,但可能能夠指出相對於該基底的不同偏移以定址該孔徑內的不同位置。
第9圖為存取來自孔徑932-4的資料934的第二方法之方塊圖。在此第二方法中,孔徑存取指令916可指出孔徑選擇器及偏移。該孔徑存取指令可被用來存取來自存取保護結構928之用於孔徑區塊的基底994的主機實體位址930。該孔徑區塊可包括在實體相鄰記憶體位置中的多個不同孔徑。在該所示實例中,第一孔徑932-1至第四孔徑932-4被顯示,儘管可能選用地有較少或較多孔徑。由該指令所指出的孔徑選擇器996可被用來選擇來自該孔徑區塊的孔徑的一者。在此實例中,該第四孔徑932-4被選擇。接著,由該指令所指出的偏移995可被施加至該選定第四孔徑的基底999以獲得該選定第四孔徑932-4內的資料934的實體記憶體位址或位置,該資料將被存取。該孔徑選擇器996可容許不同孔徑被選擇及使用。此種不同孔徑可能為了不同目的而被使用。藉由實例,不同孔徑可被使用於不同VM間的通訊、用於與相同或不同VM關聯的不同 應用、或以其他方式。
第10圖為存取來自孔徑1032-4的資料1034的第三方法之方塊圖。在此第三方法中,孔徑存取指令1016可指出孔徑選擇器及偏移。該孔徑存取指令可被用來存取來自存取保護結構1028之用於孔徑列表的基底1097的主機實體位址1030。該孔徑列表可包括用以存取可能潛在地/選用地在不同不相鄰實體記憶體位置中的一列表的不同孔徑的不同對應者各需要的一列表的主機實體位址。
在該所示實例中,用於第一孔徑的基底的第一主機實體記憶體位址1098-1到用於第四孔徑的基底的第四主機實體記憶體位址1098-4被顯示,儘管可能選用地有較少或較多。由該指令所指出的孔徑選擇器1096可被用來選擇來自該孔徑列表的對應孔徑的主機實體記憶體位址的一者。在此實例中,該第四主機實體記憶體位址1098-4被選擇。該第四主機實體記憶體位址1098-4定址第四孔徑1032-4的基底1094。接著,由該指令所指出的偏移1095可被施加至該第四孔徑的基底1094以獲得該選定第四孔徑1032-4內的資料1034的實體記憶體位址或位置,該資料將被存取。
在一些實施例中,藉由第8-10圖中所示之方法的任一者,邊界檢查可選用地被施行以確保該偏移在施加至該基底時落在該孔徑的範圍內(例如,如由下邊界及上邊界所定義)。若嘗試存取未完全地在邊界內,則該存取可能不被施行且特別處理可被施行(例如,VM退出可 被施行、異常可能被產生、或相似者)。
文中所述的孔徑存取指令、孔徑、及其他方法可被使用於各種不同應用及目的。實例包括但不限於共享資料處理、共享伺服器處理、共享雲端運算、共享網路處理、及相似者。為了進一步例示,考慮網路功能虛擬化(NFV)中的一個可能應用。NFV一般包含在一般商用現貨(Commercial-Off-The Shelf,COTS)系統上虛擬化及運作諸如路由、交換、智能封包處理、及相似者的網路功能(例如,虛擬網路功能(VNF)),對比於固定功能網路設備。一個關鍵驅動的用途是網路服務功能鏈結(NSFC)以形成網路處理管線。例如,封包可在它們被轉送至次一目的地以前通過一系列VNF,諸如深層封包檢測、網路位址轉譯、及其他網路功能。不同虛擬機可潛在地被用來施行不同NSFC任務、VNF、或相似者。文中所述的方法可潛在地被用來跟另一虛擬機共享由一個已經施行一個NSFC任務、VNF、或相似者的虛擬機所處理的資料,該另一虛擬機施行另一NSFC任務、VNF、或相似者。另一可能應用是在軟體定義網路(SDN)中,此處二或更多VM可同樣地合作且可能想要共享資料。還有其他可能應用是在過程間通訊(IPC)庫、資料平面處理應用、及軟體交換應用中。這些只是一些例示性實例。本發明的範圍不限於任何特定應用。
範例性核心架構、處理器、及電腦架構
處理器核心可為了不同目的而以不同方式及在不同處理器中被實施。例如,此種核心的實施方式可包括:1)意圖用於通用運算的通用循序核心;2)意圖用於通用運算的高性能通用亂序核心;3)主要意圖用於圖形及/或科學(傳輸率)運算的專用核心。不同處理器的實施方式可包括:1)CPU,包括意圖用於通用運算的一或更多通用循序核心及/或意圖用於通用運算的一或更多通用亂序核心;及2)共處理器,包括主要意圖用於圖形及/或科學(傳輸率)的一或更多專用核心。此種不同處理器導致不同電腦系統架構,其可包括:1)該共處理器在與該CPU分離的晶片上;2)該共處理器在與CPU相同封裝中的不同晶粒上;3)該共處理器在與CPU相同的晶粒上(在此情況中,此種共處理器有時被稱為專用邏輯,諸如整合式圖形及/或科學(傳輸率)邏輯,或稱為專用核心);及4)系統晶片,其可包括在相同晶粒上的該所述CPU(有時稱為應用核心或應用處理器)、以上所述的共處理器、及額外功能。範例性核心架構接著被描述,其次是範例性處理器及電腦架構的說明。
範例性核心架構 循序及亂序核心方塊圖
第11A圖為示出範例性循序管線及範例性暫存器重新命名、亂序發送/執行管線兩者的方塊圖,依據本發明的實施例。第11B圖為示出被包括於處理器中的循序 架構核心的範例性實施例及範例性暫存器重新命名、亂序發送/執行架構核心兩者的方塊圖,依據本發明的實施例。第11A-B圖中的實線方塊示出該循序管線及循序核心,而選用添加的虛線方塊示出該暫存器重新命名、亂序發送/執行管線及核心。考慮到該順序態樣為該亂序態樣的子集,該亂序態樣將被描述。
在第11A圖中,處理器管線1100包括提取層1102、長度解碼層1104、解碼層1106、分配層1108、重新命名層1110、排程(也稱為分發或發出)層1112、暫存器讀取/記憶體讀取層1114、執行層1116、寫回/記憶體寫入層1118、異常處理層1122、及提交層1124。
第11B圖顯示包括被耦合至執行引擎單元1150的前端單元1130的處理器核心1190,且兩者被耦合至記憶體單元1170。該核心1190可為精簡指令集運算(RISC)核心、複雜指令集運算(CISC)核心、超長指令字(VLIW)核心、或者混合架構或替代核心類型。作為又一選項,該核心1190可為專用核心,諸如例如網路或通訊核心、壓縮引擎、共處理器核心、通用運算圖形處理單元(GPGPU)核心、圖形核心、或相似者。
該前端單元1130包括分支預測單元1132,被耦合至指令快取單元1134、其被耦合至指令轉譯後備緩衝區(TLB)1136,其被耦合至指令提取單元1138,其被耦合至解碼單元1140。該解碼單元1140(或解碼器)可解碼指令,且產生作為輸出的一或更多微操作、微碼進入點、 微指令、其他指令、或其他控制信號,其被解碼自、或其除此以外反映、或源自該原始指令。該解碼單元1140可藉由使用各種不同機制加以實施。合適機制的實例包括但不限於查找表、硬體實施方式、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一個實施例中,該核心1190包括儲存用於某些微碼指令的微碼的微碼ROM或其他媒體(例如,在解碼單元1140中或在該前端單元1130內)。該解碼單元1140被耦合至該執行引擎單元1150中的重新命名/分配器單元1152。
該執行引擎單元1150包括該重新命名/分配器單元1152,被耦合至引退單元1154及一組一或更多排程器單元1156。該排程器單元1156表示任何數量的不同排程器,包括預留站、中央指令窗等。該排程器單元1156被耦合至該實體暫存器檔案單元1158。該實體暫存器檔案單元1158的各者表示一或更多實體暫存器檔案,其不同者儲存一或更多不同資料類型,諸如純量整數、純量浮點、壓縮整數、壓縮浮點、向量整數、向量浮點、狀態(例如,指令指標,其為將被執行的次一指令的位址)等。在一個實施例中,該實體暫存器檔案單元1158包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。該實體暫存器檔案單元1158被該引退單元1154重疊以示出在其中暫存器重新命名及亂序執行可被實施的各種方式(例如,使用重排緩衝區及引退暫存器檔案;使用 未來檔案、歷史緩衝區、及引退暫存器檔案;使用暫存器地圖及暫存器池;等)。該引退單元1154及該實體暫存器檔案單元1158被耦合至該執行叢集1160。該執行叢集1160包括一組的一或更多執行單元1162及一組的一或更多記憶體存取單元1164。該執行單元1162可施行各種操作(例如,移位、加法、減法、乘法)及對各種類型的資料(例如,純量浮點、壓縮整數、壓縮浮點、向量整數、向量浮點)。儘管一些實施例可包括專用於特定功能或功能集的許多執行單元,其他實施例可包括僅一個執行單元或皆施行所有功能的多個執行單元。該排程器單元1156、該實體暫存器檔案單元1158、及執行叢集1160被顯示為可能是複數,因為某些實施例產生用於某些類型的資料/操作的個別管線(例如,純量整數管線、純量浮點/壓縮整數/壓縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其各具有它們本身的排程器單元、實體暫存器檔案單元、及/或執行叢集-且在個別記憶體存取管線的情況中,某些實施例被實施而在其中此管線的僅該執行叢集具有該記憶體存取單元1164)。也應被理解的是,在個別管線被使用處,這些管線的一或更多者可為亂序發送/執行且其餘為循序。
該組的記憶體存取單元1164被耦合至該記憶體單元1170,其包括資料TLB單元1172,耦合至資料快取單元1174,耦合至第2階(L2)快取單元1176。在一個範例性實施例中,該記憶體存取單元1164可包括載入單元、 儲存位址單元、及儲存資料單元,其各者被耦合至該記憶體單元1170中的資料TLB單元1172。該指令快取單元1134被進一步耦合至該記憶體單元1170中的第2階(L2)快取單元1176。該L2快取單元1176被耦合至一或更多其他階的快取以及最終耦合至主記憶體。
藉由實例,該範例性暫存器重新命名、亂序發送/執行核心架構可實施該管線1100如下:1)該指令提取1138施行該提取及長度解碼層1102及1104;2)該解碼單元1140施行該解碼層1106;3)該重新命名/分配器單元1152施行該分配層1108及重新命名層1110;4)該排程器單元1156施行該排程層1112;5)該實體暫存器檔案單元1158及該記憶體單元1170施行該暫存器讀取/記憶體讀取層1114;該執行叢集1160施行該執行層1116;6)該記憶體單元1170及該實體暫存器檔案單元1158施行該寫回/記憶體寫入層1118;7)各種單元可涉及於該執行處理層1122中;及8)該引退單元1154及該實體暫存器檔案單元1158施行該提交層1124。
該核心1190可支援一或更多指令集(例如,x86指令集(具有已經添加較新版本的一些擴充);加州桑尼維爾的MIPS科技公司的MIPS指令集;加州桑尼維爾的ARM控股的ARM指令集(具有選用的額外擴充,諸如NEON)),包括文中所述的指令。在一個實施例中,該核心1190包括邏輯以支援壓縮資料指令集擴充(例如,AVX1、AVX2),藉此容許許多多媒體應用所使用的操作
藉由使用壓縮資料加以施行。
應被理解的是,該核心可支援多執行緒(執行二或更多並行組的操作或執行緒),且可能以各種各樣的方式這樣進行,包括時間切割多執行緒、同時多執行緒(此處單一實體核心提供邏輯核心給實體核心進行同時多執行緒的執行緒的各者)、或其組合(例如,時間切割提取與解碼及此後的同時多執行緒,諸如在英特爾®超執行緒技術中)。
儘管暫存器重新命名在亂序執行的情境中被描述,應被理解的是,暫存器重新命名可被使用於循序架構中。儘管該處理器的所示實施例也包括個別的指令及資料快取單元1134/1174以及共享的L2快取單元1176,替代實施例可具有用於指令及資料兩者的單一內部快取,諸如例如第1階(L1)內部快取、或多階的內部快取。在一些實施例中,該系統可包括內部快取及該核心及/或該處理器外部的外部快取之組合。替代地,該快取的全部可為該核心及/或該處理器的外部。
特定範例性循序核心架構
第12A-B圖示出較特定範例性循序核心架構的方塊圖,該核心將為晶片中的一些邏輯方塊(包括相同類型及/或不同類型的其他核心)的一者。該邏輯方塊透過高頻寬互連網路(例如,環狀網路)與一些固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯通訊,取決於該 應用。
第12A圖為單一處理器核心的方塊圖,以及它對該晶粒上互連網路1202的連接與它的第2階(L2)快取的本地子集1204,依據本發明的實施例。在一個實施例中,指令解碼器1200支援具有壓縮資料指令集擴充的x86指令集。L1快取1206容許的對快取記憶體至該純量及向量單元中的低延遲存取。儘管在一個實施例中(為了簡化設計),純量單元1208及向量單元1210使用個別暫存器集(分別是純量暫存器1212及向量暫存器1214)且它們之間所轉移的資料被寫入至記憶體且接著從第1階(L1)快取1206讀回,本發明的替代實施例可使用不同方法(例如,使用單一暫存器集或者包括容許資料在該二個暫存器檔案之間被轉移而沒有被寫入或讀回的通訊路徑)。
該L2快取的本地子集1204為全域L2快取的被分割成個別本地子集(每個處理器核心一個)的一部份。各個處理器核心具有對它本身該L2快取的本地子集1204的直接存取路徑。由處理器核心所讀取的資料被儲存於它的L2快取子集1204中且可被快速地存取,並行於存取它們本身本地L2快取子集的其他處理器核心。由處理器核心所寫入的資料被儲存於它本身的L2快取子集1204中且從其他子集刷新,若需要的話。該環狀網路確保對共享資料的一致性。該環狀網路為雙向以容許諸如處理器核心、L2快取及其他邏輯方塊的代理在該晶片內互相通訊。各個環狀資料路徑為每個方向1012位元寬。
第12B圖為第12A圖中的處理器核心的部份的展開圖,依據本發明的實施例。第12B圖包括該L1快取1204的L1資料快取1206A部份、以及有關於該向量單元1210及該向量暫存器1214的較多細節。具體而言,該向量單元1210為16倍寬向量處理單元(VPU)(見16倍寬ALU 1228),其執行整數、單倍精度浮點、及雙倍精度浮點指令的一或更多者。該VPU支援以調換單元1220來調換該暫存器輸入、藉由數字轉換單元1222A-B的數字轉換、及藉由複製單元1224對該記憶體輸入的複製。寫入遮罩暫存器1226容許預測生成的向量寫入。
具有整合式記憶體控制器及圖形的處理器
第13圖為處理器1300的方塊圖,該處理器可具有超過一個核心、可具有整合式記憶體控制器、及可具有整合式圖形,依據本發明的實施例。第13圖中的實線方塊示出處理器1300,具有單核心1302A、系統代理1310、一組的一或更多匯流排控制器單元1316,而選用添加的虛線方塊示出替代處理器1300,具有多個核心1302A-N、在系統代理單元1310中的一組的一或更多整合式記憶體控制單元1314、及專用邏輯1308。
因此,該處理器1300的不同實施方式可包括:1)CPU,具有的專用邏輯1308為整合式圖形及/或科學(傳輸率)邏輯(其可包括一或更多核心),且該核心1302A-N為一或更多通用核心(例如,通用循序核心、通 用亂序核心、該二者的組合);2)共處理器,具有的核心1302A-N為主要意圖用於圖形及/或科學(傳輸率)的大量的專用核心;及3)共處理器,具有的核心1302A-N為大量的通用循序核心。因此,該處理器1300可為通用處理器、共處理器或專用處理器,諸如例如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高傳輸率多重整合核心(MIC)共處理器(包括30或更多核心)、嵌入式處理器、或相似者。該處理器可被實施於一或更多晶片上。該處理器1300可為一或更多基板的一部份及/或可被實施於一或更多基板上,藉由使用許多處理技術的任一者,諸如例如BiCMOS、CMOS、或NMOS。
該記憶體階層包括在該核心內的一或更多階的快取、一組或一或更多共享快取單元1306、及耦合至該組的整合式記憶體控制器單元1314的外部記憶體(未顯示)。該組的共享快取單元1306可包括一或更多中階快取,諸如第2階(L2)、第3階(L3)、第4階(L4)、或其他階的快取、最後一階快取(LLC)、及/或其組合。儘管在一個實施例中,環形互連單元1312互連該整合式圖形邏輯1308、該組的共享快取單元1306、及該系統代理單元1310/整合式記憶體控制器單元1314,替代實施例可使用用以互連此種單元的任何數量的熟知技術。在一個實施例中,一致性在一或更多快取單元1306與核心1302A-N之間被維持。
在一些實施例中,該核心1302A-N的一或更多者能夠進行多執行緒。該系統代理1310包括那些協調及操作核心1302A-N的組件。該系統代理單元1310可包括例如功率控制單元(PCU)及顯示單元。該PCU可為或包括用以調節該核心1302A-N及該整合式圖形邏輯1308的功率狀態的所需的邏輯及組件。該顯示單元是用以驅動一或更多外部連接的顯示器。
該核心1302A-N可在架構指令集方面為同質或異質;那就是,該核心1302A-N的二或更多者可能能夠執行相同指令集,而其他者可能能夠執行僅該指令集的子集或不同指令集。
範例性電腦架構
第14-17圖為範例性電腦架構的方塊圖。本技藝中針對膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、蜂巢式電話、可攜式媒體播放器、手持式裝置、及各種其他電子裝置已知的其他系統設計及配置也是合適的。一般而言,如文中所揭示能夠併入處理器及/或其他執行邏輯的眾多種類的系統或電子裝置通常是合適的。
現在參照第14圖,顯示的是系統1400的方塊圖,依據本發明的一個實施例。該系統1400可包括一或更 多處理器1410、1415,其被耦合至控制器集線器1420。在一個實施例中,該控制器集線器1420包括圖形記憶體控制器集線器(GMCH)1490及輸入/輸出集線器(IOH)1450(其可在不同晶片上);該GMCH 1490包括被耦合至記憶體1440及共處理器1445的記憶體及圖形控制器;該IOH 1450耦合輸入/輸出(I/O)裝置1460至該GMCH 1490。替代地,該記憶體及圖形控制器的一或兩者被整合於該處理器內(如文中所述),該記憶體1440及該共處理器1445被直接耦合至該處理器1410,且耦合至與IOH 1450在單一晶片中的該控制器集線器1420。
額外處理器1415的選用本質以虛線表示於第14圖中。各個處理器1410、1415可包括文中所述之處理核心的一或更多者且可為該處理器1300的某一版本。
該記憶體1440可為例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或該二者的組合。針對至少一個實施例,該控制器集線器1420經由多點匯流排與該處理器1410、1415通訊,諸如前側匯流排(FSB)、諸如QuickPath互連(QPI)的點對點介面、或類似連接1495。
在一個實施例中,該共處理器1445為專用處理器,諸如例如高傳輸率MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或相似者。在一個實施例中,控制器集線器1420可包括整合式圖形加速器。
該實體資源1410、1415之間在一系列的優點度量方面可能有各種各樣的差異,該優點度量包括架構、微架構、熱、功率消耗特性、及相似者。
在一個實施例中,該處理器1410執行控制一般類型的資料處理操作的指令。嵌入於該指令內的可為共處理器指令。該處理器1410辨識這些共處理器指令為應該被該附接共處理器1445執行的類型。因此,該處理器1410在共處理器匯流排或其他互連上發出這些共處理器指令(或表示共處理器指令的控制信號)至共處理器1445。共處理器1445接受及執行所接收的共處理器指令。
現在參照第15圖,顯示的是第一較特定範例性系統1500的方塊圖,依據本發明的實施例。如第15圖中所示,多處理器系統1500為點對點互連系統,且包括經由點對點互連1550所耦合的第一處理器1570及第二處理器1580。處理器1570及1580的各者可為該處理器1300的某一版本。在本發明的一個實施例中,處理器1570及1580分別為處理器1410及1415,而共處理器1538為共處理器1445。在另一實施例中,處理器1570及1580分別為處理器1410及共處理器1445。
處理器1570及1580被顯示分別包括整合式記憶體控制器(IMC)單元1572及1582。處理器1570也包括作為它的匯流排控制器單元的一部份的點對點(P-P)介面1576及1578;類似地,第二處理器1580包括P-P介面1586及1588。處理器1570、1580可藉由使用P-P介面電路 1578、1588經由點對點(P-P)介面1550來交換資訊。如第15圖中所示,IMC 1572及1582耦合該處理器至各別記憶體,即記憶體1532及記憶體1534,其可為布局部附接至該各別處理器的主記憶體的部分。
處理器1570、1580可藉由使用點對點介面電路1576、1594、1586、1598經由個別P-P介面1552、1554與晶片組1590各自交換資訊。晶片組1590可經由高性能介面1539與該共處理器1538選用地交換資訊。在一個實施例中,該共處理器1538為專用處理器,諸如例如高傳輸率MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或相似者。
共享快取(未顯示)可被包括於任一處理器中或兩個處理器的外側,又經由P-P互連與該處理器連接,使得任一或兩個處理器的本地快取資訊可被儲存於該共享快取中,若處理器被放置至低功率模式中。
晶片組1590可經由介面1596被耦合至第一匯流排1516。在一個實施例中,第一匯流排1516可為周邊組件互連(PCI)匯流排、或諸如PCI快速匯流排或另一第三代I/O互連匯流排的匯流排,儘管本發明的範圍非如此受限。
如第15圖中所示,各種I/O裝置1514可被耦合至第一匯流排1516、以及匯流排橋接器1518,其耦合第一匯流排1516至第二匯流排1520。在一個實施例中,一或更多額外處理器1515被耦合至第一匯流排1516,諸如共處理 器、高傳輸率MIC處理器、GPGPU、加速器(諸如,例如圖形加速器或數位信號處理(DSP)單元)、場效可程式化閘極陣列、或任何其他處理器。在一個實施例中,第二匯流排1520可為低接腳數(LPC)匯流排。各種裝置可被耦合至第二匯流排1520,包括例如鍵盤及/或滑鼠1522、通訊裝置1527及諸如可包括指令/碼及資料1530的硬碟機或其他大量儲存裝置的儲存單元1528,在一個實施例中。進一步而言,音訊I/O 1524可被耦合至該第二匯流排1520。注意到其他架構是可能的。例如,不是第15圖的點對點架構,系統可實施多點匯流排或其他此種架構。
現在參照第16圖,顯示的是第二較特定範例性系統1600的方塊圖,依據本發明的實施例。第15及16圖中的相似元件承載相似元件符號,且第15圖的某些態樣已經從第16圖省略以便避免模糊第16圖的其他態樣。
第16圖示出該處理器1570、1580可分別包括整合式記憶體及I/O控制邏輯(「CL」)1572及1582。因此,該CL 1572、1582包括整合式記憶體控制器單元及包括I/O控制邏輯。第16圖示出不僅該記憶體1532、1534耦合至該CL 1572、1582,而且I/O裝置1614也被耦合至該控制邏輯1572、1582。傳統I/O裝置1615被耦合至該晶片組1590。
現在參照第17圖,顯示的是SoC 1700的方塊圖,依據本發明的實施例。第13圖中的類似元件承載相似元件符號。並且,虛線方塊為較先進SoC上的選用特徵。 在第17圖中,互連單元1702被耦合至:應用處理器1710,其包括一組的一或更多核心202A-N及共享快取單元1306;系統代理單元1310;匯流排控制器單元1316;整合式記憶體控制器單元1314;一組的一或更多共處理器1720,其可包括整合式圖形邏輯、影像處理器、音訊處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元1730;直接記憶體存取(DMA)單元1732;及顯示單元1740,用以耦合至一或更多外部顯示器。在一個實施例中,該共處理器1720包括專用處理器,諸如例如網路或通訊處理器、壓縮引擎、GPGPU、高傳輸率MIC處理器、嵌入式處理器、或相似者。
文中所揭示之機制的實施例可被實施於硬體、軟體、韌體、或此種實施方法的組合中。本發明的實施例可被實施作為電腦程式或程式碼,在包含至少一個處理器、儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一個輸入裝置、及至少一個輸出裝置的可程式化系統上執行。
諸如第15圖中所示之碼1530的程式碼可被施加至輸入指令以施行文中所述的功能及產生輸出資訊。該輸出資訊可能以已知方式被施加至一或更多輸出裝置。為了此申請案之目的,處理系統包括具有諸如例如數位信號處理器(DSP)、微控制器、應用特定積體電路(ASIC)、或微處理器的處理器的任何系統。
該程式碼可能以高階程序或物件導向程式語 言加以實施而與處理系統通訊。該程式碼也可能以組合或機器語言加以實施,視需要。事實上,文中所述的機制在範圍上不限於任何特定程式語言。在任何情況中,該語言可為編譯或直譯語言。
至少一個實施例的一或更多態樣可由機器可讀取媒體上所儲存的代表性指令所實施,該機器可讀取媒體表示該處理器內的各種邏輯,該代表性指令在被機器讀取時造成該機器製造邏輯以施行文中所述的技術。稱為「IP」核心的此種表示可被儲存於有形、機器可讀取媒體上及供應給各種客戶或製造設施以載入至實際做出該邏輯或處理器的製造機器中。
此種機器可讀取儲存媒體可包括但不限於由機器或裝置所製造或形成的非暫態、有形配置的物件,包括儲存媒體,諸如硬碟、包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、光碟可重寫(CD-RW)、及磁光碟的任何其他類型的磁碟、諸如唯讀記憶體(ROM)的半導體裝置、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁性或光學卡、或適於儲存電子指令的任何其他類型的媒體。
因此,本發明的實施例也包括含有指令或含有諸如硬體描述語言(HDL)的設計資料的非暫態、有形 機器可讀取媒體,其定義文中所述的結構、電路、設備、處理器及/或系統特徵。此種實施例也可被稱為程式產品。
仿真(包括二進制轉譯、碼變形等)
在一些情況中,指令轉換器可被用來從來源指令集轉換指令至目標指令集。例如,該指令轉換器可轉譯(例如,使用靜態二進制轉譯、包括動態編譯的動態二進制轉譯)、變形、仿真、或轉換指令至該核心所處理的一或更多其他指令。該指令轉換器可被實施於軟體、硬體、韌體、或其組合中。該指令轉換器可在處理器上、處理器外、或處理器部份上及部份外。
第18圖為對照使用軟體指令轉換器來轉換來源指令集中的二進制指令至目標指令集中的二進制指令之方塊圖,依據本發明的實施例。在所示實施例中,該指令轉換器為軟體指令轉換器,儘管替代地該指令轉換器可被實施於軟體、韌體、硬體、或其各種組合中。第18圖顯示高階語言1802中的程式可藉由使用x86編譯器1804加以編譯而產生x86二進制碼1806,其可由具有至少一個x86指令集核心的處理器1816加以本地執行。具有至少一個x86指令集核心的處理器1816表示可藉由下列來施行與具有至少一個x86指令集核心的英特爾處理器實質相同功能的任何處理器:相容地執行或處理(1)該英特爾x86指令集核心的指令集的實質部分或(2)目標為在具有至少一個x86指 令集核心的英特爾處理器上運作的應用程式或其他軟體的目標碼版本,以便達成與具有至少一個x86指令集核心的英特爾處理器實質相同的結果。該x86編譯器1804表示可操作以產生x86二進制碼1806(例如,目標碼)的編譯器,該x86二進制碼可在具有或沒有額外連接處理的情況下在具有至少一個x86指令集核心的處理器1816上被執行。類似地,第18圖顯示在該高階語言1802中的程式可藉由使用替代指令集編譯器1808加以編譯而產生替代指令集二進制碼1810,其可由沒有至少一個x86指令集核心的處理器1814(例如,具有執行加州桑尼維爾的MIPS科技公司的MIPS指令集及/或加州桑尼維爾的ARM控股的ARM指令集的核心的處理器)所本地執行。該指令轉換器1812被用來轉換該x86二進制碼1806成為可由沒有x86指令集核心的處理器1814所本地執行的碼。此轉換碼不太可能與該替代指令集二進制碼1810相同,因為能夠這樣的指令轉換器難以做出;然而,該轉換碼將完成一般操作且由來自該替代指令集的指令所組成。因此,該指令轉換器1812表示軟體、韌體、硬體、或其組合,其透過仿真、模擬或任何其他程序容許不具有x86指令集處理器或核心的處理器或其他電子裝置執行該x86二進制碼1806。
針對文中所揭示之處理器的任一者所述的組件、特徵、及細節可選用地適用於文中所揭示之方法的任一者,其在實施例中可選用地由及/或藉由此種處理器所施行。實施例中文中所述之處理器的任一者可選用地被包 括於文中所揭示之系統的任一者中。實施例中文中所述之指令的任一者可選用地由及/或藉由文中所揭示之處理器的任一者所施行,選用地在具有文中所示之微架構的任一者的一些實施例中,且選用地在文中所示之系統的任一者中包括的一些實施例中。因此,針對文中所揭示之指令的任一者所述的特徵及細節可在一些實施例中因此選用地適用於文中所揭示之處理器及/或系統的任一者,其可被用來施行那些指令。
文中所揭示的處理器組件可以說是可操作、配置、有能力、或能夠施行操作。例如,解碼器可解碼指令,執行單元可儲存結果等。為了清楚,將被理解的是,這些表達未暗示該處理器組件在操作或使用,但反而意指該處理器組件當它們在操作中時有能力或能夠做什麼,但在設備請求項中這些處理器組件未在操作中。
在說明及申請專利範圍中,術語「耦合」及/或「連接」以及它們的衍生詞可能已經被使用。這些術語未意圖為彼此的同義詞。反之,在實施例中,「連接」可被用來指出二或更多元件處於彼此直接實體及/或電接觸。「耦合」可意指二或更多元件處於彼此直接實體及/或電接觸。然而,「耦合」也可意指二或更多元件非處於彼此直接接觸,但仍彼此配合或互動。例如,執行單元可透過一或更多中介的組件耦合於暫存器及/或解碼單元。在圖中,箭號被用來顯示連接及耦合。
文中所揭示的組件及前面的圖中所描繪的方 法可能以包括硬體(例如,電晶體、閘極、電路等)、韌體(例如,儲存微碼或控制信號的非揮發性記憶體)、軟體(例如,儲存於非暫態電腦可讀取儲存媒體上)、或其組合的邏輯、模組、或單元加以實施。在一些實施例中,該邏輯、模組、或單元可包括潛在地與一些選用軟體結合的硬體及/或韌體的至少一些或主要混合。
術語「及/或」可能已經被使用。如文中所使用,術語「及/或」意指一者或另一者或兩者(例如,A及/或B意指A或B或A與B兩者)。
在以上的說明中,特定細節已經被陳述以便提供實施例的徹底理解。然而,其他實施例可在沒有這些特定細節的一些的情況下被實行。本發明的範圍不是由以上所提供的特定實例所決定,但僅由以下的申請專利範圍所決定。在其他例子中,熟知的電路、結構、裝置、及操作已經以方塊圖形式加以顯示及/或沒有細節以便避免模糊該說明的理解。在認為適當時,元件符號、或元件符號的終端部分已經在圖之間被重複以指出對應或類似的元件,其可選用地具有類似或相同特性,除非指明或清楚顯然另有所指。
某些操作可由硬體組件所施行,或可被體現於機器可執行或電路可執行指令中,其可被用來造成及/或導致以該指令所程式化的機器、電路、或硬體組件(例如,處理器、處理器的部分、電路等)施行該操作。該操作也可選用地由硬體及軟體的組合所施行。處理器、機 器、電路、或硬體可包括特別或特定電路或其他邏輯(例如,潛在地與韌體及/或軟體結合的硬體)可操作以執行及/或處理該指令及儲存回應於該指令的結果。
一些實施例包括製品(例如,電腦程式產品),其包括機器可讀取媒體。該媒體可包括以該機器可讀取的形式提供(例如儲存)資訊的機制。該機器可讀取媒體可提供或在其上已經儲存指令或指令序列,其若及/或當由機器執行時可操作以造成該機器施行及/或導致該機器施行文中所述的一或操作、方法、或技術。
在一些實施例中,該機器可讀取媒體可包括有形及/或非暫態機器可讀取儲存媒體。例如,該非暫態機器可讀取媒體可包括軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可程式化ROM(PROM)、可抹除及可程式化ROM(EPROM)、電氣可抹除及可程式化ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、非揮發性記憶體、非揮發性資料儲存裝置、非暫態記憶體、非暫態資料儲存裝置、或相似者。該非暫態機器可讀取儲存媒體不是由暫態傳播信號所組成。在一些實施例中,該儲存媒體可包括有形媒體,其包括固態物質或材料,諸如例如半導體材料、相變材料、磁性固體材料、固體資料儲存材料等。替代地,非有形暫態電腦可讀取傳輸媒體,諸如例如電、光、聲或其他 形式的傳播媒體-諸如載波、紅外線信號、及數位信號可選用地被使用。
合適機器的實例包括但不限於通用處理器、專用處理器、數位邏輯電路、積體電路、或相似者。合適機器的又其他實例包括電腦系統或其他電子裝置,其包括處理器、數位邏輯電路、或積體電路。此種電腦系統或電子裝置的實例包括但不限於桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、小筆電、智慧型手機、蜂巢式電話、伺服器、網路裝置(例如,路由器及切換器)、行動網際網路裝置(MID)、媒體播放器、智能電視、桌上型易網機(nettop)、機上盒、及電動遊戲控制器。
遍及此說明書對「一個實施例」、「實施例」、「一或更多實施例」、「一些實施例」、的提及例如指出特定特徵可被包括於本發明的實行中但非必然需要。類似地,在說明中,為了簡化該揭示及幫助理解各種發明性態樣,各種特徵有時被一起分組在其單一實施例、圖、或說明中。然而揭示的此方法不會被解釋成反映本發明需要比各個請求項中明確陳述者更多的特徵的意圖。反之,如下列的申請專利範圍反映,發明性態樣在於少於單一揭示實施例的所有特徵。因此,實施方式以後的申請專利範圍藉此明確併入至此實施方式中,而各個申請專利範圍本身作為本發明的個別實施例。
範例實施例
下列的實例有關於進一步的實施例。該實例中的細節可被使用於一或更多實施例中的任何地方。
實例1為一種處理器,包括:解碼單元,用以解碼孔徑存取指令;及耦合於該解碼單元的執行單元。該執行單元回應於該孔徑存取指令用以:自存取保護結構讀取主機實體記憶體位址,其被關聯於用以在系統記憶體中的孔徑;及存取該孔徑內的在主機實體記憶體位址處的資料,該主機實體記憶體位址並不是透過位址轉譯所獲得。
實例2包括實例1的處理器,選用地其中該孔徑是用以表示該系統記憶體的不能透過該位址轉譯存取的一部分。
實例3包括實例1的處理器,選用地其中該解碼單元是用以解碼將是孔徑寫入指令的該孔徑存取指令,選用地其中該孔徑寫入指令是用以指出來源運算元,且選用地其中該執行單元回應於該孔徑寫入指令而用以接收來自該來源運算元的資料、及用以將來自該來源運算元的該資料儲存至該孔徑內的該主機實體記憶體位址。
實例4包括實例3的處理器,選用地其中該來源運算元是用以在該系統記憶體中,且選用地其中該執行單元回應於該孔徑寫入指令而用以施行位址轉譯以獲得被用來接收來自該來源運算元的資料的主機實體記憶體位址。
實例5包括實例1的處理器,選用地其中該解碼單元是用以解碼將是孔徑讀取指令的該孔徑存取指令, 選用地其中該孔徑讀取指令是用以指出目的地運算元,且選用地其中該執行單元回應於該孔徑讀取指令而用以讀取來自該孔徑內的該主機實體記憶體位址的資料、及用以將從該孔徑所讀取的該資料儲存至該目的地運算元。
實例6包括實例1至5中任一者的處理器,選用地其中該執行單元回應於該孔徑存取指令而用以自該存取保護結構讀取該主機實體記憶體位址,該存取保護結構是用以包含虛擬機控制結構。
實例7包括實例1至5中任一者的處理器,選用地其中該解碼器是用以解碼至少一個從記憶體載入指令,該指令若被施行時則不容許自該存取保護結構讀取與該孔徑關聯的該主機實體記憶體位址。
實例8包括實例1至5中任一者的處理器,選用地其中該執行單元回應於該孔徑存取指令而用以自該存取保護結構讀取該主機實體記憶體位址,該孔徑存取指令是被儲存於該系統記憶體中,且選用地其中該解碼單元是用以解碼未指出用於該存取保護結構的任何架構可見記憶體位址資訊的該孔徑存取指令。
實例9包括實例1至5中任一者的處理器,選用地其中該解碼單元是用以解碼指出偏移的該孔徑存取指令,且選用地其中該執行單元回應於該孔徑存取指令而用以存取該孔徑內的在該主機實體記憶體位址處的資料,該主機實體記憶體位址與對應於該孔徑的基底的主機實體記憶體位址相差該偏移。
實例10包括實例1至5中任一者的處理器,選用地其中該執行單元回應於該孔徑存取指令而用以自該存取保護結構讀取該主機實體記憶體位址,其是用以表示用於包括複數個相鄰孔徑的一組孔徑的基底的主機實體記憶體位址。
實例11包括實例10的處理器,選用地其中該解碼單元是用以解碼指示孔徑選擇器選擇該複數個孔徑的一者的該孔徑存取指令。
實例12包括實例1至5中任一者的處理器,選用地其中該執行單元回應於該孔徑存取指令而用以自該存取保護結構讀取該主機實體記憶體位址,其是用以表示用於孔徑列表的基底的主機實體記憶體位址,且選用地其中該孔徑列表是用以儲存各用於複數個潛在不相鄰孔徑的不同者的基底的複數個主機實體記憶體位址。
實例13包括實例12的處理器,選用地其中該解碼單元是用以解碼指示孔徑選擇器選擇該複數個孔徑的一者的該孔徑存取指令。
實例14為一種由處理器所施行的方法,包括:在該處理器接收孔徑寫入指令,該孔徑寫入指令指出來源運算元;回應於該孔徑寫入指令,自存取保護結構讀取主機實體記憶體位址,其被關聯於在系統記憶體中的孔徑;及回應於該孔徑寫入指令,儲存從該孔徑內的該來源運算元所接收的該資料至不是透過位址轉譯所獲得的主機實體記憶體位址。
實例15包括實例14的方法,進一步包括:在該處理器接收孔徑讀取指令,該孔徑讀取指令指出目的地運算元;回應於該孔徑讀取指令,自該存取保護結構讀取該主機實體記憶體位址,其被關聯於在該系統記憶體中的該孔徑;回應於該孔徑讀取指令,讀取來自該孔徑內的在該主機實體記憶體位址處的資料,該主機實體記憶體位址並不是透過位址轉譯所獲得;及儲存從該孔徑所讀取的該資料至該目的地運算元。
實例16包括實例15的方法,進一步包括:從第一虛擬機發出該孔徑寫入指令、從第二虛擬機發出該孔徑讀取指令,且選用地其中該孔徑寫入指令及該孔徑讀取指令被用來在該第一虛擬機與該第二虛擬機之間共享該資料。
實例17包括實例14的方法,進一步包括:防止儲存有自該來源運算元接收的該資料的該主機實體記憶體位址可透過第二級階層式分頁結構到達。
實例18包括實例14的方法,由虛擬機所施行,且選用地其中該虛擬機被防止知道儲存有自該來源運算元接收的該資料的該主機實體記憶體位址。
實例19為一種包括非暫態機器可讀取儲存媒體的製品,該非暫態機器可讀取儲存媒體儲存指令,若所述指令被機器執行時是用以使該機器施行包括下列的操作:分配系統記憶體的一區給一孔徑;在存取保護結構中儲存與該孔徑關聯的主機實體記憶體位址;及使得該孔徑 的主機實體記憶體位址不能透過第二級階層式分頁結構存取。
實例20包括實例19的製品,選用地其中所述用以儲存該主機實體記憶體位址的指令進一步包含指令,若所述指令被該機器執行則用以使該機器施行包括下列的操作:儲存該主機實體記憶體位址於用以包含虛擬機控制結構的該存取保護結構中。
實例21包括實例19至20中任一者的製品,選用地其中所述用以儲存該主機實體記憶體位址的指令進一步包含指令,若所述指令被該機器執行則用以使該機器施行包括下列的操作:儲存該主機實體記憶體位址於用以對應於第一虛擬機的該存取保護結構中;及儲存該主機實體記憶體位址於用以對應於第二虛擬機的第二存取保護結構中。
實例22為一種用以處理指令的系統,包括:互連。該系統也包括被耦合於該互連的處理器,該處理器用以接收孔徑存取指令,該處理器回應於該孔徑存取指令用以:自存取保護結構讀取主機實體記憶體位址,其被關聯於用以在系統記憶體中的孔徑;及存取該孔徑內的在主機實體記憶體位址處的資料,該主機實體記憶體位址並不是透過位址轉譯所獲得;及耦合於該互連的動態隨機存取記憶體(DRAM)。
實例23包括實例22的系統,選用地其中該孔徑是用以表示該系統記憶體的不能透過該位址轉譯存取的 一部分。
實例24包括實例22至23中任一者的系統,選用地其中該孔徑存取指令將是孔徑寫入指令,選用地其中該孔徑寫入指令是用以指出來源運算元,且選用地其中該處理器回應於該孔徑寫入指令而用以接收來自該來源運算元的資料、及用以將來自該來源運算元的該資料儲存至該孔徑內的該主機實體記憶體位址。
實例25包括實例1至13中任一者的處理器,進一步包括:用以預測分支的選用分支預測單元;及耦合於該分支預測單元的選用指令預先提取單元,該指令預先提取單元用以預先提取包括該指令的指令。該處理器也可選用地包括:耦合於該指令預先提取單元的選用第1階(L1)指令快取,該L1指令快取用以儲存指令;選用L1資料快取,用以儲存資料;及選用第2階(L2)快取,用以儲存資料及指令。該處理器也可選用地包括被耦合於該解碼單元、該L1指令快取、及該L2快取的指令提取單元,用以在一些情況中從該L1指令快取及該L2快取之一者提取該指令,及用以提供該指令給該解碼單元。該處理器也可選用地包括:暫存器重新命名單元,用以重新命名暫存器;選用排程器,用以排程已經從用於執行的指令所解碼的一或更多操作;及選用提交單元,用以提交該指令的執行結果。
實例26包括一種系統晶片,其包括至少一個互連、耦合於該至少一個互連的實例1至3中任一者的處理 器、耦合於該至少一個互連的選用圖形處理單元(GPU)、耦合於該至少一個互連的選用數位信號處理器(DSP)、耦合於該至少一個互連的選用顯示控制器、耦合於該至少一個互連的選用記憶體控制器、耦合於該至少一個互連的選用無線數據機、耦合於該至少一個互連的選用影像信號處理器、耦合於該至少一個互連的選用通用序列匯流排(USB)3.0相容控制器、耦合於該至少一個互連的選用藍芽4.1相容控制器、及耦合於該至少一個互連的選用無線收發器控制器。
實例27為一種處理器或其他設備,可操作以施行實例14至18中任一者的方法。
實例28為一種處理器或其他設備,其包括用以施行實例14至18中任一者的方法的手段。
實例29為一種處理器或其他設備,其包括可操作以施行實例14至18中任一者的方法的模組及/或單元及/或邏輯及/或電路及/或手段之任意組合。
實例30為一種選用非暫態及/或有形機器可讀取媒體,其選用地儲存或提供包括第一指令的指令,該第一指令若及/或當被處理器、電腦系統、電子裝置、或其他機器執行時可操作以造成該機器施行實例14至18中任一者的方法。
實例31為一種處理器或其他設備,實質如文中所述。
實例32為一種處理器或其他設備,其可操作 以施行實質如文中所述的任何方法。
實例33為一種處理器或其他設備,其可操作以施行實質如文中所述的任何指令。
512‧‧‧處理器
518‧‧‧指出來源運算元的孔徑寫入指令
526‧‧‧記憶體
528‧‧‧存取保護結構
530‧‧‧與孔徑關聯的主機實體記憶體位址
532‧‧‧孔徑
534‧‧‧資料
568‧‧‧解碼單元
570‧‧‧執行單元
572‧‧‧來源運算元
574‧‧‧資料
576‧‧‧孔徑內的主機實體記憶體位址
578‧‧‧暫存器
580‧‧‧用於來源運算元的記憶體位址資訊

Claims (22)

  1. 一種處理器,包含:解碼單元,用以解碼孔徑存取指令;及耦合於該解碼單元的執行單元,該執行單元回應於該孔徑存取指令用以:自系統記憶體中將儲存有主機實體記憶體位址的存取保護結構中讀取將與在該系統記憶體中孔徑有關的該主機實體記憶體位址,其中該存取保護結構為虛擬機控制結構,其中該主機實體記憶體位址並未儲存在該處理器將用以將客端的虛擬位址轉譯為主機實體位址,甚至當該處理器現被組態以將該客端的虛擬位址轉譯為主機實體位址時的任一組階層式分頁結構中,其中該孔徑存取指令的運算碼允許該執行單元自該存取保護結構讀取該主機實體記憶體位址,及其中在該處理器的包含該孔徑存取指令的指令集中,多數記憶體存取指令的運算碼並未允許該處理器自該存取保護結構讀取該主機實體記憶體位址;及存取在主機實體記憶體位址的該孔徑內的資料。
  2. 如請求項1的處理器,其中該存取保護結構不是記憶體管理單元的一部分也不是轉譯後備緩衝區的一部分,及其中該孔徑是用以表示該系統記憶體的不能透過該位址轉譯存取的一部分。
  3. 如請求項1的處理器,其中該解碼單元是用以解碼將是孔徑寫入指令的該孔徑存取指令,其中該孔徑寫入指令是用以指出來源運算元,且其中該執行單元回應於該孔徑寫入指令而用以接收來自該來源運算元的資料、及用以將來自該來源運算元的該資料儲存至該孔徑內。
  4. 如請求項3的處理器,其中該存取保護結構不是位址轉譯邏輯的一部分,其中該來源運算元是用以在該系統記憶體中,且其中該執行單元回應於該孔徑寫入指令而用以施行位址轉譯以獲得被用來接收來自該來源運算元的資料。
  5. 如請求項1的處理器,其中該解碼單元是用以解碼將是孔徑讀取指令的該孔徑存取指令,其中該孔徑讀取指令是用以指出目的地運算元,且其中該執行單元回應於該孔徑讀取指令而用以讀取來自該孔徑的該資料、及用以將從該孔徑所讀取的該資料儲存至該目的地運算元。
  6. 如請求項1的處理器,其中該執行單元回應於該孔徑存取指令而用以自該存取保護結構讀取該主機實體記憶體位址。
  7. 如請求項1的處理器,其中該孔徑存取指令並沒有運算元,以提供記憶體位址。
  8. 如請求項1的處理器,其中該執行單元回應於該孔徑存取指令而用以自該存取保護結構讀取該主機實體記憶體位址,且其中該解碼單元是用以解碼未指出用於該存取保護結構的任何架構可見記憶體位址資訊的該孔徑存取指令。
  9. 如請求項1的處理器,其中該解碼單元是用以解碼指出偏移的該孔徑存取指令,且其中該執行單元回應於該孔徑存取指令而用以存取該孔徑內的在該主機實體記憶體位址處的資料,該主機實體記憶體位址與對應於該孔徑的基底的主機實體記憶體位址相差該偏移。
  10. 如請求項1的處理器,其中該執行單元回應於該孔徑存取指令而用以自該存取保護結構讀取該主機實體記憶體位址,其是用以表示用於包括複數個相鄰孔徑的一組孔徑的基底的主機實體記憶體位址。
  11. 如請求項10的處理器,其中該解碼單元是用以解碼指示孔徑選擇器選擇該複數個相鄰孔徑的一者的該孔徑存取指令。
  12. 如請求項1的處理器,其中該執行單元回應於該孔徑存取指令而用以自該存取保護結構讀取該主機實體記憶體 位址,其是用以表示用於孔徑列表的基底的主機實體記憶體位址,且其中該孔徑列表是用以儲存各用於複數個潛在不相鄰孔徑的不同者的基底的複數個主機實體記憶體位址。
  13. 如請求項12的處理器,其中該解碼單元是用以解碼指示孔徑選擇器選擇該複數個可能非相鄰孔徑的一者的該孔徑存取指令。
  14. 一種由處理器所施行的方法,包含:在該處理器接收孔徑寫入指令,該孔徑寫入指令為該處理器的指令集,具有運算碼並指出來源運算元;以該處理器的解碼單元,解碼該孔徑寫入指令的該運算碼;根據該孔徑寫入指令的該運算碼,決定允許該處理器,自儲存於系統記憶體中的存取保護結構讀取主機實體記憶體位址,其被關聯於在系統記憶體中的孔徑,其中該存取保護結構為用以儲存虛擬機的虛擬化控制的虛擬機控制資料結構;在執行該孔徑寫入指令的同時,自該存取保護結構讀取該主機實體記憶體位址,其中該主機實體記憶體位址並未儲存在該處理器正使用以將客端的虛擬位址轉譯為主機實體位址,甚至當該處理器現正使用階層式分頁結構以將客端的虛擬位址轉譯為該主機實體位址的任何一組階層式 分頁結構中;根據該處理器的包含該孔徑寫入指令的指令集的負載指令的運算碼,決定不允許該處理器由該存取保護結構讀取該主機實體記憶體位址,其中該存取保護結構不是記憶體管理單元的一部分也不是轉譯後備緩衝區的一部分;及儲存自該來源運算元接收的資料至主機實體記憶體位址。
  15. 如請求項14的方法,進一步包含:在該處理器接收孔徑讀取指令,該孔徑讀取指令指出目的地運算元;回應於該孔徑讀取指令,自該存取保護結構讀取該主機實體記憶體位址,其被關聯於在該系統記憶體中的該孔徑;回應於該孔徑讀取指令,讀取來自該孔徑內的在該主機實體記憶體位址處的資料,該主機實體記憶體位址並不是透過位址轉譯所獲得;及儲存從該孔徑所讀取的該資料至該目的地運算元。
  16. 如請求項15的方法,進一步包含從第一虛擬機發出該孔徑寫入指令、從第二虛擬機發出該孔徑讀取指令,且其中該孔徑寫入指令及該孔徑讀取指令被用來在該第一虛擬機與該第二虛擬機之間共享該資料。
  17. 如請求項14的方法,進一步包含防止儲存有自該來源運算元接收的該資料的該主機實體記憶體位址透過第二級階層式分頁結構取得。
  18. 如請求項14的方法,由虛擬機所施行,且其中該虛擬機被防止知道儲存有自該來源運算元接收的該資料的該主機實體記憶體位址。
  19. 如請求項14的方法,其中該孔徑寫入指令並不具有運算元,以提供記憶體位址。
  20. 一種包含非暫態機器可讀取儲存媒體的製品,該非暫態機器可讀取儲存媒體儲存指令,若該指令被機器執行時是用以使該機器施行包含下列的操作:分配系統記憶體的一區給一孔徑;在系統記憶體中的虛擬機控制資料結構的存取保護結構中儲存與該孔徑關聯的主機實體記憶體位址,該虛擬機控制資料結構係用以儲存虛擬化控制,以控制第一虛擬機,其中孔徑存取指令的運算碼允許該機器自該存取保護結構讀取該主機實體位址,但來自指令集的記憶體指令的給定負載的運算碼則不允許該機器由該存取保護結構讀取該主機實體位址,當虛擬至實體位址轉譯被使用時;使得包含主機實體記憶體位址的該孔徑的主機實體記憶體位址不能藉由將第二級階層式分頁結構省略該孔徑的 該主機實體記憶體位址,而透過該第二級階層式分頁結構存取;及使得在該孔徑內的主機實體記憶體位址可為第二虛擬機所用。
  21. 一種處理器,包含:解碼單元,用以解碼孔徑存取指令,其中該孔徑存取指令並未有運算元,以提供記憶體定址資訊;及耦合於該解碼單元的執行單元,該執行單元回應於該孔徑存取指令用以:自將儲存有主機實體記憶體位址的存取保護結構讀取該主機實體記憶體位址,該主機實體記憶體位址係予以將被儲存在系統記憶體中的孔徑相關,其中該主機實體記憶體位址並未儲存在該處理器將用以將客端的虛擬位址轉譯為主機實體的任一組階層式分頁結構中,其中該孔徑存取指令的運算碼允許該執行單元自該存取保護結構讀取該主機實體記憶體位址,及其中在該處理器的包含該孔徑存取指令的指令集中,多數記憶體存取指令的運算碼並未允許該處理器自該存取保護結構讀取該主機實體記憶體位址;及存取在主機實體記憶體位址的該孔徑內的資料。
  22. 如請求項21的處理器,其中該存取保護結構為在系統記憶體中的虛擬機控制結構。
TW106117239A 2016-07-01 2017-05-24 孔徑存取處理器、方法、系統及指令 TWI752031B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/200,725 2016-07-01
US15/200,725 US11442760B2 (en) 2016-07-01 2016-07-01 Aperture access processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
TW201810027A TW201810027A (zh) 2018-03-16
TWI752031B true TWI752031B (zh) 2022-01-11

Family

ID=60785266

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106117239A TWI752031B (zh) 2016-07-01 2017-05-24 孔徑存取處理器、方法、系統及指令

Country Status (5)

Country Link
US (2) US11442760B2 (zh)
CN (1) CN117130729A (zh)
DE (1) DE112017003332T5 (zh)
TW (1) TWI752031B (zh)
WO (1) WO2018004970A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10509729B2 (en) 2016-01-13 2019-12-17 Intel Corporation Address translation for scalable virtualization of input/output devices
US10228981B2 (en) 2017-05-02 2019-03-12 Intel Corporation High-performance input-output devices supporting scalable virtualization
CN110402568B (zh) 2018-02-24 2020-10-09 华为技术有限公司 一种通信的方法及装置
US10834004B2 (en) * 2018-09-24 2020-11-10 Netsia, Inc. Path determination method and system for delay-optimized service function chaining
CN111966306A (zh) * 2019-05-20 2020-11-20 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
WO2022133716A1 (en) * 2020-12-22 2022-06-30 Intel Corporation Processor circuitry to execute an input-output translate virtual address instruction

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040177261A1 (en) * 2002-11-18 2004-09-09 Watt Simon Charles Control of access to a memory by a device
US20050114855A1 (en) * 2003-11-25 2005-05-26 Baumberger Daniel P. Virtual direct memory acces crossover
US20050223225A1 (en) * 2004-03-31 2005-10-06 Campbell Randolph L Switching between protected mode environments utilizing virtual machine functionality
US7506096B1 (en) * 2005-10-06 2009-03-17 Parallels Software International, Inc. Memory segment emulation model for virtual machine
US20130103923A1 (en) * 2011-10-20 2013-04-25 Jesse Pan Memory management unit speculative hardware table walk scheme
US20130111195A1 (en) * 2011-10-31 2013-05-02 Peter J. Wilson Data processing system with safe call and return
TW201510722A (zh) * 2009-09-03 2015-03-16 Pioneer Chip Technology Ltd 以頁面為基礎管理快閃儲存裝置
TW201525690A (zh) * 2013-12-27 2015-07-01 Intel Corp 用以改變安全獨立領域的頁面之位址的處理器、方法、系統及指令

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987557A (en) * 1997-06-19 1999-11-16 Sun Microsystems, Inc. Method and apparatus for implementing hardware protection domains in a system with no memory management unit (MMU)
US6192455B1 (en) * 1998-03-30 2001-02-20 Intel Corporation Apparatus and method for preventing access to SMRAM space through AGP addressing
US7424709B2 (en) 2003-09-15 2008-09-09 Intel Corporation Use of multiple virtual machine monitors to handle privileged events
US8327353B2 (en) 2005-08-30 2012-12-04 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism
US7461210B1 (en) * 2006-04-14 2008-12-02 Tilera Corporation Managing set associative cache memory according to entry type
US8347064B1 (en) * 2006-09-19 2013-01-01 Nvidia Corporation Memory access techniques in an aperture mapped memory space
US8239657B2 (en) 2007-02-07 2012-08-07 Qualcomm Incorporated Address translation method and apparatus
US8661181B2 (en) * 2007-06-28 2014-02-25 Memory Technologies Llc Memory protection unit in a virtual processing environment
US8650337B2 (en) * 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US20120047313A1 (en) * 2010-08-19 2012-02-23 Microsoft Corporation Hierarchical memory management in virtualized systems for non-volatile memory models
US9804870B2 (en) 2011-10-28 2017-10-31 Intel Corporation Instruction-set support for invocation of VMM-configured services without VMM intervention
US9223602B2 (en) 2012-12-28 2015-12-29 Intel Corporation Processors, methods, and systems to enforce blacklisted paging structure indication values
US20160232103A1 (en) 2013-09-26 2016-08-11 Mark A. Schmisseur Block storage apertures to persistent memory
US9824021B2 (en) * 2014-03-31 2017-11-21 International Business Machines Corporation Address translation structures to provide separate translations for instruction fetches and data accesses
US9454497B2 (en) 2014-08-15 2016-09-27 Intel Corporation Technologies for secure inter-virtual-machine shared memory communication
US10157146B2 (en) * 2015-02-12 2018-12-18 Red Hat Israel, Ltd. Local access DMA with shared memory pool
US10114958B2 (en) * 2015-06-16 2018-10-30 Microsoft Technology Licensing, Llc Protected regions

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040177261A1 (en) * 2002-11-18 2004-09-09 Watt Simon Charles Control of access to a memory by a device
US20050114855A1 (en) * 2003-11-25 2005-05-26 Baumberger Daniel P. Virtual direct memory acces crossover
US20050223225A1 (en) * 2004-03-31 2005-10-06 Campbell Randolph L Switching between protected mode environments utilizing virtual machine functionality
US7506096B1 (en) * 2005-10-06 2009-03-17 Parallels Software International, Inc. Memory segment emulation model for virtual machine
TW201510722A (zh) * 2009-09-03 2015-03-16 Pioneer Chip Technology Ltd 以頁面為基礎管理快閃儲存裝置
US20130103923A1 (en) * 2011-10-20 2013-04-25 Jesse Pan Memory management unit speculative hardware table walk scheme
US20130111195A1 (en) * 2011-10-31 2013-05-02 Peter J. Wilson Data processing system with safe call and return
TW201525690A (zh) * 2013-12-27 2015-07-01 Intel Corp 用以改變安全獨立領域的頁面之位址的處理器、方法、系統及指令

Also Published As

Publication number Publication date
CN109416640A (zh) 2019-03-01
CN117130729A (zh) 2023-11-28
US20230109637A1 (en) 2023-04-06
DE112017003332T5 (de) 2019-03-14
US20180004562A1 (en) 2018-01-04
US11442760B2 (en) 2022-09-13
TW201810027A (zh) 2018-03-16
WO2018004970A1 (en) 2018-01-04

Similar Documents

Publication Publication Date Title
US11782849B2 (en) Processors, methods, systems, and instructions to support live migration of protected containers
TWI752031B (zh) 孔徑存取處理器、方法、系統及指令
JP6225395B2 (ja) セキュアなメモリの再パーティショニング
US10048881B2 (en) Restricted address translation to protect against device-TLB vulnerabilities
JP6124463B2 (ja) 一方のアーキテクチャのコードモジュールが他方のアーキテクチャのライブラリモジュールを用いることを可能にするインターアーキテクチャ互換性モジュール
EP3757859A2 (en) Host-convertible secure enclaves in memory that leverage multi-key total memory encryption with integrity
TW201729136A (zh) 安全區之平台遷移
CN112148425A (zh) 信任域架构内的信任域内部的可缩放虚拟机操作
TW201342064A (zh) 用於資料讀取/寫入延伸分頁表違反之處理的決策動作決定技術
US20200201787A1 (en) Scalable multi-key total memory encryption engine
US20210397721A1 (en) Secure encryption key management in trust domains
US20190095357A1 (en) Hardware support for static mode of protected memory management on flexibly-convertible enclave platform
US10223149B2 (en) Implementing device models for virtual machines with reconfigurable hardware
WO2018063719A1 (en) Supporting oversubscription of guest enclave memory pages
CN109416640B (zh) 孔径访问处理器、方法、系统和指令
US20220100871A1 (en) Scalable multi-key memory encryption
CN117931376A (zh) 信任域架构内的信任域内部的可缩放虚拟机操作