IP Library Granted Patent US 10,198,262
Granted Patent B2
US 10,198,262 · App. 14/819,403 · Granted Feb 5, 2019

Adaptive core grouping

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,198,262
App. No.
14/819,403
Granted
Feb 5, 2019
Kind
B2
Abstract

The present invention relates to a system, method, and non-transitory storage medium executable by one or more processors at a multi-processor system that improves load monitoring and processor-core assignments as compared to conventional approaches. A method consistent with the present invention includes a first data packet being received at a multi-processor system. After the first packet is received it may be sent to a first processor where the first processor identifies a first processing task associated with the first data packet. The first data packet may then be forwarded to a second processor that is optimized for processing the first processing task of the first data packet. The second processor may then process the first processing task of the first data packet. Program code associated with the first processing task may be stored in a level one (L1) cache at the first processor.

Claims (95)

1. A method for optimizing performance of processing packets, the method comprising:

storing a first set of program code in a first level 1 (L1) cache that is private to a first processor of a multi-processor system, the first set of program code including instructions for assigning packet processing tasks to one or more other processors of the multi-processor system based on a type of program code stored in respective private L1 caches of each of the one or more other processors;

assigning, by the first processor of the multi-processor system executing the first set of program code stored in the first private L1 cache, one or more packet processing tasks of a plurality of different processing tasks to the one or more other processors, wherein assigning the packet processing tasks includes assigning a second processor of the multi-processor system to process a first type of the plurality of different packet processing tasks, the second processor comprises a second L1 cache that is private to the second processor, and the second private L1 cache storing a second set of program code executable to process the first type of packet processing task;

receiving a first data packet at the first processor, wherein the first data packet is associated with the first type of packet processing task;

executing instructions out of the first private L1 cache of the first processor, wherein execution of the first private L1 cache instructions by the first processor assigns the second processor to begin processing the first data packet received at the multi-processor system, the assignment to the second processor based on the first data packet being associated with the first type of packet processing task and based on the second processor having been assigned to process the first type of packet processing task;

forwarding the first data packet to the second processor assigned to process the first type of packet processing task; and

executing instructions out of the second private L1 cache of the second processor, wherein execution of the second private L1 cache instructions by the second processor processes the first type of packet processing task associated with the first data packet.

2. The method of claim 1 , further comprising:

identifying that the first data packet is further associated with a second type of packet processing task;

forwarding the first data packet to a third processor of the multi-processor system assigned to process the second type of packet processing task; and

executing instructions out of a third private L1 cache at the third processor, wherein execution of the third private L1 cache instructions by the third processor processes the second type of packet processing task associated with the first data packet.

3. The method of claim 2 , further comprising:

identifying that the first data packet is further associated with a third type of packet processing task;

forwarding the first data packet to a fourth processor of the multi-processor system assigned to process the third type of packet processing task; and

executing instructions out of a fourth private L1 cache at the fourth processor, wherein execution of the fourth private L1 cache instructions by the fourth processor processes the third type of packet processing task associated with the first data packet.

4. The method of claim 1 , further comprising:

receiving a second data packet at the first processor of the multi-processor system;

identifying that the second data packet is associated with the first type of packet processing task;

forwarding the second data packet to the second processor of the multi-processor system assigned to process the first type of packet processing task;

executing instructions out of the second private L1 cache at the second processor, wherein execution of the second private L1 cache instructions by the second processor processes the first processing task associated with the second data packet;

identifying that the second data packet is further associated with a second type of packet processing task;

forwarding the second data packet to a third processor of the multi-processor system assigned to process the second type of packet processing task; and

executing instructions out of a third private L1 cache at the third processor, wherein execution of the third private L1 cache instructions by the third processor processes the second processing task associated with the second data packet.

5. The method of claim 1 , further comprising:

monitoring a packet processing utilization level of each processor at the multi-processor system;

identifying that the packet processing utilization level of an identified processor at the multi-processor system exceeds a packet processing threshold utilization level;

identifying a packet processing task associated with the identified processor;

assigning a third processor in the multi-processor system to process the identified packet processing task associated with the identified processor; and

filling at least a portion of a third private L1 cache at the third processor with program code, wherein the program code filling the at least portion of the third private L1 cache at the third processor includes instructions executable to process the identified packet processing task.

6. The method of claim 5 , further comprising:

identifying that a combined packet processing utilization level of the identified processor and the third processor is below a combined packet processing utilization threshold level; and

de-allocating the identified processor or the third processor from processing the identified packet processing task.

7. The method of claim 2 , further comprising:

associating the third processor of the multi- processor system with processing the second type of packet processing task;

filling at least a portion of the second private L1 cache of the second processor with program code, wherein the program code filling the at least portion to the second private L1 cache of the second processor includes instructions executable to process the first type of packet processing task; and

filling at least a portion of the third private L1 cache of the third processor with program code, wherein the program code filling the at least portion to the third private L1 cache of the third processor includes instructions executable to process the second type of packet processing task.

8. A non-transitory computer-readable storage medium having embodied thereon a program executable by a processor to perform a method for optimizing performance of processing packets, the method comprising:

storing a first set of program code in a first level 1 (L1 ) cache that is private to a first processor of a multi-processor system, the first set of program code including instructions for assigning packet processing tasks to one or more other processors of the multi-processor system based on a type of program code stored in respective private L1 caches of each of the one or more other processors;

assigning, by the first processor of the multi-processor system executing the first set of program code stored in the first private L1 cache, one or more packet processing tasks of a plurality of processing tasks to the one or more other, wherein assigning the packet processing tasks includes assigning a second processor of the multi-processor system to process a first type of the plurality of different packet processing tasks, the second processor comprises a second L1 cache that is private to the second processor, and the second private L1 cache storing a second set of program code executable to process the first type of packet processing task;

receiving a first data packet at the first processor, wherein the first data packet is associated with the first type of packet processing task;

executing instructions out of the first private L1 cache at the first processor, wherein execution of the first private L1 cache instructions by the first processor assigns the second processor to begin processing the first data packet received at the multi-processor system, the assignment to the second processor based on the first data packet being associated with the first type of packet processing task and based on the second processor having been assigned to process the first type of packet processing task;

forwarding the first data packet to the second processor assigned to process the first type of processing task; and

executing instructions out of the second private L1 cache at the second processor, wherein execution of the second private L1 cache instructions by the second processor processes the first type of packet processing task associated with the first data packet.

9. The non-transitory computer-readable storage medium of claim 8 , wherein the program comprises further instructions executable to:

identify that the first data packet is further associated with a second type of packet processing task;

forward the first data packet to a third processor of the multi-processor system assigned to process the second type processing task; and

process the second type of packet processing task at the third processor by executing instructions out of a third private L1 cache at the third processor.

10. The non-transitory computer-readable storage medium of claim 8 , wherein the program comprises further instructions executable to:

identify that the first data packet is further associated with a third type of packet processing task;

forward the first data packet to a fourth processor of the multi-processor system assigned to process the third type of packet processing task; and

process the third type of packet processing task at the fourth processor by executing instructions out of a fourth private L1 cache at the fourth processor.

11. The non-transitory computer-readable storage medium of claim 8 , wherein the program comprises further instructions executable to:

receive a second data packet at the first processor of the multi- processor system;

identify that the second data packet is associated with the first type of packet processing task;

forward the second data packet to the second processor of the multi-processor system assigned to process the first type of processing task;

process the first type of processing task at the second processor by executing instructions out of the second private L1 cache at the second processor;

identify that the second data packet is further associated with a second type of packet processing task;

forward the second data packet to a third processor of the multi-processor system assigned to process the second type of packet processing task; and

process the second type of packet processing task at the third processor by executing instructions out of a third private L1 cache at the third processor.

12. The non-transitory computer-readable storage medium of claim 8 , wherein the program comprises further instructions executable to:

monitor a packet processing utilization level of each processor at the multi-processor system;

identify that the packet processing utilization level of an identified processor at the multi-processor system exceeds a packet processing threshold utilization level;

identify a packet processing task associated with the identified processor;

assign a third processor in the multi-processor system to process the packet processing task associated with the identified processor; and

filling at least a portion of a third private L1 cache at the third processor with program code, wherein the program code filling the at least portion of the third private L1 cache at the third processor includes instructions executable to process the identified packet processing task.

13. The non-transitory computer-readable storage medium of claim 12 , wherein the program comprises further instructions executable to:

identify that a combined packet processing utilization level of the identified processor and the third processor is below a combined packet processing utilization threshold level; and

de-allocate the identified processor or the third processor from processing the identified packet processing task.

14. The non-transitory computer-readable storage medium of claim 9 , wherein the program comprises further instructions executable to:

associate the third processor of the multi- processor system with processing the second type of packet processing task;

fill the at least portion of the second private L1 cache of the second processor with program code, wherein the program code filling the at least portion of the second private L1cache of the second processor includes instructions executable to process the first type of packet processing task; and

fill at least a portion of the third private L1 cache of the third processor with program code, wherein the program code filling the at least portion of the third private L1 cache of the third processor includes instructions executable to process the second type of packet processing task.

15. A system for optimizing performance of processing packets, the system comprising:

a plurality of processors, each comprising a level one (L1) cache, wherein the plurality of processors comprises:

a first processor that assigns one or more packet processing tasks to one or more of the other processors at the multi-processor system by executing a first set of program code stored in a first level 1 (L1) cache that is private to the first processor that includes instructions executable to assign packet processing tasks to one or more other processors of the plurality of processors based on a type of program code stored in respective private L1 caches of each of the one or more other processors; and

a second processor assigned by the first processor to process a first type of packet processing task of a plurality of different processing tasks, wherein the second processor comprises a second L1 cache that is private to the second processor and the second private L1 cache storing a second set of program code executable to process the first type of packet processing task; and

a data communication interface that receives a first data packet, wherein:

the first data packet is associated with the first type of packet processing task,

the first processor executes program code out of the first private L1 cache at the first processor to identify that the first data packet is associated with the first type of packet processing task, and forwards the first packet to the second processor, and

the second processor executes instructions out of the second private L1 cache at the second processor, wherein execution of the second private L1 cache instructions by the second processor processes the first type of packet processing task associated with the first data packet.

16. The system of claim 15 , wherein the second processor forwards the first data packet to a third processor assigned to process a second type processing task and the third processor processes the second type of packet processing task by executing instructions out of a third private L1 cache at the third processor.

17. The system of claim 15 , wherein the second processor forwards the first data packet to a fourth processor assigned to process a third type of packet processing task and the fourth processor processes the third type of packet processing task by executing instructions out of a fourth private L1 cache at the fourth processor.

18. The system of claim 15 , wherein:

the network communication interface receives a second data packet;

the first processor executes instructions out of the first private L1 cache at the first processor to identify that the second data packet is associated with the first type of packet processing task, and forwards the second data packet to the second processor assigned to process the first type of processing task;

the second processor processes the first type of processing task by executing instructions out of the second private L1 cache at the second processor, and forwards the second data packet to a third processor assigned to process the second type of packet processing task; and

the third processor processes the second type of packet processing task by executing instructions out of a third private L1 cache at the third processor.

19. The system of claim 15 , wherein at least one of the processors:

monitors a packet processing utilization level of each processor at the multi-processor system;

identifies that the packet processing utilization level of an identified processor at the multi-processor system exceeds a packet processing threshold utilization level;

identifies a packet processing task associated with the identified processor; and

assigns a third processor in the multi-processor system to process the identified packet processing task associated with the identified processor, wherein at least a portion of a third private L1 cache at the third processor is filled with program code, the program code filling the at least portion of the third private L1 cache at the third processor includes instructions executable to process the identified packet processing task associated with the identified processor.

20. The system of claim 19 , wherein the at least one of the processors further:

identifies that a combined packet processing utilization level of the identified processor and the third processor is below a combined packet processing utilization threshold level; and

de-allocates the identified processor or the third processor from processing the identified packet processing task.

Assignments (24)
FIRST LIEN IP SUPPLEMENT Recorded Jun 30, 2025
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 071777/0641 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS RECORDED AT RF 046321/0393 Recorded Jun 16, 2025
From: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
To: SONICWALL US HOLDINGS INC.
Reel/Frame 071625/0887 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0414 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0393 →
CHANGE OF NAME Recorded May 29, 2018
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 047058/0082 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CHANGE OF NAME Recorded May 16, 2018
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 046169/0718 →
CHANGE OF NAME Recorded May 15, 2018
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 046163/0137 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 041073 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE INTELLECTUAL PROPERTY ASSIGNMENT.. Recorded Apr 5, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS INC.
Reel/Frame 042168/0114 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 23, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS, INC.
Reel/Frame 041073/0001 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
RELEASE OF REEL 037160 FRAME 0142 (NOTE) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040027/0812 →
RELEASE OF REEL 037160 FRAME 0239 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040028/0115 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
RELEASE OF REEL 037160 FRAME 0171 (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040017/0253 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 5, 2016
From: MAO, MIAO; CHEN, ZHONG; GMUENDER, JOHN
To: DELL SOFTWARE INC.
Reel/Frame 038626/0586 →
SUPPLEMENTAL PATENT SECURITY AGREEMENT - NOTES Recorded Nov 25, 2015
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; BOOMI, INC.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 037160/0142 →
SUPPLEMENTAL PATENT SECURITY AGREEMENT - TERM LOAN Recorded Nov 25, 2015
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; BOOMI, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037160/0239 →
SUPPLEMENTAL PATENT SECURITY AGREEMENT - ABL Recorded Nov 25, 2015
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; BOOMI, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037160/0171 →