VSC2100
Network Processor
IQ2000
5
G52385-0, Rev 4.1 12/14/01
Each output channel’s packet is provided by its 12-bit queue semaphore. When an OHD is written to one
of the output queues in the Smart Buffer corresponding to an output queue in the POM, the corresponding
queue semaphore is incremented. When the POM transfers a packet from an output queue, the
corresponding semaphore is decremented. Thus a non-zero semaphore indicates that there is at least one
packet in the output queue.
A critical piece of information for a variety of QoS algorithms is the amount of data that is currently held on
an output queue. POM maintains this for each output queue in a queue counter. This counter is increased
whenever an OHD is written to the corresponding queue in the Smart Buffer, and decreased whenever
POM fetches an OHD for this queue. The counter value is used to assist in functions such as Per Flow
Queuing, Bandwidth Allocation, and the Drop Preference function.
Buffer Allocation/De-allocation Module
The Buffer Allocation/De-allocation module (BAD) manages a set of eight pools of data buffers in main
memory, which are used to store the payload part of data packets. Each of the eight pools is a contiguous
block of main memory assigned by software at initialization. BAD manages a set of pointers, one to each
data buffer, known as data buffer pointers (DBPs). Any IQ2000 module that requires access to one or
more data buffers, such as the MIPS Host Interface, or the PIM, will perform a read from BAD across the
Input FusionBus, which will supply the requested number of DBPs (the allocation process). When a
module such as the POM has completed operation on a data buffer, it returns the DBP to the pool by
writing it to BAD (the de-allocation process) across the Output FusionBus.
Smart Buffer Module
The Smart Buffer (SB) Module manages the Output Header queues between the completion of forwarding
by the Packet Processing Engine (PPE) or MIPS CPU and the actual output transmission by the POM.
Output Headers in each queue may be resident in the Local Buffer Memory of the Smart Buffer, or they
may be held in main memory while SB maintains pointers to them. In either case the source of output
headers always writes them to the same Smart Buffer address for each queue, and the POM always reads
output headers for processing from the same address. Keeping Output Headers in the local Smart Buffer
memory significantly improves performance for small packets. The IQ2000 contains four Smart Buffer
modules, referred to as SB A, SB B, SB C, and SB D, that provide a combined total of 256 queues and
256 local memory buffers.
Multicast ID Module
The Multicast ID Module (MID) provides hardware support for broadcast and multicast packets. Broadcast
and multicast packets have a single source and multiple destinations, therefore a separate packet must be
transmitted for each destination port. The broadcast/multicast Output Header is copied into the Smart
Buffer for each of the destination ports of a broadcast/multicast packet. However, the Payload Data Buffer
from a broadcast/multicast packet is not duplicated for each destination port. The MID tracks a unique
Multicast Identifier (MCID) and Multicast Count for each multicast packet that has payload data. When an
agent attempts to de-allocate a multicast packet DBP, MID uses the MCID to reference the Multicast
Count. The Multicast Count is decremented each time an agent attempts to de-allocate the DBP. When
the Multicast Count is decremented to zero, the DBP is de-allocated by MID and the MCID is released for
assignment to another multicast/broadcast packet with payload data.
Packet Processing Modules
The IQ2000 Packet Processing System is the heart of the IQ2000 Packet Processor. This extremely powerful
processing system is built around four Packet Processing Engines (PPE), each of which consists of a 200
MHz RISC CPU known as FACET with significant hardware-acceleration features to facilitate the rapid and
efficient movement of data between the PPE and other IQ2000 elements. In addition to the four PPE sub-
systems, the Packet Processing System includes several shared resources for moving data between the
assigning packets, to PPEs, and to accelerate table-lookup operations.