This invention relates to managing a queue structure and more specifically to scheduling the transmission of packets on an electronic network.
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.
Referring to
System 10 includes a first memory 18, to store the received data packets from a set of data buffers 18a–18n. The data buffers 18a–18n are not necessarily contiguously stored in the first memory 18. Each data buffer 18a–18n 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 14a–14n and stored by one of the processors 12a–12n in one of the buffers 18a–18n of the first memory 18, the processor, e.g., processor 12a identifies one of a set of I/O buffers 16a–16n for transmitting the packet from the data buffer 18a–18n out of system 10. Each of the I/O buffers 16a–16n is associated with one of the I/O buses 14a–14n.
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 18a–18n of the first memory 18 and are waiting for an assigned I/O buffer 16a–16n to become available.
Each data packet received may vary in size. Therefore, the size of each data buffer 18a–18n may also vary in size. Furthermore, each data buffer 18a–18n may be logically partitioned by a processor 12a–12n 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 16a–16n. 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 12a–12n 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, 16a–16n. 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 18a–18n. 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 12a–12n 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
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 52a–52n, of each queue descriptor 51a–51n, contains the BDA and Cell Count of the second linked BDA on the queue entry Qa, 57a–57n, unless the queue entry Qa includes only a single BDA.
Referring to
Referring to
Referring to
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
Process 80 is not limited to use with the hardware and software of
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
Other embodiments not described herein are also within the scope of the following claims.
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 |
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 |
Number | Date | Country | |
---|---|---|---|
20030110166 A1 | Jun 2003 | US |