Skip to content

总线仲裁

2026 大纲 六(一)1 总线的基本概念(相关背景)。总线仲裁本身不是大纲单列条目,三种方式的线数公式不必背。但总线事务的第一阶段就是"申请分配",DMA 方式抢占总线也要经过判优——不知道"谁来决定总线归谁",这两处就只能背流程。读它是为了补一层机制上的直觉。

三种仲裁方式,其实是同一条信息的三种编码

总线是分时共享的,多个主设备同时想发送时,必须有一套逻辑决定使用权归谁——这就是判优(仲裁)。总线控制器的两项职能,一项是判优控制,另一项是通信控制(定时)。仲裁的流程固定为四步:设备发总线请求 BR → 仲裁逻辑按优先策略选出一个 → 发总线授权 BG → 该设备建立总线忙 BS 并占用总线,传完释放。

仲裁逻辑放在哪里分成集中式与分布式:集中在一处(如 CPU 内的总线控制部件)是集中式,分散到各部件上是分布式。链式查询、计数器定时查询、独立请求三种全都是集中式,差别只在中央仲裁器与设备之间怎么连线。

这三种方式常被当成三个孤立方案硬记,但它们其实在做同一件事:把"总线归你了"这条信息,送到某一台设备手上。而这条信息本身只有 log2n 比特——要点名 n 台设备中的一台,理论上就这么多。三种方式不过是这几比特的三种编码方式

  • 编进时间——授权信号沿设备链逐级往下传,"传了几跳"就是编码,这是链式查询
  • 编成二进制广播——把设备号从计数器广播到地址线上,各设备自己比对,这是计数器定时查询
  • 铺在空间上——每台设备一对专线,谁的那条线有效就是谁,这是独立请求

三种编码对应三种线数增长阶:常数、对数、线性;对应三种判优速度:慢、中、快越舍得用线数把信息并行铺开,就越省时间——这是一条连续的取舍谱,不是三个需要分别记忆的方案。

交互可视化

加载可视化中...

配套的操作说明见 总线仲裁——模拟器使用指南

一、三种集中式仲裁

按开篇那条线索,三种方式解决的是同一件事——把"总线归你了"这条信息送到某一个设备手上——差别只在这几个比特的编码方式。下面逐个看这三种编码在电路上长什么样。

链式查询:把信息编进时间

所有设备共享一条 BR 线;BG 信号从总线控制部件出发,串行地从一个接口送到下一个接口

总线控制部件 ──BG──→ 设备0 ──BG──→ 设备1 ──BG──→ 设备2 ──→ ...
                  │          │          │
                  BR─────────┴──────────┴──→ 总线控制部件

BG 到达某个接口时,若该接口有请求就不再往下传,该接口获得使用权并建立 BS 忙信号;没有请求则原样传给下一个。于是"授权给谁"完全由传了几跳表达——只用一条 BG 线,代价是每多一个设备就多一跳延迟。

控制线数 3(BR、BG、BS),与设备数无关。优点是线极少、扩充设备容易;缺点有两条,而且都能追到"BG 逐级传递"这一个结构上。

其一,优先级写死在物理连线顺序里:离总线控制部件最近的设备优先级最高,改优先级得动线。靠前的设备若频繁请求,BG 永远传不到后面,低优先级设备会饥饿

其二,对电路故障敏感,敏感点就在 BG 的传递路径上:链路上任意一处断开,或某个接口的传递逻辑失效,下游所有设备全部收不到授权。计数器方式是广播、独立请求是专线,都不存在这种"一处坏、一片死"的结构。

计数器定时查询:把信息编成二进制

与链式相比,多了一组设备地址线,少了一根 BG 线

总线控制部件 ──计数值(设备地址线)──→ 广播给所有设备

              设备比较自身编号与计数值,相符且有请求则获得使用权

控制部件收到 BR 后,在总线未被使用(BS =0)时启动内部计数器,通过设备地址线向各设备广播一组地址信号;某个请求占用总线的设备其地址与计数值一致时获得使用权,此时终止计数查询。

信息被编成二进制数广播出去,线数从"与 n 无关"上升到 log2n,换来的是不再逐跳传递——所有设备同时收到计数值,比较是并行的。控制线数 log2n+2(设备地址线 + BR + BS)。

计数起点效果
每次从 0 开始优先级按 0,1,,n1 降序固定不变,等价于固定优先级
从上一次计数的终止点开始循环轮转,各设备使用总线的优先级相等
初始值由程序设置优先次序可任意改变

这张表是计数器方式相对链式的真正增量:链式的优先级焊在连线顺序上,只有一种可能;计数器把它变成了一个可以由程序设定的起点,同一套硬件能在固定优先级、循环轮转、任意可变三种策略之间切换

代价是控制线数增加、控制较复杂;好处是对电路故障不如链式敏感——广播不存在"断链导致下游全灭"。

独立请求:把信息铺在空间上

每一台设备都有一对专用的总线请求线 BRi 和总线同意线 BGi

设备0 ──BR₀──→ ┐                    ┌──BG₀──→ 设备0
设备1 ──BR₁──→ ├─ 总线控制部件 ──┤──BG₁──→ 设备1
设备2 ──BR₂──→ ┘   (排队电路)    └──BG₂──→ 设备2

控制部件中有一排队电路,同时看到所有请求,根据优先次序一次选出赢家,直接从对应的 BGi 送出授权。信息完全铺在空间上(独热码),线数升到 O(n),换来一拍到位的响应,且单个设备的连线故障不影响其他设备。控制线数 2n+1n 条 BR + n 条 BG + BS)。

三者对照

特性链式查询计数器定时查询独立请求
授权信息的编码时间(跳数)二进制编码独热码
控制线数3log2n+22n+1
线数随 n 的增长常数对数线性
判优速度
优先级固定(由连接顺序决定)可变(计数起点可编程)灵活可编程
硬件复杂度
对电路故障的敏感度高(断链下游全灭)

教材在比较线数时说的是"链式查询中仅用两根线确定总线使用权、计数器查询中大致用 log2n 根线、独立请求需采用 2n 根线"——那是只数用于确定使用权的线(BR/BG/设备地址线)。上表在此基础上另计了 1 条 BS 忙线。两种口径差一个常数,关键是增长阶:常数、对数、线性

"判优速度"那一行也要读准范围:独立请求快在判优这一步——所有请求同时送到排队电路,一次比较选出赢家,与设备数无关;链式则要等 BG 一跳一跳传过去。但三者在数据传输阶段的速度并无差别,仲裁方式只影响"从提出请求到拿到总线"这一段时间,拿到之后大家跑得一样快。

三条线数曲线的形状:4 台、16 台、64 台各要多少根控制线(想看清"用线数换时间"这条谱的量级时展开)
设备数 n链式查询 3计数器定时查询 log2n+2独立请求 2n+1
432+2=49
1634+2=633
6436+2=8129

设备数翻两番(4 → 64),链式一根线没多,计数器只从 4 涨到 8,独立请求却从 9 涨到 129。三条曲线的形状——水平、对数、直线——就是这三种编码方式在硬件上的直接投影。 也正因为如此,设备很多时独立请求几乎不可用;而设备少时它的线数代价可以忽略,速度优势却全额保留。

二、分布式仲裁

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

优点是无单点故障、扩展灵活、不依赖某个中心部件;缺点是每个设备都要配一套仲裁逻辑电路,总硬件量上升。

考点速记

  1. 判优是总线分时共享的必然产物;按仲裁逻辑放在哪里分集中式分布式,链式/计数器/独立请求三种都属集中式。
  2. 三者是"把 log2n 比特授权信息送出去"的三种编码——串行传递、二进制广播、独热直连,线数增长阶依次为常数、对数、线性,判优速度依次为慢、中、快,是一条用线数换响应时间的连续谱。
  3. 链式的优先级由物理连线固定且对电路故障敏感(BG 路径一断下游全灭);计数器的优先级由计数起点决定,可固定、可轮转、可编程;独立请求最快最灵活,代价是线数线性增长。

这一节在真题里的位置

2026 大纲的「六(一)总线」只列了总线的基本概念、总线的组成及性能指标、总线事务和定时三条,不含总线仲裁,因此本篇没有对应的真题、也不设考法清单——本篇下方没有「真题练习」区,这不是漏挂标签。

那么这一篇要读到什么程度?知道"谁来决定总线归谁"是怎么回事就够了,因为它是另外两处仍在纲内的内容的前置:总线事务的第一阶段就是"申请分配",DMA 方式抢占总线走的也是这套仲裁——不知道背后有一套判优机制,那两处就只能当流程背。上面第 2 条那句"三种方式是同一条信息的三种编码"是本篇唯一值得留下的东西。

复习优先级:不必投入。 三种方式的线数公式不用记3 / log2n+2 / 2n+1),计数器的三种计数起点、独立请求的排队电路结构也都不用记。仍在纲内的部分在总线概述与分类总线事务与定时

提示:本篇内容不在 2026 大纲范围内。若 9 月发布的新大纲有调整,以新大纲为准。

教材出处
  • 唐朔飞《计算机组成原理(第 3 版)》§3.5 总线控制:总线控制器的两项职能(判优控制与通信控制)、主从设备的划分、集中式与分布式判优的分界(p57)
  • 唐朔飞《计算机组成原理(第 3 版)》§3.5:链式查询方式的 BS/BR/BG 三线结构与"离总线控制部件最近的设备优先级最高"(p57~58);计数器定时查询的设备地址线广播与三种计数起点(p58~59);独立请求方式的排队电路,以及三者线数 2log2n2n 的对比(p59)

相关知识

总线概述与分类总线事务与定时DMA 方式总线仲裁——模拟器使用指南