IP Library Granted Patent US 11,514,294
Granted Patent B2
US 11,514,294 · App. 15/903,754 · Granted Nov 29, 2022

System and method for energy-efficient implementation of neural networks

Inventors: William Martin Snelgrove (Toronto, CA); Darrick Wiebe (Toronto, CA)
Assignee: UNTETHER AI CORPORATION
G06N3/0454G06F9/3887G06F13/4022G06N3/063Y02D10/00
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,514,294
App. No.
15/903,754
Granted
Nov 29, 2022
Kind
B2
Abstract

A system and method for enhancing C*RAM, improving its performance for known applications such as video processing but also making it well suited to low-power implementation of neural nets. The required computing engine is decomposed into banks of enhanced C*RAM each having a SIMD controller, thus allowing operations at several scales simultaneously. Several configurations of suitable controllers are discussed, along with communication structures and enhanced processing elements.

Claims (51)

1. A device comprising:

memory;

a plurality of processing elements for performing parallel operations using the memory;

a plurality of controllers for controlling the plurality of processing elements wherein one or more of the plurality of controllers are configured to control a plurality of segment switches;

a column bus operable to unidirectionally or bidirectionally communicate information among any of the plurality of processing elements, wherein the column bus is segmented and wherein the plurality of controllers are interconnected by the column bus and are configured to share information via the column bus; and

a row bus segmented by the plurality of segment switches, the row bus operable to unidirectionally or bidirectionally communicate information among any of the plurality of controllers and the plurality of processing elements, wherein the row bus is segmented to provide pipelined flow of information among segments of the row bus.

2. The device of claim 1 , wherein a direction of the row bus is set by the plurality of controllers.

3. The device of claim 1 , wherein a direction of the row bus is set by a state of one or more of the plurality of processing elements.

4. The device of claim 1 , wherein the row bus is configured to provide opcodes.

5. The device of claim 1 , wherein at least one of the processing elements comprises a multiplexer configured to put information onto the row bus.

6. The device of claim 5 , wherein the multiplexer is further configured to take information from the row bus.

7. The device of claim 1 , wherein the row bus is wire-ANDed.

8. The device of claim 1 , wherein the row bus is segmented by latching.

9. The device of claim 1 , wherein one or more of the plurality of processing elements is configured to control the plurality of segment switches.

10. The device of claim 1 , further comprising a plurality of row buses, each row bus of the plurality of row buses operable to unidirectionally or bidirectionally communicate information among any of the plurality of controllers and the plurality of processing elements, wherein at least two of the plurality of row buses are segmented to a different degree.

11. A device comprising:

a plurality of banks, each bank including memory and a plurality of processing elements for performing parallel operations using the memory;

a plurality of controllers for controlling the plurality of processing elements wherein the plurality of controllers are configured to control a plurality of segment switches;

a column bus operable to unidirectionally or bidirectionally communicate information among any of the plurality of processing elements, wherein the column bus is segmented by the plurality of segment switches and wherein the plurality of controllers are interconnected by the column bus and are configured to share information via the column bus; and

a row bus operable to unidirectionally or bidirectionally communicate information among any of the plurality of controllers and the plurality of processing elements, wherein the row bus is segmented.

12. The device of claim 11 , wherein the column bus is operable to unidirectionally or bidirectionally communicate information among any of the plurality of controllers and the plurality of processing elements.

13. The device of claim 11 , wherein a direction of column bus is set by the plurality of controllers.

14. The device of claim 11 , wherein a direction of the column bus is set by a state of one or more of the plurality of processing elements.

15. The device of claim 11 , wherein the column bus is configured to provide opcodes.

16. The device of claim 11 , wherein at least one of the processing elements comprises a multiplexer configured to put information onto the column bus.

17. The device of claim 16 , wherein the multiplexer is further configured to take information from the column bus.

18. The device of claim 11 , wherein the column bus is wire-ANDed.

19. The device of claim 11 , wherein the column bus is segmented by latching.

20. The device of claim 11 , wherein one or more of the plurality of processing elements is configured to control the plurality of segment switches.

21. The device of claim 11 , further comprising a plurality of column buses, each column bus of the plurality of column buses operable to unidirectionally or bidirectionally communicate information among any of the plurality of controllers and the plurality of processing elements, wherein at least two of the column buses are segmented to a different degree.

22. The device of claim 11 , wherein the plurality of controllers have nearest-neighbor interconnections configured to enable synchronization.

23. The device of claim 11 , wherein the plurality of controllers are interconnected by the column bus are configured to share decoded instructions via the column bus.

24. The device of claim 11 , wherein the row bus is segmented by latching.

25. The device of claim 11 , wherein the row bus is segmented by the plurality of segment switches.

26. A device comprising:

memory;

a plurality of processing elements for performing parallel operations using the memory, wherein one or more of the plurality of processing elements is configured to control a plurality of segment switches;

a plurality of controllers for controlling the plurality of processing elements;

a column bus operable to unidirectionally or bidirectionally communicate information among any of the plurality of processing elements, wherein the column bus is segmented and wherein the plurality of controllers are interconnected by the column bus and are configured to share information via the column bus; and

a row bus segmented by the plurality of segment switches, the row bus operable to unidirectionally or bidirectionally communicate information among any of the plurality of controllers and the plurality of processing elements, wherein the row bus is segmented to provide pipelined flow of information among segments of the row bus.

27. A device comprising:

memory;

a plurality of processing elements for performing parallel operations using the memory;

a plurality of controllers for controlling the plurality of processing elements;

a column bus operable to unidirectionally or bidirectionally communicate information among any of the plurality of processing elements, wherein the column bus is segmented and wherein the plurality of controllers are interconnected by the column bus and are configured to share information via the column bus; and

a plurality of row buses, each row bus operable to unidirectionally or bidirectionally communicate information among any of the plurality of controllers and the plurality of processing elements, wherein at least two row buses of the plurality of row buses are segmented to provide pipelined flow of information among segments of the plurality of row buses, and wherein the at least two row buses of the plurality of row buses are segmented to a different degree.

28. A device comprising:

a plurality of banks, each bank including memory and a plurality of processing elements for performing parallel operations using the memory;

a plurality of controllers for controlling the plurality of processing elements;

a plurality of column buses, each column bus of the plurality of column buses operable to unidirectionally or bidirectionally communicate information among any of the plurality of controllers and the plurality of processing elements, wherein the plurality of controllers are interconnected by the plurality of column buses and are configured to share information via the plurality of column buses, wherein the plurality of column buses are segmented and at least two column buses of the plurality of column buses are segmented to a different degree; and

a row bus operable to unidirectionally or bidirectionally communicate information among any of the plurality of controllers and the plurality of processing elements, wherein the row bus is segmented.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2026
From: UNTETHER AI CORPORATION
To: AT-MEMORY COMPUTING LP
Reel/Frame 075495/0905 →
RELEASE OF SECURITY INTEREST Recorded Jun 17, 2025
From: NATIONAL BANK OF CANADA
To: UNTETHER AI CORPORATION
Reel/Frame 071655/0897 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 8, 2021
From: KAPIK INC.
To: UNTETHER AI CORPORATION
Reel/Frame 055178/0399 →
CONFIRMATION AND ASSIGNMENT Recorded Feb 8, 2021
From: SNELGROVE, WILLIAM MARTIN
To: KAPIK INC.
Reel/Frame 055253/0804 →
CONFIRMATION AND ASSIGNMENT Recorded Feb 8, 2021
From: WIEBE, DARRICK
To: KAPIK INC.
Reel/Frame 055261/0192 →
Continuity (2)
Provisional Application 62463318 · Feb 24, 2017
Related Publication 20180253639A1 · Sep 6, 2018
Cited By (1)
US 12,641,178