Appearance
总线时序
考情分析
同步/异步通信的区别、异步通信的三种握手方式是选择题常考内容。计算同步总线的数据传输率也偶尔出大题。分离事务作为提升总线利用率的手段,近年关注度在增加。
总线通信的四个阶段
一次完整的总线事务通常包括:
- 申请分配阶段:主设备请求总线,经仲裁获得控制权
- 寻址阶段:主设备发出地址和命令,选中从设备
- 传输阶段:主从之间进行数据交换
- 结束阶段:主设备释放总线控制权
定时方式解决的核心问题是:主从设备如何协调传输节奏,确保数据在正确的时刻被采样。
同步通信
主从设备使用统一的时钟信号进行同步,所有操作在固定的时钟边沿发生。
工作过程:
- 主设备在第 1 个时钟周期发出地址
- 从设备在约定的第
个时钟周期返回数据 - 主设备在第
个周期的时钟沿采样数据
| 优点 | 缺点 |
|---|---|
| 控制简单,不需要应答信号 | 所有设备必须按最慢设备的速度工作 |
| 传输速率固定,可精确计算带宽 | 不同速度的设备混接时效率低 |
| 适合总线上设备速度差异小的场景 | 不能适应不同类型的从设备 |
带宽计算:若时钟周期为
异步通信
不使用统一时钟,主从之间通过握手信号(请求/应答)协调。
基本信号:
- 请求(Request):主设备发出,表示数据/地址已就绪
- 应答(Acknowledge):从设备发出,表示已接收/数据已准备好
根据握手的严格程度,分为三种:
全互锁
主设备 从设备
│── 请求 ──→ │
│ │── 应答 ──→
│←── 撤销请求 ── │
│ │── 撤销应答 ──→
│ │每一步都等待对方确认后才进入下一步:
- 主设备发请求
- 从设备收到请求后发应答
- 主设备收到应答后撤销请求
- 从设备收到撤销后撤销应答
速度最慢、可靠性最高。
半互锁
主设备发出请求后,收到应答即撤销请求,不等待从设备撤销应答。从设备可以在任意时刻自行撤销应答。
比全互锁少一次等待,速度较快,可靠性略低。
不互锁
主设备发出请求后,经过固定延时即自行撤销,不等待应答。从设备发出应答后也经过固定延时自行撤销。
速度最快、可靠性最低。
三种握手对比
| 方式 | 等待次数 | 速度 | 可靠性 |
|---|---|---|---|
| 全互锁 | 4 次 | 慢 | 高 |
| 半互锁 | 3 次 | 中 | 中 |
| 不互锁 | 0 次 | 快 | 低 |
半同步通信
在同步通信基础上增加一条 WAIT(等待) 信号线。
- 默认按时钟同步传输
- 如果从设备速度跟不上,拉低 WAIT 信号,主设备插入等待周期
- 从设备就绪后释放 WAIT,恢复同步传输
半同步通信兼顾了同步的简单性和对不同速度设备的适应性。
分离事务通信
传统总线事务中,从设备准备数据时总线处于空闲等待状态(虽然被占用但无数据传输),这段时间被浪费了。
分离事务(Split Transaction)将一次总线事务拆分为两个子事务:
- 请求子事务:主设备发出地址和命令后立即释放总线
- 应答子事务:从设备准备好数据后,自己申请总线,将数据发回
两次子事务之间,总线可以被其他设备使用。
| 优点 | 缺点 |
|---|---|
| 总线利用率显著提高 | 控制复杂,从设备需要仲裁能力 |
| 适合主从速度差异大的系统 | 每次事务有两次仲裁开销 |
交互可视化
例题
例 1:同步总线,时钟频率 100 MHz,总线宽度 32 位,每次传输需要 1 个时钟周期。求总线带宽。
解:
例 2:同步总线中,主存读周期为 200 ns,总线时钟周期为 50 ns,一次读操作需要多少个时钟周期?
解:
例 3:为什么分离事务能提高总线利用率?
解:在传统方式下,从设备准备数据期间总线被主设备占用但无数据流动。分离事务让主设备先释放总线,其他设备可以利用这段时间传输数据,总线空闲时间被有效利用。
例 4(突发传送带宽):某存储器总线时钟频率 420 MHz,总线宽度 64 位,每个时钟周期传送 2 次数据。总线事务支持突发传送,最多传 8 次数据:第 1 个时钟周期传地址和命令,第 4~7 个时钟周期连续传 8 次数据。求总线带宽。
解:一次总线事务传
注意:这里的"带宽"是按整个总线事务(含地址周期和等待周期)计算的有效带宽,不是峰值传输速率。峰值速率
考点清单
- 同步通信用统一时钟,简单但受限于最慢设备
- 异步通信用握手信号:全互锁最可靠但最慢,不互锁最快但最不可靠
- 半同步通信 = 同步 + WAIT 信号,兼顾简单性与灵活性
- 分离事务将总线事务拆为请求和应答两部分,消除等待期的总线空占
- 突发传送的带宽 = 传输数据量 / 整个事务时间(含地址、等待开销)
- 同步总线带宽计算: