Moniprosessorikoneet ==================== Perinteinen Flynnin luokitus, kuva ja pieni selitys löytyy luentomonisteessa... Nykyään on yleistymässä monen prosessorin ja yhden muistin koneet. Esim. jalavan Intel Xeon Esim. charran AMD Opteron Esim. Playstation 3:n IBM Cell. Positiivista: - prosessit voidaan ajaa myös yhtä aikaa - ei vain vuorotellen. - Erityisesti säikeet voidaan ajaa yhtä aikaa, eli rinnakkaistuvan tehtävän suoritusaika voi lyhentyä dramaattisesti verrattuna suoritukseen yhdellä prosessorilla. Edellyttää KLT-toteutusta ja sitä, että sovellukset käyttävät säikeitä johdonmukaisesti. Haasteellista: - vuorontaminen, kun voi olla yhtä aikaa monta prosessia/säiettä Running-tilassa eikä vain yksi. - muistin käyttö (yhteinen väylä, yksi keskusmuisti vaikka prosessoreilla on omat välimuistit ja rekisterit, ...) - synkronointi (miten saadaan käyttöjärjestelmän toimenpiteet atomisiksi, kun keskeytyskäsittely on prosessorikohtainen ja samaan aikaan voi toinen prosessori jatkaa käyttäjätilassa) - ja varmaan paljon muutakin ... Oleellista huomata: - käyttäjän näkökulmasta ei mitään uusia ongelmia moniajossa. Pari sanaa tietyistä Flynnin luokituksen luokista ------------------------------------------------- Lyhenteet SIMD, MIMD, jne. on avattu luentomonisteessa. Alla on muutaman sanan laveampi kuvaus joistakin yksittäisistä moniprosessoritoteutuksista: SMP ^^^ Tyypillinen prosessointimuoto on SMP, symmetrinen moniprosessointi, jossa tosiaan rinnakkaiset prosessorit ovat kaikin tavoin tasavertaisia, käyttöjärjestelmän ja käyttäjäprosessien koodia ajetaan niissä molemmissa. Master/Slave ^^^^^^^^^^^^ Toinen prosessointimuoto on Master/Slave -tyyppinen, jossa pääprosessori voi pyytää palveluita vaikkapa liukulukulaskentaan erikoistuneilta apuprosessoreilta. Käyttöjärjestelmä ja käyttäjien prosessit toimivat pääprosessorissa (tai useammassa, kuten SMP:ssäkin) ja lisäksi apuprosessoreille voi jaella laskentatehtäviä eli niiden käskykannan mukaista koodia rinnakkain suoritettaviksi; kommunikointi tapahtuu edelleen yhden keskusmuistin ja väylän avulla; synkronointi pää- ja apuprosessorien kesken on hallittava jotenkin. Klusterit ^^^^^^^^^ Lisäksi on pitkään ollut ns. klustereita: monta prosessoria, joilla jokaisella on oma muisti; viestinvälitys tapahtuu lähiverkon tai internetin yli. Esimerkiksi SETI-at-home ym. jossa voit liittää oman koneesi solmuksi laskentaverkostoon tai Googlen hakupalvelun hajautettu toteutus, jossa on erittäin monta konetta klusterissa.