IBM-PC设计中最初使用的UART芯片是8250。它只能存储一个接收字节,而接收器正在接收下一个字节。这对操作系统的串行端口驱动程序响应“数据接收”中断的响应能力提出了很高的要求。在接收器覆盖它之前,必须足够快地读取该字节。如果不够快会导致溢出错误和无法恢复的数据丢失。高中断率也是有害的。 16550 UART芯片改进了这种设计。它获得了更大的缓冲区FIFO,使操作系统有更多时间在溢出发生之前清空缓冲区。串行端口驱动程序可以编程以在特定填充级别生成中断,从而降低中断率。但是,芯片设计和软件一样存在问题,原始的16550 FIFO实现存在漏洞。在软件方面,由16550A版本1.1修复。问题在于,驱动程序无法确定机器是否有16550的有缺陷版本还是好的版本。像这样简单的芯片没有GetVersion()等价物。因此,它提供了一个属性页面,让用户关闭FIFO支持,从而绕过错误。今天你拥有有缺陷的版本的可能性为零。关闭FIFO已不再必要。