- DMA 传输的收尾:
当 DMA 控制器(DMAC)完成数据块的传输后,会主动撤销向 CPU 发出的总线请求信号(HOLD 置为无效)。CPU 检测到 HOLD 无效后,也会撤销总线响应信号 HLDA,从而重新获得对系统总线的控制权,恢复被中断前的任务执行。整个 DMA 传输过程中,CPU 仅在开始阶段授权总线使用权,之后不再参与数据搬运,显著提升了系统效率。
核心特点:DMA 实现“透明”数据传输,即全程无需 CPU 执行指令干预,由 DMAC 直接控制总线完成外设与内存之间的高速数据交换。
总线占用方式主要包括:
- CPU 停止法:强制 CPU 在 DMA 期间释放总线,适用于突发大量数据传输;
- 周期挪用(或称周期窃取):DMA 利用 CPU 不使用总线的空闲周期进行传输,不影响 CPU 正常运行;
- 分时总线控制:CPU 与 DMAC 按时间片轮流使用总线,实现资源共享。
- 输入/输出处理机(IOP):
IOP 是一种专用处理器,专门负责管理 I/O 设备和主存之间的数据传输,减轻 CPU 的负担。它能执行简单的 I/O 指令流,实现数据预处理、缓冲管理和协议转换等功能。相比普通 DMA,IOP 具备更强的程序控制能力。
进一步发展为外围处理机(PPU),其功能更接近完整 CPU,可独立运行复杂 I/O 程序,支持多台并行工作,广泛用于高性能计算、通信网关和实时系统中。某些大型系统通过 PPU 构建分布式架构,形成主 CPU 与多个 IOP 协同工作的多机系统。
- 总线结构:
总线是计算机内部各部件之间传送信息的公共通路,具有共享性和标准性。微机中的主要三类总线包括:
- 数据总线(Data Bus, DB):双向传输数据,宽度(如 8 位、16 位、64 位)直接影响 CPU 与内存/外设间一次可传输的数据量;
- 地址总线(Address Bus):单向传输地址信号,宽度决定系统最大寻址空间(如 20 位地址可寻址 1MB);
- 控制总线(Control Bus):传输各类控制信号(如读写命令、中断请求、DMA 请求等),方向多样,确保协调操作。
现代计算机常采用多层次总线结构(如前端总线、PCIe、USB 等),以满足不同速度设备的需求。
DMA 控制器通过外设发出的就绪信号(如“准备好”/Ready、“数据可用”/Data Valid 或“选通”信号)来判断其是否已准备好进行数据传输。具体机制如下:
-
硬件握手信号:
外设与 DMA 控制器之间通常设有专用的控制信号线,例如:- DREQ(DMA Request):外设向 DMAC 发出请求,表示有数据需要传输;
- DACK(DMA Acknowledge):DMAC 响应外设,表示已接管总线并准备就绪;
- 在每次数据传输前,外设必须置位 DREQ;DMAC 检测到该信号后启动传输,并发送 DACK 予以确认。
-
状态查询机制(可选):
某些系统中,DMAC 可通过读取外设的状态寄存器(经由数据总线)来检查其是否准备好。这种方式多用于较复杂的 I/O 控制器(如硬盘控制器),其中 DMA 传输由设备驱动程序初始化,设备在准备就绪后触发中断或更新状态位。 -
响应中断或同步信号:
对于高速同步设备(如音频 ADC/DAC),常使用固定时钟节拍进行数据采样和传输,DMAC 根据定时器触发或周期性同步信号自动进行数据搬运,无需频繁检测状态。
综上,DMA 控制器主要依赖硬件级别的握手协议来确保在外设真正准备好时才开始数据传输,从而避免数据丢失或总线冲突。


612

被折叠的 条评论
为什么被折叠?



