Rinnakkaislaskentajärjestelmät ovat fyysisiä tietokonejärjestelmiä sekä ohjelmistojärjestelmiä, jotka toteuttavat tavalla tai toisella rinnakkaista tietojenkäsittelyä useissa laskentasolmuissa. [yksi]
Esimerkiksi, jos haluat nopeasti lajitella taulukon kahden prosessorin koneessa, voit jakaa taulukon kahtia ja lajitella kumpikin puolikas erillisellä prosessorilla. Kunkin puolikkaan lajittelu voi kestää eri ajan, joten synkronointi on tarpeen .
Laskelmien rinnakkaisuuden ajatus perustuu siihen, että useimmat tehtävät voidaan jakaa joukoksi pienempiä tehtäviä, jotka voidaan ratkaista samanaikaisesti. Yleensä rinnakkaislaskenta vaatii toimintojen koordinointia. Rinnakkaislaskentaa on useita muotoja: bittitason rinnakkaisuus, käskytason rinnakkaisuus, datan rinnakkaisuus ja tehtävien rinnakkaisuus. Rinnakkaislaskentaa on käytetty useiden vuosien ajan pääasiassa korkean suorituskyvyn laskennassa, mutta viime aikoina kiinnostus on lisääntynyt, koska prosessorien kellotaajuuden lisäämiselle on asetettu fyysisiä rajoituksia. Rinnakkaislaskennasta on tullut hallitseva paradigma tietokonearkkitehtuurissa , enimmäkseen moniytimisissä prosessoreissa . [2]
Ohjelmien kirjoittaminen rinnakkaisiin järjestelmiin on vaikeampaa kuin peräkkäisissä järjestelmissä [3] , koska resurssikilpailu edustaa uutta luokkaa mahdollisia ohjelmistovirheitä ( bugit ), joista kilpailutilanne on yleisin. Prosessien välinen tiedonsiirto ja synkronointi muodostavat suuren esteen korkean suorituskyvyn saavuttamiselle rinnakkaisissa järjestelmissä. Viime vuosina on alettu pohtia myös kysymystä rinnakkaisten tietokoneiden virrankulutuksesta. [4] Rinnakkaisemisen seurauksena tapahtuvan ohjelman nopeuden kasvun luonne selittyy Amdahlin ja Gustavsonin laeilla .
Tämä rinnakkaisuuden muoto perustuu konesanan koon kasvattamiseen . Koneen sanan koon suurentaminen vähentää toimintojen määrää, jotka prosessori tarvitsee toimiakseen muuttujilla, joiden koko on suurempi kuin konesanan koko. Esimerkiksi: 8-bittisessä prosessorissa sinun on lisättävä kaksi 16-bittistä kokonaislukua. Tätä varten sinun on ensin lisättävä numeroiden alemmat 8 bittiä, sitten lisättävä korkeammat 8 bittiä ja lisättävä siirtolipun arvo niiden lisäyksen tulokseen . Yhteensä 3 ohjetta. 16-bittisellä prosessorilla voit suorittaa tämän toiminnon yhdellä käskyllä.
Historiallisesti 4-bittiset mikroprosessorit korvattiin 8-bittisillä, sitten ilmestyivät 16-bittiset ja 32-bittiset. 32-bittiset prosessorit ovat pitkään olleet vakiona jokapäiväisessä tietojenkäsittelyssä. x86-64 -tekniikan myötä 64-bittisiä prosessoreita alettiin käyttää näihin tarkoituksiin.
Tietokoneohjelma on pohjimmiltaan prosessorin suorittama käskyvirta. Mutta voit muuttaa näiden ohjeiden järjestystä, jakaa ne ryhmiin, jotka suoritetaan rinnakkain muuttamatta koko ohjelman tulosta. Tämä tekniikka tunnetaan käskytason rinnakkaisuutena. Tietokonearkkitehtuurin ohjetason rinnakkaisuuden kehittäminen tapahtui 1980-luvun puolivälistä 1990-luvun puoliväliin.
Nykyaikaisissa prosessoreissa on monivaiheinen käskyputki . Jokainen liukuhihnan vaihe vastaa tiettyä toimintoa, jonka prosessori suorittaa tässä ohjeessa tässä vaiheessa. Prosessorilla, jossa on N liukuhihnavaihetta, voi samanaikaisesti olla jopa N erilaista käskyä eri täydellisyyden tasoilla. Klassinen esimerkki liukuhihnaprosessorista on RISC-prosessori , jossa on 5 vaihetta: käskyn nouto muistista (IF), käskyn dekoodaus (ID), komennon suorittaminen (EX), muistin käyttö (MEM), tulosten kirjoittaminen rekistereihin (WB). ) . Pentium 4 -prosessorissa on 31 vaihetta [5] .
Joillakin prosessoreilla on liukuputkien käytön lisäksi mahdollisuus suorittaa useita käskyjä samanaikaisesti, mikä tarjoaa lisää rinnakkaisuutta käskytasolla. Tämä menetelmä on mahdollista toteuttaa käyttämällä superskalaaria , jolloin käskyt voidaan ryhmitellä rinnakkain suoritettavaksi (jos niillä ei ole datariippuvuuksia (tietoriippuvuuksia)). Eksplisiittistä käskytason rinnakkaisuutta käyttävät toteutukset ovat myös mahdollisia: VLIW ja EPIC .
Tietojen rinnakkaisuuteen perustuvan lähestymistavan pääideana on, että yksi operaatio suoritetaan välittömästi kaikille tietotaulukon elementeille. Tällaisen matriisin eri fragmentteja käsitellään vektoriprosessorilla tai rinnakkaiskoneen eri prosessoreilla. Ohjelma vastaa tietojen jakamisesta prosessorien välillä. Vektorisointi tai rinnastaminen suoritetaan tässä tapauksessa useimmiten jo käännösvaiheessa - ohjelman lähdekoodin kääntäminen konekäskyiksi. Ohjelmoijan rooli tässä tapauksessa yleensä rajoittuu kääntäjän vektori- tai rinnakkaisoptimointiasetusten asettamiseen , rinnakkaiskäännösohjeisiin ja erikoiskielien käyttöön rinnakkaislaskennassa.
Tehtävien rinnakkaisuuteen perustuva ohjelmointityyli tarkoittaa, että laskentatehtävä on jaettu useisiin suhteellisen itsenäisiin alitehtäviin ja jokainen prosessori ladataan omalla alitehtävällään.
Hajautettu käyttöjärjestelmä kohdistaa dynaamisesti ja automaattisesti työtä järjestelmän eri koneille prosessointia varten, pakottaa joukon verkkoon kytkettyjä koneita käsittelemään tietoja rinnakkain. Hajautetun käyttöjärjestelmän käyttäjällä ei yleensä ole tietoa koneesta, jolla hänen työnsä suoritetaan. [6]
Hajautettu käyttöjärjestelmä on olemassa yhtenä käyttöjärjestelmänä koko tietokonejärjestelmässä. Jokainen verkossa oleva tietokone, jossa on hajautettu käyttöjärjestelmä, suorittaa osan tämän maailmanlaajuisen käyttöjärjestelmän toiminnoista. Hajautettu käyttöjärjestelmä yhdistää kaikki verkossa olevat tietokoneet siinä mielessä, että ne toimivat tiiviissä yhteistyössä toistensa kanssa käyttääkseen tehokkaasti kaikkia tietokoneverkon resursseja.
Työ rinnakkaisten laskentajärjestelmien luomiseksi Yhdysvalloissa ja Neuvostoliitossa on ollut intensiivistä 1960 - luvulta lähtien . Rinnakkaistietojenkäsittelytekniikan kehittäminen ja rinnakkaisten elektronisten laskentajärjestelmien luominen Yhdysvalloissa toteutettiin Yhdysvaltain puolustusalan edistyneiden tutkimusprojektien viraston toimesta yritysten ja yliopistojen tutkimusosastoilla: [7]
Työtä valvoivat ARPA Computing and Information Processing Bureau Pentagonissa Virginiassa ja Yhdysvaltain ilmavoimien tutkimuskeskus Roomassa , New Yorkissa .
Neuvostoliitossa vastaavanlaista työtä suorittivat valtion radioelektroniikan komitean (muuttui myöhemmin radioteollisuusministeriöksi ) , puolustusministeriön ja Neuvostoliiton tiedeakatemian laitokset : [8]
1970-luvun alussa MIT:n tekoälylaboratoriossa Marvin Minsky ja Seymour Papert alkoivat kehittää teoriaa, jota he kutsuivat " mielen yhteiskunnaksi ", joka piti biologisia aivoja massiivisesti rinnakkaisena laskentakoneena . Vuonna 1986 Minsky julkaisi suositun kirjan The Society of Mind, jossa hän väittää, että "aivojen mieli muodostuu monista pienistä toimijoista, joilla ei ole omaa mieltä". [9] Teoriassa on yritetty selittää, kuinka se, mitä kutsumme älykkyydeksi, voi olla yksinkertaisten agenteiksi kutsuttujen osien vuorovaikutuksen tuote, jotka itse ovat epäälykkäitä. Minsky väitti, että suurin ajatusten lähde "mielen yhteiskunnan" teoriasta oli hänen työnsä yrittäessään rakentaa konetta, joka kokoaisi vauvanpaloja robottikäden, videokameran ja tietokoneen avulla. [10] Society of Mind -teoriakirja kirjoitettiin suurelle yleisölle, toisin kuin useimmat Minskyn aiemmin julkaistut teokset.
Samanlaisia malleja (jotka myös pitävät biologisia aivoja massiivisesti rinnakkaisena laskentakoneena, ts. pitävät aivoja koostuvan monista itsenäisistä tai puoliriippumattomista aineista) kuvataan myös:
![]() | |
---|---|
Bibliografisissa luetteloissa |