*Notice: The information in this document is subject to change without notice
Tsi301
Notes
Tsi301 HyperTransport to PCI User Manual
3-20
•
I/O reads are never prefetchable.
•
MemRdLines and MemRdMult may have prefetching individually configured.
•
For systems in which MemRds are known to be side-effect free, MemReadPrefEn can be set to
enable prefetchable behavior for MemReads using the same parameters as MemRdLines.
•
PrefEn can be used to globally enable or disable all prefetching.
•
Nonprefetchable reads always request only the bytes required to satisfy the initial data beat of four or
eight bytes on the PCI bus, which may result in either one or two HyperTransport requests.
Transactions for which prefetching is enabled issue a HyperTransport read for the remainder of the 64-byte
aligned block containing the original request. These transactions also issue HyperTransport reads for the zero
to seven complete 64-byte blocks following, as determined by the Read Control CSR. The total number of
reads that may be outstanding to HyperTransport at one time is limited by the Outbound Data Buffers.
When multiple reads to HyperTransport are issued for a single PCI read request due to prefetching or due
to clear byte enables in a 64-bit nonprefetchable read on a 64-bit bus, each HyperTransport request is
referred to as a subrequest of the PCI request. Each Delayed Request Buffer can track up to 8 subrequests at
once. The total number of configured subrequests (number of enabled delayed request buffers * (the
maximum number of subrequests each, rounded up to the next power of 2)) must not exceed the number of
entries in the Outbound Data Buffers.
3.6.5 SrcTags
The SrcTag for each HyperTransport read request is formed by concatenating the delayed request buffer
number with the number of the HyperTransport subrequest being issued by that buffer and adding a leading 0
(zero) bit.
•
If three or four delayed request buffers are in use, a maximum of four reads may be outstanding for
each one. The subrequest number is two bits. The delayed request buffer number is two bits.
•
If only one or two delayed request buffers are in use, a 3-bit subrequest number is used. Only one bit
of delayed request buffer number is needed and the top bit is dropped.
Either way, five bit srcTags are generated in the range of 00h – 0Fh.
3.6.6 Sequences
HyperTransport subrequests that are part of the same PCI request must be tagged with a matching
nonzero seqId to guarantee ordering at the target. This 4-bit seqId is formed by concatenating a leading 1
(guaranteeing a nonzero result) with the 2-bit delayed request buffer number and one bit that toggles for each
occupation of the delayed request buffer. The concatenation prevents consecutive PCI reads from being
issued with the same seqId and appearing to have HyperTransport ordering requirements.
3.6.7 Read Responses
As the read responses return from HyperTransport, the data is stored in the Outbound Data Buffers. Even
though sequenced requests are guaranteed to reach the target in order, responses may be received from the
target out of order. When all data from the first HyperTransport requests is received (the amount required is
controlled by the InitCount fields of the Read Control CSR), the PCI interface ceases retrying the request.
Read data is supplied from the buffers when the request is next reissued. Data streams to the PCI bus until
the transaction is disconnected by the PCI master or until the next data required is not present in the
Outbound Data Buffers.
3.6.8 Continuous Prefetching
If continuous prefetching is enabled in the Read Control CSR, the HyperTransport PCI bridge issues
further ascending read requests to fill buffers as they drain (up to a 4-KB page boundary) in an effort to make
sure required data is always available. Otherwise, the transaction is disconnected as soon as all data from the
initial reads is returned to the PCI bus.