TWI797347B - 使用儲存在記憶體系統中的記憶體保護表的記憶體保護單元以控制對記憶體的存取的裝置、方法和電腦程式 - Google Patents

使用儲存在記憶體系統中的記憶體保護表的記憶體保護單元以控制對記憶體的存取的裝置、方法和電腦程式 Download PDF

Info

Publication number
TWI797347B
TWI797347B TW108122508A TW108122508A TWI797347B TW I797347 B TWI797347 B TW I797347B TW 108122508 A TW108122508 A TW 108122508A TW 108122508 A TW108122508 A TW 108122508A TW I797347 B TWI797347 B TW I797347B
Authority
TW
Taiwan
Prior art keywords
memory
address
mpu
entry
memory protection
Prior art date
Application number
TW108122508A
Other languages
English (en)
Other versions
TW202008169A (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 TW202008169A publication Critical patent/TW202008169A/zh
Application granted granted Critical
Publication of TWI797347B publication Critical patent/TWI797347B/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/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
    • 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/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一種裝置包括:處理電路系統,用來發出記憶體存取請求,該等記憶體存取請求指定目標位址,該目標位址識別記憶體系統中要存取的位置;及記憶體保護單元(MPU),包括權限檢查電路系統,以檢查由該處理電路系統所發出的記憶體存取請求是否滿足儲存在該記憶體系統中的記憶體保護表中所指定的存取權限。該記憶體保護表包括記憶體保護表項,每個記憶體保護表項指定位址空間內可變大小的對應位址區域的存取權限,其中該可變大小可以是2的次方以外的位元組數。

Description

使用儲存在記憶體系統中的記憶體保護表的記憶體保護單元 以控制對記憶體的存取的裝置、方法和電腦程式
本技術與資料處理的領域相關。更詳細而言,本技術與具有記憶體保護單元(MPU)的裝置相關。
資料處理裝置可以具有處理電路系統以供執行資料處理操作。處理電路系統可以發出記憶體存取請求,該等記憶體存取請求指定識別記憶體系統中要存取的位置的目標位址。可能需要界定存取權限,該等存取權限控制是否允許某些軟體程序存取位址空間的某些區域。例如,存取權限可以指定某個位址區域是否是唯讀的或可以是都可讀取且可寫入的,或可以指定允許哪些特權等級存取對應的位址區域。也可能需要控制記憶體的區域是否是可執行的。此類執行權限可以取決於特權等級,例如可能需要容許記憶體區域的非特權執行但禁止特權模式下的執行。在授予存取權時,也可能需要依據與某個位址區域相關聯的屬性(例如是否容許快取、緩存、或組合對該位址區域的存取)執行存取。
至少一些示例提供了一種裝置,該裝置包括:處理電路系統,用來發出記憶體存取請求,該等記憶體存取請求指定目標位址,該目標位址識別記憶體系統中要存取的位置;及 記憶體保護單元(MPU),包括: 權限檢查電路系統,用來檢查由處理電路系統所發出的記憶體存取請求是否滿足儲存在該記憶體系統中的記憶體保護表中所指定的存取權限,該記憶體保護表包括複數個記憶體保護表項,每個記憶體保護表項指定:位址空間內可變大小的對應位址區域的存取權限,及用於識別該對應位址區域的起始位址及結束位址的區域識別參數,其中該MPU被配置為容許該可變大小是2的次方以外的位元組數;及 MPU記憶體存取電路系統,用來起動至少一個MPU記憶體存取請求以供從該記憶體系統存取該記憶體保護表。
至少某些示例提供了一種方法,該方法包括以下步驟: 發出記憶體存取請求,該記憶體存取請求指定目標位址,該目標位址識別記憶體系統中要存取的位置;及 檢查該記憶體存取請求是否滿足包括複數個記憶體保護表項的記憶體保護表中所指定的存取權限,每個記憶體保護表項指定:位址空間內可變大小的對應位址區域的存取權限,及用於識別對應位址區域的起始位址及結束位址的區域識別參數,其中該可變大小被容許是2的次方以外的位元組數;其中: 該記憶體保護表被儲存在該記憶體系統中。
至少一些示例提供了一種用於控制主機資料處理裝置以提供用於執行指令的指令執行環境的電腦程式;該電腦程式包括: 處理程式邏輯,用來發出記憶體存取請求,該等記憶體存取請求指定目標位址,該目標位址識別由該指令執行環境所模擬的模擬位址空間內要存取的位置;及 記憶體保護單元(MPU)程式邏輯,包括: 權限檢查程式邏輯,用來檢查由該處理程式邏輯所發出的記憶體存取請求是否滿足包括複數個記憶體保護表項的記憶體保護表中所指定的存取權限,每個記憶體保護表項指定:該模擬位址空間內可變大小的對應位址區域的存取權限,及用於識別對應位址區域的起始位址及結束位址的區域識別參數,其中該MPU程式邏輯被配置為容許該可變大小是2的次方以外的位元組數;及 MPU記憶體存取程式邏輯,用來起動至少一個MPU記憶體存取請求以供存取該記憶體保護表,該至少一個MPU記憶體存取請求指定來自該模擬位址空間的位址。
對記憶體的存取的控制
一種用於控制對記憶體系統的存取的方法可以是提供記憶管理單元(MMU),該記憶體管理單元檢查記憶體存取請求是否滿足儲存在記憶體系統中的分頁表中所指定的存取權限。位址空間一般被分成稱為分頁的區域,每個分頁具有與二的一定次方數的位元組對應的大小(例如4千位元組),其中每個分頁的起始位址及結束位址與N位元組位址邊界對準,其中N是對準的位址區域的大小。每個分頁表項指定位址空間的對應分頁的存取權限,且通常也將指定位址轉譯映射以供將第一位址空間(例如虛擬位址空間)中的目標位址映射到第二位址空間(例如實體位址空間)中的位址的對應分頁。可以將分頁表實施為包括許多分頁表等級的階層式表格結構,其中輸入位址的第一位元子集加索引到第一級分頁表的對應表項中,且有索引的表項指定第二級分頁表的基礎位址,從該基礎位址,可以基於輸入位址的第二位元子集為表項加索引,針對每個後續等級的表格以此類推,直到最後到達最終等級的分頁表為止,在該最終等級的分頁表處,基於所指定的位址的一些位元來選定有索引的表項。有索引的表項包含將該分頁作為目標的記憶體存取所需的實際位址轉譯屬性及存取權限。MMU可以具有快取記憶體(稱為轉譯旁看緩存器(TLB)),該快取記憶體可以快取分頁表的更近期地從記憶體系統存取的某些表項,使得在處理電路系統發出要求相同的分頁表項的多個記憶體存取請求時可以更快速地再次存取該等表項。MMU可以用於被設計為處置相對高效能的工作負載的處理器,針對該等工作負載,對於對許多不同的位址區域的存取設定控制可以是可接受的(例如此類控制可以是4千位元組的粒度),且針對該等工作負載,可能需要從第一位址空間中的任何分頁將位址轉譯任意映射到第二位址空間中的任何任意分頁,以處置由許多不同軟體進程所觸發的存取,該等軟體進程使用相同的虛擬位址但需要被映射到由記憶體系統所使用的不同實體位址。
然而,對於針對更具能源效率的工作負載或被設計為用於實時應用的處理器而言,MMU可能是不適合的,因為用來界定對個別分頁的存取權限的大型分頁表結構及控制的粒度可能對於一般在針對更具能源效率的較低效能的應用的系統中所看到的受限的記憶體環境而言太大,該記憶體環境可能只有兩千位元組的隨機存取記憶體(RAM)。並且,為了促進將輸入位址位元的子集用作進入分頁表的索引,MMU一般將每個分頁約束為具有與二的次方數的位元組對應的大小。這意味著,若需要僅針對具有二的次方數的位元組以外的大小的某個位址區域設定某個存取權限組,則這會需要使用許多單獨的分頁表項來表示,每個分頁表項與具有二的次方數的位元組的大小的較小分頁對應,其中彼等個別分頁表項中的每一者恰好界定相同的存取權限,使得分頁表項組整體與較大的非二的次方的大小的位址區域對應。如此將位址區域人為分割成多個分頁是限制分頁與跟分頁大小對應的位址邊界對準的結果,需要此種限制以允許高效加索引程序,該加索引程序將來自輸入位址的全部位元數用於將索引加到用來涵蓋大型位址空間的階層式分頁結構中。
然而,此種方法可能對於實時代碼而言造成問題,因為這意味著,在旨在由給定的存取權限組所支配的一段代碼或資料內,記憶體存取可能跨越與分頁表的不同分頁表項對應的分頁之間的分頁邊界,且因此若新分頁的分頁表項還未被快取在MMU中,則這可能需要執行一段代碼中間執行分頁表行走以從記憶體提取所需的分頁表項。並且,若在到達分頁邊界時,發現下個分頁的分頁表項還未被界定在分頁表中,則這可能造成錯誤,該錯誤可能處理緩慢,因為它可能需要軟體例外處置器觸發作業系統或其他的監督進程來設定分頁表項以映射所需的分頁,從而造成長的延遲。此類延遲可能是高度可變的,且在最差的情況下可能是極長的,且若代碼段對跨越多於兩個不同的分頁的位址發出記憶體存取,則在每個分頁邊界處,可能再次招致此類延遲。這使得MMU非常難以能夠滿足實時應用中具有有定數的響應時間的需求。
另一種用於控制對記憶體的存取的方法可以是提供記憶體保護單元(MPU),該記憶體保護單元檢查由處理電路系統所發出的記憶體存取請求是否滿足許多記憶體保護表項中所指定的存取權限。每個記憶體保護邊界可以與位址空間內可變大小的特定位址區域對應。給定記憶體保護表項的對應位址區域可以用起始位址及結束位址為界,該等位址是經由給定記憶體保護表項的參數來識別的。不像由MMU所使用的分頁表,對於MPU而言,與記憶體保護表項對應的區域可以具有可變的大小,該可變大小可以被容許是二的次方以外的位元組數。利用此方法,可以保證,可以使用單個記憶體保護表項來界定任意(非2的次方)大小的記憶體位址區域,以避免每次在位址存取跨越分頁位址邊界時發生的分頁行走及分頁錯誤的風險。這使得MPU更適於被設計為用於處理實時應用的系統。並且,MPU一般將記憶體保護表項中的每一者儲存在MPU內本端提供的暫存器內,該等暫存器可以被快速存取,從而再次有助於實時處理及避免需要將具有階層式結構的大型分頁表儲存在記憶體系統內,這對於具有有限RAM的系統而言可以是重要的。
然而,在包括MPU的系統中,缺點是,因為用於控制對記憶體的存取的配置資料是使用一般直接連接到並聯比較器列的暫存器來指定的,該等比較器用於將要存取的目標位址與儲存在暫存器中的每個記憶體保護表項的區域識別參數進行比較,所以與MPU相關聯的功率及面積隨著由MPU所支援的記憶體保護表項的數量增加而嚴重地成比例增加。實際上,這可能意味著,所支援的記憶體保護表項的數量可能限於相對小的數量,例如8個或16個。典型MPU中有限數量的記憶體保護表項可能對由在處理系統上執行的軟體所實現的效能造成嚴重影響。
例如,在由MPU所支援的保護表項的數量上,與硬體中所支援的相比,一部分軟體可能需要將較大數量的相異位址區域界定為具有不同的存取權限。在此情況下,在任何給定的時間,由該軟體存取所需要的位址空間的至少一些部分目前將不具有針對該等部分所界定的對應記憶體保護表項。這會意味著,對位址空間的目前未界定的區域中的位址的存取會觸發例外,該例外會接著需要軟體干預及重新配置MPU的暫存器,以便用現在存取所需要的區域所需的參數覆寫先前針對不同區域所界定的參數。若之後的指令接著存取已經被覆寫的先前界定的區域,這可能接著使得再次回向切換MPU配置。此種MPU暫存器的內容的不斷切換(每次都需要例外觸發切換)可能極大地損害效能。
另一個示例可以是,處理器需要執行互相不信任的多個軟體部分,但該等軟體部分需要在它們之間共享資料。為了允許共享資料,給定的軟體部分可能希望分割位址空間的一部分,使得只有位址空間的有限部分可被其他進程存取,但為了對於對位址空間的的存取提供此類精細的控制程度,這可能需要界定額外的位址區域,且可能沒有足夠的由硬體中的MPU所支援的空閒記憶體保護表項來允許此類精細粒度的控制。因此,實際上,相同的資料可能最後被複製到位址空間的多個部分中,一個複本在由第一軟體所存取的部分中,且另一個複本在由第二軟體所存取的部分中,這造成了浪費時間在執行複製及低效地使用可用的記憶體容量,這在具有有限記憶體資源的系統中可以是個特殊的問題。
因此,典型的MMU及MPU目前可能不提供高效的解決方案以供基於具有實時需求及/或相對有限的記憶體容量的系統中的每區域(per-region)界定的存取權限,來控制對記憶體系統的存取。
具有基於記憶體的記憶體保護表的MPU
在下文所論述的技術中,提供了一種MPU,該MPU包括權限檢查電路系統,該權限檢查電路系統用來檢查由處理電路系統所發出的記憶體存取請求是否滿足儲存在記憶體系統中的記憶體保護表中所指定的存取權限。記憶體保護表包括許多記憶體保護表項,每個記憶體保護表項指定位址空間內可變大小的對應位址空間的存取權限。每個表項也指定區域識別參數,該等區域識別參數用於識別對應位址區域的起始位址及結束位址。MPU容許可變大小是2的次方以外的位元組數。提供了MPU記憶體存取電路系統,以起動至少一個記憶體存取請求以供從記憶體系統存取記憶體保護表。
因此,藉由在存取受到MPU管轄的相同記憶體系統中提供記憶體保護表,與典型MPU所可行的相比,這提供了彈性以提供較大數量的記憶體保護表項,該典型MPU基於針對每個表項儲存區域界定資料的暫存器,該區域界定資料並行地與目標位址進行比較。可能是違反直覺的是,將記憶體保護表移動到記憶體系統(該記憶體系統的存取一般比暫存器慢)中會提供改善的軟體效能。然而,雖然從記憶體系統存取個別的記憶體保護表項可能是較慢的,但可以藉由避免上文所論述的軟體權變措施來改善整體效能,該等權變措施用於處理由硬體中的MPU所支援的表項數量不足以處理軟體需求的情況,該等權變措施原本會由於遭遇到由對位址空間的未界定區域的存取所引起的頻繁例外而招致很大的效能成本。利用記憶體中所提供的記憶體保護表,硬體成本緩慢得多地隨表項數量的增加而增加。
並且,藉由容許每個區域具有與2的次方以外的位元組數對應的任意大小,這意味著,每個區域可以涵蓋大量的記憶體,且不須要將要具有相同存取權限的區域細分成多個單獨的表項,此種細分原本會有在位址跨越區域邊界時造成記憶體保護錯誤的風險。這使得MPU在服務實時應用的時比MMU更佳,該等實時應用需要用快速及/或有定數的響應時間來處置關鍵的操作。
可以將記憶體保護表的表項用每個表項的對應位址區域的起始位址的順序佈置在位址空間中。這可能與由MMU所使用的分頁表結構不同,對於該分頁表結構而言,每個等級的分頁表可以包括具有指標的表項,該等指標指向進一步等級的分頁表,且因此在整個分頁表結構內,可以將實際上提供相應分頁的存取權限的最終等級的分頁表項用與每個相應位址分頁的起始位址的順序不同的順序佈置在位址空間內。藉由將記憶體保護表的記憶體保護表項實施為用起始位址的順序佈置的線性存取的表格,這可以使得對記憶體保護表對相關的記憶體保護表項搜尋給定的目標位址更簡單。
每個記憶體保護表項與位址空間的給定位址區域對應。在一些實施方式中,位址空間可以是實體位址空間。因此,可以基於由被處理電路系統發出的記憶體存取請求所指定的實體位址來查詢記憶體保護表,其中實體位址與記憶體系統中所存取的對應位置直接對應。這可以適用於實時應用,因為藉由避免位址轉譯,這可以使得對記憶體的存取更快速,因為可以與對記憶體保護表的存取並行地執行對記憶體的存取。若隨後決定的是,不滿足權限,則不會將由對記憶體的存取所回傳的資料轉發到處理電路系統。
在MPU記憶體存取電路系統起動至少一個MPU記憶體存取請求以供從記憶體系統存取記憶體保護表時,這可能需要存取記憶體保護表的多個記憶體保護表項,而不是僅存取與包括目標位址的位址區域對應的記憶體保護表項。這是因為,在每個表項可以與非二的次方的位元組數的可變大小區域對應時,可能事先並不知道與給定位址區域相關聯的表項所在的記憶體系統中的位址,且因此實際上,可能需要搜尋表格以尋找用於包括目標位址的區域的表項,這可能需要存取多於一個表項以將目標位址與該表項的區域識別參數進行比較。因此,若目標位址位在表格的給定記憶體保護表項的對應位址區域內,則可以發出至少一個MPU記憶體存取請求,且所發出的MPU記憶體存取請求中的至少一者可以將給定的記憶體保護表項作為目標(且通常也可以存在針對其他記憶體保護表項的MPU記憶體存取請求)。
對於每個記憶體保護表項而言,MPU可以容許對應位址區域的起始位址及結束位址不與N位元組位址邊界對準,其中N位元組是該對應位址區域的大小。這允許MPU管理在未對準的位址處起始的任何任意大小的單個位址區域的存取權限,這可以有助於避免將具有共享性質的區域人為分割成多個表項,在將區域約束為在對準的位址邊界處起始的系統中原本會需要該人為分割,基於上文所論述的理由,這可以有助於改善實時代碼的效能。
MPU可以具有靜態MPU暫存儲存器以供儲存至少一個靜態記憶體保護表項。該至少一個靜態記憶體保護表項可以提供具有所指定的存取權限的位址區域的進一步定義,以補充儲存在記憶體系統中的記憶體保護表的記憶體保護表項中所界定的權限。提供一些配置選項以提供靜態暫存儲存器中所界定的額外MPU區域可以用來將中斷延遲保持是低的且提供有定數的中斷行為。例如,靜態MPU暫存儲存器可以針對要由效能關鍵(performance-critical)的代碼所存取的某些關鍵位址區域界定存取權限,以便與在該等存取權限需要由從記憶體系統加載的記憶體保護表項檢查時相比,提供更快速的響應。因此,在具有靜態MPU暫存儲存器的實施方式中,MPU可以有效地是混合式MPU,該混合式MPU使用界定一些位址區域的基於暫存器的表項及界定其他位址區域的基於記憶體的表項兩者。這可以在某些系統所需的中斷延遲與實時保證之間、及在實施MPU的硬體成本與由可能需要在給定時間界定較大的總記憶體保護表項數的軟體所實現的軟體效能之間提供良好的平衡。
靜態MPU暫存儲存器可以就以下的意義而言是靜態的:一旦被由處理電路系統所處理的至少一個MPU參數配置操作配置,在沒有系統重置或斷電事件的情況下,儲存在靜態MPU暫存儲存器中的靜態記憶體保護表項就保持儲存在靜態MPU暫存儲存器中,直到由處理電路系統處理另外的MPU參數配置操作以觸發靜態記憶體保護表項的重新配置為止。MPU參數配置操作可以是改變針對給定位址區域所指定的屬性的任何操作(例如改變存取權限或改變區域的界限位址),使得將改變如何針對位址空間的一部分處置記憶體存取。MPU參數配置操作可以是由處理電路系統所執行的專用MPU配置指令,或可以是儲存指令,該儲存指令將映射到MPU的靜態MPU暫存儲存器的位址指定為該儲存指令的目標位址。MPU參數配置操作也可以是在由除錯器或在處理電路系統外部的其他實體請求時由處理電路系統所執行的操作。因此,在靜態記憶體保護表項在靜態MPU暫存儲存器中是現用的時候,這與快取記憶體的不同之處在於,無論是哪些位置被系統存取,靜態記憶體保護表項都將保留直到它被重新配置為止。相比之下,在不需要由處理電路系統執行任何MPU配置操作的情況下,快取記憶體會將該快取記憶體的表項在該表項未使用一段時間時或基於一些其他的逐出政策逐出,以為用於可能需要的不同位址的表項騰出位置。在快取記憶體的情況下,雖然快取的特定表項可能會不時改變,但這不會意味著,由記憶體保護表的給定記憶體保護表項所指定的下層屬性有任何改變,因為快取記憶體佔用的改變僅影響可獲得給定記憶體保護表項的延遲,而不是改變如何處置對給定位址的記憶體存取的功能定義。
響應於由處理電路系統所發出的記憶體存取請求,在目標位址是在儲存在靜態MPU暫存儲存器中的靜態記憶體保護表項的對應位址區域內且所發出的記憶體存取請求滿足由該靜態記憶體保護表項所指定的存取權限時,MPU記憶體存取電路系統可以抑制該至少一個MPU記憶體存取請求被發出到記憶體系統。因此,在靜態記憶體保護表項中存在命中時,不需要觸發用於提取記憶體保護表的記憶體保護表項的任何MPU記憶體存取請求。這有助於保留可以用於其他操作的記憶體頻寬,且意味著,使用儲存在靜態MPU暫存儲存器中的靜態表項的效能關鍵軟體將不會由於基於記憶體的區域查找而停頓。實際上,靜態記憶體保護表項可以比記憶體保護表的基於記憶體的表項優先。
可以用不同的方式處置記憶體存取請求的目標位址命中於靜態記憶體保護表項中但存取請求無法滿足由該靜態記憶體保護表項所指定的存取權限時的情況。在一些情況下,在記憶體存取請求無法滿足靜態記憶體保護表項中所指定的存取權限時,也可以抑制該至少一個MPU記憶體存取請求,該靜態記憶體保護表項的目標位址是在對應的位址區域中。因此,在此情況下,若在靜態MPU暫存儲存器中存在任何命中,則不需要存取記憶體系統中的記憶體保護表。
或者,對於命中於靜態記憶體保護表項中但不通過該靜態記憶體保護表項中的存取權限的記憶體存取請求而言,可以容許由被儲存在記憶體系統中的記憶體保護表內的匹配記憶體保護表項指定的存取權限超控存取權限(匹配記憶體保護表項包括一個表項,對應的位址區域包括該表項的目標位址)。因此,靜態MPU暫存儲存器中的命中在允許請求時超控基於記憶體的記憶體保護表項中的任何權限組,但靜態MPU暫存儲存器中的命中在請求不被靜態表項允許時可以被記憶體保護表的匹配記憶體保護表項中所指定的其他存取權限超控。此方法可以用來減少允許對由第二軟體進程所存取的位址區域的特定子區域的第一軟體進程存取所需要界定的總區域數。例如,可以針對較廣的位址區域設定靜態MPU表項,以容許第二軟體進程存取該區域但拒絕第一軟體進程存取。可以接著僅針對允許由第一軟體存取的子範圍指定涵蓋較廣區域內的較小位址區域的基於記憶體的記憶體保護表項。這可以避免需要針對在由第一軟體所存取的子範圍的任一側的較廣範圍部分提供單獨的表項,從而為其他用途保留其他的靜態記憶體保護表項或允許減少記憶體保護表的總大小。
每個靜態記憶體保護表項可以與未使用指示相關聯,該未使用指示指示靜態記憶體保護表項是否是在未使用的靜態記憶體保護表項中。在給定的靜態記憶體保護表項被指示為是未使用的靜態記憶體保護表項時,MPU可以將來自記憶體保護表的記憶體保護表項快取在靜態MPU暫存儲存器的與給定靜態記憶體保護表項對應的一部分中。因此,在軟體不需要與硬體中所支援的一樣多的靜態記憶體保護表項時,則可以將硬體暫存儲存器的一部分重新使用作快取記憶體以允許本端儲存來自記憶體保護表的記憶體保護表項,使得與在需要從記憶體系統提取表項時相比,可以更快速地存取表項。這可以改善效能。在給定的靜態記憶體保護表項被標記為未使用時,則取決於快取記憶體替換政策,哪個特定的記憶體保護表項被快取在靜態MPU暫存儲存器中可能不時變化,即使在處理電路系統還未執行任何MPU參數配置操作時也是如此。
因此,在靜態記憶體保護表項被標記為已使用(即它的未使用指示未被設定)時,則靜態MPU暫存儲存器的該部分中的資料可以保持儲存,直到被MPU參數配置操作重新配置為止,但在靜態記憶體保護表項被指示為未使用時,則該靜態記憶體保護表項可以被用作快取記憶體,在這種情況下,取決於如由處理電路系統所實現的位址存取模式,可以改變靜態MPU暫存儲存器中所提供的特定表項。對於未被標記為未使用的靜態記憶體保護表項而言,也可以存在單獨的啟用/停用指示,該啟用/停用指示在被設定為啟用時意味著,表項是有效的且可以被記憶體存取請求的目標位址命中,而對於停用的表項而言,即使目標位址匹配由停用的表項所界定的區域,MPU也可以總是回傳不中。停用的表項與未使用的表項的不同之處可以在於,靜態MPU暫存儲存器的與停用靜態記憶體保護表項對應的部分不能被用作快取記憶體來快取來自記憶體中的記憶體保護表的表項。軟體可以暫時停用特定的靜態記憶體保護表項,使得對該位址範圍的存取被拒絕,但繼續將靜態記憶體保護表項保持在靜態MPU暫存儲存器內,使得如果必要的話之後可以重新啟用該靜態記憶體保護表項,而在未使用的靜態記憶體保護表項的情況下,這意味著,可以將對應的暫存儲存器用作快取記憶體來改善效能,但不保證保留靜態MPU暫存儲存器的在未使用指示被設定之前的內容。
MPU可以包括MPU快取儲存器以快取記憶體保護表的至少一個記憶體保護表項。在表項如上文所論述地被標記為未使用時的情況下,MPU快取儲存器可以是靜態MPU暫存儲存器。然而,提供被提供為快取來自記憶體保護表的表項的專用MPU快取儲存器也可以是有用的,該專用MPU快取儲存器充當快取記憶體,無論已經如何配置了靜態記憶體保護表項(若有提供的話)。可以使用MPU內的與靜態MPU暫存儲存器類似的另外一組暫存器來實施MPU快取儲存器,或可以使用不同類型的資料儲存器(例如SRAM)來實施MPU快取儲存器。在一些情況下,靜態MPU暫存儲存器及MPU快取儲存器可以是相同儲存結構的一部分,其中一些部分被分割以用作快取儲存器,且其他部分被分割為儲存靜態配置的記憶體保護表項。
因此,提供了MPU快取儲存器以快取記憶體保護表的至少一個記憶體保護表項。MPU記憶體存取電路系統可以使用快取記憶體替換政策(例如最近最少使用的、循環制(round robin)等等),以決定在給定的時間將來自記憶體保護表的哪一組記憶體保護表項快取在MPU快取儲存器中。這意味著,與靜態MPU暫存儲存器的儲存未被標記為未使用的靜態記憶體保護表項的部分相比,即使處理電路系統還未執行任何MPU參數配置操作,也可以更新MPU快取儲存器。
響應於由處理電路系統所發出的記憶體存取請求,MPU記憶體存取電路系統可以取決於目標位址是否在針對儲存在MPU快取記憶體中的任何記憶體保護表項所指定的對應位址區域內,決定是否起動至少一個MPU記憶體存取請求。例如,首先可以查找MPU快取儲存器,且若在MPU快取儲存器中存在命中,則可以不需要起動任何MPU記憶體存取請求。快取記憶體替換政策可以旨在保留被預測為在將來最有用的記憶體保護表項,以便減少需要發出MPU記憶體存取請求的記憶體存取請求部分。因此,若在MPU快取儲存器中存在命中,則可以抑制該至少一個MPU記憶體存取請求。
處理電路系統可以響應於表項識別碼查詢指令以擷取表項識別碼,該表項識別碼識別記憶體保護表中的位置,給定的記憶體保護表項是從該位置獲得的。例如,表項識別碼查詢指令可以指定目標位址,且響應於此,處理電路系統及/或MPU可以回傳匹配目標位址的記憶體保護表項的表項識別碼的指示。可以藉由將所擷取的表項識別碼寫入到處理電路系統的架構暫存器,使得表項識別碼可由執行在處理電路系統上的軟體存取。MPU快取儲存器可以針對每個快取的記憶體保護表項指定與記憶體保護表中的位置相關聯的表項識別碼,快取的記憶體保護表項是從該位置獲得的。這意味著,對於快取的記憶體保護表項而言,處理電路系統可以更快速地服務表項識別碼查詢指令,因為不須要向記憶體系統起動MPU記憶體存取請求以識別與在快取的記憶體保護表項中命中的位址相關聯的表項識別碼。能夠擷取給定記憶體保護表項的表項識別碼(而不是僅回傳存取權限)的指令可以用於加速某些類型的安全性檢查或提供一段代碼將用有定數的時間運行的信心。藉由針對給定的位址對執行表項識別查詢指令,接著若兩個表項識別碼查詢指令都回傳相同的表項識別碼,則可以決定,位址對之間的整個位址範圍與相同的記憶體保護表項對應,使得可以保證將不會有由於存取所指定的位址對之間的未映射的位址區域引起的錯誤。這也可以改善效能,因為這意味著,在已經確定範圍完全落在單個記憶體保護區域內時,可以針對整個位址範圍執行單次存取權限檢查,而不是需要單獨檢查範圍內的每個個別的位址。因此,除了表項本身的任何參數以外還將與快取的記憶體保護表項相關聯的表項識別碼快取在MPU快取儲存器中可以用於在執行此類表項識別碼查詢指令時加速處理電路系統的效能。
處理電路系統可以允許複數個安全性狀態下的操作,可以將每個狀態細分成複數個特權等級。處理電路系統可以容許在安全性狀態之間快速轉變,例如藉由允許用其他的安全性狀態將分支編碼來容許。該複數個安全性狀態中的每一者可以具有要在處理電路系統正在該安全性狀態下執行指令時使用的相關聯的記憶體保護表。為了減少所需的MPU快取儲存器量,可以在該複數個安全性狀態之間共享MPU快取儲存器,其中快取記憶體內的每個表項指定安全性狀態識別碼以供在從記憶體保護表獲得保護表項時識別正由處理電路系統所使用的安全性狀態。MPU可以抑制儲存在MPU快取儲存器中的快取的表項的使用,該等快取的表項的安全性狀態識別碼識別與處理電路系統目前現用的安全性狀態不同的安全性狀態。因此,可以將與非現用安全性狀態相關聯的表項保持快取在MPU快取儲存器中,但在目前現用的安全性狀態表與由安全性狀態識別碼所識別的安全性狀態不同時不偵測為匹配目標位址。在不同的安全性狀態之間切換時,這允許了改善的效能,因為即使現用的安全性狀態被處理電路系統重新配置,若現用的安全性狀態之後被切換回先前現用的安全性狀態,則與該安全性狀態相關聯的一些快取的記憶體保護表項也可以仍然存在於快取記憶體中且因此可以被更快速地存取以改善效能。
或者,不用安全性狀態識別碼標記快取的記憶體保護表項,而是另一種方法可以是響應於現用的安全性狀態被處理電路系統修改,無效化MPU快取儲存器中的所有表項。雖然這可能需要在現用安全性狀態被切換之後用來自與新現用的安全性狀態相關聯的記憶體保護表的表項重新填充快取記憶體,但此方法可以使得MPU快取儲存器更小,因為不需要針對每個快取的記憶體保護表項提供安全性狀態識別碼欄位。
MPU快取儲存器可以針對每個快取記憶體保護表項指定與記憶體保護表相關聯的表格識別碼,快取的記憶體保護表項是從該記憶體保護表獲得的。可以在記憶體系統內建立多個單獨的記憶體保護表,例如與不同的軟體部分對應的不同表格。每個記憶體保護表可以由給定的表格識別碼所識別。例如,表格識別碼可以是分配給表格的任意數值,或可以將記憶體保護表的基礎位址的指示用作表格識別碼。該裝置可以具有現用表格識別碼暫存器以供儲存現用表格識別碼,該現用表格識別碼識別目前要用於檢查對記憶體的存取權限的現用記憶體保護表。MPU可以抑制儲存在MPU快取儲存器中的快取的記憶體保護表項的使用,對於該快取的記憶體保護表項而言,與該快取的記憶體保護表項相關聯的表格識別碼與儲存在現用表格識別碼暫存器中的現用表格識別碼不同。因此,可以將與非現用記憶體保護表相關聯的表項保持快取在MPU快取儲存器中,但在目前現用的表格是不同的記憶體保護表時不偵測為匹配目標位址。在使用不同記憶體保護表的不同軟體進程之間切換時,這允許改善效能,因為即使現用表格識別碼暫存器被處理電路系統重新配置為切換到不同的記憶體保護表,若現用記憶體保護表之後被切換回先前存取的表格,則與該表格相關聯的一些快取的記憶體保護表項也可以仍然存在於MPU快取儲存器中且因此可以被更快速地存取以改善效能。
或者,不用對應的表格識別碼標記快取的記憶體保護表項,而是另一種方法可以是響應於現用表格的識別碼暫存器被處理電路系統修改,無效化MPU快取儲存器中的所有表項。雖然這可能需要在現用表格被切換之後用來自新現用的記憶體保護表的表項重新填充快取記憶體,但此種方法可以使得MPU快取儲存器更小,因為不需要針對每個快取的記憶體保護表項提供表格識別碼欄位。
響應於記憶體保護快取無效化操作,處理電路系統可以觸發MPU以無效化儲存在MPU快取儲存器中且滿足無效化條件的一或更多個快取的記憶體保護表項。例如,記憶體保護快取無效化操作可以是由處理電路系統所執行的特定指令。記憶體保護快取無效化操作可以針對無效化條件指定許多不同準則中的一者。例如,第一類型的快取無效化操作可以指定,應無效化MPU快取儲存器的所有表項。第二類型的記憶體保護快取無效化操作可以將快取的記憶體保護表項的特定位址或位址範圍識別為無效化,其中快取的記憶體保護表項界定不部分地或完全地與所保留的指定位址範圍重疊的區域。無效化條件的其他選項可以是,若快取的記憶體保護表項與特定的表格識別碼、安全性狀態識別碼中的至少一者對應、或具有特定範圍內的表項識別碼,則應無效化該等快取的記憶體保護表項。因此,存在用於控制來自快取記憶體的表項的無效化的許多不同選項。這可以是有用的,因為在軟體的控制之下的處理電路系統重新配置記憶體保護表的一部分以改變針對特定的位址區域所指定的參數時,則也可以觸發來自MPU快取儲存器的對應表項的無效化,以確保不將存取權限的舊值保留在快取記憶體中。
儲存在記憶體系統中的記憶體保護表中的記憶體保護表項可以包括記憶體保護表項是否是提供有效存取權限的啟用表項或提供無效存取權限的停用表項的指示。這可以用於暫時停用對某些位址區域的存取,同時保留停用的記憶體保護表項中的區域參數,使得一旦區域之後被啟用,就不需要重新配置該等區域參數。可以禁止MPU快取儲存器快取記憶體保護表的停用表項。例如,MPU記憶體存取電路系統在查找表格時可以僅針對啟用表項回傳命中訊號,且可以僅在記憶體中的記憶體保護表中偵測到命中時將記憶體保護表項分配給MPU快取儲存器。避免快取來自記憶體系統的停用表項可以是有用的,因為這意味著,可以將虛設表項安插到記憶體內的記憶體保護表中以供可能在日後使用,且可以配置及啟用這些表項而不需要無效化任何快取的表項。
可以用不同的方式表示現用記憶體保護表的表格識別碼。在一個示例中,可以單獨使用基礎位址來識別表格識別碼。或者,在一些情況下,可以使用基礎位址及大小的組合來識別表格。若要由兩個不同的軟體進程所存取的記憶體保護表部分重疊,則這可以是有用的,使得可以將記憶體保護表的共享部分儲存在起始於基礎位址處的位址處,然後可以將記憶體保護表的僅要用於一個特定軟體進程的部分定位在位址空間的後續部分處,使得可以簡單藉由將大小指示改變為指示現用的記憶體保護表有多大,來實現由不同軟體部分所存取的不同記憶體保護表之間的切換。在一些情況下,可以將基礎位址及大小指定在MPU的單個暫存器中。然而,在支援相對大的位址的系統中,基礎位址及大小指示可能不適合一個暫存器,且因此有時候可能需要單獨的暫存器。因此,可以提供基礎位址暫存器以儲存響應於由處理電路系統所發出的記憶體存取請求而要由MPU記憶體存取電路系統所存取的現用記憶體保護表的基礎位址,且可以提供大小暫存器以儲存現用記憶體保護表的大小的指示。將理解到,基礎位址暫存器及大小暫存器兩者也可以分別除了基礎位址及大小以外還指定其他的參數。
在現用記憶體保護表的基礎位址及大小被指定在不同的暫存器中時,則這可以意味著,可能需要由處理電路系統執行單獨的MPU配置操作以分別更新現用記憶體保護表的基礎位址及大小。這可能有競爭情況的風險,其中未界定的行為發生在用來更新基礎位址及大小中的一者的第一配置操作與用來更新基礎位址及大小中的另一者的第二配置操作之間的時段中,因為改變基礎位址及大小中的一者但不改變另一者可能有區域被指示為包括要是記憶體保護表項的資訊的現用表格的風險。
為了減少此風險,響應於指定要更新現用記憶體保護表的基礎位址及大小中的一者的預定類型的MPU配置操作,除了更新基礎位址及大小中的該者以外,處理電路系統也可以將基礎位址及大小中的另一者更新為指示不存在現用記憶體保護表的無效值。藉由在基礎位址及大小中的一者已經被更新時有效地完全停用對記憶體保護表的存取,接著直到另一者也已經被更新為止,則不能存在由一個MPU記憶體存取請求所造成的任何不正確的操作,該MPU記憶體存取請求存取位址空間的不要是記憶體保護表的部分的一部分。
在一個實施方式中,預定類型的MPU配置操作可以是指定要更新基礎位址的操作,且可以指定要將大小清除成指示不存在現用記憶體保護表的無效值。因此,基礎位址及大小中被指定為要由預定類型的MPU配置操作更新的該者可以是基礎位址。這可能更容易實施。預定類型的MPU配置操作可以是專用指令或命令,但也可以簡單地是由處理電路系統所執行的一般儲存指令,該儲存指令將映射到基礎位址暫存器或大小暫存器的一個位址指定為該儲存指令的目標位址,該位址指定基礎位址及大小中不要被設定為無效值的該者。在一些情況下,更新基礎位址或大小的所有MPU配置操作也可以將另一者清除為無效值。或者,可能不總是需要這樣,且只有某些類型的MPU配置操作可以將基礎位址及大小中的另一者清除成無效值。例如,用來觸發MPU配置操作的特定類型的指令可以用訊號通知基礎位址及大小中不正被操作配置為指定值的另一者是否也應被清除為是無效的。在其他的示例中,可以藉由基礎位址暫存器本身的位元啟動「將大小清除為是無效的」控制,使得若基礎位址暫存器被寫入且「將大小清除為是無效的」旗標被設定在要寫入到基礎位址暫存器的新值中,則MPU也將把大小清除成無效值。
由MPU所發出以從記憶體保護表獲得表項的MPU記憶體存取請求本身可能需要針對某些存取權限來檢查。然而,可能不需要基於記憶體偵測表本身來檢查MPU記憶體存取請求是否被容許,因為這可能對記憶體保護表導致遞迴查找組,該遞迴查找組可能導致潛在無定數的響應時間或造成鎖死的永不結束的請求迴圈。可以使用不同的方法來處置MPU記憶體存取請求本身的檢查。在一個示例中,權限檢查電路系統可以基於獨立於記憶體保護表指定的預設存取權限組來決定該至少一個MPU記憶體存取請求是否被容許。因此,藉由使用預設權限組(該預設權限組例如可以是被硬連線或指定在MPU的可配置暫存器中),不需要查找記憶體中的記憶體保護表來決定是否允許MPU向特定的位址發出記憶體存取請求。這可以有助於改善實時處置。
替代性地,或除了針對預設存取權限組檢查MPU記憶體存取請求以外,權限檢查電路系統還可以基於該至少一個MPU記憶體存取請求的位址是否是在由複數個記憶體安全性配置暫存器所指定的複數個位址範圍中的至少一者中,來決定MPU記憶體存取請求是否被容許。例如,記憶體安全性配置暫存器可以指定從上文所論述的該複數個安全性狀態中的給定者界定哪些位址範圍可以被存取的資訊。例如,一些系統可以支援界定僅可以由某些安全進程所存取的安全位址空間部分及可以由不是安全的就是非安全的進程所存取的非安全位址空間部分,且因此可能需要針對由記憶體安全性配置暫存器所界定的安全/非安全區域檢查MPU記憶體存取請求。在此情況下,若由非安全代碼所觸發的MPU記憶體存取請求的目標是將記憶體安全性配置暫存器中所界定的區域作為安全位址空間的一部分,則可以拒絕該等MPU記憶體存取請求。由記憶體安全性配置暫存器所界定的權限可以與由記憶體保護表及靜態MPU表項所提供的彼等權限正交。因此,除了正針對記憶體安全性配置暫存器而檢查MPU記憶體存取請求以外,也可以針對記憶體安全性配置暫存器檢查響應於指令提取請求或一般的加載/儲存指令而由處理電路系統所發出的記憶體存取請求,以檢查該等記憶體存取請求是否被容許。
在一些示例中,可以藉由設定與快取的記憶體保護表項相關聯的鎖定指示來將該表項標記為「鎖定」。MPU可以防止從快取記憶體逐出鎖定的快取的記憶體保護表項。例如,MPU可以防止與包括堆疊資料結構的位址區域對應的鎖定的快取的記憶體保護表項,該堆疊資料結構用於響應於例外而保存架構狀態且響應於例外返回而恢復所保存的狀態。藉由鎖定與堆疊對應的表項使得該表項不能被逐出,這藉由減少狀態保存/恢復的延遲而確保了快速的例外處置響應。MPU可以使用儲存在處理電路系統的堆疊指標暫存器中的堆疊指標位址來決定哪個表項與堆疊對應。可以在任何時間進行與堆疊相關聯的MPU表項的鎖定。然而,在一個示例中,響應於在狀態從堆疊恢復時的例外返回,可以鎖定與目前的堆疊指標位址相關聯的MPU表項,使得若另外的例外或中斷在例外返回期間或就在例外返回之後發生,則仍然可在MPU快取儲存器中取得堆疊的表項,且因此可以針對另外的例外或中斷更快速地保存狀態。
在其他的實施例中,可以藉由在MPU快取儲存器內具有專用表項,來避免使用與每個快取的記憶體保護表項相關聯的鎖定指示,該專用表項僅用來儲存來自記憶體保護表的與堆疊資料結構相關聯的表項。可以在任何時間填充此專用表項。然而,在一個示例中,響應於在狀態從堆疊恢復時的例外返回,可以將與目前的堆疊指標位址相關聯的MPU表項填充到專用表項中。
在一些實施方式中,在響應例外情況時,處理電路系統可以使用惰態保存。在例外情況發生時,處理電路系統可能需要將與在例外發生之前執行的退去進程相關聯的一些架構狀態保存到記憶體系統,使得即使在例外情況之後執行的進程覆寫該架構狀態,也保留所保存的狀態。可以在處理從處置例外返回時在之後恢復與退去進程相關聯的狀態。將來自架構暫存器的狀態保存到記憶體系統可以是相對緩慢的,且因此為了減少中斷處置延遲,一些系統可以響應於例外情況本身而僅將架構狀態的第一部分保存到記憶體系統。可以不直接響應於例外情況而保存架構狀態的第二部分,但可以在之後僅在例外情況之後執行的後續軟體進程實際存取架構狀態的第二部分時保存該第二部分。例如,架構狀態的第二部分可以是用於儲存浮點值的浮點暫存器的內容,而架構狀態的第一部分可以是整數暫存器的內容。這可以是有用的,因為許多軟體進程可能不使用任何浮點暫存器,且因此若在例外情況之後執行的後續軟體進程從不存取浮點暫存器,則將保留與先前執行的進程相關聯的狀態,且因此不需要針對彼等浮點暫存器執行狀態保存及恢復。
雖然此類惰態保存對於效能來說可能是有用的,但在MPU使用儲存在記憶體系統中的記憶體保護表時,這可能造成一些複雜性。為了允許在記憶體中使用一致的堆疊框架以保留架構狀態的第一部分及第二部分,無論架構狀態的第二部分是否實際上已經被保存到記憶體,響應於例外情況,處理電路系統可以記錄第二部分狀態保存位址區域的指示,若後續的軟體進程存取架構狀態的第二部分,則要將架構狀態的第二部分保存在該第二部分狀態保存位址區域處。因此,在後續的軟體進程起動對儲存架構狀態的第二部分的暫存器的存取時,處理電路系統可以接著讀取識別第二部分狀態保存位址區域的所記錄的位址且接著將架構狀態的第二部分保存到所識別的位址區域。藉由即使架構狀態的第二部分還未被保存也為該第二部分保留空間,這意味著,每個例外的堆疊框架的大小將是相同的,使得在例外巢套時,無論是否實際上保存架構狀態的第二部分,後續的堆疊框架的位置都是相同的。這使得控制狀態恢復簡單得多。
然而,因為可能需要針對MPU檢查用於將架構狀態的第二部分保存到記憶體系統的記憶體存取本身,且通常響應於例外情況,現用記憶體保護表可能改變,用於檢查是否已經會允許在例外情況之前執行的進程將該進程的架構狀態的第二部分保存到針對第二部分狀態保存位址區域所指定的位址的相關存取權限可能不再是可用的。
因此,響應於例外情況,MPU可以記錄MPU檢查資訊以供允許MPU在執行後續軟體進程的期間決定用於將架構狀態的第二部分保存到記憶體系統的記憶體存取是否會滿足由在例外情況發生時現用的記憶體保護表的記憶體保護表項所指定的存取權限。MPU檢查資訊可以包括許多不同類型的資訊。在一些情況下,MPU檢查資訊可以包括在例外情況發生時現用的記憶體保護表的表格識別碼(例如基礎位址及可選的大小),使得在執行後續的軟體進程的期間,可以識別先前現用的相關記憶體保護表,且可以存取適當的表項以檢查是否已經會允許在例外情況之前執行的進程將狀態保存到針對第二部分狀態保存位址區域所指定的位址。MPU檢查資訊也可以包括第二部分狀態保存位址區域的起始位址及結束位址是否與在例外情況發生時現用的記憶體保護表的相同記憶體保護表對應的指示。在第二部分狀態保存位址區域的起始位址及結束位址都與相同的記憶體保護表項對應時,則這意味著,單次的存取權限檢查可能足以決定整個第二部分狀態保存位址區域是被容許存取的,從而避免了針對在例外情況發生時現用的記憶體保護表的表項檢查第二部分狀態保存位址區域的每個個別部分的需要。在一些實施方式中,可以在例外情況發生時進行單次的存取權限檢查,且保存檢查結果,而在其他的實施例中,可以保存存取權限,使得即使記憶體保護表已經改變,也可以在之後執行檢查。因此,藉由保存關於在例外情況發生時現用的記憶體保護表的一些資訊,這允許即使現用的記憶體保護表響應於例外情況而改變,惰態保存也有作用。
可以提供對應的電腦程式以供控制主機資料處理裝置以提供用於執行指令的指令執行環境。該電腦程式可以包括在功能上與上文所論述的處理電路系統及MPU對應的處理程式邏輯及MPU程式邏輯。因此,可以用與在實際上包括上文所論述的處理電路系統及MPU的硬體上執行的程式中的記憶體存取指令類似的方式處置在由電腦程式所模擬的指令執行環境內執行的程式中的記憶體存取指令。模擬器電腦程式可以向在模擬器電腦程式上執行的軟體呈現與會由實際的硬體裝置所提供的指令環境類似的指令環境,即使可能不存在在正在執行模擬器電腦程式的主機電腦中提供這些特徵的任何實際硬體也是如此。可以藉由提供程式邏輯(例如指令集或資料結構組),來模擬上文所論述的硬體架構的功能,該程式邏輯允許通用主機電腦執行要用於在具有上文所論述的MPU支援的裝置上執行的代碼,該通用主機電腦用與會在實際上具有此類MPU的裝置上實現的結果相容的方式執行該代碼。可以將用於控制主機資料處理裝置的模擬器電腦程式儲存在儲存媒體上。此儲存媒體可以是非暫時性儲存媒體。
表格查找
上文所論述的記憶體保護表是儲存在記憶體系統中的控制表的一個示例,該控制表提供由處理元件用來執行給定操作的資訊。在記憶體保護表的情況下,處理元件可以是MPU,且所執行的操作可以是決定給定的記憶體存取是否被容許。此類控制表的另一個示例可以是界定位址空間的哪些區域是安全區域還是非安全區域的表格,且基於控制表來執行的操作可以是決定處理電路系統是否應在安全模式還是較不安全的模式下操作,其中在正處理的指令位址是在控制表中所界定的安全位址區域中的一者內時選定安全模式。另一個示例可以是針對由控制表所表示的每個位址區域界定與該區域相關聯的軟體程序庫的識別碼的控制表,該識別碼可以由處理電路系統用來決定是否允許給定的軟體程序庫呼叫另一個軟體程序庫。
因此,在處理情境的範圍中,提供具有許多表項的控制表可能是有用的,該等表項指定第一界限位址以及第二界限位址或大小中的任一者,使得第一界限位址及第二界限位址/大小識別位址空間內可變大小的對應位址區域的界限。可以用第一界限位址的順序將表項佈置在控制表中。雖然針對每個表項支援可變大小的區域可以用於減少針對給定大小的位址區域表示某個性質組所需的表項數量(避免需要將較大的位址區域人為分割成許多單獨的固定大小的表項),但容許可變大小的表項可以使得對控制表的查找的實施更複雜。這是因為,在支援可變大小的區域時,則表格內與給定位址對應的位置可能不是固定的,且因此實際上為了定位與給定位址對應的表項,可能需要經由表格的表項進行一些搜尋,以將查詢位址與界定對應位址區域的界限的參數(第一界限位址以及第二界限位址及大小中的一者)進行比較。因為位址空間可能稀疏地分配有控制表中的表項,使得可能存在一些位址,該等位址不具有針對包括該位址區域所界定的任何對應的表項,所以吾人會預期,控制表的搜尋會需要都針對用來界定每個位址區域的其他界限的第一界限位址以及第二界限位址及大小中的該者進行比較,且因此可能需要大量的比較。
在下文所論述的技術中,提供了表格查找電路系統以執行二元搜尋程序以識別控制表是否包括與查詢位址對應的表項。二元搜尋程序包括許多搜尋窗窄化步驟以供將控制表的候選表項的目前搜尋窗窄化為包括較少候選表項的較窄搜尋窗。在給定的搜尋窗窄化步驟中,表格查找電路系統獨立於目前搜尋窗的所選定的候選表項的第二界限位址或大小,基於查詢位址與目前搜尋窗的所選定的候選表項的第一界限位址進行的比較來窄化目前的搜尋窗。在將目前的搜尋窗窄化為控制表的單個候選表項的最終搜尋窗窄化步驟之後,表格查找電路系統可以決定,在查詢位址是在由該單個候選表項的第一界限位址以及第二界限位址或大小所界定的對應位址區域內時,該單個候選表項是與查詢位址對應的表項。
因此,利用此方法,每個搜尋窗窄化步驟僅需要將查詢位址與控制表的給定的選定候選表項第一界限位址進行比較,所以不需要從記憶體系統加載第二界限位址或大小。僅需要針對由最終的搜尋窗窄化步驟所造成的單個候選表項比較第二界限位址或大小。因此,對於控制表中給定數量的表項N而言,此方法允許比較次數與log2(N)+1對應而不是與log2(N)*2對應,與log2(N)*2對應是需要針對每個搜尋窗窄化步驟檢查第二界限位址或大小時的情況。這可以表示所需的比較次數及需要從記憶體系統加載以獲得在二元搜尋程序中所搜尋的候選表項的相應界限的資料量的顯著減少。因此,這可以提供允許用較佳的效能查找儲存在記憶體中的控制表的查找程序,從而加速了對控制表的存取且因此加速了依賴來自控制表的資訊的操作的效能。
在二元搜尋程序中,在最終的搜尋窗窄化步驟之後所識別的單個候選表項可以是控制表的唯一表項,針對該表項,作為針對查詢位址執行二元搜尋程序的結果,表格查找電路系統觸發記憶體存取請求以供從記憶體系統獲得第二界限位址或大小。因此,不須要針對控制表的該單個候選表項以外的任何表項實現任何加載以供從記憶體系統獲得第二界限位址或大小。這減少了所需的加載次數且因此改善了效能。注意,並不排除,在執行二元搜尋程序以供基於第一查詢位址查找表格的同時,作為查找與第一查詢位址不同的第二查詢位址是否在表格中具有對應表項的另外的查找的一部分,可能仍然存在被執行以從記憶體獲得該單個候選表項以外的候選表項的第二界限位址或大小的加載。可以針對不同的查詢位址並行處置對表格的多次查找,在這種情況下,第二查找可能仍然需要第一查詢位址的查找中所識別的單個候選表項以外的候選表項的第二界限位址或大小。因此,限制僅針對在最終的搜尋窗窄化步驟之後識別的單個候選表項加載第二界限位址或大小僅適用於由於針對目前的查詢位址執行二元搜尋程序而觸發的記憶體存取請求組,且並不排除可能由於正與目前查詢位址的二元搜尋程序並行執行的其他操作而觸發的用於獲得第二界限位址或大小的對表格的其他表項的加載。
在一些實施方式中,可能在表格查找電路系統與包含控制表的記憶體之間在記憶體系統中存在快取記憶體。表格查找電路系統向快取記憶體作出請求,且若請求不能被快取記憶體滿足,則快取記憶體可以響應於此而對記憶體作出請求以擷取所請求的資料。在一些實施例中,快取記憶體可以請求比原本請求的資料更多的資料,例如它可以請求足以填充整個快取列的資料。因此,在表格查找電路系統僅針對第一界限位址對快取記憶體執行請求時,快取記憶體可以針對包括第一界限位址以及第二界限位址或大小兩者的快取列對記憶體執行請求。將理解到,即使快取記憶體正在請求第一界限位址以及第二界限位址或大小兩者,表格查找電路系統也可能需要接收第一界限位址及針對第一界限位址進行比較(除了在最終的搜尋窗窄化步驟之後識別的單個候選表項以外),且因此減少了所使用的功率及電路複雜性。
在查詢位址是在由在最終的搜尋窗窄化步驟之後識別的單個候選表項的第一界限位址以及第二界限位址或大小所界定的對應位址區域之外時,則表格查找電路系統可以決定,查詢位址在控制表中不中。也就是說,可以決定,控制表並不包括與包括查詢位址的位址區域相關的任何表項。在查詢位址不在控制表中時,則表格查找電路系統可以執行以下步驟中的至少一者:用訊號通知例外情況,且回傳預設資訊以供控制要由處理元件所執行的操作。
可以用不同的方式實施在每個搜尋窗窄化步驟處執行的比較。在一些示例中,比較可以是查詢位址與表示對應位址區域的下界限的下界限位址的小於比較。因此,在此情況下,第一界限位址可以包括對應位址區域的起始位址。在比較每個區域的起始位址時,則在比較識別查詢位址小於所選定的候選表項的起始位址時,則可以將搜尋窗窄化為使得從搜尋窗排除控制表的具有大於或等於所選定的候選表項的起始位址的起始位址的至少一個表項。
或者,在每個搜尋窗窄化步驟處的比較可以將識別對應位址區域的上界限的結束位址與查詢位址進行比較。在此情況下,比較可以是大於比較。在此情況下,在查詢位址大於所選定的候選表項的上界限位址(結束位址)時,可以將目前的搜尋窗窄化為從較窄的搜尋窗排除控制表的具有等於或小於所選定的候選表項的結束位址的結束位址的至少一個表項。
可以選定不同的選項以供決定所選定的候選表項本身在給定的搜尋窗窄化步驟之後是否仍然是較窄搜尋窗的一部分。在第一界限位址是起始位址且比較決定查詢位址大於或等於起始位址時,則可能的情況是,查詢位址可能在所選定的候選表項的對應位址區域內,且因此所選定的候選表項在該搜尋窗窄化步驟之後可以仍然是較窄搜尋窗的一部分。類似地,若第一界限位址是結束位址且比較指示查詢位址小於或等於所選定的候選表項的結束位址,則再次地,所選定的候選表項可以仍然是較窄搜尋窗的一部分。
在一些實施方式中,在給定的搜尋窗窄化步驟在比較中決定查詢位址是在所選定的候選表項的對應位址區域之外時(例如因為查詢位址小於所選定的候選表項的起始位址或大於結束位址),則對於一些實施方式而言,可以從由給定的搜尋窗窄化步驟所造成的較窄搜尋窗排除所選定的候選表項。也就是說,因為已經知道所選定的候選表項不能是與查詢位址對應的表項,可能需要從窄的搜尋窗排除所選定的候選表項,使得後續的搜尋窗窄化步驟可以更快速地識別與查詢位址對應的特定表項,因為在其餘的搜尋窗窄化步驟中需要考慮較少的表項。
然而,在其他的實施方式中,在已經知道查詢位址是在所選定的候選表項的對應位址區域之外時,所選定的候選表項仍然可以保持被包括在較窄的搜尋窗中。這似乎違反直覺,因為吾人可能不會預期在較窄的搜尋窗內包括已經知道不與查詢位址對應的候選表項是有用的。然而,實際上,無論比較結果如何都將所選定的候選表項包括在較窄的搜尋窗內可以容許具有減少的關鍵路徑時序的更高效的電路實施。例如,可以在一些實施方式中使用相應的表項識別碼來追蹤目前的搜尋窗的界限及所選定的候選表項的位置。因此,若要從較窄的搜尋窗排除所選定的候選表項,則可能需要藉由將所選定的候選表項的識別碼加一或減一,來由所選定的候選表項識別碼計算要用於下個搜尋窗窄化步驟的較窄搜尋窗的起始及結束。此種±1操作可能需要額外的硬體來加1或減1且可能是在關鍵時序路徑上。因此,在一些實施方式中,若無論比較結果如何都仍然將所選定的候選表項包括在窄的搜尋窗中,則識別表項以包括在窄的搜尋窗中可以是更快速的。實際上,與所選定的候選表項的選定情況被排除時的情況相比,這不大可能造成需要任何額外的搜尋窗窄化步驟,因為實際上,針對窄化的搜尋窗的不同候選表項執行比較的後續搜尋窗窄化步驟可能之後的結果無論如何都是排除先前的搜尋窗窄化步驟中所識別的選定候選表項。因此,在一些實施方式中,藉由提供將較窄搜尋窗設定為起始或結束在所選定的候選表項處的邏輯,這可以容許具有較短的關鍵時序路徑的更高效的控制邏輯。
給定的搜尋窗窄化步驟內所選定的候選表項可以是目前搜尋窗的任何表項(在一些情況下包括搜尋窗的外邊界中的一者處的表項)。然而,若所選定的候選表項是針對該搜尋窗窄化步驟所提供的目前搜尋窗的中間點處的表項,則二元搜尋程序可能是更高效的。中間點不需要是在目前搜尋窗中所包括的表項的準確中點處。事實上,在目前的搜尋窗包括偶數個表項時,則不可能選定準確中點處的表項,因為無論將哪個表項選定為所選定的候選表項,該表項都將比另一端更靠近搜尋窗的一端。若在每個搜尋窗窄化步驟處,所選定的候選表項儘量靠近目前搜尋窗的中點,則可以減少表格中給定數量的表項所需的總搜尋窗窄化步驟數的最大限值。然而,這不是必需的,且在一些實施方式中,可以使用目前搜尋窗的中間點處的任何表項,這可以造成功率及電路複雜性的減少。
注意,在搜尋窗窄化步驟中,在搜尋窗僅包括2個候選表項時,將2個表項中的一者選定為選定的候選表項,即所選定的候選表項將在搜尋窗的外邊界中的一者處。因此,在一些情況下,僅對於目前的搜尋窗包括至少3個候選表項的搜尋窗窄化步驟而言,所選定的候選表項可以在目前搜尋窗的中間點處。
在一些實施方式中,該裝置可以具有表項儲存器以儲存至少一個表項。表項儲存器可以是表項快取記憶體以快取先前從記憶體系統獲得的控制表的至少一個表項,及/或是靜態暫存儲存器以儲存可由靜態表項參數配置操作配置的至少一個另外的表項(其中每個另外的表項指定位址空間內可變大小的對應位址區域的控制資訊,對於該對應位址區域而言,界限是由第一界限位址以及第二界限位址及大小中的一者所識別的)。例如,在控制表是記憶體保護表的情況下,表項快取記憶體可以與上文所論述的MPU快取儲存器對應,且靜態暫存儲存器可以與上文所論述的靜態MPU暫存儲存器對應。因此,查找電路系統除了有權存取儲存在記憶體系統中的控制表以外還可以有權存取本端儲存的一些表項,以提供對一些表項的更快速存取。
若至少一個控制表項被儲存在表項儲存器中,則表格查找電路系統可以檢查查詢位址是否與儲存在表項儲存器中的至少一個表項對應,且取決於查詢位址是否與儲存在表項儲存器中的任何表項對應,來決定是否執行二元搜尋程序。例如,在查詢位址與儲存在表項儲存器中的表項對應時的情況下,可以完全省略二元搜尋程序。例如,若所需的表項已經被快取在表項快取記憶體中,則可能不須要執行對記憶體的任何存取,且因此可以省略二元搜尋程序。對於靜態暫存儲存器中的表項而言,如上文所論述地,對於MPU示例而言,不同的選項可以控制在靜態暫存儲存器中存在命中時的情況下是否須要執行二元搜尋程序。若在靜態暫存儲存器中存在任何命中,則在一些情況下可以抑制執行二元搜尋程序。或者,其他示例可以考慮靜態暫存儲存器中的匹配表項內所指定的特定參數,以決定是否執行二元搜尋程序(例如如上文所論述地,在利用MPU示例的情況下,可以僅在匹配的靜態配置的表項的參數指示記憶體存取不被容許時才需要搜尋記憶體內的表格,但可以在指示記憶體存取被容許的靜態配置的表項中存在命中時省略二元搜尋程序)。
在執行二元搜尋程序時的情況下,在一些實施方式中,表格查找電路系統可以使用從儲存在表項儲存器中的至少一個表項推導的資訊來改善二元搜尋程序的效率。例如,即使在給定的查詢位址在表項快取記憶體或靜態暫存儲存器的表項中不中時,表項不匹配命中彼等本端儲存的表項所需的任何需要的比較的事實也可以提供資訊,該資訊允許知道在二元搜尋程序內執行的一些比較的結果而不需要從記憶體加載任何資訊。例如,表格查找電路系統可以基於從儲存在表項儲存器中的該至少一個表項推導的資訊,來限制二元搜尋程序的初始搜尋窗窄化步驟的目前搜尋窗。並且,在二元搜尋程序的給定搜尋步驟中,在查詢位址與所選定的候選表項的第一界限位址的比較結果可從儲存在表項儲存器中的該至少一個表項中的資訊推導時,可以抑制用於從記憶體系統獲得所選定的候選表項的第一界限位址的記憶體存取請求。因此,藉由使用已經可從本端儲存的表項取得的資訊來引導二元搜尋程序,這可以避免不必要的用於獲得可能已經隱含在本端儲存的資訊中的資訊的記憶體存取,從而針對二元搜尋程序提供更快速的效能。
例如,在一個實施方式中,在針對給定的查詢位址查找表項儲存器時,可以並行地查詢表項儲存器中的所有表項,以決定哪些表項(且因此決定表格中的哪些索引)大於/小於查詢位址。此時,用於第一搜尋窗窄化步驟的初始搜尋窗的下邊界可以是小於查詢位址的位址區域的最靠近表項的索引,且初始搜尋窗的上邊界可以是大於查詢位址的位址區域的最靠近表項的索引。或者,允許二元搜尋程序用較小的搜尋窗起始(可能加速二元搜尋)但需要一些額外的電路邏輯來加1或減1的方法可以是,將初始搜尋窗的下邊界設定為小於查詢位址的位址區域的最靠近表項的索引加1;及將上邊界設定為小於查詢位址的位址區域的最靠近表項的索引減1。
可以將二元搜尋程序設計為使得每個搜尋窗窄化步驟提供目前搜尋窗的二元分割以獲得較窄的搜尋窗。例如,由給定的搜尋窗窄化步驟所造成的較窄搜尋窗可以是目前搜尋窗的上部或下部中的任一者,其中搜尋窗的上部及下部中的該者是基於查詢位址與所選定的候選表項的第一界限位址的比較來選定的。
可以將二元搜尋程序設計為處置控制表具有與2的次方對應的表項數N的情況。然而,有時候,控制表可以具有準確的2的次方以外的表項數N。在此情況下,表格查找電路系統可以執行二元搜尋程序,其中假設初始搜尋窗窄化步驟的目前搜尋窗包括與大於N的最小的2的次方對應的許多候選表項。在此情況下,可能的情況是,在特定的搜尋窗窄化步驟中,目前搜尋窗的所選定的候選表項可以與控制表的N個表項的範圍之外的位置對應。若這發生,則表格查找電路系統可以抑制用於從記憶體系統獲得所選定的候選表項的第一界限位址的記憶體存取請求,且由於要針對該特定的搜尋窗窄化步驟執行比較決定隱含結果,該隱含結果使得較窄的搜尋窗包括控制表的N個表項的範圍之內的位置處的至少一個候選表項。因此,若控制表中的表項數不是2的次方,則可以用好像區域表是下個最大的2的次方的相同方式執行二元搜尋程序,但對於針對表格的有效範圍之外表項的比較而言,可以在不從記憶體加載值的情況下回傳隱含的結果。這允許控制表支援任何任意數量的表項,同時仍然允許藉由對目前的窗口大小執行除2來決定所選定的候選表項的位置(例如在中間點處)。因為可以藉由位元移位操作來執行除2,這可以減少電路複雜性。
對於可變大小被容許是2的次方以外的位元組數及/或對應位址區域的起始位址及結束位址被容許不與X位元組的位址邊界對準的控制表而言,上文所論述的二元搜尋程序可以是特別有用的,其中X是對應位址區域的大小。可能難以將具有這些性質中的一者的表格加索引,因為不可能基於查詢位址簡單地將索引加到所需的表項中。而是,可能需要用於搜尋表格的多個表項及比較界限位址的搜尋程序。上文所論述的技術允許更快速地搜尋此類表格。
在一些實施方式中,可以將第一界限位址儲存在記憶體系統內的與用來儲存第二界限位址及大小中的該者的資料字相同的資料字中,第二界限位址及大小中的該者用來界定對應位址區域的另一個界限。「資料字」指的是在單個記憶體存取請求中可以從記憶體回傳的一部分資料的大小。即使第一界限位址以及第二界限位址或大小被儲存在相同的資料字中,使用上文所論述的二元搜尋程序來避免針對每個搜尋窗窄化步驟中所檢查的每個所選定的候選表項回傳第二界限位址或大小的需要也仍然可以是有用的。這是因為,藉由在二元搜尋程序的每個搜尋窗窄化步驟中僅需要第一界限位址,這意味著,可以使用指定較窄的目標資料部分的記憶體存取請求,這可以容許更高效的記憶體頻寬使用,因為這可以保留記憶體系統內的緩存器中的空間,或保留未用於記憶體存取請求的匯流排上的導線,這可以隨後重新用於其他的記憶體存取,從而改善記憶體系統的整體效率。僅需要在搜尋窗窄化步驟中針對第一界限位址進行比較也減少了所需的比較電路系統的量且可以減少所消耗的能量量。
然而,在對於控制表中的給定表項而言,第一界限位址是被儲存在記憶體系統內的與用來儲存給定表項的第二界限位址或大小的資料字不同的字中的示例中,該技術是特別有用的。在一些系統中,資料字的大小可能與第一界限位址或第二界限位址的大小相當,且因此,在相同的資料字內儲存第一界限位址以及第二界限位址或大小兩者可能是不實際的。在此情況下,若需要在每個搜尋窗窄化步驟處獲得第一界限位址以及第二界限位址或大小兩者,則這對於每個搜尋窗窄化步驟而言會需要兩個單獨的記憶體存取請求,這會增加對記憶體頻寬的壓力。相比之下,藉由使用上文所論述的二元搜尋程序,可以避免用於存取每個所選定的候選表項的第二界限位址或大小的記憶體請求,其中唯一需要從記憶體加載第二界限位址或大小的表項是造成最終窗口窄化步驟的單個候選表項。
雖然可以將上文所論述的技術用於如上文所論述的支援由第一界限位址以及第二界限位址或大小所界定的可變大小位址區域的任何類型的控制表,對於一種記憶體保護表而言是特別有用的,對於該記憶體保護表而言,每個表項指定位址空間的對應位址區域的存取權限,且基於控制表中的資訊來執行的操作包括檢查指定查詢位址的記憶體存取請求是否滿足包括查詢位址的區域的對應表項中的存取權限。可能需要常常存取此類記憶體保護表(例如在每個記憶體存取請求存取,如果所需的表項還未儲存在本端的儲存電路系統中的話),且因此改善用於存取來自記憶體的記憶體保護表的查找程序的效率可以對使用記憶體保護表的處理系統的整體處理效能有很大的影響。
再次地,與上文所論述的MPU示例類似,在一些情況下,可以使用硬體邏輯來實施系統。然而,也可能在模擬器電腦程式內實施此類二元搜尋程序,該模擬器電腦程式用於控制主機資料處理裝置以提供指令執行環境以供執行指令,其中處理程式邏輯及表格查找程式邏輯提供與上文所論述的處理元件及表格查找電路系統相同的功能。儲存媒體可以儲存模擬器電腦程式。儲存媒體可為非暫時性儲存媒體。
具體的MPU示例
圖1示意性地繪示資料處理系統2,該資料處理系統具有處理電路系統4以供響應於指令執行資料處理。例如,處理電路系統4可以是CPU、DSP、GPU、或資料處理系統的其他處理構件。處理電路系統4可以包括:指令提取單元5,用於從記憶體系統10提取指令以供由該處理電路系統處理;及指令解碼器7,用於將提取的指令解碼以產生控制訊號以供控制執行單元6、8以響應於解碼的指令執行資料處理操作。例如,執行單元可以包括算術/邏輯單元(ALU)6以供對從暫存器12、14提取的運算元執行算術或邏輯操作以產生可以寫回暫存器的結果值。執行單元也可以包括加載/儲存單元8以供執行加載/儲存操作以供在暫存器12、14與記憶體系統10之間傳輸資料。暫存器可以包括許多不同類型的暫存器,包括:通用(整數)暫存器12,用於儲存整數值以供由處理電路系統4處理;及浮點暫存器14,用於儲存使用浮點表示來表示的值。處理電路系統4可存取的暫存器也可以包括為了簡潔起見在圖1中未示出的其他類型的暫存器,例如:向量暫存器,用於儲存包含多個獨立資料元素的向量運算元;及/或控制暫存器,用於儲存各種控制參數以供控制處理電路系統4的操作,例如:條件旗標,可以被條件指令檢查以決定是否執行條件操作;程式計數器,儲存表示目前執行點的位址;及控制暫存器,例如用於控制例外處置。
記憶系統10可包括一或更多個等級的快取記憶體以及主記憶體。記憶體系統10藉由執行加載指令或儲存指令而可由處理電路系統4存取,該加載指令觸發加載/儲存單元8以發出記憶體存取請求以供將來自記憶體系統10的資料加載到暫存器12、14中,該儲存指令用於觸發加載/儲存單元8以發出記憶體存取請求以供將來自暫存器12、14的資料儲存到記憶體系統10中。並且,指令提取單元5發出記憶體存取請求以從記憶體系統10提取指令。每個記憶體存取請求可以指定要存取的位置的目標位址。在此示例中,目標位址是直接指定要存取的位置的實體位址,所以不需要位址轉譯。
提供了記憶體保護單元(MPU)20以供基於目標位址檢查是否容許記憶體系統10為記憶體存取請求服務。可以用兩種方式界定用於控制是否允許處理電路系統4存取給定位址區域的存取權限。可以將記憶體保護表22儲存在記憶體系統內,該記憶體保護表包括許多表項,每個表項界定對應位址區域的存取權限。MPU 20具有MPU記憶體存取電路系統24以供向記憶體系統10起動記憶體存取請求以從MPU表22獲得資訊。MPU記憶體存取電路系統24具有表格查找電路系統26以供執行識別MPU表22是否包括用於位址區域的表項所需的比較,該位址區域包括由從處理電路系統4所接收的記憶體存取請求所指定的目標位址。記憶體系統10可以儲存多於一個MPU表,每個表22與相應的軟體進程相關聯。現用表格識別碼(識別要使用MPU記憶體存取電路系統24來存取哪個特定的MPU表)被儲存在現用表格識別碼暫存器(或暫存器組)28中。例如,現用表格識別碼暫存器28可以指定目前現用的MPU表的基礎位址30,且也可以可選地指定現用表格的大小。在MPU內提供了MPU快取儲存器32以供從記憶體系統10快取MPU表的選定的表項,使得若再次需要相同的表項,則可以較快速地存取該表項。例如,MPU快取儲存器可以包括一組暫存器以供與針對記憶體系統10中的MPU表22進行回存相比,用減少的存取延遲本端地儲存MPU表的表項。
提供存取權限以供控制對記憶體系統10的存取的另一種方式可以是在靜態MPU暫存儲存器36內界定靜態配置的記憶體保護表項。處理電路系統4可以支援用於配置靜態MPU暫存儲存器36的內容的指令(例如特別要用於存取靜態MPU暫存儲存器的專用類型指令),或可以使用由加載/儲存單元8所執行的更一般的儲存操作,該儲存操作將已經被映射到針對靜態MPU暫存儲存器36所提供的記憶體映射的暫存器的位址指定為目標位址。一般而言,一旦已經執行MPU參數重新配置操作(例如這些記憶體映射的加載/儲存操作或專用類型的重新配置指令中的一者)以填充靜態MPU暫存儲存器36的內容以界定與給定的位址區域對應的給定記憶體保護表項,在沒有造成儲存在靜態暫存儲存器36中的資訊損失的重設或斷電事件的情況下,該給定的記憶體保護表項就留存在靜態MPU儲存器36中,直到另一個MPU參數重新配置操作改變該表項的內容為止。這不像MPU快取儲存器32,對於該MPU快取儲存器來說,即使沒有用來改變給定的位址區域的實際參數組的MPU參數重新配置操作,MPU快取儲存器32的內容也可能依據快取記憶體替換政策而隨時間變化。例如,MPU快取儲存器32可以與快取記憶體控制器相關聯,在需要製作用於記憶體系統10中的記憶體保護表22的更近存取的表項的空間時,該快取記憶體控制器使用最近最少使用的或類似的替換政策來逐出被預測將來最不有用的表項。
雖然圖1將靜態MPU暫存儲存器36示為與MPU快取儲存器32分離,但在其他的示例中,這些也可以是共同儲存結構的相應部分。例如,可以用旗標標記共同儲存結構的一些表項以指示應將它們視為靜態表項,不應將該等靜態表項經由快取記憶體替換政策而逐出。然而,實際上,提供單獨的儲存結構32、36可以允許更高效地將索引加到快取儲存器32中。
MPU包括權限檢查電路系統40,該權限檢查電路系統用於讀取儲存在記憶體系統10中(或快取在MPU快取儲存器32中)的記憶體保護表22的查找的表項或靜態MPU暫存儲存器36中所指定的靜態配置的MPU表項中的任一者中所指定的存取權限資料,及決定由處理電路系統4所發出的記憶體存取請求的性質是否滿足由基於記憶體存取請求的目標位址所選定的表項的存取權限所指定的需求。例如,存取權限可以指定區域是否是唯讀區域(對於唯讀區域而言,由被處理電路系統4執行的儲存指令所觸發的任何寫入請求都應被拒絕)或被允許讀取及寫入。存取權限也可以指定是否允許提取單元5從對應的位址區域提取指令。存取權限也可以將對於對應位址區域的存取限於處理電路系統4的某些例外等級或特權等級,且權限檢查電路系統40可以檢查與記憶體存取請求相關聯的目前例外等級或特權等級是否滿足存取權限中所界定的限制條件。
記憶體系統10中的記憶體保護表22以及靜態MPU暫存儲存器36可以不是影響權限檢查電路系統40是否允許記憶體存取的唯一控制資訊來源。例如,裝置2也可以包括安全性屬性單元(SAU)42,該安全性屬性單元包括記憶體安全性配置暫存器,該記憶體安全性配置暫存器界定位址空間中安全及非安全的區域。安全性檢查電路系統46針對暫存器44中的區域界定資料檢查記憶體存取請求的目標位址,且在安全操作模式下操作時,處理電路系統4僅被限制存取安全區域(非安全區域在安全模式或在非安全模式中的任一者下是可存取的)。因此,記憶體安全性配置暫存器44可以表示用於控制對記憶體的存取的控制資料結構的另一個示例,該控制資料結構可以施用與MPU表或靜態MPU暫存儲存器36的權限正交的權限。也就是說,會被MPU容許的存取可能還是被SAU 42拒絕,反之亦然。可以使由處理電路系統的提取單元5或加載/儲存單元8所起動的記憶體存取請求及由MPU記憶體存取電路系統24所發出以存取記憶體系統10中的記憶體保護表22的任何MPU記憶體存取請求兩者經受由SAU 42進行的安全性檢查。雖然在圖1的示例中,哪些記憶體區域被視為安全或非安全的定義僅由記憶體安全性配置暫存器44的內容所界定,但在其他的示例中,可以在記憶體系統10內維持與MPU表22類似的記憶體安全性表以提供將位址區域界定為安全或非安全的另外的表項定義。這會允許支援大量同時界定的區域。雖然圖1中將MPU 20及SAU 42示為依序操作,但一些實施方式可以提供對MPU及SAU並行查找由處理電路系統所發出的記憶體存取的操作,以改善效能。
圖2示出儲存在記憶體系統10中的記憶體保護表22的示例。記憶體保護表包括許多表項50。在此示例中,每個記憶體保護表項50包括儲存在記憶體位址空間的兩個相鄰資料字52中的資料。第一資料字RBARi提供對應的位址區域的基礎位址(起始位址)54,而對應的位址區域的結束位址(LIMIT)56被界定在表項50的第二資料字(RLARi)中。在此示例中,存取權限(AP)58被指定在表項的RLAR資料字中,而指示表項是否界定啟用的位址區域或停用的位址區域的啟用旗標60是在RBAR資料字中,然而也可以將此資訊58、60切換成其他的資料字或表示在相同的資料字內。並且,表項50的每個資料字52可以可選地包括圖2中未示出的其他資訊。雖然圖2示出每個位址區域的起始位址54及結束位址56被表示在記憶體中的單獨資料字中的示例,但這並不是必需的,且在一些實施方式中,可以將這些位址配合在單個資料字內,在這種情況下,不一定每個表項都要提供多個資料字。並且,雖然圖2使用起始位址54及結束位址56來表示可變大小的位址區域,但在其他的示例中,可以由大小參數表示界限位址中的一者,該大小參數相對於另一個界限位址界定對應位址區域的大小。現用表ID暫存器28識別記憶體保護表的基礎位址30,且可選地可以識別大小參數62,該大小參數識別記憶體保護表中的總表項數。雖然在圖2中,表項50的資料字52是相鄰的,但這並不是必需的,且在一些實施方式中,可以將所有RBARi資料字一起群集在表格的一部分中,而RLARi資料字被一起群集在表格的另一部分中。
記憶體保護表22的表項50被分配給相同位址空間64內的位址,該位址空間用於由處理電路系統4的加載/儲存單元8或指令提取單元5所發出的常規記憶體存取的位址。記憶體保護表項50依據它們的起始位置54在位址空間內排序(且也依據它們的結束位址56來排序,因為可能不允許由記憶體保護表22內的記憶體保護表項所界定的位址區域重疊)。因此,表項0會是與具有最小起始位址的位址區域對應的表項,表項1會與具有下個最小的起始位址的位址區域對應等等。注意,圖2在位址空間64內示出的是表格的每個記憶體保護表項50所儲存在的位址的位置,而不是表項所針對界定存取權限的對應位址區域的位置。將理解到,圖2中所示的每個表項50的特定格式僅是一個示例,且可以使用其他的格式來表示相同的資訊。
圖3示出MPU快取儲存器32的示例,該MPU快取儲存器包括許多快取表項34,每個快取表項34用於從記憶體保護表22快取記憶體保護表項50中的一者。如圖3中所示,除了對應記憶體保護表項50的參數以外,快取表項34也可以指定有效位元70及表格識別碼72,該有效位元指示快取表項34的內容是否有效,該表格識別碼識別特定的記憶體保護表22,被快取在該快取表項34中的記憶體保護表項50是從該記憶體保護表抽取的(這可以與在快取的記憶體保護表項被分配給快取記憶體32時的現用表ID暫存器28的目前值對應)。因為很可能多個快取表項34將具有相同的表格識別碼72,一些實施方式可以選擇藉由僅將獨一的表格識別碼72儲存在MPU快取儲存器32內的單獨表格識別碼表中來減少所需的儲存量。在此類實施方式中,每個快取表項34可以在表格識別碼表中儲存全表格識別碼的索引。並且,每個快取表項34可以指定表項識別碼74,該表項識別碼識別對應記憶體保護表22內的位置,被快取在該特定快取表項34中的記憶體保護表項50是從該位置所抽取的。例如,在圖2中所示的示例中,若從表格抽取表項ID 1且安置在快取記憶體中,則表項ID欄位74可以指定1的值。表項ID欄位74可以用於處置由處理電路系統4所執行的指令以供檢查給定的位址映射到記憶體保護表的哪個表項ID。藉由將表項ID的指示包括在每個快取表項34內,這意味著,若由指令所指定的位址匹配由快取儲存器32內快取的記憶體保護表項所界定的區域中的一者,則可以簡單地從快取記憶體讀取該表項的表項ID 74,而不需要由對記憶體的存取決定該表項ID。
表格ID 72用來限定快取記憶體中的查找。在查找快取記憶體以決定快取記憶體是否包含與給定位址對應的記憶體保護表項時,只有表格ID欄位72匹配儲存在現用表ID暫存器28中的現用ID的快取表項34才可以產生命中。即使向快取記憶體供應的查詢位址是在針對對應的記憶體保護表項50所快取的參數中的基礎位址與界限位址之間,包含與現用表格ID不同的表格ID的快取表項34也將產生不中(miss)。
注意,快取表項34不需要具有啟用旗標60的空間,該啟用旗標被提供在儲存在記憶體保護表22內的記憶體中的每個記憶體保護表項50中。這是因為,快取記憶體32可能被禁止快取停用的記憶體保護表項。在MPU快取儲存器32中所快取的所有記憶體保護表項可以是啟用的表項時,則啟用旗標60會是快取表項34內的冗餘訊息。藉由禁止快取停用的表項,這意味著,執行處理電路系統的軟體可以包括MPU表22內停用的記憶體保護表項,該等停用的記憶體保護表項界定之後可以啟動的區域,然後在確實需要啟動彼等區域使得位址存取接著將變成被容許的時候,這可以簡單藉由在記憶體保護表22的對應記憶體保護表項中設定啟用旗標60來進行而不需要從MPU快取儲存器32觸發任何快取無效化。
可以由執行MPU快取無效化命令的處理電路系統4觸發來自MPU快取儲存器32的快取指示。MPU快取無效化命令的變型可以觸發所有快取的表項的無效化,或觸發滿足由位址或位址範圍、表格ID、或表項ID中的任一者或更多者所指定的條件的表項的無效化。
圖4示出靜態MPU暫存儲存器36以及MPU 20內所提供的各種控制暫存器80的示例。
對於靜態MPU暫存儲存器36而言,圖4示出每個靜態MPU表項提供一組的三個暫存器。也就是說,對於MPU暫存儲存器內的硬體中所支援的每個靜態MPU表項而言,可以提供三個暫存器82、84、86的單獨實例。暫存器86是可選的。暫存器82及84一起表示對應的靜態MPU表項,該靜態MPU表項具有與記憶體保護表22的給定記憶體保護表項50類似的內容。因此,暫存器82、84可以指定基礎位址(起始位址)54及界限位址(結束位址)或大小56、存取權限58、及啟用旗標60,該啟用旗標控制表項是否啟用(能夠用於檢查記憶體存取請求的權限)或停用(使得不能基於此表項的內容來有效化記憶體存取請求,然而在停用時,應該保留暫存器82、84、86的其餘參數直到隨後重新配置為止)。將理解到,暫存器82、84的特定格式僅是一個示例,且可以經由不同的欄位重新佈置或表示相同的資訊。並且,暫存器82、84可以儲存圖4中未示出的其他資訊。並且,在一些情況下,可以由單個暫存器表示靜態配置的MPU表項的內容。
因此,在靜態MPU表項界定與由處理電路系統4所發送的存取請求的目標位址匹配的位址區域且該表項啟用時,則可以使用該匹配的靜態MPU表項中所界定的存取權限58來驗證是否允許存取。在此情況下,可能不一定要存取記憶體系統10以有效化存取請求。
與由暫存器82、84所表示的對應靜態MPU表項相關聯的額外元資料暫存器86是可選的,但若有提供,則可以允許更高效的效能。元資料暫存器86指定暫存器停用及未知(RDU)欄位88,該暫存器停用及未知欄位若被設定為1,則指示與對應靜態MPU表項相關聯的暫存器82、84目前不用來儲存靜態MPU表項。若RDU欄位88被設定為1,則這指示可以將暫存器82、84用作MPU快取儲存器32的延伸部分來從儲存在記憶體系統10中的MPU表22快取對應記憶體保護表項的內容。這可以藉由在軟體不需要硬體中所支援的全數靜態MPU表項時有效地增加MPU快取儲存器32的容量,來允許更佳的效能。元資料暫存器86的其餘部分可以指定額外的快取欄位70、72、74,該等額外快取欄位被提供為用於快取儲存器32內本來在靜態暫存器中不會提供的每個快取表項34。注意,在使用RDU旗標88來將靜態暫存器中的特定表項設定為未知時,則這與使用啟用旗標60將表項設定為停用不同。在表項停用但被標記為未知時,則保留暫存器82及84的內容且不能將這些暫存器用作快取儲存器。例如,軟體可能希望暫時停用特定的靜態表項,使得不能使用該表項來有效化對位址空間的該區域的記憶體存取,但保留彼等暫存器82、84中的參數,使得之後可以再次啟用區域而不需要重新程式化靜態MPU暫存器(除了設定啟用旗標60以外)。在使用RDU旗標88將靜態區域設定為未知時,對於被設定為未知的靜態區域中所快取的表項而言,可以不需要啟用旗標60,因為快取記憶體可能被禁止快取停用的記憶體保護表項,如上文所論述。因此,一些實施方式可以選擇具有單個共享的有效/啟用旗標而不是單獨的啟用旗標60及有效旗標70。
控制暫存器80包括用於程式化靜態MPU表項的內容的區域程式化暫存器90。控制暫存器80中的每一者是記憶體映射的暫存器,可以藉由執行加載/儲存操作來存取該記憶體映射的暫存器,該加載/儲存操作將映射到該特定暫存器的記憶體位址指定為目標位址。為了避免需要將位址單獨分配給所提供的靜態MPU表項組的每個個別表項(例如對於硬體中所提供的8或16個靜態MPU表項儲存器組中的每一者來說),用於靜態MPU暫存儲存器中所支援的表項中的每一者的相應版本的第一靜態MPU暫存器82可以共享相同的記憶體映射的位址(且對於位址共享暫存器84來說是類似的)。為了選定要寫入哪個特定版本的暫存器82或84,軟體可以首先將區域識別碼92寫入到區域程式化暫存器90,該區域識別碼與靜態MPU表項中要寫入的一個特定的靜態MPU表項對應,然後可以執行後續的MPU重新配置操作(將映射到暫存器82或84的位址指定為目標位址的儲存指令),且已經安置在程式化暫存器90中的區域號92可以指定哪個靜態MPU表項是要更新的靜態MPU表項。程式化暫存器90也可以包括RDU欄位94,該RDU欄位指定是否要經由元資料暫存器86的RDU欄位88將區域識別碼92在程式化暫存器90中所針對指定的區域設定為停用及未知。再次地,使用在靜態MPU暫存器表項組之間共享的程式化暫存器90來設定RDU欄位意味著,不須要針對每個元資料暫存器86提供單獨的記憶體映射的位址。
如圖4中所示,控制暫存器也包括現用表ID暫存器28,在此示例中,該現用表ID暫存器將現用表格的基礎位址30指定為現用表格識別碼。現用表格的大小被指定在單獨的大小參數62中,該大小參數被指定在另外的控制暫存器96內。可以使用暫存器在圖4中用點標記的其餘欄位來儲存其他的資訊。在此示例中,包含表格的基礎暫存器30的暫存器28也包括清除現用表格大小欄位98。如圖4的示例中,現用MPU表22的基礎位址30及大小62被儲存在不同的暫存器中,這可以意味著,可能需要不同的MPU參數配置操作以分別設定基礎位址及大小。因此,若需要改變基礎位址及大小,則在改變基礎位址及大小中的一者與改變另一者之間可以存在一段時間,在該段時間期間,界定控制暫存器80內的現用表格的參數有效地界定可能包括還未用記憶體保護表項50程式化的資料字的位址空間區域。這可能有針對沒有要用來界定記憶體保護表項的資料檢查記憶體存取操作的風險,這可能導致不確定的結果,該等不確定的結果可能中斷由記憶體保護表所實施的安全性檢查。MPU快取儲存器32的一些實施方式可以容許從記憶體保護表22預先提取表項。因為此類預先提取可以發生在任何時間點,且可能不是由處理電路系統4所執行的指令直接觸發,可能難以確保不快取記憶體保護表22之外的無效表項。此問題可以藉由在包含基礎位址30之 暫存器28中提供清除現用表格大小欄位(CLRATSIZE)98來解決。在重新配置現用表ID暫存器28時,若要安置在該暫存器中的新資料將CLRATSIZE欄位指定為等於1,則除了更新該暫存器的內容以外,也將暫存器96中的現用表格大小62清除為0,這有效地指示在記憶體系統10中沒有現用表格22。這防止基於資料字不適當地容許任何記憶體存取請求,該資料字在僅已更新基礎位址但還未更新大小之後被不正確地假設為記憶體保護表22的一部分。後續的MPU重新配置操作可以接著將暫存器96內的位址轉譯大小更新為用於新的現用表格的適當值。另一方面,若要寫入暫存器28的新值具有設定為0的CLRATSIZE欄位98,則響應於此操作,只有現用表ID暫存器28的指定基礎位址30的內容會被更新,且在此情況下,暫存器96中的大小62會保持不變。在相同大小的兩個記憶體保護表之間切換時,這會是更適當的。
圖5示意性地繪示由記憶體保護表22的不同的基於記憶體的MPU表項50或靜態MPU暫存儲存器36內的靜態配置的MPU表項所涵蓋的位址空間的一部分。在此示例中,位址空間是實體位址空間,所以由處理電路系統4所發出的記憶體存取請求指定與記憶體系統內的對應位置直接對應的實體位址,且針對界定實體位址空間的對應區域的記憶體保護表項檢查該等記憶體存取請求。圖5中所標記的區域100與記憶體保護表22的三個不同的基於記憶體的記憶體保護表項50對應。注意,記憶體保護表22可以界定位址空間的稀疏設定的區域,且在由記憶體保護表的連序表項所界定的對應位址區域之間可以存在間隙。
另一方面,區域102與由靜態MPU暫存儲存器36所表示的兩個相應的靜態MPU表項對應。因此,用於從記憶體保護表22定位給定的基於記憶體的MPU表項的存取延遲可能取決於該表項是否是在MPU快取儲存器32中而變化,但對與靜態MPU表項對應的靜態區域102的存取卻可以是確定的,因為靜態區域將保持是經配置的,直到處理電路系統4執行指令以供重新配置界定由給定靜態MPU表項所界定的靜態區域的存取權限或範圍的參數為止。因此,軟體可以決定位址空間的某些關鍵區域,對於該等關鍵區域而言,可能需要快速地及/或以用有定數的延遲處置存取,且藉由將靜態MPU區域用於處置彼等存取,這對於實時應用來說可以是更佳的。同時,藉由支援儲存在記憶體中的記憶體保護表22內的可變數量的記憶體保護表項50,這允許同時界定較大數量的總記憶體區域,從而減少由於對於給定的位址缺乏界定的記憶體保護表項所造成的錯誤的頻率。因此,此種混合方式在效能與硬體成本之間提供了更佳的平衡,特別是對於涉及實時處理或需要有定數的存取延遲但具有受限的記憶體容量的系統而言。
如圖5中所示,由記憶體保護表22的記憶體保護表項所涵蓋的區域可能與跟靜態MPU表項對應的靜態配置的位址區域重疊。在此情況下,可以用不同的方式處置重疊。在一些實施例中,若記憶體存取請求的目標位址在靜態MPU暫存儲存器36中命中,則由其匹配的靜態MPU表項所界定的存取權限可以優先考慮,且否決MPU表22的匹配的基於記憶體的MPU表項中所指定的任何有衝突的屬性。在此情況下,一旦在靜態MPU暫存儲存器36中存在命中,就可以不需要由MPU記憶體存取電路系統24起動任何記憶體存取請求。
或者,在靜態MPU暫存儲存器中存在命中且記憶體存取請求滿足由該匹配的靜態MPU表項所指定的存取權限的情況下,則可以抑制MPU記憶體存取,使得無權存取記憶體保護表22,但若記憶體存取請求無法滿足匹配的靜態MPU表項中所指定的存取權限,則仍然可以由MPU記憶體存取電路系統24觸發MPU記憶體存取。若記憶體保護表22針對包括目標位址的位址區域包括匹配的MPU表項,則若該匹配的基於記憶體的MPU表項容許執行存取,則即使用於相同位址的靜態MPU表項不容許記憶體存取,也可以允許記憶體存取。如此允許靜態與基於記憶體的MPU表項之間的重疊可以用於針對更高特權的進程設定能夠存取更廣範圍的位址空間的權限,且也可用來允許較低特權的進程存取僅存取更高特權的進程所可用的位址範圍的有限子集。例如,由靜態MPU表項所表示的區域102-1可以將存取限於較高特權的進程,使得由較低特權的代碼所存取的子範圍100-2內的位址會無法滿足由靜態MPU表項所指定的存取權限,但可以經由基於與區域100-2相關的對應的基於記憶體的MPU表項來實施的權限檢查。這避免了任何將區域102-1分成表示區域102-1的在區域100-2的任一側的部分的單獨表項的需要。
圖6是繪示檢查記憶體存取是否被MPU容許的方法的流程圖。在步驟120處,處理電路系統4發出指定目標位址的記憶體存取請求。記憶體存取請求可以是由指令提取電路系統5所發出的指令提取請求,或可以是由加載/儲存單元8所發出的資料存取請求(加載或儲存操作)。在步驟122處,MPU 20決定目標位址是否命中儲存在靜態MPU暫存儲存器36中的靜態MPU表項。也就是說,權限檢查電路系統40偵測目標位址是否在靜態MPU表項中的任一者的對應位址區域內。若是,則在步驟124處,權限檢查電路系統決定所命中的靜態MPU表項中所指定的存取權限是否被滿足。若存取權限被記憶體存取請求滿足,則在步驟126處,記憶體存取請求被MPU容許。在包括SAU 42的系統中,也可以存在由SAU 42的安全性檢查電路系統46所執行的額外安全性檢查,以決定記憶體存取請求是否被容許,因此即使MPU在步驟126處容許記憶體存取請求,該請求也可能仍然被SAU 42拒絕。然而,受限於SAU檢查,記憶體存取請求被MPU 20容許。
若在步驟124處,存取權限不被記憶體存取請求滿足,則存在MPU可以如何響應的替代選項。在第一選項中,在目標位址命中靜態MPU表項但該靜態MPU表項指定不被記憶體存取請求滿足的存取權限時,則在步驟128處,可以拒絕記憶體存取請求。在此情況下,MPU可以觸發用訊號通知錯誤情況或例外。或者,在第二選項中,與在步驟122處在目標位址在靜態MPU暫存儲存器中不中時相同,該方法可以繼續進行到步驟130。
因此,若對於靜態MPU暫存儲存器36中的表項中的目標位址而言存在不中,或者存在命中但記憶體存取請求無法滿足存取權限且系統實施選項2,則該方法繼續進行到步驟130,在步驟130處,權限檢查電路系統40偵測是否存在MPU快取儲存器32中的目標位址的任何命中。注意,雖然一些系統可以僅在靜態MPU暫存儲存器36中還不存在命中(或還不存在具有被滿足的存取權限的命中)時查找MPU快取儲存器32(即在圖6中所示的順序步驟流的情況下),但在一些替代方案中,為了改善效能,可以與靜態MPU暫存儲存器並行地查找快取記憶體,使得萬一在靜態MPU暫存儲存器不能明確提供是否應容許或拒絕記憶體存取請求的決定的情況下需要查找快取記憶體,則已經起動了快取記憶體查找,從而允許可以較早取用快取記憶體響應。儘管如此,相對於快取MPU表項,靜態MPU表項可以被優先考慮,即使該等MPU表項是並行查找的。
因此,若目標位址命中(即在對應的位址區域內)快取的MPU表項,且該快取的MPU表項在MPU快取儲存器內是有效的且與跟目前在現用表ID暫存器28中識別為現用表格相同的MPU表對應,則在步驟132處,權限檢查電路系統決定MPU快取儲存器的命中表項中所指定的存取權限是否被滿足。若是,則再次在步驟126處,記憶體存取請求被容許且經受任何可能需要的SAU檢查。若MPU快取儲存器32的命中表項中所指定的存取權限在步驟132處未被滿足,則在步驟134處,記憶體存取請求被拒絕且可以用訊號通知錯誤。
若在步驟130處,目標位址被決定為在MPU快取儲存器32的所有表項中都不中(即不存在指定與現用表格ID相同的表格ID且與包括目標位址的記憶體位址區域對應的快取表項),則在步驟136處,表格查找電路系統26觸發MPU記憶體存取電路系統24以起動一或更多個MPU記憶體存取請求以供基於目標位址查找基於記憶體的MPU表22。下文針對圖7更詳細地論述了查找進程。可以針對一組預設的存取權限驗證及/或可以由SAU 42針對記憶體安全性配置暫存器44中所界定的安全性區域檢查在查找期間由MPU記憶體存取電路系統所觸發的MPU記憶體存取請求。因此,對於被起動為MPU表查找的一部分的MPU記憶體存取請求而言,不須要針對靜態MPU暫存儲存器36或記憶體保護表22檢查彼等記憶體存取。基於表格查找進程,在步驟138處,表格查找電路系統26決定基於記憶體的記憶體保護表22中是否已經存在命中。若是,則再次在步驟132處,決定記憶體偵測表中的命中表項中所指定的存取權限是否被滿足,且取決於存取權限是否被滿足,接著該方法視情況繼續進行到步驟126或步驟134以容許或拒絕記憶體存取。除了檢查記憶體偵測表22的命中表項中的存取權限以外,與MPU快取儲存器32相關聯的快取記憶體控制器也可以將記憶體保護表22的命中表項分配給快取記憶體。若須要逐出記憶體保護表22中先前快取的表項,則可以藉由快取記憶體替換政策選定受害表項,舉例而言,例如最近最少使用的表項。
另一方面,若在步驟138處,表格查找電路系統26決定,在基於記憶體的MPU表22中對於目標位址而言存在不中,則在記憶體保護表中並未界定與目標位址對應的位址區域,所以用訊號通知不中。響應於記憶體保護表中的不中,不同的選項可用於處置記憶體存取請求。在一些情況下,可以簡單拒絕請求且可以用訊號通知錯誤。或者,可以界定一組預設屬性,該組預設屬性要用來處置不具有在記憶體中的靜態MPU暫存儲存器36或記憶體保護表22中的任一者中所界定的特定記憶體保護表項的任何記憶體存取請求。因此,如果在記憶體保護表22中不中,則可以針對預設屬性檢查記憶體存取請求,然後可以由預設屬性決定記憶體存取請求是否被MPU 20容許或拒絕。
圖7是更詳細地示出圖6的步驟136處的查找進程的流程圖。圖7示出查找控制表的方法,該控制表包括許多表項,其中每個表項指定可變大小的對應位址區域的第一界限位址以及第二界限位址或大小中的任一者。可以容許區域的大小是精確的2的次方以外的位元組數。對應的位址區域的界限可以不與N位元組位址邊界對準,其中N是對應的位址區域的大小。在圖6的步驟136中,控制表是記憶體保護表22,且用來查找表格的查詢位址是由處理電路系統4所發出的記憶體存取請求所指定的目標位址。然而,也可以將圖7的查找進程用於其他形式的控制表。例如,可以將它們使用在指定安全或非安全位址區域的控制表中、或用於追蹤哪個代碼屬於正被執行的特定軟體程序庫的控制表中,該控制表可以由處理電路系統所使用以限制哪些代碼區段能夠呼叫其他軟體程序庫,這可以提供保護以免於回傳導向式的程式化攻擊。因此,將理解到,可以將圖7中所示的方法應用於其他形式的控制表,而不是只有記憶體保護表22。
在圖7的步驟150處,查找電路系統26接收查詢位址。表格查找電路系統26決定初始搜尋窗,該初始搜尋窗包括控制表22的許多表項,該等表項要被搜尋以決定查找位置是否與彼等表項中的任一者的對應位址區域對應。在一些情況下,搜尋窗可以包括控制表22的所有表項。或者,在一些實施方式中,表格查找電路系統26可以將不包括控制表的所有表項的較窄的搜尋窗決定為初始搜尋窗,其中搜尋窗的特定窄化是基於由儲存在靜態MPU暫存儲存單元36被標記為未知的表項中的任何快取的表項或MPU快取儲存器32的快取的記憶體保護表項所推導的資訊來決定的。例如,若在查找MPU快取儲存器32時,已經決定查詢位址小於給定快取表項34的基礎位址,則可以知道,記憶體保護表22的匹配表項可以僅具有比該快取表項34中所指定的表項ID 74小的表項識別碼,因為控制表22的表項是依據基礎位址來排序的。
在步驟152處,表格查找電路系統26起始被執行為查找表格的二元搜尋程序的第一二元搜尋步驟。二元搜尋步驟(也稱為搜尋窗窄化步驟)包括如圖7中所示的許多步驟152-170,該等步驟可以在連序的二元搜尋步驟中重複多次。在步驟152處,例如在目前的搜尋窗的中間點處選定控制表22的候選表項。雖然非必需,但為了效能,可以優選地將中間點定位得儘可能靠近目前搜尋窗的中點,然而對於搜尋窗中的偶數量的表項而言,可能無法具有恰好在搜尋窗的起始與結束之間的中間的候選表項。例如,若搜尋窗包括16個表項,則可以將16個表項中的表項8或表項9中的任一者選定為候選表項。並且,對於僅包括2個表項的搜尋窗而言,則搜尋窗的外邊界處的表項中的一者會被選定為候選表項。
在步驟154處,決定選定的候選表項是否是在表格的有效範圍之外。因為有時候控制表22可以包括不恰好與2的次方對應的許多表項,在步驟150處,針對不具有2的次方的表項數的表格,可以將搜尋窗構造為好像表項數量等於下個最高的2的次方,且因此有時候在步驟152處,所選定的候選表項可能實際上是在表格的有效範圍之外。若是,則在步驟156處,表格查找電路系統26抑制MPU記憶體存取電路系統24發出用於加載所選定的候選表項的第一界限位址的任何加載操作。此處,第一界限位址可以是對應位址區域的起始位址或結束位址中的任一者,這取決於該起始位址及該結束位址中的哪個在給定實施方式中的每個二元搜尋步驟中被比較。對於上文所論述的MPU示例而言,使第一界限位址是對應位址區域的起始位址可能是最簡單的。在步驟156處,表格查找電路系統決定,在所選定的候選表項在表格的範圍之外時,可以隱含地決定查詢位址與第一界限位址的比較的結果,使得在基於該比較而窄化搜尋窗時,較窄的窗包括表格內的至少一個表項。例如,若在步驟164處所執行的比較是決定查詢位址是否小於對應位址區域的基礎位址,則比較的隱含結果可以是,在所選定的候選表項是在表格的範圍之外的情況下,查詢位址小於基礎位址,因為這將往往意味著,較窄的窗將排除表格在有效範圍之外的一部分且將包括表格中的至少一個表項。
若決定在步驟154所選定的候選表項是在表格的有效範圍內,則該方法繼續進行到步驟158,在步驟158處,表格查找電路系統26可以基於MPU快取儲存器22或靜態MPU儲存器36中所快取的資訊(若標記為RDU的靜態表項被保留作為快取記憶體的話)決定是否已經知道查詢位址與所選定的候選表項的第一界限位址的比較結果。例如,若已經決定查詢位址小於給定快取表項的基礎位址,則可能隱含的是,在所選定的候選表項具有大於給定的快取的表項的表項ID 74的表項ID時,查詢位址也必須小於所選定的候選表項的第一界限位址。或者,在第一界限位址是對應位址區域的上限結束位址的系統中,則若對快取記憶體32的查找已經被決定的是,查詢位址大於給定的快取表項34的界限位址,則在所選定的候選表項具有等於或小於給定快取表項34的表項ID 74的表項ID時,則可能隱含的是,查詢位址必須大於所選定的候選表項的第一界限位址(結束位址)。因此,若可以取決於快取的資訊而已經知道通常在查詢位址與所選定的候選表項的第一界限位址之間執行的比較的結果,則在步驟160處,用於加載所選定的候選表項的第一界限位址的加載MPU記憶體存取請求被表格查找電路系統26抑制,反而可以使用由快取的資訊所決定的比較結果,而不是實際執行針對從記憶體系統10所加載的第一界限位址比較查詢位址的操作。注意,步驟158是可選的,且因此一些實施方式可以不使用快取的資訊來引導查找進程。並且,在系統中,若在步驟150處基於儲存在MPU 20內的快取的表項來窄化搜尋窗,則在該階段處窄化的窗可以已經排除由快取儲存器所知道的不需要的表項,且因此在此情況下,步驟158可以不是必要的,因為這可能已經有效地在步驟150處考慮了。因此,將理解到,可以擇一在制定初始搜尋窗時及/或在檢查給定二元搜尋步驟的比較結果時,在兩個步驟中的一者處考慮快取的資訊,但進行上述步驟中的任一者並不是必需的。為了完整起見,在圖7中示出了兩者。
若不能基於已經快取的資訊來決定查詢位址與所選定的候選表項的第一界限位址之間的比較結果,則在步驟162處,表格查找電路系統26觸發MPU記憶體存取電路系統24來觸發加載MPU記憶體存取請求以供從記憶體系統加載所選定的候選表項的第一界限位址。因此,可以發出加載請求,該加載請求將與現用MPU表的基礎位址30與基於所選定的候選表項的表項識別碼來決定的偏位的總和對應的位址指定為該加載請求的目標位址。可以使此加載操作經受基於預設的屬性組及/或由SAU 42所指定的記憶體安全性配置進行的權限檢查。在針對所選定的候選表項回傳了第一界限位址(對應的位址區域的起始或結束位址)時,則在步驟164處,將查詢位址與回傳的第一界限位址進行比較。無論是否實際上在步驟164處執行比較或是否在步驟160處基於快取的資訊隱含地決定比較結果,在步驟166處,窄化搜尋窗以排除不滿足比較結果的表項。例如,在第一界限位址是對應的位址區域的起始(基礎)位址的情況下,步驟164處的比較可以決定查詢位址是否小於第一界限位址。若查詢位址小於第一界限位址,則在步驟166處,可以決定較窄的搜尋窗以包括先前搜尋窗的包括具有比所選定的候選表項的表項識別碼小的表項識別碼的表項的部分。可選地,也可以將所選定的候選表項本身包括在較窄的搜尋窗中,這有時候可以藉由減少關鍵時序路徑的長度來使得電路實施更快速,因為這避免了用來將所選定的候選表項的表項識別碼減一以識別較窄搜尋窗的頂部的額外減法操作的需要。若查詢位址大於所選定的候選表項的起始位址,則較窄的搜尋窗可以排除具有比所選定的候選表項的表項識別碼小的表項識別碼的表項。
另一方面,若第一界限位址是對應位址區域的結束位址,且在步驟164處,比較是決定查詢位址是否大於第一界限位址,則若查詢位址大於第一界限位址,則在步驟166處,較窄的搜尋窗可以包括具有大於所選定的候選表項的表項識別碼的表項識別碼的彼等表項。另一方面,在查詢位址小於對應位址區域的上限位址時,則可以窄化搜尋窗以包括所選定的候選表項及具有比所選定的候選表項的表項識別碼小的表項識別碼的任何其餘表項。
在步驟168處,表格查找電路系統決定擇一在步驟156處或在步驟166處執行的窄化之後,較窄的搜尋窗現在是否僅包括控制表的單個候選表項。若否,則仍然需要進一步的二元搜尋步驟,且在步驟170處,該方法繼續進行到下個二元搜尋步驟,該下個二元搜尋步驟將由步驟166或步驟158所造成的窄化的搜尋窗用作目前的搜尋窗。該方法接著移回步驟152以重複步驟152到168以供進行另一個二元搜尋步驟。
若在步驟168處,決定較窄的搜尋窗確實包括單個表項,則不需要進一步的二元搜尋步驟。在此情況下,在步驟172處,從記憶體系統加載由較窄的搜尋窗中剩餘的單個表項所指定的第二界限位址或大小。再次地,可以使被發出以從記憶體提取單個表項的第二界限位址或大小的加載MPU記憶體存取請求經受由SAU 42進行的檢查及/或基於預設的記憶體存取屬性進行的檢查。在一些情況下,MPU記憶體存取電路系統24也可能需要觸發加載以從記憶體系統獲得單個候選表項的第一界限位址,即使在已經在先前的二元搜尋步驟處檢查該第一界限位址時也是如此。其他的實施方式可以提供在較早的二元搜尋步驟中所讀取的一或更多個選定的候選表項的第一界限位址的快取,且因此若在步驟172處剩餘的單個表項的第一界限位址仍被快取,則可以抑制用來獲得單個表項的第一界限位址的加載。
在步驟174處,查找電路系統26決定查詢位址是否是在針對單個剩餘的候選表項的對應位址區域所界定的界限內。因此,若經由位址指定第二界限,則查找電路系統決定查詢位址是否位在第一界限位址與第二界限位址之間(第一界限位址及第二界限位址是否被視為是對應位址區域的一部分或是否這些位址中的一者可能被視為在對應位址區域之外可以是取決於實施方式的選擇)。另一方面,若使用大小來界定第二界限,則查找電路系統可以將第一界限位址加上或減去該大小,以決定第二界限位址,然後再次決定查詢位址是否位在第一界限與第二界限之間。若查詢位址是在針對與單個剩餘的表項對應的區域所界定的界限內,則在步驟176處,在記憶體保護表中偵測到命中。可以接著回傳及使用單個剩餘的表項中所指定的屬性以控制由處理元件所執行的給定操作。例如,對於上文示出的MPU示例而言,使用命中表項來執行的操作可以是在圖6的步驟132處檢查存取權限,但對於其他類型的控制表而言,可以使用回傳屬性來執行不同的操作。另一方面,若查詢位址不在單個剩餘的表項的對應位址區域的界限內,則在步驟178處偵測到不中,因為不存在與包括查詢位址的位址區域對應的匹配表項。
因此,在利用圖7中所界定的二元搜尋程序的情況下,僅需要針對在步驟168之後剩餘的單個表項從記憶體加載界定第二界限位址或大小的參數。對於每個二元搜尋步驟而言,僅需要在步驟162處從記憶體加載第一界限位址(且有時候,若可能已經使用快取的資訊來決定將查詢位址與所選定的候選表項的第一界限位址進行比較的結果會是什麼,則無論如何都可以抑制此加載)。此方法有助於減少查找控制表所需的對記憶體的存取的次數,從而允許較快速的效能,因為最大記憶體額外負擔可以與表項N的數量與log2(N) +1成比例,而不是與log2(N)*2成比例。
圖8示出表格具有16個表項的示例的二元搜尋程序的具體示例。被標記為200的每個步驟表示圖7的特定二元搜尋步驟152-170,且標示有特定的比較,該特定的比較會在對應的二元搜尋步驟的步驟164處執行。在此示例中,第一界限位址是對應位址區域的基礎位址,且因此在每個二元搜尋步驟處,在該步驟處在查詢位址與所選定的候選表項的基礎位址之間作出小於比較。例如,註記B6指的是候選表項6的基礎位址。因此,在第一二元搜尋步驟200-0中,初始搜尋窗(SW)可以包括所有16個表項0-15,且所選定的候選表項例如是表項8。基於查詢位址與所選定的候選表項8的基礎位址B8之間的小於比較,接著若查詢位址小於表項8的基礎位址,則將搜尋窗窄化到表項0-7,或若查詢位址等於或大於表項8的基礎位址,則將搜尋窗窄化到表項8-15。類似地,後續的二元搜尋步驟再次作出候選表項的二元分離,以便在每個二元搜尋步驟處將搜尋窗窄化一半,且因此在最多四次的二元搜尋步驟中,可以將16個表項的搜尋窗減少到如圖8中所標記的步驟202處所標識的單個表項。在二元搜尋步驟200中的一些處的比較的比較結果可以被隱含地決定,而不是實際藉由加載第一界限位址且將該第一界限位址與查詢位址進行比較來決定,條件是可以基於快取的資訊知道此比較結果,或條件是表格中的實際表項數不是2的次方且因此上部表項中的一些可能實際上不具有所提供的有效表項。例如,若表格僅包括13個表項,則標記為200-1且用於將查詢位址與表項14的基礎位址進行比較的二元搜尋步驟可以隱含地提供「是」的結果,以便接著直接繼續進行到對包括表項12及13的較窄搜尋窗作用的二元搜尋步驟。類似地,對於N=13(即存在13個表項0到12)而言,因為頂部表項是表項12而沒有表項13,接著標記為200-2的二元搜尋步驟也可以產生隱含的「是」的結果,以識別剩餘在搜尋窗中的單個表項應是表項12。
因此,在已經在步驟202中的一者中識別單個剩餘的候選表項的情況下,這意味著不是查詢位址命中單個剩餘的表項,就是查詢位址完全不中。為了決定這些情況中哪個是真的,在步驟204(即圖7的步驟174)處,查找電路系統決定查詢位址是否在由單個剩餘的表項所界定的區域的基礎位址與界限位址之間。將理解到,可以經由大小參數來決定基礎與界限中的一者或另一者,該大小參數應用於區域的另一個界限。因此,若查詢位址是在對應表項的基礎位址與結束位址之間,則在步驟206處,在該特定表項中偵測到命中,且若查詢位址不在這些界限之間,則在步驟208處偵測到不中。
圖9示出在表格中查找特定查詢位址的具體示例。在此示例中,初始搜尋窗被決定為包括七個表項(表項0-6),因為使用現有的快取的資訊或靜態MPU暫存器資訊,或者因為表格首先僅包括七個表項。在第一二元搜尋步驟200-8中在搜尋窗的中間點處選定表項3,且這決定的是,查詢位址0x00880小於表項3的起始位址0x07500,且因此搜尋窗窄化到排除表項4-6(且可選地,取決於所使用的特定實施方式,也可以依需要排除或包括表項3)。在第二二元步驟200-10中,所選定的候選表項是表項1,且此時,查詢位址被決定為大於表項1之後的區域的起始位址。因此,現在搜尋窗可以排除表項0。因此,現在知道的是,查詢位址必須與表項1或表項2對應,或者不與表格中的表項中的任一者對應。因此,二元搜尋繼續,且現在表項2在步驟200-12處變成所選定的候選表項且加載區域2的基礎位址。此時,查詢位址與區域2的基礎位址的比較指示的是,查詢位址小於區域2的基礎位址。因此,決定的是,區域1是正確的加載區域,且回傳此表項,且從記憶體加載界定該區域的結束位址的界限位址。若處理器已經在先前的二元搜尋步驟處快取了區域1的基礎位址的值,則可以避免重新加載區域1的基礎位址的需要。在此特定的情況下的,查詢位址接著被證明是在區域1的起始位址與結束位址之間,且因此在記憶體偵測表中偵測到命中。然而,若查詢位址還不是在最終二元搜尋步驟中所識別的最終表項的界限之間,則會偵測到不中。
圖10示出惰態保存的示例,該惰保儲存可以用於處置圖1中所示的處理系統2內的例外。如圖1中所示,處理電路系統可以包括通用暫存器12及浮點暫存器14。在遭遇例外時,可能須要將暫存器12的內容保存到提供在記憶體10中的堆疊資料結構,使得可以保留在例外之前執行的軟體的架構狀態,使得在例外之後執行的軟體(例如例外處置器或已經被進行上下文切換的進程)可以將資料覆寫於暫存器12且接著重新使用該等暫存器。然而,雖然也可能需要保留暫存器14中的浮點架構狀態,但實際上,並非所有的軟體進程都使用浮點暫存器。在不包括任何浮點指令的進程中,則可能不需要浮點暫存器。將來自暫存器12、14的狀態保存到記憶體系統10中的堆疊資料結構需要一些時間。因此,若在例外之前執行的第一軟體進程或在例外之後執行的第二軟體進程中的任一者不需要浮點暫存器,則可能實際上浪費了花在從記憶體保存浮點狀態的時間。
因此,如圖10中所示,可以使用惰態保存方法,其中響應於例外,將整數暫存器12保存到記憶體中的堆疊,但不響應於例外而保存暫存器14中的浮點狀態。而是,在已經決定第一軟體已經使用了浮點暫存器的情況下,僅在第二軟體隨後執行浮點指令以觸發對浮點暫存器14的存取時,才可以觸發浮點暫存器的保存。雖然不響應於例外而實際保存浮點暫存器,儘管如此,響應於例外,在記憶體10中的堆疊上為浮點暫存器保留了一些空間,且記錄堆疊上的保存區域的位址。這確保,無論是否已經保存了浮點暫存器,用來保留針對在例外之前執行的第一軟體進程所保存的狀態的堆疊框架的佈局可以是一致的,這可以使得後續的狀態恢復更簡單。
然而,在保留位址以供保存浮點暫存器時,此位址可以是堆疊資料結構中可被在例外發生之前執行的第一軟體進程存取的位址。在將浮點暫存器實際上保存到堆疊中的保留空間之前,MPU 20的權限檢查電路系統40可能需要檢查用來將浮點狀態保存到堆疊中的保留空間的記憶體存取是否被容許,然而因為可能已經將現用表格識別碼暫存器28重新配置為用於由第二軟體進程使用,MPU 20可能不再有權存取由第一軟體所使用的MPU表,該MPU表界定是否允許第一軟體將狀態保存到堆疊上的該區域。
為了解決此問題,在發生例外時,除了記錄在堆疊上為了浮點暫存器所保留的空間的位址以外,與處理電路系統4相關聯的例外處置邏輯也可以記錄MPU檢查資訊以供允許硬體在執行第二軟體進程的期間驗證堆疊上的保留空間的位址是否滿足在執行第一軟體的期間所使用的MPU表22的對應表項中所界定的存取權限。此種記錄的MPU檢查資訊可以採取不同的形式。在一些情況下,所記錄的MPU檢查資訊可以包括在例外發生時存在於暫存器28中的現用表格識別碼,使得MPU可以接著之後在保存浮點暫存器時,檢查位址是否滿足該特定記憶體保護表中所指定的存取權限,即使在現用表格已經由於例外而改變時也是如此。或者,MPU可以在例外本身的時候預先驗證為了儲存浮點狀態而保留的區域,且記錄指示該驗證是否成功的資訊。圖11A及11B示出使用第一選項的示例,而圖12A及12B示出使用這些選項中的第二者的示例。
將理解到,圖10中所示的惰態僅是用於處置例外的一個選項。在一些系統中,控制暫存器內的控制資料可以指定是否實際上要將惰態保存用於處置例外,所以可能不總是將惰態保存方式應用於每個例外,且可能仍然藉由在例外時保存整數及浮點狀態兩者來處置一些例外。因此,可以在惰態保存被控制資料允許的情況下使用圖11a到12b中所示的技術。
圖11A及11B示出在遭遇到要在例外之後執行的浮點指令時執行用於浮點狀態的堆疊上的保留空間的位址的驗證的情況下的惰態保存的示例。圖11A示出響應於例外本身而觸發的行動,且圖11B示出由後續的浮點指令所觸發的行動。
如圖11A中所示,在步驟250處,響應於例外,例外處置硬體觸發將整數暫存器保存到堆疊資料結構。在步驟252處,將空間分配於堆疊上以供保存浮點狀態(例如更新堆疊指標資料,使得任何隨後保存的資料都將被保存到在針對浮點狀態所分配的空間之外的堆疊位置,即使在還未保存浮點狀態本身時也是如此)。或者,一些實施例可以反向執行步驟252及250,使得將整數暫存器保存到針對浮點狀態所分配的空間之外的堆疊。藉由在控制暫存器中設定旗標來將惰性浮點保存操作標記為是待處理的(pending)。並且,將識別浮點保存區域的位址保存到記憶體或控制暫存器。在步驟254處,例外處置硬體觸發再次將MPU檢查資訊保存到記憶體中的結構或暫存器中的任一者,該MPU檢查資訊用於允許硬體之後檢查保留的浮點保存區域的位址是否可以有效地被在例外之前執行的進程存取。在此示例中,MPU檢查資訊可以例如是在例外發生時在暫存器28中所提供的現用表格ID,或可以是某個其他的識別碼,該識別碼允許決定與在例外之前執行的進程相關聯的MPU表中的所需表項的位置。將理解到,圖11A並未示出可能響應於例外而發生的所有操作,而是僅示出與惰態保存相關的操作。在一些情況下,可以與堆疊相關聯的MPU表項可鎖定在快取記憶體中以防止逐出。
如圖11B中所示,在已經處置了例外且在例外之後開始執行第二軟體進程的情況下,接著遭遇到浮點指令。在步驟260處,決定儲存在控制暫存器中的旗標是否指示浮點保存操作是否仍然是待處理的。若浮點保存操作不再是待處理的,則在步驟262處,執行浮點指令。然而,若浮點保存操作仍然是待處理的,則在步驟264處,獲得保留的浮點保存區域的位址,且藉由MPU使用所保存的MPU檢查資訊來檢查該位址。可能需要偵測是否可以基於經由MPU檢查資訊所識別的MPU表驗證為了保存浮點保存而保留的整個位址區域。若為了保存浮點狀態而保留的區域的起始位址及結束位址兩者與MPU表的相同記憶體保護表項對應,則這可以簡化檢查,因為針對該區域內的一個位址進行的存取權限的單次檢查可能足以決定是否允許用於將浮點狀態保存到堆疊的所有存取。因此,在一些情況下,在圖11A的步驟254處所儲存的MPU檢查資訊也可以包括保留區域的起始位址及結束位址是否與相同的記憶體保護表項對應的指示。
因此,在步驟264處,MPU 20獲得與保留區域對應的一或更多個記憶體保護表項,且在步驟266處檢查由彼等表項所指定的存取權限是否被為了保存浮點狀態所發出的記憶體存取請求滿足。若存取權限被滿足,則在步驟268處,將浮點狀態保存到記憶體中的堆疊結構,且清除浮點保存待處理指示以指示不需要對後續的浮點指令再次執行狀態保存。然而,若對於用於保存浮點狀態的任何存取請求而言,權限未被滿足,則在步驟270處,用訊號通知錯誤。在一些情況下,錯誤可以防止執行浮點指令。然而,在其他情況下,儘管有錯誤,也可以執行浮點指令,因為若錯誤具有比已經在處置的例外低的優先度,則錯誤可能仍然是待處理的,直到已經完成處理該先前的例外為止,且可以接著處置該錯誤。圖11B的步驟270與262之間的虛線指示,有時候,儘管有錯誤,仍然可以執行浮點指令。
圖12A及12B繪示圖11A及11B的替代方案,其中圖12A示出響應於例外的狀態保存,且圖12B示出響應於遭遇到的浮點指令針對狀態保存執行的操作。在此示例中,響應於例外,步驟250與圖11A中的相同。在步驟282處,在堆疊結構中分配空間以供保存浮點暫存器。再次地,一些實施方式可以保留這些步驟且在為了保存整數暫存器分配空間之前在堆疊上針對浮點暫存器分配空間。在此示例中,在圖12A的步驟284處的例外處置時預先驗證堆疊上的分配區域的位址。也就是說,針對由現用表ID暫存器28所識別的現用記憶體保護表驗證堆疊中的分配空間內的位置的位址。基於任何匹配的MPU表項中所指定的存取權限,決定用於保存浮點狀態的存取是否會被允許,且若是,則在步驟286處,將浮點保存區域的位址儲存到記憶體或暫存器。在一些情況下,已經儲存浮點保存區域本身的位址的事實可能足以指示,步驟284處的預先驗證是成功的,所以可能不須要也儲存指示預先驗證是成功的旗標。或者,也可以提供單獨的旗標以確認驗證是成功的。在已經在步驟286處保存為了保存浮點狀態所分配的區域的位址的情況下,在步驟288處,設定浮點保存待處理指示以指示,會需要對在例外之後執行的第一浮點指令進行浮點保存操作。
因此,在此示例中,MPU檢查資訊可以是步驟284處的預先驗證是成功的指示。
若步驟284處的預先驗證決定,不允許用於保存點狀態的存取,則可以有2個選項。在第一選項中,在步驟290處,例外處置電路系統或MPU可以設定指定用於儲存浮點狀態的存取會是無效的控制旗標,但儘管如此,未觸發錯誤,然後在步驟288處,浮點保存操作被標記為是待處理的。可以優選地允許即使預先驗證不成功,也在沒有錯誤的情況下繼續進行後續的處理,因為這意味著,若在例外之後執行的代碼從不存取浮點暫存器,則因為不會不必要地觸發錯誤而改善了效能,因為從不執行對用於儲存浮點狀態的保存區域的無效存取。或者,在第二選項中,在步驟292處,在預先驗證中決定不允許存取時的情況下,可以觸發錯誤。
圖12B示出響應於在處置例外之後遭遇浮點指令而執行的對應操作。在步驟260處,決定浮點狀態保存操作是否是待處理的,且如圖11B,若不存在待處理的浮點保存操作,則在步驟262處,如前述地執行浮點指令。若浮點保存操作是待處理的,則在步驟294處決定是否已經保存了浮點保存區域的位址及是否已經在預先驗證中將存取標示為無效的。在一些情況下,可以將位址本身已經被儲存的事實採用作為存取還未被標記為是無效的指示,或者若特定的控制旗標指定步驟284處的預先驗證是否成功,則這可以用來決定是否繼續進行浮點保存。若已經保存浮點保存區域的位址且存取不是無效的,則在步驟296處,將浮點狀態保存到如由浮點狀態保存區域的位址所識別的先前保留在堆疊上的區域。並且,將浮點保存操作清除為是待處理的,使得任何後續的浮點指令將不會觸發浮點保存操作。另一方面,若存取被標記為是無效的或還未保存浮點保存區域的位址,則在步驟298處,觸發錯誤。注意,這與圖12A的示例中的選項1對應,因為若已經選擇了選項2,則處理永遠不會到達圖12B。
因此,一般而言,藉由保存一些資訊以供不是允許定位與在例外之前執行的進程相關聯的相關MPU表項,就是允許確認在響應於例外時執行的預先驗證是成功的,這允許安全地驗證在例外之後執行進程的同時由硬體所觸發的惰態保存,即使在現用記憶體保護響應於例外而改變時也是如此。
圖13繪示可使用的模擬器實施方式。雖然先前所述的實施例是從用於操作支援相關技術的特定處理硬體的裝置及方法的方面實施本發明,但也可能提供依據本文中所述的實施例的指令執行環境,該指令執行環境是經由使用電腦程式來實施的。此類電腦程式通常稱為模擬器,只要它們提供硬體架構的基於軟體的實施方式。模擬器電腦程式的變型包括仿真器、虛擬機器、模型、及二進制轉譯器(包括動態二進制轉譯器)。一般而言,模擬器實施方式可以運行在支援模擬器程式310的主機處理器330(可選地運行主機作業系統320)上。主機處理器330包括主機處理電路系統332、記憶體管理單元(MMU)334、及記憶體系統336,該記憶體管理單元基於儲存在記憶體中的階層式分頁表支援位址轉譯及記憶體存取權限檢查。在一些佈置中,可能在硬體與所提供的指令執行環境之間存在著多層模擬,及/或存在著提供在相同主機處理器上的多個相異的指令執行環境。歷史上,已經需要強力的處理器來提供用合理的速度執行的模擬器實施方式,但此類方法在某些情況下可以是合理的,例如在基於相容性或重複使用的理由而需要運行相對於另一個處理器而言是原生的代碼時。例如,模擬器實施方式可以提供具有未受主機處理器硬體所支援的額外功能的指令執行環境,或提供一般與不同的硬體架構相關聯的指令執行環境。Robert Bedichek在1990年冬季USENIX會議第53-63頁的「Some Efficient Architecture Simulation Techniques」中給出了模擬的概述。
在先前已經針對特定硬體構造或特徵描述實施例的情況下,在模擬的實施例中,可以由合適的軟體構造或特徵提供等效的功能。例如,可以在模擬的實施例中將特定的電路系統實施為電腦程式邏輯。類似地,可以在模擬的實施例中將記憶體硬體(例如暫存器或快取記憶體)實施為軟體資料結構。在先前所述的實施例中所指稱的硬體構件中的一或更多者存在於主機硬體(例如主機處理器330)上的佈置中,一些模擬的實施例可以在合適時利用主機硬體。
模擬器程式310可以被儲存在電腦可讀取儲存媒體(其可為非暫時性媒體)上,且提供與目標代碼300(其可包括應用程式、作業系統、及超管理器)的程式介面(指令執行環境),該程式介面與正被模擬器程式310所模型化的硬體架構的應用程式介面相同。因此,可以使用模擬器程式310來藉由在指令執行環境內執行目標代碼300的程式指令,使得實際上不具有上文所論述的裝置2的硬體特徵的主機電腦330可以模仿這些特徵。
如圖13中所示,模擬器程式310可以包括在功能上與圖1的處理電路系統4、MPU 20、及SAU 42對應的處理程式邏輯340、MPU程式邏輯350、及SAU程式邏輯360。MPU程式邏輯350包括在功能上分別與權限檢查電路系統40、MPU記憶體存取電路系統24、及表格查找電路系統26對應的權限檢查程式邏輯352、MPU記憶體存取程式邏輯354、及表格查找程式邏輯356。MPU程式邏輯350也包括用於管理分別與靜態MPU暫存儲存器36及現用表ID暫存器28對應的靜態MPU表項儲存結構357及現用ID資料結構358的程式邏輯。資料結構357、358的實際資料被儲存在主機硬體330的記憶體系統336中,但模擬器程式包括用於界定資料結構357、358及存取資料結構357、358上的資料的邏輯。不需要提供與圖1的MPU快取儲存器32對應的程式邏輯,因為在模擬時,所有下層資料都被儲存在主機硬體330的記憶體系統336中,且因此模擬快取記憶體不大可能提供任何效能改善。儘管如此,與MPU表22分離地模擬靜態MPU表項資料結構357,使得模擬器保持與被設計為與靜態界定的MPU表項交互作用的代碼相容。在一些實施方式中,模擬器310也可以包括用來模擬MPU快取儲存器32的程式邏輯,因為雖然這可能無益於模擬的效能,但若模擬器旨在準確地模擬被模擬的MPU 350會用來響應記憶體存取請求的時脈循環數,則可能需要這樣。SAU程式邏輯360包括在功能上與圖1的記憶體安全性配置暫存器44及安全性檢查電路系統46對應的記憶體安全性配置資料結構362及安全性檢查程式邏輯364。
模擬器程式310管理所模擬的位址空間370的模擬,該位址空間與會在由模擬器程式310所模擬的處理器上提供的實體位址空間對應。要執行的目標代碼300、及記憶體保護表22與所模擬的位址空間370內的位址相關聯。目標代碼300包括指定所模擬的位址空間370內的實體位址的記憶體存取指令,該等指令經受由MPU程式邏輯350基於靜態MPU表項資料結構357及/或MPU表22中所界定的存取權限進行的權限檢查,且若它們通過權限檢查則在模擬器程式310的控制之下被映射到主機平台的虛擬位址,該等虛擬位址可以接著被主機硬體的MMU 334轉譯成用來存取主機記憶體系統336的實體位址(MMU 334可以應用進一步的權限檢查基於由主機作業系統320所界定的分頁表來檢查對記憶體系統的記憶體存取是否被容許)。
因此,模擬器310允許硬體上不支援具有基於記憶體的記憶體保護表的MPU的主機平台執行針對具有此類硬體支援的平台所設計的代碼。
在本申請案中,用詞「配置為...」用來意指裝置的構件具有能夠實現所界定的操作的配置。在此上下文下,「配置」意指硬體或軟體互連的佈置或方式。例如,裝置可以具有提供所界定的操作的專用硬體,或可以將處理器或其他處理裝置程式化為執行該功能。「配置為」並不暗示,需要用任何方式改變裝置構件以提供所界定的操作。
雖然已經參照附圖而在本文中詳細描述了本發明的說明性實施例,但要了解到,本發明不限於彼等精確的實施例,且本領域中的技術人員可以在該等實施例中作出各種改變及修改而不脫離如由隨附請求項所界定的發明的範圍及精神。
2‧‧‧資料處理系統 4‧‧‧處理電路系統 5‧‧‧指令提取單元 6‧‧‧算術/邏輯單元 7‧‧‧指令解碼器 8‧‧‧加載/儲存單元 10‧‧‧記憶體系統 12‧‧‧通用(整數)暫存器 14‧‧‧浮點暫存器 20‧‧‧記憶體保護單元(MPU) 22‧‧‧記憶體保護表 24‧‧‧MPU記憶體存取電路系統 26‧‧‧表格查找電路系統 28‧‧‧現用表格識別碼暫存器 30‧‧‧基礎位址 32‧‧‧MPU快取儲存器 34‧‧‧快取表項 36‧‧‧靜態MPU暫存儲存器 40‧‧‧權限檢查電路系統 42‧‧‧安全性屬性單元(SAU) 44‧‧‧記憶體安全性配置暫存器 46‧‧‧安全性檢查電路系統 50‧‧‧記憶體保護表項 52‧‧‧資料字 54‧‧‧基礎位址(起始位址) 56‧‧‧結束位址(LIMIT) 58‧‧‧存取權限(AP) 60‧‧‧啟用旗標 62‧‧‧大小參數 64‧‧‧位址空間 70‧‧‧有效位元 72‧‧‧表格識別碼 74‧‧‧表項識別碼 80‧‧‧控制暫存器 82‧‧‧暫存器 84‧‧‧暫存器 86‧‧‧暫存器 88‧‧‧暫存器停用及未知(RDU)欄位 90‧‧‧區域程式化暫存器 92‧‧‧區域識別碼 94‧‧‧RDU欄位 96‧‧‧暫存器 98‧‧‧清除現用表格大小欄位(CLRATSIZE) 100‧‧‧區域 102‧‧‧區域 120‧‧‧步驟 122‧‧‧步驟 124‧‧‧步驟 126‧‧‧步驟 128‧‧‧步驟 130‧‧‧步驟 132‧‧‧步驟 134‧‧‧步驟 136‧‧‧步驟 138‧‧‧步驟 150‧‧‧步驟 152‧‧‧步驟 154‧‧‧步驟 156‧‧‧步驟 158‧‧‧步驟 160‧‧‧步驟 162‧‧‧步驟 164‧‧‧步驟 166‧‧‧步驟 168‧‧‧步驟 170‧‧‧步驟 172‧‧‧步驟 174‧‧‧步驟 176‧‧‧步驟 178‧‧‧步驟 200‧‧‧二元搜尋步驟 202‧‧‧步驟 204‧‧‧步驟 206‧‧‧步驟 208‧‧‧步驟 250‧‧‧步驟 252‧‧‧步驟 254‧‧‧步驟 260‧‧‧步驟 262‧‧‧步驟 264‧‧‧步驟 266‧‧‧步驟 268‧‧‧步驟 270‧‧‧步驟 282‧‧‧步驟 284‧‧‧步驟 286‧‧‧步驟 288‧‧‧步驟 290‧‧‧步驟 292‧‧‧步驟 294‧‧‧步驟 296‧‧‧步驟 298‧‧‧步驟 300‧‧‧目標代碼 310‧‧‧模擬器程式 320‧‧‧主機作業系統 330‧‧‧主機電腦 332‧‧‧主機處理電路系統 334‧‧‧記憶體管理單元(MMU) 336‧‧‧記憶體系統 340‧‧‧處理程式邏輯 350‧‧‧MPU程式邏輯 352‧‧‧權限檢查程式邏輯 354‧‧‧MPU記憶體存取程式邏輯 356‧‧‧表格查找程式邏輯 357‧‧‧靜態MPU表項儲存結構 358‧‧‧現用ID資料結構 360‧‧‧SAU程式邏輯 362‧‧‧記憶體安全性配置資料結構 364‧‧‧安全性檢查程式邏輯 370‧‧‧所模擬的位址空間 100-2‧‧‧區域 102-1‧‧‧區域 200-0‧‧‧第一二元搜尋步驟 200-1‧‧‧二元搜尋步驟 200-10‧‧‧第二二元步驟 200-12‧‧‧步驟 200-2‧‧‧二元搜尋步驟 200-8‧‧‧第一二元搜尋步驟
將藉由以下的示例說明理解本技術的另外的態樣、特徵、及優點,要與附圖結合閱讀該示例說明,在該等繪圖中:
圖1示意性地繪示具有MPU的資料處理裝置的示例;
圖2示出儲存在記憶體系統中的記憶體保護表的示例;
圖3示出MPU快取儲存器的示例,該MPU快取儲存器用於從記憶體保護表快取記憶體保護表項;
圖4示出MPU的暫存儲存器的示例;
圖5示出基於記憶體的MPU表項或靜態MPU表項可以如何涵蓋位址空間的不同位址區域;
圖6是示出使用MPU來控制對記憶體系統的存取的方法的流程圖;
圖7是示出基於二元搜尋程序查找控制表的方法的流程圖;
圖8示出包括高達16個表項(entry)的表格的二元搜尋程序的具體示例;
圖9示出二元搜尋程序的處理過的示例;
圖10示出惰態保存的示例;
圖11A到12B示出繪示控制惰態保存的示例的流程圖;及
圖13示出可以使用的模擬器示例。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
2:資料處理系統
4:處理電路系統
5:指令提取單元
6:算術/邏輯單元
7:指令解碼器
8:加載/儲存單元
10:記憶體系統
12:通用(整數)暫存器
14:浮點暫存器
20:記憶體保護單元(MPU)
22:記憶體保護表
24:MPU記憶體存取電路系統
26:表格查找電路系統
28:現用表格識別碼暫存器
30:基礎位址
32:MPU快取儲存器
36:靜態MPU暫存儲存器
40:權限檢查電路系統
42:安全性屬性單元(SAU)
44:記憶體安全性配置暫存器
46:安全性檢查電路系統

Claims (25)

  1. 一種用於控制對記憶體的存取的裝置,包括:處理電路系統,用來發出記憶體存取請求,該等記憶體存取請求指定一目標位址,該目標位址識別一記憶體系統中要存取的一位置;及一記憶體保護單元(MPU),包括:權限檢查電路系統,用來檢查由該處理電路系統所發出的一記憶體存取請求是否滿足儲存在該記憶體系統中的一記憶體保護表中所指定的存取權限,該記憶體保護表包括複數個記憶體保護表項,每個記憶體保護表項指定:一位址空間內可變大小的一對應位址區域的存取權限,及多個用於識別該對應位址區域的一起始位址及一結束位址的區域識別參數,每個記憶體保護表項指定多個單獨的用於識別該起始位址及該結束位址的區域識別參數,其中為具有一對應的記憶體保護表項的每個位址區域單獨指定該多個區域識別參數,其中該MPU被配置為容許該可變大小是2的次方以外的一位元組數;及MPU記憶體存取電路系統,用來起動至少一個MPU記憶體存取請求以供從該記憶體系統存取該記憶體保護表; 其中該MPU記憶體存取電路系統被配置為使用由一給定的記憶體保護表項所指定的用於識別該對應位址區域的該起始位址及該結束位址的該多個單獨的區域識別參數,來決定指定一給定的目標位址的一記憶體存取請求是否命中該給定的記憶體保護表項。
  2. 如請求項1所述的裝置,其中該記憶體保護表中的該複數個記憶體保護表項依照該複數個記憶體保護表項的該對應位址區域的該起始位址的順序佈置在該位址空間中。
  3. 如請求項1或請求項2所述的裝置,其中對於每個記憶體保護表項而言,該MPU被配置為容許該對應位址區域的該起始位址及該結束位址不與一N位元組位址邊界對準,其中N位元組是該對應位址區域的大小。
  4. 如請求項1所述的裝置,其中該MPU包括靜態MPU暫存儲存器以儲存至少一個靜態記憶體保護表項,一旦該至少一個靜態記憶體保護表項被由該處理電路系統所處理的至少一個MPU參數配置操作配置就保持儲存在該靜態MPU暫存儲存器中,直到一另外的MPU參數配置操作被該處理電路系統處理以觸發該至少一個靜態記憶體保護表項的一重新配置為止。
  5. 如請求項4所述的裝置,其中響應於由該處理電路系統所發出的該記憶體存取請求,該MPU記憶體存取電路系統被配置為在該目標位址是在儲存在該靜態MPU暫存儲存器中的該至少一個靜態記憶體保護表項中的一者的該對應位址區域內且由該處理電路系統所發出的該記憶體存取請求滿足由該至少一個靜態記憶體保護表項中的該靜態記憶體保護表項所指定的該等存取權限時,抑制該至少一個MPU記憶體存取請求被發出到該記憶體系統。
  6. 如請求項5所述的裝置,其中該MPU記憶體存取電路系統也被配置為在由該處理電路系統所發出的該記憶體存取請求無法滿足由該至少一個靜態記憶體保護表項中的該靜態記憶體保護表項所指定的該等存取權限時,抑制該至少一個MPU記憶體存取請求被發出到該記憶體系統。
  7. 如請求項5所述的裝置,其中在由該處理電路系統所發出的該記憶體存取請求無法滿足由該至少一個靜態記憶體保護表項中的該靜態記憶體保護表項所指定的該等存取權限時,該MPU被配置為容許由該至少一個靜態記憶體保護表項中的該靜態記憶體保護表項所指定的該等存取權限被由儲存在該記憶體系統中的該記憶體保護表內的一匹配記憶體保護表項所指定 的存取權限超控,該匹配記憶體保護表項包括一表項,該對應位址區域包括針對該表項的該目標位址。
  8. 如請求項4所述的裝置,其中每個靜態記憶體保護表項與一未使用指示相關聯,該未使用指示指示該靜態記憶體保護表項是否是一未使用的靜態記憶體保護表項。
  9. 如請求項8所述的裝置,其中在一給定的靜態記憶體保護表項被指示為一未使用的靜態記憶體保護表項時,該MPU被配置為從該記憶體保護表將一記憶體保護表項快取在該靜態MPU暫存儲存器的與該給定靜態記憶體保護表項對應的一部分中。
  10. 如請求項1所述的裝置,其中該MPU包括MPU快取儲存器以快取該記憶體保護表的至少一個記憶體保護表項。
  11. 如請求項10所述的裝置,其中響應於由該處理電路系統所發出的該記憶體存取請求,該MPU記憶體存取電路系統被配置為取決於該目標位址是否在針對儲存在該MPU快取儲存器中的任何記憶體保護表項所指定的該對應位址區域內,決定是否起動該至少一個MPU記憶體存取請求。
  12. 如請求項10所述的裝置,其中該MPU快取儲存器被配置為針對每個快取的記憶體保護表項,指 定與該記憶體保護表中的一位置相關聯的一表項識別碼,該快取的記憶體保護表項是從該位置獲得的,該處理電路系統響應於一表項識別碼查詢指令而擷取該表項識別碼。
  13. 如請求項10所述的裝置,其中該MPU快取儲存器被配置為針對每個快取的記憶體保護表項,指定與該記憶體保護表相關聯的一表格識別碼,該快取的記憶體保護表項是從該記憶體保護表獲得的;該裝置包括一現用表格識別碼暫存器以儲存識別一現用記憶體保護表的一現用表格識別碼;及該MPU被配置為抑制使用儲存在該MPU快取儲存器中的一快取的記憶體保護表項,對於該快取的記憶體保護表項而言,該表格識別碼與儲存在該現用表格識別碼暫存器中的該現用表格識別碼不同。
  14. 如請求項10所述的裝置,包括一現用表格識別碼暫存器以儲存識別一現用記憶體保護表的一現用表格識別碼;其中該MPU被配置為響應於該現用表格識別碼暫存器被修改,無效化該MPU快取儲存器中的所有表項。
  15. 如請求項10所述的裝置,其中響應於一記憶體保護快取無效化操作,該處理電路系統被配置為 觸發該MPU以無效化儲存在該MPU快取儲存器中滿足一無效化條件的一或更多個快取的記憶體保護表項。
  16. 如請求項10所述的裝置,其中儲存在該記憶體系統中的該記憶體保護表中的每個記憶體保護表項指定該記憶體保護表項是否是提供有效存取權限的一啟用表項或提供無效存取權限的一停用表項;及該MPU快取儲存器被禁止快取儲存在該記憶體系統中的該記憶體保護表的一停用表項。
  17. 如請求項1所述的裝置,包括:一基礎位址暫存器,用來儲存要由該MPU記憶體存取電路系統響應於由該處理電路系統所發出的記憶體存取請求所存取的一現用記憶體保護表的一基礎位址;及一大小暫存器,用來儲存該現用記憶體保護表的一大小的一指示。
  18. 如請求項17所述的裝置,其中響應於指定要更新該現用記憶體保護表的該基礎位址及該大小中的一者的一預定類型的MPU配置操作,該處理電路系統被配置為更新該基礎位址及該大小中的該者,且也將該基礎位址及該大小中的另一者更新為指示不存在現用記憶體保護表的一無效值。
  19. 如請求項1所述的裝置,其中該權限檢查電路系統被配置為基於獨立於該記憶體保護表而指定的一預設存取權限組,來決定該至少一個MPU記憶體存取請求是否被容許。
  20. 如請求項1所述的裝置,其中該權限檢查電路系統被配置為基於該至少一個MPU記憶體存取請求的該位址是否是在由複數個記憶體安全性配置暫存器所指定的複數個位址範圍中的至少一者內,來決定該至少一個MPU記憶體存取請求是否被容許。
  21. 一種用於控制對記憶體的存取的裝置,包括:處理電路系統,用來發出記憶體存取請求,該等記憶體存取請求指定一目標位址,該目標位址識別一記憶體系統中要存取的一位置;及一記憶體保護單元(MPU),包括:權限檢查電路系統,用來檢查由該處理電路系統所發出的一記憶體存取請求是否滿足儲存在該記憶體系統中的一記憶體保護表中所指定的存取權限,該記憶體保護表包括複數個記憶體保護表項,每個記憶體保護表項指定:一位址空間內可變大小的一對應位址區域的存取權限,及多個用於識別該對應位址區域的一起始位址及一結束位址的區域識別參數,其中該 MPU被配置為容許該可變大小是2的次方以外的一位元組數;及MPU記憶體存取電路系統,用來起動至少一個MPU記憶體存取請求以供從該記憶體系統存取該記憶體保護表;其中響應於一例外情況,該處理電路系統被配置為執行將架構狀態的一第一部分保存到該記憶體系統的狀態保存,及記錄一第二部分狀態保存位址區域的一指示,在該第二部分狀態保存位址區域處,響應於由在該例外情況之後執行的一後續軟體進程進行的對架構狀態的一第二部分的一存取,要藉由該處理電路系統將架構狀態的該第二部分保存到該記憶體系統;及響應於該例外情況,該MPU被配置為記錄用於允許該MPU的MPU檢查資訊,以供允許該MPU在執行該後續軟體進程的期間決定用於將架構狀態的該第二部分保存到該記憶體系統的一記憶體存取是否會滿足由在該例外情況發生時現用的該記憶體保護表的一記憶體保護表項所指定的存取權限。
  22. 如請求項21所述的裝置,其中該MPU檢查資訊包括在該例外情況發生時現用的該記憶體保護表的一基礎位址及一大小。
  23. 如請求項21所述的裝置,其中該MPU檢查資訊包括該第二部分狀態保存位址區域的該起始位址及該結束位址是否與在該例外情況發生時現用的該記憶體保護表的相同記憶體保護表項對應的一指示。
  24. 一種用於控制對記憶體的存取的方法,包括以下步驟:發出一記憶體存取請求,該記憶體存取請求指定一目標位址,該目標位址識別一記憶體系統中要存取的一位置;及檢查該記憶體存取請求是否滿足包括複數個記憶體保護表項的一記憶體保護表中所指定的存取權限,每個記憶體保護表項指定:一位址空間內可變大小的一對應位址區域的存取權限,及識別用於識別該對應位址區域的一起始位址及一結束位址的參數的區域,每個記憶體保護表項指定多個單獨的用於識別該起始位址及該結束位址的區域識別參數,其中為具有一對應的記憶體保護表項的每個位址區域單獨指定該多個區域識別參數,其中該可變大小被容許是2的次方以外的位元組數;其中:該記憶體保護表被儲存在該記憶體系統中,其中該方法包括以下步驟:使用由一給定的記憶體保護表項所指定的用於識別該對應位址區域的該起始 位址及該結束位址的該多個單獨的區域識別參數,來決定指定一給定的目標位址的一記憶體存取請求是否命中該給定的記憶體保護表項。
  25. 一種用於控制一主機資料處理裝置以提供一指令執行環境以供執行指令的電腦程式;該電腦程式包括:處理程式邏輯,用來發出記憶體存取請求,該等記憶體存取請求指定一目標位址,該目標位址識別由該指令執行環境所模擬的一模擬位址空間內要存取的一位置;及記憶體保護單元(MPU)程式邏輯,包括:權限檢查程式邏輯,用來檢查由該處理程式邏輯所發出的一記憶體存取請求是否滿足包括複數個記憶體保護表項的一記憶體保護表中所指定的存取權限,每個記憶體保護表項指定:該模擬位址空間內可變大小的一對應位址區域的存取權限,及用於識別該對應位址區域的一起始位址及一結束位址的多個區域識別參數,每個記憶體保護表項指定多個單獨的用於識別該起始位址及該結束位址的區域識別參數,其中為具有一對應的記憶體保護表項的每個位址區域單獨指定該多個區域識別參數,其中該 MPU程式邏輯被配置為容許該可變大小是2的次方以外的一位元組數;及MPU記憶體存取程式邏輯,用來起動至少一個MPU記憶體存取請求以供存取該記憶體保護表,該至少一個MPU記憶體存取請求指定來自該模擬位址空間的一位址;其中該MPU記憶體存取程式邏輯被配置為使用由一給定的記憶體保護表項所指定的用於識別該對應位址區域的該起始位址及該結束位址的該多個單獨的區域識別參數,來決定指定一給定的目標位址的一記憶體存取請求是否命中該給定的記憶體保護表項。
TW108122508A 2018-07-27 2019-06-27 使用儲存在記憶體系統中的記憶體保護表的記憶體保護單元以控制對記憶體的存取的裝置、方法和電腦程式 TWI797347B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1812313.3 2018-07-27
GB1812313.3A GB2575877B (en) 2018-07-27 2018-07-27 Memory protection unit using memory protection table stored in memory system

Publications (2)

Publication Number Publication Date
TW202008169A TW202008169A (zh) 2020-02-16
TWI797347B true TWI797347B (zh) 2023-04-01

Family

ID=63518173

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108122508A TWI797347B (zh) 2018-07-27 2019-06-27 使用儲存在記憶體系統中的記憶體保護表的記憶體保護單元以控制對記憶體的存取的裝置、方法和電腦程式

Country Status (9)

Country Link
US (1) US11474956B2 (zh)
EP (1) EP3830700A1 (zh)
JP (1) JP7359837B2 (zh)
KR (1) KR20210034027A (zh)
CN (1) CN112424758A (zh)
GB (1) GB2575877B (zh)
IL (1) IL280088B2 (zh)
TW (1) TWI797347B (zh)
WO (1) WO2020021223A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11855914B2 (en) * 2019-11-27 2023-12-26 Cisco Technology, Inc. Performing distributed dynamic frequency selection using a shared cache
GB2594062B (en) * 2020-04-14 2022-07-27 Advanced Risc Mach Ltd Data integrity check for granule protection data
CN112182559A (zh) * 2020-10-09 2021-01-05 Oppo广东移动通信有限公司 堆栈溢出检测方法、装置、电子设备和存储介质
CN112463263A (zh) * 2020-12-03 2021-03-09 北京元心科技有限公司 程序运行方法、装置、电子设备及计算机可读存储介质
TWI836239B (zh) * 2021-07-19 2024-03-21 美商光禾科技股份有限公司 用於二分搜尋的方法和系統
US20240143510A1 (en) * 2022-11-01 2024-05-02 Arm Limited Apparatus and method for cache invalidation
US20240193083A1 (en) * 2022-12-09 2024-06-13 Advanced Micro Devices, Inc. Range-based cache flushing
CN118227526A (zh) * 2022-12-19 2024-06-21 华为技术有限公司 存储控制器及其控制方法、存储系统及微控制单元
CN115858425B (zh) * 2023-01-17 2023-05-02 北京智芯微电子科技有限公司 应用mpu保护场景下的内存分配方法及系统
US20240256150A1 (en) * 2023-01-29 2024-08-01 Winbond Electronics Corporation Memory Segmentation with Substitution
US12073104B1 (en) * 2023-04-13 2024-08-27 Arm Limited Dynamic adjustment of memory for storing protection metadata

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200707191A (en) * 2005-03-31 2007-02-16 Ibm Data processing system, cache system and method for issuing a request on an interconnect fabric without reference to a lower level cache based upon a tagged cache state
US7287140B1 (en) * 2003-07-28 2007-10-23 Massachusetts Institute Of Technology System and technique for fine-grained computer memory protection
US20180129620A1 (en) * 2015-04-07 2018-05-10 Benjamin Aaron Gittins Programmable memory transfer request processing units
US20180165218A1 (en) * 2016-12-09 2018-06-14 Arm Limited Memory management

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003233534A (ja) * 2002-02-07 2003-08-22 Hitachi Ltd メモリシステム
US8001357B2 (en) * 2008-04-30 2011-08-16 Microsoft Corporation Providing a single drive letter user experience and regional based access control with respect to a storage device
GB2471138B (en) * 2009-06-19 2014-08-13 Advanced Risc Mach Ltd Handling integer and floating point registers during a context switch
CA2775306A1 (en) * 2009-09-25 2011-04-28 Kamlesh Gandhi Virtual-memory system with variable-sized pages
WO2014122415A1 (en) * 2013-02-05 2014-08-14 Arm Limited Virtualisation supporting guest operating systems using memory protection units
WO2014122414A1 (en) * 2013-02-05 2014-08-14 Arm Limited Handling memory access operations in a data processing apparatus
US20160048353A1 (en) * 2014-08-13 2016-02-18 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
JP6504984B2 (ja) * 2015-09-28 2019-04-24 ルネサスエレクトロニクス株式会社 データ処理装置
JP6838223B2 (ja) * 2016-11-02 2021-03-03 日立Astemo株式会社 車両制御装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7287140B1 (en) * 2003-07-28 2007-10-23 Massachusetts Institute Of Technology System and technique for fine-grained computer memory protection
TW200707191A (en) * 2005-03-31 2007-02-16 Ibm Data processing system, cache system and method for issuing a request on an interconnect fabric without reference to a lower level cache based upon a tagged cache state
US20180129620A1 (en) * 2015-04-07 2018-05-10 Benjamin Aaron Gittins Programmable memory transfer request processing units
US20180165218A1 (en) * 2016-12-09 2018-06-14 Arm Limited Memory management

Also Published As

Publication number Publication date
CN112424758A (zh) 2021-02-26
GB201812313D0 (en) 2018-09-12
JP7359837B2 (ja) 2023-10-11
JP2021532468A (ja) 2021-11-25
WO2020021223A1 (en) 2020-01-30
IL280088A (en) 2021-03-01
TW202008169A (zh) 2020-02-16
GB2575877B (en) 2021-06-09
IL280088B2 (en) 2024-03-01
US20210311884A1 (en) 2021-10-07
GB2575877A (en) 2020-01-29
US11474956B2 (en) 2022-10-18
IL280088B1 (en) 2023-11-01
KR20210034027A (ko) 2021-03-29
EP3830700A1 (en) 2021-06-09

Similar Documents

Publication Publication Date Title
TWI797347B (zh) 使用儲存在記憶體系統中的記憶體保護表的記憶體保護單元以控制對記憶體的存取的裝置、方法和電腦程式
US10235301B2 (en) Dynamic page table edit control
TWI835856B (zh) 用於範圍檢查指令的裝置、方法、電腦程式和電腦可讀儲存媒體
JP7397057B2 (ja) メモリ・システム内に記憶されている制御テーブルのための二分探索手順
CN108292272B (zh) 用于管理有界指针的装置和方法
KR20220045211A (ko) 캐패빌리티 기입 어드레스 추적
JP2020521225A (ja) 機能ドメインを管理するための装置及び方法
KR20230101826A (ko) 캐퍼빌리티들을 사용하여 메모리에 대한 액세스를 제약하기 위한 기술
TW202318210A (zh) 用於處理密封能力之技術
US11573911B2 (en) Memory access control
CN117222990A (zh) 用于使用能力约束对存储器的访问的技术
CN112106029B (zh) 用于触发动作的装置和方法
TW202340955A (zh) 使用能力約束記憶體存取之技術