Altera HyperTransport MegaCore Function User Manual
Page 38
 
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.