IP Library Granted Patent US 12,118,060
Granted Patent B2
US 12,118,060 · App. 17/545,860 · Granted Oct 15, 2024

Computational circuit with hierarchical accumulator

Inventors: Davor Capalija (Toronto, CA); Ljubisa Bajic (Toronto, CA); Alex Cejkov (Toronto, CA)
Assignee: Tenstorrent Inc.
G06F17/16G11C11/419
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,118,060
App. No.
17/545,860
Granted
Oct 15, 2024
Kind
B2
Abstract

Methods and systems relating to computational circuitry are disclosed herein. A disclosed computational circuit includes a math circuit, a first accumulator, and a second accumulator. The first accumulator has a first memory. The second accumulator has a second memory. The first accumulator is communicatively connected to the math circuit and accumulates values from the math circuit in the first memory. The second accumulator is communicatively connected to the first memory and accumulates values from the first memory in the second memory. The first memory is faster and smaller than the second memory.

Claims (77)

1. A computational circuit comprising:

a math circuit;

a first accumulator communicatively connected to the math circuit, having a first memory, and that accumulates values from the math circuit in the first memory;

a second accumulator communicatively connected to the first memory, having a second memory, and that accumulates values from the first memory in the second memory; and

wherein the first memory is faster and smaller than the second memory.

2. The computational circuit of claim 1 , further comprising:

a first sector of the first memory;

a second sector of the first memory; and

wherein: (i) the first accumulator accumulates in the first sector of the first memory when the second accumulator accumulates from the second sector of the first memory; and (ii) the first accumulator accumulates in the second sector of the first memory when the second accumulator accumulates from the first sector of the first memory.

3. The computational circuit of claim 2 , wherein:

the math circuit generates an output with an output size; and

the first sector of the first memory is at least as large as the output size.

4. The computational circuit of claim 3 , wherein:

the first sector of the first memory is equal in size to the output size; and

the second sector of the first memory is equal in size to the output size.

5. The computational circuit of claim 1 , wherein:

the math circuit outputs values at an output speed;

the first accumulator accumulates a value from the math circuit in the first memory at a first accumulation operation speed;

the first accumulation operation speed is at least as fast as the output speed;

the second accumulator accumulates a value from the first memory in the second memory at a second accumulation operation speed; and

the second accumulation operation speed is slower than the first accumulation operation speed.

6. The computational circuit of claim 5 , wherein:

the first accumulator conducts a number of accumulation operations to store an output data value in the first memory in response to a set of operands being applied to the math circuit;

the second accumulator conducts a number of accumulation operation to store the output data value in the second memory in response to the set of operands being applied to the math circuit; and

the number of accumulation operations to store the output data value in the first memory is greater than the number of accumulation operation to store the output data value in the second memory.

7. The computational circuit of claim 1 , wherein:

the math circuit is a multiplier array;

the math circuit generates a set of products required to compute an output matrix; and

the first memory is at least as large as the output matrix.

8. A system using the computational circuit of claim 1 , further comprising:

a controller;

wherein the computational circuit is a matrix multiplier circuit;

wherein the controller is programmed to: (i) multiply a first matrix and a second matrix using the matrix multiplier circuit to generate an output matrix; (ii) provide the first matrix to the matrix multiplier circuit in a first series of blocks; and (iii) provide the second matrix to the matrix multiplier circuit in a second series of blocks; and

wherein the second memory is at least as large as the output matrix.

9. The system of claim 8 , further comprising:

a network;

a remote memory that is accessible via the network;

a local memory located on a substrate with the computational circuit;

wherein the first series of blocks are provided from the local memory; and

wherein the second series of blocks are provided from the remote memory.

10. The computational circuit of claim 1 , wherein:

the first memory is a register memory; and

the second memory is a static random-access memory.

11. A method comprising:

accumulating, using a first accumulator with a first memory, values from a math circuit in the first memory;

accumulating, using a second accumulator with a second memory, values from the first memory in the second memory; and

wherein the first memory is faster and smaller than the second memory.

12. The method of claim 11 , further comprising:

accumulating, using the first accumulator with the first memory, values from the math circuit in a first sector of the first memory while accumulating, using the second accumulator with the second memory, values from a second sector of the first memory in the second memory; and

accumulating, using the first accumulator with the first memory, values from the math circuit in the second sector of the first memory while accumulating, using the second accumulator with the second memory, values from the first sector of the first memory in the second memory.

13. The method of claim 12 , further comprising:

generating, using the math circuit, an output with an output size; and

wherein the first sector of the first memory is at least as large as the output size.

14. The method of claim 13 , wherein:

the first sector of the first memory is equal in size to the output size; and

the second sector of the first memory is equal in size to the output size.

15. The method of claim 12 , further comprising:

outputting values for the first accumulator using the math circuit and at an output speed;

wherein the accumulating, using the first accumulator, is done at a first per value accumulation speed which is at least as fast as the output speed; and

wherein the accumulating, using the second accumulator, is at a second per value accumulation speed which is slower than first per value accumulation speed.

16. The method of claim 15 , wherein:

the first accumulator conducts a number of accumulation operations to store an output data value in the first memory in response to a set of operands being applied to the math circuit;

the second accumulator conducts a number of accumulation operation to store the output data value in the second memory in response to the set of operands being applied to the math circuit; and

the number of accumulation operations to store the output data value in the first memory is greater than the number of accumulation operation to store the output data value in the second memory.

17. The method of claim 11 , wherein:

the math circuit is a multiplier array;

the math circuit generates a set of products required to compute an output; and

the first memory is at least twice as large as the set of products.

18. The method of claim 11 , further comprising:

multiplying a first matrix and a second matrix to produce an output matrix;

providing the first matrix and the second matrix to a computational circuit including the math circuit as a set of blocks;

accepting, using the computational circuit, the set of blocks as operands;

wherein the values from the math circuit are generated using the set of blocks as operands; and

wherein the second memory is at least as large as the output matrix.

19. The method of claim 11 , wherein:

the first memory is a register memory; and

the second memory is a static random-access memory.

Assignments (3)
CHANGE OF NAME Recorded Feb 23, 2025
From: TENSTORRENT INC.
To: TENSTORRENT AI INC.
Reel/Frame 070298/0922 →
CHANGE OF NAME Recorded Feb 23, 2025
From: TENSTORRENT AI INC.
To: TENSTORRENT AI ULC
Reel/Frame 070298/0944 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2021
From: CAPALIJA, DAVOR; BAJIC, LJUBISA; CEJKOV, ALEX
To: TENSTORRENT INC.
Reel/Frame 058340/0247 →
Continuity (1)
Related Publication 20230177106A1 · Jun 8, 2023