『阿男的工程世界』*让我们简单聊一下IO(3)*
2017-02-11 00:00
239 查看
『阿男的工程世界』*让我们简单聊一下IO(3)*
接下来阿男给大家讲一讲
早期的计算机设计下,硬件如果要使用内存里面的数据,CPU要负责这些内存的操作:把内存的数据传给硬件设备,把硬件设备的数据写入内存。这些操作要占用CPU的时钟周期,因为是CPU执行指令。
最要命是,有的硬件速度很慢,这样的话CPU执行内存操作指令的时候,就需要等着这个硬件设备。要知道CPU的时间是非常宝贵的,因为CPU还要处理其他硬件设备发过来的信号,也就是
为了优化这块的性能,就产生了
我们看到了
现在我们的计算机主流是
所以说
为什么要强调CPU管控?因为操作系统的安全性,依赖于操作系统可以控制程序和硬件能访问内存的什么部分什么内容,而操作系统的实现依赖CPU的架构设计实现。
接下来阿男给大家讲一讲
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的架构设计实现。
相关文章推荐
- 『阿男的工程世界』*让我们简单聊一下IO(4)*
- 『阿男的工程世界』*让我们简单聊一下IO(01)*
- 『阿男的工程世界』*让我们简单聊一下IO(2)*
- 好久没更新博客了,今天给大家分享一下Android中的资源与国际化的问题,通常我们新建一个Android工程,目录结构如下图所示: 我们主要看一下layout与values目录,layou
- 复杂的世界,我们简单地活着
- C语言三字棋游戏先简单介绍一下三子棋的规则,方便我们接下来的编程和理解。规则如下: 在九宫格棋盘上,只要将自己的三个棋子走成一条线(横、竖、对角线),对方就算输了。
- 简单的,独立却互联的东西 【思考一下我们想看什么网站,他们要做什么网站】
- 从一个简单的示例,我们开始进入Mybatis的世界!
- 简单点儿、简单点儿、再简单点儿,其实世界可以不是我们想象的那么复杂
- 我们的游戏世界(背包【仓库】,交易,任务,简单经济系统,装备)实现(基于仙剑demo聊聊游戏世界)第三篇谈谈装备
- 我们的游戏世界(背包【仓库】,交易,任务,简单经济系统,装备)实现(基于仙剑demo聊聊游戏世界)第二篇谈谈任务
- 世界是复杂的,但我们却总是倾向于用最简单的方式去思考它。
- 『阿男的工程世界』*04 ldd,objdump与patchelf*
- 简单点儿、简单点儿、再简单点儿,其实世界可以不是我们想象的那么复杂
- 我们的游戏世界(背包【仓库】,交易,任务,简单经济系统,装备)实现(基于仙剑demo聊聊游戏世界)第一篇谈谈交易
- kindeditor本身支持上传flash功能,但是我们经常需要上传一些flv、mp4或则其它格式的视频。 其实具体的播放功能是通过jwplayer实现的。我只对kindeditor简单的修改了一下
- 创建一个Storyboard工程 storyboard是在ios5中引入的新控件,能够更加清晰、简单的整合多个ViewController的关系,下面主要介绍一下怎么初建一个storyboard的工程
- 『阿男的工程世界』*03 POSIX AIO vs. Native AIO*
- 简单点儿、简单点儿、再简单点儿,其实世界可以不是我们想象的那么复杂
- Ext.Net控件,简单案例1,让我们从Hello World开始,走进Ext.Net控件的世界!。