Method and apparatus for queue ordering in a multi-engine processing system
AssigneePMC-Sierra US, Inc.
InventorsAnil B. Dongare, Kuan Hua Tan
Life of this patent
Estimating the term…
Abstract
A method and apparatus for queue-ordering commands in multi-engines, multi-queues and/or multi-flows environment is provided. Commands from single/multiple queues and multi-flows are processed by multi-engines with different processing time and/or out of order, which breaks sequential order of commands from same input queue and commands are distributed across multiple engines' output buffer after processing. Processed commands are stored in dedicated command output buffer associated with each engine temporarily. The processed commands are re-ordered while writing out. Also commands can be scheduled to idle engines to achieve maximum throughput, thus utilizing the engines in an optimal manner.
Claims20
A method for queue ordering in a multi-engine processing system, the method comprising:
- receiving a plurality of input streams, each input stream having a plurality of input segments, the plurality of input segments ordered relative to other input segments within the input stream;
- appending an identity tag to the plurality of input segments in each input stream to produce a plurality of tagged input segments, the identity tag including information indicating the input stream and the relative order within the input stream of each of the plurality of input segments;
- iteratively assigning each of the plurality of tagged input segments to any one of a plurality of processing engines based on availability of the processing engines in the relative order of the tagged input segments within the respective input stream;
- processing each of the plurality of tagged input segments in its respective assigned processing engine to produce a corresponding plurality of tagged output segments;
- storing each of the plurality of tagged output segments in a dedicated output buffer associated with its respective assigned processing engine;
- and,
- reordering the plurality of tagged output segments to produce the plurality of output streams, each output stream having the same relative order of output segments as in the corresponding input stream.
A multi-engine processing system comprising:
- an input queue handler configured to receive a plurality of input streams, each input stream having a plurality of input segments, the plurality of input segments ordered relative to other input segments within the input stream;
- a tagging module configured to append an identity tag to a plurality of input segments in each input stream to produce a plurality of tagged input segments, the identity tag including information indicating the input stream and the relative order within the input stream of each of the plurality of input segments;
- a scheduler configured to iteratively assign each of the plurality of tagged input segments to any one of a plurality of processing engines based on availability of the processing engines in the relative order of the tagged input segments within the respective input stream,
- each of the plurality of tagged input segments being processed in its respective assigned processing engine to produce a corresponding plurality of tagged output segments;
- a plurality of dedicated output buffers associated with the plurality of processing engines, the plurality of dedicated output buffers configured to store each of the plurality of tagged output segments;
- and,
- a reordering module configured to reorder the plurality of tagged output segments to produce a plurality of output streams, each output stream having the same relative order of output segments as in the corresponding input stream.
Dependencies are inferred from the claim text.