TWI786111B - 用於控制指令集中改變的設備、方法、虛擬機電腦程式與電腦可讀取儲存媒體 - Google Patents

用於控制指令集中改變的設備、方法、虛擬機電腦程式與電腦可讀取儲存媒體 Download PDF

Info

Publication number
TWI786111B
TWI786111B TW107115419A TW107115419A TWI786111B TW I786111 B TWI786111 B TW I786111B TW 107115419 A TW107115419 A TW 107115419A TW 107115419 A TW107115419 A TW 107115419A TW I786111 B TWI786111 B TW I786111B
Authority
TW
Taiwan
Prior art keywords
capability
bounded pointer
instruction set
identified
pointer
Prior art date
Application number
TW107115419A
Other languages
English (en)
Other versions
TW201905705A (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 TW201905705A publication Critical patent/TW201905705A/zh
Application granted granted Critical
Publication of TWI786111B publication Critical patent/TWI786111B/zh

Links

Images

Classifications

    • 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/30181Instruction operation extension or modification
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register

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 Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Processing Or Creating Images (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Abstract

本文提供了一種用於控制指令集改變的設備與方法。該設備具有用於執行指令集的指令的處理電路系統,該處理電路系統經佈置以在能力域中操作,該能力域包含用以限制由該處理電路系統在執行指令時執行的操作的能力。程式計數器能力儲存元件用於儲存由處理電路系統使用以判定程式計數器值的程式計數器能力。處理電路系統經佈置以採用基於能力的機制來改變指令集。特定而言,回應於執行用於將所識別的能力載入程式計數器能力儲存元件中的至少一種類型的指令,該處理電路系統經佈置以引動基於能力的機制,以便對所識別的能力執行能力檢查操作,並且若通過該能力檢查操作,則致使指令集由來自所識別的能力的指令集識別符欄位來識別。此提供了允許改變指令集的受控機制,由此減輕無意或惡意嘗試改變指令集的風險。

Description

用於控制指令集中改變的設備、方法、虛擬機電腦程式與電 腦可讀取儲存媒體
本技術係關於資料處理領域。
基於能力之架構越來越受到關注,其中某些能力針對給定過程定義,且若嘗試進行定義能力之外的操作,則可能觸發錯誤。該等能力可採取各種形式,但一種類型之能力係有界指針(亦可被稱為「胖指針」)。
當設備的處理電路系統經佈置以執行一系列指令時,能力可用以限制由處理電路系統在執行彼等指令時執行的操作。例如,藉由此類方法,可能藉由確保記憶體存取關於與某些能力相關的範圍和權限資訊而受限來有效監視由處理電路系統進行的記憶體存取。此類方法可用以不僅限制在記憶體中存取的資料,亦用以限制可擷取指令以用於執行的位址範圍。
一些處理器可能能夠執行來自不同指令集的指令,並且由此可維持控制資訊以識別當前指令集,其中在決定切換操作以執行不同指令集時改變控制資訊。
然而,在基於能力的架構內,改變指令集的能力可潛在地破壞可經由使用能力而獲得的一些安全性益處。特定而言,改變指令集改變了從記憶體提取的指令資料的詮釋,並因此可改變在記憶體中保存的唯讀代碼的詮釋。將期望減輕無意或惡意嘗試改變基於能力的系統內的指令集的可能性。
在第一示例配置中,提供了一種設備,包含:處理電路系統,用以執行指令集的指令,該處理電路系統經佈置以在能力域中操作,該能力域包含用以限制由處理電路系統在執行該等指令時執行的操作的能力;以及程式計數器能力儲存元件,用以儲存由處理電路系統使用以判定程式計數器值的程式計數器能力;該處理電路系統經佈置以採用基於能力的機制來改變指令集,回應於執行用以將所識別的能力載入程式計數器能力儲存元件中的至少一種類型的指令,該處理電路系統經佈置以引動基於能力的機制以便對所識別的能力執行能力檢查操作,並且若通過該能力檢查操作,則致使指令集由來自所識別的能力的指令集識別符欄位來識別。
在另一示例配置中,提供了一種控制設備內的指令集改變的方法,該設備具有用以執行當前指令集的指令的處理電路系統,該處理電路系統經佈置以在能力域中操作,該能力域包含用以限制由該處理電路系統在執行該等指令時執行的操作的能力,該方法包含:在程式計數器 能力儲存元件中儲存由處理電路系統使用以判定程式計數器值的程式計數器能力;佈置該處理電路系統以回應於執行用以將所識別的能力載入程式計數器能力儲存元件中的至少一種類型的指令,引動基於能力的機制以控制當前指令集的改變,該基於能力的機制包含:對所識別的能力執行能力檢查操作;以及若通過該能力檢查操作,則致使指令集由來自所識別的能力的指令集識別符欄位來識別。
在另一示例配置中,提供了一種設備,包含:處理構件,用於執行指令集的指令,該處理構件用於在能力域中操作,該能力域包含用以限制由處理構件在執行該等指令時執行的操作;以及程式計數器能力儲存元件構件,用以儲存由處理構件使用以判定程式計數器值的程式計數器能力;該處理構件採用基於能力的機制來改變指令集,回應於執行用以將所識別的能力載入程式計數器能力儲存元件中的至少一種類型的指令,該處理構件用於引動基於能力的機制以便對所識別的能力執行能力檢查操作,並且若通過該能力檢查操作,則致使指令集由來自所識別的能力的指令集識別符欄位來識別。
在又一示例配置中,提供了一種虛擬機電腦程式,該虛擬機電腦程式包含程式指令,該等程式指令用以控制主資料處理設備以提供對應於上文所論述的第一示例配置的設備的指令執行環境。在一個實施例中,可提供一種電腦可讀取儲存媒體以用於儲存虛擬機電腦程式。
2:資料處理設備
4:處理管線
6:提取階段
8:解碼階段
10:發出階段
12:執行階段
14:回寫階段
20:L1指令快取
22:分支預測器
24:分支目標位址快取
30:算術/邏輯單元
32:浮點單元
34:載入/儲存單元
36:L1資料快取
40:暫存器
44:L2快取
50:記憶體
52:轉換後備緩衝器
60:有界指針暫存器
62:指針
64:範圍資訊
66:限制資訊
68:下界位址
69:上界位址
70:控制/狀態暫存器
72:處理狀態
74:當前處理狀態
78:能力異常鏈接暫存器
79:能力控制儲存元件
80:程式計數器能力暫存器
82:欄位
84:範圍資訊
86:限制資訊
90:預設資料能力暫存器
92:範圍資訊
94:限制資料
100:能力暫存器
102:指針
104:範圍資訊
106:限制資訊
108:標籤位元
110:記憶體位址空間
115:資料區塊
120:標籤欄位
150:能力
152:標籤位元
154:權限欄位
156:相關範圍
158:指針值
160:欄位
200:步驟
205:步驟
210:步驟
215:步驟
220:步驟
250:步驟
255:步驟
260:步驟
265:步驟
270:步驟
275:步驟
280:步驟
285:步驟
290:步驟
292:步驟
294:步驟
300:步驟
305:步驟
310:步驟
315:步驟
320:步驟
325:步驟
350:步驟
355:步驟
360:步驟
365:步驟
370:步驟
400:所識別的能力
405:指令集識別符欄位
410:程式計數器能力
415:欄位
420:所識別的能力
425:指令集識別符欄位
430:指令集控制暫存器
435:程式計數器能力
440:欄位
450:步驟
455:步驟
460:步驟
465:步驟
500:應用程式
510:虛擬機程式
520:主機作業系統
530:主處理機
本技術將僅以舉例方式參考在附圖中所圖示之本技術的實施例進一步描述,在附圖中:第1圖係根據一個實施例的設備的方塊圖;第2圖圖示了若嘗試設定或存取一組有界指針儲存元件內的指針值則可能觸發錯誤的指令類型的實例,其中彼指針值用於指定在由相關範圍資訊所指示的範圍之外的位址;第3圖圖示了根據一個實施例的與有界指針相關聯的標籤位元的使用;第4圖示意性圖示了根據一個實施例的指令集識別符欄位可如何結合在能力內;第5圖係根據一個實施例的圖示經執行以用以實施基於能力的機制來控制指令集改變的步驟的流程圖;第6圖係根據一個實施例提供在將能力載入程式計數器能力儲存元件中之前執行能力檢查的情況下用於控制指令集改變的基於能力的機制的更多細節的流程圖;第7圖係根據一個實施例提供在將能力載入程式計數器能力儲存元件中之後執行能力檢查的情況下用於控制指令集改變的基於能力的機制的更多細節的流程圖; 第8圖係根據一個實施例的圖示在能力檢查操作期間執行的步驟的流程圖;第9A圖及第9B圖圖示了用於當執行分支指令以將能力載入程式計數器能力儲存元件中時使用指令集識別符欄位資訊的兩種替代方法;第10圖係圖示在一些實施例中亦可用於允許指令集改變的基於異常的機制的流程圖;以及第11圖圖示了可使用的虛擬機實施方式。
在參考附圖論述實施例之前,提供了實施例的以下描述。
如先前提及,基於能力之架構越來越受關注,其中某些能力針對給定過程定義,且若嘗試進行定義能力之外的操作,則可能觸發錯誤。可定義各種類型的能力,但一種類型之能力係有界指針(其在一個實施例中結合指針值與相關範圍及權限資訊)。
採用此基於能力的架構的設備將通常具有儲存元件(本文亦稱為有界指針儲存元件,或更一般為能力儲存元件),該等儲存元件用於儲存能力。儲存元件可係暫存器(本文亦稱為有界指針暫存器或能力暫存器)及/或可係在通用記憶體中之記憶體位置,例如在堆疊記憶體上之位置。某些指令可用於引用此等儲存元件以便存取所需能力,並取決於彼能力而執行操作。例如,考慮到有界指針,執行此類指令可致使該有界指針被擷取,並且致使 有界指針中之指針值隨後被用以導出在執行該指令期間所需之記憶體中的位址。指針值可直接用於識別記憶體位址,或可用於導出該記憶體位址,例如,藉由向指針值增加偏移。若記憶體位址係在由範圍資訊指定之範圍內且滿足在權限資訊中指定之任何權限,則將允許進行該操作。
因此,當使用有界指針時,例如,指針值本身可指向或用於判定待存取的資料值的位址或待提取以用於執行的指令。然而,範圍及權限資訊可隨後被引用以例如確保所存取的任何位址係在可允許範圍內,並且出於所允許之目的而存取。此可用來例如確保根據指針判定之位址保留在特定邊界內以維持行為之安全性或功能正確性。藉由此方法,可能有效監視由處理電路系統進行的記憶體存取。
然而,在支援多個指令集之使用的系統中,則改變指令集的能力可潛在地規避經由使用該等能力而提供的一些保護。特定而言,一旦已改變指令集的指示,從記憶體提取的指令資料的詮釋將為不同的。因此,儘管基於能力的架構可限制可提取指令的位址範圍,改變指令集的無意或惡意嘗試可致使處理電路系統如由基於能力的架構的限制所允許地合理提取第一指令集的指令,但致使處理電路系統隨後試圖根據第二指令集詮釋所提取的指令,從而潛在地實現處理器的不期望的操作行為。
本文所述的實施例試圖提供一種用於改變指令集的受控機制,以試圖減少無意或惡意嘗試改變指令集的能力。
在一個實施例中,設備具有用於執行指令集的指令的處理電路系統,該處理電路系統經佈置以在能力域中操作,該能力域包含用以限制由處理電路系統在執行指令時執行的操作的能力。該能力域包含當前常駐在由處理電路系統可存取的能力儲存元件中的能力以及經由保存在彼等能力儲存元件中的能力可存取的任何其他能力形成的一組能力。能力儲存元件之一者係程式計數器能力儲存元件,該程式計數器能力儲存元件用於儲存由處理電路系統使用以判定程式計數器值的程式計數器能力。程式計數器值隨後用於識別指令所提取自的記憶體中的位址。
在所述的實施例中,處理電路系統可經佈置以採用基於能力的機制來改變指令集。特定而言,回應於執行用於將所識別的能力載入程式計數器能力儲存元件中的至少一種類型的指令,該處理電路系統經佈置以引動基於能力的機制,以便對所識別的能力執行能力檢查操作。作為執行能力檢查操作的結果,若通過能力檢查操作,則此致使指令集由來自所識別的能力的指令集識別符欄位來識別。
由於採用此基於能力的機制,當處理電路系統試圖藉由執行指令以將所識別的能力載入程式計數器能力儲存元件中而更新程式計數器能力時,必須在允許所識 別的能力中的指令集識別符欄位識別指令集之前通過能力檢查操作。當通過能力檢查操作時,此機制因此允許改變指令集,但若未通過能力檢查操作,則將阻止此指令集的更新,且替代地,將採取替代動作,例如藉由採取異常。
能力檢查操作的時序可根據實施例而變化。例如,在一個實施例中,處理電路系統可經佈置以在將彼識別的能力載入程式計數器能力儲存元件之前對所識別的能力執行能力檢查操作。作為此方法的結果,在決定是否允許將所識別的能力載入程式計數器能力儲存元件中之前,通過還是未通過能力檢查操作是已知的。
然而,在替代實施例中,處理電路系統可經佈置以在將彼識別的能力載入程式計數器能力儲存元件中之後對所識別的能力執行能力檢查操作。此可避免執行將所識別的能力載入程式計數器能力儲存元件中的指令的任何延遲,同時仍確保在執行能力檢查操作之前不依賴彼更新的程式計數器能力。例如,一旦執行下一個指令,此就可觸發能力檢查操作的執行,因此避免在判定是否通過能力檢查操作之前使用彼更新的程式計數器能力的任何細節,並且因此特定而言,如可由來自所識別的能力的指令集識別符欄位所指示,避免根據改變的指令集來詮釋任何提取的指令,除非判定已經通過能力檢查操作。
存在處理電路系統可經佈置以當偵測到能力檢查操作未通過時採取的數個動作,但在一個實施例中處理電路系統經佈置以發生異常。在一個實施例中,此可例 如致使軟體異常處置器記錄關於能力檢查操作未通過的某些資訊,並且隨後將控制轉移至適當錯誤處置常式以處理所嘗試的指令集改變。儘管錯誤處置常式可採取各種步驟,但是在一個實施例中可選擇終止試圖引動指令集改變的應用程式,因為如先前在一個實施例中所提及,高度期望嚴格控制改變指令集的能力,以減輕用於試圖規避藉由使用能力而提供的保護的指令集改變的可能性。
儘管在一個實施例中,異常可回應於偵測到能力檢查操作未通過而立即發生,但是在一個替代實施例中旗標可經設定以識別能力檢查操作的未通過,其中旗標的設定致使異常在執行下一個指令時發生。此允許某些事件在偵測到未通過條件並設定旗標的時間與發生異常的時間之間發生。例如,其可允許發生較高優先級的異常/中斷,該異常/中斷保存旗標資訊及程式計數器能力(program counter capability;PCC)資訊,並隨後清除旗標並將不同的程式計數器能力載入程式計數器能力儲存元件中。在從較高優先級的異常/中斷返回時,旗標及PCC資訊將隨後恢復,且當要執行下一個指令時,設定旗標的存在將致使異常發生。
用於將所識別的能力載入程式計數器能力儲存元件中的至少一種類型的指令可採取各種形式,但在一個實施例中指令係分支指令,使得處理電路系統經佈置以藉由執行指定所識別的能力的分支指令來引動基於能力的機制。
分支指令可採取各種形式。例如,其可為經由源運算元明確地識別所識別的能力的分支指令。例如,設備將通常包含一或多個能力儲存元件,該等能力儲存元件是處理電路系統可存取的,並且經佈置以儲存用於限制由處理電路系統在執行指令時執行的操作的能力。分支指令可隨後將彼等能力儲存元件的一者指定為源運算元,其中所指定的能力儲存元件隨後含有所識別的能力。
在其他實例中,分支指令可隱含地識別所識別的能力。例如,分支指令可採取返回指令的形式,該返回指令經執行以將形成所識別的能力的返回位址能力載入程式計數器能力儲存元件中。通常,返回指令不需要明確地識別返回位址能力,因為將存在含有返回位址能力的預設儲存元件,在一個實例中此被稱為能力異常鏈接暫存器(capability exception link register;CELR)。
能力檢查操作可採取各種形式,且因此以舉例之方式,可在執行能力檢查操作期間引用所識別的能力內的各種不同的欄位,以決定通過還是未通過能力檢查操作。例如,在一個實施例中,處理電路系統可經佈置以當執行能力檢查操作時檢查與所識別的能力相關的有效旗標,以便防止通過能力檢查操作,除非所識別的能力為有效能力。因此,無論處理電路系統何時試圖使用不表示有效能力的資訊來更新程式計數器能力儲存元件內容,此將致使不通過能力檢查操作。
替代或另外地,能力檢查操作可經佈置以引用在所識別的能力內提供的一或多個權限旗標。特定而言,所識別的能力將通常包含一或多個權限旗標,該等權限旗標用以識別與所識別的能力相關的一或多個權限的狀態。例如,權限可用於將能力的使用限制至處理電路系統的某些類型的操作、某些模式的操作等等。不同權限亦可與所存取的不同類型的資訊相關,使得例如不同的寫入及讀取權限可根據所存取之資訊本身為能力還是正常資料值而設定。
在此等實施例中,處理電路系統可經佈置以當執行能力檢查操作時檢查一或多個權限旗標,以便防止通過能力檢查操作,除非至少一個權限處於預定的狀態。
藉由此類方法,可能將改變指令集的能力限制為所識別的能力具有處於特定狀態下的至少一種權限的情況。作為一個實例,至少一種權限可包含可執行權限,根據防止使用所識別的能力從記憶體提取指令的任何覆寫控制資訊,該可執行權限用於識別當用作程式計數器能力時是否允許所識別的能力用於從記憶體提取指令,並且預定狀態為設定狀態,該設定狀態指示允許所識別的能力用於從記憶體提取指令。在一個實施例中,若可執行權限處於清除狀態,則此將識別當形成程式計數器能力時防止該能力用於從記憶體提取指令。因此,此將識別能力不適於用作程式計數器能力,並因此若指令正試圖將彼能力載入程式計數器能力儲存元件中,則能力檢查操作可在一個 實施例中不通過,從而防止彼識別的能力內的指令集識別符欄位的內容用於識別指令集。
作為可如何檢查權限旗標的另一實例,至少權限可包含可修改權限,該可修改權限用於識別所識別的能力是否可由一或多個能力修改指令來修改,且預定狀態為清除狀態,該清除狀態指示能力不可由該一或多個能力修改指令來修改。當所識別的能力經標記為不可修改時,此可提供額外保證:在建立能力(例如,藉由在特定特權級別操作的過程)與隨後試圖將彼能力載入程式計數器能力中的過程(可能不處於彼特權級別)之間的時期,指令集識別符欄位的內容尚未被篡改。
存在在通過能力檢查操作的情況下來自所識別的能力的指令集識別符欄位的內容可用於識別該指令集的數種方式。在一個實施例中,當通過能力檢查操作時,處理電路系統經佈置以致使所識別的能力(包括指令集識別符欄位)用於形成程式計數器能力儲存元件中的新的程式計數器能力。此外,在新的程式計數器能力中的指令集識別符欄位的值用於判定該指令集。因此,在此等實施例中,當前指令集由程式計數器能力內的相關指令集識別符欄位的內容來識別。
然而,在替代實施例中,當通過能力檢查操作時,處理電路系統經佈置以致使所識別的能力用於形成程式計數器能力儲存元件內的新的程式計數器能力,但其中新的程式計數器能力中的欄位對應於設定為預設值的指 令集識別符欄位。處理電路系統進一步致使將所識別的能力的指令集識別符欄位內的值寫入指令集控制儲存元件中,且在指令集控制儲存元件內的值用於判定該指令集。因此,在此實施例中,隨著將所識別的能力載入程式計數器能力儲存元件中,將指令集識別符欄位的內容提取並寫入指令集控制儲存元件中。因此,在此等實施例中,指令集控制儲存元件的內容用於判定當前指令集。
指令集控制儲存元件可採取各種形式,但在一個實施例中由當前處理器狀態暫存器(current processor state register;CPSR)內的欄位來提供。
在一個實施例中,用於改變指令集的先前描述的基於能力的機制可為經提供以允許改變指令集的唯一機制。然而,在替代實施例中,處理電路系統可進一步提供基於異常的機制以改變指令集,在引動基於異常的機制時,處理電路系統經佈置以將異常採取為預定狀態,其中隨後執行可信軟體以建立返回狀態,該返回狀態識別在從異常返回時使用的指令集。因此,藉由此方法,可能使用可信異常/異常返回機制以觸發使用可信軟體來修改指令集。
儘管一或多個進一步的受控機制亦可提供以用於改變指令集,在一個特定實施例中,處理電路系統可受到限制以僅允許藉由使用基於能力的機制或基於異常的機制來改變指令集。藉由嚴格限制可改變指令集的方式,此提供了無意或惡意嘗試試圖改變指令集的增加的彈 性,該彈性可潛在地規避經由使用能力而將一或多個安全措施放置就位。
現將參考圖式描述特定實施例。
第1圖示意性地圖示了包含用於處理指令之處理管線4的資料處理設備2之實例。在此實例中,處理管線4包括數個管線階段,該等管線階段包括提取階段6、解碼階段8、發出階段10、執行階段12、及回寫階段14,但應瞭解可提供其他類型的階段或各階段之組合。例如,用於執行暫存器重命名之重命名階段可包括在一些實施例中。待處理之指令在各階段之間移動,並且當指令於一個階段待定時,另一指令可於管線4之不同階段待定。
提取階段6從1階(L1)指令快取20提取指令。提取階段6通常可順序地從連續指令位址提取指令。然而,提取階段亦可具有用於預測分支指令之結果的分支預測器22,且若預測採取分支,則提取階段6可從(非順序)分支目標位址提取指令,或若預測不採取分支,則提取階段6從下一順序位址提取指令。分支預測器22可包括一或更多個用於儲存資訊之分支歷史表,以用於預測是否能採取某些分支。例如,分支歷史表可包括用於追蹤先前執行之分支的實際結果或表示對分支進行之預測的置信度之計數器。分支預測器22亦可包括用於快取分支指令之先前目標位址的分支目標位址快取(branch target address cache;BTAC)24,以使得可在後續遇到相同分支指令時預測此等先前目標位址。
提取之指令經傳遞到解碼該等指令以產生經解碼之指令的解碼階段8。經解碼之指令可包含用於控制執行階段12以執行適當處理操作的控制資訊。針對從快取20提取之一些更複雜的指令,解碼階段8可將彼等指令映射至多個經解碼之指令,此映射可已知為微操作(μops或uops)。因此,在從L1指令快取20提取之指令與由管線之隨後階段看到之指令之間可能不存在一對一關係。一般而言,在本申請案中提及「指令」應詮釋為包括微操作。
將經解碼之指令傳遞到發出階段10,發出階段10判定執行指令所需之運算元是否可用,並且當運算元係可用時,發佈用於執行的指令。一些實施例可支援有序處理,因此指令經發佈以用於按與指令從L1指令快取20提取的程式順序對應之順序執行。其他實施例可支援無序執行,使得可將指令以與程式順序不同之順序發出至執行階段12。無序處理可用來改良效能,因為儘管當等待運算元時停止較早指令,但是可以按照程式順序首先執行運算元係可用之稍後指令。
發出階段10將指令發出至執行階段12,其中執行該等指令以進行各種資料處理操作。例如,執行階段可包括數個執行單元30、32、34,包括對整數值進行算術或邏輯運算的算術/邏輯單元(arithmetic/logic unit;ALU)30、對以浮點形式表示之值進行操作的浮點(floating-point;FP)單元32、及用於進行將資料值從1階(L1)資料快取36載入暫存器40的載入操作或將資料值從暫存器40儲存至L1資料快取36的儲存操作的載入/儲存單元34。應瞭解此等僅係可提供之執行單元類型之一些實例,且亦可提供眾多其他種類。為了進行處理操作,執行階段12可從一組暫存器40讀取資料值。所執行指令之結果可隨後由回寫階段14回寫至暫存器40。
L1指令快取20及L1資料快取36可係包括多階快取之快取階層之部分。例如,亦可提供2階(L2)快取44並且視情況可提供其他階之快取。在此實例中,L2快取44在L1指令快取20與L1資料快取36之間共享,但其他實例可具有分開之L2指令及資料快取。當待提取之指令不在L1指令快取20中時,則其可從L2快取44提取,並且類似地若該指令不在L2快取44中,則其可從主記憶體50提取。類似地,回應於載入指令,若資料不在L1資料快取36中,則其可從L2快取44提取,並且若需要從記憶體50提取。任何已知方案可用來管理快取階層。
管線4所使用以代表程式指令及資料值的位址可係虛擬位址,但至少主記憶體50,且視情況亦快取階層之至少一些階可經實體定址。因此,可提供轉換旁視緩衝器52(translation lookaside buffer;TLB),以用於將管線4所使用之虛擬位址轉換為用於存取快取或記憶體之實體位址。例如,TLB 52可包括數個條目, 每個條目指定虛擬位址空間之對應頁之虛擬頁位址及對應實體頁位址,虛擬頁位址應映射至對應實體頁位址以將在對應頁中之虛擬位址轉換為實體位址。例如,虛擬及實體頁位址可對應於對應虛擬及實體位址之最高有效部分,而當將虛擬位址映射至實體位址時剩餘的最低有效部分保持不變。除位址轉換資訊之外,每個TLB條目亦可包括一些指定存取權限之資訊,諸如指示在管線4之某些模式中位址之某些頁是否可存取。在一些實施例中,TLB條目亦可定義位址之對應頁之其他性質,諸如定義回應於讀取或寫入操作更新快取階層之哪些階的快取策略資訊(例如,該快取應以回寫還是寫通模式操作),或定義與由管線4發佈資料存取之順序相比,對在對應頁中之位址的資料存取是否可由記憶體系統重定序的資訊。
儘管第1圖圖示了單階TLB 52,但是應瞭解可提供TLB階層以使得1階(L1)TLB 52可包括用於轉換在數個最近存取之頁中的位址之TLB條目並且可提供2階(L2)TLB以用於儲存大量頁之條目。當在L1 TLB中不存在所需條目時,則其可從L2 TLB提取,或從階層中之進一步TLB提取。若待存取頁面所需之條目不在TLB的任一者中,則可執行頁表漫遊以在記憶體50中存取頁表。任何已知TLB管理方案可用於本技術中。
此外,應瞭解一些系統可支援多階位址轉換,使得例如第一TLB(或TLB階層)可用於將虛擬位址轉換為中間位址,及使用一或更多個進一步TLB之第二等 級位址轉換可隨後將中間位址轉換為用於存取快取或記憶體之實體位址。此可用來支援虛擬化,其中例如第一階之位址轉換可由作業系統管理且第二階之位址轉換可由超管理器管理。
如第1圖所示,設備2可具有一組有界指針暫存器60。儘管該組有界指針暫存器在第1圖中圖示為與該組通用資料暫存器40實體分開,但是在一個實施例中,相同實體儲存可用於提供通用資料暫存器及有界指針暫存器二者。
每個有界指針暫存器60包括可用於判定待存取之資料值之位址的指針值62,及當使用對應指針62時指定容許位址範圍的範圍資訊64。有界指針暫存器60亦可包括可定義對指針之使用的一或更多個限制/權限的限制資訊66(本文亦稱為權限資訊)。例如,限制66可用於限制可使用指針62之指令的類型或可使用該指針之管線4的模式。因此,可認為範圍資訊64及限制資訊66定義允許在其中使用指針62的能力。當嘗試使用在定義能力外之指針62時,可觸發錯誤。範圍資訊64可用來例如確保指針保留在某些已知邊界內並且不雜散至記憶體位址空間中可能含有敏感或安全資訊之其他區域。在一個實施例中,在相同實體儲存用於通用資料暫存器及有界指針暫存器二者的情況下,則在一個實施例中,指針值62可例如儲存在與用於對應的通用暫存器者相同之儲存位置中。
第2圖圖示了指令類型之實例,該等指令類型之可允許範圍用於防止對資料或指令的未授權存取。如第2圖之頂部所示,特定有界指針暫存器PR1包括給定指針值62及範圍資訊64,在此實例中該特定有界指針暫存器PR1是使用定義可允許範圍下邊界之下邊界位址68及定義可允許範圍上邊界之上邊界位址69指定。例如,設定邊界68、69以定義位址範圍80000至81000。當某些指令引用有界指針暫存器PR1時,可觸發錯誤,並且由指針62判定之位址超出此範圍。
例如,如第2圖之部分A所示,在一些系統中,若嘗試將指針暫存器60中之指針62之值設定為位於由範圍資訊64指定之範圍之外的值,則可觸發錯誤(此處假設該指針直接指定位址)。此避免了指針62採取超出指定範圍之任何值,使得可確保使用該指針之任何存取安全地位於可允許範圍中。或者,如第2圖之部分B所示,當彼位址位於指定範圍之外時,當指令嘗試存取由指針62之位址識別之位置時,可觸發錯誤。因此,仍可容許將指針62設定為超出指定範圍之值,但若位址位於可允許範圍之外,則一旦嘗試於指針位址(或源自該指針之位址)進行資料存取,則可觸發錯誤。其他系統可回應於在第2圖之部分A及B中圖示之指令類型兩者而觸發錯誤。
範圍資訊64可以不同方式設定。例如,安全代碼或作業系統或超管理器可指定給定指針的可允許範圍。例如,指令集架構可包括用於設定或修改給定指針 62的範圍資訊64的數個指令,並且可將此等指令之執行限制至某些軟體或處理器4之某些模式或異常等級。可使用設定或修改範圍資訊64之任何已知技術。
除當執行引用指針的某些指令時可於執行狀態12下使用之該組有界指針儲存元件60之外,程式計數器能力(program counter capability;PCC)暫存器80亦可用於當指令正在從1階指令快取20提取時於提取階段6提供類似功能性。特定而言,程式計數器指針可儲存在欄位82中,其中PCC 80亦提供類似於利用在該組有界指針儲存元件60中之指針之每一者提供的範圍及限制資訊的範圍資訊84及任何適當的限制資訊86。
此外,在一個實施例中,非有界指針亦可在通用暫存器40中指定且在執行記憶體存取時使用。為了限制可使用此等非有界指針存取的記憶體位址,可提供預設資料能力(Default Data Capability;DDC)暫存器90,該預設資料能力暫存器指定了類似於包括在能力暫存器的任一者內的範圍及限制資訊的範圍資訊92及任何限制資料94二者。隨後,當執行引用通用暫存器40中的非有界指針識別記憶體位址的記憶體存取指令時,仍可基於從彼非有界指針導出的任何位址執行類似於關於有界指針執行的邊界檢查操作的邊界檢查操作,但在此實例中關於在DDC暫存器90中保存的範圍及限制資訊。藉由此類方法,例如對於能力感知代碼而言,可能希望在現存軟體庫中採用一些能力不感知代碼以設定DDC暫存器90, 以便對當執行彼能力不感知代碼時如何使用從通用暫存器40存取的指針進行限制。特定而言,範圍資訊可用於限制當執行此能力不感知代碼時可存取的位址範圍。
由有界指針暫存器內的有界指針識別的記憶體位址的任何特定範圍可含有資料、指令及/或其他能力(亦即,其他有界指針)。因此,應瞭解在任一時間點處理電路系統存取記憶體的能力由一組能力定義,該組能力包含在有界指針暫存器中識別的能力及可經由在彼等有界指針暫存器中保存的能力存取的任何其他能力,且此組能力在本文中將被稱為能力域。
在PPC暫存器80或DDC暫存器90中指定的範圍資訊及任何相關限制可以各種方式設定。然而,在一個實施例中,彼資訊使用在當前能力域中可用於處理電路系統的有界指針的一或多者來判定,使得不可使用基於PCC或DDC的邊界檢查來存取記憶體位址,該等邊界檢查常駐在針對當前能力域識別的記憶體位址範圍之外。
第3圖示意性地圖示了如何與單獨資料區塊相關聯地使用標籤位元來識別彼等資料區塊是表示能力(亦即,有界指針及相關限制資訊)還是表示正常資料。特定而言,記憶體位址空間110將儲存一系列資料區塊115,該等資料區塊通常將具有指定之大小。僅出於說明之緣故,在此實例中假設每個資料區塊包含128個位元。與每個資料區塊115相關聯,提供了標籤欄位120,標籤欄位120在一個實例中係被稱為標籤位元之單個位元欄 位,標籤欄位120經設定以識別相關資料區塊表示能力並經清除以指示相關資料區塊表示正常資料,並因此不可被處理為能力。應瞭解,與設定或清除狀態相關之實際值可取決於實施例而變化,但僅以說明之方式,在一個實施例中,若標籤位元具有值1,則其指示相關資料區塊係能力,且若其具有值0,則其指示相關資料區塊含有正常資料。
當將能力載入有界指針暫存器60(本文亦稱為能力暫存器)之一(諸如第3圖所示之能力暫存器100)中時,則標籤位元隨著能力資訊移動。由此,當將能力載入能力暫存器100中時,將指針102、範圍資訊104及限制資訊106(後文稱為權限資訊)載入能力暫存器中。此外,與彼能力暫存器相關聯,或作為其中之特定位元欄位,將設定標籤位元108以識別該等內容表示能力。類似地,當將能力儲存回到記憶體時,將與儲存該能力的資料區塊相關聯地設定相關標籤位元120。藉由此方法,可能區分能力與正常資料,並因此確保正常資料無法用作能力。
在一個實施例中,設備可經佈置以使得其可於不同異常等級操作,其中每個異常等級具有不同的軟體執行特權。另外,異常機制可用於在複數個異常等級之間的轉換。然而,在一個實施例中,並非所有的異常均將致使異常等級改變。
如第1圖所示,設備10存取至各種控制/狀態暫存器70,其儲存在其操作期間由處理電路系統引用的各種控制及狀態資訊,控制/狀態暫存器70包括在處置異常期間使用的各種暫存器。
如第1圖所示,當前處理狀態74維持在控制/狀態暫存器70中,以俘獲關於處理器之當前操作的各種執行狀態資訊。儘管圖示為單個塊74,當前處理狀態將不必皆儲存在單個暫存器內,但可儲存在可用控制/狀態暫存器70內的數個控制及狀態暫存器內。
在操作期間,異常可由各種不同的機制觸發,例如中斷、系統呼叫、故障等等。根據一個實施例,當採取異常時,觸發異常條目機制,且在此處理期間,將當前處理狀態74俘獲為保存的處理狀態72。再者,保存的處理狀態72可儲存在單個暫存器內或多個暫存器內。異常處置操作隨後由處理電路系統執行以處理異常。當處理電路系統隨後從異常返回時,保存的處理狀態將恢復至當前處理狀態,從而允許處理電路系統繼續在採取異常之前執行的操作。
為了賦能針對多個異常等級維持的處理電路系統的執行狀態,分開的保存之處理狀態暫存器(saved process state register;SPSR)72及當前處理狀態暫存器(current process state register;CPSR)74可針對多個異常等級維持(若期望)。
在異常條目上,程式計數器能力暫存器80可使用儲存在能力控制儲存元件79中的異常條目位址能力資訊來更新。特定而言,暫存器79將儲存關於待在異常條目上使用的適當位址的資訊,以及亦儲存待與彼位址一起提供以形成待在PCC暫存器80內儲存的程式計數器能力的相關能力資訊。暫存器79中的異常條目位址資訊可採取各種形式,但在一個實施例中,暫存器79採取能力向量基址暫存器(capability vector base address register;CVBAR)的形式。此暫存器提供了用於異常條目的基址,且異常根據異常類型判定與此基址的偏移。因此,關於異常類型的資訊將用於識別適當位址以用於形成載入PCC暫存器80中的程式計數器能力,其中用於PCC暫存器的能力資訊的剩餘部分由CVBAR中的能力的對應部分形成。
如先前提及,在採取異常時,當前處理狀態74經俘獲為保存的處理狀態72。此外,儲存在PCC暫存器80內的當前程式計數器能力用於識別較佳的返回位址能力。較佳的返回位址將取決於異常類型,但將通常為程式計數器值,或以指令大小遞增的程式計數器值(例如,假設位元組大小的尋址遞增了4,及32位元的指令)。除了較佳的返回位址之外,來自當前程式計數器能力的剩餘能力資訊亦將複製為由PCC產生的返回位址能力。在一個實施例中,以此方式產生的返回位址能力將儲存在專用返回位址能力暫存器中,在一個特定實施例中,此為能力 異常鏈接暫存器(capability exception link register;CELR)78。在隨後從異常返回時,CELR暫存器78的內容將恢復至PCC暫存器80中,且此外,SPSR暫存器72的內容可恢復至CPSR暫存器74中以用於相關異常等級。
使用如上文所述的基於能力之系統可顯著增強系統行為的安全性及功能正確性。例如,經由使用此方法,可能有效監視由處理電路系統進行的記憶體存取,以控制從記憶體提取以用於執行的指令及當執行彼等指令時由處理器操縱的資料值二者。然而,如先前提及,一些系統允許執行來自多個指令集的指令,其中維持控制狀態以識別正使用的當前指令集,並且因此識別當解碼用於執行的指令時應如何詮釋從記憶體提取的指令資料。無意或惡意嘗試改變指令集可規避藉由使用能力而提供的一些保護,由於其可賦能在記憶體中保存的唯讀代碼的詮釋改變。本文所述的實施例提供了用於嚴格控制在此設備內可如何改變指令集的機制,目的在於減輕此等風險。
第4圖圖示了可如何利用額外欄位來補充能力,該額外欄位用作指令集識別符欄位。特定而言,假設此實例中的能力150為有界指針,因此具有指針值158以及分別地相關範圍156及權限欄位154。亦提供標籤位元152以指示相關資訊是否表示有效能力。在權限欄位154內編碼的權限可由在彼等欄位內提供的數個權限旗標的狀態來判定,使得權限旗標的值用於判定一或多個權限的 狀態。該等權限可採取各種形式,但在一個實施例中可至少包括識別是否允許相關能力在用作程式計數器能力時用於從記憶體提取指令的可執行權限以及用於識別相關能力是否可由一或多個能力修改指令來修改的可修改權限。在一個實施例中,權限可能需要與可影響權限的其他控制資訊結合來詮釋。因此,在一個實施例中,若權限處於清除狀態,則此指示彼權限關於能力而准予。然而,根據可影響彼權限的准予的任何覆寫控制資訊,若權限處於設定狀態,則此將在一個實施例中指示准予權限。
亦如第4圖所示,可提供欄位160以識別指令集。此欄位的大小將取決於所支援的指令集的數量,但以舉例之方式,若僅僅存在兩個支援的指令集,則單個位元欄位將為足夠的以賦能識別兩個指令集的每一者。
儘管指令集識別符欄位可為分開的專用欄位,在一個實施例中其可由指針值欄位的一或多個最低有效位元來形成。例如,歸因於對指針值的記憶體對準限制,可能未使用指針值的一或多個最低有效位元,且由此彼等未使用的位元可用於提供指令集識別符欄位。
在一個實施例中,儘管能力為通用能力暫存器60的一者內的通用能力,指令集識別符欄位值不具有相關性。然而,當將能力載入PCC暫存器80中以形成新的程式計數器能力時,可使用指令集識別符欄位資訊以識別指令集,一旦彼能力用作新的程式計數器能力,該指令集可應用。此因此提供了用於賦能改變指令集的簡單機制。
然而,為了確保使用此指令集識別符欄位來指定指令集有力克服誤用,則無論指令何時用於將所識別的能力載入PCC暫存器80中,在允許使用來自所識別的能力的指令集識別符欄位資訊改變指令集之前,引動基於能力的機制以關於所識別的能力執行能力檢查操作。
第5圖係提供在一個實施例中使用以控制指令集改變的基於能力的機制的一般概述的流程圖。在一個實施例中,當特定類型的指令試圖將所識別的能力載入程式計數器能力暫存器80中時,觸發基於能力的機制。特定而言,當分支指令用於彼目的時,可觸發基於能力的機制。由此,於步驟200,判定分支指令是否由處理器執行,其中彼分支指令指定一能力。分支指令可特別地識別該組能力暫存器60內的源能力暫存器,其中彼源能力暫存器含有待載入PCC暫存器80中的所識別的能力。然而,亦可於步驟200偵測到其他形式的分支指令。例如,用於在較早採取異常之後返回到一些先前代碼的返回指令亦可被認為係應於步驟200偵測的該類型的分支指令,由於其將再次致使利用所識別的能力更新PCC暫存器80內容。在返回指令的實例中,含有所識別能力的暫存器可能不需要明確地識別,由於其可從返回指令隱含。特定而言,在一個實施例中,返回指令將致使將CELR暫存器78的內容載入PCC暫存器80中。
在已識別將執行用於將所識別的能力載入程式計數器能力暫存器中的分支指令之後,過程進行至步驟 205,其中針對所識別的能力執行能力檢查操作。如後文將參考第6圖及第7圖所論述,能力檢查操作的執行的時序可根據實施例而變化。例如,該能力檢查操作可在更新PCC暫存器內容之前執行,或在已更新彼等內容之後執行。然而,在一個實施例中,不論採取何種方法,執行能力檢查,使得不取決於所更新的程式計數器能力及相關的指令集識別符資訊而採取動作,直至已經執行能力檢查,並且已經判定已通過能力檢查。
在於步驟205執行能力檢查操作之後,隨後於步驟210判定是否通過檢查操作。若通過,則過程進行至步驟215,其中允許新的有效程式計數器能力由所識別的能力形成,且另外,使用來自所識別的能力的指令集識別符欄位來判定指令集。如後文將參考第9A圖及第9B圖更詳細論述,指令集識別符欄位的內容可複製至程式計數器能力中,或替代地可在分開的控制暫存器中提取並儲存。
若於步驟210判定尚未通過能力檢查,則過程進行至步驟220,其中採取預定動作。預定動作可採取各種形式,但在一個實施例中可涉及在判定尚未通過能力檢查操作時直接採取異常。或者,採取異常可延遲,且替代地可由在適當的時候執行的下一個指令觸發。
第6圖係更詳細地圖示在將所識別的能力載入PCC暫存器80中之前執行能力檢查操作的實施例的流程圖。於步驟250,針對如常駐在源暫存器中的所識別的能力執行能力檢查操作。隨後於步驟255判定是否通過能 力檢查操作。若通過,則過程進行至步驟260,其中允許分支操作完成以更新PCC暫存器80的內容,並且致使來自所識別的能力的指令集識別符欄位隨後用於指示指令集。由此,若指令集識別符欄位中的資訊不同於在執行分支操作之前識別指令集的資訊,應瞭解藉由此機制將改變指令集。後續提取的指令將隨後根據新識別的指令集來解碼。
若於步驟255未通過測試,則在一個實施例中此可立即涉及於步驟270採取異常。然而,在替代實施例中,可能延遲採取異常達一段時期。由此,於步驟265,可能判定是否應延遲採取異常。若未採取,則於步驟270立即採取異常。
隨後,若延遲異常,則過程進行至步驟275,其中設定旗標以識別能力檢查操作的未通過狀態。存在可設定旗標的數種方式。例如,在控制暫存器中可存在專用控制欄位,該專用控制欄位經設定以識別能力檢查操作的未通過狀態。或者,在允許分支操作於步驟280完成時使用所識別的能力產生的程式計數器能力的一些性質可改變,使得更新的PCC將觸發異常,當進行任何嘗試以使用該異常時。作為特定實例,標籤位元可在如儲存在PCC暫存器內的更新的PCC中清除,從而指示PCC暫存器不儲存有效能力。
於步驟280允許分支操作完成,由於PCC內容將更新,且關於指令集的資訊將使用來自所識別的能力 的指令集識別符欄位來更新。於步驟285,判定是否執行下一個指令,並且若執行下一個指令,則過程進行至步驟290,其中判定是否設定旗標。假設設定旗標,則於步驟292採取異常,並且清除旗標。然而,若未設定旗標,則允許指令於步驟294執行。
藉由使用旗標機制,此允許某些事件在設定旗標的時間與採取異常的時間之間發生。例如,其可允許發生較高優先級的異常/中斷,該異常/中斷保存旗標資訊及程式計數器能力資訊,並且隨後清除旗標並將不同的程式計數器能力載入程式計數器能力暫存器80中。在從較高優先級的異常/中斷返回時,旗標及PCC資訊將隨後恢復,且當執行下一個指令時,設定旗標的存在將致使異常發生。
當於步驟270或於步驟292採取異常時,軟體異常處置器將控制轉移至適當錯誤處置常式以處理所嘗試的指令集改變。存在可採取錯誤處置常式的數個步驟。然而,在一個實施例中,由於採取異常已經歸因於以下事實而產生:已經進行嘗試以使用未通過能力檢查操作的能力改變指令集,可認為終止致使執行分支指令的應用是適當的。或者,異常處置常式可經佈置以執行一些額外檢查及/或清除操作,以確保允許指令集藉由完成分支操作而改變係安全的。
第7圖係圖示第6圖之替代方法的流程圖,其中在將所識別的能力載入PCC暫存器80中之後執行能力 檢查操作。由此,如於步驟300所示,允許完成分支操作,因此PCC暫存器內容將使用所識別的能力更新,並且此外,來自所識別的能力的指令集識別符欄位將用於指示指令集。
過程隨後進行至步驟305,其中識別下一個指令是否執行,並且當執行時,則過程進行至步驟310,其中針對以現常駐在PCC暫存器中的形式的所識別的能力執行能力檢查操作。若於步驟315認為已經通過能力檢查,則過程進行至步驟320,其中該過程允許由所識別的能力形成新的有效程式計數器能力,並且亦允許使用來自所識別的能力的指令集識別符欄位來判定指令集。然而,若於步驟315,判定未通過能力檢查操作,則過程進行至步驟325,其中採取異常。異常隨後以與先前針對第6圖之步驟270或292所論述者相同的方式來處置。
能力檢查操作可採取各種形式,但一個實施例由第8圖的流程圖圖示。於步驟350,判定所識別的能力是否有效。在一個實施例中,此可藉由查看標籤位元的值來判定。特定而言,若設定標籤位元,則認為所識別的能力為有效能力,而若清除標籤位元,則假設能力不係有效的。若判定所識別的能力不係有效的,則過程進行至步驟370,其中指示能力檢查尚未通過。
然而,假設發現所識別的能力為有效的,則在一個實施例中,可引用針對相關能力提供的一或多個權限 來執行一或多個額外檢查,該等權限的狀態引用保存在能力的權限欄位內的一或多個權限旗標來判定。
例如,在一個實施例中,於步驟355,判定與能力相關的可修改權限處於清除狀態。特定而言,權限旗標可用於編碼可修改權限,並且當可修改權限處於清除狀態時,此可用於指示相關能力不可由一或多個能力修改指令來修改。此可因此藉由在已將該能力標記為不可修改之後防止調節能力性質來提供針對彼特定能力的增強的安全性。例如,儘管處理電路系統將不能在正常操作中關於有界指針延伸該範圍或設定權限旗標,以便試圖增加由彼有界指針提供至處理電路系統的能力,若未將有界指針標記為不可修改,則處理電路系統可能採取步驟以與有界指針相關地減小範圍及/或清除權限旗標。然而,當將能力標記為不可修改時,處理電路系統將不可採取任何此等調整。
反之,若可修改權限處於設定狀態,則此指示若不存在防止此修改的覆寫控制資訊,可允許處理電路系統減小範圍及/或清除某些權限旗標。
在能力檢查操作的一個實施例中,如由步驟355指示,若可修改權限不處於清除狀態,則判定能力檢查未通過。特定而言,在此實施例中,判定僅允許指令集改變由於將不可修改能力載入PCC暫存器中而發生為適當的,由於此提供了額外保證:由於針對由當前過程使用而提供能力,指令集識別符欄位的內容將不變化。
由此,在第8圖所示的實施例中,僅若可修改權限處於清除狀態,過程能夠朝向判定通過能力檢查的情況進展。在一個實施例中,可能不需要額外檢查,並且由此一旦判定可修改權限處於清除狀態,則過程可直接進行至步驟365,其中判定通過能力檢查。然而,在替代實施例中,可執行一或多個進一步檢查,例如考慮到由權限旗標編碼的一或多個其他權限的狀態。例如,如由方塊360指示,可能判定可執行權限是否處於設定狀態。可執行權限與一能力相關,但僅關於彼能力何時載入程式計數器能力暫存器中。特定而言,可執行權限識別是否允許彼能力當形成程式計數器能力時用於從記憶體提取指令。因此,若PCC暫存器內的能力具有處於清除狀態的可執行權限,則此指示防止該能力用於從記憶體提取指令。此可因此指示分支指令正用於試圖將一能力載入PCC暫存器80中,該能力不意欲用作程式計數器能力。由此,若可執行權限處於清除狀態,則過程可進行至步驟370,其中認為能力檢查未通過。
反之,若可執行權限處於設定狀態,從而指示若無覆寫控制資訊防止彼使用則允許該能力用於從記憶體提取指令,則隨後過程可進行至步驟365,其中判定通過能力檢查。
第9A圖及第9B圖圖示了在判定能力檢查已經通過的情況下當執行分支指令時使用指令集識別符欄位資訊的兩個選項。如將從先前論述顯而易見,在判定能 力檢查已經通過的情況下,則源能力暫存器CN中的能力用於形成PCC暫存器80中的新的程式計數器能力。如由第9A圖中的選項一所示,源能力暫存器CN中的所識別的能力400因此複製至PCC暫存器中以形成新的PCC410。在此實施例中,所識別的能力400中的指令集識別符欄位405亦複製至PCC暫存器中,以形成更新的程式計數器能力410中的新的欄位415。處理電路系統隨後在此實施例中經佈置以使用PCC暫存器的欄位415中的值來識別指令集。由此,若所識別的能力405內的指令集識別符指定不同於執行分支指令之前使用的指令集的指令集,則一旦已經執行分支指令,並由此PCC暫存器80的內容已經更新,指令集改變將藉助欄位415中的更新資訊而發生。
第9B圖圖示了替代實施例,其中源能力暫存器CN中的所識別的能力420再次基本上複製到PCC暫存器80中以形成新的程式計數器能力435。然而,在此實施例中,所識別的能力420中的指令集識別符欄位425在分別提供至PCC暫存器80的指令集控制暫存器430內提取並儲存。在此實施例中,預設值隨後寫入PCC的欄位440中,欄位440將另外與指令集識別符欄位對應。在一個實施例中,欄位440中的值不涉及何時使用PCC435,並因此可設定為任何期望值。
在一個實施例中,指令集控制暫存器430可為用於儲存指令集資訊的分開的專用暫存器。然而,在替代 實施例中,其可由現存暫存器中的欄位提供,例如,由當前處理狀態暫存器74中的欄位提供。
在一個實施例中,先前所述的基於能力的機制可為允許改變指令集的唯一機制。然而,在另一實施例中,額外的基於異常的機制可作為允許指令集改變的進一步機制而提供。此過程在第10圖中示意性地圖示。於步驟450,採取異常,因此於步驟455處理器轉換為預定義的狀態。異常可例如致使轉換為較高異常等級,從而具有與採取異常的過程相比較高等級的軟體執行特權。在一個實施例中,預定當處置異常時由處理器使用的指令集。例如,配置暫存器可用於指定指令集,在處於預定義狀態時該指令集可應用到所執行的異常處置器代碼。或者,先前涉及的能力向量基址暫存器(capability vector base address register;CVBAR)中的欄位可用於指定指令集。在一個特定實例中,CVBAR的位元零可出於此目的使用。作為另一替代,指令集可為整體固定的,使得特定指令集總是用於異常處置器代碼。
在於步驟455轉換為預定義的狀態之後,處理器隨後執行可信的異常處置代碼,以便建立返回狀態,該返回狀態將在從異常返回之後使用。在此過程期間,在從異常返回時使用的指令集可在適當控制暫存器中設定。例如,當指令集直接從PCC暫存器中的欄位導出時,依據先前參考第9A圖所論述的實例,則CELR暫存器78的內容可更新,使得在返回位址能力中的相關欄位識別指令 集,該指令集應在從異常返回時應用。或者,若使用第9B圖的方法,其中指令集係例如由CPSR 74中的欄位給出,則SPSR 72中的適當欄位可由可信軟體操縱以指定指令集,該指令集應在從異常返回時應用。
在步驟460之後,隨後返回指令可於步驟465執行以從異常返回。作為此過程的部分,CELR 78的內容將恢復至PCC暫存器80中,並且SPSR 72的內容將恢復至CPSR 74中。其後,後續提取的指令將根據新識別的指令集來詮釋。
儘管在進一步實施例中,可能提供一或多個額外的受控機制以用於改變指令集,在一個特定實施例中,處理器可受到限制以不僅允許指令集藉由使用本文所述的基於能力的機制或基於異常的機制來改變。
第11圖圖示了可使用的虛擬機實施方式。儘管先前描述之實施例根據用於操作支援相關技術之特定處理硬體的設備及方法來實施本發明,亦可能提供硬體裝置的所謂虛擬機實施方式。該等虛擬機實施方式在主處理機530上運行,該主處理機運行支援虛擬機器程式510的主機作業系統520。通常,需要大型高效處理器以提供按合理速度執行的虛擬機實施方式,但此方法在某些環境中可為合理的,諸如當需要運行另一處理器本端的代碼以獲得相容性時,或出於再使用之原因。虛擬機器程式510可儲存在電腦可讀取儲存媒體(可為非暫態媒體)上,並向應用程式500提供應用程式界面(指令執行環境),該介 面與將由實際硬體提供的應用程式介面相同,該實際硬體是藉由虛擬機器程式510模型化的裝置。用於控制指令集改變的上文所述的技術可在虛擬機器環境中實現。例如,在虛擬機器中運行或控制虛擬機器的軟體可使用實現此特征的硬體。
從上文所述的實施例,將看到彼等實施例提供了用於改變基於能力的架構內的指令集的高度受控並受限的技術。經由使用此等技術,此提供了保護以防無意或惡意嘗試改變指令集,因此減輕指令集改變可用以試圖規避由基於能力的架構提供的保護的態樣的可能性。
在本申請案中,詞語「經配置以……」用於意謂設備之元件具有能夠進行所定義操作的配置。在此上下文中,「配置」意謂硬體或軟體之互連之佈置或方式。例如,設備可具有提供所定義之操作的專用硬體,或處理器或其他處理裝置可經程式化以執行該功能。「經配置以」不隱含需要以任何方式改變設備元件以便提供所定義之操作。
儘管已在本文中參考附圖詳細描述了本發明之說明性實施例,應理解,本發明不限於彼等精確實施例,且熟習該項技術者可在其中實現各種改變、增加及修改而不脫離由隨附申請專利範圍所定義之本發明之範疇及精神。例如,附屬請求項之特徵可與獨立請求項之特徵進行各種組合,而不脫離本發明之範疇。
2:資料處理設備
4:處理管線
6:提取階段
8:解碼階段
10:發出階段
12:執行階段
14:回寫階段
20:L1指令快取
22:分支預測器
24:分支目標位址快取
30:算術/邏輯單元
32:浮點單元
34:載入/儲存單元
36:L1資料快取
40:暫存器
44:L2快取
50:記憶體
52:轉換後備緩衝器
60:有界指針暫存器
62:指針
64:範圍資訊
66:限制資訊
70:控制/狀態暫存器
72:處理狀態
74:當前處理狀態
78:能力異常鏈接暫存
79:能力控制儲存元件
80:程式計數器能力暫存器
82:欄位
84:範圍資訊
86:限制資訊
90:預設資料能力暫存器
92:範圍資訊
94:限制資料

Claims (21)

  1. 一種用於控制一指令集的改變的設備,包含:處理電路系統,用於執行該指令集的指令,該處理電路系統經佈置以在一能力域中操作,該能力域包含用以限制由該處理電路系統在執行該等指令時執行的操作的多個有界指針(bounded pointers),其中每個該有界指針包括一指針值及當使用該有界指針時指定一容許位址範圍的範圍資訊;以及一程式計數器有界指針儲存元件,用於儲存由該處理電路系統使用以判定一程式計數器值的一程式計數器有界指針;該處理電路系統經佈置以採用一基於能力的機制來改變該指令集,回應於執行用於將一所識別的有界指針載入該程式計數器有界指針儲存元件中的至少一種類型的指令,該處理電路系統經佈置以引動該基於能力的機制,以便對該所識別的有界指針執行一有界指針檢查操作,並且若通過該有界指針檢查操作,則致使該指令集由來自該所識別的有界指針的一指令集識別符欄位來識別。
  2. 如請求項1所述之設備,其中該處理電路系統經佈置以在將彼所識別的有界指針載入該程式計數器有界指針儲存元件中之前對該所識別的有界指針執 行該有界指針檢查操作。
  3. 如請求項1所述之設備,其中該處理電路系統經佈置以在將彼所識別的有界指針載入該程式計數器有界指針儲存元件中之後對該所識別的有界指針執行該有界指針檢查操作。
  4. 如請求項1所述之設備,其中該處理電路系統經佈置以回應於偵測到該有界指針檢查操作未通過而採取一異常。
  5. 如請求項4所述之設備,其中該處理電路系統經佈置以設定一旗標來識別該有界指針檢查操作的未通過,設定該旗標致使在執行一下一個指令時採取該異常。
  6. 如請求項1所述之設備,其中:該處理電路系統經佈置以藉由執行指定該所識別的有界指針的一分支指令來引動該基於能力的機制。
  7. 如請求項6所述之設備,進一步包含:一或多個有界指針儲存單元,可存取至該處理電路系統並且經佈置以儲存用於限制由該處理電路系統在執行該等指令時執行的操作的有界指針;其中該分支指令將該一或多個有界指針儲存元件的一者指定為一源運算元,該一或多個有界指針儲存元件中的一個所指定的有界指針儲存元件含有該所識別 的有界指針。
  8. 如請求項6所述之設備,其中:該分支指令包含一返回指令,該返回指令經執行以將形成該所識別的有界指針的一返回位址有界指針載入該程式計數器有界指針儲存元件中。
  9. 如請求項1所述之設備,其中:該處理電路系統經佈置以當執行該有界指針檢查操作時檢查與該所識別的有界指針相關的一有效旗標,以便防止通過該有界指針檢查操作,除非該所識別的有界指針為一有效有界指針。
  10. 如請求項1所述之設備,其中:該所識別的有界指針包含一或多個權限旗標,該權限旗標用以識別與該所識別的有界指針相關的一或多個權限的一狀態;以及該處理電路系統經佈置以當執行該有界指針檢查操作時檢查該一或多個權限旗標,以便防止通過該有界指針檢查操作,除非至少一個權限處於一預定狀態。
  11. 如請求項10所述之設備,其中該至少一個權限包含一可執行權限,根據防止使用該所識別的有界指針從記憶體提取指令的任何覆寫控制資訊,該可執行權限用於識別當用作該程式計數器有界指針時是否允許該所識別的有界指針用於從記憶體提取指令, 並且該預定狀態為一設定狀態,該設定狀態指示允許該所識別的有界指針用於從記憶體提取指令。
  12. 如請求項10所述之設備,其中該至少一個權限包含一可修改權限,該可修改權限用於識別該所識別的有界指針是否可由一或多個有界指針修改指令來修改,且該預定狀態為一清除狀態,該清除狀態指示該有界指針不可由該一或多個有界指針修改指令來修改。
  13. 如請求項1所述之設備,其中:當通過該有界指針檢查操作時,該處理電路系統經佈置以致使該所識別的有界指針包括該指令集識別符欄位用於形成該程式計數器有界指針儲存元件中的一新的程式計數器有界指針;以及在該新的程式計數器有界指針中的該指令集識別符欄位的該值用於判定該指令集。
  14. 如請求項1所述之設備,其中:當通過該有界指針檢查操作時,該處理電路系統經佈置以致使該所識別的有界指針用於形成該程式計數器有界指針儲存元件中的一新的程式計數器有界指針,但在該新的程式計數器有界指針中的一欄位對應於經設定為一預設值的該指令集識別符欄位,該處理電路系統進一步致使將該所識別的有界指針的該指令集識 別符欄位中的一值寫入一指令集控制儲存元件中;以及該指令集控制儲存元件中的該值用於判定該指令集。
  15. 如請求項14所述之設備,其中該指令集控制儲存元件由一當前處理器狀態暫存器(CPSR)內的一欄位提供。
  16. 如請求項1所述之設備,其中該處理電路系統進一步提供一基於異常的機制以改變該指令集,在引動該基於異常的機制時,該處理電路系統經佈置以將一異常採取為一預定義狀態,其中隨後執行可信軟體以建立返回狀態,該返回狀態識別在從該異常返回時使用的該指令集。
  17. 如請求項16所述之設備,其中該處理電路系統受到限制以僅允許藉由使用該基於能力的機制或該基於異常的機制來改變該指令集。
  18. 一種控制一設備內的指令集的一改變的方法,該設備具有用於執行一當前指令集的指令的處理電路系統,該處理電路系統經佈置以在一能力域中操作,該能力域包含用以限制由該處理電路系統在執行該等指令時執行的操作的多個有界指針,其中每個該有界指針包括一指針值及當使用該有界指針時指定一 容許位址範圍的範圍資訊,該方法包含以下步驟:在一程式計數器有界指針儲存元件中儲存由該處理電路系統使用以判定一程式計數器值的一程式計數器有界指針;佈置該處理電路系統以回應於執行用於將一所識別的有界指針載入該程式計數器有界指針儲存元件中的至少一種類型的指令,以引動一基於能力的機制來控制該當前指令集的改變,該基於能力的機制包含:關於該所識別的有界指針執行一有界指針檢查操作;以及若通過該有界指針檢查操作,則致使該指令集由來自該所識別的有界指針的一指令集識別符欄位來識別。
  19. 一種用於控制一指令集的改變的設備,包含:處理構件,用於執行該指令集的指令,該處理構件用於在一能力域中操作,該能力域包含用於限制由該處理構件在執行該等指令時執行的操作的多個有界指針,其中每個該有界指針包括一指針值及當使用該有界指針時指定一容許位址範圍的範圍資訊;以及一程式計數器有界指針儲存元件構件,用於儲存由該處理構件使用以判定一程式計數器值的一程式計數 器有界指針;該處理構件採用一基於能力的機制來改變該指令集,回應於執行用於將一所識別的有界指針載入該程式計數器有界指針儲存元件中的至少一種類型的指令,該處理構件用於引動該基於能力的機制,以便關於該所識別的有界指針執行一有界指針檢查操作,並且若通過該有界指針檢查操作,則致使該指令集由來自該所識別的有界指針的一指令集識別符欄位來識別。
  20. 一種虛擬機電腦程式,包含用以控制一主資料處理設備以提供對應於如請求項1所述之設備的一指令執行環境的程式指令。
  21. 一種電腦可讀取儲存媒體,儲存如請求項20所述之虛擬機電腦程式。
TW107115419A 2017-06-15 2018-05-07 用於控制指令集中改變的設備、方法、虛擬機電腦程式與電腦可讀取儲存媒體 TWI786111B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1709511.8A GB2563580B (en) 2017-06-15 2017-06-15 An apparatus and method for controlling a change in instruction set
??1709511.8 2017-06-15
GB1709511.8 2017-06-15

Publications (2)

Publication Number Publication Date
TW201905705A TW201905705A (zh) 2019-02-01
TWI786111B true TWI786111B (zh) 2022-12-11

Family

ID=59462226

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107115419A TWI786111B (zh) 2017-06-15 2018-05-07 用於控制指令集中改變的設備、方法、虛擬機電腦程式與電腦可讀取儲存媒體

Country Status (9)

Country Link
US (1) US11080058B2 (zh)
EP (1) EP3639132B1 (zh)
JP (2) JP2020523680A (zh)
KR (1) KR102547479B1 (zh)
CN (1) CN110709817B (zh)
GB (1) GB2563580B (zh)
IL (1) IL270935B2 (zh)
TW (1) TWI786111B (zh)
WO (1) WO2018229455A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2563580B (en) * 2017-06-15 2019-09-25 Advanced Risc Mach Ltd An apparatus and method for controlling a change in instruction set
US10607015B1 (en) * 2019-05-16 2020-03-31 Cyberark Software Ltd. Security risk assessment and control for code
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758115A (en) * 1994-06-10 1998-05-26 Advanced Risc Machines Limited Interoperability with multiple instruction sets
GB2448149A (en) * 2007-04-03 2008-10-08 Advanced Risc Mach Ltd Protected function calling across domains
US20080250217A1 (en) * 2007-04-03 2008-10-09 Arm Limited. Memory domain based security control with data processing systems
TWI725059B (zh) * 2015-11-12 2021-04-21 英商Arm股份有限公司 用於控制有界指標的使用之設備及方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62123552A (ja) * 1985-11-22 1987-06-04 Nec Corp 中央処理装置割当て方式
GB2289354B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Multiple instruction set mapping
JPH08194504A (ja) * 1995-01-13 1996-07-30 Matsushita Electric Works Ltd プログラマブルコントローラ
GB2376097B (en) * 2001-05-31 2005-04-06 Advanced Risc Mach Ltd Configuration control within data processing systems
JP2004013556A (ja) * 2002-06-07 2004-01-15 Matsushita Electric Ind Co Ltd プロセッサ装置、コンパイル装置及びその方法
JP3805314B2 (ja) * 2003-02-27 2006-08-02 Necエレクトロニクス株式会社 プロセッサ
US7340588B2 (en) * 2003-11-24 2008-03-04 International Business Machines Corporation Extending the number of instruction bits in processors with fixed length instructions, in a manner compatible with existing code
US7802252B2 (en) * 2007-01-09 2010-09-21 International Business Machines Corporation Method and apparatus for selecting the architecture level to which a processor appears to conform
GB2482701C (en) 2010-08-11 2018-12-26 Advanced Risc Mach Ltd Illegal mode change handling
US20120159127A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Security sandbox
TWI484413B (zh) * 2012-04-03 2015-05-11 Mstar Semiconductor Inc 基於功能性的程式比較方法
US9672164B2 (en) * 2012-05-31 2017-06-06 Nxp Usa, Inc. Methods and systems for transitioning between a user state and a supervisor state based on a next instruction fetch address
US20160026486A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. An allocation and issue stage for reordering a microinstruction sequence into an optimized microinstruction sequence to implement an instruction set agnostic runtime architecture
GB2541714B (en) * 2015-08-27 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers
GB2562102B (en) * 2017-05-05 2019-09-04 Advanced Risc Mach Ltd An apparatus and method for managing use of capabilities
GB2563010B (en) * 2017-05-25 2019-12-25 Advanced Risc Mach Ltd An apparatus and method for managing a capability domain
GB2563009B (en) * 2017-05-25 2019-12-25 Advanced Risc Mach Ltd An apparatus and method for interpreting permissions associated with a capability
GB2563580B (en) * 2017-06-15 2019-09-25 Advanced Risc Mach Ltd An apparatus and method for controlling a change in instruction set
US10635445B2 (en) * 2018-05-29 2020-04-28 Arm Limited Handling modifications to permitted program counter ranges in a data processing apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758115A (en) * 1994-06-10 1998-05-26 Advanced Risc Machines Limited Interoperability with multiple instruction sets
GB2448149A (en) * 2007-04-03 2008-10-08 Advanced Risc Mach Ltd Protected function calling across domains
US20080250217A1 (en) * 2007-04-03 2008-10-09 Arm Limited. Memory domain based security control with data processing systems
TWI725059B (zh) * 2015-11-12 2021-04-21 英商Arm股份有限公司 用於控制有界指標的使用之設備及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
網路文獻 "Bounded pointer", Wikipedia, 16 March 2013. [https://en.wikipedia.org/w/index.php?title=Bounded_pointer&oldid=544591955] *

Also Published As

Publication number Publication date
GB2563580B (en) 2019-09-25
IL270935B1 (en) 2024-05-01
GB201709511D0 (en) 2017-08-02
US20200117458A1 (en) 2020-04-16
KR20200013049A (ko) 2020-02-05
JP2023038361A (ja) 2023-03-16
TW201905705A (zh) 2019-02-01
CN110709817B (zh) 2023-09-22
IL270935B2 (en) 2024-09-01
IL270935A (en) 2020-01-30
GB2563580A (en) 2018-12-26
WO2018229455A1 (en) 2018-12-20
CN110709817A (zh) 2020-01-17
JP2020523680A (ja) 2020-08-06
EP3639132A1 (en) 2020-04-22
EP3639132B1 (en) 2024-05-29
US11080058B2 (en) 2021-08-03
KR102547479B1 (ko) 2023-06-26

Similar Documents

Publication Publication Date Title
TWI726925B (zh) 用於管理有界指標的裝置和方法
CN110574009B (zh) 用于管理对能力的使用的设备和方法
US11347508B2 (en) Apparatus and method for managing a capability domain
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法
KR20230101826A (ko) 캐퍼빌리티들을 사용하여 메모리에 대한 액세스를 제약하기 위한 기술
KR20240089653A (ko) 봉인 캐퍼빌리티를 핸들링하는 기술
KR20240004738A (ko) 캐퍼빌리티를 사용하여 메모리에 대한 액세스를 제약하기 위한 기술
JP2024538674A (ja) 封止されたケイパビリティを操作するための技法
TW202319913A (zh) 用於使用能力限制對記憶體存取之技術
TW202418067A (zh) 堆疊指標切換有效性檢查
TW202340955A (zh) 使用能力約束記憶體存取之技術