Milanova kuhinja

cogito ergo sum.

Thursday, September 09, 2004

PIO/DMA podešavanja u Windowsu

Kod većine ljudi kod kojih intervenišem na računaru prisutan je jedan problem koji se relativno lako otklanja (zavisno od OS-a koji je instaliran) a vidno usporava računar i degradira mu performanse.

Radi se, zapravo, o PIO/DMA podešavanjima.

Da malo pojasnim. Uređaji za pohranjivanje i čitanje podataka (hard diskovi i optički uređaji, CD-ROM/DVD) komuniciraju sa ostatkom računara preko hardverskog kontrolera (controllers) i to na dva načina (dva moda): PIO i DMA.

PIO (Programmed Input/Outpu) mod je lošiji način transfera podataka sa stanovišta brzine. Kod ovog moda uređaj šalje podatke u RAM memoriju koristeći procesor (HDD/CD-ROM -> Procesor -> RAM), usporavajući računar i u potpunosti onemugućava multi-tasking, tj. pokretanje više programa odjednom. I zaista, ukoliko pokušate da prekopirate nešto sa CD-ROMa u PIO modu zauzeće procesora ode do 100%, što se lepo može videti iz Task Menadžera (Ctrl-Alt-Delete).

DMA (Direct Memory Acces) tj. mod direktnog pristupa memoriji u potpunosti zaobilazi procesor (HDD/CD-ROM -> RAM) i omogućava istovremeno korišćenje zahtevnijih programa dok, recimo, kopirate film u DivX formatu sa CD-a na hard (što je primer za kopiranje jednog velikog fajla cca 700MB) ili MP3 kompilacije (više manjih fajlova).

Odmah da razjasnim da je DMA, kao što sam već napomenuo, bolji mod za transfer podatka samo sa stanovišta brzine i zauzeća procesora; PIO mod je bolji zbog zaštite integriteta podataka. Prostim jezikom, prilkom baratanja podacima procesor proverava neke kontrolne sume (check sums) da ne bi došlo do greške u transferu. Međutim, do takvih grešaka, u sakodnevnom radu, gotovo nikada ne dolazi.

Ovaj problem (uslovno rečeno) kod Windowsa98 i srodnih (SE2 I ME) lako otkloniti. Iz Control Panela odabere se System Properties, onda Hardwer, odabere se željeni hard ili CD-ROM uređaj.



Potom se ode na Properties, čekira DMA, klikne na OK i restartuje računar. Et voilá, procesor je slobodan.

Kod WinXP-a (čini mi se i kod servera 2000), nastaje pravi problem. Korisnik (administrator, svejedno) ne može da forsira DMA mod.

Dakle Control Panel -> System Properties -> Hardver -> Device Manager -> IDE ATA/ATAPI controllers (za razliku od Win98 gde se ide na uređaj) -> Primary/Secondary IDE channel -> Advanced settings i videćete u kom modu rade vaši uređaji.



Poželjno je da je uključeno DMA if available, ukoliko nije uključiti i restartovati računar.

E sad, Windows XP ima (hm, negativnu) osobinu da sam procenjuje koliko je integritet vaših podataka ugrožen i da (tajno) obori DMA transfer na PIO i, što je najcrnje, ne može se isključiti. Problem, zapravo, nastaje kada imate neki ogrebani CD/DVD koje OS pokuša da pročita 5-6 puta a onda "obori" transfer sa DMA na PIO, kako bi održao integritet podataka (pominjani checksum). U tom slučaju, PIO mod je nemoguće isključiti iz GUI-a (korisničkog interfejsa) već je neophodno posegnuti za Windows Registry bazom.

UPOZORENJE: SVAKO NESTRUČNO RUKOVANJE WINDOWS REGISTRY BAZOM MOŽE IZAZVATI KRAHIRANJE POJEDINIH PROGRAMA I ČITAVOG OPERATIVNOG SISTEMA.

Ha, ovo je samo mali disclaimer da se ogradim od nestručnog rukovanja :)

Idite na Start -> Run, ukucajite regedit onda OK.
Kroz navigacioni deo registry editora pronađite sledeći ključ:


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
{4D36E96A-E325-11CE-BFC1-08002BE10318}


On ima podključeve (sub-keys) 0000, 0001, 0002, respektivno (može da varira od računara do računara). Uobičajeno je da je 0001 Primary a 0002 Secondary IDE channel.

Potražite atribute (sa desne strane) MasterIdDataChecksum i SlaveIdDataChecksum. Obrišite ih, slobodno.

Zatvorite registry editor i restartujte računar.

Posle restarta, Windows opet dodeljuje modove uređajima. Proverite u System Properties da li je DMA uključen. I to je to.

Naravno, ovo nije trajno rešenje jer ukoliko opet ima problema sa čitanjem CD-ova mušičavi WinXP će opet uključiti PIO. Onda ponoviti operaciju :)

0 Comments:

Post a Comment

<< Home