【SoC基础】DMA的工作原理

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处

文章目录

  • DMA的诞生背景
  • DMA最早是哪家公司发明的?
  • DMA工作过程


DMA的诞生背景

DMA(Direct Memory Access,直接内存访问)的概念和技术是在计算机发展的早期阶段产生的。它的发明可以追溯到上世纪70年代。
在早期的计算机系统中,数据的传输通常是通过CPU介入进行的。当外部设备(如硬盘、网络接口等)需要将数据传输到内存或从内存读取数据时,CPU需要花费大量的时间和资源来处理这些操作。这导致了系统性能的瓶颈,尤其是对于需要高速数据传输的应用。
为了解决这个问题,研究人员开始尝试设计一种机制,使外部设备能够直接和内存进行数据传输,而不需要CPU的干预。这就是DMA技术的核心思想。
🙉 IBM是最早引入DMA的计算机制造商之一。1970年,IBM发布了IBM System/370系列计算机,其中一些机型引入了DMA技术,实现了高速数据传输。随着时间的推移,DMA技术逐渐在其他计算机系统中得到广泛采用。
🙉DMA的发明和发展使得数据传输可以在CPU的控制下进行,从而显著提高了系统的性能和效率。它为高速数据传输提供了重要的基础,使得计算机能够更好地处理需要大量数据处理的任务。在今天的计算机系统中,DMA技术仍然扮演着重要的角色。

在这里插入图片描述
在这里插入图片描述

DMA最早是哪家公司发明的?

DMA(Direct Memory Access,直接内存访问)的概念和技术最早由英特尔(Intel)公司在上世纪70年代初发明和推广。
在1970年代初,英特尔开发了一系列微处理器,其中包括8080和8086等型号。随着计算机系统的发展,数据传输的效率成为一个重要问题。为了解决这个问题,英特尔的工程师们引入了DMA技术,以实现外设设备和内存之间的直接数据传输,减轻了CPU的负担。
1975年,英特尔推出了一款名为8257的芯片,即DMA Controller(DMA控制器),用于实现DMA功能。这是英特尔在商业市场上首次推出的DMA解决方案。随后,英特尔继续在后续的处理器和芯片组中加入了对DMA技术的支持,使其成为计算机系统中的标准功能。
英特尔的DMA技术对于计算机系统的发展具有重要意义,它提高了数据传输效率,降低了CPU的负担,使系统能够更好地处理需要高速数据传输的任务。到今天,DMA技术仍然是现代计算机体系结构的重要组成部分,并被广泛应用于各种计算设备和领域。

DMA工作过程

DMA(Direct Memory Access,直接内存访问)是一种数据传输技术,其工作过程如下:
1. 配置DMA:首先,CPU通过访问DMA控制器的配置寄存器来设置DMA传输的相关参数,包括传输方向(读取或写入)、数据长度、源设备地址和目标内存地址等。
2. 外设设备请求:当外设设备需要进行数据传输时,它发送一个DMA请求信号给DMA控制器。DMA请求信号可以是硬件触发的,例如外设完成一次数据读取或写入操作后触发;也可以通过软件控制,通过编程触发DMA请求信号。
3. DMA控制权转移:DMA控制器接收到DMA请求信号后,它会获取对总线的控制权,暂时剥夺CPU对总线的访问权限。DMA控制器会代表外设设备和内存进行数据传输,并控制总线的访问。
4. 内存地址传输:DMA控制器通过源设备地址寄存器和目标内存地址寄存器来确定数据传输的起始位置和目标位置。它会使用内存地址来读取或写入数据。
5. 数据传输:DMA控制器根据配置的参数进行数据传输。它可以按字节、字、块等单位进行数据传输。数据可以从外设设备读取到内存,或者从内存写入到外设设备。DMA控制器可以通过主存储器和外设设备之间的直接内存访问来传输数据,而无需CPU的干预。
6. DMA传输完成中断:当DMA传输完成后,DMA控制器可以生成一个中断信号,通知CPU传输已经完成。CPU可以通过处理该中断信号来进行后续操作,例如处理数据或更新状态。
通过使用DMA技术,外设设备能够直接与内存进行数据交换,大大减轻了CPU的负担,并提高了数据传输的速度和效率。DMA在各种应用中被广泛使用,特别适用于高速数据传输、大量数据处理和实时数据流等场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/134812.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PTA_乙级_1086

#include <iostream> #include<string> #include<algorithm> using namespace std;int reverseNum(int n){//将数字n转为字符串string nStrto_string(n);//翻转字符串reverse(nStr.begin(),nStr.end());//转为数字int resstoi(nStr);return res; }int main()…

Python 潮流周刊#26:requests3 的现状

△点击上方“Python猫”关注 &#xff0c;回复“1”领取电子书 你好&#xff0c;我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容&#xff0c;大部分为英文。本周刊开源&#xff0c;欢迎投稿[1]。另有电报频道[2]作为副刊&#xff0c;补充发布更加丰富的资讯。 &#…

【LeetCode刷题-二分查找】--69.x的平方根

69.x的平方根 class Solution {public int mySqrt(int x) {int l 0,r x ,ans -1;while(l < r){int mid (r - l)/2 l;if((long)mid * mid <x){ans mid;l mid 1;}else{r mid - 1;}}return ans;} }

云原生微服务架构及实现技术

云原生是一种技术理念和架构方法&#xff0c;它充分利用云计算的优势&#xff0c;将应用程序和基础设施进行优化&#xff0c;以适应云环境的特性。云原生的设计原则主要包括弹性、韧性、安全性、可观测性、灰度等&#xff0c;旨在让企业在云环境中实现轻量、敏捷、高度自动化的…

webpack提升构建速度

目录 配置优化减少 resolve 的解析把 loader 应用的文件范围缩小减少 plugin 的消耗选择合适的 devtool 使用工具thread-loaderDLLPlugin 流程优化拆分构建步骤拆分项目代码 版本更新总结 前端项目随着时间推移和业务发展&#xff0c;页面可能会越来越多&#xff0c;或者功能和…

简单描述下微信小程序的相关文件类型以及微信小程序和uniapp的区别?

前言 微信小程序是一种基于微信平台的轻量级应用&#xff0c;其文件类型涵盖了不同用途的文件。了解这些文件类型能帮助开发者更好地构建小程序。 微信小程序是微信平台上的一种轻量级应用程序&#xff0c;为用户提供了一种便捷的方式来在微信生态系统内进行各种操作和获取服务…

MYSQL索引+常见的锁

一)联合索引: 1)定义:是给一张表上面的多个列增加索引&#xff0c;也就是说给表上面的多个列增加索引&#xff0c;供快速查询使用&#xff0c;当两个列的组合是唯一值时&#xff0c;联合索引是个不错的选择 联合索引和单个索引对比来讲&#xff0c;联合索引的所有索引项都会出现…

【左程云算法全讲7】二叉树基础

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于左程云算法课程进行的&#xff0c;每个知识点的修正和深入主要参考…

LeetCode(7)买卖股票的最佳时机【数组/字符串】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 121. 买卖股票的最佳时机 1.题目 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票…

Shell编程入门--概念、特性、bash配置文件

目录 一、Shell概念1.定义2.分类和使用场景2.1.分类和切换2.2.使用场景 3.特性3.1.文件描述符与输出重定向3.2.历史命令---history3.3.别名 --alias3.4.命令排序执行3.5.部分快捷键3.6.通配符置换 4.脚本规范5.脚本运行方式5.1.bash脚本执行5.2.bash脚本测试 二、bash配置文件1…

抢占全球30%碳化硅市场份额!英飞凌押注低碳化和数字化“新时代”

“未来十年将是低碳化和数字化‘双轮驱动’发展的时代。” 英飞凌科技全球高级副总裁及大中华区总裁、英飞凌科技大中华区电源与传感系统事业部负责人潘大伟在英飞凌2023年大中华区生态创新峰会上表示。 当前&#xff0c;“数字化低碳化”新趋势正在席卷和重塑着未来世界的千行…

【MySQL】初识数据库

目录 1.概念2.基本使用显示当前的数据库列表创建数据库使用数据库创建表向表中插入数据查看创建的表中的数据 3.SQL的分类4.存储引擎 1.概念 MySQL本质是基于C(mysql)S(mysqld)模式的一种网络服务。 mysqld&#xff1a;它是数据库的服务器端&#xff08;这是一个守护进程&…

SpringBoot代码生成器mapper model

Spring Boot 是一个由 Pivotal 团队提供的全新框架&#xff0c;设计目的是简化新 Spring 应用的初始搭建和开发过程。它采用特定的配置方式&#xff0c;使开发人员能够快速上手并构建基于 Spring 的应用程序。Spring Boot 提供了一套默认配置&#xff0c;包括 Spring、Spring M…

Mathtype公式自动转Word自带公式

Mathtype公式自动转Word自带公式 前言/word技巧探索过程参考资料&#xff08;有效与无效&#xff09;全自动方案/代码/教程 前言/word技巧 word公式 用ALT号可以输入简单latex显示公式&#xff1b;复杂度&#xff0c;需要引入latex包的不行&#xff1b;显示不出来的话按一下en…

C++ PCL点云配准源码实例

程序示例精选 C PCL点云配准源码实例 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《C PCL点云配准源码实例》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与应用…

MATLAB中plot函数用法

目录 语法 说明 向量和矩阵数据 表数据 其他选项 示例 创建线图 绘制多个线条 根据矩阵创建线图 指定线型 指定线型、颜色和标记 在特定的数据点显示标记 指定线宽、标记大小和标记颜色 添加标题和轴标签 绘制持续时间并指定刻度格式 基于表绘制坐标 在一个轴…

vue,react虚拟dom

Virtual DOM 前言 在传统的Web开发中&#xff0c;直接操作真实的DOM通常是一个昂贵且低效的操作。为了解决这个问题&#xff0c;Virtual DOM&#xff08;虚拟DOM&#xff09;被引入为一个中间层&#xff0c;允许开发者在内存中进行操作&#xff0c;从而避免频繁且不必要的真实D…

MATLAB中Arrow 属性说明

目录 颜色和样式 位置 Arrow 属性是箭头的外观和行为。 Arrow 属性控制 Arrow 对象的外观和行为。通过更改属性值&#xff0c;可以修改箭头的特定方面。使用圆点表示法查询和设置属性。 ar annotation("arrow"); c ar.Color; ar.Color "red"; 颜色和…

下一批就是外包机器视觉公司兄弟们,机器视觉兄弟们可能还不知道,日结,灵活就业的兄弟们正在连夜找工作!

下一批就是外包机器视觉公司兄弟们&#xff0c;机器视觉兄弟们可能还不知道&#xff0c;日结&#xff0c;灵活就业的兄弟们正在连夜找工作&#xff01; 怀念十多年前打工的时候&#xff0c;那个人人脸上都有笑容&#xff0c;充满活力&#xff0c;充满希望的年代。 日结的机器视…

【教3妹学编程-算法题】Range 模块

3妹&#xff1a;哈哈哈哈哈哈哈哈 2哥 : 3妹看什么呢&#xff0c;笑的这么开森 3妹&#xff1a;2哥你快来看啊&#xff0c;成都欢乐谷的NPC模仿“唐僧”&#xff0c; 太搞笑了。 2哥 : 哦这个我也看到了&#xff0c;真的是唯妙唯肖&#xff0c;不能说像&#xff0c;只能说一模一…