总线

考点定位

  • 大纲章节:总线概述(总线定义、分类、组成与性能指标)、总线仲裁(集中式与分布式)、总线操作与定时、总线标准
  • 常见题型:以选择题为主(总线分类归类、三种集中式仲裁方式辨析、四种定时方式的信号时序判断、总线带宽计算),偶与指令执行/CPU 周期结合出综合选择题
  • 考查频率:中(不是每年必考大分值,但选择题零星出现,总线带宽计算与仲裁方式辨析是高频点)
  • 前置知识:机器周期与总线周期概念见计算机系统概述,存储器与 CPU 的连接见存储器层次结构,指令执行过程见中央处理器
  • 工程师读者注意:你熟悉 PCIe、USB 这些"接口",但考试考的是总线的抽象分类体系与仲裁/定时的机制本身——尤其链式查询的优先级特点、异步握手三种互锁方式,这些是"反直觉但必考"的点

一、总线概述

1.1 总线定义

总线是连接多个部件的信息传输干线,是各部件共享的传输介质。某一时刻只允许一个部件向总线发送信息,但可以有多个部件同时接收同一信息——这是总线"分时共享"的本质:

  • 分时:同一时刻只允许一个发送者占用总线(否则电平冲突)
  • 共享:总线上挂接的多个部件都可以接收总线上的信息

总线争用问题的两端——谁获得发送权(仲裁)、何时发送/如何配合收发节奏(定时)——正是本章后两大节的逻辑主线。

1.2 总线分类

按连接层次分类(选择题直接考归类):

类别别名连接范围典型例子
片内总线芯片内总线CPU 芯片内部,连接寄存器与运算器ALU 与寄存器组之间的数据通路
系统总线板级总线/板间总线CPU、主存、各 I/O 模块(接口卡)之间数据总线、地址总线、控制总线
通信总线外部总线/机间总线计算机系统之间或计算机与外设之间串行/并行通信线

系统总线按传输内容分类(必考):

信号线方向位数/宽度作用
数据线(DB)双向= 机器一次传输的数据位数(常等于存储字长/MDR 位数)传数据、指令、状态
地址线(AB)单向(CPU 发出)= MAR 位数,nn 根可寻址 2n2^n 个单元指明源/目的地址(主存单元或 I/O 端口)
控制线(CB)每根单向(整体双向)若干根时序与命令信号读/写命令、时钟、中断请求、总线请求/授权等

记忆锚点:数据线宽度决定一次传多少,地址线根数决定能寻址多大。地址线单向是因为地址总是由主设备(CPU 等)发出;数据必须双向因为既要读又要写。

1.3 总线性能指标与带宽计算

总线宽度:数据线根数。 总线工作频率:每秒传输的次数(与 CPU 主频可以不同)。 总线带宽(吞吐量):单位时间内总线上可传输的数据量,即

总线带宽(MB/s)=总线工作频率(MHz)×总线宽度(bit)8\text{总线带宽}(\text{MB/s}) = \frac{\text{总线工作频率}(\text{MHz}) \times \text{总线宽度}(\text{bit})}{8}

若每个时钟周期传输多次(如 DDR、QDR),公式推广为:

总线带宽=总线频率×每周期传输次数×总线宽度8\text{总线带宽} = \frac{\text{总线频率} \times \text{每周期传输次数} \times \text{总线宽度}}{8}

例题(模拟题) 某总线的工作频率为 66 MHz,在一个总线周期中并行传输 4 字节(32 位)数据,且每个时钟周期可完成一次传输。求总线带宽。若改为每个时钟周期传输 2 次(QDR 类机制),带宽又为多少?

解析:每个时钟周期传 32 位 = 4 B,每秒传输 66M66\text{M} 次,故带宽 =66M×4 B=264 MB/s= 66\text{M} \times 4\text{ B} = 264\text{ MB/s}。若每周期传 2 次,带宽翻倍为 528 MB/s528\text{ MB/s}。

常见坑:MHz 与 MB/s 的换算中"1 M = 10610^6"(传输速率按十进制),不要与存储容量按 2202^{20} 混用;考试中两种口径差异通常不影响选项数量级,但计算题注意题目口径。

例题(模拟题) 某同步总线采用 64 位数据线,时钟频率 100 MHz,每个总线传输需 4 个时钟周期完成(含地址与等待)。该总线有效数据传输率约为( )。 A. 1600 MB/s B. 800 MB/s C. 400 MB/s D. 200 MB/s

解析:每 4 个时钟周期传 8 B,每秒 100M100\text{M} 个时钟周期,传输率 =100M×84 B/s=200 MB/s= \frac{100\text{M} \times 8}{4}\text{ B/s} = 200\text{ MB/s},选 D。错选 B 是忽略了"4 个周期才完成一次传输"。

二、总线仲裁

总线主设备:获得总线控制权、能发起传输的模块(CPU、DMA 控制器等)。总线从设备:只能响应、不能发起的模块(如主存、普通 I/O 接口)。

多个主设备同时申请总线时,由总线控制器(硬件仲裁器)决定优先次序,这就是总线仲裁。分为集中式(仲裁逻辑集中在一处)与分布式(仲裁逻辑分散在各模块中,如现代 PCIe 的仲裁竞争机制)。

2.1 集中式仲裁三种方式

(1)链式查询方式

接口串联在 3 根公共控制线上:总线请求 BR、总线忙 BS、总线同意 BG。BG 像令牌一样从优先级最高的设备开始逐个向下传递,谁发出了请求谁就截留 BG、置 BS 有效、获得总线。

离仲裁器物理上最近的设备优先级最高。

  • 优点:控制线根数极少(仅 3 根,与设备数无关),结构简单,易扩展设备
  • 缺点:优先级固定(低优先级设备可能"饿死")、对电路故障敏感(一个接口坏,其后设备全部无法获得授权)、查询速度慢(逐级传播)

(2)计数器定时查询方式

设备通过 BR 请求后,仲裁器中的计数器从某个初值开始计数,计数结果通过设备地址线广播,与计数值相符的请求设备获得总线(置 BS)。

  • 计数从 0 开始:优先级固定为 0 号最高——同链式查询
  • 计数从上次终止点开始:各设备优先级循环均等,不会饿死
  • 控制线数:⌈log⁡2n⌉+2\lceil \log_2 n \rceil + 2(设备地址线 + BR + BS),nn 为设备数
  • 查询速度与优先级灵活性均介于链式与独立请求之间

(3)独立请求方式

每个设备各有一对独立的总线请求线 BRi_i 与总线同意线 BGi_i,仲裁器内部有排队电路(可编程改变优先级),响应速度最快。

  • 优点:响应速度快(无需逐个查询)、优先级灵活(可由程序动态控制、可循环)
  • 缺点:控制线数量多(2n2n 根请求/同意线),仲裁器逻辑复杂

2.2 三种集中式仲裁对比表(必背)

对比项链式查询计数器定时查询独立请求
控制线数3(BR、BS、BG)⌈log⁡2n⌉+2\lceil \log_2 n \rceil + 22n2n
优先级固定(离仲裁器越近越高)固定或循环(取决于计数初值)灵活可编程
响应速度慢(逐级传递)中等最快
对故障敏感性高(串联,一坏断链)较低低
硬件复杂度最简单中等最复杂
公平性差(低优先级可能饿死)可做到循环公平可编程公平

例题(模拟题) 某总线系统采用计数器定时查询仲裁,接有 8 个设备,则除总线请求线与总线忙线外,还需设备地址线( )根。 A. 3 B. 4 C. 8 D. 2

解析:8 个设备需 ⌈log⁡28⌉=3\lceil \log_2 8 \rceil = 3 根设备地址线,选 A。

2.3 分布式仲裁(概念层次)

分布式仲裁没有中央仲裁器,每个模块都有自己的仲裁号(仲裁 ID)与仲裁器,各模块通过共同的仲裁线竞争:申请时把自己的仲裁号发到仲裁线上,与线上现存值逐位比较,仲裁号大(或小)者获胜并继续竞争,最终胜者获得总线(现代 PCI/PCIe 以及 CAN 总线仲裁即此思想)。特点:无单点仲裁瓶颈、可扩展性好,但每个模块都要有仲裁逻辑。

三、总线操作与定时

总线定时:总线双方关于何时发出信号、何时接收信号的约定协议,解决收发双方的时序配合。一次总线传输的基本阶段:申请分配 → 寻址(发地址与读/写命令) → 传数 → 结束(撤销命令与信息)。

3.1 同步定时方式

采用统一的时钟信号,所有模块按时钟节拍固定相位动作(如读操作:T1 发地址,T2 发读命令,T3 从设备送数据,T4 撤销)。

  • 优点:控制逻辑简单、传输速度快(无握手开销)
  • 缺点:必须按最慢的设备设计时序(时钟周期迁就慢设备),主从设备时间配合"刚性",不能及时检验数据是否正确收到
  • 适用:总线长度较短、各设备存取时间比较接近的场景

常见坑:同步定时不适合设备速度差异大的场合——快设备被慢设备拖累;总线太长时时钟相位偏移(时钟歪斜)会破坏同步。

3.2 异步定时方式

没有统一时钟,依靠握手(应答)信号实现主从双方配合:"请求—应答"式的应答联系。按应答信号是否互锁分为三种:

(1)不互锁方式

主设备发请求信号后不等对方确认,经固定时间后自动撤销;从设备收到请求后发回答信号,同样经固定时间自动撤销。

  • 风险:若从设备还没收到,请求已撤销 → 可能失败;可靠性最低,速度最快

(2)半互锁方式

主设备发出请求后等接到从设备的回答信号才撤销请求(主设备侧互锁);但从设备的回答信号不等待主设备确认、经固定时间自动撤销(从设备侧不互锁)。

  • 风险:回答信号撤销后主设备若尚未收到,会丢失应答;"半"就半在从设备侧不互锁

(3)全互锁方式

主设备发请求 → 从设备收到后发回答 → 主设备收到回答才撤销请求 → 从设备发现请求撤销后才撤销回答。双方的撤销互为条件,形成完整的握手闭环。

  • 可靠性最高,速度最慢(一来一回多个传播延迟)
方式主设备撤销请求的条件从设备撤销回答的条件可靠性速度
不互锁固定延时后自动撤销固定延时后自动撤销最低最快
半互锁收到回答后撤销固定延时后自动撤销中中
全互锁收到回答后撤销发现请求已撤销后撤销最高最慢

记忆锚点:"互锁"= 撤销动作以对方确认为前提。谁互锁看谁等对方。

异步方式适用于速度差异大、距离远的设备(如串行外设通信),代价是握手延迟、控制复杂。

3.3 半同步定时方式

同步与异步的结合:保留统一时钟(各信号仍按时钟前沿发出),同时增设一根 "等待"响应信号(WAIT/READY)——慢设备来不及时拉起 WAIT 信号,主设备收到后在时钟节拍上插入等待周期。

  • 兼得同步的简单与异步的灵活:像同步一样用时钟对齐,像异步一样允许设备"喊慢"
  • 适用:设备速度差异存在但总体可控的场景(PC 机系统总线常用思想)

3.4 分离事务(分离式通信)方式

把一个总线事务拆成两个独立子事务,中间释放总线:

  1. 事务 1(请求期):主设备发地址与命令后立即释放总线(从设备开始独立准备数据,如 DRAM 读出)
  2. 事务 2(数据期):从设备准备好数据后再申请总线,以主设备身份把数据高速送给对方

时间线示意(待动画化):

传统方式:  [请求]────从设备准备数据(总线空占)────[送数]
分离事务:  [请求][释放] ←← 其他设备使用总线 →→ [从设备申请][送数]
  • 优点:从设备准备数据期间总线可供其他设备使用,总线利用率大幅提高
  • 缺点:控制复杂,每次传输要申请两次总线;从设备必须具备"主动申请总线"的能力(成为临时的主设备)

3.5 四种定时方式对比表(必背)

定时方式统一时钟握手/等待信号速度灵活性/适应性典型场景
同步有无快差(迁就最慢设备)短总线、设备速度接近
异步无有(握手应答)慢(全互锁最慢)最好(速度差异大、距离远)串行通信、外设
半同步有有(WAIT 等待信号)较快较好系统总线(PC 典型)
分离事务视实现有单事务慢、总线整体利用率高好(准备期让出总线)多主设备争用、DRAM 访问

例题(模拟题) 下列关于总线定时的叙述中,错误的是( )。 A. 同步定时方式中,各设备按统一时钟的固定节拍工作,时序设计需迁就最慢设备 B. 全互锁异步方式中,主设备撤销请求以收到回答为前提,从设备撤销回答以发现请求撤销为前提 C. 半同步方式既有统一时钟,又通过等待信号适应慢速设备 D. 分离事务方式中,从设备准备数据期间总线保持忙状态,避免其他设备干扰

解析:D 错误——分离事务的核心正是准备期间释放总线给其他设备使用,"总线保持忙"恰是其要消除的浪费。A、B、C 均为正确表述。

四、总线标准(了解层次)

总线标准是国际组织或厂商正式公布的总线规范(信号定义、机械尺寸、电气特性、时序)。408 大纲要求"了解"层次——识别标准名称与定位即可,不考细节时序。

标准类别/年代全称或要点地位
ISA系统总线(1981,IBM PC/AT 扩展)Industry Standard Architecture,16 位早期 PC 系统总线
EISA系统总线(1988)Extended ISA,32 位,与 ISA 兼容32 位过渡标准
PCI局部总线(1992)Peripheral Component Interconnect,32/64 位、并行、即插即用,与 CPU 经桥芯片相连一代经典的局部总线
PCIe局部总线(2003 至今)PCI Express,串行、点对点、差分信号、按 lane(×1/×4/×16)扩展当前主流扩展总线(显卡、NVMe)
USB外部串行总线Universal Serial Bus,串行、热插拔、级联星型拓扑(hub 扩展)最通用外设接口
IDE → SATA磁盘接口IDE/PATA 并行 → SATA(Serial ATA)串行,线少、速率高主流磁盘/光驱接口
SCSI磁盘/外设接口Small Computer System Interface,并行、可接多设备、用于服务器服务器级接口(SAS 为其串行演化)

工程师锚点:并行走向串行(PCI→PCIe、IDE→SATA)的根本原因是高频下并行线间串扰与同步偏移难控,串行 + 差分 + 嵌入式时钟反而更快——这是你工程直觉与考纲结论重合的地方,选择题偶尔考"PCIe 是串行总线"这一判断。

常见坑:

  • USB 是串行总线(名字里有 Universal,没有 Parallel),不要想当然当并行
  • PCIe 的"串行点对点"与 PCI 的"并行共享"对比是近年选择题热点
  • "系统总线分为数据/地址/控制三类"说的是信号分类,不是 ISA/EISA 那种"总线标准"分类——两套维度不要混

常见坑

  1. 总线三大分类维度混用:片内/系统/通信是按连接范围分;数据线/地址线/控制线是系统总线按传输内容分。题干问"系统总线的分类"答后者,问"总线按连接层次分"答前者。
  2. 链式查询优先级:由离仲裁器的物理距离决定,与设备号、速度无关。
  3. 异步三种互锁的"互锁"主体:半互锁是"主设备互锁、从设备不互锁",别记成"双方各一半"。
  4. 分离事务 ≠ 半同步:前者拆事务释放总线,后者插等待周期不释放总线。
  5. 带宽计算忘记除以传输所需周期数:题目给"每 4 个时钟周期完成一次传输"时必须除 4,这是最常见计算失分点。
  6. 地址线单向、数据线双向:判断信号线方向时"控制线整体双向、每根单向"的口径按教材选择题取"双向"的是数据线,地址线必单向。

自测

1.(选择)某系统总线中地址线 20 根(按字节编址),数据线 32 根,该系统最大可寻址空间为多少?一次总线传输最多传多少数据? 2.(选择)链式查询方式下,为使优先级最低的设备获得总线的等待时间最短,应采用的改进方式是——计数器定时查询从上次终止点开始计数,还是独立请求方式?说明理由。 3.(选择)全互锁异步方式一次传输中,主设备撤销请求信号的条件是( )。 A. 固定延时结束 B. 发出数据之后 C. 收到从设备的回答信号 D. 从设备撤销回答信号 4.(判断)半同步定时方式中允许从设备通过等待信号请求主设备延长当前总线周期。 5.(计算)某总线时钟频率 200 MHz,数据线 32 根,每个时钟周期传输 2 次。求总线带宽。

自测答案

  1. 2202^{20} = 1 MB 可寻址空间;一次最多传 4 B(32 位)。
  2. 独立请求方式。计数器循环计数虽能保证公平,但轮询到最低优先级仍需等待;独立请求由仲裁器排队电路直接判定,响应最快且优先级可编程。
  3. C。全互锁下主设备收到回答信号后才撤销请求;从设备则等发现请求撤销后才撤销回答。
  4. 正确。半同步 = 同步时钟 + 等待(WAIT)信号,慢设备可让主设备插入等待周期。
  5. 200M×2×328 B/s=1600 MB/s\frac{200\text{M} \times 2 \times 32}{8}\ \text{B/s} = 1600\text{ MB/s}。