Appearance
总线事务与定时
2026 大纲 六(一)3 总线事务和定时。
数据已经放上总线了,从设备凭什么知道现在可以取
一次总线事务要走四个阶段——申请分配 → 寻址 → 传输 → 结束。总线定时只管其中第 3 个阶段,而且只管里面一个很具体的问题:主设备把数据放上总线之后,从设备凭什么知道"现在可以取了"?
这个问题必须有人回答,因为总线上的电平是连续存在的——数据线上任何时刻都有电平,从设备不可能靠"看一眼"判断那是本次要传的有效数据,还是上一次的残留、或者正在建立中的中间态。必须有一个约定,指出哪一刻的电平是有效的。 四种定时方式就是四种约定:
- 同步——事先约好第几个时钟周期有效。全系统共用一把尺子,谁也不用问谁。
- 异步——当场问一句、答一声。没有公共时钟,靠请求(Request)与回答(Acknowledge)握手。
- 半同步——尺子照用,但允许喊"等一下"。同步加一根 WAIT 信号线。
- 分离式——这不是回答"何时有效",而是回答"等待期间总线归谁"。它解决的是另一件事。
四种方式的排列不是难度递增,而是一条"约定的刚性"逐级放松的谱。同步最刚:时间按整周期发放,而且所有从设备共用同一个限时——这个限时只能取最慢那个部件所需的时间,快设备也得陪着等。同步的简单性,是拿"所有人陪最慢的人走"换来的。异步最柔:每次传输各自按各自的实际速度走,代价是要多两条应答线、控制也更复杂。半同步夹在中间:等待长度仍然只能是整数个时钟周期(WAIT 只在时钟边沿被采样),但这个整数可以按从设备的实际速度变,不再对所有设备取同一个固定值。
所以半同步并没有摆脱时钟,它摆脱的是"对所有设备用同一个固定等待"。异步与半同步的握手也差着一层:异步的请求/回答电平变化本身就有效、随到随处理,半同步的 WAIT 必须等时钟沿采样。
交互可视化
一、总线事务的四个阶段
| 阶段 | 做什么 |
|---|---|
| 1. 申请分配 | 需要使用总线的主设备提出申请,经仲裁逻辑把下一传输周期的使用权授予某一申请者 |
| 2. 寻址 | 取得使用权的主设备发出从设备地址及有关命令,启动本次传输的从设备 |
| 3. 传输(传数) | 主从设备交换数据,数据由源部件经数据总线流入目的部件 |
| 4. 结束 | 主设备撤除总线上的有关信息,让出使用权 |
数据传输阶段可以是非突发的(每个数据都配一次地址),也可以是突发的(只给首地址,后续地址自动递增),见 总线概述与分类。
二、同步通信:用一把公共的尺子
通信双方由统一时标控制数据传送,所有操作都发生在固定的时钟边沿。以读操作为例,一个总线传输周期固定为四个时钟周期:
| 周期 | ||||
|---|---|---|---|---|
| 动作 | 主设备发地址 | 主设备发读命令 | 从设备提供数据,主设备采样 | 主设备撤销读命令,从设备撤销数据 |
写操作类似,区别在于数据由主设备在
优点是规定明确统一、不需要应答信号、控制最简单,且传输周期固定、带宽可精确计算;缺点是时间配合属强制性同步,灵活性差。它一般用于总线长度较短、各部件存取时间比较一致的场合。
三、为什么非要有异步方式
同步方式对所有从设备使用同一个限时,而这个限时只能取最慢那个部件所需的时间——取小了慢设备来不及,数据还没送上总线就被采样。于是同步总线上的每一次传输,都在按最慢部件的节奏走:
对各不相同速度的部件而言,必须按最慢速度的部件来设计公共时钟,这严重影响总线的工作效率,也给设计带来局限。
设备速度差异越大,浪费越严重。挂一个慢速打印机上去,整条总线的时钟就得为它让路。
异步通信正是为消除这一条而生:它没有公共的时钟标准,改用应答(握手)方式——主设备发出请求信号后,一直等到从设备反馈响应信号才继续。代价是主、从之间要增加两条应答线,收益是快设备快应答、慢设备慢应答,谁也不必等一个统一的限时。
四、异步的三种互锁
握手协议里还有一个自由度:撤销信号时,要不要等对方?"互锁"的意思就是"我的下一步动作,锁在你的上一步动作上"。
- 不互锁:主设备发出请求后不必等待从设备回答,经一段时间便自行撤销;从设备的回答也在一段时间后自动撤销。CPU 向主存写信息即属此类——先后给出地址、写命令与写入数据,不等主存回话。
- 半互锁:主设备必须收到回答才撤销请求(一处互锁);从设备发出回答后不必等请求撤销(此处无互锁)。多机系统中某个 CPU 访问共享存储器属此类——发出访存命令后必须收到"存储器未被占用"的回答才能真正访存。
- 全互锁:主设备等回答才撤请求,从设备还必须获知请求已撤销才撤回答。双方都互锁,网络通信采用的就是这一种。
主设备 从设备
①── 请求有效 ────────────────→
←──────────② 回答有效
③── 撤销请求 ────────────────→
←──────────④ 撤销回答
不互锁:② 不等 ①、④ 不等 ③ —— 0 处互锁
半互锁:③ 等 ② —— 1 处互锁
全互锁:③ 等 ②、④ 等 ③ —— 2 处互锁| 方式 | 互锁处数 | 速度 | 可靠性 | 关键路径上的单程数 | 一次传输的时间 |
|---|---|---|---|---|---|
| 不互锁 | 0(都不等) | 最快 | 最低 | 1(① 请求送达即可) | |
| 半互锁 | 1(只有主设备等) | 中 | 中 | 2(① 请求去、② 回答回) | |
| 全互锁 | 2(双方都等) | 最慢 | 最高 | 4(① ② ③ ④ 各一程) |
推法只有一条:从"发出请求"到"本次传输可以认为彻底结束",中间有几段信号必须依次跑完,就乘几个
两处口径要一起钉住。其一,
还有一句措辞要读准:一次握手过程完成的是一次数据交换,不是一位。被传数据有多宽由总线宽度决定——可以是一个字节、一个字,突发方式下甚至是一整块。把握手的粒度理解成"一位",等于把一条 32 位总线当成串行线在用。
同步的整周期浪费与异步的单程计数:15ns 和 60ns 各是什么的标价(想核对"整周期怎么凑""单程与往返有没有数反"时展开)
(一)同步方式的整周期开销。 某同步总线时钟周期为 20ns,某从设备完成一次读操作实际需要 65ns。同步方式只能按整周期发放时间:
浪费
(二)异步方式数单程。 某异步总线上,主设备发出请求后一直等到收到回答才撤销请求;从设备发出回答后不等请求撤销,延时固定时间即自行撤销回答——只有主设备一方"等对方",一处互锁,属半互锁。
设这条总线上信号的单向传播延迟为 30ns,从设备准备一个数据需 200ns。半互锁的关键路径是"请求去 + 回答回"两个单程:
改成全互锁,撤销请求与撤销回答各再占一个单程,共四个:
多出的
反过来看第三节那句话的分量:同步方式下这一切都被折进"若干个整时钟周期"里,快设备也得按最慢设备的限时走;异步方式下
五、半同步通信:把折中做出来
半同步保留同步的基本特点:所有地址、命令、数据信号的发出时间都严格参照系统时钟的某个前沿,接收方用系统时钟后沿判断识别;同时像异步那样允许不同速度的模块协同工作——为此增设一条 WAIT(等待)响应信号线,用插入时钟等待周期
以插入两个等待周期的输入为例:
| 时钟周期 | ||||||
|---|---|---|---|---|---|---|
| 主设备 | 发地址 | 发读命令 | 等待 | 等待 | 取走数据 | 撤销命令,结束 |
| 周期开始时测得的 WAIT | — | — | 低 | 低 | 高 | — |
| 从设备 | — | 开始准备数据,把 WAIT 拉低 | 准备中 | 准备完成,WAIT 置高 | 数据已在总线上 | 撤销数据 |
同步方式的表只有
半同步比异步简单,全系统各模块又在统一时钟下同步工作、可靠性较高;缺点是对系统时钟频率不能要求太高,整体速度上不去。它适用于工作速度不高、但包含速度差异较大的各类设备的系统。
三种定时方式的分界线
| 方式 | 有无统一时钟 | 有无握手 | 时间粒度 | 适应速度差异 | 控制复杂度 |
|---|---|---|---|---|---|
| 同步 | 有 | 无 | 固定整周期数 | 差 | 最低 |
| 异步 | 无 | 有 | 连续(按实际需要) | 好 | 中 |
| 半同步 | 有 | 有(受时钟采样) | 可变的整周期数 | 较好 | 中 |
一句话概括分界:同步靠公共时钟,异步靠请求—回答握手,半同步是"同步为主、握手为辅"。
六、分离式通信:把空转的总线还给别人
前三种方式里,从主设备发出地址和读写命令直到数据传输结束,总线使用权完全被这一对主从设备占据。而一次读事务的时间花在三处:主设备发地址和命令、从设备内部做读数据的准备、从设备经数据总线提供数据。中间那一步对系统总线而言并无实质性的信息传输,总线纯属空闲等待;总线负载接近饱和时,这段空转的损失很可观。
分离式通信(Split Transaction)把一个传输周期分解为两个子周期:
- 主设备 A 获得总线使用权后,把命令、地址以及自己的模块编号发到总线上由从设备 B 接收,A 发送完立即放弃总线使用权;
- B 完成内部准备后自己申请总线,获准后把 A 的编号、B 的地址和 A 所需的数据送上总线。
第 1 步里那个"自己的模块编号"不能漏——B 释放总线之后要主动找回 A,必须知道数据该送回给谁。
两个子周期之间,总线可以被其他设备使用。优点是消除总线空转、利用率显著提高,适合主从速度差异大、总线接近饱和的系统;缺点是控制复杂、从设备也必须具备申请总线的能力,且一次传输要仲裁两次。
由此得到一句容易说反的结论:分离式提高的是总线利用率,不是单次传输的速度。对发起请求的那个主设备而言,一次传输的总延迟反而略有增加(多了一次仲裁)。省下来的空闲时间没有还给它,而是给了别的设备。
顺带把它和突发传送分开——两者省的不是同一段时间:突发省的是后续地址占用的总线时间,受益者是发起传输的主设备本人;分离式省的是从设备准备数据时的总线空转,受益者是其他设备。两者可以同时使用,互不替代。
考点速记
- 总线事务四阶段申请分配 → 寻址 → 传输 → 结束;定时只解决第 3 阶段"从设备凭什么知道现在可以取"这一件事。
- 同步用统一时标,代价是所有从设备共用按最慢部件定的同一限时且时间只能按整周期发放;异步用握手,各设备按各自实际速度走;半同步
同步 WAIT,等待长度是可变的整数个时钟周期。 - 异步三种互锁速度与可靠性必然反向,耗时靠数单程:不互锁
、半互锁 、全互锁 ;分离式通信提高的是总线利用率,单次传输的延迟并不减少。
这一节在真题里被考过的形式:
说明:本篇讲的内容在题库里挂的是
bus-concepts标签,所以下方「真题练习」只渲染出bus-timing那一道。本节的考法清单覆盖 5 道,其余 4 道显示在总线概述与分类的真题练习区,那一篇不重复讲它们。
- 挑出关于总线定时的错误叙述(2015-19、2021-19)。2015-19 的错项是"同步通信方式中,同步时钟信号可由各设备提供"——同步的定义就是全系统用同一把尺子,时标由 CPU 的总线控制部件统一发出;各部件即使自带时序发生器,也必须被它同步。同题另三句都对:异步里全互锁最慢、不互锁可靠性最差、半同步的握手信号由同步时钟采样。2021-19 的错项是"异步总线由握手信号定时,一次握手过程完成一位数据交换"——是一次数据交换不是一位,宽度由总线宽度决定。⚠️ 这两道错项的形态一样:都是把一句本来正确的话改掉一个关键限定词("统一提供"改成"各设备提供"、"一次"改成"一位"),做题时要逐词读。
- 问突发传输叫什么(2014-20)。"主设备只需给出一个首地址,从设备就能从首地址开始的若干连续单元读出或写入多个数据"——这是突发传输的定义原话。另三个选项(并行传输、串行传输、同步传输)说的都是别的维度:前两个说数据线怎么排,第三个说定时怎么定,都不是"一个地址配多个数据"这件事。
- 算一次突发事务至少要多久(2012-19)。同步总线 100 MHz(周期 10 ns)、宽度 32 位、地址/数据线复用、每传一个地址或数据占一个时钟周期、支持突发。要传 128 位
4 个 32 位数据,突发只需一个首地址,故共 个周期 。关键在"复用"两个字:地址也要占一个数据周期,漏掉它得到 40 ns(错项 B)。 - 算读一个主存块要多久(2023-20)。总线 64 位、1 GHz(周期 1 ns)、传一个数据或地址各占 1 个周期、不支持突发、主存每准备一个 64 位数据要 6 ns、块大小 32 B
4 个 64 位。不支持突发意味着每个数据都要重新给一次地址,所以每传一个数据是 ns,四个共 。⚠️ 这道题与上一道恰好是一对:支持突发就只给一次地址,不支持就每次都给——四个错项里 8 ns、11 ns、26 ns 分别对应"只算一个数据""只给一次地址""漏掉最后一次准备"三种漏算方式。
复习优先级:这一节的两类题要按两条不同的线准备。判断叙述那一类靠三种定时方式的分界表,重点是同步的时钟由谁提供与握手的粒度;计算那一类只有一个变量——支不支持突发、地址要给几次,把这一条读准,时序题就是数周期的加法。异步三种互锁的
易错:以为同步时钟可以由各设备自己提供。同步的含义就是全系统用同一把尺子。
易错:把"一次握手完成一次数据交换"读成"一位"。宽度由总线宽度决定。
易错:算突发事务时忘了地址也占一个周期(地址/数据线复用时尤其)。
易错:把不支持突发的场景按"只给一次地址"算。不支持突发时每个数据都要重新给地址。
易错:把异步的
当成往返延迟。它是单程,一个握手回合等于两个单程。
易错:认为分离式通信能让本次传输更快。它提高的是总线利用率,本次延迟反而略增。
教材出处
- 唐朔飞《计算机组成原理(第 3 版)》§3.5 总线控制:总线周期的四个阶段(p59)
- 唐朔飞《计算机组成原理(第 3 版)》§3.5:同步通信的时标来源与读/写传输周期时序(p59~60);同步通信的优缺点与"必须按最慢速度部件设计公共时钟"(p61)
- 唐朔飞《计算机组成原理(第 3 版)》§3.5:异步通信的应答方式与不互锁/半互锁/全互锁三种类型及各自实例(p61~62)
- 唐朔飞《计算机组成原理(第 3 版)》§3.5:半同步通信、WAIT 信号与插入等待周期
(p64~65);分离式通信的两个子周期与主模块编号(p65) - 袁春风《计算机组成与系统结构(第 3 版)》§8.3.1:同步总线的定时协议,以及"总线定时以最慢设备所用时间为标准"(p278);三种定时方式的并列说明(p279)