Coordination of calendar searches in a network scheduler
Summary by NHIP
Network Calendar Scheduler System
The system uses a search engine to identify the next frame for removal from flow queues within a network device. It searches time-based calendars using a Current Pointer and Current Time before falling back to non-time-based calendars, loading results into Winner Valid and Winner Location arrays for final selection.
Claim Score by NHIP
Abstract
A system that indicates which frame should next be removed by a scheduler from flow queues within a network device, such as a router, network processor, and like devices, is disclosed. The system includes a search engine that searches a set of calendars under the control of a Finite State Machine (FSM), a current pointer and input signals from array and a clock line providing current time. The results of the search are loaded into a Winner Valid array and a Winner Location array. A final decision logic circuit parses information in the Winner Valid array and Winner Location array to generate a final Winner Valid Signal, the identity of the winning calendar and the winning location. Winning is used to define the status of the calendar in the calendar status array selected as a result of a search process being executed on a plurality of calendars in the calendar status array.

Term
Term ended
Expired 3 October 2023, 3 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
20 claims: 3 independent, 17 dependent
- 1A system, comprising:a calendar search engine;an array of calendars with outputs operatively coupled to inputs of the search engine, wherein the array of calendars includes a first set of time based calendars in which a search zone over which the search engine searches is delineated by a Current Pointer (CP) and a Current Time (CT) and a second set of non-time based calendars which uses the CP to delineate the beginning of a search zone;a Winner Valid array operatively coupled to the calendar search engine;a Winning Location array operatively coupled to the calendar search engine;and a controller responsive to received signals configured to generate control signals which put the system in an initial state and causes the calendar search engine to, within a predefined time interval, search: each of the first set of time based calendars based on the CP and the CT until a valid result is found;if no valid result is found from the search of the first set of time based calendars, search the second set of non-time calendars based on the CP;and load search valid results into the Winner Valid Array and Winning Location Array.
- 9Broadest claimClaim Score 54, average(NHIP)A system including:a network processor;a scheduler operatively connected within the network processor;and a timing subsystem operatively coupled to the scheduler, the timing subsystem including: a first set of time based calendars and a second set of non-time based calendars;an array;and a calendar search engine configured to, within a predefined time interval, search: each of the first set of time based calendars until a valid result is found;if no valid result is found from the search of the first set of time based calendars, search the second set of non-time calendars;and load valid search results into the array, wherein the time based calendars are searched based on a current pointer and a current time and the non-time based calendars are searched based on the current pointer.
- 17A method for scheduling packet transmission, comprising:operatively connecting a first set of time based calendars, a second set of non-time based calendars and an array with a network processor, assigning a queue id to a network processor packet and attaching the queue id to a location of a calendar of the first set of time based calendars delineated by a current pointer and a current time or a location of a calendar of the second set of non-time based calendars delineated by a current pointer;searching, within a predefined time interval: each of the locations of the first set of time based calendars based on a current pointer and a current time until a valid result is found;if no valid result is found from the searching of the first set of time based calendars, searching the second set of non-time based calendars based on a current pointer until a valid result is found;and loading a valid search result into the array.
Independent claims3
87 paragraphs in 5 sections, as filed
CROSS-REFERENCE TO RELATED PATENT APPLICATIONS
This application is a continuation of application Ser. No. 10/255,861, filed Sep. 26, 2002, which claims priority of provisional Ser. No. 60/325,501, filed Sep. 27, 2001.
The present application relates to the following patent applications, assigned to the assignee of the present invention, which are fully incorporated herein by reference:
patent application Ser. No. 09/834,141, filed Apr. 12, 2001, entitled “Method and System for Network Processor Scheduling Based on Service Levels”, now U.S. Pat. No. 7,123,622;
patent application Ser. No. 09/966,304, filed Sep. 27, 2001, entitled “Configurable Hardware Scheduler Calendar Search Algorithm”, now U.S. Pat. No. 7,113,517;
patent application Ser. No. 09/384,691, filed Aug. 27, 1999, entitled “Network Processor Processing Complex and Methods” (sometimes referred to herein as the Network Processing Unit Patent or NPU patent), now U.S. Pat. No. 6,769,033;
patent application Ser. No. 09/546,651, filed Apr. 10, 2000, entitled “Method and System for Managing Congestion in a Network” (sometimes referred to herein as the Flow Control Patent), now U.S. Pat. No. 6,657,962;
patent application Ser. No. 09/547,280, filed Apr. 11, 2000, entitled “Unified method and System for Scheduling and Discarding Packets in Computer Networks” (sometimes referred to herein as the Packet Discard Patent), now U.S. Pat. No. 6,674,718.
patent application Ser. No. 10/242,151, filed Sep. 12, 2002, entitled “Scalable Hardware Scheduler Time Based Calendar Search Algorithm”, now U.S. Pat. No. 7,020,657.
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to communication network apparatus such as is used to link information handling systems or computers of various types and capabilities and to components and methods for data processing in such an apparatus. More particular the present invention relates to schedulers used in such devices to indicate when the next packet is to be transmitted from queues within the devices.
2. Description of the Related Art
Scheduling the transmission of packets between points within a communications device or between points in the communications device and an external transmission network is well known in the prior art. The conventional approach is to provide a plurality of queues within the device and packets to be transmitted are enqueued to selected queues. A timing device sometimes called a timing wheel or calendar is searched to determine when the next packet is to be dequeued and forwarded from the queues. The selection, queueing and dequeueing of packets are controlled by several factors collectively referred to as Quality of Service (QoS). Because the factors and QoS requirements are well known in the prior art further discussion is not warranted. Suffice it to say U.S. Pat. Nos. 5,533,020 and 6,028,843 are examples of prior art.
Even though the prior art timing devices work well for their intended purpose it is believed that as the number of network users increases and more demand is made for better or higher Quality of Service (QoS) a more practical and efficient timing device will be required.
The requirement that the timing device should be able to support more customers and at the same time provide higher QoS poses a dilemma for the designer. The designer's dilemma is based on the fact that a design that addresses or solves the increased customer problem could adversely affect QoS whereas a design that improves QoS may not necessarily handle a large number of customers.
As a general proposition the increase in customer numbers can be solved by an increase in the number of calendars used in the design. But as the number of calendars increase more time will be required to process the calendars. With QoS time is of the essence. So, as the processing time increases QoS tends to deteriorate. As a consequence the designer is faced with the problems of processing a relatively large number of calendars within a relatively short time interval.
Another problem is that the design should be adaptive to face changing needs of the communication marketplace. If the design is not adaptive whenever conditions, such as addition of customers, change the current design would have to be redone. A more desirable outcome is to have a design which requires minor changes to meet the new requirements. Stated another way the design should be adaptive to accommodate changes.
Many scheduler and associated timing devices are fabricated in solid logic technology. In this technology, large numbers of circuits are fabricated on relatively small areas of silicon termed chip. Space or real estate on the chip is at a premium. As a consequence the designer is allotted a relatively small surface area in which to place the circuits needed to provide the timing function of the scheduler. The requirement to fit the design into the limited space presents another problem for the designer.
In view of the above there is a need to provide an improved timing device to schedule movement of packets within a communications network.
SUMMARY OF THE INVENTION
The present invention solves the problems by providing timing system including a single search engine, and related logic circuits that search multiple calendars in a predefined time interval and provide a calendar number and location in the calendar that should next be serviced by the scheduler. In addition, the timing system is optimized to fit into a relatively small silicon area.
More particular the optimized timing system includes a search engine that searches a plurality of calendars and provide a calendar and calendar location (winner information) within a predefined time interval termed a “tick”. The results of the searches are stored in a Winner Valid Array which identifies the array that has been selected and the Winning Location Array which identifies the selected location within the selected array.
A final decision logic circuit parses information in the Winner Valid Array and Winning Location Array to generate a Final Winner Valid output, the number of the winning calendar and the winning location within the winning calendar. The final results are used to service the related flow queue.
A control Finite State Machine (FSM) responsive to several control input signals generates control signals to drive the calendar array, single search engine, current pointer array, winning location array and final decision selector logic.
In one of the illustrated embodiments the calendar array includes n(n>1) time based calendars and x(x>1) non-time based calendars. By using multiple calendars the design can be easily adapted to accommodate changed conditions.
As used in this document a time based calendar uses two variables, namely: current pointer (CP) and current time (CT) to identify a search zone within the calendar. The CP identifies the location of a calendar whereat the search engine begins and the CT identifies the location whereat the search terminates. In the illustrated embodiment n=12.
A non-time based calendar uses only one variable CP to identify the location whereat the search begins. The ending location is the one preceding the start location in this regard the search zone in the non-time based calendar wraps. In the illustrated embodiment x=40.
As a consequence in the illustrated embodiment at most fifty-two (52) calendars have to be maintained, with the capability to perform calendar searches as per the requirements. At most, 15 calendar searches have to be conducted within a “tick” cycle, which is defined as the time it takes to enqueue one packet and dequeue one packet from a flow queue. In the current system, this is defined as a minimum of 20 system clock cycles. At a minimum, each time-based calendar must be searched during each tick cycle, independent of activity against this calendar. A non-time-based calendar search needs to be conducted only when an action is taken against that calendar, such as an attach or detach.
The values set forth herein are exemplary of the illustrated embodiment and should not be construed as a limitation on the scope of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention together with the above and other advantages may best be understood from the following detailed description of the illustrated embodiment of the invention illustrate in the drawings; wherein:
<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram of an interface device or Network Processor including teachings of the present invention.
<figref idref="DRAWINGS">FIG. 2</figref> shows a block diagram of the Embedded Processor Complex (EPC), DN Enqueue and DN Scheduler.
<figref idref="DRAWINGS">FIG. 3</figref> shows a block diagram with more details of the Network Processor and scheduler including teachings of the present invention.
<figref idref="DRAWINGS">FIG. 4</figref> shows a logical representation of the scheduler including the timing subsystem according to the teachings of the present invention.
<figref idref="DRAWINGS">FIG. 5</figref> shows a block diagram of the timing system according to teachings of the present invention.
<figref idref="DRAWINGS">FIG. 6</figref> shows a flowchart of the Control Finite State Machine (FSM).
<figref idref="DRAWINGS">FIG. 7</figref> shows a flowchart of the Final Decision Selector logic.
<figref idref="DRAWINGS">FIG. 8</figref> shows a block diagram of the Calendar Search Engine.
<figref idref="DRAWINGS">FIG. 9</figref> shows Table I of the initialization routine which is done by the FSM.
<figref idref="DRAWINGS">FIG. 10</figref> shows Table II illustrating Array accesses during a “tick” cycle.
<figref idref="DRAWINGS">FIG. 11</figref> shows Table III illustrating Type I search.
<figref idref="DRAWINGS">FIG. 12</figref> shows Table IV illustrating Type II search.
<figref idref="DRAWINGS">FIG. 13</figref> shows Table V illustrating Type III search.
<figref idref="DRAWINGS">FIG. 14</figref> shows Table VI illustrating Type IV search.
<figref idref="DRAWINGS">FIG. 15</figref> shows Table VII illustrating Type V search.
DETAILED DESCRIPTION OF THE ILLUSTRATED EMBODIMENT
The invention described hereinafter may be used in any environment, particularly in computers, where a structure with a specific number of calendars is to be searched. It works well in communications devices such as an interface device, also called Network Processor, and as such is described in that environment. However, this should not be construed as a limitation on the scope of the invention since it is well within the skill of one skilled in the art to make changes or modification to adapt the invention to several other technologies. Any such changes or modification is intended to be covered by the claims set forth herein.
In the following description of the preferred embodiment, the best implementations of practicing the invention presently known to the inventors will be described with some particularity. However, this description is intended as a broad, general teaching of the concepts of the present invention in a specific embodiment but is not intended to be limiting the present invention to that as shown in this embodiment, especially since those skilled in the relevant art will recognize many variations and changes to the specific structure and operation shown and described with respect to these figures.
<figref idref="DRAWINGS">FIG. 1</figref> shows a block diagram of the interface device chip that includes the substrate <b>10</b> and a plurality of subassemblies integrated on the substrate. The sub-assemblies are arranged into an upside configuration and a downside configuration, with the “upside” configuration (sometimes also referred to as an “ingress”) referring to those components relating to data inbound to the chip from a data transmission network (up to or into the chip) and “downside” (sometimes referred to as an “egress”) referring to those components whose function is to transmit data from the chip toward the data transmission network in an outbound fashion (away from the chip or down and into the network). The invention described hereinafter is in the egress portion of the chip. Data flows follow the respective arrangements of the upside and downside configurations; thus, there is a upside data flow and a downside data flow in the system of <figref idref="DRAWINGS">FIG. 1</figref>. The upside or ingress configuration elements include an Enqueue-Dequeue-Scheduling UP (EDS-UP) logic <b>16</b>, multiple multiplexed MAC's-UP (PMM-UP) <b>14</b>, Switch Data Mover-UP (SDM-UP) <b>18</b>, System Interface (SIF) <b>20</b>, Data Align Serial Link A (DASL-A) <b>22</b> and Data Align Serial Link B (DASL-B) <b>24</b>. Data links are more fully described in the Link Patent referenced above, and reference should be made to that document for a greater understanding of this portion of the system. It should be understood that the preferred embodiment of the present invention uses the data links as more fully described in that patent, other systems can be used to advantage with the present invention, particularly those which support relatively high data flows and system requirements, since the present invention is not limited to those specific auxiliary devices such as the data links which are employed in the preferred embodiment.
The components depicted on the downside (or egress) of the system include data links DASL-A <b>26</b> and DASL-B <b>28</b>, system interface SIF <b>30</b>, switch data mover SDM-DN <b>32</b>, enqueue-dequeue-scheduler EDS-DN <b>34</b> and multiple multiplexed MAC's for the egress PMM-DN <b>36</b>. The substrate <b>10</b> also includes a plurality of internal static random access memory components (S-RAM's), a traffic management scheduler <b>40</b> (TRAFFIC MGT SCHEDULER) also known as the Egress Scheduler containing the teachings of the present invention and an embedded processor complex <b>12</b> described in greater depth in the NPU Patent referenced above. An interface device <b>38</b> is coupled by the respective DMU busses to PMM <b>14</b>, <b>36</b>. The interface device <b>38</b> could be any suitable hardware apparatus for connecting to the L1 circuitry, such as Ethernet physical (ENET PHY) devices or asynchronous transfer mode framing equipment (ATM FRAMER), both of which are examples of devices which are well known and generally available for this purpose in the trade. The type and size of the interface device are determined, at least in part, by the network media to which the present chip and its system are attached. A plurality of external dynamic random access memory devices (D-RAMS) and a S-RAM are available for use by the chip.
While here particularly disclosed for networks in which the general data flow outside the relevant switching and routing devices is passed through electric conductors such as wires and cables installed in buildings, the present invention contemplates that the network switches and components thereof could be used in a wireless environment as well. For example, the media access control (MAC) elements herein disclosed may be replaced with suitable radio frequency devices, such as those made from silicon germanium technology, which would result in the connection of the device disclosed directly to a wireless network. Where such technology is appropriately employed, the radio frequency elements can be integrated into the VLSI structures disclosed herein by a person of skill in the appropriate arts. Alternatively, radio frequency or other wireless response devices such as infrared (IR) response devices can be mounted on a blade with the other elements herein disclosed to achieve a switch apparatus which is useful with wireless network apparatus.
The arrows show the general flow of data within the interface system shown in <figref idref="DRAWINGS">FIG. 1</figref>. Frames of data or messages (also sometimes referred to as packets or information units) received from an Ethernet MAC <b>14</b> off the ENET PHY block <b>38</b> via the DMU bus are placed in internal data store buffers <b>16</b>a by the EDS-UP device <b>16</b>. The frames may be identified as either normal frames or guided frames, which then relates to method and location of the subsequent processing in the plurality of processors in the EPC. After the input units or frames are processed by one of the plurality of processors in the embedded processor complex, the completed information units are scheduled through the scheduler <b>40</b> out of the processing unit <b>10</b> and onto the data transmission network through the PMM-DN multiplexed MAC's <b>36</b> and the physical layer <b>38</b>. It is the scheduling of data by the scheduler <b>40</b> and in particular timing system within the scheduler that the present invention will describe hereinafter.
<figref idref="DRAWINGS">FIG. 2</figref> is a block diagram of a processing system which can employ the present invention to advantage. In this <figref idref="DRAWINGS">FIG. 2</figref>, a plurality of processing units <b>110</b> are located between a dispatcher unit <b>112</b> and a completion unit <b>120</b>. Each incoming frame F (from a switch, not shown, attached to the present data processing system) is received and stored into a DOWN data store (or DN DS) <b>116</b>, then sequentially removed by the dispatcher <b>112</b> and assigned to one of the plurality of processing units <b>110</b>, based on a determination by the dispatcher <b>112</b> that the processing unit is available to process the frame. Greater detail on the structure and function of the processing units <b>110</b> in particular, and the processing system in general, can be found in the NPU Patent references above and patent applications and descriptions of the individual components such as a flow control device detailed in the Flow Control Patent. Interposed between the dispatcher <b>112</b> and the plurality of processing units <b>110</b> is a hardware classifier assist <b>118</b> which is described in more detail in a pending patent application Ser. No. 09/479,027 filed Jan. 7, 2000 by J. L. Calvignac et al. and assigned to the assignee of the present invention, an application which is incorporated herein by reference. The frames which are processed by the plurality of network processors <b>110</b> go into a completion unit <b>120</b> which is coupled to the DN Enqueue <b>34</b> through a flow control system as described in the Flow Control Patent and the Packet Discard Patent. The DN Enqueue <b>34</b> is coupled to the Dn Scheduler which is coupled through the PMM DN MAC's <b>36</b>, then by the DMU data bus to the physical layer <b>38</b> (the data transmission network itself).
<figref idref="DRAWINGS">FIG. 3</figref> shows a block diagram of the data flow on the Egress side of the Network Processor. It should be noted that Network Processor (NP) and Interface Device are used interchangeably. To make the figure less complicated only components which are necessary to understand the invention are shown. The components include Data Management and Buffering <b>40</b>, Embedded Processor Complex <b>42</b>, Flow Queues <b>0</b>-Z, target port (TP) queues <b>0</b>-Y, Port Data Movement <b>44</b> and Egress Scheduler <b>46</b>. Each egress packet enters the Network Processor from a switched fabric against a “connection”, that is, a definition of a path from the switched fabric to a specific output port. Prior to sending of any packet data this path is defined. Included in this path is the addressing information that is a part of the packet “header”. This header is part of a table definition in the EPC that allows the EPC to determine the destination flow queue to which the data is enqueued. Each flow queue has a Queue Control Block (QCB) contained in the scheduler function that defines the destination target port (TP) in that flow queue.
Still referring to <figref idref="DRAWINGS">FIG. 3</figref>, egress packets enter the Network Processor and are buffered (stored) by Data Management and Buffering <b>40</b> which is responsible for managing the pointer to the packet data. These pointers will be passed to each functional block that will process the packet ending with the step where the packet data exits the Network Processor through the output ports. The Egress Scheduler <b>46</b> monitors the flow queues, and as packets are placed in a selected queue, the Egress Scheduler initiates movements of those packets in accordance with the invention to be described hereinafter and other Quality of Service (QoS) requirements to the appropriate target port from which the port data movement <b>44</b> packages the data in accordance with predetermined transmission protocol such as ethernet, etc., and forwards the data through one of the ports <b>0</b> through port w.
<figref idref="DRAWINGS">FIG. 4</figref> shows a logical block diagram of Egress Scheduler <b>46</b>. The function of Egress Scheduler <b>46</b> is to monitor the flow queues and at appropriate times determined by the invention herein move packets from flow queue to the target port (TP) Queue. To this end the Egress Scheduler <b>46</b> includes a plurality of functions which cooperate to provide the overall function of the scheduler. Included in the functions are the flow queue monitor logic which, among other things, monitors flow queue to determine when a data packet is placed in a flow queue by the Embedded Processor Complex. The Egress Scheduler <b>46</b> also includes the timing subsystem (to be described hereinafter) according to teachings of the present invention, calendar attach logic etc.
It should be noted that even though the functions which are necessary for the Egress Scheduler <b>46</b> to carry out its function are shown in <figref idref="DRAWINGS">FIG. 4</figref> as internal to the scheduler this is only a logical representation. In an actual Network Processor some of these functions may be located elsewhere in the Network Processor and not necessarily within the scheduler itself.
Still referring to <figref idref="DRAWINGS">FIGS. 3 and 4</figref>, the data packets enter the traffic flow queue <b>0</b>-Z at a given queue id. Each of the queue ids has a level of service requirement, as specified via the QoS parameters. When a packet enters a queue, Timing Subsystem (described below) of the Scheduler <b>46</b> determines when this packet may exit the same traffic queue id. This determination is performed by attaching the queue id to one of the locations of a calendar in the timing system (details set forth herein) per the queue service requirements and using the network scheduler decision algorithm. There may be more than one packet in the traffic queue at any one time in that another packet may enter the same queue id before the scheduler determines that a packet may exit the queue. When there is one or more data packets in a traffic flow queue a queue will be attached to one of the many network scheduler calendars which indicates that the queue will be serviced at a later time. When a packet exits the queue, the scheduler will remove the queue id from the calendar location from which it was attached. If a packet exits the traffic queue and there is at least one additional packet in the queue, the scheduler will reattach this queue ID to another calendar location for service (packet exits from the queue) at a later time. If there are no more packets in the queue after a packet exits, the scheduler will not reattach this queue ID to a calendar location. The scheduler continues to select traffic queues for service, one by one, until there are no more remaining packets in the traffic flow queues. During normal scheduler operation only one packet may enter a traffic flow queue during a “TICK” cycle. A “TICK” cycle is defined as a fixed number of system clock cycles in duration, and only one packet may enter and exit any of the traffic queues during a “TICK” cycle. Whenever one or more packets are in a traffic queue, this queue ID will be attached to one of the network scheduler calendars by the scheduler. This attachment indicates that a packet is due at some time in the future to exit the traffic queue. Only one packet may enter/exit one traffic queue at a time so there cannot be simultaneous packet entries into two or more queues nor can there be simultaneous packet exits from two or more queues.
In particular, <figref idref="DRAWINGS">FIG. 3</figref> shows a diagram of the Network Scheduler operating as follows: <ul id="ul0001" list-style="none"><li id="ul0001-0001" num="0057">Data packets enter the traffic queue at a given queue ID. Each of the queue ID's have a level of service requirement. When a packet enters a queue, the network scheduler determines when this packet may exit the same traffic queue. There may be more than one packet in the traffic queue at any given time, in that another packet may enter the same queue before the first packet has exited the queue. The determination of when a packet may exit a flow queue is performed by (1) attaching the queue ID to one of the Calendars at a specific calendar location, as specified by the Scheduler algorithm; and (2) considering this queue ID, along with other queue ID's that have been attached to the same or other calendar location for service via a calendar search. The search will determine which calendar location is the proper location that should be serviced next, if at all, and this calendar location is determined to be the “winning calendar location”. The flow queue ID that has been attached to the winning calendar location will be serviced via moving a packet from this flow queue. At this time, the scheduler will detach this queue ID from the location where it was attached. If there is an additional packet in the queue after the packet has exited, the scheduler will reattach this queue ID to another calendar location per the algorithm. If there are no more packets in the queue after the first packet has exited, the scheduler will not reattach this queue ID to a calendar. The scheduler continues to select traffic queues for service in this fashion, one-by-one, until there are no more remaining packets in any of the traffic queues.</li></ul>
<figref idref="DRAWINGS">FIG. 5</figref> shows a block diagram of the timing subsystem according to the teachings of the present invention. The timing system includes Calendar Status Array <b>50</b>, Control Finite State Machine (FSM) <b>52</b>, Calendar Search Engine <b>54</b>, Current Working Pointer Array (CP) <b>56</b>, Selector <b>55</b>, Winning Location Array <b>60</b>, Winner Valid Array <b>58</b> and Final Decision Selector logic <b>62</b>. The named structures are operable interconnected as shown in the figure.
Calendar Status Array <b>50</b> includes Q calendars. In the disclosed embodiment Q=52. However, this value of Q should not be a limitation on the scope of the invention since the number of calendars chosen is a design choice and does not intend to limit the teachings of the present invention. The Q calendars includes 12 time based calendars and 40 non-time based calendars. In <figref idref="DRAWINGS">FIG. 5</figref> the time based calendars are numbered <b>0</b> through <b>11</b> while the non-time based calendars are labeled <b>12</b> through <b>51</b>. The arrays are identical in the sense that each one includes a memory of M continuous storage locations. In the preferred embodiment of this invention M=512. Each location includes a 2-state status bit and an identifier which corresponds to the ID number of a flow queue within the system. When a packet is placed into a flow queue the scheduler attaches the flow queue number to a location on one of the calendars and activates (turns on) the corresponding status bit. The described invention does the calendar searches described below, determines whether or not a winner is valid, and selects the Winning Calendar and Winning Location and returns this information to the Scheduler which detaches the queue ID from the location and deactivates (turn off) the status bit, if necessary. The information is used to move a frame from a flow queue to a port queue or other location within the device.
Control Finite State Machine (FSM) is the structure that controls the other structures within the timing subassembly of the present invention. The Control FSM performs initialization function and starts the different sequences that are required in order to search the calendar. A flowchart showing the logic used in the Control FSM will be given subsequently. In one embodiment of the present invention the FSM can initiate five types of searches or sequences. Once the search type is initiated the manipulation of structures within the system is carried out by tables which are discussed hereinafter. The five types of searches are: <ul id="ul0002" list-style="none"><li id="ul0002-0001" num="0061">1. Neither an attached nor a detached time based search (Search Type I)</li><li id="ul0002-0002" num="0062">1. Attached to a time based calendar (Search Type II)</li><li id="ul0002-0003" num="0063">2. Attached to a non-time based calendar (Search Type III)</li><li id="ul0002-0004" num="0064">3. Detached from a time based calendar (Search Type IV)</li><li id="ul0002-0005" num="0065">4. Detached from a non-time based calendar (Search Type V) <br /> The Control FSM <b>52</b> includes a plurality of input control lines. The input control lines include Add Item which indicates that an item is to be attached to a particular calendar location; Remove Item indicating an item is to be detached from a particular calendar location; Item Information which includes calendar number and calendar location; Last Item Being Detached indicating that the item is the last one from this calendar location (LIBD) to be detached; Current Time indicating current time; Begin Tick Cycle indicating the beginning of a tick period; Reset indicating the system should be reset; Start Initialization indicating the Control FSM should start initializing the system and Winner_Valid feedback indicating a winner has been found and is valid. Depending on the input of the named signals, the control FSM will generate signals to control the structure to which its output lines are connected. </li></ul>
The calendar search engine <b>54</b> performs the searches to be conducted and output Winner Valid and Winning Calendar Location on the ports labeled as Winner Valid and Winning Calendar Location. The input into calendar search engine <b>54</b> includes a current time port to which current time is applied; Calendar Status Bits port to which M bits from the Calendar Status Array are applied; Attach/Detach/Location port to which attach signal detach is applied; the Search Type port indicating the type of search to be conducted and Current Working Pointer port indicating the position from which the search should begin.
The Current Working Pointer (CP) array <b>56</b> is a memory having P consecutive locations with P equal to the number of calendars in the Calendar Status Array. In the disclosed embodiment P equals 52 labeled <b>0</b> through <b>51</b>. The width of each location in the CP array is log<sub>2</sub>(M), wherein log<sub>2</sub>(M) equals the bit width of a value that will point to each bit of an entry in the calendar status array. In the disclosed embodiment each calendar has 512 locations. Therefore, M equals 9 (2<sup>9</sup>=512). The Current Working Pointer Array structure <b>56</b> holds the CP identity of the 52 calendars and the location whereat the CP is positioned within a particular calendar. The addressing structure is identical to that of the Calendar Status Array <b>50</b>, in that locations <b>0</b>-<b>11</b> are for the time based calendars and locations <b>12</b>-<b>51</b> are for the 40 non-time based calendars. As will be described hereinafter during initialization, the Control FSM <b>52</b> writes the value of Current Time into the CP array for each of the time based calendars and an arbitrary choice of zero for each of the non-time based calendars. When it is time to perform a calendar search using the Calendar Search Engine <b>54</b> a read of the CP array structure is performed, and the array corresponding to the target calendar is presented to the CP calendar search engine via the Current Working Pointer port already described. The Selector <b>55</b> receives a signal from the Winner Valid Array and depending on the value of a bit position in the Winner Valid (WV) Array selects either the CP or CT. In particular, if the bit is a zero the Selector selects the CT input signal to apply to the Current Working Pointer port and if a logical 1 selects the CP signal line to apply to the Current Working Pointer port. The Winner Valid Array structure <b>58</b> includes a memory 1 bit wide and 52 locations deep. Each location indicates, via a logical bit, whether or not a Winner has been found by the search engine for each of the calendars. There is one bit for each of the calendars. During initialization, the control FSM writes a value of logical zeroes to all the locations. The bits for each are updated with the results of each of the searches.
The Winning Location Array <b>60</b> is of the same structure as the previously described Current Working Pointer Array. It is a memory containing 52 locations labeled <b>0</b>-<b>51</b> and each location being of width log<sub>2</sub>(M), used to identify a location within a calendar. This structure does not have to be initialized as it is qualified by the corresponding Winner Valid Array bit. If a winner is found by the Calendar Search Engine the Control FSM stores a Winning Calendar Location in the Winning Calendar Location Array concurrently with the winner_valid bit in the location corresponding to the appropriate calendar.
The Final Decision Selector Logic <b>62</b> includes combinatorial logic (details given below) which determine the true “Winner”. This is performed as per the Scheduler algorithm which is a priority search. The Control FSM accesses each location. The Winner Valid Array, beginning with location <b>0</b> and incremented through each location in the array. The first location that contains a non-zero bit will be the true winner, and the corresponding entry in the Winning Calendar Location Array will appear at the output along with Winner Valid and the Winning Calendar Address.
<figref idref="DRAWINGS">FIG. 6</figref> shows a flowchart of the logic in the Control FSM. As stated previously, the Control FSM initialized the structure shown in <figref idref="DRAWINGS">FIG. 5</figref> and initiates the search routines. The initialization routine is set forth below in the table shown in <figref idref="DRAWINGS">FIG. 9</figref> and the action taken relative to each structure after it has been initiated by the Control FSM to perform one of the searches set forth above is controlled by tables set forth in the figures below.
Still referring to <figref idref="DRAWINGS">FIG. 6</figref>, the flowchart begins in block <b>64</b>. Block <b>64</b>, which initializes last_non_time_cal_serviced to a value of zero (arbitrarily chosen) is entered. Last_non_time_cal_serviced is an input to the final decision selector. Next, decision block <b>66</b>, which asks if a begin_tick_cycle signal is active, is entered. If the answer to block <b>66</b> is no, decision block <b>66</b> is re-entered. If the answer to block <b>66</b> is yes, then block <b>68</b>, which initializes two counters, “cycle” and “cal_num” both to values of zero, is entered. The “cycle” counter is a count which increments once each system clock cycle, and determines when the final decision logic (<figref idref="DRAWINGS">FIG. 5</figref>) is to be activated. The “cal_num” counter is the count which keeps track of the time-based calendars. The time-based calendars have a cal_num range of zero to eleven. Decision block <b>70</b>, which asks if the attach input signal is active on this clock cycle, is entered. If the answer to block <b>70</b> is no, then decision block <b>74</b>, which asks if the detach input signal is active on this clock cycle, is entered. If the answer to block <b>70</b> is yes, then decision block <b>72</b>, which asks if the attach calendar is less than 12, is entered. If the answer to block <b>72</b> is yes, then block <b>78</b>, which indicates that (1) the search type is time-based, (2) the search type is of Type <b>2</b>, and (3) the value of the ct_sel (used to determine the value of ct that is sent to the calendar search engine) is equal to a value of attach_cal modulo <b>4</b>. Block <b>86</b>, which says to initiate the attach search sequence to the attach cal number, cal_address, and cal_location, is then entered. If the answer to block <b>72</b> is no, then block <b>80</b>, which indicates that (1) the search type is non-time-based, and (2) the search type is of Type<b>3</b>. Block <b>86</b>, which was described above, is then entered.
If the answer to decision block <b>74</b> (described above) is yes, then decision block <b>88</b>, which asks if the detach calendar is less than 12 (time-based) is entered. If the answer to decision block <b>88</b> is yes, then decision block <b>96</b>, which indicates that (1) the search type is time based, (2) the value of ct_sel is equal to a value of detach_cal modulo <b>4</b>, and (3) the search type is a Type <b>4</b> search. Block <b>102</b>, which says to (1) initiate the detach search sequence to the detach cal_num, cal_address, and cal_location using the search, and (2) used the LIBD (last item being detached) input to update the proper calendar status bit in the calendar status array, is then entered.
If the answer to decision block <b>88</b>, which was described above, is no, then block <b>92</b>, which indicates that (1) the search type is a non-time-based search, and (2) the search type is of Type <b>5</b>, is then entered. Next, block <b>98</b>, which indicates that a stored value called “stored_last_serviced” takes on the value of the detach_cal input. This stored value will be used when the final decision selector is activated. Block <b>102</b>, which was described earlier, is then entered. When exiting block <b>102</b>, block <b>90</b>, which will be described later, is then entered.
If the answer to decision block <b>74</b>, which was described earlier, is no, then block <b>76</b>, which asks if the value of cal_num is greater than 11, is then entered. If the answer to block <b>74</b> is no, then block <b>82</b>, which says to initiate a time-based search (Type <b>1</b>) of the calendar indicated by cal_num, is then entered. Next block <b>84</b>, which increments the value of cal_num by a value of one, is then entered. Decision block <b>90</b>, which asks if the cycle num is greater than <b>18</b> (used to determine if the final decision selector function is to be activated) is then entered. If the answer to block <b>76</b> is yes, then decision block <b>90</b>, described earlier, is entered.
If the answer to decision block <b>90</b> is no, then block <b>94</b>, which increments the value of cycle_num by a value of one, is then entered. Next, decision block <b>70</b>, which was described earlier, is then entered. If the answer to decision block <b>90</b> is yes, then block <b>100</b>, which (1) initiates the final decision selector, and, (2) initiates a read of the wining location array if a winner is found, is then entered. It should also be noted that the stored_last_serviced. Block <b>104</b>, which indicates that the search sequence is complete, and the winner valid and Winner Info outputs are updated to reflect the final outcome of the search. Block <b>105</b>, which says to give the value of last_non_time_cal_svcd the value of stored_last_serviced, is then entered. Then decision block <b>66</b>, which waits for the next begin_tick_cycle signal, is entered.
This flow chart is of a cyclical nature, so there is no ending point.
<figref idref="DRAWINGS">FIG. 7</figref> shows a flowchart of the logic used in the Final Decision Selector Logic <b>62</b>. The flowchart begins in block <b>106</b> and ends in block <b>136</b>. After leaving block <b>106</b>, block <b>108</b>, which initializes a cal_num counter to a value of zero, is then entered. Decision block <b>110</b>, which asks if the winner_valid_array_entry for cal_num is equal to a value of logic 1 (valid) is entered. If the answer to decision block <b>110</b> is yes, then block <b>116</b> is entered. Block <b>116</b> indicates that (1) the winner_valid output is true (logic 1), (2) the winning calendar output is the value of cal_num, (3) the value of cal_num is passed to the Control FSM to use as an index to the Winning Location Array, (4) the data from this read will be the winning location output. Block <b>136</b>, the ending block, is then entered.
If the answer to decision block <b>110</b> is no, then block <b>112</b>, which increments the value of cal_num by 1, is entered. Decision block <b>114</b>, which asks if cal_num is equal to 12 (on a non-time-based calendar) is then entered. If the answer to block <b>114</b> is no, then decision block <b>110</b>, described above, is entered. If the answer to block <b>114</b> is yes, then Decision block <b>118</b>, which asks if there is a non-time-based winner, is entered. There is a non-time-based winner if at least one of the winner valid bits for calendars <b>12</b> to <b>51</b> are valid (logic 1). If the answer to block <b>118</b> is yes, then block <b>120</b>, which sets a counter, called “non_time_cal_cnt” to a value of last_non_time_cal<sub>serviced+</sub>1. Last_non_time_cal_serviced comes from the Control FSM. Decision block <b>122</b>, which asks if the value of non_time_cal_cnt is equal to 52 is entered. If the answer to block <b>122</b> is yes, then block <b>124</b>, which sets the value of non_time_cal_cnt to a value of 12, is entered. Decision block <b>124</b> serves the purpose of performing the “circular” portion of the search, and wraps the counter back to the lowest non-time-based calendar index. Decision block <b>126</b>, which asks if the value of non_time_cal_cnt is equal to the value of last_non_time_cal_serviced, is then entered. If the answer to decision block <b>122</b> is no, then decision block <b>126</b> is entered. If the answer to block <b>126</b> is yes, then block <b>134</b>, which indicates to the control FSM that no winner was found, is then entered. If the answer to block <b>118</b>, which was described earlier, is no, then block <b>134</b> is entered. After leaving block <b>134</b>, then block <b>136</b>, the ending block is entered.
If the answer to decision block <b>126</b> is no, then decision block <b>130</b>, which asks if the winner_valid entry for location non_time_cal_cnt is logic 1, is entered. If the answer to block <b>130</b> is yes, then block <b>132</b>, which indicates that a (1) a winner was found and (2) cal_number is equal to non_time_cal_cnt, is entered. Next, block <b>116</b>, which was described earlier, is entered. If the answer to decision block <b>130</b> is no, then block <b>128</b>, which increments the non_time_cal_cnt by a value of 1 is then entered. Decision block <b>122</b>, which was described earlier, is then entered.
<figref idref="DRAWINGS">FIG. 8</figref> shows a block diagram for the Calendar Search Engine <b>54</b> (<figref idref="DRAWINGS">FIG. 5</figref>). The Calendar Search Engine <b>54</b> includes a time based search facility <b>138</b> and non-time based search facility <b>140</b>. The output from the time based search facility <b>138</b> and the non-time based search facility <b>140</b> are outputted and selected through output selector <b>144</b> which is activated by the search type signal delayed a predefined amount by Delay Circuit <b>142</b>. In the disclosed embodiment Delay Circuit <b>142</b> is set to a value of one clock cycle delay. Of course other clock cycle delays can be used depending on the designer's choice. The outputs from either the non-time based search algorithm <b>140</b> or time based search algorithm <b>138</b> are selected by the output selector <b>144</b> and output as Winner Valid and Winning Calendar Location information. The time based search algorithm <b>138</b> is substantially identical to the search algorithm described in U.S. patent application Ser. No. 09/966,304 filed Sep. 27, 2001 by Darryl Rumph identified above and incorporated herein by reference to complete the description of this feature, if necessary. Likewise, the non-time based search algorithm <b>140</b> is substantially identical to the search algorithm described in U.S. patent application Ser. No. 10/242,151, filed Sep. 12, 2002 by Darryl Rumph, identified above and fully incorporated herein by reference to complete the detailed description of this feature, if necessary.
The Current Time input is generated by current time decision logic <b>136</b>. For the current implementation, the current time input is a 20-bit value. Portions of this value are used as the value of current time for the time-based calendar searches. For this implementation, the 9-bit value of current time is chosen as a function of ct_sel: If ct_sel equals zero, then ct equals curr_time_in(8:0). If ct_sel equals one, then ct equals curr_time_in(12:4). If ct_sel equals two, then ct equals curr_time_in(16:8). Finally, if ct_sel equals 3, then ct equals curr_time_in(20:12).
The input control signals calendar status bit, current working pointer and search type signals have already been described and will not be repeated.
<figref idref="DRAWINGS">FIG. 9</figref> shows Table I of the initialization routine which is done by the FSM <b>52</b> (<figref idref="DRAWINGS">FIG. 5</figref>). The table shows that the actions taken are performed on each structure of the system shown in <figref idref="DRAWINGS">FIG. 5</figref>. The first column in the table is labeled clock cycle number and indicates the clock cycle value at which actions are taken on the structure in <figref idref="DRAWINGS">FIG. 5</figref>. Column <b>2</b> lists the Array Location. As discussed above there are 52 arrays labeled <b>0</b> through <b>51</b> which are shown in the array location column. The third column labeled Array Names indicate the arrays that are serviced during the named clock cycle. The fourth column labeled Access Type indicates what is being done to the structure. In this case the structure is written into. Finally, the fifth column labeled Write Data indicates the data which is written into the named structure. By way of example, the first row of the table indicates that at cycle <b>1</b> of the clock, array <b>0</b> is being serviced and the calendar status array, the cp array and the winner array are each written with all zeroes. In a similar manner each line in the table can be explained and further explanation of the respective lines will not be given.
<figref idref="DRAWINGS">FIG. 10</figref> shows Table II illustrating array accesses during a tick (20 clock cycles) TDM (Time Division Multiplex) with neither attach or detach actions. During the period where there are no calendar attaches nor detaches immediately following initialization, there are no winners at the output. Therefore, the winner data output from the structure will indicate that there is not a valid winner at the end of the 20<sup>th </sup>cycle and repeat until all items are attached to the calendar.
Still referring to <figref idref="DRAWINGS">FIG. 10</figref> the headings are labeled Clock Cycle Number, Array Location, Array Names, Access Type, Write Data, Search Engine Inputs and Search Engine Output. The interpretation of these headings based upon previous discussion are self-explanatory and further details will not be given. The action taken on each machine cycle are also indicated in the Table, are self-explanatory and will not be discussed further.
<figref idref="DRAWINGS">FIG. 11</figref> shows Table III illustrating type I search which has been identified and described above. The headings in the Table are labeled Clock Cycle Number, Array Location, Array Names, Access Type, Write Data, Search Engine Inputs, Search Engine Output and a Comments column. The headings in the first seven columns are self-explanatory and the information in the Comments column further explains activities taken relative to structures in <figref idref="DRAWINGS">FIG. 5</figref>. The entry in this table is also self-explanatory and further description will not be given. It should be noted that at the end of clock cycle <b>3</b> the output of the search is stored in the Winner Valid and Winning Location Arrays at address N.
<figref idref="DRAWINGS">FIG. 12</figref> shows Table IV illustrating type II search. For a type II search an attach has occurred to a time based calendar at a specific calendar location. The type II search of calendar N where N is the address (number) of a time based calendar is shown in Table IV. The headings in Table IV are the same as the headings in Table III and will not be repeated herein. At the end of three clock cycles the output of the type II search is stored in the Winner Valid and Winning Location arrays in address N. The array structure now contains the updates as a result of the attach.
<figref idref="DRAWINGS">FIG. 13</figref> shows Table V illustrating type III search. For a type III search an attach has occurred to a non-time based calendar at a specific calendar location. Table V shows the detail of the type III search of calendar N, where N is the address of a time based calendar and the attach is initiated on clock cycle <b>1</b>. At the end of clock cycle <b>3</b> the output of the type III search is stored in the Winner Valid and Winning Location Arrays in address N. The array structure now contains the update as a result of the attach.
<figref idref="DRAWINGS">FIG. 14</figref> shows Table VI illustrating type IV search. For a type IV search, a detach has occurred to a time based calendar at a specific calendar location. The “last item being detached” (LIBD) input indicates whether the calendar status bit for the search is to be a logical 1 or logical 0. An LIBD equal to <b>1</b> means the status bit should be logical 0 for the search. LIBD equal to 0 means the status bit should be logical 1 for the search. Table VI shows the details of the type IV search of calendar N where N is the address of the time based calendar and the attach is initiated on clock cycle <b>1</b>. At the end of clock cycle <b>4</b> the output of the type <b>4</b> search is stored in the Winner Valid and Winning Location Arrays in Address N. The array structures now contain the update as a result of the detach.
<figref idref="DRAWINGS">FIG. 15</figref> shows Table VII illustrating type V search. For a type V search, a detach has occurred to a non-time based calendar at a specific calendar location. As for a type IV search discussed above the “last item being detached” (LIBD) input indicates whether the calendar status bit for the search is to be a logical 1 or a logical 0. LIBD equal to 1 means a status bit should be logical 0 for the search. LIBD equal to 0 means the status bit should be logical 1 for the search. <figref idref="DRAWINGS">FIG. 15</figref> shows the details of the type V search of calendar N, where N is the address of a time based calendar and the attached is initiated on clock cycle <b>1</b>. At the end of clock cycle <b>4</b> the output of the type V search is stored in the Winner Valid and Winning Location Array in address M. The array structure now contains the updates as a result of the detach.
It should be noted that these actions which initiate accesses to the arrays are being pipelined, and care must be taken such that there is not a “collision” for access of the same resource on the same clock cycle. This is true for both read accesses and write accesses. Also, because of hardware limitations, it generally takes at one clock cycle to access an array structure, so there is a requirement that there must be at least one system clock cycle between attaches and detaches.
Because of the finite amount of time required to access the winner array structure during the final decision process, there can be neither attaches nor detaches after cycle <b>18</b> of a tick period.
It is to be understood that the above described embodiment is merely illustrative of the application of principles of the invention and that other arrangements or embodiments may be devised by someone skilled in the art without departing from the spirit and scope of the invention.
Contents5
19 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| CN104919769A | Cited by | China | Search report |
| US2010076804A1 | Cited by | United States of America | Pre-grant |
| US2014321475A1 | Cited by | United States of America | Pre-grant |
| US2013275173A1 | Cited by | United States of America | Pre-grant |
| US9634953B2 | Cited by | United States of America | Search report |
| US2002150047A1 | Cites | United States of America | Applicant |
| US2005207339A1 | Cites | United States of America | Search report |
| US5533020A | Cites | United States of America | Applicant |
| US5943652A | Cites | United States of America | Applicant |
| US6028843A | Cites | United States of America | Applicant |
| US6032207A | Cites | United States of America | Search report |
| US6396843B1 | Cites | United States of America | Search report |
| US6560238B1 | Cites | United States of America | Search report |
| US6810043B1 | Cites | United States of America | Applicant |
| US7130272B1 | Cites | United States of America | Search report |
| US7177314B2 | Cites | United States of America | Applicant |
| USRE39103E | Cites | United States of America | Search report |
| US20020150047A1 | Cites | United States of America | Third party observation |
| US20050207339A1 | Cites | United States of America | Search report |
4 members in 1 office
Priority claims10
| Document | Office | Kind | Date |
|---|---|---|---|
| 32550101 | United States of America | P | |
| 32550101 | United States of America | P | |
| 25586102 | United States of America | A | |
| 25586102 | United States of America | A | |
| 76928107 | United States of America | A | |
| 10255861 | – | – | – |
| 60325501 | – | – | – |
| US20010325501P | – | – | – |
| US20020255861 | – | – | – |
| US20070769281 | – | – | – |
Members4
| Document | Office | Kind | |
|---|---|---|---|
| US2003058868A1 | United States of America | A1 | |
| US7283530B2 | United States of America | B2 | |
| US2008013543A1 | United States of America | A1 | |
| US7733873B2This record | United States of America | B2 |
44 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Expire PatentEXP. | EXP. | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Correspondence Address ChangeC.AD | C.AD | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Paralegal or electronic terminal disclaimer approvedP574 | P574 | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Examiner Interview Summary (PTOL - 413)MEXIN | MEXIN | |
| Terminal Disclaimer FiledDIST | DIST | |
| Response after Non-Final ActionA... | A... | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Transfer Inquiry to GAUTI1050 | TI1050 | |
| Transfer Inquiry to GAUTI1050 | TI1050 | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Email NotificationEML_NTR | EML_NTR | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Sent to Classification ContractorPGPC | PGPC | |
| Application Is Now CompleteCOMP | COMP | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Initial Exam Team nnIEXX | IEXX |
6 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Lapse for failure to pay maintenance feesLapsedLAPS | LAPS | |
| Maintenance fee reminder mailedREMI | REMI | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP |
Numbers
- Publication
- 07733873
- Publication, DOCDB
- 7733873
- Publication, EPODOC
- US7733873
- Application
- 11769281
- Application, DOCDB
- 76928107
- Application, EPODOC
- US20070769281
Titles
- English
- Coordination of calendar searches in a network scheduler
Patent term adjustment
- A delay
- +372 daysthe office missed an examination deadline
- Net adjustment
- 372 days
Classification
- CPC, 1
- G06Q10/109
- IPC, 2
- H04L12 56
- G06Q10 10
- USPC, 4
- 370395400
- 370235000
- 370391000
- 370412000