9.4 等待状态、总线仲裁与 8086 工作模式
第 9.3 节建立了单一驱动规则。这条规则解决了电气重叠问题,但实际系统中还有两个差异:设备响应速度并不相同,而且需要发起传送的部件不一定只有 CPU。
READY 为慢速设备延长同一个周期
等待状态(wait state)记为 Tw,是被选设备无法满足正常响应期限时插入总线周期的额外时钟状态。在 8086 中,Tw 位于 T3 与 T4 之间。它会延长当前传送,但不会建立一个新地址阶段。
Tw 期间:
- 已锁存地址仍然指向同一个目标;
- 有效命令仍属于同一笔读或写;
- 数据方向必须继续保持正确;
- 处理器继续检查经过同步的 READY 条件。
精确的引脚建立与保持预算取决于处理器速度、时钟发生器、接口逻辑和设备。初步设计时可以使用下面的模型:
每个 Tw 为响应窗口增加一个时钟周期。最少安全 应使设备延迟对应的时序裕量不为负。在这个模型中,额外等待虽然不会破坏电气安全,却会降低吞吐量。
READY 让同一系统可以混用快速设备与慢速设备。快速存储器可能无需等待,旧式 ROM 或异步外设则只延长自己的访问。如果每个周期都固定使用最坏情况延迟,快速路径也会浪费时间。
仲裁在完整周期边界交接所有权
总线主设备(bus master)是获准通过驱动地址与控制信息来发起传送的部件。CPU 通常是主设备,但直接存储器访问(Direct Memory Access,DMA)控制器可以搬运数据,而不要求 CPU 为每个字执行一条传送指令。
总线仲裁(arbitration)决定哪个请求者成为主设备。安全交接应保持一个不变量:
> 任意时刻,最多只有一个总线主设备驱动共享的地址、数据输出与控制资源。
在 8086 最小模式中,请求者使用 HOLD,CPU 使用 HLDA 回应:
1. 外部控制器使 HOLD 有效。
2. 如果 CPU 正在执行总线周期,就先完成该周期。
3. CPU 让共享总线输出进入高阻态,并使 HLDA 有效。
4. 外部主设备执行自己的传送。
5. 请求者撤销 HOLD,CPU 随后撤销 HLDA 并收回总线。
请求不等于授权。如果 DMA 控制器刚使 HOLD 有效就立即驱动线路,就可能与 CPU 尚未完成的周期发生重叠。
最小模式与最大模式采用不同的控制职责分工
8086 的最小模式(minimum mode)与最大模式(maximum mode)会改变部分引脚的含义,以及 CPU 与外部控制器之间的职责分工。
MN/MX 输入会选择两套引脚功能之一:
| 属性 | 最小模式 | 最大模式 |
|---|---|---|
| MN/MX 电平 | 高 | 低 |
| 典型系统 | 较小的单处理器系统 | 面向多处理器或协处理器的系统 |
| 总线命令 | CPU 直接提供 /WR、M/IO、DT/R、/DEN 等控制 | CPU 提供 S2…S0 等状态,由 8288 等外部控制器生成命令 |
| 局部所有权接口 | HOLD 与 HLDA | 双向 RQ/GT 请求/授权线 |
/RD 在两套引脚功能中都可用,其他若干引脚则会改变含义。例如,最小模式中的 HOLD 与 HLDA 引脚在最大模式中变为 RQ/GT 线路。RQ/GT 在一根双向线上完成请求、授权与释放,它不只是改了名字的 HOLD。
最大模式不会让处理器自动变快,也不会增加地址宽度。它重新组织控制职责,使外部总线控制与仲裁部件能够协调更复杂的系统。最小模式则由 CPU 直接产生常用控制,使较小系统保持简单。
第 9 章已经把信号职责、总线周期时序、复用引脚、电气所有权、可变响应时间与主设备所有权连接起来。第 10 章将使用这套接口连接真实 RAM 与 ROM 芯片、译码片选信号,并建立完整存储器映射。