TWI787288B - 記憶體區域的中斷輸出 - Google Patents

記憶體區域的中斷輸出 Download PDF

Info

Publication number
TWI787288B
TWI787288B TW107121800A TW107121800A TWI787288B TW I787288 B TWI787288 B TW I787288B TW 107121800 A TW107121800 A TW 107121800A TW 107121800 A TW107121800 A TW 107121800A TW I787288 B TWI787288 B TW I787288B
Authority
TW
Taiwan
Prior art keywords
memory
given
realm
domain
data
Prior art date
Application number
TW107121800A
Other languages
English (en)
Other versions
TW201905698A (zh
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 TW201905698A publication Critical patent/TW201905698A/zh
Application granted granted Critical
Publication of TWI787288B publication Critical patent/TWI787288B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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
    • 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Non-Volatile Memory (AREA)

Abstract

用於處理資料之設備包含用以增強第一記憶體內之複數個記憶體區域之所有權權限的記憶體存取電路系統,該等複數個記憶體區域之中的給定記憶體區域具有自複數個過程之中規定的給定擁有過程。該給定擁有過程具有用以控制對儲存在該給定記憶體區域內的給定所擁有資料之存取的互斥權限。該記憶體存取電路系統回應於自第一輸出命令源接收的用於該給定記憶體區域之第一輸出命令而進行第一輸出操作以加密該給定所擁有資料以形成給定加密資料且將該給定加密資料儲存在第二記憶體中。該記憶體存取電路系統回應於在該第一輸出操作正在進行時自第二輸出命令源接收的用於該給定記憶體區域之第二輸出命令而決定該第二輸出命令源是否具有相較於該第一輸出命令源的在控制階層內之較高優先權位置,且當該第二輸出命令源具有較高優先權時,中斷該第一輸出操作且進行藉由該第二輸出命令規定的第二輸出操作,且當該第二輸出命令源具有較低優先權時,繼續進行該第一輸出操作且阻止該第二輸出操作之進行。

Description

記憶體區域的中斷輸出
本揭示案係關於資料處理系統之領域。更具體而言,本揭示案係關於資料處理系統,其中記憶體之不同區域與不同過程相關且服從自第一記憶體輸出至第二記憶體。
已知提供具有記憶體管理機構之資料處理系統,該等記憶體管理機構用來管理記憶體位址空間之哪些記憶體區域在給定時間對映至第一記憶體中,且在彼等記憶體區域需要時將該等記憶體區域輸出至第二記憶體,或以便為將要置放在第一記憶體中的其他記憶體區域騰出空間。
本揭示案之至少一些實施例提供用於處理資料之設備,該設備包含: 記憶體存取電路系統,其用於增強第一記憶體內之複數個記憶體區域之所有權權限,該等複數個記憶體區域之中的給定記憶體區域具有自複數個過程之中規定的給定擁有過程,該給定擁有過程具有用以控制對儲存在該給定記憶體區域內的給定所擁有資料之存取的互斥權限;其中 該記憶體存取電路系統回應於自第一輸出命令源接收的用於該給定記憶體區域之第一輸出命令而進行第一輸出操作以加密該給定所擁有資料以形成給定加密資料且將該給定加密資料儲存在第二記憶體中;且 該記憶體存取電路系統在該第一輸出操作正在進行時回應於自第二輸出命令源接收的用於該給定記憶體區域之第二輸出命令而決定該第二輸出命令源是否具有相較於該第一輸出命令源的在控制階層內之較高優先權位置,且當該第二輸出命令源具有較高優先權時,中斷該第一輸出操作且進行藉由該第二輸出命令規定的第二輸出操作,且當該第二輸出命令源具有較低優先權時,繼續進行該第一輸出操作且阻止該第二輸出操作之進行。
本揭示案之至少一些實施例提供用於處理資料之設備,該設備包含: 記憶體存取構件,其用於增強第一記憶體內之複數個記憶體區域之所有權權限,該等複數個記憶體區域之中的給定記憶體區域具有自複數個過程之中規定的給定擁有過程,該給定擁有過程具有用以控制對儲存在該給定記憶體區域內的給定所擁有資料之存取的互斥權限;其中 該記憶體存取構件回應於自第一輸出命令源接收的用於該給定記憶體區域之第一輸出命令而進行第一輸出操作以加密該給定所擁有資料以形成給定加密資料且將該給定加密資料儲存在第二記憶體中;且 該記憶體存取構件回應於在該第一輸出操作正在進行時自第二輸出命令源接收的用於該給定記憶體區域之第二輸出命令而決定該第二輸出命令源是否具有相較於該第一輸出命令源的在控制階層內之較高優先權位置,且當該第二輸出命令源具有較高優先權時,中斷該第一輸出操作且進行藉由該第二輸出命令規定的第二輸出操作,且當該第二輸出命令源具有較低優先權時,繼續進行該第一輸出操作且阻止該第二輸出操作之進行。
本揭示案之至少一些實施例提供一種處理資料之方法,該方法包含以下步驟: 增強第一記憶體內之複數個記憶體區域之所有權權限,該等複數個記憶體區域之中的定記憶體區域具有自複數個過程之中規定的給定擁有過程,該給定擁有過程具有用以控制對儲存在該給定記憶體區域內的給定所擁有資料之存取的互斥權限;其中 回應於自第一輸出命令源接收的用於該給定記憶體區域之第一輸出命令,進行第一輸出操作以加密該給定所擁有資料以形成給定加密資料且將該給定加密資料儲存在第二記憶體中;且 回應於在該第一輸出操作正在進行時自第二輸出命令源接收的用於該給定記憶體區域之第二輸出命令,決定該第二輸出命令源是否具有相較於該第一輸出命令源的在控制階層內之較高優先權位置,且當該第二輸出命令源具有較高優先權時,中斷該第一輸出操作且進行藉由該第二輸出命令規定的第二輸出操作,且當該第二輸出命令源具有較低優先權時,繼續進行該第一輸出操作且阻止該第二輸出操作之進行。
本揭示案之至少一些實施例提供一種用於控制主機資料處理設備以提供指令執行環境的電腦程式,該電腦程式包含: 記憶體存取程式邏輯,其用以增強第一記憶體內之複數個記憶體區域之所有權權限,該等複數個記憶體區域之中的給定記憶體區域具有自複數個過程之中規定的給定擁有過程,該給定擁有過程具有用以控制對儲存在該給定記憶體區域內的給定所擁有資料之存取的互斥權限;其中 該記憶體存取程式邏輯回應於自第一輸出命令源接收的用於該給定記憶體區域之第一輸出命令而進行第一輸出操作以加密該給定所擁有資料以形成給定加密資料且將該給定加密資料儲存在該第二記憶體中;且 該記憶體存取程式邏輯回應於在該第一輸出操作正在進行時自第二輸出命令源接收的用於該給定記憶體區域之第二輸出命令而決定該第二輸出命令源是否具有相較於該第一輸出命令源的在控制階層內之較高優先權位置,且當該第二輸出命令源具有較高優先權時,中斷該第一輸出操作且進行藉由該第二輸出命令規定的第二輸出操作,且當該第二輸出命令源具有較低優先權時,繼續進行該第一輸出操作且阻止該第二輸出操作之進行。
電腦程式可儲存在儲存媒體上。儲存媒體可為非暫時性儲存媒體。
第1圖示意性地例示資料處理系統2,該資料處理系統包含系統單晶片積體電路4,該系統單晶片積體電路連接至分離非依電性記憶體6,諸如充當大容量儲存裝置的晶片外快閃記憶體。系統單晶片積體電路4包含呈(在此示例性實施例中)兩個通用處理器(CPU) 8、10,及圖形處理單元(graphics processing unit; GPU) 12之形式的複數個處理元件。將瞭解,在實踐中,可提供許多不同形式的處理元件,諸如額外通用處理器、圖形處理單元、直接記憶體存取(direct memory access; DMA)單元、共處理器及用來存取記憶體位址空間內之記憶體區域且對儲存在彼等記憶體區域內的資料進行資料處理操作的其他處理元件。
通用處理器8、10及圖形處理單元12耦接至互連電路系統14,該等通用處理器及該圖形處理單元經由該互連電路系統與晶片上記憶體16及外部記憶體6 (經由外部記憶體介面18)進行記憶體交易。儘管記憶體16在第1圖中為晶片上的,但在其他實施例中,記憶體16可代替地經實施為晶片外記憶體。晶片上記憶體16儲存對應於整體記憶體位址空間內之複數個記憶體區域的資料。此等記憶體區域對應於記憶體頁且經受管理操作,該等管理操作控制哪些記憶體區域(頁)在給定時間處存在於晶片上記憶體16內,該等過程可以存取儲存在彼等記憶體區域內的資料及與彼等記憶體區域相關的其他參數。更特定而言,在此示例性實施例中,處理元件8、10、12中每一者包括領域管理單元20、22、24及通用記憶體管理單元26、28、30。通用記憶體管理單元26、28、30用來控制記憶體區域之操作之態樣,諸如位址對映(例如虛擬位址與中間實體位址,或實體位址之間的對映)、對能夠存取給定記憶體區域的過程的特權級約束、給定記憶體區域內之資料之儲存特性(例如可快取性、裝置記憶體狀態等)及記憶體之區域之其他特性。
領域管理單元20、22、24管理用來增強複數個記憶體區域之所有權權限的資料,藉此給定記憶體區域具有自複數個過程之中規定的給定擁有過程(或擁有者「領域」) (過程或領域為例如監視器程式、超管理器程式、客作業系統程式、應用程式等中一者,或此程式之特定子部分)。用於給定記憶體區域的給定擁有過程(擁有者領域)具有互斥權以控制對儲存在彼給定記憶體區域內的給定自有資料之存取。詳言之,擁有者過程具有防止藉由在相較於擁有者過程之較大特權級處執行的過程對該擁有者過程之所擁有記憶體區域之存取的權限。
因此,複數個記憶體區域在複數個擁有者領域之間經劃分。每一領域對應於至少一個軟體過程之至少一部分,且經分配若干記憶體區域之所有權。擁有過程/領域具有互斥權以控制對儲存在該等擁有過程/領域之領域之記憶體區域內的資料之存取。哪些記憶體區域經記憶體對映至每一領域之管理及控制藉由除擁有者領域自身之外的過程進行。使用此配置,諸如超管理器之過程可能控制哪些記憶體區域(記憶體之頁)含於由各別客虛擬機(客作業系統)擁有的領域內,該等各別客虛擬機藉由彼超管理器管理,然而超管理器自身可不具有實際上存取儲存在該超管理器已分配給給定領域的記憶體區域內的資料之權限。因而,例如,客作業系統可保持儲存在彼客作業系統之領域內,亦即在由彼客作業系統擁有的記憶體區域內的資料相對於該客作業系統之管理超管理器私有。
記憶體位址空間至領域之劃分,及彼此領域之所有權之控制,藉由與處理元件8、10、12中每一者相關的領域管理單元20、22、24管理,且為與藉由通用記憶體管理單元26、28、30提供的更習知控制形式正交的控制過程。領域管理單元20、22、24因此提供記憶體存取電路系統以增強記憶體位址空間之記憶體區域之所有權權限。在一些狀況下,增強領域所有權權限的記憶體存取電路系統可亦包括MMU 26、28、30之部分(例如MMU 26、28、30中之TLB可包括用於基於藉由RMU 20、22、24提供的領域控制來控制存取的一些控制資料,以避免需要存取兩個分離結構)。在此示例性實施例中,處理元件8、10、12中每一者含有其自有領域管理單元20、22、24;此對於效能目的為有利的。然而,更一般而言,增強所有權權限的記憶體存取電路系統可包含領域管理單元之單個實例、存在的所有領域管理單元20、22、24之組合,或存在的彼等領域管理單元20、22、24之子集。因而,用於增強所有權權限的記憶體存取電路系統可跨於與不同處理元件8、10、12相關的系統單晶片積體電路4分散,或在一個位置中或在一些其他配置中收集在一起。
包含通用處理器8、10的處理元件經例示為包括各別解碼及執行電路系統32、34,該等各別解碼及執行電路系統解碼且執行程式指令。此等程式指令包括用來控制記憶體位址空間之不同所有權領域內之記憶體區域之管理的命令(領域管理命令或RMU命令)。作為一實例,所執行的程式指令可包括指定為領域管理單元命令的程式指令,且當在程式指令串流內遭遇該等程式指令時,該等程式指令經導向至相關領域管理單元20、22、24,以便該等程式指令可藉由關聯領域管理單元20、22、24執行(做動作)。領域管理單元命令之實例包括用來初始化新領域或使現有領域無效的命令、用來將記憶體區域分配給特別領域、自特別領域移除記憶體區域、在對輸出資料進行加密及其他過程使得該輸出資料在第二記憶體6內受保護的情況下將含於記憶體區域內的資料自第一記憶體16輸出至第二記憶體6的命令。進一步領域管理單元命令經提供來在對輸入資料進行相關解密及確認操作的情況下將資料自第二記憶體6向後輸入至第一記憶體16。
在資料自記憶體區域之此類輸出及輸入之情境下,將瞭解,諸如晶片上記憶體16之第一記憶體藉由系統單晶片積體電路4內之領域管理單元20、22、24密切地管理,且因此彼等領域管理單元20、22、24能夠增強所有權權限且將對給定記憶體區域內之資料之存取限制於擁有彼記憶體區域的過程,或擁有過程已授予存取的彼等過程。然而,當彼記憶體區域內之資料經輸出,諸如輸出至為第二記憶體的外部非依電性記憶體6時,則藉由領域管理單元20、22、24提供的對存取之控制不再有效且因此資料以一些其他方式需要保護。此藉由在資料經輸出之前使用加密記憶體區域內之資料,且隨後在該資料經向後輸入至晶片上記憶體16時以私密金鑰解密彼資料達成。
輸出過程可伴隨有規定輸出資料之特性的元資料之產生。此元資料可單獨地儲存在第一記憶體(晶片上記憶體16)之元資料記憶體區域內,其中該元資料對於領域管理單元20、22、24保持私有(亦即,僅為此類領域管理單元20、22、24可存取且現有過程中之任何過程不可存取),使得當資料經向後輸入至晶片上記憶體16時,可針對彼輸入資料讀取元資料且可對照輸入資料之特性核對表示於元資料中的資料之特性以確保彼輸入資料之完整性(例如核對和、資料大小、簽章等)。其可為,領域管理單元20、22、24之私有資料(包括表徵輸出區域/頁的以上元資料)需要自晶片上記憶體16輸出至晶片外非依電性記憶體6 (例如以在晶片上記憶體16內騰出空間),且在此情況下,RMU-私有元資料自身可經加密以用於該RMU-私有元資料之保護且表徵輸出元資料的新元資料可保持在晶片上記憶體16內(此保持的元資料在大小上顯著地小於輸出元資料),以便在加密及輸出元資料經向後輸入至晶片上記憶體16以用於使用時,可核對且確認該加密及輸出元資料。
描述記憶體區域之特性的此元資料及儲存在記憶體區域內的資料可經配置為階層式結構之部分,該階層式結構諸如具有分枝型樣的元資料記憶體區域樹。此元資料記憶體區域樹之形式可在軟體控制下決定,因為記憶體位址空間之不同區域經註冊以充當由領域管理單元20、22、24擁有的元資料區域。將瞭解,雖然控制此類記憶體區域之註冊的軟體能夠分配、解除分配且控制用來儲存元資料的記憶體區域之間的關係,但此軟體自身在能夠控制哪些過程可以存取此資料的意義上並不擁有含於彼等記憶體區域內的資料。在對於領域管理單元20、22、24 (亦即記憶體管理電路系統)私有的記憶體區域之狀況下,此類存取權可僅限制於領域管理單元20、22、24自身且此RMU-私有資料將不與任何其他過程共享。
當儲存在給定記憶體區域內的給定資料經輸出時,隨後使所關心的記憶體區域無效,使得內容為不可存取的。為重新使用此頁,藉由使用清潔命令來使該頁「有效」,該清潔命令以與先前內容不相關的其他資料覆寫記憶體區域,以便在彼給定記憶體區域經釋放以用於由另一過程使用時,未使此先前內容為另一過程可存取的。例如,給定記憶體區域之內容可經全部寫入至零值,或寫入至固定值,或寫入至隨機值,藉此覆寫記憶體區域之原始內容。在其他實例中,輸出記憶體區域之內容之覆寫可藉由輸出命令自身而非後續清潔命令觸發。總之,在使給定記憶體區域為除給定擁有過程之外的過程可存取的之前,經輸出的給定所擁有資料可以與給定所擁有資料不相關的值覆寫。當由給定過程擁有的給定記憶體區域將經輸出時,作為輸出過程之部分,正執行領域命令以進行輸出的領域管理單元20、22、24自給定過程取得所關心的記憶體區域之所有權(亦即使區域為RMU-私有),相對於所有其他過程(及其他領域管理單元)鎖定彼記憶體區域之存取,進行輸出操作(包括加密、元數據產生及覆寫),且隨後解鎖對彼記憶體區域之存取且釋放彼記憶體區域之所有權。因而,處於經輸出,或輸入之過程中的記憶體區域在彼命令正在進行時可對於所關心的領域管理單元保持私有。
第2圖示意性地例示複數個過程(程式/執行緒)之間的關係、複數個異常級(特權級)、保全及非保全處理器域,及表示給定記憶體區域之所有權的複數個領域。如所例示,特權級之階層自異常級EL0延伸至異常級EL3 (其中異常級EL3具有最高特權級)。系統之操作狀態可在保全操作狀態與非保全操作狀態之間加以劃分,該保全操作狀態及該非保全操作狀態如藉由使用TrustZone®架構的例如處理器中之保全域及非保全域所表示,該TrustZone®架構係藉由ARM® Limited (Cambridge, UK)提供。
如第2圖中所例示,記憶體存取電路系統(領域管理單元20、22、24及相關控制軟體(例如運行一個領域管理單元的毫碼))管理執行環境內之複數個領域。給定記憶體區域(記憶體頁)由特別領域擁有。領域可具有該領域內之子代領域,及彼等子代領域內之孫代領域(例如參見領域A (上代)、領域B (子代),及領域C (孫代))。所有權經給予領域A的記憶體區域可使該等記憶體區域之所有權繼而在由領域A擁有的過程之控制下自領域A傳遞至領域B。因而,上代領域能夠將區域之所有權給予該上代領域之自有子代領域。彼等子代領域繼而可傳遞該等子代領域已自該等子代領域之上代領域接收的記憶體區域之所有權,以隨後由該等子代領域之自有子代領域(例如領域C)擁有,該等自有子代領域為原始領域,亦即領域A之孫代領域。給定領域內之過程可在相同特權級處或在不同特權級處執行。過程所屬的領域因此為相對於過程之特權級的正交參數,儘管在許多實際狀況下領域及特權級可對應,因為用於在領域之間移動的便利機構可涉及自身在不同特權級(異常級)之間移動系統的異常之使用。
第2圖中所例示的領域之間的關係示出不同領域之間的子代/上代關係,且當用於記憶體區域管理的多個不同命令源彼此競爭時,此可用來導致用於控制系統之操作的控制階層。因而,例如,在如以上所論述的用於輸出記憶體區域的輸出命令之狀況下,第一輸出命令可由給定領域管理單元(記憶體存取電路系統)自第一輸出命令源接收,該第一輸出命令源諸如領域B內之作業系統核心36。第二輸出命令則可由給定領域管理單元自第二命令源接收,該第二命令源諸如在領域A中執行的超管理器程式38。在此實例中,為第二輸出命令源的超管理器程式38在藉由上代領域與子代領域之間的關係建立的控制階層內具有較高優先權,使得由超管理器程式38發佈的第二輸出命令中斷由作業系統核心36發佈的第一輸出命令之處理。當如由超管理器38發佈的第二輸出命令已完成時,如由作業系統核心36發佈的第一輸出命令可經恢復。
在此實例中,第二輸出命令具有較高優先權且因此中斷第一輸出命令之操作。然而,若第二輸出命令已例如起源於領域C內之應用程式40,則此在藉由領域之間的關係建立的控制階層內具有較低優先權位置,且因此來自應用程式40的此第二輸出命令將不中斷來自作業系統核心36的第一輸出命令之操作且實情為自身將受阻止以免進行,直至第一輸出命令已完成。因而,分頁操作(輸出及輸入操作)可在該等分頁操作依賴於控制階層而可以或可不中斷彼此的意義上彼此經保護,該控制階層可與領域階層相關。在其他示例性實施例中,控制階層可對應於特權級。
第3圖示意性地例示領域管理單元20及通用記憶體管理單元26,該領域管理單元及該通用記憶體管理單元分別對儲存在晶片上記憶體16內的複數個記憶體頁(記憶體區域)進行不同管理操作。如所例示,領域管理單元24使用複數個領域描述符42,其中每一描述符規定領域之性質。領域管理單元24亦可維持領域區組表(或所有權表),該領域區組表包含藉由實體位址索引的項,每一項包括用於對應記憶體區域之資訊,包括以下之指示:彼記憶體區域屬哪個領域,亦即哪個領域具有互斥權限以控制對彼記憶體區域內之控制資料之存取,即使該領域並不控制該領域自身實際上是否擁有彼記憶體區域。領域描述符及領域區組表項可儲存在記憶體16中,但亦可經快取於RMU自身中。因而,如第3圖中所例示,不同記憶體區域具有如藉由領域指定RA、RB、RC、RD及RE指示的不同擁有領域。記憶體區域中之一些亦由領域管理單元20擁有(對於該領域管理單元為私有的)且經標記為RMU-私有。此類RMU-私有區域可用來儲存描述其他記憶體區域之特性的元資料,暫時地儲存正經輸出或輸入的記憶體區域,或用於領域管理單元20自身之其他目的。RMU-私有區域仍可由對應擁有者領域擁有,但可並非由擁有者領域發佈的通用讀取/寫入存取可存取的(實情為可需要發佈至RMU 20的RMU命令觸發RMU 20以對RMU-私有區域做出任何變化)。
記憶體區域之定址可藉由虛擬、中間實體或實體位址,取決於所關心的特別系統。領域管理單元20,及通用記憶體管理單元26,因此可儲存轉譯資料,該轉譯資料使所接收位址(無論該等所接收位址為虛擬記憶體位址或中間記憶體位址)能夠經轉譯為更直接地表示所關心的晶片上記憶體16內之記憶體區域的位址,諸如實體位址。此位址轉譯資料可使用轉譯旁看緩衝器及其他分散式控制機構加以管理且分散在系統單晶片積體電路4內。
第4圖示意性地例示與記憶體區域之輸出操作相關的程式指令。此等程式指令出現在程式指令串流內且可藉由整體電路系統內之不同元件執行(做動作)。例如,領域管理單元命令藉由各別領域管理單元12、22、24執行。指令諸如虛擬位址解對映(virtual address unmapping; VUMAP)指令及轉譯旁看緩衝器無效(translation look aside buffer invalidate; TLBI)指令在系統單晶片積體電路4內廣播,且用來清除如由彼等命令作為整體自系統內之位置規定的轉譯資料之使用(儘管在一些實例中,專用虛擬位址解對映指令可未經提供,且實情為虛擬位址之解對映可藉由修改轉譯表項而非使用特殊解對映指令來進行,該修改係藉由進行至記憶體之儲存來進行)。屏障指令DSB插入第4圖中所例示之指令序列內且用來暫停彼序列之處理,直至已接收前導虛擬位址解對映指令(或等效儲存指令)及轉譯旁看緩衝器無效指令已藉由系統之所有部分完成的應答為止。因而,用於除在領域管理系統自身中之外的系統內之給定記憶體區域之虛擬位址轉譯之清除可藉由虛擬位址解對映指令(或等效儲存指令)、轉譯旁看緩衝器無效指令及對應屏障指令之序列達成。藉由解對映(及因而有效地移除)用於給定記憶體區域(頁)的虛擬位址轉譯資料,可確保當儲存在彼記憶體區域中的資料之輸出操作將經進行時,此記憶體區域將在系統內之其他地方未處於使用中。
一旦屏障指令DSB已接收證實來自系統內的虛擬位址轉譯資料之清除已完成的應答,則用於領域管理單元之輸出命令藉由領域管理單元執行。藉由領域管理單元自給定過程接收的此輸出指令之執行觸發命令序列(對應於嵌入領域管理單元內的毫碼)之效能,該命令序列包含關於規定的給定記憶體區域之複數個命令動作。此等命令目標可包括,例如如第4圖中所例示,以下步驟:收集位址轉譯資料、鎖定記憶體區域、加密資料、將資料儲存在外部、寫入與記憶體區域相關的元資料及隨後解鎖記憶體區域。
作為命令序列之部分藉由領域管理單元進行的位址轉譯收集步驟將完成所關心的存取操作所需要的存取控制資料收集至彼領域管理單元。此確保一旦輸出操作在進行中,則存在彼輸出操作經暫停之降低的可能性,諸如可歸因於參數或完成彼輸出操作所需要的資料之非可利用性,該資料例如位址轉譯資料、屬性資料或由輸出過程需要的其他資料。作為擷取至存取控制資料之記憶體存取電路系統(領域管理單元)及儲存在該記憶體存取電路系統內之實例,位址轉譯步驟用來擷取可需要來完成輸出操作的所有需要的位址轉譯資料(例如虛擬對中間實體位址(或實體位址)對映資料)。
一旦位址轉譯資料已經擷取,則領域管理單元用來將與所關心的區域相關的鎖定旗標設定至鎖定狀態中。此鎖定旗標可儲存在用於所關心的區域屬性資料42內。替代地,鎖定旗標可儲存在對於正進行輸出操作的領域管理單元私有的記憶體區域內,使得該鎖定旗標不可藉由任何其他過程或領域管理單元覆寫。為將鎖定旗標設定至鎖定狀態,領域管理單元必須決定無其他領域管理單元當前正將所關心的記憶體區域保持在鎖定狀態自身中。因而,進行儲存在其他地方的任何區域控制資料之鎖定旗標值之輪詢,且若返回指示區域並未在其他地方鎖定的結果,則將鎖定旗標設定至鎖定狀態。若區域在其他地方鎖定,則輸出操作失敗且向指導彼輸出操作的過程報告錯誤。一旦鎖定已經獲得,則給定記憶體區域內之資料經加密且儲存在系統單晶片積體電路外部,諸如儲存至外部非依電性記憶體6。如先前所論述,表徵加密資料(或加密之前的給定資料)的元資料隨後經產生且儲存在領域管理單元私有區域內,使得該元資料可在稍後時間用來確認輸出資料。最後,所關心的記憶體區域由進行輸出命令的領域管理單元藉由將鎖定旗標自鎖定狀態切換至解鎖狀態來解鎖。藉由記憶體存取電路系統(領域管理單元)硬體機構增強的鎖定之使用用來阻止在鎖定旗標處於鎖定狀態中時可接收的來自進一步處理元件之任何其他(第二)存取命令之進展。
第5圖為示意性地例示頁(記憶體區域)輸出的流程圖。在步驟44處,程式指令經執行(VUMAP、TLBI、DSB),該等程式指令用來清除在系統中之除在區域管理單元20、22、24內之外的其他地方的頁之使用。此可藉由使指向將經輸出的區域的轉譯資料無效及清除該轉譯資料來達成。一旦此轉譯資料經清除,另一過程或處理元件希望存取彼區域,隨後該另一過程或處理元件將試圖重取轉譯資料。在轉譯資料之試圖重取時,力圖重新使用區域的過程或處理元件將未能獲得關聯轉譯資料,因為所關心的區域將已經置放至RMU私有狀態中,在該RMU私有狀態中,僅力圖進行頁輸出的區域管理單元20、22、24具有存取彼資料的權限。
當已在步驟44處發佈清除請求時,處理在步驟46處等待,直至自彼等清除請求接收指示已在其他地方(除在領域管理單元之外)使位址資料無效的回應為止,在該點處,繼續越過程式序列內之屏障指令DSB為安全的(屏障指令DSB暫停處理元件8、10、12,直至回應已經接收為止)。在步驟48處,執行領域管理單元輸出初始化指令。此輸出初始化指令包括指向建立為RMU私有的記憶體區域的指標,其中命令情境緩衝器(command context buffer; CCB)經建立以儲存情境資料,該情境資料表示命令序列之當前部分完成狀態,該命令序列對應於彼命令序列應經中斷的輸出操作。在替代的示例性實施例中,領域管理單元自身可負責產生指向命令情境緩衝器(command context buffer; CCB)的指標。步驟50決定藉由輸出命令步驟48內之指標指示的命令情境緩衝器是否為空。若命令情境緩衝器為空,則步驟52將此設置為RMU-私有區域。若步驟50處之命令情境緩衝器並非空,則此指示在步驟48處執行的輸出初始化命令正試圖重新開始先前中斷的輸出操作。在此狀況下,處理前進至步驟54,在該步驟處,使用在彼部分完成的狀態資料經儲存至CCB時儲存的相關元資料來確認藉由指標指向的命令情境緩衝器之內容。若通過確認,則步驟56用來使用命令情境緩衝器之內容來復原輸出命令之部分完成的狀態,例如任何部分加密的資料、指向加密已進展到的原始資料內之位置的指標、部分完成的命令之進一步屬性等。在藉由步驟48處之命令指導的輸出操作之初始化之後,處理經由包括步驟52之路徑或包括步驟54及56之路徑前進以到達步驟58,在該步驟處,到達用以執行領域管理單元輸出命令的命令。當到達此命令時,接著區域管理單元20、22、24對記憶體區域內之資料之一部分進行加密且將此儲存在目的地(該目的地亦為在步驟48處之RMU輸出初始化指令內規定的指標)內。步驟60決定是否已接收來自具有相較於發佈在步驟48及58處執行的指令的命令源的較高優先權之命令源之中斷。此較高優先權命令將來自具有如先前所論述的控制階層(例如領域階層、優先權階層等)內之較高優先權位置之源。若此較高優先權中斷經接收,則處理前進至步驟62,在該步驟處,輸出指令經暫停且錯誤碼經返回至發佈在步驟48及58處執行的指令的命令源。步驟64用來將命令之部分完成的狀態保存至命令情境緩衝器。步驟66將命令情境緩衝器元資料儲存至RMU-私有記憶體區域以用於在此隨後經擷取時使用於確認儲存在命令情境緩衝器內的部分完成的狀態中。步驟68用來將已經歷部分完成的輸出命令的記憶體區域標記為處於「部分輸出的」狀態中且指示進行此部分輸出的過程。此幫助在稍後時間重新開始彼輸出。
若步驟60處之決定為不存在中斷,則處理前進至步驟70,在該步驟處,做出關於記憶體區域之輸出是否已完成之決定。若輸出尚未完成,則處理返回至步驟58。若輸出已經完成,則處理前進至步驟72,在該步驟處,已為空(已使記憶體區域之儲存資料自該記憶體區域輸出)的記憶體區域以與原始儲存資料不相關的資料覆寫(例如歸零、設定至一些其他固定數、充滿隨機資料等)。處理接著終止。
在以上論述的示例性實施例中,CCB經提供為藉由例如初始化指令內之相關指標規定的分離私有記憶體區域。然而,在其他示例性實施例中,CCB可並非經提供為分離記憶體區域,而提供為已由可經中斷的命令使用的記憶體區域之部分,例如目的地記憶體區域,藉由命令產生的結果資料儲存至該目的地記憶體區域中。在可經中斷的輸出命令之狀況下,輸出加密資料儲存在目的地記憶體區域內,該目的地記憶體區域在輸出正進行時為RMU私有記憶體區域。當CCB正充滿加密資料時,該CCB可例如經提供為此目的地區域之結束部分。儲存在CCB內的情境資料之完整性藉由在正進行輸出操作時為RMU私有的目的地區域確保。
在另一示例性實施例中,CCB可經提供為領域描述符(realm descriptor; RD)之部分;在此狀況下,可利用於情境資料的儲存空間可受RD中可利用的空間約束且因此支援的可中斷平行命令之數目可受RD之可利用來充當各別CCB的儲存空間約束。CCB可經單獨地提供或提供為亦使用於另一目的之記憶體區域或資源之部分。
第6圖示意性地例示領域之間的關係及控制階層,該控制階層決定容許來自不同命令源之哪些命令中斷/阻止來自其他源之部分完成的命令。所例示之實例包括巢套領域之三個級。上代領域M對應於異常級EL3。子代領域N對應於異常級EL2。領域N內之兩個孫代領域包含領域O及領域P且兩者在異常級EL1處。在此實例中,異常級優先權及領域之巢套階層內之相對位置兩者在控制階層中給出順序,其中領域M具有相較於領域N的較高優先權,且領域N具有相較於領域O及領域P的較高優先權。領域O及領域P具有相等優先權。
第7圖為示意性地例示繼RMU輸入命令之後的頁(記憶體區域)輸入操作的流程圖。步驟74用來獲得且清潔空頁(記憶體區域),資料可經輸入該空頁中。步驟76接著使用加密資料之相關儲存元資料(儲存於RMU-私有區域中)來驗證將經輸入的該加密資料。若此驗證為不成功的,則產生錯誤。繼成功驗證之後,步驟78用來解密加密資料且步驟80用來將彼解密資料儲存至已在步驟74處獲得的記憶體頁中。一旦記憶體頁已充滿解密資料,該記憶體頁可經釋放至擁有領域(過程)。經獲得且隨後充滿的頁經鎖定,以便在頁輸入過程期間為記憶體管理電路系統(領域管理單元20、22、24)排他地可利用的。
第8圖示意性地例示可自不同命令源平行出現的兩個輸出命令。指令序列中一者源自對應於虛擬機(例如客作業系統)的過程。另一命令源為在與虛擬機相比之較高特權級(或領域階層內之可能較高級)處的超管理器。因此,來自超管理器之輸出命令能夠中斷正藉由領域管理單元20、22、24進行的代表虛擬機的部分完成的輸出命令。當代表超管理器之輸出完成時,接著可重新開始代表虛擬機之輸出。
在此實例中,至領域管理單元20、22、24之命令可為組合初始化及執行命令,該組合初始化及執行命令經重複地執行,直至記憶體存取電路系統報告對應於輸出操作的命令序列已經完成為止。在先前論述之實例中,輸出命令可由繼之以重複地執行直至記憶體存取電路系統報告命令序列已完成為止的後續輸出執行命令的輸出初始化命令形成,該輸出初始化命令規定指向命令情境緩衝器的指標及其他指標。在其他示例性實施例中,輸出操作可藉由組合初始化及執行指令(該組合初始化及執行命令為可中斷的)及在組合初始化及執行命令經中斷的情況下發佈的執行繼續命令控制。
命令情境緩衝器用來儲存表示部分完成的命令序列的部分完成的狀態,使得此資料可在稍後時間經復原。以此方式,系統不需要在中斷可經服務之前等待直至完整輸出操作已經完成。此外,當部分完成的狀態經保持時,即使輸出操作經重複地中斷,亦確保貫穿輸出操作的向前進展,因為輸出操作將不需要自該輸出操作之初始點重新開始。
第9圖例示第1圖之處理元件8、10、12中一者及用於控制記憶體存取的儲存於記憶體16中之控制資料之更詳細實例。為便於解釋,第9圖將CPU 0示出為處理元件8,但將瞭解,處理元件亦可為GPU 12之CPU 1 10或資料處理設備2內之任何其他處理元件。如第9圖中所示,處理元件8包括處理電路系統32 (該處理電路系統可包含以上所描述之解碼及執行邏輯)、可包括用於快取轉譯表之項的一或多個轉譯旁看緩衝器100的記憶體管理單元26 (若使用共享MMU-RMU TLB結構,則該一或多個轉譯旁看緩衝器亦可附加有來自RMU 20之基於領域之控制資料),及用於控制資料至TLB 100之分配及觸發對記憶體之漫步存取以定位用來控制給定記憶體存取是否經允許進行的所需要的資料的表漫步單元102。處理元件8可亦包括密碼單元104,該密碼單元可進行用於加密或解密例如用於在以上所論述之分頁(輸出/輸入)操作中使用的資料的密碼操作。處理元件8亦包括若干快取110,該等快取可快取自記憶體16讀取的資料或指令。若藉由處理電路系統32或藉由表漫步單元102觸發的對記憶體之存取在快取中未中,則可自主記憶體16定位資料。
處理元件8亦包括如以上所論述之領域管理單元20。在一些實施例中,領域管理單元(realm management unit; RMU) 20可經提供為硬體電路。然而,以下所論述之RMU操作中之一些可對於單純地實施於硬體中為相對複雜的,例如若該等RMU操作需要對不同記憶體區域之多個存取經進行。因此,在一些實例中,RMU 20可使用程式碼加以實施,該程式碼可儲存在資料處理設備2內且可使用通用處理電路系統32加以執行。不同於可經寫入至記憶體16且可為可重寫的通用軟體,RMU軟體(毫碼)可以相對永久的方式安裝於資料處理設備上使得該RMU軟體不可移除,且可經視為藉由處理系統提供的平臺之部分。例如,RMU程式碼可儲存在唯讀記憶體(read only memory; ROM)內。因此,RMU可包含硬體單元,或可包含執行領域管理軟體的處理電路系統32,該處理電路系統藉由RMU命令觸發以執行,該等RMU命令包括在藉由處理電路系統32執行的通用軟體中。在一些實例中,RMU 20可使用硬體及軟體之組合來實施,例如一些較簡單功能可使用硬體電路來實施以用於較快速處理,但較複雜功能可使用毫碼來實施。因此,將瞭解,對RMU之後續參考可涉及硬體或軟體或兩者之組合。
如第9圖中所示,記憶體16可儲存藉由MMU 26及RMU 20使用來控制對記憶體之存取的若干件控制資訊。此等包括轉譯表(亦稱為頁表) 120,該等轉譯表定義用於控制允許哪些過程存取給定記憶體區域的記憶體存取屬性,以及用於將虛擬位址轉譯至實體位址的位址對映資訊。轉譯表120可基於以上關於第2圖所論述之異常級加以定義,使得在較多特權異常級處執行的過程可設定許可,該許可操縱是否允許在較少特權異常級處執行的過程存取對應記憶體區域。
另外,若干領域管理表或領域控制資訊122經提供來用於以相對於MMU頁表120之正交方式控制記憶體存取,以允許較少特權過程控制是否存取較多特權過程(領域控制在對於將要服務的記憶體存取請求而言,該領域控制可需要通過兩個類型的存取控制核對的意義上正交於MMU控制)。使用領域管理表,擁有給定記憶體區域的擁有者過程(領域)具有自存取彼記憶體區域排除在較多特權異常級處執行的過程之權限。領域管理資料包括領域描述符124,該領域描述符描述給定領域之性質。每一領域對應於藉由處理電路系統32執行的至少一個軟體過程之至少一部分。一些領域可對應於二或更多個過程,而其他領域可對應於給定軟體過程之僅一子部分。領域亦可經視為對映至記憶體位址空間之給定區域(其中當處理電路系統32正執行位於記憶體位址空間之對應區域內的程式指令時,該處理電路系統在給定領域內執行)。因此,領域可經視為軟體過程之集合或軟體過程之一部分,或視為記憶體位址空間之區。此兩個觀點為等效的。為便於解釋,後續描述將領域稱為至少一個軟體過程之至少一部分,但作為記憶體區域之收集的領域之對應觀點為同樣有效的(在此狀況下,至/自領域之「進入」及「退出」可對應於到達/離開對應於領域的記憶體位址之部分的程式執行)。
領域管理資料122亦包括領域執行情境區域126,該領域執行情境區域可使用於在領域退出或進入時保存及復原與給定領域相關的架構狀態。領域管理資料亦包括領域區組表(或所有權表) 128,該領域區組表針對記憶體位址空間之每一區域定義哪個領域為用於彼記憶體區域的擁有者領域。用於給定記憶體區域的擁有者領域具有自存取儲存在彼記憶體區域內的資料排除其他領域(包括較多特權過程)的權限。以下更詳細地論述此領域管理資料之使用。一般而言,領域管理單元20及MMU 26可經視為記憶體存取電路系統,該記憶體存取電路系統增強藉由用於記憶體區域的擁有者領域定義的所有權權限,該記憶體區域由彼領域擁有。此可例如對於雲端平臺為尤其有用的,在該雲端平臺中,由不同當事人提供的若干虛擬機36可在藉由雲端伺服器操作員提供的超管理器38之控制下執行。提供虛擬機中一者的當事人可不希望其資料及碼為超管理器可存取的。藉由引入其中在較少特權異常級處執行的領域可自存取該領域之資料或指令排除較多特權異常級的領域概念,此使盲超管理器能夠經提供,該盲超管理器可增加碼開發者之信心以將該等碼開發者之軟體安裝於雲端服務上,其中實體硬體可與由其他當事人提供的碼共享。
如第10圖中所示,領域由RMU 20根據領域階層管理,在該領域階層中,除根領域130之外的每一領域為子代領域,該子代領域具有對應上代領域,該對應上代領域藉由執行初始化命令來初始化子代領域。根領域130可例如為與在最多特權異常級EL3處執行的監視器碼或系統韌體相關的領域。為便於解釋,第10圖之實例及以後論述之初始實例示出每一子代領域在相較於該子代領域之上代領域的較低特權級處執行的狀態。然而,如以下將論述的,亦可能建立次領域,該次領域在與該次領域之上代相同的異常級處執行。
一般而言,對於由MMU 26提供的記憶體存取控制之領域管理部分,子代領域具有對由該子代領域之上代領域擁有的任何記憶體區域之預設存取。類似地,假設給定領域之任何後代可以存取給定領域之所擁有記憶體區域。然而,因為領域管理控制正交於由轉譯表120基於異常級提供的控制,所以在較高特權級處執行的過程仍可藉由據此設定轉譯表120之參數來自存取該過程之資料排除較少特權碼。因此,一般而言,給定子代領域具有自存取儲存在由給定子代領域擁有的給定記憶體區域中的資料排除該給定子代領域之上代領域的權限。子代領域實際上是否自存取給定記憶體區域排除上代領域可基於所有權表128中設定的控制屬性加以設定(預設可為上代領域不具有對子代領域之所擁有區域之存取,但子代領域可藉由據此設定可見性屬性來選擇將存取授予上代領域)。當存在多個同輩份領域(共享相同上代領域的不同子代領域)時,則給定子代領域可自存取儲存在由給定子代領域擁有的給定記憶體區域中的資料排除同輩份領域。另外,在所有權表128中設定的可見性屬性可控制同輩份領域可存取每一其他同輩份領域之資料之程度。替代地,藉由同輩份領域之存取可基於上代可見性屬性加以控制,使得若子代領域使頁為該子代領域之上代領域可見的,則相同頁亦變成對於該子代領域之同輩份領域及同輩份領域之進一步後代為可見的。在一些狀況下,所有權表128可具有全域可見性屬性,該全域可見性屬性可允許給定擁有者過程使在任何領域下執行的任何過程能夠存取該給定擁有者過程之所擁有記憶體區域內之資料。
如第10圖中所示,每一領域140與一或多個領域執行情境(realm execution context; REC)記憶體區域126相關,當自給定領域退出時,該一或多個領域執行情境記憶體區域可使用於儲存領域之架構狀態,諸如暫存器值。提供來用於給定領域的REC 126之數目可取決於多少執行之執行緒正在給定領域下操作。例如,領域在最初初始化時可與單個主要REC區域126建立,但隨後領域可在必要時組配由彼領域擁有的其他記憶體區域以充當進一步REC。REC記憶體區域由執行狀態儲存至彼REC的對應領域擁有。
每一領域與領域描述符124相關,該領域描述符儲存在由性質描述於領域描述符124中的領域之上代領域擁有的記憶體區域中。出於可在給定領域世代處定義的子代領域之數目之靈活性,使用稱為領域描述符樹(realm descriptor tree; RDT)的樹結構管理領域描述符,稍後將更詳細地論述該領域描述符樹。領域描述符124可用來定義領域之性質,該等性質可在進入或自領域退出時藉由RMU 20核對以確保保全。領域描述符亦可貫穿各種生命週期狀態追蹤領域之進展,使得用於領域的某些RMU命令之執行可限於特別生命週期狀態,以確保以保全方式創建領域且使領域無效。
第11圖及第12圖示出可能的領域階層之兩個不同實例。在第11圖之實例中,第2圖中所示之過程中每一者定義其自有領域。因此,根領域130對應於在異常級EL3處操作的監視器軟體或韌體。根領域定義兩個子代領域142,對應於在保全EL1處操作的保全作業系統的一個及對應於在EL2處之超管理器的另一個。超管理器定義對應於在EL1處之不同客作業系統的孫代領域144,且彼等客作業系統中每一者定義對應於在最少特權異常級EL0處執行的應用程式的進一步曾孫代領域146。類似地,領域142中之保全作業系統可定義對應於不同保全應用程式的孫代領域148。階層中之上代領域可將該上代領域當前擁有的記憶體頁之所有權傳遞至新子代領域(藉由使用如以下所論述之區組.添加命令),或可使該上代領域之頁中一者無效,將該頁對映至子代之虛擬位址空間,且藉由執行頁所有權(主張)命令允許子代領域主張頁之所有權。若記憶體位址空間之規定的頁並非已由發佈命令的上代領域擁有,則可拒絕頁所有權命令。
如第12圖中所示,每一特權級處之過程具有分離領域並非必要的,且因此在第12圖中之虛線中所示的特權級邊界中之一些可不對應於領域邊界。例如,在第12圖中,應用程式150及該應用程式之作業系統在與在異常級EL2處操作的超管理器領域142相同的領域內執行,且因此單個領域跨越EL2超管理器碼、在EL1處操作的作業系統及在EL0處之應用程式兩者。另一方面,在相同超管理器下的不同應用程式152可定義該不同應用程式之自有分離領域。在此狀況下,領域邊界介於EL1與EL0之間且不存在EL2-EL1領域邊界(超管理器及作業系統兩者可在相同領域中執行)。對於另一作業系統,可定義分離EL1領域154,該分離EL1領域亦可具有在與作業系統相同的領域內執行的一些應用程式,及具有應用程式之自有專用領域的其他應用程式。類似地,在保全側上,第12圖中之保全OS及應用程式完全在EL3根領域內執行,且因此當在保全側上操作時不存在領域邊界。因此,領域之精確組態可取決於經執行的過程之需求在用於給定系統之運行時間決定。軟體可在運行時間判定該軟體僅需要小及固定數目的子代領域(此可為用於低階韌體之狀況),或需要許多領域或變化數目的領域(此可對於例如雲端平臺上之超管理器為有用的,該超管理器可管理未知數目的客虛擬機)。
用於給定上代領域的領域描述符124根據領域描述符樹(該領域描述符樹為領域管理樹之實例,該領域管理樹定義用於彼上代領域之若干子代領域的領域管理資料)加以管理。樹具有可變數目的級。第13圖示出藉由特別上代領域管理的此領域描述符樹160之實例。樹160包含若干領域描述符樹區組(realm descriptor tree granule; RDTG) 162,該等若干領域描述符樹區組各自包含若干領域描述符樹項(realm descriptor tree entry; RDTE) 164。每一RDTE 164提供指向用於上代領域之給定子代領域的領域描述符166,或用於領域描述符樹之下一級的進一步RDTG 162的指標。用於樹之第一級的RDTG 162可藉由領域描述符樹指標168識別,該領域描述符樹指標可經儲存為與上代領域(例如與上代領域之領域描述符)相關的資料之部分。因此,當上代領域發佈與給定子代領域相關的RMU命令時,該上代領域可觸發RMU以遍歷領域描述符樹,以便定位所需要的子代領域之領域描述符166 (若彼領域描述符尚未快取在RMU 20內)。每一RDTG 162可具有可變數目的項164。
如第13圖中之表中所示,提供指向在樹之後續級處之RDTG 162的指標的給定RDTE 164可包括指示所指向RDTG中之項之最大數目的階數值。例如,階數值可指示對應於所指向RDTG中之項之總數的2之冪。可包括在RDTE 164中的其他資訊可包括狀態值,該狀態值指示RDTE之狀態(例如RDTE是否為空閒的以用於領域描述符樹資料之分配,及RDTE是否提供指向進一步RDTG 162或指向子代領域描述符166的指標)。除指標之外,RDTE亦可包括參考計數,該參考計數可追蹤指向RDTG的指標中之並非空閒的RDTE之數目,該等RDTE可對於決定進一步RDTE是否可經分配給彼RDTG 162為有用的。由上代領域觸發的RMU命令可控制RMU 20以建立樹之進一步RDTG且/或編輯現有RDTG內之RDTE之內容。
應注意,第13圖中所示之樹示出一個特別上代領域之子代領域。每一其他上代領域可具有追蹤該上代領域之自有子代領域的分離領域描述符樹。與樹相關的資料包括RDTG 162及子代領域描述符166儲存在由上代領域擁有的頁內,且因此可自存取此資料排除其他領域。因此,僅上代領域可具有該上代領域組配的哪些特別子代領域之可見性,使得在較高特權級處執行的過程可不具有何領域已在該過程自身已直接創建的任何子代領域以下經創建之可見性。
如第13圖中所示,給定上代領域之子代領域中每一者可具有對應領域識別符(realm identifier; RID) 168,該對應領域識別符由彼上代領域使用來識別特別子代領域。RID為局部領域識別符,因為該RID特定於特別上代領域。不同上代領域之子代領域可具有相同局部RID。儘管可能使用具有由用於給定子代領域的上代領域選擇的任意值的局部RID,但在第13圖及第14圖中所示之方法中,用於給定子代領域的局部RID具有可變數目的可變長度位元部分且可變長度部分中每一者由RMU 20使用來索引至領域描述符樹160之給定級中。例如,第13圖中之具有局部RID = 7的子代領域之領域描述符藉由遵循第一級RDTG 162之項7中之領域描述符指標來存取。具有局部RID = 3.3的子代領域之領域描述符藉由遵循樹之第一級中之項3及隨後樹之第二級中之項3來存取。類似地,具有局部RID = 1.2的子代領域之領域描述符藉由遵循第一層中之項1及第二層中之項2來存取。
在第13圖中,局部RID係以十進制形式例示,但第14圖示出此等可如何使用二進制識別符表示。二進制識別符可具有若干可變長度位元部分170且彼此位元部分中每一者可規定用以在RDT之對應級處使用的索引。在此實例中,二進制局部RID首先自最低有效末端向上填充,使得最低5個位元對應於樹之第一級中之項,接下來的4個位元對應於第二級中之項,等等。在此實例中,完整的局部RID對應於7.1.3,因為最低有效部分提供值7,下一最低有效位元部分提供值1,等等。
將要使用在可變長度位元部分170中每一者內的位元之數目可藉由使用在RMU 20逐步穿過領域描述符樹時遍歷的RDTE中之階數值決定。用於局部RID之第一位元部分的階數值可在上代領域之領域描述符內定義(與第一級RDTG指標一起)。在第14圖之實例中,例如,用於3個級的階數值分別為5、4及2,指示第一5個位元指示用於第1級的索引,接下來的4個位元指示用於第2級的索引,且接下來的2個位元指示用於RDT之第3級的索引。最終,到達RID (終止)標誌結束172,該RID (終止)標誌結束具有預定型樣,該預定型樣指示不存在樹之進一步階以遍歷,且因此自最末級RDTG中之指標存取的下一記憶體區域將提供用於所需要的子代領域的領域描述符。任何未使用的位元充滿零。儘管第14圖示出其中RID自最低有效末端向上充滿的實例,但藉由自二進制值之最高有效末端開始序連連接需要來逐步穿過樹的索引來構造RID將亦為可能的。
此方法提供用於允許不同數目的子代領域將由給定上代領域建立,且用於允許用於彼此等子代領域的領域描述符將經有效地存取的靈活基礎結構。因為領域識別符顯式地提供需要來逐步穿過領域描述符樹的索引,所以不需要維持將任意領域號對映至穿過樹之特別路線的對映表。當使用樹結構時,則與將提供一定固定數目的項的表結構相比,可藉由酌情增添額外RDTG或將額外RDTE增添至樹之給定級根據子代領域之數目所需要來延伸樹。因此,結構為可縮放的,用以不同軟體過程之需求。因為未提前精確地規定RID之哪些部分將對映至樹之給定級,則此使RID之可利用的位元能夠經靈活地分配以適應樹之不同深度/寬度。
當需要時,例如當進入或退出領域以便識別新領域之性質及決定至新領域之進入是否經容許時,或當判定執行某些RMU命令是否適當時,領域管理單元20可負責存取領域描述符樹。一般而言,領域管理電路系統可使用給定領域之領域識別符索引領域描述符樹,該領域識別符包含可變數目的可變長度位元部分,其中可變長度位元部分中之給定一者提供至領域描述符樹之給定級中之索引。此賦能領域描述符樹之靈活標度尺寸,以便支援用於不同軟體過程的各種要求以建立子代領域。
領域管理電路系統20可基於由領域描述符樹之先前級處的項索引規定的階數值,決定多少位元由可變長度位元部分包含來用於索引至領域描述符樹之給定級中。藉由將階數值儲存在樹之項內,則無需預先定義RID之哪些位元將用來對應至樹之給定級,且此提供進一步靈活性。
RMU可容許用於索引至領域描述符樹之相同級處之不同分支的可變長度位元部分具有不同數目的位元。亦即,儘管在第13圖中,層2中所示的RDTG 162中兩者具有相同階數值(且因此相同數目的項),但此並非必要的,且一些實施方式可具有在樹之相同級處之不同RDTG 162,該等不同RDTG具有不同數目的項。因此,各別領域之RID之對應部分可具有用於樹之相同級的不同數目的位元。因此,用於索引至樹之給定長度的位元部分之長度之變化不僅可因上代不同而變化,而且亦可在藉由一個上代管理的樹之不同分支內變化,從而以子代領域可經定義的方式提供進一步靈活性。
一般而言,用於給定領域的RID可包含將要在領域描述符樹之各別級處使用來存取用於給定領域的領域管理資料的索引之序連連接。儘管索引以與該等索引經使用於逐步穿過樹的順序相同的順序序列連接並非必要的,但此可為較佳的,因為此舉使樹存取之管理較簡單。序連連接自低至高或自高至低並不重要。索引之序連連接可繼之以預定終止型樣,該預定終止型樣可允許RMU 20決定何時不存在將要逐步穿過的樹之進一步級。
一些實施方式可將此RID構造技術應用於全域領域描述符樹,該全域領域描述符樹可以類似樹結構儲存用於系統內之所有領域的領域描述符(其中RID中每一者為全域唯一值)。然而,可藉由定義一個樹內的給定上代之子代領域及接著具有用於每一其他上代領域的分離樹以追蹤該上代領域之子代領域來使軟體開發較簡單。因此,領域描述符樹可為與用於儲存已由給定上代領域初始化的子代領域之領域管理資料的給定上代領域相關的局部領域描述符樹。領域識別符因此可為局部領域識別符,該局部領域識別符識別由給定上代領域使用的特別子代領域。由不同上代領域初始化的子代領域可經容許具有局部領域識別符之相同值。以此方式,上代領域可在不知道有何其他領域已由其他上代領域建立的情況下選擇哪些RID經使用於該上代領域之子代領域,其中用於子代領域的RID係取決於上代領域已組配該上代領域之領域描述符樹的方式構造。
局部領域識別符可由藉由軟體過程發佈的領域進入指令或RMU命令使用。然而,硬體基礎結構可使用給定子代領域之絕對識別來辨別由不同上代創建的領域。因此,除第13圖及第14圖中所示之局部領域識別符之外,給定領域亦可具有對於給定領域唯一的全域領域識別符(或「內部」領域識別符)。至少一個硬體結構可使用全域領域識別符(global realm identifier; GRID)而非局部領域識別符(local realm identifier; LRID)來識別給定領域。例如,領域區組表128及/或TLB 100可使用全域領域識別符來識別領域。
在一些實例中,任意二進制值可經分配為用於給定領域的GRID,該GRID可與由上代領域使用來涉及彼子代領域的LRID完全無關。相同領域架構之不同微架構實施方式可使用不同方法來分配GRID。
然而,在如第15圖中所示之一個實例中,用於給定領域的GRID可基於該給定領域之先代領域之LRID加以構造。此可為有用的,因為其可賦能給定領域為另一領域之後代或另一領域之先代之較簡單決定,該較簡單決定可對於藉由MMU 26及RMU 20的存取控制為有用的。詳言之,共享共同先代領域的領域可共享GRID之共同前綴或後綴部分。例如,用於子代領域的GRID可包含該子代領域之上代領域之GRID及彼子代領域之LRID之序連連接。例如,如第15圖中所示,若給定領域180具有某個局部領域識別符X,則該給定領域之子代領域182可各自具有藉由序連連接X與特定LRID形成的GRID,該等特別LRID係基於領域X之領域描述符樹中之索引形成。例如,具有LRID 1.2之子代領域可具有GRID X.1.2。類似地,具有LRID 7的領域X.1.2之孫代領域可具有GRID X.1.2.7。
在一些狀況下,在GRID中,LRID可經序連連接,包括第14圖中所示之終止標誌及填充零的位元。替代地,GRID之二進制表示可排除此類終止標誌及填充零的位元,且實情為LRID之含有RDT索引的有意義部分可經直接序連連接。因為LRID中每一者可取決於用於關聯上代領域的RDT之深度及寬度而自身具有可變數目的位元,則經分配給表示給定領域世代之局部RID的全域RID之位元之數目可為可變的。另外,其中全域RID之部分經分配給給定領域世代的此變化可基於正在運行的特別軟體在運行時間變化,但亦可在領域之「族樹」之不同分支之間變化,使得族樹之一個分支可使用相較於其他分支的領域識別符之較大部分。因為GRID之共同前綴或後綴對於共享共同先代的領域為相同的,所以任何後續世代仍可藉由特定於後續世代的剩餘部分辨別,而不管彼剩餘部分如何在進一步世代間劃分。
藉由將GRID構造為用於若干先代領域的LRID之序連連接,此賦能第一領域是否為第二領域之先代或後代之更生效決定。電路系統可經提供(例如在TLB 100或RMU 20內)以決定第一領域及第二領域中一者之全域RID是否匹配另一者之全域RID之前綴或後綴部分,例如藉由使用位元遮罩來遮掩對應於較遲世代的全域RID之部分,以便允許相同族內之較早領域及較遲領域之全域RID之間的比較將經匹配。
所有局部RID使用第13圖中所示之樹索引方法之序連連接加以構造並非必要的。在一些狀況下,局部RID之特別值經保留來用於涉及某些預設領域可為有用的。規定當前領域或當前領域之上代領域的RMU命令可為相對常見的。因此,預定RID值可經保留來用於涉及當前領域之上代領域。例如,所有位元經設定至1的LRID (指示1之值)可經保留來用於涉及當前領域之上代領域。類似地,預定領域識別符值可經保留來用於涉及當前領域自身。例如,0之LRID值可用來涉及當前領域。應注意,LRID中之RID終止標誌172之使用幫助支援將零之值用作用於當前領域的預定領域ID值,因為此舉意味即使子代領域描述符使用RDT之每一級中之RDTE 0加以識別,所得RID值仍不等於零,因為該所得RID值可包括此終止標誌172,該終止標誌可具有設定至1的至少一個位元。因此,除指示RID之結束之外,終止標誌172亦可支援其他功能。
RMU可支援可由給定領域觸發的某些查詢命令,以便查詢在該給定領域正建立其領域描述符樹時必須滿足的約束。例如,回應於查詢命令,RMU 20 (或處理電路系統32)可返回約束值,該約束值指示容許由給定領域定義的領域描述符樹160之最大數目的級、在用於給定領域的樹結構之給定級處容許的最大數目的樹項,及/或可藉由給定領域初始化的最大數目的子代領域中至少一者。例如,系統可包括暫存器,該等暫存器可指示諸如用於特別硬體實施方式的LRID或GRID中可利用的位元之數目的性質。RMU或處理電路系統可回應於查詢命令,核對可利用於領域識別符的位元之數目(或適當回應可經硬連線以用於特別處理器實施方式),且亦可核對規定識別符之多少位元已由全域領域識別符中之先代領域用完之資訊,以便決定多少位元為可利用的,剩餘來用於當前領域定義進一步子代。上代領域可使用對查詢命令之回應來判定如何構造該上代領域之RDT。
第16圖示出用於給定領域的領域描述符166之內容之實例。將瞭解,此僅為一個實例且其他實施方式可不包括所列表資訊中之全部,或其可包括額外資訊。在此實例中,領域描述符包括以下: • 領域之全域RID。因此,藉由基於局部RID遍歷領域描述符樹,對應的全域RID可經識別且此可用來由給定領域索引硬體結構諸如TLB,或核對所有權表或基於GRID定義的其他資訊。 • 給定領域之生命週期狀態,該生命週期狀態可由RMU 20用來決定是否接受由給定領域觸發的給定命令。 • 給定領域之類型。例如,領域類型可指示領域為完整領域或如稍後論述之次領域。 • 邊界異常級(boundary exception level; BEL)值,該界異常級值識別用於對應領域的邊界異常級。BEL指示領域經容許執行所在的最大特權級。例如,第12圖中之領域142可具有EL2之BEL,領域152可具有EL0之BEL,且領域154可具有EL1之BEL。藉由提供識別領域描述符中之BEL的顯式參數,此提供領域跨越多個異常級的靈活性,因為BEL可在異常之發生時用來決定異常是否可在當前領域內取得或是否需要至上代領域之領域退出以處置異常。 • 指示由領域及該領域之後代擁有的記憶體區域(領域保護區組或RPG)之總數的資源計數。此用來確保在彼等記憶體區域可分配給不同領域之前,使由領域及該領域之後代擁有的所有記憶體頁無效(及資料之最終抹除)。例如,資源計數可用來追蹤多少區域仍需要經洗滌。 • 用於領域的受保護位址之開始及結束位址。例如,受保護位址範圍可定義記憶體位址空間範圍,在該記憶體位址空間範圍內,頁可由對應領域擁有。此可對於保護免於收回先前在試圖存取子代領域資料中分配給子代領域的區域之所有權的惡意上代領域為有用的,因為藉由將在領域描述符中定義的受保護位址範圍與記憶體存取之後續位址比較,可識別先前由領域擁有的記憶體區域不再由該領域擁有的狀況。 • 藉由密碼電路系統104用來加密或解密與給定領域相關的資料的一或多個加密金鑰。在此實例中,提供兩個分離加密金鑰:用於加密/解密由領域擁有的內容及記憶體之記憶體金鑰及用於加密/解密如以上所論述的在記憶體16至持續儲存器6之間輸出/輸入的資料之分頁金鑰。然而,在其他實例中,相同金鑰可用於兩者目的,或進一步可經提供來用於其他特定目的。 • 領域描述樹項(realm description tree entry; RDTE),其識別領域描述符樹之根。領域描述符中之RDTE提供用於存取根RDTG (及定義多少位元將用作用於彼RDTG之索引的階數值)之指標。 • 指向用於保存或復原與領域之執行相關的架構狀態之主REC (領域執行情境)記憶體區域的指標。
第17圖示出給定領域可存在的生命週期狀態之集合,該等生命週期狀態在此實例中包括清潔狀態、新狀態、活動狀態及無效狀態。第17圖總結每一狀態之性質,針對每一狀態指示:對應狀態中的領域是否可使該領域之領域描述符166之參數由該領域之上代領域修改、針對彼領域規定的加密金鑰是否可經有效地使用、領域是否可擁有任何記憶體區域(RPG)及與彼領域相關的碼是否為可執行的。應注意,領域描述符之參數在清潔狀態中為可修改的,但在其他狀態中之任一者中不可修改。此防止惡意上代領域在給定領域已變得活動之後更新該給定領域之性質。另外,領域僅在活動狀態中為可執行的。
第18圖為示出領域之生命週期狀態之允許變遷的狀態機圖表。第18圖中所示之每一狀態變遷藉由向RMU 20發佈領域管理命令的上代領域觸發,該領域管理命令規定子代目標領域之局部RID (領域.無效命令212亦可藉由目標領域自身發佈)。當無先前領域已針對彼局部RID定義且領域描述符暫存器區組命令200藉由上代領域執行時,此觸發由上代領域擁有的給定記憶體區域之組態,因為用於子代領域之領域描述符具有規定的局部RID。用於子代領域之全域RID可基於上代領域之全域RID及在領域描述符暫存器區組命令200中規定的新局部RID之序連連接來設定。規定的子代領域隨後進入清潔狀態202。在清潔狀態中,上代領域可藉由更新子代領域之領域描述符之各種參數來設定子代領域之性質。此等性質可使用由上代領域發佈的進一步RMU命令加以修改(若規定的子代領域並非處於清潔狀態中,則此類領域描述符修改命令可經拒絕)。當上代領域已完成設定子代領域之領域描述符之參數時,該上代領域執行規定子代領域之LRID的領域初始化命令204且此觸發子代領域自清潔狀態202至新狀態206之變遷,且在此刻,領域描述符之參數不再可藉由上代領域修改。若規定的領域當前未處於清潔狀態中,則領域初始化命令204將失敗。
當領域處於新狀態206中時,規定彼領域之局部RID的領域活動命令208之執行觸發自新狀態206至活動狀態210的變遷,在該活動狀態中,領域現在為可執行的,且在此刻之後,至對應領域中的領域進入將不再觸發故障。領域現在為完全操作的。藉由處於清潔狀態202、新狀態206及活動狀態210中之任一者中的子代領域之上代領域觸發的後續領域無效命令212導致至無效狀態214之變遷。為離開無效狀態214且返回至清潔狀態202,上代領域必須執行領域洗滌命令216。若追蹤由領域擁有的頁之數目的資源計數具有除零之外的值,則領域洗滌命令216經拒絕。因此,為使領域洗滌命令216成功,上代領域首先必須針對由無效領域擁有的每個頁發佈區組.收回命令。區組.收回命令規定目標記憶體頁且觸發目標頁之無效以使頁為不可存取的,且亦使用於頁之擁有者領域的參考計數降低一。當執行區組.收回或領域洗滌命令216時,不必實際上覆寫無效區域中之資料,因為當清潔命令後續經發佈以使記憶體頁自無效變遷至有效時可進行覆寫(參見以下論述之第22圖)。另外,回應於領域洗滌命令,亦可使與無效領域相關的任何快取資料無效,例如在處理元件8、10、12 (不僅執行RMU命令的處理元件)中任一者之TLB 100或快取110內。全域RID可用來觸發快取資料之此類無效。
因此,藉由提供與給定領域識別符相關的領域之受管理生命週期,此確保在領域可返回至其中該領域之參數可經修改的清潔狀態之前(及因此在給定領域識別符可經再循環以用於由不同領域使用之前),與使用相同領域識別符的先前領域相關的資料必須自記憶體及任何快取洗滌,以防止與舊領域相關的任何資料藉由相同領域識別符之重新使用向其他領域洩漏。當領域處於清潔狀態202中時,該領域之領域描述符亦可藉由執行領域描述符釋放命令218取消,該領域描述符釋放命令使儲存在領域描述符中的記憶體區域能夠經分配來用於其他目的(在此刻,不需要洗滌,因為領域為清潔的)。
第19圖示出領域區組表128 (或所有權表)之項之內容的實例。每一項對應於記憶體位址空間之給定記憶體區域。給定記憶體區域之大小可為固定的或可變的,此取決於實施方式。所有權表128經結構化的特別方式可取決於實施方式要求而顯著變化,且因此用於給定項的對應記憶體區域經識別的特別方式可變化(例如資料可儲存在識別對應區域的每一項中,或替代地,對應項可至少部分地基於表自身內的對應所有權項之位置來加以識別)。另外,第19圖示出可針對給定記憶體區域規定的參數之特別實例,但其他實例可提供更多資訊或可省略所示之資訊類型中之一些。
如第19圖中所示,每一所有權表項可針對對應記憶體區域規定: • 識別用於彼記憶體區域之擁有者領域的全域RID。擁有者領域可為具有設定控制哪些其他領域經允許存取記憶體區域的屬性之權限的領域。 • 用來控制哪些RMU命令經允許在記憶體區域上進行的對應記憶體區域之生命週期狀態。 • 由MMU 26在記憶體區域變得由擁有者領域擁有時對映到的對映位址。對映位址可為虛擬位址或中間實體位址。藉由在所有權表中規定此位址,此可藉由在領域已取得給定記憶體區域之所有權之後重新對映位址轉譯表來防止超過藉由領域基礎結構提供的保全之可能試圖。 • 規定除擁有者之外的哪些領域可存取記憶體區域的可見性屬性。例如,如第20圖中所示,可見性屬性可規定控制當前領域之上代領域是否經允許存取區域的上代可見性位元,及可規定任何領域是否可存取對應記憶體區域的全域可見性位元。一般而言,領域保護方案可假設始終允許當前領域之後代領域存取由該當前領域之上代或先代領域擁有的記憶體區域(服從基於轉譯表120是否容許存取,該轉譯表基於特權級提供保護),但給定領域可控制該給定領域之上代或並非給定領域之直接後代的任何其他領域是否可存取記憶體區域。在一些實施例中,上代可見性位元及全域可見性位元兩者可藉由擁有者領域自身設定。替代地,雖然上代可見性位元可藉由擁有者領域設定,但全域可見性位元或許能夠藉由擁有者領域之上代領域設定(前提為,用於記憶體區域之上代可見性位元已經設定以給予彼記憶體區域之上代可見性)。將瞭解,此為擁有者領域可如何控制哪些其他過程可存取該擁有者領域之資料的僅一個實例。
第21圖為示出給定記憶體區域可存在的不同生命週期狀態的表,且第22圖為示出觸發各別生命週期狀態之間的變遷的命令的狀態機。以與第18圖中所示之領域生命週期狀態類似的方式,記憶體區域生命週期狀態之間的變遷經管理以確保自藉由一個領域之所有權傳遞至另一領域之所有權的記憶體區域必須首先經歷無效過程,其中彼區域中之資料經洗滌(例如設定至零)。因此,為自無效狀態220變遷至軟體可存取記憶體區域的有效狀態222,清潔命令224必須藉由RMU 20執行,藉由在處理元件8上執行的軟體觸發。清潔命令224識別特別記憶體區域(頁)且控制RMU以逐步穿過對應記憶體區域之記憶體位址以使彼記憶體區域內之每一位置中之資料無效/歸零。若目標記憶體區域處於除無效之外的任何狀態中,則清潔命令經拒絕(例如故障經觸發)。
在一些系統中,提供有效狀態222及無效狀態220作為僅有的記憶體區域生命週期狀態可為足夠的。然而,在第22圖之實例中,給定記憶體區域亦可經指定為「RMU-私有」記憶體區域,該「RMU-私有」記憶體區域經保留來用於藉由RMU 20自身之互斥存取,使得藉由在處理電路系統32上執行的軟體(除任何RMU軟體之外)觸發的對RMU-私有記憶體區域之存取將經拒絕。此可尤其對於儲存領域管理資料諸如如以上所論述之領域描述符、領域描述符樹項、領域執行情境及用於分頁之無資料為有用的。藉由提供用於將給定記憶體區域指定為經保留來用於藉由RMU之互斥存取的RMU-私有記憶體區域的屬性,此可防止包括記憶體區域自身之擁有者過程的軟體過程能夠存取否則可允許軟體過程超過由領域方案提供的保全保護的領域管理資料。
因此,清潔命令224可作為該清潔命令之參數中一者規定隱私指示,該隱私指示規定此為正常清潔命令或私有清潔命令。替代地,兩個完全分離的命令可經提供來用於此等目的。當清潔命令為正常清潔命令時,此觸發至有效狀態222之變遷,如以上所論述。然而,當清潔命令為私有清潔命令224時,此觸發至RMU清潔狀態226之變遷,其中記憶體區域經指定為RMU-私有記憶體區域。在一些實例中,所有類型的RMU資料可儲存在對應於RMU清潔狀態的單個類型的RMU-私有記憶體區域內。
然而,強健性可藉由指定各自對應於特別形式的領域管理資料的多個類型的RMU-私有記憶體區域來改良。例如,在第21圖及第22圖中,定義各自對應於RMU私有區域的若干RMU註冊狀態228,該等RMU私有區域經指定來用於特別目的。在此實例中,RMU註冊狀態228包括RMU註冊RDT (用於儲存領域描述符樹之RDTG)、RMU註冊RD (用於儲存領域描述符)、RMU註冊REC (用於儲存領域執行情境資料)及RMU註冊MDT (用於儲存在如以上所論述之輸出/輸入操作期間使用的分頁元資料)。不同形式的註冊命令230可藉由用於RMU清潔狀態中之記憶體區域之RMU執行,以將記憶體區域變遷至RMU註冊狀態228中之對應的一者。用於將資料儲存至並不對應於規定目的(RDT、RD、REC或MDT)的RMU-私有記憶體區域之命令可經拒絕。因此,在RMU註冊狀態之第一生命週期狀態中,用於儲存第一類型的領域管理資料之第一類型的RMU命令可經允許,且在第二生命週期狀態中,用於儲存第二類型的領域管理資料之第二類型的RMU命令可經允許,其中當目標記憶體區域處於第二生命週期狀態中時,第一RMU命令經拒絕,且當目標記憶體區域處於第一生命週期狀態中時,第二RMU命令經拒絕。此可藉由避免惡意上代領域致能進一步保全,該惡意上代領域例如試圖將領域描述符項儲存至領域執行情境區域或反之亦然,以便試圖使子代領域之操作分裂。自RMU註冊狀態228中每一者,對應形式的釋放命令232可使對應記憶體區域返回至無效狀態220。在區域可經重新分配來用於通用資料之前,進一步清潔命令可觸發自先前定義的RMU-私有區域的資料之洗滌。
因此,總之,可定義至少一個RMU-私有記憶體區域,該至少一個RMU-私有記憶體區域仍由給定擁有者領域擁有,但具有在所有權表中規定的屬性,該屬性意味該至少一個RMU-私有記憶體區域經保留來用於藉由RMU之互斥存取。在此實例中,控制RMU-私有狀態的屬性為在所有權表中之對應項中規定的生命週期狀態,但該屬性亦可以其他方式加以識別。當給定記憶體區域藉由至少一個狀態屬性規定為RMU私有記憶體區域時,MMU可防止藉由一或多個軟體過程對給定記憶體區域之存取。因此,並非由RMU自身觸發的任何軟體觸發存取在該軟體觸發存取以RMU-私有記憶體區域為目標時可經拒絕。此包括防止藉由擁有者領域自身對RMU-私有記憶體區域之存取。
技術者可詢問,若擁有者領域甚至不能存取記憶體區域中之資料,則為何定義用於RMU-私有記憶體區域之擁有者領域為有用的。例如,用於增強僅藉由RMU對資料之存取的替代性方法將定義用於RMU之特殊領域,且分配記憶體位址空間之頁以用於儲存將對於彼特殊RMU擁有者領域保持私有的資料。然而,發明人認識到,當使領域無效時,可存在使與彼領域相關的全部控制資料無效的要求,且若此控制資料與特殊RMU擁有者領域而非無效領域相關,則此可使無效領域之資料之洗滌更複雜。
相反,藉由使用RMU-私有屬性,儲存用於給定領域之控制資料的記憶體區域仍由彼領域擁有,即使擁有者不能存取該控制資料,此意味當彼擁有者領域經取消時,識別哪些記憶體區域需要經無效為較簡單的。當使給定領域無效時,上代領域可簡單地進行收回操作之序列(例如藉由執行隨後由RMU作用的收回命令),該收回操作之序列觸發由規定的無效領域(或該規定的無效領域之後代)擁有的記憶體區域以使無效,且使不可存取,且返回至觸發收回命令的上代領域之所有權。收回操作可不僅影響無領域可存取的頁而且亦包括由無效領域擁有的RMU-私有記憶體區域。
將用於領域之控制資料儲存在由彼領域擁有的RMU-私有記憶體區域中之另一優點係在進行輸出操作時。為將領域之記憶體覆蓋區降低至零,在輸出操作期間,除正常記憶體之外,與彼領域相關的管理結構可經輸出。要求彼等結構由領域擁有簡化了此輸出操作之管理。
一般而言,任何種類的領域管理資料可儲存在RMU-私有區域中,但詳言之,領域管理資料可包括以下任一者:定義給定領域之性質的領域描述符、識別儲存用於給定領域之領域描述符的記憶體區域的領域描述符樹項或進一步領域描述符樹項、指示與給定領域內之執行之至少一個執行緒相關的架構狀態的領域執行情境資料,及在與給定領域相關的預定操作之中間點處使用的暫時工作資料。
儘管通常RMU私有區域可用於儲存與給定領域相關的特定領域控制資料,但亦可使用該等RMU私有區域以便增加圍繞一旦領域為活動時進行的某些其他操作的保全。例如,當進行資料經加密或解密的以上所論述之分頁輸出或輸入操作,且使用元資料的核對經進行以核對當資料再次經輸入時資料仍為有效的時,此類操作可花費許多循環且此類長期運行操作更可能在中途中斷。為避免需要再次重新開始操作,可為合意的是甚至在中斷時允許元資料或與此類長期運行操作相關的其他暫時工作資料保持在快取/記憶體內,而不使此資料為其他過程(包括擁有者領域自身)可存取的。藉由將記憶體系統之區域暫時地指定為RMU-私有區域,可保護此暫時工作資料。因此,如第21圖中所示,頁狀態亦可包括在此暫時工作資料經儲存至記憶體區域時可使用的RMUExporting及RMUImporting狀態,且當此等狀態中一者經選擇時,則僅RMU可存取彼資料。
可受益於將對應記憶體區域暫時地指定為RMU私有的操作之其他實例可包括:在由給定領域擁有的至少一個記憶體區域與由除給定領域之外的領域擁有的至少一個記憶體區域之間的資料傳遞期間的加密或解密資料之產生或驗證;記憶體區域之所有權至另一領域之傳遞;以及進行來使儲存在無效記憶體區域中的資料不可存取的破壞性收回操作。例如,用於洗滌位址空間之給定頁之全部內容的收回操作可在中途中斷,且因此確保其他過程不能存取彼頁,直至洗滌完成為止,頁可暫時地經指定為RMU-私有的。一般而言,由RMU進行的任何長潛時操作可受益於藉由在開始長期運行操作之前將一些記憶體區域之生命週期狀態轉換至RMU-私有狀態且接著在長期運行操作完成時再將該生命週期狀態轉換回來而使該長潛時操作之暫時工作資料受保護。
當區域經指定為RMU私有的時,該區域經保留來用於藉由RMU 20之存取,該RMU用來進行領域管理操作。領域管理操作可包括以下中至少一者:創建新領域;更新現有領域之性質;使領域無效;分配記憶體區域以用於藉由給定領域之所有權;改變用於給定記憶體區域之擁有者領域;改變給定記憶體區域之狀態;更新用於回應於由用於給定記憶體區域的擁有者領域觸發的命令而控制對給定記憶體區域之存取的存取控制資訊;在一或多個軟體過程之處理期間管理領域之間的變遷;管理與給定領域相關的資料在由給定領域擁有的記憶體區域與由相比於給定領域的不同領域擁有的記憶體區域之間的傳遞;以及與給定領域相關的資料之加密或解密。RMU可為用以進行領域管理操作之至少一部分的硬體單元,或可包含執行領域管理軟體以進行領域管理操作之至少一部分的處理電路系統32,或可為兩者之組合。
第22圖示出可藉由給定領域觸發以清潔給定頁,因此該給定頁可經有效存取,或使對應頁無效的狀態變遷。第23圖擴展此狀況以示出可用來將給定頁之所有權傳遞自一個領域傳遞至另一個的進一步命令。若彼記憶體區域當前處於無效狀態220中且由上代領域擁有,則藉由上代領域的區域主張命令230之執行使對應記憶體區域能夠經傳遞至規定子代領域。當目標記憶體區域由除給定子代領域之上代領域之外的任何領域擁有時,或若記憶體區域為有效的或處於RMU-私有生命週期狀態226、228中之一者中,則區域主張命令230經拒絕。此防止上代領域任意地指派該上代領域自身不可存取或處於由RMU 20使用中的頁之所有權。一旦頁已經指派給子代領域,隨後彼子代領域可進行清潔命令以便以與第22圖中所示之相同方式變遷至有效狀態222。出於簡潔性,RMU-私有區域之使用在第23圖中未示出,但在任何給定領域內,私有清潔命令替代地可將記憶體區域變遷至RMU清潔狀態226,如先前所論述。
區組主張命令230用來將所有權傳遞至已經建立的子代領域。另外,上代領域可執行區組添加命令232,該區組添加命令觸發RMU 20以將所有權指派給處於新狀態中的新子代領域,使得上代領域可將資料寫入至指派給子代的區域。例如,此可用於安裝新子代領域之程式碼,使得子代領域可第一次執行。因此,就對應記憶體區域經分配給子代領域的生命週期狀態而言,添加命令232不同於主張命令230。只有在子代領域處於第18圖中所示之新狀態206中時,添加命令232可經允許。子代領域可藉由執行觸發RMU以更新所有權表128之對應項的區組釋放命令234以及更新諸如子代領域之領域描述符中之資源計數等的性質,將給定記憶體區域之所有權釋放回至該子代領域之上代。若規定記憶體區域並非由發佈命令的當前領域擁有,或若區域處於除無效之外的狀態中,則區組釋放命令234可經拒絕(確保在資料可返回至藉由上代領域之所有權之前需要該資料之破壞性清潔)。
使用上代領域初始化子代領域的以上所論述之階層式領域結構之一個優點在於,此大大地簡化領域及該領域之後代之無效。相對常見的是,若給定虛擬機領域將無效,則亦可為合意的是使用於在彼虛擬機下運行的任何應用程式之領域無效。然而,可存在與將無效的過程中每一者相關的大量程式碼、資料及其他控制資訊。可為合意的是確保此類無效以原子方式發生,使得當資料洗滌之僅部分已經實現時,不可能繼續存取與無效領域相關的資料。若每一領域係完全獨立於其他領域而建立,而無如以上所論述之領域階層,則此可使此類原子無效為困難的,因為必須提供若干分離命令來單獨地使藉由對應領域ID識別的每一領域無效。
相反,藉由提供其中RMU管理領域使得除根領域之外的每一領域為回應於藉由上代領域觸發的命令而初始化的子代領域的領域階層,則當請求目標領域之無效的命令經接收時,RMU 20可用較有效的操作使目標領域及目標領域之任何後代領域為處理電路系統不可存取的。
詳言之,回應於目標領域之無效,RMU可更新與目標領域相關的領域管理資料(例如領域描述符)以指示目標領域為無效的,但不需要更新與目標領域之任何後代領域相關的任何領域管理資料與後代領域相關的領域管理資料可保持未改變。此係因為即使領域管理資料尚未改變,簡單地使目標領域無效亦可使任何後代領域不可有效地存取,因為對給定領域之存取由該給定領域之上代控制且因此若使上代領域無效,則此意味亦不可能存取上代領域之後代。因為領域中每一者係使用領域進入指令(以下所論述之ERET指令)進入,該領域進入指令使用藉由上代領域定義來識別該上代領域之特別子代的局部RID,且此用來逐步穿過儲存在由給定子代領域之上代領域擁有的記憶體區域中的領域描述符,因而除上代領域之外無過程可觸發RMU以存取子代領域之領域管理資料。因此,若使上代領域無效,則RMU不能存取給定子代領域之領域管理資料,從而確保給定子代領域變得不可存取。
在已使領域無效之後,彼領域之上代領域可觸發RMU以進行用於收回由無效目標領域擁有的每一記憶體區域之收回操作。例如,如第23圖中所示,用於由子代領域擁有的記憶體區域之收回命令236可觸發記憶體區域至無效狀態220之返回且亦將記憶體區域之所有權傳遞回至上代領域。然而,此收回操作可在其他領域之持續處理之背景中進行且不需要立即進行以便允許將使無效領域之任何後代領域為不可存取的。用來將給定領域之領域狀態自如第18圖中所示的活動改變至無效的單個動作足以確保與彼無效領域之任何後代領域相關的所有資料亦為不可存取的。因為任何上代領域僅可將該上代領域擁有的頁指派給該上代領域之子代,且子代僅可將該子代擁有的頁指派給孫代領域,所以此亦意味追蹤哪些頁需要經無效且在給定領域之無效時經收回為相對直接的,因為在無效領域之領域描述符中定義的受保護位址範圍(參見第16圖)可用來識別哪些頁將收回,因為無效領域之任何進一步後代領域將亦擁有彼範圍內的頁。
因此,總之,使用領域階層大大地化簡領域及無效之管理。在此類無效,以及覆寫記憶體中之資料時,無效亦可觸發用於目標領域及目標領域之任何後代領域之快取領域管理資料之無效,該快取領域管理資料不僅保持在觸發無效的處理元件8中,而且亦保持在諸如另一CPU或GPU的其他處理元件中。因此,可存在無效至其他處理元件的廣播,以確保其他處理元件不繼續具有對無效領域之存取。當觸發此類無效時,可為有用的是快取領域管理資料將與唯一地識別對應領域的全域領域識別符相關,且形成如以上所論述之全域領域識別符,使得給定子代領域之全域RID與該給定子代領域之上代領域之全域RID共享共同前綴部分。此使位元遮罩或其他類似操作能夠用來迅速地比較給定領域是否為規定領域ID之後代。若藉由先代領域之無效使給定領域為不可存取的,則進入規定目標領域的試圖為不可能的(因為不存在上代領域來執行用於彼領域之ERET指令),但甚至在使用不同領域進入機構的其他實施方式中,若後代領域之領域描述符不再可定位,則領域進入可失敗且觸發故障條件。
第24圖示出藉由MMU 26及RMU 20進行來用於決定是否容許給定記憶體存取的核對之實例。MMU 26支援位址轉譯之兩個級段,在藉由給定客作業系統設定的級段1頁表120-1之控制下將虛擬位址(virtual address; VA)轉譯至中間實體位址(intermediate physical address; IPA)的級段1,及基於藉由超管理器38設定的級段2頁表120-2將藉由級段1轉譯提供的中間實體位址轉譯成用來存取記憶體16的實體位址(physical address; PA)的級段2位址轉譯。超管理器可定義用於不同虛擬機之級段2頁表之多個集合,且經提供記憶體存取請求的虛擬機ID (virtual machine ID; VMID) 250可識別使用哪些特別級段2頁表。類似地,作業系統可定義用於不同應用程式之級段1頁表之多個集合,且位址空間識別符(address space identifier; ASID) 252可用來識別使用哪些級段1頁表。VMID 250及ASID 252可共同地稱為轉譯情境識別符254,該轉譯情境識別符識別與記憶體存取請求相關的當前轉譯情境。記憶體存取請求亦規定各種屬性256,諸如指示交易為讀取(R)或寫入(W)請求,或指示與發佈記憶體存取請求的過程相關的異常級(X)的屬性。
在接收記憶體存取時,MMU 26可基於來自級段1頁表之資訊決定交易屬性是否有效。例如,級段1頁表可規定可對於某些位址僅允許讀取交易,或可容許對給定位址的讀取及寫入存取兩者(一些實施方式可亦容許僅寫入將要定義的位址空間之區域)。另外,級段1頁表中之屬性可將存取限制於在給定異常級或更高處操作的過程。若交易屬性為有效的且存取由級段1頁表容許,則MMU可返回對應的中間實體位址(intermediate physical address; IPA)。IPA與VMID 250一起隨後索引至級段2頁表中,該等級段2頁表再次驗證交易之屬性,且若有效,則返回實體位址。應注意,並非所有交易需要經歷位址轉譯之兩個級段。例如,若輸入記憶體交易係在EL3或EL2處,或在保全域中之EL1或EL0處發佈,則級段1 MMU之輸出可經視為實體位址且級段2 MMU可經繞過。
已獲得實體位址,實體位址隨後可在RMU表128 (領域區組表)中經查找,以決定由MMU增強的領域保護是否允許記憶體存取進行。以下在第26圖中更詳細地論述領域核對。若級段3處之核對成功,則輸出已確認實體位址且允許記憶體存取進行。若級段1或級段2位址轉譯處之核對或在級段3處提供的RMU增強的領域保護中任一者失敗,則拒絕記憶體存取。因此,除基於頁表120的任何現有位址轉譯核對之外,藉由領域管理單元提供的保護可經視為將要進行的核對之額外層。第24圖中所示之核對可相對緩慢地進行,因為在記憶體中可存在若干表,該等表需要經存取且與記憶體存取請求之參數或當前轉譯情境或領域比較,存取係自該當前轉譯情境或領域做出。雖然將可能對每個記憶體存取進行此等核對,但當已針對給定記憶體存取請求成功地進行核對時,可更快速地快取TLB 100內之資料,使得下一次發佈類似記憶體存取請求時,則可在不再次重複所有核對的情況下允許該類似記憶體存取請求。因此,可為合意的是僅在TLB 100中存在未中,且並非對於命中進行此等許可核對。
第25圖示出用於快取關於已驗證記憶體存取之資料的TLB結構100之實例。雖然第25圖示出單個TLB,但將瞭解,一些系統可包括快取階層中之TLB之多個級,其中第1級TLB儲存用於較快速存取之轉譯項之較小子集,且第2級或進一步級的TLB儲存在第1級TLB中存在未中的情況下可存取的轉譯項之較大集合。TLB 100 (或「轉譯快取」)具有若干項260,每一項規定用於對應記憶體區域之位址轉譯資料。每一項260包括虛擬定址標籤262,該虛擬定址標籤對應於虛擬位址,資料提供用於該虛擬位址的對應實體位址264。在此實例中,TLB為組合級段1及級段2 TLB,使得虛擬位址可使用TLB直接轉譯至實體位址而不必經由中間實體位址進行(儘管將對TLB未中進行對應的級段1及級段2轉譯以便定位正確的實體位址,但TLB不需要儲存介入IPA且可將VA直接對映至OA)。其他實例可使用分裂的級段1 (S1)及級段2 (S2) TLB,在該狀況下,VA-PA對262、264可用VA-IPA對或IPA-PA對替換。TLB項260亦用轉譯情境識別符254 (由ASID 252及VMID 250形成)加標籤。儘管此實例提供兩個分離轉譯情境識別符,但在其他實例中,可使用單個統一轉譯情境識別符,或在分裂S1/S2 TLB之狀況下,S1 TLB可使用ASID且S2 TLB可使用VMID。轉譯情境識別符允許規定相同虛擬位址的不同作業系統或應用程式使該等不同作業系統或應用程式之存取對映至提供不同實體位址的TLB 100之不同項上。
TLB 100中之命中不僅需要標籤262匹配針對記憶體存取請求規定的位址258之對應部分,而且儲存在相同項中的轉譯情境識別符亦應匹配當前轉譯情境,記憶體存取係自該當前轉譯情境發佈。可預期,標籤262及轉譯情境識別符254之比較可足以定位用於給定記憶體存取之正確實體位址264。然而,若此等為在查找中進行的僅有比較,則若TLB中之記憶體存取命中係在無領域管理單元表128之進一步核對的情況下接受,則存在潛在保全弱點。此係因為有可能創建新過程,該新過程具有與先前執行的過程相同的VMID 250或ASID 252,以誘使MMU接受記憶體存取,該記憶體存取實際上來自相比於先前針對存取給定記憶體區域接受的一個領域的不同領域。
為解決此問題,TLB 100可在每一TLB項260內規定擁有對應記憶體區域的擁有者領域之全域RID 270,以及藉由擁有者領域設定來用於控制允許哪些其他領域存取對應記憶體區域的可見性屬性272。當轉譯快取100之給定查找回應於自當前轉譯情境及當前領域發由的對給定目標記憶體區域之記憶體存取而進行時,若在轉譯快取100中存在未中,則TLB控制電路系統280可觸發表漫步單元102以存取關聯頁表120及RMU表128以便核對是否允許存取。若頁表或RMU表128自存取對應記憶體區域排除轉譯情境、異常級及領域之當前組合,則無資料回應於彼記憶體存取而經分配給轉譯快取。詳言之,當查找未中且當前領域藉由目標記憶體區域之擁有者領域自存取目標記憶體區域排除時,隨後位址轉譯資料至轉譯快取之分配經防止。因此,當對應記憶體存取通過MMU頁表120及RMU表128兩者之核對時,項經分配給TLB 100。
隨後,當查找轉譯快取以核對該轉譯快取是否已包括提供用於給定位址之位址轉譯的項260時,TLB控制電路系統280依賴於對應項260中規定的轉譯情境識別符254與連同記憶體存取請求一起接收的用於當前轉譯情境之轉譯情境識別符254之間的第一比較,以及藉由彼項260規定的全域RID 270與當前全域RID之間的第二比較,決定記憶體存取是否匹配轉譯快取100之給定項,該當前全域RID與發佈記憶體存取請求的當前領域相關。藉由提供TLB項仍然正自先前驗證為允許存取記憶體區域的領域存取的額外核對,此確保即使惡意監督過程重新產生具有與由擁有者領域容許存取資料的先前存在過程相同的ASID 252或VMID 250之另一過程,因為全域領域識別符270在不經歷如關於第18圖所論述之領域洗滌命令216的情況下不可重新分配給其他處理器,所以此意味當前領域之全域RID可經信賴為有效的且不可為「假的」,如對於ASID或VMID為可能的。因此,若當前領域之全域RID仍滿足藉由擁有者GRID 270及可見性屬性272指示的許可,則此指示先前進行的領域表核對為仍然有效的。
若領域識別符之第二比較偵測失配,則即使標籤比較及轉譯情境比較匹配,存取請求亦經視為在TLB中未中,因為其指示在轉譯情境ID 254與領域ID 270之間的對映中存在變化,因為項經分配。此未必暗示存取將經拒絕,因為頁表及RMU表之另一漫步可藉由表漫步單元102觸發,且若領域核對為成功的,則此可導致TLB 100中之不同項260之分配及基於來自新分配項之資訊的記憶體存取之服務。
第26圖為例示決定給定記憶體存取是否由MMU 26容許之方法的流程圖。在步驟300處,記憶體存取請求經接收且在TLB 100中查找此記憶體存取請求。記憶體存取請求規定將要存取的至少一虛擬位址、指示當前轉譯情境的一或多個轉譯情境識別符及識別當前領域的全域領域識別符。例如,全域RID可係自處理元件8之狀態暫存器讀取,該狀態暫存器可在進入領域時以當前領域之全域RID寫入。
回應於記憶體存取請求,TLB控制電路系統280進行TLB之查找。查找存取TLB之至少一些項。一些方法可使用全相聯快取結構,且在此狀況下,至少第1級TLB之所有項可經搜尋且與當前請求之參數比較,以便識別是否存在命中或未中。其他方法可使用集合相聯快取分配策略,且在此狀況下,僅TLB之給定級之項之子集可需要經查找,使用記憶體存取之目標位址索引。對於項之存取集合中每一者,TLB控制電路系統280進行若干比較(平行地或順序地),包括: • 用於比較記憶體存取請求之位址是否匹配儲存於存取項中的標籤262之標籤比較302; • 用於比較儲存在存取項中的轉譯情境識別符與記憶體存取請求之轉譯情境識別符之第一(情境)比較304;以及 • 用於比較記憶體存取請求之全域RID與擁有者RID 270及用於項之存取集合中每一者之可見性屬性272之第二(領域)比較306。
在步驟308處,控制電路系統280決定在TLB中是否存在針對全部比較302、304、306返回匹配的項,且若如此,則命中經識別,且在步驟310處,返回在匹配項中規定的實體位址264且允許記憶體存取基於彼實體位址來進行。在命中之狀況下,不需要進行頁表或RMU表之任何查找(用於記憶體存取之所有權表查找可經省略)。藉由頁表及RMU表提供的保護僅在未中時經調用。
若不存在匹配比較302、304、306中之所有三個的項,則未中經偵測。若進一步TLB級經提供,則可在第2級或後續級TLB中進行對應查找步驟300-308。若查找在末級TLB中未中,則進行各種頁表及RMU表之漫步。因此,在步驟311處進行級段1頁表漫步,且在步驟312處決定級段1頁表故障是否已發生(例如因為不存在針對規定虛擬位址定義的位址對映或因為存取請求之當前參數256違反針對目標虛擬位址規定的存取許可)。若級段1故障發生,則在步驟314處,拒絕記憶體存取且防止作為對記憶體存取之回應的位址對映資料至TLB 100之分配。
另一方面,若存取請求通過級段1頁表核對,則在步驟315處,級段2頁表漫步經觸發以獲得用於藉由級段1過程返回的中間實體位址之對映資料,且在步驟316處,決定級段2頁表故障是否已發生(再次,因為位址對映未定義或因為存取未藉由級段2存取許可容許)。若級段2故障發生,則再次在步驟314處拒絕存取請求。
若無級段2故障發生,則在步驟318處,基於藉由級段2返回的實體位址觸發RMU表查找,且在步驟320處,決定領域故障是否已經偵測。若以下事件中任一者發生,則領域故障可經觸發: • 若用於對應記憶體區域之生命週期狀態在領域所有權表128中經指示為無效的。此確保尚未經歷第22圖中所示之清潔操作224的記憶體位址空間之頁不可存取,以保護先前由另一領域儲存於彼記憶體區域中的任何資料免於由不同領域存取。 • 當前領域未由用於對應記憶體區域之擁有者領域容許以存取彼記憶體區域。可存在給定領域為何可未經允許以存取給定記憶體區域的若干原因。若擁有者領域已規定記憶體區域僅對於擁有者自身及該擁有者之後代為可見的,則另一領域可未經允許以存取彼領域。另外,若當前領域為擁有者領域之上代領域且擁有者領域尚未定義上代可見性屬性以容許上代存取區域,則記憶體存取可經拒絕。另外,若記憶體區域當前經設定為如以上所論述之RMU-私有的,則擁有者領域自身可經防止以免存取彼記憶體區域。在RMU核對級段,擁有者領域之後代領域可經容許以存取記憶體區域(只要記憶體區域並非RMU-私有區域)。因此,此核對增強藉由擁有者領域設定的存取許可。 • 若實體位址藉由S1/S2轉譯針對當前記憶體存取對映的虛擬位址或中間實體位址不匹配在如第19圖中所示的用於對應記憶體區域之所有權表128中規定的對映位址,則記憶體存取經拒絕。此保護免於以下情形:惡意上代領域可將給定記憶體區域之所有權分配給子代領域,但接著改變頁表120中之轉譯對映,使得藉由子代領域使用該子代領域先前用來涉及由彼子代領域擁有的頁的相同虛擬位址觸發的後續記憶體存取現在對映至實際上並非由子代領域自身擁有的不同實體位址。藉由在所有權表中提供自對應記憶體區域之實體位址回至在所有權經主張時用來產生彼實體位址的對映位址的反向對映,此允許藉由位址對映之變化引起的保全破壞經偵測,使得記憶體存取將失敗。
將瞭解,亦可進行其他類型的核對。若領域核對為成功的,則在步驟322處返回實體位址,記憶體存取經允許使用實體位址進行,且新項經分配給TLB,該新項指示自頁表120獲得的實體位址及對應於所請求虛擬位址及轉譯情境的自所有權表128獲得的擁有者領域及可見性屬性。
因此,總之,藉由需要第二比較(比較當前領域之GRID與在轉譯快取之項中提供的GRID)匹配以便允許命中在轉譯快取查找中經偵測,此確保即使在TLB項已經分配之後,在與給定領域相關的轉譯情境識別符中存在變化,此不可用來超過領域保護,即使領域核對未在TLB命中時再次重複。此使效能能夠經改良,因為藉由使得不必在每個記憶體存取時重複領域核對(考慮到將要進行的核對之數目,此舉將為相對處理器密集的)。此允許大多數記憶體存取較快地進行,因為命中比未中常見得多。當第二比較識別彼項中規定的領域識別符與當前領域之領域識別符之間的失配時,記憶體存取與轉譯快取之給定項之間的失配經偵測。此隨後將觸發未中且此可觸發頁表及RMU表漫步,以便找到正確的存取控制資料(其中在VMID/ASID已改變的狀況下重複領域核對)。
此方法係保全的,因為RMU可防止具有與先前活動領域相同領域識別符的新領域之初始化,直至已進行使與先前活動領域有關的資訊無效的洗滌過程之後。此洗滌過程可不僅包括領域管理資料及儲存在記憶體中的與無效領域相關的任何資料之無效,而且可亦包括轉譯快取之至少一個項之無效,對於該至少一個項,第二比較識別彼項之領域識別符與無效領域之領域識別符之間的匹配。因此,此意味使用與先前過程相同的領域識別符重新產生不同過程並非可能的,除非已使與彼領域相關的轉譯快取100中之所有資料無效。因此,匹配TLB中之領域識別符可信賴以指示先前進行的領域核對為仍然有效的。詳言之,每一領域可與如以上所論述之生命週期狀態相關且此可用來強調洗滌過程經進行。當用於當前領域之當前生命週期狀態為活動時,位址轉譯資料可僅能夠經分配給轉譯快取。用於以給定領域識別符初始化新領域的命令可在除清潔狀態之外的任何狀態中經拒絕,且自活動狀態至清潔狀態之變遷可需要預定命令序列經執行,該預定命令序列包括用於觸發洗滌過程之至少一個命令。
轉譯快取中之未中可觸發所有權表查找,該所有權表查找存取所有權表,該所有權表針對若干記憶體區域中每一者規定用於對應記憶體區域之擁有者領域及藉由擁有者領域設定來用於控制允許哪些其他領域存取記憶體區域的存取約束。藉由包括用於決定TLB命中之額外第二比較,此使所有權表查找能夠在查找命中時經省略。在TLB未中時進行所有權表查找。
雖然第25圖示出其中擁有者領域之GRID儲存在每一TLB項中的方法,但亦可存在表示致能當前領域之GRID是否適合於存取對應記憶體區域之決定的資訊之其他方式。例如,授權領域之GRID之列表可維持在TLB中,或TLB可維持具有含有至活動領域列表中之索引的TLB項之活動領域之分離列表,而非完全GRID,此舉與將列表儲存於TLB項中相比可降低TLB項大小。然而,簡單地表示擁有者領域之GRID可為用以識別授權領域的較有效方式,因為該方式藉由在諮詢活動領域列表中避免額外間接級而使分配及核對TLB項之過程不太複雜,且亦避免需要在TLB之間使活動領域列表中之變化同步。
應注意,在查找TLB時進行的第二(GRID)比較中之匹配未必需要當前領域識別符與兩者對應TLB項260中規定的全域領域識別符270完全相同——一些形式的第二比較可使用部分匹配。一些實施方式可僅容許擁有者領域存取該擁有者領域擁有的頁,且因此在此狀況下,可需要當前GRID與擁有者GRID 270之間的精確匹配。然而,因為資料將在領域之間共享可為有用的,所以可見性屬性272亦可經提供來允許擁有者領域定義何存取由其他領域容許。
因此,藉由快取TLB 100中之可見性屬性272以及擁有者領域全域RID 270,此使TLB控制電路系統280能夠變化對於第二比較需要來基於可見性屬性決定匹配的匹配程度。例如,可見性屬性272可控制GRID的哪些部分應在進行比較時經遮罩,使得若彼等經遮罩位元失配亦無關緊要,因為該等經遮罩位元不影響比較之整體匹配。例如,當當前領域指示除擁有者領域或擁有者領域之後代領域之外的領域時,控制電路系統可在一些狀況下決定失配。後代領域可使用以上所論述之全域RID格式容易地識別,因為該等後代領域將具有匹配擁有者領域之GRID的前綴或後綴部分。
對於可見性屬性之至少一個值,當當前領域為除擁有者領域、擁有者領域之後代領域或擁有者領域之上代領域之外的領域時(例如當上代可見性如以上所論述經設定時),控制電路系統可決定失配。在一些狀況下,可見性屬性之至少一個值可允許控制電路系統280決定用於第二比較之匹配,而不管哪個領域為當前領域(例如若全域可見性位元經設定)。因此,雖然一般而言基於領域識別符之第二比較不需要通過,但確切而言何要求將由當前領域之GRID滿足可取決於可見性位元272。藉由構造包括對應於初始化子代領域的上代領域之領域識別符的位元部分的子代領域之領域識別符,此使此類部分匹配能夠有效地進行。在支援全域領域識別符之不同可變長度位元部分至領域之不同世代之可變分配的實施方式中,TLB項260亦可規定識別不同局部RID之間的邊界之位置的一些資訊,該等不同局部RID經序連連接以形成GRID (以便允許上代領域區別於祖父母或更早先代領域)。此可使TLB控制電路系統280能夠決定領域識別符之哪些部分將經遮罩。對於其他實施方式,此可並非必要的(例如若任何先代經容許以存取記憶體區域,針對該記憶體區域,擁有者領域已將可見性給予該擁有者領域之上代領域)。另外,一些實施方式可具有與每一全域領域識別符之固定對映,該全域領域識別符具有固定數目的位元(諸如32-位元),且在此狀況下,可不必提供任何額外邊界定義資料。
第27圖為示出在不同異常級處的處理元件8可存取的架構狀態之實例的範恩圖。第27圖示出基於由Cambridge, UK之ARM® Limited提供的ARM®架構的實例,但其他實施方式可基於其他架構,該等其他架構可具有與給定過程相關的不同狀態。另外,第27圖僅示出出於簡潔性用作實例的在每一異常級處可存取的狀態之子集,但將瞭解,其他暫存器亦可為可存取的,該等其他暫存器在第27圖中未示出。
當在異常級EL0處操作時,處理元件8可以存取標記為350的架構狀態之子集,例如包括以下: • 用於在資料處理操作期間儲存通用資料值的通用暫存器,包括整數暫存器、浮點暫存器及/或向量暫存器。 • 程式計數器(program counter; PC)暫存器,其儲存表示正執行的程式內之當前執行點的程式指令位址。 • 保存處理器狀態暫存器(SPSR_EL0),當自在異常級EL0處執行的過程取得異常時,該保存處理器狀態暫存器用於儲存關於處理器之當前狀態之資訊。SPSR可包括關於當前處理器狀態之資訊,例如表示異常發生時的當前處理器模式的值PSTATE。處理器模式可規定異常級以及其他資訊諸如哪個指令集正在執行。另外,SPSR暫存器可包括用來控制領域進入的領域進入旗標R,如以下將論述。 • 異常鏈接暫存器ELR_EL0,當取得異常時,該異常鏈接暫存器用來儲存當前程式計數器值,使得ELR提供返回位址,一旦異常已經處置,處理應分支至返回位址。 • 領域識別符暫存器RID_EL0,其用來儲存對其做出領域進入的子代領域之局部RID (即使異常級EL0為最低、最少特權異常級,具有如以下所論述之創建次領域之能力,仍可自在異常級EL0處操作的過程進入領域)。 • 異常狀態暫存器(exception status register; ESR),其由EL0用來儲存關於發生的異常之資訊(例如以允許適當異常處置器之選擇)。當處理器8正在異常級EL1處操作時,其可以存取狀態子集352,該狀態子集包括在異常級EL0處可存取的狀態350之全部,但亦包括額外架構狀態。例如,在EL1處,存在SPSR、ELR、ESR及RID暫存器之成組版本,該等成組版本由在EL1處操作的過程用於與此等暫存器之EL0版本對應的目的。SPSR_EL1暫存器可除PSTATE及R值之外亦包括中間領域旗標Int,該中間領域旗標係在巢套領域進入及退出期間使用,如以下將論述。儘管第27圖示出其中中間領域旗標儲存在SPSR中的實例,但此並非必要的,且其他實例可將旗標儲存在不同暫存器中。在EL1處可為可存取但在EL0處為不可存取的狀態之另一實例可為轉譯表基底暫存器TTBR_EL1,該轉譯表基底暫存器提供指示由MMU在頁表漫步期間使用的級段1頁表120-1之基底位址的位址。
類似地,當在異常級EL2處執行指令時,處理元件8可以存取狀態子集354,該狀態子集包括在EL1處可存取的所有狀態352,但亦包括額外狀態,諸如用於EL2之SPSR、ELR及RID寄存器之進一步成組版本及虛擬轉譯表基底暫存器VTTBR_EL2,該虛擬轉譯表基底暫存器提供級段2轉譯表120-2之基底位址。
最後,當在EL3處操作時,處理元件可以存取狀態子集356,該狀態子集包括在EL2處可存取的子集354之全部,但亦可包括其他狀態諸如由在異常級EL3處操作的過程用來進入領域的進一步領域識別符暫存器RID_EL3,及類似於用於較低異常級的對應暫存器的進一步異常處置暫存器ELR、SPSR、ESR。另外,第27圖僅為實例且其他狀態亦可包括在特別異常級可存取的關聯子集中。
因此,每一異常級與處理電路系統在彼異常級處處理軟體過程時可存取的暫存器之對應群組相關。對於除最少特權異常級之外的給定異常級,在給定異常級處可存取的暫存器之群組包括在相較於給定異常級的較少特權異常級處可存取的暫存器之群組。特別級可存取的此狀態階層可經利用來降低與領域進入及退出時的狀態保存及復原相關的管理負擔,如以下將論述。
在進入領域或自領域退出時,處理元件8及/或RMU 20可需要進行用於確保領域進入或退出之保全處置的若干操作。例如,在進入領域時,若干核對可需要進行來核對目標領域處於正確生命週期狀態中(以避免藉由試圖進入不存在的領域或例如尚未經歷資料自領域擁有的頁之洗滌的領域超過保全措施)。另外,在退出領域時,可為合意的是遮罩儲存在處理元件之暫存器中的架構狀態,使得較高特權級過程不可存取由較低特權級處之領域使用的狀態資料(此否則將使藉由領域保護提供的保全措施經超過)。用於處置領域進入及退出之一個方法可提供專用領域進入或領域退出指令,該專用領域進入或領域退出指令觸發RMU 20以進行用於進入或退出領域之關聯操作。然而,此可需要現有軟體之顯著修改以便使用新指令。
在以下描述之技術中,領域機構重新使用已為異常進入及返回提供的機構以便進入領域且自領域退出。此降低需要來支援領域進入及退出的軟體修改之量,且簡化架構及硬體。此係尤其有用的,因為通常領域邊界可無論如何對應於異常級邊界,且即使新指令經提供來控制進入及退出,將仍然需要用於處置異常之行為,因此總體而言,延伸異常機構以便亦控制進入退出可為不太昂貴的。
因此,將正常地使處理自在當前領域中處理的異常返回至亦在當前領域中處理的另一過程(其中該另一過程可在相較於異常的相同異常級或較少特權異常級處經處置)的異常返回(ERET)指令可重新使用來觸發自當前領域至目的地領域之領域進入。回應於異常返回指令之第一變體,處理電路系統可將處理自當前異常級切換至較少特權異常級(在不改變領域的情況下),而回應於異常返回指令之第二變體,處理電路系統可將處理自當前領域切換至目的地領域,該目的地領域可在與當前領域相同的異常級或降低(較少特權)異常級處操作。使用異常返回指令來觸發領域進入可大大地簡化架構及硬體管理負擔並且降低軟體修改要求以支援領域之使用。
使用異常返回指令之另一優點在於,通常在自異常返回時,處理電路系統可回應於異常返回指令而進行操作之原子集合。在自異常返回時需要的操作之集合可經原子地進行,使得此等操作不可在中途劃分,並且因此指令失敗且操作之原子集合中無一者經進行,或指令經成功地執行且操作之原子集合中之全部經進行。對於異常返回指令之第二變體,處理電路系統可類似地進行第二操作之原子集合,該第二操作之原子集合可不同於第一操作之原子集合。已提供在處理器中以用於確保異常返回指令原子地完成的機構可經重新使用於領域進入,以便避免領域進入可僅部分地進行的可導致保全弱點的情形。例如,第二操作之原子集合可包括使領域執行情境狀態為可利用的、改變正執行的當前領域,及控制分支至在相同領域最後一次執行時處理先前經執行所在的程式計數器位址。
異常返回指令之第一變體及第二變體可具有相同指令編碼。因此無異常返回指令自身之修改為必要的,以便觸發領域進入。此改良與舊有碼之相容性。給定異常返回指令經執行為第一變體或第二變體可取決於該給定異常返回指令儲存在狀態暫存器中的控制值(例如控制值之第一值及第二值可分別表示異常返回指令之第一變體及第二變體)。因此,在異常返回指令經執行時的當前架構狀態控制該異常返回指令將處理器返回至相同領域中之較低特權級,或觸發至新領域之進入。
此方法使領域進入能夠以較少軟體修改加以控制,尤其在狀態暫存器中之值可回應於暗示領域切換為可能的某些事件而藉由硬體自動地設定時(除允許回應於軟體指令的控制值之自願設定之外)。例如,當觸發至給定領域之退出的異常條件發生時,處理電路系統可將控制值設定至用於給定領域之第二值,使得後續異常返回指令將自動地使處理返回至異常發生所在的領域,即使考慮到用於處置異常之異常處置器碼與未以領域寫入的先前舊有碼相同。替代地,在一些架構中可預期,當自領域退出時,狀態暫存器中之控制值將仍含有在觸發至彼領域之領域進入之前設定的第二值,且因此可不需要狀態暫存器中之控制值之顯式設定。
在一個實例中,狀態暫存器中之控制值可為與當前異常級相關的SPSR暫存器中之R旗標,如以上所論述。使用SPSR可為有用的,因為此暫存器將在異常返回時正常地使用來提供處理器模式(包括異常級)及關於處理在自當前正處理的異常返回時應如何繼續的其他資訊。然而,對於領域進入,此資訊可反而根據領域執行情境(realm execution context; REC)來決定,且因此可不需要SPSR。藉由將SPSR之部分重新使用於儲存控制異常返回指令經視為第一變體或第二變體的R旗標,此避免對提供用於儲存此資訊之附加暫存器的需要。因此,使用狀態暫存器可為有用的,該狀態暫存器回應於ERET指令之第一變體用來決定用於繼續在較少特權異常級處之異常的返回狀態資訊(諸如處理模式),但回應於異常返回指令之第二變體,此返回狀態資訊將反而根據記憶體來決定,使得不需要存取狀態暫存器自身。詳言之,用於儲存控制值的狀態暫存器可為與當前異常級相關的狀態暫存器,異常返回指令係自該當前異常級執行。
如第27圖中所示,可提供至少一個領域識別符暫存器,且回應於異常返回指令之第二變體,處理電路系統可自儲存在領域識別符暫存器中的領域識別符識別目的地領域。領域識別符暫存器可為成組的,使得存在各自與異常級中一者相關的多個領域識別符暫存器,且回應於異常返回指令之第二變體,處理電路系統可自儲存在與當前異常級相關的領域識別符暫存器中的領域識別符識別目的地領域。藉由使用領域識別符暫存器來儲存目標領域識別符,不需要將此包括在ERET指令之指令編碼中,此舉使ERET指令之現有格式能夠用來觸發領域進入,從而降低所需要的軟體修改之量。領域識別符暫存器中之領域識別符可為由上代領域用來涉及該上代領域之子代領域的局部領域識別符,且因此領域進入可限制於自上代領域傳送至子代領域,且不可能自第一領域去往並非第一領域之直接子代的另一領域。回應於異常返回指令之第二變體,當與在RID暫存器中識別的領域ID相關的領域為無效領域(無領域描述符已經定義或領域描述符定義除活動以外的生命週期狀態的RID)時,處理電路系統可觸發故障條件。
回應於異常返回指令之第二變體,處理電路系統可自針對異常返回指令規定的領域執行情境(realm execution context; REC)記憶體區域復原與將要在目的地領域中處理的執行緒相關的架構狀態。狀態復原可回應於異常返回指令之第二變體而立即進行(例如作為操作之原子集合之部分),或可稍後進行。例如,狀態復原可以遲緩方式進行,使得需要來在目的地領域中開始處理的狀態可經立刻復原(例如程式計數器、處理模式資訊等),但其他狀態諸如通用暫存器可在稍後時間需要時,或在新領域之持續處理之背景中逐漸地復原。因此,處理電路系統可在所有需要的架構狀態已自REC記憶體區域復原之前開始目的地領域之處理。
回應於異常返回指令之第一變體,處理電路系統可分支至儲存在鏈接暫存器中的程式指令位址。例如,此可為第27圖之ELR,該ELR對應於異常返回指令經執行所在的當前異常級。相反,對於異常返回指令之第二變體,處理電路系統可分支至在領域執行情境(realm execution context; REC)記憶體區域中規定的程式指令位址。因此,因為鏈接暫存器將不使用於異常返回指令之第二變體以直接識別用於新領域之任何架構狀態,所以鏈接暫存器可經重新使用來替代地提供指向REC記憶體區域的指標,新領域之架構狀態將自該REC記憶體區域復原。此避免對提供進一步暫存器以用於儲存REC指標的需要。
因此,在執行意欲引起至給定領域之領域進入的異常返回指令之前,一些額外指令可經包括以便將RID暫存器設定至目的地領域之領域識別符且設定鏈接暫存器以儲存與目的地領域相關的REC記憶體區域之指標。REC指標可由上代領域自目的地領域之領域描述符獲得。
回應於異常返回指令之第二變體,當REC記憶體區域與除目的地領域之外的擁有者領域相關或針對異常返回指令規定的REC記憶體區域為無效的時,故障條件可由處理電路系統觸發。第一核對防止上代領域誘使子代領域用該子代領域並未自身創建的處理器狀態執行,因為僅由子代領域擁有的記憶體區域可儲存在進入彼領域時可存取的REC記憶體區域(且如以上所論述,REC記憶體區域將經設定為RMU私有的)。REC記憶體區域之有效性之第二核對可用於確保REC記憶體區域可僅使用一次以進入領域,且之後用相同REC資料進入領域之後續試圖將經拒絕。例如,每一REC可具有可為無效或有效的生命週期狀態。回應於在當前領域中之給定執行緒之處理期間發生的異常,彼執行緒之架構狀態可經保存至對應REC記憶體區域,且彼對應REC記憶體區域隨後可自無效變遷至有效。回應於異常返回指令之第二變體之成功執行,REC記憶體區域隨後可自有效變遷回至無效。此藉由規定過時REC記憶體區域之指標、與不同執行緒相關的REC記憶體區域,或與目的地領域相關但並非在自領域之先前退出時用來儲存架構狀態的正確REC的一些其他REC,避免上代領域惡意地使子代領域不正確地表現。
以對應方式,自領域之退出可重新使用提供來用於異常處置的機構。因此,回應於在第一領域之處理期間發生的不能藉由第一領域處置的異常條件,處理電路系統可觸發至上代領域之領域退出,該上代領域初始化第一領域。在異常發生/領域退出時,可進行將對於可在相同領域內處置的異常發生不進行的一些額外操作。例如,此可包括架構狀態之遮罩或洗滌及至REC之狀態儲存之觸發,如以下將更詳細地論述。
然而,在一些狀況下,異常可發生,該異常不可藉由異常發生所在的第一領域之上代領域處置。因此,在此狀況下,可必需切換至越過上代的進一步先代領域。儘管提供直接自給定領域切換至年長超過一個世代的先代領域之能力可為可能的,但此可增加需要來處置進入及返回或領域退出及進入的狀態暫存器之複雜性。
實情為,當異常條件將在具有相較於第一領域之上代領域經允許以經處理所在的最多特權異常級之較大特權級的目標異常級處經處理時,可進行巢套領域退出。巢套領域退出可包括自子代領域至上代領域之二或更多個相繼領域退出,直至到達第二領域,該第二領域經允許以在發生的異常之目標異常級處經處理。因此,藉由沿領域階層一次一級逐步進行時,此可簡化架構。在每一相繼領域退出處,可存在進來來將處理器狀態之子集保存至與對應領域相關的REC的操作。
當異常已經處置時,隨後回應於在巢套領域退出之後於第二領域中執行的第二變體之異常返回指令,處理電路系統可接著觸發巢套領域進入以返回至第一領域。此可以不同方式處置。在一些實例中,硬體可自身觸發巢套領域進入而不需要任何指令在巢套領域退出期間於第一領域與第二領域之間遭遇的任何中間領域處經執行。替代地,可藉由提供巢套領域進入過程簡化硬體,該巢套領域進入過程一次一級地向後返回至在巢套領域退出中遭遇的每一相繼領域且在每一中間領域處執行第二變體之進一步ERET指令。在此狀況下,為確保中間領域觸發至在巢套領域退出期間做出至中間領域之領域退出的中間領域之子代領域之返回,異常狀態暫存器可經設定以指示預定類型的異常條件發生在子代領域中。例如,新類型的異常條件(例如「偽造領域退出」)可經定義來處置此中間領域狀況。因此,當到達中間領域時,處理器隨後可自程式指令位址恢復中間領域內之處理,該程式指令位址對應於用於處置預定類型的異常條件之異常處置常式。此異常處置常式可例如簡單地決定子代領域出於一些未知原因退出且隨後可選擇以執行第二變體之另一異常返回指令以使處理返回至進一步子代領域。藉由在每一中間領域處進行此舉,最終,原始異常發生所在的原始第一領域可恢復處理。
在此巢套領域進入及退出程序期間,狀態暫存器內之中間領域旗標可用來標旗哪些領域為中間領域,以觸發至有關子代領域之硬體觸發的立即領域進入或觸發異常狀態資訊之設定,該異常狀態資訊隨後將觸發異常處置器或中間領域內之其他碼以返回至子代領域。例如,中間領域旗標可為如第27圖中所論述之關聯SPSR中之Int旗標。
第28圖為例示處置領域進入或異常返回之方法的流程圖。在步驟400處,當當前異常級為ELx時,執行異常返回(ERET)指令。ELx可為由處理電路系統支援的異常級中之任一者。儘管技術者可希望異常返回自最少特權異常級EL0發生,但如以下將論述的創建次領域之能力意味仍可存在自EL0執行的ERET指令,以便觸發亦在EL0處執行的至次領域之進行。另外,一些類型的異常可能夠在與異常發生所在的級相同的異常級處經處置,在該狀況下,異常返回仍可自EL0發生。
在步驟402處,處理元件決定與異常級ELx相關的SPSR中之領域旗標R之當前值。若領域旗標R為零,則此指示習知異常返回,而不進入不同領域。在步驟404處,處理元件8基於SPSR_ELx內之PSTATE值決定用以在異常返回之後操作所在的目標異常級,且決定程式計數器值以自鏈接暫存器ELR_ELx分支。新目標異常級及程式計數器值以及與在異常之後至處理之返回相關的任何其他返回狀態經復原至與目標異常級(該目標異常級將通常為相較於異常級ELx之較少特權的較低異常級,但亦可為相同異常級ELx)相關的關聯架構狀態暫存器。此類返回狀態操作經原子地進行。在步驟406處,處理隨後在目標異常級處恢復,但停留在與ERET指令經執行所在的領域相同的領域內。
若在步驟402處,領域旗標R經設定至1,則此指示領域進入,且因此此觸發不同於針對習知異常返回進行的集合的第二操作之原子集合。在步驟408處,處理元件觸發領域管理單元以實施若干領域核對。此等包括核對: • 在與異常級ELx相關的領域識別符暫存器RID_ELx中指示的局部RID指示有效子代領域。亦即,RMU核對自用於規定子代領域之領域描述符樹360存取的領域描述符,且核對子代領域之領域描述符之生命週期狀態是否指示活動狀態。若子代領域處於除活動狀態之外的任何狀態,則領域核對為不成功的。 • RMU 20亦核對藉由鏈接暫存器ELR_ELx中之指標指示的REC記憶體區域為由在領域ID暫存器RID_ELx中指示的子代領域擁有的記憶體區域。亦即,RMU 20存取領域區組表128 (或來自RGT 128之快取資訊),定位對應於在REC指標中指示的記憶體區域的關聯項,且核對針對彼記憶體區域規定的擁有者領域。在所有權表中指示的擁有者領域可經規定為全域RID,且此可與在目標子代領域之領域描述符中規定的全域RID比較,以決定子代領域是否為REC之有效擁有者。若REC由除RID暫存器中之規定子代領域之外的任何領域擁有,則此核對為不成功的。 • RMU 20亦核對在ELR_ELx中定義的REC記憶體區域之狀態是否為有效的。存在可表示REC記憶體區域之有效性的不同方式。例如,每一REC記憶體區域可包括規定該REC記憶體區域是否為有效的旗標。替代地,分離表可定義儲存在其他記憶體區域中的REC之有效性。若REC已用來在先前異常退出時儲存關聯領域之架構狀態,但尚未用來在自異常返回之後復原狀態,則該REC可為有效的。若REC為無效的,則領域核對再次為不成功的。 • RMU 20亦核對自除在RID暫存器RID_ELx中指示的子代領域之外的任何子代領域的最後退出之後,清空命令是否已經執行。清空命令將在以下更詳細地論述,但為用於確保仍然將要保存至子代領域之REC的任何狀態經推至記憶體(此幫助支援遲緩狀態保存方法)的命令。若無清空命令已經執行且系統試圖進入相比於先前退出的子代領域的不同子代領域,則存在可仍存在留在處理器暫存器內的尚未推至記憶體的狀態的危險。增強清空命令之使用確保可在無先前子代領域之狀態之損失(或洩漏至其他領域)的情況下安全地進入不同子代領域。可存在識別清空命令是否已經執行的若干方式。例如,一些狀態旗標可用來追蹤(a)自最後領域退出之後是否已存在對RID暫存器RID_ELx之變化,及(b)自最後領域退出之後清空命令是否已經執行。若存在對RID暫存器之變化且自先前領域退出之後無清空命令已經執行,則此可使領域核對為不成功的。
若領域核對中任一者為不成功的,則在步驟409處觸發故障,且系統停留在與ERET指令相關的當前領域內。因此,不可能到達子代領域,除非領域核對中全部為成功的。
若領域核對中全部為成功的,則在步驟410處,處理元件切換至在領域ID暫存器RID_ELx中指示的子代領域中之處理。例如,處理器可具有規定當前領域之全域RID的內部暫存器(此內部寄存器可並非為軟體可見的且不同於第27圖中所示之成組RID暫存器)。至子代領域之切換可藉由將新目的地領域之全域RID寫入至內部RID暫存器發生。
在步驟412處,基於保存在藉由ELR_ELx暫存器中之指標指示的REC記憶體區域中之記憶體中的狀態使與新領域相關的狀態為可利用的。因為REC區域由新子代領域擁有,所述該REC區域現在為可存取的,且因此可自REC獲得返回狀態資訊諸如程式計數器及目標異常級。在此時,架構狀態之選定的子集可自REC復原,或替代地,架構狀態可經遲緩地復原,使得處理可在沒有完全復原所有狀態的情況下開始,且隨後狀態可在需要時或在時間週期內逐漸地復原,以便藉由在處理可自新領域復原之前降低延遲來改良效能。
在步驟414處,決定中間領域旗標Int是否在與新領域相關的SPSR中經設定。SPSR內容將連同其餘架構狀態一起自REC復原。若中間領域旗標未經設定,則此指示新領域為原始異常發生所在的領域(或領域正第一次經進入而無任何先前異常發生在彼領域中),且因此不需要觸發至子代領域中之任何進一步領域進入。在步驟416處,自REC獲得程式計數器,且隨後在步驟418處,處理在自REC獲得的目標異常級處之新領域中繼續。
替代地,若中間領域旗標經設定,則此指示巢套領域退出先前已發生,且巢套領域進入已到達中間領域。因此,需要使處理返回至進一步子代領域,以便返回至異常最初發生所在的領域。存在用於處置此狀況的兩個替代性技術。在第一替選方案中,在腳步420處,採取偽造領域退出異常,且因此與新領域相關的異常狀態暫存器可藉由處理元件設定至與此類型的異常相關的狀態碼,且隨後處理分支至與彼類型的異常相關的異常向量,該異常向量觸發將要處理的異常處置器。異常處置器不必進行任何實際處理,但可簡單地決定未知類型的異常發生在給定子代領域中且因此隨後可觸發另一ERET指令以在步驟422處執行。當中間領域先前進入進一步子代領域時,與中間領域相關的RID及ELR暫存器仍可具有置放在彼等暫存器中的值,且因此ERET指令執行隨後可觸發至進一步子代領域之進一步領域進入。方法可返回至步驟408以核對領域核對對於彼進一步領域進入是否為成功的,且隨後方法以與巢套過程中之先前領域進入類似的方式繼續。
替代地,代替使用在中間領域中執行的另一ERET指令處置巢套領域進入,在步驟424處,硬體可偵測中間領域旗標針對當前領域經設定,且隨後可觸發至子代領域之進一步領域進入,而不需要在中間領域內執行任何指令,且隨後方法可接著返回至步驟408。
第29圖示出例示自領域退出或採取異常之方法的流程圖。在步驟430處,異常發生在給定異常級ELx內,該給定異常級以異常級ELy為目標(ELy ≥ ELx)。目標異常級ELy為異常將經處置所在的異常級。目標異常級可與ELx相同,比ELx高出僅一個異常級,或可高出若干異常級。
在步驟432處,RMU決定目標異常級ELy是否大於可自當前領域之領域描述符讀取的當前領域之邊界異常級(BEL),及當前領域是否為次領域(參見以下次領域之論述——第16圖中所示之領域描述符之類型欄位規定領域是否為次領域)。若目標異常級ELy不大於邊界異常級,則此指示異常可在當前領域內處置,且因此若當前領域為完全領域,則不需要觸發領域退出。在此狀況下,在步驟434處,處理元件將當前異常級切換至ELy (例如藉由更新當前狀態暫存器),或若ELx = ELy,則當前異常級保持相同(無論怎樣,當前異常級現在為ELy)。在步驟436處,與異常級ELx相關的當前處理狀態經保存至目標異常級ELy可存取的暫存器。例如,程式計數器可經保存至鏈接暫存器ELR_ELy,且異常發生所在的先前異常級ELx可在SPSR_ELy中之PSTATE值中指示。另外,SPSR_ELy暫存器中之領域旗標R可經設定至0以指示異常來自相同領域內,且因此任何後續異常返回不需要觸發領域進入。關於發生的異常類型之資料亦可經保存至異常狀態暫存器ESR_ELy。在步驟438處,處理元件分支至與規定異常類型相關的異常向量,且隨後處理繼續以便處置異常。最終,當異常處置完成時,ERET指令將經執行以觸發至先前處理之返回,如以上針對第28圖所論述。
另一方面,若在步驟432處,目標異常級ELy大於當前領域之BEL,或若當前領域為次領域(對於該次領域,任何異常觸發至次領域之上代領域之退出),則需要領域退出以便處置異常。在步驟440處,決定異常是否對應於自願領域退出。一些類型的異常可藉由非預期事件觸發,諸如使用物按壓處理裝置上之按鈕,一些故障發生。然而,亦可能的是領域自願地撤回處理且返回至上代領域。例如,子代領域可已到達一些處理常式之終點,或可需要調用在較高異常級處之一些功能。當子代領域故意地退出至上代領域,隨後為允許子代領域與上代領域共享資料時,可為有用的是允許子代領域之一些架構狀態經保持以用於來自上代領域之存取,使得與非自願領域退出相比,較少狀態經遮罩且洗滌。例如,通用暫存器可未經遮罩且洗滌,但其他控制暫存器仍可經遮罩且洗滌。此避免對資料經儲存至全域可見性記憶體區域的需要,因為隨後可直接自暫存器存取狀態,從而改良效能。亦即,對於自願領域退出,子代領域控制領域退出且因此可假設子代領域已覆寫對於上代領域不應可存取的可見架構狀態,且留下該子代領域想要與暫存器中之上代領域共享的任何狀態。自願領域退出可例如藉由對應於特別類型的異常的異常觸發指令之預定變體觸發,對於該特別類型的異常不執行遮罩或洗滌。
若領域退出並非自願領域退出,則在步驟442處,進行架構狀態之選定的子集之遮罩。遮罩確保使將要隱藏的架構狀態為上代領域不可存取的。然而,上代領域仍可試圖存取儲存彼架構狀態的暫存器,且因此可進行洗滌操作,該洗滌操作確保對洗滌後架構暫存器之任何後續存取將返回預定值,而不管何值實際上儲存在與彼架構暫存器相關的實體暫存器中。亦即,當針對儲存架構狀態之經遮罩子集之部分的給定架構暫存器進行暫存器洗滌操作時,此確保若對給定架構暫存器之後續讀取存取由處理電路系統在無介於領域切換與後續讀取存取之間的對彼架構暫存器之任何介入寫入存取的情況下進行,則對給定架構暫存器之後續讀取存取將返回預定值(例如零)。暫存器洗滌操作可以不同方式進行。例如,對應於給定架構暫存器的實體暫存器可經設定至預定值(例如,此零之值可實際上經寫入至實體暫存器)。替代地,暫存器洗滌可藉由暫存器重新命名進行,使得給定架構暫存器自第一實體暫存器重新對映至第二實體暫存器。另一方法可設定與給定架構暫存器或對映至給定架構暫存器的實體暫存器相關的狀態值,以指示對給定架構暫存器之讀取存取應返回預定值。使用此等最後兩個方法,可能將經遮罩架構狀態保持在處理元件之實體暫存器檔案內,即使該遮罩架構狀態並非自新領域可存取的,且對彼狀態之任何存取將返回預定值。此對於支援如以下論述之遲緩狀態保存為有用的。一旦已進行遮罩及洗滌操作,在步驟444處,處理元件觸發架構狀態之經遮罩子集至與異常發生所在的當前領域相關的REC記憶體區域之保存。此保存可立即進行,或可遲緩地進行,與上代領域中之後續處理重疊。採取哪種方法可取決於架構之特別實施方式且因此並非架構之必要特徵。然而,遲緩狀態保存可改良效能。
若領域退出為自願領域退出,則在步驟443處,除針對非自願領域退出將遮罩/洗滌的狀態中之至少一些不需要針對自願領域退出經遮罩/洗滌之外,以與在步驟442處相同的方式遮罩且洗滌架構狀態之縮減子集。例如,架構狀態之縮減子集可排除通用暫存器。在步驟443之後,方法繼續如以上針對非自願領域退出所論述之步驟444。
不管領域退出為自願的或非自願的,在步驟446處,處理元件切換至上代領域。因為與子代領域異常級相關且藉由上代領域異常級控制的RID_ELx及ELR_ELx暫存器將仍經設定至先前退出的子代領域之RID及REC指標(因為此等在ERET指令經執行以首先進入子代領域之前已經設定),所以不需要調適此狀態,且因此任何後續ERET指令將返回與先前相同的子代領域。若上代領域希望自最後退出的子代領域切換至不同子代領域,則僅需要更新此等暫存器。類似地,上代領域之SPSR中之領域旗標R仍可在先前領域進入之後經設定至1,且因此可保持此值,使得ERET指令隨後將經視為至新領域之進入,除非R旗標藉由在上代領域中執行的指令清除至0。
在步驟448處,RMU決定目標異常級ELy是否大於新上代領域之BEL,處理已切換至該新上代領域。若否,則此指示可在上代領域中採取異常,且在步驟450處,處理元件8分支至適合於處置發生的異常類型的對應異常處置器。若目標異常級高於上代領域之BEL,則需要巢套領域退出以便分支至進一步先代領域,且因此在步驟452處,與上代領域相關的中間領域旗標在SPSR中經設定至1,且隨後方法返回至步驟442以觸發與彼領域相關的架構狀態之遮罩及洗滌(此時,領域退出並非自願領域退出,因為該領域退出已在上代領域之控制之外經觸發)。方法隨後可再次循環以遮罩或洗滌與當前領域相關的任何適當狀態且隨後切換至彼領域之上代領域。巢套領域退出可循環若干次,直至最終到達可處置異常的領域。
在步驟412、442、444處,經遮罩、洗滌且在自領域退出時經保存,且在至領域之進入時經復原的架構狀態之子集可取決於退出/進入的領域之邊界異常級。對於非巢套領域退出及進入,選定的子集可包括異常發生所在的異常級可存取的架構狀態之子集,如在例如第27圖中所指示。因此,每一異常級與暫存器之群組相關,且回應於在將藉由異常處置器在相較於給定領域之邊界異常級的較多特權異常級處處置的給定領域之處理期間發生的領域退出異常條件,暫存器子集可取決於給定領域之邊界異常級加以選擇,且可包括處理電路系統在彼異常級處處理軟體過程時可存取的彼等暫存器。若異常發生在EL1或更高處,則此可包括彼異常級以及用於非巢套領域退出之任何較低異常級可存取的全部暫存器。類似地,在返回至領域時,接著架構狀態之對應子集可經復原。
然而,對於巢套領域退出,可假設,對於中間領域,在相較於中間領域之邊界異常級的較低異常級處可存取的任何暫存器將已藉由在較低異常級處之子代領域修改,因為中間領域觸發至子代領域之進入。因此,在巢套領域退出期間可不需要將在較低異常級處可存取的此類暫存器保存至與中間領域相關的REC (自先前進入子代領域之後無中間領域處之進一步執行發生)。相反地,在巢套領域進入期間,不需要在通過中間領域期間復原在較低級處可存取的彼等暫存器,因為此等暫存器隨後將藉由在較低異常級處之領域復原。實情為,中間領域狀態保存及復原可簡單地包括中間領域之邊界異常級可存取但在較低異常級處並非可存取的暫存器。例如,在EL1處中間領域,在巢套領域退出/進入中保存/復原的狀態可包括第27圖中之子集352但可排除在EL0處可存取的子集350。若中間領域在EL2處,則在巢套領域退出/進入期間的狀態之保存/復原子集可包括在EL2處可存取的子集354但排除在EL1處可存取的子集352。使用此方法,可降低在通過中間領域時需要的狀態保存及復原之量以改良效能。
因此,當異常條件將藉由異常處置器在比異常發生所在的給定領域之上代領域之邊界異常級更具特權的目標異常級處處理時,巢套領域退出可經觸發,該巢套領域退出包括自子代領域至上代領域的多個相繼領域退出,直至到達具有對應於目標異常級或更高的邊界異常級的目標領域。可針對相繼領域退出中每一者觸發各別狀態遮罩過程(及狀態保存),且每一各別狀態遮罩過程可遮罩(且保存)基於邊界異常級選擇的對應暫存器子集。對於自具有除最少特權異常級之外的邊界異常級的給定子代領域之領域退出,在巢套領域退出期間遮罩/保存的對應暫存器子集可包括在給定子代領域之邊界異常級處可存取的至少一個暫存器,但可排除在相較於給定子代領域之邊界異常級的較少特權異常級處之處理電路系統可存取的至少一個暫存器(因為可假設當退出在彼較少特權異常級處之領域時,此類暫存器將已經保存)。此降低需要的狀態遮罩及保存操作之量。
類似地,在領域進入(異常返回)時,中間領域旗標可用來決定進入的領域是否為中間領域。若用於具有除最少特權異常級之外的邊界異常級之領域的中間領域狀態值經設定至預定值(指示中間領域),則在領域進入時要復原的暫存器子集可包括在中間領域之邊界異常級處可存取的至少一個暫存器,但可排除在相較於特別領域之邊界異常級的較少特權異常級處之處理電路系統可存取的至少一個暫存器。若中間狀態值經設定至除預定值之外的值,則正進入的此領域為最後領域且因此存取的將要復原的暫存器子集可包括在特別領域之邊界異常級處之處理電路系統可存取的所有暫存器(而不自較低級排除任何暫存器)。
以此方式,可更有效地進行在巢套領域退出及進入期間的狀態保存及復原操作。
第30圖例示非巢套領域進入及退出之實例。在此實例中,上代領域為在異常級EL1處操作的A且該上代領域希望進入具有EL0之BEL之子代領域B。明顯地,可在其他異常級處進行類似領域進入及退出程序。在步驟460處,上代領域將領域識別符暫存器RID_EL1設定至子代領域B之局部領域ID。局部RID具有藉由序連連接如以上所論述之樹索引獲得的格式。在步驟462處,EL1處之上代領域將鏈接暫存器ELR_EL1設定至提供指向領域B之領域執行情境之指標的位址。上代領域自所要的子代領域B之領域描述符獲得此指標。在步驟464處,上代領域將SPSR_EL1中之領域旗標R設定至1。在步驟466處,上代領域隨後執行ERET指令,該ERET指令在領域旗標經設定至1時經解譯為觸發領域進入。進行用於第28圖之步驟408的以上所描述之各種領域核對,且若該等領域核對為成功的,則進行領域進入以切換至領域B。在步驟468處,自在鏈接暫存器中指示的REC復原狀態。此狀態包括新領域將在其中執行的目標異常級。應注意,在REC經存取時,處理器仍處於與領域A相關的先前異常級中且因此此為鏈接暫存器ELR_EL1為何仍為可存取的,以獲得REC指標,即使已做出至領域B之切換且最終彼領域將自EL0恢復處理。狀態復原可立即進行或可與領域B之規則處理470平行地在時間週期內延緩地進行。
當異常在子代領域B之執行期間發生在步驟472處時,接著執行遮罩操作之集合以將與領域B相關的狀態自該領域之上代領域隱藏。此包括在步驟474處的與EL0相關的架構狀態之至少一子集之遮罩及洗滌(經遮罩/洗滌的架構狀態之子集可取決於退出為自願或非自願領域退出)。遮罩使狀態不可存取且洗滌確保來自上代領域的對對應暫存器之後續存取將觸發預定值將經返回。在步驟476處,針對架構狀態之經遮罩子集進行至與領域B相關的REC之狀態保存。在此狀況下,因為子代領域具有EL0之BEL,所以狀態之經遮罩子集至少包括在EL0處可存取的子集350。另外,狀態保存可經立即觸發,或可與具有上代領域處之異常的持續處理平行地以遲緩方式進行。在步驟478處,領域退出接著經觸發以切換至上代領域A,且在步驟480處,在上代領域內實施異常之處理。第30圖之步驟474及476對於自願領域退出可經省略。
第31圖示出類似實例,該類似實例示出巢套領域進入及退出。在異常級EL2處之祖父母領域A在步驟500處執行ERET指令,從而已設定鏈接暫存器以指向所要的子代領域之REC,將領域ID暫存器RID_EL2設定至子代領域之局部RID,且在SPSR_EL2中將R旗標設定至1。此觸發在步驟502處的至領域B之領域進入,且此觸發在步驟504處的狀態將自領域B之REC經復原,此舉再次可立即或遲緩地進行。最終,領域B接著在步驟506處執行進一步ERET指令,再次設定鏈接暫存器、RID暫存器及R旗標,以觸發在步驟508處的進一步領域進入。應注意,步驟502及508處的領域進入可如第28圖中所示地進行,且因此步驟諸如領域核對仍經進行,但出於簡潔性在第31圖中未示出。在至領域C之進入之後,接著在步驟510處自該領域C之REC復原領域C之架構狀態,且在步驟512處,處理在領域C內恢復。
隨後,異常在步驟514處發生。異常以異常級EL2為目標。例如,異常可為將藉由超管理器處置的異常類型(諸如與虛擬化裝置相關的事件或級段2位址轉譯故障)。在步驟516處,狀態遮罩過程包括任何洗滌及狀態保存以與第30圖中所示之類似方式經觸發,且在步驟518處進行至領域B之領域退出,該領域B為異常發生所在的領域C之上代領域。
在步驟520處,處理元件偵測用於發生的異常之目標異常級高於領域B之邊界異常級,且因此領域B為中間領域且需要至領域B之上代領域之進一步領域退出。因此,在步驟522處,在SPSR_EL1內設定中間領域旗標,且在步驟524處,進行暫存器子集之進一步狀態遮罩、洗滌及保存。另外,若對應狀態可以在至領域A之領域退出之後為處理器不可存取的一些方式保持在暫存器之過程中,則此過程之保存部分可經延緩。針對此中間領域保存的暫存器子集包括在EL1處可存取的暫存器352但排除在EL0處可存取的暫存器350。不需要保存暫存器350子集,因為領域B自步驟508處的先前領域進入之後尚未執行任何指令來改變此等暫存器,且此等暫存器已藉由領域C遮罩/洗滌/保存。因此,此降低中間領域所需要的額外遮罩及狀態保存之量。
至領域A之進一步領域退出526隨後經觸發,該領域A為中間領域之上代。在此狀況下,領域A能夠處置異常,因為該領域A可在EL2處操作,且因此在步驟528處,異常在異常級EL2處經設陷且處置。異常藉由超管理器處理,且一旦異常已經處置,ERET指令530經執行以返回至先前處理。此時,ELR_EL2及RID_EL2之值以及SPSR_EL2中之R旗標仍與其在ERET指令於步驟500處執行之前相同。因此,不必再次設定些等值。ERET指令530觸發向後至異常級EL1處之先前子代領域B之領域進入。應注意,異常處置器碼可在用於在異常之處置之後將處理返回至較低異常級的舊有碼中已具有此ERET指令。因此,如以上所論述的ERET指令對於觸發領域進入之重新使用使在不知道領域保護功能的情況下撰寫的現有異常處置器碼能夠繼續經使用,從而降低平臺開發成本。
在返回至EL1處之領域B時,處理元件偵測中間旗標在SPSR_EL1中經設定(步驟532)。因此,在步驟534處,自領域B之REC復原的狀態為EL1可存取的狀態(註冊352)但排除在EL0處可存取的暫存器350。若處理器實施方式使用觸發巢套領域進入之軟體輔助方法,則在步驟536處,處理元件將用於中間領域之異常狀態暫存器ESR_EL1設定至對應於偽造領域退出的特別值。處理元件將程式計數器設定至異常向量,該異常向量指示用於處置此預定類型的偽造領域退出異常的異常處置器,且隨後異常處置器在步驟538處經執行。異常處置器不需要實施任何現實功能,但可簡單地觸發ERET指令或替代地亦可提供一些其他操作。最終,ERET指令在步驟542處經執行,因為ELR_EL1、RID_EL1及SPSR_EL1暫存器仍如該等暫存器在ERET指令於步驟506處經執行之前一般設定,所以該ERET指令觸發向後至先前子代領域之領域進入544,該領域進入在原始異常發生之前執行。此時,在步驟546處,自領域C之REC復原狀態,且處理在步驟548處以與在以上步驟510及512處相同的方式繼續。
替代地,對於硬體輔助巢套領域進入,步驟536至542可經省略,且替代在步驟534處使狀態之需要的子集復原,處理元件之硬體可自中間領域旗標偵測需要至領域C之進一步領域進入,且因此在步驟550處,硬體可直接鍊接後續領域進入而不需要進一步ERET指令542經執行。在此狀況下,不需要任何指令將在中間領域內執行。
藉由使用此巢套領域進入及退出程序,此避免EL2處之領域需要處理與EL0相關的任何領域值或REC指標。當進入領域時,此允許較清潔及較簡單的核對,因為僅當前領域之緊接子代之參數需要經核對。此大大地簡化架構及硬體實施方式。
第32圖及第33圖分別示出在領域退出及領域進入時至REC之遲緩狀態保存及自REC之狀態復原。一般而言,在將領域退出至上代領域時,可為合意的是遮罩與子代領域相關的狀態以自上代領域隱藏該狀態,且進行洗滌以確保若上代領域在試圖存取對應於洗滌後狀態的架構暫存器則將看見一些預定值。此等操作可相對快速地進行。然而,若在處理電路系統之實體暫存器檔案中存在不充分空間來用於無限地保持子代領域狀態,則可希望將彼資料中一些保存至REC。然而,此可花費較長時間,且佔用否則可用於上代領域中之處理的記憶體頻寬,此可延遲上代領域中之處理。類似地,用以在進入領域後將狀態自記憶體復原至暫存器的對應操作可花費一些時間。因此,出於效能原因,可為合意的是支援處理元件狀態至/自REC之異步保存/復原。給定處理器實施方式實際上是否進行此遲緩狀態保存為用於特別處理器之實施方式選擇。例如,並非以高效能為目的的一些處理器可發現較簡單的簡單地立即觸發狀態保存操作,以便降低管理哪個狀態已經保存及哪個狀態尚未保存之複雜性。然而,為在需要致能效能改良,可為合意的是提供支援此類異步、遲緩狀態保存方法的架構功能。
因此,回應於自源領域至將在相較於源領域的較多特權異常級處處理的目標領域之領域切換,處理電路系統可進行狀態遮罩以使與源領域相關的架構狀態資料之子集為目標領域不可存取的。儘管狀態之彼經遮罩子集經保存至記憶體為可能的,但此時,此並非必要的。然而,架構提供可在領域切換之後使用的清空命令。當清空命令經執行時,處理電路系統確保尚未保存至由源領域擁有的至少一個REC記憶體區域的架構狀態資料之經遮罩子集中任一者若保存至至少一個REC記憶體區域)。藉由提供此清空命令,可確保在必須確保架構狀態資料之子集已經明確地保存時,此可強制通過,且當架構狀態資料之彼子集在清空命令尚未經執行時的狀況下實際上保存至記憶體時,此給予用於架構之特別微架構實施方式精確變化的自由度。
除狀態遮罩之外,在領域切換後,處理電路系統亦可進行如以上所論述之暫存器洗滌操作,該暫存器洗滌操作確保對給定架構暫存器之任何後續讀取存取返回預定值(若在無介入寫入存取的情況下進行)。此洗滌可藉由實際上將預定值寫入至對應於給定架構暫存器的實體暫存器,或藉由暫存器重新命名,或藉由設定與給定架構暫存器相關的其他控制狀態值以指示讀取存取應返回預定值而非對應實體暫存器之實際內容來進行。若回應於領域切換要進行的狀態保存經異步地進行,則當回應於領域切換而使得不可存取的架構狀態資料之子集之至少部分仍儲存在處理電路系統之暫存器中時,處理電路系統可開始目標領域之處理。例如,處理器可具有相較於提供為指令集架構中之架構暫存器的暫存器之數目的較大實體暫存器檔案,且因此一些備用實體暫存器可用來在目標領域已開始處理之後將先前遮罩的狀態保持一段時期。此為有利的,因為若接著處理在架構狀態資料之子集之給定項目仍儲存在暫存器中時返回至源領域,則處理電路系統可簡單地自暫存器檔案復原對架構狀態之彼給定項目之存取,而不需要自REC復原資料。一些類型的異常可僅需要相對短的異常處置器經執行,在此狀況下,可能的是一些經遮罩狀態在自異常返回時仍常駐於暫存器檔案中。此類「淺」異常進入/返回事件可受益於使用遲緩狀態保存。
若使用遲緩狀態保存,則一旦目標領域之處理在異常之後已開始,處理電路系統可回應於除清空命令之外的預定事件之發生而觸發REC區域之給定項目之保存。儘管處理此時已切換至上代領域(該上代領域通常不可以存取與先前子代領域相關的REC),但因為此等操作係藉由微體系結構實施方式在硬體中而非藉由軟體觸發,所以該等操作不經受將需要來用於一般軟體觸發記憶體存取的相同所有權核對(有效地,此等REC保存操作在退出之前將已藉由子代領域授權)。
許多不同類型的預定事件可用來觸發架構狀態資料之子集之一定項目以經保存至REC,該等不同類型的預定事件包括以下: • 對架構暫存器之暫存器存取,該架構暫存器對應於架構狀態資料之子集之給定項目。此方法可對於不支援暫存器重新命名的不太複雜處理器為有用的。在此狀況下,每一架構暫存器可對映至一個固定實體暫存器,且因此與上代領域相關的彼碼第一次嘗試存取給定架構暫存器時,則此可需要由子代領域使用的彼暫存器之舊值經保存至記憶體。 • 儲存架構狀態資料之子集之給定項目的實體暫存器之重新對映。在支援暫存器重新命名的系統中,架構狀態可在暫存器檔案中保持得較久,但最終可必需重新對映對應實體暫存器以儲存不同值且此時子代領域之對應架構狀態可經保存至REC。 • 變得小於或等於預定臨界值的可利用的實體暫存器之數目。在此狀況下,一旦空閒實體暫存器(其可利用來再分配給不同架構暫存器)之數目變為低的,狀態保存可開始搶先進行,而非等待給定實體暫存器之實際重新對映。 • 給定數目的循環或給定時間週期的過去。因此,對於任何特別處理事件而言,觸發保存並非必要的,但實情為遲緩狀態保存可在時間週期內簡單地擴展子代領域之情境至REC之保存,以便降低對可利用於由上代領域中之處理觸發的其他記憶體存取的記憶體頻寬之影響。 • 指示降低的處理器工作負荷的事件,例如閒置處理器時間週期或指示現在執行狀態保存將對上代領域之處理之整體效能具有較少影響的一些其他事件。此時,架構狀態資料之子集之至少部分之保存可經觸發。
在領域切換之後,若處理電路系統試圖進入除源領域之外的進一步領域,領域先前自該源領域切換至上代領域,則當進一步領域將在相較於先前領域退出之目標領域的相同異常級或較少特權異常級處經處理且無清空命令已在領域切換與領域進入請求之間經接收時,處理電路系統可拒絕領域進入請求。替代地,領域進入請求可經接受而不管清空命令是否已經執行,但若清空命令尚未執行,則初始子代領域REC狀態可經毀壞,使得REC不可再次使用,從而防止至子代領域中之有效進入。總之,在上代領域可將處理成功導向至相比於先前執行的一個領域的不同子代領域之前需要清空命令。此確保即使硬體選擇使用遲緩狀態保存方法,與先前子代領域相關的所有必要狀態將已經提交以在進入不同子代領域時經保存至記憶體。此避免對備份將要保存至記憶體的子代領域資料之若干集合之需要且簡化架構。
應注意,清空命令僅需要確保來自經遮罩暫存器的狀態經提交以經儲存至REC記憶體區域。藉由清空命令觸發的儲存操作可在處理元件8之負荷/儲存隊列內,或在互連體14、記憶體控制器或記憶體16自身內的隊列中排隊,因此至記憶體單元之實際寫入可不發生直至稍後,但自處理元件之觀點,已知經遮罩狀態之記憶體寫入將明確地發生。
清空命令可為由處理電路系統之指令解碼器支援的本機指令。替代地,清空命令可為由預定事件觸發來繼續藉由指令解碼器解碼的指令之處理的命令。例如,清空命令可藉由一些其他類型的指令自動地觸發,該其他類型的指令暗示應確保狀態保存操作已對於與先前子代領域相關的架構狀態之所有需要的子集向記憶體觸發。
如以上所論述,將在領域切換期間保存的架構狀態之特別子集可取決於與源領域相關的邊界異常級(且亦可取決於源領域是否為巢套領域退出中之中間領域)。若領域切換為預定類型的領域切換(例如藉由源領域中之自願領域切換指令之執行觸發的領域切換),則可抑制狀態遮罩及保存操作。
因此,第32圖示出遲緩狀態保存及復原之實例。在步驟560處,以與以上所論述之相同方式處置領域退出。儘管將針對領域B隱藏的架構狀態之子集在領域退出時經遮罩且洗滌,但至REC之狀態保存可經延緩且因此可在與上代領域A相關的處理564之背景中進行遲緩狀態保存過程562。進行遲緩狀態保存的特別方式可為用於特別處理設計之實施方式選擇。在步驟566處,上代領域觸發向後至先前子代領域之領域進入(使用如以上所論述之ERET指令)。在此狀況下,因為領域進入回至先前退出的相同子代,所以不需要用於領域進入之清空命令將為有效的。若遲緩狀態保存操作之部分568仍經進行,則此可在領域進入之後經取消,且實情為用於領域B之對應狀態值可簡單地自處理元件之實體暫存器中之一些復原。因此,對於相對淺的異常退出及返回,使用遲緩狀態保存方法幫助降低所需要的記憶體存取之容量,從而改良效能。
第33圖示出以與第32圖中相同的方式進行自領域B1至該領域之上代領域A的領域退出560的另一實例。然而,此時,領域A希望將處理切換至不同的子代領域B2,而非返回至相同領域。因此,上代領域在步驟570處執行清空命令,該清空命令觸發處理元件以確保完成遲緩狀態保存過程562之任何剩餘部分(亦即針對仍常駐於處理元件之暫存器檔案中的經遮罩子集之所有剩餘架構狀態發佈儲存操作)。在步驟572處,上代領域設定領域識別符暫存器及鏈接暫存器以指示用於目標領域B2之領域ID及REC指標,且隨後在步驟574處執行ERET指令,該ERET指令觸發至領域B2之領域進入566。若清空命令在執行ERET指令之前尚未執行,則領域進入將會失敗。在步驟578處,自領域B2之REC記憶體區域進行狀態復原(再次此可遲緩地進行)。
因此,清空命令之使用致能處理器狀態至先前退出的領域之REC中之快速異常退出及緩慢流出,且亦允許淺異常退出及返回,其中狀態保持在處理元件之暫存器內且並非經儲存且自REC重新載入。
第34圖例示可藉由上代領域初始化的次領域之概念。如第34圖中所示,在特別異常級處操作的給定上代領域600可初始化次領域602,該次領域在與該次領域之上代相同的異常級處操作。完全領域600對應於給定軟體過程(或二或更多個過程之收集),但次領域對應於給定軟體過程內之預定位址範圍。因為完全領域為次領域之上代,所以如以上所論述,次領域可具有存取儲存在由上代完全領域擁有的記憶體區域中的資料的權限,但次領域可具有自存取儲存在由次領域602擁有的記憶體區域中的資料排除該次領域之上代完全領域的權限。此對於允許使給定軟體過程之一定部分比軟體過程之其他部分更保全為有用的。例如,用於核對行動銀行應用程式中之通行碼或用於處理其他敏感資訊之碼之一部分可經分配給次領域,以便防止相同應用程式或作業系統之其他部分存取彼敏感資訊。
次領域可通常以與完全領域相同的方式加以處置,其中一些差異如以下解釋。至次領域之進入及自次領域之退出可以與以上所論述之相同方式使用異常返回指令及異常事件加以處置。因此,次領域可具有以針對相同上代之完全子代領域的相同方式構造的子代領域ID,且可具備如以上所論述之領域描述符樹內之領域描述符。至次領域之進入可藉由執行ERET指令簡單地觸發,在執行ERET指令之前,該ERET指令已將適當子代次領域RID置放於RID暫存器中。因此,相同類型的ERET指令(屬第二變體)可用來觸發至完全領域或次領域之進入。
次領域可不同於完全領域的一個方式可為次領域可不允許初始化該等次領域之自有子代領域。因此,若當前領域為次領域,則用於初始化新領域之領域初始化命令可經拒絕。RMU可使用當前領域之領域描述符中之領域類型值來決定當前領域為完全領域或次領域。藉由在當前處於次領域中時禁止領域初始化,此簡化架構,因為不必提供額外狀態暫存器以用於由次領域在初始化進一步領域中使用。
類似地,在當前處於次領域中時,可禁止領域進入指令之執行。此簡化架構,因為其意味用於處置領域進入及退出(及異常進入及返回)的諸如以上所論述之ELR、SPSR、ESR及RID暫存器的成組暫存器中之一些不需要針對每一次領域再一次成組,此將難以管理,因為在設計時間可不知道給定過程將創建多少次領域。類似地,當當前領域為次領域而非完全領域時,可禁止觸發至在較低特權級處操作的過程之切換的異常返回事件。儘管在以上所論述之實例中單個類型的ERET指令充當領域進入指令及異常返回指令兩者,但此對於所有實施例並非必要的,且在提供分離指令的狀況下,則當當前領域為次領域時,可禁止異常返回指令兩者。
類似地,當在次領域中時的異常發生時,處理電路系統可在處置異常之前觸發自次領域至初始化次領域的上代完全領域之退出,而非直接自次領域採取異常。因此,異常觸發至上代完全領域之返回。至上代完全領域之異常返回可包括對REC的狀態遮罩、洗滌及保存操作,但藉由避免異常直接自次領域去往較高異常級處之領域,此避免對針對次領域再一次成組例外控制暫存器諸如ELR、SPSR及ESR之需要,從而簡化架構。
對於次領域,指示允許領域之處理的最大特權級的邊界異常級等於用於該領域之上代完全領域之邊界異常級。相反,對於子代完全領域,邊界異常級為相較於該子代完全領域之上代領域之邊界異常級的較少特權異常級。
當領域藉由上代領域初始化時,上代領域可選擇新領域將為子代完全領域或子代次領域,且可因此設定領域描述符中之適當領域類型參數。一旦領域為操作的,上代領域不再可改變領域類型,因為領域描述符之修改藉由以上關於第18圖所論述之管理領域生命週期禁止。
總之,引入類似於完全領域而管理但異常處置、領域初始化及領域進入功能在次領域內禁止的的次領域之能力使對應於完全領域之軟體過程內之給定位址範圍的碼之較小部分能夠與彼軟體之其他部分隔離,以為敏感碼或資料之一定片段提供額外保全。
第35圖例示可使用的模擬器實施方式。雖然較早描述的實施例就用於操作支援所關心的技術的特定處理硬體之設備及方法而言實施本發明,但亦可能根據本文所描述之實施例提供藉由電腦程式之使用實施的指令執行環境。在此類電腦程式提供硬體架構之基於軟體之實施方式的範圍內,該等電腦程式通常稱為模擬器。各種模擬器電腦程式包括仿真器、虛擬機、模型,及二進制翻譯器,包括動態二進制翻譯器。通常,模擬器實施方式可在主機處理器730上運行,該主機處理器任擇地運行主機作業系統720,支援模擬器程式710。在一些配置中,可存在介於硬體與所提供的指令執行環境之間的模擬之多個層,及/或提供在相同主機處理器上的多個相異指令執行環境。歷史上,已需要強大的處理器提供以合理速度執行的模擬器實施方式,但此方法可在某些環境中經調整,諸如當出於兼容性或重新使用原因需要運行對於另一處理器為本機的碼時。例如,模擬器實施方式可提供具有不由主機處理器硬體支援的額外功能之指令執行環境,或提供通常與不同硬體架構相關的指令執行環境。模擬之概述在「Some Efficient Architecture Simulation Techniques」, Robert Bedichek, Winter 1990 USENIX Conference, 第53–63頁中給出。
在先前已參考特別硬體構造或特徵描述實施例的程度上,在模擬實施例中,等效功能可藉由適當軟體構造或特徵提供。例如,特別電路系統可在模擬實施例中實施為電腦程式邏輯。類似地,記憶體硬體諸如暫存器或快取可在模擬實施例中實施為軟體資料結構。在先前描述的實施例中引用的硬件元件中之一或多者存在於主機硬體(例如,主機處理器730)上的配置中,一些模擬實施例可在適合的情況下利用主機硬體。
模擬器程式710可儲存在電腦可讀儲存媒體(該電腦可讀媒體可為非暫時性媒體)上,且提供至目標碼700 (該目標碼可包括如第2圖中所示之應用程式、作業系統及超管理器)的程式介面(指令執行環境),該程式介面與藉由模擬器程式710模型化的硬體架構之應用程式介面相同。因而,目標碼700之程式指令包括基於以上所描述之領域保護功能的記憶體存取之控制可使用模擬器程式710在指令執行環境內執行,使得實際上不具有以上所論述之設備2之硬體特徵的主機電腦730可模擬此等特徵。
至少一些實例提供虛擬機,該虛擬機提供根據方法操作的執行環境,該方法包含以下步驟:增強第一記憶體內之複數個記憶體區域之所有權權限,該等複數個記憶體區域之中的給定記憶體區域具有自複數個過程之中規定的給定擁有過程,該給定擁有過程具有用以控制對儲存在該給定記憶體區域內的給定所擁有資料之存取的互斥權限;其中回應於自該第該輸出命令源接收的用於該給定記憶體區域之第一輸出命令,進行第一輸出操作以加密該給定所擁有資料以形成給定加密資料且將該給定加密資料儲存在該第二記憶體中;且回應於在該第一輸出操作正在進行時自第二輸出命令源接收的用於該給定記憶體區域之第二輸出命令,決定該第二輸出命令源是否具有相較於該第一輸出命令源的在控制階層內之較高優先權位置,且當該第二輸出命令源具有較高優先權時,中斷該第一輸出操作且進行藉由該第二輸出命令規定的第二輸出操作,且當該第二輸出命令源具有較低優先權時,繼續進行該第一輸出操作且阻止該第二輸出操作之進行。虛擬機電腦程式可儲存在儲存媒體上。儲存媒體可為非暫時性儲存媒體。
在本申請案中,字語「經組配來……」用來意味設備之元件具有能夠實施所定義操作的組態。在此上下文中,「組態」意味硬體或軟體之互連之配置或方式。例如,設備可具有專用提供所定義操作的硬體,或處理器或其他處理裝置可經程式化來進行功能。「經組配來」並不暗示設備元件需要以任何方式改變以便提供所定義操作。
儘管本文已參考伴隨圖式詳細描述本發明之例示性實施例,但將理解,本發明不限於彼等精確實施例,且各種變化及修改可在不脫離如所附申請專利範圍界定的本發明之範疇及精神的情況下由熟習此項技術者實現於其中。
2‧‧‧資料處理系統/資料處理設備4‧‧‧系統單晶片積體電路6‧‧‧分離非依電性記憶體/外部記憶體/第一記憶體8、10‧‧‧通用處理器(CPU)/處理元件12‧‧‧圖形處理單元(GPU)/處理元件14‧‧‧互連電路系統/互連體16‧‧‧晶片上記憶體/記憶體/第二記憶體/主記憶體18‧‧‧外部記憶體介面20、22、24‧‧‧領域管理單元26‧‧‧通用記憶體管理單元/記憶體管理單元/MMU28、30‧‧‧通用記憶體管理單元32‧‧‧解碼及執行電路系統/處理電路系統34‧‧‧解碼及執行電路系統36‧‧‧作業系統核心/虛擬機38‧‧‧超管理器程式/超管理器40、150‧‧‧應用程式42‧‧‧領域描述符/區域屬性資料44~80、300、308、310~322、400~424、430~452、460~480、500、508、528、532、534、536、538、542、546、548、550、570~578‧‧‧步驟100‧‧‧轉譯旁看緩衝器/TLB/TLB結構/轉譯快取102‧‧‧表漫步單元104‧‧‧密碼單元/密碼電路系統110‧‧‧快取120‧‧‧轉譯表120-1‧‧‧級段1頁表120-2‧‧‧級段2頁表122‧‧‧領域管理表/領域控制資訊124‧‧‧領域描述符126‧‧‧領域執行情境區域/領域執行情境(REC)記憶體區域128‧‧‧領域區組表/所有權表/RMU表130‧‧‧根領域140‧‧‧領域142‧‧‧子代領域/領域144、148‧‧‧孫代領域146‧‧‧曾孫代領域152‧‧‧不同應用程式/領域154‧‧‧分離EL1領域160‧‧‧領域描述符樹162‧‧‧領域描述符樹區組/RDTG164‧‧‧領域描述符樹項/RDTE166‧‧‧領域描述符168‧‧‧領域識別符/RID170‧‧‧可變長度位元部分172‧‧‧終止標誌180‧‧‧給定領域182‧‧‧子代領域200‧‧‧領域描述符暫存器區組命令202‧‧‧清潔狀態204‧‧‧領域初始化命令206‧‧‧新狀態208‧‧‧領域活動命令210‧‧‧活動狀態212‧‧‧領域.無效命令214、220‧‧‧無效狀態216‧‧‧領域洗滌命令218‧‧‧領域描述符釋放命令222‧‧‧有效狀態224‧‧‧清潔命令226‧‧‧RMU清潔狀態/RMU-私有生命週期狀態/RMU清潔狀態228‧‧‧RMU註冊狀態/RMU註冊狀態/RMU-私有生命週期狀態230‧‧‧註冊命令/區域主張命令232‧‧‧區組添加命令/添加命令234‧‧‧區組釋放命令236‧‧‧收回命令250‧‧‧虛擬機ID/VMID252‧‧‧位址空間識別符/ASID254‧‧‧轉譯情境識別符260‧‧‧TLB項262‧‧‧虛擬定址標籤/VA-PA對264‧‧‧實體位址/VA-PA270‧‧‧全域RID272‧‧‧可見性屬性/可見性位元280‧‧‧TLB控制電路系統302‧‧‧標籤比較304‧‧‧第一(情境)比較306‧‧‧第二(領域)比較350‧‧‧狀態352~356‧‧‧狀態子集526‧‧‧進一步領域退出530‧‧‧ERET指令540‧‧‧異常處置器544‧‧‧領域進入560‧‧‧步驟/領域退出562‧‧‧遲緩狀態保存過程564‧‧‧處理566‧‧‧步驟/領域進入568‧‧‧部分600‧‧‧給定上代領域/完全領域602‧‧‧次領域700‧‧‧目標碼710‧‧‧模擬器程式720‧‧‧主機作業系統730‧‧‧主機處理器
本技術之進一步態樣、特徵及優點將自將結合伴隨圖式閱讀的以下實例描述顯而易見,在圖式中:
第1圖示意性地例示資料處理系統,該資料處理系統包括複數個處理元件,該等複數個處理元件利用儲存在第一記憶體及第二記憶體內的記憶體區域;
第2圖示意性地例示執行的複數個過程之間的關係、與彼等過程相關的特權級,及用於控制哪一過程擁有給定記憶體區域且因此具有互斥權以控制對彼給定記憶體區域之存取的與彼等過程相關的領域;
第3圖示意性地例示在由領域管理單元及記憶體管理單元管理下的記憶體區域;
第4圖示意性地例示經執行來將給定記憶體區域自第一記憶體輸出至第二記憶體的程式指令序列;
第5圖為示意性地例示頁輸出的流程圖;
第6圖示意性地例示複數個領域及在用以控制哪些輸出命令可中斷哪些其他輸出命令的控制階層內的該等複數個領域之關係;
第7圖為示意性地例示頁輸入的流程圖;
第8圖示意性地例示針對給定記憶體區域進行重疊輸出操作的第一輸出命令源及第二輸出命令源;
第9圖例示處理元件及儲存在記憶體中的領域管理控制資料之更詳細實例;
第10圖示出其中上代領域可定義描述各種子代領域之性質的領域描述符的領域階層之實例;
第11圖及第12圖例示領域階層的兩個不同實例;
第13圖示出藉由上代領域維持以記錄該上代領域之子代領域之領域描述符的領域描述符樹之實例;
第14圖示出自若干可變長度位元部分構造的局部領域識別符之實例,該等若干可變長度位元部分各自提供至領域描述符樹之對應級之索引;
第15圖示出用於領域階層中之每一領域之局部及全域領域識別符之實例;
第16圖示出領域描述符之內容之實例;
第17圖為例示不同領域生命週期狀態的表;
第18圖為指示領域之生命週期狀態之變化的狀態機圖表;
第19圖為示出用於給定記憶體區域的所有權表中之項之內容的表;
第20圖為示出可見性屬性的表,該等可見性屬性可針對給定記憶體區域加以設定以控制允許除擁有者之外的哪些領域存取區域;
第21圖示出用於記憶體區域的不同生命週期狀態之實例,該等不同生命週期狀態包括對應於RMU-私有記憶體區域的狀態,該等RMU-私有記憶體區域經保留來用於由領域管理單元互斥存取;
第22圖為示出用於給定記憶體區域的生命週期狀態之變遷的狀態機;
第23圖例示給定記憶體區域之所有權可如何在上代領域與該上代領域之子代領域之間傳遞;
第24圖示意性地例示基於頁表提供的記憶體存取控制,該等頁表定義記憶體控制屬性,該等記憶體控制屬性取決於特權級及領域管理單元級,該等領域管理單元級基於藉由擁有者領域設定的許可提供對記憶體存取之控制之正交級;
第25圖例示轉譯旁看緩衝器之實例;
第26圖為例示基於頁表及RMU表來控制對記憶體之存取之方法的流程圖;
第27圖例示在不同異常級處執行的過程可存取的狀態;
第28圖為例示進入領域或自異常返回之方法的流程圖;
第29圖為例示退出領域或採取異常之方法的流程圖;
第30圖例示進入至子代領域及向後退出至上代領域之實例;
第31圖示出巢套領域退出及巢套巢套領域進入之實例;
第32圖示出在自領域退出時使用領域執行情境之遲緩保存之實例;
第33圖示出清空命令之使用之實例,該清空命令用來確保與先前退出的子代領域相關的狀態之子集在進入不同子代領域之前經保存至記憶體;
第34圖例示次領域之使用,該等次領域對應於與次領域之上代領域相關的過程內之特定位址範圍;以及
第35圖例示可使用的模擬器實例。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無

Claims (21)

  1. 一種用於處理資料之設備,該設備包含:記憶體存取電路系統,其基於一所有權表以增強一第一記憶體內之複數個記憶體區域之所有權權限,該所有權表包括一或多個項,每一個項針對該等複數個記憶體區域之中的一給定記憶體區域指示自複數個過程之中規定的一給定擁有過程,該給定擁有過程具有用以控制對儲存在該給定記憶體區域內的給定所擁有資料之存取的互斥權限;其中:該記憶體存取電路系統經配置以在當對應於一目標實體位址的該所有權表的一對應項指示一當前的過程不被許允存取該目標實體位址時,拒絕來自該當前的過程對存取在該目標實體位址處的資料的一存取請求;該記憶體存取電路系統回應於自一第一輸出命令源接收的用於該給定記憶體區域之一第一輸出命令而進行一第一輸出操作以加密該給定所擁有資料以形成給定加密資料且將該給定加密資料儲存在一第二記憶體中;且該記憶體存取電路系統回應於在該第一輸出操作正在進行時自一第二輸出命令源接收的用於該給定記憶體區域之一第二輸出命令而決定該第二輸出命令源是 否具有相較於該第一輸出命令源的在一控制階層內之較高優先權位置,且:當該第二輸出命令源具有一較高優先權時,中斷用於加密該給定所擁有資料並在該第二記憶體中儲存該給定加密資料的該第一輸出操作,且進行藉由該第二輸出命令規定的一第二輸出操作,且當該第二輸出命令源具有一較低優先權時,繼續進行用於加密該給定所擁有資料並在該第二記憶體中儲存該給定加密資料的該第一輸出操作,且阻止該第二輸出操作之進行。
  2. 如請求項1之設備,其中該等複數個過程包含一過程階層,該過程階層包括具有至少一個子代過程之一上代過程,該上代過程具有相較於該至少一個子代過程的在該控制階層內之一較高優先權位置。
  3. 如請求項1之設備,其中該等複數個過程具有在一特權級階層內之各別特權級,該特權級階層獨立於該等所有權權限。
  4. 如請求項3之設備,其中該控制階層對應於該特權級階層。
  5. 如請求項1之設備,其中該第一輸出操作包含形成規定該給定所擁有資料之一或多個特性的第一元資料及將該第一元資料儲存在對於該記憶體存取電 路系統私有的該第一記憶體之一元資料記憶體區域內,以便為該記憶體存取電路系統可存取的且為該等複數個過程不可存取的。
  6. 如請求項5之設備,其中該等複數個過程可存取的一記憶體區域在軟體控制下註冊為該元資料記憶體區域以變為該等複數個過程不可存取的。
  7. 如請求項5之設備,其中該元資料記憶體區域為具有在軟體控制下決定的一分支型樣的一元資料記憶體區域樹之部分。
  8. 如請求項5之設備,其中該記憶體存取電路系統回應於用於該給定加密資料之一輸入命令而進行一輸入操作以使用該第一元資料來確認該給定加密資料之完整性,以解密該給定加密資料以形成該給定所擁有資料且以將該給定所擁有資料復原至該給定記憶體區域。
  9. 如請求項5之設備,其中該記憶體存取電路系統回應於用於該元資料記憶體區域之一輸出命令而加密該第一元資料資料以形成加密元資料且將該加密元資料儲存在該第二記憶體中。
  10. 如請求項9之設備,其中該記憶體存取電路系統回應於用於該加密元資料之一輸入命令而進行一輸入操作以解密該加密元資料以形成該第一元資料 且將該第一元資料復原至該元資料記憶體區域。
  11. 如請求項10之設備,其中用於該元資料之該輸出命令及用於該元資料之該輸入命令由一軟體過程發佈。
  12. 如請求項1之設備,其中對儲存該給定加密資料的該第二記憶體之存取超出藉由該記憶體存取電路系統之控制。
  13. 如請求項1之設備,其中在該給定記憶體區域經使得為除該給定擁有過程之外的一過程可存取的之前,該第一輸出操作以與該給定所擁有資料不相關的值覆寫該給定所擁有資料。
  14. 如請求項1之設備,其中該記憶體存取電路系統在該第一輸出操作期間改變該給定記憶體區域之所有權權限,使得該給定記憶體區域在該第一輸出操作期間為該等複數個過程中任一個不可存取的。
  15. 如請求項1之設備,其中該等複數個過程包括一應用程式、充當用於該應用程式之一給定客虛擬機執行環境之部分的一客作業系統程式,及用來管理一或多個客虛擬機執行環境的一超管理器程式,該一或多個客虛擬機執行環境包括該給定客虛擬機執行環境。
  16. 如請求項15之設備,其中該給定擁有過程 為一客作業系統,且藉由該記憶體存取電路系統增強的該等所有權權限防止由該超管理器程式對由該客作業系統擁有的該給定所擁有資料之存取。
  17. 如請求項1之設備,其中在該第二輸出操作完成之後,記憶體存取電路系統恢復該第一輸出操作。
  18. 如請求項1之設備,其中:該第一記憶體是一晶片上記憶體;及該第二記憶體是一晶片外記憶體。
  19. 一種用於處理資料之設備,該設備包含:記憶體存取構件,其基於一所有權表以增強一第一記憶體內之複數個記憶體區域之所有權權限,該所有權表包括一或多個項,每一個項針對該等複數個記憶體區域之中的一給定記憶體區域指示自複數個過程之中規定的一給定擁有過程,該給定擁有過程具有用以控制對儲存在該給定記憶體區域內的給定所擁有資料之存取的互斥權限;其中:該記憶體存取構件經配置以在當對應於一目標實體位址的該所有權表的一對應項指示一當前的過程不被許允存取該目標實體位址時,拒絕來自該當前的過程對存取在該目標實體位址處的資料的一存取請求;該記憶體存取構件回應於自一第一輸出命令源接收 的用於該給定記憶體區域之一第一輸出命令而進行一第一輸出操作以加密該給定所擁有資料以形成給定加密資料且將該給定加密資料儲存在該第二記憶體中;且該記憶體存取構件回應於在該第一輸出操作正在進行時自一第二輸出命令源接收的用於該給定記憶體區域之一第二輸出命令而決定該第二輸出命令源是否具有相較於該第一輸出命令源的在一控制階層內之較高優先權位置,且:當該第二輸出命令源具有一較高優先權時,中斷用於加密該給定所擁有資料並在該第二記憶體中儲存該給定加密資料的該第一輸出操作,且進行藉由該第二輸出命令規定的一第二輸出操作,且當該第二輸出命令源具有一較低優先權時,繼續進行用於加密該給定所擁有資料並在該第二記憶體中儲存該給定加密資料的該第一輸出操作,且阻止該第二輸出操作之進行。
  20. 一種處理資料之方法,該方法包含以下步驟:基於一所有權表以增強一第一記憶體內之複數個記憶體區域之所有權權限,該所有權表包括一或多個項,每一個項針對該等複數個記憶體區域之中的一給定記 憶體區域指示自複數個過程之中規定的一給定擁有過程,該給定擁有過程具有用以控制對儲存在該給定記憶體區域內的給定所擁有資料之存取的互斥權限;其中:當對應於一目標實體位址的該所有權表的一對應項指示一當前的過程不被許允存取該目標實體位址時,拒絕來自該當前的過程對存取在該目標實體位址處的資料的一存取請求;回應於自一第一輸出命令源接收的用於該給定記憶體區域之一第一輸出命令,進行一第一輸出操作以加密該給定所擁有資料以形成給定加密資料且將該給定加密資料儲存在一第二記憶體中;且回應於在該第一輸出操作正在進行時自一第二輸出命令源接收的用於該給定記憶體區域之一第二輸出命令,決定該第二輸出命令源是否具有相較於該第一輸出命令源的在一控制階層內之較高優先權位置,且:當該第二輸出命令源具有一較高優先權時,中斷用於加密該給定所擁有資料並在該第二記憶體中儲存該給定加密資料的該第一輸出操作,且進行藉由該第二輸出命令規定的一第二輸出操作,且當該第二輸出命令源具有一較低優先權時,繼續進行用於加密該給定所擁有資料並在該第二記憶 體中儲存該給定加密資料的該第一輸出操作,且阻止該第二輸出操作之進行。
  21. 一種用於控制一主機資料處理設備以提供一指令執行環境的電腦程式,該電腦程式包含:記憶體存取程式邏輯,其基於一所有權表以增強一第一記憶體內之複數個記憶體區域之所有權權限,該所有權表包括一或多個項,每一個項針對該等複數個記憶體區域之中的一給定記憶體區域指示自複數個過程之中規定的一給定擁有過程,該給定擁有過程具有用以控制對儲存在該給定記憶體區域內的給定所擁有資料之存取的互斥權限;其中:該記憶體存取程式邏輯經配置以在當對應於一目標實體位址的該所有權表的一對應項指示一當前的過程不被許允存取該目標實體位址時,拒絕來自該當前的過程對存取在該目標實體位址處的資料的一存取請求;該記憶體存取程式邏輯回應於自一第一輸出命令源接收的用於該給定記憶體區域之一第一輸出命令而進行一第一輸出操作以加密該給定所擁有資料以形成給定加密資料且將該給定加密資料儲存在一第二記憶體中;且該記憶體存取程式邏輯回應於在該第一輸出操作正 在進行時自一第二輸出命令源接收的用於該給定記憶體區域之一第二輸出命令而決定該第二輸出命令源是否具有相較於該第一輸出命令源的在一控制階層內之較高優先權位置,且:當該第二輸出命令源具有一較高優先權時,中斷用於加密該給定所擁有資料並在該第二記憶體中儲存該給定加密資料的該第一輸出操作,且進行藉由該第二輸出命令規定的一第二輸出操作,且當該第二輸出命令源具有一較低優先權時,繼續進行用於加密該給定所擁有資料並在該第二記憶體中儲存該給定加密資料的該第一輸出操作,且阻止該第二輸出操作之進行。
TW107121800A 2017-06-28 2018-06-26 記憶體區域的中斷輸出 TWI787288B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1710344.1A GB2563885B (en) 2017-06-28 2017-06-28 Interrupting export of memory regions
GB1710344.1 2017-06-28

Publications (2)

Publication Number Publication Date
TW201905698A TW201905698A (zh) 2019-02-01
TWI787288B true TWI787288B (zh) 2022-12-21

Family

ID=59523526

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107121800A TWI787288B (zh) 2017-06-28 2018-06-26 記憶體區域的中斷輸出

Country Status (4)

Country Link
US (1) US11816227B2 (zh)
GB (1) GB2563885B (zh)
TW (1) TWI787288B (zh)
WO (1) WO2019002815A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2593486B (en) * 2020-03-24 2022-06-15 Advanced Risc Mach Ltd Apparatus and method using plurality of physical address spaces

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146156A1 (en) * 2005-07-14 2010-06-10 Canon Kabushiki Kaisha Memory control apparatus and method
CN102024123A (zh) * 2010-12-20 2011-04-20 北京世纪互联工程技术服务有限公司 一种云计算中虚拟机镜像导入方法及装置
US20150378941A1 (en) * 2014-06-27 2015-12-31 Carlos V. Rozas Instructions and logic to interrupt and resume paging in a secure enclave page cache
US20160371496A1 (en) * 2015-06-16 2016-12-22 Microsoft Technology Licensing, Llc Protected regions

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5438677A (en) * 1992-08-17 1995-08-01 Intel Corporation Mutual exclusion for computer system
US5511054A (en) * 1993-03-31 1996-04-23 Sony Corporation Apparatus and method for multiplexing encoded data signals and recording medium having multiplexed signals recorded thereon
US6058461A (en) * 1997-12-02 2000-05-02 Advanced Micro Devices, Inc. Computer system including priorities for memory operations and allowing a higher priority memory operation to interrupt a lower priority memory operation
US20030140149A1 (en) * 2002-01-14 2003-07-24 Richard Marejka Communication protocol for use in controlling communications in a monitoring service system
FR2865334B1 (fr) * 2004-01-21 2006-03-03 Arteris Procede et systeme de transmission de messages dans un reseau d'interconnexions.
US7769964B2 (en) 2006-08-21 2010-08-03 Intel Corporation Technique to perform memory reference filtering
KR100868766B1 (ko) * 2007-01-31 2008-11-17 삼성전자주식회사 복수의 dma 요청 블록들을 가지는 직접 메모리 액세스장치의 우선 순위를 결정하는 방법 및 장치
JP4367512B2 (ja) * 2007-03-27 2009-11-18 コニカミノルタビジネステクノロジーズ株式会社 画像処理装置、画像データの転送制御方法及び転送制御プログラム
US8495332B2 (en) * 2009-07-24 2013-07-23 Apple Inc. Controller for optimizing throughput of read operations
GB2478733B (en) * 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events
JP5910213B2 (ja) * 2012-03-19 2016-04-27 富士通株式会社 ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
CN104077343B (zh) 2013-12-26 2018-08-24 国家计算机网络与信息安全管理中心 一种哈希表元素失效删除方法
US10009213B2 (en) * 2014-05-06 2018-06-26 NetSuite Inc. System and method for isolation of multi-tenant platform customization using child processes
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
US10042556B2 (en) * 2015-07-30 2018-08-07 International Business Machines Corporation Reclamation of storage medium
JP6617461B2 (ja) * 2015-07-30 2019-12-11 富士通株式会社 制御装置、制御プログラム、及び制御方法
US20170277903A1 (en) * 2016-03-22 2017-09-28 Qualcomm Incorporated Data Protection Using Virtual Resource Views

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146156A1 (en) * 2005-07-14 2010-06-10 Canon Kabushiki Kaisha Memory control apparatus and method
CN102024123A (zh) * 2010-12-20 2011-04-20 北京世纪互联工程技术服务有限公司 一种云计算中虚拟机镜像导入方法及装置
US20150378941A1 (en) * 2014-06-27 2015-12-31 Carlos V. Rozas Instructions and logic to interrupt and resume paging in a secure enclave page cache
US20160371496A1 (en) * 2015-06-16 2016-12-22 Microsoft Technology Licensing, Llc Protected regions

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
期刊 Seongwook Jin, Jeongseob Ahn, Jinho Seol, Sanghoon Cha, Jaehyuk Huh, and Seungryoul Maeng, H-SVM: Hardware-assisted Secure Virtual Machines under a Vulnerable Hypervisor Volume:64 Issue:10 IEEE Transaction on Computers 2015/01/15 圖3及圖5,說明書第1節、第3.1節~第4節及第6.5節 *
期刊 Seongwook Jin, Jeongseob Ahn, Jinho Seol, Sanghoon Cha, Jaehyuk Huh, and Seungryoul Maeng, H-SVM: Hardware-assisted Secure Virtual Machines under a Vulnerable Hypervisor Volume:64 Issue:10 IEEE Transaction on Computers 2015/01/15 圖3及圖5,說明書第1節、第3.1節~第4節及第6.5節。

Also Published As

Publication number Publication date
CN110785745A (zh) 2020-02-11
WO2019002815A1 (en) 2019-01-03
GB2563885A (en) 2019-01-02
US20200117809A1 (en) 2020-04-16
TW201905698A (zh) 2019-02-01
GB201710344D0 (en) 2017-08-09
US11816227B2 (en) 2023-11-14
GB2563885B (en) 2019-10-23

Similar Documents

Publication Publication Date Title
TWI784016B (zh) 領域階層中的目標領域的無效
TWI787291B (zh) 與領域相關的架構狀態的遮罩
TWI787289B (zh) 用於轉譯快取查找的領域識別符比較
TWI796414B (zh) 用於區域融合的設備、方法、電腦程式及儲存媒體
TWI795476B (zh) 碼領域
TWI790243B (zh) 用於記憶體存取控制的領域的領域識別符
TWI787287B (zh) 用於異常返回指令的資料處理設備、方法、電腦程式及儲存媒體
CN110785746B (zh) 存储器区域锁定
TWI787290B (zh) 次領域
TWI787288B (zh) 記憶體區域的中斷輸出
TWI787286B (zh) 領域執行情境遮罩及保存
TWI781188B (zh) 領域管理單元-私有記憶體區域
TWI789457B (zh) 用於記憶體區域的巡檢清除-提交狀態的資料處理設備、方法、電腦程式及儲存媒體
CN110785745B (zh) 中断存储器区域的输出
CN111448555B (zh) 用于数据处理的装置、方法和介质
GB2564097A (en) Memory region locking