Claims
- 1. A search method comprising the steps of:
a) partitioning a search region into n segments, where n is greater than 0; b) identifying for each segment a first location whereat searching begins and a second location whereat search ends; c) searching each segment with a first predetermined algorithm beginning at the first location and ending at the second location; d) for each segment, generating from said searching information indicating whether or not any indicator bit set to a predetermined state has been detected and the location of the indicator bit; and e) using the information provided in step c) to select a winning location.
- 2. The search method of claim 1 further including the step of performing a predetermined action on an entity associated with the winning location.
- 3. The search method of claim 2 further including the steps of providing a pointer to identify the location whereat searching starts;
stepping the pointer sequentially to access a plurality of locations within the region; testing indicator bit at each location to see if it is set in the predetermined state; and generating a control signal for the first location encountered with the indicator bit set to the predetermined state.
- 4. The method of claim 1 wherein the search region includes a plurality of contiguous locations to which information can be written or deleted and an indicator whose setting indicates information present or no information present at a selected location.
- 5. The method of claim 4 wherein the information includes an identification number for at least one flow queue.
- 6. The method of claim 1 wherein the searches on the n segments are executed simultaneously.
- 7. The method of claim 6 wherein for step b) first it is assumed no current pointer (CP) is in a segment being searched wherein searching begins at a first location of the segment and ends at a first predetermined location within said segment; and
second it is assumed a current pointer (CP) is in the segment being searched wherein searching begins at the CP location in said segment being searched ending at a second predetermined location of the segment and searching begins at the first location in the segment ending at a third predetermined location.
- 8. A method to determine the next packet to forward from one of a plurality of flow queues comprising:
a) providing in a memory a search region including a plurality of contiguous locations to which information can be written/deleted and an indicator whose state indicates the present or absent of information at a selected location; b) partitioning said search region into n segments, wherein n is greater than 0; c) identifying a first location whereat searching begins for each segment;
c1) Identifying a second location whereat searching ends for each segment; d) searching each segment in accordance with a first predetermined algorithm; e) generating from each segment information indicating whether or not any indicator set to a predetermined state has been detected in said segment and location of detection; f) determining the segment in which the first location is located;
f1) determining the segment in which the second location is located; and g) examining the information in (e), (f1) and (f) with a second predetermined algorithm to select a winner indicator and location.
- 9. h) The method in claim 8 further including using the information in step g) to move a packet from a queue associated with the location in step g).
- 10. An apparatus including:
n traffic flow Queues, wherein n is greater than 0; a processing complex including at least one processor that enqueues packets on selected ones of the traffic flow queues; a memory with a search zone having a plurality of search locations with each search location including at least one indicator; p segment search engines, p is greater than 1, and each of said p segment search engine includes m inputs wherein each one of the m inputs operatively coupled to an indicator within a group of indicators, a first control input indicating a location whereat the segment search engine begins to search and a second control input indicating a location whereat the search ends; and a top search engine responsive to signals provided by the p segment search engines to generate a control signal identifying a location within said search zone.
- 11. The apparatus of claim 10 further including
a first scheduler function that monitors the traffic flow queues and periodically attaches to a location in said search zone a characteristics of a traffic flow queue if a packet is placed in said traffic flow queue; and a second scheduler function responsive to the control signal to transmit a packet from a selected Flow Queue.
- 12. The apparatus of claim 11 further including a plurality of target port Queues wherein one of said target port queues received the transmitted packet.
- 13. The apparatus of claim 11 wherein the characteristics includes the flow queue identification number.
- 14. A device comprising:
p segment search engines, p greater than 1 and each segment search engine having m inputs, m greater than 1, representing portions of a search zone, a first control input indicating a location whereat a search of the m inputs begins and a second control input indicating a location whereat the search ends; at least one storage location that stores information outputted from each of the p segment search engines; and a top search engine responsive to stored information to select and identify one of the locations in said search zone
- 15. The method of claim 1 wherein each segment includes m entries, wherein m is an even power of 2.
- 16. The method of claim 1 or 16 wherein step d) further includes the step of correlating outputs from each segment search with a top search algorithm to select the winning location.
- 17. A method for controlling the flow of information packets within a communications device including the steps of:
(a) providing a multi-position calendar; (b) partitioning the calendar into n segments, wherein n is greater than 0;
(b1) for each segment identifying a first location whereat searching begins and a second location whereat searching ends. (c) searching each segment with a segment search algorithm to identify at least one location with an indicator set to a first state; (d) examining with a top search algorithm locations detected in step (b); and (e) selecting one of the locations as a winning location.
- 18. The method of claim 17 further including the steps of determining a final winning location by concatenating an identification number for a winner segment containing the winning location to a value for the winning location within said winner segment; and
forwarding a packet from a flow queue having an identification number matching an identification number stored at the final winning location.
- 19. A program product including:
a media on which a computer program is recorded, said computer program having
(a) a set of instructions that partition a calendar into n segments, n is greater than 0;
(a1) a set of instructions that identify a first location in each segment whereat searching begins and a second location whereat searching ends. (b) a set of instructions that search each segment with a segment search algorithm to identify at least one location with an indicator set to a first state; (c) a set of instructions that examine with a top search algorithm locations identified in step (b); and (d) a set of instructions that selects one of the locations as a winning location.
- 20. The program product of claim 19 further including
(e) a set of instructions that determines a final winning location by concatenating an identification number for a winner segment containing the winning location to a value for the winning location within said winner segment; and (f) a set of instructions to generate and issue a signal that causes a device to forward a packet from a flow queue having an identification number matching an identification number stored at the final winning location.
CROSS-REFERENCE TO RELATED PATENT APPLICATIONS
[0001] The present application claims priority of the Provisional Application Serial No. 60/325,500 filed on Sep. 27, 2001.
[0002] The present application relates to the following documents, assigned to the assignee of the present invention, incorporated herein by reference:
[0003] U.S. patent application Ser. No. 09/834,141, filed Apr. 12, 2001 (priority date Apr. 13, 2000) by Brian M. Bass et al., entitled “Method and System for Network Processor Scheduling Based on Service Levels”.
[0004] U.S. patent application Ser. No. 09/546,651, filed Apr. 10, 2000, by Peter I. A. Barri et al., entitled “Method and System for Managing Congestion in a Network”. This patent is sometimes referred to herein as the Flow Control Patent.
[0005] U.S. patent application Ser. No. 09/547,280, filed Apr. 11, 2000, by Marco Heddes et al., entitled “Unified method and System for Scheduling and Discarding Packets in Computer Networks”. This patent is sometimes referred to herein as the Packet Discard Patent.
[0006] U.S. patent application Ser. No. 09/384,691, filed Aug. 27,1999, by Brian Bass et al., entitled “Network Processor Processing Complex and Methods”. This patent is sometimes referred to herein as the Network Processing Unit Patent or NPU Patent.
[0007] U.S. Pat. No. 6,222,380 entitled “High Speed Parallel/Serial Link for Data Communications” issued Apr. 24, 2001. This patent is sometimes referred to herein as the Link Patent.
[0008] U.S. patent application Ser. No. 09/966,304 filed Sep. 27, 2001, by Darryl J. Rumph, entitled “Configurable Scheduler Calendar Search Algorithm”.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60325500 |
Sep 2001 |
US |