IP Library › Granted Patent US 10,782,918
Granted Patent B2
US 10,782,918 · App. 16/123,837 · Granted Sep 22, 2020

Near-memory data-dependent gather and packing

Inventors: Shaizeen Aga (Santa Clara, CA); Nuwan Jayasena (Santa Clara, CA)
Assignee: ADVANCED MICRO DEVICES, INC.
G06F3/0659G06F3/0604G06F3/0673G06F11/1076
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,782,918
App. No.
16/123,837
Granted
Sep 22, 2020
Kind
B2
Abstract

Methods, systems, and devices for near-memory data-dependent gathering and packing of data stored in a memory. A processing device extracts a function, a memory source address, and a memory destination address from a near-memory data-dependent gathering and packing primitive. A signal to perform gathering and packing operations based on the primitive is sent to near-memory processing circuitry of a memory device. The near-memory processing circuitry receives the signal, gathers data from the memory device based on the function and the memory source address, and packs the gathered data into the memory device based on the memory destination address.

Claims (106)

1. A method for near-memory data-dependent gathering and packing of data stored in a memory, the method comprising:

extracting, by a processing device, a function, a memory source address, and a memory destination address, from a near-memory data-dependent gathering and packing primitive;

sending a signal to perform gathering and packing operations based on the primitive to near-memory processing circuitry of a memory device;

receiving, by the near-memory processing circuitry, the signal;

gathering, by the near-memory processing circuitry, data from the memory device based on the function and the memory source address;

packing, by the near-memory processing circuitry, the gathered data into the memory device based on the memory destination address;

gathering, by the near memory processing circuitry, indices of the data; and

packing, by the near-memory processing circuitry, the gathered indices into the memory device based on the memory destination.

2. The method of claim 1 , wherein the gathered indices are packed into entries of the memory device that are consecutive with entries of the memory device into which the gathered data is packed.

3. The method of claim 1 , further comprising:

extracting a second memory destination address from the primitive;

gathering, by the near-memory processing circuitry, indices of the data; and

packing, by the near-memory processing circuitry, the gathered indices into the memory device based on the second memory destination address.

4. The method of claim 1 , wherein the function comprises determining whether the data from the memory device includes a non-zero value, a positive value, a negative value, a value exceeding a threshold, or a value not exceeding a threshold.

5. The method of claim 1 , wherein the memory device comprises a stacked memory device, and wherein the near-memory processing circuitry is disposed on a die of the stacked memory device.

6. The method of claim 1 , further comprising replicating, by the near-memory processing circuitry, error correcting code (ECC) functionality of the processing device.

7. The method of claim 1 , further comprising flushing a cache of the processing device prior to the gathering of the data from the memory device.

8. A computing device configured for near-memory data-dependent gathering and packing of data, the computing device comprising:

a processing device which includes processing circuitry; and

a memory device which includes near-memory processing circuitry;

the processing circuitry configured to:

extract a function, a memory source address, and a memory destination address, from a near-memory data-dependent gathering and packing primitive; and

send a signal to perform gathering and packing operations based on the primitive to near-memory processing circuitry of the memory device;

the near-memory processing circuitry configured to:

receive the signal;

gather data from the memory device based on the function and the memory source address;

pack the gathered data, into the memory device based on the memory destination address;

gather indices of the data; and

pack the gathered indices into the memory device based on the memory destination address.

9. The computing device of claim 8 , wherein the processing circuitry is further configured to pack gathered indices into entries of the memory device that are consecutive with entries of the memory device into which the gathered data is packed.

10. The computing device of claim 8 , wherein the processing circuitry is further configured to:

extract a second memory destination address from the primitive;

gather indices of the data; and

pack the gathered indices into the memory device based on the second memory destination address.

11. The computing device of claim 8 , wherein the function comprises determining whether the data from the memory device includes a non-zero value, a positive value, a negative value, a value exceeding a threshold, or a value not exceeding a threshold.

12. The computing device of claim 8 , wherein the memory device comprises a stacked memory device, and wherein the near-memory processing circuitry is disposed on a die of the stacked memory device.

13. The computing device of claim 8 , wherein the processing circuitry s further configured to replicate error correcting code (ECC) functionality of the processing device.

14. The computing device of claim 8 , wherein the processing circuitry is further configured to flush a cache of the processing device prior to gathering the data from the memory device.

15. A processing device configured for near-memory data-dependent gathering and packing of data, the processing device comprising:

circuitry configured to extract a function, a memory source address, and a memory destination address from a near-memory data-dependent gathering and packing primitive;

circuitry configured to send a signal to perform gathering and packing operations based on the primitive to near-memory processing circuitry of a memory device;

wherein the gathering and packing operations comprise:

gathering, by the near-memory processing circuitry, data from the memory device based on the function and the memory source address;

packing, by the near-memory processing circuitry, the gathered data, into the memory device based on the memory destination address;

gathering, by the near-memory processing circuitry, indices of the data; and

packing, by the near-memory processing circuitry, the gathered indices into the memory device based on the memory destination address.

16. The processing device of claim 15 , wherein the gathering and packing operations further comprise:

packing the gathered indices packed into entries of the memory device that are consecutive with entries of the memory device into which the gathered data is packed.

17. The processing device of claim 15 , further comprising:

circuitry configured to extract a second memory destination address from the primitive;

wherein the gathering and packing operations further comprise:

gathering, by the near-memory processing circuitry, indices of the data; and

packing, by the near-memory processing circuitry, the gathered indices into the memory device based on the second memory destination address.

18. The processing device of claim 15 , wherein the function comprises determining whether the data from the memory device includes a non-zero value, a positive value, a negative value, a value exceeding a threshold, or a value not exceeding a threshold.

19. The processing device of claim 15 , wherein the memory device comprises a stacked memory device, and wherein the near-memory processing circuitry is disposed on a die of the stacked memory device.

20. The processing device of claim 15 , further comprising circuitry configured to replicate error correcting code (ECC) functionality of the processing device.

21. The processing device of claim 15 , further comprising circuitry configured to flush a cache of the processing device prior to gathering the data from the memory device.

22. A configurable gather-packer device disposed on a memory device and configured for near-memory data-dependent gathering and packing of data stored in the memory device, comprising:

circuitry configured to receive, from a processing device, a signal to perform gathering and packing operations based on a function, a memory source address, and a memory destination address;

circuitry configured to gather data from the memory device based on the function and the memory source address;

circuitry configured to pack the gathered data into the memory device based on the memory destination address;

circuitry configured to gather indices of the data; and

circuitry configured to pack the gathered indices into the memory device, based on the memory destination address.

23. The configurable gather-packer device of claim 21 , further comprising:

circuitry configured to pack the gathered indices into entries of the memory device that are consecutive with entries of the memory device into which the gathered data is packed.

24. The configurable gather-packer device of claim 22 , further comprising:

circuitry configured to gather indices of the data; and

circuitry configured to pack the gathered indices into the memory device based on a second memory destination address received in the signal.

25. The configurable gather-packer device of claim 22 , wherein the function comprises determining whether the data from the memory device includes a non-zero value, a positive value, a negative value, a value exceeding a threshold, or a value not exceeding a threshold.

26. The configurable gather-packer device of claim 22 , wherein the memory device comprises a stacked memory device, and wherein the configurable gather-packer device is disposed on a die of the stacked memory device.

27. The configurable gather-packer device of claim 22 , further comprising circuitry configured to replicate error correcting code (ECC) functionality of the processing device.

28. The configurable gather-packer device of claim 22 , further comprising circuitry configured to flush a cache of the processing device is prior to gathering data from the memory device.

29. A method for data-dependent gathering and packing of data stored in a memory device, the method comprising:

extracting, by a core of a processing device, a function, a memory source address, and a memory destination address, from a near-memory data-dependent gathering and packing primitive;

sending a signal to perform gathering and packing operations based on the primitive to a configurable gather-packer device of the processing device;

receiving, by the configurable gather-packer device, the signal;

gathering, by the configurable gather-packer device, data from the memory device based on the function and the memory source address;

packing, by the configurable gather-packer device, the gathered data, into the memory device based on the memory destination address;

gathering, by the configurable gather-packer device, indices of the data; and

packing, by the configurable gather-packer device, the gathered indices into the memory device based on the memory destination address;

wherein operations carried out by the configurable gather-packer device are not cached on the processing device.

30. The method of claim 29 , wherein the gathered indices are packed into entries of the memory device that are consecutive with entries of the memory device into which the gathered data is packed.

31. The method of claim 29 , further comprising:

extracting a second memory destination address from the primitive;

gathering, by the configurable gather-packer device, indices of the data; and

packing, by the configurable gather-packer device, the gathered indices, into the memory device, based on the second memory destination address.

32. The method of claim 29 , wherein the function comprises determining whether the data from the memory device includes a non-zero value, a positive value, a negative value, a value exceeding a threshold, or a value not exceeding a threshold.

33. The method of claim 29 , wherein the memory device comprises a stacked memory device.

34. The method of claim 29 , further comprising replicating, by the configurable gather-packer device, error correcting code (ECC) functionality of the processing device.

35. The method of claim 29 , further comprising flushing a cache of the processing device prior to the gathering of the data from the memory device.

36. A computing device configured for near-memory data-dependent gathering and packing of data, the computing device comprising:

a processing device which includes processing circuitry and a configurable gather-packer device; and a memory;

the processing circuitry configured to extract a function, a memory source address, and a memory destination address, from a near-memory data-dependent gathering and packing primitive;

the processing circuitry further configured to send a signal to perform gathering and packing operations based on the primitive to the configurable gather-packer device;

the configurable gather-packer device configured to receive the signal;

the configurable gather-packer device further configured to gather data from the memory device based on the function and the memory source address;

the configurable gather-packer device further configured to pack the gathered data into the memory device based on the memory destination address;

the configurable gather-packer device further configured to gather indices of the data; and

the configurable gather-packer device further configured to pack the gathered indices into the memory device based on the memory destination address;

wherein operations carried out by the configurable gather-packer device are not cached on the processing device.

37. The computing device of claim 36 , wherein the circuitry of the configurable gather-packer device is configured to pack the gathered indices into entries of the memory device that are consecutive with entries of the memory device into which the gathered data is packed.

38. The computing device of claim 36 , wherein the processing circuitry is further configured to extract a second memory destination address from the primitive, and the configurable gather-packer device is further configured to gather indices of the data and pack the gathered indices into the memory device based on the second memory destination address.

39. The computing device of claim 36 , wherein the function comprises determining whether the data from the memory device includes a non-zero value, a positive value, a negative value, a value exceeding a threshold, or a value not exceeding a threshold.

40. The computing device of claim 36 , wherein the memory device comprises a stacked memory device.

41. The computing device of claim 36 , wherein the configurable gather-packer device further comprises circuitry configured to replicate error correcting code (ECC) functionality of the processing device.

42. The computing device of claim 36 , further comprising circuitry configured to flush a cache of the processing device prior to gathering the data from the memory device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 25, 2018
From: AGA, SHAIZEEN; JAYASENA, NUWAN
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 046967/0467 →
Continuity (1)
Related Publication 20200081651A1 · Mar 12, 2020
Cited By (1)
US 12,639,575