TW202319913A - 用於使用能力限制對記憶體存取之技術 - Google Patents

用於使用能力限制對記憶體存取之技術 Download PDF

Info

Publication number
TW202319913A
TW202319913A TW111114754A TW111114754A TW202319913A TW 202319913 A TW202319913 A TW 202319913A TW 111114754 A TW111114754 A TW 111114754A TW 111114754 A TW111114754 A TW 111114754A TW 202319913 A TW202319913 A TW 202319913A
Authority
TW
Taiwan
Prior art keywords
capability
generated
value
literal
information
Prior art date
Application number
TW111114754A
Other languages
English (en)
Inventor
法蘭克斯克里斯多夫雅克 博特曼
湯瑪士克里斯多夫 格羅卡特
布雷德利約翰 史密斯
Original Assignee
英商Arm股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英商Arm股份有限公司 filed Critical 英商Arm股份有限公司
Publication of TW202319913A publication Critical patent/TW202319913A/zh

Links

Images

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
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3557Indexed addressing using program counter as base address

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

提供一種用於使用能力限制對記憶體存取之技術。提供一種設備,該設備具有用於執行在其期間產生對記憶體之存取請求的操作的處理電路系統,其中該處理電路系統經配置以使用提供一指標值及關聯限制資訊的能力產生用於該等存取請求的記憶體位址。該設備亦提供能力產生電路系統,該能力產生電路系統回應於該處理電路系統執行識別該記憶體的一文字集用場中的一位置的一能力產生指令而從該文字集用場中的該位置檢索一文字值及生產一經產生能力,其中該經產生能力的該指標值係從該文字值判定。該經產生能力的該限制資訊係取決於由該能力產生指令指定的資訊而從一有限組的選項選擇。已發現此一方法提供用於產生能力同時降低碼尺寸的一種穩健機制。

Description

用於使用能力限制對記憶體存取之技術
本技術係關於資料處理領域,且更明確地係關於使用能力之對於記憶體存取的限制。
日漸關注在其中某些能力係對給定程序定義之以能力為基的架構,且若嘗試在經定義能力外側實行操作,可觸發錯誤。能力可採用各種形式,但能力的一種類型係有界指標(其亦可稱為「胖指標(fat pointer)」)。
由於將能力使用為系統內的安全控制措施,例如,藉由迫使參考能力執行對記憶體的存取可僅相關於從該能力判定的經定義區域內的記憶體位置,且僅若符合亦藉由該能力定義的某些許可檢查時執行,重點係使建立能力的能力受嚴格控制。
一種可用於產生能力的機制涉及允許編譯器在編譯關聯程式碼時產生能力,其中接著將所經產生能力儲存在文字集用場(literal pool)內側,其與經編譯程式碼組合接著在非揮發性記憶體中形成靜態影像。當程式碼運行時,可接著使用經編譯碼內的指令將儲存在文字集用場中之經編譯器產生能力載入至暫存器中。在一些系統中,能力一旦已載入至此類暫存器中,便可能修改該能力,但在典型系統中,將僅允許用以降低邊界或降低與能力關聯之許可的任何修改,因此導致相對於原始經編譯器產生能力的能力降低。
雖然使用編譯器產生能力允許穩固地控制能力產生,在靜態影像之碼尺寸上可具有顯著的不利影響。具體而言,導因於能力相對於習知指標的固有較大尺寸,且亦導因於與此類功態關聯的對準需求,將能力儲存在文字集用場中可顯著增加整體碼尺寸。在許多低成本系統中,裝置一般係記憶體受限且非揮發性儲存器係稀缺的,且因此,經編譯器產生能力的使用在程式碼尺寸上導致的增加在此類情況中係不具吸引力的。因此提供用於提供此類能力,同時在該等能力可以此產生的方式上保持嚴格程度的控制的經改善機制將係所欲的。
在一個實例配置中,提供一種設備,其包含:處理電路系統,以執行在其期間產生對記憶體的存取請求的操作,其中該處理電路系統經配置以使用提供一指標值及關聯限制資訊的能力產生用於該等存取請求的記憶體位址;及能力產生電路系統,其回應於該處理電路系統執行識別在該記憶體的一文字集用場中的一位置的一能力產生指令而從該文字集用場中的該位置檢索一文字值及生產一經產生能力,其中該經產生能力的該指標值係從該文字值判定,且該經產生能力的該限制資訊係取決於由該能力產生指令指定的資訊而從一有限組的選項選擇。
在另一個實例配置中,提供一種限制對記憶體存取之方法,其包含:利用處理電路系統以執行在其期間產生對記憶體存取請求的操作,其中該處理電路系統使用提供一指標值及關聯限制資訊的能力產生用於該等存取請求的記憶體位址;及回應於該處理電路系統執行識別在該記憶體的一文字集用場中的一位置的一能力產生指令而執行一能力產生操作,該能力產生操作包含從該文字集用場中的該位置檢索一文字值及生產一經產生能力,其中該經產生能力的該指標值係從該文字值判定,且該經產生能力的該限制資訊係取決於由該能力產生指令指定的資訊而從一有限組的選項選擇。
在又一進一步實例配置中,提供一種用於控制一主機資料處理設備以提供一指令執行環境的電腦程式,該電腦程式包含:處理程式邏輯,以執行在其期間產生對記憶體之存取請求的操作,其中該處理程式邏輯經配置以使用提供一指標值及關聯限制資訊的能力產生用於該等存取請求的記憶體位址;及能力產生程式邏輯,其回應於該處理程式邏輯執行識別在該記憶體的一文字集用場中的一位置的一能力產生指令而從該文字集用場中的該位置檢索一文字值及生產一經產生能力,其中該經產生能力的該指標值係從該文字值判定,且該經產生能力的該限制資訊係取決於由該能力產生指令指定的資訊而從一有限組的選項選擇。可提供一種用於儲存此一電腦程式的電腦可讀媒體,且該電腦可讀媒體可採非暫時性或暫時性形式。
根據本文描述之技術,提供一種設備,其具有用於執行在其期間產生對記憶體的存取請求的操作的處理電路系統。該處理電路系統經配置以使用提供一指標值及關聯限制資訊的能力產生用於該等存取請求的記憶體位址。由該處理電路系統產生的該記憶體位址可係執行位址轉譯之系統中的虛擬位址,或替代地可係不支援位址轉譯之系統中的實體位址。
根據本文描述之技術,該設備亦可提供能力產生電路系統,該能力產生電路系統回應於該處理電路系統執行識別在該記憶體的一文字集用場中的一位置的一能力產生指令而從該文字集用場中的該位置檢索一文字值及生產一經產生能力,其中該經產生能力的該指標值係從該文字值判定。應注意到雖然文字值可用以判定指標值,文字值本身不係能力,且取而代之地使用能力產生電路系統產生其指標值係從文字值判定的能力。為產生該能力,能力產生電路系統進一步經配置以取決於由能力產生指令指定的資訊而從一有限組的選項選擇經產生能力的限制資訊。
已發現到此一方法促成可與由編譯器產生之能力受相同程度之信任的能力的產生,但與合併經編譯器產生能力的實施方案相比時,具有在碼尺寸上的顯著降低。具體而言,相關於受信任的經產生能力,根據本文描述之技術,能力產生電路系統藉由執行由經編譯碼提供的能力產生指令而與由能力產生指令直接指定的特定其他資訊組合地產生該能力,其中能力產生電路系統僅使用來自文字集用場的文字值(亦即,將已由編譯器產生且係靜態影像之部分的值)。由於能力係從文字集用場中的文字值產生,且避免將經編譯器產生能力儲存在文字集用場內的需求,可顯著降低文字集用場的尺寸。例如,文字值一般可具有標準指標值的尺寸,其係相對於對應能力之尺寸的顯著降低尺寸。此外,與儲存在文字集用場內之能力關聯的對準問題不再發生,導致進一步的效率及整體碼尺寸上的進一步降低。
已發現到此一方法在許多系統中可具有顯著利益。例如,通常的情形係可已於先前藉由編譯器產生之顯著數目的所需能力僅存取小區域的記憶體,且一般僅具有受特定限制的許可組合。因此,可將用以形成能力之限制資訊的範圍及許可的共同子集識別為能力產生電路的一有限組的可用選項,其中該等選項的一者接著在產生能力時取決於由該能力產生指令指定的資訊選擇。藉由避免需要將可能大數目的經編譯器產生能力指定在靜態影像內,且取而代之地允許該等能力在碼的執行期間使用文字集用場中的文字值產生且限制資訊從該有限組的經識別選項選擇,此因此允許整體碼尺寸上的顯著降低。應注意到對於不符合以上述方式產生之要求的任何能力(例如,不指定落在該有限組的選項內的限制資訊),經編譯器產生能力可取而代之地以用於儲存在文字集用場中的標準方式產生。
能力產生電路系統可採用多種形式。其可,例如,係與處理電路系統分開的組件,或替代地可提供在設備的處理電路系統內。
設備可進一步具備能力檢查電路系統,該能力檢查電路系統用於執行能力檢查操作以基於由給定能力提供的限制資訊判定是否允許其記憶體位址係使用給定能力產生的給定存取請求。與能力產生電路系統相同,能力檢查電路系統可係與處理電路系統分開的組件,或替代地可提供在設備的處理電路系統內。
有若干種限制資訊可以其由關聯能力識別的方法。例如,在一個實例實施方案中,能力可直接含有限制資訊。然而,在一替代實施方案中,能力可取而代之地指示(直接或間接地)限制資訊在記憶體中所在的位置。
有若干種能力產生指令可以其識別文字集用場中之所需文字值係自其檢索之位置的方式。例如,可將基底位址提供在適合的系統暫存器中,其中能力產生指令接著指定可使用為指定在系統暫存器中之基底位址之偏移的立即值。
然而,在一個實例實施方案中,能力產生指令指定由能力產生電路系統使用的立即值,該立即值與目前程式計數器值組合,以識別文字集用場中之含有待用以判定經產生能力之指標值的文字值的位置。此提供特別有效率的機制,因為一般而言編譯器將文字值儲存在接近會消耗該文字值之指令的位置,且因此藉由指定與目前程式計數器值組合使用的立即值,則此提供用於識別所需文字值在文字集用場中的位置的簡單且有效的機制,其中該目前程式計數器值將識別能力產生指令。
該立即值可採用各種形式,但在一個實例實施方案中,提供程式計數器相對偏移,使文字集用場中的位置能僅藉由將立即值加至目前程式計數器值(或自其減去立即值)而識別。
經產生能力的限制資訊可採用各種形式,但在一個實例實施方案中,包括邊界資訊,該邊界資訊使用從經產生能力的指標值導出的記憶體位址識別可存取的記憶體區域,且該有限組的選項包含藉由邊界資訊識別之區域的一有限組的可允許尺寸。如早先提及的,已發現顯著數目的能力僅需要存取相對小的結構,且因此可編碼為邊界資訊之該有限組的選項的此類結構可有一有限組的可能尺寸。
有若干種能力產生指令可以其對能力產生電路系統指示將該有限組的可允許尺寸的哪一者用於待產生之能力的方式。然而,在一個實例實施方案中,能力產生指令指定由能力產生電路系統使用以從該有限組的可允許尺寸判定區域之尺寸的尺寸指示值。尺寸指示值可採用多種形式。例如,可直接指定尺寸,但可替代地使用任何其他合適的編碼。例如,該有限組的可允許尺寸可以2的次方變化,且因此尺寸指示值可識別將哪個2的次方施用至所產生的目前能力。替代地,尺寸指示值可識別相對於預定最小尺寸的偏移。因此,尺寸指示值在該情形中將有效地形成其接著可加至預定最小尺寸值的立即值。藉由使用此一最小尺寸值,此可允許指定稍微更大範圍的有用值。例如,0之尺寸指示值仍會具有合理意義,在此情形中僅識別由邊界資訊所識別的可存取區域的尺寸應係預定最小尺寸。
然而,有可藉由能力產生電路以其從由能力產生指令提供的資訊推定從該有限組的可允許尺寸選擇尺寸的其他方式。例如,文字值可包括不用以判定指標值的若干個冗餘位元,且能力產生電路系統可經配置以從提供在文字值之冗餘位元內的資訊判定區域的尺寸。例如,可有某個程度的對準使用在從文字值判定的指標值中,其將意謂著形成經產生能力的指標值不需要經戴入文字值的某個數目的最低有效位元。在此類情況下,該等冗餘位元可取而代之地用以編碼將由經產生能力的限制資訊識別之區域的尺寸。
冗餘位元的數目可係預定的,但在替代實施方案中,冗餘位元的數目可變化。例如,能力產生電路系統可經配置以取決於用以形成文字值的編碼方案判定文字值內之在指定用以判定指標值之位元的第一部分與含有冗餘位元的第二部分之間的邊界。作為一特定實例,三角編碼形式可用以以此一方式將尺寸及指標值資訊編碼在文字值內。
一旦尺寸資訊已判定,則有若干種可從在能力產生指令內指定的資訊判定邊界資訊的方式。然而,在一個實例實施方案中,界限資訊識別從指標值判定的第一邊界,及從第一邊界及從該有限組的可允許尺寸判定之區域的尺寸判定的第二邊界。此提供藉由使用指標值以有效地判定第一邊界,並接著使用尺寸資訊以從第一邊界判定第二邊界之用於識別邊界資訊的有效機制。如何從指標值判定第一邊界可取決於實施方案變化,但在一個特定實例實施方案中,將第一邊界設定成等於指標值。
在一個實例實施方案中,限制資訊可包含後設資料的項目,且該有限組的選項包含用於後設資料之項目的一有限組的可能值。因此,在一個實例實施方案中,限制資訊可包含早先提及的邊界資訊及後設資料的額外項目二者。後設資料的項目可採用各種形式,但在一個實例實施方案中,可包含識別經產生能力之可允許用途的至少複數個許可指示,且該有限組的選項包含可藉由複數個許可指示所指示的一有限組的允許許可組合。例如,在大多數情形中,許可可指示能力內的關聯指標可僅用以產生用於從記憶體讀取資料的位址,或取而代之地可識別指標可用於執行讀取及寫入存取二者。使用一有限組的允許許可組合,接著可將從該有限組的選項內選擇有效率地編碼在由能力產生指令提供的資訊內。
有許多不同的待提供給後設資料之項目的值可藉由能力產生電路系統以其從能力產生指令判定的方式。例如,能力產生指令可指定由能力產生電路系統使用以判定後設資料之項目的一或多者的值的後設資料資訊。此類後設資料資訊可以若干種不同方式提供,且在一個實例實施方案中,可採用,例如,可直接識別待用於後設資料之關聯項目的值,或識別選擇該有限組的選項之何者的一或多個立即值的形式。替代地,可將不同的旗標值指定在指令中,能力產生指令的不同變異可用以識別定義資訊的不同後設資料。
作為替代方案,或額外地,設備可進一步包含由能力產生電路系統參考以判定後設資料之項目的一或多者的值的控制暫存器。控制暫存器可採用各種形式,且在一個實例實施方案中,可係系統組態暫存器。
作為後設資料之項目的一或多者的值可如何判定的另一替代或額外實例,如早先提及的,文字值可包括不用以判定指標值的若干個冗餘位元。在此類實施方案中,處理電路系統可經配置以從提供在文字值之冗餘位元內的資訊判定後設資料之項目的一或多者的值。
後設資料的一或多個項目的值基於由能力產生指令指定的資訊以其判定的方式可取決於一或多個因素而變化。例如,此一判定可取決於處理電路系統的目前操作模式。因此,不論使用上述選項中的何者提供用以判定後設資料之項目的值的資訊,以其解譯資訊的方式可取決於處理電路系統的目前操作模式。作為另一替代方案,若控制暫存器係由能力產生電路系統所參考,則控制暫存器可提供取決於處理電路系統的目前操作模式而不同的資訊。
應注意到後設資料之項目的值可如何判定的所有上述不同實例可獨立地或組合地使用。例如,後設資料的一或多個項目可使其等的值使用一種技術判定,而後設資料的其他項目可使其等的值使用其他技術的一者判定。
如早先提及的,可提供在經產生能力內之後設資料之類型的一者可包含複數個許可指示。在一個實例實施方案中,能力產生電路系統可經配置以取決於經產生能力的類型而藉由複數個許可指示判定待指示之許可組合。具體而言,其可係適當的該有限組的許可組合可取決於所產生之能力的類型,且因此藉由將經產生能力的類型列入考量,經提供以判定許可之組合的資訊可取決於所產生之能力的類型而受不同地解讀。
有若干種可以其判定經產生能力之類型的方式。例如,能力產生指令一般會指定經產生能力將儲存至其中的目的地能力儲存元件,且能力產生電路系統可經配置以從經指定目的地能力儲存元件推定經產生能力的類型。例如,目的地能力儲存元件可係通用能力儲存元件,或可係程式計數器能力儲存元件,且所判定的許可組合可取決於產生通用能力或產生程式計數器能力。
例如,對於通用能力,一般的情形可係將不設定執行許可,然而對於程式計數器能力,可設定可執行許可。具體而言,可執行許可位元可指示能力是否可用以產生用於取提取及執行之指令的記憶體位址,且此一許可一般可適用於程式計數器能力,但可能不適用於使用上述技術產生的通用能力。
一般而言,在執行能力產生指令時叫用的處理將以將經產生能力儲存在經指定目的地能力儲存元件內終止。然而,在一個實例實施方案中,當經指定目的地功能儲存元件係用以儲存程式計數器能力的程式計數器功能儲存元件時,處理電路系統可經配置以在一旦已將經產生能力儲存至程式計數器能力儲存元件中時,便亦導致程式執行分支至使用經產生能力所識別的目標指令。此可藉由避免需要指定在能力產生指令之後的後續分支指令而改善碼密度。
若有需要,上文描述的能力產生功能性可限於特定類型的能力。舉實例而言,在一個實施方案中,可預防使用此類能力產生指令產生程式計數器能力。舉特定實例而言,能力產生電路系統可經配置以在若能力產生指令的經指定目的地能力儲存元件係程式計數器能力儲存元件時觸發故障。
在一個實例實施方案中,能力產生電路系統可經配置以回應於能力產生指令的單一實例而產生多個能力。因此,當執行能力產生指令時,能力產生電路系統可不僅生產上文參考的經產生能力,且亦生產一或多個經進一步產生能力。對於各經進一步產生能力,能力產生電路系統可經配置從文字集用場中之從藉由能力產生指令識別的位置偏移的關聯位置獲得的關聯文字值判定該經進一步產生能力的指標值。因此,能力產生指令仍可識別單一文字值的位置,其中該文字值係用以判定第一經產生能力的指標值,但待用於經進一步產生能力之各者的文字值的位置可接著從針對第一經產生能力的文字值判定的位置推定。偏移可係預定的,使得其等不需要由能力產生指令指定,或替代地在有需要時可將與偏移有關的資訊編碼在指令內。
有若干種可以其推定回應於能力產生指令的單一實例而產生的各種經產生能力的限制資訊的方式,但在一個實例實施方案中,能力產生電路系統經配置以生產具有相同限制資訊的經產生能力及各經進一步產生能力。因此,指定限制資訊在指令內所需的編碼空間在能力產生指令的執行將導致生產多個能力的情況下不需要增加。
相關於經產生能力之各者將儲存至其中的目的地能力儲存元件,能力產生電路系統可接著經配置以從使用為最初經產生能力之目的地的經指定目的地能力儲存元件導出各經進一步產生能力的關聯目的地能力儲存元件。例如,所需的目的地能力儲存元件可形成從經指定目的地能力儲存元件開始的能力儲存元件的連續序列。作為替代方法,若有需要,各目的地能力儲存元件可在指令中明確地識別。
處理電路系統可經配置以若干個不同操作模式操作。此等操作模式可採用多種形式。例如,處理電路系統可能能夠在安全域或較不安全域中及/或在特權狀態或不非特權狀態內操作,且實際上可有可由處理電路系統採用的二個以上的域及/或二個以上的狀態。處理電路系統的目前操作模式可取決於處理電路系統正以其操作的域及處理狀態二者。
若有需要,能力產生電路系統的操作可取決於處理電路系統的目前操作模式。此可,例如,用以將產生能力的能力限制在處理電路系統的某些操作模式。因此,舉實例而言,若能力產生電路系統經觸發以執行能力產生指令,而處理電路系統係在禁止以此方式產生能力的特定操作模式中,可引起故障。
作為可如何使能力產生電路系統的操作取決於目前操作模式的其他實例,所產生的後設資料的形式可取決於操作模式變化。例如,後設資料可包括指示處理電路系統在產生能力時的操作模式的資訊,且因此能力產生電路系統將取決於處理電路系統在能力產生指令執行時的目前操作模式產生不同形式的後設資料。作為一又進一步實例,處理電路系統可能能夠以藉由能力限制的能力模式操作,且能力產生電路系統回應於能力產生指令以其操作的方式可取決於處理電路系統是否以能力模式操作。
現在將參照圖式描述特定實例。
本文描述的技術可使用在各種資料處理系統中,且與此類系統內的不同類型的處理電路系統關聯。例如,技術可與採用中央處理單元(CPU)之形式的處理電路系統關聯地使用,但可替代地與其他處理電路系統關聯地使用,諸如直接記憶體存取(DMA)控制器、加密加速器等。純粹地舉以下圖1中的說明性實例為例,將CPU的處理管線視為係所描述之技術可使用於其中之處理電路系統的實例。
圖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或uops)的多個經解碼指令。因此,從L1指令快取記憶體20提取的指令與由管線之後級所見的指令之間可能沒有一對一關係。一般而言,應將本申請案中對「指令(instruction)」的參考解讀為包括微操作。
將經解碼指令傳至判定執行指令所需的運算元是否可用且在運算元可用時發布用於執行之指令的發布級10。一些實例實施方案可支援依序處理,使得指令以對應於指令以其從L1指令快取記憶體20提取之程式順序的順序發布以用於執行。其他實例實施方案可支援亂序執行,使得指令可以與程式順序不同的順序發布至執行級12。由於在較早指令停頓而等待運算元的同時,可先執行其運算元可用之在程式順序中較晚的指令,亂序處理對改善效能可係有用的。
發布級10將指令發布至執行指令以實行各種資料處理操作的執行級12。例如,執行級可包括若干個執行單元30、32、34,該等執行單元包括用於在整數值上實行算術或邏輯操作的算術/邏輯單元(ALU) 30、用於在以浮點形式表示的值上實行操作的浮點(FP)單元32、及用於實行將資料值從1級(L1)資料快取記憶體36載入至暫存器40的載入操作或將資料值從暫存器40儲存至L1資料快取記憶體36的儲存操作的載入/儲存單元34。應理解此等僅係可提供之執行單元之類型的一些實例,且亦可提供許多其他類型。為實行處理操作,執行級12可從一組暫存器40讀取資料值。經執行指令的結果接著可藉由寫回級14寫回至暫存器40。
L1指令快取記憶體20及L1資料快取記憶體36可係包括多級快取記憶體的快取記憶體階層的部分。例如,亦可提供二級(L2)快取記憶體44,且可可選地提供更多級的快取記憶體。在此實例中,L2快取記憶體44係在L1指令快取記憶體20與L1資料快取記憶體36之間共用,但其他實例可具有分開的L2指令及資料快取記憶體。當待提取的指令不在L1指令快取記憶體20中時,則其可從L2快取記憶體44提取,且類似地,若指令不在L2快取記憶體44中,則其可從主記憶體50提取。類似地,回應於載入指令,若資料不在L1資料快取記憶體36中,其可從L2快取記憶體44提取,且若有需要,可從記憶體50提取。任何已知方案皆可用於管理快取記憶體階層。
由管線4使用以參考程式指令及資料值的位址可係虛擬位址,但可實體地定址至少主記憶體50及可選地快取記憶體階層的至少一些級。因此,可提供用於將由管線4使用的虛擬位址轉譯成用於存取快取記憶體或記憶體的實體位址的轉譯後備緩衝區52 (translation lookaside buffer, TLB)。例如,TLB 52可包括各指定虛擬位址空間之對應頁的虛擬頁位址及該虛擬頁位址應映射至的對應實體頁位址的若干個項,以將對應頁內的虛擬位址轉譯成實體位址。例如,虛擬及實體頁位址可對應於對應虛擬及實體位址的最高有效部分,其中當將虛擬位址映射至實體位址時,剩餘的最低有效部分保持不變。以及位址轉譯資訊,各TLB項亦可包括指定存取許可的一些資訊,諸如指示位址的某些頁在管線4的某些模式中是否可存取。在一些實例實施方案中,TLB項亦可定義位址之對應頁的其他性質,諸如,定義回應於讀取或寫入操作而更新哪些級的快取記憶體階層的快取策略資訊(例如,快取記憶體應以寫回或完全寫入模式操作),或相較於資料存取係以其由管線4發布的順序,定義對對應頁中之位址的資料存取是否可藉由記憶體系統重排序的資訊。
雖然圖1顯示單一級的TLB 52,應理解可提供TLB的階層使得一級(L1) TLB 52可包括用於轉譯在若干個最近存取的頁中的位址的TLB項,並可提供儲存用於更大數目之頁的項的二級(L2) TLB。當所需項不存在於L1 TLB中時,則其可從L2 TLB提取或從階層中的進一步TLB提取。若用於待存取之頁的所需項不在TLB的任一者中,則可執行頁表遍歷(page table walk)以存取記憶體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,其在此實例中係使用定義可允許範圍之下邊界的下邊界位址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亦可用以在指令正從一級指令快取記憶體20提取時在提取級6提供類似功能性。具體而言,程式計數器指標可儲存在欄位82中,其中PCC 80亦提供範圍資訊84及任何適當的限制資訊86,類似於以該組有界指標儲存元件60中之指標各者提供的範圍及限制資訊。
圖3示意地繪示標籤位元如何與個別資料區塊關聯地使用以識別該等資料區塊係表示能力(亦即,有界指標及關聯限制資訊)或係表示正常資料。具體而言,記憶體位址空間110將儲存一般會具有指定尺寸的一系列資料區塊115。純粹為說明起見,在此實例中假設各資料區塊包含128個位元,但在其他實例實施方案中,可使用不同尺寸的資料區塊,例如,在能力係由64位元的資訊定義時,例如,使用64位元資料區塊。提供與各資料區塊115關聯的標籤欄位120,其在一個實例中係稱為標籤位元的單一位元欄位,其經設定以識別關聯資料區塊表示能力,且其經清除以指示關聯資料區塊表示正常資料,且因此無法視為係能力。應理解與設定或清除狀態關聯的實際值可取決於實施方案變化,但純粹作為說明,在一個實例實施方案中,若標籤位元具有1的值,其指示關聯資料區塊係能力,且若其具有0的值,其指示關聯資料區塊含有正常資料。
當將能力載入至有界指標暫存器60(在本文中亦稱為能力暫存器)的一者中時,諸如圖3所示的能力暫存器100,則標籤位元隨能力資訊移動。因此,當將能力載入至能力暫存器100中時,指標102、範圍資訊104、及限制資訊106(下文稱為許可資訊)將載入至能力暫存器中。額外地,設定與能力暫存器關聯或作為其內之特定位元欄位的標籤位元108以識別內容表示能力。類似地,當將能力儲存回記憶體中時,相關標籤位元120將與能力儲存於其中的資料區塊關聯地設定。藉由此一方法,在能力與正常資料之間區分係可行的,且因此確保無法將正常資料使用為能力。
返回圖1,設備可進一步提供用於儲存特定控制資訊的一或多個控制暫存器。根據本文描述之技術,設備能夠回應於執行能力產生指令而產生能力/有界指標,且在一個實例實施方案中,可在判定該經產生能力的合適限制資訊時參考控制暫存器的一或多者。
能力可採用多種形式。在圖4所示的實例中,能力100含有指標值102及關聯限制資訊。限制資訊在此實例中包括一些範圍資訊104(在本文中亦稱為邊界資訊)。亦可將一組許可提供為能力之限制資訊的部分,且額外地,能力可包括(直接或與其關聯地)可經設定或清除以識別是否將對應資料區塊視為係能力的早先描述的標籤位元108。
對能力指定的許可可取決於實施方案變化,但在一個實例實施方案中,許可包括其值指示能力是否可用以產生用於讀取存取的記憶體位址的讀取許可位元130、其值指示能力是否可用以產生用於寫入存取的記憶體位址的寫入許可位元132、及其值指示能力是否可用以產生待提取及執行之指令的記憶體位址的執行許可位元134。
可將此類許可資訊視為係能力的後設資料資訊。若有需要,其他後設資料資訊136亦可在能力內識別。純粹地舉實例而言,此類後設資料可指示是否將能力視為係不變的。儘管可直接將此類資訊指定為能力中的額外資訊,其在一些實例實施方案中可從已提供在能力內的其他資訊的狀態推定。例如,在一個特定實施方案中,當設定執行位元時,將能力視為係不變的,其中,除了通過可從指令執行導致的指標值的正常遞增外,由能力指定的資訊在未清除標籤位元的狀況下係不可修改的(有效地使能力無效化)。
作為可被包括之其他後設資料資訊136的另一實例,此類後設資料可包括信任指示等級,例如,以指示處理電路系統在能力產生時以其操作的操作模式。可將信任等級直接編碼至能力100的欄位136中,或替代地,信任指示等級可提供用以指示含有信任資訊等級之記憶體位址的識別符。此一識別符可直接指示信任資訊等級的記憶體位置,或其可,例如,指定可施用至儲存在系統中之全域暫存器中的位址的偏移,以識別含有信任資訊等級的位置。
圖5係示意地繪示編譯器150可如何配置以在編譯程式碼時將文字集用場155填充在記憶體中的圖。具體而言,當編譯待在處理電路系統上執行的碼時,編譯器150可將各種不同的文字值儲存在文字集用場155內。如早先討論的,在本文描述之技術之前,此一編譯器可亦已產生可儲存在文字集用場內的若干個經編譯器產生能力,使得此等能力接著在碼的執行期間可用於藉由處理電路系統載入至能力暫存器中。然而,如早先提及的,將此類經編譯器產生能力提供在文字集用場內可顯著增加整體碼尺寸(由經編譯碼及關聯文字集用場組成),且降低總體碼尺寸將係所欲的,特別係在非揮發性儲存器係稀缺的記憶體有限裝置中。
本發明人注意到顯著數目之一般可藉由編譯器產生的能力僅存取小資料結構,例如,全域變數、周邊裝置、控制暫存器等,且因此僅有有限數目的一般尺寸用以表現此類能力的界邊資訊。此外,應注意到一般僅將有限數目的可能許可組合用於此類能力。根據本文描述之技術,對於此類能力,編譯器可經配置以不在編譯時間產生該等能力,但取而代之地將可用以判定各此類能力的指標值的文字值儲存在文字集用場155內。儲存此一文字值而非全部能力可顯著降低文字集用場的尺寸需求,且因此降低整體碼尺寸。
此外,當使用本文描述之技術時,處理電路系統可經配置以在適當時候使用儲存在文字集用場內的該等文字值產生所需能力而不會危及此類能力中的信任。具體而言,能力可在適當時候由處理電路系統藉由執行使用文字集用場內的文字值的一者的特定能力產生指令(若有需要,該指令亦可由編譯器發布)產生(其因此可受信任),且其限制資訊係使用可從指令直接導出的資訊從一有限組的可能選項選擇(且因此其亦可受信任)。因為已編譯之程式的意圖可受信任,則以此方式產生的能力亦可受信任,且因此以此方式產生的能力可受恰與已藉由編譯器本身產生並儲存在文字集用場內的能力一樣高的信任。
圖6係根據一個實例實施方案之繪示可提供在設備內之組件的方塊圖。在此實例中,提供用於執行指令序列的處理電路系統200,且在由該等指令指定之資料處理操作的執行期間,處理電路系統可存取通用資料暫存器215、通用能力暫存器220、及程式計數器能力暫存器225。處理電路系統200可採用各種形式,但可,例如,採用圖1所示之處理器管線4的形式。
在圖6所示的實例中,提供能力產生電路系統210,其回應於處理電路系統執行識別在記憶體的文字集用場230中的位置的能力產生指令而從文字集用場中的該位置檢索文字值及生產經產生能力,其中該經產生能力的指標值係從文字值判定。經產生能力的關聯限制資訊接著可由能力產生電路系統取決於由能力產生指令指定的資訊從一有限組的選項選擇。經產生能力接著可由能力產生電路系統210寫至經識別目的地能力暫存器中(一般而言,該經識別目的地暫存器係由能力產生指令指定)。此可,例如,係通用能力暫存器220的一者,但在一些實施方案中,亦可在一些情況下係程式計數器能力暫存器225。
能力產生電路系統210可係與處理電路系統200分開的組件,但在圖6所示的實例中,視為係由處理電路系統200提供。
如圖6所示,亦可提供能力檢查電路系統205,其可係單獨組件或如圖6所示地作為處理電路系統200的部分。當考慮其記憶體位址係使用給定能力產生的存取請求時,利用能力檢查電路系統205執行能力檢查操作以基於由給定能力識別的限制資訊判定是否許可該存取請求。因此能力檢查可涉及,例如,參考能力的範圍及許可資訊以判定是否允許存取繼續進行。在能力檢查失敗的事件中,可將失敗指示提供至處理電路系統,且此可採用多種形式,例如,故障信號。然而,若能力檢查通過,則可將存取請求發布至記憶體。在一些實施方案中,可在允許存取繼續進行前執行一或多個進一步檢查,例如,在諸如記憶體管理單元(MMU)、記憶體保護單元(MPU)、安全屬性單元(SAU)的組件、或該等組件的組合內。
圖7係繪示當能力產生指令由處理電路系統200執行時由能力產生電路系統210執行之步驟的流程圖。當在步驟250判定正在執行能力產生指令時,將可限制產生能力之能力的任何標準列入考量,在步驟255判定是否允許能力產生。舉實例而言,可將本文描述之技術(因此使用能力產生電路系統210以回應於能力產生指令而產生能力)限制在處理電路系統的某些操作模式,且若處理電路系統不在所允許的操作模式的一者內,可在步驟255判定能力不可產生,且在該情形中,可在步驟260引起故障。作為另一實例,產生能力的能力可限於某些類型的能力。例如,若能力將使用為程式計數器能力,在一些實施方案中可禁止使用上述機制產生該能力,且若在此類情況下嘗試產生程式計數器能力,在步驟260可再度引起故 。
然而,假設在步驟255判定允許能力產生,接著在步驟265將由能力產生指令指定的立即值使用為偏移以施加至目前程式計數器值以識別在文字集用場內的位置。在步驟270,在經識別位置的文字值係檢索自文字集用場並用以判定經產生能力的指標值。在一些情況下,整個文字值可「依現狀(as is)」使用以形成指標值,但在其他實施方案中,可採取步驟以從經檢索文字值導出指標值。舉特定實例而言,導因於所產生之指標值的某些對準要求,文字值的某個數目的最低有效位元可針對產生指標值的目的而忽略。如將於稍後更詳細地討論的,若有需要,此等經忽略最低有效位元可重新利用以在一些實例實施方案中提供在產生能力時使用的其他資訊。
在步驟275,所產生之能力的邊界資訊可從由指令提供之資訊導出的尺寸資訊判定。具體而言,由指令提供的資訊可用以將尺寸編碼在一有限組的可能尺寸內,且因此能力產生電路系統可基於此類資訊判定將哪個尺寸用於邊界。第一邊界可接著參考在步驟270識別的指標值判定,例如,藉由設定成等於該指標值。第二邊界接著可藉由將經判定尺寸施加至第一邊界以建立第二邊界而判定。
如在步驟280所指示的,其他後設資料(例如,早先提及的許可位元)可從由指令指定的資訊判定。一有限組的可能值再次可用,且因此由指令提供的資訊可用以從該有限組的可能值判定使用值的哪個組合。
能力產生指令可採用多種形式,但在一個特定實例中具有以下格式: LDRCC Cd, <label>, #sz
因此,在此實例中,能力產生指令係指定目的地能力暫存器Cd、提供用以識別文字集用場內的位置的立即值(稱為「標號(label)」)、及指定用以判定經產生能力之可允許範圍之尺寸的尺寸資訊(#sz)的能力建立載入指令。然而,此僅係可使用的一個實例格式,且倘若產生能力的所需資訊可與從文字集用場檢索的文字值組合而從指令本身導出,可使用其他格式。
圖8係更詳細地繪示可在圖7的步驟275實施以判定經產生能力之邊界的步驟的流程圖。在步驟300,判定尺寸指示值是否直接指定在指令中,如,例如,上文提及之LDRCC指令格式的情形。若指定尺寸指示值,則程序繼續進行至尺寸係從經指定尺寸指示判定的步驟305。尺寸指示值可直接指定尺寸,或可使用合適的編碼方案以識別尺寸。例如,在該有限組的選項內的尺寸可以2的次方變化,且尺寸指示可指示所施用的2的次方。替代地,尺寸指示可識別與預定最小尺寸指示的偏移。不論尺寸指示如何形成,應理解在步驟305,能力產生電路系統210可從尺寸指示判定與能力關聯之區域的尺寸。
在一替代實施方案中,尺寸指示值可不直接指定在指令中,且取而代之地如圖8所繪示的,從記憶體檢索的文字值的冗餘位元判定尺寸可係可行的,如步驟310所指示的。具體而言,如早先提及的,導因於指標值上的一些對準限制,文字值內可有另外不使用的位元,且此等位元可重新用於若干種可能用途,該等用途的一者係編碼尺寸資訊。該資訊可以與將尺寸指示直接指定在指令中幾乎相同的方式編碼在文字值的冗餘位元內,且因此可採用參考步驟305於早先討論之形式的任一者。
作為又一進一步替代例,其未具體繪示於圖8中,可有尺寸係固定的情形,且因此不需要指定尺寸指示值。取而代之地,邊界可藉由識別該第一邊界,並接著施加固定尺寸以從第一邊界判定第二邊界的位置而直接判定。
不論執行步驟305或310之何者,程序接著繼續進行至從指標值判定第一邊界的步驟315。可使用任何合適的技術以從指標值判定邊界,且因此,例如,第一邊界可在距指標值的某個固定偏移處。然而,在一個特定實例實施方案中,將第一邊界設定成等於指標值。
接著,在步驟320,第二邊界係從第一邊界及經判定尺寸判定。舉實例而言,可將第二邊界設定成等於指標值加經判定尺寸。一旦第一邊界及第二邊界已設定,應理解已將能力的範圍資訊判定在該點。
圖9係繪示可以其判定許可位元值的各種不同方式的流程圖。相同類型的方法亦可用於可提供為能力之限制資訊的部分的任何其他後設資料。在步驟350,判定許可是否由指令中的立即運算元指定。例如,若有需要,許可位元值可藉由此一立即運算元直接指定在指令內。替代地,立即運算元的值可以可用以判定將使用該組可能有限的許可組合之何者的方式編碼,其在指令內可能比藉由立即運算元直接指定許可需要更小的位元空間。
若許可係由立即運算元指定,則程序繼續進行至能力產生電路系統210從立即運算元判定許可的步驟355。
若在步驟350,判定許可不係由指令中的立即運算元指定,則在步驟360判定是否應使用控制暫存器提供許可資訊。具體而言,在一個實例實施方案中,至少對於一些經產生能力,可將所需許可資訊儲存在一或多個控制暫存器90內。若判定應將控制暫存器視為用於許可資訊,則程序繼續進行至從控制暫存器中的許可資訊判定許可的步驟365。與指令中的立即運算元相同,控制暫存器中的此類資訊可直接識別許可資訊,或可替代地提供用以識別待使用該有限組的許可組合之何者的編碼。
若在步驟360判定控制暫存器將不用以提供許可資訊,接著在步驟370,許可資訊係從文字集用場檢索之文字值的冗餘位元獲得,且接著從許可資訊判定許可。因此,在一些情況下,該許可資訊可編碼在文字值之不需要形成指標值的冗餘位元內,而非指定立即運算元或從控制暫存器得許可資訊。與早先描述的實例一樣,許可值可直接指定在該等位元內,或該等位元可提供用以判定將使用許可位元之可能組合的何者的編碼。
如圖9中所指示的,不論使用何機制,在許可資訊提供許可的合適組合可自其從該有限組的選項判定的編碼的情形中,經判定許可可接著取決於處理電路系統在產生能力時的操作模式。例如,若處理電路系統以特定特權操作模式操作,從許可資訊的特定值判定的許可位元可與處理電路系統以較低特權模式操作時所判定的許可位元不同。此外,從許可資訊判定的許可位元可取決於所產生之能力的類型,且因此,例如,經判定許可位元可取決於正產生通用能力或正產生程式計數器能力而不同。
圖10係繪示可提供在系統內之處理電路系統的各種不同操作模式的圖。如圖10所示,處理電路系統可經配置以在安全域及較不安全域中操作。額外地或替代地,處理電路系統可經配置以在複數個不同狀態中執行程式碼,且在圖10的實例中,可經配置以在特權狀態或非特權限狀態中執行程式碼。可將特權等級及不同安全域視為係正交的信任等級,且因此域及狀態的不同組合可用以定義處理電路系統的不同操作模式。如早先討論的,經產生能力的限制資訊以其判定的方式可取決於處理電路系統所在的操作模式。此外,若有需要,使用本文描述的技術產生能力的能力可限於該等操作模式的一或多者,例如,其中若嘗試以非授權操作模式的一者產生能力,產生故障。
圖11係繪示在一個實例實施方案中在產生能力時所採用的步驟可如何取決於所產生的能力係程式計數器能力或通用能力的流程圖。在步驟400,判定由能力產生指令指定的目的地能力暫存器是否係程式計數器能力暫存器。若係否,則程序繼續進行至能力係以早先描述的方式產生並儲存在由指令識別的目標通用能力暫存器內的步驟405。
然而,在一個實例實施方案中,若目的地能力暫存器係程式計數器能力暫存器,則除了以上文描述的方式產生能力以及在步驟410將經產生能力儲存在程式計數器能力暫存器中以外,亦執行額外步驟415,因此導致程式執行分支至使用經產生程式計數器能力識別的目標指令。此避免提供單獨的分支指令以在程式計數器能力產生之後分支至該目標指令的需要。
若有需要,能力產生電路系統210可經配置以回應於單一能力產生指令的執行而產生多個能力,如圖12所繪示的。例如,可指定識別在執行能力產生指令時應產生多個能力之能力產生指令的類型。在此一實例中,當在步驟450判定正在執行該特定形式的能力產生指令時,程序繼續進行至使用圖7之早先描述的程序產生第一能力的步驟455。在步驟460,各後續能力接著使用從距用以獲得第一能力之文字值之位置的位置偏移獲得的文字值產生。用以識別各後續能力之文字值的偏移可係預定的,例如,以識別儲存在文字集用場內的一系列相鄰文字值,或替代地,識別各後續能力之文字值所需的偏移資訊可以某種格式編碼在指令內。
根據圖12所示的實例,如步驟460所指示的,將相同限制資訊用於經產生能力之各者,且因此從單一能力產生指令產生的能力之間並無不同。
在步驟465,將經產生能力儲存在通用能力暫存器的序列中。一般而言,第一通用能力暫存器將係由能力產生指令所明確識別者,且接著可推定進一步通用能力暫存器之各者。例如,各後續通用能力可遵循經判定次序。例如,可將以藉由能力產生指令指定的能力暫存器開始的一系列相鄰通用能力暫存器使用為將經產生能力儲存至其中的通用能力暫存器的序列。替代地,可將一些序列定義資訊提供在指令內,並用於識別經產生能力應儲存至其中的各通用能力暫存器。作為一又進一步實例,指令可明確地識別各通用目的地能力暫存器。
圖13繪示可使用的模擬器實施方案。雖然早先描述的實例以用於操作支援所關注技術的特定處理硬體的設備及方法實施本發明,但亦可能根據本文描述的實例提供通過電腦程式的使用實施的指令執行環境。此類電腦程式常稱為模擬器,因為其等提供硬體架構之基於軟體的實施方案。模擬器電腦程式的種類包括仿真器、虛擬機、模型、及二進制轉譯器(包括動態二進制轉譯器)。一般而言,模擬器實施方案可在可選地運行主機作業系統510、支援模擬器程式505的主機處理器515上運行。在一些配置中,在硬體與所提供的指令執行環境,及/或提供在相同主機處理器上的多個相異指令執行環境之間可有多層模擬。歷史上,已需要強大的處理器來提供模擬器實施方案,其以合理速度執行,但此種方法在某些情況下可係有正當理由的,諸如當因為相容性或再使用原因而需要運行另一處理器本體的碼時。例如,模擬器實施方案可提供具有不為主機處理器硬體所支援之額外功能性的指令執行環境,或提供一般與不同的硬體架構相關聯的指令執行環境。模擬的概述係在「Some Efficient Architecture Simulation Techniques」,Robert Bedichek, Winter 1990, USENIX Conference, Pages 53 - 63中提供。
在先前已參照特定硬體架構或特徵描述實施例的情況下,在模擬實施例中,等效功能性可藉由合適的軟體架構或特徵提供。例如,特定電路系統可在模擬實施方案中實施為電腦程式邏輯。類似地,記憶體硬體(諸如暫存器或快取記憶體)可在模擬實施方案中提供為軟體資料結構。再者,可將用於存取硬體設備2中之記憶體50的實體位址空間仿真為藉由模擬器505映射至由主機作業系統510使用之虛擬位址空間的模擬位址空間。在先前描述的實例中提及的硬體元件的一或多者存在於主機硬體(例如,主機處理器515)上的配置中,一些模擬實施方案可(在適當時)利用主機硬體。
模擬器程式505可儲存在電腦可讀儲存媒體(其可係非暫時性媒體)上,並將虛擬程式介面(指令執行環境)提供給目標碼500(其可包括應用程式、作業系統、及超管理器),該程式介面與藉由模擬器程式505模型化之硬體架構的硬體介面相同。因此,目標碼500的程式指令可在指令執行環境內使用模擬器程式505執行,使得實際上不具有上文討論之設備2的硬體特徵的主機電腦515可仿真該等特徵。模擬器程式可包括處理程式邏輯520以仿真圖1及圖6之硬體設備的處理管線4、200的行為、能力檢查程式邏輯522以仿真能力檢查電路系統205的行為、及能力產生程式邏輯525以仿真能力產生電路系統210的行為。因此,本文描述之用於回應於早先討論之該類型的能力產生指令而產生能力的技術可在圖13的實例中藉由模擬器程式505以軟體執行。
在本申請案中,用語「經組態以…(configured to…)」係用以意指一設備的一元件具有能夠實行該經定義操作的一組態。在此上下文中,「組態(configuration)」意指硬體或軟體之互連的配置或方式。例如,該設備可具有專用硬體,其提供經定義的操作,或者一處理器或其他處理裝置可經程式化以執行該功能。「經組態以(configured to)」並不意味著設備元件需要以任何方式改變以提供所定義的操作。
雖然本文中已參照附圖詳細描述本發明的說明性實例實施方案,應瞭解本發明不限於該等精確實施方案,且所屬技術領域中具有通常知識者可於其中實行各種變化、添加、及修改而不脫離如隨附之申請專利範圍所定義之本發明的範疇及精神。例如,依附項之特徵的各種組合可用獨立項的特徵產生而不脫離本發明之範疇。
2:資料處理設備;設備;硬體設備 4:處理管線;管線;處理器管線;處理器 6:提取級 8:解碼級 10:發布級 12:執行級 14:寫回級 20:1級(L1)指令快取記憶體;快取記憶體;L1指令快取記憶體;一級指令快取記憶體 22:分支預測器 24:分支目標位址快取記憶體(BTAC) 30:執行單元;算術/邏輯單元(ALU) 32:執行單元;浮點(FP)單元 34:執行單元;載入/儲存單元 36:1級(L1)資料快取記憶體;L1資料快取記憶體 40:暫存器;通用資料暫存器 44:二級(L2)快取記憶體;L2快取記憶體 50:主記憶體;記憶體 52:轉譯後備緩衝區;TLB;一級(L1) TLB 60:有界指標暫存器;指標暫存器;有界指標儲存元件 62:指標值;指標 64:範圍資訊 66:限制資訊;限制 68:下邊界位址;邊界 69:上邊界位址;邊界 80:程式計數器能力(PCC)暫存器;PCC 82:欄位 84:範圍資訊 86:限制資訊 90:控制暫存器 100:能力暫存器;能力 102:指標;指標值 104:範圍資訊 106:限制資訊 108:標籤位元 110:記憶體位址空間 115:資料區塊 120:標籤欄位;標籤位元 130:讀取許可位元 132:寫入許可位元 134:執行許可位元 136:後設資料資訊;欄位 150:編譯器 155:文字集用場 200:處理電路系統;處理管線 205:能力檢查電路系統 210:能力產生電路系統 215:通用資料暫存器 220:通用能力暫存器 225:程式計數器能力暫存器 230:文字集用場 250:步驟 255:步驟 260:步驟 265:步驟 270:步驟 275:步驟 280:步驟 300:步驟 305:步驟 310:步驟 315:步驟 320:步驟 350:步驟 355:步驟 360:步驟 365:步驟 370:步驟 400:步驟 405:步驟 410:步驟 415:步驟 450:步驟 455:步驟 460:步驟 465:步驟 500:目標碼 505:模擬器程式;模擬器 510:主機作業系統 515:主機處理器;主機電腦 520:處理程式邏輯 522:能力檢查程式邏輯 525:能力產生程式邏輯 PR1:有界指標暫存器
本技術將僅藉由說明、參照如繪示於附圖中之其實例進一步描述,其中: 〔圖1〕係根據一個實例實施方案之設備的方塊圖; 〔圖2〕顯示在若嘗試設定或存取一組有界指標儲存元件內的指標值時可對其觸發錯誤之指令類型的實例,其中該指標值係用以指定在藉由關聯範圍資訊指示之範圍外側的位址; 〔圖3〕根據一個實例實施方案繪示與有界指標關聯之標籤位元的使用; 〔圖4〕根據一個實例實施方案示意地繪示可根據本文描述之技術使用之能力的形式; 〔圖5〕根據一個實例實施方案示意地繪示編譯器可如何用以產生儲存在文字集用場內的文字值; 〔圖6〕在根據一個實例實施方案之繪示可提供在設備內之組件的方塊圖中; 〔圖7〕係根據一個實例實施方案之繪示回應於能力產生指令而執行之步驟的流程圖; 〔圖8〕係根據一個實例實施方案之繪示可執行以執行圖7之步驟275的更詳細步驟的流程圖; 〔圖9〕係根據一個實例實施方案之繪示可如何判定經產生能力之許可的流程圖; 〔圖10〕根據一個實例實施方案顯示處理電路系統的不同域及處理狀態的實例; 〔圖11〕係根據一個實例實施方案之繪示在產生能力時所執行的處理可如何取決於所產生之能力的類型的流程圖; 〔圖12〕係根據一個實例實施方案之繪示多個能力可如何從單一能力產生指令產生的流程圖;及 〔圖13〕顯示可使用的模擬器實例。
200:處理電路系統;處理管線
205:能力檢查電路系統
210:能力產生電路系統
215:通用資料暫存器
220:通用能力暫存器
225:程式計數器能力暫存器
230:文字集用場

Claims (24)

  1. 一種設備,其包含: 處理電路系統,以執行在其期間產生對記憶體之存取請求的操作,其中該處理電路系統經配置以使用提供一指標值及關聯限制資訊的能力產生用於該等存取請求的記憶體位址;及 能力產生電路系統,其回應於該處理電路系統執行識別在該記憶體的一文字集用場中的一位置的一能力產生指令而從該文字集用場中的該位置檢索一文字值及生產一經產生能力,其中該經產生能力的該指標值係從該文字值判定,且該經產生能力的該限制資訊係取決於由該能力產生指令指定的資訊而從一有限組的選項選擇。
  2. 如請求項1之設備,其中該能力產生指令指定由該能力產生電路系統使用的一立即值,該立即值與一目前程式計數器值組合,以識別該文字集用場中之含有待用以判定該經產生能力之該指標值的該文字值的該位置。
  3. 如請求項1或請求項2之設備,其中該限制資訊包括邊界資訊,該邊界資訊使用從該經產生能力的該指標值導出的記憶體位址識別可存取的一記憶體區域,且該有限組的選項包含藉由該邊界資訊識別之該區域的一有限組的可允許尺寸。
  4. 如請求項3之設備,其中該能力產生指令指定由該能力產生電路系統使用以從該有限組的可允許尺寸判定該區域之該尺寸的一尺寸指示值。
  5. 如請求項3之設備,其中該文字值包括不用以判定該指標值的若干個冗餘位元,且該能力產生電路系統經配置以從提供在該文字值的該等冗餘位元內的資訊判定該區域的該尺寸。
  6. 如請求項5之設備,其中該能力產生電路系統經配置以取決於用以形成該文字值的一解碼方案判定該文字值內之在指定用以判定該指標值之位元的一第一部分與含有該等冗餘位元的一第二部分之間的一邊界。
  7. 如請求項3至6中任一項之設備,其中該邊界資訊識別從該指標值判定的一第一邊界,及從該第一邊界及該區域之從該有限組的可允許尺寸判定的該尺寸判定的一第二邊界。
  8. 如前述請求項中任一項之設備,其中該限制資訊包含後設資料的項目,且該有限組的選項包含用於後設資料之該等項目的一有限組的可能值。
  9. 如請求項8之設備,其中該能力產生指令指定由該能力產生電路系統使用以判定後設資料之該等項目的一或多者的值的後設資料資訊。
  10. 如請求項8或請求項9之設備,其進一步包含一控制暫存器,該控制暫存器由該能力產生電路系統參考以判定後設資料之該等項目的一或多者的值。
  11. 如請求項8至10中任一項之設備,其中該文字值包括不用以判定該指標值的若干個冗餘位元,且該處理電路系統經配置以從提供在該文字值之該等冗餘位元內的資訊判定後設資料之該等項目的一或多者的值。
  12. 如請求項9至11中任一項之設備,其中後設資料之該等項目的一或多者的該等經判定值係取決於該處理電路系統的一目前操作模式。
  13. 如請求項8至12中任一項之設備,其中後設資料的該等項目包含識別該經產生能力之可允許用途的複數個許可指示,且該有限組的選項包含可藉由該複數個許可指示所指示的一有限組的允許許可組合。
  14. 如請求項13之設備,其中該能力產生電路系統經配置以取決於該經產生能力的一類型而藉由該複數個許可指示判定待指示之該許可組合。
  15. 如請求項14之設備,其中該能力產生指令指定一目的地能力儲存元件,且該能力產生電路系統經配置以從該經指定目的地能力儲存元件推定該經產生能力的該類型。
  16. 如前述請求項中任一項之設備,其中: 該能力產生指令指定一目的地能力儲存元件;且 當該經指定目的地能力儲存元件係用以儲存一程式計數器能力的一程式計數器能力儲存元件時,該處理電路系統經配置以在一旦已將該經產生能力儲存至該程式計數器能力儲存元件中時,便導致程式執行分支至使用該經產生能力所識別的一目標指令。
  17. 如請求項1至15中任一項之設備,其中: 該能力產生指令指定一目的地能力儲存元件;及 該能力產生電路系統經配置以在若該經指定目的地能力儲存元件係一程式計數器能力儲存元件時,觸發一故障。
  18. 如前述請求項中任一項之設備,其中: 該能力產生電路系統經配置以回應於該處理電路系統執行該能力產生指令而生產該經產生能力及一或多個經進一步產生能力,其中對於各經進一步產生能力,該能力產生電路系統經配置以從該文字集用場中之從藉由該能力產生指令識別的該位置偏移的一關聯位置獲得的一關聯文字值判定該經進一步產生能力的該指標值。
  19. 如請求項18之設備,其中該能力產生電路系統經配置以生產具有相同的限制資訊的該經產生能力及各經進一步產生能力。
  20. 如請求項18或請求項19之設備,其中該能力產生指令指定用於該經產生能力的一目的地能力儲存元件,且該能力產生電路系統經配置以從該經指定目的地能力儲存元件導出各經進一步產生能力的一關聯目的地能力儲存元件。
  21. 如前述請求項中任一項之設備,其中該處理電路系統可以若干種不同操作模式操作,且該能力產生電路系統的操作取決於該處理電路系統的一目前操作模式。
  22. 如前述請求項中任一項之設備,其進一步包含: 能力檢查電路系統,以執行一能力檢查操作以基於由一給定能力提供的該限制資訊判定是否允許其記憶體位址係使用該給定能力產生的一給定存取請求。
  23. 一種限制對記憶體存取之方法,其包含: 利用處理電路系統以執行在其期間產生對記憶體之存取請求的操作,其中該處理電路系統使用提供一指標值及關聯限制資訊的能力產生用於該等存取請求的記憶體位址;及 回應於該處理電路系統執行識別在該記憶體的一文字集用場中的一位置的一能力產生指令而執行一能力產生操作,該能力產生操作包含從該文字集用場中的該位置檢索一文字值及生產一經產生能力,其中該經產生能力的該指標值係從該文字值判定,且該經產生能力的該限制資訊係取決於由該能力產生指令指定的資訊而從一有限組的選項選擇。
  24. 一種電腦程式,其用於控制一主機資料處理設備以提供一指令執行環境,該電腦程式包含: 處理程式邏輯,以執行在其期間產生對記憶體之存取請求的操作,其中該處理程式邏輯經配置以使用提供一指標值及關聯限制資訊的能力產生用於該等存取請求的記憶體位址;及 能力產生程式邏輯,其回應於該處理程式邏輯執行識別在該記憶體的一文字集用場中的一位置的一能力產生指令而從該文字集用場中的該位置檢索一文字值及生產一經產生能力,其中該經產生能力的該指標值係從該文字值判定,且該經產生能力的該限制資訊係取決於由該能力產生指令指定的資訊而從一有限組的選項選擇。
TW111114754A 2021-04-28 2022-04-19 用於使用能力限制對記憶體存取之技術 TW202319913A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB2106069.4 2021-04-28
GB2106069.4A GB2606185B (en) 2021-04-28 2021-04-28 Technique for constraining access to memory using capabilities

Publications (1)

Publication Number Publication Date
TW202319913A true TW202319913A (zh) 2023-05-16

Family

ID=76193399

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111114754A TW202319913A (zh) 2021-04-28 2022-04-19 用於使用能力限制對記憶體存取之技術

Country Status (8)

Country Link
EP (1) EP4330813A1 (zh)
JP (1) JP2024515081A (zh)
KR (1) KR20230170976A (zh)
CN (1) CN117222978A (zh)
GB (1) GB2606185B (zh)
IL (1) IL307572A (zh)
TW (1) TW202319913A (zh)
WO (1) WO2022229590A1 (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635415B2 (en) * 2009-09-30 2014-01-21 Intel Corporation Managing and implementing metadata in central processing unit using register extensions
GB2541714B (en) * 2015-08-27 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour

Also Published As

Publication number Publication date
GB2606185B (en) 2023-06-21
IL307572A (en) 2023-12-01
GB2606185A (en) 2022-11-02
CN117222978A (zh) 2023-12-12
KR20230170976A (ko) 2023-12-19
JP2024515081A (ja) 2024-04-04
GB202106069D0 (en) 2021-06-09
EP4330813A1 (en) 2024-03-06
WO2022229590A1 (en) 2022-11-03

Similar Documents

Publication Publication Date Title
CN110574009B (zh) 用于管理对能力的使用的设备和方法
US11023237B2 (en) Apparatus and method for interpreting permissions associated with a capability
CN110799939B (zh) 用于控制指令的执行的设备与方法
TW201901422A (zh) 用於管理能力域的設備及方法
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法
US20230409494A1 (en) Technique for constraining access to memory using capabilities
TW202319913A (zh) 用於使用能力限制對記憶體存取之技術
JP7369720B2 (ja) アクションをトリガするための装置及び方法
TW202340955A (zh) 使用能力約束記憶體存取之技術
CN117222990A (zh) 用于使用能力约束对存储器的访问的技术
TW202318210A (zh) 用於處理密封能力之技術