15、直接内存访问(DMA)控制器详解

直接内存访问(DMA)控制器详解

1. 直接内存访问概述

直接内存访问(DMA)是一种特殊的数据传输方式,它允许数据在 I/O 设备和主内存之间直接传输,而无需 CPU 的干预。现代 DMA 控制器还支持内存到内存的 DMA 传输,这使得两个内存区域之间的数据传输更加高效。例如,在大多数现代计算机系统中,C 库函数 memcpy() 就是使用 DMA 传输来实现的。

1.1 DMA 控制器的基本原理

每个 DMA 传输至少由 DMA 控制器的两个内部寄存器驱动:地址寄存器和计数寄存器。DMA 通道是外围设备和 DMA 控制器之间的一对控制信号,包括 DMA 请求(DREQ)和 DMA 确认(DACK)。

1.2 “Fly-by” 和 “Fly-through” DMA

  • “Fly-by” DMA :数据在 I/O 设备和内存之间传输时不经过 DMA 控制器,只需指定内存地址,DACK 信号选择外围设备,完成一次 DMA 传输只需一次内存事务,速度较快,但无法实现内存到内存的 DMA 传输。
  • “Fly-through” DMA :需要指定源地址和目标地址,数据流经 DMA 控制器,控制器有一个 FIFO 缓冲区来临时存储数据。它先将源地址放到地址总线上,从源读取数据到内部 FIFO,再将目标地址放到地址总线上,将 FIFO 中的数据写入目标。完成一次 DMA 传输需要两次内存事务,但可以实现内存到内存的 DMA 传输。

2. 英特尔 8237A DMA 控制器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值