编程基础-第1天

作者:axiqia
链接:https://www.zhihu.com/question/31274481/answer/179151672
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在比较DMA和Channel I/O之前,我们不妨回顾一下IO数据传输的四种方式,循环IO测试、程序中断IO、DMA方式和通道方式。

循环IO测试:计算机的IO测试指令通过轮询的方式,检测IO设备的忙/闲标志,决定主存和外设之间是或否传出一个字或者一个字符。在这种情况下,CPU的大量时间在等待输入、输出的循环检测上,使计算机不能充分发挥效率,外设也得不到合理的使用,整个系统效率低下。

程序中断:IO设备的控制器逐个比特的从设备中读取一块数据放入设备的内部缓冲区中,然后,计算该块数据的校验和,以保证读取的正确性,接着,设备控制器发出中断信号,操作系统开始逐个字节地从缓冲区中数据读入内存。中断机制的引入,使得外围设备有了反映自身状态的能力,仅当IO操作正常或者异常结束时才中断CPU,从而实现了一定程度的并行。但是,IO操作毕竟是由CPU控制的,此时每传输一个字或字符,往往就要中断一次。当IO设备很多时,CPU可能完全陷入处理IO中断中。

DMA方式:在内存和IO设备之间直接进行数据交换,不需要CPU的干预。当需要IO数据传输时,CPU将DMA初始化,之后DMA接管总线的使用权,将所需要的数据全部读入内存后,IO设备的控制器才会发出中断。

对于以上三种方式:

都需要CPU介入:

  • 循环IO测试:完全介入
  • 程序中断:需要CPU介入,但在数据读入IO设备的缓冲区,发出中断前,CPU可以做其他事务
  • DMA:在传输开始(DMA初始化)和传输结束(中断)时介入

都需要硬件接口支持:

  • 循环IO测试:最简单的硬件
  • 程序中断:增加中断控制器
  • DMA:增加DMA

因此,这三种方式适用于外设不太多的小型机、微型机。对于IO设备数量多,输入输出频繁的系统,占用CPU时间太多,接口硬件太复杂,成本也高。

那么,什么是通道呢?

通道:能执行有限通道指令的IO控制器,代替CPU管理控制外设。通道有自己的指令系统,是一个协处理器,一般用在大型计算机系统中(不是大型机)。通道实质是一台能够执行有限的输入输出指令,并能被多台外设共享的小型DMA专用处理机。

通道解决了两个问题:

  1. 由CPU承担输入输出的工作。虽然DMA无需CPU进行外设与内存的数据交换工作,但是这只是减少了CPU的负担。因而DMA中,输入输出的初始化仍然要由CPU来完成。
  2. 大型计算机系统中高速设备共享DMA接口的问题。大型计算机系统的外设太多以至于不得不共享有限的DMA接口(小型计算机系统比如pc机中每个高速设备分配一个DMA接口)。

最后回到问题本身,通道与DMA相比:

共同点:

都能实现IO设备和内存之间建立数据直传通路;

不同点:

  1. DMA只能实现固定的数据传送控制,而通道有自己的指令和程序,具有更强的独立处理数据输入和输出的能力。
  2. DMA只能控制一台或者少数几台同类设备,而一个通道可以控制多台同类或者不同的设备

转载于:https://www.cnblogs.com/Bird-Xu/p/8176294.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值