《计算机组成原理》——第二章-7 总线定时:异步定时、半同步定时以及分离式定时

1.总线定时-异步定时

我们知道同步定时适用于总线长度较短,各设备存取时间比较接近的情况,所以它是有一定的局限性,不太灵活。

异步定时克服了同步定时的缺点,它允许总线上的设备的存储时间不一致。异步定时是不需要这个时钟信号的这个控制,它采用的是应答方式(握手方式)。

图1-1

假设主设备和从设备通过总线连接,现在主设备需要和从设备通信,并且这个主设备他已经拿到了这个总线的控制权,那么主设备的话先将地址发送到这个地址线,等待这个地址信号稳定后,再通过这个控制线发送这个读命令,给这个从设备。从设备它内部可能经过一系列的这个操作,将地址对应的数据放到这个数据线上,等待这个数据线上的这个信号稳定之后,然后从设备就通过一根确认线,给主设备发送确认信号,通知主设备说这个数据已经有效了,然后主设备就去读取这个数据线上的数据,一旦读完就会撤销这个读命令,从而会引起这个从设备,撤销这个确认信号和数据线上的数据,又使得主设备撤销这个地址信号。

🎉:

1. 主设备是“老奶奶”,从设备是“银行柜台”

  • 老奶奶有存折(总线控制权),她走到柜台前。

2. 告诉银行职员要取哪笔钱(发地址)

  • 老奶奶大声说:“我要取3号存折的钱!”(地址线发地址)

  • 等银行职员听清楚(地址稳定)。

3. 老奶奶说:“把钱给我!”(发读命令)

  • 银行职员听到后,赶紧去保险柜找钱(从设备内部操作)。

4. 银行职员把钱放桌上(数据线放数据)

  • 钱放好后,职员说:“钱好了,拿吧!”(确认信号有效)

5. 老奶奶拿走钱(主设备读数据)

  • 钱拿到手后,老奶奶说:“我拿到了!”(撤销读命令)

  • 银行职员收走空盘子(撤销数据+确认信号)

  • 老奶奶离开柜台(撤销地址)


🌰 一句话总结:

“老奶奶喊取钱 → 银行找钱 → 放桌上 → 拿钱走人”

 异步定时中后一个操作的事件,出现在总线上的时刻,取决于前一个操作事件出现的时刻。

图1-2

异步通信的三种定时方式(老奶奶买菜版) 🥬💰

1. 不互锁(老奶奶喊一嗓子就走)

  • 场景:老奶奶在菜市场喊:“老板,给我一斤白菜!”

  • 关键点

    • 喊完不管老板听没听见,直接走人(主设备发完请求就撤,不等应答)。

    • 风险:老板可能根本没听到,白菜没拿到(数据可能丢失)。

特点快但不靠谱,适合“丢了无所谓”的数据。


2. 半互锁(老奶奶等老板回话,但老板不等她)

  • 场景:老奶奶喊:“老板,给我一斤白菜!”

    • 等老板回:“好,马上!”(主设备等从设备的应答信号

    • 但老板称好白菜后,不管老奶奶拿没拿,直接忙别的去了(从设备不确认主设备是否收到)。

特点主设备等应答,但从设备不等主设备确认,可能老奶奶还没伸手,老板就把菜放一边了。


3. 全互锁(老奶奶和老板确认两次)

  • 场景

    1. 老奶奶喊:“老板,给我一斤白菜!”

    2. 老板回:“好,马上!”(第一次握手

    3. 老板称好后说:“菜好了,拿吧!”(第二次握手

    4. 老奶奶拿到菜后喊:“拿到了!”(第三次握手

    5. 老板才继续接待下个顾客。

特点最可靠,双方都确认对方完成动作,但速度最慢


🌰 终极总结(一句话区分)

  • 不互锁:喊完就跑,不管对方听没听见。

  • 半互锁:我等你的回答,但你不用等我拿。

  • 全互锁:我说你听,你做好我拿,我拿完你才继续。

 

 2.异步定时(不互锁方式)

主设备发送了这个请求后,不用等待这个从设备的应答信号,而是等过一小段时间后,直接撤销掉这个请求信号,然后主设备就可以去干其他的事情了。从设备接收到请求信号后,根据请求做一些操作,可能是将这个主设备要的数据,放到这个数据线上,然后的话就给这个主设备,发送这个应答信号,告诉主设备说数据准备好了,然后过一小段时间就撤销掉这个应答的信号,这个时候重设备可以去做其他的事情了,所以这个时候呢你的从设备慢一点无所谓。也就是说异步的话,它异步定时,允许不同速度的这个设备之间的通信,那么主设备收到了应答之后,可以去数据上读取这个数据,可以看出通信双方呢都没有互锁。就是当主设备给从设备发送请求,不用等到这个从设备的应答,就可以去干其他的事情,而从设备给主设备发送完应答信息之后呢,过一小段时间也可以去干其他的事情,不用等这个从设备读完的数据了。

异步通信(不互锁)—— “快递柜取件法” 📦

🔹 主设备(你)的操作:

  1. 下单购物(发请求)

    • 你在网购平台下单(主设备发送请求信号)。

    • 不用等商家回复,直接关掉APP(不等待应答,直接撤销请求)。

    • 你去刷短视频、吃饭、睡觉(主设备去做其他事情)。

  2. 快递柜通知(收到应答)

    • 快递员把你的包裹放进快递柜(从设备把数据放到数据线)。

    • 快递柜自动发短信:“包裹已到,请取货!”(从设备发送应答信号)。

    • 短信发完就消失(应答信号过一小段时间自动撤销)。

  3. 你取快递(读数据)

    • 有空时才去快递柜拿(主设备在任意时间读取数据)。

    • 快递柜不会等你拿完才关(从设备不等主设备读完,直接去做其他事)。


🔹 从设备(快递柜)的操作:

  1. 收到订单(请求信号)

    • 快递员看到订单(从设备检测到请求)。

    • 你不知道快递员什么时候看到(主设备不等待确认)。

  2. 打包发货(处理数据)

    • 快递员慢慢打包(从设备可能很慢)。

    • 放进快递柜后,自动发短信(发送应答信号)。

    • 短信发完就不管了(应答信号撤销,快递员去送下一单)。


🌰 核心特点(一句话总结)

  • 主设备:“我喊完就跑,你慢慢搞,我回头再来拿。”

  • 从设备:“我搞完就通知你,但不等你拿,我继续忙我的。”

💡 为什么叫“不互锁”?

  • 主不等从,从不主等,双方完全自由,谁都不卡谁。

  • 适合速度差异大的设备(比如CPU访问慢速传感器)。

 3.异步定时(半互锁方式)

当主设备发送了这个请求信号后,一定要等这个从设备发送了应答信号后,才可以去撤销这个请求信号,但是从设备它不用等这个主设备撤销其的这个请求信号,就可以直接撤销这个应答信号,那么这个时候的话,因为应答信号已经撤销了,所以这个时候呢请求信号的话也可以撤销

异步通信(半互锁)—— “打电话订餐法” ☎️🍲

🔹 主设备(你)的操作:

  1. 打电话订餐(发请求)

    • 你打电话给餐厅:“我要一份红烧牛肉面!”(主设备发送请求信号)。

    • 必须等老板回复:“好的,马上做!”(主设备等待从设备的应答信号)。

    • 老板说完后,你可以挂电话(主设备可以撤销请求信号)。

  2. 等餐做好(数据准备)

    • 厨师开始做面(从设备处理数据)。

    • 面做好后,老板喊:“面好了!”(从设备发送应答信号)。

    • 喊完就不管了(应答信号很快撤销,老板去忙别的)。

  3. 你自己端面(读数据)

    • 你听到“面好了”后,自己决定什么时候去端(主设备在数据线上读取数据)。

    • 老板不等你端走,直接去接新订单(从设备不等主设备读完,直接做其他事)。


🔹 从设备(餐厅)的操作:

  1. 接单(收到请求)

    • 老板听到你的订单(从设备检测到请求信号)。

    • 必须回复“好的,马上做!”(必须发送应答信号)。

  2. 做完就通知(发送应答)

    • 面做好后,老板喊一声“面好了!”(发送应答信号)。

    • 喊完就忙别的(应答信号撤销,不管你是否听到)。


🌰 核心特点(一句话总结)

  • 主设备:“我必须等你答应做,才能挂电话。”

  • 从设备:“我做完告诉你一声,但不等你拿,我继续忙。”

💡 为什么叫“半互锁”?

  • 主等从,但从不等主 → 一半锁定,一半自由

  • 比不互锁更可靠,但比全互锁更快。

4.异步定时(全互锁方式)

 主设备发送请求信号,一定要等到从设备发送了应答信号之后,才可以撤销请求信号,而这个应答信号也一定要等主设备的请求信号撤销了,从设备才可以撤销这个应答信号。那如果这个时候主设备没有撤销这个请求信号,从设备也不能撤销这个应答信号。它相当于互相锁住了,只有主设备撤销了请求信号之后,从设备才可以撤销应答信号。

最贴生活的全互锁例子:超市存包柜取包流程 🛍️🔐

🔹 场景还原:

  1. 存包(主设备发请求)

    • 你按"存包"键(发送请求)

    • 柜子弹开一个空箱门(应答信号)

    • 你必须把包放进去(保持请求)

    • 柜门一直开着等你(保持应答)

  2. 关门确认(互锁开始)

    • 你关上门(撤销请求)

    • 柜机"滴"一声打印条码(撤销应答)

    • 如果你不关门,柜子不会打印条码(互相锁定)

  3. 取包(反向流程)

    • 你扫码(新请求)

    • 柜门弹开(新应答)

    • 你必须取走包关门(请求保持)

    • 柜门一直开到你关门(应答保持)

🔹 为什么完美对应?

  1. 必须完成上一步才能下一步

    • 不存包就无法关门(请求→应答)

    • 不关门就不出条码(应答→撤销请求)

  2. 双方严格配合

    • 你的每个动作都需要柜机响应

    • 柜机的每个响应都需要你确认

  3. 常见易理解

    • 所有人都用过存包柜

    • 流程强制性的体验印象深刻

💡 终极记忆口诀:

"存包必须关好门,取包必须拿干净"
—— 就像全互锁通信必须严格遵循"请求-应答-撤销"的完整链条

5.总线定时例子

5.1 CPU和主存储器通信

 

5.2 CPU和主存储器通信-同步定时

 CPU和主存储器之间使用这种使用这个同步定时的方式,需要用到这个存储器总线的时钟信号。在第一个时钟周期内CPU发送地址给主存;第二个时钟周期的话,发送读命令;在第三个第四个第五个第六个时钟周期内的话,主存它都在准备这个数据,在这四个时钟周期内的话呢,CPU它是可以去执行其他的指令的,他不用等待这个主存的应答。主存也不需要应答。CPU只要在第七个时钟周期到来的时候撤销这个请求信号并且释放这个总线的控制权就可以了。这样的话主存准备并传输数据的时候,CPU是可以执行其他指令的,这样可以提高CPU的效率。

CPU与内存同步通信 —— "快餐店取餐叫号系统" 🍔🔔

🔹 完美对应的7个时钟周期:

  1. 第1周期(点餐)

    • 你在收银台下单:"3号套餐"(CPU发地址)

    • 收银员输入电脑(地址存入主存)

  2. 第2周期(下单确认)

    • 收银员按"确认"键(CPU发读命令)

    • 厨房开始制作(主存启动读取)

  3. 第3-6周期(备餐时间)

    • 你拿到小票去玩手机(CPU执行其他指令)

    • 厨房默默做汉堡(DRAM准备数据)

    • 无需互相等待(无应答信号)

  4. 第7周期(取餐完成)

    • 叫号屏显示"3号请取餐"(时钟上升沿触发)

    • 你取餐离开柜台(CPU读取数据总线)

    • 收银员接待下个顾客(释放总线控制权)

🔹 为什么这个例子最贴切?

  1. 严格时序控制

    • 叫号系统就是"时钟信号"(每隔固定时间刷新)

    • 每个步骤必须按顺序在指定时段完成

  2. 高效并行处理

    • 顾客等待时能玩手机(CPU执行其他指令)

    • 厨房专注做餐(内存专心准备数据)

  3. 无需实时沟通

    • 不需要厨师喊"正在做"(无应答信号)

    • 全靠叫号系统同步(时钟信号协调)

  4. 生活化体验

    • 所有人都经历过快餐店取餐

    • 完美对应"同步通信"的核心优势

💡 终极记忆技巧:

记住"快餐7步法":

  1. 点餐(发地址)

  2. 确认(发读令)
    3-6. 等餐时刷抖音(CPU并行)

  3. 叫号取餐(时钟触发读取)

这种设计就像麦当劳的流水线,让收银员(CPU)和厨房(内存)各司其职,通过叫号系统(时钟)完美配合,最大化效率! 🍟⏱️

6.总线定时:半同步定时

 

图6-1

半同步总线定时 —— "医院叫号+护士确认系统" 🏥🔄

🔹 核心特点类比:

  1. 基础同步框架

    • 像普通叫号系统一样按固定节奏(时钟周期)运作

    • 但增加了"护士人工确认"环节(WAIT信号机制)

  2. 灵活等待机制

    • 默认按标准时间流程走(同步)

    • 遇到特殊情况可插队/延迟(异步扩展)


🔹 具体通信流程对比:

医院就诊流程

总线操作

  1. 患者按挂号顺序候诊(时钟周期控制) | 1. 默认每个时钟周期完成一个阶段

  2. 常规患者按电子屏叫号就诊(同步操作) | 2. 常规操作在固定时钟周期内完成

  3. 遇到老人/急诊患者时: | 3. 从设备未就绪时:

    • 护士按下"暂停叫号"按钮(WAIT信号) | - 从设备拉低WAIT线

    • 电子屏显示"请稍候"(插入等待周期) | - 总线插入等待周期(Tw)

    • 特殊处理完成后恢复叫号(释放WAIT) | - 就绪后释放WAIT继续


🔹 典型场景示例:

  1. CPU读取内存数据

    • T1周期:发地址(挂号)

    • T2周期:发读命令(分诊)

    • T3周期:内存若未就绪→拉WAIT(护士暂停)

    • ...插入多个Tw周期(特殊处理时间)

    • 最后一个Tw周期:内存就绪释放WAIT

    • Tn周期:传输数据(就诊完成)

  2. 优势体现

    • 快设备:按标准流程快速完成(年轻患者)

    • 慢设备:通过WAIT获得额外时间(老年患者)

    • 时钟信号始终维持(叫号系统持续运行)


🌰 生活化理解:

想象银行叫号系统升级版:

  • 常规业务:按叫号顺序立即办理(同步)

  • 大额存取:柜台举手示意"需要准备时间"(WAIT)

  • 系统自动暂停叫号,等柜台准备好再继续

  • 既保持叫号秩序,又兼顾特殊需求

💡 技术关键点:

  1. WAIT信号是双向握手

    • 从设备拉低WAIT(举手示意)

    • 主设备检测WAIT(看到举手)

    • 主设备维持当前状态(暂停操作)

  2. 时钟周期弹性扩展

    • 每个等待周期(Tw)= 原时钟周期长度

    • 可插入无限个Tw直到就绪

  3. 效率平衡

    • 比纯同步更灵活

    • 比纯异步更简单

这种设计就像现代化的智能服务系统,在保持基本秩序的同时,智能处理不同速度的需求! ⏳🚦

7.总线定时:分离式定时

 

图7-1

"像点外卖一样,下单和取餐完全分开,中间不用干等着"

三步对比:

  1. 下单阶段(地址阶段)

    • 你打开APP选好餐厅(CPU发地址)

    • 下单后手机就自由了(释放总线)

  2. 做菜阶段(总线空闲)

    • 厨师慢慢做菜(内存准备数据)

    • 你可以玩手机(CPU做其他事)

  3. 送餐阶段(数据阶段)

    • 骑手送到按门铃(内存申请总线)

    • 你开门取餐(CPU收数据)

 8.总线定时辨析

用「快递取件」比喻所有总线定时 🔥


1. 同步定时 —— 菜鸟驿站排队取件

  • 怎么操作
    ✅ 快递员喊一个取件码(时钟上升沿)
    ✅ 你必须在10秒内完成「亮码+签字+取件」(严格按时钟周期行动)
    ❌ 超时就重来(错过时钟周期就失败)

  • 特点
    ⏱️ 绝对时间卡死,像军训走正步
    💡 适合CPU和内存这种「速度已知」的设备


2. 半同步定时 —— 快递柜+超时提醒

  • 怎么操作
    ✅ 快递柜默认5秒内开门(同步基础)
    ❗ 如果包裹太大,柜子会闪灯说「稍等」(WAIT信号)
    ✅ 等柜子「滴」一声再取(延长时钟周期)

  • 特点
    🚦 有缓冲的同步,快设备按标准来,慢设备可以申请「加时」


3. 异步定时 —— 三种打电话催快递

① 不互锁(最随性)

  • 你打电话说「放门口」(发请求)

  • 不等快递员回答就挂电话(不管对方听没听见)

② 半互锁(较靠谱)

  • 你打电话说「放门口」

  • 必须听到快递员说“好的”(等应答)

  • 但说完就直接挂电话(不等对方放完)

③ 全互锁(最可靠)

  • 你说「放门口」

  • 快递员说「好的」

  • 你必须听到包裹落地声(确认完成)

  • 快递员必须等你喊「收到了」才离开


4. 分离式定时 —— 外卖送货

  • 阶段1:你在APP下单(发地址后立刻释放总线

  • 阶段2:外卖员自由配送(总线完全空闲)

  • 阶段3:餐到后打电话让你取(数据阶段重新占用总线)

  • 核心优势
    🚀 下单和取货完全分开,中间时间不卡任何设备

🛎️ 核心差异对比表

分离式定时异步不互锁
阶段划分✅ 严格分「地址阶段」和「数据阶段」❌ 没有明确阶段划分
总线占用🔄 地址发完立刻释放总线🔒 持续占用总线直到超时
适用场景CPU等高速设备访问慢速外设对可靠性要求极低的临时通信
生活比喻点外卖(下单→等通知→取餐)朝窗外扔纸条(不确认对方是否收到)

👉 是否需要严格拆分「下单」和「取货」两个阶段?

  • 是 → 分离式(外卖模式)

  • 否 → 不互锁(扔纸条模式)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值