A write-only data transfer protocol for peripheral component interface busses and a method for transferring data between source and destination communication units is provided. The method includes the source communication unit writing a buffer allocation request to the destination unit and, in response to the buffer allocation request, the destination communication unit allocating space within an associated buffer to receive the data to be sent. The method also includes the destination communication unit writing at least the location of the allocated buffer to the source communication unit and the source communication unit writing the data to be sent to the allocated buffer location.
|
7. A method for transferring data between source and destination communication units, the method comprising the steps of:
a. the source communication unit writing the data to be sent with an indication of the buffer location into which the destination communication unit should write the data to be sent.
9. A method for transferring data between source and destination communication units connected via a bus having a data line and an address line, the method comprising the steps of:
a. the source communication unit writing the data to be sent on said data line and at least the address of said destination communication unit and the address of a buffer location within said destination communication unit on said address line.
1. A method for transferring data between source and destination communication units, the method comprising the steps of:
a. the source communication unit writing a buffer allocation request to the destination communication unit;
b. in response to the buffer allocation request, the destination communication unit allocating space within an associated buffer to receive the data to be sent;
c. the destination communication unit writing at least the location of the allocated buffer to the source communication unit; and
d. the source communication unit writing the data to be sent to the allocated buffer location.
11. A write-only data transfer protocol for peripheral component interface busses for transferring data between source and destination peripheral components, the method comprising the steps of:
a. the source peripheral component writing a buffer allocation request to the destination unit peripheral component;
b. in response to the buffer allocation request, the destination nation peripheral component allocating space within an associated buffer to receive the data to be sent;
c. the destination peripheral component writing at least the location of the allocated buffer to the source peripheral component; and
d. the source peripheral component writing the data to be sent to the allocated buffer location.
0. 13. A communications system comprising:
a source communication unit comprising a source buffer;
a destination communication unit in communication with said source communication unit, and comprising a destination buffer;
wherein, in response to a destination buffer allocation request by said source communication unit to said destination communication unit, said destination communication unit (i) allocates a location within said destination buffer to receive the data to be sent from said source communication unit, and (ii) provides at least the location of said destination buffer to said source communication unit, and
wherein said source communication unit provides the data to said destination buffer for storage at the location.
0. 33. A communications system comprising:
source communication means for transmitting and receiving data comprising source buffer means for storing data;
destination communication means for transmitting and receiving data in communication with said source communication means and comprising destination buffer means for storing data;
wherein, in response to a destination buffer means allocation request by said source communication means to said destination communication means, said destination communication means (i) allocates a location within said destination buffer means to receive the data to be sent from said source communication means, and (ii) provides at least the location of said destination buffer means to said source communication means, and
wherein said source communication means provides the data to said destination buffer means for storage at the location.
0. 23. A communication system comprising:
a source node;
a source communication unit in communication with said source node and comprising a source buffer;
a destination communication unit in communication with said source communication unit and comprising a destination buffer,
wherein, in response to a destination buffer allocation request by said source communication unit to said destination communication unit, said destination communication unit (i) allocates a location within said destination buffer to receive the data to be sent from said source communication unit, and (ii) provides at least the location of said destination buffer to said source communication unit, and
wherein said source communication unit provides the data to said destination buffer for storage at the location; and
a destination node in communication with said destination communication unit.
0. 43. A communication system comprising:
source node means for sourcing data;
source communication means in communication with said source node means comprising source buffer means for storing data;
destination communication means in communication with said source communication means and comprising destination buffer means for storing data,
wherein, in response to a destination buffer means allocation request by said source communication means to said destination communication means, said destination communication means (i) allocates a location within said destination buffer means to receive the data to be sent from said source communication means, and (ii) provides at least the location of said destination buffer means to said source communication means, and
wherein said source communication means provides the data to said destination buffer means for storage at the location; and
destination node means for sinking data in communication with said destination communication means.
2. A method according to
3. A method according to
4. A method according to claim 3 and wherein said second step of writing includes further comprising the step of:
the destination communication unit writing at least the an address of the an allocated buffer and of the destination communication unit into a start of packet register in said source communication unit.
5. A method according to
6. A method according to
8. A method according to
10. A method according to
12. A method according to
0. 14. A communication system according to
0. 15. A communication system according to
0. 16. A communication system according to
0. 17. A communication system according to
0. 18. A communication system according to
0. 19. A communication system according to
0. 20. A communication system according to
0. 21. A communication system according to
0. 22. A communication system according to
0. 24. A communication system according to
0. 25. A communication system according to
0. 26. A communication system according to
0. 27. A communication system according to
0. 28. A communication system according to
0. 29. A communication system according to
0. 30. A communication system according to
0. 31. A communication system according to
0. 32. A communication system according to
0. 34. A communication system according to
0. 35. A communication system according to
0. 36. A communication system according to
0. 37. A communication system according to
0. 38. A communication system according to
0. 39. A communication system according to
0. 40. A communication system according to
0. 41. A communication system according to
0. 42. A communication system according to
0. 44. A communication system according to
0. 45. A communication system according to
0. 46. A communication system according to
0. 47. A communication system according to
0. 48. A communication system according to
0. 49. A communication system according to
0. 50. A communication system according to
0. 51. A communication system according to
0. 52. A communication system according to
|
The present invention relates to data transfer protocols generally and to such protocols for implementation on a peripheral component interface (PCI) bus and within a network switch in particular.
A network switch creates a network among a plurality of nodes (connected to personal computers, workstations, etc.) and other network switches connected thereto. As shown in
Each node 10 sends packets of data to the network switch 12 which then routes the packets either to another of the nodes connected thereto or to a network switch to which the destination node is connected. In the latter case, the destination network switch then routes the packet to the destination node.
Each network switch also has to temporarily store the packets of data, in buffers 18, while the switch determines how, when and through which port to retransmit the packets. Each packet can be transmitted to only one destination address (a “unicast” packet) or to more than one unit (a “multicast” or “broadcast” packet). For multicast and broadcast packets, the switch typically stores the packet only once and transmits multiple copies of the packet to some (multicast) or all (broadcast) of its ports. Once the packet has been transmitted to all of its destinations, it can be removed from its buffer 18 or written over.
One example of a prior art process of transferring packets between network switches is illustrated in
The source network switch 12A, on its own schedule reads the packet from its temporary storage location, labeled 19A, and writes the packet to the main memory 17 (step 20). The source network switch 12A then provides (step 22) an indication to the CPU 15 that the transfer has finished. At some later point after the transfer has finished, the CPU 15 indicates (step 24) to the destination network switch 12B that the main memory 17 is storing its data.
When the destination network switch 12B receives the notification from the CPU 15, the destination network switch 12B begins the read process and takes control of the bus 16. The read process includes steps 26-32, as follows. In step 26, the destination network switch 12B determines where, in its temporary storage unit there is room for the incoming packet (for example location 19B). In step 28, destination network switch 12B asks the main memory 17 to read the packet and, when the packet is received, switch 12B places it (step 30) into the available location 19B. When the destination network switch 12B has finished the read operation, it, in step 32, sends a message to the CPU 15 that the packet was properly received. In step 34, the CPU 15 receives the receipt message and clears the location in the main memory 17 in which the data was previously stored.
Applicants have realized that, since read operations are limited by the speed of the main memory 17 (or of any other memory being read), while write operations occur at the speed of the bus 16, the utilization efficiency of the bus can be increased if data transfers are performed using only write operations.
It is therefore an object of the present invention to provide a write-only bus transfer mechanism in which no read operations occur. In the present invention, data is written directly, such as by direct memory transfer, from one network switch to the other and a packet is not sent from the source network switch until the destination network switch has allocated a storage location for the packet and has notified the source network switch of the allocated storage location. Thus, the packet can immediately be written into the destination network switch as soon as it arrives at the destination network switch. Furthermore, since the storage space is allocated for the packet before the packet is ever sent, the source network switch does not need to wait for a receive notice before beginning to send the next packet.
In one embodiment, the method includes the steps of:
Additionally, in accordance with a preferred embodiment of the present invention, the step of writing a buffer allocation request includes the step of writing at least the address of the source communication unit and the size of the data to be transferred into a buffer allocation request register of the destination communication unit. Similarly, the second step of writing includes the step of writing at least the address of the allocated buffer and of the destination communication unit into a start of packet register in the source communication unit.
Moreover, in accordance with a preferred embodiment of the present invention, the steps of writing are performed by direct memory access transfer.
Further, in accordance with a preferred embodiment of the present invention, the source and destination communication units are physically separate units.
Finally, in accordance with a preferred embodiment of the present invention, the source communication unit can write a) the data to be sent on a bus data line and b) at least the address of the destination communication unit and the address of a buffer location within the destination communication unit on a bus address line.
The present invention will be understood and appreciated more fully from the following detailed description taken in conjunction with the drawings in which:
Reference is now made to
The network switches of the present invention additionally have a plurality of registers 21 which are utilized during the data transfer operation. These registers can form part of the storage unit in which the buffers 18 are located or they can be separate therefrom. Furthermore, it is noted that the bus 16 has at least two lines, a data line 40 and an address line 42.
In the present invention, packets of data are not transferred until a buffer location 19 is allocated for them in the buffer 18 of the destination network switch 12B. Furthermore, since the transfer operation is a DMA transfer, a packet is directly written into the location allocated therefor.
The present discussion will consider the transfer of a single packet of data. It will be appreciated that many packets of data can be transferred in parallel by performing the operations described hereinbelow many times either in parallel or serially.
In accordance with a preferred embodiment of the present invention, when a packet of data is to be transferred, the source network switch 12A initially writes (step 50,
In the DMA transfer embodiment of the present invention, the source network switch 12A provides, on address line 42, the address of the “buffer request” register, the address of destination network switch 12B and its “return” address. Source network switch 12A provides, on data line 40, the size (or byte count) of the packet to be transferred and the buffer location 19A in which it is stored. The data of the data line is then written directly into the buffer request register.
In response to the buffer request message, the destination network switch 12B determines (step 52) the buffer location 19B in which the packet can be stored. It then writes (step 54) a “start of packet” message to the register 21a of the source network switch 12A which includes at least the location of the allocated buffer and the port numbers of the source and destination network switches. It can also include the byte count.
For example, in the DMA transfer embodiment of the present invention described hereinabove, the destination network switch 12B provides, on address line 42, the address of the “start of packet” register and the address of source network switch 12A. Destination network switch 12B provides, on data line 40, at least the following: the byte count of the packet to be transferred, the address 19B of the allocated buffer, the port number of the destination network switch 12B, and, for identification, the buffer location 19A in which the data is stored in the source network switch 12A and the port number of the source network switch 12A. As before, the data of the data line is then directly written into the start of packet register.
In response to receipt of the start of packet message in the start of packet register, the source network switch 12A writes (step 56) the packet of data to the allocated buffer location, followed by an “end of packet” message. Once the source network switch 12A has finished writing the end of packet message, it is free to send the next packet, beginning at step 50.
In the above described embodiment, the writing of the packet of data involves providing the address of the destination network switch 12B and the buffer location 19B on the address line 42 and the packet to be transferred on the data line 40. The transferred packet is then directly written into the allocated buffer location 19B. The end of packet message is written in a similar manner to the other messages. The address information includes the address of the end of packet register and the address of the destination network switch 12B. The data includes the port number of the destination network switch 12B, the buffer location 19B and the byte count.
When the packet arrives at the destination network switch 12B it directly writes (step 60) the packet into the allocated buffer location 19B, as per the address on the address line 42, until it receives the end of packet message for that allocated buffer location. The destination network switch 12B is now free to perform other operations until it receives a next buffer allocation request.
A comparison of the timing of
The source and network switches are free to perform other operations after they finish their writing operations.
It is also noted that, in the present invention, the source network switch 12A is free to operate on other packets once it has finished writing its packet, and its associated end of packet message, to the bus. The source network switch 12A does not need to ensure that the destination network switch 12B has successfully received the packet since, in the present invention, the address for the data (in the destination network switch) is known and is fully allocated prior to sending the packet; the packet would not be sent if there was no buffer location available for it. In the present invention, the time it takes for the destination network switch 12B to process the packet is not relevant to the operation of the source network switch 12A.
It will be appreciated that the data transfer mechanism described hereinabove can be implemented in any type of network switch or other communication device communicating along a bus, such as transferring data to a peripheral hard disk. For example, it can be implemented in an Ethernet switch, an asynchronous transfer mode (ATM) switch or a Token Ring switch. The present invention is may be implemented for peripheral component interface (PCI) busses or for any other bus.
It will further be appreciated by persons skilled in the art that the present invention is not limited to what has been particularly shown and described hereinabove. Rather the scope of the present invention is defined by the claims which follow:
Shemla, David, Waldman, Eyal, Solt, Yosi
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
4464713, | Aug 17 1981 | International Business Machines Corporation | Method and apparatus for converting addresses of a backing store having addressable data storage devices for accessing a cache attached to the backing store |
4663706, | Oct 28 1982 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Multiprocessor multisystem communications network |
4996663, | Feb 02 1988 | Telcordia Technologies, Inc | Methods and apparatus for decontaminating hash tables |
5032987, | Aug 04 1988 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | System with a plurality of hash tables each using different adaptive hashing functions |
5101348, | Jun 23 1988 | INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, NEW YORK 10504 A CORP OF NY | Method of reducing the amount of information included in topology database update messages in a data communications network |
5222064, | May 15 1990 | Mitsubishi Denki Kabushiki Kaisha | Bridge apparatus |
5274631, | Mar 11 1991 | Cisco Technology, Inc | Computer network switching system |
5287499, | Mar 22 1989 | TTI Inventions C LLC | Methods and apparatus for information storage and retrieval utilizing a method of hashing and different collision avoidance schemes depending upon clustering in the hash table |
5412805, | Aug 03 1992 | International Business Machines Corporation | Apparatus and method for efficiently allocating memory to reconstruct a data structure |
5440552, | Jan 21 1993 | NEC Corporation | ATM cell assembling/disassembling system |
5453982, | Aug 29 1994 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Packet control procedure between a host processor and a peripheral unit |
5521913, | Sep 12 1994 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Distributed processing ethernet switch with adaptive cut-through switching |
5579452, | Sep 29 1994 | Xerox Corporation | Method of managing memory allocation in a printing system |
5581757, | Nov 15 1990 | SIEMENS ENTERPRISE COMMUNICATIONS, INC | Partially replicated database for a network of store-and-forward message systems |
5623644, | Aug 25 1994 | Intel Corporation | Point-to-point phase-tolerant communication |
5632021, | Oct 25 1995 | Cisco Technology, Inc | Computer system with cascaded peripheral component interconnect (PCI) buses |
5633858, | Jul 28 1994 | Accton Technology Corporation | Method and apparatus used in hashing algorithm for reducing conflict probability |
5634138, | Jun 07 1995 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Burst broadcasting on a peripheral component interconnect bus |
5649141, | Jun 30 1994 | NEC Corporation | Multiprocessor system for locally managing address translation table |
5671357, | Jul 29 1994 | Motorola, Inc. | Method and system for minimizing redundant topology updates using a black-out timer |
5715395, | Sep 12 1994 | International Business Machines Corporation; IBM Corporation | Method and apparatus for reducing network resource location traffic in a network |
5724529, | Nov 22 1995 | Cirrus Logic, Inc. | Computer system with multiple PC card controllers and a method of controlling I/O transfers in the system |
5734824, | Feb 10 1993 | AVAYA Holdings Limited | Apparatus and method for discovering a topology for local area networks connected via transparent bridges |
5740468, | Jan 12 1987 | Fujitsu Limited | Data transferring buffer |
5754791, | Mar 25 1996 | RPX Corporation | Hierarchical address translation system for a network switch |
5761431, | Apr 12 1996 | Cirrus Logic, INC | Order persistent timer for controlling events at multiple processing stations |
5764996, | Nov 27 1995 | Hewlett Packard Enterprise Development LP | Method and apparatus for optimizing PCI interrupt binding and associated latency in extended/bridged PCI busses |
5781549, | Feb 23 1996 | ALLIED TELESIS, INC | Method and apparatus for switching data packets in a data network |
5784373, | Feb 23 1995 | PANASONIC ELECTRIC WORKS CO , LTD | Switching device for LAN |
5923660, | Jan 31 1996 | MARVELL ISRAEL M I S L LTD | Switching ethernet controller |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jul 18 2001 | Marvell International, Ltd. | (assignment on the face of the patent) | / | |||
Dec 15 2002 | GALILEO TECHNOLOGY LTD | Marvell Semiconductor Israel Ltd | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 014015 | /0846 |
Date | Maintenance Fee Events |
Jan 27 2011 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Mar 21 2009 | 4 years fee payment window open |
Sep 21 2009 | 6 months grace period start (w surcharge) |
Mar 21 2010 | patent expiry (for year 4) |
Mar 21 2012 | 2 years to revive unintentionally abandoned end. (for year 4) |
Mar 21 2013 | 8 years fee payment window open |
Sep 21 2013 | 6 months grace period start (w surcharge) |
Mar 21 2014 | patent expiry (for year 8) |
Mar 21 2016 | 2 years to revive unintentionally abandoned end. (for year 8) |
Mar 21 2017 | 12 years fee payment window open |
Sep 21 2017 | 6 months grace period start (w surcharge) |
Mar 21 2018 | patent expiry (for year 12) |
Mar 21 2020 | 2 years to revive unintentionally abandoned end. (for year 12) |