IP Library Granted Patent US 12,323,145
Granted Patent B2
US 12,323,145 · App. 17/874,544 · Granted Jun 3, 2025

Method and system for reconfigurable parallel lookups using multiple shared memories

Inventors: Anh T. Tran (Santa Clara, CA); Gerald Schmidt (San Jose, CA); Tsahi Daniel (Palo Alto, CA); Saurabh Shrivastava (Saratoga, CA)
Assignee: MARVELL ASIA PTE, LTD.
H03K19/17728G06F3/061G06F3/0644G06F3/0683G11C15/04H04L45/745H04L45/7452G06F12/0864H04L45/7453
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,323,145
App. No.
17/874,544
Granted
Jun 3, 2025
Kind
B2
Abstract

Embodiments of the present invention relate to multiple parallel lookups using a pool of shared memories by proper configuration of interconnection networks. The number of shared memories reserved for each lookup is reconfigurable based on the memory capacity needed by that lookup. The shared memories are grouped into homogeneous tiles. Each lookup is allocated a set of tiles based on the memory capacity needed by that lookup. The tiles allocated for each lookup do not overlap with other lookups such that all lookups can be performed in parallel without collision. Each lookup is reconfigurable to be either hash-based or direct-access. The interconnection networks are programed based on how the tiles are allocated for each lookup.

Claims (33)

1. A tile device comprising:

M memories that each have a unique memory identifier (Mem ID), wherein each of the M memories include 2 m entries, wherein each of the entries contains P pairs, each of the P pairs comprising a pre-programmed key and pre-programmed data; and

a matching and selection logic configured to receive an input key and output a lookup result, where M is a positive integer value greater than 1, and m and P are positive integer values.

2. The tile device of claim 1 , wherein a lookup result includes a lowest Mem ID and memory address where the pre-programmed data is stored.

3. The tile device of claim 1 , wherein a lookup result is forwarded to an output reconfiguration interconnection fabric, wherein the output reconfiguration interconnection fabric is configured to connect each of T tiles to one of N final output selection devices for N lookup paths, where T and N are positive integer values.

4. A tile device comprising:

M memories that each have a memory identifier (Mem ID), wherein each of the M memories include 2 m entries, wherein each of the entries contains P pairs, each of the P pairs comprising a pre-programmed key and pre-programmed data; and

a matching and selection logic configured to receive an input key and output a lookup result, where M is a positive integer value greater than 1, and m and P are positive integer values, wherein each of the N final output selection devices comprise:

a collecting block configured to receive lookup results from all of the tiles that reserved a respective lookup path; and

a selection block configured to select one final lookup result from all of the lookup results collected by the collecting block, wherein the selected final lookup result is from a hit tile having a lowest tile identifier (Tile ID).

5. The tile device of claim 4 , wherein the selected final lookup result includes hit data, a tile identifier (Tile ID), one of the Mem IDs and a memory address where the hit data is stored.

6. The tile device of claim 4 , wherein the selected final lookup result is based on key matching results between pre-programmed keys in the memories and the input key.

7. A tile device comprising:

a matching and selection logic configured to receive an input key and output a lookup result, wherein the matching and selection logic includes:

a matching block configured to determine whether the input key matches any of one or more programmable keys in M memories, the M memories each having a memory identifier (Mem ID); and

a selection block configured to select a memory from those memories of the M memories that contain programmable keys matching the input key, wherein the selection block selects the memory based on the Mem IDs of those memories of the M memories that contain programmable keys matching the input key, where M is a positive integer value greater than 1.

8. The tile device of claim 7 , wherein the lookup result comprises pre-programmed data, the Mem ID of the selected memory and memory address where the pre-programmed data is stored.

9. The tile device of claim 7 , wherein the lookup result is forwarded to an output reconfiguration interconnection fabric, wherein the output reconfiguration interconnection fabric is configured to connect a tile device to one of N final output selection devices for N lookup paths, where N is a positive integer value.

10. The tile device of claim 9 , wherein each of the N final output selection devices comprises:

a collecting block configured to receive lookup results from all tiles that reserved that a respective lookup path; and

a selection block configured to select one final lookup result from all of the lookup results collected by the collecting block, wherein the selected final lookup result is from a tile of the tiles having a lowest tile identifier (Tile ID).

11. The tile device of claim 10 , wherein the selected final lookup result includes hit data, a tile identifier (Tile ID), one of the Mem IDs and a memory address where the hit data is stored.

12. The tile device of claim 10 , wherein the selected final lookup result is based on key matching results between programmable keys in the memories and the input key.

13. The tile device of claim 7 , wherein each of the M memories include a plurality of entries.

14. The tile device of claim 7 , wherein each of the entries comprise programmable data.

15. A tile device comprising:

M memories that each have a plurality of entries, wherein each of the entries has a pre-programmed key; and

a matching and selection logic configured to receive an input key and output a lookup result, wherein the lookup result is forwarded to an output reconfiguration interconnection fabric that is configured to connect a tile device to one of N final output selection devices for N lookup paths, wherein each of the N final output selection devices comprises:

a collecting block configured to receive lookup results from all tiles that reserved a respective lookup path; and

a selection block configured to select one final lookup result from all of the lookup results collected by the collecting block, wherein the selected final lookup result is from a tile of the tiles having a lowest tile identifier (Tile ID), where Nis a positive integer value.

16. The tile device of claim 15 , wherein the lookup result further comprises a lowest Mem ID and memory address where pre-programmed data of the plurality of entries is stored.

17. The tile device of claim 15 , wherein the selected final lookup result includes hit data, a Tile ID and a memory address where the hit data is stored.

18. The tile device of claim 15 , wherein the selected final lookup result is based on key matching results between the pre-programmed keys in the memories and the input key.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 27, 2022
From: TRAN, ANH T.; SCHMIDT, GERALD; DANIEL, TSAHI; SHRIVASTAVA, SAURABH
To: XPLIANT, INC.
Reel/Frame 060640/0639 →
MERGER Recorded Jul 27, 2022
From: XPLIANT, INC.
To: CAVIUM NETWORKS LLC
Reel/Frame 060640/0964 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 27, 2022
From: CAVIUM NETWORKS LLC
To: CAVIUM, INC.
Reel/Frame 060640/0988 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 27, 2022
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 060979/0750 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 27, 2022
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 060980/0335 →
CHANGE OF NAME Recorded Jul 27, 2022
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 060981/0328 →
Continuity (5)
Continuation 16996749 · Aug 18, 2020
Division 15923851 · Mar 16, 2018
Continuation 15446297 · Mar 1, 2017
Division 14142511 · Dec 27, 2013
Related Publication 20220404995A1 · Dec 22, 2022
References Cited (83)
US 4929939A · Varma · 1990 [cited by applicant]
US 5319347A · McClure · 1994 [cited by applicant]
US 6667984B1 · Chao et al. · 2003 [cited by applicant]
US 6831917B1 · Cheriton · 2004 [cited by applicant]
US 7461167B1 · Park · 2008 [cited by applicant]
US 7546234B1 · Deb · 2009 [cited by applicant]
US 8054744B1 · Bishara et al. · 2011 [cited by applicant]
US 9159420B1 · Wohlgemuth · 2015 [cited by applicant]
US 9258277B1 · Zhuang · 2016 [cited by applicant]
US 9331939B2 · Thomas et al. · 2016 [cited by applicant]
US 9379963B2 · Tran · 2016 [cited by applicant]
US 9590914B2 · Alizadeh Attar et al. · 2017 [cited by applicant]
US 9620213B2 · Tran et al. · 2017 [cited by applicant]
US 20020009076A1 · Engbersen · 2002 [cited by applicant]
US 20020099900A1 · Kawarai et al. · 2002 [cited by applicant]
US 20030093613A1 · Sherman · 2003 [cited by applicant]
US 20030231634A1 · Savarda · 2003 [cited by applicant]
US 20050076228A1 · Davis et al. · 2005 [cited by applicant]
US 20050193240A1 · Ash · 2005 [cited by applicant]
US 20060045074A1 · Lee · 2006 [cited by applicant]
US 20060059269A1 · Chen et al. · 2006 [cited by applicant]
US 20070022479A1 · Sikdar · 2007 [cited by applicant]
US 20070160052A1 · Okada · 2007 [cited by applicant]
US 20080141023A1 · Qi · 2008 [cited by applicant]
US 20090028045A1 · Stellenberg et al. · 2009 [cited by applicant]
US 20110026405A1 · Takagi et al. · 2011 [cited by applicant]
US 20110307656A1 · Hamdi et al. · 2011 [cited by applicant]
US 20130034100A1 · Goyal et al. · 2013 [cited by applicant]
US 20130163475A1 · Beliveau · 2013 [cited by applicant]
US 20130294458A1 · Yamaguchi et al. · 2013 [cited by applicant]
US 20140153443A1 · Carter · 2014 [cited by applicant]
US 20140241353A1 · Zhang · 2014 [cited by applicant]
US 20140369363A1 · Hutchison · 2014 [cited by applicant]
US 20150156288A1 · Lu · 2015 [cited by applicant]
US 20150172189A1 · Pitchai · 2015 [cited by applicant]
US 20150187419A1 · Tran · 2015 [cited by applicant]
US 20160028623A1 · Kamath · 2016 [cited by applicant]
US 20160197852A1 · Hutchison et al. · 2016 [cited by applicant]
CN 1675635A · 2005 [cited by applicant]
CN 1798102A · 2006 [cited by applicant]
CN 103347013A · 2013 [cited by applicant]
CN 103856405A · 2014 [cited by applicant]
CN 103959302A · 2014 [cited by applicant]
CN 104010049A · 2014 [cited by applicant]
CN 104012063A · 2014 [cited by applicant]
EP 1553738A1 · 2005 [cited by applicant]
JP 2001024641A · 2001 [cited by applicant]
JP 2002077269A · 2002 [cited by applicant]
JP 2002198430A · 2002 [cited by applicant]
JP 2002208938A · 2002 [cited by applicant]
JP 2007208963A · 2007 [cited by applicant]
JP 2010233018A · 2010 [cited by applicant]
TW 200832408A · 2008 [cited by applicant]
TW 201134252A · 2011 [cited by applicant]
WO 2009133918A · 2009 [cited by applicant]
WO 2013093857A · 2013 [cited by applicant]
WO 2013119241A · 2013 [cited by applicant]
Altera, “White Paper” Jul. 2006, pp. 1-9. [cited by applicant]
Bosshart, Pat, “Forwarding Metamorphis: Fast Programmable Match-Action Processing in Hardware for SDN”, Aug. 12, 2013, ACM, pp. 99-109. [cited by applicant]
Glen Gibb, “Reconfigurable Hardware for software-defined networks”, Nov. 2013, Standford University. [cited by applicant]
Price, Charles, “MIPS IV Instruction Set”, Sep. 1995, MIPS, pp. A-28-A-29 & A-105-A-106. [cited by applicant]
Office action from the Taiwanese Application No. 103145662, received Nov. 16, 2018. [cited by applicant]
Office action from the Japanese Application No. 2014-267001, received Nov. 19, 2018. [cited by applicant]
Office action from the Japanese Application No. 2014-263371, received Nov. 12, 2018. [cited by applicant]
Office action from the Japanese Application No. 2014-267000, received Nov. 19, 2018. [cited by applicant]
Office action from the Japanese Application No. 2014-263372, received Dec. 3, 2018. [cited by applicant]
Office Action for the Chinese application 201410838433.4 dated Dec. 12, 2018. [cited by applicant]
Chinese Office Action dated Mar. 18, 2020 for the Chinese Patent Application No. 201680015083.9. [cited by applicant]
Office action from the Taiwanese Application No. 103145450 received Sep. 17, 2018. [cited by applicant]
Office action from the Chinese Application No. 2014108380634 received Nov. 21, 2018. [cited by applicant]
Office Action for the Taiwanese Patent Application 103145445 dated Nov. 19, 2018. [cited by applicant]
Office action from the Chinese Application No. 2014108439341 received Dec. 24, 2018. [cited by applicant]
Office action from the Chinese Application No. 201410843934.1 dated May 21, 2019. [cited by applicant]
Notice of Allowance dated Aug. 28, 2020 for the Chinese Patent Application No. 20168001150839. [cited by applicant]
Office Action dated Aug. 19, 2021 for the Korean Patent Application No. 10-2014-0191978. [cited by applicant]
Decision to Grant dated Jul. 14, 2021, for the Korean Patent Application No. 10-2014-0194209. [cited by applicant]
Office Action dated Jan. 27, 2022 for the Korean Patent Application No. 10-2021-0142837. [cited by applicant]
Office Action dated Jan. 4, 2022 for the Korean Patent Application No. 10-2021-0135712. [cited by applicant]
Korean Office Action dated Dec. 4, 2020 for the Korean Patent Application No. 10-2014-0194209. [cited by applicant]
Korean Office Action dated Oct. 16, 2020 for the Korean Patent Application No. 10-2014-0192064. [cited by applicant]
Korean Office Action dated May 1, 2023 for Korean Patent Application No. 10-2022-0137402. [cited by applicant]
Korean Office Action dated May 19, 2023 for Korean Patent Application No. 10-2022-0519367. [cited by applicant]
Korean Allowance of Patent dated Nov. 8, 2023 for Korean Patent Application No. 10-2022-0137402. [cited by applicant]