计算机组成原理学习笔记——直接内存访问

499 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

直接内存访问

直接内存访问(Direct Memory Access)技术,就是在和内存或I/O设备传输数据的时候,不再通过CPU控制数据传输,而是通过DMA控制器(DMA Controller,DMAC)。这块芯片是一个协处理器,当CPU要传输数据时,只需要告诉DMAC要传输什么,从哪里来,到哪里去就可以了。

连在总线上的设备,其实可以分成两种类型,分别是主设备从设备。两者的区别就是,是否可以主动发起数据传输。比如CPU(主设备)向硬盘(从设备)写入数据,或者从硬盘读出数据。

从设备是可以主动发送控制信号的,是不同于数据内容的。从设备可以告诉主设备我这里有数据要传输,而不能主动把数据传输给主设备。

而DMAC既是主设备又是从设备。对于CPU来说它是从设备,对于硬盘这类从设备来说它是主设备。

DMAC如何工作

image.jpeg

  1. CPU向DMAC发起请求,修改DMAC寄存器里的数据。

  2. 修改的时候告诉DMAC数据从哪里来,到哪里去,一共要传输多少数据。

  3. 设置完后,DMAC变成一个空闲状态。

  4. 如果我们要把硬盘里的数据传输给内存的话,我们的硬盘会用总线之外的一条线通知DMAC有数据传输请求。

  5. 同样DMAC通过总线之外的一条线响应硬盘的请求。

  6. 硬盘请求后,DMAC完成了响应。DMAC就要通过总线向硬盘接口发起读数据请求。数据就从硬盘读到了DMAC。

  7. DMAC拿到数据之后,就会通过总线向内存发起写数据的请求。把数据写到内存里面。

  8. DMAC会不断重复6、7步,直到完成CPU要求传输的数据长度。

  9. 完成数据传输之后,DMAC又会回到空闲状态。

如今数据传输越来越复杂,各个设备里都有自己的DMAC了。