User Manual
BCM1250/BCM1125/BCM1125H
10/21/02
B r o a d c o m C o r p o r a t i o n
Document
1250_1125-UM100CB-R
Section 8: PCI Bus and HyperTransport Fabric Page
217
A
CCESSES
FROM
THE
PCI
TO
THE
S
I
B
YTE
The path for the PCI to access the part is shown in
. It is similar to the HyperTransport
flow.
Writes from the PCI are always posted into the part, they flow through the queues shown in the figure.
The PCI interface will accept one outstanding read from the PCI bus. If this read is not serviced after 16 PCI
cycles (the debug is programmable as described below) it will be disconnected to allow other PCI devices to
make progress (turning it into a Delayed Read Request). Subsequent reads from the PCI bus into the part will
be immediately disconnected until the first has been satisfied. PCI reads do not include a length in the request,
so a heuristic is used to improve performance. If the read uses a PCI Read or ReadLine command the PCI
interface will initially request a single (32 byte) block from the ZBbus interface, when this returns it will be used
to satisfy up to 32 bytes of the request. If the request is still in progress an additional request will be made to
the ZBbus interface for the next cache block. If the ReadMultiple PCI command is used the interface will
immediately launch two read requests for consecutive cache blocks, and will continue to prefetch blocks as
the data is sent to the PCI. The reads share the RDR buffer in the ZBbus interface with reads from the
HyperTransport fabric.
If a request from the PCI bus requests a burst mode other than Linear Incrementing the interface will
disconnect the transfer after a single data phase.
Memory space reads smaller than four bytes will result in the appropriate byte enables being asserted on the
PCI bus unless the dis_memrd_be bit is set in the PCI Adaptive Extend register. If this bit is set all memory
space reads will have all four byte enables asserted (the additional bytes received from the PCI will be
ignored). If the dis_memrd_be bit is clear then any access to the PCI greater than 4 bytes should be an aligned
multiple of four bytes. If the dis_memrd_be bit is set then any access may be safely done but the PCI device
will always see an aligned multiple of four bytes.
PCI Adaptive Retry
The PCI specification requires that if a request is not completed within 16 cycles the target should terminate
the transaction with a retry to free the bus for other devices. It encourages devices that know they have a long
latency to disconnect the transaction as early as possible to avoid dead cycles on the bus. On the host the
latency of memory reads is hard to calculate because it depends on what other activity is in the system.
Typically in a lightly loaded system reads will complete in 200-400 ns, which is well under the PCI timeout. By
default the interface will not retry the transaction early, and will wait the full 16 cycles before issuing the retry.
The interface also has an adaptive retry policy, which is enabled by setting the adapt_retry_en bit in the
Feature Control Register (
). The actual latency of read requests is measured and used
to set the number of cycles that the interface waits before signalling the read should retry.
shows
how the retry delay is changed based on the current memory latency. Two consecutive samples must show
the same trend in latency before the algorithm changes behavior.
The adaptive retry parameters are spread across the PCI Feature control register and the PCI Adaptive Extend
register. The minimum value is a 3 bit field, nominal and maximum are 7 bit fields. This allows the values to be
programmed well outside the compliant PCI range, but allows optimal selection to be made in embedded
systems.