Ero sivun ”Oikosiirto” versioiden välillä

[katsottu versio][katsottu versio]
Poistettu sisältö Lisätty sisältö
Ipr1 (keskustelu | muokkaukset)
Ei muokkausyhteenvetoa
Ipr1 (keskustelu | muokkaukset)
Ei muokkausyhteenvetoa
Rivi 1:
{{Tämä artikkeli|käsittelee [[tietotekniikka]]a. DMA on myös [[Dominica]]n [[maatunnus]].}}
[[Tiedosto:AMD_DirectGMA.svg|thumb|right|250px|Oikosiirto kahden laajennuskortin välillä.]]
'''Oikosiirto''' (engl. ''DMA'' tai ''direct memory access'') tarkoittaa tiedon kopiointia tietokoneen[[tietokone]]en sisällä ilman kopioitavan tiedon kuljettamista [[suoritin|suorittimen]] kautta. Tällöin suurienkin tietomäärien siirto tapahtuu nopeasti koska ohjelmiston ei tarvitse käsitellä kopioitavaa tietoa siirron aikana.
 
Tyypillisesti oikosiirtoa käytetään tapauksissa, joissa halutaan siirtää tietoa [[keskusmuisti]]n ja [[oheislaite|oheislaitteen]] välillä peräkkäisistä muistipaikoista. [[Laiteohjain|Oikosiirto-ohjain]] kopioi tarvittavan muistialueen sisällön suoraan oheislaitteelle ilman, että suorittimen täytyisi lukea ja kirjoittaa jokainen sana erikseen.
Rivi 7:
Ilman oikosiirtoa suorittimen täytyisi lukea muistia sana kerrallaan omiin [[Rekisteri_(tietokonetekniikka)|rekistereihinsä]] ja sitten kirjoittaa tieto I/O-porttiin tai erikoisrekisteriin, jotta se välittyisi oheislaitteelle. Suuria tietomääriä siirrettäessä tämä on tehotonta koska suorittimen täytyy odotella muiden hitaampien tietokoneenosien toimintoja (pääasiassa muistipiirien ja väylien).
 
Oikosiirtoa saatetaan myös käyttää tilanteessa, jossa tiedon pitää saapua täsmälleen tiettyyn aikaan eli täsmälleen tietyllä kellojaksolla. Ohjelmistopohjainen ajoitus on tyypillisesti epätarkempaa kuin kellojaksontarkka[[kellojakso]]ntarkka laitepohjainen siirto.
 
==Esimerkki==
===Äänen soittaminen eri siirräntämenetelmillä===
Riippuen arkkitehtuurista tiedon [[siirräntä]] [[äänikortti|äänikortille]] voidaan tehdä ainakin kolmella eri tavalla: [[suora siirräntä]] (engl. ''{{k-en|Programmed I/O''}}), [[keskeytysohjattu siirräntä]] (engl. ''{{k-en|interrupt-driven I/O''}}) tai oikosiirto.
Suorassa siirrännässä ääninäytteet kirjoitetaan ohjelmakoodilla äänilaitteen rekisteriin tietyin väliajoin tai kun tietty arvo saadaan luettua rekisteristä. Keskeytysohjatussa siirrännässä saadaan keskeytys kun uusi ääninäyte voidaan kirjoittaa äänilaitteen rekisteriin, mikä helpottaa ja tehostaa ohjelmaa koska ei tarvita erillistä ajastinta tai muuta tarkkaa ajastamista. Oikosiirrännässä ohjelma signaloi äänilaitteelle että se voi hakea tietysti paikasta fyysistä muistia kaikki ääninäytteet. Ohjelmiston ei tarvitse kirjoittaa näytteitä äänilaitteen rekistereihin mikä tavallisesti nopeuttaa järjestelmän toimintaa.