TW202326394A - 用於針對信賴域實行輸入/輸出延伸之電路系統及方法 - Google Patents

用於針對信賴域實行輸入/輸出延伸之電路系統及方法 Download PDF

Info

Publication number
TW202326394A
TW202326394A TW111138669A TW111138669A TW202326394A TW 202326394 A TW202326394 A TW 202326394A TW 111138669 A TW111138669 A TW 111138669A TW 111138669 A TW111138669 A TW 111138669A TW 202326394 A TW202326394 A TW 202326394A
Authority
TW
Taiwan
Prior art keywords
iommu
field
memory
trust domain
trust
Prior art date
Application number
TW111138669A
Other languages
English (en)
Inventor
阿布希雪克 巴薩克
維亞斯 珊布赫古
拉傑許 桑卡蘭
魯平 瓦哈瓦拉
烏特卡什 Y 卡凱亞
艾瑞克 蓋斯勒
拉維 夏西塔
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 TW202326394A publication Critical patent/TW202326394A/zh

Links

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/1009Address translation using page tables, e.g. page table structures
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8061Details on data memory access
    • G06F15/8069Details on data memory access using a cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

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

Abstract

說明針對信賴域用於實施輸入/輸出延伸之系統、方法及設備。在一範例中,一硬體處理器包括一硬體處理器核心,其包含一信賴域管理器,用以管理一或多個硬體隔離式虛擬機,作為帶有一受保護記憶體區域之一相應信賴域,以及輸入/輸出記憶體管理單元(IOMMU)電路系統,其係耦接於該硬體處理器核心與一輸入/輸出裝置之間,其中該IOMMU電路系統係用來為針對一信賴域之一受保護記憶體之一直接記憶體存取來自該輸入/輸出裝置之一請求,回應於該請求中之一欄位而允許該直接記憶體存取,該欄位係設定為指出該輸入/輸出裝置位在該信賴域之一可信賴運算庫中。

Description

用於針對信賴域實行輸入/輸出延伸之電路系統及方法
本揭露大致係有關於電子器件,並且更具體而言,本揭露之範例係有關於針對信賴域用於實施輸入/輸出延伸之電路系統。
一處理器或一處理器集合執行來自一指令集之指令,例如指令集架構(ISA)。該指令集係電腦架構有關於程式規劃之部分,並且大致包括原生資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷與例外處置、以及外部輸入與輸出(IO)。應知,指令一詞在本文中可意指為一巨集指令,例如,提供給處理器以供執行之一指令,或意指為一微指令,例如,從一處理器之解碼巨集指令之解碼器產生之一指令。
依據本發明之一實施例,係特地提出一種設備,其包含:一硬體處理器核心,其包含一信賴域管理器,用以管理一或多個硬體隔離式虛擬機作為具有一受保護記憶體區域之一相應信賴域;以及輸入/輸出記憶體管理單元(IOMMU)電路系統,其耦接於該硬體處理器核心與一輸入/輸出裝置之間,其中該IOMMU電路系統係用以針對來自該輸入/輸出裝置的用於一信賴域之一受保護記憶體的一直接記憶體存取之一請求,回應於該請求中之一欄位而允許該直接記憶體存取,該欄位係設定以指出該輸入/輸出裝置位在該信賴域之一可信賴運算庫中。
在以下說明中,提出許多特定細節。然而,據瞭解,不用這些特定細節也可實踐本揭露之範例。在其他實例中,為了不要混淆對於本說明的理解,尚未詳細展示眾所周知的電路、結構與技巧。
參考說明書中之「一個範例」、「一範例」、「範例」等,指示了所描述之範例可包括一特定特徵、結構或特性,但每一範例可能未必包括該特定特徵、結構或特性。此外,此等用語未必係參照至相同範例。另外,當與一範例相關之一特定特徵、結構或特性被描述時,要主張的是,無論是否明確地描述,去對與其他範例相關之此等特徵、結構或特性作改變時都是在熟於此技者之知識範圍內。
一(例如:硬體)處理器(例如,具有一或多個核心)可執行指令(例如:指令之一執行緒)以對資料進行操作,舉例而言,用以進行算術、邏輯、或其他功能。舉例而言,軟體可請求一操作,並且一硬體處理器(例如,其一核心或諸核心)可回應於該請求而進行該操作。某些操作包括存取一或多個記憶體位置,舉例而言,用以儲存及/或讀取(例如,載入)資料。一系統可包括複數個核心,舉例而言,在例如一系統單晶片(SoC)之複數個插槽之各插槽中帶有適當之一核心子集。各核心(例如:各處理器或各插槽)可存取資料儲存器(例如:一記憶體)。記憶體可包括依電性記憶體(例如:動態隨機存取記憶體(DRAM))或(例如:位元組可定址)永續(例如,非依電性)記憶體(例如:非依電性RAM)(例如,與任何系統儲存器分離,諸如、但不限於與一硬碟機分離)。永續記憶體之一範例係一雙直列記憶體模組(DIMM)(例如:一非依電性DIMM)(例如:一Intel® Optane TM記憶體),舉例而言,可根據一快速週邊組件互連(PCIe)標準進行存取。
在某些運算範例中,一虛擬機(VM)(例如:訪客)係一電腦系統之一仿真。在某些範例中,VM係基於一特定電腦架構,並且提供一底層實體電腦系統之功能。其實作態樣可涉及專業硬體、韌體、軟體、或一組合。在某些範例中,一虛擬機監測器(VMM)(亦稱為一超管理器)係一軟體程式,其在受執行時,能夠建立、管理、及治理VM執行個體,並且在一實體主機頂端管理一虛擬化環境之操作。在某些範例中,一VMM係虛擬化環境及實作態樣背後之主要軟體。在某些範例中,當安裝在一主機(例如:處理器)上時,一VMM有助於建立VM,舉例而言,各帶有單獨作業系統(OS)及應用程式。VMM可藉由分配必要之運算、記憶體、儲存、及其他輸入/輸出(IO)資源,諸如、但不限於一輸入/輸出記憶體管理單元(IOMMU)(例如:一IOMMU電路),來管理這些VM之後端操作。VMM可提供一集中式介面,用於管理安裝在一單一主機上或跨越在不同且互連主機散布之VM之整個操作、狀態、及可用性。
然而,可期望為來自VMM之一虛擬機、及/或其他虛擬機維護資訊之安全性(例如:機密性)。某些處理器(例如:包括一處理器之一系統單晶片(SoC))將其硬體用於隔離諸虛擬機,舉例而言,各稱為一「信賴域」。某些處理器支援一指令集架構(ISA)(例如:ISA延伸)以實施信賴域。舉例而言,Intel®信賴域延伸(Intel® TDX)將架構性元素用於部署稱為信賴域(TD)之硬體隔離式虛擬機(VM)。
在某些範例中,一硬體處理器及其ISA(例如:其一信賴域管理器)將TD VM與VMM(例如:超管理器)及/或其他非TD軟體(例如,位在主機平台上)隔離。在某些範例中,一硬體處理器及其ISA(例如:其一信賴域管理器)實施信賴域,用以藉由幫助保護信賴域免受廣大範圍之軟體攻擊,並減少信賴域之可信賴運算庫(TCB),來增強機密運算。在某些範例中,一硬體處理器及其ISA(例如:其一信賴域管理器)增強一雲端租戶對資料安全性及保護之控制。在某些範例中,一硬體處理器及其ISA(例如:其一信賴域管理器)實施信賴域(例如:可信賴虛擬機),用以增強一雲端服務提供者(CSP)提供受管理雲端服務之能力,而不會向敵手曝露租戶資料。
在某些範例中,一硬體處理器及其ISA(例如:其一信賴域管理器)亦支援裝置輸入/輸出(IO)。舉例而言,以一ISA(例如:Intel® TDX 2.0)支援帶有裝置輸入/輸出(IO)(例如:TDX-IO)之信賴域延伸(TDX)。在某些範例中,支援裝置輸入/輸出(IO)(例如:TDX-IO)之一硬體處理器及其ISA(例如:其一信賴域管理器)致使能夠將一裝置之一實體功能(PF)及/或一虛擬功能(VF)用於(例如,指派給)(例如,僅)一特定TD。
某些信賴域(TD)係用於託管與託管環境隔離之機密運算工作負載。某些信賴域技術(例如:TDX 1.0)架構能夠將TD(例如:中央處理單元(CPU))脈絡及記憶體與託管環境隔離,但不支援可信賴IO(例如:直接記憶體存取(DMA)或記憶體映射I/O(MMIO))連至TD私用記憶體,舉例而言,導致更高之額外負荷,因為信賴域係用以將一軟體機制用於保護發送至IO裝置(例如:儲存器、網路等)之資料,舉例而言,其中所有IO資料係使用半虛擬化介面透過TD共享記憶體中之彈跳緩衝區發送。然而,在某些範例中,這排除了一些IO模型之使用,諸如、但不限於可縮放IO虛擬化(IOV)、共享虛擬記憶體、直接IO指派、以及運算卸載至一加速器、可現場規劃閘陣列(FPGA)、及/或圖形處理單元(GPU)。因此,從一IO之觀點,某些信賴域技術(例如:TDX 1.0)受到以下限制:1)功能(例如:安全性),因為只能為具有端對端加密能力之裝置(例如:以硬體(H/W)或軟體(S/W)堆疊為基礎)延伸保護,並且不支援現代化IO虛擬化/程式規劃模型,以及2)效能,因為複製彈跳緩衝區(及基於軟體之加密)會引起顯著之效能額外負荷,尤其是隨著IO裝置(例如:加速器)之速度/頻寬增加而顯著。
某些信賴域技術(例如:帶有裝置輸入/輸出(IO)(例如:TDX-IO)之信賴域延伸(TDX))定義硬體、韌體、及/或軟體延伸,以在TD與對應IO (例如:TDX-IO)之間實現直接且可信賴IO,並從而克服以上限制。在某些範例中,一系統單晶片(SoC)上之一IOMMU(例如:其一VT-d引擎)係在這些裝置(例如,位在TD之可信賴運算庫(TCB)中)與一或多個TD之私用記憶體之間實現可信賴直接記憶體存取(可信賴DMA)之關鍵硬體,並且克服以上限制。
本文中之某些範例係針對用於實現TDX-IO之VT-d/IOMMU延伸。本文中之某些範例係針對一處理器及/或其ISA之TDX-IO IOMMU(例如:用於定向I/O(VT-d)之虛擬化技術)延伸。本文中之某些範例延伸一IOMMU(例如:電路系統),其帶有(i)受啟動器(SAI)保護型(例如,僅對可信賴韌體或TDX模組及/或SEAM控制存取)架構性暫存器集之新安全性屬性,(ii)用於實現從TD之TCB中之裝置(例如:一受TD指派之裝置)至TD私用記憶體之可信賴DMA步行的可信賴根表格指標、用於實現可信賴無效之一可信賴無效佇列(例如,及其基址、頭端、及尾端用之暫存器)、及從而安全頁面及/或IO資源重新指派,及/或(iii)用於安全地使IOMMU進入及離開信賴域(例如:tdx_mode)操作之一控制(例如:TDX_MODE)暫存器。在某些範例中,一記憶體存取請求(例如,由一IO裝置向一信賴域之一私用記憶體提出之一請求)中之一位元(一傳入快速週邊組件互連(PCIe)標準之完整性及資料加密(IDE)交易層封包(TLP)前置碼中之一可信賴「ide_t」位元)(i)表明一DMA請求(例如:異動)是否源自一可信賴IO脈絡,及/或(ii)係用於在步行不可信賴(例如:VMM)維護(例如,VT-d)轉譯表(例如,來自根指標)、或可信賴(例如:TDM)(例如:TDX模組)維護(例如:VT-d)轉譯表(例如,來自可信賴根指標)之間進行選擇。在某些範例中,一轉譯表包括一虛擬位址對一實體位址之一映射。
在某些範例中,不信賴一VMM針對一信賴域或複數個信賴域存取「可信賴」轉譯表(例如,不信賴一(例如:訪客)信賴域(例如:實體)位址對一主機(例如:實體)位址之映射),並且一信賴域管理器係用來改為針對該信賴域或該複個信賴域管理該等轉譯表。在某些範例中,一IOMMU係用來限制對「可信賴」轉譯表之存取,舉例而言,用來確保僅允許一IO裝置之可信賴存取,例如,用來確保IO裝置位在該信賴域(或該複數個信賴域)之可信賴運算庫中。
在某些範例中,一IOMMU包括用以進一步行等之一轉譯後備緩衝器(IOTLB)。在某些範例中,一IOTLB及/或相應IOMMU(例如:無效)快取記憶體係經加標以區隔可信賴與不可信賴(例如:VT-d)映射。在某些範例中,對於對記憶體之不同異動(例如,源自I/O裝置或IOMMU本身),IOMMU產生用於選擇性地允許定址至TD私用記憶體之一命令,舉例而言,其中這會捕獲來自不可信賴VMM/作業系統(OS)VT-d表格/IOMMU程式規劃及/或惡意裝置之各種安全性威脅。
在某些範例中,IOMMU增強實現TDX-IO,且因此改善一SoC (例如,一電腦之)(例如:處理器)本身之功能,因為該等IOMMU增強允許在雲端空間中進行機密運算(舉例而言,(例如,所有)直接、效能性IO模型也受支援),尤其伴隨雲端中憑藉加速器及IO裝置進行異質性運算之興起。
在某些範例中,IOMMU增強包括下列一或多者:對應IOMMU中之一存取控制暫存器集、兩個(例如,「可信賴」及「不可信賴」)根指標、兩個(例如,「可信賴」及「不可信賴」)無效佇列、IOMMU快取記憶體(例如:轉譯表快取記憶體)中之「可信賴」標籤、及/或可信賴/不可信賴DMA步行之新故障。在某些範例中,這些係架構性變更,而且亦在一對應IOMMU規範中文件化。在某些範例中,這些架構性變更可藉由監測可信賴異動至及/或自系統記憶體之一DMA路徑來查看。
應瞭解的是,本文中之功能可新增至其他機密運算技術作為IO裝置用之一運算解決方案,例如,新增至AMD®安全加密虛擬化(例如:SEV/SEV-ES/SEV-SNP)或ARM® Realm管理延伸(RME)。
現請參照圖1,繪示一範例系統架構。 1根據本揭露之範例,繪示一電腦系統100的一方塊圖,其包括具有一信賴域管理器101-0至101-N之102-0至102-N(例如,其中N係大於一之任何正整數,但亦可利用單核心範例)、一記憶體108(例如,與一處理器及/或核心記憶體分離之一系統記憶體)、一輸入/輸出記憶體管理單元(IOMMU) 120(例如:電路)、以及輸入/輸出(IO)裝置106。
在某些範例中,各核心包括(例如,或邏輯包括)例如用於核心102-0之暫存器103-0、用於核心102-N之暫存器103-N等之一暫存器集合。暫存器103可以是例如用於各核心(例如,或一實體核心之複數個邏輯核心之各邏輯核心)之資料暫存器及/或控制暫存器。
在某些範例中,IO裝置106包括一或多個加速器(例如:加速器電路106-0至106-N(舉例而言,其中N係大於一之任何正整數,但亦可利用單加速器電路範例))。
雖然裝置106之圖1中所示之範例係一加速器,應瞭解的是,仍可在本文中所揭示之範例中利用其他裝置(例如:非加速器裝置)。在所示範例中,一(例如,各)加速器電路106-0至106-N包括用以進行解壓縮操作之一解壓縮器電路124、用以進行壓縮操作之一壓縮器電路128、以及例如用以連接至記憶體108及/或一核心之內部記憶體(例如:快取記憶體)的一直接記憶體存取(DMA)電路122。在一範例中,壓縮器電路128(例如,動態地)由加速器電路106-0至106-N中之二或更多者共享。在某些範例中,指派給一特定加速器電路(例如:加速器電路106-0)之一工作用之資料係藉由DMA電路122串流輸入,舉例而言,作為初級及/或次級輸入。多工器126及132可用於為特定操作路由安排資料。任選地,可包括一(例如:結構化查詢語言(SQL))篩選引擎130,舉例而言,用以對輸入資料,例如對輸出自解壓縮器電路124之經解壓縮資料,進行一篩選查詢(例如,針對次級資料輸入上之一搜尋項輸入進行)。裝置106可包括例如由複數個加速器電路106-0至106-N共享之一區域記憶體134。電腦系統100可耦接至一硬碟機,例如圖30中之儲存單元3028。
記憶體108可包括作業系統(OS)及/或虛擬機監測器程式碼110、使用者代碼(例如:程式碼)112、非信賴域記憶體114(例如:頁面)、信賴域記憶體116(例如:頁面)、未壓縮資料(例如:頁面)、經壓縮資料(例如:頁面)、或以上的任何組合。在某些運算範例中,一虛擬機(VM)係一電腦系統之一仿真。在某些範例中,VM係基於一特定電腦架構,並且提供一底層實體電腦系統之功能。其實作態樣可涉及專業硬體、韌體、軟體、或一組合。在某些範例中,虛擬機監測器(VMM)(亦稱為一超管理器)係一軟體程式,其在受執行時,能夠建立、管理、及治理VM執行個體,並且在一實體主機頂端管理一虛擬化環境之操作。在某些範例中,一VMM係虛擬化環境及實作態樣背後之主要軟體。在某些範例中,當安裝在一主機(例如:處理器)上時,一VMM有助於建立VM,舉例而言,各帶有單獨作業系統(OS)及應用程式。VMM可藉由分配必要之運算、記憶體、儲存、及其他輸入/輸出(IO)資源,諸如、但不限於一輸入/輸出記憶體管理單元(IOMMU),來管理這些VM之後端操作。VMM可提供一集中式介面,用於管理安裝在一單一主機上或跨越在不同且互連主機散布之VM之整個操作、狀態、及可用性。
記憶體108可以是與一核心及/或裝置106分離之記憶體。記憶體108可以是DRAM。經壓縮資料可儲存在一第一記憶體裝置(例如:遠記憶體)中,及/或未壓縮資料可儲存在一單獨、第二記憶體裝置(舉例如近記憶體)中。
可包括一耦接(例如,輸入/輸出(IO)組織架構介面104)以允許裝置106、核心102-0至102-N、記憶體108等之間的通訊。
在某些範例中,硬體初始化管理器(非暫時性)儲存器118儲存硬體初始化管理器韌體(例如,或軟體)。在一範例中,硬體初始化管理器(非暫時性)儲存器118儲存基本輸入/輸出系統(BIOS)韌體。在另一範例中,硬體初始化管理器(非暫時性)儲存器118儲存統一可延伸韌體介面(UEFI)韌體。在某些範例中(例如,藉由一處理器之電力開啟或重新開機觸發),電腦系統100(例如:核心102-0)執行儲存在硬體初始化管理器(非暫時性)儲存器118中之一硬體初始化管理器韌體(例如,或軟體),用來初始化系統100以供操作,舉例而言,用來開始執行一作業系統(OS)及/或初始化並測試系統100之(例如,硬體)組件。
在某些範例中,電腦系統100包括一輸入/輸出記憶體管理單元(IOMMU) 120(例如:電腦系統),其舉例而言,係耦接於一或多個核102-0至102-N與IO組織架構介面104之間。在某些範例中,IO組織架構介面係一快速週邊組件介面(PCIe)介面或一運算快速鏈路(CXL)介面。在某些範例中,IOMMU120提供位址轉譯,例如,從一虛擬位址轉譯至一實體位址。在某些範例中,IOMMU 120包括一或多個暫存器121,例如,資料暫存器及/或控制暫存器(例如:參照圖3A~10所論述之暫存器)。下面論述某些暫存器之範例格式。
一裝置106可包括所示組件中之任何一者。以一加速器電路106-0至106-N之一或多個實例為例。在某些範例中,一工作(例如,彼該工作之對應描述符)係提交至裝置106,並且該裝置進行一或多個(例如,解壓縮或壓縮)操作。在某些範例中,裝置106包括一區域記憶體134。在某些範例中,裝置106係一有TEE IO能力之裝置,舉例而言,且主機(例如:包括核心102-0至102-N中之一或多者的處理器)係一有TEE能力之主機。在某些範例中,一有TEE能力之主機實施一TEE安全性管理器。
在某些範例中,一可信賴執行環境(TEE)安全性管理器(例如,由一信賴域管理器101所實施)係用來:向VMM提供介面以將記憶體、處理器、及其他資源指派給信賴域(例如:可信賴虛擬機),(ii)實施安全性機制及存取控制(例如:IOMMU轉譯表等),用以保護主機中之信賴域(例如:可信賴虛擬機)資料及執行狀態之機密性及完整性,免受不在信賴域(例如:可信賴虛擬機)之可信賴運算庫中之實體影響,(iii)將一協定用於管理要由信賴域(例如:可信賴虛擬機)使用之可信賴裝置介面(TDI)之安全性狀態,(iv)為主機建立/管理IDE加密金鑰,並在需要時排程金鑰重新整理。TSM將IDE加密金鑰程式規劃到主機根埠並與DSM通訊,用來組配裝置中之完整性及資料加密(IDE)加密金鑰,(v)或以上的任何單一者或組合。
在某些範例中,一裝置安全性管理器(DSM) 136係用來(i)支援裝置身份及測量報告之認證,(ii)在裝置中組配IDE加密金鑰(例如,其中TSM向DSM提供用於初始組態及隨後金鑰重新整理之金鑰),(iii)為向信賴域(例如:可信賴虛擬機)鎖定TDI組態、報告TDI組態、附接、及拆離TDI提供裝置介面管理,(iv)實施存取控制及安全性機制以隔離信賴域(例如:可信賴虛擬機)提供之資料與不在一信賴域(例如:可信賴虛擬機)之TCB中之實體,(v)或以上的任何單一者或組合。
在某些範例中,一標準定義一虛擬機監測器(VMM)(例如,或其VM)、TSM(例如:信賴域管理器101)、以及裝置安全性管理器(DSM) 136互動流程。
在某些範例中,IOMMU 120及信賴域管理器101相配合以允許(例如,直接)(例如,至及/或自) IO裝置106與信賴域記憶體116(例如,僅一單一信賴域用之一區域及/或由複數個信賴域共享之另一區域)之間的直接記憶體存取。
為了在一裝置與一TD之間建立信賴關係,某些TDX-IO架構需要TD及/或一信賴域管理器(例如:電路及/或程式碼)(例如:可信賴執行環境(TEE)安全性管理器(TSM)),用以在該裝置與該信賴域管理器之間建立一安全通訊會話(舉例而言,使該信賴域管理器允許一特定信賴域使用該裝置或該裝置之一功能子集)。為了在一裝置與一TD之間建立信賴關係,某些TDX-IO架構需要該TD及/或一信賴域管理器(例如:電路及/或程式碼)(例如:可信賴執行環境(TEE)安全性管理器(TSM))使用(i)一分散式管理任務編組(DMTF)安全協定及資料模型(SPDM)標準來認證該裝置(例如,並收集裝置測量),以及(ii)使用一週邊組件互連特殊興趣組(PCI-SIG)可信賴裝置介面安全性協定(TDISP)標準(例如,用來與一裝置安全性管理器(DSM)通訊以管理裝置之功能)。
在某些範例中,一SPDM傳訊協定定義兩個端點之間的一請求–回應訊息傳訊模型,用以進行在SPDM訊息交換中略述之訊息交換,舉例而言,其中各SPDM請求訊息應以一SPDM回應訊息予以回應,如SPDM規範中所定義。在某些範例中,一端點(例如:裝置)之「測量」說明計算一段韌體/軟體或組態資料之密碼編譯雜湊值,並且透過使用數位簽章將密碼編譯雜湊值與端點身份繫結之過程。這允許一身份認證初始器確立在端點上運行之韌體/軟體或組態之身份及測量。
在某些範例中,為了幫助強制執行用於TD之安全性策略,引進一處理器之一新模式,稱為安全仲裁模式(SEAM),以託管(例如,製造商提供之)經數位簽署、但未加密之安全性服務模組。在某些範例中,在由一SEAM範圍暫存器(SEAMRR)識別之一保留、記憶體空間中託管一信賴域管理器(TDM) 101。在某些範例中,處理器僅允許存取SEAM–記憶體範圍以在該SEAM–記憶體範圍裡面進行軟體執行,並且中止從裝置至此記憶體範圍之所有其他軟體存取及直接記憶體存取(DMA)。在某些範例中,一SEAM模組對平台中之其他受保護、記憶體區域沒有任何記憶體存取特權,包括系統管理模式(SMM)記憶體或(例如:Intel®軟體防護延伸(SGX))受保護記憶體。
圖2根據本揭露之範例(例如,形成一系統200),繪示耦接至一IO裝置106(例如:有TDX-IO能力之裝置)之一主機202(例如:圖1中之一或多個處理器核心102)的一方塊圖。在某些範例中,主機202實施信賴域之TDX-IO佈建代理器(TPA) 204、以及示為信賴域「1」206-1及信賴域「2」206-2之複數個信賴域,但可實施任何單一或複數個信賴域。在某些範例中,主機202包括一信賴域管理器101以管理信賴域(例如,以垂直虛線指出信賴域與其之間的隔離,例如,與主機OS 110A、VMM 110B、及BIOS等118之間的隔離)。在某些範例中,虛擬機監測器110B管理(例如,產生)一或多個虛擬機,例如,以信賴域管理器101將作為一第一信賴域之一第一虛擬機與一第二(或更多)虛擬機及第二(或更多)信賴域隔離。在某些範例中,主機202包括一(例如:PCIe)根埠208,其具有一金鑰(象徵性地示出)以允許與IO裝置106,例如與(例如:PCIe)其端點210之安全通訊(例如,亦具有該金鑰(象徵性地示出))。在某些範例中,信賴域管理器101及裝置安全性管理器136亦用來具有例如分別代表一記憶體保護金鑰及一安全會話金鑰之一金鑰。
在某些範例中,主機202係經由一耦接104來耦接至裝置216,例如,經由一受安全保護鏈路104A(例如:根據一PCIe/運算快速鏈路(CXL)標準之一鏈路)來耦接。
在某些範例中,主機202係根據一輸送層級(例如:SPDM)規範及/或一應用層級(例如:TDISP)規範耦接至裝置216。在某些範例中,裝置106包括一裝置安全性管理器(DSM) 136,其帶有一裝置秘密,例如裝置憑證212、會話金鑰、裝置「測量」值等。在某些範例中,裝置106實施一或多個實體功能。
在某些範例中,裝置106包括位在裝置側之一第一裝置介面(I/F)214、以及一或多個第二裝置介面216。在某些範例中,裝置106支援這些介面之間的內脈絡隔離。
在某些範例中,裝置106(例如,根據一單根輸入/輸出虛擬化(SR-IOV)標準)係由複數個虛擬機(例如:信賴域)共享。在某些範例中,一實體功能具有將資料移入及移出裝置之能力,而虛擬功能(例如,第一虛擬功能及第二虛擬功能,舉例而言,其中該等虛擬功能係支援資料流動但亦具有一受限組態資源集合之輕型功能(例如:PCI Express(PCIe))。
在某些範例中,IO裝置106係用來在IOMMU 120之控制下進行對一信賴域(例如:信賴域206-1或信賴域206-2)之一私用記憶體提出之一直接記憶體存取請求。
在某些範例中,一信賴域兼具有一私用記憶體(例如,位在圖1中之信賴域記憶體116中)、及一共享記憶體(例如,位在圖1中之非信賴域記憶體114及/或信賴域記憶體116中)。在某些範例中,DMA以受保護記憶體(例如:一信賴域之私有記憶體及共享記憶體)為目標。
下面針對不同架構性組件論述對IOMMU 120之範例延伸及變更。
圖3A根據本揭露之範例繪示具有一IO轉譯後備緩衝器302(IO TLB)之一IOMMU 120的一方塊圖。所示IO TLB 302包括用於一記憶體存取(例如:讀取及/或寫入)請求(例如,來自一IO裝置106)之一輸入,例如來自PCIe控制器318(例如,包括一IDE編碼器/解碼器320)之輸入。
在某些範例中,IO TLB 302係用來針對IO TLB(例如其映射快取記憶體)中對於來自裝置(例如:端點)之一(例如,虛擬)位址之一輸入的一命中,輸出對應主機(例如,實體)位址,及/或針對IO TLB(例如:其映射快取記憶體)中對於一(例如,虛擬)位址之一輸入的一錯過,在記憶體中進行一(例如,頁面)步行以針對來自裝置之彼位址輸入確定對應之主機(例如,實體)位址。
然而,可期望不允許一IO裝置106存取受保護私用記憶體(例如:圖1中之信賴域記憶體116及/或為彼私用記憶體具有對應資料之任何資料結構(例如:一IOTLB用之映射及/或轉譯表)、暫存器等),除非彼請求係來自(或針對)對應信賴域之一可信賴運算庫。在某些範例中,期望使一VMM 110B(或OS或非為一信賴域之部分的其他組件)不存取私用記憶體、以及針對彼私用記憶體(例如:圖1中之信賴域記憶體116)具有對應資料之任何資料結構(例如:一IOTLB用之映射及/或轉譯表)、暫存器等。
在某些範例中,對於受保護私用記憶體之一請求(例如,如本文中所論述以「ide_t」(例如,=1)標記)係要發送至可信賴轉譯表324之一集合(例如,亦儲存在受保護記憶體116內或IOMMU 120內)(例如,由信賴域管理器101(例如:TDX模組)管理),其與「非可信賴」轉譯表322之一集合(例如,位在非信賴域記憶體114中或位於IOMMU 120內)(例如,由VMM 110B管理)分離。在某些範例中,IOMMU 120為各裝置維護一(例如,可信賴)轉譯表。
在某些範例中,單獨「非可信賴」轉譯表322及可信賴轉譯表324之使用意味著一或多個暫存器之一單獨集合係要用於在「非可信賴」轉譯表322為非可信賴根表格之基址儲存指標之各「非可信賴」根表格位址暫存器312、以及在可信賴轉譯表324中為可信賴根表格之基址儲存指標之可信賴根表格位址暫存器(T_RTADDR_REG) 316,舉例而言,與之配合使用,(例如,其中一根表格儲存複數個根表項,並且各根表項含有用以針對IO裝置參照脈絡表格之一脈絡表格指標)。
在某些範例中,對於非私用記憶體之一請求(例如,未以「ide_t」(例如,=0)標記,如本文中所論述)係要發送至非私用轉譯表322之一集合(例如,儲存在非信賴域記憶體114中)。
在某些範例中,IOMMU 120包括用於一無效佇列之一暫存器集合。在某些範例中,期望使一VMM 110B(或OS或非為一信賴域之部分的其他組件)不無效私用記憶體、以及讀取具有對應資料以供無效彼私用記憶體(例如:位在圖1中之信賴域記憶體116中)之任何資料結構、暫存器等。在某些範例中,IOMMU 120使一信賴域管理器101除外之任何東西都對可信賴IOMMU暫存器310A~310C與316以及可信賴轉譯表324不具有存取權。
在某些範例中,不同信賴域係透過一或多個對應之可信賴轉譯表324來映射,舉例而言,以及透過用於IOMMU暫存器310A~310C及/或對應之IOMMU暫存器310A~310C的對應值來映射。
在某些範例中,如本文中所論述之受保護私用記憶體116(例如,之一頁面)之一無效用的一請求(例如:命令)係要發送(舉例而言,藉由信賴域管理器101(例如:TDX模組))至可信賴無效佇列306。在某些範例中,可信賴無效佇列尾端暫存器(T_IQT_REG) 310A(例如,用於TDX-IO)係用來將尾端(例如,最後有效)表項的一指示儲存在可信賴無效佇列306中,可信賴無效佇列頭端暫存器(T_IQH_REG) 310B(例如,用於TDX-IO)係用來將頭端(例如,第一有效)表項的一指示儲存在可信賴無效佇列306中,以及可信賴無效佇列位址暫存器(T_IQA_REG) 310C(例如,用於TDX-IO)係用來將基址(例如,及大小)的一指示儲存在可信賴無效佇列306中,舉例而言,且這些暫存器可(例如,僅)由信賴域管理器101存取,及/或這些暫存器位於IOMMU 120內。
在某些範例中,如本文中所論述之非私用記憶體114(例如,之一頁面)之一無效用的一請求(例如:命令)係要發送(舉例而言,藉由虛擬機監測器110B)至「非可信賴」無效佇列304。在某些範例中,「非可信賴」無效佇列尾端暫存器(IQT_REG) 308A(例如,不用於TDX-IO)係用來將尾端(例如,最後有效)表項的一指示儲存在「非可信賴」無效佇列304中,「非可信賴」無效佇列頭端暫存器(IQH_REG) 308B(例如,不用於TDX-IO)係用來將頭端(例如,第一有效)表項的一指示儲存在「非可信賴」無效佇列304中,以及「非可信賴」無效佇列位址暫存器(IQA_REG) 310C(例如,不用於TDX-IO)係用來儲存「非可信賴」無效佇列304之基址(例如,及大小)的一指示,舉例而言,且這些暫存器可(例如,僅)由VMM 110B存取,及/或這些暫存器位於IOMMU 120內。
在某些範例中,無效請求受提供服務,舉例而言,以及對應之暫存器受到更新,例如,從而更新頭端及尾端指標。在某些範例中,一無效請求係(i)用來從一第一虛擬機(例如,或信賴域)取用記憶體(例如,一頁面),並將其給予另一虛擬機(例如,或信賴域)(例如,在將第一虛擬機之資料從彼記憶體清除之後),(ii)用來刪除一虛擬機(例如,或信賴域),及/或(iii)回應於一全域重設請求。
在某些範例中,暫存器包括一控制暫存器(TDX_MODE) 314A (例如,位於IOMMU 120內)以將IOMMU 120設定為在TDM(例如:TDX)模式內,舉例而言,用來使用暫存器310A~310C、暫存器316、及/或可信賴表格324(例如,當設定「ide_t」或「t位元標籤」時)。在某些範例中,暫存器包括一命令暫存器(ECMD_REG) 314B(例如,位於IOMMU 120內),用來向IOMMU 120發送(例如,及儲存)一命令,例如用以啟用/停用TDX模式等之一命令。在某些範例中,暫存器包括一全域命令暫存器(GCMD_REG) 314C (例如,位於IOMMU 120內),用來將一全域命令儲存至IOMMU 120,例如,用以進行一全域重設(例如,用以清除記憶體中之所有區塊(例如:頁面))之一命令。
在某些範例中,信賴域管理器101(例如:TDX模組)管理可信賴IOMMU暫存器310A~310C與316以及可信賴轉譯表324。
在某些範例中,VMM 110B 101管理其他IOMMU暫存器308A~308C與312以及其他轉譯表322。
圖3B根據本揭露之範例,針對圖3B之IOMMU,繪示轉譯表322及可信賴轉譯表324的一方塊圖。在某些範例中,進行一頁面步行之層次結構係如圖3B所示,舉例而言,用來為一虛擬位址(例如:一信賴域用之訪客實體位址)之一輸入將一對應之實體位址輸出。在某些範例中,可信賴轉譯表324為一信賴域之一私用記憶體(例如,每個TD金鑰(例如:TD KeyID))包括一安全延伸頁表(secEPT) 326,及/或為(i)在多個信賴域之間共享(例如,但共享之EPT不可提供TD KeyID)及/或(ii)與虛擬機監測器110B共享之一受保護記憶體包括一共享延伸頁表(sharedEPT) 328。
某些I/O記憶體控制器(例如:IOMMU 120)(例如,處於在下文參照論述之可縮放模式中)允許IO裝置使用DMA請求(例如,有或無一過程位址空間識別符(PASID)前置碼)中之虛擬位址(VA)來存取記憶體。在某些範例中,I/O記憶體控制器(例如:IOMMU)使用在轉譯表中組配之一PASID、或使用在DMA請求中接收之一PASID將一VA轉譯成一對應之實體位址(PA)。
在某些範例中,I/O記憶體控制器(例如:IOMMU 120)在一成功頁表步行之後,將一轉譯推送到內建IOTLB內(例如,其中儲存虛擬位址對實體位址映射之資料儲存區)。在某些範例中,根據本揭露之範例,轉譯表322(例如,儲存在IOMMU 120及/或IOTLB 302中)包括一DMA重映射結構(例如,其以根表格開始)。所示(可縮放)根表格包括一匯流排表項(例如,0至255),該匯流排表項指向(上或下可縮放)脈絡表格中之一裝置(例如:功能)用之一表項,該表項指向一PASID目錄,該PASID目錄之表項接著指向一PASID表格,該PASID表格之表項含有一值,該值包括一第一層級頁表(FLPT)指標及/或一第二層級頁表(SLPT)指標。
在某些範例中,根據本揭露之範例,可信賴轉譯表324(例如,儲存在IOMMU 120及/或IOTLB 302中)包括一DMA重映射結構(例如,其以根表格開始)。所示(可縮放)根表格包括一匯流排表項(例如:0至255),該匯流排表項指向(例如,下或上可縮放)脈絡表格中之一裝置(例如:功能)用之一表項,該表項指向PASID目錄,該PASID目錄之表項接著指向一PASID表格,該PASID表格之表項含有一值,該值包括一指標,用來指向一安全延伸頁表(secEPT) 326(例如,其映射使用一TD金鑰(例如:TD KeyID)保護之記憶體)、或secEPT與一共享延伸頁表(sharedEPT) 328(例如,其映射TD之私用及共享記憶體)之一組合。
在某些範例中,需要出現在位址轉譯硬體(例如:IOMMU 120)處之各入站請求識別發端該請求之裝置。識別一I/O異動之發端者的(例如,16位元)屬性可稱為來源ID。在某些範例中,對於快速PCI(PCIe)裝置,來源ID係某些範例中快速PCI異動層標頭中之請求者識別符,舉例而言,其中一裝置之請求者識別符由其PCI匯流排號碼/裝置號碼/功能號碼所組成,係藉由組態軟體來指派,並且獨特地識別發起請求之硬體功能。
圖4根據本揭露之範例,繪示包括一IOMMU 120之一非一致性至一致性橋接400的一方塊圖。在某些範例中,非一致性至一致性橋接400包括一入站異動快取記憶體(ITC) 402(例如,用來從一IO裝置106接收用以存取記憶體之一請求),舉例而言,包括(例如:多金鑰總記憶體加密(MKTME))金鑰篩選器404。在某些範例中,一處理器(例如:SoC)用之MKTME功能允許軟體將一或多個單獨金鑰用於記憶體加密,例如,當與TDX配合使用時,其針對由各信賴域使用之記憶體經由單獨金鑰提供機密性。在某些範例中,非一致性至一致性橋接400包括一入站請求處理器(IRP) 408(例如,用以連接至記憶體),例如,用來將請求從IO裝置106發送至記憶體以供提供服務,及/或針對回自記憶體之請求接收一回應(例如,映射)(例如,包括一(例如,MKTME)金鑰篩選器410)。在某些範例中,非一致性至一致性橋接400包括一離埠異動快取記憶體(OTC) 406(例如,用來向IO裝置106發送對請求之回應)。 介面層級變更 初級介面
在某些範例中,IOMMU 120獲得一新輸入(例如,「ide_t」,作為從裝置接收到之TLP(例如,不是一控制封包)之IDE前置碼中之T位元之狀態,舉例而言,其中T位元在經設定時,指出源於一信賴域內之TLP)。在某些範例中,對於接收到之沒有IDE前置碼之一TLP,此輸入為0。在某些範例中,IOMMU 120產生一輸出(「allow_tdx_kid」),該輸出指出處於最終適用輸出之實體位址是否可具有一信賴域(例如:TDX)KeyID (kid)。 次級介面
在某些範例中,為了用信號通知要在PCIe TLP中發送之T位元的設定,IOMMU 120輸出一信號ide_t,其係由HIOP(例如:其OTC 406)轉發至系統晶片組織架構(OSF)代理器(例如:IRP 408)。在某些範例中,IOMMU 120在訊息係回應於來自可信賴無效佇列(例如:圖3A中之可信賴無效佇列306)之描述符而產生時將ide_t設定為1,並且對於回應於來自「正常」無效佇列(例如:圖3A中之無效佇列304)之描述符而產生之訊息將ide_t設定為0。
在某些範例中,次級介面亦用於產生訊息信令中斷(MSI)寫入,例如寫入至特殊記憶體範圍,並且這些寫入用之allow_tdx_kid係假設為0。
在某些範例中,次級介面亦用於產生寫入以將無效等待描述符之「狀態資料」欄位取得值儲存至由一無效等待描述符之「狀態位址」欄位所指定之位址。在某些範例中,這些寫入用之allow_tdx_kid一律為0,與從哪個無效佇列(正常或可信賴)處理無效等待描述符無關。 記憶體介面
在某些範例中,將稱為allow_tdx_kid之一新信號(值)新增至此介面,以指出存取記憶體子系統之實體位址是否可具有一TDM(例如:TDX)KeyID。
在某些範例中,記憶體介面係由IOMMU 120用於:(i)提取至轉譯表表項,作為源於正常及可信賴轉譯表之頁面步行之部分,(ii)在第一及第二層級分頁結構中基元式進行位址/資料(A/D)位元更新,(iii)對已告示中斷描述符(PID)進行基元更新,(iv)從正常及可信賴無效佇列提取至無效描述符,及/或(v)寫入至頁請求佇列。
在某些範例中,一或多個暫存器係用於實施本文中之揭露。舉例而言,藉由解碼及執行將一(例如:控制)值儲存到一或多個暫存器裡之一指令。
圖5根據本揭露之範例,係IOMMU(例如,及VT-d)暫存器500之一表格。在圖5中,用於為信賴域實施輸入/輸出延伸之某些架構性暫存器係以粗體示出,且而微架構性層級暫存器新增係以底線繪示。在某些範例中,暫存器之存取策略群組係為了安全性而變更,例如,當處於操作之TDX_MODE時變更。在某些範例中,一IOMMU包括一可信賴根表格位址暫存器(T_RTADDR_REG) 316、可信賴無效佇列尾端暫存器(T_IQT_REG) 310A (例如:用於TDX-IO)、可信賴無效佇列頭端暫存器(T_IQH_REG) 310B(例如,用於TDX-IO)、可信賴無效佇列位址暫存器(T_IQA_REG) 310C(例如,用於TDX-IO)、用以將IOMMU 120設定為進入(或離開) TDM(例如:TDX)模式之一暫存器(TDX_MODE_REG) 314A、及/或作為一介面以向IOMMU提交一命令(例如,用以使其進入或離開TDX模式)之一命令暫存器(ECMD_REG) 314B。在某些範例中,一「標準」命令、暫存器等意指為不用於一信賴域之一命令、暫存器等,舉例而言,不用於為信賴域實施輸入/輸出延伸。
圖6根據本揭露之範例,係一可信賴根表格位址暫存器316之一範例格式,舉例而言,用於將一基址儲存至一可信賴根表格(例如:圖3B中可信賴轉譯表324中之可信賴延伸根表格)。
圖7根據本揭露之範例,係一可信賴無效佇列頭端暫存器310B之一範例格式,舉例而言,用於儲存一可信賴無效佇列(例如:圖3A中之可信賴無效佇列306)之一頭端(例如:複數個元素之頭端元素)的一指示。
圖8根據本揭露之範例,係一可信賴無效佇列尾端暫存器310A之一範例格式,舉例而言,用於儲存一可信賴無效佇列(例如:圖3A中之可信賴無效佇列306)之一尾端(例如:複數個元素之尾端元素)的一指示。
圖9根據本揭露之範例,係一可信賴無效佇列位址暫存器310C之一範例格式,舉例而言,用來儲存可信賴無效佇列(例如:圖3A中之可信賴無效佇列306)之基址(例如,及大小)的一指示。
圖10根據本揭露之範例,係一信賴域(例如:信賴域延伸(TDX))模式暫存器314A之一範例格式,舉例而言,用來儲存對IOMMU是否處於信賴域模式(例如:TDX模式)進行控制之一(例如:命令)值。
圖11根據本揭露之範例,係具有信賴域IO能力列舉之一延伸能力暫存器1100(例如,作為一處理器及/或IOMMU中之暫存器中之一者)之一範例格式,舉例而言,回應於一列舉請求,係用來儲存指出硬體是否支援信賴域延伸–輸入/輸出(IO)支援(例如:TDX-IO)能力(例如,以及這些暫存器是否保留(例如,無效)或按其他方式)之一值。
在某些範例中,如果一實作態樣不可確保暫存器(例如:可信賴IOMMU暫存器310A~310C及316)在ECAP_REG.TDXIO 1100為0時受到保留並儲存零值(RsvdZ),則應該保證這些暫存器(若適用)之寫入從IOMMU操作觀點來看實際上係無操作(No-Op)。
在某些範例中,ECAP_REG.TDXIO僅在滿足以下所有資格/相依性時才為1:(i) ECAP_REG.TDXIO之預設硬體重設為1,(ii) ECAP_REG.SMTS = 1(存在可縮放模式支援),(iii) 有效主機位址寬度(例如,在帶有最大實體平台位址(MAX_PA)之硬體自主寬度(HAW)去特徵含納後)為52位元,以及(iv) TDX-IO去特徵(請參閱下文)為OFF。在某些範例中,TDX-IO特徵可使用一能力去特徵暫存器(例如,作為一處理器及/或IOMMU中之暫存器中之一者)之一位元(例如:用於TDX-IO之位元3)來完全去特徵化。
在某些範例中,一暫存器集合係用於向一IOMMU進行命令提交(例如,稱為「增強型命令」)且伴隨適當之成功/失敗,並從而用於故障報告,舉例而言,這些延伸如下以支援TDX-IO中之SET_TDX_MODE命令。
圖12根據本揭露之範例,係一增強型命令狀態暫存器1200(例如,作為一處理器及/或IOMMU中之暫存器中之一者)之一範例格式,舉例而言,以供IOMMU報告與透過增強型命令暫存器(ECMD_REG) 314B發出之命令有關之狀態。
圖13根據本揭露之範例,係一增強型命令能力暫存器1300(例如,作為一處理器及/或IOMMU中之暫存器中之一者)之一範例格式,舉例而言,回應於一列舉請求,係用來儲存指出硬體是否透過增強型命令暫存器(ECMD_REG) 314B提供支援(例如:SET_TDX_MODE)之一值。
圖14根據本揭露之範例,係一增強型命令暫存器314B之一範例格式,舉例而言,用來儲存IOMMU為信賴域模式(例如:TDX模式)進行之操作進行控制之一(例如:命令)值,例如,將IOMMU設定為進入(或離開)TDX-IO模式。
圖15根據本揭露之範例,係一增強型命令回應暫存器1500(例如,作為一處理器及/或IOMMU中之暫存器中之一者)之一範例格式,舉例而言,以供IOMMU報告與透過增強型命令暫存器(ECMD_REG) 314B發出之命令有關之回應,例如,係一進行中命令或其已完成。 暫存器(例如:SEAM_OS_W策略群組暫存器)在VT基址暫存器(VTBAR)中之置放
在某些範例中,該等暫存器包括受保護記憶體致能暫存器(PMEN)、受保護低記憶體基址暫存器(PLMBASE)、受保護低記憶體限制暫存器(PLMLIMIT)、受保護高記憶體基址暫存器(PHMBASE)、以及受保護高記憶體限制暫存器(PHMLIMIT)。在某些範例中,PMEN在設定時,係用來透過PLMBASE、PLMLIMT、PHMBASE、PHMLIMIT暫存器啟用受DMA保護之記憶體區域設定。
在某些範例中,PMEN、PLMBASE、PLMLIMIT、PHMBASE及PHMLIMIT暫存器在HIOP中受到蔭蔽,舉例而言,其中HIOP亦蔭蔽IOMMU之IOMMU SAI策略群組暫存器。在某些範例中,IOMMU SAI策略群組暫存器係以偏移量0xF10位於IOMMU VTBAR中。
在某些範例中,TDX-IO使這些暫存器成為受保護暫存器(例如,由SEAM_OS_W策略群組涵蓋)。在某些範例中,為了避免必須將新策略群組新增至HIOP影子邏輯並避免HIOP影子邏輯必須使用一不同偏移量(例如,有別於0xF10),IOMMU使讀取存取控制(RAC)、寫入存取控制(WAC)、及控制策略(CP)之SEAM_OS_W策略群組暫存器位處某些偏移量(例如,分別為偏移量0xF10、0xF18、及0xF20)。 全域命令暫存器 – 處理集根表格指標(SRTP)位元
在某些範例中,經由全域命令暫存器(GCMD_REG) 314C設定集根表格指標(SRTP)位元與一非IO VT-d規範定義沒有變化,舉例而言,其將舊有根指標閂鎖至一內部副本(例如,連同內部/外部清空、全域無效等),沒有來自非預期暫存器值等之其他副作用。
在某些範例中,當處於TDX模式時,信賴域管理器(例如:TDX模組)取得RTADDR_REG以及GCMD_REG(對SEAM之寫存取控制)之所有權,舉例而言,使得信賴域管理器(例如:TDX模組)確保由VMM程式規劃之RTADDR_REG使轉譯模式設定為可縮放模式或中止。 增強型命令(ECMD)新增 – 支援「SET_TDX_MODE」命令
在某些範例中,一增強型命令(ECMD)暫存器(例如:圖3A~3B中之增強型命令暫存器(ECMD_REG) 314B)係伴隨基於適用錯誤/相容性檢查對S/W之對應回應(例如:成功/失敗)回授連至IOMMU 120之一新VT-d命令提交介面。如相較於其他基於暫存器之命令(例如:經由GCMD之SRTP),此為H/W與S/W之間的一更清晰約定,其中命令一律執行而與錯誤檢查、以及最終在資料路徑操作中引動失敗/故障偵測之其他IOMMU狀態上涉及之副作用無關。在某些範例中,軟體有關錯誤/不相容命令處理之部分係藉由IOMMU更新。
在某些範例中(例如,連同IOMMU對於各種效能監測(Perfmon)命令之架構性支援),ECMD支援用於在一IOMMU上啟用/停用TDX模式之新命令「Set TDX Mode」(例如,架構性)。在某些範例中,流程(例如,SRTP、設定中斷重映射表格指標(SIRTP)等)轉移到ECMD。在某些範例中,ECMD暫存器(用於提交命令)係置於SEAM_OS_W策略群組中。在某些範例中,除了ECMD以外,GCMD、受保護記憶體範圍(PMR)相關暫存器、及RTADDR也在SEAM_OS_W策略群組中。
圖16根據本揭露之範例,係一處理集信賴域(例如:信賴域延伸(TDX))模式位元1600之一範例格式。
在某些範例中,IOMMU中之ECMD_REG.CMD = SET_TDX_MODE命令處理(例如,連同所有相關聯操作)係如以下虛擬碼中所示(其中//位在註解/註記之前): IF ERESP.IP = 1 GOTO END // 如果任何ECMD操作持續進行則為NOP。 ERESP.IP = 1 TM = TDX_MODE_REG.TM T_TTM = T_RTADDR.TTM TTM = RTADDR.TTM 如果IOMMU中任何GCMD命令(SRTP、SIRTP、SFL、WBF)或PMR啟用流程進行中。 ERESP.SC = OTHER_COMMAND_ACTIVE ERESP.IP = 0 GOTO END IF ECMD_CAP0_REG.STDXS == 0 // 如果不支援SET_TDX_MODE ERESP.SC = UNSUPPORTED COMMAND ERESP.IP = 0 GOTO END // 如果請求是要設定TDX模式,則命令失敗,條件是 //  a) 可信賴及不可信賴TTM不相等 //  b) 兩TTM都不處於可縮放模式且處於中止DMA模式 IF ((TM == 1) & (TTM != T_TTM || TTM == LEGACY || TTM === EXTENDED ) ERESP.SC = SET TDX MODE CMD FAIL ERESP.IP = 0 GOTO END // 成功路徑 封鎖i/p初級介面並排清管線以使IOMMU清空。 全域無效TLB、快取記憶體。 閂鎖低於以下諸值之暫存器: HARDWARE_T_RTADDR.RTA = T_RTADDR.RTA HARDWARE_RTADDR.RTA = RTADDR.RTA HARDWARE_T_RTADDR.TTM = T_TTM HARDWARE_RTADDR.TTM = TTM HARDWARE_TDX_MODE.L = TDX_MODE_REG.L HARDWARE_TDX_MODE.TM = TM 針對GO進行介面解除封鎖及外部清空並等待Ack。 // 更新ESTS0_REG.TM中TM之狀態 ESTS0_REG.TM = HARDWARE_TDX_MODE.TM ERESP.SC = SUCCESS ERESP.IP = 0 END:
在某些範例中,ECMD_CAP0.STDXS相依於/資格認定ECAP_REG.TDXIO為1,舉例而言,在無TDX-IO能力之情況下,沒有Set TDX Mode命令支援。在某些範例中,對於TDX-IO,信賴域管理器(例如:TDX模組)係用來亦將效能計數器組態重設為IOMMU初始化步驟之部分,以供轉變至TDX_MODE,例如,透過ECMD命令「RESET_PERFORMANCE_COUNTER_CONFIGURATION」轉變,其導致所有計數器全都停用,並且所有組態、篩選、凍結、及溢位狀態暫存器全都設定為其預設值(例如,用以防止對可信賴DMA請求轉變之任何基於遙測之攻擊)。 無效佇列處理
在某些範例中,為了支援TDX-IO能力,一IOMMU具有兩個無效佇列(IQ)集合,例如,由VMM維護之一非信賴域(例如,「正常」)IQ(例如:圖3A中之無效佇列304)、及一架構性可信賴無效佇列(TIQ)(例如:圖3A中之可信賴無效佇列306),例如,在SEAM_OS_W PG中,且從而在操作之TDX_MODE中之SEAM控制中。在某些範例中,對於TIQ,在架構上存在單獨基址、頭端及尾端指標,但相關聯故障報告只有一個IQ相關暫存器集合。
在某些範例中,當ECAP_REG.TDXIO為1時,IOMMU在可信賴與不可信賴無效佇列之間循環,獨立於INT_TDX_MODE_REG.TM值,舉例而言,如果ECAP_REG.TDXIO為0,則IOMMU預設只從現有不可信賴IQ進行提取。
在TDX-IO能力之某些範例中,如果一次提取並處理一個作動IQ (非可信賴或可信賴),並且有一相關聯故障,則會依據IQ故障相關暫存器予以記錄並採取動作。在某些範例中,由於MSI係由VMM/主機OS處置,因此沒有安全性與故障報告相關聯。在某些範例中,一擱置中故障將停止所有IQ/TIQ相關處理,直到藉由軟體處理為止。
在某些範例中,ECAP_REG.TDXIO = 1時之IOMMU操作可總結如下: IQA_HAS_ENTRIES = (IQH_REG != IQT_REG) T_IQA_HAS_ENTRIES = (T_IQH_REG != T_IQT_REG) IF ECAP_REG.TDXIO && IQA_HAS_ENTRIES && (LAST_PROCESSED_QUEUE == T_IQ || ~T_IQA_HAS_ENTRIES) IQ_DESC_BASE = IQA_REG.IQA IQ_OFFSET = IQH_REG.QH IQ_DW = IQA.DW LAST_PROCESSED_QUEUE = IQ ELIF ECAP_REG.TDXIO && T_IQA_HAS_ENTRIES && (LAST_PROCESSED_QUEUE == IQ || ~IQA_HAS_ENTRIES) IQ_DESC_BASE = T_IQA_REG.IQA IQ_OFFSET = T_IQH_REG.QH IQ_DW = T_IQA.DW LAST_PROCESSED_QUEUE = T_IQ ENDIF DESC_WIDTH = IQ_DW ?256b : 128b 在IQ_DESC_BASE處從IQ中之偏移量IQ_OFFSET載入DESC_WIDTH之描述符 在某些範例中,循環行為保持與TDX模式無關以簡化硬體。在某些範例中,當ECAP_REG.TDXIO = 1時,如果TDX模式 = 0,則可信賴IQ係依據TDX模組期望行為/要求一律清空,且因此如果適用,則將僅滿足第一個IF條件。 IOMMU對於可信賴轉譯步行之支援
以下論述某些IOMMU中之架構性層級變更,用以針對隨附ide_t = 1之請求支援可信賴轉譯/步行。 快取記憶體/TLB延伸 IOTLB
在某些範例中,一IOTLB係延伸有一新標籤位元「可信賴」。在某些範例中,當IOTLB受填充時,此標記位元係設定為(ECAP_REG.TDXIO & INT_TDX_MODE_REG.TM & ide_t)。在某些範例中,當查詢IOTLB時,將異動之(ECAP_REG.TDXIO & INT_TDX_MODE_REG.TM & ide_t)與可信賴位元作比較以偵測一匹配。在某些範例中,IOTLB標籤上之同位產生及/或驗證包括可信賴位元。在某些範例中,相同之行為亦適用於也在IOTLB管線中之轉譯類型快取記憶體(TTC)(例如,處於微架構性層級)讀取及/或匹配。 PASID表格表項快取記憶體
在某些範例中,PASID表格表項快取記憶體(PTC)係延伸有一新標記位元 – 可信賴。在某些範例中,當PTC受填充時,此標記位元係設定為(ECAP_REG.TDXIO & INT_TDX_MODE_REG.TM & ide_t)。在某些範例中,當查詢PTC時,將異動之(ECAP_REG.TDXIO & INT_TDX_MODE_REG.TM & ide_t)與可信賴位元作比較以偵測一匹配。在某些範例中,PTC標籤上之同位產生及驗證應該包括可信賴位元。 脈絡表項快取記憶體
在某些範例中,脈絡表項快取記憶體(CTC)係延伸有一新標記位元 – 可信賴。在某些範例中,當CTC受填充時,此標記位元係設定為(ECAP_REG.TDXIO & INT_TDX_MODE_REG.TM & ide_t)。在某些範例中,當查詢CTC時,將異動之(ECAP_REG.TDXIO & INT_TDX_MODE_REG.TM & ide_t)與TDX位元作比較以偵測一匹配。在某些範例中,CTC標籤上之同位產生及驗證應該包括可信賴位元。在某些範例中,當標籤/查詢陣列係與CTC共享時,這在邏輯上也延伸至TTC。 根表格選擇
在某些範例中,若出一垷一IOTLB錯過(例如,映射不在IOTLB中,所以要從轉譯表進行一步行),當IOMMU係用來存取根表以進行一操作時,IOMMU基於相關聯傳入請求之(ECAP_REG.TDXIO & INT_TDX_MODE_REG.TM & ide_t),在HARDWARE_RTADDR_REG與HARDWARE_T_RTADDR_REG之間進行選擇。在某些範例中,當處於TDX模式時,如果針對轉譯接收到之請求係伴隨ide_t == 1,則選擇HARDWARE_T_RTADDR_REG,否則在所有其他狀況中選擇HARDWARE_RTADDR_REG。 RTADDR = (ECAP_REG.TDXIO & INT_TDX_MODE_REG.TM & ide_t)?HARDWARE_T_RTADDR_REG.RTA : HARDWARE_RTADDR_REG.RTA 針對TDX-IO可信賴轉譯之新VT-d故障與相關聯檢查
在某些範例中,UR係一不受支援之請求,CA係完成器中止,IR係中斷重映射,而NA不適用。
在某些範例中,如果重映射硬體不能成功地處理轉譯請求(例如,有或無PASID),則回傳沒有資料之一轉譯完成,舉例而言,如果重映射硬體被組配用以不支援來自此端點之轉譯請求,則在完成時回傳UR (不受支援之請求)之一狀態碼,及/或如果重映射硬體在處理轉譯請求時遭遇錯誤,則回傳CA(完成器中止)之一狀態碼。 PASID表格表項步行 – 域ID劃分與PGTT值之施行
在某些範例中,在TDX_MODE中,域ID係予以在TD VM與非TD VM之間進行劃分。在某些範例中,非TD VM使用域ID之位元L設定為0之域ID,並且TD VM使用域ID之位元L設定為1之域ID。在某些範例中,L是如藉由ECAP.ND欄位列舉之有效域ID寬度之最高有效位元(MSB)。在某些範例中,ECAP.ND列舉(例如,16位元寬)域ID(例如,未考量去特徵),且因此L位元將會是彼MSB(例如:位15至0之位元15)。在某些範例中,在TDX模式中,當對於不可信賴之請求(例如,ide_t=0之請求)進行一頁面步行時,如果找到域ID位元L設定為1之一PASID表格表項,則將其視為一終端故障,並且不對此類PASID表格表項進行快取記憶體。在某些範例中,這防止一VMM惡意再利用分配給TD之域ID、及分配給帶有一不可信賴裝置之TD的PASID觸發藉由域ID、PASID(例如,對於第一層級快取記憶體)、及位址查詢之一第一/第二層級分頁結構表項快取記憶體命中。在某些範例中,隨著域ID劃分完成,FL及SL層級快取記憶體之集合不需要單獨之「可信賴」位元標籤。在某些範例中,以下故障檢查係用於TDX-IO安全性: 故障檢查àIF「ECAP_REG.TDXIO & INT_TDX_MODE.TM & ~ide_t & Domain-id [L]」,並且如果為1,則隨著在TDX_MODE中之PASID表格表項中為不可信賴步行保留位元L而造成終端故障。 在某些範例中,此終端故障之錯誤報告與保留位元之錯誤報告相似。
圖17根據本揭露之範例,係一範例錯誤報告1700之一範例格式。在某些範例中,某些(例如:VT-d)故障係儲存在有別於其他故障之一不同類別中,舉例而言,其中SPT故障(例如,其條件碼)係在一 縮放模式 PASID 格(SPT)表項(例如,圖3B中所示之可信賴轉譯表324中之可縮放模式PASID表格)中偵到之一故障,並且一SCT故障(例如:其條件碼)是在 縮放模式 絡表格(SCT)表項(例如:圖3B中所示之可信賴轉譯表324中之可縮放模式(例如,較低)脈絡表格)中偵到之一故障。在某些範例中,條件碼SPT.7之優先序正好在SPT.3之後及SPT.4之前。
在某些範例中,以下故障檢查係用於TDX-IO安全性:當ECAP_REG.TDXIO為1時,如果TDX模式啟用並且步行係針對ide_t = 1,則PASID粒度轉譯類型(PGTT)為(例如,必須是)某一或某些值,例如010b(例如,僅第2層級)或011b(例如:巢套式),而如果不是那些值中之一者(例如:那兩個值),則造成一終端故障。
圖18根據本揭露之範例,係一範例錯誤報告1800之一範例格式。在某些範例中,條件碼SPT.8之優先序正好在SPT.4.4之後及SPT.5之前。在某些範例中,引進此故障是為了提高操作穩健性,並防止PGTT值有別於tdx_mode中可信賴請求所述值任何機會(例如,TDX模組期望行為係用來在可信賴PASID表格表項中設定PGTT作為第2層級或巢套式)。 TDX模式中之頁面步行
在某些範例中,重映射硬體包括一欄位之一指示,其指出由重映射硬體支援之最DMA虛擬定址能力。在某些範例中,最大訪客位址寬度(MGAW)係運算為(N+1),其中N係此欄位中報告之值。舉例而言,支援48位元MGAW之一硬體實作態樣在此欄位中報告一值47(101111b)。在某些範例中,如果此欄位中之值為X,則對高於2^(x+1)-1之位址所提出之未轉譯及已轉譯DMA請求係一律藉由硬體封鎖,並且從允許之裝置對高於2^(x+1)-1之位址所提出之轉譯請求回傳R=W=0之一虛無轉譯完成資料表項。
在某些範例中,一給定DMA請求之訪客定址能力係受限於透過此欄位報告之值之最小值、及對應頁表結構之經調整訪客位址寬度,舉例而言,且由硬體支援之經調整訪客位址寬度係透過SAGAW欄位來報告。
在某些範例中,實作態樣支援至少與平台之實體定址能力(例如:主機位址寬度)相等之一MGAW。
在某些範例中,重映射硬體包括一(例如,5位元欄位)受支援經調整訪客位址寬度(SAWAG)之一指示,舉例而言,其針對由硬體實作態樣支援之(例如,4KB)基頁大小代表頁表步行之層級。在某些範例中,這些位元中之任何一者之一值1指出對應之經調整訪客位址寬度受支援,舉例而言,其中與此欄位內各種位元位置對應之經調整訪客位址寬度為: 0:30位元AGAW(2層級頁表) 1:39位元AGAW(3層級頁表) 2:48位元AGAW(4層級頁表) 3:57位元AGAW(5層級頁表) 4:64位元AGAW(6層級頁表)
在某些範例中,軟體將確保用於設置頁表之調整後之訪客位址寬度是該欄位中報告之支援之訪客位址寬度之一。 SHARED位元
在某些範例中,對於TD,最高有效位元設定為1之訪客實體位址(GPA)稱為共享GPA,且最高有效位元設定為0者稱為私用GPA。在某些範例中,SHARED位元係評估如下: S_BIT = (PASIDTE.AW == `011b) ?51 : 47 SHARED = ECAP_REG.TDXIO & INT_TDX_MODE_REG.TM & ide_t & GPA[S_BIT]
在某些範例中,S_BIT計算不需要包括SAGAW及MGAW,因為這些係單獨VT-d檢查,並且如果AW及SAGAW彼此不符合及/或輸入GPA寬度大於MGAW及AW所允許者,則會引發故障。在某些範例中,期望之S/W行為在於TDX模組將在設定TDX模式 = 1之前從一能力(CAP)暫存器驗證SAGAW及MGAW以支援多(例如:4及/或5)層級EPT。 第一層級頁表(FLPT)步行期間之故障
在某些範例中,設有Present (P)欄位之第一層級分頁表項(例如:FL-PML5E、FL-PML4E、帶有PS位元0之FL-PDPE、帶有PS位元0之FL-PDE)中為1之SHARED位元係視為終端故障。在某些範例中,對於資料讀取及寫入,如果PS係設定為1,則FL-PDPE可具有SHARED位元1,亦即映射一1 GB頁面,並且如果PS係設定為1,則FL-PDE可具有SHARED位元1,亦即映射一2 MB頁面,並且FL-PTE可具有SHARED位元1。在某些範例中,對於指令提取,如果在頁面大小(PS)設定為1之FL-PDPE中將SHARED位元設定為1,則映射一1 GB頁面,或者在PS設定為1之FL-PDE中,映射一2 MB頁面,或在FL-PTE中,則造成一終端故障。在某些範例中,此故障檢查強制一TD只能在私用GPA中定位FLPT分頁結構,並且可對共享記憶體進行資料讀取/寫入,但不能對指令提取進行。在某些範例中,故障係一終端故障,並且係信號化為經設定故障日誌(SFL) SFL.11 (例如,對於葉及非葉分頁結構兩者)。o設定/更新故障日誌指標以設定/更新故障日誌指標。在某些範例中,如果未啟用TDX模式,或如果步行係針對ide_t == 0之一異動,則SHARED將一律評估為0。
圖19根據本揭露之範例,係一第一層級頁表(FLPT)步行期間針對一故障之一範例錯誤報告1900之一範例格式。在某些範例中,可縮放模式第一層級(SFL) SFL.11之優先序正好在SFL.3之後。在某些範例中,引進此故障以捕獲不良TD行為,舉例而言,用以避免核心側存取。 第二層級頁表(SLPT)步行期間之故障
在某些範例中,SLPT步行要求如果步行以SHARED設定為1之GPA開始,則所有第二層級(SL)分頁結構表項(例如,根SL分頁結構表項及轉譯之最終位址除外)不(例如,不得)具有TD私用KeyID。在某些範例中,此故障檢查防止一VMM定位SL分頁結構表項或最終轉譯自要映射至TD私用記憶體之SL分頁。在某些範例中,TDX_MODE_REG.L指出從HAW-1開始,為編碼TDX金鑰ID保留之實體位址位元數量。舉例而言,如果HAW為46且L為6,那麼,位元45:40若在實體位址中設定,則指出實體位址具有一私用金鑰ID。 在某些範例中,此係評估如下: KM = 0 FOR K = 0; K < L; K++ KM[HAW-1-K] = 1 ENDFOR IF ( SHARED == 1 && ((SL-PML5E[51:40] & KM && slpt_walk_state == PROCESS_PML5E) || ((SL-PML4E[51:40] & KM && slpt_walk_state == PROCESS_PML4E) || ((SL-PDPE[51:40] & KM && slpt_walk_state == PROCESS_PDPE) || (SL-PDE[51:40] & KM && slpt_walk_state == PROCESS_PDE) || (SL-PTE[51:40] & KM && slpt_walk_state == PROCESS_PTE)) THEN SSL.7 fault
圖20根據本揭露之範例,係一第二層級頁表(SLPT)步行期間針對一故障之一範例錯誤報告2000之一範例格式。在某些範例中,可縮放模式第二層級(SSL) SSL.7之優先序正好在SSL.3之後。在某些範例中,引進此故障係用來實現TDX-IO安全性。 ALLOW_TDX_KID GENERATION
在某些範例中,IOMMU依賴HIOP中之KeyID篩選器(例如,圖4中之金鑰篩選器404及/或金鑰篩選器410)來中止來自裝置之一記憶體請求、或來自IOMMU本身之一存取以憑藉TDX KeyID存取其轉譯結構,除非IOMMU允許記憶體請求具有一TDX KeyID。在某些範例中,這是藉由稱為allow_tdx_kid從IOMMU至HIOP之一邏輯信號來達成。在某些範例中,在實體上,將allow_tdx_kid實施成不同介面處之多個實體信號具現,例如,初級輸出處之resp_allow_tdx_kid、記憶體介面用之mem_allow_tdx_kid,還有次級介面處之對應新增,舉例如一微架構性概念。
在某些範例中,allow_tdx_kid值係由IOMMU驅動,如下,用以指出存取是否可具有一TDX KeyID,如下: 1.          IOMMU為在TDX-IOMMU架構中無法對私用記憶體提出之記憶體請求將allow_tdx_kid設定為0。這包括以下記憶體請求: •             中斷重映射表格表項 •             已告示中斷描述符。 •             頁請求佇列表項 •             舊有模式根表項 •             舊有模式脈絡表項 •             為一裝置發端之中斷寫入,例如,為這些allow_tdx_kid,對中斷位址範圍 – 0xFEEx_xxxx – 之寫入為0,無論中斷重映射是否啟用、停用、或旁通。 •             由IOMMU本身產生之中斷寫入如故障事件、頁請求事件、無效事件等。 •             無效等待描述符處理上之狀態寫入(與處理描述符出處之佇列無關)。 2.          當TDX_MODE為1並且轉譯係用於一ide_t == 1請求時,一律位在私用記憶體中之IOMMU轉譯結構。對於這些請求,allow_tdx_kid係設定為TDX_MODE & ide_t。這包括對以下結構之記憶體請求: •             可縮放模式根表項 •             可縮放模式脈絡表項 •             可縮放模式PASID目錄表項 •             可縮放模式PASID表格表項 •             第一層級分頁結構表項 3.          可基於與步行相關聯之SHARED位元(針對ide_t = 1及TDX_MODE = 1),位在私用或共享記憶體中之IOMMU轉譯結構。在這裡,allow_tdx_kid係設定為TDX_MODE & ide_t,因為故障檢查(SSL.7)係用於偵測IOMMU SL頁面步行器中共享SL結構中之私用keyID (例如,其不取決於HIOP keyID篩選器以對此進行捕獲。Allow_tdx_kid = 1允許私用或共享keyID): •             第二層級分頁結構表項 4.          可信賴無效佇列一律位在私用記憶體中。因此,對於TDX_MODE中之以下存取,IOMMU將allow_tdx_kid驅動為1: •             可信賴無效佇列表項
圖21根據本揭露之範例,係轉譯結構2100之一表格。 信賴域管理器(例如:TDX模組)限制及要求
在某些範例中,一VMM若例如藉由調用TDX中之一功能在IOMMU之範疇內發現有TDX-IO能力之裝置,則將IOMMU之控制權交給信賴域管理器(例如:TDX模組)。以下區段指定TDX模組要(例如,必須)遵守之一範例程式規劃序列及限制: 1.          將IOMMU置於TDX模式中 2.          SEAM_OS_W中暫存器之VMM程式規劃 3.          組配可信賴轉譯表 4.          清除一IOMMU用之TDX模式 將IOMMU置於TDX模式中: 1.          將BOOT_BIOS、POST_BOOT、及SMM SAI從SEAM_OS_W策略群組移除,舉例而言,使SEAM_OS_W策略群組暫存器受限於SEAM SAI。 2.          如果偵測到以下任何錯誤,則失敗: a.           ECAP_REG.TDXIO為0 – 不支援TDX-IO能力。 b.          CAP_REG.SAGAW[10]為0 – 不支援4層級頁表。 c.           CAP_REG.SAGAW[11]為0且CPU EPT支援5層級頁表 – 如果CPU支援5層級頁表,則IOMMU也要(例如,必須)支援5層級頁表。 d.          如果CAP_REG.SAGAW[11]為1且CAP_REG.MGAW非為52個位元 e.           如果CAP_REG.SAGAW[10]為1且CAP_REG.MGAW少於48個位元 f.           ERESP_REG.IP為1 – 有一增強型命令進行中。 g.          ESTS0_REG.TMS為1 – IOMMU已處於TDX模式。 h.          GSTS_REG.TES為0 – IOMMU轉譯未啟用。 i.            GSTS_REG.QIES為0 – 排入佇列之無效未啟用。 j.            PMEN_REG.EPM或PMEN_REG.PRS非為0– 受保護之記憶體範圍(例如,必須)停用。 k.          ECAP_REG.TDXIO為0 – 不支援TDX模式。 l.            RTADDR_REG.TTM非為可縮放模式(例如,非為01b)。 3.          以可信賴轉譯表根頁面之位址及轉譯表模式組配T_RTADDR_REG,舉例而言,根表格位址要(例如,必須)有一TDX金鑰ID***,及/或TTM要(例如,必須)設定為可縮放模式(例如:01b)。 4.          以可信賴無效佇列基頁之位址組配T_IQA_REG,舉例而言,此位址要(例如,必須)有TDX金鑰ID***,及/或T_IQA_REG要(例如,必須)組配有256位元描述符寬度。 5.          將T_IQT_REG初始化為T_IQH_REG之值,例如使尾端等於頭端以指出空佇列。 6.          以來自IA32_TME_ACTIVATE MSR之.TDX_RESERVED_KEYID_BITS欄位之值組配TDX_MODE_REG.L,並將TDX_MODE_REG.TM設定為1。 7.          寫入ECMD_REG.CMD = SET_TDX_MODE 8.          等待命令完成,亦即ERSP_REG.IP變為0。請注意,此步驟可由VMM完成。 9.          藉由讀取ESTS0_REG.TMS並檢查其是否為1來驗證TDX模式是否已啟用。 10.      寫入ECMD_REG.CMD = RESET_PERFMON_COUNTER_CONFIGURATION 11.      等待命令完成,亦即ERSP_REG.IP變為0。請注意,此步驟可由VMM完成。 此序列完成後,在某些範例中,TDX模式啟用,並且根以及可信賴根位址暫存器係閂鎖到IOMMU硬體中裡。在某些範例中,一旦啟用TDX模式,TDX_MODE_REG.L便不要(例如,不得)變更,舉例而言,變改L可導致IOMMU中之未定義行為並影響TDX安全性。 從VMM存取SEAM_OS_W暫存器
在某些範例中,當TDX模式啟用時,SEAM_OS_W暫存器不可由VMM寫入,舉例而言,為VMM提供一應用程式規劃介面(API)功能以在需要時對以下暫存器進行程式規劃: -          RTADDR_REG – 施行以下限制。 o    VMM所提供之位址值不具有一TDX金鑰ID。 o    VMM所提供之TTM值要(例如,必須)為可縮放模式。 -          GCMD_REG – 施行以下限制。 o    排入佇列之無效無法停用。 o    轉譯啟用無法設定為0。 組配可信賴轉譯表 1.          讀取CAP_REG.ND以確定伴隨之IOMMU支援域。支援域ID之MSB係L位元。舉例而言,如果域ID寬度係16位元,則L位元係位元15。可將此組態讀出並快取記憶體作為將IOMMU置於TDX模式之部分。 2.          在可信賴轉譯表中組配脈絡表項時,請遵守以下限制。 •             DTE – 裝置TLB啟用 – 0 – GNR IOMMU不支援安全ATS。 •             PRE – 頁請求啟用 – 0 – GNR IOMMU不支援安全頁請求。 3.          在可信賴轉譯表中組配PASID表格表項時,請遵守以下限制。 •             將DID欄位之L位元設定為1。 •             將位址寬度(AW)設定為010b(4層級)或011(5層級)。 •             將PGTT設定為010b(僅第二層級轉譯)。 4.          遵守組配成對可信賴PASID表格表項中之SLPT的以下限制。 •             將指派給TD之HKID儲存在安全EPT表項中(例如,圖3中之TD secEPT)。CPU PMH不消耗這些,但IOMMU會將這些消耗。 •             允許VMM將私用EPT PML4(例如,當4層級EPT啟用時)或EPT PML5(例如,當5層級EPT啟用時)組配為下一層級共享EPT分頁結構(例如,圖3中之TD sharedEPT)。確保VMM所提供之位址不具有一TDX金鑰ID。 5.          僅當TD已接受PASID或裝置介面時,才使PASID表格表項在可信賴之轉譯表中呈現。 清除TDX模式
在某些範例中,VMM可請求清除一IOMMU TDX模式,例如,其中TDX模組遵循以下序列。 1.    如果偵測到以下狀況,則失敗: a.     ESTS0_REG.TMS為0 – IOMMU未處於TDX模式。 b.    T_IQH_REG不等於T_IQT_REG – 有無效進行中。 c.     可信賴轉譯表中有有效映射。 d.    ERESP_REG.IP為1 – 有一增強型命令進行中。 2.    將以下可信賴暫存器設定為0,亦即其重設預設值。 a.     T_RTADDR_REG b.    T_IQA_REG c.     TDX_MODE_REG – L及TM兩者都設定為0。 3.    設定ECMD_REG.CMD = SET_TDX_MODE。 4.    將BOOT_BIOS、POST_BOOT及SMM SAI新增回到SEAM_OS_W策略群組。 5.    等待命令完成,例如ERSP_REG.IP變為0。請注意,此步驟可由VMM完成。 此序列完成後,在某些範例中,TDX模式停用。
圖22係一流程圖,其根據本揭露之範例,繪示針對來自一輸入/輸出裝置之一信賴域之一受保護記憶體之一直接記憶體存取,用於處理一請求之一方法之操作2200。藉由硬體或其組合,操作2200(或本文中所述之其他過程、或變體、及/或以上的組合)中之一些或全部係在如本文中實施之一信賴域管理器及/或IOMMU、及/或組配有可執行指令之一或多個電腦系統的控制下進行,並且係實施為在一或多個處理器上共同執行之程式碼(例如:可執行指令、一或多個電腦程式、或一或多個應用程式)。程式碼係儲存在一電腦可讀儲存媒體上,形式例如為包含可由一或多個處理器執行之複數個指令之一電腦程式。電腦可讀儲存媒體屬於非暫時性。在一些範例中,操作2200中之一或多者(或全部)係藉由其他圖式之IOMMU 120(例如,及/或信賴域管理器101)來進行。
操作2200包括,在程序塊2202,藉由一硬體處理器核心之一信賴域管理器來管理一或多個硬體隔離式虛擬機作為帶有一受保護記憶體區域之一相應信賴域。操作2200更包括,在程序塊2204,從一輸入/輸出裝置向耦接於該硬體處理器核心與該輸入/輸出裝置之間的一輸入/輸出記憶體管理單元(IOMMU)電路系統針對一信賴域之一受保護記憶體之一直接記憶體存取發送一請求。操作2200更包括,在程序塊2206,藉由該IOMMU電路系統,回應於該請求中之一欄位而允許該直接記憶體存取,該欄位係設定為指出該輸入/輸出裝置位在該信賴域之一可信賴運算庫中。
在某些範例中,根據本揭露之範例,(例如,位在一IOMMU中之)一暫存器(例如:TDX-IO)舉例而言,係根據用於處理一暫存器指令之一方法,藉由一指令來讀取及/或寫入。一處理器(例如,或處理器核心)可進行一方法之操作,舉例而言,對接收一請求以執行來自軟體之一指令作出回應。操作可包括藉由進行以下操作來處理一「TDX-IO」指令:提取一指令(例如,具有對應於命令助憶符之一指令運算碼),將該指令解碼成一經解碼指令,取回與該指令相關聯之資料,(任選地)排程該經解碼指令以供執行,執行該經解碼指令以設定暫存器,以及從而控制TDX-IO命令之功能,並且提交該經執行指令之一結果。
下面詳述可將以上用於其中之範例性架構、系統等。下面詳述可致使為一加速器使一工作進入佇列之範例性指令格式。
所揭示技術之至少一些範例可鑑於以下範例作說明: 範例1:一種設備,其包含: 一硬體處理器核心,其包含一信賴域管理器,用以管理一或多個硬體隔離式虛擬機,作為帶有一受保護記憶體區域之一相應信賴域;以及 輸入/輸出記憶體管理單元(IOMMU)電路系統,其係耦接於該硬體處理器核心與一輸入/輸出裝置之間,其中該IOMMU電路系統係用來為針對一信賴域之一受保護記憶體之一直接記憶體存取來自該輸入/輸出裝置之一請求,回應於該請求中之一欄位而允許該直接記憶體存取,該欄位係設定為指出該輸入/輸出裝置位在該信賴域之一可信賴運算庫中。 範例2:範例1之設備,其中該請求中之該欄位根據一快速週邊組件互連(PCIe)標準係一前置碼中一或多個位元之一集合。 範例3:範例1之設備,其中回應於該請求中經設定之該欄位,該IOMMU電路系統係用來產生允許該信賴域之該受保護記憶體之一實體位址具有該信賴域之一私用金鑰的一指示。 範例4:範例1之設備,其中回應於該請求中經設定之該欄位,該IOMMU電路系統係用來產生允許該信賴域之該受保護記憶體之一實體位址具有該信賴域之一共享金鑰、以及該一或多個硬體隔離式虛擬機之一虛擬機監測器的一指示。 範例5:範例1之設備,其中回應於該請求中經設定之該欄位,該IOMMU電路系統係用來存取由該信賴域管理器管理且不由該一或多個硬體隔離式虛擬機之一虛擬機監測器管理之虛擬位址對實體位址映射之一可信賴資料結構。 範例6:範例5之設備,其中回應於該請求中未經設定之該欄位,該IOMMU電路系統係用來存取由該虛擬機監測器管理之虛擬位址對實體位址映射之一資料結構,並且不存取由該信賴域管理器管理之虛擬位址對實體位址映射之該可信賴資料結構。 範例7:範例1之設備,其中許可該信賴域管理器,而非該一或多個硬體隔離式虛擬機之一虛擬機監測器,致使該信賴域之該受保護記憶體之一或多個區塊之無效之一指示儲存在一可信賴無效佇列中。 範例8:範例1之設備,其中該IOMMU電路系統包含一可信賴根表格指標暫存器,其可由該信賴域管理器存取,而不可由該一或多個硬體隔離式虛擬機之一虛擬機監測器存取。 範例9:一種方法,其包含: 藉由一硬體處理器核心之一信賴域管理器來管理一或多個硬體隔離式虛擬機作為帶有一受保護記憶體區域之一相應信賴域; 從一輸入/輸出裝置向耦接於該硬體處理器核心與該輸入/輸出裝置之間的一輸入/輸出記憶體管理單元(IOMMU)電路系統針對一信賴域之一受保護記憶體之一直接記憶體存取發送一請求;以及 藉由該IOMMU電路系統,回應於該請求中之一欄位而允許該直接記憶體存取,該欄位係設定為指出該輸入/輸出裝置位在該信賴域之一可信賴運算庫中。 範例10:範例9之方法,其中該請求中之該欄位根據一快速週邊組件互連(PCIe)標準係一前置碼中一或多個位元之一集合。 範例11:範例9之方法,其包含回應於該請求中經設定之該欄位,藉由該IOMMU電路系統產生允許該信賴域之該受保護記憶體之一實體位址具有該信賴域之一私用金鑰的一指示。 範例12:範例9之方法,其包含回應於該請求中經設定之該欄位,藉由該IOMMU電路系統產生允許該信賴域之該受保護記憶體之一實體位址具有該信賴域之一共享金鑰、以及一虛擬機監測器的一指示。 範例13:範例9之方法,其更包含回應於該請求中經設定之該欄位,藉由該IOMMU電路系統存取由該信賴域管理器管理且不由該一或多個硬體隔離式虛擬機之一虛擬機監測器管理之虛擬位址對實體位址映射之一可信賴資料結構。 範例14:範例13之方法,其更包含回應於該請求中未經設定之該欄位,藉由該IOMMU電路系統存取由該虛擬機監測器管理之虛擬位址對實體位址映射之一資料結構,並且不藉由該輸入/輸出轉譯後備緩衝器存取由該信賴域管理器管理之虛擬位址對實體位址映射之該可信賴資料結構。 範例15:範例9之方法,其更包含許可該信賴域管理器,而非該一或多個硬體隔離式虛擬機之一虛擬機監測器,將該信賴域之私用記憶體之一或多個區塊之無效之一指示儲存在一可信賴無效佇列中。 範例16:範例9之方法,其更包含:回應於該請求中經設定之該欄位,存取該IOMMU電路系統之一可信賴根表格指標暫存器,並且回應於該請求中未經設定之該欄位,不存取該IOMMU電路系統之該可信賴根表格指標暫存器。 範例17:一種系統,其包含: 一硬體處理器核心,其包含一信賴域管理器,用以管理一或多個硬體隔離式虛擬機,作為帶有一受保護記憶體區域之一相應信賴域; 一輸入/輸出裝置,其係耦接至該硬體處理器核心;以及 輸入/輸出記憶體管理單元(IOMMU)電路系統,其係耦接於該硬體處理器核心與該輸入/輸出裝置之間,其中該IOMMU電路系統係用來為針對一信賴域之一受保護記憶體之一直接記憶體存取來自該輸入/輸出裝置之一請求,回應於該請求中之一欄位而允許該直接記憶體存取,該欄位係設定為指出該輸入/輸出裝置位在該信賴域之一可信賴運算庫中。 範例18:範例17之系統,其中該請求中之該欄位根據一快速週邊組件互連(PCIe)標準係一前置碼中一或多個位元之一集合。 範例19:範例17之系統,其中回應於該請求中經設定之該欄位,該IOMMU電路系統係用來產生允許該信賴域之該受保護記憶體之一實體位址具有該信賴域之一私用金鑰的一指示。 範例20:範例17之系統,其中回應於該請求中經設定之該欄位,該IOMMU電路系統係用來產生允許該信賴域之該受保護記憶體之一實體位址具有該信賴域之一共享金鑰、以及一虛擬機監測器的一指示。 範例21:範例17之系統,其中回應於該請求中經設定之該欄位,該IOMMU電路系統係用來存取由該信賴域管理器管理且不由該一或多個硬體隔離式虛擬機之一虛擬機監測器管理之虛擬位址對實體位址映射之一可信賴資料結構。 範例22:範例21之系統,其中回應於該請求中未經設定之該欄位,該IOMMU電路系統係用來存取由該虛擬機監測器管理之虛擬位址對實體位址映射之一資料結構,並且不存取由該信賴域管理器管理之虛擬位址對實體位址映射之該可信賴資料結構。 範例23:範例17之系統,其中許可該信賴域管理器,而非該一或多個硬體隔離式虛擬機之一虛擬機監測器,致使該信賴域之私用記憶體之一或多個區塊之無效之一指示儲存在一可信賴無效佇列中。 範例24:範例17之系統,其中該IOMMU電路系統包含一可信賴根表格指標暫存器,其可由該信賴域管理器存取,而不可由該一或多個硬體隔離式虛擬機之一虛擬機監測器存取。
在又另一範例中,一種設備包含儲存程式碼之一資料儲存裝置,該等程式碼在由一硬體處理器執行時,致使該硬體處理器進行本文中所揭示之任何方法。一種設備可如[實施方式]中所述。一種方法可如[實施方式]中所述。
指令集可包括一或多個指令格式。給定指令格式可定義各種欄位(例如位元數目、位元位置),除了其他方面外,用以指明要執行之運算(例如,運算碼)及要被執行之此運算的運算元,及/或其他資料欄位(例如,遮罩)。一些指令格式係進一步經由指令範本(或子格式)之定義被分解。舉例而言,給定指令格式之指令範本可被定義以具有指令格式之欄位的不同子集(所包括欄位通常呈相同次序,但至少一些具有不同位元位置,因為包括較少之欄位)及/或被定義以具有不同解譯之給定欄位。因此,ISA之各指令係使用給定指令格式(且在被界定的情況下,以彼指令格式之指令範本中之給定者)來表達,且包括用於指定運算及運算元之欄位。舉例而言,範例性ADD指令具有特定運算碼及指令格式,該指令格式包括用以指明彼運算碼之運算碼欄位及用以選擇運算元(來源1/目的地及來源2)之運算元欄位;且於指令串流中之此ADD指令的出現將具有在運算元欄位中之選擇特定運算元的特定內容。一組被稱為進階向量延伸(AVX)(AVX1和AVX2)並使用向量延伸(VEX)編碼方案之SIMD延伸已被釋出及/或出版(例如,參看2018年11月出版之Intel® 64及IA-32架構軟體開發者之手冊;及參看2018年10月出版之Intel® 架構指令集延伸編程參考)。 範例性指令格式
本文中所描述的指令之範例可以不同的格式被體現。另外,範例性系統、架構及管線在下文詳述。指令之範例可在此等系統、架構及管線上被執行,但不限於彼等細節。 通用向量友善指令格式
一向量友善指令格式係適用於向量指令之一指令格式(例如,有特定於向量操作之某些欄位)。儘管說明向量及純量運算兩者都透過向量友善指令格式予以支援之範例,替代範例仍僅使用向量運算及向量友善指令格式。
圖23A~23B係方塊圖,其根據本揭露之範例,繪示一通用向量友善指令格式及其指令範本。 23A係根據本揭露之範例,繪示一通用向量友善指令格式及其A類指令範本的一方塊圖:而 23B則係根據本揭露之範例,繪示通用向量友善指令格式及其B類指令範本的一方塊圖。具體而言,為一通用向量友善指令格式2300定義了A類及B類指令範本,這兩者都包括無記憶體存取2305指令範本及記憶體存取2320指令範本。在向量友善指令格式之脈絡中,通用一詞意指為未繫結至任何特定指令集之指令格式。
儘管將說明之本揭露之範例中,向量友善指令格式支援以下項目:帶有32位元(4位元組)或64位元(8位元組)資料元素寬度(或大小)之一64位元組向量運算元長度(或大小)(且因此,一64位元組向量是由16個雙字組大小之元素或替代地,8個四字組大小之元素所組成);帶有16位元(2位元組)或8位元(1位元組)資料元素寬度(或大小)之一64位元組向量運算元長度(或大小);帶有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元素寬度(或大小)之一32位元組向量運算元長度(或大小);以及帶有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元素寬度(或大小)之一16位元組向量運算元長度(或大小);替代範例仍可支援帶有更多、更少、或不同之資料元素寬度(例如:128位元(16位元組)資料元素寬度)之更多、更少及/或不同之向量運算元大小(例如:256位元組向量運算元)。
23A中之A類指令範本包括:1)在無記憶體存取2305指令範本內示有一無記憶體存取、全捨入控制型運算2310指令範本及一無記憶體存取、資料變換型運算2315指令範本;以及2)在記憶體存取2320指令範本內示有一記憶體存取、時間性2325指令範本及一記憶體存取、非時間性2330指令範本。 23B中之B類指令範本包括:1)在無記憶體存取2305指令範本中示有一無記憶體存取、寫入遮罩控制、部分捨入控制型運算2312指令範本及一無記憶體存取、寫入遮罩控制、vsize型運算2317指令範本;以及2)在記憶體存取2320指令範本內示有一記憶體存取、寫入遮罩控制2327指令範本。
通用向量友善指令格式2300包括以下按 23A~23B所示順序在下面列出之欄位。
格式欄位2340 – 此欄位中之一特定值(一指令格式識別符值)採獨有方式識別向量友善指令格式,且從而在指令串流中出現向量友善指令格式之指令。如此,此欄位屬於任選,因為對於僅具有通用向量友善指令格式之一指令集並不需要。
基址運算欄位2342 – 其內容區分不同之基址運算。
暫存器索引欄位2344 – 其內容直接或透過位址產生指定來源及目的地運算元之位置,無論是在暫存器中還是在記憶體中皆然。這些包括充分之位元數量,用以從一PxQ(例如:32x512、16x128、32x1024、64x1024)暫存器檔案夾選擇N個暫存器。儘管在一範例中,N可多達三個來源及一個目的地暫存器,替代範例仍可支援更多或更少來源及目的地暫存器(例如,可支援多達兩個來源,其中這些來源中之一者亦當作目的地,可支援多達三個來源,其中這些來源中之一者亦當作目的地,可支援多達兩個來源及一個目的地)。
修飾符欄位2346 – 其內容區別通用向量指令格式中指定記憶體存取之指令與未指定記憶體存取之指令的出現次數;也就是說,在無記憶體存取2305指令範本與記憶體存取2320指令範本之間進作區別。記憶體存取操作讀取及/或寫入至記憶體層次結構(在一些狀況中,使用暫存器中之值指定來源及/或目的位址),而非記憶體存取操作不這樣做(例如,來源及目的地係暫存器)。儘管在一範例中,此欄位亦在三種不同方式之間進行選擇以進行記憶體位址計算,替代範例仍可支援更多、更少、或不同方式以進行記憶體位址計算。
擴增運算欄位2350 – 其內容區別除了基址運算以外要進行之各種不同運算中之哪一者。此欄位具有脈絡特定性。在本揭露之一範例中,此欄位係劃分成一類別欄位2368、一阿爾法欄位2352及一貝他欄位2354。擴增運算欄位2350允許在一單一指令而不是2、3或4個指令中進行共同運算群組。
尺度欄位2360 – 其內容允許縮放索引欄位之內容以用於記憶體位址產生(例如,用於使用2 尺度* 索引 + 基址的位址產生)。
位移欄位2362A – 其內容係用作為記憶體位址產生之部分(例如,用於使用2 尺度* 索引 + 基址 + 位移之位址產生)。
位移因子欄位2362B(請注意,位移欄位2362A直接在位移因子欄位2362B上方之毗接指出使用一者或另一者) – 其內容係用作為位址產生之部分;其指定要按一記憶體存取之大小(N)縮放之一位移因子 – 其中N係記憶體存取中之位元組數量(例如,針對使用2 尺度* 索引 + 基址 + 縮放位移之位址產生)。冗餘低階位元受到忽略,且因此位移因子欄位之內容係乘以記憶體運算元總大小(N),以便產生要用於計算一有效位址之最終位移。N值係由處理器硬體在運行時間基於全運算碼欄位2374(本文中稍後作說明)及資料調處欄位2354C來確定。位移欄位2362A及位移因子欄位2362B屬於任選,因為其不用於無記憶體存取2305指令範本,及/或不同範例可僅實施這兩者中之一者或都不實施。
資料元素寬度欄位2364 – 其內容區別要使用若干資料元素寬度中之哪一者(在一些範例中用於所有指令;在其他範例中僅用於其中一些指令)。如果僅支援一個資料元素寬度,及/或使用運算碼之一些態樣支援資料元素寬度,則此欄位由於非需要而屬於任選。
寫入遮罩欄位2370—其內容基於每個資料元素位置來控制在目標向量運算元中之資料元素位置是否反映了基址運算及擴增運算的結果。A 類指令範本支援合併寫入遮罩,而B類指令範本支援合併和歸零寫入遮罩。當合併時,向量遮罩允許目的地中之任何元素集合在任何運算(由基址運算及擴增運算所指定)之執行期間受保護而不被更新;在其他範例中,當對應遮罩位元具有一0值時,保持目的地之各元素之舊值。對比而言,當歸零時,向量遮罩允許目的地中之任何元素集合在任何運算(由基址運算及擴增運算所指定)之執行期間被歸零;在一範例中,當對應遮罩位元具有一0值時,將目的地之一元素設定為0。此功能性之子集係為控制正執行之運算的向量長度之能力(亦即,元素之跨距自第一者至最後一者被修改);然而,被修改之元素並不需要為連續的。因此,寫入遮罩欄位2370允許部分向量運算,包括載入、儲存、算術、邏輯等。雖然描述了寫入遮罩欄位2370之內容選擇含有要被使用之寫入遮罩的多個寫入遮罩暫存器中之一者(且因此寫入遮罩欄位2370之內容間接識別要被執行之遮罩)的範例,但替代的或其他的不同範例允許遮罩寫入欄位2370之內容以直接指明要被執行之遮罩。
立即欄位2372 – 其內容允許指定一立即。此欄位屬於任選,因為其不存在於不支援立即之通用向量友好格式之一實作態樣中,也不存在於不使用一立即之指令中。
類別欄位2368 – 其內容在不同類別之指令之間作區別。請參照 23A~23B,此欄位之內容在A類與B類指令之間進行選擇。在 23A~23B中,圓角正方形係用於指出一欄位中存在一特定值(例如,對於類別欄位2368,在 23A~23B中分別為類別A 2368A及類別B 2368B)。 A類之指令範本
以A類之非記憶體存取2305指令範本來說明,阿爾法欄位2352係解譯為一RS欄位2352A,其內容區別要進行不同擴增運算類型中之哪一種(例如,分別為無記憶體存取、捨入型運算2310及無記憶體存取、資料變換型運算2315指令範本指定捨入2352A.1及資料變換2352A.2),而貝他欄位2354則區別要進行指定類型之操作中之哪一者。在無記憶體存取2305指令範本中,不存在尺度欄位2360、位移欄位2362A及位移尺度欄位2362B。 無記憶體存取指令範本 – 全捨入控制型運算
在無記憶體存取全捨入控制型運算2310指令範本中,貝他欄位2354係解譯為一捨入控制欄位2354A,其內容提供靜態捨入。儘管在本揭露之所述範例中,捨入控制欄位2354A包括抑制所有浮點例外(SAE)欄位2356及一捨入運算控制欄位2358,替代範例仍可支援可將這兩概念都編碼成相同欄位或僅具有這些概念/欄位中之一者或另一者(例如,可僅具有捨入運算控制欄位2358)。
SAE欄位2356 – 其內容區別是否停用例外事件報告;當SAE欄位之2356內容指出啟用抑制時,一給定指令不會報告任何種類之浮點例外旗標,也不會引發任何浮點例外處理程序。
捨入運算控制欄位2358 – 其內容區別要進行一組捨入運算中之哪一者(例如,無條件進位、無條件退位、朝向零捨入及向最近捨入)。因此,捨入運算控制欄位2358允許在一每指令基礎上變更捨入模式。在一處理器包括用於指定捨入模式之一控制暫存器的本揭露之一範例中,捨入運算控制欄位之2350內容對消彼暫存器值。 無記憶體存取指令範本 – 資料變換型運算
在無記憶體存取資料變換型運算2315指令範本中,貝他欄位2354係解譯為一資料變換欄位2354B,其內容區別要進行若干資料變換中之哪一者(例如,無資料變換、拌和、廣播)。
以A類之一記憶體存取2320指令範本來說明,阿爾法欄位2352係解譯為一驅逐提示欄位2352B,其內容區別要使用驅逐提示中之哪一者(在 23A中,分別為記憶體存取、時間性2325指令範本及記憶體存取、非時間性2330指令範本指定時間性2352B.1及非時間性2352B.2),而貝他欄位2354則係解譯為一資料調處欄位2354C,其內容區別要進行若干資料調處運算(亦稱為基元)中之哪一者(例如,無調處;廣播;一來源之升頻轉換;以及一目的地之降頻轉換)。記憶體存取2320指令範本包括尺度欄位2360,並且任選地包括位移欄位2362A或位移尺度欄位2362B。
向量記憶體指令進行向量從記憶體載入及向量儲存至記憶體,並且支援轉換。正如常規向量指令,向量記憶體指令以一資料元素方式將資料從/向記憶體轉移,實際轉移之元素係由選擇為寫入遮罩之向量遮罩之內容規定。 記憶體存取指令範本 – 時間性
時間性資料係可能以足以受惠於快取記憶體之速度予以再利用之資料。然而,此為一提示,並且不同處理器可採用不同方式實施,包括完全忽略提示。 記憶體存取指令範本 – 非時間性
非時間性資料係不太可能在第一層級快取記憶體中受惠於快取記憶體之速度予以再利用之資料,並且應該予以優先驅逐。然而,此為一提示,並且不同處理器可採用不同方式實施,包括完全忽略提示。 B類之指令範本
以B類之指令範本來說明,阿爾法欄位2352係解譯為一寫入遮罩控制(Z)欄位2352C,其內容區別由寫入遮罩欄位2370控制之寫入遮罩是否應該為一合併或一歸零。
以B類之非記憶體存取2305指令範本來說明,貝他欄位2354之部分係解譯為一RL欄位2357A,其內容區別要進行不同擴增運算類型中之哪一種(例如,捨入2357A.1及向量長度(VSIZE) 2357A.2係分別針對無記憶體存取、寫入遮罩控制、部分捨入控制型運算2312指令範本及無記憶體存取、寫入遮罩控制、VSIZE型運算2317指令範本予以指定),而貝他欄位2354之其餘部分區別要進行指定類型之運算中之哪個運算。在無記憶體存取2305指令範本中,不存在尺度欄位2360、位移欄位2362A及位移尺度欄位2362B。
在無記憶體存取、寫入遮罩控制、部分捨入控制型運算2310指令範本中,貝他欄位2354之其餘部分係解譯為一捨入運算欄位2359A,並且例外事件報告停用(一給定指令未報告任何種類之浮點例外旗標,並且未引發任何浮點異常處理程序)。
捨入運算控制欄位2359A – 正如捨入運算控制欄位2358,其內容區別要進行一組捨入運算中之哪一者(例如,無條件進位、無條件退位、朝向零捨入及向最近捨入)。因此,捨入運算控制欄位2359A允許在一每指令基礎上變更捨入模式。在一處理器包括用於指定捨入模式之一控制暫存器的本揭露之一範例中,捨入運算控制欄位之2350內容對消彼暫存器值。
在無記憶體存取、寫入遮罩控制、VSIZE型運算2317指令範本中,貝他欄位2354之其餘部分係解譯為一向量長度欄位2359B,其內容區別要對若干資料向量長度中之哪一者進行(例如:128、256或512位元組)。
以B類之一記憶體存取2320指令範本來說明,貝他欄位2354之部分係解譯為一廣播欄位2357B,其內容區別是否要進行廣播型資料調處運算,而其餘貝他欄位2354係解譯為向量長度欄位2359B。記憶體存取2320指令範本包括尺度欄位2360,並且任選地包括位移欄位2362A或位移尺度欄位2362B。
關於通用向量友善指令格式2300,示出一全運算碼欄位2374,其包括格式欄位2340、基址運算欄位2342、及資料元素寬度欄位2364。儘管示出全運算碼欄位2374包括所有這些欄位之一範例,在不支援所有這些欄位之範例中,全運算碼欄位2374包括少於所有這些欄位。全運算碼欄位2374提供運算碼(opcode)。
擴增運算欄位2350、資料元素寬度欄位2364、及寫入遮罩欄位2370允許在通用向量友善指令格式中以每指令為基礎指定這些特徵。
寫入遮罩欄位及資料元素寬度欄位之組合建立類型化指令,原因在於其允許基於不同資料元素寬度套用遮罩。
在A類及B類內找到之各種指令範本在不同情況下有益。在本揭露之一些範例中,一處理器內之不同處理器或不同核可僅支援A類、僅支援B類、或兩者都支援。舉例來說,通用運算意欲之一高效能通用無次序核心可僅支援B類,主要意欲用於圖形及/或科學(吞吐量)運算之一核心可僅支援A類,而兩者都意欲之一核心可兩者都支援(當然,具有來自兩類別之某範本與指令混合,但非具有來自兩類別之所有範本與指令的一核心在本揭露之範圍內)。此外,一單一處理器可包括多個核心,該等核心全都支援相同類別,或其中不同核心支援不同類別。舉例來說,在搭載獨立圖形及通用核心之一處理器中,圖形及/或科學運算主要意欲之圖形核心中之一者可僅支援A類,而通用核心中之一或多者可以是高效能通用核心,其帶有通用運算意欲之無次序執行及暫存器重命名,僅支援B類。不具有一單獨圖形核心之另一處理器可包括一個更通用有序或無次序核心,其支援A類及B類兩者。當然,在本揭露之不同範例中,來自一種類別之特徵亦可在另一類別中實施。以一高階語言編寫之程式將放入(例如,經適時編譯或靜態編譯)各種不同可執行形式,其包括:1)僅具有由目標處理器支援之類別之指令以供執行之一形式:或2)具有使用所有類別之指令之不同組合編寫之替代例行程序、並具有基於由目前正在執行程式碼之處理器支援之指令對要執行之例行程序進行選擇之控制流程程式碼的一形式。 範例特定向量友善指令格式
圖24A係一方塊圖,其根據本揭露之範例,繪示一範例性特定向量友善指令格式。 24展示一特定向量友善指令格式2400,其具有特定性之原因在於其指定欄位之位置、大小、解譯、及順序、以及彼等欄位中一些欄位之值。特定向量友善指令格式2400可用於延伸x86指令集,且因此欄位中有些與現有x86指令集及其延伸(例如:AVX)中使用之欄位類似或相同。此格式與現有帶延伸之x86指令集之前置碼編碼欄位、實際運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即欄位維持一致。繪示出自 24之欄位所映射的出自 23之欄位。
應瞭解的是,雖然本揭露之範例係為了說明性目的而在通用向量友善指令格式2300之脈絡中參照特定向量友善指令格式2400作說明,本揭露仍不受限於特定向量友善指令格式2400,除非有訴求。舉例而言,通用向量友善指令格式2300針對各種欄位思忖各種可能大小,而特定向量友善指令格式2400係示為具有特定大小欄位。舉特定範例來說,儘管資料元素寬度欄位2364在特定向量友善指令格式2400中係示為一單位元欄位,但本揭露並不如此受限(也就是說,通用向量友善指令格式2300思忖資料元素寬度欄位2364之其他大小)。
通用向量友善指令格式2300包括以下按 24A所示順序在下面列出之欄位。
EVEX前置碼(位元組0至3) 2402 – 以一四位元組形式編碼。
格式欄位2340(EVEX位元組0,位元[7:0]) – 第一個位元組(EVEX位元組0)係格式欄位2340,並且其含有0x62(在本揭露之一範例中用於區別向量友善指令格式之獨有值)。
第二至第四個位元組(EVEX位元組1至3)包括若干提供特定能力之位元欄位。
REX欄位2405(EVEX位元組1,位元[7-5]) – 由一EVEX.R位元欄位(EVEX位元組1,位元[7] – R)、EVEX.X位元欄位(EVEX位元組1,位元[6] – X)、及2357BEX位元組1,位元[5] – B)所組成。EVEX.R、EVEX.X及EVEX.B位元欄位提供與對應VEX位元欄位相同之功能,並且係使用1之補數形式進行編碼,舉例而言,ZMM0係編碼為1111B,ZMM15係編碼為0000B。指令之其他欄位對所屬技術領域已知之暫存器索引之較低三位元進行編碼(rrr、xxx及bbb),以使得Rrrr、Xxxx及Bbbb可藉由新增EVEX.R、EVEX.X、及EVEX.B來形成。
REX'欄位2310 – 此為REX'欄位2310之第一部分,並且係用於對延伸之32暫存器集中之上16或下16進行編碼之EVEX.R'位元欄位(EVEX位元組1,位元[4] - R')。在本揭露之一範例中,此位元連同如下所指之其他位元係以位元反轉格式儲存,以區別(在眾所周知之x86 32位元模式中)與實際運算碼位元組為62之BOUND指令,但在MOD R/M欄位(下文所述)中不接受MOD欄位中之值11;本揭露之替代範例未以反轉格式在下面儲存這個及其他所指位元。一值1係用於對較低16個暫存器進行編碼。換句話說,R'Rrrr係由將EVEX.R'、EVEX.R與來自其他欄位之其他RRR組合所形成。
運算碼映射欄位2415(EVEX位元組1,位元[3:0] – mmmm) – 其內容對一隱含之前導運算碼位元組(0F、0F 38、或0F 3)進行編碼。
資料元素寬度欄位2364 (EVEX位元組2,位元[7] – W) – 係由記號EVEX.W表示。EVEX.W係用於定義資料類型(32位資料元素或64位元資料元素)之粒度(大小)。
EVEX.vvvv 2420(EVEX位元組2,位元 [6:3]-vvvv)—EVEX.vvvv的作用可包括下列內容:1) EVEX.vvvv對第一來源暫存器運算元進行編碼,其以反置(1補數)形式指明且針對具有二或更多個來源運算元之指令有效;2) EVEX.vvvv對目的地暫存器運算元進行編碼,其以用於特定向量位移之1補數形式指明;或3) EVEX.vvvv不對任何運算元進行編碼,該欄位被保留且應含有1111b。因此,EVEX.vvvv 欄位2420對以反置(1補數)形式儲存之第一來源暫存器說明符的4個低位元進行編碼。根據指令,額外不同的EVEX位元欄位被使用來將說明符大小延伸至32個暫存器。
EVEX.U 2368類別欄位(EVEX位元組2,位元[2]-U) – 如果EVEX.U = 0,則指出A類或EVEX.U0;如果EVEX.U = 1,則指出B類或EVEX.U1。
前置碼編碼欄位2425(EVEX位元組2,位元[1:0]-pp) – 為基址運算欄位提供附加位元。除了以EVEX前置碼格式為舊有SSE指令提供支援以外,這還具有壓縮SIMD前置碼之效益(而不是需要一位元組用來表達SIMD前置碼,EVEX前置碼只需要2個位元)。在一範例中,為了支援在舊有格式及EVEX前置碼格式中都使用一SIMD前置碼(66H、F2H、F3H)之舊有SSE指令,這些舊有SIMD前置碼係編碼成SIMD前置碼編碼欄位;並且先在運行時間係擴大到舊有SIMD前置碼,然後再提供給解碼器之PLA(所以,PLA可執行這些舊有指令之舊有及EVEX格式而不用修改)。雖然較新指令可直接使用EVEX前置碼編碼欄位之內容作為一運算碼延伸,某些範例仍為了一致性而採用一類似方式擴展,但允許這些舊有SIMD前置碼指定不同意義。一替代範例可重新設計PLA以支援2位元SIMD前置碼編碼,並且因此不需要擴展。
阿爾法欄位2352(EVEX位元組3,位元[7] – EH;亦稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.write遮罩控制、及EVEX.N;亦以α繪示) – 如前述,此欄位具有脈絡特定性。
貝他欄位2354(EVEX位元組3,位元[6:4]-SSS,亦稱為EVEX.s 2-0、EVEX.r 2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以βββ繪示) – 如前述,此欄位具有脈絡特定性。
REX'欄位2310 – 此為REX'欄位之其餘部分,並且係可用於對延伸之32暫存器集中之上16或下16進行編碼之EVEX.V'位元欄位(EVEX位元組3,位元[3] - V')。此位元係以位元反轉格式儲存。一值1係用於對較低16個暫存器進行編碼。換句話說,V'VVVV係藉由組合EVEX.V'、EVEX.vvvv所形成。
寫入遮罩欄位2370(EVEX位元組3,位元[2:0]-kkk)—其內容指明如前所述之寫入遮罩暫存器中的暫存器之索引。在一範例中,特定值aaa=000具有暗示沒有運算遮罩被使用於特定指令之特殊行為(此可通過多種方式實現,包括使用硬連線至所有者之運算遮罩或繞過遮罩硬體之硬體)。
實際運算碼欄位2430(位元組4)亦稱為運算碼位元組。此欄位中指定運算碼之部分。
MOD R/M欄位2440(位元組5)包括MOD欄位2442、Reg欄位2444、及R/M欄位2446。如前述,MOD欄位之2442內容在記憶體存取與非記憶體存取操作之間作區別。Reg欄位2444之角色可總結為兩種情況:編碼目的地暫存器運算元或一來源暫存器運算元,或視為一運算碼延伸且不用於編碼任何指令運算元。R/M欄位2446之角色可包括以下所列:編碼參照一記憶體位址之指令運算元、或編碼目的地暫存器運算元或一來源暫存器運算元。
尺度、索引、基址(SIB)位元組(位元組6) – 如前述,尺度欄位之2350內容係用於記憶體位址產生。SIB.xxx 2454及SIB.bbb 2456 – 之前已針對暫存器索引Xxxx及Bbbb參照這些欄位之內容。
位移欄位2362A(位元組7至10) – 當MOD欄位2442含有10時,位元組7至10係位移欄位2362A,以及其運作方式與舊有32位元位移(disp32)相同,並且以位元組粒度運作。
位移因子欄位2362B(位元組7) – 當MOD欄位2442含有01時,位元組7係位移因子欄位2362B。此欄位之位置與舊有x86指令集8位元位移(disp8)之位置相同,其以位元組粒度運作。由於disp8係正負號延伸,其只能在-128與127個位元組之間定址;在64位元組快取記憶體列方面,disp8使用只能設定為四個真正有用值-128、-64、0及64之8個位元;由於通常需要一更大範圍,所以使用disp32;然而,但disp32需要4個位元組。與disp8及disp32形成對比,位移因子欄位2362B係disp8之一重新解譯;當使用位移因子欄位2362B時,實際位移係由位移因子欄位之內容乘以記憶體運算元存取之大小(N)所確定。這種類型之位移稱為disp8*N。這縮減了平均指令長度(用於位移之一單一位元組,但有一大很多之範圍)。此類經壓縮位移係基於有效位移係記憶體存取粒度倍數之假設,且因此不需要對位址偏移量之冗餘低階位元進行編碼。換句話說,位移因子欄位2362B替代舊有x86指令集之8位元位移。因此,位移因子欄位2362B之編碼方式與一x86指令集8位元位移之編碼方式相同(所以,ModRM/SIB編碼規則沒有變化),唯一例外是disp8係超載為disp8*N。換句話說,編碼規則或編碼長度沒有變化,而只是硬體對位移值之解譯有變化(其需要藉由記憶體運算元之大小來縮放位移以獲得一逐位元組位址偏移量)。立即欄位2372如前述運算。 全運算碼欄位
圖24B係一方塊圖,其根據本揭露之一範例,繪示組成全運算碼欄位2374之特定向量友善指令格式2400之欄位。具體而言,全運算碼欄位2374包括格式欄位2340、基址運算欄位2342、以及資料元素寬度(W)欄位2364。基址運算欄位2342包括前置碼編碼欄位2425、運算碼映射欄位2415、以及實際運算碼欄位2430。 暫存器索引欄位
圖24C係一方塊圖,其根據本揭露之一範例,繪示組成暫存器索引欄位2344之特定向量友善指令格式2400之欄位。具體而言,暫存器索引欄位2344包括REX欄位2405、REX'欄位2410、MODR/M.reg欄位2444、MODR/Mr/m欄位2446、VVVV欄位2420、xxx欄位2454、以及bbb欄位2456。 擴增運算欄位
圖24D係一方塊圖,其根據本揭露之一範例,繪示組成擴增運算欄位2350之特定向量友善指令格式2400之欄位。當類別(U)欄位2368含有0時,其表示EVEX.U0(A類2368A);當其含有1時,其表示EVEX.U1(B類2368B)。當U=0並且MOD欄位2442含有11(表示一無記憶體存取操作)時,阿爾法欄位2352(EVEX位元組3,位元[7] – EH)係解譯為rs欄位2352A。當rs欄位2352A含有1(捨入2352A.1)時,貝他欄位2354(EVEX位元組3,位元[6:4]-SSS)係解譯為捨入控制欄位2354A。捨入控制欄位2354A包括一單位元SAE欄位2356及一雙位元捨入運算欄位2358。當rs欄位2352A含有一0(資料變換2352A.2)時,貝他欄位2354(EVEX位元組3,位元[6:4]-SSS)係解譯為一三位元資料變換欄位2354B。當U=0並且MOD欄位2442含有00、01、或10(表示一記憶體存取操作)時,阿爾法欄位2352(EVEX位元組3,位元[7] – EH)係解譯為驅逐提示(EH)欄位2352B,並且貝他欄位2354(EVEX位元組3,位元[6:4]-SSS)係解譯為一三位資料調處欄位2354C。
當U=1時,阿爾法欄位2352(EVEX位元組3,位元[7] – EH)係解譯為寫入遮罩控制(Z)欄位2352C。當U=1且MOD欄位2442含有11(表示一無記憶體存取操作)時,貝他欄位2354之部分(EVEX位元組3,位元[4]-S 0係解譯為RL欄位2357A;當其含有一1(捨入2357A.1)時,貝他欄位2354之其餘部分(EVEX 位元組3,位元[6-5]-S 2-1)係解譯為捨入運算欄位2359A,而當RL欄位2357A含有一0(VSIZE 2357.A2)時,貝他欄位2354之其餘部分(EVEX位元組3,位元[6-5]-S 2-1)則解譯為向量長度欄位2359B(EVEX位元組3,位元[6-5]-L 1-0)。當U=1且MOD欄位2442含有00、01或10(表示一記憶體存取操作)時,貝他欄位2354(EVEX位元組3,位元[6:4]-SSS)係解譯為向量長度欄位2359B(EVEX位元組3,位元[6-5]-L 1-0)及廣播欄位2357B(EVEX位元組3,位元[4]-B)。 範例性暫存器架構
圖25為依據本揭露內容之一範例之一暫存器架構2500的一方塊圖。在所示範例中,有32個512位元寬之向量暫存器2510;這些暫存器係予以參照為zmm0至zmm31。較低16個zmm暫存器之較低階256位元係疊置在暫存器ymm0-16上。較低16個zmm暫存器之較低階128個位元(ymm暫存器之較低階128個位元)係疊置在暫存器xmm0-15上。特定向量友善指令格式2400在這些疊置暫存器檔案夾上運作,如下表所示。
可調整向量長度 類別 運算 暫存器
不包括向量長度欄位2359B之指令範本 A(圖23A;U=0) 2310、2315、2325、2330 zmm暫存器(向量長度為64位元組)
B(圖23B;U=1) 2312 zmm暫存器(向量長度為64位元組)
包括向量長度欄位2359B之指令範本 B(圖23B;U=1) 2317、2327 zmm、ymm、或xmm暫存器(向量長度為64位元組、32位元組或16位元組)取決於向量長度欄位2359B
換句話說,向量長度欄位2359B在最大長度與一或多個其他較短長度之間選擇,其中各此類較短長度為先前長度之長度的一半;且不具有向量長度欄位2359B之指令範本操作於最大向量長度上。此外,在一範例中,特定向量友善指令格式2400之B類指令範本操作於包封或純量單/雙精度浮點資料及包封或純量整數資料。純量運算為在ZMM/YMM/XMM暫存器中之最低階資料元素位置上執行之運算;取決於範例,該較高階資料元素位置係保持與其在指令之前相同或是歸零。
寫入遮罩暫存器2515 – 在所示範例中,有8個寫遮罩暫存器(k0至k7),大小各為64個位元。在一替代範例中,寫入遮罩暫存器2515之大小為16個位元。如前述,在本揭露之一範例中,向量遮罩暫存器k0不能用作為一寫入遮罩;當通常會指出k0之編碼係用於一寫入遮罩時,其選擇一硬佈線寫入遮罩0xFFFF,有效地停用彼指令用之寫入遮罩。
通用暫存器2525 – 在所示範例中,有十六個64位元通用暫存器係連同現有x86定址模式用於定址記憶體運算元。這些暫存器係由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP及R8至R15來參照。
純量浮點堆疊暫存器檔案夾(x87堆疊)2545,其上別名為MMX包封整數平坦暫存器檔案夾2550 – 在所示範例中,x87堆疊係用於在32/64/80位元浮點資料上使用x87指令集延伸進行純量浮點運算之一八元素堆疊;而MMX暫存器係用於對64位元包封整數資料進行運算,以及用於為在MMX與XMM暫存器之間進行之一些運算保持運算元。
本揭露內容之替代性範例可使用較寬或較窄的暫存器。另外,本揭露內容之替代性範例可使用更多、更少或不同暫存器夾及暫存器。 範例性核心架構、處理器以及電腦架構
處理器核心可出於不同目的而以不同方式被實施,且可位在不同處理器中。舉例來說,此等核心之實施可包括:1)欲用於通用運算之通用有序核心;2)欲用於通用運算之高效能通用無序核心;3)主要欲用於圖形及/或科學(處理量)運算之特定用途核心。不同處理器之實施可包括:1)一CPU,其包括欲用於通用運算之一或多個通用有序核心及/或欲用於通用運算之一或多個通用無序核心;以及2)包括主要欲用於圖形及/或科學(處理量)之一或多個特定用途核心之一共處理器。此等不同的處理器導致不同的電腦系統架構,其可包括:1)在與CPU分開之晶片上的共處理器;2)在與CPU相同之封裝中之分開晶粒上的共處理器;3)在與CPU相同之晶粒上的共處理器(在此狀況下,此一共處理器有時被稱為特定用途邏輯,諸如整合式圖形及/或科學(處理量)邏輯,或作為特定用途核心);及4)系統單晶片,其在如所描述的CPU(有時被稱為應用程式核心或應用程式處理器)之相同的晶粒上可包括前文所述之共處理器及額外的功能性。接下來描述範例性核心架構,接著為範例性處理器及計算機架構之描述。 範例性核心架構 有序及無序核心方塊圖
圖26A為依據本揭露內容之範例例示出一範例性有序管線及一範例性暫存器重命名、無序發布/執行管線兩者的一方塊圖。圖26B為依據本揭露內容之範例例示出要被包括於一處理器中之一有序架構核心的範例性範例及一範例性暫存器重命名、無序發布/執行架構核心兩者之一方塊圖。 26A~26B中之實線框例示出有序管線及有序核心,而可選擇的虛線框之添加例示出暫存器重命名、無序發布/執行管線及核心。考慮到有序態樣為無序態樣之子集,無序態樣將被描述。
26A中,處理器管線2600包括提取級2602、長度解碼級2604、解碼級2606、分配級2608、重命名級2610、排程(亦可被視為分派或發布)級2612、暫存器讀取/記憶體讀取級2614、執行級2616、回寫/記憶體寫入級2618、例外處置級2622及提交級2624。
圖26B展示處理器核心2690,其包括耦接至執行引擎單元2650之前端單元2630,且兩者皆被耦接至記憶體單元2670。核心2690可為縮減指令集運算(RISC)核心、複雜指令集運算(CISC)核心、極長指令字(VLIW)核心、或者混合式或替代式核心類型。而作為又一選項,核心2690可為特定用途核心,舉例而言,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用運算圖形處理單元(GPGPU)核心、圖形核心或其類似者。
前端單元2630包括耦接至指令快取記憶體單元2634之分支預測單元2632,該指令快取記憶體單元2634被耦接至指令轉譯後備緩衝器(TLB)2636,該指令轉譯後備緩衝器2636被耦接至指令提取單元2638,該指令提取單元2638被耦接至解碼單元2640。解碼單元2640(或解碼器或解碼單元)可解碼指令(例如,巨指令),並產生一或多個微運算、微碼進入點、微指令、其他的指令、或其他的控制訊號作為輸出,其等係從原始指令解碼、或以其他方式反射原始指令、或從原始指令導出。解碼單元2640可使用各種不同的機制來實施。合適機制之範例包含但不限於查找表、硬體實施、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一範例中,核心2690包括儲存用於特定巨指令(例如,在解碼單元2640中或以其他方式在前端單元2630內部)之微碼的微碼ROM或其他的媒體。解碼單元2640可被耦接至執行引擎單元2650中之重命名/分配器單元2652。
執行引擎單元2650包括耦接至引退單元2654及一組一或多個排程器單元2656之重命名/分配器單元2652。排程器單元2656代表任何數量的不同排程器,包括保留站、中央指令窗等。排程器單元2656係耦接至實體暫存器夾單元2658。實體暫存器夾單元2658中之各者代表一或多個實體暫存器夾,其中不同的實體暫存器夾儲存一或多個不同資料類型,諸如純量整數、純量浮點、包封整數、包封浮點、向量整數、向量浮點、狀態(例如,要被執行之下一指令的位址之一指令指標)等。在一範例中,實體暫存器夾單元2658包含向量暫存器單元、寫入遮罩暫存器單元及純量暫存器單元。此等暫存器單元可提供架構向量暫存器、向量遮罩暫存器及通用暫存器。實體暫存器夾單元2658被由引退單元2654所交疊以例示暫存器重命名及無序執行可被實施之各種方式(例如,使用重排序緩衝器及引退暫存器夾;使用未來夾、歷史緩衝器及引退暫存器夾;使用暫存器映像及暫存器集區;等等)。引退單元2654及實體暫存器夾單元2658係耦接至執行叢集2660。執行叢集2660包括一組一或多個執行單元2662及一組一或多個記憶體存取單元2664。執行單元2662可進行各種操作(例如,移位、加法、減法、乘法)且針對各種類型之資料(例如,純量浮點、包封整數、包封浮點、向量整數、向量浮點)執行。儘管一些範例可包括專用於特定功能或功能集合之數個執行單元,但其他範例可包括僅一個執行單元或皆執行所有功能之多個執行單元。排程器單元2656、實體暫存器夾單元2658及執行叢集2660被展示為可能複數個,因為某些範例建立用於某些類型之資料/運算之獨立管線(例如,各自具有其自身排程器單元、實體暫存器夾單元及/或執行叢集的純量整數管線、純量浮點/包封整數/包封浮點/向量整數/向量浮點管線及/或記憶體存取管線—且在一獨立記憶體存取管線之狀況下,可實施僅此管線之執行叢集具有記憶體存取單元2664之某些範例)。亦應理解,在使用獨立管線之情況下,此等管線中之一或多者可為無序發布/執行且其餘部分為有序的。
該組記憶體存取單元2664係耦接至記憶體單元2670,該記憶體單元2670包括耦接至資料快取記憶體單元2674之資料TLB單元2672,該資料快取記憶體單元2674耦接至層級2(L2)快取記憶體單元2676。在一個範例性範例中,記憶體存取單元2664可包括載入單元、儲存位址單元及儲存資料單元,其中之各者係耦接至記憶體單元2670中之資料TLB單元2672。指令快取記憶體單元2634係進一步耦接至記憶體單元2670中之層級2(L2)快取記憶體單元2676。L2快取記憶體單元2676係耦接至一或多個其他層級之快取記憶體且最終耦接至主記憶體。
在某些範例中,包括一預取電路2678以預取資料,舉例而言,用以預測存取位址並將彼等位址用之資料帶入一或諸快取記憶體中(例如,來自記憶體2680)。
藉助於範例,範例性暫存器重命名、無序發布/執行核心架構可如下來實施管線2600:1)指令提取2638執行提取及長度解碼級2602與2604;2)解碼單元2640執行解碼級2606;3)重命名/分配器單元2652執行分配級2608及重命名級2610;4)排程器單元2656進行排程級2612;5)實體暫存器夾單元2658及記憶體單元2670進行暫存器讀取/記憶體讀取級2614;執行叢集2660進行執行級2616;6)記憶體單元2670及實體暫存器夾單元2658進行回寫/記憶體寫入級2618;7)各種單元可被包括於例外處置級2622;以及8)引退單元2654及實體暫存器夾單元2658進行提交級2624。
核心2690可支援包括本文所描述的指令之一或多個指令集,例如:x86指令集(具有在較新版本中被新增之某些延伸)、位於Sunnyvale, CA的MIPS Technologies之MIPS指令集、位於Sunnyvale, CA的ARM Holdings之ARM指令集(具有諸如NEON之可選額外延伸)。在一範例中,核心2690包括用以支援包封資料指令集延伸(例如,AVX1、AVX2)的邏輯,從而允許由許多多媒體應用程式所使用的操作使用包封資料來被執行。
應瞭解的是,該核心可支援多執行緒(執行二或更多個運算或執行緒平行集合),並且可採用各種方式來進行,包括時間切片多執行緒、同時多執行緒(其中單一實體核心提供一邏輯核心予各執行緒,使得實體核心進行同時多執行緒)、或以上的組合(例如:時間切片提取與解碼、以及之後的同時多執行緒,例如Intel® Hyperthreading技術)。
儘管暫存器重命名係在無次序執行之背景下作說明,仍應瞭解的是,暫存器重命名可在按次序架構中使用。儘管該處理器之所示範例亦包括單獨指令及資料快取記憶體單元2634/2674、以及一共享L2快取記憶體單元2676,替代範例仍可具有用於指令與資料兩者之單一內部快取記憶體,舉例而言例如一層級1(L1)內部快取記憶體、或多層級之內部快取記憶體。在一些範例中,該系統可包括有一內部快取記憶體與一外部快取記憶體之一組合,該外部快取記憶體係位在核心及/或處理器外部。替代地,該快取記憶體全都可位在核心及/或處理器外部。 具體範例性有序核心架構
圖27A~27B繪示一更具體範例性有序核心架構的一方塊圖,該核心將是一晶片中數個邏輯區塊(包括相同類型及/或不同類型之其他核心)中之一者。邏輯區塊係透過一高頻寬互連網路(例如:一環形網路)與一些固定式功能邏輯、記憶體IO介面、及其他必要IO邏輯通訊,端視應用而定。
圖27A根據本揭露之範例,係一單一處理器核心連同其連至晶粒上互連網路2702以及與其層級2(L2)快取記憶體2704之局部子集之連接的一方塊圖。在一範例中,一指令解碼單元2700支援帶有一包封資料指令集延伸之x86指令集。一L1快取記憶體2706允許快取記憶體到純量及向量單元之低潛時存取。儘管在一範例中(為了簡化設計),一純量單元2708及一向量單元2710使用單獨之暫存器集(分別為純量暫存器2712及向量暫存器2714),並且在其之間轉移之資料係寫入至記憶體,然後從一層級1(L1)快取記憶體2706中讀回,本揭露之替代範例可使用一不同作法(例如,使用一單一暫存器集,或包括允許資料在兩個暫存器檔案夾之間轉移而不予以寫入及讀回之一通訊路徑)。
L2快取記憶體2704之局部子集係一全域L2快取記憶體之部分,其係劃分成單獨局部子集,每個處理器核心一個。各處理器核心具有連至其L2快取記憶體2704之自有局部子集的一直接存取路徑。由一處理器核心讀取之資料係儲存在其L2快取記憶體子集2704中,並且可快速存取,與存取其自有局部L2快取記憶體子集之其他處理器核心平行。由一處理器核心寫入之資料係儲存在其自有L2快取記憶體子集2704中,並且在必要時從其他子集排清。環形網路確保共享資料之一致性。環形網路屬於雙向,用以允許諸如處理器核心、L2快取記憶體及其他邏輯區塊等代理器在晶片內彼此通訊。各環形資料路徑每個方向為1012位元寬。
圖27B根據本揭露之範例,係 27A中處理器核心之部分的一展開圖。 27B包括L1快取記憶體2704之一L1資料快取記憶體2706A部分,以及關於向量單元2710及向量暫存器2714之更多細節。具體而言,向量單元2710係一16寬向量處理單元(VPU)(請參閱16寬ALU 2728),其執行整數、單精確浮點、及雙精確浮點指令中之一或多者。VPU支援以拌和單元2720拌和暫存器輸入、以數字轉換單元2722A~2722B進行數字轉換、以及以複製單元2724在記憶體輸入上進行複製。寫入遮罩暫存器2726允許預測所產生之向量寫入。
圖28為依據本揭露內容之範例之可具有多於一個核心、可具有一整合式記憶體控制器、且可具有整合式圖形之處理器2800的一方塊圖。 28中之實線框例示出具有一單一核心2802A、系統代理2810、一組一或多個匯流排控制器單元2816的處理器2800,而可選擇的虛線框之添加例示出具有多個核心2802A~2802N、系統代理單元2810中之一組一或多個整合式記憶體控制器單元2814及特定用途邏輯2808之另類的處理器2800。
因此,處理器2800之不同實施可包括:1)一CPU,其具有特定用途邏輯2808及核心2802A~2802N,特定用途邏輯2808為整合式圖形及/或科學(處理量)邏輯(其可包括一或多個核心),核心2802A~2802N為一或多個通用核心(例如,通用有序核心、通用無序核心、兩者之一組合);2)具有核心2802A~2802N之一共處理器,核心2802A~2802N為主要欲用於圖形及/或科學(處理量)之大量特定用途核心;及3)具有核心2802A~2802N之一共處理器,核心2802A~2802N為大量通用有序核心。因此,處理器2800可為一通用處理器、共處理器或特定用途處理器,舉例而言諸如一網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、一高處理量多整合式核心(MIC)共處理器(其包括30或更多個核心)、嵌入式處理器、或類似者。該處理器可被實施於一或多個晶片上。處理器2800可為利用多種製程技術中之任一者而為一或多個基材之部分及/或可在一或多個基材上被實施,舉例而言,此多種製程技術為諸如BiCMOS、CMOS、或NMOS。
記憶體階層包括在核心內部之一或多個快取記憶體2804A~2804N層級、一組一或多個共享快取記憶體單元2806、及耦接至該組整合式記憶體控制器單元2814的外部記憶體(未示出)。該組共享快取記憶體單元2806可包括一或多個中間層級快取記憶體,諸如層級2(L2)、層級3(L3)、層級4(L4)、或其他層級之快取記憶體、一最末級快取記憶體(LLC)、及/或其之組合。儘管在一範例中,以環形為基礎之互連單元2812將整合式圖形邏輯2808、該組共享快取記憶體單元2806及系統代理單元2810/整合式記憶體控制器單元2814進行互連,替代範例可使用任何數目之已知技術用於將此等單元進行互連。在一範例中,在一或多個快取記憶體單元2806及核心2802A~2802N之間維持一致性。
在一些範例中,核心2802A~2802N中之一或多者能夠有多執行緒。系統代理2810包括那些協調及操作核心2802A~2802N之組件。系統代理單元2810舉例而言可包括電源控制單元(PCU)及顯示單元。PCU可為或包括用於調節核心2802A~2802N及整合式圖形邏輯2808之功率狀態所需的邏輯及組件。該顯示器單元係用於驅動一或多個外部連接之顯示器。
核心2802A~2802N在架構指令集方面可具有同質性之或異質性;也就是說,核心2802A~2802N中之二或更多者可有能力執行相同指令集,而其他核心則可有能力僅執行彼該指令集之一子集或一不同指令集。 範例性電腦架構
圖29~32為範例性電腦架構之一方塊圖。用於膝上型電腦、桌上型電腦、手持式個人電腦(PC)、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持式裝置及各種其他電子裝置之此等技術中已知的其他系統設計及組配亦為合適的。一般來說,能夠併入如本文所揭露之處理器及/或其他執行邏輯的種類繁多之系統或電子裝置通常為合適的。
現請參照 29,根據本揭露之一範例,所示係一系統2900的一方塊圖。系統2900可包括有一或多個處理器2910、2915,其係耦接至一控制器集線器(GMCH) 2920。在一範例中,控制器集線器2920包括一圖形記憶體控制器集線器(GMCH) 2990及一輸入/輸出集線器(IOH) 2950(其可位在單獨晶片上);GMCH 2990包括與記憶體2940及一共處理器2945耦接之記憶體及圖形控制器;IOH 2950將輸入/輸出(IO)裝置2960耦接至GMCH 2990。替代地,記憶體及圖形控制器之一者或兩者係整合在處理器內(如本文中所述),記憶體2940及共處理器2945係直接耦接至處理器2910,並且控制器集線器2920係與IOH 2950在一單晶片中耦接。記憶體2940可包括程式碼2940A,其舉例而言,在受執行時,致使一處理器進行本揭露之任何方法。
圖29中以虛線表示附加處理器2915之任選性質。各處理器2910、2915可包括本文中所述處理核心中之一或多者,並且可以是處理器2800之某版本。
記憶體2940舉例而言,可以是動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或這兩者之一組合。對於至少一個範例,控制器集線器2920經由諸如一前側匯流排(FSB)之一多分支匯流排、諸如快速路徑互連(QPI)之點對點介面、或類似連接2995與處理器2910、2915通訊。
在一範例中,共處理器2945為特定用途處理器,舉例而言,諸如高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或其類似者。在一範例中,控制器集線器2920可包括整合式圖形加速器。
依據包括架構、微架構、熱、功率消耗特性及類似者之一連串優點計量,實體資源2910、2915間可以有各種差異。
在一範例中,處理器2910執行對一通用類型之資料處理操作進行控制之指令。嵌入在指令內的可以是共處理器指令。處理器2910將這些共處理器指令辨識為應該由附接共處理器2945所執行之一類型。因此,處理器2910在一共處理器匯流排或其他互連上向共處理器2945發出這些共處理器指令(或表示共處理器指令之控制信號)。共處理器2945接受並執行接收到之共處理器指令。
現請參照 30根據本揭露之一範例,所示係一第一更具體範例性系統3000的一方塊圖。如 30所示,多處理器系統3000係一點對點互連件系統,並且包括有經由一點對點互連件3050耦接之一第一處理器3070與一第二處理器3080。處理器3070及3080各可以是處理器2800之某版本。在本揭露之一範例中,處理器3070及3080分別係處理器2910及2915,而共處理器3038則係共處理器2945。在另一範例中,處理器3070及3080分別係處理器2910及共處理器2945。
所示處理器3070與3080分別包括整合式記憶體控制器(IMC)單元3072與3082。處理器3070亦包括點對點(P-P)介面3076與3078作為其匯流排控制器單元之部分;類似的是,第二處理器3080包括P-P介面3086與3088。處理器3070、3080可使用P-P介面電路3078、3088經由一點對點(P-P)介面3050交換資訊。如 30所示,IMC 3072與3082將處理器耦接至相應記憶體,即一記憶體3032與一記憶體3034,其可以是主記憶體局部附接至該等相應處理器之部分。
處理器3070、3080各可使用點對點介面電路3076、3094、3086、3098經由個別P-P介面3052、3054與一晶片組3090交換資訊。晶片組3090可任選地經由一高效能介面3039與共處理器3038交換資訊。在一範例中,共處理器3038為特定用途處理器,舉例而言,諸如高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或其類似者。
共享快取記憶體(未示出)可被包括於處理器中或位在兩個處理器的外部,再經由P-P互連件與處理器連接,使得當處理器係處於低功率模式中時,處理器之本地快取記憶體資訊任一者或兩者可被儲存於共享快取記憶體中。
晶片組3090可經由一介面3096耦接至一第一匯流排3016。在一範例中,第一匯流排3016可以是一週邊組件互連(PCI)匯流排、或諸如一PCI快速匯流排或另一第三代IO互連匯流排之一匯流排,但本揭露之範疇並不如此受限。
30中所顯示,各種I/O裝置3014可耦接至第一匯流排3016,連帶耦接至匯流排橋接器3018,該匯流排橋接器3018將第一匯流排3016耦接至第二匯流排3020。在一範例中,諸如共處理器、高處理量MIC處理器、GPGPU、加速器(諸如圖形加速器或數位訊號處理(DSP)單元)、場域可程式化閘陣列或任何其他的處理器之一或多個額外處理器3015被耦接至第一匯流排3016。在一範例中,第二匯流排3020可為低接腳計數(LPC)匯流排。各種裝置可被耦接至第二匯流排3020,這些裝置舉例而言包括鍵盤及/或滑鼠3022、通訊裝置3027及儲存單元3028,諸如磁碟機或在一範例中可包括指令/程式碼及資料3030之其他大容量儲存裝置。再者,音訊I/O 3024可被耦接至第二匯流排3020。應注意,其他架構係可能的。舉例而言,取代 30之點對點架構,系統可實施多點匯流排或其他的此種架構。
現請參照 31根據本揭露之一範例,所示係一第二更具體範例性系統3100的一方塊圖。 30 與31中相似的元件有相似的參考編號,而且 31已省略 30之某些態樣,為的是要避免混淆 31之其他態樣。
圖31繪示處理器3070、3080分別可包括有整合式記憶體及IO控制邏輯(「CL」)3072與3082。因此,CL 3072、3082包括整合式記憶體控制器單元,並且包括IO控制邏輯。 31繪示不僅記憶體3032、3034耦接至CL 3072、3082,IO裝置3114亦耦接至控制邏輯3072、3082。舊有IO裝置3115係耦接至晶片組3090。
現請參照 32,根據本揭露之一範例,所示係一SoC 3200的一方塊圖。 28中類似的元件有相似的參考編號。同樣地,虛線方塊係更先進SoC上之任選特徵。在 32中,一互連單元3202係耦接至:一應用處理器3210,其可包括一或多個核心2802A~2802N之一集合及共享快取記憶體單元2806;一系統代理單元2810;一匯流排控制器單元2816;一整合式記憶體控制器單元2814;一或多個共處理器3220之一集合,其可包括整合式圖形邏輯、一影像處理器、一音訊處理器、及一視訊處理器;一靜態隨機存取記憶體(SRAM)單元3230;一直接記憶體存取(DMA)單元3232;以及用於耦接至一或多個外部顯示器之一顯示單元3240。在一範例中,共處理器3220包括一特定用途處理器,舉例如一網路或通訊處理器、壓縮引擎、GPGPU、一高處理量MIC處理器、嵌入式處理器、或類似者。
本文中所揭露內容之(例如機制的)範例可採用硬體、軟體、韌體、或此等實施方法之一組合來被實現。本揭露內容之範例可被實現為在包含至少一個處理器、一儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一個輸入裝置、及至少一個輸出裝置之可程式化系統上執行之電腦程式或程式碼。
諸如例示於 30中的碼3030之程式碼可被應用於輸入指令以執行本文所描述之功能並產生輸出資訊。以已知方式,輸出資訊可被應用於一或多個輸出裝置。為了本申請案之目的,處理系統包括具有處理器之任何系統,該處理器諸如,舉例來說,數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)、或微處理器。
程式碼可被以高階程序或物件導向式程式設計語言來實現以與處理系統通訊。若需要,程式碼亦可用組合語言或機器語言來實現。事實上,本文中所描述之機制在範疇上並不限於任何特定程式設計語言。在任何情況下,該語言可以是編譯語言或解譯語言。
至少一個範例之一或多個態樣可藉由儲存於機器可讀媒體上的表示處理器內之各種邏輯之代表性指令來被實施,該等代表性指令當由機器讀取時致使該機器建構用以執行本文中所描述之技術的邏輯。被稱為「IP核心」之此等表示可被儲存於有形機器可讀媒體上,並且供應至各種消費者或製造設施,以載入至實際構成該邏輯或處理器之建構機器中。
此等機器可讀儲存媒體可包括但不限於由機器或裝置製造或形成之物品的非暫時性有形配置,包括儲存媒體,諸如硬碟、包括軟碟之任何其他類型之磁碟、光碟、緊密光碟唯讀記憶體(CD-ROM)、可重寫緊密光碟(CD-RW)及磁光碟、諸如唯讀記憶體(ROM)之半導體裝置、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)之隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光學卡,或適合於儲存電子指令的任何其他類型之媒體。
因此,本揭露內容之範例亦可包括含有指令或含有設計資料之非暫時性有形機器可讀媒體,諸如硬體描述語言(HDL),其界定本文中所描述之結構、電路、設備、處理器及/或系統特徵。此等範例亦可被稱作程式產品。 仿真(包括二進位轉譯、代碼編程等)
在一些情況下,指令轉換器可被使用來將指令自來源指令集轉換至目標指令集。舉例而言,指令轉換器可將指令轉譯(例如,使用靜態二進位轉譯、包括動態編譯之動態二進位轉譯)、轉化、模仿或以其他方式轉換成要由核心所處理之一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合予以實施。指令轉換器可在處理器上、在處理器外,或部分地在處理器上且部分地在處理器外。
圖33為依據本揭露內容之範例對比使用軟體指令轉換器來將在一來源指令集中之二進位指令轉換為在一目標指令集中之二進位指令之一方塊圖。在所例示的範例中,指令轉換器為軟體指令轉換器,但替代地,指令轉換器可以軟體、韌體、硬體或其各種組合予以實施。 33展示可使用x86編譯器3304來編譯呈高階語言3302之程式以產生x86二進位碼3306,該x86二進位碼3306可原生地由具有至少一個x86指令集核心3316之處理器所執行。具有至少一個x86指令集核心3316之處理器代表可藉由相容地執行或以其他方式處理以下各者以達成與具有至少一個x86指令集核心之Intel®處理器實質上相同的結果而執行與具有至少一個x86指令集核心之Intel®處理器實質上相同的功能的任一處理器:(1) Intel® x86指令集核心的指令集之實質部分,或(2)目標為在具有至少一個x86指令集核心之Intel®處理器上運行的應用程式或其他軟體之目的碼版本。該x86編譯器3304代表可操作以產生x86二進位碼3306(例如,目的碼)之編譯器,該x86二進位碼3306可在具有或不具有額外鏈結處理的情況下,在具有至少一個x86指令集核心3316之處理器上執行。相似地, 33展示可使用替代性指令集編譯器3308來編譯呈高階語言3302之程式以產生替代性指令集二進位程式碼3310,該替代性ISA二進位程式碼3310可原生地由不具有至少一個x86指令集核心3314之處理器所執行(例如,具有執行位於Sunnyvale, CA的MIPS Technologies之MIPS指令集及/或執行位於Sunnyvale, CA的ARM Holdings之ARM指令集的核心之處理器)。指令轉換器3312係用以將x86二進位碼3306轉換成可原生地由不具有x86指令集核心3314之處理器所執行的程式碼。此經轉換之程式碼不太可能與替代性指令集二進位碼3310相同,因為能夠做到此點之指令轉換器很難製造;然而,該經轉換之程式碼將實現一般操作且由來自替代性指令集之指令所構成。因此,指令轉換器3312代表透過仿真、模擬或任何其他程序而允許不具有x86指令集處理器或核心之處理器或其他電子裝置去執行x86二進位碼3306的軟體、韌體、硬體或其組合。
100:電腦系統 101,101-0,…,101-N:信賴域管理器 102,102-0,…,102-N,2802A,…,2802N:核心 103,103-0,…,103-N,121:暫存器 104:IO組織架構介面 104A:受安全保護鏈路 106:裝置 106-0,…,106-N:加速器電路 108,2680,2940,3032,3034:記憶體 110:虛擬機監測器程式碼 110A:主機OS 110B:VMM 112:使用者代碼 114:非信賴域記憶體 116:信賴域記憶體 118:硬體初始化管理器(非暫時性)儲存器 120:IOMMU 122:DMA電路 124:解壓縮器電路 126,132:多工器 128:壓縮器電路 130:篩選引擎 134:區域記憶體 136:裝置安全性管理器 200,2900,3000,3100:系統 202:主機 204:TPA 206-1,206-2:信賴域 208:根埠 210:端點 212:裝置憑證 214,216:裝置介面 302:IO TLB 304:無效佇列 306:可信賴無效佇列 308A,308B,308C,312:IOMMU暫存器 310A,310B,310C,316:可信賴IOMMU暫存器 314A:控制暫存器/模式暫存器 314B:增強型命令暫存器 314C:全域命令暫存器 318:PCIe控制器 320:IDE編碼器/解碼器 322:非私用轉譯表 324:可信賴轉譯表 326:安全延伸頁表 328:共享延伸頁表 402:入站異動快取記憶體 404:金鑰篩選器 406:OTC 408:IRP 500:IOMMU暫存器 1100:延伸能力暫存器 1200:增強型命令狀態暫存器 1300:增強型命令能力暫存器 1500:增強型命令回應暫存器 1600:處理集信賴域模式位元 1700,1800,1900,2000:錯誤報告 2100:轉譯結構表格 2200:操作 2202,2204,2206:程序塊 2300:通用向量友善指令格式 2305,2320:記憶體存取 2327:記憶體存取、寫入遮罩控制 2340:格式欄位 2342:基址運算欄位 2344:暫存器索引欄位 2346:修飾符欄位 2350:擴增運算欄位 2352:阿爾法欄位 2352A:RS欄位 2352A.1,2357A.1:捨入 2352A.2:資料變換 2352B:驅逐提示欄位 2352B.1:時間性 2352B.2:非時間性 2354:貝他欄位 2354A:捨入控制欄位 2354B:資料變換欄位 2354C:資料調處欄位 2356:單位元SAE欄位 2357A:RL欄位 2357A.2:VSIZE 2357B:廣播欄位 2358:捨入運算控制欄位 2359A:捨入運算欄位 2359B:向量長度欄位 2360:尺度欄位 2362A:位移欄位 2362B:位移尺度欄位 2364:資料元素寬度欄位 2368:欄位 2368A:A類 2368B:B類 2370:寫入遮罩欄位 2372:立即欄位 2374:全運算碼欄位 2400:特定向量友善指令格式 2405:REX欄位 2410:REX’欄位 2415:運算碼映射欄位 2420:VVVV欄位 2425:前置碼編碼欄位 2430:實際運算碼欄位 2440:MOD R/M欄位 2442:MOD欄位 2444:Reg欄位 2446:R/M欄位 2454:xxx欄位 2456:bbb欄位 2500:暫存器架構 2510:向量暫存器 2515,2726:寫入遮罩暫存器 2525:通用暫存器 2545:純量浮點堆疊暫存器檔案夾 2550:MMX包封整數平坦暫存器檔案夾 2600:處理器管線 2602:提取級 2604:長度解碼級 2606:解碼級 2608:分配級 2610:重命名級 2612:排程級 2614:暫存器讀取/記憶體讀取級 2616:執行級 2618:回寫/記憶體寫入級 2622:例外處置級 2624:提交級 2630:前端單元 2632:分支預測單元 2634:指令快取記憶體單元 2636:TLB 2638:指令提取單元 2640:解碼單元 2650:執行引擎單元 2652:重命名/分配器單元 2654:引退單元 2656:排程器單元 2658:實體暫存器夾單元 2660:執行叢集 2662:執行單元 2664:記憶體存取單元 2670:記憶體單元 2672:資料TLB單元 2674:資料快取記憶體單元 2676:層級2(L2)快取記憶體單元 2678:預取電路 2690:處理器核心 2700:指令解碼單元 2702:晶粒上互連網路 2704:2階(L2)快取記憶體 2706:L1快取記憶體 2706A:L1資料快取記憶體 2708:純量單元 2710:向量單元 2712:純量暫存器 2714:向量暫存器 2720:拌和單元 2722A,2722B:數字轉換單元 2724:複製單元 2728:16寬ALU 2800,2910,2915,3015,3070,3080:處理器 2804A,…,2804N:快取記憶體 2806:共享快取記憶體單元 2808:整合式圖形邏輯 2810:系統代理器 2812:以環形為基礎之互連單元 2814:整合式記憶體控制器單元 2816:匯流排控制器單元 2920:控制器集線器 2940A:程式碼 2945,3038,3220:共處理器 2950:IOH 2960:輸入/輸出(IO)裝置 2990:GMCH 2995:類似連接 3014,3114,3115:IO裝置 3016,3020:匯流排 3018:匯流排橋接器 3022:鍵盤及/或滑鼠 3024:音訊IO 3027:通訊裝置 3028:儲存單元 3030:指令/程式碼及資料 3039:高效能介面 3050:點對點(P-P)介面 3052,3054,3088:P-P介面 3072,3082:IMC 3076,3078,3086,3094,3098:點對點介面電路 3090:晶片組 3096:介面 3200:SoC 3202:互連單元 3210:應用處理器 3230:靜態隨機存取記憶體(SRAM)單元 3232:直接記憶體存取(DMA)單元 3240:顯示單元 3302:高階語言 3304:x86編譯器 3306:x86二進位碼 3308:指令集編譯器 3310:指令集二進位碼 3312:轉換器 3314,3316:x86指令集核心
本揭露係以舉例方式作說明,並且不受限於附圖之圖式,附圖中相似之參照指出相似之元件,以及其中:
圖1根據本揭露之範例,繪示一電腦系統的一方塊圖,其包括具有一信賴域管理器之複數個核心、一記憶體、一輸入/輸出記憶體管理單元(IOMMU)、及一輸入/輸出(IO)裝置。
圖2根據本揭露之範例,繪示耦接至一IO裝置之一主機的一方塊圖。
圖3A根據本揭露之範例繪示具有一IO轉譯後備緩衝器(IO TLB)之一IOMMU的一方塊圖。
圖3B根據本揭露之範例,針對圖3B之IOMMU,繪示轉譯表及可信賴轉譯表的一方塊圖。
圖4根據本揭露之範例,繪示包括一IOMMU之一非一致性至一致性橋接的一方塊圖。
圖5根據本揭露之範例,係IOMMU暫存器之一表格。
圖6根據本揭露之範例,係一可信賴根表格位址暫存器之一範例格式。
圖7根據本揭露之範例,係一可信賴無效佇列頭端暫存器之一範例格式。
圖8根據本揭露之範例,係一可信賴無效佇列尾端暫存器之一範例格式。
圖9根據本揭露之範例,係一可信賴無效佇列位址暫存器之一範例格式。
圖10根據本揭露之範例,係一信賴域(例如:信賴域延伸(TDX))模式暫存器之一範例格式。
圖11根據本揭露之範例,係具有信賴域IO能力列舉之一延伸能力暫存器之一範例格式。
圖12根據本揭露之範例,係一增強型命令狀態暫存器之一範例格式。
圖13根據本揭露之範例,係一增強型命令能力暫存器之一範例格式。
圖14根據本揭露之範例,係一增強型命令暫存器之一範例格式。
圖15根據本揭露之範例,係一增強型命令回應暫存器之一範例格式。
圖16根據本揭露之範例,係一處理集信賴域(例如:信賴域延伸(TDX))模式位元之一範例格式。
圖17根據本揭露之範例,係一範例錯誤報告之一範例格式。
圖18根據本揭露之範例,係一範例錯誤報告之一範例格式。
圖19根據本揭露之範例,係一第一層級頁表(FLPT)步行期間針對一故障之一範例錯誤報告之一範例格式。
圖20根據本揭露之範例,係一第二層級頁表(SLPT)步行期間針對故障之一範例錯誤報告之一範例格式。
圖21根據本揭露之範例,係轉譯結構之一表格。
圖22係一流程圖,其根據本揭露之範例,繪示針對來自一輸入/輸出裝置之一信賴域之一受保護記憶體之一直接記憶體存取,用於處理一請求之一方法之操作。
圖23A係一方塊圖,其根據本揭露之範例,繪示一通用向量友善指令格式及其A類指令範本。
圖23B係一方塊圖,其根據本揭露之範例,繪示通用向量友善指令格式及其B類指令範本。
圖24A係一方塊圖,其根據本揭露之範例,繪示圖23A及23B中通用向量友善指令格式用之欄位。
圖24B係一方塊圖,其根據本揭露之一範例,繪示圖24A中組成一全運算碼欄位之特定向量友善指令格式之欄位。
圖24C係一方塊圖,其根據本揭露之一範例,繪示圖24A中組成一暫存器索引欄位之特定向量友善指令格式之欄位。
圖24D係一方塊圖,其根據本揭露之一範例,繪示圖24A中組成擴增運算欄位2350之特定向量友善指令格式之欄位。
圖25為依據本揭露內容之一範例之一暫存器架構的一方塊圖。
圖26A為依據本揭露內容之範例例示出一範例性有序管線及一範例性暫存器重命名、無序發布/執行管線兩者的一方塊圖。
圖26B為依據本揭露內容之範例例示出要被包括於一處理器中之一有序架構核心的範例性範例及一範例性暫存器重命名、無序發布/執行架構核心兩者之一方塊圖。
圖27A根據本揭露之範例,係一單一處理器核心連同其連至晶粒上互連網路以及與其層級2(L2)快取記憶體局部子集之連接的一方塊圖。
圖27B根據本揭露之範例,係圖27A中處理器核心之部分的一展開圖。
圖28為依據本揭露內容之一範例之可具有多於一個核心、可具有一整合式記憶體控制器、且可具有整合式圖形之處理器的一方塊圖。
圖29根據本揭露之一範例,係一系統的一方塊圖。
圖30根據本揭露之一範例,係一更具體例示性系統的一方塊圖。
圖31根據本揭露之一範例,示出一第二更具體例示性系統的一方塊圖。
圖32根據本揭露之一範例,示出一系統單晶片(SoC)的一方塊圖。
圖33為依據本揭露內容之範例對比使用軟體指令轉換器來將在一來源指令集中之二進位指令轉換為在一目標指令集中之二進位指令之一方塊圖。
100:電腦系統
101-0,...,101-N:信賴域管理器
102-0,...,102-N:核心
103-0,...,103-N,121:暫存器
104:IO組織架構介面
106:裝置
106-0,...,106-N:加速器電路
108:記憶體
110:虛擬機監測器程式碼
112:使用者代碼
114:非信賴域記憶體
116:信賴域記憶體
118:硬體初始化管理器(非暫時性)儲存器
120:IOMMU
122:DMA電路
124:解壓縮器電路
126,132:多工器
128:壓縮器電路
130:篩選引擎
134:區域記憶體
136:裝置安全性管理器

Claims (24)

  1. 一種設備,其包含: 一硬體處理器核心,其包含一信賴域管理器,用以管理一或多個硬體隔離式虛擬機作為具有一受保護記憶體區域之一相應信賴域;以及 輸入/輸出記憶體管理單元(IOMMU)電路系統,其耦接於該硬體處理器核心與一輸入/輸出裝置之間,其中該IOMMU電路系統係用以針對來自該輸入/輸出裝置的用於一信賴域之一受保護記憶體的一直接記憶體存取之一請求,回應於該請求中之一欄位而允許該直接記憶體存取,該欄位係設定以指出該輸入/輸出裝置位在該信賴域之一可信賴運算庫中。
  2. 如請求項1之設備,其中該請求中之該欄位根據一快速週邊組件互連(PCIe)標準係一前置碼中一或多個位元之一集合。
  3. 如請求項1之設備,其中回應於該請求中經設定之該欄位,該IOMMU電路系統係用以產生允許該信賴域之該受保護記憶體之一實體位址具有該信賴域之一私用金鑰的一指示。
  4. 如請求項1之設備,其中回應於該請求中經設定之該欄位,該IOMMU電路系統係用以產生允許該信賴域之該受保護記憶體之一實體位址具有該信賴域之一共享金鑰及該一或多個硬體隔離式虛擬機之一虛擬機監測器的一指示。
  5. 如請求項1之設備,其中回應於該請求中經設定之該欄位,該IOMMU電路系統係用以存取由該信賴域管理器所管理且不由該一或多個硬體隔離式虛擬機之一虛擬機監測器所管理之虛擬位址對實體位址映射之一可信賴資料結構。
  6. 如請求項5之設備,其中回應於該請求中未經設定之該欄位,該IOMMU電路系統係用以存取由該虛擬機監測器所管理之虛擬位址對實體位址映射之一資料結構,並且不存取由該信賴域管理器所管理之虛擬位址對實體位址映射之該可信賴資料結構。
  7. 如請求項1之設備,其中許可該信賴域管理器而非該一或多個硬體隔離式虛擬機之一虛擬機監測器,以致使該信賴域的該受保護記憶體之一或多個區塊的無效之一指示被儲存在一可信賴無效佇列中。
  8. 如請求項1至7中任一項之設備,其中該IOMMU電路系統包含一可信賴根表格指標暫存器,其可由該信賴域管理器存取,而不可由該一或多個硬體隔離式虛擬機之一虛擬機監測器存取。
  9. 一種方法,其包含: 藉由一硬體處理器核心之一信賴域管理器來管理一或多個硬體隔離式虛擬機作為具有一受保護記憶體區域之一相應信賴域; 從一輸入/輸出裝置向耦接於該硬體處理器核心與該輸入/輸出裝置之間的輸入/輸出記憶體管理單元(IOMMU)電路系統針對一信賴域之一受保護記憶體之一直接記憶體存取發送一請求;以及 藉由該IOMMU電路系統,回應於該請求中之一欄位而允許該直接記憶體存取,該欄位係設定以指出該輸入/輸出裝置位在該信賴域之一可信賴運算庫中。
  10. 如請求項9之方法,其中該請求中之該欄位根據一快速週邊組件互連(PCIe)標準係一前置碼中一或多個位元之一集合。
  11. 如請求項9之方法,其進一步包含回應於該請求中經設定之該欄位,藉由該IOMMU電路系統產生允許該信賴域之該受保護記憶體之一實體位址具有該信賴域之一私用金鑰的一指示。
  12. 如請求項9之方法,其進一步包含回應於該請求中經設定之該欄位,藉由該IOMMU電路系統產生允許該信賴域之該受保護記憶體之一實體位址具有該信賴域之一共享金鑰及一虛擬機監測器的一指示。
  13. 如請求項9之方法,其進一步包含回應於該請求中經設定之該欄位,藉由該IOMMU電路系統存取由該信賴域管理器所管理且不由該一或多個硬體隔離式虛擬機之一虛擬機監測器所管理之虛擬位址對實體位址映射之一可信賴資料結構。
  14. 如請求項13之方法,其進一步包含回應於該請求中未經設定之該欄位,藉由該IOMMU電路系統存取由該虛擬機監測器所管理之虛擬位址對實體位址映射之一資料結構,並且不藉由該輸入/輸出轉譯後備緩衝器存取由該信賴域管理器所管理之虛擬位址對實體位址映射之該可信賴資料結構。
  15. 如請求項9之方法,其進一步包含許可該信賴域管理器而非該一或多個硬體隔離式虛擬機之一虛擬機監測器,以將該信賴域的私用記憶體之一或多個區塊的無效之一指示儲存在一可信賴無效佇列中。
  16. 如請求項9至15中任一項之方法,其進一步包含:回應於該請求中經設定之該欄位,存取該IOMMU電路系統之一可信賴根表格指標暫存器,並且回應於該請求中未經設定之該欄位,不存取該IOMMU電路系統之該可信賴根表格指標暫存器。
  17. 一種系統,其包含: 一硬體處理器核心,其包含一信賴域管理器,用以管理一或多個硬體隔離式虛擬機作為具有一受保護記憶體區域之一相應信賴域; 一輸入/輸出裝置,其耦接至該硬體處理器核心;以及 輸入/輸出記憶體管理單元(IOMMU)電路系統,其耦接於該硬體處理器核心與該輸入/輸出裝置之間,其中該IOMMU電路系統係用以針對來自該輸入/輸出裝置的用於一信賴域之一受保護記憶體的一直接記憶體存取之一請求,回應於該請求中之一欄位而允許該直接記憶體存取,該欄位係設定以指出該輸入/輸出裝置位在該信賴域之一可信賴運算庫中。
  18. 如請求項17之系統,其中該請求中之該欄位根據一快速週邊組件互連(PCIe)標準係一前置碼中一或多個位元之一集合。
  19. 如請求項17之系統,其中回應於該請求中經設定之該欄位,該IOMMU電路系統係用以產生允許該信賴域之該受保護記憶體之一實體位址具有該信賴域之一私用金鑰的一指示。
  20. 如請求項17之系統,其中回應於該請求中經設定之該欄位,該IOMMU電路系統係用以產生允許該信賴域之該受保護記憶體之一實體位址具有該信賴域之一共享金鑰及一虛擬機監測器的一指示。
  21. 如請求項17之系統,其中回應於該請求中經設定之該欄位,該IOMMU電路系統係用以存取由該信賴域管理器所管理且不由該一或多個硬體隔離式虛擬機之一虛擬機監測器所管理之虛擬位址對實體位址映射之一可信賴資料結構。
  22. 如請求項21之系統,其中回應於該請求中未經設定之該欄位,該IOMMU電路系統係用以存取由該虛擬機監測器所管理之虛擬位址對實體位址映射之一資料結構,並且不存取由該信賴域管理器所管理之虛擬位址對實體位址映射之該可信賴資料結構。
  23. 如請求項17之系統,其中許可該信賴域管理器而非該一或多個硬體隔離式虛擬機之一虛擬機監測器,以致使該信賴域的私用記憶體之一或多個區塊的無效之一指示被儲存在一可信賴無效佇列中。
  24. 如請求項17至23中任一項之系統,其中該IOMMU電路系統包含一可信賴根表格指標暫存器,其可由該信賴域管理器存取,而不可由該一或多個硬體隔離式虛擬機之一虛擬機監測器存取。
TW111138669A 2021-12-23 2022-10-12 用於針對信賴域實行輸入/輸出延伸之電路系統及方法 TW202326394A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/560,251 2021-12-23
US17/560,251 US20230205562A1 (en) 2021-12-23 2021-12-23 Circuitry and methods for implementing input/output extensions for trust domains

Publications (1)

Publication Number Publication Date
TW202326394A true TW202326394A (zh) 2023-07-01

Family

ID=84359101

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111138669A TW202326394A (zh) 2021-12-23 2022-10-12 用於針對信賴域實行輸入/輸出延伸之電路系統及方法

Country Status (5)

Country Link
US (1) US20230205562A1 (zh)
EP (1) EP4202698A1 (zh)
JP (1) JP2023094536A (zh)
CN (1) CN116340948A (zh)
TW (1) TW202326394A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11977496B1 (en) * 2022-09-29 2024-05-07 Amazon Technologies, Inc. Security vulnerability mitigation using hardware-supported context-dependent address space hiding

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8595487B2 (en) * 2006-11-01 2013-11-26 Vmware, Inc. Virtualization hardware for device driver isolation
US10761996B2 (en) * 2018-09-28 2020-09-01 Intel Corporation Apparatus and method for secure memory access using trust domains
US11373013B2 (en) * 2018-12-28 2022-06-28 Intel Corporation Technologies for filtering memory access transactions received from one or more I/O devices
US11599621B2 (en) * 2019-03-30 2023-03-07 Intel Corporation Apparatuses, methods, and systems for verification of input-output memory management unit to device attachment

Also Published As

Publication number Publication date
US20230205562A1 (en) 2023-06-29
CN116340948A (zh) 2023-06-27
JP2023094536A (ja) 2023-07-05
EP4202698A1 (en) 2023-06-28

Similar Documents

Publication Publication Date Title
JP7501982B2 (ja) 信頼ドメインを用いた、仮想化されたシステムにおける分離の提供
US10860709B2 (en) Encoded inline capabilities
TWI705353B (zh) 用於容許安全通訊之積體電路、方法及製造物件
TWI715580B (zh) 用以支援保護容器的即時遷移之處理器、方法、系統和指令
US20240169099A1 (en) Method and apparatus for trust domain creation and destruction
EP3720084B1 (en) Apparatuses, methods, and systems for verification of input-output memory management unit to device attachment
US9703720B2 (en) Method and apparatus to allow secure guest access to extended page tables
KR20160031541A (ko) 보안 메모리 재파티셔닝
US20220209933A1 (en) Integrity protected access control mechanisms
CN113448620A (zh) 用于对代码进行分区操作的指令的装置、方法和***
US20220413886A1 (en) Circuitry and methods for supporting encrypted remote direct memory access (erdma) for live migration of a virtual machine
US11436342B2 (en) TDX islands with self-contained scope enabling TDX KeyID scaling
TW202326394A (zh) 用於針對信賴域實行輸入/輸出延伸之電路系統及方法
NL2031072B1 (en) Apparatus and method to implement shared virtual memory in a trusted zone
US20220207194A1 (en) Memory address bus protection for increased resilience against hardware replay attacks and memory access pattern leakage
US20240220622A1 (en) Security and methods for implementing address translation extensions for confidential computing hosts
TW202326427A (zh) 用來實行可信賴執行環境安全管理器之電路系統及方法
US20230289433A1 (en) Device security manager architecture for trusted execution environment input/output (tee-io) capable system-on-a-chip integrated devices
CN115879176A (zh) 存储器辅助的内联加密/解密
TW202418133A (zh) 用於容許安全通訊之積體電路、方法及電腦系統