Yhteistä muistia käyttävä tietokone



Kun ongelma ratkaistaan rinnakkain, täytyy suoritinytimien useimmiten jakaa tietoja eli kommunikoida keskenään. Yksi kommunikointitapa on yhteisen muistin käyttäminen.




Yhteisen muistin tietokoneen perusominaisuus on, että kaikki suoritinytimet on liitetty samaan muistiin.

Tämä saadaan aikaan käyttämällä muistiväylää, joka vastaanottaa tietopyyntöjä useista lähteistä (edellä olevan kuvan neljä erillistä suoritinydintä) ja hakee tiedot yhdestä muistista. Englanninkielinen väylää kuvaava termi bus on peräisin latinankielisestä termistä "omnibus", joka tarkoittaa "kaikille". Tällä viitataan siihen, että kyseessä on useiden suoritinytimien jakama yksittäinen resurssi.

Yhteinen muisti on nykyaikaisen matkapuhelimen, kannettavan tietokoneen ja pöytätietokoneen perusarkkitehtuuri. Jos siis ostat esimerkiksi tietokoneen, jossa on neliytiminen suoritin ja neljä gigatavua RAM-muistia, jokainen neljästä suoritinytimestä on liitetty samaan RAM-muistiin. Ytimien on toimittava yhteen ja käytettävä muistia tasapuolisesti.

Hyvä vertailukohta on neljän toimistotyöntekijän joukko (suoritinytimet), joka jakaa yhden toimiston (tietokoneen) ja yhden kirjoitustaulun (muistin). Jokaisella työntekijällä on omat kynät ja taulusieni, mutta he eivät pysty puhumaan toistensa kanssa. He voivat sen sijaan kommunikoida vain kirjoittamalla kirjoitustaululle ja lukemalla sitä. Kun Alice, Bob, Joe ja Lucy laskevat lukuja yhteen, kukin heistä voi lukea oman osansa luvuista kirjoitustaululta ja laskea osittaiset tulokset. Kun laskenta on valmis, kaikki neljä voivat kirjoittaa osittaiset tuloksensa kirjoitustauluun. Alice voi sitten lukea osittaiset tulokset ja suorittaa lopullisen yhteenlaskun.



Tämä kirjoitustauluvertaus kuvaa jo joitakin yhteisen muistin keskeisiä haasteita:

  1. Muistikapasiteetti: Toimistoon mahtuvan kirjoitustaulun koko on rajoitettu. Samalla tavalla myös yhteen yhteistä muistia käyttävään tietokoneeseen voidaan laittaa vain rajallinen määrä muistia.

  2. Muistin käyttönopeus:: Kuvittele, että samassa toimistossa on kymmenen henkilöä. Kaikki voivat periaatteessa lukea kirjoitustaulua ja kirjoittaa siihen, mutta heistä vain noin neljä mahtuu tekemään sitä samanaikaisesti olematta toistensa tiellä. Toimistoon voidaan lisätä enemmän ja enemmän työntekijöitä, mutta noin neljän työntekijän jälkeen tuottavuus ei enää lisäänny, sillä lisätyöntekijöillä kuluu yhä enemmän aikaa jaetulle kirjoitustaululle jonottamiseen. Pahimmillaan lisätyöntekijät ovat häiriöksi, ja tuottavuus voi jopa heikentyä, jos työntekijöitä on liikaa.

  3. Kilpailutilanteet (race conditions): Kaikki työntekijät voivat käsitellä kaikkia tietoja, joten he voivat myös vahingossa poistaa tai muuttaa muiden työntekijöiden käyttämiä tietoja. Kuvittele, että kirjoitustaulu on täynnä numeroita. Jotta siihen voidaan kirjoittaa, muita kirjoituksia on poistettava. Tämän vuoksi on tärkeää varmistaa, että tietyn osan poistaminen ei häiritse muiden työtä.



Rajoitukset

Muistin käyttönopeus on todellinen ongelma yhteistä muistia käyttävissä laitteissa. Jos tarkastelet yllä olevaa suoritinkaaviota, huomaat, että kaikki suoritinytimet jakavat saman muistiväylän. Väylän ja muistin välisestä yhteydestä muodostuu lopulta pullonkaula, eikä suoritinytimien lisäämisestä ole enää hyötyä. Supertietokoneilla suoritettavat ohjelmat lukevat ja kirjoittavat yleens�� suuria tietomääriä. Tämän vuoksi muistin käyttönopeus on usein laskentanopeutta rajoittava tekijä, ei suoritinytimien suorituskyky liukulukulaskennassa.

Ongelmien ratkaisemiseen on useita keinoja, mutta esimerkki ruuhkaisesta toimistosta havainnollistaa selkeästi niitä perushaasteita, joita kohdataan, jos jaettua muisti halutaan käyttää useiden satojen, tuhansien tai jopa satojen tuhansien suoritinytimien kanssa.



Edut

Yhteisen muistin käyttämiseen sisältyy luonnollisesti myös etuja. Vaikka kilpailutilanteet on otettava huomioon, rinnakkaisohjelmointi on suhteellisen yksinkertaista yhteisen muistin kanssa. Niin kauan kuin muistiväylä ei muodosta pullonkaulaa, suorituskyky on yleensä hyvä, sillä kommunikoinnista ei aiheudu ylimääräistä rasitetta.


Mukautettu "Supercomputing"-verkkokurssin materiaalista (https://www.futurelearn.com/courses/supercomputing/) Edinburgh Supercomputing Center (EPCC), Creative Commons SA-BY -lisenssi