Abstract:
An apparatus comprising a plurality of devices configured to store and present data to a plurality of queues. Each of the plurality of devices may be configured to receive (i) one or more first control signals configured to control data transfer and (ii) one or more second control signals to configure the plurality of queues. A particular one or more of the plurality of devices may be selected in response to one or more device identification bits.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     The present application may relate to application Ser. No. 09/676,704, filed Sep. 29, 2000, Ser. No. 09/676,171, filed Sep. 29, 2000, Ser. No. 09/676,706, filed Sep. 29, 2000, Ser. No. 09/676,705, filed Sep. 29, 2000, Ser. No. 09/676,170, filed Sep. 29, 2000 and Ser. No. 09/676,169, filed Sep. 29, 2000, which are each hereby incorporated by reference in their entirety. 
    
    
     FIELD OF THE INVENTION 
     The present invention relates to a method and/or architecture for implementing multiqueue devices generally and, more particularly, to a method and/or architecture for implementing queue expansion of multiqueue devices. BACKGROUND OF THE INVENTION 
     Referring to FIG. 1, a conventional system  10  for implementing multiqueue first-in first-out (FIFO) devices is shown. The system  10  includes a selector section  12 , a selector section  14  and a number of memory sections  16   a - 16   n . The memory sections  16   a - 16   n  are each implemented as FIFO devices. The conventional system implements each of the FIFOs  16   a - 16   n  as an independent physical memory. 
     The selector section  12  receives data from a write interface and presents the data to one of the memory sections  16   a - 16   n  in response to a write select signal WR_SEL. The selector section  12  selects one of the FIFOs  16   a - 16   n  based on the signal WR_SEL. The incoming data is then stored into the appropriate FIFO  16   a - 16   n . Similarly, the selector section  14  presents data to a read interface from one of the memory sections  16   a - 16   n  in response to a read select signal RD_SEL. The selector section  14  selects one of the FIFOs  16   a - 16   n  based on the signal RD-SEL and reads the data from the appropriate FIFO  16   a - 16   n.    
     Referring to FIG. 2, a diagram of the control signals of the system  10  implementing a single master device implementation is shown. The multiqueue FIFO  10  is implemented without queue expansion capabilities. The FIFO  10  has a number of write signals (that are shown beginning with W), a number of read signals (that are shown starting with a R), and a number of other signals. The current definition of control and status signals of a single master cannot support queue expansion. 
     SUMMARY OF THE INVENTION 
     The present invention concerns an apparatus comprising a plurality of devices configured to store and present data to a plurality of queues. Each of the plurality of devices may be configured to receive (i) one or more first control signals configured to control data transfer and (ii) one or more second control signals to configure the plurality of queues. A particular one or more of the plurality of devices may be selected in response to one or more device identification bits. 
     The objects, features and advantages of the present invention include providing a method and/or architecture for queue expansion of multiqueue devices that may provide (i) device identification (ID) inputs for determining queue/register address most significant bits (MSB) that may include (a) write queue address expansion most significant bits for writing into the expanded queues, (b) write management register address expansion most significant bits for accessing registers belonging to other appropriate devices, (c) read queue address expansion most significant bits for reading from the expanded queues, and/or (d) read management register address expansion most significant bits for accessing registers belonging to the other appropriate devices, (ii) tristatable output data buses and control buses for arbitration, (iii) an interface for synchronous status polling across devices, (iv) a faster clock synchronization interface, and/or (v) variable size packet handling capacity. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     These and other objects, features and advantages of the present invention will be apparent from the following detailed description and the appended claims and drawings in which: 
     FIG. 1 is a block diagram of a conventional multiqueue FIFO; 
     FIG. 2 is a detailed block diagram of the multiqueue FIFO of FIG. 1 implemented with a single master device; 
     FIG. 3 is a block diagram illustrating a context of the present invention; 
     FIG. 4 is a block diagram of a number of control signals to implement a multiple master multiqueue FIFO implementation; 
     FIG. 5 is a detailed block diagram of the present invention; and 
     FIG. 6 is a timing diagram illustrating an operation of the present invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Referring to FIG. 3, a block diagram of a system (or circuit)  100  is shown in accordance with a preferred embodiment of the present invention. The circuit  100  may implement an out-of-band look-ahead arbitration method for transferring data bus control between multiple devices while in a queue expansion mode. Additionally, the circuit  100  may implement such control without a clock cycle penalty. 
     The system  100  generally comprises a read device  102 , a write device  103  and a memory section  104 . The memory section  104  generally comprises a number of devices  106   a - 106   n . Each of the devices  106   a - 106   n  may be implemented as a multiqueue FIFO device. A boundary  108  shows an interface between a portion of the devices  106   a - 106   n  that operate at a first clock (e.g., a system clock) and a second portion that operates at a second clock (e.g., an interface clock). Additionally, each of the multiqueue FIFO devices  106   a - 106   n  may comprise a clock synchronization block (or circuit)  110  that may synchronize the two clock domains. 
     The read device  102  may present a signal (e.g., RD_CONTROL) and a signal (e.g., RD_ADDR) to the memory section  104 . The read device  102  may also present/receive a signal (e.g., RD_STATUS) to/from the memory section  104 . Additionally, the read device  102  may receive data (e.g., RD_DATA) from the memory section  104 . The write device  103  may present a signal (e.g., WR_CONTROL) and a signal (e.g., WR_ADDR) to the memory section  104 . The write device  103  may also present/receive a signal (e.g., WR_STATUS) to/from the memory section  104 . Additionally, the write device  103  may present data (e.g., WR_DATA) to the memory section  104 . Each of the various signals of the system  100  may be implemented as a multi-bit and/or single-bit signal in order to meet the criteria of a particular implementation. 
     Referring to FIG. 4, a block diagram of a circuit  100  is shown in accordance with the present invention. In one example, the circuit  100  may be implemented as a multiqueue FIFO with four master devices. Additionally, the circuit  100  may allow for queue expansion. The circuit  100  may have a number of signals that have been modified, or are completely new when compared with the circuit  10  of FIG.  2 . In particular, the signal WHSHAKE, the signal RM[ 1 : 0 ], the signal Q_ADDR_REQ, the signal QNE and the signal CD have been modified to be bidirectional signals. A number of new signals have been added to allow for queue expansion with four master devices. Specifically, the signals WAQE[ 1 : 0 ], WMQE[ 1 : 0 ], DEVID[ 1 : 0 ], QEXP, EXP, RAQE[ 1 : 0 ], RMQE[ 1 : 0 ], ADDR_REQ, Q_EMPTY(@SYSCLK), QNE_SYNC, MINTB_SYNC, DTPA_SYNC, DTPA_ST have been added. However, any number of signals may be modified and/or added to meet the criteria of a particular implementation. Moreover, each of the various signals of the circuit  100  may be implemented as single-bit and/or multi-bit signals in a parallel or serial configuration. The signals having the notation “@SYSCLK” are generally clocked by the system clock. 
     While FIG. 4 may illustrate additional pins for cascading four of the devices  106   a - 106   n , the circuit  100  is not limited to the four devices  106   a - 106   n . In particular, a fewer number or a greater number of the devices  106   a - 106   n  may be implemented accordingly to meet the design criteria of a particular implementation. An appropriate number and/or configuration of interface pins may be implemented, respectively. 
     Referring to FIG. 5, a more detailed diagram of the circuit  100  is shown. FIG. 5 may illustrate queue expansion by cascading a number of the multiqueue devices  106   a - 106   n . The present invention relates to expansion of queues for multiqueue devices by cascading the devices  106   a - 106   n . The circuit  100  may define an architecture to implement such multiqueue expansion. 
     Conventional multiqueue devices can only implement a limited number of queues. The circuit  100  may provide an architecture for realizing N times the number of attached queues by cascading N such devices, where N is an integer. Each device  106   a - 106   n  is generally assigned a unique identification value (e.g., DEVID), and is programmed for master configuration. For example, when cascading 4 devices, 2 bits of the signal DEVID may be required. For N bits of the signal DEVID, queue expansion for up to 2 N  devices may be implemented. Each of the devices  106   a - 106   n  may only validate an access when the corresponding expanded address space is the same as the signal DEVID of the particular multiqueue FIFO  106   a - 106   n.    
     The input pin QEXP of each device  106   a - 106   n  may be connected to an active state to indicate that the circuit  100  is in the queue expansion mode. Each of the multiqueue FIFOs  106   a - 106   n  may also require a number of addresses. Specifically, each of the multiqueue FIFOs  106   a - 106   n  may receive the signals write queue address (e.g., WAQE), write management register address (e.g., WMQE), read queue address (e.g., RAQE) and read management register address (e.g., RMQE). Each of the signals WAQE, WMQE, RAQE and RMQE may be implemented as queue expansion signals. Each of the queue expansion signals WAQE, WMQE and RMQE may have a number of queue expansion bits. The queue expansion bits may be compared with a particular device ID (e.g., DEVID) of each of the devices  106   a - 106   n . The queue expansion bits may be implemented to select an appropriate device  106   a - 106   n . Additionally, the queue expansion signals WAQE, WMQE, RAQE and RMQE may be only required during a queue expansion mode of operation. 
     Each of the multiqueue FIFOs  106   a - 106   n  may interface with the bidirectional signals RM[ 1 : 0 ], EOP, Q_EMPTY, and EXP. Each of the addresses may be expanded by a same number of bits as the signal DEVID. Standard inputs and outputs of the circuit  100  may be wired together, as if the cascaded devices  106   a - 106   n  represent one single device to external devices. The data outputs of the multiqueue FIFOs  106   a - 106   n  may be implemented as tristate outputs to allow the presentation of data from one device at a time. The circuit  100  may provide self-arbitration of required output drivers (not shown). The circuit  100  may also allow for variable packet size handling capacity. 
     Appropriate arbitration methods ensure that there are no multiple writes on any of the various write pins. In one example, the circuit  100  may implement a wait cycle between driving of a particular bus by two of the devices  106   a - 106   n . However, such a wait state is generally optional. Additional implementations of the circuit  100  may include back-to-back reads, or a gap cycle between two sequential reads. 
     Existing control output signals may be implemented as typical I/Os with the exception of the signal MS/CQS. When one of the devices (e.g.,  106   a ) drives the control signals, the other devices (e.g.,  106   b - 106   n ) listen to keep track of the status of the remaining devices. Such an implementation may allow the multiqueue FIFOs  106   a - 106   n  to operate synchronously. The devices  106   a - 106   n  are generally synchronized by various signals. The signal EXP is outputted by one multiqueue device (e.g.,  106   a ) to the remaining multiqueue devices (e.g.,  106   b - 106   n ). In such an example, the device  106   a  generally communicates which clock (read clock or write clock) is chosen as the system clock. Details of which can be found in the related cross reference applications. The signal ADDR_REQ (@SYSCLK), together with the signal RM (which indicates an end of packet EOP) and the signals Q_EMPTY allow the read queue address to be processed sequentially by all the devices  106   a - 106   n.    
     Referring to FIG. 6, a timing diagram  200  illustrating an operation of the present invention is shown. The timing diagram  200  may illustrate status polling for queue expansion of a number of devices. A signal (e.g., RCLK) may illustrate a read clock pulse. A signal (e.g., QNE) may illustrate the effective status of the system  100  (e.g., the device  106   a - 106   n ). In one example, the signal QNE may be implemented as a queue not enable signal configured to indicate an enabled/not enabled state of the system  100 . For example, the signal QNE may indicate an effective status of all the devices (e.g., DEV 0 , DEV 1 , DEV 2  or DEV 3 ) of the timing diagram  200 . In one example, the signal QNE may be implemented as a wired AND of a number of queue not enable signals (e.g., QNE_DEV 0 , QNE_DEV 1 , QNE_DEV 2  and/or QEN_DEV 3 ). Additionally, the signals QNE_DEV 0 , QNE_DEV 1 , QNE_DEV 2  and QNE_DEV 3  may illustrate status polling of the various devices  106   a - 106   n . A signal (e.g., QNE_SYNC) may indicate which device (e.g., a particular one of the devices DEV 0 , DEV 1 , DEV 2  or DEV 3 ) may present an output. 
     The present invention may allow two methods of communicating status information for each multiqueue FIFO  106   a - 106   n . The status information may also be communicated in a synchronous manner. One method may require three pins where all of the interface signals may be implemented as point-to-point signals. Another method may require a single pin where the interface signal may be implemented as point-to-multipoint signal. The status signals (e.g., the signal QNE and the signal MINTB) may be polled in a burst manner with the help of the control signals QNE_SYNC and MINTB_SYNC, respectively. Such status polling is shown in FIG.  4  and FIG. 6, for expansion up to four multiqueue devices. 
     The signal QNE_SYNC may indicate when each device outputs the status with respect to the signal. The control signals QNE_SYNC and MINTB_SYNC may allow an external device to compute the QNE and MINTB information for each multiqueue devices  106   a - 106   n . The data port (e.g., packet-over-SONET physical layer (POS-PHY), supported by a status pin) information for each of the device  106   a - 106   n  is also similarly communicated with the exception that it forms a closed loop daisy chain with the help of signals DTPA_ST and DTPA_NEXTST. The signal DTPA_SYNC, outputted by the multiqueue device  106   a , provides a point-to-point signal bearing the timing information for the signal DTPA. 
     The circuit  100  may implement two kinds of arbitration. The first arbitration method may allow the devices  106   a - 106   n  to directly arbitrate based on the expansion address. For example, the data read out through the management interface will depend on the management register address expansion most significant bits (e.g., WMQE or RMQE). Similarly, arbitration of the signal WHSHAKE depends on the write queue address expansion most significant bits. 
     The second arbitration method may involve early prediction, especially when an end at an access is not known. Such a method may require the devices  106   a - 106   n  to act synchronously with respect to events. The read data is arbitrated using such a method. The read arbitration allows for variable size packets to be passed through, and also allows a dual clock system. An EOP indication (via the clock signal ADDR_REQ@SYSCLK) and the queue empty indication (via the clock signal Q_EMPTY@SYSCLK) information are communicated to allow such a lookahead operation. 
     The circuit  100  may provide a multiqueue expansion architecture implementing device ID inputs (e.g., the signal DEVID) for deciding queue/register address MSB bits. The circuit  100  may specifically implement write queue address expansion bits for writing into the expanded queues, write management register address expansion bits for accessing registers belonging to the other devices, read queue address expansion bits for reading from the expanded queues, and/or read management register address expansion bits for accessing registers belonging to the other devices. The circuit  100  may further implement tristatable output data buses and output control buses for arbitration. The circuit  100  may implement an interface for synchronous status polling across devices. The circuit  100  may allow for a faster clock synchronization interface. The circuit  100  may also allow for variable size packet handling capacity. 
     While the invention has been particularly shown and described with reference to the preferred embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made without departing from the spirit and scope of the invention.