# US 11,307,977 B2 · Technologies for direct matrix read and write operations

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,307,977 B2
- Document ID: US11307977B2
- Status: Granted
- Kind: B2
- Application number: 16/144,459
- Filed: 2018-09-27
- Published: 2019-02-07
- Granted: 2022-04-19
- Earliest claimed: 2018-09-27
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Jawad B. Khan; Richard Coulson
- Web page: https://patentgrep.com/patent/US11307977B2

## CPC

- G06F 12/0207: {with multidimensional access, e.g. row/column, matrix}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/0611: {in relation to response time}
- G06F 3/0634: {by changing the state or mode of one or more devices}
- G06F 3/0638: {Organizing or formatting or addressing of data}
- G06F 3/0673: {Single storage device}
- G06F 3/0683: {Plurality of storage devices}
- G06F 15/7821: {Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory}
- G06F 2212/1024: Latency reduction
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Technologies for directly performing read and write operations on matrix data in a data storage device are disclosed. The data storage device receives a request to perform a read or write operation on matrix data stored in one or more memory units of the data storage device. Each memory unit is associated with a column address for the matrix data. The data storage device determines whether the request specifies to read or write a column or a row in the matrix data. The data storage device performs, in response to a determination that the request specifies to read or write a column in the matrix data, the read or write operation on the matrix data on the column.

## Claims

### Claim 1

An apparatus comprising:
a memory comprising a plurality of bit-addressable memory units, each memory unit associated with a row address and a column address; and
a controller to:
receive a memory access request from a processor to perform a read or write operation on matrix data stored in one or more of the plurality of memory units, the memory access request to indicate a start address of the matrix data;
determine, with decoder circuitry, whether the matrix data is stored in row-major or column-major format based on a matrix descriptor;
determine, with the decoder circuitry, whether to perform a row-major memory read or write operation or a column-major memory read or write operation based on whether the matrix data is stored in row-major or column-major format and based on a row-major or a column-major flag in the memory access request that is indicative of whether to perform a row-major or a column-major readout of the matrix data;
in response to a determination to perform a row-major memory read or write operation, perform the read or write operation along memory rows specified by the memory access request; and
in response to a determination to perform a column-major memory read or write operation, perform the read or write operation along memory columns specified by the memory access request.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein to receive the memory access request comprises: to receive the memory access request to perform the read or write operation on the matrix data, the matrix data including the matrix descriptor having at least one of matrix dimensions, a size of elements in the matrix data, or locations of memory units in which the matrix data is stored.

### Claim 3 (depends on 1)

The apparatus of claim 1, wherein the controller is further to return a result of the read or write operation.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein the controller is further to receive a request to initialize the matrix data, the request to initialize the matrix data including a specification of matrix dimensions of the matrix data, a size of elements of the matrix data, and a preference to store the matrix data according to row major or column major.

### Claim 5 (depends on 4)

The apparatus of claim 4, wherein the controller is further to:
generate a matrix descriptor that is indicative of the specification of the matrix dimensions of the matrix data, the size of elements of the matrix data, and the preference to store the matrix data according to row major or column major; and
write the matrix data to the one or more of the plurality of memory units.

### Claim 6 (depends on 5)

The apparatus of claim 5, wherein to write the matrix data to the one or more of the plurality of memory units comprises to:
initialize the one or more of the plurality of memory units to store the matrix data;
update the matrix descriptor to include locations indicative of the one or more of the plurality of memory units; and
store the matrix descriptor in one of the plurality of memory units.

### Claim 7 (depends on 1)

The apparatus of claim 1, wherein:
The controller is to:
receive a first memory access request to write the matrix data with row-major format;
write to multiple column addresses at the row address;
receive a second memory access request to read the matrix data with column-major format; and
read from multiple row addresses at the column address.

### Claim 8 (depends on 1)

The apparatus of claim 1, wherein:
the memory comprises cross-point memory.

### Claim 9

A compute device comprising:
a data storage device having a memory including a plurality of bit-addressable memory units and a data storage controller to:
receive a memory access request from a processor to perform a read or write operation on matrix data stored in one or more of the plurality of memory units, the memory access request to indicate a start address of the matrix data;
determine, with decoder circuitry, whether the matrix data is stored in row-major or column-major format based on a matrix descriptor;
determine, with the decoder circuitry, whether to perform a row-major memory read or write operation or a column-major memory read or write operation based on whether the matrix data is stored in row-major or column-major format and based on a row-major or a column-major flag in the memory access request that is indicative of whether to perform a row-major or a column-major readout of the matrix data;
in response to a determination to perform a row-major memory read or write operation, perform the read or write operation along memory rows specified by the memory access request; and
in response to a determination to perform a column-major memory read or write operation, perform the read or write operation along memory columns specified by the memory access request.

### Claim 10 (depends on 9)

The compute device of claim 9, wherein to receive the memory access request comprises: to receive the memory access request to perform the read or write operation on the matrix data, the matrix data including the matrix descriptor having at least one of matrix dimensions, a size of elements in the matrix data, or locations of memory units in which the matrix data is stored.

### Claim 11 (depends on 9)

The compute device of claim 9, wherein the data storage controller is further to return a result of the read or write operation.

### Claim 12 (depends on 9)

The compute device of claim 9, wherein the data storage controller is further to receive a request to initialize the matrix data, the request to initialize the matrix data including a specification of matrix dimensions of the matrix data, a size of elements of the matrix data, and a preference to store the matrix data according to row major or column major.

### Claim 13 (depends on 12)

The compute device of claim 12, wherein the data storage controller is further to:
generate a matrix descriptor that is indicative of the specification of the matrix dimensions of the matrix data, the size of elements of the matrix data, and the preference to store the matrix data according to row major or column major;
initialize the one or more of the plurality of memory units to store the matrix data;
update the matrix descriptor to include locations indicative of the one or more of the plurality of memory units; and
store the matrix descriptor in one of the plurality of memory units.

### Claim 14 (depends on 9)

The compute device of claim 9, wherein:
data storage controller is to:
receive a first memory access request to write the matrix data with row-major format;
write to multiple column addresses at a row address;
receive a second memory access request to read the matrix data with column-major format; and
read from multiple row addresses at a column address.

### Claim 15 (depends on 9)

The compute device of claim 9, wherein:
the memory comprises cross-point memory.

### Claim 16

A method comprising:
receiving a memory access request from a processor to perform a read or write operation on matrix data stored in one or more of a plurality of bit-addressable memory units, the memory access request to indicate a start address of the matrix data;
determining, with decoder circuitry, whether the matrix data is stored in row-major or column-major format based on a matrix descriptor;
determining, with the decoder circuitry, whether to perform a row-major memory read or write operation or a column-major memory read or write operation based on whether the matrix data is stored in row-major or column-major format and based on a row-major or a column-major flag in the memory access request that is indicative of whether to perform a row-major or a column-major readout of the matrix data;
in response to a determination to perform a row-major memory read or write operation, perform the read or write operation along memory rows specified by the memory access request; and
in response to a determination to perform a column-major memory read or write operation, perform the read or write operation along memory columns specified by the memory access request.

### Claim 17 (depends on 16)

The method of claim 16, wherein to receive the memory access request comprises: to receive the memory access request to perform the read or write operation on the matrix data, the matrix data including the matrix descriptor having at least one of matrix dimensions, a size of elements in the matrix data, or locations of memory units in which the matrix data is stored.

### Claim 18 (depends on 16)

The method of claim 16, further comprising:
receiving a first memory access request to write the matrix data with row-major format;
writing to multiple column addresses at a row address;
receiving a second memory access request to read the matrix data with column-major format; and
reading from multiple row addresses at a column address.
