TW202301141A - 受信賴記憶體共享機制 - Google Patents

受信賴記憶體共享機制 Download PDF

Info

Publication number
TW202301141A
TW202301141A TW111108029A TW111108029A TW202301141A TW 202301141 A TW202301141 A TW 202301141A TW 111108029 A TW111108029 A TW 111108029A TW 111108029 A TW111108029 A TW 111108029A TW 202301141 A TW202301141 A TW 202301141A
Authority
TW
Taiwan
Prior art keywords
memory
accelerator
trusted agent
host
token
Prior art date
Application number
TW111108029A
Other languages
English (en)
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 TW202301141A publication Critical patent/TW202301141A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • 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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

一種運算平台,該運算平台包含一第一電腦系統,該第一電腦系統包括一第一主機及通訊性耦合至該第一主機之一第一加速器,該第一加速器包括一第一記憶體、用以進行虛擬位址至該第一記憶體中實體位址之一變換的一第一頁表、以及用以驗核該等位址變換之一第一受信賴代理器。

Description

受信賴記憶體共享機制
本揭示係有關於受信賴記憶體共享機制。
現代運算裝置可包括通用處理器核心、以及用於卸載運算密集型工作負載或進行專業任務之各種硬體加速器。硬體加速器舉例而言,可包括一或多個可現場規劃閘陣列(FPGA),該一或多個FPGA可包括可由終端使用者或系統整合者組配之可規劃數位邏輯資源。硬體加速器亦可包括一或多個特定應用積體電路(ASIC)。可將硬體加速器具體實現為透過一I/O互連與處理器核心通訊之I/O裝置。另外,硬體加速器可包括經實施用以處理圖形資料之一或多個圖形處理單元(GPU)。
依據本發明之一實施例,係特地提出一種設備,其包含:一第一主機;及一第一加速器,其係通訊性耦合至該第一主機,該第一加速器包括:一第一記憶體;一第一頁表,其用來進行虛擬位址至該第一記憶體中的實體位址之一變換;以及一第一受信賴代理器,其用來驗核該等位址變換。
儘管本揭露之概念易受各種修改及替代形式影響,但仍已在圖式中以舉例方式展示並且將在本文中詳細說明其特定實施例。然而,應瞭解的是,無意使本揭露之概念受限於所揭示之特定形式,反之,意圖在於涵蓋與本揭露及隨附申請專利範圍一致之所有修改、均等例、及替代方案。
本說明書中對「一項實施例」、「一實施例」、「一說明性實施例」等之參照指出所述實施例可包括一特定特徵、結構、或特性,但每一項實施例都可以或可不必然包括該特定特徵、結構、或特性。此外,此類字詞不必然參照到相同實施例。再者,當一特定特徵、結構、或特性搭配一實施例作說明時,可知其是在所屬技術領域中具有通常知識者之知識範圍內,用來搭配其他實施例使此類特徵、結構、或特性起功效,無論是否有明確說明。另外,應了解的是,以「至少一個A、B、及C」之形式被包括在一清單中之項目可意味著(A);(B);(C);(A及B);(A及C);(B及C);或(A、B、及C)。類似的是,以「A、B、或C中之至少一者」之形式所列之項目可意味著(A);(B);(C);(A及B);(A及C);(B及C);或(A、B、及C)。
在一些狀況中,所揭示之實施例可採用硬體、韌體、軟體、或以上的任何組合來實施。亦可將所揭示之實施例實施成藉由一暫時性或非暫時性機器可讀(例如,電腦可讀)儲存媒體來攜載或儲存於其上之指令,該等指令可藉由一或多個處理器來讀取並執行。可將一機器可讀儲存媒體具體實現為用於以可由一機器讀取之形式儲存或傳送資訊之任何儲存裝置、機制、或其他實體結構(例如:一依電性或非依電性記憶體、一媒體碟、或其他媒體裝置)。
在附圖中,可採用特定布置結構及/或順序展示一些結構或方法特徵。然而,應了解的是,可不需要此類特定布置結構及/或順序。反而,在一些實施例中,此類特徵可採用與說明性圖式中所示有所不同之一方式及/或順序來布置。另外,在一特定圖式中包括一結構或方法特徵並非旨在暗指所有實施例中都需要此類特徵,並且在一些實施例中,可不包括該特徵或可將該特徵與其他特徵組合。
現請參照圖1,帶有一加速器裝置用於安全I/O之一運算裝置100包括一處理器120及一加速器裝置136,諸如一現場可規劃閘陣列(FPGA)。在使用時,如下文進一步所述,由處理器120建立之一受信賴執行環境(TEE)與加速器136安全傳遞資料。資料可使用記憶體映射I/O (MMIO)異動或直接記憶體存取(DMA)異動來轉移。舉例而言,TEE可進行包括經加密資料之一MMIO寫入異動,並且加速器136將資料解密並進行寫入。舉另一例而言,TEE可進行一MMIO讀取請求異動,以及加速器136可讀取所請求資料、經加密資料,並且進行包括該經加密資料之一MMIO讀取回應異動。舉又另一例而言,TEE可組配加速器136以進行一DMA操作,以及加速器136進行一記憶體轉發、進行一密碼編譯操作(即,加密或解密),並且轉發結果。如下文進一步所述,TEE及加速器136為所轉移資料產生認證標籤(AT),並且可使用那些AT來驗核異動。運算裝置100可從而將運算裝置100之不受信賴軟體,諸如作業系統或虛擬機監測器,保持在TEE及加速器136之受信賴符碼庫(TCB)外面。因此,運算裝置100可自運算裝置100之一擁有者(例如:一雲端服務提供者)、或運算裝置100之其他租戶使由一TEE及一加速器136交換或按其他方式處理之資料受安全保護。因此,運算裝置100可藉由允許加速器裝置之安全使用為多租戶環境提升安全性及效能。
可將運算裝置100具體實現為能夠進行本文中所述功能之任何類型之裝置。舉例而言,可將運算裝置100具體實現為一電腦、一膝上型電腦、一平板電腦、一筆記型電腦、一行動運算裝置、一智慧型手機、一穿戴式運算裝置、一多處理器系統、一伺服器、一工作站、及/或一消費性電子裝置而無限制。如圖1所示,說明性運算裝置100包括一處理器120、一I/O子系統124、一記憶體130、以及一資料儲存裝置132。另外,在一些實施例中,該等說明性組件中之一或多者可予以併入另一組件、或按其他方式形成另一個組件之一部分。舉例而言,在一些實施例中,可將記憶體130、或其部分併入處理器120。
可將處理器120具體實現為能夠進行本文中所述功能之任何類型之處理器。舉例而言,可將處理器120具體實現為一(諸)單核心或多核心處理器、數位信號處理器、微控制器、或其他處理器或處理/控制電路。如所示,處理器120說明性地包括安全指定位址空間支援122,其允許處理器120建立稱為安全指定位址空間之一受信賴執行環境,其中可測量、驗證、及/或按其他方式確定執行碼具有真確性。另外,可加密或按其他方式保護安全指定位址空間中所包括之符碼及資料,以免遭由在安全指定位址空間外面執行之符碼存取。舉例而言,安全指定位址空間中所包括之符碼及資料可在受執行時、或在儲存於處理器120之某受保護快取記憶體中時藉由處理器120之硬體保護機制來保護。安全指定位址空間中所包括之符碼及資料可在儲存於一共享快取或主記憶體130中時予以加密。可將安全指定位址空間支援122具體實現為允許處理器120在記憶體130中建立一或多個安全指定位址空間之一組處理器指令擴充。舉例而言,可將安全指定位址空間支援122具體實現為IntelR安全防護擴充(SGX)技術。
可將記憶體130具體實現為能夠進行本文中所述功能之任何類型之依電性或非依電性記憶體或資料儲存器。在操作時,記憶體130可儲存在運算裝置100之操作期間使用之各種資料及軟體,諸如作業系統、應用程式、程式庫、以及驅動程式。如所示,記憶體130可經由I/O子系統124通訊性耦合至處理器120,可將I/O子系統124具體實現為電路系統及/或組件以配合處理器120、記憶體130、及運算裝置100之其他組件促進輸入/輸出操作。舉例而言,I/O子系統124可予以具體實現為或按其他方式包括記憶體控制器集線器、輸入/輸出控制集線器、感測器集線器、主機控制器、韌體裝置、通訊鏈路(即點對點鏈路、匯流排鏈路、電線、纜線、光導、印刷電路板走線等)及/或其他組件與子系統,用來促進輸入/輸出操作。在一些實施例中,記憶體130可直接耦合至處理器120,舉例而言,經由一整合式記憶體控制器集線器耦合。另外,在一些實施例中,I/O子系統124可形成一系統單晶片(SoC)之一部分,並且連同處理器120、記憶體130、加速器裝置136、及/或運算裝置100之其他組件予以合併在單一積體電路晶片上。另外、或替代地,在一些實施例中,處理器120可包括一整合式記憶體控制器及一系統代理器,可將其具體實現為一邏輯塊,其中來自處理器核心及I/O裝置之資料流量在發送至記憶體130之前匯聚。
如所示,I/O子系統124包括一直接記憶體存取(DMA)引擎126及一記憶體映射I/O (MMIO)引擎128。處理器120包括憑藉安全指定位址空間支援122建立之安全指定位址空間,可使用DMA引擎126憑藉一或多個DMA異動、及/或使用MMIO引擎128憑藉一個或多個MMIO異動與加速器裝置136通訊。運算裝置100可包括多個DMA引擎126及/或MMIO引擎128,用於基於處理器120與加速器136之間的頻寬來處置DMA及MMIO讀取/寫入異動。雖然示為包括於I/O子系統124中,仍應瞭解的是,在一些實施例中,DMA引擎126及/或MMIO引擎128可予以包括在運算裝置100之其他組件(例如:處理器120、記憶體控制器、或系統代理器)中,或在一些實施例中,可予以具體實現為單獨組件。
可將資料儲存裝置132具體實現為被組配用於短期或長期資料儲存之任何類型之裝置或諸裝置,舉例如記憶體裝置及電路、記憶卡、硬碟機、固態驅動機、非依電性快閃記憶體、或其他資料儲存裝置。運算裝置100亦可包括能夠透過一電腦網路(圖未示)在運算裝置100與其他遠距裝置之間實現通訊之一通訊子系統134,可將其具體實現為任何通訊電路、裝置、或以上之集合。通訊子系統134可被組配用以使用任何一或多種通訊技術(例如:有線或無線通訊)及相關聯協定(例如:乙太網路、BluetoothR、Wi-FiR、WiMAX、3G、4G LTE等)來使此類通訊起功效。
可將加速器裝置136具體實現為一可現場規劃閘陣列(FPGA)、一特定應用積體電路(ASIC)、一共處理器、或能夠進行加速功能(例如:加速應用程式功能、加速網路功能、或其他加速功能)之其他數位邏輯裝置、GPU等。採說明方式,加速器裝置136係一FPGA,可將其具體實現為一積體電路,其包括可在製造之後組配之可規劃數位邏輯資源。FPGA舉例而言,可包括透過一可組配資料交換進行通訊之一可組配邏輯塊陣列。加速器裝置136可經由諸如一週邊匯流排(例如:一快速PCI匯流排)或一處理器間互連(例如:一晶粒內互連(IDI)或QuickPath互連(QPI))之一高速連接介面、或經由任何其他適當之互連來耦合至處理器120。加速器裝置136可從處理器120接收用於處理之資料及/或命令,並且經由DMA、MMIO、或其他資料轉移異動向處理器120回傳結果資料。
如所示,運算裝置100可更包括一或多個週邊裝置138。週邊裝置138可包括任意數量的附加輸入/輸出裝置、介面裝置、硬體加速器、及/或其他週邊裝置。舉例而言,在一些實施例中,週邊裝置138可包括一觸控螢幕、圖形電路系統、一圖形處理單元(GPU)及/或處理器圖形、一音訊裝置、一麥克風、一相機、一鍵盤、一滑鼠、一網路介面、及/或其他輸入/輸出裝置、介面裝置、及/或週邊裝置。
現請參照圖2,示出一可現場規劃閘陣列(FPGA) 200之一說明性實施例。如所示,FPGA 200係一加速器裝置136之一項潛在實施例。說明性FPGA 200包括一安全MMIO引擎202、一安全DMA引擎204、一或多個加速器功能單元(AFU) 206、及記憶體/暫存器208。如下文進一步所述,安全MMIO引擎202及安全DMA引擎204對在處理器120 (例如,藉由處理器建立之一安全指定位址空間)與FPGA 200 (例如:一或多個AFU 206)之間轉移之資料進行線內認證密碼編譯操作。在一些實施例中,安全MMIO引擎202及/或安全DMA引擎204可攔截、篩選、或按其他方式處理FPGA 200之一或多個快取連貫互連、內部匯流排、或其他互連上之資料流量。
可將各AFU 206具體實現為FPGA 200之被組配用以進行一加速任務之邏輯資源。各AFU 206可與由運算裝置100在一安全指定位址空間或其他受信賴執行環境中執行之一應用程式相關聯。各AFU 206可藉由運算裝置100之一租戶或其他使用者來組配、或按其他方式供應。舉例而言,各AFU 206可對應於被規劃送至FPGA 200之一位元串流影像。如下文進一步所述,由各AFU 206處理之資料,包括與受信賴執行環境交換之資料,可採密碼編譯方式受保護以免受運算裝置100之不受信賴組件影響(例如,受保護免受租戶指定位址空間之受信賴符碼庫外面軟體影響)。各AFU 206可存取或按其他方式處理儲存在記憶體/暫存器208中之內容,可將記憶體/暫存器208具體實現為FPGA 200之內部暫存器、快取、SRAM、儲存器、或其他記憶體。在一些實施例中,記憶體208亦可包括耦合至FPGA 200之外部DRAM或其他專屬記憶體。
現請參照圖3,在一說明性實施例中,運算裝置100在操作期間建立一環境300。說明性環境300包括一受信賴執行環境(TEE) 302及加速器136。TEE 302更包括一受信賴代理器303、主機密碼編譯引擎304、一異動分派器306、一主機驗核器308、以及一直接記憶體存取(DMA)管理器310。加速器136包括一加速器密碼編譯引擎312、一記憶體範圍選擇引擎313、一加速器驗核器314、一記憶體映射器316、一認證標籤(AT)控制器318、以及一DMA引擎320。可將環境300之各種組件具體實現為硬體、韌體、軟體、或以上的組合。因此,在一些實施例中,可將環境300之一或多個組件具體實現為電路系統或電氣裝置集合(例如:主機密碼編譯引擎電路系統304、異動分派器電路系統306、主機驗核器電路系統308、DMA管理器電路系統310 、加速器密碼編譯引擎電路系統312、加速器驗核器電路系統314、記憶體映射器電路系統316、AT控制器電路系統318、及/或DMA引擎電路系統320)。應了解的是,在此類實施例中,主機密碼編譯引擎電路系統304、異動分派器電路系統306、主機驗核器電路系統308、DMA管理器電路系統310、加速器密碼編譯引擎電路系統312、加速器驗核器電路系統314、記憶體映射器電路系統316、AT控制器電路系統318、及/或DMA引擎電路系統320中之一或多者可形成運算裝置100之處理器120、I/O子系統124、加速器136,及/或其他組件的一部分。另外,在一些實施例中,說明性組件中之一或多者可形成另一組件之一部分,及/或說明性組件中之一或多者可彼此獨立。
可將TEE 302具體實現為使用運算裝置100之硬體支援,諸如處理器120之安全指定位址空間支援122,予以認證及保護免受未經授權存取之運算裝置100之一受信賴執行環境。採說明方式,可將TEE 302具體實現為使用英特爾SGX技術建立之一或多個安全指定位址空間。TEE 302亦可包括運算裝置100之一或多個驅動程式、程式庫、或其他組件,或按其他方式與之介接,用來與加速器136介接。
主機密碼編譯引擎304被組配用以基於一記憶體映射I/O (MMIO)異動來產生一認證標籤(AT),並且用以將該AT寫入至加速器136之一AT暫存器。對於MMIO寫入請求,主機密碼編譯引擎304更被組配用以將一資料項加密以產生一經加密資料項,並且回應於將資料項加密而產生AT。對於一MMIO讀取請求,AT係基於與MMIO讀取請求相關聯之一位址來產生。
異動分派器306被組配用以在將所計算AT寫入至AT暫存器之後向加速器136分派記憶體映射I/O異動(例如:一MMIO寫入請求或一MMIO讀取請求)。一MMIO寫入請求可伴隨經加密資料項予以分派。
主機驗核器308可被組配用以驗證一MMIO寫入請求是否成功回應分派MMIO寫入請求。驗證MMIO寫入請求是否成功可包括安全地讀取加速器136之一狀態暫存器、從加速器136在MMIO寫入之位址處安全地讀取一值、或讀取將藉由加速器136所計算之一AT值回傳的加速器136之一AT暫存器,如下文所述。對於MMIO讀取請求,主機驗核器308可更被組配用以基於從加速器136分派之一MMIO讀取回應中所包括之一經加密資料項來產生一AT;從加速器136之一暫存器中讀取回報之AT;以及判斷藉由TEE 302所產生之AT是否匹配藉由加速器136所回報之AT。主機驗核器308可更被組配用以在那些AT不匹配時指出一錯誤,其為自TEE 302至加速器136途中未修改之資料提供保證。
加速器密碼編譯引擎312被組配用以進行與MMIO異動相關聯之一密碼編譯操作,並且回應於MMIO異動係經分派而基於MMIO異動來產生一AT。對於一MMIO寫入請求,密碼編譯操作包括將從TEE 302接收之一經加密資料項解密以產生一資料項,並且基於該經加密資料項來產生AT。對於一MMIO讀取請求,密碼編譯操作包括將來自加速器136之一記憶體的一資料項加密以產生一經加密資料項,並且基於該經加密資料項來產生AT。
加速器驗核器314被組配用以判斷藉由TEE 302寫入之AT是否匹配藉由加速器136確定之AT。加速器驗核器314更被組配用以在那些AT不匹配時拋投MMIO異動。對於MMIO讀取請求,加速器驗核器314可被組配用以回應於拋投MMIO讀取請求而產生一中毒AT,並且可更被組配用以回應於拋投該MMIO讀取請求而伴隨一中毒資料項向TEE 302分派一MMIO讀取回應。
記憶體映射器316被組配用以回應於確定藉由TEE 302寫入之AT匹配藉由加速器136產生之AT而認可MMIO異動。對於MMIO寫入請求,認可異動可包括將資料項儲存在加速器136之一記憶體中。記憶體映射器316可更被組配用以設定一狀態暫存器以回應於儲存資料項而指出成功。對於MMIO讀取請求,認可異動可包括在加速器136之記憶體中之位址處讀取資料項,並且伴隨經加密資料項向TEE 302分派一MMIO讀取回應。
DMA管理器310被組配用以將一初始化命令安全地寫入至加速器136以初始化一安全DMA轉移。DMA管理器310更被組配用以安全地組配指出一主機記憶體緩衝區、一加速器136緩衝區、以及一轉移方向之一描述符。轉移方向可以是主機至加速器136或加速器136至主機。DMA管理器310更被組配用以將一最終化命令安全地寫入至加速器136以最終化用於安全DMA轉移之一認證標籤(AT)。初始化命令、描述符、及最終化命令各可伴隨一MMIO寫入請求予以安全地寫入及/或組配。DMA管理器310可更被組配用以回應於安全地組配描述符而判斷是否要轉移附加資料,最終化命令可回應於確定已無附加資料供轉移而予以安全地寫入。
AT控制器318被組配用以回應於來自TEE 302之初始化命令而初始化一AT。AT控制器318更被組配用以回應於來自TEE 302之最終化命令而最終化AT。
DMA引擎320被組配用以回應於來自TEE 302之描述符而在主機記憶體緩衝區與加速器136緩衝區之間轉移資料。對於自主機至加速器136之一轉移,轉移資料包括回應於將經加密資料解密,將經加密資料自主機記憶體緩衝區複製到加速器136緩衝區,並且將明文資料轉發至加速器136緩衝區。對於自加速器136至主機之一轉移,轉移資料包括回應於將明文資料加密,將明文資料自加速器136緩衝區複製到主機記憶體緩衝區,並且將經加密資料轉發至主機記憶體緩衝區。
加速器密碼編譯引擎312被組配用以回應於轉移資料而伴隨資料進行一密碼編譯操作,並且用以回應於轉移資料而更新AT。對於自主機至加速器136之一轉移,進行密碼編譯操作包括將經加密資料解密以產生明文資料。對於自加速器136至主機之一轉移,進行密碼編譯操作包括將明文資料加密以產生經加密資料。
主機驗核器308被組配用以基於安全DMA轉移來確定一預期AT、用以回應於安全地寫入最終化命令而從加速器136讀取AT、以及判斷來自加速器136之AT是否匹配該預期AT。主機驗核器308可更被組配用以在該等AT匹配時指出成功,並且用以在該等AT不匹配時指出失敗。
圖4繪示一運算裝置400之另一實施例。運算裝置400代表一通訊及資料處理裝置,其包括或代表(無限制)智慧型語音命令裝置、智慧型個人助理、家庭/辦公室自動化系統、家用電器(例如:洗衣機、電視機等)、行動裝置(例如:智慧型手機、平板電腦等)、遊戲裝置、掌上型裝置、穿戴式裝置(例如:智慧錶、智慧手環等)、虛擬現實(VR)裝置、頭戴式顯示器(HMD)、物聯網(IoT)裝置、膝上型電腦、桌上型電腦、伺服器電腦、機上盒(例如:基於網際網路之有線電視機上盒等)、基於全球定位系統(GPS)之裝置、汽車娛樂資訊裝置等。
在一些實施例中,運算裝置400包括任意數量及類型之其他智慧型裝置,諸如(無限制)自主機器或人工智慧代理器,諸如一機械代理器或機器、電子代理器或機器、虛擬代理器或機器、機電代理器或機器等、或與之配合運作、或嵌入於其中、或促進之。自主機器或人工智慧代理器之實例可包括(無限制)機器人、自動車(例如:自動駕駛車、自動飛行機、自動航行船等)、自主裝備自動操作施工車輛、自動操作醫療裝備等)、及/或類似者。再者,「自動車」不受限於汽車,而是可包括任意數量及類型之自主機器,諸如機器人、自主裝備、家用自主裝置、及/或類似者,並且可與自動車互換地參考有關此類自主機器之任何一或多個任務或操作。
再者,舉例而言,運算裝置400可包括一電腦平台,該電腦平台託管諸如一系統單晶片(「SoC」或「SOC」)之一積體電路(IC),單一晶片上整合運算裝置400之各種硬體及/或軟體組件。
如圖示,在一項實施例中,運算裝置400可包括任意數量及類型之硬體及/或軟體組件,諸如(無限制)圖形處理單元(「GPU」或簡稱為「圖形處理器」) 416、圖形驅動程式(亦稱為「GPU驅動程式」、「圖形驅動程式邏輯」、「驅動程式邏輯」、使用者模式驅動程式(UMD)、使用者模式驅動程式框架(UMDF),或簡稱「驅動程式」) 415、中央處理器(「CPU」或簡稱「應用處理器」) 412、硬體加速器414 (舉例如FPGA、ASIC、一重新應用CPU、或一重新應用GPU)、記憶體408、網路裝置、驅動程式、或類似者、以及輸入/輸出(I/O)來源404,諸如觸控螢幕、觸控面板、觸控板、虛擬或常規鍵盤、虛擬或常規滑鼠、埠口、連接器等。運算裝置400可包括在運算裝置400之硬體及/或實體資源與一使用者之間當作一介面之作業系統(OS) 406。
要了解比上述實例更少或更多配備之一系統可用於某些實作態樣。因此,運算裝置400之組態可隨實作態樣之不同而變,端視諸如價格限制條件、效能要求、技術改良、或其他情況等許多因素而定。
實施例可實施成下列任何一者或其組合:使用一主機板互連之一或多個微晶片或積體電路、固線式邏輯、由一記憶體裝置所儲存並由一微處理器所執行之軟體、韌體、一特定應用積體電路(ASIC)、及/或一可現場規劃閘陣列(FPGA)。以舉例方式,「邏輯」、「模組」、「組件」、「引擎」、「電路系統」、「元件」、及「機制」舉例來說,可包括軟體、硬體及/或以上的組合,諸如韌體。
運算裝置400可託管(諸)網路介面裝置,用來對一網路提供存取,諸如一LAN、一廣域網路(WAN)、一都會區域網路(MAN)、一個人區域網路(PAN)、藍牙、一雲端網路、一行動網路(例如第三代(3G)、第4代(4G)等)、一內部網路、網際網路等。(諸)網路介面舉例而言,可包括具有天線之一無線網路介面,該天線可代表一或多個天線。(諸)網路介面舉例而言,可包括經由網路纜線用以與遠端裝置通訊之一有線網路介面,該網路纜線舉例而言,可以是一乙太網路纜線、一同軸電纜、一光纖電纜、一串列纜線、或一平行纜線。
實施例舉例而言,可作為一電腦程式產品來提供,其可包括上有儲存機器可執行指令之一或多個機器可讀媒體,該等機器可執行指令在由諸如一電腦、電腦網路、或其他電子裝置等一或多個機器執行時,可導致該一或多個機器實行根據本文中所述實施例之操作。一機器可讀媒體可包括、但不限於軟式磁片、光碟、CD-ROM (光碟唯讀記憶體)、以及磁光碟、ROM、RAM、EPROM (可抹除可規劃唯讀記憶體)、EEPROM (電氣可抹除可規劃唯讀記憶體)、磁卡或光卡、快閃記憶體、或適用於儲存機器可讀指令之其他類媒體/機器可讀媒體。
此外,可下載實施例作為一電腦程式產品,其中可經由一通訊鏈路(例如:一數據機及/或網路連線),藉由具體實現為一載波或其他傳播媒體及/或由其所調變之一或多個資料信號,將該程式自一遠端電腦(例如:一伺服器)轉移至一提出請求之電腦(例如:一用戶端)。
「使用者」一詞在本文件各處可互換地稱為「檢視者」、「觀察者」、「說話者」、「人員」、「個人」、「終端使用者」、及/或類似者。要注意像是「圖形域」等詞在本文件各處可與「圖形處理單元」、「圖形處理器」或單純地「GPU」可交換地參考,並且類似的是,「CPU域」或「主機域」可與「電腦處理單元」、「應用處理器」或單純地「CPU」可交換地參考。
要注意像是「節點」、「運算節點」、「伺服器」、「伺服器裝置」、「雲端電腦」、「雲端伺服器」、「雲端伺服器電腦」、「機器」、「主機機器」、「裝置」、「運算裝置」、「電腦」、「運算系統」、及類似者可在本文件各處互換使用。進一步要注意像是「應用程式」、「軟體應用程式」、「程式」、「軟體程式」、「套件」、「套裝軟體」、及類似者可在本文件各處互換使用。「工作」、「輸入」、「請求」、「訊息」、及類似者亦可在本文件各處互換使用。
圖5根據本揭露之一項實作態樣,繪示一分散式運算平台500之一項實施例。如圖5所示,平台500包括(例如,經由一網路)耦合之電腦系統A及B。在一項實施例中,各系統包括主機510 (例如:510A及510B)以及加速器520 (例如:520A及520B)。各主機操作為一應用程式501及一使用者模式驅動程式(UMD) 502 (例如:502A及502B)保護安全性之一受信賴執行環境(TEE) 505 (例如:505A及505B)。在此一實施例中,TEE 505在各主機510與其相應加速器520之間為一安全介面(或通道)作準備。
根據一項實施例,UMD 502可發出在一內核模式驅動程式(KMD)處接收之指令,用來在一加速器520A處進行一操作。舉例而言,UMD 502A可發出用以進行一操作在位處加速器520A之一虛擬位址儲存結果(例如:結果@ va1)之一指令,而UMD 502B可發出用以進行一操作從位處加速器520B之一第一虛擬位址讀取資料並在位處加速器520B之一第二虛擬地址儲存該資料(從va1' (=va1@acc1)讀取到va2')之一指令。
各KMD 504規劃及控制一相應加速器內之一頁表524,並且促進經由頁表524在加速器520處執行來自一主機510之指令。頁表524包括虛擬位址(VA)與實體位址(PA)之間的一映射。舉例而言,位處加速器520A之頁表524A將va1映射至pa1。各加速器520亦包括區域記憶體522,區域記憶體522包括一內核(或程式碼),該核心在由一或多個處理單元540執行時,運算由UMD 502操作所指之結果,並且在與操作時所指之VA映射之記憶體522中之一PA中儲存結果。舉例而言,記憶體522A內之內核在由一或多個處理單元540A執行時,運算結果並將結果寫入至va1。如頁表524A所示,va1映射至pa1,其係結果在記憶體522A內之儲存位置。
加速器520B內之操作以類似方式操作。舉例而言,記憶體522B內之內核在由一或多個處理單元540B執行時,從va1'讀取並運算儲存到va2裡之一結果。然而,頁表524B指出va1'映射至位於加速器520A之記憶體522A中之pa1。因此,加速器520B需要讀取記憶體522A。
然而,記憶體522A加速器520B之共享存在一安全性問題。問題在於區域記憶體522依照習知係由主機KMD 504管理,主機KMD 504位在主機TEE 505之受信賴運算庫(TCB)外面。因此,區域記憶體522中之工作負載可能容易受到多種不同攻擊,諸如經由頁表位址變換操縱之攻擊。舉例而言,可向加速器520B上運行之一攻擊者提供加速器520A上屬於一受害者之資料,造成由於未經授權存取而丟失機密性。另外,可將資料從加速器520A上之一不正確位址讀取到加速器520B裡(或可讀取數量不正確之位元組),損及在加速器520B上所運算結果之完整性。
根據一項實施例,各加速器520包括經實施用以對一KMD 504所提交之位址變換進行驗核之一受信賴代理器530 (例如:530A及530B)。在此一實施例中,受信賴代理器530從主機510A接收一隨機產生之金鑰(或符記),該金鑰係用於驗核一加速器520 (例如:加速器520B)在共享資料之前對區域記憶體522 (例如:522A)存取請求存取。於再一實施例中,符記係在記憶體共享之前與受信賴代理器530A及530B兩者共享,並且係用於確認已授權一外部加速器520存取另一加速器520之區域記憶體522。因此,受信賴代理器530將一符記用於驗核位址變換,以確保加速器520A與加速器520B之間的記憶體共享可採用一受信賴方式進行。
在一項實施例中,符記係於一共享記憶體協定期間共享。圖6A係一流程圖,其繪示記憶體共享協定之一項實施例。於處理塊610,UMD 502A (或UMD1)向UMD 502B (或UMD2)傳送一訊息,該訊息指出記憶體522A處要共享之一位置之一VA (例如:位址va)處之一所匯出緩衝區。另外,該訊息包括要用於授權記憶體共享之一符記(T)。於處理塊620,UMD1向受信賴代理器530A (或受信賴代理器1)傳送一授權訊息,指出受信賴代理器1要在接收到符記時,向加速器520B (或加速器2)匯出位處位址va一特定位元組長度(例如:len位元組)。
於處理塊630,UMD2向受信賴代理器530B (或受信賴代理器2)傳送一訊息,指出要使用符記將位元組長度之緩衝區從虛擬位址va'匯入到位處加速器2之記憶體522B裡。在一項實施例中,KMD 504A及504B分別確保va映射至520A上之pa,以及va'映射至520B上之pa',並且pa=pa'。結果是,520A上之所匯出緩衝區之實體位址匹配520B上所匯入緩衝區之來源位址。於處理塊640,確認變換條目(例如:va'->pa')是否有驗核(例如,該條目是否存在於頁表524B中)。在一項實施例中,該確認係藉由判斷是否啟用與頁表中之變換條目相關聯之一目前位元來進行。受信賴代理器2標示一未驗核變換條目。
於處理塊650,受信賴代理器2向受信賴代理器1傳送一訊息,該訊息包括符記及用以將一位元組長度匯入到實體位址pa'裡之一請求(例如,匯入len、pa'、T)。於處理塊660,受信賴代理器1使用來自UMD1之先前匯出授權來驗核該請求。結果是,受信賴代理器1使用符記(例如:加速器2、len、T)來驗核請求器。舉例而言,受信賴代理器1判斷從UMD1接收之符記是否匹配從受信賴代理器2接收之符記。另外,受信賴代理器1驗核加速器1與加速器2實體位址是否匹配(例如,pa(來自va->pa映射) = pa')。
於處理塊670,受信賴代理器1向受信賴代理器2傳送指出驗核結果之一訊息。在一項實施例中,加速器520在確定驗核通過時被授與對記憶體522A之存取,並且在確定驗核失敗時不被授與對記憶體522A之存取。於處理塊680,受信賴代理器2在接收到該等實體位址匹配之一指示時,標示其頁表條目有效。隨後,加速器2已共享對位處加速器1之記憶體的存取。圖6B係一序列圖,其繪示程序之另一實施例。
雖然以上參照記憶體讀取作說明,上述機制仍以類似方式處理記憶體寫入。因此,上述機制防止不受信賴之軟體繞過共享協定,因為一受信賴代理器在許可外部記憶體存取之前,需要遵循一協定。符記之驗核防止一惡意應用程式對未經授權之記憶體請求一匯入,而實體位址驗核防止從不正確之記憶體位址複製或複製不正確之位元組數。另外,實施例可在具有多於加速器520A及520B之一網路中實施。在此一實施例中,實施上述程序以使一外部加速器能夠存取另一加速器之區域記憶體。
圖7係用以根據一些實施例就對抗式攻擊實現增強保護之一說明性電子運算裝置的一示意圖。在一些實施例中,運算裝置700包括一或多個處理器710,處理器710包括一或多個處理器核心718及一TEE 764,TEE包括一機器學習服務指定位址空間(MLSE) 780。在一些實施例中,運算裝置700包括一硬體加速器768,該硬體加速器包括一密碼編譯引擎782及一機器學習模型784。在一些實施例中,運算裝置係用來針對ML對抗式攻擊提供增強保護,如圖1至6中所提供。
運算裝置700可另外包括下列一或多者:快取762、一圖形處理單元(GPU) 712 (其在一些實作態樣中可以是硬體加速器)、一無線輸入/輸出(I/O)介面720、一有線I/O介面730、記憶體電路系統740、電力管理電路系統750、非暫時性儲存裝置760、以及用於連接至一網路772之一網路介面770。以下論述提供形成說明性運算裝置700之組件之一簡要、一般性說明。舉例而言,非限制性運算裝置700可包括一桌上型運算裝置、刀鋒伺服器裝置、工作站、或類似裝置或系統。
在實施例中,處理器核心718能夠執行機器可讀指令集714、從一或多個儲存裝置760讀取資料及/或指令集714以及將資料寫入至一或多個儲存裝置760。所屬技術領域中具有通常知識者將了解的是,所示實施例以及其他實施例可憑藉其他基於處理器之裝置組態來實踐,包括可攜式電子或掌上型電子裝置,例如智慧型手機、可攜式電腦、穿戴式電腦、消費性電子器件、個人電腦(「PC」)、網路PC、迷你電腦、伺服器刀鋒、大型電腦、及類似者。
處理器核心718可包括任意數量的硬佈線或可組配電路,其中一些或全部可包括可部分地或完整地設置在一PC、伺服器、或能夠執行處理器可讀指令之其他運算系統中之電子元件、半導體裝置、及/或邏輯元件之可規劃及/或可組配組合。
運算裝置700包括一匯流排或類似通訊鏈路716,其可在包括處理器核心718、快取762、圖形處理器電路系統712、一或多個無線I/O介面720、一或多個有線I/O介面730、一或多個儲存裝置760、及/或一或多個網路介面770之各種系統組件之間進行通訊性耦合並促進資訊及/或資料之交換。運算裝置700在本文中可採用單數形式引用,但這非意欲將實施例限制為單一運算裝置700,因為在某些實施例中,可有多於一個運算裝置700,其合併、包括、或含有任意數量的採用可通訊方式耦合、共置、或遠端網路連結之電路或裝置。
處理器核心718可包括能夠執行機器可讀指令集之任意數量、類型的目前可用或未來開發之裝置或其組合。
處理器核心718可包括(或耦合至)但不限於任何目前或未來開發之單核心或多核心處理器或微處理器,諸如:一或多個系統單晶片(SOC);中央處理單元(CPU);數位信號處理器(DSP);圖形處理單元(GPU);特定應用積體電路(ASIC)、可規劃邏輯單元、可現場規劃閘陣列(FPGA)、及類似者。除非另有說明,圖7中所示各種方塊之構造及操作採用習知設計。因此,本文中不需要更詳細地說明此類方塊,因為所屬技術領域中具有通常知識者將理解該等方塊。將運算裝置700之至少一些組件互連之匯流排716可運用任何目前可用或未來開發之串列或平行匯流排結構或架構。
系統記憶體740可包括唯讀記憶體(「ROM」) 742及隨機存取記憶體(「RAM」) 746。ROM 742之一部分可用於儲存或按其他方式留存一基本輸入/輸出系統(「BIOS」) 744。BIOS 744向運算裝置700提供基本功能,舉例而言,藉由致使處理器核心718載入及/或執行一或多個機器可讀指令集714來提供。在實施例中,一或多個機器可讀指令集714中之至少一些致使這些處理器核心718中之至少一部分提供、建立、產生、轉變、及/或作用為一專屬、特有、及特定機器,例如一文書處理機器、一數位影像獲取機器、一媒體播放機器、一遊戲系統、一通訊裝置、一智慧型手機、或類似者。
運算裝置700可包括至少一個無線輸入/輸出(I/O)介面720。至少一個無線I/O介面720可通訊性耦合至一或多個實體輸出裝置722 (觸覺式裝置、視訊顯示器、音訊輸出裝置、硬拷貝輸出裝置等)。至少一個無線I/O介面720可通訊性耦合至一或多個實體輸入裝置724 (指標裝置、觸控螢幕、鍵盤、觸覺式裝置等)。至少一個無線I/O介面720可包括任何目前可用或未來開發之無線I/O介面。例示性無線I/O介面包括、但不限於:BLUETOOTHR、近場通訊(NFC)、及類似者。
運算裝置700可包括一或多個有線輸入/輸出(I/O)介面730。至少一個有線I/O介面730可通訊性耦合至一或多個實體輸出裝置722 (觸覺式裝置、視訊顯示器、音訊輸出裝置、硬拷貝輸出裝置等)。至少一個有線I/O介面730可通訊性耦合至一或多個實體輸入裝置724 (指標裝置、觸控螢幕、鍵盤、觸覺式裝置等)。有線I/O介面730可包括任何目前可用或未來開發之I/O介面。例示性有線I/O介面包括、但不限於:通用串列匯流排(USB)、IEEE 1394 (「FireWire」)、及類似者。
運算裝置700可包括一或多個通訊性耦合、非暫時性之資料儲存裝置760。資料儲存裝置760可包括一或多個硬碟機(HDD)及/或一或多個固態儲存裝置(SSD)。一或多個資料儲存裝置760可包括任何目前或未來開發之儲存電器、網路儲存裝置、及/或系統。此類資料儲存裝置760之非限制實例可包括、但不限於任何目前或未來開發之非暫時性儲存電器或裝置,諸如一或多個磁性儲存裝置、一或多個光學儲存裝置、一或多個電阻式儲存裝置、一或多個分子儲存裝置、一或多個量子儲存裝置、或以上的各種組合。在一些實作態樣中,一或多個資料儲存裝置760可包括一或多個可移除式儲存裝置,諸如一或多個快閃驅動機、快閃記憶體、快閃儲存單元、或能夠通訊性耦合至及解耦自運算裝置700之類似電器或裝置。
一或多個資料儲存裝置760可包括將相應儲存裝置或系統通訊性耦合至匯流排716之介面或控制器(圖未示)。一或多個資料儲存裝置760可儲存、留存、或按其他方式含有機器可讀指令集、資料結構、程式模組、資料儲存、資料庫、邏輯結構、及/或對處理器核心718及/或圖形處理器電路系統712及/或在處理器核心718及/或圖形處理器電路系統712上執行或由其執行之一或多個應用程式有用處之其他資料。在一些例子中,一或多個資料儲存裝置760可通訊性耦合至處理器核心718,例如經由匯流排716或經由一或多個有線通訊介面730 (例如:通用串列匯流排或USB)耦合;一或多個無線通訊介面720 (例如:BluetoothR、近場通訊或NFC);及/或一個或多個網路介面770 (IEEE 802.3或乙太網路、IEEE 802.11、或Wi-FiR等)。
處理器可讀指令集714及其他程式、應用程式、邏輯集、及/或模組可全部或部分地儲存在系統記憶體740中。可從一或多個資料儲存裝置760全部或部分地轉移此類指令集714。在處理器核心718及/或圖形處理器電路系統712執行期間,指令集714可全部或部分地予以載入、儲存、或按其他方式留存在系統記憶體740中。
運算裝置700可包括對能量儲存裝置752之一或多個操作性態樣進行控制之電力管理電路系統750。在實施例中,能量儲存裝置752可包括一或多個初級(即非可再充電)或次級(即可再充電)電池或類似能量儲存裝置。在實施例中,能量儲存裝置752可包括一或多個超級電容器或超電容器。在實施例中,電力管理電路系統750可更改、調整、或控制從一外部電力源754至能量儲存裝置752及/或至運算裝置700之能量流動。電力源754可包括、但不限於一太陽能系統、一商用電力網、一可攜式發電機、一外部能量儲存裝置、或以上的任何組合。
為了方便起見,處理器核心718、圖形處理器電路系統712、無線I/O介面720、有線I/O介面730、儲存裝置760、及網路介面770係示為經由匯流排716彼此通訊性耦合,藉此在上述組件之間提供連接能力。在替代實施例中,上述組件可採用與圖7中所示不同之一方式來通訊性耦合。舉例而言,上述組件中之一或多者可經由一或多個中間組件(圖未示)直接耦合至其他組件、或彼此耦合。在另一實例中,可將上述組件中之一或多者整合到處理器核心718及/或圖形處理器電路系統712裡。在一些實施例中,可省略匯流排716之全部或一部分,並且組件係使用適合的有線或無線連接直接彼此耦合。
下文提供本文中所揭示之技術之說明性實例。該等技術之一實施例可包括下文所述實例之任何一或多項實例以及其任何組合。
實例1包括一種包含一設備之平台,該設備包括一第一主機及通訊性耦合至該第一主機之一第一加速器,該第一加速器包括一第一記憶體、用以進行虛擬位址至該第一記憶體中實體位址之一變換的一第一頁表、以及用以驗核該等位址變換之一第一受信賴代理器。
實例2包括實例1之標的內容,其中該第一受信賴代理器從該第一主機接收一第一訊息,該第一訊息包括用於驗核該等位址變換之一符記。
實例3包括實例1至2中任何一者之標的內容,其中該第一訊息更在該第一記憶體處包含要共享之一虛擬位址、及與該虛擬位址相關聯之一長度,該長度指出經授權要匯出之記憶體之一長度。
實例4包括實例1至3中任何一者之標的內容,其中該第一主機向一第二主機傳送包括該符記之一第二訊息以在一第二加速器處與一第二受信賴代理器共享,其中該符記指出已授權該第二加速器存取該第一記憶體。
實例5包括實例1至4中任何一者之標的內容,其中該第二訊息包括該第一虛擬位址、及與該虛擬位址相關聯之該長度。
實例6包括實例1至5中任何一者之標的內容,其中該第一受信賴代理器接收包括該符記之來自該第二受信賴代理器之一第三訊息、及對在該第一記憶體中一實體位址處存取該長度之一請求。
實例7包括實例1至6中任何一者之標的內容,其中該第一受信賴代理器藉由判斷從該第一主機接收之該符記是否匹配從該第二受信賴代理器接收之該符記來驗核該請求。
實例8包括實例1至7中任何一者之標的內容,其中該第一受信賴代理器進一步藉由判斷從該第二受信賴代理器接收之該實體位址是否匹配與從該主機接收之虛擬位址相關聯之一實體位址來驗核該請求。
實例9包括實例1至8中任何一者之標的內容,其中該第一受信賴代理器向該第二受信賴代理器傳送在確定已經驗核該請求時指出該第二加速器對該第一記憶體有存取之一第四訊息。
實例10包括實例1至9中任何一者之標的內容,其中該第四訊息在確定尚未驗核該請求時指出該第二加速器對該第一記憶體未有存取。
實例11包括一種方法,用來促進安全記憶體共享,該方法包含位處一第一加速器之一第一受信賴代理器從一第一主機接收包括一第一符記之一第一訊息,該第一受信賴代理器從位處一第二加速器之一第二受信賴代理器接收對存取位處該第一加速器之記憶體提出請求之一第二訊息,其中該第二訊息包括一第二符記,以及該受信賴代理器驗核該請求以判斷是否要授與該第二加速器對該記憶體之存取。
實例12包括實例11之標的內容,其中在確定該第一符記匹配該第二符記時,授與該第二加速器對該記憶體之存取。
實例13包括實例11至12中任何一者之標的內容,其中該第一訊息更包含該第一記憶體處要共享之一虛擬位址。
實例14包括實例11至13中任何一者之標的內容,其中該請求更包含該記憶體中被請求要存取之一實體位址。
實例15包括實例11至14中任何一者之標的內容,其中該第一受信賴代理器進一步藉由判斷從該第二受信賴代理器接收之該實體位址是否匹配與從該主機接收之該虛擬位址相關聯之一實體位址來驗核該請求。
實例16包括至少一種上有儲存指令之電腦可讀媒體,該等指令在由一或多個處理器執行時,致使該處理器從一第一主機接收包括一第一符記之一第一訊息,從位處一外部加速器之一受信賴代理器接收對存取區域記憶體提出請求之一第二訊息,其中該第二訊息包括一第二符記,以及驗核該請求以判斷是否要授與該第二加速器對該記憶體之存取。
實例17包括實例16之標的內容,其中在確定該第一符記匹配該第二符記時,授與該第二加速器對該記憶體之存取。
實例18包括實例16至17中任何一者之標的內容,其中該第一訊息更包含該第一記憶體處要共享之一虛擬位址。
實例19包括實例16至18中任何一者之標的內容,其中該請求更包含該記憶體中被請求要存取之一實體位址。
實例20包括實例16至19中任何一者之標的內容,其在由一或多個處理器執行時,進一步致使該處理器藉由判斷從該第二受信賴代理器接收之該實體位址是否匹配與從該主機接收之該虛擬位址相關聯之一實體位址來驗核該請求。
以上詳細說明包括對附圖之參照,其形成此詳細說明的一部分。該等圖式以例示方式展示可實踐的特定實施例。這些實施例在本文中亦稱為「實例」。此類實例可包括所示或所述者以外的元件。然而,亦思忖的是包括所示或所述元件之實例。此外,亦忖思的是對照一特定實例(或其一或多種態樣)或對照本文中所示或所述之其他實例(或其一或多種態樣),使用所示或所述那些元件(或其一或多種態樣)之任何組合或排列的實例。
本文件中涉及的公告、專利及專利文件的全文內容係以參考方式併入本文,正如個別併入本文一般。本文件與那些以參考方式併入的文件之間若有不一致的使用狀況,此(等)併入之參考文件中之使用狀況乃是本文件使用狀況之輔助;對於矛盾的不一致,以本文件中的使用狀況為主。
在本文件中,「一」一詞或其詞性變化如專利文件中常見,係獨立於「至少一個」或「一或多個」之任何其他例子或用法,用於包括一個或超過一個。另外,「一組」包括一或多個元件。在本文件中,「或」一詞係用於意指為非排他的或,因此「A或B」包括「A但非B」、「B但非A」及「A與B」,除非另有所指。在隨附申請專利範圍中,「包括」及「內有」等詞係當作「包含」及「其中」等各別用語之通俗中文對等詞使用。同樣地,在以下的申請專利範圍中,「包括」及「包含」等詞為開放式用語;也就是說,除了一請求項中之一用語後所列以外,還包括元件之一系統、裝置、物品或程序,仍視為落在該請求項的範疇內。此外,在以下申請專利範圍中,「第一」、「第二」、「第三」等詞只是用來當作標籤,非意欲對其物件建議一數值順序。
「邏輯指令」一詞如本文中所指,係有關於可由一或多個機器理解用於執行一或多個邏輯操作之表達。舉例而言,邏輯指令可包含可由一處理器編譯器解譯,用於對一或多個資料物件執行一或多個操作之指令。然而,這僅係機器可讀指令之一實例,並且實例在這方面並不受限。
「電腦可讀媒體」一詞如本文中所指,係有關於能夠維持可由一或多個機器感知之表達的媒體。舉例而言,一電腦可讀媒體可包含用於儲存電腦可讀指令或資料之一或多個儲存裝置。此類儲存裝置可包含儲存媒體,舉例如光學、磁性或半導體儲存媒體。然而,這僅係一電腦可讀媒體之一實例,並且實例在這方面並不受限。
「邏輯」一詞如本文中所指,係有關於用於進行一或多個邏輯操作之結構。舉例而言,邏輯可包含基於一或多個輸入信號提供一或多個輸出信號之電路系統。此類電路系統可包含接收一數位輸入並提供一數位輸出之一有限狀態機、或回應於一或多個類比輸入信號而提供一或多個類比輸出信號之電路系統。此類電路可設置在一特定應用積體電路(ASIC)或可現場規劃閘陣列(FPGA)中。邏輯亦可包含儲存在一記憶體中之機器可讀指令,與處理電路系統結合以執行此類機器可讀指令。然而,這些僅係可提供邏輯之結構之實例,並且實例在這方面並不受限。
本文中所述之方法中有些可予以具體實現為一電腦可讀媒體上之邏輯指令。當在一處理器上受執行時,邏輯指令致使一處理器被規劃為實施該等所述方法之一特殊用途機器。處理器在由邏輯指令組配用以執行本文中所述之方法時,構成用於進行該等所述方法之結構。替代地,可將本文中所述之方法精簡成位在例如一可現場規劃閘陣列(FPGA)、一特定應用積體電路(ASIC)或類似者上之邏輯。
在本說明及申請專利範圍中,可使用「耦合」及「連接」等詞連同其派生詞。在特定實例中,連接可用於指出二或更多個元件彼此直接實體或電氣接觸。耦合可意味著二或更多個直接實體或電氣接觸的元件。然而,耦合亦可意味著可彼此不直接接觸、但仍又可彼此相配合或相互作用之二或更多個元件。
本說明書中對「一項實例」或「一些實例」之參照意味著至少一實作態樣中包括搭配此實例所述之一特定特徵、結構或特性。「在一項實例中」一詞在本說明書各處表達時可以或可不全都意指為相同之實例。
以上說明係意欲為說明性而非限制性。舉例而言,上述實例(或其一或多種態樣)可與其他實例組合使用。可使用其他實施例,例如可由所屬技術領域中具有通常知識者在檢閱以上說明後來使用。[發明摘要]係用來允許讀者快速地確定本技術揭露的性質。其係基於瞭解將不會用於解讀或限制申請專利範圍之範疇或意義來提交。同樣地,在以上的[實施方式]中,可將各種特徵集結在一起而讓本揭露更順暢。然而,申請專利範圍可能未提出本文中所揭示之每個特徵,因為實施例之特徵可在於該等特徵之一子集。再一實施例可包括比一特定實例中所揭示者更少的特徵。因此,以下申請專利範圍藉此係併入本文的詳細說明中,各請求項本身代表一各別的實施例。本文中所揭示之實施例之範疇連同此類請求項給與權利之均等例的全部範疇,要參照隨附申請專利範圍來確定。
雖然實例已採用結構化特徵及/或方法動作特有措辭作說明,要瞭解的是,所訴求標的內容仍可不受限於所述之特定特徵或動作。反而,特定特徵及動作係予以揭示為實施所訴求標的內容之樣本形式。
100,400,700:運算裝置 120,710:處理器 122:安全指定位址空間支援 124:I/O子系統 126,204:DMA引擎 128,202:MMIO引擎 130,522A,522B,408:記憶體 132:資料儲存裝置 134:通訊子系統 136:加速器裝置 138:週邊裝置 200:FPGA 206:AFU 208:記憶體/暫存器 300:環境 302,505A,505B,764:TEE 303,530A,530B:受信賴代理器 304:主機密碼編譯引擎 306:異動分派器 308:主機驗核器 310:DMA管理器電路系統 312:加速器密碼編譯引擎電路系統 313:記憶體範圍選擇引擎 314:加速器驗核器電路系統 316:記憶體映射器電路系統 318:AT控制器電路系統 320:DMA引擎電路系統 404:輸入/輸出(I/O)來源 406:作業系統 412:中央處理單元 414:硬體加速器 415:圖形驅動程式 416:圖形處理單元 500:分散式運算平台 501:應用程式 502A,502B:UMD 504A,504B:KMD 510A,510B:主機 520A,520B:加速器 524A,524B:頁表 540A,540B:處理單元 610~680:處理塊 712:GPU 714:機器可讀指令集 716:通訊鏈路 718:處理器核心 720:無線I/O介面 722:實體輸出裝置 724:實體輸入裝置 730:有線輸入/輸出(I/O)介面 740:系統記憶體 742:ROM 744:BIOS 746:RAM 750:電力管理電路系統 752:能量儲存裝置 754:外部電力源 760:儲存裝置 762:快取 770:網路介面 772:網路 780:MLSE 782:密碼編譯引擎 784:機器學習模型
本文中所述之概念係以舉例方式說明,並不是要在附圖中作為限制。為了簡化並且清楚說明,圖中所示元件不必然按照比例繪示。若認為適當,不同圖式間已重複參照標記以指出對應或類似之元件。
圖1係帶有一加速器裝置之一安全I/O用運算裝置之至少一項實施例的一簡化方塊圖;
圖2係圖1之運算裝置之一加速器裝置之至少一項實施例的一簡化方塊圖;
圖3係圖1及2之運算裝置之一環境之至少一項實施例的一簡化方塊圖;
圖4根據本揭露之實作態樣繪示一運算裝置;
圖5繪示一運算平台之一項實施例;
圖6A係一流程圖,其繪示一共享記憶體組配程序之一項實施例;
圖6B係一序列圖,其繪示用於安全記憶體共享之一程序之一項實施例;以及
圖7繪示一說明性電子運算裝置的一示意圖之一項實施例。
500:分散式運算平台
501:應用程式
502A,502B:UMD
504A,504B:KMD
505A,505B:TEE
510A,510B:主機
520A,520B:加速器
522A,522B:記憶體
524A,524B:頁表
530A,530B:受信賴代理器
540A,540B:處理單元

Claims (20)

  1. 一種設備,其包含: 一第一主機;及 一第一加速器,其係通訊性耦合至該第一主機,該第一加速器包括: 一第一記憶體; 一第一頁表,其用來進行虛擬位址至該第一記憶體中的實體位址之一變換;以及 一第一受信賴代理器,其用來驗核該等位址變換。
  2. 如請求項1之設備,其中該第一受信賴代理器接收來自該第一主機之一第一訊息,該第一訊息包括用於驗核該等位址變換之一符記。
  3. 如請求項2之設備,其中該第一訊息更在該第一記憶體處包含要共享之一虛擬位址、及與該虛擬位址相關聯之一長度,該長度指出經授權要共享之記憶體之一長度。
  4. 如請求項3之設備,其中該第一主機向一第二主機傳送包括該符記之一第二訊息以在一第二加速器處與一第二受信賴代理器共享,其中該符記指出已授權該第二加速器存取該第一記憶體。
  5. 如請求項4之設備,其中該第二訊息包括該第一虛擬位址、及與該虛擬位址相關聯之該長度。
  6. 如請求項5之設備,其中該第一受信賴代理器接收包括該符記之來自該第二受信賴代理器之一第三訊息、及對在該第一記憶體中的一實體位址處存取該長度之一請求。
  7. 如請求項6之設備,其中該第一受信賴代理器藉由判斷從該第一主機接收之該符記是否匹配從該第二受信賴代理器接收之該符記來驗核該請求。
  8. 如請求項7之設備,其中該第一受信賴代理器進一步藉由判斷從該第二受信賴代理器接收之該實體位址是否匹配與從該主機接收之該虛擬位址相關聯之一實體位址來驗核該請求。
  9. 如請求項8之設備,其中該第一受信賴代理器向該第二受信賴代理器傳送在確定已經驗核該請求時指出該第二加速器對該第一記憶體有存取之一第四訊息。
  10. 如請求項9之設備,其中該第四訊息在確定尚未驗核該請求時指出該第二加速器對該第一記憶體未有存取。
  11. 一種用來促進安全記憶體共享之方法,該方法包含: 位處一第一加速器之一第一受信賴代理器從一第一主機接收包括一第一符記之一第一訊息; 該第一受信賴代理器從位處一第二加速器之一第二受信賴代理器接收對存取位處該第一加速器之記憶體提出請求之一第二訊息,其中該第二訊息包括一第二符記;以及 該受信賴代理器驗核該請求以判斷是否要授與該第二加速器對該記憶體存取。
  12. 如請求項11之方法,其中在確定該第一符記匹配該第二符記時,授與該第二加速器對該記憶體存取。
  13. 如請求項12之方法,其中該第一訊息更包含在該第一記憶體處要共享之一虛擬位址。
  14. 如請求項13之方法,其中該請求更包含該記憶體中被請求要存取之一實體位址。
  15. 如請求項14之方法,其中該第一受信賴代理器進一步藉由判斷從該第二受信賴代理器接收之該實體位址是否匹配與從該主機接收之該虛擬位址相關聯之一實體位址來驗核該請求。
  16. 一種具有指令儲存於其上之至少一電腦可讀媒體,該等指令在由一或多個處理器執行時,致使該等處理器進行下列動作: 從一第一主機接收包括一第一符記之一第一訊息; 從位處一外部加速器之一受信賴代理器接收對存取區域記憶體提出請求之一第二訊息,其中該第二訊息包括一第二符記;以及 驗核該請求以判斷是否要授與該第二加速器對該記憶體存取。
  17. 如請求項16之電腦可讀媒體,其中在確定該第一符記匹配該第二符記時,授與該第二加速器對該記憶體存取。
  18. 如請求項17之電腦可讀媒體,其中該第一訊息更包含在該第一記憶體處要共享之一虛擬位址。
  19. 如請求項18之電腦可讀媒體,其中該請求更包含該記憶體中被請求要存取之一實體位址。
  20. 如請求項19之電腦可讀媒體,其在由一或多個處理器執行時,進一步致使該等處理器藉由判斷從該第二受信賴代理器接收之該實體位址是否匹配與從該主機接收之該虛擬位址相關聯之一實體位址來驗核該請求。
TW111108029A 2021-06-22 2022-03-04 受信賴記憶體共享機制 TW202301141A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/354,105 2021-06-22
US17/354,105 US11644980B2 (en) 2021-06-22 2021-06-22 Trusted memory sharing mechanism

Publications (1)

Publication Number Publication Date
TW202301141A true TW202301141A (zh) 2023-01-01

Family

ID=77921133

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111108029A TW202301141A (zh) 2021-06-22 2022-03-04 受信賴記憶體共享機制

Country Status (5)

Country Link
US (1) US11644980B2 (zh)
EP (1) EP4359937A1 (zh)
CN (1) CN117043756A (zh)
TW (1) TW202301141A (zh)
WO (1) WO2022271222A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11836102B1 (en) 2019-03-20 2023-12-05 Kepler Computing Inc. Low latency and high bandwidth artificial intelligence processor
US12086410B1 (en) 2019-05-31 2024-09-10 Kepler Computing Inc. Ferroelectric memory chiplet in a multi-dimensional packaging with I/O switch embedded in a substrate or interposer
US11281579B2 (en) * 2020-01-28 2022-03-22 Intel Corporation Cryptographic separation of MMIO on device
GB2619692B (en) * 2021-03-01 2024-10-16 Nvidia Corp Interface for multiple processors
US11644980B2 (en) 2021-06-22 2023-05-09 Intel Corporation Trusted memory sharing mechanism
US11791233B1 (en) * 2021-08-06 2023-10-17 Kepler Computing Inc. Ferroelectric or paraelectric memory and logic chiplet with thermal management in a multi-dimensional packaging
US20230098742A1 (en) * 2021-09-30 2023-03-30 Advanced Micro Devices, Inc. Processor Power Management Utilizing Dedicated DMA Engines
US11797224B2 (en) * 2022-02-15 2023-10-24 Western Digital Technologies, Inc. Resource management for solid state drive accelerators
US11947801B2 (en) * 2022-07-29 2024-04-02 Intel Corporation In-place memory copy during remote data transfer in heterogeneous compute environment

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7822941B2 (en) * 2006-06-05 2010-10-26 Oracle America, Inc. Function-based virtual-to-physical address translation
US20120110348A1 (en) * 2010-11-01 2012-05-03 International Business Machines Corporation Secure Page Tables in Multiprocessor Environments
US9792222B2 (en) * 2014-06-27 2017-10-17 Intel Corporation Validating virtual address translation by virtual machine monitor utilizing address validation structure to validate tentative guest physical address and aborting based on flag in extended page table requiring an expected guest physical address in the address validation structure
US9749319B2 (en) 2015-05-20 2017-08-29 Google Inc. Address validation using signatures
JP6609199B2 (ja) * 2016-03-01 2019-11-20 ルネサスエレクトロニクス株式会社 組込み機器
US10949358B2 (en) 2019-09-25 2021-03-16 Intel Corporaton Secure address translation services using message authentication codes and invalidation tracking
US11531770B2 (en) 2019-12-23 2022-12-20 Intel Corporation Trusted local memory management in a virtualized GPU
US11336287B1 (en) * 2021-03-09 2022-05-17 Xilinx, Inc. Data processing engine array architecture with memory tiles
US11644980B2 (en) 2021-06-22 2023-05-09 Intel Corporation Trusted memory sharing mechanism

Also Published As

Publication number Publication date
EP4359937A1 (en) 2024-05-01
WO2022271222A1 (en) 2022-12-29
US20210311629A1 (en) 2021-10-07
US11644980B2 (en) 2023-05-09
CN117043756A (zh) 2023-11-10

Similar Documents

Publication Publication Date Title
TW202301141A (zh) 受信賴記憶體共享機制
US20210390063A1 (en) Technologies for Secure I/O with Accelerator Devices
US11651092B2 (en) Techniques to provide client-side security for storage of data in a network environment
US11088846B2 (en) Key rotating trees with split counters for efficient hardware replay protection
US11775659B2 (en) Cryptographic separation of memory on device with use in DMA protection
US10877806B2 (en) Method and apparatus for securely binding a first processor to a second processor
US11782829B2 (en) Cryptographic separation of MMIO on device
US20200127850A1 (en) Certifying a trusted platform module without privacy certification authority infrastructure
US20150244717A1 (en) Trusted virtual computing system
EP3913513A1 (en) Secure debug of fpga design
US20180191721A1 (en) Mechanisms to enable secure virtual namespaces in disaggregated storage targets
US11494523B2 (en) Direct memory access mechanism
WO2023107191A1 (en) Secure encrypted communication mechanism
CN115774686A (zh) 使用地址签名防止未经授权的转换访问
CN113449349A (zh) 平台安全机制
US20240143363A1 (en) Virtual machine tunneling mechanism
US20240232097A9 (en) Data transfer encryption mechanism
US20220245252A1 (en) Seamless firmware update mechanism
US20220116403A1 (en) Telemetry restriction mechanism
US20220311594A1 (en) Multi-tenancy protection for accelerators
US20240121079A1 (en) Data clearing attestation
US20220103358A1 (en) Cloud key access mechanism