IP Library Granted Patent US 11,748,443
Granted Patent B2
US 11,748,443 · App. 17/208,214 · Granted Sep 5, 2023

Permuting in a matrix-vector processor

Inventors: Dong Hyuk Woo (San Jose, CA); Gregory Michael Thorson (Waunakee, WI); Andrew Everett Phelps (Middleton, WI); Olivier Temam (Antony, FR); Jonathan Ross (Mountain View, CA); Christopher Aaron Clark (Madison, WI)
Assignee: Google LLC
G06F17/16G06F7/76G06F9/30032G06F9/30036G06N3/063G06N3/084
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,748,443
App. No.
17/208,214
Granted
Sep 5, 2023
Kind
B2
Abstract

A circuit comprises an input register configured to receive an input vector of elements, a control register configured to receive a control vector of elements, wherein each element of the control vector corresponds to a respective element of the input vector, and wherein each element specifies a permutation of a corresponding element of the input vector, and a permute execution circuit configured to generate an output vector of elements corresponding to a permutation of the input vector. Generating each element of the output vector comprises accessing, at the input register, a particular element of the input vector, accessing, at the control register, a particular element of the control vector corresponding to the particular element of the input vector, and outputting the particular element of the input vector as an element at a particular position of the output vector that is selected based on the particular element of the control vector.

Claims (65)

1. A method for performing matrix permutations using a hardware permute execution circuit, the method comprising:

generating a plurality of control signals that are used to direct vectors of elements of an input matrix through the hardware permute execution circuit,

wherein each of the plurality of control signals controls an output of a corresponding multiplexor of a plurality of multiplexors in the permute execution circuit;

performing, using the vectors of elements, a matrix permutation of the input matrix by selectively controlling outputs of the plurality of multiplexors based on the control signals; and

generating an output matrix based on the matrix permutation of the input matrix.

2. The method of claim 1 , further comprising:

obtaining parameters that specify the matrix permutation of the input matrix; and

triggering a compute of the matrix permutation based on permutation parameters that specify:

how one or more rows of the input matrix are to be rearranged to accomplish the permutation; or

how one or more columns of the input matrix are to be rearranged to accomplish the permutation.

3. The method of claim 1 , wherein performing the matrix permutation comprises:

controlling permutations of elements in a vector of elements of the input matrix based on the plurality of control signals.

4. The method of claim 3 , wherein controlling the permutations of elements in the vector of elements comprises:

obtaining a control signal from a control register coupled to the hardware permute execution circuit;

directing the control signal to the hardware permute execution circuit based on parameters that specify a permutation of elements in the vector of elements; and

controlling the permutations based at least on the control signal obtained from the control register.

5. The method of claim 4 , wherein performing the matrix permutation comprises:

performing, by a staggered memory read flattener, a staggered read of data corresponding to the input matrix prior to selectively controlling outputs of the plurality of multiplexors based on the plurality of control signals.

6. The method of claim 5 , wherein:

the staggered memory read flattener is coupled to the hardware permute execution circuit and is operable to perform a staggered read of data being directed to the hardware permute execution circuit.

7. The method of claim 5 , wherein performing the matrix permutation comprises:

transmitting staggered data in multiple lanes with an offset, such that a respective data stream in a first lane is at least one cycle ahead of a corresponding data stream in a second lane.

8. The method of claim 1 , further comprising:

obtaining data indicating parameters of the matrix permutation;

determining, based on the data, whether the matrix permutation involves a row permutation or a column permutation; and

in response to determining, generating a subset of plurality of control signals to control one or more operations of the matrix permutation.

9. The method of claim 8 , further comprising:

storing the subset of the plurality of control signals at a control register in the form of a vector.

10. The method of claim 1 , wherein generating the output matrix comprises:

generating the output matrix from each of the selectively controlled outputs of each of the plurality of multiplexors in the hardware permute execution circuit.

11. A system comprising:

a processing device;

a non-transitory machine-readable device operable to store instructions for performing matrix permutations using a hardware permute execution circuit, the instructions being executable by the processing device to cause performance of operations comprising:

generating a plurality of control signals that are used to direct vectors of elements of an input matrix through the hardware permute execution circuit,

wherein each of the plurality of control signals controls an output of a corresponding multiplexor of a plurality of multiplexors in the permute execution circuit;

performing, using the vectors of elements, a matrix permutation of the input matrix by selectively controlling outputs of the plurality of multiplexors based on the control signals; and

generating an output matrix based on the matrix permutation of the input matrix.

12. The system of claim 11 , wherein the operations further comprise:

obtaining parameters that specify the matrix permutation of the input matrix; and

triggering a compute of the matrix permutation based on permutation parameters that specify:

how one or more rows of the input matrix are to be rearranged to accomplish the permutation; or

how one or more columns of the input matrix are to be rearranged to accomplish the permutation.

13. The system of claim 11 , wherein performing the matrix permutation comprises:

controlling permutations of elements in a vector of elements of the input matrix based on the plurality of control signals.

14. The system of claim 13 , wherein controlling the permutations of elements in the vector of elements comprises:

obtaining a control signal from a control register coupled to the hardware permute execution circuit;

directing the control signal to the hardware permute execution circuit based on parameters that specify a permutation of elements in the vector of elements; and

controlling the permutations based at least on the control signal obtained from the control register.

15. The system of claim 14 , wherein performing the matrix permutation comprises:

performing, by a staggered memory read flattener, a staggered read of data corresponding to the input matrix prior to selectively controlling outputs of the plurality of multiplexors based on the plurality of control signals.

16. The system of claim 15 , wherein:

the staggered memory read flattener is coupled to the hardware permute execution circuit and is operable to perform a staggered read of data being directed to the hardware permute execution circuit.

17. The system of claim 15 , wherein performing the matrix permutation comprises:

transmitting staggered data in multiple lanes with an offset, such that a respective data stream in a first lane is at least one cycle ahead of a corresponding data stream in a second lane.

18. The system of claim 11 , wherein the operations further comprise:

obtaining data indicating parameters of the matrix permutation;

determining, based on the data, whether the matrix permutation involves a row permutation or a column permutation; and

in response to determining, generating a subset of plurality of control signals to control one or more operations of the matrix permutation.

19. The system of claim 18 , wherein the operations further comprise:

storing the subset of the plurality of control signals at a control register in the form of a vector.

20. A non-transitory machine-readable device operable to store instructions for performing matrix permutations using a hardware permute execution circuit, the instructions being executable by a processing device to cause performance of operations comprising:

generating a plurality of control signals that are used to direct vectors of elements of an input matrix through the hardware permute execution circuit,

wherein each of the plurality of control signals controls an output of a corresponding multiplexor of a plurality of multiplexors in the permute execution circuit;

performing, using the vectors of elements, a matrix permutation of the input matrix by selectively controlling outputs of the plurality of multiplexors based on the control signals; and

generating an output matrix based on the matrix permutation of the input matrix.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 22, 2021
From: WOO, DONG HYUK; THORSON, GREGORY MICHAEL; PHELPS, ANDREW EVERETT; TEMAM, OLIVIER; ROSS, JONATHAN; CLARK, CHRISTOPHER AARON
To: GOOGLE INC.
Reel/Frame 055670/0705 →
ENTITY CONVERSION Recorded Mar 22, 2021
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 055677/0913 →
Continuity (7)
Continuation 16840972 · Apr 6, 2020
Continuation 16528826 · Aug 1, 2019
Continuation 16283913 · Feb 25, 2019
Continuation 15966275 · Apr 30, 2018
Continuation 15496418 · Apr 25, 2017
Provisional Application 62460394 · Feb 17, 2017
Related Publication 20210312011A1 · Oct 7, 2021