评测:智能多端口串口卡
如果您计划支持终端集群、用于 BBS 的调制解调器池、SLIP/PPP 服务器或 UUCP 站点,您可能会发现自己很快就用完了串口。标准 PC 串口限制为四个端口,因此如果您需要超过四个端口,您很可能正在考虑购买多端口卡。在向您的机器添加多端口串口卡时,有许多因素需要考虑。随着调制解调器速度越来越快,I/O 吞吐量已成为越来越重要的因素。在添加大量端口时,考虑 CPU 使用率也很重要。随着您添加更多端口,主机 CPU 将不得不花费更多时间进行串口 I/O。
串口卡基本有两种类型:“基于 UART”(通用异步收发器)和“智能型”。标准 PC 串口卡 (COM1-COM4) 通常配备 8250 或 16450 UART,带有一个字节的发送和接收 FIFO(缓冲区),或者 16550A UART,带有十六字节的发送和接收 FIFO。Boca 2016 和 AST Fourport 等板卡在多端口板卡配置中使用了这些类型的 UART。
大多数这些类型的板卡都受到标准 Linux 串口驱动程序的支持,因为它们都使用相同类型的 UART 和 I/O 技术。由于 FIFO 大小有限,并且所有字符处理都必须由主机 CPU 完成,因此基于 UART 的串口卡可能不足以提供您需要的 I/O 功率,例如,驱动高速调制解调器组。
这就是智能多端口串口卡发挥作用的地方。这些板卡具有带有更大 FIFO 的串口控制器,并具有某种“智能”,例如带有某些字符识别和流量控制逻辑的 RISC UART。有些甚至可能拥有自己的 CPU 来处理串口 I/O。由于这些板卡在芯片组和控制逻辑上有所不同,因此必须为每种板卡编写驱动程序才能与 Linux 一起使用。使用旧的 tty 驱动程序(它为所有终端设备(包括串口、控制台和伪终端)提供抽象的通用处理),几乎不可能支持智能多端口卡。
在 1.1 Linux 开发内核中,Ted Ts'o(串口驱动程序和 tty 驱动程序的维护者)重写了通用的 tty 驱动程序,以支持多种类型的串口设备,从而改进了串口驱动程序。从那时起,已经编写了几个智能多端口卡的驱动程序,并且正在开发更多驱动程序。在本期中,我将评测由四家制造商提供的 8 端口智能串口卡:Comtrol、Cyclades、Digi International 和 Stallion Technologies。有关供应商联系信息,请参阅供应商联系信息。现在让我们详细了解一下每张板卡。
以下 8 端口串口卡被送来供我评测。应该注意的是,除了我评测的型号外,Linux 还支持许多其他型号的板卡,具有不同的端口配置和 I/O 功能。支持的板卡列表可在表 1 中找到。在表 1 的“控制信号”列中,MC 代表“RS232 调制解调器控制”,HWC 代表完整的“RS232 硬件流控制”。在“最大速度”列中,所有数字均以 bps 为单位。
RocketPort RA(远程访问)8 系列板卡采用两个 36 MHz ASIC(专用集成电路),每个端口具有 256 字节的发送 FIFO 和 1024 字节的接收 FIFO,并内置流量控制和线路规程处理。ASIC 还处理其他功能,例如总线接口逻辑和其他杂项逻辑,从而显着减少了板卡上的组件数量。
RocketPort RA 8 板卡支持全 RS232D 调制解调器和硬件流控制信号,速度高达 230.4 Kbps。一个系统中最多可以安装四个 RocketPort RA 8 板卡。第一个需要 68 字节的 I/O 地址范围,每个额外的板卡需要 64 字节的 I/O 地址范围。I/O 地址范围可从 0x100、0x140、0x180、0x200、0x240、0x280、0x300、0x340、0x380 中选择,并通过 DIP 开关设置。任何板卡都不需要 IRQ。驱动程序以可加载模块的形式提供,并由 Comtrol 支持。RocketPort RA 8 系列具有 RocketPort RA Octacable,其中包括带有 DB25 连接器的章鱼电缆,价格为 499.00 美元;RocketPort 8 RA,其中包括带有 DB25 连接器的连接器盒,价格为 678.00 美元。
Cyclom-8Y 系列板卡采用两个 12.5 MHz Cirrus Logic CD-1400 RISC UART。CD-1400 UART 处理流量控制和特殊字符识别,并具有 12 字节的发送和接收 FIFO,以及每个端口的保持和移位寄存器。Cyclom-8Y 板卡支持全 RS232C 调制解调器控制和硬件流控制信号(Cyclom-8Ys 除外,它没有 RTS 信号),并将支持高达 115.2 Kbps 的速度。每个 Cyclom-8Y 板卡都需要一个中断 (IRQ),可从 5、9、10、11、12 和 15 中选择,以及一个 8K 块的双端口 RAM,可从 0xA0000-0xEE000 中选择。IRQ 和 I/O 地址都通过板上的 DIP 开关设置。可以同时使用四个板卡,每个板卡都需要自己的 IRQ 和 I/O 地址。
Cyclom 板卡的驱动程序包含在内核源代码中,从 1.1.74 及更高版本开始。Cyclom-8Y 板卡由 Cyclades 支持,Cyclades 是第一家为 Linux 下的智能多端口卡提供供应商支持驱动程序的公司。Cyclom-8Y 系列有四种 8 端口型号:Cyclom-8Ys,带有板载 RJ12 连接器(无 RTS 信号),价格为 459.00 美元;Cyclom-8Yo,带有带有 DB25 连接器的章鱼电缆,价格为 511.00 美元;以及 Cyclom-8Yb 和 Cyclom-8Yb+,在外部盒中带有 DB25 连接器(Cyclom-8Yb+ 还具有浪涌保护),价格分别为 599.00 美元和 699.00 美元。
DigiBoard PC/8e 板卡由 12.5 MHz Intel 80186 CPU 驱动,用于处理 I/O 处理。它还使用 64K 板载 RAM 进行数据缓冲。一个系统中最多可以使用七个 PC/8e 板卡,每个板卡都需要一个四字节的 I/O 地址,可从 0x100、0x110、0x120、0x200、0x220、0x300 和 0x320 中选择,并带有 DIP 开关。这款板卡的优点是 DIP 开关位于卡片的背面,因此您无需打开计算机即可看到和更改 I/O 地址。还需要一个 8K 块的双端口 RAM,但这可以在所有板卡之间共享。此地址可由 PC/8e 驱动程序从 0xC0000-0xEFFFF 中选择。不需要 IRQ。
PC/8e 板卡支持 RS232C 全调制解调器和硬件流控制信号,速度高达 115.2 Kbps。此板卡的驱动程序由 Troy De Jongh(DigiBoard 的员工)支持,而不是 DigiBoard 支持。PC/8e 主机适配器价格为 795.00 美元,DB25 连接器章鱼电缆价格为 90.00 美元,DB25 连接器盒价格为 110.00 美元,RJ45 连接器盒价格为 110.00 美元。
Stallion 板卡采用与 Cyclades 板卡相同的 CD-1400 RISC UART,具有相同的功能。Stallion 8 端口板卡有两种型号:EasyIO/8 和 EasyConnection 8/32 模块化板卡。这两款板卡都需要一个 8 字节的 I/O 地址,可使用 DIP 开关从 0x200-0x3FF 中选择,以及一个 IRQ,可使用驱动程序从 3、4、5、7、10、11、12 和 15 中选择。IRQ 可以在 EISA 总线机器上的所有板卡之间共享。EasyConnection 8/32 板卡需要一个额外的 32 字节辅助 I/O 地址,可通过驱动程序从 0x200-0x3FF 中选择,也可以在所有 EasyConnection 8/32 板卡之间共享。驱动程序支持 EasyIO/8 和 EasyConnection 8/32 板卡的任意组合,最多四个。
EasyIO/8 板卡提供 8 个 RS232C 串口,速度高达 115.2 Kbps,具有全调制解调器和硬件流控制。EasyConnection 8/32 板卡提供 8-32 个端口,支持 RS232D 全调制解调器和硬件流控制信号,速度高达 115.2 Kbps,并且可选支持 RS422A 信号,速度也为 115.2 Kbps。EasyConnection 8/32 提供 8 端口或 16 端口模块,可以任意组合使用,形成 32 端口模块。每个模块都有自己的 CD-1400 芯片来支持该模块上的端口。这些模块制作精良,背面还带有壁挂支架。此系列板卡的驱动程序由 Greg Ungerer(Stallion 的员工)支持,而不是 Stallion 支持。EasyIO/8 提供带有 DB25 连接器章鱼电缆或 RJ45 连接器盒的版本,价格为 595.00 美元。EasyConnection 8/32 主机适配器价格为 300.00 美元。8 端口模块的价格为 RS232 连接器盒(带有 RJ45 或 DB25 连接器)595 美元,RS232/RS422 DB25 连接器盒 795.00 美元。带有 RJ45 连接器的 16 端口模块的价格为 845.00 美元,带有 DB25 连接器的 16 端口模块的价格为 945.00 美元。
所有产品都具有以下几个共同特性
所有制造商都提供五年保修和 30 天退款保证。
ISA/EISA 总线是唯一支持的总线类型,尽管一些供应商正在进行 PCI 卡的支持工作。
每个人都非常乐于助人;即使是那些在业余时间支持驱动程序的人也非常积极响应。
所有板卡都按照驱动程序随附的文档安装并完美运行。每张板卡都在我的系统中使用了超过一周,支持我的 UUCP 馈送。我还使用交互式登录会话、文件传输和使用 V.34 调制解调器的拨号 PPP 连接进行了测试。在此可用性测试阶段,任何板卡都没有遇到问题。哑终端是通过在串口卡上互连电缆来模拟的。同样,没有遇到任何问题。
不幸的是,基准测试对于硬件评测来说是必要的恶魔。您不能仅凭外观来判断硬件,无论它多么漂亮。
基准测试在某种程度上是一门黑色艺术。可以调整基准测试以产生非常有偏差的测试结果,以突出产品的特定功能。我与任何供应商都没有联系,因此我的测试不受个人或专业问题的偏见。此外,一些基准测试(例如我所做的那些)并不完全描绘真实世界的情况,但它们确实提供某种性能衡量标准。
由于资源限制,我根本无法获得准确模拟(例如)8 个拨号 PPP 连接所需的大量设备。这将需要 9 台计算机、16 个高速调制解调器、8 条电话线(或另一种连接调制解调器的方式),以及...好吧,您明白了。因此,在阅读这些基准测试时,请牢记所有这些,并对它们持保留态度。
最有趣的统计数据是
I/O 吞吐量——发送和接收了多少字符;
CPU 开销——主机 CPU 花费多少时间进行 I/O。仅计算系统时间,不计算用户时间,因为正在衡量的是内核驱动程序和硬件的效率。
理想的板卡应以最低的 CPU 使用率提供最高的吞吐量。
所有测试均在通用 PC 上完成,该 PC 配备 Intel 486DX33 CPU 和 256K 缓存、16MB RAM 和 ISA 总线,运行 Linux 1.2.0。基准测试在单用户模式下完成,内核配置最少,以确保其他程序活动不会扭曲测试结果。
我使用的软件名为 tbench。它是由 DigiBoard 的工程师开发的,并由 Stallion 的工程师进行了增强。我认为基准测试软件是相当公正的,因为它是由两个竞争对手开发的,并且其他竞争对手(如 Comtrol)也使用它这一事实表明他们也同意。Stallion 工程师为 Linux 进行了进一步修改,以使该软件适应使用 setserial,以便在串口上使用更高的速度。tbench 软件是公共领域软件。
您可以在 ftp://ftp.cc.gatech.edu/pub/people/gregh/review 获取我使用的 tbench 版本,以及完整的测试结果。tbench 的原始版本可在 ftp://ftp.digibd.com/pub/tbench 获取。
tbench 输出测试将数据写入从一个端口到所有 8 个端口的端口组合。数据以尽可能快的速度写入输出端口集,无需流量控制,以提供稳定的数据流。数据由带有校验和的六位数字组成。每个端口写入 100K 数据。每个输出测试运行三次,结果取平均值以消除任何不一致之处。
有两组测试结果:“原始”(-opost)和“熟化”(opost)I/O 结果。区分哪种类型的活动使用哪种类型的 I/O 模式非常重要。交互式登录会话使用熟化模式进行 I/O,而文件传输程序、SLIP、PPP 和 UUCP 等程序则使用原始 I/O。熟化 I/O 速度较慢,因为必须检查每个字符以查看它是否是特殊字符,例如 ^C 或 ^Z。此外,还对行进行了一些编辑。当然,这需要更多的 CPU 开销。在原始 I/O 模式下,无需检查每个字符,因为所有 8 位组合都被认为是有效数据,并且没有字符被特殊处理。
在理想条件下,实际每秒字符数 (CPS) 输出将是串口速度除以十。每个传输的字符是 8 位加上一个起始位和一个停止位,因此我们将速度除以十。输出测试分别在 9600、38400、57600 和 115200 bps 下完成,每种模式都包括原始模式和熟化模式。原始输出数据被编译成每个速度的图表,显示一个到 8 个端口的 CPS 吞吐量以及一个到 8 个端口的 CPU 使用率(参见第 50 页)。
这款板卡确实名副其实。RocketPort 在所有端口和所有速度下都表现出非常稳定的性能,即使在 115.2 Kbps 下也是如此。原始模式和熟化模式下的 CPU 使用率是所有板卡中最低的,除了在 115.2 Kbps 下(此时吞吐量仍然是最高的)。吞吐量在所有速度下都名列前茅,有时略低于 Stallion 板卡,并且在 115.2 Kbps 下以 500-1100 CPS 的优势绝对最佳。
与同等配置的 Stallion 板卡相比,Cyclom-8Yo 的性能略低。与竞争对手相比,吞吐量几乎总是较低,CPU 使用率几乎总是较高,除了在熟化模式下的 115.2 Kbps 下,Cyclom 在 CPU 使用率方面击败了所有板卡(但不是吞吐量),出人意料地低至 44%。新版本的驱动程序已经发布,其中 CPU 处理得到了改进,但我们无法及时对其进行测试以进行发布。吞吐量也随着不同的端口配置而不规则地变化。
这款板卡在高速度下的性能很差。CPS 吞吐量在 9600 bps 时可以接受,在原始模式下的 38400 bps 时也可以接受。在熟化模式下的 38400 bps 时,随着测试端口的增加,吞吐量迅速下降。但是,Digi 在其销售资料中声明,38400 bps 是 8 端口板卡的最大使用率(即使您可以将速率提高到 115.2 Kbps),因此结果并不令人意外。在所有速度下,熟化模式下的 CPU 使用率都异常高,而在高速度下,该板卡使 CPU 嘎然而止。在原始模式下,CPU 使用率实际上相当不错,但吞吐量在高于 38400 bps 的速度下降低到不可接受的水平。
由于 EasyIO/8 和 EasyConnection 8/32 的设计相似性,以及我在 EasyIO/8 上进行的测试与驱动程序开发人员在 EasyConnection 8/32 上进行的类似测试非常接近,因此未对 EasyConnection 8/32 进行基准测试。可以合理地假设,在 8 端口配置中,两款板卡的结果将几乎相同。
总的来说,EasyIO/8 的表现相当不错。在 9600、38400 和 57600 bps 下的吞吐量与 Comtrol RocketPort 相当,有时略胜一筹。即使在 115.2 Kbps 下,该板卡在吞吐量方面也表现出色,尽管在所有速度下 CPU 使用率都高于 RocketPort。与使用相同 UART 技术的 Cyclades 板卡相比,EasyIO/8 的吞吐量更高,并且通常使用更少的 CPU 时间,除了在 115.2 Kbps 下。驱动程序必须经过惊人的调整才能在 12 字节 FIFO 的情况下获得如此高的吞吐量。CPS 吞吐量在 115.2 Kbps 下确实开始略有变化,但在其他速度下保持稳定。
输入测试比输出测试难得多。输出测试只需要一台计算机,甚至不需要连接任何电缆。要正确进行输入测试,您需要更多设备。需要两台配置相同的计算机,每台计算机当然都配备相同的串口卡。然后必须将这两个系统连接在一起。一个系统被指定为“生产者”系统并输出数据,而另一个系统被指定为“消费者”系统并输入数据。
不幸的是,我们缺乏足够的资源来做好这项工作,因此运行的输入测试无法可靠地指示卡的功能。我们不想由于不太理想的测试条件而给出有问题的测试结果,因此此处未报告输入测试结果。在未来的评测中,也许我们将能够进行有意义的输入测试;如果您认为这有用,请告诉我们。
1) 您花多少钱能获得多少性能?
除了价格之外,吞吐量和 CPU 使用率是需要考虑的重要统计数据。Comtrol RocketPort RA 板卡在价格和性能方面都难以匹敌。如果您购买板卡的章鱼电缆版本,它们的价格最低,并提供最佳的整体性能。但是,使用连接器盒会降低 RocketPort 的价格竞争力。Stallion 板卡的性能还不错,但 EasyIO/8 的价格略高于 Cyclades 和 Comtrol 板卡。EasyConnection 8/32 的价格也略高,但它是一款模块化板卡,因此价格较高是意料之中的。Cyclades 板卡在价格范围内具有很强的竞争力,并且始终比类似的 Stallion 板卡价格更低,但它们的性能也略低。DigiBoard PC/8e 价格昂贵,并且在我们的测试中表现不佳。如果您已经购买了这款板卡,我们只能建议您使用它。
2) 谁支持驱动程序?
当它无法工作并且您已尝试所有方法时,您可以致电谁?如果您担心需要有人绝对必须倾听并解决您的问题,那么 Comtrol 和 Cyclades 可以满足您的需求。Cyclades 已经为其 Cyclom 系列板卡的 Linux 驱动程序提供了近一年的支持,而 Comtrol 非常渴望支持其硬件在 Linux 下运行。事实上,在对 Comtrol 驱动程序进行基准测试时,我发现高速时存在严重的性能问题。在我就我的问题联系 Comtrol 工程师后,他立即开始检查驱动程序代码并证实了我的怀疑。当天下午晚些时候,他找到了驱动程序问题。第二天我就得到了驱动程序的修复版本。
即使 Digi 和 Stallion 的其他工程师和销售人员非常乐于助人,但供应商支持的技术支持是无可替代的。
有关设置串口设备(如终端和调制解调器)的一般信息,请参见 Serial-HOWTO,可在 http://sunsite.unc.edu/mdw/ 获取
Web 上的 HOWTO/Serial-HOWTO.html。纯文本和 PostScript 版本可在 ftp://sunsite.unc.edu/pub/ 找到
Linux/docs/HOWTO,以及许多 sunsite 镜像站点。
在现实生活中,Greg 是佐治亚理工学院计算机学院一位有抱负的年轻系统管理员。在业余时间,他维护 Linux Serial-HOWTO 并协调 HOWTO 项目。他已经运行 Linux 两年多了。欢迎通过电子邮件 greg.hankins@cc.gatech.edu 提出意见。