IP Library Granted Patent US 10,885,951
Granted Patent B2
US 10,885,951 · App. 16/512,562 · Granted Jan 5, 2021

Memory-based distributed processor architecture

Inventors: Elad Sity (Kfar Saba, IL); Eliad Hillel (Kfar Saba, IL)
Assignee: NeuroBlade, Ltd.
G11C7/1072G06F9/3001G06F9/3885G06F9/3889G06F9/3895G06F11/102G06F11/1016G06F13/1657G06F15/8038G06N3/04G11C11/1655G11C11/1657G11C11/1675G11C11/408G11C11/4076G11C11/4093G06F2015/765
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,885,951
App. No.
16/512,562
Granted
Jan 5, 2021
Kind
B2
Abstract

Distributed processors and methods for compiling code for execution by distributed processors are disclosed. In one implementation, a distributed processor may include a substrate; a memory array disposed on the substrate; and a processing array disposed on the substrate. The memory array may include a plurality of discrete memory banks, and the processing array may include a plurality of processor subunits, each one of the processor subunits being associated with a corresponding, dedicated one of the plurality of discrete memory banks. The distributed processor may further include a first plurality of buses, each connecting one of the plurality of processor subunits to its corresponding, dedicated memory bank, and a second plurality of buses, each connecting one of the plurality of processor subunits to another of the plurality of processor subunits.

Claims (34)

1. A distributed processor on a memory chip, comprising:

a semiconductor substrate;

a plurality of processor subunits disposed on the semiconductor substrate, each processor subunit being configured to execute a series of instructions independent from other processor subunits, each series of instructions defining a series of tasks to be performed by a single processor subunit;

a corresponding plurality of memory banks disposed on the semiconductor substrate, each one of the plurality of processor subunits being connected to at least one dedicated memory bank not shared by any others of the plurality of processor subunits; and

a plurality of buses, each of the plurality of buses connecting one of the plurality of processor subunits to at least one other of the plurality of processor subunits,

wherein data transfers across at least one of the plurality of buses are predefined by the series of instructions included in a processor subunit connected to the at least one of the plurality of buses; and

wherein each of the plurality of processor subunits is configured to access data stored in at least its corresponding dedicated one of the plurality of memory banks and perform one or more calculations using at least one value included in the accessed data.

2. The distributed processor on a memory chip of claim 1 , wherein each series of instructions comprises a set of machine code defining a corresponding series of tasks.

3. The distributed processor on a memory chip of claim 2 , wherein the series of tasks are defined by a compiler configured to distribute a higher-level series of tasks amongst the plurality of logic circuits as a plurality of series of tasks.

4. The distributed processor on a memory chip of claim 3 , wherein the higher-level series of tasks comprises a set of instructions in a human-readable programming language.

5. The distributed processor on a memory chip of claim 1 , wherein the series of instructions included in the processor subunit connected to the at least one of the plurality of buses includes a sending task that comprises a command for the processor subunit connected to the at least one of the plurality of buses to write data to the at least one of the plurality of buses.

6. The distributed processor on a memory chip of claim 1 , wherein the series of instructions included in the processor subunit connected to the at least one of the plurality of buses includes a receiving task that comprises a command for the processor subunit connected to the at least one of the plurality of buses to read data from the at least one of the plurality of buses.

7. A distributed processor on a memory chip, comprising:

a semiconductor substrate;

a plurality of processor subunits disposed on the semiconductor substrate of the memory chip;

a plurality of memory banks disposed on the semiconductor substrate of the memory chip, wherein each one of the plurality of memory banks is configured to store data independent from data stored in other ones of the plurality of memory banks, and wherein each one of the plurality of processor subunits is connected to at least one dedicated memory bank from among the plurality of memory banks; and

a plurality of buses, wherein each one of the plurality of buses connects one of the plurality of processor subunits to one or more corresponding, dedicated memory banks from among the plurality of memory banks,

wherein data transfers across a particular one of the plurality of buses are controlled by a corresponding processor subunit connected to the particular one of the plurality of buses; and

wherein each of the plurality of processor subunits is configured to access data stored in at least its corresponding dedicated one of the plurality of memory banks and perform one or more calculations using at least one value included in the accessed data.

8. The distributed processor on a memory chip of claim 7 , wherein the data stored in each of the plurality of memory banks are defined by a compiler configured to distribute data amongst the plurality of memory banks.

9. The distributed processor on a memory chip of claim 8 , wherein the compiler is configured to distribute data defined in a higher-level series of tasks amongst the plurality of memory banks using a plurality of lower-level tasks distributed amongst corresponding processor subunits.

10. The distributed processor on a memory chip of claim 9 , wherein the higher-level series of tasks comprises a set of instructions in a human-readable programming language.

11. The distributed processor on a memory chip of claim 9 , wherein the lower-level series of tasks comprises a set of instructions in a machine code.

12. A distributed processor on a memory chip, comprising:

a semiconductor substrate;

a plurality of processor subunits disposed on the semiconductor substrate of the memory chip;

a plurality of memory banks disposed on the semiconductor substrate of the memory chip, wherein each one of the plurality of processor subunits is connected to at least one dedicated memory bank from among the plurality of memory banks, and wherein each memory bank of the plurality of memory banks is configured to store data independent from data stored in other ones of the plurality of memory banks, and wherein at least some of the data stored in one particular memory bank from among the plurality of memory banks comprises a duplicate of data stored in at least another one of the plurality of memory banks; and

a plurality of buses, wherein each one of the plurality of buses connects one of the plurality of processor subunits to one or more corresponding, dedicated memory banks from among the plurality of memory banks,

wherein data transfers across a particular one of the plurality of buses are controlled by a corresponding processor subunit connected to the particular one of the plurality of buses; and

wherein each of the plurality of processor subunits is configured to access data stored in at least its corresponding dedicated one of the plurality of memory banks and perform one or more calculations using at least one value included in the accessed data.

13. The distributed processor on a memory chip of claim 12 , wherein the at least some data duplicated across the one particular memory bank from among the plurality of memory banks and the at least another one of the plurality of memory banks is defined by a compiler configured to duplicate data across memory banks.

14. The distributed processor on a memory chip of claim 12 , wherein the at least some data duplicated across the one particular memory bank from among the plurality of memory banks and the at least another one of the plurality of memory banks comprises weights of a neural network.

15. The distributed processor on a memory chip of claim 14 , wherein each node in the neural network is defined by at least one processor subunit from among the plurality of processor subunits.

16. The distributed processor on a memory chip of claim 15 , wherein each node comprises machine code executed by the at least one processor subunit defining the node.

Assignments (2)
SECURITY INTEREST Recorded Jan 11, 2021
From: NEUROBLADE LTD.
To: SILICON VALLEY BANK
Reel/Frame 054877/0192 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 16, 2019
From: SITY, ELAD; HILLEL, ELIAD
To: NEUROBLADE, LTD
Reel/Frame 049763/0042 →
Continuity (5)
Continuation PCTIB2018000995 · Jul 30, 2018
Provisional Application 62538722 · Jul 30, 2017
Provisional Application 62538724 · Jul 30, 2017
Provisional Application 62548990 · Aug 23, 2017
Related Publication 20190339980A1 · Nov 7, 2019