Oikosiirto (Direct Memory Access)

Oikosiirto, eli Direct Memory Access (DMA) on käytännössä siru, joka tulee löytyä laitteesta, jolla halutaan lähettää tai vastaanottaa tietoja nopeasti ja tehokkaasti. Tämä artikkeli perehtyy tähän käsitteeseen eri kantilta, jotta sen tärkeys arkipäiväisessä elämässämme kävisi selväksi.

Mitä oikosiirto ja sen käyttö tarkoittaa?

Oikosiirto voidaan kuvata suorana tiedonsaantina (DMA), sillä se on menetelmä, jonka avulla tietoa syöttävä ja/tai lähettävä laite (Input/Output) voi lähettää tai vastaanottaa tietoja suoraan päämuistiin tai ulos päämuistista ohittaen CPU:n. Ohittamalla CPU voidaan nopeuttaa muistitoimintoja.

Koko tätä prosessia hallitsee siru, joka tunnetaan nimellä DMA-ohjain (DMAC).

Techopedia selittää oikosiirron ja sen käytön

Määritettyä osaa muistista käytetään tietojen lähettämiseen suoraan oheislaitteesta emolevylle ilman mikroprosessoria. Tällainen oikosiirto on prosessi, joka ei häiritse lainkaan tietokoneen yleistä toimintaa.

Ennen vanhaa tietokoneissa oli neljä DMA-kanavaa, jotka oli numeroitu 0, 1, 2 ja 3. Kun 16-bittisen teollisuusstandardin arkkitehtuurin (ISA) laajennusväylä otettiin käyttöön, siihen lisättiin myös kanavat 5, 6 ja 7.

ISA oli tietokoneväylästandardi, joka luotiin nimenomaan IBM-yhteensopiville tietokoneille. Tämän ansiosta laite voi aloittaa tapahtumia (väylän masterointi) aikaisempaa nopeammin. ISA DMA -ohjaimessa on 8 DMA-kanavaa, joista jokainen liittyy 16-bittiseen osoite- ja määrärekistereihin.

ISA on sittemmin korvattu kiihdytetyillä grafiikkaporteilla (AGP) ja oheiskomponenttien yhteenliittämiskorteilla (PCI), jotka ovat paljon nopeampia. Kukin DMA, eli oikosiirto siirtää noin 2 Mt dataa sekunnissa.

Tietokoneen järjestelmäresurssityökaluja käytetään viestintään laitteiston ja ohjelmiston välillä. Järjestelmäresurssien neljä eri tyyppiä ovat:

  • I/O-osoitteet.
  • Muistin osoitteet.
  • Keskeytyspyyntönumerot (IRQ).
  • Direct Memory Access (DMA) -kanavat.

Mihin oikosiirtoa käytetään?

Oikosiirto, eli DMA-kanavia käytetään ennen kaikkea tiedon välittämiseen oheislaitteen ja järjestelmämuistin välillä. Kaikki neljä järjestelmäresurssia ovat riippuvaisia tietyistä väylän linjoista. Joitakin väylän linjoja käytetään IRQ:ille, toisia osoitteille (I/O-osoitteita ja muistiosoite) ja toisia DMA-kanaville.

Direct Memory Access -kanavan avulla laite voi siirtää tietoja altistamatta prosessoria ylikuormitukselle. Ilman DMA-kanavia CPU kopioi kaikki tiedot I/O-laitteesta oheisväylän avulla. Oheisväylän käyttö vie CPU:n luku-/kirjoitusprosessin aikana eikä salli muuta työtä ennen kuin toiminto on valmis.

Oikosiirto CPU voi käsitellä muita tehtäviä tiedonsiirron aikana. Tietojen siirron aloittaa ensin CPU. DMAC voi sitten siirtää datalohkon muistiin ja ulos muistista kolmella tavalla.

  • Pursketilassa järjestelmäväylä vapautetaan vasta, kun tiedonsiirto on valmis.
  • Jaksovarastotilassa Direct Memory Access -kanavan ja I/O-laitteen välisen tiedonsiirron aikana järjestelmäväylä luovutaan muutaman kellojakson ajaksi, jotta CPU voi suorittaa muita tehtäviä.
  • Kun tiedonsiirto on valmis, CPU vastaanottaa keskeytyspyynnön oikosiirto -ohjaimelta. Läpinäkyvässä tilassa DMAC voi ottaa järjestelmäväylän hallintaan vain silloin, kun prosessori ei sitä vaadi.

Direct Memory Access -ohjaimen käyttö saattaa kuitenkin aiheuttaa välimuistin koherenssiongelmia. Oikosiirto-ohjaimen käyttämiin RAM-muistiin tallennettuja tietoja ei ehkä päivitetä oikeilla välimuistitiedoilla, jos suoritin käyttää ulkoista muistia.

Ratkaisuja tällaiseen tilanteeseen ovat välimuistirivien puhdistus tai tyhjennys ennen lähtevien DMA-siirtojen aloittamista tai välimuistin mitätöiminen saapuville DMA-siirroille, kun ulkoiset kirjoitukset lähetetään välimuistiohjaimelle.

Oikosiirto – Miten input/output liittyy siihen?

Input/output (I/O) kuvaa tietojenkäsittelyssä ennen kaikkea viestintäprosessia tietokoneen ja ulkomaailman välillä.

Kaikkein alhaisimmalla tasolla toimittaessa tietokoneelle asennetaan tietojärjestelmä (IS), kuten ohjelmistosovellus, ja sen käyttäjät ulkomaailmassa käyttävät tietokonetta saadakseen ratkaisuja erilaisiin ongelmiin.

Syöte viittaa sitten tietokoneelle lähetettyihin signaaleihin tai ohjeisiin. Lähtö (output) tarkoittaa tietenkin tietokoneesta lähteviä signaaleja. Tämä termi tunnetaan myös I/O-operaatioina, mikä viittaa tulo- ja lähtötoimintoihin.

Syöttö- ja lähtötoimintoja suoritetaan tietokoneiden kontekstissa kaikkialla, minkä vuoksi ne ovat myös osa sitä, miten oikosiirto toimii. Yksinkertaisia esimerkkejä yleisistä I/O-laitteista ovat hiiri, näppäimistö, näyttö ja tulostin.

Tässä on myös kuvattu ne tärkeimmät kontekstit I/O-termille:

  1. I/O-liitännät: Nämä tarjoavat tavan olla vuorovaikutuksessa tietokonelaitteiston kanssa. Jokaisen laitteen käyttöliittymä pystyy koodaamaan ja de-koodaamaan I/O-signaalit ymmärrettävässä muodossa sekä tulo- että lähtölaitteille.
  2. Ohjelmoitava sovellus-I/O: Monet sovellukset on integroitu käyttöjärjestelmiin (OS), jotka tarjoavat ajonaikaiset tulo- ja lähtötiedot samanaikaisesti. Parhaita esimerkkejä ovat C-, C++- ja Java-ohjelmointisovellukset, joissa on sisäänrakennetut kirjastot, joita käytetään I/O-toimintoihin. Ohjelmat on kirjoitettu siten, että yhtä tiedostojen kirjastoa käytetään syötteenä, kun tulos näytetään käyttäjälle. Ohjelmoinnissa tämä käsite tunnetaan nimellä tiedostojen käsittely.
  3. Muistin osoitus I/O: Tietokoneen muisti sisältää lohkoja eri sovellusten ja prosessien tallentamisen käsittelyä varten. Tähän tarkoitukseen käytetään monia oikosiirto mekanismeja; jokainen käyttää I/O-toimintoja jossain kontekstissa. Muistin osoitus muistin I/O-toiminnoilla on indeksoitu osoite ja välitön osoitus.

Mitä tarkoittaa epäsuora oikosiirto (RDMA)?

Remote Direct Memory Access (RDMA), eli epäsuora oikosiirto, on termi, jota käytetään tietotekniikan alalla kuvaamaan järjestelmiä, jotka mahdollistavat sen, että eri verkkoon liitetyt tietokoneet voivat lähettää toisilleen tietoja vaikuttamatta kummankaan koneen käyttöjärjestelmään.

IT-ammattilaiset puhuvat RDMA:sta aina, kun he puhuvat nollakopioimisesta verkosta, jossa tiedot luetaan suoraan alkuperäisen tietokoneen päämuistista ja lisätään sitten toisen verkkoon yhdistetyn koneen päämuistiin. Tämän tyyppisiä prosesseja käytetään parantamaan suorituskykyä ja ylläpitämään tehokkaampaa tiedonsiirtoa. Joskus ne voivat nopeuttaa tiedonsiirtoa tai mahdollistaa paremman suorituskyvyn.

Laitevalmistajat saattavat puhua RDMA:sta, eli epäsuora oikosiirto, yhtenä komponenttien ominaisuutena, joka mahdollistaa tällaisen tiedonsiirron. Asiantuntijat saattavat puhua myös siitä, kuinka RDMA:n kaltaiset strategiat voivat auttaa tekemään lähiverkoista tai muunlaisista pienistä verkoista entistä nopeampia ja tehokkaampia.

Jotkut RDMA:n haitat voivat sisältää epäjohdonmukaisen tiedon päivittämisen kyseisten tietokoneiden välillä. Ilman erilaisia kiinnityskäytäntöä muistijärjestelmien elementit voivat kuitenkin vioittua RDMA-asetuksissa. Nykypäivän verkkotekniikoiden ja niiden käyttäjien on siksi harkittava useita erilaisia vaihtoehtoja yhä monimutkaisempien tiedonsiirtojen reitittämiseen niin, etteivät siirrettävä data tai siirroissa mukana olevat laitteet vioitu.

Samankaltaiset termit

Margaret Rouse

Margaret Rouse on palkittu teknologiatoimittaja ja opettaja, joka tunnetaan hänen kyvyistään selittää vaikeitakin teknologisia konsepteja aiheesta vähemmän tietävälle finanssialan yleisölle. Viimeisen 20 vuoden ajan hänen selityksensä ovat ilmestyneet TechTargetin nettisivuille, minkä lisäksi häntä ovat siteeranneet asiantuntijana New York Times, Time Magazine, USA Today, ZDNet, PC Magazine ja Discovery Magazine. Margaretin mielestä mikään ei ole hauskempaa kuin opettaa IT-alan ja finanssialan ammattilaisille, kuinka toisen alan hyvin spesifillä kielellä puhutaan. Jos sinulla on ideoita selitettävistä termeistä tai parannuksista aikaisempiin selityksiin, lähetä sähköpostia Margaretille tai ota yhteyttä häneen LinkedInissä tai Twitterissä.