IL184739A

Multi-threaded packet processing engine for stateful packet processing

Abstract

This record has no abstract on file.

Term

No projected expiry on record.

  1. Priority
  2. Filed
  3. Published
  4. Today

46 claims: 3 independent, 43 dependent

  1. 1
    88 CLAIMS:1. A method implemented by a multi-threaded packet processing engine, comprising: executing a particular thread to process a particular packet, wherein the 5 particular packet is part of a flow, wherein the flow comprises one or more other packets, wherein the other packets are processed by one or more other threads, and wherein the particular packet has a particular seniority relative to the other packets in the flow;reaching, by the particular thread, a particular stage of execution;10 determining whether there are any threads that are processing more senior packets in the flow that have not yet progressed beyond the particular stage of execution;and in response to a determination that there is at least one thread that is processing a more senior packet in the flow that has not yet progressed beyond the particular stage 15 of execution, stalling execution of the particular thread.
  2. 9
    10. The method of claim 9, wherein determining whether the first thread has progressed beyond the particular stage of execution comprises:determining whether the first thread has entered and exited the particular stage of execution.
  3. 11
    12. The method of claim 11, wherein the first packet has a first seniority indicator and the second packet has a second seniority indicator, and wherein determining whether the first thread has progressed beyond the particular stage of execution further comprises:20 comparing the second seniority indicator with the first seniority indicator to determine whether the first packet is more senior than the second packet.
  4. 12
    13. The method of claim 12, wherein the first thread has an associated first execution progress indicator and the second thread has an associated second execution progress indicator, and wherein determining whether the first thread has progressed 25 beyond the particular stage of execution further comprises:processing the first and second execution progress indicators to determine whether the first thread has progressed beyond the particular stage of execution.
  5. 13
    14. The method of claim 13, wherein the first thread has a first gate vector register associated therewith, wherein the second thread has a second gate vector 30 associated therewith, wherein the first execution progress indicator is stored in the first gate vector register and the second execution progress indicator is stored in the second 01766054\2-01 91 gate vector register, and wherein processing the first and second execution progress indicators comprises:accessing the first and second gate vector registers to obtain the first and second execution progress indicators;and 5 comparing the first and second execution progress indicators.
  6. 16
    17. The method of claim 16, wherein determining whether the first thread 15 has progressed beyond the particular stage of execution comprises:determining whether the first thread has entered and exited the particular stage of execution.
  7. 17
    18. A multi-threaded packet processing engine, comprising:a first set of processing resources for executing a first thread to process a first 20 packet, wherein the first packet is part of a flow, and wherein the first packet has a seniority relative to other packets in the flow;and a second set of processing resources for executing a second thread to process a second packet, wherein the second packet is part of the same flow, and wherein the second packet is less senior than the first packet, the second set of processing resources 25 comprising an instruction execution mechanism, the instruction execution mechanism executing the second thread until a particular stage of execution is reached, and upon reaching the particular stage of execution, the instruction execution mechanism determining whether the first thread has progressed beyond the particular stage of execution, and in response to a determination that the first thread has not yet progressed 30 beyond the particular stage of execution, the instruction execution mechanism causing execution of the second thread to stall. 01766054\2-01 92
  8. 18
    19. The packet processing engine of claim 18, wherein the first and second sets of processing resources are separate and distinct.
  9. 20
    21. The packet processing engine of claim 20, wherein the gate instruction is 10 a processor-level instruction.
  10. 25
    26. The packet processing engine of claim 25, wherein the first progress register is a first gate vector register, and wherein the second progress register is a 25 second gate vector register.
  11. 27
    28. The packet processing engine of claim 27, wherein the first and second 30 sets of processing resources are separate and distinct. 01766054\2-01 94
  12. 30
    32. The method of claim 30, wherein the first packet has a first seniority indicator and the second packet has a second seniority indicator, and wherein determining whether the first thread has progressed beyond the particular stage of execution comprises:comparing the second seniority indicator with the first seniority indicator to 25 determine whether the first packet is more senior than the second packet.
  13. 36
    38. A multi-threaded packet processing engine, comprising:a first set of processing resources for executing a first thread to process a first packet, the first packet having a seniority relative to other packets;and 25 a second set of processing resources for executing a second thread to process a second packet, wherein the second packet is less senior than the first packet, the second set of processing resources comprising an instruction execution mechanism, the instruction execution mechanism executing the second thread until a particular stage of execution is reached, and upon reaching the particular stage of execution, the instruction 30 execution mechanism determining whether the first thread has progressed beyond the particular stage of execution, and in response to a determination that the first thread has 01766054X2-01 96 not yet progressed beyond the particular stage of execution, the instruction execution mechanism causing execution of the second thread to stall.
  14. 38
    40. The packet processing engine of claim 38, wherein the instruction execution mechanism executes a gate instruction when it reaches the particular stage of execution, the gate instruction causing the instruction execution mechanism to determine whether the first thread has progressed beyond the particular stage of execution, and to stall execution of the second thread if the first thread has not yet 10 progressed beyond the particular stage of execution.
  15. 44
    46. The packet processing engine of claim 44, wherein the first and second ID registers, the first and second seniority registers, and the first and second execution progress registers are dedicated, processor-level registers.