IP Library Granted Patent US 11,068,268
Granted Patent B2
US 11,068,268 · App. 16/531,208 · Granted Jul 20, 2021

Data structure processing

Inventors: Nigel John Stephens (Cambridge, GB); David Hennah Mansell (Norwich, GB); Richard Roy Grisenthwaite (Cambridge, GB); Matthew Lucien Evans (Cambridge, GB)
Assignee: Arm Limited
G06F9/3016G06F9/30123
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,068,268
App. No.
16/531,208
Granted
Jul 20, 2021
Kind
B2
Abstract

An apparatus comprises: an instruction decoder and processing circuitry. In response to a data structure processing instruction specifying at least one input data structure identifier and an output data structure identifier, the instruction decoder controls the processing circuitry to perform a processing operation on at least one input data structure to generate an output data structure. Each input/output data structure comprises an arrangement of data corresponding to a plurality of memory addresses. The apparatus comprises two or more sets of one or more data structure metadata registers, each set associated with a corresponding data structure identifier and designated to store address-indicating metadata for identifying the memory addresses for the data structure identified by the corresponding data structure identifier.

Claims (57)

1. An apparatus comprising:

an instruction decoder to decode instructions; and

processing circuitry to perform data processing in response to the instructions decoded by the instruction decoder; in which:

in response to a data structure processing instruction specifying at least one input data structure identifier and an output data structure identifier, the instruction decoder is configured to control the processing circuitry to perform a processing operation on at least one input data structure identified by the at least one input data structure identifier to generate an output data structure identified by the output data structure identifier;

the at least one input data structure and the output data structure each comprise an arrangement of data corresponding to a plurality of memory addresses; and

the apparatus comprises a plurality of sets of one or more data structure metadata registers, each set of one or more data structure metadata registers associated with a corresponding data structure identifier and designated to hold address-indicating metadata for identifying the plurality of memory addresses for the data structure identified by the corresponding data structure identifier, in which

said data structure metadata registers associated with a given data structure identifier comprise one of:

a fixed subset of a plurality of general purpose registers which are also accessible in response to non-data-structure-processing instructions supported by the instruction decoder and the processing circuitry; and

a dedicated set of data structure metadata registers, separate from said plurality of general purpose registers.

2. The apparatus according to claim 1 , in which the processing circuitry is configured to operate according to an instruction set architecture which enables software to identify, for at least a subset of data structure identifiers, whether a data structure corresponding to one of the subset of data structure identifiers is clean or dirty.

3. The apparatus according to claim 1 , in which the output data structure identifier is defined in a separate identifier space to the at least one input data structure identifier.

4. The apparatus according to claim 1 , comprising at least one architectural register to hold at least one dirty indicator, each dirty indicator indicative of whether a data structure corresponding to a given data structure identifier is clean or dirty.

5. The apparatus according to claim 1 , comprising context saving circuitry responsive to a context save trigger event to save a predetermined subset of processor state to memory, where the predetermined subset of processor state includes the set of one or more data structure metadata registers corresponding to at least one data structure identifier corresponding to a clean data structure, but excludes the data structure corresponding to said at least one data structure identifier.

6. The apparatus according to claim 1 , in which in response to the data structure processing instruction, the processing circuitry is configured to generate a load request to load a given input data structure or a previous value of a given output data structure from memory when the given input data structure or the previous value of the given output data structure is unavailable to the processing circuitry.

7. The apparatus according to claim 6 , in which the processing circuitry comprises checking circuitry to check whether the given input data structure is available in data structure holding circuitry separate from the memory.

8. The apparatus according to claim 1 , comprising data structure holding circuitry, separate from memory; and

in response to the data structure processing instruction, the instruction decoder is configured to control the processing circuitry to read the at least one input data structure from the data structure holding circuitry, and to write or update the output data structure to the data structure holding circuitry.

9. The apparatus according to claim 8 , in which when a given data structure is held in the data structure holding circuitry, the processing circuitry is capable of reading data from the given data structure in a different sequence from the sequence in which the data was written to the data structure holding circuitry.

10. The apparatus according to claim 8 , in which the data structure holding circuitry comprises at least one of:

architecturally-addressable registers;

non-architecturally-addressable registers;

a scratchpad memory; and

a cache.

11. The apparatus according to claim 8 , in which in response to a data structure loading instruction specifying a target input data structure identifier or a target output data structure identifier, the instruction decoder is configured to control the processing circuitry to write to the data structure holding circuitry a data structure loaded from memory addresses derived from the address-indicating metadata held in the set of one or more data structure metadata registers corresponding to said target input data structure identifier or said target output data structure identifier.

12. The apparatus according to claim 8 , in which in response to a data structure loading instruction specifying a target input data structure identifier or a target output data structure identifier and one or more general purpose registers, the instruction decoder is configured to control the processing circuitry to:

write to the data structure holding circuitry a data structure loaded from memory addresses derived from target address-identifying information held in the one or more general purpose registers, and

update the set of one or more data structure metadata registers corresponding to said target input data structure identifier or said target output data structure identifier based on the target address-identifying information or a property of the data structure loading instruction.

13. The apparatus according to claim 1 , in which in response to a prepare-for-load instruction specifying a target input data structure identifier, the instruction decoder is configured to control the processing circuitry to update the set of one or more data structure metadata registers corresponding to the target input data structure identifier based on one of:

target address-identifying information implicitly or explicitly specified by the prepare-for-load instruction; and

a property of the prepare-for-load instruction.

14. The apparatus according to claim 13 , in which in response to the prepare-for-load instruction, the processing circuitry is configured to generate a load request to request that a data structure associated with the target input data structure identifier is transferred to data structure holding circuitry from memory addresses determined based on the target address-identifying information.

15. The apparatus according to claim 1 , in which in response to a prepare-for-store instruction specifying a target output data structure identifier, the instruction decoder is configured to control the processing circuitry to update the set of one or more data structure metadata registers corresponding to the target output data structure identifier based on one of:

target address-identifying information implicitly or explicitly specified by the prepare-for-store instruction; and

a property of the prepare-for-store instruction.

16. The apparatus according to claim 1 , in which the plurality of memory addresses comprise a plurality of discontiguous blocks of memory addresses.

17. The apparatus according to claim 16 , in which the address-indicating metadata comprises at least one of:

start address information indicative of a start address of at least one of said plurality of discontiguous blocks of memory addresses;

offset information indicative of a separation between start addresses of the plurality of discontiguous blocks of memory addresses;

first size information indicative of a size of each discontiguous block of memory addresses;

second size information indicative of how many of the discontiguous blocks of memory addresses form the data structure;

element size information indicative of a data element size of the data structure;

one or more register identifiers identifying one or more general purpose registers holding at least one of the start address information, the offset information, the first size information and the second size information; and

an instruction address indication identifying an address of an instruction specifying registers holding at least one of the start address information, the offset information, the first size information and the second size information.

18. The apparatus according to claim 1 , in which the data structure processing instruction comprises a matrix multiplication instruction specifying two input data structure identifiers, and the processing operation comprises a matrix multiplication operation performed on two input data structures identified by the two input data structure identifiers, to generate the output data structure.

19. The apparatus according to claim 1 , in which the output data structure has a size of at least 64 bytes.

20. The apparatus according to claim 1 , in which in response to the data structure processing instruction, the processing circuitry is configured to adapt the processing operation performed on the at least one input data structure depending on the address-indicating metadata held in at least one set of one or more data structure metadata registers corresponding to the at least one input data structure identifier or the output data structure identifier.

21. A data processing method comprising:

in response to decoding of a data structure processing instruction specifying at least one input data structure identifier and an output data structure identifier, controlling processing circuitry to perform a processing operation on at least one input data structure identified by the at least one input data structure identifier to generate an output data structure identified by the output data structure identifier, the at least one input data structure and the output data structure each comprising an arrangement of data corresponding to a plurality of memory addresses; and holding address-indicating metadata in a plurality of sets of one or more data structure metadata registers, each set of one or more data structure metadata registers associated with a corresponding data structure identifier and designated to hold address-indicating metadata for identifying the plurality of memory addresses for the data structure identified by the corresponding data structure identifier, in which

said data structure metadata registers associated with a given data structure identifier comprise one of:

a fixed subset of a plurality of general purpose registers which are also accessible in response to non-data-structure-processing instructions supported by the instruction decoder and the processing circuitry; and

a dedicated set of data structure metadata registers, separate from said plurality of general purpose registers.

22. A non-transitory storage medium storing a computer program for controlling a host data processing apparatus to simulate execution of a target program by a target data processing apparatus; the computer program comprising:

instruction decoding program logic to decode instructions of the target program, in which in response to a data structure processing instruction specifying at least one input data structure identifier and an output data structure identifier, the instruction decoding program logic is configured to control the host data processing apparatus to perform a processing operation on at least one input data structure identified by the at least one input data structure identifier to generate an output data structure identified by the output data structure identifier, the at least one input data structure and the output data structure each comprising an arrangement of data corresponding to a plurality of memory addresses; and

register emulating program logic to control access to a storage structure for emulating registers of the target data processing apparatus, the registers including a plurality of sets of one or more data structure metadata registers, where each set of one or more data structure metadata registers is associated with a corresponding data structure identifier and is designated to hold address-indicating metadata for identifying the plurality of memory addresses for the data structure identified by the corresponding data structure identifier,

in which said data structure metadata registers associated with a given data structure identifier comprise one of:

a fixed subset of a plurality of general purpose registers which are also accessible in response to non-data-structure-processing instructions supported by the instruction decoding program logic; and

a dedicated set of data structure metadata registers, separate from said plurality of general purpose registers.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 1, 2021
From: STEPHENS, NIGEL JOHN; MANSELL, DAVID HENNAH; GRISENTHWAITE, RICHARD ROY; EVANS, MATTHEW LUCIEN
To: ARM LIMITED
Reel/Frame 055440/0536 →
Continuity (1)
Related Publication 20210042115A1 · Feb 11, 2021