Appearance
总线仲裁
2026 大纲 六(一)1 总线的基本概念(相关背景)。总线仲裁本身不是大纲单列条目,三种方式的线数公式不必背。但总线事务的第一阶段就是"申请分配",DMA 方式抢占总线也要经过判优——不知道"谁来决定总线归谁",这两处就只能背流程。读它是为了补一层机制上的直觉。
三种仲裁方式,其实是同一条信息的三种编码
总线是分时共享的,多个主设备同时想发送时,必须有一套逻辑决定使用权归谁——这就是判优(仲裁)。总线控制器的两项职能,一项是判优控制,另一项是通信控制(定时)。仲裁的流程固定为四步:设备发总线请求 BR → 仲裁逻辑按优先策略选出一个 → 发总线授权 BG → 该设备建立总线忙 BS 并占用总线,传完释放。
按仲裁逻辑放在哪里分成集中式与分布式:集中在一处(如 CPU 内的总线控制部件)是集中式,分散到各部件上是分布式。链式查询、计数器定时查询、独立请求三种全都是集中式,差别只在中央仲裁器与设备之间怎么连线。
这三种方式常被当成三个孤立方案硬记,但它们其实在做同一件事:把"总线归你了"这条信息,送到某一台设备手上。而这条信息本身只有
- 编进时间——授权信号沿设备链逐级往下传,"传了几跳"就是编码,这是链式查询;
- 编成二进制广播——把设备号从计数器广播到地址线上,各设备自己比对,这是计数器定时查询;
- 铺在空间上——每台设备一对专线,谁的那条线有效就是谁,这是独立请求。
三种编码对应三种线数增长阶:常数、对数、线性;对应三种判优速度:慢、中、快。越舍得用线数把信息并行铺开,就越省时间——这是一条连续的取舍谱,不是三个需要分别记忆的方案。
交互可视化
配套的操作说明见 总线仲裁——模拟器使用指南。
一、三种集中式仲裁
按开篇那条线索,三种方式解决的是同一件事——把"总线归你了"这条信息送到某一个设备手上——差别只在这几个比特的编码方式。下面逐个看这三种编码在电路上长什么样。
链式查询:把信息编进时间
所有设备共享一条 BR 线;BG 信号从总线控制部件出发,串行地从一个接口送到下一个接口。
总线控制部件 ──BG──→ 设备0 ──BG──→ 设备1 ──BG──→ 设备2 ──→ ...
│ │ │
BR─────────┴──────────┴──→ 总线控制部件BG 到达某个接口时,若该接口有请求就不再往下传,该接口获得使用权并建立 BS 忙信号;没有请求则原样传给下一个。于是"授权给谁"完全由传了几跳表达——只用一条 BG 线,代价是每多一个设备就多一跳延迟。
控制线数
其一,优先级写死在物理连线顺序里:离总线控制部件最近的设备优先级最高,改优先级得动线。靠前的设备若频繁请求,BG 永远传不到后面,低优先级设备会饥饿。
其二,对电路故障敏感,敏感点就在 BG 的传递路径上:链路上任意一处断开,或某个接口的传递逻辑失效,下游所有设备全部收不到授权。计数器方式是广播、独立请求是专线,都不存在这种"一处坏、一片死"的结构。
计数器定时查询:把信息编成二进制
与链式相比,多了一组设备地址线,少了一根 BG 线。
总线控制部件 ──计数值(设备地址线)──→ 广播给所有设备
│
设备比较自身编号与计数值,相符且有请求则获得使用权控制部件收到 BR 后,在总线未被使用(BS
信息被编成二进制数广播出去,线数从"与
| 计数起点 | 效果 |
|---|---|
| 每次从 0 开始 | 优先级按 |
| 从上一次计数的终止点开始 | 循环轮转,各设备使用总线的优先级相等 |
| 初始值由程序设置 | 优先次序可任意改变 |
这张表是计数器方式相对链式的真正增量:链式的优先级焊在连线顺序上,只有一种可能;计数器把它变成了一个可以由程序设定的起点,同一套硬件能在固定优先级、循环轮转、任意可变三种策略之间切换。
代价是控制线数增加、控制较复杂;好处是对电路故障不如链式敏感——广播不存在"断链导致下游全灭"。
独立请求:把信息铺在空间上
每一台设备都有一对专用的总线请求线
设备0 ──BR₀──→ ┐ ┌──BG₀──→ 设备0
设备1 ──BR₁──→ ├─ 总线控制部件 ──┤──BG₁──→ 设备1
设备2 ──BR₂──→ ┘ (排队电路) └──BG₂──→ 设备2控制部件中有一排队电路,同时看到所有请求,根据优先次序一次选出赢家,直接从对应的
三者对照
| 特性 | 链式查询 | 计数器定时查询 | 独立请求 |
|---|---|---|---|
| 授权信息的编码 | 时间(跳数) | 二进制编码 | 独热码 |
| 控制线数 | |||
| 线数随 | 常数 | 对数 | 线性 |
| 判优速度 | 慢 | 中 | 快 |
| 优先级 | 固定(由连接顺序决定) | 可变(计数起点可编程) | 灵活可编程 |
| 硬件复杂度 | 低 | 中 | 高 |
| 对电路故障的敏感度 | 高(断链下游全灭) | 中 | 低 |
教材在比较线数时说的是"链式查询中仅用两根线确定总线使用权、计数器查询中大致用
根线、独立请求需采用 根线"——那是只数用于确定使用权的线(BR/BG/设备地址线)。上表在此基础上另计了 1 条 BS 忙线。两种口径差一个常数,关键是增长阶:常数、对数、线性。
"判优速度"那一行也要读准范围:独立请求快在判优这一步——所有请求同时送到排队电路,一次比较选出赢家,与设备数无关;链式则要等 BG 一跳一跳传过去。但三者在数据传输阶段的速度并无差别,仲裁方式只影响"从提出请求到拿到总线"这一段时间,拿到之后大家跑得一样快。
三条线数曲线的形状:4 台、16 台、64 台各要多少根控制线(想看清"用线数换时间"这条谱的量级时展开)
| 设备数 | 链式查询 | 计数器定时查询 | 独立请求 |
|---|---|---|---|
| 4 | 3 | ||
| 16 | 3 | ||
| 64 | 3 |
设备数翻两番(4 → 64),链式一根线没多,计数器只从 4 涨到 8,独立请求却从 9 涨到 129。三条曲线的形状——水平、对数、直线——就是这三种编码方式在硬件上的直接投影。 也正因为如此,设备很多时独立请求几乎不可用;而设备少时它的线数代价可以忽略,速度优势却全额保留。
二、分布式仲裁
没有中央仲裁器,每个设备自带仲裁逻辑,控制逻辑分散在与总线连接的各个部件上。各设备把自己的仲裁号(优先级编号)送到共享的仲裁总线上,所有设备同时比较,编号最大(或最小)者获胜。
优点是无单点故障、扩展灵活、不依赖某个中心部件;缺点是每个设备都要配一套仲裁逻辑电路,总硬件量上升。
考点速记
- 判优是总线分时共享的必然产物;按仲裁逻辑放在哪里分集中式与分布式,链式/计数器/独立请求三种都属集中式。
- 三者是"把
比特授权信息送出去"的三种编码——串行传递、二进制广播、独热直连,线数增长阶依次为常数、对数、线性,判优速度依次为慢、中、快,是一条用线数换响应时间的连续谱。 - 链式的优先级由物理连线固定且对电路故障敏感(BG 路径一断下游全灭);计数器的优先级由计数起点决定,可固定、可轮转、可编程;独立请求最快最灵活,代价是线数线性增长。
这一节在真题里的位置:
2026 大纲的「六(一)总线」只列了总线的基本概念、总线的组成及性能指标、总线事务和定时三条,不含总线仲裁,因此本篇没有对应的真题、也不设考法清单——本篇下方没有「真题练习」区,这不是漏挂标签。
那么这一篇要读到什么程度?知道"谁来决定总线归谁"是怎么回事就够了,因为它是另外两处仍在纲内的内容的前置:总线事务的第一阶段就是"申请分配",DMA 方式抢占总线走的也是这套仲裁——不知道背后有一套判优机制,那两处就只能当流程背。上面第 2 条那句"三种方式是同一条信息的三种编码"是本篇唯一值得留下的东西。
复习优先级:不必投入。 三种方式的线数公式不用记(
提示:本篇内容不在 2026 大纲范围内。若 9 月发布的新大纲有调整,以新大纲为准。
教材出处
- 唐朔飞《计算机组成原理(第 3 版)》§3.5 总线控制:总线控制器的两项职能(判优控制与通信控制)、主从设备的划分、集中式与分布式判优的分界(p57)
- 唐朔飞《计算机组成原理(第 3 版)》§3.5:链式查询方式的 BS/BR/BG 三线结构与"离总线控制部件最近的设备优先级最高"(p57~58);计数器定时查询的设备地址线广播与三种计数起点(p58~59);独立请求方式的排队电路,以及三者线数
/ / 的对比(p59)