• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

计算较大的场合,数据经过DMA到内存和直接寄存器存储运算优劣

zhjb1 2017-12-25 浏览量:856
问题如题:在较大计算量的情况下,可以采用先将数据从IO口读取听过DMA传送到内存中,而后通过内存计算存储结果;也可以采用将IO数据读入寄存器直接计算存储中间结果,最后由寄存器综合结果。两种方式的速度快慢——如果是实时计算的比较;如果是非实时计算——系统资源占用和功耗比较,各自的优劣性。谢谢
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:9
  • 稍微详细探讨一下:

    对于你说说的2和3,分成2种情况

    一、计算速度能满足数据采集周期间隔要求

    二、计算速度不能满足实时数据采集间隔要求(这时你们需要定义对这些过多数据如何处理,下面不再讨论)


    对于一、其实又分为至少2种情况

    1、 可直接调用寄存器数量满足数据存储需要

    2、 不寄存器数量不满足需要,这样肯定是先存内存啦


    对于1,还要分析是否有途径满足直接IO数据放置到寄存器中,即使能,可能编程复杂度也会比较高,当然为了极致的速度,开发难度是可以克服的。

电子老工程师 回复了 :以下规格书文件 回复

  • 使用DMA会极大的减轻CPU负担。使用DMA读取数据到内存,读取过程中不影响CPU处理其他程序,读取结束使用中断或者信号量通过任务处理数据。

    如果使用IO方式,并且不使用实时系统,那么IO读取大量数据会影响其他功能的实时性。

    如果使用IO方式,且使用实时系统,那么IO读取大量数据可能是一个单独的任务(其他功能的实时性也许可以保证),也会导致系统调度的开销。

    总结一下,还是使用DMA好一些。

电子老工程师 回复了 :见衔接型号对应的封装https://so.szlcsc.com/global.html?k=FQT5P10&hot-key= 回复

  • 实时的话,还是不要用DMA了,直接处理数据。

    如果实时性要求不高,可以使用DMA,收到一部分数据后再处理

电子老工程师 回复了 :引脚数量不同,分别是16与24 回复

  • DMA主要是节省CPU资源的,实时性没有优势。

  • 你所谓的大运算量是数据多,还是运算的步骤多,还是......

    不过基本上都是先把涉及的数据读入内存中计算比较好,因为IO口读数据是一个比较慢的操作,和普通运算来说是数量级的差别。如果能一次性预先读入内存,使用时会方便很多。

电子老工程师 回复了 :这个型号前台货是最多的,其他型号货都没有这个货多 回复
电子老工程师 回复了 :C3216C0G2A683J160AC TDK 回复

  • 本人的数据量大分3种情况:1. 针对获取的图像信号的处理——非常适合在内存中处理;2. 实时采集的并行数据;3. 定时间点促发得到的数据。这里问的是后两种情况,对实时性要求较高。谢谢

电子老工程师 回复了 :https://www.peigenesis.com/en/shop/part-information/MS3471L1210S/DEU/EACH/644049.html 回复

  • 建议使用DMA,就当它是个搬运工好了
电子老工程师 回复了 :代表符合车规级的引用温度。 回复

  • 使用DMA会减少CPU在其他处理上的消耗,建议使用DMA.
电子老工程师 回复了 :是同一物料,PCF85176T是系列号, 回复

  • 实时性强的情况下建议用寄存器,寄存器存取速度较快
电子老工程师 回复了 :型号错误,请确认。 回复

相关问题

问题达人换一批

计算较大的场合,数据经过DMA到内存和直接寄存器存储运算优劣