Saturday, April 07, 2007

[轉錄][心得] 硬碟被限制到PIO MODE-解決辦法

作者: zhenyuan (洞房花燭新嫁娘) 站內: Storage_Zone
標題: Re: [心得] 硬碟被限制到PIO MODE-解決辦法
時間: Fri Apr 6 12:06:07 2007

※ 引述《kichigop (總算進入物理(霧裡)了)》之銘言:
: 有沒有高人知道原理的教導一下啊...感恩...^^
簡單的來講,就是置之死地而後生
通通砍掉重練讓系統自己產生正確的機碼
但是這只是治標的方法
要治本的話還是得從ResetErrorCountersOnSuccess這個機碼著手(詳見後文)

可以參考這邊的資料
http://tw.myblog.yahoo.com/tongkashan/article?mid=331&prev=-1&next=330
M$官方網站上也有..只是上面這篇比較容易懂XD


似乎是XP SP1比較會出現pio的問題
M$那邊的說法是已於SP2解決此問題


下面是我在M$網站找到的原文
在微軟十一月份的一篇技術文章中提到,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. 完成後重新啟動電腦。


這邊的步驟跟你直接砍掉MasterIdDataCheckSum是一樣的,移除IDE裝置後
會再重新建立一次

當 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的模式了

No comments: