山东001在线

 找回密码
 立即注册
搜索
查看: 7841|回复: 15

WinXP自行关闭硬盘DMA模式详解及如何将关闭的DMA通道打开

[复制链接]

该用户从未签到

发表于 2005-1-22 17:42:14 | 显示全部楼层 |阅读模式
WinXP自行关闭硬盘DMA模式详解.

DMA是Direct Memory Access的缩写。其意思是“存储器直接访问”。它是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,即不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为“DMA控制器”的控制下进行的。CPU除了在数据传输开始和结束时作一点处理外,在传输过程中CPU可以进行其它的工作。这样,在大部分时间里,CPU和输入输出都处在并行操作。因此,使整个计算机系统的效率大大提高。

DMA控制器是实现DMA输入输出方式的具体执行部件。而每个DMA控制器只能支持一定数量的DMA通道,每个DMA设备都要占用一个DMA通道,如果有两个或两个以上的设备占用了相同的DMA通道就要发生冲突,使得系统不能正常工作。所以,在安装新设备时,应选择那些还没有被占用的通道。DMA通道可以通过跳线或程序来设置。如果是即插即用的主板和适配卡,能够自动地选择合适的通道,你就不必人工去设置了。硬盘的PATA模式有DMA33、DMA66、DMA100和DMA133,虽然出了SATA-150,一般来说现在大多数人用的还是PATA模式的硬盘,硬盘使用DMA模式相比以前的PIO模式传输的速度要快2~8倍。DMA模式的起用对系统的性能起到了实质的作用。

但是发现一个新的“问题”--Windows 2000、XP、2003系统有时会自行关闭硬盘的DMA模式,自动改用PIO模式运行!这就造成在使用以上系统中硬盘性能突然下降,其中最明显的现象有:系统起动速度明显变慢,一般来说正常Windows XP系统启动时那个由左向右运动的滑条最多走2~4次系统就能启动,但这一问题发生时可能会走5~8次或更多!而且在运行系统时进行硬盘操作时明显感觉变慢,在运行一些大的软件时CPU占用率时常达到100%而产生停顿,玩一些大型3D游戏时(比如极品飞车)画面时有明显停顿(很多人这时以为是自己的显卡问题,当然如果你使用的是三年前的显卡玩这些游戏是有点老了,但如果你用的是今年才买的GF显卡那就不是它的问题了),出现以上问题时大家最好看看自己硬盘的DMA模式是不是被Windows 系统自行关闭了。查看自己的系统是否打开DMA模式:
1.双击“管理工具”,然后双击“计算机管理”;

2.单击“系统工具”,然后单击“设备管理器”;

3.展开“IDE ATA/ATAPI 控制器”节点

4.双击您的“主要IDE控制器

5.点击“高级设置”。
 
6.看到“设备0”,下面的传输模式应设为“DMA(若可用)”,再下面“当前传输模式”,如果是“Ultra DMA Mode *(*为数字,DMA33为2,DMA66为4,DMA100为5、DMA133为6)”,那么你的系统正常,但如果以前你自己设的是“Ultra DMA Mode 6”又没有改动,而现在是“Ultra DMA Mode 4”或“Ultra DMA Mode 2”更或者是“PIO 模式”而且改不过来!可能就是系统自行关闭了DMA模式了。

分析问题
好了,先来说说问题是如何产生的。在Windows 2000/XP/2003中有这样一个设定: Windows IDE/ATAPI 端口驱动程序 (Atapi.sys一般在 C:\WINDOWS\system3 2\drivers下) 累积收到总共6个超时或循环冗余检验 (CRC) 错误后,驱动程序将把通信速度(传送模式)从最快的直接内存访问 (DMA) 模式分步骤降为较慢的 DMA 模式。如果驱动程序继续收到超时或 CRC 错误,则驱动程序最终将把传送模式降为最慢的模式(PIO 模式)。 问题就在这里!一般来说一个正常的硬盘很少会有超时或循环冗余检验 (CRC) 错误,但是当我们使用这些系统里的挂起(也有叫休眠)并恢复计算机后就很容易造成超时或循环冗余检验 (CRC) 错误。因为系统设定的超时值为4秒,当系统向 ATA 磁盘发出读取请求时如果硬盘回应时间超过 4 秒的超时值时才会产生超时或循环冗余检验 (CRC) 错误,但因为系统在挂起(也有叫休眠)时硬盘是在停转状态中,恢复计算机时硬盘有个从停止到运动的过程,这就很容易造成大部分硬盘回应时间超过 4 秒的超时值。也就是说当我们使用计算机挂起6次后系统就会把通信速度(传送模式)从最快的直接内存访问 (DMA) 模式分步骤降为较慢的 DMA 模式。如果挂起6次以上则驱动程序最终将把传送模式降为最慢的模式(PIO 模式)。这就是Windows 系统突然变慢的原因。
解决问题
若要为受影响的设备重新启用典型DMA或更快DMA的传送模式,请执行以下操作:_

1.双击“管理工具”,然后双击“计算机管理”;

2.单击“系统工具”,然后单击“设备管理器”;

3.展开“IDE ATA/ATAPI 控制器”节点;

4.双击您要为其恢复典型 DMA 传送模式的控制器;

5.单击“驱动程序”选项卡;
'
6.单击“卸载”。
 
当此过程完成后,重新启动您的计算机。当 Windows 重新启动后,将重新枚举硬盘控制器,同时与该控制器相连的每个设备的传送模式将重置为默认值。
但这样只是把硬盘设备的传送模式重置为默认值,当我们再使用挂起系统时系统又会自行关闭DMA模式!所以我们还要做以下操作:
1.单击“开始”,单击“运行”,键入 Regedit,然后单击“确定”。

2.在注册表中找到并单击以下项:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass\0001和

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass\0002

3.在“编辑”菜单上,指向“新建”,然后单击“DWORD 值”。
 
4.键入 ResetErrorCountersOnSuccess,然后按 Enter 键。
 
5.在“编辑”菜单上,单击“修改”。

6.键入 l,然后单击“确定”。

注意"
上面注册表最后的项“”列出的带有“0001”编号的子项对应于一台仅有一个 IDE 控制器的计算机的主要 IDE 通道和次要 IDE 通道。如果您的计算机有两个 IDE 控制器,则对于每个控制器,主要 IDE 通道和次要 IDE 通道的带有编号的子项分别是:“0001、0002、0003、0004、0005、0006……”。
为检查是否找到了正确的子项,请检查子项的 DriverDesc 值是包含字符串值“主要 IDE 通道”,还是包含字符串值“次要 IDE 通道”。

建立以上注册表键值的目的

在Windows中,使系统向 ATA 磁盘发出读取请求时的 4 秒的超时值更改为 10 秒。还实现了一种较不严格的变通策略以在发生超时错误和 CRC 错误时降低传送模式(从较快的 DMA 模式到较慢的 DMA 模式,最终降为 PIO 模式)。以前的情况是,在每当累积发生的超时错误或 CRC 错误的总数达到 6 次时,IDE/ATAPI 端口驱动程序 (Atapi.sys) 将降低传送模式。当我们建立以上注册表键值实现新的策略后,Atapi.sys 仅在连续发生 6 次超时错误或 CRC 错误后才降低传送模式。

这一新的策略实现后将大大降低系统降低或关闭DMA传送模式的机会。现在我们可以安心地使用挂起系统和高性能的DMA硬盘模式,再也不会发生系统性能突然下降的情况了。

※CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验。它是一类重要的线性分组码,编码和解码方法简单,检错和纠错能力强,在通信领域广泛地用于实现差错控制。实际上,除数据通信外,CRC在其它很多领域也是大有用武之地的。例如我们读软盘上的文件,以及解压一个ZIP文件时,偶尔会碰到“Bad CRC”错误,由此它在数据存储方面的应用可略见一斑。


这么好的文章要求加精[s:106]!

[ Last edited by 东方之鹰 on 2005-1-22 at 17:53 ]

该用户从未签到

发表于 2005-1-22 18:41:09 | 显示全部楼层
好贴 看不懂
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2005-1-22 19:02:20 | 显示全部楼层
这方面在我的电脑出现的问题一样,但我试过,这法不好用啊,呵呵,可能出这个问题的原因很多吧
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2005-1-22 19:03:56 | 显示全部楼层
转了IAA的,直接在IAA的设置中把DMA强行设为最高就行了
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2005-1-23 02:56:36 | 显示全部楼层
这么好的文章要求加精[s:106]!..........赞同!
越发感觉和楼主是认识的!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2005-1-23 10:44:00 | 显示全部楼层
转了IAA的,直接在IAA的设置中把DMA强行设为最高就行了
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2005-1-23 10:46:25 | 显示全部楼层
晕,加精怎么变成解除了啊,败了,龙翔你来搞定吧
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2005-1-23 12:20:52 | 显示全部楼层
Ultra DMA Mode *(*为数字,DMA33为2,DMA66为4,DMA100为5、DMA133为6)

我的怎么是3……???
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2005-1-23 21:59:54 | 显示全部楼层
Originally posted by wjjiangs at 2005-1-23 10:46
晕,加精怎么变成解除了啊,败了,龙翔你来搞定吧



这么好的文章还没加精啊?
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2005-1-23 22:20:56 | 显示全部楼层
Originally posted by 澜风 at 2005-1-23 12:20
Ultra DMA Mode *(*为数字,DMA33为2,DMA66为4,DMA100为5、DMA133为6)

我的怎么是3……???


你的是什么硬盘?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|山东001在线 ( ICP11027147 )

GMT+8, 2024-12-24 10:03 , Processed in 0.157373 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表