[go: up one dir, main page]

TW202439129A - 標籤保護指令 - Google Patents

標籤保護指令 Download PDF

Info

Publication number
TW202439129A
TW202439129A TW113105172A TW113105172A TW202439129A TW 202439129 A TW202439129 A TW 202439129A TW 113105172 A TW113105172 A TW 113105172A TW 113105172 A TW113105172 A TW 113105172A TW 202439129 A TW202439129 A TW 202439129A
Authority
TW
Taiwan
Prior art keywords
value
tag
address
memory
output value
Prior art date
Application number
TW113105172A
Other languages
English (en)
Inventor
格雷姆彼得 巴恩斯
Original Assignee
英商Arm股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英商Arm股份有限公司 filed Critical 英商Arm股份有限公司
Publication of TW202439129A publication Critical patent/TW202439129A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0763Error or fault detection not based on redundancy by bit configuration check, e.g. of formats or tags
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

存取控制電路系統(15)回應於一記憶體存取請求而比較基於一位址指標(42)之一標籤部分(40)而判定的一標籤值及與由判定自該位址指標的一記憶體位址識別的記憶體位置相關聯的一分配標籤(32)。回應於該比較指示一給定結果,執行一標籤錯誤回應。執行一標籤保護指令的處理電路系統(4)偵測一操作是否涉及企圖將一輸出值的一經識別部分(74)中的一位元設定為有別於一輸入運算元中之一對應位元中一值的一值。該處理電路系統當偵測到該企圖時將該輸出值的一給定部分設定為一錯誤指示值。該經識別部分係該輸出值的一部分,若將該輸出運算元用作用於一記憶體存取指令的該位址指標,則該輸出值的該部分將用作該標籤部分。

Description

標籤保護指令
本技術係關於資料處理領域。
欲由資料處理設備執行的軟體一般可以高階程式語言寫入,並接著根據由欲在其上執行軟體之設備所支援的指令集架構編譯成代碼。例如,軟體最初可以較高階語言(諸如Java、C、或C++)寫入,並接著編譯成原生支援指令集架構(諸如x86或Arm®)。
由於一些較高階程式語言(諸如Java)包括運行時間錯誤偵測檢查以用於針對某些與記憶體存取相關的錯誤進行檢查,其等係視為記憶體安全語言。反之,記憶體不安全語言(諸如C及C++)不包括此類運行時間錯誤檢查。持續流行使用記憶體不安全語言意指,在根據給定指令集架構的編譯程式碼中,可存在大量記憶體相關的錯誤,其可能有被攻擊者或其他惡意方利用的弱點。此類錯誤可包括: •     邊界違反,其中由代碼供應的陣列索引在陣列的合法邊界外; •     釋放後使用(use-after-free)錯誤,其中在記憶體位置已經解除分配或釋放之後對該記憶體位置進行存取; •     回傳後使用(use-after-return),其中在已從函數回傳之後,對與在函數內所用的變數(諸如堆疊上的值)相關聯之位址進行記憶體存取; •     超出範圍使用(use-out-of-scope)錯誤,其中在變數經宣告的範圍外存取變數;及 •     初始化前使用(use-before-initialisation)錯誤,其中在變數已經初始化之前存取與變數相關聯的記憶體位址。
這些僅是記憶體相關之錯誤的一些實例,該等錯誤可能導致不可預測的行為,且潛在地提供攻擊者利用的途徑。因此,在由給定處理設備所支援的指令集架構中提供建築支援可係所欲的,以用於輔助在運行時間偵測某些類別之記憶體錯誤。
用於對某些上文所討論之類型的記憶體使用錯誤提供保護之一方法可係提供守衛標籤,其等經儲存在與一或多個記憶體位置區塊相關聯之記憶體系統中。當基於識別記憶體系統中之特定經定址位置的目標位址而請求經標籤守衛的記憶體存取操作時,記憶體存取電路系統可比較與目標位址相關聯的位址標籤與經儲存在與包括由目標位址識別的經定址位置之一或多個記憶體位置區塊相關聯之記憶體系統中的守衛標籤。記憶體存取電路系統可產生是否在守衛標籤與位址標籤之間偵測到匹配的指示。此指示可用以控制是否允許記憶體存取成功,或是否後續操作可成功,或可僅當允許記憶體存取照常繼續時予以報告。
此可係有用的,因為例如基於記憶體不安全語言(諸如C或C++)編譯代碼的編譯器可在初始化記憶體區域時設定預期代碼對特定值進行存取之記憶體區塊的守衛標籤,並可將對應的位址標籤值與指向那些區塊的目標位址相關聯。若記憶體使用錯誤發生,且例如位址指標超出範圍地使用或延伸超出經初始化之有效範圍的邊界,則與經定址位置相關聯的守衛標籤有可能可不與目標位址相關聯的位址標籤匹配,且之後在此情況下,是否偵測到匹配的指示可用以觸發一些錯誤處置回應或錯誤報告機制。所採取之特定回應於可取決於所執行之軟體的特定需求或架構之特定微架構實施方案。因此,即使高階語言不具有用於執行運行時間錯誤檢查以防止記憶體存取錯誤的手段,用於經編譯程式碼的ISA仍可包括用於執行此類檢查的架構特徵。
須注意,雖然上文使用用語「守衛標籤(guard tag)」,可替代地使用用語「分配標籤(allocation tag)」。
鑑於本技術之第一實例,提供一種設備,其包含: 處理電路系統,其用以回應於指令而執行資料處理操作, 其中該處理電路系統回應於識別一位址指標之一記憶體存取指令以發出一記憶體存取請求,該記憶體存取請求包含一請求以存取經儲存在由基於該位址指標之一位址部分而判定之一記憶體位址識別之一記憶體位置處的資料;及 存取控制電路系統,其回應於該記憶體存取請求以比較基於該位址指標之一標籤部分而判定的一標籤值及與由該記憶體位址識別之該記憶體位置相關聯的一分配標籤,並回應於該比較指示一給定結果,以執行一標籤錯誤回應, 其中: 該處理電路系統回應於識別一輸入運算元的一標籤保護指令,以就該輸入運算元執行一操作以產生一輸出值; 該處理電路系統經組態以偵測該操作是否涉及企圖將該輸出值之一經識別部分中之至少一位元的值設定為有別於該輸入運算元中之一對應位元位置中之一值的一值; 該處理電路系統經組態以回應於偵測到該操作涉及企圖將該輸出值之該經識別部分中之至少一位元的值設定為有別於該輸入運算元中之一對應位元位置中之值的值而將該輸出值的至少一給定部分設定為一錯誤指示值;且 該經識別部分係該輸出值的一部分,若將該輸出運算元用作用於該記憶體存取指令的該位址指標,則該輸出值的該部分將用作該標籤部分。
鑑於本技術之一第二實例,提供有一種方法,其包含: 回應於指令而執行資料處理操作, 回應於識別一位址指標之一記憶體存取指令,發出一記憶體存取請求,該記憶體存取請求包含一請求以存取經儲存在由基於該位址指標之一位址部分而判定之一記憶體位址識別之一記憶體位置處的資料; 回應於該記憶體存取請求,比較基於該位址指標之一標籤部分而判定的一標籤值及與由該記憶體位址識別之該記憶體位置相關聯的一分配標籤,並回應於該比較指示一給定結果,執行一標籤錯誤回應; 回應於識別一輸入運算元的一標籤保護指令,就該輸入運算元執行一操作以產生一輸出值; 偵測該操作是否涉及企圖將該輸出值之一經識別部分中之至少一位元的值設定為有別於該輸入運算元中之一對應位元位置中之一值的一值;及 回應於偵測到該操作涉及企圖將該輸出值之該經識別部分中之至少一位元的值設定為有別於該輸入運算元中之一對應位元位置中之值的值,將該輸出值的至少一給定部分設定為一錯誤指示值, 其中該經識別部分係該輸出值的一部分,若將該輸出運算元用作用於該記憶體存取指令的該位址指標,則該輸出值的該部分將用作該標籤部分。
鑑於本技術之一第三實例,提供有一種電腦程式,其包含指令,該等指令在由一主機資料處理設備執行時控制該主機資料處理設備以提供一指令執行環境,以用於執行目標程式碼,該電腦程式包含: 處理程式邏輯,以回應於該目標程式碼中的指令而執行資料處理操作, 其中該處理程式邏輯回應於識別一位址指標之一記憶體存取指令以發出一記憶體存取請求,該記憶體存取請求包含一請求以存取經儲存在由基於該位址指標之一位址部分而判定之一記憶體位址識別之一記憶體位置處的資料;及 存取控制程式邏輯,其回應於該記憶體存取請求以比較基於該位址指標之一標籤部分而判定的一標籤值及與由該記憶體位址識別之該記憶體位置相關聯的一分配標籤,並回應於該比較指示一給定結果,以執行一標籤錯誤回應, 其中: 該處理程式邏輯回應於識別一輸入運算元的一標籤保護指令,以就該輸入運算元執行一操作以產生一輸出值; 該處理程式邏輯經組態以偵測該操作是否涉及企圖將該輸出值之一經識別部分中之至少一位元的值設定為有別於該輸入運算元中之一對應位元位置中之一值的一值; 該處理程式邏輯經組態以回應於偵測到該操作涉及企圖將該輸出值之該經識別部分中之至少一位元的值設定為有別於該輸入運算元中之一對應位元位置中之值的值而將該輸出值的至少一給定部分設定為一錯誤指示值;且 該經識別部分係該輸出值的一部分,若將該輸出運算元用作用於該記憶體存取指令的該位址指標,則該輸出值的該部分將用作該標籤部分。
鑑於本技術之一第三實例,提供有一種電腦可讀儲存媒體,以儲存上述之電腦程式。該電腦可讀儲存媒體可係暫時性或非暫時性的。
在參照隨附圖式討論實例實施方案之前,提供以下實例實施方案及關聯優點的描述。
根據本技術之實例,提供有一種設備,其包含處理電路系統以回應於指令而執行資料處理操作,其中該處理電路系統回應於識別一位址指標之一記憶體存取指令以發出一記憶體存取請求,該記憶體存取請求包含一請求以存取經儲存在由基於該位址指標之一位址部分而判定之一記憶體位址識別之一記憶體位置處的資料。該設備亦包含存取控制電路系統,其回應於該記憶體存取請求以比較基於該位址指標之一標籤部分而判定的一標籤值及與由該記憶體位址識別之該記憶體位置相關聯的一分配標籤,並回應於該比較指示一給定結果,以執行一標籤錯誤回應。
本技術之存取控制電路系統可包含上述之記憶體存取電路系統,標籤值可包含上述之位址標籤,且分配標籤可包含上述之守衛標籤。類似地,標籤錯誤回應可回應於在守衛標籤與位址標籤之間偵測到失配的指示之產生而執行,標籤錯誤回應可例如涉及防止記憶體存取成功(例如,拒絕記憶體存取請求及/或引起處理器例外),或者可單純涉及報告錯誤同時允許記憶體存取照常繼續。因此,本技術之設備實施記憶體加標。
在實施記憶體加標的系統中,經加標指標可操縱為整數,其可導致標籤值經修改。標籤的修改可成問題,因為其可藉由潛在地使攻擊者可操縱標籤值而降低與記憶體加標相關聯的安全效益。
欲應對這些安全顧慮,本技術提供標籤保護指令。
處理電路系統回應於識別輸入運算元的標籤保護指令,以就輸入運算元執行操作以產生輸出值。例如,由標籤保護指令識別的輸入運算元可係位址指標。然而,處理電路系統可不知輸入運算元的意義,例如,處理電路系統在執行標籤保護指令時可如其將看待任何其他整數值般看待輸入運算元。須注意,標籤保護指令可識別多於一個輸入運算元。
處理電路系統經組態以偵測操作(例如,回應於標籤保護指令而執行的操作)是否涉及企圖將輸出值之經識別部分中之至少一位元的值設定為有別於輸入運算元中之對應位元位置中的值之值,其中該經識別部分係輸出值的一部分,若將輸出運算元用作用於記憶體存取指令的位址指標,則輸出值的該部分將用作標籤部分。
因此,標籤保護指令提供用於偵測指令何時企圖修改位址指標的標籤部分之機制,無論此企圖係蓄意(例如,攻擊者將標籤修改指令插入程式碼中)或無意(例如,在位址指標的另一部分上執行的操作非故意地影響標籤部分)。
回應於偵測到操作涉及企圖將輸出值之經識別部分中之至少一位元的值設定為有別於輸入運算元中之對應位元位置中之值的值,處理電路系統將輸出值的至少一給定部分設定為錯誤指示值。
可認為對於偵測到企圖將輸出值之經識別部分中之至少一位元的值設定為有別於輸入運算元中之對應位元位置中之值的值之適當回應將引起例外。然而,可存在與引起處理器例外相關聯的顯著性能成本,而此可並非在所有情況下均係合理的。例如,可從未將輸出運算元用作位址指標,在該情況下,企圖修改經識別部分可不成問題。因此,本技術之發明人已提出替代回應,其並未招致此一高性能成本。具體地,本技術的處理電路系統回應於該企圖,以將輸出值的一部分(例如,一些或全部)設定為某一錯誤指示值。此使其可在稍後的階段處偵測錯誤發生,而非立即招致與引起例外相關聯的性能成本。
標籤保護指令可係專用指令,其具有指示其欲作為標籤保護指令執行的指令編碼,例如,在指令集架構(instruction set architecture, ISA)中可提供有各種標籤保護指令以用於可在輸入運算元上執行的不同操作。然而,考慮到可用於編碼新指令的有限編碼空間,處理電路系統可能夠以若干操作模式的任一者操作,且某些指令在一些模式下可看待/解碼為標籤保護指令,但在其他模式下則否。在其他實例中,給定類型的所有指令(例如,所有算術指令)可看待為標籤保護指令。在這些實例的任何者中,可有某些專用的標籤設定指令,可允許其等修改輸出值的經識別部分(例如,可防止這些指令作為標籤保護指令執行)。
在一些實例中,存取控制電路系統回應於記憶體存取指令識別包含錯誤指示值的運算元作為位址指標以觸發指標錯誤回應。
以此方式,若有將輸出值的經識別部分設定為不同於輸入值之相同部分的值之企圖,在後續將輸出值用作用於記憶體存取的位址指標時可觸發錯誤回應。在將輸出值用作位址指標時(且若將輸出值用作位址指標)而非在執行標籤保護指令時執行此錯誤回應,保護記憶體系統,同時降低「誤判」發生的可能性(例如,即使輸出值從未用作位址指標仍執行錯誤回應),其繼而可改善性能。
在一些實例中,處理電路系統經組態以取決於下列中之至少一者偵測由記憶體存取指令識別的運算元是否包含錯誤指示值: -      處理電路系統的當前操作模式; -      該運算元;及 -      使用運算元的至少部分產生的值。
處理電路系統可經配置以複數個操作模式中之一者進行操作,其中處理電路系統的當前操作模式可由經儲存在處理電路系統可存取之儲存電路系統(例如,暫存器)中的模式指示值指示。在一些實例中,取決於當前操作模式,處理電路系統可以不同方式偵測或回應錯誤指示值。此可涉及在不同操作模式中執行不同錯誤回應。此外,錯誤指示值的偵測可基於運算元本身,或者基於使用運算元之至少部分產生的某一值(例如,雜湊值)。
在一些實例中,指標錯誤回應包含下列中之至少一者: -      產生一例外;及 -      在狀態暫存器中記錄錯誤指示。
指標錯誤回應可與上文所討論的標籤錯誤回應相同或不同。
當偵測到修改經識別部分的企圖時,對於輸出值的哪部分係經設定為錯誤指示值的給定部分存在若干可能性。在一些實例中,給定部分包含經識別部分。例如,經識別部分可設定為不指示有效標籤的值(且若將輸出值用作位址指標,則其將因而觸發標籤錯誤回應)。
在一些實例中,給定部分包含位址識別部分,且處理電路系統回應於記憶體存取指令識別輸出值作為位址指標以將輸出值的位址識別部分看待為位址部分。例如,位址指示部分可設定為非正則值(例如,不識別有效位址的值)作為錯誤指示值。
在一些實例中,輸出位址指標的給定部分包含輸出值的錯誤指示欄位。例如,輸出值可有一部分經保留用於指示錯誤。例如,錯誤識別欄位可係輸出值中的一或多個位元,其(等)一般不用於另一目的。
須注意,在一些實例中,處理電路系統可將輸出值的多個部分設定為錯誤指示值。
在一些實例中,處理電路系統經組態以取決於下列中之至少一者設定輸出值之給定部分的值: -      處理電路系統的當前操作模式; -      該輸入運算元;及 -      輸出值。
例如,取決於上述因素之一或多者,處理電路系統可將輸出值的不同部分設定為錯誤指示值。同樣(或取而代之)地,用作錯誤指示值的特定值亦可取決於這些因素之任何者變化。
當在位址運算元上執行時,有多個操作可非故意地導致運算元的標籤部分經修改。一個實例可係邏輯「OR」操作。在另一實例中,操作包含算術操作。
如上文所提及,一些實施方案在至少一些操作模式中可將任何算術指令(及/或任何邏輯OR指令)看待為標籤保護(可能的例外係專用的標籤設定指令)。其他實施方案在ISA中可包括用於標籤保護算術指令的專用指令編碼。
在一些實例中,算術操作包含涉及加法的操作,且處理電路系統經組態以偵測加法期間所產生的進位值在對應位元位置中包含非零值作為企圖將輸出值之經識別部分中之至少一位元的值設定為有別於輸入運算元中之對應位元位置中之值的值。
算術操作可回應於ADD指令而執行,或者其可作為回應於某個算術指令(例如,減法、乘法、或除法指令,其等之各者可使用加法執行)而執行之算術操作的部分執行。當執行其中一個加數為位址指標的加法操作時,即使另一加數在與位址指標之標籤部分對準的部分中僅具有零(例如,即使加法不意欲修改標籤部分),加法期間所產生的進位值可溢位至對應於標籤部分的位元位置中(例如,其可溢位至輸出值的經識別部分中)。因此,其可能非故意地修改輸出運算元的經識別部分。除了對蓄意(例如,惡意)地企圖修改經識別部分提供保護以外,本技術提供對經識別部分的此種非故意修改之保護。
在一些實例中,處理電路系統回應於進一步的標籤保護指令識別得自標籤保護指令的輸出值作為進一步的輸入運算元,以針對輸出值執行進一步的操作以產生進一步的輸出值。在這些實例中,處理電路系統經組態以偵測輸出值是否包含錯誤指示值,且處理電路系統經組態以回應於偵測到輸出值包含錯誤指示值而執行錯誤回應。
以此方式,錯誤指示值係傳播至進一步的輸出值。此使錯誤指示值更難以藉由在輸出值上執行進一步的操作而移除,且因此進一步地改善設備安全性。 實施記憶體加標
是否在守衛標籤與位址標籤之間偵測到匹配而產生的指示之特定形式在不同實施方案之間可變化。在一些情況下,經標籤守衛的記憶體存取操作可包含取決於是否在守衛標籤與位址標籤之間偵測到匹配而控制是否允許記憶體存取經定址位置。然而,在其他實例中,經標籤守衛的記憶體存取可包含無論是否在守衛標籤與位址標籤之間偵測到匹配,均執行對經定址位置的記憶體存取。例如,與記憶體位置的給定區塊相關聯的守衛標籤在記憶體系統內可儲存在記憶體位置的不同區塊中,且因此存取守衛標籤可需要分開的讀取操作。因此,若記憶體存取經延遲直到守衛標籤及位址標籤已經比較,則其可延遲處理實際的記憶體存取,因此可係所欲的是在守衛標籤可用之前且無論是否在守衛標籤與位址標籤之間偵測到任何匹配,均對經定址位置執行記憶體存取,且之後一旦已得到守衛標籤並將其與位址標籤相比較再產生是否偵測到匹配的分開指示。
在一個實例中,是否偵測到匹配的指示可係表示錯誤狀況的信號,其在守衛標籤與位址標籤之間偵測到失配時產生。例如,若違反存取許可或存取未經映射的位址,則記憶體存取電路系統可傳訊類似的記憶體錯誤至所產生的錯誤,或者可指示不同種類的錯誤狀況。錯誤信號可觸發處理電路系統執行例外處置常式以用於回應於所偵測的錯誤。
替代地,狀態指示可記錄在設備之處理電路系統可存取的控制暫存器內,以指示比較守衛標籤與位址標籤時偵測到匹配或失配。狀態資訊接著可由後續指令讀取以檢查記憶體存取是否有效。
用於報告位址標籤與守衛標籤為匹配或失配的另一選項可係在與所執行的代碼片段相關聯的錯誤記錄中記錄資訊,其追蹤在整個代碼片段中所偵測的任何守衛標籤錯誤。例如,回應於失配的守衛標籤與位址標籤,可將觸發失配的目標位址或觸發失配記憶體存取之指令的指令位址記錄在錯誤記錄中。在此情況下,與其執行任何特定行動來阻礙代碼操作,可單純將錯誤記錄在錯誤記錄中。接著可使錯誤記錄可為代碼的軟體提供者所用,以協助提供者在後續的軟體版本中排除錯誤。
因此,將理解有各種各樣的方法,其中可由記憶體存取電路系統產生守衛標籤匹配/失配指示。
在一些實施例中,具有對應的守衛標籤之記憶體位置區塊各自可包含單一記憶體位置。在此情況下,各個別記憶體位置可具有不同的守衛標籤,其可提供設定守衛標籤的精細粒度,使得可偵測到較大範圍的記憶體錯誤。
然而,實際上,針對各經定址位置設定個別守衛標籤的管理負擔可太高,且使各守衛標籤與多個記憶體位置區塊相關聯可係更有效率的。在此情況下,若干相鄰記憶體位置可共用相同的守衛標籤,其可足以偵測共同形式的記憶體相關錯誤。
與記憶體位置之給定區塊相關聯的守衛標籤可儲存在記憶體系統內之任何其他記憶體位置處。選擇記憶體系統中之守衛標籤的位置之特定方式在不同實施方案之間或在運行時間下可顯著地變化。在一些實例中,儲存守衛標籤的位置在架構上可由處理電路系統存取,亦即,守衛標籤儲存位置可係經映射至與經定址位置相同的位址空間之部分的位置。在此情況下,經定址位置本身與對應之標籤儲存位置的位址之間的映射可係固定或固線式,或者可係可變的(例如,在由記憶體存取電路系統維持的追蹤表中或在轉譯側視緩衝器中進行追蹤)。替代地,其他實施方案可在架構上非處理電路系統可存取之另一儲存位置(例如,未經映射至可由處理電路系統所執行的指令定址的位址空間之微架構中所提供的額外儲存)中儲存與給定經定址位置相關聯的守衛標籤。在此情況下,記憶體存取電路系統可基於經定址位置的位址判定用以提及對應標籤儲存位置的特定內部位址,並觸發從標籤儲存位置讀取標籤資料所需的任何額外記憶體存取。無論標籤儲存位置是否在架構上為處理電路系統可存取,標籤值亦可快取在快取記憶體內(在用於資料值的相同快取記憶體內或在專用的標籤快取記憶體中)以供更快存取。
位址標籤可以不同方式與目標位址相關聯。在一些情況下,位址標籤可例如使用由觸發經標籤守衛的記憶體存取操作之經標籤守衛的記憶體存取指令指定之分開的暫存器而與標籤位址分開地指定。然而,在其他實例中,位址標籤可根據目標位址之一或多個經選擇位元而判定。也就是說,位址標籤可包含衍生自目標位址本身之一部分的資訊。在很多情況下,雖然指令集架構可支援具有某一位元數(例如,64位元)的位址,給定的硬體裝置實際上可不需要如此多的記憶體容量,以至於其將使用可使用該位元數表示的所有可行位址。例如,隨著裝置使用的當前趨勢,尚未有任何提供2 64個別可定址位置的需求。因此,在很多情況下,記憶體位址的一些位元可有效地未經使用,並可總是具有相同值或經設定為最高有效「實」位址位元的符號延伸(使得未經使用部分經設定為全0或全1)。此未經使用部分因而可再利用以表示位址標籤或用於衍生位址標籤的值,以避免需要存取分開的暫存器以便得到位址標籤,且亦使其更容易追蹤位址與對應位址標籤之間的對應性,因為每當位址經操縱或在暫存器之間移動時,位址標籤按照定義可與位址一同傳輸。
在使用目標位址的一部分以判定位址標籤的實施例中,須注意此位址標籤不同於目標位址的標籤部分,該標籤部分可由快取記憶體使用以判定來自由目標位址識別之經定址位置的資訊是否儲存在快取記憶體內。許多快取方案可將經快取資料的位址之一標籤部分儲存在快取記憶體內之該資料旁邊,使得在快取記憶體內搜尋給定位址方面,可比較該位址之部分與儲存在經快取資料旁邊的標籤,以判定該經快取資料是否實際對應於該所需位址。然而,在此情況下,與快取記憶體中的標籤相比之位址的標籤部分將係實際上識別需要資料的特定經定址位置之位址部分的部分,亦即,改變位址的快取標籤部分按照定義將得出指向記憶體系統之不同經定址位置的位址。反之,在位址標籤用於經標籤守衛之記憶體操作的情況下,記憶體存取電路系統可獨立於位址標籤選擇需要資料的經定址位置。也就是說,即使位址標籤具有不同值,由目標位址提及的經定址位置仍可相同於僅取決於目標位址的其他部分選擇的經定址位置。此授予編譯器自由度以將與特定位址相關聯的位址標籤設定為任何值,以匹配已分配給記憶體系統中的相關資料區塊之對應的守衛標籤值。
在一些實施方案中,指令解碼器可支援記憶體存取指令之分開的非經標籤守衛的及經標籤守衛的變體。在此情況下,經標籤守衛的記憶體存取操作可回應於記憶體存取指令之經標籤守衛的變體而觸發。反之,非經標籤守衛的記憶體存取指令可單純觸發對由該指令所指定之目標位址識別之經定址位置的存取,而不需得到守衛標籤或執行位址標籤與守衛標籤之間的任何比較。
然而,在其他實施方案中,可將所有記憶體存取視為經標籤守衛的記憶體存取。因此,在一些情況下,可將任何記憶體存取指令視為觸發記憶體存取電路系統以如上文所討論般執行經標籤守衛的記憶體存取操作。
然而,即使所有記憶體存取指令均解譯為經標籤守衛的記憶體存取指令,指令集架構仍可以其他方式支援針對某些操作選擇性地禁用守衛標籤比較。例如,處理設備之控制暫存器內的控制參數可選擇性地禁用標籤比較。另一選項係以特殊方法解譯位址標籤的特定值,使得其等指示應針對守衛標籤的任何可行值、再次有效地禁用標籤比較的效應將位址標籤視為匹配,使得無論位址標籤是否匹配守衛標籤均無報告錯誤。 模擬器實施方案
上文討論的技術可以硬體設備實施,該硬體設備具有實施上述之處理電路系統及存取控制電路系統的電路硬體,其等支援作為解碼電路系統及處理電路系統所支援之原生指令集架構的部分之標籤保護指令及記憶體存取指令。
然而,在另一實例中,相同技術可實施在電腦程式(例如,架構模擬器或模型)中,其可提供用於控制主機資料處理設備以提供用於來自目標碼之指令的執行的指令執行環境。電腦程式可包括用於控制主機資料處理設備的處理程式邏輯以執行資料處理。而且,程式可包括存取控制程式邏輯,以仿真上述之存取控制電路系統的功能。因此,處理程式邏輯仿真如上文討論之硬體設備的處理電路系統之功能。處理程式邏輯包括對於標籤保護指令的支援,其具有與上文針對硬體實例所述之相同功能。因此,此一模擬器電腦程式可對在模擬器電腦程式上執行的目標碼呈現與將由能夠直接執行目標指令集的實際硬體設備提供的環境類似的指令執行環境,即使在正在執行模擬器程式的主機電腦上可能不存在提供此等特徵的任何實際硬體。此對於在不實際支援一個指令集架構的主機平台上執行針對該架構編寫的碼可係有用的。再者,在軟體開發與支援新架構之硬體裝置的開發並行地執行的同時,模擬器在開發新版本之指令集架構之軟體的期間可係有用的。此可允許軟體在模擬器上開發及測試,使得軟體開發可在支援新架構的硬體裝置可用之前開始。 RTL/EDA 實施方案
本文所描述之概念可體現於用於製造體現所描述之概念的設備的電腦可讀碼中。例如,電腦可讀碼可在半導體設計及製造程序之一或多個階段中使用,該半導體設計及製造程序包括電子設計自動化(electronic design automation, EDA)階段,以製造一積體電路,其包含實現概念之設備。上述電腦可讀碼可另外或替代地促成實現本文所述之概念之設備的定義、模型化、模擬、驗證及/或測試。
例如,用於製造實現本文所述之概念的設備之電腦可讀碼可以定義代表該等概念之硬體描述語言(hardware description language, HDL)的碼實施。例如,碼可定義用於定義實現概念的設備之一或多個邏輯電路的暫存器轉移層(register-transfer-level, RTL)抽象概念。碼可定義代表一或多個邏輯電路的HDL,其以Verilog、System Verilog、Chisel或VHDL(超高速積體電路硬體描述語言)以及諸如FIRRTL的中間表示實現設備。電腦可讀碼可使用系統級模型化語言提供實現概念之定義,諸如系統C及系統Verilog或可藉由電腦解譯以促成概念的模擬、功能及/或正式驗證及測試之概念的其他行為表示。
另外或替代地,電腦可讀碼可實現一或多個接線對照表之電腦可讀表示。一或多個接線對照表可藉由將一或多個邏輯合成程序應用於RTL表示而產生。替代地或額外地,一或多個邏輯合成程序可從電腦可讀碼產生一位元流,該位元流被載入至一場可程式化閘陣列(field programmable gate array, FPGA)中以組態FPGA以實現所描述之概念。FPGA可部署用於積體電路中之製造之前的驗證及測試概念的目的,或FPGA可直接部署於產品中。
電腦可讀碼可包含用於製造設備之碼表示之混合,例如包括RTL表示、接線對照表表示、或用於半導體設計及製造程序以製造實現本發明之設備的另一電腦可讀定義之一或多者之混合。替代地或額外地,概念可定義於以下電腦可讀定義與電腦可讀碼的組合:電腦可讀定義待使用於半導體設計及製造程序中以製造設備、電腦可讀碼定義待由所定義設備一旦經製造後執行的指令。
此類電腦可讀碼可設置於任何已知暫時性電腦可讀媒體(諸如,網路上之有線或無線傳輸碼)或非暫時性電腦可讀媒體(諸如,半導體、磁碟或光碟)中。使用電腦可讀碼製造的積體電路可包含組件,諸如中央處理單元、圖形處理單元、神經處理單元、數位信號處理器或單獨或共同實現概念的其他組件之一或多者。
現在將參考圖式描述特定實施例。 實例資料處理設備
圖1示意地繪示資料處理設備2的一實例。將理解此單純係設備之組件子集的高階表示法,且設備可包括許多其他未經繪示的組件。設備2包含處理電路系統4,其用於回應於由指令解碼器6解碼的指令而執行資料處理。指令解碼器6解碼提取自指令快取記憶體8的指令以產生控制信號10,以用於控制處理電路系統4執行由指令表示之對應的處理操作。處理電路系統4可包括一或多個執行單元,其(等)用於在暫存器14中所儲存的值上執行操作以產生欲寫回至暫存器的結果值。例如,執行單元可包括算術/邏輯單元(arithmetic/logic unit, ALU),其用於執行算術操作或邏輯操作;浮點單元,其用於使用浮點運算元執行操作;及/或向量處理單元,其用於在包括多個獨立資料元件的運算元上執行向量操作。處理電路系統亦包括記憶體存取單元(或負載/儲存單元)15,其用於控制暫存器14與記憶體系統之間的資料轉移。在此實例中,記憶體系統包括指令快取記憶體8、1階資料快取記憶體16、在資料與指令之間共用的2階快取記憶體17、及主記憶體18。將理解,其他快取記憶體階層亦可行-此僅係一個實例。記憶體管理單元(memory management unit, MMU) 20係提供用於提供位址轉譯功能以支援由負載/儲存單元15觸發的記憶體存取。MMU具有變換後備緩衝區(translation lookaside buffer, TLB) 22,其用於快取來自經儲存在記憶體系統16、17、18中之分頁表的條目子集。各分頁表條目可提供用於對應位址分頁的位址轉譯映射,且亦可指定存取控制參數,諸如指定分頁係唯獨區域或係可讀及可寫兩者的存取許可,或者指定哪些特權階層可存取分頁的存取許可。
在圖1中,處理電路系統4係處理電路系統的實例,以回應於指令而執行資料處理操作,其中處理電路系統回應於識別位址指標之記憶體存取指令以發出記憶體存取請求,該記憶體存取請求包含請求以存取經儲存在由基於位址指標之位址部分而判定之記憶體位址識別之記憶體位置處的資料。與此同時,負載/儲存單元(記憶體存取電路系統)15係存取控制電路系統的實例,其回應於記憶體存取請求以比較基於位址指標之標籤部分而判定的標籤值及與由記憶體位址識別之記憶體位置相關聯的分配標籤,並回應於比較指示給定結果,以執行標籤錯誤回應。 記憶體加標
圖2示意地繪示經標籤守衛的記憶體存取之概念。用以提及記憶體系統內之記憶體位置的實體位址空間可邏輯地分割成若干區塊30,其各自包含特定數目的可定址位置。為了簡潔,在圖2之實例中,各區塊30包含四個記憶體位置,但亦可使用其他區塊大小。各區塊30係與對應的守衛標籤32相關聯。可將與特定數目的區塊30相關聯之守衛標籤收集在一起並儲存在實體位址空間內之不同的架構上可存取的記憶體位置34內,或者在架構上非可存取(未經映射至相同的實體位址空間)之主記憶體18中所提供的額外儲存位置內。使用分開的非架構上可存取的儲存在一些情況下可係較佳的,以避免耗盡用於快取守衛標籤值之資料快取記憶體16、17中的空間,其可衝擊正規代碼的性能並可使相干性管理更複雜。可在微架構中提供額外的標籤快取記憶體19以用於快取來自非架構上可存取之儲存的標籤值,以用於比必須從主記憶體18存取標籤時更快的存取。哪些標籤儲存位置34對應於各區塊30的特定映射可由負載/儲存單元15控制,並可係固線式或可係可程式化的。雖然在圖2中,各標籤32係與實體位址的區塊相關聯,提供與虛擬記憶體位址空間中的虛擬記憶體位置相關聯的守衛標籤32亦將係可行的,但此在各記憶體存取上可需要一些額外的位址轉譯。因此藉由使守衛標籤32與實體記憶體位置相關聯,此可改善性能。通常,守衛標籤32如何確切地與實體位址空間的對應區塊30相關聯係特定微架構實施方案的選擇。通常,唯一需要的就是可存取及比較與記憶體的給定區塊相關聯之守衛標籤32。
因此,當需要經標籤守衛的記憶體存取時,位址標籤40(其係與識別欲存取之經定址位置44的目標位址42相關聯)係針對守衛標籤32作比較,該守衛標籤係與包括經定址位置44之記憶體位置區塊30相關聯。例如,在圖2中,目標位址42指向記憶體中的特定位置B1,在圖2的位址空間中標記為44。因此,與包括位置B1之位置區塊B相關聯的守衛標籤B係針對與目標位址42相關聯的位址標籤40作比較。如圖2之頂部所示,位址標籤40可根據目標位址本身的經選擇位元判定。具體地,位址標籤可從目標位址的一部分內之位元判定,該部分未用於指示欲選擇作為經定址位置44之特定記憶體位置。例如,在一些架構中,目標位址之位元的頂部部分可總是具有特定的固定值(諸如符號延伸)(全0或全1),且因此可藉由以任意標籤值覆寫這些未經使用位元而以位址標籤40加標位址。特定位址標籤值可由例如程式設計人員或編譯器選擇。位址標籤及守衛標籤32可係相對小的位元數(例如,4位元),且因此在記憶體內及在目標位址內不需佔據太多空間。提供4個位元的標籤空間(即,標籤的16個可能值)常可足以偵測許多共同類型的記憶體存取錯誤。
因此,當執行經標籤守衛的記憶體存取時,負載/儲存單元15比較位址標籤40及與包括經定址位置44之區塊30相關聯的守衛標籤32,並判定其等是否匹配。負載/儲存單元15產生匹配指示,其指示位址標籤40與守衛標籤32是否匹配。例如,此匹配指示可係錯誤信號60,其在位址標籤40與守衛標籤32之間存在失配時產生;或可係經放置在狀態暫存器中的指示,其指示是否存在匹配;或可係經添加至錯誤報告的條目,其用以指示偵測到錯誤的位址及/或觸發錯誤之指令的指令位址。
圖3顯示用於處置經標籤守衛之記憶體存取的流程圖。觸發記憶體存取的指令可指定位址標籤及目標位址。如圖2所示,在一些情況下,位址標籤實際上可衍生自目標位址本身之位元的子集,不過在其他實例中,其可在分開的暫存器中指定。在步驟50處,遭遇觸發經標籤守衛的記憶體存取之指令。作為回應,在步驟52處,記憶體存取電路系統15觸發對由目標位址識別之經定址位置44的記憶體存取。而且,在步驟54處,記憶體存取電路系統15得到經儲存在記憶體系統中的守衛標籤32,該守衛標籤與包括由目標位址識別的經定址位置44之記憶體位置區塊30相關聯。在步驟56處,記憶體存取電路系統15比較位址標籤40與步驟54處所得的守衛標籤32。在步驟58處,由記憶體存取電路系統15產生是否在守衛標籤與位址標籤之間偵測到匹配的指示(例如,上述之匹配/失配報告指示之類型的任何者)。用以報告任何失配的精確指示在不同實施方案之間可變化。 標籤保護指令
在實施記憶體加標的系統中,經加標指標可操縱為整數,其可導致標籤值經修改。即使操作僅對準指標的非標籤部分,標籤仍可非故意地受到來自操作之溢位的影響。例如,就凸顯位址指標上所執行之操作中的錯誤而言,標籤之此無意的修改可具有溫和的有益效應,但亦由於其可潛在地讓攻擊者可操縱標籤值而降低此一系統的安全效益。在許多系統中,此安全性降低的重要性大於可提供的溫和效益。
可涉及操縱位址指標之操作的實例係指標算術操作,其中指標經指定為用於算術(例如,加法、減法、乘法、除法等)操作的輸入運算元。須注意,雖然此處使用用語「指標算術(pointer arithmetic)」,處理電路系統一般不知關於用於給定操作之運算元的意義-亦即,「指標算術」操作對於處理電路系統僅係算術操作,且經指定為輸入運算元的(多個)位址指標對於處理電路系統僅係輸入運算元。
由處理電路系統執行之大多數的算術操作涉及加法(例如,甚至減法、乘法、或除法操作可使用一或多個加法操作表示)。處理電路系統可包含算術邏輯單元(ALU)以用於執行算術操作,且ALU可包含ADD電路系統以執行加法操作。加法操作的實例係顯示在圖4中。
圖4繪示兩個三位元二進位加數62的加法:0b100 + 0b111(須注意,前綴「0b」在此處係用以指示下列值係二進位值-值0b100在十進位中係表示為「4」,且值0b111在十進位中係「7」)。如圖4所示,即使加數之兩者係三位元值,加法在較高有效位元位置中產生具有非零值(在此情況下係「1」)的進位值64(亦即,進位值係4位元值0b1000)-此係因為當第三最低有效位置66中的位元相加在一起(0b1 + 0b1)時,結果係兩位元值(0b10),且因此「1」進位至下一最高有效位元位置。此意指結果值68係4位元值(0b1011,其在十進位中係「11」)。因此,加法操作期間所產生的進位值可溢位至更高有效位元位置中。
圖5繪示進位值的產生可如何導致位址指標中之標籤的修改。具體地,圖5表示將值「Y」加到位址指標「X」以產生輸出「Z」的加法操作。例如,Y可係加至由位址指標X表示之基底位址的偏移值-然而,將理解此僅係算術操作為何可在位址指標上執行的一個實例。
如圖5所示,位址指標X及另一加數Y兩者在對應於指標X的位址部分72之最高有效位元的位置70中均具有「1」的值。此意指當加數X及Y相加在一起時,產生溢位至結果值Z之部分74中的進位值,若將Z用作位址指標,則該部分將係標籤部分40。(須注意,此並非可產生此一進位值的唯一方式-亦即,兩加數中的位元70為「1」並非必要)。
因此,即使加數Z在對應於位址指標Y之標籤部分40的部分74中不包含非零值,加法期間所產生的進位值仍可導致輸出值Z中的對應部分74不同於輸入位址指標Y中的標籤部分40。如上文所討論,此可導致安全性降低。
須注意,雖然算術操作係指標操縱操作的一個實例,其他操作亦可施加至位址指標,且亦可導致標籤部分經修改。例如,可針對稍後可用作位址指標的值執行邏輯「OR」操作,且此一操作亦可修改標籤。例如,兩運算元可具有標籤部分,其等讀取為: 0b1010 0b0001
若在這兩個運算元上執行邏輯OR,則輸出值的標籤部分將讀取為: 0b1011
因此,輸出值的標籤部分在此情況下不同於輸入運算元之兩者的標籤部分。
欲防止伴隨允許修改運算元的標籤部分而來的安全性風險,可考慮提供僅在指標的位址部分上操作的指令,從而避免標籤修改。例如,圖5中的運算元Y可經謹慎選擇,使得其不會導致溢位至結果的部分74中。在此一系統中,設定部分74(亦即,若將結果值Z用作位址指標,則其將係標籤部分的部分)的任何企圖通常可假設為錯誤,且因此可觸發錯誤回應。
針對回應此一錯誤有若干可能性。例如,一個可能性係單純忽略錯誤。此限制實施指標操縱操作中所涉及的管理負擔,但無法應對與標籤部分的修改相關聯之安全顧慮。
另一潛在回應係引起處理器例外。然而,引起處理器例外可招致性能的顯著降低,由於操作結果僅可在少數情況下繼續用作位址指標,在此狀況下其可係不恰當的。
另一潛在回應係將關於錯誤的資訊記錄至狀態暫存器,例如,此暫存器的內容可用於除錯。相較於引起處理器例外,此招致較小的性能成本,但仍可導致「誤判」結果(其中即使結果值從未用作位址指標仍記錄錯誤)。
改善的方法係修改輸出值Z,使得後續將經修改的Z'用作位址指標觸發錯誤回應。例如,處理器電路系統偵測到溢位至對應於標籤部分的區域74中,並回應於此偵測產生包括一些錯誤指示值之經修改的結果值Z'。錯誤指示值係導致值Z’在隨後用作位址指標時經看待為無效的值。
圖6繪示無效指標的實例-經修改的結果值Z'可例如經設定,使得其在繪示於此圖式中之方式中的一者係無效。
圖6繪示位址指標包含64位元的實例。在有效位址指標78中,這些位元可解譯如下: -      底部(最低有效)56位元(位元55:0)可解譯為位址位元-這些係識別記憶體中之位置的位元; -      位元59:56表示4位元的位址標籤;及 -      頂部4位元(位元63:60)可係備用位元及/或用以提供一些其他資訊的位元。
處理電路系統可以若干不同方式中的任何者修改值,以使其表示無效位址指標。例如,本技術的一些實施方案可利用頂部位元的一些者,並將這些設定為某一特定值以指示指標無效-例如,圖6顯示無效指標80的實例,其中位元61:60已經設定為0b01的值。(將理解,用於這些位元之0b01的值係用作實例-用作錯誤指示值的確切值可與實施方案相依)。
在一些實例實施方案中,標籤位元可設定為某一特定值以指示指標無效。例如,可保留某些標籤值以用於指示錯誤,且因此標籤值可設定為那些值中的一者。例如,圖6顯示無效指標82的實例,其中標籤部分已經設定為0b1110的值。(再次,此僅係可用作錯誤指示值的值之一個實例)。
在一些實例實施方案中,若定義可定址記憶體不需要位址位元的全部者,可將位址部分設定為某一非正則值(例如,保證在存取時導致錯誤的位址)。作為一具體實例,圖6顯示無效指標84,其中位址位元已全部設定為零。再次,此僅係可用作錯誤指示值的值之一個實例,雖然相當常見的是將此位址值保留用於提供一些替代資訊(例如,指示錯誤,如在此實例中者),其他實施方案可使用不同的位址值作為錯誤指示值。
須注意,圖6中用作錯誤產生值的特定值僅係實例,且所用的特定值可取決於系統所用的特定架構。此外,須注意一些實施方案可使用這些技術的一些組合以迫使指標為無效值。
圖7係繪示可回應於解碼86標籤保護指令而由處理電路系統執行的方法之實例的流程圖。標籤保護指令識別輸入運算元,且處理電路系統針對輸入運算元回應於藉由執行88操作而解碼的指令以產生輸出值。如上文所討論,此操作可例如係算術操作;然而,將理解,回應於標籤保護指令而執行的操作可係具有修改位址指標之標籤部分的潛在性之任何操作。
處理電路系統亦偵測90在輸入運算元上執行的操作是否涉及企圖將輸出值之經識別部分中之至少一位元的值設定為有別於輸入運算元中之對應位元位置中的值之值,其中該經識別部分係輸出值的一部分,若將輸入運算元用作用於記憶體存取指令的位址指標,則輸出值的該部分將用作標籤部分。若判定未(N)達成此一企圖,輸出運算元在無修改的情況下回傳92(例如,其可記錄在暫存器中)。另一方面,若判定達成(Y)此一企圖,則在回傳96經修改的輸出值之前,處理電路系統將輸出值的至少一給定部分設定94為錯誤指示值。
圖8係繪示回應於記憶體存取指令經解碼98而由存取控制電路系統執行的方法之實例的流程圖。當記憶體存取指令經解碼時,存取控制電路系統經組態以判定100由記憶體存取指令識別的位址指標是否有效。若指標無效,則執行102指標錯誤回應。例如,錯誤回應可包含引起例外或將值記錄至狀態暫存器。在一些情況下,在執行102錯誤回應之後(例如,若回應係欲將值記錄至狀態暫存器),該方法繼續至步驟104。另一方面,可執行錯誤回應而非執行步驟104、103、105、及106,例如,引起例外可停止處理。
圖8之方法亦包含基於由記憶體存取指令識別的位址指標判定104記憶體位址。須注意,雖然此實例僅在位址指標經判定100為有效(Y)時執行步驟104,在替代實施方案中亦可在檢查100位址指標是否有效之前執行步驟104。
該方法亦包含步驟103,其比較基於位址指標的標籤部分而判定的標籤值(位址標籤)及與由所判定的記憶體位址識別之記憶體位置相關聯的分配標籤(守衛標籤),並判定比較是否指示給定結果。當(Y)比較指示給定回應時,執行105標籤錯誤回應(例如,此可相同於或不同於上文所指示的錯誤回應)。另一方面,當(N)判定比較並未指示給定結果時,執行105所請求的資料存取(受制於滿足任何其他存取要求)。 模擬器實施方案
圖9繪示可使用的模擬器實施方案。雖然稍早所述之實施例以用於操作支援所關注技術的特定處理硬體之設備及方法來實施本發明,但亦可能根據本文所述之實施例提供一指令執行環境,其係透過使用電腦程式實施。此類電腦程式常稱為模擬器,因為其等提供硬體架構之基於軟體的實施方案。模擬器電腦程式的種類包括仿真器、虛擬機、模型、及二進制轉譯器(包括動態二進制轉譯器)。
一般而言,模擬器實施方案可在可選地運行主機作業系統720、支援模擬器程式710的主機處理器730上運行。在一些配置中,在硬體與所提供的指令執行環境及/或相同的主機處理器上提供的多個相異指令執行環境之間可有多層模擬。歷史上,已需要強大的處理器來提供以合理速度執行的模擬器實施方案,但此種方法在某些情況下可係有正當理由的,諸如當因為相容性或再使用原因而期望運行對另一處理器原生的碼時。例如,模擬器實施方案可提供具有不為主機處理器硬體所支援之額外功能性的指令執行環境,或提供一般與不同的硬體架構相關聯的指令執行環境。模擬的綜述係於「Some Efficient Architecture Simulation Techniques」中給出,Robert Bedichek, Winter 1990 USENIX Conference,頁數53至63。
在先前已參照特定硬體架構或特徵來描述實施例之情況下,在一模擬實施例中,可藉由合適的軟體架構或特徵提供等效功能。例如,可在模擬實施例中將特定電路系統實施為電腦程式邏輯。類似地,記憶體硬體(諸如暫存器或快取)可在模擬實施例中實施為軟體資料結構。在先前所述實施例中提及之硬體元件的一或多者存在於主機硬體(例如,主機處理器730)上的配置中,一些經模擬的實施例可在合適之處利用主機硬體。
例如,模擬器代碼710可包括指令解碼程式邏輯712以解碼目標代碼中的指令-因此,指令解碼程式邏輯可仿真早前所述的指令解碼器6。模擬器代碼710亦可包括暫存器仿真程式邏輯以仿真上文所述的暫存器14。模擬器程式亦包括處理程式邏輯716以及存取控制程式邏輯718,該處理程式邏輯用以處理目標代碼700中的指令(且因此仿真處理電路系統4),該存取控制程式邏輯用以仿真存取控制電路系統(諸如MMU 20)。
模擬器程式710可儲存在電腦可讀儲存媒體(其可係非暫時性媒體)上,並提供程式介面(指令執行環境)給目標代碼700(其可包括應用程式、作業系統、及超管理器),該程式介面與藉由模擬器程式710模型化之硬體架構的介面相同。因此,目標代碼700之包括如上文所述之記憶體存取指令及標籤保護指令的程式指令可使用模擬器程式710從指令執行環境內執行,使得實際上不具有上文討論之設備2的硬體特徵之主電腦730可仿真這些特徵。
因此,模擬器代碼710係包含指令之電腦程式的實例,該等指令當由主機資料處理設備執行時,控制主機資料處理設備以提供用於執行目標程式碼的指令執行環境,該電腦程式包含: -      處理程式邏輯,其用以回應於目標程式碼中的指令而執行資料處理操作,其中該處理程式邏輯回應於識別位址指標之記憶體存取指令以發出記憶體存取請求,該記憶體存取請求包含請求以存取經儲存在由基於該位址指標之位址部分而判定之記憶體位址識別之記憶體位置處的資料;及 -      存取控制程式邏輯,其回應於該記憶體存取請求以比較基於該位址指標之標籤部分而判定的標籤值及與由該記憶體位址識別之該記憶體位置相關聯的分配標籤,並回應於該比較指示給定結果,以執行標籤錯誤回應,其中: -      該處理程式邏輯回應於識別一輸入運算元的一標籤保護指令,以就該輸入運算元執行一操作以產生一輸出值; -      該處理程式邏輯經組態以偵測該操作是否涉及企圖將該輸出值之一經識別部分中之至少一位元的值設定為有別於該輸入運算元中之一對應位元位置中之一值的一值; -      該處理程式邏輯經組態以回應於偵測到該操作涉及企圖將該輸出值之該經識別部分中之至少一位元的值設定為有別於該輸入運算元中之一對應位元位置中之值的值而將該輸出值的至少一給定部分設定為一錯誤指示值;且 -      該經識別部分係該輸出值的一部分,若將該輸出運算元用作用於該記憶體存取指令的該位址指標,則該輸出值的該部分將用作該標籤部分。
在本申請案中,用語「經組態以...(configured to...)」係用以意指一設備的一元件具有能夠實行該經定義作業的一組態。在此上下文中,「組態(configuration)」意指硬體或軟體之互連的配置或方式。例如,該設備可具有專用硬體,其提供經定義的作業,或者一處理器或其他處理裝置可經程式化以執行該功能。「經組態以(configured to)」並不意味著設備元件需要以任何方式改變以提供所定義的作業。
進一步地,詞「包含…中之至少一者(comprising at least one of…)」在本申請案中係用以意指包括以下選項的任一者或以下選項的任何組合。例如,「下列中之至少一者:A;B;及C」意欲意指A或B或C或者A、B、及C的任何組合(例如,A及B或A及C或B及C)。
雖然本文已參照附圖詳細地描述本發明的說明性實施例,應瞭解本發明不限於該等精確實施例,且所屬技術領域中具有通常知識者可於其中實行各種變化與修改,而不脫離如隨附申請專利範圍所定義的本發明的範圍。
2:資料處理設備 4:處理電路系統 6:指令解碼器 8:指令快取記憶體 10:控制信號 14:暫存器 15:記憶體存取單元(或負載/儲存單元) 16:1階資料快取記憶體;記憶體系統;資料快取記憶體 17:2階快取記憶體;記憶體系統;資料快取記憶體 18:主記憶體;記憶體系統 19:標籤快取記憶體 20:記憶體管理單元(MMU) 22:變換後備緩衝區(TLB) 30:區塊 32:守衛標籤 34:記憶體位置;標籤儲存位置 40:位址標籤 42:目標位址 44:經定址位置;位址空間 50:步驟 52:步驟 54:步驟 56:步驟 58:步驟 60:錯誤信號 62:三位元二進位加數 64:進位值 66:第三最低有效位置 68:結果值 70:位置 72:位址部分 74:部分 78:有效位址指標 80:無效指標 82:無效指標 84:無效指標 86:步驟 88:步驟 90:步驟 92:步驟 94:步驟 96:步驟 98:步驟 100:步驟 102:步驟 103:步驟 104:步驟 105:步驟 106:步驟 700:目標代碼 710:模擬器程式;模擬器代碼 712:指令解碼程式邏輯 714:暫存器仿真程式邏輯 716:處理程式邏輯 718:存取控制程式邏輯 720:主機作業系統 730:主機處理器;主電腦;主機硬體 B1:位置
本技術的進一步態樣、特徵、及優點將由於結合附圖閱讀的以下實例描述而顯而易見,在該等附圖中: [圖1]示意地繪示資料處理設備的一實例; [圖2]顯示經標籤守衛的記憶體存取操作之實例,其包含檢查位址標籤是否匹配守衛標籤; [圖3]係顯示執行經標籤守衛的記憶體存取操作之方法的流程圖; [圖4]繪示具有進位值的加法; [圖5]繪示可如何執行標籤保護指令的實例; [圖6]繪示無效位址指標的實例; [圖7]係繪示執行標籤保護指令之方法的流程圖; [圖8]係繪示執行記憶體存取指令之方法的流程圖;及 [圖9]繪示模擬器實施方案。
700:目標代碼
710:模擬器程式;模擬器代碼
712:指令解碼程式邏輯
714:暫存器仿真程式邏輯
716:處理程式邏輯
718:存取控制程式邏輯
720:主機作業系統
730:主機處理器;主電腦;主機硬體

Claims (15)

  1. 一種設備,其包含: 處理電路系統,其用以回應於指令而執行資料處理操作, 其中該處理電路系統回應於識別一位址指標之一記憶體存取指令以發出一記憶體存取請求,該記憶體存取請求包含一請求以存取經儲存在由基於該位址指標之一位址部分而判定之一記憶體位址識別之一記憶體位置處的資料;及 存取控制電路系統,其回應於該記憶體存取請求以比較基於該位址指標之一標籤部分而判定的一標籤值及與由該記憶體位址識別之該記憶體位置相關聯的一分配標籤,並回應於該比較指示一給定結果,以執行一標籤錯誤回應, 其中: 該處理電路系統回應於識別一輸入運算元的一標籤保護指令,以就該輸入運算元執行一操作以產生一輸出值; 該處理電路系統經組態以偵測該操作是否涉及企圖將該輸出值之一經識別部分中之至少一位元的值設定為有別於該輸入運算元中之一對應位元位置中之一值的一值; 該處理電路系統經組態以回應於偵測到該操作涉及企圖將該輸出值之該經識別部分中之至少一位元的值設定為有別於該輸入運算元中之一對應位元位置中之值的值而將該輸出值的至少一給定部分設定為一錯誤指示值;且 該經識別部分係該輸出值的一部分,若將該輸出運算元用作用於該記憶體存取指令的該位址指標,則該輸出值的該部分將用作該標籤部分。
  2. 如請求項1之設備,其中 該存取控制電路系統回應於該記憶體存取指令識別包含該錯誤指示值的一運算元作為該位址指標以觸發一指標錯誤回應。
  3. 如請求項2之設備,其中 該處理電路系統經組態以取決於下列中之至少一者偵測由該記憶體存取指令識別的該運算元是否包含該錯誤指示值: 該處理電路系統的一當前操作模式; 該運算元;及 使用該運算元之至少部分產生的一值。
  4. 如請求項2或請求項3之設備,其中 該指標錯誤回應包含下列中之至少一者: 產生一例外;及 在一狀態暫存器中記錄一錯誤指示。
  5. 如前述請求項中任一項之設備,其中: 該給定部分包含該經識別部分。
  6. 如前述請求項中任一項之設備,其中: 該給定部分包含一位址識別部分;及 該處理電路系統回應於該記憶體存取指令識別該輸出值作為該位址指標以將該輸出值的該位址識別部分看待為該位址部分。
  7. 如前述請求項中任一項之設備,其中 該輸出位址指標的該給定部分包含該輸出值的一錯誤指示欄位。
  8. 如前述請求項中任一項之設備,其中: 該處理電路系統經組態以取決於下列中之至少一者設定該輸出值之該給定部分的值: 該處理電路系統的一當前操作模式; 該輸入運算元;及 該輸出值。
  9. 如前述請求項中任一項之設備,其中: 該操作包含一算術操作。
  10. 如請求項9之設備,其中: 該算術操作包含涉及加法的一操作;及 該處理電路系統經組態以偵測該加法期間所產生的一進位值在該對應位元位置中包含一非零值作為企圖將該輸出值之該經識別部分中之至少一位元的值設定為有別於該輸入運算元中之該對應位元位置中之值的值。
  11. 如前述請求項中任一項之設備,其中: 該處理電路系統回應於一進一步的標籤保護指令識別得自該標籤保護指令的該輸出值作為一進一步的輸入運算元,以就該輸出值執行一進一步的操作以產生一進一步的輸出值; 該處理電路系統經組態以偵測該輸出值是否包含該錯誤指示值;及 該處理電路系統經組態以回應於偵測到該輸出值包含該錯誤指示值而執行一錯誤回應。
  12. 一種方法,其包含: 回應於指令而執行資料處理操作; 回應於識別一位址指標之一記憶體存取指令,發出一記憶體存取請求,該記憶體存取請求包含一請求以存取經儲存在由基於該位址指標之一位址部分而判定之一記憶體位址識別之一記憶體位置處的資料; 回應於該記憶體存取請求,比較基於該位址指標之一標籤部分而判定的一標籤值及與由該記憶體位址識別之該記憶體位置相關聯的一分配標籤,並回應於該比較指示一給定結果,執行一標籤錯誤回應; 回應於識別一輸入運算元的一標籤保護指令,就該輸入運算元執行一操作以產生一輸出值; 偵測該操作是否涉及企圖將該輸出值之一經識別部分中之至少一位元的值設定為有別於該輸入運算元中之一對應位元位置中之一值的一值;及 回應於偵測到該操作涉及企圖將該輸出值之該經識別部分中之至少一位元的值設定為有別於該輸入運算元中之一對應位元位置中之值的值,將該輸出值的至少一給定部分設定為一錯誤指示值, 其中該經識別部分係該輸出值的一部分,若將該輸出運算元用作用於該記憶體存取指令的該位址指標,則該輸出值的該部分將用作該標籤部分。
  13. 一種包含指令的電腦程式,該等指令當由一主機資料處理設備執行時控制該主機資料處理設備以提供用於執行目標程式碼的一指令執行環境,該電腦程式包含: 處理程式邏輯,其用以回應於該目標程式碼中的指令而執行資料處理操作, 其中該處理程式邏輯回應於識別一位址指標之一記憶體存取指令以發出一記憶體存取請求,該記憶體存取請求包含一請求以存取經儲存在由基於該位址指標之一位址部分而判定之一記憶體位址識別之一記憶體位置處的資料;及 存取控制程式邏輯,其回應於該記憶體存取請求以比較基於該位址指標之一標籤部分而判定的一標籤值及與由該記憶體位址識別之該記憶體位置相關聯的一分配標籤,並回應於該比較指示一給定結果,以執行一標籤錯誤回應, 其中: 該處理程式邏輯回應於識別一輸入運算元的一標籤保護指令,以就該輸入運算元執行一操作以產生一輸出值; 該處理程式邏輯經組態以偵測該操作是否涉及企圖將該輸出值之一經識別部分中之至少一位元的值設定為有別於該輸入運算元中之一對應位元位置中之一值的一值; 該處理程式邏輯經組態以回應於偵測到該操作涉及企圖將該輸出值之該經識別部分中之至少一位元的值設定為有別於該輸入運算元中之一對應位元位置中之值的值而將該輸出值的至少一給定部分設定為一錯誤指示值;且 該經識別部分係該輸出值的一部分,若將該輸出運算元用作用於該記憶體存取指令的該位址指標,則該輸出值的該部分將用作該標籤部分。
  14. 一種電腦可讀儲存媒體,其用以儲存如請求項13之電腦程式。
  15. 一種電腦可讀媒體,其用以儲存用於製造如請求項1至11中任一項之設備的電腦可讀代碼。
TW113105172A 2023-02-24 2024-02-12 標籤保護指令 TW202439129A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB2302689.1A GB2627497B (en) 2023-02-24 2023-02-24 Tag protecting instruction
GB2302689.1 2023-02-24

Publications (1)

Publication Number Publication Date
TW202439129A true TW202439129A (zh) 2024-10-01

Family

ID=85793921

Family Applications (1)

Application Number Title Priority Date Filing Date
TW113105172A TW202439129A (zh) 2023-02-24 2024-02-12 標籤保護指令

Country Status (7)

Country Link
EP (1) EP4670040A1 (zh)
KR (1) KR20250151483A (zh)
CN (1) CN120693595A (zh)
GB (1) GB2627497B (zh)
IL (1) IL322291A (zh)
TW (1) TW202439129A (zh)
WO (1) WO2024175869A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN119830281B (zh) * 2024-11-29 2025-10-21 清华大学 内存漏洞防护方法、装置、电子设备及存储介质
CN119830364B (zh) * 2024-11-29 2025-09-23 清华大学 标签计算机系统和内存保护方法、装置及电子设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4241396A (en) * 1978-10-23 1980-12-23 International Business Machines Corporation Tagged pointer handling apparatus
US9495305B1 (en) * 2012-11-02 2016-11-15 David Fuchs Detecting pointer errors for memory protection
GB2572158B (en) * 2018-03-20 2020-11-25 Advanced Risc Mach Ltd Random tag setting instruction
US11630920B2 (en) * 2018-06-29 2023-04-18 Intel Corporation Memory tagging for side-channel defense, memory safety, and sandboxing
EP3916568B1 (en) * 2020-05-29 2024-07-17 ARM Limited Tag checking apparatus and method
US11940927B2 (en) * 2022-06-14 2024-03-26 Intel Corporation Technologies for memory tagging

Also Published As

Publication number Publication date
KR20250151483A (ko) 2025-10-21
CN120693595A (zh) 2025-09-23
GB202302689D0 (en) 2023-04-12
IL322291A (en) 2025-09-01
GB2627497B (en) 2025-05-28
GB2627497A (en) 2024-08-28
WO2024175869A1 (en) 2024-08-29
EP4670040A1 (en) 2025-12-31

Similar Documents

Publication Publication Date Title
US11327903B2 (en) Multiple guard tag setting instruction
EP3746899B1 (en) Controlling guard tag checking in memory accesses
TW202439129A (zh) 標籤保護指令
US20230236925A1 (en) Tag checking apparatus and method
JP7719863B2 (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法
US20250181515A1 (en) Read-as-x property for page of memory address space
CN111566628B (zh) 控制存储器访问中的守卫标签检查的设备和方法
CN117222990A (zh) 用于使用能力约束对存储器的访问的技术
TW202514359A (zh) 用於控制指標操縱的技術
JP7369720B2 (ja) アクションをトリガするための装置及び方法
WO2025196399A1 (en) Tag-locating-address translation operation
WO2025196398A1 (en) Selection of tag translation mode
WO2025196400A1 (en) Tag-locating address determination
WO2025196409A1 (en) Data-access-to-tag check
TW202340955A (zh) 使用能力約束記憶體存取之技術
GB2606185A (en) Technique for constraining access to memory using capabilities