IP Library › Granted Patent US 10,838,909
Granted Patent B2
US 10,838,909 · App. 16/139,913 · Granted Nov 17, 2020

Methods and systems for computing in memory

Inventors: Dejan S. Milojicic (Palo Alto, CA); Kirk M. Bresniker (Palo Alto, CA); Paolo Faraboschi (Palo Alto, CA); John Paul Strachan (Palo Alto, CA)
Assignee: Hewlett Packard Enterprise Development LP
G06F15/7867G06F9/30145G06F9/3897
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,838,909
App. No.
16/139,913
Granted
Nov 17, 2020
Kind
B2
Abstract

A method of computing in memory, the method including inputting a packet including data into a computing memory unit having a control unit, loading the data into at least one computing in memory micro-unit, processing the data in the computing in memory micro-unit, and outputting the processed data. Also, a computing in memory system including a computing in memory unit having a control unit, wherein the computing in memory unit is configured to receive a packet having data and a computing in memory micro-unit disposed in the computing in memory unit, the computing in memory micro-unit having at least one of a memory matrix and a logic elements matrix.

Claims (62)

1. A method of computing in memory, the method comprising:

inputting a packet including data into a computing in memory unit having a configuration/programming unit, a control unit, and an arithmetic/logic unit, wherein the configuration/programming unit of the computing in memory unit comprises a first processing element and a first memory, and wherein the control unit of the computing in memory unit and arithmetic/logic unit comprise a second and third processing element and a second and third memory;

splitting the data between the configuration/programming unit on one side and control and the arithmetic/logic unit of the computing in memory unit on another side;

for data sent to the configuration/programming unit:

loading the data from the first memory of the configuration/programming unit;

reprogramming dynamically the control unit and arithmetic/logic unit of the computing in memory unit based on a program stored in the packet;

deploying the program in the control unit and arithmetic/logic unit of the computing in memory unit;

processing the data in the control unit; and

outputting the processed data; and

for data sent to the control unit of the computing in memory unit and arithmetic/logic unit of the computing in memory unit:

loading the data in parallel and by the configuration/programming unit from the second memory of the control and arithmetic/logic unit;

processing the data in the control unit and the arithmetic/logic unit; and

outputting the processed data.

2. The method of claim 1 , wherein the reprogramming dynamically comprises reprogramming the control unit and arithmetic/logic unit of the computing in memory unit at more than one level.

3. The method of claim 2 , wherein the level comprises at least one of a logic gate level, an instructions level, an instruction set architecture level, and a routing level.

4. The method of claim 1 , wherein the first memory of the configuration/programming unit comprises a memristor device.

5. The method of claim 1 , further comprising:

deploying an instruction set architecture stored in the packet on the computing in memory unit.

6. The method of claim 1 , further comprising:

routing the processed data according to instructions stored in the packet.

7. The method of claim 6 wherein the routing further comprises determining dynamically an optimal route for the processed data based on a run time parameter.

8. The method of claim 1 , wherein the data is split based on a type of processing required for the data by the computing in memory unit.

9. The method of claim 1 , wherein the data is loaded independently and simultaneously by the configuration/programming unit and by the control unit.

10. A computing in memory system, the system comprising:

a computing in memory unit having:

a configuration/programming unit,

a control unit, and

an arithmetic/logic unit,

wherein the configuration/programming unit of the computing in memory unit comprises a first processing element and a first memory, and wherein the control unit of the computing in memory unit and arithmetic/logic unit comprise a second and third processing element and a second and third memory, and

wherein the computing in memory unit is configured to split the data between the configuration/programming unit on one side and control and the arithmetic/logic unit of the computing in memory unit on another side;

for data sent to the configuration/programming unit:

load the data from the first memory of the configuration/programming unit;

reprogram dynamically the control unit and arithmetic/logic unit of the computing in memory unit based on a program stored in the packet;

deploy the program in the control unit and arithmetic/logic unit of the computing in memory unit;

process the data in the control unit; and

output the processed data; and

for data sent to the control unit of the computing in memory unit and arithmetic/logic unit of the computing in memory unit:

loading the data in parallel and by the configuration/programming unit from the second memory of the control and arithmetic/logic unit;

process the data in the control unit and the arithmetic/logic unit; and

output the processed data.

11. The system of claim 10 , wherein the control unit and arithmetic/logic unit of the computing in memory unit comprises at least one of a memory matrix and a logic elements matrix.

12. The system of claim 10 , further comprising a second computing in memory micro-unit disposed in the computing in memory unit and connected to the computing in memory micro-unit.

13. The system of claim 10 , further comprising a second computing in memory unit having a third computing in memory micro-unit, wherein the second computing in memory unit is connected to the computing in memory unit.

14. The system of claim 13 , further comprising a programmable crossbar disposed between the computing in memory unit and the second computing in memory unit.

15. A method of computing in memory, the method comprising:

inputting a packet into a computing in memory unit having a configuration/programming unit, a control unit, and an arithmetic/logic unit, wherein the configuration/programming unit of the computing in memory unit comprises a first processing element and a first memory, and wherein the control unit of the computing in memory unit and arithmetic/logic unit comprise a second and third processing element and a second and third memory;

splitting the data between the configuration/programming unit on one side and control and the arithmetic/logic unit of the computing in memory unit on another side;

for data sent to the configuration/programming unit:

decoding the instruction set architecture in the control unit;

programming the control unit and arithmetic/logic unit of the computing in memory unit using the decoded instruction set architecture;

deploying the decoded instruction set architecture in the control unit and arithmetic/logic unit of the computing in memory unit;

processing a data set in the control unit according to the programming;

routing the processed data set to a data flow phase location; and

for data sent to the control unit of the computing in memory unit and arithmetic/logic unit of the computing in memory unit:

loading the data in parallel and by the configuration/programming unit from the second memory of the control and arithmetic/logic unit;

processing the data in the control unit and the arithmetic/logic unit; and

outputting the processed data.

16. The method of claim 15 , further comprising receiving a second packet having a program, processing the program in the control unit, and reprogramming the control unit and arithmetic/logic unit of the computing in memory unit based on the program.

17. The method of claim 15 , further comprising receiving a second packet having a routing instruction set, processing the routing instruction set in the control unit, and reconfiguring the routing based on the routing instruction set.

18. The method of claim 17 , wherein the reconfiguring the routing based on the routing instruction set modifies the location of the data flow phase location.

19. The method of claim 18 , wherein the data flow phase location is at least one of a second computing in memory unit and a second computing in memory micro-unit.

20. The system of claim 15 , wherein the programming the control unit and arithmetic/logic unit of the computing in memory unit and the processing the data set occur simultaneously.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE SECOND INVERTOR'S NAME PREVIOUSLY RECORDED AT REEL: 046953 FRAME: 0435. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT . Recorded Oct 13, 2020
From: MILOJICIC, DEJAN S.; BRESNIKER, KIRK M.; FARABOSCHI, PAOLO; STRACHAN, JOHN PAUL
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 054060/0841 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 24, 2018
From: MILOJICIC, DEJAN S.; BRESNIKER, KIRM M.; FARABOSCHI, PAOLO; STRACHAN, JOHN PAUL
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 046953/0435 →
Continuity (1)
Related Publication 20200097440A1 · Mar 26, 2020