TWI752951B - An apparatus and method for performing operations on capability metadata - Google Patents
An apparatus and method for performing operations on capability metadata Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 31
- 230000004048 modification Effects 0.000 claims abstract description 113
- 238000012986 modification Methods 0.000 claims abstract description 113
- 238000012545 processing Methods 0.000 claims abstract description 80
- 230000004044 response Effects 0.000 claims description 24
- 230000001419 dependent effect Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 22
- 238000013459 approach Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000013519 translation Methods 0.000 description 8
- 238000000354 decomposition reaction Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000002372 labelling Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006266 hibernation Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
- G06F16/2386—Bulk updating operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/1425—Protection 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/1441—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30163—Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Executing Machine-Instructions (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
Description
本技術係關於用於對能力元資料執行操作的設備及方法。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
擷取級6從1階(L1)指令快取記憶體20擷取指令。擷取級6通常可順序地從連續指令位址擷取指令。然而,擷取級亦可具有用於預測分支指令之結果的分支預測器22,且若預測採取分支,則擷取級6可從(非順序)分支目標位址擷取指令,或若預測不採取分支,則擷取級6從下一順序位址擷取指令。分支預測器22可包括一或更多個用於儲存資訊之分支歷史表,以用於預測是否能採取某些分支。例如,分支歷史表可包括用於追蹤先前執行之分支的實際結果或表示對分支進行之預測的置信度之計數器。分支預測器22亦可包括用於快取分支指令之先前目標位址的分支目標位址快取記憶體(branch target address cache; BTAC)24,以使得可在後續遇到相同分支指令時預測此等先前目標位址。Fetch
擷取之指令傳遞到解碼該等指令以產生經解碼之指令的解碼級8。經解碼之指令可包含用於控制執行級12以執行適當處理操作的控制資訊。針對從快取記憶體20擷取之一些更複雜指令,解碼級8可將彼等指令映射至多個經解碼之指令,此映射可已知為微操作(μops或uops)。因此,在從L1指令快取記憶體20擷取之指令與由管線之隨後級看到之指令之間可能不存在一一對應關係。一般而言,在本申請案中提及「指令」應解釋為包括微操作。The fetched instructions are passed to decode
將經解碼之指令傳遞到發佈級10,發佈級10判定執行指令所需之運算元是否可獲用,並且當運算元係可用時,發佈執行指令。一些實施例可支援按順序處理,因此指令被發佈用於按與指令從L1指令快取記憶體20擷取的程式順序對應之順序執行。其他實施例可支援無序執行,使得可將指令以與程式順序不同之順序發佈至執行級12。無序處理可用來改良效能,因為儘管當等待運算元時停止較早指令,但是可以按照程式順序首先執行其運算元係可用之後一指令。The decoded instruction is passed to issue
發佈級10將指令發佈至執行級12,其中執行該等指令以進行各種資料處理操作。例如,執行級可包括數個執行單元30、32、34,包括對整數值進行算術或邏輯運算的算術/邏輯單元(arithmetic/logic unit; ALU)30、對以浮點形式表示之值進行操作的浮點(floating-point; FP)單元32,及用於進行將資料值從1階(L1)資料快取記憶體36載入暫存器40的載入操作或將資料值從暫存器40儲存至L1資料快取記憶體36的儲存操作的載入/儲存單元34。應瞭解此等僅係可提供之執行單元類型之一些實例,且亦可提供眾多其他種類。為了進行處理操作,執行級12可從一組暫存器40讀取資料值。執行指令之結果可隨後由寫回級14寫回至暫存器40。
L1指令快取記憶體20及L1資料快取記憶體36可係包括多階快取記憶體之快取記憶體階層之部分。例如,亦可提供2階(L2)快取記憶體44並且視情況可提供其他階級的快取記憶體。在此實例中,L2快取記憶體44在L1指令快取記憶體20與L1資料快取記憶體36之間共享,但其他實例可具有分開之L2指令及資料快取記憶體。當待擷取之指令不在L1指令快取記憶體20中時,則其可從L2快取記憶體44擷取,並且相似地若該指令不在L2快取記憶體44中,則其可從主記憶體50擷取。相似地,回應於載入指令,若資料不在L1資料快取記憶體36中,則其可從L2快取記憶體44擷取,並且若需要則從記憶體50擷取。任何已知方案可用來管理快取記憶體階層。
管線4所使用以代表程式指令及資料值的位址可係虛擬位址,但至少主記憶體50,且視情況亦至少一些階級的快取記憶體階層可經實體定址。因此,可提供轉換後備緩衝器52(translation lookaside buffer; TLB),以用於將管線4所使用之虛擬位址轉換為用於存取快取記憶體或記憶體之實體位址。例如,TLB 52可包括數個條目,該等條目各自規定虛擬位址空間之對應頁之虛擬頁位址及對應實體頁位址,虛擬頁位址應映射至對應實體頁位址以將在對應頁中之虛擬位址轉換為實體位址。例如,虛擬及實體頁位址可對應於對應虛擬及實體位址之最高有效部分,而當將虛擬位址映射至實體位址時剩餘最低有效部分保持不變。除位址轉換資訊之外,各個TLB條目亦可包括一些規定存取許可之資訊,諸如指示在管線4之某些模式中位址之某些頁是否可存取。在一些實施例中,TLB條目亦可定義位址之對應頁之其他性質,諸如定義回應於讀取或寫入操作更新快取記憶體階層之哪個階級的快取記憶體策略資訊(例如,該快取記憶體應以寫回還是寫通模式操作),或定義與由管線4發佈資料存取之順序相比,對在對應頁中之位址的資料存取是否可由記憶體系統重定序的資訊。The addresses used by
儘管第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-
此外,應瞭解一些系統可支援多階位址轉換,使得例如第一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
各個有界指針暫存器60包括可用於判定待存取之資料值之位址的指針值62,且當使用對應指針62時規定容許位址範圍的範圍資訊64。有界指針暫存器60亦可包括可定義對指針之使用的一或更多個限制/許可的限制資訊66(本文亦稱為許可資訊)。例如,限制66可用於限制可使用指針62之指令的類型或可使用該指針之管線4的模式。因此,可認為範圍資訊64及限制資訊66定義允許在其中使用指針62的能力。當嘗試使用在定義能力外之指針62時,可觸發錯誤。範圍資訊64可用來例如確保指針保留在某些已知邊界內並且不雜散至記憶體位址空間中可能含有敏感或安全資訊之其他區域。在相同實體儲存用於通用資料暫存器及有界指針暫存器二者的一實施例中,則在一個實施例中,指針值62可例如儲存在與用於對應通用暫存器相同之儲存位置中。Each
第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
例如,如第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
範圍資訊64可以不同方式設定。例如,安全代碼或作業系統或超管理器可規定給定指針的容許範圍。例如,指令集架構可包括用於設定或修改給定指針62的範圍資訊64的數個指令,並且可將此等指令之執行限制至某些軟體或處理器4之某些模式或異常狀態。可使用設定或修改範圍資訊64之任何已知技術。The
除當執行參考指針的某些指令時可於執行狀態12下使用之該組有界指針儲存元件60之外,程式計數器能力(program counter capability; PCC)暫存器80亦可用於當指令正在從1階指令快取記憶體20擷取時於擷取級6提供相似功能性。特定言之,程式計數器指針可儲存在欄位82中,其中PCC 80亦提供範圍資訊84及任何適當的限制資訊86,類似於利用在該組有界指針儲存元件60中之各指針提供的範圍及限制資訊。In addition to the set of bounded
第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
當將能力載入有界指針暫存器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
儘管在第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
該等能力可採取各種形式,但在第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
在一個實施例中,第1圖所示之執行管線12經佈置以執行指令,以對所識別之複數個儲存元件執行批量能力元資料操作,導致對與儲存在所識別之複數個儲存元件中之各個資料塊相關的能力元資料執行操作。批量能力元資料操作可採取各種形式。例如,一種形式之批量能力元資料操作可係批量查詢操作,而另一示例形式之批量能力元資料操作可係批量修改操作。In one embodiment, the
第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
如第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
在第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
隨後提供額外欄位220以識別通用暫存器40,查詢結果將輸出至該通用暫存器。因此,當執行級12執行操作序列以針對所識別之記憶體位置各者擷取標籤位元時,隨後將彼等標籤位元一起整理為輸出資料值,該輸出資料值被輸出以供儲存在通用暫存器40之一中。An
若需要,在指令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
儘管在第5A圖之指令200之實例中,可明確設定將查詢其標籤之記憶體位置之數量,但是在替代實施例中,該數量可係隱含的,並且因此例如可源自在其上執行該等指令之設備的性質。此類指令之實例在第5B圖中圖示,其中圖示了「DC_CQueryTagsM」指令225。作業碼230將該指令識別為DC_CQueryTagsM指令,而欄位235用於與在第5A圖之指令200中之欄位210相同的目的,並且因此識別用於將查詢其標籤位元之記憶體位置序列的開始位址。然而,在此實例中,不存在用以識別要查詢之標籤數量的分開欄位,而是替代地在批量查詢操作期間存取之標籤數量係根據相關資料快取記憶體之快取記憶體線長度判定,諸如第1圖所示之1階資料快取記憶體36(如在該指令名稱中所使用之術語「DC」意欲傳遞此係批量查詢指令類型,其中查詢標籤之數量取決於資料快取記憶體之快取記憶體線大小)。快取記憶體線大小可例如在該處理器可用之系統暫存器之一中規定(由第1圖之參考數字90表示)。Although in the example of
在一個實施例中,將在欄位235中規定之開始位址與快取記憶體線長度的粒度對準,並且因此,當執行指令時,與維持在快取記憶體線中之各資料塊相關之標籤位元經查詢並整理為輸出值,隨後將該輸出值輸出至在欄位240中規定之通用暫存器中。或者,若在欄位235中規定之開始位址不與快取記憶體線長度的粒度對準,則在替代實施例中可忽視位址中導致該位址不對準之位元,因此將該位址有效變換為對準的位址。In one embodiment, the start address specified in
第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,
儘管在第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
儘管在第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
欄位305含有將該等指令識別為CQueryTagsR指令之作業碼。欄位310隨後用於識別將查詢其標籤位元的複數個能力暫存器。在欄位310中識別複數個能力暫存器之方式可取決於實施例而變化。例如,其可參考其內容識別待查詢之複數個暫存器的通用暫存器或用特別地結合在欄位310內之立即值識別。實際上,通用暫存器與立即值之組合可用於規定待查詢之暫存器。
在第7圖之下半部分示意地圖示在欄位310中識別暫存器之兩種示例方式。在第一實例中,提供掩碼值320,其可例如藉由通用暫存器之內容或藉由立即值規定。掩碼值可用於直接識別待查詢之暫存器。例如,掩碼值之各個位元可對應於在暫存器檔案中之一個暫存器,並且是設定還是清除該位元決定是否將查詢該暫存器之標籤位元。例如,各個設定之位元可識別將查詢其標籤位元的暫存器。若在設備中存在多個分開的暫存器檔案,則可規定可選暫存器檔案識別符325以識別施加掩碼值320之暫存器檔案。應瞭解經由使用此類掩碼值,有可能規定將查詢其標籤位元的任意複數個能力暫存器。Two example ways of identifying registers in
在亦圖示於第7圖中之替代佈置中,欄位310可實際上併入有兩個子欄位,第一子欄位330識別基底暫存器識別符,且第二子欄位335識別計數值。當組合時,此等欄位可用於識別從由基底暫存器識別符識別之暫存器開始的多個暫存器之序列。子欄位330、335中的一個可使用通用暫存器來識別其內容,而另一個子欄位可例如提供立即值。此外,若在該設備中提供多個暫存器檔案,則可選之額外欄位340可用於識別將對其暫存器操作之特定暫存器檔案。In an alternate arrangement, also shown in Figure 7,
如第5A圖及第5B圖之指令,第7圖之指令300包括欄位315,在該欄位315中識別查詢結果將寫入之通用暫存器。Like the commands of Figures 5A and 5B, the
在第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
在第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
第8B圖圖示DC_CModTagsM指令375之格式,該指令可再次用於對與記憶體位置序列相關之標籤位元執行批量標籤修改,但在此實例中,待操作之標籤位元之數量係由設備之性質暗示,特定言之由在設備之資料快取記憶體之一中的快取記憶體線之快取記憶體線長度暗示。作業碼380將該指令識別為DC_CModTagsM指令,而欄位385用於與第5B圖之指令225之欄位235相同之目的,並且因此識別記憶體位置序列之開始位址。欄位390用於與欄位370相同之目的,並且因此識別通用暫存器,該通用暫存器之內容識別在批量標籤修改操作期間如何更新標籤值。Figure 8B illustrates the format of the
儘管第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
將標籤位元儲存在當執行批量標籤查詢操作時針對查詢結果識別之通用暫存器中的方式或在針對批量標籤修改操作識別之通用暫存器中表達修改資料位元的方式可採取各種形式。第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
第9B圖圖示替代途徑,其中通用暫存器430含有資訊塊序列,在此實例中為個別位元組序列,並且在各個位元組中之某一位元435用於識別所查詢之標籤位元之一(在批量標籤查詢操作之實例中)或各項修改資料之一(在批量標籤修改操作之實例中)。若需要,在各個位元組中之其他位元可用於其他資訊,或可係未使用的。Figure 9B illustrates an alternative approach, in which the
第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
選項B說明其中若位元425係於邏輯0值,則對應標籤位元保持不修改的情況。因此,若已經設定,則對應標籤位元將保留在設定狀態中,否則將保留在清除狀態中。相反地,若位元425具有邏輯1值,則此將導致清除標籤位元。在一個實施例中,此選項可經由使用BIC(位元清除)操作實施。Option B illustrates the case where if
根據選項C,若位元425係於邏輯0值,則對應標籤位元保持未修改,而若位元425係於邏輯1值,則設定該標籤位元。在一個實施例中此選項可經由使用ORR操作實施。According to option C, if
選項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
儘管在一個實施例中,批量標籤操作之執行可係非條件性的,但是在一替代實施例中,該設備可經佈置使得在允許進行該批量標籤操作之前必須滿足某些條件。第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
該等限制可同等適用於全部類型之批量標籤指令,或可對某些類型批量標籤指令之使用設置更多複雜限制。例如,在一些實施方式中,可適當地對批量標籤修改指令之使用設置相當嚴格之限制,而批量標籤查詢指令之使用可受到較少限制。此係由於以下事實:嚴格控制修改與資料塊相關之標籤位元的能力通常係重要的,因為若不對將通用資料變換為能力(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
若判定允許指令所需之批量操作,則視情況於步驟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
第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
第12B圖圖示替代途徑,其中步驟520、530及535對應於第12A圖之步驟500、510及515,但其中測試505由測試525替代,並且特定言之判定是否已設定特權配置暫存器以允許執行所識別之批量操作。特權配置暫存器可例如係當在預定之特權狀態中操作時可由處理器設定的暫存器,並且由此其值僅可由在該預定之特權狀態中操作的處理器修改。假設配置暫存器之內容指示允許所識別之批量操作,則該過程進行至步驟530,而否則,於步驟535出現故障。Figure 12B illustrates an alternative approach, where
如先前提及,可對不同類型之批量標籤操作設置不同限制。因此,不同特權配置暫存器,或在特權配置暫存器中之不同欄位,可用於識別不同類型批量操作之許可。因此,例如,一個或更多個特權配置暫存器可識別允許該批量標籤查詢操作,但不允許該批量標籤修改操作。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
批量操作能力可具有許可位元,該許可位元經設定以指示是否允許任何形式之批量標籤操作,或替代地可提供用於批量標籤修改及用於批量標籤查詢操作的不同許可位元。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
如先前論述,例如參考第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
當由儲存在備份儲存中之資料重建能力時,需要執行重建過程630,其可經限制以確保不折衷可經由使用能力獲得之安全性。如後文參考第15圖更詳細地論述,先前所述之批量標籤修改指令可用於此能力重建目的使用,並且彼等指令之使用可經由使用先前參考第11圖所論述之方法論限制(例如使用先前參考第12A圖至第12C圖所描述之技術來實施第11圖之步驟455)。假設在請求重建操作630時判定可執行重建操作,則能力可於步驟630重建並寫回至共享記憶體605中(如後文更詳細地論述,在一個實施例中,使用能力暫存器進行重建,隨後將該重建能力輸出至共享記憶體605中)。When rebuilding capabilities from data stored in backup storage, a
第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
隨後,於步驟655,將該通用暫存器670之內容寫出至備份儲存675。於此刻,備份儲存威脅僅作為通用資料之資料並且係能力不感知性的。Then, in
於步驟660,標準寫入操作隨後用於將在記憶體位置序列(其相關標籤位元於步驟650經受批量標籤查詢操作)中之各個資料塊寫出至備份儲存675。在一個實施例中,該實施方式將涉及將彼等資料塊從記憶體位址空間載入暫存器中,並隨後從暫存器將其等寫出至備份儲存。At
第15圖係根據一個實施例的圖示第13圖之重建操作630的流程圖。如第14圖,在第15圖之右手側的示意圖說明於第15圖之各步驟執行之操作。於步驟700,一系列載入操作用於將多個資料塊從備份儲存720載入到能力暫存器725中之對應的多組能力暫存器中,其中與彼等能力暫存器相關之標籤位元經清除至邏輯0值以識別該資料塊當前不表示能力。FIG. 15 is a flowchart illustrating the
隨後於步驟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
隨後,於步驟710,例如藉由執行先前參考第8C圖所論述之批量標籤修改指令,來執行批量標籤修改過程,其中所識別之能力暫存器係來自該組能力暫存器725之相關能力暫存器。該指令亦將通用暫存器730識別為含有在批量標籤修改操作期間使用之修改資料。按照第11圖之先前論述,在執行步驟710期間可執行一或更多個檢查以檢查允許進行所識別之批量標籤修改操作。然而,假設經過彼等檢查,則於步驟710執行批量標籤修改操作將導致取決於保持在通用暫存器730中之資料來修改與相關能力暫存器725各者相關之標籤值。此可導致將多個資料塊識別為能力(在一個實施例中,全部資料塊可將其標籤位元設定用以識別其等係能力)。由此,在執行步驟710期間,根據已從備份儲存720擷取之資訊有效地重新生成能力。隨後,於步驟715,能力暫存器內容以及其相關標籤位元可移動至記憶體位址空間735。Then, at
儘管在參考第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
第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,
根據此實施例,該批量標籤查詢/修改操作於匯流排協定等級表達,使得匯流排主元件如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
第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
從上文所述之實施例,應瞭解此等實施例賦能對能力元資料(諸如,能力架構中之標籤位元)的更佳存取。所述操作可用於各種情況,例如當將記憶體從備份儲存調頁至加標籤的記憶體位置或從彼等加標籤的記憶體位置調頁至備份儲存時,或當跨缺乏固有能力支援之網路移動虛擬機時。所述實施例設置可執行以允許批量查詢或操縱一定範圍之能力位置的數個指令。描述兩個不同群組的指令,一個群組將操作批量施加至能力記憶體位置,而另一個群組將操作批量施加至能力暫存器位置。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
第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)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1606872.8 | 2016-04-20 | ||
GB1606872.8A GB2549511B (en) | 2016-04-20 | 2016-04-20 | An apparatus and method for performing operations on capability metadata |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201738757A 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)
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 |
US10831385B2 (en) * | 2017-04-17 | 2020-11-10 | StorageOS Limited | System and method for managing volumes of data in a block storage system |
GB2570692B (en) * | 2018-02-02 | 2020-09-09 | Advanced Risc Mach Ltd | Controlling guard tag checking in memory accesses |
GB2571352B (en) | 2018-02-27 | 2020-10-21 | Advanced Risc Mach Ltd | An apparatus and method for accessing metadata when debugging a device |
GB2572151B (en) * | 2018-03-19 | 2020-07-08 | Advanced Risc Mach Ltd | An apparatus and method for storing bounded pointers |
GB2572158B (en) * | 2018-03-20 | 2020-11-25 | Advanced Risc Mach Ltd | Random tag setting instruction |
GB2576506B (en) * | 2018-08-20 | 2021-06-30 | Advanced Risc Mach Ltd | An apparatus and method for controlling use of bounded pointers |
US11068268B2 (en) * | 2019-08-05 | 2021-07-20 | Arm Limited | Data structure processing |
CN110717315B (en) * | 2019-09-10 | 2023-08-04 | 中国平安财产保险股份有限公司 | System data batch modification method and device, storage medium and electronic equipment |
EP3819774B1 (en) | 2019-11-06 | 2022-05-25 | Microsoft Technology Licensing, LLC | Confidential computing mechanism |
EP3819775A1 (en) | 2019-11-06 | 2021-05-12 | 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)
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)
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 |
-
2016
- 2016-04-20 GB GB1606872.8A patent/GB2549511B/en active Active
-
2017
- 2017-03-29 WO PCT/GB2017/050881 patent/WO2017182770A1/en active Application Filing
- 2017-03-29 US US16/094,224 patent/US11481384B2/en active Active
- 2017-03-29 JP JP2018553940A patent/JP6975723B2/en active Active
- 2017-03-29 KR KR1020187032843A patent/KR102446063B1/en active IP Right Grant
- 2017-03-29 EP EP17715980.3A patent/EP3446222B8/en active Active
- 2017-03-29 CN CN201780023569.1A patent/CN109074322B/en active Active
- 2017-04-13 TW TW106112342A patent/TWI752951B/en active
-
2018
- 2018-09-05 IL IL261614A patent/IL261614B/en active IP Right Grant
Patent Citations (2)
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)
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 |
---|---|
KR102446063B1 (en) | 2022-09-22 |
IL261614B (en) | 2020-08-31 |
EP3446222A1 (en) | 2019-02-27 |
TW201738757A (en) | 2017-11-01 |
US20190095389A1 (en) | 2019-03-28 |
EP3446222B1 (en) | 2020-01-01 |
EP3446222B8 (en) | 2020-03-04 |
CN109074322A (en) | 2018-12-21 |
IL261614A (en) | 2018-10-31 |
GB2549511B (en) | 2019-02-13 |
GB2549511A (en) | 2017-10-25 |
CN109074322B (en) | 2023-03-03 |
WO2017182770A1 (en) | 2017-10-26 |
JP6975723B2 (en) | 2021-12-01 |
US11481384B2 (en) | 2022-10-25 |
JP2019516181A (en) | 2019-06-13 |
KR20180136976A (en) | 2018-12-26 |
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 | |
JP7445431B2 (en) | Apparatus and method for controlling execution of instructions | |
US11023237B2 (en) | Apparatus and method for interpreting permissions associated with a capability | |
US20200192800A1 (en) | An apparatus and method for managing capability metadata | |
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 |