TWI752951B - An apparatus and method for performing operations on capability metadata - Google Patents

An apparatus and method for performing operations on capability metadata Download PDF

Info

Publication number
TWI752951B
TWI752951B TW106112342A TW106112342A TWI752951B TW I752951 B TWI752951 B TW I752951B TW 106112342 A TW106112342 A TW 106112342A TW 106112342 A TW106112342 A TW 106112342A TW I752951 B TWI752951 B TW I752951B
Authority
TW
Taiwan
Prior art keywords
capability
bulk
batch
capability metadata
metadata
Prior art date
Application number
TW106112342A
Other languages
Chinese (zh)
Other versions
TW201738757A (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 TW201738757A publication Critical patent/TW201738757A/en
Application granted granted Critical
Publication of TWI752951B publication Critical patent/TWI752951B/en

Links

Images

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)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • 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

An apparatus is provided comprising storage elements to store data blocks, where each data block has capability metadata associated therewith identifying whether the data block specifies a capability, at least one capability type being a bounded pointer. Processing circuitry is then arranged to be responsive to a bulk capability metadata operation identifying a plurality of the storage elements, to perform an operation on the capability metadata associated with each data block stored in the plurality of storage elements. Via a single specified operation, this hence enables query and/or modification operations to be performed on multiple items of capability metadata, hence providing more efficient access to such capability metadata.

Description

用於對能力元資料執行操作的設備及方法Apparatus and method for performing operations on capability metadata

本技術係關於用於對能力元資料執行操作的設備及方法。The present technology relates to apparatus and methods for performing operations on capability metadata.

基於能力之架構越來越受到關注,其中某些能力針對給定過程定義,且若嘗試進行定義能力之外的操作,則可能觸發錯誤。該等能力可採取各種形式,但一種類型之能力係有界指針(亦可被稱為「胖指針」)。針對有界指針,該指針值可識別或用於判定例如待存取之資料值或待執行之指令的位址。然而,指針值亦可具有相關範圍資訊,該範圍資訊指示當使用該指針值時位址之容許範圍。此可例如用來確保由該指針判定之位址保留在特定邊界中以維持行為之安全性或功能正確性。此外,某些許可/限制資訊可與有界指針之指針值相關聯地規定。關於有界指針之範圍資訊及任何許可/限制資訊可被稱為能力資訊,並且在基於能力之架構中,此種有界指針(包括其相關能力資訊)可被稱為能力。There is a growing interest in capability-based architectures, where some capabilities are defined for a given process and attempts to perform operations outside of the defined capabilities may trigger errors. These capabilities can take various forms, but one type of capability is a bounded pointer (also known as a "fat pointer"). For bounded pointers, the pointer value may identify or be used to determine, for example, the data value to be accessed or the address of the instruction to be executed. However, a pointer value may also have associated range information indicating the allowable range of addresses when using the pointer value. This can be used, for example, to ensure that addresses determined by the pointer remain within certain boundaries to maintain behavioral safety or functional correctness. Additionally, certain permission/restriction information may be specified in association with the pointer value of the bounded pointer. Scope information and any permission/restriction information about bounded pointers may be referred to as capability information, and in a capability-based architecture, such bounded pointers (including their associated capability information) may be referred to as capabilities.

在基於能力之架構中,已知儲存與儲存在設備之儲存元件中之各個資料塊相關聯的能力元資料。能力元資料可用於識別相關資料塊是否規定能力,或替代地含有不表示能力之資料(本文亦稱為通用資料)。若需要,能力元資料亦可規定某些額外資訊。In a capability-based architecture, it is known to store capability metadata associated with each data block stored in a storage element of a device. Capability metadata may be used to identify whether the relevant data block specifies a capability, or alternatively contains data that does not represent a capability (also referred to herein as generic data). Capability metadata may also specify some additional information, if desired.

當存取單獨資料塊時,可參考相關能力元資料以判定該資料塊是表示能力還是通用資料。然而,期望提供用於在採用基於能力之架構的系統中存取並操縱能力元資料的經改良之機制。When accessing an individual data block, the relevant capability metadata can be referenced to determine whether the data block represents capability or generic data. However, it is desirable to provide improved mechanisms for accessing and manipulating capability metadata in systems employing capability-based architectures.

在第一示例配置中,提供一種設備,包含:儲存元件,用以儲存資料塊,各個資料塊具有與其相關之能力元資料來識別該資料塊是否規定能力的,至少一種能力類型係有界指針;以及處理電路系統,回應於識別複數個該等儲存元件之批量能力元資料操作,對與儲存在該複數個儲存元件中之各個資料塊相關的能力元資料執行操作。In a first example configuration, an apparatus is provided comprising: a storage element for storing data blocks, each data block having capability metadata associated therewith to identify whether the data block specifies a capability, and at least one capability type is a bounded pointer and processing circuitry, responsive to a batch capability metadata operation identifying a plurality of the storage elements, performing an operation on capability metadata associated with each block of data stored in the plurality of storage elements.

在另一示例配置中,提供一種對能力元資料執行操作之方法,包含:將資料塊儲存在儲存元件中,各個資料塊具有與其相關之能力元資料來識別該資料塊是否規定能力,至少一種能力類型係有界指針;以及回應於識別複數個該等儲存元件的批量能力元資料操作,使處理電路系統對與儲存在該複數個儲存元件中之各個資料塊相關的能力元資料執行操作。In another example configuration, a method of performing an operation on capability metadata is provided, comprising: storing data blocks in a storage element, each data block having capability metadata associated therewith to identify whether the data block specifies a capability, at least one The capability type is a bounded pointer; and in response to a batch capability metadata operation identifying a plurality of the storage elements, causing the processing circuitry to perform an operation on the capability metadata associated with each block of data stored in the plurality of storage elements.

在又一示例配置中,提供一種設備,包含:儲存元件構件,用於儲存資料塊,各個資料塊具有與其相關之能力元資料來識別該資料塊是否規定能力,至少一種能力類型係有界指針;以及處理構件,用於回應於識別複數個該等儲存元件構件之批量能力元資料操作,對與儲存在該複數個儲存元件構件中之各個資料塊相關的能力元資料執行操作。In yet another example configuration, an apparatus is provided comprising: a storage element component for storing data blocks, each data block having capability metadata associated therewith to identify whether the data block specifies a capability, at least one capability type being a bounded pointer ; and a processing component for performing an operation on the capability metadata associated with each data block stored in the plurality of storage component components in response to a batch capability metadata operation identifying the plurality of the storage component components.

在又一另外的示例配置中,提供一種以非暫時形式儲存電腦程式的電腦程式產品,其用於控制電腦以提供用於對應於根據上文所論述之第一示例配置之設備的程式指令之虛擬機執行環境。In yet a further example configuration, there is provided a computer program product storing a computer program in a non-transitory form for controlling a computer to provide a sequence of program instructions for a device corresponding to a device according to the first example configuration discussed above Virtual machine execution environment.

在參考附圖論述實施例之前,提供實施例之以下描述。Before discussing the embodiments with reference to the figures, the following description of the embodiments is provided.

如先前提及,基於能力之架構越來越受關注,其中某些能力針對給定過程定義,且若嘗試進行定義能力之外的操作,則可能觸發錯誤。可定義各種類型能力,但一種類型之能力係有界指針(其在一個實施例中結合指針值與相關範圍及許可資訊)。採用此基於能力之架構的設備通常將具有用於儲存能力之儲存元件(本文亦稱為有界指針儲存元件)。儲存元件可係暫存器(本文亦稱為有界指針暫存器或能力暫存器)及/或可係在通用記憶體中之記憶體位置,例如在堆疊記憶體上之位置。某些指令可用於參考此等儲存元件以存取所需能力,並取決於該能力執行操作。例如,考慮到有界指針,執行此類指令可導致該有界指針被擷取,並且針對其中之指針值,隨後被用以在執行該指令期間所需之記憶體中導出位址。指針值可直接用於識別記憶體位址,或可用於導出該記憶體位址,例如,藉由增加指針值之偏移。若記憶體位址係在由範圍資訊規定之範圍中且滿足在許可資訊中規定之任何許可,則將允許進行該操作。As mentioned earlier, there is a growing interest in capability-based architectures, where certain capabilities are defined for a given process and attempts to do something outside of the defined capabilities may trigger errors. Various types of capabilities can be defined, but one type of capability is a bounded pointer (which in one embodiment combines the pointer value with associated scope and permission information). Devices employing this capability-based architecture will typically have storage elements (also referred to herein as bounded pointer storage elements) for storing capabilities. The storage elements may be registers (also referred to herein as bounded pointer registers or capability registers) and/or may be at memory locations in general-purpose memory, such as locations on stacked memory. Certain instructions may be used to reference these storage elements to access a desired capability and perform operations dependent on that capability. Considering, for example, bounded pointers, execution of such an instruction may result in the bounded pointer being fetched, and the pointer value therein, then used to derive an address in memory required during execution of the instruction. The pointer value can be used directly to identify the memory address, or it can be used to derive the memory address, for example, by incrementing the offset of the pointer value. The operation will be allowed if the memory address is in the range specified by the range information and satisfies any permissions specified in the permission information.

能力元資料可與儲存在儲存元件中之各個資料塊相關聯地提供以識別該資料塊是否表示能力,或替代地表示通用資料。根據本文所述之實施例,該設備經佈置以執行批量能力元資料操作以允許批量查詢及/或修改與複數個儲存元件相關之能力元資料。Capability metadata may be provided in association with each data block stored in the storage element to identify whether the data block represents a capability, or alternatively generic data. According to embodiments described herein, the apparatus is arranged to perform bulk capability metadata operations to allow bulk query and/or modification of capability metadata associated with a plurality of storage elements.

更特定言之,在一個實施例中,提供一種設備,其包含儲存元件以儲存資料塊,各個資料塊具有與其相關之能力元資料來識別該資料塊是否規定能力,至少一個能力類型係有界指針。處理電路系統隨後回應於識別複數個該等儲存元件之批量能力元資料操作以對與儲存在複數個儲存元件中之各個資料塊相關的能力元資料執行操作。More specifically, in one embodiment, an apparatus is provided that includes a storage element to store data blocks, each data block has capability metadata associated therewith to identify whether the data block specifies a capability, at least one capability type is bounded pointer. The processing circuitry then performs operations on the capability metadata associated with each block of data stored in the plurality of storage elements in response to identifying the batch capability metadata operations for the plurality of storage elements.

根據所述之實施例,不是回應於靶向特定項之能力元資料及/或相關資料塊的操作存取個別項之能力元資料,而是可規定識別複數個儲存元件之批量能力元資料操作。處理電路系統可隨後回應於此批量能力元資料操作以對與儲存在複數個儲存元件中之各個資料塊相關的能力元資料執行操作。批量能力元資料操作直接靶向多項能力元資料,且不需要在操作期間存取相關資料塊。因此,此提供了特別有效之機制來回應於識別其相關能力元資料將被存取之複數個儲存元件的單個批量請求對多項能力元資料執行操作。According to the described embodiments, rather than accessing capability metadata for individual items in response to operations targeting capability metadata and/or associated data blocks for a particular item, batch capability metadata operations that identify a plurality of storage elements may be specified . Processing circuitry may then perform operations on the capability metadata associated with each block of data stored in the plurality of storage elements in response to this batch capability metadata operation. Bulk capability metadata operations directly target multiple capability metadata and do not require access to related data blocks during the operation. Thus, this provides a particularly efficient mechanism to perform operations on multiple capability metadata in response to a single batch request identifying multiple storage elements whose associated capability metadata is to be accessed.

此等操作可用於各種情況中。例如,當在能力感知性儲存元件與能力不感知性備份儲存之間進行記憶體調頁時或當跨越缺乏固有能力支援之網路遷移虛擬機時,該等操作可係有用的。批量能力元資料操作之提供可顯著增加此等操作之效率及效能。Such operations can be used in a variety of situations. Such operations may be useful, for example, when memory paging between capability-aware storage elements and capability-agnostic backup storage or when migrating virtual machines across networks that lack native capability support. The provision of batch capability metadata operations can significantly increase the efficiency and performance of these operations.

批量能力元資料操作可採取各種形式,但在一個實施例中係批量查詢操作,且處理電路系統回應於該批量查詢操作以獲得與儲存在複數個該等儲存元件中之各個資料塊相關的能力元資料,並用以產生含有獲得之能力元資料的輸出資料。因此,當執行此類批量查詢操作時,有關所識別之複數個儲存元件之各種項的能力元資料經擷取並聚集在一起以形成輸出資料。輸出資料可隨後用於各種目的,例如可將該輸出資料寫入通用暫存器,可隨後從該通用暫存器將該輸出資料寫出至能力不感知性實體諸如備份儲存,或實際上在一些實施例中,可能能夠將該輸出資料直接寫入此類備份儲存中。The batch capability metadata operation can take various forms, but in one embodiment is a batch query operation and the processing circuitry responds to the batch query operation to obtain the capabilities associated with each data block stored in a plurality of the storage elements metadata, and used to generate output data containing the acquired capability metadata. Thus, when such bulk query operations are performed, capability metadata about the various items of the identified plurality of storage elements is retrieved and aggregated together to form output data. The output data can then be used for various purposes, such as the output data can be written to a general purpose register, the output data can be subsequently written out from the general register to a capability-agnostic entity such as backup storage, or actually in In some embodiments, it may be possible to write the output data directly into such backup storage.

然而,批量能力元資料操作不需要為批量查詢操作。在一個替代實施例中,批量能力元資料操作係批量修改操作,且處理電路系統回應於該批量修改操作以取決於針對該批量修改操作規定之修改資料來修改與儲存在該複數個該等儲存元件中之各個資料塊相關的能力元資料。因此,在此等實施例中,可規定隨後用於選擇性更新與識別之複數個儲存元件各者相關之能力元資料的修改資料,由此提供回應於單個識別之操作更新多項能力元資料的非常有效之機制。However, batch capability metadata operations need not be batch query operations. In an alternate embodiment, the batch capability metadata operation is a batch modification operation, and the processing circuitry is responsive to the batch modification operation to modify and store in the plurality of the stores depending on modification data specified for the batch modification operation Capability metadata associated with each data block in the component. Thus, in these embodiments, modification data for subsequent selectively updating capability metadata associated with each of the identified plurality of storage elements may be specified, thereby providing a means of updating multiple capability metadata in response to the operation of a single identification. Very effective mechanism.

批量修改操作可採取各種形式。在一個實施例中,其可導致與儲存在複數個儲存元件中之各個資料塊相關之能力元資料經設定以識別各個資料塊規定能力,或替代地可導致與各個資料塊相關之能力元資料經清除以識別各個資料塊規定除能力外之資料(本文亦稱為通用資料)。Bulk edit operations can take various forms. In one embodiment, this may result in capability metadata associated with each data block stored in the plurality of storage elements being set to identify each data block specifying capabilities, or alternatively may result in capability metadata associated with each data block Cleared to identify individual data blocks specifying data other than capabilities (also referred to herein as generic data).

在一個替代實施例中,針對將由批量修改過程存取之各個能力元資料,修改資料可識別對該能力元資料執行之修改。由此,在此類實施例中,並非必須對各項能力元資料執行相同修改,而是替代地可在較精細的細微性上規定該等修改。In an alternate embodiment, for each capability metadata to be accessed by the bulk modification process, the modification data may identify the modification performed on the capability metadata. Thus, in such embodiments, the same modifications do not necessarily have to be performed on each capability metadata, but the modifications may instead be specified at a finer granularity.

在一個實施例中,修改資料提供對將由批量修改操作存取之各個能力元資料的修改值,該修改值識別至少兩個下列修改之一:(i)設定能力元資料以識別相關資料塊規定能力;(ii)清除能力元資料以識別相關資料塊規定除能力外之資料;以及(iii)保持能力元資料不變。此類途徑提供關於在批量修改過程期間如何更新個別項之能力元資料的大量靈活性。In one embodiment, the modification data provides a modification value for each capability metadata to be accessed by the bulk modification operation, the modification value identifying one of at least two of the following modifications: (i) setting the capability metadata to identify the associated data block specification capabilities; (ii) clear capability metadata to identify data other than capabilities specified by the relevant data block; and (iii) leave capability metadata unchanged. Such approaches provide a great deal of flexibility as to how the capability metadata of individual items is updated during the bulk modification process.

儘管在一些實施例中,批量能力元資料操作可無條件地執行,但是在一個替代實施例中,處理電路系統可經佈置以執行需滿足條件之批量能力元資料操作。藉由使批量能力元資料操作之執行變成條件性的,此可增強過程安全性。例如,特定言之考慮到批量修改操作,應瞭解修改用於多個儲存元件之能力元資料之能力係強有力工具,並且可期望限制該能力以對某些特定情況執行此批量修改。Although in some embodiments, batch capability metadata operations may be performed unconditionally, in an alternative embodiment, processing circuitry may be arranged to perform batch capability metadata operations subject to conditions. This can enhance process security by making the execution of batch capability metadata operations conditional. For example, given the bulk modification operation in particular, it should be understood that the ability to modify capability metadata for multiple storage elements is a powerful tool, and it may be desirable to limit the ability to perform such bulk modification for certain specific situations.

例如,在一個實施例中,若下列條件之至少一個為真,則可判定滿足該條件:(i)處理電路系統在預定之特權狀態中操作;(ii)當處理電路系統在預定特權狀態中操作時可設定之配置儲存元件具有指示允許該批量能力元資料操作的值;(iii)規定該批量能力元資料操作之請求識別批量操作能力,且該批量操作能力指示允許批量能力元資料操作。藉由此途徑,能夠有效限制以下情況:其中若需要,可執行該批量能力元資料操作。For example, in one embodiment, a condition may be determined to be satisfied if at least one of the following conditions is true: (i) the processing circuitry is operating in a predetermined privileged state; (ii) when the processing circuitry is in a predetermined privileged state The configuration storage element that can be set during operation has a value indicating that the batch capability metadata operation is allowed; (iii) the request specifying the batch capability metadata operation identifies the batch operation capability, and the batch operation capability indicates that the batch capability metadata operation is allowed. In this way, it is possible to effectively limit the situations in which the batch capability metadata operation can be performed if necessary.

其能力元資料係由批量能力元資料操作來操縱的儲存元件可採取各種形式。例如,在一個實施例中儲存元件可係處理電路系統可存取之記憶體位置。A storage element whose capability metadata is manipulated by bulk capability metadata operations can take various forms. For example, in one embodiment a storage element may be a memory location accessible to processing circuitry.

在一個實施例中,複數個記憶體位置可參考有界指針規定,且當判定複數個記憶體位置常駐於由該有界指針識別之容許位址範圍中時,處理電路系統經佈置以執行批量能力元資料操作。因此,與是否例如使用先前論述之技術之任一者使批量能力元資料操作之執行變成條件性的無關,若有界指針亦用於規定記憶體位置,則可藉由確保其相關能力元資料將由批量能力元資料操作操縱之複數個記憶體位置常駐於由該有界指針識別之容許位址範圍中來執行額外等級之檢查。In one embodiment, the plurality of memory locations may be specified with reference to a bounded pointer, and when it is determined that the plurality of memory locations reside within the allowable address range identified by the bounded pointer, the processing circuitry is arranged to execute the batch Capability metadata manipulation. Thus, regardless of whether the execution of batch capability metadata operations is made conditional, such as using any of the previously discussed techniques, if bounded pointers are also used to specify memory locations, the capability metadata can be guaranteed by ensuring its associated capability metadata An additional level of checking is performed by resident memory locations manipulated by bulk capability metadata operations within the allowable address range identified by the bounded pointer.

儘管一些批量能力元資料操作可相對於記憶體位置實施,但是在一個替代實施例中或此外,某些批量能力元資料操作可對與處理電路系統可存取之能力暫存器相關的能力元資料施加。此類能力暫存器可經佈置以儲存能力,例如先前提及之有界指針,且各個能力暫存器將具有與其相關之能力元資料來識別該能力暫存器之當前內容是否實際上表示能力,或替代地將處理為通用資料。Although some bulk capability metadata operations may be performed relative to memory locations, in an alternative embodiment or in addition, certain bulk capability metadata operations may be performed on capability elements associated with capability registers accessible to processing circuitry data application. Such capability registers may be arranged to store capabilities, such as the previously mentioned bounded pointers, and each capability register will have capability metadata associated with it to identify whether the current contents of the capability register actually represent capabilities, or alternatively will be processed as generic data.

存在可規定該批量能力元資料操作的數種方式。然而,在一個實施例中,單指令用於規定各個批量能力元資料操作。例如,在一個實施例中,該設備可進一步包含解碼電路系統,以回應於指令序列產生用於發佈至處理電路系統之控制信號,從而使該處理電路系統執行該指令序列要求之操作。解碼電路系統可經佈置以回應於接收到批量能力元資料指令來產生控制信號,用於發佈至處理電路系統以使該處理電路系統執行該批量能力元資料指令要求之批量能力元資料操作。因此,處理電路系統可例如係處理器核心,該處理器核心回應於由解碼電路系統產生之控制信號以執行經解碼之指令要求之操作。當解碼電路系統解碼批量能力元資料指令時,處理電路系統將回應於所產生之所得控制信號來執行要求之批量能力元資料操作。應瞭解此類途徑可藉由賦能單指令規定將對與所識別之複數個儲存元件(可係記憶體位置或暫存器)相關的複數項之能力元資料執行之批量查詢及/或修改操作來提供顯著效能及代碼密度益處。There are several ways in which this batch capability metadata operation can be specified. However, in one embodiment, a single instruction is used to specify each batch capability metadata operation. For example, in one embodiment, the apparatus may further include decoding circuitry to generate, in response to a sequence of instructions, control signals for issuance to processing circuitry to cause the processing circuitry to perform operations required by the sequence of instructions. Decoding circuitry may be arranged to generate control signals in response to receiving a bulk capability metadata instruction for issuance to processing circuitry to cause the processing circuitry to perform the bulk capability metadata operations required by the bulk capability metadata instruction. Thus, the processing circuitry may be, for example, a processor core that is responsive to control signals generated by the decoding circuitry to perform operations required by the decoded instructions. When the decoding circuitry decodes the batch capability metadata instruction, the processing circuitry will perform the requested batch capability metadata operation in response to the resulting control signal generated. It should be understood that such approaches may specify batch queries and/or modifications to be performed on multiple items of capability metadata associated with identified multiple storage elements (which may be memory locations or registers) by enabling single instructions. operation to provide significant performance and code density benefits.

存在其中可在指令中規定其能力元資料將由批量能力元資料操作存取/操縱的複數個儲存元件的數種方式。例如,在一個實施例中,儲存元件係記憶體位置且批量能力元資料指令規定提供識別連續系列的記憶體位置(其相關能力元資料將經受批量能力元資料操作)之位址的暫存器。由暫存器規定之位址可採取各種形式,但在一個實施例中可例如係開始位址。There are several ways in which a plurality of storage elements whose capability metadata is to be accessed/manipulated by a batch capability metadata operation can be specified in an instruction. For example, in one embodiment, the storage element is a memory location and the batch capability metadata instruction specifies a register that provides an address that identifies a contiguous series of memory locations whose associated capability metadata will be subjected to a batch capability metadata operation . The address specified by the scratchpad may take various forms, but in one embodiment may be, for example, the start address.

存在其中可識別在連續系列中之記憶體位置之數量的各種方式。例如,在一個實施例中,批量能力元資料指令可包括識別在連續系列中之記憶體位置之數量的欄位。因此,在此等實例中,該指令可明確地識別經受批量能力元資料操作之記憶體位置之數量。There are various ways in which the number of memory locations in a continuous series can be identified. For example, in one embodiment, the batch capability metadata command may include a field identifying the number of memory locations in a contiguous series. Thus, in these examples, the instruction may unambiguously identify the number of memory locations subject to batch-capable metadata operations.

識別記憶體位置之數量的欄位可採取各種形式。例如,欄位可提供對含有指示在連續系列中記憶體位置數量之值的暫存器之參考。或者,可在欄位中規定立即值,該立即值直接指示在連續系列中記憶體位置之數量。Fields identifying the number of memory locations can take various forms. For example, a field may provide a reference to a register containing a value indicating the number of memory locations in a continuous series. Alternatively, an immediate value can be specified in a field that directly indicates the number of memory locations in a continuous series.

在一替代實施例中,可不需要批量能力元資料指令明確地識別在連續系列中記憶體位置之數量。例如,在一個實施例中,記憶體位置之數量可由設備性質暗示。定義記憶體位置數量的設備性質可採取各種形式,但在一個實施例中,該性質係處理電路系統可存取之快取記憶體之快取記憶體線長度。此類途徑會使得例如處理器之資料快取記憶體的結構被開拓。特定言之,在此類快取記憶體利用針對位於快取記憶體線中之各個資料塊的能力元資料來增加快取記憶體線資訊的情況下,可能經由使用此類指令來促進對此類能力元資料之管理操作,且此可例如用於最佳化調頁代碼,該係調頁代碼用以在能力感知記憶體系統與備份儲存之間移動能力,或反之亦然。In an alternative embodiment, batch capability metadata instructions may not be required to explicitly identify the number of memory locations in a contiguous series. For example, in one embodiment, the number of memory locations may be implied by device properties. The device property that defines the number of memory locations can take various forms, but in one embodiment, the property is the cache line length of the cache that the processing circuitry can access. Such approaches allow structures such as data caches of processors to be exploited. In particular, where such a cache utilizes capability metadata for each data block located in the cache line to augment cache line information, it is possible to facilitate this through the use of such instructions. Management operations like capability metadata, and this can be used, for example, to optimize paging codes used to move capabilities between capability-aware memory systems and backup storage, or vice versa.

在一個實施例中,批量能力元資料指令將能力暫存器識別為複數個儲存元件。在此類實施例中,批量能力元資料指令可包括識別其相關能力元資料將經受該批量能力元資料操作之能力暫存器的暫存器識別符欄位,該暫存器識別符欄位提供立即值及暫存器識別符之至少一者以識別能力暫存器。當對與複數個能力暫存器相關之能力元資料執行此等批量操作時,通常不要求該等暫存器係連續序列之暫存器,且由此存在關於如何識別獨立暫存器之大量靈活性。例如,掩碼值可用於將相關暫存器識別為立即值或對含有該掩碼值之暫存器之參考。或者,基底暫存器識別符與計數值之組合可用於識別暫存器,其中基底暫存器識別符或計數值是參考通用暫存器規定,並且基底暫存器識別符及計數值中的另一者例如係由立即值規定。In one embodiment, the batch capability metadata instruction identifies the capability register as a plurality of storage elements. In such embodiments, the batch capability metadata instruction may include a register identifier field that identifies the capability registers whose associated capability metadata will be subjected to the batch capability metadata operation, the register identifier field At least one of an immediate value and a register identifier is provided to identify the capability register. When performing these bulk operations on capability metadata associated with a plurality of capability registers, the registers are generally not required to be registers in a contiguous sequence, and thus there is a large amount of information on how to identify individual registers flexibility. For example, a mask value may be used to identify the associated register as an immediate value or a reference to a register containing the mask value. Alternatively, a combination of a base register identifier and a count value can be used to identify a register, wherein the base register identifier or count value is referenced to the general register specification, and the base register identifier and count value are The other is specified by an immediate value, for example.

批量能力元資料指令可採取各種形式。在一個實施例中,其採取批量查詢指令之形式,且處理電路系統經佈置以回應於當解碼該批量查詢指令時由解碼電路系統產生之控制信號執行批量查詢操作。批量查詢指令可識別目的暫存器,且處理電路系統回應於批量查詢操作以獲得與儲存在複數個該等儲存元件中之各個資料塊相關之能力元資料,並且用以產生含有所獲得之能力元資料的輸出資料以供儲存在目的暫存器中。因此,回應於單指令,與複數個儲存元件相關之能力元資料可聚集在一起並儲存在單個目的暫存器中。Bulk capability metadata directives can take various forms. In one embodiment, it takes the form of a bulk query instruction, and the processing circuitry is arranged to perform a bulk query operation in response to control signals generated by decoding circuitry when decoding the bulk query instruction. The batch query command can identify the destination register, and the processing circuitry responds to the batch query operation to obtain capability metadata associated with each data block stored in the plurality of storage elements and to generate capabilities containing the obtained capabilities Metadata output data for storage in the destination register. Thus, in response to a single instruction, capability metadata associated with multiple storage elements can be aggregated and stored in a single destination register.

在一些實例中,批量能力元資料指令可係批量修改指令,且處理電路系統經佈置以回應於當解碼批量修改指令時由解碼電路系統產生之控制信號執行批量修改操作。批量修改指令可識別用於識別修改資料的源欄位,且處理電路系統回應於批量修改操作,以取決於由源欄位識別之修改資料來修改與儲存在複數個該等儲存元件中之各個資料塊相關之能力元資料。In some examples, the batch capability metadata instruction may be a batch modification instruction, and the processing circuitry is arranged to perform the batch modification operation in response to control signals generated by the decoding circuitry when decoding the batch modification instruction. The bulk modify instruction may identify a source field for identifying modified data, and the processing circuitry responds to the bulk modify operation to modify and store each of the plurality of storage elements depending on the modified data identified by the source field Capability metadata associated with the data block.

源欄位可以各種方式識別修改資料。例如,源欄位可提供立即值及/或暫存器識別符以識別修改資料。在一個實施例中,在儲存元件係記憶體位置的情況下,識別含有修改資料之通用暫存器。然而,在儲存元件係能力暫存器的情況下,則在一個實施例中,可規定立即值與暫存器識別符之任一者或兩者以識別修改資料。在又一另外實施例中,亦當儲存元件係記憶體位置時,立即值與暫存器識別符之任一者或兩者可用以識別修改資料。The source field can identify modified data in various ways. For example, the source field can provide immediate values and/or register identifiers to identify modified data. In one embodiment, where the storage element is a memory location, a general purpose register containing modified data is identified. However, where the storage element is a capability register, then in one embodiment either or both an immediate value and a register identifier may be specified to identify the modification data. In yet another embodiment, also when the storage element is a memory location, either or both of the immediate value and the register identifier may be used to identify the modification data.

在處理電路系統經佈置以將批量查詢操執行為批量能力元資料操作的一個實施例中,處理電路系統可進一步經佈置以輸出含有所獲得之能力元資料的資料以供儲存在能力不感知性儲存元件中。其可直接輸出資料以供儲存在能力不感知性儲存元件中,或最初該輸出資料可儲存在通用暫存器中,輸出資料可從該通用暫存器轉發到能力不感知性儲存元件。In one embodiment where the processing circuitry is arranged to perform bulk query operations as bulk capability metadata operations, the processing circuitry may be further arranged to output data containing the obtained capability metadata for storage in capability agnostic in the storage element. It can output data directly for storage in the capability agnostic storage element, or the output data can be initially stored in a general purpose register from which the output data can be forwarded to the capability agnostic storage element.

在處理電路系統經佈置以將批量修改操作執行為批量能力元資料操作的一個實施例中,所使用之修改資料可獲自能力不感知性儲存元件。儘管在一個實施例中,修改資料可直接獲自能力不感知性儲存元件,但是在一個替代實施例中,可首先將修改資料從能力不感知性儲存元件寫入通用暫存器中,隨後在執行批量修改操作期間由處理電路系統從通用暫存器參考該修改資料。In one embodiment where the processing circuitry is arranged to perform batch modification operations as batch capability metadata operations, the modification data used may be obtained from capability agnostic storage elements. Although in one embodiment, the modification data may be obtained directly from the capability-agnostic storage element, in an alternative embodiment, the modification data may be first written from the capability-agnostic storage element to a general-purpose register, and then stored in the The modification data is referenced by the processing circuitry from the general purpose register during execution of a bulk modification operation.

作為處理電路系統(係執行由相關解碼電路系統解碼之指令的處理器核心)之替代,該處理電路系統可在一個替代實施例中係直接記憶體存取(direct memory access; DMA)電路。在此類實施例中,批量能力元資料操作可由處理器核心規定,並且使DMA電路發佈一或更多個事務以對連續系列的記憶體位置實施該批量能力元資料操作。因此,在此類實施例中,在處理器管線可存取亦可由DMA電路系統存取之記憶體的情況下,該處理器管線可將批量能力元資料操作卸載至DMA電路系統,其中DMA電路系統隨後經由在DMA電路系統與相關記憶體位置之間的一系列事務實施所要求的操作。因此,在此類實施例中,批量能力元資料操作有效表達為匯流排協定等級,以允許DMA電路存取/操縱有關記憶體區域的一組能力元資料項。Instead of processing circuitry, which is a processor core that executes instructions decoded by associated decoding circuitry, the processing circuitry may in an alternative embodiment be direct memory access (DMA) circuitry. In such embodiments, a batch capability metadata operation may be specified by a processor core and cause the DMA circuit to issue one or more transactions to perform the batch capability metadata operation on a contiguous series of memory locations. Thus, in such embodiments, where the processor pipeline can access memory that is also accessible by the DMA circuitry, the processor pipeline can offload batch capability metadata operations to the DMA circuitry, where the DMA circuitry The system then performs the required operations via a series of transactions between the DMA circuitry and the associated memory locations. Thus, in such embodiments, batch capability metadata operations are effectively expressed as a bus protocol level to allow DMA circuits to access/manipulate a set of capability metadata items about memory regions.

特定實施例現將參考附圖描述。Particular embodiments will now be described with reference to the accompanying drawings.

第1圖示意地圖示包含用於處理指令之處理管線4的資料處理設備2之實例。在此實例中,處理管線4包括數個管線級,該等管線級包括擷取級6、解碼級8、發佈級10、執行級12、及寫回級14,但應瞭解可提供其他類型的級或各級之組合。例如,用於執行暫存器重命名之重命名級可被包括在一些實施例中。待處理之指令在各級之間移動,並且當指令於一個級待定時,另一指令可於管線4之不同級待定。Figure 1 schematically illustrates an example of a data processing apparatus 2 including a processing pipeline 4 for processing instructions. In this example, processing pipeline 4 includes several pipeline stages including fetch stage 6, decode stage 8, issue stage 10, execute stage 12, and writeback stage 14, although it should be understood that other types of level or combination of levels. For example, a renaming stage for performing scratchpad renaming may be included in some embodiments. Pending instructions move between stages, and while an instruction is pending at one stage, another instruction may be pending at a different stage of pipeline 4 .

擷取級6從1階(L1)指令快取記憶體20擷取指令。擷取級6通常可順序地從連續指令位址擷取指令。然而,擷取級亦可具有用於預測分支指令之結果的分支預測器22,且若預測採取分支,則擷取級6可從(非順序)分支目標位址擷取指令,或若預測不採取分支,則擷取級6從下一順序位址擷取指令。分支預測器22可包括一或更多個用於儲存資訊之分支歷史表,以用於預測是否能採取某些分支。例如,分支歷史表可包括用於追蹤先前執行之分支的實際結果或表示對分支進行之預測的置信度之計數器。分支預測器22亦可包括用於快取分支指令之先前目標位址的分支目標位址快取記憶體(branch target address cache; BTAC)24,以使得可在後續遇到相同分支指令時預測此等先前目標位址。Fetch stage 6 fetches instructions from level 1 ( L1 ) instruction cache 20 . Fetch stage 6 can typically fetch instructions sequentially from consecutive instruction addresses. However, the fetch stage may also have a branch predictor 22 for predicting the outcome of the branch instruction, and the fetch stage 6 may fetch the instruction from the (non-sequential) branch target address if a branch is predicted to be taken, or if the prediction does not Taking the branch, fetch stage 6 fetches the instruction from the next sequential address. Branch predictor 22 may include one or more branch history tables for storing information for predicting whether certain branches can be taken. For example, the branch history table may include a counter used to track the actual outcome of previously executed branches or to represent the confidence of predictions made on branches. The branch predictor 22 may also include a branch target address cache (BTAC) 24 for caching the previous target address of a branch instruction so that this can be predicted when the same branch instruction is subsequently encountered Wait for the previous target address.

擷取之指令傳遞到解碼該等指令以產生經解碼之指令的解碼級8。經解碼之指令可包含用於控制執行級12以執行適當處理操作的控制資訊。針對從快取記憶體20擷取之一些更複雜指令,解碼級8可將彼等指令映射至多個經解碼之指令,此映射可已知為微操作(μops或uops)。因此,在從L1指令快取記憶體20擷取之指令與由管線之隨後級看到之指令之間可能不存在一一對應關係。一般而言,在本申請案中提及「指令」應解釋為包括微操作。The fetched instructions are passed to decode stage 8 which decodes the instructions to produce decoded instructions. The decoded instructions may include control information for controlling execution stage 12 to perform appropriate processing operations. For some of the more complex instructions fetched from cache 20, decode stage 8 may map those instructions to a number of decoded instructions, which mapping may be known as micro-ops (μops or uops). Therefore, there may not be a one-to-one correspondence between instructions fetched from L1 instruction cache 20 and instructions seen by subsequent stages of the pipeline. In general, references to "instructions" in this application should be construed to include micro-operations.

將經解碼之指令傳遞到發佈級10,發佈級10判定執行指令所需之運算元是否可獲用,並且當運算元係可用時,發佈執行指令。一些實施例可支援按順序處理,因此指令被發佈用於按與指令從L1指令快取記憶體20擷取的程式順序對應之順序執行。其他實施例可支援無序執行,使得可將指令以與程式順序不同之順序發佈至執行級12。無序處理可用來改良效能,因為儘管當等待運算元時停止較早指令,但是可以按照程式順序首先執行其運算元係可用之後一指令。The decoded instruction is passed to issue stage 10, which determines whether operands required to execute the instruction are available, and when the operands are available, issues the instruction for execution. Some embodiments may support in-order processing, whereby instructions are issued for execution in an order corresponding to the program order in which the instructions were fetched from L1 instruction cache 20. Other embodiments may support out-of-order execution, such that instructions may be issued to execution stage 12 in an order other than program order. Out-of-order processing can be used to improve performance because, although an earlier instruction is stalled while waiting for an operand, an instruction whose operand is available can be executed first in program order.

發佈級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。Issue stage 10 issues instructions to execution stage 12, where the instructions are executed to perform various data processing operations. For example, the execution stage may include a number of execution units 30, 32, 34, including an arithmetic/logic unit (ALU) 30 that performs arithmetic or logic operations on integer values, and operates on values represented in floating point form. floating-point (FP) unit 32, and for performing a load operation of loading data values from level 1 (L1) data cache 36 into register 40 or loading data values from the register 40 Load/store unit 34 for store operations that store to L1 data cache 36 . It should be understood that these are only a few examples of the types of execution units that may be provided, and that many others may also be provided. For processing operations, execution stage 12 may read data values from a set of registers 40 . The results of executing the instructions may then be written back to the scratchpad 40 by the writeback stage 14 .

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擷取。任何已知方案可用來管理快取記憶體階層。L1 instruction cache 20 and L1 data cache 36 may be part of a cache hierarchy that includes multi-level caches. For example, a level 2 (L2) cache 44 may also be provided and other levels of cache may be provided as appropriate. In this example, L2 cache 44 is shared between L1 instruction cache 20 and L1 data cache 36, although other examples may have separate L2 instruction and data caches. When the instruction to be fetched is not in the L1 instruction cache 20, it can be fetched from the L2 cache 44, and similarly if the instruction is not in the L2 cache 44, it can be fetched from the main The memory 50 is retrieved. Similarly, in response to a load instruction, if the data is not in L1 data cache 36, it can be fetched from L2 cache 44 and, if necessary, from memory 50. Any known scheme can be used to manage the cache hierarchy.

管線4所使用以代表程式指令及資料值的位址可係虛擬位址,但至少主記憶體50,且視情況亦至少一些階級的快取記憶體階層可經實體定址。因此,可提供轉換後備緩衝器52(translation lookaside buffer; TLB),以用於將管線4所使用之虛擬位址轉換為用於存取快取記憶體或記憶體之實體位址。例如,TLB 52可包括數個條目,該等條目各自規定虛擬位址空間之對應頁之虛擬頁位址及對應實體頁位址,虛擬頁位址應映射至對應實體頁位址以將在對應頁中之虛擬位址轉換為實體位址。例如,虛擬及實體頁位址可對應於對應虛擬及實體位址之最高有效部分,而當將虛擬位址映射至實體位址時剩餘最低有效部分保持不變。除位址轉換資訊之外,各個TLB條目亦可包括一些規定存取許可之資訊,諸如指示在管線4之某些模式中位址之某些頁是否可存取。在一些實施例中,TLB條目亦可定義位址之對應頁之其他性質,諸如定義回應於讀取或寫入操作更新快取記憶體階層之哪個階級的快取記憶體策略資訊(例如,該快取記憶體應以寫回還是寫通模式操作),或定義與由管線4發佈資料存取之順序相比,對在對應頁中之位址的資料存取是否可由記憶體系統重定序的資訊。The addresses used by pipeline 4 to represent program instructions and data values may be virtual addresses, but at least the main memory 50, and optionally at least some levels of the cache hierarchy, may be physically addressed. Therefore, a translation lookaside buffer 52 (translation lookaside buffer; TLB) may be provided for translating the virtual addresses used by the pipeline 4 into physical addresses for accessing the cache or memory. For example, TLB 52 may include several entries, each of which specifies a virtual page address and a corresponding physical page address of a corresponding page of the virtual address space, and the virtual page address should be mapped to the corresponding physical page address to be used in the corresponding Virtual addresses in the page are converted to physical addresses. For example, virtual and physical page addresses may correspond to the most significant portions of the corresponding virtual and physical addresses, while the remaining least significant portions remain unchanged when mapping virtual addresses to physical addresses. In addition to address translation information, each TLB entry may also include some information specifying access permissions, such as indicating whether certain pages of an address are accessible in certain modes of pipeline 4. In some embodiments, the TLB entry may also define other properties of the corresponding page of the address, such as cache policy information that defines which level of the cache hierarchy is updated in response to a read or write operation (eg, the whether the cache should operate in write-back or write-through mode), or defines whether data accesses to addresses in the corresponding page can be reordered by the memory system compared to the order in which data accesses are issued by pipeline 4 Information.

儘管第1圖圖示單階TLB 52,但是應瞭解可提供TLB階層以使得1階(L1) TLB 52可包括用於轉換在數個最近存取之頁中的位址之TLB條目並且可提供2階(L2) TLB以用於儲存大量頁之條目。當在L1 TLB中不存在所需條目時,則其可從L2 TLB擷取,或從階層中之其他TLB擷取。若要存取頁面之所需條目不在任何TLB中,則可執行頁表走查以在記憶體50中存取頁表。任何已知TLB管理方案可用於本技術中。Although Figure 1 illustrates a single-level TLB 52, it should be understood that a TLB hierarchy may be provided such that a level-1 (L1) TLB 52 may include TLB entries for translating addresses in several recently accessed pages and may provide Level 2 (L2) TLB for storing large page entries. When the desired entry does not exist in the L1 TLB, it can be retrieved from the L2 TLB, or retrieved from other TLBs in the hierarchy. If the desired entry to access the page is not in any TLB, a page table walk may be performed to access the page table in memory 50 . Any known TLB management scheme can be used in the present technology.

此外,應瞭解一些系統可支援多階位址轉換,使得例如第一TLB(或TLB階層)可用於將虛擬位址轉換為中間位址,且使用一或更多個其他TLB之二階位址轉換可隨後將中間位址轉換為用於存取快取記憶體或記憶體之實體位址。此可用來支援虛擬化,其中例如一階位址轉換可由作業系統管理且二階位址轉換可由超管理器管理。In addition, it should be appreciated that some systems may support multi-level address translation, such that, for example, a first TLB (or TLB level) can be used to translate virtual addresses to intermediate addresses, and second-order address translation using one or more other TLBs The intermediate addresses can then be translated into physical addresses used to access the cache or memory. This can be used to support virtualization, where, for example, first-order address translation can be managed by the operating system and second-order address translation can be managed by a hypervisor.

如第1圖所示,設備2可具有一組有界指針暫存器60。儘管該組有界指針暫存器在第1圖中圖示為與該組通用資料暫存器40實體分開,但是在一個實施例中,相同實體儲存可用於提供通用資料暫存器及有界指針暫存器二者。As shown in FIG. 1 , the device 2 may have a set of bounded pointer registers 60 . Although the set of bounded pointer registers is shown physically separate from the set of general data registers 40 in FIG. 1, in one embodiment, the same physical store may be used to provide the general data registers and bounded Both pointer registers.

各個有界指針暫存器60包括可用於判定待存取之資料值之位址的指針值62,且當使用對應指針62時規定容許位址範圍的範圍資訊64。有界指針暫存器60亦可包括可定義對指針之使用的一或更多個限制/許可的限制資訊66(本文亦稱為許可資訊)。例如,限制66可用於限制可使用指針62之指令的類型或可使用該指針之管線4的模式。因此,可認為範圍資訊64及限制資訊66定義允許在其中使用指針62的能力。當嘗試使用在定義能力外之指針62時,可觸發錯誤。範圍資訊64可用來例如確保指針保留在某些已知邊界內並且不雜散至記憶體位址空間中可能含有敏感或安全資訊之其他區域。在相同實體儲存用於通用資料暫存器及有界指針暫存器二者的一實施例中,則在一個實施例中,指針值62可例如儲存在與用於對應通用暫存器相同之儲存位置中。Each bounded pointer register 60 includes a pointer value 62 that can be used to determine the address of the data value to be accessed, and range information 64 that specifies the allowable address range when the corresponding pointer 62 is used. The bounded pointer register 60 may also include restriction information 66 (also referred to herein as permission information) that may define one or more restrictions/permissions on the use of the pointer. For example, limit 66 may be used to limit the types of instructions that may use pointer 62 or the mode of pipeline 4 that may use the pointer. Thus, scope information 64 and limit information 66 may be considered to define the capabilities within which pointer 62 is allowed to be used. An error may be triggered when attempting to use a pointer 62 outside of the defined capabilities. Range information 64 may be used, for example, to ensure that pointers remain within certain known boundaries and do not stray into other areas of the memory address space that may contain sensitive or secure information. In one embodiment where the same physical storage is used for both the general purpose data register and the bounded pointer register, then in one embodiment the pointer value 62 may be stored, for example, in the same location as used for the corresponding general purpose register in the storage location.

第2圖圖示指令類型之實例,該等指令類型之容許範圍用於防止對資料或指令的未授權存取。如第2圖之頂部所示,特定有界指針暫存器PR1包括給定指針值62及範圍資訊64,在此實例中該特定有界指針暫存器PR1是使用定義容許範圍下界之下界位址68及定義容許範圍上界之上界位址69規定。例如,設定邊界68、69以定義位址範圍80000至81000。當某些指令參考有界指針暫存器PR1時,可觸發錯誤,並且根據指針62判定之位址超出此範圍。Figure 2 illustrates examples of command types whose allowable ranges are used to prevent unauthorized access to data or commands. As shown at the top of Figure 2, the specific bounded pointer register PR1 includes a given pointer value 62 and range information 64, which in this example is using the lower bound bit that defines the lower bound of the allowable range Address 68 and address 69 which define the upper bound of the upper bound of the allowable range are specified. For example, boundaries 68, 69 are set to define the address range 80000 to 81000. An error can be triggered when certain instructions refer to the bounded pointer register PR1 and the address determined by the pointer 62 is out of this range.

例如,如第2圖之部分A所示,在一些系統中,若嘗試將在指針暫存器60中之指針62之值設定為超出由範圍資訊64規定之範圍的值,則可觸發錯誤(此處假設該指針直接規定位址)。此避免了指針62採取超出規定範圍之任何值,使得可確保使用該指針之任何存取安全地位於容許範圍中。或者,如第2圖之部分B所示,當該位址位於規定範圍之外時,當指令嘗試存取由指針62之位址識別之位置時,可觸發錯誤。因此,仍可容許將指針62設定為超出規定範圍之值,但若位址位於容許範圍之外,則一旦嘗試於指針位址(或源自該指針之位址)進行資料存取,則可觸發錯誤。其他系統可回應於在第2圖之部分A及B中圖示之指令類型兩者而觸發錯誤。For example, as shown in part A of FIG. 2, in some systems, an attempt to set the value of pointer 62 in pointer register 60 to a value outside the range specified by range information 64 may trigger an error ( It is assumed here that the pointer directly specifies the address). This prevents pointer 62 from taking any value outside the specified range, so that any access using the pointer can be assured to be safely within the allowable range. Alternatively, as shown in Part B of Figure 2, an error may be triggered when the instruction attempts to access the location identified by the address of pointer 62 when the address is outside the specified range. Therefore, it is still permissible to set the pointer 62 to a value outside the specified range, but if the address is outside the permissible range, once a data access attempt at the pointer address (or an address derived from the pointer) is attempted, the Trigger an error. Other systems may trigger errors in response to both the types of instructions illustrated in Parts A and B of FIG. 2 .

範圍資訊64可以不同方式設定。例如,安全代碼或作業系統或超管理器可規定給定指針的容許範圍。例如,指令集架構可包括用於設定或修改給定指針62的範圍資訊64的數個指令,並且可將此等指令之執行限制至某些軟體或處理器4之某些模式或異常狀態。可使用設定或修改範圍資訊64之任何已知技術。The range information 64 can be set in different ways. For example, security code or the operating system or hypervisor may dictate the allowable range for a given pointer. For example, an instruction set architecture may include several instructions for setting or modifying scope information 64 for a given pointer 62, and may restrict execution of such instructions to certain software or certain modes or exception states of processor 4. Any known technique for setting or modifying the scope information 64 may be used.

除當執行參考指針的某些指令時可於執行狀態12下使用之該組有界指針儲存元件60之外,程式計數器能力(program counter capability; PCC)暫存器80亦可用於當指令正在從1階指令快取記憶體20擷取時於擷取級6提供相似功能性。特定言之,程式計數器指針可儲存在欄位82中,其中PCC 80亦提供範圍資訊84及任何適當的限制資訊86,類似於利用在該組有界指針儲存元件60中之各指針提供的範圍及限制資訊。In addition to the set of bounded pointer storage elements 60 that can be used in execute state 12 when certain instructions referencing the pointer are executed, the program counter capability (PCC) register 80 can also be used when an instruction is Level 1 instruction cache 20 provides similar functionality at fetch stage 6 when fetching. In particular, program counter pointers may be stored in field 82, where PCC 80 also provides range information 84 and any suitable limit information 86, similar to the ranges provided by the pointers in the set of bounded pointer storage elements 60 and restricted information.

第3圖示意地圖示如何與個別資料塊相關聯地使用標籤位元以識別彼等資料塊是否表示能力(亦即,有界指針及相關限制資訊),或表示正常資料。特定言之,記憶體位址空間110將儲存一系列資料塊115,該等資料塊通常將具有規定之大小。僅出於說明之緣故,在此實例中假設每個資料塊包含128個位元。與各個資料塊115相關聯,提供了標籤欄位120,在一個實例中,標籤欄位120係被稱為標籤位元之單個位元欄位,該標籤欄位120經設定以識別相關資料塊表示能力,並經清除以指示相關資料塊表示正常資料,並因此不可處理為能力。應瞭解,與設定或清除狀態相關之實際值可取決於實施例而變化,但僅以說明之方式,在一個實施例中,若標籤位元具有值1,則其指示相關資料塊係能力,且若其具有值0,則其指示相關資料塊含有正常資料。Figure 3 schematically illustrates how tag bits are used in association with individual data blocks to identify whether they represent capabilities (ie, bounded pointers and associated restriction information), or normal data. In particular, the memory address space 110 will store a series of data blocks 115, which will typically be of a specified size. For the sake of illustration only, it is assumed in this example that each data block contains 128 bits. Associated with each data block 115, a tag field 120 is provided, which in one example is a single bit field called a tag bit, which is set to identify the associated data block Represents a capability, and is cleared to indicate that the associated data block represents normal data and therefore cannot be processed as a capability. It should be understood that the actual value associated with the set or clear state may vary depending on the embodiment, but by way of illustration only, in one embodiment, if the tag bit has a value of 1, it indicates that the associated data block is capable, And if it has a value of 0, it indicates that the relevant data block contains normal data.

當將能力載入有界指針暫存器60(本文亦稱為能力暫存器)之一(諸如第3圖所示之能力暫存器100)中時,則標籤位元隨著能力資訊移動。由此,當將能力載入能力暫存器100中時,指針102、範圍資訊104及限制資訊106(後文稱為許可資訊)將被載入能力暫存器中。此外,與該能力暫存器相關聯,或作為其中之特定位元欄位,將設定標籤位元108以識別該等內容表示能力。相似地,當將能力儲存回記憶體時,將與儲存該能力的資料塊相關聯地設定相關標籤位元120。藉由此途徑,可能區分能力與正常資料,並因此確保正常資料無法用作能力。When a capability is loaded into one of the bounded pointer registers 60 (also referred to herein as capability registers), such as capability register 100 shown in FIG. 3, then the tag bits move with the capability information . Thus, when a capability is loaded into the capability register 100, the pointer 102, scope information 104 and restriction information 106 (hereinafter referred to as permission information) will be loaded into the capability register. In addition, associated with, or as a specific bit field in the capability register, tag bit 108 will be set to identify the content representation capabilities. Similarly, when a capability is stored back into memory, the associated tag bit 120 will be set in association with the data block in which the capability is stored. In this way, it is possible to distinguish abilities from normal data and thus ensure that normal data cannot be used as abilities.

儘管在第3圖中,已經提及含有標籤位元之標籤欄位,但是在更一般實施例中,標籤位元係可與各種能力相關之能力元資料之實例。因此,如第4圖所示,儲存在系統之儲存元件中的能力150(不論其係能力暫存器60之一還是記憶體位址空間110中之記憶體位置)可具有與其相關之能力元資料155。能力元資料將識別相關資料塊150係實際上表示能力,還是替代地應解釋為通用資料,且在一個實施例中,將該資訊編碼為在能力元資料155中之標籤位元。在一個實施例中,能力元資料可僅包含標籤位元,但若需要,在替代實施例中可包含額外資訊。例如,資料類型可經進一步細分,其中能力元資料例如藉由特定優先權等級、細粒許可(例如,唯讀)等等指示所有權。Although in Figure 3 reference has been made to a tag field containing tag bits, in a more general embodiment, tag bits are examples of capability metadata that can be associated with various capabilities. Thus, as shown in FIG. 4, a capability 150 stored in a storage element of the system (whether it is one of capability registers 60 or a memory location in memory address space 110) may have capability metadata associated with it 155. Capability metadata will identify whether relevant data blocks 150 actually represent capabilities or should instead be interpreted as generic data, and in one embodiment, this information is encoded as tag bits in capability metadata 155 . In one embodiment, the capability metadata may contain only the tag bits, but in alternative embodiments may contain additional information if desired. For example, data types may be further subdivided, with capability metadata indicating ownership, eg, by specific priority levels, fine-grained permissions (eg, read-only), and the like.

該等能力可採取各種形式,但在第4圖所示之實施例中,該能力係有界指針。如圖示,有界指針由指針值160、範圍資訊165及許可屬性170構成。範圍資訊及許可屬性可被統稱為有界指針之屬性。These capabilities can take various forms, but in the embodiment shown in Figure 4, the capabilities are bounded pointers. As shown, a bounded pointer consists of pointer value 160 , scope information 165 and permission attribute 170 . The scope information and permission attributes may be collectively referred to as the attributes of a bounded pointer.

在一個實施例中,第1圖所示之執行管線12經佈置以執行指令,以對所識別之複數個儲存元件執行批量能力元資料操作,導致對與儲存在所識別之複數個儲存元件中之各個資料塊相關的能力元資料執行操作。批量能力元資料操作可採取各種形式。例如,一種形式之批量能力元資料操作可係批量查詢操作,而另一示例形式之批量能力元資料操作可係批量修改操作。In one embodiment, the execution pipeline 12 shown in FIG. 1 is arranged to execute instructions to perform batch capability metadata operations on the identified plurality of storage elements, resulting in pairing and storage in the identified plurality of storage elements The operation is performed on the capability metadata associated with each data block. Bulk capability metadata operations can take various forms. For example, one form of bulk capability metadata operation may be a bulk query operation, while another example form of a bulk capability metadata operation may be a bulk modify operation.

第5A圖及第5B圖圖示可在兩種不同類型的指令中提供之欄位,該兩種不同類型的指令可由執行級12執行以對與記憶體系統中的記憶體位置序列相關之各項能力元資料執行批量查詢操作。此等記憶體位置可常駐於第1圖所示之記憶體50中,或在快取記憶體36、44的各階級之一中。Figures 5A and 5B illustrate fields that may be provided in two different types of instructions that may be executed by execution stage 12 to perform a Item capability metadata to perform batch query operations. These memory locations may reside in memory 50 as shown in FIG. 1, or in one of the various levels of cache memory 36,44.

如第5A圖所示,稱為CQueryTagsM指令之指令可經由第1圖之1階指令快取記憶體20擷取,以用於由解碼級8解碼來產生控制信號序列,該控制信號序列將隨後控制執行級12對與由指令識別之複數個資料塊相關之複數個標籤位元執行查詢操作(在此實施例中,假設各項能力元資料包含標籤位元,如例如先前參考第3圖所論述)。如第5A圖所示,作業碼欄位205將該指令識別為CQueryTagsM指令。欄位210用於識別位址,從該位址可判定將查詢其標籤位元之複數個記憶體位置。在一個實施例中,該位址係用於記憶體位置序列之開始位址,且該開始位址可在能力暫存器60之一或通用暫存器40之一中規定,其中欄位210包括該暫存器之識別符。在一個實施例中,該位址將對準至能力記憶體位置,亦即,在第3圖之記憶體位址空間110中圖示之資料塊115之一的開始。在一替代實施例中,可能不需要以對準方式規定開始位址,而是替代地可忽視導致規定之位址不對準的任何位元,因此將在欄位210中規定之位址有效變換為對準位址。As shown in FIG. 5A, an instruction called the CQueryTagsM instruction may be fetched via the level 1 instruction cache 20 of FIG. 1 for decoding by decode stage 8 to generate a sequence of control signals that will be subsequently Control execution stage 12 performs a lookup operation on a plurality of tag bits associated with a plurality of data blocks identified by the instruction (in this embodiment, it is assumed that each capability metadata contains tag bits, as previously described, for example, with reference to FIG. 3 discussion). As shown in Figure 5A, the operation code field 205 identifies the command as a CQueryTagsM command. Field 210 is used to identify an address from which a plurality of memory locations for which tag bits will be queried can be determined. In one embodiment, the address is the start address for the sequence of memory locations, and the start address may be specified in one of the capability registers 60 or one of the general purpose registers 40, where field 210 Include the identifier of the register. In one embodiment, the address will be aligned to the capability memory location, ie, the beginning of one of the data blocks 115 illustrated in the memory address space 110 of FIG. 3 . In an alternative embodiment, the starting address may not need to be specified in an aligned manner, but instead any bits that cause the specified address to be misaligned may be ignored, so the address specified in field 210 will be effectively transformed for the alignment address.

在第5A圖之指令之實例中,在該指令中經由使用欄位215明確定義查詢其標籤位元之記憶體位置之數量。在一個實施例中,欄位215可識別通用暫存器,該通用暫存器的內容識別待查詢之標籤數量。或者,立即值可在欄位215中規定以直接識別待查詢之標籤數量。In the example of the command in Figure 5A, the number of memory locations whose tag bits are queried is explicitly defined in the command via the usage field 215. In one embodiment, field 215 may identify a general register whose contents identify the number of tags to be queried. Alternatively, an immediate value can be specified in field 215 to directly identify the number of tags to query.

隨後提供額外欄位220以識別通用暫存器40,查詢結果將輸出至該通用暫存器。因此,當執行級12執行操作序列以針對所識別之記憶體位置各者擷取標籤位元時,隨後將彼等標籤位元一起整理為輸出資料值,該輸出資料值被輸出以供儲存在通用暫存器40之一中。An additional field 220 is then provided to identify the general register 40 to which the query results will be output. Thus, when execution stage 12 executes a sequence of operations to retrieve tag bits for each of the identified memory locations, the tag bits are then sorted together into output data values that are output for storage in in one of the general purpose registers 40.

若需要,在指令200中(且實際上在本文所述之指令之任一者中),可規定源暫存器之一與目的暫存器相同。因此例如,若在欄位215中規定通用暫存器以識別待查詢之標籤數量,則可將相同通用暫存器規定為寫入查詢結果之暫存器(允許將例如欄位215、220組合以形成單一欄位)。此可減少對指令之編碼空間需求之限制。If desired, in instruction 200 (and indeed in any of the instructions described herein), one of the source registers may be specified to be the same as the destination register. So for example, if a general purpose register is specified in field 215 to identify the number of tags to be queried, then the same general register can be specified as the register where the query results are written (allowing for example the combination of fields 215, 220 to form a single field). This reduces the constraints on the code space requirements for instructions.

儘管在第5A圖之指令200之實例中,可明確設定將查詢其標籤之記憶體位置之數量,但是在替代實施例中,該數量可係隱含的,並且因此例如可源自在其上執行該等指令之設備的性質。此類指令之實例在第5B圖中圖示,其中圖示了「DC_CQueryTagsM」指令225。作業碼230將該指令識別為DC_CQueryTagsM指令,而欄位235用於與在第5A圖之指令200中之欄位210相同的目的,並且因此識別用於將查詢其標籤位元之記憶體位置序列的開始位址。然而,在此實例中,不存在用以識別要查詢之標籤數量的分開欄位,而是替代地在批量查詢操作期間存取之標籤數量係根據相關資料快取記憶體之快取記憶體線長度判定,諸如第1圖所示之1階資料快取記憶體36(如在該指令名稱中所使用之術語「DC」意欲傳遞此係批量查詢指令類型,其中查詢標籤之數量取決於資料快取記憶體之快取記憶體線大小)。快取記憶體線大小可例如在該處理器可用之系統暫存器之一中規定(由第1圖之參考數字90表示)。Although in the example of instruction 200 of Figure 5A, the number of memory locations whose tags are to be queried may be explicitly set, in alternative embodiments the number may be implicit, and thus, for example, may be derived from thereon the nature of the equipment on which the instructions are executed. An example of such a command is illustrated in Figure 5B, which illustrates the "DC_CQueryTagsM" command 225. Operation code 230 identifies this command as a DC_CQueryTagsM command, while field 235 serves the same purpose as field 210 in command 200 of Figure 5A, and thus identifies the sequence of memory locations whose tag bits will be queried start address of . However, in this example, there is no separate field to identify the number of tags to query, but instead the number of tags accessed during a bulk query operation is based on the cache line of the associated data cache Length determination, such as level 1 data cache 36 shown in Figure 1 (the term "DC" as used in the command name is intended to convey this is a batch query command type where the number of query tags depends on the data cache Take the memory's cache line size). The cache line size may be specified, for example, in one of the system registers available to the processor (indicated by reference numeral 90 in FIG. 1).

在一個實施例中,將在欄位235中規定之開始位址與快取記憶體線長度的粒度對準,並且因此,當執行指令時,與維持在快取記憶體線中之各資料塊相關之標籤位元經查詢並整理為輸出值,隨後將該輸出值輸出至在欄位240中規定之通用暫存器中。或者,若在欄位235中規定之開始位址不與快取記憶體線長度的粒度對準,則在替代實施例中可忽視位址中導致該位址不對準之位元,因此將該位址有效變換為對準的位址。In one embodiment, the start address specified in field 235 is aligned with the granularity of the cache line length and, therefore, with each block of data maintained in the cache line when the instruction is executed The associated tag bits are queried and sorted into an output value, which is then output to the general purpose register specified in field 240. Alternatively, if the start address specified in field 235 is not aligned with the granularity of the cache line length, then in an alternate embodiment the bit in the address that caused the address to be misaligned may be ignored, and the The address is effectively transformed into an aligned address.

第6A圖及第6B圖圖示兩種示例方式,其中與各個資料塊相關之標籤位元可併入資料快取記憶體之資料RAM(隨機存取記憶體)中之各個快取記憶體線之快取記憶體線資訊中。在第6A圖所示之實例中,資料RAM 250包括複數個快取記憶體線255,其中各個快取記憶體線調節多個資料塊(例如,以舉例之方式在第3圖中圖示的多個128位元資料塊)。在第6A圖所示之實例中,將各個標籤位元附加至各資料塊結束處(或者其可於各個資料塊之開始處預先掛起)。因此,快取記憶體線之有效長度經延伸以併入必要標籤位元資訊。Figures 6A and 6B illustrate two example ways in which the tag bits associated with each data block can be incorporated into each cache line in the data RAM (random access memory) of the data cache in the cache line information. In the example shown in FIG. 6A, data RAM 250 includes a plurality of cache lines 255, where each cache line accommodates a plurality of blocks of data (eg, shown in FIG. 3 by way of example) multiple 128-bit blocks). In the example shown in Figure 6A, each tag bit is appended to the end of each data block (or it may be pre-suspended at the beginning of each data block). Therefore, the effective length of the cache line is extended to incorporate the necessary tag bit information.

儘管在第6A圖所示之實施例中,各種標籤位元與其對應資料塊一起定位,但是在第6B圖所示之替代實例中,各種標籤位元全部容納在資料RAM 260之各個快取記憶體線265之最後部分270中。因此,各個快取記憶體線中之資料塊一個接一個地附加,並且將標籤位元資訊整理在快取記憶體線之結束處(應瞭解,在一個替代實施例中其可整理在快取記憶體線中之適當點處,例如在快取記憶體線之開始處)。應瞭解第6A圖及第6B圖僅係兩個示例性佈置,藉由此佈置該標籤位元資訊可容納在快取記憶體線內容中,並且應瞭解可採用任何其他適宜方案。Although in the embodiment shown in FIG. 6A, the various tag bits are located with their corresponding data blocks, in the alternative example shown in FIG. 6B, the various tag bits are all accommodated in each cache memory of the data RAM 260 in the last portion 270 of the body line 265 . Thus, the data blocks in each cache line are appended one after the other, and the tag bit information is sorted at the end of the cache line (it should be appreciated that in an alternative embodiment it may be sorted in the cache at an appropriate point in the memory line, such as at the beginning of the cache line). It should be understood that Figures 6A and 6B are merely two exemplary arrangements by which the tag bit information may be accommodated in the cache line content, and that any other suitable scheme may be employed.

儘管在第5A圖及第5B圖中圖示之指令意欲對與記憶體位置序列相關之標籤位元進行操作,該設備亦可支援對能力暫存器操作以執行批量標籤查詢操作的指令之執行。一個此指令在第7圖中圖示,並且特定言之規定指令CQueryTagsR 300,該指令經佈置以執行對有關一系列能力暫存器之多個標籤位元之查詢(與圖示彼等指令關於記憶體位置操作之第5A圖及第5B圖中於指令結束處之「M」術語相比,於指令結束處之「R」術語指示其對能力暫存器操作)。Although the instructions illustrated in Figures 5A and 5B are intended to operate on tag bits associated with a sequence of memory locations, the device may also support the execution of instructions that operate on capability registers to perform batch tag lookup operations . One such instruction is illustrated in Figure 7, and in particular specifies the instruction CQueryTagsR 300, which is arranged to perform a query on a plurality of tag bits related to a series of capability registers (with respect to which instructions are illustrated in relation to the CQueryTagsR 300). Figures 5A and 5B of memory location operations compared to the "M" term at the end of the instruction, where the "R" term at the end of the instruction indicates that it operates on the capability register).

欄位305含有將該等指令識別為CQueryTagsR指令之作業碼。欄位310隨後用於識別將查詢其標籤位元的複數個能力暫存器。在欄位310中識別複數個能力暫存器之方式可取決於實施例而變化。例如,其可參考其內容識別待查詢之複數個暫存器的通用暫存器或用特別地結合在欄位310內之立即值識別。實際上,通用暫存器與立即值之組合可用於規定待查詢之暫存器。Field 305 contains the operation code identifying the commands as CQueryTagsR commands. Field 310 is then used to identify the plurality of capability registers whose tag bits will be queried. The manner in which the plurality of capability registers are identified in field 310 may vary depending on the embodiment. For example, it may identify a general register of the plurality of registers to be queried by reference to its content or by an immediate value specifically incorporated in field 310 . In fact, a combination of general purpose registers and immediate values can be used to specify the registers to be queried.

在第7圖之下半部分示意地圖示在欄位310中識別暫存器之兩種示例方式。在第一實例中,提供掩碼值320,其可例如藉由通用暫存器之內容或藉由立即值規定。掩碼值可用於直接識別待查詢之暫存器。例如,掩碼值之各個位元可對應於在暫存器檔案中之一個暫存器,並且是設定還是清除該位元決定是否將查詢該暫存器之標籤位元。例如,各個設定之位元可識別將查詢其標籤位元的暫存器。若在設備中存在多個分開的暫存器檔案,則可規定可選暫存器檔案識別符325以識別施加掩碼值320之暫存器檔案。應瞭解經由使用此類掩碼值,有可能規定將查詢其標籤位元的任意複數個能力暫存器。Two example ways of identifying registers in field 310 are schematically illustrated in the lower half of FIG. 7 . In a first example, a mask value 320 is provided, which may be specified, for example, by the contents of a general register or by an immediate value. The mask value can be used to directly identify the register to be queried. For example, each bit of the mask value may correspond to a register in the register file, and whether that bit is set or cleared determines whether the register's tag bit will be queried. For example, each set bit may identify the register whose tag bit will be queried. If there are multiple separate scratchpad files in the device, an optional scratchpad file identifier 325 may be specified to identify the scratchpad file to which the mask value 320 is applied. It should be appreciated that by using such mask values, it is possible to specify any number of capability registers whose tag bits will be queried.

在亦圖示於第7圖中之替代佈置中,欄位310可實際上併入有兩個子欄位,第一子欄位330識別基底暫存器識別符,且第二子欄位335識別計數值。當組合時,此等欄位可用於識別從由基底暫存器識別符識別之暫存器開始的多個暫存器之序列。子欄位330、335中的一個可使用通用暫存器來識別其內容,而另一個子欄位可例如提供立即值。此外,若在該設備中提供多個暫存器檔案,則可選之額外欄位340可用於識別將對其暫存器操作之特定暫存器檔案。In an alternate arrangement, also shown in Figure 7, field 310 may actually incorporate two subfields, the first subfield 330 identifying the base register identifier, and the second subfield 335 Identify the count value. When combined, these fields can be used to identify a sequence of multiple registers starting with the register identified by the base register identifier. One of the subfields 330, 335 may use a generic register to identify its content, while the other subfield may, for example, provide an immediate value. Additionally, if multiple register files are provided in the device, an optional additional field 340 may be used to identify the particular register file on which the register will operate.

如第5A圖及第5B圖之指令,第7圖之指令300包括欄位315,在該欄位315中識別查詢結果將寫入之通用暫存器。Like the commands of Figures 5A and 5B, the command 300 of Figure 7 includes a field 315 in which the general register to which the query results will be written is identified.

在第5A圖、第5B圖及第7圖之實例中,該等指令係批量查詢指令,導致執行批量查詢操作以擷取與多個儲存元件相關之標籤位元,並隨後輸出彼等標籤位元以供儲存在通用暫存器中。可在設備中提供的另一類型的指令係批量修改指令,該批量修改指令當在執行級12中回應於由解碼級8產生之控制信號執行時,使得根據由批量修改指令規定之修改資料來選擇性修改與各個識別之儲存元件相關之標籤位元。In the example of Figures 5A, 5B, and 7, the commands are batch query commands that cause a batch query operation to be performed to retrieve tag bits associated with multiple storage elements, and then output those tag bits meta for storage in the general purpose register. Another type of instruction that may be provided in the apparatus is a batch modification instruction which, when executed in the execution stage 12 in response to control signals generated by the decoding stage 8, causes the modification data to be modified according to the modification data specified by the batch modification instruction. Selectively modify the tag bits associated with each identified storage element.

在第8A圖、第8B圖及第8C圖中圖示了三個此類批量標籤修改指令,該等批量標籤修改指令一般分別對應於第5A圖、第5B圖及第7圖之等效批量查詢指令。Three such batch label modification instructions are illustrated in Figures 8A, 8B, and 8C, which generally correspond to the equivalent batches of Figures 5A, 5B, and 7, respectively query instruction.

特定言之,第8A圖圖示CModTagsM指令350,其可用於對與記憶體位置序列相關之標籤位元執行批量標籤修改操作,其中在指令中明確識別記憶體位置之數量及因此待操作之標籤位元之數量。作業碼355因此將該指令識別為CModTagsM指令,而欄位360、365一般對應第5A圖之指令200之欄位210、215。因此,此兩個欄位共同識別開始位址及待修改之標籤之數量。欄位370隨後識別含有修改資料之通用暫存器,並且因此提供對在批量標籤修改操作期間將應用之更新標籤值之指示。更詳細地,關於在欄位370中識別之通用暫存器中規定位元可用於判定待進行之標籤位元修改的方式將在後文中參考第10圖論述。In particular, Figure 8A illustrates a CModTagsM instruction 350, which may be used to perform a bulk tag modification operation on tag bits associated with a sequence of memory locations, wherein the number of memory locations and thus the tags to be manipulated are explicitly identified in the instruction. The number of bits. Operation code 355 thus identifies the command as a CModTagsM command, and fields 360, 365 generally correspond to fields 210, 215 of command 200 in Figure 5A. Therefore, these two fields together identify the start address and the number of tags to be modified. Field 370 then identifies the general register containing the modification data, and thus provides an indication of the updated tag value to be applied during the bulk tag modification operation. In more detail, the manner in which the specified bit in the general register identified in field 370 may be used to determine the tag bit modification to make will be discussed later with reference to FIG. 10 .

第8B圖圖示DC_CModTagsM指令375之格式,該指令可再次用於對與記憶體位置序列相關之標籤位元執行批量標籤修改,但在此實例中,待操作之標籤位元之數量係由設備之性質暗示,特定言之由在設備之資料快取記憶體之一中的快取記憶體線之快取記憶體線長度暗示。作業碼380將該指令識別為DC_CModTagsM指令,而欄位385用於與第5B圖之指令225之欄位235相同之目的,並且因此識別記憶體位置序列之開始位址。欄位390用於與欄位370相同之目的,並且因此識別通用暫存器,該通用暫存器之內容識別在批量標籤修改操作期間如何更新標籤值。Figure 8B illustrates the format of the DC_CModTagsM instruction 375, which can again be used to perform bulk tag modifications on tag bits associated with a sequence of memory locations, but in this example the number of tag bits to operate on is determined by the device The nature of this implies, in particular, is implied by the cache line length of a cache line in one of the device's data caches. Operation code 380 identifies this instruction as a DC_CModTagsM instruction, and field 385 serves the same purpose as field 235 of instruction 225 of Figure 5B, and thus identifies the start address of the sequence of memory locations. Field 390 serves the same purpose as field 370, and thus identifies a general register whose contents identify how to update the label value during bulk label modification operations.

儘管第8A圖及第8B圖之指令導致對記憶體位置序列執行批量標籤修改操作,但是第8C圖所示之指令替代地對與在該組能力暫存器60中之複數個能力暫存器相關之標籤位元操作。特定言之,第8C圖圖示CModTagsR指令400,其中作業碼405將該指令識別為CModTagsR指令。欄位410用於與第7圖之指令300之欄位310相同之目的,並且由此識別其標籤位元將經受批量修改操作的複數個暫存器。欄位415隨後識別在批量標籤修改操作期間要如何修改標籤值。儘管欄位415可僅含有以與第8A圖及第8B圖所示指令之欄位370、390相同之方式對通用暫存器之參考,但是在替代實施例中,欄位415可規定立即值,或立即值與通用暫存器之組合可用於識別待進行之修改。儘管原則上第8A圖及第8B圖所示之指令之欄位370、390亦可使用通用暫存器與立即值之組合來識別待進行之更新,但已發現當對能力暫存器內容執行批量標籤修改時,與立即值組合地使用通用暫存器可係更有用的,前提係可規定經受批量標籤修改操作之能力暫存器之非連續性質。While the instructions of FIGS. 8A and 8B result in a batch tag modification operation on a sequence of memory locations, the instruction shown in FIG. 8C instead performs operations on a plurality of capability registers in the set of capability registers 60 . Associated tag bit operations. In particular, Figure 8C illustrates a CModTagsR instruction 400, where the operation code 405 identifies the instruction as a CModTagsR instruction. Field 410 serves the same purpose as field 310 of instruction 300 of FIG. 7, and thereby identifies the plurality of registers whose tag bits are to be subjected to bulk modification operations. Field 415 then identifies how the tag value is to be modified during the bulk tag modification operation. Although field 415 may only contain references to general registers in the same manner as fields 370, 390 of the instructions shown in Figures 8A and 8B, in alternate embodiments, field 415 may specify an immediate value , or a combination of immediate values and general purpose registers can be used to identify pending modifications. Although in principle the fields 370, 390 of the instructions shown in Figures 8A and 8B could also use a combination of general registers and immediate values to identify pending updates, it has been found that when executing on the contents of the capability register For bulk tag modification, the use of general purpose registers in combination with immediate values may be more useful, provided that the non-contiguous nature of the ability registers to undergo bulk tag modification operations can be specified.

將標籤位元儲存在當執行批量標籤查詢操作時針對查詢結果識別之通用暫存器中的方式或在針對批量標籤修改操作識別之通用暫存器中表達修改資料位元的方式可採取各種形式。第9A圖圖示壓縮格式,其中從最低有效位元開始之各個位元識別所查詢之標籤位元(當該暫存器用於纍計批量標籤查詢操作之結果時)或獨立項修改資料(當通用暫存器用作源暫存器以識別在批量標籤修改操作期間使用之修改資料時)。因此,在通用暫存器420中提供位元425之序列。在暫存器中有效位元之數量將取決於其標籤位元正被查詢或修改的儲存元件之數量,並且由此暫存器420之一些更有效位元可係未使用的。儘管在第9A圖中壓縮格式圖示為從最低有效位元位置開始,但是應瞭解在替代實施例中壓縮格式可從最高有效位元開始,並且因此某些數量之最低有效位元可係未使用的。The manner in which tag bits are stored in a generic register identified for query results when performing a bulk tag query operation or the manner in which the modified data bits are expressed in a generic register identified for bulk tag modification operations can take various forms . Figure 9A illustrates a compressed format where each bit starting with the least significant bit identifies either the tag bit being queried (when the register is used to accumulate the results of a batch tag query operation) or the individual item modification data (when The general purpose register is used as a source register to identify modification data used during bulk tag modification operations). Therefore, a sequence of bits 425 is provided in the general purpose register 420 . The number of significant bits in the register will depend on the number of storage elements whose tag bits are being queried or modified, and thus some of the more significant bits of register 420 may be unused. Although the compressed format is shown starting from the least significant bit position in Figure 9A, it should be understood that in alternative embodiments the compressed format may start from the most significant bit, and thus some number of least significant bits may not be available. in use.

第9B圖圖示替代途徑,其中通用暫存器430含有資訊塊序列,在此實例中為個別位元組序列,並且在各個位元組中之某一位元435用於識別所查詢之標籤位元之一(在批量標籤查詢操作之實例中)或各項修改資料之一(在批量標籤修改操作之實例中)。若需要,在各個位元組中之其他位元可用於其他資訊,或可係未使用的。Figure 9B illustrates an alternative approach, in which the general register 430 contains a sequence of information blocks, in this example a sequence of individual bytes, and a certain bit 435 in each byte is used to identify the queried tag One of the bits (in the instance of the bulk tag query operation) or one of the modification data (in the instance of the bulk tag modification operation). Other bits in each byte group may be used for other information, if desired, or may be unused.

第10圖係更詳細圖示可如何使用修改資料位元以在執行批量標籤修改操作期間識別對個別標籤位元進行之更新的圖。出於說明之目的,圖示第9A圖之壓縮格式,但該等原則同等適用於第9B圖之未壓縮格式。在第10圖中圖示用於解釋位元425之序列的四個示例選項。各個位元425對應於待修改之標籤位元之一。根據選項A,若位元425係於邏輯0值,則清除對應標籤位元以識別相關資料塊不表示能力。相反地,若位元425係於邏輯1值,則設定對應標籤位元以識別將相關資料塊解譯為能力。在其中將標籤位元設定為邏輯1值以識別對應資料塊係能力,並清除為邏輯0值以識別相關資料塊不係能力的實施例中,則該更新可經由移動操作有效執行,藉以在批量標籤更新操作期間將暫存器420內之相關位元425之內容移動至對應標籤位元中。FIG. 10 is a diagram illustrating in greater detail how modification data bits may be used to identify updates to individual tag bits during the execution of bulk tag modification operations. For illustration purposes, the compressed format of Figure 9A is shown, but the same principles apply to the uncompressed format of Figure 9B. Four example options for explaining the sequence of bits 425 are illustrated in FIG. 10 . Each bit 425 corresponds to one of the tag bits to be modified. According to option A, if bit 425 is at a logic 0 value, then the corresponding tag bit is cleared to identify that the associated data block does not indicate capability. Conversely, if bit 425 is at a logic 1 value, the corresponding tag bit is set to identify the ability to interpret the associated data block. In embodiments where the tag bits are set to a logic 1 value to identify the corresponding data block as capable, and cleared to a logic 0 value to identify the associated data block as incapable, then the update can be effectively performed via a move operation, thereby in During the batch tag update operation, the content of the relevant bit 425 in the register 420 is moved to the corresponding tag bit.

選項B說明其中若位元425係於邏輯0值,則對應標籤位元保持不修改的情況。因此,若已經設定,則對應標籤位元將保留在設定狀態中,否則將保留在清除狀態中。相反地,若位元425具有邏輯1值,則此將導致清除標籤位元。在一個實施例中,此選項可經由使用BIC(位元清除)操作實施。Option B illustrates the case where if bit 425 is at a logic 0 value, the corresponding tag bit remains unmodified. Therefore, if already set, the corresponding tag bit will remain in the set state, otherwise it will remain in the clear state. Conversely, if bit 425 has a logic one value, this will cause the tag bit to be cleared. In one embodiment, this option may be implemented via the use of a BIC (bit clear) operation.

根據選項C,若位元425係於邏輯0值,則對應標籤位元保持未修改,而若位元425係於邏輯1值,則設定該標籤位元。在一個實施例中此選項可經由使用ORR操作實施。According to option C, if bit 425 is at a logic 0 value, the corresponding label bit remains unmodified, and if bit 425 is at a logic 1 value, the label bit is set. In one embodiment this option may be implemented via the use of ORR operations.

選項D說明若需要原則上可使用,但與其他選項A至C相比可具有較少實踐應用於修改能力標籤位元之其他選項。根據選項D,若位元425具有邏輯0值,則對應標籤位元保持未修改,而若位元425具有邏輯1值,則交換對應標籤位元之值,並且因此若已經設定則清除,且若已經清除則設定。在一個實施例中此操作可藉由互斥或(XOR)操作實施。Option D illustrates other options that can be used in principle if desired, but may have less practical application to modify the Capability Tag bits than the other options A to C. According to option D, if bit 425 has a logic 0 value, the corresponding label bit remains unmodified, and if bit 425 has a logic 1 value, the value of the corresponding label bit is swapped, and thus cleared if already set, and Set if cleared. In one embodiment this operation may be implemented by an exclusive OR (XOR) operation.

儘管在一個實施例中,批量標籤操作之執行可係非條件性的,但是在一替代實施例中,該設備可經佈置使得在允許進行該批量標籤操作之前必須滿足某些條件。第11圖係圖示示例實施方式之流程圖,其中在允許執行該批量標籤指令之前執行一或更多個檢查。於步驟450,判定是否已接收批量標籤指令。於步驟455,隨後判定是否允許執行規定之指令所需之批量操作。特定言之,如後文以舉例方式參考第12A圖至第12C圖所論述,當可執行至少一些批量標籤指令時可設置各種限制。Although in one embodiment the execution of the batch labeling operation may be unconditional, in an alternative embodiment the apparatus may be arranged such that certain conditions must be satisfied before the batch labeling operation is allowed to proceed. FIG. 11 is a flow diagram illustrating an example implementation in which one or more checks are performed before the batch tag instruction is allowed to execute. In step 450, it is determined whether a batch label command has been received. At step 455, it is then determined whether the batch operations required to execute the specified instruction are permitted. In particular, as discussed below by way of example with reference to Figures 12A-12C, various restrictions may be set when at least some bulk tag instructions can be executed.

該等限制可同等適用於全部類型之批量標籤指令,或可對某些類型批量標籤指令之使用設置更多複雜限制。例如,在一些實施方式中,可適當地對批量標籤修改指令之使用設置相當嚴格之限制,而批量標籤查詢指令之使用可受到較少限制。此係由於以下事實:嚴格控制修改與資料塊相關之標籤位元的能力通常係重要的,因為若不對將通用資料變換為能力(capability)的能力(ability)設置此類控制,則由基於能力之架構提供之安全性可潛在地受限。特定言之,批量標籤修改指令之執行潛在地係相當強有力之工具,因為其可藉由與多個資料塊相關聯地設定標籤位元來使得能夠產生多個能力。These restrictions may apply equally to all types of batch label commands, or more complex restrictions may be placed on the use of certain types of batch label commands. For example, in some embodiments, fairly strict restrictions may be placed on the use of batch tag modification instructions, while the use of batch tag query instructions may be less restricted. This is due to the fact that strict control over the ability to modify the tag bits associated with a block of data is often important, because if no such control is placed on the ability to transform generic data into capabilities, then capabilities based The security provided by the architecture can be potentially limited. In particular, the execution of bulk tag modification instructions is potentially a very powerful tool because it can enable multiple capabilities by setting tag bits in association with multiple data blocks.

若於步驟455判定不允許指令所需之批量操作,則於步驟465判定發生故障狀況。此可例如涉及藉由採取異常來產生處理器故障。If it is determined at step 455 that the batch operation required by the instruction is not allowed, then at step 465 it is determined that a fault condition has occurred. This may involve, for example, generating a processor fault by taking an exception.

若判定允許指令所需之批量操作,則視情況於步驟460可執行任何其他需要之檢查。例如,若有界指針用於識別對記憶體位置序列執行之批量標籤操作的開始位址,則該有界指針之範圍及許可屬性將經檢查以確保由該批量標籤指令識別之記憶體位置序列係在可允許之範圍中,並且滿足任何許可屬性。作為可於步驟460執行之額外檢查之另一實例,任何記憶體管理單元(memory management unit; MMU)存取許可可經檢查以確保滿足彼等存取許可。可進行額外檢查以確保關於所判定之記憶體位址範圍不發生記憶體故障。若未經歷任何其他需要之檢查,則該過程再次進行至步驟465,在步驟465中發生故障狀況。然而,否則該過程進行至步驟470,在步驟470中執行規定之批量標籤指令所需之批量操作。If it is determined that the batch operations required by the instruction are permitted, any other required checks may be performed at step 460 as appropriate. For example, if a bounded pointer is used to identify the start address of a bulk tag operation performed on a sequence of memory locations, the range and permission attributes of the bounded pointer will be checked to ensure the sequence of memory locations identified by the bulk tag instruction Be within the allowable range and satisfy any permitted attributes. As another example of additional checks that may be performed at step 460, any memory management unit (MMU) access permissions may be checked to ensure that they are satisfied. Additional checks may be performed to ensure that no memory failures have occurred with respect to the determined memory address range. If no other required checks have been experienced, the process proceeds again to step 465 where a fault condition occurs. Otherwise, however, the process proceeds to step 470, where the batch operations required by the specified batch label instruction are performed.

第12A圖至第12C圖圖示可對批量標籤指令之使用設置之一些示例限制,特定言之第12A圖至第12C圖各者圖示可採取以在不同實施例中實施第11圖之步驟455的步驟。首先考慮第12A圖,於步驟500,識別由批量標籤指令所請求之批量操作。隨後,於步驟505判定處理器是否在預定之提升特權狀態中操作。預定之提升特權狀態可取決於實施例而採取各種形式,但考慮到例如虛擬機類型環境,該預定之提升特權狀態可係超管理器等級。若判定該處理器不在預定之提升特權狀態中操作,則該過程進行至步驟515,在步驟515中發生故障。步驟515對應於第11圖之步驟465。然而,若處理器處於預定之提升特權狀態,則於步驟510執行經受任何需要執行之額外檢查(諸如先前參考第11圖之步驟460所論述之檢查)的批量操作。Figures 12A-12C illustrate some example restrictions that may be placed on the use of batch label instructions, and in particular Figures 12A-12C each illustrate steps that may be taken to implement the steps of Figure 11 in different embodiments 455 steps. Considering first FIG. 12A, at step 500, the batch operation requested by the batch tag instruction is identified. Then, it is determined at step 505 whether the processor is operating in a predetermined elevated privilege state. The predetermined elevated privilege state may take various forms depending on the embodiment, but may be a hypervisor level considering, for example, a virtual machine type environment. If it is determined that the processor is not operating in a predetermined elevated privilege state, the process proceeds to step 515 where a fault occurs. Step 515 corresponds to step 465 in FIG. 11 . However, if the processor is in a predetermined elevated privilege state, the bulk operation is performed at step 510 subject to any additional checks that need to be performed, such as those previously discussed with reference to step 460 of FIG. 11 .

第12B圖圖示替代途徑,其中步驟520、530及535對應於第12A圖之步驟500、510及515,但其中測試505由測試525替代,並且特定言之判定是否已設定特權配置暫存器以允許執行所識別之批量操作。特權配置暫存器可例如係當在預定之特權狀態中操作時可由處理器設定的暫存器,並且由此其值僅可由在該預定之特權狀態中操作的處理器修改。假設配置暫存器之內容指示允許所識別之批量操作,則該過程進行至步驟530,而否則,於步驟535出現故障。Figure 12B illustrates an alternative approach, where steps 520, 530, and 535 correspond to steps 500, 510, and 515 of Figure 12A, but where test 505 is replaced by test 525, and specifically determines whether a privileged configuration register has been set to allow the identified bulk operation to be performed. A privileged configuration register may, for example, be a register that can be set by a processor when operating in a predetermined privileged state, and thus its value can only be modified by a processor operating in the predetermined privileged state. Assuming the contents of the configuration register indicate that the identified bulk operation is allowed, the process proceeds to step 530 , otherwise, a fault occurs at step 535 .

如先前提及,可對不同類型之批量標籤操作設置不同限制。因此,不同特權配置暫存器,或在特權配置暫存器中之不同欄位,可用於識別不同類型批量操作之許可。因此,例如,一個或更多個特權配置暫存器可識別允許該批量標籤查詢操作,但不允許該批量標籤修改操作。As mentioned earlier, different limits can be set for different types of bulk label operations. Therefore, different privilege configuration registers, or different fields in the privilege configuration registers, can be used to identify permissions for different types of bulk operations. Thus, for example, one or more privileged configuration registers may identify that the bulk tag query operation is allowed, but the bulk tag modification operation is not allowed.

第12C圖圖示另一替代途徑,其中定義批量操作能力。如先前提及,能力有效識別一組可用於處理器之權利,並且儘管大部分能力可採取先前所述之有界指針之形式,但是並非全部能力需要係有界指針。替代地,可定義僅關於特定功能性識別某些權利的能力。因此,可定義批量操作能力,其可例如維持在能力暫存器60之一中,並且規定為對批量標籤操作之輸入。因此,除規定先前論述之各種其他運算元之外,批量標籤指令可例如識別批量操作能力作為其運算元之一。在此類佈置中,在識別所請求之批量操作的步驟540之後,由批量標籤指令識別之批量操作能力係於步驟545從相關能力暫存器擷取,並隨後經分析以判定其內容。隨後,於步驟550,判定該批量操作能力是否允許執行所識別之批量操作。若允許,則該過程進行至步驟555,而否則,於步驟560產生故障。Figure 12C illustrates another alternative approach in which batch operation capabilities are defined. As previously mentioned, capabilities effectively identify a set of rights available to a processor, and while most capabilities can take the form of bounded pointers as previously described, not all capabilities need to be bounded pointers. Alternatively, the ability to identify certain rights only with respect to certain functionality may be defined. Thus, batch operation capabilities may be defined, which may be maintained, for example, in one of the capability registers 60, and specified as inputs to batch tag operations. Thus, in addition to specifying the various other operands discussed previously, a batch tag instruction may, for example, identify a batch operation capability as one of its operands. In such an arrangement, after step 540 of identifying the requested batch operation, the batch operation capability identified by the batch tag instruction is retrieved at step 545 from the associated capability register and then analyzed to determine its content. Then, at step 550, it is determined whether the batch operation capability allows execution of the identified batch operation. If so, the process proceeds to step 555, otherwise, a fault occurs at step 560.

批量操作能力可具有許可位元,該許可位元經設定以指示是否允許任何形式之批量標籤操作,或替代地可提供用於批量標籤修改及用於批量標籤查詢操作的不同許可位元。The bulk operation capability may have a permission bit set to indicate whether any form of bulk tag operation is allowed, or alternatively may provide different permission bits for bulk tag modification and for bulk tag query operations.

批量操作能力亦可識別可關於將對記憶體位置序列執行之批量標籤操作做檢查的範圍資訊,其中若該範圍資訊不符合,則於步驟560再次產生故障。然而,在一個實施例中,在批量操作能力中不需要此範圍資訊,並且替代地當採用先前參考第5A圖、第5B圖、第8A圖或第8B圖所論述之指令格式時,能力暫存器可用於識別記憶體位置序列之開始位址,並且該能力暫存器之範圍資訊可關於第11圖之後續步驟460之部分做檢查。The batch operation capability may also identify scope information that can be checked for batch tag operations to be performed on the sequence of memory locations, where if the scope information does not match, a fault is again generated at step 560 . However, in one embodiment, this range information is not required in the batch operation capability, and instead, when using the instruction format previously discussed with reference to Figure 5A, Figure 5B, Figure 8A, or Figure 8B, the capability is temporarily The register can be used to identify the starting address of the sequence of memory locations, and the range information of the capability register can be checked with respect to the portion of the subsequent step 460 of FIG. 11 .

如先前論述,例如參考第3圖,當能力在記憶體與能力暫存器之間移動時,標籤位元隨著能力移動以識別相關資料塊實際上係能力。然而,在一些實施方式中,可能必須將能力從記憶體儲存至備份儲存諸如磁碟中,例如歸因於用以將全部能力資訊保留在記憶體中的空間不足,或當支援休眠時。在一個實施例中,此涉及將各個能力分解為分開之資料與標籤部分,並且在備份儲存中將該標籤作為資料處理。此在第13圖中示意地圖示,其中按照先前參考第3圖描述之途徑,當能力在能力暫存器600與記憶體605之間移動時,則標籤位元615隨著各個資料塊610移動。因此,記憶體605中的各個資料塊可識別為表示能力或通用資料。當資料塊移動至備份儲存625時,則分解過程620用於將該能力分解為資料624及標籤資訊622,該標籤資訊被處理為資料。由此,在備份儲存中,該資訊僅作為資料持續,並且備份儲存係能力不感知性。As discussed previously, eg, with reference to Figure 3, as capabilities are moved between memory and the capability register, the tag bits move with the capabilities to identify that the associated data block is actually a capability. However, in some implementations it may be necessary to store capabilities from memory to backup storage such as disk, eg due to insufficient space to keep all capability information in memory, or when hibernation is supported. In one embodiment, this involves decomposing each capability into separate data and label parts, and handling the label as data in backup storage. This is schematically illustrated in Figure 13, where tag bits 615 follow each data block 610 as capabilities move between capability registers 600 and memory 605, following the approach previously described with reference to Figure 3. move. Thus, each data block in memory 605 can be identified as representing capability or general data. When the data block is moved to backup storage 625, then the decomposition process 620 is used to decompose the capability into data 624 and tag information 622, which is processed as data. Thus, in backup storage, the information persists only as data, and backup storage is capability insensitive.

當由儲存在備份儲存中之資料重建能力時,需要執行重建過程630,其可經限制以確保不折衷可經由使用能力獲得之安全性。如後文參考第15圖更詳細地論述,先前所述之批量標籤修改指令可用於此能力重建目的使用,並且彼等指令之使用可經由使用先前參考第11圖所論述之方法論限制(例如使用先前參考第12A圖至第12C圖所描述之技術來實施第11圖之步驟455)。假設在請求重建操作630時判定可執行重建操作,則能力可於步驟630重建並寫回至共享記憶體605中(如後文更詳細地論述,在一個實施例中,使用能力暫存器進行重建,隨後將該重建能力輸出至共享記憶體605中)。When rebuilding capabilities from data stored in backup storage, a rebuilding process 630 needs to be performed, which may be limited to ensure that the security that can be obtained by using capabilities is not compromised. As discussed in greater detail below with reference to FIG. 15, the batch label modification instructions previously described may be used for this capability rebuilding purpose, and the use of such instructions may be limited by using the methodologies previously discussed with reference to FIG. 11 (eg, using Step 455 of Figure 11) is implemented using the techniques previously described with reference to Figures 12A-12C. Assuming the rebuild operation is determined to be executable when the rebuild operation 630 is requested, the capability may be rebuilt at step 630 and written back to the shared memory 605 (as discussed in more detail below, in one embodiment, using a capability register rebuild and then export the rebuild capability into shared memory 605).

第14圖係圖示分解過程之流程圖,其中在第14圖之右手側中的示意圖進一步說明由流程圖所示之各個步驟執行之過程。Figure 14 is a flow chart illustrating the decomposition process, wherein the schematic diagram in the right hand side of Figure 14 further illustrates the process performed by the various steps shown in the flow chart.

於步驟650,執行批量標籤查詢指令以將多個儲存位置之標籤值聚集至通用暫存器中。因此,如第14圖之右手側所示,對於在記憶體位址空間665中之記憶體位置之連續序列,標籤位元可經存取並擷取,並隨後經整理以供儲存在通用暫存器670中。At step 650, a batch tag query command is executed to aggregate tag values from multiple storage locations into a general-purpose register. Thus, as shown on the right-hand side of FIG. 14, for a contiguous sequence of memory locations in memory address space 665, the tag bits can be accessed and retrieved, and then sorted for storage in the general temporary storage in device 670.

隨後,於步驟655,將該通用暫存器670之內容寫出至備份儲存675。於此刻,備份儲存威脅僅作為通用資料之資料並且係能力不感知性的。Then, in step 655 , the contents of the general purpose register 670 are written out to the backup storage 675 . At this moment, the backup storage threat is only for general data and is capability-agnostic.

於步驟660,標準寫入操作隨後用於將在記憶體位置序列(其相關標籤位元於步驟650經受批量標籤查詢操作)中之各個資料塊寫出至備份儲存675。在一個實施例中,該實施方式將涉及將彼等資料塊從記憶體位址空間載入暫存器中,並隨後從暫存器將其等寫出至備份儲存。At step 660, a standard write operation is then used to write out to backup storage 675 each block of data in the sequence of memory locations whose associated tag bits were subjected to a bulk tag lookup operation at step 650. In one embodiment, the implementation would involve loading blocks of data from memory address space into a scratchpad, and then writing them out from scratchpad to backup storage.

第15圖係根據一個實施例的圖示第13圖之重建操作630的流程圖。如第14圖,在第15圖之右手側的示意圖說明於第15圖之各步驟執行之操作。於步驟700,一系列載入操作用於將多個資料塊從備份儲存720載入到能力暫存器725中之對應的多組能力暫存器中,其中與彼等能力暫存器相關之標籤位元經清除至邏輯0值以識別該資料塊當前不表示能力。FIG. 15 is a flowchart illustrating the rebuild operation 630 of FIG. 13, according to one embodiment. As in FIG. 14, the schematic diagram on the right-hand side of FIG. 15 illustrates the operations performed in each step of FIG. 15. FIG. At step 700, a series of load operations are used to load a plurality of data blocks from backup storage 720 into corresponding sets of capability registers in capability registers 725, wherein the corresponding capability registers are associated with each other. The tag bit is cleared to a logic 0 value to identify that the data block does not currently represent a capability.

隨後於步驟705,載入操作用於將表示多個標籤值(特定言之與載入能力暫存器725中之資料塊各者相關的標籤值)之資料從備份儲存720載入通用暫存器730中。Then at step 705, a load operation is used to load data representing a plurality of tag values (in particular tag values associated with each of the data blocks in the load capability register 725) from the backup store 720 into the general temporary store in device 730.

隨後,於步驟710,例如藉由執行先前參考第8C圖所論述之批量標籤修改指令,來執行批量標籤修改過程,其中所識別之能力暫存器係來自該組能力暫存器725之相關能力暫存器。該指令亦將通用暫存器730識別為含有在批量標籤修改操作期間使用之修改資料。按照第11圖之先前論述,在執行步驟710期間可執行一或更多個檢查以檢查允許進行所識別之批量標籤修改操作。然而,假設經過彼等檢查,則於步驟710執行批量標籤修改操作將導致取決於保持在通用暫存器730中之資料來修改與相關能力暫存器725各者相關之標籤值。此可導致將多個資料塊識別為能力(在一個實施例中,全部資料塊可將其標籤位元設定用以識別其等係能力)。由此,在執行步驟710期間,根據已從備份儲存720擷取之資訊有效地重新生成能力。隨後,於步驟715,能力暫存器內容以及其相關標籤位元可移動至記憶體位址空間735。Then, at step 710, a batch label modification process is performed, such as by executing the batch label modification instruction previously discussed with reference to FIG. 8C, wherein the identified capability register is the associated capability from the set of capability registers 725 scratchpad. The instruction also identifies the general purpose register 730 as containing modification data used during batch tag modification operations. As discussed previously with respect to FIG. 11, one or more checks may be performed during execution of step 710 to check that the identified bulk label modification operations are permitted. However, assuming they are checked, performing the bulk tag modification operation at step 710 will result in modification of tag values associated with each of the associated capability registers 725 depending on the data held in the general register 730. This may result in multiple data blocks being identified as capabilities (in one embodiment, all data blocks may have their tag bits set to identify their equivalent capabilities). Thus, during execution of step 710, capabilities are effectively regenerated based on information that has been retrieved from backup storage 720. Then, at step 715 , the capability register contents and its associated tag bits may be moved to memory address space 735 .

儘管在參考第15圖所論述之實施例中,用於更新標籤之修改資料首先儲存至通用暫存器730中,但是在替代實施例中,批量標籤修改操作可經修改使得可將標籤值從記憶體直接載入相關能力暫存器標籤位置中。以相似方式,可提供操作以將能力標籤資訊作為通用資料塊從能力暫存器直接儲存至記憶體中(不使用中間通用暫存器)。Although in the embodiment discussed with reference to FIG. 15, the modification data used to update the tags is first stored in the general register 730, in alternate embodiments, the batch tag modification operation may be modified such that tag values may be changed from The memory is loaded directly into the relevant capability register tag location. In a similar fashion, operations may be provided to store capability tag information directly into memory as generic data blocks from the capability register (without using an intermediate generic register).

第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電路發佈之請求將伴隨著更新記憶體中之標籤位元所需要之必須修改資料,並且該回應將採取來自記憶體系統之確認信號形式以確認已執行該修改。Figure 16 illustrates an alternative embodiment in which instead of having the processor core execute bulk tag instructions to perform bulk tag query or bulk tag modification operations, the processor core is enabled to offload this task to the associated DMA circuitry. Specifically, as shown in FIG. 16, processor pipeline 750 is connected to one or more stages of cache memory 760 via memory management unit 755, and then to memory 770 via interconnect 765. The MMU 755 may incorporate the TLB structure 52 previously discussed with reference to FIG. 1, and thereby translate virtual addresses issued by the processor pipeline to physical addresses forwarded onto the cache/memory system. According to this embodiment, when the processor pipeline desires to perform a bulk tag query or modification operation, it can issue the appropriate request to the DMA circuitry 775 via the dotted path 780, providing sufficient information to enable the DMA circuitry to identify the required The operation type and its tag bits are subject to a sequence of memory addresses for bulk tag operations. The DMA circuitry then issues a sequence of transactions 780 via interconnect 765 to memory system 770 to perform bulk tag query or modification operations. Each transaction will involve issuing a request from DMA circuitry to memory, and at least one reply from memory 770 back to DMA circuitry 775 . For batch label query operations, the response can incorporate the queried label information. For bulk tag modification operations, the request issued by the DMA circuit will be accompanied by the necessary modification data needed to update the tag bits in memory, and the response will take the form of an acknowledgment signal from the memory system confirming that the modification has been performed.

根據此實施例,該批量標籤查詢/修改操作於匯流排協定等級表達,使得匯流排主元件如DMA電路775能夠代表處理器管線750執行此操作。According to this embodiment, the bulk tag query/modify operation is expressed at the bus protocol level, enabling a bus master such as DMA circuit 775 to perform this operation on behalf of processor pipeline 750 .

第17圖圖示可使用之虛擬機實施方式。儘管先前描述之實施例根據用於操作支援相關技術之特定處理硬體的設備及方法來實施本技術,但亦有可能提供硬體元件的所謂虛擬機實施方式。此等虛擬機實施方式在主處理器830上運行,該主處理器通常運行支援虛擬機程式810的主作業系統820。通常,需要大型高效處理器以提供按合理速度執行的虛擬機實施方式,但此途徑在某些環境中可為合理的,諸如當需要運行用於相容性之另一處理器本端代碼時,或出於再使用之原因。虛擬機程式810向訪客程式800提供虛擬硬體介面,該介面與由實際硬體提供的硬體介面相同,該實際硬體係藉由虛擬機程式810模型化的元件。因此,程式指令(包括上述批量標籤/批量能力元資料指令)可藉由使用虛擬機程式810而在訪客程式800中執行,以模型化該等指令與虛擬機硬體的相互作用。訪客程式800可係裸金屬程式,或替代地其可係以與主OS 820如何運行虛擬機應用810相似之方式運行應用的訪客作業系統。亦應瞭解存在不同類型之虛擬機,並且在一些類型中,該虛擬機直接在主硬體830上運行而不需要主OS 820。Figure 17 illustrates a virtual machine implementation that may be used. While the previously described embodiments implement the technology in terms of apparatus and methods for operating specific processing hardware supporting the related art, it is also possible to provide so-called virtual machine implementations of hardware components. These virtual machine implementations run on a host processor 830 , which typically runs a host operating system 820 that supports virtual machine programs 810 . In general, a large, efficient processor is required to provide a virtual machine implementation that executes at reasonable speed, but this approach may be reasonable in certain environments, such as when another processor-native code needs to be run for compatibility , or for reuse reasons. The virtual machine program 810 provides the guest program 800 with a virtual hardware interface that is the same as the hardware interface provided by the actual hardware through the components modeled by the virtual machine program 810 . Thus, program instructions, including the batch tag/batch capability metadata instructions described above, may be executed in guest program 800 using virtual machine program 810 to model the interaction of the instructions with the virtual machine hardware. Guest program 800 may be a bare metal program, or alternatively it may be a guest operating system that runs applications in a similar manner to how main OS 820 runs virtual machine applications 810 . It should also be understood that there are different types of virtual machines, and in some types, the virtual machine runs directly on the host hardware 830 without the host OS 820.

從上文所述之實施例,應瞭解此等實施例賦能對能力元資料(諸如,能力架構中之標籤位元)的更佳存取。所述操作可用於各種情況,例如當將記憶體從備份儲存調頁至加標籤的記憶體位置或從彼等加標籤的記憶體位置調頁至備份儲存時,或當跨缺乏固有能力支援之網路移動虛擬機時。所述實施例設置可執行以允許批量查詢或操縱一定範圍之能力位置的數個指令。描述兩個不同群組的指令,一個群組將操作批量施加至能力記憶體位置,而另一個群組將操作批量施加至能力暫存器位置。From the embodiments described above, it should be appreciated that these embodiments enable better access to capability metadata, such as tag bits in the capability schema. The described operations can be used in a variety of situations, such as when paging memory from backup storage to tagged memory locations or from those tagged memory locations to backup storage, or when paging across storage systems that lack inherent capability support. When moving a virtual machine over the network. The described embodiments provide several instructions executable to allow batch query or manipulation of a range of capability locations. Describes two different groups of instructions, one group that batches operations to capability memory locations and the other that batches operations to capability register locations.

在本申請案中,詞語「經配置以…」用以意謂設備元件具有能夠進行所定義之操作的配置。在此語境中,「配置」意謂硬體或軟體之互連佈置或方式。例如,設備可具有提供定義之操作的專用硬體,或處理器或其他處理元件可經程式化以執行該功能。「經配置以」不暗示該設備元件需要以任何方式改變以提供定義之操作。In this application, the term "configured to..." is used to mean that an element of equipment has a configuration capable of performing the defined operation. In this context, "configuration" means the interconnection arrangement or manner of hardware or software. For example, a device may have dedicated hardware that provides the defined operation, or a processor or other processing element may be programmed to perform the function. "Configured to" does not imply that the device element needs to be changed in any way to provide defined operation.

儘管已在本文中參考隨附圖式詳細描述了說明性實施例,但應理解,本發明不限於彼等精確實施例,且熟習此項技術者可在本發明中實現各種變化、添加及修改,而不偏離由隨附申請專利範圍定義的本發明之範疇及精神。例如,附屬項之特徵可與獨立項之特徵進行各種組合,而不脫離本發明之範疇。Although illustrative embodiments have been described in detail herein with reference to the accompanying drawings, it is to be understood that the invention is not limited to those precise embodiments and that various changes, additions and modifications may be effected in the invention by those skilled in the art , without departing from the scope and spirit of the invention as defined by the appended claims. For example, the features of the dependent item may be combined with the features of the independent item in various combinations without departing from the scope of the present invention.

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‧‧‧資料RAM255‧‧‧快取記憶體線260‧‧‧資料RAM265‧‧‧快取記憶體線270‧‧‧最後部分300‧‧‧指令CQueryTagsR305‧‧‧欄位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‧‧‧主處理器2‧‧‧Data processing equipment 4‧‧‧Processing pipeline 6‧‧‧Capture stage 8‧‧‧Decoding stage 10‧‧‧Publish stage 12‧‧‧Execution stage 14‧‧‧Write back stage 20‧‧‧1 Level Instruction Cache 22‧‧‧Branch Predictor 24‧‧‧Branch Target Location Cache 30‧‧‧Execution Unit 32‧‧‧Execution Unit 34‧‧‧Execution Unit 36‧‧‧Level 1 Data Cache Fetch Memory 40‧‧‧Register 44‧‧‧Level 2 Cache 50‧‧‧Main Memory 52‧‧‧Translation Lookaside Buffer 60‧‧‧Bounded Pointer Register 62‧‧‧Pointer Value 64‧‧‧Range Information 66‧‧‧Limit Information 68‧‧‧Boundary 69‧‧‧Boundary 80‧‧‧Program Counter Capability Register 82‧‧‧Field 84‧‧‧Range Information 86‧‧‧Limit Information 90‧‧‧Component Digital 100‧‧‧Capability Register 102‧‧‧Pointer 104‧‧‧Range Information 106‧‧‧Restriction Information 108‧‧‧Label Bit 110‧‧‧Memory Address Space 115‧‧ ‧Data Block 120‧‧‧Label Field 150‧‧‧Capability 155‧‧‧Capability Metadata 160‧‧‧Pointer Value 165‧‧‧Scope Information 170‧‧‧Permission Attribute 200‧‧‧Directive 205‧‧Operation Code Field 210‧‧‧Field 215‧‧‧Field 220‧‧‧Field 225‧‧‧Command 230‧‧‧Operation Code 235‧‧‧Field 240‧‧‧Field 250‧‧‧Data RAM255 ‧‧‧Cache Line 260‧‧‧Data RAM265‧‧‧Cache Line 270‧‧‧Last Part 300‧‧‧Command CQueryTagsR305‧‧‧Field 310‧‧‧Field 315‧‧‧Field Bit 320‧‧‧Mask Value 325‧‧‧Register File Identifier 330‧‧‧First Subfield 335‧‧‧Second Subfield 340‧‧‧Other Fields 350‧‧‧CModTagsM Command 355 ‧‧‧Operation Code 360‧‧‧Field 365‧‧‧Field 370‧‧‧Field 375‧‧‧DC_CModTagsM Command 380‧‧‧Operation Code 385‧‧‧Field 390‧‧‧Field 400‧‧ ‧CModTagsR Command 405‧‧‧Operation Code 410‧‧‧Field 415‧‧‧Field 420‧‧‧Register 425‧‧‧Bit 430‧‧‧General Register 435‧‧‧Bit 450‧ ‧‧STEP 455‧‧‧STEP 460‧‧‧STEP 465‧‧‧STEP 470‧‧‧STEP 500‧‧‧STEP 505‧‧‧STEP 510‧‧‧STEP 515‧‧‧STEP 520‧‧‧STEP 525‧ ‧‧Test 530‧‧‧Step 535‧‧‧Step 540‧‧‧Step 545‧‧‧Step 550‧‧‧Step 555‧‧‧Step 560‧‧‧Step 600‧‧‧Capability Register 605‧‧‧ Memory 610‧‧‧Data Block 615‧‧‧Label Bit 620‧‧‧ Decomposition Process 622‧‧‧Label Information 624‧‧‧Data 625‧‧‧Backup Storage 630‧‧‧Rebuilding Process 650‧‧‧Step 655‧‧‧Step 660‧‧‧Step 665‧‧‧Memory Address Space 670‧ ‧‧General Register 675‧‧‧Backup Storage 700‧‧‧Step 705‧‧‧Step 710‧‧‧Step 715‧‧‧Step 720‧‧‧Backup Storage 725‧‧‧Capability Register 730‧‧‧ General Purpose Register 735‧‧‧Memory Address Space 750‧‧‧Processor Pipeline 755‧‧‧Memory Management Unit 760‧‧‧Cache Memory 765‧‧‧Interconnect 770‧‧‧Memory 775‧ ‧‧DMA Circuitry 780‧‧‧Dot-Line Path 800‧‧‧Guest 810‧‧‧Virtual Machine 820‧‧‧Main Operating System 830‧‧‧Main Processor

本技術將僅以舉例方式參考如在附圖中圖示之本揭露的實施例進一步描述,其中:The present technology will be further described, by way of example only, with reference to the embodiments of the present disclosure as illustrated in the accompanying drawings, wherein:

第1圖係根據一個實施例之設備之方塊圖;Figure 1 is a block diagram of an apparatus according to one embodiment;

第2圖圖示指令類型之實例,針對該類型指令,若嘗試在該組有界指針儲存元件中設定或存取指針值,則可觸發錯誤,其中該指針值用於規定在由相關範圍資訊指示之範圍外的位址;Figure 2 illustrates an example of the type of instruction for which an attempt to set or access a pointer value in the set of bounded pointer storage elements, where the pointer value is used to specify the range information specified in the set of bounded pointer storage elements, can trigger an error address outside the indicated range;

第3圖圖示根據一個實施例的與有界指針相關聯之標籤位元之使用;Figure 3 illustrates the use of tag bits associated with bounded pointers, according to one embodiment;

第4圖示意地圖示根據一個實施例的在採取有界指針形式之能力中提供的各種欄位以及相關能力元資料資訊;Figure 4 schematically illustrates various fields and related capability metadata information provided in capabilities in the form of bounded pointers, according to one embodiment;

第5A圖及第5B圖圖示在兩個不同指令中提供之欄位,該等欄位可根據一個實施例提供以對記憶體中之儲存元件執行批量標籤查詢操作;Figures 5A and 5B illustrate fields provided in two different instructions that may be provided in accordance with one embodiment to perform bulk tag lookup operations on storage elements in memory;

第6A圖及第6B圖圖示根據兩個不同實施例可如何將標籤位元(能力元資料之實例)與各個資料塊相關聯地儲存在快取記憶體之快取記憶體線中;Figures 6A and 6B illustrate how tag bits (an example of capability metadata) may be stored in a cache line of cache in association with each data block, according to two different embodiments;

第7圖示意地圖示根據一個實施例的在用以對在該設備中採取能力暫存器形式之儲存元件執行批量標籤查詢操作的指令中提供之欄位;Figure 7 schematically illustrates fields provided in an instruction to perform a bulk tag query operation on storage elements in the form of capability registers in the device, according to one embodiment;

第8A圖及第8B圖圖示在兩種不同形式之指令中提供之欄位,該等欄位可根據一個實施例用以對在記憶體中採取記憶體位置形式之儲存元件執行批量標籤修改操作,而第8C圖圖示提供在指令中之欄位,該等欄位可根據一個實施例用以對呈能力暫存器形式之儲存元件執行批量標籤修改操作;Figures 8A and 8B illustrate fields provided in two different forms of instructions that may be used, according to one embodiment, to perform bulk tag modification on storage elements in memory that take the form of memory locations operation, and Figure 8C illustrates the fields provided in the instruction that may be used, according to one embodiment, to perform bulk tag modification operations on storage elements in the form of capability registers;

第9A圖及第9B圖圖示根據一個實施例的不同方式,其中通用暫存器可經填充以保持藉由執行批量標籤查詢操作獲得的經查詢標籤值或在批量標籤修改操作期間應用之標籤值之指示;Figures 9A and 9B illustrate different ways in which a general purpose register may be populated to hold queried tag values obtained by performing bulk tag query operations or tags applied during bulk tag modification operations, according to one embodiment an indication of the value;

第10圖示意地圖示根據一個實施例的在執行批量標籤修改操作期間可如何解釋在諸如第9A圖所圖示之通用暫存器內之資訊的四個實例;Figure 10 schematically illustrates four examples of how information within a general purpose register such as that illustrated in Figure 9A may be interpreted during the execution of a bulk tag modification operation, according to one embodiment;

第11圖係根據一個實施例圖示的在一個實施例中可由處理電路系統執行以判定是否允許進行由批量標籤指令規定之批量標籤操作之過程的流程圖;FIG. 11 is a flow diagram illustrating a process, in one embodiment, executable by processing circuitry to determine whether a batch tag operation specified by a batch tag instruction is permitted, according to one embodiment;

第12A圖至第12C圖係根據一個實施例的圖示可執行以實施第11圖之步驟455的步驟之流程圖;FIGS. 12A-12C are flowcharts illustrating steps that may be executed to implement step 455 of FIG. 11 according to one embodiment;

第13圖示意地圖示根據一個實施例的關於在能力感知性儲存元件與能力不感知性備份儲存之間傳遞之能力的分解過程及重建過程;Figure 13 schematically illustrates a decomposition process and a rebuild process with respect to capabilities transferred between capability-aware storage elements and capability-agnostic backup storage, according to one embodiment;

第14圖係根據一個實施例的示意地圖示第13圖之分解過程的流程圖;FIG. 14 is a flow diagram schematically illustrating the decomposition process of FIG. 13, according to one embodiment;

第15圖係根據一個實施例的示意地圖示第13圖之能力重建過程的流程圖;FIG. 15 is a flow diagram schematically illustrating the capability rebuilding process of FIG. 13, according to one embodiment;

第16圖係根據替代實施例之設備,其中處理器管線將批量標籤查詢或修改操作卸載至DMA電路系統,導致DMA電路系統經由一系列事務實施該批量標籤查詢或修改操作;以及FIG. 16 is an apparatus according to an alternative embodiment, wherein the processor pipeline offloads bulk tag query or modification operations to DMA circuitry, causing the DMA circuitry to perform the bulk tag query or modification operations via a series of transactions; and

第17圖示意地圖示根據一個實施例的設備之虛擬機實施方式。Figure 17 schematically illustrates a virtual machine implementation of a device according to one embodiment.

國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無Domestic storage information (please note in the order of storage institution, date and number) None

國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無Foreign deposit information (please note in the order of deposit country, institution, date and number) None

(請換頁單獨記載) 無(Please change the page and record it separately) None

150‧‧‧能力 150‧‧‧Ability

155‧‧‧能力元資料 155‧‧‧Ability Metadata

160‧‧‧指針值 160‧‧‧Pointer value

165‧‧‧範圍資訊 165‧‧‧Scope Information

170‧‧‧許可屬性 170‧‧‧License Properties

Claims (27)

一種對能力元資料執行操作之設備,包含:儲存元件,用以儲存資料塊,各個資料塊具有與其相關之能力元資料以識別該資料塊是否規定一能力,至少一種能力類型係一有界指針;以及處理電路系統,回應於識別複數個該等儲存元件的一批量能力元資料操作,以對與儲存在該複數個儲存元件中之各個資料塊相關之該能力元資料執行一操作,其中該批量能力元資料操作是以下操作中的一者:一批量查詢操作,且該處理電路系統回應於該批量查詢操作以獲得與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料,並且用以產生含有該所獲得之能力元資料之輸出資料,及一批量修改操作,且該處理電路系統回應於該批量修改操作以取決於針對該批量修改操作規定之修改資料來修改與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料。 A device for performing operations on capability metadata, comprising: a storage element for storing data blocks, each data block has capability metadata associated with it to identify whether the data block specifies a capability, and at least one capability type is a bounded pointer ; and processing circuitry responsive to identifying a bulk capability metadata operation for a plurality of the storage elements to perform an operation on the capability metadata associated with each block of data stored in the plurality of storage elements, wherein the The batch capability metadata operation is one of: a batch query operation, and the processing circuitry responds to the batch query operation to obtain the capability associated with each data block stored in the plurality of the storage elements metadata, and used to generate output data containing the obtained capability metadata, and a batch modification operation, and the processing circuitry is responsive to the batch modification operation to modify depending on the modification data specified for the batch modification operation the capability metadata associated with each data block stored in the plurality of the storage elements. 如請求項1所述之設備,其中該批量修改操作使得設定與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料以識別各個資料塊規定一能力。 The apparatus of claim 1, wherein the bulk modify operation results in setting the capability metadata associated with each data block stored in the plurality of the storage elements to identify each data block specifying a capability. 如請求項1所述之設備,其中該批量修改操作使得清除與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料以識別各個資料塊規定除一能力外之資料。 The apparatus of claim 1, wherein the bulk modify operation results in clearing the capability metadata associated with each data block stored in the plurality of the storage elements to identify each data block specifying data other than a capability. 如請求項1所述之設備,其中對於將由該批量修改操作存取之各個能力元資料,該修改資料識別關於該能力元資料執行之該修改。 The apparatus of claim 1, wherein for each capability metadata to be accessed by the bulk modification operation, the modification data identifies the modification performed with respect to the capability metadata. 如請求項4所述之設備,其中該修改資料提供用於由該批量修改操作存取之各個能力元資料的一修改值,該值識別至少兩個下列修改之一:(i)設定該能力元資料以識別該相關資料塊規定一能力;(ii)清除該能力元資料以識別該相關資料塊規定除一能力外之資料;以及(iii)保持該能力元資料不變。 The apparatus of claim 4, wherein the modification data provides a modification value for each capability metadata accessed by the bulk modification operation, the value identifying at least one of two of the following modifications: (i) setting the capability metadata to identify the associated data block specifying a capability; (ii) clear the capability metadata to identify the associated data block specifying data other than a capability; and (iii) leave the capability metadata unchanged. 如請求項1所述之設備,其中該處理電路系統經佈置以執行滿足一條件之該批量能力元資料操作。 The apparatus of claim 1, wherein the processing circuitry is arranged to perform the batch capability metadata operation satisfying a condition. 如請求項6所述之設備,其中若下列條件之至少一個為真,則判定滿足該條件:(i)該處理電路系統係在一預定之特權狀態下操作; (ii)當該處理電路系統在一預定之特權狀態下操作時可設定之一配置儲存元件具有指示允許該批量能力元資料操作的一值;(iii)規定該批量能力元資料操作之一請求識別一批量操作能力,且該批量操作能力指示允許該批量能力元資料操作。 The apparatus of claim 6, wherein the condition is determined to be satisfied if at least one of the following conditions is true: (i) the processing circuitry operates in a predetermined privileged state; (ii) a configuration storage element may be set to have a value indicating that the batch capability metadata operation is permitted when the processing circuitry operates in a predetermined privileged state; (iii) a request for specifying the batch capability metadata operation A bulk operation capability is identified, and the bulk operation capability indicates that the bulk capability metadata operation is allowed. 如請求項1所述之設備,其中該等儲存元件係記憶體位置。 The apparatus of claim 1, wherein the storage elements are memory locations. 如請求項8所述之設備,其中該複數個記憶體位置係參考一有界指針規定,且該處理電路系統經佈置以當判定該複數個記憶體位置常駐於由該有界指針識別之一容許位址範圍中時執行該批量能力元資料操作。 8. The apparatus of claim 8, wherein the plurality of memory locations are defined with reference to a bounded pointer, and the processing circuitry is arranged to, when determining that the plurality of memory locations reside in the one identified by the bounded pointer Perform this bulk capability metadata operation when the allowable address range is within the range. 如請求項1所述之設備,其中該等儲存元件係可由該處理電路系統存取之能力暫存器。 The apparatus of claim 1, wherein the storage elements are capability registers accessible by the processing circuitry. 如請求項1所述之設備,進一步包含:解碼電路系統,回應於一指令序列以產生控制信號,用於發佈至該處理電路系統以使該處理電路系統執行該指令序列所需之操作;該解碼電路系統回應於接收到一批量能力元資料指令產生控制信號,該等控制信號用於發佈至該處理電路系統以使該處理電路系統執行該批量能力元資料指 令所需之該批量能力元資料操作。 The apparatus of claim 1, further comprising: decoding circuitry responsive to an instruction sequence to generate control signals for issuing to the processing circuitry to cause the processing circuitry to perform operations required by the instruction sequence; the Decoding circuitry generates control signals in response to receiving a batch capability metadata instruction, the control signals for issuing to the processing circuitry to cause the processing circuitry to execute the batch capability metadata instruction Make the required batch capability metadata operations. 如請求項11所述之設備,其中該等儲存元件係記憶體位置且該批量能力元資料指令規定一暫存器,該暫存器提供識別其相關能力元資料將經受該批量能力元資料操作之一連續系列的記憶體位置的一位址。 The apparatus of claim 11, wherein the storage elements are memory locations and the batch capability metadata instruction specifies a register that provides identification that its associated capability metadata is subject to the batch capability metadata operation An address of a contiguous series of memory locations. 如請求項12所述之設備,其中該批量能力元資料指令包括識別在該等連續系列中之記憶體位置的一數量的一欄位。 The apparatus of claim 12, wherein the batch capability metadata instruction includes a field identifying a number of memory locations in the consecutive series. 如請求項13所述之設備,其中該欄位提供對含有指示在該等連續系列中記憶體位置之該數量之一值的一暫存器的一參考與指示在該等連續系列中記憶體位置之該數量的一立即值之一。 The apparatus of claim 13, wherein the field provides a reference to a register containing a value indicating the number of memory locations in the successive series and indicates the memory in the successive series One of an immediate value of this quantity of positions. 如請求項12所述之設備,其中在該等連續系列中記憶體位置之一數量由該設備之一性質暗示。 The apparatus of claim 12, wherein a number of memory locations in the consecutive series is implied by a property of the apparatus. 如請求項15所述之設備,其中該性質係可由該處理電路系統存取之一快取記憶體之一快取記憶體線長度。 The apparatus of claim 15, wherein the property is a cache line length of a cache accessible by the processing circuitry. 如請求項11所述之設備,其中該等儲存元件係能力暫存器,且該批量能力元資料指令包括識別其相關能力元資料將經受該批量能力元資料操作之該等能力暫存器的一暫存器識別符欄位,該暫存器識別 符欄位提供一立即值與一暫存器識別符之至少一個以識別該等能力暫存器。 The apparatus of claim 11, wherein the storage elements are capability registers, and the bulk capability metadata instruction includes identification of the capability registers whose associated capability metadata is subject to the bulk capability metadata operation A register identifier field that identifies the register The identifier field provides at least one of an immediate value and a register identifier to identify the capability registers. 如請求項17所述之設備,其中該暫存器識別符欄位提供下列之一:一掩碼值,用以識別該等能力暫存器;一基底識別符及一計數值,組合使用以識別該等能力暫存器。 The apparatus of claim 17, wherein the register identifier field provides one of the following: a mask value to identify the capability registers; a base identifier and a count value used in combination to Identify these capability registers. 如請求項1所述之設備,進一步包含:解碼電路系統,回應於一指令序列以產生控制信號,該等控制信號用於發佈至該處理電路系統以使該處理電路系統執行該指令序列所需之操作;該解碼電路系統,回應於接收到一批量能力元資料指令以產生控制信號,該等控制信號用於發佈至該處理電路系統以導致該處理電路系統執行該批量能力元資料指令所需之該批量能力元資料操作,其中:該批量能力元資料指令係一批量查詢指令,且該處理電路系統經佈置以回應於當解碼該批量查詢指令時由該解碼電路系統產生之該等控制信號執行一批量查詢操作;該批量查詢指令識別一目的暫存器,且該處理電路系統回應於該批量查詢操作以獲得與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料, 並且用以產生含有用於儲存在該目的暫存器中之該所獲得之能力元資料的輸出資料。 The apparatus of claim 1, further comprising: decoding circuitry responsive to a sequence of instructions to generate control signals for issuing to the processing circuitry necessary to cause the processing circuitry to execute the sequence of instructions operation; the decoding circuitry, in response to receiving a batch capability metadata command, generates control signals for issuing to the processing circuitry necessary to cause the processing circuitry to execute the batch capability metadata command the batch capability metadata operation, wherein: the batch capability metadata instruction is a batch query command, and the processing circuitry is arranged to respond to the control signals generated by the decoding circuitry when decoding the batch query command performing a batch query operation; the batch query command identifies a destination register, and the processing circuitry responds to the batch query operation to obtain the capability element associated with each data block stored in the plurality of the storage elements material, and used to generate output data containing the acquired capability metadata for storage in the destination register. 如請求項1所述之設備,進一步包含:解碼電路系統,回應於一指令序列以產生控制信號,該等控制信號用於發佈至該處理電路系統以使該處理電路系統以執行該指令序列所需之操作;該解碼電路系統,回應於接收一批量能力元資料指令以產生控制信號,該等控制信號用於發佈至該處理電路系統以使該處理電路系統執行該批量能力元資料指令所需之該批量能力元資料操作,其中:該批量能力元資料指令係一批量修改指令,且該處理電路系統經佈置以回應於當解碼該批量修改指令時由該解碼電路系統產生之該等控制信號執行一批量修改操作;該批量修改指令識別了用於識別修改資料之一源欄位,且該處理電路系統回應於該批量修改操作以取決於由該源欄位識別之該修改資料來修改與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料。 The apparatus of claim 1, further comprising: decoding circuitry responsive to a sequence of instructions to generate control signals for issuing to the processing circuitry to cause the processing circuitry to execute the sequence of instructions required operations; the decoding circuitry, in response to receiving a batch capability metadata command, generates control signals for issuing to the processing circuitry required for the processing circuitry to execute the batch capability metadata command the bulk capability metadata operation, wherein: the bulk capability metadata instruction is a bulk modification instruction and the processing circuitry is arranged to respond to the control signals generated by the decoding circuitry when decoding the bulk modification instruction performing a bulk modification operation; the bulk modification instruction identifies a source field for identifying modification data, and the processing circuitry is responsive to the bulk modification operation to modify and modify data dependent upon the modification data identified by the source field the capability metadata associated with each data block stored in the plurality of the storage elements. 如請求項20所述之設備,其中該源欄位提供一立即值與一暫存器識別符之至少一個以識別該修改資料。 The apparatus of claim 20, wherein the source field provides at least one of an immediate value and a register identifier to identify the modified data. 如請求項1所述之設備,其中該處理電路系統經佈置以作為該批量能力元資料操作執行一批量查詢操作,以獲得與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料,該處理電路系統經進一步佈置以輸出含有用於儲存在一能力不感知性儲存元件中的該所獲得之能力元資料的資料。 The apparatus of claim 1, wherein the processing circuitry is arranged to perform a bulk query operation as the bulk capability metadata operation to obtain the data associated with each data block stored in the plurality of the storage elements capability metadata, the processing circuitry is further arranged to output data containing the acquired capability metadata for storage in a capability agnostic storage element. 如請求項1所述之設備,其中該處理電路系統經佈置以作為該批量能力元資料操作執行一批量修改操作,以取決於由一能力不感知性儲存元件獲得之修改資料來修改與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料。 2. The apparatus of claim 1, wherein the processing circuitry is arranged to perform a bulk modification operation as the bulk capability metadata operation to modify and store in dependent modification data obtained from a capability agnostic storage element The capability metadata associated with each data block in the plurality of the storage elements. 如請求項1所述之設備,其中:該處理電路系統係一直接記憶體存取(DMA)電路;以及該批量能力元資料操作由一處理器核心規定,並且導致DMA電路發佈一或更多個事務以對-連續系列的記憶體位置實施該批量能力元資料操作。 The apparatus of claim 1, wherein: the processing circuitry is a direct memory access (DMA) circuit; and the batch capability metadata operation is specified by a processor core and causes the DMA circuit to issue one or more A transaction performs the batch-capable metadata operation on a pair-sequential series of memory locations. 一種對能力元資料執行操作之方法,包含以下步驟:將資料塊儲存在儲存元件中,各個資料塊具有識別該資料塊是否規定一能力的與其相關之能力元資料,至少一個能力類型係一有界指針;以及 回應於識別複數個該等儲存元件的批量能力元資料操作,使處理電路系統對與儲存在該複數個儲存元件中之各個資料塊相關的該能力元資料執行一操作,其中該批量能力元資料操作是以下操作中的一者:一批量查詢操作,其中該處理電路系統回應於該批量查詢操作以獲得與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料,並且用以產生含有該所獲得之能力元資料之輸出資料,及一批量修改操作,其中該處理電路系統回應於該批量修改操作以取決於針對該批量修改操作規定之修改資料來修改與儲存在該複數個該等儲存元件中之各個資料塊相關之該能力元資料。 A method of performing operations on capability metadata, comprising the steps of: storing data blocks in a storage element, each data block having capability metadata associated therewith identifying whether the data block specifies a capability, at least one capability type having a bounds pointer; and in response to a batch capability metadata operation identifying a plurality of the storage elements, causing processing circuitry to perform an operation on the capability metadata associated with each block of data stored in the plurality of storage elements, wherein the batch capability metadata The operation is one of: a bulk query operation, wherein the processing circuitry responds to the bulk query operation to obtain the capability metadata associated with each data block stored in the plurality of the storage elements, and to generate output data containing the obtained capability metadata, and a bulk modification operation, wherein the processing circuitry is responsive to the bulk modification operation to modify and store in the bulk modification operation dependent modification data specified for the bulk modification operation the capability metadata associated with each data block in the plurality of the storage elements. 一種對能力元資料執行操作之設備,包含:儲存元件構件,用於儲存資料塊,各個資料塊具有識別該資料塊是否規定一能力的與其相關之能力元資料,至少一個能力類型係一有界指針;以及處理構件,用於回應於識別複數個該儲存元件構件之一批量能力元資料操作對與儲存在該複數個儲存元件構件中之各個資料塊相關之該能力元資料執行一操作,其中該批量能力元資料操作是以下操作中的一者: 一批量查詢操作,且該處理構件回應於該批量查詢操作以獲得與儲存在該複數個該等儲存元件構件中之各個資料塊相關之該能力元資料,並且用以產生含有該所獲得之能力元資料之輸出資料,及一批量修改操作,且該處理構件回應於該批量修改操作以取決於針對該批量修改操作規定之修改資料來修改與儲存在該複數個該等儲存元件構件中之各個資料塊相關之該能力元資料。 A device for performing operations on capability metadata, comprising: a storage element component for storing data blocks, each data block having capability metadata associated with it identifying whether the data block specifies a capability, and at least one capability type is a bounded a pointer; and a processing means for performing an operation on the capability metadata associated with each data block stored in the plurality of storage element means in response to identifying a bulk capability metadata operation of the plurality of the storage element means, wherein The bulk capability metadata operation is one of the following: a bulk query operation, and the processing component is responsive to the bulk query operation to obtain the capability metadata associated with each data block stored in the plurality of the storage element components, and to generate the capabilities containing the obtained capabilities output data of metadata, and a bulk modification operation, and the processing element is responsive to the bulk modification operation to modify and store each of the plurality of the storage element elements depending on modification data specified for the bulk modification operation The metadata for this capability associated with the data block. 一種電腦程式產品,以一非暫時形式儲存一電腦程式,用於控制一電腦以提供用於對應於如請求項1所述之設備的程式指令之一虛擬機執行環境。 A computer program product storing a computer program in a non-transitory form for controlling a computer to provide a virtual machine execution environment for program instructions corresponding to the apparatus of claim 1.
TW106112342A 2016-04-20 2017-04-13 An apparatus and method for performing operations on capability metadata TWI752951B (en)

Applications Claiming Priority (2)

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

Publications (2)

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

Family

ID=58489720

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106112342A TWI752951B (en) 2016-04-20 2017-04-13 An apparatus and method for performing operations on capability metadata

Country Status (9)

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

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108171041B (en) * 2016-12-07 2020-03-27 澜起科技股份有限公司 Method and apparatus for authenticating an application accessing memory
US10606494B2 (en) * 2017-04-17 2020-03-31 StorageOS Limited System and method for managing volumes of data in a block storage system as a function of a short condition register and a long condition register
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 (en) * 2019-09-10 2023-08-04 中国平安财产保险股份有限公司 System data batch modification method and device, storage medium and electronic equipment
EP3819775A1 (en) 2019-11-06 2021-05-12 Microsoft Technology Licensing, LLC Confidential computing mechanism
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
CN114385529A (en) * 2020-10-16 2022-04-22 瑞昱半导体股份有限公司 Direct memory access controller, electronic device using the same, and method of operating the same
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 (en) * 2022-01-13 2022-02-18 北京九章云极科技有限公司 Data set obtaining method and device and electronic equipment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200517952A (en) * 2003-11-06 2005-06-01 Ibm Method and apparatus for counting instruction execution and data accesses for specific types of instructions
US20120296877A1 (en) * 2011-05-17 2012-11-22 International Business Machines Corporation Facilitating data coherency using in-memory tag bits and tag test instructions

Family Cites Families (11)

* 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
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
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
WO2014033606A2 (en) * 2012-08-31 2014-03-06 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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200517952A (en) * 2003-11-06 2005-06-01 Ibm Method and apparatus for counting instruction execution and data accesses for specific types of instructions
US20120296877A1 (en) * 2011-05-17 2012-11-22 International Business Machines Corporation Facilitating data coherency using in-memory tag bits and tag test instructions

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Robert N. M. Watson et al Capability Hardware Enhanced RISC Instructions: CHERI Instruction-Set Architecture ,30 september 2015(2015-09-30),University of Cambridge,Cambridge,UK,XP055330177
vol. Number 876, 30 September 2015, UNIVERSITY OF CAMBRIDGE , Cambridge, UK , article ROBERT N M WATSON, NEUMANN PETER G, WOODRUFF JONATHAN, ROE MICHAEL, ANDERSON JONATHAN, CHISNALL DAVID, DAVIS BROOKS, JOANNOU ALEXA: "Capability Hardware Enhanced RISC Instructions: CHERI Instruction-Set Architecture", XP055330177 *

Also Published As

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

Similar Documents

Publication Publication Date Title
TWI752951B (en) An apparatus and method for performing operations on capability metadata
US11314641B2 (en) Apparatus and method for executing instruction using range information associated with a pointer
CN110574009B (en) Apparatus and method for managing use of capabilities
JP7280196B2 (en) Apparatus and method for managing functional domains
US11023237B2 (en) Apparatus and method for interpreting permissions associated with a capability
US20200192800A1 (en) An apparatus and method for managing capability metadata
JP7445431B2 (en) Apparatus and method for controlling execution of instructions
JP2023038361A (en) Apparatus and method for controlling change in instruction set
US11755243B2 (en) Apparatus and method for triggering action
JP2024515081A (en) Techniques for constraining access to memory using capabilities - Patents.com