IP Library Granted Patent US 10,768,899
Granted Patent B2
US 10,768,899 · App. 16/260,548 · Granted Sep 8, 2020

Matrix normal/transpose read and a reconfigurable data processor including same

Inventors: David Alan Koeplinger (Menlo Park, CA); Raghu Prabhakar (Sunnyvale, CA); Ram Sivaramakrishnan (San Jose, CA); David Brian Jackson (Dana Point, CA); Mark Luttrell (Cedar Park, TX)
Assignee: SambaNova Systems, Inc.
G06F7/78G06F5/08G06F7/768G06F12/0207
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 10,768,899
App. No.
16/260,548
Granted
Sep 8, 2020
Kind
B2
Abstract

A configurable circuit configurable according to the data width of elements of a matrix is described that includes a memory array, logic to write a matrix to the memory array having elements with a data width which can be specified using configuration data, logic for a transpose read of the matrix as-written and logic for normal read of the matrix as-written. The memory array includes first and second read ports operable in parallel. Transpose read logic and normal read logic can be coupled to the first and second read ports, respectively, allowing transpose and normal read of a matrix simultaneously.

Claims (53)

1. A configurable circuit, comprising:

a memory array;

logic to write a matrix to the memory array, the matrix having elements with a data width having a number D of bits of data;

transpose read logic configurable according to the data width, to output vectors of a transpose read of the matrix; and

normal read logic to output vectors of a normal read of the matrix;

wherein the transpose read logic and the normal read logic are operable on the memory array to output in parallel respective vectors in transposed and normal orders.

2. The circuit of claim 1 , wherein the memory array includes a first read port and a second read port, and the normal read logic is operably coupled to the first read port and the transpose read logic is operably coupled to the second read port.

3. A configurable circuit, comprising:

a memory array;

logic to write a matrix to the memory array, the matrix having elements with a data width having a number D of bits of data;

transpose read logic configurable according to the data width, to output vectors of a transpose read of the matrix; and

normal read logic to output vectors of a normal read of the matrix;

wherein the memory array includes a plurality of slots, where slots in the plurality of slots include have a slot width (number of columns) equal to a multiple M greater than 1 of the data width.

4. The circuit of claim 3 , wherein the logic to write comprises logic to organize sets of M rows of the matrix in the memory into a plurality of rows of atoms of M by M elements, atoms in a row of atoms being stored in respective slots in the plurality of slots, and rotated in position in the row of atoms relative to an input matrix as a function of a row number of the row of atoms in the plurality of rows of atoms.

5. The circuit of claim 4 , wherein the transpose read logic includes logic to select atoms in the slots, and store the selected atoms in a reshape circuit, and logic to transpose the selected atoms to form the output vectors of the transpose read of the matrix.

6. The circuit of claim 5 , wherein the reshape circuit includes a FIFO buffer having a depth at least as high as a maximum of M according to the data width of the elements of the matrix, and the logic to transpose the atoms includes a multiplexer tree configurable according to the data width.

7. The circuit of claim 5 , including logic to operate the reshape circuit using double buffering.

8. The circuit of claim 5 , wherein the transpose read logic is configurable for a selected one of a plurality of data types, and in which the data width differs for different data types in the plurality of data types.

9. The circuit of claim 3 , wherein the transpose read logic is configurable for a selected one of a plurality of data types, and the data widths differ for different data types in the plurality of data types, and the slot width is at least two times a maximum of the data width of data types in the plurality of data types.

10. A reconfigurable data processor, comprising:

an array of configurable units; and

a bus system connected to the array of configurable units which communicates data at a bus clock rate; wherein a configurable unit in the array of configurable units includes:

a memory array,

logic to write a matrix to the memory array at the bus clock rate, the matrix having elements with a data width having a number D of bits of data; and

transpose read logic configurable according to the data width, to output vectors of a transpose read of the matrix at the bus clock rate,

wherein the transpose read logic and the normal read logic are operable on the memory array to output in parallel respective vectors in transposed and normal orders.

11. The reconfigurable data processor of claim 10 , including normal read logic configurable according to the data width, to output vectors of a normal read of the matrix at the bus clock rate, and wherein the memory array includes a first read port and a second read port, and the normal read port is operably coupled to the first read port, and the transpose read logic is operably coupled to the second read port.

12. A reconfigurable data processor, comprising:

an array of configurable units; and

a bus system connected to the array of configurable units which communicates data at a bus clock rate; wherein a configurable unit in the array of configurable units includes:

a memory array,

logic to write a matrix to the memory array at the bus clock rate, the matrix having elements with a data width having a number D of bits of data; and

transpose read logic configurable according to the data width, to output vectors of a transpose read of the matrix at the bus clock rate;

wherein the memory array includes a plurality of slots, where slots in the plurality of slots include having a slot width (number of columns) equal to a multiple M greater than 1 of the data width.

13. The reconfigurable data processor of claim 12 , wherein the transpose read logic includes write logic to organize sets of M rows of the matrix in the memory into a plurality of rows of atoms of M by M elements, atoms in a row of atoms being stored in respective slots in the plurality of slots, and rotated in position in the row of atoms relative to an input matrix as a function of a row number of the row of atoms in the plurality of rows of atoms.

14. The reconfigurable data processor of claim 13 , wherein the transpose read logic includes logic to select atoms in the slots, and store the selected atoms in a reshape circuit, the reshape circuit including circuits to transpose the selected atoms to form the output vectors of the transpose read of the matrix.

15. The reconfigurable data processor of claim 14 , wherein the reshape circuit includes a FIFO buffer having a depth at least as high as a maximum of M according to the data type of the elements of the matrix, and the circuit to transpose the atoms comprises a multiplexer tree configurable according to the data width.

16. The reconfigurable data processor of claim 14 , including logic to operate the reshape circuit using double buffering.

17. The reconfigurable data processor of claim 14 , wherein the transpose read logic is configurable for a selected one of a plurality of data types, and in which the data width differs for different data types in the plurality of data types.

18. The reconfigurable data processor of claim 12 , wherein the transpose read logic is configurable for a selected one of a plurality of data types, and in which the data width differs for different data types in the plurality of data types, and the slot width is at least two times a maximum of the data width of data types in the plurality of data types.

19. A memory circuit, comprising:

a memory array;

write logic to write a matrix to the memory array, the matrix having elements with a data width having a number D of bits of data, wherein the memory array includes a plurality of slots readable in parallel on different rows, where slots in the plurality of slots have a slot width equal to a multiple M of the data width, with logic to organize, when M is greater than 1, sets of M rows of the matrix in the memory array into a plurality of rows of atoms of M by M elements, so that atoms in a row of atoms are stored in respective slots in the plurality of slots, and rotated in position in the row of atoms relative to an input matrix as a function of a row number of the row of atoms in the plurality of rows of atoms; and

transpose read logic to output vectors of a transpose read of the matrix, including logic to select atoms in the slots, and store the selected atoms in a reshape circuit, the reshape circuit including circuits to transpose the selected atoms to form output vectors of a transpose read of the matrix.

20. The circuit of claim 19 , wherein the memory array includes a first read port and a second read port, and including normal read logic to output vectors of a normal read of the matrix operably coupled to the first read port, wherein the transpose read logic is operably coupled to the second read port.

21. The circuit of claim 20 , wherein the first read port and the second read port are operable in parallel.

22. The circuit of claim 19 , wherein the reshape circuit includes a FIFO buffer having a depth at least as high as a maximum of M according to the data width, and a multiplexer tree.

23. The circuit of claim 22 , including logic to operate the FIFO using double buffering.

24. The circuit of claim 19 , wherein the slot width is at least two times a maximum of the data width.

25. A memory circuit for transpose read of a matrix, comprising:

memory;

means for organizing sets of M rows of a matrix into a plurality of slots having a slot width of M elements in the memory into a plurality of rows of atoms of M by M elements, atoms in a row of atoms being stored in respective slots in the memory, and rotated in position in the row of atoms relative to an input matrix as a function of a row number of the row of atoms in the plurality of rows of atoms; and

means for selecting atoms in the slots to be read, and transposing the selected atoms to form output vectors of the transpose read of the matrix.

Assignments (2)
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Apr 18, 2025
From: SAMBANOVA SYSTEMS, INC.
To: SILICON VALLEY BANK, A DIVISION OF FIRST-CITIZENS BANK & TRUST COMPANY, AS AGENT
Reel/Frame 070892/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 25, 2019
From: KOEPLINGER, DAVID ALAN; PRABHAKAR, RAGHU; SIVARAMAKRISHNAN, RAM; JACKSON, DAVID BRIAN; LUTTRELL, MARK
To: SAMBANOVA SYSTEMS, INC.
Reel/Frame 048423/0394 →
Continuity (1)
Related Publication 20200241844A1 · Jul 30, 2020
Cited By (8)
US 12,197,379 US 12,306,783 US 12,380,060 US 12,413,530 US 12,487,965 US 12,602,349 US 12,681,806 US 12,705,205