US20090228568A1 - Multicasting Computer Bus Switch - Google Patents

Multicasting Computer Bus Switch Download PDF

Info

Publication number
US20090228568A1
US20090228568A1 US12/468,198 US46819809A US2009228568A1 US 20090228568 A1 US20090228568 A1 US 20090228568A1 US 46819809 A US46819809 A US 46819809A US 2009228568 A1 US2009228568 A1 US 2009228568A1
Authority
US
United States
Prior art keywords
multicast
data unit
shared memory
address
address space
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US12/468,198
Inventor
Heath Stewart
Michael de la Garrigue
Chris Haywood
Thomas Reiner
Ken Wong
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Avago Technologies International Sales Pte Ltd
Original Assignee
TOPSIDE RESEARCH LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=34713824&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=US20090228568(A1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by TOPSIDE RESEARCH LLC filed Critical TOPSIDE RESEARCH LLC
Priority to US12/468,198 priority Critical patent/US20090228568A1/en
Assigned to TOPSIDE RESEARCH, LLC reassignment TOPSIDE RESEARCH, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DE LA GARRIGUE, MICHAEL, HAYWOOD, CHRIS, REINER, THOMAS, STEWART, HEATH, WONG, KEN
Publication of US20090228568A1 publication Critical patent/US20090228568A1/en
Assigned to INTERNET MACHINES MC, LLC reassignment INTERNET MACHINES MC, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: TOPSIDE RESEARCH, LLC
Assigned to AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. reassignment AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INTERNET MACHINES LLC
Priority to US15/010,343 priority patent/US9984027B2/en
Assigned to BANK OF AMERICA, N.A., AS COLLATERAL AGENT reassignment BANK OF AMERICA, N.A., AS COLLATERAL AGENT PATENT SECURITY AGREEMENT Assignors: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Assigned to AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. reassignment AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Assignors: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation

Definitions

  • PCI Express The communication protocol in a PCI Express system is identical to legacy PCI/X systems from the host software perspective.
  • each end point is assigned one or more memory and 10 address ranges.
  • Each end point is also assigned a bus/device/function number to uniquely identify it from other end points in the system. With these parameters set a system host can communicate with all end points in the system. In fact, all end points can communicate with all other end points within a system.
  • communication in PCI Express is limited to two end points, a source and a destination, at a time.
  • FIG. 1 is a block diagram of a switching environment.
  • FIG. 3 is a flow chart of a method of multicasting in a shared address space.
  • the switching environment includes a switch 110 , a number of end points 120 a, 120 b, 120 c, 120 d.
  • the switching environment 100 may be a point-to-point communications network.
  • switch means a system element that connects two or more ports to allow data units to be routed from one port to another, and the switch 110 is a switch.
  • the switch 110 includes a number of ports 112 a, 112 b, 112 c, 112 d, which are logical interfaces between the switch 110 and the end points 120 .
  • the switch 110 further includes a buffer 115 and logic 117 .
  • data unit it is meant a frame, cell, datagram, packet or other unit of information. In some embodiments, such as PCI, a data unit is unencapsulated. Data units may be stored in the buffer 115 .
  • buffer it is meant a dedicated or shared memory, a group or pipeline of registers, and/or other storage device or group of storage devices which can store data temporarily.
  • the buffer 115 may operate at a speed commensurate with the communication speed of the switching environment 100 . For example, it may be desirable to provide a dedicated memory for individual portions (as described below) and pipelined registers for multicast portions (as described below).
  • the logic 117 includes software and/or hardware for providing functionality and features described herein.
  • the logic 117 may include one or more of: logic arrays, memories, analog circuits, digital circuits, software, firmware, and processors such as microprocessors, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), programmable logic devices (PLDs) and programmable logic arrays (PLAs).
  • the hardware and firmware components of the logic 117 may include various specialized units, circuits, software and interfaces for providing the functionality and features described herein.
  • the end points 120 a, 120 b, 120 c, 120 d are logical devices which connect to and communicate with the switch 110 respectively through the ports 112 .
  • the end points 120 a, 120 b, 120 c, 120 d may share an address space, such as a memory address space or an I/O address space.
  • address space means the total range of addressable locations. If the shared address space is a memory address space, then data units are transmitted via memory mapped I/O to a destination address into the shared memory address space.
  • the address portions may have various characteristics.
  • the address portions may have respective sizes. The sizes may be fixed or variable.
  • the address portions may be defined by a base address, as well as by a size or end address.
  • the address portions may come to be associated with the end points 120 through an arbitrage process, through centralized assignment (e.g., by a host or the switch 110 ), otherwise or through a combination of these.
  • the group portion, the individual portion, the multicast portion and the broadcast portion for a given end point 120 need not be contiguous. To avoid errors, it may be desirable if the individual portions, the multicast portions and the broadcast portions do not overlap.
  • Data units may be directed to one or more of the end points 120 by addressing. That is, a destination address is associated with and may be included in the data units. The destination address determines which end point 120 should receive a given data unit. Thus, data units addressed to the individual portion for a given end point 120 should be received only by that end point 120 . Depending on the embodiment, the destination address may be the same as the base address or may be within the address portion.
  • Multicasting presents a somewhat more complex and flexible case than single-casting.
  • a multicast group is defined.
  • the multicast portions of the selected end points are associated, and logic is provided which causes data units sent to the multicast portion of one end point in the multicast group to be sent to the multicast portions of the other end points in the multicast group.
  • the data units addressed to the multicast portion for a given end point 120 should be received by all of the end points in the same multicast group.
  • one of the multicast portions may be selected as a “master” and the other multicast portions treated as ghosts. Accordingly, data units addressed to the master may be multicast to the group, but data units addressed to a ghost may be single-cast to the slave or treated as exceptions.
  • a given end point 120 may belong to multiple multicast groups and therefore have multiple multicast portions.
  • end point A 120 a may be in a first multicast group with end point B 120 b, in a second multicast group with end point C 120 c, and a third multicast group with end point B 120 b and end point C 120 c.
  • end point A might have three multicast portions.
  • the various multicast groups may also be grouped, to provide super-groupings.
  • first multicast group having end point A 120 a and end point B 120 b; a second multicast group having end point A 120 a and end point C 120 c; and a third multicast group having the first multicast group and the second multicast group, i.e., end point A 120 a, end point B 120 b and end point C 120 c.
  • single-casting and broadcasting are special cases of multicasting.
  • the multicast group includes only one end point, and has only the one end point's individual portion.
  • the multicast group includes all end points, and has the broadcast portions for all end points.
  • there is a single broadcast portion and logic is provided which causes data units which are sent to the broadcast portion to be sent to the individual portions of all end points 120 .
  • Each multicast portion may be unique. Alternatively, there may be a single multicast portion for all of the end points 120 in a multicast group.
  • An alternate way to support multicast would be to define multiple sub-portions within a master broadcast portion, each with its own vector defining which ports are to participate in the multicast transactions. Each sub-portion would define a multicast group and the associated vector would contain an enable bit for each port on the switch. If the enable bit for a port is set then the transaction is forwarded to that port. Any number of multicast portions could be defined by this mechanism.
  • the multicasting portions in a group may have nearly identical base addresses, and only differ from each other from a single or small number of bits or digits.
  • the sizes of the individual portions for the various end points 120 may differ.
  • the multicasting portions in a multicast group may have substantially equal or equal sizes. Having such equal-sized multicast portions may ensure communication integrity and efficient use of the shared address space 300 .
  • the end points 120 may be associated with respective ports 112 . Through this association, a given end point 120 may send data units to and receive data units from its associated port 112 . This association may be on a one-to-one basis. Because of these relationships, the ports 112 also have associations with the address portions of the end points 120 . Thus, the ports 112 may be said to have address portions (including respective individual portions, multicast portions and broadcast portions) within the address space 200 .
  • the switch 110 may receive a data unit, e.g., through port D 120 d (step 305 ).
  • the logic 117 causes the received data unit to be stored in the buffer 115 (step 310 ).
  • the data unit may be stored in whole or in part in the buffer 115 .
  • the logic 117 also determines the destination address of the data unit and selects the port 120 associated with the destination address (step 315 ). Step 315 may be performed, for example, using a lookup table, or through hard wiring addresses to ports.
  • the logic 117 forwards the data unit for transmission out the selected port 120 (step 320 ).
  • the logic 117 causes or allows the data unit to be removed from the buffer 115 (step 395 ).
  • step 395 is deferred. Instead, the data unit is forwarded for transmission out the other ports in the same group as the multicast portion encompassing the destination address. This may be achieved by replacing the destination address of the data unit with that of another (e.g., the next) multicast portion in the same group (step 330 ), and then forwarding the data unit for transmission out the port associated with the (revised) destination address (step 335 ). If there is more than one port in the multicast group (step 340 ), steps 330 and 335 may be continued until the data unit has been forwarded for transmission out all of the ports in the group. Then, the data unit may be removed from the buffer 115 (step 395 ).
  • the replacing step 330 may be performed in a number of ways.
  • the destination address may be revised by drawing addresses from a table of multicast portions.
  • the multicast portions in a multicast group may differ from one another according to a rule, and the rule used to determine the next destination address.
  • the multicast portions may be contiguous blocks of 0 ⁇ 10000000 spaced apart by 0 ⁇ 40000000.
  • Broadcasting may be handled similarly to multicasting.
  • a data unit has a destination address in the broadcast portion for a port, then the data unit is forwarded for transmission out the port, the destination address is revised as in step 330 and the data unit is forwarded as in step 335 . This may be continued until the data unit has been forwarded for transmission out all of the ports.
  • shared memory space may be considered as providing “real” ports which are associated with the individual portions, and “virtual” ports which are associated with the multicast portions and broadcast portions.
  • the virtual ports may be mapped to the real ports.
  • data units may be multicast simply by selecting an appropriate address, and neither the format of the data units nor the content of the data units need be changed to accommodate multicasting.
  • Intelligence in the switch recognizes that an address is a multicast address, and replicates and re-maps the address of the data units to the other ports in the multicast group.
  • broadcast support is enabled and ports outside of the multicast group are disabled. This could be done ahead of each multicast data unit. For example, to send a data unit from end point D 120 d to both end point A 120 a and end point C 120 c, end point D 110 d could send an instruction to the switch 110 to enable broadcast, but disable port B 112 b. End point D 120 d would then send the data unit which the switch 110 would route to port A 112 a and port C 112 c.
  • the logic 117 may include a capability to resolve these types of port exceptions. If a port becomes unavailable, for example, the logic 117 may ignore or discard those data units addressed to the individual portion, the multicast portion and/or the broadcast portion for that port. The logic 117 may multicast portion or a broadcast portion for an unavailable port, the logic may skip the unavailable port and continue the multicast or broadcast to other ports. Alternatively, the logic 117 may discontinue the multicast or broadcast altogether. The logic 117 may report the port exceptions and its response to the source of the data units and/or to other destinations.
  • the invention may be used to advantage in PCI Express switches and devices.
  • PCI Express-compliant video graphics systems and communications data backplanes may benefit from the invention. It is believed that the invention is compatible with the PCI Express memory write request transaction.
  • the invention may be compatible with other PCI Express transaction types and other standards.
  • the PCI Express standard provides for confirmation messages in some situations, which the standard refers to as non-posted transactions.
  • the system and methods described herein are compatible with both posted and non-posted transactions, though it may be desirable to consolidate or otherwise dispose of confirmation messages responsive to multicast and broadcast data units.

Abstract

There is disclosed apparatus and methods of multicasting in a shared address space. A shared memory address space may include two or more multicast portions. Each multicast portion may be associated with a respective end point and with at least one other multicast portion. Data units may be transmitted to at least some of the end points via memory-mapped I/O into the shared memory address space. When a destination address of a data unit is in a first multicast portion associated with a first end point, the data unit may be transmitted to the first end point, revised to specify a destination address in a second multicast portion associated with the first multicast portion, and transmitted to a second end point associated with the second multicast portion.

Description

    RELATED APPLICATION INFORMATION
  • This patent is a continuation of application Ser. No. 10/778,857 filed Feb. 13, 2004, and entitled “Multicasting In A Shared Address Space”, which in turn claims priority from application Ser. No. 60/534,586 filed Jan. 5, 2004, and entitled “PCI Express Switch with Broadcast and/or Multicast Capability.”
  • NOTICE OF COPYRIGHTS AND TRADE DRESS
  • A portion of the disclosure of this patent document contains material which is subject to copyright protection. This patent document may show and/or describe matter which is or may become trade dress of the owner. The copyright and trade dress owner has no objection to the facsimile reproduction by any one of the patent disclosure as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright and trade dress rights whatsoever.
  • BACKGROUND OF THE INVENTION
  • 1. Field Of The Invention
  • The present invention relates to multicasting in a shared address space.
  • 2. Description of the Related Art
  • The Peripheral Component Interconnect (“PCI”) standard was promulgated about ten years ago, and has since been updated a number of times. One update led to the PCI/X standard, and another, more recently, to PCI Express. The PCI standards are defined for chip-level interconnects, adapter cards and device drivers. The PCI standards are considered cost-effective, backwards compatible, scalable and forward-thinking.
  • PCI buses, whether they be PCI Express or previous PCI generations, provide an electrical, physical and logical interconnection for multiple peripheral components of microprocessor based systems. PCI Express systems differ substantially from their PCI and PCI/X predecessors in that all communication in the system is performed point-to-point. Unlike PCI/X systems in which two or more end points share the same electrical interface, PCI Express buses connect a maximum of two end points, one on each end of the bus. If a PCI Express bus must communicate with more than one end point, a switch, also known as a fan out device, is required to convert the single PCI Express source to multiple sources.
  • The communication protocol in a PCI Express system is identical to legacy PCI/X systems from the host software perspective. In all PCI systems, each end point is assigned one or more memory and 10 address ranges. Each end point is also assigned a bus/device/function number to uniquely identify it from other end points in the system. With these parameters set a system host can communicate with all end points in the system. In fact, all end points can communicate with all other end points within a system. However, communication in PCI Express is limited to two end points, a source and a destination, at a time.
  • The PCI Express standard specifies one limited form of broadcasting. That is, if the transaction is a TLP type Message (Msg) denoted by a Format and Type field of 0110011, the transaction is broadcast from the Root Complex to all end points. This broadcast is for system management and configuration and is not applicable to data transport transactions.
  • DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a block diagram of a switching environment.
  • FIG. 2 is a diagram of a shared address space.
  • FIG. 3 is a flow chart of a method of multicasting in a shared address space.
  • DETAILED DESCRIPTION OF THE INVENTION
  • Throughout this description, the embodiments and examples shown should be considered as exemplars, rather than limitations on the apparatus and methods of the present invention.
  • Description of Systems
  • Referring now to FIG. 1, there is shown a block diagram of a switching environment 100. The switching environment includes a switch 110, a number of end points 120 a, 120 b, 120 c, 120 d. The switching environment 100 may be a point-to-point communications network.
  • The term “switch” as used herein means a system element that connects two or more ports to allow data units to be routed from one port to another, and the switch 110 is a switch. The switch 110 includes a number of ports 112 a, 112 b, 112 c, 112 d, which are logical interfaces between the switch 110 and the end points 120. The switch 110 further includes a buffer 115 and logic 117.
  • By data unit, it is meant a frame, cell, datagram, packet or other unit of information. In some embodiments, such as PCI, a data unit is unencapsulated. Data units may be stored in the buffer 115. By buffer, it is meant a dedicated or shared memory, a group or pipeline of registers, and/or other storage device or group of storage devices which can store data temporarily. The buffer 115 may operate at a speed commensurate with the communication speed of the switching environment 100. For example, it may be desirable to provide a dedicated memory for individual portions (as described below) and pipelined registers for multicast portions (as described below).
  • The logic 117 includes software and/or hardware for providing functionality and features described herein. The logic 117 may include one or more of: logic arrays, memories, analog circuits, digital circuits, software, firmware, and processors such as microprocessors, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), programmable logic devices (PLDs) and programmable logic arrays (PLAs). The hardware and firmware components of the logic 117 may include various specialized units, circuits, software and interfaces for providing the functionality and features described herein. The invention may be embodied in whole or in part in software which operates in the switch 110 and may be in the form of firmware, an application program, an applet (e.g., a Java applet), a browser plug-in, a COM object, a dynamic linked library (DLL), a script, one or more subroutines, or an operating system component or service. The hardware and software of the invention and its functions may be distributed such that some components are performed by the switch 110 and others by other devices.
  • The end points 120 a, 120 b, 120 c, 120 d are logical devices which connect to and communicate with the switch 110 respectively through the ports 112. The end points 120 a, 120 b, 120 c, 120 d may share an address space, such as a memory address space or an I/O address space. The term “address space” means the total range of addressable locations. If the shared address space is a memory address space, then data units are transmitted via memory mapped I/O to a destination address into the shared memory address space.
  • Referring now to FIG. 2, there is shown a diagram of a shared address space 200. The shared address space 200 shows contiguous ranges, but the address spaces associated with the end points 120 may be non-contiguous and the term “portions” is meant to refer to contiguous and non-contiguous spaces. Data units may be written into or communicated into an address portion. Address portions must therefore be large enough to accommodate at least one data unit. For at least these reasons, a single point or address within an address space cannot be a portion. An address portion must occupy at least two slots within the address space, and in most embodiments will have a sizable number of slots specified as a range. In a switch conforming to the PCI Express standard, it is expected that the address portions in a 32-bit shared memory address space or shared I/O address space will be at least as large as the largest expected transaction, and comparable to those shown in FIG. 2.
  • Within the shared address space 200, there is a gross address portion 210 a associated with end point A 120 a. Within the gross address portion 210 a, there is an individual portion 220 a, a multicast portion 230 a and a broadcast portion 240 a. Likewise, end point B 120 b may have a gross address portion 210 b with an individual portion 220 b, a multicast portion 230 b and a broadcast portion 240 b. Likewise, end point C 120 c may have a gross address portion 210 c with an individual portion 220 c, a multicast portion 230 c and a broadcast portion 240 c. A gross address portion, an individual portion, a multicast portion and a broadcast portion may be associated with end point D 120 d.
  • The address space 200 may be allocated so as to provide the end points 120 with unique gross address portions. The individual portions may be unique within the shared address space with respect to one another, as may be the multicast portions and the broadcast portions.
  • The address portions (gross, individual, multicast and broadcast) may have various characteristics. The address portions may have respective sizes. The sizes may be fixed or variable. The address portions may be defined by a base address, as well as by a size or end address. The address portions may come to be associated with the end points 120 through an arbitrage process, through centralized assignment (e.g., by a host or the switch 110), otherwise or through a combination of these. The group portion, the individual portion, the multicast portion and the broadcast portion for a given end point 120 need not be contiguous. To avoid errors, it may be desirable if the individual portions, the multicast portions and the broadcast portions do not overlap.
  • Data units may be directed to one or more of the end points 120 by addressing. That is, a destination address is associated with and may be included in the data units. The destination address determines which end point 120 should receive a given data unit. Thus, data units addressed to the individual portion for a given end point 120 should be received only by that end point 120. Depending on the embodiment, the destination address may be the same as the base address or may be within the address portion.
  • Multicasting presents a somewhat more complex and flexible case than single-casting. To allow for multicasting to a group of selected end points, a multicast group is defined. Within the multicast group, the multicast portions of the selected end points are associated, and logic is provided which causes data units sent to the multicast portion of one end point in the multicast group to be sent to the multicast portions of the other end points in the multicast group. The data units addressed to the multicast portion for a given end point 120 should be received by all of the end points in the same multicast group. Alternatively, within a multicast group, one of the multicast portions may be selected as a “master” and the other multicast portions treated as ghosts. Accordingly, data units addressed to the master may be multicast to the group, but data units addressed to a ghost may be single-cast to the slave or treated as exceptions.
  • A given end point 120 may belong to multiple multicast groups and therefore have multiple multicast portions. For example, end point A 120 a may be in a first multicast group with end point B 120 b, in a second multicast group with end point C 120 c, and a third multicast group with end point B 120 b and end point C 120 c. In this example, end point A might have three multicast portions. The various multicast groups may also be grouped, to provide super-groupings. For example, there might be a first multicast group having end point A 120 a and end point B 120 b; a second multicast group having end point A 120 a and end point C 120 c; and a third multicast group having the first multicast group and the second multicast group, i.e., end point A 120 a, end point B 120 b and end point C 120 c.
  • It can be seen that single-casting and broadcasting are special cases of multicasting. In single-casting, the multicast group includes only one end point, and has only the one end point's individual portion. In contrast, in broadcasting, the multicast group includes all end points, and has the broadcast portions for all end points. In one alternative, there is a single broadcast portion, and logic is provided which causes data units which are sent to the broadcast portion to be sent to the individual portions of all end points 120.
  • Each multicast portion may be unique. Alternatively, there may be a single multicast portion for all of the end points 120 in a multicast group. An alternate way to support multicast would be to define multiple sub-portions within a master broadcast portion, each with its own vector defining which ports are to participate in the multicast transactions. Each sub-portion would define a multicast group and the associated vector would contain an enable bit for each port on the switch. If the enable bit for a port is set then the transaction is forwarded to that port. Any number of multicast portions could be defined by this mechanism.
  • The multicasting portions in a group may have nearly identical base addresses, and only differ from each other from a single or small number of bits or digits. The sizes of the individual portions for the various end points 120 may differ. In contrast, the multicasting portions in a multicast group may have substantially equal or equal sizes. Having such equal-sized multicast portions may ensure communication integrity and efficient use of the shared address space 300.
  • The end points 120 may be associated with respective ports 112. Through this association, a given end point 120 may send data units to and receive data units from its associated port 112. This association may be on a one-to-one basis. Because of these relationships, the ports 112 also have associations with the address portions of the end points 120. Thus, the ports 112 may be said to have address portions (including respective individual portions, multicast portions and broadcast portions) within the address space 200.
  • Description of Methods
  • Referring now to FIG. 3, there is shown a flow chart of a method of multicasting in a shared address space. The switch 110 may receive a data unit, e.g., through port D 120 d (step 305). The logic 117 causes the received data unit to be stored in the buffer 115 (step 310). The data unit may be stored in whole or in part in the buffer 115. For example, in streaming applications, it may be desirable to store a header in the buffer but switch the payload directly from the ingress port to the egress port in a cut-through manner. The logic 117 also determines the destination address of the data unit and selects the port 120 associated with the destination address (step 315). Step 315 may be performed, for example, using a lookup table, or through hard wiring addresses to ports. Next, the logic 117 forwards the data unit for transmission out the selected port 120 (step 320).
  • If the destination address is in the individual portion associated with one of the ports (step 325), then the logic 117 causes or allows the data unit to be removed from the buffer 115 (step 395).
  • If the destination address is in the multicast portion associated with one of the ports (step 325), then step 395 is deferred. Instead, the data unit is forwarded for transmission out the other ports in the same group as the multicast portion encompassing the destination address. This may be achieved by replacing the destination address of the data unit with that of another (e.g., the next) multicast portion in the same group (step 330), and then forwarding the data unit for transmission out the port associated with the (revised) destination address (step 335). If there is more than one port in the multicast group (step 340), steps 330 and 335 may be continued until the data unit has been forwarded for transmission out all of the ports in the group. Then, the data unit may be removed from the buffer 115 (step 395).
  • The replacing step 330 may be performed in a number of ways. For example, the destination address may be revised by drawing addresses from a table of multicast portions. Alternatively, the multicast portions in a multicast group may differ from one another according to a rule, and the rule used to determine the next destination address. For example, as shown in FIG. 2, the multicast portions may be contiguous blocks of 0×10000000 spaced apart by 0×40000000.
  • Broadcasting may be handled similarly to multicasting. Thus, if a data unit has a destination address in the broadcast portion for a port, then the data unit is forwarded for transmission out the port, the destination address is revised as in step 330 and the data unit is forwarded as in step 335. This may be continued until the data unit has been forwarded for transmission out all of the ports.
  • The use of shared memory space as described may be considered as providing “real” ports which are associated with the individual portions, and “virtual” ports which are associated with the multicast portions and broadcast portions. The virtual ports may be mapped to the real ports. Thus, data units may be multicast simply by selecting an appropriate address, and neither the format of the data units nor the content of the data units need be changed to accommodate multicasting. Intelligence in the switch recognizes that an address is a multicast address, and replicates and re-maps the address of the data units to the other ports in the multicast group.
  • Although broadcast has been treated as a special case of multicast, the converse is also possible. According to one alternative, broadcast support is enabled and ports outside of the multicast group are disabled. This could be done ahead of each multicast data unit. For example, to send a data unit from end point D 120 d to both end point A 120 a and end point C 120 c, end point D 110 d could send an instruction to the switch 110 to enable broadcast, but disable port B 112 b. End point D 120 d would then send the data unit which the switch 110 would route to port A 112 a and port C 112 c.
  • With regard to FIG. 2, additional and fewer steps may be taken, and the steps as shown may be combined or further refined to achieve the methods described herein.
  • There may be anticipated and unanticipated conditions in which one or more of the ports 112 is removed or otherwise becomes unavailable, either in a controlled or uncontrolled manner. To maintain desirable data flow, the logic 117 may include a capability to resolve these types of port exceptions. If a port becomes unavailable, for example, the logic 117 may ignore or discard those data units addressed to the individual portion, the multicast portion and/or the broadcast portion for that port. The logic 117 may multicast portion or a broadcast portion for an unavailable port, the logic may skip the unavailable port and continue the multicast or broadcast to other ports. Alternatively, the logic 117 may discontinue the multicast or broadcast altogether. The logic 117 may report the port exceptions and its response to the source of the data units and/or to other destinations.
  • The invention may be used to advantage in PCI Express switches and devices. For example, PCI Express-compliant video graphics systems and communications data backplanes may benefit from the invention. It is believed that the invention is compatible with the PCI Express memory write request transaction. The invention may be compatible with other PCI Express transaction types and other standards.
  • The PCI Express standard provides for confirmation messages in some situations, which the standard refers to as non-posted transactions. The system and methods described herein are compatible with both posted and non-posted transactions, though it may be desirable to consolidate or otherwise dispose of confirmation messages responsive to multicast and broadcast data units.
  • Although exemplary embodiments of the present invention have been shown and described, it will be apparent to those having ordinary skill in the art that a number of changes, modifications, or alterations to the invention as described herein may be made, none of which depart from the spirit of the present invention. All such changes, modifications and alterations should therefore be seen as within the scope of the present invention.

Claims (19)

1. A method of multicasting data units in a shared memory address space, comprising:
associating two or more multicast portions of the shared memory address space with respective end points, wherein each multicast portion is associated with at least one other multicast portion
transmitting data units to at least some of the end points via memory-mapped I/O into the shared memory address space
wherein, when a destination address of a data unit is in a first multicast portion associated with a first end point, the method further comprises:
transmitting the data unit to the first end point
revising the data unit to specify a destination address in a second multicast portion associated with the first multicast portion
transmitting the data unit to a second end point associated with the second multicast portion.
2. The method of multicasting data units of claim 1, wherein the method further comprises:
associating a plurality of individual portions of the shared memory address space with respective end points
when the destination address of a data unit is in an individual portion, transmitting the data unit to the respective end point.
3. The method of multicasting data units of claim 2, wherein the method further comprises:
associating each end point with a respective broadcast portion of the shared memory address space
when the destination address of a data unit is in a first broadcast portion, the method further comprises
(a) transmitting the data unit to an end point associated with the first broadcast portion
(b) revising the data unit to specify a destination address in another broadcast portion
(c) transmitting the data unit to an end point associated with the another broadcast portion
(d) repeating (b) and (c) until the data unit has been transmitted to every end point.
4. The method of multicasting data units of claim 3, wherein
each end point is connected to a respective port of a switch
data units are transmitted to the end points via the respective ports.
5. The method of multicasting data units of claim 3, wherein each of the multicast portions, the individual portions, and the broadcast portions is at least as large as a largest expected data unit.
6. A switch for multicasting in a shared memory address space, the switch comprising
a buffer to receive data units transmitted via memory mapped I/O to addresses in the shared memory address space
a plurality of ports associated with a corresponding plurality of end points, at least two of the plurality ports associated with a respective multicast address portion in the shared memory address space, wherein each of the multicast address portions is associated with at least one other multicast address portion
logic to
cause data units in the buffer having a destination address in a first multicast address portion associated with a first port to be forwarded for transmission out the first port without being removed from the buffer and then replace the destination address with an address in a second multicast address portion associated with the first multicast address portion
cause data units in the buffer having a destination address in the second multicast address portion to be forwarded for transmission out the second port.
7. The switch for multicasting in a shared memory address space of claim 6, wherein
each of the plurality of ports is associated with a respective individual address portion in the shared memory address space
the logic further to cause data units in the buffer having a destination address in an individual address portion to be forwarded for transmission out the respective port.
8. The switch for multicasting in a shared memory address space of claim 7, wherein
each of the plurality of ports is associated with a respective broadcast address portion in the shared memory address space
the logic further to cause data units in the buffer having a destination address in a broadcast address portion to be forwarded for transmission out all of the plurality of ports.
9. The switch for multicasting in a shared memory address space of claim 8, wherein each of the multicast address portions, the individual address portions, and the broadcast address portion is at least as large as a largest expected data unit.
10. A switch for multicasting in a shared memory address space, the switch comprising
a buffer to receive data units transmitted via memory mapped I/O to addresses in the shared memory address space
a plurality of ports associated with a corresponding plurality of end points, at least some of the ports associated with one or more multicast groups, wherein at least two ports are associated with each multicast group and each multicast group is associated with a respective multicast address portion of the shared memory address space
logic to cause data units in the buffer having a destination address in a first multicast address portion to be forwarded for transmission out all ports associated with a first multicast group associated with the first multicast address portion.
11. The switch for multicasting in a shared memory address space of claim 10, wherein
each of the plurality of ports is associated with a respective individual address portion in the shared memory address space
the logic further to cause data units in the buffer having a destination address in an individual address portion to be forwarded for transmission out the respective port.
12. The switch for multicasting in a shared memory address space of claim 11, wherein
each of the plurality of ports is associated with a broadcast address portion in the shared memory address space
the logic further to cause data units in the buffer having a destination address in the broadcast address portion to be forwarded for transmission out all of the plurality of ports.
13. The switch for multicasting in a shared memory address space of claim 12, wherein each of the multicast address portions, the individual address portions, and the broadcast address portion is at least as large as a largest expected data unit.
14. A method of multicasting in a shared memory address space using a switch having a plurality of ports associated with a corresponding plurality of end points, the method comprising:
associating a plurality of multicast portions of the shared memory address space with respective ports; wherein each multicast portion is associated with at least one other multicast portion
receiving data units transmitted via memory-mapped I/O to destination addresses in the shared memory address space
wherein, when a destination address of a data unit is in a first multicast portion associated with a first port, the method further comprises:
forwarding the data unit for transmission out the first port
revising the data unit to specify a destination address in a second multicast portion associated with the first multicast portion
forwarding the data unit for transmission out a second port associated with the second multicast portion.
15. The method of multicasting data units of claim 14, wherein the method further comprises:
associating a plurality of individual portions of the shared memory address space with respective ports
when the destination address of a data unit is in an individual portion, forwarding the data unit for transmission out a respective port.
16. The method of multicasting data units of claim 15, wherein the method further comprises:
associating each port with a respective broadcast portion of the shared memory address space
when the destination address of a data unit is in a first broadcast portion, the method further comprises
(a) forwarding the data unit for transmission out a first port associated with the first broadcast portion
(b) revising the data unit to specify a destination address in another broadcast portion
(c) forwarding the data unit for transmission out another port associated with the another broadcast portion
(d) repeating (b) and (c) until the data unit has been forwarded for transmission out all of the plurality of ports.
17. The method of multicasting data units of claim 16, wherein each of the multicast portions, the individual portions, and the broadcast portions is at least as large as a largest expected data unit.
18. A method of multicasting in a shared memory address space using a switch having a plurality of ports associated with a corresponding plurality of end points, the method comprising:
associating a plurality of individual portions of the shared memory address space with respective ports
associating at least one multicast portion of the shared memory address space with two or more ports
receiving data units addressed to destination addresses in the shared memory address space, wherein
when a destination address of a data unit is in an individual portion, forwarding the data unit for transmission out the respective port
when a destination address of a data unit is in a multicast portion, forwarding the data unit for transmission out each of the ports associated with multicast portion
when a destination address of a data unit is in a broadcast portion of the shared memory address space, forwarding the data unit for transmission out all of the plurality of ports.
19. The method of multicasting data units of claim 16, wherein each of the multicast portions, the individual portions, and the broadcast portion is at least as large as a largest expected data unit.
US12/468,198 2004-01-05 2009-05-19 Multicasting Computer Bus Switch Abandoned US20090228568A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12/468,198 US20090228568A1 (en) 2004-01-05 2009-05-19 Multicasting Computer Bus Switch
US15/010,343 US9984027B2 (en) 2004-01-05 2016-01-29 Multicasting computer bus switch

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US53458604P 2004-01-05 2004-01-05
US10/778,857 US7539190B2 (en) 2004-01-05 2004-02-13 Multicasting in a shared address space
US12/468,198 US20090228568A1 (en) 2004-01-05 2009-05-19 Multicasting Computer Bus Switch

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/778,857 Continuation US7539190B2 (en) 2004-01-05 2004-02-13 Multicasting in a shared address space

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/010,343 Continuation US9984027B2 (en) 2004-01-05 2016-01-29 Multicasting computer bus switch

Publications (1)

Publication Number Publication Date
US20090228568A1 true US20090228568A1 (en) 2009-09-10

Family

ID=34713824

Family Applications (3)

Application Number Title Priority Date Filing Date
US10/778,857 Active 2026-05-26 US7539190B2 (en) 2004-01-05 2004-02-13 Multicasting in a shared address space
US12/468,198 Abandoned US20090228568A1 (en) 2004-01-05 2009-05-19 Multicasting Computer Bus Switch
US15/010,343 Expired - Fee Related US9984027B2 (en) 2004-01-05 2016-01-29 Multicasting computer bus switch

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/778,857 Active 2026-05-26 US7539190B2 (en) 2004-01-05 2004-02-13 Multicasting in a shared address space

Family Applications After (1)

Application Number Title Priority Date Filing Date
US15/010,343 Expired - Fee Related US9984027B2 (en) 2004-01-05 2016-01-29 Multicasting computer bus switch

Country Status (1)

Country Link
US (3) US7539190B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7933283B1 (en) * 2008-03-04 2011-04-26 Cortina Systems, Inc. Shared memory management
US11023402B2 (en) 2019-07-02 2021-06-01 National Instruments Corporation Switch pruning in a switch fabric bus chassis

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7539190B2 (en) * 2004-01-05 2009-05-26 Topside Research, Llc Multicasting in a shared address space
US20050163107A1 (en) * 2004-01-27 2005-07-28 Gunturi Ravi P. Packet processing pipeline
US7376122B2 (en) * 2004-02-23 2008-05-20 Microsoft Corporation System and method for link quality source routing
US20060092928A1 (en) * 2004-10-15 2006-05-04 Dell Products L.P. System and method for providing a shareable input/output device in a PCI express environment
EP1750396A1 (en) * 2005-08-03 2007-02-07 Siemens Aktiengesellschaft Method and communication device for transmitting packet-oriented information
US7701487B2 (en) * 2005-08-26 2010-04-20 Sony Corporation Multicast control of motion capture sequences
US7710993B1 (en) * 2007-10-31 2010-05-04 Extreme Networks, Inc. Pseudo wire processing in a packet forwarding device
EP2220849B1 (en) * 2007-12-12 2019-03-13 Nokia Technologies Oy Address assignment protocol
US8146094B2 (en) * 2008-02-01 2012-03-27 International Business Machines Corporation Guaranteeing delivery of multi-packet GSM messages
US8239879B2 (en) * 2008-02-01 2012-08-07 International Business Machines Corporation Notification by task of completion of GSM operations at target node
US8484307B2 (en) * 2008-02-01 2013-07-09 International Business Machines Corporation Host fabric interface (HFI) to perform global shared memory (GSM) operations
US8255913B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Notification to task of completion of GSM operations by initiator node
US8200910B2 (en) * 2008-02-01 2012-06-12 International Business Machines Corporation Generating and issuing global shared memory operations via a send FIFO
US7966454B2 (en) * 2008-02-01 2011-06-21 International Business Machines Corporation Issuing global shared memory operations via direct cache injection to a host fabric interface
US8214604B2 (en) * 2008-02-01 2012-07-03 International Business Machines Corporation Mechanisms to order global shared memory operations
US8275947B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Mechanism to prevent illegal access to task address space by unauthorized tasks
CN102104488B (en) * 2009-12-22 2013-03-13 华为技术有限公司 Multicast message processing method and device
US20130028266A1 (en) * 2011-07-29 2013-01-31 Ziegler Michael L Response messages based on pending requests
US9292462B2 (en) 2013-05-22 2016-03-22 International Business Machines Corporation Broadcast for a distributed switch network
US9992034B2 (en) 2014-03-13 2018-06-05 Hewlett Packard Enterprise Development Lp Component multicast protocol
US10270604B2 (en) * 2017-06-28 2019-04-23 Juniper Networks, Inc. PIM join entropy
US10541934B1 (en) * 2017-12-11 2020-01-21 Xilinx, Inc . Systems and methods for frame buffering and arbitration in a network
JP2019164486A (en) * 2018-03-19 2019-09-26 東芝メモリ株式会社 Information processing system, information processing method and memory system

Citations (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4394725A (en) * 1973-11-30 1983-07-19 Compagnie Honeywell Bull Apparatus and method for transferring information units between processes in a multiprocessing system
US4704606A (en) * 1984-11-13 1987-11-03 American Telephone And Telegraph Company And At&T Information Systems Inc. Variable length packet switching system
US4740954A (en) * 1986-12-31 1988-04-26 Bell Communications Research, Inc. Multicast routing algorithm
US4958299A (en) * 1988-06-13 1990-09-18 Fuji Xerox Co., Ltd. Control device for use with a drawing output unit
US5287346A (en) * 1991-10-16 1994-02-15 Carnegie Mellon University Packet switch
US5301302A (en) * 1988-02-01 1994-04-05 International Business Machines Corporation Memory mapping and special write detection in a system and method for simulating a CPU processor
US5404461A (en) * 1991-03-29 1995-04-04 International Business Machines Corp. Broadcast/switching apparatus for executing broadcast/multi-cast transfers over unbuffered asynchronous switching networks
US5539737A (en) * 1994-12-30 1996-07-23 Advanced Micro Devices, Inc. Programmable disrupt of multicast packets for secure networks
US5555543A (en) * 1995-01-03 1996-09-10 International Business Machines Corporation Crossbar switch apparatus and protocol
US5583861A (en) * 1994-04-28 1996-12-10 Integrated Telecom Technology ATM switching element and method having independently accessible cell memories
US5610914A (en) * 1994-05-24 1997-03-11 Nec Corporation Shared buffer memory switch for an ATM switching system and its broadcasting control method
US5617421A (en) * 1994-06-17 1997-04-01 Cisco Systems, Inc. Extended domain computer network using standard links
US5649149A (en) * 1994-08-01 1997-07-15 Cypress Semiconductor Corporation Integrated content addressable memory array with processing logical and a host computer interface
US5659713A (en) * 1992-04-24 1997-08-19 Digital Equipment Corporation Memory stream buffer with variable-size prefetch depending on memory interleaving configuration
US5784003A (en) * 1996-03-25 1998-07-21 I-Cube, Inc. Network switch with broadcast support
US5831980A (en) * 1996-09-13 1998-11-03 Lsi Logic Corporation Shared memory fabric architecture for very high speed ATM switches
US5841874A (en) * 1996-08-13 1998-11-24 Motorola, Inc. Ternary CAM memory architecture and methodology
US5860085A (en) * 1994-08-01 1999-01-12 Cypress Semiconductor Corporation Instruction set for a content addressable memory array with read/write circuits and an interface register logic block
US5860080A (en) * 1996-03-19 1999-01-12 Apple Computer, Inc. Multicasting system for selecting a group of memory devices for operation
US5898689A (en) * 1992-12-04 1999-04-27 Lucent Technologies Inc. Packet network interface
US5938765A (en) * 1997-08-29 1999-08-17 Sequent Computer Systems, Inc. System and method for initializing a multinode multiprocessor computer system
US5961626A (en) * 1997-10-10 1999-10-05 Motorola, Inc. Method and processing interface for transferring data between host systems and a packetized processing system
US5982749A (en) * 1996-03-07 1999-11-09 Lsi Logic Corporation ATM communication system interconnect/termination unit
US6122674A (en) * 1997-07-10 2000-09-19 International Business Machines Corporation Bi-directional network adapter for interfacing local node of shared memory parallel processing system to multi-stage switching network for communications with remote node
US6138185A (en) * 1998-10-29 2000-10-24 Mcdata Corporation High performance crossbar switch
US6172980B1 (en) * 1997-09-11 2001-01-09 3Com Corporation Multiple protocol support
US6188689B1 (en) * 1996-10-04 2001-02-13 Kabushiki Kaisha Toshiba Network node and method of frame transfer
US6212566B1 (en) * 1996-01-26 2001-04-03 Imec Interprocess communication protocol system modem
US6272567B1 (en) * 1998-11-24 2001-08-07 Nexabit Networks, Inc. System for interposing a multi-port internally cached DRAM in a control path for temporarily storing multicast start of packet data until such can be passed
US6295584B1 (en) * 1997-08-29 2001-09-25 International Business Machines Corporation Multiprocessor computer system with memory map translation
US6301255B1 (en) * 1996-12-21 2001-10-09 Samsung Electronics Co., Ltd. ATM switching system for multicast data communication
US6310875B1 (en) * 1998-03-30 2001-10-30 Nortel Networks Limited Method and apparatus for port memory multicast common memory switches
US20010037435A1 (en) * 2000-05-31 2001-11-01 Van Doren Stephen R. Distributed address mapping and routing table mechanism that supports flexible configuration and partitioning in a modular switch-based, shared-memory multiprocessor computer system
US6346946B1 (en) * 1998-10-23 2002-02-12 Micron Technology, Inc. Graphics controller embedded in a core logic unit
US20020099855A1 (en) * 1999-08-27 2002-07-25 Brian Mitchell Bass Network processor, memory organization and methods
US6442674B1 (en) * 1998-12-30 2002-08-27 Intel Corporation Method and system for bypassing a fill buffer located along a first instruction path
US20020122386A1 (en) * 2001-03-05 2002-09-05 International Business Machines Corporation High speed network processor
US20020143682A1 (en) * 2000-11-29 2002-10-03 Bergmann Michael D. Method of ascertaining an efficient frontier for tax-sensitive investors
US6477623B2 (en) * 1998-10-23 2002-11-05 Micron Technology, Inc. Method for providing graphics controller embedded in a core logic unit
US20020165947A1 (en) * 2000-09-25 2002-11-07 Crossbeam Systems, Inc. Network application apparatus
US6487171B1 (en) * 1999-05-19 2002-11-26 3Com Corporation Crossbar switching matrix with broadcast buffering
US6493347B2 (en) * 1996-12-16 2002-12-10 Juniper Networks, Inc. Memory organization in a switching device
US6510138B1 (en) * 1999-02-25 2003-01-21 Fairchild Semiconductor Corporation Network switch with head of line input buffer queue clearing
US6535963B1 (en) * 1999-06-30 2003-03-18 Cisco Technology, Inc. Memory apparatus and method for multicast devices
US20030069939A1 (en) * 2001-10-04 2003-04-10 Russell Lance W. Packet processing in shared memory multi-computer systems
US6557053B1 (en) * 2000-01-04 2003-04-29 International Business Machines Corporation Queue manager for a buffer
US20030088694A1 (en) * 2001-11-02 2003-05-08 Internet Machines Corporation Multicasting method and switch
US6574194B1 (en) * 1998-12-18 2003-06-03 Cypress Semiconductor Corporation Architecture of data communications switching system and associated method
US20040030857A1 (en) * 2002-07-31 2004-02-12 Brocade Communications Systems, Inc. Hardware-based translating virtualization switch
US6714555B1 (en) * 1997-06-04 2004-03-30 Roke Manor Research Limited Broadband telecommunications switch
US6728258B1 (en) * 1995-11-15 2004-04-27 Hitachi, Ltd. Multi-processor system and its network
US6804741B2 (en) * 2002-01-16 2004-10-12 Hewlett-Packard Development Company, L.P. Coherent memory mapping tables for host I/O bridge
US20040230735A1 (en) * 2003-05-15 2004-11-18 Moll Laurent R. Peripheral bus switch having virtual peripheral bus and configurable host bridge
US20050041680A1 (en) * 2003-08-18 2005-02-24 Keiji Tanaka L2 switch and control method therof
US20050071521A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation Location-based allocation of memory resources in memory mapped input/output fabric
US20050076145A1 (en) * 2003-10-07 2005-04-07 Microsoft Corporation Supporting point-to-point intracluster communications between replicated cluster nodes
US6982976B2 (en) * 2000-08-11 2006-01-03 Texas Instruments Incorporated Datapipe routing bridge
US7007071B1 (en) * 2000-07-24 2006-02-28 Mosaid Technologies, Inc. Method and apparatus for reducing pool starvation in a shared memory switch
US7023850B2 (en) * 2000-12-27 2006-04-04 Electronics And Telecommunications Research Institute Multicasting apparatus and method in shared memory switch
US7058053B1 (en) * 2001-10-12 2006-06-06 Avago Technologies General Ip Pte. Ltd. Method and system to process a multicast request pertaining to a packet received at an interconnect device
US7069392B2 (en) * 2003-06-12 2006-06-27 Newisys, Inc. Methods and apparatus for extended packet communications between multiprocessor clusters
US20070053356A1 (en) * 2003-10-30 2007-03-08 Venkat Konda Nonblocking and deterministic multirate multicast packet scheduling
US7249080B1 (en) * 1999-10-25 2007-07-24 Upstream Technologies Llc Investment advice systems and methods
US7302691B2 (en) * 2002-05-10 2007-11-27 Sonics, Incorporated Scalable low bandwidth multicast handling in mixed core systems
US7373408B2 (en) * 2003-02-08 2008-05-13 Hewlett-Packard Development Company, L.P. Network communication apparatus and method
US7428598B2 (en) * 2003-11-20 2008-09-23 International Business Machines Corporation Infiniband multicast operation in an LPAR environment
US7496690B2 (en) * 2003-10-09 2009-02-24 Intel Corporation Method, system, and program for managing memory for data transmission through a network
US7505476B2 (en) * 2003-10-27 2009-03-17 Fujitsu Limited Packet transfer path control apparatus and control program therefor
US7539190B2 (en) * 2004-01-05 2009-05-26 Topside Research, Llc Multicasting in a shared address space
US7606978B2 (en) * 2003-04-11 2009-10-20 Sun Microsystems, Inc. Multi-node computer system implementing global access state dependent transactions
US7668773B1 (en) * 2001-12-21 2010-02-23 Placemark Investments, Inc. Portfolio management system
US7698455B2 (en) * 2003-08-01 2010-04-13 Foundry Networks, Inc. Method for providing scalable multicast service in a virtual private LAN service
US7733878B2 (en) * 2002-07-08 2010-06-08 Brooktree Broadband Holdings, Inc. System and method for packet transmission from fragmented buffer

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030188062A1 (en) * 2002-03-28 2003-10-02 Luse Paul E. Device resource allocation
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
EP1367493A1 (en) * 2002-05-30 2003-12-03 STMicroelectronics Limited Prefetch buffer

Patent Citations (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4394725A (en) * 1973-11-30 1983-07-19 Compagnie Honeywell Bull Apparatus and method for transferring information units between processes in a multiprocessing system
US4704606A (en) * 1984-11-13 1987-11-03 American Telephone And Telegraph Company And At&T Information Systems Inc. Variable length packet switching system
US4740954A (en) * 1986-12-31 1988-04-26 Bell Communications Research, Inc. Multicast routing algorithm
US5301302A (en) * 1988-02-01 1994-04-05 International Business Machines Corporation Memory mapping and special write detection in a system and method for simulating a CPU processor
US4958299A (en) * 1988-06-13 1990-09-18 Fuji Xerox Co., Ltd. Control device for use with a drawing output unit
US5404461A (en) * 1991-03-29 1995-04-04 International Business Machines Corp. Broadcast/switching apparatus for executing broadcast/multi-cast transfers over unbuffered asynchronous switching networks
US5287346A (en) * 1991-10-16 1994-02-15 Carnegie Mellon University Packet switch
US5659713A (en) * 1992-04-24 1997-08-19 Digital Equipment Corporation Memory stream buffer with variable-size prefetch depending on memory interleaving configuration
US5898689A (en) * 1992-12-04 1999-04-27 Lucent Technologies Inc. Packet network interface
US5583861A (en) * 1994-04-28 1996-12-10 Integrated Telecom Technology ATM switching element and method having independently accessible cell memories
US5610914A (en) * 1994-05-24 1997-03-11 Nec Corporation Shared buffer memory switch for an ATM switching system and its broadcasting control method
US5617421A (en) * 1994-06-17 1997-04-01 Cisco Systems, Inc. Extended domain computer network using standard links
US5649149A (en) * 1994-08-01 1997-07-15 Cypress Semiconductor Corporation Integrated content addressable memory array with processing logical and a host computer interface
US5860085A (en) * 1994-08-01 1999-01-12 Cypress Semiconductor Corporation Instruction set for a content addressable memory array with read/write circuits and an interface register logic block
US5539737A (en) * 1994-12-30 1996-07-23 Advanced Micro Devices, Inc. Programmable disrupt of multicast packets for secure networks
US5555543A (en) * 1995-01-03 1996-09-10 International Business Machines Corporation Crossbar switch apparatus and protocol
US6728258B1 (en) * 1995-11-15 2004-04-27 Hitachi, Ltd. Multi-processor system and its network
US6212566B1 (en) * 1996-01-26 2001-04-03 Imec Interprocess communication protocol system modem
US5982749A (en) * 1996-03-07 1999-11-09 Lsi Logic Corporation ATM communication system interconnect/termination unit
US5860080A (en) * 1996-03-19 1999-01-12 Apple Computer, Inc. Multicasting system for selecting a group of memory devices for operation
US5784003A (en) * 1996-03-25 1998-07-21 I-Cube, Inc. Network switch with broadcast support
US5841874A (en) * 1996-08-13 1998-11-24 Motorola, Inc. Ternary CAM memory architecture and methodology
US5831980A (en) * 1996-09-13 1998-11-03 Lsi Logic Corporation Shared memory fabric architecture for very high speed ATM switches
US6188689B1 (en) * 1996-10-04 2001-02-13 Kabushiki Kaisha Toshiba Network node and method of frame transfer
US6493347B2 (en) * 1996-12-16 2002-12-10 Juniper Networks, Inc. Memory organization in a switching device
US6301255B1 (en) * 1996-12-21 2001-10-09 Samsung Electronics Co., Ltd. ATM switching system for multicast data communication
US6714555B1 (en) * 1997-06-04 2004-03-30 Roke Manor Research Limited Broadband telecommunications switch
US6122674A (en) * 1997-07-10 2000-09-19 International Business Machines Corporation Bi-directional network adapter for interfacing local node of shared memory parallel processing system to multi-stage switching network for communications with remote node
US5938765A (en) * 1997-08-29 1999-08-17 Sequent Computer Systems, Inc. System and method for initializing a multinode multiprocessor computer system
US6295584B1 (en) * 1997-08-29 2001-09-25 International Business Machines Corporation Multiprocessor computer system with memory map translation
US6172980B1 (en) * 1997-09-11 2001-01-09 3Com Corporation Multiple protocol support
US5961626A (en) * 1997-10-10 1999-10-05 Motorola, Inc. Method and processing interface for transferring data between host systems and a packetized processing system
US6310875B1 (en) * 1998-03-30 2001-10-30 Nortel Networks Limited Method and apparatus for port memory multicast common memory switches
US6346946B1 (en) * 1998-10-23 2002-02-12 Micron Technology, Inc. Graphics controller embedded in a core logic unit
US6477623B2 (en) * 1998-10-23 2002-11-05 Micron Technology, Inc. Method for providing graphics controller embedded in a core logic unit
US6138185A (en) * 1998-10-29 2000-10-24 Mcdata Corporation High performance crossbar switch
US6272567B1 (en) * 1998-11-24 2001-08-07 Nexabit Networks, Inc. System for interposing a multi-port internally cached DRAM in a control path for temporarily storing multicast start of packet data until such can be passed
US6574194B1 (en) * 1998-12-18 2003-06-03 Cypress Semiconductor Corporation Architecture of data communications switching system and associated method
US6442674B1 (en) * 1998-12-30 2002-08-27 Intel Corporation Method and system for bypassing a fill buffer located along a first instruction path
US6510138B1 (en) * 1999-02-25 2003-01-21 Fairchild Semiconductor Corporation Network switch with head of line input buffer queue clearing
US6487171B1 (en) * 1999-05-19 2002-11-26 3Com Corporation Crossbar switching matrix with broadcast buffering
US6535963B1 (en) * 1999-06-30 2003-03-18 Cisco Technology, Inc. Memory apparatus and method for multicast devices
US20020099855A1 (en) * 1999-08-27 2002-07-25 Brian Mitchell Bass Network processor, memory organization and methods
US7249080B1 (en) * 1999-10-25 2007-07-24 Upstream Technologies Llc Investment advice systems and methods
US6557053B1 (en) * 2000-01-04 2003-04-29 International Business Machines Corporation Queue manager for a buffer
US20010037435A1 (en) * 2000-05-31 2001-11-01 Van Doren Stephen R. Distributed address mapping and routing table mechanism that supports flexible configuration and partitioning in a modular switch-based, shared-memory multiprocessor computer system
US7007071B1 (en) * 2000-07-24 2006-02-28 Mosaid Technologies, Inc. Method and apparatus for reducing pool starvation in a shared memory switch
US6982976B2 (en) * 2000-08-11 2006-01-03 Texas Instruments Incorporated Datapipe routing bridge
US20020165947A1 (en) * 2000-09-25 2002-11-07 Crossbeam Systems, Inc. Network application apparatus
US20020143682A1 (en) * 2000-11-29 2002-10-03 Bergmann Michael D. Method of ascertaining an efficient frontier for tax-sensitive investors
US7023850B2 (en) * 2000-12-27 2006-04-04 Electronics And Telecommunications Research Institute Multicasting apparatus and method in shared memory switch
US20020122386A1 (en) * 2001-03-05 2002-09-05 International Business Machines Corporation High speed network processor
US6920485B2 (en) * 2001-10-04 2005-07-19 Hewlett-Packard Development Company, L.P. Packet processing in shared memory multi-computer systems
US20030069939A1 (en) * 2001-10-04 2003-04-10 Russell Lance W. Packet processing in shared memory multi-computer systems
US7058053B1 (en) * 2001-10-12 2006-06-06 Avago Technologies General Ip Pte. Ltd. Method and system to process a multicast request pertaining to a packet received at an interconnect device
US20030088694A1 (en) * 2001-11-02 2003-05-08 Internet Machines Corporation Multicasting method and switch
US7668773B1 (en) * 2001-12-21 2010-02-23 Placemark Investments, Inc. Portfolio management system
US6804741B2 (en) * 2002-01-16 2004-10-12 Hewlett-Packard Development Company, L.P. Coherent memory mapping tables for host I/O bridge
US7302691B2 (en) * 2002-05-10 2007-11-27 Sonics, Incorporated Scalable low bandwidth multicast handling in mixed core systems
US7733878B2 (en) * 2002-07-08 2010-06-08 Brooktree Broadband Holdings, Inc. System and method for packet transmission from fragmented buffer
US20040030857A1 (en) * 2002-07-31 2004-02-12 Brocade Communications Systems, Inc. Hardware-based translating virtualization switch
US7373408B2 (en) * 2003-02-08 2008-05-13 Hewlett-Packard Development Company, L.P. Network communication apparatus and method
US7606978B2 (en) * 2003-04-11 2009-10-20 Sun Microsystems, Inc. Multi-node computer system implementing global access state dependent transactions
US20040230735A1 (en) * 2003-05-15 2004-11-18 Moll Laurent R. Peripheral bus switch having virtual peripheral bus and configurable host bridge
US7069392B2 (en) * 2003-06-12 2006-06-27 Newisys, Inc. Methods and apparatus for extended packet communications between multiprocessor clusters
US7698455B2 (en) * 2003-08-01 2010-04-13 Foundry Networks, Inc. Method for providing scalable multicast service in a virtual private LAN service
US20050041680A1 (en) * 2003-08-18 2005-02-24 Keiji Tanaka L2 switch and control method therof
US20050071521A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation Location-based allocation of memory resources in memory mapped input/output fabric
US20050076145A1 (en) * 2003-10-07 2005-04-07 Microsoft Corporation Supporting point-to-point intracluster communications between replicated cluster nodes
US7496690B2 (en) * 2003-10-09 2009-02-24 Intel Corporation Method, system, and program for managing memory for data transmission through a network
US7505476B2 (en) * 2003-10-27 2009-03-17 Fujitsu Limited Packet transfer path control apparatus and control program therefor
US20070053356A1 (en) * 2003-10-30 2007-03-08 Venkat Konda Nonblocking and deterministic multirate multicast packet scheduling
US7428598B2 (en) * 2003-11-20 2008-09-23 International Business Machines Corporation Infiniband multicast operation in an LPAR environment
US7539190B2 (en) * 2004-01-05 2009-05-26 Topside Research, Llc Multicasting in a shared address space

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7933283B1 (en) * 2008-03-04 2011-04-26 Cortina Systems, Inc. Shared memory management
US11023402B2 (en) 2019-07-02 2021-06-01 National Instruments Corporation Switch pruning in a switch fabric bus chassis
US11704269B2 (en) 2019-07-02 2023-07-18 National Instruments Corporation Switch pruning in a switch fabric bus chassis

Also Published As

Publication number Publication date
US20050147114A1 (en) 2005-07-07
US7539190B2 (en) 2009-05-26
US20160147693A1 (en) 2016-05-26
US9984027B2 (en) 2018-05-29

Similar Documents

Publication Publication Date Title
US9984027B2 (en) Multicasting computer bus switch
US7814259B2 (en) PCI express switch with backwards compatibility
US8346884B2 (en) Method and apparatus for a shared I/O network interface controller
US7899050B2 (en) Low latency multicast for infiniband® host channel adapters
USRE44151E1 (en) Switching ethernet controller
JP4044523B2 (en) Communication transaction type between agents in a computer system using a packet header having an extension type / extension length field
US20090077268A1 (en) Low Latency Multicast for Infiniband Host Channel Adapters
US7826450B2 (en) Multicast/broadcast extension to a point-to-point unicast-only packet switch system
US20090245257A1 (en) Network On Chip
GB2455347A (en) Control path I/O virtualisation
US20070150699A1 (en) Firm partitioning in a system with a point-to-point interconnect
US9330054B2 (en) System and method for assigning a message
US7218638B2 (en) Switch operation scheduling mechanism with concurrent connection and queue scheduling
US7454552B2 (en) Switch with transparent and non-transparent ports
US7313146B2 (en) Transparent data format within host device supporting differing transaction types
US8069273B2 (en) Processing module
US20050083839A1 (en) Encoding-based multicast packet duplication control suitable for VLAN systems
US20040081158A1 (en) Centralized switching fabric scheduler supporting simultaneous updates
JP3661249B2 (en) Multiprocessor system
WO2015015652A1 (en) Server system equipped with server-to-server communication mechanism and method for communication between multiple servers

Legal Events

Date Code Title Description
AS Assignment

Owner name: TOPSIDE RESEARCH, LLC, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:STEWART, HEATH;DE LA GARRIGUE, MICHAEL;HAYWOOD, CHRIS;AND OTHERS;REEL/FRAME:022706/0162

Effective date: 20040213

AS Assignment

Owner name: INTERNET MACHINES MC, LLC, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:TOPSIDE RESEARCH, LLC;REEL/FRAME:026024/0814

Effective date: 20110317

AS Assignment

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTERNET MACHINES LLC;REEL/FRAME:036100/0113

Effective date: 20150414

AS Assignment

Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH CAROLINA

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:037808/0001

Effective date: 20160201

Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:037808/0001

Effective date: 20160201

STCB Information on status: application discontinuation

Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION

AS Assignment

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD., SINGAPORE

Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;REEL/FRAME:041710/0001

Effective date: 20170119

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD

Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;REEL/FRAME:041710/0001

Effective date: 20170119