第9章 DMA
2009-05-13 07:15:06来源:未知 阅读 ()
第9章 DMA
9.1 DMA:什么是DMA,它如何工作
Copyright © 1995,1997 Frank Durda IV , All Rights Reserved. 10 December 1996. Last Update 8 October 1997.
翻译 gvim
原文连接
http://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/dma.html
直接内存访问(DMA)是一种传输数据的方式,它允许两个地址上的数据直接进行传输而无需CPU的介入。
DMA功能在不同计算机体系下的实现方式有所不同,因此这里的讨论只局限于IBM 个人计算机(IBM PC/AT以及它们的衍生系统)的DMA子系统的实现和工作方式上。
PC 上的DMA子系统使用的是Intel® 8237 DMA控制器。8237包含有四个DMA通道,这些通道可以被单独的编程,并且任何一个通道也可以在任何时刻被激活。
第一个DMA 控制器(0,1,2和3)在传输的时候一次只能移动一个字节(8-bits)。第二个DMA 控制器(4,5,6和7)在传输的时候一次可以从相邻内存空间里移动16-bits(2个字节)的数据。显然,进行传输的第一个字节一定来自偶数编号的地址上。
8237的每个通道上都有两个芯片信号引脚,一个是DRQ和-DACK。还有一些其他信号引脚,分别是 HRQ(请求保持信号), HLDA(应答保持信号), -EOP(过程结束信号), 和总线控制信号 –MEMR(内存读), -MEMW(内存写), -IOR(I/O读), -IOW(I/O写)。
8237 DMA 是一种“遥控型”的DMA控制器。这也就是说,在两个地址间移动的数据不会经过DMA芯片,也不会转储到DMA芯片上。因为这个特点,数据的DMA传输只可以在I/O端口和内存地址之间进行,而不可以发生在两个I/O端口或者两个内存区域之间。
注意:8237确实也可以工作在非“遥控型”的方式,只要把两个通道连接起来就可以进行内存到内存的DMA操作。不过在现实中的PC制造业中并没有制造商这样处理,因为DMA资源十分稀少,而且使用CPU进行内存间数据的移动比使用DMA要快不少。
在PC体系中,一般来说某个DMA通道仅在以下情况时被激活:如果某个硬件需要利用某个DMA通道进行数据的传输,它需要往DMA控制器的DRQ引脚发出请求信号。
9.1.1 DMA传输的例子
这里是一个例子,用来说明引发并执行DMA传输的步骤。在这个例子里,软盘控制器(FDC)从磁盘中读取一个字节,然后使用DMA将读取的数据存放在内存地址0x00123456上。
DMA 控制器检测到它的DRQ2引脚被触发。DMA控制器接下来首先需要验证DMA的2号通道已经被编程,并且该通道没有被屏蔽(即,可以被使用)。DMA还需要验证没有其他更高优先级的DMA通道是激活的(或者将要被激活)。仅当上面这些验证都通过了,DMA才会请求CPU释放对总线的控制权,转而由自己进行接管。DMA对总线控制权的请求,是通过发出HRQ(请求保持)信号来完成的,该信号被送往CPU。
CPU检测到HRQ信号,并将正在执行的指令执行完毕。一旦处理器不再需要总线,那CPU就释放它。现在,CPU的-MEMR, -MEMW, -IOR, -IOW 和其他一些信号线的引脚都处于高阻态(即不是高电平也不是低电平),接着CPU向DMA控制器发出HLDA信号,通知DMA控制器“从此刻开始,总线的控制权可以被它接管”。
虽然CPU当前不再拥有总线控制权,不过根据处理器的设计,它仍可能继续执行一些指令。但是随着CPU指令的执行,可能有一些指令/数据不在cache或者流水线中,这些内容只能从内存上取得,那么CPU也只有等待总线了。
现在,总线的控制权属于DMA控制器,DMA使用它自己的-MEMR, -MEMW, -IOR, -IOW 输出信号使用总线,并且将0x3456发送到总线的地址线上。这个地址就是数据将被写入的内存地址。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 求PC-BSD 7.1安装指南? 2009-05-13
- freebsd-update已经可以升级了,升级中 2009-05-13
- 话说可以升级FB7.2正式版了,我去试试 2009-05-13
- 可以下载OpenBSD4.5了 2009-05-13
- Introducing NetBSD 5.0 by Andrew Doran 2009-05-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash