IP Library Granted Patent US 11,580,372
Granted Patent B2
US 11,580,372 · App. 17/811,409 · Granted Feb 14, 2023

Efficient convolutional engine

Inventor: Eugene M. Feinberg (San Jose, CA)
Assignee: Recogni Inc.
G06N3/063G06F5/01G06F17/15G06N3/04G06N5/046
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,580,372
App. No.
17/811,409
Granted
Feb 14, 2023
Kind
B2
Abstract

A hardware architecture for implementing a convolutional neural network.

Claims (104)

1. An apparatus, comprising:

a two-dimensional synchronous shift register comprising a three by three array of data storage elements:

[

d

1

,

1

d

1

,

2

d

1

,

3

d

2

,

1

d

2

,

2

d

2

,

3

d

3

,

1

d

3

,

2

d

3

,

3

]

wherein:

data storage element d 1,1 is electrically coupled to data storage element d 2,1 ,

data storage element d 2,1 is electrically coupled to data storage element d 3,1 ,

data storage element d 1,2 is electrically coupled to data storage element d 2,2 ,

data storage element d 2,2 is electrically coupled to data storage element d 3,2 ,

data storage element d 1,3 is electrically coupled to data storage element d 2,3 , and

data storage element d 23 is electrically coupled to data storage element d 3,3 ,

a first convolver unit comprising a first plurality of multipliers, m 1,1 1 , m 1,2 1 , m 1,3 1 , m 2,1 1 , m 2,2 1 , m 2,3 1 , m 3,1 1 , m 3,2 1 , and m 3,3 1 , wherein:

multiplier m 1,1 1 is electrically coupled in a permanent manner to data storage element d 1,1 ,

multiplier m 1,2 1 is electrically coupled in a permanent manner to data storage element d 1,2 ,

multiplier m 1,3 1 is electrically coupled in a permanent manner to data storage element d 1,3 ,

multiplier m 1,3 1 is electrically coupled in a permanent manner to data storage element d 2,1 ,

multiplier m 2,2 1 is electrically coupled in a permanent manner to data storage element d 2,2 ,

multiplier m 2,3 1 is electrically coupled in a permanent manner to data storage element d 2,3 ,

multiplier m 3,1 is electrically coupled in a permanent manner to data storage element d 3,1 ,

multiplier m 3,2 1 is electrically coupled in a permanent manner to data storage element d 3,2 , and

multiplier m 3,3 1 is electrically coupled in a permanent manner to data storage element d 3,3 ; and

a second convolver unit comprising a second plurality of multipliers, m 1,1 2 , m 1,2 2 , m 1,3 2 , m 2,1 2 , m 2,2 2 , m 2,3 2 , m 3,1 2 , m 3,2 2 , and m 3,3 2 , wherein:

multiplier m 1,1 2 is electrically coupled in a permanent manner to data storage element d 1,1 ,

multiplier m 1,2 2 is electrically coupled in a permanent manner to data storage element d 1,2 ,

multiplier m 1,3 2 is electrically coupled in a permanent manner to data storage element d 1,3 ,

multiplier m 2,1 2 is electrically coupled in a permanent manner to data storage element d 2,1 ,

multiplier m 2,2 2 is electrically coupled in a permanent manner to data storage element d 2,2 ,

multiplier m 2,3 2 is electrically coupled in a permanent manner to data storage element d 2,3 ,

multiplier m 3,1 2 is electrically coupled in a permanent manner to data storage element d 3,1 ,

multiplier m 3,2 2 is electrically coupled in a permanent manner to data storage element d 3,2 , and

multiplier m 3,3 2 is electrically coupled in a permanent manner to data storage element d 3,3 ,

wherein, at a start of a first clock cycle:

data storage element d 1,1 is configured to store data value x 1,1 ,

data storage element d 1,2 is configured to store data value x 1,2 ,

data storage element d 1,3 is configured to store data value x 1,3 ,

data storage element d 2,1 is configured to store data value x 2,1 ,

data storage element d 2,2 is configured to store data value x 2,2 ,

data storage element d 2,3 is configured to store data value x 2,3 ,

data storage element d 3,1 is configured to store data value x 3,1 ,

data storage element d 3,2 is configured to store data value x 3,2 , and

data storage element d 3,3 is configured to store data value x 3,3 ,

wherein, during the first clock cycle:

multiplier m 1,1 1 is configured to multiply data value x 1,1 with weight w 1 so as to generate a product w 1 x 1,1 ,

multiplier m 1,2 is configured to multiply data value x 12 with weight w 2 so as to generate a product w 2 x 1,2 ,

multiplier m 1,3 is configured to multiply data value x 13 with weight w 3 so as to generate a product w 3 x 1,3 ,

multiplier m 2,1 1 is configured to multiply data value x 2,1 with weight w 4 so as to generate a product w 4 x 2,1 ,

multiplier m 2,2 1 is configured to multiply data value x 2,2 with weight w 5 so as to generate a product w 5 x 2,2 ,

multiplier m 2,3 1 is configured to multiply data value x 2,3 with weight w 6 so as to generate a product w 6 x 2,3 ,

multiplier m 3,1 1 is configured to multiply data value x 3,1 with weight w 7 so as to generate a product w 7 x 3,1 ,

multiplier m 3,2 1 is configured to multiply data value x 3,2 with weight w 8 so as to generate a product w 8 x 3,2 ,

multiplier m 3,3 1 is configured to multiply data value x 3,3 with weight w 9 so as to generate a product w 9 x 3,3 ,

multiplier m 1,1 2 is configured to multiply data value x 1,1 with weight w 10 so as to generate a product w 10 x 1,1 ,

multiplier m 1,2 2 is configured to multiply data value x 12 with weight w 11 so as to generate a product w 11 x 1,2 ,

multiplier m 1,3 2 is configured to multiply data value x 13 with weight w 12 so as to generate a product w 12 x 1,3 ,

multiplier m 2,1 2 is configured to multiply data value x 2,1 with weight w 13 so as to generate a product w 13 x 2,1 ,

multiplier m 2,2 2 is configured to multiply data value x 2,2 with weight w 14 so as to generate a product w 14 x 2,2 ,

multiplier m 2,3 2 is configured to multiply data value x 2,3 with weight w 15 so as to generate a product w 15 x 2,3 ,

multiplier m 3,1 2 is configured to multiply data value x 3,1 with weight w 16 so as to generate a product w 16 x 3,1 ,

multiplier m 3,2 2 is configured to multiply data value x 3,2 with weight w 17 so as to generate a product w 17 x 3,2 ,

multiplier m 3,3 2 is configured to multiply data value x 3,3 with weight w 18 so as to generate a product w 18 x 3,3 ,

wherein, prior to a second clock cycle that follows the first clock cycle:

the first convolver unit is configured to generate a first sum of terms including at least the product w 1 x 1,1 , the product w 2 x 1,2 , the product w 3 x 1,3 , the product w 4 x 2,1 , the product w 5 x 2,2 , the product w 6 x 2,3 , the product w 7 x 3,1 , the product w 8 x 3,2 , and the product w 9 x 3,3 , and

the second convolver unit is configured to generate a second sum of terms including at least the product w 10 x 1,1 , the product w 11 x 1,2 , the product w 12 x 1,3 , the product w 13 x 2,1 , the product w 14 x 2,2 , the product w 15 x 2,3 , the product w 16 x 3,1 , the product w 17 x 3,2 , and the product w 18 x 3,3 , and

wherein, at a beginning of the second clock cycle that follows the first clock cycle:

a first accumulator is configured to store the first sum of terms, and

a second accumulator is configured to store the second sum of terms.

2. The apparatus of claim 1 , wherein the first sum of terms additionally includes b 1 , wherein b 1 is a bias value.

3. The apparatus of claim 1 , wherein the second sum of terms additionally includes b 2 , wherein b 2 is a bias value.

Assignments (2)
CHANGE OF NAME Recorded Sep 11, 2025
From: RECOGNI INC.
To: TENSORDYNE, INC.
Reel/Frame 072859/0058 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2022
From: FEINBERG, EUGENE M.
To: RECOGNI INC.
Reel/Frame 060623/0902 →
Continuity (4)
Continuation 16273616 · Feb 12, 2019
Provisional Application 62694290 · Jul 5, 2018
Provisional Application 62642578 · Mar 13, 2018
Related Publication 20220351027A1 · Nov 3, 2022