Dataoverføringsmoduser. Hvordan gjenopprette systemytelse, PIO- og DMA-modus Tilbakestill problem fra dma til pio

💖 Liker du det? Del lenken med vennene dine

For å overføre data mellom harddisken og PC-minnet, brukes to hovedmoduser:

    programmer inn-/utgangsmodus (programmert inngang/utgang, PIO);

    Direkte minnetilgang (DMA)-modus.

pio-modus

I PIO-modus, hver byte med informasjon med harddisk først lest av CPU og først deretter skrevet til RAM. Avhengig av varigheten av lesesyklusen og antall sektorer som overføres per disktilgang, er det PIO-moduser (PIO-modus 0), PIO1, PIO2, PIO3, PI04, PI05.

dma-modus

PIO-moduser brukes i enkeltoppgaveoperativsystemer når datamaskinens prosessor leser eller skriver data til bufferminnet på en IDE- eller EIDE-harddisk, og deretter overføres disse dataene til RAM. I multitasking-operativsystemer anbefales det å bruke DMA-moduser (Direct Memory Access). Input/output av data i denne modusen utføres i RAM-en til PC-en uten deltakelse fra CPU. Denne prosessen foregår under kontroll av harddiskkontrolleren i pausene mellom CPU-tilganger til RAM, noe som reduserer dataoverføringshastigheten noe, men sparer prosessortid. For å implementere DMA-moduser, i motsetning til Ryu, trengs både spesielle kontrollere og drivere.

DMA-moduser er delt inn i enkeltord (Singleword) og multi-ord (Multiword) avhengig av antall ord som overføres i en operasjonssyklus med systembussen.

Seriedata (sata)

En ytterligere økning i dataoverføringshastigheten gjennom det parallelle ATA-grensesnittet forårsaket tekniske vanskeligheter. I tillegg var ikke PC-produsentene fornøyd med den brede 40-kjerners (eller 80-kjerners) kabelen, som hindrer luftsirkulasjon inne i kabinettet og er begrenset til en lengde på 46 cm.

Derfor, i 1999, ble Serial ATA Working Group opprettet, hvis formål var å lage et serielt ATA-grensesnitt - Serial ATA (SATA). Grensesnittet ble introdusert i 2001 og demonstrerte en dataoverføringshastighet på 150 MB/s.

I tillegg, for å koble til flere enheter (HDD, CD-ROM, DVD-ROM-stasjoner, etc.), vil ikke en stjernetopologi brukes (når hver enhet må identifiseres som Master eller Slave), men en punkt-til-punkt topologi, når hver enhet er direkte koblet til vertsadapteren (som SCSI-enheter).

SCSL (Small Computer System Interface) er et mer allsidig og effektivt grensesnitt enn en IDE. Imidlertid er maskinvareimplementeringen betydelig dyrere enn IDE-grensesnittet. SCSI-grensesnittet har klare fordeler ved arbeid med video, samt ved bruk av en CD-ROM-stasjon i et multitasking-operativmiljø eller som en nettverksstasjon.

Kommunikasjon mellom en SCSI-enhet og en I/O-buss (som ISA, PCI, VLB) gjøres via en ekstern buss ved hjelp av en vertsadapter. Enheter koblet til SCSI-bussen samhandler ikke direkte med hverandre, men gjennom de innebygde SCSI-kontrollerne.

Hei alle blogglesere. I denne artikkelen vil vi snakke om hvordan du gjenoppretter systemytelsen. Ofte har brukere et problem veldig sakte arbeid datamaskin, spesielt ved opptak og kl lesning disker, eller rett og slett urimelige "bremser" av systemet under drift eller lasting. Hvorfor systemet fryser leses
Det kan være mange grunner til dette, i dag foreslår jeg å vurdere en ganske vanlig en - dette er feil driftsmåte CD/DVD - ROM eller harddisk , dvs. la oss snakke om PIO og DMA.Hvordan sjekke HDD les for feil og fiks dem

Hva er essensen og forskjellen mellom PIO og DMA.

PIO og DMA- Dette er to driftsmoduser for harddisker, i det generelle tilfellet for enhver stasjon.
PIO (programmerbar inngang/utgang)- allerede utdatert modus, den må fungere
engasjere seg CPU, noe som resulterer i et betydelig tap av ytelse.
DMA (direkte minnetilgang)- en moderne metode som omgår prosessoren og
trekker direkte til RAM, tillater dette betydelig øke produktiviteten og bli kvitt irriterende "bremser".
DMA-modus i forskjellige versjoner har imidlertid lenge vært brukt i Windows 7, 8 og 10 operativsystemer i Windows XP, en situasjon ofte oppstår der DMA bytter automatisk til PIO og det vil ikke fungere å bringe det tilbake med konvensjonelle metoder. Hva er årsaken til denne situasjonen?
Implementert i Windows XP mekanisme feilkontroll, hvis feil oppstår for ofte ved lesing fra en harddisk eller annen stasjon, bytter systemet automatisk til en langsommere modus, hvor prosentandelen er lavere. Men, Windows XP kan overføre en normalt fungerende enhet til denne modusen.
Hvordan fikse feil Windows lest

Og så, la oss sjekke driftsmodusene til alle stasjonene slik at systemet ikke bremser ned ..

1 . Starter konsollen "Databehandling"- høyreklikk på "Datamaskinen min"


i rullegardinmenyen velger du elementet "Enhetsbehandling", eller gjennom
Kontrollpanel. Eller Start - Kjør - devmgmt.msc

2. Velg " Enhetsbehandling", velg IDE ATA/ATAPI kontrollere,


flere linjer med kontrollere vil åpne - vi er interessert i :
Primær og sekundær kanaler IDE→ gå en etter en til eiendommer disse kanalene (høyreklikk på kanalen, linje " Eiendommer"), til bokmerket " Ekstra alternativer",
det er to grupper her "Enhet 0" og "Enhet 1", hver har linjer
"Overføringsmodus"- må velges "DMA hvis tilgjengelig”, så linjen "Gjeldende overføringsmodus", bør være noe sånt "Ultra DMA-modus: 4,


hvis "PIO Mode" er satt her, da er dette bare vår sak og vi vil fiks det.
Hvis overalt verdt modus ultra DMA, da er du i orden, og du kan ikke fortsette ytterligere handlinger.
3. Til å begynne med, la oss prøve å fikse det manuelt - i hver linje «Overføringsmodus»-sett «DMA, hvis tilgjengelig», trykk "OK" og start datamaskinen på nytt. Etter å ha slått på igjen
vi ser på driftsmodusene til kanalene, hvis DMA er overalt, så er alt i orden, hvis PIO gjenstår, så fortsetter vi.
4. Finn igjen Primære og sekundære IDE-kanaler og slett dem (høyreklikk på hver kanal, velg i listen "Slett"). Ikke vær redd, alt vil fungere bra.
Start datamaskinen på nytt - Windows XP vil finne kontrollere og sett dem i hurtigmodus, dvs. i DMA. Sjekk resultatet, det skal være en modus overalt DMA.
5. Hvis alt det ovennevnte ikke hjalp og du igjen ser " PIO-modus", da vil det være nødvendig omorganisere drivere til hovedkort- omstart
og sjekk resultatet på nytt.
6. Vel, det siste punktet, hvis etter all lidelsen regimet PIO aldri forsvunnet, så må du redigere inn registrere. Jeg vil merke - utfør alle operasjoner med
registret veldig nøye og nøye, enhver feil handling kan føre til fullstendig ubrukbarhet av systemet ditt. Det er best å lage en kopi av registeret på forhånd.
Hvordan konfigurere Windows XP ved å bruke registeret lese

Prøv først å deaktivere feilkontrollsystemet.
For å gjøre dette, i registergrenen:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdfs\,
lage en nøkkel Feilkontroll og sett verdien til 0.


Etter det, start på nytt og følg trinnet №4.


i den kan du stille inn modus manuelt DMA.
Det er flere mapper her. - 0000, 0001, 0002.
0000 - ansvarlig for kontrolleren selv;
0001 - ansvarlig for Secondary IDE Chanell;
0002 - ansvarlig for Primær IDE Chanell;
Åpne mappen for kanalen vi trenger. I det er
flere taster, til å begynne med, velg:
MasterDeviceTimingModeAllowed
SlaveDevice TimingModeTillatt
og sett verdien til 0xffffffff.
Etter det setter vi verdien på følgende nøkler:
MasterDeviceTimingMode
SlaveDevice TimingMode
i henhold til følgende data, avhengig av
støttes UDMA - modus:
UDMA-modus 2 - 0x2010
UDMA-modus 4 - 0x8010
UDMA-modus 5 - 0×10010
UDMA-modus 6 - 0xffff

Etter det, start på nytt og sjekk resultatet - alt skal fungere bra.

Hvordan få fart på og gjenopprette Windows-ytelse 10, les
Hva er hastigheten på informasjonsoverføring i datamaskiner, les
Jeg håper denne artikkelen vil hjelpe deg med å stille inn modusene riktig. PIO og DMA og forbedre den generelle systemytelsen.

Hvis datamaskinen begynner å gå tregere, begynner de fleste brukere først og fremst å synde på prosessoren, RAM eller skjermkort, men de glemmer helt at harddisken er en like viktig del av datamaskinen og i mange tilfeller problemet av å bremse operativsystem knyttet til ham.

Mulige driftsmoduser for harddisken

Harddisken har muligheten til å jobbe med data i to moduser: den utdaterte PIO og den nyere DMA. De er radikalt forskjellige i prinsippet for arbeidet deres og følgelig hastigheten på databehandlingen. Så i PIO-modus behandles alle data ved hjelp av prosessoren, som belaster den tungt og som et resultat fører til et fall i den totale systemytelsen. Men DMA-modusen er allerede maskinvaredatabehandling der forskjellige akseleratorer brukes og CPU-en er ikke involvert i denne prosessen.

Spontan bytte av Windows til PIO-modus og tegn på dette

Som standard fungerer Windows med HDD i høyhastighets DMA-modus, men noen ganger, på grunn av spesifikke feil, bytter den til PIO-modus på egen hånd. Dessuten er det svært problematisk å slå på DMA igjen, og det er nesten umulig å gjøre det med standardmetoder. De karakteristiske tegnene på at Windows har gått over til å jobbe med en harddisk i PIO-modus er:

Reduser hastigheten på arbeidet med HDD flere ganger;
Lav systemhastighet under diskoperasjoner;
Overdreven CPU-bruk (80-90 %) når du arbeider med en harddisk;
Systemet begynte å "bremse" kraftig. Det vil si at for en time siden var alt bra, og så dukket det plutselig opp problemer.

dette øyeblikket Harddisken er det svakeste punktet i hele systemet, og et fall i hastigheten med halvparten fører til katastrofale konsekvenser. For å være sikker på at Windows virkelig gikk over til å jobbe med harddisken i sakte PIO-modus, må du gjøre følgende:

1. Klikk på "Min datamaskin"-ikonet med høyre museknapp og velg "Administrer";

2. Utvid kontrollergrenen og finn kanalen som harddisken er koblet til;
3. Høyreklikk på den, gå til "Egenskaper" og bytt til "Avanserte alternativer";
4. Se på linjen "Gjeldende overføringsmodus". Hvis det står "DMA-modus", er alt i orden, men hvis "PIO-modus", må du gjøre noen få enkle operasjoner og returnere disken til dens foretrukne driftsmodus.

Slå på DMA-modus

Faktisk kan dette oppnås på to måter. Den første er ganske enkel, og du trenger bare å fjerne den defekte enheten og deretter starte datamaskinen på nytt. Etter det vil Windows automatisk installere det igjen og enheten vil bytte tilbake til DMA-modus.

Hvis du av en eller annen grunn ikke klarer å aktivere DMA på den første måten, må du gjøre litt mer innsats og bruke Registerredigering. Gjør følgende:

  1. Trykk Win + R og skriv inn kommandoen på linjen som vises regedit;
  2. Naviger underveis HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\(4D36E96A-E325-11CE-BFC1-08002BE10318);

  1. Finn linjen MasterDeviceTimingModeAllowed.
  2. Hvis verdien av denne linjen er skrevet i kolonnen 0x00000001f, betyr dette at harddisken din virkelig fungerer i PIO-modus;
  3. Endre verdien til 0xffffffff og start datamaskinen på nytt.

Etter det vil harddisken bytte tilbake til DMA-modus, og hastigheten på driften og den generelle hastigheten til systemet vil øke betydelig.

Sekundærmester

alternativ-menyen for å tildele hver av de mulige fire harddiskene (E) IDE-grensesnitt optimal PIO-modus (programmerbar inngang/utgang). Mulige verdier: "Auto" (standard), "Modus 0", "Modus 1", "Modus 2", "Modus 3", "Modus 4". Modus 0...2 refererer til vanlige IDE-stasjoner (ATA-standard), 3 og 4 til EIDE (ATA-2), modus 5 til ATA-3. Det er klart at i automatisk modus vil systemet velge den beste dataoverføringshastigheten for hver av diskene. Men vi må huske at den automatiske innstillingen av PIO-modus utføres i samsvar med muligheten for automatisk gjenkjenning av funksjonen til harddisken og mengden informasjon mottatt fra enheten. Hvis brukeren er i tvil om riktigheten av den automatiske gjenkjenningen av PIO-modusen, kan brukeren, i samsvar med dokumentasjonen for harddisken, endre PIO-modusen for hvilken som helst av diskene. BIOS i "Auto"-modus kan også feilaktig identifisere PIO-modusen til EIDE-disken, og sistnevnte gjenkjennes ikke. Modus 3 og 4 krever bruk av EIDE-disker i systemet.

Lignende (fire!) alternativer kan også kalles " IDEHovedHerrePIO" etc.

Alternativ " Hurtigprogrammert I/O-modus(er)" tilbyr følgende verdier: "Deaktivert", "Automatisk oppdaget", "PIO0", ... "PIO4". Alternativet med samme navn foreslo uventet verdiene "Deaktivert" og "Automatisk oppdaget" (standard). hastighetskarakteristikk mindre enn optimal, "Auto Detected" angir maksimalt mulig hastighet.

Alternativet kan også kalles " Modus PIO-overføringsdata"eller" Overføringsmodus". Det siste alternativet ga følgende sett med verdier: "Auto", "Standard" (tilsvarer "Fast PIO 1"), "Fast PIO 1", "Fast PIO 2", "Fast PIO 3", "Fast PIO". 4", " FPIO 3 / DMA 1", "FPIO 4 / DMA 2". Det er tydelig at vi hver gang snakker om parametrene til fire harddisker, eller to for eldre systemer. I dette tilfellet kan alternativene være kalt " IDE Master PIO-modus" ("Master Drive PIO-modus") og " IDE Slave PIO-modus" ("Slave Drive PIO-modus").

PIO (Programmable Input/Output - "programmerbar inngang/utgang") utføres av sentralprosessoren og fungerer ved å overføre data til bestemte inngangs-/utgangsadresser (se underseksjonen "Porter"). PIO-modusene bestemmer hvor raskt data kan overføres mellom stasjonen og kontrolleren. Når de brukes, er registrene til den sentrale prosessoren i systemet involvert. Men det er ikke alt! PIO- eller DMA-modusene bestemmer størrelsen på pakkene med overført informasjon, måten de er kodet på, hastigheten og overføringssekvensen, alle tidskarakteristikkene til utvekslingssyklusen. Avhengig av modusene settes forskjellige syklustider, slik at overføringshastighetene kan variere over et veldig bredt område (se tabell).

Når du mottar kommandoen "Identify Drive", returnerer stasjonen, blant andre parametere, informasjon om de støttede PIO- og DMA-modusene. Disse parametrene kan også bestemmes ved hjelp av spesielle verktøy. Overføringsmodusen er satt av verdien til ett av registrene - SC (register for sektortelleren til ATA-enheter). Gjennom en av driftsmodusene til dette registeret styres utvekslingsmodusen.

ATA-2-moduser (PIO 3 og PIO 4) bruker maskinvareflytkontroll. For å være spesifikk inkluderer Enhanced IDE operasjoner kalt "IORDY flow control" som lar stasjonen aktivere burst-modus for 100 % bussbåndbreddebruk. Flytkontrollmodusen overfører initiativet til enheten (disken) og lar deg bli kvitt ineffektive "blinde" PIO-moduser ved å stille inn kontrollerens båndbredde i samsvar med egenskapene til harddisken. Dette betyr at i de tilfellene hvor hele stripen er tilgjengelig, vil harddisken administrere datautvekslingen med vertsadapteren.

Hva er dette signalet? "IORDY" (Input/Output Ready) er et signal fra EIDE-harddisken som bekrefter fullføringen av utvekslingssyklusen med kontrolleren. Andre navn er "CHRDY", "IOCHDRY". Bruken av "IORDY" lar en høyhastighets harddisk forsinke utvekslingssyklusen med kontrolleren når den ikke har tid til å motta eller overføre data. Dette gjør det mulig å redusere standardvarigheten av utvekslingssyklusen til et minimum, øke hastigheten til maksimum, og om nødvendig forlenge individuelle sykluser ved hjelp av "IORDY". For dette må signalet støttes av både harddisken og kontrolleren. Flytkontroll på disksiden aktiveres av kontrolleren ved å bruke kommandoen "Set Features", som et resultat av at en slik utveksling støttes samtidig av både disken og kontrolleren. Kontrollere som ikke støtter "IORDY" kan forårsake tap av data ved bruk av raske PIO-moduser; i dette tilfellet bør du bruke lavere hastighetsmoduser. Modus 5 er nevnt i noen kilder, men den har ikke fått distribusjon og er ikke standard.

Hvis det er umulig å programmere utvekslingsmodusene individuelt for hver av enhetene i systemet og ved tilkobling av enheter som fungerer optimalt i forskjellige moduser, vil systemet settes til å utveksle med hastigheten til minimum av modusene. Derfor er standardanbefalingen ikke å koble en harddisk og en CD-ROM til samme kanal.

Programmerbare I/O-moduser er bare effektive nok i enkeltoppgavemiljøer. For multitasking OS er DMA-modus mer å foretrekke. Det må huskes at høyhastighets DMA flere overføringsmoduser implementeres av operativsystemdrivere. Progtil driveren bestemmer fleksibiliteten til å kontrollere DMA-moduser.

En lang tilstand av stabilitet bryter før eller siden noe uforutsigbart og merkelig, så dette øyeblikket er kommet. For et par dager siden, mens jeg kopierte en fil fra en fysisk disk til en annen, la jeg plutselig merke til at hastigheten var katastrofalt lav - 4-6 Mb/s i stedet for de forventede 50-90 Mb/s (korrigert for fragmentering). Jeg ser på CPU-belastningen - en kjerne er fullt opptatt med avbruddsbehandling, alt er klart - disken har byttet til PIO-modus.

Innledende konfigurasjon: ASUS P5Q, 4 x 1 Gb SATA-stasjoner, 2 x 1,5 Gb SATA-stasjoner, ingen RAID-er, Windows XP SP3. Disken fungerte i UDMA-modus, som alle de andre, jeg testet den etter installasjon. Device Manager –> IDE-kontrollere –> kanal og se på “current transfer mode”. På bildet fungerer begge enhetene i UDMA-modus, i mitt tilfelle fungerte den andre enheten i PIO-modus, men jeg lagret ikke dette bildet. For å forstå hvem som henger på hvilken kanal, bytt Enhetsbehandling-visningen til Vis –> Enheter etter tilkobling.

Selv om stasjonene er SATA, er kontrollerene i Enhetsbehandling ATA. Faktum er at i BIOS er SATA-kontrollere konfigurert som standard til å late som de er ATA-kontrollere, i så fall er det ikke nødvendig med flere nye AHCI-drivere. Du kan bytte til AHCI-modus smertefritt, det påvirker ikke den logiske organiseringen av data, det krever bare de riktige driverne. PÅ AHCI-modus det er støtte for NCQ (ombestilling av HDD-kommandoer) og generelt øker ytelsen litt, men ikke mye, og hot-swap-støtte er også lagt til.

Versjoner mulige årsaker:

1) Noe med et tog.
2) Noe med sjåførene, feil eller konflikt.
3) Noe med HDD.

Det er et annet system - Windows 7, jeg starter opp i det og observerer full ytelse til disker i UDMA-moduser, noe som betyr at maskinvaren ser ut til å være normal. Jeg ser på hendelsesloggen, jeg finner ingen meldinger om et problem med disker, jeg ser på SMART-diagnostikk - alt er i orden, det er ingen enhetskonflikter, alt er i orden. Jeg tar de nyeste driverne fra ASUS. Skriv ned det gamle versjonsnummeret Intel-drivere ICH10R, jeg satte en ny. Den settes mistenkelig raskt, som et resultat av at den ikke ble oppdatert. Jeg oppdaterer ICH10R-driverne manuelt via INF-filer, den er installert, men problemet gjenstår. Jeg går til Intel, laster ned den nyeste versjonen, installerer den, ingenting er installert igjen. Jeg finner ut at driverne deres oppdateres bare hvis enheten ikke har en driver i det hele tatt, for å tvinge er det nødvendig å bruke den hemmelige nøkkelen "-overlall", jeg prøver å oppdatere, men løser ikke problemet. Jeg bytter kabel, tar den ut, stikker inn disken - det hjelper ikke. Mellomresultatet er at maskinvaren fungerer, den nye programvaren hjelper ikke.

Jeg finner en interessant artikkel i Microsoft: "Etter flere CRC-feil eller tidsavbrudd, bruker IDE ATA- og ATAPI-stasjoner PIO-modus" . De skriver at hvis det var overføringsfeil via UDMA, så senker systemet sekvensielt modusene opp til PIO-modus (eller umiddelbart) og fryser denne tilstanden! For å komme tilbake foreslår de å slette kontrolleren fra Enhetsbehandlingen, og den vil bli gjenfødt fra asken. Jeg gikk ikke for dette, fordi. Jeg var redd for at han kanskje ikke ble gjenfødt (de skrev om det et sted), så jeg gikk den andre veien beskrevet der og andre steder.

Løsning.Åpne registergrenen "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl lSet\Control\Class\(4D36E96A-E325-11CE-B FC1-08002BE10318)", den vil inneholde grenene 0000, 0001, etc. De tilsvarer enheter i Enhetsbehandling. Vi er bare interessert i kanaler, vi ser på navnet av DriverDesc, i dette tilfellet "Primær IDE-kanal".

Vær oppmerksom på MasterDeviceTimingModeAllowed og SlaveDeviceTimingModeAllowed - de setter masken for tillatte moduser, hvis 0xffffffff, så er alt tillatt, og hvis 0x1f, så bare PIO-modus. Jeg har et problem med Slave. Selve gjeldende moduser er lagret i MasterDeviceTimingMode og SlaveDeviceTimingMode, de er forskjellige (du kan finne betydningen av tallene på nettet). MS foreslår å gjøre følgende - sett en ekstra nøkkel ResetErrorCountersOnSuccess (DWORD) = 1 og start på nytt. Jeg gjorde det, men det fungerte ikke, den tilbakestilte bare ønsket UserSlaveDeviceTimingModeAllowed til 0x1f også. Jeg returnerte den til Enhetsbehandling, men jeg tror du kan angi 0xffffffff manuelt her også. Deretter satte jeg SlaveDeviceTimingModeAllowed = 0xffffffff, startet på nytt og voila!, alt fungerte. Totalt sett tror jeg det bare var nødvendig å gjøre følgende (problemet er på slaven):

UserSlaveDeviceTimingModeAllowed = 0xffffffff, SlaveDeviceTimingModeAllowed = 0xffffffff, ResetErrorCountersOnSuccess = 1 og start på nytt.

Følgende bilde viser den endelige tilstanden til registeret etter en omstart. Modusene er nå de samme, maskene er bevart og i Enhetsbehandling ser vi bildet, som i begynnelsen av innlegget.

Nå for grunnen. Som det følger av MS-artikkelen, var en av grunnene til å fikse driveren at HDD-starttidsavbruddet var utilstrekkelig (i Win2000 - 4 sek, laget 10 sek), og dette var et problem i tilfelle diskene kom ut av dvale. Jeg brukte hele tiden innstillingen for å slå av disker etter inaktivitet etter 2 timer, noe som noen ganger førte til at viften deres våknet når noen applikasjoner ønsket å klatre opp flere partisjoner samtidig. Jeg tror kanskje at tidsavbruddet i et eller annet scenario fortsatt ble overskredet og en feil ble registrert, noe som førte til deaktivering av UDMA. Nå nektet jeg å slå av diskene, la dem fungere, dessuten kan hyppig skru av og på gjøre mer skade enn nytte.

fortelle venner