Altera HyperTransport MegaCore Function User Manual

Page 38

Advertising
background image

3–12

Chapter 3: Specifications

HyperTransport MegaCore Function Specification

HyperTransport MegaCore Function User Guide

© November 2009

Altera Corporation

Preliminary

8. The Rx buffer credit is sent to transmitter A’s available Rx buffer counter, allowing

it to be incremented.

If the number of Rx buffers is large enough, the virtual channel can have a high loop
time and continuous transmission. For example, if you assume that transmitter A has
not transmitted packets for a particular virtual channel for some time, the avaliable Rx
buffer counter in transmitter A is equal to the total number of Rx buffers for that
virtual channel in receiver B. If transmitter A now begins transmitting a large burst of
packets on that virtual channel, the first buffer credit must make it back to increment
the counter before it has decremented to zero to ensure continuous transmission
without interruption. This process repeats and allows the burst to be transmitted
uninterrupted by the counter until the burst is finished.

On the other hand, if the number of Rx buffers is small and the flow control loop time
is high, the counter decrements to zero before the first buffer credit makes it back. In
this case, the burst is interrupted by the counter until the first buffer credit makes it
back. Assuming no other virtual channels have packets available to transmit,
transmitter A is forced to transmit NOPs, limiting the overall utilization of the link.
After the first buffer credit is received, transmitter A immediately transmits another
packet and decrements the counter to zero. The virtual channel is stalled until the next
buffer credit is received.

The typical packet size also affects the throughput. Larger packets take longer to
transmit, so the decrement rate of the available Rx buffer counter is relatively slow.
Thus, large packets permit a longer loop time because the counter takes longer to
decrement to zero.

1

Non-posted reads are command-only requests. A burst of non-posted reads can be
transmitted very rapidly and a large number of available non-posted Rx buffers can
be exhausted quickly. However, the overall throughput of reads is actually limited by
the throughput of the response virtual channel in the opposite direction where both
command and data packets are being transferred. As long as the number of
non-posted Rx buffers is greater than or equal to the number of Rx response buffers
available at the opposite end of the link, the Rx non-posted buffer count does not limit
the overall read throughput.

In applications that use a mix of packets on multiple virtual channels, the decrement
rate of the available Rx buffer counter on a particular channel is slower. This rate
allows a smaller number of Rx buffers per virtual channel or a longer loop time.

The HyperTransport MegaCore function provides two features that allow you to
adjust actual throughput, depending on the HT device to which the MegaCore
function is connected:

Rx buffer size

Clocking options

The HyperTransport MegaCore function allows you to adjust the Rx buffer size for
each virtual channel. Therefore, reasonably long flow control loop times and typical
packet sizes of 32 bytes, as opposed to the maximum 64 bytes, can be tolerated with
no loss in throughput for traffic received by the HyperTransport MegaCore function.

Advertising