Appearance
总线仲裁——模拟器使用指南
考情分析
总线仲裁是 408 选择题的常客,尤其爱考三种集中式仲裁的对比:控制线数量、优先级灵活性、仲裁速度。链式查询和独立请求的线数计算属于高频考点。
这个模拟器用同一个场景(4 个设备竞争总线)对比三种集中仲裁方式:
| 考点 | 考频 |
|---|---|
| 三种仲裁方式的控制线数量 | 🔥🔥🔥 |
| 优先级特性对比 | 🔥🔥🔥 |
| 链式查询的饥饿与断链问题 | 🔥🔥 |
| 计数器定时查询的轮转策略 | 🔥🔥 |
三种模式
1. 链式查询(菊花链)
总线授权信号 BG 从仲裁器出发,沿菊花链依次经过每个设备。有请求的设备截获 BG,后续设备收不到。
你会看到:BG 信号从设备 0 开始逐跳传递。设备 0 有请求就直接截获,设备 2、3 只能等设备 0 释放后才有机会。
固定优先级 = 饥饿风险
链式查询中,靠近仲裁器的设备优先级永远最高。如果高优先级设备频繁请求总线,低优先级设备可能永远得不到服务——产生饥饿现象。
2. 计数器定时查询
仲裁器通过地址线广播计数值,设备编号匹配且有请求时获得总线。
你会看到:计数器从 0 开始递增,匹配到有请求的设备就停下来授权。服务完成后从上次停止处继续计数——实现公平轮转。
优先级可变
从 0 开始计数 = 固定优先级(和链式一样);从上次停止处继续 = 公平轮转(Round-Robin),每个设备机会均等。
3. 独立请求
每个设备有独立的 BR 和 BG 线直连仲裁器,仲裁器同时看到所有请求,一拍选出获胜者。
你会看到:所有请求同时到达仲裁器,仲裁器立即做出决策——不需要串行传递,速度最快。
控制线数量最多
独立请求方式需要 2n+1 条控制线。当 n=16 时,需要 33 条线——硬件开销是三种方式中最大的。这是速度换硬件的典型 trade-off。
对比表
| 链式查询 | 计数器定时查询 | 独立请求 | |
|---|---|---|---|
| 控制线数 | 3 | ⌈log₂n⌉+2 | 2n+1 |
| 优先级 | 固定 | 可变 | 灵活可编程 |
| 仲裁速度 | 慢(串行) | 中等 | 快(一拍) |
| 硬件复杂度 | 低 | 中 | 高 |
| 故障敏感 | 高(断链) | 中 | 低 |
考研高频考点速览
| 考点 | 考频 | 关键记忆 |
|---|---|---|
| 控制线数量计算 | 🔥🔥🔥 | 链式=3,计数器=⌈log₂n⌉+2,独立=2n+1 |
| 优先级特性 | 🔥🔥🔥 | 链式固定,计数器可变,独立灵活 |
| 链式查询致命缺陷 | 🔥🔥 | 断链导致后续设备全部无法仲裁 |
| 计数器起始值 | 🔥🔥 | 从0开始=固定优先级,从上次停止处=轮转公平 |