Skip to content

总线仲裁

考情分析

总线仲裁是 408 选择题的常客,尤其爱考三种集中式仲裁的对比:控制线数量、优先级灵活性、响应速度。链式查询和独立请求的线数计算属于高频考点。

多设备竞争总线的冲突问题

多个主设备可能同时请求使用总线,但总线在同一时刻只能被一个主设备控制。总线仲裁(Bus Arbitration)的作用就是在多个竞争者中选出一个,授予它总线控制权。

仲裁的基本流程:

  1. 设备向总线控制器发出总线请求(BR)
  2. 总线控制器按照仲裁策略选出一个设备
  3. 向该设备发送总线授权(BG)
  4. 设备确认后占用总线,完成传输后释放

集中式仲裁

由一个中央仲裁器统一决定。按实现方式分为三种。

链式查询(菊花链)

总线控制器 ──BG──→ 设备0 ──BG──→ 设备1 ──BG──→ 设备2 ──→ ...
                 │          │          │
                 BR─────────┴──────────┴──→ 总线控制器
  • 所有设备共享一条 BR 线(总线请求)
  • BG 信号沿链路依次传递,最靠近控制器的设备优先级最高
  • 某设备收到 BG 时:如果自己有请求则截获,否则传给下一个

控制线数量2+1=3 条(1 条 BR、1 条 BG、1 条 BS 忙信号),与设备数量无关。

优点缺点
控制线最少,扩展简单优先级固定,低优先级设备可能饿死
对链路中设备故障敏感(断链)
BG 串行传递,仲裁速度慢

计数器定时查询

总线控制器 ──计数值──→ 所有设备(每个设备有唯一编号)

设备比较自身编号与计数值,匹配则获得控制权
  • 控制器内部有一个计数器,发出总线请求后,控制器从某个值开始计数
  • 计数值通过设备地址线广播给所有设备
  • 设备编号与计数值匹配且有请求时,获得总线

控制线数量log2n+2 条(log2n 条设备地址线 + 1 条 BR + 1 条 BS),n 为设备数。

优点缺点
优先级可变(计数器初值可调)控制线数多于链式查询
从 0 开始计数 = 固定优先级需要额外的计数器硬件
从上次停止处继续 = 公平轮转速度中等

独立请求

设备0 ──BR₀──→ 总线控制器
设备1 ──BR₁──→ 总线控制器    控制器根据优先级逻辑
设备2 ──BR₂──→ 总线控制器    直接向选中设备发送BG
       ...
设备0 ←──BG₀── 总线控制器
设备1 ←──BG₁── 总线控制器
设备2 ←──BG₂── 总线控制器
  • 每个设备独立连接 BR 和 BG 线到控制器
  • 控制器同时看到所有请求,用优先级逻辑直接选出

控制线数量2n+1 条(n 条 BR + n 条 BG + 1 条 BS)。

优点缺点
仲裁速度最快(不需要串行传递)控制线数最多
优先级灵活可编程硬件开销最大
不受单点故障影响

三种集中仲裁对比

特性链式查询计数器定时查询独立请求
控制线数3log2n+22n+1
优先级固定可变灵活可编程
仲裁速度中等
硬件复杂度
故障敏感高(断链)

分布式仲裁

没有中央控制器,每个设备自带仲裁逻辑。各设备将自己的仲裁号(优先级编号)发送到共享仲裁总线上,所有设备同时比较,编号最大(或最小)者获胜。

  • 优点:无单点故障,扩展灵活
  • 缺点:每个设备都需要仲裁逻辑电路

408 中分布式仲裁出题极少,了解即可。

交互可视化

加载可视化中...

例题

例 1:某系统有 16 个设备,分别计算三种集中仲裁方式的控制线数。

  • 链式查询:3
  • 计数器定时查询:log216+2=4+2=6
  • 独立请求:2×16+1=33

例 2:链式查询中,如果靠近总线控制器的设备一直频繁请求总线,会出现什么问题?

:高优先级设备会不断截获 BG 信号,导致低优先级设备始终无法获得总线控制权,产生饥饿现象。这是链式查询固定优先级的本质缺陷。

例 3:在计数器定时查询中,如果每次从上次停止的位置继续计数,这种策略的效果是什么?

:效果等同于公平轮转(Round-Robin),每个设备被服务的机会大致相等,不会出现饥饿。

考点清单

  • 链式查询控制线最少(3 条),但优先级固定、速度最慢
  • 独立请求控制线最多(2n+1),但速度最快、优先级最灵活
  • 计数器定时查询的控制线数为 log2n+2
  • 链式查询的致命缺陷:链路中某设备故障会导致后续所有设备无法仲裁
  • 计数器从 0 开始 = 固定优先级,从上次停止处开始 = 轮转公平