DMA(Direct Memory Access):直接内存访问
创作时间:
作者:
@小白创作中心
DMA(Direct Memory Access):直接内存访问
引用
CSDN
1.
https://blog.csdn.net/Z_oioihoii/article/details/144458482
DMA(Direct Memory Access)即直接存储器访问,是计算机体系结构中的一个重要概念。它通过内部控制器实现内存和外设之间的数据传输,使得CPU可以专注于内存数据的处理,而数据的搬运工作由DMA硬件完成。本文将从传统CPU存取数据的方式讲起,逐步介绍DMA的概念、工作原理、传输方式以及如何保证数据一致性等核心内容。
一、传统CPU存取数据
CPU不直接存取外设的原因主要有两点:
- 速度差异:CPU的处理速度远高于外设,无法直接同步。
- 格式多样性:外设数据格式种类繁多,需要转换才能被CPU处理。
传统CPU获取数据的步骤如下:
- 加载外设数据到内存:外设数据首先被加载到内存中,因为内存的速度最接近CPU。
- 检查Cache:CPU检查Cache是否有需要的数据。
- 如果命中,直接返回数据。
- 如果未命中,从内存获取数据(这里暂时不考虑MMU)。
- 返回数据:将数据返回给CPU。
二、认识DMA
1、什么是DMA
DMA(Direct Memory Access)即直接存储器访问,通过内部控制器实现内存和外设之间的数据传输。DMA的引入使得CPU可以专注于内存数据的处理,而数据的搬运工作由DMA硬件完成。
- 开始传输时刻:DMA向CPU申请总线周期的占用时间。
- 结束传输时刻:DMA向CPU发送中断请求,请求CPU处理数据。
2、DMA的工作模式、数据传输方式、寻址模式
工作模式:
- 直接模式:DMA直接从源地址到目的地址传输数据。
- FIFO模式:数据累计存储在FIFO缓冲器中,达到阈值后一次性发送。
数据传输方式:
- 单字传送:每次传输一个字或字节,传输后归还总线控制权。
- 块传送:连续占用多个总线周期进行批量传送。
寻址模式:
- 增量寻址:发送完数据后,继续发送下一个地址的数据。
- 非增量寻址:需要软件配置下一个数据的地址。
3、为什么要使用DMA
- 减轻CPU负担:将固定任务交给DMA,提高系统效率。
- 提高吞吐率:DMA具备高效操作能力,提升IO效率。
三、DMA数据传输
1、准备阶段
DMA控制器初始化:
配置DMA内存缓冲区的首地址。
配置DMA传输方向。
配置DMA交换量。
接口初始化:
I/O设备的寻址信息。
2、传输请求
3、数据传送
- DMA控制器向总线发送读/写命令,向I/O接口发响应信号,数据交互由内存和设备接口完成。
4、善后处理
- DMA控制器在传输结束时向CPU发送中断,CPU重新接管总线控制权。
四、DMA保证与内存中数据一致性方法
一、使用缓存一致性协议
- 硬件机制:如MESI协议,确保CPU缓存和内存数据一致性。
- 缓存刷新和无效操作:软件可以触发缓存操作以确保数据一致性。
二、使用同步机制
- 中断和轮询:DMA传输完成后通过中断或轮询进行数据一致性检查。
- 信号量和互斥锁:在多处理器或多线程环境中使用同步机制。
三、数据校验和错误检测
- 校验和计算:在传输前后计算校验和,确保数据完整性。
- 错误检测和纠正码(ECC):支持ECC的系统可以检测并纠正数据错误。
四、合理的内存管理和访问控制
- 内存保护:通过设置内存访问权限,限制DMA访问。
- 内存分配和释放:合理管理内存,避免数据不一致和内存泄漏。
通过以上方法,DMA可以有效地保证数据在内存中的一致性,提高系统的整体性能和可靠性。
热门推荐
皇家蓝宝石收藏指南:克什米尔的秘密
蓝宝石:从古希腊“天国圣石”到皇室珍宝
石家庄市博物馆:权威推荐的历史文化之旅
《魔道祖师》:新古风动画的崛起之路
中国平安高管换血:陈心颖离任,郭晓涛接棒医疗养老战略
中国平安:全球系统重要性保险机构的风险管理之道
北京东城深度游:故宫、天坛、王府井一网打尽!
故宫博物院:东城区必打卡历史地标
大禹治水背后的神秘宗教故事
地质学揭秘:鲧禹治水背后的超级大洪水
新电商法下的闲鱼:用户权益保护仍需加强
专家详解:冬季咳嗽如何辨证施治?八种类型各有良方
秋冬咳嗽怎么办?这份科学防治指南请收好
中华医学会推荐:如何科学应对咳嗽?
双十一闲鱼购物防坑指南:用高省APP更划算!
闲鱼网购陷阱多!如何避坑?
闲鱼上买到假海澜之家?教你几招辨别真伪!
魔家四将新造型引争议:从天神到"打工人",影视改编该如何平衡创新与传统?
黄石国家公园最美风光打卡地:猛犸泉
2017年破洞牛仔裤如何引领时尚风潮?
破洞牛仔裤引发的代际审美大战:从反主流符号到时尚单品
黄石必打卡:枫林地心大峡谷自驾游全攻略
黄石国家矿山公园:打卡亚洲第一天坑!
“百年百大考古发现”:揭秘铜绿山古铜矿遗址
年前卤肉推广方案
煮元宵:最忌沸水下锅全程大火煮到底,记住这3点,不破皮不粘锅
带娃打卡南京博物院和天文台,冬日亲子游不冷场!
冬日泡汤正当时:南京汤山温泉全攻略
元旦南京四日游打卡攻略:从钟山到夫子庙
南京冬游打卡:鸡鸣寺、朝天宫、汤山温泉,你最想去哪?