TW201907296A - 用於控制指令執行的設備與方法 - Google Patents

用於控制指令執行的設備與方法 Download PDF

Info

Publication number
TW201907296A
TW201907296A TW107122485A TW107122485A TW201907296A TW 201907296 A TW201907296 A TW 201907296A TW 107122485 A TW107122485 A TW 107122485A TW 107122485 A TW107122485 A TW 107122485A TW 201907296 A TW201907296 A TW 201907296A
Authority
TW
Taiwan
Prior art keywords
capability
storage element
information
instruction
integer
Prior art date
Application number
TW107122485A
Other languages
English (en)
Other versions
TWI771441B (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 TW201907296A publication Critical patent/TW201907296A/zh
Application granted granted Critical
Publication of TWI771441B publication Critical patent/TWI771441B/zh

Links

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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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
    • G06F21/74Protecting 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 operating in dual or compartmented mode, i.e. at least one secure mode
    • 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
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • 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/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/321Program or instruction counter, e.g. incrementing
    • 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
    • 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/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)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

本揭示案提供用於控制某些指令之執行的設備及方法。該設備具有:用於執行指令序列之處理電路系統;用於儲存整數值以藉由處理電路系統存取的整數儲存元件;及用於儲存能力以藉由處理電路系統存取的能力儲存元件。隨後使用能力使用儲存器儲存能力使用資訊。處理電路系統回應於執行指令序列中之至少一個指令以根據能力使用資訊生成結果以儲存在目標儲存元件中。特定而言,當能力使用資訊辨識能力狀態時,生成結果作為能力及選擇該能力儲存元件作為目標儲存元件。反之,當能力使用資訊辨識非能力狀態時,生成結果作為整數值及選擇該整數儲存元件作為目標儲存元件。此舉允許指定能力及非能力生成變體兩者,而不需要在指令集內提供單獨的指令。

Description

用於控制指令執行的設備與方法
本技術係關於用於控制指令執行的設備及方法。
對基於能力之架構越來越感興趣,其中某些能力經定義以用於給定過程,並且若嘗試執行所定義能力之外的操作,則可觸發錯誤。該等能力可採取各種形式,但一種能力為有界指標(其亦可稱作「胖指標」)。對於有界指標,指標值可辨識,或者用以決定例如待存取之資料值或待執行之指令的位址。然而,指標值亦可具有當使用指標值時指示位址之可容許範圍的關聯範圍資訊,及可額外具有與此關聯之許可/限制資訊。有界指標之範圍資訊及任何許可/限制資訊可稱為能力資訊,及在基於能力架構內此種有界指標(包括其關聯能力資訊)可稱為能力。
在指令集內,需要指定指令,該等指令可生成能力作為執行彼等指令之結果。然而,為了向後相容性,也可能需要指定一指令,該指令辨識與生成能力作為結果,而非替代能力生成正規資料值作為結果之版本基本上相同的操作。
然而,指令編碼空間通常非常寶貴,並且因此很難在指令集架構內提供充足的空間以允許定義能力生成指令及非能力生成指令。
在第一示例性配置中,提供一種設備,包括:用以執行指令序列之處理電路系統;整數儲存元件,其用以儲存整數值以藉由處理電路系統存取;能力儲存元件,其用以儲存能力以藉由處理電路系統存取;及能力使用儲存器,其用以儲存能力使用資訊;其中該處理電路系統回應於執行指令序列中之至少一個指令,以根據能力使用資訊,藉由以下步驟生成結果以儲存在目標儲存元件中:當能力使用資訊辨識能力狀態時,生成結果作為能力及選擇能力儲存元件作為目標儲存元件;及當能力使用資訊辨識非能力狀態時,生成結果作為整數值及選擇該整數儲存元件作為目標儲存元件。
在另一示例性配置中,提供了一種在設備內控制指令執行之方法,該設備具有:用以執行指令序列之處理電路系統;用以儲存整數值以藉由處理電路系統存取之整數儲存元件;用以儲存能力以藉由處理電路系統存取之能力儲存元件;及用以儲存能力使用資訊之能力使用儲存器。該方法包括以下步驟:回應於執行指令序列中之至少一個指令,根據能力使用資訊,藉由以下步驟生成結果以儲存在目標儲存元件中:當能力使用資訊辨識能力狀態時,生成結果作為能力及選擇能力儲存元件作為目標儲存元件;及當能力使用資訊辨識非能力狀態時,生成結果作為整數值及選擇該整數儲存元件作為目標儲存元件。
在另一示例性配置中,提供一種設備,包括:用於執行指令序列之處理構件;用於儲存整數值以藉由處理構件存取的整數儲存元件構件;用於儲存能力以藉由處理構件存取的能力儲存元件構件;及用於儲存能力使用資訊之能力使用儲存構件;處理構件回應於執行指令序列中之至少一個指令,以根據能力使用資訊,藉由以下步驟生成結果以儲存在目標儲存元件構件中:當能力使用資訊辨識能力狀態時,生成結果作為能力及選擇能力儲存元件構件作為目標儲存元件構件;及當能力使用資訊辨識非能力狀態時,生成結果作為整數值及選擇該整數儲存元件構件作為目標儲存元件構件。
在又一示例性配置中,提供了一種用於控制主機資料處理設備以提供指令執行環境的電腦程式,該電腦程式包括:用以執行指令序列之處理程式邏輯;用以儲存整數值以藉由處理程式邏輯存取的整數資料結構;用以儲存能力以藉由處理程式邏輯存取的能力資料結構;及用於儲存能力使用資訊之能力使用資料結構;其中處理程式邏輯回應於執行指令序列中之至少一個指令,以根據能力使用資訊,藉由以下步驟生成結果以儲存在目標資料結構中:當能力使用資訊辨識能力狀態時,生成結果作為能力及選擇能力資料結構作為目標資料結構;及當能力使用資訊辨識非能力狀態時,生成結果作為整數值及選擇該整數資料結構作為目標資料結構。
在另一示例性配置中,提供一種包含程式指令之虛擬機電腦程式,該程式指令用於控制主機資料處理設備以提供對應於上述第一示例性配置之設備的指令執行環境。
在一個實施例中,可以提供電腦可讀取儲存媒體以儲存電腦程式。
在參照附圖論述實施例之前,提供了實施例之以下描述。
如前所述,對基於能力之架構越來越感興趣,其中某些能力經定義以用於給定過程,並且若嘗試執行所定義能力之外的操作,則可觸發錯誤。可以定義各種能力,但一類能力為有界指標(在一個實施例中其合併指標值與關聯範圍及許可資訊兩者)。採用此種基於能力之架構的設備將通常具有用以儲存能力之儲存元件(此處亦稱作有界指標儲存元件,或者更一般稱為能力儲存元件)。儲存元件可為暫存器(此處亦稱作有界指標暫存器或者能力暫存器)及/或可為通用記憶體中之記憶體位置,例如堆疊記憶體上之位置。某些指令可用以引用此種儲存元件以便存取要求能力,並且根據彼能力執行操作。例如,假定有界指標,執行此類指令可導致擷取該有界指標,並且其中之指標值接著用以導出在執行指令期間所需之記憶體中的位址。指標值可直接用以辨識記憶體位址,或可用以導出記憶體位址,例如藉由將偏移量加至指標值。只要記憶體位址在藉由範圍資訊指定之範圍內,並且滿足在許可資訊中指定之任何許可,則將允許操作進行。
另外,對於至少一些指令而言,需要生成能力作為當執行彼等指令時所實施操作的結果。此外,對於彼等指令之至少一些指令,仍然可能需要提供一種版本之指令,該指令產生非能力結果,例如用以支援向後相容性。
然而,為指定基本上執行相同操作的兩個單獨指令,但其中一個產生能力作為結果,而另一個產生正規資料值作為結果,則指令集架構內需要充足的指令編碼空間以定義此等不同指令。然而,指令編碼空間通常受嚴格約束,並且可能很難在指令集架構內編碼所需之不同類型的全部指令。
本文描述之實施例提供一種減輕指令編碼空間壓力的機制。
特定而言,在一個實施例中,提供一種設備,包括:用於執行指令序列之處理電路系統;用以儲存整數資料值以藉由處理電路系統存取的整數儲存元件;及用以儲存能力以藉由處理電路系統存取的能力儲存元件。此外,提供能力使用儲存器以儲存能力使用資訊。
對於指令序列中之至少一個指令,處理電路系統回應於執行該指令,以根據能力使用資訊生成結果以儲存在目標儲存元件中。特定而言,當能力使用資訊辨識能力狀態時,處理電路系統生成結果作為能力及選擇該能力儲存元件作為目標儲存元件。反之,當能力使用資訊辨識非能力狀態時,處理電路系統生成結果作為整數值及選擇該整數儲存元件作為目標儲存元件。
藉由此種方法,指令集內之單個指令可在執行期間可配置地佈置以生成能力作為結果或者生成整數值作為結果,並且此外亦可根據正在生成的是能力還是整數值可配置地選擇結果的目標。特定而言,在執行指令期間,處理電路系統可參考能力使用資訊,並且使用當前能力使用資訊來控制產生能力作為執行指令之結果還是改為產生整數值。此舉可允許執行指令之能力及非能力變體兩者,但不需要在指令集內單獨地編碼彼等變體。
整數儲存元件可以採取各種形式,但在一個實施例中為複數個整數儲存元件之選定整數儲存元件、程式計數儲存元件及鏈路儲存元件中的一者。同樣地,能力儲存元件亦可採取各種形式,但在一個實施例中為複數個能力儲存元件之選定能力儲存元件、程式計數能力儲存元件及能力鏈路儲存元件中的一者。
儘管整數儲存元件及能力儲存元件可為實體分離結構,但在一個實施例中,整數儲存元件可能由能力儲存元件內之欄位表示,從而減少設備之整體儲存需求。
根據能力使用資訊,藉由處理電路系統以上述方式處理,使得所生成之結果為能力或者整數值的指令可採取各種形式。然而,在一個實施例中,至少一個此種指令為指定立即值作為源運算元的指令。立即值可消耗指令之有效編碼空間內的大量位元,並且因此上述方法當與指定立即值作為源運算元之指令關聯使用時可能特別有益,因為可能存在不充足的剩餘編碼空間,無法提供指令之兩個單獨變體。
然而,在其他實施例中,方法亦可與不指定立即值作為源運算元的指令一起使用,並且由此可與例如可根據通用暫存器來指定源運算元的指令一起使用。
在一個實施例中,處理電路系統以上述方式執行的至少一個指令為經佈置以使用程式計數資訊作為另一源運算元的指令。存在使用程式計數資訊作為源運算元的多數個指令,其中需要能夠生成為能力或者整數值的結果,並且因此上述方法藉由避免了具體定義每個此種指令之多個不同變體的需要,從而提供用於編碼此種指令的非常有效的方式。
當執所述至少一個指令時藉由處理電路系統生成之結果可採取各種形式,但在一個實施例中所生成之結果為位址資訊。在基於能力的架構中以能力形式生成位址資訊,以便嚴格約束隨後如何使用該位址資訊可能為有益的。然而,為了向後相容性,仍然經常需要能夠以整數值之形式生成位址資訊,及上述方法提供用於支援兩種變體而不需要指定用於彼等變體之單獨指令的特別高效的機制。
至少一個指令可採取各種形式,但在一個實施例中為用以更新程式計數資訊的分支指令。
特定而言,在一個實施例中,處理電路系統經佈置以回應於分支指令而生成更新的程式計數資訊作為至少一個結果,根據該能力狀態,處理電路系統經佈置以生成更新的程式計數資訊作為儲存在程式計數能力儲存元件中的程式計數能力,或者生成更新的程式計數資訊作為儲存在程式計數儲存元件中的程式計數值。
存在可生成更新的程式計數資訊的多數個方式,但在一個實施例中該更新的程式計數資訊根據由分支指令指定的立即值而藉由調整當前程式計數值來生成。如前所述,立即值可消耗指令編碼空間內之大量位元,並且因此使用與指定立即值作為源運算元之分支指令關聯的上述方法可能特別有益。然而,在替換實施例中,可能不指定立即值,並且相反分支指令可使用暫存器之內容來指定絕對分支目標,或使用與程式計數器結合使用的偏移來提供程式計數器相關分支目標。
儘管在一個實施例中程式計數儲存元件可與程式計數能力儲存元件實體分隔,但在一個實施例中,程式計數儲存元件由程式計數能力儲存元件內之欄位形成。
在一個示例性佈置中,分支指令可為具有鏈路的分支指令,並且處理電路系統可經佈置以生成源於當前程式計數資訊的返回位址資訊作為至少一個結果,根據能力狀態,該處理電路系統經佈置以生成返回位址資訊作為儲存在能力鏈路儲存元件中的返回位址能力或者生成返回位址資訊作為儲存在鏈路儲存元件中的返回位址值。因此,在此種實例中,可根據能力使用資訊,產生更新的程式計數資訊及返回位址資訊兩者作為能力或者整數值。
在一個實施例中,處理電路系統可經佈置以藉由更改當前程式計數值,例如藉由將偏移添加至當前程式計數值,來生成返回位址資訊。
鏈路儲存元件可與能力鏈路儲存元件實體分隔,但在一個實施例中,鏈路儲存元件可由能力鏈路儲存元件內之欄位形成。
作為對分支指令執行上述可配置結果生成的替代或補充,處理電路系統亦可經佈置以對其他類型的指令採取類似的步驟。例如,至少一個指令可為用以生成源於程式計數資訊之位址資訊作為結果的位址生成指令。又,對於此種生成指令,能夠生成位址資訊作為能力,而且為了向後相容性,能夠支援生成彼位址資訊作為整數值為有用的。
在一個特定示例性佈置中,處理電路系統可經佈置以藉由根據由位址生成指令指定之立即值來調整當前程式計數值,而生成位址資訊。然而,如同分支指令之先前論述,不使用立即值之其他變體亦可經佈置以利用本文論述之可配置執行行為。
存在多種方式,其中可以決定用於儲存藉由執行位址生成指令而生成的結果的目標。在一個實施例中,位址生成指令提供目標識別符,及處理電路系統經佈置以當能力使用資訊辨識能力狀態時將目標識別符映射至複數個能力儲存元件之選定能力儲存元件,及當能力使用資訊辨識非能力狀態時將目標識別符映射至複數個整數儲存元件之選定整數儲存元件。
不管應用本技術的哪種指令類型,當整數儲存元件由能力儲存元件内的欄位形成時,存在能夠標記能力儲存元件的内容以辨識整數值而不是能力作為結果儲存在其中的多種方式。在一個實施例中,當整數值而非能力被儲存為結果時,將能力儲存元件之至少一個剩餘欄位設定為預設值。特定而言,在一個實施例中設定剩餘欄位(其可以例如指定範圍及限制資訊)以辨識最高能力,以便有效地關閉任何能力約束。然而,在替換實施例中,可能不需要設定範圍及限制資訊以辨識最高能力。例如,可佈置硬體,以便當設備在非能力狀態中操作時,由此所執行之處理操作不受能力影響,其忽略了能力儲存元件內之範圍及限制資訊。在此種情況中,範圍及限制資訊可能反而根據需要保持不變或清除。作為另一替代方案,標記位元可與每個能力儲存元件關聯,其經設定以辨識內容包含能力,及經清除以辨識內容不表示有效能力。因此,當能力儲存元件儲存整數值時,可清除標記位元以辨識內容不表示有效能力。
儲存為結果之能力可採取各種形式,但在一個實施例中包含有界指標。
當執行該至少一個指令時由處理電路系統引用的能力使用資訊可採取各種形式。然而,在一個實施例中,能力使用資訊為複數個異常位準之每一者的能力配置資訊,每個異常位準具有不同軟體執行特權,並且對於每個異常位準而言,能力配置資訊至少辨識當在該異常位準處執行指令時由處理電路系統執行的操作是否受能力約束。因此,如若需要,此提供靈活性以允許軟體在至少一個異常位準處不受能力約束。作為特定實例,在高異常位準處執行之高可信度軟體可允許不受能力約束地操作。此可藉由避免針對此種軟體執行能力檢查常式而產生效能益處。此亦可降低此種軟體需要修改之程度以使其與基於能力架構相容。然而,因為可以每個異常位準為基礎來管理此種靈活性,所以此種機制仍然可用以確保對在一或更多個異常位準處執行之軟體利用完全約束之能力。
此外,根據上述方法,當執行一或更多個指令時可再使用此資訊,以便可配置地賦能指令之結果形成為能力或整數值,及進一步地,用以儲存結果之目標可配置地選定為能力儲存元件或整數儲存元件。
特定實施例現將參照附圖描述。
第1圖示意性地圖示包括用於處理指令之處理管線4的資料處理設備2的實例。在此實例中,處理管線4包括許多管線階段,該管線階段包括取出階段6、解碼階段8、發佈階段10、執行階段12及回寫階段14,但是應理解可提供其他類型或組合之階段。例如,可在一些實施例中包括用於執行暫存器更名之更名階段。待處理之指令逐階段移動,並且當指令在一個階段待處理時,另一個指令在管線4之不同階段處待處理。
取出階段6自1階(L1)指令快取記憶體20取出指令。取出階段6可通常自連續的指令位址順序地取出指令。然而,取出階段亦可具有用於預測分支指令之結果的分支預測器22,並且若預測發生分支則取出階段6可自(非連續)分支目標位址取出指令,或者若預測不發生分支則自下一個連續位址取出指令。分支預測器22可包括用於儲存資訊之一或更多個分支歷史表格,該資訊用於預測某些分支是否可能發生。例如,分支歷史表格可包括用於追蹤先前執行之分支的實際結果或表示對分支進行預測的置信度之計數器。分支預測器22亦可包括分支目標位址快取記憶體(branch target address cache; BTAC) 24,其用於快取分支指令之先前目標位址以便該等位址可在後續遇到相同分支指令時預測到。
將所取出指令傳遞至解碼階段8,該階段解碼指令以生成解碼之指令。所解碼指令可包含用於控制執行階段12以執行適當的處理操作的控制資訊。對於自快取記憶體20取出之一些更複雜指令,解碼階段8可將彼等指令映射至多個解碼指令,其可稱作微操作(micro-operation; μops/uop)。因此,可能在自L1指令快取記憶體20取出之指令與藉由管線之後續階段可見的指令之間存在一對一關係。一般而言,對「指令」之引用在本申請案中應解釋為包括微操作。
將解碼指令傳遞至發佈階段10,此決定執行指令所需之運算元是否可用並且當運算元可用時發佈用於執行的指令。一些實施例可支援按順序處理,以便發佈指令以用於以對應於程式順序之順序執行,其中指令自Ll指令快取記憶體20取出。其他實施例可支援無序執行,以便可將指令以不同於程式順序之順序發佈至執行階段12。無序處理可用於改善效能,因為在等候運算元的同時較早指令停頓,可首先執行程式順序中其運算元可用的稍後指令。
發佈階段10將指令發佈至執行階段12,其中執行指令以執行各種資料處理操作。例如,執行階段可包括許多執行單元30、執行單元32、執行單元34,該等執行單元包括用於對整數值執行算術或邏輯操作之算術/邏輯單元(arithmetic/1ogic unit; ALU) 30,用於對以浮點形式表示之值執行操作的浮點(f1oating-point; FP)單元32,及用於執行加載操作或儲存操作之加載/儲存單元34,該加載操作用於將資料值自1階(L1)資料快取記憶體36加載至暫存器40,該儲存操作用於將資料值自暫存器40儲存至L1資料快取記憶體36。將理解,此等僅為執行可提供之單元的種類的一些實例,並且亦可提供許多其他種類。為了執行處理操作,執行階段12可自一組暫存器40讀出資料值。隨後執行指令之結果可藉由回寫階段14回寫至暫存器40。
L1指令快取記憶體20及Ll資料快取記憶體36可為包括多級快取記憶體之快取階層的部分。例如,亦可提供2階(L2)快取記憶體44並且可提供可選的其他階之快取記憶體。在此實例中,L2快取記憶體44在L1指令快取記憶體20與L1資料快取記憶體36之間共用,但其他實例可具有分離之L2指令及資料快取記憶體。當指令不在L1指令快取記憶體20中取出時,則其可自L2快取記憶體44取出,並且同樣地若指令不在L2快取記憶體44中,則可自主記憶體50取出。同樣地,回應於加載指令,若該不在L1資料快取記憶體36中及自記憶體50取出,則按需要資料可自L2快取記憶體44取出。任何已知方案可用於管理快取階層。
藉由管線4使用之用於引用程式指令及資料值的位址可為虛擬位址,但至少主記憶體50,及亦視情況快取階層之至少一些階,可具有實體位址。因此,可提供轉換旁看緩衝器(translation lookaside buffer; TLB) 52以用於經由管線4使用之虛擬位址轉換成用於存取快取記憶體或記憶體的實體位址。例如,TLB 52可包括許多條目,每個條目指定虛擬位址空間之對應頁面之虛擬頁位址及該虛擬頁位址應映射至的對應實體頁位址,以便將對應頁內之虛擬位址轉換成實體位址。例如,虛擬及實體頁位址可對應於對應虛擬及實體位址的最有效部分,其中當將虛擬位址映射至實體位址時剩餘之最不有效部分保持不變。除位址轉換資訊外,每個TLB條目亦可包括一些資訊指定存取許可,如指示位址之某些頁面是否可以管線4之某些方式存取。在一些實施例中,TLB條目亦可定義位址之對應頁面的其他性質,如定義回應於讀出或寫入操作(例如,快取記憶體應以回寫模式還是直寫模式操作)更新快取階層之哪些階的快取記憶體修正資訊,或者與管線4分佈之資料存取的順序相比,定義對對應頁面中之位址進行資料存取可藉由記憶體系統重新排序的資訊。
儘管第1圖圖示單級TLB 52,但將理解可提供TLB之階層,使得1階(Ll) TLB52可包括用於轉換許多近來存取頁面中之位址的TLB條目,及2階(L2) TLB可提供以用於儲存更大量頁面的條目。當所需條目不存在於Ll 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圖之頂部圖示,特定有界指標暫存器PRl包括給定指標值62及範圍資訊64,其在此實例中使用界定可允許範圍之下界之下界位址68及界定可允許範圍之上界的上界位址69來指定。例如,界限68、界限69可經設置以界定位址80000至位址81000的範圍。當某些指令引用有界指標暫存器PRl並且由指標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亦可提供範圍資訊84及任何適當的限制資訊86,類似於具備有界指標儲存元件60組中之每個指標的範圍及限制資訊。
另外,在一個實施例中,無界指標亦可在通用暫存器40內指定並且當執行記憶體存取時使用。為了限制可使用此種無界指標存取之記憶體位址,可假定預設資料能力(Default Data Capability; DDC)暫存器90指定範圍資訊92及任何限制資訊94兩者,其類似於包括在任意能力暫存器內之範圍及限制資訊。隨後,當執行參考通用暫存器40中之無界指標辨識記憶體位址的記憶體存取指令時,類似於關於無界指標執行之界限檢查操作的界限檢查操作仍然可基於來源於無界指標之任何位址來執行,但在此情況下關於保存在DDC暫存器90內之範圍及限制資訊。藉由此種方法,能力知曉代碼例如可能希望利用現有軟體庫中之一些能力未知代碼來設置DDC暫存器90,以便對當執行彼能力未知代碼時如何使用自通用暫存器40存取之指標施加約束。特定而言,範圍資訊可用於限制當執行此種能力未知代碼時存取之位址範圍。
藉由有界指標暫存器內之有界指標辨識的任何特定範圍之記憶體位址可包含資料、指令及/或其他能力(即,其他有界指標)。因此,應理解,在任何時間點用於存取記憶體之處理電路系統的能力藉由一組能力定義,該組能力包括在有界指標暫存器中辨識之能力及經由保存在彼等有界指標暫存器中之能力可存取之任何另外能力,並且此組能力在此處將稱作能力域。
在PCC暫存器80或者DDC暫存器90中指定之範圍資訊及任何關聯限制可以各種方式設置。然而,在一個實施例中,使用當前能力域中之處理電路系統可用的一或更多個有界指標來決定資訊,以便不能使用基於PCC或者DDC之界限檢查來存取記憶體位址,該界限檢查駐留在針對當前能力域辨識之記憶體位址範圍之外。
第3圖示意性地圖示如何使用標記位元與個別資料塊關聯以辨識資料塊表示能力(即,有界指標及關聯限制資訊)還是表示正常資料。特定而言,記憶體位址空間110將儲存一系列資料塊115,其通常將具有指定大小。僅為了說明起見,在此實例中假定每個資料塊包含128位元。與每個資料塊115關聯之情況下,提供標記欄位120,在一個實例中其為稱作標記位元之單個位元欄位,其經設置以辨識關聯資料塊表示能力,並且經清除以指示關聯資料塊表示正常資料,並且因此不能當作能力。應理解,與設置或清除狀態關聯之實際值可根據實施例變化,但僅以舉例說明,在一個實施例中若標記位元具有值1,則指示關聯資料塊為能力,及若具有值0,則指示關聯資料塊包含正常資料。
當將能力加載進有界指標暫存器60(此處亦稱作能力暫存器)之一者(如第3圖中圖示之能力暫存器100)中時,則標記位元與能力資訊一起移動。因此,當將能力加載進能力暫存器100中時,指標102、範圍資訊104及限制資訊106(此後稱作許可資訊)將加載進能力暫存器。另外,與能力暫存器關聯,或作為能力暫存器內之特定位元欄位,標記位元108將經設置以辨識表示能力之內容。同樣地,當將能力儲存回至記憶體時,相關標記位元120將與儲存能力之資料塊關聯地設置。藉由此種方法,區分能力與正常資料為可能的,並且因此確保正常資料不用作能力。
在圖示實施例中,佈置設備以便其可在不同異常位準處操作,其中每個異常位準具有不同軟體執行特權。另外,異常機制用以在複數個異常位準之間轉換。特定而言,在異常進入或異常退出期間,可執行切換操作以自源異常位準切換至目標異常位準。如在第1圖中圖示,設備10可由各種控制/狀態暫存器70存取,控制/狀態暫存器70儲存在其操作期間藉由處理電路系統引用之各種控制及狀態資訊,此控制/狀態暫存器70包括在上述切換操作之執行期間使用的各種暫存器。
如第1圖圖示,在控制/狀態暫存器70內維持當前過程狀態74,以捕獲關於處理器之當前操作的各種執行狀態資訊。儘管圖示為單框74,但當前過程狀態將不一定全部儲存在單個暫存器內,但可儲存在可用控制/狀態暫存器70內之許多控制及狀態暫存器內。
在操作期間,異常可藉由各種不同機制,例如中斷、系統調用、故障等等觸發。根據一個實施例,當發生異常時,觸發異常進入機制作為切換操作之部分,並且在此過程中當前過程狀態74經捕獲為已保存之過程狀態72。此外,已保存的過程狀態72可儲存在單個暫存器內,或多個暫存器內。隨後藉由處理電路系統執行異常處理操作以處理異常。當處理電路系統後續自異常返回時,已保存的過程狀態將恢復成當前過程狀態,從而允許處理電路系統繼續在發生異常之前正在執行的操作。
為了使得處理電路系統之執行狀態能夠在多個異常位準維持,分離的保存過程狀態暫存器(separate saved process state register; SPSR) 72及當前過程狀態暫存器(current process state register; CPSR) 74可維持多個異常位準,如需要。
第4圖圖示在一個實施例中之各種異常位準之間的相互關係。異常位準EL0具有最低軟體執行特權,並且在EL0處之執行稱作無特權執行。n之增大值,自1至3,指示增大之軟體執行特權。EL2異常位準為處理器虛擬化提供支援。同時EL3階段為兩個安全狀態(即,安全及不安全狀態)提供支援。
此產生第4圖中圖示之一般樹狀結構。特定而言,若提供EL3異常位準,如第4圖中圖示之EL3 200,則其將在安全狀態中運行。在不安全狀態中,若需要支援虛擬化,則因此可在不安全狀態中提供EL2異常位準205為可能的。在安全狀態內,在一個實施例中,不提供EL2位準,並且反而在安全狀態內可提供EL1位準230,在此情況下可提供許多不同EL0位準240、EL0位準242。
在不安全狀態中,若提供EL2位準205,則其可支援多個EL1位準210、EL1位準212、EL1位準214,並且彼等EL1位準之每一者可支援一或更多個EL0位準,如附圖標記220、附圖標記222示意圖示。
各種異常位準之間的轉換經由發生異常而發生。然而,並非所有異常會導致異常位準變化。例如,在一個實施例中,來自EL0之異常通常在EL1中發生(儘管在一些配置EL2中)。在一個實施例中,來自EL1及以上之異常可通常在相同異常位準中發生。然而,來自EL1至EL2/EL3及來自EL2至EL3之各種異常亦可提供及用於類似目的。在一個實施例中,EL3中之異常總在EL3中發生。如第4圖中圖示,保存過程狀態暫存器可設置成與異常位準之每個關聯。若總是來自EL0之異常在EL1中發生,則不需要與EL0位準關聯之分離SPSR。然而,在一個實施例中,可佈置來自EL0之某些異常可在EL0位準中發生,並且在彼情況下可提供EL0之分離SPSR暫存器。
如將參照剩餘圖描述,在本文描述之實施例中已經開發用以管理能力使用之靈活方法以與允許在多個異常位準處之操作的彼類型的處理電路系統一起使用。
特定而言,如第1圖中圖示,控制/狀態暫存器70包括用於儲存每個異常位準之能力配置資訊的每異常位準能力配置暫存器76。能力配置資訊可捕獲各種不同類型資訊,但在一個實施例中,至少辨識當在彼異常位準處執行指令時由處理電路系統執行之操作是否受能力約束。
藉由能夠根據逐個異常位準指定此種能力配置資訊,此提供了靈活性,以允許在至少一個異常位準處之軟體不受能力約束,如需要。因此,例如,可允許在高異常位準處執行之高可信軟體不受能力約束地操作,其可藉由避免對於此種軟體執行能力檢查子程式的需要而產生效能益處。亦可降低此種軟體需要改性之程度以使其與基於能力架構不矛盾。實際上,在一些實施例中,機制可允許傳統、能力未知軟體在至少一個異常位準處執行。
第5圖為根據一個實施例之示意性圖示在暫存器76內捕獲之每異常位準能力配置資訊的表格。在此實施例中,對於每個異常位準,暫存器300可以包含兩個位元欄位。第一欄位305可辨識關聯異常位準是否受能力影響,此欄位在本文亦稱作「A」位元。因此,此位元辨識當軟體在關聯異常位準處執行時,軟體是否受能力約束。在第5圖中圖示之實例中,「0」值指示軟體不受能力約束,及「1」值指示軟體受能力約束。然而,應理解,在其他實施例中,邏輯零值及邏輯一值的意思可逆轉,如需要。
儘管在一個實施例中,每個異常位準能力配置資訊可僅包含欄位305,但在替換實施例中,提供額外欄位310以辨識在關聯異常位準處執行的軟體是否可管理能力,該等能力隨後用以約束在一或更多個較低異常位準處藉由處理電路系統執行的操作。視情況,此資訊亦可辨識在特定異常位準處執行之軟體是否亦可管理用以約束在相同異常位準處藉由處理電路系統執行的操作的能力。例如,在一個實施例中,佈置在特定異常位準處執行的軟體在不同「隔室」中執行可為可能的,其中在一個隔室中執行的軟體能夠管理隨後用以約束藉由在另一隔室中執行之軟體執行的操作的能力。作為特定實例,在特定異常位準處執行的軟體可以能夠在執行狀態或者限制狀態中操作,及在一個隔室中執行的軟體在執行狀態中可經允許以管理隨後用以約束在相同異常位準處在另一隔室中執行之軟體的能力。
如第5圖中圖示,欄位310,用以捕獲關於在特定異常位準處執行以管理能力之軟體的能力之資訊,可在一個實施例中稱為「M」位元。
如第5圖中圖示,若清除A位元及M位元兩者,則此意謂在關聯異常位準處執行之軟體可為傳統軟體,因為軟體不僅不受能力影響,而且不能管理能力,並且因此不需要更改以考慮設備的基於能力架構。
亦如第5圖中圖示,另一可選狀態為清除A位元,但設定M位元。此意謂著在關聯異常位準處執行之軟體不受能力本身影響,但可用以管理能力,該能力隨後用以約束藉由在較低異常位準處執行的軟體執行的操作。
如另一選項,可設定A位元及B位元兩者。此意謂著在關聯異常位準處執行的軟體受能力本身影響,並且亦能夠管理能力。如前所述,當設定M位元時,在一個實施例中此可指示在關聯異常位準處執行之軟體可管理隨後用以約束在較低異常位準處藉由軟體執行的操作的能力,但軟體可能不能管理相同異常位準處之能力。然而,在替換實施例中亦可允許在一些情況下管理與相同異常位準關聯之能力。
在一個實施例中,僅第5圖中圖示之前三組條目為A位元及M位元之有效狀態。然而,在替換實施例中,如由表格300中之最後條目圖示的另一組狀態在一些情況下(例如與最低異常位準EL0關聯)可為有效的。特定而言,根據此狀態,清除M位元但設定A位元。此意謂著在彼異常位準處執行的軟體不能管理能力,但可受能力約束。此可為用以允許最低異常位準EL0之適當配置,其中沒有待管理的較低異常位準。作為特定具體實例,此將允許在EL0處執行之軟體一般在彼等能力由較高異常位準建立之後受能力(如程式計數能力80及DDC 90)約束。
在一個實施例中,每異常位準能力配置暫存器76可認為由複數個暫存器組成,每個暫存器由關聯異常位準「所有」並且包含異常位準之A位元及M位元。明確存取此等暫存器,其中較高異常位準可存取彼位準及以下之暫存器。例如,EL2異常位準存取影響EL2、EL1及EL0之能力配置暫存器。在一個特定實施例中,EL0之能力配置本文受由EL1或者EL2所有之暫存器可配置地控制。
在一個實施例中,藉由每個異常位準對能力配置暫存器之存取可由任何適當機制控制。儲存在可由特定異常位準存取之能力配置暫存器中的值可隨後在一個實施例中在操作期間動態變化,例如當分別在能力已知及能力未知之VM客體之間切換時。
第6圖為圖示與較高配置位準關聯之能力配置可如何影響在較低異常位準處可用之能力配置的表格320。在此表格中,較高異常位準P之M位元值及A位元值由欄位325、欄位330顯示,及較低異常位準Q之對應M位元及A位元由欄位335、欄位340顯示。在此實施例中,若對於異常位準P清除M位元(即,在邏輯零值),則此意謂著異常位準P不受能力影響(即,其A位元亦視為被清除,而不管其實際值),因為較高異常位準不可能受能力影響,同時不能在較低異常位準處配置能力。清除異常位準P之欄位325中的M位元亦意謂著必須清除異常位準Q之M位元(即,零),因為若較高異常位準不能管理能力,則較低異常位準不可能管理能力。如同異常位準P,清除異常位準Q之欄位335中的M位元意謂著欄位340中之A位元亦可視為清除,以用於除讀取欄位340之值外的所有目的。
接下來三個條目顯示以下情況:異常位準P可管理能力,但本身不受能力影響。在此種佈置中,在第5圖之表格300中圖示之上三個條目之每一者與異常位準Q關聯可用。另外,如前文參照第5圖所述,在一個實施例中,若異常位準Q為最低異常位準,則有可能清除M位元欄位335及設定A位元欄位340以便異常位準Q受能力約束,而不能管理能力。
第6圖中最後三個條目顯示情況,其中對於異常位準P設定M位元及A位元。此外,第5圖之表格300中圖示之上三個條目可用於異常位準Q。另外,如前所述,當異常位準Q為最低異常位準時,清除M位元,但設定A位元亦為可能的。
如前所述,在異常進入或異常退出/返回期間,可執行切換操作以自源異常位準切換至目標異常位準。根據所描述實施例,在允許能力之影響根據每個異常位準而變化的情況下,此設備亦提供了一機制作為切換操作之部分,其考慮了能力的影響在源異常位準與目標異常位準之間不同的可能性。特定而言,在源異常位準至目標異常位準之切換操作期間,能力配置儲存器中關於源異常位準及目標異常位準之至少一者的能力配置資訊用以決定在切換操作期間如何管理處理電路系統之執行狀態。此過程將參照第7A圖、第7B圖及第8圖更詳細地論述。
第7A圖圖示對自異常位準X至異常位準Y之異常進入執行的步驟,以決定將保存源異常位準X之何種執行狀態。在步驟400,決定A位元是否對於源異常位準X設定,即異常位準X是否受能力影響。若是,則過程進行至步驟405,其中捕獲異常位準X之能力狀態。如前論述,此將意謂將異常位準X之當前過程狀態暫存器(current process state register; CPSR)的內容保存進可由異常位準Y存取之保存過程狀態暫存器(saved process state register; SPSR)72中。然而,另外,儲存在PCC暫存器80內之當前程式計數能力需要用以辨識源異常位準X之較佳返回位址能力。較佳返回位址將取決於異常類型,但通常將為程式計數值,或者程式計數值加4(假定位元組長度定址,及32位元指令)。除較佳返回位址外,亦將來自當前程式計數能力之剩餘能力資訊複製進由PCC生成之返回位址能力中。在一個實施例中,以此方式生成之返回位址能力將儲存進專用返回位址能力暫存器內,在一個特定實施例中此為能力異常鏈路暫存器(capability exception link register; CELR) 78。
然而,若在步驟400決定不設定A位元,意謂著在源異常位準處執行之軟體不受能力影響,則當仍在將異常位準X之當前過程狀態74保存進保存過程狀態72中的情況時,不需要保存能力以形成返回位址資訊。相反,較佳返回位址可由程式計數值82計算並且保存在適當返回位址儲存元件內,在一個實施例中此為異常鏈路暫存器(exception link register; ELR)。然而,不需要從PCC暫存器80提取能力資訊,因為在異常位準X處執行之軟體不具有由能力約束之指令取出。
儘管一個實施例中可提供分離CELR暫存器78及分離ELR暫存器,但在替換實施例中相同實體結構78可用於兩個情況中。當由於源異常位準X不受能力約束,第7A圖中圖示之過程進行至步驟410時,來源於PC值之較佳返回位址可儲存在CELR之位址欄位內,而在一個實施例中將剩餘欄位之至少一者設定為第一預設值。例如,參照前文參照第3圖論述之標記位元,在此情況下可清除與CELR暫存器78關聯之標記位元以辨識CELR不儲存有效能力,硬體則僅當稍後擷取關於異常返回之資訊時引用儲存返回位址資訊的CELR部分。在替換實施例中,可清除CELR暫存器78中之所有剩餘欄位,例如藉由零擴展在步驟410儲存進CELR暫存器78中之較佳返回位址。
除了決定在異常進入時需要保存源異常位準X之何種執行狀態,亦必須決定目標異常位準Y之適當執行狀態,及特定而言需要決定初始程式計數能力或值以儲存進PCC暫存器80內。此過程在第7B圖中示意地圖示。
如圖示,在步驟420決定A位元是否對於目標異常位準Y設定,即目標異常位準是否受能力影響。若是,過程進行至步驟425,其中使用儲存在第1圖圖示之能力控制儲存元件79中的異常進入位址能力資訊更新程式計數能力暫存器80。特定而言,暫存器79將儲存關於在異常進入時使用之適當位址的資訊,並且還儲存與位址一起提供之關聯能力資訊以形成程式計數能力以儲存在PCC暫存器80內。暫存器79中之異常進入位址資訊可採取各種形式,但在一個實施例中暫存器79採取能力向量基礎位址暫存器(capability vector base address register; CVBAR)之形式。此暫存器提供異常進入之基礎位址,及異常根據此異常類型決定距離此基礎位址之偏移量。因此,關於此種異常之資訊將用以辨識適當位址,此適當位址用以形成加載進PCC暫存器80中之程式計數能力,其中PCC暫存器之能力資訊的剩餘部分由CVBAR中之能力之對應部分形成。
若對於目標異常位準Y設定A位元,此意謂著異常位準Y不受能力影響,並且因此不要求程式計數能力。相反,僅需要形成加載進PCC暫存器80之欄位82中的初始程式計數值。因此,在一個實施例中,如由步驟430圖示,在此方案中設定PCC暫存器80之欄位84、欄位86中的範圍及限制資訊以辨識最大能力,並且使用從異常進入位址暫存器79獲得的資訊更新PC指標值82。在此實例中,引用非能力異常進入位址暫存器,其在一個實施例中可為向量基礎位址暫存器(vector base address register; VBAR)。在一個特定實施例中,VBAR暫存器形成於CVBAR暫存器之較低64位元中,從而允許CVBAR及VBAR暫存器兩者共用相同的實體儲存器結構。
然而,在替換實施例中,可能不需要設定PCC暫存器80中之範圍及限制資訊以辨識最大能力。例如,若佈置硬體以便當前異常位準不受能力影響時,其忽略PCC暫存器80內之範圍資訊84及限制資訊86,則反而範圍及限制資訊可依照要求保持不變,或者清除。然而,在全部PCC暫存器80在所有情況下均被引用之實施例中,藉由設定範圍及限制資訊以辨識最大能力,此將確保在目標異常位準中執行的軟體不受能力約束。
第8圖為圖示在自異常返回期間採取之步驟的流程圖。在此情況下,假定源異常位準為異常位準Y,及目標異常位準為異常位準X。在步驟450,決定是否對於目標異常位準X設定A位元。若是,則過程進行至步驟460,其中恢復目標異常位準之能力狀態。此基本上逆轉在第7A圖之步驟405處採取的步驟,方式是藉由將CELR暫存器78之內容恢復進PCC暫存器80中,及對於異常位準X將SPSR暫存器72之內容恢復進CPSR暫存器74中。
然而,若決定對於目標異常位準X設定A位元,此意謂著異常位準X不受能力影響,則過程進行至步驟455。此處對於異常位準X恢復此(非能力)狀態。在一個實施例中,此再次包括將對於異常位準X恢復進CPSR內容中的SPSR內容。然而,關於PCC暫存器80,在一個實施例中,設定範圍及限制資訊以辨識最大能力,及使用來自ELR之資訊填充指標值欄位82。以如前文參照第7B圖之步驟430論述之大致相同的方式,在一些實施例中,作為設定範圍及限制資訊以辨識最大能力之替換方案,相反可能僅保持範圍及限制資訊「現狀」或清除彼資訊,只要硬體不引用當前異常位準不受能力影響的情況中的資訊。
在此後描述之實施例中,儲存在每個異常位準能力配置暫存器76內之前述能力配置資訊亦可用於額外目的,尤其用於影響當執行某類指令時所生成結果之形式。特定而言,在一個實施例中,前述A位元可用作能力使用資訊,並且當由處理電路系統執行某類指令時,處理電路系統將參照能力使用資訊以決定所生成之結果應生成為能力還是整數值。特定而言,在一個實施例中,如若A位元指示關聯異常位準受能力影響,則當執行某種指令時,處理電路系統將導致以能力之形式生成結果。反之,如若A位元指示關聯異常位準不受能力影響,則當執行此種指令時,處理電路系統將以整數值之形式生成結果。
儘管對於以下描述假設A位元資訊用作能力使用資訊,但在替換實施例中可為此目的維持其他資訊。例如,可提供單獨的專用控制位元以形成能力使用資訊,其可經設定或清除以分別指示能力狀態或非能力狀態。另外地,可使用現有位元之組合導出能力使用資訊,尤其是處理電路系統在能力狀態中還是在非能力狀態中操作如此。
不管如何形成能力使用資訊,應理解,藉由使用影響如何執行特定指令,及尤其為指令生成能力還是整數值作為其結果的此種資訊,此可允許單個指令之可配置執行,從而避免針對要求操作提供能力及非能力指令兩者之需要。此在已經大量使用指令集編碼空間,並且因此很難釋放充足空間以編碼指令之能力及非能力變體兩者的情況中可能非常有用。
第9圖為圖示根據一個實施例當執行指令時藉由處理電路系統執行之操作的流程圖。在步驟500處,決定存在要執行之新指令,隨後在步驟505處決定該指令是否為需要參考能力使用資訊進行結果類型決定的類型。特定而言,若需要,關於應以能力還是整數值之形式產生執行指令的結果進行決定所藉助的技術可限於某些類型之指令。在一個實施例中,方法可用於之指令類型的實例為生成某種形式之位址作為結果的指令。在基於能力的架構中,需要生成此種位址資訊作為能力,因為隨後此可用以嚴格約束如何使用該位址資訊。然而,為了向後相容性,允許指令生成位址資訊作為整數值仍然為有用的,並且本文所述技術允許同一指令用於兩種目的,其中能力使用資訊經佈置以在執行指令時配置結果產生作為能力還是作為整數值。
若在步驟505處決定指令不是需要進行結果類型決定的類型,則過程進行至正規執行指令之步驟510處。然而,若在步驟505處決定需要進行結果類型決定,則在步驟515處為了決定能力使用資訊指示能力狀態還是非能力狀態,由處理電路系統引用能力使用資訊。如前所述,在A位元用作能力使用資訊之一個實施例中,當設定A位元以辨識該當前異常位準受能力影響時,此將指示能力狀態。反之,若清除A位元以指示當前異常位準不受能力影響,則此將指示非能力狀態。
若在步驟515處,決定能力使用資訊指示能力狀態,則在步驟520處以生成能力作為結果之形式來執行指令。在步驟525處,則將結果儲存在能力儲存元件中。
若在步驟515處,能力使用資訊不指示能力狀態,則反之過程進行至步驟530處,其中以生成整數值作為結果之形式來執行指令。隨後,在步驟535處,將該結果儲存在整數儲存元件中。
將根據正在執行之指令類型,選擇能力儲存元件或者整數儲存元件作為分別用以儲存能力或整數值之儲存元件。例如,在一些實施例中,結果作為更新的程式計數產生,並且當能力使用資訊指示能力狀態時此可作為程式計數能力儲存在PCC暫存器80內,或者當能力使用資訊指示非能力狀態時可將其作為程式計數值儲存在程式計數儲存元件內。在一個實施例中,能力暫存器可形成為程式計數能力暫存器80內之欄位,例如儲存程式計數指標值的欄位82。
在其他實施例中,結果可儲存在通用暫存器中,由此當結果為能力時其可儲存在能力暫存器60之一者內,而當結果生成作為整數值時,其可儲存在通用暫存器40之一者內。如先前結合第1圖所論述,在一個實施例中,同一實體儲存器可用以提供通用暫存器40及能力暫存器60兩者,並且因此通用暫存器可由關聯能力暫存器內之欄位(例如,欄位62)形成。
可將第9圖之上述方法應用於各種不同指令。第10A圖及第10B圖圖示一個實例,其中指令為分支立即指令。此種指令將在指令之位元編碼空間內直接編碼的立即值指定為源運算元。此種立即值可佔據指令編碼空間之有效部分,並且因此需要不必複製指令兩次,一次用於生成能力作為結果之版本及一次用於生成整數值作為結果之版本。藉由使用第9圖之方法,此舉可免。
特定而言,如第10A圖所示,當執行分支立即指令時,將決定能力使用資訊是否指示能力狀態,如前論述在一個實施例中其將為設定A位元時之情況。若是,則將更改當前程式計數能力600以生成新程式計數能力620。特定而言,原始指標值602將例如藉由執行加法610與立即值邏輯組合,以生成新指標值622。在一個實施例中,原始程式計數能力中之範圍資訊604及許可資訊606將在新程式計數能力620內複製,如欄位624及欄位626指示。
然而,如第10B圖所示,如當執行同一指令時,能力使用資訊指示非能力狀態,其在一個特定實施例中將為清除A位元時之情況,則結果生成作為程式計數值(亦即,整數值)而不是程式計數能力。在所示特定實施例中,假定程式計數整數值仍然儲存在程式計數能力暫存器80內,並且尤其儲存在第1圖所示之欄位82內。因此,原始程式計數值將由PCC暫存器內容630內之欄位632給定。該值將與立即值組合進行邏輯操作,例如加法640,以生成儲存在更新的PCC暫存器內容650之欄位652中的新的指標值。原始程式計數能力內容630中之剩餘欄位634可僅僅在新程式計數能力內容650中複製,如剩餘欄位654指示,或者可進行如第10B圖中之元件645指示的一些可選的修改。例如,在一個實施例中,可設定剩餘欄位654以表示最高能力,使得新程式計數值不受能力的有效約束。或者,參考第3圖論述之前述標記位元可清除,以便辨識程式計數能力暫存器之內容不儲存有效能力。在一個實施例中,在該情況下可假定欄位652中之指標值仍然表示有效的程式計數整數值。
然而,在替換實施例中,可能不必要採取此種步驟。例如,若佈置硬體以便當前異常位準不受能力影響時,其忽略PCC暫存器80內之範圍資訊及限制資訊,則反而範圍及限制資訊可根據需要保持不變,或者清除(例如,藉由擴展至彼等剩餘欄位內的零)。
第11A圖及第11B圖圖示另一類型分支指令(即具有鏈路之分支立即指令)之可配置執行。執行此種指令導致先前參考第10A圖及第10B圖論述之功能的執行,而且導致鏈路暫存器由返回位址填充,該返回位址在一個實施例中可根據能力使用資訊經配置為返回位址能力或者返回位址整數值。
在第11A圖及第11B圖中,相同的元件符號用於表示與第10A圖及第10B圖共用之元件。因此,參考第11A圖,可見新程式計數能力620以與先前參考第10A圖論述之完全相同的方式生成。另外,生成能力返回位址以儲存在能力鏈路暫存器(capability link register; CLR)內。在一個實施例中,能力鏈路暫存器可為參考第1圖論述之能力暫存器60的特定一者,在一個特定實施例C30 中。如第11A圖所示,用於儲存在欄位662內之返回位址藉由將偏移量加至程式計數能力內的當前指標值602來生成,該當前指標值602在執行指令之前存在。在一個實施例中,將指令長度加至指標值,以便返回位址有效地指向具有鏈路之分支指令之後的下一個指令。此由第11A圖中加法框670指示。亦如第11A圖中所示,在一個實施例中,原始程式計數能力之欄位中的範圍資訊604及許可資訊606在保持返回位址能力660之能力鏈路暫存器之欄位664、欄位666內複製。
然而,若清除指示非能力狀態之A位元,則所執行之處理如第11B圖中圖示。新程式計數值以與先前參考第10B圖論述之完全相同的方式生成。另外,返回位址682藉由將指令長度加至指標值632而生成,如由加法元件670指示。此可儲存在與能力鏈路暫存器實體分隔的鏈路暫存器內,並且在一個實施例中可為通用暫存器40中之一個。或者,鏈路暫存器可由能力鏈路暫存器680內之欄位(有效地為欄位682)提供,該欄位亦包含額外欄位684。此等剩餘欄位可使用來自原始程式計數能力630之剩餘欄位資料634直接填充,或者可進行一些可選的修改,如元件675指示。此等可選的修改與先前針對可選的修改645論述的基本上相同,該可選的修改645可根據程式計數之剩餘欄位執行。因此,可設定此等修改以辨識最高能力,或者可清除標記位元以指示能力鏈路暫存器不儲存有效能力。作為另一替代方案,如若硬體在任何情況下將忽略彼等欄位中之值,則彼等欄位可為零擴展或保持原樣。
第12A圖及第12B圖圖示另一替換實施例,其中指令不為分支指令,而為位址生成指令。在此實例中,位址生成指令指定將寫入結果之目標的識別符,及要用作源運算元的立即值。
如第12A圖所示,若當設定A位元時執行指令,則此將導致生成之位址資訊採取能力之形式、儲存在目標能力暫存器CN 內,其中根據目標ID選擇能力暫存器。能力暫存器通常為先前參考第1圖論述之通用能力暫存器60中的一者。
在此實例中,當前程式計數能力700內之指標值702將使用指定立即值進行邏輯操作710,以生成位址值722。在一個實施例中,範圍資訊704及許可資訊706可在結果能力720之欄位724、欄位726內複製。邏輯操作710之形式將取決於位址生成指令之類型。在單個情況中,邏輯操作可僅包括將作為偏移量之立即值加至指標值702。
第12B圖圖示在清除A位元之情況下執行位址生成指令。在此情況下,當前程式計數能力730中之指標值732使用立即值進行邏輯操作740,其中結果位址值750隨後儲存在整數暫存器XN 中之一者(通常為通用暫存器40中之一者)內,所選擇的特定暫存器根據位址生成指令內指定之目標ID而選擇。在此情況下,在執行位址生成指令期間不使用程式計數能力730之剩餘欄位734。
從第12A圖及第12B圖之以上論述可知,應理解,可執行位址生成指令以根據能力使用資訊生成位址能力或者位址整數值。
位址生成指令可採取各種形式,但在一個指定實施例中可採取ARM指令集中之ADR指令或者ADRP指令之形式,該ARM指令集在由英國劍橋ARM有限公司設計之處理器中使用。
儘管在第10A圖至第12B圖的實例中,以舉例之方式給定之指令為採取立即值作為源運算元的全部形式,但是應理解,所描述的技術亦可與不使用立即值作為源運算元之指令關聯使用。特定而言,在整數暫存器中採取絕對或PC(C)相對分支目標的分支變體,及在整數暫存器中採取絕對或PC(C)相對分支目標的位址生成變體亦是可能的,如同採取整數暫存器及立即值兩者的變體。
例如,可以支援以下類型之指令執行。 實例1 BranchRegister(bits(5) n, boolean link) Bits(64) addr = X[n]; if CapabilitiesEnabled() then if link then CLR = PCC + 4; PCC = PCCWithAddress(addr); else if link then LR = PC + 4; PC = addr;
上文的實例1辨識從整數暫存器採取絕對分支目標之分支變體,如由「BranchRegister」形式指示。值「bits(5) n」指定用以辨識整數源暫存器之暫存器指數,並且「boolean link」欄位為辨識指令是否為具有鏈路之分支變體的一個位元值。隨後64位元位址由整數暫存器X決定,該整數暫存器X由暫存器指數辨識。若能力使用資訊指示賦能能力,則更新程式計數能力以便PCC內之指標值變為從整數暫存器X獲得之64位元位址,及剩餘欄位由上述程式計數能力形成。若指令為具有鏈路之分支指令,則能力鏈路暫存器藉由將指令長度(在此情況下四位元組)添加至當前程式計數能力而更新。反之,若能力使用資訊指示不賦能能力,則新程式計數值由從整數暫存器X獲得之位址值形成。若指令為具有鏈路之分支指令,則鏈路暫存器藉由將指令長度添加至當前程式計數值而更新。 實例2 BranchRegisterRelative(bits(5) n) Bits(64) offset = X[n]; if CapabilitiesEnabled() then PCC = PCC + offset; // 將偏移添加至PCC中之位址欄位 else PC = PC + offset;
實例2辨識從整數暫存器採取PC(C)相對分支目標之分支變體,如由「BranchRegisterRelative」形式所指示。又,值「bits(5) n」指定用以辨識整數源暫存器之暫存器指數。在此情況下,假定不存在指令之「具有鏈路」變體。隨後64位元位址由整數暫存器X決定,該整數暫存器X由暫存器指數辨識。若能力使用資訊指示賦能能力,則更新程式計數能力以便PCC內之指標值使來自整數暫存器X之整數值添加至其作為偏移,以生成更新的指標值,並且剩餘欄位由上述程式計數能力形成。反之,若能力使用資訊指示不賦能能力,則新程式計數值藉由將來自整數暫存器X之整數值作為偏移添加至當前PCC值而形成。
從上述實施例可知,此種實施例提供有效機制以支援特定指令之能力生成及整數值生成版本兩者,但不必在指令編碼空間內單獨地編碼彼等兩個不同變體。此提供非常有效的機制以用於支援指令執行以生成結果作為能力,同時實現向後相容性,其中可替代地執行相同指令來生成結果作為整數值。
第13圖圖示可使用之模擬器實施方式。儘管先前所述實施例按照用於操作支援相關方法之特定處理硬體的設備及方法實施本發明,但亦可能提供根據本文所述之實施例的指令執行環境,其透過使用電腦程式來實施。此種電腦程式通常稱為模擬器,只要其提供硬體架構之基於軟體實施方式。各種模擬器電腦程式包括仿真器、虛擬機、模型及二元翻譯器(包括動態二元翻譯器)。一般而言,模擬器實施方式可在主機處理器830上運行,視情況運行主作業系統820、支援模擬器程式810。在一些佈置中,在硬體與設置之指令執行環境及/或設置在相同主處理器上之多個不同指令執行環境之間存在多個模擬層。从歷史上看,已經要求功能強大的處理器提供以合理速度執行的模擬器實施方式,但此種方法可在某些情況中調整,例如當由於相容性或再使用理由而欲將本端代碼運行到另一處理器時。例如,模擬器實施方式可提供具有不由主機處理器硬體支援之額外功能性的指令執行環境,或者提供通常與不同硬體架構關聯之指令執行環境。模擬之概述在刊登在冬季1990 USENIX會議中第53-63頁中之Robert Bedichek所寫之「Some Efficient Architecture Simulation Techniques」中給出。
就先前已參考特定硬體構造或特徵描述實施例而言,在模擬實施例中,可藉由合適的軟體構造或特徵來提供等效功能。例如,特定電路系統可在模擬實施例中作為電腦程式邏輯實施。同樣地,諸如暫存器或快取記憶體之記憶體硬體可在模擬實施例中作為軟體資料結果實施。在先前所述實施例中引用之硬體元件的一或更多個存在於主硬體(例如,主機處理器830)上的佈置中,一些模擬實施例可利用主硬體,在適合之情況下。
模擬器程式810可儲存在電腦可讀儲存媒體(其可為非暫時性媒體),並且將程式介面(指令執行環境)提供至與硬體架構之應用程式介面相同之目標代碼800(其可包括應用、作業系統及超管理器),該硬體架構藉由模擬器程式810模造。因而,目標代碼800之程式指令,包括其中指令受能力使用資訊影響之所述指令,可使用模擬器程式810在指令執行環境內執行,以便實際上不具有設備2之硬體特徵之主機電腦830可仿真此等特徵。
在本申請案中,使用用語「經配置以...」意謂設備元件具有能夠執行所定義操作之結構。在此上下文中,「配置」意謂硬體或軟體之互連之排列或方式。例如,設備可具有提供定義操作之專用硬體,或處理器或其他處理元件可經程式化以執行功能。「經配置以」不暗示設備元件需要以任何方式改變以便提供所定義之操作。
儘管本文已參考所附圖式詳細地描述本發明之說明性實施例,但應理解,本發明並不限於彼等精確實施例且熟習此項方法者可在不背離如隨附申請專利範圍所定義之本發明之範疇及精神之情況下在其中實施各種改變、添加及修改。例如,可在不脫離本發明之範疇下,對從屬請求項之特徵與獨立請求項之特徵進行多種組合。
2‧‧‧資料處理設備
4‧‧‧處理管線
6‧‧‧取出階段
8‧‧‧解碼階段
10‧‧‧發佈階段
12‧‧‧執行階段
14‧‧‧回寫階段
20‧‧‧1階(L1)指令快取記憶體
22‧‧‧分支預測器
24‧‧‧分支目標位址快取記憶體(BTAC)
30‧‧‧執行單元/算術/邏輯單元(ALU)
32‧‧‧執行單元/浮點(FP)單元
34‧‧‧執行單元/加載/儲存單元
36‧‧‧1階(L1)資料快取記憶體
40‧‧‧暫存器
44‧‧‧2階(L2)快取記憶體
50‧‧‧主記憶體
52‧‧‧轉換旁看緩衝器(TLB)
60‧‧‧有界指標暫存器
62‧‧‧指標
64‧‧‧範圍資訊
66‧‧‧限制資訊
68‧‧‧界限
69‧‧‧界限
70‧‧‧控制/狀態暫存器
72‧‧‧保存過程狀態暫存器
74‧‧‧當前過程狀態暫存器(CPSR)
76‧‧‧異常位準能力配置暫存器
78‧‧‧能力異常鏈路暫存器(CELR)
79‧‧‧能力控制儲存元件/暫存器
80‧‧‧程式計數能力(PCC)暫存器
82‧‧‧欄位
84‧‧‧欄位
86‧‧‧欄位
90‧‧‧預設資料能力(DDC)暫存器
92‧‧‧範圍資訊
94‧‧‧限制資訊
100‧‧‧能力暫存器
102‧‧‧指標
104‧‧‧範圍資訊
106‧‧‧限制資訊
108‧‧‧標記位元
110‧‧‧記憶體位址空間
115‧‧‧資料塊
120‧‧‧標記欄位
200‧‧‧EL3
205‧‧‧EL2異常位準
210‧‧‧EL1位準
212‧‧‧EL1位準
214‧‧‧EL1位準
220‧‧‧附圖標記
222‧‧‧附圖標記
230‧‧‧EL1位準
240‧‧‧EL0位準
242‧‧‧EL0位準
300‧‧‧暫存器
305‧‧‧第一欄位
310‧‧‧額外欄位
320‧‧‧表格
325‧‧‧欄位
330‧‧‧欄位
335‧‧‧欄位
340‧‧‧欄位
400‧‧‧步驟
405‧‧‧步驟
410‧‧‧步驟
420‧‧‧步驟
425‧‧‧步驟
430‧‧‧步驟
450‧‧‧步驟
455‧‧‧步驟
460‧‧‧步驟
500‧‧‧步驟
505‧‧‧步驟
510‧‧‧步驟
515‧‧‧步驟
520‧‧‧步驟
525‧‧‧步驟
530‧‧‧步驟
535‧‧‧步驟
600‧‧‧當前程式計數能力
602‧‧‧原始指標值
604‧‧‧範圍資訊
606‧‧‧許可資訊
610‧‧‧加法
620‧‧‧新程式計數能力
622‧‧‧新指標值
624‧‧‧欄位
626‧‧‧欄位
630‧‧‧PCC暫存器內容
632‧‧‧欄位
634‧‧‧欄位
640‧‧‧加法
645‧‧‧元件
650‧‧‧新程式計數能力內容
652‧‧‧欄位
654‧‧‧欄位
660‧‧‧返回位址能力
662‧‧‧欄位
664‧‧‧欄位
666‧‧‧欄位
670‧‧‧加法元件
675‧‧‧元件
680‧‧‧能力鏈路暫存器
682‧‧‧欄位
684‧‧‧欄位
700‧‧‧當前程式計數能力
702‧‧‧指標值
704‧‧‧範圍資訊
706‧‧‧許可資訊
710‧‧‧邏輯操作
720‧‧‧結果能力
722‧‧‧位址值
724‧‧‧欄位
726‧‧‧欄位
730‧‧‧當前程式計數能力
732‧‧‧指標值
734‧‧‧欄位
740‧‧‧邏輯操作
750‧‧‧結果位址值
800‧‧‧目標代碼
810‧‧‧模擬器程式
820‧‧‧主機作業系統
830‧‧‧主機電腦
本技術將以舉例之方式參照附圖中圖示之實施例進一步地描述,其中:
第1圖為根據一個實施例之設備的方塊圖;
第2圖圖示若嘗試設置或存取有界指標儲存元件組內之指標值,則可能觸發錯誤的指令類型之實例,其中指標值用以指定超出藉由關聯範圍資訊指示之範圍的位址;
第3圖圖示根據一個實施例與有界指標關聯之標記位元之使用;
第4圖圖示根據一個實施例如何可提供多個異常位準;
第5圖圖示可根據一個實施例提供之每個異常位準能力配置資訊的一形式;
第6圖為圖示根據一個實施例兩個不同異常位準之能力配置資訊之可能選項的表格;
第7A圖及第7B圖為圖示根據一個實施例如何在異常進入操作期間管理處理電路系統之執行狀態的流程圖;例圖示
第8圖為根據一個實施如何在異常返回操作期間管理處理電路系統之執行狀態的流程圖;
第9圖為圖示根據一個實施例之如何根據能力使用資訊來控制指令之執行的流程圖;
第10A圖及第10B圖圖示根據一個實施例之如何根據能力使用資訊辨識能力狀態還是非能力狀態來控制分支指令之執行;
第11A圖及第11B圖圖示根據一個實施例之如何根據能力使用資訊指示能力狀態還是非能力狀態來控制具有鏈路的分支指令之執行;
第12A圖及第12B圖圖示根據一個實施例之如何根據能力使用資訊指示能力狀態還是非能力狀態來控制位址生成指令之執行;及
第13圖圖示可使用之模擬器實施方式。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無

Claims (23)

  1. 一種設備,包括: - 處理電路系統,用以執行一指令序列; - 一整數儲存元件,用以儲存一整數值以藉由該處理電路系統存取; - 一能力儲存元件,用以儲存一能力以藉由該處理電路系統存取;及 - 一能力使用儲存器,用以儲存能力使用資訊; 其中該處理電路系統回應於執行該指令序列中之至少一個指令,以根據該能力使用資訊,藉由以下步驟生成一結果以儲存在一目標儲存元件: 當該能力使用資訊辨識一能力狀態時,生成該結果作為一能力及選擇該能力儲存元件作為目該標儲存元件;及 當該能力使用資訊辨識一非能力狀態時,生成該結果作為一整數值及選擇該整數儲存元件作為該目標儲存元件。
  2. 如請求項1所述之設備,其中該整數儲存元件為複數個整數儲存元件之一選定整數儲存元件、一程式計數儲存元件、及一鏈路儲存元件中的一者。
  3. 如請求項1所述之設備,其中該能力儲存元件為複數個能力儲存元件之一選定能力儲存元件、一程式計數能力儲存元件、及一能力鏈路儲存元件中的一者。
  4. 如請求項1所述之設備,其中該至少一個指令包含指定一立即值作為一源運算元的一指令。
  5. 如請求項4所述之設備,其中該至少一個指令包含經佈置以使用程式計數資訊作為一另一源運算元的一指令。
  6. 如請求項1所述之設備,其中該生成之結果為位址資訊。
  7. 如請求項1所述之設備,其中該至少一個指令為用以更新程式計數資訊之一分支指令。
  8. 如請求項7所述之設備,其中回應於該分支指令,該處理電路系統經佈置以生成更新的程式計數資訊作為至少一個結果,根據該能力狀態,該處理電路系統經佈置以生成該更新的程式計數資訊作為儲存在一程式計數能力儲存元件中的一程式計數能力,或者生成該更新的程式計數資訊作為儲存在一程式計數儲存元件中的一程式計數值。
  9. 如請求項8所述之設備,其中該處理電路系統經佈置以藉由根據由該分支指令指定之一立即值調整一當前程序計數值來生成該更新的程式計數資訊。
  10. 如請求項8所述之設備,其中該程式計數儲存元件由該程式計數能力儲存元件內之一欄位形成。
  11. 如請求項7所述之設備,其中該分支指令為具有鏈路的一分支指令,並且該處理電路系統經佈置以生成源於當前程式計數資訊的返回位址資訊作為至少一個結果,根據該能力狀態,該處理電路系統經佈置以生成該返回位址資訊作為儲存在一能力鏈路儲存元件中的一返回位址能力或者生成該返回位址資訊作為儲存在一鏈路儲存元件中的一返回位址值。
  12. 如請求項11所述之設備,其中該處理電路系統經佈置以藉由更改一當前程式計數值而生成該返回位址資訊。
  13. 如請求項11所述之設備,其中該鏈路儲存元件由該能力鏈路儲存元件內之一欄位形成。
  14. 如請求項1所述之設備,其中該至少一個指令為用以生成源於程式計數資訊之位址資訊作為該結果的一位址生成指令。
  15. 如請求項14所述之設備,其中該處理電路系統經佈置以藉由根據由該位址生成指令指定之一立即值調整一當前程序計數值來生成該位址資訊。
  16. 如請求項14所述之設備,其中該位址生成指令提供一目標識別符,及該處理電路系統經佈置以當該能力使用資訊辨識該能力狀態時將該目標識別符映射至複數個能力儲存元件之一選定能力儲存元件,及當該能力使用資訊辨識該非能力狀態時將該目標識別符映射至複數個整數儲存元件之一選定整數儲存元件。
  17. 如請求項1所述之設備,其中: 該整數儲存元件由該能力儲存元件內之一欄位形成,及當該整數值而非該能力儲存為該結果時,將該能力儲存元件之至少一個剩餘欄位設定為一預設值。
  18. 如請求項1所述之設備,其中該能力包含一有界指標。
  19. 如請求項1所述之設備,其中該能力使用資訊為複數個異常位準之每一者的能力配置資訊,每個異常位準具有不同軟體執行特權,並且對於每個異常位準,該能力配置資訊至少辨識當在該異常位準處執行指令時由該處理電路系統執行之該等操作是否受能力約束。
  20. 一種在一設備內控制指令執行之方法,該設備具有:用以執行一指令序列之處理電路系統;用以儲存一整數值以藉由該處理電路系統存取的一整數儲存元件;用以儲存一能力以藉由該處理電路系統存取的一能力儲存元件;及用以儲存能力使用資訊之一能力使用儲存器,該方法包括以下步驟: 回應於執行該指令序列中之至少一個指令,根據該能力使用資訊,藉由以下步驟生成一結果以儲存在一目標儲存元件中: 當該能力使用資訊辨識一能力狀態時,生成該結果作為一能力及選擇該能力儲存元件作為該目標儲存元件;及 當該能力使用資訊辨識一非能力狀態時,生成該結果作為一整數值及選擇該整數儲存元件作為該目標儲存元件。
  21. 一種設備,包括: - 處理構件,用於執行一指令序列; - 整數儲存元件構件,用於儲存一整數值以藉由該處理構件存取; - 能力儲存元件構件,用於儲存一能力以藉由該處理構件存取;及 - 能力使用儲存構件,用於儲存能力使用資訊; 回應於執行該指令序列中之至少一個指令,該處理構件根據該能力使用資訊,藉由以下步驟生成一結果以儲存在一目標儲存元件構件中: 當該能力使用資訊辨識一能力狀態時,生成該結果作為一能力及選擇該能力儲存元件構件作為該目標儲存元件構件;及 當該能力使用資訊辨識一非能力狀態時,生成該結果作為一整數值及選擇該整數儲存元件構件作為該目標儲存元件構件。
  22. 一種控制一主機資料處理設備以提供一指令執行環境的電腦程式,該電腦程式包括: 處理程式邏輯,用以執行一指令序列; 一整數資料結構,用以儲存一整數值以藉由該處理程式邏輯存取; 一能力資料結構,用以儲存一能力以藉由該處理程式邏輯存取;及 一能力使用資料結構,用以儲存能力使用資訊; 其中該處理程式邏輯回應於執行該指令序列中之至少一個指令,以根據該能力使用資訊,藉由以下步驟生成一結果以儲存在一目標資料結構中: 當該能力使用資訊辨識一能力狀態時,生成該結果作為一能力及選擇該能力資料結構作為該目標資料結構;及 當該能力使用資訊辨識一非能力狀態時,生成該結果作為一整數值及選擇該整數資料結構作為該目標資料結構。
  23. 一種儲存如請求項22所述之電腦程式的電腦可讀儲存媒體。
TW107122485A 2017-07-04 2018-06-29 用於控制指令執行的設備與方法 TWI771441B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1710733.5 2017-07-04
GB1710733.5A GB2564130B (en) 2017-07-04 2017-07-04 An apparatus and method for controlling execution of instructions

Publications (2)

Publication Number Publication Date
TW201907296A true TW201907296A (zh) 2019-02-16
TWI771441B TWI771441B (zh) 2022-07-21

Family

ID=59592380

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107122485A TWI771441B (zh) 2017-07-04 2018-06-29 用於控制指令執行的設備與方法

Country Status (9)

Country Link
US (1) US11119778B2 (zh)
EP (1) EP3649550B1 (zh)
JP (1) JP7445431B2 (zh)
KR (1) KR102586257B1 (zh)
CN (1) CN110799939B (zh)
GB (1) GB2564130B (zh)
IL (1) IL271142B2 (zh)
TW (1) TWI771441B (zh)
WO (1) WO2019008324A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI707272B (zh) * 2019-04-10 2020-10-11 瑞昱半導體股份有限公司 可執行指令的電子裝置以及指令執行方法
TWI743698B (zh) * 2019-08-30 2021-10-21 開曼群島商創新先進技術有限公司 解譯執行位元組碼指令流的方法及裝置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2571996B (en) * 2018-03-16 2020-09-09 Advanced Risc Mach Ltd Branch target variant of branch-with-link instruction
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction
CN115220789B (zh) * 2022-06-24 2023-02-07 北京联盛德微电子有限责任公司 一种用于多寄存器的操作命令触发调度方法及单元

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2059652B (en) * 1979-09-29 1983-08-24 Plessey Co Ltd Memory protection system using capability registers
DE69529544T2 (de) * 1994-04-28 2003-12-11 Sun Microsystems Inc Vorrichtung und Verfahren zum direkten Berechnen von Koordinaten eines abzuschneidenden Gebiets
GB2307072B (en) * 1994-06-10 1998-05-13 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
GB2480285A (en) * 2010-05-11 2011-11-16 Advanced Risc Mach Ltd Conditional compare instruction which sets a condition code when it is not executed
US8782380B2 (en) * 2010-12-14 2014-07-15 International Business Machines Corporation Fine-grained privilege escalation
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
US20140301719A1 (en) * 2013-04-08 2014-10-09 Broadcom Corporation Processing cache for multiple bit precisions
US9239801B2 (en) * 2013-06-05 2016-01-19 Intel Corporation Systems and methods for preventing unauthorized stack pivoting
US10235219B2 (en) 2015-07-27 2019-03-19 Sony Interactive Entertainment America Llc Backward compatibility by algorithm matching, disabling features, or throttling performance
GB2541714B (en) * 2015-08-27 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour
GB2544315B (en) * 2015-11-12 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers
GB2548604B (en) * 2016-03-23 2018-03-21 Advanced Risc Mach Ltd Branch instruction
GB2562102B (en) * 2017-05-05 2019-09-04 Advanced Risc Mach Ltd An apparatus and method for managing use of capabilities
GB2563009B (en) * 2017-05-25 2019-12-25 Advanced Risc Mach Ltd An apparatus and method for interpreting permissions associated with a capability
GB2563010B (en) * 2017-05-25 2019-12-25 Advanced Risc Mach Ltd An apparatus and method for managing a capability domain
US10860709B2 (en) * 2018-06-29 2020-12-08 Intel Corporation Encoded inline capabilities

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI707272B (zh) * 2019-04-10 2020-10-11 瑞昱半導體股份有限公司 可執行指令的電子裝置以及指令執行方法
TWI743698B (zh) * 2019-08-30 2021-10-21 開曼群島商創新先進技術有限公司 解譯執行位元組碼指令流的方法及裝置

Also Published As

Publication number Publication date
EP3649550B1 (en) 2022-09-07
GB2564130B (en) 2020-10-07
KR20200021516A (ko) 2020-02-28
WO2019008324A1 (en) 2019-01-10
IL271142B1 (en) 2023-11-01
JP2020525934A (ja) 2020-08-27
GB201710733D0 (en) 2017-08-16
IL271142B2 (en) 2024-03-01
JP7445431B2 (ja) 2024-03-07
CN110799939A (zh) 2020-02-14
US20200201643A1 (en) 2020-06-25
US11119778B2 (en) 2021-09-14
TWI771441B (zh) 2022-07-21
GB2564130A (en) 2019-01-09
IL271142A (en) 2020-01-30
CN110799939B (zh) 2023-09-29
KR102586257B1 (ko) 2023-10-10
EP3649550A1 (en) 2020-05-13

Similar Documents

Publication Publication Date Title
JP6803376B2 (ja) 命令実行挙動を制御するための装置および方法
TWI781170B (zh) 用於管理能力使用的設備與方法
TWI771441B (zh) 用於控制指令執行的設備與方法
CN110663024B (zh) 用于诠释与能力相关联的权限的装置及方法
CN110622133B (zh) 用于管理能力域的设备及方法
JP2023512502A (ja) ケイパビリティベースの処理のための装置及び方法
TW202340955A (zh) 使用能力約束記憶體存取之技術
JP2024515081A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法
JP2024517627A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法