硬盤的DMA模式大家應(yīng)該都知道吧,硬盤的PATA模式有DMA33、DMA66、DMA100和DMA133,最新的SATA-150都出來了!一般來說現(xiàn)在大多數(shù)人用的還是PATA模式的硬盤,硬盤使用DMA模式相比以前的PIO模式傳輸?shù)乃俣纫?~8倍。DMA模式的起用對系統(tǒng)的性能起到了實質(zhì)的作用。以前有很多文章介紹過如何打開DMA模式,我在這里(電腦自動關(guān)機)也就不多說了。
但筆者發(fā)現(xiàn)一個新的“問題”——Windows 2000、XP、2003系統(tǒng)有時會自行關(guān)閉硬盤的DMA模式,自動改用PIO模式運行!這就造成在使用以上系統(tǒng)中硬盤性能突然下降,這個在52硬件論壇( 52hardware.com )上經(jīng)常被人提出,其中最明顯的現(xiàn)象有:系統(tǒng)起動速度明顯變慢,一般來說正常Windows XP系統(tǒng)啟動時那個由左向右運動的滑條最多走2~4次系統(tǒng)就能啟動,但這一問題發(fā)生時可能會走5~8次或更多!而且在運行系統(tǒng)時進(jìn)行硬盤操作時明顯感覺變慢,在運行一些大的軟件時CPU占用率時常達(dá)到100%而產(chǎn)生停頓,玩一些大型3D游戲時(比如極品飛車6)畫面時有明顯停頓(很多人這時以為是自己的顯卡問題,當(dāng)然如果你使用的是三年前的顯卡玩這些游戲是有點老了,但如果你用的是今年才買的GF顯卡那就不是它的問題了),出現(xiàn)以上問題時大家最好看看自己硬盤的DMA模式是不是被Windows 系統(tǒng)自行關(guān)閉了。查看自己的系統(tǒng)是否打開DMA模式:
1. 雙擊“管理工具”,然后雙擊“計算機管理”;
2. 單擊“系統(tǒng)工具”,然后單擊“設(shè)備管理器”;
3. 展開“IDE ATA/ATAPI 控制器”節(jié)點;
4. 雙擊您的“主要IDE控制器”;
5. 點擊“高級設(shè)置”。
看到“設(shè)備0”,下面的傳輸模式應(yīng)設(shè)為“DMA(若可用)”,再下面“當(dāng)前傳輸模式”,如果是“Ultra DMA Mode *(*為數(shù)字,DMA33為2,DMA66為4,DMA100為5、DMA133為6)”,那么你的系統(tǒng)正常,但如果以前你自己設(shè)的是“Ultra DMA Mode 6”又沒有改動,而現(xiàn)在是“Ultra DMA Mode 4”或“Ultra DMA Mode 2”更或者是“PIO 模式”而且改不過來!可能就是系統(tǒng)自行關(guān)閉了DMA模式了。
分析問題:
好了,先來說說問題是如何產(chǎn)生的。在Windows 2000/XP/2003中有這樣一個設(shè)定: Windows IDE/ATAPI 端口驅(qū)動程序 (Atapi.sys) 累積收到總共6個超時或循環(huán)冗余檢驗 (CRC) 錯誤后,驅(qū)動程序?qū)淹ㄐ潘俣龋▊魉湍J剑淖羁斓闹苯觾?nèi)存訪問 (DMA) 模式分步驟降為較慢的 DMA 模式。如果驅(qū)動程序繼續(xù)收到超時或 CRC 錯誤,則驅(qū)動程序最終將把傳送模式降為最慢的模式(PIO 模式)。 問題就在這里(電腦自動關(guān)機)!一般來說一個正常的硬盤很少會有超時或循環(huán)冗余檢驗 (CRC) 錯誤,但是當(dāng)我們使用這些系統(tǒng)里(電腦自動關(guān)機)的掛起(也有叫休眠)并恢復(fù)計算機后就很容易造成超時或循環(huán)冗余檢驗 (CRC) 錯誤。因為系統(tǒng)設(shè)定的超時值為4秒,當(dāng)系統(tǒng)向 ATA 磁盤發(fā)出讀取請求時如果硬盤回應(yīng)時間超過 4 秒的超時值時才會產(chǎn)生超時或循環(huán)冗余檢驗 (CRC) 錯誤,但因為系統(tǒng)在掛起(也有叫休眠)時硬盤是在停轉(zhuǎn)狀態(tài)中,恢復(fù)計算機時硬盤有個從停止到運動的過程,這就很容易造成大部分硬盤回應(yīng)時間超過 4 秒的超時值。也就是說當(dāng)我們使用計算機掛起6次后系統(tǒng)就會把通信速度(傳送模式)從最快的直接內(nèi)存訪問 (DMA) 模式分步驟降為較慢的 DMA 模式。如果掛起6次以上則驅(qū)動程序最終將把傳送模式降為最慢的模式(PIO 模式)。這就是Windows 系統(tǒng)突然變慢的原因。
解決問題:
若要為受影響的設(shè)備重新啟用典型DMA或更快DMA的傳送模式,請執(zhí)行以下操作:
1. 雙擊“管理工具”,然后雙擊“計算機管理”;
2. 單擊“系統(tǒng)工具”,然后單擊“設(shè)備管理器”;
3. 展開“IDE ATA/ATAPI 控制器”節(jié)點;
4. 雙擊您要為其恢復(fù)典型 DMA 傳送模式的控制器;
5. 單擊“驅(qū)動程序”選項卡;
6. 單擊“卸載”。
當(dāng)此過程完成后,重新啟動您的計算機。當(dāng) Windows 重新啟動后,將重新枚舉硬盤控制器,同時與該控制器相連的每個設(shè)備的傳送模式將重置為默認(rèn)值。
但這樣只是把硬盤設(shè)備的傳送模式重置為默認(rèn)值,當(dāng)我們再使用掛起系統(tǒng)時系統(tǒng)又會自行關(guān)閉DMA模式!所以我們還要做以下操作:
1. 單擊“開始”,單擊“運行”,鍵入 Regedit,然后單擊“確定”。
2. 在注冊表中找到并單擊以下項:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4D36E96A-E325-11CE-BFC1-08002BE10318}001和HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4D36E96A-E325-11CE-BFC1-08002BE10318}002
3. 在“編輯”菜單上,指向“新建”,然后單擊“DWORD 值”。
4. 鍵入 ResetErrorCountersOnSuccess,然后按 Enter 鍵。
5. 在“編輯”菜單上,單擊“修改”。
6. 鍵入 l,然后單擊“確定”。
7. 按照下列步驟操作,然后退出注冊表編輯器:
注意:上面注冊表最后的項“{4D36E96A-E325-11CE-BFC1-08002BE10318}”列出的帶有“0001”編號的子項對應(yīng)于一臺僅有一個 IDE 控制器的計算機的主要 IDE 通道和次要 IDE 通道。如果您的計算機有兩(電腦沒聲音)個 IDE 控制器,則對于每個控制器,主要 IDE 通道和次要 IDE 通道的帶有編號的子項分別是:“0001、0002、0003、0004、0005、0006……”。
為檢查是否找到了正確的子項,請檢查子項的 DriverDesc 值是包含字符串值“主要 IDE 通道”,還是包含字符串值“次要 IDE 通道”。
建立以上注冊表鍵值的目的是:
在Windows中,使系統(tǒng)向 ATA 磁盤發(fā)出讀取請求時的 4 秒的超時值更改為 10 秒。還實現(xiàn)了一種較不嚴(yán)格的變通策略以在發(fā)生超時錯誤和 CRC 錯誤時降低傳送模式(從較快的 DMA 模式到較慢的 DMA 模式,最終降為 PIO 模式)。以前的情況是,在每當(dāng)累積發(fā)生的超時錯誤或 CRC 錯誤的總數(shù)達(dá)到 6 次時,IDE/ATAPI 端口驅(qū)動程序 (Atapi.sys) 將降低傳送模式。當(dāng)我們建立以上注冊表鍵值實現(xiàn)新的策略后,Atapi.sys 僅在連續(xù)發(fā)生 6 次超時錯誤或 CRC 錯誤后才降低傳送模式。
這一新的策略實現(xiàn)后將大大降低系統(tǒng)降低或關(guān)閉DMA傳送模式的機會?,F(xiàn)在我們可以安心地使用掛起系統(tǒng)和高性能的DMA硬盤模式,再也不會發(fā)生系統(tǒng)性能突然下降的情況了。
最后有幾點提醒大家特別特別注意:
1.如果安裝虛擬光驅(qū),那么很有可能導(dǎo)致卸載IDE驅(qū)動程序后無法再次正確安裝??!
2.如果使用SA轉(zhuǎn)接卡,則很有可能因為硬件兼容性的原因?qū)е聼o法開啟DMA!!
3.如果數(shù)據(jù)源所在設(shè)備傳輸速度慢、或者所在硬盤沒有打開DMA,也會造成刻錄速度慢而不穩(wěn)定、連續(xù)緩存欠載的假相!——hiro 敬上!
另外,網(wǎng)友也提出了一些經(jīng)驗之談,在此一并貼上。
**********
若Intel ICH2/3/4,在XP下裝了IAA后,有可能會出現(xiàn)IAA中顯示DMA打開,但是Nero InfoTools中顯示沒有打開,原因是IAA的問題,卸載即可
關(guān)于IAA,是Intel開發(fā)出的在98下打開DMA的工具,自ICH5后就不再提供對98的支持。IAA自然不再更新,但是ICH2/3/4仍然可以在XP下安裝IAA,但由此引起的問題多多
VIA的Miniport,NV SW也是一樣,不過相對好些