Claims
- 1. A method for processing an incoming information element belonging to a flow, the incoming information element comprising at least one information element segment, the method comprising:
receiving a particular one of the at least one information element segment; stacking the particular one of the at least one information element segment so that a plurality of bits of the particular one of the at least one information element segment are parallel to each other in a vertical direction; fetching a plurality of instructions corresponding to the flow to which the incoming information element belongs; fetching a plurality of registers corresponding to the flow to provide adequate memory space to execute the plurality of instructions without performing a context switch; and executing the plurality of instructions to perform a function on the particular one of the at least one information element segment.
- 2. The method of claim 1 further comprising dividing the incoming information element into the at least one information element segment.
- 3. The method of claim 2, wherein the stacking comprises upon receiving the particular one of the at least one information element segment, stacking the particular one of the at least one information element segment so that the plurality of bits of the particular one of the at least one information element segment are parallel to each other in the vertical direction.
- 4. The method of claim 1, wherein the fetching of the plurality of instructions and the fetching of the plurality of registers are triggered upon production of a stacked one of the at least one information element segment.
- 5. The method of claim 1, wherein the fetching of the plurality of instructions comprises fetching the plurality of instructions in one memory access.
- 6. The method of claim 1 further comprising, if the plurality of registers is modified when executing the plurality of instructions, then storing a modified plurality of instructions within a policy control state (“PCS”) memory.
- 7. The method of claim 1, wherein the function comprises a complex function, wherein the complex function includes:
determining a number of fixed-size buffers to store the particular one of the at least one information element segment, and adding the number of fixed-size buffers to a chain of at least one fixed-size buffer where the chain corresponds to the flow and each of the at least one fixed-size buffer are linked together.
- 8. The method of claim 1, wherein the function comprises a complex function, wherein the complex function includes updating a count of rollovers of a timer for the flow in order to accurately time stamp the incoming information element, wherein the updating process includes:
determining if the incoming information element conforms to a burst tolerance; resetting a count of timer rollovers to zero if the information element conforms to the burst tolerance; and incrementing by one the count of timer rollovers upon an occurrence of the timer rollover if the count of timer rollovers is less than (2number of bits that represent the number of timer rollovers−1).
- 9. The method of claim 1, wherein the function comprises a complex function, wherein the complex function includes converting a first protocol of the incoming information element having a first length to a second protocol, wherein the conversion process includes:
stripping-off a first number of bytes specified by a policy control instruction (“PCI”) from the incoming information element starting at a first offset specified by the PCI to remove the first protocol of the information element and produce a stripped-off information element; and inserting an encapsulated data that includes the second protocol to the stripped-off information element starting at a second offset specified by the PCI to produce an encapsulated information element.
- 10. The method of claim 1, wherein the function comprises a complex function, wherein the complex function includes maintaining an activity-level of the flows, wherein the maintaining process includes:
upon receiving the information element belonging to the flow, setting a first one of a plurality of bits in a recently-used bitmap that corresponds to the flow to indicate activity; and upon an external processor polling the activity-level of the flow, resetting the first one of the plurality of bits corresponding to the flow to indicate no activity.
- 11. The method of claim 1 further comprising, if the incoming information element is a cell, storing the particular one of the at least one information element segment within a data portion of a first one of the at least one fixed-size buffer.
- 12. The method of claim 1 further comprising, if the incoming information element is a packet, then:
determining if an earlier-arriving information element that has the same priority and arrived at the same input logical port produced a remainder data that did not fit into an earlier-filled one of the at least one fixed-size buffer; rotating backward the particular one of the at least one information element segment to produce at least one of:
a matching segment portion that combined with any remainder data fills as much as possible a particular one of at least one fixed-size buffer and a remainder segment portion that includes any excess data that could not fit into the particular one of the at least one fixed-size buffer after combining any remainder data with the particular one of the at least one information element segment; and mixing any remainder data with the matching segment portion to produce a fixed-size buffer.
- 13. The method of claim 1 further comprising, if the flow to which the incoming information element belongs is in an unassigned bit rate (“UBR”) mode, then:
determining if any one of at least one fixed-size buffer in which the incoming information element is stored is an end-of-packet (“EOP”) buffer; storing the particular one of the at least one fixed-size buffer that is the EOP buffer in an entry of a deferred buffer that corresponds to an output port to which the information element is destined; and storing each of the at least one fixed-size buffer that is not the EOP buffer in an output port based chain for the output port to which the information element is destined, the output port based chain includes at least one buffer and each of the at least one buffer are connected together.
- 14. The method of claim 1, wherein the plurality of instructions comprises a very long instruction.
- 15. The method of claim 14, wherein the very long instruction includes a plurality of bits, each of the plurality bits are parallel to each other.
- 16. The method of claim 15, wherein the very long instruction is 256-bits in length.
- 17. The method of claim 1, wherein a rotated particular one of the at least one information element segment is 512-bits in length.
- 18. The method of claim 7, wherein the fixed-size buffer is 64-bytes in length.
- 19. The method of claim 7, wherein the fixed-size buffer is 128-bytes in length.
- 20. A data pipelined processor to process an incoming information element belonging to a flow, comprising:
a program counter (“PCNT”) stage to receive a particular one of at least one segment of the incoming information element and upon receiving the particular one of the at least one segment, to parallelize the particular one of the at least one segment of the incoming information element so that a plurality of bits of the particular one of the at least one segment are parallel to each other in a vertical direction; an instruction and register fetch (“IRF”) stage to fetch a plurality of instructions corresponding to the flow to which the incoming information element belongs and to fetch a plurality of registers corresponding to the flow to provide adequate memory space to execute the plurality of instructions without performing a context switch; and an execution (“EXE”) stage, coupled to the IRF stage, to execute the plurality of instructions to perform a function on the parallelized particular one of the at least one information element segment.
- 21. The data pipelined processor of claim 20, wherein the PCNT stage is 512-bits wide.
- 22. The data pipelined processor of claim 20, wherein the IRF stage is 512-bits wide.
- 23. The data pipelined processor of claim 20, wherein the EXE stage is 512-bits wide.
- 24. The data pipelined processor of claim 20, wherein the plurality of instructions comprises a very long instruction.
- 25. The data pipelined processor of claim 24, wherein the very long instruction includes a plurality of bits, each of the plurality bits are parallel to each other.
- 26. The data pipelined processor of claim 20, wherein the parallelized particular one of the at least one segment is 512-bits in length.
- 27. The data pipelined processor of claim 20, wherein the PCNT stage combines a plurality of first subsegments to produce the particular one of the at least one segment of the incoming information element.
- 28. The data pipelined processor of claim 27, wherein the plurality of first subsegments, upon arrival at the PCNT stage, are immediately combined by the PCNT stage to produce the particular one of the at least one segment of the incoming information element.
- 29. The data pipelined processor of claim 28 further comprising an input/output unit, coupled to the PCNT stage, to combine a plurality of second subsegments to produce the plurality of first subsegments, and also to parallelize each of the plurality of first subsegments.
- 30. The data pipelined processor of claim 29 further comprising a framer, coupled to the input/output unit, to combine a plurality of serial bits of the incoming information element to produce a plurality of second subsegments, and to parallelize each of the plurality of second subsegments.
- 31. The data pipelined processor of claim 20, wherein the EXE stage includes a link management unit to determine a number of fixed-size buffers needed to store the particular one of the at least one information element segment, and to add the number of fixed-size buffers to a chain of at least one fixed-size buffer where the chain corresponds to the flow and each of the at least one fixed-size buffer are linked together.
- 32. The data pipelined processor of claim 20, wherein the EXE stage includes a policer unit to update a count of rollovers of a timer for the flow in order to accurately time stamp the incoming information element belonging to the flow, the policer unit comprising:
the timer for the flow; a time stamp rollover recovery state table that includes at least one entry, a particular one of the at least one entry includes a rollover count of the timer; a policing unit to determine if the incoming information element conforms to a burst tolerance, and if the incoming information element conforms to the burst tolerance, to reset the rollover count to zero; a mixer, coupled to the time stamp rollover recovery state table, that if the rollover count is reset to zero by the policing unit, to modify the particular one of the at least one entry to include the rollover reset to zero and to write the modified particular one of the at least one entry into the time stamp rollover recovery state table; and a time stamp rollover recovery circuit that:
increments by one the rollover count within the particular one of the at least one entry if the timer for the flow rolls over and if the rollover count is less than (2number of bits used to implement the rollover count−1), and writes the particular one of the at least one entry to the time stamp rollover recovery state table.
- 33. The data pipelined processor of claim 20 wherein the EXE stage includes a protocol translator unit to convert a first protocol of the incoming information element having a first length to a second protocol, the protocol translator unit comprising:
a first rotator to rotate forward the incoming information element by a first number of bytes specified by a policy control instruction (“PCI”) to produce a rotated information element; a first mixer to combine the rotated information element with the incoming information element to strip-off the first protocol from the incoming information element by removing the first number of bytes starting at a first offset to produce a stripped-off information element; a second rotator to rotate backward the stripped-off information element by a second number of bytes specified by the PCI to produce a second rotated information element; and a second mixer to combine the incoming information element, the second rotated information element, and an encapsulated data to insert the encapsulated data in the stripped-off information element starting at a second offset specified by the PCI to produce an encapsulated information element.
- 34. The data pipelined processor of claim 20, wherein the function comprises a complex function.
- 35. A method for updating a count of rollovers of a timer for a flow in order to accurately time stamp an incoming information element belonging to the flow, comprising:
determining if the incoming information element conforms to a burst tolerance; resetting a count of timer rollovers to zero if the information element conforms to the burst tolerance; and incrementing by one the count of timer rollovers upon an occurrence of the timer rollover if the count of timer rollovers is less than (2number of bits that represent the number of timer rollovers−1).
- 36. The method of claim 35 further comprising if the count of timer rollovers is at least one of:
(1) greater than (2number of bits that represent the number of timer rollovers−1) and (2) equal to (2number of bits that represent the number of timer rollovers−1), then setting the count of timer rollovers to a “don't care” value.
- 37. The method of claim 35, wherein the count of timer rollovers is represented using two bits.
- 38. A system for updating a count of rollovers of a timer for a flow in order to accurately time stamp an incoming information element belonging to the flow, comprising:
the timer for the flow; a time stamp rollover recovery state table that includes at least one entry, a particular one of the at least one entry includes a rollover count of the timer; a policing unit to determine if the incoming information element conforms to a burst tolerance, and if the incoming information element conforms to the burst tolerance, to reset the rollover count to zero; a mixer, coupled to the time stamp rollover recovery state table, if the rollover count is reset to zero by the policing unit, to modify the particular one of the at least one entry to include the rollover reset to zero and to write the modified particular one of the at least one entry into the time stamp rollover recovery state table; and a time stamp rollover recovery circuit that
increments by one the rollover count within the particular one of the at least one entry if the timer for the flow rolls over and if the rollover count is less than (2number of bits used to implement the rollover count−1) and writes the particular one of the at least one entry to the time stamp rollover recovery state table.
- 39. The system of claim 38, wherein the time stamp rollover recovery circuit writes the updated rollover count to the particular one of the at least one entry in the time stamp rollover recovery state table at intervals of (2number of bits used to implement the timer/the number of the at least one entry in the time stamp rollover recovery state table).
- 40. The system of claim 38, wherein the at least one entry within the time stamp rollover recovery state table equals 2K entries within the time stamp rollover recovery state table.
- 41. The system of claim 38, wherein the rollover count of the timer is represented using two bits.
- 42. The system of claim 38, wherein the particular one of the at least one entry is represented using 32-bits.
- 43. A method for converting a first protocol of an incoming information element having a first length to a second protocol, comprising:
stripping-off a first number of bytes specified by a policy control instruction (“PCI”) from the incoming information element starting at a first offset specified by the PCI to remove the first protocol of the information element and produce a stripped-off information element; and inserting an encapsulated data that includes the second protocol to the stripped-off information element starting at a second offset specified by the PCI to produce an encapsulated information element.
- 44. The method of claim 43, wherein the first number of bytes is stripped-off by rotating forward the incoming information element by the first number of bytes and mixing the forward rotated information element with the incoming information element to produce the stripped-off information element.
- 45. The method of claim 44, wherein the stripped-off information element has a second length equal to the first length minus the first number of bytes.
- 46. The method of claim 43, wherein the encapsulated data is inserted by rotating backward the stripped-off information element by the second number of bytes and mixing the backward rotated information element with the stripped-off information element and the encapsulated data having the length of the second number of bytes to produce the encapsulated information element.
- 47. The method of claim 46, wherein the encapsulated data is provided by the PCI.
- 48. The method of claim 46, wherein the encapsulated information element has a third length equal to the second length plus the second number of bytes.
- 49. The method of claim 43, wherein the first number of bytes is specified by a pop header length field in the PCI.
- 50. The method of claim 43, wherein the first offset is specified by a pop header offset field in the PCI.
- 51. The method of claim 43, wherein the second number of bytes is specified by a push header length field in the PCI.
- 52. The method of claim 43, wherein the second offset is specified by a push header offset field in the PCI.
- 53. A system for converting a first protocol of an incoming information element having a first length to a second protocol, comprising:
a first rotator to rotate forward the incoming information element by a first number of bytes specified by a policy control instruction (“PCI”) to produce a rotated information element; a first mixer to combine the rotated information element with the incoming information element to strip-off the first protocol from the incoming information element by removing the first number of bytes starting at a first offset to produce a stripped-off information element; a second rotator to rotate backward the stripped-off information element by a second number of bytes specified by the PCI to produce a second rotated information element; and a second mixer to combine the incoming information element, the second rotated information element, and an encapsulated data to insert the encapsulated data in the stripped-off information element starting at a second offset specified by the PCI to produce an encapsulated information element.
- 54. The system of claim 53, wherein the stripped-off information element has a second length equal to the first length minus the first number of bytes.
- 55. The system of claim 53, wherein the encapsulated data is provided by the PCI.
- 56. The system of claim 53, wherein the encapsulated information element has a third length equal to the second length plus the second number of bytes.
- 57. The system of claim 53, wherein the first number of bytes is specified by a pop header length field in the PCI.
- 58. The system of claim 53, wherein the first offset is specified by a pop header offset field in the PCI.
- 59. The system of claim 53, wherein the second number of bytes is specified by a push header length field in the PCI.
- 60. The system of claim 53, wherein the second offset is specified by a push header offset field in the PCI.
- 61. A method to maintain activity-levels of a plurality of flows, comprising:
upon receiving an information element belonging to a particular one of the plurality of flows, setting a particular one of a plurality of values in a recently-used table that corresponds to the particular one of the plurality of flows to indicate activity; and upon a processor polling the activity-level of a specific one of the plurality of flows, resetting a specific one of the plurality of values corresponding to the specific one of the plurality of flows to indicate inactivity.
- 62. The method of claim 61, wherein the activity levels are represented by a plurality of bits.
- 63. The method of claim 62, wherein, for each bit of the plurality of bits, a bit value of “1” indicates activity within a time period and a bit value of “0” indicates no activity within the time period.
- 64. A method to maintain activity-levels of a plurality of flows, comprising:
for each of a plurality of first values in a recently-used table,
determining if a particular one of the plurality of first values indicates that a corresponding one of the plurality of flows is active; and if the particular one of the plurality of first values indicates that the corresponding one of the plurality of flows is inactive, incrementing by one a particular one of a plurality of second values in an age table corresponding to the corresponding one of the plurality of flows.
- 65. The method of claim 64, wherein the plurality of first values in the recently-used table is implemented using a plurality of bits.
- 66. The method of claim 65, wherein, for each of the plurality of bits, a bit value of “1” indicates activity within a time period and a bit value of “0” indicates no activity within the time period.
- 67. A method to manage storage allocation to a plurality of flows, comprising:
finding a particular one of a plurality of values in an age table that indicates that a corresponding one of the plurality of flows is least active; and deallocating a particular one of at least one information segment storage unit that is assigned to the corresponding one of the plurality of flows that is least active.
- 68. A system to maintain a plurality of activity-levels corresponding to a plurality of flows, comprising:
a recently-used table that includes the plurality of activity-levels, each one of the plurality of activity-levels indicating the activity-level within a time period of a corresponding one of the plurality of flows; and an aging circuit, coupled to the recently-used table, that:
if a processor polls a particular one of the plurality of activity-levels of a particular one of the plurality of flows, resets the particular one of the plurality of activity-levels to indicate inactivity within the time period; and if an information element belonging to a specific one of the plurality of flows arrives, sets a specific one of the plurality of activity-levels corresponding to the specific one of the plurality of flows to indicate activity within the time period.
- 69. The system of claim 68, wherein the plurality of activity-levels in the recently-used table is implemented using a plurality of bits.
- 70. The system of claim 69, wherein, for each of the plurality of bits, a bit value of “1” indicates activity within the time period and a bit value of “0” indicates no activity within the time period.
- 71. The system of claim 69, wherein the plurality of bits in the recently-used table is organized as a plurality of rows, each one of the plurality of rows includes a subset of the plurality of bits.
- 72. The system of claim 71, wherein the length of the subset of the plurality of bits is 32-bits.
- 73. For a port, a method to create a chain associated with the port, the chain includes a plurality of information segment storage units belonging to at least one flow that is an unassigned bit rate (“UBR”) flow and assigned to the port, comprising:
receiving an end-of-packet (“EOP”) segment of at least one segment of a first information element belonging to a particular one of the at least one flow; removing from a deferred storage unit an EOP segment of at least one segment of a second information element belonging to a specific one of the at least one flow; and if the EOP segment of the at least one segment of the first information element is not a start-of-packet (“SOP”), then:
storing the EOP segment of the second information element to a first one of the plurality of information segment storage units; storing an SOP segment of the at least one segment of the first information element to a second one of the plurality of information segment storage units, and linking the first one of the plurality of information segment storage units to the second one of the plurality of information segment storage units.
- 74. The method of claim 73 further comprising
storing the EOP segment of the at least one segment of the first information element to the deferred storage unit.
- 75. A method for storing within at least one fixed-size buffer a current one of at least one information element that all have the same input logical port number and priority, wherein each one of the at least one information element includes at least one information element segment, comprising:
(1) performing at least one of:
determining if an immediately earlier arriving one of the at least one information element segment of the current one of the at least one information element has data remaining that did not fit into an earlier-filled one of the at least one fixed-size buffer; and determining if a last one of the at least one information element segment of an immediately earlier arriving one of the at least one information element has data remaining that did not fit into an earlier-filled one of the at least one fixed-size buffer; (2) rotating backward an incoming one of the at least one information element segment of the current one of the at least one information element to produce at least one of:
a matching segment portion that combined with any remaining data fills as much as possible a particular one of the at least one fixed-size buffer; and a remainder segment portion that includes any excess data from the combining of the remaining data and the incoming packet segment that could not fit into the particular one of the at least one fixed-size buffer; and (3) mixing any remaining data with the matching segment to produce a fixed-size buffer.
- 76. The method of claim 75 further comprising mixing the remainder segment portion with a buffer header to produce an excess data buffer.
- 77. The method of claim 75 further comprising transmitting the fixed-size buffer to at least one of a memory and a deferred buffer.
- 78. The method of claim 76 further comprising storing the excess data buffer in an alignment temporary storage.
- 79. The method of claim 75, wherein the fixed-size buffer has a length of 64-bytes.
- 80. The method of claim 75, wherein the fixed-size buffer has a length of 128-bytes.
- 81. A system for storing within at least one fixed-size buffer a current one of at least one information element that all have the same input logical port number and priority, wherein each one of the at least one information element includes at least one information element segment, comprising:
an alignment intermediate data fetch (“ALF”) unit to do at least one of:
determine if an immediately earlier arriving one of the at least one information element segment of the current one of the at least one information element has data remaining that did not fit into an earlier-filled one of the at least one fixed-size buffer; and determine if a last one of the at least one information element segment of an immediately earlier arriving one of the at least one information element has data remaining that did not fit into an earlier-filled one of the at least one fixed-size buffer; a rotator, coupled to the ALF unit, to rotate backward an incoming one of the at least one information element segment of the current one of the at least one information element to produce at least one of:
a matching segment portion that combined with any remaining data fills as much as possible a particular one of the at least one fixed-size buffer; and a remainder segment portion that includes any excess data from the combining of the remaining data and the incoming packet segment that could not fit into the particular one of the at least one fixed-size buffer; and a mixer, coupled to the rotator, to mix any remaining data with the matching segment to produce a fixed-size buffer.
- 82. The system of claim 81, wherein the mixer mixes the remainder segment portion with a buffer header to produce an excess data buffer.
- 83. The system of claim 81 further comprising at least one of a memory and a deferred buffer to receive the fixed-size buffer.
- 84. The system of claim 82 further comprising an alignment temporary storage to store the excess data buffer.
- 85. The system of claim 81, wherein the fixed-size buffer has a length of 64-bytes.
- 86. The system of claim 81, wherein the fixed-size buffer has a length of 128-bytes.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefits of U.S. Provisional Application Serial Nos. 60/323,627, 60/372,507, and 60/382,437, filed Sep. 19, 2001, Apr. 14, 2002, and May 20, 2002, respectively, and entitled “System And Method For Vertical Instruction And Data Processing In A Network Processor Architecture,” “Differentiated Services For A Network Processor,” and “Vertical Instruction And Data Processing In A Network Processor Architecture,” respectively, all of which are incorporated herein by reference.
Provisional Applications (3)
|
Number |
Date |
Country |
|
60323627 |
Sep 2001 |
US |
|
60382437 |
May 2002 |
US |
|
60372507 |
Apr 2002 |
US |