同步异步、阻塞非阻塞之概念辨析 —基于指令序列的视角

一、“同步、异步”指多个指令序列之间的协作关系。当某一类事务需要有两个或两个以上指令序列共同协作完成,且这类事务能够划分成可由各指令序列分别执行的子事务时,就对这类事务的实现而言,原本并行的各孤立指令序列之间,必然会产生“上下游式”的串行协作关系;关键是各指令序列完成其对应的子事务的速率并不一致。

“同步”是指在实现事务时,任一上游指令序列必须等待其全部下游指令序列彻底地完成属于当前事务的对应子事务之后,才能去着手运行下一事务的对应子事务。在“同步”方式下,整个事务的吞吐速率受制于最慢子事务的运行速率,相邻上下游指令序列之间的信息交互“有双向信道、无缓存”。

       “异步”是指实现事务时,任一中间指令序列只要有足够空间向下游暂存其子事务运行的中间结果,当上游有“原料”来时,就全速依次运行属于本指令序列的子事务,并不关注这个子事务究竟属于哪个事务。相邻上下游指令序列之间的信息交互需要缓存机制(常见为环形队列),整个事务的吞吐速率不仅受制于最慢子事务的运行速率,而且取决于缓存容量。在微处理器中常用的“指令流水线”架构,即可视为上下游指令处理单元的单缓存异步,实现了“指令级并行”。

二、“阻塞、非阻塞”是由各指令序列之间“同步、异步”的协作关系所导致的现象和结果。“阻塞”是绝对的,“非阻塞”是相对的;对于计算机程序设计而言,当然“阻塞”程度越小越好。对于某一指令序列而言,“同步必阻塞”,“异步”可实现“相对非阻塞”,其“非阻塞”程度取决于上下游指令序列的运行速率,以及缓存空间大小等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值