Appearance
总线事务与定时
大纲定位
对应大纲「总线」第三条:总线事务和定时。
定时方式解决的是一个很具体的问题:主设备把数据放上总线之后,从设备凭什么知道"现在可以取了"。四种方案(同步、异步、半同步、分离事务)就是四种回答。
考情分析
这一节的题几乎都是"下列叙述中错误的是"。判断题的落点很集中:三种握手谁快谁可靠、同步时钟由谁提供、半同步的握手信号受谁控制。这些点单独看都不难,但文字表述稍作变形就容易晃神——所以下面每一条都写成可直接比对的形式。
总线事务的四个阶段
一次完整的总线事务包括:
| 阶段 | 做什么 |
|---|---|
| 1. 申请分配 | 主设备请求总线,经仲裁获得控制权 |
| 2. 寻址 | 主设备发出地址和命令,选中从设备 |
| 3. 传输 | 主从之间进行数据交换 |
| 4. 结束 | 主设备撤除信号,释放总线控制权 |
数据传输阶段可以是非突发的(每个数据都配一次地址),也可以是突发的(只给首地址,后续地址自动递增)。突发传送的定义与带宽计算见 总线概述。
同步通信
主从设备使用统一的时钟信号,所有操作都发生在固定的时钟边沿。
时钟从哪来
同步总线的时钟由总线控制器(或 CPU)统一发出,通过一条时钟线送到挂在总线上的所有部件,不是各设备各自提供自己的时钟。
这正是"同步"二字的含义——大家用的是同一把尺子。如果每个设备都提供自己的时钟,那就不叫同步总线了。选择题里"同步时钟信号可由各设备提供"是错误说法。
工作过程:
- 主设备在第 1 个时钟周期发出地址
- 从设备在约定的第
个时钟周期返回数据 - 主设备在第
个周期的时钟沿采样数据
| 优点 | 缺点 |
|---|---|
| 控制简单,不需要应答信号 | 所有设备必须按最慢设备的速度工作 |
| 传输速率固定,可精确计算带宽 | 不同速度的设备混接时效率低 |
| 适合总线上设备速度差异小的场景 | 不能适应不同类型的从设备 |
同步的代价:时间只能按整周期给。 若某次操作从设备实际需要 220ns、总线时钟周期为 50ns,也必须凑足
带宽计算:设时钟周期为
异步通信
不使用统一时钟,主从之间通过握手信号(请求 Request / 应答 Acknowledge)协调。
- 请求:主设备发出,表示地址/数据已就绪
- 应答:从设备发出,表示已接收 / 数据已准备好
根据"撤销信号时要不要等对方",分为三种。判别的关键词是互锁——互锁的意思是"我的下一步动作,锁在你的上一步动作上"。
全互锁(双方都互锁)
主设备 从设备
①── 请求有效 ────────────────→
←──────────② 应答有效(收到请求后才发)
③── 撤销请求 ────────────────→(收到应答后才撤)
←──────────④ 撤销应答(看到请求撤销后才撤)两处互锁:② 锁在 ① 上,④ 锁在 ③ 上。最慢,最可靠。
半互锁(只有主设备互锁)
主设备发出请求后,收到应答才撤销请求(这一处仍互锁);但从设备发出应答后,不等请求撤销,自己延时一段就撤销应答。
一处互锁。速度居中,可靠性居中。
不互锁(都不互锁)
主设备发出请求后,经固定延时自行撤销,不等应答;从设备发出应答后也经固定延时自行撤销。
零处互锁。最快,最不可靠——因为谁也没确认对方真的收到了。
三种握手对比
| 方式 | 互锁处数 | 速度 | 可靠性 |
|---|---|---|---|
| 全互锁 | 2(双方都等) | 最慢 | 最高 |
| 半互锁 | 1(只有主设备等) | 中 | 中 |
| 不互锁 | 0(都不等) | 最快 | 最低 |
记忆钩子:互锁越多越慢、越可靠。三种方式的速度顺序和可靠性顺序永远相反,任何把两者说成同向的选项都是错的。
半同步通信
在同步通信基础上增加一条 WAIT(等待) 信号线。
- 默认按时钟同步传输
- 从设备速度跟不上时拉低 WAIT,主设备插入整数个等待周期
- 从设备就绪后释放 WAIT,恢复同步传输
半同步的握手信号仍受时钟控制
半同步是"同步为主 + 握手为辅":WAIT 这类握手信号不是随时生效的,而是在时钟边沿被采样——主设备只在每个时钟沿去看一眼 WAIT 是高是低,再决定要不要插入等待周期。
所以"半同步通信方式中,握手信号的采样由同步时钟控制"是正确说法。半同步没有摆脱时钟,它只是让时钟能被拉长整数个周期。
半同步兼顾了同步的简单性和对不同速度设备的适应性。
定时方式速查
| 方式 | 有无统一时钟 | 有无握手 | 适应速度差异 | 控制复杂度 |
|---|---|---|---|---|
| 同步 | 有 | 无 | 差 | 最低 |
| 异步 | 无 | 有 | 好 | 中 |
| 半同步 | 有 | 有(受时钟采样) | 较好 | 中 |
| 分离事务 | 有 | 有 | 好 | 最高 |
分离事务通信
传统总线事务中,从设备准备数据的这段时间里,总线被主设备占着但没有数据在流动——这段时间被浪费了。
分离事务(Split Transaction)把一次总线事务拆成两个子事务:
- 请求子事务:主设备发出地址和命令后立即释放总线
- 应答子事务:从设备准备好数据后,自己申请总线,把数据发回
两个子事务之间,总线可以被其他设备使用。
| 优点 | 缺点 |
|---|---|
| 总线利用率显著提高 | 控制复杂,从设备也需要有申请总线的能力 |
| 适合主从速度差异大的系统 | 一次传输要仲裁两次 |
注意分离事务提高的是"利用率",不是单次传输的速度。 对发起请求的那个主设备来说,从发出请求到拿到数据的总延迟反而略有增加(多了一次仲裁);省下来的空闲时间是给别的设备用的。选择题说"分离事务可提高总线利用率"是对的,说"可缩短一次数据传输的时间"就错了。
交互可视化
例题
例 1:同步总线时钟频率 100MHz,总线宽度 32 位,每次传输需要 1 个时钟周期。求总线带宽。
解:每秒传
例 2:同步总线中,主存读周期 200ns,总线时钟周期 50ns,一次读操作需要多少个时钟周期?
解:
例 3:为什么分离事务能提高总线利用率?
解:传统方式下从设备准备数据期间总线被占用但无数据流动。分离事务让主设备先释放总线,这段时间可供其他设备传输,总线空闲被利用起来。
例 4:判断下列说法的对错。
- 异步通信中全互锁协议最慢 —— 对(两处互锁,等待最多)
- 异步通信中非互锁协议可靠性最差 —— 对(零处互锁,无确认)
- 同步通信中同步时钟信号可由各设备提供 —— 错(由总线控制器统一提供)
- 半同步通信中握手信号的采样由同步时钟控制 —— 对(WAIT 在时钟沿被采样)
- 异步通信中一次握手过程完成一位数据交换 —— 错(一次握手完成的是一次总线传输,位数由总线宽度决定,可以是 8 位、32 位、64 位)
- 同步总线的时钟频率不一定等于工作频率 —— 对(一个时钟周期可传多次数据)
考点清单
- 总线事务四阶段:申请分配 → 寻址 → 传输 → 结束
- 同步通信的时钟由总线控制器统一提供,不是各设备自带
- 同步/半同步只能按整数个时钟周期给时间,不足一周期也要凑整
- 异步三种握手:全互锁 2 处互锁最慢最可靠,半互锁 1 处,不互锁 0 处最快最不可靠
- 速度顺序与可靠性顺序永远相反
- 一次握手完成的是一次传输(可以是多位),不是"一位"
- 半同步 = 同步 + WAIT,握手信号仍在时钟沿被采样
- 分离事务提高的是总线利用率,单次传输的延迟并不减少
真题练习
相关真题(1题)
总线事务与带宽计算的真题集中挂在 总线概述 一篇下(含突发传送、工作频率、多通道等),做完这里的题请转过去。