TWI770172B - 用於管理能力域的設備及方法 - Google Patents

用於管理能力域的設備及方法 Download PDF

Info

Publication number
TWI770172B
TWI770172B TW107115539A TW107115539A TWI770172B TW I770172 B TWI770172 B TW I770172B TW 107115539 A TW107115539 A TW 107115539A TW 107115539 A TW107115539 A TW 107115539A TW I770172 B TWI770172 B TW I770172B
Authority
TW
Taiwan
Prior art keywords
capability
state
processing circuit
program counter
domain
Prior art date
Application number
TW107115539A
Other languages
English (en)
Other versions
TW201901422A (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 TW201901422A publication Critical patent/TW201901422A/zh
Application granted granted Critical
Publication of TWI770172B publication Critical patent/TWI770172B/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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/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/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/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
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative 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/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
    • 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

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)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

本發明提供一種用於管理能力域的設備及方法。該設備具有用於執行指令的處理電路,該處理電路當處於預設狀態時經佈置以在能力域中操作,該能力域包括用以約束執行指令時由處理電路執行的操作的能力。亦提供了程式計數器能力儲存元件以儲存由處理電路用来決定程式計數器值的程式計數器能力。程式計數器能力經佈置以識別處理電路的能力狀態。當能力狀態指示預設狀態時,則處理電路經佈置以在能力域中操作。然而,當能力狀態指示執行狀態時,處理電路經佈置以比當處於預設狀態時受到更少約束之方式操作,以便允許更改能力域。此提供了用於選擇性地允許設備更改能力域的簡單且有效之機制。

Description

用於管理能力域的設備及方法
本技術係關於資料處理領域。
對基於能力之架構越來越感興趣,其中某些能力經限定用於給定過程,並且若試圖執行所限定能力之外的操作,則可能觸發錯誤。該等能力可採取各種形式,但一種類型的能力為有界指標(其亦可稱作「胖指標」)。
許多能力儲存元件(例如暫存器)可經提供以用於儲存能力,諸如用於藉由資料處理設備之處理電路存取的有界指標。在此種能力儲存元件內之每個有界指標將識別可由處理電路存取的不可擴充範圍之記憶體位址,並且因此每個有界指標可稱作一種能力(識別處理電路能夠存取的可允許範圍之記憶體位址,以及任何關聯許可)。儘管可允許處理電路採取步驟以減少與可用於處理電路的任何特定有界指標關聯之範圍及/或許可,但是此不能在正常操作中擴充範圍以設法增大由有界指標提供給處理電路的能力。
由能力儲存元件內的有界指標識別的任何特定範圍之記憶體位址可包含資料、指令及/或其他能力(例如,其他有界指標)。因此,應理解,在任何時間點處理電路的存取記憶體之能力由一組能力限定,該組能力包括在能力儲存元件中識別之能力以及經由保持在彼等能力儲存元件中之能力可存取之任何其他能力,並且此組能力在此處將稱作能力域。
可能需要在資料處理設備之操作期間設法改變處理電路之能力域。然而,此可能需要存取在給定當前能力域之能力的情況下無法存取的記憶體位址。
期望提供一種用於賦能處理電路之能力域中的此種變化的有效且可靠之機制。
在第一示例性配置中,提供一種設備,該設備包括:用於執行指令之處理電路,該處理電路當處於預設狀態時經佈置以在能力域中操作,該能力域包含用於約束當執行該等指令時由處理電路執行之操作的能力;及程式計數器能力儲存元件,該程式計數器能力儲存元件用以儲存由處理電路用來決定程式計數器值的程式計數器能力,該程式計數器能力識別處理電路之能力狀態;該處理電路回應於指示該預設狀態之能力狀態而經佈置以在能力域中操作;並且該處理電路回應於指示執行狀態之能力狀態而經佈置以比當處於該預設狀態時受到更少約束之方式操作以便允許更改能力域。
在另一示例性配置中,提供一種在具有用於執行指令之處理電路的設備內管理能力域的方法,該處理電路當處於預設狀態時經佈置以在能力域中操作,該能力域包含用以約束當執行該等指令時由處理電路執行之操作的能力,該方法包括以下步驟:在程式計數器能力儲存元件內儲存由處理電路用來決定程式計數器值的程式計數器能力,該程式計數器能力識別處理電路之能力狀態;回應於指示該預設狀態之能力狀態,在能力域中操作處理電路;以及回應於指示執行狀態之能力狀態,以比當處於該預設狀態時受到更少約束之方式操作處理電路以便允許更改能力域。
在又一示例性配置中,提供一種設備,該設備包括:用於執行指令之處理構件,該處理構件當處於預設狀態時用於在能力域中操作,該能力域包含用於約束當執行該等指令時由處理構件執行之操作的能力;及程式計數器能力儲存元件構件,該程式計數器能力儲存元件構件用於儲存由處理構件用來決定程式計數器值的程式計數器能力,該程式計數器能力識別處理構件之能力狀態;該處理構件回應於指示該預設狀態之能力狀態而用於在能力域中操作;並且該處理構件回應於指示執行狀態之能力狀態而用於以比當處於該預設狀態時受到更少約束之方式操作,以便允許更改能力域。
在又一示例性配置中,提供一種包含程式指令之虛擬機電腦程式,該等程式指令用於控制主資料處理設備以提供對應於具有上述第一示例性配置之設備的指令執行環境。在一個實施例中,可提供電腦可讀取儲存媒體以用於儲存虛擬機電腦程式。
在參照附圖論述實施例之前,提供了實施例之以下描述。
如前所述,對基於能力之架構越來越感興趣,其中某些能力經限定用於給定過程,並且若試圖執行所限定能力之外的操作則可能觸發錯誤。可以限定各種類型的能力,但一種類型的能力為有界指標(在一個實施例中其合併指標值與關聯範圍及許可資訊兩者)。
採用此種基於能力之架構的設備將通常具有用以儲存能力之儲存元件(此處亦稱作有界指標儲存元件,或者更一般地能力儲存元件)。儲存元件可為暫存器(此處亦稱作有界指標暫存器或者能力暫存器)及/或可為通用記憶體中之記憶體位置,例如堆疊記憶體上之位置。某些指令可用以引用此種儲存元件以存取所需能力,並取決於彼能力執行操作。例如,考慮到有界指標,執行此類指令可導致該有界指標被擷取,並且該有界指標中之指標值接著用以導出在執行指令期間所需之記憶體中的位址。指標值可直接用以識別記憶體位址,或可用以導出記憶體位址,例如藉由將偏移加至指標值。若記憶體位址在由範圍資訊指定之範圍內,並且滿足在許可資訊中指定之任何許可,則將允許操作進行。
因此,當使用有界指標時,指標值本身可指向,或者用以決定例如待存取之資料值或待取出用於執行之指令的位址。然而,接著可引用範圍及許可資訊例如以確保所存取之任何位址在可允許範圍內,並且經存取以用於允許目的。此可以例如用於確保由指標決定之位址保持在某些界限內以維持行為之安全性或功能正確性。
藉由此種方法,可能有效地監督由處理電路進行之記憶體存取。然而,如前所提及,出現之問題為如何有效且可靠地提供將賦能能力域變化之機制,因為此可能要求存取在給定當前能力域之能力的情況下無法存取的記憶體位址。
根據一個實施例,若設備具有用於執行指令之處理電路,則處理電路當處於預設狀態時經佈置以在能力域中操作,該能力域包括用以約束當執行指令時由處理電路執行之操作的能力。亦提供了程式計數器能力儲存元件以儲存由處理電路用來決定程式計數器值的程式計數器能力。根據本文描述之實施例,彼程式計數器能力亦包括用以識別處理電路之能力狀態的資訊。
當能力狀態指示預設狀態時,處理電路經佈置以在能力域中操作。因此,處理電路不能存取在給定當前能力域之能力的情況下無法存取的記憶體位址。然而,回應於指示執行狀態之能力狀態,處理電路替代地經佈置以比當處於預設狀態時受到更少約束之方式操作,以便允許更改能力域。
存在當處於執行狀態時可放鬆對能力域之約束的許多方式,但目的為允許處理電路能夠存取在施加對能力域之約束時以其他方式無法存取的一或多個記憶體位址或區域。
因此,根據所描述之實施例,補充能力以便它們可另外指定能力狀態資訊。若隨後此種能力移入程式計數器能力儲存元件中以便形成程式計數器能力,則由彼能力指定之能力狀態資訊隨後用於識別處理電路之當前能力狀態,並且由此決定處理電路是處於受約束以根據能力域操作之預設狀態中,還是處於它可以受到更少約束之方式操作的執行狀態中。
此提供一種用於暫時允許處理電路獲得足以賦能其更改能力域的增強權利的簡單且有效之機制。當在適當時候更新程式計數器能力以便識別預設狀態作為處理電路之新的能力狀態時,則處理電路將根據在處理電路處於執行狀態時更改之能力域進行操作。
為了改變能力狀態,存在可用以更新儲存在程式計數器能力儲存元件內之程式計數器能力的許多機制。在一個實施例中,處理電路可經佈置以執行識別能力之分支指令,以便將所識別之能力移入程式計數器能力儲存元件中以形成新的程式計數器能力,隨後處理電路在由新的程式計數器能力識別之能力狀態中操作。因此,當前正在執行之過程可經由分支指令之使用而將其當前已存取之能力中的一者自通用能力儲存元件移入程式計數器能力儲存元件,其中該處理電路之能力狀態隨後由從分支操作之效能產生的新的程式計數器能力識別出。
分支指令可採取各種形式。然而,在一個實施例中,分支指令為具有鏈接指令之分支。在此種方案中,在執行具有鏈接指令之分支之前儲存在程式計數器能力儲存元件中的程式計數器能力可被視為形成舊的程式計數器能力,並且處理電路經佈置以使用舊的程式計數器能力以生成用於儲存在返回位址能力儲存元件中之返回位址能力,該返回位址能力保持由舊的程式計數器能力識別之能力狀態。因而,此使得過程能夠分支至代碼之特定段,並且隨後當已經執行彼代碼時,將程式計數器能力儲存元件之內容返回至保持在執行分支之前存在的能力狀態的形式。因此,舉例而言,代碼可分支至待在執行狀態中操作之代碼的特定段,從而使得能夠對將形成能力域之能力進行某些改變,並且在完成彼代碼時過程將隨後返回至預設狀態,在此時處理電路將由所修改能力域之能力約束。
因此,在一個實施例中,處理電路可經佈置以執行返回指令(其可被認為是另一種形式之分支指令)以將返回位址能力寫入程式計數器能力儲存元件中以形成返回程式計數器能力,隨後處理電路在由返回程式計數器能力識別之能力狀態中操作。
存在許多方式,其中處理電路可經佈置以當能力狀態指示執行狀態時受到更少約束之方式操作。然而,在一個實施例中,處理電路經佈置以藉由佈置處理電路在執行狀態中操作時不受能力約束而以此種更少約束之方式操作。因此此種方法賦予處理電路對記憶體位址空間的完全存取權限,從而移除對能力域之所有保護,但在正在執行狀態中執行之代碼為高度可信的某些情況中可能有用。
在一個替代實施例中,當能力狀態指示執行狀態時,處理電路可以經佈置為藉由當處理電路正在執行狀態中操作時禁用至少一項能力檢查,來以比當處於預設狀態時受到更少約束之方式操作。所禁用之能力檢查可採取各種形式。例如,可能地是,某些記憶體存取指令可識別儲存在資料處理設備之通用暫存器內的無界指標。為了確保亦約束彼等存取,可以提供預設資料能力(default data capability;DDC)以提供範圍資訊及任何關聯許可,並且當決定是否允許對參考無界指標識別之位址進行記憶體存取時可引用預設資料能力。然而,在一個實施例中,當處於執行狀態時,可決定關掉參考預設資料能力執行之任何此種檢查,從而提供用於使處理電路存取超出由能力域所允許的記憶體位址空間之外的記憶體位址空間的機制。
作為另一替代方案,當程式計數器能力用以識別指令取自之位址時,若處理電路正在執行狀態中操作,則可決定禁用參考程式計數器能力之範圍及許可資訊執行的關聯能力檢查。
在又一替代實施例中,設備可進一步包括用以儲存能力之一或多組經分組的能力儲存元件,每組經分組的能力儲存元件包括第一能力儲存元件,該第一能力儲存元件用以儲存用以約束當在預設狀態中操作時由處理電路執行的操作的能力;及第二能力儲存元件,該第二能力儲存元件用以儲存用以約束當在執行狀態中操作時由處理電路執行的操作的能力。在每組經分組的能力儲存元件之第一能力儲存元件及第二能力儲存元件中識別的能力隨後可經佈置以使得當能力狀態指示執行狀態時,處理電路以比處於預設狀態時受到更少約束之方式操作。
因此,根據此種實施例,能力儲存元件中的至少一些之分組可用作用於允許當在執行狀態中操作時放鬆能力域之約束的機制。特別地,當處於執行狀態時,在此種實施例中之處理電路將針對所使用能力中之至少一者引用不同的經分組的儲存元件,其中彼經分組的能力儲存元件儲存指定比在預設狀態時使用之正常能力繁重更少的約束的能力。此允許處理電路在處於執行狀態時獲得可控之額外許可權利,該權利足以使得能夠更改能力域。
作為使用經分組的能力儲存元件之替代方案,在一個替代實施例中,當對程式計數器能力之更新導致能力狀態自源狀態變化至目標狀態時,保存一或多個能力儲存元件中關於源狀態之能力以允許它們稍後恢復,並且將與目標狀態關聯之關聯能力寫入該一或多個能力儲存元件中。當能力狀態變換為執行狀態時,寫入該一或多個能力儲存元件之能力可經佈置以使得處理電路以比處於預設狀態時受到更少約束的方式操作。因此,當能力狀態變化時可切換某些能力儲存元件之內容,如由當前程式計數器能力所指示,從而允許一些能力替代為更少約束之版本,以允許處理電路具有足以使其能夠改變能力域的對記憶體之增強存取。
在一個實施例中,可提供機制以約束能力狀態可如何自執行狀態變化至預設狀態。特別地,可能必須確保當能力狀態返回至預設狀態時,處理電路不會留有可使其能夠規避能力域之任何執行權利。因此,在一個實施例中,當分支指令識別將導致能力狀態自執行狀態變化至預設狀態的能力時,處理電路經佈置以執行檢查操作,以決定是否允許使用如使用由分支指令識別之能力更新的程式計數器能力。
可能存在識別允許的分支指令的許多方式。然而,在一個實施例中,若一或多種類型的分支指令可用於將能力狀態自執行狀態變化至預設狀態,並且若藉由除了使用一或多種特定類型的分支指令之外的過程來嘗試分支,則檢查操作將偵測到彼情況並採取適當的動作。
特別地,在一個實施例中,在決定檢查操作之失效條件時,處理電路經佈置以執行預定動作。預定動作可採取各種形式。例如,在一個實施例中,它可涉及在執行導致待決定的失效條件的分支指令時發生異常。軟體異常處理程式隨後將控制轉移至適當的錯誤處理常式,以處理自執行狀態至預設狀態的試圖變化。例如,異常處理常式可導致發生程式計數器更新,但是處理電路保持在執行狀態內。或者,處理電路可經佈置以執行一些額外檢查及/或清除操作以確保在允許發生根據分支指令的程式計數器能力更新之前,以導致處理電路自執行狀態返回至預設狀態的方式更新程式計數器能力為安全的。
作為在執行分支指令時立即發生異常之替代方案,在一個替代實施例中,可以設置旗標以指示失效條件的出現,但可允許完成分支指令之執行以更新程式計數器能力。此後,設定旗標之存在可用以導致當將執行下一個指令時發生異常。此允許某些事件發生在執行分支指令和設置旗標的時間與發生異常的時間之間。例如,它可以允許發生保留旗標資訊及程式計數器能力(program counter capability;PCC)資訊之更高優先順序的異常/中斷,隨後清除旗標並將不同的程式計數器能力加載進程式計數器能力儲存元件中。在自更高優先順序的異常/中斷返回時,則將恢復旗標及PCC資訊,並且當將執行下一個指令時,設置旗標之存在將導致發生異常。
在一個實施例中,維持在程式計數器能力內之能力狀態資訊可與保持在能力內之任何其他許可資訊類似地處理,並且因而可以清除指示能力狀態之資訊以便將能力狀態變化至預設狀態。此例如可允許處理電路在執行狀態中操作時經由清除程式計數器能力內之相關資訊欄位而本身轉換至預設狀態。然而,根據不允許過程的活動由指定能力管理之過程增加指定能力之許可的一般原則,處理電路不可能以指示自預設狀態至執行狀態的轉換的方式來改變能力狀態資訊的值。
在替代實施例中,能力狀態資訊可當作與一般許可欄位之一種新型欄位分離,並且可經佈置以便其不能藉由使用彼能力之過程來改變。
現將參照附圖描述特定實施例。
第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;μop/uop)。因此,可能在自L1指令快取記憶體20取出之指令與由管線之後續階段可見的指令之間不存在一對一關係。一般而言,對「指令」之引用在本申請案中應解釋為包括微操作。
將解碼指令傳遞至發出階段10,此階段決定執行指令所需之運算元是否可用並且當運算元可用時發出用於執行的指令。一些實施例可支援按順序處理,以便指令經發出以用於以對應於指令自Ll指令快取記憶體20取出的程式順序之順序執行。其他實施例可支援無序執行,以便可將指令以不同於程式順序之順序發出至執行階段l2。無序處理可用於改善效能,因為當在等候運算元的同時較早指令停頓時,可首先執行其運算元可用的程式順序中的稍後指令。
發出階段10將指令發出至執行階段12,其中執行指令以執行各種資料處理操作。例如,執行階段可包括許多執行單元30、32、34(該等執行單元包括用於對整數值執行算術或邏輯運算之算術/邏輯單元(arithmetic/logic unit;ALU)30)、用於對以浮點形式表示之值執行操作的浮點(floating-point;FP)單元32、及用於執行加載操作或儲存操作之加載/儲存單元34,該加載操作用於將資料值自1階(Ll)資料快取記憶體36加載至暫存器40,該儲存操作用於將資料值自暫存器40儲存至Ll資料快取記憶體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)TLB 52可包括用於轉換許多近來存取的頁中之位址的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亦可提供類似於具備有界指標儲存元件60組中之每個指標的範圍及限制資訊的範圍資訊84及任何適當的限制資訊86。
另外,在一個實施例中,無界指標亦可在通用暫存器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將與儲存能力之資料區塊關聯地設置。藉由此種方法,在能力與正常資料之間區分為可能的,並且因此確保正常資料不用作能力。
如前文所提及,處理電路可用之當前能力組(經由能力暫存器60直接存取,還是留在經由能力暫存器中之有界指標的一者可存取之記憶體位址空間內)形成能力域。因此,能力域識別可藉由處理器存取之記憶體的可用區域,以及任何關聯許可/限制。如參照剩餘圖表論述,在所述實施例中提供可控機構以賦能設備改變能力域。
特別地,在一個實施例中,有界指標具備除了先前論述之指標值欄位62、範圍欄位64及許可/限制欄位66外之附加欄位。特別地,規定能力狀態欄位可設置或清除以識別先前論述之執行狀態或者預設狀態。儘管能力屬於先前參照第1圖論述之通用能力暫存器60之任一者內,但不使用此能力狀態資訊。然而,當將此種有界指標加載進PCC暫存器80時,引用此附加欄位以便識別處理器之當前能力狀態。
此參照第4圖舉例說明,其示意地圖示指定為能力暫存器CN 之運算元的分支指令之操作。儲存在能力暫存器CN 內之能力200包括能力狀態欄位210。儘管能力儲存在能力暫存器內,但不使用欄位210中之資訊。然而,當執行分支指令以將儲存在能力暫存器CN 內之能力加載進程式計數器能力暫存器80中時,則PCC暫存器80之產生更新之內容215現包含能力狀態220,其具有與設置在能力200內之值相同的值。同樣如圖示意性地圖示,將範圍及許可資訊自能力暫存器CN 跨越複製進PCC中,並且能力CN 中之指標值形成新的PC值。一旦已經更新PCC儲存元件80,則處理電路之能力狀態藉由更新之PCC 215的能力狀態位元決定。
在一個實施例中,能力狀態欄位可以被認為是附加許可欄位,並且可以以與其他許可相同之方式操縱。特別地,在處理器上運行之處理能夠通常藉由清除一或多個許可位元來去除其正在使用之能力的一或多個許可,並且在一個實施例中將允許參照能力狀態欄位執行相同的處理。因此,此將允許清除指示執行狀態之能力狀態欄位以指示預設狀態。然而,按照關於能力之一般實踐,不允許處理增大其許可,並且因此若清除能力狀態欄位則不允許設置能力狀態欄位,因而防止處理將執行狀態與能力之能力狀態欄位關聯,該能力之當前值指示預設狀態。
在替代實施例中,能力狀態欄位210可認為是與許可欄位分離之新型欄位,並且可佈置以便其不能藉由使用彼能力之處理來更改。
第5圖為類似於第4圖之圖表,但圖示當執行具有鏈接指令之分支時發生之操作,另外指定能力暫存器CN 。特別地,當執行具有鏈接指令之分支時執行兩種分離處理。如由步驟i圖示,範圍位址由當前PCC內容產生,其隨後儲存在能力鏈接暫存器(capability link register;CLR)中作為返回位址能力以供稍後當自分支返回時使用。如圖所示,當前PCC能力250自PCC暫存器讀出,並且用以產生儲存在CLR中之返回位址能力260。CLR可以採取各種形式,但在一個實施例中為通用能力暫存器之專用一者,例如C30 。作為處理之部分,當前PCC能力250內之能力狀態255將跨越複製以在返回位址能力260內形成欄位265,從而確保處理及時地自分支返回,能力狀態將恢復至在發生分支之前存在的狀態。
另外,在一個實施例中,將當前範圍及許可資訊自PCC跨越複製進返回位址能力,並且當前PC值藉由指令大小增大,如功能270指示,以便在返回位址能力內生成返回位址。
如由步驟ii圖示,將指定源暫存器CN 內之能力隨後複製進PCC儲存元件80中,由於其當產生新的程式計數器能力290時將能力280內之能力狀態285複製進PCC之能力狀態欄位295中。因而,處理電路之能力狀態自CSA 改變至CSB
第6圖圖示當執行返回指令時執行的處理。在執行返回指令時,將CLR之當前內容複製進PCC儲存元件80中。因而,將包括其能力狀態305之返回位址能力300複製進PCC儲存元件中以形成具有關聯能力狀態欄位315之新的程式計數器能力310,該關聯能力狀態欄位之值與CLR之能力狀態欄位305中的值匹配。因而,處理電路之能力狀態由更新之PCC的能力狀態決定,則其將為在已經執行具有鏈接指令之初始分支之前就存在的相同能力狀態。
經由上述機構,程式計數器能力可能在某些時候更新,以便它將執行狀態指定為能力狀態。當處於執行狀態時,處理電路能夠以比當處於該預設狀態時受到更少約束之方式操作,以便允許更改能力域。此約束中之放鬆可以各種方式實施。例如,在一個實施例中,可佈置處理器在執行狀態下操作時不受能力約束。因而,無論何時引用能力,可忽略任何關聯範圍及限制資訊,從而允許處理器存取在與處於預設狀態時就位之能力域關聯之區域之外的記憶體區域。此允許例如存取附加能力,其隨後可對當返回至預設狀態時之處理器有用,從而產生更改之能力域。
在一些實施例中,在處於執行狀態中操作時完全地去除對能力之引用可認為不合適的,並且反而可佈置為,當處理電路在執行狀態中操作時禁用一或多個能力檢查,但仍然執行另外的能力檢查。例如,可決定當處於執行狀態時,當使用程式計數器能力自記憶體取出指令時不使用能力檢查,並且因此忽略與PCC 80關聯之範圍84及約束86資訊。
作為替代方案,或另外地,可忽略DDC 90,以便當處理器參照無界指標存取記憶體時不執行能力檢查。然而,可仍然在能力暫存器60中使用有界指標存取記憶體的情況下,在允許進行存取之前檢查關聯範圍及許可資訊。
作為另一替代方案,並且如在第1圖中示意性地圖示,可分組某些能力暫存器,以便存在當處理器在預設狀態中操作時使用過之能力暫存器的版本,以及存在當處理器在執行狀態中操作時使用的不同版本。例如,如第1圖中圖示,可分組DDC暫存器,以便存在當處理器處於預設狀態時使用的一個DDC暫存器90,以及當處理器處於執行狀態時使用的不同DDC暫存器95。此允許當處於預設狀態時使用的預設資料能力不同於當處於執行狀態時使用的預設資料能力。特別地,用於執行狀態中之預設資料能力可經佈置以擴大可用位址之範圍,及/或相對於當處於預設狀態時使用之預設資料能力增大許可。作為另一實例,能力堆疊指標(capability stack pointer;CSP)可經識別出並且儲存在用於預設狀態中之關聯暫存器96內。然而,可提供分組版本97,其當在執行狀態中操作時反而引用為能力堆疊指標。因此,處理器可具有與其堆疊指標關聯之不同能力,此取決於其在預設狀態中還是在執行狀態中操作,其中處理器取決於當前能力狀態在不同分組暫存器之間切換。
儘管能力暫存器之分組已經參照DDC暫存器及CSP暫存器以舉例之方式圖示,但將理解在替代實施例中,如需要可分組附加的、或不同的能力暫存器。
作為分組某些能力暫存器之替代方案,反而可佈置為將在執行狀態中可用之相等能力設置成一些預設能力,例如最大能力。因此,考慮到DDC實例,可在預設狀態時使用DDC暫存器90,但當在執行狀態時可有效地硬編碼預定DDC以由處理器使用。
作為使用分組能力暫存器之另一替代方案,可當能力狀態改變時執行保存及恢復類型的功能,如由PCC中之能力狀態資訊指示。特別地,當能力狀態自源狀態變化至目標狀態時,可將在一或多個能力儲存元件中關於源狀態之能力保存至某些控制暫存器,以允許它們稍後恢復,並且一旦保存,則與目標狀態關聯之關聯能力寫入相關能力儲存元件中。此外,此種處理可賦能當處理器在執行狀態中操作時放鬆能力約束,藉由當執行某些功能時向處理器提供更多通用許可及/或範圍存取。
為了下列論述第7圖及第8圖,第4圖、第5圖及第6圖之所有先前描述的實例將一般稱作分支指令,因為它們導致更新PCC儲存元件80之內容以識別新的程式計數器能力。如參照第7圖論述,在一個實施例中可執行某些檢查,當遇到任何此種分支指令時。特別地,一旦在用於更新PCC之步驟350處識別分支指令,則在步驟355決定當前PCC中之能力狀態位元是否與將改寫當前內容之新PCC相同。若如此,則處理進行至步驟375,在步驟375中使用新PCC更新PCC暫存器80。
然而,若在步驟355決定能力狀態位元不同,則在步驟360決定新PCC之能力狀態位元是否指示預設狀態。若否,則此指示更新將導致處理器自預設狀態移動至執行狀態,並且在一個實施例中,此為允許轉換而不需要任何附加的檢查。因此,處理進行至更新PCC內容的步驟375。
然而,若新PCC之能力位元不指示預設狀態,則此指示自執行狀態至預設狀態之轉換,並且在一個實施例中若某些類型之分支指令用於執行彼轉換,則此為唯一允許的。因此,在步驟365,決定分支指令是否具有允許類型。在一個特定實施例中,三種允許類型之分支指令為受限分支(branch to restricted;BRR)指令、受限之具有鏈路暫存器的分支(branch with link register to restricted;BLRR)指令及受限之返回(return to restricted;RETR)指令。若分支指令為此等允許類型之一者,則處理進行至步驟375,而另外處理進行至採取預定動作的步驟370。
預定動作可採取各種形式,並且兩個示例性選項在第8A圖及第8B圖中圖示。如在第8A圖中圖示,一個選項為在步驟400發生異常而不完成分支指令之執行,由於其分支不更新PCC暫存器內容。相反,軟體異常處理程式將控制轉移至經執行以解決情況的適當錯誤處理常式。存在許多方式,異常處理常式可以該些方式解決情況。例如,在一個實施例中,它可允許更新PCC內容,但能力狀態經強制繼續識別執行狀態。或者,它可以執行某些附加步驟以確保處理器將不具有任何執行特權,一旦它返回至約束狀態,並且因此它可確保一旦處理器返回至約束狀態,則它將由更改之能力域完全約束。
作為對第8A圖中圖示之處理的替代方案,可替代執行在第8B圖中圖示之處理,其有效地具有兩個分立部分。首先,在步驟410處,在控制暫存器中設置旗標以識別不具有允許類型之分支指令設法以將處理器自執行狀態轉換至預設狀態的方式更新PCC。此後,在步驟415處,允許完成分支指令之執行,從而導致新PCC儲存在PCC暫存器80中並且識別預設狀態。
如第8B圖之部分ii圖示,接著在步驟420決定何時執行下一個指令,以及一旦決定將執行下一個指令,則在步驟425決定是否仍然設置旗標,以及在步驟430是否發生異常,在什麼時間清除旗標。隨後觸發異常處理常式,其可執行先前參照第8A圖論述之處理。若決定在步驟425處不設置旗標,則允許指令在步驟435執行。
由於在第8B圖中示出之處理,某些情況可能在標記已經設置及分支指令已完成之後,在觸發異常之前發生。例如,保留標記狀態及PCC內容之更高優先級的異常/中斷可發生,隨後清除標記並將不同的值加載進PCC中。隨後可執行更高優先級異常常式以執行所需功能,並且在自異常返回時,將上述PCC內容恢復進PCC暫存器中以及將標記恢復至設定狀態。在此時,一旦在步驟420識別下一個指令,則將決定設置標記,並且在步驟430發生異常以處理標記設置條件。
第9圖圖示可使用之虛擬機實施方式。儘管先前所述實施例按照用於操作支援相關方法之特定處理硬體的設備及方法實施本發明,但亦可能提供硬體設備之所謂虛擬機實施方式。此等虛擬機實施在運行支援虛擬機程式510之主作業系統520的主處理器530上運行。一般,要求大功率處理器提供以合理速度執行之虛擬機實施方式,但此種方法可在某些情況中調整,諸如當由於相容性或者再使用的理由期望將本端代碼運行至另一處理器時。虛擬機程式510可儲存在電腦可讀取儲存媒體(其可為非暫時性媒體),並且將應用程式介面(指令執行環境)提供至與將由真實硬體提供之應用程式介面相同之應用程式500,該真實硬體為藉由虛擬機程式510模型化的設備。用於管理能力域之上述方法可在虛擬機環境內實施。例如,運行於或控制虛擬機的軟體可利用實施此種特徵的硬體。
從上述實施例,將可見到,此等所述實施例提供了與可以藉由多個異常階層提供之特權正交的兩階層特權,其中每個異常階層具有不同的軟體執行特權。特別地,在異常階層內,處理器可置於預設狀態或者執行狀態中,以及當處於執行狀態時,處理電路可以比當處於預設狀態時受到更少約束之方式操作,而在預設狀態中處理器受當前能力域約束。此提供了按需要允許改變能力域的機構。
根據所述技術,將當前能力狀態編碼在設置在程式計數器能力內的資訊內,並且因此分支機構可用於將新能力安裝進程式計數器能力暫存器中,從而潛在地改變能力狀態。此提供了用於允許處理電路選擇性地獲得改變能力域之能力的簡單且有效之機構。
在本申請案中,使用用語「經配置...」意謂設備元件具有能夠執行所定義操作之結構。在此上下文中,「配置」意謂硬體或軟體之互連之排列或方式。例如,設備可具有提供定義操作之專用硬體,或處理器或其他處理元件可經程式化以執行功能。「經配置以」不暗示設備元件需要以任何方式改變以便提供所定義之操作。
儘管本文已參考所附圖式詳細地描述本發明之說明性實施例,但應理解,本發明並不限於彼等精確實施例且熟習此項技術者可在不背離如隨附申請專利範圍所限定之本發明之範疇及精神之情況下在其中實施各種改變、添加及修改。例如,可在不脫離本發明之範疇下,對從屬请求項之特徵與獨立请求項之特徵進行多種組合。
2‧‧‧資料處理設備4‧‧‧管線6‧‧‧取出階段8‧‧‧解碼階段10‧‧‧發出階段12‧‧‧執行階段14‧‧‧回寫階段20‧‧‧L1指令快取記憶體22‧‧‧分支預測器24‧‧‧分支目標位址快取記憶體(BTAC)30‧‧‧算術/邏輯單元(ALU)/執行單元32‧‧‧浮點(FP)單元/執行單元34‧‧‧執行單元/36‧‧‧加載/儲存單元40‧‧‧暫存器44‧‧‧2階(L2)快取記憶體50‧‧‧主記憶體52‧‧‧轉換旁看緩衝器(TLB)60‧‧‧有界指標暫存器62‧‧‧指標64‧‧‧範圍資訊66‧‧‧限制資訊68‧‧‧界限/下界位址69‧‧‧界限/上界位址80‧‧‧程式計數器能力(PCC)暫存器82‧‧‧欄位84‧‧‧範圍資訊86‧‧‧限制資訊90‧‧‧預設資料能力(DDC)暫存器92‧‧‧範圍資訊94‧‧‧限制資料95‧‧‧能力狀態欄位96‧‧‧關聯暫存器97‧‧‧分組版本100‧‧‧能力暫存器102‧‧‧指標104‧‧‧範圍資訊106‧‧‧限制資訊108‧‧‧標記位元110‧‧‧記憶體位址空間115‧‧‧資料區塊120‧‧‧相關標記位元200‧‧‧能力210‧‧‧能力狀態欄位215‧‧‧內容/PCC220‧‧‧能力狀態250‧‧‧PCC能力255‧‧‧能力狀態260‧‧‧返回位址能力270‧‧‧功能280‧‧‧能力290‧‧‧程式計數器能力295‧‧‧能力狀態欄位300‧‧‧返回位址能力305‧‧‧能力狀態310‧‧‧程式計數器能力315‧‧‧關聯能力狀態欄位350‧‧‧步驟355‧‧‧步驟360‧‧‧步驟365‧‧‧步驟370‧‧‧步驟375‧‧‧步驟400‧‧‧步驟410‧‧‧步驟415‧‧‧步驟420‧‧‧步驟425‧‧‧步驟430‧‧‧步驟435‧‧‧步驟500‧‧‧應用程式510‧‧‧虛擬機程式520‧‧‧主機作業系統530‧‧‧主處理器
本技術將僅以舉例之方式參照附圖中圖示之本技術的實施例來進一步描述,在附圖中:
第1圖為根據一個實施例之設備的方塊圖;
第2圖圖示若試圖設置或存取有界指標儲存元件組內之指標值則可能觸發錯誤的指令類型之實例,在該有界指標儲存元件組中指標值用以指定超出由關聯範圍資訊指示之範圍的位址;
第3圖根據一個實施例圖示與有界指標關聯之標記位元之使用;
第4圖圖示為了更新處理電路之能力狀態,根據一個實施例之當執行分支指令時執行的操作;
第5圖圖示為了更新處理電路之能力狀態,根據一個實施例之當執行具有鏈接指令之分支時執行的操作;
第6圖圖示為了更新處理電路之能力狀態,根據一個實施例之當執行返回指令時執行的操作;
第7圖為圖示當更新程式計數器能力時根據一個實施例採取之步驟的流程圖;
第8A圖及第8B圖圖示根據一個實施例之用於執行第7圖之步驟370的兩種替代性選項;以及
第9圖圖示可使用之虛擬機實施方式。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
2‧‧‧資料處理設備
4‧‧‧管線
6‧‧‧取出階段
8‧‧‧解碼階段
10‧‧‧發出階段
12‧‧‧執行階段
14‧‧‧回寫階段
20‧‧‧L1指令快取記憶體
22‧‧‧分支預測器
24‧‧‧分支目標位址快取記憶體(BTAC)
30‧‧‧算術/邏輯單元(ALU)/執行單元
32‧‧‧浮點(FP)單元/執行單元
34‧‧‧執行單元/
36‧‧‧加載/儲存單元
40‧‧‧暫存器
44‧‧‧2階(L2)快取記憶體
50‧‧‧主記憶體
52‧‧‧轉換後援緩衝器(TLB)
60‧‧‧有界指標暫存器組
62‧‧‧指標
64‧‧‧範圍資訊
66‧‧‧限制資訊
80‧‧‧程式計數器能力(PCC)暫存器
82‧‧‧欄位
84‧‧‧範圍資訊
86‧‧‧限制資訊
90‧‧‧預設資料能力(DDC)暫存器
92‧‧‧範圍資訊
94‧‧‧限制資料
95‧‧‧能力狀態欄位
96‧‧‧關聯暫存器
97‧‧‧分組版本

Claims (19)

  1. 一種用於資料處理的設備,包括:處理電路,用以執行指令,該處理電路當處於一預設狀態時經佈置以在一能力域中操作,該能力域包括用以約束當執行該等指令時由該處理電路執行之操作的能力;以及一程式計數器能力儲存元件,用以儲存由該處理電路用來決定一程式計數器值的一程式計數器能力,該程式計數器能力識別該處理電路之一能力狀態;該處理電路經佈置以回應於指示該預設狀態之該能力狀態而在該能力域中操作;以及該處理電路經佈置以回應於指示一執行狀態之該能力狀態而比當處於該預設狀態時受到更少約束之方式操作,以便允許更改該能力域。
  2. 如請求項1所述之設備,其中該處理電路經佈置以執行識別一能力之一分支指令,以將彼所識別之能力移入該程式計數器能力儲存元件中以形成一新的程式計數器能力,隨後該處理電路在由該新的程式計數器能力識別之該能力狀態中操作。
  3. 如請求項2所述之設備,其中:該分支指令為具有鏈接指令之一分支;在執行該具有鏈接指令之該分支之前儲存在該程式 計數器能力儲存元件中的該程式計數器能力形成一舊的程式計數器能力;並且該處理電路經佈置以使用該舊的程式計數器能力以生成用於儲存在一返回位址能力儲存元件中的一返回位址能力,該返回位址能力保持由該舊的程式計數器能力識別之該能力狀態。
  4. 如請求項3所述之設備,其中該處理電路經佈置以執行一返回指令以將該返回位址能力寫入該程式計數器能力儲存元件中以形成一返回程式計數器能力,隨後該處理電路在由該返回程式計數器能力識別之該能力狀態中操作。
  5. 如請求項1所述之設備,其中當該能力狀態指示該執行狀態時,該處理電路經佈置以藉由將該處理電路佈置成在該執行狀態中操作時不受能力約束,來以比當處於該預設狀態時受到更少約束之方式操作。
  6. 如請求項1所述之設備,其中當該能力狀態指示該執行狀態時,該處理電路經佈置以藉由當該處理電路在該執行狀態中操作時禁用至少一項能力檢查,來以比當處於該預設狀態時受到更少約束之方式操作。
  7. 如請求項6所述之設備,其中該禁用之至少 一項能力檢查包括以下項中之至少一者:當一程式計數器值用於識別待從記憶體取出的一指令之一位址時參照一程式計數器能力執行之一能力檢查;以及當一無界指標用於識別記憶體中之待存取的一資料區塊之一位址時參照一預設資料能力執行之一能力檢查。
  8. 如請求項1所述之設備,進一步包括:一或多組經分組的能力儲存元件,用以儲存能力,每組經分組的能力儲存元件包括一第一能力儲存元件,該第一能力儲存元件用以儲存用於約束當該處理電路在該預設狀態中操作時由該處理電路執行之操作的一能力;及一第二能力儲存元件,該第二能力儲存元件用以儲存用於約束當該處理電路在該執行狀態中操作時由該處理電路執行之操作的一能力;其中在每組經分組的能力儲存元件之該第一能力儲存元件及第二能力儲存元件中識別的該等能力使得,當該能力狀態指示該執行狀態時,該處理電路以比當處於該預設狀態時受到更少約束的方式操作。
  9. 如請求項1所述之設備,進一步包括:一或多個能力儲存元件,用以儲存用於約束由該處理電路執行之操作的能力; 當對該程式計數器能力之一更新導致該能力狀態自一源狀態變化至一目標狀態時,保存該一或多個能力儲存元件中關於該源狀態之該等能力以允許它們稍後恢復,並且將與該目標狀態關聯之該關聯能力寫入該一或多個能力儲存元件中;其中當該能力狀態變換至該執行狀態時,寫入該一或多個能力儲存元件中之該等能力使得該處理電路以比當處於該預設狀態時受到更少約束的方式操作。
  10. 如請求項2所述之設備,其中:當該分支指令識別將導致該能力狀態自該執行狀態變化至該預設狀態的一能力時,該處理電路經佈置以執行一檢查操作以決定是否允許使用如使用由該分支指令識別之該能力更新的該程式計數器能力。
  11. 如請求項10所述之設備,其中該檢查操作包括決定該分支指令是否為可允許以將導致該能力狀態自該執行狀態變化至該預設狀態的一方式更新儲存在該程式計數器能力儲存元件中的該能力的一種類型的分支指令。
  12. 如請求項10所述之設備,其中在決定用於該檢查操作之一失效條件時,該處理電路經佈置以執行一預定動作。
  13. 如請求項12所述之設備,其中該預定動作 包括以下項中之一者:在執行該分支指令時發生一異常;設置一旗標並且允許執行該分支指令以更新該程式計數器能力,該旗標之設置導致當執行一下一個指令時將發生一異常。
  14. 如請求項1所述之設備,其中當在該執行狀態中操作時,允許該處理電路更改儲存在該程式計數器能力中之該程式計數器能力以將該能力狀態變化至該預設狀態。
  15. 如請求項1所述之設備,其中該等能力中的一或多個包括有界指標。
  16. 一種在一設備內管理一能力域的方法,該設備具有用於執行指令之處理電路,該處理電路當處於預設狀態時經佈置以在該能力域中操作,該能力域包括用以約束當執行該等指令時由處理電路執行之操作的能力,該方法包括以下步驟:在一程式計數器能力儲存元件內儲存由該處理電路用來決定一程式計數器值的一程式計數器能力,該程式計數器能力識別該處理電路之一能力狀態;回應於指示該預設狀態之該能力狀態,在該能力域中操作該處理電路;以及回應於指示一執行狀態之該能力狀態,以比當處於 該預設狀態時受到更少約束之方式操作該處理電路,以便允許更改該能力域。
  17. 一種用於資料處理的設備,包括:處理構件,用於執行指令,該處理構件當處於一預設狀態時用於在一能力域中操作,該能力域包括用於約束當執行該等指令時由該處理構件執行的操作的能力;以及程式計數器能力儲存元件構件,用於儲存由該處理構件用來決定一程式計數器值的一程式計數器能力,該程式計數器能力識別該處理構件之一能力狀態;回應於指示該預設狀態之該能力狀態,該處理構件用於在該能力域中操作;以及回應於指示一執行狀態之該能力狀態,該處理構件用於以比當處於該預設狀態時受到更少約束之方式操作,以便允許更改該能力域。
  18. 一種虛擬機電腦程式,其包括用於控制一主資料處理設備以提供對應於根據請求項1所述之設備的一指令執行環境的程式指令。
  19. 一種電腦可讀取儲存媒體,其儲存根據請求項18所述之虛擬機電腦程式。
TW107115539A 2017-05-25 2018-05-08 用於管理能力域的設備及方法 TWI770172B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB201708395A GB2563010B (en) 2017-05-25 2017-05-25 An apparatus and method for managing a capability domain
GB1708395.7 2017-05-25
??1708395.7 2017-05-25

Publications (2)

Publication Number Publication Date
TW201901422A TW201901422A (zh) 2019-01-01
TWI770172B true TWI770172B (zh) 2022-07-11

Family

ID=59270818

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107115539A TWI770172B (zh) 2017-05-25 2018-05-08 用於管理能力域的設備及方法

Country Status (9)

Country Link
US (1) US11347508B2 (zh)
EP (1) EP3631620A1 (zh)
JP (1) JP7280196B2 (zh)
KR (1) KR102528701B1 (zh)
CN (1) CN110622133B (zh)
GB (1) GB2563010B (zh)
IL (1) IL270500B2 (zh)
TW (1) TWI770172B (zh)
WO (1) WO2018215733A1 (zh)

Families Citing this family (5)

* 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
GB2564130B (en) * 2017-07-04 2020-10-07 Advanced Risc Mach Ltd An apparatus and method for controlling execution of instructions
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction
KR102221593B1 (ko) * 2020-10-23 2021-03-02 주식회사 오파스넷 단말의 설치 환경 유지를 위한 시스템
EP4092556A1 (en) * 2021-05-20 2022-11-23 Nordic Semiconductor ASA Bus decoder

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080250217A1 (en) * 2007-04-03 2008-10-09 Arm Limited. Memory domain based security control with data processing systems
US8850573B1 (en) * 2010-04-14 2014-09-30 Google Inc. Computing device with untrusted user execution mode
EP2669807B1 (en) * 2012-05-31 2015-07-08 Freescale Semiconductor, Inc. Processor resource and execution protection methods and apparatus
WO2017032969A1 (en) * 2015-08-27 2017-03-02 Arm Limited An apparatus and method for controlling instruction execution behaviour
TW201716995A (zh) * 2015-11-12 2017-05-16 Arm股份有限公司 用於控制有界指標的使用之設備及方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845331A (en) * 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US7370210B2 (en) * 2002-11-18 2008-05-06 Arm Limited Apparatus and method for managing processor configuration data
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
US7979685B1 (en) * 2007-11-27 2011-07-12 Oracle America, Inc. Multiple instruction execution mode resource-constrained device
US9116711B2 (en) * 2012-02-08 2015-08-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
US9619230B2 (en) * 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers
US10579377B2 (en) * 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080250217A1 (en) * 2007-04-03 2008-10-09 Arm Limited. Memory domain based security control with data processing systems
US8850573B1 (en) * 2010-04-14 2014-09-30 Google Inc. Computing device with untrusted user execution mode
EP2669807B1 (en) * 2012-05-31 2015-07-08 Freescale Semiconductor, Inc. Processor resource and execution protection methods and apparatus
WO2017032969A1 (en) * 2015-08-27 2017-03-02 Arm Limited An apparatus and method for controlling instruction execution behaviour
TW201716995A (zh) * 2015-11-12 2017-05-16 Arm股份有限公司 用於控制有界指標的使用之設備及方法

Also Published As

Publication number Publication date
US11347508B2 (en) 2022-05-31
TW201901422A (zh) 2019-01-01
KR20200010308A (ko) 2020-01-30
CN110622133A (zh) 2019-12-27
IL270500B2 (en) 2024-03-01
CN110622133B (zh) 2024-06-07
GB2563010A (en) 2018-12-05
KR102528701B1 (ko) 2023-05-04
WO2018215733A1 (en) 2018-11-29
IL270500A (zh) 2020-01-30
EP3631620A1 (en) 2020-04-08
JP7280196B2 (ja) 2023-05-23
GB2563010B (en) 2019-12-25
GB201708395D0 (en) 2017-07-12
US20200050454A1 (en) 2020-02-13
JP2020521225A (ja) 2020-07-16
IL270500B1 (en) 2023-11-01

Similar Documents

Publication Publication Date Title
TWI770172B (zh) 用於管理能力域的設備及方法
JP6902029B2 (ja) 有界ポインタを管理するための装置および方法
CN108351935B (zh) 用于控制有界指针的使用的设备及方法
CN110574009B (zh) 用于管理对能力的使用的设备和方法
CN110799939B (zh) 用于控制指令的执行的设备与方法
US20200192800A1 (en) An apparatus and method for managing capability metadata
US20200142700A1 (en) An apparatus and method for interpreting permissions associated with a capability
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法
US20230409494A1 (en) Technique for constraining access to memory using capabilities
TW202318210A (zh) 用於處理密封能力之技術
TW202319913A (zh) 用於使用能力限制對記憶體存取之技術
KR20240089653A (ko) 봉인 캐퍼빌리티를 핸들링하는 기술
CN112106029A (zh) 用于触发动作的装置和方法