问题描述
- DMA通道是什么,请大神赐教
-
请教大神:
DMA中的通道 是什么意思,一直不理解,请赐教,感激涕零!
解决方案
直接访问数据存储器,直接数据读写,不经过cpu处理器的处理。
解决方案二:
在内存中划一块,以固定的数据格式进行数据的存取,数据格式可以自己定义,我都是在结构体中进行的定义。
解决方案三:
可以直接传送数据而不进过cpu。减少cpu负担
解决方案四:
DMA技术进行数据传送时不需要CPU的参与,也就是设备和内存直接传输数据
解决方案五:
直接数据读写,不需要内存处理
解决方案六:
不直接访问计算机的CPU,而直接在RAM与设备之间传输
解决方案七:
形象点,CPU有个小弟叫DMA控制器,在传数据时,由于不需要经过一列复杂计算,CPU交给小弟去做,CPU只给DMA发送一组指令参数,告诉小弟干什么就不管了,去处理它的事情,DMA干完了,返回一个信息给CPU。这样就加快了CPU的处理速度。DMA主要和传送数据有关,比如拷贝数据,比如从硬盘加载数据到内存,比如保存数据到硬盘。这样保证了CPU的高速处理,不会因为小数据在低速设备上开销过多CPU资源。两者是一个并行过程,CPU负责生产,DMA负责提供运输产品到集散中心,原材料从集散中心运到仓库,集散中心之间的转移,交换。仓库是内,集散中心是硬盘,U盘等。
解决方案八:
DMA(Direct Memory Access) ,即直接存储器存取,是一种快速传送数据的机制。数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存。
DMA通道是用来传输数据的。
DMA技术的重要性在于,利用它进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,并用一个适配器上的ROM(如软盘驱动控制器上的ROM)来储存程序,这些程序控制DMA传送数据。一旦控制器初始化完成,数据开始传送,DMA就可以脱离CPU,独立完成数据传送。 在DMA传送开始的短暂时间内,基本上有两个处理器为它工作,一个执行程序代码,一个传送数据。利用DMA传送数据的另一个好处是,数据直接在源地址和目的地址之间传送,不需要中间媒介。 对于每一次写操作,DMA控制器都控制地址总线,通知应将数据写到哪段内存中去。 DMA控制数据从内存传送到适配卡的方法与上面类似。对每一个要传送的单位数据,DMA控制器激活读内存和I/O写操作的总线。内存地址被放到地址总线上,像从适配卡到内存传送数据一样,以数据总线为通道,数据从源地址直接传送到目的地址。 DMA从DMA请求线(DREQ)上接收DMA请求,正像中断控制器从中断请求线(IRQ)上接收中断请求一样。 一个典型的从适配卡到内存的数据传送是这样进行的,首先,对DMA控制器编程,写入数据要到达的内存地址和要传送的字节数。适配器可以开始传送数据时,它将激活DREQ线,与DMA控制器连通。DMA控制器在与CPU取得总线控制权后,输出内存地址,发送控制信号,使得一个字节或一个字从适配器读出并写入相应内存中,然后更新内存地址,指向下一个字节(或字)要写入的地址,重复上面的操作,直至数据传送完毕。对控制器进行不同编程,就可以实现单字节传送(即每传送一个字节都要求一个DREQ信号)或块数据传送(即全部数据传送只需要一个DREQ信号)。 如果你要往计算机中插一块适配卡,而且适配卡使用DMA,通常安装程序会让你选择一个DMA通道,设定DIP开关或跳线,来为相应适配器设置DMA通道。尽管从理论上讲,只要不是同时使用DREQ线,不同的适配卡可以共享这条线的,但是按常规,我们最好为每个适配卡单独安排一个DMA通道,这样就可以保证不会发生DMA冲突,DMA方式下由于不直接访问计算机的CPU,而直接在RAM与设备之间传输,因而大大提高了数据传输速度。
解决方案九:
感谢各位大神的赐教,大神们讲解的都是令我茅塞顿里,都正确,我都不知道把这点小分 给谁了 ,拜服!!