4.3 总线仲裁与同步机制


4.3 总线仲裁与同步机制

本节摘要:总线同时只能服务一个主设备,仲裁机制决定"谁先说",同步机制保证"说的时候听懂了"——链式查询、计数查询、独立请求三种仲裁各有权力结构,全互锁握手是慢速设备的最稳拍档。

本章主线在支柱页里预告过一次总线事件的完整回合:申请、仲裁、传输、归还。本节把这个回合逐帧拆开。它同时是第 6 章 DMA 的预科——DMA 控制器抢总线,抢的正是这里的"使用权"。

谁有资格占用总线

总线上的角色分两种:能发起传输的主设备(CPU、DMA 控制器、智能外设)与只能应答的从设备(存储器、普通接口)。多个主设备盯着一条总线,仲裁机制就是分发言权的规则,按权力结构分三派:

链式查询:一根总线授权线串起所有设备,申请信号到达时,授权沿着链条逐个传递——排在前面的设备先接住,不需要就传给下一个。硬件省到极致,三根信号线搞定任意多设备;代价是优先级天生长老制,离总线控制器越近越横,后面的设备可能永远轮不上。适合便宜且设备地位固定的场合。

计数器定时查询:控制器维护一个计数器,设备号像报站一样逐个播报,哪个设备发现报到自己且自己正有申请,就举手接管。优先级可以通过计数起点轮转来均衡——从上次停下的地方继续数,各设备机会均等。信号线增加到约等于设备号的位宽,公平性与成本都在中档。

独立请求:每台设备一根申请线、一根授权线,仲裁器集中决策,可以执行任何优先级策略——固定优先级、轮转、甚至按任务动态加权。响应最快、控制最灵活,代价是信号线数随设备数线性膨胀。现代高性能系统几乎都走这条路。

方案 信号线数 响应速度 优先级灵活性 典型归宿
链式查询 3 根左右 慢,逐级传播 固定,按位置 教学与低成本系统
计数器查询 约等于设备号位宽 可轮转,中等灵活 中型背板系统
独立请求 每设备两根 快,一步到位 任意策略可编程 高性能与现代平台

说的时候要听得懂:三种握手

仲裁解决发言权,同步解决"对方收到没有"。4.1 节把同步分为公共时钟与握手两路,握手按互锁程度分三档。不互锁:请求方说完不等确认就撤,快但裸奔,慢设备一不留神就漏接。半互锁:请求保持到收到应答为止,但应答方发完就撤——请求超时无解,悬案留了一半。全互锁:请求等应答、应答又等请求撤销,双方每一步都要看到对方的动作才算数,环环扣死。

用一次全互锁读传输看它如何运转:

全互锁对慢速设备最友好——应答要多慢有多慢,协议自动适配;代价是每次往返多几拍纯协议开销。速度确定性高的场合用同步时钟,速度参差的老设备阵用全互锁,这是工程上的默认分工。

案例展开:DMA 抢总线抢出的一秒卡顿

背景:一块图像采集卡通过 DMA 连续搬运河图像数据,测试发现鼠标操作每逢采集便出现约一秒的卡顿。操作:抓总线占用记录,发现采集卡被配置成"块传输",一次申请就连续占用总线把整帧搬完;在块传输期间 CPU 与显示刷新全部得不到授权。结果:把传输模式改成"周期挪用"——每挪用一个总线周期只搬几个字节,搬完立刻归还,CPU 在间隙里照常工作;卡顿消失,采集吞吐仅降约百分之三。解读:仲裁机制回答"能不能抢",传输粒度决定"抢多久"——DMA 对系统响应的破坏不在抢而在赖着不走。变式:若图像是实时流、一帧晚到就作废,则应反向操作:把采集卡的优先级提到最高、允许它整块霸占,让鼠标去忍受卡顿——优先级与粒度的配置取决于谁的任务更不能等

仲裁延迟的算术与优先级的两难

仲裁机制的好坏能用数字说话。链式查询里,授权信号逐级传播,每级经过的门延迟按几十纳秒计:十六个设备、每级三十纳秒,排最末的设备要等近半微秒才轮到——单次看似无伤,总线频繁换手时累积成肉眼可见的吞吐损失。独立请求一步到位,仲裁延迟固定在一两拍,代价是线数与仲裁逻辑的规模。"线换速度"这笔交易,在背板设计里天天发生。

优先级策略还藏着一道两难题。固定优先级简单可控,但低优先级设备可能被永久饿死——高优先级的应用一旦繁忙,最低级别的申请会无限期挂起。轮转优先级把上次的服务对象排到队尾,公平了,代价是延迟上界变宽:任何一次传输都可能被排在若干设备之后。实时系统常取折中:给紧急事件固定高优先级,其余设备轮转——饿死 prevention 与延迟确定性各让一步。这套思路与操作系统的调度器设计完全同源,学到这里你已经摸到了调度理论的硬件门槛。

补全仲裁的第三种形态:分布式仲裁。它没有中央裁判,规则写在每个申请者的硬件里——大家同时发言,总线上的线与结果让每个发言者实时比对自己的身份位,发现被压过就自动退场。CAN 的逐位仲裁正是这一派的当代代表,以太网早期的碰撞退避则是另一派草稿。三种形态摆在一起,仲裁的完整图谱就齐了:集中式管秩序,分布式管韧性,链式与计数式管成本——没有万能型,只有与场景的匹配度。

高频追问两则

问:CPU 一定要参与仲裁吗?它自己也是主设备。 CPU 平时是默认的占用者,别的设备申请时要先向它"请假";DMA 授权后 CPU 挂起自己的总线操作,交出三态引脚。CPU 的特权来自地位,不来自机制——机制面前人人平等,这句总线上的法律条文,第 6 章 DMA 会再次引用。

问:同步总线为什么还需要握手? 公共时钟解决"何时采样",握手解决"对方是否就绪"。高速总线上两者常并存:时钟定节拍,握手信号处理等待与异常。纯同步的系统对器件速度"一刀切",够快但不够宽容——工程里最贵的就是"一刀切"三个字。

本节要点回顾

  • 主从有别:只有主设备能发起事务,仲裁只发生在主设备之间。
  • 三种仲裁三张脸:链式省钱,计数求衡,独立求快求灵活。
  • 全互锁最稳:每步互为前提,慢设备的天堂,快系统的开销。
  • DMA 的礼貌问题:周期挪用保响应,块传输保吞吐,按任务轻重选。

总线的秩序讲完了。下一章登场的是总线上最特殊的乘客——不打招呼就来的中断信号,以及接住它的整套机制。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U