Tripp Lite USA-49WG Windows Owner's Manual for USA-49WG 4-Port USB Serial Adap - Page 20

f - TX ACK Advance

Page 20 highlights

7.1.f - TX ACK Advance Overview Many Keyspan USB serial adapters support confirmable "Transmit Acknowledgement Advance" (aka TX-ACK threshold, aka TX-ACK (nowledgement) advance, etc.) in the Keyspan Manager. This feature allows the user to adjust a device's transmit behavior to achieve the optimum compromise between compatibility (exact emulation of built-in ports) and maximum throughput. This document describes the factors which a user should be aware of to guide their configuration of this feature. The Problem In the case of a standard, "built-in" serial port, the host CPU (the "brain" of the computer) can communicate directly with the serial hardware because the (serial) hardware is in the address space directly accessible to the CPU. When the serial port has transmitted all the data in its transmit FIFO (the buffer that holds characters waiting to be sent), it interrupts the CPU, which then adds more characters to the transmit FIFO with a minimum time delay. By contrast, in a USB to serial adapter situation, information about the state of the serial port FIFO reaches the CPU by means of USB messages. The USB subsystem in most computers delays the delivery of inbound (USB peripheral to USB host computer) USB messages by about 1 millisecond. The impact of this delay on serial throughput depends on the baud rate. At 9600 baud, it takes about 1 millisecond to transmit a character. If the serial adapter signals the host when it begins transmitting the last character in its FIFO, the host learns about it at about the same time the character is actually finished being transmitted. Since outbound (USB host computer to USB peripheral) USB messages are not subject to such a long delay, the host can supply new data before the serial port has been idles for too long. At higher baud rates, however, this 1-millisecond delay becomes more of a problem. For example, at 920 Kbps, 1 millisecond is enough time to send 92 characters. So, if you're sending 92 characters at a time, you will only achieve 50% throughput, since half the time is spent with the adapter waiting for the host to send more data. The Work Around Since there's no way to eliminate the USB delays, there's only one work around: the serial adapter has to like about when it's done transmitting. The size of the lie is what's being configured with the "TX Ack Advance" parameter: it specifies how many characters ahead of time the adapter tells the host "I'm done." This way, the adapter still has some data to transmit while it's waiting for more to arrive from the host. If the next data from the host arrives before the previous data is completely sent, the new data can be sent with no delay, and the device will achieve 100% transmit throughput. Notes about the Work Around In most situations, the serial adapter's lie is harmless or beneficial, even. However, in some circumstances, this lie gets us into trouble. There are several ways this can happen: Flow control: If the adapter is programmed to use flow control, the remote (receiving) end of the serial connection can ask the adapter to suspend its data transmission (e.g. if it's not ready to receive more data). Since this state can persist indefinitely, the "I'm done" indication, if it were sent early, could arrive at the host a significant amount ahead of time. As a result, the application might use the "I'm done" signal as an indication that the remote end is ready, leading to various kinds of trouble. 20

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

20
Overview
Many Keyspan USB serial adapters support confirmable “Transmit Acknowledgement Advance” (aka TX-ACK threshold,
aka TX-ACK (nowledgement) advance, etc.) in the
Keyspan Manager
. This feature allows the user to adjust a device’s
transmit behavior to achieve the op°mum compromise between compa°bility (exact emula°on of built-in ports) and
maximum throughput. This document describes the factors which a user should be aware of to guide their configura°on
of this feature.
The Problem
In the case of a standard, “built-in” serial port, the host CPU (the “brain” of the computer) can communicate directly
with the serial hardware because the (serial) hardware is in the address space directly accessible to the CPU. When
the serial port has transmi±ed all the data in its transmit FIFO (the buffer that holds characters wai°ng to be sent), it
interrupts the CPU, which then adds more characters to the transmit FIFO with a minimum °me delay.
By contrast, in a USB to serial adapter situa°on, informa°on about the state of the serial port FIFO reaches the CPU
by means of USB messages. The USB subsystem in most computers delays the delivery of inbound (USB peripheral to
USB host computer) USB messages by about 1 millisecond. The impact of this delay on serial throughput depends on
the baud rate. At 9600 baud, it takes about 1 millisecond to transmit a character. If the serial adapter signals the host
when it begins transmi²ng the last character in its FIFO, the host learns about it at about the same °me the character
is actually finished being transmi±ed. Since outbound (USB host computer to USB peripheral) USB messages are not
subject to such a long delay, the host can supply new data before the serial port has been idles for too long.
At higher baud rates, however, this 1-millisecond delay becomes more of a problem. For example, at 920 Kbps, 1
millisecond is enough °me to send 92 characters. So, if you’re sending 92 characters at a °me, you will only achieve
50% throughput, since half the °me is spent with the adapter wai°ng for the host to send more data.
The Work Around
Since there’s no way to eliminate the USB delays, there’s only one work around: the serial adapter has to like about
when it’s done transmi²ng. The size of the lie is what’s being configured with the “TX Ack Advance” parameter: it
specifies how many characters ahead of °me the adapter tells the host “I’m done.” This way, the adapter s°ll has some
data to transmit while it’s wai°ng for more to arrive from the host. If the next data from the host arrives before the
previous data is completely sent, the new data can be sent with no delay, and the device will achieve 100% transmit
throughput.
Notes about the Work Around
In most situa°ons, the serial adapter’s lie is harmless or beneficial, even. However, in some circumstances, this lie gets
us into trouble. There are several ways this can happen:
Flow control:
If the adapter is programmed to use flow control, the remote (receiving) end of the serial connec°on can
ask the adapter to suspend its data transmission (e.g. if it’s not ready to receive more data). Since this state can persist
indefinitely, the “I’m done” indica°on, if it were sent early, could arrive at the host a significant amount ahead of °me.
As a result, the applica°on might use the “I’m done” signal as an indica°on that the remote end is ready, leading to
various kinds of trouble.
7.1.f – TX ACK Advance