This description relates to computer networking, and more particularly to scheduling transmission of network cells.
In ATM networking, cells are transmitted over virtual connections. Virtual connections represent stateful communication setups such as an ATM virtual circuit or an Internet TCP connection. At each end of the network virtual connection is a software application that can send and receive messages. The messages are carried across the network as packets or frames that are further subdivided into 48 byte ATM cells. The interface in and out of the forwarding device is either 48 byte ATM cells or 64 byte frame segments. Each virtual connection has a quality of service or rate specification. ATM Forum Traffic Management Specification 4.1 specifies the types of rates, e.g. constant bit rate (CBR), variable bit rate (VBR), unspecified bit rate (UBR), etc. Unspecified bit rate can have a priority associated with the virtual connection.
Network devices such as routers, switches, and traffic shapers schedule the transmission of cells to a network. One form of schedule for transmission is the calendar schedule, where a slot of the schedule represents a period of time for possible transmission of one or more cells. A virtual connection is “scheduled” according to a calendar schedule if a slot in the calendar schedule is reserved for the virtual connection. A transmission process performs the transmissions of the network device. The transmission process uses the calendar schedule as a guide for when to offer transmission opportunities to scheduled virtual connections.
Groups of virtual connections may be scheduled for transmission to one region of a network, going through a network interface such as a port. A large traffic shaper may handle many schedules. For example, each schedule may be for a different port or network domain.
Like reference symbols in the various drawings indicate like elements.
In general, for a virtual connection associated with a schedule, a reservation system includes reservation procedures that find an available slot within the schedule. The reservation procedures find the available slot subject to timing requirements imposed by the rate of the virtual connection, when such requirements exists. The reservation system also includes a hierarchical reservation vector whose structure supports efficient lookups of first available slots by the reservation procedures. The reservation procedures are encoded as computing instructions that are executable by one or more automated processors.
Referring to
Reservation system 20 uses a schedule repository 26 that provides information on schedules 28, including the timing and boundaries of each such schedule 28.
Reservation system 20 also uses a virtual connection (or “VC”) repository 34. VC repository 34 provides information on virtual connections 36 whose transmission opportunities are governed by schedules 28 in schedule repository 26. VC repository 34 provides information including the rate and affiliated schedule 28 for each virtual connection 36.
Broadly, reservation system 20 manages transmission opportunities for virtual connections 36 according to multiple schedules 28. A transmission process 38 uses reservation system 20 to determine when to offer a transmission opportunity to a given virtual connection 36.
Reservation system 20, schedule repository 26, VC repository 34, and transmission process 38 are component software processes of routing/shaping software 30. In general, routing/shaping software 30 includes software processes that control the operation of a router/traffic shaper 40 (shown in
The inner workings of transmission process 38 are beyond the scope of the description. Transmission process 38 is a software process that controls transmissions of network traffic by router/traffic shaper (to be discussed below).
Referring to
In the present embodiment, router/traffic shaper 40 is a networking device conforming to architecture standards for the Intel IXP series of network processors, manufactured by Intel Corporation, Santa Clara, Calif. In this case, processor 42c is an Intel IXP 1200, and registers 48 each hold 32 bits.
Network interface 42d includes physical ports 44a and 44b, which carry communication between network interface 42d and a network 46. Network interface 42d provides logical access to physical ports 44. Transmission process 38 controls transmissions of network traffic by router/traffic shaper 40 onto network 46.
In the Intel IXP1200 architecture, bit addressing is conventional, i.e., the least significant bit of a byte is rightmost. Byte addressing is little-endian, i.e., less significant bytes have lower addresses.
Referring now to
Schedule space 50 includes one or more schedules 28a, 28b, 28c. There can be many hundreds of schedules 28a, 28b, 28c in schedule space 50. In general, a schedule 28a, 28b, 28c describes when to transmit cells to a network. The transmissions described by a schedule 28a, 28b, 28c can have local or remote origins, relative to router/traffic shaper (Item 40,
Each schedule 28a, 28b, 28c is encoded in schedule space 50 as a contiguous block of slots 52 in schedule space 50. Schedules 28a, 28b, 28c therefore represents a block of time that is divided into slots 52. Each schedule 28a, 28b, 28c has a schedule start 56 and a schedule end 58 which correspond to its first and last slots 52, respectively.
Referring now to
Periodic repetition maps the transmission cycle 51 forward in time. Repetition creates a correspondence between a finite amount of time (corresponding to a transmission cycle) and an arbitrarily large amount of time (corresponding to the future transmission choices of transmission process; item 38,
Furthermore, transmission cycle repeats with a regular period. The timing of events governed by schedule space (Item 50,
Referring now to
A virtual connection 36 includes a type 36a and rate information 36b. Type 36a can adopt values consistent with ATM Forum Traffic Management Specification 4.1. For instance, acceptable values for type 36a include constant bit rate (CBR), variable bit rate (VBR), and unspecified bit rate (UBR).
In general, rate information 36b describes traffic parameters for virtual connection 36, such as for quality-of-service contracts or bandwidth allocations. Rate information 36b includes fields for PCR (“peak cell rate”) 62a and MBS (“maximum burst size”) 62b. PCR 62a describes a maximum data rate at which virtual connection 36 is specified to operate, measured as an average over time. MBS 62b describes the maximum number of sequential cells that can be sent at PCR 62a on virtual connection 36 instantaneously (or within a small window of instantaneously, relative to the measurement of PCR 62a).
Some types of rate information 36b depend on the value of type 36a. For example, virtual connections 36 with a VBR value for type 36a include a field for sustained cell rate (SCR) 62c. SCR 62c describes a minimum data rate at which virtual connection 36 is specified to operate, measured as an average over time. Alternatively, a virtual connection 36 with a non-VBR value for type 36a can include a minimum cell rate (MCR) 62d. A third possibility is a UBR virtual connection 36 that has a zero-valued MCR 62d, indicating that there is no minimum rate associated with them.
VC schedule map 60 associates virtual connections 36 with schedules 28.
Broadly speaking, a hierarchical reservation vector (to be discussed below) is a data structure that tracks whether slots (Item 52,
Referring now to
First level 22a is a bit vector organized to correspond to schedule space 50. First level 22a includes first level slots 72, each of which is encoded as a bit that uniquely corresponds to a schedule space slot 52 in schedule space 50. First level 22a has as many first level slots 72 as there are schedule space slots 52 in schedule space 50—in this case, 64K. Time direction 22d is an ordering of first level slots 72 that corresponds to timing sequence (Item 54,
In the present embodiment, time direction 22d simply uses the ordering given by bit addressing in main memory (Item 42a,
Second level 22b is a bit vector organized to correspond to first level 22a according to a scaling factor 78. The scaling factor 78 is the number of bits in first level 22a that are represented (or “shadowed”) by a single bit in second level 22b. The scaling factor 78 is constant throughout hierarchical reservation vector 22. In the present embodiment, the scaling factor 78 has the value thirty-two. In
Scaling factor 78 determines the size of second level 22b relative to the size of first level 22a. Because first level 22a has 64K members, second level 22b has 2K (i.e., 2048) members.
Third level 22c relates to second level 22b in much the same way that second level 22b relates to first level 22a. Each bit in third level 22c corresponds to a full word in second level 22b, as determined by scaling factor 78. Because first level 22a has 2048 members, therefore, second level 22b has 64 members. The first half of these is shadowed by left longword 70a, while the second half is shadowed by right longword 70b.
Reservations are represented in hierarchical reservation vector 22 as follows. A bit off in first level 22a (i.e., a value of a slot 72) indicates the corresponding slot 52 is reserved. A bit off in second level 22b indicates all of the bits it shadows are off in the next lower level, i.e., all of the corresponding first level slots 72 are reserved. Therefore, a bit on at second level 22b indicates at least one of its shadowed first level slots 72 is available. Similarly, a bit off at third level 22c indicates all of the bits it shadows are off in lower levels, i.e., 1024 first level slots 72 are reserved. A bit on at third level 22c indicates at least one of the 1024 first level slots 72 it represents is available.
Referring now to
The bits of vector address 80 are numbered sequentially from least significant to most significant. Thus, the least significant bit of vector address 80 is numbered zero, and the most significant bit is numbered fifteen.
Vector address 80 is organized into portions that yield offsets 82a, 82b, 82c into levels of hierarchical reservation vector 22, when the portions are evaluated as unsigned binary integers. For example, treated as a 16-bit unsigned binary integer, the entire vector address 80 is an offset into the 64K bits of first level 22a, shown as first level offset 80a. Conversely, every first level slot 72 has a unique value, representing its offset position in first level 22a, that can be represented as a vector address 80.
Vector address 80 includes a second-level sub-address 80b, stored in bits five through fifteen of vector address 80. Note that the scaling factor (Item 78,
Vector address 80 includes a third-level sub-address group 84, stored in the six bits numbered ten through fifteen of vector address 80. Third-level sub-address group 84 is divided into a branch sub-address 80d and a third-level sub-address 80c. Note that the six bits of third-level sub-address group 84 use several of the same principles of unsigned binary integers that define the value of second-level sub-address 80b. A given 6-bit prefix of a 16-bit value is held in common by a group of 1024 distinct values, which is a size that corresponds exactly to the shadowing of 1024 first level slots 72 as already described. Furthermore, the 6-bit prefix also corresponds to a shadowed group when considered only as the prefix of the 11-bit second-level sub-address 80b. That is, a given 6-bit prefix is held in common by a group of 32 distinct 11-bit values. Thus, third-level sub-address group 84 could be used as an offset into third level 22c, but this is not how vector address 80 is structured in the present embodiment. Instead, third level 22c is divided into two 32-bit arrays, namely, left longword 70a and right longword 70b. Bit fifteen of vector address 80 is used to specify the branch to use, while bits ten through fourteen are used as an offset into the particular array. An advantage of this branched approach is that each of left longword 70a and right longword 70b can be placed entirely in register 48 of the processor (Item 42c,
Referring now to
For example, range 91′ includes a could-send reference 91a′ and a must-send reference 91b′. Together, could-send reference 91a′ and a must-send reference 91b′ specify one or more contiguous blocks of first level slots (Item 72,
Could-send reference 91a′ specifies a could-sent slot 74a′, while must-send reference 91b specifies a must-send slot 74b′. The relative position of could-sent slot 74a′ and must-send slot 74b′ in schedule image 74′ determines at least two possible values for a range topology 91c′. When could-sent slot 74a′ occurs before must-send slot 74b′ with regards to time direction (Item 22d,
Alternatively, for example, when could-sent slot 74a″ occurs after must-send slot 74b″, topology 91c″ has a wrapped range 102.
In schedule image 74′, contiguous range 100 is a contiguous block of slots, which begins with could-send slot 74a′ and ends with must-send slot 74b′.
For schedule image 74″, wrapped range 102 includes a high component 102b and a low component 102a, each of which is a contiguous block of slots in schedule image 74″. Low component 102a begins with could-send slot 74a″ and ends with the last slot of schedule image 74″. Low component 102a represents an earlier time than high component 102b, due to the wrap. High component 102b begins with the first slot of schedule image 74″ and ends with must-send slot 74b″. Conceptually, wrapped range 102 begins with could-send slot 74a″, continues uninterrupted to the last slot of schedule image 74″, wraps to the first slot of schedule image 74″, and ends with must-send slot 74b″. This conceptual wrapping of wrapped range 102 reflects the cyclical structure of schedules (Item 28,
Reservation system 20 includes reservation procedures 24 (to be discussed below). Broadly speaking, reservation procedures maintain and inspect schedule information stored in hierarchical reservation vector (Item 22,
Referring now to
Broadly, shape procedure 90 determines a range (e.g., range 91″,
Referring now to
Shape procedure 90 examines the rate of virtual connection to determine a maximum permissible current transmission speed, then expresses this speed as a could-send offset (i.e., process 90b). The could-send offset is a count of first-level slots. Maximum permissible current transmission speed is calculated based on the current state of virtual connection and its traffic parameters. Generally, the maximum permissible current transmission speed is the lesser of an overall maximum, given by PCR, and a situational maximum based on burst size, given by MBS.
Shape procedure 90 tests whether the could-send offset added to the base slot index yields a slot before the end of the current schedule (i.e., process 90c). If the test is positive, shape procedure 90 designates that slot as the could-send slot (i.e., process 90d). If the test is negative, shape procedure wraps the offset to the corresponding slot within schedule (i.e., process 90e), then designates the wrapped slot as the could-send slot (i.e., process 90d).
Shape procedure 90 also examines the rate of virtual connection to determine a minimum permissible current transmission speed, expressing this speed as a must-send offset (i.e., process 90f). The must-send offset is a count of first-level slots. Minimum permissible current transmission speed is calculated based on the type and traffic parameters of virtual connection. For instance, for a VBR virtual connection, the calculation uses SCR (Item 62c,
Shape procedure 90 then tests whether the must-send offset added to the base slot index yields a slot before the end of the current schedule (i.e., process 90g). If the test is positive, shape procedure 90 designates that slot as the must-send slot (i.e., process 90h). If the test is negative, shape procedure 90 wraps the offset to the corresponding slot within schedule and designates the wrapped slot as the must-send slot (i.e., process 90i).
Broadly speaking, unless schedule next slot procedure encounters a failure condition, as will be explained, schedule next slot procedure starts at the highest level of hierarchical reservation vector and repeatedly applies circular priority find procedure at each successive level, until reaching first level and finding a first level slot. The slot, if found, is the first available slot within a given range.
Referring now to
Schedule next slot procedure 92 then invokes recursive slot subroutine (i.e., procedure 92b). Generally, starting from an arbitrary location within a branch, recursive slot subroutine either finds a first available slot subject to a range and a schedule image, or returns a failure result (e.g., if no such slot is available). Schedule next slot procedure 92 provides recursive slot subroutine with the range that schedule next slot procedure received as inputs, and also provides the top level of the branch and a zero offset into that branch.
Schedule next slot procedure 92 next tests the output of recursive slot subroutine (i.e., procedure 92c). If the recursive slot subroutine returns a slot, schedule next slot procedure 92 returns that slot as a result value (i.e., procedure 92d). Otherwise, schedule next slot procedure 92 tests whether the given range spans a subsequent branch (i.e., procedure 92e). If such a spanning exists, schedule next slot procedure 92 loops back to select the next branch, according to the ordering given by time direction and the range topology (i.e., procedure 92a). Thus, schedule next slot procedure 92 continues evaluating branches according to the ordering given by time direction until either the entirety of range has been searched, or an available slot has been found. For a range topology having a contiguous range, the ordering of branches is that given by time direction over contiguous range. For a range topology having a wrapped range however, the ordering of branches has two parts: that given by time direction over high component, followed by the same ordering over low component.
If the test of procedure is negative, schedule next slot procedure 92 returns a result indicating failure (i.e., procedure 92f).
Referring now to
Recursive slot subroutine 93 invokes a primary instance of circular priority find (Item 94,
Recursive slot subroutine 93 next invokes a secondary instance of circular priority find on the portion of the longword, if any, that follows the bit position returned by the primary instance of circular priority find (i.e., process 93b). The bit returned by the secondary instance of circular priority find, if any, represents a next available allocation opportunity, subsequent to the first. This discussion will refer to that bit as the “secondary bit”. Process 93b also sets a “fallback flag” to a true/false value, initially indicating whether the secondary bit is available as a fallback alternative to the primary bit.
Recursive slot subroutine 93 tests the result of the primary instance of circular priority find (i.e., process 93c). If the primary bit was successfully found, recursive slot subroutine 93 uses the primary bit as a working bit (i.e., process 93d). The working bit is a candidate for the bit that recursive slot subroutine 93 will return. Otherwise, if a primary bit was not found, recursive slot subroutine 93 tests the fallback flag (i.e., process 93e). If the fallback flag is true, recursive slot subroutine 93 uses the secondary bit as the working bit and sets the fallback flag value to false (i.e., process 93f).
If the fallback flag is false, recursive slot subroutine 93 returns a failure result (i.e., process 93g).
Following a selection of the working bit, recursive slot subroutine 93 tests whether the current level of hierarchical reservation vector is the first level (i.e., process 93h). If the current level is the first level, recursive slot subroutine returns the working bit as a result value representing a slot (i.e., process 93k). Otherwise, if the current level is not the first level, an opportunity exists to recurse from the current level to a next level, toward first level, such that the next level includes a longword shadowed by the working bit. If such a next level exists, recursive slot subroutine 93 begins processing the next level at the longword shadowed by the working bit, using the same range as was passed to recursive slot subroutine 93 (i.e., process 93i). For example, a current instance of recursive slot subroutine 93 can pass control to a dependent instance of recursive slot subroutine 93, where the dependent instance executes to completion before returning control to the current instance. In general, unless failure conditions occur, this pattern of recursive control-passing repeats until recursive slot subroutine 93 processes a longword at first level. The number of repetitions is therefore bounded by the number of levels between first level and the level passed to the top-level instance of recursive slot subroutine 93.
Process 93i can return a problem result, comparable to that returned by recursive slot subroutine 93 itself. In the absence of a problem result, however, process 93i continues a recursive chain that eventually reaches first level. Thus, if process 93i returns a bit, that bit represents a first-level slot.
Recursive slot subroutine 93 tests the result of process 93i via process 93m. If a problem result is found, recursive slot subroutine 93 goes to process 93e to test the fallback flag and proceeds from there as already described. Otherwise, if no problem result is found, recursive slot subroutine 93 uses the bit returned by process 93i as the working bit (i.e., process 93n). Recursive slot subroutine 93 then returns the working bit as a result value representing a slot (i.e., process 93k).
Circular priority find procedure (Item 94,
Referring now to
Next, circular priority find procedure 94 applies contiguous mask to the longword and finds the first set bit in the result (i.e., process 94c). In the present embodiment, circular priority find procedure 94 can take advantage of a hardware-supported processor operation of processor to find the first set bit in a longword. Circular priority find procedure 94 returns the resulting bit or indicates that no such bit exists. This can happen, for instance, if all bits in the intersection of the range 91 and the given longword represent slots that are already allocated.
When the range 91 is not contiguous, circular priority find procedure 94 creates a low mask and a high mask (i.e., process 94d). In this case, range topology has a wrapped range. Low mask is a mask that selects bits of the input longword that correspond to the low component of wrapped range. Similarly, high mask is a mask that selects bits of the input longword that correspond to the high component of wrapped range.
Next, circular priority find procedure 94 applies low mask to the input longword and finds the first set bit in the result (i.e., process 94e). Circular priority find procedure 94 then determines whether process 94e found a set bit (i.e., process 94f). If so, circular priority find procedure 94 returns the resulting bit. Otherwise, circular priority find procedure 94 applies high mask to the input longword and finds the first set bit in that result (i.e., process 94g). Circular priority find procedure 94 returns the resulting bit or indicates that no such bit exists.
One advantage of reservation system applies to lookups of the first available time slot in a contiguous range of time slots—for instance, by the schedule next slot procedure. The hierarchy encoded in hierarchical reservation vector allows lookups to take advantage of register-based processor operations. This reduces the number of memory accesses needed to accomplish the lookup, relative to approaches that use processor operations that cannot be accomplished within the registers.
For example, a three-level hierarchical reservation vector keeps reservations for multiple calendars over 64K time slots. A processor provides 32-bit memory accesses and a 32-bit circular find first bit set. The hierarchical reservation vector keeps its top level (level 3) in two local registers as 64-bits. The reservation system can perform a search over the 64K time slots in four operations. One memory reference and a circular find first bit set reduces the candidates to 2048 time slots, while a second memory reference and another circular find first bit set to reduce the candidates to one.
In another advantage, the reservation system also supports circular lookups, i.e. lookups within a schedule where the range of possible values wraps around the end of the schedule and continues from the beginning of the schedule.
Still another advantage of the hierarchical reservation vector is a relatively small footprint in memory for its representation of the schedule space.
A number of embodiments have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the description.
In the described embodiment, schedule repository and VC repository are component software processes of routing/shaping software. In other embodiments, schedule repository or VC repository (or both) could be applications or services external to routing/shaping software. Indeed, schedule repository or VC repository (or both) could be external to router/traffic shaper—for instance, they could remote software in communication with routing/shaping software via network. In other embodiments, slots can be reserved to entities other than virtual connections.
The details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims. Accordingly, other embodiments are within the scope of the following claims.
Number | Name | Date | Kind |
---|---|---|---|
3373408 | Ling | Mar 1968 | A |
3478322 | Evans | Nov 1969 | A |
3623001 | Kleist et al. | Nov 1971 | A |
3736566 | Anderson et al. | May 1973 | A |
3792441 | Wymore et al. | Feb 1974 | A |
3889243 | Drimak | Jun 1975 | A |
3940745 | Sajeva | Feb 1976 | A |
4016548 | Law et al. | Apr 1977 | A |
4032899 | Jenny et al. | Jun 1977 | A |
4075691 | Davis et al. | Feb 1978 | A |
4130890 | Adam | Dec 1978 | A |
4400770 | Chan et al. | Aug 1983 | A |
4514807 | Nogi | Apr 1985 | A |
4523272 | Fukunaga et al. | Jun 1985 | A |
4658351 | Teng | Apr 1987 | A |
4709347 | Kirk | Nov 1987 | A |
4745544 | Renner et al. | May 1988 | A |
4788640 | Hansen | Nov 1988 | A |
4831358 | Ferrio et al. | May 1989 | A |
4858108 | Ogawa et al. | Aug 1989 | A |
4866664 | Burkhardt, Jr. et al. | Sep 1989 | A |
4890218 | Bram | Dec 1989 | A |
4890222 | Kirk | Dec 1989 | A |
4991112 | Callemyn | Feb 1991 | A |
5115507 | Callemyn | May 1992 | A |
5140685 | Sipple et al. | Aug 1992 | A |
5142683 | Burkhardt, Jr. et al. | Aug 1992 | A |
5155831 | Emma et al. | Oct 1992 | A |
5155854 | Flynn et al. | Oct 1992 | A |
5168555 | Byers et al. | Dec 1992 | A |
5173897 | Schrodi et al. | Dec 1992 | A |
5251205 | Callon et al. | Oct 1993 | A |
5255239 | Taborn et al. | Oct 1993 | A |
5263169 | Genusov et al. | Nov 1993 | A |
5313454 | Bustini et al. | May 1994 | A |
5347648 | Stamm et al. | Sep 1994 | A |
5367678 | Lee et al. | Nov 1994 | A |
5379295 | Yonehara | Jan 1995 | A |
5379432 | Orton et al. | Jan 1995 | A |
5390329 | Gaertner et al. | Feb 1995 | A |
5392391 | Caulk, Jr. et al. | Feb 1995 | A |
5392411 | Ozaki | Feb 1995 | A |
5392412 | McKenna | Feb 1995 | A |
5404464 | Bennett | Apr 1995 | A |
5404469 | Chung et al. | Apr 1995 | A |
5404482 | Stamm et al. | Apr 1995 | A |
5432918 | Stamm | Jul 1995 | A |
5448702 | Garcia, Jr. et al. | Sep 1995 | A |
5450351 | Heddes | Sep 1995 | A |
5452437 | Richey et al. | Sep 1995 | A |
5452452 | Gaetner et al. | Sep 1995 | A |
5459842 | Begun et al. | Oct 1995 | A |
5459843 | Davis et al. | Oct 1995 | A |
5463625 | Yasrebi | Oct 1995 | A |
5467452 | Blum et al. | Nov 1995 | A |
5475856 | Kogge | Dec 1995 | A |
5485455 | Dobbins et al. | Jan 1996 | A |
5515296 | Agarwal | May 1996 | A |
5517648 | Bertone et al. | May 1996 | A |
5539737 | Lo et al. | Jul 1996 | A |
5542070 | LeBlanc et al. | Jul 1996 | A |
5542088 | Jennings, Jr. et al. | Jul 1996 | A |
5544236 | Andruska et al. | Aug 1996 | A |
5550816 | Hardwick et al. | Aug 1996 | A |
5557766 | Takiguchi et al. | Sep 1996 | A |
5568476 | Sherer et al. | Oct 1996 | A |
5568617 | Kametani | Oct 1996 | A |
5574922 | James | Nov 1996 | A |
5581729 | Nistala et al. | Dec 1996 | A |
5592622 | Isfeld et al. | Jan 1997 | A |
5613071 | Rankin et al. | Mar 1997 | A |
5613136 | Casavant et al. | Mar 1997 | A |
5617327 | Duncan | Apr 1997 | A |
5623489 | Cotton et al. | Apr 1997 | A |
5627829 | Gleeson et al. | May 1997 | A |
5630074 | Beltran | May 1997 | A |
5630130 | Perotto et al. | May 1997 | A |
5633865 | Short | May 1997 | A |
5644623 | Gulledge | Jul 1997 | A |
5649110 | Ben-Nun et al. | Jul 1997 | A |
5649157 | Williams | Jul 1997 | A |
5651002 | Van Seters et al. | Jul 1997 | A |
5659687 | Kim et al. | Aug 1997 | A |
5680641 | Sidman | Oct 1997 | A |
5689566 | Nguyen | Nov 1997 | A |
5692126 | Templeton et al. | Nov 1997 | A |
5699537 | Sharangpani et al. | Dec 1997 | A |
5701434 | Nakagawa | Dec 1997 | A |
5717898 | Kagan et al. | Feb 1998 | A |
5721870 | Matsumoto | Feb 1998 | A |
5724574 | Stratigos et al. | Mar 1998 | A |
5740402 | Bratt et al. | Apr 1998 | A |
5742587 | Zornig et al. | Apr 1998 | A |
5742782 | Ito et al. | Apr 1998 | A |
5742822 | Motomura | Apr 1998 | A |
5745913 | Pattin et al. | Apr 1998 | A |
5751987 | Mahant-Shetti et al. | May 1998 | A |
5754764 | Davis et al. | May 1998 | A |
5761507 | Govett | Jun 1998 | A |
5761522 | Hisanaga et al. | Jun 1998 | A |
5764915 | Heimsoth et al. | Jun 1998 | A |
5768528 | Stumm | Jun 1998 | A |
5781551 | Born | Jul 1998 | A |
5781774 | Krick | Jul 1998 | A |
5784649 | Begur et al. | Jul 1998 | A |
5784712 | Byers et al. | Jul 1998 | A |
5796413 | Shipp et al. | Aug 1998 | A |
5797043 | Lewis et al. | Aug 1998 | A |
5805816 | Picazo, Jr. et al. | Sep 1998 | A |
5809235 | Sharma et al. | Sep 1998 | A |
5809237 | Watts et al. | Sep 1998 | A |
5809530 | Samra et al. | Sep 1998 | A |
5812868 | Moyer et al. | Sep 1998 | A |
5828746 | Ardon | Oct 1998 | A |
5828863 | Barrett et al. | Oct 1998 | A |
5828881 | Wang | Oct 1998 | A |
5828901 | O'Toole et al. | Oct 1998 | A |
5832215 | Kato et al. | Nov 1998 | A |
5835755 | Stellwagen, Jr. | Nov 1998 | A |
5838988 | Panwar et al. | Nov 1998 | A |
5850399 | Ganmukhi et al. | Dec 1998 | A |
5850530 | Chen et al. | Dec 1998 | A |
5854922 | Gravenstein et al. | Dec 1998 | A |
5860138 | Engebretsen et al. | Jan 1999 | A |
5860158 | Pai et al. | Jan 1999 | A |
5886992 | Raatikainen et al. | Mar 1999 | A |
5887134 | Ebrahim | Mar 1999 | A |
5890208 | Kwon | Mar 1999 | A |
5892979 | Shiraki et al. | Apr 1999 | A |
5898686 | Virgile | Apr 1999 | A |
5898701 | Johnson | Apr 1999 | A |
5905876 | Pawlowski et al. | May 1999 | A |
5905889 | Wilhelm, Jr. | May 1999 | A |
5915123 | Mirsky et al. | Jun 1999 | A |
5918235 | Kirshenbaum et al. | Jun 1999 | A |
5933627 | Parady | Aug 1999 | A |
5937187 | Kosche et al. | Aug 1999 | A |
5938736 | Muller et al. | Aug 1999 | A |
5940612 | Brady et al. | Aug 1999 | A |
5940866 | Chisholm et al. | Aug 1999 | A |
5946487 | Dangelo | Aug 1999 | A |
5948081 | Foster | Sep 1999 | A |
5953336 | Moore et al. | Sep 1999 | A |
5958031 | Kim | Sep 1999 | A |
5961628 | Nguyen et al. | Oct 1999 | A |
5968169 | Pickett | Oct 1999 | A |
5970013 | Fischer et al. | Oct 1999 | A |
5974518 | Nogradi | Oct 1999 | A |
5978838 | Mohamed et al. | Nov 1999 | A |
5983274 | Hyder et al. | Nov 1999 | A |
5995513 | Harrand et al. | Nov 1999 | A |
6012151 | Mano | Jan 2000 | A |
6014729 | Lannan et al. | Jan 2000 | A |
6023742 | Ebeling et al. | Feb 2000 | A |
6032190 | Bremer et al. | Feb 2000 | A |
6032218 | Lewin et al. | Feb 2000 | A |
6047002 | Hartmann et al. | Apr 2000 | A |
6049867 | Eickemeyer et al. | Apr 2000 | A |
6058168 | Braband | May 2000 | A |
6061710 | Eickemeyer et al. | May 2000 | A |
6067300 | Baumert et al. | May 2000 | A |
6067585 | Hoang | May 2000 | A |
6070231 | Ottinger | May 2000 | A |
6072781 | Feeney et al. | Jun 2000 | A |
6073215 | Snyder | Jun 2000 | A |
6079008 | Clery, III | Jun 2000 | A |
6085215 | Ramakrishnan et al. | Jul 2000 | A |
6085248 | Sambamurthy et al. | Jul 2000 | A |
6085294 | Van Doren et al. | Jul 2000 | A |
6092127 | Tausheck | Jul 2000 | A |
6092158 | Harriman et al. | Jul 2000 | A |
6104700 | Haddock et al. | Aug 2000 | A |
6111886 | Stewart | Aug 2000 | A |
6112016 | MacWilliams et al. | Aug 2000 | A |
6122251 | Shinohara | Sep 2000 | A |
6128669 | Moriarty et al. | Oct 2000 | A |
6134665 | Klein et al. | Oct 2000 | A |
6141677 | Hanif et al. | Oct 2000 | A |
6141689 | Yasrebi | Oct 2000 | A |
6141765 | Sherman | Oct 2000 | A |
6144669 | Williams et al. | Nov 2000 | A |
6145054 | Mehrotra et al. | Nov 2000 | A |
6157955 | Narad et al. | Dec 2000 | A |
6160562 | Chin et al. | Dec 2000 | A |
6170051 | Dowling | Jan 2001 | B1 |
6182177 | Harriman | Jan 2001 | B1 |
6195676 | Spix et al. | Feb 2001 | B1 |
6199133 | Schnell | Mar 2001 | B1 |
6201807 | Prasanna | Mar 2001 | B1 |
6212542 | Kahle et al. | Apr 2001 | B1 |
6212544 | Borkenhagen et al. | Apr 2001 | B1 |
6212604 | Tremblay | Apr 2001 | B1 |
6212611 | Nizar et al. | Apr 2001 | B1 |
6216220 | Hwang | Apr 2001 | B1 |
6223207 | Lucovsky et al. | Apr 2001 | B1 |
6223238 | Meyer et al. | Apr 2001 | B1 |
6223243 | Ueda et al. | Apr 2001 | B1 |
6223274 | Catthoor et al. | Apr 2001 | B1 |
6223279 | Nishimura et al. | Apr 2001 | B1 |
6247025 | Bacon | Jun 2001 | B1 |
6256713 | Audityan et al. | Jul 2001 | B1 |
6269391 | Gillespie | Jul 2001 | B1 |
6272109 | Pei et al. | Aug 2001 | B1 |
6272520 | Sharangpani et al. | Aug 2001 | B1 |
6272616 | Fernando et al. | Aug 2001 | B1 |
6275505 | O'Loughlin et al. | Aug 2001 | B1 |
6279113 | Vaidya | Aug 2001 | B1 |
6282169 | Kiremidjian | Aug 2001 | B1 |
6286083 | Chin et al. | Sep 2001 | B1 |
6289011 | Seo et al. | Sep 2001 | B1 |
6295600 | Parady | Sep 2001 | B1 |
6298370 | Tang et al. | Oct 2001 | B1 |
6307789 | Wolrich et al. | Oct 2001 | B1 |
6311261 | Chamdani et al. | Oct 2001 | B1 |
6320861 | Adam et al. | Nov 2001 | B1 |
6324624 | Wolrich et al. | Nov 2001 | B1 |
6338078 | Chang et al. | Jan 2002 | B1 |
6345334 | Nakagawa et al. | Feb 2002 | B1 |
6347344 | Baker et al. | Feb 2002 | B1 |
6349331 | Andra et al. | Feb 2002 | B1 |
6356962 | Kasper et al. | Mar 2002 | B1 |
6359911 | Movshovich et al. | Mar 2002 | B1 |
6360262 | Guenthner et al. | Mar 2002 | B1 |
6360277 | Ruckley et al. | Mar 2002 | B1 |
6366998 | Mohamed | Apr 2002 | B1 |
6373848 | Allison et al. | Apr 2002 | B1 |
6377998 | Noll et al. | Apr 2002 | B2 |
6389031 | Chao et al. | May 2002 | B1 |
6389449 | Nemirovsky et al. | May 2002 | B1 |
6393026 | Irwin | May 2002 | B1 |
6393483 | Latif et al. | May 2002 | B1 |
6404737 | Novik et al. | Jun 2002 | B1 |
6415338 | Habot | Jul 2002 | B1 |
6418488 | Chilton et al. | Jul 2002 | B1 |
6424657 | Voit et al. | Jul 2002 | B1 |
6424659 | Viswanadham et al. | Jul 2002 | B2 |
6426940 | Seo et al. | Jul 2002 | B1 |
6426943 | Spinney et al. | Jul 2002 | B1 |
6427196 | Adiletta et al. | Jul 2002 | B1 |
6430626 | Witkowski et al. | Aug 2002 | B1 |
6434145 | Opsasnick et al. | Aug 2002 | B1 |
6438132 | Vincent et al. | Aug 2002 | B1 |
6438134 | Chow et al. | Aug 2002 | B1 |
6448812 | Bacigalupo | Sep 2002 | B1 |
6453404 | Bereznyi et al. | Sep 2002 | B1 |
6457015 | Eastham | Sep 2002 | B1 |
6463035 | Moore | Oct 2002 | B1 |
6463072 | Wolrich et al. | Oct 2002 | B1 |
6463480 | Kikuchi et al. | Oct 2002 | B2 |
6463527 | Vishkin | Oct 2002 | B1 |
6466898 | Chan | Oct 2002 | B1 |
6477562 | Nemirovsky et al. | Nov 2002 | B2 |
6484224 | Robins et al. | Nov 2002 | B1 |
6501731 | Chong et al. | Dec 2002 | B1 |
6507862 | Joy et al. | Jan 2003 | B1 |
6522188 | Poole | Feb 2003 | B1 |
6526451 | Kasper | Feb 2003 | B2 |
6526452 | Petersen et al. | Feb 2003 | B1 |
6529983 | Marshall et al. | Mar 2003 | B1 |
6532509 | Wolrich et al. | Mar 2003 | B1 |
6535878 | Guedalia et al. | Mar 2003 | B1 |
6552826 | Adler et al. | Apr 2003 | B2 |
6553406 | Berger et al. | Apr 2003 | B1 |
6560667 | Wolrich et al. | May 2003 | B1 |
6570850 | Gutierrez et al. | May 2003 | B1 |
6577542 | Wolrich et al. | Jun 2003 | B2 |
6584522 | Wolrich et al. | Jun 2003 | B1 |
6587906 | Wolrich et al. | Jul 2003 | B2 |
6604125 | Belkin | Aug 2003 | B1 |
6606704 | Adiletta et al. | Aug 2003 | B1 |
6625654 | Wolrich et al. | Sep 2003 | B1 |
6628668 | Hutzli et al. | Sep 2003 | B1 |
6629147 | Grow | Sep 2003 | B1 |
6629236 | Aipperspach et al. | Sep 2003 | B1 |
6631422 | Althaus et al. | Oct 2003 | B1 |
6631430 | Wolrich et al. | Oct 2003 | B1 |
6631462 | Wolrich et al. | Oct 2003 | B1 |
6657963 | Paquette et al. | Dec 2003 | B1 |
6658551 | Berenbaum et al. | Dec 2003 | B1 |
6661774 | Lauffenburger et al. | Dec 2003 | B1 |
6661794 | Wolrich et al. | Dec 2003 | B1 |
6665699 | Hunter et al. | Dec 2003 | B1 |
6665755 | Modelski et al. | Dec 2003 | B2 |
6667920 | Wolrich et al. | Dec 2003 | B2 |
6668317 | Bernstein et al. | Dec 2003 | B1 |
6671827 | Guilford et al. | Dec 2003 | B2 |
6675190 | Schabernack et al. | Jan 2004 | B1 |
6675192 | Emer et al. | Jan 2004 | B2 |
6678746 | Russell et al. | Jan 2004 | B1 |
6680933 | Cheesman et al. | Jan 2004 | B1 |
6681300 | Wolrich et al. | Jan 2004 | B2 |
6684326 | Cromer et al. | Jan 2004 | B1 |
6694380 | Wolrich et al. | Feb 2004 | B1 |
6697379 | Jacquet et al. | Feb 2004 | B1 |
6721325 | Duckering et al. | Apr 2004 | B1 |
6724767 | Chong et al. | Apr 2004 | B1 |
6728845 | Adiletta | Apr 2004 | B2 |
6732187 | Lougheed et al. | May 2004 | B1 |
6754211 | Brown | Jun 2004 | B1 |
6754222 | Joung et al. | Jun 2004 | B1 |
6768717 | Reynolds et al. | Jul 2004 | B1 |
6775284 | Calvignac et al. | Aug 2004 | B1 |
6792488 | Wolrich et al. | Sep 2004 | B2 |
6798744 | Loewen et al. | Sep 2004 | B1 |
6826615 | Barrall et al. | Nov 2004 | B2 |
6834053 | Stacey et al. | Dec 2004 | B1 |
6850521 | Kadambi et al. | Feb 2005 | B1 |
6856622 | Calamvokis et al. | Feb 2005 | B1 |
6873618 | Weaver | Mar 2005 | B1 |
6876561 | Wolrich et al. | Apr 2005 | B2 |
6895457 | Wolrich et al. | May 2005 | B2 |
6925637 | Thomas et al. | Aug 2005 | B2 |
6931641 | Davis et al. | Aug 2005 | B1 |
6934780 | Modelski et al. | Aug 2005 | B2 |
6934951 | Wilkinson et al. | Aug 2005 | B2 |
6938147 | Joy et al. | Aug 2005 | B1 |
6944850 | Hooper et al. | Sep 2005 | B2 |
6947425 | Hooper et al. | Sep 2005 | B1 |
6952824 | Hooper et al. | Oct 2005 | B1 |
6959002 | Wynne et al. | Oct 2005 | B2 |
6967963 | Houh et al. | Nov 2005 | B1 |
6976095 | Wolrich et al. | Dec 2005 | B1 |
6981077 | Modelski et al. | Dec 2005 | B2 |
6983350 | Wheeler et al. | Jan 2006 | B1 |
7006495 | Hooper | Feb 2006 | B2 |
7065569 | Teraslinna | Jun 2006 | B2 |
7069548 | Kushlis | Jun 2006 | B2 |
7096277 | Hooper | Aug 2006 | B2 |
7100102 | Hooper et al. | Aug 2006 | B2 |
7111072 | Matthews et al. | Sep 2006 | B1 |
7111296 | Wolrich et al. | Sep 2006 | B2 |
7124196 | Hooper | Oct 2006 | B2 |
7126952 | Hooper et al. | Oct 2006 | B2 |
7149786 | Bohringer et al. | Dec 2006 | B1 |
7181742 | Hooper | Feb 2007 | B2 |
7191321 | Bernstein et al. | Mar 2007 | B2 |
7206858 | Hooper et al. | Apr 2007 | B2 |
7248584 | Hooper | Jul 2007 | B2 |
20010023487 | Kawamoto | Sep 2001 | A1 |
20020027448 | Bacigalupo | Mar 2002 | A1 |
20020041520 | Wolrich et al. | Apr 2002 | A1 |
20020075878 | Lee et al. | Jun 2002 | A1 |
20020118692 | Oberman et al. | Aug 2002 | A1 |
20020150047 | Knight et al. | Oct 2002 | A1 |
20020181194 | Ho et al. | Dec 2002 | A1 |
20030043803 | Hooper | Mar 2003 | A1 |
20030067934 | Hooper et al. | Apr 2003 | A1 |
20030086434 | Kloth | May 2003 | A1 |
20030105901 | Wolrich et al. | Jun 2003 | A1 |
20030105917 | Ostler et al. | Jun 2003 | A1 |
20030110166 | Wolrich et al. | Jun 2003 | A1 |
20030115347 | Wolrich et al. | Jun 2003 | A1 |
20030115426 | Rosenbluth et al. | Jun 2003 | A1 |
20030131198 | Wolrich et al. | Jul 2003 | A1 |
20030140196 | Wolrich et al. | Jul 2003 | A1 |
20030145159 | Adiletta et al. | Jul 2003 | A1 |
20030147409 | Wolrich et al. | Aug 2003 | A1 |
20030161303 | Mehrvar et al. | Aug 2003 | A1 |
20030161337 | Weinman | Aug 2003 | A1 |
20030196012 | Wolrich et al. | Oct 2003 | A1 |
20030210574 | Wolrich et al. | Nov 2003 | A1 |
20030231635 | Kalkunte et al. | Dec 2003 | A1 |
20040039895 | Wolrich et al. | Feb 2004 | A1 |
20040054880 | Bernstein et al. | Mar 2004 | A1 |
20040059828 | Hooper et al. | Mar 2004 | A1 |
20040071152 | Wolrich et al. | Apr 2004 | A1 |
20040073728 | Wolrich et al. | Apr 2004 | A1 |
20040073778 | Adiletta et al. | Apr 2004 | A1 |
20040085901 | Hooper et al. | May 2004 | A1 |
20040098496 | Wolrich et al. | May 2004 | A1 |
20040109369 | Wolrich et al. | Jun 2004 | A1 |
20040148382 | Narad et al. | Jul 2004 | A1 |
20040162933 | Adiletta et al. | Aug 2004 | A1 |
20040252686 | Hooper et al. | Dec 2004 | A1 |
20050033884 | Wolrich et al. | Feb 2005 | A1 |
20050149665 | Wolrich et al. | Jul 2005 | A1 |
20060007871 | Welin | Jan 2006 | A1 |
20060069882 | Wheeler et al. | Mar 2006 | A1 |
20060156303 | Hooper et al. | Jul 2006 | A1 |
Number | Date | Country |
---|---|---|
0 379 709 | Aug 1990 | EP |
0 464 715 | Jan 1992 | EP |
0 633 678 | Jan 1995 | EP |
0 745 933 | Dec 1996 | EP |
0 773 648 | May 1997 | EP |
0 809 180 | Nov 1997 | EP |
0 959 602 | Nov 1999 | EP |
59-111533 | Jun 1984 | JP |
WO 9415287 | Jul 1994 | WO |
WO 9738372 | Oct 1997 | WO |
WO 9820647 | May 1998 | WO |
WO 0038376 | Jun 2000 | WO |
WO 0056024 | Sep 2000 | WO |
WO 0116718 | Mar 2001 | WO |
WO 0116769 | Mar 2001 | WO |
WO 0116770 | Mar 2001 | WO |
WO 0116782 | Mar 2001 | WO |
WO 0117179 | Mar 2001 | WO |
WO 0131856 | May 2001 | WO |
WO 0148596 | Jul 2001 | WO |
WO 0148606 | Jul 2001 | WO |
WO 0148619 | Jul 2001 | WO |
WO 0150247 | Jul 2001 | WO |
WO 0150679 | Jul 2001 | WO |
WO03030461 | Apr 2003 | WO |
Number | Date | Country | |
---|---|---|---|
20040052269 A1 | Mar 2004 | US |