IP Library Granted Patent US 12688040
Granted Patent B2
US 12688040 · App. 18/298,833 · Granted Jul 21, 2026

Data processing apparatus and methods tensor transform operation

Inventors: John Wakefield Brothers, III (Calistoga, CA); Derek David Whiteman (Stockholm, SE)
Assignee: Arm Limited
G06F9/30036G06F7/78G06F9/30007G06F9/544G06F7/76
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 12688040
App. No.
18/298,833
Granted
Jul 21, 2026
Kind
B2
Abstract

The present disclosure relates to a data processing apparatus for a processing resource to perform a transform operation on an input tensor for the processing resource, said input tensor being formed of a plurality of blocks, each block being a portion of said input tensor capable of being operated on independently of each other, said data processing apparatus comprising: communication circuitry to communicate with a control module and a shared storage of said processing resource; processing circuitry to perform said transform operation, said processing circuitry comprising sub-block processing circuitry and transformation circuitry; and a local storage to store transform operation output from said processing circuitry; wherein said communication circuitry is configured to: receive one or more transform parameters; read a first input sub-block from said shared storage, said first input sub-block being a portion of a first block of said input tensor corresponding to a processing unit of said processing circuitry; and write a first output sub-block to said shared storage, wherein said sub-block processing circuitry is configured to: divide said first block of said input tensor into one or more input sub-blocks capable of being operated on independently of each other based on said one or more transform parameters; and wherein said transformation circuitry is configured to: perform said transform operation on said first input sub-block based on said one or more transform parameters to generate said first output sub-block; and write said first output sub-block to said local storage.

Claims (56)

1 . A data processing apparatus for a processing resource to perform a transform operation on an input tensor for said processing resource, said input tensor being formed of a plurality of blocks, each block being a portion of said input tensor capable of being operated on independently of each other, said data processing apparatus comprising:

communication circuitry to communicate with a control module and a shared storage of said processing resource;

processing circuitry to perform said transform operation, said processing circuitry comprising sub-block processing circuitry and transformation circuitry; and

a local tensor transform unit storage to store transform operation output from said processing circuitry;

wherein said communication circuitry is configured to:

receive one or more transform parameters;

read a first input sub-block from said shared storage, said first input sub-block being a portion of a first block of said input tensor corresponding to a processing unit of said processing circuitry; and

write a first output sub-block to said shared storage,

wherein said sub-block processing circuitry is configured to:

divide said first block of said first input tensor into one or more input sub-blocks capable of being operated on independently of each other wherein a size of said input sub-blocks is based on said one or more transform parameters and a maximum size of said input sub-blocks wherein the maximum size corresponds to a maximum amount of data that can be stored in the local tensor transform unit storage;

upon division of said input tensor into one or more input sub-blocks, further divide, by said sub-block processing circuitry, a first input sub-block into a plurality of bricks, each brick being a portion of said first input sub-block capable of being operated on independently of each other;

wherein said transformation circuitry is configured to, subsequent to division of said first input sub-block into said plurality of bricks:

perform said transform operation on a first brick of said plurality of bricks based on said one or more transform parameters, wherein operation on each brick of said plurality of bricks in turn generates a first output sub-block corresponding to said first input sub-block; and

upon generation of said first output sub-block, write said first output sub-block to said local tensor transform unit storage.

2 . The data processing apparatus of claim 1 , wherein said sub-block processing circuitry is configured to divide said first input sub-block into a plurality of bricks such that each brick corresponds to a data array size capable of being read from or written to said shared storage of said processing resource in a single processing cycle.

3 . The data processing apparatus of claim 1 , wherein said one or more transform parameters comprises an indication for a number of bricks required for said transform operation, and wherein said sub-block processing circuitry is configured to select said number of bricks required to form said first input sub-block.

4 . The data processing apparatus of claim 3 , wherein each of said plurality of bricks is a multidimensional data array, and said transformation circuitry is configured to perform said transform operation on said first input sub-block by processing one of said number of bricks required for said transform operation in each dimension of said multidimensional data array in turn.

5 . The data processing apparatus of claim 1 , wherein said sub-block processing circuitry comprises address generating circuitry to generate address information specifying said one or more input sub-blocks of said first block of said input tensor.

6 . The data processing apparatus of claim 5 , wherein said communication circuitry is configured to read said first input sub-block from said shared storage based on said address information.

7 . The data processing apparatus of claim 5 , wherein said transformation circuitry is configured to arrange said first output sub-block in said local tensor transform unit storage based on said address information.

8 . The data processing apparatus of claim 5 , wherein said communication circuitry is configured to write said first output sub-block to said shared storage based on said address information.

9 . The data processing apparatus of claim 5 , wherein said processing circuitry further comprises output circuitry to select data stored in said local tensor transform unit storage based on said one or more transform parameters to be written as said first output sub-block to said shared storage based on said address information.

10 . The data processing apparatus of claim 5 , wherein said address information comprises data positions of said one or more input sub-blocks in said shared storage and data positions of said first output sub-block in said local tensor transform unit storage.

11 . The data processing apparatus of claim 1 , wherein said one or more transform parameters comprise one or more parameters specifying an input tensor size, one or more parameters specifying an output tensor size, a location of said shared storage, one or more parameters defining said transform operation, one or more parameters specifying traversal through said input tensor and output tensors tensor to divide into said one or more input sub-blocks, or any combination thereof.

12 . The data processing apparatus of claim 1 , wherein writing said first output sub-block comprises writing in whole bricks.

13 . A computer-implemented method of performing a transform operation on an input tensor by a data processing apparatus for a processing resource, said input tensor being formed of a plurality of blocks, each block being a portion of said input tensor capable of being operated on independently of each other, said method comprising:

communicating by communication circuitry with a control module and a shared storage of said processing resource;

performing by processing circuitry said transform operation, said processing circuitry comprising sub-block processing circuitry and transformation circuitry; and

storing, by a local tensor transform unit storage, a transform operation output from said processing circuitry;

wherein said method further comprises:

receiving, by said communication circuitry, one or more transform parameters;

dividing, by said sub-block processing circuitry, a first block of said input tensor into one or more input sub-blocks wherein a size of said one or more input sub-blocks is based on said one or more transform parameters and a maximum size of said input sub-blocks wherein the maximum size corresponds to a maximum amount of data that can be stored in the local tensor transform unit storage, each input sub-block being a portion of said first block of said input tensor corresponding to a processing unit of said processing circuitry and capable of being operated on independently of each other;

upon dividing said input tensor into one or more input sub-blocks, further dividing by said sub-block processing circuitry a first input sub-block into a plurality of bricks, each brick being a portion of said first input sub-block capable of being operated on independently of each other;

subsequent to the dividing of said first input sub-block into said plurality of bricks:

reading by said communication circuitry a first brick of said plurality of bricks from said shared storage; and

performing, by said transformation circuitry, said transform operation on said first input brick based on said one or more transform parameters, wherein operating on each brick of said plurality of bricks in turn generates a first output sub-block corresponding to said first input sub-block;

upon generating said first output sub-block, storing by said transformation circuitry said first output sub-block to said local tensor transform unit storage; and

writing by said transformation circuitry said first output sub-block to said shared storage.

14 . The method of claim 13 , wherein said one or more transform parameters comprises an indication for a number of bricks required for said transform operation, and the method further comprising selecting by said sub-block processing circuitry said number of bricks required to form said first input sub-block, wherein, optionally, each of said plurality of bricks is a multidimensional data array, and the method further comprising performing by said transformation circuitry said transform operation on said first input sub-block comprises processing one of said number of bricks required for said transform operation in each dimension of said multidimensional data array in turn.

15 . The method of claim 13 , wherein said sub-block processing circuitry comprises address generating circuitry, the method further comprising generating, by said address generating circuitry, address information specifying said one or more input sub-blocks of said first block of said input tensor.

16 . The method of claim 15 , further comprising sending by said communication circuitry said address information specifying said one or more input sub-blocks of said first block of said input tensor to said shared storage, wherein said communication circuitry reads said first input sub-block from said shared storage based on said address information, and wherein said communication circuitry writes said first output sub-block to said shared storage based on said address information.

17 . The method of claim 15 , wherein said processing circuitry further comprises output circuitry, the method further comprising selecting, by said output circuitry, data stored in said local tensor transform unit storage based on said one or more transform parameters and writing the selected data to said first output sub-block to said shared storage based on said address information.

18 . A program product stored on a non-transitory computer-readable medium computer program comprising instructions for controlling a host data processing apparatus to provide an instruction execution environment to perform a transform operation on an input tensor, said input tensor being formed of a plurality of blocks, each block being a portion of said input tensor capable of being operated on independently of each other, said instruction execution environment comprising:

communication program logic to communicate with a control module and a shared storage of said host data processing apparatus;

processing program logic to perform said transform operation, said processing program logic comprising sub-block processing program logic and transformation program logic; and

a local tensor transform unit storage to store a transform operation output from said processing program logic;

wherein said communication program logic is configured to:

receive one or more transform parameters;

read a first input sub-block from said shared storage, said first input sub-block being a portion of a first block of said input tensor corresponding to a processing unit of said processing program logic; and

write a first output sub-block to said shared storage,

wherein said sub-block processing program logic is configured to:

divide said first block of said first input tensor into one or more input sub-blocks capable of being operated on independently of each other wherein a size of said input sub-blocks is based on said one or more transform parameters and a maximum size of said input sub-blocks wherein the maximum size corresponds to a maximum amount of data that can be stored in the local tensor transform unit storage; and

upon division of said input tensor into one or more input sub-blocks, further divide, by said sub-block processing circuitry, a first input sub-block into a plurality of bricks, each brick being a portion of said first input sub-block capable of being operated on independently of each other;

wherein said transformation circuitry is configured to, subsequent to division of said first input sub-block into said plurality of bricks:

perform said transform operation on a first brick of said plurality of bricks based on said one or more transform parameters, wherein operation on each brick of said plurality of bricks in turn generates a first output sub-block corresponding to said first input sub-block; and

upon generation of said first output sub-block, write said first output sub-block to said local tensor transform unit storage.