『阿男的工程世界』*让我们简单聊一下IO(3)*

『阿男的工程世界』*让我们简单聊一下IO(3)*

接下来阿男给大家讲一讲DMADMA全称Direct Memory Access,这个是做什么用的呢?

早期的计算机设计下,硬件如果要使用内存里面的数据,CPU要负责这些内存的操作:把内存的数据传给硬件设备,把硬件设备的数据写入内存。这些操作要占用CPU的时钟周期,因为是CPU执行指令。

最要命是,有的硬件速度很慢,这样的话CPU执行内存操作指令的时候,就需要等着这个硬件设备。要知道CPU的时间是非常宝贵的,因为CPU还要处理其他硬件设备发过来的信号,也就是中断请求,等着硬件和内存的交互就太慢了。

为了优化这块的性能,就产生了Direct Memory Access的概念,就是让硬件可以直接访问内存。具体是这样的:添加一个硬件,叫做DMA Controller,就是一个芯片,然后硬件有对内存访问的需要时,就发指令给这个Controller,需要传输的数据信息也发给Controller,然后就不管了,CPU去做自己的事情,由Controller负责具体的数据传输。等数据传完以后,Controller给CPU发中断信号,告诉CPU,数据已经处理完成了,这样CPU就可以做接下来的事情。

我们看到了DMA是如何协调这里的硬件速度不一致的。阿男上面给大家说的这个架构,叫做ISA,早期的ISA架构传输速度并不是很快,而且需要专门的DMA Controller芯片。

现在我们的计算机主流是PCI架构,这个架构下,没有了DMA Controller,取而代之的叫做Memory Bus,也就是内存总线。一般是直接和北桥芯片连接,而南桥芯片要做的是跟CPU要Memory Bus的访问权,实现DMA北桥芯片现在一般做进CPU内部,南桥芯片一般还是独立的,负责和"慢速"的IO设备相连,比如USB控制器啥的。

所以说DMA就是一种让CPU无需过多介入,让硬件直接访问内存,但是是在CPU管控的条件下,访问内存。数据处理完后,CPU再介入后续的工作。

为什么要强调CPU管控?因为操作系统的安全性,依赖于操作系统可以控制程序和硬件能访问内存的什么部分什么内容,而操作系统的实现依赖CPU的架构设计实现。

转载于:https://my.oschina.net/u/3195023/blog/836076

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值