Context pipelines
First Claim
Patent Images
1. A method comprising:
- establishing programming stages, each programming stage comprising at least one programming engine; and
at each programming stage,assigning one or more tasks for processing in the at least one programming engine,managing parallel processing of multiple tasks, including establishing a context for each of the multiple tasks, in which at least one of the multiple tasks requires execution of multiple instructions,switching from processing one of the multiple tasks to another of the multiple tasks based on execution of the instructions, andpassing data associated with the multiple tasks to a subsequent programming stage upon completion of the multiple tasks.
4 Assignments
0 Petitions
Accused Products
Abstract
A method of parallel hardware-based multithreaded processing is described. The method includes assigning tasks for packet processing to programming engines and establishing pipelines between programming stages, which correspond to the programming engines. The method also includes establishing contexts for the assigned tasks on the programming engines and using a software controlled cache such as a CAM to transfer data between next neighbor registers residing in the programming engines.
208 Citations
38 Claims
-
1. A method comprising:
establishing programming stages, each programming stage comprising at least one programming engine; and
at each programming stage,assigning one or more tasks for processing in the at least one programming engine, managing parallel processing of multiple tasks, including establishing a context for each of the multiple tasks, in which at least one of the multiple tasks requires execution of multiple instructions, switching from processing one of the multiple tasks to another of the multiple tasks based on execution of the instructions, and passing data associated with the multiple tasks to a subsequent programming stage upon completion of the multiple tasks. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
-
20. A processor comprising:
programming engines arranged in programming stages, and at each programming stage, at least one programming engine to perform; receiving tasks for processing, managing parallel processing of multiple tasks, including establishing a context for each of the multiple tasks, in which at least one of the multiple tasks requires execution of multiple instructions, switching from processing one of the multiple tasks to another of the multiple tasks based on execution of the instructions, and passing data associated with the tasks to a subsequent programming stage upon completion of the tasks. - View Dependent Claims (21, 22, 23, 24, 25, 26)
-
27. A computer program product stored on a computer readable medium, the program comprising instructions for causing a parallel processor to:
-
establish programming stages, each programming stage comprising at least one programming engine; and at each programming stage, assign tasks for processing in the at least one programming engine; manage parallel processing of multiple tasks, including establishing a context for each of the multiple tasks, in which at least one of the multiple tasks requires execution of multiple instructions, switch from processing one of the multiple tasks to another of the multiple tasks based on execution of the instructions, and pass data associated with the tasks to a subsequent programming stage upon completion of the tasks. - View Dependent Claims (28, 29, 30, 31)
-
-
32. A computer program product stored on a computer readable medium, the program comprising instructions for causing programming engines to:
-
perform specific tasks for packet processing; arrange in programming stages, each comprising at least one programming engine; and for at least one programming engine, manage parallel processing of multiple tasks, including establish a context for each of the multiple tasks, in which at least one of the multiple tasks requires execution of multiple instructions, switch from processing one of the multiple tasks to another of the multiple tasks based on execution of the instructions, and pass data associated with the multiple tasks to a subsequent programming stage.
-
-
33. A multiprocessing system comprising:
-
a plurality of programming engines configured to process data packets, the plurality of programming engines arranged in a plurality of programming stages wherein at least one programming engine manages parallel processing of multiple tasks, including establishing a context for each of the multiple tasks, in which at least one of the tasks requires execution of multiple instructions, switches from processing one task to another task based on execution of the instructions, and passes data associated with the tasks to a subsequent programming stage upon completion of the tasks. - View Dependent Claims (34, 35, 36, 37, 38)
-
Specification