De harde schijf werkt in pio-modus. Systeemprestaties, PIO- en DMA-modi herstellen. DMA, wat is dat? Waar heb je het over

Hallo aan alle bloglezers. In dit artikel zullen we het hebben over het herstellen van de systeemprestaties. Vaak hebben gebruikers een probleem langzaam werk vooral computers bij het opnemen en bij lezing schijven, of simpelweg onredelijke “remmen” van het systeem tijdens bedrijf of laden. Waarom het systeem vastloopt, lees
Daar kunnen heel veel redenen voor zijn, vandaag stel ik voor om een ​​vrij veel voorkomende reden te overwegen: dit is een onjuiste bedieningsmodus CD/DVD-ROM of harde schijven , d.w.z. laten we erover praten PIO en DMA.Hoe te controleren harde schijf voor fouten en hoe u deze kunt oplossen, lees

Wat is de essentie en het verschil tussen PIO en DMA.

PIO en DMA- dit zijn twee modi hard werken schijven, in het algemeen elke schijf.
PIO (programmeerbare invoer/uitvoer)- reeds verouderde modus, om te kunnen werken heeft deze nodig
erbij betrekken CPU, wat resulteert in aanzienlijk prestatieverlies.
DMA (directe geheugentoegang) - moderne methode, die de processor omzeilt en
beroepen direct voor RAM maakt dit aanzienlijk mogelijk productiviteit verhogen en ontdoen van vervelende “remmen”.
DMA-modus ingeschakeld verschillende opties wordt echter al lang gebruikt in de besturingssystemen Windows 7, 8 en 10 onder Windows XP, Vaak is er sprake van een situatie waarin DMA schakelt automatisch over naar PIO en breng het alvast terug conventionele methoden het zal niet werken. Wat veroorzaakt deze situatie?
Geïmplementeerd in Windows XP mechanisme foutcontrole, als bij het lezen van harde schijf of een andere schijf, fouten komen te vaak voor, het systeem schakelt automatisch over naar een langzamere modus, waar hun percentage lager is. Echter, Windows XP kan een normaal werkend apparaat in deze modus zetten.
Hoe fouten te herstellen Windows gelezen

En laten we dus de bedrijfsmodi van alle schijven controleren, zodat het systeem niet langzamer wordt.

1 . Start de console "Computerbeheer"klik met de rechtermuisknop op "Mijn computer"


selecteer het item in het vervolgkeuzemenu "Apparaatbeheer", of via
Configuratiescherm. Of Start - Uitvoeren - devmgmt.msc

2. Selecteer " Apparaatbeheer", selecteer IDE ATA/ATAPI controleurs,


Er gaan verschillende lijnen met controllers open - daar zijn we in geïnteresseerd :
Primair en secundair kanalen IDE→ we gaan één voor één naar eigenschappen deze kanalen (klik met de rechtermuisknop op het kanaal, regel “ Eigenschappen"), naar de bladwijzer " Extra opties» ,
Er zijn hier twee groepen "Apparaat 0" en "Apparaat 1", elk heeft lijnen
"Overdrachtsmodus"– deze moet geselecteerd zijn "DMA, indien beschikbaar", dan de lijn "Huidige verzendmodus", er moet zoiets zijn als "Ultra DMA-modus: 4,


als hier “PIO-modus” is ingesteld, dan is dit van ons geval en dat zullen we ook doen repareer het.
Als overal de modus is de moeite waard ultra-DMA, dan is alles goed met jou en verdere acties doorgaan is niet nodig.
3. Laten we eerst proberen het handmatig te repareren - op elke regel “Overdrachtsmodus” ingesteld op “DMA, indien beschikbaar”, klik "OK" en start de computer opnieuw op. Na opnieuw inschakelen
we kijken naar de werkingsmodi van de kanalen, als DMA overal is geïnstalleerd, dan is alles in orde, als er PIO over is, dan gaan wij verder.
4. Zoek opnieuw Primaire en secundaire IDE-kanalen en verwijder ze (klik met de rechtermuisknop op elk kanaal en selecteer uit de lijst "Verwijderen"). Wees niet bang, alles zal goed werken.
Start uw computer opnieuw op – Windows XP zal controllers vinden en breng ze over naar snelle modus werk, dat wil zeggen in DMA. Controleer het resultaat, er zou overal een modus moeten zijn DMA.
5. Als al het bovenstaande niet heeft geholpen en je ziet opnieuw “ PIO-modus", dan zal het nodig zijn chauffeurs herschikken Voor moederbord– overbelasting
en controleer het resultaat opnieuw.
6. Nou ja, het laatste punt, na al het lijden van het regime PIO niet verdwenen is, dan zul je het moeten bewerken register Ik zou graag willen opmerken: voer alle bewerkingen uit met
registreer heel zorgvuldig en zorgvuldig, elk verkeerde actie kan leiden tot volledige onbruikbaarheid van uw systeem. Het is het beste om vooraf een kopie van het register te maken.
Lees hoe u Windows XP configureert met behulp van het register

Probeer eerst het foutcontrolesysteem uit te schakelen.
Om dit te doen, in de registervertakking:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdfs\,
maak een sleutel Foutcontrole en stel de waarde ervan in 0.


Start daarna opnieuw op en volg de stap №4.


U kunt de modus handmatig instellen DMA.
Er zijn hier verschillende mappen - 0000, 0001, 0002.
0000 – verantwoordelijk voor de verwerkingsverantwoordelijke zelf;
0001 – verantwoordelijk voor secundaire IDE Chanell;
0002 – verantwoordelijk voor primaire IDE Chanell;
Open de map voor het kanaal dat we nodig hebben. Het bevat
meerdere toetsen, selecteer eerst:
MasteDeviceTimingModeAllowed
SlaveDeviceTimingModeAllowed
en stel de waarde gelijk aan 0ffffffff.
Stel hierna de waarde van de volgende sleutels in:
MasterDeviceTimingMode
SlaveDeviceTimingMode
volgens de volgende gegevens, afhankelijk van
ondersteund UDMA-modi:
UDMA-modus 2 – 0×2010
UDMA-modus 4 – 0×8010
UDMA-modus 5 – 0×10010
UDMA-modus 6 – 0xffff

Start daarna opnieuw op en controleer het resultaat - alles zou goed moeten werken.
Hoe te versnellen en te herstellen Windows-prestaties 10, lezen
Wat is de snelheid van informatieoverdracht op computers, lees
Ik hoop dat dit artikel je zal helpen de modi correct in te stellen PIO en DMA en de algehele systeemprestaties verbeteren.


Beste lezers!
Als je de blog leuk vond en het gepubliceerde materiaal nuttig voor je bleek te zijn, dan vraag ik je om te helpen met de inhoud en ontwikkeling van deze blog. Dit kunt u doen door een willekeurig bedrag te doneren. Jouw financiële steun wordt gebruikt om de blog te promoten en de blog te vullen goed materiaal, het verbeteren van de functionaliteit en de leesbaarheid en het implementeren van verdere plannen.
1) Door geld over te maken naar de kaart Sberbank: 4424 7710 1196 4323
2) De eenvoudigste manier, die niet klopt grote inspanning Elke gebruiker en lezer van de blog heeft aan het einde van elk artikel verschillende knoppen ( "deel") om een ​​artikel aan toe te voegen sociale media of blogs en andere online communicatiemiddelen.
Bij voorbaat dank aan iedereen die helpt bij het ontwikkelen van de blog.

Hallo aan alle bloglezers. In dit artikel zullen we het hebben over het herstellen van de systeemprestaties. Vaak hebben gebruikers vooral het probleem van een zeer trage computer bij het opnemen en bij lezing schijven, of simpelweg onredelijke “remmen” van het systeem tijdens bedrijf of laden. Waarom het systeem vastloopt, lees
Daar kunnen heel veel redenen voor zijn, vandaag stel ik voor om een ​​vrij veel voorkomende reden te overwegen: dit is een onjuiste bedieningsmodus CD/DVD-ROM of harde schijven, d.w.z. laten we erover praten PIO en DMA.Lees hoe u uw harde schijf kunt controleren op fouten en deze kunt oplossen.

Wat is de essentie en het verschil tussen PIO en DMA.

PIO en DMA- dit zijn twee werkingsmodi van harde schijven, in het algemeen van elke schijf.
PIO (programmeerbare invoer/uitvoer)- reeds verouderde modus, om te kunnen werken heeft deze nodig
erbij betrekken CPU, wat resulteert in aanzienlijk prestatieverlies.
DMA (directe geheugentoegang)- een moderne methode die de processor omzeilt en
beroepen direct voor RAM maakt dit aanzienlijk mogelijk productiviteit verhogen en ontdoen van vervelende “remmen”.
De DMA-modus in verschillende varianten wordt echter al lang gebruikt in de besturingssystemen Windows 7, 8 en 10 onder Windows XP, Vaak is er sprake van een situatie waarin DMA schakelt automatisch over naar PIO en het zal niet mogelijk zijn om het terug te brengen met behulp van conventionele methoden. Wat veroorzaakt deze situatie?
Geïmplementeerd in Windows XP mechanisme foutcontrole Als er te vaak fouten optreden bij het lezen van een harde schijf of een ander station, schakelt het systeem automatisch over naar een langzamere modus, waar het percentage lager is. Echter, Windows XP kan een normaal werkend apparaat in deze modus zetten.
Hoe fouten te herstellen Windows gelezen

En laten we dus de bedrijfsmodi van alle schijven controleren, zodat het systeem niet langzamer wordt.

1 . Start de console "Computerbeheer"– klik met de rechtermuisknop op "Mijn computer"


selecteer het item in het vervolgkeuzemenu "Apparaatbeheer", of via
Configuratiescherm. Of Start - Uitvoeren - devmgmt.msc

2. Selecteer " Apparaatbeheer", selecteer IDE ATA/ATAPI controleurs,


Er gaan verschillende lijnen met controllers open - daar zijn we in geïnteresseerd :
Primair en secundair kanalen IDE→ we gaan één voor één naar eigenschappen deze kanalen (klik met de rechtermuisknop op het kanaal, regel “ Eigenschappen"), naar de bladwijzer " Extra opties",
Er zijn hier twee groepen "Apparaat 0" en "Apparaat 1", elk heeft lijnen
"Overdrachtsmodus"– deze moet geselecteerd zijn "DMA, indien beschikbaar", dan de lijn "Huidige verzendmodus", er moet zoiets zijn als "Ultra DMA-modus: 4,


als hier “PIO-modus” is ingesteld, dan is dit van ons geval en dat zullen we ook doen repareer het.
Als overal de modus is de moeite waard ultra-DMA, dan is alles in orde met u en hoeft u geen verdere acties te ondernemen.
3. Laten we eerst proberen het handmatig te repareren - op elke regel “Overdrachtsmodus” ingesteld op “DMA, indien beschikbaar”, klik "OK" en start de computer opnieuw op. Na opnieuw inschakelen
we kijken naar de werkingsmodi van de kanalen, als DMA overal is geïnstalleerd, dan is alles in orde, als er PIO over is, dan gaan wij verder.
4. Zoek opnieuw Primaire en secundaire IDE-kanalen en verwijder ze (klik met de rechtermuisknop op elk kanaal en selecteer uit de lijst "Verwijderen"). Wees niet bang, alles zal goed werken.
Start uw computer opnieuw op – Windows XP zal controllers vinden en schakelt ze naar de snelle bedrijfsmodus, dat wil zeggen in DMA. Controleer het resultaat, er zou overal een modus moeten zijn DMA.
5. Als al het bovenstaande niet heeft geholpen en je ziet opnieuw “ PIO-modus", dan zal het nodig zijn chauffeurs herschikken voor het moederbord - opnieuw opstarten
en controleer het resultaat opnieuw.
6. Nou ja, het laatste punt, na al het lijden van het regime PIO niet verdwenen is, dan zul je het moeten bewerken register Ik zou graag willen opmerken: voer alle bewerkingen uit met
het register zeer zorgvuldig en zorgvuldig; elke onjuiste actie kan leiden tot volledige onbruikbaarheid van uw systeem. Het is het beste om vooraf een kopie van het register te maken.
Lees hoe u Windows XP configureert met behulp van het register

Probeer eerst het foutcontrolesysteem uit te schakelen.
Om dit te doen, in de registervertakking:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdfs\,
maak een sleutel Foutcontrole en stel de waarde ervan in 0.


Start daarna opnieuw op en volg de stap №4.


U kunt de modus handmatig instellen DMA.
Er zijn hier verschillende mappen - 0000, 0001, 0002.
0000 – verantwoordelijk voor de verwerkingsverantwoordelijke zelf;
0001 – verantwoordelijk voor secundaire IDE Chanell;
0002 – verantwoordelijk voor primaire IDE Chanell;
Open de map voor het kanaal dat we nodig hebben. Het bevat
meerdere toetsen, selecteer eerst:
MasteDeviceTimingModeAllowed
SlaveDeviceTimingModeAllowed
en stel de waarde gelijk aan 0ffffffff.
Stel hierna de waarde van de volgende sleutels in:
MasterDeviceTimingMode
SlaveDeviceTimingMode
volgens de volgende gegevens, afhankelijk van
ondersteund UDMA-modi:
UDMA-modus 2 – 0×2010
UDMA-modus 4 – 0×8010
UDMA-modus 5 – 0×10010
UDMA-modus 6 – 0xffff

Start daarna opnieuw op en controleer het resultaat - alles zou goed moeten werken.
Lees hoe u de prestaties van Windows 10 kunt versnellen en herstellen
Wat is de snelheid van informatieoverdracht op computers, lees
Ik hoop dat dit artikel je zal helpen de modi correct in te stellen PIO en DMA en de algehele systeemprestaties verbeteren.


Beste lezers!
Als je de blog leuk vond en het gepubliceerde materiaal nuttig voor je bleek te zijn, dan vraag ik je om te helpen met de inhoud en ontwikkeling van deze blog. Dit kunt u doen door een willekeurig bedrag te doneren. Jouw financiële steun wordt gebruikt om de blog te promoten, de blog te vullen met goed materiaal, de functionaliteit en lezersvriendelijkheid te verbeteren en toekomstplannen uit te voeren.
1) Door geld over te maken naar de kaart Sberbank: 4424 7710 1196 4323
2) De eenvoudigste manier, die voor elke gebruiker en lezer van de blog niet veel inspanning zal vergen, is dat er aan het einde van elk artikel verschillende knoppen staan ​​( "deel") om een ​​artikel toe te voegen aan sociale netwerken of blogs en andere communicatiebronnen op internet.
Bij voorbaat dank aan iedereen die helpt bij het ontwikkelen van de blog.

Zoals je weet, Windows 7 ontving significantere verbeteringen in de opstarttijd en systeemreactie vergeleken met zijn voorganger Windows Vista . Er zijn belangrijke wijzigingen aangebracht waardoor het systeem niet alles kon verbruiken systeem geheugen bij het openen grote hoeveelheid Explorer-vensters, geoptimaliseerd systeem diensten en processen.


In dit artikel zullen we kijken naar:

  • optimalisatie van het startmenu
  • optimalisatie hard werken schijf in Windows 7
  • het optimaliseren van de snelheid van het kopiëren en verplaatsen van bestanden in Windows 7
  • optimalisatie van het werken met Windows-stuurprogramma's 7
  • tijd optimalisatie Windows opstarten 7
  • versnel het proces van het bekijken van miniatuurafbeeldingen
  • voltooiing van de versnelling Windows-bediening 7
Aandacht!
Houd er rekening mee dat sommige van de besproken methoden het werk versnellen Windows 7 zijn gebaseerd op het uitschakelen van alle soorten taken, waardoor de functionaliteit van het systeem wordt vereenvoudigd of verbeterd voor gemakkelijker gebruik. Die. In wezen kiest u tussen gemak en prestaties.

Manieren om Windows 7 te optimaliseren

1. Versnel het startmenu.

Definitie onlangs geïnstalleerde programma's, en het duurt ook even voordat het systeem deze recent geïnstalleerde programma's markeert telkens wanneer u het startmenu opent. Deze tijd kun je besparen.

Om dit te doen, moet je naar de instellingen van het startmenu gaan: in eigenschappen "Taakbalk en Startmenu"(om te activeren, ga naar het controlepaneel Windows 7: Start -> Configuratiescherm). Ga naar bladwijzer "Startmenu" en klik op de knop "Afstemmen".
Figuur 1. Aanpassing van het startmenu

Haal het vinkje weg "Markeer recent geïnstalleerde programma's" en klik vervolgens "Toepassen".
Figuur 2. Markering van recent geïnstalleerde programma's uitschakelen
Om de pauze te verkorten wanneer het Start-menuvenster verschijnt, gaat u naar de register-editor (command "regedit" in dialoog "Zoek programma's en bestanden").
Figuur 3. Register-editor starten
Na het starten van de Register-editor ( regedit.exe) ga naar het onderwerp HKEY_CURRENT_USER -> Configuratiescherm-> Bureaublad(Afb. 4).

Figuur 4. De vereiste registertak selecteren
Wijzig de sleutelwaarde MenuToonvertraging Met "400" op "50". De pauze wordt aanzienlijk ingekort.

Figuur 5. De pauze wijzigen bij het weergeven van een venster
2. Optimaliseer uw harde schijf in Windows 7

Deze optie is al sinds die tijd bekend Windows XP, maar als binnen XP het zat er oorspronkelijk in en daarna in Windows 7 Optimalisatie van de harde schijf werd als onnodig beschouwd en is standaard uitgeschakeld. Nu zullen we kijken naar de methode om deze optie in te schakelen.

Laten we naar gaan Start -> Configuratiescherm -> Apparaatbeheer -> Schijfapparaten-> (selecteer uw harde schijf) -> Eigenschappen -> Beleid... en plaats een vinkje naast het item "Cachebuffer leegmaken uitschakelen" Windows-vermeldingen voor dit apparaat".
Figuur 6. Windows Entry Cache Buffer wissen uitschakelen
Nu in hetzelfde "Apparaatbeheer" open een ander draadje - "IDE ATA/ATAPI-controllers (IDE ATA/ATAPI-controllers)", waarna in de eigenschappen van alle kanalen ATA (ATA-kanaal 0, ATA-kanaal 1 enz.) op het tabblad « Aanvullende instellingen(Geavanceerde instellingen)" controleer of het selectievakje is aangevinkt “DMA inschakelen”.
Figuur 7. Inschakelen DMA-modus
Als het selectievakje niet is aangevinkt, vinkt u dit aan.

3. Versnel het kopiëren en verplaatsen van bestanden in Windows 7

Windows 7 heb er nog een gekregen interessante functie- differentiële compressie op afstand.
Aan de ene kant berekent en verzendt deze optie het verschil tussen twee objecten, waardoor de hoeveelheid verzonden gegevens wordt geminimaliseerd, maar aan de andere kant kost het tijd voor de berekening.

U kunt deze functie uitschakelen. Ga hiervoor naar Start -> Configuratiescherm -> Programma's en onderdelen -> In- en uitschakelen Windows-componenten-> Differentiële compressie op afstand (moet worden uitgeschakeld).

Figuur 8. Differentiële compressie uitschakelen
4. Scannen uitschakelen digitale handtekening chauffeurs

Deze actie kan ook de snelheid van het systeem enigszins verhogen (bij het installeren van nieuwe stuurprogramma's). Om deze optie uit te schakelen in Windows 7 volg deze stappen:

Uitvoeren binnen "Begin" gpedit.msc.
Figuur 9. Het beheerpaneel starten
Ga dan naar het volgende pad:

Gebruikersconfiguratie -> Beheersjablonen -> Systeem -> Installatie stuurprogramma -> Digitale handtekening van apparaatstuurprogramma's. In dit venster moet u de modus selecteren "Gehandicapt".

Figuur 10. Verificatie van de digitale handtekening van het stuurprogramma uitschakelen
5. Versnel het opstarten van Windows 7

We kunnen echt nog een paar seconden winnen dit advies verwijst naar de gebruikers die eraan werken multi-coreprocessors Met Windows 7 als besturingssysteem.
Volg dus deze stappen:

Binnenkomen MSCONFIG in het menuzoekveld "Begin" en druk op de toets "Binnenkomen".

In het geopende venster gaat u naar het tabblad en klikt u op de knop "Geavanceerde opties".

Figuur 11. Aanvullende opties voor systeemoptimalisatie Vink het vakje naast het artikel aan "Aantal verwerkers" en selecteer in het vervolgkeuzemenu onder dit item maximaal aantal uw kernen (2 of 4).

Figuur 12. Het aantal processors instellen voor systemen met multi-threaded processors
Klik "OK" en start het systeem opnieuw op om een ​​redelijk merkbaar verschil in opstartsnelheid te zien Windows 7.

6. Versnel het bekijken van miniaturen (miniaturen).

U kunt de snelheid waarmee miniaturen worden bekeken verhogen in Windows 7. Om dit te doen, moet u deze stappen volgen:

Binnenkomen regedit(zonder aanhalingstekens) in het menuzoekveld "Begin" en druk op de toets "Binnenkomen".

Ga naar draad "HKEY_CURRENT_USER -> Configuratiescherm -> Muis".

Figuur 13. Het selecteren van de gewenste registertak om de pauze bij het weergeven van miniaturen te optimaliseren
Dubbelklik op de parameter MuisHoverTime en wijzig de waarde ervan in 100 .

Figuur 14. Een nieuwe waarde instellen
7. Tijd verkorten Windows afsluiten 7

Uitschakeltijd Windows 7 kan aanzienlijk worden verminderd. Dit is echter een nogal barbaarse methode: we verkorten de tijd die is toegewezen aan het proces om het programma te beëindigen, waarna het programma met geweld wordt beëindigd.

Binnenkomen regedit in het menuzoekveld "Begin" en druk op de toets "Binnenkomen".

Ga naar draad HKEY_LOCAL_MACHINE -> Systeem -> CurrentControlSet -> Controle.


Figuur 15. Selectie benodigde sleutel register
Wijzig de parameterwaarde "WaitToKillServiceTimeout" vanuit de betekenis 12000 (12 seconden) aan 2000 (2 seconden).

Figuur 16. De waarde wijzigen.


Een langdurige staat van stabiliteit wordt vroeg of laat verstoord door iets onvoorspelbaars en vreemds, dus het moment is gekomen. Een paar dagen geleden, toen ik een bestand kopieerde van een fysieke schijf aan de andere kant merkte ik plotseling dat de snelheid catastrofaal laag was: 4-6 Mb/s in plaats van de verwachte 50-90 Mb/s (gecorrigeerd voor fragmentatie). Ik kijk naar CPU-belasting– één kern is helemaal bezig met het verwerken van interrupts, alles is duidelijk – de schijf is overgeschakeld naar de PIO-modus.

Initiële configuratie: ASUS P5Q, 4 x 1 Gb SATA-schijven, 2 x 1,5 Gb SATA-schijven, geen RAID's, Windows XP SP3. De schijf werkte in de UDMA-modus, net als alle andere, ik heb hem na de installatie getest. Apparaatbeheer -> IDE-controllers -> kanaal en kijk naar "huidige overdrachtsmodus". Op de foto werken beide apparaten in de UDMA-modus; in mijn geval werkte het tweede apparaat in de PIO-modus, maar deze foto heb ik niet opgeslagen. Om te begrijpen wie op welk kanaal zit, schakel je van weergave Apparaatbeheer in Weergave -> Apparaten per verbinding.

Hoewel SATA-schijven, controllers in Apparaatbeheer zijn ATA. Het punt is dat in het BIOS SATA-controllers standaard geconfigureerd om te doen alsof ATA-controllers In dit geval zijn er geen extra nieuwe AHCI-stuurprogramma's vereist. U kunt pijnloos overschakelen naar de AHCI-modus, dit heeft geen invloed logische organisatie gegevens, vereist alleen de juiste stuurprogramma's. In de AHCI-modus verschijnt ondersteuning voor NCQ (herordenen van HDD-opdrachten) en over het algemeen nemen de prestaties iets toe, maar slechts in geringe mate, en wordt er ook ondersteuning toegevoegd hot-swap.

Versies mogelijke redenen:

1) Iets met een trein.
2) Iets met de drijfveren, mislukking of conflict.
3) Iets met de harde schijf.

Er is een tweede systeem: Windows 7, ik start het op en observeer de volledige prestaties van de schijven in UDMA-modi, wat betekent dat de hardware normaal lijkt te zijn. Ik kijk naar het gebeurtenislogboek, ik vind er geen berichten in over een probleem met schijven, ik kijk SMART-diagnostiek– alles is in orde, er zijn geen apparaatconflicten, dit alles is goed. Ik neem het nieuwste stuurprogramma's met ASUS. Ik schrijf het op oud nummer versies Intel-stuurprogramma's ICH10R, ik installeer een nieuwe. Verdacht snel geïnstalleerd, uiteindelijk niet bijgewerkt. Handmatig via INF-bestanden Ik update de ICH10R-stuurprogramma's, deze wordt geïnstalleerd, maar het probleem blijft bestaan. Ik ga naar Intel, download de nieuwste versie, installeer deze, er wordt niets opnieuw geïnstalleerd. Ik kom erachter dat hun stuurprogramma's alleen worden bijgewerkt als het apparaat helemaal geen stuurprogramma heeft. Om het te forceren moet je de geheime sleutel "–overlall" gebruiken, ik probeer het, het is bijgewerkt, maar het lost het probleem niet op. Ik vervang de kabel, haal hem eruit, sluit de schijf aan - het helpt niet. Het tussentijdse resultaat is dat de hardware werkt, de nieuwe software helpt niet.

Ik vond een interessant artikel in Microsoft: "Nadat er verschillende CRC-fouten of time-outs zijn opgetreden, gebruiken schijven met IDE ATA- en ATAPI-interfaces de PIO-modus." Ze schrijven dat als er transmissiefouten via UDMA optreden, het systeem de modi achtereenvolgens verlaagt naar de PIO-modus (of onmiddellijk) en deze toestand bevriest! Om het terug te krijgen, stellen ze voor om de controller uit Apparaatbeheer te verwijderen, zodat deze uit de as herboren zal worden. Ik ben er niet voor gegaan, omdat... Ik was bang dat hij misschien niet herboren zou worden (ze schreven hier ergens over), dus nam hij het tweede pad dat daar en op andere plaatsen werd beschreven.

Oplossing. Open de registertak “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\(4D36E96A-E325-11CE-B FC1-08002BE10318)”, deze zal de takken 0000, 0001, enz. bevatten. Ze komen overeen met apparaten in Apparaatbeheer. We zijn alleen geïnteresseerd in kanalen, we kijken naar de naam in DriverDesc, in in dit geval"Primair IDE-kanaal".

Besteed aandacht aan MasterDeviceTimingModeAllowed en SlaveDeviceTimingModeAllowed - ze stellen een masker van acceptabele modi in, als 0xffffffff, dan is alles toegestaan, en als 0x1f, dan alleen de PIO-modus. Ik heb een probleem met Slave. De huidige modi zelf zijn opgeslagen in MasterDeviceTimingMode en SlaveDeviceTimingMode, ze zijn verschillend (je kunt de betekenis van de cijfers op internet vinden). MS stelt voor het volgende te doen: de extra sleutel ResetErrorCountersOnSuccess (DWORD) = 1 instellen en opnieuw opstarten. Ik deed dit, maar het deed niets, het gaf alleen aan dat de gewenste modus UserSlaveDeviceTimingModeAllowed ook werd gereset naar 0x1f. Ik heb het teruggestuurd naar Apparaatbeheer, maar ik denk dat je het hier ook handmatig kunt instellen op 0xffffffff. Vervolgens stelde ik SlaveDeviceTimingModeAllowed = 0xffffffff in, opnieuw opgestart en voila!, alles werkte. Dus ik denk dat ik alleen het volgende hoefde te doen (probleem op Slave):

UserSlaveDeviceTimingModeAllowed = 0xffffffff, SlaveDeviceTimingModeAllowed = 0xffffffff, ResetErrorCountersOnSuccess = 1 en start opnieuw op.

De volgende afbeelding toont de uiteindelijke status van het register na een herstart. De modi zijn nu hetzelfde, de maskers zijn bewaard gebleven en in Apparaatbeheer zien we de afbeelding zoals aan het begin van het bericht.

Nu over de reden. Zoals uit het MS-artikel blijkt, was een van de redenen voor het repareren van hun stuurprogramma dat de wachttijd voor het opstarten van de harde schijf onvoldoende was (in Win2000 was dit 4 seconden, ze haalden het 10 seconden) en dit was een probleem toen de schijven kwamen uit de slaap. Ik gebruikte de instelling voortdurend om schijven uit te schakelen na inactiviteit na 2 uur, wat er soms toe leidde dat ze willekeurig wakker werden wanneer sommige applicaties toegang wilden krijgen tot meerdere partities tegelijk. Ik geloof dat in een bepaald scenario de time-out misschien werd overschreden en er een fout werd geregistreerd die ertoe leidde dat UDMA werd uitgeschakeld. Nu weigerde ik de schijven los te koppelen en ze bovendien te laten werken veelvuldig inschakelen en shutdowns kunnen meer kwaad dan goed doen.

Hallo allemaal, vandaag zullen we het hebben over DMA: precies de technologie die je computer helpt muziek voor je af te spelen, afbeeldingen op het scherm weer te geven, informatie naar de harde schijf te schrijven en tegelijkertijd de centrale processor schamel te belasten.

DMA, wat is dat? Waar heb je het over?

DMA, of Direct Memory Access, is een technologie voor directe geheugentoegang, waarbij de centrale processor wordt omzeild. In het tijdperk van de 486's en de eerste Pentiums regeerde de ISA-bus, evenals de methode voor gegevensuitwisseling tussen apparaten - PIO (Programmed Input/Output).

PIO is inherent eenvoudig: om gegevens van een apparaat te verkrijgen, moest de driver van het besturingssysteem (of de firmware van een ander apparaat) deze gegevens uit de apparaatregisters lezen. Laten we eens kijken naar een voorbeeld:

  • Er zijn 1500 bytes aan gegevens op de netwerkkaart aangekomen.
  • De netwerkkaart initieert een interrupt om de processor te informeren dat gegevens uit het apparaat moeten worden opgehaald, anders ontstaat er een zogenaamde bufferoverrun.
  • Het besturingssysteem vangt de interrupt op van de interruptcontroller en stuurt deze ter verwerking naar het stuurprogramma.
  • De driver leest gegevens uit de registers van de netwerkkaart in een lus, byte voor byte.
Als gevolg hiervan, als het lezen van één byte ongeveer 1 ms processortijd kost, duurt het lezen van 1500 bytes 1500 ms. Maar dit is slechts één Ethernet-pakket, stel je voor hoeveel pakketten de netwerkkaart ontvangt als je je favoriete habrahabr leest. In werkelijkheid kan het lezen in de PIO-modus natuurlijk in 2,4 bytes worden georganiseerd, maar het prestatieverlies zal nog steeds catastrofaal zijn.

Toen het volume aan door de processor verwerkte gegevens begon toe te nemen, werd het duidelijk dat het noodzakelijk was om de deelname van de processor aan de gegevensuitwisselingsketen te minimaliseren, anders zou het moeilijk worden. En toen werd de technologie van directe geheugentoegang actief gebruikt.

Overigens wordt DMA niet alleen gebruikt om gegevens uit te wisselen tussen een apparaat en RAM, maar ook tussen apparaten in het systeem; DMA-overdracht is mogelijk tussen twee delen van RAM (hoewel deze manoeuvre niet van toepassing is op x86-architectuur). Ook in zijn Cell-processor gebruikt IBM DMA als het primaire communicatiemechanisme tussen synergetische verwerkingselementen (SPE's) en centrale verwerkingselementen (PPE's). Ook kan elke SPE en PPE via DMA gegevens uitwisselen RAM. Deze techniek– is eigenlijk een groot voordeel van Cell, omdat het cache-coherentieproblemen tijdens gegevensverwerking met meerdere processors elimineert.

En nogmaals de theorie

Voordat we in de praktijk gaan, wil ik er een paar uitlichten belangrijke aspecten programmeren van PCI- en PCI-E-apparaten.

Ik heb kort de apparaatregisters genoemd, maar hoe heeft de CPU toegang tot deze registers? Zoals velen van jullie weten, bestaat er zo'n entiteit computertechnologieën, zoals IO-poorten (invoer-/uitvoerpoorten). Ze zijn ontworpen om informatie uit te wisselen tussen de centrale processor en randapparatuur, en toegang hiertoe is mogelijk met behulp van speciale montage-instructies - in/uit. BIOS (of OpenFirmware op PPC-gebaseerde systemen) in de vroege stadia van initialisatie PCI-apparaten, evenals enkele andere (Super IO-controller, PS/2-apparaatcontroller, ACPI-timer, enz.), wijst zijn eigen reeks IO-poorten toe aan een specifieke controller, waar de apparaatregisters in kaart worden gebracht.

Ook kunnen apparaatregisters worden toegewezen aan RAM (Memory Mapped Registers), d.w.z. naar fysieke adresruimte. Deze methode heeft een aantal voordelen, namelijk:

  • Toegangssnelheid fysiek geheugen hoger dan bij IO-poorten.
  • IO-poorten kunnen maximaal 65535 bytes aan registers toewijzen, terwijl de RAM-grootte moderne computers vele malen meer.
  • Het lezen van apparaatregisters vanuit RAM is eenvoudiger dan het gebruik van IO-poorten :)
Gegevens over welk bereik aan IO-poorten of RAM aan het apparaat is toegewezen, worden opgeslagen in de PCI-configuratieruimte, namelijk in de registers BAR0, BAR1, BAR2, BAR4, BAR5.

Er zijn dus twee methoden voor het recyclen van DMA: aaneengesloten DMA en verspreid/verzamel DMA.

Aaneengesloten DMA

Deze methode is heel eenvoudig en inmiddels bijna achterhaald, maar wordt nog steeds gebruikt voor het programmeren geluidsregelaars(bijvoorbeeld Envy24HT). Het principe ervan is als volgt:
  • Eén buffer die wordt toegewezen is voldoende groot formaat in RAM-geheugen.
  • Het fysieke adres (meer precies, het adres op de bus van de geheugensectie, omdat het fysieke adres en het busadres gelijk zijn in de x86-architectuur, maar niet gelijk in PPC) van deze buffer wordt naar het apparaatregister geschreven.
  • Wanneer gegevens bij het apparaat aankomen, initieert de apparaatcontroller een DMA-overdracht.
  • Zodra de buffer volledig vol is, geeft de apparaatcontroller een interrupt af om te rapporteren centrale verwerker dat de buffer moet worden doorgegeven aan het besturingssysteem.
  • Het stuurprogramma van het besturingssysteem verwerkt de interrupt en stuurt de ontvangen gegevens uit de buffer verder langs de apparaatstapel van het besturingssysteem.
Zoals je kunt zien, is alles vrij eenvoudig, en zodra de ISA-bus DMA-ondersteuning heeft gekregen, deze methode heeft een zeer brede toepassing gevonden. Chauffeurs bijvoorbeeld netwerkkaarten had twee van dergelijke DMA-buffers: één voor het ontvangen van gegevens (rx), de andere voor het verzenden (tx).

DMA verspreiden/verzamelen

Met groei Ethernet-snelheid adapters heeft aaneengesloten DMA zijn inconsistentie getoond. Voornamelijk vanwege het feit dat er vrij grote geheugengebieden nodig waren, die sindsdien soms onmogelijk waren toe te wijzen moderne systemen De fragmentatie van het fysieke geheugen is vrij hoog. Het is allemaal de schuld van het mechanisme virtueel geheugen, zonder welke we vandaag niet kunnen leven :)

De oplossing doet zich voor: gebruik meerdere in plaats van één grote geheugensectie, maar in verschillende regio's deze herinnering. De vraag rijst, maar hoe kan ik de apparaatcontroller vertellen hoe hij een DMA-overdracht moet initiëren en naar welk adres hij gegevens moet schrijven? En toen vonden ze een oplossing, om descriptors te gebruiken om elk dergelijk gebied in RAM te beschrijven.

Een typische DMA-bufferdescriptor bevat de volgende velden:

  1. Het adres van de RAM-sectie (namelijk busadres), dat bedoeld is voor DMA-overdracht.
  2. De grootte van het beschreven RAM-gedeelte.
  3. Optionele vlaggen en andere specifieke argumenten.
  4. Adres van de volgende descriptor in het geheugen.
De structuur van de descriptors wordt bepaald door de specifieke fabrikant van de apparaatcontroller en kan andere velden bevatten. De descriptor bevindt zich, net als de DMA-buffer, in RAM.

Het scatter/gather DMA-algoritme is als volgt:

  • Het besturingssysteemstuurprogramma wijst DMA-bufferdescriptors toe en initialiseert deze.
  • De driver wijst DMA-buffers toe (delen van RAM voor DMA-overdracht) en schrijft de nodige informatie daarover in descriptors.
  • Het apparaat vult, indien nodig, de DMA-buffers en nadat een of meer buffers zijn gevuld, initieert het een interrupt.
  • Het stuurprogramma van het besturingssysteem kijkt naar alle DMA-bufferdescriptors, bepaalt welke zijn gevuld door de apparaatcontroller, stuurt de gegevens uit de buffer verder naar beneden in de apparaatstapel en markeert de buffer als gereed voor DMA-overdracht.
De volgorde waarin de apparaatcontroller de DMA-buffers vult, wordt bepaald door de fabrikant. De controller kan naar de eerste vrije DMA-buffer schrijven, of eenvoudigweg in een rij schrijven (DMA-bufferdescriptors vormen in dit geval een enkelvoudig gekoppelde ringlijst) naar alle buffers, enz.

Stop...

Dat is waarschijnlijk alles voor vandaag, anders zal er te veel informatie zijn. In het volgende artikel laat ik je zien hoe IOKit werkt met deze straatmagie. Ik kijk uit naar je feedback en aanvullingen;)