Appearance
总线仲裁
考情分析
总线仲裁是 408 选择题的常客,尤其爱考三种集中式仲裁的对比:控制线数量、优先级灵活性、响应速度。链式查询和独立请求的线数计算属于高频考点。
多设备竞争总线的冲突问题
多个主设备可能同时请求使用总线,但总线在同一时刻只能被一个主设备控制。总线仲裁(Bus Arbitration)的作用就是在多个竞争者中选出一个,授予它总线控制权。
仲裁的基本流程:
- 设备向总线控制器发出总线请求(BR)
- 总线控制器按照仲裁策略选出一个设备
- 向该设备发送总线授权(BG)
- 设备确认后占用总线,完成传输后释放
集中式仲裁
由一个中央仲裁器统一决定。按实现方式分为三种。
链式查询(菊花链)
总线控制器 ──BG──→ 设备0 ──BG──→ 设备1 ──BG──→ 设备2 ──→ ...
│ │ │
BR─────────┴──────────┴──→ 总线控制器- 所有设备共享一条 BR 线(总线请求)
- BG 信号沿链路依次传递,最靠近控制器的设备优先级最高
- 某设备收到 BG 时:如果自己有请求则截获,否则传给下一个
控制线数量:
| 优点 | 缺点 |
|---|---|
| 控制线最少,扩展简单 | 优先级固定,低优先级设备可能饿死 |
| 对链路中设备故障敏感(断链) | |
| BG 串行传递,仲裁速度慢 |
计数器定时查询
总线控制器 ──计数值──→ 所有设备(每个设备有唯一编号)
│
设备比较自身编号与计数值,匹配则获得控制权- 控制器内部有一个计数器,发出总线请求后,控制器从某个值开始计数
- 计数值通过设备地址线广播给所有设备
- 设备编号与计数值匹配且有请求时,获得总线
控制线数量:
| 优点 | 缺点 |
|---|---|
| 优先级可变(计数器初值可调) | 控制线数多于链式查询 |
| 从 0 开始计数 = 固定优先级 | 需要额外的计数器硬件 |
| 从上次停止处继续 = 公平轮转 | 速度中等 |
独立请求
设备0 ──BR₀──→ 总线控制器
设备1 ──BR₁──→ 总线控制器 控制器根据优先级逻辑
设备2 ──BR₂──→ 总线控制器 直接向选中设备发送BG
...
设备0 ←──BG₀── 总线控制器
设备1 ←──BG₁── 总线控制器
设备2 ←──BG₂── 总线控制器- 每个设备独立连接 BR 和 BG 线到控制器
- 控制器同时看到所有请求,用优先级逻辑直接选出
控制线数量:
| 优点 | 缺点 |
|---|---|
| 仲裁速度最快(不需要串行传递) | 控制线数最多 |
| 优先级灵活可编程 | 硬件开销最大 |
| 不受单点故障影响 |
三种集中仲裁对比
| 特性 | 链式查询 | 计数器定时查询 | 独立请求 |
|---|---|---|---|
| 控制线数 | 3 | ||
| 优先级 | 固定 | 可变 | 灵活可编程 |
| 仲裁速度 | 慢 | 中等 | 快 |
| 硬件复杂度 | 低 | 中 | 高 |
| 故障敏感 | 高(断链) | 中 | 低 |
分布式仲裁
没有中央控制器,每个设备自带仲裁逻辑。各设备将自己的仲裁号(优先级编号)发送到共享仲裁总线上,所有设备同时比较,编号最大(或最小)者获胜。
- 优点:无单点故障,扩展灵活
- 缺点:每个设备都需要仲裁逻辑电路
408 中分布式仲裁出题极少,了解即可。
交互可视化
例题
例 1:某系统有 16 个设备,分别计算三种集中仲裁方式的控制线数。
解:
- 链式查询:
条 - 计数器定时查询:
条 - 独立请求:
条
例 2:链式查询中,如果靠近总线控制器的设备一直频繁请求总线,会出现什么问题?
解:高优先级设备会不断截获 BG 信号,导致低优先级设备始终无法获得总线控制权,产生饥饿现象。这是链式查询固定优先级的本质缺陷。
例 3:在计数器定时查询中,如果每次从上次停止的位置继续计数,这种策略的效果是什么?
解:效果等同于公平轮转(Round-Robin),每个设备被服务的机会大致相等,不会出现饥饿。
考点清单
- 链式查询控制线最少(3 条),但优先级固定、速度最慢
- 独立请求控制线最多(
),但速度最快、优先级最灵活 - 计数器定时查询的控制线数为
- 链式查询的致命缺陷:链路中某设备故障会导致后续所有设备无法仲裁
- 计数器从 0 开始 = 固定优先级,从上次停止处开始 = 轮转公平