【技巧】強制硬碟使用DMA模式



贊助商連結


SoftPig
2004-12-08, 11:13 AM
在微軟十一月份的一篇技術文章中提到,Windows 2000/XP/2003在某些情況下有時會自行關閉硬碟的DMA模式,而自動改用PIO模式運作。這會造成在使用時系統中硬碟性能下降,使得在系統運作時進行硬碟操作會明顯感覺變慢。例如在運作一些較大型的軟體時會使CPU使用率滿載而產生停頓,或是玩一些3D遊戲時畫面時會有停頓現象,若出現以上問題時大家最好看看自己硬碟的DMA模式是不是被Windows自行關閉了。

http://support.microsoft.com/?kbid=817472

查看自己的系統是否打開DMA模式:
1. 打開"裝置管理員"
2. 打開"IDE ATA/ATAPI控制器"
3. 連續按兩下您的"主要IDE控制器"
4. 點選"進階設定" (我在WinXP SP2下看不到.......)
5. 看到"裝置0",下面的傳輸模式應設為"DMA(若可用)",若"目前傳輸模式"設為"Ultra DMA Mode x" (x取決於硬碟速度),那麼系統正常,但若之前設定是"Ultra DMA Mode 6"又沒有更動過,而現在是"Ultra DMA Mode 4"或"Ultra DMA Mode 2"更或是"PIO 模式"且無法更改!那可能就是系統自行關閉了DMA模式。

這是因為Windows 2000/XP/2003中預設為:若IDE/ATAPI驅動程式(Atapi.sys)累積收到總共6個超時或CRC error後,驅動程式會把傳輸模式從最快的DMA模式漸次驟降為較慢的DMA模式。如果atapi.sys持續收到超時或CRC error,則驅動程式最後會將把傳輸模式降為最慢的PIO模式。

若要將傳輸模式重新啟用為DMA模式,可以執行以下步驟:
1. 打開"裝置管理員"
2. 打開"IDE ATA/ATAPI控制器"
3. 連續按兩下要恢復為DMA傳輸模式的控制器
4. 按一下"驅動程式"選項
5. 按一下"解除安裝"
6. 完成後重新啟動電腦。
當 Windows 重新啟動後會重新安裝硬碟控制器,而與該控制器相連的每個設備的傳輸模式會重設為預設值。但這樣只是把硬碟設備的傳輸模式重置為預設值,若系統進入休眠模式而引起time-out或CRC error六次後系統又會自動關閉DMA模式。

微軟提供了利用更動registry的解決方法
1. 執行Regedit
2. 在registry找到下列值:
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。
5. 將該新增之ResetErrorCountersOnSuccess值改為1(預設為0)。
6. 退出regedit

根據該技術文章,這個問題在winxp sp2已經修正。另外,如果你是用nForce的晶片組和nVidia的驅動程式,那你就不用去檢查了,因為nVidia的driver已經預設用UDMA的模式了。

若你需要更詳細的內容,請自行參考該技術文件。

贊助商連結


j8vu42uwl6_4cl4
2004-12-08, 11:35 PM
剛好看到這篇

前幾天一台 asus a7s266-vm 主機板的hd有點問題
想說先備份下來 拿了顆 maxtor 80g (IDE ATA133 Diamond Plus 9 , 7200rpm)
本來要測一下 看看原來在那台上面的 seagate 40g (ATA100 7200rpm)
跟這台速度差多少, 結果一進windows 居然只顯示 pio4........
80g那台測速出來只有不到 4MB/秒
40g的至少有25-28 左右
80g那顆的位置, 從bios 改成手動 DMA 2,4,5,6 都沒用.....
不過... 在dos下 卻是正常的...
用ghost 測試一個500m的備份檔完整性時顯示 3400MB/Min
用hd(40g) 對hd(80g) 或反過來作 都還有1300-1800MB/Min 的速度

不管照上面的方式改或是灌最新的 sis ide 的驅動 都沒用.........
看來 maxtor ata133 跟這主機板無緣....
用ata100的hd, 不管是 5400rpm 還是 7200rpm 都正常顯示,
在dos或win裡速度也正常
只有ata133的是這樣, 換了另一個 40g的maxtor ata133 情形也一樣.......
不過這兩顆 ata133接到 我這台 msi 的k7n2-delta 卻很正常
不知是不是sis的驅動的問題

有人遇過這情形嗎?

P.S. 補貼上 4顆hd的測試

主機板 = ASUS A7S266-VM
晶片組 = SiS740 + SiS961
CPU = XP1700+ (166.66mhz*12=1999.99Mhz)
RAM = DDR266-256MB *1

(W)=Windows下, 驅動程式 SiS PCI IDE UDMA Controller V2.3.2.0
(D)=DOS下, TEST.gho = 400MB, data inside = 523MB
(T)=DOS下, 同一hd裡作partition from image, 檔案是上面那個, 位置均覆蓋到hd的最前端4-6g之間的2GB的空間裡

Seagate ST320014A - 20G(薄)
W=UDMA mode 5, 34.2MB/s, Burst Mode 48.0MB/s
D=19s (1651MB/Min)
T=54s (581MB/Min)

Seagate ST344016A - 40G
W=UDMA mode 5, 33.9MB/s, Burst Mode 48.4MB/s
D=23s (1364MB/Min)
T=39s (804MB/Min)

Maxtor 6E040L0 - 40G(薄)
W=PIO mode 4, 3.8MB/s, Burst Mode 1.8MB/s
D=10s (3138MB/Min)
T=23s (1364MB/Min)

Maxtor 6Y080L0 - 80G
W=PIO mode 4, 3.8MB/s, Burst Mode 3.8MB/s
D=10s (3138MB/Min)
T=24s (1307MB/Min)

看來... 這兩顆maxtor 在windows的驅動程式沒搞定前,暫時只能用來作 ghost的存放碟.......

linux_xp
2004-12-09, 11:23 PM
遇過一次,主機板也是SIS晶片組的
因為CPU是P4的,很自然就想灌Intel IDE驅動
一般用P4,直覺就是會配Intel晶片組
沒察覺那是爛主機板,金玉其外敗絮其中
結果灌了變超慢
查硬碟模式,才發現是跑PIO4

搞半天都用不好,一度還懷疑是排線有問題
換了也沒用,最後用下下策重灌解決了.... :eye:

PIO模式,和DMA模式,在WINDOWS下
速度簡直就是天差地別

workduck
2004-12-12, 05:14 AM
遇過一次,主機板也是SIS晶片組的
因為CPU是P4的,很自然就想灌Intel IDE驅動
一般用P4,直覺就是會配Intel晶片組
沒察覺那是爛主機板,金玉其外敗絮其中
結果灌了變超慢
查硬碟模式,才發現是跑PIO4

搞半天都用不好,一度還懷疑是排線有問題
換了也沒用,最後用下下策重灌解決了.... :eye:

PIO模式,和DMA模式,在WINDOWS下
速度簡直就是天差地別


真奇怪,主機板是SIS晶片組位何麼要安裝INTEL的驅動??

安裝作業系統本身就先安裝OS再安裝OS更新,最後要找對晶片組的驅動
我用SIS晶片的主機板這麼九都沒有發生過這種情形,管它是P4還是AMD的K7 我都覺得SIS晶片組的主機板真的不錯用!!

海盜天使
2004-12-12, 02:21 PM
改用SATA就不用煩惱這些問題了

workduck
2004-12-13, 06:45 AM
請你教一下 安裝在SATA的作業系統如何使用GHOST備份,且可以成功回復??

yayuan
2004-12-13, 09:36 PM
請你教一下 安裝在SATA的作業系統如何使用GHOST備份,且可以成功回復??

若您的系統就只有SATA硬碟(沒有混接IDE硬碟)
就照正常方式使用GHOST就好了

至少小弟的可以正常使用
(一部是nForce U 400版子==>主機板內建S牌SATA控制晶片
一部是nForce 3 GB版==>南僑內建SATA控制
我發現如果我將IDE硬碟接上去GHOST就會出問題,拔掉就好了,所以我現在IDE只裝光碟~~ =>在備份/還原狀況下
做好後關機鎖上抽取盒(IDE)就又可以正常使用囉~~)