首页 > 编程语言 >嵌入式软件异步编程:同步还是异步?

嵌入式软件异步编程:同步还是异步?

时间:2022-11-20 19:33:33浏览次数:36  
标签:异步 开销 同步 编程 SPI 嵌入式软件 CPU 时钟


异步并不总是提高效率的,那什么时候用同步,什么时候用异步呢?

mingdu.zheng at gmail dot com

异步要解决的是CPU和I/O速度差异的问题,所以异步适合I/O远慢于CPU的情况,如果I/O仅稍慢于CPU或速度相当,那么异步并不会提高效能。

采用异步模式会有进出状态机或事件调度的开销,而同步模式没有这些开销,使用轮询式同步操作I/O的额外开销几乎为0。

适合异步的情况

如果CPU比I/O快两个数量级以上,那么异步比同步更好。比如某个系统CPU是100MHz,有个10MHz的SPI设备,假设SPI设备以字(16bit)为单位收发数据,那么每收发一个字大约需要160个CPU时钟,这种情况下,使用异步更佳。160个时钟中或许有60个被用在进出状态机或事件调度的开销中,多出来的100个时钟可以去做其它事情或者休眠以节约电能。

适合同步的情况

如果CPU仅比I/O快一个数量级,那么同步比异步更好。比如某个系统CPU是50MHz,有个50MHz的SPI设备,假设SPI设备以字节为单位收发数据,那么每收发一个字节大约需要8个CPU时钟,8个时钟还不够进出一个函数呢,这种情况下,使用同步更佳。如果使用异步模式,那么进出状态机的开销假设是60个时钟的话,那么异步模式反而比同步模式消耗了更多的时钟。

模棱两可的情况

如果CPU和I/O的速度比在一个数量级和两个数量级之间,那么使用同步或异步,其效果都差不多。如果一定要一决雌雄的话,就要分析异步模式引入了多少额外的开销,以及每个I/O请求占用多少时钟。还是扔硬币吧。

硬件加速器

硬件加速器可以批量处理I/O,CPU仅需要按批次处理,而不是按字节处理,DMA就是一种典型的硬件加速器。比如某个系统CPU是50MHz,有个50MHz的SPI设备,假设SPI设备借助DMA每次收发20字节,那么一次I/O请求需要160个时钟。DMA进一步扩大了CPU和I/O请求的速度差,把原先适合用同步方式操作的I/O变成了适合异步方式的I/O。还有一种硬件加速器是FIFO,借助FIFO可以一次操作多个数据。

总结

总而言之,同步还是异步并不绝对,要看哪个能节省更多的时钟。


标签:异步,开销,同步,编程,SPI,嵌入式软件,CPU,时钟
From: https://blog.51cto.com/zoomdy/5871671

相关文章

  • 并发编程理论和进程理论
    目录一、并发编程理论操作系统发展史1、手工操作——穿孔卡片2、批处理——磁带存储1.联机批处理系统2.脱机批处理系统二、多道程序设计技术单道技术多道技术多道技术......
  • socket模块实现网络编程及struct模块解决黏包问题
    目录一、socket模块1、简介2、基于文件类型的套接字家族3、基于网络类型的套接字家族二、socket代码简介三、socket代码优化1.聊天内容自定义2.让聊天循环起来3.用户输入的......
  • 十大排序算法的各种编程语言的实现
    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排......
  • 并发编程 2 进程
    同步与异步#用来表达任务的提交方式同步:提交完任务之后原地等待任务的返回结果,期间不做任何事异步:提交完任务之后不愿地等待任务的返回结果,直接去做其他事,有......
  • 【I/O模型】异步IO的原理和使用
    为什么要有异步I/O异步IO相比同步IO不会阻塞当前程序的执行,可以继续向下执行。即当应用程序发起一个IO操作后,调用者不会立刻得到结果,而是在内核完成IO操作后,通过信号或回......
  • 《Unix/Linuv系统编程》第十四章学习笔记
    第14章MYSQL数据库系统MYSQL简介1.MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB......
  • 异步查询工具 axios
    异步查询数据,自然是通过ajax查询,大家首先想起的肯定是jQuery。但jQuery与MVVM的思想不吻合,而且ajax只是jQuery的一小部分。因此不可能为了发起ajax请求而......
  • 《Unix/Linux系统编程》第十二周学习笔记
    《Unix/Linux系统编程》第十二周学习笔记MySQL数据库简介MySQL是一个关系型数据库管理系统,是最流行的关系型数据库管理系统之一。在WEB应用方面,MySQL是最好的RDBMS......
  • 贪心算法-构造哈夫曼数及生成哈夫曼编码,编程实现
    哈夫曼树1.概念:给定n个权值最为n个叶子的节点,构建成一颗二叉树。如果次树的带权路径长度最小,则称此二叉树为最优二叉树,也叫哈夫曼树。WLP:带权路径长度公式:Wk:第......
  • 网络编程知识回顾
    软件开发架构C/S架构客户端与服务端作为服务端必备的条件; 24小时不间断提供服务 固定的IP地址 能够同时服务多个人 B/S架构网页端与服务器端两个架构的优劣......