我对 ISA 总线的理解是 CPU 在总线上放置一个地址,任何扩展卡都可以通过控制数据总线来自由响应该地址。我假设使用了三态缓冲器。所以我的问题是,ISA 和/或 PC/XT 总线中是否有任何仲裁机制来防止两张卡响应相同的地址?我对三态逻辑的理解是,如果发生这种情况,三态缓冲区可能会被烧毁。在争用的情况下,也许有某种较小的缓解措施来防止这种损害?
在网上看,我没有看到仲裁或减轻损害的说法,但我也不知道有人因为地址重叠而使用烧毁的 ISA 扩展卡的故事。
我对 ISA 总线的理解是 CPU 在总线上放置一个地址,任何扩展卡都可以通过控制数据总线来自由响应该地址。我假设使用了三态缓冲器。所以我的问题是,ISA 和/或 PC/XT 总线中是否有任何仲裁机制来防止两张卡响应相同的地址?我对三态逻辑的理解是,如果发生这种情况,三态缓冲区可能会被烧毁。在争用的情况下,也许有某种较小的缓解措施来防止这种损害?
在网上看,我没有看到仲裁或减轻损害的说法,但我也不知道有人因为地址重叠而使用烧毁的 ISA 扩展卡的故事。
最初的 IBM PC 只是使用缓冲驱动程序将 Intel 芯片组总线扩展到连接器。卡总线上的时钟频率与用于 CPU 周期的时钟频率完全相同。因此,在 PC 的 CPU 上大约有\$4.77\:\text{MHz}\$(通过除以 3 得到\$14.31818\:\text{MHz}\pm 5\:\text{ppm}\$晶体速率),这意味着一个典型的 6 周期、8 位 I/O 总线事务大约需要\$1.26\:\mu\text{s}\$. 这与当时的技术是一致的,因此电路板可以使用中间(就速度而言)和价格合理的设备来解码和锁存地址。IBM 最终将发布一套相当完整的关于 IBM PC、XT 和 PC/AT 的文档,其中包括布局合理且易于理解的详细原理图,以及其 BIOS 源代码(汇编中)的完整列表。
PC和XT只是使用反映英特尔芯片设计的总线设计,没有扩展功能(我知道)。如果你试图增加CPU的时钟频率,那么总线的时钟频率也会增加,并且这给董事会带来了压力。但我不记得有多少人尝试这样做,所以这不是问题。
随着 PC/AT 和 80286 的出现,新的 16 位 I/O 事务和 16 位内存事务变得可用。英特尔还改用了新的 82284 时钟生成芯片和 82288 总线控制芯片。IBM 添加了额外的 DMA 通道和中断信号线,并添加了仲裁事务,以便附加卡可以取代平台 CPU 作为总线所有者。(稍后再谈。)
CPU 的新标准限制现在是\$6\:\text{MHz}\$。公交费率同样提高了,需要更新的电路板跟上。IBM 还为该系统推出了许多新卡。
80286 有四个地址线(从 20 到 24),现在可以进入新的受保护操作模式来访问这些新线。虽然英特尔能够使用适当的软件指令从实模式操作转换到保护模式,但他们急于将芯片推向市场,并未能成功推出能够切换回实模式的新 CPU . 因此,从保护模式返回到实模式的唯一方法是通过处理器复位。IBM 通过键盘接口处理了这个问题,使用键盘(以及他们使用的日历 IC 中的内存)在收到指令时强制进行硬件重置。
PC/AT 总线上更宽的总线传输现在也支持更快的总线循环速率;“字节交换器”用于在总线上传输低位和高位字节;新的刷新周期逻辑使用分立电路。
人们很快发现,只需更换时钟晶体,就可以将昂贵的 IBM PC/AT 的时钟频率提高到大约\$8\:\text{MHz}\$。我这样做了,发现在事情开始变得不确定之前,我可以成功地推动系统和我使用的大约\$8.5\:\text{MHz}\$的板。(我无法在我的系统上达到一致的\$9\:\text{MHz}\$,所以我在\$8\:\text{MHz}\$安顿下来并留在那里。)
当时设计主板所需的技能水平(和所需的工具)相对较低。几乎任何人都可以找到便宜的零件并进行在这些频率下可以正常工作的体面布局。许多“夫妻”主板制造商很快开始进入现场。(对于大多数人来说,IBM 的价格非常高。)
也许第一个真正成功(能够以 99% 的兼容性模拟 IBM 硬件)PC 替代品是 Kaypro 的 286i 产品。在此之前,通常存在太多“问题”,无法让产品充分为商业市场所接受(尽管业余爱好者通常还可以)。Kaypro 的入门价格比 IBM 的便宜约 2000 美元,因此很快就推出了。
随着越来越多的竞争对手解决了兼容性问题并开始竞争,英特尔也开始推出速度更快的规格 80286 CPU。电路板制造商将采用这些更新的 CPU,包括更快的逻辑芯片,以便总线可以更快地运行,我们开始看到\$8\:\text{MHz}\$、\$10\:\text{MHz}\$,甚至\$12\:\text{MHz}\$供品。但这几乎立即给附加卡带来了压力。旧卡根本无法使用,而新卡太少,相差太远,消费者面临购买更快的系统,这大大减少了他们可以购买和成功使用的附加卡的数量。
虽然一些公司试图用离散芯片将附加卡总线速率与内部英特尔总线速率隔离(取得了一些成功),但“妈妈和流行”主板制造商的绝对数量以及将时钟速率分开的需要CPU 从总线的周期时间为新公司 Chips and Technology(又名 C&T)打开了大门,以生产完成这项工作的 ASIC。很快,新的主板进入市场,使 ISA 总线周期时间(相对)独立于 Intel CPU 时钟频率。由于英特尔同时继续提高最大 CPU 频率,这对许多竞争对手来说是天赐之物,他们没有内部能力或资金来开发 ASIC,但他们肯定可以在新产品中使用它们。
结果,“频率大战”开始了,几乎没有一个月没有新的主板产品没有增加 CPU 时钟频率。CPU 频率与总线频率的分离对于 C&T 来说也是一个巨大的胜利,他们在这个过程中做得很好。
就像一个注释,我相信解耦的 ISA 总线与平台 CPU 异步操作,但有一个例外:平台 CPU 的 RESET 线。
I/O 和内存总线事务是不同的,但在大多数方面彼此非常相似。只是不同的董事会会做出回应。例如,最初的 8 位 I/O 事务是 6 个总线周期长。但是随着 PC/AT 的更新,更宽的总线包含了一个 3 周期 I/O。
每个附加板的工作是锁存和解码他们感兴趣的地址和相关信号(例如,IOR 或 IOW,用于响应 I/O 总线周期的卡。)然后他们有一定数量的时钟响应标准事务。然而,如果 I/O 卡想要增加总线周期来完成其事务,它可以断言 IOCHRDY。
随着现在使用 PC/AT ISA 总线的 8 位和 16 位事务的出现,出现了一些问题。例如,当所有者只需要 8 位时,16 位 I/O 从属插件无法强制总线主控器(可能是也可能不是平台 CPU)执行 16 位访问。类似地,打算进行 16 位访问的总线所有者不能命令 8 位从属插件执行 16 位访问。因此,增加了信号线来帮助解决这些情况。
从这个意义上说,DMA 访问周期与其他两个周期略有不同:DMA 将同时激活 I/O 和内存命令信号线,以允许在同一周期内将数据放入总线并从总线检索。在这里,例如,放置在总线上的地址是用于内存的,而不是用于 I/O 卡(它不应该使用它。)(激活 AEN 以指示 I/O 卡不要使用该地址。)
响应 I/O 地址的附加板被设置在独特的位置以避免冲突。IBM 为重要的卡(视频显示器、串行端口、并行端口、中断控制器等)提供了有关此方面的指导,但许多附加板制造商也会提供调整 I/O 地址的方法,以便如果您使用两个或更多他们的董事会,他们可以一起工作。总的来说,该系统运行良好,几乎没有问题。(大多数问题与各种类型的显示控制器板所需的图形内存有关。)
从技术上讲,实际上存在一个仲裁周期。这不是你要问的。相反,它是另一个总线主控器(可能位于附加卡上)可以作为主控器声明对总线的所有权的一种方式。这个周期实际上开始看起来像一个 DMA 传输周期,它是第一个响应的 DMA 控制器。然后,潜在的总线主控器有一个固定的时间来断言 MASTER 并获得所有权。然后 DMA 控制器将其自己的地址、命令和数据信号三态化。(大约在 1986 年,我与一个团队一起为 IBM PC/AT 开发 MIPS R2000 附加卡。)
不,没有对地址的完整性检查。如果您将两张或更多卡设置为相同的地址,它们都会被写入相同的数据。读取会导致一张牌拉低另一张牌拉高的冲突。但它主要使用 LSTTL 时代的芯片,芯片可以经受得住这一点,并且冲突读取的周期/占空比非常短。
没有机制可以防止多个卡响应来自总线主机的地址。这不是一个重大问题,我不知道有任何计算机总线具有这种机制。即使确实同时启用了多张卡,损坏的可能性也非常低,并且缓冲设备通常设计为能够承受这种短路。
仲裁是一个术语,用于允许总线主机拥有多个需要访问的总线。在 ISA 总线的情况下,该仲裁由主板上的 DMA 控制器执行。当访问被授予时,地址可以由 DMA 控制器或新的总线主控器提供。
一般来说,对于任何计算机化的通信方案,端点都需要有唯一的地址。电话(或至少固定电话的电话线)具有唯一的电话号码,计算机具有唯一的 MAC 地址(并被分配唯一的以太网地址,或者所有 h*** 都松散了),等等。
所以一般来说,不仅仅是 ISA 和 PCI,端点都有唯一的地址。唯一可以避免不给特定硬件提供唯一地址的地方是,当它的地址来自它在系统中的位置时(即,ISA 总线的设计者可以选择给每个卡插槽一个将附加到卡地址的唯一编号。为了灵活性和减少设计时间,他们显然选择不这样做)。