IP Library Granted Patent US 12,182,537
Granted Patent B2
US 12,182,537 · App. 17/175,559 · Granted Dec 31, 2024

Transposing in a matrix-vector processor

Inventors: Jonathan Ross (Mountain View, CA); Robert David Nuckolls (Santa Clara, CA); Christopher Aaron Clark (Madison, WI); Chester Li (Cupertino, CA); Gregory Michael Thorson (Waunakee, WI)
Assignee: Google LLC
G06F7/78G06F7/00G06F7/768G11C7/1012G11C8/04G11C19/28
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 12,182,537
App. No.
17/175,559
Granted
Dec 31, 2024
Kind
B2
Abstract

A circuit for transposing a matrix comprising reversal circuitry configured, for each of one or more diagonals of the matrix, to receive elements of the matrix in a first vector and generate a second vector that includes the elements of the matrix in an order that is a reverse of an order of the elements of the matrix in the first vector, and rotation circuitry configured, for each of the one or more diagonals of the matrix, to determine a number of positions by which to rotate the elements of the matrix in the second vector, receive the second vector of elements of the matrix, and generate a third vector that includes the elements of the matrix in the second vector in an order that is a rotation of the elements of the matrix in the second vector by the determined number of positions.

Claims (43)

1. A method performed by a circuit comprising reversal circuitry, counter circuitry, and rotation circuitry, wherein the method comprises:

receiving, by the reversal circuitry of the circuit, elements of a diagonal of a matrix that are positioned in a first vector;

inserting, by the reversal circuitry of the circuit, the received elements of the diagonal in a second vector in an order that is a reverse of the order of the elements in the first vector;

counting, by the counter circuitry of the circuit, a predetermined number of positions;

receiving, by the rotation circuitry of the circuit and from the counter circuitry of the circuit, one or more counter signals indicating the predetermined number of positions; and

generating, by the rotation circuitry of the circuit and based on the one or more counter signals, a third vector by placing the elements of the second vector in the third vector in an order that is a rotation of the elements of the diagonal by the predetermined number of positions that is counted by the counter circuitry of the circuit.

2. The method of claim 1 , wherein the elements of the diagonal of the matrix that are positioned in the first vector is generated by at least one multiplexer of the circuit.

3. The method of claim 2 , wherein the at least one multiplexer comprises a number of multiplexers, the number being equal to a width of the circuit.

4. The method of claim 2 , wherein:

the at least one multiplexer is a plurality of multiplexers; and

each multiplexer of the plurality of multiplexers generates a corresponding element of the elements of the diagonal.

5. The method of claim 2 , wherein the matrix is stored in a static random-access memory accessible by the circuit.

6. The method of claim 1 , wherein counting the predetermined number of positions by the circuit further comprises:

adjusting, by the circuit, the predetermined number, the adjustment of the predetermined number comprising:

decrementing the predetermined number in response to the predetermined number being positive; and

resetting the predetermined number to an initial value in response to the predetermined number being zero.

7. The method of claim 1 , wherein the matrix comprises two or more matrices.

8. The method of claim 1 , wherein the rotation is in a direction indicated by a signal received by the circuit.

9. The method of claim 1 , wherein the rotation comprises bit-wise shifting of the elements of the diagonal.

10. The method of claim 1 , wherein the elements in the third vector form a diagonal of a transpose of the matrix.

11. A non-transitory computer program product storing instructions that, when executed by at least one programmable processor within a circuit that comprises reversal circuitry, counter circuitry, and rotation circuitry, cause the at least one programmable processor to perform operations comprising:

receiving, by the reversal circuitry of the circuit, elements of a diagonal of a matrix that are inserted in a first vector;

positioning, by the reversal circuitry of the circuit, the received elements of the diagonal in a second vector in an order that is a reverse of the order of the elements in the first vector;

counting, by the counter circuitry of the circuit , a predetermined number of positions;

receiving, by the rotation circuitry of the circuit and from the counter circuitry of the circuit, one or more counter signals indicating the predetermined number of positions; and

generating, by the rotation circuitry of the circuit and based on the one or more counter signals, a third vector by inserting the elements of the second vector in the third vector in an order that is a rotation of the elements of the diagonal by the predetermined number of positions that is counted by the counter circuitry of the circuit.

12. The non-transitory computer program product of claim 11 ,

wherein the elements of the diagonal of the matrix that are inserted in the first vector, are generated by at least one multiplexer of the circuit.

13. The non-transitory computer program product of claim 12 , wherein:

the at least one multiplexer comprising a number of multiplexers, the number being equal to a width of the circuit; and

each multiplexer generates a corresponding element of the elements of the diagonal.

14. The non-transitory computer program product of claim 11 , wherein counting the predetermined number of positions further comprises:

adjusting, by the circuit, the predetermined number, the adjustment of the predetermined number comprising:

decrementing the predetermined number in response to the predetermined number being positive; and

resetting the predetermined number to an initial value in response to the predetermined number being zero.

15. The non-transitory computer program product of claim 11 , wherein:

the rotation is in a direction indicated by a signal received by the circuit; and

the rotation comprises bit-wise shifting of the elements of the diagonal.

16. The non-transitory computer program product of claim 11 , wherein the elements in the third vector form a diagonal of a transpose of the matrix.

17. A circuit comprising reversal circuitry, counter circuitry, and rotation circuitry, wherein the circuit is configured to receive, by the reversal circuitry, a first vector that has elements of a diagonal of a matrix in a first order; generate, by the reversal circuitry, a second vector that has the elements in a second order that is a reverse of the first order; count, by the counter circuitry, a predetermined number of positions; receive, by the rotation circuitry and from the counter circuitry, one or more counter signals indicating the predetermined number of positions; and generate, by the rotation circuitry, a third vector that has the elements in a third order that is a rotation of the elements in the second order by the predetermined number of positions that is counted by the counter circuitry.

18. The circuit of claim 17 , further comprising at least one multiplexer configured to generate the first vector having elements of the diagonal of the matrix.

19. The circuit of claim 18 , wherein the matrix is stored in a static random-access memory accessible by the circuit.

20. The circuit of claim 17 , wherein the elements in the third vector form a diagonal of a transpose of the matrix.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE TO 9/29/2017 PREVIOUSLY RECORDED ON REEL 55313 FRAME 577. ASSIGNOR(S) HEREBY CONFIRMS THE CORRECTIVE ASSIGNMENT. Recorded Oct 2, 2024
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 069105/0150 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 16, 2021
From: ROSS, JONATHAN; NUCKOLLS, ROBERT DAVID; CLARK, CHRISTOPHER AARON; LI, CHESTER; THORSON, GREGORY MICHAEL
To: GOOGLE INC.
Reel/Frame 055275/0025 →
CHANGE OF NAME Recorded Feb 16, 2021
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 055313/0577 →
Continuity (5)
Continuation 16579604 · Sep 23, 2019
Continuation 15896301 · Feb 14, 2018
Continuation 15614818 · Jun 6, 2017
Provisional Application 62459943 · Feb 16, 2017
Related Publication 20210165635A1 · Jun 3, 2021