汇编网首页登录博客注册
jvhybg的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
文章收藏
友情链接

[2009-07-19 16:48] Direct memory access

DMA(Direct Memory Access),即直接存储器存取,是一种快速传送数据的机制。数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存。 


   利用它进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,并用一个适配器上的ROM(如软盘驱动控制器上的ROM)来储存程序,这些程序控制DMA传送数据。一旦控制器初始化完成,数据开始传送,DMA就可以脱离CPU,独立完成数据传送。 
   在DMA传送开始的短暂时间内,基本上有两个处理器为它工作,一个执行程序代码,一个传送数据。利用DMA传送数据的另一个好处是,数据直接在源地址和目的地址之间传送,不需要中间媒介。如果通过CPU把一个字节从适配卡传送至内存,需要两步操作。首先,CPU把这个字节从适配卡读到内部寄存器中,然后再从寄存器传送到内存的适当地址。DMA控制器将这些操作简化为一步,它操作总线上的控制信号,使写字节一次完成。这样大大提高了计算机运行速度和工作效率。 
计算机发展到今天,DMA已不再用于内存到内存的数据传送,因为CPU速度非常快,做这件事,比用DMA控制还要快,但要在适配卡和内存之间传送数据,仍然是非DMA莫属。要从适配卡到内存传送数据,DMA同时触发从适配卡读数据总线(即I/O读操作)和向内存写数据的总线。激活I/O读操作就是让适配卡把一个数据单位(通常是一个字节或一个字)放到PC数据总线上,因为此时内存写总线也被激活,数据就被同时从PC总线上拷贝到内存中。

8237DMA控制器  
    8237的内部逻辑包括定时和逻辑控制、命令控制逻辑、优先级控制逻辑以及寄存器组等部分。
  8237内部有四个独立通道,每个通道都有五个寄存器——工作方式、基值地址、当前地址、基值字节计数、当前字节计数,另外还有四个通道公用的命令寄存器和状态寄存器,以及对DRQ信号的屏蔽寄存器和DMA服务请求寄存器等。8237的数据线为8位双向数据线,每个通道有硬件DMA请求和软件DMA请求两种方式。
  DRQ表示由DMA设备向DMA控制器发出的DMA请求信号;DACK为DMA控制器发出的响应信号,表示允许DMA操作;HRQ为保护请求信息号,请求系统总线控制;DMA1的HRQ信号送至MDA2的DRQ4端以构成级联方式。由于级联已经占用了一个通道,所以还剩下七个通道供DMA设备使用.
  由于每个DMA设备都要占用一个DMA通道,如果有两个或两个以上的设备占用了相同的DMA通道就要发生冲突,使得系统不能正常工作。所以,在安装新设备时,应选择那些还没有被占用的通道。DMA通道可以通过跳线或程序来设置。如果是即插即用的主板和适配卡,能够自动地选择合适的通道,你就不必人工去设置了
评论次数(0)  |  浏览次数(350)  |  类型(默认类型) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码