IP Library › Granted Patent US 12,339,785
Granted Patent B2
US 12,339,785 · App. 18/526,843 · Granted Jun 24, 2025

Graph cache

Inventors: Giacomo Pedretti (San Francisco, CA); Dejan S. Milojicic (Palo Alto, CA)
Assignee: Hewlett Packard Enterprise Development LP
G06F12/0893
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 12,339,785
App. No.
18/526,843
Granted
Jun 24, 2025
Kind
B2
Abstract

A cache is used for efficiently storing a graph structure. The graph cache may be used in a computing system to accelerate processing of a graph by a graph neural network, and is different than a general-purpose memory of the computing system. Embeddings for the nodes of a graph are stored in the memory of the computing system, while the structure of the graph is stored in the graph cache. The graph cache may include a content addressable memory array, which may be suitable for efficiently representing a graph structure.

Claims (52)

1. A graph cache comprising:

a content addressable memory (CAM) array comprising CAM rows and match lines corresponding to the CAM rows, the CAM array configured to receive an identifier of a target node of a graph structure, to search for the identifier in the CAM rows, and to activate ones of the match lines corresponding to the CAM rows that store the identifier;

a random-access memory (RAM) array comprising RAM rows and word lines corresponding to the RAM rows; and

a multiple match resolver connected to the CAM array and to the RAM array, the multiple match resolver configured to serially activate the word lines of the RAM array corresponding to the match lines of the CAM array that are activated.

2. The graph cache of claim 1 , wherein the CAM array further comprises search lines, and the CAM array receives the identifier on the search lines.

3. The graph cache of claim 2 , further comprising:

an input port connected to the search lines.

4. The graph cache of claim 1 , wherein the RAM array further comprises bit lines, and the RAM array is configured to output memory addresses for neighbor nodes of the target node on the bit lines when the word lines are activated.

5. The graph cache of claim 4 , further comprising:

an output port connected to the bit lines.

6. The graph cache of claim 1 , further comprising:

a register connected to the match lines of the CAM array, an output of the register connected to an input of the multiple match resolver.

7. The graph cache of claim 6 , wherein the register is configured to store a match vector comprising high values, the high values corresponding to the match lines of the CAM array that are activated.

8. The graph cache of claim 7 , wherein the multiple match resolver is configured to serially generate output vectors corresponding to the high values of the match vector, and to provide the output vectors to the RAM array.

9. The graph cache of claim 1 , wherein the multiple match resolver comprises a match token multiple match resolver.

10. The graph cache of claim 1 , wherein the CAM rows comprise ternary content-addressable memory cells, and the RAM rows comprise static random-access memory cells.

11. A method, implemented by a computing system, the method comprising:

obtaining memory addresses for neighbor nodes of a target node from a graph cache of the computing system, the graph cache storing a graph structure comprising the target node and the neighbor nodes, the neighbor nodes being connected to the target node in the graph structure, the memory addresses being locations of a memory of the computing system, the memory being different than the graph cache;

accessing neighbor embeddings of the neighbor nodes at the memory addresses of the memory;

updating a target embedding of the target node by aggregating the neighbor embeddings of the neighbor nodes; and

storing the target embedding of the target node in the memory.

12. The method of claim 11 , further comprising:

storing the graph structure in the graph cache.

13. The method of claim 12 , wherein storing the graph structure in the graph cache comprises:

programming a content addressable memory array of the graph cache with an identifier of the target node; and

programming a random-access memory array of the graph cache with the memory addresses.

14. The method of claim 11 , wherein obtaining the memory addresses comprises:

searching for an identifier of the target node in a content addressable memory (CAM) array of the graph cache, match lines of CAM rows of the CAM array being activated in response to the CAM rows storing the identifier; and

activating word lines of a random-access memory (RAM) rows of a RAM array, the word lines of the RAM rows corresponding to the match lines of the CAM rows, the RAM rows storing the memory addresses.

15. The method of claim 14 , wherein the word lines of the RAM rows are activated serially.

16. The method of claim 11 , wherein obtaining the memory addresses comprises:

providing an identifier of the target node to the graph cache; and

receiving the memory addresses from the graph cache.

17. A computing system comprising:

a processor;

a graph cache; and

a memory, the memory being different than the graph cache, the memory comprising a non-transitory computer readable medium storing instructions which, when executed by the processor, cause the processor to:

store a graph structure in the graph cache;

provide an identifier of a target node of the graph structure to the graph cache;

receive memory addresses for neighbor nodes of the target node from the graph cache, the neighbor nodes being connected to the target node in the graph structure, the memory addresses being locations of the memory;

access neighbor embeddings of the neighbor nodes at the memory addresses of the memory;

update a target embedding of the target node by aggregating the neighbor embeddings of the neighbor nodes; and

store the target embedding of the target node in the memory.

18. The computing system of claim 17 , wherein the graph cache has a different architecture than the memory.

19. The computing system of claim 17 , wherein the graph cache comprises:

a content addressable memory (CAM) array comprising match lines;

a register connected to the match lines of the CAM array;

a random-access memory (RAM) array comprising word lines; and

a multiple match resolver connected to the word lines of the RAM array, the register connected to the multiple match resolver.

20. The computing system of claim 19 , wherein the instructions to store the graph structure in the graph cache comprise instructions to:

program the CAM array with the identifier of the target node; and

program the RAM array with the memory addresses for the neighbor nodes.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 1, 2023
From: PEDRETTI, GIACOMO; MILOJICIC, DEJAN S.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 065737/0872 →
Continuity (1)
Related Publication 20250181513A1 · Jun 5, 2025
References Cited (19)
US 6493790B1 · Khieu · 2002 [cited by examiner]
US 7606974B2 · Dai · 2009 [cited by examiner]
US 10802807B1 · Hsu et al. · 2020 [cited by applicant]
US 10977018B1 · Hwang et al. · 2021 [cited by applicant]
US 11036546B1 · Bhandari et al. · 2021 [cited by applicant]
US 11108644B1 · Mkrtchyan et al. · 2021 [cited by applicant]
US 11113030B1 · Monga et al. · 2021 [cited by applicant]
US 11270051B1 · Suresh et al. · 2022 [cited by applicant]
US 11301295B1 · Gupta et al. · 2022 [cited by applicant]
US 20200371761A1 · Gupta et al. · 2020 [cited by applicant]
US 20210067549A1 · Chen et al. · 2021 [cited by applicant]
US 20220114103A1 · Miller · 2022 [cited by examiner]
US 20220156322A1 · Singh et al. · 2022 [cited by applicant]
US 20230245210A1 · Yang · 2023 [cited by examiner]
US 20240152754A1 · Leskovec · 2024 [cited by examiner]
WO WO2021120707 · 2021 [cited by examiner]
Challapalle, N. et al., “GaaS-X: Graph Analytics Accelerator Supporting Sparse Data Representation using Crossbar Architectures,” 2020 ACM/IEEE 47th Annual International Symposium on Computer Architecture (ISCA), Valenc… [cited by applicant]
Mao, R. et al., “ReRAM-based graph attention network with node-centric edge searching and hamming similarity,” 2023 60th ACM/IEEE Design Automation Conference (DAC), Jul. 9-13, 2023, San Francisco, CA, doi: 10.1109/DAC5… [cited by applicant]
Mohan, N. et al., “Design Techniques and Test Methodology for Low-Power TCAMs,” IEEE Transactions on Very Large Scale Integration (VLSI) Systems, vol. 14, No. 6, Jun. 2006, doi: 10.1109/TVLSI.2006.878206, pp. 573-586. [cited by applicant]
Cited By (1)
US 12,681,857