5.8 KiB
tags, create time
| tags | create time | |||||
|---|---|---|---|---|---|---|
|
2026-06-16 21:21 |
小题 9 — 总线仲裁与分离事务总线
概述
本题考查总线主设备的概念、总线仲裁机制的分类与原理,以及分离事务总线的工作原理和别称。总线是计算机系统中各部件通信的公共通道,其仲裁和事务管理直接影响系统性能。
[!tip] 考试重点 分离事务总线的别称(流水总线、分离协议总线)和非别称(交叉互连总线、独占总线)是 A 卷原题。总线仲裁的三种集中式策略也需要掌握。
正文
一、总线主设备与从设备
| 类型 | 含义 | 特点 | 示例 |
|---|---|---|---|
| 主设备(Master) | 能主动发起总线事务的设备 | 拥有总线控制权,可以发起读写操作 | CPU、DMA 控制器 |
| 从设备(Slave) | 只能被动响应总线事务的设备 | 不发起事务,只响应主设备的请求 | 内存、I/O 接口 |
[!question] 主设备和从设备的区别? 主设备是"主动方"——它决定何时使用总线、传输什么数据、传向哪里。从设备是"被动方"——它只在被主设备寻址时才响应。例如 CPU(主设备)向内存(从设备)发起读操作:CPU 发出地址和控制信号,内存被动地将数据放到总线上。
二、总线仲裁机制
多个主设备可能同时请求使用总线,仲裁器(Arbiter)决定哪个设备获得总线使用权。
graph TD
REQ["Multiple Bus Masters"] --> ARB["Bus Arbiter"]
ARB --> G1["Grant to Master 1"]
ARB --> G2["Grant to Master 2"]
ARB --> G3["Grant to Master 3"]
2.1 集中式仲裁
由一个中央仲裁器统一管理所有总线请求。
| 策略 | 原理 | 优先级 | 优点 | 缺点 |
|---|---|---|---|---|
| 菊花链 | Grant 信号沿设备链逐级传递 | 离仲裁器近的高 | 简单、线数少 | 不公平,低优先级可能饿死 |
| 轮询 | 仲裁器按固定顺序轮询各设备 | 动态轮换 | 公平 | 效率不高 |
| 独立请求 | 每个设备有独立的请求/Grant 线 | 可编程设置 | 灵活、快 | 线数随设备数线性增长 |
[!note] 三种集中式仲裁的对比
维度 菊花链 轮询 独立请求 请求线数 1 1 nGrant 线数 1(串行传递) \log_2 nn公平性 差 好 可配置 速度 慢(链式传递) 中 快 可扩展性 好 中 差(线数多)
2.2 分布式仲裁
没有中央仲裁器,各设备自行协商总线使用权。
| 策略 | 原理 |
|---|---|
| 自举分布式 | 每个设备监控比自己优先级高的设备的请求线 |
| 冲突检测 | 设备发送数据后检测是否发生冲突,冲突则重试 |
[!question] 什么时候用分布式仲裁? 当系统规模很大(数十到数百个设备)时,集中式仲裁器成为瓶颈。分布式仲裁没有中央瓶颈,适合大规模系统(如以太网的 CSMA/CD 就是一种分布式冲突检测仲裁)。
三、分离事务总线
3.1 核心思想
传统总线中,一个事务从发起请求到数据返回,总线被全程独占。即使中间有较长的等待时间(如内存准备数据),其他设备也不能使用总线。
分离事务总线将一个总线事务拆分为两个独立的子事务:
- 请求阶段:主设备发出地址和命令
- 响应阶段:从设备准备好数据后,独立地将数据返回
两个阶段之间,总线被释放,可以为其他设备服务。
sequenceDiagram
participant M1 as "Master 1"
participant BUS as "Bus"
participant MEM as "Memory"
participant M2 as "Master 2"
M1->>BUS: "Phase 1: Request (addr + cmd)"
BUS->>MEM: "Forward to memory"
Note over BUS: "Bus released, available"
M2->>BUS: "Another request uses bus"
BUS->>M2: "Service Master 2"
MEM->>BUS: "Phase 2: Response (data ready)"
BUS->>M1: "Data delivered to Master 1"
3.2 别称与非别称
[!abstract]- 答案
名称 是否是分离事务总线的别称 流水总线 是 分离协议总线 是 交叉互连总线 不是(是另一种总线拓扑) 独占总线 不是(独占总线恰恰是分离事务总线的反面)
[!note] 为什么"交叉互连总线"和"独占总线"不是别称?
交叉互连总线(Crossbar Bus)是一种总线拓扑结构,允许多对设备之间同时建立独立的连接通道。它与分离事务总线解决的是不同层面的问题——拓扑结构 vs 事务管理。
独占总线描述的是一个事务独占总线直到完成的行为模式,这恰恰是分离事务总线要解决的问题。传统总线就是"独占"模式。
3.3 分离事务总线的优势
| 优势 | 说明 |
|---|---|
| 提高总线利用率 | 等待期间总线不空闲,可服务其他请求 |
| 减少总线竞争 | 多个事务可以交错进行 |
| 提升 I/O 吞吐率 | 多个设备可以同时处于"等待响应"状态 |
| 适合慢速设备 | 内存访问延迟被隐藏在释放总线期间 |
[!question] 分离事务总线有什么代价?
- 硬件复杂度增加:每个设备需要额外的缓冲寄存器来保存请求信息和返回数据
- 控制逻辑复杂:需要跟踪每个未完成事务的状态
- 响应顺序不确定:先发出的请求可能后返回,需要排序机制