A switch for an ATM communication system having an ATM network on which ATM cells travel, source nodes connected to the ATM network which produce ATM cells and send them onto the ATM network, and destination nodes connected to the ATM network which receive ATM cells from the ATM network comprising:
- input ports through which cells are received from the ATM network;
- output ports through which cells are transmitted to the ATM network, and a switching mechanism connected to the input ports and output ports which transfer cells from the input ports to output ports, said switching mechanism having a unicast sending mechanism for sending unicast cells to an output port and having a multicast sending mechanism for sending multicast cells to a desired output port, said multicast sending mechanism separate and different from said unicast sending mechanism, the unicast sending mechanism includes a unicast queue mechanism for holding unicast cells until they are to be transmitted out an output port and the multicast sending mechanism includes a multicast queue mechanism for holding multicast cells until they are to be sent out output ports, the unicast queue mechanism includes a unicast queue associated with each output port, the multicast queue mechanism includes a multicast queue associated with each output port;
- a shared memory buffer in which each queue is formed;
- a mechanism for placing a unicast cell with the unicast sending mechanism and a multicast cell with a multicast sending mechanism, the placing mechanism includes a cell block manager which allocates block memory segments from the shared memory buffer, the placing mechanism includes a multicast block manager which manages memory allocated to the multicast queues, said multicast block manager connected to the cell block manager, said placing mechanism in communication with the input ports and the unicast sending mechanism and the multicast sending mechanism;
- and
- a controller and a memory connected to the controller, said unicast sending mechanism including a unicast processing mechanism disposed in the memory which the controller uses to process unicast cells in the unicast queue mechanism and send the unicast cells out the desired output port, said multicast sending mechanism including a multicast processing mechanism disposed in the memory which the controller uses to process multicast cells in the multicast queue mechanism and send the multicast cells out the desired output ports, each unicast queue connected to the placing mechanism and to the controller, each unicast queue holds a data structure for tracking the unicast cells until they are to be sent out the associated output ports by the controller, each unicast queue has a first unicast sub-queue which holds unicast cells for a first service class and a second unicast sub-queue which holds unicast cells for a second service class, each unicast sub-queue of each unicast queue includes a linked list of shared memory blocks, each multicast queue holds a data structure for tracking the multicast cells until they are to be sent out the associated output ports by the controller, each multicast queue has a first multicast sub-queue which holds multicast cells for a first service class and a second multicast sub-queue which holds multicast cells for a second service class, each multicast sub-queue of each multicast queue includes an address FIFO built from a linked list consisting of blocks within a shared address memory.