TW201933111A - 多個保護標籤設定指令 - Google Patents

多個保護標籤設定指令 Download PDF

Info

Publication number
TW201933111A
TW201933111A TW107146882A TW107146882A TW201933111A TW 201933111 A TW201933111 A TW 201933111A TW 107146882 A TW107146882 A TW 107146882A TW 107146882 A TW107146882 A TW 107146882A TW 201933111 A TW201933111 A TW 201933111A
Authority
TW
Taiwan
Prior art keywords
tag
address
protection
memory
label
Prior art date
Application number
TW107146882A
Other languages
English (en)
Other versions
TWI818939B (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 TW201933111A publication Critical patent/TW201933111A/zh
Application granted granted Critical
Publication of TWI818939B publication Critical patent/TWI818939B/zh

Links

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
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error 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 the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Abstract

設備2具有用於回應於目標位址執行標籤保護的記憶體存取操作的記憶體存取電路15。標籤保護的記憶體存取操作包含:與包含由目標位址識別的尋址位置44的一或多個記憶體位置的區塊30相關聯地將與目標位址相關聯的位址標籤40與儲存在記憶體系統16-18中的保護標籤32進行比較,以及產生關於在保護標籤與位址標籤之間是否偵測到匹配的指示。指令解碼器6解碼多個保護標籤設定指令以控制記憶體存取電路15觸發記憶體存取,來更新與一或多個記憶體位置的至少兩個連續區塊相關聯的保護標籤。

Description

多個保護標籤設定指令
本技術係關於資料處理領域。
待由資料處理設備執行的軟體通常可以高階程式設計語言來寫入,並且隨後根據由其上將執行軟體的設備支援的指令集架構編譯為代碼。例如,軟體可最初以較高階語言(諸如Java、C或C++)寫入,並且隨後被編譯為本端支援的指令集架構,諸如x86或Arm®。
一些較高階程式設計語言(諸如Java)被認為係記憶體安全語言,因為其包括用於檢查某些關於記憶體存取的錯誤的運行時間錯誤偵測檢查。相比之下,記憶體不安全語言(諸如C及C++)不包括此種運行時間錯誤檢查。使用記憶體不安全語言的持久流行意味著在根據給定指令集架構編譯的代碼中,可存在大量的關於記憶體的錯誤,該等錯誤容易由攻擊者或其他惡意方利用。此種錯誤可包括: •界限違例,其中由代碼供應的陣列索引在陣列的合法界限之外; •釋放後使用錯誤,其中在已經解除分配或釋放記憶體位置之後進行對記憶體位置的存取; •返回後使用,其中在已經從函數返回之後進行對與函數中使用的變數(諸如堆疊上的值)相關聯的位址的記憶體存取; •範圍外使用錯誤,其中存取在宣告該等變數的範圍之外的變數;以及 •初始化前使用錯誤,其中在已經初始化變數之前存取與變數相關聯的記憶體位址。
此些僅為記憶體相關的錯誤的一些實例,其可以導致不可預測的行為並且可能提供攻擊者利用的途徑。因此,可能期望在由給定處理設備支援的指令集架構內提供架構支援,用於輔助某些種類的記憶體錯誤的運行時間偵測。
至少一些實例提供了一種設備,包含: 記憶體存取電路,用於回應於目標位址執行標籤保護的記憶體存取操作,該標籤保護的記憶體存取操作包含: 與包含由目標位址識別的尋址位置的一或多個記憶體位置的區塊相關聯地將與目標位址相關聯的位址標籤與儲存在記憶體系統中的保護標籤進行比較;以及 產生關於在保護標籤與位址標籤之間是否偵測到匹配的指示;以及 指令解碼器,用於解碼多個保護標籤設定指令,以控制記憶體存取電路觸發至少一個記憶體存取,來更新與一或多個記憶體位置的至少兩個連續區塊相關聯的保護標籤。
至少一些實例提供了一種方法,包含: 回應於目標位址執行標籤保護的記憶體存取操作,該標籤保護的記憶體存取操作包含: 與包含由目標位址識別的尋址位置的一或多個記憶體位置的區塊相關聯地將與目標位址相關聯的位址標籤與儲存在記憶體系統中的保護標籤進行比較;以及 產生關於在保護標籤與位址標籤之間是否偵測到匹配的指示;以及 回應於對多個保護標籤設定指令進行解碼,觸發至少一個記憶體存取,來更新與一或多個記憶體位置的至少兩個連續區塊相關聯的保護標籤。
至少一些實例提供了一種用於控制主資料處理設備以提供用於執行目標程式代碼的指令的指令執行環境的電腦程式,包含: 記憶體存取程式邏輯,用於回應於目標位址執行標籤保護的記憶體存取操作,該標籤保護的記憶體存取操作包含: 與包含由目標位址識別的尋址位置的一或多個記憶體位置的區塊相關聯地將與目標位址相關聯的位址標籤與儲存在記憶體系統中的保護標籤進行比較;以及 產生關於在保護標籤與位址標籤之間是否偵測到匹配的指示;以及 標籤設定程式邏輯,回應於目標程式代碼的多個保護標籤設定指令,以觸發至少一個記憶體存取,來更新與一或多個記憶體位置的至少兩個連續區塊相關聯的保護標籤。
儲存媒體可儲存上文描述的電腦程式。儲存媒體可以是非暫時性儲存媒體。
一種用於防止上文論述類型的某些記憶體使用錯誤的方法可能係與一或多個記憶體位置的區塊相關聯地提供儲存在記憶體系統中的保護標籤。當基於目標位址請求標籤保護的記憶體存取操作,從而辨識記憶體系統中的特定尋址位置時,記憶體存取電路可與包括由目標位址識別的尋址位置的一或多個記憶體位置的區塊相關聯地將與目標位址相關聯的位址標籤與儲存在記憶體系統中的保護標籤進行比較。記憶體存取電路可產生關於在保護標籤與位址標籤之間是否偵測到匹配的指示。此指示可以用於控制是否允許記憶體存取成功或後續操作是否可以成功,或可以僅在允許記憶體存取如常繼續時報告。
這可在以下情況係有用的:例如,基於記憶體不安全語言(諸如C或C++)編譯代碼的編譯器可以當初始化記憶體區域時,將期望代碼存取的記憶體區塊的保護標籤設定為特定值,並且可以使對應的位址標籤值與指向彼等區塊的目標位址相關聯。若發生記憶體使用錯誤,並且例如使用在範圍之外或延伸出已初始化的有效範圍的界限之外的位址指標,則很可能與尋址位置相關聯的保護標籤可能不匹配與目標位址相關聯的位址標籤,並且隨後在此情況下,關於是否偵測到匹配的指示可以用於觸發某種錯誤處理回應或錯誤報告機制。所採取的特定回應可以取決於正在執行的軟體的特定需求或取決於架構的特定微架構實現方式。因此,即使高階語言不具有用於執行運行時間錯誤檢查以防止記憶體存取錯誤的手段,用於編譯代碼的ISA可包括用於執行此種檢查的架構特徵。
然而,使用此種保護標籤可招致在設定與記憶體的特定區塊相關聯的保護標籤方面的一些額外負擔。用於設定與記憶體位置的區塊相關聯的保護標籤的過程可需要為相對快速的,因為與設定保護標籤相關聯的任何延遲亦可延遲對正在執行的真實軟體功能的後續處理。下文論述的設備具有:指令解碼器,用於解碼多個保護標籤設定指令以控制記憶體存取控制電路觸發至少一個記憶體存取,來更新與一或多個記憶體位置的至少兩個連續區塊相關聯的保護標籤。將與記憶體位置的多個連續區塊相關聯的保護標籤設定為相同標籤值可能是相對常見的,例如,在初始化記憶體的區域時如此。藉由提供可以回應於單個指令觸發所需的一或多個記憶體存取來更新與記憶體區塊的整個範圍相關聯的保護標籤的多個保護標籤設定指令,這可以加速標籤設定並因此改進效能。此外,此指令有助於減小代碼密度,因為具有較少指令的較緊密迴圈可以控制記憶體的給定區域的標籤設定,從而需要較少空間用於在記憶體中和在任何快取記憶體中儲存指令。
所產生的關於在保護標籤與位址標籤之間是否偵測到匹配的指示的特定形式可以在實現方式之間變化。在一些情況下,標籤保護的記憶體存取操作可包含取決於在保護標籤與位址標籤之間是否偵測到匹配來控制是否允許對尋址位置的記憶體存取。然而,在其他實例中,標籤保護的記憶體存取可包含執行對尋址位置的記憶體存取,而不考慮在保護標籤與位址標籤之間是否偵測到匹配。例如,與記憶體位置的給定區塊相關聯的保護標籤可儲存在記憶體系統內的記憶體位置的不同區塊中,並且因此存取保護標籤可需要單獨的讀取操作。由此,若延遲記憶體存取直到已經將保護標籤與位址標籤進行比較,則可延遲對實際記憶體存取的處理,因此期望在保護標籤可用之前且無論在保護標籤與位址標籤之間是否偵測到任何匹配,執行對尋址位置的記憶體存取,並且一旦已經獲得保護標籤並將其與位址標籤進行比較,則期望產生關於是否偵測到匹配的單獨指示。
在一個實例中,關於是否偵測到匹配的指示可為表示故障狀況的信號,在保護標籤與位址標籤之間偵測到不匹配時產生該信號。例如,記憶體存取電路可發信號通知與在違反存取權限或存取未映射的位址的情況下產生的故障類似的記憶體故障,或可以指示不同種類的故障狀況。故障信號可以觸發處理電路回應於偵測到故障執行異常處理常式。
或者,狀態指示可在設備的處理電路可存取的控制暫存器內記錄,以指示在比較保護標籤與位址標籤時是偵測到匹配還是不匹配。狀態資訊可以隨後由後續指令讀取以偵測記憶體存取是否有效。
用於報告位址標籤與保護標籤是匹配還是不匹配的另一選項可以記錄與執行的代碼段相關聯的錯誤日誌中的資訊,其追蹤在整個代碼段中偵測到的任何保護標籤錯誤。例如,回應於不匹配的保護標籤與位址標籤,觸發不匹配的目標位址或觸發不匹配記憶體存取的指令的指令位址可以在錯誤日誌中記錄。在該情況下,不是執行任何具體動作來阻止操作代碼,而是錯誤可以僅在錯誤日誌中記錄。錯誤日誌可以隨後變得可對代碼的軟體提供者可用,以輔助提供者消除軟體的後續版本中的錯誤。
因此,將瞭解,存在保護標籤匹配/不匹配指示可以由記憶體存取電路產生的多種方式。
在一些實施例中,具有對應保護標籤的記憶體位置的區塊可各自包含單個記憶體位置。在該情況下,每個獨立記憶體位置可具有不同保護標籤,這可以提供設定保護標籤的精細粒度,使得可以偵測到較大範圍的記憶體錯誤。
然而,實務上,為每個尋址位置設定獨立保護標籤的額外負擔可能是過高的,並且將每個保護標籤與多個記憶體位置的區塊相關聯可以更有效。在該情況下,若干相鄰記憶體位置可以共享相同保護標籤,此可以足夠偵測關於記憶體的錯誤的常見形式。
與記憶體位置的給定區塊相關聯的保護標籤可以在記憶體系統內的任何其他記憶體位置處儲存。選擇記憶體系統中的保護標籤的位置的特定方式可在實現方式之間或在運行時間方面顯著變化。在一些實例中,儲存保護標籤的位置可以由處理電路以架構方式存取,亦即,保護標籤儲存位置可為映射到與尋址位置相同的位址空間的部分的位置。在該情況下,在尋址位置本身與對應標籤儲存位置的位址之間的映射可為固定的或硬接線的,或可為可變的,例如,在由記憶體存取電路維持的追蹤表中或在轉換旁視緩衝器中追蹤。或者,其他實現方式可將與給定尋址位置相關聯的保護標籤儲存在處理電路不可以架構方式存取的另外的儲存位置中,例如,在不映射到位址空間的微架構中提供的額外儲存中,該位址空間可以由處理電路執行的指令來尋址。在該情況下,記憶體存取電路可基於尋址位置的位址來決定用於代表對應標籤儲存位置的特定內部位址,並且觸發從標籤儲存位置讀取標籤資料所需的任何額外記憶體存取。無論標籤儲存位置是否由處理電路可以架構方式存取,亦可以在用於較快存取的快取記憶體內、或在用於資料值的相同快取記憶體內、或在專用標籤快取記憶體中快取標籤值。
在一些情況下,保護標籤可為相對小的,例如4或8個位元,並且因此各者與記憶體位置的不同區塊相關聯的多個保護標籤可裝配在相同記憶體位置內。因此,儘管可回應於多個保護標籤設定指令來更新多個保護標籤,在一些情況下,若多個保護標籤均儲存在可以由記憶體存取電路進行的單個寫入操作寫入的單個位置內,則該等多個保護標籤可在單個記憶體存取中更新。或者,其他實現方式可需要觸發多個獨立寫入來回應於多個保護標籤設定指令設定待設定的保護標籤的不同子集。由此,指令可能觸發單個記憶體存取或多個記憶體存取,用於設定保護標籤。
位址標籤可以不同方式與目標位址相關聯。在一些情況下,位址標籤可以例如使用由標籤保護的記憶體存取指令指定的單獨暫存器來獨立於目標位址指定,該記憶體存取指令觸發標籤保護的記憶體存取操作。然而,在其他實例中,可將位址標籤決定為目標位址的一或多個已選位元的函數。亦即,位址標籤可包含從目標位址本身的一部分導出的資訊。通常,儘管指令集架構可支援具有某一數量的位元(例如,64位元)的位址,給定硬體裝置可能實際上不需要如此多的記憶體容量,其可使用所用可能位址,該等位址可以使用彼數量的位元來表示。例如,在裝置使用的當前趨勢下,可能尚不存在對提供264 個獨立可尋址位置的任何需要。由此,通常,記憶體位址的一些位元可有效地不使用並且可總是具有相同值,或設定為最高有效「真實」位址位元的符號擴展(使得將未使用部分設定為均為0或均為1)。該未使用的部分可以由此重複用於表示位址標籤或用於導出位址標籤的值,以避免需要存取單獨暫存器才能獲得該位址標籤,並且由於無論何時操縱位址或在暫存器之間移動位址,位址標籤可在定義上連同位址一起運輸,亦使追蹤在位址與對應位址標籤之間的對應性變得更簡單。
在使用目標位址的一部分來決定位址標籤的實施例中,注意到該位址標籤不同於可由快取記憶體用於決定來自目標位址所識別的尋址位置的資訊是否儲存在快取記憶體中的目標位址的標籤部分。眾多快取方案可將彼資料旁邊的快取資料段的位址的標籤部分儲存在快取記憶體內,使得在快取記憶體中搜尋給定位址時,位址的部分可以與所快取的資料旁邊儲存的標籤進行比較,以便決定所快取的資料實際上是否對應於所需位址。然而,在該情況下,與快取記憶體中的標籤進行比較的位址的標籤部分將係位址部分實際上識別請求資料的特定尋址位置的一部分,亦即,改變位址的快取記憶體標籤部分將在定義上導致位址指向記憶體系統內的不同尋址位置。相比之下,在位址標籤用於標籤保護的記憶體操作的情況下,記憶體存取電路可獨立於位址標籤來選擇請求資料的尋址位置。亦即,即使位址標籤具有不同值,由目標位址引用的尋址位置仍然可與僅取決於目標位址的其他部分選擇尋址位置相同。這給予編譯器將與特定位址相關聯位址標籤設定為任何值以匹配對應的保護標籤值的自由度,該等保護標籤值已經分配給記憶體系統中的資料的相關區塊。此外,利用快取記憶體,將標籤值的儲存標記到快取記憶體中可由快取記憶體控制器來控制並且不需要由指令解碼器所解碼的標籤設定指令明確地指示,並且通常回應於對給定尋址位置的記憶體存取,僅單個快取記憶體標籤將需要被設定為新的值(與快取記憶體條目相關聯的快取記憶體標籤,該快取記憶體條目用於快取與給定尋址位置相關聯的資料)。相比之下,利用多個保護標籤設定指令,指令解碼器支援具體指令,用於指示設定與記憶體中的不同尋址位置相關聯的多個保護標籤。
在一些實現方式中,指令解碼器可以支援記憶體存取指令的單獨的無標籤保護的和標籤保護的變型。在該情況下,標籤保護的記憶體存取操作可回應於記憶體存取指令的標籤保護的變型而觸發。相比之下,無標籤保護的記憶體存取指令可以僅觸發對由彼指令所指定的目標位址識別的尋址位置的存取,而不需要獲得保護標籤或執行位址標籤與保護標籤之間的任何比較。
然而,在其他實現方式中,所有記憶體存取可被認為係標籤保護的記憶體存取。因此,在一些情況下,任何記憶體存取指令可被認為觸發記憶體存取電路執行如上文論述的標籤保護的記憶體存取操作。
然而,即使所有記憶體存取指令被解讀為標籤保護的記憶體存取指令,仍可能存在指令集架構可支援針對某些操作選擇性禁用保護標籤比較的其他方式。例如,在處理設備的控制暫存器內的控制參數可以選擇性禁用標籤比較。另一選項係針對待以特殊方式解讀的位址標籤的某一值,使得該值指示位址標籤應當被認為匹配保護標籤的任何可能值,再次有效禁用標籤比較的效應,使得無論位址標籤是否匹配保護標籤也不報告錯誤。
多個保護標籤設定指令可以不同方式實現。一種特定的有用變型係提供識別長度暫存器的多個保護標籤設定指令的指定暫存器長度的變型。回應於該變型,指令解碼器可控制記憶體存取電路將與給定數量的連續區塊相關聯的保護標籤更新為小於或等於由儲存在長度暫存器中的長度參數識別的區塊的最大數量,並且控制處理電路將儲存在長度暫存器中的長度參數遞減了與該給定數量成比例的一量。因此,長度暫存器不是指定將為其更新保護標籤的區塊的絕對數量,而是指定允許將回應於指令更新對應的保護標籤的區塊的最大數量。選擇為(將為其更新保護標籤的)連續區塊的給定數量的特定數量可逐個實現方式選擇或可以在運行時間改變。這可以用於在微架構設計中提供靈活性,同時仍實現跨多個微架構利用期望的架構行為來執行相同指令序列。因此,實現方式不可知的軟體常式可以使用指令的指定暫存器長度的變型來執行,從而允許實現方式決定標籤設定的特定粒度。
該形式的多個保護標籤設定指令可為非常有用的,因為可能不期望承諾記憶體存取電路來回應於單個指令針對記憶體的大區域執行所有更新操作。例如,若承諾用於更新大量的不同保護標籤的記憶體存取,則這可阻止資源處理其他操作,並且可以使得難以重新排序記憶體存取操作來改進效率。由此,一些微架構設計者可能偏好限制可以由一個指令更新的保護標籤的數量。回應於一個指令而允許的保護標籤更新的數量可在實現方式之間改變。例如,不同實現方式可在記憶體系統中實現不同快取記憶體線大小。與使用較小快取記憶體線大小的實現方式相比,具有較大快取記憶體線大小的實現方式可能能夠回應於一個指令設定較大數量的保護標籤。此外,甚至在特定微架構實現方式內,有時可以有效地回應於一個指令而設定的保護標籤的數量可取決於目標位址在快取記憶體線內的相對位置。例如,執行與快取記憶體線邊界對準的記憶體存取可以更有效,並且因此若待更新的標籤值中途開始經過快取記憶體線,則僅更新延伸直到快取記憶體線的末端而非繼續到下一快取記憶體線上的保護標籤可能更有效,使得多個保護標籤設定指令的後續實例可隨後從對準位址開始,從而使記憶體存取更為有效。
由此,出於多種原因,可能有用地給予記憶體存取電路靈活性以改變回應於多個保護標籤設定指令來更新記憶體位置的多少區塊的保護標籤。由長度暫存器中的長度參數指定的區塊的最大數量限制該更新,使得不將保護標籤更新超出需要設定保護標籤的範圍末端。由於指令觸發處理電路基於已更新保護標籤的區塊的給定數量來遞減長度參數,這意味著包括多個保護標籤設定指令的指令迴圈可以被定義為最初指定將在長度暫存器中更新保護標籤的區塊的所需要數量,並且隨後迴圈可以在多個保護標籤設定指令的多個實例中迭代,每個迭代將長度參數遞減了與已更新標籤的區塊數量成比例的一量,直到一旦長度參數已經遞減到零(在該點將已經設定所需數量的標籤),可退出迴圈。這使得相同迴圈能夠準確地在多種不同微架構上執行,而不管實際上回應於單個實例指令使多少區塊更新為保護標籤值。
在一些實例中,長度參數可以指定將更新標籤的區塊的準確數量。在該情況下,長度參數遞減的量可等於給定數量本身。
或者,在一些實現方式中,長度參數遞減的量可以大於或小於更新保護標籤的區塊數量,但與更新保護標籤的區塊數量成比例。
例如,對於一些實現方式,長度參數可以被指定為將設定保護標籤的記憶體位元組的數量。微架構可以將位元組的特定數量選擇為小於或等於長度參數中定義的最大值,並且為已選數量的記憶體位元組設定保護標籤。由於每個保護標籤可對應於記憶體的多個位元組,這可意味著長度參數遞減的量可與回應於指令更新後的標籤數量成比例,但大於該標籤數量。
在其他實例中,長度參數可以使用區塊的一些基本粒度的倍數來定義長度參數。在該情況下,長度參數可以指定將更新區塊的多少倍數,使得長度參數遞減的量可與實際更新後的保護標籤數量呈比例,但小於該保護標籤數量。例如,對於一些微架構,在適配在一個保護記憶體位置中的保護標籤的數量或與一個資料記憶體位置相關聯的保護標籤的數量的粒度處更新保護標籤可能更有效。在該情況下,為了減少長度參數所需的位元數量,長度參數可以實際上指定將更新對應標籤的資料/保護記憶體位置的數量,而非保護標籤的絕對數量。標籤設定指令可以由此觸發將長度參數遞減了一量,該量對應於更新後的保護標籤的數量除以對應於允許更新保護標籤之基本粒度的保護標籤的數量。
但是,儘管指定暫存器長度的變型可提供支援不同微架構的非常靈活的架構,在其他實例中,可以提供多個保護標籤設定指令的指定立即長度的變型,其中在編碼指令時指定的立即參數識別將使記憶體系統的多少區塊更新為保護標籤值。回應於指定立即長度的變型,指令解碼器可控制記憶體存取電路更新與立即參數指定的連續區塊的數量相關聯的保護標籤。因此,在該情況下,微架構在將更新多少區塊的保護區塊中可能沒有選擇,但可僅更新由立即參數指示的保護標籤的數量。
亦將可能提供指定長度暫存器的基於暫存器的變型,從而指示將更新保護標籤的區塊的絕緣數量,這可以與指定立即長度的變型類似的方式發揮作用,因此暫存器中的長度參數可指定將更新標籤的區塊的準確數量,而非如在上文論述的指定暫存器長度的變型中的區塊的最大數量。
多個保護標籤設定指令可指定標籤更新目標位址,其識別將更新保護標籤的記憶體的連續區塊。大體上,由多個保護標籤設定指令靶向的至少兩個連續區塊可包含實際上由標籤更新目標位址識別的記憶體位置,以及與由標籤更新目標位址識別的記憶體位置連續的記憶體位置的至少一個後續區塊。注意到,由多個保護標籤設定指令觸發的一或多個記憶體存取不寫入標籤更新目標位址本身,或寫入在由標籤更新目標位址識別的記憶體位置之後的記憶體位置的後續區塊。相反,由多個保護標籤設定指令觸發的一或多個記憶體寫入可靶向儲存位置,此處儲存對應於由標籤更新位址識別的記憶體的連續區塊的保護標籤。
多個保護標籤設定指令可使用位址暫存器來定義標籤更新目標位址。位址暫存器可儲存決定用於決定標籤更新目標位址的值的位址,該位址識別將更新保護標籤的至少兩個連續區塊。例如,位址暫存器可以指定對應於標籤更新目標位址的絕對位址,或可以指定偏移,該偏移將被添加到基底位址,以便獲得標籤更新目標位址。基底位址可以在單獨暫存器中指定或可為隱含的,例如,指令的一些變型可使用程式計數器相對尋址並且因此基底位址可以包含程式計數器,該程式計數器指示在程式執行期間到達的當前位址。
大體上,不管使用上文論述的指定暫存器長度的變型還是指定立即長度的變型,回應於多個保護標籤設定指令,指令解碼器可控制處理電路將決定儲存在位址暫存器中儲存的值的位址遞增或遞減了一偏移,該偏移對應於回應於多個保護標籤設定指令更新保護標籤的記憶體位置的區塊數量。這意味著當在迴圈中提供多個保護標籤設定指令時,則將位址暫存器自動更新到指向在更新了保護標籤的記憶體位置的最後區塊之後的下一位址,使得不需要包括用於操縱位址暫存器的額外指令。這有助於改進代碼密度及效能。指令迴圈可以將給定記憶體區域從最低位址橫移到最高位址(每次將位址暫存器中的位址遞增了一偏移)或從最高位址橫移到最低位址(每次將該位址遞減了該偏移)。
用於更新保護標籤的更新後的標籤值可以不同方式從多個保護標籤設定指令導出。在一些情況下,更新後的標籤值可以與可在目標位址的一部分內表示用於標籤保護的記憶體存取的位址標籤的方式類似的方式使用標籤更新目標位址的一或多個選定位元來表示。因此,在一些實例中,回應於多個保護標籤設定指令,指令解碼器可控制記憶體存取電路觸發記憶體存取來將與至少兩個連續區塊相關聯的保護標籤更新為更新後的標籤值,該更新後的標籤值被決定為標籤更新目標位址的一或多個選定位元的函數。
或者,一些形式的指令可指定標籤值暫存器,用於獨立於用於識別標籤更新目標位址的任何暫存器來識別更新後的標籤值。在該情況下,回應於多個保護標籤設定指令,指令解碼器可控制記憶體存取電路觸發記憶體存取,來將與至少兩個連續區塊相關聯的保護標籤更新為更新後的標籤值,該更新後的標籤值被決定為由多個保護標籤設定指令獨立於標籤更新目標位址指定的儲存在標籤值暫存器中的值的函數。
採取該等兩種方法中的哪種可基於在多個保護標籤設定指令內的編碼額外負擔與針對給定指令設定更新後的標籤值的期望額外負擔之間的折衷來決定。在更新目標位址內表示更新後的保護標籤的第一種方法可避免需要在指令編碼內提供進一步的暫存器識別符,從而餘留可用於其他目的的更多編碼空間,這可能係有用的,因為編碼空間在指令集架構內通常很寶貴。另一方面,若將更新後的標籤值儲存在單獨的標籤值暫存器中,則這避免需要單獨指令在執行多個保護標籤指定指令之前將期望的更新後的標籤值寫入標籤更新目標位址的一部分中,這可以減小代碼密度。可以使用兩種選項。
亦可以提供多個保護標籤設定指令的資料清除變型。回應於此變型,指令解碼器可控制記憶體存取電路,除了設定更新後的保護標籤之外,亦觸發記憶體存取,用於將儲存在一或多個記憶體位置的至少兩個連續區塊中的資料值設定為清除值。清除值可為與資料值的先前值不相關的任何值。例如,清除值可以是預定值,諸如零或隨機產生的值。這可為有用的,因為通常保護標籤設定可作為用於初始化記憶體區塊的過程的一部分執行,並且同時亦可期望將記憶體的初始化區塊的內容清除為某一預定值,以避免先前儲存在位址空間的彼區域中的資料被後續執行的代碼可見。藉由提供多個保護標籤設定指令的資料清除變型,這避免需要執行用於清除資料的第二指令,因為保護標籤設定及資料清除均可以回應於單個指令執行。上文描述的該等類型的多個保護標籤設定指令中的任一種可以亦具備額外資料清除變型,使得可以提供相同形式的多個保護標籤設定指令的無資料清除及資料清除變型。或者,在一些實現方式中,所有多個保護標籤設定指令變型可以在定義上係資料清除變型,因此一些實現方式可能不支援多個保護和標籤設定指令的任何無資料清除變型。
上文描述的多個保護標籤設定指令的所有變型可為如下指令:針對其參數(暫存器指定的參數或立即參數)的至少一些值,該等指令可觸發記憶體存取電路更新與記憶體位置的至少兩個連續區塊相關聯的保護標籤。然而,針對參數的其他值,相同類型的指令可以觸發更新僅單個保護標籤,或可以在一些情況中觸發完全不更新任何保護標籤。例如,若在指定暫存器長度的變型的長度暫存器中指定的長度參數係零,則指令可能不觸發更新任何保護標籤。類似地,若長度參數指定1,則待回應於指令更新的的保護標籤的最大數量可為1。因此,將瞭解,一些指令作業碼可以有時用作多個保護標籤設定指令,並且其他時候用作單個保護標籤設定指令,這取決於由指令指定的參數。大體上,上文描述的多個保護標籤設定指令可係任何指令,針對其參數的至少一些值,該指令能夠觸發記憶體位置的兩個或多個連續區塊將其保護標籤設定為更新後的值。
除了多個保護標籤設定指令或上文論述的類型之外,由指令解碼器及處理電路支援的指令集架構亦可包括單個保護標籤設定指令,回應於該保護標籤設定指令,指令解碼器控制記憶體存取電路將與記憶體位置的單個區塊相關聯的保護標籤設定為更新的值。例如,單個保護標籤設定指令可具有用於多個保護標籤設定指令的不同作業碼,並且不能夠觸發記憶體存取電路更新一個以上的保護標籤。
第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中的頁表的條目的子集。每個頁表條目可提供用於位址的對應頁面的位址轉換映射,並且亦可指定存取控制參數,諸如指定頁面是唯讀區域還是可讀且可寫的存取權限、或指定哪些優先順序水平可以存取頁面的存取權限。
第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進行比較,保護標籤32與包括尋址位置44的記憶體位置30的區塊相關聯。例如,在第2圖中,目標位址42指向記憶體中的某一位置B1,在第2圖的位址空間中標記為44。由此,與包括位置B1的位置B的區塊相關聯的保護標籤B與和目標位址42相關聯的位址標籤40進行比較。如第2圖的頂部所示,位址標籤4可被決定為目標位址本身的所選位元的函數。特定而言,位址標籤可由目標位址的一部分內的位元決定,該等位元未用於指示待選擇為尋址位置44的具體記憶體位置。例如,在一些架構中,目標位址的位元的頂部分可能總是具有某一固定值,諸如符號擴展(均為0或均為1),並且因此藉由用任意標籤值覆寫該等未使用的位元,位址可用位址標籤40來標記。例如,特定位址標籤值可以由程式設計員或編譯器來選擇。位址標籤和保護標籤32可為相對小數量的位元,例如,4位元,並且因此不需要在記憶體內且在目標位址內佔用大空間。提供4位元的標籤空間(亦即,標籤的16個可能值)可以通常足夠偵測眾多常見類型的記憶體存取錯誤。
因此,當執行標籤保護的記憶體存取時,載入/儲存單元15將位址標籤40與和包括尋址位置44的區塊30相關聯的保護標籤32進行比較,並且決定其等是否匹配。載入/儲存單元15產生匹配指示,從而指示位址標籤40與保護標籤32是否匹配。例如,該匹配指示可以是在位址標籤40與保護標籤32之間存在不匹配的情況下產生的故障信號60,或指示是否存在匹配的置於狀態暫存器中的指示,或添加到錯誤報告以指示偵測到了錯誤的位址及/或觸發錯誤的指令的指令位址的條目。
第3圖圖示用於處理標籤保護的記憶體存取的流程圖。觸發記憶體存取的指令可指定位址標籤和目標位址。如第2圖所示,在一些情況下,位址標籤可實際上從目標位址本身的位元的子集導出,儘管在其他實例中,其可以在單獨的暫存器中指定。於步驟50,遇到觸發標籤保護的記憶體存取的指令。作為回應,於步驟52,記憶體存取電路15觸發對由目標位址識別的尋址位置44的記憶體存取。此外,於步驟54,記憶體存取電路15獲得與記憶體位置30的區塊相關聯地儲存在記憶體系統中的保護標籤32,該等記憶體位置包括由目標位址識別的尋址位置44。於步驟56,記憶體存取電路15將位址標籤40與步驟54獲得的保護標籤32進行比較。於步驟58,關於在保護標籤與位址標籤之間是否偵測到匹配的指示由記憶體存取電路15產生(例如,上文描述的任何類型的匹配/不匹配報告指示)。用於報告任何不匹配的精確指示可在實現方式之間變化。
第4圖示出多個保護標籤設定指令的指定暫存器長度的變型的實例。指令將位址暫存器Xm指定為其參數,該等參數指定標籤更新目標位址70,其亦包括使用位址的位元子集指定的更新後的標籤值72。指令亦指定長度暫存器Xn,其指定待回應於指令更新的區塊74的最大數量Nmax
第5圖係示出由第1圖的設備2處理第4圖的指令的流程圖。於步驟80,多個保護標籤設定指令由指令解碼器6進行解碼。作為回應,指令解碼器6產生控制信號,用於控制處理電路4和載入/儲存單元15執行第5圖的後續步驟。於步驟82,載入/儲存單元15產生用於請求記憶體系統執行至少一個記憶體存取的信號,用於將與記憶體位置的X個區塊相關聯的保護標籤設定為由從位址暫存器Xm導出的更新標籤72指定的更新後的標籤值。待更新的區塊X的數量可以小於或等於Nmax (在長度暫存器Xn中指定的區塊74的最大數量)的任何數量。X的特定值可為特定於實現方式的。亦即,包含第4圖的指令的指令集架構不指定需要選擇X的哪個特定值。給定的處理器實現方式隨意為X選擇便於彼特定微架構實現方式的任何值。在X係2或更大的情況下,則更新其保護標籤的記憶體30的X個區塊包含由標籤更新目標位址70識別的區塊以及遵循從標籤更新目標位址識別的區塊繼續的X-1個後續區塊。在X=1的情況下,則僅由標籤更新目標位址識別的區塊更新其保護標籤。若X=0,在長度暫存器Xn指定Nmax =0的情況下可以發生,則記憶體30的區塊不更新其對應的保護標籤32。
於步驟84,由指令解碼器6產生的控制信號控制處理電路4將在位址暫存器Xm中指定的標籤更新目標位址70遞增了一位址偏移,該位址偏移對應於記憶體的X個區塊。亦即,位址偏移可對應於一個記憶體區塊30的大小的X倍,其中區塊大小取決於保護標籤32被分配給記憶體位置的特定粒度(其可被選擇為實現方式依賴參數)。因此,Xm’=Xm+X*(區塊大小)。在其他實例中,暫存器Xm中的位址可以遞減了X*(區塊大小)。
此外,於步驟86,控制信號控制處理電路4將長度暫存器Xn遞減了與X成比例的量(回應於指令更新保護標籤的區塊數量)。在第6圖的實例中,Xn’=Xn-X。
在其他實例中,長度暫存器Xn不表示將更新標籤的區塊的實際最大數量,可以表示關於區塊的某一倍數的數量或關於將設定保護標籤的位址範圍的大小的位元組的數量的長度,在此種情況下,Xn可以遞減了小於或大於X。例如,若可以更新標籤的基本粒度係G,則長度暫存器Xn可以指定長度參數NG ,其指示待更新的G標籤的倍數數量,亦即,Nmax =NG *G。在此種情況下,於步驟82,微架構實現方式可受限於選擇X的值,其係G的倍數,並且於步驟86,長度參數NG 可遞減了X/G而非X。在另一實例中,若長度參數指定最大值B,其指示將更新對應保護標籤的記憶體的位元組的最大數量,並且每個保護標籤與記憶體位置的K個位元組區塊相關聯,則位址暫存器可遞增/遞減到Xm’=Xm±X,其中X係小於或等於B的K的倍數,並且長度暫存器Xn可遞減到Xn’=Xn -(X*K)。例如,若每個標籤與記憶體的16個位元組相關聯(K=16),並且微架構選擇更新,亦即,每指令實例2個標籤(X=2),則SetTagRange x1,[x2]!,其中長度參數x1=128,並且開始位址x2=0x8000可以觸發處理電路設定2個標籤,並且隨後遞減x1到128-2*16=96,並且遞增x2到0x8020。
第6圖示出此種形式的指令可以特別有用於允許軟體使用實現方式不可知常式的原因,而不管用於給定微架構實現方式的標籤設定的特定粒度如何。例如,迴圈可能在執行的代碼中定義如下: X0=基底位址 X1=長度 Loop: SetTags [X0]!,X1 CBNZ X1,Loop;将X1與零进行比較,並且若否,則分支到「迴圈」
第6圖圖示將基底位址指定為位址#a並將長度指定為72的實例。該架構的一種可能的處理器實現方式可以使用16個位元組的快取記憶體線,因此在一個實現方式中,若每個保護標籤32包含4個位元,則存在用於儲存在單個快取記憶體線中的32個標籤的空間。快取記憶體線係可以在一個請求中由記憶體系統讀取/寫入的記憶體的單位。通常在一個快取記憶體線的粒度處執行操作可以有效。因此,在實現方式1中,可能較佳地回應於第4圖的多個保護標籤設定指令更新32個標籤。在該情況下,在實現方式1上執行指令可導致更新記憶體的72個區塊中的32個區塊的保護標籤,因此提供Nmax 的暫存器X1減小到72-32=40,並且暫存器X0中的標籤更新目標位址遞增到位址#a+32*(區塊大小),使得其現在指向區塊32。迴圈的下一迭代將隨後為記憶體的下32個區塊設定新的標籤值,並且依此類推直到更新最後區塊71的標籤,並且條件分支指令CBNZ將隨後離開迴圈,因為X1已經遞減到零。
相比之下,針對使用32個位元組快取記憶體線的不同微架構實現方式2,64個標籤可以適配在一個快取記憶體線內,並且在該情況下,可能較佳地按照標籤設定指令的每個實例更新更多標籤。在該情況下,指令的一次執行可設定64個標籤,亦即,第5圖中所示的給定數量X係64。在第6圖中,在迴圈的第一迭代上,Nmax 遞減到72-64=8,並且在位址#a+64*(區塊大小)處,位址更新到指向區塊64。最後8個標籤在迴圈的第二迭代中設定。
在其他示例實現方式中,保護標籤可在快取記憶體中其保護的資料之後儲存。例如,給定大小的快取記憶體線(例如,64個位元組快取記憶體線)可擴展有某一數量的保護標籤,每個保護標籤對應於快取記憶體線的某一部分。例如,若每個標籤對應於快取記憶體線的16個位元組,則44個位元標籤可以與每個快取記憶體線相關聯。在該情況下,此種微架構可較佳限制為按照標籤設定指令的每個實例設定4個保護標籤。再者,上文的迴圈仍可對此種微架構起作用,但與第6圖所示的2個實現方式相比,在已經設定所有保護標籤之前仍需要更多迴圈迭代。
因此,不同實現方式可以每個指令設定不同數量的標籤,但儘管如此,無論如何可以執行相同程式迴圈。儘管與其他實現方式相比,一些實現方式可需要迴圈的更多迭代設定所需標籤,一旦長度暫存器Xm中的值已經減小到零,每個實現方式將最終分支出迴圈。
第7圖示出給予微架構實現方式靈活性以更新不同數量的標籤可能係有用的另一原因。取決於所供應位址#a的對準,待更新的標籤可中途開始經過快取記憶體線。在該情況下,指令可能較佳地僅更新快取記憶體線的剩餘部分中的標籤,使得迴圈的下一迭代可以開始更新與快取記憶體線邊界對準的標籤,從而使得後續存取更為有效。相比之下,總是回應於指令更新相同數量的標籤的實現方式可以不使用此種微架構最佳化。
第8圖圖示使用立即值#imm來指定將保護標籤設定為更新後的標籤值72的記憶體範圍的長度的多個保護標籤設定指令的替代形式。目標更新標籤目標位址70及更新後的標籤值72仍可在位址暫存器Xm中指定為與第4圖中相同,但此時在指令編碼中指定的立即值#imm指定絕對長度指示L,其指示將更新標籤值的區塊的精確數量。
第9圖示出了圖示對處理第8圖所示的此種類型的指令進行控制的方法的流程圖。於步驟100,指令解碼器6解碼第8圖所示的保護標籤設定指令的指定立即長度的變型。作為回應,指令解碼器產生控制信號,用於於步驟102控制記憶體存取電路15將與記憶體位置的L個區塊相關聯的保護標籤設定為更新後的標籤值72。再次,當L等於2或更大時,則L個區塊包含由標籤更顯目標位址70識別的區塊,並且L-1個後續區塊將遵循從標籤更新目標位址識別的區塊繼續。若L=1,則僅更新與標籤更新目標位址識別的區塊相關聯的標籤。若L=0,則不更新保護標籤。於步驟104,由指令解碼器6產生的控制信號亦控制處理電路4更新位址暫存器Xm來將位址遞增了對應於L個區塊的一偏移,亦即,Xm’=Xm+L*(區塊大小)。
第10圖圖示第4圖所示的指令的變化,其中更新後的標籤值72獨立於標籤更新位址70在第三暫存器Xt中指定,標籤更新位址70在位址暫存器Xm中指定。另外,該指令的行為準確地與第4圖和第5圖所示者相同。將瞭解,可以提供第8圖所示的立即指定的指令的類似變型,其中獨立於標籤更新位址70指定更新標籤值72。
第11圖圖示第4圖的指令的資料清除變型。位址暫存器Xm及長度暫存器Xn指定與第4圖所示者相同的參數。回應於該指令,以與第5圖所示者相同的方式執行步驟80至86。然而,回應於指令的資料清除變型,執行額外步驟88。於步驟88,指令解碼器6控制記憶體存取電路15產生額外記憶體存取,用於將記憶體的X個區塊中的資料值設定為與彼等資料值的先前值不相關的清除值(例如,設定為預定值,諸如0,或設定為隨機值)。此舉避免需要除了標籤設定指令之外的用於清除資料值的單獨指令,從而實現較緊密迴圈及較小代碼密度。儘管第11圖圖示了應用到第4圖所示形式的指令的資料清除變型的實例,亦可以實現用於上文描述的其他類型的多個標籤設定指令中任一種的類似資料清除變型。
第12圖示出可使用的模擬器實現方式。儘管先前描述的實施例關於用於操作支援相關技術的具體處理硬體的設備及方法來實現本發明,亦可能根據本文描述的實施例提供經由使用電腦程式來實現的指令執行環境。此種電腦程式通常被稱為模擬器,只要其提供硬體架構的基於軟體的實現方式。模擬器電腦程式的變化包括模仿器、虛擬機、模型和二進制轉換器,包括動態二進制轉換器。通常,模擬器實現方式可在主處理器130上運行,視情況運行主作業系統120,從而支援模擬器程式110。在一些佈置中,在硬體與所提供的指令執行環境之間及/或在相同主處理器上提供的多個不同指令執行環境之間可能存在多層模擬。歷史上,已經需要高效處理器提供以合理速度執行的模擬器實現方式,但此種方法可在某些情況下為合理的,諸如當需要運行另一處理器本端的代碼以獲得相容性時,或出於重複使用的原因。例如,模擬器實現方式可提供具有不由主處理器硬體支援的額外功能的指令執行環境,或提供通常與不同硬體架構相關聯的指令執行環境。模擬的概述在「Some Efficient Architecture Simulation Techniques」,Robert Bedichek,Winter 1990 USENIX Conference,第53頁至第63頁中給出。
就先前已經在模擬環境中參考特定硬體構造或特徵描述實施例而言,等效功能可由適當的軟體構造或特徵提供。例如,特定電路可在模擬實施例中實現為電腦程式邏輯。類似地,記憶體硬體(諸如暫存器或快取記憶體)可在模擬實施例中實現為軟體資料結構。在先前描述的實施例中引用的一或多個硬體元件存在於主硬體(例如,主處理器130)上的佈置中,一些模擬實施例可在適當時利用主硬體。
模擬器程式110可儲存在電腦可讀取儲存媒體112(可係非暫時性媒體)上,並且向目標代碼100(其可包括應用、作業系統和超管理器)提供程式介面(指令執行環境),該程式介面與由模擬器程式110模型化的硬體架構的應用程式介面相同。因此,目標代碼100的程式指令(包括上文描述的多個保護標籤設定指令)可使用模擬器程式110在指令執行環境內執行,使得實際上不具有上文論述的設備2的硬體特徵的主電腦130可以模仿此等特徵。例如,模擬器程式110可包括:記憶體存取程式邏輯114,用於由目標代碼100的指令控制對記憶體的存取。例如,記憶體存取程式邏輯114可包括用於執行保護標籤與位址標籤的比較並且報告在保護標籤與位址標籤之間是否已經偵測到任何不匹配的指令。此外,模擬器程式110可包括標籤設定程式邏輯116,其包含用於回應於包括在目標代碼100中的多個保護標籤設定指令來觸發一或多個記憶體存取用於以與硬體實施例設定標籤的方式對應的方式設定保護標籤的指令。在模擬器方法中,回應於多個保護標籤設定指令的指定暫存器長度的變型來設定的標籤數量X可由模擬器程式110選擇。
在本申請案中,詞語「經配置以……」用於意謂設備之元件具有能夠進行所定義操作的配置。在此上下文中,「配置」意謂硬體或軟體之互連之佈置或方式。例如,設備可具有提供所定義之操作的專用硬體,或處理器或其他處理裝置可經程式化以執行該功能。「經配置以」不暗示需要以任何方式改變設備元件以便提供所定義之操作。
儘管已在本文中參考隨附圖式詳細描述了本發明之說明性實施例,應理解,本發明不限於彼等精確實施例,且熟習該項技術者可在其中實現各種變化及修改而不偏離由隨附申請專利範圍所定義之本發明之範疇及精神。
2‧‧‧設備
4‧‧‧處理電路
6‧‧‧指令解碼器
8‧‧‧指令快取記憶體
14‧‧‧暫存器
15‧‧‧記憶體存取單元(或載入/儲存單元)
16‧‧‧1階資料快取記憶體
17‧‧‧2階快取記憶體
18‧‧‧主記憶體
19‧‧‧額外標籤快取記憶體
20‧‧‧記憶體管理單元(MMU)
22‧‧‧轉換旁視緩衝器(TLB)
30‧‧‧區塊
32‧‧‧保護標籤
34‧‧‧記憶體位置/標籤儲存位置
40‧‧‧位址標籤
42‧‧‧目標位址
44‧‧‧尋址位置
50‧‧‧步驟
52‧‧‧步骤
54‧‧‧步骤
56‧‧‧步骤
58‧‧‧步骤
60‧‧‧故障信號
70‧‧‧標籤更新目標位址
72‧‧‧更新後的標籤值
74‧‧‧區塊
80‧‧‧步骤
82‧‧‧步骤
84‧‧‧步骤
86‧‧‧步骤
88‧‧‧步骤
100‧‧‧目標代碼
102‧‧‧步驟
104‧‧‧步驟
110‧‧‧模擬器程式
112‧‧‧電腦可讀取儲存媒體
114‧‧‧記憶體存取程式邏輯
116‧‧‧標籤設定程式邏輯
120‧‧‧主作業系統
130‧‧‧主處理器/主電腦
本技術的進一步態樣、特徵及優點將從結合附圖閱讀的實例之以下描述顯而易見,其中:
第1圖示意地示出資料處理設備的實例;
第2圖圖示包含檢查位址標籤是否匹配保護標籤的標籤保護的記憶體存取操作的實例;
第3圖係圖示執行標籤保護的記憶體存取操作的方法的流程圖;
第4圖圖示多個保護標籤設定指令的指定暫存器長度的變型;
第5圖是示出處理第4圖的指令的方法的流程圖;
第6圖示出回應於相同的多個保護標籤設定指令以更新不同數量的標籤的不同微架構實現方式的實例;
第7圖圖示具有基於快取記憶體線對齊來改變更新多少標籤的靈活性的微架構的實例;
第8圖示出多個保護標籤設定指令的指定立即長度的變型;
第9圖是示出處理第6圖的指令的方法的流程圖;
第10圖示出第4圖的指令的替代變型,其中使用單獨暫存器來將更新後的標籤值指定為標籤更新的位址;
第11圖示出多個保護標籤設定指令的資料清除變型;以及
第12圖圖示支援多個保護標籤設定指令的模擬器的實例。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無

Claims (18)

  1. 一種裝置,包含: 記憶體存取電路,用於回應於一目標位址執行一標籤保護的記憶體存取操作,該標籤保護的記憶體存取操作包含:與包含由該目標位址識別的一尋址位置的一或多個記憶體位置的一區塊相關聯地將與該目標位址相關聯的一位址標籤與儲存在一記憶體系統中的一保護標籤進行比較;以及產生關於在該保護標籤與該位址標籤之間是否偵測到一匹配的一指示;以及一指令解碼器,用於解碼一多個保護標籤設定指令,以控制該記憶體存取電路觸發至少一個記憶體存取,來更新與一或多個記憶體位置的至少兩個連續區塊相關聯的該等保護標籤。
  2. 如請求項1所述的設備,其中該標籤保護的記憶體存取操作包含取決於在該保護標籤與該位址標籤之間是否偵測到一匹配來控制是否允許對該尋址位置的一記憶體存取。
  3. 如請求項1所述的設備,其中該標籤保護的記憶體存取操作包含對該尋址位置執行一記憶體存取,而不考慮在該保護標籤與該位址標籤之間是否偵測到一匹配。
  4. 如任何前述請求項所述的設備,其中該標籤保護的記憶體存取操作包含當在該保護標籤與該位址標籤之間偵測到一不匹配時發信號通知一故障狀況。
  5. 如請求項1所述的設備,其中在該標籤保護的記憶體操作中,該記憶體存取電路被配置為將該位址標籤決定為該目標位址的一或多個所選位元的一函數。
  6. 如請求項1所述的設備,其中在該標籤保護的記憶體存取操作中,該記憶體存取電路被配置為獨立於該位址標籤選擇該尋址位置。
  7. 如請求項1所述的設備,其中: 回應於識別一長度暫存器的該多個保護標籤設定指令的一指定暫存器長度的變型,該指令解碼器被配置為:控制該記憶體存取電路將與連續區塊的一給定數量相關聯的該等保護標籤更新為小於或等於由儲存在該長度暫存器中的一長度參數識別的區塊的一最大數量;以及控制處理電路將儲存在該長度暫存器中的該長度參數遞減了與該給定數量成比例的一量。
  8. 如請求項1所述的設備,其中回應於識別一立即參數的該多個保護標籤設定指令的一指定立即長度的變型,該指令解碼器被配置為控制該記憶體存取電路更新與由該立即參數指定的連續區塊的一數量相關聯的該等保護標籤。
  9. 如請求項1所述的設備,其中該多個保護標籤設定指令指定用於識別該等至少兩個連續區塊的一標籤更新目標位址。
  10. 如請求項9所述的設備,其中該等至少兩個連續區塊包含:包含由該標籤更新目標位址識別的一記憶體位置的該區塊以及一或多個記憶體位置的至少一個後續區塊。
  11. 如請求項9所述的設備,其中: 該多個保護標籤設定指令指定用於儲存一位址決定值的一位址暫存器,用於決定識別該等至少兩個連續區塊的一標籤更新目標位址;以及回應於該多個保護標籤設定指令,該指令解碼器被配置為控制處理電路將決定儲存在該位址暫存器中的值的該位址遞增或遞減了一偏移,該偏移對應於回應於該多個保護標籤設定指令更新該等保護標籤的記憶體位置的區塊的該數量。
  12. 如請求項9所述的設備,其中回應於該多個保護標籤設定指令,該指令解碼器被配置為控制該記憶體存取電路觸發記憶體存取,來將與該等至少兩個連續區塊相關聯的該等保護標籤更新為一更新後的標籤值,該更新後的標籤值被決定為該標籤更新目標位址的一或多個已選位元的一函數。
  13. 如請求項9所述的設備,其中回應於該多個保護標籤設定指令,該指令解碼器被配置為控制該記憶體存取電路觸發記憶體存取,來將與該等至少兩個連續區塊相關聯的該等保護標籤更新為一更新後的標籤值,該更新後的標籤值被決定為儲存在由該多個保護標籤設定指令獨立於該標籤更新目標位址指定的一標籤值暫存器中的一值的一函數。
  14. 如請求項1所述的設備,其中回應於該多個保護標籤設定指令的一資料清除變型,該指令解碼器被配置為控制該記憶體存取電路觸發記憶體存取,用於將儲存在一或多個記憶體位置的該等至少兩個連續區塊中的該等資料值設定為與該等至少兩個連續區塊的先前內容無關的清除值。
  15. 如請求項14所述的設備,其中每個清除值包含下列之一: 一預定值;零;以及一隨機值。
  16. 一種方法,包含以下步驟: 回應於一目標位址執行一標籤保護的記憶體存取操作,該標籤保護的記憶體存取操作包含:與包含由該目標位址識別的一尋址位置的一或多個記憶體位置的一區塊相關聯地將與該目標位址相關聯的一位址標籤與儲存在一記憶體系統中的一保護標籤進行比較;以及產生關於在該保護標籤與該位址標籤之間是否偵測到一匹配的一指示;以及回應於對一多個保護標籤設定指令進行解碼,觸發至少一個記憶體存取,來更新與一或多個記憶體位置的至少兩個連續區塊相關聯的該等保護標籤。
  17. 一種用於控制一主資料處理設備以提供用於執行目標程式代碼的指令的一指令執行環境的電腦程式,包含: 記憶體存取程式邏輯,用於回應於一目標位址執行一標籤保護的記憶體存取操作,該標籤保護的記憶體存取操作包含:與包含由該目標位址識別的一尋址位置的一或多個記憶體位置的一區塊相關聯地將與該目標位址相關聯的一位址標籤與儲存在一記憶體系統中的一保護標籤進行比較;以及產生關於在該保護標籤與該位址標籤之間是否偵測到一匹配的一指示;以及標籤設定程式邏輯,回應於該目標程式代碼的一多個保護標籤設定指令,以觸發至少一個記憶體存取,來更新與一或多個記憶體位置的至少兩個連續區塊相關聯的該等保護標籤。
  18. 一種儲存如請求項17所述的電腦程式的儲存媒體。
TW107146882A 2018-01-22 2018-12-25 具有多個保護標籤設定指令的設備、方法、電腦程式及儲存媒體 TWI818939B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1800970.4A GB2570326B (en) 2018-01-22 2018-01-22 Multiple guard tag setting instruction
??1800970.4 2018-01-22
GB1800970.4 2018-01-22

Publications (2)

Publication Number Publication Date
TW201933111A true TW201933111A (zh) 2019-08-16
TWI818939B TWI818939B (zh) 2023-10-21

Family

ID=61283479

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107146882A TWI818939B (zh) 2018-01-22 2018-12-25 具有多個保護標籤設定指令的設備、方法、電腦程式及儲存媒體

Country Status (9)

Country Link
US (1) US11327903B2 (zh)
EP (1) EP3743805B1 (zh)
JP (1) JP7269942B2 (zh)
KR (1) KR20200107997A (zh)
CN (1) CN111433742B (zh)
GB (1) GB2570326B (zh)
IL (1) IL275309B (zh)
TW (1) TWI818939B (zh)
WO (1) WO2019141960A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762566B2 (en) * 2018-01-22 2023-09-19 Arm Limited Programmable mapping of guard tag storage locations
GB2572158B (en) * 2018-03-20 2020-11-25 Advanced Risc Mach Ltd Random tag setting instruction

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4903196A (en) * 1986-05-02 1990-02-20 International Business Machines Corporation Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
JP2505887B2 (ja) * 1989-07-14 1996-06-12 富士通株式会社 命令処理システム
JPH05134930A (ja) * 1991-11-12 1993-06-01 Nippon Telegr & Teleph Corp <Ntt> メモリ保護装置
US5761464A (en) * 1995-05-22 1998-06-02 Emc Corporation Prefetching variable length data
JP2001005726A (ja) * 1999-04-20 2001-01-12 Nec Corp メモリアドレス空間拡張装置及びプログラムを記憶した記憶媒体
US6756921B2 (en) * 2000-12-27 2004-06-29 Mitsubishi Denki Kabushiki Kaisha Multiple quality data creation encoder, multiple quality data creation decoder, multiple quantity data encoding decoding system, multiple quality data creation encoding method, multiple quality data creation decoding method, and multiple quality data creation encoding/decoding method
US6578122B2 (en) * 2001-03-01 2003-06-10 International Business Machines Corporation Using an access key to protect and point to regions in windows for infiniband
JP4423849B2 (ja) * 2002-11-06 2010-03-03 日本電気株式会社 データ保護システム、データ保護プログラム及びデータ保護方法
US7917710B2 (en) * 2006-06-05 2011-03-29 Oracle America, Inc. Memory protection in a computer system employing memory virtualization
US7502890B2 (en) * 2006-07-07 2009-03-10 International Business Machines Corporation Method and apparatus for dynamic priority-based cache replacement
US7796137B1 (en) * 2006-10-24 2010-09-14 Nvidia Corporation Enhanced tag-based structures, systems and methods for implementing a pool of independent tags in cache memories
GB2458295B (en) * 2008-03-12 2012-01-11 Advanced Risc Mach Ltd Cache accessing using a micro tag
CN100555225C (zh) * 2008-03-17 2009-10-28 中国科学院计算技术研究所 一种支持x86虚拟机的risc处理器装置及方法
US8904138B2 (en) * 2011-09-28 2014-12-02 Microsoft Corporation Global distributed memory reshape operations on range-partitioned arrays
EP3712774B1 (en) * 2011-09-30 2023-02-15 Tahoe Research, Ltd. Apparatus and method for implementing a multi-level memory hierarchy
US10768930B2 (en) * 2014-02-12 2020-09-08 MIPS Tech, LLC Processor supporting arithmetic instructions with branch on overflow and methods
US10152330B2 (en) * 2015-09-21 2018-12-11 Bae Systems Information And Electronic Systems Integration Inc. Memory protection using a tagged architecture
PL3204861T3 (pl) * 2015-12-15 2019-12-31 Lzlabs Gmbh Zarządzanie kluczem zabezpieczającym i prefiksowanie w wirtualnej przestrzeni adresowej dziedziczonego systemu emulacji
GB2546245B (en) * 2016-01-05 2020-08-19 Advanced Risc Mach Ltd Cache memory
US9996471B2 (en) 2016-06-28 2018-06-12 Arm Limited Cache with compressed data and tag
US10248422B2 (en) * 2016-07-02 2019-04-02 Intel Corporation Systems, apparatuses, and methods for snooping persistent memory store addresses

Also Published As

Publication number Publication date
GB2570326B (en) 2020-06-10
JP7269942B2 (ja) 2023-05-09
CN111433742B (zh) 2023-08-29
JP2021511565A (ja) 2021-05-06
TWI818939B (zh) 2023-10-21
US11327903B2 (en) 2022-05-10
KR20200107997A (ko) 2020-09-16
GB201800970D0 (en) 2018-03-07
WO2019141960A1 (en) 2019-07-25
CN111433742A (zh) 2020-07-17
IL275309A (en) 2020-07-30
GB2570326A (en) 2019-07-24
US20200233816A1 (en) 2020-07-23
EP3743805A1 (en) 2020-12-02
EP3743805B1 (en) 2021-12-08
IL275309B (en) 2022-07-01

Similar Documents

Publication Publication Date Title
US11762566B2 (en) Programmable mapping of guard tag storage locations
KR101310412B1 (ko) 프레임 관리를 이용한 동적 주소 변환 방법
US11138128B2 (en) Controlling guard tag checking in memory accesses
TW201945940A (zh) 隨機標籤設定指令
TWI812798B (zh) 用於控制記憶體存取的裝置及方法
TWI818939B (zh) 具有多個保護標籤設定指令的設備、方法、電腦程式及儲存媒體
TWI787451B (zh) 用於資料處理的方法、設備、電腦程式、與儲存器媒體
JP7369720B2 (ja) アクションをトリガするための装置及び方法
TWI801622B (zh) 用於處理保護標籤損失的裝置、方法、電腦程式、與儲存媒體