freejack
驱动牛犊
驱动牛犊
  • 注册日期2003-04-12
  • 最后登录2005-03-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1818回复:10

DMA如何提高CPU的工作效率?

楼主#
更多 发布于:2003-04-18 14:53
我是做应用软件的,前几天对硬件产生了兴趣,可是这个DMA让我百思不得其解,我看了论坛的文章,上面有一篇这样写道:
-----------------------------------------------------
  “DMA最明显的一个特点是它不是用软件而是采用一个专门的硬件电路 ──DMA控制器来控制内存与外设之间的数据交流,无须CPU介入,大大提高 CPU的工作效率。    在进行DMA数据传送之前,DMA控制器会向CPU申请总线控制权, CPU如果允许,则将控制权交出,因此,在数据交换时,总线控制权由DMA控制 器掌握,在传输结束后,DMA控制器将总线控制权交还给CPU”。
------------------------------------------------------
总线被占用了,而CPU必须通过总线访问内存获取执行指令,那CPU怎么工作????即使有一、二级内存缓存,但使用写通时,CPU写内存时还是要使用总线呀?况且即使是读,但一、二级缓存总是有限的,它们主、用完了还是要从内存读,岂不还是要使用总线?

还有PCI总线设备不是不用DMA控制器吗,为什么Intel的ICH2里面还有DMA Device,是为外部PCI-ISA扩充准备的吗?

IDE的硬盘有ULTRA DMA访问模式,它需要ICH2的DMA Device的支持吗?

万望大虾指点迷津
libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-04-19 10:41
我理解CPU和内存之间的数据传输是靠内部的总线来传输的,它和外部的总线是两个概念!
我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
freejack
驱动牛犊
驱动牛犊
  • 注册日期2003-04-12
  • 最后登录2005-03-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-04-21 14:57
楼上兄弟,感谢你的回贴,不过我认为局部总线是挂在Host Bus上的,比如PCI Bus是通过HOST-PCI Bridge连到Host Bus上,而内存也是通过内存控制器挂到Host Bus,ISA总线又可以通过ISA-PCI Bridge挂到PCI Bus上,DMA访问过程中,数据肯定是通过ISA总线-PCI总线-HOST总线在ISA设备与内存之间进行交换。除非内存除了通过Host Bus访问之外,还提供了额外的到局部总线的接口,但我查阅了Intel的硬件手册,850 MCH Data sheet, ICH2 Data sheet,P4-487Socket Data sheet,都没有发现有这样的接口存在,不知道是我看得不够仔细,还是它没有指出,还是其实并没有这样的接口存在,如果是这样,我的问题还是没有解决。
freejack
驱动牛犊
驱动牛犊
  • 注册日期2003-04-12
  • 最后登录2005-03-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-04-21 15:05
或者内存提供了除Host Bus之外的到CPU的接口,不过这肯定是不可能的,因为Host Bus就是用于CPU访问内存,I/O端口地址的,至于CPU内部总线是CPU的各个逻辑单元以及一级高速缓存之间交换数据用的,一级与二级高速缓寸之间又有一个前端总线,不过它们可以看做是CPU的一部分,而与内存,外设是隔离的,处于CPU(目前流行的,以前二级缓存是外置的)内部。
rongsiji
驱动牛犊
驱动牛犊
  • 注册日期2003-04-21
  • 最后登录2003-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-04-21 15:57
hi freejack:
很好的问题,问题被你想的太复杂,就我对DMA的认识,你看到的那段描述是很正确的。
至于你提到问题:我曾在CVE仿真环境下看到的波形是,在DMA占用总线期间,CPU是不取指令的,因为这个时候CPU没有总线控制权,而DMA 控制器才是总线的MASTER,在DMA一次操作后会释放控制;当然DMA有多种模式,对总线的释放并不意味一定完成了整个DMA传送请求。
总之,在总线看过去,CPU 和DMA controller 都是他的老板,不知回答问题没有。
freejack
驱动牛犊
驱动牛犊
  • 注册日期2003-04-12
  • 最后登录2005-03-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-04-21 16:47
rongsiji,是不是DMA控制器占用总线的时候,CPU从缓存读取数据执行,如果缓寸用完了CPU则等待,而DMA控制器占用总线的时间很短,所以是不是存在这样一个规律:如果缓存足够大,而DMA控制器占用总线的时间又足够短的话,那么两者并行的机会就足够大,但仍然存在着碰撞的情况。反之的话就根本不能实现并行,或很少能够并行。
rongsiji
驱动牛犊
驱动牛犊
  • 注册日期2003-04-21
  • 最后登录2003-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-04-24 16:25
hi there,
没有那么复杂,缓存应当是设计在CPU内部的,比访问外部的MEMORY要快,不过这与你的问题没有关系。有关系的是从硬件结构来看,缓存也要挂在总线上,DMA占了总线,CPU只能等。
DMA是直接内存访问,这个直接指外设不经过CPU去访问。就我的知识,常见的冯诺依曼体系结构是不存在你说的并行情况.      :)
freejack
驱动牛犊
驱动牛犊
  • 注册日期2003-04-12
  • 最后登录2005-03-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-04-25 12:10
CPU只能等,那就是CPU啥事都做不了了,那么第一贴引用的“大大的提高了CPU的工作效率”是不是可以理解为DMA控制内存读写时间更短,比如DMA控制须2个小时才能读完的工作,CPU控制却要3个小时才能完成(有点夸张:-P),从而到达了提升整个系统工作效率的目的?(而我以前理解的是通过提高并行度提高效率)
wangxf
驱动牛犊
驱动牛犊
  • 注册日期2003-04-23
  • 最后登录2003-11-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-04-25 16:11
我里指的是提高CPU与外设并行度。当内存与HDD交换数据时,以CPU仍可以工作。数据交换由DMA来完成,适当的时候CPU才会干涉
freejack
驱动牛犊
驱动牛犊
  • 注册日期2003-04-12
  • 最后登录2005-03-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-04-26 11:48
综合wangxf与rongsiji的贴子,我彻底昏菜了,哪位大侠仗义出手,帮我总结总结?????痛苦中~~~~~~~~~~~~~~
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
10楼#
发布于:2003-04-26 13:22
大部分内容和楼上的说的一样。
不过dma控制器是在每个机器周期的最后窃取总线控制权来传送数据的,所有dma会影响cpu的效率,当然这是相比于它不占用总线时的情况:)
总的来说,dma方式提高了cpu效率,不用它干预数据传送的大部分过程。

[编辑 -  4/26/03 by  znsoft]
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
游客

返回顶部