1. MEM可以是:
  • MCU/CPU自带的内存:

    容量由“芯片设计师”根据常用场景统计确定大小。

    常能满足大多数用途。

  • MCU/CPU的外部内存:

    容量由“硬件设计师”根据需要确定。

    在设计电路阶段,为MCU/CPU增加的外围物理“大内存”,

    安放布设在MCU/CPU的周围, 直连其高速总线, 可满足硬件特定需求。

  • MCU/CPU的可扩展外存:

    容量由“终端用户”自由扩展。

    在设计电路阶段,要为MCU/CPU增加通用的“硬件接口 或,扩展槽”, 常用的有SD卡槽、U盘接口。

    直连MCU/CPU高速总线, 可满足“购买设备”的终端用户自由扩展外部存储容量的需求。

  1. DMA常用于大量数据的读写;
  • 少量数据, 要调用MCU/CPU指令,实现上是“'register'转发”方式存取MEM(内存)。

    常常数据只是8bit、16bit, 32bit, 64bit, 128bit, 256bit, 根据MCU/CPU的Datasheet确定。

    CPU(汇编)指令上,每一笔“小数据”要两步完成:

    • 首先, 将MEM地址的数据读入register, 这是一条MCU/CPU指令。
    • 其次, 其他“电路单元”读写register内容, 另一条MCU/CPU指令.
  • 大量数据时, 先进MCU/CPU的DMA(Direct Memory Access)方式:

    • 开始时, 由CPU总线协调好“配对”, 并保存一条“DMA记录”

      每条“DMA记录”要有{"收"设备ID及其起始地址, "发"设备ID及其起始地址,数据大小};
    • 传数时, DMA(分block块方式):
      • 分“大块”传,一次传"一大块"(常有KB或MB为单位的大小), 直到传完;
      • 不占用CPU执行指令。
    • 结束时, 触发"硬件中断", 通知MCU/CPU已传完, 并由其解除“配对”并清除对应的"DMA记录"

    避免拆分为一笔笔“小数据收发”的方式,是因为:

    • MCU/CPU将一直被占用执行两条汇编指令。
    • 每一笔“小数据”都经过MCU/CPU(的register)转发, 传输路径上绕不必要的弯路。
  1. DMA的条件:
  • 首先数据的“收方”、“发方”与MCU/CPU, 都要有DMA功能.

    例如, 收方是ADC( MCU/CPU自带的或其高速总线外接的), 总之此ADC的Datasheet上要有DMA功能。

    发方是“终端用户”外插在可扩展槽的SD卡存储, 则此SD卡槽连接的MCU/CPU高速总线要有DMA功能;

SciTech-EECS-MCU/CPU: DMA(直接内存访问): 开始时由CPU进行协调配对+传数据时DMA+结束时触发硬件中断通知MCU/CPU并解除配对的更多相关文章

  1. Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity) 转

    硬件中断发生频繁,是件很消耗 CPU 资源的事情,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同的 CPU (core) 处理显然能很好的平衡性能.现在的服务器上动不动就是多 CPU 多核. ...

  2. 直接内存访问(DMA)

    1. 什么是DMA 直接内存访问是一种硬件机制,它允许外围设备和主内存之间直接传输它们的I/O数据,而不需要系统处理器的参与.使用这种机制可以大大提高与设备通信的吞吐量.   2. DMA数据传输 有 ...

  3. (转)CPU Cache与内存对齐

    转自:http://blog.csdn.net/zhang_shuai_2011/article/details/38119657 原文如下: 一. CacheCache一般来说,需要关心以下几个方面 ...

  4. DMA(direct memory access)直接内存访问

    DMA(Direct Memory Access),这里的 memory,指的是计算机的内存,自然与外存(storage)相对.这里的关键词在 Direct (直接),与传统的相对低效的,需要通过 C ...

  5. 多线程编程,CPU是如何解决多线程内存访问问题的

    CPU对内存变量的修改是先读取内存数据到CPU Cache中,然后再由CPU做运算,运算完成后继续写入到内存中 在单核CPU中,这完全没有问题,然而在多核CPU中,每一个CPU核心都拥有自己独立的Ca ...

  6. Memory Ordering (注意Cache带来的副作用,每个CPU都有自己的Cache,内存读写不再一定需要真的作内存访问)

    Memory Ordering   Background 很久很久很久以前,CPU忠厚老实,一条一条指令的执行我们给它的程序,规规矩矩的进行计算和内存的存取. 很久很久以前, CPU学会了Out-Of ...

  7. DMA直接内存存取20160525

    说一下工作中接触到的DMA1)在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题.即DMA传输前,CPU要把 总线控制权交给DMA控制器,而在结束DMA传输后,DMA ...

  8. DMA (直接存储器访问)

    DMA (直接存储器访问) 编辑 DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载.否 ...

  9. Buffer Data RDMA 零拷贝 直接内存访问

    waylau/netty-4-user-guide: Chinese translation of Netty 4.x User Guide. 中文翻译<Netty 4.x 用户指南> h ...

  10. GNU C - 关于8086的内存访问机制以及内存对齐(memory alignment)

    一.为什么需要内存对齐? 无论做什么事情,我都习惯性的问自己:为什么我要去做这件事情? 是啊,这可能也是个大家都会去想的问题, 因为我们都不能稀里糊涂的或者.那为什么需要内存对齐呢?这要从cpu的内存 ...

随机推荐

  1. Maven依赖冲突解决方案:调解规则与工具实践

    结论先行 Maven解决依赖冲突的核心机制是 依赖调解 和 显式排除 ,并通过插件(如maven-dependency-plugin.maven-enforcer-plugin和Maven Helpe ...

  2. Map延伸工具类之“根据value值得到map的key值”“根据value值得到map的keys值”

    Map延伸工具类 /** * 集合类型转换 * */ public class CollectionUtil { /** * 根据value值得到map的key值 * @author wzw * * ...

  3. GIM: 调用AI自动生成git提交消息的工具

    GIM - Git Intelligence Message,是根据文件变更内容,自动请求用户配置的AI服务,生成提交消息的工具. 代码托管地址 https://github.com/davelet/ ...

  4. Java进阶知识点:接口幂等性

    幂等概念    在计算机中,表示对同一个过程应用相同的参数多次和应用一次产生的效果是一样,这样的过程即被称为满足幂等性.    也可以进行如下表述:一个HTTP请求方法,如果被请求多次和被请求一次效果 ...

  5. CF contest 1935 Round 932 (Div. 2) A-D题解

    Codeforces Round 932 (Div. 2) A-D题解 Codeforces Round 932 (Div. 2) 绪言 很菜,AB速度慢,卡在C,想DP,但是时间优化不下来,说服自己 ...

  6. 洛谷 P3792 由乃与大母神原型和偶像崇拜

    洛谷 P3792 由乃与大母神原型和偶像崇拜 Problem 糖果屋的故事讲的就是韩赛尔和格雷特被继母赶出家里,因为没饭吃了,然后进了森林发现了一个糖果屋,里面有个女巫,专门吃小孩子 然而如果我们仔细 ...

  7. python爬虫学习——bs4

    bs4 将一个复杂的html文档转化为一个复杂的树形结构,每个节点都是python对象,所有对象可以分为四种:Tag.NavigableString.BeautifulSoup.Comment fro ...

  8. 阿里微服务解决方案-Alibaba Cloud之服务提供方搭建(二)

    一.新建服务提供方模块 1.1 右键父工程 New-> Module 1.2 选择 Maven项目,然后 Next 1.3 指定父工程,并且子模块以端口号结尾,方便调试 1.4 因为父工程已经添 ...

  9. ChatGPT学习之旅 (4) Prompt花式用法

    大家好,我是Edison. 上一篇:Prompt进阶用法 AI时代的处世法则,能动口,尽量不动手!今天,我们再了解一些Prompt的花式用法,让GPT更懂你! 先试探,再深入 很多时候,欲速则不达,慢 ...

  10. MySQL核心知识学习之路(6)

    作为一个后端工程师,想必没有人没用过数据库,跟我一起复习一下MySQL吧,本文是我学习<MySQL实战45讲>的总结笔记的第六篇,总结了MySQL的InnoDB引擎相关的实践使用问题. 上 ...