![](http://datasheet.mmic.net.cn/330000/PM73488-PI_datasheet_16444396/PM73488-PI_43.png)
PMC-Sierra, Inc.
PM73488 QSE
L
PMC-980616
Issue 3
5 Gbit/s ATMSwitch Fabric Element
Released
Datasheet
45
3.7
This is a bidirectional port whose function depends on the value of the
“ENABLE_STAT_PINS” (bit 7) bit in the
CHIP_MODE register. When this bit is “0”, STAT_OUT is configured as an input port and directly sets the value of the
“No Data In” internal register (see CTRL_IN description above for what this internal register does). When this bit
(ENABLE_STAT_PINS) is “1”, STAT_OUT is configured as an output and periodically outputs an information packet
which indicates whether the internal multicast buffers are empty.
STAT_OUT
STAT_OUT is normally “0” and the information packet generated on the STAT_OUT pin is 5 bits long and is
clocked out using the QSE clock. The pattern starts with a “1” and the 5 bits are “10b
0
b
1
b
2
” including the “1” that
starts it all. If b
0
b
1
b
2
is “000”, then it means that all the multicast buffers are empty. If b
0
b
1
b
2
is any other three-bit
value, then it means that the multicast buffers are not empty. Note that this packet represents the
instantaneous
status
of the multicast buffers. Therefore, if a multicast cell is entering or exiting the chip at just about the time the packet is
being output, then the information in the packet must be interpreted with caution. However such delicate race condi-
tions are not a problem in practice. (See “Fabric Switch-Over” on page 45.)
3.8
The reason /NO_DATA_IN, /NO_DATA_OUT and STAT_OUT exist is to support hitless fabric switch-over. This
means that we wish to detour traffic to a back-up fabric and take the current fabric down for repairs, all without losing
a single cell. This can be accomplished in several different ways. We suggest a possible scheme below. Our scheme
only uses the /NO_DATA_IN and STAT_OUT features. Other schemes may also use the /NO_DATA_OUT feature.
Fabric Switch-Over
There are two fabrics, A and B. Each fabric has two kinds of inputs: data_in and bp_ack_in. Assume that these inputs
are duplicated to both fabrics. Each fabric also has two kinds of outputs: data_out and bpack_out. Assume that there
are muxes that can choose outputs either from fabric A or from fabric B. At any point in time, all muxes must select
A, or all muxes must select B, i.e. all muxes must switch in lock-step. Initially, we are using fabric A, and B is the
back-up. Thus all muxes are set to choose A. At the end of the process, we want to be using fabric B, with A being the
back-up. During the process, no cell must get lost, and there should be no ordering violations.
Assert /NO_DATA_IN on both A and B. For unicast, the result is that both A and B will reject cells and
return nacks. For multicast, the result is that both A and B will assert full back-pressure. Of course, only the
nacks and back-pressure from A will reach the ingress QRTs, because the muxes are set to choose A.
Effectively, the QRT will not be able to deliver even a single cell. All unicast cells will be attempted, but
they will bounce back with nacks. Multicast cells can’t even be attempted because of full back-pressure.
Wait for STAT_OUT to go to "000" on all QSEs on both fabrics. This indicates that all multicast cells that
were in transit in the fabrics have drained out. Of course, only the cells from A will reach the egress QRTs,
because the muxes are set to choose A.
At a cell time boundary, switch all muxes to choose B.
Now deassert /NO_DATA_IN on both A and B. Cells will start flowing through B, and A can be taken down
safely for maintenance/repair.