TW202343264A - 橫跨經再分記憶體域之維護操作 - Google Patents

橫跨經再分記憶體域之維護操作 Download PDF

Info

Publication number
TW202343264A
TW202343264A TW112112818A TW112112818A TW202343264A TW 202343264 A TW202343264 A TW 202343264A TW 112112818 A TW112112818 A TW 112112818A TW 112112818 A TW112112818 A TW 112112818A TW 202343264 A TW202343264 A TW 202343264A
Authority
TW
Taiwan
Prior art keywords
memory
domains
domain
encryption
data
Prior art date
Application number
TW112112818A
Other languages
English (en)
Inventor
傑森 派克
尤瓦爾 艾拉德
亞力山大唐納德查爾斯 查德維克
安德魯布魯克菲爾德 斯維恩
Original Assignee
英商Arm股份有限公司
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 英商Arm股份有限公司 filed Critical 英商Arm股份有限公司
Publication of TW202343264A publication Critical patent/TW202343264A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/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

Abstract

提供一種設備,在其中處理電路系統在一固定數目之至少二個域的一者中執行處理。該等域的一者再分成一可變數目的執行環境,該等執行環境的一者係經組態以管理該等執行環境的一管理執行環境。記憶體保護電路系統將一加密點定義在一記憶體階層的至少一個未加密儲存電路之後及在該記憶體階層的至少一個經加密儲存電路之前。該至少一個經加密儲存電路系統使用一金鑰輸入以對從該等域的一目前一者內發布的一記憶體存取請求的該資料執行加密或解密。該金鑰輸入對該等域之各者且對該等執行環境之各者不同,且該管理執行環境經組態以抑制對該記憶體階層的該至少一個經加密儲存電路發布一維護操作。

Description

橫跨經再分記憶體域之維護操作
本技術係關於資料處理。
所欲的是在記憶體階層中於可行的情況下減少改善記憶體系統效能。
鑑於一第一實例組態,提供一種設備,其包含:處理電路系統,其經組態以在一固定數目之至少二個域的一者中執行處理,其中該等域的一者再分成一可變數目的執行環境,該等執行環境的一者係經組態以管理該等執行環境的一管理執行環境;及記憶體保護電路系統,其將一加密點定義在一記憶體階層的至少一個未加密儲存電路之後及在該記憶體階層的至少一個經加密儲存電路之前,其中該至少一個經加密儲存電路系統經組態以使用一金鑰輸入以對從該等域的一目前一者內發布的一記憶體存取請求的該資料執行加密或解密,其中該金鑰輸入對該等域之各者且對該等執行環境之各者不同;且該管理執行環境經組態以抑制對該記憶體階層的該至少一個經加密儲存電路發布一維護操作。
鑑於一第二實例組態,提供一種方法,其包含:在一固定數目之至少二個域的一者中執行處理,該等域的一者再分成一可變數目的執行環境,該等執行環境的一者係經組態以管理該等執行環境的一管理執行環境;將一加密點定義在一記憶體階層的至少一個未加密儲存電路之後及在該記憶體階層的至少一個經加密儲存電路之前;抑制對該記憶體階層的該至少一個經加密儲存電路發布一維護操作;及使用一金鑰輸入以對從該等域的一目前一者內發布至一記憶體位址的一記憶體存取請求的該資料執行加密或解密,其中該金鑰輸入對該等域之各者且對該等執行環境之各者不同;且該管理執行環境經組態以抑制對該記憶體階層的該至少一個經加密儲存資料結構發布一維護操作。
鑑於一第三實例組態,提供一種用於控制一主機資料處理設備以提供用於目標碼之執行的一指令環境的電腦程式;該電腦程式包含:處理程式邏輯,其經組態以模擬該目標碼在至少二個域的一者中的處理,其中該等域的一者再分成一可變數目的執行環境,該等執行環境的一者係經組態以管理該等執行環境的一管理執行環境;及記憶體保護程式邏輯,其經組態以將一加密點定義在一記憶體階層的至少一個未加密儲存資料結構之後及在該記憶體階層的至少一個經加密儲存資料結構之前,其中該至少一個經加密儲存資料結構經組態以使用一金鑰輸入以對從該等域的一目前一者內發布的一記憶體存取請求的該資料執行加密或解密,其中該金鑰輸入對該等域之各者且對該等執行環境之各者不同;且該管理執行環境經組態以抑制對該記憶體階層的該至少一個經加密儲存資料結構發布一維護操作。
在參照隨附圖式討論實施例之前,提供實施例及相關聯優點的以下描述。
根據一個實例組態,提供一種設備,其包含:處理電路系統,其經組態以在一固定數目之至少二個域的一者中執行處理,其中該等域的一者再分成一可變數目的執行環境,該等執行環境的一者係經組態以管理該等執行環境的一管理執行環境;及記憶體保護電路系統,其將一加密點定義在一記憶體階層的至少一個未加密儲存電路之後及在該記憶體階層的至少一個經加密儲存電路之前,其中該至少一個經加密儲存電路系統經組態以使用一金鑰輸入以對從該等域的一目前一者內發布的一記憶體存取請求的該資料執行加密或解密,其中該金鑰輸入對該等域之各者且對該等執行環境之各者不同;且該管理執行環境經組態以抑制對該記憶體階層的該至少一個經加密儲存電路發布一維護操作。
處理可在數字(二或更多個,諸如三或更多個)域內或世界內發生。該等域/世界的一者再分成若干個(例如,複數個)執行環境,且該等執行環境的一者係負責執行環境之各者的管理的管理執行環境。管理執行環境處理,例如,快取維護操作。提供保護記憶體的記憶體保護電路系統。例如,其可處理由該等域之各者所使用的記憶體的隔離。該記憶體保護電路系統定義記憶體階層內的加密點。在加密點之前的記憶體階層系統(儲存電路)儲存未加密的資料,而在加密點之後的記憶體階層系統(儲存電路)儲存經加密的資料。用於此等經加密儲存電路的加密對域之各者及對執行環境不同。亦即,除非明確請求,在一個域或執行環境中執行的軟體無法解密屬於在另一域或執行環境中之軟體的資料。此係藉由在加密程序期間使用對各域及/或執行環境不同的金鑰輸入(例如,金鑰、金鑰的一部分、或可微調位元)實現。由管理執行環境發布之快取維護操作的至少一些係關於未加密儲存電路系統,而不關於經加密儲存電路系統。此係由於,因為屬於一個域或執行環境的資料大致不可被另一域或執行環境存取(除了某些特殊定義的情況外),可能沒有清除該資料以防止其不經意地變得可被另一域或執行環境存取的需求。快取維護操作的數目因此可係有限的,因此降低效能影響。
在一些實例中,該管理執行環境經組態以回應於對該等執行環境的一者作出之在一記憶體指派上的一變化,以將該維護操作發布至該記憶體階層的該至少一個未加密儲存電路。因為記憶體階層的未加密儲存電路以未加密格式儲存資料,對維護操作重要的係具體地標定該等儲存電路。在加密點之後,因為資料大致無法由其他執行環境(或域/世界)存取,執行某些維護操作變得較不關鍵。例如,記憶體指派上的變化可由於執行環境終止或由於新執行環境開始而發生。
在一些實例中,該維護操作係一無效化操作。無效化操作將快取記憶體中的資料標記為不可用(例如,經刪除),使得其必須從記憶體階層中的其他處獲得,諸如記憶體。藉由至多無效化加密點,資料在不執行解密程序的狀況下不再可存取。因此,若與資料關聯的金鑰輸入亦已抹除或遺失,則該資料不再可存取。重要的是確保使用該記憶體空間之其資料以未加密方式儲存在(多個)未加密儲存電路中的任何先前執行環境使其資料無效化,使得其不能由新執行環境所存取。此係藉由使用標定(多個)未加密儲存電路的快取維護操作實現。因為與舊執行環境關聯的資料經加密,不需要標定(多個)經加密儲存電路的相同維護操作。因為新執行環境不具有對舊執行環境的舊金鑰的存取,資料不能解密。
在一些實例中,該維護操作係清除及無效化操作。清除及無效化操作導致髒(經修改)資料進一步在記憶體階層向上寫入–例如,至由DRAM支援的記憶體。同時,將記憶體階層之快取記憶體中的項無效化,使得對資料的未來存取係藉由從記憶體獲得資料而實現。
在一些實例中,該維護操作經組態以將在與該等執行環境的該一者關聯的該至少一個未加密儲存電路中的項無效化。因此將無效化維護操作引導朝向與執行環境的特定一者關聯或屬於該特定一者的未加密儲存電路(其中資料係以未加密方式儲存)中的該等項。除非由其他無效化操作標定/在由該等操作標定之前,屬於其他執行環境的資料保持有效。屬於特定執行環境之項的標定可藉由對屬於該特定執行環境的特定實體位址(或位址的範圍)發布快取維護操作而實現。管理執行環境的管理執行環境可判定屬於該等執行環境的該等實體位址。藉由使用實體位址索引快取記憶體,各快取可快速地判定有關位址是否存在於快取記憶體中。此之替代方案係對快取維護操作指定其之項將無效化的執行環境。此將根據執行環境而需要搜尋快取記憶體(將可係消耗時間的)或索引快取記憶體。
在一些實例中,指派上的該變化係記憶體至該等執行環境之該一者的一指派。在一些實例中,指派上的該變化可係對該等執行環境的該一者的記憶體的一解除分配或取消指派。
在一些實例中,該維護操作經組態以將在與該等執行環境之到期者關聯的該至少一個經加密儲存電路中的項無效化。當記憶體將重指派(或解除分配)時,無效化可在若/當執行環境結束時執行。藉由在先前執行環境結束時執行無效化,敏感資料不以未加密方式保持,其改善系統的安全性。
在一些實例中,該等執行環境的各者與用以產生該金鑰輸入的一加密環境識別符關聯;且該維護操作經組態以將該記憶體階層中之與該加密環境識別符關聯的項無效化。到期執行環境因此可基於特定用於已到期之該執行環境的加密環境識別符而在記憶體階層內識別。當然,在一些情況下,加密環境識別符可能由多個執行環境使用,以允許資料在該等多個執行環境之間共用。在此等情況下,當所有執行環境到期時或當執行環境的特定一者或特定子集到期時,加密環境識別符可在無效化操作中使用。如上文解釋的,實現無效化的替代方式係對管理執行環境(其知道指派給各執行環境的實體位址)發布對與其項將無效化的執行環境關聯的實體位址的無效化請求。此避免根據執行環境(識別符)索引快取記憶體的任何需要或針對有關項辛勤地搜尋快取記憶體。
在一些實例中,該記憶體存取請求對其發布的一記憶體位址係在複數個實體位址空間的一者中的一實體記憶體位址;且該等實體位址空間的各者與該至少二個域的一者關聯。域的各者可因此具有其自身的實體位址空間。
在一些實例中,該記憶體保護電路系統定義位於該記憶體階層的至少一個未混淆儲存電路之後且在該記憶體階層的至少一個混淆儲存電路之前的一實體混淆點;該至少一個未混淆儲存電路將來自對應於相同記憶體系統資源的不同實體位址空間的實體位址視為彷彿該等實體位址對應於不同的記憶體系統資源。除了實體混淆點(point of physical aliasing, PoPA)外,亦有加密點(point of encryption, PoE)。混淆在該實體混淆點之前受抑制。此意謂著(在PoPA之前的組件中)將發送至不同實體位址空間中的相同實體位址的二個記憶體存取視為對不同記憶體位址的請求。此可導致屬於二個項的相同資料在快取記憶體中儲存二次的混淆。
在一些實例中,該實體混淆點係在該加密點或在該加密點之後。因此,記憶體階層有零或多個具有加密且未實體混淆的組件。
在一些實例中,該實體混淆點係在該加密點。加密點及實體混淆點因此存在於記憶體階層中的相同點。
在一些實例中,回應於請求將記憶體從一來源實體位址空間至一目的地實體位址空間的一轉移的該記憶體轉變請求,該維護操作經組態以將在該至少一個混淆儲存電路中的至少一些項無效化。在記憶體(例如,至少一個頁)將在位址空間之間轉移的情況下,維護操作可至多延伸至實體混淆點–但不超出實體混淆點。此因此可延伸超出加密點。
在一些實例中,該等項的該至少一些經指派給該至少二個域之與該來源實體位址空間關聯的一者。無效化可因此限制在自來源實體位址空間移動的項。
以下實例之描述亦可係相關的。
根據一個實例組態,提供一種設備,其包含:處理電路系統,其經組態以在一固定數目之至少二個域的一者中執行處理,該等域的一者再分成一可變數目的執行環境;及記憶體保護電路系統,其經組態以使用一金鑰輸入以對從該等域的一目前一者內發布至一記憶體位址的一記憶體存取請求的該資料執行加密或解密,其中該金鑰輸入對該等域之各者且對該等執行環境之各者不同;用於該等域之各者的該金鑰輸入在該設備的一啟動時間係固定的;且用於該等執行環境之各者的該金鑰輸入係動態的。
關於該至少二個域,該等域(可存在數個)的至少一者經再分使得若干個執行環境在該域內操作。記憶體存取請求係對於儲存在記憶體階層中之記憶體中之資料的讀取或寫入請求。該資料可額外地快取在記憶體階層內。然而,該資料最終儲存在記憶體中(例如,DRAM)。使用金鑰輸入以執行進出記憶體之資料的加密或解密。金鑰輸入可視為至加密或解密演算法中的(多個)輸入或(多個)參數,該(多個)輸入或(多個)參數保持秘密以保護加密資料的機密性。此包括金鑰本身、以及金鑰的部分、可微調位元等。金鑰輸入對固定數目之域的各者不同。此外,在至少一個經再分域內,金鑰輸入對各執行環境不同。結果,除非該等執行環境二者具有相同金鑰,由一個執行環境加密的資料不能在經再分域內的另一執行環境內存取。此使資料在執行環境之間保持機密變得可行。應注意與在執行環境之間相比,金鑰輸入的形式在域之間可不同。例如,各域可使用不同金鑰,而各執行環境可使用相同金鑰,但使用不同的可微調位元。用於域之各者的金鑰輸入在設備最初啟動時(例如,在啟動順序期間)選擇。相比之下,用於該等執行環境之各者的該金鑰輸入係動態的,使得其可在設備的操作期間改變。實際上,執行環境的數目係可變的,且由於新執行環境的加入及舊執行環境的終止,金鑰輸入可依需要建立及刪除。該至少二個域包括經再分領域及根領域。在一些情形中,存在包括安全領域或較不安全領域的一者(於下文更詳細地描述)的至少三個域。
在一些實例中,該設備包含:記憶體轉譯電路系統,其經組態以將該記憶體位址從一虛擬記憶體位址轉譯成一實體記憶體位址及提供用以產生該金鑰輸入的一加密環境識別符;且將該記憶體存取請求與該加密環境識別符從該記憶體轉譯電路系統轉發至該記憶體保護電路系統。記憶體轉譯電路系統可採取,例如,記憶體管理單元(Memory Management Unit, MMU)的形式。除了提供從虛擬位址至實體位址(其可係中間實體位址)的轉譯外,亦提供與該實體位址關聯的加密環境識別符。此加密環境識別符最終用以產生用以執行加密(在寫入記憶體存取的情形中)或解密(在讀取記憶體存取的情形中)的金鑰輸入。在加密環境識別符已判定後,將此與存取請求一起提供至記憶體保護電路系統。加密環境識別符的使用意謂著不需要提供整個金鑰輸入(諸如整個金鑰)。替代地,可替代地使用較小的加密環境識別符,從而降低運載識別符所需之匯流排中的系統負擔及快取線寬度擴增。
在一些實例中,該記憶體轉譯電路系統經組態以儲存複數個頁表項,且回應於對該複數個頁表項上的該虛擬記憶體位址執行一查找而指示該加密環境識別符。各頁表項因此含有用以執行記憶體之特定頁的加密的加密環境識別符的指示。該指示可係加密環境識別符本身或其可係,例如,關於數個加密環境識別符之何者應用於儲存在該頁上之資料的加密及/或解密的指示。頁表項亦可含有指示哪些域及/或執行環境可存取記憶體位址的存取權限。
在一些實例中,該記憶體轉譯電路系統包含複數個加密環境識別符暫存器;且該記憶體轉譯電路系統經組態以指示該等環境識別符暫存器的何者將用以提供該加密環境識別符。將不同的加密環境識別符儲存在複數個加密環境識別符暫存器的各者中。儲存在各頁表項中的指示接著指示將提供暫存器中的哪個值。結果,使頁表項中所需的額外位元的數目保持小–從而降低所需的儲存量。藉由提供多個暫存器,可能允許執行環境同時使用二或更多個不同的加密環境識別符–識別符之各者用以存取在不同位置上的資料。例如,執行環境可使用一個加密環境識別符存取其自身的私密資料,且可使用第二加密環境識別符存取與第二執行環境共用的資料。例如,第二執行環境可具有第三加密環境識別符以存取其自身的私密資料,或第二加密環境識別符可係唯一由第二執行環境使用的加密環境識別符。更複雜的共用方案當然亦係可行的。
在一些實例中,該加密環境識別符在該等執行環境的一子集之間共用。藉由共用加密環境識別符,共用加密環境識別符的多個執行環境可各存取記憶體的相同區域,且從而在執行環境之間共用資料,該資料不可被不具有該加密環境識別符的其他執行環境存取。
在一些實例中,該記憶體保護電路系統經組態以藉由使用由該記憶體存取請求提供的該加密環境識別符執行一查找而獲得用於該等執行環境的該一者的該金鑰輸入。記憶體保護電路系統可因此含有表或以其他方式使用加密環境識別符存取表,且從而獲得對應於加密環境識別符的金鑰輸入。
在一些實例中,該查找的一結果係呈一金鑰形式的該金鑰輸入。查找可從而從查找的結果提供金鑰。在一些實例中,該查找特別針對與執行環境關聯的金鑰輸入,而非針對與該等域關聯的金鑰輸入執行。
在一些實例中,該查找的一結果係呈用以執行該加密或解密的一貢獻形式的該金鑰輸入。如先前描述的,金鑰輸入可係對執行加密或解密的(秘密)貢獻(諸如,金鑰的微調值或一部分)。在一些實例中,該查找特別針對與執行環境關聯的金鑰輸入,而非針對與該等域關聯的金鑰輸入執行。
在一些實例中,該記憶體存取請求對其發布的該記憶體位址係在複數個實體位址空間的一者中的一實體記憶體位址;且該等實體位址空間的各者與該至少二個域的一者關聯。取決於提供在底層架構中的權限,域可能能夠存取(或許以受限制方式)儲存在非相關域中的資料。
在一些實例中,該記憶體存取請求對其發布的該記憶體位址係在複數個實體位址空間的一者中的一實體記憶體位址;且該等實體位址空間的各者與該至少二個域的正好一者關聯。
在一些實例中,該至少二個域包括用於管理該至少二個域之間的切換的一根域;且該複數個實體位址空間包括與該根域關聯之與該複數個其他域關聯的實體位址空間分開的一根實體位址空間。藉由提供用於控制切換的專用根域,此可藉由限制在一個域中執行之碼可觸發至另一域之切換的程度而幫助維護安全性。例如,根域可在請求域切換時執行各種安全檢查。根域具有分配給其之其自身的實體位址空間,而非使用實體位址空間之與其他域的一者關聯的一者。藉由提供與其他域所關聯的實體位址空間隔離的專用根實體位址空間,此可對與根域關聯的資料或碼提供更強的安全性保證,鑑於其將管理至其他域中的項,可將其視為對安全性係最關鍵的。再者,提供與其他域的實體位址空間區分開的專用根實體位址空間可簡化系統開發,此係因為其可簡化各別實體位址空間內的實體位址至硬體記憶體儲存器之特定單元的分配。例如,藉由識別分開的根實體位址空間,對與根域關聯的資料或程式碼而言,優先儲存在受保護晶片上記憶體中而非較不安全的晶片外記憶體中可能更簡單,其中判定與根域關聯的部分時的額外負擔比若根域的碼或資料儲存在與另一域共用的共用位址空間中更少。
在一些實例中,該至少二個域至少包含:與一安全實體位址空間關聯的一安全域,及與一較不安全實體位址空間關聯的一較不安全域;該較不安全實體位址空間可從該較不安全域、該安全域、及該根域存取;且該安全實體位址空間可從該安全域及該根域存取,且不可從該較不安全域存取。因此,此允許在安全域中執行的碼使其碼或資料受保護而免於由在較不安全域中操作的碼存取,其具有比若將頁表使用為單獨安全控制機制更強的安全性保證。例如,需要更強安全性的碼的部分可在由與在較不安全域中操作的非安全作業系統不同的受信任作業系統管理的安全域中執行。支援此類安全及較不安全域的系統的實例可係根據支援由Arm ®Limited of Cambridge, UK提供的TrustZone ®架構特徵的處理架構操作的處理系統。在習知TrustZone ®實施方案中,用於管理安全與較不安全域之間的切換的監測碼使用由安全域使用的相同安全實體位址空間。相比之下,藉由提供如上文描述之用於管理其他域之切換的根域且指派用於由根域使用的專用根實體位址空間,此幫助改善安全性並簡化系統開發。
在一些實例中,該複數個實體位址空間全部可從該根域存取。由於在根域中執行的碼必須被提供在其他域的一者中操作之碼的任一方所信任,當根域碼將負責切換至該方的碼正於其中執行的特定域中時,則根域可固有地受信任以存取實體位址空間的任何者。使所有的實體位址空間可從根域存取允許執行諸如將記憶體區域轉變至域中或轉變出域、將碼及資料複製至域中,例如,在啟動期間、及將服務提供給該域的功能。在提供複數個加密環境識別符暫存器的該等子實例中,該等暫存器的一者可用以儲存與該等領域之在根域內執行之軟體所希望存取的一者關聯的加密環境識別符。此允許根域內的軟體加密/解密領域域中的資料。根域不具有用於根PAS存取的主MECID。替代地,在根域內使用0的預設MECID值。根域使用替代MECID暫存器96以儲存替代MECID以用於其對領域PAS的存取。
在一些實例中,該等域的該一者係與一領域實體位址空間關聯的一領域域;且該領域實體位址空間再分成該可變數目的子區域實體位址空間。因此,各領域可被給予在總領域位址空間內的其自身實體位址空間。
在一些實例中,該較不安全實體位址空間可從該領域域存取;且該領域實體位址空間可從該領域域及該根域存取,且不可從該較不安全域存取。因此,可將領域域視為比較不安全域更安全,但與安全域類似地安全。
在此等實例的一些中,安全域可從領域域存取。然而,在其他實例中,該領域實體位址空間不可從該安全域存取;且該安全實體位址空間不可從該領域域存取。軟體供應商越來越期望具有安全計算環境,該安全計算環境限制信任與在相同硬體平台上執行的其他軟體關聯的其他軟體供應商的需求。例如,在領域中可存在若干種用途,諸如行動支付及銀行業、電腦遊戲中的反作弊及盜版機制的執行、作業系統平台的安全性增強、託管在雲端系統中的安全虛擬機器、機密計算等,其中提供軟體碼的一方可能不願意信任提供作業系統或超管理器(可能已於先前視為受信任的組件)的該方。在支援具有各別實體位址空間的安全域及較不安全域的系統中,諸如基於上述TrustZone ®架構的系統,隨著在安全域中操作的安全組件的日益接納,一般在安全域中操作的該組軟體已增長以包括可由不同數目的軟體供應商提供的若干件軟體,其包括諸如從包括由特定矽供應商提供的矽積體電路晶片的組件組裝處理裝置(諸如行動電話)的原始設備製造商(original equipment manufacturer, OEM)、提供在該裝置上運行之作業系統的作業系統廠商(operating system vendor, OSV)、及維護提供用於將虛擬機器託管在雲端上之伺服器空間的伺服器場的雲端平台操作員(或雲端主機)的多方。因此,若該等域以嚴格的特權遞增順序實施,則可能存在問題,此係因為希望具有安全計算環境之提供應用程式級碼的應用程式供應商可能不希望信任傳統上可能已提供執行安全域之軟體的一方(諸如,OSV、OEM、或雲端主機),但同樣地,提供在安全域中操作之碼的該等方不太可能希望信任提供在經給予與較低特權域關聯之資料的存取的較高特權域操作的碼的應用程式供應商。此等實例認知到嚴格的特權連續遞增的域階層可係不適當的,且因此可將該領域域視為正交於安全域,而該領域域及安全域可各存取較不安全實體空間,領域不可存取其他者的實體空間。
在一些實例中,該較不安全實體位址空間可從所有該至少二個域存取。由於其促進資料或程式碼在不同域中執行的軟體之間共用,此係有用的。若資料或碼的特定項目將可在不同域中存取,則可將其分配至較不安全實體位址空間,使得其可從該等域的任何者存取。
以下實例之描述亦可係相關的。
在一些實例中,提供一種設備,其包含:處理電路系統,其經組態以在一固定數目之至少二個域的一者中執行處理,該等域的一者再分成一可變數目的執行環境;記憶體轉譯電路系統,其經組態以回應於對一給定記憶體位址的一記憶體存取請求而判定與該等執行環境的該一者關聯的一給定加密環境識別符,及將該記憶體存取請求與該給定加密環境識別符一起轉發;儲存電路系統,其經組態以儲存複數個項,各與一關聯加密環境識別符及一關聯記憶體位址關聯,其中該儲存電路系統包含判定電路系統,該判定電路系統經組態以在至少一個啟用操作模式中判定該給定加密環境識別符是否不同於與該等項之與該給定記憶體位址關聯的一者關聯的該關聯加密環境識別符。
該至少二個域可係至少三個域。例如,此等可包括安全域、非安全域(其並非暗示無安全性,僅比安全域更不具安全性)、及領域域(realm domain),其可係再分成複數個執行環境的域。可控制對不同域之間的資源的存取。例如,屬於在安全域中執行之程序的資料可能不可對在非安全域中操作的資源存取。同時,安全域中的資源可能不由在領域域中操作的資源存取(且反之亦然),但領域域及安全域二者可存取非安全域中的資源。在此等實例中,在經再分領域中操作的執行環境的各者具有識別記憶體之可用以儲存以加密方式由執行環境使用之資源的區域的關聯加密環境識別符。以此方式,屬於各執行環境的資源可彼此隔離及受保護。儲存電路系統(例如,快取記憶體)可用以儲存項(例如,快取線)。各快取線可藉由執行環境識別符關聯,也就是說並非快取線必然加密,但可替代地非加密儲存且與該加密環境識別符關聯。項(例如,快取線)之各者亦具有關聯記憶體位址(例如,在記憶體之快取線有關於其之區域中的位置)。當代表該等執行環境的一者發布記憶體存取請求時,其將獲取與該執行環境關聯的加密環境識別符。記憶體存取請求接著將朝向主記憶體行進通過記憶體階層。在一些情形中,記憶體存取請求有關於其的資料將已儲存在儲存電路系統(例如,快取記憶體)中。在正常情況下,對於待傳回的資料,與記憶體存取請求關聯的加密環境識別符需要與儲存電路系統之含有該記憶體存取請求係對其發布之資料的項關聯的加密環境識別符匹配。在此等實例中,提供判定電路系統以作出判定。設備可能能夠在啟用操作模式之間切換,或可固定目前模式。
在一些實例中,該設備包含記憶體保護電路系統,其經組態以回應於該記憶體存取請求的該資料不存在於該儲存電路系統而使用一金鑰輸入以對該資料執行加密或解密,其中該金鑰輸入係基於該給定加密環境識別符;用於該等域之各者的該金鑰輸入在該設備的一啟動時間係固定的;且用於該等執行環境之各者的該金鑰輸入係動態的。加密環境識別符係由記憶體保護電路系統使用以判定金鑰輸入(例如,金鑰、金鑰的一部分、一或多個可微調位元)。金鑰輸入係用以實現對執行環境及對域的加密及解密。其因此對各域且對各執行環境係不同的。用於域的金鑰輸入在設備起動時係固定的。另一方面,因為執行環境可動態地開始、停止、及改變,用於執行環境的金鑰輸入動態地判定。
在一些實例中,該儲存電路系統經組態以在至少一個錯誤操作模式中回應於該給定加密環境識別符不同於與該給定記憶體位址關聯的該關聯加密環境識別符而執行一錯誤動作。在此等實例中,設備在失配發生時對其回應且對該失配的回應係執行錯誤動作。在無失配發生的情況下,記憶體存取請求如常地繼續進行。
在一些實例中,該至少一個啟用操作模式包含一破壞操作模式,在該破壞操作模式中回應於在該給定加密環境識別符不同於與該等項的該一者關聯的該關聯加密環境識別符時該等項的該一者的該關聯記憶體位址係該給定記憶體位址,該儲存電路系統經組態以破壞該等項的該一者。該項經破壞,從而使該項成為經破壞項。亦即一些或所有的項於稍後時期若由處理電路系統消耗及在由處理電路系統消耗時,將產生錯誤。藉由破壞該項且推遲可能引起的任何錯誤,可能防止讀取可能係私密的資料(在讀取請求的情形中)或防止使用損毀的資料(在寫入請求的情形中)。然而,若絕對不再從該資料讀取,則無需引起錯誤。例如,在預提取或推測執行的情形中,消耗不足可能發生。在係記憶體讀取請求之記憶體存取請求的情形中,資料可能幾乎立即消耗,導致立即性錯誤。
在一些實例中,該處理電路系統經組態以在該等項的該一者由該處理電路系統接收時產生一例外。經破壞項因此由處理電路系統保持為不可使用。
在一些實例中,當該記憶體存取請求係一寫入記憶體存取請求時,該等項之該一者之由該(失配)寫入記憶體存取請求存取的該等部分經修改且該等項之該一者的剩餘部分經破壞。寫入請求可僅修改儲存電路系統(例如,記憶體)之項(例如,快取線)的一者的一部分。在此等情況中,修改該項之尋求由記憶體存取請求修改的該等部分。同時,該項之存取請求未尋求修改的其他部分保持現狀,但受破壞,使得若在未來受存取,將由處理電路系統引起例外。
在一些實例中,該至少一個啟用操作模式包含一混淆操作模式,在該混淆操作模式中該儲存電路系統經組態以在該等項的該關聯記憶體位址匹配且在該等項的該關聯加密環境識別符失配時將該儲存電路系統的該等項視為不同。在此等實例中,回應於失配,各項有效地將加密環境識別符視為係位址的部分,而非導致錯誤發生。將具有不同加密環境識別符之對相同位址的二個項視為二個分開且不同的項。因此,失配「無法」發生–使用一個加密環境識別符之對一個記憶體位址的記憶體存取請求尋求對與相同記憶體位址及不同加密環境識別符關聯的項存取資料的不同項目。
在一些實例中,該至少一個啟用操作模式包含一清除操作模式,在該清除操作模式中回應於在該給定加密環境識別符不同於與該等項的該一者關聯的該關聯加密環境識別符時該等項的該一者的該關聯記憶體位址係該給定記憶體位址,該儲存電路系統經組態以將該等項的該一者清除及無效化。在此等實例中,失配係藉由將儲存電路系統之現有項寫回至記憶體階層中的一點而處置,其中加密係使用加密環境識別符(例如,主記憶體)執行。接著將儲存電路系統中的項無效化使得其無法存取。
在一些實例中,在該清除操作模式中,回應於在該給定加密環境識別符不同於與該等項的該一者關聯的該關聯加密環境識別符時該等項的該一者的該關聯記憶體位址係該給定記憶體位址,該儲存電路系統進一步經組態以將該記憶體存取請求視為在該儲存電路系統中的一未命中。在資料已寫回(清除)且接著無效化後,可將記憶體存取請求視為在儲存電路系統中未命中。該請求因此可重發布至記憶體階層中,其中所請求的資料最終傳遞回儲存電路系統以用於儲存。
在一些實例中,該處理電路系統經組態以在一推測操作模式中時將該記憶體存取請求推測地發布為一推測讀取請求;且除非該儲存電路系統在該啟用操作模式中,否則停用該推測操作模式。例如,在分支指令的結果上推測時所產生的推測讀取請求可使用不正確的加密環境識別符發生。例如,可准許推測讀取請求用於具有有效MMU映射的正常記憶體(例如,DRAM)位址。然而,若MECID對該位置係「錯的」,不應准許此類存取。傳統超管理器可具有其自身之用於所有DRAM的虛擬位址映射,與超管理器所監督之虛擬機器的映射無關。對於具有MECID的領域,若任何領域管理器具有至所有DRAM的映射,則CPU將能夠無論「正確的」領域MECID值是否存在而推測該等位址。結果,安全系統應防止推測讀取請求發生,或應實施先前提及之捉住(或徹底防止)加密環境識別符之間的失配的啟用模式的一者。
在一些實例中,該至少一個啟用操作模式包含一抹除操作模式,在該抹除操作模式中回應於在該給定加密環境識別符不同於與該等項的該一者關聯的該關聯加密環境識別符時該等項的該一者的該關聯記憶體位址係該給定記憶體位址,該儲存電路系統經組態以執行該等項的該一者的一抹除。項的抹除與資料僅標記為無效且不可存取的無效化的不同處在於將實際儲存在儲存電路系統中的資料移除。存在若干種此可以其實現的方式。
在一些實例中,該儲存電路系統經組態以藉由將該等項的該一者歸零或隨機化而執行該抹除。藉由將資料歸零,資料由預定義序列(一般係位元「0」,但使用位元「1」亦可稱為「歸零」)所置換,其中預定義序列不具有明顯意義。另一替代方案係拌碼或隨機化項的資料。在任何情況下,移除資料的原始意義,使得其不再可被判定。
在一些實例中,當該記憶體存取請求係一寫入記憶體存取請求時,該儲存電路系統進一步經組態以更新該關聯加密識別符以與該給定加密環境識別符對應。除了先前描述的動作外,寫入至發生失配之特定項的動作可導致與該項關聯的加密環境識別符被與記憶體存取請求關聯的加密環境識別符所覆寫。
在一些實例中,該判定電路系統經組態以在至少一個停用操作模式中抑制該給定加密環境識別符是否不同於與該等項之與該給定記憶體位址關聯的一者關聯的該關聯加密環境識別符的判定。(多個)停用操作模式從而停用或抑制失配偵測發生。因此,任何可能發生的失配基本上經忽略。此因此可導致儲存電路系統的任何項的明文洩漏至其他執行環境。實際上,可存在防止此發生的其他保護機制。例如,管理系統可防止發布與另一執行環境有關的記憶體存取請求。
在一些實例中,在該至少一個啟用操作模式的至少一些中,回應於在該給定加密環境識別符不同於與該等項的該一者關聯的該關聯加密環境識別符時該等項的該一者的該關聯記憶體位址係該給定記憶體位址,該儲存電路系統經組態以產生一非同步例外。在非同步例外中,該例外與導致該例外的碼不一致。亦即,可引起該例外。然而,其可能未經處置直到(可能係非決定性的)稍後的時間。然而,此確實准許洩漏資料的除錯或偵測。存在若干種此可以引起非同步例外的方式。
在一些實例中,該儲存電路系統經組態以產生該非同步例外,及將該記憶體存取請求的細節儲存在該處理電路系統可存取的一或多個暫存器中。與記憶體存取請求有關的資料–諸如存取正對其進行的記憶體位址、存取的類型(讀取或寫入)、對其產生記憶體存取請求的執行環境、儲存電路系統中記憶體位址與其關聯的執行環境等可儲存在該等暫存器中。可使用此以實現導致加密環境失配之情況的除錯及/或偵測。
現在將參考圖式描述特定實施例。
圖1示意地繪示具有至少一個請求器裝置4及至少一個完成器裝置6的資料處理系統2的實例。互連8提供請求器裝置4與完成器裝置6之間的通訊。請求器裝置能夠發布請求對特定可定址記憶體系統位置的記憶體存取的記憶體存取請求。完成器裝置6係具有服務關於其之記憶體存取請求之責任的裝置。雖然未顯示於圖1中,一些裝置可能能夠充當請求器裝置及充當完成器裝置二者。請求器裝置4可,例如,包括處理元件,諸如中央處理單元(CPU)或圖形處理單元(GPU)或其他主裝置(諸如匯流排主裝置、網路介面控制器、顯示器控制器等)。完成器裝置可包括負責控制對對應記憶體儲存單元之存取的記憶體控制器、控制對周邊裝置之存取的周邊控制器等。圖1更詳細地顯示請求器裝置4的一者的實例組態,但將理解其他請求器裝置4可具有類似組態。替代地,其他請求器裝置可具有與顯示於圖1左側的請求器裝置4不同的組態。
請求器裝置4具有回應於指令而參考儲存在暫存器12中的資料執行資料處理的處理電路系統10。暫存器12可包括用於儲存運算元及經處理指令之結果的通用暫存器,以及用於儲存用於組態處理如何由處理電路系統執行之控制資料的控制暫存器。例如,控制資料可包括用以選擇哪個操作域係目前域的目前域指示14,及指示哪個例外等級係處理電路系統10正於其中操作的目前例外等級的目前例外等級指示15。
處理電路系統10可能能夠發布指定識別待存取之可定址位址的虛擬位址(virtual address, VA)的記憶體存取請求及識別目前域的域識別符(域ID或「安全狀態(security state)」)。位址轉譯電路系統16(例如,記憶體管理單元(MMU))基於定義在儲存在記憶體系統中之頁表結構中的頁表資料通過一或多階段的位址轉譯而將虛擬位址轉譯成實體位址(physical address, PA)。轉譯後備緩衝器(translation lookaside buffer, TLB) 18充當用於快取一些頁表資訊的查找快記記憶體,以用於比若該頁表資訊在每次需要記憶體轉譯時必需從記憶體提取更快的存取。在此實例中,除了產生實體位址外,位址轉譯電路系統16亦選擇若干個實體位址空間之與該實體位址關聯的一者、輸出識別經選擇實體位址空間的實體位址空間(physical address space, PAS)識別符、且亦提供其目的於下文更詳細地描述的MECID。
PAS濾波器20充當用於基於經轉譯實體位址及PAS識別符檢查是否允許該實體位址在藉由PAS識別符識別之指定實體位址空間內存取的請求器側濾波電路系統。此查找係基於儲存在記憶體系統內所儲存之顆粒保護表結構中的顆粒保護資訊。可將顆粒保護資訊快取在顆粒保護資訊快取記憶體22內,類似於將頁表資料快取在TLB 18中。雖然在圖1的實例中將顆粒保護資訊快取記憶體22顯示成係與TLB 18分開的結構,在其他實例中,可將此等類型的查找快取記憶體組合至單一查找快取記憶體結構中,使得經組合結構之項的單一查找提供頁表資訊及顆粒保護資訊二者。顆粒保護資訊定義限制給定實體位址可自其存取之實體位址空間的資訊,且基於此查找,PAS濾波器20判定是否允許記憶體存取請求繼續進行以發布至一或多個快取記憶體24及/或互連8。若不允許記憶體存取請求的經指定PAS存取經指定實體位址,則PAS濾波器20阻止交易且可傳訊故障。
雖然圖1顯示具有多個請求器裝置4之系統的實例,對圖1的左側的一個請求器裝置顯示的特徵亦可包括在僅有一個請求器裝置(諸如單核心處理器)的系統中。
雖然圖1顯示用於給定請求之PAS的選擇係由位址轉譯電路系統16執行的實例,在其他實例中,用於判定選擇哪個PAS的資訊可由位址轉譯電路系統16連同PA輸出至PAS濾波器20,且PAS濾波器20可選擇PAS並檢查是否允許PA在經選擇PAS內存取。
PAS濾波器20的提供幫助支援可在若干個操作域中操作的系統,該等操作域各與其自身的經隔離實體位址空間關聯,其中,對於記憶體系統的至少一部分(例如,對於一些快取或同調性執行機制(諸如監聽濾波器)),將分開的實體位址空間視為彷彿其等係指識別分開的記憶體系統位置的完全分開的位址組,即使在該等位址空間內的位址實際上係指記憶體系統中的相同實體位置。此對安全目的可係有用的。
圖2顯示處理電路系統10可以其操作的不同操作狀態及域的實例,及可在不同例外等級及域中執行之軟體之類型的實例(當然,將理解安裝在系統上的特定軟體係由管理該系統的管理方挑選,且因此不係硬體架構的基本特徵)。
處理電路系統10可在若干個不同例外等級80(在此實例中,標記為EL0、EL1、EL2、及EL3的四個例外等級)操作,其中在此實例中,EL3係指具有最大特權等級的例外等級,而EL0係指具有最小特權的例外等級。將理解其他架構可挑擇相反編號,使得可將具有最高數目的例外等級視為具有最低特權。在此實例中,最小特權例外等級EL0係用於應用程式級碼、次一最高特權例外等級EL1係用於作業系統級碼、次一最高權特例外等級EL2係用於管理若干個虛擬化作業系統之間的切換的超管理器級碼、而最高特權例外等級EL3係用於管理各別域之間的切換及實體位址至實體位址空間之分配的監測碼,如稍後描述的。
當例外在處理在特定例外等級中之軟體的同時發生時,對於一些類型的例外,使該例外取得較高(更多特權)例外等級,其中該例外將取得的特定例外等級係基於所發生之特定例外的屬性選擇。然而,在一些情況下,使其他類型的例外取得與在取得例外時正受處理之碼所關聯的例外等級相同的例外等級可係可能的。當取得例外時,可保存將處理器在取得例外時之狀態特徵化的資訊,包括,例如,在取得例取時的目前例外等級,且因此一旦例外處置器已經處理以處理該例外時,處理可接著返回至先前處理,且經保存資訊可用以識別處理應返回的例外等級。
除了不同的例外等級外,處理電路系統亦支援包括根域82、安全(S)域84、較不安全域86、及領域域88的若干個操作域。為便於參考,下文將較不安全域描述為「非安全」(NS)域,但將理解此並未意圖暗示任何特定安全(或缺乏安全)等級。替代地,「非安全」僅指示非安全域意圖用於比在安全域中操作之碼更不安全的碼。當處理電路系統10在最高例外等級EL3時,選擇根域82。當處理電路系統在其他例外等級EL0至EL2的一者中時,目前域係基於指示其他域84、86、88的何者係使用中的目前域指示器14選擇。對於其他域84、86、88之各者,處理電路系統可在例外等級EL0、EL1、或EL2的任何者中。
在啟動時間,若干啟動碼區段(例如,BL1、BL2、OEM Boot)可,例如,在更高特權例外等級EL3或EL2內執行。例如,啟動碼BL1、BL2可與根域關聯,且OEM啓動碼可在安全域中操作。然而,一旦系統經啟動,在運行時間,可將處理電路系統10視為每次在域82、84、86、及88的一者中操作。域82至88的各者與其自身之使資料能在至少部分的記憶體系統內與不同域隔離的關聯實體位址空間(PAS)關聯。此將於下文更詳細地描述。
非安全域86可用於正規應用程式級處理,及用於管理此類應用程式的作業系統及超管理器活動。因此,在非安全域86內,可有在EL0操作的應用程式碼30、在EL1操作的作業系統(OS)碼32、及在EL2操作的超管理器碼34。
安全域84使某些系統單晶片安全性、媒體、或系統服務能隔離至與用於非安全處理的實體位址空間分開的實體位址空間中。安全及非安全域就非安全域碼無法存取與安全域84關聯的資源而安全域可存取安全及非安全資源二者的意義上而言並不相等。支援安全域84及非安全域86之此類分區之系統的實例係基於由Arm ®Limited提供的TrustZone ®架構的系統。安全域可在EL0運行受信任應用程式36、在EL1運行受信任作業系統38、以及可選地在EL2運行安全分區管理器40,若支援安全分區,該安全分區管理器可使用階段2頁表以與超管理器34可以其管理在非安全域86中執行之虛擬機器或客作業系統32之間的隔離的方式類似的方式支援在安全域84中執行的不同受信任作業系統38之間的隔離。
由於將系統延伸成支援安全域84使單一硬體處理器能支援經隔離安全處理,避免處理在單獨硬體處理器上執行的需求,其已於近年變得普遍。然而,隨著安全域的使用日益普遍,具有此一安全域的許多實際系統現在在安全域內支援相對複雜之由廣泛範圍的不同軟體供應商提供之服務的混合環境。例如,在安全域84中操作的碼可包括(尤其)由下列者提供的不同件軟體:製造積體電路的矽供應商、將由矽供應商提供的積體電路總成至電子裝置(諸如行動電話)中的原始設備製造商(OEM)、提供用於裝置之作業系統32的作業系統廠商(OSV);及/或管理支援通過雲端用於若干個不同用戶端之服務的雲端伺服器的雲端平台供應商。
然而,提供使用者級碼(可能通常預期其執行為非安全域86內的應用程式30)的供應方越來越期望具有可信任不將資訊洩露給在相同實體平台上操作碼之其他方的安全計算環境。此類安全計算環境在運行時間可動態地分配、及認證及可證明可係所欲的,使得使用者在信任該裝置處理可能敏感的碼或資料之前能夠驗證是否在實體平台上提供足夠的安全保證。此類軟體的使用者可能不希望信任提供可能通常在非安全域86中操作之富作業系統32或超管理器34的供應方(或即使該等供應商自身可信任,使用者可能希望保護自身免於作業系統32或超管理器34為攻擊者所損害)。再者,雖然安全域84可用於需要安全處理的此類使用者提供應用程式,在實務上,此對提供需要安全計算環境之碼的使用者及對在安全域84內操作之現有碼的供應商二者導致問題。對於在安全域84內操作之現有碼的供應商,將任意使用者提供碼加在安全域內會增加潛在攻擊其等碼的攻擊表面,其可能係非所欲的,且因此允許使用者將碼加入安全域84中可能受強烈地阻撓。另一方面,提供需要安全計算環境之碼的使用者可能不願意信任在安全域84中操作的不同碼區段的所有供應商具有對其資料或碼的存取,若在特定域中操作的碼需要認證或證明以作為使用者提供碼執行其處理的先決條件,可能難以審核及認證由不同軟體供應商提供之在安全域84中操作的所有不同碼區段,其可能限制第三方提供更安全服務的機會。
因此,如圖2所示,提供稱為領域域的額外域88,其可由此類使用者引入碼使用以提供正交於與在安全域24中操作之組件關聯的任何安全計算環境的安全計算環境。在領域域中,所執行的軟體可包括若干個領域(或執行環境),其中各領域可藉由在例外等級EL2操作的領域管理模組(realm management module, RMM) 46與其他領域隔離。RMM 46可控制執行領域域88的各別領域42、44之間的隔離,例如,以類似於超管理器34以其管理在非安全域86中操作的不同組件之間的隔離的方式將存取權限及位址映射定義在頁表結構中。在此實例中,領域包括在EL0執行的應用程式級領域42,及橫跨例外等級EL0及EL1執行的經封裝應用程式/作業系統領域44。將理解支援EL0及EL0/EL1類型的領域不係必要的,且相同類型的多個領域可藉由RMM 46建立。
領域域88具有類似於安全域84之分配給其之其自身的實體位址空間,但領域域就在領域域88及安全域84可各存取與非安全域86關聯的非安全PAS的同時,領域域88及安全域84無法存取彼此的實體位址空間的意義上而言正交於安全域84。此意謂著在領域域88及安全域84中執行的碼彼此不具有相依性。領域域中的碼僅需要信任硬體、RMM 46、及在根域82中操作之管理域之間的切換的碼,其意謂著證明及認證變得更可行。證明使給定軟體能請求安裝在裝置上的碼匹配某些預期性質的驗證。此可藉由檢查安裝在裝置上之程式碼的雜湊是否匹配由受信任方使用密碼協定簽署的預期值而實施。RMM 46及監測碼29可,例如,藉由檢查此軟體的雜湊是否匹配由受信任方(諸如製造包含處理系統2之積體電路的矽供應商,或設計支援基於域之記憶體存取控制之處理器架構的架構供應商)簽署的預期值而證明。此可允許使用者提供碼42、44在執行任何安全或敏感功能之前驗證基於域之架構的完整性是否可信任。
因此,可看出與領域42、44關聯的碼(其將已於先前在非安全域86中執行,如藉由顯示在此等程序將已於先前於該處執行之非安全域中之間隙的虛線所示)現在可移動至其等由於其等的資料及碼不可為在非安全域86中操作的其他碼存取而可具有更強安全保證的領域域中。然而,導因於領域域88與安全域84正交且因此無法見到彼此的實體位址空間,此意謂著領域域中之碼的供應商不需要信任安全域中之碼的供應商,反之亦然。領域域中的碼可簡單地信任提供用於根域82之監測碼29及RMM 46的受信任韌體,該受信任韌體可由當碼在矽供應商或由處理器所支援之指令集架構的供應商的裝置上執行時可已經固有地必需受信任的該等供應商提供,使得使用者能夠具有安全計算環境而不需要與其他作業系統廠商、OEM、或雲端主機的進一步信任關係。
此可對一系列應用程式及使用情形有用,包括,例如,手機電子錢包及支付應用程式、遊戲反作弊及盜版機制、作業系統平台的安全增強、安全虛擬機器託管、機密計算、網路、或用於物聯網裝置的閘道器處理。將理解使用者可發現領域支援係有用的許多其他應用。
為支援對領域提供的安全保證,處理系統可支援證明報告功能,其中在啟動時間或在運行時間,對韌體影像及組態進行測量,例如,監測碼影像及組態或RMM碼影像及組態,且在運行時間,測量領域內容及組態,使得領域所有者可將有關證明報告回溯追蹤至已知實施方案及認證以作出是否在該系統上操作的信任決定。
如圖2所示,提供管理域切換的單獨根域82,且該根域具有其自身的經隔離根實體位址空間。根域的建立及其資源與安全域的隔離允許更強固的實施方案,甚至用於僅具有非安全域86及安全域84,但不具有領域域88的系統,但亦可用於確實支援領域域88的實施方案。根域82可使用由矽供應商或架構設計者提供(或認證)的監測軟體29實施,且可用以提供安全啟動功能、受信任啟動測量、系統單晶片組態、除錯控制、及由其他方(諸如OEM)提供之韌體組件之韌體更新的管理。根域碼可由矽供應商或架構設計者開發、認證、及部署而無須相依於最終裝置。相比之下,安全域84可由OEM管理以用於實施某些平台及安全服務。非安全域86的管理可由作業系統32控制以提供作業系統服務,而領域域88在與安全域84中的現有安全軟體環境互相隔離的同時,允許可專用於使用者或第三方應用程式的新形式的受信任執行環境的開發。
圖3示意地繪示用於支援此等技術之處理系統2的另一實例。與圖1相同的元件使用相同的元件符號繪示。圖3更詳細地顯示位址轉譯電路系統16,其包含階段1記憶體管理單元50及階段2記憶體管理單元52。階段1 MMU 50可負責將虛擬位址轉譯成實體位址(當轉譯由EL2或EL3碼觸發時)或中間實體位址(當轉譯在需要藉由階段2 MMU 52的進一步階段2轉譯的操作狀態中由EL0或EL1碼觸發時)。階段2 MMU可將中間實體位址轉譯成實體位址。階段1 MMU可基於由作業系統控制之用於從EL0或EL1起始之轉譯的頁表、由超管理器控制之用於來自EL2之轉譯的頁表、或由監測碼29控制之用於來自EL3之轉譯的頁表。另一方面,階段2 MMU 52可基於取決於正在使用哪個域而由超管理器34、RMM 46、或安全分區管理器14定義的頁表結構。以此方式將轉譯分成二個階段允許作業系統在其等係唯一在系統上運行之作業系統的假設下管理其等自身及應用程式的位址轉譯,而RMM 46、超管理器34、或SPM 40可管理在相同域中運行的不同作業系統之間的隔離。
如圖3所示,使用位址轉譯電路系統16的位址轉譯程序可傳回安全屬性54,該等安全屬性與目前例外等級15及目前域14(或安全狀態)結合回應於給定記憶體存取請求而允許存取特定實體位址空間(藉由PAS識別符或「PAS TAG」識別)的區段。實體位址及PAS識別符可在提供早先描述的顆粒保護資訊的顆粒保護表56中查找,或此可來自位址轉譯電路系統。在此實例中,將PAS濾波器20顯示為顆粒記憶體保護單元(granular memory protection unit, GMPU),該顆粒記憶體保護單元驗證是否允許經選擇PAS存取所請求的實體位址,且若如此,允許交易傳遞至係記憶體系統之系統網狀架構的部分的任何快取記憶體24或互連8。
GMPU 20在提供強的基於硬體的隔離保證及在將指派實體記憶體至此等位址空間中的方法中提供空間及時間彈性的同時,允許將記憶體指派給分開的位址空間以及有效率的共用方案。如早先描述的,將系統中的執行單元邏輯地分區成虛擬執行狀態(域或「世界(World)」),其中有一個位於最高例外等級(EL3)之稱為「根世界(Root World)」之管理對此等世界的實體記憶體指派的執行狀態(根世界)。
將單一系統實體位址空間虛擬化成多個「邏輯」或「架構」實體位址空間(PAS),其中各此類PAS係具有獨立同調屬性的正交位址空間。系統實體位址藉由使用PAS標籤延伸其而映射至單一「邏輯」實體位址空間。
允許給定世界存取邏輯實體位址空間的子集。此係藉由可附接至記憶體管理單元16之輸出的硬體濾波器20執行。
世界使用用於位址轉譯之頁表的轉譯表描述符中的欄位定義存取的安全屬性(PAS標籤)。硬體濾波器20具有對為系統實體位址空間中的各頁定義指示與其關聯之PAS TAG及(可選地)其他顆粒保護屬性的顆粒保護資訊(GPI)的表(顆粒保護表56,或GPT)的存取。
硬體濾波器20對顆粒的GPI檢查世界ID及安全屬性並決定是否可授予存取,因此形成顆粒記憶體保護單元(GMPU)。
例如,GPT 56可駐存在晶片上SRAM中或晶片外DRAM中。若儲存在晶片外,GPT 56可藉由可使用加密、完整性、及新鮮機制以維護GPT 56之安全性的晶片上記憶體保護引擎而受完整性保護。
將GMPU 20定位在系統的請求器側上(例如,在MMU輸出上)而非在完整器側上允許以頁粒度分配存取權限,同時准許互連8繼續雜湊/條串化橫跨多個DRAM埠的頁。
交易在其等在系統網狀架構24、8各處傳播時保持以PAS TAG標籤化直到到達定義為實體混淆點60的位置為止。與完成器濾波相比,此允許將濾波器定位在請求器r上而無需減少安全保證。當交易在系統各處傳播時,可將PAS TAG可為用於位址隔離的深度安全機制:例如,快閃記憶體可將PAS TAG加至快取記憶體中的位址標籤,防止使用錯誤的PAS TAG對相同PA產生的存取在快取記憶體中命中,且因此改善旁通道抗性。PAS TAG亦可使用為用於保護引擎的上下文選擇器,該保護引擎附接至在將資料寫至外部DRAM之前加密其的記憶體控制器68。
實體混淆點(PoPA)係系統中之將PAS TAG剝除且將位址從邏輯實體位址改變回系統實體位址的位置。PoPA可在系統之(使用通過PAS TAG解析的加密上下文)產生對實體DRAM之存取的完成器側位於快取記憶體下方。替代地,其可位於快取記憶體上方而以降低安全性的成本簡化系統實施方案。
在任何時間點,世界可請求將頁從一個PAS轉變至另一者。產生對在EL3之檢測GPI之目前狀態的監測碼29的請求。EL3可僅允許特定組的轉變發生(例如,從非安全PAS至安全PAS,但不從領域PAS至安全PAS)。為提供清除轉變,可由系統支援新的指令-EL3可在將頁轉變至新的PAS之前提交的「對實體混淆點的資料清除及無效化」–此保證與先前PAS關聯的任何殘餘狀態從PoPA 60上游(比該PoPA更接近請求器側)的任何快取記憶體清除。
可藉由將GMPU 20附接至主側而實現的另一性質係有世界之間的記憶體的效率共用。將對實體顆粒的共用存取授予N個世界的子集而防止其他世界存取其可係所欲的。此可藉由加入「限制性共用」語意至顆粒保護資訊,同時迫使其使用特定的PAS TAG而實現。作為一實例,GPI在以安全PAS 84的PAS TAG標記的同時可指示實體顆粒可僅由「領域世界」88及「安全世界」84存取。
上述性質的實例係在特定實體顆粒的可見性性質上作出快速改變。考慮各世界經指派有僅可為該世界所存取之私密PAS的情形。對於特定顆粒,世界可藉由將其等的GPI從「獨佔」改變成「與非安全世界的限制性共用」且無需改變PAS關聯性而在任何時間點請求使其等可為非安全世界可見。如此,可增加該顆粒的可見性而不需要昂貴的快取維護或資料複製操作。
在圖3的實例中,亦繪示MECID消費器64。此與PAS TAG消除器60一起形成記憶體保護電路62。MECID消費器64消耗由記憶體轉譯器16提供的MECID,MECID的各者與不同的領域或執行環境關聯。MECID消費器64基於MECID提供用以加密通過加密點(PoE)的資料的金鑰輸入。此加密可與基於PAS執行的加密分開。各領域(其之各者可與不同的MECID關聯)以資料無法由其他領域存取的方式單獨地加密其自身資料因此係可行的。因此,即使在允許一個領域存取另一個領域之實體位址空間的RMM 46上有錯誤、錯誤組態、或攻擊,屬於其他領域的資料對該領域並無意義。
應注意,在此實例中,將PoE及MECID消費器64繪示成與PAS TAG消除器60組合。原理上,PoE可在MECID的供應者(例如,位址轉譯電路系統16)與PoPA 60之間的任何位置,且二個元件60、64可循序地執行而非一起執行。記憶體階層之出現在請求器裝置與PoE之間的元件將以未加密方式且使用對應MECID儲存資料。相比之下,記憶體階層的其他元件(過了PoE後)將以加密方式而不使用對應MECID儲存資料。
圖4繪示可如何使用顆粒保護表56將系統實體位址空間64分成經分配用於在特定架構實體位址空間61內存取的塊。顆粒保護表(GPT) 56定義允許系統實體位址空間65的哪些部分從各架構實體位址空間61存取。例如,GPT 56可包含各對應於特定尺寸之實體位址的一顆粒(例如,4K頁)的若干個項且可定義用於該顆粒的經指派PAS,該顆粒可從非安全、安全、領域、及根域中選擇。藉由設計,若將特定顆粒或顆粒組指派給與域的一者關聯的PAS,則其僅可在與該域關聯的PAS內存取且無法在其他域的PAS內存取。然而,應注意雖然分配給安全PAS(例如)的顆粒無法從根PAS內存取,然而根域82能夠藉由在其頁表中指定用於確保將與映射至實體經定址記憶體之該區域的頁關聯的虛擬位址轉譯至安全PAS中而非根PAS中的實體位址的PAS選擇資訊而存取實體位址的該顆粒。因此,橫跨域的資料共用(在由定義在早先描述之表中的可存取性/不可存取性規則所准許的情況下)可在選擇用於給定記憶體存取請求之PAS的點控制。
然而,在一些實施方案中,除了允許實體位址的顆粒在由GPT定義的經指派PAS內存取外,GPT可使用其他GPT屬性以將位址空間的某些區域標記成與另一位址空間(例如,與通常將不允許其選擇用於該域之存取請求的經指派PAS的較低特權或正交特權的域關聯的位址空間)共用。此可促進資料的暫時共用而不需要改變用於給定顆粒的經指派PAS。例如,在圖4中,領域PAS的區域70中在GPT中定義為指派給領域域,由於非安全域86無法選擇該領域PAS以用於其之存取請求,所以通常其將不可從非安全域86存取。由於非安全域26無法存取領域PAS,則通常非安全碼不可見到區域70中的資料。然而,若領域暫時希望在其之經指派記憶體區域中與非安全域共用其之資料的一些,則其可請求在根域82中操作的監測碼29更新GPT 56以指示區域70將與非安全域86共用,且此可使區域70亦可從如圖4左側所示的非安全PAS存取,而不需要改變哪個域係用於區域70的經指派域。若領域域已將其之位址空間的區域指定為與非安全域共用,則儘管從非安全域發布之標定該區域的記憶體存取請求最初可指定該非安全PAS,PAS濾波器20可重映射該請求的PAS識別符以替代地指定領域PAS,使得下游記憶體系統組件將該請求視為彷彿其始終從領域域發布。由於將不同域指派至特定記憶體區域的操作涉及若預期共用僅係暫時的,可係不必要之更大程度的快取記憶體/TLB無效化及/或記憶體中的資料歸零或資料在記憶體區域之間的複製而可係更效能密集的,此共用可改善效能。
將領域PAS的部分指派給系統內的各目前使用中領域。對領域PAS內的此等子區域90、92的存取可如先前討論地由RMM 46限制/控制。然而,除此之外,各子區域90、92的內容可取決於與領域PAS中的該等子區域關聯的領域而不同地加密。例如,第一子區域90與第一領域R0關聯且在該子區域內的資料因此以不同於與第二領域R1關聯之第二子區域92之內容的方式加密。除此之外,將各PAS加密。在圖4的實例中,各PAS使用不同金鑰加密,且子區域接著使用不同的個別金鑰進一步加密。在其他實施例中,領域域本身可不具有一個總金鑰,且可替代地將個別領域本身加密。在各領域/執行環境中具有其自身之其他執行環境(領域)不能存取之PAS的經加密區域。除此之外,由於加密,領域無法存取安全領域或根領域。
應注意在記憶體存取請求中,PAS係與實體位址一起提供。因此,記憶體將對相同實體位址的二個請求(具有不同的PAS)視為對不同實體位址的請求,即使實際上正在存取相同的實體位址。此「混淆」由於提供PAS的更安全分隔而係重要的。因此,基於特權資料是否存在於快取記憶體中而作出與特權資料有關的推斷的快取時序攻擊變得若不係不可能就係不可行。儲存在用於一個PAS的快取記憶體中的資料不可為另一PAS存取。
圖5總結位址轉譯電路系統16及PAS濾波器的操作。PAS濾波20可視為在由位址轉譯電路系統執行的階段1(及可選地階段2)位址轉譯之後執行的額外3階段檢查。亦應注意EL3轉譯係基於提供二個位元之以位址為基的選擇資訊(在圖5的實例中標記NS、NSE)的頁表項,而單一位元的選擇資訊「NS」係用以選擇在其他狀態中的PAS。指示在圖5中之作為顆粒保護檢查之輸入的安全狀態係指識別處理元件4之目前域的域ID。MECID在EL0及EL1的情形中係藉由階段2 MMU提供,然而MECID在軟體在EL2及EL3執行的情形中係藉由階段1 MMU提供。
實際上,轉譯表不需要直接儲存MECID,且實際上如此作將顯著增加頁表項的尺寸。替代地,如圖6所示,位址轉譯電路系統16中的頁表的各項98含有屬性100,該等屬性可指示存取權限、記憶體類型、存取、及髒狀態等。使用PAS指示器欄位102指示哪個PAS用於該項。在EL3階段1轉譯表的情形中,使用NS及NSE位元定義PAS(亦即,根域、安全域、領域域、或非安全域是否正被參考)。在EL2階段1表且在EL1及EL0階段2表,其係在該領域(且有時係安全)狀態中獨自使用的NS位元。此允許存取任一目標,亦即,NS=0係指領域(或安全)PAS且NS=1係指非安全PAS。額外地,提供AMEC旗標104。此指示哪個MECID儲存暫存器將用以提供MECID值。在此情形中,AMEC欄位係1位元(0或1),且因此指示是否應使用儲存在第一暫存器94中的值或是否應使用儲存在第二暫存器96中的值。隨著AMEC欄位之尺寸上的後續增加,當然可提供其他數目的暫存器。最後,頁表的各項98含有項98與其有關的(實體)頁數目106。MECID已建立後,將其提供為傳出記憶體請求的部分,其中其最終由MECID消費器64所消耗以執行加密/解密。
藉由將(多個)MECID自身儲存在暫存器94、96中,且藉由僅將指示器儲存在頁表的項98中,可能使頁保持更小。藉由提供一組暫存器94、96,同時使用多個MECID係可能的–例如,若特定領域具有其自身的MECID,但亦具有對與另一領域共用之實體空間之區域的存取,則該領域自身的MECID及用於共用空間的MECID二者可同時儲存。類似地,超管理器34可使用替代MECID暫存器96以載入領域的MECID以存取屬於該特定領域的實體位址空間。藉由提供多個MECID登錄器94、96,使MECID尺寸保持與頁表的格式無關亦係可能的。亦可能使用大型MECID(例如,跨越多個暫存器的值)。在一些實例中,多個暫存器可用以儲存不同的MECID以用於不同的虛擬至實體轉譯區。例如,對於顯示於圖5中的不同例外等級的各者,不同的MECID暫存器可用於該領域。
將理解RMM 46及/或超管理器34負責在上下文切換操作期間將正確的MECID值載入至暫存器94、96中。亦即,由新使用中領域使用的MECID將載入至該等暫存器94、96中。
圖7繪示在PoE 64的MECID消費器與在PoPA 60的PAS TAG消除器一起操作的實例。此處,傳入記憶體存取請求與MECID及PAS一起接收。傳入記憶體存取請求因此未命中或從記憶體階層的其他快取記憶體24拋棄。
在記憶體存取到達MECID消費器64的情況下,使用PAS查找對應的第一金鑰輸入,且使用MECID查找對應的第二金鑰輸入。在提供多個MECID表(例如,對各PAS)的情況下,亦使用PAS選擇使用哪個MECID表以獲得第二金鑰輸入。金鑰輸入可係執行第一階段及第二階段加密的金鑰。替代地,金鑰輸入可係數學地組合在一起(例如,將位元雜湊在一起或附加)以形成進一步金鑰的金鑰。在一些實例中,二個輸入的各者係金鑰的一部分(其中預設值用於或經提供用於領域世界以外的世界)。金鑰輸入亦可係或替代地係可微調位元。其他可能性或此等可能性的組合亦將為技術人員所理解。無論如何,將(多個)金鑰輸入傳遞至加密/解密單元108。此使用(多個)金鑰輸入及資料本身執行加密(應記憶體寫入請求)或解密(應記憶體讀取請求)。在記憶體寫入請求的情形中,接著將經加密資料寫在記憶體中,且在記憶體讀取請求的情形中,將經解密資料提供回請求器裝置4。
因此,MECID本身不係其實際上可能遠大於MECID的金鑰(或金鑰輸入)。此省去跨越系統網狀架構24、8傳輸更大金鑰的需要。然而,在PoE更加接近MECID之產生器(例如,位址轉譯電路系統16)的實例中,傳輸金鑰輸入本身可係更實際的。
當領域建立時,將新項加至MECID消費器64。類似地,當領域刪除或結束時,將MECID消費器64之儲存中的該等項刪除,且屬於該程序的資料不再可讀取。相比之下,對各PAS提供的金鑰輸入係靜態的且在設備起動時判定。
在PoE及POPA係分開的實例中,可執行第一階段加密(例如,對特定領域)及第二階段加密(對PAS)。
以上描述已聚焦在MECID的使用及相關於領域的加密/解密。然而,相同技術亦可在施用在其他世界或域內,諸如安全世界/域。
圖8繪示根據上述實例的一些的流程圖110,其中金鑰係使用二個輸入(與輸入直接使用在加密/解密階段中相反)獲得。在步驟112,接收記憶體存取請求。在步驟114,獲得用於特定域的第一金鑰輸入(例如,基於PAS)。此金鑰輸入在啟動時間係固定的。在步驟116,基於目前執行環境獲得第二金鑰輸入。就只要用於此金鑰輸入的(多個)關聯執行環境存在該金鑰輸入就存在的意義上而言,此金鑰輸入係動態的。在步驟118,使用金鑰輸入獲得金鑰。接著,在步驟120,判定記憶體存取請求是否係寫入請求。若係否,則在步驟122使用金鑰解密從記憶體獲得的資料。否則,在步驟124,資料使用金鑰加密並儲存至記憶體中。如上文解釋的,獲得金鑰的明確步驟118可省略且金鑰輸入直接使用在解密122及/或加密124步驟中。
圖9繪示可使用的模擬器實施方案。雖然稍早所述之實施例以用於操作支援所關注技術的特定處理硬體之設備及方法來實施本發明,但亦可能根據本文所述之實施例提供一指令執行環境,其係透過使用電腦程式實施。此類電腦程式常稱為模擬器,因為其等提供硬體架構之基於軟體的實施方案。模擬器電腦程式的種類包括仿真器、虛擬機、模型、及二進制轉譯器(包括動態二進制轉譯器)。一般而言,模擬器實施方案可在可選地運行主機作業系統420、支援模擬器程式410的主機處理器430上運行。在一些配置中,在硬體與所提供的指令執行環境及/或相同的主機處理器上提供的多個相異指令執行環境之間可有多層模擬。歷史上,已需要強大的處理器來提供模擬器實施方案,其以合理速度執行,但此種方法在某些情況下可係有正當理由的,諸如當因為相容性或再使用原因此需要執行另一處理器原生的程式碼時。例如,模擬器實施方案可提供具有不為主機處理器硬體所支援之額外功能性的指令執行環境,或提供一般與不同的硬體架構相關聯的指令執行環境。模擬的綜述係於「Some Efficient Architecture Simulation Techniques」中給出,Robert Bedichek, Winter 1990 USENIX Conference,頁數53至63。
在先前已參照特定硬體架構或特徵來描述實施例之情況下,在一模擬實施例中,可藉由合適的軟體架構或特徵提供等效功能。例如,可在模擬實施例中將特定電路系統實施為電腦程式邏輯。類似地,記憶體硬體(諸如暫存器或快取)可在模擬實施例中實施為軟體資料結構。在先前描述的實施例中提及的硬體元件的一或多者存在於主機硬體(例如,主機處理器430)上的配置中,一些模擬實施例可(在適當處)利用主機硬體。
模擬器程式410可儲存在電腦可讀儲存媒體(其可係非暫時性媒體)上,並提供程式介面(指令執行環境)給目標碼400(其可包括應用程式、作業系統、及超管理器),該程式介面與藉由模擬器程式410模型化之硬體架構的程式介面相同。因此,目標碼400的程式指令可在指令執行環境內使用模擬器程式410執行,使得實際上不具有上文討論之設備2之硬體特徵的主機電腦430可仿真此等特徵。例如,由於目標碼可藉由在不支援該架構的主機裝置上執行的模擬器內運行而測試,此對於允許在實際支援處理器架構之新版本的硬體裝置仍可用之前測試對該架構開發的目標碼400可係有用的。
模擬器碼包括處理程式邏輯412,該處理程式邏輯仿真處理電路系統10的行為,例如,包括解碼目標碼400之指令及將指令映射至由主機硬體430支援之原生指令集中的對應指令序列以執行等效於經解碼指令之功能的指令解碼程式邏輯。處理程式邏輯412亦模擬如上文描述之碼在不同例外等級及域中的處理。暫存器仿真邏輯413維護在主機處理器之主機位址空間中的資料結構,其仿真根據與目標碼400關聯的目標指令集架構定義的架構暫存器狀態。因此,取代如圖1之實例中之將此類架構狀態儲存在硬體暫存器12中,其替代地儲存在主機處理器430的記憶體中,其中暫存器仿真邏輯413將目標碼400之指令的暫存器參考映射至用於從主機記憶體獲得經模擬架構狀態資料的對應位址。此架構狀態可包括早先描述的目前域指示14及目前例外等級指示15,以及早先描述的MECID暫存器94及ALT MECID暫存器96。
模擬碼包括分別仿真MECID消費器64及位址轉譯電路系統16之功能性的記憶體保護程式邏輯416及位址轉譯程式邏輯414。因此,位址轉譯程式邏輯414將由目標碼400指定的虛擬位址轉譯成PAS的一者中的經模擬實體位址(其從目標碼的觀點係指記憶體中的實體位址),但實際上藉由位址空間映射程式邏輯415將此等經模擬實體位址映射至主機處理器的(虛擬)位址空間上。記憶體保護程式邏輯416「消耗」作為記憶體存取請求之部分提供的MECID,且提供用以加密/解密來自記憶體之資料的一或多個金鑰輸入。
圖10繪示加密點的位置及清除及無效化操作在系統內延伸的程度。如先前描述的,使用以MMU的一或多個階段50、52之形式的位址轉譯電路系統16將虛擬位址(VA)轉譯為實體位址(PA)及(在存取由執行環境產生的情況下)MECID。MECID係針對特定執行環境加密經過PoE之資料之加密環境識別符的實例。顆粒記憶體保護單元20係用以提供與待存取之實體位址空間關聯的PAS TAG(儘管此亦可直接從位址轉譯電路系統16提供)。使用PAS TAG PA及(在適當的情況下)MECID的組合以在與特定執行環境(使用MECID)關聯(若適用)的特定實體位置(藉由PA識別)存取保持在特定實體位址空間(藉由PAS TAG識別)中的資料。過了PoE後,任何MECID皆消耗殆盡並用以對超出PoE的儲存電路執行加密/解密。
如圖10所示,PoE可位於快取記憶體階層24內的任何位置。隨著其移動得更接近處理器,更多的快取記憶體儲存經加密資料。隨著PoE移動得更接近記憶體,較少的快取記憶體儲存經加密資料且替代地一起儲存未加密資料及MECID。例如,在圖10的實例中,快取記憶體階層24係由一級快取記憶體130、二級快取記憶體132、及三級快取記憶體134組成。若PoE位於一級快取記憶體130與二級快取記憶體132之間,則資料將未加密地儲存在一級快取記憶體130中且加密地儲存在二級快取記憶體132、三級快取記憶體134、及主記憶體中。相比之下,若PoE位於二級快取記憶體132與三級快取記憶體134之間,則資料將加密地儲存在三級快取記憶體134及主記憶體中,但將未加密地儲存在一級快取記憶體130及二級快取記憶體132中。
在PoE與PoPA不同的情況下,相關於MECID的加密藉由PoE發生,而進一步加密可在PoPA發生(對不同的PAS)。應注意,在一些實施例中,對PAS內之已在PoE加密之資料的加密未發生。
在快取記憶體的操作期間,可能需要執行維護操作。此包括清除及無效化操作(其係特定類型的無效化操作),該等操作可由於記憶體指派上的變化而執行(諸如從執行環境移除或指派給新執行環境)。此等快取維護操作的至少一些至多僅執行至PoE且不超出其。例如,當執行環境到期時,屬於該執行環境的資料必須繼續受保護。過了PoE後,資料經加密且因此受保護,用於加密的金鑰經刪除,該資料不再可存取。然而,在快取記憶體階層24中的PoE之前,資料係以未加密方式儲存且因此應從快取記憶體移除以防止具有相同MECID的不同執行環境存取該資料(MECID識別符空間可能係小的且因此重使用)。為實現此,快取維護操作至多執行至PoE,從而導致資料無效化(且因此使得不再可存取)。在一些實施例中,實際操作係清除及無效化操作,即使資料的清除(將其寫回至記憶體)對到期執行環境並無效果。
圖11顯示快取記憶體階層24、PoE 64、與PoPA 60之間的關係。如先前描述的,PoE 64可位於快取記憶體階層24內的任何位置。例如,PoE 64可在快取記憶體階層24中的所有快取記憶體之後,在主記憶體之前出現,或其可位於快取記憶體階層24之前。PoPA 60位於PoE 64上或其之後。例如,PoE 64及PoPA 60可位於快取記憶體階層24中某處的相同點。在一些實例中,PoE 64及PoPA 60可位於快取記憶體階層的交替端–亦即,PoE 64可出現在快取記憶體階層24之前且PoPA 60可出現在快取記憶體階層24的終端。因此,在記憶體階層內可能有三個不同的「區」:其中資料未加密且經混淆的第一組儲存電路(直至PoE 64)、其中資料經加密且經混淆的第二組儲存電路(介於PoE 64與PoPA 60之間)、其中資料經加密且未混淆的第三組儲存電路(PoPA 60之後)。
如先前解釋的,將相關於記憶體指派上的變化的快取維護操作發布至快取記憶體階層中之在PoE 64之前但未過了PoE 64的該等快取記憶體。其他快取維護操作(諸如資料或記憶體頁從一個域至另一域的移動)可通過PoE 64且至多至PoPA 60,且仍有其他快取維護操作可能滲透整個記憶體階層。
圖12顯示從特定快取記憶體的觀點更詳細地繪示快取維護之行為的流程圖140。在步驟142,快取維護操作(cache maintenance operation, CMO)由快取記憶體接收。快取維護操作含有目標的指示及PoE 64的位置。目標可係,例如,與記憶體之經轉移特定區域關聯的實體位址(例如,屬於已知已到期的執行環境),或取決於快取記憶體的架構可標定MECID本身。在步驟144,快取記憶體判定其在階層中是否在PoE 64之前。若係否,則沒有進一步待完成的事且程序結束(或返回至開始)。否則,在步驟146,將目標清除及無效化。接著在步驟148,將新的CMO發布至次一快取記憶體級的(多個)快取記憶體。新的CMO含有相同目標及PoE 64的相同指示。以此方式,僅將由CMO標定的快取線無效化。然而,此僅至多發生至PoE 64。過了該點,此種類的CMO受忽略且不轉發。屬於目標快取線的資料在過了PoE 64後加密,所以該等快取線的無效化不係絕對必要的。
其他快取維護操作亦可施用且以慣用方式處置。亦即,其等可能在過了PoE 64後仍傳播(若合適)。
因此,不同的快取維護指令可對執行環境之間的記憶體的各移動,及對域之間的記憶體的移動發布。可提供用於其他快取維護操作的又進一步的指令。
圖13A繪示快取維護操作的目標。在此實例中,維護操作係由將記憶體指派給執行環境所導致。此可,例如,導因於特定執行環境的到期及/或建立而發生。領域管理模組(RMM)導致快取維護操作對位址0x2132及0xC121執行。然而,超管理器32或作業系統可類似地負責此類操作的執行。無論如何,將快取維護操作發送至一級快取記憶體130。此等操作導致快取記憶體中的對應項無效化。接著將快取維護操作發送通過記憶體階層,至多至但不超出PoE 64。在此情形中,此包括一級快取記憶體130及二級快取記憶體132。然而,三級快取記憶體134不受影響,也就是說快取維護操作未經轉發。在各情形中,將以位址0xC121或0x2132標記的項(導因於有關快取記憶體在PoE 64之前,其未加密)無效化(或清除及無效化)。無效化由於該等項經加密且不可存取而不在過了PoE 64後發生(由於此等CMO)。
圖13B繪示快取維護操作的目標。在此實例中,維護操作係由執行環境的到期(0xF1)所導致。例如,執行環境的到期係由領域管理模組(RMM) 46管理,雖然相似的快取維護操作可替代地由超管理器34發布。無論如何,發布指令以表示應將與此執行環境關聯的記憶體無效化。查找用於對應執行環境的MECID。再次,此可由RMM或超管理器34執行,但亦可由另一組件判定。接著參考與已到期之執行環境關聯的特定MECID(在此情形中,0xF14E)發送出無效化指令。如先前解釋的,將此無效化指令發送通過記憶體階層,至多至但不超出PoE 64。在此情形中,此包括一級快取記憶體130及二級快取記憶體132。在各情形中,將以MECID 0xF14E標記的項(導因於有關快取記憶體在PoE之前,其未加密)無效化(或清除及無效化)。
應注意在執行環境與MECID之間執行的查找允許不與任何單一執行環境關聯的MECID,從而允許資料共用。在此等情況下,屬於此一MECID的項可在關聯執行環境的特定一者(若,例如,執行環境的一者充當MECID的「主環境」)終止時無效化,或可在所有關聯的執行環境終止時無效化。用於將執行環境識別符及MECID分開的進一步原因係限制MECID的重使用,且允許比目前使用中的MECID更多的MECID同時存在。例如,可使執行環境休眠(非使用中),但其等的資料可保持在系統內。在此實例中,例如,可僅有可同時運行的256個執行環境(由於執行環境識別符係8位元)。然而,MECID識別符更大(16位元),且因此,可將執行環境換入及換出。
由於上文,快取記憶體階層較不受快取維護操作影響。此係由於某些快取維護操作(例如,將到期執行環境無效化的該等者)在過了PoE後不需要發生。因此可降低無效化請求的系統影響。由於過了PoE後,資料經加密且因此,即使另一執行環境存取該等記憶體項目,該等記憶體項目將不會係可理解的,此不會損害安全性。無效化該等資料項的快取維護操作因此不用於有用目的。
圖14繪示根據一些實例的資料處理方法140。在步驟142,處理係在複數個(例如,二或更多個,諸如三或更多個)域的一者中執行。該等域的一者再分成若干個執行環境(例如,領域)。處理存取記憶體階層內的記憶體。在步驟144,將加密點定義在記憶體階層內。此將記憶體階層劃分成經加密分量(其中該資料以加密形式儲存)及未加密分量(其中其並非如此)。接著,在步驟146,將發布的至少一些維護操作(諸如,與到期執行環境關聯的該等維護操作)被抑制在PoE 64發布或超出其發布。此等快取維護操作未發布至資料以加密形式儲存的儲存電路。
圖15繪示可使用的模擬器實施方案。雖然稍早所述之實施例以用於操作支援所關注技術的特定處理硬體之設備及方法來實施本發明,但亦可能根據本文所述之實施例提供一指令執行環境,其係透過使用電腦程式實施。此類電腦程式常稱為模擬器,因為其等提供硬體架構之基於軟體的實施方案。模擬器電腦程式的種類包括仿真器、虛擬機、模型、及二進制轉譯器(包括動態二進制轉譯器)。一般而言,模擬器實施方案可在可選地運行主機作業系統420、支援模擬器程式410的主機處理器430上運行。在一些配置中,在硬體與所提供的指令執行環境及/或相同的主機處理器上提供的多個相異指令執行環境之間可有多層模擬。歷史上,已需要強大的處理器來提供模擬器實施方案,其以合理速度執行,但此種方法在某些情況下可係有正當理由的,諸如當因為相容性或再使用原因此需要執行另一處理器原生的程式碼時。例如,模擬器實施方案可提供具有不為主機處理器硬體所支援之額外功能性的指令執行環境,或提供一般與不同的硬體架構相關聯的指令執行環境。模擬的綜述係於「Some Efficient Architecture Simulation Techniques」中給出,Robert Bedichek, Winter 1990 USENIX Conference,頁數53至63。
在先前已參照特定硬體架構或特徵來描述實施例之情況下,在一模擬實施例中,可藉由合適的軟體架構或特徵提供等效功能。例如,可在模擬實施例中將特定電路系統實施為電腦程式邏輯。類似地,記憶體硬體(諸如暫存器或快取)可在模擬實施例中實施為軟體資料結構。在先前描述的實施例中提及的硬體元件的一或多者存在於主機硬體(例如,主機處理器430)上的配置中,一些模擬實施例可(在適當處)利用主機硬體。
模擬器程式410可儲存在電腦可讀儲存媒體(其可係非暫時性媒體)上,並提供程式介面(指令執行環境)給目標碼400(其可包括應用程式、作業系統、及超管理器),該程式介面與藉由模擬器程式410模型化之硬體架構的程式介面相同。因此,目標碼400的程式指令可在指令執行環境內使用模擬器程式410執行,使得實際上不具有上文討論之設備2之硬體特徵的主機電腦430可仿真此等特徵。例如,由於目標碼可藉由在不支援該架構的主機裝置上執行的模擬器內運行而測試,此對於允許在實際支援處理器架構之新版本的硬體裝置仍可用之前測試對該架構開發的目標碼400可係有用的。
模擬器碼包括處理程式邏輯412,該處理程式邏輯仿真處理電路系統10的行為,例如,包括解碼目標碼400之指令及將指令映射至由主機硬體430支援之原生指令集中的對應指令序列以執行等效於經解碼指令之功能的指令解碼程式邏輯。處理程式邏輯412亦模擬如上文描述之碼在不同例外等級及域中的處理。暫存器仿真邏輯413維護在主機處理器之主機位址空間中的資料結構,其仿真根據與目標碼400關聯的目標指令集架構定義的架構暫存器狀態。因此,取代如圖1之實例中之將此類架構狀態儲存在硬體暫存器12中,其替代地儲存在主機處理器430的記憶體中,其中暫存器仿真邏輯413將目標碼400之指令的暫存器參考映射至用於從主機記憶體獲得經模擬架構狀態資料的對應位址。此架構狀態可包括早先描述的目前域指示14及目前例外等級指示15,以及早先描述的MECID暫存器94及ALT MECID暫存器96。類似地,儲存電路仿真程式邏輯148維持在主機處理器之主機位址空間中的資料結構,該資料結構仿真記憶體階層。因此,取代(例如)如圖10之實例中之資料儲存在一級快取記憶體130、二級快取記憶體132、三級快取記憶體134、及記憶體150中,其替代地儲存在主機處理器430的記憶體中,其中儲存電路仿真程式邏輯148將目標碼400之指令的記憶體位址映射至用於從主記憶體獲得經模擬記憶體位址的對應位址。
模擬碼包括分別仿真MECID消費器64及位址轉譯電路系統16之功能性的記憶體保護程式邏輯416及位址轉譯程式邏輯414。因此,位址轉譯程式邏輯414將由目標碼400指定的虛擬位址轉譯成PAS的一者中的經模擬實體位址(其從目標碼的觀點係指記憶體中的實體位址),但實際上藉由位址空間映射程式邏輯415將此等經模擬實體位址映射至藉由儲存電路仿真程式邏輯148仿真的虛擬儲存結構130、132、134、150上。如先前描述的,記憶體保護程式邏輯416「消耗」作為記憶體存取請求之部分提供的MECID,且提供用以加密/解密來自記憶體之資料的一或多個金鑰輸入。儲存電路仿真邏輯148亦可仿真如先前描述的快取維護操作、加密點64、及實體混淆點60的功能。
圖16繪示根據一些實例的實例系統。在此等實例中,對虛擬位址的記憶體存取請求係由在處理電路系統10上的經再分世界/域(亦即領域域)中運行的執行環境(領域)發布。記憶體存取請求由記憶體轉譯電路系統(例如,位址轉譯電路系統)16接收。此處,將虛擬位址(VA)轉譯成實體位址(PA)。額外地,如先前描述地判定PAS及判定MECID。接著將記憶體存取請求發送至記憶體階層以定位所請求的資料。在此實例中,其由儲存電路系統以一級快取記憶體130之形式接收。在此實例中,因為一級快取記憶體出現在PoE 64之前,一級快取記憶體130的內容係未加密的。各未加密快取線項因此儲存與快取線的位址、PAS、及MECID關聯的資料。
若當實體記憶體位址(PA)與儲存在快取記憶體中的快取線的一者對應時,「命中」在快取記憶體上發生。在此情況下,傳回所請求的資料,且記憶體存取請求因此不需要前進至主記憶體150。相比之下,在沒有快取線與所請求的實體記憶體位址對應(沒有快取線儲存所請求的資料)時,「未命中」發生。在此情況下,記憶體存取請求朝向主記憶體150進一步在記憶體階層向上轉發。當所請求的資料經定位(其可在主記憶體中)時,資料可儲存在較低級快取記憶體130中,使得其在未來可更快速地存取。
如先前提及的,快取記憶體130中的各快取線儲存與快取線的實體位址、該快取線的資料、資料與其關聯之實體位址空間(PAS)的身分、及MECID關聯的資料,該MECID係加密環境識別符的實例,且可與執行環境的子集(常係一個特定執行環境)關聯。此係「擁有」該資料的執行環境(或多個環境)。回應於命中,判定電路系統180判定儲存電路系統130的命中項的MECID與提供在記憶體存取請求中的MECID之間是否有匹配。
圖17繪示MECID失配的實例。此可由於若干種原因而發生。例如,記憶體轉譯電路系統16中的表可含有相同PA的多個項(各屬於不同的MECID)。在MECID重指派時執行快取維護操作亦可能不充分。MECID寬度對系統可能太大,導致實際使用之MECID的組分重複。在一些情況下,在更新MECID暫存器時,失配可能導因於不充分的轉譯後備緩衝器(TLB)維護及障壁而發生。
無論如何,此實例說明從記憶體轉譯電路系統發布的記憶體讀取請求。請求係關於實體位址0xB1432602。此係由快取線位址0xB14326及02之至快取線中的偏移組成,該偏移係快取線之記憶體讀取請求正尋求讀取的特定部分。請求亦係指向01的PAS(其在此實例中係指領域PAS)及0xF143的MECID,該MECID係與記憶體讀取請求對其發布之執行環境或領域關聯的MECID。此由儲存電路系統130接收,該儲存電路系統判定命中是否存在於所存取的記憶體位址上。在此情形中,由於儲存電路系統130含有具有快取線位址0xB14326的項,命中存在。PAS (01)亦匹配。然而,在此情形中,儘管存在命中,判定電路系統能夠(藉由比較)判定MECID失配。具體而言,隨請求發送的MECID係0xF143,然而為快取線儲存的MECID係0xF273。因此,請求係由不應具有對該線之存取的執行環境發布。因此可引起錯誤動作。
由於MECID可與數個執行環境關聯(在資料將在該等執行環境之間共用的情況下),請記得MECID不必然識別一特定執行環境。
有若干個可採取的錯誤動作以及若干個可採用以防止失配發生的組態。
圖18繪示回應於失配而導致有關快取線受破壞的破壞操作模式。此處,發布標定快取線之特定部分的記憶體寫入請求。然而,與MECID的失配發生。在此實例中,快取線的經標定部分為寫入請求所覆寫/修改。現在預期此等部分係正確的且因此未受破壞。然而,快取線的其他部分經記錄為受破壞。若快取線的該等受破壞部分在未來由處理電路系統讀取(例如,由於稍後對快取線之該等部分的記憶體讀取請求),則將破壞通知提供回處理電路系統。此繼而導致同步錯誤由處理電路系統引起。
藉由不立即建立錯誤,可完全避免任何此類錯誤係可能的。例如,若未來不對快取線的其他部分發布記憶體讀取請求,則絕不會將破壞通知遞送回處理器且絕不會引起錯誤。因此,雖然失配不應該發生,其不具有效果。
在其他實施例中,快取線的整體可由於寫入至快取線的任何部分而受破壞,因為可以說經覆寫資料已導致原始資料損壞。在其他實例中,記憶體讀取請求將導致部分或所有的快取線受破壞且立即傳回至處理電路系統,該處理電路系統將(幾乎立即)導致同步錯誤的引起。在一些實例中,從快取記憶體傳回之作為讀取請求之部分的所有或部分的資料係受破壞的,但快取線本身保持未修改。
亦在此實例中,除了破壞失配快取線,將該快取線的MECID更新成提供在記憶體存取請求中的MECID。
圖19顯示混淆操作模式顯示於其中的實例實施方案。此處,基於PA、PAS、及MECID判定記憶體讀取請求命中或未命中。亦即,使用所有三個組分形成「有效位址」。在此實例中,第一讀取請求係關於位址0xB1432620,且使用0x2170的MECID。明顯地,由於PA匹配,位址應在快取記憶體130中的項182上命中。然而,因為將MECID、PAS、及PA視為係總有效「位址」且因為所有三者不匹配(與請求之係0x2170的MECID相比,項182的MECID係0xF273),未命中存在。此可由判定電路系統180判定,其尋求在PA、PAS、及MECID之各者上的匹配。
相比之下,由於PA、PAS、及MECID二者匹配),具有0xF273的不同MECID之對完全相同的PA及PAS產生的第二記憶體讀取請求將命中。
若PA、PAS、及MECID在快取線及記憶體存取請求中皆相同,由於對實體位址的記憶體存取請求可僅命中該快取線,此因此防止失配發生。
有若干個可回應於未命中而採取的動作。在一些實例中,僅在MECID上的失配可用以抑制請求的任何進一步進行。在其他實例中,未命中將在記憶體階層向上轉發。當請求到達PoE時,將使用不正確的MECID選擇金鑰輸入,其因此可能導致所請求之資料的不正確解密(在讀取請求的情形中)或所提供之資料的不正確編碼(在寫入請求的情形中)。然而,在二種情形中,維持資料之秘密的目標獲得維護。
圖20繪示清除操作模式的實例。此處,當偵測到失配時,將快取記憶體130中的失配快取線清除(進一步在記憶體階層向上寫回,諸如,寫回至過了加密點,諸如,寫回至記憶體)。接著使失配線無效化且接著從記憶體提取所請求的線。
因此,在此實例中,在具有MECID 0xF273之位址0xB1432620讀取的記憶體存取在具有MECID 0x2170的快取線位址0xb14326上失配。因此將快取線寫回至記憶體(清除)且無效化(「V」旗標從0改變至1)。接著,從具有MECID 0x2170之記憶體提取請求之標的(位址0xB1432620)。實際上,若MECID在記憶體階層中不係正確的,此記憶體存取請求可能仍失敗。具體而言,過了加密點後,若MECID不正確,則將選擇錯誤的金鑰輸入以用於解密且將由記憶體存取請求傳回垃圾。無論如何,接著使用新存取請求的MECID將經提取資料儲存在快取記憶體130中。
圖21繪示抹除操作模式的實例。在此操作模式中,當偵測到失配時,將快取記憶體130中的失配線的資料歸零、拌碼、或隨機化,使得其不再係可理解的。因此使該線不可用。應注意此與無效化快取線的操作(例如,藉由將有效性旗標「V」設定成0)不同。
在此實例中,因此,失配係由對位址0x94130001的記憶體請求所導致,該記憶體請求在位址0x941300的快取線上命中。然而,失配由於請求具有0x2142的MECID而快取線具有0x7D04的MECID而發生。具有0x941300之位址的快取線(在此情形中)因此藉由將資料的所有位元設定成0而歸零。接著可傳回快取線。因此,使未加密資料變得不可存取。應注意,在此實例中,未使快取線無效(雖然此一操作模式可額外地將該快取線設定成無效)。
圖22以流程圖190的形式繪示總程序的實例。在步驟192,記憶體存取請求由儲存電路系統130接收。在步驟194,判定命中是否存在。若係否,則在步驟196,將請求將進一步轉發至記憶體階層中,例如,朝向主記憶體150。程序接著返回至步驟192。否則,在步驟198,判定(例如,藉由判定電路系統180)在記憶體存取請求的MECID與儲存電路系統130中的命中項之間是否發生失配。若係否,則在步驟200,記憶體存取請求完成(例如,藉由讀取或寫入儲存電路系統130中的相關項),且請求接著繼續進行至步驟192。否則,在步驟202,判定系統以何模式操作。若系統在步驟202係在破壞操作模式中,如先前描述的,破壞儲存電路系統130中的項。程序接著繼續進行至步驟210。若系統係在清除操作模式中,則在步驟204,將儲存電路系統130中的項清除及無效化,且程序接著繼續進行至步驟210。若系統係在抹除操作模式中,則在步驟206,將儲存電路系統130中的項歸零或拌碼。程序接著繼續進行至步驟210。此等係在其中失配導致錯誤引起之錯誤操作模式的所有實例。相比之下,混淆操作模式(圖19所示)由於其主動地在最初防止失配發生而不係錯誤模式。錯誤模式及混淆模式共同形成啟用操作模式。判定電路系統180的其他操作模式係,在步驟208,簡單地忽略失配並完成請求的停用操作模式。程序接著繼續進行至步驟210。
在一些啟用操作模式之後,程序繼續進行至判定同步模式是否亦啓用的步驟210。若如此,則在步驟212,亦產生非同步例外(例如,藉由相關於失配寫入與處理電路系統10關聯的暫存器12)。在任一情形中,程序接著返回至步驟192。
在錯誤操作模式的各者中,亦可將失配項的MECID更新成傳入記憶體存取請求的MECID。
設備可能能夠在運行時間在啟用操作模式的各者或子集與停用操作之間切換。啟用操作模式的各者係相依的且系統可包含此等模式的任何組合。停用模式亦可存在,或可不存在。
圖23以流程圖214的形式繪示啟用模式與推測執行之間的相互作用。在推測執行中,指令在已知道該等指令是否應執行之前(例如,擱置分支指令的結果)執行。推測讀取可使用錯誤的MECID發生(如先前解釋的),且因此使啟用模式的一者使用中以用於推測執行的發生可係所欲的。在步驟216,判定判定電路系統180是否在啟用操作模式中。若如此,則在步驟218,啟用准許推測讀取及寫入發生的推測操作模式。若係否,則將推測操作模式停用。此防止推測讀取操作發生(且在一些實施例中,亦可防止推測寫入操作)。無論如何,程序接著返回至步驟216。
作為此程序的替代方案,每當判定電路系統180的操作模式改變時可啟用/停用推測操作模式,而非繼續「輪詢」判定電路系統180的目前操作模式。
圖24繪示可使用的模擬器實施方案。雖然稍早所述之實施例以用於操作支援所關注技術的特定處理硬體之設備及方法來實施本發明,但亦可能根據本文所述之實施例提供一指令執行環境,其係透過使用電腦程式實施。此類電腦程式常稱為模擬器,因為其等提供硬體架構之基於軟體的實施方案。模擬器電腦程式的種類包括仿真器、虛擬機、模型、及二進制轉譯器(包括動態二進制轉譯器)。一般而言,模擬器實施方案可在可選地運行主機作業系統420、支援模擬器程式410的主機處理器430上運行。在一些配置中,在硬體與所提供的指令執行環境及/或相同的主機處理器上提供的多個相異指令執行環境之間可有多層模擬。歷史上,已需要強大的處理器來提供模擬器實施方案,其以合理速度執行,但此種方法在某些情況下可係有正當理由的,諸如當因為相容性或再使用原因此需要執行另一處理器原生的程式碼時。例如,模擬器實施方案可提供具有不為主機處理器硬體所支援之額外功能性的指令執行環境,或提供一般與不同的硬體架構相關聯的指令執行環境。模擬的綜述係於「Some Efficient Architecture Simulation Techniques」中給出,Robert Bedichek, Winter 1990 USENIX Conference,頁數53至63。
在先前已參照特定硬體架構或特徵來描述實施例之情況下,在一模擬實施例中,可藉由合適的軟體架構或特徵提供等效功能。例如,可在模擬實施例中將特定電路系統實施為電腦程式邏輯。類似地,記憶體硬體(諸如暫存器或快取)可在模擬實施例中實施為軟體資料結構。在先前描述的實施例中提及的硬體元件的一或多者存在於主機硬體(例如,主機處理器430)上的配置中,一些模擬實施例可(在適當處)利用主機硬體。
模擬器程式410可儲存在電腦可讀儲存媒體(其可係非暫時性媒體)上,並提供程式介面(指令執行環境)給目標碼400(其可包括應用程式、作業系統、及超管理器),該程式介面與藉由模擬器程式410模型化之硬體架構的程式介面相同。因此,目標碼400的程式指令可在指令執行環境內使用模擬器程式410執行,使得實際上不具有上文討論之設備2之硬體特徵的主機電腦430可仿真此等特徵。例如,由於目標碼可藉由在不支援該架構的主機裝置上執行的模擬器內運行而測試,此對於允許在實際支援處理器架構之新版本的硬體裝置仍可用之前測試對該架構開發的目標碼400可係有用的。
模擬器碼包括處理程式邏輯412,該處理程式邏輯仿真處理電路系統10的行為,例如,包括解碼目標碼400之指令及將指令映射至由主機硬體430支援之原生指令集中的對應指令序列以執行等效於經解碼指令之功能的指令解碼程式邏輯。處理程式邏輯412亦模擬如上文描述之碼在不同例外等級及域中的處理。暫存器仿真邏輯413維護在主機處理器之主機位址空間中的資料結構,其仿真根據與目標碼400關聯的目標指令集架構定義的架構暫存器狀態。因此,取代如圖1之實例中之將此類架構狀態儲存在硬體暫存器12中,其替代地儲存在主機處理器430的記憶體中,其中暫存器仿真邏輯413將目標碼400之指令的暫存器參考映射至用於從主機記憶體獲得經模擬架構狀態資料的對應位址。此架構狀態可包括早先描述的目前域指示14及目前例外等級指示15,以及早先描述的MECID暫存器94。類似地,儲存電路仿真程式邏輯148維持在主機處理器之主機位址空間中的資料結構,該資料結構仿真記憶體階層。因此,取代(例如)如圖10之實例中之資料儲存在一級快取記憶體130、二級快取記憶體132、三級快取記憶體134、及記憶體150中,其替代地儲存在主機處理器430的記憶體中,其中儲存電路仿真程式邏輯148將目標碼400之指令的記憶體位址映射至用於從主記憶體獲得經模擬記憶體位址的對應位址。
模擬碼包括分別仿真位址轉譯電路系統或記憶體轉譯電路系統16之功能性的位址轉譯程式邏輯414。因此,位址轉譯程式邏輯414將由目標碼400指定的虛擬位址轉譯成PAS的一者中的經模擬實體位址(其從目標碼的觀點係指記憶體中的實體位址),但實際上藉由位址空間映射程式邏輯415將此等經模擬實體位址映射至藉由儲存電路仿真程式邏輯148仿真的虛擬儲存結構130、132、134、150上。判定程式邏輯151能夠判定作為對記憶體位址的經模擬記憶體存取請求的部分供應的MECID是否與經模擬記憶體階層148中之用於該記憶體位址的項關聯的MECID匹配,且因此執行先前描述的判定電路系統180的功能性。儲存電路仿真邏輯148可仿真如先前描述的加密點64及實體混淆點60。判定程式邏輯151可如先前討論地判定是否在加密環境識別符之間偵測到不同。
在本申請案中,用語「經組態以...(configured to...)」係用以意指一設備的一元件具有能夠實行該經定義作業的一組態。在此上下文中,「組態(configuration)」意指硬體或軟體之互連的配置或方式。例如,該設備可具有專用硬體,其提供經定義的作業,或者一處理器或其他處理裝置可經程式化以執行該功能。「經組態以(configured to)」並不意味著設備元件需要以任何方式改變以提供所定義的作業。
雖然本文中已參照附圖詳細描述本發明的說明性實施例,但應瞭解本發明不限於該等精確實施例,且所屬技術領域中具有通常知識者可於其中實行各種變化、添加、及修改而不脫離如隨附申請專利範圍所定義的本發明的範圍及精神。例如,可用獨立項的特徵在不脫離本發明之範疇的情況下作出與附屬項之特徵的各種組合。
2:資料處理系統;處理系統;設備 4:請求器裝置;處理元件 6:完成器裝置 8:互連;系統網狀架構 10:處理電路系統 12:暫存器;硬體暫存器 14:目前域指示;目前域指示器;安全分區管理器;目前域 15:目前例外等級指示;目前例外等級 16:位址轉譯電路系統;記憶體轉譯器;記憶體管理單元;記憶體轉譯電路系統 18:轉譯後備緩衝器;TLB 20:PAS濾波器;GMPU;PAS濾波;硬體濾波器;顆粒記憶體保護單元 22:顆粒保護資訊快取記憶體 24:快取記憶體;安全域;系統網狀架構;快取記憶體階層 29:監測碼;監測軟體 30:應用程式碼;應用程式 32:作業系統(OS)碼;客作業系統;富作業系統;作業系統 34:超管理器碼;超管理器 36:受信任應用程式 38:受信任作業系統 40:安全分區管理器;SPM 42:領域;應用程式級領域;碼 44:領域;經封裝應用程式/作業系統領域;碼 46:領域管理模組;RMM 50:階段1記憶體管理單元;階段1 MMU;階段 52:階段2記憶體管理單元;階段2 MMU;階段 54:安全屬性 56:顆粒保護表;GPT 60:實體混淆點;PoPA;PAS TAG消除器;元件 61:架構實體位址空間 62:記憶體保護電路 64:MECID消費器;元件;系統實體位址空間;PoE;加密點 68:記憶體控制器 70:區域 80:例外等級 82:根域;域 84:安全(S)域;域;安全域;安全PAS;安全世界 86:較不安全域;域;非安全域 88:領域域;域;領域世界 90:子區域;第一子區域 92:子區域;第二子區域 94:第一暫存器;暫存器 96:MECID暫存器;第二暫存器;暫存器;ALT MECID暫存器 98:項 100:屬性 102:PAS指示器欄位 104:AMEC旗標 106:頁數目 108:加密/解密單元 110:流程圖 112:步驟 114:步驟 116:步驟 118:步驟 120:步驟 122:步驟;解密 124:步驟;加密 130:一級快取記憶體;快取記憶體;虛擬儲存結構;儲存電路系統 132:二級快取記憶體;虛擬儲存結構 134:三級快取記憶體;虛擬儲存結構 140:流程圖;資料處理方法 142:步驟 144:步驟 146:步驟 148:步驟;儲存電路仿真程式邏輯;儲存電路仿真邏輯;經模擬記憶體階層 150:記憶體;虛擬儲存結構;主記憶體 151:判定程式邏輯 180:判定電路系統 182:項 190:流程圖 192:步驟 194:步驟 196:步驟 198:步驟 200:步驟 202:步驟 204:步驟 206:步驟 208:步驟 210:步驟 212:步驟 214:流程圖 216:步驟 218:步驟 400:目標碼 410:模擬器程式 412:處理程式邏輯 413:暫存器仿真邏輯 414:位址轉譯程式邏輯 415:位址空間映射程式邏輯 416:記憶體保護程式邏輯 420:主機作業系統 430:主機處理器;主機硬體;主機電腦 BL1:啟動碼區段;啟動碼 BL2:啟動碼區段;啟動碼 EL0:例外等級 EL1:例外等級 EL2:例外等級 EL3:例外等級 NS:選擇資訊 NSE:選擇資訊 R0:第一領域 R1:第二領域
本技術將僅藉由實例、參照如附圖中所繪示之其實施例來進一步說明,其中: [圖1]繪示根據一些實施例的實例; [圖2]顯示管理域切換之單獨根域的實例; [圖3]示意地繪示處理系統的另一實例; [圖4]繪示系統實體位址空間可如何使用顆粒保護表(granule protection table)分割; [圖5]總結位址轉譯電路系統及PAS濾波器的操作; [圖6]顯示實例頁表項; [圖7]繪示MECID消費器與PAS TAG消除器一起操作以充當記憶體保護電路系統的實例; [圖8]繪示根據上述實例的一些的流程圖; [圖9]繪示可使用的模擬器實施方案; [圖10]繪示加密點的位置及清除及無效化操作在系統內延伸的程度; [圖11]顯示快取記憶體階層、PoE、與PoPA之間的關係; [圖12]顯示更詳細地繪示快取維護之行為的流程圖; [圖13A]繪示快取維護操作之目標的一個實例; [圖13B]繪示快取維護操作之目標的另一實例; [圖14]繪示根據一些實例之資料處理的方法; [圖15]繪示可使用的模擬器實施方案; [圖16]繪示根據一些實例的實例系統; [圖17]繪示MECID失配的實例; [圖18]繪示回應於失配而導致有關快取線受破壞的破壞(poison)操作模式; [圖19]顯示混淆操作模式顯示於其中的實例實施方案; [圖20]繪示清除操作模式的實例; [圖21]繪示抹除操作模式的實例; [圖22]以流程圖的形式繪示失配如何以不同的操作模式處置的實例; [圖23]以流程圖的形式繪示啟用模式與推測執行之間的相互作用;及 [圖24]繪示可使用的模擬器實施方案。
16:位址轉譯電路系統;記憶體轉譯器;記憶體管理單元;記憶體轉譯電路系統
20:PAS濾波器;GMPU;PAS濾波;硬體濾波器;顆粒記憶體保護單元
50:階段1記憶體管理單元;階段1 MMU;階段
52:階段2記憶體管理單元;階段2 MMU;階段
64:MECID消費器;元件;系統實體位址空間;PoE;加密點
68:記憶體控制器
130:一級快取記憶體;快取記憶體;虛擬儲存結構;儲存電路系統
132:二級快取記憶體;虛擬儲存結構
134:三級快取記憶體;虛擬儲存結構

Claims (16)

  1. 一種設備,其包含: 處理電路系統,其經組態以在一固定數目之至少二個域的一者中執行處理,其中該等域的一者再分成一可變數目的執行環境,該等執行環境的一者係經組態以管理該等執行環境的一管理執行環境;及 記憶體保護電路系統,其將一加密點定義在一記憶體階層的至少一個未加密儲存電路之後及在該記憶體階層的至少一個經加密儲存電路之前,其中 該至少一個經加密儲存電路系統經組態以使用一金鑰輸入以對從該等域的一目前一者內發布的一記憶體存取請求的該資料執行加密或解密,其中 該金鑰輸入對該等域之各者且對該等執行環境之各者不同;且 該管理執行環境經組態以抑制對該記憶體階層的該至少一個經加密儲存電路發布一維護操作。
  2. 如請求項1之設備,其中 該管理執行環境經組態以回應於對該等執行環境的一者作出之在一記憶體指派上的一變化,以將該維護操作發布至該記憶體階層的該至少一個未加密儲存電路。
  3. 如請求項2之設備,其中 該維護操作係一無效化操作。
  4. 如請求項2至3中任一項之設備,其中 該維護操作係清除及無效化操作。
  5. 如請求項3至4中任一項之設備,其中 該維護操作經組態以將在與該等執行環境的該一者關聯的該至少一個未加密儲存電路中的項無效化。
  6. 如請求項2至5中任一項之設備,其中 指派上的該變化係記憶體至該等執行環境之該一者的一指派。
  7. 如請求項6之設備,其中 該維護操作經組態以將在與該等執行環境之到期者關聯的該至少一個經加密儲存電路中的項無效化。
  8. 如前述請求項中任一項之設備,其中 該等執行環境的各者與用以產生該金鑰輸入的一加密環境識別符關聯;且 該維護操作經組態以將該記憶體階層中之與該加密環境識別符關聯的項無效化。
  9. 如前述請求項中任一項之設備,其中 該記憶體存取請求對其發布的一記憶體位址係在複數個實體位址空間的一者中的一實體記憶體位址;且 該等實體位址空間的各者與該至少二個域的一者關聯。
  10. 如請求項9之設備,其中 該記憶體保護電路系統定義位於該記憶體階層的至少一個混淆儲存電路之後且在該記憶體階層的至少一個未混淆儲存電路之前的一實體混淆點; 該至少一個混淆儲存電路將來自對應於相同記憶體系統資源的不同實體位址空間的實體位址視為彷彿該等實體位址對應於不同的記憶體系統資源。
  11. 如請求項10之設備,其中 該實體混淆點係在該加密點或在該加密點之後。
  12. 如請求項9至10中任一項之設備,其中 該實體混淆點係在該加密點。
  13. 如請求項9至11中任一項之設備,其中 回應於請求將記憶體從一來源實體位址空間至一目的地實體位址空間的一轉移的一記憶體轉變請求,該維護操作經組態以將在該至少一個混淆儲存電路中的至少一些項無效化。
  14. 如請求項13之設備,其中 該等項的該至少一些經指派給該至少二個域之與該來源實體位址空間關聯的一者。
  15. 一種方法,其包含: 在一固定數目之至少二個域的一者中執行處理,該等域的一者再分成一可變數目的執行環境,該等執行環境的一者係經組態以管理該等執行環境的一管理執行環境; 將一加密點定義在一記憶體階層的至少一個未加密儲存電路之後及在該記憶體階層的至少一個經加密儲存電路之前; 抑制對該記憶體階層的該至少一個經加密儲存電路發布一維護操作;及 使用一金鑰輸入以對從該等域的一目前一者內發布至一記憶體位址的一記憶體存取請求的該資料執行加密或解密,其中 該金鑰輸入對該等域之各者且對該等執行環境之各者不同;且 該管理執行環境經組態以抑制對該記憶體階層的該至少一個經加密儲存資料結構發布一維護操作。
  16. 一種用於控制一主機資料處理設備以提供用於目標碼之執行的一指令環境的電腦程式;該電腦程式包含: 處理程式邏輯,其經組態以模擬該目標碼在至少二個域的一者中的處理,其中該等域的一者再分成一可變數目的執行環境,該等執行環境的一者係經組態以管理該等執行環境的一管理執行環境;及 記憶體保護程式邏輯,其經組態以將一加密點定義在一記憶體階層的至少一個未加密儲存資料結構之後及在該記憶體階層的至少一個經加密儲存資料結構之前,其中 該至少一個經加密儲存資料結構經組態以使用一金鑰輸入以對從該等域的一目前一者內發布的一記憶體存取請求的該資料執行加密或解密,其中 該金鑰輸入對該等域之各者且對該等執行環境之各者不同;且 該管理執行環境經組態以抑制對該記憶體階層的該至少一個經加密儲存資料結構發布一維護操作。
TW112112818A 2022-04-28 2023-04-06 橫跨經再分記憶體域之維護操作 TW202343264A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB2206214.5A GB2618126B (en) 2022-04-28 2022-04-28 Maintenance operations across subdivided memory domains
GB2206214.5 2022-04-28

Publications (1)

Publication Number Publication Date
TW202343264A true TW202343264A (zh) 2023-11-01

Family

ID=81940646

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112112818A TW202343264A (zh) 2022-04-28 2023-04-06 橫跨經再分記憶體域之維護操作

Country Status (3)

Country Link
GB (1) GB2618126B (zh)
TW (1) TW202343264A (zh)
WO (1) WO2023209341A1 (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303899B2 (en) * 2016-08-11 2019-05-28 Intel Corporation Secure public cloud with protected guest-verified host control
US11379592B2 (en) * 2018-12-20 2022-07-05 Intel Corporation Write-back invalidate by key identifier
GB2593486B (en) * 2020-03-24 2022-06-15 Advanced Risc Mach Ltd Apparatus and method using plurality of physical address spaces

Also Published As

Publication number Publication date
GB2618126A (en) 2023-11-01
WO2023209341A1 (en) 2023-11-02
GB2618126B (en) 2024-04-17
GB202206214D0 (en) 2022-06-15

Similar Documents

Publication Publication Date Title
US20230176983A1 (en) Apparatus and method using plurality of physical address spaces
US20230342303A1 (en) Translation table address storage circuitry
EP4127950B1 (en) Apparatus and method
US20230185733A1 (en) Data integrity check for granule protection data
TW202343264A (zh) 橫跨經再分記憶體域之維護操作
TW202343294A (zh) 保護域內執行環境
TW202343258A (zh) 執行環境失配
US20230132695A1 (en) Apparatus and method using plurality of physical address spaces