TW201738757A - 用於對能力元資料執行操作的設備及方法 - Google Patents

用於對能力元資料執行操作的設備及方法 Download PDF

Info

Publication number
TW201738757A
TW201738757A TW106112342A TW106112342A TW201738757A TW 201738757 A TW201738757 A TW 201738757A TW 106112342 A TW106112342 A TW 106112342A TW 106112342 A TW106112342 A TW 106112342A TW 201738757 A TW201738757 A TW 201738757A
Authority
TW
Taiwan
Prior art keywords
capability
batch
capability metadata
metadata
processing circuitry
Prior art date
Application number
TW106112342A
Other languages
English (en)
Other versions
TWI752951B (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 TW201738757A publication Critical patent/TW201738757A/zh
Application granted granted Critical
Publication of TWI752951B publication Critical patent/TWI752951B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • G06F16/2386Bulk updating operations
    • 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
    • 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/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • 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/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA

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)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本發明提供一種設備,其包含用以儲存資料塊之儲存元件,其中各個資料塊具有與其相關之能力元資料來識別該資料塊是否規定能力,至少一種能力類型係有界指針。處理電路系統隨後經佈置以回應於識別複數個儲存元件之批量能力元資料操作,對與儲存在複數個儲存元件中之各個資料塊相關之能力元資料執行操作。經由單個規定之操作,此舉因此賦能對多項能力元資料執行查詢及/或修改操作,由此提供對此能力元資料之更有效存取。

Description

用於對能力元資料執行操作的設備及方法
本技術係關於用於對能力元資料執行操作的設備及方法。
基於能力之架構越來越受到關注,其中某些能力針對給定過程定義,且若嘗試進行定義能力之外的操作,則可能觸發錯誤。該等能力可採取各種形式,但一種類型之能力係有界指針(亦可被稱為「胖指針」)。針對有界指針,該指針值可識別或用於判定例如待存取之資料值或待執行之指令的位址。然而,指針值亦可具有相關範圍資訊,該範圍資訊指示當使用該指針值時位址之容許範圍。此可例如用來確保由該指針判定之位址保留在特定邊界中以維持行為之安全性或功能正確性。此外,某些許可/限制資訊可與有界指針之指針值相關聯地規定。關於有界指針之範圍資訊及任何許可/限制資訊可被稱為能力資訊,並且在基於能力之架構中,此種有界指針(包括其相關能力資訊)可被稱為能力。
在基於能力之架構中,已知儲存與儲存在設備之儲存元件中之各個資料塊相關聯的能力元資料。能力元資料可用於識別相關資料塊是否規定能力,或替代地含有不表示能力之資料(本文亦稱為通用資料)。若需要,能力元資料亦可規定某些額外資訊。
當存取單獨資料塊時,可參考相關能力元資料以判定該資料塊是表示能力還是通用資料。然而,期望提供用於在採用基於能力之架構的系統中存取並操縱能力元資料的經改良之機制。
在第一示例配置中,提供一種設備,包含:儲存元件,用以儲存資料塊,各個資料塊具有與其相關之能力元資料來識別該資料塊是否規定能力的,至少一種能力類型係有界指針;以及處理電路系統,回應於識別複數個該等儲存元件之批量能力元資料操作,對與儲存在該複數個儲存元件中之各個資料塊相關的能力元資料執行操作。
在另一示例配置中,提供一種對能力元資料執行操作之方法,包含:將資料塊儲存在儲存元件中,各個資料塊具有與其相關之能力元資料來識別該資料塊是否規定能力,至少一種能力類型係有界指針;以及回應於識別複數個該等儲存元件的批量能力元資料操作,使處理電路系統對與儲存在該複數個儲存元件中之各個資料塊相關的能力元資料執行操作。
在又一示例配置中,提供一種設備,包含:儲存元件構件,用於儲存資料塊,各個資料塊具有與其相關之能力元資料來識別該資料塊是否規定能力,至少一種能力類型係有界指針;以及處理構件,用於回應於識別複數個該等儲存元件構件之批量能力元資料操作,對與儲存在該複數個儲存元件構件中之各個資料塊相關的能力元資料執行操作。
在又一另外的示例配置中,提供一種以非暫時形式儲存電腦程式的電腦程式產品,其用於控制電腦以提供用於對應於根據上文所論述之第一示例配置之設備的程式指令之虛擬機執行環境。
在參考附圖論述實施例之前,提供實施例之以下描述。
如先前提及,基於能力之架構越來越受關注,其中某些能力針對給定過程定義,且若嘗試進行定義能力之外的操作,則可能觸發錯誤。可定義各種類型能力,但一種類型之能力係有界指針(其在一個實施例中結合指針值與相關範圍及許可資訊)。採用此基於能力之架構的設備通常將具有用於儲存能力之儲存元件(本文亦稱為有界指針儲存元件)。儲存元件可係暫存器(本文亦稱為有界指針暫存器或能力暫存器)及/或可係在通用記憶體中之記憶體位置,例如在堆疊記憶體上之位置。某些指令可用於參考此等儲存元件以存取所需能力,並取決於該能力執行操作。例如,考慮到有界指針,執行此類指令可導致該有界指針被擷取,並且針對其中之指針值,隨後被用以在執行該指令期間所需之記憶體中導出位址。指針值可直接用於識別記憶體位址,或可用於導出該記憶體位址,例如,藉由增加指針值之偏移。若記憶體位址係在由範圍資訊規定之範圍中且滿足在許可資訊中規定之任何許可,則將允許進行該操作。
能力元資料可與儲存在儲存元件中之各個資料塊相關聯地提供以識別該資料塊是否表示能力,或替代地表示通用資料。根據本文所述之實施例,該設備經佈置以執行批量能力元資料操作以允許批量查詢及/或修改與複數個儲存元件相關之能力元資料。
更特定言之,在一個實施例中,提供一種設備,其包含儲存元件以儲存資料塊,各個資料塊具有與其相關之能力元資料來識別該資料塊是否規定能力,至少一個能力類型係有界指針。處理電路系統隨後回應於識別複數個該等儲存元件之批量能力元資料操作以對與儲存在複數個儲存元件中之各個資料塊相關的能力元資料執行操作。
根據所述之實施例,不是回應於靶向特定項之能力元資料及/或相關資料塊的操作存取個別項之能力元資料,而是可規定識別複數個儲存元件之批量能力元資料操作。處理電路系統可隨後回應於此批量能力元資料操作以對與儲存在複數個儲存元件中之各個資料塊相關的能力元資料執行操作。批量能力元資料操作直接靶向多項能力元資料,且不需要在操作期間存取相關資料塊。因此,此提供了特別有效之機制來回應於識別其相關能力元資料將被存取之複數個儲存元件的單個批量請求對多項能力元資料執行操作。
此等操作可用於各種情況中。例如,當在能力感知性儲存元件與能力不感知性備份儲存之間進行記憶體調頁時或當跨越缺乏固有能力支援之網路遷移虛擬機時,該等操作可係有用的。批量能力元資料操作之提供可顯著增加此等操作之效率及效能。
批量能力元資料操作可採取各種形式,但在一個實施例中係批量查詢操作,且處理電路系統回應於該批量查詢操作以獲得與儲存在複數個該等儲存元件中之各個資料塊相關的能力元資料,並用以產生含有獲得之能力元資料的輸出資料。因此,當執行此類批量查詢操作時,有關所識別之複數個儲存元件之各種項的能力元資料經擷取並聚集在一起以形成輸出資料。輸出資料可隨後用於各種目的,例如可將該輸出資料寫入通用暫存器,可隨後從該通用暫存器將該輸出資料寫出至能力不感知性實體諸如備份儲存,或實際上在一些實施例中,可能能夠將該輸出資料直接寫入此類備份儲存中。
然而,批量能力元資料操作不需要為批量查詢操作。在一個替代實施例中,批量能力元資料操作係批量修改操作,且處理電路系統回應於該批量修改操作以取決於針對該批量修改操作規定之修改資料來修改與儲存在該複數個該等儲存元件中之各個資料塊相關的能力元資料。因此,在此等實施例中,可規定隨後用於選擇性更新與識別之複數個儲存元件各者相關之能力元資料的修改資料,由此提供回應於單個識別之操作更新多項能力元資料的非常有效之機制。
批量修改操作可採取各種形式。在一個實施例中,其可導致與儲存在複數個儲存元件中之各個資料塊相關之能力元資料經設定以識別各個資料塊規定能力,或替代地可導致與各個資料塊相關之能力元資料經清除以識別各個資料塊規定除能力外之資料(本文亦稱為通用資料)。
在一個替代實施例中,針對將由批量修改過程存取之各個能力元資料,修改資料可識別對該能力元資料執行之修改。由此,在此類實施例中,並非必須對各項能力元資料執行相同修改,而是替代地可在較精細的細微性上規定該等修改。
在一個實施例中,修改資料提供對將由批量修改操作存取之各個能力元資料的修改值,該修改值識別至少兩個下列修改之一:(i)設定能力元資料以識別相關資料塊規定能力;(ii)清除能力元資料以識別相關資料塊規定除能力外之資料;以及(iii)保持能力元資料不變。此類途徑提供關於在批量修改過程期間如何更新個別項之能力元資料的大量靈活性。
儘管在一些實施例中,批量能力元資料操作可無條件地執行,但是在一個替代實施例中,處理電路系統可經佈置以執行需滿足條件之批量能力元資料操作。藉由使批量能力元資料操作之執行變成條件性的,此可增強過程安全性。例如,特定言之考慮到批量修改操作,應瞭解修改用於多個儲存元件之能力元資料之能力係強有力工具,並且可期望限制該能力以對某些特定情況執行此批量修改。
例如,在一個實施例中,若下列條件之至少一個為真,則可判定滿足該條件:(i)處理電路系統在預定之特權狀態中操作;(ii)當處理電路系統在預定特權狀態中操作時可設定之配置儲存元件具有指示允許該批量能力元資料操作的值;(iii)規定該批量能力元資料操作之請求識別批量操作能力,且該批量操作能力指示允許批量能力元資料操作。藉由此途徑,能夠有效限制以下情況:其中若需要,可執行該批量能力元資料操作。
其能力元資料係由批量能力元資料操作來操縱的儲存元件可採取各種形式。例如,在一個實施例中儲存元件可係處理電路系統可存取之記憶體位置。
在一個實施例中,複數個記憶體位置可參考有界指針規定,且當判定複數個記憶體位置常駐於由該有界指針識別之容許位址範圍中時,處理電路系統經佈置以執行批量能力元資料操作。因此,與是否例如使用先前論述之技術之任一者使批量能力元資料操作之執行變成條件性的無關,若有界指針亦用於規定記憶體位置,則可藉由確保其相關能力元資料將由批量能力元資料操作操縱之複數個記憶體位置常駐於由該有界指針識別之容許位址範圍中來執行額外等級之檢查。
儘管一些批量能力元資料操作可相對於記憶體位置實施,但是在一個替代實施例中或此外,某些批量能力元資料操作可對與處理電路系統可存取之能力暫存器相關的能力元資料施加。此類能力暫存器可經佈置以儲存能力,例如先前提及之有界指針,且各個能力暫存器將具有與其相關之能力元資料來識別該能力暫存器之當前內容是否實際上表示能力,或替代地將處理為通用資料。
存在可規定該批量能力元資料操作的數種方式。然而,在一個實施例中,單指令用於規定各個批量能力元資料操作。例如,在一個實施例中,該設備可進一步包含解碼電路系統,以回應於指令序列產生用於發佈至處理電路系統之控制信號,從而使該處理電路系統執行該指令序列要求之操作。解碼電路系統可經佈置以回應於接收到批量能力元資料指令來產生控制信號,用於發佈至處理電路系統以使該處理電路系統執行該批量能力元資料指令要求之批量能力元資料操作。因此,處理電路系統可例如係處理器核心,該處理器核心回應於由解碼電路系統產生之控制信號以執行經解碼之指令要求之操作。當解碼電路系統解碼批量能力元資料指令時,處理電路系統將回應於所產生之所得控制信號來執行要求之批量能力元資料操作。應瞭解此類途徑可藉由賦能單指令規定將對與所識別之複數個儲存元件(可係記憶體位置或暫存器)相關的複數項之能力元資料執行之批量查詢及/或修改操作來提供顯著效能及代碼密度益處。
存在其中可在指令中規定其能力元資料將由批量能力元資料操作存取/操縱的複數個儲存元件的數種方式。例如,在一個實施例中,儲存元件係記憶體位置且批量能力元資料指令規定提供識別連續系列的記憶體位置(其相關能力元資料將經受批量能力元資料操作)之位址的暫存器。由暫存器規定之位址可採取各種形式,但在一個實施例中可例如係開始位址。
存在其中可識別在連續系列中之記憶體位置之數量的各種方式。例如,在一個實施例中,批量能力元資料指令可包括識別在連續系列中之記憶體位置之數量的欄位。因此,在此等實例中,該指令可明確地識別經受批量能力元資料操作之記憶體位置之數量。
識別記憶體位置之數量的欄位可採取各種形式。例如,欄位可提供對含有指示在連續系列中記憶體位置數量之值的暫存器之參考。或者,可在欄位中規定立即值,該立即值直接指示在連續系列中記憶體位置之數量。
在一替代實施例中,可不需要批量能力元資料指令明確地識別在連續系列中記憶體位置之數量。例如,在一個實施例中,記憶體位置之數量可由設備性質暗示。定義記憶體位置數量的設備性質可採取各種形式,但在一個實施例中,該性質係處理電路系統可存取之快取記憶體之快取記憶體線長度。此類途徑會使得例如處理器之資料快取記憶體的結構被開拓。特定言之,在此類快取記憶體利用針對位於快取記憶體線中之各個資料塊的能力元資料來增加快取記憶體線資訊的情況下,可能經由使用此類指令來促進對此類能力元資料之管理操作,且此可例如用於最佳化調頁代碼,該係調頁代碼用以在能力感知記憶體系統與備份儲存之間移動能力,或反之亦然。
在一個實施例中,批量能力元資料指令將能力暫存器識別為複數個儲存元件。在此類實施例中,批量能力元資料指令可包括識別其相關能力元資料將經受該批量能力元資料操作之能力暫存器的暫存器識別符欄位,該暫存器識別符欄位提供立即值及暫存器識別符之至少一者以識別能力暫存器。當對與複數個能力暫存器相關之能力元資料執行此等批量操作時,通常不要求該等暫存器係連續序列之暫存器,且由此存在關於如何識別獨立暫存器之大量靈活性。例如,掩碼值可用於將相關暫存器識別為立即值或對含有該掩碼值之暫存器之參考。或者,基底暫存器識別符與計數值之組合可用於識別暫存器,其中基底暫存器識別符或計數值是參考通用暫存器規定,並且基底暫存器識別符及計數值中的另一者例如係由立即值規定。
批量能力元資料指令可採取各種形式。在一個實施例中,其採取批量查詢指令之形式,且處理電路系統經佈置以回應於當解碼該批量查詢指令時由解碼電路系統產生之控制信號執行批量查詢操作。批量查詢指令可識別目的暫存器,且處理電路系統回應於批量查詢操作以獲得與儲存在複數個該等儲存元件中之各個資料塊相關之能力元資料,並且用以產生含有所獲得之能力元資料的輸出資料以供儲存在目的暫存器中。因此,回應於單指令,與複數個儲存元件相關之能力元資料可聚集在一起並儲存在單個目的暫存器中。
在一些實例中,批量能力元資料指令可係批量修改指令,且處理電路系統經佈置以回應於當解碼批量修改指令時由解碼電路系統產生之控制信號執行批量修改操作。批量修改指令可識別用於識別修改資料的源欄位,且處理電路系統回應於批量修改操作,以取決於由源欄位識別之修改資料來修改與儲存在複數個該等儲存元件中之各個資料塊相關之能力元資料。
源欄位可以各種方式識別修改資料。例如,源欄位可提供立即值及/或暫存器識別符以識別修改資料。在一個實施例中,在儲存元件係記憶體位置的情況下,識別含有修改資料之通用暫存器。然而,在儲存元件係能力暫存器的情況下,則在一個實施例中,可規定立即值與暫存器識別符之任一者或兩者以識別修改資料。在又一另外實施例中,亦當儲存元件係記憶體位置時,立即值與暫存器識別符之任一者或兩者可用以識別修改資料。
在處理電路系統經佈置以將批量查詢操執行為批量能力元資料操作的一個實施例中,處理電路系統可進一步經佈置以輸出含有所獲得之能力元資料的資料以供儲存在能力不感知性儲存元件中。其可直接輸出資料以供儲存在能力不感知性儲存元件中,或最初該輸出資料可儲存在通用暫存器中,輸出資料可從該通用暫存器轉發到能力不感知性儲存元件。
在處理電路系統經佈置以將批量修改操作執行為批量能力元資料操作的一個實施例中,所使用之修改資料可獲自能力不感知性儲存元件。儘管在一個實施例中,修改資料可直接獲自能力不感知性儲存元件,但是在一個替代實施例中,可首先將修改資料從能力不感知性儲存元件寫入通用暫存器中,隨後在執行批量修改操作期間由處理電路系統從通用暫存器參考該修改資料。
作為處理電路系統(係執行由相關解碼電路系統解碼之指令的處理器核心)之替代,該處理電路系統可在一個替代實施例中係直接記憶體存取(direct memory access; DMA)電路。在此類實施例中,批量能力元資料操作可由處理器核心規定,並且使DMA電路發佈一或更多個事務以對連續系列的記憶體位置實施該批量能力元資料操作。因此,在此類實施例中,在處理器管線可存取亦可由DMA電路系統存取之記憶體的情況下,該處理器管線可將批量能力元資料操作卸載至DMA電路系統,其中DMA電路系統隨後經由在DMA電路系統與相關記憶體位置之間的一系列事務實施所要求的操作。因此,在此類實施例中,批量能力元資料操作有效表達為匯流排協定等級,以允許DMA電路存取/操縱有關記憶體區域的一組能力元資料項。
特定實施例現將參考附圖描述。
第1圖示意地圖示包含用於處理指令之處理管線4的資料處理設備2之實例。在此實例中,處理管線4包括數個管線級,該等管線級包括擷取級6、解碼級8、發佈級10、執行級12、及寫回級14,但應瞭解可提供其他類型的級或各級之組合。例如,用於執行暫存器重命名之重命名級可被包括在一些實施例中。待處理之指令在各級之間移動,並且當指令於一個級待定時,另一指令可於管線4之不同級待定。
擷取級6從1階(L1)指令快取記憶體20擷取指令。擷取級6通常可順序地從連續指令位址擷取指令。然而,擷取級亦可具有用於預測分支指令之結果的分支預測器22,且若預測採取分支,則擷取級6可從(非順序)分支目標位址擷取指令,或若預測不採取分支,則擷取級6從下一順序位址擷取指令。分支預測器22可包括一或更多個用於儲存資訊之分支歷史表,以用於預測是否能採取某些分支。例如,分支歷史表可包括用於追蹤先前執行之分支的實際結果或表示對分支進行之預測的置信度之計數器。分支預測器22亦可包括用於快取分支指令之先前目標位址的分支目標位址快取記憶體(branch target address cache; BTAC)24,以使得可在後續遇到相同分支指令時預測此等先前目標位址。
擷取之指令傳遞到解碼該等指令以產生經解碼之指令的解碼級8。經解碼之指令可包含用於控制執行級12以執行適當處理操作的控制資訊。針對從快取記憶體20擷取之一些更複雜指令,解碼級8可將彼等指令映射至多個經解碼之指令,此映射可已知為微操作(μops或uops)。因此,在從L1指令快取記憶體20擷取之指令與由管線之隨後級看到之指令之間可能不存在一一對應關係。一般而言,在本申請案中提及「指令」應解釋為包括微操作。
將經解碼之指令傳遞到發佈級10,發佈級10判定執行指令所需之運算元是否可獲用,並且當運算元係可用時,發佈執行指令。一些實施例可支援按順序處理,因此指令被發佈用於按與指令從L1指令快取記憶體20擷取的程式順序對應之順序執行。其他實施例可支援無序執行,使得可將指令以與程式順序不同之順序發佈至執行級12。無序處理可用來改良效能,因為儘管當等待運算元時停止較早指令,但是可以按照程式順序首先執行其運算元係可用之後一指令。
發佈級10將指令發佈至執行級12,其中執行該等指令以進行各種資料處理操作。例如,執行級可包括數個執行單元30、32、34,包括對整數值進行算術或邏輯運算的算術/邏輯單元(arithmetic/logic unit; ALU)30、對以浮點形式表示之值進行操作的浮點(floating-point; FP)單元32,及用於進行將資料值從1階(L1)資料快取記憶體36載入暫存器40的載入操作或將資料值從暫存器40儲存至L1資料快取記憶體36的儲存操作的載入/儲存單元34。應瞭解此等僅係可提供之執行單元類型之一些實例,且亦可提供眾多其他種類。為了進行處理操作,執行級12可從一組暫存器40讀取資料值。執行指令之結果可隨後由寫回級14寫回至暫存器40。
L1指令快取記憶體20及L1資料快取記憶體36可係包括多階快取記憶體之快取記憶體階層之部分。例如,亦可提供2階(L2)快取記憶體44並且視情況可提供其他階級的快取記憶體。在此實例中,L2快取記憶體44在L1指令快取記憶體20與L1資料快取記憶體36之間共享,但其他實例可具有分開之L2指令及資料快取記憶體。當待擷取之指令不在L1指令快取記憶體20中時,則其可從L2快取記憶體44擷取,並且相似地若該指令不在L2快取記憶體44中,則其可從主記憶體50擷取。相似地,回應於載入指令,若資料不在L1資料快取記憶體36中,則其可從L2快取記憶體44擷取,並且若需要則從記憶體50擷取。任何已知方案可用來管理快取記憶體階層。
管線4所使用以代表程式指令及資料值的位址可係虛擬位址,但至少主記憶體50,且視情況亦至少一些階級的快取記憶體階層可經實體定址。因此,可提供轉換後備緩衝器52(translation lookaside buffer; TLB),以用於將管線4所使用之虛擬位址轉換為用於存取快取記憶體或記憶體之實體位址。例如,TLB 52可包括數個條目,該等條目各自規定虛擬位址空間之對應頁之虛擬頁位址及對應實體頁位址,虛擬頁位址應映射至對應實體頁位址以將在對應頁中之虛擬位址轉換為實體位址。例如,虛擬及實體頁位址可對應於對應虛擬及實體位址之最高有效部分,而當將虛擬位址映射至實體位址時剩餘最低有效部分保持不變。除位址轉換資訊之外,各個TLB條目亦可包括一些規定存取許可之資訊,諸如指示在管線4之某些模式中位址之某些頁是否可存取。在一些實施例中,TLB條目亦可定義位址之對應頁之其他性質,諸如定義回應於讀取或寫入操作更新快取記憶體階層之哪個階級的快取記憶體策略資訊(例如,該快取記憶體應以寫回還是寫通模式操作),或定義與由管線4發佈資料存取之順序相比,對在對應頁中之位址的資料存取是否可由記憶體系統重定序的資訊。
儘管第1圖圖示單階TLB 52,但是應瞭解可提供TLB階層以使得1階(L1) TLB 52可包括用於轉換在數個最近存取之頁中的位址之TLB條目並且可提供2階(L2) TLB以用於儲存大量頁之條目。當在L1 TLB中不存在所需條目時,則其可從L2 TLB擷取,或從階層中之其他TLB擷取。若要存取頁面之所需條目不在任何TLB中,則可執行頁表走查以在記憶體50中存取頁表。任何已知TLB管理方案可用於本技術中。
此外,應瞭解一些系統可支援多階位址轉換,使得例如第一TLB(或TLB階層)可用於將虛擬位址轉換為中間位址,且使用一或更多個其他TLB之二階位址轉換可隨後將中間位址轉換為用於存取快取記憶體或記憶體之實體位址。此可用來支援虛擬化,其中例如一階位址轉換可由作業系統管理且二階位址轉換可由超管理器管理。
如第1圖所示,設備2可具有一組有界指針暫存器60。儘管該組有界指針暫存器在第1圖中圖示為與該組通用資料暫存器40實體分開,但是在一個實施例中,相同實體儲存可用於提供通用資料暫存器及有界指針暫存器二者。
各個有界指針暫存器60包括可用於判定待存取之資料值之位址的指針值62,且當使用對應指針62時規定容許位址範圍的範圍資訊64。有界指針暫存器60亦可包括可定義對指針之使用的一或更多個限制/許可的限制資訊66(本文亦稱為許可資訊)。例如,限制66可用於限制可使用指針62之指令的類型或可使用該指針之管線4的模式。因此,可認為範圍資訊64及限制資訊66定義允許在其中使用指針62的能力。當嘗試使用在定義能力外之指針62時,可觸發錯誤。範圍資訊64可用來例如確保指針保留在某些已知邊界內並且不雜散至記憶體位址空間中可能含有敏感或安全資訊之其他區域。在相同實體儲存用於通用資料暫存器及有界指針暫存器二者的一實施例中,則在一個實施例中,指針值62可例如儲存在與用於對應通用暫存器相同之儲存位置中。
第2圖圖示指令類型之實例,該等指令類型之容許範圍用於防止對資料或指令的未授權存取。如第2圖之頂部所示,特定有界指針暫存器PR1包括給定指針值62及範圍資訊64,在此實例中該特定有界指針暫存器PR1是使用定義容許範圍下界之下界位址68及定義容許範圍上界之上界位址69規定。例如,設定邊界68、69以定義位址範圍80000至81000。當某些指令參考有界指針暫存器PR1時,可觸發錯誤,並且根據指針62判定之位址超出此範圍。
例如,如第2圖之部分A所示,在一些系統中,若嘗試將在指針暫存器60中之指針62之值設定為超出由範圍資訊64規定之範圍的值,則可觸發錯誤(此處假設該指針直接規定位址)。此避免了指針62採取超出規定範圍之任何值,使得可確保使用該指針之任何存取安全地位於容許範圍中。或者,如第2圖之部分B所示,當該位址位於規定範圍之外時,當指令嘗試存取由指針62之位址識別之位置時,可觸發錯誤。因此,仍可容許將指針62設定為超出規定範圍之值,但若位址位於容許範圍之外,則一旦嘗試於指針位址(或源自該指針之位址)進行資料存取,則可觸發錯誤。其他系統可回應於在第2圖之部分A及B中圖示之指令類型兩者而觸發錯誤。
範圍資訊64可以不同方式設定。例如,安全代碼或作業系統或超管理器可規定給定指針的容許範圍。例如,指令集架構可包括用於設定或修改給定指針62的範圍資訊64的數個指令,並且可將此等指令之執行限制至某些軟體或處理器4之某些模式或異常狀態。可使用設定或修改範圍資訊64之任何已知技術。
除當執行參考指針的某些指令時可於執行狀態12下使用之該組有界指針儲存元件60之外,程式計數器能力(program counter capability; PCC)暫存器80亦可用於當指令正在從1階指令快取記憶體20擷取時於擷取級6提供相似功能性。特定言之,程式計數器指針可儲存在欄位82中,其中PCC 80亦提供範圍資訊84及任何適當的限制資訊86,類似於利用在該組有界指針儲存元件60中之各指針提供的範圍及限制資訊。
第3圖示意地圖示如何與個別資料塊相關聯地使用標籤位元以識別彼等資料塊是否表示能力(亦即,有界指針及相關限制資訊),或表示正常資料。特定言之,記憶體位址空間110將儲存一系列資料塊115,該等資料塊通常將具有規定之大小。僅出於說明之緣故,在此實例中假設每個資料塊包含128個位元。與各個資料塊115相關聯,提供了標籤欄位120,在一個實例中,標籤欄位120係被稱為標籤位元之單個位元欄位,該標籤欄位120經設定以識別相關資料塊表示能力,並經清除以指示相關資料塊表示正常資料,並因此不可處理為能力。應瞭解,與設定或清除狀態相關之實際值可取決於實施例而變化,但僅以說明之方式,在一個實施例中,若標籤位元具有值1,則其指示相關資料塊係能力,且若其具有值0,則其指示相關資料塊含有正常資料。
當將能力載入有界指針暫存器60(本文亦稱為能力暫存器)之一(諸如第3圖所示之能力暫存器100)中時,則標籤位元隨著能力資訊移動。由此,當將能力載入能力暫存器100中時,指針102、範圍資訊104及限制資訊106(後文稱為許可資訊)將被載入能力暫存器中。此外,與該能力暫存器相關聯,或作為其中之特定位元欄位,將設定標籤位元108以識別該等內容表示能力。相似地,當將能力儲存回記憶體時,將與儲存該能力的資料塊相關聯地設定相關標籤位元120。藉由此途徑,可能區分能力與正常資料,並因此確保正常資料無法用作能力。
儘管在第3圖中,已經提及含有標籤位元之標籤欄位,但是在更一般實施例中,標籤位元係可與各種能力相關之能力元資料之實例。因此,如第4圖所示,儲存在系統之儲存元件中的能力150(不論其係能力暫存器60之一還是記憶體位址空間110中之記憶體位置)可具有與其相關之能力元資料155。能力元資料將識別相關資料塊150係實際上表示能力,還是替代地應解釋為通用資料,且在一個實施例中,將該資訊編碼為在能力元資料155中之標籤位元。在一個實施例中,能力元資料可僅包含標籤位元,但若需要,在替代實施例中可包含額外資訊。例如,資料類型可經進一步細分,其中能力元資料例如藉由特定優先權等級、細粒許可(例如,唯讀)等等指示所有權。
該等能力可採取各種形式,但在第4圖所示之實施例中,該能力係有界指針。如圖示,有界指針由指針值160、範圍資訊165及許可屬性170構成。範圍資訊及許可屬性可被統稱為有界指針之屬性。
在一個實施例中,第1圖所示之執行管線12經佈置以執行指令,以對所識別之複數個儲存元件執行批量能力元資料操作,導致對與儲存在所識別之複數個儲存元件中之各個資料塊相關的能力元資料執行操作。批量能力元資料操作可採取各種形式。例如,一種形式之批量能力元資料操作可係批量查詢操作,而另一示例形式之批量能力元資料操作可係批量修改操作。
第5A圖及第5B圖圖示可在兩種不同類型的指令中提供之欄位,該兩種不同類型的指令可由執行級12執行以對與記憶體系統中的記憶體位置序列相關之各項能力元資料執行批量查詢操作。此等記憶體位置可常駐於第1圖所示之記憶體50中,或在快取記憶體36、44的各階級之一中。
如第5A圖所示,稱為CQueryTagsM指令之指令可經由第1圖之1階指令快取記憶體20擷取,以用於由解碼級8解碼來產生控制信號序列,該控制信號序列將隨後控制執行級12對與由指令識別之複數個資料塊相關之複數個標籤位元執行查詢操作(在此實施例中,假設各項能力元資料包含標籤位元,如例如先前參考第3圖所論述)。如第5A圖所示,作業碼欄位205將該指令識別為CQueryTagsM指令。欄位210用於識別位址,從該位址可判定將查詢其標籤位元之複數個記憶體位置。在一個實施例中,該位址係用於記憶體位置序列之開始位址,且該開始位址可在能力暫存器60之一或通用暫存器40之一中規定,其中欄位210包括該暫存器之識別符。在一個實施例中,該位址將對準至能力記憶體位置,亦即,在第3圖之記憶體位址空間110中圖示之資料塊115之一的開始。在一替代實施例中,可能不需要以對準方式規定開始位址,而是替代地可忽視導致規定之位址不對準的任何位元,因此將在欄位210中規定之位址有效變換為對準位址。
在第5A圖之指令之實例中,在該指令中經由使用欄位215明確定義查詢其標籤位元之記憶體位置之數量。在一個實施例中,欄位215可識別通用暫存器,該通用暫存器的內容識別待查詢之標籤數量。或者,立即值可在欄位215中規定以直接識別待查詢之標籤數量。
隨後提供額外欄位220以識別通用暫存器40,查詢結果將輸出至該通用暫存器。因此,當執行級12執行操作序列以針對所識別之記憶體位置各者擷取標籤位元時,隨後將彼等標籤位元一起整理為輸出資料值,該輸出資料值被輸出以供儲存在通用暫存器40之一中。
若需要,在指令200中(且實際上在本文所述之指令之任一者中),可規定源暫存器之一與目的暫存器相同。因此例如,若在欄位215中規定通用暫存器以識別待查詢之標籤數量,則可將相同通用暫存器規定為寫入查詢結果之暫存器(允許將例如欄位215、220組合以形成單一欄位)。此可減少對指令之編碼空間需求之限制。
儘管在第5A圖之指令200之實例中,可明確設定將查詢其標籤之記憶體位置之數量,但是在替代實施例中,該數量可係隱含的,並且因此例如可源自在其上執行該等指令之設備的性質。此類指令之實例在第5B圖中圖示,其中圖示了「DC_CQueryTagsM」指令225。作業碼230將該指令識別為DC_CQueryTagsM指令,而欄位235用於與在第5A圖之指令200中之欄位210相同的目的,並且因此識別用於將查詢其標籤位元之記憶體位置序列的開始位址。然而,在此實例中,不存在用以識別要查詢之標籤數量的分開欄位,而是替代地在批量查詢操作期間存取之標籤數量係根據相關資料快取記憶體之快取記憶體線長度判定,諸如第1圖所示之1階資料快取記憶體36(如在該指令名稱中所使用之術語「DC」意欲傳遞此係批量查詢指令類型,其中查詢標籤之數量取決於資料快取記憶體之快取記憶體線大小)。快取記憶體線大小可例如在該處理器可用之系統暫存器之一中規定(由第1圖之參考數字90表示)。
在一個實施例中,將在欄位235中規定之開始位址與快取記憶體線長度的粒度對準,並且因此,當執行指令時,與維持在快取記憶體線中之各資料塊相關之標籤位元經查詢並整理為輸出值,隨後將該輸出值輸出至在欄位240中規定之通用暫存器中。或者,若在欄位235中規定之開始位址不與快取記憶體線長度的粒度對準,則在替代實施例中可忽視位址中導致該位址不對準之位元,因此將該位址有效變換為對準的位址。
第6A圖及第6B圖圖示兩種示例方式,其中與各個資料塊相關之標籤位元可併入資料快取記憶體之資料RAM(隨機存取記憶體)中之各個快取記憶體線之快取記憶體線資訊中。在第6A圖所示之實例中,資料RAM 250包括複數個快取記憶體線255,其中各個快取記憶體線調節多個資料塊(例如,以舉例之方式在第3圖中圖示的多個128位元資料塊)。在第6A圖所示之實例中,將各個標籤位元附加至各資料塊結束處(或者其可於各個資料塊之開始處預先掛起)。因此,快取記憶體線之有效長度經延伸以併入必要標籤位元資訊。
儘管在第6A圖所示之實施例中,各種標籤位元與其對應資料塊一起定位,但是在第6B圖所示之替代實例中,各種標籤位元全部容納在資料RAM 260之各個快取記憶體線265之最後部分270中。因此,各個快取記憶體線中之資料塊一個接一個地附加,並且將標籤位元資訊整理在快取記憶體線之結束處(應瞭解,在一個替代實施例中其可整理在快取記憶體線中之適當點處,例如在快取記憶體線之開始處)。應瞭解第6A圖及第6B圖僅係兩個示例性佈置,藉由此佈置該標籤位元資訊可容納在快取記憶體線內容中,並且應瞭解可採用任何其他適宜方案。
儘管在第5A圖及第5B圖中圖示之指令意欲對與記憶體位置序列相關之標籤位元進行操作,該設備亦可支援對能力暫存器操作以執行批量標籤查詢操作的指令之執行。一個此指令在第7圖中圖示,並且特定言之規定指令CQueryTagsR 300,該指令經佈置以執行對有關一系列能力暫存器之多個標籤位元之查詢(與圖示彼等指令關於記憶體位置操作之第5A圖及第5B圖中於指令結束處之「M」術語相比,於指令結束處之「R」術語指示其對能力暫存器操作)。
欄位305含有將該等指令識別為CQueryTagsR指令之作業碼。欄位310隨後用於識別將查詢其標籤位元的複數個能力暫存器。在欄位310中識別複數個能力暫存器之方式可取決於實施例而變化。例如,其可參考其內容識別待查詢之複數個暫存器的通用暫存器或用特別地結合在欄位310內之立即值識別。實際上,通用暫存器與立即值之組合可用於規定待查詢之暫存器。
在第7圖之下半部分示意地圖示在欄位310中識別暫存器之兩種示例方式。在第一實例中,提供掩碼值320,其可例如藉由通用暫存器之內容或藉由立即值規定。掩碼值可用於直接識別待查詢之暫存器。例如,掩碼值之各個位元可對應於在暫存器檔案中之一個暫存器,並且是設定還是清除該位元決定是否將查詢該暫存器之標籤位元。例如,各個設定之位元可識別將查詢其標籤位元的暫存器。若在設備中存在多個分開的暫存器檔案,則可規定可選暫存器檔案識別符325以識別施加掩碼值320之暫存器檔案。應瞭解經由使用此類掩碼值,有可能規定將查詢其標籤位元的任意複數個能力暫存器。
在亦圖示於第7圖中之替代佈置中,欄位310可實際上併入有兩個子欄位,第一子欄位330識別基底暫存器識別符,且第二子欄位335識別計數值。當組合時,此等欄位可用於識別從由基底暫存器識別符識別之暫存器開始的多個暫存器之序列。子欄位330、335中的一個可使用通用暫存器來識別其內容,而另一個子欄位可例如提供立即值。此外,若在該設備中提供多個暫存器檔案,則可選之額外欄位340可用於識別將對其暫存器操作之特定暫存器檔案。
如第5A圖及第5B圖之指令,第7圖之指令300包括欄位315,在該欄位315中識別查詢結果將寫入之通用暫存器。
在第5A圖、第5B圖及第7圖之實例中,該等指令係批量查詢指令,導致執行批量查詢操作以擷取與多個儲存元件相關之標籤位元,並隨後輸出彼等標籤位元以供儲存在通用暫存器中。可在設備中提供的另一類型的指令係批量修改指令,該批量修改指令當在執行級12中回應於由解碼級8產生之控制信號執行時,使得根據由批量修改指令規定之修改資料來選擇性修改與各個識別之儲存元件相關之標籤位元。
在第8A圖、第8B圖及第8C圖中圖示了三個此類批量標籤修改指令,該等批量標籤修改指令一般分別對應於第5A圖、第5B圖及第7圖之等效批量查詢指令。
特定言之,第8A圖圖示CModTagsM指令350,其可用於對與記憶體位置序列相關之標籤位元執行批量標籤修改操作,其中在指令中明確識別記憶體位置之數量及因此待操作之標籤位元之數量。作業碼355因此將該指令識別為CModTagsM指令,而欄位360、365一般對應第5A圖之指令200之欄位210、215。因此,此兩個欄位共同識別開始位址及待修改之標籤之數量。欄位370隨後識別含有修改資料之通用暫存器,並且因此提供對在批量標籤修改操作期間將應用之更新標籤值之指示。更詳細地,關於在欄位370中識別之通用暫存器中規定位元可用於判定待進行之標籤位元修改的方式將在後文中參考第10圖論述。
第8B圖圖示DC_CModTagsM指令375之格式,該指令可再次用於對與記憶體位置序列相關之標籤位元執行批量標籤修改,但在此實例中,待操作之標籤位元之數量係由設備之性質暗示,特定言之由在設備之資料快取記憶體之一中的快取記憶體線之快取記憶體線長度暗示。作業碼380將該指令識別為DC_CModTagsM指令,而欄位385用於與第5B圖之指令225之欄位235相同之目的,並且因此識別記憶體位置序列之開始位址。欄位390用於與欄位370相同之目的,並且因此識別通用暫存器,該通用暫存器之內容識別在批量標籤修改操作期間如何更新標籤值。
儘管第8A圖及第8B圖之指令導致對記憶體位置序列執行批量標籤修改操作,但是第8C圖所示之指令替代地對與在該組能力暫存器60中之複數個能力暫存器相關之標籤位元操作。特定言之,第8C圖圖示CModTagsR指令400,其中作業碼405將該指令識別為CModTagsR指令。欄位410用於與第7圖之指令300之欄位310相同之目的,並且由此識別其標籤位元將經受批量修改操作的複數個暫存器。欄位415隨後識別在批量標籤修改操作期間要如何修改標籤值。儘管欄位415可僅含有以與第8A圖及第8B圖所示指令之欄位370、390相同之方式對通用暫存器之參考,但是在替代實施例中,欄位415可規定立即值,或立即值與通用暫存器之組合可用於識別待進行之修改。儘管原則上第8A圖及第8B圖所示之指令之欄位370、390亦可使用通用暫存器與立即值之組合來識別待進行之更新,但已發現當對能力暫存器內容執行批量標籤修改時,與立即值組合地使用通用暫存器可係更有用的,前提係可規定經受批量標籤修改操作之能力暫存器之非連續性質。
將標籤位元儲存在當執行批量標籤查詢操作時針對查詢結果識別之通用暫存器中的方式或在針對批量標籤修改操作識別之通用暫存器中表達修改資料位元的方式可採取各種形式。第9A圖圖示壓縮格式,其中從最低有效位元開始之各個位元識別所查詢之標籤位元(當該暫存器用於纍計批量標籤查詢操作之結果時)或獨立項修改資料(當通用暫存器用作源暫存器以識別在批量標籤修改操作期間使用之修改資料時)。因此,在通用暫存器420中提供位元425之序列。在暫存器中有效位元之數量將取決於其標籤位元正被查詢或修改的儲存元件之數量,並且由此暫存器420之一些更有效位元可係未使用的。儘管在第9A圖中壓縮格式圖示為從最低有效位元位置開始,但是應瞭解在替代實施例中壓縮格式可從最高有效位元開始,並且因此某些數量之最低有效位元可係未使用的。
第9B圖圖示替代途徑,其中通用暫存器430含有資訊塊序列,在此實例中為個別位元組序列,並且在各個位元組中之某一位元435用於識別所查詢之標籤位元之一(在批量標籤查詢操作之實例中)或各項修改資料之一(在批量標籤修改操作之實例中)。若需要,在各個位元組中之其他位元可用於其他資訊,或可係未使用的。
第10圖係更詳細圖示可如何使用修改資料位元以在執行批量標籤修改操作期間識別對個別標籤位元進行之更新的圖。出於說明之目的,圖示第9A圖之壓縮格式,但該等原則同等適用於第9B圖之未壓縮格式。在第10圖中圖示用於解釋位元425之序列的四個示例選項。各個位元425對應於待修改之標籤位元之一。根據選項A,若位元425係於邏輯0值,則清除對應標籤位元以識別相關資料塊不表示能力。相反地,若位元425係於邏輯1值,則設定對應標籤位元以識別將相關資料塊解譯為能力。在其中將標籤位元設定為邏輯1值以識別對應資料塊係能力,並清除為邏輯0值以識別相關資料塊不係能力的實施例中,則該更新可經由移動操作有效執行,藉以在批量標籤更新操作期間將暫存器420內之相關位元425之內容移動至對應標籤位元中。
選項B說明其中若位元425係於邏輯0值,則對應標籤位元保持不修改的情況。因此,若已經設定,則對應標籤位元將保留在設定狀態中,否則將保留在清除狀態中。相反地,若位元425具有邏輯1值,則此將導致清除標籤位元。在一個實施例中,此選項可經由使用BIC(位元清除)操作實施。
根據選項C,若位元425係於邏輯0值,則對應標籤位元保持未修改,而若位元425係於邏輯1值,則設定該標籤位元。在一個實施例中此選項可經由使用ORR操作實施。
選項D說明若需要原則上可使用,但與其他選項A至C相比可具有較少實踐應用於修改能力標籤位元之其他選項。根據選項D,若位元425具有邏輯0值,則對應標籤位元保持未修改,而若位元425具有邏輯1值,則交換對應標籤位元之值,並且因此若已經設定則清除,且若已經清除則設定。在一個實施例中此操作可藉由互斥或(XOR)操作實施。
儘管在一個實施例中,批量標籤操作之執行可係非條件性的,但是在一替代實施例中,該設備可經佈置使得在允許進行該批量標籤操作之前必須滿足某些條件。第11圖係圖示示例實施方式之流程圖,其中在允許執行該批量標籤指令之前執行一或更多個檢查。於步驟450,判定是否已接收批量標籤指令。於步驟455,隨後判定是否允許執行規定之指令所需之批量操作。特定言之,如後文以舉例方式參考第12A圖至第12C圖所論述,當可執行至少一些批量標籤指令時可設置各種限制。
該等限制可同等適用於全部類型之批量標籤指令,或可對某些類型批量標籤指令之使用設置更多複雜限制。例如,在一些實施方式中,可適當地對批量標籤修改指令之使用設置相當嚴格之限制,而批量標籤查詢指令之使用可受到較少限制。此係由於以下事實:嚴格控制修改與資料塊相關之標籤位元的能力通常係重要的,因為若不對將通用資料變換為能力(capability)的能力(ability)設置此類控制,則由基於能力之架構提供之安全性可潛在地受限。特定言之,批量標籤修改指令之執行潛在地係相當強有力之工具,因為其可藉由與多個資料塊相關聯地設定標籤位元來使得能夠產生多個能力。
若於步驟455判定不允許指令所需之批量操作,則於步驟465判定發生故障狀況。此可例如涉及藉由採取異常來產生處理器故障。
若判定允許指令所需之批量操作,則視情況於步驟460可執行任何其他需要之檢查。例如,若有界指針用於識別對記憶體位置序列執行之批量標籤操作的開始位址,則該有界指針之範圍及許可屬性將經檢查以確保由該批量標籤指令識別之記憶體位置序列係在可允許之範圍中,並且滿足任何許可屬性。作為可於步驟460執行之額外檢查之另一實例,任何記憶體管理單元(memory management unit; MMU)存取許可可經檢查以確保滿足彼等存取許可。可進行額外檢查以確保關於所判定之記憶體位址範圍不發生記憶體故障。若未經歷任何其他需要之檢查,則該過程再次進行至步驟465,在步驟465中發生故障狀況。然而,否則該過程進行至步驟470,在步驟470中執行規定之批量標籤指令所需之批量操作。
第12A圖至第12C圖圖示可對批量標籤指令之使用設置之一些示例限制,特定言之第12A圖至第12C圖各者圖示可採取以在不同實施例中實施第11圖之步驟455的步驟。首先考慮第12A圖,於步驟500,識別由批量標籤指令所請求之批量操作。隨後,於步驟505判定處理器是否在預定之提升特權狀態中操作。預定之提升特權狀態可取決於實施例而採取各種形式,但考慮到例如虛擬機類型環境,該預定之提升特權狀態可係超管理器等級。若判定該處理器不在預定之提升特權狀態中操作,則該過程進行至步驟515,在步驟515中發生故障。步驟515對應於第11圖之步驟465。然而,若處理器處於預定之提升特權狀態,則於步驟510執行經受任何需要執行之額外檢查(諸如先前參考第11圖之步驟460所論述之檢查)的批量操作。
第12B圖圖示替代途徑,其中步驟520、530及535對應於第12A圖之步驟500、510及515,但其中測試505由測試525替代,並且特定言之判定是否已設定特權配置暫存器以允許執行所識別之批量操作。特權配置暫存器可例如係當在預定之特權狀態中操作時可由處理器設定的暫存器,並且由此其值僅可由在該預定之特權狀態中操作的處理器修改。假設配置暫存器之內容指示允許所識別之批量操作,則該過程進行至步驟530,而否則,於步驟535出現故障。
如先前提及,可對不同類型之批量標籤操作設置不同限制。因此,不同特權配置暫存器,或在特權配置暫存器中之不同欄位,可用於識別不同類型批量操作之許可。因此,例如,一個或更多個特權配置暫存器可識別允許該批量標籤查詢操作,但不允許該批量標籤修改操作。
第12C圖圖示另一替代途徑,其中定義批量操作能力。如先前提及,能力有效識別一組可用於處理器之權利,並且儘管大部分能力可採取先前所述之有界指針之形式,但是並非全部能力需要係有界指針。替代地,可定義僅關於特定功能性識別某些權利的能力。因此,可定義批量操作能力,其可例如維持在能力暫存器60之一中,並且規定為對批量標籤操作之輸入。因此,除規定先前論述之各種其他運算元之外,批量標籤指令可例如識別批量操作能力作為其運算元之一。在此類佈置中,在識別所請求之批量操作的步驟540之後,由批量標籤指令識別之批量操作能力係於步驟545從相關能力暫存器擷取,並隨後經分析以判定其內容。隨後,於步驟550,判定該批量操作能力是否允許執行所識別之批量操作。若允許,則該過程進行至步驟555,而否則,於步驟560產生故障。
批量操作能力可具有許可位元,該許可位元經設定以指示是否允許任何形式之批量標籤操作,或替代地可提供用於批量標籤修改及用於批量標籤查詢操作的不同許可位元。
批量操作能力亦可識別可關於將對記憶體位置序列執行之批量標籤操作做檢查的範圍資訊,其中若該範圍資訊不符合,則於步驟560再次產生故障。然而,在一個實施例中,在批量操作能力中不需要此範圍資訊,並且替代地當採用先前參考第5A圖、第5B圖、第8A圖或第8B圖所論述之指令格式時,能力暫存器可用於識別記憶體位置序列之開始位址,並且該能力暫存器之範圍資訊可關於第11圖之後續步驟460之部分做檢查。
如先前論述,例如參考第3圖,當能力在記憶體與能力暫存器之間移動時,標籤位元隨著能力移動以識別相關資料塊實際上係能力。然而,在一些實施方式中,可能必須將能力從記憶體儲存至備份儲存諸如磁碟中,例如歸因於用以將全部能力資訊保留在記憶體中的空間不足,或當支援休眠時。在一個實施例中,此涉及將各個能力分解為分開之資料與標籤部分,並且在備份儲存中將該標籤作為資料處理。此在第13圖中示意地圖示,其中按照先前參考第3圖描述之途徑,當能力在能力暫存器600與記憶體605之間移動時,則標籤位元615隨著各個資料塊610移動。因此,記憶體605中的各個資料塊可識別為表示能力或通用資料。當資料塊移動至備份儲存625時,則分解過程620用於將該能力分解為資料624及標籤資訊622,該標籤資訊被處理為資料。由此,在備份儲存中,該資訊僅作為資料持續,並且備份儲存係能力不感知性。
當由儲存在備份儲存中之資料重建能力時,需要執行重建過程630,其可經限制以確保不折衷可經由使用能力獲得之安全性。如後文參考第15圖更詳細地論述,先前所述之批量標籤修改指令可用於此能力重建目的使用,並且彼等指令之使用可經由使用先前參考第11圖所論述之方法論限制(例如使用先前參考第12A圖至第12C圖所描述之技術來實施第11圖之步驟455)。假設在請求重建操作630時判定可執行重建操作,則能力可於步驟630重建並寫回至共享記憶體605中(如後文更詳細地論述,在一個實施例中,使用能力暫存器進行重建,隨後將該重建能力輸出至共享記憶體605中)。
第14圖係圖示分解過程之流程圖,其中在第14圖之右手側中的示意圖進一步說明由流程圖所示之各個步驟執行之過程。
於步驟650,執行批量標籤查詢指令以將多個儲存位置之標籤值聚集至通用暫存器中。因此,如第14圖之右手側所示,對於在記憶體位址空間665中之記憶體位置之連續序列,標籤位元可經存取並擷取,並隨後經整理以供儲存在通用暫存器670中。
隨後,於步驟655,將該通用暫存器670之內容寫出至備份儲存675。於此刻,備份儲存威脅僅作為通用資料之資料並且係能力不感知性的。
於步驟660,標準寫入操作隨後用於將在記憶體位置序列(其相關標籤位元於步驟650經受批量標籤查詢操作)中之各個資料塊寫出至備份儲存675。在一個實施例中,該實施方式將涉及將彼等資料塊從記憶體位址空間載入暫存器中,並隨後從暫存器將其等寫出至備份儲存。
第15圖係根據一個實施例的圖示第13圖之重建操作630的流程圖。如第14圖,在第15圖之右手側的示意圖說明於第15圖之各步驟執行之操作。於步驟700,一系列載入操作用於將多個資料塊從備份儲存720載入到能力暫存器725中之對應的多組能力暫存器中,其中與彼等能力暫存器相關之標籤位元經清除至邏輯0值以識別該資料塊當前不表示能力。
隨後於步驟705,載入操作用於將表示多個標籤值(特定言之與載入能力暫存器725中之資料塊各者相關的標籤值)之資料從備份儲存720載入通用暫存器730中。
隨後,於步驟710,例如藉由執行先前參考第8C圖所論述之批量標籤修改指令,來執行批量標籤修改過程,其中所識別之能力暫存器係來自該組能力暫存器725之相關能力暫存器。該指令亦將通用暫存器730識別為含有在批量標籤修改操作期間使用之修改資料。按照第11圖之先前論述,在執行步驟710期間可執行一或更多個檢查以檢查允許進行所識別之批量標籤修改操作。然而,假設經過彼等檢查,則於步驟710執行批量標籤修改操作將導致取決於保持在通用暫存器730中之資料來修改與相關能力暫存器725各者相關之標籤值。此可導致將多個資料塊識別為能力(在一個實施例中,全部資料塊可將其標籤位元設定用以識別其等係能力)。由此,在執行步驟710期間,根據已從備份儲存720擷取之資訊有效地重新生成能力。隨後,於步驟715,能力暫存器內容以及其相關標籤位元可移動至記憶體位址空間735。
儘管在參考第15圖所論述之實施例中,用於更新標籤之修改資料首先儲存至通用暫存器730中,但是在替代實施例中,批量標籤修改操作可經修改使得可將標籤值從記憶體直接載入相關能力暫存器標籤位置中。以相似方式,可提供操作以將能力標籤資訊作為通用資料塊從能力暫存器直接儲存至記憶體中(不使用中間通用暫存器)。
第16圖圖示替代實施例,其中不是讓處理器核心執行批量標籤指令以執行批量標籤查詢或批量標籤修改操作,而是使該處理器核心能夠將該任務卸載至相關DMA電路系統。特定言之,如第16圖所示,處理器管線750經由記憶體管理單元755與快取記憶體760的一或多個階級連接,並隨後經由互連件765與記憶體770連接。MMU 755可結合先前參考第1圖所論述之TLB結構52,並且由此將由處理器管線發佈之虛擬位址變換為轉發到快取記憶體/記憶體系統上的實體位址。根據此實施例,當處理器管線期望執行批量標籤查詢或修改操作時,其可經由點線路徑780將適當請求發佈至DMA電路系統775,從而提供充分資訊以使得DMA電路系統能夠識別所需要之操作類型及其標籤位元將經受批量標籤操作之記憶體位址序列。DMA電路系統隨後經由互連765將事務序列780發佈至記憶體系統770以實施批量標籤查詢或修改操作。各個事務將涉及從DMA電路系統發佈請求至記憶體,以及從記憶體770返回至DMA電路系統775的至少一個回應。對於批量標籤查詢操作,該回應可併入有已查詢到之標籤資訊。對於批量標籤修改操作,由DMA電路發佈之請求將伴隨著更新記憶體中之標籤位元所需要之必須修改資料,並且該回應將採取來自記憶體系統之確認信號形式以確認已執行該修改。
根據此實施例,該批量標籤查詢/修改操作於匯流排協定等級表達,使得匯流排主元件如DMA電路775能夠代表處理器管線750執行此操作。
第17圖圖示可使用之虛擬機實施方式。儘管先前描述之實施例根據用於操作支援相關技術之特定處理硬體的設備及方法來實施本技術,但亦有可能提供硬體元件的所謂虛擬機實施方式。此等虛擬機實施方式在主處理器830上運行,該主處理器通常運行支援虛擬機程式810的主作業系統820。通常,需要大型高效處理器以提供按合理速度執行的虛擬機實施方式,但此途徑在某些環境中可為合理的,諸如當需要運行用於相容性之另一處理器本端代碼時,或出於再使用之原因。虛擬機程式810向訪客程式800提供虛擬硬體介面,該介面與由實際硬體提供的硬體介面相同,該實際硬體係藉由虛擬機程式810模型化的元件。因此,程式指令(包括上述批量標籤/批量能力元資料指令)可藉由使用虛擬機程式810而在訪客程式800中執行,以模型化該等指令與虛擬機硬體的相互作用。訪客程式800可係裸金屬程式,或替代地其可係以與主OS 820如何運行虛擬機應用810相似之方式運行應用的訪客作業系統。亦應瞭解存在不同類型之虛擬機,並且在一些類型中,該虛擬機直接在主硬體830上運行而不需要主OS 820。
從上文所述之實施例,應瞭解此等實施例賦能對能力元資料(諸如,能力架構中之標籤位元)的更佳存取。所述操作可用於各種情況,例如當將記憶體從備份儲存調頁至加標籤的記憶體位置或從彼等加標籤的記憶體位置調頁至備份儲存時,或當跨缺乏固有能力支援之網路移動虛擬機時。所述實施例設置可執行以允許批量查詢或操縱一定範圍之能力位置的數個指令。描述兩個不同群組的指令,一個群組將操作批量施加至能力記憶體位置,而另一個群組將操作批量施加至能力暫存器位置。
在本申請案中,詞語「經配置以…」用以意謂設備元件具有能夠進行所定義之操作的配置。在此語境中,「配置」意謂硬體或軟體之互連佈置或方式。例如,設備可具有提供定義之操作的專用硬體,或處理器或其他處理元件可經程式化以執行該功能。「經配置以」不暗示該設備元件需要以任何方式改變以提供定義之操作。
儘管已在本文中參考隨附圖式詳細描述了說明性實施例,但應理解,本發明不限於彼等精確實施例,且熟習此項技術者可在本發明中實現各種變化、添加及修改,而不偏離由隨附申請專利範圍定義的本發明之範疇及精神。例如,附屬項之特徵可與獨立項之特徵進行各種組合,而不脫離本發明之範疇。
2‧‧‧資料處理設備 4‧‧‧處理管線 6‧‧‧擷取級 8‧‧‧解碼級 10‧‧‧發佈級 12‧‧‧執行級 14‧‧‧寫回級 20‧‧‧1階指令快取記憶體 22‧‧‧分支預測器 24‧‧‧分支目標位置快取記憶體 30‧‧‧執行單元 32‧‧‧執行單元 34‧‧‧執行單元 36‧‧‧1階資料快取記憶體 40‧‧‧暫存器 44‧‧‧2階快取記憶體 50‧‧‧主記憶體 52‧‧‧轉換後備緩衝器 60‧‧‧有界指針暫存器 62‧‧‧指針值 64‧‧‧範圍資訊 66‧‧‧限制資訊 68‧‧‧邊界 69‧‧‧邊界 80‧‧‧程式計數器能力暫存器 82‧‧‧欄位 84‧‧‧範圍資訊 86‧‧‧限制資訊 90‧‧‧元件數字 100‧‧‧能力暫存器 102‧‧‧指針 104‧‧‧範圍資訊 106‧‧‧限制資訊 108‧‧‧標籤位元 110‧‧‧記憶體位址空間 115‧‧‧資料塊 120‧‧‧標籤欄位 150‧‧‧能力 155‧‧‧能力元資料 160‧‧‧指針值 165‧‧‧範圍資訊 170‧‧‧許可屬性 200‧‧‧指令 205‧‧‧作業碼欄位 210‧‧‧欄位 215‧‧‧欄位 220‧‧‧欄位 225‧‧‧指令 230‧‧‧作業碼 235‧‧‧欄位 240‧‧‧欄位 250‧‧‧資料RAM 255‧‧‧快取記憶體線 260‧‧‧資料RAM 265‧‧‧快取記憶體線 270‧‧‧最後部分 300‧‧‧指令CQueryTagsR 305‧‧‧欄位 310‧‧‧欄位 315‧‧‧欄位 320‧‧‧掩碼值 325‧‧‧暫存器檔案識別符 330‧‧‧第一子欄位 335‧‧‧第二子欄位 340‧‧‧其他欄位 350‧‧‧CModTagsM指令 355‧‧‧作業碼 360‧‧‧欄位 365‧‧‧欄位 370‧‧‧欄位 375‧‧‧DC_CModTagsM指令 380‧‧‧作業碼 385‧‧‧欄位 390‧‧‧欄位 400‧‧‧CModTagsR指令 405‧‧‧作業碼 410‧‧‧欄位 415‧‧‧欄位 420‧‧‧暫存器 425‧‧‧位元 430‧‧‧通用暫存器 435‧‧‧位元 450‧‧‧步驟 455‧‧‧步驟 460‧‧‧步驟 465‧‧‧步驟 470‧‧‧步驟 500‧‧‧步驟 505‧‧‧步驟 510‧‧‧步驟 515‧‧‧步驟 520‧‧‧步驟 525‧‧‧測試 530‧‧‧步驟 535‧‧‧步驟 540‧‧‧步驟 545‧‧‧步驟 550‧‧‧步驟 555‧‧‧步驟 560‧‧‧步驟 600‧‧‧能力暫存器 605‧‧‧記憶體 610‧‧‧資料塊 615‧‧‧標籤位元 620‧‧‧分解過程 622‧‧‧標籤資訊 624‧‧‧資料 625‧‧‧備份儲存 630‧‧‧重建過程 650‧‧‧步驟 655‧‧‧步驟 660‧‧‧步驟 665‧‧‧記憶體位址空間 670‧‧‧通用暫存器 675‧‧‧備份儲存 700‧‧‧步驟 705‧‧‧步驟 710‧‧‧步驟 715‧‧‧步驟 720‧‧‧備份儲存 725‧‧‧能力暫存器 730‧‧‧通用暫存器 735‧‧‧記憶體位址空間 750‧‧‧處理器管線 755‧‧‧記憶體管理單元 760‧‧‧快取記憶體 765‧‧‧互連件 770‧‧‧記憶體 775‧‧‧DMA電路系統 780‧‧‧點線路徑 800‧‧‧訪客程式 810‧‧‧虛擬機程式 820‧‧‧主作業系統 830‧‧‧主處理器
本技術將僅以舉例方式參考如在附圖中圖示之本揭露的實施例進一步描述,其中:
第1圖係根據一個實施例之設備之方塊圖;
第2圖圖示指令類型之實例,針對該類型指令,若嘗試在該組有界指針儲存元件中設定或存取指針值,則可觸發錯誤,其中該指針值用於規定在由相關範圍資訊指示之範圍外的位址;
第3圖圖示根據一個實施例的與有界指針相關聯之標籤位元之使用;
第4圖示意地圖示根據一個實施例的在採取有界指針形式之能力中提供的各種欄位以及相關能力元資料資訊;
第5A圖及第5B圖圖示在兩個不同指令中提供之欄位,該等欄位可根據一個實施例提供以對記憶體中之儲存元件執行批量標籤查詢操作;
第6A圖及第6B圖圖示根據兩個不同實施例可如何將標籤位元(能力元資料之實例)與各個資料塊相關聯地儲存在快取記憶體之快取記憶體線中;
第7圖示意地圖示根據一個實施例的在用以對在該設備中採取能力暫存器形式之儲存元件執行批量標籤查詢操作的指令中提供之欄位;
第8A圖及第8B圖圖示在兩種不同形式之指令中提供之欄位,該等欄位可根據一個實施例用以對在記憶體中採取記憶體位置形式之儲存元件執行批量標籤修改操作,而第8C圖圖示提供在指令中之欄位,該等欄位可根據一個實施例用以對呈能力暫存器形式之儲存元件執行批量標籤修改操作;
第9A圖及第9B圖圖示根據一個實施例的不同方式,其中通用暫存器可經填充以保持藉由執行批量標籤查詢操作獲得的經查詢標籤值或在批量標籤修改操作期間應用之標籤值之指示;
第10圖示意地圖示根據一個實施例的在執行批量標籤修改操作期間可如何解釋在諸如第9A圖所圖示之通用暫存器內之資訊的四個實例;
第11圖係根據一個實施例圖示的在一個實施例中可由處理電路系統執行以判定是否允許進行由批量標籤指令規定之批量標籤操作之過程的流程圖;
第12A圖至第12C圖係根據一個實施例的圖示可執行以實施第11圖之步驟455的步驟之流程圖;
第13圖示意地圖示根據一個實施例的關於在能力感知性儲存元件與能力不感知性備份儲存之間傳遞之能力的分解過程及重建過程;
第14圖係根據一個實施例的示意地圖示第13圖之分解過程的流程圖;
第15圖係根據一個實施例的示意地圖示第13圖之能力重建過程的流程圖;
第16圖係根據替代實施例之設備,其中處理器管線將批量標籤查詢或修改操作卸載至DMA電路系統,導致DMA電路系統經由一系列事務實施該批量標籤查詢或修改操作;以及
第17圖示意地圖示根據一個實施例的設備之虛擬機實施方式。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
(請換頁單獨記載) 無
150‧‧‧能力
155‧‧‧能力元資料
160‧‧‧指針值
165‧‧‧範圍資訊
170‧‧‧許可屬性

Claims (29)

  1. 一種設備,包含: 儲存元件,用以儲存資料塊,各個資料塊具有與其相關之能力元資料以識別該資料塊是否規定一能力,至少一種能力類型係一有界指針;以及處理電路系統,回應於識別複數個該等儲存元件的一批量能力元資料操作,以對與儲存在該複數個儲存元件中之各個資料塊相關之該能力元資料執行一操作。
  2. 如請求項1所述之設備,其中該批量能力元資料操作係一批量查詢操作,且該處理電路系統回應於該批量查詢操作以獲得與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料,並且用以產生含有該所獲得之能力元資料之輸出資料。
  3. 如請求項1所述之設備,其中該批量能力元資料操作係一批量修改操作,且該處理電路系統回應於該批量修改操作以取決於針對該批量修改操作規定之修改資料來修改與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料。
  4. 如請求項3所述之設備,其中該批量修改操作使得設定與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料以識別各個資料塊規定一能力。
  5. 如請求項3所述之設備,其中該批量修改操作使得清除與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料以識別各個資料塊規定除一能力外之資料。
  6. 如請求項3所述之設備,其中對於將由該批量修改操作存取之各個能力元資料,該修改資料識別關於該能力元資料執行之該修改。
  7. 如請求項6所述之設備,其中該修改資料提供用於由該批量修改操作存取之各個能力元資料的一修改值,該值識別至少兩個下列修改之一: (i)設定該能力元資料以識別該相關資料塊規定一能力;(ii)清除該能力元資料以識別該相關資料塊規定除一能力外之資料;以及(iii)保持該能力元資料不變。
  8. 如請求項1所述之設備,其中該處理電路系統經佈置以執行滿足一條件之該批量能力元資料操作。
  9. 如請求項8所述之設備,其中若下列條件之至少一個為真,則判定滿足該條件: (i)該處理電路系統係在一預定之特權狀態下操作;(ii)當該處理電路系統在一預定之特權狀態下操作時可設定之一配置儲存元件具有指示允許該批量能力元資料操作的一值;(iii)規定該批量能力元資料操作之一請求識別一批量操作能力,且該批量操作能力指示允許該批量能力元資料操作。
  10. 如請求項1所述之設備,其中該等儲存元件係記憶體位置。
  11. 如請求項10所述之設備,其中該複數個記憶體位置係參考一有界指針規定,且該處理電路系統經佈置以當判定該複數個記憶體位置常駐於由該有界指針識別之一容許位址範圍中時執行該批量能力元資料操作。
  12. 如請求項1所述之設備,其中該等儲存元件係可由該處理電路系統存取之能力暫存器。
  13. 如請求項1所述之設備,進一步包含: 解碼電路系統,回應於一指令序列以產生控制信號,用於發佈至該處理電路系統以使該處理電路系統執行該指令序列所需之操作;該解碼電路系統回應於接收到一批量能力元資料指令產生控制信號,該等控制信號用於發佈至該處理電路系統以使該處理電路系統執行該批量能力元資料指令所需之該批量能力元資料操作。
  14. 如請求項13所述之設備,其中該等儲存元件係記憶體位置且該批量能力元資料指令規定一暫存器,該暫存器提供識別其相關能力元資料將經受該批量能力元資料操作之一連續系列的記憶體位置的一位址。
  15. 如請求項14所述之設備,其中該批量能力元資料指令包括識別在該等連續系列中之記憶體位置的一數量的一欄位。
  16. 如請求項15所述之設備,其中該欄位提供對含有指示在該等連續系列中記憶體位置之該數量之一值的一暫存器的一參考與指示在該等連續系列中記憶體位置之該數量的一立即值之一。
  17. 如請求項14所述之設備,其中在該等連續系列中記憶體位置之一數量由該設備之一性質暗示。
  18. 如請求項17所述之設備,其中該性質係可由該處理電路系統存取之一快取記憶體之一快取記憶體線長度。
  19. 如請求項13所述之設備,其中該等儲存元件係能力暫存器,且該批量能力元資料指令包括識別其相關能力元資料將經受該批量能力元資料操作之該等能力暫存器的一暫存器識別符欄位,該暫存器識別符欄位提供一立即值與一暫存器識別符之至少一個以識別該等能力暫存器。
  20. 如請求項19所述之設備,其中該暫存器識別符欄位提供下列之一: -一掩碼值,用以識別該等能力暫存器;-一基底識別符及一計數值,組合使用以識別該等能力暫存器。
  21. 如請求項1所述之設備,進一步包含: 解碼電路系統,回應於一指令序列以產生控制信號,該等控制信號用於發佈至該處理電路系統以使該處理電路系統執行該指令序列所需之操作;該解碼電路系統,回應於接收到一批量能力元資料指令以產生控制信號,該等控制信號用於發佈至該處理電路系統以導致該處理電路系統執行該批量能力元資料指令所需之該批量能力元資料操作,其中:該批量能力元資料指令係一批量查詢指令,且該處理電路系統經佈置以回應於當解碼該批量查詢指令時由該解碼電路系統產生之該等控制信號執行一批量查詢操作;該批量查詢指令識別一目的暫存器,且該處理電路系統回應於該批量查詢操作以獲得與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料,並且用以產生含有用於儲存在該目的暫存器中之該所獲得之能力元資料的輸出資料。
  22. 如請求項1所述之設備,進一步包含: 解碼電路系統,回應於一指令序列以產生控制信號,該等控制信號用於發佈至該處理電路系統以使該處理電路系統以執行該指令序列所需之操作;該解碼電路系統,回應於接收一批量能力元資料指令以產生控制信號,該等控制信號用於發佈至該處理電路系統以使該處理電路系統執行該批量能力元資料指令所需之該批量能力元資料操作,其中:該批量能力元資料指令係一批量修改指令,且該處理電路系統經佈置以回應於當解碼該批量修改指令時由該解碼電路系統產生之該等控制信號執行一批量修改操作;該批量修改指令識別了用於識別修改資料之一源欄位,且該處理電路系統回應於該批量修改操作以取決於由該源欄位識別之該修改資料來修改與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料。
  23. 如請求項22所述之設備,其中該源欄位提供一立即值與一暫存器識別符之至少一個以識別該修改資料。
  24. 如請求項1所述之設備,其中該處理電路系統經佈置以作為該批量能力元資料操作執行一批量查詢操作,以獲得與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料,該處理電路系統經進一步佈置以輸出含有用於儲存在一能力不感知性儲存元件中的該所獲得之能力元資料的資料。
  25. 如請求項1所述之設備,其中該處理電路系統經佈置以作為該批量能力元資料操作執行一批量修改操作,以取決於由一能力不感知性儲存元件獲得之修改資料來修改與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料。
  26. 如請求項1所述之設備,其中: 該處理電路系統係一直接記憶體存取(DMA)電路;以及該批量能力元資料操作由一處理器核心規定,並且導致DMA電路發佈一或更多個事務以對一連續系列的記憶體位置實施該批量能力元資料操作。
  27. 一種對能力元資料執行操作之方法,包含以下步驟: 將資料塊儲存在儲存元件中,各個資料塊具有識別該資料塊是否規定一能力的與其相關之能力元資料,至少一個能力類型係一有界指針;以及回應於識別複數個該等儲存元件的批量能力元資料操作,使處理電路系統對與儲存在該複數個儲存元件中之各個資料塊相關的該能力元資料執行一操作。
  28. 一種設備,包含: 儲存元件構件,用於儲存資料塊,各個資料塊具有識別該資料塊是否規定一能力的與其相關之能力元資料,至少一個能力類型係一有界指針;以及處理構件,用於回應於識別複數個該儲存元件構件之一批量能力元資料操作對與儲存在該複數個儲存元件構件中之各個資料塊相關之該能力元資料執行一操作。
  29. 一種電腦程式產品,以一非暫時形式儲存一電腦程式,用於控制一電腦以提供用於對應於如請求項1所述之設備的程式指令之一虛擬機執行環境。
TW106112342A 2016-04-20 2017-04-13 用於對能力元資料執行操作的設備及方法 TWI752951B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1606872.8 2016-04-20
GB1606872.8A GB2549511B (en) 2016-04-20 2016-04-20 An apparatus and method for performing operations on capability metadata

Publications (2)

Publication Number Publication Date
TW201738757A true TW201738757A (zh) 2017-11-01
TWI752951B TWI752951B (zh) 2022-01-21

Family

ID=58489720

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106112342A TWI752951B (zh) 2016-04-20 2017-04-13 用於對能力元資料執行操作的設備及方法

Country Status (9)

Country Link
US (1) US11481384B2 (zh)
EP (1) EP3446222B8 (zh)
JP (1) JP6975723B2 (zh)
KR (1) KR102446063B1 (zh)
CN (1) CN109074322B (zh)
GB (1) GB2549511B (zh)
IL (1) IL261614B (zh)
TW (1) TWI752951B (zh)
WO (1) WO2017182770A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI763089B (zh) * 2020-10-16 2022-05-01 瑞昱半導體股份有限公司 直接記憶體存取控制器、使用直接記憶體存取控制器之電子裝置以及操作直接記憶體存取控制器的方法

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108171041B (zh) * 2016-12-07 2020-03-27 澜起科技股份有限公司 用于对访问存储器的应用程序进行身份验证的方法和装置
US10831385B2 (en) * 2017-04-17 2020-11-10 StorageOS Limited System and method for managing volumes of data in a block storage system
GB2570692B (en) 2018-02-02 2020-09-09 Advanced Risc Mach Ltd Controlling guard tag checking in memory accesses
GB2571352B (en) * 2018-02-27 2020-10-21 Advanced Risc Mach Ltd An apparatus and method for accessing metadata when debugging a device
GB2572151B (en) * 2018-03-19 2020-07-08 Advanced Risc Mach Ltd An apparatus and method for storing bounded pointers
GB2572158B (en) * 2018-03-20 2020-11-25 Advanced Risc Mach Ltd Random tag setting instruction
GB2576506B (en) * 2018-08-20 2021-06-30 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
US11068268B2 (en) * 2019-08-05 2021-07-20 Arm Limited Data structure processing
CN110717315B (zh) * 2019-09-10 2023-08-04 中国平安财产保险股份有限公司 系统数据批量修改方法、装置、存储介质及电子设备
EP3819774B1 (en) * 2019-11-06 2022-05-25 Microsoft Technology Licensing, LLC Confidential computing mechanism
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction
US11928472B2 (en) 2020-09-26 2024-03-12 Intel Corporation Branch prefetch mechanisms for mitigating frontend branch resteers
US20220261509A1 (en) * 2021-02-13 2022-08-18 Intel Corporation Region-based deterministic memory safety
US20230195614A1 (en) * 2021-12-21 2023-06-22 Intel Corporation Circuitry and methods for implementing non-redundant metadata storage addressed by bounded capabilities
CN114064576A (zh) * 2022-01-13 2022-02-18 北京九章云极科技有限公司 数据集获得方法、装置及电子设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5522051A (en) * 1992-07-29 1996-05-28 Intel Corporation Method and apparatus for stack manipulation in a pipelined processor
US6826672B1 (en) * 2000-05-16 2004-11-30 Massachusetts Institute Of Technology Capability addressing with tight object bounds
US9525696B2 (en) * 2000-09-25 2016-12-20 Blue Coat Systems, Inc. Systems and methods for processing data flows
US20030177342A1 (en) * 2002-03-15 2003-09-18 Hitachi Semiconductor (America) Inc. Processor with register dirty bits and special save multiple/return instructions
US7149862B2 (en) * 2002-11-18 2006-12-12 Arm Limited Access control in a data processing apparatus
US7257657B2 (en) 2003-11-06 2007-08-14 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses for specific types of instructions
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
US8656121B2 (en) * 2011-05-17 2014-02-18 International Business Machines Corporation Facilitating data coherency using in-memory tag bits and tag test instructions
US20120317339A1 (en) * 2011-06-13 2012-12-13 International Business Machines Corporation System and method for caching data in memory and on disk
US8850130B1 (en) * 2011-08-10 2014-09-30 Nutanix, Inc. Metadata for managing I/O and storage for a virtualization
US8694738B2 (en) * 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US20150227414A1 (en) * 2012-08-31 2015-08-13 Pradeep Varma Systems And Methods Of Memory And Access Management
US9274710B1 (en) * 2014-03-31 2016-03-01 Amazon Technologies, Inc. Offset-based congestion control in storage systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI763089B (zh) * 2020-10-16 2022-05-01 瑞昱半導體股份有限公司 直接記憶體存取控制器、使用直接記憶體存取控制器之電子裝置以及操作直接記憶體存取控制器的方法

Also Published As

Publication number Publication date
CN109074322B (zh) 2023-03-03
JP6975723B2 (ja) 2021-12-01
EP3446222B1 (en) 2020-01-01
US11481384B2 (en) 2022-10-25
KR20180136976A (ko) 2018-12-26
EP3446222B8 (en) 2020-03-04
CN109074322A (zh) 2018-12-21
IL261614A (en) 2018-10-31
US20190095389A1 (en) 2019-03-28
WO2017182770A1 (en) 2017-10-26
GB2549511B (en) 2019-02-13
JP2019516181A (ja) 2019-06-13
IL261614B (en) 2020-08-31
EP3446222A1 (en) 2019-02-27
KR102446063B1 (ko) 2022-09-22
TWI752951B (zh) 2022-01-21
GB2549511A (en) 2017-10-25

Similar Documents

Publication Publication Date Title
TWI752951B (zh) 用於對能力元資料執行操作的設備及方法
CN108701174B (zh) 用于生成有签名的有界指针的设备及方法
CN110574009B (zh) 用于管理对能力的使用的设备和方法
US20190034664A1 (en) Apparatus and method for controlling use of bounded pointers
JP7445431B2 (ja) 命令の実行を制御する装置および方法
US11023237B2 (en) Apparatus and method for interpreting permissions associated with a capability
CN110622133B (zh) 用于管理能力域的设备及方法
CN110709817A (zh) 用于控制指令集中改变的设备与方法
JP2024515081A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法