[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: BMI TS4 Tick Data Test



PureBytes Links

Trading Reference Links

At 1:56 PM -0700 6/24/00, Bob Scott wrote:

>Yesterday I performed a test to determine the quanitative implications of
>not using a buffered serial port with the BMI datafeed.
>
>The conclusions were that very little data was lost due to lack of buffering
>compared to the amount of data that BMI must "trim" from the feed.

>Bottom line - don't waste your money on a buffered serial port.


I think your conclusions are correct if your system is doing nothing else. But if you are using the computer for anything else you risk getting buffer overflows when the system is busy with other things.

The TurboExpress card is not a lot of help since the 64 byte buffer size is only a little  larger than the normal UART.

The following is from two previous posts by me on this topic.

Bob Fulks

-----

I believe the potential benefit of the TurboExpress card in this application is in the size of its FIFO (first-in-first-out) buffer.

The BMI box (and perhaps others) sends data at a fixed rate.

The server can accept data at some average rate, presumably related to how much work it has to do, which is related to how many symbols you are collecting data on, etc.

If the server is mostly not busy (and the computer is not doing anything else) then it should be sitting idle most of the time waiting for new data and should be able to grab every tick from the source. But as it gets busier, then a tick will sometimes occur while the computer is busy doing other things and the tick would be lost.

The FIFO buffer helps by storing some number of ticks which allows the server to grab the next one when it has time to process it. If the buffer is infinitely large, then so long as the average rate at which the server can process ticks is higher than the average rate the source produces ticks, then no ticks are lost. They may be delayed but they are not lost. But if the buffer size is limited, then in certain cases, it will get full and new ticks will have no place to go and will be lost.

So the bigger buffer in the chip used in the TurboExpress card should result in fewer ticks getting lost. But even if the card can process data at some very high speed, the speed of the total process is limited to the slowest speed of any of the three cmponents, the source, the card, or the server/computer combination.

To quote the description on their web page at <http://www.turbocom.com/texport.html>:

    Reliability is solid even at extremely high data rates because the
    16750 UART holds incoming and outgoing characters in extra-deep
    FIFO (First-In-First-Out) buffers. These buffers can store 64 bytes
    each, versus only 16 bytes for the ordinary 16550 UART. UART-mediated
    hardware flow control provides nearly complete immunity from overrun
    and queue overflow errors.

Putting a few numbers on this should give us an idea of how it works. Assuming a 38.4K baud rate, this is about 4000 bytes per second, or 0.25 millisecond per byte. So the 16 byte FIFO in the 16550 UART chip can store data for about 4 milliseconds (four thousands of a second). The 64 byte FIFO in the 16750 UART chip can store data for about 16 milliseconds. So if the server can process data at greater than 4000 bytes per second on the average, and doesn't get stuck on some task for more than about 16 milliseconds, the FIFO buffer in the UART chip should allow no data loss. (Exact calculations would require estimated of the distributions and queueing theory.)

Assuming we wanted no data loss and could wait as long as a second for the data, we would ideally like a FIFO 64 times this large, or about 4,000 bytes. No such card is available that I know of. Black Box Corp. has a box that has a 32,000 byte buffer which is probably overkill for this requirement, and a lot more expensive.

Bob Fulks

-----------

At 11:11 AM -0600 1/22/00, Terry Wyss wrote:

>There are other manufacturers of serial interface cards that have
>buffering. I use a Multitech Intelligent Serial Interface model
>ISI551PC. It has 32k bytes of ram, has physical jumpers to set the
>IRQ's, is an ISA card, transmits at 115.2K bps, can be accessed by
>anything that would use a UART 16550. Mine has been reliable and is a
>couple years old. The ISI processor on the card [to quote the manual]
>"handles all of the byte-by-byte interrupts generated by the
>asychronous terminals and stores the data in buffers. The ISI then
>generates one interrupt for an entireblock of information and
>transfers the block to the system's microprocessor." There are faster
>cards with larger buffers, but they are probably overkill.

I found the information at

   <http://www.multitech.com/products/FamilyHomePages/tn.asp?ID=24#more>

There appear to be two series of cards, the older 500 series cards mentioned above and a newer 600 series cards. The older series is ISA/EISA bus while the newer series has both ISA and PCI versions

600-Series Features
  Four or eight buffered serial ports
  Sustained data rates to 460.8K per port
  Drivers for Windows 95/98/2000, Windows NT, Citrix, Novell,
     SCO, Linux, and Multi-Tech RASExpress
  PCI- and ISA-bus models available
  256K RAM buffer

   Model              Description
   ISI4604-PCI        4-Port Serial Card (PCI)
   ISI4608-PCI        8-Port Serial Card (PCI)
   ISI4608            8-Port Serial Card (ISA)


500-Series Features
   One or two COM ports
   Sustained data rates to 115.2K per port
   Operating-system independent for flexible compatibility
   ISA-bus
   32K Bytes RAM buffer per port

   Model              Description
   ISI552             Dual COM-Port Card (ISA)
   ISI551             COM-Port Card (ISA)

A 32K byte buffer would store about 8 seconds worth of BMI 38.4K baud data which should certainly be sufficient for most purposes.

No prices and no on-line sales that I could see but they will refer you to dealers. Their phone number is 1-800-328-9717. The office is closed today.

Bob Fulks