IP Library Granted Patent US 11,307,977
Granted Patent B2
US 11,307,977 · App. 16/144,459 · Granted Apr 19, 2022

Technologies for direct matrix read and write operations

Inventors: Jawad B. Khan (Portland, OR); Richard Coulson (Portland, OR)
Assignee: Intel Corporation
G06F12/0207G06F3/0608G06F3/0611G06F3/0634G06F3/0638G06F3/0673G06F3/0683G06F15/7821G06F2212/1024
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,307,977
App. No.
16/144,459
Granted
Apr 19, 2022
Kind
B2
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 (61)

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.

2. 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.

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

4. 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.

5. 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.

6. 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.

7. 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.

8. The apparatus of claim 1 , wherein:

the memory comprises cross-point memory.

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.

10. 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.

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

12. 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.

13. 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.

14. 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.

15. The compute device of claim 9 , wherein:

the memory comprises cross-point memory.

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.

17. 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.

18. 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.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2018
From: COULSON, RICHARD; KHAN, JAWAD B.
To: INTEL CORPORATION
Reel/Frame 047492/0498 →
Continuity (1)
Related Publication 20190042401A1 · Feb 7, 2019