打开你的 DMA 模式 (转)

原创 2001年06月11日 19:46:00

打开你的 DMA 模式 (转)

LinuxFab LinuxFab

返回〗〖转发〗

打开你的 DMA 模式 
前几天在 LinuxFab 上的 [QA 特搜] 看到打开 DMA 的方法,迫不及待拿来一试,首先下指令 : 
hdparm -Tt /dev/hda 
测测目前的速度, 同样指令多跑几次求一个平均值, 然后用 : 
hdparm -d 1 /dev/hda 
把 DMA 功能打开,再测一次速度,哇 ! 果然就是不一样,Timing Buffer disk reads 的效率足足提升了四倍以上 ! 
当然测试的数据不是拿来看爽的,真正跑程序的时候要有效果才算数, ㄟ.....说真的,开了DMA之后,照往常的习惯打开 Xwindow,开个 Netscape 来上网,都还是要读个一阵子,好象没有感觉快多少勒 ? 干脆拿个表来计时好了,结果果然令人失望,开不开 DMA,结果都一样。 
啊....怎么会这样,好吧,干脆拿出特耗硬盘的指令 locate -u 好好的给它操一下,这下总该看的出差距了吧,嗯.....没开 DMA 花了1分22秒,为避免有些资料 cache 在 RAM 里面影响测试结果,重开机打开 DMA 再跑一次,嗯.....1 分 22 秒,天啊,又是同灯同分 ! 
难道 DMA 是没用的吗 ? 还是 hdparm 根本没用还秀个假数据来骗人 ? 怎么会这样 ? 嗯.....还好以前上课没打瞌睡,对 DMA 这东西还稍有概念,在这里跟大家解释一下。 
硬盘上的东西,一定要先搬到RAM里面才能拿来执行,早期把资料由 Hard Disk 搬到 RAM 的工作,是由 CPU 来执行的,而这项工作可不如想象中的轻松,资料是以 1 byte 为单位来搬的,所以要读取 1 MB的资料,CPU要从硬盘搬 1 byte 到 CPU的缓存器,然后再从 CPU 搬到 RAM,重复这样单调而无聊的动作 1048576 次。 
杀鸡焉用牛刀,以一个高价位而且多用途的 CPU 来做这样的苦工,实在有点可惜,于是 DMA(direct-memory-access) controller 便诞生了,CPU 只要告诉它 "请帮我搬 1MB的资料到内存" ,DMA controller 就会开始做这份苦工,同时间 CPU 便可以去做别的工作,等到资料搬好,DMA controller 会通知 CPU,CPU 就有现成的资料可以用了。 
了解 DMA 的运作原理,就不难想象为什么之前的测试结果都相同。因为处理 locate 这一件简单的事,对 CPU 来说是游刃有余的,没有 DMA 做帮手,照样处理的很妥当。所以呢,当你需要从硬盘存取大笔的资料,同时间 CPU loading 又重的时候,DMA 的价值就会显现出来。 
重新设计测试的方式,要 loading 重而且存取又多的,就属压 mp3 这件事了,于是抓了 NotLame 来,针对一个 53.8 MB 的 wav 档做压缩,嗯.....没有 DMA 花了 1 分 52 秒,重开机打开 DMA 再试一次,哈哈 ! 1 分 37 秒,果然有比较快。 
以目前的硬盘跟主机板来说,很少没有支持 DMA 的,打开 DMA,多多少少都会增进你的效能,尤其在 High Loading 的时候特别显出价值,不要犹豫了,打开你的 DMA 吧! 

摘自:http://linuxfab.cx 





hdparm -c 1 /dev/hda 
使用32bit模式; 
hdparm -X34 /dev/hda 
用DMA33 
hdparm -X66 /dev/hda 
用DMA66 
其他的设置,大家有兴趣,我可以考虑写一篇专文. 

硬盘的PIO模式和DMA模式

IDE数据传输模式      随着技术的发展,产品对数据传输速度要求的提高,IDE接口硬盘的数据传输模式,经历过三个不同的技术 变化,由最初的PIO模式,到DMA模式,再到Ultra DMA模式...
  • Blaider
  • Blaider
  • 2013年02月05日 09:49
  • 1421

ADC采集数据(DMA模式)

ADC采集数据(DMA模式)         写这篇文章,也是自己参考了一些书籍,加上自己的感悟总结之后写出来的。正所谓天下文章一大抄,取个文雅的名字叫模仿、借鉴、参考。不过这也是一种学习的方法,我想...
  • chengbozhe
  • chengbozhe
  • 2013年12月26日 21:06
  • 3153

对于stm32中dma的理解

一.dma常识. 1.作用:实现片内数据之间的高速传输。即是能够不占用cpu实现数据传输。 2.模式:外设到存储器传输、存储器到外设传输和存储器到存储器传输三种传输模式。 3.stm32中的dm...
  • STM_32starter
  • STM_32starter
  • 2017年02月27日 18:51
  • 2036

关于DMA基础知识

(大部分内容来源于网络,有本人整理总结+个人见解所得) 概念:DMA(direct memoryaccess直接内存访问),是一种避开CPU,可以直接对外设和内存进行访问的技术,可以实现外设与内...
  • happygaohualei
  • happygaohualei
  • 2016年10月09日 17:14
  • 960

SG DMA与普通DMA(block DMA)的区别

一、Scatter-gather DMA方式是与block DMA方式相对应的一种DMA方式。在DMA传输数据的过程中,要求源物理地址和目标物理地址必须是连续的。但是在某些计算机体系中,如IA架构,连...
  • jeason29
  • jeason29
  • 2015年05月19日 09:05
  • 1061

uart dma实现方式分析

uart dma实现方式分析(转载) 在做uart DMA驱动期间,前后加起来也有1个月左右的时间,总的来说比较全面的了解了uart,DMA的工作原理。 在调试中,遇到了最大问题就是关于DMA...
  • haozi0_0
  • haozi0_0
  • 2015年12月07日 15:19
  • 2717

STM32输入捕获模式设置并用DMA接收数据

STM32输入捕获模式设置并用DMA接收数据 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: ...
  • jdh99
  • jdh99
  • 2014年04月09日 00:38
  • 13834

PIO操作与DMA操作

IDE数据传输模式 随着技术的发展,产品对数据传输速度要求的提高,IDE接口硬盘的数据传输模式,经历过三个不同的技术变化,由最初的PIO模式,到DMA模式,再到Ultra DMA模式。 1> PI...
  • u013472064
  • u013472064
  • 2015年09月22日 17:30
  • 1218

STM32硬件IIC之DMA传输数据

这里给出一个实现用DMA传输IIC数据的实现过程 这里咱们说3个点 1.检查IIC总线上是否有指定地址的器件 2.IIC读取数据 3.IIC写数据 下面来一个一个详细说明1.检查IIC总线上是...
  • shixiongtao
  • shixiongtao
  • 2016年12月19日 21:53
  • 220

串口工作在DMA模式下有时接收异常

1 前言客户反馈在使用STM32F205的串口工作在DMA模式时,有时能够接收数据,有时完全没有数据,但如果换成中断模式来接收又能100%正常收到数据。2 复现现象2.1 问题背景与客户沟通,客户使用...
  • flydream0
  • flydream0
  • 2016年11月25日 16:56
  • 2018
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:打开你的 DMA 模式 (转)
举报原因:
原因补充:

(最多只允许输入30个字)