IP Library Granted Patent US 12,339,923
Granted Patent B2
US 12,339,923 · App. 18/241,805 · Granted Jun 24, 2025

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 12,339,923
App. No.
18/241,805
Granted
Jun 24, 2025
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 (31)

1. A special-purpose hardware integrated circuit, the circuit comprising:

a memory configured to store an input matrix and an output matrix;

a permute unit coupled to the memory, wherein the permute unit comprises:

an input register that stores input vectors corresponding to the input matrix;

a control register configured to store a control vector of control signals;

a permute execution circuit coupled to the input register and the control register, the permute execution circuit being configured to:

i) compute a matrix permutation of the input matrix by permuting the input vectors based on the control signals of the control vector; and

ii) generate the output matrix as a permutation of the input matrix.

2. The circuit of claim 1 , wherein the permute execution circuit computes the matrix permutation of the input matrix by multiplying, in hardware, the input matrix with a permutation matrix.

3. The circuit of claim 2 , wherein:

i) the permutation matrix is an identity matrix comprising an n×n matrix that has a plurality of ones, “1s”, along a principal diagonal of the identity matrix; and

ii) the principal diagonal extends from a (0,0) position to the (n,n) position of the identity matrix.

4. The circuit of claim 1 , wherein the permute unit is configured to perform an entire permutation of the input matrix based on a set of received information and without additional instructions from a source external to the permute unit.

5. The circuit of claim 4 , wherein the set of received information comprises control signals, a matrix input, a vector input, and permutation parameters.

6. The circuit of claim 5 , wherein the permutation parameters comprise a permutation matrix comprising data that indicates whether the matrix permutation is a row permutation or a column permutation.

7. The circuit of claim 5 , wherein the control vector of control signals is generated based on the permutation parameters.

8. The circuit of claim 7 , wherein the control vector of control signals comprises elements that specify a number of positions to rotate corresponding elements of the input vectors that correspond to the input matrix.

9. The circuit of claim 7 , wherein the control vector of control signals comprises elements that represent pointers to where elements of the input vectors corresponding to the input matrix are to be stored in a memory of the special-purpose hardware integrated circuit.

10. The circuit of claim 7 , wherein:

i) the control signals of the control vector are represented by data stored in the control register; and

ii) the data representing the control signals is used for controlling the permute execution circuit to perform a permutation of the input vectors stored in the input register.

11. The circuit of claim 7 , wherein the control vector of control signals comprises elements that indicate positions where corresponding elements of the input vectors are to be included and stored in an output vector of the output matrix.

12. The circuit of claim 7 , wherein the permute execution circuit comprises:

a plurality of multiplexors that are coupled to the input register, each of the plurality of multiplexors being configured to:

i) receive elements of an input vector stored in the input register; and

ii) generate an output vector that is a permutation of the input vector stored in the input register.

13. The circuit of claim 12 , the plurality of multiplexors corresponds to a number of elements of the input register.

14. The circuit of claim 12 , wherein:

i) each of the plurality of multiplexors is configured as an n-to-one multiplexor; and

ii) n corresponds to a dimension of the input matrix that the permute unit is configured to process.

15. The circuit of claim 14 , wherein the control signals of the control vector stored at the control register are used in controlling outputs of the plurality of multiplexors of the permute execution circuit.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2023
From: WOO, DONG HYUK; THORSON, GREGORY MICHAEL; PHELPS, ANDREW EVERETT; TEMAM, OLIVIER; ROSS, JONATHAN; CLARK, CHRISTOPHER AARON
To: GOOGLE INC.
Reel/Frame 064927/0134 →
CHANGE OF NAME Recorded Sep 15, 2023
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 064927/0191 →
Continuity (8)
Continuation 17208214 · Mar 22, 2021
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 20240211534A1 · Jun 27, 2024
References Cited (80)
US 4495598A · Vahlstrom et al. · 1985 [cited by applicant]
US 4653019A · Hodge et al. · 1987 [cited by applicant]
US 4769790A · Yamashita · 1988 [cited by applicant]
US 4782457A · Cline · 1988 [cited by applicant]
US 4829460A · Ito · 1989 [cited by applicant]
US 4831571A · Tokumaru · 1989 [cited by applicant]
US 4839839A · Tokumaru et al. · 1989 [cited by applicant]
US 4839840A · Tokumaru · 1989 [cited by applicant]
US 4962500A · Nakagawa · 1990 [cited by applicant]
US 5073864A · Methvin et al. · 1991 [cited by applicant]
US 5130941A · Kudou · 1992 [cited by applicant]
US 5155698A · Niimi · 1992 [cited by applicant]
US 5295250A · Komoto et al. · 1994 [cited by applicant]
US 5465222A · Seckora · 1995 [cited by applicant]
US 5465223A · Nichimura · 1995 [cited by applicant]
US 5471628A · Phillips et al. · 1995 [cited by applicant]
US 5532949A · Fujihara · 1996 [cited by applicant]
US 5652718A · Thomson et al. · 1997 [cited by applicant]
US 5696803A · Bartholomew · 1997 [cited by applicant]
US 5737252A · Hollmann et al. · 1998 [cited by applicant]
US 5818894A · Song · 1998 [cited by applicant]
US 5844828A · Fujimura et al. · 1998 [cited by applicant]
US 5941937A · Yamamoto et al. · 1999 [cited by applicant]
US 5941938A · Thayer · 1999 [cited by examiner]
US 6041404A · Roussel et al. · 2000 [cited by applicant]
US 6078937A · Vatinel · 2000 [cited by applicant]
US 6304956B1 · Tran · 2001 [cited by applicant]
US 6314156B1 · Moll et al. · 2001 [cited by applicant]
US 6877019B2 · Bandy et al. · 2005 [cited by applicant]
US 7042248B1 · Hutton et al. · 2006 [cited by applicant]
US 7155601B2 · Chennupaty et al. · 2006 [cited by applicant]
US 7237097B2 · Kissell et al. · 2007 [cited by applicant]
US 7356676B2 · Paver et al. · 2008 [cited by applicant]
US 7392368B2 · Khan et al. · 2008 [cited by applicant]
US 7464255B1 · Tan et al. · 2008 [cited by applicant]
US 7518400B1 · Redgrave et al. · 2009 [cited by applicant]
US 7761694B2 · Abdallah et al. · 2010 [cited by applicant]
US 7783690B2 · Leenstra et al. · 2010 [cited by applicant]
US 7933405B2 · Knowles et al. · 2011 [cited by applicant]
US 8078836B2 · Sperber et al. · 2011 [cited by applicant]
US 8082526B2 · Hutton et al. · 2011 [cited by applicant]
US 8270558B2 · Dielissen · 2012 [cited by applicant]
US 8291002B2 · Craske · 2012 [cited by applicant]
US 8423752B2 · Symes et al. · 2013 [cited by applicant]
US 8707123B2 · Liu et al. · 2014 [cited by applicant]
US 8713399B1 · Tsatsaragkos et al. · 2014 [cited by applicant]
US 8861719B2 · Lee et al. · 2014 [cited by applicant]
US 8914613B2 · Sperber et al. · 2014 [cited by applicant]
US RE45458E · Roussel et al. · 2015 [cited by applicant]
US 9058301B2 · Agrawal et al. · 2015 [cited by applicant]
US 9229718B2 · Macy et al. · 2016 [cited by applicant]
US 9524168B2 · Ould-Ahmed-Vall et al. · 2016 [cited by applicant]
US 9672034B2 · Sperber et al. · 2017 [cited by applicant]
US 20040054877A1 · Macy et al. · 2004 [cited by applicant]
US 20050289323A1 · Wong et al. · 2005 [cited by applicant]
US 20090037694A1 · Luick et al. · 2009 [cited by applicant]
US 20110264723A1 · Yagain · 2011 [cited by applicant]
US 20130212355A1 · Mimar · 2013 [cited by applicant]
US 20150127924A1 · Prasad et al. · 2015 [cited by applicant]
US 20170286112A1 · Espasa et al. · 2017 [cited by applicant]
CN 101162453A · 2008 [cited by applicant]
CN 101482810A · 2009 [cited by applicant]
CN 101588182A · 2009 [cited by applicant]
CN 103199873A · 2013 [cited by applicant]
CN 105993178A · 2016 [cited by applicant]
CN 110020404A · 2019 [cited by applicant]
GB 2394571A · 2004 [cited by applicant]
GB 2561674A · 2018 [cited by examiner]
TW 201706917A · 2017 [cited by applicant]
TW I640921B · 2018 [cited by applicant]
WO WO2006033056A · 2006 [cited by applicant]
WO WO2009144681A · 2009 [cited by applicant]
WO WO2016105819A · 2016 [cited by applicant]
Extended European Search Report in European Appln. No. 18157351.0, mailed on Jul. 6, 2018, 6 pages. [cited by applicant]
International Search Report issued in International Appln. No. PCT/US2018/000010, mailed on Jun. 4, 2018, 12 pages. [cited by applicant]
Office Action in Chinese Appln. No. 202010080532.6, dated Jan. 5, 2023, 18 pages (with English Translation). [cited by applicant]
Office Action in Great Britain Appln. No. GB1802586.6, dated Jun. 2, 2020, 2 pages. [cited by applicant]
Office Action in Taiwan Appln. No. 108121372, dated Jul. 6, 2020, 17 pages (with English translation). [cited by applicant]
Office Action issued in Chinese Appln. No. 201810153838.2, mailed on Mar. 27, 2019, 16 pages (with English translation). [cited by applicant]
Search and Examination Report in Great Britain Appln. No. GB1802586.6, mailed on Aug. 13, 2018, 7 pages. [cited by applicant]