分享

磁盘变慢——DMA PIO

 悠游LIF 2012-02-26
DMA PIO
转载自 tsaly
最终编辑 tsaly
 
--------------------------------该方法我试过,有用!---------------------------------------------------------

有段时间电脑突然变得很慢,以为是系统垃圾、文件碎片问题,清理、优化、磁盘整理都没有改观。后一键恢复时,恢复工具报错,说是盘片有错误无法一键还原。再检查磁盘相关情况才发现使用的是PIO模式,而且无法修改,才在网上搜索到这篇文章。修改注册表时,发现没有0001和0002目录,自己建了这两个目录,其他操作都与本文相同。重启两次,系统的速度又恢复原来的状态了:),再使用磁盘修复软件修复了磁盘坏道,一切OK!
--------------------------------------------------------------------------------------------------------------------------
 
 

DMA和PIO
 
DMA模式和PIO模式,这两种模式是硬盘与主机进行数据交换的方式。PIO模式是一种通过CPU执行I/O端口指令来进行数据的读写的数据交换模式;而DMA则是不经过CPU而直接从内存了存取数据的数据交换模式。 PIO的英文全称为“Programming Input/Output Model”,即“程序输入/输出”模式。这种模式使用PC I/O端口指令来传送所有的命令、状态和数据。由于驱动器中有多个缓冲区,对硬盘的读写一般采用I/O串操作指令,这种指令只需一次取指令就可以重复多次地完成I/O操作,因此,达到高的数据传输率是可能的。 DMA的英文全称为“Direct Memory Access”,即“内存直接存取”模式。它表示数据不经过CPU,而直接在硬盘和内存之间传送。在多任务操作系统内,如OS/2、Linux、Windows NT等,当磁盘传输数据时,CPU可腾出时间来做其它事情,使服务器的数据性能大大提高。而在DOS/Windows3.X环境里,CPU不得不等待数据传输完毕,所以在这种情况下,DMA方式的意义并不大。 但在现在的操作系统环境中,DMA的传输模式明显优于PIO的传输模式。

Windows IDE/ATAPI 端口驱动程序 (Atapi.sys) 累积收到总共6个超时或循环冗余检验 (CRC) 错误后,驱动程序将把通信速度(传送模式)从最快的直接内存访问 (DMA) 模式分步骤降为较慢的 DMA 模式。如果驱动程序继续收到超时或 CRC 错误,则驱动程序最终将把传送模式降为最慢的模式(PIO 模式)。也就是说当我们使用计算机挂起6次后系统就会把通信速度(传送模式)从最快的直接内存访问 (DMA) 模式分步骤降为较慢的 DMA 模式。如果挂起6次以上则驱动程序最终将把传送模式降为最慢的模式(PIO 模式)。这就是Windows 系统突然变慢的原因。


若要改回到DMA模式,请参考以下方法:

先是改注册表,然后再是卸载你硬盘的那个IDE通道,一般是主要IDE通道
1. 单击“开始”,单击“运行”,键入 Regedit,然后单击“确定”。
2. 在注册表中找到并单击以下项:
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E96A-E325-11CE-BFC1-08002BE10318}\\0001
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E96A-E325-11CE-BFC1-08002BE10318}\\0002
3. 在“编辑”菜单上,指向“新建”,然后单击“DWORD 值”。
4. 键入 ResetErrorCountersOnSuccess,然后按 Enter 键。
5. 在“编辑”菜单上,单击“修改”。
6. 键入 1,然后单击“确定”。

注册表修改完成后在卸载你的这个IDE通道

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

切记,我是先改的注册表,在再卸载的主要IDE通道,然后重启两次就好了。


=======================================================

Windows IDE/ATAPI 端口驱动程序 (Atapi.sys) 累积收到总共6个超时或循环冗余检验 (CRC) 错误后,驱动程序将把通信速度(传送模式)从最快的直接内存访问 (DMA) 模式分步骤降为较慢的 DMA 模式。如果驱动程序继续收到超时或 CRC 错误,则驱动程序最终将把传送模式降为最慢的模式(PIO 模式)。也就是说当我们使用计算机挂起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_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0001和HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0002
3. 在“编辑”菜单上,指向“新建”,然后单击“DWORD 值”。
4. 键入 ResetErrorCountersOnSuccess,然后按 Enter 键。
5. 在“编辑”菜单上,单击“修改”。
6. 键入 1,然后单击“确定”。
7. 按照下列步骤操作,然后退出注册表编辑器:
注意:上面注册表最后的项“{4D36E96A-E325-11CE-BFC1-08002BE10318}”列出的带有“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传送模式的机会。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多