计算机组成原理 · 2027 考研计算机 408

第 6 章 总线

目标院校:四川大学 / 电子科技大学 | 建议用时:概念 1.5 小时 + 例题练习 1.5 小时

本章地位:总线是连接 CPU、主存与外设的「公共干道」,直接考分约 2~5 分,以选择题为主,但带宽计算是大题与选择双料高频点。真题最爱考四类:① 三类信号线的方向辨析(数据双向、地址单向、控制逐根单向——最易错);② 总线带宽计算(给频率和宽度算带宽,常设「时钟频率 ≠ 总线频率」「每周期传 k 次」两重陷阱);③ 集中式仲裁三方式对比(线数、优先级、速度、故障敏感性);④ 定时方式与总线标准归类(异步握手三子方式、串行 vs 并行辨析)。本章大纲考点不多,但每个都必须吃透——所有计算全部代入具体数值验证。

6.1 总线基本概念

定义总线是连接多个部件的信息公共传输通道,是各部件分时共享的传输介质。两个关键词缺一不可:共享——总线上可以挂接多个部件,它们都能使用这组线路;分时——同一时刻只允许一对部件占用总线传送信息,否则信号会互相冲突。因此多个部件同时申请使用总线时,必须由仲裁机构决定谁先用——这正是 6.3 节总线仲裁的由来。
面向总线的结构早期计算机在 CPU 与每个部件之间两两连线,连线数随部件数平方增长,结构混乱。现代机器普遍采用面向总线的结构:各部件挂接到一组公共总线上。优点:① 大幅减少连线数,结构规整;② 便于系统扩展(新设备只要符合总线标准即可接入);③ 便于部件的标准化与互换。代价:所有部件分时共享一条通道,总线成为公共瓶颈,且须增加仲裁与定时控制逻辑。
主设备与从设备主设备(主模块):能发起并控制总线传输的设备——它发出地址和读/写命令(CPU、DMA 控制器都可能是主设备);从设备(从模块):只能响应主设备命令、被动收发数据的设备(如主存、普通 I/O 接口)。一次传输中主从关系由本次传输决定,不是固定身份:DMA 传送时 DMA 控制器是主设备,CPU 反而让出总线。

6.1.1 总线的分类

按连接的层次(范围)分
  1. 片内总线:芯片内部的总线,连接 CPU 芯片内的寄存器与运算器、控制器等部件(如 ALU 与寄存器组之间的数据通路);
  2. 系统总线:计算机内各功能部件(CPU、主存、I/O 接口)之间互连的总线,按传的信息再分为数据总线、地址总线、控制总线三类(见 6.1.2);
  3. 通信总线(外总线):计算机系统之间或计算机与其他系统(如控制仪表、网络设备)之间的通信线路,分串行与并行两种。
按数据传输格式分
  1. 并行总线:一次同时传送多位(n 根线传 n 位),线多、速度快,适合短距离(ISA、PCI、SCSI、IDE);
  2. 串行总线:一位一位顺序传送,线少、成本低、抗干扰强、适合长距离与高速(USB、PCIe、SATA、以太网)——「串行一定慢」是过时观念,见 6.5.2。
按用法分:专用与复用
  1. 专用总线:一种信息走一组专用线。如 ISA 把地址线与数据线分开设置,任何时刻地址、数据可同时在线上传送;
  2. 复用总线:一组线分时传送不同类型信息。如 PCI 采用地址 / 数据复用线 AD——先传地址、再传数据,用控制信号(如帧信号、ADRCBE)指明当前线上是什么。复用省线、降成本,但一次传输要分多个阶段完成,速度略降、控制变复杂。
易错① 「总线 = 导线」不准确:总线包括信号线、总线控制器(仲裁逻辑)以及相关的通信协议(定时规则);
② 「分时」与「共享」是总线的两大特征,判断题去掉任何一个都错;
③ 地址 / 数据复用不等于「地址总线和数据总线可以双向」——复用是「一组线分时当两种线用」,与信号方向无关。

6.1.2 三类信号线:数据、地址、控制 高频考点

数据总线 DB双向传输线,CPU ↔ 主存、CPU ↔ I/O 接口之间的数据、指令代码都走它。总线宽度 = 数据线的根数(位数),决定一次并行传送多少位,是衡量总线性能的首要指标(如 32 位总线一次传 4 B)。
地址总线 AB单向传输线,由 CPU(或当时的主设备)发出,送往主存和 I/O 接口,指明访问的存储单元或 I/O 端口号。注意两点:① 地址总线上只有源、没有目的地回传,方向永远从主到从;② 地址线位数决定寻址空间:\(n\) 根地址线可寻址 \(2^{n}\) 个单元——20 位寻址 1 MB,32 位寻址 4 GB。
控制总线 CB对每根线逐根看都是单向的,但方向不同;把整组放在一起看,控制总线「整体双向」。必须逐根记住方向:
  1. CPU 发出(出):存储器读 MEMR、存储器写 MEMW、I/O 读 IOR、I/O 写 IOW、中断响应 INTA、总线允许 BG、DMA 响应 HLDA、复位 RESET、时钟 CLK;
  2. 送入 CPU(入):中断请求 INTR、总线请求 BR(或 DMA 请求 HRQ)、就绪 READY / 等待 WAIT(来自慢速从设备);
  3. 读 / 写命令是一对方向相反的独立信号线,「读命令线」由 CPU 发出(出),「写命令线」也由 CPU 发出(出)——读写都由主设备发起,从设备只被动响应。
CPU 主存储器 I/O 接口(可作主/从设备) 外设(键盘/磁盘) 数据总线 D0~D31(双向:数据/指令代码,宽度 32 位 = 一次传 4 B) 双向 地址总线 A0~A23(单向:主设备发出,24 位 → 寻址 2^24 = 16 M 个单元) 单向 控制总线(逐根单向:读/写·中断请求/响应·总线请求/允许·DMA·时钟·复位) 控制信号逐根单向(出:读/写、允许、响应;入:请求、就绪),整组看双向
图 6-1 系统总线的三类信号线:数据总线双向、地址总线单向,控制总线逐根单向而整组双向;各部件经接口挂接到同一组公共总线上
易错(高频)① 「数据总线传数据、地址总线传地址、控制总线传命令」没错,但方向别答错:数据总线双向、地址总线单向(主设备 → 从设备);
② 「控制总线是双向的」半对半错——严格说每根控制线都是单向的,只是方向有的朝 CPU、有的朝外,整组呈双向;
③ 地址总线位数决定寻址空间(单元个数),数据总线位数决定一次传送的位数,别互相张冠李戴;
④ 指令代码、地址码中存的「数据」走数据总线;要访问的单元地址走地址总线——取指令时指令经数据总线送入 IR。
练习 1 易错

判断下列说法的正误:(1) 地址总线是双向的,因为写操作时地址也能送回 CPU;(2) 某机地址总线 20 位、按字节编址,最大寻址空间为 1 MB;(3) 控制总线中「存储器读」与「存储器写」两根命令线均由 CPU 发出;(4) 指令操作码从主存取到 IR 的过程中经过地址总线。

查看答案

(1) 错:地址总线单向,地址永远由主设备(CPU / DMA 控制器)发出;写操作也只是 CPU 把地址发出去,不存在「送回」。

(2) 对:\(2^{20}=1\text{M}\) 个单元,字节编址即 \(1\ \text{MB}\)(\(\checkmark\):\(2^{10}=1024\),\(2^{20}=1024\times1024\))。

(3) 对:读 / 写都是主设备发出的命令,从设备只被动响应;这两根线方向都是「出」。

(4) 错:操作码是指令代码的一部分,取指时经数据总线(经 MDR)送入 IR;地址总线上跑的是该指令的存放地址。

6.2 总线性能指标 必考计算

6.2.1 总线宽度、工作频率与总线带宽

三个指标
  1. 总线宽度:数据线的根数(位数)。32 位即一次并行传送 32 bit;
  2. 总线工作频率:总线每秒执行传输操作的次数(MHz)。总线频率不一定等于 CPU 时钟频率——总线时钟常由 CPU 时钟分频得到(如 CPU 时钟 400 MHz、总线按 2 分频为 200 MHz),且有的总线一个总线周期含多个时钟周期;
  3. 总线带宽(总线传输率):单位时间内总线上传送的数据量,单位 MB/s(408 计算惯例 \(1\ \text{MB/s}=10^{6}\ \text{B/s}\),除非题目注明按 2 的幂)。
核心公式 \[ \text{总线带宽}=\text{总线工作频率}\times\frac{\text{总线宽度}}{8}\qquad(\text{B/s}) \] 若题目说明每个(总线/时钟)周期传送 \(k\) 次数据(如 DDR 一个周期传 2 次),再乘 \(k\): \[ \text{总线带宽}=\text{频率}\times k\times\frac{\text{宽度}}{8} \] 审题三问:① 给的是总线频率还是时钟频率?② 一个总线周期含几个时钟周期?③ 一个周期传几次数据?——这三问就是全部陷阱所在。
总线带宽计算三步法(伪码)
输入: f (频率, MHz), W (总线宽度, bit), k (每周期传送数据的次数)
STEP1  宽度换字节:      B = W / 8            例: 32 位 → 4 B
STEP2  每秒传送次数:    T = f × 10^6 × k     例: 100 MHz, k=1 → 10^8 次/秒
STEP3  带宽:            BW = T × B           例: 10^8 × 4 B = 4×10^8 B/s = 400 MB/s
NOTE   若给出总线时钟频率, 先换算总线工作频率:
       总线频率 = 时钟频率 / 每总线周期所含时钟周期数
输出: BW (MB/s = BW 除以 10^6)
例 1 方法 基本型:频率 × 宽度

PCI 总线数据线宽度 32 位,总线工作频率 33 MHz,每个总线周期传送一次数据。求总线带宽,并与 64 位 PCI 比较。

查看解答

三步法:宽度换字节 \(32/8=4\ \text{B}\);每秒 \(33\times10^{6}\) 次传输;带宽:

\[ 33\times10^{6}\times4=132\times10^{6}\ \text{B/s}=132\ \text{MB/s}\quad(\checkmark) \]

这正是教科书上 PCI 的标准带宽 132 MB/s。宽度翻到 64 位(其余不变):

\[ 33\times10^{6}\times8=264\ \text{MB/s}\quad(\checkmark) \]

带宽与宽度成正比——宽度的每一分提升都直接体现在带宽上。

例 2 真题风格 双重陷阱:时钟频率 ≠ 总线频率 + 每周期传 k 次

某总线的数据线宽度 64 位,总线时钟频率 200 MHz,每个总线周期占用 2 个时钟周期,且每个总线周期可传送 2 次数据。该总线的带宽约为( )
A. 1600 MB/s B. 3200 MB/s C. 800 MB/s D. 6400 MB/s

查看解答

A。先拆除两重陷阱:

① 时钟 200 MHz、2 个时钟周期构成一个总线周期 → 总线工作频率:

\[ f_{\text{bus}}=\frac{200\ \text{MHz}}{2}=100\ \text{MHz}\quad(\checkmark) \]

② 每个总线周期传 2 次数据 → 等效每秒传送次数 \(100\times10^{6}\times2\);宽度 64 位 = 8 B。带宽:

\[ 100\times10^{6}\times2\times8=1600\times10^{6}\ \text{B/s}=1600\ \text{MB/s}\quad(\checkmark) \]

B 是忘了除 2(把 200 MHz 当总线频率);C 是忘了乘 2 次;D 是两处都算错。本题与 2012 年 408 真题同型:先换频率、再算每秒传输次数,最后乘字节数。

易错① 看到 MHz 别急着代入:先分清「时钟频率」与「总线(工作)频率」,一个总线周期可能含 2~4 个时钟周期;
② DDR(Double Data Rate)类总线一个时钟周期传 2 次(上、下降沿各一次),题干会明示「每个时钟周期传送 2 次数据」,此时直接用「时钟频率 × 2 × 宽度/8」;
③ 单位陷阱:宽度要除以 8 换成字节;结果从 B/s 换 MB/s 除以 \(10^{6}\)(408 惯例按十进制);
④ 带宽算的是数据线的吞吐能力,地址线根数不影响带宽。
练习 2

某同步总线工作频率 266 MHz,数据线宽度 64 位,每个总线周期传送一次数据。求总线带宽;若改为每个总线周期传送 2 次数据(其余不变),带宽变为多少?

查看答案

64 位 = 8 B。每周期 1 次:

\[ 266\times10^{6}\times8=2128\ \text{MB/s}\quad(\checkmark:\ 266\times8=2128) \]

每周期 2 次(等效 DDR):

\[ 266\times10^{6}\times2\times8=4256\ \text{MB/s}\quad(\checkmark:\ 2128\times2) \]

每周期传送次数翻倍,带宽同比例翻倍——\(k\) 是带宽公式里最容易漏乘的因子。

6.2.2 波特率与比特率(串行总线指标)

两个「率」波特率(baud rate):每秒传送的码元(信号状态变化)个数,单位 baud;比特率(信息传输率):每秒传送的有效二进制位数,单位 b/s(bps)。关系: \[ \text{比特率}=\text{波特率}\times\log_{2}L\quad(L\ \text{为每个码元可取的离散状态数}) \] 二态信号(0/1 两种电平)时 \(\log_{2}2=1\),比特率才与波特率数值相等。
串行异步帧的算法串行异步通信每个字符独立成帧,典型帧格式:1 位起始位 + \(d\) 位有效数据位 +(可选 1 位校验位)+ 1~2 位停止位,共 \(m\) 位。有效数据只有 \(d\) 位,故 \[ \text{有效比特率}=\text{波特率}\times\frac{d}{m} \] 例:9600 baud、每帧 10 位(1 起始 + 8 数据 + 1 停止)→ 有效比特率 \(9600\times8/10=7680\ \text{b/s}\)。附加位是「开销」,不携带有效数据。
例 3 高频考点 波特率求有效数据传输率

某串行总线采用异步方式传送字符,每帧含 1 位起始位、7 位数据位、1 位奇校验位、1 位停止位,波特率为 1200 baud。该总线每秒最多能传送多少个字符?有效数据传输率是多少 b/s?

查看解答

第一步,帧长:\(1+7+1+1=10\) 位/帧,其中有效数据 7 位。

第二步,每秒传送帧数:1200 baud = 每秒 1200 个码元(二态信号,每码元 1 bit):

\[ \frac{1200}{10}=120\ \text{帧/秒,即 120 个字符/秒}\quad(\checkmark) \]

第三步,有效数据传输率:

\[ 120\times7=840\ \text{b/s}\quad(\checkmark:\ 1200\times7/10=840) \]

套路总结:数清帧总长 m 与有效位 d,「每秒码元数 ÷ m = 帧率,帧率 × d = 有效比特率」;题干给数据位 7 还是 8、有无校验,直接改变 m 与 d,逐位照抄别背模板。

6.3 总线仲裁 高频考点

总线是分时共享的:同一时刻只能有一个主设备占用总线发送信息。当多个主设备同时申请使用总线时,必须由总线仲裁(bus arbitration)机构按某种优先级算法决定谁获得使用权。仲裁分集中式(专设中央仲裁器,即总线控制逻辑)与分布式(无中央仲裁器,各设备自带仲裁逻辑)两大类,统考重点在集中式的三种方式。

6.3.1 集中式三种仲裁方式

方式一:链式查询与总线控制器(总线控制部件)之间只需 3 条控制线:总线请求 BR、总线允许 BG、总线忙 BS。各 I/O 接口经集电极开路门(线或)共用一根 BR;BG 则像串行链条一样从控制器出发,依次穿过接口 0 → 1 → 2:哪个接口有请求,就截住 BG、置起 BS,取得总线;无请求则把 BG 继续传给下一级。因此离总线控制器越近的设备优先级越高。特点:① 只用 3 条线,与设备数无关,最省线,易扩展;② BG 逐级传递,速度慢;③ 优先级固定(近者高);④ 对故障敏感——链上任何接口损坏使 BG 断链,其后所有设备都无法获得总线。
总线请求 BR(各接口线或共用一根) 总线控制部件 (仲裁逻辑 + CPU) 决定 BG 发给谁 I/O 接口 0优先级最高 I/O 接口 1次之 I/O 接口 2最低 总线允许 BG(串行穿过各接口,逐级传递) 总线忙 BS(获得总线的接口置 1,用完撤销) 仅 3 条控制线(BR、BG、BS),与设备数无关;BG 链上一环损坏,其后设备全部无法使用总线(对故障敏感)
图 6-2 链式查询方式:BG 串行逐级传递,离总线控制部件越近优先级越高;BR、BS 为各接口共用,总共只需 3 条控制线
链式查询仲裁流程(伪码)
控制器循环:
1  若 BS=0(总线空闲)且 BR=1(有请求)→ 发出 BG
2  BG 沿 接口0 → 接口1 → 接口2 逐级传递:
     接口 i 收到 BG:
       若 接口 i 自身有请求 → 置 BS=1,取得总线,BG 不再下传
       否则 → BG 继续传给 接口 i+1
3  接口 i 传完数据 → 撤销 BS 与自身 BR,控制器可响应下一轮请求
方式二:计数器定时查询总线控制器收到 BR 后,由计数器向各设备广播设备地址(设备号):计数值与某请求设备的号一致时,该设备置 BS=1 获得总线。所需控制线:BR 1 条 + 设备地址线 \(\lceil\log_{2}n\rceil\) 条 + BS 1 条,共 \(\lceil\log_{2}n\rceil+2\) 条。优先级取决于计数的起点:① 计数器总是从 0 开始 → 优先级固定,0 号设备最高;② 从上次计数的终点开始 → 各设备优先级相等(循环轮转、机会均等);③ 初值可由程序设定 → 优先级灵活可控。速度比链式快(地址广播一次到位),线数与控制复杂度居中。
方式三:独立请求每个设备各有一对专用的总线请求线 BR\(_i\) 与总线允许线 BG\(_i\),直接连到总线控制器;控制器内部有排队与优先级逻辑(可程序改变策略——固定优先级、循环等),裁决后直接向获准设备回 BG。\(n\) 个设备需要 \(2n\) 条请求 / 允许线(部分教材另计 1 条公用的总线忙 BS,则为 \(2n+1\) 条,以题干口径为准)。特点:① 响应速度最快(请求直达、无需逐级传递或逐个查询);② 优先级灵活(由控制器逻辑决定,可编程);③ 控制逻辑最复杂、连线最多。
对比项链式查询计数器定时查询独立请求
控制线数(\(n\) 设备)3 条(BR、BG、BS)\(\lceil\log_{2}n\rceil+2\) 条\(2n\) 条(+BS 则 \(2n{+}1\))
响应速度慢(BG 逐级传递)较快(逐个计数查询)最快(直达)
优先级固定:离控制器近者高随计数起点可固定 / 可均等 / 可编程灵活:集中排队逻辑可编程
故障敏感性最敏感(BG 链断则后级全瘫)居中不敏感(各请求线独立)
硬件开销最省、易扩展居中最复杂
例 4 高频考点 三种集中仲裁方式对比

下列关于集中式仲裁方式的叙述中,错误的是( )
A. 链式查询方式下,离总线控制器最近的设备优先级最高,且只需 3 条控制线
B. 计数器定时查询方式中,若计数器每次从 0 开始计数,则各设备优先级相等
C. 独立请求方式响应速度最快,\(n\) 个设备需要 \(2n\) 条请求 / 允许线
D. 链式查询方式对接口故障最敏感,一个接口损坏可能使其后的设备都无法使用总线

查看解答

B。逐项分析:

A 对:BG 串行传递,「近水楼台先得月」;BR、BG、BS 共 3 条线,与设备数无关;

B 错:计数器每次从 0 开始 → 小号设备总先被查到,优先级固定(0 号最高);要让各设备优先级相等,必须从上一次计数的终点开始循环计数。「从 0 开始 = 均等」是本考点最典型的偷换;

C 对:请求、允许线各 \(n\) 条直达控制器,无需传递 / 查询,速度最快;

D 对:BG 链是「串联保险丝」,一环断、后级全黑——这正是链式查询牺牲可靠性换省线。

练习 3

某总线上接有 16 个主设备。分别求采用链式查询、计数器定时查询、独立请求方式时所需的控制线根数。

查看答案

① 链式查询:BR + BG + BS,与设备数无关:

\[ 3\ \text{条}\quad(\checkmark) \]

② 计数器定时查询:设备地址线 \(\lceil\log_{2}16\rceil=4\) 根,加 BR 与 BS:

\[ 4+2=6\ \text{条}\quad(\checkmark) \]

③ 独立请求:每个设备一对 BR、BG:

\[ 2\times16=32\ \text{条}\quad(\checkmark) \]

线数对比 3 < 6 < 32,正好对应「省线低速」到「多线高速」的谱系;若教材口径计入公用忙线,② 为 7、③ 为 33,答题时跟随题干。

6.3.2 分布式仲裁简介

无中央仲裁器仲裁功能分散到各主设备中,常见三种:
  1. 自举分布式:每个设备有唯一的仲裁号(优先级编码),申请总线时把自己的仲裁号发送到共享仲裁线上,同时读回线上的值与自己比较——线上保留的一定是最大(最高优先级)仲裁号,该设备获得总线。无需中央控制器(部分 68000 系列总线即用此法);
  2. 冲突检测分布式:先「听」总线空闲就发,边发边「听」,发现冲突立即停发、退避随机时长后重发——以太网 CSMA/CD 的思路;
  3. 并行竞争分布式:自举法的改进,仲裁号各位并行竞争比较,速度更快。
一句话记忆集中式三方式按「线数 3 → \(\log_{2}n{+}2\) → \(2n\)」递增,速度同步递增、硬件同步变复杂;分布式则「地方自治」——设备自带仲裁逻辑,靠仲裁号或冲突检测决出胜负。

6.4 总线操作与定时

总线传输的四个阶段完成一次总线传输(总线周期)通常分四步:① 总线请求与仲裁——主设备申请,仲裁机构决定使用权(6.3 节);② 寻址阶段——主设备经地址总线发出从设备地址 / 存储单元地址,并经控制总线给出读 / 写命令;③ 数据传送阶段——数据经数据总线从源到目的(读:从 → 主;写:主 → 从);④ 结束阶段——主设备撤除命令与地址、释放总线(含撤销 BS)。定时方式解决的是第 ②③④ 步「双方按什么节拍配合」的问题,分同步、异步、半同步、分离式四类。

6.4.1 同步定时

统一时钟节拍同步定时:总线上的主从设备使用统一的时钟,所有事件(发地址、给命令、送数据)都出现在时钟信号规定的时刻,每个总线周期包含固定的时钟周期数。如「第 1 个时钟周期送地址与读命令,第 2 个时钟周期从设备把数据放上数据总线」——双方看钟干活,无需应答。
同步传输率公式同步总线一次数据传输占用 \(c\) 个时钟周期,时钟频率 \(f\),宽度 \(W\) 位,则 \[ \text{传输率}=\frac{f}{c}\times\frac{W}{8}\ \text{B/s} \] 与 6.2.1 带宽公式同源——\(\dfrac{f}{c}\) 就是「每秒完成多少次传输」。
优缺点优点:时序规整、控制逻辑简单、速度快(无应答往返)。缺点:① 时序必须迁就最慢的设备——快设备也得陪慢设备等,总线周期按最慢从设备设计;② 主从设备时钟频率要求一致(或整数分频关系),不便接入速度差异大的设备;③ 无应答机制,主设备无法即时得知从设备是否真正收到数据,可靠性依赖时序裕量。适用:总线较短、挂接设备速度相近(如处理器—主存总线)。
例 5 真题风格 同步总线传输率(带宽第三种考法)

某同步总线的时钟频率为 50 MHz,地址线与数据线分开设置,数据线宽度 32 位。完成一次读操作共需 2 个时钟周期:第 1 个周期主设备送出地址与读命令,第 2 个周期从设备送出数据。该总线的数据传输率为( )
A. 50 MB/s B. 100 MB/s C. 200 MB/s D. 400 MB/s

查看解答

B。一次传输占 2 个时钟周期 → 每秒完成传输次数:

\[ \frac{50\times10^{6}}{2}=25\times10^{6}\ \text{次/秒}\quad(\checkmark) \]

每次传 32 bit = 4 B,传输率:

\[ 25\times10^{6}\times4=100\times10^{6}\ \text{B/s}=100\ \text{MB/s}\quad(\checkmark) \]

A 是忘了除以 2;C 是误以为每时钟周期传一次。「一次传输占几个时钟周期」正是同步总线带宽题的核心陷阱——它与例 1、例 2 合起来覆盖了带宽计算的三种命题角度:直接给总线频率、给时钟频率需换算 / 乘 \(k\)、按总线周期构成推传输次数。

6.4.2 异步定时:握手与三种子方式 高频考点

应答式(握手)定时异步定时:没有公共时钟,主从设备靠一对握手信号——请求与回答互相配合:「请求」到来才启动对方动作,「回答」确认后才进行下一步,每个事件的开始都由上一事件应答触发。它能适应速度差异大的设备(快慢双方按需等待),但应答往返带来延迟、控制较复杂。按「请求 / 回答是否需要对方确认后才撤销」分三种子方式。
主:请求 REQ 从:回答 ACK ① 发请求 ② 见回答 → 撤请求 ③ 见请求撤 → 撤回答 t t1:请求传播延迟 t2:回答传播延迟 t3:撤销请求延迟 全互锁:请求、回答的撤销都要等对方确认 —— 双方四拍互锁,最可靠;应答往返最多,速度最慢
图 6-3 异步全互锁握手时序:① 主发请求 → ② 从发回答、主确认后撤请求 → ③ 从确认请求撤销后才撤回答——一来一回互相锁定
子方式主模块(请求方)从模块(回答方)可靠性速度
不互锁发请求后不等回答,过一段时间自动撤销发回答后不等确认,过一段时间自动撤销最低(无法确知对方是否收到)最快
半互锁发请求后等到回答信号才撤销请求发回答后不等主方确认,过一段时间自动撤销回答居中(回答若丢失,主模块将一直等待)较快
全互锁等到回答才撤请求等确认请求已撤销后才撤回答最高(双方互相确认)最慢(应答往返最多)
一句话记忆「互锁」= 撤销信号前要不要等对方确认:谁也不等(不互锁)→ 只有请求方等(半互锁)→ 双方都等(全互锁)。等得越多越可靠、也越慢——可靠性与速度是一对跷跷板。
例 6 高频考点 握手子方式辨析

关于异步通信的三种握手方式,下列叙述中正确的是( )
A. 不互锁方式中,主模块须等到从模块的回答信号才能撤销请求
B. 半互锁方式中,从模块发出回答后不等待主模块确认,经过一段时间自动撤销回答
C. 全互锁方式的传输速度在三种方式中最快
D. 三种方式中,只有全互锁方式的从模块需要发出回答信号

查看解答

B。逐项分析:

A 错:那是半互锁(以及全互锁)的特征;不互锁的主模块发请求后不等待,定时自动撤销;

B 对:半互锁「半」在只有请求方单方面等回答——主模块等到回答才撤请求,但从模块的回答不等确认、定时自撤;

C 错:全互锁请求、回答要互相确认撤销,应答往返次数最多,是三种方式中最慢的,但最可靠;

D 错:三种方式都靠「请求—回答」应答配合,从模块都要发回答;差别只在撤销前是否等对方确认。

6.4.3 半同步定时与分离式通信

半同步 = 同步 + 少量应答保留统一时钟(结构简单、速度较快),再增加一根等待信号 WAIT(或 READY):快从设备按同步节拍走;慢从设备在时钟控制下拉低 WAIT,主设备在每个时钟前沿检测到 WAIT 有效,就插入等待周期 \(T_w\),直到从设备准备好。它取两家之长——像同步一样以钟为纲,又能像异步一样迁就慢设备;READY/WAIT 属「前置应答信号」,兼得速度与灵活,是处理器总线的主流做法(如 8086 的 READY)。
分离式通信 = 一个传输拆两个子周期普通定时中,主设备发出地址后,从设备「准备数据」的等待期里总线白白闲置。分离式通信把一次读传输拆成两个独立的传输子过程:
  1. 子周期 1(申请—发送):主设备申请并取得总线,只传送地址和读命令,发完立即释放总线;
  2. 空闲准备期:从设备按命令译码、读出并准备数据——这段时间总线可出让给其他设备使用;
  3. 子周期 2(申请—送数):从设备数据就绪后自己申请总线,此时它充当主设备,把数据直接发往原请求方。
特点:① 各模块均可申请占用总线、均可成为主模块,每个模块都要有总线请求与仲裁逻辑;② 每个子周期都极短,总线利用率最高(无空等);③ 控制复杂、硬件成本高。适合挂接多台速度悬殊设备(尤其磁盘等慢设备)的系统。
练习 4 易错

判断下列说法的正误:(1) 同步定时的总线周期必须按总线上最慢的设备设计;(2) 半同步方式完全取消了公共时钟;(3) 分离式通信中,第二个子周期里从设备是总线上的主设备;(4) 异步全互锁方式比不互锁方式传输速度快;(5) WAIT 信号有效时,主设备插入等待周期,总线时钟暂停。

查看答案

(1) 对:统一时钟下所有设备同节拍工作,必须迁就最慢者。

(2) 错:半同步恰恰保留公共时钟,只是增加 WAIT/READY 应答线来迁就慢设备;完全无公共时钟的是异步方式。

(3) 对:分离式通信第二个子周期由从设备申请总线并发送数据,此刻它是主设备。

(4) 错:全互锁应答往返最多,最慢但最可靠;不互锁最快但可靠性差。

(5) 错:等待周期 \(T_w\) 是时钟驱动下多等几个完整的时钟周期,总线时钟本身照常运行、从不暂停。

6.5 总线标准

总线标准是国际组织或行业制定的总线互连规范:规定插槽形状尺寸、信号线定义、时序与电气参数,使不同厂商的板卡、设备都能按同一标准接入。考试只考「识记级」——每个标准是串行还是并行、用于什么场合、几个标志性特点。

6.5.1 常见总线标准一览

标准传送方式关键参数 / 带宽标志性特点
ISA / EISA并行16 位 / 32 位,约 8 MHz早期 PC 系统总线;EISA 是其 32 位兼容扩展(16 MB/s → 33 MB/s)
VL-BUS(VESA)并行32 位,33/66 MHz局部总线:把显示等高速设备直接挂 CPU 总线,短暂过渡
PCI并行32/64 位,33/66 MHz;32 位 @33 MHz = 132 MB/s地址 / 数据复用线(AD),支持即插即用、多主设备,曾统治 PC 平台
PCI-X并行64 位,133 MHz,约 1 GB/sPCI 的服务器版扩展,提速扩宽
AGP并行32 位,66 MHz 基础 ×2/×4/×8 倍增专用于图形加速卡的点对点高速端口(1×即 266 MB/s)
PCI-Express(PCIe)串行、差分、点对点×1/×4/×8/×16 通道聚合,全双工,逐代翻倍(2.5/5/8 GT/s…)经交换器(Switch)连接,独享带宽、热插拔、支持 QoS,现行主流
USB串行、差分1.5 / 12 / 480 Mbps / 5 Gbps(1.0/2.0/3.0)热插拔、即插即用、树状(星型级联)拓扑,4 线(2 供电 + D+/D− 差分数据)
SCSI并行(小型机系统接口)8/16 位,可外挂 8~16 个设备智能 I/O 接口,硬盘 / 光驱 / 扫描仪等多设备总线
IDE / ATA并行40 芯排线,一个通道挂 2 个盘早期 PC 磁盘接口,廉价;Ultra ATA 133 MB/s 封顶
SATA串行、差分、点对点1.5 Gb/s / 3 Gb/s / 6 Gb/s(150/300/600 MB/s)取代 IDE 的现代磁盘接口,线少、抗干扰、独享通道
归类口诀并行老三代:ISA/EISA、VL-BUS、PCI/PCI-X/AGP、SCSI、IDE;串行新四样:PCIe、USB、SATA(外加以太网、火线 IEEE 1394)。判别抓两个词:「差分」「点对点」「热插拔」一出现,基本就是串行新贵。

6.5.2 并行为何让位于串行差分 选择常考

并行共享总线(ISA / PCI / IDE) 设备 A 设备 B 设备 C 多根数据线同时传送(n 位 n 线),所有设备分时共享同一束线 频率一高:线间串扰加剧、各线时延不齐(同步偏移)、线多成本高 共享总线 → 各设备互相竞争、带宽摊薄 串行差分点对点(PCIe / USB / SATA) 交换器Switch 设备 A 设备 B 设备 C TX± / RX± 差分对 每通道两根差分线,点对点独享、全双工、无竞争,频率可大幅提升 引脚少 → 抗干扰强、无多线同步偏移 → 串行反超并行
图 6-4 并行共享总线 vs 串行差分点对点:并行靠「多位同传」提带宽,受串扰与同步偏移制约;串行差分每通道仅两根线,点对点独享,靠提频与聚通道(×1~×16)取胜
辨析要点并行总线提高带宽靠「加宽」,但在高速下有三大硬伤:① 线间串扰——多根线挨得近,一根跳变干扰邻居;② 同步偏移(时钟歪斜)——各数据线长度 / 驱动不一致,同一字节各位到达时间错开,频率越高窗口越窄;③ 线多引脚多——成本高、占空间。串行差分用两根线传一对相位相反的信号,接收端取差值:共模干扰被抵消,抗干扰强;单通道无多位对齐问题,可以把频率提得很高;再配合点对点独享通道(PCIe 经 Switch、SATA 一口一盘)与多通道聚合(PCIe ×16),总带宽反超并行。USB 补充优势:热插拔、即插即用、可供电、树状级联。「并行一定快、串行一定慢」是错误观念——距离与频率才是决定因素。
例 7 真题风格 总线标准归类

下列全部采用串行方式传送数据的总线标准是( )
A. PCI、USB、SATA B. PCIe、USB、SATA C. AGP、SCSI、USB D. IDE、PCIe、IEEE 1394

查看解答

B。逐项分析:

A 错:PCI 是 32/64 位并行总线(地址数据复用);B 对:PCIe(串行差分点对点)、USB(串行差分、树状热插拔)、SATA(串行差分)都是串行标准;

C 错:AGP 与 SCSI 均为并行;D 错:IDE 是 40 芯并行排线(IEEE 1394 火线确实串行,但 IDE 拖累全组)。

记法:串行「新贵」家族 = PCIe、USB、SATA、1394(火线)、以太网;并行「老派」家族 = ISA/EISA、VL-BUS、PCI/PCI-X、AGP、SCSI、IDE。

练习 5

判断下列说法的正误:(1) USB 采用串行方式传送数据,支持热插拔,并可经集线器级联成树状拓扑;(2) PCIe ×16 比 ×1 快,是因为它一次并行传送 16 位数据;(3) AGP 是专门为图形加速卡设计的点对点总线;(4) 一个 USB 2.0 接口的传输速率是 480 MB/s。

查看答案

(1) 对:串行差分、热插拔、树状(星型级联)拓扑都是 USB 的标志特点。

(2) 错:×16 是 16 条独立串行通道的聚合(每通道仍一次 1 bit、差分传),不是 16 位并行——这是 PCIe 与并行总线最常考的区别。

(3) 对:AGP 是显卡专用端口,点对点独享带宽,不必与其他设备分时。

(4) 错:USB 2.0 高速模式 480 Mb/s(兆位/秒),折合仅 60 MB/s——Mb/s 与 MB/s 差 8 倍,单位陷阱必须看清。

6.6 章末自测 真题风格

限时 35 分钟,先做后看答案。难度:★★ 基础 / ★★★ 强化 / ★★★★ 冲刺。计算题全部要求代入具体数值逐步演算,并用第二种方式验算。

自测 1(选择 · ★★)

下列关于三类信号线的叙述中,错误的是( )
A. 数据总线是双向的,其宽度决定一次并行传送的位数 B. 地址总线是单向的,由主设备发出 C. 控制总线中每根信号线都是双向的 D. 中断请求信号线是送入 CPU 的,中断响应信号线是 CPU 发出的

查看答案

C。控制总线「整组看双向」,但每根线都是单向——有的出(读 / 写、响应、允许)、有的入(请求、就绪);A、B、D 均正确且是常考结论。

自测 2(选择 · ★★★)

某机地址总线 24 位、按字节编址,该机最大寻址空间为( )
A. 4 MB B. 16 MB C. 16 Mb D. 8 MB

查看答案

B。\(2^{24}=16\text{M}\) 个单元(\(\checkmark\):\(2^{20}=1\text{M}\),\(2^{24}=16\times2^{20}\)),字节编址即 16 MB;C 单位是「位」,差 8 倍。

自测 3(填空 · ★★★ 计算)

某总线工作频率 100 MHz,数据线宽度 32 位,每个总线周期传送一次数据。该总线的带宽为 \(\underline{\hspace{1cm}}\) MB/s;若宽度增至 64 位,带宽为 \(\underline{\hspace{1cm}}\) MB/s。

查看答案

32 位 = 4 B:

\[ 100\times10^{6}\times4=400\ \text{MB/s}\quad(\checkmark) \]

64 位 = 8 B:

\[ 100\times10^{6}\times8=800\ \text{MB/s}\quad(\checkmark:\ 400\times2) \]

验算:带宽 = 频率 × 宽度/8,宽度翻倍带宽翻倍,比例关系吻合。

自测 4(填空 · ★★★★ 计算)

某总线时钟频率 266 MHz,数据线宽度 64 位,每个时钟周期可传送 2 次数据。该总线带宽为 \(\underline{\hspace{1cm}}\) MB/s。

查看答案

本题给的是时钟频率且每时钟周期传 2 次,直接等效「每秒传送次数 = 266M × 2」;64 位 = 8 B:

\[ 266\times10^{6}\times2\times8=4256\ \text{MB/s}\quad(\checkmark:\ 266\times16=4256) \]

与练习 2 对照:那题「每总线周期 1 次」得 2128 MB/s,本题每周期 2 次即翻倍——\(k\) 因子别漏乘。

自测 5(选择 · ★★★ 高频考点)

关于集中式总线仲裁,下列叙述中错误的是( )
A. 链式查询方式只需 3 根控制线,且对接口故障敏感 B. 计数器定时查询中,计数器从上一次的终点开始计数,各设备优先级相等 C. 独立请求方式中 8 个设备需要 16 根请求 / 允许线 D. 三种方式中,链式查询的响应速度最快

查看答案

D。速度排序:独立请求(直达)最快、计数器定时查询居中、链式查询(BG 逐级串传)最慢;A、B、C 均正确(8 设备独立请求 \(2\times8=16\) 根)。

自测 6(选择 · ★★★)

关于定时方式,下列叙述中正确的是( )
A. 半同步方式取消公共时钟,完全靠应答配合 B. 分离式通信中,从设备准备数据期间总线可被其他设备使用 C. 同步方式下主设备能即时知道从设备是否正确收到数据 D. 异步不互锁方式是三种握手中最可靠的

查看答案

B。分离式通信把传输拆成两个子周期,准备期释放总线给他人,故总线利用率最高。A 错:半同步保留时钟 + WAIT;C 错:同步无应答,无法即时确认;D 错:不互锁最快但可靠性最低,最可靠的是全互锁。

自测 7(选择 · ★★★ 计算)

某串行异步通信每帧含 1 位起始位、8 位数据位、1 位停止位(无校验位),波特率为 2400 baud。其有效数据传输率为( )
A. 2400 b/s B. 1920 b/s C. 240 b/s D. 2112 b/s

查看答案

B。帧长 \(m=1+8+1=10\) 位,有效位 \(d=8\):

\[ 2400\times\frac{8}{10}=1920\ \text{b/s}\quad(\checkmark) \]

验算(走另一条路):帧率 \(=2400\div10=240\) 帧 / 秒,每帧带 8 个有效位,\(240\times8=1920\) b/s ✓。A 是把波特率当比特率;C 是误除帧长;D 是 \(m\) 数成 11 位(多算了校验位)——帧长必须逐位照抄题干。

自测 8(解答 · ★★★)

为什么现代高速总线(PCIe、SATA、USB 3.x)纷纷放弃并行而改用「串行 + 差分 + 点对点」?请给出至少三条理由,并说明 PCIe ×16 为什么不等于「16 位并行」。

查看解答

理由(答出三条即可):

① 抗干扰:差分对两线信号相位相反,接收端取差值,共模干扰相互抵消,允许更高频率;

② 无同步偏移:并行多线各线时延不齐,频率越高「对齐窗口」越窄;串行一次 1 bit 无多位对齐问题,频率可大幅提升;

③ 点对点独享:无共享竞争,带宽不摊薄,配合 Switch 可扩展;④ 线少引脚少:成本低、功耗低、布线简单,支持热插拔。

PCIe ×16 是 16 条独立的串行差分通道聚合:每通道仍一次传 1 bit、全双工,×16 把 16 通道带宽相加,而非一根 16 位宽的并行总线——「通道数」是「份数」,不是「位宽」。

6.7 本章考点总结

考点常考题型热度核心方法
总线概念与分类选择题★★★分时 + 共享两大特征;片内 / 系统 / 通信总线,串行 / 并行,专用 / 复用(地址数据复用线省线但分时)
三类信号线方向选择题 / 判断★★★★ 易错数据总线双向(宽度定一次传送位数);地址总线单向(位数定寻址空间 \(2^{n}\));控制总线逐根单向、整组双向,逐根记方向(读写 / 响应出,请求 / 就绪入)
总线带宽计算选择 / 填空 / 大题一问★★★★★ 必考带宽 = 频率 × 宽度/8;三问审题——总线频率还是时钟频率?一总线周期几时钟周期?一周期传 k 次乘 k;B/s → MB/s 除 \(10^{6}\)
波特率与比特率选择 / 填空★★★比特率 = 波特率 × log\(_2\)L;串行帧按「帧率 × 有效位」算,附加位是开销;Mb/s 与 MB/s 差 8 倍
集中式仲裁三方式选择题★★★★ 高频链式 3 条线、近者优先、故障敏感;计数式 log\(_2\)n+2 条、起点定优先级(从 0 固定 / 从上次终点均等);独立请求 2n 条、最快最复杂
定时四方式选择题★★★★ 高频同步迁就最慢设备;异步握手三子方式(不互锁最快、全互锁最可靠最慢,互锁 = 撤信号前等不等确认);半同步 = 时钟 + WAIT;分离式两子周期、总线利用率最高
总线标准归类选择题★★★并行:ISA/EISA、VL-BUS、PCI/PCI-X、AGP、SCSI、IDE;串行差分点对点:PCIe、USB(热插拔树状)、SATA;PCIe ×n 是 n 通道聚合非 n 位并行
串行 vs 并行选择 / 简答★★★★并行硬伤:串扰、同步偏移、线多;串行差分:共模抵消抗干扰、无对齐问题可提频、点对点独享——「串行不一定慢」
下一步本章过关标准:例题全部独立重做;自测 8 题至少 6 题正确;能不假思索说出三类信号线的方向、三种仲裁方式的线数与优先级、三种握手子方式的差别,并一口算出「100 MHz × 32 位 = 400 MB/s」这类带宽。随后进入 第 7 章 输入 / 输出系统——I/O 接口、程序查询 / 中断 / DMA 三种方式将与本章的总线带宽、总线仲裁直接接力,是组成原理大题的最后一座主峰。