IP Library Granted Patent US 11,442,866
Granted Patent B2
US 11,442,866 · App. 16/783,924 · Granted Sep 13, 2022

Computer memory module processing device with cache storage

Inventors: Liu Ke (Cambridge, MA); Xuan Zhang (St. Louis, MO); Udit Gupta (Cambridge, MA); Carole-Jean Wu (Newton, MA); Mark David Hempstead (Melrose, MA); Brandon Reagen (Boston, MA); Hsien-Hsin Sean Lee (Cambridge, MA)
Assignee: Meta Platforms, Inc.
G06F12/0875G06F2212/608G06N20/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,442,866
App. No.
16/783,924
Granted
Sep 13, 2022
Kind
B2
Abstract

A device (e.g., an application-specific integrated circuit chip) includes a memory module processing unit and an interface. The memory module processing unit is configured to receive an instruction to obtain values stored in one or more memory components and process the obtained values to return a processed result. The memory module processing unit is also configured to store the obtained values in a cache based on one or more criteria. The memory module processing unit is configured to be included on a computer memory module configured to be installed in a computer system. The interface is configured to communicate with the one or more memory components included on the computer memory module.

Claims (54)

1. A device, comprising:

a memory module processing unit configured to:

receive an instruction to obtain values stored in one or more memory components and process the obtained values to return a processed result; and

store the obtained values in a cache based on one or more criteria;

wherein:

the memory module processing unit is configured to be included on a computer memory module configured to be installed in a computer system; and

the memory module processing unit includes a primary processing component and a plurality of secondary processing components communicatively connected to the primary processing component, wherein:

the primary processing component is configured to receive the instruction and transmit the instruction to the plurality of secondary processing components;

the primary processing component includes a hardware component configured to queue multiple instructions and distribute the queued multiple instructions to the plurality of secondary processing components; and

at least one secondary processing component of the plurality of secondary processing components includes:

 an instruction buffer configured to receive the instruction from the primary processing component; and

 instruction decoding circuitry configured to determine a value of a field within the instruction, wherein the value of the field indicates whether the values stored in the one or more memory components are also located in the cache; and

an interface configured to communicate with the one or more memory components included on the computer memory module.

2. The device of claim 1 , wherein the instruction is an embedding operation.

3. The device of claim 2 , wherein the embedding operation includes a summation computation.

4. The device of claim 1 , wherein at least one of the one or more memory components is a dynamic random-access memory device.

5. The device of claim 1 , wherein the memory module processing unit is configured to process the obtained values including by being configured to sum the obtained values.

6. The device of claim 1 , wherein the memory module processing unit is configured to process the obtained values including by being configured to apply weights to the obtained values.

7. The device of claim 1 , wherein the memory module processing unit is configured to process the obtained values including by being configured to quantize the obtained values.

8. The device of claim 1 , wherein the one or more criteria include a determination that the obtained values are accessed a specified number of times over a specified time period.

9. The device of claim 1 , wherein the computer memory module is a dual-inline memory module.

10. The device of claim 1 , wherein the computer system includes a memory controller that interfaces with the memory module processing unit.

11. The device of claim 1 , wherein the interface is a dynamic random-access memory device interface that supports a protocol for communicating double data rate compatible command, address, and data signals.

12. The device of claim 1 , further comprising the one or more memory components.

13. The device of claim 1 , further comprising the cache.

14. The device of claim 13 , wherein the cache is communicatively connected to an instruction decoder.

15. The device of claim 1 , wherein the instruction is utilized in a personalized recommendation system operation.

16. The device of claim 1 , wherein the one or more memory components are configured as a plurality of memory ranks that supports parallel access.

17. The device of claim 1 , wherein the interface is configured to communicate with the one or more memory components including by being configured to transmit double data rate commands in a compressed format.

18. The device of claim 1 , wherein the instruction is in a format that includes one or more of the following fields: an op code field, a double data rate command field, a data address field, and a data size field.

19. A method, comprising:

using a memory module processing unit that is configured to be included on a computer memory module configured to be installed in a computer system to receive an instruction to obtain values stored in one or more memory components and process the obtained values to return a processed result;

using the memory module processing unit to store the obtained values in a cache based on one or more criteria; and

using an interface to communicate with the one or more memory components included on the computer memory module;

wherein the memory module processing unit includes a primary processing component and a plurality of secondary processing components communicatively connected to the primary processing component, wherein:

the primary processing component is configured to receive the instruction and transmit the instruction to the plurality of secondary processing components;

the primary processing component includes a hardware component configured to queue multiple instructions and distribute the queued multiple instructions to the plurality of secondary processing components; and

at least one secondary processing component of the plurality of secondary processing components includes:

an instruction buffer configured to receive the instruction from the primary processing component; and

instruction decoding circuitry configured to determine a value of a field within the instruction, wherein the value of the field indicates whether the values stored in the one or more memory components are also located in the cache.

20. A device, comprising:

a first memory module processing unit configured to:

receive a first instruction to obtain values stored in one or more memory components and process the obtained values to return a processed result; and

store the obtained values in a cache based on one or more criteria;

wherein:

the first memory module processing unit is configured to be included on a computer memory module configured to be installed in a computer system; and

the first memory module processing unit includes a primary processing component and a plurality of secondary processing components communicatively connected to the primary processing component, wherein:

the primary processing component is configured to receive the first instruction and transmit the first instruction to the plurality of secondary processing components;

the primary processing component includes a hardware component configured to queue multiple instructions and distribute the queued multiple instructions to the plurality of secondary processing components; and

at least one secondary processing component of the plurality of secondary processing components includes:

 an instruction buffer configured to receive the instruction from the primary processing component; and

 instruction decoding circuitry configured to determine a value of a field within the instruction, wherein the value of the field indicates whether the values stored in the one or more memory components are also located in the cache;

an interface configured to communicate with the one or more memory components included on the computer memory module; and

a second memory module processing unit configured to receive a second instruction, wherein the second instruction has a format that is different from that of the first instruction.

Assignments (2)
CHANGE OF NAME Recorded Nov 19, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058214/0351 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 7, 2020
From: KE, LIU; ZHANG, XUAN; GUPTA, UDIT; WU, CAROLE-JEAN; HEMPSTEAD, MARK DAVID; REAGEN, BRANDON; LEE, HSIEN-HSIN SEAN
To: FACEBOOK, INC.
Reel/Frame 052336/0328 →
Continuity (2)
Provisional Application 62951403 · Dec 20, 2019
Related Publication 20210191871A1 · Jun 24, 2021
Cited By (1)
US 12,585,612