TW202016742A - 記憶體存取控制 - Google Patents

記憶體存取控制 Download PDF

Info

Publication number
TW202016742A
TW202016742A TW108132688A TW108132688A TW202016742A TW 202016742 A TW202016742 A TW 202016742A TW 108132688 A TW108132688 A TW 108132688A TW 108132688 A TW108132688 A TW 108132688A TW 202016742 A TW202016742 A TW 202016742A
Authority
TW
Taiwan
Prior art keywords
memory address
process group
access
memory
given
Prior art date
Application number
TW108132688A
Other languages
English (en)
Other versions
TWI807094B (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 TW202016742A publication Critical patent/TW202016742A/zh
Application granted granted Critical
Publication of TWI807094B publication Critical patent/TWI807094B/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/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/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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
    • 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/145Protection 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 virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Vehicle Body Suspensions (AREA)

Abstract

一種裝置包括多執行緒處理元件,該多執行緒處理元件用以執行處理執行緒,作為一或多個進程群,進程群每一者具有一或多個處理執行緒,每一進程群具有在一或多個進程群當中唯一的進程群識別符,且藉由能力資料與虛擬記憶體位址空間中的相應記憶體位址範圍相關聯;以及記憶體位址變換電路系統,該記憶體位址變換電路系統用以藉由進程群中之一者之處理執行緒將虛擬記憶體位址變換為實體記憶體位址;記憶體位址變換電路系統經配置以使許可資料與給定虛擬記憶體位址至對應實體記憶體位址之變換相關聯,該許可資料定義表示准許存取給定虛擬記憶體位址之相應進程群的一或多個進程群識別符,以及根據與請求記憶體存取之處理執行緒之進程群相關聯的能力資料以及對許可資料是否定義了請求記憶體存取之處理執行緒之進程群的進程群識別符的偵測,而禁止存取給定虛擬記憶體位址。

Description

記憶體存取控制
本揭示案係關於記憶體存取控制。
資料處理裝置之一些實例將進程處置為一或多個所謂的隔間或進程群,該等隔間或進程群每一者具有一或多個執行緒。記憶體存取由所謂的能力資料決定,在所謂的混合隔間之情形下該能力資料為環境(通用)能力,或者在所謂的純隔間之情形下該能力資料為隔間專用的能力。
在論文「CHERI:用於可擴展軟體隔間化之混合能力系統架構(CHERI: A Hybrid Capability-System Architecture for Scalable Software Compartmentalization)」(2015年IEEE安全與隱私研討會,2015年5約17日至21日,ISBN 978-1-4673-6949-7)中論述了此些隔間之實例,該論文之內容以引用方式併入本文中。
隔間藉由共享記憶體位址或區域彼此通訊可能是有用的。然而,認為能夠撤銷此共享存取是有用的,例如,將記憶體位址或區域重新分配給另一用途。此操作可能困難,因為在任何時候,系統很難知曉哪些對共享記憶體之正在進行的引用仍然有效。
在實例佈置中,提供一種裝置,該裝置包括: 多執行緒處理元件,該多執行緒處理元件用以執行處理執行緒,作為一或多個進程群,該等進程群每一者具有一或多個處理執行緒,每一進程群具有在一或多個進程群當中唯一的進程群識別符,且藉由能力資料與虛擬記憶體位址空間中的相應記憶體位址範圍相關聯;以及 記憶體位址變換電路系統,該記憶體位址變換電路系統用以回應於由進程群中之一者之處理執行緒進行之請求記憶體存取將虛擬記憶體位址變換為實體記憶體位址; 記憶體位址變換電路系統經配置以使許可資料與給定虛擬記憶體位址至對應實體記憶體位址之變換相關聯,該許可資料定義表示准許存取給定虛擬記憶體位址之相應進程群的一或多個進程群識別符;以及根據與請求記憶體存取之處理執行緒之進程群相關聯的能力資料以及對許可資料是否定義了請求記憶體存取之處理執行緒之進程群的進程群識別符的偵測,而禁止存取給定虛擬記憶體位址。
在另一實例佈置中,提供一種方法,該方法包括: 使用多執行緒處理元件執行處理執行緒,作為一或多個進程群,該等進程群每一者具有一或多個處理執行緒,每一進程群具有在一或多個進程群當中唯一的進程群識別符,且藉由能力資料與虛擬記憶體位址空間中的相應記憶體位址範圍相關聯; 使用記憶體位址變換電路系統藉由進程群中之一者之處理執行緒將虛擬記憶體位址變換為實體記憶體位址; 記憶體位址變換電路系統使許可資料與給定虛擬記憶體位址至對應實體記憶體位址之變換相關聯,該許可資料定義表示准許存取給定虛擬記憶體位址的相應進程群的一或多個進程群識別符;以及 記憶體位址變換電路系統根據與請求記憶體存取之處理執行緒之進程群相關聯的能力資料,以及對許可資料是否定義了請求記憶體存取之處理執行緒之進程群的進程群識別符的偵測,而禁止存取給定虛擬記憶體位址。
本發明技術之另外相應態樣及特征由隨附申請專利範圍限定。
在參考隨附諸圖論述實施例之前,提供對實施例之以下描述。
實例實施例提供一種裝置,包括: 多執行緒處理元件,該多執行緒處理元件執行處理執行緒,作為一或多個進程群,該等進程群每一者具有一或多個處理執行緒,每一進程群具有在一或多個進程群當中唯一的進程群識別符,且藉由能力資料與虛擬記憶體位址空間中的相應記憶體位址範圍相關聯;以及 記憶體位址變換電路系統,該記憶體位址變換電路系統用以回應於由進程群中之一者之處理執行緒進行的請求記憶體存取將虛擬記憶體位址變換為實體記憶體位址; 記憶體位址變換電路系統經配置以使許可資料與給定虛擬記憶體位址至對應實體記憶體位址之變換相關聯,該許可資料定義表示准許存取給定虛擬記憶體位址之相應進程群的一或多個進程群識別符;以及根據與請求記憶體存取之處理執行緒之進程群相關聯的能力資料,以及對許可資料是否定義了請求記憶體存取之處理執行緒之進程群的進程群識別符的偵測,而禁止存取給定虛擬記憶體位址。
本發明技術可允許使用由諸如MMU及/或TLB的記憶體位址變換電路系統處置的控制機制來在進程群或隔間之間共享記憶體位址或區域,使得可僅藉由改變由記憶體位址變換電路系統所保存的許可資料來撤銷共享存取。
在實例佈置中,處理元件經配置以實施進程群管理器,該進程群管理器可操作以至少將進程群識別符分配給每一進程群。舉例而言,對於存取將在兩個或兩個以上進程群之間共享之記憶體位址範圍而言,進程群管理器可具有其他功能,諸如,可操作以向記憶體位址變換電路系統提供兩個或兩個以上進程群之進程群識別符。在此情形下,記憶體位址變換電路系統可經配置以儲存兩個或兩個以上進程群之進程群識別符作為許可資料。此可提供整個進程群管理器維持由記憶體位址變換電路系統保存之許可資料的便利方式。在一些實例中,進程群管理器經配置以藉由啟動自記憶體位址變換電路系統所保存之許可資料刪除給定進程群之進程群識別符,啟動撤銷給定進程群對記憶體位址範圍之存取。
在實例佈置中,不同進程群類型之間的存取允許性可不同。舉例而言,對於第一進程群類型而言,能力資料定義適用於第一類型之所有進程群的允許記憶體位址範圍;且對於第二進程群類型之給定進程群而言,能力資料定義適用於第二進程群類型之給定進程群的允許記憶體位址範圍。
在一些實例中,對於第一進程群類型(諸如,所謂混合類型)之給定進程群而言,記憶體位址變換電路系統經配置以在以下情形中任一者或兩者時允許存取給定虛擬記憶體位址: (i)能力資料指示給定虛擬記憶體位址處於給定進程群之允許記憶體位址範圍內;及 (ii)給定進程群之進程群識別符為由許可資料定義之進程群識別符; 且其他情形下禁止存取。
在一些實例中,對於第二進程群類型(諸如,所謂純類型)之給定進程群而言,記憶體位址變換電路系統經配置以在以下情形中之兩者時允許存取給定虛擬記憶體位址: (i)能力資料指示給定虛擬記憶體位址處於給定進程群之允許記憶體位址範圍內;及 (ii)給定進程群之進程群識別符為由許可資料定義之進程群識別符; 且其他情形下禁止存取。
舉例而言,記憶體位址變換電路系統可包括以下各者中之一者或兩者:記憶體管理單元;及變換旁看緩存器。
另一實例實施例提供一種方法,包括: 使用多執行緒處理元件執行處理執行緒,作為一或多個進程群,該等進程群每一者具有一或多個處理執行緒,每一進程群具有在一或多個進程群當中唯一的進程群識別符,且藉由能力資料與虛擬記憶體位址空間中的相應記憶體位址範圍相關聯; 使用記憶體位址變換電路系統藉由進程群中之一者之處理執行緒將虛擬記憶體位址變換為實體記憶體位址; 記憶體位址變換電路系統使許可資料與給定虛擬記憶體位址至對應實體記憶體位址之變換相關聯,該許可資料定義表示准許存取給定虛擬記憶體位址的相應進程群的一或多個進程群識別符;以及 記憶體位址變換電路系統根據與請求記憶體存取之處理執行緒之進程群相關聯的能力資料,以及對許可資料是否定義了請求記憶體存取之處理執行緒之進程群的進程群識別符的偵測,而禁止存取給定虛擬記憶體位址。
現參考圖式,圖1示意性地圖示資料處理裝置2之實例,該資料處理裝置2包括用於處理指令之處理管線4。在此實例中,處理管線4包括諸多管線級,包括提取級6、解碼級8、發出級10、執行級或處理元件12及回寫級14,但應了解,可提供其他類型或組合之級。舉例而言,在一些實施方式中可包括用於執行暫存器重命名之重命名級。待處理指令在級之間移動,且當指令在一個級處待決時,另一指令可在管線4之不同級處待決。
提取級6自1階(L1)指令快取記憶體20提取指令。提取級6可通常自連續的指令位址順序地提取指令。然而,提取級亦可具有用於預測分支指令之結果的分支預測器22,且提取級6可在預測分支被採用時,自(非順序的)分支目標位址提取指令,或在預測分支不被採用時自下一順序位址提取指令。分支預測器22可包括一或多個分支歷史表,用於儲存預測某些分支是否很有可能被採用之資訊。舉例而言,分支歷史表可包括計數器,用於追蹤先前執行之分支的實際結果或表示對分支進行之預測的置信度。分支預測器22亦可包括分支目標位址快取記憶體(branch target address cache; BTAC)24,用於快取分支指令之先前目標位址以使得在後續遇到相同分支指令時可預測此些目標位址。
將所提取之指令傳遞至解碼級8,該解碼級8解碼指令以產生經解碼指令。經解碼指令可包括控制資訊,該控制資訊用於控制執行級12以執行適當處理操作。對於自快取記憶體20提取之一些更複雜指令而言,解碼級8可將彼些指令映射至多個經解碼指令,此可稱為微操作(μops或uops)。因而,在自L1指令快取記憶體20提取之指令與由管線之後續級所見的指令之間可能不存在一對一之關係。大體而言,本申請案中對「指令」之引用應被解釋為包括微操作。
將經解碼指令傳遞至發出級10,該發出級10決定執行指令所需之運算元是否可用,並在運算元可用時發出用於執行之指令。一些實施方式可支援有序處理,使得發出指令以便以對應於自L1指令快取記憶體20中提取指令之程式次序的次序執行。其他實施方式可支援無序執行,使得可以與程式次序不同之次序將指令發出至執行級12。無序處理可有用於改良效能,因為雖然在等待運算元時先前指令被停止,但可首先執行程式次序中運算元可用之後一指令。
發出級10將指令發出至執行級12,在執行級12處執行指令以執行各種資料處理操作。舉例而言,執行級可包括諸多執行單元30、32、34,包括用於對整數值執行算術或邏輯運算之算術/邏輯單元(arithmetic/logic unit; ALU)30、用於對以浮點(floating-point; FP)形式表示之值執行運算的浮點單元32,及載入/儲存單元34,該載入/儲存單元34用於執行用於將資料值自1階(L1)資料快取記憶體36載入至暫存器40之載入操作或用於將資料值自暫存器40儲存至L1資料快取記憶體36之儲存操作。應了解,此些僅為可提供之執行單元之類型的一些實例,且亦可提供許多其他種類。為了執行處理操作,執行級12可自暫存器40之集合讀取資料值。可接著藉由回寫級14將已執行指令之結果回寫至暫存器40。
L1指令快取記憶體20及L1資料快取記憶體36可為包括多階快取記憶體之快取記憶體階層架構的一部分。舉例而言,亦可提供2階(L2)快取記憶體44,且視情況可提供另外層級之快取記憶體。在此實例中,L2快取記憶體44在L1指令快取記憶體20與L1資料快取記憶體36之間共享,但其他實例可具有單獨的L2指令及資料快取記憶體。當待提取指令不在L1指令快取記憶體20中時,則可自L2快取記憶體44提取待提取指令,且類似地,若該指令不在L2快取記憶體44中,則可自主記憶體50提取該指令。類似地,回應於載入指令,若資料不在L1資料快取記憶體36中則可自L2快取記憶體44提取資料,及在需要時自記憶體50提取資料。可使用任何已知方案來管理快取記憶體階層架構。
管線4用以代表程式指令及資料值之位址可為虛擬位址,但至少主記憶體50以及視情況亦有快取記憶體階層架構之至少一些層級可為實體定址。因而,可提供變換旁看緩存器(translation lookaside buffer; TLB) 52,其在記憶體管理單元(memory management unit; MMU)53之控制下用於將管線4所使用之虛擬位址變換為用於定址快取記憶體或記憶體之實體位址。舉例而言,TLB 52可包括諸多條目,每一條目指定虛擬位址空間之對應頁面的虛擬頁面位址(virtual page address; 「VPA」)以及對應的實體頁面位址(physical page address; 「PPA」),虛擬頁面位址應映射至該對應的實體頁面位址(「PPA」),以便將對應頁面內之虛擬位址變換為實體位址。舉例而言,虛擬及實體頁面位址可對應於對應的虛擬及實體位址之最重要部分,其中剩餘之最不重要部分在虛擬位址映射至實體位址時保持不變。除了位址變換資訊以外,每一TLB條目亦可包括指定存取許可(諸如,指示在管線4之某些模式下是否可存取位址之某些頁面)之一些資訊(「perm」)。在一些實施方式中,TLB條目亦可定義位址之對應頁面的其他性質,諸如,快取記憶體策略資訊,其定義回應於讀取或寫入操作而更新快取記憶體階層架構之哪些層級(例如,快取記憶體是應以回寫還是直寫模式操作),或定義是否可由記憶體系統重新排序對對應頁面中之位址之資料存取(與由管線4發出資料存取之次序相比較)的資訊。
雖然圖1示出單層TLB 52,但應了解,可由MMU 53提供變換之階層架構及/或可提供多個TLB,以使得一階(L1)TLB 52可包括用於變換諸多最近存取之頁面中之位址的TLB條目,且可提供二階(L2)TLB用於儲存更大數目個頁面之條目。當所需條目未存在於L1 TLB中時,則該條目可自L2 TLB提取,或自階層架構中之另外TLB提取。或者,可使用所謂的中間實體位址(intermediate physical address; IPA),以使得第一變換為自虛擬位址變換至IPA,且第二級變換為自IPA變換至實體位址。以此方式,可使用多階位址變換,以使得(例如)第一TLB(或TLB之階層架構)可用以將虛擬位址變換為中間位址,且使用一或多個另外TLB之第二階變換可接著將中間位址變換為用以存取快取記憶體或記憶體之實體位址。此可有用於支援虛擬化,虛擬化中(例如)第一階位址變換可由作業系統管理,且第二階位址變換可由超管理器管理。
在圖1中,為了圖式之清楚,示出TLB 52之單級及單階。
若待存取頁面之所需條目並未在TLB中之任一者中,則可由MMU 53執行頁表行走以存取記憶體50中之所謂頁表。在本發明技術中可使用任何已知TLB管理方案。
如圖1中所示,裝置2可具有有界指標暫存器60之集合。雖然在圖1中將有界指標暫存器之該集合示為與通用資料暫存器40之集合實體上分離,但在一個實施方式中,可使用同一實體儲存器提供通用資料暫存器與有界指標暫存器兩者。
每一有界指標暫存器60包括可用以決定待存取之資料值之位址的指標值62,以及指定使用對應指標62時位址之允許範圍的範圍資訊64。有界指標暫存器60亦可包括限制資訊66(亦稱作許可資訊),該限制資訊66可定義關於指標之使用的一或多個限制/許可。舉例而言,限制66可用以限制可使用指標62之指令的類型,或可在其中使用指標之管線4的模式。因而,可將範圍資訊64及限制資訊66視為定義允許使用指標62之能力C0 -CM-1 。當試圖使用在已定義能力之外的指標62時,可能觸發錯誤。範圍資訊64可有用於(例如)確保指標保持在某些已知邊界內且不會偏離至記憶體位址空間之可能含有敏感或安全資訊的其他區域。在將同一實體儲存器用於通用資料暫存器與有界指標暫存器兩者之實施方式中,可(例如)在一個實施方式中將指標值62儲存在與用於對應的通用暫存器相同的儲存位置內。
可藉由多執行緒處理元件來實施執行級12以執行一或多個處理執行緒。
圖2示出實例類型的指令,對於該等指令而言允許範圍用以防止對資料或指令的未經授權之存取。如在圖2之頂部部分中所示,特定有界指標暫存器PR1包括給定指標值62及範圍資訊64,在此實例中使用定義允許範圍之下部邊界的下部邊界位址68及定義允許範圍之上部邊界的上部邊界位址69來指定該範圍資訊64。舉例而言,邊界68、69經設定以定義位址80000至81000之範圍。當某些指令引用有界指標暫存器PR1且自指標62決定之位址在此範圍之外時,可能觸發錯誤。
舉例而言,如圖2之部分A中所示,在一些系統中,若試圖將指標暫存器60中之指標62的值設置為處於范圍資訊64所指定的範圍(此處,假設指標直接指定位址)之外的值,則可能觸發錯誤。此避免了指標62採用指定範圍之外的任何值,使得可確保使用該指標之任何存取安全地處於允許範圍內。或者,如圖2之部分B所示,當指令試圖在指標62之位址處於指定範圍之外時存取由彼位址識別之位置時,可能觸發錯誤。因而,可能仍允許將指標62設定為在指定範圍之外的值,但一旦試圖進行指標位址(或自指標導出之位址)處的資料存取,則當該位址處於允許範圍之外時可能觸發錯誤。其他系統可能回應於圖2之部分A及B中所示之指令的類型而觸發錯誤。
可以不同方式設定範圍資訊64,且設定該範圍資訊64之方式為實施細節,且本發明技術不依賴於所使用之特定方法。純粹作為實例,特權指令、使用者空間程式碼、安全程式碼,或作業系統或超管理器可指定給定指標所允許之範圍。舉例而言,指令設定架構可包括用於為給定指標62設定或修改範圍資訊64之諸多指令,且可將此些指令之執行限於處理器4之某些軟體或某些模式或異常狀態。可使用用於設定或修改範圍資訊64之任何已知技術。
除了在執行引用指標之某些指令時可在執行級12使用之有界指標儲存元件60的集合之外,亦可使用程式計數器能力(program counter capability; PCC)暫存器80以在自一階指令快取記憶體20提取指令時在提取級6處提供類似功能。特定而言,可將程式計數器指標儲存在欄位82中,其中PCC 80亦提供範圍資訊84及任何適當的限制資訊86,類似於具有在有界指標儲存元件60之集合中的指標中之每一者的範圍及限制資訊。圖1亦示意性地圖示預設資料能力(Default Data Capability; DDC)暫存器90及系統存取能力(System Access Capability; SAC)暫存器95,以下論述此兩者。
圖3示意性地圖示如何與個別資料區塊相關聯地使用標籤位元以識別彼些資料區塊是否表示能力(亦即,有界指標及相關聯之限制資訊)或表示正常資料。特定而言,記憶體位址空間110將儲存一連串資料區塊115,資料區塊115通常將具有指定大小。純粹為了說明,在此實例中假設每一資料區塊包括128個位元。與每一資料區塊115相關聯,提供標籤欄位120,該標籤欄位120在一個實例中為稱作標籤位元之單位元欄位,標籤位元經設定以識別相關聯資料區塊表示能力,且經清除以指示相關聯資料區塊表示正常資料且因而無法被視為能力。應了解,與設定或清除狀態相關聯之實際值可視實施而變化,但純粹藉由圖示,在一個實例實施方式中,若標籤位元具有為1之值,則其指示相關聯資料區塊為能力,且若其具有為0之值,則其指示相關聯資料區塊含有正常資料。
當將能力載入至有界指標暫存器60(亦稱作能力暫存器)中之一者中(諸如,圖3中所示之能力暫存器100)時,標籤位元隨著能力資訊而移動。因此,當將能力載入至能力暫存器100中時,指標102、範圍資訊104及限制資訊106(後文中稱作許可資訊)將被載入至能力暫存器中。另外,與彼能力暫存器相關聯或作為其內之特定位元欄位,標籤位元108將經設定以識別出內容表示能力。類似地,當將能力儲存回記憶體時,將與其中儲存有能力之資料區塊相關聯地設定相關標籤位元120。藉由此方法,有可能區分能力與正常資料,且因而確保不會將正常資料用作能力。
返回圖1,根據此處描述之技術,可產生可撤銷之有界指標,除了與有界指標相關聯之常見資訊之外,亦包括與對應記憶體區域相關聯之第一符記值,對於該對應記憶體區域而言彼有界指標將用於控制存取。另外,為了與可撤銷有界指標(其與記憶體區域之分配執行個體有關)相關聯,提供標頭,該標頭被存儲在記憶體中之標頭位置處,其中該標頭具有第一符記欄位,該第一符記欄位之儲存值初始化為第一符記值,將與可撤銷有界指標相關聯地使用該第一符記值。標頭位置被佈置成可自可撤銷有界指標所提供之範圍資訊導出,因而使得能夠在有界指標用以產生記憶體位址時定位標頭。當隨後解除分配已分配記憶體區域時,修改第一符記欄位中之儲存值。能力
儘管可將更高級別應用程式佈置成在「安全」約束執行環境(諸如,JAVA及JavaScript)中運行,但系統之較低層大體必須提供至硬體上之實際執行的鏈路。因此,幾乎所有此些層目前皆用C/C++程式化語言編寫,C/C++程式化語言通常由數千萬行可信(但不值得信賴)之代碼組成。
旨在提供一種底層架構,以提供對惡意攻擊更強的固有免疫力。能力可提供此策略之一部分。
能力資料類型表示存取一個或多個架構上定義之資源的可委派之權限符記。能力大致分為三種類型:1)記憶體能力,其用以准許存取用於資料傳送及指令提取之記憶體範圍 2)系統存取能力,其用以准許存取某些系統操作 3)密封能力,其用以藉由物件類型封閉其他能力
每一能力含有諸多邏輯欄位,其中一些僅存在於某些能力類型中。在圖4中示意性地示出此些欄位之實例。
能力暫存器用以保存能力並定義記憶體系統之擴展,使得在能力被保存在通用記憶體中時強制能力屬性。可提供指令以自記憶體載入並存儲能力,使用能力暫存器以存取記憶體中之資料及能力,使用能力進行分支,以及操縱保存於能力暫存器中之能力而不偽造新的權利。
由於使用能力而引起之限制超出了由現有MMU及基於異常層級之限制所強制執行的限制。可將能力之使用佈置成不會削弱彼些機制已提供的保護。環境能力
可提供定義環境能力之一或多個(例如,三個)環境能力暫存器。使用此些設施,可在每一異常層級處賦能及去能能力擴展之環境作用。在異常層級處賦能環境作用賦能環境能力暫存器之作用,修改異常條目之行為並返回到該層級,並修改自然地對位址進行操作之若干現有指令的行為。在一些實例中,提供三個環境能力暫存器: (a)程式計數器能力(Program Counter Capability; PCC)暫存器 其限制指令提取之使用。可使用能力分支及返回指令以及異常進入與返回來更新PCC邊界及許可。 (b)預設資料能力(Default Data Capability; DDC)暫存器 PCC影響與程式計數器有關之資料存取。其他資料存取受到預設資料能力之隱式使用或顯式使用能力作為基址暫存器的限制。 (c)系統存取能力(System Access Capability; SAC)暫存器 對系統暫存器及系統操作之存取可受SAC暫存器中所保存之許可限制。變換旁看緩存器及記憶體管理單元
在圖1之裝置中,需要MMU 53之主要原因在於MMU 53處置當前未本端地儲存在TLB 52中之位址變換。以下將進一步論述執行此之方式。在處置此些問題時,參考圖5,對於當前未由TLB 52保存之變換而言,MMU 130自TLB接收與待變換之虛擬位址500有關的請求510,並將響應520返回到TLB 52以指示接著由TLB 52輸出的所需實體位址(physical address; PA)530。另一方面,已由TLB緩衝之變換僅由TLB輸出,大體比TLB必須自MMU 53獲得之變換略快一些。因此,自系統之其餘部分的角度來看,TLB提供了所需變換,但此情況發生之速度可能取決於變換是否已由TLB緩衝。
此些操作亦由圖6之流程圖示意性地表示,向TLB 52供應VA 500形成了對對應PA 530之請求(在圖6中示為步驟600)。
如圖所述,TLB含有VA與PA之間的變換的快取記憶體或儲存器。可根據用於TLB之操作的已知技術來建立TLB藉以儲存特定VA至PA變換的準則。快取之變換可包括最近使用之變換、頻繁使用之變換及/或預期很快需要之變換(諸如,與靠近最近存取之VA的VA有關的變換)。總之,情況是TLB含有所有可能的VA至PA變換之集合之子集的快取記憶體,使得當需要特定的VA至PA變換時,可能發現變換已被保存在TLB處之快取記憶體中,或可能未發現。
因此,在下一步驟610處,TLB偵測所需變換是否當前確實由TLB快取(「命中」)。若答案為是,則控制轉至步驟640,在步驟640處,PA 530返回以用於所需記憶體存取。
若答案為否,則控制轉至步驟620,在步驟620處,TLB 52將包括所需VA 510之請求發送至MMU 53。MMU 53導出所需的VA至PA變換(例如,使用所謂的頁表行走(page table walk; PTW)技術)且至少將對應於VA 510之PA 520(以及在本實例中,以下將論述之一些許可資料)發送回TLB 102,在TLB 102處其經儲存作為經快取的或經緩衝的變換(在步驟630處)。
最後,在步驟640處,TLB 52應用儲存於TLB 52處之變換以提供輸出PA 530。隔間
在本實例裝置中,將進程模型化為一或多個所謂隔間之集合。舉例而言,執行級12可由多執行緒處理元件實施,以執行處理執行緒,作為一或多個進程群或隔間,該等進程群或隔間每個有一或多個處理執行緒,每一進程群或隔間具有在一或多個進程群當中唯一的進程群隔間識別符(以下將論述之CID),且藉由能力資料與虛擬記憶體位址空間中之相應記憶體位址範圍相關聯。
隔室可為混合的(混合隔間或HC)或純的(純隔間或PC),且由隔間管理器(compartment manager; CM)之執行個體管理。將隔間管理器CM視為可信且可信賴部件,其能夠看到大部分或全部可用的虛擬記憶體位址範圍。因此,在實例佈置中,處理元件12經配置以實施進程群管理器,該進程群管理器可操作以至少將進程群識別符分配給每一進程群。
隔間中之每一者可含有一或多個執行緒。可排程條目為執行緒。圖7示意性地圖示虛擬記憶體位址(virtual memory address; VMA)空間700(示意性地示出,其中如所繪示,記憶體位址自左至右增大)中之此佈置。應注意,僅可視化了使用者空間條目。
對於混合隔間(諸如,圖7中之HC1、HC2)而言,藉由以上所論述之有關DDC限制資料存取。混合隔間通常可由應用程式使用,並受環境能力限制。混合隔間可產生能力,但此並非要求。
對於純隔間(諸如,圖7中之PC1、PC2)而言,操作受針對彼純隔間特定之一或多個能力之特定集合中所編碼的範圍限制。純隔間不採用指標且僅使用能力。
因此,在此些實例中,對於第一(混合)進程群類型而言,能力資料定義適用於第一類型之所有進程群的允許記憶體位址範圍;以及 對於第二(純)進程群類型之給定進程群而言,能力資料定義適用於第二進程群類型之給定進程群的允許記憶體位址範圍。
在隔間化之實例使用中,可提供一種特徵,藉以藉由允許隔間經由共享記憶體或記憶體區域彼此通訊,可減少系統調用之數目,(例如)以便提高效率。亦即,一個以上的隔間可存取此共享記憶體或記憶體區域。
圖8示意性地圖示此佈置,其中隔間管理器CM 800不僅監視隔間810、820的提供,而且亦監視虛擬記憶體中可由多個隔間存取之一或多個共享記憶體空間830的產生。
圖9示意性地圖示(以類似於圖7之格式的格式)在實例純隔間PC1與PC2之間共享的記憶體區域SM1,及在混合隔間HC1與HC2之間共享的另一實例共享記憶體空間SM2。藉由箭頭(諸如,箭頭900)示意性地指示對共享記憶體空間之存取。
本發明實施例解決了此方法之基本版本的某些特徵: 第一特征是為了在混合隔間之間共享記憶體,共享記憶體必須在由相應DDC形成之連續範圍內。
第二特征是一旦在兩個隔間之間共享了記憶體區域,便無法以安全方式釋放該記憶體區域,因為對共享記憶體的所有盛行引用之集合是未知的。
可(在任何特定時間)將有效引用儲存在暫存器中,壓入堆疊或保存為資料。因此,即使釋放共享記憶體,對其有效引用仍可藉由執行程式碼之某一部分而以此些形式中之一者保存。此保留引用將提供一種潛在方式,以此方式,即使在彼記憶體區域被重新分配至重疊的記憶體位址範圍之後,仍可變更或「監聽」(讀取或取樣)先前共享但不再共享之資料。可將此結果稱作非期望之「免費使用」情況,且在圖10中示意性地示出,其表示先前(但不再)授權之隔間1000監聽或存取現由CM 1020分配用於在隔間1030與1040之間共享的共享記憶體1010。
本發明技術之實施例藉由提供撤銷機制以有效地撤銷隔間存取或共享記憶體區域之許可而解決了此些問題。一種可能的替代實例撤銷機制可包括進階MMU配置,其中頻繁使用映射及未映射之記憶體區域,從而撤銷引用。然而,此方法並未用在本發明實施例中,因為其可能增加隔間管理器之程式碼複雜性,並有可能將TLB壓力(處理要求)提升到不可接受的水平。
因此,本揭示案之實施例旨在提供另一技術來解決不留下有效引用並知曉其編號的問題。隔間識別符
可始終在系統中唯一地識別隔間。為此,使用適當的識別符產生方法。隔間識別符(Compartment identifier; CID)就像進程識別符(process identifier; PID),不同之處在於隔間識別符(CID)與進程之內聯部分有關。當前CID儲存在暫存器中。每一CID(在此些實例中)在其他盛行CID中是唯一的。變換描述符
解決方案之基礎為實施新的變換描述符(translation descriptor; TD)格式作為擴展。此描述符可含有(例如)至少兩個CID以定義存取彼記憶體範圍之隔間。若在稍後將論述之至少一些情形下(例如,關於純隔間)無CID被設定在TD中,則不可存取該記憶體。另外,當經由能力(包括環境能力)執行儲存與載入操作時,應將架構改變成具有不同的記憶體存取檢查。
圖11示意性地圖示TLB 52'或MMU 53'之使用(例如,在未使用TLB時),其在快取記憶體1100中緩衝與每一VA至PA變換相關聯的一或多個屬性1102,屬性包括TD。TLB 52'及/或MMU 53'提供使用記憶體位址變換電路系統之實例,該記憶體位址變換電路系統包括以下各者中之一者或兩者:記憶體管理單元;及變換旁看緩存器。
在一些實例中,TLB 52'/MMU 53'可接收試圖存取特定記憶體位址、頁面或區域之隔間的CID 1110作為輸入,並使用控制器1120參考所儲存之屬性來偵測是否允許該存取。
可如下實施由控制器1120進行之檢查及所得的存取許可。
記憶體位址變換電路系統(諸如,TLB及/或MMU)經佈置以回應於由進程群中之一者之處理執行緒進行的已請求記憶體存取將虛擬記憶體位址變換為實體記憶體位址。其亦經配置以使許可資料(諸如,TD)與給定虛擬記憶體位址至對應實體記憶體位址之變換相關聯,該許可資料定義表示准許存取給定虛擬記憶體位址之相應進程群的一或多個進程群識別符(CID);以及根據與請求記憶體存取之處理執行緒之進程群相關聯的能力資料,以及對許可資料是否定義了請求記憶體存取之處理執行緒之進程群的進程群識別符的偵測,而禁止存取給定虛擬記憶體位址。針對混合隔間之存取
測試如下:[核對DDC] 或(OR) [檢查針對CID之MMU]
換言之,如藉由圖12中之表所示,若左邊兩行中之任一行或兩行為真(存取在允許DDC邊界內;TD定義彼CID),則允許存取。
所提出之佈置可簡化與混合隔間之記憶體共享。共享記憶體可在DDC邊界之外,但仍可存取。若共享記憶體由新的TD描述且CID經正確設定,則由MMU授權存取。若共享記憶體在DDC邊界之外且不存在TD,則應拒絕存取。
因此,在此些實例中,對於第一(混合)進程群類型之給定進程群而言,記憶體位址變換電路系統經配置以在以下情形中之任一者或兩者下允許存取給定虛擬記憶體位址: (i)能力資料指示給定虛擬記憶體位址處於給定進程群之允許記憶體位址範圍內;及 (ii)給定進程群之進程群識別符為由許可資料定義之進程群識別符; 且其他情形下禁止存取。針對純隔間之存取
測試如下:[核對能力] 及(AND) [檢查MMU及CID(若已設定)]
換言之,如藉由圖13中之表所示,若左邊兩行均為真(存取由有效能力定義;TD定義彼CID)且記憶體位址或區域未以其他方式映射,則允許存取。
當涉及純隔間時,本發明佈置可增強或加強安全性。以前,若存在有效能力,則此些隔間可存取資料。所提出之TD格式改變了此行為。
因此,在此些實例中,對於第二(純)進程群類型之給定進程群而言,記憶體位址變換電路系統經配置以在以下情形中之兩者下允許存取給定虛擬記憶體位址: (i)能力資料指示給定虛擬記憶體位址處於給定進程群之允許記憶體位址範圍內;及 (ii)給定進程群之進程群識別符為由許可資料定義之進程群識別符; 且其他情形下禁止存取。 MMU 用於此些測試
此佈置提供了存取檢查,將MMU視為上述許可特徵之平等許可提供者,而不是(如在先前提出之MMU的情形下)低層存取控制器。實例 - 14 至圖 16
現將參考圖14至圖16描述此些技術之實例,其中隔間管理器1400產生並監視對由虛擬記憶體邊界A、B所定義之共享記憶體區域1410的存取。對共享記憶體區域之存取需要由TLB 52'/MMU 53'(在其中查閱屬性資料1102)進行之記憶體位址變換。在圖14至圖16中,僅圖示上述與TD之CID有關的測試。
在圖14中,已建立共享記憶體區域1410,以便在具有相應CID(CID1及CID2)之隔間1420、1430之間共享。TD指定「CID1或CID2」,因而由隔間1420、1430進行的任何存取(自與CID有關之測試部分的角度來看)均為允許的。
在圖15中,已將共享記憶體重新分配給具有為CID3、CID4之相應CID的隔間1500、1510。TD現指定「CID3或CID4」,因而由隔間1500、1510進行的任何存取(自與CID有關之測試部分的角度來看)均為允許的。然而,由具有CID=CID1之隔間1420進行的嘗試存取未能在記憶體變換時執行CID測試,且因而不被准許。
以此方式,已成功地重新分配共享記憶體。藉由修改與共享記憶體區域相關聯之TD,已移除給與隔間1420之先前許可,而無需識別並定位對共享記憶體之任何未完成引用。
在圖16中圖示另一實例,其中已撤銷記憶體區域1410之共享本質,因而僅對於具有CID=CID3之隔間1500而言存取是准許的。由於TD與請求記憶體變換之隔間之CID的比較失敗,因此不允許隔間1420、1510(或實際上任何其他隔間)的任何嘗試存取。
圖17及圖18為概述此些過程的示意性流程圖。
圖17涉及混合隔間。在步驟1700處,考慮到由相關DDC設定之邊界,關於是否允許記憶體存取檢查該記憶體存取。若(在步驟1710處)答案為是,則允許存取。若為否,則在步驟1720處,由MMU或TLB進行關於CID是否被TD所指定之一或多個CID之群所覆蓋的檢查。若(在步驟1730處)為是,則允許存取。若不是,則不允許存取。
圖18涉及純隔間。在步驟1800處,檢查與存取隔間有關之能力的有效性。若(在步驟1810處)其為有效的,則控制轉至步驟1820。若不是,則存取不被允許。在步驟1820處,由TLB/MMU核對請求隔間之CID與TD。若(在步驟1830處)CID被TD所指定之一或多個CID覆蓋,則允許存取。若不是,則不允許存取。可能的益處
如上所述,即使有效引用仍存在,藉由改變TD格式亦可容易地撤銷共享記憶體之分配。除此之外,當以新的TD格式適當地設定CID時,可在任何時候重複使用VMA範圍。可隨時撤銷共享記憶體,但實際上將映射保持在共享的一側,因而,就CID4而言(例如)CID3與CID4之間的共享記憶體可被撤銷,但對於CID3而言只需藉由改變TD以僅指定CID3來維持。
因為所有記憶體存取無論如何皆完成位址變換,所以本解決方案不具有效能損失。
TD格式有可能簡化TLB管理,從而有可能導致較少的TLB刷新。可藉由單個TLB條目來描述純隔間,其中存取類型被編碼於能力中。混合隔間可每一記憶體種類具有一個TLB條目,其中存取類型由MMU強制執行。TD 之填入
參考圖19,在實例佈置中,隔間管理器(或進程群管理器)作為負責監視記憶體之共享的進程運行。在一些實例中,CM本身可填入TD欄位,或在其他實例中,CM為具有請求內核填入TD欄位之特權的實體。除CM之外的隔間(在實例佈置中)不具有特權來填入TD欄位或請求內核填入TD欄位。
對於將在兩個或兩個以上進程群之間共享存取的記憶體位址範圍而言,CM可提供或請求內核以(在步驟1900處)向記憶體位址變換電路系統提供兩個或兩個以上進程群之進程群識別符;且記憶體位址變換電路系統經配置以(在步驟1910處)儲存兩個或兩個以上進程群之進程群識別符作為許可資料。可作為建立共享記憶體區域的一部分來執行此操作。
類似地,CM(進程群管理器)經配置以藉由啟動(在步驟2010處)自記憶體位址變換電路系統所保存之許可資料刪除給定進程群之進程群識別符,啟動(在圖20之步驟2000處)撤銷給定進程群對記憶體位址範圍的存取。
圖21為圖示一種方法之示意性流程圖,該方法包括: 使用多執行緒處理元件執行(在步驟2100處)處理執行緒,作為一或多個進程群,該等進程群每一者具有一或多個處理執行緒,每一進程群具有在一或多個進程群當中唯一的進程群識別符,且藉由能力資料與虛擬記憶體位址空間中的相應記憶體位址範圍相關聯; 使用記憶體位址變換電路系統,藉由進程群中之一者的處理執行緒將虛擬記憶體位址變換(在步驟2110處)為實體記憶體位址; 記憶體位址變換電路系統使許可資料與給定虛擬記憶體位址至對應實體記憶體位址之變換相關聯(在步驟2120處),該許可資料定義表示准許存取給定虛擬記憶體位址的相應進程群的一或多個進程群識別符;以及 記憶體位址變換電路系統根據與請求記憶體存取之處理執行緒之進程群相關聯的能力資料,以及對許可資料是否定義了請求記憶體存取之處理執行緒之進程群的進程群識別符的偵測,而禁止(在步驟2130處)存取給定虛擬記憶體位址。
圖22圖示可使用之模擬器實施方式。雖然前述實施例在用於操作支援相關技術之特定處理硬體的裝置及方法方面實施了本發明技術,但亦有可能根據本文所述實施例提供指令執行環境,該指令執行環境是經由使用電腦程式來實施。
可時常將此些電腦程式稱作模擬器,只要其提供硬體架構的基於軟體之實施即可。模擬器電腦程式之種類包括仿真器、虛擬機、模型,及二進位變換器,包括動態二進位變換器。通常,模擬器實施方式可在主機處理器2230上運行,該主機處理器2230視情況運行主機作業系統2220,支援模擬器程式2210。在一些佈置中,在硬體與所提供之指令執行環境及/或被提供在同一主機處理器上之多個相異的指令執行環境之間可能存在多個模擬層。從歷史上看,需要強大處理器提供以合理速度執行之模擬器實施,但在某些情境下此方法可能是有道理的,諸如,當出於兼容性或重複使用原因而期望運行原生於另一處理器之程式碼時。舉例而言,模擬器實施方式可提供具有額外功能(主機處理器硬體不支援該額外功能)之指令執行環境,或提供通常與不同硬體架構相關聯之指令執行環境。在「一些高效架構模擬技術(Some Efficient Architecture Simulation Techniques)」(Robert Bedichek,1990年冬天之USENIX會議,第53-63頁)中給出模擬之概述。
鑒於先前已參考特定硬體構造或特征描述了實施例,在模擬實施例中,可藉由合適軟體構造或特征提供等效功能。舉例而言,可在模擬實施例中將特定電路系統實施為電腦程式邏輯。類似地,可在模擬實施例中將諸如暫存器或快取記憶體之記憶體硬體實施為軟體資料結構。在前述實施例中所引用之硬體元件中的一或多者存在於主機硬體(例如,主機處理器2230)上的佈置中,一些模擬實施例可在合適情況下使用主機硬體。
可將模擬器程式2210儲存在電腦可讀儲存媒體(其可為非暫時性媒體)上,且該模擬器程式2210提供至目標程式碼2200(其可包括應用程式、作業系統及超管理器)之程式介面(指令執行環境),該程式介面與藉由模擬器程式2210模型化之硬體架構的應用程式介面相同。因此,可使用模擬器程式2210自指令執行環境內執行目標程式碼2200之程式指令(包括上述功能),以使得並不實際上具有上述裝置之硬體特征的主機電腦2230可模仿此些特征。
在本申請案中,詞語「經配置以……」用以意謂裝置之元件具有能夠執行已定義操作的配置。在此上下文中,「配置」意謂硬體或軟體之互連的佈置或方式。舉例而言,裝置可具有提供已定義操作之專用硬體,或可程式化處理器或其他處理設備(諸如,如上所述之處理元件)以執行功能。「經配置以……」並不暗示裝置元件需要以任何方式改變以提供所定義操作。
儘管本文中已參考隨附圖式詳細描述了本發明技術之說明性實施例,但應理解,本發明技術並不限於彼些精確實施例,且熟習此項技藝者可在不脫離如由附加申請專利範圍所限定的本發明技術之範疇的情況下在其中進行各種改變、添加及修改。舉例而言,在不脫離本發明技術之範疇的情況下可進行附屬項之特征與獨立項之特征的各種組合。
2:資料處理裝置 4:處理管線 6:提取級 8:解碼級 10:發出級 12:執行級或處理元件 14:回寫級 20:1階(L1)指令快取記憶體 22:分支預測器 24:分支目標位址快取記憶體(BTAC) 30:算術/邏輯單元(ALU)30 32:浮點(FP)單元 34:載入/儲存單元 36:1階(L1)資料快取記憶體 40:暫存器 44:2階(L2)快取記憶體 50:主記憶體 52:變換旁看緩存器(TLB) 52':TLB 53':MMU 53:記憶體管理單元(MMU) 60:有界指標暫存器 62:指標值 64:範圍資訊 66:限制資訊 68:下部邊界位址 69:上部邊界位址 80:程式計數器能力(PCC)暫存器 82:欄位 84:範圍資訊 86:限制資訊 90:預設資料能力(DDC)暫存器 95:系統存取能力(SAC)暫存器 100:能力暫存器 102:指標 104:範圍資訊 106:限制資訊 108:標籤位元 110:記憶體位址空間 115:資料區塊 120:標籤欄位 500:虛擬位址 510:請求 520:響應 530:實體位址(PA) 600:步驟 610:步驟 620:步驟 630:步驟 640:步驟 700:虛擬記憶體位址(VMA)空間 800:隔間管理器CM 810:隔間 820:隔間 830:共享記憶體空間 900:箭頭 1000:隔間 1010:共享記憶體 1020:CM 1030:隔間 1040:隔間 1100:快取記憶體 1102:屬性 1110:CID 1120:控制器 1400:隔間管理器 1410:共享記憶體區域 1420:隔間 1430:隔間 1500:隔間 1510:隔間 1700:步驟 1710:步驟 1720:步驟 1730:步驟 1800:步驟 1810:步驟 1820:步驟 1830:步驟 1900:步驟 1910:步驟 2000:步驟 2010:步驟 2100:步驟 2110:步驟 2120:步驟 2130:步驟 2200:目標程式碼 2210:模擬器程式 2220:主機作業系統 2230:主機處理器
僅作為實例,將參考在隨附圖式中所圖示的本發明技術之實施例來進一步描述本發明技術。
圖1示意性地圖示資料處理裝置;
圖2示意性地圖示有界指標;
圖3示意性地圖示能力暫存器之使用;
圖4示意性地表示能力欄位之集合;
圖5示意性地圖示變換旁看緩存器(translation lookaside buffer; TLB)及記憶體管理單元(memory management unit; MMU)之使用;
圖6為圖示藉由TLB及MMU進行之操作的示意性流程圖;
圖7示意性地圖示隔間之集合;
圖8示意性地圖示藉由隔間管理器建立共享記憶體區域;
圖9示意性地圖示共享記憶體區域之使用;
圖10示意性地圖示共享記憶體區域之重新分配;
圖11示意性地圖示記憶體位址變換單元;
圖12及圖13示意性地圖示記憶體存取條件;
圖14至圖16示意性地圖示共享記憶體區域之重新分配;
圖17至圖21為圖示相應方法之流程圖;以及
圖22示意性地圖示模擬器實施。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
1102:屬性
1420:隔間
1500:隔間
1510:隔間

Claims (9)

  1. 一種裝置,包括: 一多執行緒處理元件,該多執行緒處理元件用以執行處理執行緒,作為一或多個進程群,該等進程群每一者具有一或多個處理執行緒,每一進程群具有在該一或多個進程群當中唯一的一進程群識別符,且藉由能力資料與一虛擬記憶體位址空間中的一相應記憶體位址範圍相關聯;以及記憶體位址變換電路系統,該記憶體位址變換電路系統用以藉由該等進程群中之一者之一處理執行緒將一虛擬記憶體位址變換為一實體記憶體位址;該記憶體位址變換電路系統經配置以使許可資料與一給定虛擬記憶體位址至一對應實體記憶體位址之一變換相關聯,該許可資料定義表示准許存取該給定虛擬記憶體位址之相應進程群的一或多個進程群識別符;以及根據與請求該記憶體存取之該處理執行緒之該進程群相關聯的該能力資料,以及對該許可資料是否定義了請求該記憶體存取之該處理執行緒之該進程群的該進程群識別符的一偵測,而禁止存取該給定虛擬記憶體位址。
  2. 如請求項1所述之裝置,其中該處理元件經配置以實施一進程群管理器,該進程群管理器可操作以至少將一進程群識別符分配給每一進程群。
  3. 如請求項1所述之裝置,其中: 對於一第一進程群類型而言,該能力資料定義適用於該第一類型之所有進程群的一允許記憶體位址範圍;以及對於一第二進程群類型之一給定進程群而言,該能力資料定義適用於該第二進程群類型之該給定進程群的一允許記憶體位址範圍。
  4. 如請求項3所述之裝置,其中對於該第一進程群類型之一給定進程群而言,該記憶體位址變換電路系統經配置以在以下情形中之任一者或兩者下允許存取該給定虛擬記憶體位址: (i)該能力資料指示該給定虛擬記憶體位址處於該給定進程群之該允許記憶體位址範圍內;及(ii)該給定進程群之該進程群識別符為由該許可資料定義之一進程群識別符;且其他情形下禁止存取。
  5. 如請求項3所述之裝置,其中對於該第二進程群類型之一給定進程群而言,該記憶體位址變換電路系統經配置以在以下情形中之兩者下允許存取該給定虛擬記憶體位址: (i)該能力資料指示該給定虛擬記憶體位址處於該給定進程群之該允許記憶體位址範圍內;及(ii)該給定進程群之該進程群識別符為由該許可資料定義之一進程群識別符;且其他情形下禁止存取。
  6. 如請求項2所述之裝置,其中: 對於存取將在兩個或兩個以上進程群之間共享之一記憶體位址範圍而言,該進程群管理器可操作以向該記憶體位址變換電路系統提供該兩個或兩個以上進程群之該等進程群識別符;以及該記憶體位址變換電路系統經配置以儲存該兩個或兩個以上進程群之該等進程群識別符作為該許可資料。
  7. 如請求項6所述之裝置,其中該進程群管理器經配置以藉由啟動自該記憶體位址變換電路系統所保存之該許可資料刪除該給定進程群之該進程群識別符,啟動撤銷一給定進程群對一記憶體位址範圍之存取。
  8. 如請求項1所述之裝置,其中該記憶體位址變換電路系統包括以下各者中之一者或兩者:一記憶體管理單元;及一變換旁看緩存器。
  9. 一種方法,包括以下步驟: 使用一多執行緒處理元件執行處理執行緒,作為一或多個進程群,該等進程群每一者具有一或多個處理執行緒,每一進程群具有在該一或多個進程群當中唯一的一進程群識別符,且藉由能力資料與一虛擬記憶體位址空間中的一相應記憶體位址範圍相關聯;使用記憶體位址變換電路系統藉由該等進程群中之一者之一處理執行緒將一虛擬記憶體位址變換為一實體記憶體位址;該記憶體位址變換電路系統使許可資料與一給定虛擬記憶體位址至一對應實體記憶體位址之一變換相關聯,該許可資料定義表示准許存取該給定虛擬記憶體位址的相應進程群的一或多個進程群識別符;以及該記憶體位址變換電路系統根據與請求該記憶體存取之該處理執行緒之該進程群相關聯的該能力資料,以及對該許可資料是否定義了請求該記憶體存取之該處理執行緒之該進程群的該進程群識別符的一偵測,而禁止存取該給定虛擬記憶體位址。
TW108132688A 2018-10-15 2019-09-11 記憶體存取控制 TWI807094B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1816742.9A GB2578099B (en) 2018-10-15 2018-10-15 Memory access control
GB1816742.9 2018-10-15

Publications (2)

Publication Number Publication Date
TW202016742A true TW202016742A (zh) 2020-05-01
TWI807094B TWI807094B (zh) 2023-07-01

Family

ID=64394849

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108132688A TWI807094B (zh) 2018-10-15 2019-09-11 記憶體存取控制

Country Status (8)

Country Link
US (1) US11573911B2 (zh)
EP (1) EP3818447B1 (zh)
JP (1) JP7425786B2 (zh)
KR (1) KR20210068393A (zh)
CN (1) CN112585590B (zh)
GB (1) GB2578099B (zh)
TW (1) TWI807094B (zh)
WO (1) WO2020079387A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2593487B (en) * 2020-03-24 2022-05-04 Advanced Risc Mach Ltd Apparatus and method

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02105240A (ja) * 1988-10-13 1990-04-17 Fuji Xerox Co Ltd 仮想記憶管理装置
US5845129A (en) * 1996-03-22 1998-12-01 Philips Electronics North America Corporation Protection domains in a single address space
US6564311B2 (en) * 1999-01-19 2003-05-13 Matsushita Electric Industrial Co., Ltd. Apparatus for translation between virtual and physical addresses using a virtual page number, a physical page number, a process identifier and a global bit
JP2000276405A (ja) 1999-01-19 2000-10-06 Matsushita Electric Ind Co Ltd アドレス変換装置及びこのアドレス変換装置を有するコンピュータシステム
US7782329B2 (en) * 2004-12-10 2010-08-24 Rockwell Collins, Inc. Method and apparatus for protected graphics generation
WO2008155841A1 (ja) 2007-06-20 2008-12-24 Fujitsu Limited 演算処理装置および演算処理方法
US8146107B2 (en) * 2007-07-10 2012-03-27 Mitel Networks Corporation Virtual machine environment for interfacing a real time operating system environment with a native host operating system
KR101013509B1 (ko) * 2008-01-04 2011-02-11 주식회사 마크애니 가상 응용 프로그램 시스템, 저장장치, 가상 응용 프로그램수행 방법 및 가상 환경 보호 방법
US8677098B2 (en) * 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
GB2460393B (en) * 2008-02-29 2012-03-28 Advanced Risc Mach Ltd A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry
US9164812B2 (en) * 2009-06-16 2015-10-20 International Business Machines Corporation Method and system to manage memory accesses from multithread programs on multiprocessor systems
US9336413B2 (en) * 2013-11-22 2016-05-10 Oracle International Corporation Method and system for fast permission changes for virtual addresses
US9747218B2 (en) * 2015-03-20 2017-08-29 Mill Computing, Inc. CPU security mechanisms employing thread-specific protection domains
US10007619B2 (en) 2015-05-29 2018-06-26 Qualcomm Incorporated Multi-threaded translation and transaction re-ordering for memory management units
WO2017023773A1 (en) * 2015-07-31 2017-02-09 Digital Guardian, Inc. Systems and methods of protecting data from injected malware
GB2541714B (en) 2015-08-27 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour
US9766899B2 (en) * 2015-12-28 2017-09-19 Google Inc. Bootloader control via device identifier
WO2017126003A1 (ja) * 2016-01-18 2017-07-27 株式会社日立製作所 複数種類のメモリデバイスを含む計算機システム及び方法

Also Published As

Publication number Publication date
US11573911B2 (en) 2023-02-07
CN112585590A (zh) 2021-03-30
JP7425786B2 (ja) 2024-01-31
EP3818447B1 (en) 2023-08-23
WO2020079387A1 (en) 2020-04-23
KR20210068393A (ko) 2021-06-09
US20210334220A1 (en) 2021-10-28
GB201816742D0 (en) 2018-11-28
TWI807094B (zh) 2023-07-01
EP3818447A1 (en) 2021-05-12
CN112585590B (zh) 2024-07-19
JP2022502729A (ja) 2022-01-11
GB2578099A (en) 2020-04-22
GB2578099B (en) 2021-05-12

Similar Documents

Publication Publication Date Title
TWI745333B (zh) 用於控制有界指標的使用的設備及方法
KR20200130836A (ko) 바운디드 포인터들을 저장하기 위한 장치 및 방법
KR102586257B1 (ko) 명령들의 실행을 제어하는 장치 및 방법
KR102533823B1 (ko) 자격과 관련된 허가들을 해석하는 장치 및 방법
JP7444853B2 (ja) メモリ・アクセスを制御するための装置及び方法
US20230236925A1 (en) Tag checking apparatus and method
JP2023547065A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法
TWI807094B (zh) 記憶體存取控制
TW202318210A (zh) 用於處理密封能力之技術
US12056062B2 (en) Apparatus and method for capability-based processing
US20240193101A1 (en) Technique for constraining access to memory using capabilities
TW202340955A (zh) 使用能力約束記憶體存取之技術
JP2024517627A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法
TW202420076A (zh) 基於指令提取位址的區域識別符