激活硬盘被关闭的DMA模式

 宣恩向 2010-05-16 11:32:40
一、DMA小知识
DMA的英文拼写是“Direct Memory Access”,汉语的意思就是直接内存访问,是一种不经过CPU而直接从内存存取数据的数据交换模式。PIO模式下硬盘和内存之间的数据传输是由 CPU来控制的;而在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率。——百度百科。所以,DMA模式的优点:1占用更少的CPU资源;2更快的读写数据速度。

二、硬盘工作的模式
PIO模式及速度。
PIO mode 0 --> 3.3MB/s
PIO mode 1 --> 5.2 MB/s
PIO mode 2 --> 8.3 MB/s
PIO mode 3 --> 11.1 MB/s
PIO mode 4 --> 16.7MB/s

DMA模式及速度。
Single Word DMA 0 --> 2.1 MB/s
Single Word DMA 1 --> 4.2 MB/s
Single Word DMA 2 --> 8.3 MB/s
Multi Word DMA 0 --> 4.2 MB/s
Multi Word DMA 1 --> 13.3 MB/s
Multi Word DMA 2 --> 16.7 MB/s

UltraDMA模式及速度。
UltraDMA 0 -->16.7 MB/s
UltraDMA 1 -->25 MB/s
UltraDMA 2 -->33.3 MB/s
UltraDMA 3 -->44.4 MB/s
UltraDMA 4 -->66.6 MB/s
UltraDMA 5 -->100 MB/s
UltraDMA 6 -->133 MB/s

三、硬盘工作模式为什么会自动降为PIO模式
根据微软知识库http://support.microsoft.com/?kbid=817472的介绍。“在 Windows IDE/ATAPI 端口驱动程序 (Atapi.sys) 累积收到总共六个超时或循环冗余检验 (CRC) 错误后,驱动程序将把通信速度(传送模式)从最快的直接内存访问 (DMA) 模式分步骤降为较慢的 DMA 模式。如果驱动程序继续收到超时或 CRC 错误,则驱动程序最终将把传送模式降为最慢的模式(PIO 模式)。”受影响的操作系统是win2000,win XP,win 2003。
出现CRC或超时错误的原因不外乎:
1、主板上的控制芯片不堪其负;
2、在非标准外频下工作,比如超频;
3、劣质的数据线;
4、硬盘过热或者已有缺陷;
5、系统休眠之后唤醒,如果硬盘反应超过10秒才读出数据的话,也会导致超时错误。

四、硬盘工作模式降为PIO模式的表现
一个设定工作模式为UDMA6的硬盘,当出现6个CRC错误后,系统主动将降为UDMA5然后再出现6个CRC错误是UDMA4,UDMA3 ,UDMA2, UDMA1,接着是PIO mode 4,PIO mode 3,PIO mode 2,PIO mode 1 ,最后是最慢的PIO mode 0模式。在这个模式下,系统象上了岁数的老人,慢腾腾的吞吐数据,看电影将会是一卡一卡的画面,游戏里会莫名的停顿,读写速度将是不可忍受的每秒3.3MB。
1、测速
如果这个时候你用HD tune之类的软件测试硬盘,看到的速度将介于2.9 MB/s到3.3 MB/s之间。

 

2、设备管理器
打开设备管理器,查看IDE ATA/ATAPI控制器下对应的IDE通道,你将会看到IDE通道的属性。

 

而“当前传送模式”不再是“Ultra DMA Mode X”,而是“Pro Mode 0”。
3、注册表
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0001](注:其中0001代表你硬盘接在控制器那一个口上,数据可以是0001到0008)下MasterDeviceTimingMode(主盘)或SlaveDeviceTimingMode(从盘)键值被改写成20以下的数值。数值为1至19表示PIO模式。

 

典型的键值参考如下:
UDMA Mode1 0x0001010
UDMA Mode2 0x0002010
UDMA Mode3 0x0004010
UDMA Mode4 0x0008010
UDMA Mode5 0x00016010
UDMA Mode6 0x00024010 或0x00032010

五、解决之道

1、微软公司提供的办法,分两步操作(此方法来自微软网站)。

第一步 卸载受影响的驱动

①双击“管理工具”,然后双击“计算机管理”。
②单击“系统工具”,然后单击“设备管理器”。
③展开“IDE ATA/ATAPI 控制器”节点。
④双击您要为其恢复典型 DMA 传送模式的控制器。
⑤单击“驱动程序”选项卡。
⑥单击“卸载”。
⑦当此过程完成后,重新启动您的计算机。当 Windows 重新启动后,将重新枚举硬盘控制器,同时与该控制器相连的每个设备的传送模式将重置为默认值。
⑧重启操作系统。

 

第二步 修改注册表,使Atapi.sys仅在连续发生6次超时错误或CRC错误后才降低传送模式,而不是累积发生的超时错误或CRC错误的总数达到6次就降低传送模式。

①单击“开始”,单击“运行”,键入 regedit,然后单击“确定”。
②在注册表中找到并单击以下注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0001
③在 “编辑”菜单上,指向“新建”,然后单击“DWORD 值”。
④键入 ResetErrorCountersOnSuccess,然后按 Enter 键。
⑤在“编辑”菜单上,单击“修改”。
⑥键入 1,然后单击“确定”。

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0001的0001指你的硬盘所在的端口,也许你的硬盘插在0002端口或者其它端口,我的建议是你在如下注册表项都新建一个名为“ResetErrorCountersOnSuccess” 的DWORD 值,并赋值为1:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0002
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0003
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0004
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0005
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0006
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0007
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0008

2、当以上方法不管用。
计算机运行环境确实恶劣,或者控制器芯片工作不正常,或者劣质的传输线,或者硬盘已有问题,第一个方法将不再管用,系统很快又把硬盘的UDMA模式强制改为PIO模式。这个时候,我们迫不得已还需要继续用它来工作的话,这就需要采取降速。

第一步 卸载受影响的驱动 (跟微软方法的第一步相同操作)

 

第二步 进BIOS里设置,降低芯片的传输速度。
重启后按DEL或者F2进入BIOS设置,找到硬盘设置页面。在“DMA Mode”那一项,一般是“AUTO”即自动识别,以现在一般硬盘都工作在UDMA6为例,把工作模式降低一到两个级别,最好设置为UDMA 3 或者UDMA 4 。然后F10保存,退出。

以下图是设置成UDMA3模式后的截图,硬盘是希捷1.5T:

 
 

这两个图显示出主板BIOS的设置跟硬盘所能达到的速度无关,此硬盘官方标示的速度为120M每秒。但检查注册表下(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\000X
)相应的出错计数器“MasterIdDataCheckSum” DWORD 值,则发现长时间运行更大量的数据之后,此DWORD 值依然为0。

激活硬盘被关闭的DMA模式相关推荐

  1. 【DMA模式2联想到的磁盘坏道】终于CHKDSK解决了!

    [DMA模式2联想到的磁盘坏道] 检查DMA模式如下: 虽然已开启,但是居然是模式2,33M/s的传输速度.肯定有问题.若不开启,则 又经HDD测试如下:当前模式为UDMA Model 6,为何和上图 ...

  2. ubuntu 如何关闭离线模式_如何在macOS中打开或关闭Mac暗黑模式

    苹果在macOS Mojave中为Mac引入了暗模式.暗模式是系统级别的设置,可与Mac随附的所有应用一起使用.第三方应用也可以选择使用暗黑模式.暗黑模式使您更轻松地专注于工作,并且对眼睛也很容易.装 ...

  3. 如何关闭uefi启动模式|预装win8/win10电脑禁用uefi引导方法

    如何关闭uefi启动模式|预装win8/win10电脑禁用uefi引导方法 发布时间:2016-12-19 17:14发布者:系统城-xtcjh浏览数:43866 现在新出的电脑大都采用UEFI启动模 ...

  4. PIO模式和DMA模式的区别

    硬盘和内存之间数据传送的两种方式:一是PIO模式,二是DNA模式 PIO模式下通过CPU来控制硬盘和内存之间的数据传输,是一种通过CPU执行I/O端口指令来进行数据的读写的数据交换模式.: DMA模式 ...

  5. iastora怎么改成ahci_Win10系统无需重装,硬盘IDE改为AHCI模式的方法

    最近刚换了良品主板,装机后才发现,SATA硬盘工作在IDE模式下.本来打算使用修改注册表方法来解决这个问题的.但在网上看了一些资料,才发现原来Win10系统不需要修改注册表,也可以将SATA硬盘工作模 ...

  6. STM32从零到一,从标准库移植到HAL库,UART串口1以DMA模式收发不定长数据代码详解+常见问题 一文解析

    前言 本文的参考资料 感谢提供标准库版本的CSDN同学:这两篇文章至少是我看过的最详细的标准库配置DMA版本.而且代码实测稳定能用. STM32 | DMA配置和使用如此简单(超详细)_...| .. ...

  7. STM32CUBEIDE(10)----ADC在DMA模式下扫描多个通道

    STM32CUBEIDE.10----ADC在DMA模式下扫描多个通道 概述 样品申请 视频教学 csdn课程 代码下载 生成例程 STM32CUBEIDE配置 串口重定向 代码 测试结果 概述 本章 ...

  8. eclipse下如何打开被关闭的项目_如何在Windows 10中打开和关闭平板电脑模式

    默认情况下,将可转换计算机重新配置为平板电脑时,Windows 10会自动切换到平板电脑模式.如果你希望手动打开或关闭平板电脑模式,可以通过多种方法进行. 自动平板电脑模式在Windows 10中的工 ...

  9. Cypress EZ-USB FX3 DMA模式下的串口通讯

    由于公司设备升级后出了问题,需要对USB驱动进行修改,原本使用的是寄存器模式进行UART传输,但是由于FX3寄存器模式会出现长时间延时等待的问题,不得不对其传输模式进行修改.虽然赛普拉斯的EZ-USB ...

最新文章

  1. (0082)iOS开发之搭建iOS自动化打包平台(利用Jenkins持续集成iOS项目)
  2. datetime数据类型_系统数据类型
  3. POJ 3635 Full Tank?
  4. postgres循环sql
  5. 手把手教你java快速过滤关键词
  6. 递归算法和迭代算法_Java中没有递归的二进制搜索–迭代算法
  7. 开学季|计算机专业的你看过来!
  8. Docker收购Orchard,SAP支持OpenStack,ODF等
  9. Linux——用户管理简单学习笔记(三)
  10. iOS开发基础知识-多线程概念深入浅出
  11. docker 部署Gitlab
  12. 线性表顺序存储的基本操作方法(C语言)
  13. JavaScript 必会的知识点
  14. i5双线程_新老系统多项测试:多线程运算谁更靠谱
  15. 加权平均数的例子_什么是加权平均数(加权平均数公式例子)
  16. 大数据之Python数据分析 实训 航空公司客户价值分析之二、使用 K-Means 算法进行客户分群
  17. P2916 [USACO08NOV]Cheering up the Cow G 题解
  18. P1217 回文质数
  19. mac 终端 创建java文件_第一个 终端Java程序 (Mac)
  20. HIHO#1245 : 王胖浩与三角形

热门文章

  1. raptor流程图赋值语句_用raptor软件画出以下程序的流程图,将结果的截图复制到答题框中...
  2. you-get下载优酷视频报错:用户账户异常、请重新登录
  3. 当租房成为一种生活方式
  4. 第二章节 MongoDB的基本命令
  5. VirtualBox 虚拟机里网络很慢的解决方法
  6. 编写matlab语句计算试题,MATLAB测验考试题
  7. 阿里云服务器ECS windows server已开放端口但连不上的问题
  8. java实现 蓝桥杯 算法训练 操作格子
  9. 苹果app一键签名工具开发者专用版 (iOS签名工具,苹果签名工具。ipa签名工具)
  10. PyQt5初学试验记录(三):Pyinstaller打包小结