您的位置:首页 > 其它

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

2017-02-11 00:00 239 查看
『阿男的工程世界』*让我们简单聊一下IO(3)*

接下来阿男给大家讲一讲
DMA
DMA
全称
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的架构设计实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐