什么是 UARTs? 它们如何影响效能?

UARTs (通用异步接收转换器,Universal Asyncronous Receiver Transmitter)是你 PC 串行卡上的芯片.它们的功用是把数据转成比特,将这些比特送上串行线路,然后在另一端重新建立数据. UARTs 是以比特为单位处理数据,很方便地也是美国标准交换码(ASCII)的字符大小.
假定是你有一台连接到你 PC 的终端机.当你键入一个字符时,终端机把它交给它的转换器(也是 UART 的一种).该转换器以指定的速率把这个比特送到串行线路上,每次一个比特.在 PC 这一端,接收比特的 UART 拿走所有的比特,然后重新组成比特并且放到缓冲区里去.
有两种不同的 UARTs 类型.你可能有听过愚蠢的(dumb)UARTs - 8250 还有 16450,以及先进先出式 UARTs - 16550A.要了解它们的不同,首先让我们来检验当 UART 送出或接收一个比特时所发生的事.
这 UART 本身并不能对数据做什么处理,它只是送出以及接收它.每次送出或接收一个比特时,CPU 都会从串行设备接到一个中断.然后 CPU 就把接收到的比特从 UARTs 的缓冲区搬到内存的某处,或是提供另一个比特给 UART 传送. 8250 以及 16450 UARTs 只有一个比特的缓冲区.这个意思是,每送出或接收一个比特就会中断 CPU 一次.在低速的情况下这样没有问题.但是在高速的传输率下,CPU 会忙於处理 UART 而没有时间照料其它工作.在某些情况下,CPU 没有足够的馀裕及时处理中断服务,该比特将因子据如此快速地传入而被覆写.
这就是 16550A UARTs 有用的地方.这些芯片具有 16 个比特的先进先出队列.这个意思是它在必须中断 CPU 之前可以接收或转换达 16 个比特.它不仅是能等,而且 CPU 现在也可以同时传送全部 16 个比特的数据.虽然中断界限(threshold)很少有设到 16 的,这对于其它只有一个比特缓冲区的 UARTs 而言仍然是一个重要的优点. CPU 收到较少的中断,因此可以自由地做其它事情.数据不会漏失,每个人都很高兴. (也有 16550 这个 UART,但是它跟 16450 一样因为它有问题.)
一般来说, 8250 以及 16450 UARTs 应该能够胜任高达 38400 bps 的工作速率.在高於 38400 bps 的速率下,你可能开始见到数据漏失.其它的 PC 操作系统(这里的定义很宽松),像 DOS 并非是多工的,所以它们有可能可以用 8250 或 16450s 却应付的更好.这就是为什么有些人并没有看到数据漏失,直到他们改用 Linux 才发生.
无-UART(Non-UART)以及智能大楼型多口卡使用数字处理机(DSP)芯片来处理额外的缓冲以及控制,如此更能减轻 CPU 的负担.例如,Cyclades Cyclom 及 Stallion EasyIO 这些卡使用 Cirrus Logic CD-1400 RISC 芯片,还有许多卡使用 80186 CPU 或更特别的 RISC CPU 来处理串行输出入.
心里要记得,这些愚蠢型的 UART 并非是坏的,只是它们不适合做高速传输.当你将终端机或鼠标连接到这些 UARTs 时应该不会遭遇困难.但是对高速调制解调器而言,16550A 可以说是必须的.
你可以花多一点点的钱购买有 16550A UARTs 的串行卡,只要询问计算机商该卡所使用的是什么型号的 UARTs 即可.或者你想升级你现在的卡,你可以只要简单地购买 16550A 芯片并且置换你现在的 16450 UARTs 芯片.它们的脚位兼容(pin-to-pin compatible).有些卡有 UARTs 插槽来作这个用途使用.如果不是的话你可以焊接.注意,如果你有钱,买一张新卡将可能会省掉你许多麻烦,它们在 $50 元美金以下.
13. 故障排除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值