TWI835856B - 用於範圍檢查指令的裝置、方法、電腦程式和電腦可讀儲存媒體 - Google Patents

用於範圍檢查指令的裝置、方法、電腦程式和電腦可讀儲存媒體 Download PDF

Info

Publication number
TWI835856B
TWI835856B TW108132919A TW108132919A TWI835856B TW I835856 B TWI835856 B TW I835856B TW 108132919 A TW108132919 A TW 108132919A TW 108132919 A TW108132919 A TW 108132919A TW I835856 B TWI835856 B TW I835856B
Authority
TW
Taiwan
Prior art keywords
address
memory
instruction
entry
attribute
Prior art date
Application number
TW108132919A
Other languages
English (en)
Other versions
TW202030615A (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
Priority claimed from GB1816957.3A external-priority patent/GB2578135B/en
Application filed by 英商Arm股份有限公司 filed Critical 英商Arm股份有限公司
Publication of TW202030615A publication Critical patent/TW202030615A/zh
Application granted granted Critical
Publication of TWI835856B publication Critical patent/TWI835856B/zh

Links

Abstract

一種裝置2,包括:指令解碼器7,用以解碼指令;處理電路系統4,用以回應於由指令解碼器解碼之指令來執行資料處理;以及記憶體屬性檢查電路系統16,用以檢查由處理電路系統發出之記憶體存取請求是否滿足在複數個記憶體屬性條目中指定的存取許可,每一記憶體屬性條目指定針對位址空間內之可變大小之對應位址區域的存取許可。回應於範圍檢查指令,該範圍檢查指令指定用於識別第一位址及第二位址之位址識別參數,指令解碼器7控制處理電路系統,以便在至少一個軟體可存取之儲存位置12、13中設定狀態值,該狀態值指示第一位址及第二位址是否對應於同一記憶體屬性條目。

Description

用於範圍檢查指令的裝置、方法、電腦程式和電腦可讀儲存 媒體
本發明技術係關於資料處理之領域。
資料處理裝置可具有記憶體屬性檢查電路系統,用於檢查記憶體存取請求是否滿足在諸多記憶體屬性條目中之一者中所指定的存取許可。舉例而言,存取許可指定位址空間之對應區域的性質,諸如,該等區域是限於唯讀存取還是可讀取以及寫入;或指定處理電路系統之哪些操作模式能夠存取該區域。此可用於在存取記憶體系統內之某些資料時強制執行安全約束。
至少一些實例提供一種裝置,該裝置包括:指令解碼器,用以解碼指令;處理電路系統,用以回應於由指令解碼器解碼之指令執行資料處理;以及記憶體屬性檢查電路系統,用以檢查由處理電路系統發出之記憶體存取請求是否滿足在複數個記憶體屬性條目中所指定的存取許可,每一記憶體屬性條目指定針對位址空間內之可變大小之對應位址區域的存取許可;其中:回應於範圍檢查指令,該範圍檢查指令指定用於識別第一位址及第二位址之位址識別參數,指令解碼器經配置以控制處理電路系統,以便在可由指令解碼器所支援之至少一種類型之指令存取的至少一個軟體可存取之儲存位置中設定狀態值,該狀態值指示第一位址及第二位址是否對應於同一記憶體屬性條目。
至少一些實例提供一種資料處理方法,包括:使用指令解碼器來解碼範圍檢查指令,該範圍檢查指令指定用於識別第一位址及第二位址之位址識別參數;以及回應於解碼範圍檢查指令,控制處理電路系統,以在可由指令解碼器所支援之至少一種類型之指令存取的至少一個軟體可存取之儲存位置中設定狀態值,該狀態值指示第一位址及第二位址是否對應於複數個記憶體屬性條目中之同一記憶體屬性條目,每一記憶體屬性條目指定針對位置空間內的可變大小之對應位址區域的存取許可。
至少一些實例提供一種電腦程式,用於控制主機資料處理裝置以提供用於執行目標程式碼之指令的指令執行環境;該電腦程式包括:指令解碼程式邏輯,用以解碼目標程式碼之指令,並控制主機資料處理裝置以回應於已解碼指令來執行資料處理;以及記憶體屬性檢查程式邏輯,用以檢查由目標程式碼之已解碼指令所觸發的記憶體存取請求是否滿足在複數個記憶體屬性條目中所指定的存取許可,每一記憶體屬性條目指定針對模擬位址空間內之可變大小之對應位址區域的存取許可,該模擬位址空間是由指令執行環境模擬;其中:回應於範圍檢查指令,該範圍檢查指令指定用於識別第一位址及第二位址之位址識別參數,指令解碼程式邏輯經配置以控制主機資料處理裝置,以便在可由指令解碼程式邏輯之解碼所支援之至少一種類型指令存取的至少一個軟體可存取之儲存位置中設定狀態值,該狀態值指示第一位址及第二位址是否對應於同一記憶體屬性條目。
至少一些實例提供一種儲存上述電腦程式之電腦可讀儲存媒體。儲存媒體可為非暫時性儲存媒體。
一種裝置具有用以解碼指令之指令解碼器,及用以回應於指令解碼器所解碼之指令執行資料處理的處理電路系統。提供記憶體屬性檢查電路系統以檢查處理電路系統所發出之記憶體存取請求是否滿足在兩個或更多個記憶體屬性條目中所指定的存取許可。每一記憶體屬性條目可指定針對位址空間內的可變大小之對應位址區域的存取許可。因而,因為每一記憶體屬性條目可對應於可變大小之位址區域,所以並未預定哪些位址映射至特定的記憶體屬性條目。對可變大小之條目的支援可有用於允許在單個記憶體屬性條目中覆蓋相對較大之位址區域,因此減小了所需記憶體屬性條目之數目。
裝置之指令解碼器支援範圍檢查指令之解碼,該範圍檢查指令指定用於識別第一位址及第二位址之位址識別參數。作為回應,指令解碼器控制處理電路系統以在可由指令解碼器所支援的至少一種類型之指令存取的至少一個軟體可存取之儲存位置中設定狀態值,該狀態值指示第一位址或第二位址是否對應於同一記憶體屬性條目。因而,此指令允許軟體深入了解到第一及第二位址均對應於同一記憶體屬性條目還是對應於不同記憶體屬性條目。此操作可被視為較不常見的,因為通常當檢查記憶體屬性資料以尋找指定給定目標位址之記憶體存取時,基於記憶體屬性檢查對軟體可見的唯一資訊是對於成功執行了記憶體存取還是由於未指定存取許可而觸發了故障的指示。對於給定位址對應於哪一特定記憶體屬性條目通常不感興趣。
然而,認識到,關於第一及第二位址是否對應於同一記憶體屬性條目的資訊可對某些安全檢查操作有用,例如,允許軟體進程檢查由第一及第二位址界定之陣列中的每一字是否可由特定軟體進程存取。藉由提供範圍檢查指令,該範圍檢查指令可使軟體可存取對於第一及第二位址是否均對應於同一記憶體屬性條目的指示,此可簡化此安全檢查。若位址確實對應於同一記憶體屬性條目,則當彼記憶體屬性條目指示位址空間之對應區域可由相關軟體存取時,此可暗示在第一及第二位址之間的所有位址均可存取,而不需個別地檢查每一位址,此可極大地改善執行許可檢查之速度。此可能對於檢查第一及第二位址是否對應於同一記憶體屬性條目有用的另一原因可能是對於執行某些即時關鍵任務之系統而言,其中以決定性延時執行任務非常重要,因為若可事先知曉由第一及第二位址界定之某一位址範圍皆對應於同一記憶體屬性條目,則可預期將不會由於進入了尚未被定義記憶體屬性條目之不同位址區域中而在處理該位址範圍中觸發故障。
檢查兩個位址是否對應於同一記憶體屬性條目的替代方式為在指令集合架構中提供指定單一位址之指令,對於該單一位址而言該指令之執行導致指示匹配彼位址之特定記憶體屬性條目之條目編號被返回至軟體可存取之儲存位置。然而,如上所述之指定第一及第二位址的範圍檢查指令具有諸多優勢。舉例而言,因為指令可簡單地返回指示第一及第二位址是否對應於同一記憶體屬性條目之狀態值,而不是返回識別匹配給定位址之特定條目的區域編號,所以此意謂藉由支援大量不同記憶體屬性條目之系統,儲存指令結果所需的儲存容量得以更佳地放大,因為(例如)狀態值可與單個位元一樣小而與所提供之記憶體屬性條目的數目無關,而不需要具有視條目之總數目而增大之大小的多位元值。
又,指定第一及第二位址之範圍檢查指令可提供關於第一及第二位址是否對應於單個指令中之同一記憶體屬性條目的資訊,而不需要兩個單獨指令來查詢與第一位址以及第二位址相關聯的條目編號。提供範圍檢查指令亦避免了需要比較指令來比較由兩個單獨區域編號查詢指令所返回的條目編號。用以查找該組記憶體屬性條目以檢查哪一條目對應於給定位址的查找進程可能耗費一定量的時間。儘管用以檢查位址是否對應於同一記憶體屬性條目的此些安全檢查操作可能佔程式總體執行時間的相對較小比例,但其仍處於一些延時敏感任務之關鍵路徑上,因此在使得藉由更少指令執行相關檢查方面工作量的減少對於某些即時關鍵應用而言可尤其有益。在一些應用中,可能必須在軟體內之大量功能中執行許可檢查。提供單個範圍檢查指令對於減小受約束環境中之程式碼大小可為重要的。
所述的範圍檢查指令對如下系統可尤其有用:在該等系統中記憶體屬性檢查電路系統准許給定記憶體屬性條目之對應位址區域的可變大小是非2的冪的位元組數目。舉例而言,此可與階層式頁表形成對比,在階層式頁表中,每一頁表條目可對應於2的固定冪之位元組數目的頁面,對於該頁面而言,在經過頁表行走操作中之一系列多級查找的一些情況下,位址之不同部分可索引至所需的特定頁表條目中。在此階層式頁表中,相對不太可能的是資料陣列可完全屬於一個頁表條目。相反,使用其中單個條目可對應於非2的冪之位元組數目的記憶體屬性檢查方法,此可允許在單個條目中定義任意大小之位址區域,例如,使用指定位址區域之起始位址及結束位址的資訊(例如,使用明確識別之邊界位址或使用基址及大小)來定義。因而,使用支援除了2的冪之位元組數目以外之大小之可變區域大小的方法,更有可能的是,系統使用者將傾向於定義其位址區域,以使得某些資料陣列完全屬於單個區域,且因而上述範圍檢查指令對於准許非2次冪位元組大小之區域的此系統可尤其有用。
類似地,處理電路系統可准許由範圍檢查指令識別的第一位址與第二位址之間的差為除了2的冪以外之位元組數目。
可藉由範圍檢查指令以諸多不同方式來識別第一及第二位址。在一個實例中,位址識別參數可指定第一位址之基址,並指定用於識別第一位址與第二位址之間的差的偏移量。可在由範圍檢查指令識別之暫存器中指定基址及偏移量。或者,可在暫存器中指定基址,而可將偏移量指定為立即值。
在另一實例中,可將偏移量指定為倍數及大小值,當其相乘時給出偏移量。倍數及大小值中之一者可為由範圍檢查指令所指定之可變參數,其中可變參數(例如)由立即值識別,或由儲存於由範圍檢查指令所指定之暫存器中的值識別。另一方面,倍數及大小值中之另一者可被指定為固定值、由範圍檢查指令指定之立即值或儲存在由範圍檢查指令指定之暫存器中之值中的任一者。
大體而言,經由基址指定第一位址並使用將偏移量加至基址來指定第二位址可能有用,因為此意謂關於哪一位址為低位址及高位址並無歧義,此可使得執行查詢以決定第一及第二位址是否可映射至同一記憶體屬性條目上更易於實施。將偏移量指定為倍數與大小值之乘積可能有用,因為在一些情況下軟體執行指令可能發現根據某一給定大小之元素的數目而不是根據位址空間中之總偏移量來指定陣列之大小更為便利。因而,指令之倍數及/或大小指定的變體可用於使程式碼之程式化或編譯更為簡單。此亦可改善所得可執行程式碼之效能及大小。
或者,識別位址識別參數之另一方式可為指定從中讀取第一位址之第一暫存器以及從中讀取第二位址之第二位址。因而,在此情況下,藉由在執行範圍檢查指令之前將第一及第二位址寫入至第一及第二暫存器,可明確地指定該第一及第二位址。
類似地,不同架構可提供不同選項,對於該等選項而言儲存位置為回應於範圍檢查指令來寫入狀態值的軟體可存取儲存位置。在一些情況下,該軟體可存取儲存位置可為儲存於記憶體中之儲存位置。然而,對於實施而言可能有用的是提供軟體可存取儲存器為暫存器,因為此可使得狀態值之後續讀取更快,此可加速上述類型之安全檢查操作。
因而,在一個實例中,至少一個軟體可存取儲存位置可包括由範圍檢查指令指定之目的地暫存器。舉例而言,可將目的地暫存器指定為處理電路系統之諸多通用暫存器中的任一者。可接著將選定之目的地暫存器用作後續指令之源暫存器,該後續指令用於以第一及第二位址是否對應於同一記憶體屬性條目為條件來執行動作。
或者,或除了將狀態值寫入至目的地暫存器以外,另一方法為藉由更新控制暫存器中之至少一個條件狀態指示來設定狀態值。舉例而言,控制暫存器可儲存至少一個條件狀態指示,其指示先前條件狀態指示符產生指令之結果的性質。舉例而言,一些指令可觸發條件狀態旗標之設定,該等條件狀態旗標可指示性質,諸如,處理結果是否為零,處理結果為負數,或是否發生了有正負號或無正負號之溢出。指令解碼器可支援至少一個有條件指令,該至少一個有條件指令以儲存在控制暫存器中之至少一個條件狀態指示是否滿足測試條件為條件來觸發處理電路系統執行有條件操作。因而,一些指令可直接存取條件狀態指示,以便以先前指令之結果為條件來觸發執行一些動作。因而,藉由使用條件狀態指示來提供狀態值(該狀態值指示取決於第一及第二位址是否映射至同一記憶體屬性條目之資訊),此可允許後續指令直接在單個指令中執行有條件操作,而不是在具有取決於自比較指令所得之條件的後續有條件指令之前需要干預指令來比較置於通用暫存器中之值。此可允許更快地執行安全檢查操作。
在範圍檢查指令之一些實例中,指令可僅更新目的地暫存器而不更新任何條件狀態指示,或反之亦然,其中僅設定條件狀態指示而不設定通用目的地暫存器中之值。其他變體可更新兩種類型之暫存器,以使得後續有條件指令可直接測試控制暫存器中之條件程式碼,以決定先前範圍檢查指令是否發現第一及第二位址映射至同一記憶體屬性條目,但其他資訊亦可自範圍檢查指令之目的地暫存器導出。
回應於範圍檢查指令,至少當第一及第二位址均映射至同一記憶體屬性條目時,對於處理電路系統而言可能有用的是,將自對應於第一及第二位址之匹配記憶體屬性條目導出的屬性資訊儲存於至少一個軟體可存取之儲存位置。舉例而言,屬性資訊可指示在處理電路系統之給定操作模式下是否將允許存取對應於匹配記憶體屬性條目之位址區域。除了第一及第二位址是否映射至同一記憶體屬性條目之指示以外(或與其組合),此屬性資訊可允許使用單個指令來執行某些形式的安全檢查。
在一個實例中,可將屬性資訊記錄為與指示第一及第二位址是否映射至同一記憶體屬性條目之狀態值分開的額外欄位。
在其他實例中,屬性資訊之指示可與指示第一及第二位址是否映射至同一記憶體屬性條目之狀態值組合。舉例而言,當滿足以下兩個條件時可將單個狀態指示符設定為第一值:(i)第一及第二位址均映射至同一記憶體屬性條目;及(ii)匹配記憶體屬性條目指定將准許對由彼條目限定之對應位址區域的記憶體存取,且若不滿足此些條件中之任一者,則可將狀態指示符設定為第二值。因而,在此實施例中,同一狀態指示符可充當狀態值以及屬性資訊。
在一個實例中,處理電路系統可具有其可在其中操作之諸多不同操作狀態,例如,不同模式、域或特權級別。回應於範圍檢查指令之至少一個變體,處理電路系統可基於存取許可導出將寫入至軟體可存取之儲存位置的屬性資訊,當處於與處理電路系統之當前操作狀態不同的操作狀態時,該存取許可將被強加於對匹配記憶體屬性條目之對應位址區域的記憶體存取。因而,不檢查在當前操作狀態下是否准許存取,而是指令替代地給出若系統處於不同操作狀態則是否已准許存取之指示。範圍檢查指令之准許交叉操作狀態檢查的此些變體可尤其有用於在以下情況下防止基於混亂代理人問題之安全攻擊:具有不受信任軟體之攻擊者可能會試圖藉由向受信任軟體傳遞指向(例如)越界之陣列的指標來欺騙可信軟體執行不當操作。範圍檢查指令之交叉操作狀態變體可因此由受信任程式碼用以檢查不受信任程式碼傳遞給它之值是否有效,例如,藉由檢查基於彼值計算之位址是否映射至同一記憶體屬性條目,以及針對攻擊者之操作狀態導出的屬性資訊是否將指示將准許存取。
在一個特定實例中,處理電路系統可具有諸多操作域,包括安全域及較不安全域,且在每一安全域內,處理電路系統可以諸多模式中之一者及諸多特權級別中之一者操作。一些模式可與特定特權級別中之操作相關聯。取決於可儲存在特定控制暫存器中之當前特權級別指示符,其他模式可支援兩種或更多種不同特權級別上之操作。為了允許諸多不同類型之安全檢查操作,對於指令解碼器而言可能有用的是支援範圍檢查指令之以下變體中的至少一者:第一變體,該第一變體之屬性資訊指定當處理電路系統處於當前安全域時是否准許對第一位址與第二位址之間的範圍中之位址的記憶體存取,以及與當前模式相關聯之特權級別;第二變體,該第二變體之屬性資訊指定當處理電路系統處於與當前域不同之安全域時是否准許對第一位址與第二位址之間的範圍中之位址的記憶體存取,以及當在不同安全域中操作時與當前模式相關聯之特權級別;第三變體,該第三變體之屬性資訊指定在當前安全域中是否准許對第一位址與第二位址之間的範圍中之位址的記憶體存取,以及不同於與當前模式相關聯之特權級別的特權級別;以及第四變體,該第四變體之屬性資訊指定當處理電路系統處於與當前域不同之安全域中時是否准許對第一位址與第二位址之間的範圍中之位址的記憶體存取,以及不同於與當前模式相關聯之特權級別的特權級別。為了為程式設計師或編譯者提供選擇的靈活性,在一些實施例中,指令解碼器可支援第一至第四變體中之至少兩者。
因而,第一變體允許基於與當前域及模式相關聯之屬性的安全檢查。
第二及第四變體准許交叉域檢查以檢查是否將允許與當前域不同之安全域存取第一及第二位址之間的位址範圍。舉例而言,一些系統可支援分別為安全的及較不安全域維護記憶體屬性條目之不同集合,且因此對於範圍檢查指令之第二及第四變體而言,經執行以導出屬性資訊之檢查可基於與用於當前域之記憶體屬性條目集合不同的記憶體屬性條目集合。當指令解碼器支援範圍檢查指令之第二變體及第四變體中的至少一者時,對於不同安全域而言可能有用的是包括較不安全域。為了防止較不安全域探測安全許可,若當在較不安全域中操作時存在執行指令之第二及第四變體中之一者的嘗試,則處理電路系統可觸發故障之傳訊。因而,此些變體可允許更安全的域檢查是否針對較不安全域已准許對第一位址與第二位址之間的位址之存取,此可有用於避免混亂代理人攻擊。
類似地,對於第三及第四變體而言,屬性資訊可基於是否在與處理電路系統之當前特權級別不同的特權級別中准許對第一及第二位址之間的範圍中之位址的記憶體存取。再次,若該不同特權級別為比當前特權級別特權少之特權級別,則此類型之變體可尤其有用。在此情況下,若當處理電路系統處於至少一個預定特權級別中時(對其而言,存在至少一個比該至少一個預定特權級別特權多的特權級別)存在執行範圍檢查指令之第三及第四變體中之一者的嘗試,則可觸發故障。指令之此些變體可有用於允許特權較高之程式碼檢查是否可信任由特權較低之程式碼傳遞至其之值。
應了解,沒必要使處理系統之給定實施支援所有四種變體。
在一些實例中,記憶體屬性檢查電路系統可針對給定記憶體存取請求檢查該記憶體存取請求是否滿足在第一記憶體屬性條目集合中指定之存取許可以及在第二記憶體屬性條目集合中指定之存取許可。舉例而言,可存在與不同功能相關聯的諸多不同類型之記憶體屬性條目,例如,提供記憶體保護資訊(諸如,定義唯讀或可讀取及可寫入區域,或指定哪些特權級別可存取對應位址區域)之第一條目集合,及可指定哪一安全域與給定位址區域相關聯的第二記憶體屬性條目集合。
因而,在一些實例中,回應於範圍檢查指令,指令解碼器可控制處理電路系統以在至少一個軟體可存取之儲存位置處設定如下兩者:第一狀態值,該第一狀態值指示第一位址及第二位址是否對應於第一記憶體屬性條目集合之同一條目;及第二狀態值,該第二狀態值指示第一及第二位址是否對應於第二記憶體屬性條目集合之同一條目。因而,在單個指令中,可查找兩個記憶體屬性條目集合,且可返回位址之整個範圍是否映射至兩個記憶體屬性條目集合中之同一條目的指示。
如上所述,記憶體屬性條目集合中之一者可為記憶體保護條目之集合。上述範圍檢查指令在如下實施中可尤其有用:其中記憶體存取請求以給定記憶體系統為目標,且在記憶體保護表中提供用以控制對記憶體系統之存取的記憶體保護條目,該記憶體保護表本身被儲存在記憶體系統中。此方法相對不常見,但允許支援具有相對較大數目之記憶體保護條目的記憶體保護表,而不會極大地增加儲存及管理此較大數目條目的硬體成本。在其中記憶體保護表儲存在記憶體系統中以使得可增大所支援之記憶體保護條目之數目的系統中,上述類型之範圍檢查指令可尤其有用,因為提供返回哪一特定條目編號與給定位址相關聯之指令的替代方案可能難以隨著記憶體保護表之大小增加而擴展,尤其是在其中指令旨在返回關於如上所述的諸多不同記憶體屬性條目集合中之位址映射之資訊的實施中如此。又,在其中將記憶體保護條目儲存在記憶體系統中之系統中,可能有用的是提供記憶體保護快取儲存器電路系統,以快取自記憶體系統獲得之記憶體保護表的至少一個記憶體保護條目。若使用了返回映射至給定位址的記憶體保護條目之條目編號的替代指令,則此指令將暗示快取儲存器需要快取與每一快取條目相關聯之條目編號,使得用於查詢與給定位址相關聯之條目編號的指令可迅速地存取與快取之記憶體保護條目相關聯的條目編號,而不需要搜尋記憶體系統內之記憶體保護表。相反,藉由上述範圍檢查指令,條目編號之此快取並非必要的,因為可在不需要快取條目編號自身的情況下決定第一或第二位址是否映射至同一條目上。此可尤其有用,因為記憶體保護快取儲存器電路系統中之條目可實施為基於暫存器之儲存,且因此藉由消除對於快取條目編號之需要,此可在每一快取之條目中節省大量位元,可提供明顯的電路面積減小。
在使用基於記憶體之記憶體保護表的系統中,除了儲存於記憶體中之記憶體保護表以外,亦有可能在硬體中提供一些配置暫存器以便儲存至少記憶體保護條目之子集合。不充當快取記憶體(而替代地分配成提供定義位址空間之常用區域之某些性質的固定記憶體保護條目)的一些靜態配置之暫存器可有用於改善效能。因而,在一些情況下,範圍檢查指令亦可查詢儲存於此些配置暫存器中之一些記憶體保護條目。
或者,一種系統中可支援範圍檢查指令,該系統不在記憶體系統自身中儲存任何記憶體保護條目,而是使用配置暫存器實施整個記憶體保護條目集合。
記憶體屬性條目集合之另一實例可為安全屬性條目,該等安全屬性條目指定存取許可,該等存取許可指示諸多安全域中之哪些與對應位址區域相關聯。除了上述記憶體保護條目以外,還可實施此些。舉例而言,檢查與給定位址區域相關聯之安全域可有用於檢查當自給定位址區域執行程式碼時處理電路系統應在哪一安全域中操作。又,當自給定安全域發出記憶體存取請求時,可檢查安全屬性條目。舉例而言,與較不安全域相關聯之記憶體位址區域可在安全域中存取,而與安全域相關聯之區域可在安全域中存取,但當處於較不安全域中時可能為不可存取的。
回應於範圍檢查指令之至少一個變體,至少當第一及第二位址均對應於同一安全屬性條目時,藉由對應於第一及第二位址之匹配安全屬性條目,可自指定為與對應位址區域相關聯的安全域導出在至少一個軟體可存取之儲存位置中提供的屬性資訊。
如上所述,在一些系統中,記憶體屬性檢查電路系統可支援上述記憶體保護條目以及安全屬性條目。在此情況下,對於範圍檢查指令之至少一個變體而言可能有用的是,自對應於第一及第二位址之匹配記憶體屬性條目與對應於第一及第二位址之匹配安全屬性條目的組合導出資訊。舉例而言,回應於範圍檢查指令之此變體,指令解碼器可將至少一個組合許可指示符儲存至至少一個軟體可存取之儲存位置,該至少一個組合許可指示符在單個指示符中指定匹配記憶體保護條目中之存取許可以及匹配安全屬性條目中之存取許可是否均指定允許給定類型之記憶體存取。舉例而言,可將此組合許可指示儲存至如上所述之控制暫存器中的條件狀態指示,以使得後續有條件指令可直接測試該組合指示符,以決定是否可進行後續操作。
吾人可能預期可相對緩慢地執行在單個指令中檢查第一位址及第二位址是否均映射至同一記憶體屬性條目,尤其是在記憶體位址區域可具有如上所述的任意非2的冪之大小時如此。然而,實務上,發明者認識到,實際上可以與查找操作類似的延時執行用以返回識別第一及第二位址是否映射至同一記憶體屬性條目之狀態資訊的範圍檢查操作,該查找操作經執行以識別對應於單個位址之記憶體屬性條目。實務上,記憶體屬性檢查電路系統可具有至少一組比較器,其中每一組比較器包括下限比較器,該下限比較器用於比較記憶體存取請求之目標位址與給定記憶體屬性條目之下限位址;及上限比較器,該上限比較器用以比較記憶體存取請求之目標位址與給定記憶體屬性條目之上限位址。對於常規記憶體存取請求而言,若下限比較器及上限比較器均提供正結果,則可將給定記憶體屬性條目識別為匹配記憶體存取請求之目標位址。舉例而言,下限比較器可決定目標位址是大於還是等於下限位址,且上限比較器可決定目標位址是小於還是等於上限位址。
吾人可能預期對於範圍檢查指令而言,在兩個單獨查找中,必須將第一位址以及第二位址作為目標位址順序地供應給每一組比較器。然而,發明者認識到,回應於範圍檢查指令,指令解碼器可控制處理電路系統以將第一位址作為目標位址供應給每一組比較器中之下限比較器,且並行地將第二位址供應給每一組比較器中之上限比較器。因而,雖然對於常規記憶體存取而言通常預期每一集合中之兩個比較器分別將同一位址與下限及上限位址進行比較,但對於範圍檢查指令而言,此些比較器可經調適而接收不同輸入,以使得可並行地執行基於第一及第二位址之比較。若比較器之集合中的任一者返回同一組比較器中之下限比較器及上限比較器均識別出比較之正結果,則可產生命中信號以指示第一及第二位址映射至同一條目。因而,除了用於將第一及第二位址供應給下限及上限比較器而不是將目標位址供應給兩個比較器的邏輯以外,用於查找記憶體屬性條目之剩餘邏輯可與通常已提供用於處置針對常規記憶體存取操作之查找的邏輯相同,且因而實務上可以相對較小的額外面積負擔來支援範圍檢查指令。此意謂上述類型之範圍檢查指令可具有勝於其中兩個單獨指令單獨地檢查哪一記憶體屬性條目映射至單個位址之替代方案的明顯效能改善。
下限及上限比較器分別比較第一及第二位址之查找方法可能需要關於第一及第二位址中之哪一者為低位址的先驗知識,使得低位址可被供應給下限比較器且高位址可被供應給上限比較器。
不同架構實施可使用不同方法來確保第一位址總是低於第二位址。在一些實例中,範圍檢查指令之編碼自身可約束第一位址低於第二位址。舉例而言,上述指令之變體(對其而言,指定第二位址作為加至第一位址之偏移量)可根據定義確保第二位址高於第一位址。在此情況下,不需要提供第一位址與第二位址之完全比較以檢查哪一者較低。大體而言,可假設第二位址高於第一位址,除非將偏移量加至第一位址導致溢出或回歸。舉例而言,若第一位址在允許位址範圍內相對較高,則加偏移量可導致第二位址回歸位址範圍中相對低的位址。對於導致此回歸之相加,有可能傳訊故障,抑或簡單地返回具有指示第一及第二位址不對應於同一記憶體屬性條目之值的狀態值。
或者,其他方法可允許對第一及第二位址之無約束指定,例如,在上述變體中在相應暫存器中指定兩個位址以使得存在機會令第二位址有低於第一位址。在此情況下,一種方法可為提供邏輯,該邏輯用於比較第一及第二位址,並接著決定哪一者較低,且將第一及第二位址中之較低者供應給每一集合中之下限比較器並將另一位址供應給上限比較器(亦可視情況為具有第一及第二位址之受約束指定的變體提供此邏輯,儘管沒必要)。然而,實務上,此邏輯在電路面積方面可能並不合理,且實情為,若以低於第一位址之第二位址來定義指令,則一些架構可能簡單地定義指令之結果可能不可預測。
因而,為了在第二位址低於第一位址時藉由阻止指令之任何執行來確保安全,若試圖執行第二位址低於第一位址之範圍檢查指令,則某些實施可觸發故障的傳訊。或者(或除了傳訊故障以外),若試圖在第二位址低於第一位址的情況下執行範圍檢查指令,則處理電路系統可返回指示第一位址及第二位址不對應於同一記憶體屬性條目的狀態值(而無論是否由用於查找記憶體屬性條目之任何比較邏輯產生了任何命中信號)。
可提供對應的電腦程式用於控制主機資料處理裝置以提供用於執行指令之指令執行環境。電腦程式可包括在功能上對應於上述指令解碼器及記憶體屬性檢查電路系統的指令解碼程式邏輯及記憶體屬性檢查程式邏輯。因而,可以與在硬體上執行的程式中之範圍檢查指令類似的方式來處置在由電腦程式模擬之指令執行環境內執行的程式中之範圍檢查指令,該硬體實際上包括上述指令解碼器及記憶體屬性檢查電路系統。模擬器電腦程式可向在模擬器電腦程式上執行之軟體呈現與可由實際硬體裝置所提供之指令環境類似的指令環境,即使在執行模擬器電腦程式之主機電腦中可能沒有提供此些特征之任何實際硬體。可藉由提供程式邏輯(諸如,指令或資料結構之集合)來仿真上述硬體架構之功能,此使得通用主機電腦能夠以與在實際上具有此硬體之裝置上實現之結果兼容的方式,執行意欲在具有上述記憶體屬性檢查支援之裝置上執行的程式碼。可將用於控制主機資料處理裝置之模擬器電腦程式儲存在儲存媒體上。此儲存媒體可為非暫時性的儲存媒體。
圖1示意性地圖示資料處理系統2,該資料處理系統2具有用於回應於指令執行資料處理之處理電路系統4。舉例而言,處理電路系統4可為CPU、DSP、GPU或資料處理系統之其他處理元件。處理電路系統4可包括指令提取單元5,該指令提取單元5用於自記憶體系統10提取指令以由處理電路系統進行處理;以及指令解碼器7,該指令解碼器7用於解碼已提取指令以產生控制信號,該等控制信號用於控制執行單元6、8以回應於經解碼指令來執行資料處理操作。舉例而言,執行單元可包括算術/邏輯單元(arithmetic/logic unit; ALU)6,該算術/邏輯單元(ALU)6用於對自暫存器12、14提取之運算元執行算術或邏輯運算,以產生可回寫至暫存器之結果值。執行單元亦可包括載入/儲存單元8,該載入/儲存單元8用於執行載入/儲存操作以便在暫存器12、14與記憶體系統10之間傳送資料。暫存器可包括諸多不同類型之暫存器,包括用於儲存整數值以供處理電路系統4處理的通用(整數)暫存器12,及用於儲存使用浮點表示法表示之值的浮點暫存器14。處理電路系統4可存取之暫存器亦可包括為了簡潔而未在圖1中示出的其他類型之暫存器,諸如,用於儲存包括多個獨立資料元素之向量運算元的向量暫存器,及/或用於儲存用於控制處理電路系統4之操作之各種控制參數的控制暫存器13,諸如,可由有條件指令檢查以決定是否執行有條件操作的條件旗標、儲存表示當前執行點之位址的程式計數器,以及用於控制(例如)異常處置的控制暫存器。
記憶體系統10可包括一或多個層級的快取記憶體以及主記憶體。記憶體系統10可由處理電路系統4藉由執行載入指令或儲存指令而存取,該載入指令觸發載入/儲存單元8以發出用於將資料自記憶體系統10載入至暫存器12、14中的記憶體存取請求,該儲存指令用於觸發載入/儲存單元8以發出用於將來自暫存器12、14之資料儲存至記憶體系統10中的記憶體存取請求。又,指令提取單元5發出記憶體存取請求以自記憶體系統10提取指令。每一記憶體存取請求可指定待存取之位置的目標位址。在此實例中,目標位址為直接指定待存取之位置的實體位址,因而不需要位址轉譯。
提供記憶體保護單元(memory protection unit; MPU)20以基於目標位址來檢查是否准許記憶體存取請求受記憶體系統10服務。MPU 20可儲存或存取諸多記憶體保護條目,該等記憶體保護條目定義針對位址空間之對應位址區域的存取許可。舉例而言,存取許可可指定位址空間之給定區域是唯讀區域還是可讀取以及寫入,及/或可定義允許處理電路系統4之哪些特權級別存取對應位址區域。如圖1中所示,在一些實例中,MPU 20可包括兩個單獨的MPU:分別對應於安全域及較不安全域之安全MPU 21及較不安全MPU 23。當處理電路系統4在安全域中操作時,則可存取安全MPU 21,而當在較不安全域中操作時,可存取較不安全MPU 23。
除了MPU 20以外,記憶體屬性檢查電路系統16亦可包括安全屬性單元(security attribute unit; SAU)42,該安全屬性單元(SAU)42包括儲存安全保護條目之記憶體安全配置暫存器,該等安全保護條目定義位址空間中之安全的及較不安全的區域。由SAU 42對照安全保護條目之區域定義資料檢查記憶體存取請求之目標位址,且僅當在安全操作域中操作時,處理電路系統4可被限制為存取位址空間之安全區域(位址空間之較不安全區域可在安全域中抑或在較不安全域中為可存取的)。由SAU 42之安全保護條目定義的存取許可可應用與MPU 20在記憶體保護條目中定義之許可正交的許可。亦即,由MPU 20准許之存取仍可能被SAU 42拒絕,或反之亦然。由指令提取單元5發起之記憶體存取請求以及由載入/儲存單元8發起之記憶體存取請求均可經歷MPU 20及SAU 42的檢查。雖然在圖1中將MPU 20及SAU 42示為按順序地操作,但一些實施可為由處理安全發出之記憶體存取提供對MPU 20及SAU 42的並行查找,以改進效能。
MPU 20檢查由處理電路系統發出之記憶體存取請求是否滿足在諸多記憶體保護條目中指定的存取許可。每一記憶體保護條目可對應於位址空間內之可變大小的特定位址區域。給定記憶體保護條目之對應位址區域可由開始位址及結束位址界定,該開始位址及結束位址是經由給定記憶體保護條目之參數識別。與記憶體管理單元(memory management unit; MMU)所使用之頁表不同,對於MPU而言,對應於記憶體保護條目之區域可具有可變大小,該可變大小可被准許為除了2的冪以外之位元組數目。藉由此方法,可保證可使用單個記憶體保護條目定義任意(非2的冪)大小的記憶體位址區域,以避免每當位址存取跨越頁面位址邊界時發生頁面行走及頁面故障的風險。此使得MPU更適合於經設計用於處理即時應用之系統。又,MPU可將記憶體保護條目儲存在本端提供於MPU內之暫存器內,此些暫存器可快速存取,再次輔助即時處理,並避免需要在記憶體系統內儲存具有階層式結構之大頁表,此對於具有受限RAM之系統而言可為重要的。
在一個實例中,可使用暫存器來指定針對MPU 20之記憶體保護條目,當比較待存取之目標位址與儲存於該等暫存器中之每一記憶體保護條目的區域識別參數時,可將該等暫存器直接連接至並行的一組比較器。此方法可適合於其中僅需要定義受限數目(例如,8個或16個)的記憶體保護條目的系統。在具有單獨的安全MPU 21及較不安全MPU 23之系統中,可提供暫存器之單獨集合,用於分別定義安全記憶體保護條目及較不安全記憶體保護條目,其中在查找MPU 20時選定針對當前操作域之相關條目集合。
然而,對於其中將所有記憶體保護條目儲存在暫存器中的MPU,若MPU支援之記憶體保護條目的數目增加,則與MPU相關聯之功率及面積可能劇烈放大。對於需要大量記憶體保護條目(例如,因為基於暫存器之MPU中的受限數目的記憶體保護條目可能對效能或可提供之保護造成嚴重影響)的系統而言,可能有用的是擴展條目之數目,藉由在記憶體系統10內提供記憶體保護表來支援此擴展。因而,藉由在存取是由MPU 20管轄之同一記憶體系統中提供記憶體保護表,此提供了靈活性,用以提供比對於基於暫存器儲存區域之典型MPU而言實用之數目更大數目的記憶體保護條目,該暫存器儲存區域定義並行地與目標位址比較之每一條目的資料。可能違反直覺的是,將記憶體保護表移動至記憶體系統中(其存取通常比暫存器慢)將提供改善的軟體效能。然而,儘管存取來自記憶體系統之個別記憶體保護條目可能較慢,但藉由避免了以下所述軟體變通方案而可改善總體效能,該等軟體變通方案用於處理其中硬體中之MPU所支援之條目的數目不足以處理軟體之要求的情況,否則會由於存取位址空間之未定義區域而遭遇頻繁異常而導致巨大的效能成本。藉由記憶體中所提供之記憶體保護表,硬體成本隨著條目數目急劇下降。
又,藉由准許每一區域具有對應於除了2的冪以外之位元組數目的任意大小,此意謂每一區域可覆蓋大量記憶體,且沒必要將旨在具有相同存取許可之區域劃分為多個單獨條目,否則當位址跨越區域邊界時將存在導致記憶體保護故障的風險。此使得MPU在服務即時應用方面比MMU更佳,即時應用要求以快速及/或可定回應時間處置關鍵操作。
使用記憶體儲存記憶體保護條目之此方法可對諸多目的有用。舉例而言,一個軟體可能需要藉由不同存取許可定義更大數目的相異的位址區域,該等存取許可在MPU之暫存器中所支援之保護條目數方面不同於硬體中所支援的存取許可。若記憶體中未提供記憶體保護表,則在任何給定時間,彼軟體存取需要之位址空間的之少一些部分當前將不具有為其定義的對應記憶體保護條目。此將意謂存取位址空間之當前未定義區域中的位址將觸發異常,該異常接著需要軟體介入並重新配置MPU之暫存器,以便藉由需要現在存取之區域所需的參數來覆寫先前為不同區域定義之參數。若後一指令接著存取已被覆寫之先前定義區域,則此可接著導致MPU配置再次切換回來。MPU暫存器之內容的此不斷切換(每次均需要異常來觸發切換)可能極大地損害效能。
另一實例可為其中處理器需要執行多個軟體,此些軟體互不信任,但需要在其間共享資料。為了能夠共享資料,給定軟體可能希望劃分位址空間之部分,以使得其他進程僅可存取位址空間之受限部分,但提供對存取位址空間之此精細程度的控制,此可能需要定義其他位址區域,且可能沒有由硬體中之MPU所支援的足夠備用記憶體保護條目來允許此種細微控制。因而,實務上,同一資料可能最終被複製至位址空間之多個部分,一個複本在由第一軟體存取之部分中,且另一複本在由第二軟體存取之部分中,此導致浪費時間來執行複製及低效使用可用的記憶體容量,此可能是具有受約束記憶體資源之系統中的特定問題。
可藉由在記憶體中提供記憶體保護表從而支援更大數目的單獨記憶體保護條目來避免此些問題,進而可改善效能。
因而,圖2示出處理系統2之第二實例,其中在記憶體系統10中提供記憶體保護表22以供MPU 20存取。藉由此實例,可由MPU 20以兩種方式來定義用於控制是否允許處理電路系統4存取給定位址區域的存取許可。記憶體保護表22可儲存在記憶體系統內,包括諸多條目,每一條目定義針對對於位址區域之存取許可。MPU 20具有MPU記憶體存取電路系統24,用於發起對記憶體系統10之記憶體存取請求,以便自MPU表22獲得資訊。MPU記憶體存取電路系統24具有表查找電路系統26,用於執行所需比較,以識別MPU表22是否包括針對包括目標位址之位址區域的條目,該目標位址是由自處理電路系統4接收之記憶體存取請求指定。記憶體系統10可儲存一個以上的MPU表,每一表22與相應軟體進程相關聯。將活動表標識符儲存在活動表標識符暫存器(或暫存器組)28中,該活動表識別符識別將使用MPU記憶體存取電路系統24存取哪一特定MPU表。舉例而言,活動表識別符暫存器28可指定當前活動之MPU表的基址30,且亦可視情況指定活動表之大小。在MPU內提供MPU快取儲存器32,用於自記憶體系統10快取(若干)MPU表之選定條目,以使得若再次需要同一條目,則可較快被存取該條目。舉例而言,MPU快取儲存器可包括暫存器之集合,用於本端地儲存MPU表之條目,與對記憶體系統10中之MPU表22的後備儲存相比較,此具有減小的存取延時。
提供用於控制對記憶體系統10之存取之存取許可的另一方式可為在靜態MPU暫存器儲存器36中靜態地定義已配置之記憶體保護條目。處理電路系統4可支援用於配置靜態MPU暫存器儲存器36之內容的指令,諸如,專門用於存取靜態MPU暫存器儲存器之專用型指令,或可使用由載入/儲存單元8執行之更一般儲存操作,該載入/儲存單元8將已映射至為靜態MPU暫存器儲存器36提供之記憶體映射暫存器的位址指定為目標位址。大體而言,在沒有導致損失靜態暫存器儲存器36中所儲存之資訊之重設或斷電事件的情況下,一旦已執行MPU參數重新配置操作(例如,此些記憶體映射載入/儲存操作中之一者或專用型重新配置指令)以填充靜態MPU暫存器儲存器36之內容,以便定義對應於給定位址區域之給定記憶體保護條目,則給定記憶體保護條目保留在靜態MPU儲存器36中,直至另一MPU參數重新配置操作改變了彼條目之內容為止。此與MPU快取儲存器32不同,對於MPU快取儲存器32而言,即使沒有MPU參數重新配置操作來改變為給定位址區域設定的實際參數,MPU快取儲存器32之內容仍可根據快取替換策略隨時間變化。舉例而言,MPU快取儲存器32可與快取控制器相關聯,該快取控制器使用最近最少使用的或類似的替換策略來驅逐預測在將來最不有用之條目,此時需要為記憶體系統10中之記憶體保護表22的最近存取條目留出空間。
雖然圖2將靜態MPU暫存器儲存器36示為與MPU快取儲存器32分離開,但在其他實例中,此些可為共同儲存結構之相應部分。舉例而言,可以旗標來標記共同儲存結構之一些條目,以指示它們應被視為不應經由快取替換策略驅逐之靜態條目。然而,實務上,提供單獨的儲存結構32、36可允許更高效地索引至快取儲存器32中。
MPU包括許可檢查電路系統40,該許可檢查電路系統40用於讀取存取許可資料,該存取許可資料是在記憶體系統10中所儲存(或在MPU快取儲存器32中所快取)的記憶體保護表22之查找條目中抑或在靜態MPU暫存器儲存器36中所指定的靜態配置之MPU條目中指定;以及決定處理電路系統4發出之記憶體存取請求的性質是否符合由基於記憶體存取請求之目標位址所選定之條目的存取許可指定的要求。舉例而言,存取許可可指定區域是唯讀區域(對其而言,應拒絕由處理電路系統4執行之儲存指令所觸發的任何寫入請求)還是允許讀取以及寫入。存取許可亦可指定是否允許提取單元5自對應位址區域提取指令。存取許可亦可將對對應位址區域之存取限制在處理電路系統4之某些異常級別或特權級別,且許可檢查電路40可檢查與記憶體存取請求相關聯之當前異常級別或特權級別是否符合在存取許可中所定義之限制。
雖然圖2之實例未示出如圖1中的安全MPU 21與較不安全MPU 23之分離,但將了解,在此實例中仍可提供此種分離的MPU,其中安全MPU及較不安全MPU中之每一者如圖2中所示之實例20中那樣配置。舉例而言,安全MPU及較不安全MPU可為記憶體中之對應MPU表22指定不同基址,且可具有針對靜態MPU暫存器儲存器36及/或MPU快取儲存器32之單獨暫存器。
圖2之實例亦具有如圖1中之SAU 42,其包括記憶體安全配置暫存器44,該記憶體安全配置暫存器44定義安全屬性條目,該等安全屬性條目定義位址空間之安全/較不安全區域;以及安全檢查電路系統46,該安全檢查電路系統46用於對照安全屬性條目來檢查目標位址以便決定是否可准許記憶體存取。雖然在此實例中,安全屬性條目純碎基於暫存器,但其他實例可在記憶體10中提供類似於MPU表22之安全屬性表,其中SAU包括與MPU 20之電路24、36、32、28等效之電路,但用於查找安全屬性條目而不是記憶體保護條目。
因而,如圖3中所示,MPU(視當前操作域而為安全的或較不安全的)及SAU 42均可定義針對位址空間之不同區域的存取許可之正交集合。對於SAU 42而言,可將區域定義為與安全域或較不安全域相關聯。在MPU 20中,可如圖3中所示來定義區域A、B、C,其中每一區域具有一些已定義性質(諸如,唯讀或可讀取/可寫入狀態、對可存取位址區域之特權級別的限制),或諸如為對應區域定義之區域類型的其他資訊,諸如,該區域是否為設備型區域,對於設備型區域而言可限制記憶體系統對記憶體存取的重新排序。沒必要使MPU 20或SAU 42為位址空間之每一部分定義記憶體保護條目。舉例而言,圖3中可能存在標記為50的一些區域,對於該等區域而言,尚未定義MPU條目。若存在處理電路系統4對此些區域中之一者中之位址的存取,則記憶體存取可被拒絕,且可觸發故障。在圖3之實例中,MPU 20及SAU 42均基於實體位址空間中之位址來定義記憶體存取區域,該實體位址空間係基於直接識別記憶體系統10中之對應位置的實體位址來存取。然而,MPU 20或SAU 42亦有可能應用受限形式之位址轉譯,諸如,將恆定偏移量加至處理電路系統4所提供之位址,以便獲得待提供至記憶體10之對應實體位址。
大體而言,可預期MPU條目由軟體定義為非重疊的。一些實施可提供硬體邏輯,用於在配置給定記憶體屬性條目時檢查該條目是否與任何其他條目重疊,並當重疊時拒絕更新給定記憶體屬性條目。然而,此邏輯在硬體及效能方面可能是昂貴的(特別是對於具有在記憶體中定義之MPU表22的圖2之實例),因為其可能需要與在每一其他MPU條目中定義之位址範圍進行比較。因此,其他實施可能認為提供此邏輯之成本過於昂貴,且因此另一方法可為,僅預期軟體將記憶體屬性條目定義為已定義之非重疊記憶體區域,且若軟體不符合此要求,則該架構可指定無法保證安全。
類似地,亦可預期SAU為非重疊的,此可藉由硬體檢查強制執行,抑或不藉由硬體強制執行,其中預期軟體符合此要求,且若軟體不符合此要求,則將無法保證安全。
對於圖2之實施例而言,可預期給定MPU表之條目定義非重疊區域,但可准許靜態MPU暫存器儲存器36中之靜態MPU條目定義與MPU表22中之基於記憶體的MPU條目所定義之位址區域重疊的區域。若位址在靜態MPU暫存器儲存器36中及在基於記憶體之MPU條目中均命中,則一些實施可使用在來自靜態MPU暫存器儲存器36之靜態MPU條目中定義的許可,此可否決在匹配的基於記憶體之MPU條目中定義之任何衝突的許可。或者,另一方法可為,若靜態MPU條目准許記憶體存取,則可准許該記憶體存取,而無論匹配的基於記憶體之MPU條目是否准許該記憶體存取,但若靜態MPU條目不准許該記憶體存取,則當匹配的基於記憶體之MPU條目准許該記憶體存取時仍可准許該記憶體存取。然而,可禁止與兩個靜態MPU條目相關聯之區域之間的重疊,且類似地可禁止與兩個基於記憶體之MPU條目相關聯之區域之間的重疊。
如圖4中所示,處理電路系統4可支援諸多操作狀態,可在該等操作狀態下執行指令。此些可包括域、模式及特權級別。處理電路系統4可支援至少兩個安全操作域,包括至少安全域S及較不安全域LS。大體而言,在處理儲存在由SAU 42定義的位址空間之安全區域中之一者中的程式碼時,系統在安全域中操作,且當執行來自由SAU 42定義之較不安全區域的程式碼時,系統在較不安全域中操作。在較不安全域中,位址空間之安全區域為不可存取的。
另外,處理電路系統4可具有諸多模式,包括用於後台處理之線程模式T以及用於異常處置之處置器模式H。可能有用的是,分離線程模式與處置器模式,以簡化對異常的處置,例如,對於哪些暫存器可由處理電路系統4存取的控制可取決於系統處於線程模式還是處置器模式。
另外,系統可具有諸多特權級別,包括至少特權較高之特權級別及特權較少之特權級別。為了簡單,將在以下將此些級別描述為有特權的及無特權的,但將了解,在其他實例中可存在三個或更多個不同特權級別,且因此術語無特權的可簡單地代表特權較少之級別中的一者,對其而言,存在具有更大特權之至少一個其他特權級別。在處置器模式下,可預設系統在特權狀態下操作。在線程模式下,當前特權級別可視控制暫存器13中之一者中所維護的當前特權指示符而為有特權的或無特權的。可分別為安全的及較不安全的域定義當前特權指示符之單獨分組版本,使得(例如)當處於安全域中時可將線程模式定義為有特權的,而當處於較不安全域中時將其定義為無特權的。
圖5A示出可用以查詢由MPU 20及SAU 42定義之記憶體屬性之範圍檢查指令(TT指令)的實例。TT指令指定目的地暫存器Rd,將回應於該TT指令將狀態值寫入至該目的地暫存器Rd。TT指令亦指定定義第一位址#add1及第二位址#add2之參數。可藉由TT指令以諸多方式定義第一及第二位址,例如,使用指示儲存定義位址(例如,明確地識別相應暫存器中之位址,或經由基址及偏移量指定位址)之值之通用暫存器12的暫存器說明符。亦可定義位址以使得第一位址#add1在暫存器中識別,而第二位址被識別為大小值與乘數的乘積,其中乘數及大小值中之一者或兩者為可變的。可變乘數及/或可變大小值可藉由立即值在暫存器中識別,或藉由控制暫存器13中之一者中的配置指示符識別。大體而言,可約束TT指令之編碼以使得第一位址#add1被約束成小於第二位址#add2,或者,若編碼准許第二位址#add2小於第一位址#add1,則當對於TT指令之給定例項偵測到第二位址#add2小於第一位址#add1時,處理電路系統4可觸發故障。
圖5B示出範圍檢查指令(TT指令)之另一實例,如上所述,此指令將狀態值寫入至由Rd指定之目的地暫存器。然而,在此實例中,自由Rn參數指定之通用暫存器12讀取第一位址。讀取由Rm參數指定之另一通用暫存器12,並將自Rm讀取之大小值(偏移量)加至第一位址,以產生第二位址。視情況,大小值可向左移位由立即值#imm指定的量,從而有效地允許自由Rm參數指定之暫存器讀取的大小值相乘(例如,移位1對應於乘以2,移位2對應於乘以4,等等)。因而,由Rm指定之暫存器中的值可為陣列之長度(元素之數目),且對於共同陣列元素大小而言(例如,32位元字之陣列的4個位元組),TT指令可在不需要任何額外指令的情況下計算第二位址(亦即,陣列之結束位址)。
回應於TT指令,記憶體屬性檢查電路系統16基於第一及第二位址來查找MPU 20及SAU 42,並將第一及第二位址是否映射至MPU 20之同一記憶體保護條目以及第一及第二位址是否映射至SAU 42之同一安全保護條目的指示記錄在目的地暫存器Rd中。另外,在第一位址及第二位址映射至同一條目的情況下,亦可用自MPU 20或SAU 42之匹配條目導出的資訊來寫入目的地暫存器Rd。
舉例而言,如圖6中所示,可用諸多條資訊來寫入目的地暫存器Rd,資訊包括以下各者: ˙MVALID,其指示第一位址及第二位址是否均對應於MPU 20之同一記憶體保護條目; ˙SVALID,其指示第一位址及第二位址是否均對應於SAU 42之同一安全保護條目; ˙讀取許可旗標R,其(至少當第一及第二位址對應於同一MPU條目時)指定是否將准許對於對應於彼匹配條目之位址區域的記憶體存取; ˙讀取/寫入許可旗標RW,其(至少當第一及第二位址對應於同一MPU條目時)指示匹配條目中之存取許可是否准許讀取及寫入存取; ˙安全域旗標S,其指示第一及第二位址是否對應於安全區域或較不安全區域(至少當第一及第二位址對應於同一SAU條目時); ˙組合指示符LSR,其在滿足所有以下條件時被設定為1:安全旗標S指示第一及第二位址對應於較不安全域,讀取旗標R指示准許讀取存取,且SVALID及MVALID指示符均等於1。若不滿足此些條件中之任一者,則LSR被設定為0。 ˙第二組合指示符LSRW,其在滿足所有以下條件時被設定為1:與第一及第二位址相關聯之安全域為較不安全域,讀取/寫入旗標RW為1,其指示准許讀取及寫入存取,且SVALID及MVALID指示均等於1。若不滿足此些條件中之任一者,則LSRW為0。
藉由測試資訊之單個位元(而不是需要測試兩個或更多個值之組合,否則會另外需要更多指令),在硬體中回應於TT指令設定組合指示符可有用於允許迅速地執行相對常見形式之安全檢查。在一些情況下,除了將此些組合指示符寫入至目的地暫存器Rd以外,回應於TT指令,處理電路系統4亦可基於圖6中所示的一或多條資訊(例如,基於組合指示符)更新控制暫存器13內之條件旗標,使得後續有條件指令可基於條件旗標是否符合某一測試條件而直接觸發有條件操作。對於至少一些形式之安全檢查而言,此可避免需要後續比較指令來比較暫存器Rd中之參數以決定應執行何種有條件操作,此可幫助改善程式碼密度。
將了解,圖6中所示之資訊僅為一個實例,且可提供當第一及第二位址映射至同一條目時自MPU或SAU之匹配條目導出的其他資訊組合。
舉例而言,在一些實施中,可完全省去SVALID及MVALID,且組合指示符欄位LSRW及LSR可充當狀態值,該狀態值指示第一及第二位址是否映射至同一屬性條目,以及指示在該等位址確實映射至同一條目的情況下自匹配條目之屬性導出的額外資訊。舉例而言,當LSRW或LSR=1時,可推斷出該等位址映射至SAU以及MPU中之同一屬性條目。在LSRW或LSR=0的情況下,在一些實施例中可能並不認為重要的是,區別此是因為位址映射至不同條目(且若如此,則位址映射至MPU及SAU中之哪些不同條目),還是因為匹配條目指定了禁止存取對應區域之屬性。
又,狀態值沒必要返回唯讀或讀取/寫入許可之單獨指示。在其他實施中,TT指令之指令編碼中的參數可指定是否將檢查讀取存取或寫入存取之許可,且單個許可指示符(替換RW/R)或組合指示符(替換LSRW及LSR)可接著指示在第一位址與第二位址之間的位址範圍中是否將准許指定類型之記憶體存取(讀取或寫入)。
當軟體檢查源自不受信任軟體(例如,在較不安全域中操作之不安全軟體,或在無特權級別處操作之無特權軟體)之指標的許可時,此指令可有用。此可(例如)有用於避免混亂代理人攻擊,其中較不安全的不受信任軟體可能試圖藉由傳遞指向陣列的不適當指標(該不適當指標將接著由更安全軟體存取)來欺騙更安全的或特權更高的軟體來執行對不適當之記憶體區域(其可能無法由較不安全的不受信任軟體存取)的存取。藉由使用TT指令(其中第一及第二位址對應於記憶體中之陣列的開始及結束位址),受信任軟體可檢查(倘若軟體尚未定義重疊的記憶體屬性區域)彼陣列中之每個字是否均可由不受信任軟體存取,該不受信任軟體將指向陣列之指標傳遞給受信任軟體。此類型指令可允許處理器迅速地檢查是否在陣列之邊界內的任何指標皆可由不受信任軟體存取。
圖5及圖6中所示之指令格式(其定義兩個位址並檢查兩個位址是否在MPU及/或SAU之同一位址區域中)可尤其對圖2中所示之實施(其中記憶體保護表22儲存在記憶體系統10中)有用。藉由在暫存器中指定MVALID或SVALID資訊,而不是(例如)返回與給定位址相關聯之區域編號,此可更佳地擴大至記憶體保護表22,該記憶體保護表22支援大量記憶體保護條目。又,返回指示第一及第二位址是否映射至同一條目之單個位元旗標(而不是與給定位址相關聯之區域編號)意謂MPU快取儲存器32不需要在每一快取條目內儲存對應記憶體保護條目(用於由TT指令查詢)之完整區域編號。因為MPU快取儲存器32中之條目通常可基於暫存器而非SRAM,所以避免需要在快取儲存器32內儲存每一MPU條目之區域編號可提供明顯的面積減小。
如圖7中所示,可提供TT指令之諸多變體,用於核查由處理電路系統4之操作狀態之不同組合定義的存取許可。在TT指令之第一變體中,可基於當前安全域之存取許可及處理電路系統4之當前模式來查找MPU及SAU。因而,回應於TT指令,可基於當前操作域來選擇安全MPU 21及較不安全MPU 23中之有關者,且可基於系統之當前模式以及在當前模式中所使用的當前特權級別來選擇是否在假設無特權存取或有特權存取的情況下查找相關MPU中之存取許可。舉例而言,若當前模式為處置器模式,則可根據定義假設存取為有特權的,而若當前模式為線程模式,則是否執行有特權的或無特權的查找可取決於儲存在控制暫存器13中之一者中的參數。在無特權查找中,若不允許區域被無特權程式碼存取,則R或RW旗標可為0。
對於TT指令之第二變體(TTA)而言,若當處於較不安全域中時試圖執行指令,則處理電路系統4可觸發故障,且若安全域中執行TTA指令,則不像第一變體指令那樣查找安全MPU 21,可替代地對較不安全的MPU 23進行MPU查找。此可有用於允許在安全域中操作之軟體檢查是否已允許某些記憶體存取(若其已由較不安全程式碼執行),此可有用於清理由較不安全程式碼提供之指標以便防止混亂代理人攻擊。對於第二變體而言,MPU查找可基於特權級別,當系統在較不安全域中操作時,該特權級別與當前操作模式相關聯。在一些情況下,在執行指令之TTA變體時,假設用於查找之特權級別可與當前特權級別不同。舉例而言,若在當前特權級別為有特權的時,在安全域及線程模式中執行TTA指令,但較不安全域之線程模式特權指示符的分組版本定義線程模式應在較不安全域中為無特權的,則TTA指令可基於與較不安全域中之線程模式相關聯的無特權狀態,而不是基於與安全域中之線程模式相關聯的當前特權狀態,觸發較不安全MPU 23的查找。
圖7亦示出指令之第三變體(TTT),其檢查與當前安全域相關聯之MPU 21、23,但基於無特權狀態強迫MPU之查找,而與處理電路系統4之當前特權級別無關。因而,即使處理電路系統4當前處於有特權狀態,仍可設定圖6中之參數R、RW等等,以指示在處理電路系統4當前已進入無特權狀態時是否已准許讀取或讀取/寫入操作。此可有用於允許特權較高之程式碼核查可由特權較少之程式碼存取的無特權許可,以使得可檢查由無特權程式碼提供之指標。對於第三變體而言,若在無特權狀態下執行第三變體,則觸發故障。
類似地,可提供指令之第四變體(TTAT),其組合了指令之第二及第三變體的性質。對於第四變體而言,若在無特權狀態抑或較不安全域中執行第四變體,則觸發故障。第四變體即使在安全域中執行時仍觸發較不安全MPU 23之查找,且即使在當前有特權狀態下執行時仍基於為無特權記憶體存取定義的無特權許可來觸發查找。
因而,第一至第四變體定義了諸多指令,該等指令允許記憶體存取許可的交叉操作狀態檢查,使得較受信任之程式碼可檢查是否已允許較不受信任之程式碼來存取由第一及第二位址界定的位址,此可有用於檢查由較不受信任之程式碼傳遞給較受信任之程式碼的指標。將了解,在給定實施之指令集合架構中並不需要支援指令之第一至第四變體中的全部。可支援此些變體中之一者、兩者或更多者的任何子集。可以不同方式來區別指令之不同變體,例如,使用不同作業碼,或者,若該等變體共享同一作業碼則使用在指令之指令編碼中所定義的另一參數。舉例而言,可在指令編碼中提供變體欄位,以識別使用了哪一變體。在其他實例中,對於不同變體而言指令之編碼可相同,但儲存於控制暫存器13中之參數可經設定以指示TT指令應被視為第一、第二、第三還是第四變體。
吾人可預期,提供查找電路系統以用於查找第一及第二位址是否映射至同一記憶體屬性條目可在效能及硬體方面相對昂貴,因為其可能需要針對該等位址中每一者的兩次單獨查找。然而,實務上,此並非必需的,且單個查找可識別是否兩個位址映射至同一條目。如圖8中所示,區域檢查硬體通常可包括比較器60、62之陣列,其中靜態暫存器36中或快取儲存器32中所支援之每一記憶體屬性條目可與兩個比較器60、62之集合相關聯。此些比較器包括下限比較器60,該下限比較器60比較輸入位址與對應位址區域之基址64,並輸出命中信號66,該命中信號66在輸入位址65大於或等於基址64時被確認。又,對於在靜態暫存器36或快取儲存器32中所提供之每一條目而言,可提供第二上限比較器62,該第二上限比較器62比較輸入位址67與定義對應位址區域之上限的極限位址68,並在輸入位址67小於或等於極限位址68時確認命中信號69。區域命中信號70可由AND閘71產生,且在下限命中信號66及上限信號69均被確認時設定為1。
對於常規記憶體存取而言,可將記憶體存取之目標位址#add供應至下限比較器60作為輸入位址65並供應至上限比較器62作為輸入位址67。
為了實施需要比較兩個單獨位址之TT指令,有可能將第一位址#add1作為輸入位址65供應至每一下限比較器60,並將第二位址#add2作為輸入位址67供應至每一上限比較器62。倘若第一位址#add1小於第二位址#add2,則給定條目之命中信號70將指示是否第一及第二位址均映射至彼條目上。若第一及第二位址映射至不同條目,則相應條目之區域命中信號70皆不會被確認。若第一及第二位址確實對應於同一條目,則將僅確認彼匹配條目之命中信號70。因而,有可能在幾乎沒有額外效能及面積影響(且與單個位址查找相比較而言幾乎沒有額外查找時間)的情況下執行圖5中所示之TT指令,因為指令可簡單地重複使用通常已被提供用於檢查現有記憶體存取的比較器60、62。因為僅需要比較器網路之單次查找,所以與可觸發返回與單個位址相關聯之區域編號的替代實例相比較而言,圖5及圖6中所示的TT指令之形式具有額外益處,因為僅需要執行單個TT指令,而不是執行單獨的指令以對照區域編號來檢查第一及第二位址。因為可預期TT指令在一些中斷延時敏感任務(其中每個循環都重要)之關鍵路徑上,所以此可為明顯優勢。
圖9圖示處理範圍檢查指令之方法的流程圖。在步驟100處,藉由指令解碼器7來解碼範圍檢查指令。範圍檢查指令識別用於識別第一位址#add1及第二位址#add2之位址識別參數。在此實例中,範圍檢查指令具有約束第一位址#add1小於第二位址#add2的編碼,但若並非如此,則當對於特定指令而言位址識別參數識別出第二位址#add2小於第一位址#add1時,可觸發故障。
在步驟102處,解碼器7識別出正解碼範圍檢查指令之哪一變體。此可基於指令編碼自身中之參數或儲存在控制暫存器13中之參數。基於該變體,指令解碼器7產生控制信號,以決定安全MPU 21及較不安全MPU 23中之哪一者應為用以回應於指令進行查找的選定MPU,且哪一特權級別應為假設用於檢查相關MPU中之存取許可的選定特權級別。
若指令屬於第一變體,則在步驟104處,決定選定之MPU為安全MPU 21及較不安全MPU 23中對應於處理電路系統4之當前安全域的一者,且選定之特權級別為處理電路系統4之當前特權級別。
若該變體為第二變體,則在步驟106處,系統檢查當前安全域是否為較不安全域,且若如此,則在步驟108處觸發故障。因而,可將第二變體之執行限制在安全域中之執行。若當前域為安全域,則在步驟110處,當處理電路系統4在較不安全域中操作時,決定選定之MPU為較不安全MPU 23,且選定之特權級別為與當前模式相關聯之特權級別。
若在步驟102處識別出所解碼的範圍檢查指令之變體為第三變體,則在步驟112處,檢查當前特權級別為無特權狀態,且若如此,則再次在步驟108處觸發故障。因而,將第三變體之執行限制在特權更高之狀態。若當前特權級別並非無特權狀態,則在步驟114處,決定選定之MPU為安全MPU 21及較不安全MPU 23中與當前安全域相關聯之一者,並強迫選定之特權級別為無特權的,而與處理電路系統4正在操作所處的當前特權級別無關。
若指令之變體為第四變體,則在步驟116處,決定當前安全域是否為較不安全域及/或當前特權級別是否為無特權狀態。若當前域為較不安全域或當前特權級別為無特權狀態,則在步驟118處,觸發故障。因而,將第四變體之執行限制在處理電路系統處於安全域中及特權更高的狀態中時。若當前域並非較不安全域且當前特權級別並非無特權狀態,則在步驟120處,決定選定之MPU為較不安全MPU 23,並決定選定之特權級別為無特權狀態,而與處理電路系統4之當前特權級別無關。
無論遇到哪一變體,在步驟122處,控制記憶體屬性檢查電路系統16以查找選定之MPU,其中將第一位址#add1與每一條目之下限位址相比較,並將第二位址#add2與每一條目之上限位址相比較。在圖2之實例中,可查找靜態MPU暫存器儲存器36及MPU快取儲存器32中之條目,且若第一位址抑或第二位址均未命中該等條目中之任一者,則可能需要執行表查找26,以便自記憶體中之MPU表22獲得記憶體保護條目。此表查找可基於第一位址抑或第二位址,因為可接著查詢返回的任一條目以決定是否第一及第二位址中之另一者亦匹配同一條目。
對於在第一及第二位址中之一者匹配靜態MPU暫存器儲存器36或MPU快取儲存器32內的條目中之一者的情況下執行TT指令而言,不需要觸發對記憶體系統的表查找,因為將自本端儲存在MPU 20內之條目知曉第二位址是否亦匹配同一條目。
在步驟124處,決定第一及第二位址是否對應於選定之MPU的同一MPU條目。若如此,則在步驟126處,將MPU狀態值指示符MVALID設定為1,以指示第一及第二位址對應於同一記憶體屬性條目,而若第一及第二位址不對應於同一條目,則在步驟128處將MVALID設定為0。若MVALID等於1,則在步驟130處,假設選定之特權級別是在步驟104、110、114、120中之一者處選定,基於在匹配之MPU條目中所指定的資訊來設定屬性資訊,諸如,R及RW旗標,其指示是否准許讀取存取或是否准許讀取及寫入存取。若在步驟124處第一及第二位址不對應於同一MPU條目,則可省去步驟130。或者,即使第一及第二位址不對應於同一MPU條目,仍可執行步驟130,例如,基於來自對應於第一位址之條目的資訊來設定屬性資訊,而無論第二位址是否亦匹配同一條目。僅基於與第一位址相關聯之條目來設定屬性資訊不成問題,因為其可由MVALID旗標限定,該MVALID旗標指示是否可將此資訊視為亦覆蓋第二位址。因而,在一些實施中,在電路邏輯中可能較為簡單的是,總是與第一及第二位址是否對應於同一MPU條目無關地來設定屬性資訊R、RW,而不是基於第一及第二位址是否對應於同一條目來提供用於抑制屬性資訊之更新的邏輯。在步驟128以後之兩條替代虛線示出可實施之替代選項。
在步驟132處,查找SAU 42,其中再次將第一位址與每一安全保護(SAU)條目之下限位址相比較,且將第二位址與每一安全保護條目之上限位址相比較。在步驟134處,處理電路系統決定第一及第二位址是否對應於同一SAU條目,且若如此,則在步驟136處將安全狀態值SVALID設定為1,而若第一及第二位址不對應於同一SAU條目,則在步驟138處將SVALID設定為0。在步驟140處,基於在匹配之SAU條目中所指定的資訊來設定屬性資訊(例如,安全域旗標S,其指示是否將匹配之條目定義為位址空間之安全的或較不安全的區域)。至少在其中第一及第二位址對應於同一SAU條目的情況下執行步驟140,但(出於與MPU查找之原因類似的原因)在步驟138之後,可執行步驟140抑或可省去步驟140。雖然圖9之實例示出步驟132至140是在步驟122至130之後按順序地執行,但在其他實例中,SAU查找可在MPU查找之前執行,或MPU及SAU查找可並行地執行。
在MVALID=1且SVALID=1之情況下,倘若軟體尚未將SAU或MPU設定為在第一及第二位址之間的範圍內具有重疊條目,則可保證的是,由S、R、RW參數指示之許可適用於第一及第二位址之間的整個範圍。若軟體具有已定義之重疊區域,則無法保證此性質。如上所述,可能並不認為在提供硬體邏輯以強制MPU區域不重疊且SAU區域不重疊方面導致成本是合理的。
在步驟142處,處理電路系統可基於自匹配之SAU條目導出的資訊與自匹配之MPU條目導出的資訊之組合產生組合許可指示符。再次,至少在MVALID為1且SVALID為1時,可執行此步驟,但若MVALID抑或SVALID為0則可省去此步驟,或無論如何均執行此步驟(出於與上述原因類似的原因)。在此實例中,產生兩個組合許可指示符:第一指示符LSR,其指示存取是否針對較不安全區域,且當在選定之MPU中查找時是否准許在選定之特權狀態下對彼區域的讀取存取;以及第二指示符LSRW,其指示匹配之位址區域是否為較不安全區域,且當在選定之MPU中查找時是否准許在選定之特權級別下進行讀取以及寫入。此些可表示共同檢查,執行該等共同檢查時常可為有用的,且因此,藉由提供單個位元指示符來組合來自不同參數(自各種條目查找該等參數)的資訊,此可允許迅速地執行後續檢查。舉例而言,若當區域與安全域相關聯時將安全旗標假設為1,且當該區域與較不安全域相關聯時將安全旗標假設為0,則可基於(MVALID AND SVALID AND (NOT S) AND R)的結果來設定LSR,且可基於(MVALID AND SVALID AND (NOT S) AND RW)的結果來設定LSRW。顯然,有可能將替代映射用於此些參數中之一些(例如,S=0可指示安全域,且S=1可指示較不安全的),在此情況下,用以產生組合許可指示符之邏輯運算組合可變化。
在步驟144處,處理電路系統4至少將指示第一及第二位址是否對應於同一MPU條目的狀態值MVALID、SVALID寫入至軟體可存取暫存器,例如,由範圍檢查指令所指定之目的地暫存器Rd。亦可將在步驟130、140、142處決定之屬性資訊寫入至暫存器。視情況,在步驟146處,指令亦可更新控制暫存器13中之一者中的條件旗標。可回應於條件旗標設定指令來更新此些條件旗標以指定先前處理結果之各種條件,且可由有條件指令來測試此些條件旗標,該等有條件指令指定條件旗標將滿足的測試條件,並有條件地取決於條件旗標之當前值是否滿足此測試條件來觸發執行對應的有條件操作。舉例而言,可將條件旗標中之一些設定為對應於組合許可指示符之值,以使得後續有條件指令可有條件地基於組合許可指示符之值而直接觸發動作被執行。步驟144及146之間的虛線指示步驟146為可選的。然而,控制暫存器中之條件旗標可表示軟體可存取位置之另一實例,可將指示第一及第二位址是否對應於同一條目的狀態資訊儲存在該軟體可存取位置處。在其他實例中,可省去對目的地暫存器之寫入,且指令之唯一結果可為更新條件旗標(例如,省去步驟144)。在其他實例中,不將值寫入至暫存器,可將指示位址#add1、#add2是否對應於同一記憶體屬性條目的值寫入至記憶體。
在圖9中所示之實例中,指令查詢對應於MPU 20之第一組記憶體屬性條目以及對應於SAU 42之第二組屬性條目。然而,TT指令亦可用於僅提供待檢查之記憶體屬性條目之集合的系統中,因此沒必要返回記憶體屬性條目之兩個不同集合的值。
圖10圖示可使用之模擬器實施。雖然前述實施例在用於操作支援相關技術之特定處理硬體的裝置及方法方面實施了本發明,但亦有可能根據本文所述實施例來提供指令執行環境,該指令執行環境是經由使用電腦程式來實施。可時常將此些電腦程式稱作模擬器,只要其提供硬體架構的基於軟體之實施即可。模擬器電腦程式之種類包括仿真機、虛擬機、模型,及二進位轉譯器,包括動態二進位轉譯器。通常,模擬器實施可在主機處理器230上運行,該主機處理器230視情況運行主機作業系統220,該主機作業系統220支援模擬器程式210。在一些佈置中,在硬體與所提供之指令執行環境及/或被提供在同一主機處理器上之多個相異的指令執行環境之間可能存在多個模擬層。從歷史上看,需要強大之處理器提供以合理速度執行之模擬器實施,但在某些情境下此方法可能是合理的,諸如,當出於兼容性或重複使用原因而期望運行原生於另一處理器之程式碼時。舉例而言,模擬器實施可提供具有額外功能(主機處理器硬體不支援該額外功能)之指令執行環境,或提供通常與不同硬體架構相關聯之指令執行環境。在「一些高效的架構模擬技術(Some Efficient Architecture Simulation Techniques)」(Robert Bedichek,1990年冬天之USENIX會議,第53-63頁)中給出模擬之概述。
就先前已參考特定硬體構造或特征描述了實施例而言,在模擬實施例中,可藉由適當軟體構造或特征提供等效功能。舉例而言,可在模擬實施例中將特定電路系統實施為電腦程式邏輯。類似地,可在模擬實施例中將諸如暫存器或快取記憶體之記憶體硬體實施為軟體資料結構。又,可將用以存取硬體裝置2中之記憶體6的實體位址空間仿真為模擬位址空間202,該模擬位址空間202藉由模擬器210映射至主機作業系統220所使用之虛擬位址空間上。在其中前述實例實施例中所引用之硬體元件中的一或多者存在於主機硬體(例如,主機處理器230)上的佈置中,一些模擬實施例可在適當情況下使用主機硬體。
可將模擬器程式210儲存在電腦可讀儲存媒體(其可為非暫時性媒體)上,且該模擬器程式210提供至目標程式碼200(其可包括應用、作業系統及超管理器)之程式介面(指令執行環境),該程式介面與藉由模擬器程式210模型化之硬體架構的應用介面相同。因此,可使用模擬器程式210自指令執行環境內執行目標程式碼210之程式指令,以使得並不實際上具有上述裝置2之硬體特征的主機電腦230可仿真此些特征。模擬器程式可包括指令解碼程式邏輯235,以及記憶體存取檢查程式邏輯240(包括MPU程式邏輯242及SAU程式邏輯244),其提供仿真圖1之硬體裝置2的指令解碼器7及記憶體存取檢查電路系統22(包括MPU 26及SAU 24)之行為的功能。亦可使用由模擬器程式碼210維護之暫存器資料結構255來仿真系統2之架構暫存器14。因而,可藉由模擬器程式210以與上述技術對應之方式來執行記憶體屬性檢查及對TT指令的支援。
在本申請案中,詞語「經配置以……」用以意謂裝置之元件具有能夠執行所定義操作的配置。在此上下文中,「配置」意謂硬體或軟體的佈置或互連方式。舉例而言,裝置可具有提供已定義操作之專用硬體,或可經程式化以執行該功能之處理器或其他處理設備。「經配置以……」並不暗示裝置元件需要以任何方式改變以提供已定義操作。
儘管本文中已參考隨附圖式詳細描述了本發明之說明性實施例,但應理解,本發明並不限於彼些精確實施例,且熟習此項技藝者可在不脫離如由附加申請專利範圍所限定的本發明之範疇及精神的情況下在其中進行各種改變及修改。
2:資料處理系統 4:處理電路系統 5:指令提取單元 6:算術/邏輯單元(ALU) 7:指令解碼器 8:載入/儲存單元 10:記憶體系統 12:通用(整數)暫存器 13:控制暫存器 14:浮點暫存器 16:記憶體屬性檢查電路系統 20:記憶體保護單元(MPU) 21:安全MPU 22:記憶體保護表 23:較不安全MPU 24:MPU記憶體存取電路系統 26:表查找電路系統 28:活動表標識符暫存器 30:基址 32:MPU快取儲存器 36:靜態MPU暫存器儲存器 40:許可檢查電路系統 42:安全屬性單元(SAU) 44:記憶體安全配置暫存器 46:安全檢查電路系統 50:區域 60:下限比較器 62:第二上限比較器 64:基址 65:輸入位址 66:命中信號 67:輸入位址 68:極限位址 69:命中信號 70:區域命中信號 71:AND閘 100:步驟 102:步驟 104:步驟 106:步驟 108:步驟 110:步驟 112:步驟 114:步驟 116:步驟 118:步驟 120:步驟 122:步驟 124:步驟 126:步驟 128:步驟 130:步驟 132:步驟 134:步驟 136:步驟 138:步驟 140:步驟 142:步驟 144:步驟 146:步驟 200:目標程式碼 202:模擬位址空間 210:模擬器程式 220:主機作業系統 230:主機處理器 235:指令解碼程式邏輯 240:記憶體存取檢查程式邏輯 242:MPU程式邏輯 244:SAU程式邏輯 255:暫存器資料結構
本發明技術之其他態樣、特征及優勢將自以下結合隨附圖式閱讀的實例描述顯而易見。
圖1圖示具有記憶體屬性檢查電路系統之資料處理裝置的實例;
圖2更詳細地示出其中記憶體屬性檢查電路系統包括記憶體保護單元之實例,該記憶體保護單元根據儲存於記憶體系統中之記憶體保護表中所定義的存取許可來檢查記憶體存取;
圖3示出由記憶體保護單元及安全屬性單元所設定之重疊許可的實例;
圖4示出處理電路系統之不同操作狀態的實例,包括不同的域、模式及特權級別;
圖5A及圖5B示出範圍檢查指令之實例;
圖6示出儲存至範圍檢查指令之目的地暫存器之資訊的實例;
圖7圖示範圍檢查指令之諸多變體;
圖8示出使用比較器來查找第一位址及第二位址是否對應於同一記憶體屬性條目的實例;
圖9圖示處理範圍檢查指令之方法;及
圖10圖示模擬器實例。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
2:資料處理系統
4:處理電路系統
5:指令提取單元
6:算術/邏輯單元(ALU)
7:指令解碼器
8:載入/儲存單元
10:記憶體系統
12:通用(整數)暫存器
13:控制暫存器
14:浮點暫存器
16:記憶體屬性檢查電路系統
20:記憶體保護單元(MPU)
21:安全MPU
23:較不安全MPU
42:安全屬性單元(SAU)

Claims (25)

  1. 一種資料處理裝置,包括:一指令解碼器,用以解碼指令;處理電路系統,用以回應於由該指令解碼器解碼之該等指令執行資料處理;以及記憶體屬性檢查電路系統,用以檢查由該處理電路系統發出之一記憶體存取請求是否滿足在複數個記憶體屬性條目中所指定的存取許可,每一記憶體屬性條目指定針對一位址空間內之可變大小之一對應位址區域的存取許可;其中:回應於一單個範圍檢查指令,該單個範圍檢查指令指定用於識別一第一位址及一第二位址之位址識別參數,該指令解碼器經配置以控制該處理電路系統,以便在可由該指令解碼器所支援之至少一種類型之指令存取的至少一個軟體可存取之儲存位置中設定一狀態值,該狀態值指示該第一位址及該第二位址是否對應於同一記憶體屬性條目。
  2. 如請求項1所述之裝置,其中該記憶體屬性檢查電路系統經配置以准許該可變大小為除了2的冪以外之一位元組數目。
  3. 如請求項1及2中任一項所述之裝置,其中該處理電路系統經配置以准許該第一位址與該第二位 址之間的一差為除了2的冪以外之一位元組數目。
  4. 如請求項1及2中任一項所述之裝置,其中該等位址識別參數識別將自其讀取該第一位址之一基址暫存器,以及用於識別該第一位址與該第二位址之間的一差的偏移量。
  5. 如請求項4所述之裝置,其中該偏移量被指定為一倍數及一大小值,其中:該倍數及該大小值中之一者為由該範圍檢查指令指定的一可變參數,以及該倍數及該大小值中之另一者為如下各者中之一者:一固定值;一立即值,該立即值由該範圍檢查指令指定;以及一值,該值儲存在由該範圍檢查指令指定之一暫存器中。
  6. 如請求項1及2中任一項所述之裝置,其中該等位址識別參數識別將自其讀取該第一位址之一第一暫存器,以及將自其讀取該第二位址之一第二暫存器。
  7. 如請求項1及2中任一項所述之裝置,其中該至少一個軟體可存取儲存位置包括由該範圍檢查指 令指定之一目的地暫存器。
  8. 如請求項1及2中任一項所述之裝置,包括一控制暫存器,該控制暫存器用以儲存至少一個條件狀態指示,該至少一個條件狀態指示指示一先前條件狀態指示符產生指令之一結果的一性質;其中:回應於一有條件指令,該指令解碼器經配置以控制該處理電路系統,以便以儲存在該控制暫存器中之該至少一個條件狀態指示是否滿足一測試條件為條件來執行一有條件操作;以及回應於該範圍檢查指令,該指令解碼器經配置以控制該處理電路系統,以便藉由更新該控制暫存器中之該至少一個條件狀態指示中的至少一者來設定該狀態值。
  9. 如請求項1及2中任一項所述之裝置,其中回應於該範圍檢查指令,至少當該第一位址及該第二位址均對應於同一記憶體屬性條目時,該處理電路系統經配置以將屬性資訊儲存至該至少一個軟體可存取之儲存位置,該屬性資訊是自對應於該第一位址及該第二位址的一匹配之記憶體屬性條目導出。
  10. 如請求項9所述之裝置,其中該處理電路系統具有複數個操作狀態;以及回應於該範圍檢查指令之至少一個變體,該處理電 路系統經配置以基於存取許可導出該屬性資訊,當處於與該處理電路系統之當前操作狀態不同的一操作狀態時,該存取許可將被強加於對該匹配之記憶體屬性條目之對應位址區域的記憶體存取。
  11. 如請求項9所述之裝置,其中該處理電路系統具有複數個安全操作域,包括一安全域及一較不安全域,且在每一安全域內,該處理電路系統經配置以在複數個模式中之一者中且複數個特權級別中之一者中操作;以及該指令解碼器經配置以支援該範圍檢查指令之以下變體中的至少一者:一第一變體,對於該第一變體而言,該屬性資訊指定當該處理電路系統處於一當前安全域中時是否准許對在該第一位址與該第二位址之間的一範圍中之一位置的一記憶體存取,以及與該當前模式相關聯的一特權級別;一第二變體,對於該第二變體而言,該屬性資訊指定當該處理電路系統處於與該當前域不同之一安全域中時是否准許對在該第一位址與該第二位址之間的該範圍中之一位置的一記憶體存取,以及當在該不同安全域中操作時與該當前模式相關聯的該特權級別; 一第三變體,對於該第三變體而言,該屬性資訊指定在一當前安全域中時是否准許對在該第一位址與該第二位址之間的該範圍中之一位址的一記憶體存取,以及不同於與該當前模式相關聯之該特權級別的一特權級別;以及一第四變體,對於該第四變體而言,該屬性資訊指定當該處理電路系統處於與該當前域不同之一安全域中時是否准許對在該第一位址與該第二位址之間的該範圍中之一位置的一記憶體存取,以及不同於與該當前模式相關聯之該特權級別的一特權級別。
  12. 如請求項11所述之裝置,其中以下各者中之一者:該指令解碼器經配置以支援該第二變體及該第四變體中之至少一者,該不同安全域包括該較不安全域,且該處理電路系統經配置以回應於在該處理電路系統處於該較不安全域中時執行該第二變體及該第四變體中之該至少一者的一嘗試,觸發一故障的傳訊;以及該指令解碼器經配置以支援該第三變體及該第四變體中之至少一者,該不同特權級別包括比該當前特權級別特權少的一特權級別,且該處理電路系統經配置以回應於在該處理電路系統處於至少一個預定特權級 別中時執行該第三變體及該第四變體中之該至少一者的一嘗試,觸發一故障的傳訊,其中該複數個特權級別包括比該至少一個預定特權級別特權多的至少一個特權級別。
  13. 如請求項1及2中任一項所述之裝置,其中該記憶體屬性檢查電路系統經配置以檢查由該處理電路系統發出之一記憶體存取是否滿足在一第一複數個記憶體屬性條目中指定的存取許可,且檢查該記憶體存取請求是否滿足在一第二複數個記憶體屬性條目中指定的存取許可,以及回應於該範圍檢查指令,該指令解碼器經配置以控制該處理電路系統以便在該至少一個軟體可存取之儲存位置中設定:一第一狀態值,該第一狀態值指示該第一位址及該第二位址是否對應於該第一複數個記憶體屬性條目中之同一條目;以及一第二狀態值,該第二狀態值指示該第一位址及該第二位址是否對應於該第二複數個記憶體屬性條目中之同一條目。
  14. 如請求項1及2中任一項所述之裝置,其中該複數個記憶體屬性條目包括複數個記憶體保護條目,每一個指定指示如下各者中之至少一者的存取許 可:該對應位址區域是唯讀的還是為可讀取/可寫入的;允許該處理電路系統之複數個特權級別中的哪些存取該對應位址區域。
  15. 如請求項14所述之裝置,其中該記憶體存取請求包括存取一記憶體系統之一請求;以及該複數個記憶體保護條目包括一記憶體保護表,其中該記憶體保護表儲存在該記憶體系統中。
  16. 如請求項15所述之裝置,包括記憶體保護快取儲存器電路系統,用以快取自該記憶體系統獲得之該記憶體保護表的至少一個記憶體保護條目。
  17. 如請求項1及2中任一項所述之裝置,其中該處理電路系統具有複數個操作域,包括一安全域及一較不安全域;以及該複數個記憶體屬性條目包括複數個安全屬性條目,每一個指定指示該複數個域中之哪一者與該對應位址區域相關聯的存取許可。
  18. 如請求項17所述之裝置,其中回應於該範圍檢查指令之至少一個變體,至少當該第一位址及該第二位址均對應於同一安全屬性條目時,該處理電路系統經配置以藉由對應於該第一位址及該第二位址的 該匹配之安全屬性條目,將屬性資訊儲存至該至少一個軟體可存取之儲存位置,該屬性資訊是自指定為與該對應位址區域相關聯之該安全域導出。
  19. 如請求項17所述之裝置,其中:該複數個記憶體屬性條目亦包括複數個記憶體保護條目,每一個指定指示以下各者中之至少一者的存取許可:該對應位址區域是唯讀的還是為可讀取/可寫入的;允許該處理電路系統之哪些特權級別存取該對應位址區域;以及回應於該範圍檢查指令之至少一個變體,至少當該第一位址及該第二位址均對應於同一記憶體屬性條目時,該處理電路系統經配置以將至少一個組合許可指示儲存至該至少一個軟體可存取之儲存位置,該至少一個組合許可指示在單個指示符中指定是否對應於該第一位址及該第二位址之一匹配的記憶體保護條目中的存取許可以及對應於該第一位址及該第二位址之一匹配的安全屬性條目中所指定的存取許可均指定准許一給定類型之記憶體存取。
  20. 如請求項1及2中任一項所述之裝置,其中該記憶體屬性檢查電路系統包括至少一組比較器, 每一組比較器包括:一下限比較器,用以比較一記憶體存取請求之一目標位址與一給定記憶體屬性條目之一下限位址;以及一上限比較器,用以比較一記憶體存取請求之該目標位址與該給定記憶體屬性條目之一上限位址;以及回應於該範圍檢查指令,該指令解碼器經配置以控制該處理電路系統,以將該第一位址作為該目標位址供應給每一組比較器中之該下限比較器,且將該第二位址作為該目標位址供應給每一組比較器中之該上限比較器。
  21. 如請求項1及2中任一項所述之裝置,其中該範圍檢查指令之一編碼約束該第一位址低於該第二位址。
  22. 如請求項1及2中任一項所述之裝置,其中回應於該第二位址低於該第一位址之一範圍檢查指令,該處理電路系統經配置以執行以下各者中之至少一者:傳訊一故障;以及返回該狀態值,該狀態值指示該第一位址及該第二位址不對應於同一記憶體屬性條目。
  23. 一種資料處理方法,包括以下步驟:使用一指令解碼器來解碼一單個範圍檢查指令,該單個範圍檢查指令指定用於識別一第一位址及一第二位址之位址識別參數;以及回應於解碼該單個範圍檢查指令,控制處理電路系統,以在可由該指令解碼器所支援之至少一種類型之指令存取的至少一個軟體可存取之儲存位置中設定一狀態值,該狀態值指示該第一位址及該第二位址是否對應於複數個記憶體屬性條目中之同一記憶體屬性條目,每一記憶體屬性條目指定針對一位置空間內的可變大小之一對應位址區域的存取許可。
  24. 一種電腦程式,用於控制一主機資料處理裝置以提供用於執行目標程式碼之指令的一指令執行環境;該電腦程式包括:指令解碼程式邏輯,用以解碼該目標程式碼之指令,並控制該主機資料處理裝置以回應於該等已解碼指令來執行資料處理;以及記憶體屬性檢查程式邏輯,用以檢查由該目標程式碼之該等已解碼指令所觸發的一記憶體存取請求是否滿足在複數個記憶體屬性條目中所指定的存取許可,每一記憶體屬性條目指定針對一模擬位址空間內之可變大小之一對應位址區域的存取許可,該模擬位址空 間是由該指令執行環境模擬;其中:回應於一單個範圍檢查指令,該單個範圍檢查指令指定用於識別一第一位址及一第二位址之位址識別參數,該指令解碼程式邏輯經配置以控制該主機資料處理裝置,以便在可由該指令解碼程式邏輯所支援之至少一種類型之指令存取的至少一個軟體可存取之儲存位置中設定一狀態值,該狀態值指示該第一位址及該第二位址是否對應於同一記憶體屬性條目。
  25. 一種儲存如請求項24所述之電腦程式的電腦可讀儲存媒體。
TW108132919A 2018-10-18 2019-09-12 用於範圍檢查指令的裝置、方法、電腦程式和電腦可讀儲存媒體 TWI835856B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1816957.3 2018-10-18
GB1816957.3A GB2578135B (en) 2018-10-18 2018-10-18 Range checking instruction

Publications (2)

Publication Number Publication Date
TW202030615A TW202030615A (zh) 2020-08-16
TWI835856B true TWI835856B (zh) 2024-03-21

Family

ID=

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150227462A1 (en) 2014-02-10 2015-08-13 Arm Limited Region identifying operation for identifying a region of a memory attribute unit corresponding to a target memory address

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150227462A1 (en) 2014-02-10 2015-08-13 Arm Limited Region identifying operation for identifying a region of a memory attribute unit corresponding to a target memory address

Similar Documents

Publication Publication Date Title
JP7449273B2 (ja) 範囲チェック命令
JP2017505492A (ja) 目標メモリ・アドレスに対応するメモリ属性ユニットの領域を特定するための領域特定演算
CN110574009B (zh) 用于管理对能力的使用的设备和方法
JP7359837B2 (ja) メモリ・システム内に記憶されているメモリ保護テーブルを使用するメモリ保護ユニット
EP3881189B1 (en) An apparatus and method for controlling memory accesses
JP7397057B2 (ja) メモリ・システム内に記憶されている制御テーブルのための二分探索手順
JP2023526811A (ja) タグチェック装置及び方法
US11397541B2 (en) Controlling guard tag checking in memory accesses
TWI835856B (zh) 用於範圍檢查指令的裝置、方法、電腦程式和電腦可讀儲存媒體
US11216280B2 (en) Exception interception
JP2023547065A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法
WO2024094956A1 (en) Region identifier based on instruction fetch address
JP2024517627A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法
TW202403562A (zh) 用於記憶體位址空間之頁面的「讀值只有x」性質