IP Library Granted Patent US 10,261,786
Granted Patent B2
US 10,261,786 · App. 15/454,214 · Granted Apr 16, 2019

Vector processing unit

Inventors: William Lacy (Madison, WI); Gregory Michael Thorson (Waunakee, WI); Christopher Aaron Clark (Madison, WI); Norman Paul Jouppi (Palo Alto, CA); Thomas Norrie (Mountain View, CA); Andrew Everett Phelps (Middleton, WI)
Assignee: Google LLC
G06F9/3001G06F7/588G06F9/30036G06F9/30043G06F9/30098G06F13/36G06F13/4068G06F13/4282G06F15/8053G06F15/8092G06F17/16G06F15/8046G06N3/063
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,261,786
App. No.
15/454,214
Granted
Apr 16, 2019
Kind
B2
Abstract

A vector processing unit is described, and includes processor units that each include multiple processing resources. The processor units are each configured to perform arithmetic operations associated with vectorized computations. The vector processing unit includes a vector memory in data communication with each of the processor units and their respective processing resources. The vector memory includes memory banks configured to store data used by each of the processor units to perform the arithmetic operations. The processor units and the vector memory are tightly coupled within an area of the vector processing unit such that data communications are exchanged at a high bandwidth based on the placement of respective processor units relative to one another, and based on the placement of the vector memory relative to each processor unit.

Claims (38)

1. A vector processing unit, comprising:

one or more processor units, each processor unit configured to perform arithmetic operations using a respective arithmetic unit located in each of the processor units, the arithmetic operations being associated with vectorized computations for a multi-dimensional data array;

a vector memory in data communication with each of the one or more processor units, wherein the vector memory includes memory banks configured to store data used by each of the one or more processor units to perform the arithmetic operations;

wherein the one or more processor units and the vector memory are tightly coupled within an area of the vector processing unit such that data communications between components of the vector processing unit are exchanged at a high bandwidth based on the placement of respective processor units relative to one another and based on the placement of the vector memory relative to each processor unit; and

at least one data serializer, each data serializer coupled to a respective processor unit of the one or more processor units, each data serializer being configured to serialize output data provided by the respective processor unit before the output data is received by at least one of: a matrix operation unit, a cross-lane unit, or a reduction and permute unit that are each external to the vector processing unit.

2. The vector processing unit of claim 1 , wherein the vector processing unit is configured for coupling to the matrix operation unit, the matrix operation unit being configured to receive at least two operands from a particular processor unit, the at least two operands being used by the matrix operation unit to perform operations associated with vectorized computations for the multi-dimensional data array.

3. The vector processing unit of claim 2 , wherein a first data serializer is coupled to the particular processor unit, the first data serializer being configured to serialize output data corresponding to one or more operands provided by the particular processor unit by sequentially shifting output data for each operand from the vector processing unit to the matrix operation unit over one or more clock cycles.

4. The vector processing unit of claim 1 , wherein each of the one or more processor units comprise:

a plurality of processing resources, the plurality of processing resources comprising at least one of a first arithmetic logic unit, a second arithmetic logic unit, a multi-dimensional register, or a function processor unit.

5. The vector processing unit of claim 1 , wherein the vector memory is configured to load data associated with a particular memory bank to respective processor units, and wherein the data is used by a particular resource of the respective processor units.

6. The vector processing unit of claim 1 , further comprising a crossbar connector intermediate the one or more processor units and the vector memory, the crossbar connector being configured to provide data associated with a vector memory bank to a particular resource of a plurality of processing resources of a particular processor unit.

7. The vector processing unit of claim 1 , further comprising a random number generator in data communication with a resource of a particular processor unit, the random number generator being configured to periodically generate a number that is used as an operand for at least one operation performed by the particular processor unit.

8. The vector processing unit of claim 1 , wherein the vector processing unit provides a processing lane and includes multiple processor units that each respectively form a processor sub-lane within the vector processing unit.

9. The vector processing unit of claim 8 , wherein each processor sub-lane is dynamically configured on a per-access basis to access a particular memory bank of the vector memory to retrieve data used to perform one or more arithmetic operations associated with vectorized computations for the multi-dimensional data array.

10. A computing system having a vector processing unit, the system comprising:

one or more processor units that each include a first arithmetic logic unit configured to perform a plurality of arithmetic operations;

a vector memory in data communication with each of the one or more processor units, the vector memory including memory banks configured to store data used by each of the one or more processor units to perform the arithmetic operations; and

a matrix operation unit configured to receive at least two operands from a particular processor unit, the at least two operands being used by the matrix operation unit to perform operations associated with vectorized computations;

wherein the one or more processor units and the vector memory are tightly coupled within an area of the vector processing unit such that data communications between components of the vector processing unit are exchanged at a first bandwidth based on a first distance between at least one processor unit and the vector memory;

wherein the vector processing unit and the matrix operation unit are coupled such that data communications are exchanged at a second bandwidth based on a second distance between at least one processor unit and the matrix operation unit; and

wherein the first distance is less than the second distance and the first bandwidth is greater than the second bandwidth.

11. The computing system of claim 10 , further comprising a first data serializer coupled to the particular processor unit, the first data serializer being configured to serialize output data corresponding to one or more operands provided by the particular processor unit before the output data is received by the matrix operation unit.

12. The computing system of claim 11 , further comprising a second data serializer coupled to the particular processor unit, the second data serializer being configured to serialize output data provided by the particular processor unit before the output data is received by at least one of: the matrix operation unit, a cross-lane unit, or a reduction and permute unit.

13. The computing system of claim 10 , wherein each of the one or more processor units further include a plurality of processing resources, the plurality of processing resources comprising at least one of a second arithmetic logic unit, a multi-dimensional register, or a function processor unit.

14. The computing system of claim 13 , wherein the vector memory is configured to load data associated with a particular memory bank to respective processor units, and wherein the data is used by a particular resource of the respective processor units.

15. The computing system of claim 13 , further comprising a crossbar connector intermediate the one or more processor units and the vector memory, the crossbar connector being configured to provide data associated with a vector memory bank to a particular resource of the plurality of processing resources of a particular processor unit.

16. The computing system of claim 13 , further comprising a random number generator in data communication with a resource of a particular processor unit, the random number generator being configured to periodically generate a number that is used as an operand for at least one operation performed by the particular processor unit.

17. The computing system of claim 10 , further comprising a data path that extends between the vector memory and the matrix operation unit, the data path enabling data communications associated with direct memory access operations that occur between the vector memory and at least the matrix operation unit.

18. A computer-implemented method in a computing system having a vector processing unit, the method comprising:

providing, by a vector memory, data for performing one or more arithmetic operations, the vector memory including memory banks for storing respective sets of data;

receiving, by one or more processor units, data from a particular memory bank of the vector memory, the data being used by the one or more processor units to perform one or more arithmetic operations associated with vectorized computations; and

receiving, by a matrix operation unit, at least two operands from a particular processor unit, the at least two operands being used by the matrix operation unit to perform operations associated with vectorized computations;

wherein the one or more processor units and the vector memory are tightly coupled within an area of the vector processing unit such that data communications between components of the vector processing unit occur at a first bandwidth based on a first distance between at least one processor unit and the vector memory;

wherein the vector processing unit and the matrix operation unit are coupled such that data communications occur at a second bandwidth based on a second distance between at least one processor unit and the matrix operation unit; and

wherein the first distance is less than the second distance and the first bandwidth is greater than the second bandwidth.

19. The computer-implemented method of claim 18 , further comprising:

providing, by one of a first data serializer or a second data serializer, serialized input data to at least one of: the matrix operation unit, a cross-lane unit, or a reduction and permute unit, wherein the serialized input data includes multiple operands; and

wherein the first data serializer and the second data serializer are disposed intermediate the one or more processor units and at least one of: the matrix operation unit, the cross-lane unit, or the reduction and permute unit.

Assignments (3)
CERTIFICATE OF CONVERSION CHANGING NAME Recorded Jan 5, 2018
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 045008/0560 →
CHANGE OF NAME Recorded Oct 20, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044567/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2017
From: LACY, WILLIAM; THORSON, GREGORY MICHAEL; CLARK, CHRISTOPHER AARON; JOUPPI, NORMAN PAUL; NORRIE, THOMAS; PHELPS, ANDREW EVERETT
To: GOOGLE INC.
Reel/Frame 042506/0347 →
Continuity (1)
Related Publication 20180260220A1 · Sep 13, 2018
Cited By (4)
US 12,367,383 US 12,399,714 US 12,505,330 US 12,675,434