IP Library › Granted Patent US 11,914,487
Granted Patent B2
US 11,914,487 · App. 17/397,061 · Granted Feb 27, 2024

Memory-based distributed processor architecture

Inventors: Elad Sity (Kfar Saba, IL); Eliad Hillel (Kfar Saba, IL)
Assignee: NeuroBlade Ltd.
G06F11/1658G06F9/3001G06F9/3885G06F9/3889G06F9/3895G06F11/102G06F11/1016G06F11/16G06F11/1616G06F13/1657G06F15/8038G06N3/04G11C7/1072G11C11/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 11,914,487
App. No.
17/397,061
Granted
Feb 27, 2024
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 (64)

1. A method performed for operating a distributed memory device comprising:

compiling, by a compiler, a task for the distributed memory device, the task requiring at least one computation, the compiling comprising:

determining a number of words that are required simultaneously to perform the task, and

providing instructions for writing words that need to be accessed simultaneously in a plurality of memory banks disposed on a substrate of a chip when a number of words that can be accessed simultaneously from one of the plurality of memory banks is lower than the number of words that are required simultaneously;

receiving, by a configuration manager disposed on the substrate of the chip, an indication to perform the task; and

in response to receiving the indication, configuring a memory controller disposed in the substrate of the chip to:

within a first line access cycle:

access at least one first word from a first memory bank from the plurality of memory banks using a first memory line,

send the at least one first word to at least one processing unit disposed on the substrate of the chip and connected to the memory controller, and

open a first memory line in a second memory bank to access a second address from the second memory bank from the plurality of memory banks, and

within a second line access cycle:

access at least one second word from the second memory bank using the first memory line,

send the at least one second word to at least one processing unit disposed on the substrate of the chip and connected to the memory controller, and

access a third address from the first memory bank using a second memory line in the first memory bank.

2. The method of claim 1 , further wherein the compiling the task further comprises:

determining a number of cycles necessary to perform the task; and

writing words that are needed in sequential cycles in a single memory bank of the plurality of memory banks.

3. The method of claim 1 , further configuring a selected processing unit to transfer data to the second memory bank during the first line access cycle.

4. The method of claim 1 , wherein

the memory controller comprises at least two data inputs from the plurality of memory banks and at least two data outputs connected to each one of the at least one processing unit; and

further comprising configuring the memory controller to:

simultaneously receive data from two memory banks via the two data inputs; and

simultaneously transmit data received via the two data inputs to at least one selected processing unit via the two data outputs.

5. The method of claim 1 , wherein the at least one processing unit comprises a plurality of accelerators configured for pre-defined tasks.

6. The method of claim 5 , wherein the plurality of accelerators comprise at least one of a vector multiply accumulate unit or a direct memory access.

7. The method of claim 5 , wherein the configuration manager comprises at least one of a RISC processor or a micro-controller.

8. The method of claim 1 , further comprising an external interface connected to the plurality of memory banks.

9. The method of claim 1 , the compiling further comprising:

when a number a number of words that can be accessed simultaneously from one of the plurality of memory banks is lower than the number of words that are required simultaneously, divide the number of words required simultaneously between multiple memory banks.

10. The method of claim 9 , wherein the words comprise machine instructions.

11. The method of claim 1 , wherein the configuration manager comprises a local memory that stores a command to be transmitted to at least one of the plurality of processing units.

12. The method of claim 1 , further comprising configuring the memory controller to interrupt the task in response to receiving a request from an external interface.

13. The method of claim 1 , wherein the plurality of memory banks includes at least one of DRAM mats, DRAM, banks, flash mats, or SRAM mats.

14. The method of claim 1 , wherein the at least one processing unit comprises at least one arithmetic logic unit, at least one vector handling logic unit, at least one register, and at least one direct memory access.

15. The method of claim 1 , further comprising configuring the configuration manger and the at least one processing unit to hand over access to the memory controller between each other after finalizing a task.

16. A non-transitory computer-readable medium that stores instructions that, when executed by at least one processor, cause the at least one processor to:

determine a number of words that are required simultaneously to perform a task, the task requiring at least one computation;

write words that need to be accessed simultaneously in a plurality of memory banks disposed on a substrate of a chip when a number of words that can be accessed simultaneously from one of the plurality of memory banks is lower than the number of words that are required simultaneously;

transmit an indication to perform the task to a configuration manager disposed on the substrate of the chip; and

transmit instructions to configure a memory controller disposed on the substrate of the chip to,

within a first line access cycle:

access at least one first word from a first memory bank from the plurality of memory banks using a first memory line,

send the at least one first word to at least one processing unit disposed on the substrate of the chip and connected to the memory controller, and

open a first memory line in the second memory bank to access a second address from the second memory bank from the plurality of memory banks, and

within a second line access cycle:

access at least one second word from the second memory bank using the first memory line,

send the at least one second word to at least one processing unit disposed on the substrate of the chip and connected to the memory controller, and

access a third address from the first memory bank using a second memory line in the first memory bank.

17. The non-transitory computer-readable medium of claim 16 , wherein a selected processing unit is configured to transfer data to the second memory bank during the first line access cycle.

18. The non-transitory computer-readable medium of claim 16 , wherein

the memory controller comprises at least two data inputs from the plurality of memory banks and at least two data outputs connected to each one of the at least one processing unit;

the memory controller is configured to simultaneously receive data from two memory banks via the two data inputs; and

the memory controller is configured to simultaneously transmit data received via the two data inputs to at least one selected processing unit via the two data outputs.

19. The non-transitory computer-readable medium of claim 16 , wherein the at least one processing unit comprises a plurality of accelerators configured for pre-defined tasks.

20. The non-transitory computer-readable medium of claim 19 , wherein the plurality of accelerators comprise at least one of a vector multiply accumulate unit or a direct memory access.

21. The non-transitory computer-readable medium of claim 19 , wherein the configuration manager comprises at least one of a RISC processor or a micro-controller.

22. The non-transitory computer-readable medium of claim 16 , further comprising an external interface connected to the plurality of memory banks.

23. The non-transitory computer-readable medium of claim 16 , when a number a number of words that can be accessed simultaneously from one of the plurality of memory banks is lower than the number of words that are required simultaneously, divide the number of words required simultaneously between multiple memory banks.

24. The non-transitory computer-readable medium of claim 23 , wherein the words comprise machine instructions.

25. The non-transitory computer-readable medium of claim 16 , wherein the configuration manager comprises a local memory that stores a command to be transmitted to at least one of the at least one processing unit.

26. The non-transitory computer-readable medium of claim 16 , wherein the memory controller is configured to interrupt the task in response to receiving a request from an external interface.

27. The non-transitory computer-readable medium of claim 16 , wherein the plurality of memory banks includes at least one of DRAM mats, DRAM, banks, flash mats, or SRAM mats.

28. The non-transitory computer-readable medium of claim 16 , wherein the at least one processing unit comprises at least one arithmetic logic unit, at least one vector handling logic unit, at least one register, and at least one direct memory access.

29. The non-transitory computer-readable medium of claim 16 , wherein the configuration manger and the at least one processing unit are configured to hand over access to the memory controller between each other after finalizing a task.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 23, 2024
From: SITY, ELAD; HILLEL, ELIAD
To: NEUROBLADE, LTD.
Reel/Frame 066215/0513 →
Continuity (6)
Division 16512622 · Jul 16, 2019
Continuation PCTIB2018000995 · Jul 30, 2018
Provisional Application 62548990 · Aug 23, 2017
Provisional Application 62538722 · Jul 30, 2017
Provisional Application 62538724 · Jul 30, 2017
Related Publication 20210365334A1 · Nov 25, 2021