IP Library Granted Patent US 11,681,649
Granted Patent B2
US 11,681,649 · App. 17/451,984 · Granted Jun 20, 2023

Computational array microprocessor system using non-consecutive data formatting

Inventors: Emil Talpes (San Mateo, CA); William McGee (San Jose, CA); Peter Joseph Bannon (Woodside, CA)
Assignee: Tesla, Inc.
G06F15/8023G06N3/0454G06N3/0481G06N3/063G06N3/08G06F2207/4824H03H17/02
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,681,649
App. No.
17/451,984
Granted
Jun 20, 2023
Kind
B2
Abstract

A microprocessor system comprises a computational array and a hardware data formatter. The computational array includes a plurality of computation units that each operates on a corresponding value addressed from memory. The values operated by the computation units are synchronously provided together to the computational array as a group of values to be processed in parallel. The hardware data formatter is configured to gather the group of values, wherein the group of values includes a first subset of values located consecutively in memory and a second subset of values located consecutively in memory. The first subset of values is not required to be located consecutively in the memory from the second subset of values.

Claims (32)

1. A microprocessor system, comprising:

a computational array that includes a plurality of computation units, wherein each of the plurality of computation units operates on a corresponding value addressed from memory and the values operated by the plurality of computation units are provided to the computational array as a group of values to be processed in parallel, the group of values being utilized as a first input to the computational array; and

a hardware data formatter configured to gather the group of values based on a data formatting operation, the data formatting operation identifying at least a stride,

wherein the group of values are provided, by the hardware data formatter, to the computational array, and wherein the computational array disables particular computation units based on the stride.

2. The microprocessor system of claim 1 , wherein the values operated by the computation units are synchronously provided to the computational array.

3. The microprocessor system of claim 1 , wherein the hardware data formatter comprises a plurality of read buffers configured to store respective subsets of the values.

4. The microprocessor system of claim 3 , wherein each subset corresponds to values located consecutively in the memory, wherein a number of values from each subset is determined based on the stride, the number of values indicating values of each subset which are to be utilized for processing based on the stride, wherein remaining values of each subset are not utilized, wherein the group of values includes the values of each subset which are to be utilized and the remaining values of each subset which are not utilized.

5. The microprocessor system of claim 4 , wherein the computational array disables particular computation units corresponding to the remaining values of each subset which are not utilized.

6. The microprocessor system of claim 1 , wherein the group of values includes at least a first subset and a second subset, and wherein the first subset and the second subset is not located consecutively in the memory.

7. The microprocessor system of claim 6 , wherein a difference in memory address between the first subset and the second subset is based on the stride.

8. The microprocessor system of claim 6 , wherein the hardware data formatter is configured to determine a corresponding start memory address for the first subset and the second subset.

9. The microprocessor system of claim 8 , wherein a cache check is performed for each of the first subset and the second subset including by determining whether a value stored at the determined starting memory addresses for the first subset has been cached and determining whether a value stored at the determined starting memory addresses for the second subset has been cached.

10. The microprocessor system of claim 6 , wherein the hardware data formatter is configured to determine a corresponding end memory address for the first subset and the second subset.

11. The microprocessor system of claim 1 , wherein each computation unit of the plurality of computation units includes an arithmetic logic unit, an accumulator, and a shadow register.

12. The microprocessor system of claim 1 , wherein the first input corresponds to image data.

13. The microprocessor system of claim 1 , wherein the first input corresponds to ultrasonic or Light Detection and Ranging (LIDAR) data.

14. The microprocessor system of claim 1 , wherein a data width of the hardware data formatter is dynamically configurable.

15. The microprocessor system of claim 1 , wherein the hardware data formatter is configured to format weight inputs into an input vector and provide the input vector to a subset of the computation units associated with a corresponding subset of the first input.

16. A method comprising:

receiving a data formatting operation at a hardware data formatter, the data formatting operation indicating at least a stride;

retrieving a first group of values associated with an input data;

retrieving a second group of values associated with a weight data;

providing in parallel the first group of values and the second group of values to a computational array microprocessor comprising a plurality of computation units arranged as a matrix, wherein the computational array disables particular computation units based on the stride; and

processing the first group of values and the second group of values as operands in parallel using the computational array.

17. The method of claim 16 , wherein a subset of the first group of values are not utilized based on the stride, and wherein the subset corresponds to the particular computation units.

18. The method of claim 16 , wherein the first group of values includes a first subset of values located consecutively in a memory and a second subset of values located consecutively in the memory, and the first subset of values is not located consecutively in the memory from the second subset of values, wherein a number of values from the first subset is determined based on the stride.

19. A microprocessor system, comprising:

a computational array that includes a plurality of computation units, wherein each of the plurality of computation units operates on a corresponding value addressed from memory and the values operated by the plurality of computation units are provided to the computational array as a group of values to be processed in parallel, the group of values being utilized as a first input to the computational array, wherein the group of values includes at least 96 values and the group of values includes at least 12 subsets of values;

and

a hardware data formatter configured to gather the group of values based on a data formatting operation, the data formatting operation identifying at least a stride, and the hardware data formatter comprising a plurality of read buffers configured to store the at least 12 subsets,

wherein the group of values are provided, by the hardware data formatter, to the computational array, and wherein the computational array disables particular computation units based on the stride.

20. The microprocessor system of claim 19 , wherein each read buffer is single wide register, a single memory storage location, individual registers, or individual memory storage locations.

Continuity (6)
Continuation 15920173 · Mar 13, 2018
Continuation In Part 15710433 · Sep 20, 2017
Provisional Application 62628212 · Feb 8, 2018
Provisional Application 62625251 · Feb 1, 2018
Provisional Application 62536399 · Jul 24, 2017
Related Publication 20220050806A1 · Feb 17, 2022
Cited By (4)
US 12,216,610 US 12,353,971 US 12,455,739 US 12,536,131