IP Library Granted Patent US 9,612,950
Granted Patent B2
US 9,612,950 · App. 14/673,836 · Granted Apr 4, 2017

Control path subsystem, method and device utilizing memory sharing

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 9,612,950
App. No.
14/673,836
Granted
Apr 4, 2017
Kind
B2
Abstract

A packet processing system having a control path memory of a control path subsystem and a datapath memory of a datapath subsystem. The datapath subsystem stores packet data of incoming packets and the control path subsystem performs matches of a subset of packet data, or a hash of the packet data, against the contents of a the control path memory in order to process the packets. The packet processing system enabling a portion of the datapath memory to be used by the control subsystem if needed or a portion of the control path memory to be used by the datapath subsystem if needed.

Claims (39)

1. A control path subsystem comprising:

a non-transitory computer-readable control path memory logically organized into a plurality of control memory pools that each comprise a plurality of tiles; and

control path logic communicatively coupled with the control path memory, wherein the control path logic controls the writing of the control path packet data into and the reading of the control path packet data out of the control path memory, and further wherein the control path logic transmits a request for a portion of a datapath memory to a control path unit of a memory allocation element when a quantity of the control path memory that is currently storing the control path packet data reaches a threshold value, wherein the datapath memory is a part of a datapath subsystem including datapath logic that controls the writing of datapath packet data into and the reading of the datapath packet data out of the datapath memory, wherein if the control path logic is notified by the control path unit of the memory allocation element that a portion of the control path memory has been allocated to the datapath subsystem, the control path logic facilitates the writing of the datapath packet data into and the reading of the datapath packet data out of the portion of the control path memory based on control path commands received from the datapath logic.

2. The control path subsystem of claim 1 , wherein, if the portion of the datapath memory is allocated to the control path subsystem by the control path unit of the memory allocation element, the control path logic sends write and read control path commands to the datapath logic in order to write the control path packet data into and read out the control path packet data from the portion of the datapath memory.

3. The control path subsystem of claim 2 , wherein the portion of the control path memory is one or more of the control memory pools of the control path memory.

4. The control path subsystem of claim 3 , wherein once the portion of the datapath memory is allocated to the control path subsystem, the control path subsystem treats the portion of the datapath memory as one or more additional control memory pools within the control path memory.

5. The control path subsystem of claim 2 , wherein the threshold value is equal to an entirety of the control path memory.

6. The control path subsystem of claim 2 , further comprising a configuration register that stores memory configuration data indicating which if any of the control path memory is allocated to the datapath subsystem and which if any of the datapath memory is allocated to the control path subsystem.

7. The control path subsystem of claim 2 , wherein if the portion of the datapath memory is allocated to the control path subsystem, the control path logic is configured to only utilize the portion of datapath memory to store the control path packet data if the control path packet data is not able to be stored on the control path memory.

8. The control path subsystem of claim 2 , wherein if the control path logic is notified by the control path unit of the memory allocation element that a portion of the control path memory has been allocated to the datapath subsystem, the control path logic refrains from using the portion of the control path memory for storing the control path packet data.

9. A control path subsystem comprising:

a non-transitory computer-readable control path memory logically organized into a plurality of control memory pools that each comprise a plurality of tiles; and

control path logic communicatively coupled with the control path memory, wherein the control path logic controls the writing of the control path packet data into and the reading of the control path packet data out of the control path memory, and further wherein the control path logic transmits a request for a portion of a datapath memory to a control path unit of a memory allocation element when a quantity of the control path memory that is currently storing the control path packet data reaches a threshold value, wherein the datapath memory is a part of a datapath subsystem including datapath logic that controls the writing of datapath packet data into and the reading of the datapath packet data out of the datapath memory, wherein even if the control path logic is notified by the control path unit of the memory allocation element that a portion of the control path memory has been allocated to the datapath subsystem, the control path logic is configured to overwrite some or all of the datapath packet data stored on the portion of the control path memory if the portion of the control path memory is necessary to store some or all of the control path packet data.

10. A control path subsystem comprising:

a non-transitory computer-readable control path memory logically organized into a plurality of control memory pools that each comprise a plurality of tiles; and

control path logic communicatively coupled with the control path memory, wherein the control path logic controls the writing of the control path packet data into and the reading of the control path packet data out of the control path memory, and further wherein the control path logic transmits a request for a portion of a datapath memory to a control path unit of a memory allocation element when a quantity of the control path memory that is currently storing the control path packet data reaches a threshold value, wherein the datapath memory is a part of a datapath subsystem including datapath logic that controls the writing of datapath packet data into and the reading of the datapath packet data out of the datapath memory, wherein, independent of a request from the datapath subsystem for use of the portion of the control path memory, the control path logic transmits a control path memory signal to the datapath logic indicating if the portion of the control path memory is currently in use by the control path subsystem.

11. The control path subsystem of claim 10 , wherein the control path logic monitors for a datapath memory signal received from the datapath logic that indicates if the portion of the datapath memory is currently in use by the datapath subsystem.

12. The control path subsystem of claim 11 , wherein if the control path logic overwrites the some or all of the datapath packet data stored on the portion of the control path memory, the control path logic indicates to the datapath logic that the portion of the control path memory is currently in use by the control path subsystem such that the datapath logic is able to operate as if the some or all of the datapath packet data has all been deleted.

13. A method of operating a control path subsystem within a packet processing system on a packet processing device, the method comprising:

writing control path packet data into and reading the control path packet data out of a non-transitory computer readable control path memory with control path logic, wherein the control path memory is communicatively coupled with the control path logic and logically organized into a plurality of control memory pools that each comprise a plurality of tiles;

transmitting a request for a portion of a non-transitory computer readable datapath memory to a control path unit of a memory allocation element when a quantity of the control path memory that is currently storing the control path packet data reaches a threshold value, wherein the datapath memory is a part of a datapath subsystem including datapath logic that controls the writing of datapath packet data into and the reading of the datapath packet data out of the datapath memory; and

if the control path logic is notified by the control path unit of the memory allocation element that a portion of the control path memory has been allocated to the datapath subsystem, facilitating the writing of the datapath packet data into and the reading of the datapath packet data out of the portion of the control path memory with the control path logic based on control path commands received from the datapath logic.

14. The method of claim 13 , further comprising, if the portion of the datapath memory is allocated to the control path subsystem by the control path unit of the memory allocation element, sending write and read control path commands to the datapath logic with the control path logic in order to write the control path packet data into and read out the control path packet data from the portion of the datapath memory.

15. The method of claim 14 , wherein the portion of the control path memory is one or more of the control memory pools of the control path memory.

16. The method of claim 15 , further comprising, once the portion of the datapath memory is allocated to the control path subsystem, treating the portion of the datapath memory as one or more additional control memory pools within the control path memory with the control path logic.

17. The method of claim 14 , wherein the threshold value is equal to an entirety of the control path memory.

18. The method of claim 14 , further comprising storing memory configuration data indicating which if any of the control path memory is allocated to the datapath subsystem and which if any of the datapath memory is allocated to the control path subsystem.

19. The method of claim 14 , further comprising, if the portion of the datapath memory is allocated to the control path subsystem, only utilizing the portion of datapath memory to store the control path packet data with the control path logic if the control path packet data is not able to be stored on the control path memory.

20. The method of claim 14 , further comprising, if the control path logic is notified by the control path unit of the memory allocation element that a portion of the control path memory has been allocated to the datapath subsystem, refraining from using the portion of the control path memory for storing the control path packet data with the control path logic.

21. The method of claim 20 , further comprising monitoring with the control path logic for a datapath memory signal received from the datapath logic that indicates if the portion of the datapath memory is currently in use by the datapath subsystem.

22. The method of claim 21 , further comprising, if the control path logic overwrites the some or all of the datapath packet data stored on the portion of the control path memory, indicating to the datapath logic with the control path logic that the portion of the control path memory is currently in use by the control path subsystem such that the datapath logic is able to operate as if the some or all of the datapath packet data has all been deleted.

23. A method of operating a control path subsystem within a packet processing system on a packet processing device, the method comprising:

writing control path packet data into and reading the control path packet data out of a non-transitory computer readable control path memory with control path logic, wherein the control path memory is communicatively coupled with the control path logic and logically organized into a plurality of control memory pools that each comprise a plurality of tiles;

transmitting a request for a portion of a non-transitory computer readable datapath memory to a control path unit of a memory allocation element when a quantity of the control path memory that is currently storing the control path packet data reaches a threshold value, wherein the datapath memory is a part of a datapath subsystem including datapath logic that controls the writing of datapath packet data into and the reading of the datapath packet data out of the datapath memory; and

even if the control path logic is notified by the control path unit of the memory allocation element that a portion of the control path memory has been allocated to the datapath subsystem, overwriting some or all of the datapath packet data stored on the portion of the control path memory with the control path logic if the portion of the control path memory is necessary to store some or all of the control path packet data.

24. A method of operating a control path subsystem within a packet processing system on a packet processing device, the method comprising:

writing control path packet data into and reading the control path packet data out of a non-transitory computer readable control path memory with control path logic, wherein the control path memory is communicatively coupled with the control path logic and logically organized into a plurality of control memory pools that each comprise a plurality of tiles;

transmitting a request for a portion of a non-transitory computer readable datapath memory to a control path unit of a memory allocation element when a quantity of the control path memory that is currently storing the control path packet data reaches a threshold value, wherein the datapath memory is a part of a datapath subsystem including datapath logic that controls the writing of datapath packet data into and the reading of the datapath packet data out of the datapath memory; and

independent of a request from the datapath subsystem for use of the portion of the control path memory, transmitting a control path memory signal to the datapath logic indicating with the control path logic if the portion of the control path memory is currently in use by the control path subsystem.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Sep 27, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047577/0653 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
SECURITY AGREEMENT Recorded Aug 17, 2016
From: CAVIUM, INC.; CAVIUM NETWORKS LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 039715/0449 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2016
From: CAVIUM NETWORKS LLC
To: CAVIUM, INC.
Reel/Frame 038040/0251 →
MERGER Recorded Mar 8, 2016
From: XPLIANT, INC.
To: CAVIUM NETWORKS LLC
Reel/Frame 038039/0328 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 14, 2015
From: MUSOLL, ENRIQUE; WANG, WEIHUANG
To: XPLIANT, INC.
Reel/Frame 036083/0218 →