天天看點

DMA模式

DMA被關閉的判斷與修複

(分享)如何防止Windows自行關閉硬碟DMA模式

硬碟的DMA模式大家應該都知道吧,硬碟的PATA模式有DMA33、DMA66、DMA100和DMA133,最新的SATA-150都出來了!一般來說現在大多數人用的還是PATA模式的硬碟,硬碟使用DMA模式相比以前的PIO模式傳輸的速度要快2~8倍。DMA模式的起用對系統的性能起到了實質的作用。以前有很多文章介紹過如何打開DMA模式,我在這裡也就不多說了。

但筆者發現一個新的“問題”——Windows 2000、XP、2003系統有時會自行關閉硬碟的DMA模式,自動改用PIO模式運作!這就造成在使用以上系統中硬碟性能突然下降,其中最明顯的現象有:系統起動速度明顯變慢,一般來說正常Windows XP系統啟動時那個由左向右運動的滑條最多走2~4次系統就能啟動,但這一問題發生時可能會走5~8次或更多!而且在運作系統時進行硬碟操作時明顯感覺變慢,在運作一些大的軟體時CPU占用率時常達到100%而産生停頓,玩一些大型3D遊戲時(比如極品飛車6)畫面時有明顯停頓(很多人這時以為是自己的顯示卡問題,當然如果你使用的是三年前的顯示卡玩這些遊戲是有點老了,但如果你用的是今年才買的GF顯示卡那就不是它的問題了),出現以上問題時大家最好看看自己硬碟的DMA模式是不是被Windows 系統自行關閉了。檢視自己的系統是否打開DMA模式:2

1. 輕按兩下“管理工具”,然後輕按兩下“計算機管理”

2. 單擊“系統工具”,然後單擊“裝置管理器

3. 展開“IDE ATA/ATAPI 控制器”節點

4. 輕按兩下您的“主要IDE控制器”

5. 點選“進階設定”

看到“裝置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) 累積收到總共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_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. 鍵入 l,然後單擊“确定”

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傳送模式的機會。現在我們可以安心地使用挂起系統和高性能的DMA硬碟模式,再也不會發生系統性能突然下降的情況了。

+

+

+

+

+

+

+

硬碟DMA模式被改為PIO的解決方法

    大家都知道,硬碟必須打開DMA模式才會跑得快。而開啟各種硬體裝置的DMA模式的條件,除主機闆BIOS必須打開DMA支援選項外,Windows作業系統内的IDE裝置也要設成正确的DMA模式才行。不過,據說Windows XP若發生多次存取錯誤(如當機後不正常關機),就會自動把硬碟降為較低速的DMA模式或更慢的PIO模式。這個問題應該如何發現并解決呢?

  近幾年來生産的硬碟,大緻采用Ultra DMA 33/66/100/133等幾種傳輸模式(目前市場上所能買到的都是DMA100以上的硬碟),數字越大代表資料傳輸速度越快。一般情況下,Windows XP會根據硬碟本身的技術規格,自動把它設為正确的DMA模式。

  不過根據微軟公司公布的一篇技術性文章( http://support.microsoft.com/?kbid=817472)指出,當XP系統發生多次錯誤後,硬碟的傳輸模式很可能會被系統自動修改降低。如果你發現硬碟速度突然變慢了,可能就是發生了此問題。下面,筆者告訴你如何強制固定硬碟的DMA模式,不讓作業系統修改,進而使你的電腦一直保持在最佳狀态。

  1、首先,我們如何才能知道硬碟的DMA模式是否被XP系統修改呢?在桌面“我的電腦”圖示上單擊滑鼠右鍵,并于随後出現的快捷功能菜單中點選“管理”一項。

2、打開“計算機管理”視窗後,點選左邊小視窗的“裝置管理器”,然後展開右方小視窗的“IDE ATA/ATAPI控制器”。在“主要IDE通道”一項上輕按兩下滑鼠左鍵,彈出“主要IDE通道屬性”設定視窗,再切換到“進階設定”标簽頁,就可以檢查XP系統中實際的DMA模式。

其中,“裝置0”和“裝置1”兩欄分别代表IDE排線連接配接的第一個硬體裝置和第二個硬體裝置。請大家根據自己硬碟所接的位置來辨識。例如筆者電腦中的“裝置0”為硬碟,“裝置1”為光驅。如果電腦中的另一條IDE排線還接着另外一個硬碟,則請檢查“次要IDE通道”的内容。

  至于“目前傳送模式”一欄中的代号,分别為:“模式0(DMA)”、“模式2(DMA 33)”、“模式4(DMA 66)”、“模式5(DMA 100)”、“模式6(DMA 133)”,請大家自己對照電腦硬碟的技術規格來判斷。

3、若上面一步中顯示的系統DMA模式與你的硬碟實際規格不一樣,則可能是被XP系統修改了。這時即使你現在在“目前傳送模式”一欄改成正确的DMA模式,下次開機還是會跳回原設定。是以,我們必須先切換到“驅動程式”标簽頁,并單擊“解除安裝”按鈕,然後重新啟動電腦。

4、重開機後,在XP桌面上點選“開始”→“運作”,輸入“regedit”以運作“系統資料庫編輯器”程式。然後查找下面的主鍵:“HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Class/{4D36E96A-E325-11CE-BFC1-08002BE10318}/0001”

  5、找到該主鍵後,在系統資料庫編輯器右方視窗的空白處單擊滑鼠右鍵,點選“建立”→“DWORD值”。

 6、将此DWORD值重新命名為“ResetErrorCountersOnSuccess”(注意大小寫),然後在該DWORD值上單擊滑鼠右鍵,在随後出現的快捷菜單中點“修改”一項。

  7、出現“編輯DWORD值”對話框後,将“數值資料”一欄由原本的“0”改為“1”,然後再點“确定”按鈕。重新啟動電腦後,現在系統可以強制改回與硬碟技術規格相符的DMA模式。

8、有一點需要補充的是,如果你的電腦包含兩個以上的IDE控制器(裝有兩個以上的硬碟),則在“HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Class/{4D36E96A-E325-11CE-BFC1-08002BE10318}”主鍵下,可能還有“0002”、“0003”……等子項,代表每一組主要和次要IDE通道,請大家按相同的方法來進行修改即可。

同樣,你也可以參照微軟的技術文章http://support.microsoft.com/?kbid=817472,來解決此類的問題,筆者所玩的機子,很早之前就出現了這類的問題,苦于不知道從何下手解決,有時兩天就要裝一次系統,而且也不敢裝别的軟體,總以為是裝了某個軟體導緻的,最後了現,也不是這麼回事.于是找到這篇文章,現在也正在用這個方法,希望能解決.

繼續閱讀