Review: Intelligent Multiport Serial Boards
If you are planning on supporting a cluster of terminals, a modem pool for a BBS, a SLIP/PPP server, or a UUCP site, you might find yourself quickly running out of serial ports. Standard PC serial ports are limited to four ports, so chances are if you need more than four ports you may be considering buying multiport boards. There are many factors to consider when adding multiport serial boards to your machine. As modems get faster and faster, I/O throughput has become an increasingly important factor. It's also important to consider CPU usage when adding a large number of ports. As you add more ports, the host CPU will have to spend more time doing serial I/O.
There are two basic types of serial boards: “UART-based” (Universal Asyncronous Receiver Transmitter) and “intelligent”. Standard PC serial boards (COM1-COM4) typically come with 8250 or 16450 UARTs with a one-byte transmit and receive FIFO (buffer), or 16550A UARTs with sixteen-byte transmit and receive FIFOs. Boards such as the Boca 2016 and the AST Fourport use these types of UARTs in a multiport board configuration.
Most of these types of boards are supported by the standard Linux serial driver, since they all use the same types of UART and I/O technique. Due to limited FIFO size, and the fact that all character processing must be done by the host CPU, a UART-based serial board might not be sufficient to provide the I/O power you need, for example, to drive a high-speed modem bank.
This is where the intelligent multiport serial boards are useful. These boards have serial port controllers with larger FIFOs and with some sort of “intelligence”, such as RISC UARTs with some character recognition and flow control logic. Some may even have a CPU of their own to handle serial I/O. Since these boards vary in chipsets and control logic, a driver must be written for each board for use with Linux. With the old tty driver (which provides the abstract, general handling for all terminal devices, including serial, console, and pseudo-tty's), support for intelligent multiport boards was nearly impossible.
In the 1.1 Linux development kernel, Ted Ts'o (the maintainer of the serial driver and the tty driver) rewrote the generic tty driver to allow support for many kinds of serial devices, improving the serial drivers in the process. Since then, several drivers for intelligent multiport boards have been written, and more are being developed. In this issue, I'll be reviewing 8-port intelligent serial boards supplied by four manufacturers: Comtrol, Cyclades, Digi International, and Stallion Technologies. For vendor contact information, please see the Vendor Contact Information. Now let's look at each board in detail.
The following 8-port serial boards were sent to me for review. It should be noted that many other models of the boards, with different port configurations and I/O capabilities, are supported under Linux in addition to the ones I reviewed. A list of supported boards can be found in table 1. In the Control Signals column of table 1, MC stands for “RS232 modem control” and HWC stands for full “RS232 hardware flow control”. In the Max speed column, all figures are in bps.
The RocketPort RA (Remote Access) 8 series of boards features two 36 MHz ASICs (Application Specific Integrated Circuits) with 256-byte transmit FIFOs and 1024-byte receive FIFOs for each port, and built in flow control and line discipline handling. The ASICs also handle other functions, such as the bus interface logic and other miscellaneous logic, significantly reducing the number of components on the board.
RocketPort RA 8 boards support full RS232D modem and hardware flow control signals at speeds up to 230.4 Kbps. Four RocketPort RA 8 boards can be installed in one system. The first requires a 68 byte I/O address range, and each additional board requires a 64 byte I/O address range. I/O address ranges are selectable from 0x100, 0x140, 0x180, 0x200, 0x240, 0x280, 0x300, 0x340, 0x380 and are set with a DIP switch. No IRQ is needed for any of the boards. The driver comes in the form of a loadable module and is supported by Comtrol. The RocketPort RA 8 series features the RocketPort RA Octacable, which includes an octopus cable with DB25 connectors, at US $499.00, and the RocketPort 8 RA, which includes a connector box with DB25 connectors, is priced at US $678.00.
The Cyclom-8Y series of boards features two 12.5 MHz Cirrus Logic CD-1400 RISC UARTs. The CD-1400 UARTs handle flow control and special character recognition and also have 12 byte transmit and receive FIFOs, as well as a holding and shift register for each port. The Cyclom-8Y boards support full RS232C modem control and hardware flow control signals (except for the Cyclom-8Ys, which have no RTS signal) and will support speeds up to 115.2 Kbps. Each Cyclom-8Y board needs one interrupt (IRQ) selectable from 5, 9, 10, 11, 12, and 15, and an 8K block of dual-ported RAM selectable from 0xA0000-0xEE000. Both IRQ and I/O address are set with a DIP switch on the board. Four boards can be used simultaneously, each requiring its own IRQ and I/O address.
The driver for the Cyclom boards is included in kernel sources starting with version 1.1.74 and newer. The Cyclom-8Y boards are supported by Cyclades, which was the first company to offer a vendor-supported driver for an intelligent multiport board under Linux. There are four 8-port models in the Cyclom-8Y line: the Cyclom-8Ys with on-board RJ12 connectors (no RTS signal), at US $459.00; Cyclom-8Yo with an octopus cable with DB25 connectors, priced at US $511.00; and the Cyclom-8Yb and Cyclom-8Yb+ with DB25 connectors in an external box (the Cyclom-8Yb+ also has surge protection), at US $599.00 and US $699.00, respectively.
The DigiBoard PC/8e board is driven by an 12.5 MHz Intel 80186 CPU to handle I/O processing. It also uses 64K on-board RAM for data buffering. Seven PC/8e boards can be used in one system, each requiring one four-byte I/O address selectable from 0x100, 0x110, 0x120, 0x200, 0x220, 0x300, and 0x320 with a DIP switch. The nice thing about this board is that the DIP switch is located on the back of the card, so you can see and change the I/O address without opening your computer. An 8K block of dual-ported RAM is also required, but this can be shared among all boards. This address is selectable from 0xC0000-0xEFFFF by the PC/8e driver. No IRQ is required.
PC/8e boards support RS232C full modem and hardware flow control signals at speeds up to 115.2 Kbps. The driver for this board is supported by Troy De Jongh (an employee of DigiBoard), not by DigiBoard. The PC/8e host adaptor is US $795.00 plus US $90.00 for a DB25 connector octopus cable, US $110.00 for a DB25 connector box, or US $110.00 for an RJ45 connector box.
Stallion boards employ the same CD-1400 RISC UARTs as the Cyclades boards, with the same features. There are two models of the Stallion 8-port boards: the EasyIO/8, and the EasyConnection 8/32 modular board. Both boards need an 8 byte I/O address, selectable from 0x200-0x3FF with a DIP switch, and an IRQ selectable from 3, 4, 5, 7, 10, 11, 12 and 15, with the driver. The IRQ can be shared by all boards on an EISA bus machine. The EasyConnection 8/32 board needs an additional 32-byte secondary I/O address, selectable from 0x200-0x3FF via the driver, also sharable among all EasyConnection 8/32 boards. Any combination of four EasyIO/8 and EasyConnection 8/32 boards are supported by the driver.
EasyIO/8 boards offer 8 RS232C serial ports at speeds up to 115.2 Kbps, with full modem and hardware flow control. EasyConnection 8/32 boards offer 8-32 ports supporting RS232D full modem and hardware flow control signals at speeds up to 115.2 Kbps and, optionally, RS422A signals, also at 115.2 Kbps. The EasyConnection 8/32 is offered with 8 or 16 port modules, which can be used in any combination together to form a 32 port module. Each module has its own CD-1400 chips to support the ports on that module. The modules are nicely made and also have wall mount brackets on the back. The driver for this series of boards is supported by Greg Ungerer (an employee of Stallion), not by Stallion. The EasyIO/8 is available with a DB25 connector octopus cable, or an RJ45 connector box for US $595.00. The EasyConnection 8/32 host adaptor is US $300.00. Eight-port modules are priced at US $595 for RS232 connector boxes with RJ45 or DB25 connectors, and US $795.00 for a RS232/RS422 DB25 connector box. Sixteen-port modules with RJ45 connectors cost US $845.00, and 16-port modules with DB25 connectors are US $945.00.
Several common features were shared among all products:
All manufacturers offers five-year warranties and 30-day money-back guarantees.
The ISA/EISA buses are the only bus types supported, although support for PCI cards is in progress by some vendors.
Everyone was extremely helpful; even the people who support the driver in their spare time were very responsive.
All boards were installed and worked flawlessly following the documentation that was included with the drivers. Each board was used in my system for over a week, supporting my UUCP feed. I also did testing with interactive login sessions, file transfers, and dialup PPP connections with my V.34 modem. No problems were encountered with any of the boards during this usability testing phase. Dumb terminals were simulated by interconnecting cables on the serial boards. Again, no problems were encountered.
Unfortunately, benchmarking is a necessary evil for hardware reviews. You just can't judge hardware by its looks, no matter how pretty it is.
Benchmarking is somewhat of a black art. It is possible to tweak benchmarks to produce very biased test results to highlight particular features of a product. I have no connection to any vendors, so my tests are not biased by personal or professional concerns. Also, some benchmarks (such as the ones I did) don't exactly portray real-world situations, but they do provide some sort of performance measurement.
Because of resource limits, I was simply unable to acquire the massive amount of equipment needed to accurately simulate, for example, 8 dialup PPP connections. This would have required 9 computers, 16 high speed modems, 8 phone lines (or another way of connecting the modems), and^well, you get the idea. So, keep all this in mind while reading these benchmarks, and take them with a grain or two of salt.
The most interesting statistics are:
I/O throughput--how many characters are sent and received;
CPU overhead--how much of the host CPU is consumed doing the I/O. Only system time is counted, not user time, because it is the efficiency of the kernel driver and hardware that is being measured.
The ideal board gives the highest throughput with the lowest CPU usage.
All tests were done on a generic PC, with an Intel 486DX33 CPU and 256K cache, 16MB RAM, and an ISA bus, running Linux 1.2.0. Benchmark tests were done in single user mode, with a minimally configured kernel, to ensure that other program activity would not skew the test results.
The software I used is called tbench. It was developed by engineers at DigiBoard, with enhancements made by engineers at Stallion. I consider the benchmarking software to be reasonably unbiased, due to the fact that it was developed by two competitors, and the fact that it is used by yet other competitors (such as Comtrol) indicates that they concur. Further modifications were made by Stallion engineers for Linux, to adapt the software to use setserial in order to use higher speeds with the serial ports. The tbench software is in the public domain.
You can get the version of tbench I used at ftp://ftp.cc.gatech.edu/pub/people/gregh/review, along with the full test results. The original version of tbench is available at ftp://ftp.digibd.com/pub/tbench.
The tbench output tests write data to combinations of ports ranging from one port to all 8 ports. The data is written to the output port set as fast as possible, without flow control, to provide a steady stream of data. The data consists of six-digit numbers with checksums. 100K of data is written to each port. Each output test was run three times, and the results were averaged to eliminate any inconsistencies.
There are two sets of test results: “raw” (-opost) and “cooked” (opost) I/O results. It's important to distinguish which types of activity uses which type of I/O mode. Interactive login sessions use cooked mode for I/O, while programs such as file transfer programs, SLIP, PPP, and UUCP do raw I/O. Cooked I/O is slower, because each character must be examined to see if it's a special character, such as ^C or ^Z. In addition, some editing of the line is done. Of course, this takes more CPU overhead. In raw I/O mode, there is no need to examine each character, because all 8-bit combinations are considered to be valid data, and no characters are specially processed.
Under ideal conditions, the actual character per second (CPS) output will be the serial port speed divided by ten. Each character transmitted is 8 bits plus a start and stop bit, hence we device the speed by ten. Output tests were done at 9600, 38400, 57600 and 115200 bps, each in both raw and cooked mode. The raw output data was compiled into graphs for each speed, showing the CPS throughput on one to 8 ports and the CPU usage on one to 8 ports (see page 50).
This board truly lives up to its name. The RocketPort gave a very solid performance across all ports and at all speeds, even at 115.2 Kbps. CPU usage in raw and cooked mode were the lowest of all boards, except at 115.2 Kbps (where the throughput was still the highest). Throughput ranked near the top at all speeds, sometimes getting slightly less than the Stallion board, and was the absolute best by a margin of 500-1100 CPS at 115.2 Kbps.
The Cyclom-8Yo gave a somewhat lower performance than the equally-equipped Stallion board. The throughput was nearly always lower, and the CPU usage nearly always higher, compared to the competitors, except at 115.2 Kbps in cooked mode, where the Cyclom bested all boards in CPU usage (but not in throughput) at a surprisingly low 44%. A new version of the driver has been released, in which the CPU handling is improved, but we were unable to test it in time for publication. Throughput also varied irregularly with different port configurations.
The performance of this board was poor at high speeds. CPS throughput was acceptable at 9600 bps, and at 38400 bps in raw mode. At 38400 bps in cooked mode, throughput degraded quickly as more ports were tested. However, Digi does state in their sales literature that 38400 bps is the maximum usage rate for an 8 port board (even though you can run the rate up to 115.2 Kbps) so the results weren't all that surprising. At all speeds, the CPU usage in cooked mode was unusually high, and at high speeds, the board ground the CPU to a screeching halt. In raw mode, CPU usage was actually quite good, but the throughput degraded to unacceptable levels at speeds greater than 38400 bps.
Because of the design similarity of the EasyIO/8 and EasyConnection 8/32, and the fact that my tests on the EasyIO/8 were very close to similar tests done by the driver's developer on an EasyConnection 8/32, the EasyConnection 8/32 was not benchmarked. It is reasonable to assume that results for both boards will be nearly identical in an 8 port configuration.
Overall, the EasyIO/8 did quite well. Throughput at 9600, 38400 and 57600 bps was comparable to the Comtrol RocketPort, sometimes winning by a slight margin. Even at 115.2 Kbps, the board performed quite well in throughput, although CPU usages were higher than the RocketPort's at all speeds. Compared to the Cyclades board, which uses the same UART technology, the EasyIO/8 did higher throughput and generally used less CPU time, except at 115.2 Kbps. The driver must be amazingly tuned to get such high throughput with 12 byte FIFOs. CPS throughput did begin to vary slightly at 115.2 Kbps, but remained steady at other speeds.
Input tests are much harder to do than output tests. Output tests only require one computer, and it's not even necessary to connect any cables. To do input tests properly, you need more equipment. Two computers are needed, each equally equipped and each with the same serial board, of course. These two systems must then be cabled together. One system is then designated as the “producer” system and outputs data, while the other system is designated the “consumer” system and inputs data.
Unfortunately, we lacked sufficient resources to do a good job at this, and so the input tests that were run do not give a worthwhile and reliable indication of the cards' capabilities. We do not want to give questionable test results due to less-than-ideal test conditions, so input test results are not reported here. In future reviews, perhaps we will be able to do meaningful input tests; please tell us if you would find this useful.
1) How much performance do you get for your money?
Throughput and CPU usage are important statistics to consider, besides the price. The Comtrol RocketPort RA boards are hard to beat, both in price and performance. They have the lowest price if you buy the octopus cable version of the board and offer the best overall performance. However, using the connector box makes the RocketPort less price-competitive. The Stallion boards are not bad performance-wise, but the EasyIO/8 is slightly more expensive than the Cyclades and Comtrol boards. The EasyConnection 8/32 is also slightly more expensive, but is a modular board, so the higher price is to be expected. Cyclades boards are quite competitive in the price ranges and are consistently lower-priced than the similar Stallion, but their performance is also slightly lower. The DigiBoard PC/8e is expensive, and performed poorly in our tests. We can only recommend using this board if you have already purchased it.
2) Who supports the driver?
And who can you call when it won't work and you've tried everything? If you are worried about having someone that absolutely has to listen to and fix your problem, then Comtrol and Cyclades have what you need. Cyclades has been backing their Linux drivers for their Cyclom line of boards for almost a year now, and Comtrol is very eager to support their hardware under Linux. In fact, while doing my benchmarking with the Comtrol driver, I discovered a serious performance problem at high speeds. After I contacted the Comtrol engineer with my problem, he immediately began to examine the driver code and confirmed my suspicions. Later that afternoon, he found the driver problem. I had a fixed version of the driver by the next day.
Even though the other engineers and sales personnel at Digi and Stallion were very helpful, there is no substitute for technical support backed by the vendor.
General information on setting up serial devices, such as terminals and modems, can be found in the Serial-HOWTO, available at http://sunsite.unc.edu/mdw/
HOWTO/Serial-HOWTO.html on the Web. Plain text and PostScript versions can be found at ftp://sunsite.unc.edu/pub/
Linux/docs/HOWTO and also at the many sunsite mirrors.
In real life, Greg is an aspiring young sysadmin at Georgia Tech's College of Computing. In his spare time, he maintains the Linux Serial-HOWTO and coordinates the HOWTO project. He has been running Linux for over two years now. Comments are welcome via e-mail at firstname.lastname@example.org.