WO1997036242A1 - Network switch with arbitration system - Google Patents

Network switch with arbitration system Download PDF

Info

Publication number
WO1997036242A1
WO1997036242A1 PCT/US1997/004250 US9704250W WO9736242A1 WO 1997036242 A1 WO1997036242 A1 WO 1997036242A1 US 9704250 W US9704250 W US 9704250W WO 9736242 A1 WO9736242 A1 WO 9736242A1
Authority
WO
WIPO (PCT)
Prior art keywords
output
input
port
token
ports
Prior art date
Application number
PCT/US1997/004250
Other languages
French (fr)
Inventor
Ger-Chih Chou
Kent Blair Dahlgren
Wen-Jai Hsieh
Original Assignee
I-Cube, Inc.
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
Application filed by I-Cube, Inc. filed Critical I-Cube, Inc.
Priority to JP53446497A priority Critical patent/JP3852953B2/en
Priority to DE69722448T priority patent/DE69722448T2/en
Priority to EP97915136A priority patent/EP0954792B1/en
Publication of WO1997036242A1 publication Critical patent/WO1997036242A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/427Loop networks with decentralised control
    • H04L12/433Loop networks with decentralised control with asynchronous transmission, e.g. token ring, register insertion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S370/00Multiplex communications
    • Y10S370/908Local area network
    • Y10S370/909Token ring

Definitions

  • the present invention relates in general to a switch for routing data between network stations, and in particular to a switch including a system for arbitrating competing demands for routing paths through the switch.
  • Networks transfer data between computers or other types of network stations.
  • 10BASE-T Ethernet systems use sets of twisted pair conductors in a star network topology to connect network stations to a central hub or switch.
  • a 10BASE-T hub is simply a repeater receiving a data packet from any one station and rebroadcasting it to all other stations.
  • a header in the data packet indicates the intended destination station for the packet and each network station looks at the packet header to determine if it should accept or ignore the packet.
  • One disadvantage to a hub repeater is that the twisted pair that carries data packets to each network statior. not only must convey packets directed to that station but packets directed to all other stations as well. Thus only one network station can transmit a packet at any given time.
  • a network switch routes an incoming packet only to its destination station so that each network station receives only the packet traffic directed to it and many network switches handle multiple packet transmission concurrently.
  • a network switch includes input ports for receiving packets from the network stations, output ports for transmitting packets to the network stations and a switching mechanism selectively routing each incoming packet from an input port to the appropriate output port.
  • the input port typically stores an incoming packet, determines the destination output port from the routing data included in the packet header, and then arbitrates for a switch connection between the input port and the destination output port. When the connection is established, the input port sends the packet to the output port via the. switch.
  • each input port sends its connection request to a central arbiter.
  • the central arbiter monitors the busy status of the output ports and determines an order in which pending requests are granted when an output port becomes idle.
  • the arbiter grants a request it sends control data to the switching mechanism causing it to make the desired connection between input and output ports and then sends an acknowledgment to the input port that made the request.
  • the input port then forwards the data to the output port via the switching mechanism.
  • the central arbiter assigns a priority level to each input and/or output port and always requests to the highest priority ports. Many central arbiters rotate input and output port priority so as to fairly distribute connection rights over time.
  • the arbiter includes an NxN array of arbitration cells, one for each possible connection of the crosspoint switch.
  • Each input port corresponds to one row of cells and supplies a separate request signal to each cell of the row.
  • Each output port corresponds to one column of cells and supplies a separate busy signal to each cell of the column.
  • the cells are ranked according to priority.
  • That arbitration cell grants a request when not otherwise inhibited from doing so by a higher priority cell.
  • Priority is periodically shifted from cell to cell using token passing rings to provide equitable allocation of connection rights to both input and output ports.
  • One problem with this system is that the arbitration system grows with square of the number N of network stations and becomes difficult to implement.
  • U.S. Patent No. 4,814.762 issued March 21, 1989 to Franaszek describes a network switch employing a crosspoint switch wherein the arbitration system is decentralized.
  • input and output ports communicate directly with one another through a "delta" network.
  • an input port receives a packet it sends a request to the output port via the delta network.
  • an output port receives a connection request it returns a response to the input port via the delta network.
  • the response gives the input port a time when it can make the requested connection between input and output ports.
  • the input port sends control data to the crosspoint switch establishing the connection.
  • the delta network is formed by several stages of routing nodes.
  • Each routing node receives a request from one of two input ports or from one of two nodes of a preceding stage. On receiving a request a node looks at a destination port address included in the request and then forwards the request to one of two nodes of a next stage or to one of two output ports. Thus a request works its way between input and output ports by hopping from node to node. Responses travel from output port to input port through the delta network in a similar manner.
  • the delta network inherently arbitrates competing requests for the same output node on a first come, first-served basis. In this system the size of the arbiter also increases more rapidly than the number of network stations .
  • U.S. Patent No. 5,430,442 issued July 4, 1995 to Kaiser et al discloses a partially distributed arbitration system for a network switch having several ports interconnected by a ⁇ crosspoint switch. In this system arbitration for the right to connect is handled by a central arbiter but control of the crosspoint switch is distributed among the ports .
  • the ports and the arbiter are interconnected by a common arbitration bus.
  • Each input port receiving a packet from a network source sends a connection request over the arbitration bus to the central arbiter.
  • the arbiter decides the order in which to grant connection requests and signals the input port via the bus when its request is granted. When a connection request is granted, the input port directly queries the destination output port via the bus to determine if the destination output port is busy.
  • the receiving port sends control data to the crosspoint switch to establish the connection.
  • the arbitration system does not grow appreciably as the number of network stations increases, but the bandwidth of the arbitration bus limits the speed with which the system can handle requests. What is needed is a network switch having a compact arbitration system which can quickly and equitably respond to connection requests from large numbers of network stations.
  • a local area network switch in accordance with the present invention switch includes a set of input ports for receiving and storing incoming packets from corresponding network stations, a set of output ports for forwarding packets to corresponding network stations, and a switching system for selectively routing packets from the input ports to the oitpuc ports.
  • the input and output ports and the switching system are interconnected by a global communication bus.
  • the output ports are also interconnected to form an output token passing ring while the input ports are interconnected to form an input token passing ring.
  • an idle output port receives an output token, it signals the input ports via the global bus to start an input token passing cycle.
  • the output token holder also sends its identification code (ID) to the switching system via the global bus.
  • ID identification code
  • any input port storing a packet destined for the outpu token holder may establish a connection to the output token holder if it is the first such input port to receive the input token.
  • the input port establishes the connection by sending its ID to the switching system via the global bus.
  • the switching system having received the IDs of the input and output ports establishes the connection there between.
  • the token passing rings operate quickly and can service a large number of ports efficiently. Since information passes through the global bus only to start token passing cycles and to send port IDs to the switching system when a connection is to be made, bandwidth limitations of the global bus do not appreciably affect arbitration time.
  • FIGS. 1 and 2 illustrate a local area network (LAN) switch 10 in accordance with the present invention for routing serial data packets between up to 24 network stations,
  • LAN local area network
  • FIG. 3 illustrates input buffer RBO of FIG. 2 in more detailed block diagram form
  • FIG. 4 illustrates output buffer TBO of FIG. 2 in more detailed block diagram form
  • FIG. 5 is state diagram illustrating a synchronization process carried out by input sequencer 74 of FIG. 4, FIG. 6 illustrates memory controller 24 of FIG. 2 in more detailed block diagram, FIG. 7 illustrates the address mapping system 26 of FIG. 1 and address translation unit 44 of FIG. 3 in more detailed block diagram form,
  • FIG. 8 is a flow chart illustrating operation of state machine 100 of FIG. 7,
  • FIG. 9 is a flow chart illustrating operation of state machine 95 of FIG. 7,
  • FIG. 10 illustrates an output polling version of output arbiter RAO of FIG. 2 in more detailed block diagram form
  • FIG. 11 is a flow chart illustrating operation of state machine 120 of FIG. 10,
  • FIG. 12 illustrates an output polling version of input arbiter RAO of FIG. 2 in more detailed block diagram form
  • FIG. 13 is a flow chart illustrating operation of scate machine 170
  • FIG. 14 illustrates an output polling version of arbitration sequencer 22 of FIG. 2 in more detailed block diagram form
  • FIG. 15 is a flow chart illustration operation of state machine 210 of FIG. 14,
  • FIG. 16 illustrates an event driven version of arbitration sequencer 22 of FIG. 2 in more detailed block diagram form
  • FIG. 17 is a flow chart detailing the logic of state machine 400 of FIG. 16,
  • FIG. 18 illustrates an event driven version of output arbiter TD0 of FIG. 2 in more detailed block diagram form
  • FIG. 19 is a flow chart illustrating operation of state machine 500 of FIG. 18, FIG. 20 illustrates an event driven version of output arbiter RAO of FIG. 2 in more detailed block diagram form, and
  • FIGS. 21 and 22 are flow charts depicting operations of state machine 600 of FIG. 20.
  • FIG IA illustrates a local area network (LAN) switch 10 in accordance with the present invention for routing serial data packets between up tp 24 network stations.
  • Switch 10 receives data packets from -network stations via serial input buses RX0- RX23 and forwards then to the network stations via serial output buses TX0-TX23.
  • Switch 10 includes a set of input ports RP0-RP23 each receiving and storing incoming packets arriving on a corresponding one of input buses RX0-RX23 and a set of output ports TP0-TP23, each storing packets for transmission outward on a corresponding one of output buses TX0-TX23.
  • a switching system 11 routes packets stored in the input ports RP0-RP23 to the appropriate one of output ports TP0-TP23.
  • the switching system 11 includes a set of 24 "vertical” conductors V0-V23, each connected to a corresponding one of input ports RP0-RP23 and a set of 24 "horizontal” conductors H0-H23, each connected to a corresponding one of output ports TP0-TP23.
  • switching system 11 can make and break connections between any pair of horizontal and vertical conductors, thereby making or breaking a packet routing path from any input port to any output port.
  • the input ports RP0-RP23 access an address mapping system 26 through a bus MAPPING_BUS.
  • the mapping system 26 relates the network address of each network station to the particular output buffer TP0-TP23 to which the network station is connected.
  • an input port for example port RPO
  • receives and stores a packet it sends the network address of the destination station included in the packet to the address mapping system 26 via the mapping bus.
  • the address mapping system returns the identification code (ID) of the output port, for example TP1, to receive the packet.
  • ID identification code
  • the input and output ports arbitrate for connections.
  • the output ports TP0-TP23 are interconnected to form an output token passing ring.
  • An "output token" is a signal (OUTPUT_TOKEN) that each output port transmits to a next output port of the ring.
  • One output port “passes” the output token to the next by asserting its output OUTPUT_TOKEN signal.
  • the input ports RPO- RP23 are similarly interconnected to from an input token passing ring.
  • An arbitration sequencer 22 starts an output token passing cycle by transmitting an "output seed" to all output ports TPO- TP23 via the global bus.
  • the output seed is a cede identifying a selected one of the output ports as the output seed port.
  • the output seed port receives the output seed, it determines whether it is idle or busy.
  • An output port considers itself “busy” when it is currently receiving a data packet and considers itself “idle” when it not currently receiving a data packet. If the output seed port is idle it "wins" the right to seek a connection.
  • the winning output port starts an input token passing cycle by sending an "input seed" to all input ports RP0-RP23 via the global bus identifying one of them as the input seed port.
  • the winning output port also sends its own ID to all input ports and to switching system 11 via the global bus.
  • the input seed port When the input seed port receives the input seed it determines whether it is currently storing a data packet to be transmitted to the output seed port. If so, the input seed port, having "won" the arbitration, sends its ID code via the global bus to the output ports, the switching system 11 and sequencer 22. Sequencer 22 upon receiving the winning input port ID transmits a write enable (WE) signal to switching system 11. Switching system 11, having received the ID'S of winning input and output ports responds to the WE signal by establishing a connection between them. The winning output port, having received the ID of the winning input port, henceforth considers itself busy.
  • WE write enable
  • arbitration sequencer 22 After pulsing the WE signal, arbitration sequencer 22 forwards the winning input port ID via a response line (RESP) of the global bus to all input ports RP0-RP23. This tells the winning input port that it may begin transmitting the data packet through switching system 11 to the winning output port.
  • RESP response line
  • the ⁇ input seed port passes the input token to the next input port. If that input port has a packet to send to the seed output port, it wins the arbitration and transmits its ID via the global bus to all output ports, to switching system 11 and to sequencer 22 in order to establish a connection to the output seed port. Otherwise the input token holder passes the input token to the next input port.
  • the input token passing cycle continues until an input port wins the arbitration or until the input token makes its way around the token passing ring and returns to the input seed port. In that case, the input seed port transmits an end of cycle ("EOC") code to the output seed port telling it that no input port has a packet to be sent. On receipt of the EOC code, or upon receipt of a valid input port ID indicating a connection has been made, the output token holder passes the output token to the next output port.
  • EOC end of cycle
  • the output token holder If the output token holder is busy, it immediately passes the output token to a next output port of the ring without starting an input token passing cycle. If the output token holder is idle, it initiates a new input token passing cycle by sending its own ID and an input seed to all input ports RP0-RP23. The input ports, starting with the input seed port, then pass the input token as described above until an input port wins the arbitration or until the input seed port sends an EOC code back to the output token holder. In either case the output token holder passes the output token to the next output port which thereupon initiates yet another input token passing cycle. The process continues with each output port in turn receiving the output token and, if idle, starting an input token passing cycle in an attempt to find an input port with a packet destined for the output port.
  • the output token When the output token returns to the output seed port, it sends an EOC code to the arbitration sequencer 22 indicating that the output token passing cycle has come to an end.
  • the arbitration sequencer 22 thereafter starts a next token passing cycle by sending another output seed to the output ports TPO- TP23.
  • the output seed port has the highest priority for obtaining a connection during an output token passing cycle because it has the first chance to initiate an input token passing cycle.
  • arbitration sequencer 22 starts each successive output token passing cycle by choosing a next successive one of the output ports TP0-TP23 as the output seed.
  • each output port chooses a next successive one of the input ports RPO- RP23 as the input seed port each time the output port starts an input token passing cycle.
  • FIG. 2 illustrates the local area network switch 10 of
  • FIG. 1 in more detailed block diagram form.
  • Input port RPO of FIG. 1 includes an input arbiter RAO and an input buffer RBO as illustrated in FIG. 2.
  • the input buffer RBO receives and stores packets arriving on line TXO and later forwards them on line VO .
  • Output port TPO of FIG. 1 includes an output arbiter TAO and an output buffer TBO shown in FIG. 2.
  • Output buffer TBO receives and stores packets arriving on line HO and forwards them to a network station via line RXO .
  • Input ports RP1-RP23 and output ports TP1-TP23 have similar buffer and arbiter components. All input arbiters RA0-RA23 form the input token passing ring and all output arbiters TA0-TA23 form the output token passing ring.
  • the global bus interconnects all arbiters with the arbitration sequencer 22.
  • Switching system 11 of FIG. 1 includes a crosspoint switch 12, a random access memory (RAM) 14 and a memory controller 24.
  • Crosspoint switch 12 includes an array of CMOS pass transistors 20, each having source and drain terminals connected to one of horizontal lines H0-H23 and to one of vertical lines V0-V23.
  • RAM 14 stores 24 24-bit words and ⁇ supplies a separate control signal CONT to the gate of each transistor 20. When a CONT signal is asserted, it turns on a pass transistor 20, thereby establishing a signal path between one horizontal and one vertical line. The state of each CONT signal supplied to a transistor 20 of the Jth row of transistors 20 is determined by a corresponding bit of a Jth data word stored in RAM 14.
  • memory controller 24 Upon receipt of the write enable (WE) pulse from sequencer 22, memory controller 24 writes a selected 24-bit word into RAM 14 by placing the word on bit lines B0-B23 and pulses one of word lines W0-W23.
  • controller 24 sets all but one of bits B0-B23 to a logical "0" and sets the remaining bit to a logical "1".
  • Controller 24 chooses the bit to be set to a "1" in response to the winning input port ID appearing on the global bus and selects the word line W0-W23 to be pulsed in response to the winning output port ID appearing on the global bus.
  • the bit set to a "1" arrives in RAM 14, it asserts the CONT signal supplied to a corresponding transistor 20.
  • That transistor then makes the connection between horizontal and vertical lines leading to the winning input and output ports.
  • an input buffer for example RBO
  • receives and stores a packet arriving on RX0 it checks the address data ir. the packet and communicates with mapping system 26 via the mapping bus to determine which output buffer, for example TBI should receive the packet.
  • Input buffer RBO then transmits a connection request to input arbiter RAO via line V0, the connection request identifying the output buffer TBI.
  • the input ports encode inaction requests and data packets so that the input arbiter can distinguish between them and can tell when they begin and end.
  • input arbiter RAO detects a connection request on line V0, it saves the output buffer (TBI) ID included in the connection request and thereafter arbitrates for a connection to output buffer T31.
  • TBI output buffer
  • the 24 output arbiters TA0-TA23 monitor data packets traveling on corresponding horizontal conductors H0-H23 to output buffers TB0-TB23.
  • output arbiter TA1 sets an internal "IDLE 1 ' flag to indicate that port TP1 i ⁇ now busy receiving a data packet.
  • each output arbiter TA0-TA23 consults its IDLE flag during the arbitration process to determine whether its port TP0-TP23 is idle and therefore available for a new connection.
  • FIG. 3 illustrates input buffer RBO of FIG. 2 in more detailed block diagram form.
  • Input buffers RB1-RB23 are similar.
  • a network station transmits a data packet to input buffer RBO in serial form via bus RXO using Ethernet 10BASE-T protocol.
  • the data packet formatted as a standard Ethernet protocol data unit, is of variable length and includes the fields illustrated in Table I:
  • the PREAMBLE and START fields are fixed data patterns that are the same for all packets.
  • the DEST field indicates the network address of the station to receive the packet.
  • the SRC field indicates the network address of the station that transmitted the packet.
  • the TYPE/LEN fields may indicate either the packet type or the length of the DATA field, depending on the protocol being employed.
  • the DATA field holds the packet payload data and may be from 46 to 1500 bytes long.
  • the CRC field is a frame check field used by the receiving station to determine whether the packet has been corrupted in transmission. Referring to FIG.. 3, a convention 10BASE-T network interface circuit 30 receives the incoming packet arriving on input bus RXO . A carrier signal conveyed on the bus indicates the beginning and end of packet transmission.
  • the network interface circuit 30 pulses a LOAD signal to store the bit in a 4-bit serial-in/parallel out shift register 31.
  • interface circuit 30 asserts a shift-in (SI) signal to a first-in/first-out (FIFO) buffer 32, causing the FIFO buffer to store the nibble.
  • SI shift-in
  • FIFO first-in/first-out
  • network interface circuit 30 transmits a START signal to a buffer state machine 34.
  • Buffer state machine 34 controls the storage of data packets in a buffer memory, random access memory (RAM) 36.
  • RAM random access memory
  • buffer state machine 34 On receipt of the START signal, buffer state machine 34 begins pulsing a shift-out signal ( SO) , each pulse causing FIFO buffer 32 to shift a 4-bit data nibble out to RAM 36 via a 4-bit data bus 61.
  • SO shift-out signal
  • RAM 36 controlled by address and read/write control signals generated by buffer state machine 34, stores the packet data nibbles at sequential addresses.
  • Network interface circuit 30 counts the nibbles of each packet it loads into FIFO buffer 32 and also counts pulses of the SO signal produced by buffer state machine 34 to determine how many nibbles of the state machine 34 has stored in RAM 36. After interface circuit 30 shifts the last nibble of a packet into FIFO buffer 32, it continues to count the number of nibbles the buffer state machine 34 shifts out of buffer 32 and sends an END signal to state machine 34 to tell it that it has acquired the last nibble of the packet. Buffer state machine 34 also counts nibbles of incoming packet data as they are stored in RAM 36. After receiving the END signal from network interface 30, state machine 34 stores its count in RAM 36 as a LENGTH field in a header portion of the packet. When the packet is later forwarded to an output buffer, the output buffer determines the length of the packet from the LENGTH field.
  • buffer state machine 34 determines from its nibble count when the data packet's source and destination fields (SRC, DEST) appear in FIFO buffer 32. At that point buffer state machine 34 generates a translate signal (TRANS) causing a pair of registers 40 and 42 to store the SRC and DEST fields.
  • the TRANS signal also signals an address translation circuit 44 that new address data is available in registers 40 and 42.
  • the address translation circuit 44 sends an interrupt signal to central address mapping system 26 of FIG. 2.
  • the address mapping system maintains a table for translating network addresses into switch input/output port IDs. On receiving the interrupt, the address mapping system obtains the SRC and DEST fields from translation circuit 44 as well as the ID of output buffer TBO.
  • the address mapping system then updates its mapping table to map the SRC field address to output buffer TBO.
  • the mapping system uses this mapping later when any other network station sends a packet to the source station connected to buffer TBO.
  • the address mapping system also translates the DEST field acquired from address translation circuit 44 into the ID of the output buffer to which the destination station is connected and returns the output port ID to translation circuit 44.
  • Translation circuit 44 then delivers the output port ID (PORT_ID) to a FIFO buffer 45. The longest stored
  • PORT_ID in FIFO buffer 45 is supplied to a c onnection req ⁇ e ⁇ t generator circuit 46.
  • FIFO buffer 45 asses an EMPTY signal to a transmit state machine 50 when is empty and de-asserts it when it stores a port ID.
  • Transmit sequencer 50 controls the ⁇ flow of connection requests and data packets outward from input buffer RBO on conductor V0 to input arbiter RAO and switch 12 of FIG. 2.
  • Sequencer 50 receives a GRANTED signal from a response buffer 64.
  • Response buffer 64 monitors tne RESP line of the global bus from arbitration sequencer 22 of FIG. 2. As mentioned above, whenever sequencer 22 of FIG.
  • response buffer 63 detects a response conveying the ID of input port RPO, it pulses the GRANTED signal.
  • the GRANTED signal pulse tells sequencer 50 that the last connection request made by buffer RBO has been granted-and that it is free to issue a next connection request.
  • sequencer 50 After receiving a GRANTED pulse (or after system start- up) sequencer 50 monitors an EMPTY signal asserted by FIFO buffer 45 when buffer 45 contains no port ID'S. When it sees that the EMPTY signal is de-asserted, indicating a request is pending, sequencer 45 begins pulsing a SEND signal causing the request generator 46 to produce a connection request REQ in the form of a sequence of 5-bit of data values which pass through multiplexer 52 to a shift register 56. The connection request references the output port ID longest stored in FIFO buffer 45.
  • Shift register 56 converts the sequence of 5-bit data values to a serial data stream and forwards it on line VO to the input arbiter TAO of FIG. 2. Sequencer 50 then pulses a shift-out signal to FIFO buffer 45 telling it to shift out the next port ID, if any, to request generator 46.
  • state machine 50 When state machine 50 receives a GRANTED signal pulse it transmits a NEXT_PACKET signal to buffer state machine 34 telling it it may begin forwarding a next packet. Buffer state machine 34 then switches a multiplexer 60 to receive a hardwired 5-bit code "J" . Sequencer 34 then shifts the "J" code output of multiplexer 60 into a FIFO buffer 62, switches multiplexer 60 to select a hardwired "K” code and shifts the "K” code output of multiplexer 60 into a FIFO buffer 62. (As explained below, the JK code sequence marks the beginning of a data packet transmission on output line V0.
  • state machine 34 switches multiplexer 60 to select the 5-bit data output of an encoder circuit 58 which converts the 4-bit data appearing on data input/output bus 61 of RAM 36 to 5-bit "4B5B" encoded form. Sequencer 34 then begins sequentially reading 4-bit nibbles of the data packet out of RAM 36. As encoder 58 converts the nibbles to 5-bit 4B5B encoded form, multiplexer 60 passes the 5- bit result to a FIFO buffer 52. Sequencer 34 strobes a shift in (SI) signal causing FIFO buffer 62 to load the 5-bit data values. FIFO buffer 62 produces a FULL signal telling state machine 34 when the buffer is full.
  • SI shift in
  • FIFO buffer 62 The longest stored nibble in FIFO buffer 62 appears at an input of multiplexer 52 controlled by the transmit sequencer 50.
  • buffer 62 de-asserts an EMPTY signal supplied to sequencer 50.
  • sequencer 50 When sequencer 50 is not currently sending a connection request, it switches multiplexer 52 to deliver the 5- bit output of FIFO buffer 62 to shift register 56.
  • State machine 50 signals shift register 56 to convert the 5-bit value to serial form and to forward the data on line V0 to switch 12 of FIG. 2. Switch 12 routes the data to the appropriate output buffer.
  • buffer state machine 34 As buffer state machine 34 forwards packet data out of RAM 36 to FIFO buffer 62 it counts the nibbles sent and compares the count to the known length of the packet. After it forwards the last nibble of the packet through encoder 58 to FIFO buffer 62, state machine 34 switches multiplexer 60 to select and forward to FIFO buffer 62 a 5-bit hardwired "T" code. This code, which marks the end of the packet, passes through in FIFO buffer 62, multiplexer 52 and serializer 56 and travels out on line V0 at the end of the data packet. When the last bit of nibble of a packet departs FIFO buffer 62, it signals state machine 50 that it is empty. State machine 50 then waits for another GRANTED signal pulse indicating that a next connection request has been " ⁇ established. It then signals state machine 34 with a
  • NEXT_PACKET signal pulse indicating that it may send out another packet.
  • transmit sequencer 50 whenever transmit sequencer 50 is ready to send a connection request out on line VO, it simply halts any current flow of packet data outward on line VO, forwards the connection request out on VO, and then resumes the flow of packet data.
  • a connection request may appear in the middle of a data packet flowing from input buffer RBO to one of output buffers TB1-TB23.
  • the receiving output buffer recognizes and removes any connection requests from the data stream before forwarding them to the destination network station. Connection requests are thus forwarded to the input arbiter RAO while input buffer PBO is still busy forwarding a data packet so that the arbiter can immediately begin seeking the connection request as soon as possible after the packet currently being forwarded leaves the input buffer.
  • Connection requests and data packets are transmitted on the same output line VO primarily to reduce the number of inter- module links since the input buffer and input arbiter portions of the input port may be implemented on separate integrated circuits.
  • the input arbiter in any case monitors the VO line to ascertain when a packet transmission ends.
  • Connection requests and data packets are "4B5B" encoded to enable the input and output arbiters and the output buffers to determine when connection requests and data packets begin and end. Consistent with the ANSI standard X379(FDDI) "4B5B" encoding system, encoder 54 converts each incoming 4-bit nibble into a 5-bit output value as illustrated in Table II.
  • the CR code is used to identify the start of a connection request.
  • the Q, H, R and S codes are ignored when they appear in a 4B5B encoded data stream.
  • the T code indicates the end of a 4B5B encoded data packet.
  • the I, J, K and V codes are used to synchronize transmission and receipt of 4B5B encoded data streams in the manner described below.
  • Output Buffer FIG. 4 illustrates output buffer TBO of FIG. 2 in more detailed block diagram form. Output buffers TB1-TB23 are similar. Output buffer TBO includes a 10-bit serial-in, parallel-out shift register 70 clocked by the system clock signal CLK for receiving and storing data bits appearing on the HO line.
  • a set of decoders 72 signal an input sequencer 74 when first five data bits stored in shift register 70 represent the I,V, T or CR 4B5B codes of Table II above or when all ten bits in shift register 70 represent the J and K codes in succession.
  • a 4B5B decoder 76 converts the second stored 5-bit value into the corresponding 4-bit nibble and passes it via a multiplexer 78 to the input of a FIFO buffer 80.
  • FIG. 5 is state diagram illustrating a synchronization process carried out by input sequencer 74 of FIG. 4.
  • Input sequencer 74 begins in an "out-of-synchronization" state 81. Sequencer 74 remains in state 81 until decoder 72 detects the I (idle) signal. At that point synchronizer 74 moves to a "pre- synchronization” state 82.
  • decoder 72 signals detection of successive J and K symbols (indicating start of a data packet)
  • synchronizer 74 switches to a "load pattern" state 83 wherein it switch multiplexer 78 to select the output of a pattern generator 79.
  • Pattern generator 79 produces the network protocol PREAMBLE field for the data packet, which is the same for all data packets.
  • sequencer 70 shifts it into FIFO buffer 80. Thereafter, sequencer 74 switches multiplexer 78 to select the output of decoder 76, It then moves to state 84 of FIG. 5 wherein asserts an SI signal on every 5th pulse of the system clock signal. If decoder 72 detects the I code while sequencer 74 reverts to its pre-synchronization state 82. If decoder 72 detects the V code sequencer 74 reverts to out-of-synchronization state 106. If decoder 72 detects the CR code (indicating start of a connection request) while sequencer 74 is in state 84, the sequencer moves to a "connection request" state 85.
  • CR code indicating start of a connection request
  • State 85 is similar to state 84 except that in state 85 sequencer 74 does not shift the output of decoder 76 into FIFO buffer 80. Sequencer 74 retrains in state 112 for the number of system clock cycles require for the connection reque ⁇ t to pass through shift register 70. The sequencer 74 then reverts to state 84 to resume processing the data packet.
  • a buffer state machine 86 shifts data out of FIFO buffer 80 onto a 4-bit data input/output bus of a random access memory (RAM) 87. State machine 82 then supplies address and control signals to RAM 87 causing it to store the 4-bit nibble in RAM 86.
  • RAM random access memory
  • State machine 86 uses RAM 87 as a large FIFO buffer for assembling and storing each data packet until it can be transmitted outward to the destination station. As each data packet arrives, state machine 86 checks its LENGTH field to determine the length of the packet. When the packet is fully assembled state machine 86 reads each successive nibble of the packet out of RAM 87 and shifts it into a FIFO buffer 88, bypassing the LENGTH field. State machine 86 monitors a FULL signal produced by FIFO buffer 88 and suspends loading data into buffer 88 when it is full. The longest stored nibble in FIFO buffer 88 is supplied to a 4-bit parallel-in/serial-out shift register 89.
  • shift register 89 passes to a conventional network interface circuit 90 which forwards each bit to the receiving network station via the TXO bus.
  • interface circuit 90 signals an output state machine 91 and state machine 91 signals shift register 89 to shift out a bit.
  • state machine 91 checks an EMPTY signal produced by FIFO buffer 88. If FIFO buffer 88 is not empty, state machine 91 shifts a next nibble of the packet out of FIFO buffer 88 and shifts it into shift register 89.
  • FIG. 6 illustrates memory controller 24 of FIG. 2 in more detailed block diagram.
  • Memory controller 24 includes a pair of decoders 92 and 93 and a set of tri-state buffers 94. Decoders 92 and 93 receive the 5-bit INPUT_PORT and
  • Decoder 92 produces 24 output bits B0-B23 supplied to RAM 14 of FIG. 2. Decoder 92 sets all bits B0-E23 to a logical "0" except one particular bit referenced by the INPUT_PORT ID. Decoder 92 sets that bit to a logical "1".
  • Decoder 93 also produces 24 output bits W0'- W23 ' , setting all of them to a logical "0" except one particular bit referenced by the OUTPUT_PORT ID, Decoder 93 sets that bit to a logical "1".
  • Tri-state buffers 94. connect the WO'- W23 ' signals to word lines W0-W23 of RAM 14 of FIG. 2.
  • a pulse of the WE signal from arbitration sequencer 22 of FIG. 2 briefly enables tri-state buffers 94 causing a pulse to appear on one of word line W0-W23 corresponding to the particular one of bits WO '- W23' set to a logical "1".
  • switch 12 of FIG. 2 responds to the pulse by storing the 24 data bits B0-B23 at a row corresponding to the pulsed word line. Since only one of bits B0-B23 is a logical "1", switch 12 of FIG. 2 makes only one connection to the output buffer corresponding to the row and breaks any other connections to that buffer.
  • FIG. 7 illustrates the address mapping system 26 of FIG. 2 and address translation unit 44 of FIG. 3 in more detailed block diagram form.
  • Address translation unit 44 includes a state machine 95, a comparator 96, an AND gate 97 and a bus interface circuit 98.
  • Address mapping system 26 includes a microcomputer 100, a counter 101 and a set of tri-state buffers 103-105.
  • FIG. 8 is a flow chart illustrating operation of microcomputer 100 and FIG. 9 is a flow chart illustrating operation of state machine 95.
  • buffer state machine 34 signals address translation unit 44 by pulsing a TRANS signal.
  • Address mapping system 26 continuously polls the address translation unit 44 to determine if the translation unit has a pending translation request.
  • Counter 101 produces an output count indicating the ID of the buffer being polled (PORT_ID) .
  • microcomputer 100 asserts a POLL output signal (step 108) .
  • the POLL signal enables buffers 103 and 104 which send the PORT_ID of counter 101 via lines 106 to an input of a comparator 96 within each translation unit 44.
  • the ID of the input buffer in which each translation unit 44 resides (MY_ID) is applied to a second input of comparator 96.
  • comparator 96 asserts its output signal.
  • the comparator 96 output signal and the POLL signal produced by microcomputer 100 are supplied to inputs of AND gate 97.
  • AND gate 97 asserts its output when buffer MY_ID is being polled.
  • microcomputer 100 After asserting the POLL signal (step 108), microcomputer 100 looks for an acknowledge (ACK) signal input from one of the translation units 44 (step 109) indicating the unit 44 has a pending translation request. If microcomputer 100 does not detect an ACK signal pulse (step 109) it pulses a NEXT signal which clocks counter 101 (step 110) . Counter ICI then increments the value of PORT_ID. That new PORT_ID value i ⁇ sent to the translation units (step 108) and microcomputer 100 looks for an ACK pulse in response (step 109) .
  • ACK acknowledge
  • Microcomputer 100 continues to cycle through steps 108-110 polling each buffer in turn until it obtains an ACK response at step 109 from a polled translation unit 44 having a pending translation.
  • the ACK signal pulse tells microcomputer 100 to read the SOURCE data field from register 40 via bus lines 107 and bus interface circuit 98 (step 111) and to create a table entry relating the port ID output of counter 101 to the incoming network SOURCE address (112) . Thereafter, microcomputer 100 turns off its POLL signal (step 113) to disable buffer ⁇ 103 and 104 and to enable buffer 105.
  • Microcomputer 100 then read ⁇ the de ⁇ tination DEST data field from register 42 via bus lines 107 and bus interface circuit 98 (step 114) . Thereafter it accesses its internal lookup-table to determine the corresponding output port ID, places the output port (PORT_ID) on lines 106 (step 116), sends a STEP signal pulse to state machine 95 (step 116) and then waits for an ACK signal pulse (step 117) . It then starts another polling cycle by pulsing the NEXT signal (step 110), turning on the POLL signal (step 108) and then looking for ⁇ another ACK response (step 109) .
  • state machine 95 waits for a TRANS signal pulse (step 118) indicating that new SOURCE and DEST fields are available in registers 40 and 42 (FIG. 3) It then waits until the output of AND gate 97 indicates it is being polled (step 119) . It then sends an ACK signal pulse tc microcomputer 100 (step 120) and awaits a STEP signal pulse indicating the DEST field ha ⁇ been translated an that the corresponding output PORT_ID is ready on lines 106 (step 125) . On receipt of the STEP signal pulse, state machine 95 pulses the shift in (SI) input signal to FIFO buffer 45 of FIG. 3 (step 126) which stores the port ID appearing on data bus 106 for subsequent use in a connection request. Thereafter state machine 95 pulses the ACK signal (step 127) and returns to step 118 where it waits for another translation request.
  • a TRANS signal pulse step 118
  • ACK signal pulse tc microcomputer 100 step 120
  • STEP signal pulse On receipt of the STEP signal pulse,
  • LAN switch 10 of FIG. 2 employs "output polling" arbitration.
  • LAN switch 10 of FIG. 2 employs "event driven” arbitration.
  • the arbitration sequencer 22 initiates each output token passing cycle.
  • each idle output arbiter upon receiving an output token, initiates an input token passing cycle in an attempt to establish a connection to an input port.
  • sequencer 22 initiates an output token passing cycle upon system start up and starts a new output token passing cycle whenever a previous output token passing cycle ends.
  • arbitration sequencer 22 starts an output token passing cycle only when an input arbiter RA0-RA23 signals sequencer 22 that it has a new connection request or when an output arbiters TA0-TA23 signals that its port has become newly idle.
  • the input and output arbiters RA0-RA23 and TA0-TA23 and the arbitration sequencer 22 of FIG. 2 differ in some respects for the two types of " arbitration systems.
  • FIG. 10 illustrates an output arbiter RAO of FIG. 2 for use in the output polling system in more detailed block diagram form.
  • the global bus of FIG. 2 which interconnects the input and output arbiters and the arbitration sequencer 22 includes 24 lines conveying eight data values or control signals as illustrated in Table IV.
  • Output arbiter TAO includes a state machine 127 clocked by the system clock (CLK) for controlling arbiter operation.
  • Arbiter TAO also includes an end-of-packet (EOP) detection circuit 128 for detecting the end of a data packet appearing on horizontal line HO of switch 12 (FIG. 2) .
  • Detection circuit 128 sets flip-flop 129 when it detects the end of a packet.
  • State machine 127 resets the flip-flop whenever a connection to the port has been granted.
  • Output arbiter TDO also includes a set of three tri-state buffers 130-132, a set of comparators 133-135 and an "input seed generator" circuit 136.
  • Comparator 133 asserts its output signal when an output port ID appearing on the OUTPUT_SEED lines matches MY_ID, the ID of output port TPO.
  • Comparator 134 asserts its output signal when data appearing on the INPUT_PORT lines matches an end-of-cycle (EOC) code.
  • Comparator 135 asserts its output signal when an output port ID appearing on the OUTPUT_PORT lines matches MY_ID.
  • FIG. 11 i ⁇ a flow chart illu ⁇ trating operation of ⁇ tate machine 127 of FIG. 10.
  • state machine 127 initializes itself (step 140) .
  • state machine 127 de-as ⁇ ert ⁇ it ⁇ OUTPUT_TOKEN signal supplied to the next output arbiter.
  • State machine 127 also sets three output signals END_CYCLE, CONSUME and SEED to turn off the three tri-state buffers
  • State machine 127 then awaits a pulse on the SAMPLE_EVENTS line (step 142) .
  • central arbitration sequencer 22 places the ID of one of the output ports on the OUTPUT_SEED lines and then signals the start of the output token passing cycle by pulsing the SAMPLE_EVENTS line.
  • state machine 127 determines whether its output port is the output seed by looking at the output of comparator 133 (step 144) . As shown in FIG. 10, comparator 133 compares the output port's ID (MY_ID) with the port ID conveyed on the OUTPUT_SEED lines and signals state machine 127 with the comparison result. If output port TPO is not the output seed, then state machine 127 waits (step 146) until it has received the output token (i.e.
  • step 148 state machine 127 checks its IDLE input signal to determine whether its output port TPO is idle. If port TPO is not idle, state machine 127 passes the output token to the next output port (step 149) . If port TPO is idle at step 148, state machine 127 pulses a NEXT signal input to " seed generator 136 and sets its CONSUME and SEED output signals to turn on tri-state buffer ⁇ 131 and 132 of FIG. 10 (step 150) .
  • tri-state buffer 131 When tri-state buffer 131 turns on, it places the ID of output port TPO. (MY_ID) on the OUTPUT_PORT lines.
  • Seed generator 136 contains a rotating table of input port IDs and supplies one of the input port IDs as input to buffer 132. A pulse of the NEXT signal tells seed generator 136 to select a next one of the input port IDs from its rotating table as its output.
  • tri-state buffer 132 turns on it places the output of SEED generator 136, the ID of one of input ports RP1-RP23, on the INPUT_SEED lines.
  • the input arbiters RA0-RA23 arbitrate for connection to the output port (TPO) whose ID appears on the OUTPUT_PORT lines. If an input arbiter having a pending connection request for output port TPO wins the arbitration, it places its input port ID on the INPUT_PORT lines and as ⁇ ert ⁇ the REQUEST signal line. If no input arbiter has a pending request for output port TPO, the seed input port places an EOC (end-of- cycle) code on the INPUT_PORT lines.
  • EOC end-of- cycle
  • state machine 127 After initiating an input token passing cycle at step 150, state machine 127 cycles through steps 152 and 154 looking for either an EOC code on the INPUT_PORT lines (step 152) or assertion of the REQUEST signal (step 154) . If the REQUEST signal is asserted, there is a pending request for port TPO that is about to be granted. Accordingly state machine 127 resets flip-flop 129 (step 156) to indicate port TPO is no longer idle and then waits for assertion of the GRANTED signal (step 158) . Central arbitration sequencer 22 of FIG. 2 asserts the GRANTED signal when it has established the connection between input and output port ⁇ . After the connection has been granted, state machine 127 passes the output token to the next output port (step 160) .
  • state machine 127 After passing the output token at steps 149 or 160, state machine 127 again checks whether port TPO is the output seed (step 162) . If not, state machine 127 waits until the output of comparator 135 indicates that an EOC code appears on the OUTPUT_PORT lines (step 164) . The output seed places the EOC code on the OUTPUT_PORT lines to mark the end of the output token passing cycle. At that point state machine 127 re-initializes the output arbitrator (step 140) and then waits (step 142) for a SAMPLE_EVENTS pulse signaling the start of another output token passing cycle.
  • state machine 127 determines at either step 144 or 162 that port PTO is the output seed, it reverts to step 147 where it checks whether it has the output token (step 147) . If the output seed has received the token, the output token passing cycle has ended, all output arbiter ⁇ having received and passed the output token. Thus state machine 127 sets its END_CYCLE output signal (FIG. 10) to turn on tri-state buffer 130 to put the EOC code on the OUTPUT_PORT lines (step 165) tc signal the end of the output token passing cycle. State machine 127 then waits (step 168) until the central arbiter 22 (FIG. 2) responds to the EOC code by pulsing the GRANTED signal. State machine 22 then returns to initialize step 140, re-initializes the output arbiter and thereafter awaits the start of another output token pa ⁇ ing cycle (step 142) .
  • FIG. 12 illustrates an input arbiter RAO of FIG. 2 for use in the output polling arbitration system.
  • Arbiter RAO includes a state machine 170 for sequencing arbiter operations.
  • An interface circuit 172 monitors a connection requests arriving from input buffer RBO via vertical line V0 of switch 12 (FIG. 2) and stores the ID (PORT_ID) of the destination port conveyed in an incoming request. If the VO line is not conveying a packet, or when interface circuit 172 detects the end of a packet transmission on the VO line, interface circuit 172 supplies its stored P0RT_ID data to the input of a register 174, input enabled by the SAMPLE_EVENTS signal. When the connection request is granted, state machine 170 pulses a CLEAR signal to clear the PORT_ID data stored in interface 172.
  • a comparator 176 signals state machine 170 when the destination port ID (PORT_ID) stored in register 174 matches the ID conveyed on ⁇ the OUTPUT_PORT line.
  • a tri-state buffer 178 when enabled by a CONSUME output of state machine 170, places the ID (MY_ID) of input buffer RBO on the INPUT_PORT lines.
  • a tri-state buffer 179 when enabled by a END_CYCLE output of state machine 170, places the EOC code on the INPUT_PORT lines.
  • a comparator 180 signals state machine 170 when MY_ID, the ID of input buffer RBO, matches the input port ID conveyed on the INPUT_SEED lines.
  • a comparator 181 signals state machine 170 when the INPUT_PORT lines convey the EOC code.
  • FIG. 13 is a flow chart illustrating operation of state machine 170.
  • state machine 170 initializes by setting its CONSUME output signal to turn off buffer 178 and by pulsing the CLEAR signal to initialize the P0RT_ID data in interface circuit 172 (step 182) . Thereafter state machine waits (step 184) until it detects a pulse on the SAMPLE_EVENTS line, indicating the start of a token passing cycle. State machine 170 then checks the output of comparator 180 to determine if its input port
  • RPO is the input seed (step 186) . If port RPO is the input seed and does not have the token (step 188) or if input port RPO is not the input seed but does have the token (step 190), state machine 170 checks the output of comparator 176 to determine if there is a pending request for the output buffer whose ID appears on the OUTPUT_PORT lines (step 192) . If input port RPO does not have a pending request for the output buffer, state machine 170 passes the input token (step 194) by asserting its output INPUT_TOKEN signal. It then waits for a pulse of the GRANTED signal or appearance of an EOC code on the INPUT_PORT lines (step 196) indicating the end of either an output or input token passing cycle.
  • state machine 170 reinitializes (step 182) and waits for the start of another input token passing cycle (step 184) . If at step 190 state machine 170 has not received the input token, it cycles through steps 190 and 191 until it receives the input token (step 190) or until it detects from the outputs of comparator 180 that a request has been granted (step 191) . If a request is granted to another input before state machine 170 receives the input token, state machine 170 re- initializes (step 182) and waits for the start of another input token passing cycle (step 184) .
  • state machine 170 determines from the output of buffer 176 that t has a pending request for the output buffer whose ID appears on the OUTPUT_PORT lines, then at ⁇ tep 198 state machine 170 sets its CONSUME signal output to turn on buffer 178 thereby placing the ID of input port RPO on the INPUT_PORT lines. At step 198 state machine 170 also asserts the REQUEST signal to signal that it is requesting a connection and pulses its CLEAR output to clear the connection request in interface circuit 172. The state machine 170 then waits for a pulse of the GRANTED signal or appearance of an
  • state machine 170 re-initializes (step 182) and waits for the start of another input token pas ⁇ ing cycle ( ⁇ tep 184) . If state machine 170 determines at step 186 that its input port i ⁇ the input seed and at step 188 that it has the input token, then state machine 170 sets its END_CYCLE output signal so that buffer 179 places the EOC code on the INPUT_PORT line (step 200) to ⁇ ignal the end of the input token pas ⁇ ing cycle. It then wait ⁇ ( ⁇ tep 202) for sequencer
  • step 182 ⁇ tate machine 170 re-initialize ⁇ (step 182) and waits for the start of another input token passing cycle (step 184) .
  • FIG. 14 illustrates arbitration sequencer 22 of FIG. 2 in more detailed block diagram form.
  • Sequencer 22 includes a state machine 210 for sequencing device operations.
  • An output seed generator 212 contains a rotating table of output p' t IDs and places one of the output port IDs on the OUTPUT_ :.D lines of the global bus.
  • a pulse of a NEXT signal produ.. :1 by ⁇ tate machine 210 tells seed generator 212 to select a next one of the output port IDs from its rotating table for placement on the OUTPUT_SEED lines.
  • a comparator 214 signal ⁇ state machine 210 when the 0UTPUT_P0RT lines convey the EOC (end-of-cycle) code.
  • State machine 210 also ⁇ upplie ⁇ the write enable ⁇ ignal WE for the memory controller.
  • state machine pulses a shift in (SI) signal
  • a parallel-in/serial out shift register 218 stores the input port ID appearing on the INPUT_PORT lines.
  • state machine 210 asserts a RESPOND signal
  • a tri-state buffer 220 connects the output of shift register 218 to a response line RESP of the global bus.
  • State machine pulses a shift out signal (SO) to serially shift the input port ID out of shift register 218, thereby ⁇ ending a. response to input buffers RB0-RB23 of FIG. 2 via the RESP lines. This tells the indicated input buffer that its last connection request has been granted..
  • SO shift out signal
  • FIG. 15 is a flow chart illustration operation of state machine 210 of FIG. 14.
  • state machine 210 initializes following power up by setting the RESPOND signal to turn off buffer 220, and driving its GRANTED and SAMPLE_EVENTS signals low. (step 230) .
  • State machine 210 then pulses the NEXT signal causing seed generator 212 to place an output port ID on the OUTPUT_SEED lines (step 234) .
  • State machine 210 next pulses the SAMPLE_EVENTS line to signal the start of an output token passing cycle (step 236) .
  • step 238 It then continues to repeat steps 238 and 240 until at step 238 it detects a pulse on the REQUEST signal or at step 240 comparator 214 signals detection of the EOC code on the OUTPUT_PORT line.
  • An input arbiter pulses the REQUEST signal to request a connection between input and output ports identified by the codes on the INPUT_PORT and OUTPUT_PORT lines.
  • state machine 210 On detection of the REQUEST signal pulse at step 238, state machine 210 transmits a write enable signal WE to memory controller 24 of FIG. 2 (step 242) .
  • the memory controller responds by storing data in RAM 14 of FIG. 2 establishing the connection between the winning input and output ports.
  • State machine 210 then pulses the GRANTED line (step 244) to tell the input and output buffers that the request is granted and pulse ⁇ the SI signal to load the input port ID into shift register 218 (step 246) .
  • State machine 210 then send ⁇ a response to the input buffers (step 248) by asserting the RESPOND signal to turn on buffer 220 and pulsing the SO signal to shift the input port ID onto the RESP line via b ⁇ ffer 220. Thereafter state machine 210 returns to ⁇ tep ⁇ 238/240. If, at step 240, comparator 214 ⁇ ignals state machine 210 that it has detected the end of an output token passing cycle, state machine 210 re-initializes (step 230) and begins a next output token passing cycle.
  • LAN switch 10 of FIG. 2 employs event driven arbitration.
  • an output arbitration cycle begins either when an output buffer becomes newly idle or when an input buffer issues a new connection request.
  • the global bu ⁇ interconnecting the input and output arbiters and the arbitration sequencer 22 includes 26 lines conveying 10 data values or control signals as illustrated in Table V.
  • FIG. 16 illustrates the event driven version of arbitration sequencer 22 of FIG. 2 in more detailed block diagram form.
  • Sequencer 22 incudes a state machine 400 for controlling sequencer operation, and seed generator circuits 402 and 404 for generating an output and input seeds.
  • Tri-state buffers 406 and 408 respectively connect outputs of seed generator circuits 402 and 404 to the OUTPUT_SEED and INPUT_SEED lines of the GLOBAL bus.
  • a decoder 408 signals state machine 400 when detects EOC (end of cycle) or valid input port ID codes on the INPUT_PORT lines of the GLOBAL bus .
  • a shift register 412, connected to the RESP bus via a tri-state buffer 414 serially transmits the ID of a winning input buffer appearing on the INPUT_PORT lines as a connection response to the input buffers.
  • FIG. 17 is a flow chart detailing the logic of state machine 400 of FIG. 16.
  • ⁇ tate machine 400 transmits a pulse on a SAMPLE_EVENTS line of the GLOBAL bus to all input and output arbiters (step 422) .
  • SAMPLE_EVENTS pulse On receipt of the SAMPLE_EVENTS pulse, each output arbiter for an output buffer having become idle since a last received SAMPLE_EVENTS pulse asserts a NEW_IDLE signal on a line of the GLOBAL bus.
  • each input arbiter having stored a new connection request since the last SAMPLE_EVENTS pulse asserts a NEW_REQ line of the GLOBAL bus .
  • State machine 400 checks the NEW_IDLE and NEW_REQ lines (step ⁇ 424 and 425), and if neither line is asserted, returns to step 422 where it again pulses the SAMPLE_EVENTS line. State machine 400 continues to cycle through steps 422, 424 and 425 until it detects assertion of either the NEW_IDLE or the NEW_REQ line.
  • ⁇ tate machine 400 On detecting assertion of the NEW_IDLE line, ⁇ tate machine 400 pulses a NEXT_OUTPUT signal telling seed generator 402 to output a new output seed (step 426) and then asserts a SEED_OUT signal (step 428) to turn on tri-state buffer 406 to place the output seed on the OUTPUT_SEED lines of the GLOBAL bus. State machine 400 then pulses an OUTPUT_ARB_CYCLE line of the GLOBAL bus (step 430) .
  • the OUTPUT_ARB_CYCLE pulse tells the input and output ""* arbiters to arbitrate for a connection.
  • the state machine 400 then waits at step 432 until decoder 408 detects on the INPUT_PORT lines either a valid input port ID, indicating tha t a connection request is ready to be granted, or an end-of-cycle code (EOC) indicating that no connection request is ready to be granted. If the arbiters determine that a connection request can be granted, the IDs of the winning input and output buffers appear on the INPUT_PORT and
  • state machine 400 sends the write enable signal WE to memory controller telling it to grant the request by making the connection (step 434) .
  • State machine 400 then ⁇ end ⁇ a response to the input buffer ⁇ (step 436) by pulsing an SI signal causing shift register 412 to load the input port ID on the INPUT_PORT lines, asserting a RESPOND signal to turn on tri-state buffer 414, and then successively pulsing an SO signal causing shift register 412 to shift out the input port ID onto the RESP line to the inpuc buffers.
  • state machine 400 pulses the OUTPUT_ARB_CYCLE line to tell all arbiters that the request has been granted (step 438) . State machine 400 then returns to step 422. If at step 432 decoder 408 detects the EOC code on the INPUT_PORT lines, state machine 400 skips steps 434 and 436 and no connection is granted.
  • state machine 400 On detecting as ⁇ ertion of the NEW_REQ line at step 425, state machine 400 pulse ⁇ a NEXT_INPUT ⁇ ignal telling ⁇ eed generator 404 to output a new input ⁇ eed (step 440) and then asserts a SEED_IN signal (step 442) to turn on tri-state buffer 408 to place the input seed on the INPUT_SEED lines of the GLOBAL bus. State machine 400 then pulses an INPUT_ARB_CYCLE line of the GLOBAL bus (step 444) . The INPUT_ARB_CYCLE pulse tells the input and output arbiters to arbitrate for a connection.
  • the state machine 400 then performs steps 432, 434, 436 438 in the manner described above to gr .nt any connection requested by the input and output arbiters and to send a respon ⁇ e to the input buffer ⁇ if a connection is granted.
  • FIG. 18 illustrates the event driven version of output arbiter TAO of FIG. 2 in more detailed block diagram form.
  • Output arbiters TA1-TA23 of FIG. 2 are similar.
  • Arbiter TAO includes a state machine 500 for controlling arbiter operations.
  • An end-of-packet (EOP) detector 502 detects the end of a packet passing along horizontal line HO of crosspoint switch 12 of FIG. 2 to output buffer TBO. On detecting a packet end, detector 502 sets a pair of flip-flops 504 and 505 which may be separately reset by state machine 500.
  • the Q output of flip-flop 504 supplie ⁇ an IDLE input to ⁇ tate machine 500.
  • the Q output of flip-flop 506 provides another input to state machine 500 and turns on a tri-state buffer SOS which pulls down (asserts) the NEW_IDLE line of the GLOBAL bus.
  • a comparator 510 signals state machine 500 when the ID (MY_ID) of output port TPO appears on the OUTPUT_SEED lines.
  • a comparator 512 signals state machine 500 when the end of cycle (EOC) code appears on the INPUT_PORT lines.
  • a comparator 514 signals state machine 500 when MY_ID appears on the OUTPUT_PORT lines.
  • a tri-state buffer 516 responds to a CONSUME signal from state machine 500 by placing MY_ID on the OUTPUT_PORT lines.
  • a seed generator 518 linked to the INPUT_SEED lines via a tri-state buffer 520 places an input port ID on the INPUT_SEED lines when state machine 500 asserts a SEED signal.
  • state machine 520 supplies a NEXT signal pulse to seed generator 518, the seed generator selects a next input port ID as the input seed.
  • FIG. 19 is a flow chart illustrating operation of state machine 500 of FIG. 18.
  • state machine 500 waits for a pulse on the SAMPLE_EVENTS line (step 522) .
  • the central arbitration sequencer On receipt of the SAMPLE_EVENTS pulse, it checks whether the central arbitration sequencer is asserting the OUTPUT_ARB_CYCLE or INPUT_ARB_CYCLE lines (steps 524 and 526) .
  • sequencer 22 of FIG. 2 places a port ID or. ⁇ the OUTPUT_SEED lines and pul ⁇ es the OUTPUT_ARB_CYCLE line if one or more of the output arbiters are asserting the NEW_IDLE line.
  • Output arbiter TAO respond ⁇ to the OUTPUT_ARB_CYCLE pulse by checking the. output of comparator 510 to determine if its port (TPO) is the output seed (step 528) . If not, arbiter TAO determines whether it has received the output token (step 530) . If it has not received the output token, it checks whether the central arbitration sequencer is again asserting the OUTPUT_ARB_CYCLE signal (step 532) . If, so the output token passing cycle is over, another output arbiter having won the arbitration. State machine 500 then returns to step 522 to await another token pas ⁇ ing cycle. Otherwise, if the OUTPUT_ARB_CYCLE signal has not been as ⁇ erted, ⁇ tate machine 500 returns to ⁇ tep 528.
  • state machine 500 checks the IDLE signal from flip-flop 506 to determine if its output port TPO is newly idle (step 534) . If not, state machine 500 passes the output token (step 536) and returns to step 528 via step 532. Otherwise, if output port TPO is idle (step 534), state machine 500 asserts a CONSUME signal to turn on tri-state buffer 516 (step 538), thereby placing the ID (MY_ID) of output port TPO on the OUTPUT_PORT lines.
  • State machine 500 also assert ⁇ the SEED signal to turn on tri-state buffer 520, thereby placing an input port ID produced by seed generator 518 on the INPUT_SEED lines (step 540) . This tells the input arbiters to arbitrate for the right to connect to port TPO.
  • output arbiter TAO monitors the OUTPUT_ARB_CYCLES line (step 542) and the output of comparator 512 (step 544) to determine whether the arbitration was succe ⁇ sful or unsuccessful. If the arbitration was successful, the central arbitration sequencer will pulse the OUTPUT_ARB_CYCLE line 542 and state machine 500 will (at step 546) pulse its NEXT signal to increment the output of seed generator 134, reset flip-flops 504 and 506 to indicate the output buffer i ⁇ no longer idle, and de-assert the CONSUME and SEED signals to turn off buffers 516 and 520. State machine 500 then reverts to step 522 to await the start of another token passing cycle.
  • the central arbitration sequencer When one or more of the input arbiters asserts the NEW_REQ line, the central arbitration sequencer will start an input token passing cycle by pulsing the SAMPLE_EVENTS line and INPUT_ARB_CYCLE lines.
  • state machine 500 responds to the INPUT_ARB_CYCLE pulse by checking the IDLE output of FLIP- FLOP 504 to determine if output port TPO i ⁇ idle (step 550) . If the output buffer is not idle, state machine 500 returns to step 522 to await the start of a new token pas ⁇ ing cycle.
  • ⁇ tate machine 500 checks the output of comparator 514 to determine if the ID of output port TPO (MY_ID) is on the OUTPUT_PORT lines (step 552) . If not, state machine 500 returns to step 522 to await a new token passing cycle. If MY_ID appears on the OUTPUT_PORT lines, then an input buffer with a pending request for port TPO has won the right to have the request granted. Thereafter (step 554) state machine 500 asserts the SEED signal to turn on buffer 520 which places an input port ID on the INPUT_SEED lines. State machine 500 also asserts and OUTPUT_IDLE line (step 554) .
  • state machine 50 where it waits for assertion of the OUTPUT_ARB_CYCLE signal indicating the connection reque ⁇ t has been granted (step 542) .
  • state machine 500 pulse ⁇ its NEXT signal to increment the output of seed generator 518 and resets flip-flops 504 and 506 to indicate the output buffer i ⁇ no longer idle ( ⁇ tep 546) and then reverts to step 522 to await the start of another token pas ⁇ ing cycle.
  • Arbiter RAO includes a state machine 600 for controlling arbiter operations.
  • An interface circuit 602 watches for commands appearing on vertical line V0 of switch 12 (FIG. 2) from input buffer RBO, stores the destination port ID (P0RT_ID) conveyed in the command.
  • Interface circuit 602 determines when line V0 is conveying a data packet by noting the beginning and ending of data packets. When line V0 is no longer busy, circuit 602 sets a flip-flop 610.
  • the Q output of flip-flop 610 provides an input to state machine 600 and also turns on a tri-state buffer 612.
  • the output of buffer 612 pulls down (asserts) the NEW_REQ line of the GLOBAL bus when buffer 612 is turned on.
  • Interface circuit 602 produces output data indicating the requested destination output port ID (PORT_ID) .
  • a register 604 stores the PORT_ID data in response to a SAMPLE_EVENTS signal pulse and a comparator 606 signals state machine 600 when the PORT_ID data stored in register 604 matches the port ID appearing on the OUTPUT_PORT lines of the GLOBAL bus .
  • a tristate buffer 608 places the PORT_ID data stored in register 604 on the OUTPUT_PORT lines when ⁇ tate machine 600 asserts output signal REQ.
  • circuit 602 When circuit 602 receives a connection request it sets flip flop 610 When the request has been granted, ⁇ tate machine 600 resets flip-flop 610. It also pulses a CLEAR output signal to tell circuit 602. The CLEAR signal pulse tells circuit 602 to clear the PORT_ID data from its memory and begin watching for another connection request.
  • a tri-state buffer 614 places MY_ID (the ID of input port RPO) on the INPUT_PORT line when turned on by a CONSUME signal output of state machine 600.
  • a tri-state buffer 616 places the EOC code on the INPUT_PORT line when turned on by an END_CYCLE ⁇ ignal output of ⁇ tate machine 600.
  • FIGS. 21 and 22 are flow charts depicting operations of state machine 600 of FIG. 20.
  • state machine 600 waits for a pulse of the SAMPLE_EVENTS signal (step 622) and then looks for a pulse of the OUTPUT_ARB_CYCLE signal (step 624) indicating that an output port is newly idle and that an output token passing cycle has begun. If so, state machine 600 checks the output of comparator 618 to determine if its input port RPO is the input seed (step 626) .
  • state machine 600 checks whether it has received the input token (step 628) . If not, state machine 600 checks the output of comparator 606 to determine if the output port ID appearing on the OUTPUT_PORT lines matches the PORT_ID value stored in register 604. If not, state machine 600 pass the input token (step 632) and then looks for a pulse on the OUTPUT_ARB_CYCLE line indicating the output arbitration has been won by another input port (step 634) . If another input port has not won, state machine 600 checks the output of comparator 620 to determine if the EOC code appears on the INPUT_PORT lines. If not, state machine returns to step 626.
  • state machine 600 determine ⁇ whether it ha ⁇ received the input token (step 638) and if not, returns to step 626 via step ⁇ 634 and 638.
  • state machine 600 determine ⁇ at step 638 it has received the input token, it moves to step 630. If at step 630 the output of comparator 606 indicates the port ID on
  • OUTPUT_PORT matches PORT_ID in register 604, then port RPO has a pending request for the indicated output port.
  • state machine 600 asserts the CONSUME signal to place MY_ID (the ID of input buffer RBO) on the INPUT_PORT lines (640) and then waits (step 642) for the central arbitration sequencer to pulse the OUTPUT_ARB_CYCLE to indicate the connection between input and output buffers has be made.
  • state machine 600 pulses the CLEAR ⁇ ignal to clear the request from circuit 602 and resets flip-flop 610 to turn off the NEW_REQ signal. It then returns to step 622 to await the start of a new input token passing cycle.
  • state machine 600 If at step 628 input port TPO is the input seed and state machine 600 has determined that it has received the input token, state machine asserts the END__CYCLE signal (step 646) causing buffer 616 to place the EOC code on the INPUT_PORT lines. The EOC code tell ⁇ all arbiter ⁇ that no input buffer ha ⁇ a pending request for the newly idle output buffer. State machine 600 then reverts to ⁇ tep 622 to await another token passing cycle.
  • state machine 600 If at step 624 state machine 600 does not detect an OUTPUT_ARB_CYCLE pulse, it looks for an INPUT_ARB_CYCLE pulse from the central arbitration sequencer ( ⁇ tep 648, FIG. 22) indicating that an input buffer ha ⁇ a new connection request. On detecting the INPUT_ARB_CYCLE pulse, state machine 600 checks the output of comparator 618 to determine if input port RPO is the input seed (step 650) . If so state machine 600 checks whether it has received the input token (step 652) . If it has received the input token, the token passing cycle is over and no new connection request has been granted. In that case state machine 600 pulses its END_CYCLE output causing buffer 616 to place the EOC code on the INPUT_PORT lines (step 654) and returns to step 622 (FIG. 21) to await another input token pas ⁇ ing cycle.
  • state machine 600 checks the Q output of flip-flop 610 to determine if input port RPO has a new connection request (step 655) . If not, state machine 600 passes the input token (step 656) and then checks whether the OUTPUT_IDLE line has been asserted (step 658) This indicates that another input port has won the arbitration. IF not, state machine 600 checks the output of comparator 620 to determine if the token pas ⁇ ing ' " cycle ha ⁇ ended (step 660) . If not, state machine returns to step 650.
  • state machine 6Q0 continues to cycle through steps 658, 660, 650 and 662 until it gets the input token.
  • state machine 600 checks the Q output of flip-flop 610 to see if it ha ⁇ a pending new reque ⁇ t. In not, it passes the token at step 656. If it does have a new request, state machine 600 asserts the REQ signal to turn on buffer 608, thereby placing the requested destination buffer addre ⁇ s on the OUTPUT_PORT lines (step 664) . State machine 600 also resets flip-flop 610 ( ⁇ tep 664) . It then looks at the OUTPUT_IDLE line to determine the requested output port is idle (step 666) . If not, state machine 600 passes the input token (step 656) .
  • state machine 600 moves to step 668. State machine 600 also move ⁇ to step 668 from step 658. At this point (step 668), the output arbiter for the requested port has placed a new input seed on the INPUT_PORT lines and allows all input arbiters to compete for a connection to that output port. Thus at step 668, state machine 600 checks the output of comparator 618 to determine if port TPO is the input seed. If it is the input seed, it again checks the output of comparator 606 to determine if it has a pending request for the output port (step 670) .
  • step 672 If not, it passes the input token (step 672) and checks the OUTPUT_ARB_CYCLE line for a pulse indicating end of the token passing cycle (step 674) . If the token pas ⁇ ing cycle is not at an end, state machine 600 reverts to step 668. If input port RPO is not the input seed (step 668) and does not have the input token (step 676) it moves to step 674. Otherwise it checks the output of comparator 606 to determine if it has a pending request for the output port (step 670) .
  • state machine 600 If it detects a pending request for the output buffer (step 670), state machine 600 pulses the CONSUME signal to turn on buffer 614 thereby placing the ID of port RPO (MY_ID) on the INPUT_PORT lines (step 678) . State machine 600 the " waits for a pulse from the central arbitration sequencer (step 680) indicating that the reque ⁇ t has been granted. Thereafter state machine 600 pulses the CLEAR signal to clear the request from circuit 602 (step 682) and returns to step 622 (FIG. 21) to await the beginning of the another token pas ⁇ ing cycle.

Abstract

A local area network switch (10) includes a set of input ports (RP0-RP23) each receiving and storing incoming packets from a corresponding network station, a set of output ports (TP0-TP23) each forwarding packets to a corresponding network station, and a switching system (11) for routing packets from the input ports (RP0-RP23) to the output ports (TP0-TP23). The output ports (TP0-TP23) are interconnected to form an output token passing ring and the input ports (RP0-RP23) are interconnected to form an input token passing ring. Whenever an idle output port receives the output token, it holds the output token and signals the input ports to start an input token passing cycle. During an input token passing cycle, an input port storing a packet destined for an output token holder terminates the input token passing cycle when it receives the input token and signals the switching system (11) to establish a connection to the output token holder. To fairly distribute arbitration priority, input and output ports starting positions are rotated for successive input and output token passing cycles.

Description

NETWORK SWITCH WITH ARBITRATION SYSTEM
Background of the Invention Field of the Invention The present invention relates in general to a switch for routing data between network stations, and in particular to a switch including a system for arbitrating competing demands for routing paths through the switch.
Description of Related Art
Networks transfer data between computers or other types of network stations. For example 10BASE-T Ethernet systems use sets of twisted pair conductors in a star network topology to connect network stations to a central hub or switch. A 10BASE-T hub is simply a repeater receiving a data packet from any one station and rebroadcasting it to all other stations. A header in the data packet indicates the intended destination station for the packet and each network station looks at the packet header to determine if it should accept or ignore the packet. One disadvantage to a hub repeater is that the twisted pair that carries data packets to each network statior. not only must convey packets directed to that station but packets directed to all other stations as well. Thus only one network station can transmit a packet at any given time. A network switch, on the other hand, routes an incoming packet only to its destination station so that each network station receives only the packet traffic directed to it and many network switches handle multiple packet transmission concurrently. A network switch includes input ports for receiving packets from the network stations, output ports for transmitting packets to the network stations and a switching mechanism selectively routing each incoming packet from an input port to the appropriate output port. The input port typically stores an incoming packet, determines the destination output port from the routing data included in the packet header, and then arbitrates for a switch connection between the input port and the destination output port. When the connection is established, the input port sends the packet to the output port via the. switch.
Since input ports may have competing connection requests, a network switch must provide some kind of arbitration system to determine an order in which requests are granted. In a typical network switch, each input port sends its connection request to a central arbiter. The central arbiter monitors the busy status of the output ports and determines an order in which pending requests are granted when an output port becomes idle. When the arbiter grants a request it sends control data to the switching mechanism causing it to make the desired connection between input and output ports and then sends an acknowledgment to the input port that made the request. The input port then forwards the data to the output port via the switching mechanism. Typically the central arbiter assigns a priority level to each input and/or output port and always requests to the highest priority ports. Many central arbiters rotate input and output port priority so as to fairly distribute connection rights over time. The article "Symmetric Crossbar Arbiters for VLSI
Communication Switches" published *****, 1993 by Tamir et al in IEEE Transactions on Parallel and Distributed Systems, Vol. 4, No. 1, discloses a centralized "wave front" arbiter for a NxN crosspoint switch routing data between N network stations. The arbiter includes an NxN array of arbitration cells, one for each possible connection of the crosspoint switch. Each input port corresponds to one row of cells and supplies a separate request signal to each cell of the row. Each output port corresponds to one column of cells and supplies a separate busy signal to each cell of the column. The cells are ranked according to priority. When an input port seeks a connection to an output port it asserts the one of N output request signals. The asserted request signal drives the arbitration cell in the column corresponding to the output port. That arbitration cell grants a request when not otherwise inhibited from doing so by a higher priority cell. Priority is periodically shifted from cell to cell using token passing rings to provide equitable allocation of connection rights to both input and output ports. One problem with this system is that the arbitration system grows with square of the number N of network stations and becomes difficult to implement.
U.S. Patent No. 4,814.762 issued March 21, 1989 to Franaszek describes a network switch employing a crosspoint switch wherein the arbitration system is decentralized. To arbitrate for connections, input and output ports communicate directly with one another through a "delta" network. When an input port receives a packet it sends a request to the output port via the delta network. When an output port receives a connection request it returns a response to the input port via the delta network. The response gives the input port a time when it can make the requested connection between input and output ports. At the indicated time, the input port sends control data to the crosspoint switch establishing the connection. The delta network is formed by several stages of routing nodes. Each routing node receives a request from one of two input ports or from one of two nodes of a preceding stage. On receiving a request a node looks at a destination port address included in the request and then forwards the request to one of two nodes of a next stage or to one of two output ports. Thus a request works its way between input and output ports by hopping from node to node. Responses travel from output port to input port through the delta network in a similar manner. The delta network inherently arbitrates competing requests for the same output node on a first come, first-served basis. In this system the size of the arbiter also increases more rapidly than the number of network stations .
U.S. Patent No. 5,430,442 issued July 4, 1995 to Kaiser et al discloses a partially distributed arbitration system for a network switch having several ports interconnected by a ~ crosspoint switch. In this system arbitration for the right to connect is handled by a central arbiter but control of the crosspoint switch is distributed among the ports . The ports and the arbiter are interconnected by a common arbitration bus. Each input port receiving a packet from a network source sends a connection request over the arbitration bus to the central arbiter. The arbiter decides the order in which to grant connection requests and signals the input port via the bus when its request is granted. When a connection request is granted, the input port directly queries the destination output port via the bus to determine if the destination output port is busy. If the destination port is not busy, the receiving port sends control data to the crosspoint switch to establish the connection. The arbitration system does not grow appreciably as the number of network stations increases, but the bandwidth of the arbitration bus limits the speed with which the system can handle requests. What is needed is a network switch having a compact arbitration system which can quickly and equitably respond to connection requests from large numbers of network stations.
Summary of the Invention A local area network switch in accordance with the present invention switch includes a set of input ports for receiving and storing incoming packets from corresponding network stations, a set of output ports for forwarding packets to corresponding network stations, and a switching system for selectively routing packets from the input ports to the oitpuc ports. The input and output ports and the switching system are interconnected by a global communication bus. The output ports are also interconnected to form an output token passing ring while the input ports are interconnected to form an input token passing ring. When an idle output port receives an output token, it signals the input ports via the global bus to start an input token passing cycle. The output token holder also sends its identification code (ID) to the switching system via the global bus. During the input token passing cycle, any input port storing a packet destined for the outpu token holder may establish a connection to the output token holder if it is the first such input port to receive the input token. The input port establishes the connection by sending its ID to the switching system via the global bus. The switching system, having received the IDs of the input and output ports establishes the connection there between. The token passing rings operate quickly and can service a large number of ports efficiently. Since information passes through the global bus only to start token passing cycles and to send port IDs to the switching system when a connection is to be made, bandwidth limitations of the global bus do not appreciably affect arbitration time.
It is accordingly an object of the present invention tc provide a switch for routing data between network stations .
It is another object of the present invention to provide a system for arbitrating competing demands for switch routing resources.
The concluding portion of this specification particularly points out and distinctly claims the subject matter of the present invention. However those skilled in the art will best understand both the organization and method of operation of the invention, together with further advantages and objects thereof, by reading the remaining portions of the specification in view of the accompanying drawing(s) wherein like reference characters refer to like elements.
Brief Description of the Drawinq(s)
FIGS. 1 and 2 illustrate a local area network (LAN) switch 10 in accordance with the present invention for routing serial data packets between up to 24 network stations,
FIG. 3 illustrates input buffer RBO of FIG. 2 in more detailed block diagram form,
FIG. 4 illustrates output buffer TBO of FIG. 2 in more detailed block diagram form,
FIG. 5 is state diagram illustrating a synchronization process carried out by input sequencer 74 of FIG. 4, FIG. 6 illustrates memory controller 24 of FIG. 2 in more detailed block diagram, FIG. 7 illustrates the address mapping system 26 of FIG. 1 and address translation unit 44 of FIG. 3 in more detailed block diagram form,
FIG. 8 is a flow chart illustrating operation of state machine 100 of FIG. 7,
FIG. 9 is a flow chart illustrating operation of state machine 95 of FIG. 7,
FIG. 10 illustrates an output polling version of output arbiter RAO of FIG. 2 in more detailed block diagram form, FIG. 11 is a flow chart illustrating operation of state machine 120 of FIG. 10,
FIG. 12 illustrates an output polling version of input arbiter RAO of FIG. 2 in more detailed block diagram form,
FIG. 13 is a flow chart illustrating operation of scate machine 170,
FIG. 14 illustrates an output polling version of arbitration sequencer 22 of FIG. 2 in more detailed block diagram form,
FIG. 15 is a flow chart illustration operation of state machine 210 of FIG. 14,
FIG. 16 illustrates an event driven version of arbitration sequencer 22 of FIG. 2 in more detailed block diagram form,
FIG. 17 is a flow chart detailing the logic of state machine 400 of FIG. 16,
FIG. 18 illustrates an event driven version of output arbiter TD0 of FIG. 2 in more detailed block diagram form,
FIG. 19 is a flow chart illustrating operation of state machine 500 of FIG. 18, FIG. 20 illustrates an event driven version of output arbiter RAO of FIG. 2 in more detailed block diagram form, and
FIGS. 21 and 22 are flow charts depicting operations of state machine 600 of FIG. 20.
Description of the Preferred Embodiment (s)
FIG IA illustrates a local area network (LAN) switch 10 in accordance with the present invention for routing serial data packets between up tp 24 network stations. Switch 10 receives data packets from -network stations via serial input buses RX0- RX23 and forwards then to the network stations via serial output buses TX0-TX23. Switch 10 includes a set of input ports RP0-RP23 each receiving and storing incoming packets arriving on a corresponding one of input buses RX0-RX23 and a set of output ports TP0-TP23, each storing packets for transmission outward on a corresponding one of output buses TX0-TX23. A switching system 11 routes packets stored in the input ports RP0-RP23 to the appropriate one of output ports TP0-TP23. The switching system 11 includes a set of 24 "vertical" conductors V0-V23, each connected to a corresponding one of input ports RP0-RP23 and a set of 24 "horizontal" conductors H0-H23, each connected to a corresponding one of output ports TP0-TP23. In response to input control data conveyed on a global bus (GLOBAL_BUS) from the input and output ports, switching system 11 can make and break connections between any pair of horizontal and vertical conductors, thereby making or breaking a packet routing path from any input port to any output port.
The input ports RP0-RP23 access an address mapping system 26 through a bus MAPPING_BUS. The mapping system 26 relates the network address of each network station to the particular output buffer TP0-TP23 to which the network station is connected. When an input port, for example port RPO, receives and stores a packet it sends the network address of the destination station included in the packet to the address mapping system 26 via the mapping bus. The address mapping system returns the identification code (ID) of the output port, for example TP1, to receive the packet. The input and output ports arbitrate for connections. The output ports TP0-TP23 are interconnected to form an output token passing ring. An "output token" is a signal (OUTPUT_TOKEN) that each output port transmits to a next output port of the ring. One output port "passes" the output token to the next by asserting its output OUTPUT_TOKEN signal. The input ports RPO- RP23 are similarly interconnected to from an input token passing ring. An arbitration sequencer 22 starts an output token passing cycle by transmitting an "output seed" to all output ports TPO- TP23 via the global bus. The output seed is a cede identifying a selected one of the output ports as the output seed port. When the output seed port receives the output seed, it determines whether it is idle or busy. An output port considers itself "busy" when it is currently receiving a data packet and considers itself "idle" when it not currently receiving a data packet. If the output seed port is idle it "wins" the right to seek a connection. In such case the winning output port starts an input token passing cycle by sending an "input seed" to all input ports RP0-RP23 via the global bus identifying one of them as the input seed port. The winning output port also sends its own ID to all input ports and to switching system 11 via the global bus.
When the input seed port receives the input seed it determines whether it is currently storing a data packet to be transmitted to the output seed port. If so, the input seed port, having "won" the arbitration, sends its ID code via the global bus to the output ports, the switching system 11 and sequencer 22. Sequencer 22 upon receiving the winning input port ID transmits a write enable (WE) signal to switching system 11. Switching system 11, having received the ID'S of winning input and output ports responds to the WE signal by establishing a connection between them. The winning output port, having received the ID of the winning input port, henceforth considers itself busy. After pulsing the WE signal, arbitration sequencer 22 forwards the winning input port ID via a response line (RESP) of the global bus to all input ports RP0-RP23. This tells the winning input port that it may begin transmitting the data packet through switching system 11 to the winning output port.
If the input seed port is not storing a packet to send to the seed output port when it receives the input seed, the ~ input seed port passes the input token to the next input port. If that input port has a packet to send to the seed output port, it wins the arbitration and transmits its ID via the global bus to all output ports, to switching system 11 and to sequencer 22 in order to establish a connection to the output seed port. Otherwise the input token holder passes the input token to the next input port. The input token passing cycle continues until an input port wins the arbitration or until the input token makes its way around the token passing ring and returns to the input seed port. In that case, the input seed port transmits an end of cycle ("EOC") code to the output seed port telling it that no input port has a packet to be sent. On receipt of the EOC code, or upon receipt of a valid input port ID indicating a connection has been made, the output token holder passes the output token to the next output port.
If the output token holder is busy, it immediately passes the output token to a next output port of the ring without starting an input token passing cycle. If the output token holder is idle, it initiates a new input token passing cycle by sending its own ID and an input seed to all input ports RP0-RP23. The input ports, starting with the input seed port, then pass the input token as described above until an input port wins the arbitration or until the input seed port sends an EOC code back to the output token holder. In either case the output token holder passes the output token to the next output port which thereupon initiates yet another input token passing cycle. The process continues with each output port in turn receiving the output token and, if idle, starting an input token passing cycle in an attempt to find an input port with a packet destined for the output port.
When the output token returns to the output seed port, it sends an EOC code to the arbitration sequencer 22 indicating that the output token passing cycle has come to an end. The arbitration sequencer 22 thereafter starts a next token passing cycle by sending another output seed to the output ports TPO- TP23. As should be apparent from the foregoing discussion, the output seed port has the highest priority for obtaining a connection during an output token passing cycle because it has the first chance to initiate an input token passing cycle. To ensure all output ports have equal opportunity to establish connections over the long term, arbitration sequencer 22 starts each successive output token passing cycle by choosing a next successive one of the output ports TP0-TP23 as the output seed. Similarly, the input seed port has the highest priority for obtaining a connection to the current output token holder during an input token passing cycle, because the input seed port has the first opportunity to make the connection. Thus to ensure that all input ports are treated equally over the long term, each output port chooses a next successive one of the input ports RPO- RP23 as the input seed port each time the output port starts an input token passing cycle. FIG. 2 illustrates the local area network switch 10 of
FIG. 1 in more detailed block diagram form. Input port RPO of FIG. 1 includes an input arbiter RAO and an input buffer RBO as illustrated in FIG. 2. The input buffer RBO receives and stores packets arriving on line TXO and later forwards them on line VO . Output port TPO of FIG. 1 includes an output arbiter TAO and an output buffer TBO shown in FIG. 2. Output buffer TBO receives and stores packets arriving on line HO and forwards them to a network station via line RXO . Input ports RP1-RP23 and output ports TP1-TP23 have similar buffer and arbiter components. All input arbiters RA0-RA23 form the input token passing ring and all output arbiters TA0-TA23 form the output token passing ring. The global bus interconnects all arbiters with the arbitration sequencer 22.
Switching system 11 of FIG. 1 includes a crosspoint switch 12, a random access memory (RAM) 14 and a memory controller 24. Crosspoint switch 12 includes an array of CMOS pass transistors 20, each having source and drain terminals connected to one of horizontal lines H0-H23 and to one of vertical lines V0-V23. RAM 14 stores 24 24-bit words and ~ supplies a separate control signal CONT to the gate of each transistor 20. When a CONT signal is asserted, it turns on a pass transistor 20, thereby establishing a signal path between one horizontal and one vertical line. The state of each CONT signal supplied to a transistor 20 of the Jth row of transistors 20 is determined by a corresponding bit of a Jth data word stored in RAM 14. Upon receipt of the write enable (WE) pulse from sequencer 22, memory controller 24 writes a selected 24-bit word into RAM 14 by placing the word on bit lines B0-B23 and pulses one of word lines W0-W23. When writing a word to RAM 14, controller 24 sets all but one of bits B0-B23 to a logical "0" and sets the remaining bit to a logical "1". Controller 24 chooses the bit to be set to a "1" in response to the winning input port ID appearing on the global bus and selects the word line W0-W23 to be pulsed in response to the winning output port ID appearing on the global bus. When the bit set to a "1" arrives in RAM 14, it asserts the CONT signal supplied to a corresponding transistor 20.
That transistor then makes the connection between horizontal and vertical lines leading to the winning input and output ports.
When an input buffer, for example RBO, receives and stores a packet arriving on RX0, it checks the address data ir. the packet and communicates with mapping system 26 via the mapping bus to determine which output buffer, for example TBI should receive the packet. Input buffer RBO then transmits a connection request to input arbiter RAO via line V0, the connection request identifying the output buffer TBI. As described below, the input ports encode inaction requests and data packets so that the input arbiter can distinguish between them and can tell when they begin and end. When input arbiter RAO detects a connection request on line V0, it saves the output buffer (TBI) ID included in the connection request and thereafter arbitrates for a connection to output buffer T31.
The 24 output arbiters TA0-TA23 monitor data packets traveling on corresponding horizontal conductors H0-H23 to output buffers TB0-TB23. When the connection to output port TP1 is established, output arbiter TA1 sets an internal "IDLE1' flag to indicate that port TP1 iε now busy receiving a data packet. When it detects the end of the data packet appearing on line HI, output arbiter TAl *resets its internal IDLE flag to indicate port TPl is idle. As discussed below, each output arbiter TA0-TA23 consults its IDLE flag during the arbitration process to determine whether its port TP0-TP23 is idle and therefore available for a new connection.
Input Buffer
FIG. 3 illustrates input buffer RBO of FIG. 2 in more detailed block diagram form. Input buffers RB1-RB23 are similar. A network station transmits a data packet to input buffer RBO in serial form via bus RXO using Ethernet 10BASE-T protocol. The data packet, formatted as a standard Ethernet protocol data unit, is of variable length and includes the fields illustrated in Table I:
TABLE I
Field Field Length Purpose
PREAMBLE 7 bytes Used for synchronizing
START 1 byte Start of frame delimiter
DEST 6 bytes Destination Network address
SRC 6 bytes Source Network address
TYPE/LEN 2 bytes Type or Length of data field
DATA 46-1500 bytes Data field
CRC 4 bytes Frame check field
The PREAMBLE and START fields are fixed data patterns that are the same for all packets. The DEST field indicates the network address of the station to receive the packet. The SRC field indicates the network address of the station that transmitted the packet. The TYPE/LEN fields may indicate either the packet type or the length of the DATA field, depending on the protocol being employed. The DATA field holds the packet payload data and may be from 46 to 1500 bytes long. The CRC field is a frame check field used by the receiving station to determine whether the packet has been corrupted in transmission. Referring to FIG.. 3, a convention 10BASE-T network interface circuit 30 receives the incoming packet arriving on input bus RXO . A carrier signal conveyed on the bus indicates the beginning and end of packet transmission. As each bit of a data packet arrives, the network interface circuit 30 pulses a LOAD signal to store the bit in a 4-bit serial-in/parallel out shift register 31. When the first 4-bit "nibble" (half byte) of the data packet following the preamble has been loaded into register 31, interface circuit 30 asserts a shift-in (SI) signal to a first-in/first-out (FIFO) buffer 32, causing the FIFO buffer to store the nibble. Interface circuit 30 continues to load each successive nibble of the data packet into buffer 32.
When the longest stored nibble in FIFO buffer 32 is the first nibble of a data packet following the preamble, network interface circuit 30 transmits a START signal to a buffer state machine 34. Buffer state machine 34 controls the storage of data packets in a buffer memory, random access memory (RAM) 36. On receipt of the START signal, buffer state machine 34 begins pulsing a shift-out signal ( SO) , each pulse causing FIFO buffer 32 to shift a 4-bit data nibble out to RAM 36 via a 4-bit data bus 61. RAM 36, controlled by address and read/write control signals generated by buffer state machine 34, stores the packet data nibbles at sequential addresses. Network interface circuit 30 counts the nibbles of each packet it loads into FIFO buffer 32 and also counts pulses of the SO signal produced by buffer state machine 34 to determine how many nibbles of the state machine 34 has stored in RAM 36. After interface circuit 30 shifts the last nibble of a packet into FIFO buffer 32, it continues to count the number of nibbles the buffer state machine 34 shifts out of buffer 32 and sends an END signal to state machine 34 to tell it that it has acquired the last nibble of the packet. Buffer state machine 34 also counts nibbles of incoming packet data as they are stored in RAM 36. After receiving the END signal from network interface 30, state machine 34 stores its count in RAM 36 as a LENGTH field in a header portion of the packet. When the packet is later forwarded to an output buffer, the output buffer determines the length of the packet from the LENGTH field.
As it loads packet data into RAM 36, buffer state machine 34 determines from its nibble count when the data packet's source and destination fields (SRC, DEST) appear in FIFO buffer 32. At that point buffer state machine 34 generates a translate signal (TRANS) causing a pair of registers 40 and 42 to store the SRC and DEST fields. The TRANS signal also signals an address translation circuit 44 that new address data is available in registers 40 and 42. The address translation circuit 44 sends an interrupt signal to central address mapping system 26 of FIG. 2. The address mapping system maintains a table for translating network addresses into switch input/output port IDs. On receiving the interrupt, the address mapping system obtains the SRC and DEST fields from translation circuit 44 as well as the ID of output buffer TBO. (The source network station that sent the packet via buffer RBO should also be connected to input buffer TBO for receiving network transmissions.) The address mapping system then updates its mapping table to map the SRC field address to output buffer TBO. The mapping system uses this mapping later when any other network station sends a packet to the source station connected to buffer TBO. The address mapping system also translates the DEST field acquired from address translation circuit 44 into the ID of the output buffer to which the destination station is connected and returns the output port ID to translation circuit 44. Translation circuit 44 then delivers the output port ID (PORT_ID) to a FIFO buffer 45. The longest stored
PORT_ID in FIFO buffer 45 is supplied to a connection reqαeεt generator circuit 46. FIFO buffer 45 asse s an EMPTY signal to a transmit state machine 50 when is empty and de-asserts it when it stores a port ID. Transmit sequencer 50 controls the ~ flow of connection requests and data packets outward from input buffer RBO on conductor V0 to input arbiter RAO and switch 12 of FIG. 2. Sequencer 50 receives a GRANTED signal from a response buffer 64. Response buffer 64 monitors tne RESP line of the global bus from arbitration sequencer 22 of FIG. 2. As mentioned above, whenever sequencer 22 of FIG. 2 grants a connection request, it transmits a response on the RESP line, the response indicting the ID of the input buffer that requested the connection. When response buffer 63 detects a response conveying the ID of input port RPO, it pulses the GRANTED signal. The GRANTED signal pulse tells sequencer 50 that the last connection request made by buffer RBO has been granted-and that it is free to issue a next connection request.
If FIFO buffer 45 iε not empty, a connection request is pending. After receiving a GRANTED pulse (or after system start- up) sequencer 50 monitors an EMPTY signal asserted by FIFO buffer 45 when buffer 45 contains no port ID'S. When it sees that the EMPTY signal is de-asserted, indicating a request is pending, sequencer 45 begins pulsing a SEND signal causing the request generator 46 to produce a connection request REQ in the form of a sequence of 5-bit of data values which pass through multiplexer 52 to a shift register 56. The connection request references the output port ID longest stored in FIFO buffer 45. Shift register 56 converts the sequence of 5-bit data values to a serial data stream and forwards it on line VO to the input arbiter TAO of FIG. 2. Sequencer 50 then pulses a shift-out signal to FIFO buffer 45 telling it to shift out the next port ID, if any, to request generator 46.
When state machine 50 receives a GRANTED signal pulse it transmits a NEXT_PACKET signal to buffer state machine 34 telling it it may begin forwarding a next packet. Buffer state machine 34 then switches a multiplexer 60 to receive a hardwired 5-bit code "J" . Sequencer 34 then shifts the "J" code output of multiplexer 60 into a FIFO buffer 62, switches multiplexer 60 to select a hardwired "K" code and shifts the "K" code output of multiplexer 60 into a FIFO buffer 62. (As explained below, the JK code sequence marks the beginning of a data packet transmission on output line V0. ) Thereafter, state machine 34 switches multiplexer 60 to select the 5-bit data output of an encoder circuit 58 which converts the 4-bit data appearing on data input/output bus 61 of RAM 36 to 5-bit "4B5B" encoded form. Sequencer 34 then begins sequentially reading 4-bit nibbles of the data packet out of RAM 36. As encoder 58 converts the nibbles to 5-bit 4B5B encoded form, multiplexer 60 passes the 5- bit result to a FIFO buffer 52. Sequencer 34 strobes a shift in (SI) signal causing FIFO buffer 62 to load the 5-bit data values. FIFO buffer 62 produces a FULL signal telling state machine 34 when the buffer is full. The longest stored nibble in FIFO buffer 62 appears at an input of multiplexer 52 controlled by the transmit sequencer 50. When packet data is currently stored in FIFO buffer 62, buffer 62 de-asserts an EMPTY signal supplied to sequencer 50. When sequencer 50 is not currently sending a connection request, it switches multiplexer 52 to deliver the 5- bit output of FIFO buffer 62 to shift register 56. State machine 50 then signals shift register 56 to convert the 5-bit value to serial form and to forward the data on line V0 to switch 12 of FIG. 2. Switch 12 routes the data to the appropriate output buffer.
As buffer state machine 34 forwards packet data out of RAM 36 to FIFO buffer 62 it counts the nibbles sent and compares the count to the known length of the packet. After it forwards the last nibble of the packet through encoder 58 to FIFO buffer 62, state machine 34 switches multiplexer 60 to select and forward to FIFO buffer 62 a 5-bit hardwired "T" code. This code, which marks the end of the packet, passes through in FIFO buffer 62, multiplexer 52 and serializer 56 and travels out on line V0 at the end of the data packet. When the last bit of nibble of a packet departs FIFO buffer 62, it signals state machine 50 that it is empty. State machine 50 then waits for another GRANTED signal pulse indicating that a next connection request has been "~ established. It then signals state machine 34 with a
NEXT_PACKET signal pulse indicating that it may send out another packet. Note that whenever transmit sequencer 50 is ready to send a connection request out on line VO, it simply halts any current flow of packet data outward on line VO, forwards the connection request out on VO, and then resumes the flow of packet data. Thus a connection request may appear in the middle of a data packet flowing from input buffer RBO to one of output buffers TB1-TB23. The receiving output buffer recognizes and removes any connection requests from the data stream before forwarding them to the destination network station. Connection requests are thus forwarded to the input arbiter RAO while input buffer PBO is still busy forwarding a data packet so that the arbiter can immediately begin seeking the connection request as soon as possible after the packet currently being forwarded leaves the input buffer.
4B5B Encoding
Connection requests and data packets are transmitted on the same output line VO primarily to reduce the number of inter- module links since the input buffer and input arbiter portions of the input port may be implemented on separate integrated circuits. The input arbiter in any case monitors the VO line to ascertain when a packet transmission ends. Connection requests and data packets are "4B5B" encoded to enable the input and output arbiters and the output buffers to determine when connection requests and data packets begin and end. Consistent with the ANSI standard X379(FDDI) "4B5B" encoding system, encoder 54 converts each incoming 4-bit nibble into a 5-bit output value as illustrated in Table II.
TABLE II
NIBBLE 4B5B
0000 11110
0001 01001
0010 10100
0011 10101
0100 01010
0101 01011
0110 OHIO
0111 01111
1000 10010
1001 10011
1010 10110
1011 10111
1100 11010
1101 11011
1110 11100
1111 11101
Since only 16 of the 32 possible combinations of the five bits of a 4B5B code are needed to represent the sixteen possible values of a 4-bit nibble, the remaining 16 combinations of 4B5B code are available for other purposes . Table III below lists how the network switch of the present invention uses the remaining 16 4B5B codes.
TABLE III
4B5B NAME FUNCTION
00000 Q No Operation
11111 I Idle
00100 H No Operation
11000 J Packet Start 1
10001 K Packet Start 2
01101 T End of Packet
00111 R No Operation
11001 s No Operation
00001 V Violation
00011 V Violation
00010 V Violation
00101 V Violation
00110 V Violation
01000 V Violation
01100 V Violation
10000 CR Con. Req. Start j
The CR code is used to identify the start of a connection request. The Q, H, R and S codes are ignored when they appear in a 4B5B encoded data stream. The T code indicates the end of a 4B5B encoded data packet. The I, J, K and V codes are used to synchronize transmission and receipt of 4B5B encoded data streams in the manner described below.
Output Buffer FIG. 4 illustrates output buffer TBO of FIG. 2 in more detailed block diagram form. Output buffers TB1-TB23 are similar. Output buffer TBO includes a 10-bit serial-in, parallel-out shift register 70 clocked by the system clock signal CLK for receiving and storing data bits appearing on the HO line. A set of decoders 72 signal an input sequencer 74 when first five data bits stored in shift register 70 represent the I,V, T or CR 4B5B codes of Table II above or when all ten bits in shift register 70 represent the J and K codes in succession. A 4B5B decoder 76 converts the second stored 5-bit value into the corresponding 4-bit nibble and passes it via a multiplexer 78 to the input of a FIFO buffer 80.
FIG. 5 is state diagram illustrating a synchronization process carried out by input sequencer 74 of FIG. 4. Input sequencer 74 begins in an "out-of-synchronization" state 81. Sequencer 74 remains in state 81 until decoder 72 detects the I (idle) signal. At that point synchronizer 74 moves to a "pre- synchronization" state 82. When decoder 72 signals detection of successive J and K symbols (indicating start of a data packet) synchronizer 74 switches to a "load pattern" state 83 wherein it switch multiplexer 78 to select the output of a pattern generator 79. Pattern generator 79 produces the network protocol PREAMBLE field for the data packet, which is the same for all data packets. As pattern generator 79 produces the PREAMBLE field, sequencer 70 shifts it into FIFO buffer 80. Thereafter, sequencer 74 switches multiplexer 78 to select the output of decoder 76, It then moves to state 84 of FIG. 5 wherein asserts an SI signal on every 5th pulse of the system clock signal. If decoder 72 detects the I code while sequencer 74 reverts to its pre-synchronization state 82. If decoder 72 detects the V code sequencer 74 reverts to out-of-synchronization state 106. If decoder 72 detects the CR code (indicating start of a connection request) while sequencer 74 is in state 84, the sequencer moves to a "connection request" state 85. State 85 is similar to state 84 except that in state 85 sequencer 74 does not shift the output of decoder 76 into FIFO buffer 80. Sequencer 74 retrains in state 112 for the number of system clock cycles require for the connection requeεt to pass through shift register 70. The sequencer 74 then reverts to state 84 to resume processing the data packet. Referring again to FIG. 4, when FIFO buffer 80 signals it is not empty, a buffer state machine 86 shifts data out of FIFO buffer 80 onto a 4-bit data input/output bus of a random access memory (RAM) 87. State machine 82 then supplies address and control signals to RAM 87 causing it to store the 4-bit nibble in RAM 86. State machine 86 uses RAM 87 as a large FIFO buffer for assembling and storing each data packet until it can be transmitted outward to the destination station. As each data packet arrives, state machine 86 checks its LENGTH field to determine the length of the packet. When the packet is fully assembled state machine 86 reads each successive nibble of the packet out of RAM 87 and shifts it into a FIFO buffer 88, bypassing the LENGTH field. State machine 86 monitors a FULL signal produced by FIFO buffer 88 and suspends loading data into buffer 88 when it is full. The longest stored nibble in FIFO buffer 88 is supplied to a 4-bit parallel-in/serial-out shift register 89. The serial output of shift register 89 passes to a conventional network interface circuit 90 which forwards each bit to the receiving network station via the TXO bus. When it forwards a bit to the TXO bus, interface circuit 90 signals an output state machine 91 and state machine 91 signals shift register 89 to shift out a bit. When a 4-bit nibble has been shifted out of register 89, state machine 91 checks an EMPTY signal produced by FIFO buffer 88. If FIFO buffer 88 is not empty, state machine 91 shifts a next nibble of the packet out of FIFO buffer 88 and shifts it into shift register 89.
MEMORY CONTROLLER
FIG. 6 illustrates memory controller 24 of FIG. 2 in more detailed block diagram. Memory controller 24 includes a pair of decoders 92 and 93 and a set of tri-state buffers 94. Decoders 92 and 93 receive the 5-bit INPUT_PORT and
OUTPUT_PORT IDs from the winning input and output port via the global bus. Decoder 92 produces 24 output bits B0-B23 supplied to RAM 14 of FIG. 2. Decoder 92 sets all bits B0-E23 to a logical "0" except one particular bit referenced by the INPUT_PORT ID. Decoder 92 sets that bit to a logical "1".
Decoder 93 also produces 24 output bits W0'- W23 ' , setting all of them to a logical "0" except one particular bit referenced by the OUTPUT_PORT ID, Decoder 93 sets that bit to a logical "1". Tri-state buffers 94.connect the WO'- W23 ' signals to word lines W0-W23 of RAM 14 of FIG. 2. A pulse of the WE signal from arbitration sequencer 22 of FIG. 2 briefly enables tri-state buffers 94 causing a pulse to appear on one of word line W0-W23 corresponding to the particular one of bits WO '- W23' set to a logical "1". RAM 14 of FIG. 2 responds to the pulse by storing the 24 data bits B0-B23 at a row corresponding to the pulsed word line. Since only one of bits B0-B23 is a logical "1", switch 12 of FIG. 2 makes only one connection to the output buffer corresponding to the row and breaks any other connections to that buffer.
ADDRESS TRANSLATION FIG. 7 illustrates the address mapping system 26 of FIG. 2 and address translation unit 44 of FIG. 3 in more detailed block diagram form. Address translation unit 44 includes a state machine 95, a comparator 96, an AND gate 97 and a bus interface circuit 98. Address mapping system 26 includes a microcomputer 100, a counter 101 and a set of tri-state buffers 103-105.
FIG. 8 is a flow chart illustrating operation of microcomputer 100 and FIG. 9 is a flow chart illustrating operation of state machine 95. Referring to FIGS. 3 7, 8 and 9, when 48-bit destination (DEST) and source (SOURCE) address fields have been stored in registers 40 and 42 (FIG. 3), buffer state machine 34 signals address translation unit 44 by pulsing a TRANS signal. Address mapping system 26 continuously polls the address translation unit 44 to determine if the translation unit has a pending translation request. Counter 101 produces an output count indicating the ID of the buffer being polled (PORT_ID) .
Following system start up, microcomputer 100 asserts a POLL output signal (step 108) . The POLL signal enables buffers 103 and 104 which send the PORT_ID of counter 101 via lines 106 to an input of a comparator 96 within each translation unit 44. The ID of the input buffer in which each translation unit 44 resides (MY_ID) is applied to a second input of comparator 96. When PORT_ID matches MY_ID, comparator 96 asserts its output signal. The comparator 96 output signal and the POLL signal produced by microcomputer 100 are supplied to inputs of AND gate 97. Thus AND gate 97 asserts its output when buffer MY_ID is being polled.
After asserting the POLL signal (step 108), microcomputer 100 looks for an acknowledge (ACK) signal input from one of the translation units 44 (step 109) indicating the unit 44 has a pending translation request. If microcomputer 100 does not detect an ACK signal pulse (step 109) it pulses a NEXT signal which clocks counter 101 (step 110) . Counter ICI then increments the value of PORT_ID. That new PORT_ID value iε sent to the translation units (step 108) and microcomputer 100 looks for an ACK pulse in response (step 109) .
Microcomputer 100 continues to cycle through steps 108-110 polling each buffer in turn until it obtains an ACK response at step 109 from a polled translation unit 44 having a pending translation. The ACK signal pulse tells microcomputer 100 to read the SOURCE data field from register 40 via bus lines 107 and bus interface circuit 98 (step 111) and to create a table entry relating the port ID output of counter 101 to the incoming network SOURCE address (112) . Thereafter, microcomputer 100 turns off its POLL signal (step 113) to disable bufferε 103 and 104 and to enable buffer 105.
Microcomputer 100 then readε the deεtination DEST data field from register 42 via bus lines 107 and bus interface circuit 98 (step 114) . Thereafter it accesses its internal lookup-table to determine the corresponding output port ID, places the output port (PORT_ID) on lines 106 (step 116), sends a STEP signal pulse to state machine 95 (step 116) and then waits for an ACK signal pulse (step 117) . It then starts another polling cycle by pulsing the NEXT signal (step 110), turning on the POLL signal (step 108) and then looking for ~ another ACK response (step 109) .
Following system startup, state machine 95 waits for a TRANS signal pulse (step 118) indicating that new SOURCE and DEST fields are available in registers 40 and 42 (FIG. 3) It then waits until the output of AND gate 97 indicates it is being polled (step 119) . It then sends an ACK signal pulse tc microcomputer 100 (step 120) and awaits a STEP signal pulse indicating the DEST field haε been translated an that the corresponding output PORT_ID is ready on lines 106 (step 125) . On receipt of the STEP signal pulse, state machine 95 pulses the shift in (SI) input signal to FIFO buffer 45 of FIG. 3 (step 126) which stores the port ID appearing on data bus 106 for subsequent use in a connection request. Thereafter state machine 95 pulses the ACK signal (step 127) and returns to step 118 where it waits for another translation request.
ARBITRATION In a preferred embodiment of the invention, as illustrated in FIGS. 10-15, LAN switch 10 of FIG. 2 employs "output polling" arbitration. In an alternative embodiment of the invention, as illustrated in FIGS. 16-22 LAN switch 10 of FIG. 2 employs "event driven" arbitration. In both systems the arbitration sequencer 22 initiates each output token passing cycle. Also in both systems, each idle output arbiter, upon receiving an output token, initiates an input token passing cycle in an attempt to establish a connection to an input port. In the output polling arbitration system, sequencer 22 initiates an output token passing cycle upon system start up and starts a new output token passing cycle whenever a previous output token passing cycle ends. However, in the event driven arbitration system, arbitration sequencer 22 starts an output token passing cycle only when an input arbiter RA0-RA23 signals sequencer 22 that it has a new connection request or when an output arbiters TA0-TA23 signals that its port has become newly idle. The input and output arbiters RA0-RA23 and TA0-TA23 and the arbitration sequencer 22 of FIG. 2 differ in some respects for the two types of " arbitration systems. Output Arbiter - Output Polling
FIG. 10 illustrates an output arbiter RAO of FIG. 2 for use in the output polling system in more detailed block diagram form. The global bus of FIG. 2 which interconnects the input and output arbiters and the arbitration sequencer 22 includes 24 lines conveying eight data values or control signals as illustrated in Table IV.
TABLE IV
VALUE/SIGNAL LINES PURPOSE
CLK 1 Global clock
INPUT_SEED 5 Input seed ID
OUTPUT_SEED 5 Output seed ID
INPUT_PORT 5 Input token holder ID
OUTPUT_PORT 5 Output token holder ID
REQUEST 1 Connection Request
SAMPLE_EVENTS 1 Starts token passing cycle
GRANTED 1 Indicates connection granted
Output arbiter TAO includes a state machine 127 clocked by the system clock (CLK) for controlling arbiter operation. Arbiter TAO also includes an end-of-packet (EOP) detection circuit 128 for detecting the end of a data packet appearing on horizontal line HO of switch 12 (FIG. 2) . The Q output of a flip-flop 129, supplied as an IDLE signal to state machine 127, indicates when the port is idle. Detection circuit 128 sets flip-flop 129 when it detects the end of a packet. State machine 127 resets the flip-flop whenever a connection to the port has been granted. Output arbiter TDO also includes a set of three tri-state buffers 130-132, a set of comparators 133-135 and an "input seed generator" circuit 136. Comparator 133 asserts its output signal when an output port ID appearing on the OUTPUT_SEED lines matches MY_ID, the ID of output port TPO. Comparator 134 asserts its output signal when data appearing on the INPUT_PORT lines matches an end-of-cycle (EOC) code. Comparator 135 asserts its output signal when an output port ID appearing on the OUTPUT_PORT lines matches MY_ID.
FIG. 11 iε a flow chart illuεtrating operation of εtate machine 127 of FIG. 10. Referring to FIGS. 10 and 11, on εystem power up, state machine 127 initializes itself (step 140) . During step 140, state machine 127 de-asεertε itε OUTPUT_TOKEN signal supplied to the next output arbiter. State machine 127 also sets three output signals END_CYCLE, CONSUME and SEED to turn off the three tri-state buffers
130-132 and pulses the CLEAR output signal to reset flip-flop 128. State machine 127 then awaits a pulse on the SAMPLE_EVENTS line (step 142) .
To start a token passing cycle, central arbitration sequencer 22 (FIG. 2) places the ID of one of the output ports on the OUTPUT_SEED lines and then signals the start of the output token passing cycle by pulsing the SAMPLE_EVENTS line. On detecting the SAMPLE_EVENTS pulse, state machine 127 determines whether its output port is the output seed by looking at the output of comparator 133 (step 144) . As shown in FIG. 10, comparator 133 compares the output port's ID (MY_ID) with the port ID conveyed on the OUTPUT_SEED lines and signals state machine 127 with the comparison result. If output port TPO is not the output seed, then state machine 127 waits (step 146) until it has received the output token (i.e. its input OUTPUT_TOKEN signal iε asserted) and then moves to step 148. Otherwise if output port TPO is the output seed and has not received the output token (step 147), sate machine 12 moves directly to step 148. At step 148 state machine 127 checks its IDLE input signal to determine whether its output port TPO is idle. If port TPO is not idle, state machine 127 passes the output token to the next output port (step 149) . If port TPO is idle at step 148, state machine 127 pulses a NEXT signal input to " seed generator 136 and sets its CONSUME and SEED output signals to turn on tri-state bufferε 131 and 132 of FIG. 10 (step 150) . When tri-state buffer 131 turns on, it places the ID of output port TPO. (MY_ID) on the OUTPUT_PORT lines. Seed generator 136 contains a rotating table of input port IDs and supplies one of the input port IDs as input to buffer 132. A pulse of the NEXT signal tells seed generator 136 to select a next one of the input port IDs from its rotating table as its output. When tri-state buffer 132 turns on it places the output of SEED generator 136, the ID of one of input ports RP1-RP23, on the INPUT_SEED lines. When a valid ID appears on the INPUT_SEED lines, the input arbiters RA0-RA23 arbitrate for connection to the output port (TPO) whose ID appears on the OUTPUT_PORT lines. If an input arbiter having a pending connection request for output port TPO wins the arbitration, it places its input port ID on the INPUT_PORT lines and asεertε the REQUEST signal line. If no input arbiter has a pending request for output port TPO, the seed input port places an EOC (end-of- cycle) code on the INPUT_PORT lines. After initiating an input token passing cycle at step 150, state machine 127 cycles through steps 152 and 154 looking for either an EOC code on the INPUT_PORT lines (step 152) or assertion of the REQUEST signal (step 154) . If the REQUEST signal is asserted, there is a pending request for port TPO that is about to be granted. Accordingly state machine 127 resets flip-flop 129 (step 156) to indicate port TPO is no longer idle and then waits for assertion of the GRANTED signal (step 158) . Central arbitration sequencer 22 of FIG. 2 asserts the GRANTED signal when it has established the connection between input and output portε. After the connection has been granted, state machine 127 passes the output token to the next output port (step 160) . After passing the output token at steps 149 or 160, state machine 127 again checks whether port TPO is the output seed (step 162) . If not, state machine 127 waits until the output of comparator 135 indicates that an EOC code appears on the OUTPUT_PORT lines (step 164) . The output seed places the EOC code on the OUTPUT_PORT lines to mark the end of the output token passing cycle. At that point state machine 127 re-initializes the output arbitrator (step 140) and then waits (step 142) for a SAMPLE_EVENTS pulse signaling the start of another output token passing cycle.
If state machine 127 determines at either step 144 or 162 that port PTO is the output seed, it reverts to step 147 where it checks whether it has the output token (step 147) . If the output seed has received the token, the output token passing cycle has ended, all output arbiterε having received and passed the output token. Thus state machine 127 sets its END_CYCLE output signal (FIG. 10) to turn on tri-state buffer 130 to put the EOC code on the OUTPUT_PORT lines (step 165) tc signal the end of the output token passing cycle. State machine 127 then waits (step 168) until the central arbiter 22 (FIG. 2) responds to the EOC code by pulsing the GRANTED signal. State machine 22 then returns to initialize step 140, re-initializes the output arbiter and thereafter awaits the start of another output token paεεing cycle (step 142) .
Input Arbiter - Output Polling
FIG. 12 illustrates an input arbiter RAO of FIG. 2 for use in the output polling arbitration system. Arbiters
RA1-RA23 are similar. Arbiter RAO includes a state machine 170 for sequencing arbiter operations. An interface circuit 172 monitors a connection requests arriving from input buffer RBO via vertical line V0 of switch 12 (FIG. 2) and stores the ID (PORT_ID) of the destination port conveyed in an incoming request. If the VO line is not conveying a packet, or when interface circuit 172 detects the end of a packet transmission on the VO line, interface circuit 172 supplies its stored P0RT_ID data to the input of a register 174, input enabled by the SAMPLE_EVENTS signal. When the connection request is granted, state machine 170 pulses a CLEAR signal to clear the PORT_ID data stored in interface 172. A comparator 176 signals state machine 170 when the destination port ID (PORT_ID) stored in register 174 matches the ID conveyed on ~ the OUTPUT_PORT line. A tri-state buffer 178 when enabled by a CONSUME output of state machine 170, places the ID (MY_ID) of input buffer RBO on the INPUT_PORT lines. A tri-state buffer 179 when enabled by a END_CYCLE output of state machine 170, places the EOC code on the INPUT_PORT lines. A comparator 180 signals state machine 170 when MY_ID, the ID of input buffer RBO, matches the input port ID conveyed on the INPUT_SEED lines. A comparator 181 signals state machine 170 when the INPUT_PORT lines convey the EOC code.
FIG. 13 is a flow chart illustrating operation of state machine 170. Referring to FIGS. 12 and 13, following system power up, state machine 170 initializes by setting its CONSUME output signal to turn off buffer 178 and by pulsing the CLEAR signal to initialize the P0RT_ID data in interface circuit 172 (step 182) . Thereafter state machine waits (step 184) until it detects a pulse on the SAMPLE_EVENTS line, indicating the start of a token passing cycle. State machine 170 then checks the output of comparator 180 to determine if its input port
(RPO) is the input seed (step 186) . If port RPO is the input seed and does not have the token (step 188) or if input port RPO is not the input seed but does have the token (step 190), state machine 170 checks the output of comparator 176 to determine if there is a pending request for the output buffer whose ID appears on the OUTPUT_PORT lines (step 192) . If input port RPO does not have a pending request for the output buffer, state machine 170 passes the input token (step 194) by asserting its output INPUT_TOKEN signal. It then waits for a pulse of the GRANTED signal or appearance of an EOC code on the INPUT_PORT lines (step 196) indicating the end of either an output or input token passing cycle. Thereafter, state machine 170 reinitializes (step 182) and waits for the start of another input token passing cycle (step 184) . If at step 190 state machine 170 has not received the input token, it cycles through steps 190 and 191 until it receives the input token (step 190) or until it detects from the outputs of comparator 180 that a request has been granted (step 191) . If a request is granted to another input before state machine 170 receives the input token, state machine 170 re- initializes (step 182) and waits for the start of another input token passing cycle (step 184) . If at step 192 state machine 170 determines from the output of buffer 176 that t has a pending request for the output buffer whose ID appears on the OUTPUT_PORT lines, then at εtep 198 state machine 170 sets its CONSUME signal output to turn on buffer 178 thereby placing the ID of input port RPO on the INPUT_PORT lines. At step 198 state machine 170 also asserts the REQUEST signal to signal that it is requesting a connection and pulses its CLEAR output to clear the connection request in interface circuit 172. The state machine 170 then waits for a pulse of the GRANTED signal or appearance of an
EOC code on the INPUT_PORT lines (step 196) indicating the end of either an output or input token passing cycle. Thereafter, state machine 170 re-initializes (step 182) and waits for the start of another input token pasεing cycle (εtep 184) . If state machine 170 determines at step 186 that its input port iε the input seed and at step 188 that it has the input token, then state machine 170 sets its END_CYCLE output signal so that buffer 179 places the EOC code on the INPUT_PORT line (step 200) to εignal the end of the input token pasεing cycle. It then waitε (εtep 202) for sequencer
22 of FIG. 2 to acknowledge the end of the input token passing cycle by pulsing the GRANTED signal. Thereafter εtate machine 170 re-initializeε (step 182) and waits for the start of another input token passing cycle (step 184) .
Arbitration Sequencer - Output Polling
FIG. 14 illustrates arbitration sequencer 22 of FIG. 2 in more detailed block diagram form. Sequencer 22 includes a state machine 210 for sequencing device operations. An output seed generator 212 contains a rotating table of output p' t IDs and places one of the output port IDs on the OUTPUT_ :.D lines of the global bus. A pulse of a NEXT signal produ.. :1 by εtate machine 210 tells seed generator 212 to select a next one of the output port IDs from its rotating table for placement on the OUTPUT_SEED lines. A comparator 214 signalε state machine 210 when the 0UTPUT_P0RT lines convey the EOC (end-of-cycle) code. State machine 210 also εupplieε the write enable εignal WE for the memory controller. When state machine pulses a shift in (SI) signal, a parallel-in/serial out shift register 218 stores the input port ID appearing on the INPUT_PORT lines. When state machine 210 asserts a RESPOND signal, a tri-state buffer 220 connects the output of shift register 218 to a response line RESP of the global bus. State machine pulses a shift out signal (SO) to serially shift the input port ID out of shift register 218, thereby εending a. response to input buffers RB0-RB23 of FIG. 2 via the RESP lines. This tells the indicated input buffer that its last connection request has been granted..
FIG. 15 is a flow chart illustration operation of state machine 210 of FIG. 14. Referring to FIGS. 14 and 15, state machine 210 initializes following power up by setting the RESPOND signal to turn off buffer 220, and driving its GRANTED and SAMPLE_EVENTS signals low. (step 230) . State machine 210 then pulses the NEXT signal causing seed generator 212 to place an output port ID on the OUTPUT_SEED lines (step 234) . State machine 210 next pulses the SAMPLE_EVENTS line to signal the start of an output token passing cycle (step 236) . It then continues to repeat steps 238 and 240 until at step 238 it detects a pulse on the REQUEST signal or at step 240 comparator 214 signals detection of the EOC code on the OUTPUT_PORT line. An input arbiter pulses the REQUEST signal to request a connection between input and output ports identified by the codes on the INPUT_PORT and OUTPUT_PORT lines. On detection of the REQUEST signal pulse at step 238, state machine 210 transmits a write enable signal WE to memory controller 24 of FIG. 2 (step 242) . The memory controller responds by storing data in RAM 14 of FIG. 2 establishing the connection between the winning input and output ports. State machine 210 then pulses the GRANTED line (step 244) to tell the input and output buffers that the request is granted and pulseε the SI signal to load the input port ID into shift register 218 (step 246) . State machine 210 then sendε a response to the input buffers (step 248) by asserting the RESPOND signal to turn on buffer 220 and pulsing the SO signal to shift the input port ID onto the RESP line via bμffer 220. Thereafter state machine 210 returns to εtepε 238/240. If, at step 240, comparator 214 εignals state machine 210 that it has detected the end of an output token passing cycle, state machine 210 re-initializes (step 230) and begins a next output token passing cycle.
EVENT DRIVEN ARBITRATION In an alternative embodiment of the invention, s illustrated in FIGS. 16-22, LAN switch 10 of FIG. 2 employs event driven arbitration. In this system, an output arbitration cycle begins either when an output buffer becomes newly idle or when an input buffer issues a new connection request. In the event driven version of switch 10, the global buε interconnecting the input and output arbiters and the arbitration sequencer 22 includes 26 lines conveying 10 data values or control signals as illustrated in Table V.
TABLE V
VALUE/SIGNAL LINES PURPOSE
CLK 1 Global clock
INPUT_SEED 5 Input seed ID
OUTPUT_SEED 5 Output seed ID
INPUT_PORT 5 Input token holder ID
OUTPUT_PORT 5 Output token holder ID
OUTPUT_ARB_CYCLE 1 Startε output token paεsing
INPUT_ARB_CYCLE 1 Starts input token passing
SAMPLE_EVENTS 1 Samples new request for new idle
NEW_REQ 1 New request signal
NEW_IDLE 1 New idle signal
Arbitration Sequencer - Event Driven
FIG. 16 illustrates the event driven version of arbitration sequencer 22 of FIG. 2 in more detailed block diagram form. Sequencer 22 incudes a state machine 400 for controlling sequencer operation, and seed generator circuits 402 and 404 for generating an output and input seeds. Tri-state buffers 406 and 408 respectively connect outputs of seed generator circuits 402 and 404 to the OUTPUT_SEED and INPUT_SEED lines of the GLOBAL bus. A decoder 408 signals state machine 400 when detects EOC (end of cycle) or valid input port ID codes on the INPUT_PORT lines of the GLOBAL bus . A shift register 412, connected to the RESP bus via a tri-state buffer 414 serially transmits the ID of a winning input buffer appearing on the INPUT_PORT lines as a connection response to the input buffers.
FIG. 17 is a flow chart detailing the logic of state machine 400 of FIG. 16. Referring to FIGS. 16 and 17, after syεtem power up, εtate machine 400 transmits a pulse on a SAMPLE_EVENTS line of the GLOBAL bus to all input and output arbiters (step 422) . On receipt of the SAMPLE_EVENTS pulse, each output arbiter for an output buffer having become idle since a last received SAMPLE_EVENTS pulse asserts a NEW_IDLE signal on a line of the GLOBAL bus. Similarly on receipt of a SAMPLE_EVENTS pulse, each input arbiter having stored a new connection request since the last SAMPLE_EVENTS pulse asserts a NEW_REQ line of the GLOBAL bus . State machine 400 checks the NEW_IDLE and NEW_REQ lines (stepε 424 and 425), and if neither line is asserted, returns to step 422 where it again pulses the SAMPLE_EVENTS line. State machine 400 continues to cycle through steps 422, 424 and 425 until it detects assertion of either the NEW_IDLE or the NEW_REQ line.
On detecting assertion of the NEW_IDLE line, εtate machine 400 pulses a NEXT_OUTPUT signal telling seed generator 402 to output a new output seed (step 426) and then asserts a SEED_OUT signal (step 428) to turn on tri-state buffer 406 to place the output seed on the OUTPUT_SEED lines of the GLOBAL bus. State machine 400 then pulses an OUTPUT_ARB_CYCLE line of the GLOBAL bus (step 430) .
The OUTPUT_ARB_CYCLE pulse tells the input and output ""* arbiters to arbitrate for a connection. The state machine 400 then waits at step 432 until decoder 408 detects on the INPUT_PORT lines either a valid input port ID, indicating that a connection request is ready to be granted, or an end-of-cycle code (EOC) indicating that no connection request is ready to be granted. If the arbiters determine that a connection request can be granted, the IDs of the winning input and output buffers appear on the INPUT_PORT and
OUTPUT_PORT lines. When decoder 408 indicates a valid input port ID appears on the INPUT_PORT lines, state machine 400 sends the write enable signal WE to memory controller telling it to grant the request by making the connection (step 434) . State machine 400 then εendε a response to the input bufferε (step 436) by pulsing an SI signal causing shift register 412 to load the input port ID on the INPUT_PORT lines, asserting a RESPOND signal to turn on tri-state buffer 414, and then successively pulsing an SO signal causing shift register 412 to shift out the input port ID onto the RESP line to the inpuc buffers. Thereafter state machine 400 pulses the OUTPUT_ARB_CYCLE line to tell all arbiters that the request has been granted (step 438) . State machine 400 then returns to step 422. If at step 432 decoder 408 detects the EOC code on the INPUT_PORT lines, state machine 400 skips steps 434 and 436 and no connection is granted.
On detecting asεertion of the NEW_REQ line at step 425, state machine 400 pulseε a NEXT_INPUT εignal telling εeed generator 404 to output a new input εeed (step 440) and then asserts a SEED_IN signal (step 442) to turn on tri-state buffer 408 to place the input seed on the INPUT_SEED lines of the GLOBAL bus. State machine 400 then pulses an INPUT_ARB_CYCLE line of the GLOBAL bus (step 444) . The INPUT_ARB_CYCLE pulse tells the input and output arbiters to arbitrate for a connection. The state machine 400 then performs steps 432, 434, 436 438 in the manner described above to gr .nt any connection requested by the input and output arbiters and to send a responεe to the input bufferε if a connection is granted. Output Arbiter - Event Driven.
FIG. 18 illustrates the event driven version of output arbiter TAO of FIG. 2 in more detailed block diagram form. Output arbiters TA1-TA23 of FIG. 2 are similar. Arbiter TAO includes a state machine 500 for controlling arbiter operations. An end-of-packet (EOP) detector 502 detects the end of a packet passing along horizontal line HO of crosspoint switch 12 of FIG. 2 to output buffer TBO. On detecting a packet end, detector 502 sets a pair of flip-flops 504 and 505 which may be separately reset by state machine 500. The Q output of flip-flop 504 supplieε an IDLE input to εtate machine 500. The Q output of flip-flop 506 provides another input to state machine 500 and turns on a tri-state buffer SOS which pulls down (asserts) the NEW_IDLE line of the GLOBAL bus. A comparator 510 signals state machine 500 when the ID (MY_ID) of output port TPO appears on the OUTPUT_SEED lines. A comparator 512 signals state machine 500 when the end of cycle (EOC) code appears on the INPUT_PORT lines. A comparator 514 signals state machine 500 when MY_ID appears on the OUTPUT_PORT lines. A tri-state buffer 516 responds to a CONSUME signal from state machine 500 by placing MY_ID on the OUTPUT_PORT lines. A seed generator 518 linked to the INPUT_SEED lines via a tri-state buffer 520 places an input port ID on the INPUT_SEED lines when state machine 500 asserts a SEED signal. When state machine 520 supplies a NEXT signal pulse to seed generator 518, the seed generator selects a next input port ID as the input seed.
FIG. 19 is a flow chart illustrating operation of state machine 500 of FIG. 18. Following system start up, state machine 500 waits for a pulse on the SAMPLE_EVENTS line (step 522) . On receipt of the SAMPLE_EVENTS pulse, it checks whether the central arbitration sequencer is asserting the OUTPUT_ARB_CYCLE or INPUT_ARB_CYCLE lines (steps 524 and 526) . As discussed above, sequencer 22 of FIG. 2 places a port ID or. ~ the OUTPUT_SEED lines and pulεes the OUTPUT_ARB_CYCLE line if one or more of the output arbiters are asserting the NEW_IDLE line. Output arbiter TAO respondε to the OUTPUT_ARB_CYCLE pulse by checking the. output of comparator 510 to determine if its port (TPO) is the output seed (step 528) . If not, arbiter TAO determines whether it has received the output token (step 530) . If it has not received the output token, it checks whether the central arbitration sequencer is again asserting the OUTPUT_ARB_CYCLE signal (step 532) . If, so the output token passing cycle is over, another output arbiter having won the arbitration. State machine 500 then returns to step 522 to await another token pasεing cycle. Otherwise, if the OUTPUT_ARB_CYCLE signal has not been asεerted, εtate machine 500 returns to εtep 528.
If at εtep 528 εtate machine 500 learnε that it is the output seed, or learns that port TPO is not the output seed (step 528) and state machine 500 of arbiter TAO has received the output token, state machine 500 checks the IDLE signal from flip-flop 506 to determine if its output port TPO is newly idle (step 534) . If not, state machine 500 passes the output token (step 536) and returns to step 528 via step 532. Otherwise, if output port TPO is idle (step 534), state machine 500 asserts a CONSUME signal to turn on tri-state buffer 516 (step 538), thereby placing the ID (MY_ID) of output port TPO on the OUTPUT_PORT lines. State machine 500 also assertε the SEED signal to turn on tri-state buffer 520, thereby placing an input port ID produced by seed generator 518 on the INPUT_SEED lines (step 540) . This tells the input arbiters to arbitrate for the right to connect to port TPO.
While the input arbiters are arbitrating, output arbiter TAO monitors the OUTPUT_ARB_CYCLES line (step 542) and the output of comparator 512 (step 544) to determine whether the arbitration was succeεsful or unsuccessful. If the arbitration was successful, the central arbitration sequencer will pulse the OUTPUT_ARB_CYCLE line 542 and state machine 500 will (at step 546) pulse its NEXT signal to increment the output of seed generator 134, reset flip-flops 504 and 506 to indicate the output buffer iε no longer idle, and de-assert the CONSUME and SEED signals to turn off buffers 516 and 520. State machine 500 then reverts to step 522 to await the start of another token passing cycle.
If the arbitration was unsuccessful (no input port had a pending request for the newly idle output port TPO) , then the seed input arbiter will place the EOC code on the INPUT_PORT lines and comparator 512 will notify state machine 500 of this event. At that point state machine 500 will (step 548) reset flip-flop 506 and de-asεert the CONSUME and SEED signals to turn off buffers 516 and 520. Note that since port TPO is still idle the state machine 500 does not reset flip-flop 504. But it does reset state machine 506 because port TPO is no longer "newly" idle.
When one or more of the input arbiters asserts the NEW_REQ line, the central arbitration sequencer will start an input token passing cycle by pulsing the SAMPLE_EVENTS line and INPUT_ARB_CYCLE lines. At step 526 state machine 500 responds to the INPUT_ARB_CYCLE pulse by checking the IDLE output of FLIP- FLOP 504 to determine if output port TPO iε idle (step 550) . If the output buffer is not idle, state machine 500 returns to step 522 to await the start of a new token pasεing cycle. If output port TPO iε idle, εtate machine 500 checks the output of comparator 514 to determine if the ID of output port TPO (MY_ID) is on the OUTPUT_PORT lines (step 552) . If not, state machine 500 returns to step 522 to await a new token passing cycle. If MY_ID appears on the OUTPUT_PORT lines, then an input buffer with a pending request for port TPO has won the right to have the request granted. Thereafter (step 554) state machine 500 asserts the SEED signal to turn on buffer 520 which places an input port ID on the INPUT_SEED lines. State machine 500 also asserts and OUTPUT_IDLE line (step 554) . Thereafter state machine 50: where it waits for assertion of the OUTPUT_ARB_CYCLE signal indicating the connection requeεt has been granted (step 542) . When the connection request is granted, state machine 500 pulseε its NEXT signal to increment the output of seed generator 518 and resets flip-flops 504 and 506 to indicate the output buffer iε no longer idle (εtep 546) and then reverts to step 522 to await the start of another token pasεing cycle.
Input Arbiter - Event Driven FIG. 20 illuεtrateε the event driven version of output arbiter RAO of FIG. 2 in more detailed block diagram form. Output arbiters RA1-RA23 of FIG. 2 are similar. Arbiter RAO includes a state machine 600 for controlling arbiter operations. An interface circuit 602 watches for commands appearing on vertical line V0 of switch 12 (FIG. 2) from input buffer RBO, stores the destination port ID (P0RT_ID) conveyed in the command. Interface circuit 602 determines when line V0 is conveying a data packet by noting the beginning and ending of data packets. When line V0 is no longer busy, circuit 602 sets a flip-flop 610. The Q output of flip-flop 610 provides an input to state machine 600 and also turns on a tri-state buffer 612. The output of buffer 612 pulls down (asserts) the NEW_REQ line of the GLOBAL bus when buffer 612 is turned on. Interface circuit 602 produces output data indicating the requested destination output port ID (PORT_ID) . A register 604 stores the PORT_ID data in response to a SAMPLE_EVENTS signal pulse and a comparator 606 signals state machine 600 when the PORT_ID data stored in register 604 matches the port ID appearing on the OUTPUT_PORT lines of the GLOBAL bus . A tristate buffer 608 places the PORT_ID data stored in register 604 on the OUTPUT_PORT lines when εtate machine 600 asserts output signal REQ.
When circuit 602 receives a connection request it sets flip flop 610 When the request has been granted, εtate machine 600 resets flip-flop 610. It also pulses a CLEAR output signal to tell circuit 602. The CLEAR signal pulse tells circuit 602 to clear the PORT_ID data from its memory and begin watching for another connection request. A tri-state buffer 614 places MY_ID (the ID of input port RPO) on the INPUT_PORT line when turned on by a CONSUME signal output of state machine 600. A tri-state buffer 616 places the EOC code on the INPUT_PORT line when turned on by an END_CYCLE εignal output of εtate machine 600. A comparator 618 εignalε state machine 600 when MY_ID appears on the INPUT_SEED lines and a comparator 620 signals state machine 600 when the EOC code appears on the INPUT_PORT lines. FIGS. 21 and 22 are flow charts depicting operations of state machine 600 of FIG. 20. Referring to FIGS. 21 and 22, after system power up, state machine 600 waits for a pulse of the SAMPLE_EVENTS signal (step 622) and then looks for a pulse of the OUTPUT_ARB_CYCLE signal (step 624) indicating that an output port is newly idle and that an output token passing cycle has begun. If so, state machine 600 checks the output of comparator 618 to determine if its input port RPO is the input seed (step 626) . If input port RPO is the input seed, state machine 600 checks whether it has received the input token (step 628) . If not, state machine 600 checks the output of comparator 606 to determine if the output port ID appearing on the OUTPUT_PORT lines matches the PORT_ID value stored in register 604. If not, state machine 600 pass the input token (step 632) and then looks for a pulse on the OUTPUT_ARB_CYCLE line indicating the output arbitration has been won by another input port (step 634) . If another input port has not won, state machine 600 checks the output of comparator 620 to determine if the EOC code appears on the INPUT_PORT lines. If not, state machine returns to step 626. IF input port RPO is not the input seed (step 626), then state machine 600 determineε whether it haε received the input token (step 638) and if not, returns to step 626 via stepε 634 and 638. When state machine 600 determineε at step 638 it has received the input token, it moves to step 630. If at step 630 the output of comparator 606 indicates the port ID on
OUTPUT_PORT matches PORT_ID in register 604, then port RPO has a pending request for the indicated output port. In that event, state machine 600 asserts the CONSUME signal to place MY_ID (the ID of input buffer RBO) on the INPUT_PORT lines (640) and then waits (step 642) for the central arbitration sequencer to pulse the OUTPUT_ARB_CYCLE to indicate the connection between input and output buffers has be made. At that point (step 644) .state machine 600 pulses the CLEAR εignal to clear the request from circuit 602 and resets flip-flop 610 to turn off the NEW_REQ signal. It then returns to step 622 to await the start of a new input token passing cycle. If at step 628 input port TPO is the input seed and state machine 600 has determined that it has received the input token, state machine asserts the END__CYCLE signal (step 646) causing buffer 616 to place the EOC code on the INPUT_PORT lines. The EOC code tellε all arbiterε that no input buffer haε a pending request for the newly idle output buffer. State machine 600 then reverts to εtep 622 to await another token passing cycle.
If at step 624 state machine 600 does not detect an OUTPUT_ARB_CYCLE pulse, it looks for an INPUT_ARB_CYCLE pulse from the central arbitration sequencer (εtep 648, FIG. 22) indicating that an input buffer haε a new connection request. On detecting the INPUT_ARB_CYCLE pulse, state machine 600 checks the output of comparator 618 to determine if input port RPO is the input seed (step 650) . If so state machine 600 checks whether it has received the input token (step 652) . If it has received the input token, the token passing cycle is over and no new connection request has been granted. In that case state machine 600 pulses its END_CYCLE output causing buffer 616 to place the EOC code on the INPUT_PORT lines (step 654) and returns to step 622 (FIG. 21) to await another input token pasεing cycle.
If at step 652 port RPO does not have the input token, state machine 600 checks the Q output of flip-flop 610 to determine if input port RPO has a new connection request (step 655) . If not, state machine 600 passes the input token (step 656) and then checks whether the OUTPUT_IDLE line has been asserted (step 658) This indicates that another input port has won the arbitration. IF not, state machine 600 checks the output of comparator 620 to determine if the token pasεing '" cycle haε ended (step 660) . If not, state machine returns to step 650. If input port RPO is not the input seed (step 650) and state machine 600 has not received the input token (step 652), state machine 6Q0 continues to cycle through steps 658, 660, 650 and 662 until it gets the input token. When it gets the input token, state machine 600 checks the Q output of flip-flop 610 to see if it haε a pending new requeεt. In not, it passes the token at step 656. If it does have a new request, state machine 600 asserts the REQ signal to turn on buffer 608, thereby placing the requested destination buffer addreεs on the OUTPUT_PORT lines (step 664) . State machine 600 also resets flip-flop 610 (εtep 664) . It then looks at the OUTPUT_IDLE line to determine the requested output port is idle (step 666) . If not, state machine 600 passes the input token (step 656) .
If the requested output buffer is idle (step 666), state machine 600 moves to step 668. State machine 600 also moveε to step 668 from step 658. At this point (step 668), the output arbiter for the requested port has placed a new input seed on the INPUT_PORT lines and allows all input arbiters to compete for a connection to that output port. Thus at step 668, state machine 600 checks the output of comparator 618 to determine if port TPO is the input seed. If it is the input seed, it again checks the output of comparator 606 to determine if it has a pending request for the output port (step 670) . If not, it passes the input token (step 672) and checks the OUTPUT_ARB_CYCLE line for a pulse indicating end of the token passing cycle (step 674) . If the token pasεing cycle is not at an end, state machine 600 reverts to step 668. If input port RPO is not the input seed (step 668) and does not have the input token (step 676) it moves to step 674. Otherwise it checks the output of comparator 606 to determine if it has a pending request for the output port (step 670) . If it detects a pending request for the output buffer (step 670), state machine 600 pulses the CONSUME signal to turn on buffer 614 thereby placing the ID of port RPO (MY_ID) on the INPUT_PORT lines (step 678) . State machine 600 the " waits for a pulse from the central arbitration sequencer (step 680) indicating that the requeεt has been granted. Thereafter state machine 600 pulses the CLEAR signal to clear the request from circuit 602 (step 682) and returns to step 622 (FIG. 21) to await the beginning of the another token pasεing cycle.
While the forgoing specification has described preferred embodiment(s) of the preεent invention, one skilled in the art may make many modifications to the preferred embodiment without departing from the invention in its broader aspects. The appended claims therefore are intended to cover all such modifications as fall within the true scope and spirit of the invention. f
♦ 10

Claims

Claim(s) What is claimed is:
1. A network switch for routing data packets between a plurality of network stations, comprising: a plurality of input ports interconnected to form an input token passing ring, each input port including means for passing an input token to a succeeding input port of the ring after receiving an input token from a preceding input port of the ring, and each input port including means for receiving and forwarding data packets from corresponding network station; a plurality of output ports interconnected to form an output token passing ring, each output port including means for passing an output token from a succeeding output port of the ring after receiving the output token from a preceding output port of the ring, and each output port including means for receiving and forwarding data packets to a corresponding network station; a switching system connected to said input and output ports for receiving packets forwarded by said input ports and selectively routing them to said output ports in accordance with input routing data; and a global bus interconnecting said input ports, said output ports and said switching means; wherein when one of said output ports receives the output token and is idle (not currently receiving a packet), it signals the input ports via said global bus to begin passing the input token, and wherein when a token receiving input port has received a packet to be forwarded to the token receiving output port, the token receiving input port sendε routing data to said switching system via said global bus.
2. The network switch in accordance with claim 1 wherein the routing data the token receiving input port sends " to said switching system identifies the token receiving input port.
3. The network .switch in accordance with claim 2 wherein the token receiving output port also includes means for sending routing data to the switching syεtem identifying itεelf, εuch that the switching system responds to the roαting data from the token receiving input and output ports by routing the packet stored in the token receiving input port to the token receiving output port.
4. The network switch in accordance with claim 1 further comprising sequencer means connected to εaid global buε for εuccessively εignaling said output ports via said global buε to begin passing said output token.
5. The network switch in accordance with claim 4 wherein whenever the sequencer means signals the output ports to begin passing said output token, it transmits to εaid output ports via said global bus output seed data identifying one of said output ports as an output seed port; and wherein the output seed port, when not idle, responds to the output seed data by pasεing the output token and, when idle, εignals said input ports via said global bus to begin pasεing said input token.
6. The network switch in accordance with claim 5 wherein the sequencer means alters the output seed data each time it signals the output ports to begin passing εaid output token so that successive ones of said output ports are successively identified as said output seed port.
7. The network switch in accordance with claim 6 wherein whenever the output seed port receives the output token, it transmits an end-o -cycle (EOC) signal to the sequencer means via the global bus indicating that the output " ports have stopped pasεing the output token.
8. The network switch in accordance with claim 7 wherein upon receipt of the EOC signal, the sequencer mean signals the output ports to begin passing said output token again.
9. The network switch in accordance with claim 4 wherein when the token receiving input port sends routing data to said switching system, it also transmitε an end-of-cycle (EOC) signal to the sequencer means via the global bus indicating that an input ports have stopped passing the input token.
10. The network switch in accordance with claim 9 wherein after receiving the EOC signal, the sequencer means transmits a SAMPLE_EVENTS signal to the input ports via the global bus; wherein after receiving the SAMPLE_EVENTS signal, each input port having received a packet to be forwarded since previously receiving the SAMPLE_EVENTS signal, transmits a NEW_REQUEST signal to the εequencer meanε via the global buε; and wherein, upon receiving said NEW_REQUEST signal, said sequencer means signalε εaid output portε to begin passing said output token.
11. The network switch in accordance with claim 9 wherein after receiving the EOC signal, the sequencer meanε transmitε a SAMPLE_EVENTS signal to the output ports via the global bus; wherein after receiving the SAMPLE_EVENTS signal, each output port having become idle since previously receiving the SAMPLE_EVENTS signal, transmits a NEW_IDLE signal to the sequencer meanε via the global bus; and wherein, upon receiving said NEW_IDLE signal, said sequencer means signals said output ports to begin passing ~ said output token.
12. The network switch in accordance with claim 1 wherein whenever an idle output port signalε the input ports to begin passing said input, token, it transmits to said input ports via said global bus input seed data identifying one of said input ports as an input seed port, and wherein the input seed port responds to the input seed data, when not having received a data packet to be forwarded to the output port, by passing the input token and responds to the input seed data, when having received a data packet to be forward to the output port, by forwarding routing data to said switching meanε via εaid global bus.
13. The network switch in accordance with claim 12 wherein each output port alters the output seed data each time it signals the input ports to begin passing said input token so that successive ones of said input ports are successively identified as said input seed port.
14. The network switch in accordance with claim 1 wherein each input port encodes each received packet before forwarding it to an output port via said switching syεtem to include symbols indicating beginning and ending portions of the packet, wherein each output port determines when it is receiving a packet and when it is idle by detecting said symbols, and wherein each output port decodes each received packet before forwarding it to a correεponding network station.
15. The network switch in accordance with claim 1 wherein each of said network stations has a unique network address, and wherein packets received by said input ports each include a contain a network address of a destination network station to receive the packet, wherein said network switch further comprises : address translation means for converting the network ~ addresε of each network station to a code identifying an output port to which the network station is connected; and translation buε means interconnecting the input ports with said translation means, wherein each of said input ports sends the network address of the destination station included in a received packet to said address translation means via said translation buε, wherein said addreεs translation means translates the network address of the destination station into a code identifying a corresponding output port and returns the code to the sending input port via said translation bus means.
16. The network switch in accordance with claim 3 further comprising sequencer meanε connected to said global buε for successively signaling said output ports via said global bus to begin passing said output token.
17. The network switch in accordance with claim 16 wherein whenever the sequencer means signals the output ports to begin passing said output token, it transmits to said output ports via said global bus output seed data identifying one of said output ports as an output seed port; and wherein the output seed port responds to the output seed data, if not idle, by passing the output token and responds to the output seed data, if idle, by εignaling said input ports via said global bus to begin passing said input token, the sequencer means altering the output seed data each time it signals the output ports to begin passing said output token so that successive ones of said output ports are succeεεively identified aε said output seed port.
18. The network switch in accordance with claim 17 wherein whenever the output seed port receives the output token, it transmits an end-of-cycle (EOC) signal to the sequencer means via the global bus indicating that the output portε have εtopped passing the output token; and wherein upon receipt of the EOC signal, the sequencer means signals the output ports to begin passing said output token.
19. The network switch in accordance with claim 17 wherein when the token.receiving input port sends routing data to said switching system, it also transmitε an end-of-cycle (EOC) signal to the sequencer means via the global bus indicating that the input ports have stopped pasεing the input token; wherein after receiving the EOC signal, the sequencer means transmits a SAMPLE_EVENTS signal to the input ports via the global bus; wherein after receiving the SAMPLE_EVENTS signal, each input port having received a packet to be forwarded since previously receiving the SAMPLE_EVENTS signals, transmits a NEW_REQUEST signal to the sequencer means via the global bus; wherein, upon receiving said NEW_REQUEST signal, said sequencer means signalε εaid output ports to begin pasεing said output token; wherein after receiving the EOC signal, the sequencer means transmits a SAMPLE_EVENTS signal to the output ports via the global bus; wherein after receiving the SAMPLE_EVENTS signal, each output port having become idle since previously receiving the SAMPLE_EVENTS signal, transmits a NEW_IDLE signal to the sequencer means via the global bus; and wherein, upon receiving said NEW_IDLE signal, said sequencer means signalε εaid output ports to begin passing said output token.
20. The network switch in accordance with claim 17 wherein whenever an idle output port signalε the input ports to begin pasεing εaid input token, it transmits to said input ports via εaid global bus input seed data identifying one of said input ports as an input seed port, and wherein the input seed port responds to the input seed data, when not having received a data packet to be forwarded to the output port, by passing the input token and responds to the input seed data, when having received a data packet to be forward tc the output port, by forwarding routing data to said switching means via said global bus; .and wherein each output port alters the output seed data each time it signalε the input portε to begin paεsing εaid input token so that successive ones of said input ports are succesεively identified as said input seed port.
PCT/US1997/004250 1996-03-25 1997-03-18 Network switch with arbitration system WO1997036242A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP53446497A JP3852953B2 (en) 1996-03-25 1997-03-18 Network switch with mediation system
DE69722448T DE69722448T2 (en) 1996-03-25 1997-03-18 NETWORKING WITH ARBITRATION SYSTEM
EP97915136A EP0954792B1 (en) 1996-03-25 1997-03-18 Network switch with arbitration system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/621,422 US5689644A (en) 1996-03-25 1996-03-25 Network switch with arbitration sytem
US08/621,422 1996-03-25

Publications (1)

Publication Number Publication Date
WO1997036242A1 true WO1997036242A1 (en) 1997-10-02

Family

ID=24490128

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1997/004250 WO1997036242A1 (en) 1996-03-25 1997-03-18 Network switch with arbitration system

Country Status (5)

Country Link
US (1) US5689644A (en)
EP (1) EP0954792B1 (en)
JP (1) JP3852953B2 (en)
DE (1) DE69722448T2 (en)
WO (1) WO1997036242A1 (en)

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0152228B1 (en) * 1995-12-23 1998-11-02 양승택 Method for transmitting and receiving data by using dispersed routine control in data switching system
US5959988A (en) * 1996-06-24 1999-09-28 Ericsson, Inc. Telecommunications switch including an integrated internet access server
US6009092A (en) * 1996-12-24 1999-12-28 International Business Machines Corporation LAN switch architecture
US6311230B1 (en) * 1996-12-27 2001-10-30 Avaya Technology Corp. System and method for cell switching with a peripheral component interconnect bus and decentralized, computer-controlled cell switch
US5862338A (en) * 1996-12-30 1999-01-19 Compaq Computer Corporation Polling system that determines the status of network ports and that stores values indicative thereof
US6233242B1 (en) * 1996-12-30 2001-05-15 Compaq Computer Corporation Network switch with shared memory system
US5978379A (en) 1997-01-23 1999-11-02 Gadzoox Networks, Inc. Fiber channel learning bridge, learning half bridge, and protocol
US5974467A (en) * 1997-08-29 1999-10-26 Extreme Networks Protocol for communicating data between packet forwarding devices via an intermediate network interconnect device
US6167537A (en) * 1997-09-22 2000-12-26 Hewlett-Packard Company Communications protocol for an automated testing system
US6023471A (en) * 1997-10-07 2000-02-08 Extreme Networks Network interconnect device and protocol for communicating data among packet forwarding devices
US6298406B1 (en) * 1997-10-24 2001-10-02 Sony Corporation Method of and apparatus for detecting direction of reception of bus packets and controlling direction of transmission of bus packets within an IEEE 1394 serial bus node
US6230229B1 (en) * 1997-12-19 2001-05-08 Storage Technology Corporation Method and system for arbitrating path contention in a crossbar interconnect network
US6563837B2 (en) 1998-02-10 2003-05-13 Enterasys Networks, Inc. Method and apparatus for providing work-conserving properties in a non-blocking switch with limited speedup independent of switch size
US6865154B1 (en) 1998-01-12 2005-03-08 Enterasys Networks, Inc. Method and apparatus for providing bandwidth and delay guarantees in combined input-output buffered crossbar switches that implement work-conserving arbitration algorithms
US6208644B1 (en) * 1998-03-12 2001-03-27 I-Cube, Inc. Network switch providing dynamic load balancing
US6667984B1 (en) * 1998-05-15 2003-12-23 Polytechnic University Methods and apparatus for arbitrating output port contention in a switch having virtual output queuing
US6728206B1 (en) * 1998-08-03 2004-04-27 Silicon Grpahics, Inc. Crossbar switch with communication ring bus
US6212194B1 (en) * 1998-08-05 2001-04-03 I-Cube, Inc. Network routing switch with non-blocking arbitration system
US6289015B1 (en) * 1998-09-17 2001-09-11 Tut Systems, Inc. Method and apparatus for the secure switching of a packet within a communications network
US5982741A (en) * 1998-09-17 1999-11-09 Tut Systems, Inc. Method and apparatus for automatically reducing cross-talk between wires coupled to a common network device
US6138185A (en) * 1998-10-29 2000-10-24 Mcdata Corporation High performance crossbar switch
US7430171B2 (en) * 1998-11-19 2008-09-30 Broadcom Corporation Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
JP3684308B2 (en) * 1998-12-15 2005-08-17 富士通株式会社 Scheduling control device and exchange
US20060174052A1 (en) * 2005-02-02 2006-08-03 Nobukazu Kondo Integrated circuit and information processing device
US6510138B1 (en) 1999-02-25 2003-01-21 Fairchild Semiconductor Corporation Network switch with head of line input buffer queue clearing
US6501761B1 (en) * 1999-02-25 2002-12-31 Fairchild Semiconductor Corporation Modular network switch with peer-to-peer address mapping communication
US7010792B1 (en) * 1999-04-05 2006-03-07 Gateway Inc. Method for managing interaction between information appliances and appliance services
US20060023716A1 (en) * 1999-05-20 2006-02-02 Advanced Micro Devices, Inc. Bit bucket
US6385205B1 (en) 2000-02-08 2002-05-07 The United States Of America As Represented By The National Security Agency Filter system for information network traffic
DE10016829A1 (en) * 2000-04-06 2001-10-11 Philips Corp Intellectual Pty Resolving media access conflicts in networks with multiple network nodes and at least one star node
US6771694B1 (en) * 2000-07-12 2004-08-03 International Business Machines Corporation Speed negotiation for serial transceivers
JP3646638B2 (en) * 2000-09-06 2005-05-11 日本電気株式会社 Packet switching apparatus and switch control method used therefor
US7173906B2 (en) * 2001-09-28 2007-02-06 Nec Corporation Flexible crossbar switching fabric
US20020178283A1 (en) * 2001-03-29 2002-11-28 Pelco, A Partnership Real-time networking protocol
US6999453B1 (en) 2001-07-09 2006-02-14 3Com Corporation Distributed switch fabric arbitration
US7212534B2 (en) 2001-07-23 2007-05-01 Broadcom Corporation Flow based congestion control
US6990072B2 (en) * 2001-08-14 2006-01-24 Pts Corporation Method and apparatus for arbitration scheduling with a penalty for a switch fabric
US6757246B2 (en) 2001-08-14 2004-06-29 Pts Corporation Method and apparatus for weighted arbitration scheduling separately at the input ports and the output ports of a switch fabric
US6804245B2 (en) 2001-08-17 2004-10-12 Mcdata Corporation Compact, shared route lookup table for a fiber channel switch
US7295555B2 (en) 2002-03-08 2007-11-13 Broadcom Corporation System and method for identifying upper layer protocol message boundaries
US7346701B2 (en) 2002-08-30 2008-03-18 Broadcom Corporation System and method for TCP offload
US7411959B2 (en) 2002-08-30 2008-08-12 Broadcom Corporation System and method for handling out-of-order frames
US7934021B2 (en) 2002-08-29 2011-04-26 Broadcom Corporation System and method for network interfacing
US8180928B2 (en) 2002-08-30 2012-05-15 Broadcom Corporation Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney
US7313623B2 (en) 2002-08-30 2007-12-25 Broadcom Corporation System and method for TCP/IP offload independent of bandwidth delay product
US20040057377A1 (en) * 2002-09-10 2004-03-25 John Tinney Routing patterns for avoiding congestion in networks that convert between circuit-switched and packet-switched traffic
US6799304B2 (en) * 2002-10-01 2004-09-28 Lsi Logic Corporation Arbitration within a multiport AMBA slave
US7114041B2 (en) * 2002-12-20 2006-09-26 Lsi Logic Corporation AMBA modular memory controller
US7249178B2 (en) * 2003-03-28 2007-07-24 International Business Machines Corporation Non-intrusive recursive dispatching of nested service collections for aggregating web services
JP4432388B2 (en) * 2003-08-12 2010-03-17 株式会社日立製作所 I / O controller
US20050105538A1 (en) * 2003-10-14 2005-05-19 Ananda Perera Switching system with distributed switching fabric
US7128806B2 (en) * 2003-10-21 2006-10-31 Applied Materials, Inc. Mask etch processing apparatus
US20050175027A1 (en) * 2004-02-09 2005-08-11 Phonex Broadband Corporation System and method for requesting and granting access to a network channel
EP1859575A1 (en) * 2005-03-04 2007-11-28 Koninklijke Philips Electronics N.V. Electronic device and a method for arbitrating shared resources
US7525978B1 (en) 2005-04-15 2009-04-28 Altera Corporation Method and apparatus for scheduling in a packet buffering network
US7953908B2 (en) * 2007-05-27 2011-05-31 Lsi Corporation High throughput pipelined data path
US8255610B2 (en) 2009-02-13 2012-08-28 The Regents Of The University Of Michigan Crossbar circuitry for applying a pre-selection prior to arbitration between transmission requests and method of operation of such crossbar circuitry
US8230152B2 (en) * 2009-02-13 2012-07-24 The Regents Of The University Of Michigan Crossbar circuitry and method of operation of such crossbar circuitry
US9514074B2 (en) 2009-02-13 2016-12-06 The Regents Of The University Of Michigan Single cycle arbitration within an interconnect
US8549207B2 (en) * 2009-02-13 2013-10-01 The Regents Of The University Of Michigan Crossbar circuitry for applying an adaptive priority scheme and method of operation of such crossbar circuitry
JP5208080B2 (en) * 2009-09-28 2013-06-12 三菱電機株式会社 Sequence control circuit and control circuit
TWI407312B (en) * 2010-03-31 2013-09-01 Feature Integration Technology Inc Memory access apparatus and method thereof
US8984206B2 (en) 2012-10-31 2015-03-17 International Business Machines Corporation Weightage-based scheduling for hierarchical switching fabrics
WO2014116223A1 (en) * 2013-01-25 2014-07-31 Hewlett-Packard Development Company, L.P. Queue buffer de-queuing
US8902899B2 (en) * 2013-02-08 2014-12-02 International Business Machines Corporation Input buffered switching device including bypass logic
US9467396B2 (en) 2014-04-11 2016-10-11 International Business Machines Corporation Simultaneous transfers from a single input link to multiple output links with a timesliced crossbar
US9977853B2 (en) 2015-11-04 2018-05-22 Chronos Tech Llc Application specific integrated circuit link
US10073939B2 (en) 2015-11-04 2018-09-11 Chronos Tech Llc System and method for application specific integrated circuit design
US11550982B2 (en) 2015-11-04 2023-01-10 Chronos Tech Llc Application specific integrated circuit interconnect
US10181939B2 (en) * 2016-07-08 2019-01-15 Chronos Tech Llc Systems and methods for the design and implementation of an input and output ports for circuit design
US10476814B2 (en) * 2017-07-21 2019-11-12 Aruba Networks Inc. Arbiter circuit for crossbar
US10637592B2 (en) 2017-08-04 2020-04-28 Chronos Tech Llc System and methods for measuring performance of an application specific integrated circuit interconnect
US11087057B1 (en) 2019-03-22 2021-08-10 Chronos Tech Llc System and method for application specific integrated circuit design related application information including a double nature arc abstraction

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5355364A (en) * 1992-10-30 1994-10-11 International Business Machines Corporation Method of routing electronic messages
US5418780A (en) * 1990-03-14 1995-05-23 Alcatel N.V. Routing logic means for a communication switching element
US5434855A (en) * 1993-07-23 1995-07-18 Digital Equipment Corporation, Patent Law Group Method and apparatus for selective interleaving in a cell-switched network
US5453979A (en) * 1994-01-27 1995-09-26 Dsc Communications Corporation Method and apparatus for generating route information for asynchronous transfer mode cell processing
US5546391A (en) * 1993-03-04 1996-08-13 International Business Machines Corporation Central shared queue based time multiplexed packet switch with deadlock avoidance
US5613069A (en) * 1994-12-16 1997-03-18 Tony Walker Non-blocking packet switching network with dynamic routing codes having incoming packets diverted and temporarily stored in processor inputs when network ouput is not available

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61214694A (en) * 1985-03-18 1986-09-24 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション Switching unit for data transmission
JP2667868B2 (en) * 1988-04-06 1997-10-27 株式会社日立製作所 Cell switching system
JP2770936B2 (en) * 1990-12-18 1998-07-02 インターナショナル・ビジネス・マシーンズ・コーポレイション Method of creating communication network and communication channel
US5428800A (en) * 1991-10-30 1995-06-27 I-Cube, Inc. Input/output (I/O) bidirectional buffer for interfacing I/O ports of a field programmable interconnection device with array ports of a cross-point switch
JP2655464B2 (en) * 1992-12-25 1997-09-17 日本電気株式会社 Packet switching method

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5418780A (en) * 1990-03-14 1995-05-23 Alcatel N.V. Routing logic means for a communication switching element
US5355364A (en) * 1992-10-30 1994-10-11 International Business Machines Corporation Method of routing electronic messages
US5546391A (en) * 1993-03-04 1996-08-13 International Business Machines Corporation Central shared queue based time multiplexed packet switch with deadlock avoidance
US5434855A (en) * 1993-07-23 1995-07-18 Digital Equipment Corporation, Patent Law Group Method and apparatus for selective interleaving in a cell-switched network
US5453979A (en) * 1994-01-27 1995-09-26 Dsc Communications Corporation Method and apparatus for generating route information for asynchronous transfer mode cell processing
US5613069A (en) * 1994-12-16 1997-03-18 Tony Walker Non-blocking packet switching network with dynamic routing codes having incoming packets diverted and temporarily stored in processor inputs when network ouput is not available

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP0954792A4 *

Also Published As

Publication number Publication date
EP0954792B1 (en) 2003-05-28
US5689644A (en) 1997-11-18
EP0954792A1 (en) 1999-11-10
EP0954792A4 (en) 1999-11-10
DE69722448D1 (en) 2003-07-03
DE69722448T2 (en) 2004-04-08
JP3852953B2 (en) 2006-12-06
JP2001500324A (en) 2001-01-09

Similar Documents

Publication Publication Date Title
EP0954792B1 (en) Network switch with arbitration system
US6208644B1 (en) Network switch providing dynamic load balancing
US6636483B1 (en) Network switch with zero latency flow control
US5784003A (en) Network switch with broadcast support
US6510138B1 (en) Network switch with head of line input buffer queue clearing
US5796732A (en) Architecture for an expandable transaction-based switching bus
US5898694A (en) Method of round robin bus arbitration
US6249528B1 (en) Network switch providing per virtual channel queuing for segmentation and reassembly
US5754791A (en) Hierarchical address translation system for a network switch
US7366190B2 (en) Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
US8767756B2 (en) Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
US6212194B1 (en) Network routing switch with non-blocking arbitration system
US5857075A (en) Method and integrated circuit for high-bandwidth network server interfacing to a local area network
EP0498360A2 (en) Access to transmit on a message priority basis
Skov Implementation of physical and media access protocols for high-speed networks
US6181708B1 (en) Lossless arbitration scheme and network architecture for collision based network protocols
US7006498B2 (en) System for transmitting local area network (LAN) data frames through an asynchronous transfer mode (ATM) crossbar switch
US20050013317A1 (en) Method and system for an integrated dual port gigabit Ethernet controller chip
US20020034185A1 (en) System for transmitting local area network (LAN) data frames
AU714593C (en) Improved method of round robin bus arbitration

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): JP

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 1997915136

Country of ref document: EP

ENP Entry into the national phase

Ref country code: JP

Ref document number: 1997 534464

Kind code of ref document: A

Format of ref document f/p: F

WWP Wipo information: published in national office

Ref document number: 1997915136

Country of ref document: EP

WWG Wipo information: grant in national office

Ref document number: 1997915136

Country of ref document: EP