Queue management

Information

  • Patent Grant
  • 7158964
  • Patent Number
    7,158,964
  • Date Filed
    Wednesday, December 12, 2001
    22 years ago
  • Date Issued
    Tuesday, January 2, 2007
    17 years ago
Abstract
A method of managing queue entries includes storing addresses in a first queue entry as a linked list, each of the stored addresses including a cell count, retrieving a first address from the first queue entry, and modifying the linked list of addresses of the first queue entry based on the cell count of the first address retrieved.
Description
TECHNICAL FIELD

This invention relates to managing a queue structure and more specifically to scheduling the transmission of packets on an electronic network.


BACKGROUND

Electronic networks perform data transfers using a variety of data packet sizes. A packet size may be larger than the input or output capacity of a device connected to the network. Therefore a single packet may require multiple transfers of smaller “cells” to completely transfer the packet.





DESCRIPTION OF THE DRAWINGS


FIG. 1 is a block diagram of computer hardware on which a queue management process may be implemented.



FIG. 2A is a block diagram representing an exemplary linked queue array.



FIG. 2B is a block diagram representing addresses stored in a linked queue array being mapped to stored data packets.



FIG. 2C is a flowchart representing the transmission of data packets.



FIG. 3 is a flowchart showing a queue management process.



FIG. 3A is a flowchart showing an en-queuing process.



FIG. 3B is a flowchart showing a de-queuing process.





DESCRIPTION

Referring to FIG. 1, a network processing system 10 is shown operating as a data packet cross-bar device. The network processing system 10 receives packets (through I/O buses 14a14n from external devices not shown), stores the packets temporarily, interprets header (address) information contained in each packet, and transmits each packet to a destination indicated by its header when an appropriate I/O bus 14a14n is available. System 10 may include connections to thousands of I/O buses and may need to simultaneously store and track tens of thousands of data packets of various sizes before each packet is transmitted out of system 10. The storage and the input and output of data packets (packets) to and from I/O buses 14a14n is controlled by several processors 12a12n.


System 10 includes a first memory 18, to store the received data packets from a set of data buffers 18a18n. The data buffers 18a18n are not necessarily contiguously stored in the first memory 18. Each data buffer 18a18n is indexed by a buffer descriptor address (BDA) that indicates the location and size of the buffer. As a packet is received from one of the I/O buses 14a14n and stored by one of the processors 12a12n in one of the buffers 18a18n of the first memory 18, the processor, e.g., processor 12a identifies one of a set of I/O buffers 16a16n for transmitting the packet from the data buffer 18a18n out of system 10. Each of the I/O buffers 16a16n is associated with one of the I/O buses 14a14n.


Often, the I/O port chosen for transmitting a packet stored in an I/O buffer is busy receiving or sending packets for other I/O buffers. In this case, the system 10 includes a second memory 20 for storing the packet. The second memory 20 stores a queue array 24. The queue array 24 has buffer descriptor addresses (BDAs) for packets that are stored in data buffers 18a18n of the first memory 18 and are waiting for an assigned I/O buffer 16a16n to become available.


Each data packet received may vary in size. Therefore, the size of each data buffer 18a18n may also vary in size. Furthermore, each data buffer 18a18n may be logically partitioned by a processor 12a12n into one or more “cells”. Each cell partition represents a maximum size of a data packet that may be transmitted by an I/O buffer 16a16n. For example, data buffer 18a is partitioned into two cells, data buffer 18b includes one cell, and data buffer 18c includes three cells.


System 10 also includes a queue manager 22 connected to processors 12a12n and second memory 20. Queue manager 22 includes the queue array 24 that includes several queue entries, with each queue entry corresponding to an I/O buffer, 16a16n. Each queue entry in queue array 24 stores multiple BDAs, where one BDA links to another BDA in the same queue. Queue array 24 is stored in second memory 20. Alternatively or in addition thereto the queue manager 22 may include a cache containing a sub-set of the contents of queue array 24.


Each BDA includes both an address of the stored data buffer in first memory 18, and a “cell count” that indicates the number of cells contained in data buffer 18a18n. The BDA is, for example, 32 bits long, with the lower 24 bits being used for an address of the buffer descriptor and the upper 7 bits being used to indicate the cell count of the data buffer.


Processors 12a12n store and retrieve data buffers from queue array 24 by sending “En-queue” and “De-queue” commands to queue manager 22. Each En-queue and De-queue command includes a queue entry number included in queue array 24. Queue manager 22 responds to a De-queue command by returning a BDA stored at a “head” of the queue 24, i.e., a top entry of the queue entry specified to the requesting processor. Queue manager 22 also uses the cell count included in the head BDA being returned to determine whether all of the cells included in the corresponding data packet have been sent. If the cell count is greater than zero, then the queue manager 22 leaves the head BDA in the head location of the queue 24. When the cell count for a De-queued BDA has reached zero another linked BDA is moved to the head of the queue 24, as will be explained.


Referring to FIGS. 2A and 2B, a first queue entry, “Qa,” of an exemplary queue array Qa–Qn is shown. Each queue entry included in queue array Qa–Qn includes a three-block queue descriptor 51a51n, and may also include additional BDAs that are linked to the same queue entry. Each queue descriptor 51a51n includes a first block 52a52n that contains the head BDA for the queue entry, a second block 54a54n that contains the “tail” address for the queue entry and a third block 56a56n that contains a “queue count” for the queue entry.


As an example of a queue entry that includes both a head BDA and a linked BDA, queue “Qa” is shown. In this example, head block 52a has the BDA that will be returned in response to a first De-queue command specifying entry Qa. Head BDA 52a links to a second BDA stored at address “a:” 57a. “Tail” block 54a contains the address “b:” of the last linked address of entry Qa. The address contained in Tail block 54a points to the storage location where another BDA may be En-Queued (and linked to) queue entry Qa. Third block 56a contains a current value of Queue Count that indicates a number of linked buffer descriptors included in the queue entry Qa. In this example, Queue Count 56a equals two, indicating a first BDA in the “head” location 52a and a second linked BDA in block 57a. It is noted that the BDA contained in the head block 52a52n, of each queue descriptor 51a51n, contains the BDA and Cell Count of the second linked BDA on the queue entry Qa, 57a57n, unless the queue entry Qa includes only a single BDA.


Referring to FIG. 3, a process 80 is shown for En-queueing BDAs and linking the BDAs to subsequent BDAs using the queue array shown in FIGS. 2A and 2B. Process 80 includes a sub-process 100 that depicts En-queueing a BDA onto a queue array structure, and a sub-process 120 that depicts De-queueing a BDA from a queue array.


Referring to FIG. 3A, a example of the sub-process 100 receives (102) an En-queue command that specifies a Q queue entry in the queue array Qa–Qn and a BDA for a new data buffer. Sub-process 100 stores (104) the new BDA in the location indicated by the tail address, up-dates (106) the tail address to point to the new BDA and increments (108) the queue count by one (block 56a56n). Sub-process 100 may be repeated to store and link additional data buffers onto the “tail” of a queue entry, that is, En-queueing an additional BDA onto the linked address location at the tail of a queue entry, etc.


Referring to FIG. 3B, an example of sub-process 120 depicts a process of De-queueing data buffers, i.e., BDAs, from a queue entry included in queue array Qa–Qn. Sub-process 120 receives (122) a De-queue command that specifies a queue entry included in queue array Qa–Qn. Sub-process 120 returns (124) the BDA from the head of the queue descriptor for the specified queue entry to the requesting processor. Sub-Process 120 determines (126) whether the cell count from the head BDA is greater than zero. If the cell count is greater than zero, sub-process 120 decrements (128) the cell count included in the head BDA and exits (140). If the cell count is not greater than zero, process 120 determines (129) if the Queue Count is greater than or equal to one. If the Queue Count is not greater than or equal to one (indicating the queue entry is empty) sub-process 120 exits (140). If the Queue Count is determined (129) greater than or equal to one (indicating the queue entry contains another linked BDA) sub-process 120 sets (130) the next linked BDA to be the head buffer descriptor decrements (132) the queue count and exits (140). Sub-process 120 may be repeated to De-queue the head BDA and subsequent linked BDAs stored in a queue entry in queue array 24.


Performing process 80 on a system, such as system 10, enables the system to keep a multiple-cell data buffer that is being transmitted at the head of a queue entry. This is an advantage when a relatively large number of I/O buffers are being served concurrently, with one or more I/O buffers requiring cell-at-a-time data transmission.


Referring to FIG. 2C, a logical representation of the sequence of data packets that are transmitted by a system performing process 80 is shown. The data buffers; 18a18n, and cell numbers of FIG. 2C correspond to the same numbers shown in FIGs. 1 and 2B. As shown in FIG. 2C, a system performing process 80 causes the two cells of data buffer 18a to be transmitted before the transmission of the first cell of data buffer 18b is begun. Likewise, data buffer 18b completes transmission before the first cell of data buffer 18c begins transmission, and so forth.


Process 80 is not limited to use with the hardware and software of FIG. 1. It may find applicability in any computing or processing environment. Process 80 may be implemented in hardware, software, or a combination of the two. Process 80 may be implemented in computer programs executing on programmable computers or other machines that each include a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage components), at least one input device, and one or more output devices. Program code may be applied to data entered using an input device (e.g., a mouse or keyboard) to perform process 80 and to generate output information.


Each such program may be implemented in a high level procedural or object-oriented programming language to communicate with a computer system. However, the programs can be implemented in assembly or machine language. The language may be a compiled or an interpreted language.


Each computer program may be stored on a storage medium/article (e.g., CD-ROM, hard disk, or magnetic diskette) that is readable by a general or special purpose programmable computer for configuring and operating the computer when the storage medium or device is read by the computer to perform process 80. Process 80 may also be implemented as a machine-readable storage medium, configured with a computer program, where, upon execution, instructions in the computer program cause a machine to operate in accordance with process 80.


The invention is not limited to the specific embodiments described above. For example, a single memory may be used to store both data packets and buffer descriptors. Also, the buffer descriptors and BDAs may be stored substantially simultaneously in second memory 20 and queue array 24 (see FIG. 1).


Other embodiments not described herein are also within the scope of the following claims.

Claims
  • 1. A method of managing queues, comprising: storing addresses corresponding to a plurality of data buffers having a corresponding number of cells in a queue configured as a linked list comprising a plurality of Buffer Descriptor Address (BDA) entries, wherein a first BDA entry points to a subsequent BDA entry and to a final BDA entry, each of the plurality of BDA entries of the linked list includes one of the data buffer addresses and an associated a cell count that indicates the corresponding number of cells contained in the corresponding data buffer;retrieving a first address from the queue; andmodifying the linked list of addresses of the queue based on the cell count of the first address retrieved, including decrementing the cell count of the first address each time the first address is retrieved.
  • 2. The method of claim 1, further comprising: determining the cell count is zero.
  • 3. The method of claim 2, wherein storing addresses further comprises: setting the first address as the head address of the queue; andlinking a second address to the first address of the queue.
  • 4. The method of claim 3, wherein linking the second address to the first address further comprises: setting the second address as a tail address of the queue.
  • 5. The method of claim 4, further comprising: linking a third address to the queue by storing the third address in the location indicated by the tail address.
  • 6. The method of claim 4, further comprising: incrementing a queue count indicating the number of BDA entries included in the queue each time an address is linked to the queue.
  • 7. The method of claim 3, wherein the queue is stored as part of a queue array having a plurality of linked queues.
  • 8. An article comprising a machine-readable medium that stores machine-executable instructions for managing a queue array, the instructions causing a machine to: store addresses corresponding to a plurality of data buffers having a corresponding number of cells in a queue configured as a linked list comprising a plurality of Buffer Descriptor Address (BDA) entries, wherein a first BDA entry points to a subsequent BDA entry and to a final BDA entry, each of the plurality of BDA entries of the linked list includes one of the data buffer addresses and an associated cell count that indicates the corresponding number of cells contained in the corresponding data buffer;retrieve a first address from the queue; andmodify the linked list of addresses of the queue based on the cell count of the first address retrieved, including decrementing the cell count of the first address each time the first address is retrieved.
  • 9. The article of claim 8, further comprising instructions causing a machine to: determine the cell count is zero.
  • 10. The article of claim 9, wherein storing further comprises instructions causing a machine to: set the first address as the head address of the queue; andlink a second address to the first address of the queue.
  • 11. The article of claim 10, wherein linking comprises setting the second address as a tail address of the queue.
  • 12. The article of claim 11, further comprising instructions causing a machine to: link a third address to the queue by storing the third address in the location indicated by the tail address.
  • 13. The article of claim 11, further comprising instructions causing a machine to: increment a queue count indicating the number of BDA entries included in the queue each time an address is linked to the queue.
  • 14. The article of claim 10, wherein the queue is stored as part of a queue array having a plurality of linked queues.
  • 15. An apparatus, comprising: a first storage device for holding queues;a second storage device for holding data packets;a memory that stores executable instructions; anda processor that executes the instructions to:store addresses corresponding to a plurality of data buffers having a corresponding number of cells in a queue configured as a linked list comprising a plurality of Buffer Descriptor Address (BDA) entries, wherein a first BDA entry points to a subsequent BDA entry and to a final BDA entry, each of the plurality of BDA entries of the linked list includes one of the data buffer addresses and an associated cell count that indicates the corresponding number of cells contained in the corresponding data buffer;retrieve a first address from the queue, andmodify the linked list of addresses of the queue based on the cell count of the first address retrieved, including decrementing the cell count of the first address each time the first address is retrieved.
  • 16. The apparatus of claim 15, wherein instructions to modify comprise instructions to: determine the cell count is zero.
  • 17. The apparatus of claim 16, wherein instructions to store addresses comprises instructions to: set the first address as the head address of the queue; andlink a second address to the first address of the queue.
  • 18. The apparatus of claim 17, wherein instructions to link comprises instructions to: set the second address as a tail address of the queue.
  • 19. The apparatus of claim 18, further comprising instructions to: link a third address to the queue by storing the third address in the location indicated by the tail address.
  • 20. The apparatus of claim 18, further comprising instructions to: increment a queue count indicating the number of BDA entries included in the queue each time an address is linked to the queue.
  • 21. The apparatus of claim 17, further comprising: a storage medium, the queue being stored on the storage medium as part of a queue array having a plurality of linked queues.
  • 22. A processing system for managing queues comprising: a processor;a memory to store queues; anda storage-medium accessible by the processor to store executable instructions, which when accessed by the processor cause the processor to:store addresses corresponding to a plurality of data buffers having a corresponding number of cells in a queue configured as a linked list comprising a plurality of Buffer Descriptor Address (BDA) entries, wherein a first BDA entry points to a subsequent BDA entry and to a final BDA entry, each of the plurality of BDA entries of the linked list includes one of the data buffer addresses and an associated cell count that indicates the corresponding number of cells contained in the corresponding data buffer;retrieve a first address from the queue; andmodify the linked list of addresses of the queue based on the cell count of the first address retrieved, including decrementing the cell count of the first address each time the first address is retrieved.
  • 23. The system of claim 22, further comprising instructions, which when accessed by the processor causes the processor to: determine the cell count is zero.
  • 24. The system of claim 23, wherein storing addresses further comprises: setting the first address as the head address of the queue; andlinking a second address to the first address of the queue.
  • 25. The system of claim 24, wherein linking the second address to the first address further comprises instructions, which when accessed by the processor causes the processor to: setting the second address as a tail address of the queue.
  • 26. The system of claim 25, further comprises instructions, which when accessed by the processor causes the processor to: link a third address to the queue by storing the third address in the location indicated by the tail address.
  • 27. The system of claim 25, further comprises instructions, which when accessed by the processor causes the processor to: increment a queue count indicating the number of BDA entries in the queue each time an address is linked to the queue.
  • 28. The method of claim 1, further comprising: receiving network packets; andstoring the packets in one or more of the plurality of data buffers.
  • 29. The article of claim 8 further comprising instructions that cause the machine to: receive network packets; andstore the packets in one or more of the plurality of data buffers.
  • 30. The apparatus of claim 15, wherein the processor executes further instructions to: receive network packets; andstore the packets in one or more of the plurality of data buffers.
  • 31. The processing system of claim 22, wherein the storage medium further includes instructions that when accessed by the processor cause the processor to: receive network packets; andstore the packets in one or more of the plurality of data buffers.
US Referenced Citations (228)
Number Name Date Kind
3373408 Ling Mar 1968 A
3478322 Evans Nov 1969 A
3792441 Wymore et al. Feb 1974 A
3940745 Sajeva Feb 1976 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
4745544 Renner et al. May 1988 A
4866664 Burkhardt, Jr. et al. Sep 1989 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
5185861 Valencia Feb 1993 A
5255239 Taborn et al. Oct 1993 A
5263169 Genusov et al. Nov 1993 A
5268900 Hluchyj et al. Dec 1993 A
5347648 Stamm et al. Sep 1994 A
5367678 Lee et al. Nov 1994 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
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
5459842 Begun et al. Oct 1995 A
5463625 Yasrebi Oct 1995 A
5467452 Blum et al. Nov 1995 A
5517648 Bertone et al. May 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
5568617 Kametani Oct 1996 A
5574922 James Nov 1996 A
5592622 Isfeld et al. Jan 1997 A
5613071 Rankin et al. Mar 1997 A
5613136 Casavant et al. Mar 1997 A
5623489 Cotton et al. Apr 1997 A
5627829 Gleeson et al. May 1997 A
5630130 Perotto et al. May 1997 A
5634015 Chang et al. May 1997 A
5644623 Gulledge Jul 1997 A
5649092 Price et al. Jul 1997 A
5649157 Williams Jul 1997 A
5659687 Kim et al. Aug 1997 A
5671446 Rakity et al. Sep 1997 A
5680641 Sidman Oct 1997 A
5684962 Black et al. Nov 1997 A
5689566 Nguyen Nov 1997 A
5699537 Sharangpani et al. Dec 1997 A
5717898 Kagan et al. Feb 1998 A
5721870 Matsumoto Feb 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 Mahanti-Shetti et al. May 1998 A
5761507 Govett Jun 1998 A
5761522 Hisanaga et al. Jun 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
5809235 Sharma 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
5832215 Kato et al. Nov 1998 A
5835755 Stellwagen, Jr. Nov 1998 A
5850395 Hauser et al. Dec 1998 A
5854922 Gravenstein et al. Dec 1998 A
5860158 Pai et al. Jan 1999 A
5872769 Caldara et al. Feb 1999 A
5873089 Regache Feb 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
5893162 Lau et al. Apr 1999 A
5905876 Pawlowski et al. May 1999 A
5905889 Wilhelm, Jr. May 1999 A
5915123 Mirsky et al. Jun 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
5958031 Kim Sep 1999 A
5961628 Nguyen et al. 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
6012151 Mano Jan 2000 A
6014729 Lannan et al. Jan 2000 A
6023742 Ebeling et al. Feb 2000 A
6058168 Braband 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
6085294 Van Doren et al. Jul 2000 A
6092127 Tausheck Jul 2000 A
6092158 Harriman et al. Jul 2000 A
6112016 MacWilliams et al. Aug 2000 A
6134665 Klein 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
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
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
6223279 Nishimura et al. Apr 2001 B1
6247025 Bacon Jun 2001 B1
6256713 Audityan et al. Jul 2001 B1
6272616 Fernando et al. Aug 2001 B1
6275505 O Loughlin et al. Aug 2001 B1
6279113 Vaidya Aug 2001 B1
6289011 Seo et al. Sep 2001 B1
6298370 Tang et al. Oct 2001 B1
6307789 Wolrich et al. Oct 2001 B1
6320861 Adam et al. Nov 2001 B1
6324624 Wolrich et al. Nov 2001 B1
6345334 Nakagawa et al. Feb 2002 B1
6347341 Glassen et al. Feb 2002 B1
6347344 Baker et al. Feb 2002 B1
6351474 Robinett 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
6373848 Allison et al. Apr 2002 B1
6385658 Harter et al. May 2002 B1
6389449 Nemirovsky et al. May 2002 B1
6393483 Latif et al. May 2002 B1
6393531 Novak et al. May 2002 B1
6415338 Habot Jul 2002 B1
6426940 Seo et al. Jul 2002 B1
6426957 Hauser 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
6438651 Slane Aug 2002 B1
6463072 Wolrich et al. Oct 2002 B1
6522188 Poole Feb 2003 B1
6523060 Kao Feb 2003 B1
6532509 Wolrich et al. Mar 2003 B1
6539024 Janoska et al. Mar 2003 B1
6552826 Adler et al. Apr 2003 B1
6560667 Wolrich et al. May 2003 B1
6577542 Wolrich et al. Jun 2003 B1
6584522 Wolrich et al. Jun 2003 B1
6587906 Wolrich et al. Jul 2003 B1
6606704 Adiletta et al. Aug 2003 B1
6625654 Wolrich et al. Sep 2003 B1
6631430 Wolrich et al. Oct 2003 B1
6631462 Wolrich et al. Oct 2003 B1
6658546 Calvignac et al. Dec 2003 B1
6661794 Wolrich et al. Dec 2003 B1
6667920 Wolrich et al. Dec 2003 B1
6668317 Bernstein et al. Dec 2003 B1
6681300 Wolrich et al. Jan 2004 B1
6684303 LaBerge Jan 2004 B1
6687247 Wilford et al. Feb 2004 B1
6694380 Wolrich et al. Feb 2004 B1
6724721 Cheriton Apr 2004 B1
6728845 Adiletta et al. Apr 2004 B1
6731596 Chiang et al. May 2004 B1
6754223 Lussier et al. Jun 2004 B1
6757791 O'Grady et al. Jun 2004 B1
6768717 Reynolds et al. Jul 2004 B1
6779084 Wolrich et al. Aug 2004 B1
6791989 Steinmetz et al. Sep 2004 B1
6795447 Kadambi et al. Sep 2004 B1
6804239 Lussier et al. Oct 2004 B1
6810426 Mysore et al. Oct 2004 B1
6813249 Lauffenburger et al. Nov 2004 B1
6816498 Viswanath Nov 2004 B1
6822958 Branth et al. Nov 2004 B1
6822959 Galbi et al. Nov 2004 B1
6842457 Malalur Jan 2005 B1
6850999 Mak et al. Feb 2005 B1
6868087 Agarwala et al. Mar 2005 B1
6876561 Adiletta et al. Apr 2005 B1
6888830 Snyder II et al. May 2005 B1
6895457 Wolrich et al. May 2005 B1
6975637 Lenell Dec 2005 B1
20010014100 Abe et al. Aug 2001 A1
20020131443 Robinett et al. Sep 2002 A1
20020144006 Cranston et al. Oct 2002 A1
20020196778 Colmant et al. Dec 2002 A1
20030041216 Rosenbluth et al. Feb 2003 A1
20030046488 Rosenbluth et al. Mar 2003 A1
20030110166 Wolrich et al. Jun 2003 A1
20030115347 Wolrich et al. Jun 2003 A1
20030115426 Rosenbluth et al. Jun 2003 A1
20030131022 Wolrich et al. Jul 2003 A1
20030131198 Wolrich et al. Jul 2003 A1
20030140196 Wolrich et al. Jul 2003 A1
20030147409 Wolrich et al. Aug 2003 A1
20040039895 Wolrich et al. Feb 2004 A1
20040054880 Bernstein et al. Mar 2004 A1
20040071152 Wolrich et al. Apr 2004 A1
20040073778 Adiletta et al. Apr 2004 A1
20040098496 Wolrich et al. May 2004 A1
20040179533 Donovan Sep 2004 A1
Foreign Referenced Citations (19)
Number Date Country
0 379 709 Aug 1990 EP
0 418 447 Mar 1991 EP
0 464 715 Jan 1992 EP
0 633 678 Jan 1995 EP
0 745 933 Dec 1996 EP
0 760 501 Mar 1997 EP
0 809 180 Nov 1997 EP
59111533 Jun 1984 JP
WO 9415287 Jul 1994 WO
WO 9738372 Oct 1997 WO
WO 0115718 Mar 2001 WO
WO 0116769 Mar 2001 WO
WO 0116770 Mar 2001 WO
WO 0116782 Mar 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
Related Publications (1)
Number Date Country
20030110166 A1 Jun 2003 US